Rise of Legitimate Services for Backdoor Command and Control阅读笔记
1. 基本概念
目标:
- 攻击者:利用现有检测工具与技术检测实施攻击行为,并不断升级优化检测工具与技术;
- 维护者:在攻击者发动攻击之前发现僵尸网络,提供充足的时间进行响应。
合法服务C2
被恶意软件利用的互联网合法服务,这些合法服务器的API被僵尸网络用作其C2架构的一部分。
后门软件与控制器
- 普通客户端-服务器关系与宿主机-控制器关系的区别
客户端向服务器发送请求,服务器根据用户发送的请求返回相关的资源信息。客户端发送与接收的数据量大概比率为1:10;而宿主机与控制器的通信中恰恰相反,数据量比率为10:1。这是因为客户端向服务器描述请求的信息,而服务器响应所请求的资源,资源的大小较请求的大小要大得多;而宿主机在收到服务器的指令后,宿主机执行指令的过程中将产生大量数据包。
-
两种类型的后门
- 主动型后门
主动型后门的宿主机主动与C2系统取得联系,通知C2系统它已经准备好接收指令信息。
- 宿主机保持一定时间间隔与预设C2地址进行通信
- 如果C2服务器在线,则宿主机与C2服务器进行握手,C2服务器验证宿主机是否网络成员
- 握手成功后,宿主机与C2系统保持连接
- 当宿主机收到来自C2服务器的消息时,解析消息,并按照消息中的需求执行相应命令
- 主动型后门需要宿主机与服务器长期保持连接
- 被动型后门
被动型后门的宿主机不会主动与C2系统联系,宿主机等待C2服务器将命令通知到各个宿主机。
- 后门感染计算机后,打开预设端口的网络监听器
- 当控制器需要向宿主机发送命令时,将携带特定信息(口令、密码)的数据包发送到预设端口上;在没有命令需要执行时,C2服务器不与宿主机进行通信
- 当网络监听器捕获数据包时,解析包的内容,验证口令,当口令验证成功,按照命令中的需求执行响应动作
- 被动型后门需要宿主机保持时刻在线,并且可被网络访问
- 主动型后门
被动型后门需要植入到网络地址公开的计算机内,并且需要预设好用于通信的特殊口令,在通信过程中仅使用低级通信API且能够使用攻击者自定义的二进制协议进行通信,不需要使用任何形式的DDR或合法服务。
高级API与低级API
-
高级API
使用高级API的后门软件是指,后门软件编码时导入winner.dll, urlmon.dll等库函数文件,涉及HttpOpenRequest, URLDownloadToFile, FtpCommand等函数。大多数后门软件使用高级API。 -
低级API
使用低级API的后门软件是指,后门软件编码时导入ws2_32.dll, Winsock等库函数文件,涉及Socket, Recv, Bind等函数。 -
对比
相比于高级API,使用低级API攻击者可以使用自定义通信协议,具有更高的灵活性;但是使用低级API进行编程的工作量大,且调试困难,使得攻击者的攻击成本提高。
两种实现方式
将合法服务用作构建C2系统有两种方式:使用DDR技术的合法服务C2和完全合法服务C2.
- 使用DDR技术的合法服务C2
DDR(Dead drop resolving)是指后门软件事先配置好去访问指定网络资源以获得真正的C2服务器地址的技术。
使用DDR技术的合法服务C2架构中,后门软件成功植入宿主机后:
1. 执行程序,访问指定网页
2. 在网页文本中寻找特定标签、标记或分隔符,定位需要提取的加密信息
3. 后门软件解码提取到的加密信息,获取其中的行动指令或进一步的配置信息,如C2服务器的访问地址或IP地址
4. 后门软件向C2服务器发起连接请求,等待指令分发
使用该方法构建的C2架构,后门软件先使用高级API和HTTP兼容的请求方式与互联网合法服务进行初始通信,在从中获取了真正的C2服务器地址后,再使用低级的API和攻击者自定义的通信协议与C2服务器进行通信。
使用DDR技术的合法服务C2的特点:
1. 拥有“活跃”状态的用户对预先配置好的指定网页资源进行访问
2. 使用HTTP高级API来进行DDR
3. 使用低级API和自定义的协议进行后续的通信
- 完全合法服务C2
完全合法服务C2指的是后门软件与C2控制器不直接通信,总是以互联网合法服务作为通信媒介进行通信。
1. 后门软件使用硬编码凭证登录互联网合法服务
2. 后门网站通过账户页面信息或者使用API搜索最新评论、帖子或更新的消息,在其中查找特殊的加密信息
3. 后门软件获取加密信息后将其解码,获得信息中包含的指令或其他信息。如果攻击者尚未向肉鸡发布攻击指令,则通常会发布配置信息更新消息、睡眠指令或告诉后门软件应在什么时间第二次访问合法服务获取指令
4. 当攻击者需要向后门软件发布指令或信息时,攻击者登录合法互联网服务,将加密好的信息输入到指定位置
使用该方法会增加攻击者的工作量,因为攻击者需要编写具有使用互联网合法服务API使用凭证的后门软件和C2控制器。
完全合法服务C2的特点:
1. 使用高级API和HTTP协议来获取合法服务的页面信息
2. 每个后门程序都必须包含用于登录互联网合法服务的凭证
2. 发展现状
被滥用的知名互联网合法服务
上图描述了现在已经存在合法服务被用作C2通信的滥用行为的知名互联网服务,其中包含Facebook, Yahoo, Google, Twitter, GitHub等众多知名互联网服务。
上图展示了,最近几年每年合法服务被用作C2服务的数量变化情况。
利用合法服务进行C2的常见恶意软件
对于使用合法服务进行C2通信的恶意软件家族,攻击者甚至可以提供定制的多种方式C2通信。下表展示了常见的恶意软件家族及其其他称呼,使用合法服务的方式,使用的互联网合法服务商等信息。
下图展示了近年来发现的使用合法服务进行C2通信的恶意软件家族数量变化趋势。
攻防分析
- 攻击者角度
1. 攻击流量在大量网络流量中便于隐藏。与合法服务如Google, Microsoft, Twitter等进行的通信流量非常多,且一般不会被怀疑存在恶意行为。
2.在合法服务平台上注册账号非常容易。
3. 访问合法服务网站非常容易。后门软件可以很容易地找到放置在互联网合法服务平台上的加密信息。
4. 自定义加密协议用于后续的C2通信对于攻击者来说并不困难。
5. 适应复杂的网络环境及其变化。当网络环境发生变化时,攻击者可以直接修改后门软件中的配置文件;当C2服务器的网络位置发生变化时,攻击者只需要修改在合法服务上的加密信息即可控制宿主机的攻击行为。
6. 攻击成本低。
- 维护者角度
1.不能随意拦截合法服务的通信流量。
2. 合法服务往往会有自己的加密通信协议,使得不好监控其中是否含有恶意流量。
3. 无法按照常用的聚类方法和特征检测方法来检测此类僵尸网络。
3.检测方法
本文所提到的检测方法仍属于实验阶段,存在一定的误报。下述检测方法均基于“聪明的浏览器,愚笨的后门软件”的假设。
3.1检测来自非浏览器非应用程序的与互联网合法服务的通信流量
Vector8, Tanium, Crowdstrike, Carbon Black, Mandiant等供应商都有提供能够检查系统数据并追踪非浏览器进程网络连接的终端产品,利用这些终端产品,我们可以对我们没感兴趣的流量进行进一步的筛选调查。
在这种检测方法中,我们需要对与每个合法服务的流量都编写过滤规则。例如,我们希望筛选与github通信的非浏览器非应用软件流量,可以制定下述规则:
Source Process NOT (firefox.exe OR chrome.exe OR iexplore.exe) AND TCP Connection To (netblock is 192.30.252.0/22 OR AS is AS36459) AND Source Process NOT (git.exe OR github.exe OR OR git-bash.exe OR git-cmd.exe OR git*.exe OR git- gui.exe OR githubdesktop.exe)
利用这些终端产品,我们还可以查找网络内部的指定主机的通信流量,如果这些主机本身不应该与外界服务器产生通信行为,则很有可能是恶意流量。
3.2 检测来自合法服务站点的低DDR页面响应的流量规模
后门软件把访问合法服务平台的HTML页面下载到临时文件,然后从临时文件中找到加密的DDR文本,通过对该加密文本的解密得到真正的C2服务器地址。如果浏览器能够对行为流量做一个指纹检测,可以发现后门软件行为的指纹信息。
本文做了一个实验。在合法服务上模拟了这一过程,并对比后门软件行为与普通访问行为造成的流量差异。
实验结果提供这样一个检测思路,我们可以通过检测访问页面产生的流量大小来检测后门软件的访问行为。例如,如果一个后门软件使用GitHub进行了完全合法服务C2的利用,它可能会在页面或某个项目中搜索加密的指令,完成指令后将执行结果加密写入这个网页或项目。这个后门软件将在很长一段时间内向GitHub发送大量数据,且从页面获取的数据非常少,可能少于1kb。这种也可能是普通用户在使用GitHub是产生的自然流量特征,但是后门软件的上传/下载时间可能有明显区别于普通用户的地方。过滤规则示例如下:
nfdump -R %NFDUMPFILES% -t YYYY/MM/dd.00:00:00-YYYY/ MM/dd.23:59:59 ”(src net 192.30.252.0/24 or src net 192.30.253.0/24) and (bytes > 9000 and bytes < 17000)” -s dstip/bytes -n 25
3.3 检测频繁与合法服务交换证书的行为
基于我们的假设,我们可以认为后门软件在每次调用DDR页面时都会有SSL握手与证书交换的行为。为了对比后门软件与普通用户行为证书交换频率的差异,我们对比了20分钟内后门软件(左)与正常浏览器(右)和Microsoft Social的通信行为。
这种检测方法适用于任何使用SSL握手进行加密通信的合法服务。可以使用如下过滤规则进行检测:
alert tcp $HOME_NET any -> $EXTERNAL_NET 443 (msg: “TLS Client Hello - Microsoft Answers”; content”|00 00 00 19 00 17 00 00 14|social|2e|microsoft|2e|com”; threshold: type both, track by_src, count 30, seconds 86400; sid:13370001; revision:1;)
alert tcp $HOME_NET any -> $EXTERNAL_NET 443 (msg:”TLS Client Hello - Google Docs”; content:”docs.google.com”; ssl_state:client_hello; threshold: type both, track by_ src, count 30, seconds 86400; sid:13370002; revision:1;)
3.4 基于模式匹配的批量处理
模式匹配是指识别文件之间的相似性,基于文件与已知良性和已知恶性的文件之间的关系来识别位置的恶意文件。这种检测方法侧重对于文件属性而不是网络行为的检测。使用这种检测方法的前提是,我们在检测前就对恶意软件性了系统分析,采用静态分析、动态分析和反汇编等方法提取恶意软件的各种特征,诸如操作码、字节模式、 符号函数、系统调用、代码块、处理器指令、调试符号、唯一字符串和运行时的行为表现等。
提取了这些信息后将它们存入数据库,在检测时同样提取这些信息与数据库内信息进行比较,以检测出恶意软件。