「鍵は“J”の中にあるよ」CTF by ダークナイト解答編セキュリティ・ダークナイト(3)(1/4 ページ)

第3回は「ダークナイトからの挑戦状」解答編です。さらなるトリッキーな問題も用意したので、もの足りないチャレンジャーも必読の記事です(編集部)

» 2010年02月22日 00時00分 公開

 第2回「魂を奪え! 隠されたシークレット・パスワード」の最後で、筆者なりのCTF的問題を出題した。この問題にチャレンジしていただけただろうか。筆者のTwitterでヒントを出していたので正解にたどり着けた方も多いだろう。ヒント自体は、できるだけ回りくどく出したつもりなので、中には正解にたどり着けずイライラした方もいらっしゃるかと思う。

 今回は、その出題した問題の解答をお届けしよう。第1回第2回と同様、正解までの道筋を可能な限り丁寧に解説していくので、解けなかった方も、この連載記事を初めて読む方も読みながら解き進めて欲しい。「答えはこれだ!」で終了といったものにするつもりはないのでご安心を。もちろん、途中でひらめいた方は記事を読むのを止めて、問題に再チャレンジしていただきたい。

 今回、解説させていただくのは、筆者なりの模範解答「例」とさせていただく。解き方は1つではないからだ。では、始めよう。

まずはファイル内容の特定

 問題はこの1文だけだった。

 問題ファイルには拡張子がついていないため、そもそもどういった種類のファイルであるか分からない。それを特定することから始めよう。まずは「file」コマンドによる確認を行う。

図1 fileコマンドを実行。「RAR archive」と表示されている 図1 fileコマンドを実行。「RAR archive」と表示されている

 ここから、RAR形式書庫だと判断できる。ファイル名に拡張子「.rar」を付加して、実際に「WinRAR」で開いてみよう。

図2 拡張子をrarとし、展開する 図2 拡張子をrarとし、展開する

 上図のように、問題なく開くことができた。書庫の中には「ntsuji_ctf_01」というファイルが存在している。実際に問題ファイルをコピーし、展開してみよう。展開されたファイルは初期状態の問題ファイルと同名であるため、RAR展開後、ファイル名を、「ntsuji_ctf_01_1」とした。

 展開後のファイルもどういった種類のファイルか分からないため、再度、「file」コマンドを実行しよう。結果は下図の通りである。

図3 展開ファイルの内容を確認する 図3 展開ファイルの内容を確認する

 ここから、tcpdump形式のパケットキャプチャファイルであることが分かる。確認のため、問題ファイルをtcpdumpで読み込んでみよう。下図のように問題なくパケットの内容が表示されるはずである。

図4 tcpdumpで内容を確認する 図4 tcpdumpで内容を確認する

 しかし、この先、tcpdumpで分析し続けるのは厳しいため、問題ファイルに拡張子「.cap」を付加して、Wiresharkで開いてみよう。

図5 WireSharkでファイルを開く 図5 WireSharkでファイルを開く

ツールを駆使して正解に近づけ!

 さて、ここまでは前回の「Packet Madness 100」をお読みいただいている方は、楽々とたどり着けたであろう。ここから正解までの突破口を見つけ出さないといけない。

 このままWireSharkを眺め、ヒントを得て、正解にたどり着くことも可能だが、今回はパケットの情報を整理しやすくするためのツールを1つ紹介しよう。

 紹介するツールは「NetworkMiner」という、Windows用のネットワークフォレンジック分析ツールである。このツールはWireShark同様、パケットキャプチャソフトとしても、取得後のパケットキャプチャファイル(PCAP形式ファイル)をオフライン分析することが可能である。早速、今回の問題ファイルを「WireShark」と「NetworkMiner」で読み込んでみよう。

図6 「NetworkMiner」でファイルを開く際にはメニューバーの[File]→[Open]から目的のファイルを選択する 図6 「NetworkMiner」でファイルを開く際にはメニューバーの[File]→[Open]から目的のファイルを選択する

 この結果から、問題ファイルから導き出せるポイントを整理してみよう。

  1. 2ホスト間の通信である。(192.168.0.20 および 192.168.0.150)
  2. 192.168.0.20はWindows系、192.168.0.150はLinux系OSと思われる。
  3. ICMP Echo (ping) request x 2 に対して、2つのICMP Echo (ping) reply x 2
  4. 主だった内容はFTPによる通信である。
  5. FTP通信では「USER」「PASS」「SYST」「CWD」「TYPE」「PORT」「RETR」「QUIT」が使われており「RETR」コマンドにより「key.zip」がダウンロードされている。
図7 TCP Streamの内容 図7 TCP Streamの内容

 まずは5.に注目してほしい。キャプチャファイルから「key.zip」をNetworkMinerを利用して方法を紹介しよう。

 NetworkMinerはキャプチャファイルを読み込む過程で、自動的にパケットファイル中のファイルを抽出する機能を備えている。実際に読み込みを行った方は「NetworkMiner.exe」と同一ディレクトリの「AssembledFiles」以下に作られるディレクトリ内([Source host]ディレクトリ以下の[プロトコル - TCP/UDP Source Port]ディレクトリ)に抽出され保存されているはずである。

図8 key.zipを取り出す 図8 key.zipを取り出す

 難なく抽出することができた「key.zip」を早速、展開してみよう。

図9 key.zipにはパスワードがかけられていた 図9 key.zipにはパスワードがかけられていた

 どうやら、上図のようにパスワードが設定されているようだ。このあたりで壁にぶち当たり、行き詰まり感満載だった方も多かっただろう。筆者もTwitterで#ntsujiのハッシュタグを付けている方のつぶやきを毎日見ていたが、この段階でつまずいている方が多いように感じた。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。