`
wodamazi
  • 浏览: 1418475 次
文章分类
社区版块
存档分类
最新评论

Rootkit基础(1)

 
阅读更多

1. rootkit的主要分类:

应用级->内核级->硬件级

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

内核级rootkit又可分为lkmrootkit、非lkmrootkit。lkmrootkit主要基于lkm技术,通过系统提供的接 口加载到内核空间,成为内核的一部分,进而通过hook系统调用等技术实现隐藏、后门功能。非lkmrootkit主要是指在系统不支持lkm机制时修 改内核的一种方法,主要通过/dev/mem、/dev/kmem设备直接操作内存,从而对内核进行修改。

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

2. rootkit的常见功能:

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

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

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

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

嗅探工具:嗅探工具可以通过libpcap库直接访问链路层,截获数据包,也可以通过linux的netfilter框架在IP层的hook点上 截获数据包。嗅探器要获得网络上的其他数据包需要将网卡设置为混杂模式,这是通过ioctl系统调用的SIOCSIFFLAGS命令实现的,查看网卡的当 前模式是通过SIOCGIFFLAGS命令,因此可以通过hooksys_ioctl隐藏网卡的混杂模式。

密码记录:密码记录可以通过hooksys_read系统调用实现,比如通过判断当前运行的进程名或者当前终端是否关闭回显,可以获取用户的输入密码。hooksys_read还可以实现login后门等其它功能。

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

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

3. rootkit的主要技术:

lkm注射、模块摘除、拦截中断(0x80、0x01)、劫持系统调用、运行时补丁、inlinehook、端口反弹……

lkm注射:也是一种隐藏内核模块的方法,通过感染系统的lkm,在不影响原有功能的情况下将rootkit模块链接到系统lkm中,在模块运行时获得控制权,初始化后调用系统lkm的初始化函数,lkm注射涉及到elf文件格式与模块加载机制。

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

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

劫持系统调用:和拦截中断类似,但主要是对系统调用表进行修改,可以直接替换原系统调用表,也可以修改系统调用表的入口地址。在2.4内核之前, 内核的系统调用表地址是导出的,因此可以直接对其进行修改。但在2.6内核之后,系统调用表的地址已经不再导出,需要对0x80中断处理程序进行分析从而 获取系统调用表的地址。

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

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

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

4. Rootkit技术之内核钩子原理

我们知道,应用程序总是离不开系统内核所提供的服务,比如它要使用内存的时候,只要跟操作系统申请就行了,而不用自己操心哪里有空闲的内存空间等问题,实 际上,这些问题是由操作系统的内核来代劳的。站在黑客的角度讲,如果能够控制内核,实际上就是控制了内核之上的各种应用程序。本文将向您介绍如何建立内核 级钩子来控制操作系统向上提供的各种低级功能。有了内核级钩子,我们不但能够控制、监视其他程序并过滤有关数据,还能用其实现Rootkit本身及其它程 序的隐形。
本文首先回顾系统调用表和内存保护方面的知识,然后讲解如何实现内核钩子,最后对一些重要的内核函数进行了简要的说明。
分享到:
评论

相关推荐

    RootKit基础源码

    收集整理自www.rootkit.com的RootKit基础源码。

    64位RootKit源码

    德国人写的win64位RootKit源代码。

    内核级Rootkit技术基础知识

    黑客可以在入侵后置入Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取证人员也可以利用Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动。而本文的目的,就是同读者一起踏上...

    一种硬件虚拟化技术的Rootkit及其检测

    为了研究这种新的Rootkit技术,介绍了硬件虚拟化技术和HVM Ro-otkit的工作机制,在此基础上对HVM Rootkit的键盘过滤和网络传输功能进行设计和实现,展示攻击者如何利用HVM Rootkit对用户计算机造成的安全威胁,对HVM ...

    【专题四】Rootkit的学习与研究

    因此,对于本版块的思路很清晰,首先是基础技术理论的研究,由于目前windows还是主流的操作系统,因此,我们主要研究windows下的rootkit,这个课题是一个长期的,对这个课题感兴趣的朋友,欢迎大家一起参与讨论。...

    论文研究-硬件虚拟化rootkit检测方法研究综述.pdf

    总结了这些检测方法的优缺点,并在此基础上提出了两种通过扫描内存代码来检测HVMR恶意性的方法,分别是基于hypervisor的恶意性检测方法和基于硬件的恶意性检测方法,同时也预测了未来虚拟化检测技术的发展方向。

    论文研究-一种新的内核级Rootkit的检测方法.pdf

    在详细剖析内核级Rootkit 原理的基础上分析了其他检测Rootkit方法的局限性,提出一种新的方法。该方法分析内核模块加载时是否有可疑行为,结合对比system.map和kmem文件判断其是否为Rootkit。最后用实验证明了此方法...

    rootkit技术详解

    本电子书来自看雪论坛,比较详细地介绍了当前rootkit的基础知识

    内核级Rootkit技术入门

    本文介绍了Windows下的内核级Rootkit的最基础性的东西,以及利用驱动程序将代码导入到内核的方法。虽然我们还没有涉及到真正的Rootkit,但这些内容是我们掌握Rootkit的必经之路,就像我们要建一座6层的楼房,却不能...

    IoT_Rootkit__结合设备态势感知的物联网代码隐藏技术.pdf

    本议题将介绍几种典型IoT rootkit攻击技术,包括在IoT设备上实现进程隐藏、重启驻留、设备感染等核心功能,并在此基础上提出相关检测方法。同时,结合VNPFilter、HNS等几种最新的典型物联网攻击样本分析IoT rootkit...

    基础电子中的Anti MBR-Rootkit技术研究

     1.前言  基于Windows启动过程的Rootkit作为目前最前沿的Rootkit技术,把存放地由传统的操作系统磁盘文件扩展到了硬盘主引导扇区等位置,同时将自身的启动提前到了Windows系统内核启动相同的级别,甚至还要更早的...

    lkm-rootkit:lkm Rootkit 支持 x8664、arm、mips

    lkm-rootkitan lkm rootkit support x86/64,arm,mips支持 kernel version 2.6 及 3.x ,支持 x86, x86_64, arm, mips 平台,支持进程隐藏、进程免杀(root 无法 kill)支持文件隐藏、文件免杀(root 无法修改、删除)...

    一种新的内核级Rootkit的检测方法 (2009年)

    在详细剖析内核级 Rootkit原理的基础上分析了其他检测 Rootkit方法的局限性,提出一种新的方法。该方法分析内核模块加载时是否有可疑行为,结合对比 system. map和 kmem文件判断其是否为 Rootkit。最后用实验证明了此...

    一种硬件虚拟化技术的Rootkit及其检测 (2010年)

    为了研究这种新的Rootkit技术,介绍了硬件虚拟化技术和HVMRootkit的工作机制,在此基础上对HVMRootkit的键盘过滤和网络传输功能进行设计和实现,展示攻击者如何利用HVMRootkit对用户计算机造成的安全威胁,对HVMRootkit...

    Vixen:基本的Solaris LKM Rootkit

    它还不完整,但是基础。 隐藏文件,进程和模块。 在Solaris 10 SPARC和x86上进行了测试。 运行compile.sh应该配置您的系统以供使用。 在那之后运行/ root / vixen / fox将加载模块并打开一个套接字(未隐藏)以...

    asp后门、asp木马大清理.txt

    网上的一些防范asp木马的教程都基于提前防范的基础之上,例如:禁止fso,利用ntfs限制用户目录等等。这些方法虽然有效,但是都是基于提前防范的,而且对于一般的买空间来做网站的朋友来说显然不可能。我在这里讲讲...

    Windows内核级Rootkits隐藏技术的研究 (2010年)

    在系统分析和深入研究传统内核级Rootkits隐藏技术的基础上,提出了一个集驱动模块整体移位、内核线程注入、IRP深度内联Hook 3种技术为一体的Rootkits隐藏技术体系。实验结果显示,基于该隐藏技术体系所实现的...

    《黑客免杀攻防》任晓珲 著

    《黑客免杀攻防》共20章,分为三大部分:基础篇(第1~6章)详细介绍了黑客免杀技术的初级技巧,包括查找(修改)特征码、常见特征码绕过技巧、壳在免杀中的应用、花指令和其他免杀基础知识;高级篇(第7~16章)深入...

    黑客免杀攻防

    , 《黑客免杀攻防》共20章,分为三大部分:基础篇(第1~6章)详细介绍了黑客免杀技术的初级技巧,包括查找(修改)特征码、常见特征码绕过技巧、壳在免杀中的应用、花指令和其他免杀基础知识;高级篇(第7~16章)...

Global site tag (gtag.js) - Google Analytics