top of page

いつも通り


ree

午前三時十七分。データセンター階下の機械室から上がってくる冷気が、戦闘室の蛍光灯を白く冷やしていた。壁一面のダッシュボードには、緑と黄と赤の小さな矩形が並び、どこかのナイトシティの上空から見た信号のように明滅を繰り返している。私は紙コップのコーヒーを置いた。指先がわずかに震えているのは、カフェインのせいにしておいた方が楽だった。

「もう一度、時系列を引き直す。——“いつも通り”に見えるものほど、ひっかけの可能性が高い」

そう言うと、誰も返事をしなかった。白板に走らせたマーカーの線が、夜の空気を切る音だけが響く。私の背中で、アラートのピンがひとつ弾けた。

03:16:41 Storage: 出口帯域 1.8 Gbps(平常時比1200%)
03:16:47 Exchange: 監査ログ転送停止(操作者: 不明)
03:16:55 Backup: Recovery Services Vault の保護状態 変更検知

異常は、一斉に来るときは来る。花火のように派手に、そして一部は無音で。だが、最初の火種はいつだって地味だ。靴の裏に貼り付いた砂粒みたいな、気にも留めない一クリックから始まる。

はじまりの一週間前。月曜の朝、営業の八木からヘルプデスクに連絡が入った。「VPN が落ちて入れない」と彼は言った。よくある話だ、と皆が思った。よくある話だったからこそ、誰もその“よくある”を疑わなかった。

「プッシュ通知、連打されませんでした?」受付の穂村が、手順書に指を置いたまま聞く。「来てた。寝起きで、オフにしようと思って、何回か……」「許可はした?」「……覚えてない。たぶん、した」

彼の声は、疲れた人間のそれだった。夜中にスマホを振動させ続けられれば、人はやがて「はい」を押す。認証は成功する。攻撃者は、彼になりすます。八木は“正規ユーザー”になる。正確に言えば、攻撃者が“八木の皮を着る”。

その二日前、経理の高梨が受け取った請求書は、取引先のドメインから届いていた。見覚えのあるロゴ、見覚えのある言い回し。最後の一文だけが違っていた。「新しいファイル共有リンクを使っています」。クリックすると、ブラウザに本物そっくりの SSO 画面が現れた。逆プロキシを経由した AiTM(Adversary-in-the-Middle)型の釣り餌。そこで高梨は、いつもと同じように自分の資格情報を入れ、いつもと同じように MFA を通した。セッションのクッキーは、盗まれた。ブラウザに保存してあったパスワードの一部は、週末に仕掛けられたインフォスティーラーで抜かれていた。

Entra ID のサインインログは“いつも通り”だった。ユーザーエージェントも、OS も、プロトコルも。IP だけが微妙に違う。住宅用の ASN を経由し、同じ県内の別市に出る。出張先からのアクセスと区別がつかない。地味だ。地味であることが、恐ろしく厄介だ。

「ここから、クラウド側に足がかりができる」私は線を引いた。「“見た目はいつも通り”のサインイン」「AiTM 経由の正当化された多要素」「クッキーの再利用」。「そして——同意だ」

火曜日。管理者の承認リクエストが IT チャネルに一件上がった。件名は「勤怠集計補助ツール」。アイコンは、社内で使っているツールに似せてあった。説明欄には「メールの本文解析は行いません」と書いてある。曖昧な否定は、肯定よりも強い安堵を生む。担当の若い管理者が、昼休みにそれを承認した。彼は、悪意を持っていたわけではない。むしろ善意だった。現場が困っているのを、ひとつでも減らしたかった。

その瞬間、エンタープライズアプリがテナントに根を下ろす。サービスプリンシパルは、社内アプリ風の顔で、裏口からメールとファイルとディレクトリに触れる権限を受け取る。条件付きアクセスのポリシーが“少しだけ”変わる。社外 IP の一部が「例外」に入る。認証方法ポリシーから、古い手段の禁止が外れる。どれも、反対されるほどの大きな変更ではない。だが、それらはゆっくりと電灯を落とす。暗室に目が慣れるまでの数分間が、攻撃者の時間だ。

アプリは静かに吸う。Exchange からは転送ルールのメタデータ、OneDrive と SharePoint からは「共有」フラグの付いたフォルダの一覧、Azure のストレージからは監査ログの出力先。吸い口は細い。だから長く続く。気づかれないまま、腎臓のように寡黙に働く。

同じ頃、オンプレミス側にも触手が伸びる。週末に抜かれた VPN の認証情報が、月曜の夜に試され、火曜の朝に通った。ファイルサーバの共有に入るための権限は、営業用の読取に限られていた。だが、そこから見える管理端末の RDP のピンが甘かった。遠隔管理ツールの旧バージョンが、その端末に残っていた。点と点は、つなげるために存在する。

水曜の昼、AD の特権グループに、新しい名前がひとつ入った。数十人の名前が並ぶ中の、聞き慣れない英字。数時間後、イベントログに空白ができる。監査ポリシーの設定が、わずかに変わる。GPO のバージョンが上がる。やがて、管理者のひとりが自分の権限でできることが、昨日よりも増えていることに気づく。「誰かが、私の背中で私の影をいじっている」。その予感は、たいてい当たっている。

攻撃者は、ドメインコントローラに近づく。DCSync——それ自体は管理作業の一種として説明できる動き——が、夜更けに一度だけ走る。AdminSDHolder の ACL が、“合理的な理由”の範囲で書き換えられる。バックアップオペレーターに、目立たない一名が追加される。証明書テンプレートの設定が、少しだけ緩くなる。変化は小さい。小さく刻めば、運用に紛れる。人間の注意力は、連続した違和感よりも、単発の奇声に反応するようにできている。

そして、雲と地上は一本の糸で繋がっていく。Entra Connect のホストが、メンテナンスの名の下に再起動される。同期アカウントのパスワード更新が行われる。ログには「成功」とだけ記録される。そこに「誰のための成功か」は書かれない。

一週間が過ぎ、金曜の午後三時、経営会議が終わる。CFO の東郷が、数字の重さを肩にかけたまま椅子から立つ。工場は稼働率を持ち直しつつある。受注は悪くない。来季の新製品の設計は順調だ。そんな空気の中で、ひとつのプロセスは音もなく完了していた。

14:59:02 Azure Backup: 保護停止(操作者: ネットワーク境界外の IP)
15:01:17 リソースロック解除(対象: ストレージアカウント ×3)
15:03:26 Defender ポリシー 退避(範囲: サーバ / クライアント)

準備が整った合図は、意図的に派手にはされない。だが、派手なことはその少し後に必ず起きる。トリガーは二つ。ひとつは「大量の持ち出し」。もうひとつは「暗号化」。

最初に気づいたのは、カスタマーサポートの新人だった。「SharePoint のファイルが、開かないんです」。それはクラウド上で鍵を失った音だった。ほぼ同時に、ネットワーク監視のグラフが跳ね上がる。外向きの帯域が、見たことのない角度で立ち上がる。Azure Storage からのエグレスは、刹那に天井を突き抜ける。OneDrive の削除通知が、転がる石のように連なって飛び込んでくる。

「リークサイトに載せるぞ、というメールが来ています」広報の机に、脅迫が届く。送信者は名乗らない。だが、彼らは私たちのファイル名を知っていた。製品設計の CAD、原価の内訳、従業員の名簿、取引先との契約書。脅しは二段構えだ。鍵が欲しければ払え。支払っても、公開は止めるとは言っていない。

暗号化の波は、現場に肉体的な痛みをもたらす。製造実行システムが止まる。出荷予定が見えない。会計の伝票が切れない。出荷が止まれば売上は止まる。売上が止まれば、会社は呼吸を忘れる。工場の鳴り物はまだ回っているのに、仕事が音を立てて崩れていく。CFO の東郷は、両手を机に置き、指の節を白くする。

「鍵を戻せば終わる話じゃない。——分かっているな」社長の声が、戦闘室に飛ぶ。「分かっています」私は言った。「証跡の保全、原因の特定、再設計、端末の更改。長期戦になります」

長期戦の序盤にやるべきことは、いつだって同じだ。けれど、同じことを同じ速度でやりきる胆力が、機関車の火床みたいに必要だ。

「トークン、全部殺す」私は言った。「セッションを強制的に失効させる。全ユーザーのサインインを踏み直させる」「怪しいエンタープライズアプリ、すべて無効化」「条件付きアクセス、緊急プロファイルに切り替え」「診断設定と監査の保持、最長に延長」「バックアップ、削除防止の再設定」「オンプレは、ドメインコントローラに物理的なガードを付ける。ログのイメージングを開始。AdminSDHolder と特権グループの差分を洗う」「クラウドは、アクティビティログで“地味な変更”を拾い直す。誰が、いつ、どこから、何を、少しだけ動かしたか」

私たちは一斉に動きだした。深夜の会社は、別の臓器で動く。昼間に指揮をするのは上層だが、夜を回すのは手だ。ヘルプデスク、運用、ネットワーク、サーバ、アプリ、セキュリティ、広報、法務。関係者をひと部屋に閉じ込め、窓を閉め切って、火を絶やさない。

調査は、まず“静けさ”の痕跡から始める。派手なアラートではなく、静かな変化が連鎖していないかを、時系列で串刺しにする。Entra では、管理者サインインの国家と ASN を洗い出す。見慣れない「いつも通り」。同じ端末指紋、同じプロトコル。だが、画素の一色が違う。条件付きアクセスのポリシー変化は、差分が命だ。例外の追加、制御の緩和、既存ポリシーの停止と再作成。エンタープライズアプリは、作成日の新しいものから見ていく。マルチテナント、そして「見覚えのある社内アイコン」。付与された権限が、微妙に線を越えている。「閲覧だけ」のはずが「読み出し・書き込み・送信」にまで手が伸びている。診断設定と監査保持の短縮は、長く強く残すべき痕跡を奪う動きだ。そこに手が入っていないか。

オンプレの AD では、イベントログの欠落を、逆に情報として使う。空白は、消された事実の輪郭だ。監査ポリシーの変更は、いつ、誰が、どの OU に影響を与えたか。特権グループに追加された“英字名”は誰の手か。GPO の改変は、“説明文に書かれた理由”と“実際に変わった設定”の齟齬を確認する。AdminSDHolder の変更は、永続化の意志だ。証明書テンプレートの緩和は、認証基盤への穴だ。そこを疑う。Azure 側では、バックアップ停止、リソースロック解除、ロール割当の急増、ストレージの異常なエグレス。アクティビティログと診断ログの相互参照で、枝と根を見分ける。

「ここだ」仁が画面を指さした。若いが、ログを見る目は良い。「勤怠集計の名で入ったアプリ。初回同意は昼休みの 12:08。そこから 14:32 に SharePoint のサイト列挙、16:45 に Exchange のスレッドヘッダの吸い上げ。夜の 22:10 に Azure Storage の構成確認。——“普通の運用者”の動きに見えるけど、繋げると一本になる」

「ASN を並べ替えて」私は言う。「住宅用のブロックから、企業用へ、また住宅用へ。AiTM のノード経由で MFA を通して、クッキーを載せ替え、セッションを延命。——“いつも通り”のサインインのうしろに、別の街がある」

白板の線は、汗でにじんでいく。私はペンを置き、水を飲んだ。喉が焼ける。焼けるのは、怒りでも悔しさでもない。たぶん、それらの混合物だ。

法務の部屋は、別の戦いだった。外部弁護士が入る。保険会社が入る。監督官庁への報告書の下書きが机に積もる。通知の送付先は、従業員、顧客、取引先。再発防止計画の骨子を、現場の汗と紙の上の言葉でつなぐ。リークサイトには、うちのファイル名が並ぶ。ブランドのロゴが、見知らぬ掲示板のサムネイルに化ける。広報は眠らない。SNS の監視窓を広げ、誤情報の芽を摘み、正しい言葉を差し込む。信用は、一度剥がれると、糊が乾くまで時間がかかる。乾かすための風は、説明責任と、実際の改善の両方だ。

現場の復旧は、段取りと根性だ。暗号化を解くことがゴールではない。感染端末の洗い出し、横展開の経路の遮断、端末の更改、イメージの焼き直し、パッチの適用。アプリケーションの再設計、不要な権限の削除、ゼロトラストの線引き。バックアップは、ただあるだけでは足りない。「壊されにくさ」を設計し直す。削除防止、論理的隔離、復元テストの定期化。ログは、取っているだけでは意味がない。保全、改ざん耐性、相関、可視化。言葉にすると平板だが、現場では汗と不眠と責任とでできている。

夜、工場の外に出ると潮の匂いがした。空は低く、煙突の影が街灯に縁取られている。私はスマホを取り出し、画面に映る自分の顔を見た。青白く、眠たく、少し怖い顔をしている。ふっと、笑ってしまう。こんな顔でフォトに写ったら、後で自分で笑うだろう。

「——“いつも通り”って、なんてやっかいな言葉だろう」

三週間後、最初の総括会議。壁には、事件の全景が貼られている。紐でつないだ写真のように、ログの断片がつながっている。そこに“犯人の顔”はない。ただ、手と指の癖がある。人間のやることだ。どんなに機械で覆っても、人の癖は残る。

私は、最後に三つだけ言った。

「ひとつ。特権、ポリシー、アプリの同意、診断の“微小な変化”を逃さない。大きなアラートの前に、必ず小さな変化がある。時間軸で見る。相関させる。人の直感に頼るのではなく、直感が働く余地を守る」

「ふたつ。バックアップとログの“壊されにくさ”を、設計で担保する。削除防止、隔離、保持、検証。備えていなかったものは、いざというときには存在しない。存在しないものは、復旧を遅らせる」

「みっつ。被害が表面化したら、トークンの失効、権限の棚卸し、不審アプリの無効化、バックアップ防御の強化を“同時に”走らせる。順番待ちの正しさよりも、併走の速さが命を救う場面がある」

沈黙。東郷が、ゆっくりとうなずいた。彼は経理の人間だ。数字の動く音に敏感だ。数字の裏に隠れた人間の動きにも敏感だ。彼は、紙にメモを取る癖がある。今日も、罫線の左端に小さく書かれた文字が見えた。「微小」。それだけ。だが、その一語は、私たちの敗因であり、これからの武器でもある。

事件が終わったわけではない。リークサイトに残る文字列は、数ヶ月は消えないだろう。検索エンジンのキャッシュは、こちらの都合で消えない。社内の PC の一部は、まだ新しい匂いのプラスチックだ。古い端末は、倉庫で分解を待っている。人の心には、疲労が沈殿している。だが、その上に薄く、透明な膜のように、再発防止のための習慣が張られはじめている。

朝、八木が私のところに来た。少し痩せた。目の下の影が消え、代わりに淡い青が残っている。「この前はすみませんでした」と彼は言った。

「すまなくない」私は答える。「そういうふうに、作られていた。君が眠かったのも、相手の計算のうちだ。次は、眠くても押さないようにしよう。押せないように、こっちでも変える」

彼は笑って、頷いた。「スマホ、夜は別の部屋で充電することにしました」「いい習慣だ」私は言った。「いい習慣は、いい設計と同じくらい強い」

私の机には、新しい手順書の草稿が積んである。KQL や PowerShell の検出セットのドラフトには、細かい条件がびっしりと書き込まれている。だが、手順書の最初のページには、コードではなく、太い文字が必要だ。

“いつも通り”を疑う。“少しだけ”を拾う。一度に、同時に、やり切る。

それは小説的な言い回しに見えるかもしれない。だが、現場では、それが最短路になる。

夜、帰りの電車の窓に映る自分の顔は、朝のそれより幾分か柔らかかった。街の灯りが流れる。人は、流れる光を見ると安心する。正常の証明。だが、私はもう知っている。“正常”は、つねに両義的だ。私たちが守りたい「いつも通り」と、あの夜に侵入者がまとった「いつも通り」。同じ言葉で、まったく別の顔。

次のアラートは、きっとまた地味に始まる。靴の裏の砂粒。袖口にかすかにつく油の匂い。見慣れない ASN の断片。勤怠ツールのアイコンの角の丸み。私たちは、その微小を、これからは見逃さない。

そして、私はコーヒーを淹れるだろう。今度は手の震えを、ただのカフェインのせいにはしない。震えの理由を、ひとつずつ、潰していくために。

——“いつも通り”の朝を、こちらの定義で取り戻すために。

 
 
 

最新記事

すべて表示
③Azure OpenAI を用いた社内 Copilot 導入事例

1. 企業・プロジェクトの前提 1-1. 想定する企業像 業種:日系グローバル製造業(B2B・技術文書多め) 従業員:2〜3万人規模(うち EU 在籍 3〜4千人) クラウド基盤: Azure / M365 は既に全社標準 Entra ID による ID 統合済み 課題: 英文メール・技術資料・仕様書が多く、 ナレッジ検索と文書作成負荷が高い EU の GDPR / AI Act、NIS2 も意識

 
 
 
②OT/IT 統合を進める欧州拠点での NIS2 対応事例

1. 企業・拠点の前提 1-1. 想定する企業像 業種:日系製造業(産業機械・部品メーカー) 拠点: 本社(日本):開発・生産計画・グローバル IT / セキュリティ 欧州製造拠点:ドイツに大型工場(組立+一部加工)、他に小規模工場が 2〜3 箇所 EU 売上:グループ全体売上の 30〜40% 程度 1-2. OT / IT の現状 OT 側 工場ごとにバラバラに導入された PLC、SCADA、D

 
 
 
① EU 子会社を持つ日系製造業の M365 再設計事例

1. 企業・システムの前提 1-1. 企業プロファイル(想定) 業種:日系製造業(グローバルで工場・販売拠点を持つ) 売上:連結 5,000〜8,000 億円規模 組織: 本社(日本):グローバル IT / セキュリティ / 法務 / DX 推進 欧州統括会社(ドイツ):販売・サービス・一部開発 EU 内に複数の販売子会社(フランス、イタリア等) 1-2. M365 / Azure 利用状況(Be

 
 
 

コメント


bottom of page