TOP > 研究成果 > マルウェアの自己書き換え動作の可視化

研究成果

マルウェアの自己書き換え動作の可視化

マルウェアの多くは解析を困難にする等の理由で難読化処理が施されています.難読化処理として代表的なものに「自己書き換え」があります.自己書き換え処理が施されたマルウェアは、実行時に自身のコードを書き換えた上で動作するため、静的解析がより困難になります.

本研究はマルウェアの実行をトレースし、メモリからのデータの読み込みや書き出しの様子を可視化することで、自己書き換え動作を解析者が把握することを助けることを目的にしています.

実際には、CentOS上にゲストOSとしてWindows XP Professional SP1が動作している隔離環境において実マルウェア検体またはサンプルプログラムを実行した際の処理内容をPINを用いてトレースし、これを可視化したものです. 以下では2種類の可視化手法にて可視化した内容を紹介します


マルウェアの自己書換え動作をメモリアクセスに着目して可視化する方法

本手法では, 命令と命令によって読み込まれるされるデータ、書き込まれるデータをそれぞれ命令層, 読み込み層, 書き込み層の3層に分けて実行順に連続表示することによって自己書換え動作を行うデコーダ部の判定を支援することを目的としています.
詳しくは2012年コンピュータセキュリティシンポジウム(CSS2012, 参考文献[1])で発表を行っていますのでご参照ください.

実マルウェア検体5体を用いて可視化を行った結果を掲載しています.動画中にて青線で囲まれた領域がデコーダ部, 白線で囲まれた領域が読み込まれたデータ, 赤線で囲まれた領域が書き込まれた領域となっています.(可視化結果)

コンソール上にHello World!と表示するプログラムに対して10種類のパッカーを使用したプログラムを用いて可視化を行っています. 動画中にて青線で囲まれた領域がデコーダ部, 白線で囲まれた領域が読み込みデータ, 赤線で囲まれた領域が書き込みデータとなっています.(可視化結果)


マルウェアの多段にわたる自己書換え動作が表現可能な視化方法

上記に示している可視化手法では, デコーダ部の判定は支援することができる例もありますが, 同一のメモリ領域が複数回書換える様な多段の自己書換え動作を行うものに対しては同一箇所に書き込みを表す描画を繰り返し行うため, 多段の自己書換え動作を把握することが困難となっています.
また我々の研究グループでは, 多段の自己書換え動作を1枚の画像にて階層的に表現する可視化方法(参考文献[2])を提案しています. この手法は多段に自己書換え動作が行われていることは把握できますが, 命令が実行された最終状態を描画しているため, 命令の実行順序, 書き込み順序などが把握できなくなっています.
そこで, 本手法では上記に示している可視化手法を組み合わせて, 階層的な表現を実行順に連続表示することによって多段の自己書換え動作を把握しやすくすることを目的としています.
詳しくは2013年暗号と情報セキュリティシンポジウム(SCIS2013, 参考文献[3])で発表を行う予定ですのでご参照ください.

実マルウェア検体6体を用いて可視化を行った結果を掲載しています.動画中にて青線で囲まれた領域がデコーダ部, 白線で囲まれた領域が読み込み(緑色のブロック)もしくは書き込みデータ(黄色のブロック), 赤線で囲まれた領域がオリジナルコード候補となっています.(可視化結果)


  • 参考文献:
    • [1] 塩谷 正治,森 博志,吉岡 克成 ,松本 勉, “マルウェアの自己書換え動作をメモリアクセスに着目して可視化する方法,”情報処理学会コンピュータセキュリティシンポジウム2012, 3B1-2, 2012年.
    • [2] 織井 達憲,吉岡 克成,四方 順司 ,松本 勉, “マルウェア解析の効率化を目指した自己書換え動作の可視化方法,”暗号と情報セキュリティシンポジウム(SCIS2011), 3B3-5, 2011年.
    • [3] 塩谷 正治,森 博志,吉岡 克成 ,松本 勉, “マルウェアの多段にわたる自己書換え動作が表現可能な視化方法,”暗号と情報セキュリティシンポジウム(SCIS2013), 3C4-4, 2013年.