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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Shhhloader — 系统调用Shellcode加载器(正在开发中) | Kitploit
工具/GitHubGitHub/icyguider/shhhloader
Shellcode
GitHubicyguider/shhhloader

Shhhloader

系统调用Shellcode加载器(正在开发中)

查看仓库
1.3k1982年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Shhhloader

Shhhloader 是一个仍在开发中的 Shellcode 加载器。它接收原始 Shellcode 作为输入,并编译一个 C++ 存根,该存根会执行一系列不同的操作以尝试绕过 AV/EDR。附带的 Python 构建器可以在任何安装了 Mingw-w64 的 Linux 系统上运行。

2024年1月25日编辑:Shhhloader 现已支持 PoolParty 变体 7!还添加了一个选项,可将 PoolParty 与模块占用(Module Stomping)相结合,以防止执行的 Shellcode 驻留在未备份内存中。以下视频演示了这种针对 Defender ATP 的新注入方法:

观看视频
root@kitploit:~
┳┻|
┻┳|
┳┻|
┻┳|
┳┻| _
┻┳| •.•)  - 嘘,AV 可能听到我们了! 
┳┻|⊂ノ   
┻┳|
用法: Shhhloader.py [-h] [-p explorer.exe] [-m QueueUserAPC] [-u] [-w] [-nr] [-ns] [-l] [-v] [-sc GetSyscallStub] [-d] [-dp apphelp.dll] [-s domain]
                     [-sa testlab.local] [-o a.exe] [-pp explorer.exe] [-ppv] [-np] [-cp] [-td ntdll.dll] [-ef NtClose]
                     file

ICYGUIDER 的自定义系统调用 Shellcode 加载器

位置参数:
  file                  包含原始 Shellcode 的文件

选项:
  -h, --help            显示此帮助信息并退出
  -p explorer.exe, --process explorer.exe
                        要注入的进程(默认: explorer.exe)
  -m QueueUserAPC, --method QueueUserAPC
                        Shellcode 执行方法(选项: PoolPartyModuleStomping, PoolParty, ThreadlessInject, ModuleStomping, QueueUserAPC,
                        ProcessHollow, EnumDisplayMonitors, RemoteThreadContext, RemoteThreadSuspended, CurrentThread)(默认: QueueUserAPC)
  -u, --unhook          在当前进程中取消挂钩 NTDLL
  -w, --word-encode     将 Shellcode 以英文单词数组形式保存在存根中
  -nr, --no-randomize   禁用系统调用名称随机化
  -ns, --no-sandbox     禁用沙箱检测
  -l, --llvm-obfuscator 使用 Obfuscator-LLVM 编译存根
  -v, --verbose         启用执行时的调试消息
  -sc GetSyscallStub, --syscall GetSyscallStub
                        系统调用执行方法(选项: SysWhispers2, SysWhispers3, GetSyscallStub, None)(默认: GetSyscallStub)
  -d, --dll             生成 DLL 而不是 EXE
  -dp apphelp.dll, --dll-proxy apphelp.dll
                        使用提供的合法 DLL 创建代理 DLL(文件必须存在于当前目录)
  -s domain, --sandbox domain
                        沙箱逃避技术(选项: sleep, domain, hostname, username, dll)(默认: sleep)
  -sa testlab.local, --sandbox-arg testlab.local
                        沙箱逃避技术的参数(例如: WIN10CO-DESKTOP, testlab.local)
  -o a.exe, --outfile a.exe
                        编译文件的名称

PPID 欺骗:
  -pp explorer.exe, --ppid explorer.exe
                        用于 PPID 欺骗的父进程(默认: explorer.exe)
  -ppv, --ppid-priv     启用对特权父进程的欺骗(默认禁用)
  -np, --no-ppid-spoof  禁用 PPID 欺骗

ThreadlessInject:
  -cp, --create-process 创建进程而不是注入到现有进程
  -td ntdll.dll, --target-dll ntdll.dll
                        包含要覆盖的导出函数的目标 DLL
  -ef NtClose, --export-function NtClose
                        要覆盖的导出函数

特性:

  • 10 种不同的 Shellcode 执行方法(PoolParty, PoolPartyModuleStomping, ThreadlessInject, ModuleStomping, QueueUserAPC, ProcessHollow, EnumDisplayMonitors, RemoteThreadContext, RemoteThreadSuspended, CurrentThread)
  • PPID 欺骗
  • 阻止第三方 DLL
  • 通过 KnownDLLs 取消挂钩 NTDLL
  • SysWhispers2、SysWhispers3 和 GetSyscallStub
  • SW2 和 SW3 的 API 哈希
  • 编译时字符串加密
  • 支持 Obfuscator-LLVM (OLLVM)
  • 自动生成 DLL 代理
  • Havoc C2 框架集成
  • 系统调用名称随机化
  • 以英文单词数组形式存储 Shellcode
  • 动态密钥生成下的 XOR 编码
  • 通过已加载 DLL、域、用户、主机名和系统枚举进行沙箱逃避

以下是使用 ThreadlessInject 方法将 Havoc beacon 注入 IE 而不产生任何警报及最小事件记录(针对 Microsoft Defender for Endpoint (MDE) EDR)的 PoC 视频(录制于 2023年4月3日):

观看视频

以下视频演示了通过 DLL 代理执行的模块占用(Module Stomping)注入技术(录制于 2022年8月9日):

观看视频

Shhhloader 也已通过 @jakobfriedl 的模块集成到 Havoc C2 框架 中。以下视频演示了该模块:

观看视频

已知问题/说明:

  • PoolParty 注入方法目前配置为注入到现有进程中。因此,必须使用 -p 标志提供你已知或怀疑已在目标系统上运行的进程名称。
  • PoolParty 注入方法不适用于较大的 Shellcode 文件,例如 sliver(约 11MB)。
  • ThreadlessInject Shellcode 执行方法目前必须注入到非挂起的进程中。如果提供了 -cp 选项,此操作将自动完成。希望很快能找到使其与挂起进程一起工作的方法。
  • Havoc C2 模块在指定监听器而不是原始 Shellcode 文件时当前会挂起。希望这个问题能尽快修复。
  • Windows Defender 会检测本工具生成的大多数文件,因此请不要提交“检测到!!!”的问题。请尝试使用新增的选项和功能,直到找到可行的组合;它们被添加是有原因的 :)。在内存中执行生成的文件也是规避这些检测的好方法。
  • Obfuscator-LLVM (OLLVM) 与 SW2 和 SW3 不兼容,因为 clang 处理内联汇编的方式不同。目前没有计划使其兼容;已添加检查以防止用户尝试同时使用这些功能。
  • 我的代码中有大量错误。请在用于重要场合之前提前测试所有功能,并在提交问题时提供尽可能多的信息。(谢谢!)

计划更新:

  • 硬件断点(HWBP)系统调用选项
  • 使用系统调用而非标准 WinAPI 函数创建进程
  • 将 ThreadlessInject 与其他 Shellcode 注入技术集成(例如 ModuleStomping)
  • 重构代码以使其更具模块化和可读性
  • 修复 Havoc C2 模块中的错误
  • 通过更好地学习编程来修复无数错误 ;)

可选: 要使用 Obfuscator-LLVM 标志,你必须在系统上安装它以及 wclang。这可能会有些麻烦,但只要有毅力应该可以完成。以下是我在 Kali Linux 系统上安装 OLLVM llvm-13.x 分支所使用的步骤:

查看详情
root@kitploit:~
# 克隆并运行 CMake
git clone -b llvm-13.x https://github.com/heroims/obfuscator.git
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_NEW_PASS_MANAGER=OFF ../obfuscator/llvm/

# 配置 CMake 并编译 OLLVM
export clang_build_dir=$(cd ../; pwd)/obfuscator/clang
sed -i 's/LLVM_TOOL_CLANG_BUILD:BOOL=OFF/LLVM_TOOL_CLANG_BUILD:BOOL=ON/g' CMakeCache.txt
sed -i "s|LLVM_EXTERNAL_CLANG_SOURCE_DIR:PATH=|LLVM_EXTERNAL_CLANG_SOURCE_DIR:PATH=$clang_build_dir|g" CMakeCache.txt
make -j7

# 编译完成后,备份原始 clang 二进制文件
mv /usr/bin/clang /usr/bin/clang13.0.1
mv /usr/bin/clang++ /usr/bin/clang++13.0.1

# 然后在 OLLVM build/bin 目录中,复制新构建的 clang 二进制文件
cp bin/clang /usr/bin/clang
cp bin/clang++ /usr/bin/clang++

# 然后安装 wclang
cd ..
git clone https://github.com/tpoechtrager/wclang.git
cd wclang/
cmake -DCMAKE_INSTALL_PREFIX=_prefix_ .
make
make install
export wclang_path=$(pwd)/_prefix_/bin
echo "export PATH=$wclang_path:$PATH" >> ~/.bashrc
export PATH=$wclang_path:$PATH

# 然后备份原始 lib 文件
cp -R /lib/llvm-13/lib/clang/13.0.1/include/ /lib/llvm-13/lib/clang/13.0.1/include_backup/

# 最后在 OLLVM build/bin/lib/clang/13.0.1/ 目录中,复制 include 文件夹
cd ../build/lib/clang/13.0.1/
cp -R include/ /lib/llvm-13/lib/clang/13.0.1/

可能有更好的方法,但这对我是有效的。如果遇到问题,请继续尝试,并确保可以运行 x86_64-w64-mingw32-clang++ -v,且输出中包含 "Obfuscator-LLVM" 或 "heroims"。遗憾的是,我没有时间协助需要更多帮助的个人,但你可以阅读我在 Nimcrypt2 仓库中的 这个 issue,那里有一些用户设法在他们的系统上实现了这一点。

致敬与致谢:

  • @Jackson_T 的优秀项目 SysWhispers:https://github.com/jthuraisamy/SysWhispers
  • @FalconForceTeam 的支持 SysWhispers2 的系统调用生成工具:https://github.com/FalconForceTeam/SysWhispers2BOF
  • @snovvcrash 的 DInjector 项目,我将其用作许多包含的注入技术的模板:https://github.com/snovvcrash/DInjector
  • @Cerbersec 的 Ares 项目,其代码用于 PPID 欺骗、阻止第三方 DLL 和沙箱逃避:https://github.com/Cerbersec/Ares
  • @spotheplanet 关于在运行时从磁盘检索 ntdll 系统调用存根的博文:https://www.ired.team/offensive-security/defense-evasion/retrieving-ntdll-syscall-stubs-at-run-time
  • @_RastaMouse 的模块占用代码和文章,我将其移植到了 C++:https://offensivedefence.co.uk/posts/module-stomping/
  • @s4ntiago_p 的 NanoDump 项目,特别是 randomize_sw2_seed.py 脚本:https://github.com/helpsystems/nanodump
  • @skadro-official 的 skCrypter 项目,本工具利用其进行编译时字符串加密:https://github.com/skadro-official/skCrypter
  • @_EthicalChaos_ 的 ThreadlessInject 项目:https://github.com/CCob/ThreadlessInject
  • 0xLegacyy 的 ThreadlessInject BOF 版本:https://github.com/iilegacyyii/ThreadlessInject-BOF
下载工具
  • @D1rkMtr 的 ntdll 解除挂钩收集项目:https://github.com/TheD1rkMtr/ntdlll-unhooking-collection
  • @KlezVirus 的 SysWhispers3 项目:https://github.com/klezVirus/SysWhispers3
  • @jakobfriedl 为 Shhhloader 制作了 Havoc C2 模块
  • @_0xDeku 关于使用 Windows 线程池(PoolParty)进行进程注入的研究和代码:https://github.com/SafeBreach-Labs/PoolParty
  • @0xEr3bus 的 PoolParty BOF,作为参考:https://github.com/0xEr3bus/PoolPartyBof