初探Windows Fuzzing神器----Winafl
"author:k0shl
转载自:同程安全性应急响应管理中心
它是一篇文章客座稿子,创作者是黑云二进制系统漏洞发掘白帽子 k0shl 。我觉得上月18号,文中就早已写完后,可是人们始终“捂”上了今日。算作给二进制方位的白帽子的七夕礼物吧 : )
0x01 什么叫winafl
我觉得说的afl-fuzz大家都不容易很陌生人,afl-fuzz是Linux用以fuzz格式文件,协议书等二进制系统漏洞的神技,而winafl则是afl-fuzz的Windows版,近期我对winafl开展了某些浅部科学研究,因为以前也开展过过段时间的二进制系统漏洞发掘,但大部分全是滞留在手工制作发掘上,愈发感觉自动化技术神技作用的强劲,也为之后自个开发设计fuzz专用工具出示了很关键的具体指导根据。
Winafl究竟是什么?
Winafl是windows下这种发掘格式文件,协议书系统漏洞的全自动流水线专用工具,为何全自动流水线呢,由于对于特殊的手机软件,Winafl并沒有出示1个全方位的样本库,尽管winafl的确出示了某些检测样版,其实真实fuzz的全过程中,许多文档必须自个手工制作结构。
次之相比全自动fuzz,Winafl必须自个手动式精准定位必须fuzz的涵数详细地址偏位,来确认主要要开展fuzz的涵数部位。
那么相较为而言winafl究竟优点在哪儿呢?这儿我想提一下下我的了解,winafl的优点取决于它选用的是编码拓展来确认输入输出,为此来分辨系统漏洞是不是存有,那么说将会大家较为晕乎。
这一基本原理很象PIN软件,PIN软件是微软公司出示的这种相近用以汇编指令拓展的软件,我用一张照片来简易叙述一下下这一全过程。
举例说明这一全过程,能够想像勾子,插桩等全过程,在涵数进到和函数回到时,检查数据输入输出是不是合乎预估等等等等,根据添加某些“附加”的命令来开展查验,那样,对奔溃位置定位更为精确,误报率极低等等等等。
一开始怎样学习fuzz?
有许多一开始触碰二进制,或是学过过段时间二进制的小伙伴们会跟我说怎样去发掘,或是一开始怎样学习发掘二进制系统漏洞的方式,我觉得想对你说二进制系统漏洞发掘是1个没办法的全过程,随之如今某些类似strcpy_s,并不是手机软件安全系数非常好,fuzz的难度系数愈来愈高,愿意发掘高級系统漏洞,必须某些新手入门的专业知识,我的水准不高,这里跟大家共享某些我做fuzz的感受,都是为以后运用winafl开展fuzz做某些埋下伏笔。
在新手入门的系统漏洞发掘中,最关键的是关心程序流程将会存有的敏感点,我觉得和web很像,在二进制中,客户键入也应当不是可靠的,而这儿说白了的敏感点,就是说存有于客户键入和程序流程互交的全过程中,较为趣味的涵数有:strcpy,memcpy,sprintf,read等涵数,表针传送,指针赋值等实际操作中。
下边我来举1个简易的事例,根据IDA剖析1个手机软件,发觉有某处较为趣味的启用。
这儿人们关心到启用了某处strcpy的启用,人们能够根据windbg额外调节,在j_strcpy部位下断点,那样,程序运行中,要是启用了这处涵数,就会命中率这处断点(或许,这儿用OllyDBG都是能够的)。
在比较敏感涵数部位下断点,根据对样版的额外实行等等等等方式,直至命中断点,再对涵数实行前后左右的输入输出开展分辨,来确认样版是不是能够导致程序流程奔溃,是不是可控性,是不是某处可导致拒绝服务或是代码执行的系统漏洞。
根据事件实行状况,分辨栈室内空间的遮盖状况,来确认这儿是不是某处可运用的系统漏洞,可以看,这时栈回溯早已被畸型字符串冲毁,这一畸型字符串是结构样版中,客户可控性的字符串一部分。
这儿仅仅简易的叙述了一下下非常简单的二进制系统漏洞发掘全过程,我觉得细心回忆我叙述的这一全过程,对涵数进到发布时输入输出的查验,也就是说提升1个类似命令拓展的全过程,那么我觉得就是说自动化技术fuzz1个简易的实体模型。
0x02 Winafl fuzz前的提前准备
这儿,人们应用1个名叫VUPlayer的手机软件来运用Winafl fuzz开展多次简易的系统漏洞发掘,看了在网上afl-fuzz实例教程的小伙伴们将会会发觉我觉得这一发掘全过程用时很长,命令拓展必须实际意义上增加了编码沉余,提升了实行時间,这儿我出示1个能够开启VUPlayer缓冲区溢出系统漏洞的PoC,仅仅以便解读Winafl fuzz的应用和简易基本原理。
找寻1个将会存有的敏感点
以前我提及了Winafl fuzz应用时必须出示1个涵数偏位,而在上边的简易系统漏洞发掘中,我提及了对比较敏感涵数的找寻,那么人们就看来一下下VUPlayer的涵数构造,运用IDA剖析一下下VUPlayer的涵数一部分。
发觉函数调用了1个系统软件dll的涵数lstrcpyA,那样回溯这一lstrcpyA,发觉了某处涵数。
那么人们就挑选这一涵数开展fuzz,涵数通道偏位就是说0x5
相关文章
- 4条评论
- 只酷弥繁2022-05-30 21:34:56
- 据。 Winafl究竟是什么? Winafl是windows下这种发掘格式文件,协议书系统漏洞的全自动流水线专用工具,为何全自动流水线呢,由于对于特殊的手机软件,Winafl并沒有出示1个全方位的样本库,尽管winafl的确出示了
- 笙沉离祭2022-05-30 15:40:39
- 断点,那样,程序运行中,要是启用了这处涵数,就会命中率这处断点(或许,这儿用OllyDBG都是能够的)。 在比较敏感涵数部位下断点,根据对样版的额外实行等等等等方式,直至
- 绿邪只影2022-05-30 13:20:24
- fl fuzz开展多次简易的系统漏洞发掘,看了在网上afl-fuzz实例教程的小伙伴们将会会发觉我觉得这一发掘全过程用时很长,命令拓展必须实际意义上增加了编码沉余,提升了实行時间,这儿我出示1个能够开启VUPlayer缓冲区溢出系统漏洞的PoC
- 鸠骨池虞2022-05-30 17:12:25
- ,人们能够根据windbg额外调节,在j_strcpy部位下断点,那样,程序运行中,要是启用了这处涵数,就会命中率这处断点(或许,这儿用OllyDBG都是能够的)。 在比较敏感涵数部位下断点,根据对样版的额外