この記事では、John the Ripper スイートに含まれるユーティリティスクリプトの一つである filezilla2john
の使い方について詳しく解説します。filezilla2john
は、人気のFTPクライアントである FileZilla の設定ファイルから、保存されているパスワード情報を抽出し、John the Ripperで解析可能なハッシュ形式に変換するためのツールです。🔑
FileZillaは多くのユーザーに利用されており、サイトマネージャー機能で多数のFTP/SFTP接続情報を保存できます。しかし、パスワードを忘れてしまった場合や、セキュリティ監査の一環として保存されたパスワードの強度を確認したい場合に、filezilla2john
が役立ちます。
John the Ripperは、強力なパスワードクラッキングツールであり、様々なハッシュ形式に対応しています。filezilla2john
は、FileZillaが保存するエンコードされたパスワードデータを、John the Ripperが理解できる形式に変換する役割を担います。これにより、辞書攻撃やブルートフォース攻撃などを通じて、元のパスワードを特定することが可能になります。
前提条件
filezilla2john
を使用するには、以下の準備が必要です。
-
John the Ripperのインストール:
filezilla2john
はJohn the Ripperの一部として提供されることが多いです。Kali LinuxやParrot OSなどのペネトレーションテスト用ディストリビューションには、通常、John the Ripperがプリインストールされています。他のLinuxディストリビューションでは、パッケージマネージャー(例:sudo apt install john
やsudo yum install john
)でインストールできます。WindowsやmacOSの場合は、公式サイトからダウンロードしてインストールする必要があります。John the Ripperのインストールディレクトリ内のrun
ディレクトリにfilezilla2john
(またはfilezilla2john.py
) が含まれているか確認してください。 -
Python環境:
filezilla2john
はPythonスクリプトであるため、Python(通常はPython 2または3)がインストールされている必要があります。 -
FileZilla設定ファイルの場所の特定: パスワード情報が保存されているFileZillaの設定ファイル(主に
sitemanager.xml
やrecentservers.xml
)の場所を知る必要があります。これらのファイルの一般的な場所は以下の通りです。OS 一般的なパス Windows C:\Users\<ユーザー名>\AppData\Roaming\FileZilla\
macOS /Users/<ユーザー名>/.config/filezilla/
または/Users/<ユーザー名>/.filezilla/
Linux /home/<ユーザー名>/.config/filezilla/
または/home/<ユーザー名>/.filezilla/
※
<ユーザー名>
は実際のユーザー名に置き換えてください。また、バージョンや環境によってパスが異なる場合があります。
filezilla2john の使い方
filezilla2john
の基本的な使い方は非常にシンプルです。以下の手順に従ってください。
- ターミナルまたはコマンドプロンプトを開く: 作業を行うためのコマンドラインインターフェースを開きます。
-
filezilla2john
スクリプトの場所に移動する (任意): John the Ripperのインストールディレクトリ内のrun
ディレクトリに移動するか、スクリプトへのフルパスを指定します。# 例: John the Ripperのrunディレクトリに移動する場合 cd /path/to/john/run
-
filezilla2john
を実行する: スクリプトを実行し、引数としてFileZillaの設定ファイル(sitemanager.xml
またはrecentservers.xml
)のパスを指定します。# スクリプトがPythonファイルの場合 python filezilla2john.py /path/to/your/FileZilla/sitemanager.xml # または直接実行可能な場合 ./filezilla2john /path/to/your/FileZilla/sitemanager.xml
例えば、Windows環境でユーザー名が “User” の場合、コマンドは以下のようになります(Johnのrunディレクトリから実行する場合)。
python filezilla2john.py C:\Users\User\AppData\Roaming\FileZilla\sitemanager.xml
macOSやLinux環境でユーザー名が “user” の場合、コマンドは以下のようになります(Johnのrunディレクトリから実行する場合)。
python filezilla2john.py /home/user/.config/filezilla/sitemanager.xml
-
出力(ハッシュ)を確認する:
filezilla2john
は、設定ファイル内に保存されているエンコードされたパスワード情報を読み取り、John the Ripperが解析できる形式のハッシュ文字列を標準出力に表示します。出力は通常、以下のような形式になります。
example.com:$fzV1$1.1fca1a1b1c1d1e1f...
ここで、
example.com
はサイト名やホスト名、$fzV1$
はFileZillaのハッシュ形式を示す識別子、その後の文字列が実際のハッシュデータです。 -
ハッシュをファイルに保存する: John the Ripperで解析するために、出力されたハッシュをテキストファイルに保存します。リダイレクトを使用すると便利です。
python filezilla2john.py /path/to/your/FileZilla/sitemanager.xml > filezilla_hashes.txt
これにより、
filezilla_hashes.txt
というファイルにハッシュが保存されます。
John the Ripper でハッシュを解析する
filezilla2john
で抽出・保存したハッシュファイル(例: filezilla_hashes.txt
)を使用して、John the Ripperでパスワードクラッキングを試みます。
-
John the Ripperを実行する: ターミナルで以下のコマンドを実行します。John the Ripperは自動的にハッシュ形式を検出し、デフォルトのクラッキングモード(シングルクラック、辞書、インクリメンタル)を順に試します。
john filezilla_hashes.txt
-
辞書ファイルを使用する (推奨): より効率的にクラッキングを行うために、辞書ファイル(パスワード候補リスト)を指定することができます。
rockyou.txt
は有名な辞書ファイルの一つです。john --wordlist=/path/to/your/wordlist.txt filezilla_hashes.txt # 例: Kali Linuxにデフォルトで含まれるrockyou.txtを使用する場合 john --wordlist=/usr/share/wordlists/rockyou.txt.gz filezilla_hashes.txt
.gz
圧縮された辞書ファイルも直接指定できる場合があります。 -
特定のハッシュ形式を指定する: John the Ripperが自動で形式を判別できない場合や、特定の形式のみを試したい場合は、
--format=fz
オプションを使用します。john --format=fz --wordlist=/path/to/your/wordlist.txt filezilla_hashes.txt
-
解析結果を確認する: クラッキングが成功すると、John the Ripperは対応するパスワードを表示します。処理が完了した後や、途中で中断した場合でも、以下のコマンドでクラック済みのパスワードを確認できます。
john --show filezilla_hashes.txt
出力例:
example.com:CorrectPassword123:User:...
この例では、
example.com
サイトのパスワードがCorrectPassword123
であることが特定されました。
クラッキングにかかる時間は、パスワードの複雑さ、使用する辞書ファイルの質、マシンの計算能力によって大きく異なります。単純なパスワードは数秒で見つかることもありますが、複雑なパスワードの場合は数時間、数日、あるいはそれ以上かかることもあります。🕰️
実践的な例
Linux環境で、ホームディレクトリの .config/filezilla/
にある sitemanager.xml
からパスワードハッシュを抽出し、rockyou.txt
を使って解析する具体的な手順を示します。
-
John the Ripper の run ディレクトリに移動:
cd /opt/john/run # Johnのインストール場所によってパスは異なります
-
filezilla2john でハッシュを抽出しファイルに保存:
python filezilla2john.py ~/.config/filezilla/sitemanager.xml > ~/fz_hashes.txt
ホームディレクトリに
fz_hashes.txt
が作成されます。 -
John the Ripper で解析を開始 (rockyou.txt を使用):
./john --wordlist=/usr/share/wordlists/rockyou.txt.gz ~/fz_hashes.txt
- 進捗状況の確認 (実行中に任意のキーを押す): Johnの実行中にEnterキーなどを押すと、現在の状況(試行中のパスワード、速度など)が表示されます。
-
解析結果の表示:
./john --show ~/fz_hashes.txt
セキュリティ上の考慮事項と倫理的な利用
⚠️ 注意:
filezilla2john
および John the Ripper は、強力なパスワード解析ツールです。これらのツールを使用する際は、以下の点に注意してください。
- 正当な目的での利用: 自分が管理権限を持つシステムや、明示的な許可を得たシステムに対してのみ使用してください。他人のアカウントやシステムのパスワードを不正に解析することは、法律で禁止されており、重大な犯罪となります。
- パスワード管理の重要性: FileZillaにパスワードを保存する機能は便利ですが、マスターパスワードを設定するなど、設定ファイル自体へのアクセスを保護することが推奨されます。また、可能であればパスワードを保存せず、パスワードマネージャーを使用するか、SSHキー認証など、より安全な認証方式を利用することを検討してください。
- セキュリティ監査: システム管理者が組織内のパスワードポリシーの遵守状況を確認したり、脆弱なパスワードが使用されていないかを監査したりする目的で、これらのツールが利用されることがあります。
- パスワード復旧: 自身が忘れてしまったパスワードを回復するために使用することも、正当な利用目的の一つです。
これらのツールは、セキュリティを強化するための知識や技術を学ぶ上で有用ですが、その力を悪用しないよう、常に倫理的な観点を持って利用することが求められます。
トラブルシューティング
-
filezilla2john
が見つからない: John the Ripperのインストールが不完全であるか、run
ディレクトリのパスが正しくない可能性があります。find / -name filezilla2john.py 2>/dev/null
のようなコマンドでスクリプトの場所を探してみてください。 -
Pythonエラーが発生する: Pythonのバージョンが古い、または必要なライブラリ(例:
xml.etree.ElementTree
)が利用できない可能性があります。Python環境を確認し、必要であればアップデートしてください。 -
設定ファイルが見つからない: FileZillaの設定ファイルのパスが間違っているか、FileZillaがその場所に設定ファイルを保存していない可能性があります。上記「前提条件」セクションのパスを確認するか、システム内で
sitemanager.xml
を検索してください。 - ハッシュが抽出されない: 設定ファイル内にパスワードが保存されていない、またはパスワードがエンコードされていない形式(古いバージョンなど)で保存されている可能性があります。ファイルの内容を確認してみてください。
-
John the Ripperがハッシュを認識しない:
filezilla2john
の出力形式がJohn the Ripperの対応バージョンと異なるか、ハッシュが破損している可能性があります。--format=fz
オプションを明示的に指定してみてください。
まとめ
filezilla2john
は、FileZillaの設定ファイルからパスワードハッシュを抽出し、John the Ripperで解析するための便利なツールです。パスワードの復旧やセキュリティ監査の際に役立ちますが、その利用は常に倫理的かつ合法的な範囲に留める必要があります。この記事で紹介した手順に従えば、比較的簡単にFileZillaに保存されたパスワード情報の解析を試みることができます。パスワード管理の重要性を再認識し、より安全な方法での認証情報管理を心がけましょう。🛡️
参考情報
- John the Ripper official website: https://www.openwall.com/john/
- Kali Linux Tools – john: https://www.kali.org/tools/john/
コメント