脆弱性診断士向け勉強 ~RDAPを理解する~

RDAP,脆弱性診断士

whoisはもう古い!時代はRDAPだ!

ということで今回はRDAP(Registration Data Access Protocol)について勉強してみました。

RDAPとは

RDAPは、whois同様ドメイン名やIPアドレスから責任者情報を取得するためのプロトコルになります。

なぜ同じ目的のプロトコルが存在するのかというと、whoisにて問題視されていたプロトコルの決まりごとがないことによる不便さを解決するための新たな共通プロトコルとしてRDAPが生まれました。

whoisやドメインについては以下過去記事を参照してください。

関連RFC

RFCタイトルその他
7480Registration Data Access Protocol(RDAP)でのHTTPの使用
7481Registration Data Access Protocol(RDAP)のセキュリティサービス
7482Registration Data Access Protocol(RDAP)のクエリ形式9082が出来たため廃止
9082Registration Data Access Protocol(RDAP)のクエリ形式
7483Registration Data Access Protocol(RDAP)のJSON応答9083が出来たため廃止
9083Registration Data Access Protocol(RDAP)のJSON応答
7484Authoritative Registration Data(RDAP)サービスの検索
8056Extensible Provisioning Protocol(EPP)および
Authoritative Registration Data(RDAP)ステータスマッピング

RDAPにおける通信

whoisではTCPの使用がRFCにて定められていましたが、RDAPではHTTP(S)を使用することがRFCで定められています。

リクエスト

RDAPでは、クライアントはHTTPのGETメソッドまたはHEADメソッドを使用することで、ドメイン情報を取得することが出来ます。

リクエストURLの構造は以下になります。

https://問い合わせ先レジストリURL/パスセグメント/問い合わせ情報(IPアドレス、ドメイン等)

パスセグメントには以下が定義されています。

パスセグメント概要
ipIPv4またはIPv6アドレスから責任者情報を取得
autnumAS(Autonomous System:自律システム)番号から責任者情報を取得
domainドメインから責任者情報を取得
nameServerネームサーバー(DNSサーバー)から責任者情報を取得
entityプロバイダ固有のエンティティ(連絡先、登録者、またはレジストラなど)から責任者情報を取得

詳細についてはRFC9082を確認してください。

レスポンス

ステータスコード

まずサーバーが応答するステータスコードは以下が定義されています。

応答応答内容
200受信サーバーが問い合わせを受けたドメイン情報を持っている。
3xx受信サーバーは問い合わせを受けたドメイン情報を持っていないが、情報がどこにあるかを知っている。
LocationヘッダーにHTTP(S)URLを含むリダイレクト応答を返す。
404受信サーバーが問い合わせを受けたドメイン情報を持たず、情報がどこにあるかもわからない。
4xx受信サーバーがポリシー上の理由で要求に応答出来ない。
501受信サーバーがサポートしていないクエリタイプ。

詳細については、RFC7480を確認してください。

JSON応答

RDAPでサーバが応答するデータはJSON形式です。

各パラメータに関してはたくさんあるので割愛します。気になる方はRFC9083を確認してください。

また、JPRS(株式会社日本レジストリサービス)がドメイン検索に特化した形で紹介してくれてます。

RDAPを試してみる

早速RDAPでドメインを問い合わせてみようと思います。

サイトによる問い合わせ

RDAPクライアントと呼ばれるサイトを利用することで、簡単にRDAPによる問い合わせが可能です。

前述のJSON形式の応答を、人が理解しやすいように整形して表示してくれるというメリットがあります。

いろいろ探してみた結果、以下2サイトがおすすめです。

https://lookup.icann.org/en/lookup

https://client.rdap.org/

icannの場合、上記URLへアクセスし、調べたいドメインやIPアドレスを入力するだけで結果が出てきます。

ブラウザのURL入力による問い合わせ

前述のリクエストURLを実際に使用してみます。

jpnic等日本のレジストリを試してみたのですが、いまいちgoogle.comですらドメイン検索が成功しなかったため、rdap.orgから以下を試してみました。

https://rdap.org/domain/google.com

ブラウザからのアクセス結果が以下。

読みずらいですがうまくいってますね。

URLはリダイレクトされたようです。

wiresharkで通信内容の確認

通信データもみたいなと思い、wiresharkでキャプチャしてみました。

なおデータの中身を見るためにhttpsではなくhttpで以下のURLへアクセスしています。

http://rdap.org/domain/google.com

やっぱりhttpsへリダイレクトされてしまいますね。

まあステータス200の中身はブラウザ上で観れるからいいか。

最後に

正直ちょっと動かしただけで内容の理解はまだまだですが、今回はここまでで。

次回はレスポンスにおけるJSON形式の中身をもっと理解した上で、pythonを使ってRDAPの問い合わせとレスポンス整形なんかをしてみてもいいかなと思いました。