01基本介绍
02编码实现
通过Windows API中的SetHandleInformation、CreatePipe、CreateProcess以及OpenProcess等函数实现任意命令执行并在黑屏上显示命令执行后的结果,可以在内网渗透阶段规避安全防护设备的拦截和告警,因此这种技术对于红队活动是非常有利的。
3.1 创建管道
使用CreatePipe函数创建一个管道,我们知道在Windows系统编程中,管道是一种重要的进程间IPC通信机制,允许数据在进程之间单向或双向流动。而CreatePipe函数是Windows API的一部分,创建一个匿名管道,该管道具有读端和写端。
[DllImport("kernel32.dll")]
private static extern bool CreatePipe(out IntPtr hReadPipe, out IntPtr hWritePipe, ref UnmanagedExecute.SECURITY_ATTRIBUTES lpPipeAttributes, uint nSize);
UnmanagedExecute.CreatePipe(out hStdOutRead, out hStdOutWrite, ref saHandles, 0U);
由于管道是匿名的,因此只能用于由同一父进程创建的进程之间的通信。
3.2 进程初始化
随后,使用DllImport属性从kernel32.dll库中导入SetHandleInformation函数。.NET调用SetHandleInf