KeyFrame內部研究專用

DEF CON 33 Recon Village - OSINT & Modern Recon Uncover Global VPN Infrastructure - Vladimir Tokarev

DEFCONConference·12月31日週三·39 min英文

三句話摘要

從 OSINT 偵查到遠端 RCE:揭示全球 VPN 基礎設施漏洞鏈的完整攻擊路徑。 微小的程式碼設計缺陷(如未檢查的整數溢位)配合架構漏洞(如弱化的插件隔離和管道驗證),在被駭客系統地串聯起來時,能演變成從遠端完全破壞端點的終極攻擊鏈。 漏洞源頭追蹤:始於 ExpressVPN 驅動的棧分配邏輯(packet_length + 24 bytes),在無整數溢位檢查下導致緩衝區溢位。研究者未止於一個驅動,而是用 Yara 規則搜索簽名,發現這是 OpenVPN 各衍生版本的系統性問題。

重點整理

重點
  • 1

    漏洞源頭追蹤:始於 ExpressVPN 驅動的棧分配邏輯(packet_length + 24 bytes),在無整數溢位檢查下導致緩衝區溢位。研究者未止於一個驅動,而是用 Yara 規則搜索簽名,發現這是 OpenVPN 各衍生版本的系統性問題。

  • 2

    Windows 名管道架構剖析:OpenVPN 服務透過命名管道與使用者模式通信,客戶端傳送啟動資料、路由/DNS 變更指令,服務代表低權限進程執行。這裡存在棧溢位與名管道競態漏洞,結合插件機制可達成本地提權。

  • 3

    遠端攻擊向量構建:無法直接存取遠端名管道,需先透過 OSINT 和網路偵聽捕獲 NTLM v2 雜湊,再用雲端 GPU 叢集(18 台 RTX 4090)於 3 分鐘內破解 9 字元密碼,取得認證後經由 SMB/IPC$ 遠端載入惡意 OpenVPN 插件。

  • 4

    完整提權鏈:RCE(插件執行)→ LPE(棧溢位繞過棧餅乾)→ 核心任意寫入(搭配 0day)→ 修改目標進程的 PS_PROTECTION 欄位繞過 PPL,達成最高系統權限與反病毒軟體殺滅。

實用技巧與重點

乾貨
  • 工具與技術棧
  • Yara 規則:搜索惡意記憶體分配簽名
  • VirusTotal:50 個相同漏洞的驅動檔案定位
  • Responder(Kali Linux):NTLM v2 雜湊捕獲
  • Hashcat + RTX 3070(6,000 CUDA cores):本地密碼破解速率 2.8 億雜湊/秒
  • Vast AI:18 × RTX 4090 雲端租賃($85/小時),9 字元密碼破解時間 < 3 分鐘
  • net use:SMB 遠端連線與 IPC$ 共享掛載
  • 插件 DLL:OpenVPN_Plugin_v1 標準,匯出初始化與執行函式
  • OpenVPN 架構層級
  • 核心庫:openvpn-core(VPN 資料處理引擎)
  • Windows 驅動:tap-windows6(虛擬網卡,第 3 層協議棧)
  • 使用者空間服務:OpenVPN Service(windows service)、OpenVPN GUI
  • 通信協定:TCP/UDP,結構為 packet_length(16bit) + key_id + opcode + payload
  • 插件機制:DLL 動態載入,可攔截認證、稽核、ETW 事件發出
  • 漏洞細節
  • 棧溢位位置:OpenVPN Service 的 HandleMessage(),union message 結構無界限檢查
  • 棧保護:VS security cookie 機制,cookie 值源自 OS 時間/效能計數器,難以繞過(無記憶體讀原始值可用)
  • 名管道缺陷:競態條件(搶先建立同名管道)、連接方身份驗證不足、客戶端信任問題
  • Potato 類漏洞應用:透過 SMB 重放、NTLM 中繼達成提權
  • Windows 保護機制規則
  • PPL (Protected Process Light):進程分層簽名,高層進程能管理低層,低層無法逆向干擾
  • 目標:Win Defender、Antimalware 服務(高 PPL 簽名級別)
  • 繞過方式:搭配核心任意寫入,直接修改 PS_PROTECTION 欄位歸零
  • 具體數據
  • RTX 3070:6,000 CUDA cores,NTLM v2 效率 2,800 M hashes/sec
  • RTX 4090:15,360 CUDA cores(相比 3070 增長 2.5 倍)
  • 18 台 RTX 4090:總 CUDA cores 約 276,480(相比單 3070 增長 ~46 倍)
  • 密碼破解時間:9 字元密碼 < 3 分鐘(雲端配置);1 字元瞬間;12 字元耗時數年(個人筆電)

結論

結論

微小的程式碼設計缺陷(如未檢查的整數溢位)配合架構漏洞(如弱化的插件隔離和管道驗證),在被駭客系統地串聯起來時,能演變成從遠端完全破壞端點的終極攻擊鏈。

完整解析

詳細

這場演講的核心是一次系統性的安全研究過程,從隨意的朋友聊天開始,逐步擴展到全球 VPN 基礎設施的完整攻擊鏈發現。

演講者起初只是因為朋友使用 ExpressVPN 時遇到連線延遲,出於好奇開始逆向分析其 Windows 驅動程式。在研究虛擬網卡驅動 (tap-adapter) 的 miniport_send 函式時,他發現了一個看似微小但危險的漏洞:記憶體分配時對 packet_length 加上 24 位元組的固定開銷,卻未進行整數溢位檢查。當 packet_length 足夠大時,分配的記憶體會小於實際寫入的資料量,導致棧溢位。雖然現代 Windows 的棧保護機制(棧餅乾、ASLR、DEP 等)使得直接利用困難重重,但這激發了他的進一步調查。

幾天後,他在 ProtonVPN 驅動中發現了完全相同的漏洞。這提示他這可能不是個別案例,而是系統性問題。他決定編寫 Yara 規則來搜尋特定的記憶體分配模式,在 VirusTotal 上一口氣找到了 50 個匹配的驅動。深入分析發現,這些漏洞的源頭都指向 OpenVPN——一個龐大的開源項目,被 ExpressVPN、NordVPN、CyberGhost、ProtonVPN 等數十個商業 VPN 廠商採用。OpenVPN 在 GitHub 上擁有多個關鍵子倉庫:openvpn-core(核心引擎)、tap-windows6(Windows 驅動)、openvpn-gui(圖形介面)。漏洞位置追蹤到 tap-windows6 的數據包傳輸邏輯中。

接下來,演講者對 OpenVPN 在 Windows 上的完整架構進行了深度剖析。系統中有一個特權服務 (OpenVPN Service),透過命名管道 (\\.\pipe\OpenVPN\service) 與其他進程通信。普通使用者程式可以透過發送「啟動資料」(包含組態檔路徑、日誌檔位置等)到該管道,要求服務以提升權限執行新的 OpenVPN 進程。服務會驗證請求者是否屬於 OpenVPN 使用者群組,然後建立另一條管道進行後續通信。這套設計本身有多個漏洞:棧溢位(HandleMessage 的 union 結構邊界檢查不足)、名管道競態條件(攻擊者搶先建立同名管道)、身份驗證不足。由此,他構建了本地提權 (LPE) 漏洞:惡意 DLL 作為插件載入,透過管道傳送足夠的資料導致服務棧溢位崩潰,然後搶先建立相同名字的管道,誘騙下一個連線的使用者(可能是更高權限進程)連接到惡意管道,進而取得其權限。

但本地提權還不夠。要實現遠端攻擊,他必須克服 Windows 對遠端名管道存取的限制。系統預設禁止匿名使用者存取 IPC$,必須提供有效認證。他決定透過被動偵聽網路流量來竊取 NTLM v2 雜湊——這是 Windows 預設認證協定。使用 Responder 工具在網路上偵聽,可以攔截用戶端與服務器間的 NTLMv2 握手,獲得包含密碼雜湊的資料包。破解這個雜湊是下一步挑戰。他的個人筆電配備 RTX 3070(6,000 CUDA cores),每秒可破解 2.8 億個 NTLM v2 雜湊,但面對長密碼會耗時數年。於是他轉向雲端——租用 Vast AI 平台的機器,配置 18 台 RTX 4090 GPU,成本僅 $85/小時,總算力增長約 46 倍,最終成功在 3 分鐘內破解 9 字元密碼。

有了認證憑證後,他可以透過 SMB 協定遠端掛載 IPC$ 共享,存取遠端的 OpenVPN 服務名管道。完整的遠端程式碼執行 (RCE) 攻擊流程為:將惡意 OpenVPN 組態檔案和插件 DLL 放在攻擊者控制的 SMB 共享上,傳送構造的組態路徑到遠端目標的 OpenVPN 服務,指示其從共享載入插件。服務執行該插件時,攻擊者已掌握遠端程式碼執行權限。

在獲得 RCE 後,他進一步將前述本地提權邏輯融合到遠端插件中:RCE 插件執行→觸發棧溢位→服務崩潰→插件建立新管道並等待下一個連線(可能是更高權限的 OpenVPN GUI 或系統進程)→冒充並執行任意二進位檔。由此達成本地提權。再進一步,他利用一個 Windows 核心漏洞(0-day)獲得任意核心記憶體讀寫原始值。最終目標是繞過 PPL(Protected Process Light)保護——Windows 8 引入的進程分層簽名機制,高層簽名進程(如 Windows Defender)幾乎無法被低層進程殺死。但掌握核心寫入後,攻擊者可以直接修改目標進程的 PS_PROTECTION 欄位,清除其保護級別,進而終止反病毒軟體。

完整的攻擊鏈由此成型:OSINT 偵查→網路偵聽→NTLM 雜湊破解→遠端認證→RCE(透過 OpenVPN 插件)→LPE(棧溢位)→核心任意寫入(0-day)→PPL 繞過。這條鏈展示了從表面上看無害的協定設計和驅動漏洞,如何被組合成系統性的攻擊向量。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。
Risky Bulletin: Expired credit cards can be used for malicious transactions
5 min
Web2 安全英文PODCAST8月24日

Risky Bulletin: Expired credit cards can be used for malicious transactions

Risky Business

  • 支付安全的非對稱風險:Visa卡利用未加密的卡片資料與NFC通訊,攻擊者可藉由中間人技術竄改過期日期進行交易,但MasterCard、美運卡與Discover的防護更完善,顯示不同發卡機構的安全架構存在明顯差異。
  • 國家級駭客活動的連鎖延伸:北韓Lazarus集團在2月單一事件已累積100名受害者,涵蓋大學、警察部門、媒體與醫療機構,伊朗駭客則針對基礎建設如電力系統發動破壞性攻擊,反映地緣政治在網路戰爭中的升溫。
  • AI加速漏洞生態的雙面刃:AI工具催生近2萬份漏洞概念驗證代碼發布,但同時也導致大量失效漏洞代碼氾濫,增加資安團隊甄別真實威脅的難度;Mayer Protocol遭攻擊事件中,駭客用AI鏈接六個無關的小漏洞完成盜竊170萬美元的攻擊。
SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware
5 min
Web2 安全英文PODCAST8月24日

SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware

SANS Stormcast

  • Microsoft EntraID 的遠端代碼執行漏洞已由微軟修補,初期報告顯示已遭利用但後來更正為未遭利用。這反映 Microsoft 在雲端軟體安全上的透明度提升,對漏洞採用與內部軟體相同的 CVE 編號和公告流程。
  • PowerShell 指令碼可用於驗證 MFA 部署完整性,特別是找出未啟用 MFA 的遺漏帳號。同時可以分析 EntraID 登入日誌中的異常行為,如風險係數評估和地理位置檢測,幫助組織快速識別可疑登入。
  • GitLab 的 GraphQL 代碼注入漏洞允許未認證攻擊者刪除或修改儲存庫,潛在導致供應鏈攻擊。已有公開概念驗證 (PoC) 存在,使用內部部署 GitLab 的組織必須立即修補。