┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━┳━┳━┓ ┃■ SECCON メールマガジン【Vol.04】 発行:2014.07.25(金) ┃_┃ロ┃×┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━┻━┻━┫ ┃…………………………………………………………………………………………┃ ┃… 各種CTF勉強会の情報や、予選告知、結果速報、Write Up などを発信 …┃ ┃…………………………………………………………………………………………┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ …………………………… [ C O N T E N T S ] ………………………………… 0x01 SECCON 2014 オンライン予選(日本語)結果速報、7チーム決勝進出 0x02 めざせSECCON決勝!SANS NETWARS Tournamentエントリー受付中! 0x03 協賛企業「CodeIQ」様より - 超難解ハッキング問題をクリアできるか!? 0x04 連載:SECCON 2014 夏オンライン予選「Netowrk 100」出題者の解説 ──────────────────────────────────── 0x01 SECCON 2014 オンライン予選(日本語)結果速報、7チーム決勝進出 ────────────────────────────────────  去る2014年7月19日(土)9:00~21:00に、SECCON 2014 の開幕戦である最初のオ ンライン予選(日本語)が開催されました。競技時間の途中からでも参加できる 形式で、競技終了時点での登録チーム数は 425チーム、1267人のユーザ登録があ りました。世界的に見てもかなりの人数が参加したCTF大会だったと言えます。 練習問題100点から始まり、暗号100点・300点、バイナリ100点・300点、フォレン ジック100点・300点、プログラミング100点・300点、Web100点・300点、ネットワ ーク100点・300点、Unknown100点・300点の合計15問が出題されました。 SECCON 2014全国大会(決勝戦)に出場できる権利を獲得したチームについては、 以下の上位7チームとなりました。 SECCON 2014 オンライン予選(日本語)上位7チーム -------------------------------- 1位 2602点 チーム urandom 2位 2500点 チーム 0x0 3位 2304点 チーム noraneco 4位 2303点 チーム Mr.Takeda 5位 2302点 チーム dodododo 6位 2300点 チーム m1z0r3 7位 2300点 チーム MMA -------------------------------------- 複数解答が有効だったUnknown100点「詰将棋?」の得点調整が競技終了後に入り、 最終的にスコアを調整した結果となります。 残念ながら8位以下のチームについては全国大会の出場権を獲得できませんでした。 -------------------------------------- 8位 2200点 チーム katagaitai 9位 2100点 チーム team enu north 10位 2000点 チーム ******** -------------------------------------- 本予選の上位7チームから SECCON 2014 全国大会への出場辞退があった場合は、 ・告知通り7月の本予選で8位以下のチームへの繰り上げ処理は行なわず、 ・12月のオンライン予選(英語)での全国大会出場枠がその分増えます。 <予選動向>  今回は「夜中に頑張るCTF」ではなく、朝の9時~夜の9時までの12時間で開催 する健康的なCTF大会でした。9時の競技スタートと同時に飛び出した謎の新顔チ ーム「noraneco」に「m1z0r3」が絡みつつ、他のチームがじわじわ追いかける展 開となり、最終的には上位は昨年の SECCON 常連のチームでほぼ占められました。 全国大会行きの切符をそのとき掴んでいたのは「urandom」「noraneco」 「Mr.Takeda」「dodododo」「m1z0r3」「MMA」そしてディフェンディングチャン ピオンの「0x0」でした。旋風を巻き起こしたチーム「noraneco」の素性が気に なるところですが、いずれ明らかになることを期待したいと思います。  今回は「CTF for Beginners」勉強会や「CTF for GIRLS」ワークショップから の流れを受けて、比較的解きやすい難易度の低いと思われる問題を用意しました。 最も多くのチームに解かれた問題は、ネットワーク100点の「このパケットを解 析せよ」という問題で、実に248のチームが正解していました。その他の100点問 題も軒並み三桁の正解チーム数となり、また得点が200点以上の(練習問題以外 に何かを解いた)チームは269、300点以上のチームは218、400点以上は176チーム、 500点以上が150チーム、600点以上でも134チーム、700点以上でも108チームも居 ました。このように幅広く、たくさんのチームに問題を解いてもらえたことは、 狙い通りでもありました。今後は、9月から開催されるオフラインの地方大会が 開催されますが、そういう大会にもぜひ、今回初参加だったチームを含む多くの 方々にもご参加していただき、さらに問題を解く醍醐味、さまざまなコンテスト の楽しさを味わっていただければと思います。  一方で、上位チームの熾烈な枠争いは、運営側も手に汗を握る、素晴らしい展 開となりました。ベストテンに入ったチームの点差を見てもわかるとおり、最後 の最後まで各チーム気の抜けない展開となりました。まさに実力伯仲、段々と層 が厚くなってきたという実感もありますが、これら上位を脅かすチームはまだま だ出てきそうです。今後の予選大会の展開を楽しみにしています。 SECCON実行委員会より ──────────────────────────────────── 0x02 めざせSECCON決勝!SANS NETWARS Tournamentエントリー受付中! ────────────────────────────────────  SECCON決勝に進まれたみなさまおめでとうございます!  でも学生の方はまだSECCON決勝へ進むチャンスがあるんです。  8月30日(土)、31日(日)の2日間にわたって実施される  学生向けセキュリティトレーニングイベントSANS NETWARS Tournament 2014。  本イベントの優秀者は「SECCON 2014 全国大会 出場権」 を獲得できます!  1日目はトレーニング、2日目はCTFで構成された2日間のコースです。ぜひ自身  のスキルアップに役立てて、情報セキュリティへの関心を深めてください!  開催日程:8月30日(土)、31日(日)(2日とも参加いただく必要があります)  開催場所:秋葉原UDX  対象:情報セキュリティに興味がある学生  参加費:無料  定員:100名(予定)  ※申込締切:8月5日(火)  もちろん「まだSECCON決勝なんて…」という初心者の応募も大歓迎です。  下記詳細ページより、みなさま奮ってお申込みください。  ▼講師のプロフィールやトレーニング内容など詳細ページはこちらです  http://www.nri-secure.co.jp/event/2014/netwars.html ──────────────────────────────────── 0x03 協賛企業「CodeIQ」様より - 超難解ハッキング問題をクリアできるか!? ──────────────────────────────────── 〓  サイバーディフェンス研究所×CodeIQ presents   〓〓〓〓〓〓〓〓〓 〓〓〓 あなたは この超難解ハッキング問題をクリアできるか!?〓〓〓〓〓〓〓 〓〓〓〓〓 0.03%の壁を破ってスーパーハッカーの称号をGETせよ! 〓〓〓〓 〓〓〓〓〓〓〓 『 Adminパスワードを破れ!』 http://qr.net/Et77   〓〓             ‥‥…… 6万人のITエンジニアが挑戦済み!【CodeIQ】 ──────────────────────────────────── 0x04 連載:SECCON 2014 夏オンライン予選「Netowrk 100」出題者の解説 ────────────────────────────────────  SECCON 2014 オンライン予選(日本語)で出題された問題を出題者自らが解説 する連載記事です。出題意図も含めて正解のフラグの導出方法を解説します。 ■「Netowrk 100」このパケットを解析せよ <問題> Find the flag. http://files.quals.seccon.jp/2014summer/seccon2014.pcapng <解説> ネットワーク通信のパケットキャプチャファイルを解析してフラグを探す典型 的なCTFの問題です。 オンライン予選の少し前に、初心者向け CTF勉強会として CTF for Beginnersや、CTF for GIRLSが開催されたということもあり、初心者に も解ける問題を用意して楽しんでもらおうと思って作成した問題です。勉強会で は Wireshark を使って telnet通信のキャプチャーファイルを開き、Follow TCP stream して、telnetログインユーザ名やパスワードが丸見えで驚いた方もいらっ しゃるかと思います。 今回出題したファイルを Wireshark で開いてみると、いろいろな通信が混じっ ているのですが、すぐに ftp 通信が始まっていて、follow TCP stream すると telnet同様に ログインユーザ名とパスワードが丸見えになっているのがわかりま す。 ------------------------------------------------------------------------ SYST # SYSTコマンドでftpサーバの情報を取得 220 pyftpdlib 1.4.0 ready. USER seccon2014 # USERコマンドでユーザ名を送信 331 Username ok, send password. PASS w31c0m3 # PASSコマンドでパスワードを送信 230 Login successful. ------------------------------------------------------------------------ ちなみに、パスワードの w31c0m3 は welcome の leet表記 (※1) です。 ※1 http://ja.wikipedia.org/wiki/Leet その後、ファイル一覧と flag.txt ファイルを取得して通信終了しています。 ------------------------------------------------------------------------ LIST # LISTコマンドでファイル一覧取得 125 Data connection already open. Transfer starting. 226 Transfer complete. TYPE I 200 Type set to: Binary. PORT 192,168,0,9,213,145 200 Active data connection established. RETR flag.txt # RETRコマンドでファイル取得 125 Data connection already open. Transfer starting. 226 Transfer complete. QUIT # QUITコマンドで通信終了 221 Goodbye. ------------------------------------------------------------------------ ところが、ファイル一覧結果や flag.txtファイルの内容がここには表示され ていません。ftp通信では、コマンド送受信とデータ送受信は異なるセッション で通信されるため、別のパケットを調べる必要があります。 Wiresharkで Follow TCP stream を解除(FilterをClear)して、RETR flag.txt が含まれているパケットを探すと 53番目に見つかります。そのデータ通信を探 すと 55番目に見つかり、Follow TCP stream すると以下の内容が表示されます。 ------------------------------------------------------------------------ RkxBR3tGN1AgMTUgTjA3IDUzQ1VSM30= ------------------------------------------------------------------------ この文字列は今大会のフラグ形式である FLAG{ … } ではないので、フラグ ではないと思われるかもしれませんが、ネットワーク通信ではテキスト文字列を エンコードして通信することが良く行われます。上記文字列の最後が = で、こ れは Base64エンコーディングで文字列最後の調整(パディング)に使われる文字 なのです。それに気付いてBase64デコードするとフラグ文字列が表示されます。 私はいつも Pythonインタープリタを使ってエンコード/デコードしています。 ------------------------------------------------------------------------ Python 2.7.3 (default, Apr 10 2012, 23:24:47) on win32 >>> 'RkxBR3tGN1AgMTUgTjA3IDUzQ1VSM30='.decode('base64') 'FLAG{F7P 15 N07 53CUR3}' ------------------------------------------------------------------------  波括弧内の「F7P 15 N07 53CUR3」が正解のフラグです。  これは FTP IS NOT SECURE のleet表記です。 <別解> 他の解法としては、stringsコマンドなどでファイルから文字列を抽出し、 Base64エンコード文字列を見つけて怪しいと思ってデコードしてみる手がありま す。fileコマンド、stringsコマンド、grepコマンドを使うのはCTFの基本ですね。 ちなみに、Base64のデコードはブラウザのJavaScriptコンソールでatob関数を使 うと、手元で特別なソフトウェアをインストールすることなく確認できます。 ------------------------------------------------------------------------ > atob("RkxBR3tGN1AgMTUgTjA3IDUzQ1VSM30=") < "FLAG{F7P 15 N07 53CUR3}" ------------------------------------------------------------------------ 逆にBase64エンコードするときはJavaScriptのbtoa関数を使います。 ------------------------------------------------------------------------ > btoa("FLAG{F7P 15 N07 53CUR3}") < "RkxBR3tGN1AgMTUgTjA3IDUzQ1VSM30=" ------------------------------------------------------------------------ atob、btoaはIE10以降の最近のブラウザ、Chrome、Firefox、Opera、Safariで使 えるグローバル関数です。覚えておきたいテクニックの一つですね。 予選問題「Netowrk 100」出題者:白神一久(SECCON実行委員会)より ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ SECCON 2014 実行委員会は、多くの皆様からの無償のご支援と、スポンサー   企業様からの協賛金によって運営されています。 ……………………………………………………………………………………………… ▼ メルマガの配信停止はこちらよりお手続き下さい。 http://2014.seccon.jp/optout.html ……………………………………………………………………………………………… Copyright (C) 2014 SECCON 2014 実行委員会 All rights reserved. 掲載内容の無断転載を禁じることはありませんのでご安心下さい