关于Hannibal
Hannibal是一款基于地址无关代码(PIC)和C语言(外加少量的C++)开发的x64 Windows 代理,广大研究人员可以使用该工具进行安全防御端的C编程训练。
功能介绍
Hannibal 旨在用作第一阶段代理。它遵循以下设计原则:
1、小:Hannibal 的完整尺寸 .bin 约为 45KB。
2、模块化:可以选择/删除要编译到代理中的命令。可以将大小减小到约 25KB。
3、简单:重点在于最初的立足点能力,而不是提供整个功能舰队。
此外,该项目还旨在提供地址无关代码、代理设计、Mythic代理开发以及安全防御端资源的 C 编程教育体验。
其中包括构建调试版本的功能,该版本可在 GUI IDE 调试器(如 VSCode)中使用,以提高可访问性。需要注意的是,当前版本的Hannibal可以在 Linux 或 Windows 上编译运行。
工具特点
1、体积小;
2、模块化编译;
3、后执行能力;
4、Ekko Sleep;
5、可替换的配置文件;
工具安装
要安装 Hannibal,您需要在远程计算机上安装 Mythic。您可以在Mythic 项目页面找到 Mythic 的安装说明。
从 Mythic 安装目录中,使用以下命令以root用户身份安装 Hannibal:
./mythic-cli install github https://github.com/MythicAgents/Hannibal.git
从 Mythic 安装目录中,使用以下命令以非 root用户身份安装 Hannibal:
sudo -E ./mythic-cli install github https://github.com/MythicAgents/Hannibal.git
工具使用
命令 | 语句 | 描述 |
agentinfo | agentinfo | 返回有关代理的内部信息,例如内存位置、下载/上传状态等。 |
cd | cd [path] | 更改宿主进程的当前工作目录。 |
cp | cp [src_path] [dst_path] | 将文件或文件夹复制到目标。递归复制文件夹。 |
execute | execute [path + args] | 对给定的进程字符串执行 CreateProcess。 |
execute_hbin | execute_hbin <modal_popup> | 打开模式以便您可以上传和执行 hbin。注意参数与位置和类型相关。 |
exit | exit or exit thread | 退出代理,终止进程或者仅终止当前线程。 |
hostname | hostname | 返回机器的主机名。 |
ipinfo | ipinfo | 返回有关机器上活动网络设备的信息。 |
listdrives | listdrives | 返回有关已安装驱动器和磁盘空间的信息。 |
ls | ls [path] | 返回路径的目录列表。 |
mkdir | mkdir [path] | 创建新目录。 |
mv | mv [src_path] [dst_path] | 将文件或文件夹移动到目标。递归移动文件夹。 |
ps | ps | 返回机器上正在运行的进程列表。 |
pwd | pwd | 返回宿主进程的当前工作目录。 |
rm | rm [path] | 删除文件或文件夹。文件夹会递归删除。(小心!) |
sleep | sleep [interval] [jitter] | 设置代理的睡眠/抖动。 |
whoami | whoami | 返回当前用户和域。 |
upload | upload <modal> | 提供模式来上传文件给代理。需要完整路径加文件名。分块上传。 |
download | download [path] | 从代理下载文件。分块下载。 |
许可证协议
本项目的开发与发布遵循BSD-3-Clause开源许可协议。
项目地址
Hannibal:【GitHub传送门】