如何检测Rootkit

开发 开发工具
Rootkit检测和蜜罐检测有相似之处,因为Rootkit通过搅乱内核欺骗不同用户,蜜罐则是通过搅乱内核来欺骗敌人,其实蜜罐和Rootkit就是同一种技术的的两个方面。

[[181433]]

Rootkit检测和蜜罐检测有相似之处,因为Rootkit通过搅乱内核欺骗不同用户,蜜罐则是通过搅乱内核来欺骗敌人,其实蜜罐和Rootkit就是同一种技术的的两个方面。

Rootkit检测困难的地方主要有以下几点:

Rootkit的隐蔽性使对他们的检测和删除变得困难,破坏内核最简单的方法是安装一个可加载内核模块(也就是LKM),即使禁用了对LKM的支持,攻击者依然能通过在运行中重写他的内存来破坏内核。这可能涉及禁用一些我们可能用以检测系统中内存变化的功能。如果没有进一步更详细的目标,rootkit可能对存储器、文件系统进程列表没有做任何修改。可以做一个假设:Rootkit扩展内和功能以欺骗用户,结果一些操作将会导致比正常情况下更长的代码路径和更多的执行指令,比如说rootkit经常在文件系统中隐藏他们的存在,这就意味着如果我们调用函数set_getdents获得一个目录下的内容时候,rootkit可能介入已隐藏他自己的文件,从而增加指令数目。

为了测量在一次系统调用中有多少个处理器被执行,当处理器进入系统调用时候,我们将他设置为单步模式,单步模式下每执行一个指令,处理器就会产生一个调试异常。这样的话我们就hook到了中断描述表中的系统调用处理程序(int 0x80)和调试异常处理程序。当一个系统调用被初始化的时候,我们的处理程序被调用,之后通过在EFLAGS寄存器中置TF位(0x100)启动单步模式,并对我们的调试异常处理程序的调用次数进行计数。但是以上情况仅针对于Linux,在Windows下面IDT是有保护的,如果说在一个系统调用的过程中对异常执行次数进行计数是可操作的,这样的话也是可以创建一个干净系统的指令执行统计。其实上面这个步骤叫做执行路径分析法(EPA),但是EPA需要有高特权访问访问内核地址空间,而且对系统调用表修改的方法动作比较大,容易被检测出来。所以法国蜜网项目组的成员用了第二种方法:使用性能计算器或者是CPU提供的指令去检测执行时间的变化。具体的操作方法是这样的:

(1)在干净的系统上对同一个系统调用若干次(20w次以上),并记录该测量为时序T1

(2)在目标系统中进行相同次数的测量,并记录测量为时序T2

(3)这时候去计算每一个时序的傅里叶变化:

(4)计算两个时序频率向量之间的数积:

(5)如果r接近于1,系统是干净的;如果r接近于0,这有可能系统被植入了rootkit。

【本文是51CTO专栏作者elknot的原创文章,转载请通过51CTO获取授权】

 

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: Leon不会玩QEMU
相关推荐

2010-12-28 11:17:50

chkrootkitrootkit检测器

2019-03-28 09:42:15

恶意软件Rootkit攻击

2009-07-27 08:50:29

2010-12-22 21:52:12

rkhunter

2011-05-13 17:46:14

2010-08-24 14:46:08

2016-09-28 09:09:51

2009-04-01 14:33:33

2017-01-03 16:57:58

2010-01-15 10:32:40

2010-01-14 20:57:59

2022-03-21 18:15:21

黑客网络攻击

2009-03-09 11:01:34

2022-02-12 10:47:58

Rootkit僵尸网络攻击

2014-06-16 11:17:12

入侵检测OSSEC日志分析

2012-08-24 10:17:58

2015-01-06 11:37:58

恶意程序查杀Rootkit Hun

2011-08-26 13:09:25

2018-12-20 10:55:29

2013-08-20 10:12:37

入侵检测系统ossec
点赞
收藏

51CTO技术栈公众号