ゆめさくセキュリティ

レッスン 4-3

インシデント対応

最初の 1 時間で、被害の大きさが決まります。

検知、封じ込め、根絶、復旧、ふりかえりの流れを、ランサムウェアの侵入を例に扱います。最初の 1 時間に何を決めるか、多要素認証の例外と、上書きされる控え (バックアップ) という 2 つの分かれ目を手元で比べ、初動の判断を時系列で残す方法までを扱います。

  • 目安60 分
  • 出典を確かめた日2026年10月24日
  • 修了の条件与えられた場面で、初動の判断を時系列で残せる

なぜ通るのか

月曜の朝、受注の画面が開かないと連絡が来ます。サーバーを見に行くと、ファイルの名前が見慣れない形に替わっていて、身代金を求める文が置かれています。ここから先の 1 時間に何を決めるかで、止まる業務の範囲と、戻るまでの日数が変わります。

インシデントは、穴が 1 つ開いただけでは大きくなりません。入口が開いていて、中で広がれて、控えまで壊せた時に、事業が止まるほどの被害になります。このレッスンでは、対応の流れを 5 つに分けて扱います。

段階すること
検知おかしいと気づき、体制を立ち上げる
封じ込め広がりを止め、残った控えを守る
根絶入口と、中に残された物を取り除く
復旧安全を確かめてから戻す
ふりかえり何が分かれ目だったかを直しに変える

最初の 1 時間に決めること

JPCERT/CC は、侵入型ランサムウェアの初動の相談に対して、3 つの方針を伝えています。被害の範囲をつかんで最小にすること、考えられる侵入の経路を塞ぐこと、攻撃者の要求には応じずに控えから戻すことです。そのうえで、対応する体制と、社内の連絡の体制、社外からの問い合わせの窓口を確保します。

CISA の #StopRansomware Guide は、影響を受けた機械を特定してすぐに切り離すこと、いくつもの機械や区画に及んでいればスイッチの所でネットワークを落とすことを勧めています。気づかれたと攻撃者に悟られないよう、電話のような別の経路で連絡を取り合うことも挙げています。電源を切るのは、ネットワークから切り離せない時だけです。電源を切ると、メモリの中の証拠が失われるからです。

分かれ目は、例外と控え

大きな被害の事例を並べると、入口の多くは遠隔接続の入口で、多要素認証 (パスワードに加えて、手元の端末などで本人を確かめる仕組み) が無いか、例外になっていました。そして復旧を難しくしたのは、控えが本番と一緒に暗号化されたり、汚れていたりしたことでした。

どちらも、平時の設定の 1 行で決まっています。例外の一覧に 1 つ名前があること。控えが毎回同じ所に上書きされること。JPCERT/CC は、自動で控えを取る仕組みでは、被害を免れていた控えが上書きされて消える恐れがあると注意しています。

脆いコードと直したコード

ラボの中の小さな関数で比べます。Python に付いている物だけで動き、作業用のフォルダの外には触りません。

多要素認証の例外を持つか、持たないか

脆いコード例外の一覧の人は MFA を飛ばす
MFA_EXEMPT = {"vendor-admin"} def login(user, password, code=None):if not check_password(user, password):return Falseif user in MFA_EXEMPT:return Truereturn check_code(user, code)
直したコード例外を持たない
def login(user, password, code=None):if not check_password(user, password):return Falsereturn check_code(user, code)

脆い方では、委託先の管理者 vendor-admin だけは、パスワードが漏れればそれだけで入れます。例外の一覧は、作った時には理由があっても、あとから見直されずに残りがちです。直した方は、誰であってもコードの確かめを通ります。

控えを上書きするか、世代を分けるか

脆いコード毎回同じ名前に上書きする
import shutilfrom pathlib import Path def backup(src, dst_dir, stamp):dst = Path(dst_dir) / "latest.db"shutil.copy(src, dst)
直したコード世代を分け、書き込みを止める
import shutilfrom pathlib import Path def backup(src, dst_dir, stamp):dst = Path(dst_dir) / f"{stamp}.db"if dst.exists():raise FileExistsError(dst)shutil.copy(src, dst)dst.chmod(0o444)

脆い方では、本番のデータが壊れたあとに控えを取ると、最後の正しい控えがその場で壊れた物に替わります。直した方は、取った時刻ごとに別のファイルにし、取ったあとは読むだけにします。

これはラボで確かめられる最小の形です。同じ機械、同じ権限のままでは、権限を奪われれば読むだけの印も外されます。CISA の手引きは、多くのランサムウェアは届く所の控えを探して消すか暗号化するので、控えはネットワークから切り離して持ち、戻せるかを定期的に試すよう勧めています。

ログでの見え方と検知

脆いログインのまま、vendor-admin のパスワードだけで入られると、記録には次のような行が残ります。

記録脆いコードのときの記録
02:14 127.0.0.1 vendor-admin login ok mfa=skip02:31 127.0.0.1 vendor-admin login ok mfa=skip06:58 127.0.0.1 backup latest.db overwritten

時刻は夜中で、多要素認証は飛ばされ、朝には控えが上書きされています。守る側は、次の物を見張ります。

見る物なぜ効くか
多要素認証を通らずに入った記録例外の一覧が残っていることが、そのまま分かる
業務時間の外の管理者の操作侵入と偵察は、時間外に繰り返されることがある
控えの削除や、予定外の上書き暗号化の前に、控えが狙われることが多い

記録は、機械の外の、書き換えられない所に集めます。警察庁は、侵入の経路や範囲を調べるために、ネットワーク機器や端末の記録を取っておくよう勧めています。

直し方と、直ったことの確かめ方

自分の PC の中だけで行います。外のサービスや、他人の機械には向けません。

  1. 作業用のフォルダに、利用者 3 人 (うち 1 人は vendor-admin) とパスワードとコードの表を作る
  2. 脆い login に vendor-admin のパスワードだけを渡し、入れてしまうことを確かめる
  3. 本番の代わりのファイルに正しい中身を書いて控えを取り、中身を壊してからもう一度控えを取り、正しい控えが消えることを確かめる
  4. 両方を直したコードに置き換え、同じ手順で、ログインは拒まれ、最初の控えは残ることを確かめる
  5. 下の試験を足し、直す前のコードに戻すと試験が落ちることも確かめる
  6. 終わったら、作業用のフォルダごと消す
Python例外と上書きが戻らないよう固める試験
def test_no_login_without_code():for user, pw in PASSWORDS.items():assert not login(user, pw) def test_good_backup_survives(lab):db = lab / "prod.db"db.write_text("good")backup(db, lab / "bk", "t1")db.write_text("broken")backup(db, lab / "bk", "t2")t1 = lab / "bk" / "t1.db"assert t1.read_text() == "good"

1 つ目の試験は、利用者の表の全員について、コードなしでは入れないことを確かめます。誰かを例外の一覧に足すと、ここで落ちます。

初動を時系列で残す

本番の対応では、何をいつ、なぜ決めたかを、その場で 1 行ずつ残します。あとから組み立て直すと、判断の理由が抜け落ちます。

記録初動の記録の例
09:02 受注が開かないと連絡、記録係を決める09:10 暗号化を確認、対応の体制を立ち上げる09:15 影響のある区画をスイッチで切り離す09:20 控えのサーバーを切り離し、上書きを止める09:35 連絡は電話に切り替え、窓口を 1 つにする09:50 遠隔接続の入口を一時止め、記録を保全

関わる事例

遠隔接続の入口が分かれ目になった例が並びます。アスクルでは、例外的に多要素認証を適用していなかった業務委託先向けの管理者アカウントの ID とパスワードが漏れ、不正に使われました。Change Healthcare では、2024年2月12日に、盗まれた認証情報で遠隔接続のポータルに入られ、横への広がりとデータの持ち出しを許したうえ、9 日後にランサムウェアを実行されました。Colonial Pipeline では、使われていないはずの古い VPN のプロファイルが悪用されました。

名古屋港統一ターミナルシステムでは、国土交通省の検討委員会のまとめによると、保守用の VPN に IP アドレスの制限がなく、ID とパスワードが合えばインターネット上の誰からでも接続できる状態でした。大阪急性期・総合医療センターでは、給食の委託事業者の側から入られました。病院の中では全ユーザーに管理者権限を与え、Windows のパスワードもサーバーと端末ですべて共通でした。アサヒグループでは、外部の攻撃者がグループ内の拠点のネットワーク機器を経由して侵入し、主に業務時間外に侵入と偵察を繰り返したとみられています。KADOKAWA では、フィッシングなどで盗まれたと推測される従業員のアカウントで、社内ネットワークに入られました。

控えが分かれ目になった例もあります。アスクルでは控えがランサムウェアを想定した環境になく、一部が一緒に暗号化されました。名古屋港では控えが直近 3 日分のみで、その中からもウイルスが見つかりました。止め方の判断の例として、Colonial Pipeline は IT の網で身代金を求める文が見つかったあと、マルウェアが設備を動かす側の網へ広がらないよう、パイプライン全体を止めています。

IPA の「情報セキュリティ10大脅威 2026」でも、組織の 1 位は「ランサム攻撃による被害」で、11年連続の選出です。

確認クイズ

1 問目

いくつものサーバーで暗号化が見つかりました。ネットワークから切り離す方法はあります。最初の手として合うのはどれですか。

  • ア すべての機械の電源をすぐに切る
  • イ 影響のある機械や区画をネットワークから切り離し、残った控えを守る
  • ウ 攻撃者の連絡先に問い合わせ、何が取られたかを聞く
答えと理由を見る

答え イ

切り離せるなら、電源は切りません。電源を切るとメモリの中の証拠が失われます。JPCERT/CC は、暗号化で被害に気づいた時は、さらなる被害を防ぐために控えの保護を優先するとしています。攻撃者との交渉は勧められていません。

2 問目

委託先の保守のために、1 つのアカウントだけ多要素認証の例外にしています。何を見直しますか。

  • ア 例外のアカウントのパスワードを長くすれば、例外のままでよい
  • イ 例外をなくし、委託先にも多要素認証を通してもらい、接続元も絞る
  • ウ 例外のアカウントの名前を推測しにくい物に替える
答えと理由を見る

答え イ

例外のアカウントは、パスワードが漏れた時点でそのまま入口になります。名前を替えても、パスワードを長くしても、漏れた時には効きません。例外をなくし、委託先との接続を台帳で管理します。

説明課題

次のことを、自分の言葉で 3 行にまとめてください。書けたら、このレッスンは修了です。

  • 朝、サーバーで暗号化が見つかった場面で、最初の 1 時間の判断を時刻つきで 3 つ挙げ、それぞれの理由
模範解答を見る

09:10 対応の体制と記録係を決める。判断と理由をその場で残さないと、あとで組み立て直せないからだ。09:15 影響のある区画をネットワークから切り離し、09:20 控えのサーバーも切り離して上書きを止める。広がりを止め、戻すための正しい控えを守るためで、電源は証拠を残すために切らない。

一次資料

どれも 2026年10月24日に開いて、題と中身を確かめました。

次へ

次のレッスンは「証拠の調べ方の基礎」です (準備中)。消えた物ではなく残った物から、出来事を時系列で組み立て直す方法を扱います。

次のレッスン 4-4 証拠の調べ方の基礎 準備中

このレッスンにつながる物