37
38
Trojan-Notifier.Win32 6 Trojan-Proxy.Win32 75
Trojan-PSW.Win32 142 Trojan-Spy.Win32 62
これらのサンプルデータのうちBE-PUMの分析が最後まで完了できていないと推測されるデータを除外しフルセットデ ータが300命令以上ある命令を抽出すると42データが残った。なお、UPXのサンプルデータは今回のサンプルデー タ全体の中で過半数の割合を占めているが、全体としてASPackやPECompactよりも各サンプルデータの逆ア センブル結果が小さいものが多かった。
以下に示す図は上述した42サンプルのフルセットデータの最初から135番目までの命令を抜き出したものである。
39
図7-1: フルセットデータ(UPX3.0)
40
これらのうち、さらに[email protected] や [email protected] などのメモリ呼び出し行う命 令列をもつ25サンプルを絞り込み作成した傾向分析サブデータを以下に示す(最初の88命令を抽出してい る)。
図7-2: 傾向分析サブデータ(UPX3.0)
41
図7-2右側のサンプルデータ群に解凍用コードとみられる共通項が見られるため、これらに対するOEPの同定を次 節にて行う。なお、分析対象に含まれる25のマルウェアサンプル種別は
HackTool.Win32、Trojan-Downloader、Trojan-Dropperの3つである。
傾向分析サブデータにおいて、下記2点を観察することができる。
・popa以降も同じ命令列が続いている
図7-2にて分析対象としているサンプルでは見やすくするためにpopa命令を白色で抜き出しているが、パターンを 見るとわかるようにpopa(サブデータの比較的上部に出現)より下の命令にも共通したパターンのようなものが見 られる。
・popa が1度も出現しないサンプルが多数存在する
観察開始時にはUPXのOEP近傍にpopaがあるという情報を得ていたが、実際に個々のサンプルデータを観察 するとpopaが出現しないうちにBE-PUMの解析が終了しているサンプルがあった。全般に逆アセンブル結果ファイ ルの大きさが小さいことから、UPXによる解凍用コードで行われている命令にBE-PUM未サポートのものがあり、そ れが分析完了まで到達できたサンプルが母数に対して少ない結果となったのではと推測している。
以上をまとめると、UPXのサンプルでは取得できた各サンプルデータのフルセットデータの大きさおよび傾向分析サブデ ータの観察結果から、少なくとも解凍用コードの実行完了までBE-PUMが解析を行ったデータは少なかったものの、
一部のデータにおいて共通した命令列の出現を観察することができた。全般においてUPXのOEP同定において重 要な命令であるpopaを検出できていないデータが多く存在し、解凍用コードの実行完了までBE-PUMが解析を 実行できていないことが示唆された。次節においてそれらのデータを用いたOEPの同定を試みる。
42
OEP の同定
以下に示すのは図7-2で示した分析対象の一部抜粋である。これを見るとpopa命令(白色で表現)以降で サンプル毎に出現する命令が異なっていることがわかる。
図7-2: OEP着眼点(UPX3.0)
そこでpopaの前後(A)と(B)の間のフルセットデータを見てみることにする。以下の図は4つサンプルデータに ついての実行命令列を示したものである。
43
図7-3: フルセットデータにおけるOEP近傍(UPX)
一番左のサンプルであるHackTool.Win32.SmbBrute.aではpopaの直前に5つ他の命令が実行されている が、どのサンプルにおいてもpopaの直前に je -> movl -> addl -> jmp ->
[email protected] -> [email protected] の呼び出しが行われている。また既 存研究にある通りpopaの後にjmp命令が実行されており、この命令のオペランドで記されているアドレスがOEP ということになる。
以上から、UPXの傾向分析サブデータによるパッカーの解凍用コード以降の命令列を詳細に観察することで、UPX の解凍用コードがpopaで終わるという既存研究での報告を今回のサンプルでも一部のデータにおいて確認すること ができた。
44