コンテンツにスキップ

Impacket rpcdump.py

カテゴリ目次へ戻る / コマンド全体目次へ戻る

Endpoint Mapper に問い合わせ、対象ホストが公開する RPC インターフェースと接続情報を一覧にします。

項目内容
実装examples/rpcdump.py
カテゴリSMB / MSRPC / NTLM
規模208 行
配布setup.py の scripts=examples/*.py によりスクリプトとしてインストール

オプションの最新の定義は python examples/rpcdump.py -h で確認できます。

引数説明
target[[domain/]username[:password]@]
-debugTurn DEBUG output ON
-tsAdds timestamp to every logging output
-target-ipIP Address of the target machine. If ommited it will use whatever was specified as target. This is useful when target is the NetBIOS name and you cannot resolve it
-portDestination port to connect to RPC Endpoint Mapper(選択肢: 135, 139, 443, 445, 593、既定値: 135)
-hashesNTLM hashes, format is LMHASH:NTHASH

port 135/139/445/443 などから transport を構築し、EPM interface へ bind、hept_lookup をページングして tower を解析します。UUID を既知名へ変換し、binding ごとに group 化して表示します。

Endpoint Mapper は host 上の RPC interface と binding endpoint の登録情報を 保持します。rpcdump は EPM interface へ接続し、ept_lookup を繰り返して tower と annotation を取得します。port scan とは異なり、RPC runtime が公開 している interface UUID/version と protocol sequence を問い合わせます。

tower は複数 floor からなり、interface UUID、transfer syntax、TCP port、 named pipe、host/address 等を表します。epm helper が floor を string binding へ変換し、既知 UUID database と照合して human-readable な protocol 名を補います。 同じ interface が複数 endpoint/binding で登録されることもあります。

EPM response は page/context handle を使うため、最初の response だけでは全件に なりません。RPC over HTTP、SMB transport、TCP では接続失敗の意味も違います。 annotation が空、UUID が未知、tower floor が未対応でも raw UUID/version/ binding を失わず表示することが解析 tool として重要です。

シンボル位置責務を追う入口
RPCDump36__init__()、dump()
モジュール使用する主な名前
impacket.httpAUTH_NTLM
impacket.exampleslogger
impacket.examples.utilsparse_target
impacketuuid, version
impacket.dcerpc.v5epm, transport
impacket.dcerpc.v5.rpchRPC_PROXY_CONN_A1_0X6BA_ERR, RPC_PROXY_CONN_A1_404_ERR, RPC_PROXY_INVALID_RPC_PORT_ERR, RPC_PROXY_RPC_OUT_DATA_404_ERR
  • 照会や認証の試行が中心です。実行回数が多いと監査ログやアカウントロック、対象の負荷に影響します。
  • 失敗時は、名前解決、接続、認証、サービスの状態、権限のどこで止まったかを、プロトコルのステータスから切り分けます。

dcerpc.v5.epm / transport / rpch、impacket.uuid、HTTP NTLM auth に依存します。RPCDump.dump() が transport 選択と列挙を担当し、RPC over HTTP 固有 error を診断可能なまま保持します。