事故发生后的第一个小时
RoamSwitch 检测到严重威胁并执行遏制之后的第一个小时里,应该按什么顺序使用哪些功能,这里为您整理了一份指引。
1. 关于本页
RoamSwitch 检测到严重威胁时,会自动执行网络隔离(Air-Gap)、冻结进程等遏制措施。本页按环境整理了此后应该确认什么、留存什么、何时解除的顺序。各个界面和操作的详细说明,请参阅各自的手册。
本页说明 RoamSwitch 功能的使用方法,不涉及组织内部的联络、法律应对和恢复计划。
2. 任何环境,顺序都相同
遏制措施是有原因才触发的。在匆忙解除之前,请按下面的顺序进行。
- 确认。按时间顺序查看什么时候、检测到了什么、先后顺序如何。
- 留存。在解除或重启之前,先导出记录和证据。解除或重启之后,运行时状态的信息可能会丢失。
- 判断。判断这是自己有印象的操作,还是真正可疑的行为。
- 解除。确认安全之后,再解除遏制。
- 观察。解除之后,持续观察一段时间,看相同的检测是否再次出现。
从日志中调查时,也可以使用第 6 节的 PersonalSOC 和 AccessScope。
如果因 ARP 欺骗被隔离,也请阅读第 8 节。
如果在 Linux 桌面版上因勒索软件被隔离,也请阅读第 9 节。
隔离期间,该电脑无法打开此页面。在 Mac 上,“隔离原因与解除说明…”窗口会显示此页面的二维码;在 Linux 桌面版上,解除确认窗口会显示它。用连接到其他网络的手机扫描,即可阅读此页面。二维码中只包含此页面的公开地址。
3. Mac 版
- 打开菜单栏的 🛡️ 图标,确认显示的是"🔒 隔离中(全面)"还是"🔒 隔离中(降级模式)"。
- 打开"ℹ️ 隔离原因与解除说明…",阅读触发的原因。
- 打开 🛡️ → Mac 安全综合诊断 → "📈 安全活动日志…"。缩小时间范围,再按严重程度和类别筛选,按时间顺序查看刚才检测到了什么。点击图表中的柱形,可以只显示该时间段的事件。
- 使用 Pro 版时,可以把筛选后的结果导出为 CSV 留存。
- 如果事先已开启"🧾 进程执行记录…"(Pro),启动过的进程的历史也可用于调查。该功能默认关闭。
- 当勒索软件或 XProtect 的检测触发隔离时,会在隔离之前自动保存取证数据。内容包括正在运行的进程列表、网络连接和最近修改的文件列表,并为每个文件记录 SHA-256。保存位置是
~/Library/Application Support/RoamSwitch/incident-evidence/。Mac 上无法进行数据包捕获。 - 回想一下,是否有自己有印象的操作(例如启动了可疑的应用)。
- 在同一菜单中选择"🔓 解除 Air-Gap 隔离",并在确认对话框中选择"解除",通信会立即恢复。
如果遭遇勒索软件,请打开 🛡️ → 恶意软件防护 (XProtect & ClamAV) → “🗂 勒索软件恢复…”(Pro)。可从 RoamSwitch 定期创建的 APFS 本地快照中,把文件取出到其他位置(~/RoamSwitch-Recovered/<ID>/)。不会覆盖当前文件。取出文件需要“完全磁盘访问权限”。
4. Linux 桌面版
- 打开系统托盘的 🛡️ 图标。如果网络因严重威胁而被隔离,会显示"🚨 解除 Air-Gap 并恢复通信"。此时先不要点击。
- 在主窗口的 "Notifications" 中查看最近 7 天的通知历史,确认通知了什么。
- 在 "Incident Timeline"(实验性功能)中,按时间顺序查看从检测、响应到解除的过程。
- 在 "Security Activity Log" 中,组合时间范围、类别、严重程度和关键词进行筛选,调查刚才发生了什么。Incident Timeline 和 Notifications 的内容汇集在同一个视图中。
- 回想一下是否有自己有印象的操作,确认安全之后,点击托盘中的"🚨 解除 Air-Gap 并恢复通信"。
5. Linux Server Edition
Server Edition 通过命令行操作。 这里介绍的命令在 Linux 桌面版上同样可用(只有 sudo roamswitch server ack 是 Server Edition 专用的)。高可信度的隔离(金丝雀文件被篡改、类似勒索软件的大量改写、eBPF 的 Critical / Emergency / Alert 等),如果既没有确认应答(ack),也没有确认原因已消失,默认会在 3600 秒(1 小时)后转入降级(DEGRADED)模式。在降级模式下,除维护用 SSH 端口和允许的 IP 的管理路径之外,新的通信仍然被阻断,并且不会随时间推移而自动放开。
5.1 确认通知
如果设置了 Telegram、LINE 或 Webhook,通知已发送到那里。即使没有设置,最近一周的通知也会保存在本地。
roamswitch notifications
5.2 查看隔离状态
显示 eBPF 运行时防护当前的隔离状态,以及已检测到的事件历史。
roamswitch server ebpf
5.3 确认被冻结的进程
列出防护用 SIGSTOP 冻结的进程。在留存证据之前,不要恢复它们。
roamswitch frozen list
5.4 留存证据
当 eBPF 运行时防护以进程为单位执行遏制时,会自动生成证据保全包。内容是约 30 秒的数据包捕获,以及在已知 PID 时的 /proc/<pid> 快照(未安装 tshark 的环境中,仅跳过数据包捕获)。保存位置为 /var/lib/roamswitch/incident-evidence/<时间戳>-<ID>/。
隔离整台主机时,目前不会自动生成。在这种情况下,或者想保留遏制之前的状态时,请手动获取。
sudo roamswitch-incident-capture snapshot --pid <PID> --reason "first-response"
5.5 导出时间线和执行记录
将统一的事件时间线(实验性)导出为 JSON Lines。执行记录器可以按时间范围或进程搜索。
roamswitch timeline --export incident.jsonl
sudo roamswitch events search --since 2h
5.6 判断并解除
因误报而被冻结的进程,用下面的命令恢复(resume all 可恢复全部)。
roamswitch frozen resume <PID>
若要永久允许同一个误报,请加入允许列表。加上与可执行文件路径绑定的 --exe 后,伪装进程名也无法绕过。
sudo roamswitch server allowlist add <rule> <process> --exe <path>
对隔离作出确认应答。在 FULL 隔离期间,确认应答会保持严格的隔离(视为运维人员已接手,会停止向降级模式的转移和自动解除)。在降级模式期间,确认应答表示解除。
sudo roamswitch server ack
5.7 被锁在外面时
通过云服务商的 Web 管理控制台(VNC 或串行控制台)登录,解除紧急隔离。默认情况下,维护用 SSH 端口和管理来源 IP 的管理会话在隔离期间也会保留。
sudo roamswitch emergency-restore
5.8 事后整理
证据包不会自动删除。超过保留期限(默认 30 天)的旧证据包,请用下面的命令删除。
sudo roamswitch-incident-capture prune --keep-days 30
6. 从日志中调查(PersonalSOC 与 AccessScope)
RoamSwitch 附带了两个用于分析日志的独立工具:PersonalSOC 和 AccessScope。两者都是只读的,不会更改设置,也不会阻断通信。分析不使用网络,完全在本机内进行,因此在隔离期间也可以使用。
6.1 PersonalSOC:把本机的日志和检测汇总成一份报告
读取本机的认证日志(Mac 为 sudo 和 sshd,Linux 为 auth.log、auditd、nginx、apache 等)以及 RoamSwitch 尚未解决的检测,把风险参考值、时间线和 IOC(IP、域名、URL、哈希)汇总到一份报告中。
sudo personalsoc scan --report
6.2 AccessScope:从访问日志中查找攻击
从 Web 服务器和 SSH 等访问日志中找出暴力破解、Web Shell、攻击链、来自陌生来源的登录成功等,并附上证据行号和可信度(确定、可能性高、假设)。它不会直接断定已被入侵。
sudo accessscope scan --auto --since 24h --report report.md
sudo 运行。不加 sudo 时,读取不了的日志会显示为“无法读取”,报告会显示“没有读取到任何日志”。此时的“没有检测到”并不能证明安全。两个工具都不会自行提升权限。6.3 在哪个阶段使用
- 确认、判断:用上面两个工具,带着证据查看检测前后发生了什么。攻击是否仍在继续、是否有可能已经成功,是判断能否解除的依据。
- 观察:解除之后,反复用下面的命令运行 AccessScope,只会显示上次之后新出现的检测。
sudo accessscope scan --auto --since 24h --since-last --new-only
7. 结束之后
解除之后,请在时间线(Mac 上是“安全活动日志”)中持续观察一段时间,看相同的检测是否再次出现。导出的记录和证据包请妥善保管,不要删除。
更改密码或密钥、联系相关方等 RoamSwitch 之外的处置,不在本页的范围之内。
8. 因 ARP 欺骗被隔离时
在公共 Wi-Fi 等网络中,同一网络里的攻击者可能冒充路由器来窃听通信,这就是 ARP 欺骗。RoamSwitch 会通过网关(路由器)MAC 地址的突然变化等来检测。Mac 和 Linux 桌面版的做法相同。
- 何时隔离。在未登记的网络(保护级别为锁定)中,检测到与网关有关的异常时,会自动隔离。在已登记的地点(家、公司等),不会自动隔离,而是显示警告,只有在你选择“立即全部阻断”时才隔离。
- 解除前要确认的事。应用的确认窗口也会给出类似的提示。同一网络中的其他设备是否在伪造 ARP;网关的 MAC 地址是否与可信值一致(Linux 的确认窗口会显示当前值和可信值)。在公共 Wi-Fi 上,最好先切换到热点共享等其他网络再解除。
- 自动解除。不会仅凭时间解除。当网关的 MAC 地址连续 3 次、历时至少 60 秒都与可信值一致时,会自动解除并通知。如果一直无法确认,默认 1 小时后会进入大幅限制通信的状态(降级)。降级状态不会因时间而打开,需要手动解除。
- 手动解除。Mac 使用菜单中的“解除 Air-Gap 隔离”。Linux 桌面版使用托盘中的“解除 Air-Gap 并恢复通信”,或
sudo roamswitch emergency-restore。如果原因仍然存在就解除,通信会恢复并再次受到同样的影响,所以请先确认。 - 解除之后。观察一段时间,看同样的检测是否再次出现。如果再次出现,请不要继续使用该网络,改用其他网络。
9. 因勒索软件被隔离时(Linux 桌面版)
短时间内大量文件被改写时,RoamSwitch 会认为可能是勒索软件,冻结正在改写文件的进程(SIGSTOP),并切断网络(Air-Gap)。Air-Gap 确认窗口会打开,显示原因、进程和被改写的文件数。本节针对 Linux 桌面版。Mac 请阅读第 3 节。
- 确认。在确认窗口和通知历史中,查看哪个进程改写了哪些文件。被冻结的进程也可以用
roamswitch frozen list查看(5.3)。 - 记录。在解除或重启之前,按 5.4 和 5.5 的步骤保存证据和时间线。
- 判断。如果被冻结的进程是你认得的操作(例如备份或压缩),就是误报。用
sudo roamswitch frozen resume <PID>恢复。如果是真正的攻击,不要恢复,记录证据后结束该进程。 - 取回文件。被改写的文件可以从快照中取出。在界面中,请在侧边栏的“勒索软件恢复”标签页(Linux 1.11.21 及以后)选择标有“★ 推荐”的损害前快照,然后点击“取出文件”或“取出文件夹”。使用命令时,先用
sudo roamswitch-ransomware-rollback list查看列表,再用sudo roamswitch-ransomware-rollback restore-files <ID> <PATH>。对象是 btrfs 子卷或 LVM 逻辑卷(ext4 的主目录无法使用)。损害前的快照默认每 6 小时自动创建一次。检测时刻的快照也会自动创建,但其中包含已加密的文件,不能用于回到加密之前。不会覆盖当前文件。取出的文件默认放在<对象>/RoamSwitch-Recovered/<ID>/。整体回滚的restore会覆盖当前状态,是最后的手段(仅命令)。 - 解除。不会仅凭时间解除。只有在确认原因已经消失,或通过托盘中的“解除 Air-Gap 并恢复通信”或
sudo roamswitch emergency-restore手动解除时,才会解除。 - 观察。解除后,确认同样的检测是否再次出现。把取出的文件放回原位之前,先检查其内容。