kimtetの日記

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

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

やっとこさ問4の解説だよ。この調子でいくと年が明けそうだね。 まあでも来年のSECCONに間に合えばいいや。 今までと同じように04フォルダを開くとquestion.txtがひとつのみ。ひらくとこんな感じ。

サーバの名前は何?
FQDNでお答えください。

0000   00 1a a0 89 a3 7f 44 94 fc 7e 1a ba 08 00 45 00  ......D..~....E.
0010   00 4c 00 00 40 00 36 11 11 2c d2 ad a0 1b c0 a8  .L..@.6..,......
0020   00 04 00 7b 00 7b 00 38 6d 96 1c 02 11 e8 00 00  ...{.{.8m.......
0030   06 8b 00 00 02 9e ac 1d 02 32 d7 ad 09 99 d8 db  .........2......
0040   8b 49 d7 ad 0a 44 7a a8 0f 7e d7 ad 0a 46 42 28  .I...Dz..~...FB(
0050   23 a6 d7 ad 0a 46 42 2b 5a b3                    #....FB+Z.

あれ? 問3と同じじゃない……? そう思ったあなた、半分正解。 パケットデータのほうは問3と全く一緒。ただし問題文が異なっているね。

問題の考え方

データは問3と同じ。 通信してるIPアドレスを調べ、サーバのほうのIPアドレスを名前解決してFQDNを答える。

簡単だね!

解法

問3でちょこっと見たIPヘッダを見て、どのIPアドレス同士が通信しているか見てみよう。 IPヘッダは1行目の終わりから始まっているけど、肝心のIPアドレスが入っているのは2行目の終わりのほうから。

0010   00 4c 00 00 40 00 36 11 11 2c d2 ad a0 1b c0 a8  .L..@.6..,......
0020   00 04 00 7b 00 7b 00 38 6d 96 1c 02 11 e8 00 00  ...{.{.8m.......
  • 送信元アドレスがわかるのは、2行目の11-14byte目 = d2 ad a0 1b
  • 送信先アドレスがわかるのは、2行目の15byte目から3行目の2byte目 = c0 a8 00 04

IPアドレスは1byteずつ10進数になおして、区切りに.を入れればいいので計算は楽ちん。

  • d2 ad a0 1b = 210 173 160 27 = 210.173.160.27
  • c0 a8 00 04 = 192 168 0 4 = 192.168.0.4

さて、どっちがサーバでどっちがクライアントなのか、だ。

FQDNで答えなくてはいけないので、どうにかしてFQDNを入手できるほうが答えになる。 そうするとグローバルIPアドレスを持っているほうが当然サーバってことになる。

ってことで210.173.160.27を名前解決してみよう。

>nslookup 210.173.160.27 8.8.8.8
サーバー:  google-public-dns-a.google.com
Address:  8.8.8.8

名前:    ntp1.jst.mfeed.ad.jp
Address:  210.173.160.27

ntp1.jst.mfeed.ad.jp は「インターネットマルチフィード時刻情報サービス」の公開しているntpサーバのひとつ。これが回答で間違いないでしょ。

問3の続き問題だったので、あっさり解答できた。

参考情報

8.8.8.8 は高速で有名なgoogleの公開DNSです。 nslookupコマンドは通常はネットワークの設定で指定されたDNSに問い合わせに行くけど、第2引数にIPアドレスやサーバ名を指定すると、そのアドレスに問い合わせに行く。 私の環境では既定のサーバが内部ネットワークのものなので、解法を公開するにあたり公開されているものを明示的に使用してみた。