脆弱性診断士向け勉強 ~RDAPを理解する~
whoisはもう古い!時代はRDAPだ!
ということで今回はRDAP(Registration Data Access Protocol)について勉強してみました。
RDAPとは
RDAPは、whois同様ドメイン名やIPアドレスから責任者情報を取得するためのプロトコルになります。
なぜ同じ目的のプロトコルが存在するのかというと、whoisにて問題視されていたプロトコルの決まりごとがないことによる不便さを解決するための新たな共通プロトコルとしてRDAPが生まれました。
whoisやドメインについては以下過去記事を参照してください。
関連RFC
RFC | タイトル | その他 |
---|---|---|
7480 | Registration Data Access Protocol(RDAP)でのHTTPの使用 | – |
7481 | Registration Data Access Protocol(RDAP)のセキュリティサービス | – |
7482 | Registration Data Access Protocol(RDAP)のクエリ形式 | 9082が出来たため廃止 |
9082 | Registration Data Access Protocol(RDAP)のクエリ形式 | – |
7483 | Registration Data Access Protocol(RDAP)のJSON応答 | 9083が出来たため廃止 |
9083 | Registration Data Access Protocol(RDAP)のJSON応答 | – |
7484 | Authoritative Registration Data(RDAP)サービスの検索 | – |
8056 | Extensible Provisioning Protocol(EPP)および Authoritative Registration Data(RDAP)ステータスマッピング | – |
RDAPにおける通信
whoisではTCPの使用がRFCにて定められていましたが、RDAPではHTTP(S)を使用することがRFCで定められています。
リクエスト
RDAPでは、クライアントはHTTPのGETメソッドまたはHEADメソッドを使用することで、ドメイン情報を取得することが出来ます。
リクエストURLの構造は以下になります。
https://問い合わせ先レジストリURL/パスセグメント/問い合わせ情報(IPアドレス、ドメイン等)
パスセグメントには以下が定義されています。
パスセグメント | 概要 |
---|---|
ip | IPv4またはIPv6アドレスから責任者情報を取得 |
autnum | AS(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
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の問い合わせとレスポンス整形なんかをしてみてもいいかなと思いました。