周二打开安全时间线,标题几乎是同一句:有人把 Discord 令牌和 Telegram 会话做成了同一家店。点进去,被反复引用的不是某个新的服务器漏洞编号,而是 Flare 研究员 Sukant Kumar 在 2026 年 9 月 24 日写出的 TWEAKOS。入口是 Pastebin 上的一段 Python。它暴露了一个写死的 Telegram 机器人令牌和两个管理员编号。顺着这枚机器人令牌,分析者又找到第二段更大的代码:收数据、记账、标价、用 Telegram Stars 成交,都挂在同一个机器人上。

上一篇写过改完密码和验证码之后,浏览器里的 AI 登录会话还会让谁进得去。那是网页登录完成之后留下的门卡。本文换两个聊天账号,问题更具体:Discord 的登录令牌已经从本机文件里被读走,Telegram 又多出一份不经过官方客户端的会话之后,你改掉的那两处密码,各自还留下什么。MyPassGen 的工具打开即用,不扫描磁盘,也不代替 Discord 或 Telegram 结束会话。

先做一件事

若你在不是 Telegram 官方客户端的窗口里输入过手机号、短信登录码或云密码,先在一台已经用了较久的设备上打开「设置 → 设备」,结束不认识的那一条。刚登录的新设备上,客户端会拒绝立刻结束更早的会话。Discord 这边按官方帮助中心的说法,修改密码会一次退出全部设备。不要把正在使用的令牌贴进聊天做试验。

这周在传的,是同一个机器人串起来的两段代码

报告把 TWEAKOS 写成两段一起设计的 Python,而不是「Discord 的服务器被攻破」。第一段面向 Windows:在用户权限下驻留,扫描 Discord 正式版、Discord 公开测试版(PTB),以及 Chrome 默认配置里的本地存储,找出像登录令牌的字符串,再向 Discord 的当前用户接口核对。只有返回 HTTP 200 的才会外传,消息里同时带上用户名标签和账号编号。Chrome 这条路径只搜本地存储里的 .log 和 .ldb。报告写明,这段代码不读 Chrome 保存的密码库、不读 Cookie,也不碰浏览器的加密密钥。

第二段是一个长期挂着的 Telegram 机器人。它用同一枚机器人令牌和同一组管理员编号,把受害者、在售账号、买家、订单和管理员操作记在一个 SQLite 文件 tweakos_data.db 里。商店把货分成 telegram 和 discord 两类,用 Stars(货币代码 XTR)收款。价格按上架天数每天降 5%,降幅最多 70%(最低到原价的三成),并且不低于 1 Star。Flare 把「偷取器和店面跑在同一个机器人进程里」写成他们看到的第一例。这是对这段代码的判断,不是受害者人数。

人数和进入方式,报告都留空。分析者没有确认程序怎么到的电脑上,也没有确认有多少人跑过。他们用公开出来的机器人令牌做了一次只读查询,当时没有拿到可用回复,关联频道也打不开。观察只说明:调查进行的那一刻,这枚暴露出来的令牌和频道用不了。它不说明以前没有人收到过消息,也不说明以后不会有人换一枚机器人。

两段代码还对不齐。机器人想从含有大写 DISCORD、以及俄文「令牌」标签的消息里解析 Discord 令牌;前一段发出去的标题只是首字母大写的 Discord。对大小写敏感的匹配因此失败,数据库里的 discord 令牌字段可以是空的。报告写明,这只影响后台能不能记账,不影响令牌已经发到管理员聊天里。看见「库里没有这一列」不能读成「令牌没被读走」。

Discord 令牌在本机文件里,改密码才会退出全部设备

Discord 的登录令牌是客户端拿来证明「这个人已经登录」的一串字符。它和你在登录框里输入的密码不是同一份。密码留在你的记忆或密码管理器里;令牌写在本机 Discord 的本地存储,以及登录过 Discord 网页的 Chrome 默认配置里。别人不必猜中密码,只要把这串已经校验通过的字符拿走,就能在令牌还有效时使用这个账号。

官方能核对的说法在帮助中心的二维码登录说明里:如果你批准了不是自己的登录,可以修改 Discord 密码,从而一次退出全部设备,包括你没有亲自批准的那些。改密码的入口在「用户设置 → 我的账号 → 更改密码」。账户开了多因素认证时,改密码之前会先要验证码。帮助中心把「退出全部设备」绑在改密码上,没有另给一个「只作废令牌、密码不动」的按钮。

所以 Discord 这一侧,改密码处理的是门卡本身。Flare 的处置建议与此同向:把已经校验通过的令牌视为已经外传,立刻更换密码,并打开多因素认证,用来挡住下一次拿密码登录。多因素认证挡的是登录框。它不能把已经发到别人聊天里的那串旧字符从对方的记录里删掉。旧字符串还在不在对方手里,和它还能不能通过 Discord 的当前用户接口,是两件事。改完密码之后,你能当场看的是:另一台已经打开的 Discord 是否回到登录页。

本机文件是第三条线。程序驻留也不要管理员权限。打包后的可执行文件会把自己复制到当前用户的启动文件夹,文件名是 SystemHelper.exe。若它以脚本方式运行,则会在 HKCU\Software\Microsoft\Windows\CurrentVersion\Run 下写一个名为 SystemHelper 的值,指向脚本路径。两条都只在当前用户下,没有提权。启动项还在,意味着下次登录仍可能再读一次新的令牌。先改密码,再看启动项,顺序不要反。

这和「Chrome 里保存的所有网站密码都被拖走」不是同一句话。报告把 Chrome 的范围限制在默认配置的本地存储,用来匹配 Discord 令牌的样子。密码库和 Cookie 不在这段代码的读取列表里。若你担心的是浏览器里保存的其他网站口令,那是另一类程序,不要用 TWEAKOS 这份清单去代替。

Telegram 那条路要你亲手输入登录码,云密码可以一行都没改

Telegram 这一侧不是从磁盘上拷一份已经存在的会话,而是当场做一次新登录。脚本会要手机号,通过 Telethon 发出登录码,再向你要这枚验证码。账号开了云密码(两步验证)时,它再要一次密码,用来把这次登录做完。做完之后,它调用接口看云密码的状态。报告引用了代码里的注释:如果原来没有云密码,它会生成一串随机字符并写进外传消息,但注明这串密码并没有在技术上被设置,会话已经被拿走。代码里没有更新密码的步骤。如果云密码本来就有,消息会写成「密码已存在,没有修改」。结果是多了一份会话,不是密码被换成攻击者知道的新值。

这份会话落在一个以手机号命名的 .session 文件里。文本和文件分两次发出:一条消息说明手机号和状态,另一条把文件当作文档发给写死的管理员。文件到了对方聊天里,对方就可以用 Telethon 接着用这个登录。你后来在官方客户端里把云密码改掉,并不会把已经发出去的那个文件从对方的聊天记录里收回来。

官方 FAQ 把两件事写成两步,而不是一步。在「手机被偷了怎么办」里,Telegram 先让你到「设置 → 隐私与安全」打开两步验证,这样只有手机号不够登录;然后另走「设置 → 设备」(或「隐私与安全 → 活跃会话」),结束旧设备上的会话。两步验证的说明写的是:打开之后,新的登录需要短信验证码和这枚密码。它没有写「改掉云密码,其他设备会自动下线」。丢失手机的清单把「结束会话」单独列出来,说明已有的那一台不会因为你设了一枚新密码就消失。

还有一个客户端自己弹出的限制。Telegram 的界面文案写明:出于安全原因,你不能从刚连上的设备结束更早的会话,请换一台更早登录的设备,或等待几个小时。若你是在可疑登录之后才重新装上 Telegram,新设备上的「结束其他会话」可能是灰的。这不是密码没改成功。要用一台你本来就长期登录的设备去结束,或等到客户端允许。FAQ 同时写过:Telegram 挡不住拿到你已解锁电脑的人,也挡不住能操作这台机器的人。黑窗口向你要登录码,就是这条边界里面的事。

云聊天还会把你事后写进对话框的字同步过去。FAQ 写明,同一号码可以同时登录很多设备,云聊天会在这些设备之间同步。那份还没被结束的会话,看得到你在普通聊天里发出的明文,包括你补发给同事的新密码。秘密聊天是另一类:它只存在于创建它的那台设备上,不进云端。普通群和私聊不是秘密聊天。把新口令打进 Telegram 云聊天,等于打给设备列表里的每一台。

商店在标价,调查当时那个机器人没有回应

第二段代码把偷来的账号当成库存。上架之后每天降价 5%,降幅停在 70%,价格不低于 1 Star。买家在同一个机器人里付款,成交后会收到一段包含账号类型、登录标识和密码或令牌的文字。管理员会收到商品编号和金额。商业设计写在代码里。它不证明调查进行时这家店还在营业。

Flare 写明三件没有做成的事。用暴露的机器人令牌做只读查询,没有拿到可用的机器人回复。关联频道打不开。代码里提到的 WindowsSecurityChecker.exe 没有随源码一起被找到,因此这个后续文件实际做什么仍未确认。界面和注释是俄文,报告据此判断操作环境偏俄语,并写明这不足以归到某一个具体的人或国家。Discord 邀请 discord.gg/tweakos 在分析时打开是无效邀请。

还有一条只在管理员手动触发时才出现的脚本:循环弹出「电脑已被锁定」一类的窗口,并留一个 Discord 邀请。脚本按受害者编号生成,发出后本地副本会被删掉。这是胁迫用的弹窗,不是加密你的磁盘。看见这个窗口,先断开网络、从一台干净设备去改 Discord 密码并结束 Telegram 会话,不要按窗口里的邀请继续对话。

把这些缺口和已经写明的能力放在一起,标题里的问题才站得住。商店可能已经联系不上,数据库里的 Discord 字段可能是空的,后续的 exe 也可能根本不在。令牌和 .session 文件若已经发到管理员聊天,这两样不会因为机器人后来失联就从聊天记录里蒸发。改密码和结束会话,处理的是「这串字符、这份会话还能不能登录」。它们不删除对方已经收到的文件。

对照表:改密码、开两步验证、结束会话各留下什么

用你能丢弃的测试账号来看,不要用正在值班的主账号。Discord 和 Telegram 的「改密码」不是同一个按钮。下表只写本文引用过的官方说明和 Flare 报告里已经写明的结果。

你做了什么 Discord 令牌 Telegram 会话
只改 Discord 密码 官方说明:退出全部设备,包括你没批准的登录 与 Telegram 无关
只为 Discord 打开多因素认证 挡住下一次用密码登录;已经外传的旧令牌要靠改密码退出 与 Telegram 无关
只改 Telegram 云密码 与 Discord 无关 新登录要这枚密码;FAQ 没有把已有设备写成会自动下线
在长期登录的设备上结束 Telegram 会话 与 Discord 无关 那一条授权失效;对方聊天里的文件还在,只是不应再能登录
在刚装好的新设备上点「结束其他会话」 与 Discord 无关 客户端可能拒绝,要求换更早的设备或等待几个小时
启动文件夹里仍有 SystemHelper.exe 下次登录仍可能再读一次新令牌 若再次在窗口里输入登录码,会再生成一份会话

最后一行和前面几行不要合成「我改过一次密码就结束了」。Discord 的退出发生在改密码的那一次。Telegram 的会话要在设备列表里单独结束。启动项若还在,下一次运行可以再要一次登录码。三处都看过,标题里的「还会留下什么」才有答案:对方聊天里的旧文本还在;还能不能登录,取决于你有没有让 Discord 退出全部设备,以及有没有在设备列表里结束那一条 Telegram 会话。

当场核对

下面这组步骤用你自己的账号页面和本机启动项,不需要运行任何来路不明的程序。Discord 若必须动到真实账号,先在另一台已经打开的客户端旁边操作,看它是否回到登录页。Telegram 用一台你本来就长期登录的手机。不要把令牌、登录码或云密码粘贴到聊天、工单或截图里。

  1. 打开 Discord 帮助中心的改密码说明,按「用户设置 → 我的账号 → 更改密码」走完。旁边另开着的桌面或网页客户端应回到登录页。这一步核的是官方写的「退出全部设备」,不是去本地存储里翻那串字符。翻出来的字符串不要复制。
  2. 在 Windows 当前用户的启动文件夹里看有没有 SystemHelper.exe。路径是资源管理器地址栏里的 %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup。再看注册表当前用户的 Run 键里有没有名为 SystemHelper 的值。有,就先完成上一步的改密码,再删除这个启动项。没有,只说明这份报告里的两个文件名不在;它不证明电脑上没有别的程序。
  3. 在长期登录的 Telegram 里打开「设置 → 设备」。列表里每一条都有应用名、大致地点和时间。结束不是你的那一条。若客户端提示不能从刚连接的设备结束更早的会话,换回旧手机,或按提示等待,不要反复在新设备上登录把旧会话挤掉。
  4. 打开「设置 → 隐私与安全 → 两步验证」,确认新的登录需要云密码。这一步不代替设备列表。FAQ 把这两处写成先后两步。只做密码、不结束会话,旧的那一台还在列表里。
  5. 用一句可丢弃的测试文本,例如 orange-lake-7,在普通云聊天里发给自己,再看设备列表里是否还有不认识的会话。若有,先结束它,再发测试句。云聊天会同步到尚未结束的设备。测试句发出去之后,从聊天里删掉,并记住:删除自己这一侧,不等于对方已经收到的副本消失。

做完前四步,你已经能分开回答标题。Discord 另一台客户端回到了登录页,说明这次改密码按官方说明退出了设备。Telegram 设备列表里不认识的那一条消失了,说明那份会话不再列为活跃。启动项里的 SystemHelper 若还在,下一次登录仍可能再读新的令牌。测试句不要换成真实口令。

新口令必须交给同事时怎么拆

Discord 和 Telegram 的新密码仍然是凭证。不要把它们写进云聊天、服务器频道或会进截图的工单。一对一、对方马上要用时,在本机做成阅后即焚。MyPassGen 的阅后即焚打开即用,无需注册。浏览器里用 AES-256-GCM 加密,明文上限 32 KB。阅读次数默认 1、上限 10。过期可选 1 小时、24 小时、7 天,或只按次数、不设 TTL。服务端只暂存密文。链接形态是 s.html?id=…#…,密钥在 # 后面,不随 HTTP 请求发给服务器。

通道要拆开。Discord 或工单里只留编号,以及「密钥走电话」这一句。电话或当面只说 # 后面那一截。没有两半就解不开。这是用法,不是创建页的默认拆分;页面给出的仍是一条完整链接,方便你自己核对。完整链接仍是凭证。会生成预览卡片的频道,先用测试链接看预览会不会计一次阅读,见把阅后即焚链接发到 Slack 或微信,预览会不会先烧掉一次。Telegram 云聊天同样会留下明文,而且会同步到设备列表里的每一台,所以不要把完整链接贴进尚未清理完会话的对话。

新密码本身用本站的密码生成器生成。随机模式 6–128 位,默认 16,低于 8 位会提示较弱。它不是 Discord 令牌,也不能代替你在 Discord 里点下的那一次「更改密码」。生成结果不作为业务数据上传。本站的密码检测只在本机做强度,并对照一份 Top 泄露列表,不是全网撞库;它看不出你的 Discord 令牌有没有被读走过。

超过 32 KB 的导出不要硬塞进焚链。走文件加密盒:浏览器里 AES-256-GCM 流式加密,单文件不超过 5 GB,输出 .lock 或 .enc,口令另发。本机先加密再发出去。把未加密的会话导出或令牌文本留给云聊天,和把登录码输进陌生窗口,是同一类前提:对方拿得到的,就是还能接着用的那一份。

做完「另一台 Discord 回到登录页」和「Telegram 设备列表里结束了不认识的会话」这两次核对,标题里的问题就有答案。改 Discord 密码,清的是还能登录的那枚令牌。只改 Telegram 云密码,清的是下一次登录要不要这枚密码。已经发出去的会话文件还在对方聊天里,直到你在设备列表里结束那一条,它才不应该再能登录。Flare 这份 9 月 24 日的报告把两件事写成了同一段程序。处置却要分两次做。

常见问题

我改了 Discord 密码,令牌是不是就没用了?

官方帮助中心写的是:修改密码会退出全部设备,包括你没有亲自批准的登录。另一台已经打开的客户端回到登录页,就是这次核对的结果。对方聊天记录里可能还留着旧字符串。旧字符串还在,和它还能不能登录,不是同一件事。启动文件夹里若仍有 SystemHelper.exe,下次登录仍可能再读一枚新令牌。

我改了 Telegram 云密码,那份会话是不是也没了?

没有自动没掉。FAQ 把「打开两步验证」和「在设备列表里结束会话」写成两步。报告里的代码在已有云密码时会注明密码没有被修改,它拿走的是新生成的会话文件。结束会话之后,那份文件还在对方那里,只是不应再能登录。刚装上的新设备可能暂时不允许你结束更早的会话。

窗口向我要手机号和登录码,这和官方 App 有什么不同?

官方客户端不会把登录码交给一段你从别处打开的脚本,也不会把以手机号命名的会话文件发给别人。报告里的 Telegram 路径依赖你亲手输入手机号、验证码,以及在开启时输入云密码。看见这种窗口就停。登录码不要转发。已经输入过的,按设备列表处理,而不是只改一枚密码。

这是不是说 Chrome 里保存的密码都被读走了?

不是这份报告里的结论。Flare 写明 Chrome 路径只搜默认配置本地存储中的 Discord 令牌样式,不读密码库、Cookie 和浏览器加密密钥。浏览器里另存的网站口令要另外核对。不要把「本地存储里可能有 Discord 令牌」读成「所有已保存密码都已明文外泄」。

创建焚链要注册吗?链接删错了有没有客服能找回?

不需要注册。创建和阅读都对访客公开。密文按次数或过期焚毁之后,没有服务端明文备份,也没有客服邮箱可以找回。发错通道就另设一枚新密码,另建一条链接。不要把完整的 s.html?id=…#… 贴进还没结束会话的 Telegram 云聊天。