首页
社区
课程
招聘
[推荐]文件格式漏洞挖掘指南
发表于: 2022-9-24 12:04 14633

[推荐]文件格式漏洞挖掘指南

2022-9-24 12:04
14633

前言

大蒜【IFFA】支持任意文件格式的漏洞挖掘,但是这么多文件格式,什么图片,音频,视频,压缩包,办公软件,工业软件,电子设计软件,医学软件,工程文件,数据包文件,数据库文件,字体文件,设置文件。。。。。。

几乎所有的二进制漏洞都和内存破坏类有关。到底有多少种谁也不知道,从网上简单搜索就收到了5000多种(如果每一种格式涉及100个软件,每一个软件涉及100个漏洞,那么仅仅这5000种就涉及了5000万个漏洞),这还不包括不全的以及未知的,私有的。你要知道波音用了7000多个软件,其中公开的只有1000多种。

这么多目标,是如何分类呢?


数据类型分类

主要分为字符串类型和二进制类型。

字符串类型

顾名思义,就是文件都是可识别字符串组成的类型。都有什么呢?INI文件,HTTP数据包,HTML,这些都是字符串类型。这种类型比较简单,出问题的概率较低(越复杂的结构越容易出问题嘛,就像肺,肝很容易癌变,而心脏就是一团肌肉,没有那么容易癌变的)。但是不等于不会出问题,很多程序处理这类格式还是很容易出问题的。

二进制类型

顾名思义,文件格式是二进制来描述的。大部分文件结构都是二进制类型。比如图片,音频,视频等等。绝大部分文件格式都是二进制文件格式。

复合型文件类型

很多文件类型是复合型文件类型,因为他包含了很多子结构。比如office类型。一个word文件可以包含很多图片,文字,音频,视频。除此以外,像PDF,工业设计软件(AUTOCAD),压缩包,也属于复合型文件类型。复合型文件类型是比较复杂的文件类型,因此也更容易发现bug。对挖掘难度也要求较高,因此如果你没有大蒜不是很建议新手直接搞复合型类型。

建议方法

没有大蒜,那就字符串类型搞起,然后二进制类型,然后复合型文件格式。

如果有大蒜,那就复合型文件格式和二进制类型搞起,最后字符串类型。






从背景分类

开源格式 

开源格式,就是源码或者文件格式协议公开。你可以网上公开看到这类格式的描述信息以及源码。比如BMP图片就是开源格式,因为有源码,因为有文件格式信息,所以这类格式研究的人比较多。因为简单嘛。直接对着开源文档写pit脚本就可以了(没有大蒜的时候)。潜在的漏洞都被大家挖掘了,所以很难再出新东西了。

 

闭源格式

源码不公开,文件格式不公开。如果想挖掘这类文件格式的漏洞,只能自己去逆向文件格式,然后再去编写pit描述这种文件格式,进而进行fuzz。逆向需要看汇编代码,效率很低的。同样的漏洞闭源格式的投入要大于开源格式,是一件费力不讨好的事情。所以大家都不愿意挖掘此类漏洞。因此,这类产品的漏洞其实是比开源格式多的。

如果你的格式是私有格式,那就更是这样的类型了。


建议方法

看你手上的工具,如果你什么都没有自己编写pit,还是搞开源格式吧,毕竟简单,快。

如果你有大蒜,那必然必然格式。因为对你来说他们的难度是一样的,闭源格式包含的漏洞反而更多,因此,不搞闭源,你租大蒜干嘛?



从文件协议分类

没有校验的类型

没有校验,就说明简单。

简单,就说明意义不大。

就像前面说的心脏癌变概率有多大?Notepad处理txt的内存破坏问题有多大?

当然部分稍微复杂点格式还是有问题的。比如配置文件很多有A=XXX。这种很容易有栈溢出漏洞哦。


有一些校验的类型

大部分格式都是这类,比如各种各样的图片。表示偏移,文件大小等结构,CRC校验等。并且还有嵌套关系,嵌套越多,越容易出问题。



作战方案

优先选择哪些类型

冷门格式

大厂谁都喜欢搞,但是大厂不一定就难,也是要看目标的。

大厂的冷门文件格式,往往非常容易搞。你越没见过的文件格式,往往就越容易。

私有格式

如果你有大蒜,能碰到私有格式那就是你的福气了。对于这种格式,基本在大蒜面前是没有任何免疫力的。干就是了。

效率高的处理方式

很多人还在用最传统的方法去挖掘漏洞。生成样本,打开,解析,关闭。换一种形式不会搞了,比如杀毒软件,不知道如何打开关闭。

但是杀毒软件根本不需要这么做啊,1万个样本让杀毒软件扫描一下,几分钟搞定。如果往常的方法,可能需要几个小时。除此以外,格式转换工具,也是一个意思。

思路,思路,一定要活跃。


避免哪些类型

假的私有格式

很多软件商的所谓的私有文件格式,都是假的。只是后缀名不一样罢了。

比如很多工程文件,你仔细看会发现,他其实就是ZIP文件。最典型的就是docx等等。这种格式不是不能搞,只是挖掘效率非常低罢了。能绕开一定要绕开。


简单的格式

前面说过,像txt这种,基本没必要。


看上去复杂的纸老虎

类似于ziprar这种压缩包。也不是没必要,但是意义不大。本来也不是非常复杂,并且研究的人已经比较多了。


测试比较全面的

最典型的就是杀毒软件了,杀毒软件和普通的软件有啥不同??

杀毒软件就是用来查杀病毒的,所以几乎所有的文件格式他都扫过啊,所以他的强健性是非常好的。尤其是PE这种格式。这并不是说不能挖掘出他的漏洞。只是说比较难。如果要搞可以搞搞冷门的格式。


流媒体格式

也不是说不能搞,而是效率相对低。处理图片解析成功就算打开完毕了,但是音频视频呢?如果fuzz1小时的视频,你要去等待1小时吗?

可以试试,也可以出东西,但是不要投入太多。


解析失败率很高的格式

Fuzz的时候看一下失败率,如果解析后发现失败率很高。(大部分格式都解析失败)。那么说明你这次建模是不理想的,质量也是不搞的。

 




[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (3)
雪    币: 612
活跃值: (3804)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
2
自己顶起来
2023-2-4 21:48
0
雪    币: 612
活跃值: (3804)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
3
 
2023-4-16 19:44
0
雪    币: 612
活跃值: (3804)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
4
0000000000
2023-5-14 10:20
0
游客
登录 | 注册 方可回帖
返回
//