通过直接调用Windows系统kernel32.dll中的CreateProcess函数实现任意命令执行并在黑屏上显示命令执行后的结果,可以在内网渗透阶段规避安全防护设备的拦截和告警,因此这种技术对于红队活动是非常有利的。
0x01 为什么要规避cmd.exe
cmd.exe作为Windows系统的传统命令行解释器,其行为模式广为人知,因此也成为了众多安全防护机制的重点监控对象,因此红队或者黑客在对抗时调用Windows系统kernel32.dll中的CreateProcess和CreatePipe函数实现任意系统命令的执行,这样做的好处是避免直接调用cmd.exe,能够降低被检测到的几率。
0x02 编码实现
可以利用Windows API中的SetHandleInformation、CreatePipe、CreateProcess以及OpenProcess等函数协同创建此功能。
2.1 安全结构体
首先,创建一个安全结构体:SECURITY_ATTRIBU