
CVE-2023-30367 のオリジナル PoC
Multi-Remote Next Generation Connection Manager(mRemoteNG)は、ユーザーがシステムにリモート接続するためのマルチプロトコル接続設定を保存・管理できるフリーソフトウェアです。
mRemoteNGの設定ファイルは、ディスク上で暗号化された状態で保存することができます。mRemoteNG バージョン <= v1.76.20 および <= 1.77.3-dev は、アプリケーション起動時に(必要に応じて復号化した後)設定ファイルを平文でメモリに読み込みます。これは、まだ接続が確立されていない場合でも同様です。これにより、攻撃者はメモリダンプを介して設定ファイルの内容を平文で取得し、カスタムパスワード暗号化キーが設定されていない場合、ユーザーの認証情報を侵害することができます。また、既に復号化された設定をメモリからダンプすることで、接続設定ファイルの暗号化設定をバイパスします。
この脆弱性には CVE-2023-30367 が割り当てられました。
Windows 11(ドイツ語版)上の mRemoteNG 1.77.3.1784-NB および mRemoteNG 1.76.20 でテスト済みです。
この発見は、mRemoteNGの開発者の一人であるDimitrij Gorodeckij氏によりこちらで確認されました。修正はまだ開発中です。Dimitrij Gorodeckij氏の迅速な対応と協力に改めて感謝します! 近いうちに修正されることを願っています!
1. 強力な(長い)設定パスワード暗号化パスワード/キーを使用する:
メモリダンプが発生した場合、攻撃者は設定ファイルに平文でアクセスできますが、パスワード暗号化キーを総当たり(ブルートフォース)する必要があります。
残念ながら、接続ファイル暗号化オプションを有効にしてもこの攻撃を防ぐことはできません。mRemoteNGの接続設定ファイルは実行時に復号化されるためです。
2. 修正がリリースされたら、v1.77.3.1784-NB より新しいバージョンの mRemoteNG にアップデートする。
3. mRemoteNGDumper.exe などの悪意のある実行を防ぐために、アプリケーションのホワイトリスト化を実施するべきです。
設定パスワード暗号化と接続ファイル暗号化は異なる設定であることに注意してください。設定パスワード暗号化は設定ファイル内のパスワードのみを暗号化するために使用され、接続ファイル暗号化は設定ファイル全体を暗号化するために使用されます。
このエクスプロイトは、既に復号化された設定をメモリからダンプすることで、接続ファイル暗号化をバイパスします。これらの設定には、デフォルトキー mR3m で復号化できる暗号化されたパスワードが含まれています。カスタム設定パスワード暗号化キー/パスワードが設定されている場合、攻撃者はそのカスタムキーを推測する必要があります。(mremoteng-decrypt.py セクションを参照)
git clone https://github.com/S1lkys/CVE-2023-30367-mRemoteNG-password-dumper.git または GitHub からダウンロードmRemoteNG-password-dumper に入るWindows で手動テストを行う最も簡単な方法は、Windows タスクマネージャを使用して mRemoteNG プロセスを右クリックし、「ダンプファイルの作成」を選択してプロセスダンプを作成することです。 ダンプは VisualStudio Code で開くことができます。その後、設定した接続値を検索します。
<Node Name=" を検索します。これは mRemoteNG の接続設定ファイルの開始を示します。mRemoteNG Password Dumper は、mRemoteNG のメモリから設定ファイルをダンプするためのシンプルな Proof of Concept ツールです。ターゲットシステムでのコード実行は不要で、メモリダンプのみが必要です。 これは簡単な POC であるため、おそらく非常に信頼性や堅牢性は高くありません。問題を見つけて修正した場合は、プルリクエストを作成してください。
設定ファイルは現在、次のようにハードコードされています: (\<Node)(.*)(?=\/>)\/>
mremoteng_decrypt.py を使用して復号化/ブルートフォースします(mremoteng-decrypt.py セクションを参照)。mremoteng-decrypt にブルートフォース機能を追加しました(謝辞参照)。
これは、カスタム mRemoteNG 設定/パスワード暗号化キーをブルートフォースするために使用できます。カスタムキーが設定されていない場合、スクリプトはデフォルトキー mR3m で設定を復号化します。このスクリプトは、カスタム暗号化パスワードを使用した設定ファイルの復号化にも使用できます。デモも参照してください。

カスタム暗号化パスワード 123 で設定ファイルを復号化: python3 mremoteng_decrypt.py -rf "C:\Users\mbzra\source\repos\mRemoteNG Dumper\dump\extracted_Configfile_mRemoteNG_0_09.07.2023.11.01_confCons.xml" -p 123
カスタム暗号化パスワード 123 でパスワード文字列を復号化: python3 mremoteng_decrypt.py -s "QHrcb7I0KHi6YLFXxv93jenrUmNj5qO30zTM9qXqRUd7ImVm5/ROU7CLQ5u7+7+iOiFrY2BtZSpJ8RrR3jV6LoE=" -p 123
カスタム暗号化パスワードなしでパスワード文字列を復号化: python3 mremoteng_decrypt.py -s "yW0Ypq/cTcwfHwYxIiHgczcsIKU+jWlfnZBcTdKQImsMbBnP3SLv2h75Z7IAbkFOsD2YzBo2wGk2fhDLpRFH2y8="
ブルートフォースの使用法: python3 mremoteng_decrypt.py -s "[抽出された暗号化設定パスワード]" -b y -w [ワードリストへのパス]
ブルートフォースの例: python3 mremoteng_decrypt.py -s "QHrcb7I0KHi6YLFXxv93jenrUmNj5qO30zTM9qXqRUd7ImVm5/ROU7CLQ5u7+7+iOiFrY2BtZSpJ8RrR3jV6LoE=" -b y -w .\wordli.txt
脅威モデルによります。あなたのコンピュータが、あなたのユーザーの権限でバックグラウンドで実行されているマルウェアに既に感染している場合、この発見によって状況が大幅に悪化することはありません。 ただし、KeeTheft や KeeFarce とは異なり、プロセスインジェクションやその他のコード実行が不要であるため、マルウェアがステルス性を保ち、アンチウイルスを回避しやすくなる可能性があります。
誰かがあなたのコンピュータにアクセスしてフォレンジック分析を行う可能性が合理的に疑われる場合、これは悪影響を及ぼす可能性があります。
強力なパスワードを使用した設定ファイル暗号化を使用し、システムがクリーンであれば、問題はないはずです。この発見だけでは、誰もインターネット経由でリモートからパスワードを盗むことはできません。
