[工具发布]多态shellcode生成0/62检测率

admin 2026-06-07 23:44:00 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了一款多态shellcode生成工具fritter,通过随机化技术有效规避杀毒软件检测,对比传统Donut工具检测率从18/52降至0/62。文章详细展示了工具生成过程、内存特征对比及实测数据,提供GUI和命令行版本工具下载,强调仅限合法授权安全研究使用。 综合评分: 72 文章分类: 红队,免杀,恶意软件,安全工具,二进制安全


cover_image

[工具发布]多态shellcode生成0/62检测率

原创

陆安予 陆安予

白帽子安全笔记2.0

2026年5月16日 18:12 江苏

在小说阅读器读本章

去阅读

[工具发布]多态shellcode生成0/62检测率

采用多态shellcode将实现内存完全无法检测,绕过基于固定特征的检测。

一、背景

众所周知,Donut生成的shellcode非常容易被检测,一个精准检测规则如下:

meta("shellcode", "Donut");
function detect() {
    bDetected = false;
    // https://github.com/TheWover/donut/blob/dafea1702ce2e71d5139c4d583627f7ee740f3ae/donut.c#L1235
    var bInstCall = Binary.readByte(0);
    if (bInstCall != 0xE8) {
        return result();
    }
    if (Binary.readWord(1) != Binary.readWord(5)) {
        return result();
    }
    var callDest = Binary.readDword(1)
    // https://github.com/TheWover/donut/blob/dafea1702ce2e71d5139c4d583627f7ee740f3ae/donut.c#L1239
    var popECXOffset = callDest + 5; // 1 byte for E8 (call opcode) and 4 bytes for destination offset
    if (Binary.readByte(popECXOffset) != 0x59) {
        return result();
    }
    bDetected = true;
    var archDetectionOffset = popECXOffset + 1;
    var archDetectBytes = Binary.readDword(archDetectionOffset) & 0x00ffffff;
    switch (archDetectBytes) {
        // https://github.com/TheWover/donut/blob/dafea1702ce2e71d5139c4d583627f7ee740f3ae/donut.c#L1242-L1248
        case 0x52515a:
            sOptions = "x86";
            break;
        // https://github.com/TheWover/donut/blob/dafea1702ce2e71d5139c4d583627f7ee740f3ae/donut.c#L1270-L1273
        case 0x48c031:
            sOptions = "x86 + AMD64";
            break;
        default:
            sOptions = "AMD64";
    }
    return result();
}

由于Donut每次生成的shellcode特征固定,比如开头必须是e8(CALL),然后连续2个相同数据79 3B 25 01

意味着内存扫描一看是donut特征,将立即触发报警,直接GG。

donut生成的shellcode固定特征

现在,使用我最近开发的donut-gui生成fscan的shellcode测试下:

donut-gui

接下来,找一个环境验证下这个特征:

donut在内存中的特征

本以为火绒有donut特征,结果发现没加…

那么就测试下其它的,直接丢到virustotal[1]:

donut生成的shellcode检测率

如此高的检测率,符合预期。

二、多态shellcode超越donut

使用更先进的多态shellcode生成,它将在donut上采用更高级的规避技术。

fritter-gui生成shellcode

每次生成的shellcode都不同。每次工具构建都不同。而且载荷更小,比donut小4倍。

每次生成都不相同,无特征可循

接下来直接丢到virustotal[2],直接秒杀全球杀软,这还是未混淆的fscan。

多态shellcode秒杀全场

同样的测试下运行,十分流畅。

fritter在内存中的特征


三、总结

使用多态shellcode工具将大幅改进donut特性,毫无疑问是红队人员的必备利器。这里我简要对比下:

| 序号 | donut | fritter | | — | — | — | | 特征 | 特征固定 | 随机 | | 大小 | 47.9M | 14M | | 检测率 | 18/52 | 0/62 |

本文所有涉及工具均公开,清单如下,将放在武器库中供红队人员测试研究:

| 序号 | 工具名 | 用途 | | — | — | — | | 1 | donut-gui.exe | donut的gui版本 | | 2 | fritter.exe | 命令行版本 | | 3 | fritter-gui.exe | fritter的gui版本 | | 4 | fscan.exe | 未混淆的fscan | | 5 | fscan-ob.exe | 混淆处理后的fscan,直接使用 | | 6 | fscan_donut.bin | fcan的shellcode | | 7 | fscan_fritter.bin | fcan的shellcode | | 8 | shellcodeTester.exe | 加载shellcode |


四、最近视频

另外,最近也更新了许多视频,原创文章更新不会那么频繁,但有原创时会发布。

  • • 危险的PDF文件,Adobe高危漏洞[3]
  • • 无特征载荷绕过全球杀毒软件[4]
  • • shellcode/汇编/加载器是什么?怎么用?[5]

五、免责声明

本文涉及方案仅限合法授权的安全研究、渗透测试用途,使用者须确保符合《网络安全法》及相关法规。具体条款如下:

  • • 仅可用于已获得书面授权的目标系统测试;
  • • 遵守法律法规,不得用于侵犯他人隐私或数据窃取;

本人不承担因用户滥用本软件导致的任何后果。使用即视为同意并接受上述条款。


引用链接

[1] : https://www.virustotal.com/gui/file/d8167724cd7f018fd412b2c11bbcf72d5b801ea6a9111d858a84d75069243578?nocache=1 [2] : https://www.virustotal.com/gui/file/323b52fd9f771f8cac150d51c118dfe6788ad7ba21c4202ad03a3b3e8e18c201?nocache=1 [3] 危险的PDF文件,Adobe高危漏洞: https://v.douyin.com/Fj072JVEWGE [4] 无特征载荷绕过全球杀毒软件: https://www.bilibili.com/video/BV19A5G6fEQo [5] shellcode/汇编/加载器是什么?怎么用?: https://www.bilibili.com/video/BV1RU5A6TENK/


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:白帽子安全笔记2.0 陆安予 陆安予《[工具发布]多态shellcode生成0/62检测率》

评论:0   参与:  0