kimtetの日記

CTFのwriteupとか、勉強したこととか

SECCON 2014 横浜大会 CTF ネットワーク予選 write up 問7

年を越しましたが7問目。 07フォルダにもquestion.txtがあって、こんな感じ。

通信相手のIPアドレスは?次の4つのパケットを見て答えよ。

-- 1 --
000000: FF FF FF FF  FF FF 00 66  77 88 99 AA  08 06 00 01 : .......f w.......
000010: 08 00 06 04  00 01 00 66  77 88 99 AA  C0 A8 01 02 : .......f w.......
000020: 00 00 00 00  00 00 C0 A8  01 01                    : ........ ..
==
-- 2 --
000000: 00 66 77 88  99 AA 00 11  22 33 44 55  08 06 00 01 : .fw..... "3DU....
000010: 08 00 06 04  00 02 00 11  22 33 44 55  C0 A8 01 01 : ........ "3DU....
000020: 00 66 77 88  99 AA C0 A8  01 02 00 00  00 00 00 00 : .fw..... ........
000030: 00 00 00 00  00 00 00 00  00 00 00 00              : ........ ....
==
-- 3 --
000000: 00 11 22 33  44 55 00 66  77 88 99 AA  08 00 45 00 : .."3DU.f w.....E.
000010: 00 54 00 00  40 00 40 01  50 C3 C0 A8  01 02 0A 14 : .T..@.@. P.......
000020: 1E 28 08 00  D0 C0 7A 07  00 01 EA 6C  02 54 C9 72 : .(....z. ...l.T.r
000030: 0C 00 08 09  0A 0B 0C 0D  0E 0F 10 11  12 13 14 15 : ........ ........
000040: 16 17 18 19  1A 1B 1C 1D  1E 1F 20 21  22 23 24 25 : ........ .. !"#$%
000050: 26 27 28 29  2A 2B 2C 2D  2E 2F 30 31  32 33 34 35 : &'()*+,- ./012345
000060: 36 37                                              : 67
==
-- 4 --
000000: 00 66 77 88  99 AA 00 11  22 33 44 55  08 00 45 00 : .fw..... "3DU..E.
000010: 00 54 02 95  40 00 40 01  4E 2E 0A 14  1E 28 C0 A8 : .T..@.@. N....(..
000020: 01 02 00 00  D8 C0 7A 07  00 01 EA 6C  02 54 C9 72 : ......z. ...l.T.r
000030: 0C 00 08 09  0A 0B 0C 0D  0E 0F 10 11  12 13 14 15 : ........ ........
000040: 16 17 18 19  1A 1B 1C 1D  1E 1F 20 21  22 23 24 25 : ........ .. !"#$%
000050: 26 27 28 29  2A 2B 2C 2D  2E 2F 30 31  32 33 34 35 : &'()*+,- ./012345
000060: 36 37                                              : 67
==

問題の考え方

それぞれのパケットの通信先を読み取って回答する。 なんで4つあるのかは謎。

解法

解けなかった。

調べた結果

4つのパケットをそれぞれ確認してみる。
1個目2個目の長さが短くてIPパケットじゃない気がするので、まずはethernetフレームのタイプ(1行目13-14byte目)を確認すると、以下の通りだった。

パケットNo ethernet typeの値 意味するところ
1 08 06 ARPパケット
2 08 06 ARPパケット
3 08 00 IPパケット
4 08 00 IPパケット

ARPパケットなんて真面目に見たことないや……。そりゃわからんわな。
この並びだと、最初にARPで宛先のMACアドレスを確認して、その次にその情報を使ってIPでの通信を行ったという感じだろうか。
パケットの正体もわかったところで具体的にどことどこが通信を行っているのか確認していこう。

-- 1 -- の情報

まずはEthernetフレームから。1byte目から6つが送信先、次の6つが送信元なので確認は簡単。

MACアドレス
送信先 FF FF FF FF FF FF(ブロードキャスト)
送信元 00 66 77 88 99 AA

送信先が FF FF FF FF FF FF なので、ブロードキャスト要求だということがわかる。
ARPでブロードキャストするのってARP要求パケット(このIPアドレスMACを教えてください)の場合だよね。

続いてARPフレームの確認。ここには送信元のMACアドレスIPアドレスの対比、あとMACを知りたいIPアドレスの情報が載ってる。
2行目の7byte目から読んでく。送信元MACアドレスIPアドレス、知りたいMACアドレス、知りたいIPアドレスの順に並んでる。

MACアドレス IPアドレス(16進数) IPアドレス(10進数)
送信元 00 66 77 88 99 AA C0 A8 01 02 192.168.1.2
知りたい情報 00 00 00 00 00 00 C0 A8 01 01 192.168.1.1

送信元 192.168.1.2 がブロードキャストで 192.168.1.1 のMACアドレスを教えてーってってのがわかった。

-- 2 -- の情報

同じようにEthernetフレームを見ると、次のようになってる。

MACアドレス
送信先 00 66 77 88 99 AA(問い合わせ元)
送信元 00 11 22 33 44 55(ARP情報の送り主)

続いてARPフレームも同様にチェック。

MACアドレス IPアドレス(16進数) IPアドレス(10進数)
知りたい情報 00 11 22 33 44 55 C0 A8 01 01 192.168.1.1
送信先 00 66 77 88 99 AA C0 A8 01 02 192.168.1.2

1の要求に対して返事してるのがわかった。ふぅ。

-- 3 -- の情報

続いてIPパケットのほうを見てみる。さっきのARP情報が生かされているはずだ!
Ethernetフレームは以下の通り。おなじみ最初の6つずつ。

MACアドレス
送信元 00 11 22 33 44 55
送信先 00 66 77 88 99 AA

続いてIPフレームの送信元/送信先IPアドレスは以下の通り(2行目の11-14byte目と15byte目-3行目の2byte目)。この辺は慣れてきてすぐ見つけられるようになった。

IPアドレス(16進数) IPアドレス(10進数)
送信元 C0 A8 01 02 192.168.1.2
送信先 0A 14 1E 28 10.20.30.40

あれ?送信先がARPで見つけたIPアドレスと違うな。考えられるのは、192.168.1.1がルーターで、それ経由で10.20.30.40で通信しているとかかな? ひとまず4個目のパケットを見てみよう。

-- 4 -- の情報

Ethernetフレームは以下の通り。

MACアドレス
送信元 00 66 77 88 99 AA
送信先 00 11 22 33 44 55

IPフレームは以下の通り。

IPアドレス(16進数) IPアドレス(10進数)
送信元 0A 14 1E 28 10.20.30.40
送信先 C0 A8 01 02 192.168.1.2

通信先は10.20.30.40で決まりだね。ARPの確認だけで決めつけないように、というひっかけ問題かな。

ちなみに3個目と4個目のパケットのトランスポート層のタイプを調べると、ICMPだってことがわかる。ICMPのタイプとコードを調べると、3個目がping要求、4個目がping応答だってのもわかるので、3問目の復習にどうぞ。

別解

これもtext2pcapにかけるとズバッと答えが……と思いきや、4つ目以外は [Malformed Packet] って言われちゃう。4つ目が残っているのでこれの送信元から答えを類推することは可能かも。
出題者はわざと壊れたパケットにしておいたのかなあ?

f:id:kimtet:20150103183459p:plain