第6回 ヒューリスティックエンジンの原理とは
丹田賢
株式会社フォティーンフォティ技術研究所
技術本部 沖縄研究開発部 シニアソフトウェアエンジニア
2011/5/31
yaraiが搭載するウイルス検出エンジンの1つに「HIPSエンジン」がある。これは、プログラムの挙動を監視し、「ウイルスらしさ」を判定する仕組みだ(編集部)
これはウイルス? そうじゃない?
いきなりだが、このレジストリキーを見てピンとくる方はいらっしゃるだろうか。
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit |
こちらはどうだろう。マルウェア解析に興味のある読者には見覚えがあるかもしれない。
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun |
もう1つ、
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run |
といえば、本稿の読者であればご存じだろう。
これらのレジストリキーは、いずれもプログラムの自動実行に関係するものだ。1つ目と3つ目は指定したプログラムを自動実行するために使用され、2つ目はUSBメディアなどにおける自動実行機能の有効/無効を切り替えるために使用される。そして同時に、ウイルスが非常によく利用するレジストリキーの一部でもある。
「ウイルスらしさ」を検出するHIPSエンジン
弊社のyaraiが搭載するエンジンの1つに「HIPSエンジン」というものがある。HIPSとはHost-based Intrusion Prevention System(ホスト型侵入防止システム)の略であり、その名の通り侵入防止システムとして各プログラムの挙動を監視する。
ウイルス検出の方法はいろいろあるが、HIPSエンジンは「ビヘイビア検出」として知られる検出方法を採用しており、監視しているプログラムが「ウイルスのような」活動を行った場合、その活動をブロックしたり、実行しても問題がないか、ユーザーに確認を求めたりする。
監視対象は、前述の例に挙げたようにレジストリキーを変更しようとしていないか、システムフォルダの内容を変更しようとしていないかなど、ウイルスが頻繁に行う活動だ。また単なるレジストリやファイルへのアクセス監視だけではなく、「ウイルスのような振る舞い」も監視する。
次のサンプルプログラムを見てみよう(興味のない方は読み飛ばしても構わない)。
// (さまざまな感染活動を行う) //... // バッチファイルを作成 HANDLE BatchFile = CreateFileA("delete.bat", //... WriteFile(BatchFile, ":loop\r\n", //... WriteFile(BatchFile, "@del \"%~f1\"\r\n", //... WriteFile(BatchFile, "@if exist \"%~f1\" goto loop\r\n", //... WriteFile(BatchFile, "@del \"%~f0\"\r\n", //... CloseHandle(BatchFile); // バッチファイルを実行し、終了する char Self[MAX_PATH], Command[MAX_PATH*2]; GetModuleFileNameA(NULL, Self, MAX_PATH); sprintf_s(Command, "delete.bat \"%s\" >NUL 2>&1", Self); WinExec(Command, SW_HIDE); exit(0); |
これは「ウイルスのような振る舞い」の1つを模したものだ。このプログラムを実行すると、「自分自身を削除するバッチ」を生成し、実行する。その結果、最後にはプログラムファイル(exe)もバッチファイルも残らない。
ウイルスはしばしば、自身の痕跡を消すため、このような特徴的な振る舞いを見せる。HIPSエンジンはこういった「ウイルスのような振る舞い」も検出するようになっている。
ヒューリスティック技術の課題と改善
ところで、「ウイルスらしさ」とはどのように設定されるのだろうか?
例えば、初めに挙げたレジストリを変更しようとしただけでウイルスと断定されてしまっては、使い物にならない。そればかりか、正規のアプリケーションがウイルスと誤検出されてしまい、迷惑ですらある。実はこれが、ヒューリスティック技術が直面している最大の課題なのである。
図1は、ヒューリスティック技術と従来のパターンマッチング技術のウイルス検出能力の差異をイメージ化したものだ。
図1 従来技術とヒューリスティック技術の検出能力の差異 |
ヒューリスティック技術は、近年急増している未知の脅威を検出できる汎用性がある半面、誤検出のリスクが付きまとう。検出能力を維持したまま誤検出を減らすためには、適切なヒューリスティックの判定ロジックを設計しなければならない。
FFRのHIPSエンジン開発では、まず、多数のウイルスを分析して得られたノウハウを生かして「ウイルスらしさ」を設定した。次に、膨大な数の正常プログラムを収集、自動実行しながら評価し、実装の調整や、誤検出を回避する新しいロジックの追加などを繰り返し行っていくことで、この判定ロジックを作り上げている。
現在ではさらに、統計的な手法から「ウイルスらしさ」を見いだす研究も行っている。図2はウイルスと正常プログラムを多数実行し、Internet Explorerにアクセス(実行・読み込みなど)したり、TCPで情報を送信したりするといった挙動を行ったプログラムの率を比較したものだ。
図2 ある挙動を行ったプログラムの率の比較(標本は本稿のため無作為に選定した各5000体) |
この図からは、Internet Explorerにアクセス(実行・読み込みなど)したり、TCPで情報を送信したりする振る舞いは、正常プログラムよりもウイルスのほうで、より多いことが読み取れる(Internet Explorerへのアクセスは、Internet Explorer がWindowsファイアウォールの例外として設定されていることを利用する挙動と思われる)。
もちろんこの結果を受けて、「TCPで情報を送信するプログラム、イコール、ウイルス」と即座に判定できるわけではない。しかしながら、このような研究の積み重ねを基にしてHIPSエンジンは日々改善を重ね、検出率を高めている。
Profile |
丹田賢(たんだ さとし) 株式会社フォティーンフォティ技術研究所 技術本部 沖縄研究開発部 シニアソフトウェアエンジニア ウイルス・P2Pソフトウェア解析、セキュアプログラミング教材開発、セキュリティエンジニア技術研修セミナー講師などに従事。 ウイルスの動的解析技術の研究を専門とし、ルートキットも分析可能な命令レベルのトレースが可能な動的解析ツール「egg」を作成、Recon2011で講演予定。 現在は、ただただ青い鳥だけを求め、気付けば沖縄へ。Webマルウェア検知システムに関する研究開発に従事する。暑いのは嫌い。 |
Index | |
ヒューリスティックエンジンの原理とは | |
Page1 これはウイルス? そうじゃない? プログラムの挙動を監視し「ウイルスらしさ」を検出するHIPSエンジン ヒューリスティック技術の課題と改善 |
セキュリティを形にする日本のエンジニアたち 連載インデックス |
- Windows起動前後にデバイスを守る工夫、ルートキットを防ぐ (2017/7/24)
Windows 10が備える多彩なセキュリティ対策機能を丸ごと理解するには、5つのスタックに分けて順に押さえていくことが早道だ。連載第1回は、Windows起動前の「デバイスの保護」とHyper-Vを用いたセキュリティ構成について紹介する。 - WannaCryがホンダやマクドにも。中学3年生が作ったランサムウェアの正体も話題に (2017/7/11)
2017年6月のセキュリティクラスタでは、「WannaCry」の残り火にやられたホンダや亜種に感染したマクドナルドに注目が集まった他、ランサムウェアを作成して配布した中学3年生、ランサムウェアに降伏してしまった韓国のホスティング企業など、5月に引き続きランサムウェアの話題が席巻していました。 - Recruit-CSIRTがマルウェアの「培養」用に内製した動的解析環境、その目的と工夫とは (2017/7/10)
代表的なマルウェア解析方法を紹介し、自社のみに影響があるマルウェアを「培養」するために構築した動的解析環境について解説する - 侵入されることを前提に考える――内部対策はログ管理から (2017/7/5)
人員リソースや予算の限られた中堅・中小企業にとって、大企業で導入されがちな、過剰に高機能で管理負荷の高いセキュリティ対策を施すのは現実的ではない。本連載では、中堅・中小企業が目指すべきセキュリティ対策の“現実解“を、特に標的型攻撃(APT:Advanced Persistent Threat)対策の観点から考える。
|
|