1,MBRBOOTKIT –鬼影
?0?3鬼影系列
?0?3特点:只支持XP系统,基于国外的开源版本修改。
?0?3MBR里,挂中断13H,驻留高端内存,挂NTLDR加载,对NTOS的函数进行HOOK,NTOS初始化过程中,加载病毒驱动,从而进行一系列操作。
?0?3所有病毒代码都在MBR区域里,位于操作系统之外,格式化硬盘,重装系统均无法解决。
?0?3缺点:只支持XP系统,对自己的保护不足,很容易检测和修复。
2,MBRBOOTKIT –TDL4
?0?3TDL4系列
?0?3在欧美流行,国内比较少见,技术水平高于鬼影。
?0?3支持所有的WINDOWS操作系统。甚至是64WIN7,并且在64WIN7上支持绕过PATCHGUARD及驱动加载签名验证,如果这种技术一旦流行开来,对64WINDOWS系统的安全打击将是致命的 。
?0?3Mbr-ldr16-ldr32(ldr64)-drv32(drv64)
?0?3MBR部分的主要功能是搜索ROOTKIT加密分区中的LDR16模块,并将其加载进内存,将控制权交给他
?0?3LDR16:

加载运行后会HOOKint13h挂钩硬盘的读写操作,然后会加载磁盘最后加密扇区中的原始备份MBR到内存中,并将控制权交给原始MBR去执行。而后者会加载操作系统引导模块。而系统引导模块则通过INT 13H来读取加载系统启动的文件。而每次读取操作都要经过TLD4的钩子处理。

在钩子程序中判断是否是读取特定的文件,是则进行处理,否则直接下传。

其中要进行处理的一个文件是kdcom.dll

这个DLL和系统调试相关。Ldr16会在挂钩程序中对这个文件的特征进行判断,是否符合,是则进行处理。包括了同时针对32位和64位程序的处理.

当发现加载该文件时候,LDR16会搜索加密分区中的LDR32,LDR64组件,根据所处的不同系统,然后加载代替内存中的kdcom.dll。从而完成了内存中的劫持。除此之外LDR16还要做的一件事就是改变内存中的BCD信息。后者是WINDOWSVISTA以后引入用来代替BOOT.INI的注册表hive文件.

TDL4修改BCD中的BcdLibraryBoolean_EmsEnabled键,默认的标志是“16000020”,将其替换为“26000022”?6?2BcdOsLoaderBoolean_WinPEMode键。从而启动系统的WINPE系统模式。而在WINPE模式下,将不会进行代码完整性验证,从而让系统不会验证kdcom.dll的数字签名。而这种模式只需要挺过验证期后,即可通过将/MININT参数设置为一个无效的值而禁止该模式。

?0?3LDR32/LDR64

为了确保系统初始化的成功,LDR32/LDR64必须支持kdcom.dll的功能函数

对于32位和64位系统来说,导出函数都是一样的。但对于TDL4LDR32/LDR64来说只需要在KdDebuggerInitialize1进行进行处理即可,对其他的函数则直接返回成功即可。通过这种简单的方法,使TDL既能在系统启动早期就进行初始化,又达到了禁止系统调试器的效果,真可谓一石二鸟的效果。

在系统初始化的早期阶段Phase1Initialization会调用KdDebuggerInitialize1,而后会进行TDL的初始化

而对于LDR32/LDR64的代码基本相同,因为采用同样的C代码编译的。

当调用KdDebuggerInitialize1后 ,LDR32/LDR64会进行一系列的初始化

调用未公开的函数IoCreateDriver来为LDR32/LDR64创建一个驱动对象,因为kdcom.dll本身不作为一个驱动程序被加载。同时将初始化函数作为参数传递给IoCreateDriver

?0?3通过调用IoRegisterPlugPlayNotification,注册一个即插即用的回调。
?0?3而当该即插即用回调被调用的时候,将会搜索TDL4加密分区中的主ROOTKIT驱动DRV32/DRV64,是32位还是64位取决于当前是哪个操作系统。而后将该主ROOTKIT驱动(DRV32/DRV64)加载进内存并进行必要的配置后,调用其驱动程序的入口点
?0?3DRV32/DRV64
?0?3一旦LDR32/LDR64被成功初始化后,ROOTKIT主功能模块将被加载,其主要功能就是隐藏自身,防止被安全软件发现。当安全软件试图访问ROOTKIT关键部分的扇区的时候返回给虚假的结果,比如访问MBR,磁盘最后区域的时候,返回的都是虚假的正常信息。
?0?3通过对ATAPI.SYS的设备对象劫持,而该种方式的挂钩将不会引发PTACH GUARD的保护机制
?0?3除此之外,该ROOTKIT还创建了监视线程,检测其的对象HOOK,MBR是否被恢复,如果发现被恢复,则重新感染MBR.
?0?3优点:强大的 兼容性,支持所有WINDOWS系统,强大的隐藏保护功能,在中毒的系统下很难获得原始的MBR信息,强大的自我保护功能,在内核线程中,保护自己的HOOKMBR,一旦被还原,就立刻再HOOK和感染,比较难以清除。
?0?3缺点:目前的ARK工具越来越强大,还是有办法进行检测和修复。而且进入WINPE下修复,则基本可以秒杀了。
BIOSROOTKIT –BMW病毒
一、BMW病毒BIOS部分
  增加了
ISA模块BIOS部分,名为HOOK.ROM,作用主要是检测MBR部分是否被恢复。如果发现MBR部分已被修复,就将BIOS内的病毒代码约14个扇区写入MBR中,导致用户反复格式化、高格低格,或重新分区都无效。

?0?3MBR部分病毒代码执行后,会从第2个扇区开始读6个扇区的病毒代码到0X7C00处,然后跳至该处执行,然后读取第7个扇区中的备份MBR到内存中,验证扇区的有效性,通过验证后,读取分区表中的引导扇区所在的扇区到0X7C00处,验证引导分区的有效性。通过验证后,判断引导分区的类型,目前该病毒支持NTFSFAT32,根据不同的分区类型进行不同的处理,再经过解析文件系统找到文件所在扇区,找到相应的Windows系统文件读取PE信息判断其是否被感染过。(XP/2003系统为Winlogon.exeWin7/Vista系统为Wininit.exe
?0?3如果Windows系统文件已被感染,则在屏幕上显示"Find it OK!",然后调入原始MBR,跳到原始MBR处执行;如果Windows系统文件没有被感染,则进行PE感染写扇区,之后在屏幕上显示"Find it OK!",然后调入原始MBR,跳到原始MBR处执行。
?0?3BMW病毒Windows部分(WinlogonWininit文件执行感染)

病毒代码解密后加载指定文件,创建病毒调用CreateThread创建线程,同时跳回原始入口点执行,在病毒线程里先Sleep10秒,然后调用URLDownloadToFileA从黑客服务器下载一个Downloader到本地,验证文件下载成功后,调用WinExec执行,从而下载运行多种恶意程序;该病毒还会下载驱动,命名为c:\my.sys,由之前的病毒代码通过一系列服务函数来创建加载驱动,完成后该病毒线程进入无限Sleep状态。

?0?3c:\my.sys这个磁盘钩子驱动,会在WINLOGON的感染代码里被加载。驱动对磁盘类驱动disk.sys进行READWRITEDEVICEIOCONTROL, 的DISPTACH进行hook,防止MBR及相关病毒扇区部分被读取
?0?3BIOSRootkit存在许多优缺点,就优点来看,其:
?0?31.能够第一时间获取系统主动权。由于固化于BIOS芯片中的程序在计算机启动时是最先执行的,因此嵌入BIOS芯片中的BIOSRootkit自然能够第一时间获得系统主动权。
?0?32.不在硬盘上留下痕迹。BIOSRootkit主要存在于BIOS芯片中,因此传统的基于硬盘的安全检测程序将会失去作用。
?0?33.能够重复感染已有操作系统或新装系统。由于BIOSRootkit存在于BIOS芯片中,因此重装新系统对其毫无作用。
?0?34.能够对抗几乎所有现有的HIPS、杀毒、审计等安全软件。现有的所有HIPS、杀毒、审计等安全软件几乎都是基于操作系统的,对于存在于硬件中的BIOSRootkit也毫无作用。
?0?35.难于检测。BIOSRootkit一般作为BIOS设计规范中的标准ISAPCI模块存在,因此难于判断相应模块是否为BIOSRootkit
?0?36.难于清除。即使发现并判断出某个ISA/PCI模块为BIOSRootkit,也只有通过硬件编程写入的方式才能清除。而硬件编程器并不是每个人都有并能熟练掌握的。
?0?3BIOSRootkit缺点表现在:
?0?31.程序编写较为困难。BIOSRootkit主要依靠汇编程序来进行编写,并且汇编只能调用特定的BIOS中断调用。比如int19h系统引导中断可以正常调用,而int13h磁盘中断就无法正常使用,原因是BIOS引导计算机时,磁盘设备还没有准备好。
?0?32. BIOS类型较为繁杂,很难做到通用性很好的BIOSRootkitBIOS芯片类型以及其主板类型甚至是主板编号都对BIOSRootkit有较大限制。加上AwardAMIPhoenix类型的BIOS各自对硬件调用规范也不尽相同,因此通用性较好的BIOSRootkit难于实现。
?0?33. BIOS相关技术资料奇缺。BIOS相关资料一直是各大BIOS厂商严格保守的机密,因此BIOSRootkit编写需要的许多相关电器特性、调用参数等资料都无法找到。
?0?34.涉及操作系统实/保护模式转换、系统引导等复杂问题。保护模式下的编程,特别就未开源的Windows操作系统来说,BIOSRootkit对于操作系统流程控制的相关实现较为困难。
?0?35. BIOS空间限制。BIOS芯片空间较为宝贵,一般为512K大小。除了厂家初始加入的固定程序外,可用的剩余空间往往不够放下BIOSRootkit
?0?3关于BMWBIOS部分,修复一直是很麻烦的问题。要做好,必须实现BIOS整个文件解析,打包,拆分。但实际上看病毒的操作,就可以知道。通过BIOS工具CBROM来实现整个过程,病毒所做的只是,把BIOS读出来,用工具加入自己的代码,自动修正BIOS文件后,再将整合后的BIOS文件写回而已。那么我们也可以那么做,把BIOS读出来,检查里面是否有病毒代码,有的话,用工具去除后,再将BIOS代码写回即可。一切都是那么的简单。唯一的困难的,就是你的测试机器,仅此而已。

基于MBR 的bootkit的进展 鬼影-TDL4-BMW相关推荐

  1. linux启动启动过程(基于MBR)

    前言: 因为uefi的出现,bios分为legacy bios和uefi bios,下文中,我用的是legacy bios,因为legacy bios一般配合MBR使用. 这篇文章先说基于MBR的启动 ...

  2. 腾讯 AI Lab副主任俞栋:过去两年基于深度学习的声学模型进展

    来源:腾讯AI Lab 概要:过去几年里,自动语音识别(ASR)已经取得了重大的进步 .这些进步让 ASR 系统越过了许多真实场景应用所需的门槛,催生出了 Google Now.微软小娜和亚马逊 Al ...

  3. 如何避免调参来自动选择神经网络结构?基于遗传算法的NAS最新进展

    神经结构搜索简要介绍 神经结构搜索最近发展迅猛,涌现出了大量的研究成果.总的来说,其主要分为四类:基于强化学习的神经结构搜索,基于遗传算法的神经结构搜索,基于梯度下降的方法与其他一些方法. 1.1 基 ...

  4. 基于深度学习的图像识别进展:百度的若干实践

    来源:<中国计算机学会通讯> 2015年第4期<专题> 作者:都大龙 余轶南 罗 恒 等 概述:深度学习和图像识别 近年来在人工智能领域最受关注的,非深度学习莫属.自2006年 ...

  5. 深度 | 腾讯 AI Lab副主任俞栋:过去两年基于深度学习的声学模型进展

    感谢阅读腾讯AI Lab微信号第七篇文章,这是一篇深度研究的概述,论文全文可在页末下载.今年七月, IEEE/CAA Journal of Automatica Sinica发表了腾讯 AI Lab ...

  6. 腾讯AI Lab副主任俞栋:过去两年基于深度学习的声学模型进展

    本文来自腾讯AI Lab(微信号:tencent_ailab),这是一篇深度研究的概述.今年七月, IEEE/CAA Journal of Automatica Sinica发表了腾讯 AI Lab ...

  7. GPT转MBR防范Bootkit病毒装机教程

    随着PC硬件和系统的发展,BIOS + MBR逐渐成为过去式,在WIN8以后微软推荐用户使用UEFI + GPT的启动方式.GPT就是GUID分区表. MBR2GPT.exe是由微软官方随Win10 ...

  8. 计算机视觉与深度学习 | 基于MATLAB的Vibe算法消除鬼影(代码版)

    /********************************************************** github:https://github.com/MichaelBeechan ...

  9. 木马核心技术剖析读书笔记之木马驱动加载与启动

    Windows 系统启动过程 基于 UEFI 的启动过程 UEFI 固件接口可以实现 BIOS 固件接口类似的功能,逐步成为主流的固件接口之一.它主要提供一组在操作系统启动之前在所有平台上一致的服务, ...

  10. 写计算机病毒吗,会写计算机病毒很牛吗

    满意答案 djipuh90 2016.02.11 采纳率:52%    等级:12 已帮助:8216人 先假设你说的病毒是os系统病毒,以windows系统为例 类似熊猫烧香这种层次的病毒,大概只能算 ...

最新文章

  1. jquery实现app开发闹钟功能_APP商城开发的优势与功能
  2. 【腾讯代码文化】人均3.6万行代码,《腾讯研发大数据报告》正式发布!
  3. 跟我学Spring Cloud(Finchley版)-07-Ribbon入门
  4. ASP.NET中的状态管理
  5. RoboGuice入门
  6. Gson的使用,对于不需要html escape的情况的处理
  7. linux 分隔大文件,linux系统下分割大文件的方法
  8. 双十二心动礼遇,送你3本算法好书
  9. jediscluster的maxAttempts的理解
  10. java打字训练课程设计_Java打字训练课程设计
  11. 离线语音控制并不等于本地语音识别
  12. php post不完整,如何在PHP中检查不完整的POST请求
  13. JavaScript数据类型之字符串型(4)
  14. 阶段3 1.Mybatis_11.Mybatis的缓存_8 mybatis的二级缓存
  15. php 转换中文乱码,解决php中文乱码转换问题
  16. 计算机用户密码开机设置,计算机开机密码和屏保密码设置指南
  17. 哥尼斯堡的“七桥问题”(欧拉回路)
  18. 建模软件MAYA最详细的教程介绍来了
  19. sersync实时同步 解决单点NFS单点故障问题
  20. 柔性数组 C/C++/Java

热门文章

  1. MAC 浏览器长截屏 滚动截屏
  2. java离职证明模板word_离职证明模板Word免费版下载
  3. RemoteDesktopManager和微软远程桌面管理器RDCman
  4. c语言贪吃蛇积分用什么函数,C语言之贪吃蛇(curses库函数)
  5. 看完这个,让你分分钟搞定罗盘与加计校准!
  6. 方正字库中英文对照表 (简体部分)
  7. CLRC663学习笔记
  8. 每次打开Word,Excel,弹出Office安装配置进度向导解决办法
  9. 量子加密技术成功在人工智能产品上的应用落地
  10. 如何理解P40采用RYYB比RGGB的感光能力提升40%