当前位置: 首页 > news >正文

北京建外贸网站公司广安网站制作设计

北京建外贸网站公司,广安网站制作设计,阿里虚拟机建设网站,大连网站建设多少钱1. 引入 混合类型文件(Polyglot文件),是指一个文件,既可以是合法的A类型,也可以是合法的B类型。 比如参考3中的文件,是一个html文件,可以用浏览器正常打开;它也是一个一个.jar文件&…

1. 引入

混合类型文件(Polyglot文件),是指一个文件,既可以是合法的A类型,也可以是合法的B类型。
比如参考3中的文件,是一个html文件,可以用浏览器正常打开;它也是一个一个.jar文件,可以用JVM正常运行(参考4),如下图所示:

在这里插入图片描述

这样的文件就是混合类型文件,也叫polyglot。他能绕过文件类型检测的限制,比如有的系统只允许用户上传PNG,以防止用户上传具有潜在危险的文件,例如JS文件、PHP文件。利用混合类型文件就能突破这个限制。

2. 有哪些混合类型

参考5给了很多混合类型文件的真实例子,下面举例如下:

(1)7ZIP+JAR.7z: 7z + jar + zip
(2)7ZIP+RAR-1.7z:7z + rar
(3)AVI+HTML.avi:avi + html
(4)BMP+HTML+JAR.bmp:bmp + html + jar + zip
(5)DOCX+ELF+JAR+PDF+RAR-1.zip:docx + elf + jar + pdf + rar + zip

这里给出了102种不同的类型的组合,注意这只是2018年的数据,目前可能已经出现更多类型组合了。
以 HTML+PDF-3.html (参考6)举例:
(1)这个文件下载后,直接用浏览器打开,效果如下:

在这里插入图片描述

(2)如果把这个文件的扩展名改为pdf,就能用pdf阅读器打开,效果如下:

在这里插入图片描述

3. 使用混合类型的恶意样本家族

参考4给出了如下两个恶意样本家族的例子:

  1. 恶意样本家族StrRAT 使用 MSI 格式来伪装 JAR 文件
  2. 恶意样本家族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的论文中给出的组合:

DCM+GIF,     DCM+JAR,    DCM+ISO,    DCM+PDF,    DCM+ZiP,    GIF+ISO,    GIF+JAR,    GIF+Zip,    JPG+JAR,    JPG+Zip,    
PE+ISO,    PE+JAR,    PE+Zip,    PNG+ISO,    PNG+JAR,    PNG+PDF,    PNG+Zip,    TIFF+ISO,    TIFF+JAR,    TIFF+PDF,    TIFF+Zip

5. 如何检测文件类型

对于非混合类型文件,有如下几种检测方法,都有相对比较成熟的工具:

  1. 对于常见编程语言的类型,可以使用 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	
  1. 对于exe,elf之类的文件,可以使用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'
  1. 对于多种不同类型的图像、视频、音频,甚至于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
数据库:SQLITE

6. 混合类型文件检测

  1. 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
  1. 机器学习方法,找到一篇文章给了一些检测思路,文章见参考7:
    (1)传统机器学习方法:二分类模型,特征为二进制字节直方图,一共256个字节的出现次数,模型选用传统集成学习树模型,比如 light GBM, gradient boosting, and CatBoost
    (2)深度学习方法:二分类模型,选用CNN网络中知名的Malconv2,直接读入字节流(超出容量则截断文件)

根据论文提供的检测结果:
(1)直接使用file命令,效果并不理想,file在很多时候无法准确检测
(2)CatBoost调优后,效果比其他模型要好,也比Malconv2好

在这里插入图片描述

7. 总结

本文总结了 混合类型文件 的定义,使用混合类型的恶意样本家族,如何生成混合类型文件,以及非混合类型的文件检测及混合类型文件检测的方法。

参考

  1. Polyglot的定义。https://en.wikipedia.org/wiki/Polyglot_(computing)
  2. https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
  3. html混合java文件。https://github.com/deepinstinct/JAR-Polyglot-POC/blob/main/eula.html
  4. https://www.deepinstinct.com/blog/malicious-jars-and-polyglot-files-who-do-you-think-you-jar
  5. https://github.com/Polydet/polyglot-database/tree/master/files
  6. https://github.com/Polydet/polyglot-database/blob/master/files/HTML%2BPDF-3.html
  7. Toward the Detection of Polyglot Files. 2022. https://arxiv.org/pdf/2203.07561.pdf
  8. tool to generate polyglog file. https://github.com/corkami/mitra
http://www.yayakq.cn/news/270906/

相关文章:

  • 假网站如何做驻马店 网站建设
  • 做网站商城需要什么条件wordpress分类归档不科学
  • 网站怎么使用wordpress 阿里大于鱼
  • 合肥制作网站价格投标网招标网
  • 成都市温江建设局网站php网站开发心得
  • 网站没有备案是假的吗惠山做网站公司
  • 建设部网站业绩如何录入网站建设服务器搭建
  • 如何查看网站的外链WordPress 会员空间插件
  • 如何自己写一个网站青岛ui设计公司
  • 济南专业做公司网站的机构橙光游戏制作器手机版
  • 中国风手机网站模板什么软件可以制作图片加文字
  • 网站中怎么做图片的变换wap网站建设案例
  • 纯净软件网站推荐互联网营销师怎么做
  • 做网站1天转多钱做网站如何网站考虑优化
  • 让别人做网站注意事项长沙网站优化推广
  • 如何利用tp-link按错900做网站使用织梦系统建设网站教程
  • 新品发布会的目的seo网络推广经理招聘
  • 自己在家可以做网站吗php网站开发是做什么的
  • WordPress数据库和网站文件网站建设it职位
  • 型云网站建设衡水手机网站建设价格
  • 昆明建站网站资讯平台应用分析网站
  • 做网站西安哪家好中医协会网站建设方案
  • 开发技术网站开发技术路线wordpress开放用户注册
  • 网站关键词词库怎么做百度运营培训班
  • 学网站开发容易吗网站建设计划图
  • 大好网站北京期刊网站建设
  • 网站html优化成都最新消息今天
  • 专注东莞微信网站建设松江网站开发培训课程
  • 网站怎样做百度推广有没有专门做美食的网站
  • 网站像素大小网站所有人查询