关于BobTheSmuggler
BobTheSmuggler是一款专为红队研究人员开发和设计的Payload生成工具,该工具基于利用HTML Smuggling技术实现其功能,可以帮助广大红队研究人员创建包含嵌入式7z/zip压缩文档的HTML文件。
BobTheSmuggler可以将我们的代码(EXE/DLL)压缩为7z/zip格式,并对文档进行XOR加密,最后将所有数据隐藏进PNG/GIF图片文件格式中(图像隐写)。嵌入在HTML文件中的JavaScript脚本将负责下载PNG/GIF文件,并将其存储到缓存中。接下来,JavaScript脚本还会提取PNG/GIF文件中嵌入的数据,然后对其进行汇编并执行XOR解密,最终将其存储为内存中的Blob。
工具运行流程
该工具的运行流程和执行机制如下图所示:
当前版本的BobTheSmuggler支持下列Payload交付链:
1、.EXE/.DLL --> .7z/.Zip (受密码保护) --> .JS --> .HTML
2、.EXE/.DLL --> .7z/.Zip (受密码保护) --> .JS --> .SVG --> .HTML
3、.EXE/.DLL --> .7z/.Zip (受密码保护) --> .PNG/.GIF --> .JS --> .HTML
4、.EXE/.DLL --> .7z/.Zip (受密码保护) --> .PNG/.GIF --> JS --> .SVG --> .HTML
关键功能
1、隐蔽型文件隐藏:可以将任何文件类型(EXE/DLL)安全地嵌入HTML页面、PNG、GIF和SVG文件中,确保数据隐藏在有效的位置;
2、通用型嵌入:支持以多种数据格式嵌入文件,以满足不同的需求和场景,灵活性强;
3、高级混淆功能:利用了复杂的技术对嵌入的数据进行混淆,进一步增强安全性并降低检测风险;
4、自定义模板支持:允许使用自定义HTML和SVG模板进行嵌入,提供个性化和特定于上下文的隐藏支持;
5、直观的界面:提供了易于使用的命令行界面,使技术型和非技术型用户都可以轻松使用它;
6、可视化验证:提供了针对PNG文件的可视化工具,允许用户以可视化方法确认数据是否嵌入成功;
工具要求
在运行该工具之前,我们首先需要使用下列命令安装工具的依赖组件:
pip install python-magic py7zr pyminizip
注意,在安装python-magic之前,你还需要在本地设备上安装好libmagic库【文档】。
工具安装
由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/TheCyb3rAlpha/BobTheSmuggler.git cd BobTheSmuggler
工具使用
工具安装完成之后,我们就可以直接运行下列命令来执行BobTheSmuggler了:
python3 BobTheSmuggler.py -h
====================================================================== ██████╗ ██████╗ ██████╗ ████████╗██╗ ██╗███████╗ ██╔══██╗██╔═══██╗██╔══██╗ ╚══██╔══╝██║ ██║██╔════╝ ██████╔╝██║ ██║██████╔╝ ██║ ███████║█████╗ ██╔══██╗██║ ██║██╔══██╗ ██║ ██╔══██║██╔══╝ ██████╔╝╚██████╔╝██████╔╝ ██║ ██║ ██║███████╗ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝ ███████╗███╗ ███╗██╗ ██╗ ██████╗ ██████╗ ██╗ ███████╗██████╗ ██╔════╝████╗ ████║██║ ██║██╔════╝ ██╔════╝ ██║ ██╔════╝██╔══██╗ ███████╗██╔████╔██║██║ ██║██║ ███╗██║ ███╗██║ █████╗ ██████╔╝ ╚════██║██║╚██╔╝██║██║ ██║██║ ██║██║ ██║██║ ██╔══╝ ██╔══██╗ ███████║██║ ╚═╝ ██║╚██████╔╝╚██████╔╝╚██████╔╝███████╗███████╗██║ ██║ ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ====================================================================== usage: BobTheSmuggler.py [-h] -i EXE_FILE [-p PASSWORD] -f OUTPUT_HTML -o OUTPUT_FILENAME -t {html,svg,png,gif} [-c {7z,zip}] [-u PNG_URL] [-png PNG_FILE] [-gif GIF_FILE] [-e CUSTOM_FILE] [-v] Hides EXE/DLL file inside an HTML/SVG file. optional arguments: -h, --help 显示工具帮助信息和退出 -i EXE_FILE 要嵌入的EXE/DLL文件路径 -p PASSWORD 压缩所使用的密码 -f OUTPUT_HTML 输出HTML文件路径 -o OUTPUT_FILENAME 输出文件名称(Payload就在里面) -t {html,svg,png,gif} 嵌入模板文件类型 -c {7z,zip} 压缩格式:7z或zip (默认: zip) -u PNG_URL 嵌入PNG图片的URL地址 -png PNG_FILE 嵌入EXE/DLL的PNG文件路径 -gif GIF_FILE 嵌入EXE/DLL的GIF文件路径 -e CUSTOM_FILE 要克隆为模板的HTML文件 -v, --verbose 启用Verbose日志记录
工具使用样例
将SharpHound.exe压缩为7z格式(受密码保护),并存储到一个HTML文件中:
python3 BobTheSmuggler.py -i path/to/SharpHound.exe -p 123456 -c 7z -f SharpHound.html -o SharpHound.7z -t html
创建一个HTML文件,并将嵌入式Payload隐藏在其中的PNG文件中:
python3 BobTheSmuggler.py -i <Input_file_path> -p <password_to_encrypt> -f <output_HTML_filename> -o <Output 7z/zip filename stored inside HTML> -t png test.png
将嵌入式Payload隐藏在GIF文件中:
python3 BobTheSmuggler.py -i <Input_file_path> -p <password_to_encrypt> -f <output_HTML_filename> -o <Output 7z/zip filename stored inside HTML> -t gif test.gif
.EXE/.DLL --> .7z --> .PNG --> .SVG --> .HTML链执行:
python3 BobTheSmuggler.py -i <Input_file_path> -p <password_to_encrypt> -f <output_HTML_filename> -o <Output 7z/zip filename stored inside HTML> -t svg -e <Custom_SVG_Template>
许可证协议
本项目的开发与发布遵循MIT开源许可协议。
项目地址
BobTheSmuggler:【GitHub传送门】