Log.i53

Themidaのアンパックを目指すブログ改め使い物になるえんじにゃを目指すブログ

マニュアルアンパック:PECompact その②

 前記事で作成したスクリプトを以下の別のUnpackmeサンプルで試してみたところOEPに辿り着かず途中で終了してしまった:forum.tuts4you.com

 StrongODプラグインを入れて試してみたら無事OEPまで辿り着いたのでアンパックの途中で何かしらのアンチデバッグが行われているらしい。

 処理を追ってみたらIsDeuggerPresent命令に遭遇したのでどうやらこれが原因である:
f:id:i53:20150712045618p:plain

 スクリプトの最初でdbhコマンドを実行させることで無事OEPに到達することができた:
f:id:i53:20150713062127p:plain

マニュアルアンパック:PECompact

導入

 PECompactは速度とパフォーマンスに焦点を当てて設計された商用パッカーです。無償の学生版はマルウェア作者によって使用されることが多かったため廃止され、使用用途や組織名による登録が必要な試用版に置き換えられています。このパッカーでパックされたプログラムは、アンチデバッグ例外や難読化コードを含んでいるためアンパックするのが難しくなっています。PECompactはサードパーティ製のツールを組み込むことが可能となるプラグインフレームワークが実装されており、マルウェア作者の多くはアンパックの難易度を上げるためのサードパーティ製のツールを付加しています。
 PECompactのマニュアルアンパックはUPXのマニュアルアンパックと基本的に同じです。ただし、プログラムがいくつかの例外を発生させるので、OllyDbg上でプログラムに例外を渡す設定をする必要があります。
 最終的にはテールジャンプを探すことでOEPを見つけることができます。いくつかの関数をステップオーバーすると、多くの0x00バイトが続くjmp eax命令からなるテールジャンプを確認することができます。

続きを読む

Inside Code Virtualizer を読んだ

tuts4you.com
OreansのCode Virtualizer 1.0.1.0のデモ版をリバースエンジニアリングした結果を纏めたScherzo氏の文献を読みました。ただし、このバージョンがリリースされたのが2006年の6月なので現行のCode VirtualizerやThemidaで利用されるものとは大きく異なっている可能性もあります。あくまでCode Virtualizerの動作原理の基礎的な部分を知るための読み物です。

# 例によってフェアユースの概念で公開していますが問題があれば削除致します
# ところどころ翻訳がおかしいのでとりあえず読めればいいという人向け

続きを読む

マニュアルアンパック:ASPack

導入

 ASPackはUPXよりかは幾分セキュリティに焦点を当てており、プログラムのアンパックを難しくするためのいくつかのテクニックを採用しています。ASPackは自己置き換えコード(self-modifiing code)と呼ばれるブレークポイントの設置や一般的な分析を難しくする技術を使用しています。
 ASPackは著名であるため多くの自動アンパックツールが利用可能となっています。これらの自動アンパックツールは常に有効であるとは限らないものの手っ取り早くアンパックしたい場合には最初に試す価値があります。
 自動アンパックツールによりASPackでパックされたファイルを正常にアンパックすることもできるでしょうが、分析者であればマニュアルでファイルをアンパックできるに越したことはありません。ASPackでパックされたファイルをデバッガでロードすると、UPXでパックされたファイルと同様に、アンパッキングスタブのコードの最初にPUSHAD命令があるのを確認することができるでしょう。UPXで利用したESPトリックはASPackにおいても有効です。PUSHAD命令をステップ実行した後でスタックアドレス上にハードウェアブレークポイントを設置します。対応するPOPAD命令が呼び出されるとブレークポイントがトリガーされ、そのPOPAD命令のすぐ後ろにOEPに到達するための(PUSH・RET命令を利用した)テールジャンプを確認することができるでしょう。

続きを読む

Apache Cordova Vulnerabilityの記事を読んだ

 セキュキャン2015応募用紙の選択問題14を素で解きたい人生だった・・・がやはり無理だったのでいろいろ調べました・・・!選択問題14はAndroidアプリのWebViewオブジェクトにおけるXAS(Cross-Application Scripting)脆弱性について取り上げたもののようです。以下の記事を参考にすれば、おそらく解答文を構築することができるはずです。

続きを読む

セキュキャン2015応募用紙の選択問題の一部を解いたつもりになってみるテスト

www.ipa.go.jp

 選択問題は5問選択できるので自分が選択するとしたら②⑤⑩⑪⑭で行きます。とりあえず②と⑪を素で解こうと頑張ってみました・・・・・が・・・・・駄目っ・・・・・!結局のところ、いつもどおり頑張って調べまくる作業になってしまいました・・・!

 セプキャン2009では高専時代の担任の勧めで応募して、とにかく文章で熱意をしたためたところ選考を抜けることができましたが、当時の自分が今の応募用紙に取り組んだとしたら…かなり微妙と言わざるを得ません…!

※過去のセプキャン参加者なのでセキュキャン2015の応募者ではありません。

<魔法の言葉>以下、内容の保証はできません</魔法の言葉>

続きを読む

Unpacking Virtualization Obfuscators を読みました

18th USENIX Security Symposiumと併せて開催されたWOOT'09のRolf Rolles氏のペーパーを翻訳しました:Unpacking Virtualization Obfuscators(PDF)

続きを読む