CS KAIROS · LEARNING LIBRARY

M04-11 · RPC 列舉

先記住一句:查到 RPC 服務的介面與端點,不等於能呼叫它的所有功能,更不等於取得管理權限。

10/26 晚間:一次學一個核心概念

1. RPC 是什麼?

RPC(Remote Procedure Call,遠端程序呼叫)讓程式把參數送給另一個程序,請對方執行指定功能,再接收結果。

像打電話到機關辦事:你要辦的業務是「程序」,提供業務的單位是「服務」,查號臺則告訴你該找哪個分機。知道分機號碼,不等於有權辦理所有業務。

用戶端提出呼叫,伺服器端處理要求;角色取決於這次互動,不是電腦永遠固定的身分。RPC 是一類通訊方式,不能把所有 RPC 都當成同一套協定。RFC 5531

2. 列舉在查什麼?

某些服務端點會動態分配,因此需要映射服務協助查找。RPC 列舉就是整理「有哪些服務或介面、哪個版本、使用什麼傳輸、登記在哪個端點」。

在授權的資產盤點、資訊揭露檢查與連線排錯中,這些線索很有用。但查詢之前仍須確認目標、來源與允許範圍;唯讀也可能產生日誌或負載。

介面描述可提供哪些操作,端點則是連到服務的位置。端點可能是網路連接埠,也可能是其他形式,不能一律當成 TCP 埠號。

3. 111 與 135 不是同一套查號臺

ONC RPC:

  • program number 識別服務。
  • version 識別服務協定版本。
  • procedure number 識別要呼叫的功能。
  • 在 TCP/UDP 上,rpcbind/portmapper 使用 111 埠協助查找,實際服務可能在其他端點。

這裡的 version 不是軟體產品版本,不能直接拿來判定特定漏洞。RFC 1833

Microsoft RPC:

常見的 TCP 情境先向 135 埠的 Endpoint Mapper 查詢,再連到對應服務端點,後者可能是動態埠。也有經由 SMB 具名管道傳輸的方式。

因此,「看到 135」不等於已列出全部 RPC 功能,也不能說每一次 RPC 呼叫都會經過 135。ONC RPC 的 111 與 Microsoft RPC 的 135,不能混為一談。Microsoft 服務與連接埠說明

4. 一個純合成例子

假設授權實驗室回傳這筆映射:

主機 Lab-A

服務編號 536870912

服務協定版本 1

傳輸 TCP

端點 35001

它只表示:查得的登記資料把這個服務版本對應到 Lab-A 的 TCP 35001。

接下來仍是不同問題:

  • 從目前網段能不能連到端點?
  • 服務是否接受這個身分?
  • 這個身分能不能執行特定功能?
  • 該功能是否真的存在可利用的弱點?

防火牆可能擋住端點,服務也可能拒絕驗證或授權。知道地址不能替代這些證據。本例沒有連線查詢任何實際目標。

網頁補充:四種不同的 RPC 證據

每一項分別驗證;前一項成立不會自動證明其他項。

  • 查到登記

    Lab-A / TCP 35001:映射資料。

  • 端點可連線

    目前來源到端點的連線證據。

  • 身分驗證成功

    服務接受本次使用的身分。

  • 獲准執行功能

    這個身分獲准執行特定操作。

下載 SVG 圖解

5. 防護與證據判讀

把「查到登記」「端點可連線」「身分驗證成功」「獲准執行功能」分開記錄。保留時間、來源網段、查詢身分條件與必要原始回應,不保存秘密或不必要個資。

查不到映射,也不一定代表服務不存在,可能是過濾、權限或設定限制;查得到映射,也不能直接宣稱可存取資料、有漏洞或有管理權。

防守時移除不需要的服務,限制可信來源,並同時檢查映射服務與實際端點的暴露。不應為了關閉埠號,就直接停用 Windows 核心 RPC 服務。

小檢核:

你查到某服務登記於 TCP 35001,但從目前網段連線失敗。你能確定什麼?哪些關於權限或漏洞的結論,現在還不能下?

用一兩句回答即可。

概念 Q&A

待補:收到相關問題後,會整理為匿名教學版。