
Packs C# assemblies, PE files, or shellcode into encrypted Nim binaries with advanced evasion features including AMSI/ETW bypass, sandbox detection, and multiple injection techniques for red team operations.` → `将 C# 程序集、PE 文件或 shellcode 打包为加密的 Nim 二进制文件,并具备高级规避功能,包括 AMSI/ETW 绕过、沙箱检测以及多种注入技术,适用于红队行动。`
该工具是在 x33fcon 的一次演讲后公开的。它是我 2021 至 2024 年的私人主要编码项目,目前已被视为废弃,不再维护。不要指望我这边提供错误修复或功能更新。取而代之的是,RustPack 现在作为面向经过审查的红队和渗透测试人员的商业受控版本进行维护,它功能更丰富,而且 OPSec 安全性也高得多。
此 Packer 可用于将任何 C# Assembly、PE 文件或 Shellcode 打包到 Nim 二进制文件中。它将加密目标载荷,根据给定参数生成相应的 Nim 源代码,并将其编译为 Nim 二进制文件。
如果你更喜欢视频,可以在这里找到: https://youtu.be/0PwIn3Nxmgo
需要安装 Git 才能让 Nim/Nimble 正常工作。
已在 Nim 2.2.10 和 Nim Windows 下载页面链接的 MinGW-w64 GCC 11.1.0 捆绑包上测试。较新的 Nim 版本在 Windows 上默认使用较高的 PE 镜像基址,这会导致 -static 链接出现 relocation truncated to fit: R_X86_64_32S against .bss 错误;现在 packer 强制使用 -Wl,--image-base=0x10000 以保持静态构建可用,因此任何 MinGW-w64 11.x 构建都应该没问题。这里仅支持 x64 —— x86/--x86/--wow64 不受维护。
nim-2.2.10_x64.zipmingw64.7z(从 Nim Windows 安装页面链接)Expand-Archive —— 它会因为与 lib\system\ 目录的大小写冲突而静默丢弃 lib\system.nim)。Nim zip 附带了 bin\7zG.exe,你可以用它来解压 MinGW。<nim>\bin 和 <mingw64>\bin 添加到你的 %PATH% 中。注销/登录(或重启 shell)使更改生效。
已知可用的版本(截至 Nim 2.2.10):nimcrypto 0.6.0, docopt 0.7.1, ptr_math 0.3.0, winim 3.9.4, nim-strenc (HEAD — 该仓库没有打标签的发布版本).
如果你想在 Windows 上使用 LLVM 混淆器,请使用来自 denim 的内嵌修改版 denim。通过 denim\denim.exe setup 安装它。
例如,在 Kali / Debian 上。该打包器(packer)历史上要求 nim 1.6.8 + mingw-64 8.0.0-1;由于现在已内置静态链接 --image-base=0x10000 的变通方案,较新的工具链也应能工作。当前积极测试的是 Windows 构建——Linux 为尽力支持。```bash
apt-get install nim mingw-w64
nimble install [email protected] docopt ptr_math winim https://github.com/S3cur3Th1sSh1t/nim-strenc/
如果 `--hellsgate` 在新版 mingw-w64 上汇编失败,请降级到 `mingw-64=8.0.0-1`。
通过 `pip3 install donut-shellcode` 安装 donut。`denim` 无法在 Unix 上使用,因此无法在此处通过 LLVM 进行混淆。Callobfuscator 也是如此。
通过 `nim c -d:noRES NimSyscallLoader.nim` 编译 Packer。即可使用。如果不使用 `-d:noRES`,可能会遇到以下错误:```
/username/.nimble/pkgs/winim-3.7.1/winim/lib/winim64.res:(.rsrc+0x48): dangerous relocation: collect2: fatal error: ld terminated with signal 11 [Speicherzugriffsfehler]
compilation terminated.
需要构建一次(第一次会花费一些时间,后续构建将被缓存)。
sudo docker build . -t nimsyscallloader
然后使用以下命令运行打包器:
sudo docker run -v $(pwd):/shared nimsyscallloader <ARGUMENTS> --output=/shared/packed.exe
其中 $(pwd) 是主机系统上与容器共享的目录,即需要加密的文件所在目录,也是输出文件保存的目录。
如果你想通过 LimeLighter 使用代码签名证书,你还需要安装以下工具并将其加入 %PATH%: openssl -(适用于 Windows)例如从这里获取 osslsigncode - 例如从这里获取
我不会为这里使用的第三方工具提供支持。因此,如果你在使用这些工具时遇到问题,请在相应的仓库中提交 issue。当前使用的第三方工具:
你可以使用我预编译的二进制文件,当然也可以从上面的链接自行编译。
如果你更喜欢视频,可以在这里找到: https://youtu.be/UHaIgdzqHDA
我还应要求为部分功能添加了短视频:
Caro-Kann:
ThreadlessInject 功能:
Module Stomping 功能:
shellcodeURL 功能:
stegoFile 功能:
shellcodeFile 功能:
Ruy Lopez(适用于本地进程)
Shellcode 输出格式
Assembly 输出功能
我还制作了一个公开视频,展示了如何将 ThreadlessInject 技术自定义应用到除默认进程之外的其他进程:
https://youtu.be/BYuAUYQcI-E``` NimSyscall_Loader v 2.2
Usage: NimSyscall_Loader [--file=file_to_encrypt --key= --keyfile= --dnsKey --dnsdomain=<sub.example.com> --environmentalKey=<domain,username> --output= --large --metadata --shellcodeFile= --shellcodeURL= --dll --dllexportfunc= --dllhijack --noNimMain --clone= --dllProxy --cpl --xll --service --arguments=<Hardcoded_Arguments> --csharp --noAMSI --noETW --noOneShot --PatchAMSI --PatchETW --AMSIProviderPatch --AMSINtCreateSectionHook --sleep=<10> --sleep-in-between=<10> --shellcode --RWX --CallbackExecute --localCreateThread --QueueApc --noWait --COMVARETW --remoteinject --customprocess= --blockDLLs --spoofArgs= --parentProcess= --remoteprocess= --remotepatchAMSI --remotepatchETW --mapSection --unhook=<dllname1,dllname2> --reflective --obfuscate --macPayload --hide --APIhide --noArgs --peinject --peload --hellsgate --syswhispers --jump --sgn --replace --self-delete --sandbox=<check1,check2> --domain= --pump=<words,size> --obfuscatefunctions --debug --verbose --noDInvoke --x86 --wow64 --llvm --sign --signdomain= --noAntidebug --noDefaultSandBox --noAntiEmulate --sleepycrypt --fluctuate --interactivePS --psout --psobfs --pslyrics --csout --scout --sourceonly --jmpEntry --jmpEntryDLL=<example.dll> --jmpEntryFunc= --dripallocate --dripsleep= --stegofile= --ruy-lopez --threadless --threadlessDll=<dllname.dll> --threadlessFunc= --poolparty= --Caro-Kann --Caro-Kann-Thread --stomb --stombDll=<dllname.dll> --stombFunc= --stombFunc2= --restore] NimSyscall_Loader (-h | --help) NimSyscall_Loader --version
Options:
[general]