
はじめに
こんにちは!セキュリティソリューションの西窪です。
普段の業務ではフォレンジック業務を行っています。今回は個人的に注目している、VS Codeの開発トンネル機能を悪用した遠隔操作手法について、どのような痕跡が残るのかを主旨として検証しましたので、その内容についてご紹介します。
検証に際しては、2025年1月8日に警察庁から公開された「VS Codeを悪用した手口及び痕跡・検知策」*1を参考にさせていただきました。
警察庁から公開されている痕跡内容との比較はもちろん、悪用されたことに気付くためにはどのような設定が必要かなどについても記載していますので、ぜひ最後まで読んでください!
VS Codeの開発トンネル機能の悪用事例
警察庁から公開された「MirrorFace によるサイバー攻撃について (注意喚起)」*2によると、今回検証するVS Codeの開発トンネル機能を悪用した手口は、「MirrorFace」(別名、「Earth Kasha」)と呼ばれるサイバー攻撃グループによって、遅くとも2024年6月ごろから使用されているようです。
この攻撃キャンペーンでは、以下に関係する個人や組織が標的にされているそうです。
- 日本の学術
- シンクタンク
- 政府
- 政治家
- マスコミ
悪用された技術
Visual Studio Code(VS Code)とは
Visual Studio Code(以下、VS Code)とは、Microsoft社が提供しているコードエディタです。このエディタの特徴として、豊富な拡張機能が使用できることが挙げられます。使用者は拡張機能を使用することで、自身が使用しやすいようにカスタマイズすることが可能です。
Microsoft dev tunnelsとは
Microsoft dev tunnels(以下、開発トンネル機能)とは、Microsoft社が提供しているトンネリングツールです。VS Codeの拡張機能である「Remote - Tunnels」を使用することで、VS Codeのみでトンネリングを実現することが可能です。
検証概要
はじめに、今回の検証環境についてお話します。
今回は被害者環境として、Windows 10のPCを使用しました。また、被害者PCにはあらかじめVS CodeのCLI版をダウンロードしています。
さらに、今回の検証では被害者PCに「Sysmon」*3の導入、および「スクリプトブロックログ」*4の有効化を行っています。これにより、イベントログにてプロセス開始のログや親子関係、PowerShellで実行された平文のスクリプトが記録されます。それぞれのツールについては以下をご参照ください。
次に、検証内容についてお話します。今回の検証内容については以下の通りに行いました。
① 被害者PC上でVS Codeの開発トンネル機能を起動する
② 上記起動時に生成されるトークンを攻撃者PCに入力し、被害者PCにアクセスする
③ 遠隔操作で複数のコマンドの実行と永続化を行う

検証では「FullEventLogView」および「MFTECmd」というソフトウェアを使用しています。ご興味のある方は以下のリンクからどうぞ!
検証結果(痕跡)
VS Code関係のフォルダ作成
被害者PC上の「%UserProfile%」配下に、フォルダ「.vscode」および「.vscode-server」が作成されている痕跡が確認できました。こちらの痕跡は、警察庁の資料*1「3-1 痕跡・検知策」で記載されている内容と一致しています。

今回の検証では、隠し属性で作成する方法についても調査しました。通常通りにVS Codeを実行すると、これら両フォルダは隠し属性とはなりません。よって、隠し属性は意図的に付与されているものと推察されます。
検証では、事前に他PCにて「.vscode」および「.vscode-server」を作成し、隠し属性を付与したものを被害者PCにコピーすることで、隠し属性のフォルダとなることを確認しています。
調査時には、MFTやUsnJrnlといったアーティファクトから、フォルダの作成日時や隠し属性の有無などを確認することで、攻撃開始日時の推定等を行うことができると考えられます。
イベントログに残る痕跡
被害者PC上のイベントログ「Security」のイベントID「5379」において、項目「TargetName」に「vscode-cli-0.vscode-cli」が記録されている痕跡が確認できました。こちらの痕跡は、警察庁の資料*1「3-2 痕跡・検知策」で記載されている内容と一致しています。
検証では、初回の「code.exe tunnel -accept-server-license-terms」および永続化コマンド「code.exe tunnel service install」の実行時にイベントが生成されることが分かりました。ただし、これ以外をトリガーとしてイベントが生成される可能性もあります。

また、イベントログ「Microsoft-Windows-Powershell/Operational」のイベントID「4104」として、PowerShellのスクリプトが記録されていることを確認しました。ただし、このイベントログについてはグループポリシー、もしくはレジストリの設定から有効化する必要があります。

調査時には、各イベントが記録された日時などから、攻撃者が実際に侵入・操作していた期間を推定する材料として使用できます。また、実行されたスクリプトから被害内容を推定することも可能です。
コントロールパネルから確認できる痕跡
コントロールパネル「ユーザーアカウント > 資格情報マネージャー > Windows資格情報」の汎用資格情報において、「インターネットまたはネットワークのアドレス:vscode-cli-0.vscode-cli」および「ユーザー名:vscode-cli-0」が記録されていることが確認できました。こちらの痕跡は、警察庁の資料*1「3-3 痕跡・検知策」で記載されている内容と一致しています。

こちらの痕跡については直接被害PCのコントロールパネルから確認を行う必要がありますので、代わりとして、「イベントログに残る痕跡」でご紹介したイベントID「5379」などで確認するのが良いと考えます。
VS Code関係のプロセスの痕跡
Windowsデフォルト設定の場合、被害者PC上でVS Code関係のプロセスの痕跡については確認できませんでした。ただし、Microsoft社が提供しているツール「Sysmon」を導入した状態であれば、警察庁の資料*1「3-4 痕跡・検知策」にて記載の通り、「node.exe」の子プロセスとして「powershell.exe」が生成されていることが確認できました。
さらに、今回の検証では「code.exe」および「cmd.exe」の子プロセスとして「wsl.exe」が生成されることも確認しました。
調査時には、プロセスの情報は非常に有益です。怪しい操作が攻撃者によって行われたのか、プロセスツリーを見ることで判断できる可能性があります。
下図は今回の検証で記録されたSysmonログからプロセスツリーを構成した例です。なお、一部のプロセスは省略しています。

通信の痕跡
被害者PC上の「%UserProfile%.vscode\cli\tunnel\tunnel-service.log」に、警察庁の資料*1「3-5 痕跡・検知策」で記載されている通信先ドメインと一致するURLが記録されていることが確認できました。ただし、資料に記載のすべてのドメインは記録されておらず、また、URLが一切記録されていないパターンもありました。

調査時には、「.vscode」、「.vscode-server」配下のログファイルを調べることで、通信先情報を得られる場合があります。また、攻撃者との接続が開始された日時等についても記録されている可能性もあります。これらの情報から、攻撃者が実際に侵入・操作していた期間を推定することができる場合があります。
おわりに
今回はVS Codeの開発トンネル機能の悪用について、その検証結果をご紹介しました。検証を通して、エンドポイントのみで調査を行う際には「Sysmon」を導入し、「スクリプトブロックログ」を有効にしておくことで、調査に有効なログが出力されるということが分かりました。また、エンドポイントだけでなく、ネットワーク関連の通信ログも併せて確認することの重要性も再確認できました。
この悪用手口の難易度がそれほど高くなく、内部不正にも十分使用される可能性があると個人的には考えています。万が一の場合に備え、この2つの設定を行っておく価値は十分にあると思います。
この記事が読んでくださった皆様の手助けや学びの一助となれば幸いです。
*1:https://www.npa.go.jp/bureau/cyber/pdf/20250108_vscode.pdf
*2:https://www.npa.go.jp/bureau/cyber/pdf/20250108_caution.pdf
*3:プロセスの生成や終了、ファイルの作成やレジストリ操作など、あらゆるシステムの活動を監視し、イベントログに記録することが可能なツール
*4:PowerShellにおけるコマンドやスクリプトなどの処理を記録したログ