这是漏洞挖掘的第一篇,整个课堂系列主要分享的是二进制程序的漏洞挖掘技术。
先推荐两本书,基础部分都在里面《深入理解计算机系统》和《软件调试》。这两本书虽然和漏洞完全无关,但这是基础中的基础,读通了很多东西都会理解了。
那这篇我讲点什么呢?我分享下漏洞挖掘中的流程。
通常形式WEB漏洞挖掘主要分析的是对数据处理的过程,而二进制漏洞挖掘也是分析的是数据处理过程;
WEB漏洞挖掘主要面对的对象是脚本语言和数据库系统,相对于二进制的漏洞挖掘则面对的是汇编等编译型语言;
WEB漏洞挖掘和二进制程序的漏洞挖掘有黑盒,白盒和灰盒3种挖掘方式;两种漏洞挖掘都需要考虑系统、网络等环境因素,同样也需要了解业务逻辑。
通过以上概述,不难发现其实二进制漏洞挖掘和WEB漏洞挖掘的内容基本一样,方式方法基本相通,两者有很多共通性。
通常,二进制漏洞挖掘可以使用FUZZING,符号执行,面向污点分析等,还有一些私有的挖掘方式,但无论哪种方式的漏洞挖掘技术,使用的前提都是要先理解你要挖掘的程序,那再挖掘之前需要了解程序的哪些东西呢?
基本上可以分为以上7点,而这7点当中的1-6点会直接影响到漏洞挖掘的效率和发现的概率,第7点则是附加点,如能了解到则会提高漏洞的挖掘效率,少走很多弯路。
有很多工具已经可以做到以上的分析,但是我并不建议使用工具去直接的分析这些,因为工具分析出来的结果是抽象的,并不能让我们能够有更直观的理解程序的整个流程和开发者的真正意图,也无法分析程序的业务逻辑。想更多的挖掘出二进制程序的漏洞,唯一的“捷径”就是彻底理解软件。
虽然我不建议直接使用工具进行漏洞挖掘,但是还是推荐一些辅助工具能让大家更好的理解程序的流程和掌握漏洞挖掘技术。
可能做过二进制漏洞挖掘的朋友会问我,为什么没有peach,afl等等之类的工具?
其实这类工具我也会使用,但我还是不推荐给大家,因为挖掘形式太单一。
下面我会通过一个案列来分享下如何通过以上方式来快速的分析一个程序的流程。
待分析程序为:NAT365网络监控软件。
程序有2个目录,分别是管理端和被管理端。
当我们拿到程序之后,先别急着直接放到IDA中分析,我们应该先了解其目录结构并运行软件。
看下目录结构,不难发现这里有很多乱七八糟的文件,暂时无需理会,我们直接运行主程序。我们要了解的是整个程序的运行过程,首先运行NET365网络监控主程序,然后再运行被管理端程序。
我们看到当运行被管理端程序的时候需要我们填写管理端的IP地址,由此可以说明被控端是主动链接管理端程序的,连接之后主控端会直接显示被控端的设备信息。
目前为止我们从运行过程中得知了一些信息,总结如下
通过以上4点,我们产生了几个疑问:
首先我们需要知道他们是如何进行通讯的,也就是说他们使用的协议。
了解协议前我们得选择一种分析工具,可以使用网络数据包分析工具进行分析,也可以用api监控类工具进行分析,但不建议直接使用调试器进行分析。
我这里使用API监控进行数据包的分析,从之前得到的信息来看,我们知道是被管理端首先发送数据包给管理端的,那我们需要监控的是被管理端,而不是管理端。
首先我们先关闭被管理端软件,然后运行API监控。
在API FILTER 这里把所有网络的API全都打勾,然后运行被管理端的setup.exe。
API监控程序会弹出对话框,全部监控起来就行了。
找到system.dll上面一个可能每个进程的名字不一样,但是目录是和system.dll一起的,我这里是UnpackBystander.exe。
左窗口Ctrl+A 全选后Copy出来。我们知道,发送数据用的函数是Send(),所以我们查找第一个Send。
序列号是54,我们到API监控中定位到54。
看蓝色标记的177XXX后面跟着一串字符串,我们并不知道是什么东西,可以先无视,为什么看第一个Send呢?因为当被控制端连接控制端,被控制端会发送设备信息给控制端,这肯定会产生第一个Send,为什么选UnpackBystander.exe这个进程呢?也是因为其他的进程并没有被Send调用。
通过这样简单的分析,我们已经能分析出一些基本的数据格式:
大家不妨按照这样的方式去分析下上面这些数据格式,当作练习,而加密方式我们在下一篇中进行分析。至于其他的几点,也将在今后的几篇中进行阐述。
程序在XXXX中没做好相应的处理,出现漏洞,如何发现这个漏洞的,也会在后几篇中带领大家一步一步的挖掘。
希望这篇能够让大家少许的理解二进制漏洞挖掘的一些方法,掌握好基础,才能更好的进行漏洞挖掘,切记浮躁和急于功成。有误之处请指出,谢谢。
【原文:VSRC二进制漏洞挖掘课堂 | 第一篇 作者:John.Shi 安全脉搏整理发布】
本文作者:VSRC
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/50778.html
博主,你好,我是一个初学者,只是对渗透很感兴趣,博主,能否指点一下初学者改如何学习渗透那。