VMware WorkstationやESXiなどの仮想化ソフトウェアを使用していると、仮想マシン(VM)の設定ファイルである.vmx
ファイルにパスワードが設定されている場合があります。これは、VMのBIOS/ファームウェア設定へのアクセスを保護したり、VM自体の暗号化に関係したりします。しかし、パスワードを忘れてしまったり、セキュリティ監査やフォレンジック調査でパスワードを特定する必要が出てくることもあります。そんなときに役立つのが、John the Ripper (JtR) という強力なパスワードクラッキングツールに含まれるユーティリティ、vmx2johnです。
この記事では、vmx2johnの基本的な使い方から、抽出したハッシュをJohn the Ripperで解析する手順までを詳しく解説します。仮想環境のセキュリティに関わる重要なツールですので、その仕組みと適切な利用方法を理解しておきましょう。
vmx2johnとは?
vmx2johnは、VMwareの仮想マシン設定ファイル(.vmx
)からパスワードに関連するハッシュ情報を抽出するために設計されたPythonスクリプトです。抽出されたハッシュは、John the Ripperが理解できる形式になっており、そのままJohn the Ripperに入力してパスワード解析(クラッキング)を試みることができます。
具体的には、主にVMware WorkstationやPlayerなどで設定可能な「ファームウェアパスワード」(仮想BIOS/UEFIパスワード)のハッシュを抽出するのに使われます。また、VMの暗号化パスワードに関する情報が含まれている場合、それに関連するハッシュも抽出できる可能性があります(ただし、VM暗号化の仕組みは複雑であり、バージョンによって仕様が異なるため、必ずしも全ての暗号化パスワードがこのツールだけで解析できるわけではありません)。
vmx2johnは、John the Ripperの「Jumbo」バージョン(コミュニティによって拡張されたバージョン)に含まれる多くの*2john
ユーティリティの一つです。これらのユーティリティは、様々なファイル形式(ZIP, RAR, PDF, SSHキー, KeePassデータベースなど)からパスワードハッシュを抽出し、John the Ripperで扱える形式に変換する役割を担っています。
vmx2johnの入手と場所
vmx2johnは通常、John the Ripper (Jumbo版) の一部として提供されます。したがって、John the Ripperをインストールすれば、vmx2johnも利用可能になります。
インストール方法:
- Kali LinuxやParrot OSなどのペネトレーションテスト用ディストリビューション: 通常、John the Ripperはデフォルトでインストールされているか、標準リポジトリに含まれています。もしインストールされていなければ、パッケージマネージャを使ってインストールできます。
- その他のLinuxディストリビューション (Debian, Ubuntuなど): 同様にパッケージマネージャでインストールできます。
- macOS: Homebrewを使うのが簡単です。
- Windows: Openwallの公式サイトからWindows用のバイナリをダウンロードできます。 https://www.openwall.com/john/
- ソースからビルド: 最新版を使いたい場合や特定の機能が必要な場合は、GitHubリポジトリからソースコードをクローンしてビルドします。 https://github.com/magnumripper/JohnTheRipper
vmx2johnの場所:
インストール後、vmx2johnスクリプトは通常、John the Ripperの実行ファイルと同じディレクトリか、関連するスクリプトが格納されるディレクトリに配置されます。一般的な場所は以下の通りです。
/usr/bin/
/usr/sbin/
/usr/share/john/
(スクリプトや設定ファイルが含まれることが多い)- John the Ripperをソースからビルドした場合: ソースディレクトリ内の
run
ディレクトリ (例:/opt/JohnTheRipper/run/
)
見つからない場合は、find
コマンドやlocate
コマンドで探してみてください。
実行する際は、Python 3が必要になることが多いです。vmx2john
という名前で直接実行できる場合もあれば、python3 /path/to/vmx2john.py
のようにPythonインタープリタを指定する必要がある場合もあります。
vmx2johnの使い方
vmx2johnの基本的な使い方は非常にシンプルです。コマンドラインでvmx2john
(またはそのフルパス)に続けて、対象となる.vmx
ファイルのパスを指定します。
または、Pythonインタープリタを明示的に指定する場合:
成功すると、John the Ripperが解析可能な形式のハッシュ文字列が標準出力に表示されます。この出力は通常、以下の様な形式になります。
{VM名}.vmx
の部分は、処理したファイル名を示しています。$vmx*0*
は、これがvmx形式のハッシュであることを示す識別子(フォーマットラベルの一部)です。それに続く長い文字列が、実際のパスワードハッシュと関連情報(ソルトなど)を含んでいます。
もし.vmx
ファイルにパスワードが設定されていない場合や、vmx2johnが対応していない形式のパスワード情報だった場合は、何も出力されないか、エラーメッセージが表示されることがあります。
出力結果の保存:
抽出したハッシュをJohn the Ripperで解析するためには、ファイルに保存する必要があります。リダイレクト(>
)を使ってファイルに保存しましょう。
これで、vmx_hashes.txt
というファイルにハッシュが保存されます。ファイル名は任意で構いません。複数の.vmx
ファイルからハッシュを抽出し、一つのファイルに追記していくことも可能です(その場合は>>
を使用)。
John the Ripperでハッシュを解析する
vmx2johnでハッシュを抽出しファイルに保存したら、いよいよJohn the Ripperを使ってパスワードの解析(クラッキング)を行います。John the Ripperにはいくつかの解析モードがありますが、ここでは代表的な「ワードリストモード」を使った例を示します。
ワードリストモードでの解析:
ワードリストモードでは、パスワードの候補となる単語が大量に記載されたファイル(ワードリスト)を使用し、リスト内の単語を順番に試していきます。有名なワードリストには「rockyou.txt」などがあります。
以下のコマンドを実行します。
john
: John the Ripperの実行コマンド。--wordlist=/path/to/your/wordlist.txt
: 使用するワードリストファイルを指定します。rockyou.txt
はKali Linuxなどでは/usr/share/wordlists/rockyou.txt.gz
にあることが多いので、解凍して使うか、--wordlist=<(zcat /usr/share/wordlists/rockyou.txt.gz)
のようにすることも可能です。vmx_hashes.txt
: vmx2johnで作成したハッシュファイル。
John the Ripperは、ハッシュファイル(vmx_hashes.txt
)を読み込み、その中のハッシュ形式を自動的に検出しようとします(この場合はvmx
形式)。そして、指定されたワードリスト(wordlist.txt
)の単語を一つずつハッシュ化し、ファイル内のハッシュと一致するかどうかを比較します。
解析が成功すると、クラックされたパスワードがターミナルに表示されます。例:
この例では、パスワードが password123
であることが判明しました。解析結果は、John the Ripperの.pot
ファイル(通常は~/.john/john.pot
またはJohn the Ripperの実行ディレクトリにあるjohn.pot
)にも保存されます。
解析済みパスワードの表示:
後で解析結果を確認したい場合は、--show
オプションを使用します。
これにより、vmx_hashes.txt
に含まれるハッシュのうち、既に解析が完了しているものが.pot
ファイルから読み出され、表示されます。
その他の解析モード:
John the Ripperにはワードリストモード以外にも、以下のようなモードがあります。
- シングルクラックモード (
--single
): ハッシュファイルに含まれるユーザー名などの情報を使って、パスワード候補を生成して試すモード。vmxハッシュの場合はあまり有効ではないかもしれません。 - インクリメンタルモード (
--incremental
): 指定された文字セット(例: すべての小文字アルファベット、数字、記号など)を使って、考えられるすべての組み合わせを総当たりで試すモード。非常に時間がかかりますが、ワードリストにないパスワードも見つけられる可能性があります。 - ルールベースの攻撃 (
--rules
): ワードリストモードと組み合わせて使われ、ワードリストの単語に特定のルール(例: 大文字にする、数字を末尾に追加する、記号に置き換える)を適用して、より多くのパスワード候補を試します。
どのモードを使うかは、状況や利用可能な時間、計算リソースによって選択します。単純なパスワードであればワードリストモードで比較的早く見つかることが多いです。
注意点とセキュリティ上の考慮事項
vmx2johnとJohn the Ripperは強力なツールですが、利用にあたっては以下の点に注意が必要です。
- 法的・倫理的な問題: 前述の通り、これらのツールは許可なく他人のシステムやデータに使用してはいけません。必ず法的な権利と倫理的なガイドラインの範囲内で使用してください。
- 計算リソース: パスワード解析、特にインクリメンタルモードや大規模なワードリストを使用する場合、多くのCPU時間とメモリを消費します。高性能なマシンや、場合によってはGPUアクセラレーション(John the Ripperは一部のハッシュ形式で対応)が必要になることもあります。
- VMXファイルのバージョンとパスワードの種類: VMware製品のバージョンや設定によっては、
.vmx
ファイル内のパスワードの保存形式が異なる場合があります。vmx2johnがすべての形式に対応しているとは限りません。特に、近年のVMware製品におけるVM暗号化はより高度になっており、単に.vmx
ファイルからハッシュを抽出するだけでは解読できない可能性があります。 - ハッシュの複雑さ: 抽出されたハッシュが、非常に長く複雑なパスワードから生成されたものであったり、強力なハッシュアルゴリズム(高い反復回数など)が使われていたりする場合、解析には膨大な時間がかかるか、現実的な時間内には完了しない可能性があります。
- ツールのアップデート: John the Ripperとそれに含まれる
*2john
ツールは継続的に開発されています。新しいハッシュ形式への対応やパフォーマンス改善が行われるため、定期的に最新版にアップデートすることを推奨します。
パスワードを忘れてしまった場合の回復手段として、あるいはセキュリティ監査の一環としてこれらのツールを使用することは正当ですが、その能力と限界、そして法的な側面を十分に理解しておくことが重要です。
まとめ
vmx2johnは、VMwareの.vmx
設定ファイルからパスワードハッシュを抽出し、John the Ripperで解析可能な形式に変換するための便利なツールです。以下の手順で利用できます。
- John the Ripper (Jumbo版) をインストールし、
vmx2john
(またはvmx2john.py
) を利用可能にする。 vmx2john 対象のVMXファイル > 保存ファイル名
コマンドでハッシュを抽出・保存する。john --wordlist=ワードリストファイル 保存したハッシュファイル
コマンドでパスワード解析を開始する。- 解析結果はターミナルに表示されるほか、
john.pot
ファイルに記録される。john --show 保存したハッシュファイル
で確認できる。
パスワードを忘れてしまった場合や、セキュリティテストを行う際に役立ちますが、その使用は常に法と倫理の範囲内で行う必要があります。仮想環境の管理とセキュリティ維持のために、このようなツールの存在と機能を理解しておくことは有益です。