taisho3日記

WriteUpなど。

SECCON 2014 長野大会 DNS Security Challenge Writeupその2

■mondai2
○問題文
mondai2-client.pcapとmondai2-server.pcapを見て、以下の問いに答えて下さい。

問1:どのパケットが攻撃者の発信したものか(ファイル名およびSeconds from Epochで答えてください)
答え:
問2:用いられた攻撃手法は何か
答え:
問3:その攻撃手法だと考えた理由は何か
答え:

 

○パケットデータ概要
簡略構成は下記。
キャッシュDNSが同一セグメントのDNSクライアントからの再帰(要求)問い合わせを受付、権威DNS群への非再帰問い合わせを再帰的に行う。

                        権威DNS
                       |
                     [router]
                       |
DNSクライアント--[L2]--キャッシュDNS

mondai2-client.pcapがクライアント側の動きを記録したもの、mondai2-server.pcapがキャッシュDNS側の動きをキャプチャしたものにみえる。

 

関係ないパケットを無視して、注目するのは下記。
(凡例)パケットNo ソースIP:ソースポート -> デスティネーションIP:デスティネーションポート Info

・mondai2-server.pcap
1    192.168.0.197:46905 -> 10.0.0.244:53       Standard query 0xefd6 A www.indo8.co.jp
2    10.0.0.244:53       -> 192.168.0.197:46905 Standard query response 0xefd6
3    192.168.0.197:61593 -> 10.10.10.10:53      Standard query 0xa4f5 A www.indo8.co.jp
4    10.10.10.10:53      -> 192.168.0.197:61593 Standard query response 0xa4f5 A 10.194.126.191 A 10.194.126.175 A 10.194.126.183 A 10.194.126.184

 

・mondai2-client.pcap
1    192.168.0.194:53028 -> 192.168.0.197:53    Standard query 0x9b16 A www.indo8.co.jp
2    192.168.0.197:53    -> 192.168.0.194:53028  Standard query response 0x9b16 A 10.195.126.191 A 10.194.126.175 A 10.194.126.183 A 10.194.126.184
3    192.168.0.197:53    -> 192.168.0.194:53028  Standard query response 0x9b16 A 10.194.126.191 A 10.194.126.175 A 10.194.126.183 A 10.194.126.184

 

○回答考察
mondai2-client.pcapのNo2とNo3にて、キャッシュDNSからのレスポンスが重複している。
mondai2-server.pcapより、偽造されたパケットはmondai2-client.pcapのNo2のパケットであると分かる。
Aレコードの回答が10.194.126.191のところを、10.195.126.191と偽装している。
(ちなみにチェックサムをみてもおかしいのはmondai2-client.pcapのNo2であった。バイナリ編集などでmondai2-client.pcapのNo3をコピーして作成されている模様。)
ということで問1の回答は確定。

 

問2と問3について考察。
mondai2-server.pcap側には怪しい動きはみられないところから、クライアントDNSとキャッシュDNSの間でおかしなパケットが偽造されたらしいことが分かる。
ARPポイゾニング等での中間者攻撃などを考察したが、サーバからの正常なレスポンスもあとから到着していた。
よって、中継するようなやり方では、わざわざ正常なパケットをご丁寧に流してあげることはないはずなので、違うと思いました。
(ettercap NG-0.7.4.2にてARPポイゾニングしながら、DNSクエリーに偽応答を返すテストしてみましたが、わざわざあとから正しいパケットをクライアントに返すような動きはみられませんでした。)
よって、なんらかの方法で偽造しているが、中間者攻撃かどうか確信がもてなかったため、回答は「キャッシュDNSを装ったレスポンスパケット偽造」という抽象的な回答に収めました。

 

しかし、正式な回答はキャッシュDNS側での中間者攻撃でした。。。

 

うーん、、確かに下記のようなケースであれば、mondai2-client.pcapのNo3も戻ってしまってもしょうがないかなというケースはあるかと思います。
・攻撃者はすべてを中継することはできない環境(正しいパケットを阻止できない環境)にいるが、自分のパケットを正しいパケットより先に到達させることができる。
 ※おそらくクライアントDNSとキャッシュDNS間のどこかにいて、mondai2-client.pcapのNo1を検知して、すぐに用意している偽造パケットを送信する。正しい回答のNo3はあとから到着する。

 

どこで・・・、DNSクライアントとキャッシュDNS間のL2空間のどこかとなると思われる。

 ※ちなみにclient.pcapのNo2とNo3のソースMACおよびデスティネーションMACの構成に違いはありませんでしたので、ルータ等の外側から偽装パケットだけ戻っていることはなさそうです。
DNSクライアントとキャッシュDNS間のL2がバカHUBで、そこに攻撃端末つながれた(通信は傍受できるし、送信もひとつのポートで可能)
②L2SWだがほったらかしのミラーポートがたまたまり(または設定変更で作成!?)、そこと通常のアクセスポートの2つを利用して攻撃端末がつながれている(ミラー側で検知、アクセスポートで送信)
③クライアントDNS側またはキャッシュDNS側のケーブルにタップ装置やバカHUBなどをかませて、そこと通常のアクセスポートを利用して攻撃端末がつながれている。

 

その他にも同一セグメントのどれかの端末がのっとられており、実行しているようなことも考えられますが、通常はバカHUBでないL2SWで接続されているため、結局ARPポイゾニングしないとクライアントDNSとキャッシュDNS間の通信を傍受できないと思われます。ARPポイゾニングするのであれば中間に入ることが可能なため、わざわざ正しいパケットをあとから送信することはないと思われます。
(キャッシュDNSやクライアント自身、またはルータ等がのっとられている場合でも、正しいパケットをわざわざ通過させることはないと思われます。)

 

①は最近ではほとんどない構成。
②は偶然あいていることを期待する、また、設定変更は敷居が高く(通常パスワードを突破しなければならない)、可能性低め。
③は通信断が発生するため、気づかれやすく、可能性低め。

 

問題の作成者の方は、上記のような可能性の低い構成をイメージして問題を作成したのでしょうか。。。
または、まだ別のやり方があるとか?、、、うーん。。