ichirin2501's diary

いっちりーん。

不出来な自作crackmeの解説その1

問題のcrackmeはこちら

1段階

この16進数の冒頭は 50 4b 03 04 つまりZIPのシグネチャです。
file signatureの一覧があるサイトとか http://www.garykessler.net/library/file_sigs.html
ということで、バイナリとして書き込んでファイルを作成
ちなみに私が使用してるバイナリエディタは Stirling

2段階

解凍しようとするとパスワードがかかってて解凍できない、と言われます。
ブルートフォースでは(恐らく)開かないです。
と、言うのも、「そもそもパスワードなんて設定していないお!」
あと、unzipコマンドで解凍しようとすると、〜〜


Archive: final.zip
file #1 (hoge.exe):
mismatch between local and central GPF bit 11 ("UTF-8"),
continuing with central flag (IsUTF8 = 0)
[final.zip] hoge.exe password:
明らかに何かおかしい表示が…
一応hint?として、このような表示が出るようにしてみました。
zip format http://www.onicos.com/staff/iz/formats/zip.html


zipのパスワード有と無の違いは、Extended local headerです。
パスワードが設定されてないときはこのヘッダがありません。
(バイナリ眺めてたらそういう特徴があったので…合ってるか不安、ごめんなさいw)
というわけで?、このzipファイルにはExtended local headerがありません。
ここまで来れば、
「パスワード要求されてるだけでは?」と思い至ります…よね!!
あとはどこでパスワード要求が決まるか、
それは General purpose bit flag
パスワードが設定されてるときは 0009 の値になります。
あと、標準圧縮なら 0000 になりますが、圧縮率で値が変化します。
winrar{000a(高圧縮)},zip{ 0002(高圧縮),0004(低圧縮) } でした。
解凍はwinrar3.70, Lhaca0.97, UnZip6.00 by Debian で試してみましたが、
0009から 000a or 0002 or 0004 のどれに変更しても
上記のソフトなら問題なく解凍することができるようです。(ようです、とか言っちゃってる始末)
hoge.exeのLocal file headerのGeneral purpose bit flag
だけが0009になってましたが、これがunzipでエラーを出力させるために変更したところです。
ここがパスワード無の0000,0002,0004のいずれか値ならエラーは出力されません。
000aはwinrarの高圧縮時の値なので、debianのunzipだとエラー吐かれましたw
というわけで、パスワードの要求はCentral directoryのGeneral purpose bit flag
で決まります。

3段階?

無事、解凍しますと、
hoge.exe
img_001.png
outguess_2.jpg
の3つのファイルが君臨します。
まず、img_001.pngから取り掛かることにします。
はい、見るからに 埋 め 込 み ですね。
てきとーに検索をかけますと、別のpng画像ファイルが埋め込まれてるのが発見できます。
(検索かけるまでもねえな…これ…)
取り出すと、QRCodeの画像です。
手元にはiPhoneしかないので他だと分からないのですが、
恐らく「PK」と出力されると思います。
散々zipのバイナリを見てきたのでわかりますよねw
zipファイルのバイナリが直接埋め込まれたQRCodeです。
問題はどうやって取り出すか、です。バイナリ埋め込みのQRCodeなんて誰得w


QRCodeをデコードしてくれるサービス http://zxing.org/w/decode.jspx
ファイルを直接アップして出力する方法だと正しく見れないw
Web上に上げて、URL指定によるデコードだとバイナリ出力を行ってくれます。
これで取り出すことができます。
でも、ここでもまたパスワード要求><
今度は残念ながら本当にパスワードがかかってます。
とにかくこれは後回し。
ちなみに、バイナリを埋め込んで生成したqrcodeのプログラムは以下を参考に作りました。
http://libpanda.s18.xrea.com/qrcode.html


pyqrcodeを入れればencodeもdecodeも出来るみたいですが、
なんかインストールでエラーでるorz


次回に続く。