DEF CON 33 Recon Village - OSINT & Modern Recon Uncover Global VPN Infrastructure - Vladimir Tokarev
三句話摘要
從 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 只會顯示它真正能驗證的內容。

