Impacket rpcdump.py
Endpoint Mapper に問い合わせ、対象ホストが公開する RPC インターフェースと接続情報を一覧にします。
| 項目 | 内容 |
|---|---|
| 実装 | examples/rpcdump.py |
| カテゴリ | SMB / MSRPC / NTLM |
| 規模 | 208 行 |
| 配布 | setup.py の scripts=examples/*.py によりスクリプトとしてインストール |
CLI と入力
Section titled “CLI と入力”オプションの最新の定義は python examples/rpcdump.py -h で確認できます。
| 引数 | 説明 |
|---|---|
target | [[domain/]username[:password]@] |
-debug | Turn DEBUG output ON |
-ts | Adds timestamp to every logging output |
-target-ip | IP 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 |
-port | Destination port to connect to RPC Endpoint Mapper(選択肢: 135, 139, 443, 445, 593、既定値: 135) |
-hashes | NTLM hashes, format is LMHASH:NTHASH |
詳細な処理フロー
Section titled “詳細な処理フロー”port 135/139/445/443 などから transport を構築し、EPM interface へ bind、hept_lookup をページングして tower を解析します。UUID を既知名へ変換し、binding ごとに group 化して表示します。
仕組みの詳細
Section titled “仕組みの詳細”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 として重要です。
主要な実装要素
Section titled “主要な実装要素”| シンボル | 位置 | 責務を追う入口 |
|---|---|---|
RPCDump | 36 | __init__()、dump() |
Impacket 内部
Section titled “Impacket 内部”| モジュール | 使用する主な名前 |
|---|---|
impacket.http | AUTH_NTLM |
impacket.examples | logger |
impacket.examples.utils | parse_target |
impacket | uuid, version |
impacket.dcerpc.v5 | epm, transport |
impacket.dcerpc.v5.rpch | RPC_PROXY_CONN_A1_0X6BA_ERR, RPC_PROXY_CONN_A1_404_ERR, RPC_PROXY_INVALID_RPC_PORT_ERR, RPC_PROXY_RPC_OUT_DATA_404_ERR |
出力・副作用・必要権限
Section titled “出力・副作用・必要権限”- 照会や認証の試行が中心です。実行回数が多いと監査ログやアカウントロック、対象の負荷に影響します。
失敗経路と後始末
Section titled “失敗経路と後始末”- 失敗時は、名前解決、接続、認証、サービスの状態、権限のどこで止まったかを、プロトコルのステータスから切り分けます。
実装を変更するとき
Section titled “実装を変更するとき”dcerpc.v5.epm / transport / rpch、impacket.uuid、HTTP NTLM auth に依存します。RPCDump.dump() が transport 選択と列挙を担当し、RPC over HTTP 固有 error を診断可能なまま保持します。
- 構文:
python -m py_compile examples/rpcdump.py - CLI:
python examples/rpcdump.py -h - 関連テスト:
tests/SMB_RPC/test_rpch.py - 関連テスト:
tests/misc/test_dcerpc_v5_ndr.py

