第 3 课,共 4 课 · 10 分钟
记录和检测
哪些内容值得在 Mac 上记录,以及需要仔细查看的具体迹象(信标、DNS 异常、未签名的二进制文件)。
不阻止任何内容、不记录任何内容的防火墙只是防御的一半。检测是另一半:注意到机器上的某些东西是否以不合适的方式运行。在一台 Mac 上,这不需要安全操作中心,但确实需要足够了解正常连接的情况,以便注意到异常连接。
什么值得记录
在一台计算机上,有用的日志类别反映了较大的网络运营中心将跟踪的内容,只是按比例缩小了:哪些应用程序建立了哪些连接,到达了哪些目的地,以及何时进行;运行了哪些应用程序,以及它们是否由知名开发人员签名;以及对安全相关设置(例如防火墙或网闸)的更改。 macOS 本身保留了一个涵盖系统和应用程序事件的统一日志,可以在控制台应用程序中或使用 log show 查看,并且应用程序防火墙自己的决定也记录在那里。大多数人缺少的不是准确的日志记录,因为 macOS 已经记录了大量数据,而是具体的出站连接的可读视图,因为这是最有可能首先出现妥协的方向。
读取连接日志:正常的样子
只有当您粗略地了解给定应用程序的正常情况时,连接日志才有用:浏览器会频繁连接到许多不同的域是正常的;做同样事情的笔记应用程序则不然。对于任何连接,值得注意的三个细节是目的地(域或 IP 地址,最好是操作者)、时间(一次、偶尔或固定间隔)以及负责连接的应用程序。
指标:信标
信标是一种重复的、通常是精确定时的出站连接,软件使用它来检查远程服务器,有时还用于接收进一步的指令。 MITRE 的 ATT&CK 框架将这种应用程序层命令和控制流量模式描述为防御者通过“类似信标的间隔”专门寻找的东西:普通用户驱动的应用程序不会产生定期计时,该应用程序在您使用时连接并保持安静,否则不会产生。一个应用程序每隔几分钟就会悄悄地连接到同一个地址,全天候,无论您是否使用它,都是值得研究而不是忽视的模式。
指标:DNS异常
每次域名查找甚至在建立连接之前都会经过 DNS,这使得 DNS 流量成为查找异常情况的有用场所:解析异常长或随机生成的域名的应用程序、对您不认识的域的大量查找,或者数量和形状与正常浏览不匹配的 DNS 查询。 Cloudflare 对 DNS 隧道的解释描述了发生这种情况的原因之一:在 DNS 查询和响应中编码数据可用于将信息移入或移出网络,超越仅检查普通 Web 流量的控制。您不需要自己完全诊断该技术;注意到特定应用程序的 DNS 活动看起来异常,就足以成为仔细观察或寻求帮助的理由。
指标:未签名的二进制文件
每个合法的 Mac 应用程序都应该经过代码签名,并且大多数也经过公证(在本网站的 macOS 强化课程中介绍)。您可以从终端检查特定应用程序是否已签名:
codesign -dv --verbose=4 /Applications/SomeApp.app
Executable=/Applications/SomeApp.app/Contents/MacOS/SomeApp
Identifier=com.example.someapp
...根本没有签名的应用程序,或者其标识符与您对该应用程序的期望不匹配的应用程序,值得怀疑,特别是如果它也出现在进程列表中,使您无法解释网络连接。这是只读检查:它检查签名,不会运行或更改应用程序。
IDS/IPS,个人规模
入侵检测系统 (IDS) 监视流量并针对可疑模式发出警报;入侵防御系统(IPS)更进一步,自动阻止流量。这些的企业版本将流量与大量维护的已知攻击特征和行为模型进行比较。在一台 Mac 上,每个应用程序的防火墙会标记新的或不寻常的目的地,并让您决定作为同一想法的轻量级、个人版本的功能:在一台机器而不是整个网络的范围内进行检测,并可选择采取行动。
要点
- 登录一台 Mac 最有用的是应用程序的出站连接,因为 macOS 已经在其他地方记录了大多数系统和安全事件。
- 信标是一种重复的、通常定期定时的出站连接,与您是否主动使用负责的应用程序无关。
- 不寻常的 DNS 活动(长域名或随机域名、突然出现的不熟悉的查找)可能表明数据移入或移出,超出了正常的网络流量控制。
- `codesign -dv --verbose=4 <path>` 是一种只读方式,用于检查应用程序是否经过代码签名以及由谁进行代码签名。
- 标记异常目的地的个人、每个应用程序防火墙充当一台机器的轻量级 IDS:检测,并选择采取行动。
自我检测
1. 是什么让“信标”变得可疑而不仅仅是正常连接?
- 它使用 HTTPS
- 它只发生一次
- 这是一个重复的、经常定期的连接,与应用程序是否正在被积极使用无关 — 正确。
- 它来自浏览器
普通应用程序在使用时会断开连接;无论活动如何,定期、精确的签到是 MITRE ATT&CK 与命令和控制流量关联的模式。
2. 为什么异常 DNS 活动值得关注?
- DNS 始终加密,因此异常情况很少见
- 数据可以被编码到 DNS 查询和响应中,以将信息移过仅检查网络流量的控件 — 正确。
- DNS 查找在普通 Mac 上永远不会发生
- 它只对网络服务器重要,对个人电脑无关
DNS 隧道将数据隐藏在 DNS 流量内,具体是因为许多防御措施不会像 HTTP 流量那样仔细地检查 DNS。
3. `codesign -dv --verbose=4 <app path>` 是做什么的?
- 删除未签名的应用程序
- 显示应用程序的代码签名和标识符,而不更改它 — 正确。
- 阻止应用程序运行
- 为应用程序安装防火墙规则
它是一个只读检查命令,显示给定应用程序的签名信息,可用于检查其是否合法签名。
用 FireAI 动手做
在你自己的 Mac 上练习这节课的内容。
来源
- MITRE ATT&CK: Application Layer Protocol (T1071)
- Cloudflare Learning: What is DNS tunneling?
- Apple Platform Security: App code signing process
在你的 Mac 上实践
免费试用全部功能 17 天,无需绑定银行卡。