在本章中,我们将了解如何搜索命令和控制(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的流量?”)。
五、方法3 -在一个不常见的端口上使用一个公共协议
各种各样的恶意软件使用通用的协议来建立通信链接,但是通过不常见的端口来建立,这些端口可能是开放的,但是不像普通端口那样被密切监控。这可能包括将数据从公共协议(例如HTTPS)发送到通常为其他协议(例如DNS)保留的端口。思科已经记录了恶意软件在不常见端口上使用TLS的例子。
六、方法4 -在不常见端口上使用自定义协议
作为绕过可能在网络上受到监视的常规通信通道的一种常见方法,攻击者可以使用自定义协议并通过一个不常见的端口发送数据。在一些目标网络中,这可能是攻击者可用的最隐秘的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、指示器搜索
与在狩猎中使用指示器的所有情况一样,这种方法的值将受到指示器值的影响。本地来源的指标通常会提供较高的价值,因为它们往往与您可能要保护的网络或系统相关,并且是及时的。这些类型的指标可以从以前的事件或内部威胁情报团队收集。
同样重要的是要记住,对于攻击者来说,更改用于进行攻击的基础设施相对容易;如果您使用指示器进行搜索,那么您应该意识到指示器可能不再与特定的攻击者或攻击工具相关。
一些常用的网络会话指标包括:
• IP address
• Port
一些常见的搜索协议应用程序包括:
•Domain (HTTP, DNS, SSL)
•URL (HTTP)
•用户代理字符串(HTTP)
•X.509认证主题(SSL)
•X.509认证Issuer (SSL)
•电子邮件地址(SMTP)
2、堆叠
堆叠技术常用于许多不同种类的狩猎。在寻找命令和控制活动的情况下,猎人将需要为异常的入站或出站流量实例进行堆栈。同样的元数据类型从指标搜索上面可以用于堆叠,包括:
• Ports
• URLs
• X.509 Certs
要查找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并添加到指示器数据库中,以便扩展自动检测系统。您还可以创建包级别的签名,以在您发现的自定义协议可能再次出现的情况下触发警报。