模块化 Windows C2 框架,包含 Rust teamserver、Zig 植入体、间接系统调用、AMSI 绕过、反射式/PoolParty 注入、内存中 BOF 执行以及 HTTP/DNS 传输。
Lockjaw 是一个高级、模块化的命令与控制 (C2) 框架,专为红队交战、对抗性模拟和隐蔽行动而设计。它采用现代分离式语言架构:高并发的 Rust Teamserver 与一个规避性、无依赖的 Zig 植入体以及纯汇编位置无关代码 (PIC) 加载器相结合。
这是 ALPHA 软件 使用风险自负。并非所有功能都已测试,代码尚未经过审查。存在 bug,某些命令可能无法正常工作。
以下内容已经过测试:
BOF 支持尚未测试。
+------------------------------------+
| Operator CLI (Python) |
| Async TUI / Prompt-Toolkit |
+-----------------+------------------+
| HTTPS / REST API (Port 50051)
v
+------------------------------------+
| Lockjaw Teamserver |
| (Rust / Tokio) |
| - SQLite Storage (SQLx) |
| - Dynamic Zig Cross-Compiler |
| - Multi-Transport Listener Manager|
+--------+------------------+--------+
| |
HTTPS / HTTP DNS (UDP 53)
(WinHTTP) (Hickory DNS / Base32)
| |
v v
+------------------------------------+
| Lockjaw Implant (Zig) |
| - Indirect Syscalls (Halo's Gate) |
| - Reflective & PoolParty Injection|
| - In-Memory BOF Execution Engine |
| - Ghost AMSI Bypass (HWBP + VEH) |
| - IAT-Clean Dynamic API Resolv. |
| - RC4-Encrypted Communications |
+------------------------------------+
x86_64-windows。独立运行,零外部 C 运行时依赖,运行在 .Windows 子系统(无头,无控制台窗口)。pic_stager.s),具有安全栈架构、影子空间保留和动态 PEB 遍历,以及轻量级 PowerShell 下载 cradle。prompt_toolkit 构建的异步 TUI,具有实时签到警报、数字索引、前缀匹配、上下文管理以及自动文件上传/下载同步功能。ntdll.dll 动态提取系统服务号 (SSN)。ntdll.dll 的 .text 段内的合法 syscall; ret gadget,规避用户模式 API 挂钩、调用栈检查和返回地址来源检查。AddVectoredExceptionHandler) 的内存 AMSI 中和器。0xDEADBEEF) 以在 AmsiScanBuffer 上配置调试寄存器。EXCEPTION_SINGLE_STEP,将 RAX 清零 (AMSI_RESULT_CLEAN = 0),并干净地将执行返回给调用者。.text 内存字节,避免 SetThreadContext 检测向量。InLoadOrderModuleList) 解析模块,并通过编译时区分大小写 (djb2) 和不区分大小写 (djb2_i) 哈希动态解析函数地址。.Windows 子系统 GUI 应用程序运行。ShowWindow(hWnd, SW_HIDE) 抑制控制台窗口。SECURITY_IGNORE_ALL_CERT_ERRORS),支持使用自签名 TLS 证书和域前置进行操作。ping 127.0.0.1 -n 3 > nul & del /f /q ...) 以安全地从磁盘擦除二进制文件。migrate <pid> reflective):
NtCreateSection + NtMapViewOfSection 本地映射为 RW,远程映射为 RWX)将 agent 的可执行映像手动映射到远程目标进程。NtAllocateVirtualMemory / NtWriteVirtualMemory)。NtCreateThreadEx 间接系统调用启动远程线程执行。migrate <pid> reflective_poolstomp):
NtQuerySystemInformation 枚举远程进程句柄,以发现现有的线程池工作工厂 (TpWorkerFactory)。WorkerFactoryBasicInformation,用执行跳板覆盖工厂的 StartRoutine,并通过 NtSetInformationWorkerFactory 递增 WorkerFactoryThreadMinimum 来触发 agent 执行。CreateRemoteThread / NtCreateThreadEx 的遥测和警报(例如 Sysmon 事件 ID 8、ETW 威胁情报提供程序)。AMD64 对象文件。IMAGE_REL_AMD64_ADDR64、IMAGE_REL_AMD64_ADDR32、IMAGE_REL_AMD64_ADDR32NB、IMAGE_REL_AMD64_REL32)。__imp__<DLL>$<Function> 约定解析外部动态依赖。BeaconDataParse、BeaconDataInt、BeaconDataShort、BeaconDataLength、BeaconDataExtract。BeaconFormatAlloc、BeaconFormatReset、BeaconFormatFree、BeaconFormatAppend、BeaconFormatPrintf、BeaconFormatToString、BeaconFormatInt。BeaconOutput、BeaconPrintf、BeaconIsAdmin。Host 头域前置支持。<base32>.<domain>) 传输 Base32 编码、RC4 加密的签到和结果载荷。ps):
IsWow64Process 区分 x86 与 x64)。OpenProcessToken 和 LookupAccountSidA 解析进程令牌用户和所有者域账户。sc_enum、sc_query):
RUNNING、STOPPED、STARTING、STOPPING)、PID、服务名称和显示名称。sc_query <name>),详细说明二进制路径、启动类型(BOOT_START、SYSTEM_START、AUTO_START、DEMAND_START、DISABLED)、服务账户和服务类型。whoami:详细身份签到载荷。ipconfig:通过 GetAdaptersInfo 枚举网络适配器、描述、IP 地址、子网掩码和默认网关。pid:返回当前植入体进程 ID。pwd、cd、ls、cat、rm。upload 和 download,具有自动 base64 传输和本地文件处理。shell <cmd>:通过匿名管道经由 cmd.exe /c 执行命令,不创建窗口。requests 和 prompt_toolkit — 用于 Operator CLI.bin shellcode 载荷时所需sudo apt update
sudo apt install -y curl build-essential binutils python3 python3-venv
# Install Rust & Cargo
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
# Install Zig Compiler (v0.15.2)
wget https://ziglang.org/download/0.15.2/zig-linux-x86_64-0.15.2.tar.xz
tar xf zig-linux-x86_64-0.15.2.tar.xz
sudo mv zig-linux-x86_64-0.15.2 /opt/zig
sudo ln -s /opt/zig/zig /usr/local/bin/zig
# Setup Python CLI dependencies
python3 -m venv venv
source venv/bin/activate
pip install requests prompt_toolkit
cd teamserver
cargo build --release
编译后的二进制文件将位于 teamserver/target/release/teamserver。
cd teamserver
./target/release/teamserver [OPTIONS]
| 选项 | 默认值 | 描述 |
|---|---|---|
--op-port <PORT> | 50051 | Operator REST API 的端口 |
--op-host <HOST> | 127.0.0.1 | Operator REST API 的主机地址 |
--no-listeners | false | 禁用启动默认 HTTPS agent 监听器 |
--http-port <PORT> | 8080 | 默认 agent HTTPS 监听器的端口 |
--http-host <HOST> | 127.0.0.1 | 默认 agent HTTPS 监听器的主机地址 |
--db-path <PATH> | lockjaw.db | SQLite 数据库的路径 |
--api-key <KEY> | lockjaw_secret_key | Operator API 的静态认证密钥 |
--op-cert <PATH> | op_cert.pem | Operator API 的 SSL 证书路径(如果缺失则自动生成) |
--op-key <PATH> | op_key.pem | Operator API 的 SSL 密钥路径(如果缺失则自动生成) |
--agent-cert <PATH> | agent_cert.pem | Agent HTTPS 监听器的 SSL 证书路径(如果缺失则自动生成) |
--agent-key <PATH> | agent_key.pem | Agent HTTPS 监听器的 SSL 密钥路径(如果缺失则自动生成) |
启动异步 TUI 客户端: