Rootkit的类型、功能及主要技术

合集下载

Linux后门入侵检测工具

Linux后门入侵检测工具

【Linux】后门入侵检测工具一、rootkit简介rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木马。

rootkit攻击能力极强,对系统的危害很大,它通过一套工具来建立后门和隐藏行迹,从而让攻击者保住权限,以使它在任何时候都可以使用root权限登录到系统。

rootkit主要有两种类型:文件级别和内核级别,下面分别进行简单介绍。

1、文件级别rootkit文件级别的rootkit一般是通过程序漏洞或者系统漏洞进入系统后,通过修改系统的重要文件来达到隐藏自己的目的。

在系统遭受rootkit攻击后,合法的文件被木马程序替代,变成了外壳程序,而其内部是隐藏着的后门程序。

通常容易被rootkit替换的系统程序有login、ls、ps、ifconfig、du、find、netstat等,其中login程序是最经常被替换的,因为当访问Linux时,无论是通过本地登录还是远程登录,/bin/login 程序都会运行,系统将通过/bin/login来收集并核对用户的账号和密码,而rootkit就是利用这个程序的特点,使用一个带有根权限后门密码的/bin/login来替换系统的/bin/login,这样攻击者通过输入设定好的密码就能轻松进入系统。

此时,即使系统管理员修改root密码或者清除root密码,攻击者还是一样能通过root用户登录系统。

攻击者通常在进入Linux系统后,会进行一系列的攻击动作,最常见的是安装嗅探器收集本机或者网络中其他服务器的重要数据。

在默认情况下,Linux中也有一些系统文件会监控这些工具动作,例如ifconfig命令,所以,攻击者为了避免被发现,会想方设法替换其他系统文件,常见的就是ls、ps、ifconfig、du、find、netstat等。

如果这些文件都被替换,那么在系统层面就很难发现rootkit已经在系统中运行了。

Windows RootKit概述

Windows RootKit概述

挂钩技术—、WindowsRootKit概述2005年10月,RootKitRevealer的作者MarkRussinovich发现Sony公司使用RootKit以保护其电子出版物不受盗版侵权DMark在他的Blog上指出Sony公司不仅在消费者毫不知情的情况下(既没有明确告知消费者,也没有在软件的服务条款中提及)向消费者的电脑中安装了—个RootKit,而且知情的攻击者还可以利用这个RootKit隐藏自己的工具。

随后,RootKit 引起了人们广泛关注。

Rootkit是黑客在入侵目标系统后,开辟后门和隐藏行为的技术或者是工具。

当攻击者通过某种方式进入被入侵的系统并安装上RootKit就可以欺骗目标计算机的操作系统,从而达到隐藏所有修改并拥有操作系统控制权。

WindowsRootKit的核心技术就是隐藏技术,隐藏的内容包括文件、目录、进程、注册表项、网络端口、设备驱动器、网卡模式等。

RootKit最早出现于Unix系统中,随着计算机技术的发展,现在多种操作系统平台中都出现了RootKit。

其中Windows系统上的RootKit技术,尤其受到广泛重视,RootKit也分为几种:(一)早期RootKit工作原理是把系统中的一些程序替换成恶意的版本,当这些替换的程序运行时,就会自动隐藏特定的对象。

如称为RootKit之父的Cabanas病毒…(二)用户模式RootKit这种RootKit是安装在系统当前用户的安全上下文环境,替换、挂钩(hook!或者修改某些操作系统调用和DLL中的函数。

(三)内核模式RootKit现在的WindowsRootKit所使用的技术也从用户模式向内核模式发展,内核模式RootKit不仅能拦截底层的API调用,而且还会操作内核数据结构。

二、WindowsRootKit的检测技术WindowsRootKit检测技术总是伴随着Rootkit技术的发展而发展的,检测技术的发展也迫使WindowsRootKit技术不断更新。

Rootkit是什么

Rootkit是什么

Rootkit 是什么
Rootkit 是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit 一般都和木马、后门等其他恶意程序结合使用。

在悬念迭起的中外谍战片里,对战双方中的一派势力通常会派遣特工人员潜伏到对手阵营中。

这名卧底人员良好的伪装使得对手对此长时间毫无察觉;为了能够长期潜伏他不贸然采取高风险行为以免过早暴露自己;他赢得敌人的信任并因此身居要职,这使得他能够源源不断地获取重要情报并利用其独特渠道传送回去。

从某种意义上说这位不速之客就是Rootkit——持久并毫无察觉地驻留在目标计算机中,对系统进行操纵、并通过隐秘渠道收集数据的程序。

Rootkit 的三要素就是:隐藏、操纵、收集数据。

“Rootkit”中root 术语来自于unix 领域。

由于unix 主机系统管理员账号为root 账号,该账号拥有最小的安全限制,完全控制主机并拥有了管理员权限被称为“root”了这台电脑。

然而能够“root”一台主机并不意味着能持续地控制它,因为管理员完全可能发现了主机遭受入侵并采取清理措施。

因此Rootkit 的初始含义就在于“能维持root 权限的一套工具”。

Rootkit的基础知识和防御方法-电脑资料

Rootkit的基础知识和防御方法-电脑资料

Rootkit的基础知识和防御方法-电脑资料Rootkit的基础知识和防御方法好多人有一个误解,他们认为rootkit是用作获得系统root访问权限的工具,。

实际上,rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。

通常,攻击者通过远程攻击获得root访问权限,或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。

进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root权限。

接着,攻击者会在侵入的主机中安装rootkit,然后他将经常通过rootkit的后门检查系统是否有其他的用户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。

通过rootkit的嗅探器获得其它系统的用户和密码之后,攻击者就会利用这些信息侵入其它的系统。

一全面认识rootkit:Rootkit出现于二十世纪90年代初,在1994年2月的一篇安全咨询报告中首先使用了rootkit这个名词。

这篇安全咨询就是CERT-CC的CA-1994-01,题目是Ongoing Network Monitoring Attacks,最新的修订时间是1997年9月19日。

从出现至今,rootkit的技术发展非常迅速,应用越来越广泛,检测难度也越来越大。

rootkit介绍Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在),还是活动时,(作为进程存在),都不会被察觉。

换句话说,这种程序可能一直存在于我们的计算机中,但我们却浑然不知,这一功能正是许多人梦寐以求的——不论是计算机,还是计算机取证人员。

可以在入侵后置入Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取证人员也可以利用Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动。

二了解Rootkit的攻击原理:要了解Rootkit的攻击原理,就必须从系统原理说起,我们知道,操作系统是由内核(Kernel)和外壳(Shell)两部分组成的,内核负责一切实际的工作,包括CPU任务调度、内存分配管理、设备管理、文件操作等,外壳是基于内核提供的交互功能而存在的界面,它负责指令传递和解释。

第九章 Rootkit

第九章  Rootkit

文件级Rootkit(用户模式Rootkit)
返回首页
使用最广泛、特性最全面的用户模式Rootkit之一 就是Linux Rootkit家族(LRK)。
Universal Rootkit(URK)作用于多种UNIX变种: Linux、Solaris、BSD、FreeBSD、IRIX、HP-UX。 URK包括多种实现后门/隐藏攻击者的替换程序: login、sshd、ping、passwd、su、pidentd、ps、 top、find、ls、du、netstat、sniffer。
为利用该功能实现Rootkit一些恶意LKM变换了内 核处理各种系统调用的方式。攻击者可利用这项特性 插入特殊内核模块,截获系统调用并修改,改变系统 对特定命令的响应方式。
最流行的LKM Rootkit
Kernel Intrusion System(KIS): 可加载内核模块Rootkit(功能最强大) 其操作非常容易,表现为两种形式:一个不错的 GUI和一个隐藏进程周围的界面。 GUI中攻击者可设定KIS内核模块并将其粘附到文 件系统任何可执行文件,使KIS在系统启动时重新启 动。GUI让攻击者可远程控制同一个GUI内核模块。 KIS用户界面的方便就像一般的应用级Trojan程序。
URK工具是LRK工具的子集,它仍有很强破坏 力,其跨平台能力使得它对攻击者特别有用。
Windows用户模式Rootkit使用不频繁的原因:
1)20世纪90年代中后期,Windows系统中带有GUI 特性的应用程序级的后门迅速增加,不再需要修 改操作系统组件。 2)同时Windows Rootkit直接转向内核级本身,而 不是普通的系统二进制程序。 3)Windows文件保护(WEP)阻碍可执行程序替换。 WEP可发现计算机中重要可执行程序和库文件未 预料到的变化,并自动恢复原来的文件。

rootkit

rootkit

内核对象是 Windows 系统中用来登记系 统运行情况和资源记录的内核数据结构,由 对象管理器来管理。修改内核数据结构的方 法主要分为两类: 修改活动进程链表(PsActiveProcessList) 修改进程令牌 (Process Token)

在链表 PsActiveProcessList 上保存着所有进程的 EPROCESS 结构,当某些模块需要获得系统中 运行的所有进程信息时,就会通过遍历该双向 链表来获得所要的信息。如果在 PsActiveProcessList 链表上删除相应的某进程信 息,则该进程将被隐藏起来,即使调用系统服 务 ZwQuerySystemInformation()也无法得到该进 程的相关信息。而由于 Windows 的线程分派 器使用另外的数据结构 (pKiDispatchReadyListHead,pKiWaitInListHead,p KiWaitOutListHead),因此,隐藏的进程仍然 能够正常的运行


需要注意,Rootkit 本身并不能使攻击者获 取管理员权限,它不是一种软件利用工具。 攻击者必须先使用其它手段获取主机的控 制权,例如利用漏洞的溢出攻击,或者被 动的密码嗅探等。一般需要取得管理员权 限才能正确部署 Rootkit工具。Rootkit 一般 具备下述功能:
窃取重要信息 通过监控键盘击键以及网络数据,窃取用户口令以及网络银行密码等 隐私信息 维持控制权 攻击者可以通过 Rootkit 隐藏的后门,非常隐蔽的以管理员权限再次进 入系统 隐藏攻击痕迹 隐藏与 Rootkit 相关的文件、进程、通信链接和系统日志等攻击痕迹。 欺骗检测工具 使检测工具无法发现系统的异常,无法找到隐蔽在系统中的 Rootkit 软件。 提供植入手段 其它可执行程序,例如蠕虫或病毒可以通过 Rootkit提供的隐蔽通道 植入系统,并且可以使用 Rootkit 来隐藏自身。 提供攻击跳板 攻击者可以利用受控主机对网络上的其它主机发动攻击,例如蠕虫传 播、拒绝服务攻击等。

Rootkit技术

Rootkit技术

Rootkit技术rootkit的主要分类早期的rootkit主要为应用级rootkit,应用级rootkit主要通过替换login、ps、ls、netstat 等系统工具,或修改.rhosts等系统配置文件等实现隐藏及后门;硬件级rootkit主要指bios rootkit,可以在系统加载前获得控制权,通过向磁盘中写入文件,再由引导程序加载该文件重新获得控制权,也可以采用虚拟机技术,使整个操作系统运行在rootkit掌握之中;目前最常见的rootkit是内核级rootkit。

内核级rootkit又可分为lkm rootkit、非lkm rootkit。

lkm rootkit主要基于lkm技术,通过系统提供的接口加载到内核空间,成为内核的一部分,进而通过hook系统调用等技术实现隐藏、后门功能。

非lkm rootkit主要是指在系统不支持lkm机制时修改内核的一种方法,主要通过/dev/mem、/dev/kmem设备直接操作内存,从而对内核进行修改。

非lkm rootkit要实现对内核的修改,首先需要获得内核空间的内存,因此需要调用kmalloc分配内存,而kmalloc是内核空间的调用,无法在用户空间直接调用该函数,因此想到了通过int 0x80调用该函数的方法。

先选择一个不常见的系统调用号,在sys_call_table 中找到该项,通过写/dev/mem直接将其修改为kmalloc函数的地址,这样当我们在用户空间调用该系统调用时,就能通过int 0x80进入内核空间,执行kmalloc函数分配内存,并将分配好的内存地址由eax寄存器返回,从而我们得到了一块属于内核地址空间的内存,接着将要hack的函数写入该内存,并再次修改系统调用表,就能实现hook系统调用的功能。

rootkit的常见功能隐藏文件:通过strace ls可以发现ls命令其实是通过sys_getdents64获得文件目录的,因此可以通过修改sys_getdents64系统调用或者更底层的readdir实现隐藏文件及目录,还有对ext2文件系统直接进行修改的方法,不过实现起来不够方便,也有一些具体的限制。

鬼影病毒及ROOTKIT技术简介

鬼影病毒及ROOTKIT技术简介

例子
以超级巡警的主要执行文件AST.exe为例,首先,有个文件名为kkk.exe 的恶意程序向IFEO列表里写入AST.exe项,并设置其Debugger指向 kkk.exe,于是系统就会认为kkk.exe是AST.exe的调试器,这样每次用户 点击执行AST.exe时,系统执行的实际上是作为调试器身份的kkk.exe, 至于本该被执行的AST.exe,此刻只能被当作kkk.exe的执行参数来传递 而已,而由于kkk.exe不是调试器性质的程序,所以被启动的永远只有 kkk.exe自己一个,用户每次点击那些“打不开”的安全工具,实际上就 等于又执行了一次恶意程序本体!这个招数被广大使用“映像劫持”技 术的恶意软件所青睐,随着OSO这款超级U盘病毒与AV终结者(随机数病 毒、8位字母病毒)这两个灭杀了大部分流行安全工具和杀毒软件的恶意 程序肆虐网络以后,一时之间全国上下人心惶惶,其实它们最大改进的 技术核心就是利用IFEO把自己设置为各种流行安全工具的调试器罢了, 破解之道尤其简单,只需要将安全工具的执行文件随便改个名字,而这 个安全工具又不在乎互斥量的存在,那么它就能正常运行了,除非你运 气太好又改到另一个也处于黑名单内的文件名去了,例如把AST.exe改为 IceSword.exe。
鬼影病毒处理方法(续)
2、修复MBR(关键一步,必须做),接着上一步,选择“4.修复”--> “ 修复(F)“ --> 确定。 第三步:重装戒恢复系统。在第二步完成后,千万丌要重启电脑迚入 WINDOWS了,否则会二次感染。
第四步:全盘杀毒。返回WINDOWS后,需要升级你的杀毒软件到最 新版本(最新病毒库),然后迚行“全盘查杀”,这样可以把残留在非 系统盘(比如D盘、E盘、F盘)里的病毒寄主文件杀掉,以做到“斩草 除根”。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Rootkit的类型、功能及主要技术Rootkit 的类型小结
1.固化Rootkits和BIOS Rootkits
固化程序是存于ROM中,通常很小,使用系统硬件和BIOS 创建顽固的软件镜像。

将制定的代码植入到BIOS 中,刷新BIOS,在BIOS 初始化的末尾获得运行机会。

重启无用、格式化无用,在硬盘上无法探测,现有的安全软件将大部分的扫描时间用在了对硬盘的扫描上。

本文整理:(第三方信息安全网)/
2 内核级Rootkits
内核级Rootkits(Kernelland Rootkits)是通过修改内核、增加额外的代码、直接修改系统
调用表、系统调用跳转(Syscall Jump),并能够替换一个操作系统的部分功能,包括内核和相关的设备驱动程序。

现在的操作系统大多没有强化内核和驱动程序的不同特性。

许多内核模式的Rootkit 是作为设备驱动程序而开发,或者作为可加载模块,如Linux 中的可加载模块或Windows 中的设备驱动程序,这类Rootkit 极其危险,它可获得不受限制的安全访问权。

如果代码中有任何一点错误,那么内核级别的任何代码操作都将对整个系统的稳定性产生深远的影响。

特点:无进程;无端口。

与用户级Rootkit 相比,与操作系统处于同一级别,可以修改或破坏由其它软件所发出的任何请求。

3 用户态Rootkits
用户态Rootkits(Userland Rootkits)是运行在Ring3 级的Rootkit,由于Ring3 级就是
用户应用级的程序,而且信任级别低,每一个程序运行,操作系统给这一层的最小权限。


户态Rootkit使用各种方法隐藏进程、文件,注入模块、修改注册表等。

4 应用级Rootkits
应用级Rootkits 通过具有特洛伊木马特征的伪装代码来替换普通的应用程序的二进制代码,也可以使用Hook、补丁、注入代码或其它方式来修改现有应用程序的行为。

5 代码库Rootkits
代码库Rootkits 用隐藏攻击者信息的方法进行补丁、Hook、替换系统调用。

这种Rootkit 可以通过检查代码库( 如Windows中DLL) 的改变而发现其踪迹。

实际上,很难检测一些应用程序和补丁包一起发行的多种程序库中的Rootkit。

6 虚拟化Rootkits与HypervisorRootkits
虚拟化Rootkit(Virtual Rootkits)是利用虚拟机技术的虚拟机Rootkit(是模仿软件虚
拟机形式的Rootkit)。

这种Rootkit 通过修改计算机的启动顺序而发生作用, 目的是加载
自己而不是原始的操作系统。

一旦加载到内存,虚拟化Rootkits 就会将原始的操作系统加载为一个虚拟机,这使得Rootkit 能够截获客户操作系统所发出的所有硬件请求。

Hypervisor Rootkits 是一种基于硬件或固化的Rootkit。

它具有管理员权限的管理程序,
可以在支持硬件协助虚拟化和未安装虚拟化软件的系统上安装基于Hypervisor 的Rootkit。

然后,这个基于Hypervisor 的Rootkit 将可以在比操作系统本身更高的权限级
别上运行。

特点:合法内核模式代码降低了检测出攻击者Hypervisor 模式代码的能力。

它是在硬件上运行的虚拟的环境,由于攻击者强行在真正的内核插入虚拟机,在硬件上运行,因此,这常被误认为是内核Rootkits。

在攻击者执行内核模式代码之前,Hypervisor Rootkits 不会
运行。

当一个系统被Hypervisor Rootkits 感染时,在该系统的Kernelland 没有任何迹象,这是与Hypervisor Rootkits 而不是真正的硬件交互。

因此,几乎是不可能从Kernelland、Userland 和应用层检测到。

在Rootkit 和Anti-Rootkit 的对抗中,取决于对该Hypervisor
层的检测和预防,以及在哪一层安装了Rootkit。

谁先去接近硬件就是赢者。

这意味着如果用户运行基于Userland 或Kernelland 的Anti-Rootkit 工具,无法检测到HypervisorRootkits,因为前者不是运行在真实的硬件上,但高于真正的硬件虚拟机。

rootkit的常见功能:
隐藏文件:通过strace ls可以发现ls命令其实是通过sys_getdents64获得文件目录的,
因此可以通过修改sys_getdents64系统调用或者更底层的readdir实现隐藏文件及目录,
还有对ext2文件系统直接进行修改的方法,不过实现起来不够方便,也有一些具体的限制。

隐藏进程:隐藏进程的方法和隐藏文件类似,ps命令是通过读取/proc文件系统下的进程目录获得进程信息的,只要能够隐藏/proc 文件系统下的进程目录就可以达到隐藏进程的效果,即hook sys_getdents64和readdir等。

隐藏连接:netstat命令是通过读取/proc文件系统下的net/tcp和net/udp文件获得当前
连接信息,因此可以通过hook sys_read 调用实现隐藏连接,也可以修改tcp4_seq_show
和udp4_seq_show等函数实现。

隐藏模块:lsmod命令主要是通过sys_query_module系统调用获得模块信息,可以通过hook sys_query_module 系统调用隐藏模块,也可以通过将模块从内核模块链表中摘除从而达到隐藏效果。

嗅探工具:嗅探工具可以通过libpcap库直接访问链路层,截获数据包,也可以通过linux 的netfilter框架在IP层的hook点上截获数据包。

嗅探器要获得网络上的其他数据包需要
将网卡设置为混杂模式,这是通过ioctl系统调用的SIOCSIFFLAGS命令实现的,查看网卡
的当前模式是通过SIOCGIFFLAGS命令,因此可以通过hook sys_ioctl隐藏网卡的混杂模式。

密码记录:密码记录可以通过hook sys_read系统调用实现,比如通过判断当前运行的进程名或者当前终端是否关闭回显,可以获取用户的输入密码。

hook sys_read还可以实现login 后门等其它功能。

日志擦除:传统的unix日志主要在/var/log/messages,/var/log/lastlog,/var/run/utmp,
/var /log/wtmp下,可以通过编写相应的工具对日志文件进行修改,还可以将HISTFILE等环境变设为/dev/null隐藏用户的一些操作信息。

内核后门:可以是本地的提权后门和网络的监听后门,本地的提权可以通过对内核模块发送定制命令实现,网络内核后门可以在IP层对进入主机的数据包进行监听,发现匹配的指定数据包后立刻启动回连进程。

rootkit的主要技术:
lkm注射、模块摘除、拦截中断(0x80、0x01)、劫持系统调用、运行时补丁、inline hook、端口反弹……
lkm注射:也是一种隐藏内核模块的方法,通过感染系统的lkm,在不影响原有功能的情况下将rootkit模块链接到系统lkm中,在模块运行时获得控制权,初始化后调用系统lkm
的初始化函数,lkm注射涉及到elf文件格式与模块加载机制。

模块摘除:主要是指将模块从模块链表中摘除从而隐藏模块的方法,最新加载的模块总是在模块链表的表头,因此可以在加载完rootkit模块后再加载一个清除模块将rootkit模块信息从链表中删除,再退出清除模块,新版本内核中也可以通过判断模块信息后直接
list_del。

拦截中断:主要通过sidt指令获得中断调用表的地址,进而获取中断处理程序的入口地址,修改对应的中断处理程序,如int 0x80,int 0x1等。

其中拦截int 0x1是较新的技术,主
要利用系统的调试机制,通过设置DR寄存器在要拦截的内存地址上下断点,从而在执行到指定指令时转入0x1中断的处理程序,通过修改0x1中断的处理程序即可实现想要的功能。

劫持系统调用:和拦截中断类似,但主要是对系统调用表进行修改,可以直接替换原系统调用表,也可以修改系统调用表的入口地址。

在2.4内核之前,内核的系统调用表地址是导出的,因此可以直接对其进行修改。

但在2.6内核之后,系统调用表的地址已经不再导出,需要对0x80中断处理程序进行分析从而获取系统调用表的地址。

运行时补丁:字符设备驱动程序和块设备驱动程序在加载时都会向系统注册一个Struct
file_operations结构实现指定的read、write等操作,文件系统也是如此,通过修改文件
系统的file_operations结构,可以实现新的read、write操作等。

inline hook:主要是指对内存中的内核函数直接修改,而不影响原先的功能,可以采用跳
转的办法,也可以修改对下层函数的call offset实现。

端口反弹:主要是为了更好的突破防火墙的限制,可以在客户端上监听80端口,而在服务器端通过对客户端的80端口进行回连,伪装成一个访问web服务的正常进程从而突破防火墙的限制。

相关文档
最新文档