アンチウイルス製品の検知回避を目的として、多くの攻撃者は独自のパック処理を施したマルウェアを利用することが多くあります。
タイトル記載の「自動アンパック」についてですが、
本記事では「実行後にアンパックされたメモリをダンプして解析する」方法について説明しており、「静的解析を行わない」という意味で「自動アンパック」と表記しています。
「もっといい方法があるよ〜〜」というアドバイスがあればいただけると嬉しいです!
#そもそもパックとは?
パックの詳細につきましてはここでは割愛しますが、下記の論文がわかりやすかったのでぜひ読んでみてください。
マルウェア検知におけるパッカーの役割についての検討
#パッカーの判別方法
Ditect It Easyのような判別ツールを利用する方法がもっとも容易です。
ただし、多くの攻撃者は独自のパック方法を用いるため、正確にパックできるかどうかの保証はありません。
#メジャーなパッカーのアンパックについて
有名なパッカーについては、インターネット上に公開されているツールを利用してアンパックすることが可能です。
・upxのアンパッカー
・ASPackのアンパッカー
・AutoItのアンパッカー
いづれも常に有効とは限りませんが、自力でアンパックするより早いため、試してみる価値はあります。
#攻撃者の独自パッカーのアンパックについて
以降では、ProcessHackerを利用したアンパック手順について記載します。
##1.事前準備
検体を動かす前に、下記の準備をしておきます。
・Process Hacker(管理者権限で)の起動
→管理者権限であげておかないとプロパティ情報が十分に読み込めません。
##2.検体の実行
パックされている検体を実行します。
立ち上げた直後アンパックし始めるため負荷が上がります。
System informationなどを確認しながら、CPU使用率が収まるのを少し待ちます。
##3.メモリのダンプ
負荷が落ち着いたら、検体をダブルクリック(または右クリック>プロパティ)して、ウインドウのMemoryタブを開きます。
アンパック後のマルウェアはRWXに展開されることが多いので「Protection」欄をソートしてRWX権限で動いているプロセスを探します。
(複数ある場合もあります。その際はサイズの大きいものからあたりをつけます)
RWX権限のプロセスを右クリックして、Saveします。
##4.バイナリエディタで開く
3.で取得したファイルをバイナリエディタで開きます。今回はHxDを使っています。
読んでいくと、途中から「MZ」の文字が出てくるのを見つけました。
ここがプログラムの開始地点だと推測します。
##5.ファイルの編集
4.であたりをつけた点(MZ)より前の部分を全て切り取り、保存します。
##6.保存したファイルの形式確認
5.のファイルをpestudioなどで開いてみると、実行形式のファイルとして識別されていることがわかります。
これで中身を取り出すことができました!
##7.IDAなどで解析可能
以降は一般的な実行ファイルと同様の形で解析が可能になります。
試しにIDAで開いてみてもPEファイルとして認識されています。
#補足
今回は取り上げていませんが、手順4.の際ファイル冒頭からMZで開始する場合もあります。
この場合そのまま実行できるように見受けられますが多くの場合はこのままだと実行ファイルとして読み込むことはできません。
実行していない状態だとメモリの値などが入っておらずコンバートする必要があります。この方法については良い検体が見つかりましたら別途記載できたらと思います。
・・・忘れていなければ・・・・(⌒-⌒; )
以上。