IT学习网 - 爱学习 - 最具影响力综合资讯网站 -- 中国IT界的领航者!
热门关键字:      88888  as  xxx
站外
广告
站外
广告

从二进制漏洞分析入门到辅助分析脚本诞生 - 安全客 - 有思想的安全新媒体

发布时间:2016-08-16 10:34文章来源:网络整理文章作者: 学习网点击次数:
作者:k0shl(一)写在前面从接触二进制漏洞以来一直在边学边思考,有没有一些共通的地方,可以通过一些简单的脚本或者工具来简化一些过程,不得不承认二进制漏洞无论在挖掘,分析,还是最后写exp上都是

作者:k0shl


(一)写在前面


从接触二进制漏洞以来一直在边学边思考,有没有一些共通的地方,可以通过一些简单的脚本或者工具来简化一些过程,不得不承认二进制漏洞无论在挖掘,分析,还是最后写exp上都是有一定难度的,经过不断的请教,拜读大牛们的作品,也逐渐摸到了一些门道,下面的分享如有不当之处请多多指教,大牛轻喷:)

 

感谢蛙师傅给予的灵感!

 

相应的脚本也已经开源放在我的github下,欢迎大家多提意见,也可以进行修改,后续我也会根据我逐步学习逐步改进增强工具的功能。这里之所以说是辅助分析工具,是因为我还想不到一种方法能够完全自动化分析漏洞的成因,只能说简化一些漏洞分析过程中的过程。

 

在二进制漏洞的入门学习中,我个人感觉相比漏洞挖掘,构造PoC,编写Exp,只有漏洞分析是最核心也是最容易入手的,通过已有的PoC,搭建复现漏洞的环境,获得存在漏洞的软件,复现漏洞后就可以进行分析了,而我写的这个脚本,也是为了简化一些漏洞分析过程,从而更清晰直观的看到漏洞执行流程。

 

(二)为什么要写辅助分析脚本


说到二进制漏洞分析,在windows下,入门阶段最好用的两款工具就是windbg和IDA pro对于这两款工具,网上相关的介绍有很多,这里我就不再多做赘述,在我进行漏洞分析的过程中,经常用的方法就是windbg的动态调试,配合上IDA pro的静态分析,其中windbg提供了很强大的动态调试功能,包括堆栈的回溯,跟踪,加载符号表中特定的变量,结构体等等;而ida pro则提供了静态分析的功能,比如指令流流程,伪代码还原等等。

 

一般当我们第一次开始学习漏洞分析的时候,拿到一个崩溃场景,往往会碰到这样的崩溃场景。


http://p1.qhimg.com/t01a5a8808494e6711d.png

造成软件或者系统崩溃的原因有很多,比如某些关键地址,关键指针被覆盖,导致引用时发生错误,比如空指针引用,比如越界操作内存等等,而二进制漏洞分析就是要分析为什么会造成崩溃的发生,这样无论对于修补漏洞,还是编写利用工具,都有极大的帮助。

 

在漏洞分析过程中,避免不了这样一个过程----回溯。刚才提到,漏洞分析就是要分析为什么会造成崩溃的发生,那么就少不了对程序执行流程的回溯,通常在windbg中,我们使用“kb”命令回溯堆栈调用的情况。

http://p2.qhimg.com/t015354f7c9f075668a.png

通过kb命令,我们可以看到在程序执行到崩溃场景前调用的函数内容,而这个调用往往是嵌套调用,就是栈增长方向是外层函数,因为熟悉堆栈的小伙伴应该知道,栈的开辟是由高地址向低地址开辟,堆是由低地址向高地址开辟,也就是每次调用内层函数的时候,栈就会向低地址方向开辟一片空间使用,我们可以这样简单理解函数调用关系。

http://p2.qhimg.com/t01f3df0f31cd36133a.png

我们需要在ida中动态跟踪这个调试过程,追踪从接收到PoC中的畸形数据,到触发漏洞的整个过程,才能较为完整的完成对漏洞的分析,那么实际上在一个函数内部,涉及到大量的条件判断,跳转等功能,在ida的指令流程图中可以看出这个过程在静态分析中,会耗去很多时间。


http://p6.qhimg.com/t01e77ecb25220af407.png

那么实际上,我写的这个辅助分析脚本,其实也是为了针对这种情况而诞生的。

 

(三)从PcMan FTP漏洞看辅助分析脚本


这里我以PcMan FTP这个漏洞为例,先结合漏洞的分析过程,再讲解辅助分析脚本的编写及功能,首先这个漏洞是由于PcMan FTP在对用户传输的数据进行处理的过程中,没有对传输的内容进行长度控制和内容检查,从而导致可以通过ftp指令+畸形字符串来覆盖返回地址,最后导致远程代码执行,在发送PoC之后,这边用windbg对进程进行附加,可以捕获到崩溃场景。


(d4.220): Access violation - code c0000005 (first chance)

 

First chance exceptions are reported before any exception handling. This exception may be expected and handled.

eax=00000000 ebx=00000000 ecx=00000000 edx=0000000c esi=0012edc4 edi=00000004

 

eip=41414141 esp=0012edb8

ebp=00a61b40 iopl=0

nv up ei pl nz ac po nc

cs=001b

ss=0023  ds=0023

es=0023  fs=003b  gs=0000

efl=00010212

41414141

jQuery214049903038586489856_1446637471630

???





 

通过回溯,我们找到了一处call recv的调用,这个调用会获取畸形的payload。

 

0:000> g Breakpoint 0 hit

eax=0012edc4 ebx=00000000 ecx=000000fc edx=00a61aa4 esi=00000000 edi=00000402


从二进制漏洞分析入门到辅助分析脚本诞生 - 安全客 - 有思想的安全新媒体
本文由 IT学习网 整理,转载请注明“转自IT学习网”,并附上链接。
原文链接:http://www.ourlove520.com/Article/others/jiami/408003.html

标签分类:

二进制漏洞分析入门 辅助分析脚
上一篇:上一篇:三星智能监控摄像头被爆远程代码执行漏洞(含POC) - 安全客 - 有思想的安全新媒体
下一篇: 下一篇:'Shadow Brokers' 组织100万比特币(5.68亿美元)叫卖美国军方网络攻击工具(含视频) - 安全客 -
无觅关联推荐,快速提升流量