黑客之瞳——调试器(一)

前言

调试程序不管对于工程师这样的开发人员还是黑客这样的安全人员都十分重要,能快速在大篇幅的代码中找到bug并采取修补或者利用的手段,而本系列博文是围绕安全方面的调试进行撰写的,不过技能总是相同原理只是使用不同罢了。

概念

调试器使得调试者能够跟踪一个进程的运行时状态,被称为动态分析技术,在Justin的《Gray Hat Python》书中列举了需要此技术的的应用场合,如开发基于安全漏洞实施攻击的exploit程序,或者作为fuzzing测试框架进行漏洞挖掘时的辅助工具,以及恶意软件分析等。
同时在安全工作方面,调试器为软件缺陷审计提供了一组极为有用的特性和功能,而大多数调试器是具有以下的基本功能的:运行、暂停执行和单步执行、设置断点、修改寄存器和内存数据值以及捕获发生在目标进程中的异常事件。

区分白盒调试器和黑盒调试器

大多数开发平台以及IDE都有自带一个内建的调试器,用于帮助开发人员对程序进行源码级别的跟踪和调试,这种源码级别的调试方式可以使用户对被调试的进程获取较高级别的控制能力,而这类调试器被称为“白盒调试器”,通常用于软件的开发阶段。
以上是Justin在书中的描述,而通俗的讲便是可见源码的调试便是白盒调试。
而对于逆向工程师或者漏洞挖掘者而言,很难有机会拿到源码,因而便需要利用黑盒调试器对目标程序进行追踪。黑盒调试器的设计基于一个假设,便是需要被分析的目标软件对于黑客而言是一个完全不透明的黑盒,黑客唯一获得信息的来源就是以汇编代码形式呈现的反汇编结果,而通过这种方式来发现软件漏洞和缺陷是具有挑战性以及耗时的过程,但也是一名优秀的逆向工程师需要驾驭的。

黑盒调试器

黑盒调试器分为两类:用户态调试器,内核调试器。
用户态(ring3)是指cpu处理器在执行应用程序代码时所处于的一种特定状态,用户态下的应用程序是以最低权限运行的。
内核态(ring0)代表了最高级别的权限,操作系统的内核代码连同驱动程序等这类底层组件正是运行在内核态下,例如使用wireshark进行网络嗅探抓包时就是和一个正在内核态下的网卡驱动程序进行交互。

逆向工程师常用用户态调试器

WinDbg,是微软推出的调试器;
OllyDbg,是Oleh Yuschuk开发并免费公布的调试器;
GNU调试器(gdb),是在linux环境下的调试工具。
PyDbg,由纯Python实现的调试器,只要通过Python脚本的编写与调试器插件接口便能实现自动化进程控制;
Immunity Debugger,风格类似OllyDbg的图形化界面调试器,支持Python等编写的脚本插件,拥有一套强大的Python调试库。

小结

关于调试器的一些基本了解以及在安全工作中常用的调试器都进行了认识和基本了解,之后会对调试的原理进行深入学习。

————————————
参考:

  • Justin《Gray Hat Python》

你可能感兴趣的:(security)