Total Pageviews

Friday 2 September 2016

如何对付公安部门的“网络临侦”?——“黑暗幽灵(DCM)木马”之随想

前几天有读者在博客评论中询问了“黑暗幽灵木马”(洋名叫“DCM”)的相关事宜。本来想从技术层面聊聊这款木马,但是俺发现相关的分析文章已经很多了。为了不落俗套,俺换一个角度——聊聊“如何应对公安部门的网络临侦”。


★何为“黑暗幽灵木马”?


  先简要介绍一下这款木马的情况。已经了解的同学,请直接跳过本章节,以免浪费时间。
  这是4月下旬被腾讯安全团队曝光的木马。这款木马能吸引大量眼球(引发了安全界的严重关注),主要是因为它的两大特色:

◇特色之一,传播手段很特别


  此木马首先让人惊艳之处就是传播方式很牛逼。
  那些中了这款木马的电脑,并【没有】运行外来的可疑软件,就已经中招了。为啥捏?
  根据目前曝光的内幕以及圈内人士的分析,这款木马有一个专门的“传播系统”,该系统是通过“流量注入”进行传播的。大致包括如下几种方式:
  1. 软件自动升级
  如今很多软件都有自动升级功能。所谓的自动升级就是从该软件的官网下载一个升级的安装包到本机,然后在本机运行该升级安装包。
  某些软件(尤其是很多国产软件)不够靠谱,它们在下载完升级安装包之后,没有进行文件的完整性检查,就直接运行了。
  这就给了 DCM 可乘之机——当 DCM 木马的传播系统发现你的电脑在下载某个软件的升级安装包,就会篡改这个安装包的内容,把 DCM 木马植入到安装包内部。当这个安装包下载到本机并运行之后,你就中招了。
  2. 软件下载
  很多网友经常会在网上下载一些软件。DCM 的传播系统一旦发现你的传输流量中包含了“可执行文件的下载”,同样会篡改你的网络传输流量,把 DCM 植入到你下载的那个软件包中。
  3. 浏览器劫持
  如果前两种情况一直没有出现,DCM 的传播系统会采用最后这招——浏览器劫持。
  当受害人在浏览器中访问任何一个网站时,DCM 的传播系统会让浏览器显示一个出错的页面。该页面提示用户升级浏览器,并且包含一个升级的链接。当然,这个链接是假的。受害人一旦通过该链接下载浏览器的升级包并运行,就被植入 DCM 木马了。

◇特色之二,隐蔽性很强


  这里所说的“隐蔽性”,不仅仅是它本身的软件隐藏得好(隐藏得好的木马多得很)。更主要是指——它非常注重隐藏”木马的操纵者“。
  先来说传统木马是如何汇集信息的:
  传统的木马在收集到信息之后,通常会发送到某个“地方”。这个“地方”可能是木马控制者自己架设的网站,也可能是木马控制者自己注册的邮箱(甚至可能是某个 SNS 帐号)。不管是哪种,汇集信息的“地方”总是与木马操控者具有某种关联性。因此,一旦木马被安全公司拿去作分析之后,就可以通过观察其行为,知道该木马用来汇集信息的“地方”是哪个。如果有可能的话,就可以据此来追踪木马的操控者。

  再来说 DCM 木马的独特之处:
  该木马收集到电脑系统的各种信息之后,会把信息压缩并分成 N 份,然后每一份伪装成一个 DNS 请求的数据包。这个数据包会发往微软的服务器。
  为啥要发往微软服务器捏?千万【不要】天真地以为木马是微软做的(这个木马跟微软没半毛钱关系)。选择微软服务器是因为:
1. 微软的服务器 IP 【没有】被 GFW 屏蔽
2. 普通网民的电脑与微软服务器的通讯很频繁(因为 Windows 的“自动更新”),【不易】引起怀疑
3. 微软的服务器在国外,所以发往微软服务器的数据包不但会经过“城市的网络出口”,还会经过“省级网络出口”和“天朝的国际出口”。所以,在这几个环节中都可以截获这些伪装的 DNS 数据包。
  再来说一下,为啥要选用 DNS 协议?原因如下:
1. DNS 协议非常普遍,【不易】引起怀疑
2. 绝大部分网络环境中,防火墙都允许 DNS 数据包通过
  从上述介绍可以看出:为了收集信息,该木马另辟蹊径,完全没有暴露出木马控制端的任何信息。


★这款木马是谁干的?


  介绍完 DCM 木马的特色,俺接着来分析:谁是这款木马的始作俑者?
  前面说到了该木马的两大特色。其中之一是:在“收集信息”的环节中彻底隐藏了木马控制端的痕迹。但恰恰是这种隐藏手法,反而暴露了:谁才有可能是这款木马的操控者。
  列位看官中,如果有稍微懂点网络的,应该能看出来——DCM 木马把收集到的信息发往【墙外】的微软服务器,这个过程大致需要经过如下几个环节:
1. 宽带拨号设备,比如光猫之类(这个环节不一定有,取决于具体的宽带上网方式)
2. 小区的交换机(这个环节不一定有,取决于具体的宽带上网方式)
3. 运营商的局端设备
4. 城域网出口
5. 骨干网省级出口
6. 骨干网国际出口
  那么,木马的操纵者如何获取信息捏?显然,至少要能控制其中一个环节。然而上述这些环节都掌握在运营商(ISP)手中。运营商本身是没啥动力去搞这么复杂的一个木马。那么,谁有这个动力,并且还有足够的权威去指使运营商干这种事情捏?答案呼之欲出,那就是【六扇门】。在公安系统内部,这种搞法称之为“网络临侦”。


★六扇门为啥要搞“网络临侦”?


  话说如今是信息时代,体现在六扇门那儿就是:电子证据越来越多(比如“电邮、聊天记录、上网记录”都可以成为证据)。所以最近10年,信息安全行业衍生出一个细分市场叫做【电子取证】。今天咱们要聊的“网络临侦”,就是电子取证的手段之一(还有其它的一些手段,以后有空慢慢聊)。
  “网络临侦”可以实现如下几个目的:

◇收集网络行为


  通过网络临侦手段,可以详细监控目标嫌疑人的上网行为。为了体现其特色,俺拿“网络临侦”与“GFW”作一个对比。

  部署方式不同
  GFW 部署在天朝的国际出口。只有当你访问境外网站,你的网络流量才会经过【国际出口】,才会被 GFW 处理。如果你仅仅是访问【墙内】网站,GFW 根本【看不到】你的流量。
  相反,用来做网络临侦的设备,可以直接部署在小区交换机甚至是嫌疑人家中的拨号设备中。也就是说,不论你访问国内网站还是国外网站,都会被网络临侦设备监控到。

  数据量不同,导致处理方式不同
  部署方式不同引出了另一个差异——数据量不同。
  GFW 面对的是全国网民的跨国网络流量,那个规模是非常非常惊人的。因此,GFW 的“协议分析模块”和“后续处理模块”就无法作太多的事情。比如说,GFW 无法把它看到的所有流量都保存下来。
  相反,由于网络临侦设备可以部署在一个小范围(比如小区交换机),它可以把所监控的流量全部保存下来,供日后分析。

  虽然网络临侦设备有上述这几种好处,但是它也有缺点:
1. 无法对付【强加密】的流量
如果目标网民使用强加密的方式上网,临侦设备没法破解这些加密流量,因此也就无法监控目标网民。
2. 无法监控主机的行为
如果你的某个行为仅仅局限在本机,与网络无关。那么单纯的网络监控是无法了解你在做啥?

  由于上述这2个缺点,所以临侦设备需要采用其它手段,这就是下面要聊的——收集主机行为的能力。

◇收集主机(本地)行为


  但是临侦设备是部署在网络传输路径中,并没有部署在本机。它如何能收集本机的行为捏?于是本文提到的 DCM 木马就出场了。前面俺提到了:DCM 木马具有专门的“传播系统”。这个传播系统,其实就是“临侦设备”。由于它的部署方式,使得它可以很容易篡改你的上网流量,从而可以在流量中植入木马。一旦得逞,木马安装到你本机,那么你的一举一动都在六扇门的监控之下了。
  这时候,即便你采用加密的方式上网,甚至采用多重代理上网,都于事无补了。因为木马可以直接看到你的浏览器的地址栏(知道你在访问哪个网站),木马还可以收集你输入的每一个汉字(比如装个键盘钩子既可实现)。


★哪些人需要防范“网络临侦”?


  大致来说,有两类人需要防范:
1. 犯罪分子
2. 因为政治原因被六扇门盯上的人——比如维权人士、民运人士、反党人士......

  (本文主要是写给第二类人看的)
  如果你不是这两者之一,你通常不用太担心被临侦设备盯上。


★如何对付“网络临侦”?——关键性的防范措施


◇一定要加密网络流量


  这是最容易想到的应对招数——你一旦加密了网络传输的流量,临侦设备就【无法】对你的上网流量进行木马注入。另外一个好处是,如果你用的是加密代理,临侦设备甚至都无法知道你访问了哪些网站。关于加密网络流量,主要有2种方式:
1. 网站自身提供的 HTTPS
2. 加密代理

  这两种方式的中,HTTPS 有如下几个【局限性】:
1. 有很多网站(尤其是小型网站)不支持 HTTPS
2. 如果你通过 HTTPS 访问某网站,临侦设备虽然无法看到你的真实流量的内容,但依然能知道你访问的网站是啥
3. 如果浏览器的证书出现问题(比如你用了朝廷方面发行的 CNNIC 证书),那么单纯的 HTTPS 有可能遭遇“中间人攻击”(洋文叫“MITM”)
4. 如果浏览器存在漏洞(比如“HTTPS 降级攻击的漏洞”),临侦设备【有可能】解密单纯的 HTTPS 流量并实现注入。

  与 HTTPS 相比,加密代理具有的好处是:
1. 不受网站本身的限制
即使你访问的网站不支持 HTTPS 也没关系
2. 基于加密代理访问,监控你流量的人无法知道你在访问的网站是啥
临侦设备顶多看到你在访问某个代理服务器,但是【无法】知道你通过这个代理转到了哪个网站
3. 即使你的浏览器证书出了问题,风险也不大
临侦设备因为无法看到你的 HTTPS 流量(HTTPS 流量被包裹在外层的加密代理流量中),无法针对你进行“中间人攻击”
4. 即使你的浏览器含有 HTTPS 协议的漏洞,风险也不大
(类似第3条)

  综上所述,“单纯依靠加密代理”比“单纯依靠网站自身的 HTTPS”,要更保险。当然,两者结合更好(前提是网站要支持 HTTPS)

◇要用“强加密”,不要用“弱加密”


  很多人都用过 VPN,俺就拿 VPN 协议来举例。VPN 的实现有很多种方式,其中的 PPTP 就是有名的“弱加密”。由于临侦设备的部署特点,它有可能解密 PPTP 协议,并获得其中的明文流量内容。
  考虑到大部分同学都不是信息安全圈内的,通常无法判断哪些是弱加密,哪些是强加密。所以俺再来唠叨一个多年的老建议:“基于 TOR 的多重代理”。由于多重代理是【嵌套】的关系,只要其中一重是强加密,整个就是强加密。而 TOR 肯定是强加密的。
  关于多重代理,俺早在 N 年前就写了教程,链接在“这里

◇假如你不得不用明文传输,切记用“虚拟机”隔离不同的上网环境


  有些情况下,你不得不用明文方式上网。
  举个例子:比如国内的视频网站通常都采用明文传输,不支持 HTTPS。并且大多数国内的视频网站都屏蔽了境外的 IP。也就是说,当你用翻墙代理去访问国内视频网站,无法正常观看。就算你找到某个国内的代理服务器,可以解决“国外IP无法观看”的问题,但走代理终归影响性能。而看视频对网络传输性能的要求还是偏高的。
  上述这种情况,就使得你被迫用明文的方式进行网络传输,而这种方式就给了临侦设备可乘之机。
  咋办捏?俺的建议是采用虚拟机——把那些被迫使用明文传输的上网行为,都统一放到某个虚拟机(Guest OS)中。这个虚拟机就算被入侵了,至少你的物理系统(Host OS)和其它的虚拟机也不会受到影响(本文暂且不考虑“虚拟机穿透”的风险,这种的概率非常低)。
  没玩过虚拟机的同学,请参见俺写的系列教程《扫盲操作系统虚拟机》。
  使用虚拟机还有另一个额外的好处——利用快照功能自动回退到干净的状态(关于这招可以参见俺的另一篇教程:《如何用“快照”辅助安全加固、强化隐私保护》)


★如何对付“网络临侦”?——【不够靠谱】的防范措施


  DCM 木马曝光之后,有很多网上的文章给出了相应的防范措施,可惜很多措施都不够靠谱。俺下面分别列举,作为反面教材。

◇用 Linux 或 Mac OS 替代 Windows


  用 Linux 或 Mac OS 替代 Windows 会在一定程度上提升安全性。别的不提,单说六扇门的临侦系统,主要还是针对 Windows 的。因为大部分网民用的是 Windows。
  可惜这个措施【不彻底】。因为六扇门未来有可能开发针对 Mac OS 甚至 Linux 的入侵工具(没准现在已经有了)。
  因此,本措施属于“非关键性的”。

◇总是使用带校验机制的自动升级


  首先,这个措施实施起来比较困难。因为大部分网民是技术菜鸟,并不知道那些软件的自动升级功能含有“校验机制”。
  其次,这个措施是不彻底的。即使你电脑上所有的软件的自动升级都含有校验机制,但如果你没有【全程】加密,临侦设备还是可以通过其它方式对你的【明文】流量进行注入(比如篡改你正在下载的可执行文件),从而让你中招。
  所以,这个措施指标不治本。

◇总是检查下载的软件的数字签名


  (不知道何为“数字签名”的同学,可以先看《扫盲文件完整性校验——关于散列值和数字签名》)
  首先,并不是所有的软件的安装包都自带数字签名。如果某个安装包没有自带数字签名,你就比较难判断该安装包在下载的过程中是否被篡改了。
  其次,由于每次下载都要记得检查,这种细心程度大部分人是做不到滴。
  这个措施同样指标不治本。

◇对 DNS 协议的防范——只允许 DNS 数据包发往合法的 DNS 服务器


  某些文章提到了这个招数,用来限制 DCM 木马往外发送信息。这个招数是【不】靠谱滴。
  虽然目前 DCM 木马用的是 DNS 协议来掩盖它的发送行为。但如今 DCM 已经被曝光。它的下一个版本很可能会改用其它的方式来隐藏信息发送行为(不一定再用 DNS 协议了)。

◇禁用可疑的 CA 证书


  许多年前,俺就写教程普及了“CA 证书的重要性”,以及“可疑证书的危险性”。
  不过捏,在对付网络临侦设备的时候,“禁用可疑的 CA 证书”这个招数用处不大。
  举例来说,假如你本机依然存在明文的上网流量,就可能被注入。而明文的上网流量,与 CA 证书没有半毛钱关系。


★俺是如何做到“全程加密”的?


  在本文结尾处,稍微分享一下俺的个人经验(其实这个经验,前几年已经在博客评论区分享过了)
  大致包括如下几个要点:

  1. 基于 TOR 的多重代理
  前面已经提到过:TOR 本身是强加密的,所以基于 TOR 的多重代理,整体而言也是强加密的
  再罗嗦一下:多重代理包含了多重的加密,临侦设备非常难对其进行解密,也就谈不上“注入”了。

  2. 虚拟机隔离
  虚拟机隔离有两个好处:
其一,前面讲过的——某个虚拟机被入侵不会影响到其它虚拟机
其二,可以通过设置虚拟机的虚拟网卡模式,确保该虚拟机内的【所有】软件都无法【直接】联网(教程参见:原理配置)。換而言之,就是【强制】所有的网络流量都经由多重代理
  之所以要从部署方式上进行【强制】,是为了避免有些网络软件没有走代理,擅自独立联网。这种情况下就存在“流量注入”的风险。

  3. Guest OS 定期回退快照
  其实只要做到前面两点,临侦设备就很难往你的系统中植入木马了。但是为了以防万一,俺还是养成了一个好习惯——定期(大约几天)回退一次 Guest OS 的快照。
  如果你熟悉虚拟化软件的快照功能,自然知道俺这么干的好处是啥。

  4. 定期更新重要的软件/系统补丁
  补丁的重要性,俺在《如何防止黑客入侵》系列中已经有介绍,此处不再唠叨。
  俺至少对“Host OS、Guest OS、虚拟化软件、浏览器、翻墙代理"都会定期升级。

  5. Host OS 基本不干啥事儿
  (看了某读者的留言,想起来补充这条)
  俺平时的各种操作(上网、办公、编程 ......)全都在 Guest OS 中进行,大部分俺常用的软件也都是装在 Guest OS 中。Host OS 基本不干啥事儿(主要是用来运行虚拟化软件)。
  好处是:大大降低了 Host OS 被直接入侵的风险。Host OS 是很重要滴——万一被入侵,则所有的 Guest OS 也陷入危险之中。


★对“全程加密”的困惑及解答


  当年俺在博客评论区介绍“全程加密”的经验时,有热心读者提出了几个困惑。针对这些困惑,把俺当时的回复整理如下。
  如果你看完本文还有其它困惑,欢迎在本文下方留言。

◇困惑1


  疑问:
  如果采用全程加密,那么自己的公网 IP 对外的流量【全都是】加密流量。反而容易引起怀疑。

  俺的解答:
  公网 IP 的对外流量大致可以分两种:“在家上网”和“在公司上网”。
  对于“公司上网”——
通常每个公司分配的公网 IP 都只有少数几个。公司中所有的人都是通过这少数几个公网 IP 对外访问。即使你采用“全程加密”,但是其他同事未必会这么干(大部分网民的流量应该是以非加密为主)。所以,公司的公网 IP 对外的流量,加密的比例依然很低。
  对于“家庭上网”——
如果你家里还有其他家庭成员在上网,你们共用一个公网出口。此时,效果等同于刚才提到的“公司上网”——你的家人显然会有一些明文的流量,所以你家的对外流量【不会】全部是密文。
如果你属于“一人吃饱全家不饿”的类型,那么你可以单独开一个虚拟机专门用来做些普通的网页流量,甚至可以在该虚拟机中开个浏览器不断播放视频。这样一来,你家的对外流量中,加密流量的比例就不会这么大了。

◇困惑2


  疑问:
  如果采用全程加密,那么在使用某些国产软件(比如 QQ)或国内网站(比如新浪微博)的时候,服务器记录的“访问者 IP”总是来自境外,反而容易引起怀疑。

  俺的解答:
  首先,如果你真的很关注安全性(尤其是隐私性),就应该尽量远离那些国产软件或国产网站提供的服务。具体原因,俺在博客中已经了唠叨很多次。
  如果你不得不用这些东西,还有一个办法:找一个【墙内】的代理服务器,让这个代理服务器成为你多重代理的【最后一跳】。在这种方式下,那些国内公司的服务器(比如 QQ 服务器)看到的“访问者 IP”就是来自墙内了。


★结尾


  写本文最大的遗憾就是:这篇博文有可能会帮到某些犯罪分子。
  其实俺也很无奈,因为俺首先要帮助那些“反党人士、民运人士、维权人士”对抗国保部门的监控。

from https://program-think.blogspot.com/2016/08/Trojan-Horse-DCM.html