洞悉黑客的攻击手法,防黑力就此大跃进!

移动网络的兴起,使得软件漏洞战场渐渐从PC端转移到移动端。《黑客自首—极恶网络攻击的内幕技巧》这本书讲解常见的系统及软件漏洞的成因与攻击方法,相信可以为从事软件安全与移动安全相关领域的读者,提高漏洞分析的能力。

操作系统是集众多计算机专家的智慧所完成的人类重大工程,程序代码可能数亿行,但孔子说过,人非圣贤,孰能无过,是人就会犯错,那么组成操作系统的数亿行程序,当然也是充满了人类无意(或有意)所犯下的错。

网络世界处处充满漏洞

同样的道理,由人类所发明的网络系统架构,也是充满了许多无意或有意的错误。这些错误也许是一些技术上的逻辑问题,但对整个系统来说,可能就造成了可以让不相关的人进而控制这些系统,我们将这些错误通称为漏洞(Exploit)。

当全世界有了数十亿人、各行各业在使用这些系统时,这些可能微不足道的错误就会变得相对非常巨大。试这些系统所处的环境而定,小至个人隐私,大至金融、Utilities(水电瓦斯网络核电)、军事、国防、国安等领域。

从前帮人调试侠义精神的黑客早就不复存在,网络世界和真实世界早已合为一体,而虚拟货币的出现,让整个网络世界和真实世界的金融体系完全相通现今黑客的唯一目的就是拿到不劳而获的暴利,全世界每一个人的钱包都是他们攻击的目标

分析漏洞:攻击VS. 防御

对于攻击者,分析漏洞通常都是为了实现漏洞的利用,写出更稳定的攻击程序,之后可以用于入侵他人系统或出售。对于防御者,分析漏洞主要为了弄清楚漏洞的成因与攻击手法,以便制定出有效的漏洞检测与防御方案,帮助维护企业或单位的信息安全。

也有未在上述两种角色范围的漏洞分析人员存在,例如纯粹出于个人兴趣进行漏洞研究的技术人员,甚至是非专业人员。当分析者的工作与漏洞挂勾后,其分析漏洞的出发点基本就是攻击者或防御者的角度。

如何进行“漏洞分析”?

通常我们会利用各式各样的方法来分析漏洞,最常见的包括静态分析、动态调试,如果有原始程序时,就会进行原始程序分析;有时候我们也会利用不同时点的更新进行比较;如果能注入资料的话,最常见的就是污点关注。这本书就是围绕在这几个方式上。

1. 静态漏洞分析

静态分析是指在无需执行程序的情况下,通过IDA或JEB等反汇编/反编译工具逆向分析软件,以掌握其程序执行的逻辑和功能,进一步找出存在安全缺陷的程序;静态分析漏洞有时工作量比较大,特别是对于比较庞大的软件,例如IE浏览器。

如果只是为了分析某个函数的功能,定向的静态分析会比较直接高效,但如果想弄清楚不同函数之间的关系,以及变量、传回值或相互传递的参数,可能就需要结合动态调试执行程序去关注分析。

2. 动态调试

动态调试就是借助调试器关注程序的执行过程,包含执行中函数的调用关系、传递的参数变量和传回值,以及堆栈的分配情况。通过动态调试关注,可以层层回溯目前程序调用到的各个函数,有利于从触发宕机的函数往前回溯关注,更有目标性地分析,进一步加强分析效率。大部分的情况下,为了完整高效率地分析软件漏洞,会采用动静态结合的分析方式。

3. 原始程序分析

当分析者手上拥有软件原始程序的时候,就可以通过阅读原始程序或原始程序调试来分析软件,对于自己开发的软件或开放源码软件(例如Firefox、Chrome等),采用原始程序分析的方式可能会更便于了解程序功能,但大部分的情况下,我们要分析的软件都是闭源的,此时就得采用其他分析方式了。

4. 更新比较

对于一些大厂商,例如微软、Adobe,它们每月的第二个星期二(是星期三)都会联合发布更新,因此这一天也被称为“微软更新日”。在发布的更新中,可能会修复许多未公开的0 Day漏洞。

为了发现其中的0 Day,一些安全人员可能会对发布的更新(修复程序)与被修复的原文件(漏洞程序)进行比对,找到其中被修改的地方,然后从差异之处发现被修复的漏洞,这种方法就叫更新比较,属于静态分析的一种方法。

5. 污点关注

污点关注是指将外部输入资料标记为污点,然后在程序动态执行过程中,关注污点的传播过程,当污点被传播到控制执行流程或执行程序中时,就可能导致安全性漏洞的发生,在漏洞采撷与分析中,污点关注的想法可能被用得较多。

在很多信息安全专业的毕业设计中,经常见到污点关注的影子,其理论虽然挺好,也显得高端,但实际上能够做出较好成品的很少。

污点关注犹如“七伤拳”一般,“先伤己,再伤人”,开发污点关注工具,不仅耗时费力,而且开发完成后,执行比较大的工具常常需要执行很长时间,例如IE、Adobe等软件,有时甚至需要整整一天的时间。

一般是在漏洞位置比较隐蔽,其他分析方法无效或可能耗费过长时间的时候才使用,主要针对文件格式漏洞。另外,读者也可利用pin等动态插桩架构开发出动态分析工具,针对特定函数挂钩,例如堆积分配与释放函数,根据不同的漏洞场景制作对应的动态关注工具,可能效果更佳,更具实战价值。