litemars/hARMful

GitHub: litemars/hARMful

一个演示EDR规避技术的Linux勒索软件研究框架,通过io_uring和直接系统调用绕过安全软件监控。

Stars: 0 | Forks: 0

# hARMful - 勒索软件研究工具 ``` ██╗ ██╗ █████╗ ██████╗ ███╗ ███╗███████╗██╗ ██╗██╗ ██║ ██║██╔══██╗██╔══██╗████╗ ████║██╔════╝██║ ██║██║ ███████║███████║██████╔╝██╔████╔██║█████╗ ██║ ██║██║ ██╔══██║██╔══██║██╔══██╗██║╚██╔╝██║██╔══╝ ██║ ██║██║ ██║ ██║██║ ██║██║ ██║██║ ╚═╝ ██║██║ ╚██████╔╝███████╗ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚══════╝ ``` 一个 **Linux 勒索软件框架**,用于演示 EDR 规避和防御性安全目的。 ## 概述 hARMful 是一个安全研究项目,旨在探索 Linux 系统上的文件加密、进程规避和底层系统交互。该项目使用直接系统调用、io_uring 异步 I/O 和混合方法实现了多种加密策略,并结合了检测规避技术,用于分析恶意软件行为和防御机制。 **⚠️ 仅供教育用途**:本项目仅适用于受控环境下的授权安全研究、渗透测试和防御性分析。 ## 主要功能 - **多架构支持**:在 ARM64 和 x86-64 Linux 系统上无缝执行,支持特定架构的系统调用处理 - **六种加密方法**: - 基于直接系统调用的加密 - io_uring 异步 I/O 加密 - 部分/策略性文件加密 - 内存映射页加密 - 结合直接系统调用的 io_uring - 混合 io_uring 部分加密 - **高级系统调用操作**:绕过 libc 包装器的直接系统调用调用 - **io_uring 集成**:通过 Linux 内核的 io_uring API 进行高性能异步 I/O 操作 - **ChaCha20 和 XOR 加密**:多种密码实现用于数据保护 - **EDR 规避检测**:虚拟化检测、调试工具识别、安全产品扫描 - **多线程处理**:使用可配置的工作线程进行并发文件加密 ## 技术细节 ### 加密方法 1. **直接系统调用** (`METHOD_DIRECT_SYSCALL`):使用直接 Linux 系统调用(read/write)的传统文件 I/O 2. **io_uring** (`METHOD_IO_URING`):使用 liburing 库的异步 I/O 3. **部分加密** (`METHOD_PARTIAL`):对文件块(开头/中间/结尾)进行策略性加密 4. **内存映射页** (`METHOD_MMAP_PAGES`):基于 mmap 的加密,用于高效的内存处理 5. **io_uring 直接系统调用** (`METHOD_IO_URING_SYSCALL`):通过原始系统调用进行 io_uring 操作 6. **混合 io_uring 部分** (`METHOD_IO_URING_SYSCALL_HYBRID`):优化性能的组合方法 ### 架构支持 **ARM64 系统调用号**: - read: 63, write: 64, openat: 56, close: 57, lseek: 62 - mmap: 222, munmap: 215, mprotect: 226, fstat: 80 - io_uring_setup: 425, io_uring_enter: 426 **x86-64 系统调用号**: - read: 0, write: 1, openat: 257, close: 3, lseek: 8 - mmap: 9, munmap: 11, mprotect: 10, fstat: 5 - io_uring_setup: 425, io_uring_enter: 426 ## 构建 ### 前置条件 - 支持 io_uring 的 Linux 内核 (5.1+) - 支持 ARM64/x86-64 交叉编译的 GCC 或 Clang - liburing 开发头文件(可选,用于 io_uring 方法) - GNU Make ### 构建命令 ``` # 为原生架构构建 make # 清理构建产物 make clean # 查看所有可用 target make help ``` 构建系统将二进制文件编译到 `build/` 目录中,并按特定架构进行组织。 ## 用法 ``` ./hARMful -m (-t ) ./decrypt_tool ``` ### 选项 - `-m `:加密方法 (1-6) - `1`:直接系统调用(默认) - `2`:io_uring - `3`:部分加密 - `4`:内存映射页 - `5`:io_uring 直接系统调用 - `6`:io_uring 混合部分 - `-t `:工作线程数 (1-8, 默认: 4) - `-h`:显示帮助信息 ### 示例用法 ``` # 使用 4 个线程对 /tmp/test 中的文件进行 partial encryption ./hARMful -m 3 -t 4 /tmp/test_files ``` ## 限制 - 仅为研究目的设计 - 无持久化机制(超出测试范围) ## 许可证 本项目仅供教育和授权安全研究目的使用。未经授权访问计算机系统是非法的。用户对合法使用承担全部责任。 ## 贡献 欢迎在授权研究背景下对防御性改进和检测增强做出贡献。 ## 参考资料 - [Linux io_uring 文档](https://kernel.dk/io_uring.pdf) - [ARM64 SYSCALL ABI](https://github.com/ARM-software/abi-aa/releases) - [x86-64 System V ABI](https://refspecs.linuxfoundation.org/elf/x86-64-abi-0.99.pdf) - [ChaCha20 密码规范](https://tools.ietf.org/html/rfc7539) ## 免责声明 本软件按“原样”提供,用于教育目的。作者不对滥用、未经授权的访问或违反适用法律的行为负责。在进行安全研究之前,请务必获得适当的授权。
标签:ARM64, C/C++, DAST, DNS 反向解析, DNS 解析, Hakrawler, io_uring, TGT, x86-64, 事务性I/O, 免杀技术, 内存映射, 勒索软件, 客户端加密, 异步I/O, 恶意活动检测, 恶意软件分析, 攻防演练, 教育用途, 数据展示, 文件加密, 暴力破解检测, 红队, 高危端口监控