解决麻烦还是制造麻烦?Windows故障诊断平台也能传播恶意软件

简介:

  概述

近日,Proofpoint的安全研究专家们发现了一种基于附件的新型恶意软件传播方式。在安全人员所检测到的恶意软件活动中,攻击者利用的是Windows操作系统中一个名为“故障诊断平台”(WTP)的功能。这一功能原本可以帮助用户解决那些Windows日常使用过程中所遇到的问题,但是在攻击者的眼中,它却成为了一个非常实用的攻击工具。在社会工程学的帮助下,攻击者或可利用该功能来在目标用户的计算机中运行恶意软件。

安全研究专家发现,这种攻击方式的实际效率非常的高,因为当Windows系统运行故障诊断平台的时候并不会弹出任何形式的安全警告,而当系统弹出了故障诊断窗口之后,用户们也早已习惯于直接通过该平台来解决使用过程中的一些疑难问题了。

详细分析

在此次所发现的恶意软件活动中,攻击者使用了Windows的故障诊断平台来传播LatentBot。当用户感染了这一恶意软件之后,攻击者不仅可以对用户进行监控,而且还可以从目标主机中窃取各类数据。这也就意味着,攻击者将获取到目标主机的远程访问权。

  图片1:Windows故障诊断平台的体系架构

攻击者可以向目标用户发送一封电子邮件,并在邮件中附带一份看起来非常“诱人”的附件。当然了,用户最终是否会打开邮件附件,完全取决于用户的个人经验和攻击者的社工技巧。需要注意的是,这也是一种典型的恶意软件传播方式。

当用户打开了附件之后,屏幕中会显示出一个包含乱码的文档,此时Word的右上角会温馨地提示用户“双击以自动检测字符集”。如果目标用户选择同意,那么他们这一次就真正地打开了一个嵌入在附件内部的OLE对象,这个对象是一个经过数字签名的DIAGCAB文件。DIAGCAB是Windows故障诊断包的后缀名,“.Diagcab”文件是包含故障诊断脚本的专用存档。

  图片2:恶意附件的窗口;

如上图所示,攻击者利用了社工学的技巧来欺骗用户双击并执行OLE对象。

当用于攻击的恶意“.Diagcab”文件被打开之后,用户就会看到如图3所示的界面,这个界面的可信度确实非常高,普通用户几乎无法对其安全性进行准确的辨别。如果用户点击了对话框中的“下一步”按钮,那么应用程序将会执行与之相对应的故障诊断脚本。在这种攻击活动中,攻击者运行的是一个PowerShell命令,并通过这个命令来下载并执行恶意payload。

  图片3:已签名的故障诊断包;

请注意,签名证书中所显示的发布者与攻击活动并没有任何关系。因为攻击者破解了一个有效的证书,并用这个合法证书来进行恶意软件的传播活动。

  图片4:恶意软件payload的下载

在用户毫不知情的情况下,故障诊断包可以通过一个PowerShell脚本在后台自动下载恶意软件的payload。

我们可以从图片5和图片6中看到,通过修改故障诊断包的XML数据,攻击者可以自定义设置弹出对话框的外观和提示信息、它所要执行的任务、以及相应的执行脚本。比如说,在下图给出的XML格式数据中,我们可以将对话框的标题设置为“Encodingdetection”,然后指定“Troubleshooter”为一个名为“TS_1.ps1”的PowerShell脚本。

  图片5:诊断包引用了一个恶意PowerShell文件来作为执行脚本;

在这一攻击活动中,这个PowerShell脚本专门负责在目标用户的计算机中下载恶意paylaod,相关信息如图6所示:

  图片6:用于下载恶意payload的PowerShell命令;

这种恶意软件执行方式可以绕过目前大部分沙箱产品的检测,因为恶意软件加载的是“.diagcab”文件,并在msdt.exe外部完成了所有的恶意操作。这也是一种新的攻击发展趋势,因为现在很多恶意软件的开发者会通过基于CO对象的非标准执行流来寻找新型的沙箱绕过方法。在此之前,有的攻击者还会利用WMI、Office办公套件、后台智能传输服务、以及计划任务等功能来实现沙箱绕过。在这一攻击活动中,攻击者在msdt.exe中创建了一个IScriptedDiagnosticHostCOM对象,DcomLaunch服务便会启动“脚本诊断主机”服务(sdiagnhost.exe),而该服务便会执行相应的shell脚本命令,即上图所示的PowerShell脚本。

在此次攻击活动中,攻击者使用的是一个模块化的后门,即LatentBot。FireEye在2015年末曾发布过一篇针对这一恶意后门的详细分析报告,感兴趣的同学可以阅读一下【报告传送门】。在我们的分析过程中,我们发现攻击者在提取主机数据和实现远程访问的过程中加载了下列bot插件:

-Bot_Engine

-remote_desktop_service

-send_report

-security

-vnc_hide_desktop

总结

毫无疑问,攻击者肯定会继续寻找新的方法来利用Windows的内置功能,以求通过一种不受阻碍的方式来感染目标用户并执行恶意payload。在这一攻击活动中,攻击者使用了一种典型的“Windows”式的方法来欺骗用户,即便是非常有经验的用户也很有可能会掉入陷阱。除此之外,这种攻击技术使用的是一种非标准的执行流,所以攻击者可以绕过大部分沙箱产品的检测。

参考资料

1. https://msdn.microsoft.com/en-us/library/windows/desktop/dd323778(v=vs.85).aspx

2. https://msdn.microsoft.com/en-us/library/windows/desktop/dd323712(v=vs.85).aspx

3. https://msdn.microsoft.com/en-us/library/windows/desktop/dd323781(v=vs.85).aspx

4. https://www.fireeye.com/blog/threat-research/2015/12/latentbot_trace_me.html

5. https://msdn.microsoft.com/en-us/library/windows/desktop/dd323706(v=vs.85).aspx

入侵检测指标(IOCs)


本文转自d1net(转载)

相关文章
|
7月前
|
数据采集 开发工具 图形学
Windows平台实现Unity下窗体|摄像头|屏幕采集推送
随着Unity3D的应用范围越来越广,越来越多的行业开始基于Unity3D开发产品,如传统行业中虚拟仿真教育、航空工业、室内设计、城市规划、工业仿真等领域。
|
3月前
|
编解码 数据挖掘 异构计算
Windows平台实现超高分辨率或帧率硬编码
Windows平台实现超高分辨率或帧率硬编码
|
3月前
|
C# 数据安全/隐私保护 开发者
Windows平台RTMP推送|轻量级RTSP服务录像模块如何支持中文路径?
Windows平台RTMP推送|轻量级RTSP服务录像模块如何支持中文路径?
|
3月前
|
C++ Windows
CMake中的find_package(xxx REQUIRED)在windows平台怎么解
CMake中的find_package(xxx REQUIRED)在windows平台怎么解
|
4月前
|
Linux Shell 开发工具
Git 安装和配置教程:Windows - Mac - Linux 三平台详细图文教程,带你一次性搞 Git 环境
Git是一款免费、开源的分布式版本控制系统,广泛应用于软件开发领域。随着开源和云计算的发展,Git已经成为了开发者必备的工具之一。本文将为大家介绍Git在Windows、Mac和Linux三个平台上的安装和配置方法,带你一次性搞定Git环境
1595 0
|
6月前
|
存储 JavaScript Unix
[笔记]c++Windows平台代码规范(下)
[笔记]c++Windows平台代码规范(下)
111 0
|
6月前
|
安全 Linux C++
[笔记]c++Windows平台代码规范(上)
[笔记]c++Windows平台代码规范
117 0
|
7月前
|
编解码 监控 图形学
Windows平台Unity下播放RTSP或RTMP如何开启硬解码?
我们在做Windows平台Unity播放RTMP或RTSP的时候,遇到这样的问题,比如展会、安防监控等场景下,需要同时播放多路RTMP或RTSP流,这样对设备性能,提出来更高的要求。
|
7月前
|
数据采集 vr&ar 图形学
Windows平台Unity Camera场景实现轻量级RTSP服务和RTMP推送
随着VR技术在医疗、军事、农业、学校、景区、消防、公共安全、研学机构、展厅展馆,商场等场所普及,开发者对Unity平台下的直播体验提出了更高的要求。
|
7月前
|
编解码 开发工具 C#
Windows平台RTMP推送摄像头对接介绍
好多开发者在对接大牛直播SDK(官方)的Windows平台RTMP推送时,不熟悉摄像头调用,实际上,摄像头调用逻辑并不复杂,以下是大概流程: