0X00前言
作为一个安全运营人员,学习如何利用开源工具探测命令和控制(Command and Control,即C2)服务器对于发现和防御网络攻击至关重要。笔者会通过下文介绍为啥需要探测命令和控制服务器,以及安全运营人员是如何利用开源工具和资源探测命令和控制服务器的。
0X01命令和控制服务器
为了让大家了解,安全运营人员为什么需要探测命令和控制服务器(不是因为KPI的压制!)。这时很多初学者会简单的认为,通过威胁情报IOC寻找特定的恶意命令和控制服务器足以达成我们的KPI。然而,现实是残酷的,随着攻击者的攻击手段层出不穷,恶意命令和控制服务器的构造成本越来越低,通过利用恶意命令和控制服务器之间的共享探测命令和控制服务器变得困难起来了。
补充:命令和控制服务器(又名C2服务器)是由攻击者操作的服务器,用于维护与目标网络内受感染系统的通信,在网络攻击(包括僵尸网络)中使用的命令和控制基础设施中发挥着关键作用。 C2 服务器充当集中式通信中心,促进攻击者与受感染设备之间的通信。
常规的方法是利用威胁情报IOC探测恶意(C2)服务器,其过程是繁琐且复杂的,还需要专业的安全运营人员来逆向样本和测试 Yara 搜索规则,然后获取单独的IOC标记。这种逆向工程能力涉及大量的技术知识,导致大多数企业安全团队将会转向购买威胁情报的路上。但威胁情报价格美丽,企业往往不愿意承担。
0X02探测指标
由于攻击者采用的技术不断发展,探测恶意C2服务器可以通过多种方法,使用开源工具是其中一种低成本且容易实现的方法。安全运营人员和研究人员利用各种方法来识别这些恶意服务器。下面是一些检测C2服务器的重要且有效的方法:
网络流量分析:分析网络流量模式以查找可疑通信和异常情况。
基于签名的检测:利用与 C2 活动相关的已知签名或模式。
DNS 监控:监控 DNS 查询和响应以识别潜在的 C2 服务器连接。
行为分析:检查异常行为和沟通模式以检测 C2 活动。
恶意软件分析:分析恶意软件样本以识别 C2 服务器通信指标。
由于攻击者经常在恶意基础设施的多个事件中重复使用相同的软件和配置,因此,也可以使用单一模式来识别其他服务器。具体指标如下所示:
证书信息:TLS和SSL证书内的字段(硬编码值经常被重复使用)
HTTP响应中的数据:HTTP 响应中包含唯一值的自定义软件
服务器标头:部署自定义软件的参与者可能会忘记更改包含指示器的默认标头
云服务提供商:参与者可能会重复使用基础设施托管提供商......
利用证书信息探测恶意(C2)服务器
攻击者利用TLS证书来加密通信并在目标主机和恶意基础设施之间建立连接。由于多种原因导致,攻击者部署相同的证书。这会导致单个TLS证书中的值出现在许多其他服务器上,从而引入了可以签名和查询的简单模式。
例如:通过查看IP:91.109.176[.]4 ,在Censys Search中查询此 IP可确认端口8808上AsyncRAT Server的主题公用名 (CN) 值。AsyncRAT恶意软件家族包含开发人员留下的硬编码TLS证书。该证书包含AsyncRAT 服务器的硬编码主题公用名值。
通过扩展主机信息并找到存储AsyncRAT服务器值的确切字段services.tls.certificates.leaf_data.subject_dn,我们可以构建一个查询来查找其他服务器。在这种情况下,可以使用subject_dn或Issuer_dn字段,因为它们都包含相同的硬编码值。
通过在这些字段中搜索AsyncRAT服务器,我们可以找到另外110个具有相同证书值的服务器。
利用HTTP响应中的数据探测恶意(C2)服务器
恶意软件控制服务器开发人员通常会在网页数据中留下唯一的识别字符串。最常见的是,这些可以在 HTML 标题和 HTTP 正文中找到。值得注意的是,这些值是可以更改的,但许多参与者并没有做出这种努力,而是保持标识字符串完好无损。
例如:通过查看IP:89.223.66[.]195,我们可以确认HTML 标题中存在Mythic字符串。MythicC2框架经常被威胁行为者利用,并包含默认的 HTML 标题Mythic。
查询services.http.response.html_title中的Mythic字符串,我们总共可以找到 75 个服务器。其中许多服务器已被 Censys 平台标记为 C2 服务器。
利用服务器标头探测恶意(C2)服务器
攻击者和恶意软件开发人员经常在服务横幅中留下识别字符串。这些一般是作者故意留下的,以限制软件的滥用。需要注意的是,默认情况下可能不会显示服务横幅,可能需要打开详细的主机视图才能看到它们。
例如:通过查看IP:187.135.84[.]89 ,可以在端口2000上观察到BF7CAB464EFB的独特外观服务横幅,可以使用值BF7CAB464EFB搜索services.banner来识别总共 25 个服务器。