読者です 読者をやめる 読者になる 読者になる

Log.i53

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

The Art of Unpacking 翻訳まとめ

翻訳物

アンパック勉強の入口として以下の記事を翻訳しました!
とても勉強になりました。ありがとうございます:)
The Art of Unpacking - Black Hat (PDF)

# 著者に無許可で翻訳物を公開してしまいました。
# フェアユースの概念に従っていますが何か問題があれば即座に削除致します。

著者:Mark Vincent Yason (IBM)

 Mark Vincent Yason氏はIBMのX-Force Advanced Reserchチームのセキュリティ研究者です。Mark氏は脆弱性エクスプロイトの研究分野に現在焦点を当てています。Mark氏は既知の脆弱性を分析し、新たな脆弱性を発見し、エクスプロイト技術を研究し、IDS/IPSシグニチャの開発に使用される検出指針/アルゴリズムの作成を行っています。また、以前にマルウェア研究に取り組んだ過程で、ソフトウェア保護の研究にもある程度携わっています。
 Mark氏の著書に「The Art of Unpacking」、共同著書に「Reversing C++」「Playing In The Reader X Sandbox」「Digging Deep Into The Flash Sandboxes」があり、これらはすべて過去のBlack Hatで発表されています。

概要

 アンパッキングは芸術です。これは知的な挑戦であり、リバース・エンジニアリングの分野における最もエキサイティングなマインドゲームの一つです。いくつかの場合、リバーサ(リバース・エンジニアリングを行う分析者)は、パッカー/プロテクタによって採用される非常に難解なアンチ・リバーシングのトリックを特定または解決するために、オペレーティングシステムの内部構造を知る必要があります。また、忍耐力と手際の良さもアンパックを成功に導く主要な要因となっています。
 本稿の主な目的は、実行ファイルパッカー/プロテクタによって採用されるアンチ・リバーシングのテクニックを提示し、また、その保護を回避または無効化するための技術や公的に利用可能なツールについて説明します。この情報は研究者、特にマルコードの分析者がパックされた悪意あるコードが利用される際にそれらのテクニックを識別し、それらのアンチ・リバーシングテクニックが分析の成功を妨げる時に、その後の分析の動向を決定する上で有用となります。副次目的として、本稿に提示される情報は自身のソフトウェアに対して一定レベルの保護を追加する計画をしている分析者にも有用です。保護されたコードはリバーサによる分析を遅らせることはできるが、もちろん熟達した、学識のある、頑強なリバーサを止める術は存在しないでしょう。

導入

 リバース・エンジニアリングの分野では、パッカーは最も興味深い謎解きパズルの1つです。これらのパズルを解く過程で、リバーサはオペレーティングシステムの内部やリバーシングトリックやツール、テクニックのような多くの知識を獲得します。
 パッカー(本稿ではコンプレッサとプロテクタの両方を意味する用語)は実行ファイルを分析から保護するために作成されます。これらのパッカーは情報漏洩や改ざん、著作権侵害を防止する目的で商用アプリケーションによって合法的に使用されています。残念なことに、マルコードも同じ理由で、しかし、悪質な目的のためにパッカーを使用しています。
 パックされたマルコードの数が多いことに起因して、研究者やマルコードの分析者は分析用のサンプルをアンパックするためのスキルの開発に着手しました。しかし、時間が経つにつれて、リバーサによる保護された実行ファイルの分析とアンパックの成功を防止するために新しいアンチ・リバーシング技術が絶えずパッカーに添加されて行きました。そして、新しいアンチ・リバーシング技術が開発される一方そのフェンスの向こう側ではリバーサがそれらを打ち負かすためのスキルやテクニック、ツールを開発するといったサイクルが繰り返されています。
 本稿の主な焦点は、パッカーによって採用されているアンチ・リバーシングのテクニックを提示して、それらの保護を回避/無効化するためのツールやテクニックについて説明します。なお、一部のパッカーはプロセスをダンプすることで容易に回避することが可能となっています。したがって、アンチ・リバーシングテクニックを取り扱う必要はないようにも思えます。しかしながら、保護コードの分析やトレースの際には以下の様なケースがあります:

  • 保護コードの一部を必要に応じて回避してプロセスダンプした後、ダンプされたコードを正常に動作させるためのインポートテーブルの再構築
  • アンチウイルス製品にアンパックサポートを統合するための保護コードの詳細な分析

 さらに、悪意あるルーチンの分析とトレーシングの防止がマルコードに対して直接適用されるようなケースでもアンチ・リバーシングテクニックを理解することには価値があります。
 本稿はアンチ・リバーシングテクニックの完璧なリストが含まれるものではありません。パッカーで一般的に使用される興味深いテクニックについてのみカバーしています。その他のアンチ・リバーシングやリバーシングテクニックについて詳しく学ぶため、最後の項に含まれるリンクや書籍情報の参照を読者にお勧めします。著者は、読者がこの材料が有用であることを認識し、提示したヒント、トリックやテクニックを適用できるようになることを期待しています。ハッピーアンパッキング!

翻訳記事

デバッガ検出技術

 プロセスがデバッグされているか、またはシステムでデバッガが実行されているかを検出するためにパッカーが使用するテクニックを示します。これらのデバッガ検出技術の範囲は非常にシンプル(かつ明白)なチェックを行うものから、ネイティブAPIカーネルオブジェクトを扱うものまで様々です:

ブレークポイントおよびパッチ検出技術

 パッカーがソフトウェアブレークポイント、ハードウェアブレークポイント、およびパッチを識別する上で利用する最も一般的な方法について示します:

分析妨害技術

 分析妨害(Anti-analysis)技術は、分析者によるプロテクタコードおよびパックされた実行ファイルの分析や理解を遅延させることに焦点を当てています。ここでは難読化/圧縮、ガベージコード、コード置換、アンチ逆アセンブリのような技術について説明します。これらの技術は分析者を混乱させ、退屈させ、時間の浪費を生じさせるもので、これに対応するためには忍耐や手際の良さが必要とされます:

デバッガ攻撃技術

 ここでは、パッカーがプロセスがデバッグされている場合にその実行を即座に停止させるため積極的にデバッガへの攻撃に使用する技術や、ブレークポイント無効化などの技術を示します。前述した技術と同様に、これらの技術は分析妨害技術を利用して隠蔽することでより効果的に作用します:

先進的な技術およびその他の技術

 先のアンチリバーシングカテゴリに該当しない、先進的な技術およびその他の技術について示します:

Tools

OllyDbg

f:id:i53:20150610195625p:plain
http://www.ollydbg.de/
リバーサやマルコード分析者によって使用される強力なリング3デバッガです。プラグイン機能により、リバーシングやアンパッキングを容易にさせるアドオンを追加することが可能です。

OllyScript

f:id:i53:20150610195710p:plain
http://www.openrce.org/downloads/details/106/OllyScript
OllyDbgでブレークポイントの設定/処理、コード/データのパッチなどを自動化するためのプラグインです。アセンブリ言語に似たスクリプト言語の使用します。これは反復的なタスクの実行やアンパッキングの自動化を行う上で最も便利なプラグインとなります。

OllyAdvanced

f:id:i53:20150610195813p:plain
http://www.openrce.org/downloads/details/241/Olly_Advanced
パッカーがリバーサに対抗して外装コードを含んでいる場合、このOllyDbgプラグインはリバーサのデバッガの武装となります。このプラグインはアンチデバッグ技術の回避や、パッカーによるデバッグ検出からOllyDbgを隠蔽するなどのいくつかのオプションを備えています。

OllyDump

f:id:i53:20150610195857p:plain
http://www.openrce.org/downloads/details/108/OllyDump
このOllyDbgプラグインはアンパックが成功した後でプロセスダンプとインポートテーブルの再構築に使用できます。

ImpRec

f:id:i53:20150610195938p:plain
http://www.woodmann.com/crackz/Unpackers/Imprec16.zip
プロセスダンプとインポートテーブルの再構築のためのツールです。こちらはスタンドアローンツールで、最も優れたインポートテーブル再構築の機能を提供します。