情報力が低い人のためのCTF
テ〇ルズ オブ SECCON ~自分の無力さを知るためのCTF~
Advent Calender 12/07
IGGG Advent Calender 2015の7日目分記事はこちらですよ
本当にこれを部活の記事として、そして、wikiに載せていいのか… かつてないほど情報がうっすい記事をぶん投げていく予定
これ系の話何度もしてるんだよね…
今回する話は?
CTFとは
Capture The Flagの略 日本語的には「旗取り」といったところでしょうか(直訳)
具体的にはプログラミングのコンテストの一つ その中でも、プログラミングの総合部門とでもいえるようなさまざまなジャンルから構成されるコンテストです
コンテストの目的としては情報セキュリティの技術を深める目的があります ので、参加することで得られる知識がとにかく多いです
情報力が低いほど得られるものが多く、高い人はそれを活かせる場というわけです
競技ルールは主に二つ 問題出題型 出された問題を分析・解析し、隠されたフラグを見つけるというもの
クイズみたいなイメージ
フラグには難易度などによりポイントが割り振られており、参加者はその獲得フラグのポイント合計で順位を競う
オンラインの大会も多くで気軽に参加できる
サーバ攻防型
- チームごとに与えられたサーバを防衛しながら、他サーバを攻撃し、フラグを奪い守るというもの
- こっちは参加者同士の戦いになるSECCON CTF2015
今回話の主な題材とするのはSECCON CTF 日本最大規模のCTFの大会
問題出題型のCTF
開催日は12/05、12/06 つまり昨日で、本題
CTFは問題を解かせっきりで、答えを明かさない
そこで解いた人が「こんな風に解きました!」というのをWrite upという形で公開する そういえば昨日早速SECCON CTFのwrite upを書かれていたような…
しかもその人もAdvent Calenderだっていっていたような…
キグウダナー
あぁそうだここだここだ(棒) SECCON 2015 Online 予選 Writeup · GitHub
私も書こうかなと思ったけどそうは問屋がおろさない 私は情報力が低いので…
なので回答にあたって色々調べたりあがいたことをまとめよう
CTFの目的は「セキュリティ技術の向上」 そういう意味では伸び白だらけで毎回色々「知らなかった…」ってなるの私の方が目的を体現しているといえる
では書きます
not write up
Unzip the file (Crypto) 100pt
Crypto部門の問題ですね Crypto自体は「隠れた、見えない、秘密の」とかいった意味
ファイルなどから隠されたものを見つけます
まぁジャンルは裁量的なものもあるので、おおよその中身くらいでとらえるとよい
問題ではパスワード付きzipファイルが配られました これを頑張ってパスワードを解析してzipファイルを開けるのがまぁ取っ付きポイントでしょう
ここで大事な知識がどのようにzipファイルのパスワードを開けるかで、そのためにzipの仕組みについて勉強するわけですね いやぁ情報力高まりますね
でポイントなのが、既知平文攻撃が弱点ということ ひげ君が教えてくれました
すごくざっくりいうとzipの中身に入っているものがわかってなおかつ、それが簡単に入手できるものだった場合、それを基にパスワードがわかってしまう なんでそれが使えるの?
zipはDeflateという方式で圧縮を行う ファイルの一部がわかっても、圧縮後の全体は予測できない。なのでこの段階では既知平文攻撃はきかない
でも、もしも仮にファイルの全体がわかってる場合、底から解読ができる
そしてzipはファイル名を圧縮しない
つまりzipの弱点と、圧縮方法が生んだ弱点なのだ いやぁ非常にセキュリティだ
Q. 因みに解けた? A.解けた(私以外が)
みんなもzipファイルに入れるものは気を付けよう 特に一般的に手に入るもの、dll形式のライブラリとか
SECCON WARS 2015 (何ジャンルだっけな) 100pt
またあなたか 去年も出てたんですよね、この形式 SECCON WARS
まず動画見てみましょ SECCON WARS 2015
この動画からQRコードを取り出す問題ですね 去年は手打ちしましたよ
今年はまじめに解こうとしました こんな感じでいこうかなと 1.動画から黄色の字幕が流れているところを取得する
2.黒になりっぱなしのピクセルを黒で、色が切り替わったピクセル事のあるピクセルを白で表わした画像を作る
3.勝利!!やった!!
情報力高そう!
が、私がちんたらしてる間に擬音さんが解きました はや…さすが…
擬音さんの情報力>>>>>>>>>>>>私の情報力
あとからわかったんですが、あの画像のQRコードぼけてるので私の方式だと細かい部分真っ白になるんですよね 結局ダメじゃないですか……
stegano1 (stegano) 100
私が最近凝っているステガノ分野の問題 ステガノ(ステガノグラフィ)とは、ある情報を他の情報の中に埋め込んで存在を隠ぺいすること 「steganos」とは、ギリシャ語で「隠された」を意味するそう
つまりこの技術を使うと、情報を隠したものを見られても、そこに隠した情報には気付かれないなんてことが起こる
スゴイ!!かっこいい!!とはいってられない 逆にいえば、不正プログラムが埋め込まれることもあるってことです…
で今回の問題は「MeFusion.gpjb」というファイルが配られました 問題文には「Find image files in the file」と
とりあえず、拡張子をググりました こんな拡張子はないようです
ちなみに最初私はこのgpjbをjpgに空見して、これを開けないwindowsフォトビューワーに切れてました
で、ファイルを調べるとこれはもともとgifファイルである模様 そして開くと・・・
https://iggg.github.io/resources/assets/wiki/情報力が低い人のためのCTF/image1.png
まっしろ… ここで私問題文とファイル名を見直す…
Find image files in the file...MrFusion...
これ中にほかの画像入ってるんじゃ!? なんてエスパー…
画像は、当然色情報だけで構成されているわけではなく複数のチャンクから構成される 例えばpngであることを示したり表示する画像を示したり…
そして、書式さえ守ればそういうのに該当しない情報もまた埋め込むことができる そこに他の画像のバイナリデータをそのまま埋め込んでいる可能性を見出したのだ
でとりあえず、jpgを探してみると… あった!!
https://iggg.github.io/resources/assets/wiki/情報力が低い人のためのCTF/image2.jpg
ほかにもいろいろある模様 この時点で回答者が全世界で誰もいなかったので、最初に解いたチームへのボーナス点欲しさにヘルプを求めました もちろん自分で解くのも大事だけど、速さは大事だからね…
というか超ボーナス点欲しかった
でひげ氏に助けてもらい解きましたとさ フラグは、SECCON{OCT 21 2015 0728}でした
ひげ氏、さんくす
なおボーナス点はもらえなかった模様
因みに… オリジナルの中には、4種類の画像gif、png、jpg、bmpが埋め込まれてました 故の拡張子gpjbなんですね
またこの日付 OCT 21 2015 0728は、
https://iggg.github.io/resources/assets/wiki/情報力が低い人のためのCTF/image3.jpg
code:_
- バックトゥザフューチャーの日本時刻っぽいですね
- 1分ズレ?知らんな?(原作未視聴)
4042 (Crypto) 100pt
謎の文章が2005年に古代遺跡から発見された。
これは何を意味している?
no-network.txt
と問題文ままです で、no-network.txtが配られました。 なかみは…code:_
423336454237162404065441177440057404126404100404125442052441177240441176403277441
174403277162440006404125404126164440005402121441177404065164777014440000404101415
040431122404125431161404101164404065164431131162440010402121405001441160404100441
160404125404126441175441160431122402141440012404065441174404126164777014440003404
125404065405001440002441176404076240431161404126431131404125441177415040441176240
...略...
ひげ氏の事前調査によると... 0~7の文字しか使われていない
81 * 38 + 15の文字列
画像では?
とのこと なんかこの時、ひげ氏「UTF-9...」的なことを言っていたので、私がそこを突っ込みました
私がしっかり調べてみたところ疑いはかなり増しました 4042 ⇒ RFC4042のこと、ジョークRFCとして提案された
2005年に発見されたという文 ⇒ UTF-9の考案が2005年
変換例がまんまそれ 参考様まんま載せます(参考: http://www.kt.rim.or.jp/~ksk/joke-RFC/rfc4042j.txt)code:_
文字 名称 UTF-9 (8進数表記)
/icons/hr.icon U+0041 LATIN CAPITAL LETTER A 101
U+00C0 LATIN CAPITAL LETTER A WITH GRAVE 300
U+0391 GREEK CAPITAL LETTER ALPHA 403 221
U+611B <CJK 漢字の「愛」> 541 33
U+10330 GOTHIC LETTER AHSA 401 403 60
U+E0041 TAG LATIN CAPITAL LETTER A 416 400 101
U+10FFFD <16面、私用領域の最後> 420 777 375
0x345ecf1b ( 外の UCS-4 値) 464 536 717 33code:_
あとからひげ氏が気づいたことですが、no-network.txt⇒ノーネットワーク⇒ノネット⇒9 オクテット=8とかと同じ系統ですね
やった! ひげ氏とともに、解読に着手
フラグの頭につく、「SECCON{」の''CC''に着目し、 同じ文字列が2連続になってるところを中心に探しピンポイントに解読を試みる私と、
全文デコードのひげ氏で頑張りました
しかし… この時午前7時…
結構疲れてたのか確信があったものの解読は難航…
残念ながら解読には至りませんでした… しかし考えはあっていた模様…残念… 解説は(こちら様)
まとめ
ここまで読んでしまった読んだ方ならお気づきでしょうか…
今年、私、何にもしてません あはははははははははは
去年QRコードと戯れていたころのが活躍していた件について 去年から必死に準備していたのに、なんでQRコード復元でないんですかちくしょおおおおおおおおおおおおおおおお
色々学んだけど何もできない二日間でした ただ色んな意味で勉強になりました 自分のコーディング力不足
知りもしなかった知識
来年はもっと頑張りたいですね…精進あるのみ
皆さんもぜひ来年は一緒にやり、write upを書きましょう!! 私も頑張ります
ではでは参考
Unzip the fileについて http://securitymemo.blogspot.jp/2014/10/blog-post.html
stegano1について http://blog.trendmicro.co.jp/archives/11419
http://www.setsuki.com/hsp/index.htm
4042について http://www.kt.rim.or.jp/~ksk/joke-RFC/rfc4042j.txt
http://seclan.dll.jp/ccutffaq.htm
https://github.com/p4-team/ctf/tree/master/2015-12-05-seccon/4042_crypto_100#eng-version