关于EmbedPayloadInPng
EmbedPayloadInPng是一款功能强大的Payload嵌入工具,该工具能够将Payload拆分为多个IDAT部分,并将Payload数据嵌入到PNG图片文件中。
值得一提的是,EmbedPayloadInPng拆分的IDAT的每一段数据都会使用自己的 16 字节密钥和 RC4 加密算法单独加密。
工具组成
当前版本的EmbedPayloadInPng由两个组件组成:
EmbedPayloadInPng.py- Python脚本负责将输入的Payload嵌入到指定的 PNG 文件中。
FetchPayloadFromPngEmbedPayloadInPng.py- 负责从输出的 PNG 文件中提取Payload,并使用ExtractDecryptedPayload函数对其进行解密。
嵌入式 PNG 文件结构
如前所述,EmbedPayloadInPng.py负责将Payload嵌入 PNG 文件。下面是嵌入Payload的 PNG 文件的结构:
由于一个IDAT部分的最大大小为 8192 字节,因此我们的Payload被分成多个IDAT部分。每个部分的大小相当于(8192 - 16 [RC4 密钥长度])。此外,最后一个IDAT部分将包含Payload的剩余字节。
下面给出的是EmbedPayloadInPng.py的输出并将其与创建的 PNG 文件的结构进行了比较。
输出 PNG 文件部分:
随机 IDAT 部分,用于标记Payload的开始位置。此部分的 CRC 哈希值在该项目的 C 代码中用于标识PNG 文件中Payload的开始位置:
第一个Payload的IDAT部分,紧随随机部分之后(蓝色部分)。此图还展示了 CRC 哈希的位置以及之前随机化 IDAT 部分的大小(黄色部分):
第一个Payload的IDAT 部分的 CRC 哈希值,位于Payload加密的第一个块后面的部分末尾:
第二个Payload的IDAT 部分的起始位置:
工具安装
由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/Maldev-Academy/EmbedPayloadInPng.git
工具使用
使用EmbedPayloadInPng.py创建嵌入Payload的PNG文件:
嵌入Payload的PNG文件名为Output.png跟源文件对比是相同的。
工具运行演示
演示视频:【点我观看】
许可证协议
本项目的开发与发布遵循MIT开源许可协议。
项目地址
EmbedPayloadInPng:【GitHub传送门】
参考资料
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022