MNCTF2021 WriteUp
ことの始まり
某フィッシングハンターの先輩「お疲れー!!これ上げる・・・」
自分「おっ?なんすか、ありがとうございます!!」
そんなこんなで先輩から受け取った中身には MNCTF2021 の案内が入っていた・・・。
自分「夜勤明けだけど面白そうだしでるか!」
ということで株式会社マクニカ / マクニカネットワークス株式会社さん主催のMNCTF2021に出てみたので WriteUp!! を書いていきます。(仕事が忙しくて書くのだいぶ遅くなったのはご愛嬌・・・・)
- ことの始まり
- STAGE: てしがわら君 空港編
- Wifiユーザ情報 (NWTWORK)
- チケット番号(MISC)
- ラウンジクーポン(REVERSING)
- 謎の男(CRYPT→WEB)
- STAGE: 株式会社マクニキ編
- IPアドレス特定
- MACアドレス
- 不正なプロセス
- 結果と感想
STAGE: てしがわら君 空港編
ドラクエ風?にCTFの問題をときながらストーリーが進むという珍しい形のCTFでした。オンラインゲームの移動方法で操作でき、移動して色々調べるだけでも探索してる感があって面白いです。
Wifiユーザ情報 (NWTWORK)
PCAPからWifi用認証Webサイトのユーザ名、パスワードを見つけ、パスワードを入力してください
キャプチャの中身からフラグをみる問題。
Wifi認証Webサイトのパスワードがフラグになっているとのことなので、中身をみてHTTPの通信がないか見てみます。
すると、上の図のように"/wifiweb/login.php"といういかにもコンソールにログインしてるっぽいPOSTリクエストのやり取りがあるので中身を確認します。
レスポンスがSuccessとなっているリクエストのパスワードがフラグ!!
FLAG = c5GZDHbQ
チケット番号(MISC)
この写真から12桁のチケット番号を調べて入力してください。
問題をみて、CTFでよくある画像解析系?の問題かなと思い、GIMPやモザイク破壊ソフトでなんとかできないか試してみるもののうまくいかなかった・・・・。
やってるうちに、飛行機のチケットならバーコード読み込んだらなんとかなるんじゃね
?と思い、スマホにScanditというアプリを入れて読み込んでみたらすんなり解けました。
実際にデコードしてみた結果はこちら。
懇親会では他のアプリを使ったり、色々な方法を使って解いている方がいらっしゃったので、気になる方は別のWriteUpを参考にみてみてください。
FLAG=809213423472
ラウンジクーポン(REVERSING)
空港ゲート前におもむいて右上の謎の男に話しかけるとイベント発生!!
このAndroidアプリに入力すべきクーポンの文字列を入力してください。
Androidアプリの中身からクーポンの文字列を解析して記入しろって問題!
loungeapp.apk というapkファイルが入手できるので、解析していく。
apkファイルの解析方法は色々あると思うけど、自分は仕事でもよく使っているjadx-guiを使用して逆コンパイルしました。
中を見ていくとSecondfragment.javaの中でクーポンコードを判別している関数が書かれています。
FLAG=ILOVENAFIRSTCLASS9432
謎の男(CRYPT→WEB)
暗号系の問題と書いてあったけど参加者の指摘によりWEBの問題と表記が変わった問題。自分も正直解いていてWEBだろうな・・・・と思った問題。
先程の空港入り口から空港ラウンジに入って謎のおとこに話かけるとイベントスタート。(さっきも謎のおとこに話しかけてた気がするが・・・。)
ちなみに空港編は基本的に前の部屋には戻れない仕様のようです。
隠しの個室は明らかに右下の部分だろうなと思いスタート。
なにかヒントはないかと思いとりあえず部屋を全部調べてみるも何もヒントは得られず・・・。
とりあえずDevelopmentToolsでなにかヒントがないかみてみる。
するとコンソール画面を見てみると下記のようになっている。
Console画面をみてみて数字が記載されていることがわかる。
この数字は主人公(操作しているてしがわら君)のマップ上で存在している座標を表していると操作しているとわかったので、リクエストパラメータいじればおそらくクリアだなと思いリクエストを見てみる。
(自分で学生のころゲーム作ったことある人とかだとおそらくピンときやすいかな・・・、キャラクターのマップ上の位置とかデバックでだすよね・・・)
謎のおとこに話しかける際のリクエストレスポンス
Cookieの「MNCTF2021_airporty」がY座標、「MNCTF2021_airportx」がX座標を表していることがわかります。
そのため、個室にうまく入れるように下記のようにリクエストを投げて上げるとフラグが出るはず。
フラグ回収のためのリクエストレスポンス
ということで「MNCTF2021_airporty」の値を「10」に、「MNCTF2021_airportx」の値を「14」に改ざんすることで無事にフラグをゲット!!
FLAG =MNCTF{GAME_CHEATER}
ここまででSTAGE1 が終了!!
STAGE: 株式会社マクニキ編
セキュリティ担当として入社したという設定で動かしていくというシナリオの模様!!
さっきのSTAGEより探索範囲が広くて楽しい!!
支持に従って人事から社員証をもらった後の一言、入社そうそうインシデント対応とりあえずしろって言われるあたり闇が深く感じる。ゲームのシナリオだから実際初日から挨拶なしでインシデントよろしくみたいな会社きっとないよね・・・・?
(まだ転職を経験してないのでわからないけど・・・まさかね・・・・・)
IPアドレス特定
担当のうえださんに話しかけることでゲームスタート!!
会話の内容実際に言われたらこころ折れるな・・・と思いました。
気を取り直してサーバルーム内のとあるサーバをチェックすると問題スタート。(地味にどれが対象か探すの大変だったりした。)
FWのログからブラックリストのIPアドレス「87.113.49.99」と通信している端末のIPアドレスを調べてください。
FWのログはfw.csvというファイルの中にある模様。
中身を検索するとIPアドレスがヒットする。このIPアドレスがそのままフラグとなっている。
FLAG = 192.168.108.21
MACアドレス
うえださんに報告すると新たに問題がもらえます。
サーバルームに戻って再探索!!
ダウンロードしたdhcp.csvというファイルから探せば良いもよう。
186行目に先程のIPアドレスがヒットするMACアドレスがあり、こちらがフラグとなる。
この問題の引っかかり部分としては検索するIPアドレスである「192.168.108.21」がログに2つ出てしまっていること。(製作者も意図していなかった模様。)
2箇所あることに気づかずに結構時間を使ってしまった・・・・。
不正なプロセス
3階のねづかさんの端末からマルウェアを特定しましょう。
うえださんから新たに支持をもらったので3階に向かいます。
ねづかさんに話しかけると問題スタート。
(ねづかさんの端末を回収しろなのでかなりここまでくるの迷ったのは秘密。)
いくつかのコマンド結果を採取しました。不正なプロセスを特定してください。
netstatコマンドの結果とWindowsのtasklistコマンド(Linuxでいうところのpsコマンド)の結果のテキストがもらえる。
今回のそもそもの発端がブラックリストのIPアドレスに接続するというところから始まっているので、まずはnetstatコマンドの中からIPアドレス「87.113.49.99」のものを検索する。
すると、PIDが「11444」のものがヒットするので、tasklistコマンドのログからPIDが「11444」のものを検索する。
検索すると「chrome.exe」と「DriverUploader.exe」の2種類がヒットする。マルウェアは見る限り「DriverUploader.exe」なので、こちらがフラグ!!
FLAG = DriverUploader.exe
結果と感想
CTFの結果としては最後の一問だけ解けずに801点中の701点でした。(15位)
20位までのランキングは3Dの会場で投影されていたみたいです。(写真とか取り忘れた・・・・。)
時間差で負けたことと最後のリバーシングの問題が解けなかったのが悔しかったので弱い部分は勉強していきたいと思いました。
(来年は夜勤明けとかいうコンディションではなく、普通のコンディションで受けたい・・・・)
最後に、面白いCTFを紹介してくれたフィッシングハンターの先輩ことにゃん☆たくさんと開催してくれたマクニカネットワークス株式会社、株式会社マクニカのみなさんに感謝。
ぜひ次回も調整して参加しよう・・・!