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

ブログの名前なんて適当で良いのでは

説明を求めるな、記事を読め

【過去問】MNCTF2015【Writeup】

2日間かけてMNCTF2015というCTFの過去問題を解いてみた。あまり詳しく開催元などは調べていないが、どこかの企業のものらしい.公式解答が出ているのがとてもありがたい。自分なりに解けた問題と解けなかった問題でまとめてみた。久しぶりに使ったツールもあり、なんというか良い基礎練習になったという感じだった.ただ後にも出てくるが,公式解答が丁寧でわからなかった問題に対する理解がとても深まったのが良かった.

公式解答

http://blog.macnica.net/blog/files/MNCTF_Answer.pdf

解けた問題

1 点呼 [Misc1]

例題

MNCTF2015

2 早期警戒 [Misc60]

539a0197ea3dbfeb2089fb22b2dcb8e9といういかにもハッシュ(MD5)っぽい値が問題文にあるので、これで検索してみたところとあるマルウェアが引っかかった。 https://malwr.com/analysis/MmZjMGNhNTA2ZjFjNGZiOWE0OTRiMTY1MDVhM2I3YmM/ このサイトのNetwork Analysisのとこで54.245.114.184のIPがあり、おそらくこれが通信相手のIPだろうと思い提出したら正解だった。

54.245.114.184

3 漏洩情報 [Network60]

dataleak.pcapというファイルを渡される。問題文からやりとりしているファイルを特定すれば良いとわかったので、NetworkMinerでFilesを見てみた。そうするとsecret.zipというファイルがったので抜き出して展開したところ、secret.cabというファイルが現れた。.cabがなんだったか知らなかったので、検索してみた.

CAB(キャブ)は、主にMicrosoft Windowsで用いられるデータ圧縮のファイルフォーマットの一つ。CABはCabinet(キャビネット)の略語。

らしくとりあえずWindows8.1上では普通に解凍することができた。中身を見るとsecret.docxがあり、開いてみるとフラグが載っていた。

URPCAPANALYZER

5 隠蔽検体 [STEGANO60]

画像にマルウェアが埋め込まれているとのことなので、定番のbinwalkを使ってみた。そのところ、以下のような結果が得られた.

binwalk MNC_Logo.png

DECIMAL       HEXADECIMAL     DESCRIPTION

0             0x0             PNG image, 158 x 41, 8-bit colormap, interlaced
2444          0x98C           Zip archive data, at least v2.0 to extract, compressed size: 225553, uncompressed size: 339456, name: malware.exe
228095        0x37AFF         End of Zip archive


つまりzipが格納されているとわかったので、

binwalk -e MNC_Logo.png

zipファイルとして保存して、展開すると中にmalware.exeがでてきたので、 これのハッシュ値をとる。

md5 malware.exe
670ef95dfd79c3f6c1d3f63de5e3a2a3

よって

670ef95dfd79c3f6c1d3f63de5e3a2a3

7 不正昇格 [Misc120]

Windowsコマンドプロンプトで使えるコマンドを答えていく感じでクロスワードを埋めていく。はっきりいってほとんど知らなかったので片っ端からggった.量が多いので割愛するが、覚えておくと良いコマンドが多いなという印象だった。最後質問をされるのでそれもggるとでてくる.

Lonnie Snowden

8 不正使用 [Binary100]

与えられたexeファイルに対してとりあえず実行してみると、コマンドライン引数にライセンスキーを与えるとわかる。とりあえず

cat easycrack.exe | less

してみたところ、

Please input the licence key.

MNCTF.exe <Licence Key>

STANDALONE-LIC-2015-01-01


This is the answer.


%d

を見つけた。まさかと思ってSTANDALONE-LIC-2015-01-01をしてみたところ、153173が表示されたのでこれを提出したら正解だった.

153173

10 強固暗号[Crypt120]

暗号化されたzipファイルに対して

unzip -l backup20150701.zip

Archive: backup20150701.zip Length Date Time Name


534728 07-04-15 00:48 mynumber_list.xlsx 10301 07-04-15 00:50 mynumber_template.xlsx


545029 2 files という結果が得られた。また配布物には同名ファイルのmynumber_template.xlsxがあるので、既知平文攻撃ができるのではないかと判断した。そのため中のmynumber_template.xlsxを取り出すために、まずはmynumber_template.xlsxをリネームしておく.(取り出したとき同名なので上書きされてしまうから)

mv mynumber_template.xlsx plain.xlsx
extract backup20150701.zip mynumber_template.xlsx
backup20150701.zip  mynumber_template.xlsx  plain.xlsx

これらのファイルを使ってpkcrackで既知平文攻撃を仕掛ける.

pkcrack -c mynumber_template.xlsx -p plain.xlsx 

Files read. Starting stage 1 on Sun Oct 11 18:07:38 2015
Generating 1st generation of possible key2_10312 values...done.
Found 4194304 possible key2-values.
Now we're trying to reduce these...
Lowest number: 990 values at offset 6656
Lowest number: 962 values at offset 5342
Lowest number: 957 values at offset 5331
Lowest number: 937 values at offset 5327
Lowest number: 902 values at offset 5326
Lowest number: 900 values at offset 5324
Lowest number: 840 values at offset 5323
Lowest number: 833 values at offset 5322
Lowest number: 800 values at offset 5316
Lowest number: 737 values at offset 5315
Lowest number: 720 values at offset 5314
Lowest number: 707 values at offset 5312
Lowest number: 658 values at offset 5311
Lowest number: 650 values at offset 5300
Lowest number: 634 values at offset 5299
Lowest number: 581 values at offset 5291
Done. Left with 581 possible Values. bestOffset is 5291.
Stage 1 completed. Starting stage 2 on Sun Oct 11 18:07:51 2015
Ta-daaaaa! key0=7305ec30, key1=ad7e6e5d, key2=14ba96c5
Probabilistic test succeeded for 5026 bytes.
Ta-daaaaa! key0=7305ec30, key1=ad7e6e5d, key2=14ba96c5
Probabilistic test succeeded for 5026 bytes.
Stage 2 completed. Starting password search on Sun Oct 11 18:08:14 2015

この結果よりkey0=7305ec30, key1=ad7e6e5d, key2=14ba96c5を使ってbackup20150901.zipを解凍する.

zipdecrypt 7305ec30 ad7e6e5d 14ba96c5 backup20150701.zip crack.zip
unzip crack.zip -d cracked
Archive:  crack.zip
 extracting: cracked/mynumber_list.xlsx  
 extracting: cracked/mynumber_template.xlsx

これのmynumber_list.xlsxを開いて、てしがわらで検索してそのパスワードを提出すると正解だった。

232469298736

11 内部犯行 [CRYPT159]

email.txtというファイルがあるのでとりあえずcurlしてきた。そしてテキストエディタ(EmacsEmacsEmacs(ry)で開くと何やら、Start of Messageからやたらとタブやスペースで埋まっていることに気づく。どうやら文字をタブやスペースで変換する系統の暗号らしい。同ファイルには、丁寧にも暗号化ソフトのDLリンクがあるのでダウンロードしてきて使ってみた。 スクショは省くが、文を入力してEncryptを押すと暗号化された文字(空白やスペースだけなので見えない)が出力される。ためしにaを暗号化してみた。次にbを暗号化してみた。そうすると、一部分が一致していることに気づく。ためしに暗号化された値をそのまんまDecryptすると通る。これは、一致している部分がパスワード的な役割になっているのではないかと考え、暗号化文にこの部分を付け足してDecryptするとフラグが得られた.

WEAKCRYPTO

解けなかった問題

4 感染端末 [Forensic60]

こちらも公式解答をみるとマルウェアの通信の特徴からの理屈が載っていてなるほどという感じだった.csvファイルを渡されてログが大量にあるのでExcelの統計的な使い方に慣れていれば、解けたのかなぁという感じだった.

6 書込文書 [Binary100]

一番よくわからなかった問題.公式解答だと静的解析ではなく,動的解析をしなければいけなかった模様.まったく未知の分野だったので勉強になった.ProcessMonitorという新しいツールを手にいれた.

9 脆弱会社 [Web120]

公式解答がとても丁寧で勉強になった。初心者には一読するべきだと感じた(初心者の感想)