Living Off The Land マルウェアの回避テクニック 第 4 回
サンドボックス化対策に関する前回のブログ で紹介したように、マルウェアの開発者は、ステルス性を維持して解析されないようにするために、あらゆる手段を講じています。そのためには、Microsoft Windows に組み込まれた機能や信頼できるツールを利用する方法があります。Living Off The Land (LOTL)と呼ばれる手法は、マルウェアが既存のリソースを利用して溶け込み、AV やサンドボックスの解析による検出を回避するためのものです。
検知や分析を回避するために、対象となる環境に組み込まれた機能を利用することはよくあることで、多くの マルウェア が LOTL の手法を利用していることが確認されています。例えば、WMI リクエストを利用して 仮想環境 仮想環境を検知する GravityRAT や OopsIE などが挙げられます。また、Emotet、Carbon Backdoor、Shamoon などのマルウェアは、検出を逃れるために、キャンペーンでスケジュールされたタスクを使用していました。
本ブログでは、仮想環境の検出やAV製品をかわすために使用される、LOTL の分野で最も一般的なテクニックのいくつかを確認し、実演します。
WMI チェック
Windows Management Instrumentation(WMI)は、Windows ベースの OS 上のインフラストラクチャであり、環境管理情報を格納する。WMI は、OS の一部や管理タスクスクリプト、その他の製品に管理データを提供するほか、PowerShell や SQL を使ってクエリを実行することもできます。
LOTL 技術に依存して回避するマルウェアは、WMI クエリを使用して仮想環境を検出し、マルウェア対策ソフトウェアや分析ツールを回避することができます。例えば、WMI 名前空間 root\SecurityCenter2 にクエリを実行すると、Windows セキュリティセンターからの情報が表示されます。この情報は、”AntiVirusProduct”、”AntiSpywareProduct”、”FirewallProduct” などのクラスで、インストールされているセキュリティソリューションに関する情報が格納されています。
名前空間 root\cimv2 の下で、”Win32_DiskDrive” 、”Win32_VideoController” 、”Win32_BIOS” などのクラスは、仮想環境、セキュリティ製品、Wireshark などの監視ツールのための特定の文字列を含むことができます。
SQL クエリを使用したオプションの WMI 回避チェック :
root\cimv2 classes:
SELECT * from class and search matches for: “Virtual Machine”, “VirtualBox”, “VMware” or “Hyper-V”:
“Win32_ComputerSystem”
“Win32_BaseBoard”
“Win32_DiskDrive”
Win32_PointingDevice
“Win32_VideoController”
“Win32_BIOS”
追加クエリ :
Higher chance for false-positive results due to hardware or firmware compatibility issues.
Root\WMI classes:
SELECT * FROM MSAcpi_ThermalZoneTemperature (Virtual environments return error)
root\cimv2 classes:
SELECT * from Win32_Fan (Virtual environments return 0)
タスクスケジューラー
Windows タスクスケジューラは、Windows に組み込まれたコンポーネントで、スクリプトや実行ファイルを一定の間隔や特定の時間に実行するために使用されます。マルウェアは、システム起動時または定期的にタスクをスケジュールするために、このタスクスケジューラを永続的に使用します。
マルウェア解析 システムやサンドボックスでは、タスクをスケジュールする機能が確認されることがありますが、多くの場合、サンドボックス環境で解析を回避するために、この遅延実行が利用されます。
Sysinternals Suite
Sysinternals は、IT管理者のために作られた Windows 用の監視・診断ツール群です。LOTL 技術を採用したマルウェアは、サンドボックスやマルウェア対策製品を持続的に回避するために、パスワードの復元、データの復元、リモートシステムでのファイル実行など、Sysinternals スイートの機能に依存しています。
Sysinternals スイートに含まれる最も一般的なユーティリティの1つが PSExec です。PSExec は、SMB (Server Message Block) プロトコルを介してリモートマシン上で実行ファイルやコマンドを実行することができますが、認証情報や管理者権限、SMB プロトコルが許可されていることなど、一連の要件があります。PSExec、およびその修正版は、感染や横移動の際にAVの検出を回避するために攻撃者がよく使用します。
ListDLLs は、Sysinternals の別のユーティリティで、メモリ上のすべてのプロセスにロードされているDLLをリストアップします。ListDLLs は、仮想化製品が使用するDLLと比較して、仮想環境を回避するために使用することができます。
既知のDLLのリスト :
dbghelp.dll (VMware)
sbiedll.dll (Sandboxie)
vmcheck.dll (virtual PC)
pstorec.dll (SunBelt Sandbox)
snxhk.dll (avast sandbox)
snxhk64.dl (avast sandbox)
sxIn.dll (avast sandbox)
LOTL テクニックは、マルウェア開発者が、持続性と回避を実現 するためにできる限りのことを利用していることを示す最良の例の 1 つです。LOTL テクニックに直面したときの重要な問題の 1 つは、LOTL テクニックが環境の設計上の特徴に依存しているという事実です。 エンドポイント やマルウェア解析環境において、上記のような基本的なテクニックに取り組むことが推奨されますが、LOTL テクニックのゲームにおいては、これは氷山の一角に過ぎないことを覚えておくことが重要です。古典的な「ワッカ・モグラ」ゲームのように、攻撃者は永遠に新しく困難な技術を開発し続け、 サイバーセキュリティ研究者はそれを予測し、克服するために最善を尽くすことでしょう。