EmbedPayloadInPng:一款图片文件Payload嵌入工具
2024-11-21 21:58:22 Author: www.freebuf.com(查看原文) 阅读量:0 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

关于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传送门

参考资料

https://maldevacademy.com/?ref=gh

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022


文章来源: https://www.freebuf.com/sectool/415875.html
如有侵权请联系:admin#unsafe.sh