MNCTF2021 WriteUp

ことの始まり

某フィッシングハンターの先輩「お疲れー!!これ上げる・・・」

自分「おっ?なんすか、ありがとうございます!!」

そんなこんなで先輩から受け取った中身には MNCTF2021 の案内が入っていた・・・。

自分「夜勤明けだけど面白そうだしでるか!」

ということで株式会社マクニカ / マクニカネットワークス株式会社さん主催のMNCTF2021に出てみたので WriteUp!! を書いていきます。(仕事が忙しくて書くのだいぶ遅くなったのはご愛嬌・・・・)

f:id:shsm385:20210712232911p:plain

 

STAGE: てしがわら君 空港編

ドラクエ風?にCTFの問題をときながらストーリーが進むという珍しい形のCTFでした。オンラインゲームの移動方法で操作でき、移動して色々調べるだけでも探索してる感があって面白いです。

f:id:shsm385:20210712235626p:plain

f:id:shsm385:20210718222319p:plain

Wifiユーザ情報 (NWTWORK)

 PCAPからWifi用認証Webサイトのユーザ名、パスワードを見つけ、パスワードを入力してください

キャプチャの中身からフラグをみる問題。

Wifi認証Webサイトのパスワードがフラグになっているとのことなので、中身をみてHTTPの通信がないか見てみます。

f:id:shsm385:20210713000717p:plain

すると、上の図のように"/wifiweb/login.php"といういかにもコンソールにログインしてるっぽいPOSTリクエストのやり取りがあるので中身を確認します。

f:id:shsm385:20210713001204p:plain

レスポンスがSuccessとなっているリクエストのパスワードがフラグ!!

FLAG = c5GZDHbQ

チケット番号(MISC)

 この写真から12桁のチケット番号を調べて入力してください。

 

f:id:shsm385:20210713001652p:plain

問題をみて、CTFでよくある画像解析系?の問題かなと思い、GIMPやモザイク破壊ソフトでなんとかできないか試してみるもののうまくいかなかった・・・・。

やってるうちに、飛行機のチケットならバーコード読み込んだらなんとかなるんじゃね
?と思い、スマホにScanditというアプリを入れて読み込んでみたらすんなり解けました。

Scandit Barcode Scanner

Scandit Barcode Scanner

  • Scandit AG
  • ユーティリティ
  • 無料

apps.apple.com

実際にデコードしてみた結果はこちら。

 

f:id:shsm385:20210718214148p:plain

懇親会では他のアプリを使ったり、色々な方法を使って解いている方がいらっしゃったので、気になる方は別のWriteUpを参考にみてみてください。

FLAG=809213423472

ラウンジクーポン(REVERSING)

空港ゲート前におもむいて右上の謎の男に話しかけるとイベント発生!!

f:id:shsm385:20210718214948p:plain

f:id:shsm385:20210718215016p:plain

このAndroidアプリに入力すべきクーポンの文字列を入力してください。

Androidアプリの中身からクーポンの文字列を解析して記入しろって問題!

loungeapp.apk というapkファイルが入手できるので、解析していく。

apkファイルの解析方法は色々あると思うけど、自分は仕事でもよく使っているjadx-guiを使用して逆コンパイルしました。

中を見ていくとSecondfragment.javaの中でクーポンコードを判別している関数が書かれています。

f:id:shsm385:20210718215735p:plain

FLAG=ILOVENAFIRSTCLASS9432

謎の男(CRYPT→WEB)

暗号系の問題と書いてあったけど参加者の指摘によりWEBの問題と表記が変わった問題。自分も正直解いていてWEBだろうな・・・・と思った問題。

f:id:shsm385:20210718220200p:plain

f:id:shsm385:20210718220354p:plain

先程の空港入り口から空港ラウンジに入って謎のおとこに話かけるとイベントスタート。(さっきも謎のおとこに話しかけてた気がするが・・・。)

ちなみに空港編は基本的に前の部屋には戻れない仕様のようです。

 

隠しの個室は明らかに右下の部分だろうなと思いスタート。

なにかヒントはないかと思いとりあえず部屋を全部調べてみるも何もヒントは得られず・・・。

とりあえずDevelopmentToolsでなにかヒントがないかみてみる。

するとコンソール画面を見てみると下記のようになっている。

f:id:shsm385:20210718220749p:plain

Console画面をみてみて数字が記載されていることがわかる。

この数字は主人公(操作しているてしがわら君)のマップ上で存在している座標を表していると操作しているとわかったので、リクエストパラメータいじればおそらくクリアだなと思いリクエストを見てみる。

(自分で学生のころゲーム作ったことある人とかだとおそらくピンときやすいかな・・・、キャラクターのマップ上の位置とかデバックでだすよね・・・) 

謎のおとこに話しかける際のリクエストレスポンス

f:id:shsm385:20210718221632p:plain

Cookieの「MNCTF2021_airporty」がY座標、「MNCTF2021_airportx」がX座標を表していることがわかります。

そのため、個室にうまく入れるように下記のようにリクエストを投げて上げるとフラグが出るはず。

フラグ回収のためのリクエストレスポンス

f:id:shsm385:20210718221834p:plain

ということで「MNCTF2021_airporty」の値を「10」に、「MNCTF2021_airportx」の値を「14」に改ざんすることで無事にフラグをゲット!!

FLAG =MNCTF{GAME_CHEATER} 

 ここまででSTAGE1 が終了!!

STAGE: 株式会社マクニキ編

f:id:shsm385:20210718222337p:plain

セキュリティ担当として入社したという設定で動かしていくというシナリオの模様!!

さっきのSTAGEより探索範囲が広くて楽しい!!

f:id:shsm385:20210718223206p:plain

支持に従って人事から社員証をもらった後の一言、入社そうそうインシデント対応とりあえずしろって言われるあたり闇が深く感じる。ゲームのシナリオだから実際初日から挨拶なしでインシデントよろしくみたいな会社きっとないよね・・・・?

(まだ転職を経験してないのでわからないけど・・・まさかね・・・・・)

IPアドレス特定

f:id:shsm385:20210718223719p:plain

f:id:shsm385:20210718223730p:plain

担当のうえださんに話しかけることでゲームスタート!!

会話の内容実際に言われたらこころ折れるな・・・と思いました。

f:id:shsm385:20210718223923p:plain

f:id:shsm385:20210718223932p:plain

気を取り直してサーバルーム内のとあるサーバをチェックすると問題スタート。(地味にどれが対象か探すの大変だったりした。)

FWのログからブラックリストIPアドレス「87.113.49.99」と通信している端末のIPアドレスを調べてください。

FWのログはfw.csvというファイルの中にある模様。

f:id:shsm385:20210718224234p:plain中身を検索するとIPアドレスがヒットする。このIPアドレスがそのままフラグとなっている。

FLAG = 192.168.108.21

MACアドレス

f:id:shsm385:20210718224437p:plain

f:id:shsm385:20210718224447p:plain

うえださんに報告すると新たに問題がもらえます。

サーバルームからDHCPサーバのログを入手し、当該端末のMACアドレスを調べてください。

サーバルームに戻って再探索!!

f:id:shsm385:20210718224647p:plain

f:id:shsm385:20210718224658p:plain

DHCPサーバのログから、当該端末のMACアドレスを調べてください。

 ダウンロードしたdhcp.csvというファイルから探せば良いもよう。

f:id:shsm385:20210718225033p:plain

186行目に先程のIPアドレスがヒットするMACアドレスがあり、こちらがフラグとなる。

この問題の引っかかり部分としては検索するIPアドレスである「192.168.108.21」がログに2つ出てしまっていること。(製作者も意図していなかった模様。)

2箇所あることに気づかずに結構時間を使ってしまった・・・・。

不正なプロセス

f:id:shsm385:20210718225520p:plain

f:id:shsm385:20210718225528p:plain

3階のねづかさんの端末からマルウェアを特定しましょう。

うえださんから新たに支持をもらったので3階に向かいます。

 

f:id:shsm385:20210718225747p:plain

f:id:shsm385:20210718225755p:plain

ねづかさんに話しかけると問題スタート。

(ねづかさんの端末を回収しろなのでかなりここまでくるの迷ったのは秘密。)

いくつかのコマンド結果を採取しました。不正なプロセスを特定してください。

 netstatコマンドの結果とWindowsのtasklistコマンド(Linuxでいうところのpsコマンド)の結果のテキストがもらえる。

 

今回のそもそもの発端がブラックリストIPアドレスに接続するというところから始まっているので、まずはnetstatコマンドの中からIPアドレス「87.113.49.99」のものを検索する。

f:id:shsm385:20210718230713p:plain

すると、PIDが「11444」のものがヒットするので、tasklistコマンドのログからPIDが「11444」のものを検索する。

f:id:shsm385:20210718231014p:plain

検索すると「chrome.exe」と「DriverUploader.exe」の2種類がヒットする。マルウェアは見る限り「DriverUploader.exe」なので、こちらがフラグ!!

FLAG = DriverUploader.exe

結果と感想

CTFの結果としては最後の一問だけ解けずに801点中の701点でした。(15位)

20位までのランキングは3Dの会場で投影されていたみたいです。(写真とか取り忘れた・・・・。)

時間差で負けたことと最後のリバーシングの問題が解けなかったのが悔しかったので弱い部分は勉強していきたいと思いました。

(来年は夜勤明けとかいうコンディションではなく、普通のコンディションで受けたい・・・・)

最後に、面白いCTFを紹介してくれたフィッシングハンターの先輩ことにゃん☆たくさんと開催してくれたマクニカネットワークス株式会社、株式会社マクニカのみなさんに感謝。

ぜひ次回も調整して参加しよう・・・!

【kali linux】Failed to fetche http://http.kali.org/kali/dist/kali-rolling/InRelease Connection failed の対応

ペンテストの勉強やCTFの練習のために kali linux を導入した際に表題のエラーで引っかかったので対応した際のメモ.

エラー画面

sudo apt-get update

上記のようにパッケージのアップデートを行うと以下の画像のようにエラーが出てきました.

f:id:shsm385:20200610100425p:plain

対応策

以下のファイルのリポジトリのURLをhttpからhttpsに変更すればエラーが解消されます.

# 書き込み
sudo vi /etc/apt/sources.list

# 設定変更
#deb http://http.kali.org/kali kali-rolling main non-free contrib
deb-src https://http.kali.org/kali kali-rolling main non-free contrib

 以下設定変更画面の画像になります.

f:id:shsm385:20200610111311p:plain

パッケージアップデートの確認

f:id:shsm385:20200610111357p:plain

正しくアップデートができていることが確認できました.