应急响应技术指南

更新时间:2023-12-17 00:35:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

应急响应技术指南

■ 版权声明

本文中出现的任何文字叙述、文档格式、插图、照片、方法、过程等内容,除另有特别注明,版权所有,受到有关产权及版权法保护。任何个人、机构未经的书面授权许可,不得以任何方式复制或引用本文的任何片断。

■ 适用性声明

本文档用于描述一般事件的应急响应流程及技术手段,供分支工程技术人员参考使用。

目录

一. 前期准备 ............................................................................................................................................... 1 1.1 应急流程 ........................................................................................................................................... 1 1.1.1 现场应急流程 ........................................................................................................................... 1 1.1.2 远程支持流程 ........................................................................................................................... 2 1.1.3 应急支持接口 ........................................................................................................................... 3 1.2 应急工具包 ....................................................................................................................................... 3 1.2.1 Windows系统快速信息收集 .................................................................................................... 3 1.2.2 Windows检测工具包 ................................................................................................................ 6 1.2.3 UNIX/Linux检测工具包 ............................................................................................................. 7 1.2.4 WEB检测工具包 ........................................................................................................................ 8 二. 技术指南 ............................................................................................................................................... 9 2.1 WINDOWS检测技术 ............................................................................................................................ 9 2.1.1 Windows常规检测 .................................................................................................................... 9 2.1.2 Windows恶意代码监测 .......................................................................................................... 14 2.2 UNIX/LINUX检测技术 ....................................................................................................................... 47 2.2.1 UNIX/Linux常规检测 ............................................................................................................... 47 2.2.2 UNIX/Linux恶意代码监测 ....................................................................................................... 57 2.3 WEB检测技术 ................................................................................................................................. 65 2.3.1 WEB日志分析 .......................................................................................................................... 65

- I - 一. 前期准备

1.1 应急流程

1.1.1 现场应急流程

- 1 - 1.1.2 远程支持流程

- 2 -

1.1.3 应急支持接口

1.1.3.1 接口部门

技术支持部 服务支持组

1.1.3.2 接口人

服务支持组

1.2 应急工具包

1.2.1 Windows系统快速信息收集

在应急响应过程中,对Windows系统的检查相对较多地依赖于第三方工具,而在没有可用第三方检查工具或由于某些特殊原因而无法在被检查系统上运行其他工具时,可参考本节,以便能在借助系统自带工具的情况下快速收集信息。

1.2.1.1 系统信息

开始 – 程序 – 附件 – 系统工具 – 系统信息(或直接 开始—运行 – winmsd ) 在系统信息的系统摘要中可获取基本的系统信息,可通过截图或保存为NFO文件

- 3 - 1.2.1.2 用户信息

命令行方式:net user,可直接收集用户信息,若需查看某个用户的详细信息,可使用命令net user username

图形界面:开始 – 运行 – compmgmt.msc – 本地用户和组 – 用户

注册表:开始 – 运行 – regedit(Windows 2000系统需运行regedt32),打开HKEY_LOCAL_MACHINE\\SAM,为该项添加权限(如下图)

添加权限完成后按F5刷新即可访问子项。

打开:HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users

在此项下,导出所有以00000开头的项,将所有导出项与000001F4(该项对应administrator用户)导出内容做比较,若其中“F”值内容相同,则可能为克隆用户

1.2.1.3 进程、服务、驱动信息

进程:打开系统信息工具,依次打开 软件环境 – 正在运行任务,在此可查看进程名及其对应的执行文件

- 4 - 服务:打开系统信息工具,依次打开 软件环境 – 服务,在此可查看服务的启动情况及其对应的启动文件

驱动:打开系统信息工具,依次打开 软件环境 – 系统驱动程序,在此可查看驱动的启动情况及其对应的驱动文件

模块:打开系统信息工具,依次打开 软件环境 – 加载的模块,在此可查看被加载的DLL文件及其对应的文件路径

启动项:打开系统信息工具,依次打开 软件环境 – 启动程序,在此查看启动程序名及其对应的启动文件路径

若需对以上信息进行保存,可保存为NFO文件,或选择导出菜单导出为文本文件。

1.2.1.4 日志与文件

查看系统日志:开始 – 运行 – eventvwr,选择要查看的日志类型

若需导出系统日志,可右键选择要收集的日志类型,选择“另存日志文件”,建议导出为csv文件,方便快速统计。

其他程序日志:

IIS日志:IIS日志默认存储于%systemroot%\\system32\\LogFiles\\,若被检测主机为虚拟主机,为判断每个虚拟站点对应的IIS日志,可使用IIS管理脚本findweb.vbs

命令格式为 cscript findweb.vbs test2 输出结果如下

Web Site Number = 4 Web Site Description = test2 Hostname = test2.aaa.com

- 5 - Port = 80

IP Address = test2.aaa.com

由输出判断该站点对应的日志路径为 %systemroot%\\system32\\LogFiles\\W3SVC4 Apache日志:apache for win32的日志默认存储于其安装目录下的logs目录中,其中access.log为访问日志,若该日志不存在或较长时间未出现过更新,则日志路径可能被修改,应查看httpd.conf文件中的下列字段

ErrorLog logs/error.log

CustomLog logs/access.log common

根据CustomLog字段指定的路径,可获取真实的日志文件位置。

1.2.1.5 网络信息

Windows 2000下可使用netstat –an命令收集网络连接信息。 Windows XP以后版本中可使用netstat –ano命令收集网络信息。

1.2.1.6 补丁信息

Windows 2000系统中,收集补丁信息可直接访问注册表路径

HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Updates,该路径下存储了系统及Windows 组件的补丁安装信息。

Windows XP以后版本的系统中,可使用WMIC命令收集补丁信息,运行命令 wmic qfe 注:为避免输出过多信息,可使用命令 wmic qfe get Description, HotFixID 或 调整cmd窗口的宽度、高度及高和宽的缓冲区大小。

1.2.2 Windows检测工具包

分类 用户检查 LP_Check Windows 应急工具 进程及启动项 process explorer autoruns Process monitor 用于检测克隆帐号的工具 进程检查和管理工具 启动项检查工具 进程监视工具 命令 & 工具 & 文件 compmgmt.msc 相关说明 系统自带“计算机管理”

- 6 - wsyscheck winmsd 服务、模块及驱动 listdlls streams sigverif Regmon 日志与文件 Filemon eventvwr logParser Tcpview 网络连接 netstat -ano Wireshark sniffer分析 sniffer pro windump Icesword 恶意代码分析工具 Rootkit Unhooker 进程、服务、模块综合检查工具 系统自带“系统信息” 模块检查工具 文件流数据检查工具 文件签名验证工具 注册表监视工具 文件监视工具 系统自带“事件查看器“ 日志分析工具 进程与网络连接查看工具 系统自带 sniffer (需安装WinPcap) Windows Rootkit检测工具 Sysprot Rootkit Unhooker 1.2.3 UNIX/Linux检测工具包

分类 命令 & 工具 & 文件 cat /etc/passwd 用户检查 cat /etc/shadow 进程及启动项 UNIX/Linux 应急工具 服务及模块 chkconfig –list(RedHat) ls /etc/rc*.d/S* find / -perm -004000 –type 日志与文件 f –print md5sum - 7 - 相关说明 是否有可疑用户及用户登录shell配置是否正确 是否存在空口令帐号 正在运行的进程信息 列出每个服务在各运行级别下是否开机自启动 列出所有运行级别下启动的服务 搜索硬盘中所有SUID文件 检查文件的MD5值 ps -eaf

2.1.1.4 日志与文件

系统日志

系统日志记录着Windows系统及其各种服务运行的每个细节,起着非常重要的作用,默认情况下,Window的系统日志存放在c:\\windows\\system32\\config,分别为:

AppEvent.Evt(应用程序日志) SecEvent.Evt(安全性日志) SysEvent.Evt(系统日志)

我们可以使用系统自带的“事件查看器”查看

计划任务日志

存放在c:\\windows\\SchedLgU.Txt 浏览器

历史记录存放在:C:\\Documents and Settings\\用户名\\Local Settings\\History

临时文件存放在:C:\\Documents and Settings\\用户名\\Local Settings\\Temporary Internet Files

Cookie文件存放在:C:\\Documents and Settings\\用户名\\Cookies

- 13 - 通过浏览器的历史记录、临时文件及cookie等信息,可判断用户的上网行为。 IIS日志

IIS日志存放在:c:\\windows\\system32\\logfiles\\W3SVCx\\exYYMMDD.log (常见IIS日志分析,可参考“WEB检测技术”章节)

2.1.1.5 网络连接

使用tcpview可用于检测当前系统中的进程及其对应的连接状态,其中,当进程标记为绿色时表示该连接为新发起的连接,当进程被标记为红色时表示该连接为结束状态。

2.1.2 Windows恶意代码监测

本章节描述了常见恶意代码检查工具的使用方法和技巧,同时列举了常见恶意程序的原理和分类,不能完整覆盖全部已知恶意程序。

如需要了解更多的恶意程序查杀实例,请参考《常见恶意程序查杀指南》。

2.1.2.1 PE文件修改病毒检测

PE文件被称为可移植的执行体,是Portable Execute的缩写,常见的EXE、SRC、DLL、OCX、SYS都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。

- 14 - 很多恶意代码喜欢通过修改PE文件来达到不同的目的,或自启动或隐藏。因此也诞生了许多精巧的PE文件修改技术。但是时至今日,我们可以用非常简单的方法检测系统中被修改的PE文件。

Sigverif.exe是微软提供的一款文件签名验证小工具。在“开始→运行”对话框中键入“sigverif.exe”,即会激活此工具。如下图所示。

Sigverif不仅可以验证系统文件,还可以验证非系统文件,点“高级”后,指定要验证的文件夹,选择“包括子文件夹”,就可以一个不漏地进行验证了。对验证结果,sigverif不会显示签名者,只会提示通过验证或不通过,没有通过即显示出来。

通过此工具,很快能够检测到机器狗更改系统文件userinit.exe,日志扫描出来后,userinit.exe没有通过签名验证、没有公司标识,因此初步判断此文件肯定有问题,经分析发现,机器狗通过修改此文件实现自启动。

2.1.2.2 交换数据流木马检测

NTFS因为它的稳定性强大的功能以及它所提供的安全性而成为一种更优越的文件系统,NTFS交换数据流(alternate data streams,简称ADSs)是为了和Macintosh的HFS文件系统兼容而设计的,它使用资源派生来维持与文件相关的信息,比如说图标及其他的东西。而微软提供了一种方法通过Windows explorer来创建特殊的ADSs,检测这种特殊的ADSs的必要工具和功能相当缺乏。Microsoft KnowledgeBase中Q101353号文章承认了基于API的win32不能很好的支持ADSs。

NTFS交换数据流是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流,就是说除了主文件流之外还可以有许多非主文件流寄宿在主文件流中。

- 15 - 它使用资源派生来维持与文件相关的信息,虽然我们无法看到数据流文件,但是它却是真实存在于我们的系统中的。

既然NTFS交换数据流是NTFS磁盘格式的一种特性,那么对我们有什么危害呢?从上文的定义中我们可以知道NTFS系统中的一个普通文件是可以拥有多个数据流文件的,而数据流文件的格式却没有限制,并且当我们运行这个文件时,其附带的数据流文件也会运行,这说明什么呢?这就表示如果黑客将木马程序作为数据流文件捆绑于正常的文件中,当用户运行这个文件,就会同时运行木马程序。

更可怕的是,由于兼容性的问题,系统自带的任务管理器、进程管理器等工具都不能很好的检测到NTFS交换数据流。因此NTFS交换数据流技术常常被黑客利用来隐藏文件、进程。

下面我们来详细的看看NTFS交换文件流的利用方法。

2.1.2.2.1 隐藏信息

在任一NTFS分区下打开CMD命令提示符,输入echo abcde>>a.txt:b.txt,则在当前目录下会生成一个名为a.txt的文件,但文件的大小只有0字节,打开后也无任何内容,只有当我们键入命令notepad a.txt:b.txt才能看见写入的abcde。

在上边的命令中,a.txt可以不存在。也可以是某个已存在的文件,文件格式无所谓,无论是.txt还是jpg,bmp,com,exe都行,b.txt也可以任意指定文件名以及后缀名。这样就可以将任意文本信息隐藏于任意文件中,只要不泄露冒号后的虚拟文件名(即b.txt),别人是根本不会查看到隐藏信息的。而且在已经使用NTFS交换数据流制造了隐藏信息后,包含隐藏信息的文件仍然可以继续隐藏其他的内容,例如abcde已经包含在a.txt:b.txt中,我们仍然可以使用命令echo 12345>>a.txt:c.txt建立新的包含隐藏信息的流文件,在命令行下使用notepad a.txt:c.txt打开后会发现12345这段信息,而abcde仍然存在于a.txt:b.txt中丝毫不受影响。

2.1.2.2.2 隐藏文件

我们要使用到的命令跟上面的大同小异,命令格式为:type 文件名+后缀>>任意文件名+原文件后缀,比如type 1.jpg>>abc.def:2.jpg,就是将1.jpg的内容写入到abc.def:2.jpg这个交换数据流文件中,abc.def可以随便换,最好是使用正常的文件,这样隐蔽性会更强。

打开隐藏文件时就要注意了,如果用来打开文件的程序是系统自带的(位于系统目录下),直接输入程序名就可以了:但如果是使用另外的程序打开的话就要是加上完整的路径,且流文件也要带上完整的路径。例如使用画图工具打开abc.def:2.jpg,命令格式应该是mapaint abc.def:2.jpg,而如果使用ACDSee9打开的话,命令格式就应该是

- 16 - D:\\ACDSee9\\ACDSee8.exe D:\\abc.def:2.jpg 注意上面的2.jpg,后缀最好跟原文件一致,不然使用第三方软件打开时可能会出错。比如type 1.jpg>>abc.def:2.jjj,使用Windows自带的画图工具可以顺利打开,但使用ACDSee9打开时却提示数据格式不可识别,必须改成.jpg后缀才可以打开。

同理,其他文件也可以这样隐藏,只要打开时根据后缀名找到对应的程序就行了,而且也可以像隐藏信息那样隐藏多个文件。

2.1.2.2.3 捆绑木马

仍然是使用上面隐藏文件的方法,运行的命令格式为:start.exe 交换数据流文件路径,需要带上完整的路径,不然会提示参数不正确。例如我们在系统目录提示符下通过下面这条命令建立了一个数据交换流c:\\windows\\system32>type muma.exe >

notepad.exe:muma.exe,接着使用start.exe c:\\windows\\system32\\notepad.exe:muma.exe即可运行木马程序。在winxp sp1之前的系统上,当我们打开任务管理器时,我们只能看到notepad.exe的进程,而查看不到muma.exe!

2.1.2.2.4 注意事项

? 流文件不能直接通过网络传输,也不能使用WinRAR进行普通压缩后传输,那样会

丢失信息,必须在压缩时选择高级选项里的“保存文件流数据”才行。

? 流文件必须要在NTFS分区下才能运行,一旦放到其他的文件系统分区中,即使再

放回来,也会造成NTFS数据流的丢失。

? NTFS交换数据流技术在winxp sp2之后,做了一定的修正。当我们运行一个数据流

文件时,在进程管理器中可以看到完整的数据流文件信息,而不是像以前那样,只能看到它所依附的文件进程。但是很有意思的是,即使在winxp sp3的机器上,依然能够通过这种方式来实现信息隐藏及文件隐藏。

那么在实战中,黑客通常是如何使用这种技术呢?因为NTFS数据流文件的特性,它不可能通过网络传播,黑客通常是使用Winrar将数据流文件进行打包来进行攻击的。

首先在文件格式为NTFS的盘符文件夹里放好宿主文件和木马程序,这里分别是HijackThis.exe和muma.exe。

- 17 -

进入命令提示符,在test文件目录下利用type命令将muma.exe以交换数据流的形式注入到HijackThis.exe里,之后你可以通过属性查看HijackThis.exe文件的大小,前后是不会发生任何变化的。

利用WINRAR,将已经注入了木马程序的宿主添加到压缩文件。

需要注意的是在“高级”选项中勾选“保存文件数据流”。

- 18 -

可以将HijackThis.exe和muma.exe删除了,之后我们打开已经压缩好的HijackThis.rar。

选择右上角的“自解压格式”。

- 19 -

在“自解压格式”标签的“自解压模块”中选中“Default.SFX”,然后点击“高级自解压选项”。

在其“常规”标签的“解压后运行”中填入“HijackThis.exe:muma.exe”。

- 20 - 切换到“模式”标签,勾选其中的“全部隐藏”、“覆盖所有文件”。全部设置完成后点击“确定”。

这样我们就得到了一个新的HijackThis.exe,为了欺骗性更大黑客可以把它重命名为“setup.exe”。

当我们打开这个setup.exe,或者对其解压安装的时候,已经注入其中的muma.exe就自动运行了,由于它是以NTFS交换数据流的形式存在于这个setup.exe当中,所以无法通过windows自带的搜索或者dir命令找到,甚至可以骗过杀毒软件的搜索引擎。

- 21 -

数据流木马虽然隐蔽,但是防范的方法还是有的。

? 首先对于Winrar的自解压文件我们一定要小心,可以选择用Winrar打开自解压文件

而不是双击打开。

? 其次,可以使用一些专业的NTFS数据流检查工具,找出隐藏在系统中的恶意文件。

专业检测NTFS数据流文件的工具有Sfind.exe、Streams.exe、lads.exe等,这里我们以lads.exe为例进行介绍。

lads.exe是一个命令下的工具,需要在“命令提示符”中使用。在“命令提示符”中运行lads.exe,程序会自动检测当前目录中的NTFS数据流文件,如果要检测子目录中的数据流文件,可以在lads.exe运行的同时添加一个参数“/s”,这样就可以检测到子目录中的数据流文件了。对指定文件夹进行检测时,可以使用“lads.exe 文件夹路径”命令。

- 22 -

2.1.2.3 线程注入木马检测

线程注入隐藏技术是木马采用的最流行的技术之一。线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。采用线程插入技术,实际上就是以非进程的方式执行目标代码,逃避进程查看器的检查,从而达到“进程隐藏”的目的。在宿主进程中,以线程的方式执行木马代码。这样,使用查看进程的方法很难发现木马线程的运行。

线程注入的技术是一种“性价比”比较高的技术,在很多恶意代码中都能看到这种技术的身影。比如插入线程到系统进程或者在后台开启一个ie进程,然后再插入线程。本技术门槛相对比较低,而且在隐藏和穿透防火墙方面有非常好的表现,再配合一些rootkit技术,能够让恶意代码隐藏的更深。

下面介绍两种简单的线程注入木马的检测方法。

2.1.2.3.1 Process explorer检测线程注入

如下图所示,检测可疑进程空间下加载的未通过数字签名验证的dll文件。

- 23 - 2.1.2.3.2 IceSword检测线程注入

在icesword的工具包中有个叫Cooperator压缩包,用rar解压缩。其中有一个叫IsHelp.exe的小工具。要利用这个小工具,首先要运行icesword.exe。选中可疑进程,单击右键,在弹出下拉菜单中选中线程分析。

在IsHelp.exe线程分析的结果中,我们看到了它会标注了可疑的线程。

2.1.2.4 Spi木马检测

Winsock 2 SPI是一个新特性,是为书写服务提供者的人员提供的。Winsock 2不仅提供了一个供应用程序访问网络服务的Windows socket应用程序编程接口(API),还包含了由传输服务提供者和名字解析服务提供者实现的Winsock服务提供者接口(SPI)和ws2_32.dll。

- 24 - 在此以传输服务提供者为例来实现进程的隐藏。如下是应用程序,Ws2_32.dll和传输服务提供者接口之间的层次关系:

|Windows socket 2 应用程序|

----------------------------Windows socket 2 API | WS2_32.DLL |

----------------------------Windows socket 2 传输SPI | 传输服务提供者(DLL) | ----------------------------

基于这个原理,SPI木马的穿透防火墙的性能比较好,只要有程序能上网,它就能回连到控制端。正是这个原因,SPI木马曾今风靡一时,比如说早期比较典型的blueangle。

下面以blueangle为例来介绍spi木马的使用、检测方法。 在win2003(192.168.10.246)上打开木马程序所在文件夹。

生成采用端口反弹方式工作的木马程序。

将木马程序通过飞秋(局域网共享程序)传到一台XP(192.168.10.236)主主机上。

- 25 -

在XP上将传输过来的木马程序点击运行,木马程序运行后无法在任务管理器中看到,我们可以通过autoruns(微软自带的SysinternalsSuite工具包来完成,打开autoruns.exe,找到如图所示。

在win2003(192.168.10.246)主机上用nc去连接被挂马的主机xp(192.168.10.236),连接成功,如图所示,可以通过help查看具体的操作命令。

- 26 -

2.1.2.5 ActiveX自启动木马检测

早期,这种自启动方式在国内的木马中出现的并不是很多,主要是一些国外的木马对这种自启动方式比较偏爱。比如非常著名的木马Poison Ivy就采用了这种自启动方式。

- 27 -

ActiveX启动其实非常简单,仅仅是在注册表中HKEY_LOCAL_MACHINE下的Software\\Microsoft\\Active Setup\\Installed Components\\中注册一条信息就可以了。这条信息的键类似{36f8ec70-c29a-11d1-b5c7-0000f8051515}就可以。其实,我们可以随便的更改这些数字,只要不重复就可以了,而且我们还可以在这个键的下面新增子键StubPath和子键的值,如c:\\Windows\\system32\\muma.exe即可。这样系统每次启动就会运行c:\\Windows\\system32\\muma.exe这个程序。

这里有一个疑问,前面我们提到的{36f8ec70-c29a-11d1-b5c7-0000f8051515}这是什么?其实这就是GUID,即全球唯一标识,对应着ActiveX接口的唯一标识。GUID是一个字母数字标识符,用于指示产品的唯一性安装。在许多流行软件应用程序(例如Web浏览器和媒体播放器)中,都使用GUID。GUID的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个x 是0-9或a-f范围内的一个十六进制的数字。例如:

6F9619FF-8B86-D011-B42D-00C04FC964FF即为有效的GUID值。为什么要用GUID?世界上的任何两台计算机都不会生成重复的GUID值。GUID主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在Windows平台上,GUID应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。

下面看一下poison lvy配置及检测方法。 打开木马所在文件夹,找到毒药程序。

新建一个服务器端程序profile,我们这里命名为goods。

- 28 -

配置goods的客户端连接地址,这里的截图为本机的,我们可以在这里配置为192.168.10.246,及上线主机都默认连接这台主机。

我们这里选择木马的启动方式为ActiveX。

- 29 -

这里默认就可以,下方的inject server into the default browser为 默认插入一个explorer中来隐藏。

这里也选择默认,当然也可以选择加壳。

- 30 -

选择generate生成服务器端

把服务器端木马程序传到另外一台XP主机上(192.168.10.236)

- 31 -

稍等一会儿后主机上线

目标主机上ActiveX在注册表中的保存位置。

- 32 -

这样程序就把自身的目录隐藏起来了

通过CMD进入到rewt目录。

- 38 -

我们用iceword查看进程情况,发现有个root.exe的进程标红,被隐藏起来了。

通过iceword的高级扫描模式发现有很多函数都被inline hook了,把大约87个被hook了的函数进行恢复,然后我们看进程里root.exe就没有了,而且被隐藏的文件夹就出现了。

- 39 -

2.1.2.9 SSDT hook rootkit检测

SSDT的全称是System Services Descriptor Table,系统服务描述符表。这个表就是一个把ring3的Win32 API和ring0的内核API联系起来的索引表。

SSDT中存放了所有系统服务函数的入口地址。系统服务调度程序通过查找 SSDT 来调用相应的系统服务。因此,Rootkit 可以将 SSDT 中的系统服务地址替换为自己代码的地址。这样,当调用系统服务时,实际运行的是Rootkit 代码,由Rootkit 代码调用真正的系统服务并对结果作相应处理。例如,ZwQuerySystemInformation是系统列举进程时须调用的系统服务, 通过挂钩它来实现进程的隐藏。

下面用一个ssdt hook 的demo程序来演示ssdt木马检测、ssdt hook的恢复。 用InstDrv工具安装示例驱动basic_mdl_flags.sys并加载执行。

- 40 -

该驱动hook了ZwQuerySystemInformation函数,实现了隐藏以_root_开头的进程的功能。执行程序_root_.exe,在任务管理器中无法看到此进程在运行,可对比使用冰刃可以看到该隐藏进程。

- 41 -

使用冰刃查看系统SSDT,可观察到被hook的ZwQuerySystemInformation函数当前地址与原始值不一致。

冰刃中用右键恢复改SSDT,再次执行_root_.exe,该进程在任务管理器中恢复显示。

- 42 -

2.1.2.10 SYSENTER hoot rootkit检测

Intel x86 平台上的 Windows XP 系统用 SYSENTER 指令取代中断,使系统陷入系统服务调用程序(AMD 平台上的Windows XP 使用 syscall 指令实现相同功能),相应产生了新的 Hook 方法,即把 IA32_ SYSENTER_EIP 寄存器的值修改为要运行的 Rootkit 代码的地址。

下面用sysenter hook demo程序演示sysenter hook 检测。 用InstDrv工具安装示例驱动sysenter.sys并加载执行。

使用SysProt工具检查kernel hooks,可观察到Sysenter函数被sysenter.sys做了hook。

- 43 - 2.1.2.11 IRP hook rootkit检测

IRP (I/O Request Packet即 I/O 请求包),驱动与驱动之间通过 IRP 进行通信。而使用驱动的应用层调用的 CreatFile,ReadFile,WriteFile,DeviceIoControl 等函数,说到底也是使用 IRP 和驱动进行通信。下图描述了在IRP请求过程中发生hook的情况。

下面以irp hook demo程序演示irp hook 使用、检测。 用InstDrv工具安装示例驱动irphook.sys并加载执行。

该驱动hook了IRP_MJ_DEVICE_CONTROL的处理函数,隐藏了所有WEB连接(远程端口为80的TCP连接),用web浏览器打开goolge页面,使用netstat -an命令无法看到连接建立的状态。

- 44 -

使用SysProt工具检查irp hook,可观察到tcpip.sys中的IRP_MJ_DEVICE_CONTROL的处理函数被hook。

2.1.2.12 DKOM rootkit 检测

对于Windows 2000/xp/2003等系统都具有描述进程,线程的对象,任务管理器、ZwQuerySystemInformation 函数就是利用这些对象来列出机器上的运行进程。每个进程和线程都有描述它们的结构,描述进程的是EPROCESS结构,描述线程的是ETHREAD结构。

EPROCESS结构中有个双向链表LIST_ENTRY结构,这个结构有两个DWORD指针成员FLINK和BLINK,这两个指针分别指向当前进程的前一个和后一个进程。 要隐藏当前进程

- 45 - 只要把当前进程从这个双向链表中删掉即可。这种rootkit采用的技术就是从双向链表中删除当前进程。如图:

下面看一个DKOM rootkit的实例-fu:

- 46 - 在命令行下,运行fu 命令,列出fu的功能:列出系统进程、以pid为参数隐藏进程、隐藏驱动、设置进程权限为系统权限 ??

选中需要隐藏的进程,运行fu -ph 8,这里8是指system进程的pid,然后从任务管理器查看就看不到了,我们只能用像Iceword之类的工具查看隐藏进程,下图标红显示。

2.2 UNIX/Linux检测技术

2.2.1 UNIX/Linux常规检测

2.2.1.1 用户检查

查看系统所有用户信息可以使用命令cat /etc/passwd

- 47 -

本文来源:https://www.bwwdw.com/article/w3d5.html

Top