
A Simple Ransomware Vaccine

シンプルなランサムウェア対策
ランサムウェアが vssadmin を使ってすべてのシャドウコピーを削除するのをよく見かけます。その要求をインターセプトして、呼び出したプロセスを強制終了できたらどうでしょうか?シンプルなワクチンを作ってみましょう。

私たちは、コンパイル済みの raccine.exe を vssadmin.exe(および wmic.exe)用のデバッガとして登録します。Raccine は、まず親プロセスの PID をすべて収集し、その後すべての親プロセスを強制終了しようとするバイナリです。
長所:
vssadmin.exe や wmic.exe)を置き換える必要がありません。置き換えると整合性の問題が生じたり、パッチ適用のたびに Raccine 化(raccination)が壊れたりする可能性があります短所 / 盲点:
vssadmin.exe delete shadows(または他のブラックリスト対象の組み合わせ)の正当な使用ができなくなりますvssadmin.exe delete shadows を呼び出そうとしたプロセスも強制終了してしまいますvssadmin.exe を呼び出したプロセスツリー内に存在しない方法(例: schtasks 経由)は検知できませんvssadmin.exe(および wmic.exe)の呼び出しがインターセプトされ、デバッガとして raccine.exe に渡されます(vssadmin.exe delete shadows は raccine.exe vssadmin.exe delete shadows になります)悪意のある組み合わせ:
delete と shadows(vssadmin、diskshadow)resize と shadowstorage(vssadmin)delete と shadowstorage(vssadmin)delete と shadowcopy(wmic)delete と catalog と -quiet(wbadmin)win32_shadowcopy またはエンコードされたコマンドのリストの要素(powershell)recoveryenabled(bcedit)ignoreallfailures(bcedit)^ 古いリスト: 対応する YARA ルール を確認してください
Powershell のエンコードされたコマンドのリスト: JAB、SQBFAF、SQBuAH、SUVYI、cwBhA、aWV4I、aQBlAHgA など多数
Raccine なしの Emotet - リンク

Raccine ありの Emotet - リンク(Raccine のインストールに関連するプロセス活動は無視してください)

感染は初期段階で阻止されます。
使用は自己責任で!
Raccine 化されたマシンでは、アンインストールパッチ raccine-reg-patch-uninstall.reg を適用するまで、ブラックリストに登録されたコマンドを使用するコマンドを実行できなくなります。これにより、動作中にその特定のコマンドを実行するさまざまなバックアップソリューションが壊れる可能性があります。その要求をブロックするだけでなく、バックアップソリューションとそれを呼び出したプロセスを含むツリー内のすべてのプロセスを強制終了します。
すべてのプロセス実行を記録する堅牢なセキュリティ監視を導入している場合は、ログを確認して、vssadmin.exe delete shadows、vssadmin.exe resize shadowstorage ...、またはその他のブロック対象のコマンドラインが正当な目的で頻繁にあるいは散発的に使用されているかどうかを確認してください。その場合は Raccine の使用を控えるべきです。
delete と shadows を含む vssadmin.exe の実行のみをブロックし、それ以外の場合はすべてのパラメータを元のパラメータで vssadmin を呼び出す新しいプロセスに渡すバージョンexplorer.exe を削除delete shadowcopy を呼び出す wmic メソッドをサポート、ホワイトリストに登録されたプロセス起動時の出力なし(wmic の出力処理に関する問題を回避)delete shadowstorage の追加チェック、@_hillu によるコードレビュー、アプリアイコンbcdedit.exe /set {default} bootstatuspolicy ignoreallfailures と bcdedit.exe /set {default} recoveryenabled no の追加チェックpowershell.exe と win32_shadowcopy、またはエンコードされたコマンドのリストの追加チェックVisual C++ 再頒布可能パッケージと .NET Framework はどちらも、install-raccine.bat を実行すると自動的にインストールされます。
Raccine.zip をダウンロードraccine-installer.bat を実行
バッチインストーラには「アンインストール」オプションが含まれています。
管理者として次の操作を行います:
raccine-reg-patch-uninstall.reg を実行%ProgramFiles%\Raccine フォルダと %ProgramData%\Raccine フォルダを削除reg delete HKCU\Software\Raccine /F を実行taskkill /F /IM RaccineSettings.exe を実行reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "Raccine Tray" /F を実行schtasks /DELETE /TN "Raccine Rules Updater" /F を実行アップグレードにはアンインストールと再インストールをお勧めします。アンインストールすると、構成を含むすべてのレジストリキーが削除されます。
Raccine はバージョン 1.2 以降、統合されたシグネチャアップデータを備えています。このプログラム RaccineRulesSync.exe は、予約タスクによって 1 日 1 回実行されるように構成されています。トレイアイコンメニューのオプションを使用して、シグネチャ更新を手動で実行することもできます。
バージョン 1.0 以降、Raccine はプロセスのコマンドラインや親プロセスが悪意があるかどうかを判断するために YARA ルールも使用します。Raccine は 2 つの異なる目的のために 2 セットのルールを使用します。
./yara - すべてのパラメータを含むコマンドラインに適用されるルール。例: WMIC.exe delete justatest./yara/in-memory - インターセプトされたプロセスの親プロセスのプロセスメモリに適用されるルール。例: インターセプトされたプロセス vssadmin.exe を実行している ransomware.exeバージョン 1.1 以降、プロセスとその親の属性を考慮した、より複雑で賢い YARA ルールを可能にするために、外部変数のリストを YARA マッチングプロセスに渡しています。
マッチングプロセスはコマンドラインでは次のようになります:
"C:\Program Files\Raccine\yara64.exe" -d FromRaccine="true" -d Name="WMIC.exe" -d ExecutablePath="C:\Windows\System32\wbem\WMIC.exe" -d CommandLine="WMIC.exe delete justatest" -d Priority=32 -d FromRaccine="true" -d ParentName="cmd.exe" -d ParentExecutablePath="C:\Windows\System32\cmd.exe" -d ParentCommandLine="'C:\WINDOWS\system32\cmd.exe' " -d ParentPriority=32 C:\ProgramData\Raccine\yarayara\mal_emotet.yar C:\ProgramData\Raccine\yara\Rac1C6A.tmp
次のリストは、条件内で外部変数を使用する YARA ルールの例を示しています。
rule env_vars_test {
condition:
Name contains "WMIC.exe"
and CommandLine contains "delete justatest"
and ParentPriority >= 8
and (
ParentCommandLine contains "cmd"
or ParentCommandLine contains "powershell"
)
}
GPO フォルダには Raccine.ADMX と Raccine.ADML が含まれています。展開時には Raccine.ADMX ファイルを C:\Windows\PolicyDefinitions に配置します。付属の Raccine.ADML ファイルは C:\Windows\PolicyDefinitions\en-US に配置します。
使用するには: GPEDIT.MSC を開き、[コンピューターの構成] > [管理用テンプレート] > [システム] > [Raccine] の順に選択します。
変更を構成した後、gpupdate.exe を実行して GPO を反映させる必要がある場合があります。
すべてのインターセプトと実行されたアクションを含むログファイルが C:\ProgramData\Raccine\Raccine_log.txt に書き込まれます。

ブロックイベントのたびに Application イベントログにエントリが生成されます。

Raccine が生成する ID
バージョン 0.10.0 以降、Raccine は「シミュレーションモード」でインストールできます。このモードでは、すべてのトリガーが有効になり、すべてのアクションが記録されますが、何も強制終了しません。このモードは、Raccine が他のソフトウェアと干渉するかどうかを確認するために、バックアップソリューションやその他の正当なソフトウェアが適切な期間動作する環境で使用する必要があります。考え方としては、Raccine をシミュレーションモードでインストールし、1 週間または 1 か月間ログを記録してから、ログを確認して組織内で使用されている正当なソフトウェアをブロックしていたかどうかを確認します。

raccine.exe を実行して、親プロセスツリーが終了する様子を確認してください(v0.1 のスクリーンショット)

バージョン 1 以降で利用可能かつ必須です。



現在対応中のランサムウェアが特定のプロセス名(例: taskdl.exe)を使用している場合、.reg パッチを変更してその名前への呼び出しをインターセプトし、Raccine に呼び出し元のプロセスツリーのすべての親プロセスを強制終了させることができます。
Raccine を拡張したいのですが、特に Windows プラットフォームでの C++ のコーディングスキルが不足しています。
インストールに何か問題が発生した場合(例: 突然のエラーメッセージ、サービスの破損、プログラムが起動しなくなるなど)、reg-patches サブフォルダ内の raccine-reg-patch-uninstall.reg ファイルを実行してください。これですべてが通常の状態に戻るはずです。
その後、install-raccine.bat を使用して完全なアンインストールを実行することもできるはずです。
正しい発音は「Rax-Een」です。
C:\ProgramData\Raccine_log.txt を作成diskshadow.exe delete shadows コマンドを含む| Variable | Description | Example Value |
|---|
| FromRaccine | true | |
| Name | イメージファイル名 | WMIC.exe |
| ExecutablePath | バイナリへの完全なパス | C:\Windows\System32\wbem\WMIC.exe |
| CommandLine | パラメータを含む完全なコマンドライン | WMIC.exe delete justatest |
| Priority | プロセス優先度 | 32 |
| ParentName | 親イメージファイル名 | cmd.exe |
| ParentExecutablePath | 親実行ファイルへの完全なパス | C:\Windows\System32\cmd.exe |
| ParentCommandLine | パラメータを含む親の完全なコマンドライン | C:\WINDOWS\system32\cmd.exe |
| ParentPriority | 親プロセスの優先度 | 32 |