使用BinDiff分析补丁文件
简介
本片文章主要是出自吾师邱老师,是其在教我们漏洞相关知识时写的,写的十分详细。今天做一回搬运工,大部分内容为整合邱老师的内容。
0x00 工具与环境
分析环境为 Win10+IDA7.0+BinDiff5.0
注:IDA7.4 必须搭配 BinDiff6.0,IDA7.0/7.2 必须搭配 BinDiff5.0
下载地址:
BinDiff:https://www.zynamics.com/software.html
笔者这里环境时IDA7.0,所以这里下载BinDiff5.0.msi,如图:
(注:点击上图中的bindiff5.msi没反应时,可右键新建标签页打开链接,进行下载。)
安装BinDiff时,在选择==IDA目录时==,要将其路径设置到自己IDA所在的根目录。如图:
其他的选项一路Next就可。若安装成功,可在IDA左上角File选项中,可看到BinDiff选项,如图:
0x01 补丁分析实践
本次比较的漏洞补丁版本为KB4551762,上一个版本为KB4540673,漏洞编号为CVE-2020-0796
,影响的操作系统为==Win10 1903/1909==,受影响文件:客户端 mrxsmb.sys ,服务端 srv2.sys 。
漏洞的介绍:
2020年3月11日,某国外安全公司发布了一个近期微软安全补丁包所涉及漏洞的综述,其中谈到了一个威胁等级被标记为Critical的SMB服务远程代码执行漏洞(CVE-2020-0796),攻击者可以利用此漏洞远程无需系统账户验证,通过发送构造特殊的恶意数据导致在目标系统上执行恶意代码,从而获取机器的完全控制权。此漏洞主要影响支持SMBV3.1.1的设备,理论上存在蠕虫化的可能性。
备份文件
查看 CVE 资料可知漏洞影响版本主要是 Win10 1903/1909 。根据前述补丁编号,下载好相应的文件,对受影响的文件进行分析。
以下是 x64 版本受影响的 MD5 列表:
文件 | 打补丁前 MD5 | 打补丁后 MD5 |
---|---|---|
mrxsmb.sys | A6F9BBFB31A1F17844B77FD642EC83A5 | E242713AD12625A58C07F053C3696981 |
srv2.sys | F508EC2BFC244442D76091CB03BAE110 | F037DE85645D30A21CD79CB1F8BB706A |
下载对应的PDB文件
因为微软会提供符号文件帮助分析,所以需要下载打补丁前后的 pdb
文件,方法:
1.在 WinDbg 目录下打开命令窗口;
2.执行命令,下载PDB文件:
1 | symchk -v <MoudleFilePath> |
3.下载成功后,将下载的文件命名成和原始文件同名的文件,这里是 mrxsmb.pdb,并将该文件复制到待分析的 mrxsmb.sys 同级目录。
使用 BinDiff 进行比较
将打补丁前后的文件的 pdb 下载并改名后复制到待分析文件同级目录后,用 IDA 分析待分析文件,并生成 idb(或 i64)文件。将新、旧版本的文件 idb 都分析生成好。如图:
然后打开其中一个idb文件,并从 File 选项中选择 BinDiff,如图:
注:不能有中文路径,包括用户名也不能为中文。
然后再从 IDA 打开 Matched Functions 窗口,点一下左上角的 Similarity,让相似度最低的排在前面,如图:
随便选一个函数,右键 ->View grow graphs,BinDiff 便会打开一个比较窗口,如图:
按 ctrl+鼠标滚轮可进行放大与缩小。
寻找漏洞函数
后面就是分析了,仔细对比补丁做的修改,有条件的话尝试调试,最终分析出漏洞原理