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 ...
随机推荐
- H5微信通过百度地图API实现导航方式二
要有服务器才行哦 <!DOCTYPE html><html><head> <meta http-equiv="Content-Type&quo ...
- 我的学习之路_第三十四章_jsp
jsp 在只有servlet时,输出页面内容比较麻烦(成本高,java代码中输出HTML标签),所以需要一种技术,主要是HTML页面的代码(HTML,css,js),可以嵌入java代码,来实现动态页 ...
- HDU 2202 最大三角形(凸包)
Problem Description 老师在计算几何这门课上给Eddy布置了一道题目,题目是这样的:给定二维的平面上n个不同的点,要求在这些点里寻找三个点,使他们构成的三角形拥有的面积最大.Eddy ...
- 枪战Maf[POI2008]
题目描述 有n个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪.因此,对于不同的开枪顺序,最后死的人也不同. 输入 输入n人 ...
- NYOJ--65--另一种阶乘问题
/* Name: NYOJ--65--另一种阶乘问题 Date: 17/04/17 16:35 Description: 去年刚开始做题时的代码看不下去了,再做,打表呗 */ #include< ...
- pickle和json模块
json模块 json模块是实现序列化和反序列化的,主要用户不同程序之间的数据交换,首先来看一下: dumps()序列化 import json '''json模块是实现序列化和反序列话功能的''' ...
- appium测试之获取appPackage和appActivity
appPackage和appActivity 进行appium自动化测试非常重要的两个参数,我们所测试的APP不同,这两个参数肯定也是不一样的.那如何快速的获取这APP的这两个参数呢?我这里介绍两个方 ...
- 【性能测试工具】- ApacheBench
优点:提供的测试结果信息更完备:缺点:每次只能测试一个链接 概述: ab全称是ApacheBench,是 Apache 附带的一个HTTP性能测试小工具,可以同时模拟多个并发请求. 安装: Apach ...
- Java面试题大全
前言 关于赢在面试的Java题系列基本收集整理完成了,所有题目都是经过精心挑选的,很基础又考验求职者的基本功,应该说被面试到的几率很大.这里整理挑选出来供大家面试前拿来看一看,所有题目整理自网络,有一 ...
- 原来,负载均衡可以这样用,多核CPU可以这样用
负载均衡作为一个处理高并发,大流量的访问的业务场景,已经几乎是常识性的知识了. 而本文的意义在于需求:由于大流量请求,导致服务无法正常响应,在不增加购买机器成本的场景下,如何提高服务器的业务处理能力? ...