1. 引入
混合类型文件(polyglot)的检测,目前能找到的工具,都是根据YARA规则来做的。这样的检测方法,没有去解析不同类型文件的结构,势必会产生误报。
如果把混合类型文件,看为一个类似于固件的二进制文件,就能用固件扫描工具来检测并提取其中嵌入的子文件了。
2. binwalk的安装
参考1中有详细的安装方式,也给出了一键安装的脚本。这个脚本笔者在ubuntu上20.04.5上安装失败,折腾老半天,后来无意中发现,在ubuntu上可以直接用apt来安装(apt install binwalk
),几秒钟就安装成功了。
3. 检测文件类型
从参考3中拿一个文件(EXE+HTML+PDF-1.pdf)来做测试(注意参考3中的文件需要用 git-lfs clone xxx
来获取)。
root@aabbcc:/home/prjs/polyglot/binwalk# binwalk EXE+HTML+PDF-1.pdf
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 Microsoft executable, portable (PE)
64 0x40 PDF document, version: "1.3"
386 0x182 PDF document, version: "1.3"
457 0x1C9 HTML document header
740 0x2E4 HTML document footer
827 0x33