2013年5月6日月曜日

packer と unpacker

packer とはこちらのページによると

実行形式ファイルを実行可能な状態で圧縮(暗号化)するツールのこと。「コンプレッサ」などと呼ばれる場合もある。パックされたファイルは、ユーザーがダブルクリックするだけで自己解凍され、実行される。
 ウイルス対策ソフトの検出を逃れたり、解析を面倒にする目的でウイルス作者が使用する。パッカーを変更するだけで、簡単に亜種を作成できるため、現在の亜種の大量化のひとつの要因ともなっている。
 パッカーの形式は、通常のファイルには使用されない特殊な形式であることが多く、パッカーを使用しているファイルを「不正プログラムである可能性が高い」として検知する手法も有用である。

とのこと。そして、パックされた実行ファイルをもとの状態に戻すことをアンパックといい、そのためのツールが unpacker になる。

代表的な packer/unpacker として UPX がある。

UPX
日本語の解説は wiki が詳しい。 本家のサイトはこちら
Windows や Linux でフリーで使用できるので使い勝手はいい。ただし、Windows の 64 bit 実行ファイルには対応していないので注意が必要。
ファイル自体は MZ から始まるが、バイナリファイルを確認するとそのあと PE と続き UPX0 および UPX1 という文字が出てくるので識別は比較的容易。
Back Track でパックする場合は下記のコマンドを実行すれば同じファイルで圧縮される。

upx file.exe

アンパックする場合は -d オプションをつけて実行すれば同じファイル名でアンパックされる。

upx -d file.exe

Windows で実施する場合はコマンドラインで同様にパックおよびアンパックが可能。


そのほかにも FSG、tElock、Upack、MEW、PESpin、などなど多数あり、それぞれがどれぐらい圧縮されているかをテストした exe packer compression test というサイトもある。

そのため、実際にパックされたファイルやマルウェアをアンパックするには、PEiD などのパッカー確認ソフトでパッカーの種類を調べて、RL!Depacker でアンパックするというのが手っ取り早い。

0 件のコメント:

コメントを投稿