黑暗幽灵(DCM)木马详细分析

0x00 背景


只要插上网线或连上WIFI,无需任何操作,不一会儿电脑就被木马感染了,这可能吗?近期,腾讯反病毒实验室拦截到一个“黑暗幽灵”木马的新变种,该木马功能强大,行为诡异,本文将对其进行详细分析,以下是该木马的主要特点:

  1. 木马功能强大,主要以信息情报收集为主,能够监控监听大量的聊天软件,收集网络访问记录、监控Gmail、截取屏幕、监控麦克风和摄像头等。
  2. 木马对抗性强,能够绕过几乎全部的安全软件主动防御,重点对抗国内安全软件,能够调用安全软件自身的接口将木马加入白名单,作者投入了大量的精力逆向研究安全软件。
  3. 木马感染方式特别,通过网络劫持进行感染,主要劫持主流软件的自动更新程序,当这些软件联网下载更新程序时在网络上用木马替换,导致用户无感中毒。
  4. 木马通讯方式特别,木马将数据封装成固定包头的DNS协议包,发送到大型网站来实现数据传输,此方法可以绕过几乎全部的防火墙,但是黑客要截取这些数据,必须在数据包的必经之路上进行嗅探拦截,结合木马的感染方式,可以推测出在受害者网络链路上存在劫持。
  5. 木马攻击范围较小,针对性强,且持续时间长达数年,符合APT攻击的特性。

0x01 木马行为概述


1.1 来源与传播途径

经过对大量受感染用户的分析,我们发现该木马来源于不安全的网络,无任何系统漏洞的机器只要连接到这些网络后,在一段时间后会感染木马,经分析发现木马主要通过在网络上劫持替换大量软件的自动更新程序进而感染电脑。当安装在电脑上的软件进行自动更新时,更新包被替换成木马,导致电脑被入侵。木马传播示意图如图1所示。

图1. 木马主要传播途径示意图

1.2 木马安装流程

木马运行后会判断本机安装的安全软件,会检测多达43款安全相关软件,当检测到不同的安全软件后,执行不同的安装方式,以实现绕过安全软件的检测和拦截。经分析发现该木马主要有三种不同的安装方式,木马最终安装启动的方式为将核心dll释放到explorer同目录下,对其进行dll劫持启动。如图2中三种颜色分别代表三种不同的安装方式,经测试该木马能够绕过当前绝大部分安全软件的防御和拦截最终成功安装。

[7] [8] [9]  

图2. 木马安装流程示意图

1.3木马功能分解

该木马主要功能是窃取计算机各种信息,通过插件监控监听各种常用聊天软件的语音文字聊天信息,接受指令进行简单的远程操控,将自动化收集到的各种信息文件打包发送。如图3所示为木马功能一览。

图3. 木马功能一览

1.4 木马网络通信

该木马的网络通信方式与木马的传播方式相呼应,木马将收集到的各种信息打包成文件,随后将其加密并封装成DNS请求包,并将这些数据包发送到国内几大知名网站服务器。这样的通讯方式可以绕过几乎所有的防火墙、入侵检测产品,然而黑客如何取得这些数据包从而获得窃取的数据呢?经分析发现其封装的DNS数据包都有着相同且固定的数据包头,因此我们推测黑客会在数据包必经之路上对数据包进行拦截转发到黑客服务器,从而获得收集到的信息,如图4所示为推测出的木马通讯数据包投递流程。

图4.木马网络通讯方式推测

0x02 木马详细分析


2.1 安装释放

2.1.1母体结构

该木马的母体程序为一个exe可执行文件,通过网络劫持正常软件的更新程序而被下载执行,该文件中包含5个资源文件,均为简单加密的PE文件,其中141为x86版核心dll、142为lsp劫持dll、146为x64版核心dll、150为白加黑黑文件,151为白加黑白文件,以下将详细分析。

图5. 母体资源信息

2.1.2 适应多种系统,不同系统不同行为

判断操作系统

[7] [8] [9]  

版本,设置全局变量,随后将根据该全局变了进行大量的不同操作。

图6. 判断操作系统版本并设置标志

2.1.3 利用系统漏洞提权

判断当前系统是否为vista、win7、win8等,如果是则检测当前进程是否具有管理员权限,如果没有该木马会尝试通过CVE-2015-0057将自身提升为管理员权限。该漏洞影响win7、win8等多种版本操作系统。

图7. 木马利用CVE-2015-0057漏洞提权

2.1.4 对explorer进行dll劫持

通过注册表检测本机安装的安全软件,当目标系统没有安装安全软件时,木马将根据操作系统释放劫持dll到%windir%目录下对explorer进行劫持启动,在xp等系统下木马释放ntshrui.dll、在win7等系统释放msls32.dll,在win8等系统释放AduioSes.dll。随后启动一个新的explorer进程加载核心dll开始工作,此为第一种安装方式。

图8. 木马通过释放dll到explorer同目录进行劫持启动

2.2 对抗安全软件

2.2.1 暂存核心文件

如果检测到趋势等国际安全软件而又未检测到国内主流安全软件时,木马会将核心dll释放到%CommonProgramfiles%的一个子目录下,暂时存放。

图9. 暂时存放核心dll

2.2.2 释放dll并安装lsp

同时释放lsp劫持dll,并添加lsp,通过lsp,该dll可以注入到所有具有网络连接的进程中。在注入的进程中进行dll文件的移动,从而绕过安全软件,此为第二种安装方式。

[7] [8] [9]  

图10. 释放lsp劫持dll

图11. 安装lsp

2.2.3 释放白加黑对抗杀软

当存在国内主流安全软件时,木马为了绕过针对lsp安装的拦截使用了白加黑技术

图12. 木马释放白加黑两个文件,准备绕过主防

2.2.4 通过白加黑安装lsp过主防

木马通过白加黑技术,并加以一系列复杂技巧绕过主动防御实现安装lsp,经测试大部分安全软件的主动防御均被绕过。

图13. 通过白加黑绕过主防安装lsp

2.2.5 绕过杀软对explorer进行dll劫持

安装lsp后,相关dll便以lsp劫持的方式插入到所有联网进程中,包括svchost、浏览器、聊天软件、安全软件等。Dll加载后首先判断当前进程,符合条件则将之前备份的核心dll移动到%windir%目录进行劫持(重启后移动)。此为第三种安装方式。

图14. 将核心dll移动到%windir%目录进行劫持

2.2.6 加载核心dll

随后木马判断自身是否位于ie、svchost、杀软等进程,以进行不同的行为,同时尝试直接加载核心dll(如果没加载,劫持需要等系统重启后核心dll才会被加载)

[7] [8] [9]  

图15. 根据当前进程名决定是否立即加载核心dll

2.2.7 恶意操作杀软白名单,免杀

木马判断自身是否位于各种安全软件进程中,如果是则调用安全软件自身接口进行白名单添加,会将所有木马文件路劲添加到杀软白名单中。经测试,涉及到的安全软件均能正常添加白名单。

图16. 某安全软件白名单添加相关代码

2.2.8 lsp阻止安全软件联网,阻断云查

通过lsp过滤函数对WSPSend、WSPSendTo函数进行过滤,当判断发包者是安全软件进程则直接关闭连接,阻止联网,阻断云查

图17. 阻止安全软件联网云查

2.3 信息收集

2.3.1 收集网卡信息

收集的网卡信息包括网卡型号、网卡mac、网关ip、网关mac等

图18. 通过发送arp包获取网关mac地址

2.3.2 收集系统安装的软件列表

木马通过注册表Uninstall获取计算机安装的软件列表信息,将获取的信息异或0x87后写入到C:\WINDOWS\Temp\{E53B9A13-F4C6-4d78-9755-65C029E88F02}\soft.prog文件中,以下获取的信息无特殊说明都位于该目录下

[7] [8] [9]  

图25. 安装钩子

图26. 只记录指定浏览器进程的键盘输入

2.3.8 收集gmail信息

在记录键盘时,当判断以上浏览器窗口中含有Gmail字符时,会启动一个线程专门收集Gmail信息,会加载相关插件,尝试通过Imap协议下载服务器上的所有文件

图27. 判断是否正在登录gmail

图28. 通过插件尝试通过IMAP协议收集数据

2.3.8 加载插件收集各种IM相关信息

通过进程名判断skype.exe、cc.exe、raidcall.exe、yy.exe、aliim.exe等即时聊天、语音聊天软件,加载相关插件对此类聊天软件进行监听监控。

图29. 根据im软件进程名加载相关插件

图30. 通过插件的接口可猜测相关插件主要用于监控聊天信息

图31. 木马针对所有常见通讯软件均做了监控

[7] [8] [9]  

2.4、网络通讯

2.4.1通讯协议

此木马最诡异的地方的通讯方式,该木马没有C&C服务器,所有的数据均伪装成DNS包发送到www.baidu.com、www.sina.com、www.163.com域名所在服务器的53端口或者8000端口。黑客要想获取这些数据包,必须在数据包从本地计算机到这些网站服务器的必经之路上进行劫持嗅探。

图32. 木马的数据包均发送到www.sina.com等服务器上

图33. 木马使用udp协议通讯,目标端口为53或者8000

图34. 木马伪装成DNS协议数据包,每个包都有固定的包头作为标记

图35.嵌入到DNS协议中的木马数据,及时专业的网络管理员,也难发现异常

2.4.2 自动上传收集到的文件

所有木马自动收集的文件,木马插件生成的文件都会被定时打包编号并发送出去

图36. 定时读取相关文件,打包编号发送出去,发送成功后会删除先关文件

2.4.2 远程控制

木马还会绑定本地一个udp端口,并不断尝试收取指令,进行远程控制,主要的远程控制功能包括cmdshell、文件管理、插件管理等。

图37.绑定本地一个udp端口

[7] [8] [9]  

图38. 不断尝试收取控制指令

图39. 远控功能

0x03 木马信息


3.1安全软件

木马检测多大43款安全软件,涵盖了多内全部的安全产品及国外较有名的安全产品,从安全软件来看,该木马主要针对国内用户

图50. 木马检测的安全软件列表

3.2 其它信息

从木马的互斥体、调试信息等可看出DCM应该是该木马的代号,但是什么的缩写的?这个还真猜不出来

图51. 木马中的字符串信息

0x04 安全建议


软件厂商:下载更新程序尽量使用https等安全加密的通讯协议,对下载回来的文件在加载运行前一定要做签名校验。

用户:尽量不要使用安全性未知的网络上网,如公共WIFI、酒店网络等,如果怀疑自己的网络有问题,及时与运营商反应。此外安装安全软件可在一定程度上防御此类攻击,目前管家已率先查杀该木马及其变种。

[7] [8] [9] 

黑暗幽灵(DCM)木马详细分析的更多相关文章

  1. 一个DOS攻击木马的详细分析过程

    一个DOS攻击木马的详细分析过程 0×01 起因 网路流量里发现了大量的的1.exe的文件,而且一直在持续,第一感觉就像是一个木马程序,而且每个1.exe的MD5都不一样,对比发现只有几个字节不一样( ...

  2. 病毒木马查杀实战第025篇:JS下载者脚本木马的分析与防御

    前言 这次我与大家分享的是我所总结的关于JS下载者脚本木马的分析与防御技术.之所以要选择这样的一个题目,是因为在日常的病毒分析工作中,每天都会遇到这类病毒样本,少则几个,多则几十个(当然了,更多的样本 ...

  3. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  4. 1125MySQL Sending data导致查询很慢的问题详细分析

    -- 问题1 tablename使用主键索引反而比idx_ref_id慢的原因EXPLAIN SELECT SQL_NO_CACHE COUNT(id) FROM dbname.tbname FORC ...

  5. LinkedList详细分析

    一.源码解析1. LinkedList类定义2.LinkedList数据结构原理3.私有属性4.构造方法5.元素添加add()及原理6.删除数据remove()7.数据获取get()8.数据复制clo ...

  6. android ListView 九大重要属性详细分析、

    android ListView 九大重要属性详细分析. 1.android ListView 一些重要属性详解,兄弟朋友可以参考一下. 首先是stackFromBottom属性,这只该属性之后你做好 ...

  7. C语言中的static 详细分析

    转自:http://blog.csdn.net/keyeagle/article/details/6708077/ google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大 ...

  8. Linux内核OOM机制的详细分析(转)

    Linux 内核 有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了 防止内存耗尽而内核会把该进程杀掉.典 ...

  9. Android-Native-Server 启动和注册详细分析

    Android-Native-Server 启动和注册详细分析     以mediaService为实例来讲解: mediaService的启动入口 是一个 传统的  main()函数 源码位置E:\ ...

随机推荐

  1. 解析 Android Things 技术原理

    2012 年 6 月,由 IoT-GSI(Global Standards Initiative on Internet of Things)发布的白皮书“ITU-T Y.4000/Y.2060”[1 ...

  2. 【转】位置式、增量式PID算法C语言实现

    位置式.增量式PID算法C语言实现 芯片:STM32F107VC 编译器:KEIL4 作者:SY 日期:2017-9-21 15:29:19 概述 PID 算法是一种工控领域常见的控制算法,用于闭环反 ...

  3. 【bzoj3876】 Ahoi2014—支线剧情

    http://www.lydsy.com/JudgeOnline/problem.php?id=3876 (题目链接) 题意 给出一张拓扑图,每条边有一个权值,问每次从1号点出发,走遍所有的边所需要的 ...

  4. Luogu 1081 【NOIP2012】开车旅行 (链表,倍增)

    Luogu 1081 [NOIP2012]开车旅行 (链表,倍增) Description 小A 和小B决定利用假期外出旅行,他们将想去的城市从1到N 编号,且编号较小的城市在编号较大的城市的西边,已 ...

  5. ZOJ_3950_How Many Nines 解题报告及如何对程序进行测试修改

    The 17th Zhejiang University Programming Contest Sponsored by TuSimple Solution: #include <stdio. ...

  6. eclipse复制工作空间配置

    eclipse复制工作空间配置   eclipse复制工作空间配置 总结一下,复制工作空间配置步骤如下: 1 使用eclipse新建workspace. 2 将新建的workspace下的.metad ...

  7. js中事件绑定要注意的事项之如何在方法中自己打印自己的值

    下面是错误的js方法绑定,这样写会造成在方法中不能用 调用方法的dom本身的一些 东西,如各种属性或者jq对象等. <!DOCTYPE html> <html> <hea ...

  8. (JAVA保留小数问题,基础)Probability hdu2131

    Probability 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2131 Time Limit: 3000/1000 MS (Java/Others) ...

  9. GUI程序开发的流程(随时删除的源码)

    1.继承JFrame 2.定义需要的组件 3.创建组件 4.设置布局管理器 5.添加组件 6.显示窗体 --------------------------------------------- 小代 ...

  10. 使用K-S检验一个数列是否服从正态分布、两个数列是否服从相同的分布

    假设检验的基本思想: 若对总体的某个假设是真实的,那么不利于或者不能支持这一假设的事件A在一次试验中是几乎不可能发生的.如果事件A真的发生了,则有理由怀疑这一假设的真实性,从而拒绝该假设. 实质分析: ...