用途:为攻击性安全测试提供 Shellcode 开发参考,覆盖从概念定义、汇编编写、二进制提取测试到编码加密与投递的完整工作流。
主要能力:
- 基础概念:分配-写入-执行模式,建议先用 PAGE_READWRITE 分配、写入后再用 VirtualProtect 切换为 PAGE_EXECUTE_READ,避免直接使用 PAGE_EXECUTE_READWRITE。
- 位置无关代码(PIC):Windows 可用 Call/Pop、FPU 状态、SEH;Linux 可用 GOT、VDSO。
- Windows API 解析:通过 PEB 遍历(gs:[0x60] / fs:[0x30])定位 kernel32,哈希比对模块名,解析导出地址表找到 GetProcAddress 与 LoadLibraryA,再加载 WS2_32.dll 等。
- 加载器:负责环境校验、解密、安全分配与注入;推荐 Zig、Rust、Nim、Go(注意运行时特征)。分配避免 RWX,采用两步法;写入可用 WriteProcessMemory 或 memcpy,并配合填充、分块乱序、延迟等规避;执行阶段可用 CreateRemoteThread、NtSetContextThread、NtQueueApcThreadEx、API trampoline、ThreadlessInject 等。
- PE 转 Shellcode:Donut、sRDI、Pe2shc、Amber 等工具;开源加载器如 ScareCrow、NimPackt-v1、NullGate、DripLoader、ProtectMyTooling;直接系统调用可用 SysWhispers3、FreshyCalls。
- 存储与隐藏:硬编码 .text、PE 资源、额外节区、证书表、网络托管等方式,并给出证书表技术要点与压缩加密建议;提及 Windows 11 24H2 的 AMSI 堆扫描应对。
- 规避:渐进式升级(基础执行→加密混淆→直接系统调用→远程注入),并对比本地与远程注入的可检测性。
- 跨平台:Windows on ARM64(SVC 0、PAC)、Linux 6.9+ eBPF Arena、macOS 签名系统卷。
- 示例:给出基于 Keystone 的完整 x64 Windows 反弹 Shell Shellcode,实现 PEB 遍历、GetProcAddress、LoadLibraryA、Winsock 连接与 CreateProcessA(cmd.exe)。
使用方式:按工作流逐步推进,在受控环境中测试;示例代码需自行替换 C2 地址等参数。
适用场景:红队演练、Shellcode 开发学习、免杀技术研究。
限制:资料未提供具体授权范围、法律合规说明、各工具版本要求与完整安装命令;部分技术细节(如 macOS 内核持久化步骤)仅作概述,未展开完整操作。