论文部分内容阅读
目前针对Windows操作系统的进程行为监控的研究较少,已存在的工具比较简单,相关技术并未完全公开,因此这些监控技术很容易被当前存在的反调试技术或软件发现,如加入代码加密和反调试功能的程序,通过常用的调试器进行直接调试分析已经无法进行,常用的进程监控分析工具或API调用监控工具也无法使用,必须要通过前期的脱壳过程,才能进行调试分析,或者是把已存在的监控工具进行隐藏,才能进行程序的分析。然而,脱壳或隐藏过程需要大量的时间,因为程序的加密强度可能很大,对监控程序的检测点也非常之多,想短期内对目标程序进行整体的分析非常困难,而目前病毒、木马大量泛滥,分析工作越来越难,传统的分析技术已经落后。通过对Windows操作系统内核大量的逆向工程,深入研究Windows内核的内存管理的基本原理和实现过程,以及系统创建进程的基本过程,从而发现了一种基于APC和SystemCall替换的全新的进程行为监控手段,即先创建处于挂起状态的目标进程,通过内核驱动程序修改目标进程的某些关键内核数据结构,再利用APC向挂起进程插入监控模块,监控模块在目标进程空间修改关键系统函数指针SystemCall,从而可以监控所有的Native API调用,从而实现了一种全新的进程行为监控系统。该实现方案不需要对系统进行全局挂钩,只修改目标进程的内存空间,因此只影响单个进程,对操作系统的其他进程没有任何影响,有较高的运行效率;由于使用APC技术可以在进程刚被创建但开始运行之前便修改了相应的数据结构,从而可以对进程从运行到死亡的整个过程进行完整的监控;由于监控点是在用户态创建的,并且修改的关键系统指针SystemCall只有经过特殊内核处理以后才可以修改,从而很少会与其它主流监控技术或软件冲突,并可以很好地与杀毒软件、主动防御软件这类安全防护软件兼容;由于创建的监控点所处的位置非常底层,所有的Native API调用都可以截获,再加上监控系统主要运行在用户态,因此可以很方便地进行功能扩展,从而可以实现对目标进程文件操作的监控,注册表操作的监控,进程操作的监控,内核驱动通信的监控等。