Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Nemesis — .NET进程监控器,在本机层挂钩CLR,从内存转储反射程序集,并检查AMSI/ETW与磁盘二进制文件的完整性。 | Kitploit
工具/GitHubGitHub/zypherion-technologies/nemesis
防御工具动态分析 (沙盒)内存取证逆向工程恶意软件分析
GitHubzypherion-technologies/nemesis

Nemesis

.NET进程监控器,在本机层挂钩CLR,从内存转储反射程序集,并检查AMSI/ETW与磁盘二进制文件的完整性。

查看仓库
4143211天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Nemesis

Website Discord Telegram X

我做的 Windows 工具,因为我受够了在恶意软件样本里盯着 jlaive 的各种 fork,却没有任何公开工具能在运行时真正把它们拆开。

简而言之,它是一个 .NET 进程监控器,在原生层 hook CLR,跟踪反射式程序集加载,并自动直接从内存中转储 PE。它还会对照磁盘上的原始二进制文件检查 AMSI 和 ETW 的完整性,同时检测诸如 clr.dll 字符串补丁和直接使用 LoadFromBuffer 等绕过技术。

在哪里找样本?我推荐看看 https://tria.ge(不是广告),你可以下载任何你想要的样本,并按家族进行筛选

为什么叫这个名字?

你可能会想,为什么叫 nemesis?

因为它代表了这款工具的确切用途。nemesis 是指对对手构成持续挑战或导致其覆灭的存在,这正是这个项目背后的理念。

在希腊神话中,nemesis 是神圣报应的化身,是向任何过于傲慢或自以为不可触碰之人施以惩罚的存在。如果你问我,对于那些吹嘘自己是“FUD”的恶意软件来说,这名字有点太直白了。

为什么会有这个工具

我是一名恶意软件分析师。如果你做这份工作(对我来说是爱好)足够久,你就会开始一遍又一遍地看到相同的加载器链,尤其是自从 jlaive(也叫 crybat)爆火之后,每个脚本小子都在 fork 它。

这个模式蠢得简单,但处理起来烦得要命:

something.bat  →  obfuscated powershell  →  csharp stub  →  your actual payload

你双击一个看起来像乱码的 .bat。cmd 启动 powershell,带着一大堆垃圾。powershell 解密/解压一个 .NET stub(aes、gzip、base64)。那个 stub 打补丁绕过 amsi + etw,在内存中反射式加载真正的 exe/dll,然后你就完了——没有任何有用的东西会以可用的形式落到磁盘上。

这让我很烦。真的没有一个好的公开工具专门针对这条链——在 .NET payload 真正出现的地方进行 hook,在进程自我毁灭之前把它转储出来,捕获这些 stub 总是做的 amsi/etw 补丁。所以我做了 nemesis。

不是银弹。不会取代你的沙箱。但它能让你在测试机上针对可疑的 .bat 真正跑点东西,并实际提取出工件。

它实际做什么

启动器(Launcher.exe)

  • 以挂起状态创建你的目标(exe、bat、cmd,随便什么)
  • 在主线程运行之前注入 Nemesis.dll
  • 等待 nemesis 报告就绪
  • 恢复运行。如果目标生成了 powershell 子进程,启动器也可以注入它们

nemesis dll(Nemesis.dll)

  • hook jlaive 风格 stub 实际会命中的 clr 加载路径:
    • nLoadImage
    • nLoadFile
    • AssemblyNative::LoadFromBuffer(模式从 nLoadImage 解析)
  • 当内存中出现反射式 PE 时 -> 排队转储到 %TEMP%\Nemesis_dumps
  • 将实时的 amsi.dll / ntdll.dll 导出与磁盘上的副本进行比较(捕获经典的 AmsiScanBuffer / EtwEventWrite 上的 ret 补丁)
  • amsi 检查在 clr 加载时还会查看 clr 的 .rdata 字符串(有些绕过会改为补丁这些,关于这个有一篇很棒的 vxug 论文,叫:2024-11-21 - New AMSI Bypss Technique Modifying CLRDLL in Memory.pdf)
  • 输出到控制台(彩色)+ %TEMP%\Nemesis.log,它还启用了 ENABLE_VIRTUAL_TERMINAL_PROCESSING,以避免控制台变得……怎么说呢,奇怪 :D

基本上就是:让 bat 链跑起来,在 crypter 实际加载 payload 的地方捕获它,并沿途记录规避技巧。

证明:

image image image

构建

需要 Visual Studio 2022+,带 C++ 桌面开发 + MASM(x64)。

打开 Nemesis.slnx,选择 Release | x64,构建解决方案。

在真实目标上运行

这才是实际用例——把它指向一个可疑的 bat,看看会掉出什么:

cd x64\Release
.\Launcher.exe "C:\path\to\suspicious.bat"

-- 之后的额外参数会传递给目标:

.\Launcher.exe myapp.exe -- --some-flag

自定义 dll 路径:

.\Launcher.exe --dll C:\path\Nemesis.dll myapp.exe

工件:

  • 日志 → %TEMP%\Nemesis.log
  • 转储的 PE → %TEMP%\Nemesis_dumps

nemesis 是什么 / 不是什么

是:

  • 针对 jlaive 风格 crypter(bat → ps1 → csharp 链)的运行时分析辅助工具
  • 在实验虚拟机上,当你有一个样本并想要内存转储 + amsi/etw 遥测时很有用
  • 开放给其他分析师使用、扩展、吐槽

不是:

  • EDR 的替代品
  • 保证能捕获每一个 fork 变种(混淆变化、新的绕过,例如无补丁的 amsi/etw,因为目前它不是为此设计的,我计划将来改变这一点 也许这会演变成某种托管语言工具包)

备注

  • 目前 CLR asm detour 仅支持 x64
  • cmd.exe 宿主通常没有 CLR,nemesis 反正会发出就绪信号,所以启动器不会挂起,真正的工作在 powershell/dotnet 出现时才发生
  • 重新构建失败并报 LNK1104?还有东西加载着 nemesis.dll,杀掉目标进程再重新构建
  • 构建期间 pwsh.exe 的 vcpkg 噪音是无害的,忽略它

延伸阅读(jlaive 生态系统)

如果你想了解你在对抗什么:

  • Trend Micro 关于 BatCloak / Jlaive — bat → ps1 → csharp 千层糕
  • Fortinet 关于 ScrubCrypt — jlaive 烦人的继任者,如果你好奇 scrubcrypt 有什么小区别,那就是他们在 .bat 里用管道符把命令传出去,效果还挺好……
  • Unprotect.it — ScrubCrypt — 技术拆解
  • https://github.com/backdoorskid/ClrAmsiScanPatcher - 找到前面提到的 .NET 字符串,我推荐读一下那个 .pdf 文件 :)

免责声明

使用 nemesis 即表示你接受此声明。 它按原样提供,不附带任何担保——你承担所有风险。

你独自负责合法、授权的使用(实验虚拟机、自有系统、明确许可)。在法律允许的最大范围内,作者和 zypherion.tech 免除一切责任,对因使用或误用而产生的任何损害、损失或法律索赔概不负责。完整条款见 LICENSE。

许可证

非商业 / 个人 / 研究 / 爱好用途 → PolyForm Noncommercial 1.0.0

商业用途(出售它、付费产品、SaaS、客户工作等)→ 你需要单独的许可证。PolyForm Noncommercial 不涵盖这些。

如果你想要商业许可证,联系我:

[[email protected] / @wd6g(discord) / telegram: @ZypherionTechnologies]

todo

快速备注:我得研究一下 compilemethod 并修复它,目前它并非必需,因为 crypter 通常根本不用它……因为它们必须使用 asm.load(...) 这也提醒我得检查 rdata 字符串,因为遗憾的是我还没好好测试过…… 请不要提交愚蠢代码的 PR,你不能正常 hook n(Native) 后端,例如 nLoadImage,你必须保留寄存器,这很烦,所以我们用 asm。

下载工具