« ロシアの攻撃者(Energetic Bear)による日本への攻撃 | メイン | Network Indicators of C2 / C2の兆候を発見するためのCheat Sheet »

2014年3月 3日 (月)

PEヘッダでパッカーの有無を見分ける方法

マルウェアの多くはパッカーというツールで圧縮され、検知や解析を免れます。今回はそのパッカーで処理されているかどうかを簡単に見分ける方法をご紹介します。

 ■パッカーとは

 パッカーは圧縮ツールの一種でもともとハードディスクのサイズを抑えたり、ダウンロード時の通信量を減らしたりする目的で利用されてきました。しかし、近年ではマルウェアに悪用されるケースが非常に目立ってきております。マルウェア開発者は主にウィルス対策製品の検知を免れたり、解析をしづらくさせたりする目的でパッカーを利用します。そのため、パックされていることはマルウェアである可能性が高いということになります。

パッカーは圧縮ツールですが、zipや自己解凍形式などの圧縮とは少し異なります。パックされる対象は実行ファイル(.exe)のみです。そしてパックされて出来上がったファイルも実行ファイルとなります。その中に圧縮された元の実行ファイルが収められています。

Pack01_2

図1)パックされたファイルのイメージ

パックされたファイルを実行すると最初に解凍プログラムと元のファイルがメモリ上に展開されます。次に、解凍プログラムがメモリ上に元のファイルを解凍し、最後に元のファイルが実行されます。

Pack02_2

図2)パックされたファイルを実行する様子

パックされた元のファイルはメモリ上の実行セクション(命令が格納される領域)に解凍された後、実行されます。

■見分け方の概念

 通常のファイルとパックされたファイルは実行セクションに対する権限が異なります。

Pack03

図3)セクションに対する権限の比較

 上記の通り、実行セクションにおいて書き込み権限がある実行ファイルはパックされていると判断することができます。

Windowsではセクション用にメモリを確保する際、上記のような権限をセクションごとに設定します。書き込み権限がないセクションにデータを書き込もうとした場合は、アクセス保護違反が発生し、プログラムは強制終了します。そのため、パックされたファイルの実行セクションには必ず書き込み権限があります。

■見分け方の詳細

各セクションにどの権限を割り当てるかは実行ファイルのPEヘッダという領域に記されています。まずは、パックされていない一般的なファイルとして、Windowsのメモ帳(notepad.exe)を見てみましょう。以下はPEヘッダを確認する「PEView」というツールで開いた結果です。

Pack04_2

図4)メモ帳の命令セクション(.text)

左側ツリーの「IMAGE_SECTION_HEADER」から始まる項目がセクションを定義している箇所になります。メモ帳の場合は、セクションが4つあります。最初のセクションは「.text」という名前がついています。通常、「.text」や「.code」という名前を持つセクションは命令セクションとなりますが、単なる名前でしかないため、擬装が簡単にできます。格納されているもの(命令またはデータ)および許可されるオペレーションは「Characteristics」(赤枠)にて定義されています。

赤枠の「Characteristics」に以下のフラグが立っていることがわかります。

IMAGE_SCN_MEM_READ            読み取り可能

IMAGE_SCN_MEM_EXECUTE    実行可能

IMAGE_SCN_CNT_CODE             実行可能なコードが含まれる

 

読み取り権限と実行権限があることがわかります。次に、メモ帳のデータセクションを見てみます。

Pack05_2

図5)メモ帳のデータセクション(.data)

Characteristicsの値は以下の通りです。

IMAGE_SCN_MEM_WRITE                        書き込み可能

IMAGE_SCN_MEM_READ                          読み取り可能

IMAGE_SCN_CNT_INITIALIZED_DATA   初期化済みのデータが含まれる

 

実行権限がないため、データセクションであることが分かります。

 

ここでは割愛しますが、同様に見ていくと他のセクション(.rsrcおよび.reloc)は以下のフラグが立っています。

IMAGE_SCN_MEM_READ(読み取り可能)

IMAGE_SCN_MEM_DISCARABLE(破棄可能)

ポイントは、「実行」および「書き込み」のフラグが両方立つことがないということです。

では、いよいよパックされたファイルを見てみましょう。メモ帳を「Morphine」というパッカーで処理した結果です。

Pack06_2

図6)パックされたメモ帳の実行セクション(.text)

Characteristicsの値は以下の通りです。

IMAGE_SCN_MEM_WRITE(書き込み可能)

IMAGE_SCN_MEM_READ(読み取り可能)

IMAGE_SCN_MEM_EXECUTE(実行可能)

IMAGE_SCN_CNT_CODE(実行可能なコードが含まれる)

 「実行」および「書き込み可能」いずれのフラグもついています。

 パッカーの性質上、命令セクションに元の命令を解凍するため、書き込み権限が求められ、さらに解凍後に実行するため、実行の権限も必要となります。そのため、パックされているファイルの命令セクションは「書き込み」および「実行」が可能になっています。

■具体的な手順

1.調べたい検体をPEViewで開きます。

2.左側のツリーから「IMAGE_SECTION_HEADER .xxxx」を選択します。

3.右ペインの「Characteristics」欄を確認し、以下のフラグがいずれもあるかどうかを調べます。

  ・IMAGE_SCN_EXECUTE

  ・IMAGE_SCN_MEM_WRITE

  あれば、パックされている可能性が高いです。なければパックされていないということになります。

4.残りのセクション「IMAGE_SECTION_HEADER .yyyy」に対しても、手順3同様に調べます。

« ロシアの攻撃者(Energetic Bear)による日本への攻撃 | メイン | Network Indicators of C2 / C2の兆候を発見するためのCheat Sheet »

今年も自作ツールを展示
Macnica Networks Corp.
セキュリティ研究センター

サイバーセキュリティに特化し研究することを目的として2013年4月に開設。

■ミッション

・サイバー攻撃の研究

・海外の最先端セキュリティ技術の発信

・予測的な策略を講じるセキュリティ対策に基づいた包括的なソリューションの提案
 

政本 憲蔵
セキュリティ研究
センター センター長
 
2000 年、(株)マクニカに入社。各種ネットワーク製品、暗号関連製品、WAF、IDS/IPS等の導入設計担当を経て、 セキュリティインシデントの調査・分析に携わる。2008 年より、標的型攻撃に対する対策製品の技術支援に従事し、 2013 年4月より、同社に新設されたセキュリティ研究センターにて、攻撃者の動向を追いながら、世界の最先端セキュ リティ対策技術のトレンドを調査している。

凌 翔太
セキュリティ研究
センター
 
2004年よりクライアントセキュリティ対策製品(HDD暗号化、検疫、DLP等)のテクニカルサポート、プロフェッショナルサービスに従事する。2009年より、IPS/IDSおよびWAFなどのネットワークセキュリティに関する製品を担当する傍ら、マルウェアや脆弱性の研究を実施する。2013年度より同センターにて、最新の攻撃の研究に携わる。

BlackHat