2016年4月22日星期五

高度机密:“黑暗幽灵”(别名 DCM)木马的前世今生

原文来自https://www.v2ex.com/t/271590 , 为防中共删除,特此备份。点击下载pdf

以下是原文,因为不含CSS及格式,仅为方便搜索引擎索引。请下载PDF阅读。


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

高度机密:“黑暗幽灵”(别名 DCM )木马的前世今生

首先,我无耻的匿了(多层 VPN 代理,因此那些正在阅读本文而目的却不是本文的正文内容的人,你们可以省省力气了)

关于这个叫 DCM 的木马,别名“黑暗幽灵”,我看到这个木马的分析报告的时候瞬间就震惊了。我震惊的原因不是因为这个木马的功能强大,也不是因为它的免杀手段,而是因为我是这个木马的设计和开发者之一!设计和开发团队大概 10 人左右,但是团队成员现在分布在全国各地多家不同行业的公司,因此我觉得把我们全部请去喝茶的可能性不大,况且就算真的被请去喝茶了,我也会装作没有见过这篇文章的。

没错,任何一个人都可以站出来,声称他是这木马的作者或设计者。而我却没办法在不泄漏自己真实身份的情况下证明我所写的内容,所以作为本文的读者,如果你不相信我所写的内容,那么就没必要继续读下去了。


DCM 木马的前世

首先我要证实一下大家的猜测:这个木马确实和 G0V 有关系,属于一款特殊用途的专用木马。我不便透露具体客户的身份。

这个木马的项目开始时间大概是 2011 年,目的是作为当时一个在役的木马(以下简称旧马)的继任者。之所以需要一个旧马的继任者,是因为旧马是基于一款开源的远程控制软件(以下简称原型远控)修改而成的,它主要有以下几方面的缺点:
* 免杀
原型远控在黑客圈子里比较知名,基于它的木马变种非常多。因此杀毒软件对它的查杀力度很大,免杀难度相对较高,保持的时间也较短,经常需要更新。
* 隐蔽
旧马沿用了原型远控的 TCP 反弹连接协议,因此主控端需要具有 IP 地址,某些应用环境下必须是公网 IP 地址,因此具有泄漏木马使用者身份的风险
* 功能
原型木马设计更像灰鸽子,被控端上线以后接受控制端发送的命令,然后将结果发送回控制端。旧马虽然努力改变这一设计,但受限于原型木马的框架,大的功能改动显得力不从心。

由于原型木马的先天缺陷,导致了旧马各方面难以弥补的不足,因此一个新的继任木马的需求也就被提出来了。


DCM 木马的诞生

这个继任者的设计理念包括一下几点:
* 无进程无窗口
该木马的受害者不能明显察觉到任何异样
* 长期免杀
杀毒软件与防火墙不能发现和拦截,包括木马的安装过程,以及安装成功以后的长期运行
* 不泄漏使用者信息
必须保障该木马控制者身份的绝对安全,任何情况下都不能泄漏控制者的 IP 地址、域名或者其他任何有价值的身份信息。即使样本被杀毒软件厂商获取并分析,也无法得知控制者的确切身份。
* 完全自动化
无需人工介入,根据事先的配置设置,全自动窃取信息并回传。没有网络连接的情况下要保存获取的信息,发现可用网络连接后进行回传。

经过几个月的设计与开发,这个继任者木马诞生了。

该木马的功能与特点已经没有必要在这里赘述了,网上的分析文章写的清清楚楚,总结下来就是自动记录并发送被感染电脑上的一切隐私内容。


DCM 木马的感染方式

其实该木马本身是不会主动传播的,它的设计就是潜伏并回传数据。它的传播是依赖另外几套系统来实现的(以下统称传播系统),而且这些传播方式也并不局限与传播 DCM 木马。这些传播系统的传染方式当然也不仅局限于分析文章里所提到的替换正常软件自动更新文件的方式。此外,该木马仅用于特定目标人群的”定点打击“,并不会大量传播。
* 正规软件的自动更新
在网上的分析文章里已经写了,通过替换正常软件的自动更新网络数据,使这些软件下载木马并执行。很多正规软件都直接运行在管理员模式下,还帮木马省去了提权的麻烦。
* 下载可执行文件捆绑
被列入”定点打击“的电脑如果下载了不超过一个预设大小的 EXE 文件,则传播系统会将木马捆绑在这些正常的 EXE 文件上,而且并不会破坏原有可执行文件。用户一旦运行了下载的 EXE 文件就会被感染。
* 压缩文件感染
被列入”定点打击“的电脑如果下载了一个符合某些条件的压缩文件,则传播系统会根据配置将木马插入压缩文件中,替换掉压缩文件中的可执行文件,或者替换掉整个压缩文件,从而实现感染目标主机的目的。
* 浏览器劫持感染
这个感染方式比较极端,只有少量情况下会使用。当该感染方式启动时,用户电脑无法正常浏览部分甚至全部网站,浏览器会被重定向到一个钓鱼页面,要求用户安装”浏览器插件”或者“必要更新”一类的内容,从而诱导甚至强迫用户安装木马。


DCM 木马相关的其他木马项目

毫无疑问 DCM 是针对 Windows 平台的木马,然而这并不表示其他平台就是安全的。但出于自身安全的原因,我在此不便透露更多细节。

DCM Team Member
2016 年 4 月 16 日
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJXEa7kAAoJECudGUQ3ThEDPtQIAOKPr17Ro17cEd/SzLelCK30
l4MM6AiKBMUHSOCDCs3/7B5uBfFkJ/JokdVf9SkxUK9xXruWc5nR81XzM4yr0RwR
druFEPsFv0g/O8xkcNczmYqSIoEL7WxW2F+m3NiYCs1CbEnmpkFBMX95ANnpFCMO
dqVryOlQtwOYfXhgBwxoKzrAIb/jsilX6QFLHPTGCjnWZbSAg4Bw44FgoYH71jxr
ekMmHK/YtMkHAJO2v0dcIdTHFnzDaV7zoxUYUi9aXTSTMMuVezl02dbiyygg9hcK
ZjsLNJAJds70CmLqTXYiJAVx9s7FbXnp0gS231ZL8uDBF+xS920C763O28ryyPc=
=JJmr
-----END PGP SIGNATURE-----
PGP Key ID: 0xE75EDBBD207EA30C

dcm_member@mail2tor.com OR dcm_member@mail2tor2zyjdctd.onion




1
refraction 5 天前
靠 这么牛逼?
2
v1024 5 天前 via iPhone
火钳刘明
3
Sequencer 5 天前 via iPhone
除了公开的信息。也没什么新信息。
4
Bardon 5 天前
透露的内容都是公开的,除了 g0v ,其余完全没有透露
确实,任何人都可以基于公开的信息写作
5
chenshaoju 5 天前
你真的是该组成员吗? GPG Key ID 还是今天生成的,没有说服力。
6
Meowlove 5 天前 via Android
66666666
7
slanternsw 5 天前
666
8
21grams 5 天前
虽然这个木马背后是什么人大家心知肚明,但这个文章也太水了,毫无说服力。
9
Gescript 5 天前
没有任何有说服力的东西,能够隐蔽的证明和安全的说明
10
tatsuteng 5 天前
不太劲爆
11
DcmTeamMember 4 天前
```
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

高度机密:“黑暗幽灵”(别名 DCM )木马的未公开信息

前一篇文章发出来以后,很多人说里面所有的内容都是已经公开的信息,那么我就来披露一些未公开的非敏感信息吧。

从 DCM 木马的通信方式上来说, 2011 年时该木马构造一个 DNS 数据包,包头是 DNS 查询 microsoft.com 的子域名, payload 则是另一个
封装的数据包,其中包括文件名、文件大小、分片序号以及 LZMA 压缩后的实际数据内容。木马会将该数据包发往微软的一个 IP 地址,并
根据网络上行带宽控制发送速度。由于目标 IP 地址并不是一个有效的 DNS 服务器,所以木马不会收到任何回复数据。之所以发往微软的
IP 地址,是因为以下几方面考虑:
* 国外 IP
选择一个国外的 IP 地址会确保数据包通过城市出口,省出口以及中国的互联网国际出口,因此大幅提高我们截取到这些 DNS 数据包的成
功率,而且当用户携带被感染的笔记本电脑等便携式设备到其他没有布防的省市时,我们仍然可以从国际出口的 UDP 53 上行数据中截获
所需的数据。
* 降低可疑度
Windows 操作系统自身原本就会发送大量的关于 microsoft.com 域名的 DNS 请求,包括自动更新、错误报告等诸多功能,都会发往微软。
因此我们也伪装成相似的 DNS 请求,从而降低数据包的可疑度,即使触发了防火墙的报警,用户仍然有很大概率选择放行。
* 微软不是中国的“敌对势力”
起始最初我们曾经设置将数据发往 Google ,但我们的客户认为 Google 是“境外敌对势力”,将这些敏感数据发往 Google 是绝不可接受的。
于是经过讨论,我们认为微软本身作为操作系统的开发者,原本就有大量的隐私数据被发往微软,也不在乎再加一点。而且一旦此事真的
被大家发现了,安全专家开始关注这个木马(就像现在这样),微软还可以成为一个合理的“怀疑对象”,顺理成章的把我们的责任推到
微软的头上。

数据包的重组则依赖于多层网络探针设备,我前面已经说过了,这个木马的背后是一个国家机关,因此我们可以得到这些 DNS 数据包的
渠道是非常广泛的。以一个家庭用户为例,有以下节点可供我们获取这些数据:
* 运营商提供的宽带路由器或 Modem
部分型号是有预留后门的,可以直接远程激活。即使你家中的路由和 Modem 没有后门,在确实必要的情况下我们会干扰你的网络,迫使你
主动联系运营商进行维修,然后我们派人伪装成运营商工作人员去“维修”你家中的设备甚至直接建议你更换设备(设备老化之类的借口)
除此之外,我们还会在局域网内通过主动的扫描以及被动的监听等方式,来采集局域网内设备的信息,尤其是无线设备的信息。
* 小区交换机
很多小区有自己的电话交换机,我们会直接在电话交换机柜里加装小型低功耗设备,将你的网络数据镜像出来,并储存在设备的硬盘中
或转发到其他 IP 地址。如果使用转发模式,可能会复用你的宽带网络,反正用户在你家里抓包是绝对看不到任何异常的。
* ISP 机房
不用解释了,大家都知道怎么回事。 ISP 机房的好处是设备的功耗和体积没有限制,可以做更多的事。缺点是插拔电话线时会导致用户的
网络暂时中断,而且 ISP 机房又只在工作时间向我们开放,所以偶尔可能会被用户察觉到网络和电话突然中断几十秒到几分钟。
* 当地的公安机房
ISP 会将部分数据镜像给公安机关,主要是 TCP 80 上行和 UDP 53 上行,因为这两个端口的上行数据量都不大,而且包含了我们所关心的
大部分信息。这也是 DCM 木马选择使用 DNS 数据包的原因之一。
* 城市出口
一线二线的大城市的互联网出口几乎都有我们的设备,但 2011 年时中小城市的覆盖率则相对较低,现在的覆盖率恐怕已经包含了大部分
互联网发达的三级城市了。
* 省出口
国内所有的省级互联网出口都有大量的网络探针设备,其中有一部分是我们的,也有一些是其他机关部门的。
* 国际出口
其实国际出口我们是没有办法直接访问的,只是特例有需要的情况下可以拿到镜像数据而已,但这可以作为最后一个机会。

这里面有些层级是会暂时或长期地保留数据的,比如公安机房和国际出口,数据会被选择性的存储下来,供日后查阅。

不过那篇分析文章里找到 IP 地址是百度之类的国内 IP ,估计和最近几年的政策变动有关系。也许微软也成为了境外“敌对势力”之一,
从微软的 OneDrive 服务被墙就可以看出,中国对于微软也是不信任或者不完全信任的态度。

DCM Team Member
2016 年 4 月 17 日
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJXEtJCAAoJECudGUQ3ThEDhDkIAIjbT9K1qcwf3U0BVzm2Sal7
t/iv+2leM0XVrH+KiqKxOPPwS4AxuZXZLLz1GzistZJXozv+EhLJHZ3tcEazd1eE
Wfdx67//b5PM7TrFYniZmTnMXrMd6RiVu/Vhn/ynP6hbXMiRU+D9qPSymfKS85ZG
AtG7C6TSMshnClK1W/aJ8XtJ+wUmm6FOsp9gN62R63u/Aw/s6qonqoBLmqT7IILd
4zsgHG12fMgck8foepd+vRRunIVq5CCWBi01eiqnOpksom5rG0xwauIdCCAyfuDg
2NkIIY9nvbM41aLO5ImifE3NoHCy5dLnzriCwHRYtYHxqk4Qbk6socdLHwwjgFc=
=KwHw
-----END PGP SIGNATURE-----
```
Text encoding: UTF-8
PGP Key ID: 0xE75EDBBD207EA30C
dcm_member@mail2tor.com OR dcm_member@mail2tor2zyjdctd.onion


另外,有人说我的 PGP 密钥是在我发文的当天生成的。关于这个问题,我的回答其实很简单,你觉得如果我用一个自己用了好几年的密钥来签名这个内容,我还能匿名吗?
我签名这个文章内容的原因主要是 2 方面考虑,一是我不希望别人篡改这个内容然后转发出去,二是我不敢保证现在这个帐号还能存活多久,一旦因为某些原因导致我无法再继续使用这个帐号,我需要使用新的帐号发帖并能够证实我自己的身份。
12
hebeiround 4 天前 via iPhone
板凳围观 zzz
13
gaojingtian1234 4 天前
就绪围观
14
dsb2468 4 天前
MARK
15
hcyue 4 天前 via Android
火钳
16
chenshaoju 4 天前
关于 PGP 的解释,有点意思。
不过关于数据获取那一块,任何一个 ISP 、 IDC 、公安或以上的人都会知道这些套路,这点不具有代表性。
甚至推上多了的人,也会知道一些特定人士的楼道或者小区内会被安装监控设备,这不是秘密。


17
dsb2468 4 天前
@chenshaoju 你们这是一步一步的逼楼主透露更多的。。。咳咳
18
chenshaoju 4 天前
@dsb2468 我只是觉得这个说服力连那个 XcodeGhost 都没有,至少那个 XcodeGhost 人家公开了源码: https://github.com/XcodeGhostSource/XcodeGhost ,这就是强有力的证明。

后来我想了一下,这种政府级别的木马,代码可能也是国家机密级的,估计也不能公开,还是别公开好了。

这个事情,看看就行了,不想再发表意见。
19
infinte 4 天前
@chenshaoju
DNS 包目标发到国内还可以做从外向里的拦截吧,对于谍报来说即使目标在国外也能用上,相当于提高了战斗力。
这么高成本的攻击如果只是监控一两个“反贼”你不觉得是杀鸡用牛刀吗?相反手握高价值信息的国内外企、海外目标更值得这么做。
当然,探针设备可能会用于其他的目的。
20
chenshaoju 4 天前
@infinte 我比较怀疑的是原文中( http://www.freebuf.com/articles/system/101447.html )那个云查杀的拦截列表,都是国内的云查杀,没有国外的。随便举个例子,比如 bitdefender 的云查杀 ( http://www.bitdefender.com/solutions/free.html )。

如果真是针对外企或者海外目标,你觉得海外的企业或目标会用360、 QQ 、金山这些玩意儿?


21
infinte 4 天前
@chenshaoju
所以我想不通。
对外,难以解释软件中大量针对国内用户的设计。在华外企可能性最大,但是也存疑。
如果是对内监视项目的话,那么首先那个 DCM Member 的身份就有问题, TG 干坏事肯定是找“政治上”可靠的人,事后泄密这种事情发生可能性太低了;而且 freebuf 的文章也没被删掉。
还有一种可能就是设计者希望完全隐藏 DCM 的设计目的,但是这个目的又是什么呢?
22
chenshaoju 4 天前
@infinte 所以我还是倾向于,这个就是针对国内的,而且国内根本没有正规的记者媒体报道这个事情。
而关于政治正确,林子大了,有些什么鸟,说不清。
23
infinte 4 天前
@chenshaoju
又或许只是国内某些组织做的 apt 罢了,只是看着像政府或者军方(如果是他们现在 freebuf 文章估计早删了)
毕竟内网渗透装拦截器,在 apt 中也不算罕见(逃
24
infinte 4 天前
@chenshaoju 现在消息真真假假的,天晓得作者早已经销毁证据了呢
25
chenshaoju 4 天前
@infinte 5YvA6Y+U5bvE56rO5YvY5MXb6X+v5YdT5c+D5L+A5d+F6Y2i5Yh25olN5L+E5MJT77lZ5YhJ5Yhf55dR6X+05eBI5cvi6Y+M5Yvd5oPk5cviEmOJ55dR6nzf44PP
26
infinte 4 天前
@chenshaoju 解不了,损坏了?
27
chenshaoju 4 天前
@infinte
28
infinte 4 天前
也有可能是技侦,有这个动机的人不少
企鹅敢报还敢杀的话,估计已经停止活动、销毁证据了
29
theoractice 4 天前 via Android
没料关注度不够啊。你把 dcm 全称写一下呗
30
fuyufjh 4 天前
talk is cheap, show me the code +1
31
DcmTeamMember 4 天前
@chenshaoju 源码无法给出,因为开发环境没有互联网连接,而且禁止使用任何 USB 设备。电脑上面可用的输出接口只有显示器和耳机,确实曾经想过写个音频调谐程序,把文件调谐进声音里,然后用手机什么的录制下来。后来放弃了,因为电脑上面的程序使用记录什么的都有人不定期抽查,虽然自己写调谐程序被发现的可能性不大,但不怕一万就怕万一。

@fuyufjh 同上。

@theoractice DCM 没有全称,只是一个项目代号而已。那款已经退役的木马项目代号是 TSP 。

@infinte 我们不是军方。军方的技术其实比我们好,可惜我们互相之间不共享这些东西。不过也幸好两套体系互不干涉,所以我才敢发这些东西出来。
32
cerg 4 天前
之前想问问为什么起名 DCM 。
33
dsb2468 4 天前
@DcmTeamMember 那腾讯把这个爆出来了。。 TX 会有麻烦么?还有。。 TX 又是如何捕捉到样本的呢?
34
dsb2468 4 天前
@DcmTeamMember TX 报告的这个,应该是 2012 年的这个升级版本吧?
http://bbs.kafan.cn/thread-1354867-1-1.html

http://home.mcafee.com/virusinfo/virusprofile.aspx?key=2236045#none

http://vms.drweb.com/virus/?i=4151517&lng=en
35
waredugu 4 天前
@DcmTeamMember 国 a 还是公 a?
36
orzz 4 天前
花 X ,下截的毛片岂不是都被这些人看光了?
37
colordancer 4 天前
mark
38
uilin 3 天前
mark 围观
39
moejiajia 3 天前
mark 观望
40
bigandy 3 天前
如果没有猜错的话,这套系统是南京某公司的产品,至少和这家公司有关,大约 4 年前见过他们当时做的 QQ 聊天记录截获系统,在不需要腾讯协助的情况下,就可以截获 QQ 传输的加密数据并还原出来。
从楼主第二篇说法来看,目前各省市部署的舆情设备也就那 2~3 个厂家,而占大头的则是南京某公司,基本我看这两篇内容没有任何夸张的成分。
41
crystone 2 天前
关注一下
42
zxf7788 2 天前
@bigandy 你猜错了
43
chenillen 2 天前
刘明关注一下。
44
zxf7788 2 天前
@DcmTeamMember 请问如何检测出类似的设备布置在网络上游?
45
crowxjy 2 天前
默默🐴
46
DcmTeamMember 2 天前
@waredugu 后者

@orzz 查毛片是多少年前的事了,现在风头早就过去了

@bigandy 八九不离十,你也是这个行业的?

@zxf7788 为什么这么说?

@zxf7788 在设备不主动攻击你的情况下是无法检测的,因为这些设备通常情况下是只进不出的,并不干扰你的正常网络。当然,如果开启了木马种植之类的功能的话,是可以测出来的,不过毕竟这是少数情况。
47
ytmsdy 2 天前
其实更加好奇这款木马的使用范围,如果单独对一家公司投毒,也算是一个 APT 攻击,监控数据流倒也问题不大。
但是如果是大范围的投放,就很好奇后端的数据流处理和服务端的实现了。
48
lovedebug 2 天前
再来围观,学习了
49
waredugu 2 天前
@bigandy 说的好听 舆情 其实什么都是明文 仆街 烽火
50
sogisha 2 天前
感谢楼主透露内幕信息。但是这样做风险不小啊,楼主别被查出来,希望发贴之前已经做好匿名和安全工作了。
51
sogisha 2 天前
有个疑问,假如数据包曾经在一段时间内发往微软,如果拦截到的包没有全部被丢弃的话,微软是不是有可能已经发现过一些端倪了?但是微软现在却什么都不知道,真是没有辜负我等微软黑。(估计如果发往 Google 的话按照之前的一些例子,可能确实会被发现)

据我所了解的一些异议人士等被监控的例子,楼主提到的上门安装战术应该的确存在。
52
KINGOD 1 天前
如果作者现在出来发声,恐怕不会提供比目前公开信息更多的细节,所以不说这个。于是,我比较关心的是,你写这个帖子的动机是什么呢?
53
julyclyde 1 天前 ♥ 1
发现上述文章的 clear sign 是由 374E1103 这个 key 做的
和尾部的 0xE75EDBBD207EA30C 不同

--recv-key 回来看了一下, 207ea30c 是 master sign key ; 374e1103 是 sub key
54
iF2007 13 小时 17 分钟前
@julyclyde 我导入了 0xE75EDBBD207EA30C 这个 Key ,根据你所说签名使用 374e1103 做的,那么应该如何验证呢
55
DcmTeamMember 9 小时 5 分钟前
@ytmsdy 并非针对某个公司或某个人,但也算不上大范围。一般是应用于特定群体的。服务端只是收包,组包然后存硬盘或数据库而已,真正看数据的是人,不是机器。

@sogisha 微软的服务器肯定收到了这些数据,不过那并不是一台 DNS 服务器,所以 UDP 53 端口的数据恐怕早就被防火墙过滤掉了。至于防火墙的日志,恐怕看起来就是实验性质的小流量洪水攻击。没发给 Google 完全是领导层的决定,不过现在想想,如果当初真的发给了 Google ,恐怕第一个写这个木马的分析文章的就不是腾讯了。

@KINGOD 虽然我当初为这些人工作,但这并不代表我内心里愿意为他们做这些事。对于我而言,那是一份工作,也是一个了解这些内幕的途径。我认为所有人对于这些内容都有知情权,因此我在保证自身安全的情况下,让大家尽可能多的了解这些内幕,帮助大家更好的保护自己。

@julyclyde 没错,我是用的 subkey 。话说 V2EX 在文章里加了很多空格,所以验证签名有点麻烦,我存一份到 pastebin 上面好了。

@iF2007 一样验证的, gpg --verify a.txt ,记得用 UTF-8

pastebin 版本:
aHR0cDovL3Bhc3RlYmluLmNvbS9pQjNkODhpYQ==
aHR0cDovL3Bhc3RlYmluLmNvbS95ak0yVkVEYw==
56
iF2007 8 小时 56 分钟前
@DcmTeamMember 嗯,是编码的问题。我用的 GPA 验证,上午不知道编码的问题所以过不去。谢谢
P.S 你们的工作也是厉害
57
dsb2468 5 小时 34 分钟前
@DcmTeamMember 可是。。腾讯是如何获得这个马的呢。。还有,腾讯把这说出来,会不会有麻烦。。