工程趣聞 2026 年 8 月 21 日

2026-08-21 — 從 Find My 逆向工程到面試木馬,再到 AliExpress 用 WebAudio 偷做裝置指紋

primary=https://zerotistic.blog/posts/find-my-people-linux/ primary=https://www.codedge.de/posts/how-to-compromise-your-system-with-a-job-interview primary=https://blog.laserphile.com/2026/08/aliexpress-webpage-keeping-multipoint.html

從 Linux 端重建 Apple Find My People 協定,一路追到朋友的即時定位

zerotistic.blog · 2026-08-20

原本的問題

研究者 Zerotistic 想知道,若朋友已經透過 iPhone 的 Find My 把位置分享給自己,能否不靠 Mac 或 iOS,直接在 Linux 上把對方目前座標解出來。Apple 從未公開這條 pipeline 的規格,帳號認證、金鑰交換、位置回報全部包在私有協定裡。

採用的方法

作者先用 GrandSlam(Apple 的 SRP 帳號認證協定)取得 ADSID,再向 IDS(Identity Delivery Service)送出 PKCS#10 CSR 換取裝置憑證,把 Linux 機器註冊成 alloy multiplex1 service。接著接上私有 APNs,用 SubscribeAndFetch 搭配 distributeKeys intent,誘使對方裝置把 P-224 私鑰透過 NGM(P-256 ECDH + HKDF-SHA256 + AES-CTR)送出來。

  • FindMy.py:處理 MobileMe delegate 交換與 anisette 產生
  • pypush(rewrite 前版本):IDS/APNs 實作與 NAC 生成
  • rustpush:service 定義與 NGM 解密邏輯參考

實際效果

拿到 P-224 私鑰後,呼叫 SearchParty 的 gateway.icloud.com/findmyservice/fetch,以 X9.63-SHA256 衍生金鑰解開 AES-GCM 回報,成功印出朋友的即時座標、精度與時間戳。這個 client 目前只能讀已同意分享的關係,無法發邀請或竄改分享設定。

原始來源:zerotistic.blog


一份「面試作業」如何在候選人電腦裝上完整後門

codedge.de · 2026-08-20

原本的問題

作者在 LinkedIn 被自稱 Bitway 的獵頭聯繫,開出待遇不錯的遠端兼職,卻跳過正常面試該有的「認識一下」通話,直接丟出一份 coding challenge。這個節奏本身就是社交工程的警訊,作業卻以合法 Bitbucket repo 形式出現,降低了戒心。

採用的方法

該 repo(bitbucket.org/bitway_network/coinvault)內含約 180 個 TypeScript 檔案,其中一支函式連到 api.jsonbin.io 抓遠端 payload,用 Function.constructor 動態執行,並把 Node 的 require 傳進去換取系統權限。作者解開這段被 obfuscator.io 混淆、長達 24,686 字元的 loader,回溯出 C2 位址與四個惡意模組。

  • scdata:具互動 shell、螢幕擷取、鍵鼠控制、VM 偵測的 RAT
  • ldata:竊取 Chrome/Edge/Brave 憑證與 28 種以上加密貨幣錢包
  • File grabber:掃描家目錄找 SSH key、AWS 憑證、.env
  • 剪貼簿監控:持續側錄並記錄成 npm-compiler.log

實際效果

作業一旦執行,等於在自己機器裝了全功能後門,SSH key、瀏覽器憑證與錢包資訊全數暴露,作者事後只能重灌系統、輪替所有金鑰與密碼。值得一提,作者曾用 Claude Code 做 AI 掃描,但當下沒能揪出藏在 180 個檔案裡的惡意邏輯。

原始來源:codedge.de


AliExpress 用 WebAudio 悄悄做指紋辨識,還會讓藍牙多點耳機斷音

blog.laserphile.com · 2026-08-20

原本的問題

作者用支援多點連線(multipoint)的藍牙耳機同時接手機與電腦,一開啟 AliExpress 分頁,手機端播放中的音樂就會中斷,關掉分頁又立刻恢復,頁面上卻看不到任何影音元素在播放。

採用的方法

作者先排除 <audio>/<video> 與 Media Session API,都找不到播放來源,於是包一層 AudioContext 建構子攔截呼叫,抓到頁面偷偷建立了兩個未被察覺的 AudioContext。堆疊回溯指向阿里的風控腳本 collina.jsfireyejs.js(屬於 AWSC,Alibaba Web Security Center),兩者都建了同一種訊號鏈:

Sawtooth Oscillator -> AnalyserNode -> ScriptProcessorNode -> GainNode(0) -> AudioContext.destination

用鋸齒波經過瀏覽器音訊處理鏈後量測特徵差異,藉此做裝置指紋;接到 destination 且 gain 設為零,使用者聽不到,卻仍讓系統判定該 AudioContext 為「使用中」。

實際效果

正是這個「靜音但仍在跑」的 AudioContext,讓作業系統藍牙堆疊誤判電腦端在播音,才把多點音訊路由從手機搶走。指紋蒐集範圍不只音訊,還涵蓋 canvas、WebGL、螢幕與硬體資訊,一併加密回傳。作者提供 uBlock Origin 規則封鎖兩支腳本:

||assets.aliexpress-media.com/g/AWSC/uab/*/collina.js$script,domain=aliexpress.com
||assets.aliexpress-media.com/g/AWSC/fireyejs/*/fireyejs.js$script,domain=aliexpress.com

原始來源:blog.laserphile.com


End of article
0
Would love your thoughts, please comment.x
()
x