菏泽网站建设价格,金华电子商务网站建设,广告设计需要学什么专业,网站开发的数据库1. 引入
混合类型文件#xff08;Polyglot文件#xff09;#xff0c;是指一个文件#xff0c;既可以是合法的A类型#xff0c;也可以是合法的B类型。 比如参考3中的文件#xff0c;是一个html文件#xff0c;可以用浏览器正常打开#xff1b;它也是一个一个.jar文件Polyglot文件是指一个文件既可以是合法的A类型也可以是合法的B类型。 比如参考3中的文件是一个html文件可以用浏览器正常打开它也是一个一个.jar文件可以用JVM正常运行(参考4)如下图所示 这样的文件就是混合类型文件也叫polyglot。他能绕过文件类型检测的限制比如有的系统只允许用户上传PNG以防止用户上传具有潜在危险的文件例如JS文件、PHP文件。利用混合类型文件就能突破这个限制。
2. 有哪些混合类型
参考5给了很多混合类型文件的真实例子下面举例如下
17ZIPJAR.7z 7z jar zip 27ZIPRAR-1.7z7z rar 3AVIHTML.aviavi html 4BMPHTMLJAR.bmpbmp html jar zip 5DOCXELFJARPDFRAR-1.zipdocx elf jar pdf rar zip
这里给出了102种不同的类型的组合注意这只是2018年的数据目前可能已经出现更多类型组合了。 以 HTMLPDF-3.html (参考6)举例 1这个文件下载后直接用浏览器打开效果如下 2如果把这个文件的扩展名改为pdf就能用pdf阅读器打开效果如下 3. 使用混合类型的恶意样本家族
参考4给出了如下两个恶意样本家族的例子
恶意样本家族StrRAT 使用 MSI 格式来伪装 JAR 文件恶意样本家族Ratty和StrRAT使用 CAB 格式来伪装 JAR 文件
其中也给出了StrRAT 和 Ratty的链接。
4. 如何生成混合类型文件
使用 mitra 这个工具参考https://github.com/corkami/mitra就能生成混合类型文件。
从源代码看直接使用它只能生成两种类型文件混合的文件
def main():args Setup(__description__)fn1,fn2 args.file1, args.file2 #这里显示只读入两个文件with open(fn1, rb) as f:fdata1 f.read()with open(fn2, rb) as f:fdata2 f.read()pad getVar(PAD)fdata1 b\1 * (pad - len(fdata1))fdata2 b\1 * (pad - len(fdata2))使用方法笔者在python3.8的环境中直接运行如下命令根据报错再安装或者mkdir缺少的文件后
python mitra.py pic1.png 2203.07561.pdf就能生成 一个文件 P(10-4b8516)-PNG[PDF].4425bf7c.png.pdf它是一个能直接用pdf阅读器打开的pdf文件能看到pdf的文件内容当我们把他的文件扩展名改为 P(10-4b8516)-PNG[PDF].4425bf7c.png.png后就能用图片阅读器打开它此时看到的就是一张图片。
注意 mitra 这个文件并不能生成所有类型文件的组合比如笔者实验中就不能把.py文件组合到png图片上。下面是参考7的论文中给出的组合
DCMGIF, DCMJAR, DCMISO, DCMPDF, DCMZiP, GIFISO, GIFJAR, GIFZip, JPGJAR, JPGZip,
PEISO, PEJAR, PEZip, PNGISO, PNGJAR, PNGPDF, PNGZip, TIFFISO, TIFFJAR, TIFFPDF, TIFFZip5. 如何检测文件类型
对于非混合类型文件有如下几种检测方法都有相对比较成熟的工具
对于常见编程语言的类型可以使用 guesslang 这个工具来进行检测参考 https://github.com/yoeo/guesslang/tree/master 他能用深度学习模型识别如下类型的文本文件
Assembly Batchfile C C# C
Clojure CMake COBOL CoffeeScript CSS
CSV Dart DM Dockerfile Elixir
Erlang Fortran Go Groovy Haskell
HTML INI Java JavaScript JSON
Julia Kotlin Lisp Lua Makefile
Markdown Matlab Objective-C OCaml Pascal
Perl PHP PowerShell Prolog Python
R Ruby Rust Scala Shell
SQL Swift TeX TOML TypeScript
Verilog Visual Basic XML YAML 对于exeelf之类的文件可以使用polydet来检测 参考https://github.com/Polydet/polydet/tree/master 他能使用已定义的yara规则来检测如下类型的文件
7z, avi, bmp, elf, exe, flac, gif, html, jpg, mp3, ogg, pdf, php, png, polyglot_level, rar, swf, tar, tiff, wav, webm, zip
对于多种不同类型的图像、视频、音频甚至于SQLITE类型可以 fleep 来检测参考https://github.com/ua-nick/fleep-py/tree/master 他能使用已magic-number来检测如下类型的文件
图像: BMP,GIF,ICO,JP2,JPEG,PNG,PSD,TIFF,WEBP
原始图像:ARW,CR2,CRW,DNG,ERF,NEF,NRW,ORF,PEF,RAF,RAW,RW2,SRW,X3F
矢量图:AI,EPS
3D图像:C4D,FBX,MA,MS3D,MTL,OBJ,PLY,WRL,X3D,XSI
音频:AAC,AC3,AIFF,AMR,AU,FLAC,M4A,MIDI,MKA,MP3,OGA,RA,VOC,WAV,WMA
视频:3G2,3GP,ASF,AVI,FLV,M4V,MKV,MOV,MP4,MPG,OGV,SWF,VOB,WEBM,WMV
文档:DOC,DOCX,EPUB,KEY,NUMBERS,ODP,ODS,ODT,PAGES,PDF,PPS,PPT,PPTX,RTF,XLS,XLSX,XML,
压缩:7Z,DMG,GZ,ISO,RAR,TAR.Z,ZIP,
可执行文件:COM,EXE,JAR
字体:OTF,TTF,WOFF,WOFF2
系统文件:CAB,CAT,DLL,DRV,REG,SDB,SYS
数据库:SQLITE6. 混合类型文件检测
linux下的file命令能检测一部分混合类型文件(参考8)示例如下
$ file --keep-going --raw mA-pdf.pdf
mA-pdf.pdf: tar archive
- DR-DOS executable (COM)
- Windows Program Information File for R
- DOS/MBR boot sector
- Nintendo DS ROM image: %PDF-1.3 (┬╢, Rev.116)
- Plot84 plotting file DOS/MBR boot sector
- SymbOS executable v., name: 1 0 obj
- PDF document, version 1.3
- Old EZD Electron Density Map
- Scream Tracker Sample adlib drum mono 8bit
- SoundFX Module sound file
- DICOM medical imaging data
- CCP4 Electron Density Map
- VirtualBox Disk Image (%PDF-1.3), 5715999566798081280 bytes
- data机器学习方法找到一篇文章给了一些检测思路文章见参考7 1传统机器学习方法二分类模型特征为二进制字节直方图一共256个字节的出现次数模型选用传统集成学习树模型比如 light GBM, gradient boosting, and CatBoost 2深度学习方法二分类模型选用CNN网络中知名的Malconv2直接读入字节流超出容量则截断文件
根据论文提供的检测结果 1直接使用file命令效果并不理想file在很多时候无法准确检测 2CatBoost调优后效果比其他模型要好也比Malconv2好 7. 总结
本文总结了 混合类型文件 的定义使用混合类型的恶意样本家族如何生成混合类型文件以及非混合类型的文件检测及混合类型文件检测的方法。
参考
Polyglot的定义。https://en.wikipedia.org/wiki/Polyglot_(computing)https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8ahtml混合java文件。https://github.com/deepinstinct/JAR-Polyglot-POC/blob/main/eula.htmlhttps://www.deepinstinct.com/blog/malicious-jars-and-polyglot-files-who-do-you-think-you-jarhttps://github.com/Polydet/polyglot-database/tree/master/fileshttps://github.com/Polydet/polyglot-database/blob/master/files/HTML%2BPDF-3.htmlToward the Detection of Polyglot Files. 2022. https://arxiv.org/pdf/2203.07561.pdftool to generate polyglog file. https://github.com/corkami/mitra