taisho3日記

WriteUpなど。

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

2014年 9月27日(土)~28日(日)の2日間、信州大学工学部 SASTecにて実施されたSECCON2014長野大会DNS Security Challengeに参加してきました。
初日に配布されるpcapファイル(計6問分)を解析し、攻撃者のパケットや攻撃手法、そう考えた理由などを記述し、翌日に回収されて採点というものでした。
2日目はDNSカルトクイズ大会が実施され、パケット解析の結果とDNSカルトクイズ大会の総合得点で順位が決まるというものでした。
結果は総合2位でした。
(パケット解析は2位、DNSカルトクイズ大会は1位でした。)
以下パケット解析問題についてWriteUp

 

※パケットデータは配布用のものが別途用意されるというような情報がありましたため、念のためここでは要約だけの記載にとどめます。
※パケットデータの中身に触れる部分がありますが、そこは概要が分かる程度に加工して表現しています。
 (パケットNoは、実際に配布されたパケットデータのNoとあわせて表現しておきます。)

 

 

■mondai1
○問題文
mondai1.pcapを見て、以下の問いに答えて下さい。

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

 

○パケットデータ概要
173個のDNS関連のパケットのやり取りが記録されている。
怪しいところは一箇所あり、権威DNSからの回答が重複しているパケットがある。
下記のような感じです。
(凡例)パケットNo ソースIP:ソースポート -> デスティネーションIP:デスティネーションポート Info

166  192.168.0.197:30828 -> 10.0.0.144:53       Standard query 0x1b89 A www.indo8.co.jp
167  10.0.0.144:53       -> 192.168.0.197:30828 Standard query response 0x5e25 A 172.16.0.129
168  10.0.0.144:53       -> 192.168.0.197:30828 Standard query response 0x1b89 A 172.16.0.129

 

○回答考察
166で出した問い合わせに対して、レスポンスが2つ帰ってきています。
トランザクションIDをみると、正しいペアとなるのは166と168(0x1b89のペア)であり、167のパケットはおかしいとわかります。
念のため、このトランザクションID(0x5e25)でフィルタかけてみましたが、pcapデータからは同じトランザクションIDを持つパケットは記録されていませんでした。
これで問1の答えは167のパケットと分かりました。これは正解しました。

 

問2について考察しました。
・中間者攻撃関連であればトランザクションIDを間違えるはずがないので違う。
・キャッシュポイゾニングを狙ったものだが、トランザクションID以外は絶妙なタイミングでポート番号も一発で一致させている。
結局、偶然に頼ったDNSキャッシュポイゾニングを試みたパケットがたまたま届いたという理解で一致し、答えをDNSキャッシュポイゾニングとしました。
が、答えはバースデイアタックでした。。トランザクションIDを合致させるレベルで実施されるものと思っていたので、送信元ポート番号まで含んで実施する(今回送信元ポート番号は53/udp固定ではありませんでした)ということまで発想がとどかず不正解。
この回答発表で一気にへこみ、寝不足の頭は真っ白になりました。。

 

問3はAレコードのレスポンスを偽造して、キャッシュポイゾニングを狙ったものと思われる、、というようなことを書きましたが、バースデイアタックについて記述していないので不正解。

 

○その他
本問題(このあとのmonndai1~3)は、答えのパケットのチェックサムがおかしいため、wiresharkが色つきで表現してくれます(最近のwiresharkはデフォルトで表示してくれず、設定をする必要があります)。
チェックサムをみるかぎり、この問題は168のパケットデータをコピーし、timeやトランザクションIDをバイナリエディタなどで編集して作成されたと思われます(167と168のチェックサムが同じのため)。

mondai1~3の攻撃パケットの特定作業は楽になり、それ以外を考える時間に当てることができました。

 

 

★追記

上記のパケット概要での表現ですみませんが、、、

問題ファイルではwww.indo8.co.jpのAレコードのレスポンスパケットを偽装している。

いくらバースデイアタックといえど、絶妙なタイミングでパケットをいれこんでいるのでトリガーとなる問い合わせを発行しているはずだが、見当たらない。。

www.indo8.co.jpのAレコードを問い合わせるパケットを攻撃者が送っているはずだが、MACアドレスで確認したところ、存在していなかった。

(www.indo8.co.jpのAレコードを問い合わせている送信元MACアドレスはすべてVMwareのベンダーコードであった。が、攻撃パケットの送信元MACはJuniperのベンダーコードである。よって、juniperのベンダーコードを持つMACを送信元としてwww.indo8.co.jpのAレコードを引いているパケットがなければ、攻撃者はトリガーを仕掛けていないと思われる)。

また、www.indo8.co.jpの権威DNSは、直前の委任パケットをみると2つあり、通常は2つ分の権威DNSのIPを装ってパケットを投げると思うが、攻撃パケットはひとつしかないため、わざわざ事前に確認できるのに、可能性を低くするやり方をしている。

トリガーもなく、権威DNSも2つ分パケット送ればいいところを1/2で当たる可能性に賭けて、送信元ポートとトランザクションIDをヒットさせるような攻撃は、バースデイアタックの範疇にいれてしまっていいのか??と疑問に思う。

 

 

mondai2へつづく。

(不慣れで書くのに時間がかかるため、分割して掲載していきます。。)