
Petya ランサムウェアにインスパイアされた、Assembly、C、および C++ で記述された Proof-of-Concept ブートキットおよび UEFI ブートアプリケーション。
Petyaランサムウェアに着想を得たProof-of-ConceptブートキットおよびUEFIブートアプリケーション。Assembly、C、C++で記述されています。
このプロジェクトが役立つ、または参考になると感じていただけましたら、リポジトリに⭐を付けていただけると大変嬉しいです。皆様のサポートは、このツールを改善し続けるための大きな励みになります。
OpenPetyaは、ブートキットや低レベルランサムウェアが内部でどのように動作するかを研究するために設計された教育用プロジェクトです。
このプロジェクトは以下に焦点を当てています:
OpenPetyaは、PetyaやNotPetyaの完全な再実装を意図したものではありません。代わりに、学習および研究目的のために設計された簡略化されたProof-of-Conceptです。
OpenPetyaにはコマンド&コントロール(C2)機能が含まれていないことに言及しておく価値があります。さらに、OpenPetyaは暗号化後に平文のMFTバックアップデータを隠しセクタに保存します。この動作は、これらの機能がこのプロジェクトで実装されているコアブートローダーや暗号化メカニズムと比較して比較的些細であるため、教育目的で意図的に設計されています。ただし、必要に応じてこれらの機能を変更または削除することもできます。
注: バージョン2.0.0では、現代のWindowsオペレーティングシステムに損害を与えるために悪用される可能性があることを懸念し、UEFI向けには実装しないことを選択しました。
ここ数ヶ月、私は以下について研究してきました:
PetyaとNotPetyaを調査する中で、多くのオンラインリソースが全体的なワークフローを簡単に説明するだけで、基盤となるブートプロセスが実際にどのように機能するかを実証していないことに気づきました。
さらに、既存のPetya関連プロジェクトの多くは、ロジックをゼロから実装するのではなく、抽出されたブートローダーバイナリや修正されたオリジナルコンポーネントに依存しています。
そこで、以下を理解するための実践的なプロジェクトとしてOpenPetyaを開発することを決定しました:
このプロジェクトは、ブートキット、低レベルマルウェア、オペレーティングシステム内部構造に関する進行中の研究の一部でもあります。
関連記事:
バージョン2.0.0では、現代のブートキットがどのように機能するか(Alex Matrosov、Eugene Rodionov、Sergey Bratusによる「Rootkits and Bootkits」の最後の数章で扱われている内容)に興味を持ちました。そこで、EFIアプリケーションのプログラミングをゼロから学ぶことにしました。そして、それが私が予想していたよりもはるかに難しい(デバッグの観点で)ことがわかりました。
とにかく、いくつかのシンプルなEFIアプリケーションを作成した後、OpenPetya v2.0.0を公開しました!
カスタムMBR
OpenPetyaは、ステージ2ペイロードをロードするためにカスタムマスターブートレコード(MBR)を使用します。
カスタムステージ2ブートローダー
ステージ2ブートローダーには、このプロジェクトのコア機能が含まれています:
プロテクトモードへの移行
ブートローダーは、高レベルロジックを実行する前に16ビットリアルモードから32ビットプロテクトモードに切り替えます。
MFT暗号化
オリジナルのPetyaと同様に、OpenPetyaはSalsa20を使用してNTFSマスターファイルテーブル(MFT)の重要な部分を暗号化します。
パスワード検証
OpenPetyaは、無効なキーによる不可逆的な破損を防ぐために、復号化前に入力パスワードを検証します。
自動復元
正しいパスワードが入力されると:
OpenPetya v2.0.0は、カスタムEFIアプリケーション(petya.efi)にMFT暗号化を含んでいません。シンプルなログインパネルを提供し、パスワードが正しい場合にチェーンローディングを実行します。
EFIアプリケーションにMFT暗号化を実装しないことを選択しました。これは、現代のWindowsオペレーティングシステムに損害を与えるために悪用される可能性があるためです。一方、v1.0.0では、脅威アクターが2016年にすでにそれを実証していたため、実装しました。
OpenPetya.exeユーザーモードのインストーラーおよびコントローラーアプリケーション。
機能:
mbr.bin以下を担当するカスタムマスターブートレコード(MBR)コード:
stage2.binOpenPetyaのコアペイロード。
役割:
petya.efiOpenPetyaのコアペイロード。
機能:
OpenPetya(MBR + ブートローダー)のワークフローは以下の通りです。
OpenPetya.exeを使用してOpenPetyaをインストールし、パスワードを選択します。NtRaiseHardError経由)メカニズムを通じて再起動されます。オリジナルのPetyaランサムウェアとは異なり、OpenPetyaは偽のCHKDSK画面やソーシャルエンジニアリング行為でユーザーを欺こうとはしません。このプロジェクトは純粋に教育および研究目的で設計されています。
OpenPetya(UEFI)のワークフローは以下の通りです:
以下のコマンドを使用してプロジェクトをビルドできます。
make # mbr.bin と stage2.bin をビルド
./build.sh # OpenPetya.exe をビルド
警告: 仮想マシン内で実行してください!
以下のコマンドは、カスタムMBRとステージ2ブートローダーをインストールする方法を示しています(管理者権限が必要です):
Legacy BIOS:
OpenPetya.exe --list
OpenPetya.exe --drive 0 --install mbr.bin stage2.bin
UEFI:
OpenPetya.exe --is-admin
OpenPetya.exe --firmware
OpenPetya.exe --uefi-secure
OpenPetya.exe --drive 0 --uefi-install petya.efi
OpenPetya.exe --drive 0 --uefi-restore
以下に関する詳細な説明:
NtRaiseHardError)の使用方法はこの記事に文書化されています。
このプロジェクトは純粋に教育および研究目的で開発されました。
OpenPetyaの目標は以下を研究することです:
このプロジェクトを違法行為や、所有していない、または明示的にテスト許可を得ていないシステムに対して使用しないでください。
作者は本ソフトウェアの誤用について一切の責任を負いません。
このプロジェクトを確認していただきありがとうございます。フィードバックや提案は歓迎します。