週二打開資安時間軸,標題幾乎是同一句:有人把 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 的目前使用者 API 核對。只有回傳 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 預設設定檔裡。別人不必猜中密碼,只要把這串已經驗證通過的字元拿走,就能在權杖還有效時使用這個帳號。
官方能核對的說法在說明中心的 QR Code 登入說明裡:如果你核准了不是自己的登入,可以變更 Discord 密碼,從而一次登出全部裝置,包括你沒有親自核准的那些。改密碼的入口在「使用者設定 → 我的帳號 → 變更密碼」。帳戶開了雙重驗證時,改密碼之前會先要驗證碼。說明中心把「登出全部裝置」綁在改密碼上,沒有另給一個「只作廢權杖、密碼不動」的按鈕。
所以 Discord 這一側,改密碼處理的是門卡本身。Flare 的處置建議與此同向:把已經驗證通過的權杖視為已經外傳,立刻更換密碼,並打開雙重驗證,用來擋住下一次用密碼登入。雙重驗證擋的是登入框。它不能把已經發到別人聊天裡的那串舊字元從對方的紀錄裡刪掉。舊字串還在不在對方手裡,和它還能不能通過 Discord 的目前使用者 API,是兩件事。改完密碼之後,你能當場看的是:另一台已經打開的 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 用一台你本來就長期登入的手機。不要把權杖、登入碼或雲端密碼貼到聊天、工單或截圖裡。
- 打開 Discord 說明中心的改密碼說明,按「使用者設定 → 我的帳號 → 變更密碼」走完。旁邊另外開著的桌面或網頁用戶端應回到登入頁。這一步核的是官方寫的「登出全部裝置」,不是去本機儲存裡翻那串字元。翻出來的字串不要複製。
- 在 Windows 目前使用者的啟動資料夾裡看有沒有
SystemHelper.exe。路徑是檔案總管位址列裡的%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup。再看登錄檔目前使用者的 Run 機碼裡有沒有名為 SystemHelper 的值。有的話,先完成上一步的改密碼,再刪除這個啟動項目。沒有,只說明這份報告裡的兩個檔名不在;它不證明電腦上沒有別的程式。 - 在長期登入的 Telegram 裡打開「設定 → 裝置」。清單裡每一條都有應用程式名稱、大致地點和時間。結束不是你的那一條。若用戶端提示不能從剛連接的裝置結束更早的工作階段,換回舊手機,或按提示等待,不要反覆在新裝置上登入、想把舊工作階段擠掉。
- 打開「設定 → 隱私與安全性 → 兩步驟驗證」,確認新的登入需要雲端密碼。這一步不代替裝置清單。FAQ 把這兩處寫成先後兩步。只改密碼、不結束工作階段,舊的那一台還在清單裡。
- 用一句可丟棄的測試文字,例如
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,以及台灣常用的 LINE,先用測試連結看預覽會不會計一次閱讀,見把閱後即焚連結貼到 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 雲端聊天。