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

虽然腾讯电脑管家已经很早就做出了相应的更新,并同时推出了“异鬼Ⅱ”病毒的专杀固件,但还是有不少电脑中招,所幸因为该病毒的特殊属性,没有造成太大的经济损失。下面我就详细介绍一下这种病毒。

“异鬼Ⅱ”大体上的工作特点是:通过知名刷机软件——“甜椒刷机”、“奇兔刷机”、“绿豆刷机”感染电脑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病毒——“异鬼Ⅱ”的前世今生的更多相关文章

  1. 权力的游戏第七季/全集Game of Thrones迅雷下载

    艾美及金球奖获奖HBO原创剧集<权力的游戏>第七季将于2016年夏天晚些时候开拍.新的一季共有七集,主要拍摄地为北爱尔兰,部分镜头也将在西班牙和冰岛取景.上映时间预计将略有推迟,至2017 ...

  2. 2019CSUST集训队选拔赛题解(二)

    凛冬将至 Description 维斯特洛大陆的原住民是森林之子,他们长得如孩童一般,善于使用石器,威力值35,用树叶树枝作为衣物,在森林里繁衍生息,与万物和平相处.他们会使用古老的魔法(比如绿之视野 ...

  3. Go语言基础之并发

    并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因. Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天) ...

  4. Go语言 - goroutine

    并发与并行 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天). 并行:同一时刻执行多个任务(你和你朋友都在用微信和女朋友聊天). Go语言的并发通过goroutine实现.goroutin ...

  5. GO学习-(18) Go语言基础之并发

    Go语言基础之并发 并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因. Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(你在用微 ...

  6. Go语言中的并发编程

    并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因. Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天) ...

  7. Go语言系列之并发编程

    Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(宏观上并行,微观上并发). 并行:同一时刻执行多个任务(宏观和微观都是并行). Go语言的并发通过goroutine实现.gorout ...

  8. Python趣味入门9:函数是你走过的套路,详解函数、调用、参数及返回值

    1.概念 琼恩·雪诺当上守夜人的司令后,为训练士兵对付僵尸兵团,把成功斩杀僵尸的一系列动作编排成了"葵花宝典剑法",这就是函数.相似,在计算机世界,一系列前后连续的计算机语句组合在 ...

  9. Go_Goroutine详解

    Goroutine详解 goroutine的概念类似于线程,但 goroutine是由Go的运行时(runtime)调度和管理的.Go程序会智能地将 goroutine 中的任务合理地分配给每个CPU ...

随机推荐

  1. 白话ASP.NET MVC之一:Url 路由

    好久没有写关于ASP.NET MVC的东西了,虽然<ASP.NET MVC4框架揭秘>已经完完整整的看完一遍,但是感觉和一锅粥差不多,没什么可写的,因为我自己不理解,也就写不出来.现在开始 ...

  2. 被DDOS攻击的解决方法

    在DDOS分布式借"机"堵塞正常访问的非法攻击中,任何技术高手都成了文科生.只能用非专业的方法解决.DDOS攻击的重心是堵塞服务器,给域名解析访问造成困难,被攻击后我们可以采用以下 ...

  3. linux下更改ssh登录前的banner信息

    默认情况下,telnet ip 22端口会显示 openssh的版本信息 whereis sshd 如 cp /usr/sbin/sshd /usr/sbin/sshd2016.bak sed -i  ...

  4. MySql学习笔记(四)

    MYSQL如何查看系统帮助: 1.查看官方API文档: http://dev.mysql.com/doc/ 2.通过Mysql中的help命令 比如:help create database MYSQ ...

  5. java大数常用的方法

    创建大数对象: BigInteger a=new BigInteger("123"); BigInteger a=BigInteger.valueOf(); 常用方法: multi ...

  6. 2016 "Bird Cup" ICPC7th@ahstu--“波导杯”安徽科技学院第七届程序设计大赛

    "波导杯"安徽科技学院第七届程序设计大赛 原文章网页 Contest - 2016 "Bird Cup" ICPC7th@ahstu Start time:   ...

  7. [bzoj 1409] Password 矩阵快速幂+欧拉函数

    考试的时候想到了矩阵快速幂+快速幂,但是忘(bu)了(hui)欧拉定理. 然后gg了35分. 题目显而易见,让求一个数的幂,幂是斐波那契数列里的一项,考虑到斐波那契也很大,所以我们就需要欧拉定理了 p ...

  8. [BZOJ 2500]幸福的道路 树形dp+单调队列+二分答案

    考试的时候打了个树链剖分,而且还审错题了,以为是每天找所有点的最长路,原来是每天起点的树上最长路径再搞事情.. 先用dfs处理出来每个节点以他为根的子树的最长链和次长链.(后面会用到) 然后用类似dp ...

  9. .NET Core资源汇总

    前言 首先庆祝.NET Core 2.0今天发布. 最近一两年.NET的关注度直线下降, 大部分开发人员转去了其他平台, 国内的机会也越来越少了. 行情虽然如此, 仍在坚守.NET平台的开发人员还是要 ...

  10. Linux - 简明Shell编程08 - 函数(Function)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash function Check( ...