C2 是攻击者在入侵之后持续操控终端所用的通信。本文讲解它的原理,以及察觉与防范的方法(不涉及攻击工具与运用方式)。
在攻击流程中的位置
C2 不是「入侵本身」,而是在其之后到来的。
这里重要的是,②的外向通信正是检测与阻断的机会。即便要 100% 防住入侵很难,也仍有在外向通信阶段察觉并拦下的余地。
C2、后门与僵尸网络的区别
这几个词常被混用。按角色区分如下。
| 术语 | 含义 | 与 C2 的关系 |
|---|---|---|
| C2(C&C) | 攻击者与被入侵终端之间的远程操控通道,以及发送命令的服务器 | — |
| 后门 | 留在终端上、绕过正常认证的入口 | 常常与 C2 通信以接收命令 |
| 僵尸网络 | 大量被劫持的终端,同时接收来自同一 C2 的命令 | C2 从一处操控大量终端 |
| RCE | 能远程执行任意代码的漏洞 | 实现 C2 之前那次入侵的手段之一 |
| 信标 | 终端以固定间隔发给 C2 的简短消息 | C2 仍在活动的迹象 |
为什么它能混入正常通信
整理攻击者手法的 MITRE ATT&CK 把 C2 列为独立的阶段(TA0011):攻击者试图与被入侵的系统通信以操控它们。其中列出的典型手法,是利用网页、DNS 等日常协议,混入现有通信,以躲避检测和过滤。
所以,只封锁特定的端口号是不够的。ATT&CK 列出的缓解措施是过滤网络通信和网络入侵防御。实务上有两种思路有效:
- 按目的地限制:用允许清单决定服务器可以访问哪些目的地,封锁其他外向通信
- 按形态察觉:不看内容,而看目的地、间隔、数据量以及是哪个程序在通信
如何察觉(检测的线索)
| 线索 | 看什么 |
|---|---|
| 信标(定期通信) | 以固定间隔发往同一目的地的规律性外向通信 |
| 陌生的目的地 | 可疑的域名/IP(与已知恶意目的地=IOC 比对) |
| 可疑的 DNS | 向陌生域名的查询·异常增多的 DNS |
| 意料之外的路径 | 在意料之外的端口/协议上的外向通信 |
如何防御
从源头上不让其入侵(基础措施)
限制外向通信(egress)
监控 DNS 与通信日志
比对并拦截已知的恶意目的地
真实案例:外向通信成为线索的情形
在本站报道的 Codecov 入侵事件(2021 年)中,在 CI 中运行的分发脚本被篡改,据报道约两个月间,机密信息从客户的 CI 环境被发送到外部服务器。被篡改的代码不是客户自己的代码,所以审查自己的代码也发现不了。
事后可以核查的线索,是从 CI 发往陌生目的地的外向通信。如果 CI 的外向通信被限制为必要的目的地、其他通信都留有记录,就有余地挡下发送或更早察觉。无论是 C2 还是数据窃取,入侵之后的攻击要达成目的,都必须与外部通信。
如何在自己的环境中检查
- 列出当前的外向连接:在 Windows 上,
Get-NetTCPConnection -State Established会显示每个目的地及其OwningProcess(正在通信的程序的 ID),用Get-Process -Id <ID>可以查到程序名。在 Linux 上,ss -tunp起同样的作用 - 复查云服务的出站规则:例如 AWS 的默认安全组允许所有出站通信。写下服务器真正需要访问的目的地(操作系统更新、支付或邮件 API 等),限制其余的
- 检查 DNS 查询历史:在路由器或 DNS 服务的日志中,查找以固定间隔反复出现的陌生域名查询
- 按目的地统计:把代理或防火墙日志按目的地汇总,查找一整天以相同间隔发送少量数据的通信。找到后,确认目的地的所有者,判断它是否是正常的更新检查
- 与公开的目的地比对:在日志中搜索监管机构或厂商公布的 C2 目的地(IOC)
本站的视角:外向通信也要防护,确认没有 C2 也是调查的一部分
C2 这一思路带来的最大启示是:防守不只是防止入侵。即便完全防止入侵很难,也仍有限制外向通信、察觉可疑回连的余地。本站在把「让其无法入侵的设计(打补丁·最小权限·MFA)」作为首选的同时,建议把出口控制与通信监控作为最后一层防御一并具备。此外,在怀疑发生入侵时的调查中,确认不存在常驻的 C2(后门或非法的定期通信)是关键的一环。要得出「影响有限」的结论,对外向通信的确认不可或缺。
出处(一手资料)
- MITRE ATT&CK,“Command and Control (TA0011)” — attack.mitre.org(C2 阶段的定义)
- MITRE ATT&CK,“Application Layer Protocol (T1071)” — attack.mitre.org(混入现有通信,以及通信过滤等缓解措施)
- AWS,“Default security groups for your VPCs” — docs.aws.amazon.com(默认的出站规则)
- Codecov 的出处列在案例文章中
接下来阅读
- 案例:Codecov 入侵事件(2021 年) / Capital One 数据泄露(2019 年)
- 术语:EDR 是什么 / 后门是什么(与 C2 通信的据点) / RCE 是什么 / IOC(侵害指标)是什么 / IOA(攻击指标)是什么 / 勒索软件是什么 / 什么是恶意软件