← 返回事件分析列表

1. 事件概述

《勝利女神:妮姬》(Goddess of Victory: NIKKE)PC 版的官方啟動器,在啟動時會從發行商 Level Infinite(騰訊旗下全球發行品牌)的官方 CDN 下載並載入 JavaScript 檔案。獨立研究者 MotherSphere 的技術報告指出:其中 4 個檔案在 2026 年 9 月 27 日就被植入攻擊者程式碼,啟動器載入後會連向攻擊者伺服器,下載並執行一個遠端控制代理程式(agent)。玩家不需要點任何可疑連結、不需要下載非官方檔案——只要在受影響期間打開官方啟動器,就可能中招。

代理程式的能力不是單次竊密,而是讓攻擊者在啟動器開啟期間下達任意指令:執行程式、讀取任意檔案、擷取螢幕,並內建瀏覽器密碼與 Cookie 竊取、264 個已知憑證與設定檔路徑的掃描(包含 SSH 金鑰、雲端與開發者憑證、AI 工具憑證)、28 種加密貨幣錢包擴充功能的資料讀取,還能植入一個由 Chrome 載入的 DLL,在啟動器關閉後繼續常駐。

時間軸上有兩個階段:惡意載入器自 9 月 27 日起就躺在官方 CDN 上,但真正開始發送遠端控制程式的時間晚得多——目前最早的代理程式啟動紀錄是 10 月 23 日。也就是說,竄改潛伏了近四週,才進入實際散布階段;散布也不是每次啟動都觸發(研究者分析的機器約 19 次啟動中只有 3 次被投放),由攻擊者伺服器端決定。

官方已證實異常:Shift Up 與 Level Infinite 於 11 月 4 日凌晨(UTC+8 01:30)公告,確認 PC Launcher 腳本檔案出現可能遭第三方竄改的異常,已完成客戶端修復與更新,影響範圍仍在確認中。韓國同業反應強烈:Nexon 據韓國 MTN 報導已發布全公司資安公告,要求員工立即刪除該啟動器並向資安團隊回報。

受害規模目前未知。攻擊者如何取得 CDN 的寫入權限、是否波及 Level Infinite 其他遊戲,都是尚未有答案的問題。

2. 時間線

(除特別註明外為 GMT;UTC+8 為 GMT+8 小時。日期以研究者報告與官方公告為準。)

時間事件
2026-09-27 01:59 GMT攻擊者網域 insightjs.com 註冊(透過 PDR Ltd.,個資隱藏,名稱伺服器使用冰島 1984.is);03:00 取得第一張憑證。
2026-09-27 06:41–06:42 GMTLevel Infinite CDN(playerinfinite.com,Tencent COS)上的 4 個官方 JS 檔案在約一分鐘內被修改完成:共用函式庫目錄的 aegis-fix.min.js、vue-bucket.min.js,以及妮姬啟動器目錄的 images.7fec4c32.js、FeedList.feb647c9.js。植入的程式碼把外部網址藏在整數陣列裡編碼,載入 insightjs.com 的 l.js 後自行從頁面移除。
2026-10-05 07:09 GMT目前最早的 insightjs.com DNS 查詢紀錄(受害者 Pi-hole 日誌回報,未經研究者查證)。
2026-10-06analytics.insightjs.com 取得憑證( payload 發送用的子網域)。
2026-10-21 至 10-23攻擊者伺服器由 89.126.250.172 移到 89.127.233.127(同為冰島 1984 ehf);10-23 15:37 取得新一批憑證。
2026-10-23 16:40 GMT目前最早的代理程式啟動紀錄(受害者回報)——約在新憑證發出後一小時。10-24 起 Windows 與 Linux(Proton)都有啟動紀錄。
2026-10-28 15:46 GMTFeedList.feb647c9.js 在源站被換回乾淨版本;但部分 CDN 邊緣伺服器仍保留 9 月 30 日快取的竄改版,持續對外發送(見第 3 節)。
2026-10-29NIKKE 四週年大型版本上線(玩家啟動啟動器的高峰期,落在散布期間內)。
2026-11-01 至 11-03攻擊者至少上傳 5 個版本的 payload(檔案大小相同、內容不同),受害回報的啟動紀錄在這幾天明顯密集。
2026-11-03 16:11 GMT《妮姬》社群 Discord 出現第一則公開警告;研究者在 GitHub 發布技術報告(gist),玩家社群(中國 NGA 論壇等)先前已在拼湊時間線。
2026-11-03 17:04/17:13/17:21 GMTLevel Infinite 陸續將其餘 3 個竄改檔案換回乾淨版本。
2026-11-03 17:30 GMT攻擊者伺服器的 l.js 被換成一個看似無害的網站分析腳本(payload 本體當時仍可下載);18:31 起 89.127.233.127 不再回應;主機商 1984 ehf 於 23:26 回覆檢舉者稱已關閉該伺服器(回報,未經研究者查證)。
2026-11-03 17:55 GMT原本未被註冊的備用網域 insightjs.org 被第三方註冊,架設成「NIKKE PC Launcher 安全警告」頁面——攻擊程式碼設計了 .com 失敗就改連 .org 的備援,這個備援網域被防守方搶先註冊下來示警。
2026-11-03 22:26 GMT研究者複查,兩台 CDN 伺服器(43.175.144.148、43.175.145.181)仍在發送 FeedList 的竄改版,連加了防快取參數的請求也一樣。
2026-11-04 02:30(韓國時間,UTC+8 01:30)官方公告確認腳本檔案可能遭第三方竄改,表示已完成修復更新、正在確認影響範圍,後續處理方式將另行公告。
2026-11-04(韓國媒體 MTN 報導)Nexon 發布全公司資安公告要求刪除啟動器並回報;Krafton 表示由內部資安單位確認中、尚未採取額外措施;Netmarble 表示遵循既有資安政策、未發布額外通報。

3. 技術分析

3.1 第一階段:官方檔案裡的載入器

4 個被竄改的檔案都是啟動器啟動時自動載入的官方檔案。其中兩個位於共用函式庫目錄(comm/assets/lib),路徑裡沒有任何妮姬字樣:aegis-fix.min.js(sg-gpts.playerinfinite.com)與 vue-bucket.min.js(na-webassets.playerinfinite.com);另外兩個在妮姬啟動器目錄下:images.7fec4c32.js 與 FeedList.feb647c9.js。4 個檔案的修改時間戳擠在 2026-09-27 06:41:40 至 06:42:09 的約半分鐘內,顯示是同一批寫入。

植入的載入器把外部網址藏在整數陣列裡編碼,執行時動態插入一個 script 標籤,載入 https://insightjs.com/l.js(參數 f 分別為 aegis、vue、images、feedlist),載完立刻把標籤從頁面移除,減少痕跡;若 .com 連不上或 30 秒逾時,改連備用網域 insightjs.org。在 FeedList 裡,多出的 708 bytes 藏在檔案最末端、最終 export 陳述式之前——只比對檔案開頭或中段的完整性檢查會漏掉它。研究者有把乾淨版與竄改版的檔案大小與 ETag 逐一列表對照。

攻擊基礎設施準備得很早:insightjs.com 在檔案被竄改當天凌晨 01:59 才註冊(透過 PDR Ltd.、個資隱藏,名稱伺服器使用冰島 1984.is),03:00 取得第一張憑證;payload 發送用的 analytics.insightjs.com 憑證於 10 月 6 日取得;伺服器 IP 先是 89.126.250.172,約 10 月 21 日至 23 日間移到 89.127.233.127(同屬 1984 ehf)。但從 9 月 27 日到 10 月下旬,載入器只是「躺著」——最早的 insightjs.com DNS 查詢紀錄出現在 10 月 5 日(受害者 Pi-hole 日誌回報),最早的代理程式啟動紀錄則是 10 月 23 日 16:40,在新一批憑證發出後約一小時。

3.2 第二階段:用啟動器自己的功能下載木馬本體

l.js 本身不含木馬本體。它利用啟動器內建的 JS 橋接功能 Srv_DownloadFile——這是啟動器讓網頁前端下載檔案的正規介面——去抓 https://analytics.insightjs.com/comm/assets/insight.bundle(205,135 bytes;2026-11-03 16:22 取得的樣本 SHA-256 為 cc0ad05bfe85940a6067b3a72c182d3953339129206634141926d5d0b35973ec)。檔案被存進 Launcher\log\tinyget\ 資料夾,檔名偽裝成 .log 記錄檔(早期版本叫 k2f.lua),執行後隨即刪除,混在啟動器自己的下載記錄裡。

11 月 1 日至 3 日間,攻擊者至少換過 5 個版本的 bundle(以 ETag 區分,大小相同、內容不同),更早的版本也存在——所以單一雜湊值對不上,不代表沒有中招。

3.3 代理程式:伺服器下令才動手的遠端控制

bundle 本體是 LuaJIT 2.0 位元組碼,經 Prometheus 混淆器處理,內部建置名為 K2F_LUA_BUILD。它自己不含網路程式碼:所有與攻擊者的通訊都繞回 l.js、經啟動器的內嵌瀏覽器(tbs_browser.exe)送出,這也是為什麼受害者的上傳流量在系統紀錄裡掛在 tbs_browser.exe 名下。它在啟動器的共用通訊中心註冊了一個叫 k2f_chan 的頻道,每 1800 秒(±360 秒抖動,伺服器可調,曾見 600/900/1800)向伺服器報到一次。

伺服器可下達的指令包括:exec(執行任意程式或 shell 指令)、ls/cd/cat/download/file_chunk(瀏覽與下載任意檔案)、screens(擷取所有螢幕)、creds(解密啟動器自己存的遊戲登入帳密,存放在 psd.dat/last_user.dat——不是 Windows 憑證管理員,這點研究者特別更正)、browserscan(讀取 Chrome、Edge、Brave、Vivaldi、Opera、Firefox 儲存的密碼與 Cookie,把資料庫內容與解密金鑰一起送出,由伺服器端解密;設定裡的 collect_cookies 旗標為 false 也不代表 Cookie 沒被取走)、keyscan(掃描 264 個已知的憑證與設定檔路徑)、wallet_files(28 種加密貨幣錢包擴充功能,僅 Chrome 設定檔)。

keyscan 的清單顯示目標輪廓明顯偏向開發者與高價值帳戶:SSH 金鑰與 known_hosts、PuTTY/WinSCP/FileZilla 設定、GPG、AWS/Azure/GCP 等雲端憑證、GitHub/npm/Docker/Kubernetes/Terraform/Stripe 等開發與金流工具、shell 歷史紀錄、專案資料夾裡的 .env 檔,連 AI 工具的憑證(例如 ~/.claude/.credentials.json、Codex 的 auth.json)都在清單內。Windows 憑證管理員只針對開發工具相關條目(git:、gh:、npm:、docker:、aws:、azure:、vscode:)讀取。

代理程式平時不自己動手,但每次新啟動似乎都會自動跑一輪首次蒐集(第一批指令在啟動後數秒內下達;有一台機器在啟動 3 秒後就寫入了下節的常駐 DLL)。受害者回報的上傳量(以 Windows SRUM 紀錄歸在 tbs_browser.exe 名下)包括:啟動後數秒內約 947 KB、兩台機器在啟動後一小時內各約 0.9 MB 與 16.6 MB、以及一例一小時 146 MB。只要啟動器開著(包含縮小到系統匣),代理程式就持續待命——有一台的代理程式在 9 小時內報到了 22 次。投放是選擇性的:研究者分析的機器約 19 次啟動裡只有 3 次被送了 payload,有些啟動只有載入器、沒有本體,由伺服器端決定。

最麻煩的一點是:所有指令都不留日誌。受害者無從知道攻擊者在自己的機器上跑過什麼、拿走了什麼,處置時只能假設最壞情況。

3.4 常駐:藏進 Chrome 的 DLL

chrome_install 指令會在 %LOCALAPPDATA%\Google\Chrome\User Data\PlatformExperienceHelper 資料夾下、以亂數 64 字元十六進位命名的子資料夾裡放一個 platform_experience_helper.dll,並在 HKCU\Software\Classes\CLSID\{E77CC89B-7401-4C04-8CED-149DB35ADD04} 註冊,讓 Chrome 啟動時載入它。效果是:遊戲關了、啟動器關了,它還在跑;甚至不需要真的安裝 Chrome。每台受害機器的 DLL 都是個別建置、雜湊各不相同,雜湊不是可共用的入侵指標,要查的是路徑與註冊機碼。受害者回報,這個 DLL 會讀取使用者在網頁上輸入的密碼與錢包助記詞。

防毒偵測不樂觀:在一台受害機器上,Microsoft Defender Offline(病毒碼 1.463.110.0)沒有抓到這個 DLL——掃描乾淨不能證明清除完成。另一個清除陷阱:同一個 CLSID 若出現在 HKLM 下,那是 Windows 家長監護的正版 wpc.dll,不要動;要刪的是 HKCU 下的那把。

3.5 Linux 與 Steam Deck 也不是安全區

以 Proton 在 Linux 上跑啟動器的玩家同樣會中:第一例 Proton 代理程式啟動是 10 月 24 日 01:16。自動掃描在 Wine 前綴資料夾裡能找到的東西不多,但 Wine 會把 Linux 家目錄與根目錄映射成磁碟機(Z:),並把環境變數傳給程式——攻擊者用 exec/download 就能讀取該 Linux 使用者能讀的一切(~/.ssh、瀏覽器設定檔、shell 設定裡的 API 金鑰)。Windows 的 DLL 常駐手法在 Linux 不適用,但家目錄與環境變數裡的秘密應視為已暴露。

4. 歸因與證據限制

這份技術圖像主要來自單一獨立研究者 MotherSphere 的報告:他分析了一台受感染機器的完整痕跡(下載檔案、啟動器日誌與快取、反編譯的 payload、即時伺服器),payload 只做靜態分析、從未執行;其他受害者的資料來自報告留言區,無法查證的項目原文都標示為 reported(回報),本文沿用同一標示。研究者也主動更正自己的早期誤判(例如 onominan.tmp 與本事件無關、是早於攻擊存在的騰訊軟體檔案;PlatformExperienceHelper 資料夾本身是 Chrome 的正常元件)。

官方證實的範圍小於研究者的圖像:Shift Up/Level Infinite 的公告只確認「PC Launcher 腳本檔案出現可能遭第三方竄改的異常」並表示已修復、影響範圍確認中,沒有證實研究者描繪的完整攻擊鏈,也沒有公布受害規模。

目前沒有答案的問題:

  • 初始入侵管道:攻擊者如何取得 CDN 儲存桶或發布管線的寫入權限,未知。
  • 受害規模:有多少玩家被投放 payload、多少人資料實際外洩,未知;且因指令不留日誌,個別受害者也無從確認自己被拿走了什麼。
  • 波及範圍:4 個檔案中有 2 個位於共用函式庫目錄,其他 Level Infinite 遊戲是否也暴露在同一批檔案下——只有妮姬有紀錄可查,既不能證實也不能排除。
  • 手機版(iOS/Android):不在這次分析範圍內,沒有受影響的證據,也不要反過來宣稱已證實安全。
  • 歸因:沒有任何證據指向特定組織或國家,本文不做歸因。

事件收尾階段也有兩個單一來源項目:主機商 1984 ehf「已關閉伺服器」的說法來自檢舉者的轉述(研究者未獨立查證;當晚 DNS 仍指向該 IP);攻擊伺服器 89.127.233.127 於 11 月 3 日 18:31 起停止回應、l.js 於 17:30 被換成看似無害的分析腳本,則是研究者的即時觀察。另外,FeedList 在源站 10 月 28 日已換回乾淨版、但兩台邊緣伺服器(43.175.144.148、43.175.145.181)到 11 月 3 日 22:26 仍在發送竄改版,顯示發行商的快取清除在事件結束時仍未完全落實。

5. 防守建議

給玩家——先自查,再決定處置程度:

  • 自查一:打開 Launcher\intl_service\debug.log(這份日誌會跨次累積),搜尋 k2f_chan;出現 registered 字樣,代表代理程式在這台機器上跑過。
  • 自查二:Launcher\log\tinyget\ 的下載日誌裡若出現 insight.bundle 的下載網址,是第二階段下載發生的證據。
  • 自查三:搜尋 insightjs.com 的 DNS 或路由器查詢紀錄——查到代表載入器跑過、查到 analytics.insightjs.com 代表第二階段很可能發生。但沒查到不能排除感染(雙 DNS、IPv6 等因素會有漏網,研究者有註明)。
  • 在官方確認修復前,不要開啟 PC 啟動器;重新開啟前先刪掉快取資料夾 %APPDATA%\nikke_launcher\tbs_cache,裡面可能還留著被竄改的舊檔案。可以封鎖 insightjs.com、analytics.insightjs.com、insightjs.org 與 89.127.233.127/89.126.250.172——這只擋得住目前這台伺服器,擋不住攻擊者用 CDN 寫入權限換個新網域重來。

確認或高度懷疑中招時:

  • 關閉啟動器、必要時先斷網。清除常駐:刪除 HKCU 下的 CLSID 機碼 {E77CC89B-7401-4C04-8CED-149DB35ADD04}(值是空的也要刪),重新啟動 Windows(DLL 被載入時檔案是鎖定的),再刪除 PlatformExperienceHelper 底下「裝有該 DLL 的 64 字元十六進位子資料夾」——資料夾本身是 Chrome 的正常元件,不要整包刪掉。
  • 從一台乾淨的裝置改密碼:妮姬/Level Infinite 帳號第一優先,再來是電子郵件、Discord、銀行與所有瀏覽器裡存過密碼的服務,並開啟兩步驟驗證。
  • 光改密碼不夠:Cookie 被偷走就能直接沿用你的登入狀態,要把所有服務的「所有裝置/工作階段」一次登出。
  • 開發者憑證要當成已外洩處理:API Token 作廢重發、SSH 金鑰換新、雲端與金流工具憑證全面輪替。
  • 有加密貨幣錢包的:把資產移到全新錢包、使用全新助記詞,舊的不要再用。
  • 最保險的做法是重裝 Windows——攻擊者能在你的機器上執行任意指令,無法保證沒有其他後門。

給遊戲發行商與所有透過 CDN 發送程式的廠商:

  • 發布面就是攻擊面:CDN 儲存桶與發布管線的寫入權限要最小化、留稽核紀錄,並對已發布檔案做持續的完整性比對——這次竄改在官方檔案上躺了五週才被玩家先發現。
  • 修復要驗證到每一台邊緣伺服器:FeedList 在源站換乾淨後,邊緣快取仍發送竄改版至少六天;事件後應強制客戶端清除舊快取(下一次啟動器更新正是機會)。
  • 客戶端不要無條件信任下載來的腳本:啟動器載入遠端 JS 前應驗章或比對雜湊,橋接介面(如任意下載檔案的功能)的權限邊界也要收緊。

給企業:Nexon 的反應點出一個常被忽略的暴露面——員工私人電腦或公司設備上的遊戲啟動器,同樣是供應鏈風險的入口。盤點公司設備上的非公務軟體、讓 EDR 覆蓋這類程式的行為,比事後獵捕更實際。

6. 原始來源

← 返回事件分析列表