ハッキングチーム向けSkypeACLKeyGen.exeの分析
というわけで...
今日は何を解析するのか?今日はハッキングチーム製のソフトウェアを解析する。Skypeに関するものだ。なぜこれをやるのか?さあね、面白いと思ったからだ。
とにかく、まずは実行時の挙動を調べることから始める。見ての通り、ユーザー名とプラグインパスが必要で、ACLを出力する?つまりこれは一体何なんだ?これを調べてみると https://airbus-seclab.github.io/skype/vskype-part2.pdf にはこう書かれている - 「Skypeは、プラグインが実行中のインスタンスに自身をアタッチすることを許可または拒否するACLのようなシステムを実装している。プラグインの"シグネチャ"は、警告ダイアログに対するユーザーの返答に基づいて設定ファイルに追加される」- 。では、そのソフトウェアのフォルダには何が入っているのか?
うーん、まだ何も分からないな。そうだな、そのフォルダにはofficeで終わるステージ1のシェルコードがある。これはofficeエクスプロイトを示しているかもしれない(まだ確定はしていない)。fakeportはC#アプリ、tracer.exe、その他のファイルだ。面白い。俺の直感では、実際に登録されるプラグインはtracer.exeだと思う。なぜか?同じPDFから - 「Skypeボイスエンジンは、LoggingとLogging2が設定されている場合、暗号化されたトレースファイルを生成できる。暗号化はもっと単純で、31バイトの鍵を使った基本的なXORである」- 。というわけで、まずは実際のACLジェネレーターを解析して、次にtracerを見ていこう。そしてシェルコードはまた別の投稿で見るかもしれない。
まずはこれから始める
次にこれに移る
そして最終的にこれらに流れ込む
そこからこれに流れ込む
もうひとつの動的なイースターエッグ的な挙動はこれだ。実行するユーザーとプラグインを入力すると、こうなる .png)
とにかく、さらに先へ進んで解析する
トップダウンの視点で見ると、ファイルの内容のsha2を計算し、その内容をメモリにマップしている。残念ながら、動的な解析では失敗して何もしてくれなかった :/ どうしようもない。さらに先へ進もう。probably_do_hash_based_function_function_recoveryに入っていく。
残念ながら、前のケースと同じで、メモリへのマップに失敗して関数から抜けてしまう。それでも、md5だけは計算して、おそらくmd5の比較に基づいて何らかの関数の復元を行っている。
次に、mallocとmemsetを実行する
.png)
次に、ファイル名を大文字に変換する
ユーザー名についても同じことをする
いいね、次にこれをやる:
基本的には、自分たちのプラグインを実行できるようにするための独自のACLを作成している。この場合、おそらくTracer.exeになるだろう。理論上、Skypeボイスエンジンが生成したトレースファイルをログに記録するものだと思われる。

上記の画像の関数の出力結果

上記の画像の関数の出力結果
今のところはこんなところだ。今日の後半にまた戻ってきてこれを更新する。今のところ、残っているのはこの半分だけの関数の解析だ
また、戻ってきたら、お楽しみとしてsome_decode関数を掘り下げて、そこからtracer.exeバイナリに入っていくつもりだ。楽しいハッキングを、またすぐ会おう。