关于rootkit

6 篇文章 0 订阅

一、定义

rootkit是由有用的小型程序组成的工具包,使得攻击者能够保持访问计算机上具有最高权限的用户“root”。换句话说,rootkit是能够持久或可靠地、无法检测地存在于计算机上的一组程序和代码。

rootkit提供了两个主要功能:远程命令和控制,以及软件窃听。

远程命令和控制(简称远程控制):包括对文件进行控制,导致系统重启或“死机蓝屏”,以及访问命令shell(即cmd.exe或/bin/sh)。

软件窃听:就是观察人们在做什么,它包括嗅探报文、截获击键以及阅读电子邮件。攻击者可以使用这些技术来捕获口令和解密的文件,甚至加密密钥。

二、rootkit的工作方式

rootkit通过简单的修改概念来动作。软件通常设计为基于非常特定的数据来做出选定的决策。而rootkit对软件进行定位并修改,导致它做出不正确的决策。修改操作可以发生于软件中的许多位置,如下:

1、打补丁

可执行代码(有时称为二进制代码)具有非常选定的顺序,每个字节对于计算机来说都意味着某种含义。如果修改了这些字节,就会修改软件逻辑,这就称为打补丁。对数据字节打补丁是破解人员消除软件保护所用的主要技术之一,其他类型的字节补丁已用于在游戏中进行欺骗(如获取无限的金币、健康值等)。

2、复活节彩蛋

即程序员在自己编写的程序中放置后门。

3、间谍件修改

有时候一个程序会修改另一个程序,将其感染上“间谍件”。有些间谍件会钩进Web浏览器或shell程序里,从而难以检测和删除。

4、源代码修改

程序员可以将恶意的源代码插入到自己所编写的程序中,比如一些开源项目,因为很少有人会真逐行地分析代码。例如,恶意程序员故意将程序暴露出缓冲区溢出漏洞,它被识别为软件bug,因此是难以难测的。

5、软件修改的合法性

如网上下载的破解补丁。

三、绕过IDS(入侵检测系统)/IPS(入侵防护系统)

绕过防火墙和IDS/IPS软件有两种方法:主动方法和被动方法。这两种方法必须结合想来构造健壮的rootkit。

主动方法:在系统运行时进行工作,其设计思路是预防检测。主动进攻是对系统硬件和内核进行修改,其目的是破坏和迷惑入侵检测软件,用于对抗在内存中运行并试图检测rootkit的软件,可导致系统管理工具无法检测攻击。比如对病毒扫描器进行定位并将其禁用。

被动方法:即将数据存储和传输模糊化。如在将数据存储到文件系统之前对其进行加密,并将解密密钥存储到非易失性硬件存储器(例如闪存RAM或EEPROM)而不是文件系统中;或者从隐秘信道从网络中偷取数据;或者为了躲避病毒扫描器的离线扫描而将自身隐藏在文件系统中,以便扫描器无法检测到它。

四、绕过取证分析工具

1、对抗字节模式扫描:对rootkit自身进行加密,并对负责解密的部分使用多态技术以变换解密代码。

2、以非常规方式存储(例如在驱动器的坏扇区之中),或者存储为临时数据文件。

3、为了对抗文件系统的检测,将rootkit安装到内存中。缺点是在系统重启时会消失。

4、在极端情况下,rootkit也可以将自身安装到BIOS或闪存RAM芯片中的某处固件中。

五、自启动的方法

1、使用注册表键“run”(古老的可靠方法):所有的病毒扫描器都检查该键,可以在加载了rootkit后将该键的值隐藏起来。

2、使用特洛伊木马或被感染的文件:类似于病毒感染文件的方式,并且感染的最佳目标之一就是病毒扫毒或安全产品。

3、使用.ini文件:典型的如win.ini。

4、注册成为驱动程序:rootkit可以将自身注册为启动时加载的驱动程序,这需要创建注册表,一旦加载了rootkit之后,可以将该键隐藏起来。

5、注册为现有应用程序的附加件:比如注册为Web浏览器的扩展。

6、修改磁盘上的内核:可以直接修改内核并将其保存到磁盘上。

7、修改启动引导程序:可以修改启动引导程序,在内核加载之前对其打补丁。

六、rootkit的检测

1、检测rootkitr的存在

1)守护门口:在rootkit加载到内存时进行检测。rootkit可以利用许多操作系统函数将自身加载到内存中,通过监视这些入口点,有时能够发现rootkit。然而,存在着大量这类要监视的入口点,如果检测软件遗漏任何一种加载方法,就会前功尽弃。一般的入口点包括如下:

ZwOpenKey

ZwCreateKey

ZwSetValueKey

ZwCreateFile

ZwOpenFile

ZwOpenSection

ZwCreateLinkObject

ZwSetSystemInformation

ZwOpenProcess

2)扫描空间:周期性地扫描内存,查找与rootkit相对应的已知模块或模块签名。这种技术无法阻止rootkit的加载,而且只能发现已知的攻击者。优点在于简单。

3)查找钩子:在操作系统或进程之中查找钩子。缺点是无法阻止rootkit的加载,优点是它是一种通用方法,不存在着搜索已经签名或模式的问题。

2、检测rootkit的行为

1)检测隐藏的文件和注册表:在低层次上分析文件系统,然后调用高层API,二者进行比较,若有矛盾情况,则发现隐藏行为。

2)检测隐藏的进程:

(1)钩住SwapContext函数。调用SwapContext函数将当前运行线程的上下文与重新执行线程的上下文进行交换。通过钩住SwapContext函数,可以得到真实的进程列表。

(2)列出进程列表:除了通过ZwQuerySystemInformation函数之外,还有一些方法可以列出系统上的进程。例如通过netstat.exe列出端口就可能暴露出隐藏的进程。CSRSS.EXE进程是另一种发现系统上几乎全部进程的方法,它拥有除以下4个进程之外的所有进程的句柄:

Idle进程

System进程

SMSS.EXE

CSRSS.EXE

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值