Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ets5-password-recovery — ETS5 パスワード回復ツールは CVE-2021-36799 の PoC です | Kitploit
ツール/GitHubGitHub/robertguetzkow/ets5-password-recovery
パスワードクラッキング暗号化/復号化ツール脆弱性分析エクスプロイトリバースエンジニアリング暗号化Archived
GitHubrobertguetzkow/ets5-password-recovery

ets5-password-recovery

ETS5 パスワード回復ツールは CVE-2021-36799 の PoC です

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る
33484年前未レビュー

ETS5 パスワードリカバリツール

目次

  • はじめに
  • インストール
  • 要件
  • パスワードリカバリの仕組み
  • 設計上の欠陥はどのように発見されたか?
  • リスクを軽減するには?
  • 協調的な脆弱性開示
  • ライセンス
  • 変更履歴

はじめに

ETS5プロジェクトのパスワードを忘れてしまい、KNXインストールの設定にアクセスできなくなりましたか? ETS5パスワードリカバリツールを使用すると、ETS5のプロジェクトストアに保存されたプロジェクトパスワードやその他の秘密情報を取得できます。これは、ETS5に重大な設計上の欠陥があり、プロジェクト情報を暗号化するためにハードコードされたパスワードとソルトを使用しているためです (CVE-2021-36799)。

Command prompt

暗号化の秘密をソースコードに保存することは推奨されません。ソフトウェアのリバースエンジニアリングにより取得される可能性があり、情報を平文で保存するのと大差ない保護しか提供しないためです。これはKNXインストールのセキュリティに対する脅威となる可能性があります。攻撃者がプロジェクトストアのファイルにアクセスできた場合、プロジェクトパスワードを知らなくても復号化できます。そこに含まれる情報により、KNXデバイスを盗聴、なりすまし、再設定することが可能になります。これは特に問題です。なぜならETS5は、エクスポートされたプロジェクトだけでなく、プロジェクト情報の暗号化にプロジェクトパスワードが使用されるという印象をユーザーに与えるからです。そのため、多くのユーザーやシステムインテグレーターがプロジェクトストアの機密性を確保するための追加の対策を講じていない可能性が高いです。ETS5が適切に暗号化を実装し、強力なプロジェクトパスワードが選択されていれば、たとえ攻撃者がコンピューターへのリモートアクセスを取得したとしても、より困難な課題を提供できたでしょう。

以下の機密情報が不適切に暗号化されています:

  • プロジェクトパスワード
  • FDSK
  • バックボーンキー
  • デバイス認証コードと派生キー
  • デバイス管理パスワードと派生キー
  • ユーザー/トンネリングパスワードと派生キー
  • ツールキー

ETS5パスワードリカバリツールは、機密情報を復号化して表示することで問題を実証する概念実証です。これは協調的な脆弱性開示の一環として開発され、KNX協会の許可を得て公開されています。このツールを公開する目的は次のとおりです:

  1. セキュリティ問題を公に文書化し、ユーザーがリスクを軽減するための予防措置を取れるようにする。
  2. KNX協会は現在または将来のETSバージョンでこの問題を修正する予定はありません。設計上の欠陥についての認識を高めることで、彼らの考えが変わるかもしれません。(更新については協調的な脆弱性開示セクションを参照)
  3. 設計上の欠陥を開示することで、KNX協会およびこのドキュメントを読むすべての人がより良いソフトウェアエンジニアリングの実践を採用することを期待します。
  4. ETS5パスワードリカバリツールは、誰かが自分のプロジェクトのパスワードを忘れた場合に実際に役立つ可能性があります。

警告: このツールは、プロジェクト情報を表示する法的権限がある場合にのみ使用してください。セキュリティ対策(効果がないものであっても)を回避して、見ることが許可されていない情報にアクセスすることは、あなたの管轄区域では重罪となる可能性があります。

インストール

実行ファイルはリリースセクションからダウンロードできます。インストールは不要で、任意のディレクトリに配置できます。

あるいは、システム上で信頼できないバイナリを実行したくない場合は、CyberChef WebサイトでプロジェクトのXMLファイルから個々の属性を復号化できます。

要件

このソフトウェアは.NET Framework 4.6以降に依存しています。Windows 10にはデフォルトで適切な.NETバージョンが含まれています。それ以前のWindowsバージョンのユーザーは、ソフトウェアを実行するために最新の.NET Frameworkバージョンをインストールする必要があります。

パスワードリカバリの仕組み

ユーザーインターフェースが示唆するのとは反対に、ETS5はC:\ProgramData\KNX\ETS5\ProjectStoreにあるローカルに保存されたプロジェクトファイルをプロジェクトパスワードで暗号化しません。代わりに、ハードコードされたパスワードETS5PasswordとソルトIvan Medvedevを使用して、プロジェクトのXMLファイル内の特定の属性を難読化します。ハードコードされた暗号化の秘密はベストプラクティスに反しており、CWE-798およびCWE-321で説明されています。

難読化解除のプロセスは次のとおりです:

  1. 難読化された属性はBase64エンコードされており、デコードする必要があります(RFC 4648参照)。
  2. Ivan Medvedevのバイト表現をASCIIまたはUTF-8エンコードされた文字列として取得します。
  3. .NET FrameworkのPasswordDeriveBytesによって実装されたキー導出関数を使用します。これはPBKDF1に基づいていますが、キー導出アルゴリズムにカウンターを追加しています。ETS5では、ハッシュ関数としてSHA-1、イテレーション数100、パスワードとしてETS5Password、ソルトとしてIvan Medvedevのバイト表現を使用します。キー導出出力の最初の32バイトをキーとして使用し、続く16バイトをIVとして使用します。
  4. 手順3のキーとIVを使用して、AES-256 CBCモードでデコードされた属性を復号化します。
  5. PKCS#7パディングを削除すると、結果が属性の元の値になります。

難読化解除の実装はDeobfuscator.csファイルにあります。パスワードとソルトは一定であるため、キーとIVを事前計算してキー導出をスキップすることも可能です。このソフトウェアの実装では、難読化解除の全手順を示すことを目的としているため、それは行われていません。ただし、キーとIVが必要な場合は、以下にリストされています。

HexBase64
Key22BD16CDBB96B0E18E977BB3FEFADD8886E7E38A2F8A6FD9D2F2F5663AC20371Ir0WzbuWsOGOl3uz/vrdiIbn44ovim/Z0vL1ZjrCA3E=
IV8E977BB3FEFADD88E6AE6CBEAE3E7CAFjpd7s/763Yjmrmy+rj58rw==

エクスポートされたプロジェクトファイル(.knxproj)はこの設計上の欠陥の影響を受けないため、このツールを使用してそれらのプロジェクトパスワードを復元することはできません。.knxprojファイルはZIPファイルであり、その中に機密情報を含む別のZIPファイルが含まれています。後者はDeflate圧縮、ZipCrypto / PKWARE暗号化、および暗号化キーの導出にプロジェクトパスワードを使用しています。

設計上の欠陥はどのように発見されたか?

私の論文"Security Analysis of the KNXnet/IP Secure Protocol"の準備中に、ETS5がプロジェクト情報をどのように保存するかを調査しました。ETSはKNX IP Secureデバイスが相互認証、マルチキャスト通信の機密性、およびデバイス設定のセキュリティを確保するために使用する暗号化キーとパスワードを生成および保存するため、情報を秘密に保つことが重要です。攻撃者がETSによって保存されたプロジェクト情報にアクセスできた場合、KNXインストールのセキュリティが完全に侵害されます。

このため、ETS5のプロジェクトストアが検査され、データが機密性を確保する方法で保存されているかどうかが確認されました。C:\ProgramData\KNX\ETS5\ProjectStore内のプロジェクトファイルはすべてのユーザーアカウントで読み取り可能であり、管理者権限は必要ありません。データが適切に暗号化されていない疑いを引き起こす以下の指標が見つかりました:

  1. XML設定ファイルは全体として暗号化されていません。デバイス認証コード、デバイス管理パスワード、FDSK、ツールキーなどの機密属性のみが、平文の値を含まないように変更されています。
  2. プロジェクトパスワードの属性がXMLファイルの1つに保存されています。適切な実装では暗号化はプロジェクトパスワードからキーを導出するため、保存は厳密には必要ありませんでした。しかし、仮説的には、他の属性を復号化する前に入力されたパスワードが正しいかどうかを確認するために使用された可能性があります。
  3. 異なるプロジェクトパスワードを持つ2つのプロジェクトで、同一のデバイスがいくつかのデバイス固有の属性(FDSKなど)に対して同じ値を持っていました。

最後の点は、属性値を変更するアルゴリズムにプロジェクトパスワードが使用されていないことを明確に示していました。以下に例を示します。2つのプロジェクトP-02FBとP-0117のデバイス認証コードが同一の値に設定されていました。異なるプロジェクトパスワードが使用されているにもかかわらず、難読化された出力も同じです。ETS5でプロジェクトを開く際にプロジェクトパスワード以外の入力を促すものがないため、キーはどこかに保存されているか、キーを必要としない単純な難読化アルゴリズムである必要がありました。この解決策は機密性を確保するのに理想的ではなく、KNXインストールを危険にさらす可能性が高いと思われました。

設定ファイルは全体として暗号化されていません。```xml

``` #### 異なるプロジェクトパスワードでも、元の属性値が同じであれば出力は変わりません。```xml ``` 観察結果は、ハードコードされた暗号鍵の使用など、安全でないアプローチが取られている可能性を強く示唆していたため、属性値がどのように変更されているかを調査する必要があった。意図は潜在的なセキュリティ上の欠陥を特定し、それをベンダーに報告して修正してもらい、すべてのユーザーのセキュリティを向上させることだった。実装が適切な機密性を提供しているかどうかを評価するために、ETS5をリバースエンジニアリングする必要があった。

ETS5は.NETフレームワークに基づいており、これはDLLからすぐに明らかだったため、ILSpyを使えば逆コンパイルは容易に実行できた。バイナリはDotfuscatorによって難読化されており、おそらくリバースエンジニアリングの努力を困難にするためだった。しかし、クラス名と関数名は驚くほどそのまま残っていた。そのため、選択したアプローチは、XMLファイルの処理、暗号化、復号化、難読化、難読化解除、鍵またはパスワードに関連していると思われるクラスと関数を検索することだった。これにより、Knx.Ets.ObjectModel.Import.PasswordDescrambler.ScrambleとKnx.Ets.ObjectModel.Import.Encryption.EncryptStringが発見された。これらはXMLファイルに格納された属性の難読化された値に対して呼び出されていた。関数には鍵素材は渡されておらず、定数値のみを使用して鍵を導出し、その鍵を使用してAES-256 CBCモードで属性を暗号化/復号化していた。ハードコードされた認証情報が鍵の導出に使用されていることは明らかだった。Dotfuscatorは制御フローを変更し、余分な操作を挿入したが、.NETフレームワークの関数呼び出しは隠せなかった。したがって、この段階でセミクリーンルームアプローチのための(難読化解除の)仕様を記述することが可能だった。欠けていたのは、key派生に使用される文字列だけで、それはdotfuscatorによって隠されていた。文字列難読化を解除するためにDe4dotを選択し、ETS5Passwordパスワードが明らかになった。IVはDe4dotを適用する前から読み取り可能で、バイトシーケンスとして定義されていた。個人的な好奇心から、これらはランダムなバイトではなく、実際には文字列Ivan MedvedevのASCII/UTF-8バイト表現であることが判明した。

この設計上の欠陥はKNX設備にリスクをもたらすため、問題をKNX協会に報告する必要があった。問題を実証できるよう、必要に応じて実証コードが必要だった。著作権侵害を避けるため、実証コードはメモした仕様に基づいて実装された。これは元のソフトウェアのコードを再利用しないためである。Dotfuscatorの適用により、元のコードや難読化解除されたコードでさえクリーンな実装には使用できないことが確実になり、偶発的なコピーも起こりにくくなった。

実証コードの開発後の協調的脆弱性開示の詳細については、協調的脆弱性開示のセクションを参照。

リスクを軽減するにはどうすればよいか?

残念ながら、2021年7月18日時点では、パッチが適用されたETSバージョンは利用できない。そのため、ETS5以外の追加対策が必要である。以下のサブセクションでは、想定する脅威モデルと防御対象に応じて取れるさまざまなアプローチを説明する。

フルディスク暗号化

  • 解決策:
    • Windows BitLockerまたはVeraCryptなどのサードパーティソフトウェアでハードドライブ全体を暗号化する。
  • 利点:
    • デバイスの電源がオフの間、ハードドライブ上のすべてのデータは暗号化され、攻撃者からアクセスできない。複雑なパスワードが使用されていることが前提。
    • Windowsは特定のWindowsバージョンでBitLockerという使いやすいソリューションを提供しており、オープンソースのソフトウェアソリューションも容易に入手できる。
  • 欠点:
    • コンピュータの動作中は機密性を提供しない。攻撃者がユーザーアカウントの1つにアクセスしたり、RCEを悪用したりできる場合、プロジェクト情報を平文でアクセスできる。

ファイル/フォルダ暗号化

  • 解決策:
    • Windows暗号化ファイルシステム(EFS)を使用して、C:\ProgramData\KNX\ETS5\ProjectStoreディレクトリとその中のすべてのファイルを暗号化する。
  • 利点:
    • デバイスの電源がオフの間、プロジェクト情報は暗号化され、攻撃者からアクセスできない。
    • EFSが管理者アカウントまたはETSを実行する専用アカウントによって設定されている場合、他のユーザーアカウントはファイルにアクセスできない。これにより、攻撃者がコンピュータのユーザーアカウントにアクセスしても、EFSを設定したアカウントではない場合に保護を提供できる。管理者またはETSアカウントには強力なパスワードが必要で、鍵素材を保護するために使用される。
  • 欠点:
    • コンピュータの動作中は常に機密性を提供するとは限らない。攻撃者がEFSを設定したユーザーアカウントにアクセスしたり、そのユーザーのコンテキストでコードを実行したりできる場合、プロジェクト情報に平文でアクセスできる。

暗号化ボリューム

  • 解決策:
    • VeraCryptなどのサードパーティソフトウェアで暗号化ボリュームを作成し、プロジェクト情報のみをそこに保存する。
  • 利点:
    • ボリュームがマウントされていない間、プロジェクト情報は暗号化され、攻撃者からアクセスできない。ボリューム暗号化には複雑なパスワードまたはハードウェアトークンが使用されていることが前提。
    • 攻撃者が管理者権限を取得した場合でも、限定的な保護を提供する。攻撃者がシステムにアクセスしている間にボリュームがマウントされていなければ、暗号化ボリューム内のデータは機密性を保つべき。
  • 欠点:
    • 元のプロジェクトファイルを暗号化ボリュームに移動し、元の暗号化されていないファイルが復元できないように安全に削除する必要がある。
    • マウントされたボリュームがC:\ProgramData\KNX\ETS5\ProjectStoreの下に表示されるようにシンボリックリンクを作成する必要がある。
    • 一般的に設定がより複雑。

協調的脆弱性開示

  • 2021-06-26 - KNX協会に問題を報告
  • 2021-07-09 - KNX協会が問題を確認
  • 2021-07-12 - KNX協会が即時開示を許可
  • 2021-07-18 - 公開開示
  • 2021-07-19 - CVE-2021-36799割り当て

KNX協会のCTO兼CFOであるJoost Demarestによると、ETS5は開発が終了しておりパッチは提供されない。彼は2021-07-12に問題の即時公開を許可し、提供された90日間の開示猶予を放棄した。

2021-11-08 更新

誤解のため、以前のREADMEではKNX協会がETS6で問題に対処する予定であると誤って記載していた。これは誤りである。KNX協会は2021-10-25に、暗号鍵素材をエクスポートしない場合に安全に保存する責任はETSにはないと考えているため、この問題を修正する予定はないと明らかにした。

2021-11-10 更新

KNX協会から連絡があり、計画を修正したと説明された。現在は、現在のETSバージョンの欠点を文書化し、ETS6の将来のバージョンでプロジェクトストアを適切に暗号化する意向である。

ライセンス

このプロジェクトはMITライセンスの下で配布されている。

変更履歴

1.0.0 - 2021-07-18

コミットハッシュ:

  • c6a3750cefa74d84c5886097cdd0f30dc1bd0dd1

ダウンロード:

  • ソースコード
  • 実行可能ファイル

変更点:

  • 初回バージョン
ツールをダウンロード