
Junior Hacker借OpenSSH和Tailscale保留访问
一名法语攻击者入侵一家法国小型汽车企业,植入键盘记录器并窃取银行与邮箱凭证。Cato 指出,他在 Havoc C2 失联前先装上 OpenSSH 和 Tailscale,建立了不经 C2 的回连通道;因此仅下线 C2 不能算修复。建议排查持久化、反向隧道和异常远程访问工具。
一名讲法语的攻击者入侵了一家法国的小型汽车企业,植入了键盘记录器,并窃取了银行和电子邮件凭证。
本来只是寻常操作,直到接近结尾时他做了一步不同寻常的动作。
在他的 command-and-control 服务器失联之前,他在受害者机器上安装了 OpenSSH 和 Tailscale,建立了一条完全不经过 C2 的回连路径。当天之后,Havoc 服务器离线了,但他的访问并没有中断。18 天后,C2 恢复,他的 agents 自动重新连接,他继续操作。
Cato Networks 在攻击者留下 SSH 密钥和逐步操作手册的开放存储桶之后,按命令逐条记录了整场行动,共 33 天、339 条命令。该报告由 Cato CTRL 研究员 Vitaly Simonovich 于周二发布,少见地从操作员键盘视角还原了入侵,而不是只看取证残留。
研究人员的结论很直接:如果攻击者已经建立了另一扇门,把 C2 服务器下线并不等于修复。
这个行为者的 handle 是“Poisson”,并不是 APT。研究人员将其描述为一名初级操作者,作息看起来像学校时间表:CET 下午 3 点后活跃,中午有很长空档,全部运行在免费层工具上,包括 DuckDNS、Backblaze B2,以及一台位于柏林、便宜的 IONOS VPS。他的操作技巧很薄弱。
他五次泄露了自己的 home directory,把存储桶命名成自己的 handle,还在 keylogger 包里留下了一个测试文件,里面是他自己反复敲出的按键记录。他大约有一半尝试失败了。尽管如此,他还是入侵了四台机器。
攻击链
恶意程序几乎完全在内存中运行。一个带有沙箱规避延迟的 VBScript stager 解密了一个 PowerShell loader,后者再下载一个 .NET loader,在不把植入物落盘的情况下运行 Havoc 的 Demon agent。为了提权,他使用了 Start-Process -Verb RunAs,这并不是无声的 UAC bypass。它会弹出 Windows 许可提示并等待有人点击 Yes。在一台受害者机器上,他花了两天、试了十几次才成功。
之后是“钉牢”阶段:一个在每次登录时以最高权限运行的计划任务、注入到 Explorer.exe 的 shellcode,以及一个自制的 RustDesk 作为备用通道。凭证窃取器是一个 70 行的 Python keylogger,把按键记录写到本地文件,没有 beacon,也没有外传服务器。Poisson 只是登录进去,手动把文件拿走,并运行 powercfg 让机器不要睡眠,这样收集过程就不会暂停。
真正关键的一步
4 月 7 日,在一个持续五小时的夜间会话中,他安装了 OpenSSH Server 和 Tailscale,把受害者机器加入自己的私有 Tailscale 网络,并设置了基于密钥的 SSH 和一个 reverse tunnel。此后,他可以通过 Tailscale 的加密 mesh 访问这台机器,不需要 C2,也不需要暴露端口。
第二天,Havoc 基础设施下线了。Cato 没有说明原因,但这并不重要:Tailscale 路径位于另一张网络上,所以访问依然存在。
当 C2 于 4 月 26 日恢复时,agents 自动重新连接,无需再次入侵。在最后五天里,他又执行了 145 条命令,探查了智能卡和证书存储(这表明他在考虑基于证书的登录),从名为 Thales.zip 的文件中运行了两个没有解释的可执行文件,总共约 32 分钟,然后删除了 17 个文件,并在 5 月 1 日停止活动。
他的目标很窄。他没有使用 Mimikatz,没有横向移动,没有 ransomware,也没有迹象表明他带走了浏览过的文档,从税务记录到保险文件都没有。只有人们会输入的内容:银行登录、邮箱密码、政府门户。对小企业主来说,这就是直接的财务风险。
这些工具本身都不新,这正是重点。中国的 APT31 在 2024 和 2025 年使用 Tailscale,通过它悄悄地从俄罗斯 IT 公司外传流量;Scattered Spider 也依赖 Ngrok 和 Fleetdeck 这类合法远程访问工具;而 Poisson 使用的备用通道 RustDesk,也出现在近期的 Akira ransomware 入侵中。
这些二进制文件都是签名且合法的,因此如果检测只停留在坏文件,而不是坏行为,就会漏掉它们。Poisson 的新意在于,他提供了命令级证据,证明这种技巧在被清除后仍然有效,而且操作者显然还在学习阶段。
需要关注什么
Cato 的 hunting list 很具体:
当 Windows 工作站安装 OpenSSH Server 时发出告警,这种情况通常不合理。
监控不该运行 VPN 的机器上的 tailscale.exe。
查找指向外部主机的 ssh -R reverse tunnels。
检查 wscript.exe 是否在用户 staging folders 中运行 .vbs 文件。
标记以最高权限启动 script interpreters 的 scheduled tasks。
关注会让机器保持唤醒的 powercfg standby-timeout 更改。
阻断 DuckDNS。
更重要的是:当你发现一个 C2 时,要假设它并不是唯一入口,并继续追查其背后的安静持久化层。
Thales.zip 里到底是什么,以及那两个程序在机器上运行的 32 分钟里做了什么,这是 Cato 留下的未解问题。更重要的答案是:C2 从来都不是整个入侵,只是其中一种进入方式。把它杀掉,却让 OpenSSH、Tailscale、scheduled task 和 keylogger 继续运行,攻击者仍然有办法回来。
这正是 remediation 一直遗漏的部分。