永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。
甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,使全世界大范围内遭受了该勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。
不过在该病毒出来不久就被微软通过打补丁修复。
SMB(全称是Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;
SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口。
首先客户端发送一个SMB negport 请求数据报,并列出它所支持的所有SMB的协议版本。
服务器收到请求消息后响应请求,并列出希望使用的SMB协议版本。如果没有可以使用的协议版本则返回0XFFFFH,结束通信。
协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送SessetupX请求数据包实现的。
客户端发送一对用户名和密码或一个简单密码到服务器,然后通过服务器发送一个SessetupX应答数据包来允许或拒绝本次连接。
当客户端和服务器完成了磋商和认证之后,它会发送一个Tcon或TconX SMB数据报并列出它想访问的网络资源的名称,之后会发送一个TconX应答数据报以表示此次连接是否接收或拒绝。
连接到相应资源后,SMB客户端就能够通过open SMB打开一个文件,通过read SMB读取文件,通过write SMB写入文件,通过close SMB关闭文件。
漏洞出现在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 Eternalblue SMB 漏洞分析 - 360 核心安全技术博客
永恒之蓝是在 Windows 的SMB服务处理SMB v1请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码。
通过永恒之蓝漏洞会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
目标主机 -> Win7:192.168.11.136
攻击机-> Kali:192.168.11.130
nmap --script smb-vuln* 目标主机IP
Meterpreter是Metasploit 的一个扩展模块,可以调用 Metasploit 的一些功能,对目标系统进行更深入的渗透如获取屏幕、上传/下载文件、创建持久后门等
查看靶机进程:ps
监控靶机桌面:run vnc
截取靶机屏幕:screenshot
获取靶机shell:shell
在shell中可正常执行命令操作:添加/删除用户,更改密码,权限管理,写文件(留后门)。。。
清除日志(清痕迹):clearev
[13]NSA Eternalblue SMB 漏洞分析 - 360 核心安全技术博客:https://blogs.360.cn/post/nsa-eternalblue-smb.html#toc-772
[14]MS17-010: EternalBlue’s Buffer Overflow in SRV Driver (trendmicro.com):https://www.trendmicro.com/en_us/research/17/f/ms17-010-eternalblue.html