読者です 読者をやめる 読者になる 読者になる

Cat.6(ねころっく)

セキュリティで、生きていく

サイバーコロッセオ×SECCONに参加した話

CTF セキュリティ Writeup

先日、総務省主催のサイバーコロッセオ×SECCONに参加しました。

来る2020東京五輪のサイバーセキュリティの先駆者と、東京五輪委員会の偉い人から激励をいただきました。五輪におけるサイバーセキュリティのプログラムの第一弾みたいです。

f:id:reinforchu:20170307020627p:plain

私はチーム「Harekaze」内から、ふるつきさん(@theoldmoon0602)、かたわれさん(@_ktwr)、lv7777さん(@levena_evenas)で結成した「Musashi」で出ました。

f:id:reinforchu:20170307021634p:plain

下記、弊チームメンバの記事です。

furutsuki.hatenablog.com

lv7777.hatenablog.com

kataware.hatenablog.jp

 

出題された問題(サーバ)は、素数問、Shell系問、IoT問、pcap問などが出題されました。スクリーンショット等は扱いが不明なので控えます。

※Shell系問題と一纏めにするのは適切ではないですが、ncでシェル叩いてflag探したり、BOFしたり、シェルコード投げるとかの問題群です。

 

●IoT問題

私の得手不得手からWebから着手しました。Webカメラの問題で、1つめのflagはカメラの角度を操作外の値に書き換えることですぐに“見えた”ですが、どうにもIncollectで「あれれー?」と首かしげてたら、lv7777さんにSolveしてもらいました。初心者を露呈してしまった……

ブラウザの開発ツールで解けるレベルの問題でしたが、次のリクエストでflagが“見えます。”

POST /cgi-bin/webcam.cgi HTTP/1.1
Host: 10.100.3.1:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:53.0) Gecko/20100101 Firefox/53.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Referer: http://10.100.3.1:8080/cgi-bin/webcam.cgi
Content-Type: application/x-www-form-urlencoded
Content-Length: 25
Connection: close
Upgrade-Insecure-Requests: 1

 

direction=right&angle=105

 SECCON{next, find the debug port and hack it}

そして、次のflagを探すんですが、Webアプリケーションの視点でつついてしまったので、結局そこから先に進まず相当時間を浪費しました……

解説を聞くと、Webは関係なくてnmapでTCPのフルポートスキャンをすれば5万いくつかのポートが開いているので、そこから入ればWebカメラCUIに入れるので進めるよ、とのこと。

禁止事項に、負荷をかけること禁止、総当りなどで解く問題は出題されない、という文言はあったので、ポートスキャンはしなかった。脆弱性診断業務でScannerかける行為はインパクトが大きく、相当慎重に行う経験上万が一、対向サーバ落として迷惑かけても嫌なのでひ弱になってしまった。運営に確認するか、もうやっておけばよかった。

 

●pcap問題(Forensics)

勝手にWeb問だと思いこんでいた問題が煮詰まってきたので次にpcap問を着手しました。約780MBのpacpの中に怪しい通信があるので特定せよ、という問題。ファイルサイズが大きく眺めてたら日が暮れるので、NetworkMiner, Wireshark, エディタで開いて検索するなどして、IPアドレスの列挙、平文のHTMLドキュメントの抽出、イメージファイルの抽出など行い、怪しそうなものを探りました。

IPアドレスの列挙の方法はスマートではないけど、NetworkMinerの解析結果のディレクトリがIPアドレス単位で分けられているので、コマンドプロンプトdir /BIPアドレス一覧が得られます。画面リダイレクトすると、IPアドレスが列挙されたTextファイルが出てきます。(数が合っているかどうかは分かりませんが……)

結局、手掛かりも見つけられなかった。解説では、TCP Port 22/23, DNS, ICMPのパケットがflagでした。問題文通り、見事にインターネットノイズに惑わされた。

 

●Shellとかの問題

Shellとかの問題は、私が覗く頃には他のチームメンバがちゃかちゃか解かれてて、私のベースの知識がなさ過ぎてそれ以上進まなかった。解説では、私の知らない使い方だったのでにゃーんでした。解説で使われたテクニックは今後CTFで応用が利きそうです。

素数の問題は、4096bitまでのp*qのnを入れる問題でしたが着手が遅すぎた。たぶん最初に着手しておけば、幾分コンスタントに点数が稼げたはず。

 

●感想 

King of Hill形式のはずがDefenseをするだとか、全く出来なかった。(0pt)

0完最下位ではないものの順位は芳しくなかった。終始私の口数が少なかったので、コミュニケーションとらないと、と自戒。加えて、Slackで問題ごとのスレッド立てて各自、結果・コードを共有する方法が取れなかったのはマイナスだった。

他の方も言ってましたが、競技用ネットワークは外に出れないので、ググったり出来ず少々つらいところはあった。ラップトップ2台か、NIC2つ欲しいよねと。後々気づきましたが、モバイルルータをPCのUSBに挿して静的ルート書いとけば解決してた。

チームで、大会で、というのは全然なかったので経験値になりました。

f:id:reinforchu:20170307015314j:plain