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