文章总结: 该文档介绍了一个名为tabby的极简Cshellcode框架,专为Windowsx64平台设计但完全在Linux环境下编译。框架采用位置无关代码技术,生成无PE头文件的原始二进制文件,可直接进程注入。核心特性包括用C语言替代汇编编写、运行时API解析、间接系统调用规避EDR检测,并强调其教学用途而非实际攻击工具。 综合评分: 73 文章分类: 恶意软件,二进制安全,红队,内网渗透,安全工具
一个极简的、位置无关的 C shellcode 框架,适用于 Windows x64 平台。完全在 Linux 上编译
Ots安全
2026年6月14日 19:25 广东
在小说阅读器读本章
去阅读
威胁简报
恶意软件
漏洞攻击
完全在 Linux 上编译mingw-w64,nasm输出是一个扁平的原始二进制文件(shellcode.bin),没有 PE 头文件,没有导入语句,没有 CRT 代码——可以直接注入到任何进程中。
tabby – 概念
一个位置无关的 C shellcode 框架,完全在 Linux 上编译,并生成扁平的原始字节,可以注入到任何 Windows x64 进程中 – 内置了可规避 EDR 的间接 NT 系统调用。
构成它的四个核心理念:
用 C 语言编写 shellcode,而不是汇编语言。——你只需要编写一个普通的sc_main(PVOID base)函数。框架会处理 PIC(进程间通信)、基地址恢复、API 解析和系统调用分发。这asm仅限于由宏生成的20行入口存根和3指令系统调用存根。
没有 PE 头部,没有 IAT,没有 CRT。-输出是一个扁平的.binblob,起始字节为,偏移量 0为。没有导入 – 每个 Windows API 都在运行时通过 FNV-1a 哈希函数以walk + walk 的方式解析。没有-在堆栈上构建字符串,因此它们永远不会出现在._start0PEBEATlibcSTACKSTR.rdata
间接系统调用在调用栈上看起来干净。——每个存根不会自行执行系统调用(这样会将 shellcode 作为返回地址,从而被感知调用栈的 EDR 标记出来),而是跳转到自身存根中已存在的系统调用;ret gadget ntdll,绕过了 EDR 的内联钩子。内核会在存根内部看到返回地址ntdll。
仅限 Linux 的工具链。- + mingw-w64+nasm自定义链接脚本 + objcopy。构建时无需任何 Windows 依赖。
该框架足够小,可以一次性从头到尾阅读(几行~500C 代码 +~80几行 NASM 代码),并且每个组件都针对一个特定的检测问题:
- entry.asm- shellcode 如何找到自身的基地址?(RDIP)
- resolve.c- 如何在不使用 IAT 的情况下调用 Windows API?(PEB + EAT 遍历)
- pic.h – 如何避免字符串 IOC?(FNV-1a 哈希 + STACKSTR)
- stubs.asm- 如何绕过 ntdll 上的 EDR 钩子?(间接系统调用)
- syscall.c- 如何在不硬编码的情况下获取 SSN?(运行时提取)
- flat.ld – 如何从普通工具链生成原始字节?(链接器脚本 + objcopy)
其他项目要么将这些机制隐藏在代码生成器背后(例如 SysWhispers),要么规模过于庞大而难以研究(例如 Cobalt Strike)。tabby 是一个最小可行框架,它使每项技术都可进行检查。
它不是什么
它并非C2或后渗透框架,
也不是现有PE文件的加壳器或加密器,
更不是一个成熟的攻击工具——它是一个用于“面向道德黑客的恶意软件开发”培训的教学框架。README文件中详细记录了每个设计决策的原因(项目结构原理表),因为我们的目标是让读者理解这些选择,而不仅仅是运行二进制文件。
核心概念
在使用此工具之前,您需要了解整个框架所基于的四个基本概念。每个概念都直接针对一个特定的检测问题。
更多了解查看项目:
https://github.com/cocomelonc/tabby
END
公众号内容都来自国外平台-所有文章可通过点击阅读原文到达原文地址或参考地址
排版 编辑 | Ots 小安
采集 翻译 | Ots Ai牛马
公众号 | AnQuan7 (Ots安全)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Ots安全 《一个极简的、位置无关的 C shellcode 框架,适用于 Windows x64 平台。完全在 Linux 上编译》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论