BlackByteランサムウェアグループは、広く利用されているグラフィックカードユーティリティMicro-Star MSI AfterBurner(バージョン4.6.2.15658)のドライバーであるRTCore32.sysおよびRTCore64.sysの脆弱性を積極的に悪用しており、CVE-2019-16098として記録されているこの脆弱性は、認証済みのユーザーが任意のメモリ、I/Oポート、モデル固有レジスター(MSR)を読み書きすることを可能にする。
サイバー犯罪者はこれを悪用して、権限を昇格させたり、高い権限で任意のコマンドを実行したり、データを窃取したり、Microsoftのドライバー署名ポリシーを回避してマルウェアを展開したりできる。研究者は、特に懸念されるエクスプロイトを確認した。BlackByteは最近、EDRやウイルス対策ソフトなどのセキュリティソリューションを機能不全に陥らせるため、この脆弱性を利用していた。
「Bring Your Own Vulnerable Driver」(BYOVD)と呼ばれるこの手法は、APTグループのほか、InvisiMoleやLoJaxなど、実際の攻撃でさまざまな攻撃者に利用されている。こうした攻撃はWindowsシステムを標的とする。
Windowsでは署名されていないドライバーが許可されないため、サイバー犯罪者は既存の署名済みドライバーを乗っ取り、Windowsカーネルに到達するか、署名されていないドライバーを読み込む。このような手法は、Capcomの脆弱なドライバーなど、アンチチートシステムを回避するゲームチートにも使われている。
関連記事:ハッカーはどのように検知を回避するのか
BlackByteはどのように攻撃を実行したのか
このハッキングを理解するには、カーネルメモリとは何かを知ることが重要だ。Windowsでは、ユーザーが開始したプロセスには、そのプロセスだけが利用できる独自のメモリ空間が割り当てられる。カーネルメモリにはそのような分離がない。カーネルモードで動作するすべてのコードが同じ空間を共有する。
その結果、脆弱なドライバーによって他のドライバーが侵害され、クラッシュさせられたり、一部のルーチンを削除されたりする可能性がある。
「ユーザーランド」とは、APIなどを通じて意図的に公開されたカーネルの一部とやり取りするプログラムを指す。「カーネル」とは、ハードウェアによる保護の背後で高い権限で動作する部分を指す。カーネルモードで動作するコードは信頼され、実行される。
攻撃者がカーネルに悪意あるコードを注入できれば、もう終わりだ。
Sophosの研究者は報告したところによると、脆弱なドライバーは、ユーザーモードのプロセスがI/O制御コードにアクセスできるようにすることで、Microsoftのセキュリティガイドラインに違反している。この危険な手法により、シェルコードや追加のエクスプロイトなしでカーネルメモリを直接読み書きできる。
カーネルIDに一致するオフセットを特定するためカーネルのバージョンを確認し、サービスをインストールした後、BlackByteはAppData\Roamingに脆弱なドライバーを配置し、セキュリティツールが使用する特定のカーネル通知ルーチンを削除した。
通知ルーチンは、システム活動を担うカーネルと読み込まれたドライバーの間で行われる重要なやり取りを処理する。例えば、あるタスクを実行するために新しいプロセスを作成する場合などだ。ドライバーが特定のコールバック関数(PsSetCreateProcessNotifyRoutine)を登録していると、素早い制御移行が可能になる。
セキュリティツールはシステムに関するデータを収集するために、こうしたルーチンを頻繁に利用する。しかし攻撃者がそれらを直接削除することはできない。そのため、カーネルメモリとやり取りする既存のドライバーを使い、OSの保護を回避する。

ただし、コールバック関数がEDR製品によって使用されているかどうかを特定するため、BlackByteは「コールバックアドレス自体から最も可能性の高いドライバーを算出」しなければならない。Sophosの研究者は、BlackByteがすべてのベースアドレスを取得し、それらをコールバック関数のアドレスと比較する手順を備えていることを突き止めた。
「コールバック関数との差分が最小」のベースアドレスが選択され、GetDeviceDriverBaseNameWに渡されてドライバー名が取得される。次に、その名前が1,000種類を超えるドライバー名のリストと比較される。一致すれば、メモリ領域をゼロで上書きすることでコールバックが削除される。
「この回避手法により、セキュリティ製品が保護を提供するために依存する、実に1,000種類を超えるドライバーの膨大なリストを無効化できる」と、Sophosの研究者は記している。
BYOVD攻撃を軽減する方法
Sophosの研究者は侵害の痕跡(IoC)をこちらに掲載し、積極的に悪用されているドライバーのブロックリストを維持するため、脆弱性に関する発表を常に確認するよう推奨している。
インストールされているすべてのドライバーを一覧化して監視することが強く推奨される。もちろん、既知のセキュリティ上の欠陥にパッチを適用するため、システムも更新しなければならない。
カーネルメモリの読み書きを可能にする脆弱性には、できるだけ早急に対処すべきだ。
BlackByteが検知を逃れるための追加対策も講じている点には注意が必要だ。例えば、IsDebuggerPresent APIを使うなどして、デバッグプロセスから自身を隠そうとしたり、デバッガーが起動している場合は停止したりする。
また、AvastやComodo Internet Securityなど、人気の高いウイルス対策ソフトが使用するDLLをシステム内から探し出し、自身が検知される前にそれらのプロセスを停止する。





