跳到主要內容

RPC 遠端程序呼叫深度解析:透明通訊機制與內網橫向移動攻擊防禦指南

什麼是 RPC?透明通訊的核心機制

RPC(Remote Procedure Call,遠端程序呼叫)是一種讓程式像呼叫本地函式一樣執行遠端程序的通訊協定。開發者無需處理 Socket 建立、序列化或網路錯誤,底層 Stub 層會自動封裝請求並傳送至遠端主機。這種「透明性」大幅降低分散式系統的開發門檻,也是 Windows SMB、WMI、DCOM 等核心服務的底層基礎。

RPC 運作流程分為四個關鍵角色:Client Stub(封裝參數)、Transport Layer(傳輸資料)、Server Stub(解封參數)、Server Function(執行邏輯)。Windows 平台使用 MSRPC,預設透過 TCP Port 135 進行端點映射(Endpoint Mapper),再動態分配高埠進行實際通訊。

攻擊者如何利用 RPC 進行橫向移動?

RPC 是攻擊者橫向移動的首選工具之一。PsExec、WMI、DCOM 均依賴 MSRPC 執行遠端指令,攻擊者只需取得有效憑證,即可在不安裝後門的情況下執行任意程序。著名的 EternalBlue(MS17-010)漏洞即透過 SMB 的 RPC 層觸發緩衝區溢位,造成大規模勒索病毒災害。此外,DCSync 攻擊利用 Directory Replication Service(DRS)RPC 介面,讓攻擊者偽裝成網域控制器並竊取所有帳號雜湊值。

# 使用 impacket 偵測目標主機開放的 RPC 端點
python3 rpcdump.py @192.168.1.100

# DCSync 攻擊示範(需域管權限,僅供研究)
python3 secretsdump.py domain/admin:pass@192.168.1.1

💡 防禦重點整理

  • 封鎖 Port 135:限制對外 Endpoint Mapper 存取,阻止未授權的 RPC 端點探測。
  • 監控 WMI / DCOM 遠端呼叫:透過 Windows Event ID 4688、Sysmon Event ID 10 偵測異常執行。
  • 啟用 RPC 過濾器:使用 Windows RPC Filters(netsh rpc filter)限制特定 UUID 介面的存取。
  • 最小權限原則:限制網域帳號的 DS-Replication 權限,防止 DCSync 攻擊。

RPC 的透明性是雙面刃:它簡化了分散式開發,卻也為攻擊者提供了隱匿通道。掌握 RPC 的偵測與過濾技術,是企業內網縱深防禦不可或缺的一環。

留言