BootKit病毒——“异鬼Ⅱ”的前世今生
七月底,一种名为“异鬼Ⅱ”的木马在全网大肆传播。一个多月过去了,风声渐渐平息,之前本来准备专门就这个木马写一篇博客的,结果拖到现在,幸好时间隔得还不算太久。闲话不多说,回到正题。

虽然腾讯电脑管家已经很早就做出了相应的更新,并同时推出了“异鬼Ⅱ”病毒的专杀固件,但还是有不少电脑中招,所幸因为该病毒的特殊属性,没有造成太大的经济损失。下面我就详细介绍一下这种病毒。
“异鬼Ⅱ”大体上的工作特点是:通过知名刷机软件——“甜椒刷机”、“奇兔刷机”、“绿豆刷机”感染电脑VBR(卷引导记录),感染后使电脑沦为肉鸡,具有篡改浏览器主页、劫持导航网站、后台刷流量等恶意行为特点,即使用户重装系统,也无法清除。
这里涉及到一个词,VBR(卷引导记录),由于百度百科并没有收录卷引导记录的词条,我于是去维基百科找到了VBR的详细介绍:
A Volume Boot Record (VBR) (also known as a volume boot sector, a partition boot record or a partition boot sector) is a type of boot sector introduced by the IBM Personal Computer. It may be found on a partitioned data storage device such as a hard disk, or an unpartitioned device such as a floppy disk, and contains machine code for bootstrapping programs (usually, but not necessarily, operating systems) stored in other parts of the device. On non-partitioned storage devices, it is the first sector of the device. On partitioned devices, it is the first sector of an individual partition on the device, with the first sector of the entire device being a Master Boot Record (MBR) containing the partition table.
The code in volume boot records is invoked either directly by the machine's firmware or indirectly by code in the master boot record or a boot manager. Code in the MBR and VBR is in essence loaded the same way.
Invoking a VBR via a boot manager is known as chain loading. Some dual boot systems, such as NTLDR (the boot loader for all releases of Microsoft's Windows NT-derived operating systems up to and including Windows XP and Windows Server 2003), take copies of the bootstrap code that individual operating systems install into a single partition's VBR and store them in disc files, loading the relevant VBR content from file after the boot loader has asked the user which operating system to bootstrap. In Windows Vista, Windows Server 2008 and newer versions, NTLDR was replaced; the boot loader functionality is instead provided by two new components: WINLOAD.EXE and the Windows Boot Manager.
译成中文是这样的(谷歌翻译过来的,感觉没有太大的问题,所以只做了一点修改,基本保留了原文):
卷启动记录 (VBR) (也称为卷启动扇区、分区启动记录或分区引导扇区) 是 IBM 个人计算机引入的一种引导扇区类型。它可以在分区数据存储设备 (如硬盘) 或未分区设备 (如软盘) 上找到, 并包含存储在设备其他部分的引导程序 (通常但不一定是操作系统) 的机器代码。在无分区存储设备上, 它是设备的第一个扇区。在分区设备上, 它是设备上单个分区的第一个扇区, 整个设备的第一个扇区是包含该分区表的主引导记录 (MBR)。
卷启动记录中的代码由计算机的固件直接调用, 也可以由主启动记录或引导管理器中的代码间接引用。在 MBR 和 VBR 中的代码实质上是以相同的方式加载的。
通过启动管理器调用 VBR 称为链加载。某些双引导系统 (如 NTLDR (Microsoft windows NT 派生的操作系统的所有版本的启动加载程序 (包括 windows XP 和 windows Server 2003)) 将单个操作系统安装到的引导代码副本复制到单个分区的 vbr 并将它们存储在光盘文件中, 在引导加载程序要求用户引导操作系统后, 从文件中加载相关的 vbr 内容。在 windows Vista 中, windows Server 2008 和更新版本, NTLDR 被替换;引导加载程序功能由两个新组件提供:WINLOAD.EXE 和 Windows 启动管理器。
这里有两点要提到。其一,虽然在百度搜索卷引导记录会直接指向MBR的内容,但VBR和MBR并非同一种目录,二者的相同点仅仅是——储存引导代码,代码以同样的方式加载。红字也说明了,VBR是设备单个分区的第一扇区包含的内容,而MBR是整个设备的第一扇区包含的内容,二者并不对等。其二,VBR储存的引导代码是操作系统的启动加载程序,换言之,VBR是在操作系统之前加载的内容。

通常,我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间,故而将习惯将该扇区称为MBR扇区(简称MBR)。由于这一扇区承担有不同于磁盘上其他普通存储空间的特殊管理职能,作为管理整个磁盘空间的一个特殊空间,它不属于磁盘上的任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。这也使得“异鬼Ⅱ”入侵后非常顽固,不能通过传统的格式化或者重装系统的方法清除病毒。

而“异鬼Ⅱ”真正能够大肆传播,一方面是因为VBR主要负责用户电脑操作系统引导程序的加载,比Windows操作系统更早启动,一旦VBR被感染,杀毒软件将很难检测出来;另一方面由于此次“异鬼Ⅱ”木马为正规软件公司所开发,并具有官方的数字签名,不少安全厂商将其加入意味着安全的“白名单”中,大多数杀毒软件无法检测到该木马的存在。

实际上,“异鬼”并非今年暑期才真正出现,在几年前就已经有不少杀软报出感染电脑VBR的“异鬼”病毒。通常认为“异鬼”第一代在2016年8月出现,其实早在2010年7月就已经被报出“异鬼”变种dlv,而在今年7月,“异鬼Ⅱ”挂载在高速下载器和不少知名刷机软件上,悄然潜入众多用户的电脑。
初代“异鬼”木马通过Ghost装机以及游戏外挂等渠道传播,成功感染电脑后,会执行劫持用户浏览器主页和推广安装流氓软件等恶意行为。除此之外,刚刚过去的传播量级逾百万的暗云系列木马也应用了Bootkit技术。这里又出现了一个新概念:什么是BootKit?
Bootkit是更高级的Rootkit,该概念最早于2005年被eEye Digital公司在他们的“BootRoot"项目中提及,该项目通过感染MBR(磁盘主引记录)的方式,实现绕过内核检查和启动隐身。可以认为,所有在开机时比Windows内核更早加载,实现内核劫持的技术,都可以称之为Bootkit,例如后来的BIOS Rootkit,VBootkit,SMM Rootkit等。(以上摘自MJ0011《高级Bootkit——tophet》)
对于Bootkit,一旦它获得执行机会,它会比操作系统更早被加载,从而对杀毒软件后续的有效查杀造成很大的挑战,有时这种挑战甚至是强弱悬殊的。然而,如果把Bootkit加载的完整流程进行综合考虑,则在其获得执行机会之前,杀毒软件仍然有不少的机会将其扼杀于摇篮之中,这是建立在一个前提,即杀毒软件永远比病毒先被安装到系统里。
因此,要对付Bootkit,不应该单纯从Bootkit被执行后的行为着眼,而应该以全局的观念,从源头到结果各个环节综合把关,也就是提高安全软件的全程综合监控能力,一旦在这个过程中Bootkit程序(或安装Bootkit的原始病毒体)的行为被病毒软件有效拦截,那么杀毒软件仍然可以与之一战。
· 相关链接:
· Volume Boot Record -- Wikipedia
https://en.wikipedia.org/wiki/Volume_boot_record
· 腾讯电脑管家 --“异鬼Ⅱ”来袭
https://guanjia.qq.com/avast/25/index.html
· 腾讯安全实验室 -- 警惕!“异鬼Ⅱ”木马藏身甜椒刷机软件,百万用户电脑中招!
http://www.sohu.com/a/159827249_740948
· 主引导记录 -- 百度百科
https://baike.baidu.com/item/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95/7612638?fr=aladdin
· 异鬼 -- 百度百科
https://baike.baidu.com/item/%E5%BC%82%E9%AC%BC/22045542
· 异鬼Ⅱ -- 百度百科
https://baike.baidu.com/item/%E5%BC%82%E9%AC%BC%E2%85%A1/22045253?fr=aladdin
· BootKit -- 百度百科
https://baike.baidu.com/item/BOOTKIT/10871889?fr=aladdin
BootKit病毒——“异鬼Ⅱ”的前世今生的更多相关文章
- 权力的游戏第七季/全集Game of Thrones迅雷下载
艾美及金球奖获奖HBO原创剧集<权力的游戏>第七季将于2016年夏天晚些时候开拍.新的一季共有七集,主要拍摄地为北爱尔兰,部分镜头也将在西班牙和冰岛取景.上映时间预计将略有推迟,至2017 ...
- 2019CSUST集训队选拔赛题解(二)
凛冬将至 Description 维斯特洛大陆的原住民是森林之子,他们长得如孩童一般,善于使用石器,威力值35,用树叶树枝作为衣物,在森林里繁衍生息,与万物和平相处.他们会使用古老的魔法(比如绿之视野 ...
- Go语言基础之并发
并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因. Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天) ...
- Go语言 - goroutine
并发与并行 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天). 并行:同一时刻执行多个任务(你和你朋友都在用微信和女朋友聊天). Go语言的并发通过goroutine实现.goroutin ...
- GO学习-(18) Go语言基础之并发
Go语言基础之并发 并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因. Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(你在用微 ...
- Go语言中的并发编程
并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因. Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天) ...
- Go语言系列之并发编程
Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(宏观上并行,微观上并发). 并行:同一时刻执行多个任务(宏观和微观都是并行). Go语言的并发通过goroutine实现.gorout ...
- Python趣味入门9:函数是你走过的套路,详解函数、调用、参数及返回值
1.概念 琼恩·雪诺当上守夜人的司令后,为训练士兵对付僵尸兵团,把成功斩杀僵尸的一系列动作编排成了"葵花宝典剑法",这就是函数.相似,在计算机世界,一系列前后连续的计算机语句组合在 ...
- Go_Goroutine详解
Goroutine详解 goroutine的概念类似于线程,但 goroutine是由Go的运行时(runtime)调度和管理的.Go程序会智能地将 goroutine 中的任务合理地分配给每个CPU ...
随机推荐
- 基于Vivado调用ROM IP core设计DDS
DDS直接数字式频率合成器(Direct Digital Synthesizer) 下面是使用MATLAB生成正弦波.三角波.方波的代码,直接使用即可. t=:*pi/^:*pi y=0.5*sin ...
- Linux 服务器如何配置网站以及绑定域名
因为域名没有备案,国内地区不能直接域名访问.前段时间在阿里云租购了一台的香港服务器,添加子域名时解析的时发现不能添加直接解析至端口,找了些资料,发现了Nginx绑定域名的方法,在这里做个记录. 1.香 ...
- Python爬虫初学(二)—— 爬百度贴吧
Python爬虫初学(二)-- 爬百度贴吧 昨天初步接触了爬虫,实现了爬取网络段子并逐条阅读等功能,详见Python爬虫初学(一). 今天准备对百度贴吧下手了,嘿嘿.依然是跟着这个博客学习的,这次仿照 ...
- [补档]暑假集训D5总结
%dalao 今天又有dalao来讲课,讲的是网络流 网络流--从入门到放弃:7-29dalao讲课笔记--https://hzoi-mafia.github.io/2017/07/29/27/ ...
- 微信客户端+微信公众平台+新浪云SAE+Arduino+WS100(控制LED)
第一步:准备 1.智能手机微信客户端或微信电脑版 2.注册微信公众平台 https://mp.weixin.qq.com 3.注册新浪账号 http://www.sinacloud.com 4.拥有一 ...
- 设置webstorm缩写代码
文件 ->设置->编辑器->活动模板->找到需要设置的文件类型(比如JavaScript)-->添加-(右上角)->设置模板之后,注意最后需要defind才能生效
- spring集成mybatis实现mysql读写分离
前言 在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈.幸运的是目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库的数据更新同步到另一台服务器上. ...
- solr排序问题
搜搜引擎排序问题,因为涉及到的维度比较多,有时候单纯的依靠sort是无法满足需要的,例如:搜索商品的时候我希望不管怎么排无货的商品都置底,这样问题就来了,怎么排? 其实,solr是自己的解决 ...
- 让你快速了解并掌握如何进行iOS开发技能
首先你要花点时间针对objective-c语言的学习:毕竟这个是iOS开发的基础(你也可以尝试用Swift,但此项目只是针对OC),编程套路其实都是差不多,多写多想多实践:关于环境的搭建就不在本文进行 ...
- HTML <div>和<span>
块代码 <div>和<span> 1.. <style> .ccwTest { font-family: '.PingFang SC';">; co ...