- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MBR的BOOTKIT分析及安全防护措施
作者:wowocock(360系统急救箱工程师)
传统木马病毒普遍是基于文件形式存在于机器上,尽管它们会通过各种加壳免杀技术逃避杀软检测,但随着云安全和主动防御技术的发展,恶意程序想驻留系统已经变得越来越难。在这种情况下,基于MBR的BOOTKIT开始兴起。
基于MBR的BOOTKIT特点是无文件、无进程、无模块,可以只存在于运行的内存和位于操作系统之外的磁盘扇区空间里,即使重装系统、甚至格式化硬盘也无法清理干净。
什么是MBR呢?MBR是Master Boot Record的简写,又称为主引导扇区,位于硬盘的第一个扇区。开机BIOS自检后,所被加载的第一个扇区。
系统启动过程主要由以下几步组成(以硬盘启动为例):
1. 开机 :-)
2. BIOS加电自检 ( Power On Self Test – POST ) ,内存地址为 0ffff:0000;
3. 将硬盘第一个扇区 (0头0道1扇区, 也就是MBR) 读入内存地址 0000:7c00 处;
4. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则转去尝试其他启动介质, 如果没有其他启动介质则显示”No ROM BASIC” 然后死机;
5. 跳转到 0000:7c00 处执行 MBR 中的程序;
6. MBR 首先将自己复制到 0000:0600 处, 然后继续执行;
7. 在主分区表中搜索标志为活动的分区. 如果发现没有活动分区或有不止一个活动分区,则转停止;
8. 将活动分区的第一个扇区读入内存地址 0000:7c00 处;
9. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则显示 ”Missing Operating System” 然后停止, 或尝试软盘或其他介质启动;
10. 跳转到 0000:7c00 处继续执行特定系统的启动程序;
11. 启动系统。
以上步骤中,2、3、4、5是由 BIOS 的引导程序完成;6、7、8、9、10由MBR中的引导程序完成。
基于MBR的bootkit就是将系统原始的MBR替换为自己的代码,从而达到一启动加载自身的目的。
基于MBR的BOOTKIT第一代典型:“鬼影”病毒
§ 特点:只支持XP 系统,基于国外的开源版本修改。
§ 从MBR里,挂实模式磁盘读写中断13H,驻留高端内存,挂 NTLDR 加载,对NTOS的函数进行HOOK,在NTOS初始化过程中,加载病毒驱动,从而进行一系列操作,加载病毒驱动,注入浏览器,刷流量,篡改系统图标等。
§ 所有病毒代码都在 MBR区域里,位于操作系统之外,格式化硬盘,重装系统均无法解决。
§ 弱点:只支持XP系统,对自己的保护不足,很容易检测和修复,后续的变种增加了对磁盘类驱动和端口驱动的挂钩,来保护自己 。
“鬼影”系列最经典的样本是2011年的“鬼影3”,360反病毒工程师对其技术分析如下:
1 首先VirusMBR复制自身到内存当中,然后跳过去复制的内存当中执行。
2 通过int 13h的扩展读功能把病毒写在硬盘当中的内容复制到内存里,主要复制的是加密部分,包括保护模式代码,Hello_tt.sys和加密的系统原MBR。
3 接下来对内存当中的加密内容进行解密,这样系统原Mbr也解密出来了。
4 对int 13h中断进行hook,之后把系统原Mbr加载到内存0x7c00处,返回执行系统原Mbr指令。
5 由于hook了int 13h中断,对于2h和42h子功能进行过滤,当系统加载ntldr文件的时候,对OsLoader.exe进行hook。
6 通过查找指定序列签名Hook OsLoader.exe,主要挂钩的地方是_BlLoadBootDriver@12处的下一句代码,之后OsLoader.exe执行的时候病毒会再次获得控制权。
7 当病毒再次获取到控制权,此时系统已近通过S切换到保护模式下了,病毒搜索OsLoader.exe的代码空间,获取_BlLoaderBlock地址,如下图(红框圈起来是搜索代码的表示,最终获取的是地址0×415921处的 A1后的4个字节,即_BlLoaderBlock地址。)
8 获取了_BlLoaderBlock之后,通过该结构得到ntoskrnl.exe的加载基址,从而查找到其内部的导出函数IoGetCurrentProcess,对该函数进行Inline Hook,修改函数头部5字节,之后返回OsLoader.exe继续执行。
9 当系统内核初始化的时候调用IoGetCurrentPorcess,这时候病毒重新获得控制权
文档评论(0)