messecv3/typhon-process-injection

GitHub: messecv3/typhon-process-injection

Typhon 是集成了全部八种 PoolParty 变体的 Windows 规避性进程注入框架,通过间接系统调用、调用栈欺骗、Section 内存映射和零补丁 AMSI/ETW 绕过等多层规避技术,实现在被监控环境中的代码注入与执行。

Stars: 5 | Forks: 0

Typhon

Windows 规避性进程注入工具包 —— 间接系统调用、调用栈欺骗、Section 支持的内存、零补丁 AMSI/ETW 绕过,以及所有 8 种 PoolParty 线程池变体集成于单一二进制文件中。

Typhon 不仅仅是另一个 PoolParty 实现。它是一个完整的规避性注入框架,将六个独立的绕过层整合到一个工具中 —— 通过 Tartarus Gate 实现的间接系统调用、每次调用的跳板旋转、具备 CET 感知的完整调用栈欺骗、Section 支持的跨进程内存、零导入的仅 PEB API 解析,以及不触及任何代码字节的零补丁 AMSI/ETW 绕过。PoolParty 线程池变体是交付机制。其余的一切则是使其在被监控环境中存活的关键。 基于 [SafeBreach Labs](https://github.com/SafeBreach-Labs/PoolParty) 的研究 —— Alon Leviev,Black Hat EU 2023。

🔐 由 Crypter.cloud & Crypter.shop 带来
高级加密与安全解决方案

## 为什么存在这个项目 GitHub 上的每一个 PoolParty 实现都在做同样的事情:在使用 `VirtualAllocEx` 分配内存后,通过直接系统调用(或者更糟,通过 ntdll 导入)调用 `NtSetIoCompletion`。这不是规避 —— 这只是一个有着花哨名字的注入工具。 PoolParty 的全部意义在于它消除了执行原语。没有 `CreateRemoteThread`。没有 APC。没有上下文劫持。线程池自己的工作线程作为其正常调度循环的一部分来执行你的回调。但是,如果你的系统调用是直接的,你的调用栈是原始的,并且你的内存是来自 `VirtualAllocEx` 的 `MEM_PRIVATE` —— 你已经输了。EDR 会在回调甚至触发之前就标记你。 Typhon 做得对。每一层都很重要,并且它们是相辅相成的。 ## 六大规避层 这些不是备选方案 —— 它们是累积的。每一层都会在每次注入中运行。 ### 1. 通过 Tartarus Gate 的间接系统调用 每个 NT 调用都经过一个从 ntdll 的 `.text` 节中提取的 `syscall; ret` gadget —— 而不是通过 ntdll 的导出表,也不是通过你二进制文件中的直接 `syscall` 指令。SSN(系统调用服务号)是在运行时从 ntdll 的内存存根中提取的,如果存根被挂钩(EDR 内联挂钩),Tartarus 会遍历相邻的存根并从干净的邻居推导出正确的 SSN。你的二进制文件包含零个 NT API 引用。 ### 2. 跳板旋转 `syscall; ret` gadget 地址在每次调用时都会改变。引擎扫描 ntdll 以查找所有有效的 gadget,对它们进行质量评分(与已知系统调用存根的接近度、与挂钩的距离、在 `.text` 中的位置),并在每次调用时随机选择一个高质量的 gadget。对固定跳板地址进行指纹识别的 ETW 遥测和基于栈的启发式分析每次都会看到不同的来源。 ### 3. 调用栈欺骗 + CET 感知 间接系统调用帧具有一个伪造的 RBP 链,该链由从系统 DLL(ntdll、kernel32、kernelbase、user32)中提取的真实返回地址构建。完整的线程 `CONTEXT` 是从兄弟线程中窃取的,因此非易失性寄存器与真实的挂起帧匹配。如果 Intel CET(影子栈)处于活动状态,则会通过 `RtlAddFunctionTable` 注册合成的 `.pdata` 条目,以便 Windows 展开器将这些帧视为合法。EDR 栈遍历器会看到一个源自系统模块的合理调用链。 ### 4. Section 支持的内存(无 VirtualAllocEx) Shellcode 通过 `NtCreateSection` + `NtMapViewOfSection` 落入目标 —— 在我们的进程中映射为 RW 以进行写入,在目标中映射为 RWX 以执行(donut shellcode 原地解密自身)。目标看到的是 `MEM_MAPPED` 内存(看起来像 DLL 或共享 Section),而不是来自 `VirtualAllocEx` 的 `MEM_PRIVATE`。写入后,我们的本地视图被取消映射 —— 我们的进程中零痕迹。不使用 `WriteProcessMemory` 进行批量写入。 ### 5. 零 IAT / 完整 PEB 解析 每个 API —— `CreateFileW`、`GetTempPathW`、`CreateToolhelp32Snapshot`,所有的一切 —— 都是通过遍历 PEB 的 `InMemoryOrderModuleList` 并匹配编译时哈希名称来解析的。导入表不包含任何有趣的内容。二进制文件的静态分析不会显示任何可疑的 API 使用。 ### 6. 零补丁 AMSI/ETW 绕过 大多数工具依赖 donut 的 AMSI 绕过,它直接补丁 `AmsiScanBuffer` —— 自 2020 年以来,每个 EDR 都已经对此建立了签名。Typhon 使用一种完全不同的方法: - **AMSI**:三层零补丁上下文破坏。完全没有代码补丁 —— 只是对 amsi.dll 堆内存的数据写入。破坏魔术签名、切断提供者列表并溢出会话计数器。与正常的堆写入无法区分。 - **ETW**:补丁 `EtwEventWrite`、`EtwEventWriteEx` 和 `NtTraceEvent` 存根以返回 0。内存保护更改通过带有欺骗栈的间接系统调用进行,因此 `VirtualProtect`/`NtProtectVirtualMemory` 上的 EDR 挂钩永远看不到它。加上每线程 TEB 检测抑制作为安全网。 构建独立可执行文件时,donut 的绕过被显式禁用(`-b 1`),因为我们的更好。 ### 结果 ``` Typical repos: PoolParty technique + direct ntdll call + VirtualAllocEx + raw stack + IAT imports + donut AMSI bypass Typhon: PoolParty technique + indirect syscall + trampoline rotation + spoofed stack + section memory + PEB resolution + zero-patch AMSI/ETW ``` 这就是“新颖的注入原语”和“在被监控环境中真正存活的新颖注入原语”之间的区别。 ## 快速开始 ### 交互模式(直接运行) ``` typhon.exe ``` 没有参数,没有嵌入的 shellcode —— Typhon 启动一个交互式菜单: ``` Typhon -- Evasive Process Injection Toolkit ============================================ Indirect Syscalls | Call-Stack Spoofing | Section-Backed Memory AMSI/ETW Bypass | 8 PoolParty Variants | Auto-Target Selection [1] Build standalone exe (embed shellcode into portable exe) [2] Inject from file (load shellcode and inject now) [3] Show help (CLI usage and options) ``` ### 构建独立 exe(推荐工作流) 最常见的用例:将你的 shellcode(或 exe/dll)嵌入到启动时自动注入的独立 .exe 中。运行时不需要参数,没有运行时依赖项,可在全新的 Windows 10/11 安装上运行。 ``` # 编译 typhon build.bat # 从原始 shellcode 构建 typhon.exe -build payload.bin -o injector.exe # 从原生 PE 构建(通过 donut 自动转换) typhon.exe -build implant.exe -o loader.exe # 从 .NET exe 构建(自动检测 CLR,donut 处理 bootstrap) typhon.exe -build agent.exe -o loader.exe # 输出是自包含的 —— 只需运行它: injector.exe # → 自动查找目标,注入,完成 ``` 构建器自动检测输入是原始 shellcode(.bin)还是 PE(.exe/.dll)。如果是 PE,它会使用 [donut](https://github.com/TheWover/donut) 自动将其转换为 shellcode —— 包括 .NET 程序集(CLR 引导自动处理)。只需指向你的文件,它会自动处理其余的事情。 输出的 exe 是静态链接的(`/MT`),需要零 VC 运行时,并且开箱即用地适用于任何 x64 Windows 10/11 机器。应用你自己的静态保护(打包、混淆、签名)并进行部署。 ``` # Builder 选项 typhon.exe -build [-o output.exe] [-variant X] [-delay ms] [-debug] [-donut path] # 特定变体(推荐在现代支持 XFG 的 Windows 上使用 V1) typhon.exe -build payload.bin -o out.exe -variant 1 # V1 Worker Factory (recommended) typhon.exe -build payload.bin -o out.exe -variant direct # V7 TP_DIRECT typhon.exe -build payload.bin -o out.exe -variant timer -delay 60000 # V8 with delay # Debug 模式 —— 在生成的 exe 中保留控制台输出(用于测试) typhon.exe -build payload.bin -o out.exe -debug # 自定义 donut 路径(若位于同一目录或 PATH 中则自动检测) typhon.exe -build implant.exe -o out.exe -donut C:\tools\donut.exe ``` ### CLI 模式(测试 / 开发) ``` # 从 shellcode 文件注入(自动选择目标) typhon.exe payload.bin # 注入到特定 PID typhon.exe payload.bin 1234 # 强制 V1 (Worker Factory) —— 绕过 CFG/XFG typhon.exe payload.bin 1234 1 ``` Shellcode 格式:原始字节。适用于 [donut](https://github.com/TheWover/donut)、msfvenom、Cobalt Strike 或任何原始 shellcode 生成器。 未指定 PID 时,Typhon 会自动找到合适的目标 —— 长期运行、同一会话的进程,且具有活动线程池(RuntimeBroker、sihost、taskhostw、explorer 等)。 ## 所有 8 种变体 | # | 名称 | 触发器 | 备注 | |---|---|---|---| | **V1** | **Worker Factory** | **覆盖 `TppWorkerThread`,强制新工作线程** | **推荐 —— 在现代 Windows 上绕过 CFG/XFG** | | V2 | TP_WORK | 插入任务队列双向链表 | 工作线程出队并执行 | | V3 | TP_IO | 将文件关联到 I/O 完成端口,写入文件 | 文件完成触发回调 | | V4 | TP_WAIT | 创建等待完成包,发出事件信号 | 事件信号触发回调 | | V5 | TP_ALPC | 在 I/O 完成端口上创建 ALPC 端口,连接 | ALPC 消息触发回调 | | V6 | TP_JOB | 在 I/O 完成端口上创建作业对象,分配进程 | 作业通知触发回调 | | V7 | TP_DIRECT | 将 TP_DIRECT 排队到 I/O 完成端口 | 一个结构,一个系统调用。**被 XFG 阻止。** | | V8 | TP_TIMER | 插入定时器队列红黑树 | **延迟执行** —— 攻击者可以退出 | ### 变体选择 ``` typhon.exe payload.bin all # All 8 (including destructive V1) typhon.exe payload.bin safe # V2-V8 (non-destructive) typhon.exe payload.bin rec # V1 (recommended) typhon.exe payload.bin direct # V7 only typhon.exe payload.bin timer # V8 only typhon.exe payload.bin io # V3-V7 (I/O completion variants) typhon.exe payload.bin 1 # Specific variant by number ``` ## V1 Worker Factory —— 工作原理 V1 是推荐的变体,因为它完全绕过了 CFG/XFG。执行流程如下: 1. **句柄劫持**:枚举系统句柄,复制目标的 `WorkerFactory` 句柄 2. **查询 worker factory**:获取 `TppWorkerThread` 地址(所有工作线程的启动例程) 3. **注入 shellcode**:通过 `NtCreateSection` + `NtMapViewOfSection` 将 shellcode 映射到目标中(RWX 用于 donut 自解密) 4. **构建跳板**:在目标中分配私有 RW 页面,使用幂等保护(`lock cmpxchg`)编写 `CreateThread` 跳板,通过 `SetProcessValidCallTargets` 注册为有效的 CFG 目标 5. **覆盖启动例程**:在 ntdll 中的 `TppWorkerThread` 上写入 `mov rax, ; jmp rax` 存根 6. **强制创建工作线程**:通过 `NtSetInformationWorkerFactory` 增加 `WorkerFactoryThreadMinimum` + 排队虚拟 I/O 完成包 7. **新工作线程启动**:调用被覆盖的 `TppWorkerThread`,命中我们的 JMP 存根,落入跳板 8. **跳板执行**:`lock cmpxchg` 保护确保只有第一个工作线程调用 `CreateThread(shellcode)`。后续工作线程无害地返回 0。 9. **Shellcode 在新线程中运行**:Donut 引导 CLR,加载 .NET 程序集,执行。工作线程干净地返回。 关键洞察:工作线程通过直接 `call` 指令调用 `TppWorkerThread`,而不是通过 CFG/XFG 验证的间接调用。通过覆盖函数本身,我们绕过了整个控制流完整性检查。 ## 架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ Typhon │ │ Interactive Menu / CLI / Embedded Exe Mode │ ├─────────────────────────────────────────────────────────────┤ │ AMSI/ETW Bypass │ │ Zero-patch AMSI corruption | ETW stub patch via syscall │ │ TEB instrumentation suppression | No VirtualProtect │ ├─────────────────────────────────────────────────────────────┤ │ PRNG Dispatcher │ │ Randomly selects variant from allowed set │ ├──────┬──────┬──────┬──────┬──────┬──────┬──────┬────────────┤ │ V1 │ V2 │ V3 │ V4 │ V5 │ V6 │ V7 │ V8 │ │Worker│TP_ │TP_IO │TP_ │TP_ │TP_ │TP_ │TP_TIMER │ │Factor│WORK │ │WAIT │ALPC │JOB │DIRECT│ │ ├──────┴──────┴──────┴──────┴──────┴──────┴──────┴────────────┤ │ Memory Writer │ │ NtCreateSection → NtMapViewOfSection │ │ RW local view → RWX remote view → detach local │ ├─────────────────────────────────────────────────────────────┤ │ Handle Hijacker │ │ NtQuerySystemInformation(SystemHandleInformationEx) │ │ → NtDuplicateObject → NtQueryObject (type check) │ │ Discovers: WorkerFactory, IoCompletion, IRTimer │ │ TP_POOL scan for correct IoCompletion handle │ ├─────────────────────────────────────────────────────────────┤ │ Syscall Engine │ │ ┌────────────┐ ┌──────────────┐ ┌─────────────────────┐ │ │ │ Tartarus │ │ Trampoline │ │ Call-Context │ │ │ │ Gate │ │ Manager │ │ Hardening │ │ │ │ │ │ │ │ │ │ │ │ SSN from │ │ syscall;ret │ │ Return addr │ │ │ │ ntdll stub │ │ gadgets │ │ harvesting + │ │ │ │ + hook │ │ quality │ │ context theft + │ │ │ │ recovery │ │ scored + │ │ CET .pdata + │ │ │ │ │ │ rotated │ │ VEH spoofing │ │ │ └────────────┘ └──────────────┘ └─────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ PEB Resolver │ │ Module + export lookup by compile-time hash │ │ Zero GetModuleHandle / GetProcAddress / IAT │ └─────────────────────────────────────────────────────────────┘ ``` ## 线程池注入如何绕过 EDR 传统注入需要一个显式的执行原语 —— `CreateRemoteThread`、`NtQueueApcThread`、`SetThreadContext`、回调注册。EDR 对所有这些都有内核回调和用户模式挂钩。 PoolParty 完全消除了执行原语。你将数据结构写入目标的内存,线程池现有的工作线程作为其正常调度循环的一部分来执行它们。触发器是一个完全合法的操作 —— 文件写入完成、定时器到期、ALPC 消息到达、事件被发出信号。 从 EDR 的角度来看: - 没有创建新线程 - 没有排队 APC - 没有修改线程上下文 - 没有通过任何受监控的 API 注册回调 - 一个已经在运行的工作线程只是执行了一个已经在其队列中的回调 基本的检测挑战:线程池旨在执行任意回调。那是它的全部目的。区分合法回调和攻击者插入的回调需要了解每个进程的所有有效回调集 —— 这在实践中无法大规模实现。 ## 对比 | | SafeBreach POC | 典型的 GitHub 仓库 | Typhon | |---|---|---|---| | 变体 | 8 个(独立二进制文件) | 1-2 个(通常只有 V7) | 8 个(单一二进制文件,PRNG 选择) | | 系统调用 | ntdll 导入 | 直接系统调用 / SysWhispers | 通过 Tartarus Gate 的间接调用 | | 跳板 | 不适用 | 固定地址(如果有) | 每次调用轮换,质量评分 | | 调用栈 | 原始 | 原始 | 伪造的 RBP 链 + 窃取的 CONTEXT | | CET/影子栈 | 未处理 | 未处理 | 检测到 + `.pdata` 合成 | | 内存 | `VirtualAllocEx` (RWX) | `VirtualAllocEx` (RWX) | `NtCreateSection` + `NtMapViewOfSection` (RW→RWX) | | API 解析 | `GetProcAddress` | `GetProcAddress` / 静态 | PEB 遍历,编译时哈希 | | AMSI 绕过 | 无 | Donut 的(已补丁,已签名) | 零补丁上下文破坏(三层) | | ETW 绕过 | 无 | 无或 donut 的 | 通过间接系统调用的存根补丁 + TEB 制 | | 句柄发现 | `DuplicateHandle` (k32) | `DuplicateHandle` (k32) | 通过间接系统调用的 `NtDuplicateObject` | | IoCompletion | 来自 `WORKER_FACTORY_BASIC_INFORMATION` | 来自 `WORKER_FACTORY_BASIC_INFORMATION` | TP_POOL 扫描(WF 字段在现代 Windows 上始终为 0) | | CFG/XFG | 未处理 | 未处理 | V1 完全绕过;跳板的 CFG 目标注册 | | 目标选择 | 手动 PID | 手动 PID | 自动发现合适的目标 | | 输入格式 | 硬编码数组 | 硬编码 / 文件 | .bin、.exe、.dll(原生 + .NET,自动 donut) | | 构建器 | 无 | 无 | 带有嵌入 shellcode 的独立 exe 构建器 | | 交互模式 | 无 | 无 | 菜单驱动的构建/注入/帮助 | ## 系统调用引擎(可重用) 系统调用引擎独立于注入变体,可用于任何需要带有调用栈欺骗的间接系统调用的项目。它由三个组件组成: ### Tartarus Gate 从 ntdll 的内存系统调用存根中提取 SSN。如果存根被挂钩(来自 EDR 内联挂钩的入口处的 JMP/CALL),它会遍历相邻的存根并从干净的邻居推导出 SSN(相邻存根具有连续的 SSN)。适用于所有已知的用户模式挂钩框架。 ### 跳板管理器 扫描 ntdll 的 `.text` 节以查找 `syscall; ret` (0F 05 C3) gadget。每个 gadget 都经过质量评分: - **+50** 前面是 `mov eax, imm32`(确认的系统调用存根) - **+30** 靠近函数填充(CC/90 字节) - **+20** 在 `.text` 深处 - **-50** 靠近 JMP(可能的挂钩跳板) - **-30** 靠近 INT3 簇(调试器伪影) 每次调用都会选择一个随机的高质量 gadget —— 跳板地址每次调用都不同。 ### 调用上下文加固 使间接系统调用帧对 EDR 栈遍历器看起来合法: 1. 从系统 DLL 的 `.text` 节中提取真实返回地址 2. 从兄弟线程窃取完整的 `CONTEXT` 以实现寄存器一致性 3. 检测 Intel CET 并通过 `RtlAddFunctionTable` 合成 `.pdata` 条目 4. 注册 VEH 处理程序以在异常时实现完整的帧一致性 `DoSyscallSpoofed` ASM 存根使用提取的返回地址构建合成 RBP 链,因此栈遍历器会看到来自系统模块的合理调用链。 ## 构建 ### 要求 - Visual Studio 2019+,带 C++ 桌面工作负载(MSVC v142+) - Windows SDK 10.0.19041.0+ - 仅限 x64 - [donut](https://github.com/TheWover/donut)(用于构建器模式下的 PE 到 shellcode 转换) ### 编译 ``` build.bat ``` 对于带有控制台输出的调试构建: ``` build.bat debug ``` 或手动: ``` cl /nologo /c /EHsc /W3 /std:c++17 /O2 /GL /MT /I"include" /Fo"build\" src\*.cpp ml64 /nologo /c /Fo"build\syscall_stub.obj" src\syscall_stub.asm link /nologo build\*.obj kernel32.lib user32.lib advapi32.lib /OUT:build\typhon.exe /SUBSYSTEM:CONSOLE /LTCG /OPT:REF /OPT:ICF /DYNAMICBASE /NXCOMPAT /HIGHENTROPYVA ``` ## 项目结构 ``` ├── include/ │ ├── poolparty_types.h # Undocumented NT thread pool structures │ ├── handle_hijack.h # Thread pool handle discovery │ ├── memory_writer.h # Section-backed cross-process memory │ ├── variants.h # All 8 variant interfaces + dispatcher │ ├── amsi_etw.h # AMSI/ETW bypass interface │ ├── tartarus.h # Tartarus Gate SSN extraction │ ├── syscall_manager.h # Trampoline harvesting + rotation │ ├── call_context.h # Call-stack spoofing + CET │ ├── peb_lookup.h # PEB module/export resolution │ ├── hashing.h # Compile-time API name hashing │ ├── crypto.h # RC4 + SecureZero │ ├── prng.h # xorshift64 PRNG │ ├── nt_types.h # NT structure definitions │ └── config.h # Build configuration ├── src/ │ ├── main.cpp # Entry point, interactive menu, CLI, builder │ ├── variants.cpp # All 8 variant implementations │ ├── handle_hijack.cpp # Handle enumeration + TP_POOL IoCompletion scan │ ├── memory_writer.cpp # Section-backed memory injection │ ├── amsi_etw.cpp # AMSI/ETW bypass implementation │ ├── tartarus.cpp # SSN extraction engine │ ├── syscall_manager.cpp # Trampoline harvesting │ ├── call_context.cpp # Call-stack spoofing │ ├── peb_lookup.cpp # PEB walking │ ├── prng.cpp # PRNG implementation │ └── syscall_stub.asm # Indirect syscall ASM stubs (DoSyscallSpoofed) ├── build.bat # Build script ├── .gitignore ├── LICENSE └── README.md ``` ## 这避免了什么(检测面) 零使用: - `CreateRemoteThread` / `NtCreateThreadEx`(用于注入 —— V1 跳板在目标内部使用 `CreateThread`) - `NtQueueApcThread` / `NtQueueApcThreadEx` - `SetThreadContext` / `NtSetContextThread` - 用于批量 shellcode 写入的 `WriteProcessMemory` - 任何回调注册 API - 直接 ntdll 导入 - `GetProcAddress` / `GetModuleHandle` - Donut 的 AMSI 绕过(`AmsiScanBuffer` 补丁) 可能检测到它的因素: - 具有执行权限的跨进程 `NtMapViewOfSection` - `NtDuplicateObject` 跨进程句柄复制模式 - 带有 `WorkerFactoryThreadMinimum` 更改的 `NtSetInformationWorkerFactory` - ntdll `.text` 节上的内存页保护更改(V1 启动例程覆盖) - 针对已知良好代码区域的 I/O 完成回调指针验证 - amsi.dll 内部结构上的堆完整性检查 ## 已知限制 - **V7 (TP_DIRECT) 和 V3-V8 被 XFG 阻止**:在启用了 eXtended Flow Guard 的现代 Windows 10/11 上,基于 I/O 完成的变体会导致目标崩溃并显示 `STATUS_STACK_BUFFER_OVERRUN` (0xC0000409)。请改用 V1。 - **V1 是破坏性的**:覆盖 `TppWorkerThread`,永久破坏目标的线程池。最适合目标稳定性无关紧要的一次性执行。 - **IoCompletion 句柄发现**:`WORKER_FACTORY_BASIC_INFORMATION.CompletionPort` 字段在现代 Windows 上始终为 0。Typhon 通过扫描 TP_POOL 结构以查找匹配的句柄值来解决此问题(始终在 `TP_POOL+0x040` 处找到)。 - **WorkerFactoryThreadMinimum**:正确的 info class 值是 `4`,而不是许多来源中记录的 `1`。值 `1` 实际上是 `WorkerFactoryRetryTimeout`。 ## 参考资料 - [SafeBreach Labs — PoolParty](https://github.com/SafeBreach-Labs/PoolParty)(原始研究) - [The Pool Party You Will Never Forget](https://www.blackhat.com/eu-23/briefings/schedule/#the-pool-party-you-will-never-forget-new-process-injection-techniques-using-windows-thread-pools-35446) — Black Hat EU 2023, Alon Leviev - [Tartarus' Gate](https://github.com/trickster0/TartarusGate) — trickster0 - [SysWhispers](https://github.com/jthuraisamy/SysWhispers) — 间接系统调用概念 - [donut](https://github.com/TheWover/donut) — PE 到 shellcode 转换 ## ⚠️ 法律免责声明 **重要:使用前请阅读** 本软件仅供**教育和授权的安全研究目的**。下载、编译或使用本软件即表示您承认并同意以下内容: ### 仅限授权使用 - 本工具**专门**用于授权的渗透测试、红队演练、安全研究和教育目的 - 在使用本软件之前,您必须获得系统所有者的**明确书面许可** - 严禁在您不拥有或缺乏授权的系统上使用 - 本软件应仅在受控的隔离环境(实验室、沙箱、授权测试网络)中使用 ### 法律合规 - 用户**全权负责**确保遵守所有适用的地方、州、联邦和国际法律 - 作者按“原样”提供本软件,不提供任何保证或担保 - 作者**否认**对本软件的任何损害、法律后果或滥用承担所有责任 - 未经授权的使用可能违反计算机欺诈和滥用法律,包括但不限于: - 美国的《计算机欺诈和滥用法》(CFAA) - 英国的《计算机滥用法》 - 其他司法管辖区的类似网络犯罪立法 ### 道德准则 - 本应用工具应用于**改善安全**,而不是造成伤害 - 发现漏洞时应遵循负责任的披露做法 - 请勿将本软件用于恶意目的,包括但不限于: - 未经授权访问计算机系统 - 数据窃取或破坏 - 破坏服务 - 安装恶意软件或后门 ### 不支持恶意使用 - 作者不纵容、支持或协助任何非法或不道德的使用 - 与恶意使用相关的问题、拉取请求或讨论将被立即关闭并报告 - 如果发现广泛滥用的证据,本项目可能会被终止 ### 学术和研究使用 - 鼓励研究人员和教育工作者将此工具用于合法的安全研究 - 请在学术出版物中适当引用本作品 - 考虑通过负责任的披露向社区回馈改进 **使用本软件即表示您承认您已阅读、理解并同意受这些条款约束。如果您不同意这些条款,请勿下载、编译或使用本软件。**

🔐 Crypter.cloud & Crypter.shop

## 许可证 MIT 许可证 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 **注意**:MIT 许可证适用于代码本身。上面的法律免责声明管辖本软件的使用,并取代许可证中关于责任和授权使用的任何冲突条款。
标签:AMSI绕过, CET, Chrome扩展, Dionaea, ETW绕过, PEB, PoolParty, Shellcode执行, SSH蜜罐, TGT, 中高交互蜜罐, 云资产清单, 堆栈欺骗, 威胁检测, 恶意软件开发, 攻防演练, 线程池注入, 进程注入, 逃逸技术, 逆向工程, 邮件钓鱼, 间接系统调用