コードを動かし、住みつく
実行と永続化編
第2回で攻撃者は“入口”を突破しました。次の一手は、侵入したコードを実際に動かす「実行」と、再起動やパスワード変更でも消えないよう住みつく「永続化」。ここはDFIR・フォレンジックの主戦場です——痕跡が濃く残るぶん、防御側が“気づき、捕まえる”最大のチャンスでもあります。連載・第3回。
📋 連載 第3回の目次
前回の第2回(初期アクセス編)で、攻撃者はついに“入口”を突破しました。フィッシングの添付を開かせ、あるいは公開機器の脆弱性を突いて、最初の足がかりを得たところまでが前回の物語。では、足がかりを得た攻撃者は、次に何をするのか。答えは2つです。侵入したコードを実際に「動かし(実行)」、そして二度と追い出されないよう「住みつく(永続化)」。今回は、この2つの戦術——ATT&CKの実行(TA0002)と永続化(TA0003)——を、防御者の視点で深掘りします。第1回の地図でいえば、いよいよ攻撃者が“家の中で活動を始める”局面です。
全6回の地図・各回へのリンク・目的別の読み方(初学者/検知エンジニア/IR担当…)は、▶ 連載インデックス(総まとめ)はこちら。
この記事は、攻撃者がどうコードを実行し、どこに住みつくかを防御者が理解し、その痕跡を見つけて取り除くために解説します。攻撃の手順書ではありません。具体的な悪用コードやマルウェアの作り方は扱わず、「どんな痕跡が、どこに残り、どう検知するか」に徹します。ここで紹介するコマンドや設定の確認は、必ず自分が管理する、または正式に許可された環境で行ってください。他者の端末を無断で操作・調査すれば、不正アクセス禁止法等に触れる犯罪です。相手の手口を知るのは、あくまで“より早く気づき、より確実に守る”ためです。
🧭 第2回からの接続:地図上の現在地
入口を突破された——でも、ここからが防御側の“反撃”の始まりです。
第2回の最後、フィッシングの図解で“分岐”を見たのを覚えているでしょうか。偽サイトでの認証情報窃取と、もうひとつ——「添付ファイルのマクロが、PowerShellを起動する」という枝。あの瞬間、攻撃は初期アクセス(TA0001)から、今回の実行(TA0002)へとバトンを渡しています。攻撃者の物語は、こうして途切れなく続いているのです。
ここは“見えにくい偵察”とは正反対——防御側の主戦場
第2回で、偵察は静かで検知しにくいという話をしました。実行と永続化は、その正反対です。攻撃者のコードがこちらの端末の上で動く以上、プロセスの起動、コマンドの実行、レジストリやファイルの変更といった痕跡が濃く残ります。つまりここは、DFIR・デジタルフォレンジックがもっとも力を発揮する“防御側の主戦場”。攻撃を可視化し、捕まえる最大のチャンスなのです。「入口を破られた=負け」ではありません。むしろ、ここからが反撃の始まりです。
もうひとつ、この2戦術には深い関係があります。実行は「点」、永続化は「線」です。実行は“いま、コードを動かす”一回きりの行為。でも電源を切れば消えてしまう。そこで攻撃者は、再起動やログオンのたびに自分のコードが自動で動くよう「永続化」を仕込み、一回の侵入を“ずっと使える資産”に変えようとします。だから防御側も、この2つをセットで捉えるのが効果的。「いま動いている怪しいプロセス(実行)」を見つけたら、必ず「どこから自動起動されているのか(永続化)」まで追う——この2段構えが、攻撃者を根こそぎにする鍵になります。
💻 実行(Execution):コードを動かす
戦術ID TA0002。攻撃者が、自分のコードを標的のシステム上で走らせる段階です。
実行(Execution)は、攻撃者が用意したコードを、標的の端末やサーバーの上で実際に動かす戦術です。どんなに巧妙に侵入しても、コードが動かなければ何も起きません。逆に言えば、ここを境に攻撃は“絵に描いた餅”から“現実の脅威”へと変わります。ランサムウェアの暗号化も、情報窃取も、横展開も、すべては「実行」から始まるのです。
実行の手口で、群を抜いて多く使われるのがコマンド・スクリプトインタプリタ(T1059)です。これは、OSに標準で備わったスクリプト実行の仕組みを使う手口で、いくつものサブ技術に分かれています。
PowerShell
Windowsに標準搭載され、システムを深く操作できる強力なシェル。メモリ上だけで完結でき、攻撃者がもっとも好む“万能ツール”。
Windowsコマンドシェル
昔ながらの cmd.exe。バッチファイルや単純なコマンド連結で、偵察や次段ダウンロードに使われる。
Visual Basic(VBA)
Officeのマクロ。フィッシング添付の定番で、開いた瞬間に次のスクリプトを呼び出す“導火線”の役割。
ユーザーによる実行
攻撃者ではなく“人間”に実行させる手口。添付ファイルやリンクを開かせる。第2回のフィッシングと直結する入口の続き。
スクリプト実行のほかにも、WMI(T1047)=Windowsの管理機能の悪用、スケジュールタスク(T1053)=時刻やイベントを引き金にした実行(これは永続化でも大活躍する“二刀流”)、システムサービス(T1569)などがあります。下の図は、第2回のフィッシングから今回の実行へ、攻撃が途切れず連鎖していく様子です。
🔗 実行の連鎖:フィッシングから“動き出す”まで
| 実行テクニック | ATT&CK ID | 検知の着眼点 |
|---|---|---|
| PowerShell | T1059.001 | ScriptBlockログ(EID 4104)/-enc等の不審な引数 |
| コマンドシェル | T1059.003 | プロセス生成ログ+コマンドライン記録 |
| VBAマクロ | T1059.005 | Office製品が子プロセスを起動する異常 |
| WMI | T1047 | wmic.exe・WMI-Activityログ |
| スケジュールタスク | T1053.005 | タスク作成ログ(EID 4698) |
なぜ攻撃者はPowerShellをこれほど好むのか。理由は3つ。①Windowsに標準搭載されている(追加インストール不要)、②システムを深く操作できる、③ファイルを置かずメモリ上だけで動かせる。とくに③は、従来のウイルス対策ソフトが苦手とする“ファイルレス”につながります。次の章で、この「正規ツールを悪用する」という、現代の攻撃の中核的な発想を見ていきましょう。
🧬 “土地で生きる”攻撃とファイルレス
攻撃者は、わざわざ怪しいツールを持ち込みません。OSにある“正規の道具”で生きるのです。
現代の攻撃を理解する最重要キーワードが「Living off the Land(土地のもので生きる)」、略してLotLです。そこで悪用される正規ツールをLOLBins(ロルビンズ/Living off the Land Binaries)と呼びます。攻撃者は、マルウェアという“怪しい持ち物”をできるだけ持ち込まず、OSに最初から入っている、署名済みの正規プログラムを悪用して目的を果たします。
代表的なLOLBinsには、powershell.exe のほか、wmic.exe、rundll32.exe、mshta.exe、regsvr32.exe、certutil.exe(本来は証明書管理だがファイルDLに悪用)、bitsadmin.exe などがあります。これらはすべてMicrosoft純正で、業務でも使われる正規ツール。だからこそ、「実行されていること自体は怪しくない」——ここに防御の難しさがあります。
LOLBinsの厄介さは、業務でも使う正規ツールなので、単純に禁止できない点にあります。PowerShellを全社で無効化すれば、運用が回らなくなる組織がほとんどでしょう。つまり「そのファイルが存在するか/実行されたか」で判断する従来型の防御は、ここでは通用しません。鍵は発想の転換です——「何が実行されたか」ではなく「どう実行されたか(振る舞い)」を見る。たとえば「Wordの子プロセスとしてPowerShellが、Base64で難読化された長い引数つきで起動した」なら、それは明らかに異常です。第1回で学んだ「変えにくいTTPで捉える」という発想が、まさにここで効いてきます。
LOLBinsとセットで語られるのがファイルレスマルウェアです。これは、悪意あるコードをディスクに書き込まず、メモリ上だけで動かす手口。ファイルが残らないため、ファイルを走査する従来型ウイルス対策をすり抜けやすいのが特徴です。とはいえ、防御側にも手はあります。ファイルは残らなくても、「プロセスが起動した」「こんなコマンドラインだった」「この親プロセスから生まれた」という“行動の記録”は残せるからです。そこで重要になるのが、次のデータソースです。
| 見るべきデータソース | 何が分かるか |
|---|---|
| プロセス生成ログ(Sysmon EID 1) | 何が・どんなコマンドラインで・どの親から起動したか |
| PowerShell ScriptBlockログ(EID 4104) | 実際に実行されたスクリプトの中身(難読化を展開後) |
| AMSI(マルウェア対策スキャンIF) | メモリ上で展開されたスクリプトを実行直前に検査 |
| 親子プロセスの関係 | 「Word→PowerShell」のような“ありえない系譜”を発見 |
これらを使えば、ファイルレスでも“振る舞い”は捉えられます。たとえば、難読化された(Base64エンコードされた)PowerShellの実行は、典型的な危険信号です。Sigmaで書くと、こんな検知ルールになります。tags に defense_evasion(防御回避)が入っているのは、難読化が“次回・第4回のテーマ”でもあるからです。
▲ 正規の運用でPowerShellを -enc(エンコード実行)+-w hidden(ウィンドウ非表示)で使うことは、まずありません。“正規ツールの異常な使われ方”を捉える、典型的な一行です。
🪱 永続化(Persistence):システムに住みつく
戦術ID TA0003。再起動でも、パスワードを変えても、消えない足場を作る段階です。
侵入してコードを実行できても、それだけでは“一回きり”。パソコンを再起動すれば、メモリ上のマルウェアは消えてしまいます。そこで攻撃者は永続化(Persistence)——再起動・ログオフ・パスワード変更といった環境の変化を乗り越えて、足場を維持する仕組みを仕込みます。一度苦労して開けた入口を、毎回こじ開け直すのは面倒。だから攻撃者は、「次からは自動で入れる勝手口」を裏に作っておくのです。
なぜ永続化がそれほど重要なのか。攻撃者にとって、一度の侵入を「ずっと使える資産」に変えられるからです。とくに、長期間こっそり潜伏して情報を盗み続ける標的型攻撃(APT)では、永続化は生命線。逆に防御側から見れば、永続化の痕跡こそ「攻撃者がまだ居座っている動かぬ証拠」であり、これを見つけて断ち切ることが、再侵入を防ぐ決定打になります。
永続化の正体は「自動実行ポイント(ASEP)」の乗っ取り
永続化の手口は数十種類ありますが、根っこの発想はどれも同じ。「OSが“決まったタイミングで自動的に何かを実行する”仕組みに、自分のコードを紛れ込ませる」ことです。こうした自動実行の起点を、まとめてASEP(Auto-Start Extensibility Points=自動起動拡張ポイント)と呼びます。Windowsには、起動時・ログオン時・スケジュール・特定イベント時など、ASEPが無数にあります。攻撃者はそのどれかに“勝手口”を仕込む。だから防御の鍵は、「正常な自動起動の姿(ベースライン)を知り、そこから外れたものを見つける」こと。何が正常か知らなければ、異常にも気づけません。
🔑 Windows定番の永続化メカニズム
攻撃者が好んで使う“勝手口”の代表格と、その見つけ方をまとめます。
下の図は、永続化の本質を1枚で表したものです。再起動やログオンといった“引き金”が引かれるたびに、仕込まれた自動実行ポイントが攻撃者のコードを“復活”させる——この仕組みが永続化です。
🔄 永続化の仕組み:引き金 → 自動実行ポイント → コード復活
代表的な“勝手口”を、ステルス度(見つけにくさ)とあわせて整理します。攻撃者は、目立つものより正規の設定に紛れやすいものを好みます。
| 永続化メカニズム | ATT&CK ID | 仕掛けられる場所 | 主な検知(Windowsログ等) |
|---|---|---|---|
| レジストリ Run/RunOnce鍵 | T1547.001 | ...\CurrentVersion\Run | レジストリ変更監視/Autoruns |
| スケジュールタスク | T1053.005 | タスクスケジューラ | タスク作成ログ(EID 4698) |
| Windowsサービス | T1543.003 | サービスとして登録 | サービスインストール(EID 7045) |
| スタートアップフォルダ | T1547.001 | スタートアップ配下にファイル | ファイル作成監視 |
| WMIイベントサブスクリプション | T1546.003 | WMIリポジトリ(ファイルレス) | WMI-Activityログ(要・専用監視) |
| 新規アカウント/権限付与 | T1136 / T1098 | ローカル/ドメインのアカウント | アカウント作成・変更ログ(EID 4720等) |
表のなかでとくに見落とされがちなのが、アカウントを使った永続化(T1136 新規作成 / T1098 権限付与)です。攻撃者が正規の管理者アカウントをひとつ作ってしまえば、マルウェアを一切置かなくても、堂々と“正面玄関”から再侵入できます。ファイルもプロセスも残さず、ログ上は「正規ユーザーのログイン」に見える——もっとも厄介な勝手口です。これは次回・第4回の認証情報アクセスとも地続きのテーマ。アカウントの新規作成や権限変更(EID 4720 等)の監視は、地味でも極めて重要です。
頼れる相棒:Sysinternals「Autoruns」
これらの自動起動ポイントを一画面でまとめて確認できるのが、Microsoft純正の無料ツールAutoruns(Sysinternals)です。Run鍵・スケジュールタスク・サービス・ドライバなど、あらゆるASEPを一覧化してくれます。さらにVirusTotal連携で“見慣れない登録”を炙り出せる。フォレンジックの現場では、Windowsアーティファクト解析の基本道具のひとつ。「まず自動起動を全部見る」——これが永続化発見の第一歩です。
🎯 実行・永続化を捉える:検知と狩りの実践
1台を調べるだけでは不十分。攻撃者の“住処”は、組織全体で探すのが鉄則です。
実行と永続化の痕跡は端末に濃く残る——だからこそ、防御側は積極的に“狩り(ハント)”に出られます。受け身でアラートを待つだけでなく、「全端末の自動起動ポイントを一斉に集め、正常なベースラインから外れたものを探す」。これが、永続化を炙り出す王道です。1台の端末で見つけた“勝手口”が、実は他の何台にも仕込まれている——そんな発見が、被害の全容把握につながります。Velociraptorのようなツールを使えば、こうした横断ハントを数分で実行できます。
▲ 発想は「悪いものを探す」より「正常から外れたものを探す」。ベースライン(正常な状態)を持っておくほど、異常はくっきり見えます。
では、実際にアラートが上がってから、攻撃者を根こそぎにするまでの流れを見てみましょう。実行(点)から永続化(線)へ、そして全体把握へとつなげるのがコツです。
実行チェーンの復元
プロセス生成ログから親子関係をたどり、「何が・どこから・どう起動したか」を再構成する。
永続化ポイントの発見
その端末のRun鍵・タスク・サービスを確認。「線」を断つには、自動起動の“住処”を必ず特定する。
全端末への横断ハント
見つけた“勝手口”の痕跡を、組織内の全端末で検索。被害範囲の全容をつかむ。
封じ込めと除去
該当端末を隔離し、永続化を除去。以降はインシデント対応プレイブックの手順へ。
なぜ“待つ”のではなく“狩る”のか。攻撃者の潜伏期間(侵入してから発見されるまでの日数)は、長ければ数か月に及ぶことも珍しくありません。その間、永続化した足場から静かに活動が続きます。アラートを待つ受け身の守りだけでは、この“沈黙の期間”を見逃しかねません。定期的に自動起動を棚卸しし、ベースラインから外れた“住処”を能動的に探す——この狩りの習慣が、潜伏期間を縮め、被害が深刻化する前に攻撃者を追い出す決め手になります。
□ Sysmonを導入し、プロセス生成(EID 1)とコマンドラインを記録しているか/□ PowerShellのScriptBlockログ(EID 4104)を有効化したか/□ スケジュールタスク作成(EID 4698)・サービスインストール(EID 7045)を監視しているか/□ Autorunsで自動起動を定期的に棚卸ししているか/□ 「正常な自動起動の一覧(ベースライン)」を作ってあるか/□ 「Office→PowerShell」のような親子プロセスの異常を検知ルール化したか/□ 検知後に全端末を横断ハントできる準備(Velociraptor等)はあるか。まずはSysmon導入とPowerShellログ有効化——この2つだけで、実行・永続化の“見え方”が一変します。
ログの取得・検知から、横断ハント、そして対応まで——実行・永続化の章は、当サイトの実務記事が密につながる領域です。DFIR完全ロードマップを“地図の索引”として、必要な実践記事を行き来してみてください。
📚 用語集・FAQ・次に読む
今回の用語の整理と、よくある疑問。そして連載・第4回の予告です。
実行と永続化——攻撃者が“動き出し、住みつく”2つの戦術を見てきました。覚えておきたい勘所は2つ。「実行は振る舞い(どう実行されたか)で捉える」「永続化はベースラインからの差分で見つける」。そして、実行(点)を見つけたら永続化(線)まで必ず追う。この姿勢が、攻撃者を根こそぎにします。用語とFAQで仕上げましょう。
📖 用語集
| 用語 | 意味 |
|---|---|
| 実行(Execution) | 攻撃者のコードを標的システム上で動かす戦術。TA0002。 |
| 永続化(Persistence) | 再起動等を越えて足場を維持する戦術。TA0003。 |
| T1059 | コマンド・スクリプトインタプリタ。PowerShell(.001)等のサブ技術を持つ。 |
| LOLBins | OS標準の正規ツールを悪用する手口(Living off the Land Binaries)。 |
| ファイルレス | ディスクにファイルを残さず、メモリ上だけで動くマルウェア。 |
| ASEP | 自動起動拡張ポイント。OSが自動実行する仕組みの総称。永続化の標的。 |
| Run/RunOnce鍵 | ログオン時に自動実行されるレジストリの定番ASEP。T1547.001。 |
| WMIサブスクリプション | 特定イベントを引き金に実行するステルス性の高い永続化。T1546.003。 |
| Sysmon | 詳細なプロセス・通信ログを残すMicrosoftの無料監視ツール。 |
| ScriptBlockログ | 実行されたPowerShellの中身を記録(EID 4104)。難読化も展開後に残る。 |
| AMSI | マルウェア対策スキャンIF。メモリ上のスクリプトを実行直前に検査。 |
| ベースライン | 正常な状態の記録。異常検知の“ものさし”になる。 |
❓ よくある質問(FAQ)
PowerShellは危険なら、無効化してしまえばいいのでは?
PowerShellは多くの組織で運用・管理に不可欠なので、全面無効化は現実的でないことがほとんどです。代わりに、実行ポリシーの制御、ログ(ScriptBlock/モジュール)の有効化、制約言語モードの活用、AMSIの利用といった“監視しながら安全に使う”対策が推奨されます。「禁止」ではなく「見える化」が基本方針です。
ファイルレス攻撃は、ファイルが残らないなら追跡不可能では?
ファイルは残らなくても、「プロセスが起動した」「このコマンドラインだった」「この親から生まれた」という“行動の記録”は残せます。Sysmonのプロセス生成ログやPowerShellのScriptBlockログを取っておけば、メモリ上の動きも再構成できます。だから「ログを事前に取っておく」ことが、ファイルレス対策の生命線になります。
永続化を1つ見つけたら、それを消せば対応完了ですか?
危険な考え方です。攻撃者は複数の永続化を保険として仕込むことがよくあります。Run鍵を消しても、スケジュールタスクやサービス、WMIサブスクリプションに別の“勝手口”が残っているかもしれません。だから1つ見つけたら、ASEP全体を棚卸しし、全端末を横断ハントして取り残しがないか確認するのが鉄則です。
実行と永続化、どちらの対策を優先すべきですか?
両方つながっているので“セット”が理想ですが、まず着手するなら「実行の可視化(Sysmon+PowerShellログ)」が費用対効果で優れます。実行が見えれば、その先の永続化の痕跡も追えるからです。次いで、Autorunsによる自動起動の棚卸しでベースラインを作る。この順番が現実的です。
手口の確認コマンドを学ぶこと自体、危なくないですか?
この記事で扱うのは「攻撃の痕跡を、防御者が見つけて取り除く」ための知識であり、攻撃手順書ではありません。自動起動の確認やログ解析は、防御・調査の正当な手段です。ただし、これらの確認・操作は必ず自分が管理する、または許可された環境で行ってください。許可なく他者の端末を調べれば犯罪になり得ます。許可された検証はペネトレーションテストの枠組みで行います。
🧭 次に読む
住みついた攻撃者は、次に「身を隠し(防御回避)」「より強い鍵を奪う(認証情報アクセス)」段階へ進みます。今回ちらりと出てきた“難読化”や、セキュリティ機能の無効化、そしてパスワードやハッシュの窃取(LSASSなど)を深掘りする予定です。攻撃が「潜伏」から「拡大」へと転じる、重要な分岐点。地図を、さらに東へ進めましょう。
📚 参考・出典(一次情報)
- MITRE ATT&CK 公式 — Execution(TA0002)/Persistence(TA0003)、T1059・T1547・T1053・T1543・T1546 等の各技術ページ
- Microsoft Sysinternals — Sysmon(プロセス・通信ログ)/Autoruns(自動起動ポイントの一覧)
- Microsoft Learn — PowerShell のログ記録(Script Block Logging)/AMSI の仕様
- JPCERT/CC — 攻撃で悪用される正規ツール(LOLBins)・永続化に関する分析レポート
- IPA「情報セキュリティ10大脅威」/NIST SP 800-61・800-83(マルウェアインシデント対応)


コメント