[論文レビュー] Generic Unpacking of Self-modifying, Aggressive, Packed Binary Programs
本論文では、Windows XP上で自己変更型で攻撃的なパッケージドマルウェアバイナリをアンパックするための汎用的でユーザー領域での動的バイナリインジェクションフレームワーク、MmmBopを提示する。このフレームワークは、逆アセンブル対策を回避し、コードキャッシュと基本ブロック転送の監視により、元のエントリーポイントを特定することで、PESpin や tElock などの多くのパッカーに対して5秒未塔でアンパックを達成する。
Nowadays most of the malware applications are either packed or protected. This techniques are applied especially to evade signature based detectors and also to complicate the job of reverse engineers or security analysts. The time one must spend on unpacking or decrypting malware layers is often very long and in fact remains the most complicated task in the overall process of malware analysis. In this report author proposes MmmBop as a relatively new concept of using dynamic binary instrumentation techniques for unpacking and bypassing detection by self-modifying and highly aggressive packed binary code. MmmBop is able to deal with most of the known and unknown packing algorithms and it is also suitable to successfully bypass most of currently used anti-reversing tricks. This framework does not depend on any other 3rd party software and it is developed entirely in user mode (ring3). MmmBop supports the IA-32 architecture and it is targeted for Microsoft Windows XP, some of the further deliberations will be referring directly to this operating system.
研究の動機と目的
- 従来の逆アセンブルやシグネチャベース検出に打ち勝つ自己変更型で攻撃的なパッカーのアンパックという課題に対処する。
- 外部フレームワークやデバッグAPIに依存せずに、未知および既知のパッキングアルゴリズムに通用する汎用的アンパックソリューションを開発する。
- 現代のマルウェアで一般的に使われるチェックサム、アンチデバッグ、コードオブスクリューションなどの逆アセンブル対策技術を回避する。
- 仮想マシンやエミュレーション、OSレベルの変更を必要とせず、ユーザー領域(リング3)で透明的かつ安定したアンパックを可能にする。
- 複雑な制御フローとコード変更が加えられた状況下でも、元のエントリーポイント(OEP)を高精度かつ高速に特定する。
提案手法
- 実行フローのトレースとコードキャッシュ動作のリアルタイム監視を可能にする、独自のDBIエンジンを動的バイナリインジェクションに基づいて構築する。
- 元のファイルを変更せずに、位置に依存しないインジェクタースタブを実装し、DBIエンジンをターゲットプロセス空間にロードする。
- 基本ブロック転送を監視し、インストルメンテーションまたはAdler-32チェックサムを用いてコード変更を検出することで、ローダースタブがペイロードをアンパックした瞬間を特定する。
- コードキャッシュに一度に1つのコードブロックのみを保持することで、オーバーヘッドを低減し、間接ジャンプリンクのような複雑な最適化を回避する。
- エミュレーションではなくネイティブコード実行を活用することで、アンパック中におけるパフォーマンス劣化を最小限に抑える。
- ローダースタブの処理が完了した後、アンパック済みコードが実行を開始する瞬間を特定することで、元のエントリーポイントを検出する。
実験結果
リサーチクエスチョン
- RQ1外部フレームワークに依存せずに、汎用的でユーザー領域での動的バイナリインジェクションフレームワークが、自己変更型で攻撃的なパッカーを効果的にアンパックできるか。
- RQ2MmmBopは、アンチデバッグやコードオブスクリューション技術が存在する状況下で、どのように元のエントリーポイントを検出するか。
- RQ3特に制御転送頻度が高いバイナリに対して、MmmBopはどのようなパフォーマンスオーバーヘッドを発生させるか。
- RQ4Pin や Saffron といった既存のフレームワークが、tElock や PESpin のような攻撃的パッカーをアンパックできない理由は何か。
- RQ5MmmBopは、未知または未確認のパッキングアルゴリズムに対し、どの程度の対応が可能か。
主な発見
- Adler-32チェックサム法を用いて、PESpin(4.6084s)、tElock(1.2804s)、yC(0.7611s)など攻撃的パッカーで保護されたバイナリをMmmBopが正常にアンパックできた。
- インストルメンテーションベースのアプローチとAdler-32チェックサム法は、コード変更検出において同等の結果を示し、パフォーマンス差は最小限であった。
- PESpinは2,364,189回の基本ブロック転送を要したため、最も長いアンパック時間(4.6084s)を要した。これは制御フローの複雑さと実行時間の強い相関関係を示している。
- MmmBopは、UPX(0.0759s)を含むすべてのテストパッカーに対して5秒未塔のパフォーマンスを達成し、実世界のマルウェア分析において高い効率性を示した。
- 特にPinの制限に陥りやすい攻撃的パッカーにおいても、MmmBopはPinベースのソリューション(Saffron や Renovo)を上回る性能を発揮した。
- MmmBopは、メモリインジェクションを検出するパッカーに検出されない。これは、すべての処理をユーザー領域で実行しており、システム安定性に影響を与えないためである。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。