1、A Dissertation Submitted to Shanghai Jiao Tong UniversityFor the Degree of MasterRESEARCH AND IMPLEMENTATION OF THETECHNOLOGY AGAINST HIPS UNDER WIN32PLATFORMAuthor: Jun-jie ChenSpecialty: Electronics and Communication EngineeringAdvisor: Prof. Zhi XueSchool of Electronics and Electric EngineeringSh
2、anghai Jiao Tong UniversityShanghai, P.R.ChinaDecember, 2009上海交通大学硕士学位论文 摘要Win32 平台下对抗 HIPS 技术的研究与实现摘 要随着计算机在各行各业应用的深入和普及,围绕系统安全的研究也成为信息安全领域最热门的研究方向之一。“攻 ”与“防”是永久不变的话题,两者互补使得技术不断更新发展。木马、病毒技术迅速发展,同时安全软件也日新月异,主机入侵防御系统(Host Intrusion PreventSystem,HIPS)技术是安全软件的发展方向之一。本文通过分析安全软件HIPS 模块的一些技术原理,从隐式的和显式的对抗
3、两种技术方式展示了目前 HIPS 系统的脆弱性。同时也提出一些改进的建议。本文首先叙述了 HIPS 技术特点、类型以及相关的系统内核原理,然后在此基础上,从显式以及隐式两大方向对 HIPS 系统进行分析研究,剖析了 HIPS 机制目前存在的一些缺陷问题,并利用这些缺陷相应的去对抗 HIPS。在显式对抗 HIPS 系统中,重点研究了 HIPS 系统的两种进程守护机制及安全软件自身设计上的一些不足,并且对应的分别设计了对抗 HIPS的方法,同时对于每种对抗措施都编写了相应的实现代码,并在实际系统环境中进行测试完善,在实际应用中达到了比较好的效果。在隐式对抗 HIPS 系统中,主要讨论了恢复影系统服
4、务调用表(SystemService Dispatch Table,Shadow SSDT)、利用未导出函数以及突破驱动加载监控。提出了一种基于 Shadow SSDT 以及底层回调(callback)函数的新型键盘记录。同时重点分析了 HIPS 系统在驱动加载监控中存在的第 I 页上海交通大学硕士学位论文 摘要问题以及相应的绕过技术。本文在研究对抗 HIPS 系统的同时,针对 HIPS 系统的不足,从木马病毒角度及人为因素角度两方面分别提出了几种改进措施,并且相应也给出了技术上的一些实现。本文在最后提出了对抗 HIPS 系统进一步的研究方向。本文的研究工作弥补了 HIPS 系统现有的不足,对
5、 HIPS 系统的改进提供了帮助和参考。关键词:主机入侵防御系统,系统服务调用表,进程,驱动,键盘记录,钩子第 II 页上海交通大学硕士学位论文 ABSTRACTResearch And Implementation Of The TechnologyAgainst HIPS Under Win32 PlatformABSTRACTWith the development of computer technology widely applied in everywalk of life, research on system security has become one of the mo
6、st popularresearch directions in the field of information security. “Attack“ and “defense“is an eternal subject. The complementation of these two technologies makesthe technique of information security develop. With the rapid development ofthe technique of trojan horses and viruses, security softwar
7、e is also changing.HIPS (Host Intrusion Prevent System) is just as one of the future developmentdirections for security software. This paper analyzes the technical principlesof HIPS module in the security software, and then from the implicit andexplicit ways, demonstrates the vulnerability of the cu
8、rrent HIPS systems.Besides, some suggestions for improvement have also been put forward.This paper describes the characteristics, types, and related kernel systemstructure of HIPS technical. Based on these theories, the article analyses someweaknesses of the mechanism of HIPS from perspectives of th
9、e explicitconfrontation and the implicit confrontation of the HIPS system. We takeadvantage of these flaws to antagonize the HIPS system.In the part of introducing explicit confrontation of HIPS system, wefocus on two kinds of mechanism of process guard in HIPS system, and thedeficiencies of securit
10、y software itself. Base on the research of HIPS system,we take measures to combat security software and do the correspondingcoding .Besides, we test and improve codes in the actual system environmentand achieve a relatively good results in practical applications.In the part of introducing implicit c
11、onfrontation of HIPS system, we第 III 页上海交通大学硕士学位论文 ABSTRACTfocus on the resumption of Shadow SSDT (System Service Dispatch Table),the use of a inexpert functions and the escaping of driver-load monitoring.Basing on the resumption of Shadow SSDT and the underlying callbackfunction, a new keyboard has
12、 been proposed. At the same time the paperstresses on the problems of driver-load monitoring of HIPS system as well asthe corresponding bypass techniques.From the perspectives of the virus behavior and Man-made factors,several measures for improvement have been proposed in this paper accordingto the
13、 deficiencies of the HIPS. Besides, the corresponding technicalrealizations have also been given.At last of this article, we put forwards the direction of future research ofthe technology against HIPS. This research makes up for deficiencies in HIPSsystem and do certain help for HIPS improvements.Ke
14、ywords: HIPS, SSDT, process, driver, key-logger, hook第 IV 页上海交通大学硕士学位论文目 录目录摘 要 IABSTRACT .III第一章 引言 . 11.1 背景 11.2 HIPS 的定义 11.3 HIPS 与传统反病毒软件的区别 21.4 HIPS 的类型 21.4.1 典型 HIPS 机制 . 21.4.2 特殊 HIPS 机制 . 31.5 HIPS 的系统结构 31.6 本文的组织结构. 4第二章 HIPS 的底层工作机制和原理. 62.1 环 0 级、环 3 级. 62.2 系统服务调用表. 72.3 系统服务分发过程.
15、82.3.1 传统系统调用 82.3.2 快速系统调用 92.4 中断处理机制. 112.5 本章小结 13第三章 显式对抗 HIPS 机制 143.1 进程的打开和结束. 143.2 AD 防御体系的单级进程守护 . 153.2.1 单级进程守护原理 163.2.2 破解 360 安全卫士单级进程守护 163.2.3 实验结果 173.3 AD 防御体系的两级进程守护 . 183.3.1 恢复 SSDT 193.3.2 截获新进程生成的消息 203.3.3 PspTerminateThreadByPointer 函数的查找 213.3.4 实验结果 223.4 利用安全软件本身的各种缺陷.
16、233.4.1 江民软件程序扩展名缺陷 233.4.2 manifest 资源配置文件缺陷 24第 V 页上海交通大学硕士学位论文 目录3.5 本章小结 25第四章 隐式对抗 HIPS 机制 264.1 利用 Shadow SSDT 实现用户层木马模块 . 264.1.1 Shadow SSDT 的查找及恢复 264.1.2 常见木马模块用户层键盘记录的实验 274.2 利用过滤驱动机制实现隐式对抗. 294.2.1 过滤驱动机制 294.2.2 键盘过滤驱动实现机制 294.3 利用底层未导出函数实现隐式对抗. 304.3.1 键盘过滤驱动的不足. 314.3.2 键盘驱动的消息传送机制 3
17、14.3.3 inline hook 回调函数实现键盘记录 324.3.4 Shadow SSDT 与未导出函数两种技术的结合 344.4 驱动加载守护技术. 354.4.1 常规驱动安装手段. 364.4.2 两级驱动加载突破安全软件 . 364.4.3 发送窗口消息绕过驱动加载监控 . 394.4.4 利用可信任驱动绕过驱动加载监控 424.4.5 利用混音驱动绕过驱动加载监控 444.5 本章小结 46第五章 HIPS 的改进技术研究. 475.1 SSDT 监控的改进. 475.1.1 inline hook 技术 . 475.1.2 sysenter Hook 技术. 495.1.3
18、 多级 hook 技术 495.1.4 多类 hook 技术 505.1.5 deep hook 技术 . 515.2 驱动加载监控的改进. 525.2.1 常规驱动加载监控 525.2.2 两级驱动加载监控 525.2.3 窗口机制的保护 535.2.4 可信任驱动的保护 535.3 FD 防御体系的加强 . 555.3.1 FD 防御系统的重要性 . 555.3.2 FD 防御系统的改进 . 555.4 多种技术结合加强 HIPS . 565.5 本章小结 57第六章 总结和展望 . 58第 VI 页上海交通大学硕士学位论文 目录6.1 本文工作总结. 586.2 研究展望 59参考文献
19、. 60致 谢 . 63攻读学位期间发表的学术论文 . 64第 VII 页上海交通大学硕士学位论文 第一章 引言第一章 引言1.1 背景在当前的信息时代里,计算机应用日益普及,已经成为人们生活及工作中不可或缺的工具。同时针对计算机系统的攻击越来越多,2009年7月份,据金山公司安全报告:新增病毒样本数3,304,864个,感染电脑数量为21,900,028台次,较六月都有较大的增长。可以看到,木马病毒以及其他各种恶意程序软件1得到空前的发展,同时越来越多的恶意代码开始基于内核操作来实现自身的特殊行为。传统的反病毒软件技术已经无法适应这股潮流,于是新的技术也会相应发展来对抗新型的恶意程序。主机入
20、侵防御系统2( Host Intrusion Prevent System,HIPS)就是与之对抗的新型反病毒技术之一,目前国内外越来越多的安全软件都采用这种技术,所以深入研究 HIPS 机制以及恶意软件行径对于安全技术的进一步发展有着重要的意义。1.2 HIPS 的定义HIPS 主机入侵防御系统,也称为基于主机的入侵防护系统。HIPS 实时监控计算机中软件的各种行为操作,例如尝试打开新的进程、修改注册表信息等,并向管理员报告请求允许的软件进行的相关操作。HIPS 主要包含对象、事件以及规则3三个元素。一个程序试图进行某种操作时,都会产生相应的一个事件,在这个事件中,通常有两个对象,一个源对象
21、,一个目标对象,HIPS 监控拦截就是基于这种操作中的事件、对象。规则是 HIPS 机制的核心, HIPS 是通过规则库的准确设定来逐步完善的。 HIPS在拦截事件后,首先在规则列表中进行匹配,如果有合适的匹配规则,则 HIPS 就会根据规则的设定来进行合适的操作放行或者阻止;否则弹出对话框提交给用户判断。如果一个 HIPS 系统脱离了规则的设定,就会导致对相同事件进行重复的选择。第 1 页上海交通大学硕士学位论文 第一章 引言1.3 HIPS 与传统反病毒软件的区别传统反病毒软件主要包含三个部分:病毒特征库、扫描引擎以及行为监控模块。反病毒软件的扫描操作通常如下进行:通过扫描引擎,反病毒软件
22、将目标样本中的文件特征码与病毒特征库中的特征码进行比对,如果发现特征码相符,则被判定为病毒,并通过扫描引擎清除或删除。行为监控操作也是类似。可以看到传统的反病毒软件主要是基于病毒特征码进行监控和查杀的,对于未知的病毒特征码是无法识别的。相对的 HIPS 机制并不是按照特征码来定位恶意程序代码,它主要是基于软件自身的行为,判断软件是否对系统中一些关键部分进行了修改替换,然后再做出警报提示计算机用户。因而即便正常的应用程序进行例如加载驱动的操作,HIPS 也会做出相应的警报提示。另一方面,如果计算机用户的基础知识不足,错误放行,那么恶意程序就会侵入操作系统。HIPS 本身并没有查杀能力,主要是拦截
23、恶意程序的行为,但是不能杀灭恶意程序本身,更不能修复被感染的文件。1.4 HIPS 的类型HIPS 根据自身的用途,主要包含两种类型4:典型 HIPS 机制、特殊 HIPS 机制。1.4.1 典型 HIPS 机制典型 HIPS 机制主要应用于防止恶意软件对个人计算机家庭用户的威胁。根据采用的技术手段的不同,目前主要有如下几种模型:基于异常检测的 HIPS 机制这种类型的 HIPS 机制主要通过系统监控以及软件行为的分析来阻止恶意软件。基于文件签名以及异常检测的 HIPS 机制在异常检测的基础上添加文件签名检测。基于黑白名单、文件签名以及异常检测的 HIPS 机制这类机制在原有文件签名、异常检测
24、的基础上添加了黑白名单,把操作系统中已有一系列可信任的系统文件、系统进程以及通过认证的应用程序都放入白名单中;相对的,把带有恶意软件标识的应用程序放入黑名单中。基于纯白名单的 HIPS 机制第 2 页上海交通大学硕士学位论文 第一章 引言这类 HIPS 只提供白名单。凡是白名单中没有记录的未知应用程序,一律不允许运行。基于虚拟技术的 HIPS 机制主要通过例如沙盒5等虚拟化技术来运行未知应用程序。1.4.2 特殊 HIPS 机制特殊 HIPS 机制主要针对 rootkits6、“0day attacks“、缓冲区溢出等特殊攻击手段。这类 HIPS 机制主要用于软件数据库系统(容易受到缓冲区溢出
25、攻击 )以及一些安全性很高的系统中。1.5 HIPS 的系统结构HIPS 主要包含三个面的立体防体系7。1) FD ( File Defend ) 文件防御体系2) AD ( Application Defend ) 应用程序防御体系3) RD ( Registry Defend ) 注册表防御体系FD恶意程序 防御 AD防御 RD防御系统图 1-1 HIPS 防御体系结构Fig.1-1 Defense architecture of HIPSFD 防御体系是阻止木马病毒在系统中创建文件,例如有些病毒的运行是通过explorer.exe 来创建木马进程。AD 防御体系主要针对的是恶意软件的执行
26、时的一些行为以及对安全软件的一些第 3 页上海交通大学硕士学位论文 第一章 引言操作行为。RD 防御体系就是恶意软件对注册表的操作做出相应的警告提示。虽然 HIPS 包含了三大防御体系,但是一般的 HIPS 软件只采用其中的几种,全方面的防御体系对于大都计算机用户都是多余了,另外本身三大体系之间也有着重合的地方。目前大都传统的反病毒软件都集成了 HIPS 机制,这样在监控到危险行为的同时能够查杀相应的恶意程序。采用了 HIPS 的安全软件一般的构架图 8如下:用户模式进程HIPS文件访问规则进程启动控制注册表访问规则系统行为规则进程活动行为判定邮件监控 文件监控 网页监控传统监控引擎图 1-2
27、 带 HIPS 的安全软件架构图Fig.1-2 Architecture diagram of security software with HIPS1.6 本文的组织结构第一章引言介绍了 HIPS 产生的技术背景以及 HIPS 相关的概念。第二章概述了本文对抗 HIPS 的各类技术所需要的操作系统相关原理,主要包括Windows NT 系统的内核相关知识以及操作系统的系统调用、中断机制。第 4 页上海交通大学硕士学位论文 第一章 引言第三章主要介绍了显式对抗采用 HIPS 的安全软件。主要从突破 HIPS 的 AD 防御体系出发,最终达到完结安全软件的效果。第四章描述了隐式对抗采用 HIPS
28、 的安全软件,包括 Shadow SSDT、未导出函数等概念及相关技术。同时还详细研究了绕过安全软件驱动加载监控的各种技术。第五章主要讨论了 HIPS 技术的一些改进思路。第六章对整篇文章进行了总结,并给出了下一步的研究课题。第 5 页上海交通大学硕士学位论文 第二章 HIPS 的底层工作机制和原理第二章 HIPS 的底层工作机制和原理安全软件一切的自我保护或者 HIPS 防御体系,归根结底都是要利用操作系统的系统调用机制、中断处理机制,对系统函数、中断处理函数等做相应的处理从而达到相应的目的,所以本章重点讲述的就是系统函数的调用机制,函数查找,函数获取以及中断处理机制。2.1 环 0 级、环
29、 3 级为了说明系统函数调用过程,首先必须了解 Intel 微芯片的访问控制方式。Intel 的 CPU 将访问特权级别分为 4 个级别9:环 0 级、环 1 级、环 2 级、环 3级。环 0 是最高权限,环 3 是最低权限。每个环都是内部保存的一个数字,而微芯片上实际是没有真正的物理环。Windows 操作系统中只使用其中的两个级别:环 0 级和环 3 级。并不使用环 1 级和环 2 级。环 0 级只给操作系统使用,内核代码都在环 0 级别上运行,环 3 级一般应用程序都可以使用。在 Windows 操作系统中,CPU 负责去跟踪软件程序代码与内存分配环的情况,并会在各个环之间实施访问控制。
30、通常情况下,每个软件程序都会分配到一个环编号,它无法再去访问具有更小编号的环。例如,一个环 3 级的程序是不允许访问环 0 级的程序代码的,若试图执行环 0 级指令,Windows 则会显示“非法指令” 错误信息,并将会导致 CPU 产生异常中断。图 2-1 显示的就是 Intel 微芯片的环以及内核模式程序和用户模式程序在微芯片环中的具体位置。环 0 级和环 3 级的分级制度,使得操作系统有效的处理内核的程序代码,不必担心用户模式程序的恶意破坏而造成的系统不稳定。第 6 页上海交通大学硕士学位论文用户程序 环3第二章 HIPS 的底层工作机制和原理内核程序环0图 2-1 CPU 特权图Fig
31、.2-1 CPU privilege graph2.2 系统服务调用表系 统 内 核 中 有 两 个 很 重 要 的 数 组 表 10 , KeServiceDescriptorTable 及KeServiceDescriptorTableShadow,前者定义了 ntoskrnl.exe 中实现的核心模块的系统服务,用于基本的系统调用;后者包含了在 Windows 子系统内核模式部分 Win32.sys中实现的 Windows USER 和 GDI 服务,它即可用于基本系统调用也可用于 Win32k扩充系统调用。KeServiceDescriptorTableShadow 数组表的具体结构:
32、/ KeServiceDescriptorTableShadow typedef structSYSTEM_SERVICE_TABLE ntoskrnl ; / ntoskrnl.exe 导出函数SYSTEM_SERVICE_TABLE win32k ; / win32k.sys 导出函数SYSTEM_SERVICE_TABLE Table3 ; / 未使用SYSTEM_SERVICE_TABLE Table4 ; / 未使用 SERVICE_DESCRIPTOR_TABLE, *PSERVICE_DESCRIPTOR_TABLE ;两个数组表在操作系统装入 win32k.sys 模块之前是一
33、样的,里面只包含一个服务第 7 页上海交通大学硕士学位论文 第二章 HIPS 的底层工作机制和原理表,即第一个元素,它指向了系统服务调用表 (System Service Dispatch Table,SSDT11);当系统装入 win32k.sys 后,KeServiceDescriptorTableShadow1就指向了Shadow SSDT。系统服务调用表的具体结构如下:/ SYSTEM_SERVICE_TABLE 表typedef structPNTPROC ServiceTable ; / 指向系统服务调用表 SSDTPDWORD CounterTable ; / 使用计数DWORD
34、 ServiceLimit ; / 函数例程的个数PBYTE ArgumentTable ; / 指向系统服务参数表 SSPT SYSTEM_SERVICE_TABLE, *PSYSTEM_SERVICE_TABLE;另外 KeServiceDescriptorTable 、KeServiceDescriptorTableShadow 数组表中预留了空白服务表用于系统扩充。HIPS 很多的机制都是需要 hook 系统服务调用表12中的各类函数来达到监控的效果。2.3 系统服务分发过程Windows 操作系统的系统服务分发过程 1315就是系统函数调用过程(SystemCall),操作系统在用户
35、层提供一组系统调用的接口,称为“ Win32 应用程序接口”,即 Win32 API,封装在 Kernel32.dll 中,它提供了操作系统环境由用户态切换到内核态16 的功能 就是把应用程序的请求传递给内核,调用相应的内核函数完成所需的处理,并将处理的结果返回给应用程序的一个过程。2.3.1 传统系统调用Windows 操作系统传统的系统调用是通过中断指令“int 0x2e ”进入内核实现的。当 CPU 在用户空间执行中断指令“int 0x2e”时,CPU 的运行状态就会从用户态切换到了内核态,在保存相应的寄存器信息到系统堆栈以后,就会从中断向量表(InterruptDescriptor T
36、able,IDT) 以 0x2e 作为下标获取相应的中断处理函数 (Interrupt ServiceRoutine,ISR) 的入口。中断处理程序属于 NT 执行体,在 NT 执行体内部,中断处理程序将调用参数从用户态堆栈复制到内核态系统堆栈中,参数的地址可以从 EDX第 8 页上海交通大学硕士学位论文 第二章 HIPS 的底层工作机制和原理寄存器中得到。系统调用过程中在处理器的 EAX 寄存器中传递了所请求的系统服务号,执行系统调用都会导致在内核中调用 KiSystemSercice 系统服务分发例程,该函数就是系统调用的总入口函数。KiSystemSercice 根据寄存器 EAX 中的
37、系统调用号从系统服务调用表 SSDT 获得内核函数地址,同时根据系统服务参数表(System Service ParameterTable, SSPT)获取参数信息。最终调用 Ntoskrnl.exe 中相应的核心例程。核心例程完成处理后就将处理结果返回给用户,完成整个系统调用。2.3.2 快速系统调用在 Windows XP/2003 及以后的操作系统中,系统采用快速系统调用 (Fast SystemCall)的机制,使用专门的 sysenter 指令。与此相对应的, CPU 中增加了三个特殊模式寄 存 器 (Mode Specific Register , MSR) : SYSENTER_
38、CS_MSR 、SYSENTER_EIP_MSR、SYSENTER _ESP_MSR。当执行 sysenter 指令时,CPU 进入系统空间,并且根据这三个寄存器的内容从预定的地址开始执行程序,同时获取系统空间的堆栈指针。在快速系统调用过程中,CPU 不需要像“int 0x2e”指令那样把用户空间的堆栈指针以及返回地址保存到系统空间堆栈中,同时不需要从中断向量表中获取程序的入口地址,所以大大提升了系统调用的速度。图 2-2 就是一个快速系统调用过程。可以看到,当用户层应用程序调用 ReadFileAPI 时,首先位于 Kernel32.dll 的 ReadFile 函数会去调用 Ntdll.d
39、ll 中的 NtReadFile 函数17 ,该函数并不实现具体的函数功能,它所作的就是把系统服务调用号保存到寄存器 EAX 中,然后调用 KiFastSystemCall 函数。用户空间地址 0x7FFE0000 和内核空间地址 0xFFDF0000 开始 64KB 的虚存空间都指向同一个物理页面18。内核地址是可写的,但是用户地址则不能。操作系统初始化的时候,在内核 0xFFDF0300 处保存了 KiFastSystemCall 函数地址,于是在用户空间 0x7FFE0300 处就能访问。该函数主要保存用户空间的堆栈指针存放到 EDX,然后调用 sysenter 进入内核。第 9 页系统
40、服务参数表SSPTService ID0x0字节数0xFF系统服务调用表SSDTService ID0x0函数地址804AE868上海交通大学硕士学位论文 第二章 HIPS 的底层工作机制和原理用户态参数表堆栈Call ReadFile(.)ReadFile(.)NtReadFile设置EAX应用程序进程KERNEL32.DLLNTDLL.DLL. KiFastSystemCall设置EDX NTDLL.DLLsysenter用户层内核层EDX系统服务调度程序 SYSENTER_CS_MSRSYSENTER_EIP_MSRSYSENTER_ESP_MSR.内核态参数表堆栈服务调用号EAXKiF
41、astCallEntryNT 核心例程NtReadFilesysexit返回用户层图 2-2 快速系统调用过程Fig.2-2 Fast system call process第 10 页Ntoskrnl.exe上海交通大学硕士学位论文 第二章 HIPS 的底层工作机制和原理系统服务调度程序根据 SYSENTER_EIP_MSR 寄存器的信息找到快速系统调用的总入口函数 KiFastCallEntry13,它将调用参数从用户态堆栈复制到内核态系统堆栈中,并且根据寄存器 EAX 中的调用号从系统服务调用表 SSDT 中获得目标函数NtReadFile 的地址,同时根据系统服务参数表( System
42、 Service Parameter Table,SSPT )获取参数信息。最终执行 Ntoskrnl.exe 中核心例程 NtReadFile。NtReadFile 处理完毕,系统通过调用 sysexit 处理返回信息,包括恢复用户空间堆栈指针、恢复寄存器信息、返回函数处理结果等。2.4 中断处理机制在 Windows 操作系统中,当系统发生中断、异常或者自陷,都需要通过相应的中断处理程序去处理执行。一个中断处理过程1419大致如下:IDTIDTR47基址15限长0 描述符N.描述符n.描述符2描述符1描述符0指令:int n中断处理过程.xxxx.xxxx.xxxx.xxxxxxxxxxx
43、x.中断处理函数.物理内存地址.内存线性地址图 2-3 中断处理过程Fig.2-3 Interrupt handling process第 11 页上海交通大学硕士学位论文 第二章 HIPS 的底层工作机制和原理IDTR( Interrupt Descriptor Table Register )是中断描述符表寄存器,存放着中断描述符表 IDT 在内存中的基地址以及 IDT 的长度。IDT 表是一个中断门( Interrupt gate )数组,每一个中断门用于定位中断处理函数 ISR 的内存地址。当中断发生时,首先由 IDTR 的高 32 位指定 IDT 在内存中的基址,通过中断指令或者可编
44、程中断控制器中获取中断调用号,然后从 IDT 中找到对应的中断门,读取中断处理函数的内存地址,就可以进行中断处理了。在内核中可以由 SIDT 指令9读取 IDTR 中的数据信息,可以由如下数据结构表示:typedef structunsigned short IDTLimit ; / IDT 表的大小unsigned short LowIDTbase ; / IDT 表基地址的低 16 位unsigned short HiIDTbase ; / IDT 表基地址的高 16 位 IDTINFO ;从 IDTR 得到 IDT 的内存基地址后就可以获取每项中断门的信息。/ IDT 表项数据结构#pr
45、agma pack(1)typedef structunsigned short LowOffset ; / 中断处理函数地址的低 16 位unsigned short selector ; / 中断处理函数地址的选择子unsigned char unused ;unsigned char segment_type:4;/0xE 表示是中断门unsigned char system_segment_flag:1 ;unsigned char DPL:2 ; / 调用中断条件, 0-内核模式 3-用户模式unsigned char P:1;/present flagunsigned short
46、HiOffset ; / 中断处理函数地址的高 16 位IDTENTRY;#pragma pack()木马病毒或者 HIPS 系统都可以从内核中获取中断服务函数的地址,并且修改为自身的函数调用,就可以获取系统的中断信息。第 12 页上海交通大学硕士学位论文 第二章 HIPS 的底层工作机制和原理2.5 本章小结本章讲述了微处理器的总体结构、系统函数整个分发过程以及系统的中断处理机制。HIPS 自身保护、系统监控等大部分核心功能都是靠内核状态下的程序代码来保障的。了解整体的系统函数分发过程、中断处理机制,才能更加深入理解 HIPS 的各种机制,才能相应作出处理对抗。同时 HIPS 也可以在被攻击
47、、被破解的情况下得到进一步的改进提升。第 13 页上海交通大学硕士学位论文 第三章 显式对抗 HIPS 机制第三章 显式对抗 HIPS 机制显式对抗各类安全软件的 HIPS 机制通常有两种方式:暂时结束安全软件的 HIPS功能模块或者直接结束安全软件本身;使得安全软件的 HIPS 功能无法正常运行。之后木马病毒自身就能够进行一些必要的初始化操作,这样才能为以后的隐藏做好准备。同时很多木马病毒第一次初始化后就可以额外做一些设置躲开安全软件下一次的追踪。3.1 进程的打开和结束显式的对抗安全软件的 HIPS 机制,最直接有效的就是结束安全软件运行进程,使得木马病毒完成初始化操作。一个进程试图结束另
48、外一个进程,主要进行的步骤有三步:1) 获得目标进程的标志,也就是进程标识符( Process Identifier, PID) 。2) 在确保访问权限的情况下,通过 Win32API OpenProcess 获取目标进程句柄。3) 通过进程的句柄调用 Win32API TerminateProcess 结束目标进程。以上三步是在环 3 级用户态下进行的简单过程,但是这样的方式是无法突破安全软件的进程自我保护的。首先必须从底层出发理解进程打开和结束的完整操作过程。进程打开主要会进行如下过程:1) 当用户态进程 A 试图调用 Win32 API OpenProcess 打开目标进程 B,首先Wi
49、n32 子系统会把此 API 函数转化为 Native API 函数20 ,它会穿过用户模式和内核模式的界限,达到内核。系统内核程序会调用系统服务函数 NtOpenProcess 去处理。2) 系统服务函数 NtOpenProcess 首先会执行 SeSinglePrivilegeCheck 函数检查调用发起者的 DEBUG 权限 ( SeDebugPrivilege ) ,若有,则修改 AccessState 值,使得后面的操作中可以获取“ 允许任意进程访问操作 ”的句柄。3) 紧 接 着 操 作 系 统 内 核 将 通 过 ObOpenObjectByName 或 着ObOpenObjectByPointer 得到目标进程的对象结构。4) 调用 ObpCreateHandle 创建对应的进程句柄并且返回句柄到用户态应用程序。通过以上几步最终获得了目标进程的句柄,此时可以去调用 Win32 APITerminateProcess 去结束目标进程,进程的结束过程大致相应有如下几步:第 14 页上海交通大学硕士学位论文 第三章 显式对抗 HIPS 机制1) 用户态程序调用 Ter