本稿ではQilinランサムウェアが新たに導入したRust記述のカスタムローダーを分析し、高度なカーネルレベルのEDRキラーの内部動作を詳しく解説するとともに、こうした「攻撃的な防御回避手法」から組織を守る方法について考察します。Flashpointのお客様はFlashpoint Igniteをご利用いただくことで、詳細な技術分析や関連するすべてのIoC(侵害指標)を完備したインテリジェンスレポート全文にアクセスできます。
*本記事は、弊社マキナレコードが提携する米Flashpoint社のブログ記事(2026年7月17日付)を翻訳したものです。
Qilinランサムウェアは極めて活発かつ巧妙なランサムウェアオペレーションであり、回避技術を急速に高度化させています。このランサムウェア・アズ・ア・サービス(RaaS)グループは以前、ファイルの暗号化を中心に活動していましたが、現在ではカーネルレベルでの積極的な防御回避などにその範囲を拡大しています。Qilinは専用のツールキットを展開することで、被害者のネットワーク上でメインとなるランサムウェアペイロードを実行する前に、検知を防ぎつつエンドポイントセキュリティ製品の機能を無効化し、恒久的に使用できなくすることに注力しています。
Flashpointでは、Qilinがこれまで報告されていなかった独自のパッカーを密かに展開していることを確認しました。このパッカーは2024年5月以降、実際の攻撃サンプルにおいて頻繁に確認されており、先月も継続的に使用していたことが観測されています。
Qilinの活動実態を以下で説明します。
カスタムRustローダーでリフレクティブPEローディングを実行する手法
Flashpointのアナリストは、ランサムウェアペイロードのリフレクティブPE(Portable Executable)ローディングを行うRust記述のカスタムローダーを観測しました。難読化が解除された後、コード実行処理は同一プロセス内で新たにアンパックされた実行可能ファイルに移り、ノイズが多く検知されやすいプロセスインジェクションの手法を回避します。逆コンパイルされたアンパックルーチンの概要は以下の通りです。

その後、アンパックルーチンが埋め込まれたバイト列から各DWORDを読み取り、ヒープ上に割り当てた上で、難読化を解除するために複数の算術演算を実行します。Flashpointが確認したところ、使用された計算や値はサンプルごとに固有のものでしたが、基本的な手法は共通していました。
サンプル内の計算を手動で実行すると、埋め込まれたバイナリの存在が確認できます。難読化を解除した最初のDWORDは、リトルエンディアン形式で「MZ」ヘッダーを示します。
Qilinをより深く理解するため、FlashpointのアナリストはCPUエミュレーションを利用した自動アンパッカーおよび設定抽出スクリプトを作成し、サンプルごとに計算処理が異なるという課題に対処しました。このスクリプトはパターンマッチングを使い、バイナリ内のアンパックルーチンを特定します。続いて逆アセンブル結果を読み取り、エミュレーションを開始・終了すべきコード上の特定の箇所を絞り込みます。

逆アセンブル結果を直接読み取ることで、脅威アクターによるコードの追加や削除、あるいはコンパイラによる変更などが生じた際に発生しがちな、ハードコードされたオフセットに起因する問題を回避できます。さらに、エミュレーション対象となる命令セットを絞り込めるため、バイナリ全体をエミュレートする際によく見られるWinAPI呼び出しや不正なメモリアクセスといったエラーを回避することもできます。
サンプルをエミュレーターのメモリにマッピングし、偽のヒープを作成するといった追加のセットアップを行った後、アンパックルーチンが正常に実行されます。

その後、このスクリプトはCPUエミュレーションで生成された難読化解除済みのバイト列から設定情報を抽出します。成功率は100%です。

新たな「EDRキラー」でセキュリティ製品を無効化する仕組み
Qilinについての最新情報として、新たなEDR(Endpoint Detection and Response)を無効化する機能(EDRキラー)が追加されました。Flashpointの調査によると、このツールは不法マーケットプレイスで2,000米ドルで販売されています。同ツールに使われているShanyaパッカーは、2024年当時にXSSフォーラム上で100~150米ドルで販売されていました。このパッカーは非常に高度なものであり、ジャンクコード、APIハッシュ化、IATフック、パターンスキャン、ベクトル化例外処理(VEH)を利用したコード実行フローなど、解析を困難にする手法がいくつも採用されています。
このEDRキラーは展開された後、まず動的APIハッシュ化とPEファイル構造をたどる作業を行い、処理全体で使用する有用なNTAPI関数群を解決するとともに、それらをプロセス環境ブロック(PEB)内のGdiHandleBufferに配置された構造体に格納します。
この構造体は以下のようになっています。

APIハッシュ化のアルゴリズムはシンプルです。API名の各文字のASCIIコードと16進数の「0x20」とのビット単位のOR(論理和)演算を行い、すべての英大文字を小文字に変換してから単純な計算を行います。
EDRキラーはロシアやベラルーシといった独立国家共同体(CIS)諸国を攻撃しないよう、取得したロケールを既知のロケールブラックリストと照合します。
その後、このマルウェアはRtlAdjustPrivilege()を動的に解決して呼び出すことにより、自身に以下の権限を付与しようと試みます。
- SE_PROF_SINGLE_PROCESS_PRIVILEGE
- 単一プロセスのプロファイル情報を収集するために必要
- その後に標的マシンの物理メモリ空間のマップを作成するために使用
- SE_DEBUG_PRIVILEGE
- 別のアカウントが所有するプロセスのメモリをデバッグ・調整するために必要
- SE_LOAD_DRIVER_PRIVILEGE
- デバイスドライバーの読み込みまたはアンロードに必要
脆弱性を悪用して物理メモリをマッピング
続いて、EDRキラーは脆弱性のあるドライバーをディスクに書き込み、サービスマネージャー経由で読み込みます。このドライバーはThrottleStopドライバーと呼ばれ、TechPowerUp LLCが提供する同名の正規無料アプリ(CPUのサーマルスロットリング回避ツール)で使われています。ただし、このドライバーには脆弱性が存在し、マルウェアが物理メモリをカーネルモードの仮想メモリにマッピングして、カーネルに対する直接的な読み書き操作を行うことを可能にしてしまいます。
QilinはEDRキラーに物理メモリアドレスを渡すことで、この脆弱性を悪用します。当該ドライバーがAPIを利用し、物理メモリをカーネルモードの仮想アドレスにマッピングする仕組みになっているからです。これを実現するため、EDRキラーは使用頻度の高いアプリをRAMにあらかじめ読み込むWindowsのメモリ管理サービスを使い、物理メモリマップを構築します。
- まず、すべての物理メモリブロックに関するベースライン情報を収集します。メモリページ(通常は4KB)は物理ブロックに割り当てられるため、数百もの仮想ページが単一の物理範囲を示す可能性があります。
- 次にサービスを呼び出し、ページフレーム番号(PFN)に関する詳細情報を取得します。この完全なマッピング情報をマルウェアがグローバル変数に格納することで、仮想メモリ空間と物理メモリ空間の間に信頼性の高い組み込み変換テーブルを確保します。
ドライバー署名チェックを回避
独自の有害ツールを実行するために、EDRキラーはまずWindowsのドライバー署名強制機能を回避する必要があります。通常、Windowsは組み込みの検証機能を使い、署名のないドライバーやブラックリストに登録されたドライバーの読み込みを阻止します。このマルウェアは単純な入れ替え操作を行うことでWindowsを欺き、こうした「門番」の機能を無力化します。
- マルウェアが特定のカーネル関数を見つけ出し、その物理メモリマップを利用して位置を特定します。
- 脆弱なドライバーに対し、このメモリ領域をスキャンして特定のバイトシグネチャを探すよう指示します。これにより、コード整合性コールバックテーブルに直接アクセスできるようになります。
- このテーブル内で、マルウェアが組み込みの検証チェックを見つけ出し、無害なダミー関数で「修正」します。
セキュリティ製品を無効化
ドライバー署名のチェックが完全に回避された状態で、このマルウェアは読み取り/書き込みのプリミティブを使ってシステムのコールバックを無効化します。具体的には、以下を特定して標的とします。
- プロセス通知コールバック
- スレッド通知コールバック
- イメージ読み込み通知コールバック
- レジストリコールバックおよびミニフィルター
このEDRキラーは、システムのすべてのコールバックを一律に解除するのではなく、各コールバックのアドレスをチェックします。そのアドレスがハードコードされたブラックリストに含まれるセキュリティ製品のメモリ範囲内にある場合、ポインターをヌルバイトでゼロクリアすることにより、ピンポイントでそのコールバックを解除します。

次に、独自のカスタムドライバーをドロップして読み込みます。このドライバーは、特定の用途向けに作成されたものとしてWindowsに認識されています。読み込みが完了すると、EDRキラーは実行中の関連プロセスをすべて取得します。ハードコードされたリストに一致するプロセスについては、そのプロセスIDをベクトルに格納します。
さらに、特定したプロセスIDごとにドライバーへメッセージを送信します。簡単に説明すると、このドライバーは対象となる実行ファイルのフルパスを特定し、あらゆるユーザーに対して読み取り・書き込み・削除ができない状態にした上で、そのプロセスを終了させます。
興味深いことに、Qilin EDRキラーは標的となるセキュリティ製品の実行ファイルに対し、随意アクセス制御リスト(DACL)の変更を行います。このドライバーは空のACLヘッダーを新たに作成し、「SE_DACL_PRESENT」フラグを「TRUE」に設定します。これは重要な点です。というのも、「Null DACL(ヌルDACL)」と「空のDACL」は同じものではないからです。Null DACLはすべてのユーザーにアクセスを許可しますが、空のDACLは誰にも許可しません。この処理により、ほかのEDRキラーのようにファイルを削除することなく、そのセキュリティ製品の実行ファイルを実行不能な状態にできます。ドライバーによって実行プロセスが終了させられると、そのプログラムを再起動することはできなくなります。

すべての処理が完了すると、EDRキラーはPatchGuardのトリガーを回避するために「コード整合性チェック(Code Integrity Check)」へのパッチ適用を解除し、終了します。
Qilin対策にFlashpointを活用
高度なカーネルレベルの操作は、より広範な脅威ランドスケープにおいて急速に拡大する傾向を、すなわち企業レベルのセキュリティ製品を無力化することに特化した、効果の高いマルウェアの蔓延という傾向を浮き彫りにしています。Qilinがこれらの技術を統合したことは、アンダーグラウンドのサイバー犯罪エコシステムでEDRキラーの市場が成熟し、的を絞った機能から、影響力の大きなランサムウェア攻撃に欠かせないものに変化しつつあることを示しています。
セキュリティプラットフォームの検知機能が絶えず進化する中、FlashpointではアンチEDRツールを取り巻く脅威ランドスケープが今後もさらに拡大し、攻撃性を強めていくと予想しており、企業や組織はカーネルの保護と不正なドライバーの展開を検知することに注力せざるを得ないと考えています。Flashpointのデモをお申し込みいただき、Qilinとランサムウェアの最新動向について理解を深めてください。
※日本でのFlashpointに関するお問い合わせは、弊社マキナレコードにて承っております。
また、マキナレコードではFlashpointの運用をお客様に代わって行う「マネージドインテリジェンスサービス(MIS)」も提供しております。
FlashpointやVulnDBについて詳しくは、以下のフォームからお問い合わせください。












