Taint-based Analysis Techniques against Evasive Malware

(邦訳:解析回避機能を持つマルウェアの解析手法:テイント伝播によるアプローチ)
 
川古谷 裕平
NTTセキュアプラットフォーム研究所 特別研究員
 
キーワード
マルウェア 解析妨害 データフロー解析

[背景]標的型攻撃などでマルウェアが高度化

[問題]マルウェアの解析妨害機能により,一般的な解析ツールでは解析不可能
[貢献]既存解析ツールの設計上の問題点の指摘,テイント伝播を利用した解決手法の提案


 インターネット上でさまざまな事件や被害(インシデント)が日々おきている.これらの裏では,マルウェアと呼ばれる悪意のあるプログラムがよく利用されている.このマルウェアへの対策を生み出す手段として,マルウェア解析が行われ,マルウェアの機能や意図などを分析し,防御に活用している.

 しかし,実際のマルウェアは解析されにくくするための機能,解析妨害機能を持っている.1つの例として,コード注入がある.これは,マルウェアが自身のコードの一部を正規のプロセス(たとえばexplore.exe)に注入し,そのプロセスの中で悪意のある挙動を行うものである.これにより,マルウェア自身ではなく,正規のプロセス(explore.exe)が悪意のある挙動を行っているように見えてしまい,誤検知や解析漏れが発生してしまう.

 本研究では,これら解析妨害を可能にする要因として,一般的な解析ツールが持つ設計上の問題を指摘し,この問題をTarget Gap問題として定義した.Target Gap問題は,解析ツールが本来見るべきものと実際に見ているものに乖離があるといった問題である.たとえば,解析ツールはプロセス単位(PID: Process IDentifier)で挙動を監視することが多いが,あるマルウェアの動作は1つのプロセスで完結しないことがある.そのため,プロセス単位の監視では,マルウェアの挙動の一部を見逃してしまう.これは,本来見るべきもの(マルウェアのコードの実行)と実際見ているもの(マルウェアのコードを保持していると考えられるプロセスの実行)との間に乖離があるため発生しているTarget Gap問題であると言える.

 このTarget Gap問題を実証するため,本研究ではStealth Loaderというプログラムローダを開発した.Stealth Loaderは,Windows APIのコードの実行(本来見るべきもの)とAPIのコードが置かれているとOSが認識しているメモリ領域の実行(実際にみているもの)のGapを利用し,解析ツールに監視されずにAPIを呼び出す手法である.実際にマルウェア解析やフォレンジックス☆1の現場で利用されている主要なツールで評価し,そのすべてのツールを回避できることを示した.

 このTarget Gap問題を解決するため,テイント解析に基づく動的・静的解析手法を提案した.テイント解析とは,データフロー解析技術の1つで,テイントタグと呼ばれる属性情報を観測したいデータに対して付与する.監視対象のデータが操作されるたびに,そのテイントタグを伝播させることで,監視対象のデータの動き(フロー)を追跡する.本研究では,このテイント解析を解析対象のコード,つまりマルウェアに設定するコードテイントという新たな手法を提案した.これは,テイントタグが付いている命令を実行された場合,監視対象の命令として実行し,テイントタグがなかった場合,監視対象外として通常実行するものである.これにより,解析すべきもの(監視対象コードの実行)と実際に見ているもの(監視対象コードの実行)を一致させることができTarget Gap問題を解消できる.本手法をシステムとして実装し,実際のマルウェアのさまざまな解析妨害に対しても影響を受けることなく正確にマルウェアの挙動を観測できることを示した.


☆1 マルウェアに感染した端末の痕跡調査


 

 

(2019年5月30日受付)
 
取得年月日:2019年2月
学位種別:博士(工学)
大学:早稲田大学



推薦文
:(コンピュータセキュリティ研究会)


本論文では悪性プログラムであるマルウェアを正確に解析する手法を確立した.攻撃者はさまざまな解析妨害機能をマルウェアに組み込むため,“正確”な解析は容易ではない.本論文では,従来の動的・静的解析ツールの設計を再考し,それらの問題点を明らかにしつつ,テイント解析をベースとする動的・静的解析技術を創出した.


研究生活


仕事でマルウェアを解析しているとき,一般的な既存ツールでは挙動が観測できなかったことから,この研究をスタートさせました.マルウェア解析技術は,目の前のマルウェアではなく,その裏にいる攻撃者(マルウェア作者)との戦いです.攻撃者の次の一手を,相手ができる技術的な限界から探るためには,コンピュータ,インターネット,プログラム実行環境等のあらゆる知識を総動員して検討する必要があります.自分の中で解析妨害(攻撃)と解析(防御)にわかれて,手の内をさらけ出しつつ両面から技術を検討することで,より強い技術に到達できた気がします.