本文讲的是谍影追踪:全球首例UEFI_BIOS木马分析

0x00简介

不久前,广州网友李先生向360安全中心求助,反映他的电脑系统自动创建名为aaaabbbb的陌生账号,杀毒软件反复报毒,即使重装系统仍然无法清除病毒。

经过360工程师远程协助的初步判断,李先生电脑主板BIOS很可能感染了恶意代码。为此,我们请李先生把主板邮寄到360公司北京总部进行分析,发现这是一种前所未见的新型BIOS BOOTKIT。由于它会在系统中设置间谍账号进行远程控制,我们将其命名为谍影木马。

与以往的BIOS恶意代码相比,谍影木马具有更强的兼容性和更高的技术水平:

一、全球首例感染UEFI主板的真实攻击。谍影木马支持的BIOS版本非常多,是目前已知的唯一能够感染UEFI主板的木马。谍影木马会感染UEFI兼容模式的BIOS引导模块,UEFI+GPT模式不受影响。在此前2011年出现的BMW BIOS木马(国外厂商命名为Mebromi),则仅支持感染特定的Award BIOS;

二、系统兼容性强,支持所有主流的32位和64位Windows平台,包括最新的64位Win10。

图:64位Win10感染谍影木马触发微软PATCH GUARD 导致反复蓝屏

据了解,李先生是由网店购买的此二手主板。根据网络搜索谍影木马的中招现象,李先生的遭遇也并非个例。从现有样本推测,恶意代码可能是由编程器刷入主板BIOS,通过电商渠道贩卖流通。

鉴于主板结构的复杂性和特殊性,现阶段只有重刷BIOS才能够彻底清除谍影木马。以下是对谍影木马技术原理的详细分析。

0x01 BIOS与UEFI

BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。优先于操作系统执行,负责加载执行MBR代码,其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

UEFI(Unified Extensible Firmware Interface)全称“统一的可扩展固件接口”,是一种新的主板引导项,正被看成是有近20多年历史的BIOS 的继任者,自Win8以来得到了微软的力推。UEFI号称通过保护预启动或预引导进程,可以抵御Bootkit攻击,相比BIOS具有更高的安全性。

0x02技术分析

2.1  CSM模块分析

木马位于BIOS文件中,主板为ASUS 华硕的 B85M-G-ASUS-0904。和正常的BIOS不同之处,在于木马主板的CSMCORE模块比正常的要大。应该只能在LEGACY MODE下有效,而通过UEFI启动的应该无效。(CSM(Compatibility support Module)表示兼容模块,该选项专为兼容只能在legacy模式下工作的设备以及不支持或不能完全支持UEFI的操作系统而设置。)

木马在该BIOS模块中,加入了自己的功能,挂钩系统了正常函数来执行。

正常的函数如下:

木马挂钩了该函数改为:

将原有函数的第一条指令改为CALL,从而获得执行机会:

之后其会判断R9寄存器所指内容是否为3,可能是BIOS初始化成功的一个标志,然后搜索BIOS内部特征码CD 19 B8 00 80 CB 00

应该是 BIOS内部初始化后,调用中断INT19H 实现加载硬盘第一个扇区MBR执行的代码。然后修改0X413处的数据,预留40KB空间,用来存放木马代码,并将BIOS内的代码拷贝到该预留空间。并将前面找到的BIOS内部初始化后,调用中断INT19H 实现加载硬盘第一个扇区MBR执行的代码,改为调用木马自身的代码。

2.2  INT15挂钩分析

然后,返回继续执行,当执行到BIOS初始化好,准备加载磁盘MBR代码的时候,就会执行木马的代码。木马这时候会挂接INT15H中断,然后恢复执行原来的代码,这样就完成了挂钩,后续就和暗云系列的MBR木马相似,通过挂钩INT15H来一步一步的挂钩内存,加载自身。

这样,当系统MBR获得执行的时候,木马已经在内存中挂好了INT15h的HOOK,之后,会HOOK  bootmgr!Archx86TransferTo64BitApplicationAsm获得下次执行机会,然后再HOOK winload!OslArchTransferToKernel,,然后等内核加载时候会HOOK ZwCreateSection,从而切入到内核运行,然后会设置线程回调。

2.3  线程回调挂钩

接下来会设置线程回调 PsSetCreateThreadNotifyRoutine

和进程回调PsSetCreateProcessNotifyRoutine,进程回调中只打印了下"Process %d Create %dn",线程回调才是关键内容。

线程回调中木马判断是否为csrss.exe进程,如果不是则跳过,如果是就创建一个系统线程,并且插入一个工作线程,将自身的线程回调抹去。

2.4  内核线程网络下载代码

在创建的系统线程内会先等待1分钟大概是为了等网络准备好。

然后会尝试使用两种方式去下载恶意Code到内核执行,

优先尝试UDP  DownLoadShellCodeByUDP,函数为解析 www.XXXX.top 域名。

使用0xDEDE43D0 0x8080808,两组DNS域名转化过来,即(222.222.67.208   8.8.8.8)

与www.XXXXtop 通信端口为0x801F即8064号端口。

优先使用0x3500即53号端口请求域名服务,拿到 www.XXXX.top 域名对应地址。

先请求服务器,询问Shellcode 长度分片大小,然后一个一个分片处理,最后拼接一起。

发送数据包为,长度为0x10。

接受数据包为:

总长度为0x28,头部长度为0x10,数据部分长度为0x18,校验和为0xd845672a。

Shellcode长度为0x1a32d,总共有 0xd2个分片,每个分片大小为 0x200。

在使用UDP方式收发数据时候会对数据部分进行校验。

校验成功才拼接在一起,否则丢弃,然后再申请非分页内存。

将之前的内存代码拷贝执行,将NT基地址作为参数传入。

2.5 解密恶意代码和投递APC

下载下来的代码仅头部可以执行,后面部分为加密数据,需要解密执行。

调用函数为RtlDecompressBuffer,解密后大小为150728,解密方式为COMPRESSION_FORMAT_LZNT1。

接着会调用填充导入表:

然后调用PsCreateSystemThread创建注入线程。

线程中:

优先查找系统进程注入找到的是spoolsv.exe。

然后再是杀软进程:

申请内存拷贝注入:

插APC注入:

2.6  执行用户层恶意下载代码

注入后从应用层执行,代码中包含一个DLL文件,执行函数为申请内存基地址。

然后获取Kernel32 模块基地址,跟 LoadLibraryA  GetProcAddress VirtualAlloc,

填充内存中PE文件导入表,填充完成后执行DllMain函数。

会在DllMain中创建线程,执行下载并且运行,根据控制码暂停或者删除相关服务。

线程函数:

提权操作解密下下载地址数据。解密后内容为:

根据控制码暂停或者删除服务:

然后分三种方式运行: (DLL加载,父进程注入,直接创建EXE运行)

2.7  创建恶意账号

这里下载下来的是一个EXE,主要功能就是创建了一个管理员账号。

截图:

0x03结束语

谍影木马可寄生在包括UEFI主板在内的多种版本BIOS里,非常精细地针对性感染BIOS引导模块,通杀Windows全平台实施远程控制,呈现出高危害、高复杂度和高技术水平的“三高”特点。

为了预防谍影木马,360安全中心建议网友:尽量选择官方渠道购买电脑配件,并开启安全软件实时防护。如果遇到电脑开机登陆界面缓慢、系统出现陌生账号、安全软件反复报毒等可疑情况,最好向安全厂商求助,以防木马病毒对个人数据和财产造成损失。

原文发布时间为:2017年4月27日
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
原文链接

谍影追踪:全球首例UEFI_BIOS木马分析相关推荐

  1. 全球首例无人车撞人致死事故判决:Uber无罪,安全员要进一步调查

    李根 发自 凹非寺  量子位 报道 | 公众号 QbitAI Uber无人车致命车祸判决结果来了. 美国检方宣布:Uber不承担刑事责任,但当时在车上驾驶位的安全员须被进一步调查. 也就是说,全球首例 ...

  2. 不仅仅是手机,MWC现全球首例 5G NR 商用部署

    近日,MWC大会在在巴塞罗那举行,5G折叠手机和5G部署进度成为这届大会的重点.除了华为与三星发布的折叠手机外,本届大会另一个值得关注的要点是三星和赛灵思宣布推进5G NR 商用部署在韩国落地,这应该 ...

  3. VR医疗|全球首例“换头手术”成功了么?

    用VR技术让病人提前适应"换头手术"后的生活,真的可以吗? 还记得半年前很惊悚的新闻--"换头手术"吗?从小瘫痪的斯皮里多诺为了改变人生决定把自己的脑袋完整割下 ...

  4. 广和通携手中国联通研究院、中科创达现网验证全球首例5G模组端到端多切片方案

    当前5G处于规模发展的关键时期,5G行业模组成熟发展是推进5G规模应用的关键环节.目前5G模组价格仍然较高,行业需求较为碎片化,且5G最具特色的功能5G网络切片尚未在行业模组上探索出成熟端到端解决方案 ...

  5. 历史上的今天:网景浏览器诞生;ENIAC 首席设计师出生;全球首例全机器人手术...

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 10 月 13 日,国际标准时间日.1884 年 10 月 13 日,在华盛顿召开的国际天文学家代表 ...

  6. 【历史上的今天】10 月 13 日:网景浏览器诞生;ENIAC 首席设计师出生;全球首例全机器人手术

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 10 月 13 日,国际标准时间日.1884 年 10 月 13 日,在华盛顿召开的国际天文学家代表 ...

  7. 全球首例银行“大型机”下移背后

    20年12月24日,在腾讯云数据库品牌升级的时刻,我们也有幸邀请到了平安银行技术负责人李中原分享平安银行分布式数据库TDSQL实践,讲述全球首例银行"大型机"下移背后的故事,以下是 ...

  8. 全球首例!黑产利用SS7漏洞接管用户手机卡偷钱

    本文讲的是全球首例!黑产利用SS7漏洞接管用户手机卡偷钱, 据The Register援引Süddeutsche Zeitung消息,近日德国出现一起利用SS7协议漏洞盗取银行账号案例. 安全专家多年 ...

  9. google量子计算机science,Science封面:谷歌实现量子化学模拟,迄今为止全球首例!...

    原标题:Science封面:谷歌实现量子化学模拟,迄今为止全球首例! 量子计算发现了新大陆! 8月27日,谷歌量子计算研究团队宣布其使用量子计算机对化学反应路径进行建模取得了突破性进展,这是迄今为止首 ...

  10. 宁德时代机器人编程开发_全球首例丨可编程的活体机器人已诞生,100%青蛙基因,超级计算机时代,将无所不能?!...

    全球首个用细胞做成的活体机器人,已经诞生了! 美国佛蒙特大学计算机科学家和塔夫茨大学生物学家共同创造出100%使用非洲爪蛙DNA的可编程的活体机器人xenobots,这项最新的研究结果已经于1月13日 ...

最新文章

  1. 自动打包linux,使用Jenkins如何自动打包部署linux
  2. Qt 程序打包发布总结
  3. Centos6.4 编译安装 nginx php
  4. Emacs收发email
  5. 《水经注地图发布服务中间件》for Linux 版发布
  6. MQL5 中如何调用指标
  7. tp5 微信新版本商家转到到零钱,v3秘钥,平台证书和平台证书序列号
  8. 的概念产生于计算机芯片,是指采用光导原位合成或微量点样等方法,,微阵列芯片...
  9. B站排行榜(简陋版)
  10. 遍历图像像素的几种方法
  11. 禁止搜索引擎收录的方法
  12. 华为服务器RH2288 V3怎样配置RAID
  13. 软件公司 sun公司 Oracle公司
  14. 15-python推导式
  15. python 条形图填充疏密_如何用箭头填充pyplot条形图的条形图?
  16. 似物性检测——linux下运行objectness-v2.2并分析源码(pami2012论文)
  17. 【BZOJ】4292: [PA2015]Równanie
  18. SpringBoot中集成Redis实现对redis中数据的解析和存储
  19. Pycharm新手使用教程(详解)
  20. 在fedora 15 中安装汉语拼音输入法

热门文章

  1. 高速PCB设计系列基础知识67 | 尺寸与公差标注内容与通用知识
  2. 调用Python的PyAutoGUI模块模拟登录QQ邮箱
  3. 英文转换-在线英文批量转换器免费
  4. 货效,坪效,人效,这三效怎么理解?
  5. gee微端服务器系统设置,Gee引擎微端服务器
  6. SpringBoot 配合126邮箱实现邮件发送功能
  7. 现在才知道,菊花茶可不能随便喝!
  8. AppBarLayoutCoordinatorLayoutBehavior
  9. C++ endian转换
  10. html在w3c很多错误,在w3c中验证时发生CSS解析错误