HellBound Hackers --- Application Cracking --- (binary)

こんにちは、佐藤傑之と申します。バイナリ初心者であり、いろいろご指摘をいただきたく思い今回はバイナリの問題を2つやります。

今回は以下のアプリケーションのパスワードを、見つけます。

Application Cracking 2

f:id:eyesjapan:20141104221412p:plain

Application Cracking 4

f:id:eyesjapan:20141104221422p:plain

私は今6までやっていますが比較的面白かった問題を取り上げています。

Welcome to Hellbound Hackers

以下、write up となりますのでまず解いてみたい方は読まずに楽しんで下さい。

<環境>

・OS windows7ubuntu 14.04

・CPU Intel(R) Core(TM)

・使用ソフト Sothink SWF Decompiler (win)

                         IDA Pro Free 5.0 (win)

                         ollydbg (win)

                         flare (linux)

                       

                        

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

<Application Cracking 2>

f:id:eyesjapan:20141104221412p:plain

これは、バイナリの問題なのは確かなんですけどまあデバッガでいろいろはなくollyを立ち上げて待ってたんですが・・・。

まず、初めに目がつくのはきれーなフォームですね(笑)そして、タイトルバーにFlash playerと書かれています。このウィンドウの上で右クリックをするとまあよく見るメニューが表示されてます。

f:id:eyesjapan:20141104224451p:plain

そうです、swfファイルをexeに変換したアプリケーションです。

これがわかったらもう早いです。

手順を想像します。

①このexeファイルからswfを抽出する。

②そのswfからAction scriptにデコンパイルしてログインのコードを読むです。

①はグーグルでいろいろ調べてSothink SWF Decompilerを使うことにしました。

f:id:eyesjapan:20141104225542p:plain

使い方はすみませんお調べください・・・・

3つのswfファイルが抽出されログインはどうやらapp2[2].swfのようです。

今度は②はlinuxのほうでswfからaction scriptを抽出します。(理由:以前、フラッシュで作成されたwebアプリケーションを解析しゲームをせずに目的のリンクに飛ぶことをflareを使ってやったのでそっちのほうが早いかなと思いました)

f:id:eyesjapan:20141104230853p:plain

flareのインストール、使い方は割愛させていただきます。上のようにデコンパイルできました。もうログインユーザーネームがどれかわかりましたね。「reduced」です!

それを先ほどのloginに打ち込んで・・・

f:id:eyesjapan:20141104231214p:plain

よって、これが答えになります。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

<Application Cracking 4>

f:id:eyesjapan:20141104221422p:plain

今回は、パックやアセンブラの難読化はこの難易度の流れ的にしてないだろう(笑)と信じてIDA proで開きました。(いきなり逆アセツールを使用したわけでもありません、実行ファイルをアスキーとして開いてみてみたりしたりいろいろなボタンをぽちぽちしたりして情報を集めてから行っています。)

では、行きます。

f:id:eyesjapan:20141104232325p:plain

password.exeを逆アセンブラしました。

さて何したらいいでしょう・・・私はまず(個人的にですが使われてる関数をチェックすることがアプリケーションの理解が早くなると思ってまして)関数を確認します。

上のメニューバーのview からのGraphsからのFanction callsまたはCtl + F12で関数のチャート版を開きます。今回はこの威力を発揮できませんが、もっと複雑なプログラムだと次にどの関数を参照してるかがわかり飛んで喜べます。

f:id:eyesjapan:20141104233218p:plain

ずらっと並んでいますが一つづつ見て感じ取るんです(すみません、雑魚なのでなんとなくしかわかりません・・・)!ただ、MsgBoxはメッセージの表示するwinAPIであることは予想できる。そして、驚いたのがvbaStrCmpってwww これパスワードと比較してるんじゃないか!? と思いこの関数を調べることにしましょー!

Names windowの中から、vbaStrCmpを見つけて移動します。

f:id:eyesjapan:20141104234750p:plain

このラインの意味がまだ分かりませんが感覚的に関数の初期化をしている感じですかね でその関数がどこで呼ばれてるかを見てみることにします。関数名で右クリックしChart of xrefs to を見ます。

f:id:eyesjapan:20141104235304p:plain

おお、アドレス0040BCDCで呼ばれてますね!移動します。

f:id:eyesjapan:20141104235540p:plain

 

っおお!?え "livebox"・・・pushって・・・ そしてjzの条件分枝・・・入れてしまえ!

f:id:eyesjapan:20141105000040p:plain

よし! 答えは Atmosphere !!

自分はまだ静的解析は、なんとなくでしかできないが少しずつマイペースに学んでいきたいです。

来週は、関根くんです!! お楽しみに! じゃんけんポン! うふふふふふふ♪

2014/11/05 佐藤