ring0级rootkit之进程隐藏与检测技术.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目标进程远程线程ri teProcessMeniory ) 目标进程 远程线程 ri teProcessMeniory ) RingO级Rootkit之进程隐藏与检测技术 近来自己主机上老是莫名其妙地感染病毒(即在文件夹后默然追加了一个后缀 .exe), 以前也碰到过这种情形,即只要你点击受感染的 office文件,则分区下所有的 office文件将 全部感染,后来也好好分析过此病毒即“ sola病毒”。起初没有去管这事,后来实在受不了 就打算手工清除此病毒。打开任务管理器,尽然发现了一些诡异进程即由数字和字母构成。 显然其不是正常进程, 就运行regedit.exe搜索注册表,尝试搜索此进程, 并手工删除了其对 应的所有键值。然后重新查看受感染的分区,发现尽然清除成功。这才顿悟,这不是 sola 病毒,只是某些人写的一个再简单不过的病毒。 引用上面的话,只是想说尽管我们已经谈论并以各种方式实现了不同级别的进程隐藏技 术,但很多人却并不知晓编写简单代码,既可躲过任务管理器的进程显示列表。 Jimhotk in 在《Detection of hidden Process》一文中曾指出--估计1000个木马中仅有 1个是进程隐 藏的。可见,市面见到的那些简单木马绝大部分出自菜鸟级黑客。 黑客从事的攻击活动需要 尽可能部署的尽善尽美, 任何一个环节出现弱点, 都将是致命的。这其实等同于网络安全技 术,尽管你在多个环节上部署了多层级安全防御措施,但任一环节出现漏洞,则全盘皆输。 言归正传,下面开始谈论进程隐藏与检测技术, 尽管进程隐藏技术已经被众多人士讨论 过,笔者的目的是想通过此文, 尽可能综合当前出现的各种进程隐藏与检测技术。 谈论每种 技术实现的特点,及其如何实现,通过代码分析,尽可能全面的讲解ring。下出现的各种进 程隐藏与检测技术。 1 ?进程隐藏技术 最早出现的进程隐藏技术,其实可追溯到 ring3下的线程注入,即在目标进程上下文中 创建一个远程线程,通过此线程注入恶意 DLL文件到目标进程中,借助目标进程的运行而 被加载。基本步骤为:(1 )用OpenProcess打开目标进程,访问权限 Process_VM_Operation or Process_VM_Write ; (2)获取 kernel32.dll 下 LoadLibrary 地址(3)在指定的目标进程中, 调用VirtualAllocEx函数,在目标进程地址空间中开辟一块内存; (4)创建一个远程线程, 将恶意DLL文件加载到已分配的内存空间中。流程如图 1所示。 i nader Process OpenFrocessO Getlrtodul eHandl e () GetProcAd±ress () VirtualAllocEx0 L oadL i br aryb a 日 eAddre s s) Ct eat eReino t eThr ead() 图1. Ring3下远程线程注入攻击流程 随着SSDT Hook技术的提出,涌现出大量针对 SSDT的Hook攻击代码。SSDT表中存 放了系统调用函数内存地址。即任意给定的类似 Nt* ()函数,在SSDT表中都可以找到其 内存地址,通过简单的索引即可获取指定函数的内存地址。对应的索引值即: In dexValue = *((PULONG*)((PCHAR*)address + 1)); 读者不妨可以借助 Windbg工具,查看ZwOpenProcess进程的函数实现,如图 2。 ? Kernel coBzpipe^ \pipe\co?^l, baud=l 15200. pip- -linDb; Piit Edit View Bftbug indow |c ob Band Jkd nt\ZwOpenProcess: 804ff720 bQ7aOOOOOO BO4ff725 8d542404 804££729 9c 604f f?2a 毓旧 804±f72c eS50ed0300 mov lea pushed push eaiK, 0x7a adx,feap+0x4] 0x8 nt\KiSystemService (E053e4E1) 804±f731 C21D00 ret UxlU 图2. Windbg下ZwOpenProcess函数实现的部分代码 SSDT结构体这里就不给出,不知道的读者可 google上搜索查阅。通过定义此结构体, 其内部存在ServiceTableBase参数,通过ServiceTableBase[IndexValue]即可获取到任意系统 函数的内存地址。 OK,此时则可大刀阔斧的 HOOK这些内存地址了。下面阐述如何借助 SSDT表实现进程隐藏。 1.1基于SSDT的进程隐藏技术

文档评论(0)

wumanduo11 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档