Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

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

Nemesis

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

查看仓库
4141个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Nemesis

明天将推送更新,更改许可证,并新增一些针对数据窃密者的防护手段。 网站 Discord Telegram 关注

我做了这个 Windows 工具,因为我厌倦了在恶意软件样本中看到一堆 jlaive 的 fork,却没有一个公开的工具能在运行时真正把它们拆解开来。

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

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

为什么取这个名字?

你可能想知道,为什么叫 Nemesis?

因为它代表了这工具的准确用途。Nemesis 是对手永恒的挑战或克星——这正是这个项目的理念。

在希腊神话中,Nemesis 是神圣报应之神,专门惩罚那些过于傲慢或自以为无法被触及的人。对于那些吹嘘自己“FUD”的恶意软件来说,这个名字再贴切不过了,你说呢?

为什么存在

我是一名恶意软件分析师。如果你干这行够久(对我来说是爱好),你会反复看到同样的加载器链条,尤其是自从 jlaive(也叫 crybat)流行起来,每个脚本小子都 fork 了一个。

这种模式愚蠢又简单,但处理起来烦人得很:

root@kitploit:~
something.bat  →  混淆后的 PowerShell  →  C# 存根  →  你的实际载荷

你双击一个看起来像乱码的 .bat。cmd 启动 PowerShell,传进去一堆垃圾文本。PowerShell 解密/解压一个 .NET 存根(AES、Gzip、Base64)。那个存根修补 AMSI + ETW,在内存中反射加载真正的 EXE/DLL,然后你就完事了——没有任何友好的东西以可用形式落到磁盘上。

这让我很烦。没有一款真正好用的公开工具专注于对抗这种特定链条:在 .NET payload 实际加载的地方挂钩,在进程自毁前转储它,捕获这些存根总是会做的 AMSI/ETW 修补。所以我构建了 Nemesis。

它不是银弹,也不会取代你的沙箱。但它能给你一个实实在在的东西,让你在测试机上对着可疑的 .bat 运行,并真正提取出工件。

实际功能

启动器 (Launcher.exe)

  • 以挂起方式创建目标进程(exe、bat、cmd 等)
  • 在主线程运行之前注入 Nemesis.dll
  • 等待 Nemesis 表示就绪
  • 恢复目标。如果目标产生了 PowerShell 子进程,启动器也可以注入它们

Nemesis DLL (Nemesis.dll)

  • 挂钩 jlaive 风格存根实际会命中的 CLR 加载路径:
    • nLoadImage
    • nLoadFile
    • AssemblyNative::LoadFromBuffer(通过 nLoadImage 解析出模式)
  • 当反射式 PE 出现在内存中 → 排队转储到 %TEMP%\Nemesis_dumps
  • 将活动 amsi.dll / ntdll.dll 的导出项与磁盘上的副本进行比较(捕获经典的 ret 修补:AmsiScanBuffer / EtwEventWrite)
  • 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 链条运行,在加密器实际加载载荷的地方捕获它,并记录沿途的规避技巧。

证明:

图片 图片 图片

构建

需要 Visual Studio 2022+,包含 C++ 桌面开发以及 MASM(x64)。

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

在真实目标上运行

这是实际使用场景:将其指向一个可疑的 .bat,看看会掉出什么:

root@kitploit:~
cd x64\Release
.\Launcher.exe "C:\path\to\suspicious.bat"

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

root@kitploit:~
.\Launcher.exe myapp.exe -- --some-flag

自定义 DLL 路径:

root@kitploit:~
.\Launcher.exe --dll C:\path\Nemesis.dll myapp.exe

产物:

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

Nemesis 是/不是什么

是:

  • 针对 jlaive 风格加密器(bat → ps1 → csharp 链条)的运行时分析助手
  • 当你在实验室虚拟机中有一个样本,想要内存转储 + AMSI/ETW 遥测时很有用
  • 开放给其他分析师使用、扩展、吐槽

不是:

  • EDR 替代品
  • 保证能捕获每种 fork 变体(混淆方式的改变、新的绕过方法,例如无补丁 AMSI/ETW,因为目前它还不针对这些,我计划将来改进,也许这会变成一个托管语言工具包)

注意

  • 目前 CLR ASM 钩子仅限 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]

待办

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

下载工具