Hacker News 中文摘要

RSS订阅

How I got over 300 Tor exit nodes removed

2026年10月2日(周五)09:35,333个受感染的Tor出口节点(exit nodes)发起协同行动,试图拦截SSH连接并尽可能收集未加密数据。整个Tor网络约有3000个出口中继(exit relays),约10%被他们控制。攻击者早在两个月前的8月已取得服务器访问权限,并静默部署了Ebury 1.8.3负载(针对Linux的OpenSSH后门和凭证窃取器)。

正文

10 月 2 日星期五上午 9:35,333 个受感染的 Tor 出口节点发起协同行动,拦截 SSH 连接并尽可能收集未加密数据。

做个对比,整个 Tor 网络约有 3000 个出口中继,因此大约 10% 落入了他们手中。

攻击者在两个月前,也就是 8 月,就已经拿下了这些服务器,并悄悄部署了 Ebury 1.8.3 负载(一个针对 Linux 的 OpenSSH 后门和凭证窃取程序)。

攻击手法

这次攻击似乎有两个主要目标:

  1. 尽可能收集未加密的邮件流量
  2. 拦截 SSH 连接(MITM)

通过封锁某些端口,他们让自己的出口节点只处理未加密的邮件流量。一位受害者(资深 Tor 运营者)写了一篇详细的分析:lists.torproject.org。

在这篇文章里,我重点关注第二种攻击,即 SSH 中间人攻击。如果你的电路恰好从这 333 个受感染出口节点之一出去,起初你不会察觉任何异常。加密的网页流量照常转发,但一旦你尝试通过 22 端口建立 SSH 连接,就会在不知情的情况下被重定向到 12 台 SSH 拦截服务器之一。

这正是周五上午发生在我身上的事。我的 SSH 连接被重定向,并看到了下面这个警告:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ED25519 key sent by the remote host is SHA256:6baCZCPsl+AfQuujUS81fMEE/C7UeJ+AwjrImqmDB3E. Please contact your system administrator.

但如果忽略警告继续登录,攻击者会做三件事:

  1. 窃取你的密码
  2. 打开一条到你服务器的连接,观察你输入的每条命令(中间人攻击)
  3. 再打开一条到你服务器的连接,用 Ebury 感染它

让他们被下架

周五晚上,我带着自己的发现联系了 Tor Project 的网络健康团队。他们确认这是一种新情况,并开始联系受影响的中继运营者。

“我们之前没见过这样的攻击。” ——Tor 网络健康团队

  1. 10 月 2 日(周五):拦截开始。
  2. 10 月 4 日(周日):Tor 网络健康团队向运营者发布公告,运营者开始关闭自己的出口节点。
  3. 10 月 4 日(周日):这些中继被标记为 BadExit,因此客户端不再使用它们来出口流量。
  4. 10 月 5 日(周一):攻击者重启了许多中继,但由于已被标记,它们只能作为中间中继使用。
  5. 10 月 5 日(周一):所有受感染服务器被关闭,一部分是运营者关的,一部分是攻击者自己关的。

在公告中,健康团队描述了其模式:

“攻击者似乎是先拿下基于 Linux 的主机,当这些机器运行非出口中继时,就编辑 torrc 文件,把它们变成出口节点,以便发动 SSH 攻击。” ——Tor 网络健康团队(公告中)

你可以看到这 333 个出口节点被关闭带来的影响。在 metrics.torproject.org 上,10 月 4 日出现了一个明显的下降,而且此后一直没有恢复。

图 4:Tor 出口节点数量下降

技术细节:我是如何找到它们的

这一部分我会详细说明自己如何找出所有受感染的出口节点。

我使用 exitmap 写了一个简单脚本,做了下面这些事:先固定一个出口节点,然后从我的服务器 A 向服务器 B 发起 SSH 连接。

  • 服务器 A 检查是否从服务器 B 收到了正确的 SSH 指纹。
  • 服务器 B 检查连接来自被固定的出口节点,还是来自 12 台 SSH 拦截服务器之一。

我对全部约 3000 个出口中继运行了这个脚本。大约十几个提供了伪造的指纹,超过 300 个没有进行拦截,但把连接重定向到了同样的那些拦截服务器。仅仅出现重定向,就足以确认该出口已被感染。

在进一步分析中,我用 sshesame 做了一个蜜罐。诱骗中间人登录蜜罐后,发现他们使用的是 paramiko(一个 Python SSH 库),也看到了他们如何尝试用 Perl 安装 Ebury:

echo "U=$(id -u) S=$(command -v sudo >/dev/null 2>&1 && (sudo -n true 2>/dev/null && echo nopass || echo maybe) || echo none)" sudo bash -c 'echo | base64 -d | perl'

先检查权限,再执行 base64 编码的命令。

未解之谜

最大的疑问仍然是:他们最初是怎么进入所有这些服务器的?一种理论认为,是托管公司本身被黑了(讨论见此处)。但这只是流传的一种说法,实际上没人真的知道。

另一个疑问是谁在幕后主导。使用 Ebury 以及广泛收集未加密数据,指向一个受经济利益驱动的犯罪团伙。不过这也只是猜测。

“考虑到 2009 年到 2023 年间感染 Ebury 的服务器数量(40 万台!),很可能还有其他被攻陷的 Tor 中继存在。” ——Marc-Etienne M. Léveillé(lists.torproject.org)

我还怀疑他们故意选在周五发起攻击,指望没人会为了响应而破坏周末休息。Tor 团队行动如此迅速,更值得称赞!

经验教训

教训还是老样子:额外的安全投入是值得的。禁用密码认证,改用 SSH 密钥。就我而言,我今天要去买几个硬件密钥了。 :)

“归根结底,中继/网桥必须被当作高度受攻击的生产机器来对待。” ——George(lists.torproject.org)

评论

讨论整体是一次技术复盘:多数人认同 SSH 密钥认证与双向认证能让用户免疫本次密码窃取,主要分歧在于攻击是否过于笨拙、以及托管商侧导致 VPS 沦陷的风险是否被低估;也有人附带疑问通过 Tor 使用 SSH 究竟有何合法用途,并提醒运行 Tor 中继可能遭遇关停或 IP 拉黑。

认为 SSH 密钥认证和双向认证能免疫此类中间人攻击

  • 基于密钥的认证不受影响,因为私钥不会离开客户端;双向认证(SSH 用户密钥或 HTTPS 客户端证书)会把认证绑定到连接,因此即使客户端接受了伪造的服务器密钥,中间人也无法用窃得的信息与真实服务器完成认证,最多只能观察到客户端输入的命令。(高赞)
  • 应当禁用密码认证、改用 SSH 密钥,有用户因此准备购买硬件密钥并询问可靠选项;若仍想保留密码,可配置 sshd 先验证客户端密钥再要求密码。(较多人) > 中间人能看到你输入的命令,却无法打开到真实服务器的连接去获知响应或执行操作,因为真实服务器不会接受客户端的密钥交换。(@cesarb)

认为攻击手法笨拙、噪音过大,不像老练团伙

  • SSH 在中间人攻击时会打印巨大的警告横幅,使行动立刻暴露,还让管理员能轻松追踪每个受感染节点并迅速全面关停;若攻击者只窃听邮件,行动本可维持更久。(较多人)
  • 有人同时质疑原文“出于财务动机的犯罪团伙”结论:收集未加密数据的也可能是对 Tor 出口节点感兴趣的其他势力,但老练势力通常谨慎、不会如此吵闹,因此更像新手闹事者。(少数人) > 这次针对 SSH 的攻击设计得很差:巨大的警告横幅让它立刻被发现,还让管理员能追踪每个受感染节点并迅速关停整个行动。(@jandrese)

认为托管商侧被攻陷的风险常被低估,VPS 并不安全

  • 被 Ebury 攻陷的托管商管理服务器可能导致其客户的 VPS、容器等一并运行 Ebury;近年来供应商侧攻陷客户实例正成趋势,许多人不明白提供商其实可以实时静默转储或篡改内存与磁盘。(少数人)
  • 有用户因此不再用 VPS 托管隐私相关服务,改用独立硬件。(少数人) > 另一种可能是托管商被攻陷,管理服务器失守后,客户的 VPS、容器等最终也运行了 Ebury。(@96718923545809)

担心 Tor 守卫节点同样遇袭且运行中继会带来 IP 拉黑等副作用

  • 有用户称自己的 40 个守卫节点被关停,怀疑守卫节点也遭到攻击,而 Tor 开发者并未公开积极回应;改为中间中继后问题消失。大家还说即使运行中间或守卫节点,也可能导致 IP 被列入黑名单。(少数人)
  • 该用户因家庭 IP 仅用于自建服务、其他设备走商业 VPN,所以未受直接影响。(少数人) > 我的守卫节点似乎遭到了攻击,开发者也没有公开回应,我只好把它换成中间中继;听说运行中继还会让 IP 进黑名单。(@privacyishuman)

有价值的补充

  • 推算下来整个 Tor 网络的出口节点仅约 3000 个,有评论者直呼少得离谱。(@jszymborski)
  • 用于扫描 Tor 出口节点的 exitmap 工具已有十年历史,作者看到它至今仍被用于发现恶意节点表示欣慰。(@phw)