解读4篇混合类型文件Polyglot相关的论文

0. 引入

Polyglot文件指的是混合类型文件,关于混合类型文件的基础,请参考文末给出的第一个链接(参考1)。

1. Toward the Detection of Polyglot Files

1.1 主题

这篇2022年的论文,提出了Polyglot文件的检测方法。虽然检测方法比较粗糙,但也解决了该领域数据获取困难的问题。

作者mitra工具建立了一个数据集,并用file命令和其他ML/DL模型进行检测与比较,最终得出调优后的Catboost比Malconv2,RandomForest,LightGBM,SVM效果好的结论。

1.2 特征工程

作者对机器学习模型,使用的特征比较简单,输入特征是256个字节出现的次数。对于深度学习模型(Malconv2,这是一个一维CNN),直接输入固定长度的字节流。

1.3 数据集

Polyglot领域比较缺数据集。作者的数据集是用mitra工具建立的。

mitra只能融合两种文件类型,并且不是所有类型都能支持的。所以作者实验了如下21种组合:

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

1.4 Polyglot原理

文章描述了生成Polyglot文件的四种方法:

  1. Stack:把第二个文件直接放到第一个文件的末尾

pdf无法用stack的方式,因为:pdf只接受magic-num位于头1024个字节。 zip没有上面pdf的这个限制。所以zip很适合作为stack。

  1. Parasite:寄生虫

把第二个文件加到第一个文件的comment部分,这种模式适用于对magic number没有严格偏移限制的格式。

  1. Zippers

两个文件都互相包括再另一个文件的comment部分。 只有少量类型的文件能做到这个。

  1. Cavities

第二个文件藏在第一文件的null-padded空间部分。只有第一个文件是可执行文件或者是ISO类型才能做到。

1.5 file命令检测polyglot

file命令通过magic bytes匹配来实现文件类型检测,加上 --keep going 参数就能让file检测混合类型文件

2. Detection of malicious polyglot

2.1 主题

这是Mcafee在2019年写的专利,做混合类型文件的恶意软件检测。

其中检测混合类型的部分,大概思路是根据文件类型数据结构的分析(特定段中是否有异常数据,比如丢失数据/数据重复),结合机器学习(文本类型检测),sandbox(能运行就增加score)的结果,来打分并根据阈值判断是否属于混合类型。

2.2 检测思路

目前的文件类型检测模块,都是根据文件的结构,来检测的。比如GIF文件,含有SoF结构,调色盘,SoF尾。根据上面说的这种文件结构分析,检测出文件类型后,就要执行下面的步骤:依次扫描文件的各个其他子结构,判断子结构中是否有异常,比如发现内容重复、丢失,缺少某些子结构等等,这样就要增加 混合类型文件的score。

如果扫描到两次EoF标记,就要把这中间的内容提取出来,单独作为一个新的临时文件,再去分析这个临时文件是否是某种独立的文件类型。

从文件头20个字节中找到“编程语言注释开始”的标记。再从文件最末尾的20个字节中找到“注释结束”的标记。如果两个标记都能找到,就用114从这两个标记之间找到 reasonable-string:至少有10给字符长度,符合能被打印的字符。用ML对这些reasonable-string进行分类:某种编程语言(专注某些可执行的脚本),可执行代码,某种类型的代码(base64)。分类为某种变成语言后,就用沙箱把整个文件当作这种语言的文件去运行。如果这样运行没有报错,就给定一个最高的score,并把文件判断为polyglot。如果报错,则不改变score的值。。

一个文件的score是他的临时文件的score之和。哪怕score不足够高,没有超过阈值,也值得去monitor。或者阻止这个文件被某种命令运行起来。

3. Abusing File Processing in Malware Detectors for Fun and Profit

3.1 主题

2012的这篇文章,算是对恶意混合类型文件研究的开山鼻祖。
作者定义了两类Polyplot相关的逃逸方式,并通过模糊测试,挖出了36个杀毒引擎的45个漏洞,还都申请了CVE。

3.2 精确解析文件类型的挑战

精确解析文件类型是很复杂的:
(1)很多格式没有明确的格式说明文档
(2)复现某些格式的解析器是不可能的,比如OpenOffice有上百种解析器
(3)不同格式不同版本

因为杀毒引擎都是先确定文件类型,再去解析文件和做signature匹配,所以确定文件类型对后续的检测是影响很大的。

3.3 杀毒影响判断文件类型的方法

杀毒引擎的文件类型推理,都不是根据扩展名来判断的。

作者研究了开源的杀毒引擎,ClamAV判断文件类型的方法:
(1)对于大部分文件类型,使用固定偏移的字节(magic-number)
(2)对于HTML之类的,用正则表达式

在这里插入图片描述

3.4 模糊测试的过程

作者用python实现的模糊测试框架,可以在框架上使用不同类型的插件(parser+validator+fuzzer)。基本原理:parser会把header转换为多个array,fuzzer会改变内容,validator检查程序是否能正确处理改变后的文件。

3.5 两类逃逸方式

重点是这一节:

  1. chameleon attack

chameleon是变色龙的意思。
这种攻击指的是,让杀毒引擎无法准确检测出文件类型。比如同一个文件,对引擎来说是A类型,对真实OS来说是B类型。
最简单的Chameleon攻击,就是把病毒文件放到压缩包中。

  1. werewolf attack

利用不同解析器的解析差异,不同解析器在解析文件时,得到的文件数据结构可能会不同。
werewolf攻击,通过修改meta-data中的某些字节,就能实现。还有如下其他方式来实现:

(1)让tar包中产生一个错误的checksum。

(2)让tar包头部的length值比真实的压缩包的size大

(3)在zip头部增加无意义的字节

还有比如说修改ELF文件头部的大端小端字段等方式。

4. Polyglots: Crossing Origins by Crossing Formats

4.1 主题

2013的这篇文章,主要探讨了通过Polyglot来实现跨域的网络攻击方式。

4.2 基础

要理解这篇文章,得先理解同源策略。根据参考7,它的最初含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"。所谓"同源"指的是"三个相同":

  • 协议相同
  • 域名相同
  • 端口相同

同源策略:只有来自同源(协议、域名、端口)的两个网页,才能互相访问对方的资源(比如cookie)。
但是,并不是所有资源都受同源策略的限制。比如,从其他源加载过来的脚本(js),也继承了这个网页的源,变为和网页同源。

本文就重点讲解通过Polyglot来实现跨域的攻击。

4.3 Polyglot

实现A和B两种类型混合的polyglot,需要避免文件结构解析时的异常。所以通常把A隐藏在B的注释中来实现。
某些特定的语言适合于create polyglots:比如C语言,因为他和其他语言有很多一样的结构;比如HTML因为他容错能力较高。

4.4 核心的思想

整个攻击的过程,看下图会更容易理解:

在这里插入图片描述

(1)Attacker释放一个polyplot到vulnerable.com,让这个服务器上有一张看上去是白样本的图片;
(2)victim访问了 attacker.com;
(3)attacker.com使用plug-in去去vulnerable.com加载这个polyglot并加载为恶意文件的类型;
(4)这个polyglot就会在vulnerable.com执行,就能对vulnerable.com造成伤害。

参考

  1. https://blog.csdn.net/ybdesire/article/details/132925927?spm=1001.2014.3001.5501
  2. Luke Koch etc. Toward the Detection of Polyglot Files. 2022
  3. DETECTION OF MALICIOUS POLYGLOT. US11386205B2. 2019
  4. Suman Jana and Vitaly Shmatikov. Abusing File Processing in Malware Detectors for Fun and Profit. 2012
  5. https://github.com/mindcrypt/polyglot
  6. Jonas Magazinius etc. Polyglots: Crossing Origins by Crossing Formats. CCS2013
  7. https://ruanyifeng.com/blog/2016/04/same-origin-policy.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/360121.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

git操作之本地代码修改后想回退成当前最新版本

这张图很关键,取自https://www.cnblogs.com/cblx/p/12467083.html 我们的vscode就是workspace,我们提交代码需要三步,add,commit,push,其中我们想拉取代码有两种方式,git pull或者git fetch/cl…

QCM6125 UEFI XBL显示开机Logo不居中

QCM6125 UEFI XBL显示开机Logo在竖直方向不是居中显示,如果显示屏是正向安装到产品的话可能没有什么问题,但是如果产品的显示屏是90、180、270度旋转后安装到产品上的话显示开机Logo会有一些问题,并且大多数的平台以及产品开机Logo都是水平竖直方向都是居中显示,所以修改成…

【开源操作系统】上海道宁为您带来稳定、安全、开源和易用的操作系统——Ubuntu,为您的数字化生活保驾护航

Ubuntu是 源于非洲的一种传统价值观 意为“人性、关爱和共享” 这种价值观在 开源、稳定、安全、易用的 Ubuntu操作系统中 得到了完美的体现 除此之外,Ubuntu还具有 强大的安全性 它自带了诸多安全功能 如防火墙、加密文件系统等 可以有效地保护用户的隐私…

uniapp基于Android平台的校园生活服务交流论坛系统(二手,失物招领 -跑腿) 小程序hbuiderx

作为一款APP的校园论坛系统,面向的是大多数学者,软件的界面设计简洁清晰,用户可轻松掌握使用技巧。在调查之后,获得用户以下需求: (1)用户注册登录后,可进入系统解锁更多功能&#x…

【Java基础】之进程与线程

进程与线程 1. 线程与进程1.1 概念1.2 区别与联系 2. 线程的5种状态和切换2.1 简单介绍2.2 状态切换2.2.1 重点情况 3. 线程中常见的方法4. 线程池 1. 线程与进程 1.1 概念 进程:资源分配的基本单元,如QQ音乐 线程:资源调度的基本单元&…

第38期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

泰迪智能科技生成式人工智能(AIGC)实验室解决方案

AIGC(Artificial Intelligence Generated Content,生成式人工智能)是一种新的人工智能技术,指的是利用人工智能技术来生成内容。这种技术可以自动生成文本、图像、音频和视频等多种类型的内容,而且内容的质量较高&…

Python武器库开发-武器库篇之pdf文件暴力破解(五十二)

Python武器库开发-武器库篇之pdf文件暴力破解(五十二) PDF(Portable Document Format,便携式文档格式)是由Adobe公司开发的一种文件格式。PDF文件被广泛用于以可靠方式共享和传输电子文档。它能够保留文档的原始格式,包括字体、图…

基于YOLOv8的船舶目标检测系统(Python源码+Pyqt6界面+数据集)

博主简介 AI小怪兽,YOLO骨灰级玩家,1)YOLOv5、v7、v8优化创新,轻松涨点和模型轻量化;2)目标检测、语义分割、OCR、分类等技术孵化,赋能智能制造,工业项目落地经验丰富; …

KYOSAN电源维修RFK150ZDTG1电源控制器BKW-100

维修范围:刻蚀、RIE、平行板、ICP、pecvd、射频溅射、CVD 和PVD等系统,工业系统中感应加热和电介质加热设备的电源,烘干、塑化、接、硅晶体生长和平板显示器领域应用电源,直流偏压和硬镀膜,信息技术设备(ITE)及轻工业系…

医院安全(不良)事件报告系统源码,不良事件处理的全过程管理,实现11大类不良事件类型的报告上报、流转审批、跟踪改进及统计分析功能。

医院安全(不良)事件报告系统源码,不良事件上报系统源码,PHP源码 医院安全(不良)事件报告系统提供11大类不良事件的上报、事件审核处理、时间按分析、事件跟踪与持续改进,事件提醒、权限控制、外…

qiankun子应用静态资源404问题有效解决(遇到了http请求静态文件404、css文件引用图片无法显示、svg图片转换成 base64无法显示等问题)

在👉🏻 qiankun微前端部署👈🏻这个部署方式的前提下,遇到的问题并解决问题的过程 >> 问题现象 通过http请求本地的静态json文件404 css中部分引入的图片无法显示 >> 最开始的解决方式 在👉…

【数据结构】双向带头循环链表实现及总结

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 1. 双向带头循环链表的实现2. 顺序表和链表的区别 1. 双向带头循环链表的实现 List.h #pragma once #include <stdio.h> #include <assert.h> #include <stdlib.h> #include <stdbool.h>typede…

mycat-encrypt-server如何支持模糊查询的

最近在研究数据库加密&#xff0c;看到了mycat-encrypt-server项目&#xff0c;看了一下代码&#xff0c;说是支持加密字段的模糊查询&#xff1a; private void parserBinaryExpression(Expression expression, Set<String> columns, String tableAlias, String tableNa…

代码随想录算法训练营第36天 | 435.无重叠区间 763.划分字母区间 56.合并区间

无重叠区间 这道题按左边界排序和右边界排序都是可以的。主要就是要统计出不重合区间的数目。如果按照右区间排序&#xff0c;下面这张图十分形象&#xff1a; 这样去掉一组重叠区间后&#xff0c;剩下的那个区间它的右端点最小&#xff0c;能让后面产生尽量多的不重叠空间。 …

用GPT写PHP框架

参考https://www.askchat.ai?r237422 写一个mvc框架 上面是简单的案例&#xff0c;完整的PHP框架&#xff0c;其核心通常包含以下几个关键组件&#xff1a; 1. 路由&#xff08;Routing&#xff09;&#xff1a;路由组件负责解析请求的URL&#xff0c;并将其映射到相应的控制…

MySQL原理(三)锁定机制(1)综述

一、介绍&#xff1a; 1、锁的本质 业务场景中存在共享资源&#xff0c;多个进程或线程需要竞争获取并处理共享资源&#xff0c;为了保证公平、可靠、结果正确等业务逻辑&#xff0c;要把并发执行的问题变为串行&#xff0c;串行时引入第三方锁当成谁有权限来操作共享资源的判…

嵌入式——模拟/数字转换器(ADC)补充

目录 一、ADC简介 二、ADC功能 1.电压输入范围 2.输入通道 3. 转换顺序 &#xff08;1&#xff09;规则序列 &#xff08;2&#xff09; 注入序列 4.触发源 5. 转换时间 &#xff08;1&#xff09; ADC时钟 &#xff08;2&#xff09; 采样时间 6. 数据寄存器 &am…

ETL怎么实现文件处理

在现代企业及各类组织的日常运作中&#xff0c;数据作为一种关键的信息资源&#xff0c;其管理和分析能力直接影响到决策效率与准确性。文件作为数据的主要载体&#xff0c;承载着从运营报告、客户记录、交易明细等各种类型的数据信息。这些海量且多样的文件数据在未经处理的情…

母排设计时没有柜体3D数据?来试试SuperPanel的钣金功能!

CAD版SuperPanel软件能够助力用户快速、准确地设计和修改母排&#xff0c;同时快速输出加工图纸和数控加工代码。在壳体外购&#xff0c;没有柜体3D数据的情况下&#xff0c;如何轻松进行母排设计&#xff1f;一起来学习利驰数字母排的钣金功能吧&#xff01; SuperPanel的钣金…