正規ソフトのフォルダーにある「署名のない実行ファイル」を探す(Partisan-Zmiy 事例)
攻撃者は使われなくなった正規ソフトのフォルダーにマルウェアを置き、約 2 年潜伏した。正規ソフトのフォルダー内でも、実行ファイルと DLL の署名を確かめれば早く見つけられた。
何が起きたか
- 攻撃グループ「Partisan-Zmiy」が医療機関に約 2 年潜伏した。使われなくなった VMware Tools のフォルダーを設置先にした。
- Windows サービス「VMware Auth Adapter」を装ってローダーを起動し、正規の
vmtools.dllを署名のない DLL に差し替えていた。同じフォルダーの他の不正な実行ファイルにも署名がなかった。 - 過去のログには、セキュリティー製品の検知記録が残っていたのに見過ごされていた。
- 通信は Telegram のグループチャット、DNS トンネル、プロキシツールを併用し、1 つの経路を失っても接続を維持していた。
点検の手順
- 正規ソフトのフォルダー内の署名を確認する。 PowerShell の例:
Get-ChildItem 'C:\Program Files\VMware' -Recurse -Include *.exe,*.dll | Get-AuthenticodeSignature | Where-Object Status -ne 'Valid'
Sysinternals のsigcheck -u -e -s <フォルダー>でも署名のないファイルを洗い出せる。 - 使っていないソフトを消す。 仮想化ツールや古いエージェントなど、もう使わないソフトのフォルダーとサービスは残さない。
- サービスの実行ファイルを確認する。 正規ソフトの名前のサービスでも、指す実行ファイルのパスと署名を見る。
- 過去の検知記録を見直す。 一度検知されて終わったアラートが、同じフォルダーで繰り返し出ていないか確認する。
注意点
- 正規ソフトでも一部のファイルに署名がない場合がある。同じ版の正規インストーラーのファイル構成と比べると判断しやすい。
- 関連: Linux サーバーの居座りを点検する(PHP の auto_prepend_file と .bashrc の偽 sudo、CL-UNK-1211 事例)