ドメインフロンティングについてのメモ

ドメインフロンティングについてのメモ。

ドメインフロンティングとは

TLSのSNI (Server Name Indication) ヘッダーで指定したドメイン (フロントドメイン)を介して別のドメインへ通信する仕組み。主にCDN (Contents Delivery Network)で利用される技術。

例えばTLSのSNIヘッダーにabc.hoge.comというドメイン名を、HTTPのHostヘッダーにxyz.hoge.comというドメイン名を指定して通信を行ったとする。もし2つのドメインが同一のCDNにホストされていた場合、abc.hoge.comに送られたTLS通信を復号して、その中に含まれているHTTP Hostヘッダーからxyz.hoge.comというドメインを読み出し、xyz.hoge.comへ通信をリダイレクトすることが出来る。

xyz.hoge.comのドメイン名はTLSによって暗号化されているので、ネットワーク・キャプチャ上はabc.hoge.comとTLS通信しているようにしか見えない。

以下、簡単な検証。

curl -s -i https://www.google.com/ -H "Host: www.youtube.com" | grep -o '<title>.*</title>'

上記のcurlコマンドはwww.google.comを介してwww.youtube.comと通信する。(Wikiのコードをcurlに置き換えただけ)

以下はコマンドの実行結果。

レスポンスのHTMLのtitleタグがYouTubeとなっていることから、www.youtube.comと通信できたことがわかる。

以下は通信のキャプチャ。

Client HelloパケットのSNIヘッダーはwww.google.comとなっている。


サーバーから送られたTLS証明書もwww.google.comのもの。

YouTubeというキーワードでパケットを検索しても何もヒットしない。(YouTubeへの通信はTLSで暗号化されているため)

参考

https://attack.mitre.org/techniques/T1090/004/
https://www.fireeye.com/blog/threat-research/2017/03/apt29_domain_frontin.html

https://youtu.be/5gwEMocFkc0 (35:22から)

Leave a Reply

Your email address will not be published. Required fields are marked *