KeyFrame內部研究專用

Black Hat USA 2002 - Syscall Proxying

YouTube Creator·10月3日週四·67 min英文

三句話摘要

CISOL Proxin 系統:透過系統呼叫代理,讓程序在不修改源代碼的情況下實現遠端執行與權限隔離。 Proxin 透過最小化伺服器實現,在系統呼叫層級提供透明遠端執行與權限隔離,使渗透測試工具擁有交互式環境適應能力,大幅簡化跨環境攻擊的複雜度。 系統呼叫層級的代理原理:Unix 系統約有 300 個系統呼叫(如 OpenBSD),Windows 超過 1000 個。Proxin 在用戶進程與內核之間插入客戶端-伺服器層,客戶端負責將參數編排成伺服器期望的格式,伺服器則直接對應作業系統呼叫約定調用系統呼叫,完全不需中間通用格式的轉換,相比 RPC 更高效。

重點整理

重點
  • 1

    系統呼叫層級的代理原理:Unix 系統約有 300 個系統呼叫(如 OpenBSD),Windows 超過 1000 個。Proxin 在用戶進程與內核之間插入客戶端-伺服器層,客戶端負責將參數編排成伺服器期望的格式,伺服器則直接對應作業系統呼叫約定調用系統呼叫,完全不需中間通用格式的轉換,相比 RPC 更高效。

  • 2

    胖客戶端、瘦伺服器設計:為了最小化伺服器體積,所有平台相關邏輯移到客戶端。請求必須精確模擬進程堆疊中呼叫系統呼叫前的內存狀態,指標則相對於伺服器發送的堆疊指標計算,使伺服器只需簡單複製請求到堆疊、調用系統呼叫、返回結果。

  • 3

    渗透測試中的實際優勢:入侵後通常遇到環境不一致問題(目標系統版本、架構與攻擊工具不符),傳統 shellcode 必須為多種配置預編譯。Proxin 伺服器部署後,所有工具立即可用且無需修改,支援交互式操作應對動態環境(如 chroot 監獄、權限降低),避免預製 shellcode 的僵化。

  • 4

    跨作業系統適配:Linux 伺服器直接利用軟體中斷呼叫系統呼叫,Windows 伺服器動態載入 DLL 並取得函式位址,允許客戶端遠端調用任何已載入的函式,提供了統一的遠端程式呼叫框架。

實用技巧與重點

乾貨
  • 系統呼叫數量與機制
  • OpenBSD 系統呼叫數:約 300 個
  • Windows 系統呼叫數:超過 1000 個(封裝了 132 個 API 呼叫)
  • Linux 軟體中斷號:INT 0x80
  • Open 系統呼叫編號(Linux):3
  • 實現規格
  • Linux Proxin 伺服器程式碼:約 100 位元組
  • 客戶端-伺服器通訊初始化:伺服器發送堆疊指標 (ESP) 予客戶端,客戶端據此計算相對指標
  • 請求格式:精確複製進程堆疊狀態、整數參數按值傳遞、指標參數重定位至請求緩衝區內部
  • 具體範例操作
  • Open 呼叫參數:檔案名稱(指標)、開啟標誌(整數)、模式(整數)
  • Read 呼叫:客戶端傳遞輸出緩衝區,伺服器呼叫讀取後填充該緩衝區,連同回應傳回客戶端
  • Get UID、Get EUID、Get Current Working Directory 等身份與環境查詢呼叫
  • 應用場景
  • 代碼注入漏洞利用:緩衝區溢位、格式化字串
  • Chroot 監獄逃逸:在遠端交互環境中調用 setuid 等系統呼叫
  • 權限提升:利用受害者進程權限存取本地受限資源

結論

結論

Proxin 透過最小化伺服器實現,在系統呼叫層級提供透明遠端執行與權限隔離,使渗透測試工具擁有交互式環境適應能力,大幅簡化跨環境攻擊的複雜度。

完整解析

詳細

系統呼叫是進程與作業系統內核溝通的最底層機制。每個進程存取磁碟、螢幕、網路等資源都透過系統呼叫完成。Unix 與 Windows 系統的呼叫設計截然不同:Unix 系統呼叫數量受控(OpenBSD 約 300 個),各呼叫與 libc 包裝器一一對應;Windows 則超過 1000 個,且 32-bit API 多為非公開介面,不受微軟支援。傳統遠端執行通常透過 RPC(遠端程序呼叫)實現,但 RPC 需要將參數轉換為通用格式再傳輸,當客戶端與伺服器在同一平台時這種通用性轉換就顯得多餘。

Proxin 的創新之處在於採用「胖客戶端、瘦伺服器」設計。客戶端負責理解平台特性,將系統呼叫參數直接編排成伺服器期望的格式,無須經過通用中間層。伺服器則極其簡潔:接收客戶端請求後,直接將整個請求複製到進程堆疊,調用相應系統呼叫,回傳結果。Linux 伺服器實現僅需 100 位元組代碼。Windows 伺服器稍複雜因其 DLL 呼叫約定,但仍可動態載入函式庫、取得函式位址、調用任意已載入函式。

實現的關鍵細節在於指標處理。客戶端與伺服器各自執行於不同進程空間,客戶端傳遞的記憶體位址在伺服器端無效。解決方案是客戶端將指標指向的資料複製進請求緩衝區,並建立相對於伺服器堆疊指標的虛擬指標。伺服器連接時會發送自身堆疊指標,客戶端據此建立相對位址計算。以 open 呼叫為例,檔案名稱作為字串指標會被複製至請求內部,指標則調整為相對位址。

在渗透測試應用上,Proxin 解決了傳統 shellcode 面臨的難題。攻擊者得到目標系統 shell 後,往往發現已有工具與目標系統不相容(版本差異、架構不同、缺少編譯器)。傳統做法需準備多套針對不同環境的 shellcode,甚至針對特定配置(需要提升權限、逃逸 chroot、改變路由等)分別編譯。部署 Proxin 伺服器後,所有工具立即可用無需修改,攻擊者可透過遠端客戶端交互式調用任何系統呼叫,動態應對環境限制。演講示範中展示了在 chroot 監獄與降低權限環境中,透過遠端調用 setuid、chroot 等系統呼叫成功逃逸。

關鍵時刻

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 的組織必須立即修補。