第十章 寻找命令和控制

在本章中,我们将了解如何搜索命令和控制(C2)活动。命令和控制是攻击者建立连接的过程,通过该连接,他们已经控制了目标网络中的受损资产。C2是对网络实施攻击过程中的关键步骤。这是一个足够广泛的类别,它有自己的杀链步骤(KC6,“命令和控制”)。虽然这是一种广泛的策略,但本文将调查对手可能采取的不同方式。

一、理解命令和控制

C2允许攻击者远程访问目标网络。实际上,C2是可以预测的。它通常遵循两种实现模型之一:客户机-服务器模型或对等模型。攻击者有多种构建C2通道的选项,下面列出了每种选项。

命令和控制可以在网络或端点数据中识别。网络数据,包括网络会话和应用程序协议元数据,可能是组织用来标识C2活动的最常见的源。端点数据,如流程执行和文件元数据,也可以用来查找C2,但是这种类型数据的可用性不太常见。因此,本文的重点将放在网络数据上。

二、高层TTP概述

攻击者通常将C2通道构建到通用协议(ComPro)或自定义协议(CusPro)中。常见协议的一些示例包括HTTP/S、SSL/TLS或DNS。自定义协议比较难以预测,但包括使用XOR密码加密包数据等技术。

与协议的情况类似,攻击者通常为其C2通道使用公共网络端口(ComPor)或不常见网络端口(UncPor)。标准端口的例子包括80/TCP (HTTP)、443/TCP (SSL/TLS)、53/UDP (DNS)。不常见的端口很难预测,但它们通常偏离IANA注册的端口。攻击者可以使用上述协议和端口的任何组合:

• ComPro + ComPor

• ComPro + UPor

• CusPro + ComPor

• CusPro + UncPor

实际上,这是攻击者可以通过的4种方法来获取命令和控制通道。快速地调查一下这些方法是有意义的。

三、方法1 -在一个公共端口上使用一个公共协议

这种建立C2的方法很大程度上依赖于与正常网络流量“融合”的概念。这通常包括使用HTTPS和利用高流量端口来寻找合法的流量。从攻击者的角度来看,使用这种方法的风险在于,常见的端口和协议通常是那些受自动化检测系统(如SIEM或IDS)管制最多的端口和协议。例如,“Cozy attackers”(Cozy Bear/ CozyDuke)过去使用标准的HTTPS协议来建立命令和控制通道。在这些情况下,他们巧妙地加密了HTTP头中的数据。

四、方法2 -在标准端口上使用自定义协议

已经观察到一些类型的恶意软件在标准端口上使用自定义协议。例如,FakeM RAT使用经过修改的SSL协议实现来传输数据(它还可以模拟常见的消息传递协议)。这对于在网络外建立连接非常有用,因为在大多数网络中,公共端口(如80/TCP、53/UDP和443/TCP)都是打开的。从攻击者的角度来看,使用这种方法的风险在于,公共端口通常受到密切监视,使用自定义协议可能会使该传输从其他流量中脱颖而出。防御者可以询问并快速调查简单的问题,以确定是否发生了这种情况(例如,“端口80上是否有非HTTP的流量?”)。

第十章 寻找命令和控制_第1张图片

五、方法3 -在一个不常见的端口上使用一个公共协议

各种各样的恶意软件使用通用的协议来建立通信链接,但是通过不常见的端口来建立,这些端口可能是开放的,但是不像普通端口那样被密切监控。这可能包括将数据从公共协议(例如HTTPS)发送到通常为其他协议(例如DNS)保留的端口。思科已经记录了恶意软件在不常见端口上使用TLS的例子。

六、方法4 -在不常见端口上使用自定义协议

第十章 寻找命令和控制_第2张图片

作为绕过可能在网络上受到监视的常规通信通道的一种常见方法,攻击者可以使用自定义协议并通过一个不常见的端口发送数据。在一些目标网络中,这可能是攻击者可用的最隐秘的C2方法,在普通恶意软件和定制攻击工具中都可以观察到这种配置。Kryptik恶意软件使用了这种方法的一个例子,它在恶意软件流量分析中进行了描述。

七、示例假设/ 子假设

正如在之前的文章中所提到的,假设应该是你进行任何搜索的基础和基础,明确你要寻找的是什么。这些是一些常见的假设,您可以使用这些假设来搜索与上述四种TTPs直接相关的C2。假设可以从研究攻击者如何利用公共协议或端口的细节中得到。以下是符合每种C2方法的广义假设:

1、ComPro + ComPor

攻击者可能在C2通道上操作,该通道使用公共网络端口上的公共协议。寻找与您感兴趣的协议相关的惟一工件。例如,如果您对在HTTP流量中标识C2感兴趣,那么您可以考虑查找异常域、url或用户代理字符串。

2、ComPro + UncPor

攻击者可能在C2通道上操作,该通道在不常见的网络端口上使用公共协议。在不常见的端口上查找与您感兴趣的协议相关的可标识工件。例如,在不是80/TCP或8080/TCP的端口上查找HTTP构件。不常见的端口可以在外部(例如,未向IANA注册的端口)或内部(例如,使用网络会话元数据的统计分析来确定哪些端口不常使用)进行标识。

3、CusPro + ComPor

攻击者可能在C2通道上操作,该通道在公共网络端口上使用自定义加密。在监控的网络端口通道中查找异常。例如,在端口443/TCP上查找没有可识别SSL元数据的连接。

4、CusPro + UncPor

攻击者可能在C2通道上操作,该通道在不常见的网络端口上使用自定义加密。在不常见的端口上查找流量中的异常特征(例如,连接持续时间/长度、传输的字节)。同样,可以在外部(例如,未向IANA注册的端口)或内部(例如,使用网络会话元数据的统计分析来确定哪些端口不常使用)识别不常见的端口。

八、数据集的探索

您用来搜索C2的数据集类型取决于您要搜索的是什么,进而扩展到您的假设是什么。为了识别自定义协议的使用,您将主要关注网络会话元数据,包括:

•Netflow(通用的“流”数据)

•防火墙日志(应该允许/接受日志包)

•Bro Conn日志

为了识别通用协议的使用,您将主要关注应用协议元数据,包括:

•代理logs,IIS logs

•DNS解析日志

•bro HTTP, SSL, DNS, SMTP logs

九、使用技术

在建立了正确的假设并选择了必要的数据集之后,猎人仍然必须知道使用什么技术来调查假设。在这里,我们将调查三种类型的技术,你可以用来调查上述。

1、指示器搜索

与在狩猎中使用指示器的所有情况一样,这种方法的值将受到指示器值的影响。本地来源的指标通常会提供较高的价值,因为它们往往与您可能要保护的网络或系统相关,并且是及时的。这些类型的指标可以从以前的事件或内部威胁情报团队收集。

同样重要的是要记住,对于攻击者来说,更改用于进行攻击的基础设施相对容易;如果您使用指示器进行搜索,那么您应该意识到指示器可能不再与特定的攻击者或攻击工具相关。

第十章 寻找命令和控制_第3张图片

一些常用的网络会话指标包括:

• IP address

• Port

一些常见的搜索协议应用程序包括:

•Domain (HTTP, DNS, SSL)

•URL (HTTP)

•用户代理字符串(HTTP)

•X.509认证主题(SSL)

•X.509认证Issuer (SSL)

•电子邮件地址(SMTP)

2、堆叠

堆叠技术常用于许多不同种类的狩猎。在寻找命令和控制活动的情况下,猎人将需要为异常的入站或出站流量实例进行堆栈。同样的元数据类型从指标搜索上面可以用于堆叠,包括:

• Ports

• URLs

• X.509 Certs


第十章 寻找命令和控制_第4张图片

要查找C2,您需要关注双向或内部到出站连接流。使用叠加的有效性取决于有一个很好的调谐输入。太少不会揭示出足够的信息,太多会淹没你梳理出有意义偏差的能力。如果给定的结果集太大,则考虑对输入数据集进行进一步筛选(例如,将您的关注点隔离到特定的内部子网)。或者,更改正在堆叠的元数据(例如,从堆叠目标IP地址更改为堆叠目标端口)。

3、机器学习

一个更高级的技术涉及使用机器学习来隔离恶意的C2活动。监督机器学习使用标记的训练数据来预测未标记的数据。在一组已知的好例子和已知的坏例子中,您可以创建一个二进制分类器,该分类器能够接受新的事务,并决定它们看起来更类似于良好的训练集还是糟糕的训练集。在培训了分类器之后,假设您已经做得很好,您可以通过它提供HTTP(或其他网络日志),并返回需要分析人员关注的小得多的记录集。

Clearcut是由David Bianco和Chris McCubbin创建的一个概念证明/演示工具,用于在Bro HTTP日志中使用机器学习来查找类似c2的流量。在一个极端的例子中,它被用来处理大约180,000个日志条目,并且在机器被训练之后产生了少于300个日志条目(减少了99.999%)。机器生成的结果条目可以手动检查C2活动。你可以在https://github.com/DavidJBianco/Clearcut找到Clearcut。

关于使用机器学习进行狩猎的更多信息,我们强烈建议观看David Bianco和Chris McCubbin的演讲“practicalcyborgism: Started with machine learning for Incident Detection”(于BSides DC 2016年展示)。

十、例子狩猎-命令和控制

下面的示例说明了如何使用上面列出的假设和列举的数据和技术。

1. 你在找什么?(假设)

假设:

攻击者可能在C2通道上操作,该通道在公共网络端口上使用自定义加密(非普通协议)。

寻找:

被监视的网络端口通道中的异常,即没有与您正在查看的公共端口相关的协议工件的连接。例如,查找端口443/TCP上没有可识别的SSL元数据的连接。

2. 调查(数据)

数据集:

为了识别通用协议的使用,您将主要关注应用协议元数据,包括:

•代理日志,IIS日志

•dns解析日志

•Bro HTTP, SSL, DNS, SMTP日志

3.发现模式和lOCs(技术)

1. 通过查看协议元数据,使用搜索来识别要检查的各种公共端口上的合法协议连接

2. 如果查看端口80,则搜索给定时间段内存在的任何HTTP协议记录

3.获取步骤1的输出,并从公共端口上的会话数据中删除公共协议连接。这将在公共端口上留下不常见的协议连接

4. 根据步骤2的结果,将有助于调查你的假设的数据堆叠起来

5. 例如:传输的目标IR字节、连接持续时间/长度等。

4. 通知并丰富分析

您发现的C2活动中涉及的目标IP地址可以作为lOCs并添加到指示器数据库中,以便扩展自动检测系统。您还可以创建包级别的签名,以在您发现的自定义协议可能再次出现的情况下触发警报。

你可能感兴趣的:(第十章 寻找命令和控制)