LongWayHomie/MalDev
GitHub: LongWayHomie/MalDev
MalDevAcademy课程的Windows Shellcode加载器学习合集,涵盖从基础注入到高级syscall规避的21个递进式项目。
Stars: 12 | Forks: 2
# MalDev — Shellcode 加载器集合
## 概述
这是一个个人构建的 shellcode 加载器集合,作为 [MalDevAcademy](https://maldevacademy.com/) 课程的学习项目。每个项目都实现了注入技术、加密和规避措施的特定组合。
**测试环境:** 所有加载器均在 Windows 10/11 上针对 Windows Defender 进行了测试,使用的是 Metasploit Framework shellcode。结果可能因不同的 AV/EDR 配置而异。
**语言分类:** 大多数加载器是用 **C** 编写的,只有一个例外是用 **C#** 编写的。有几个项目使用 **MASM** 来实现 syscall 存根。
## 学习进程
加载器大致按复杂度递增的顺序排列。从基础的 CRT/远程注入开始,逐步进阶到 APC 技术、加密、沙箱规避,最后是完全避免用户模式钩子的基于 syscall 的方法。
## 加载器参考表
| 编号 | 加载器名称 | 语言 | 加密 | 分阶段 | 规避措施 | 描述 |
|:--:|:---|:---:|:---:|:---:|:---|:---|
| 1 | ProcInjShellcodeInternetAPI | C | 无 | ✅ | • 远程注入
• CRT | 通过 CRT 进行的远程进程注入,Payload 从远程服务器下载 | | 2 | ProcInjShellcodeNtQuerySystemInfo | C | 无 | ✅ | • IPv6 混淆
• 直接系统调用
• 进程枚举 | 通过 CRT 进行的远程进程注入,使用 IPv6 混淆的 Payload;使用 `NtQuerySystemInformation` syscall 进行进程枚举 | | 3 | ThreadHijackIPv6Obf | C | 无 | ❌ | • 线程劫持
• IPv6 混淆 | 使用 IPv6 混淆 Payload 的远程进程线程劫持 | | 4 | RC4APCInjection | C | RC4 | ❌ | • APC 注入
• 可警告线程 | 通过可警告的牺牲线程进行 APC 注入,Shellcode 使用 RC4 加密 | | 5 | EarlyBirdAPCInjection | C | 无 | ✅ | • Early Bird 技术
• 调试状态启动 | Early Bird APC 注入,以调试状态生成目标进程;Payload 从暂存服务器获取 | | 6 | RC4EarlyBirdAPCInjectionStaged | C | RC4 | ✅ | • Early Bird 技术
• 调试状态启动 | Early Bird APC 注入,使用从 Web 服务器获取的 RC4 加密分阶段 Shellcode | | 7 | AESCRTSleep | C | AES | ❌ | • CRT 注入
• 随机休眠时间
• 远程注入 | CRT 注入,Payload 使用 AES 加密;在执行前休眠随机时间以规避沙箱超时 | | 8 | XORCRTInj | C | XOR | ❌ | • CRT 注入 | CRT 注入,Payload 使用 XOR 加密;包含单独的加密工具 | | 9 | NtAPIXOR | C# | XOR | ❌ | • Native API 使用
• 远程注入 | 使用 Native API 调用 (C#) 进行的远程进程注入,Payload 使用 XOR 加密 | | 10 | XORProcessHypnosis | C | XOR | ❌ | • Process Hypnosis
• Application Setup Strings
• 远程注入
• API 模拟
• 调试器检查
• 休眠检查 | Process Hypnosis 技术,使用 XOR 加密的 Payload 和沙箱规避检查 | | 11 | ProcessHypnosisStaged | C | 无 | ✅ | • Process Hypnosis | Process Hypnosis 技术与分阶段 Payload —— 最小化规避,基线实现 | | 12 | XORProcessHypnosisStaged | C | XOR | ✅ | • Process Hypnosis
• 分阶段密钥
• Application Setup Strings
• 远程注入
• API 模拟
• 休眠检查
• 调试器检查 | 带有 XOR 加密分阶段 Payload 和单独暂存加密密钥的 Process Hypnosis | | 13 | EarlyBirdAPCInjectionStagedSpoofControl | C | RC4 | ✅ | • Early Bird 技术
• PPID 伪造
• API 模拟
• 执行控制
• Payload 执行检查
• 远程注入
• 休眠检查 | Early Bird APC 注入,使用 RC4 加密的分阶段 Payload、PPID 伪造和执行流控制 | | 14 | ProcessHypnosisStagedObfuscated | C | 无 | ✅ | • Process Hypnosis
• API 哈希
• 自定义 GetModuleHandle/GetProcAddress
• 运行时 API 解析
• 执行控制
• API 模拟
• 调试器检查
• 休眠检查 | Process Hypnosis 与分阶段 Payload、API 哈希以及自定义 GMH/GPA 实现,以规避静态分析 | | 15 | EarlyBirdAPCEvasion | C | 无 | ✅ | • Early Bird 技术
• API 哈希
• API 模拟
• PPID 伪造
• 自定义 GMH/GPA
• 运行时 API 解析
• 执行控制
• API Hammering
• 调试器检查
• 休眠检查 | Early Bird APC 拥有全面的规避堆栈:API 哈希、Hammering、PPID 伪造、运行时解析、执行控制 | | 16 | EarlyBirdAPCInjectionSyscalls | C + ASM | 无 | ✅ | • Early Bird 技术
• 直接系统调用 (SysWhispers3)
• 自定义 GMH/GPA
• 运行时 API 解析
• API 哈希
• 执行控制
• API 模拟
• 调试器检查
• 休眠检查 | Early Bird APC 注入,通过 SysWhispers3 使用直接系统调用,绕过用户模式钩子 | | 17 | HGRemoteMappingInjection | C | 无 | ❌ | • HellsGate 技术
• 远程映射注入 | 远程映射注入,使用 HellsGate 进行动态 syscall 号解析 | | 18 | DLL-ProcessHypnosisEv | C | XOR | ❌ | • Process Hypnosis
• DLL 导出
• Application Setup Strings
• 休眠检查
• API 模拟
• 执行控制 | 以 DLL 形式交付的 Process Hypnosis 技术,带有 XOR 加密的 Shellcode 和规避措施 | | 19 | SysWhispRemoteMappingInjection | C + ASM | 无 | ❌ | • SysWhispers3
• 远程映射注入
• API 脱钩
• 自定义 GMH/GPA
• API 哈希
• 运行时 API 解析
• 执行控制
• API Hammering
• API 模拟
• 调试器检查
• 休眠检查 | 使用 SysWhispers3 syscall 的远程映射注入,包含完整的规避堆栈(含 API 脱钩) | | 20 | APCInjection-IndirectSyscalls | C + ASM | XOR | ❌ | • APC 注入
• HellsHall 技术
• 间接系统调用
• 自定义 GMH/GPA
• API 哈希
• 运行时 API 解析
• 执行控制
• API Hammering
• API 模拟
• 调试器检查
• 休眠检查 | 通过 HellsHall 进行间接系统调用的 APC 注入;仓库中最先进的规避堆栈 | | 21 | FreshyCalls-RemoteMappingInjection | C | 无 | ❌ | • FreshyCalls 技术
• 远程映射注入 | 远程映射注入,使用 FreshyCalls 绕过基于 syscall 的用户模式钩子 | ## 关键技术术语表 | 术语 | 描述 | |:---|:---| | **CRT 注入** | 基于CreateRemoteThread的 Shellcode 注入到远程进程 | | **APC 注入** | 通过异步过程调用排队执行 Shellcode | | **Early Bird APC** | 在新生的挂起进程入口点运行之前,对其进行 APC 注入 | | **Process Hypnosis** | 在挂起的进程执行之前替换其映像 | | **远程映射注入** | 将 Shellcode 节映射到远程进程而不使用 `WriteProcessMemory` | | **PPID 伪造** | 使用伪造的父 PID 生成进程以混入进程树 | | **API 哈希** | 在运行时使用哈希函数名解析 API 地址以避免导入表痕迹 | | **API Hammering** | 循环调用良性 API 以延长执行时间并规避沙箱超时 | | **HellsGate / HellsHall** | 从 ntdll 动态解析 SSN(syscall 号)以实现直接/间接系统调用的技术 | | **SysWhispers3** | 生成直接/间接 syscall 存根的工具,避免 ntdll 中的用户模式钩子 | | **FreshyCalls** | 对 syscall 存根进行排序以确定 SSN 而无需读取被挂钩的 ntdll 的技术 | ## 参考文献与致谢 为本项目提供参考的项目和资源: - [MalDevAcademy](https://maldevacademy.com/) — 主要学习资源 - [SysWhispers3](https://github.com/klezVirus/SysWhispers3) — 直接/间接系统调用生成 - [HellsGate](https://github.com/am0nsec/HellsGate) — 动态 SSN 解析 - [HellsHall](https://github.com/Maldev-Academy/HellHall) — 间接系统调用变体 - [FreshyCalls](https://github.com/crummie5/FreshyCalls) — syscall 存根排序技术 - [Process Hypnosis](https://github.com/captain-woof/process-hypnosis) — 技术参考
• CRT | 通过 CRT 进行的远程进程注入,Payload 从远程服务器下载 | | 2 | ProcInjShellcodeNtQuerySystemInfo | C | 无 | ✅ | • IPv6 混淆
• 直接系统调用
• 进程枚举 | 通过 CRT 进行的远程进程注入,使用 IPv6 混淆的 Payload;使用 `NtQuerySystemInformation` syscall 进行进程枚举 | | 3 | ThreadHijackIPv6Obf | C | 无 | ❌ | • 线程劫持
• IPv6 混淆 | 使用 IPv6 混淆 Payload 的远程进程线程劫持 | | 4 | RC4APCInjection | C | RC4 | ❌ | • APC 注入
• 可警告线程 | 通过可警告的牺牲线程进行 APC 注入,Shellcode 使用 RC4 加密 | | 5 | EarlyBirdAPCInjection | C | 无 | ✅ | • Early Bird 技术
• 调试状态启动 | Early Bird APC 注入,以调试状态生成目标进程;Payload 从暂存服务器获取 | | 6 | RC4EarlyBirdAPCInjectionStaged | C | RC4 | ✅ | • Early Bird 技术
• 调试状态启动 | Early Bird APC 注入,使用从 Web 服务器获取的 RC4 加密分阶段 Shellcode | | 7 | AESCRTSleep | C | AES | ❌ | • CRT 注入
• 随机休眠时间
• 远程注入 | CRT 注入,Payload 使用 AES 加密;在执行前休眠随机时间以规避沙箱超时 | | 8 | XORCRTInj | C | XOR | ❌ | • CRT 注入 | CRT 注入,Payload 使用 XOR 加密;包含单独的加密工具 | | 9 | NtAPIXOR | C# | XOR | ❌ | • Native API 使用
• 远程注入 | 使用 Native API 调用 (C#) 进行的远程进程注入,Payload 使用 XOR 加密 | | 10 | XORProcessHypnosis | C | XOR | ❌ | • Process Hypnosis
• Application Setup Strings
• 远程注入
• API 模拟
• 调试器检查
• 休眠检查 | Process Hypnosis 技术,使用 XOR 加密的 Payload 和沙箱规避检查 | | 11 | ProcessHypnosisStaged | C | 无 | ✅ | • Process Hypnosis | Process Hypnosis 技术与分阶段 Payload —— 最小化规避,基线实现 | | 12 | XORProcessHypnosisStaged | C | XOR | ✅ | • Process Hypnosis
• 分阶段密钥
• Application Setup Strings
• 远程注入
• API 模拟
• 休眠检查
• 调试器检查 | 带有 XOR 加密分阶段 Payload 和单独暂存加密密钥的 Process Hypnosis | | 13 | EarlyBirdAPCInjectionStagedSpoofControl | C | RC4 | ✅ | • Early Bird 技术
• PPID 伪造
• API 模拟
• 执行控制
• Payload 执行检查
• 远程注入
• 休眠检查 | Early Bird APC 注入,使用 RC4 加密的分阶段 Payload、PPID 伪造和执行流控制 | | 14 | ProcessHypnosisStagedObfuscated | C | 无 | ✅ | • Process Hypnosis
• API 哈希
• 自定义 GetModuleHandle/GetProcAddress
• 运行时 API 解析
• 执行控制
• API 模拟
• 调试器检查
• 休眠检查 | Process Hypnosis 与分阶段 Payload、API 哈希以及自定义 GMH/GPA 实现,以规避静态分析 | | 15 | EarlyBirdAPCEvasion | C | 无 | ✅ | • Early Bird 技术
• API 哈希
• API 模拟
• PPID 伪造
• 自定义 GMH/GPA
• 运行时 API 解析
• 执行控制
• API Hammering
• 调试器检查
• 休眠检查 | Early Bird APC 拥有全面的规避堆栈:API 哈希、Hammering、PPID 伪造、运行时解析、执行控制 | | 16 | EarlyBirdAPCInjectionSyscalls | C + ASM | 无 | ✅ | • Early Bird 技术
• 直接系统调用 (SysWhispers3)
• 自定义 GMH/GPA
• 运行时 API 解析
• API 哈希
• 执行控制
• API 模拟
• 调试器检查
• 休眠检查 | Early Bird APC 注入,通过 SysWhispers3 使用直接系统调用,绕过用户模式钩子 | | 17 | HGRemoteMappingInjection | C | 无 | ❌ | • HellsGate 技术
• 远程映射注入 | 远程映射注入,使用 HellsGate 进行动态 syscall 号解析 | | 18 | DLL-ProcessHypnosisEv | C | XOR | ❌ | • Process Hypnosis
• DLL 导出
• Application Setup Strings
• 休眠检查
• API 模拟
• 执行控制 | 以 DLL 形式交付的 Process Hypnosis 技术,带有 XOR 加密的 Shellcode 和规避措施 | | 19 | SysWhispRemoteMappingInjection | C + ASM | 无 | ❌ | • SysWhispers3
• 远程映射注入
• API 脱钩
• 自定义 GMH/GPA
• API 哈希
• 运行时 API 解析
• 执行控制
• API Hammering
• API 模拟
• 调试器检查
• 休眠检查 | 使用 SysWhispers3 syscall 的远程映射注入,包含完整的规避堆栈(含 API 脱钩) | | 20 | APCInjection-IndirectSyscalls | C + ASM | XOR | ❌ | • APC 注入
• HellsHall 技术
• 间接系统调用
• 自定义 GMH/GPA
• API 哈希
• 运行时 API 解析
• 执行控制
• API Hammering
• API 模拟
• 调试器检查
• 休眠检查 | 通过 HellsHall 进行间接系统调用的 APC 注入;仓库中最先进的规避堆栈 | | 21 | FreshyCalls-RemoteMappingInjection | C | 无 | ❌ | • FreshyCalls 技术
• 远程映射注入 | 远程映射注入,使用 FreshyCalls 绕过基于 syscall 的用户模式钩子 | ## 关键技术术语表 | 术语 | 描述 | |:---|:---| | **CRT 注入** | 基于CreateRemoteThread的 Shellcode 注入到远程进程 | | **APC 注入** | 通过异步过程调用排队执行 Shellcode | | **Early Bird APC** | 在新生的挂起进程入口点运行之前,对其进行 APC 注入 | | **Process Hypnosis** | 在挂起的进程执行之前替换其映像 | | **远程映射注入** | 将 Shellcode 节映射到远程进程而不使用 `WriteProcessMemory` | | **PPID 伪造** | 使用伪造的父 PID 生成进程以混入进程树 | | **API 哈希** | 在运行时使用哈希函数名解析 API 地址以避免导入表痕迹 | | **API Hammering** | 循环调用良性 API 以延长执行时间并规避沙箱超时 | | **HellsGate / HellsHall** | 从 ntdll 动态解析 SSN(syscall 号)以实现直接/间接系统调用的技术 | | **SysWhispers3** | 生成直接/间接 syscall 存根的工具,避免 ntdll 中的用户模式钩子 | | **FreshyCalls** | 对 syscall 存根进行排序以确定 SSN 而无需读取被挂钩的 ntdll 的技术 | ## 参考文献与致谢 为本项目提供参考的项目和资源: - [MalDevAcademy](https://maldevacademy.com/) — 主要学习资源 - [SysWhispers3](https://github.com/klezVirus/SysWhispers3) — 直接/间接系统调用生成 - [HellsGate](https://github.com/am0nsec/HellsGate) — 动态 SSN 解析 - [HellsHall](https://github.com/Maldev-Academy/HellHall) — 间接系统调用变体 - [FreshyCalls](https://github.com/crummie5/FreshyCalls) — syscall 存根排序技术 - [Process Hypnosis](https://github.com/captain-woof/process-hypnosis) — 技术参考
标签:APC注入, Chrome扩展, Direct Syscalls, DNS 反向解析, Early Bird, EDR绕过, Hpfeeds, IPv6混淆, Kernel32, MASM, NtQuerySystemInformation, RC4加密, SSH蜜罐, TGT, 中高交互蜜罐, 反杀毒, 客户端加密, 恶意软件开发, 攻防演练, 数据展示, 端点可见性, 系统调用, 红队, 线程劫持, 蜜罐平台, 规避技术, 进程注入, 高交互蜜罐, 高危端口监控