セキュリティソフトをきちんと導入しているにもかかわらず、侵害を受けてしまった——そんな報告が増えています。その背景にあるのが「ファイルレスマルウェア」と呼ばれる攻撃手法です。名前のとおり、ディスクに実行ファイルを書き込まずにメモリ上だけで動作するため、従来の署名ベースのウイルス対策では検知が非常に難しいのが特徴です。
この記事では、ファイルレスマルウェアの仕組み・典型的な攻撃フロー・具体的な防御手順を、現場目線でわかりやすく解説します。情シス担当の方が明日から取り組める対策も紹介しますので、ぜひ最後までお読みください。

ファイルレスマルウェアとは?
ファイルレスマルウェア(Fileless Malware)とは、ディスク上に悪意のある実行ファイルを書き込まずに動作するマルウェアの総称です。攻撃コードはメモリ(RAM)上にのみ展開され、OSが標準で持つ正規のツールやプロセスを悪用して動作します。
従来のマルウェアはディスクにファイルを書き込むため、ハッシュ値のマッチングやファイルスキャンで検知できました。しかしファイルレス攻撃では「ファイルそのものが存在しない」ため、シグネチャベースのウイルス対策が機能しにくい状況が生まれます。
Living off the Land(LotL)との関係
ファイルレスマルウェアは「Living off the Land(LotL)」手法と深く結びついています。LotLとは、PowerShell・WMI(Windows Management Instrumentation)・certutil・mshta といったOSの正規ツールを悪用して攻撃を進める手口です。正規ツールの動作は管理者も日常的に行うため、ログを見ても悪意ある操作と正常な操作の区別が難しく、見逃されやすいのが実情です。
攻撃の仕組み(敵を知る)
ファイルレスマルウェアの典型的な攻撃フローを順を追って見ていきましょう。
1. 初期侵入フェーズ
ほとんどのケースで、入り口はフィッシングメールや改ざんされたWebサイト経由です。添付のOfficeファイルを開いた瞬間にマクロが動作したり、ブラウザの脆弱性を突いてスクリプトが実行されたりします。ディスクには悪意あるファイルが残らず、メモリ上でコードが展開されます。
2. メモリ展開フェーズ
初期侵入後、攻撃者は次の手法でコードをメモリ内に読み込みます。
・PowerShell悪用: Base64エンコードされたコマンドをメモリ内で復号・実行し、外部サーバーからペイロードを取得します
・WMI悪用: イベントサブスクリプションを利用してメモリ上でコードを定期実行します
・反射型DLL注入: 正規プロセス(explorer.exe等)のメモリ空間に悪意あるコードを直接書き込み実行します
・プロセスハロウイング: 正規プロセスを起動してその中身をすり替え、ウイルス対策の検知を回避します
代表的な実行コマンドのパターンは以下のようなものです(防御目的での参考)。
# 実際の攻撃で使われるPowerShellの難読化パターン(概念例) # -EncodedCommand フラグでBase64コマンドをメモリ内で直接実行 powershell.exe -NoProfile -WindowStyle Hidden -EncodedCommand [Base64文字列] # WMIを使ったイベントドリブン実行の概念 wmic /node:localhost process call create "powershell -ep bypass -w hidden ..."
3. 永続化フェーズ
「再起動すれば消える」と思いがちですが、実際には永続化するケースが多くあります。よく使われる方法は次のとおりです。
・レジストリRun Keys: `HKLM\Software\Microsoft\Windows\CurrentVersion\Run` にPowerShellコマンドを仕込む
・スケジュールタスク: タスクスケジューラに悪意あるスクリプト起動を登録する
・WMIイベントサブスクリプション: 特定条件(OS起動時等)でメモリ内コードを再実行する
永続化に成功した攻撃者は、そのままラテラルムーブメント(横移動)を行い、ネットワーク内部を侵食していきます。
具体的な防御手順
1. PowerShellのログを有効化する
ファイルレス攻撃の多くはPowerShellを経由します。Windowsのグループポリシーまたはレジストリで「スクリプトブロックログ」と「モジュールログ」を有効化することで、どのコマンドが実行されたかをイベントログに残せます。
# PowerShellスクリプトブロックログの有効化(レジストリ設定例) # グループポリシーエディタ (gpedit.msc) での設定先: # コンピュータの構成 > 管理用テンプレート > Windows コンポーネント # > Windows PowerShell > PowerShell スクリプト ブロックのログ記録を有効にする # またはレジストリで直接設定 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f
ログはWindowsイベントログの「Microsoft-Windows-PowerShell/Operational」(イベントID 4104)に記録されます。
2. PowerShell実行ポリシーを強化する
実行ポリシーを `AllSigned` または `RemoteSigned` に設定し、署名のないスクリプトの実行を制限します。これだけで攻撃の難易度を大きく上げられます。
# 実行ポリシーの確認と変更(管理者PowerShellで実行) Get-ExecutionPolicy -List # リモートからのスクリプトには署名を要求する Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
ただし `-ExecutionPolicy Bypass` フラグで回避できるため、ポリシー単体では完全ではありません。後述するEDRや監視との組み合わせが重要です。
3. WMIとスケジュールタスクの活動を監視する
永続化で使われるWMIイベントサブスクリプションとスケジュールタスクを定期監視します。
# 不審なWMIイベントサブスクリプションを確認 Get-WMIObject -Namespace root\subscription -Class __EventFilter Get-WMIObject -Namespace root\subscription -Class CommandLineEventConsumer Get-WMIObject -Namespace root\subscription -Class __FilterToConsumerBinding # 登録済みのスケジュールタスクを確認 Get-ScheduledTask | Where-Object {$_.State -ne "Disabled"} | Select TaskName, TaskPath, State
見慣れないタスクや、PATHにPowerShellが含まれているタスクが見つかった場合は精査が必要です。
4. EDRを導入してメモリ上の挙動を監視する
ファイルレスマルウェアへの最も効果的な対策は、メモリ上の挙動を監視できるEDR(Endpoint Detection and Response)の導入です。EDRは従来のウイルス対策と異なり、プロセスの振る舞い・メモリアクセスパターン・ネットワーク接続先などを総合的に評価して異常を検知します。
代表的な製品として、Microsoft Defender for Endpoint(中小企業でも比較的導入しやすい)、CrowdStrike Falcon、SentinelOneなどがあります。
中小企業でも今日からできること
フルセットのEDRやSIEM導入が難しくても、以下の対策は費用を抑えつつ着手できます。
・Windowsイベントログの保存期間を延長する: デフォルトでは上書きされる設定になっていることが多い。最低でも90日分のセキュリティログを保持するよう設定する
・PowerShellのバージョンを最新に保つ: PowerShell v5以降はログ機能が強化されている。古いv2が残っている環境は攻撃者に悪用されやすいため、無効化または最新化する
・Microsoft Defender for Endpointの無料枠を活用する: Microsoft 365 Business Premiumのライセンスがあれば追加費用なしでEDR機能を利用できる
・AppLockerで実行可能なアプリを制限する: Windows 10/11 Enterprise・Pro以上で利用できる機能で、許可したアプリ以外の実行をブロックできる
・ネットワーク出口を制限する: PowerShellが外部サーバーに接続できる環境では攻撃が進みやすい。プロキシ経由以外のアウトバウンド通信を絞ることで攻撃の進行を遅らせられる
よくある誤解と注意点
【誤解1】「再起動すれば消えるから大丈夫」
メモリ上のコードは確かに再起動で消えますが、前述のとおり攻撃者は多くの場合「永続化」を試みます。レジストリやWMIサブスクリプションに仕込まれたコードは再起動後も自動実行されます。再起動による除去を過信しないことが重要です。
【誤解2】「アンチウイルスが入っているから検知できる」
従来のシグネチャベースのアンチウイルスはファイルのハッシュを見て判定します。ファイルがなければ検知しようがないのが実情です。昨今のアンチウイルスはヒューリスティック検知を備えていますが、難読化・分割実行を駆使した高度な攻撃には限界があります。
【注意】フォレンジック調査が困難になる
感染後の調査では、メモリを揮発させないよう注意が必要です。感染が疑われる端末は、シャットダウンせずに電源を入れたままの状態でメモリダンプを取得することが推奨されます。シャットダウンすると証拠が失われる可能性があります。

本記事のまとめ
| 観点 | 内容 |
|---|---|
| 定義 | ディスクに実行ファイルを書き込まず、メモリ・正規ツールを悪用して動作するマルウェア |
| 主な侵入経路 | フィッシングメール・マクロファイル・脆弱なブラウザ |
| 悪用されるツール | PowerShell、WMI、mshta、certutil、regsvr32 |
| 永続化の仕組み | レジストリRun Keys、スケジュールタスク、WMIイベントサブスクリプション |
| 検知の難しさ | ファイルが存在しないためシグネチャ検知が機能しにくい |
| 有効な対策 | PowerShellログ有効化・実行ポリシー強化・EDR導入・AppLocker活用 |
ファイルレスマルウェアは「ウイルスを置かない」という発想の転換をした攻撃手法です。正規ツールを使う分、運用ログとの区別が難しく、侵入後に長期間気づかれないことも珍しくありません。まずはPowerShellのスクリプトブロックログを有効化するだけでも、攻撃者の動きをあとから追跡する手がかりが生まれます。できることから一歩ずつ着手してみてください。
PR
詳解 インシデントレスポンス(Steve Anson/石川朝久訳)
ファイルレスマルウェアを含む高度な攻撃に対するインシデント対応の実践手順を体系的に学べる一冊。メモリフォレンジックや証拠保全の基礎から、実際の調査フローまでカバーしており、現場で役立つ知識が詰まっています。
