SteamワークショップMODのサプライチェーン攻撃・不正検知マトリクス
SteamワークショップはGarry's ModやProject Zomboidなど多くのサンドボックスゲームで利用されています。攻撃者は長期間更新のない人気MODを買い取るか、作者のアカウントを乗っ取って悪意あるアップデート(サプライチェーン攻撃)を配布します。更新されたMODはユーザー端末に自動配信され、難読化されたLuaスクリプトによってDiscordトークンやSteamセッション情報を窃取します。
| 攻撃手法 | 内部実行メカニズム | 標的とされる資産 | 主な検知兆候 |
|---|---|---|---|
| 難読化Luaスクリプト | Base64/XOR暗号化と RunString による動的実行 | Discordトークン、ブラウザ資格情報 | セキュリティソフトがキャッシュを検知 |
| 不正HTTP通信 | http.Fetch / http.Post による外部送信 | セッションCookie、グローバルIP | オフラインプレイ時の不審な外部通信 |
| 不正バイナリ配置 | Luaを経由した外部悪意DLLのドロップ | システム完全掌握、マイニング感染 | Windows DefenderがDLL作成をブロック |
| バックグラウンド自動更新 | 乗っ取られた作者アカウントからの配信 | ユーザー操作なしで即時反映 | 起動時の原因不明なポップアップや強制終了 |
ステップ1: ワークショップキャッシュ内の難読化スクリプト検索
ダウンロードされたMODファイルはSteamライブラリ内の数字フォルダに保存されます:
- 対象ゲームのワークショップフォルダを開きます:
[SteamLibrary]\steamapps\workshop\content\[AppID]\
(例: Garry's ModのAppIDは 4000)。
2. PowerShellを用いて危険な動的実行関数を一括検索します:
Get-ChildItem -Path "[SteamLibrary]\steamapps\workshop\content\4000" -Recurse -Filter "*.lua" | Select-String -Pattern "compilestring", "RunString", "fromhex", "base64"
- 一般的なゲームMODが難読化やBase64暗号化を用いることは稀です。外部URLや不審なエンコード文字列が見つかった場合は危険と判断します。
ステップ2: TCPViewによる不審なC2通信の遮断
MODが裏でセッション情報を外部サーバーに送信していないかを調査します:
- Microsoft公式の
TCPViewを起動します。 - 対象ゲームのプロセス(例:
hl2.exeなど)を監視します。 - ゲームを起動し、シングルプレイ(オフライン)でロードします。
- 単独プレイ中にもかかわらず、不審な外部IPやDiscord Webhook、外部APIへHTTP/HTTPS通信を試みている場合、不正なMODが動作しています。
- 直ちにタスクマネージャーからゲームを強制終了します。
ステップ3: 緊急対応とアカウントの保護
感染MODを実行してしまった場合の安全確保手順:
- Steamワークショップで対象MODの「サブスクライブを解除」し、該当するAppIDフォルダを完全削除します。
- すべての認証済みセッションを破棄します:
- Steam「設定」>「セキュリティ」>「すべてのデバイスの認証を解除」。
- 感染していない別の安全な端末(スマートフォンなど)から直ちにSteamパスワードを変更します。
- Windows Defenderオフラインスキャンを実行します:
Start-MpWDOScan
- Steam APIキー管理ページ(
https://steamcommunity.com/dev/apikey)を確認し、身に覚えのないAPIキーが登録されている場合は即座に「取り消し」を実行します。