写在最前
如果你是信息安全爱好者,如果你想考一些证书来提升自己的能力,那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里:
https://discord.gg/9XvvuFq9Wb
我拥有 OSCP,OSEP,OSWE,OSED,OSCE3,CRTO,CRTP,CRTE,PNPT,eCPPTv2,eCPTXv2,KLCP,eJPT 证书。
所以,我会提供任一证书备考过程中尽可能多的帮助,并分享学习和实践过程中的资源和心得,大家一起进步,一起 NB~
背景
红队/渗透测试离不开命令行,在命令行执行命令的时候,执行的命令以及命令的参数,会被系统日志记录。那么我们的真实目的,就会被一览无余。
为了进一步隐藏我们的真实目的,混淆视听,我们可以使用 Command Line Spoofing 这个技巧,修改进程的 PEB,来达到隐藏真实命令的效果。
这篇文章,我们就来看一下 Command Line Spoofing 是如何实现的。
Command Line Spoofing
概述
Command Line Spoofing 是通过修改进程 PEB(Process Environment Block) 中的 RTL_USER_PROCESS_PARAMETERS 结构来达成的。原理就是这样,我们实践一下,看一下具体如何实现。
RTL_USER_PROCESS_PARAMETERS 结构
在命令行用 notepad 随便打开一个文件。
WinDBG hook 进程。
查看一下 PEB。
dt !_PEB
在 offset 0x20 的地方可以看到 RTL_USER_PROCESS_PARAMETERS 结构。
看一下官方的结构原型。
typedef struct _RTL_USER_PROCESS_PARAMETERS {
BYTE Reserved1[16];
PVOID Reserved2[10];
UNICODE_STRING ImagePathName;
UNICODE_STRING CommandLine; // 重点在这里
} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
第四个参数,CommandLine 是我们关注的重点。
我们看一下当前 _RTL_USER_PROCESS_PARAMETERS 的数据。
dt _RTL_USER_PROCESS_PARAMETERS
CommandLine 参数在 0x70 的位置上。
查看一下 _RTL_USER_PROCESS_PARAMETERS 结构在内存中的地址。
dt _peb @$peb
查看一下内存中的内容。可以直接点击 ProcessParameters。
dx -r1 ((wintypes!_RTL_USER_PROCESS_PARAMETERS *)0x16c2c0f2b60)