John the Ripper (JtR) は、非常に強力で広く利用されているオープンソースのパスワードクラッキングツールです。システム管理者が弱いパスワードを発見したり、セキュリティ監査、あるいは忘れてしまったパスワードの回復(もちろん、正当な権限がある場合に限ります!)に役立ちます。John the Ripper 本体はパスワードハッシュの解析を行いますが、特定のファイル形式からパスワードハッシュを抽出するためには、*2john という名前の補助ツール群が用意されています。
この記事では、その *2john ツール群の中から staroffice2john に焦点を当て、その機能と具体的な使い方について、解説していきます。
StarOffice / OpenOffice / LibreOffice とは?
staroffice2john を理解する前に、まず対象となる StarOffice、OpenOffice、LibreOffice について簡単に触れておきましょう。
StarOffice は、かつて Sun Microsystems 社が開発・販売していたオフィススイートです。Microsoft Office の対抗馬として開発され、ワープロ、表計算、プレゼンテーションなどの機能を提供していました。そのソースコードは後にオープンソース化され、OpenOffice.org (略称 OOo) プロジェクトが発足しました。
OpenOffice.org はコミュニティベースで開発が進められ、多くの派生ソフトウェアを生み出しました。その中でも最も活発で広く使われているのが LibreOffice です。LibreOffice は The Document Foundation によって開発されており、現在も機能追加や改善が続けられています。
これらのオフィススイートは、文書(Writer)、表計算(Calc)、プレゼンテーション(Impress)などのアプリケーションを含み、それぞれ独自のファイル形式や、共通のオープン標準形式である OpenDocument Format (ODF) を使用します。
- 古い StarOffice 形式:
.sdw(Writer),.sdc(Calc),.sdd(Impress),.sxd(Draw),.sxi(Impress),.sxw(Writer),.sxc(Calc) など - OpenOffice.org XML 形式:
.sxw,.sxc,.sxiなど (StarOffice 6, 7 でも使用) - OpenDocument Format (ODF):
.odt(Writer),.ods(Calc),.odp(Impress),.odg(Draw) など
重要な点として、これらのオフィススイートで作成されたファイルは、パスワードを設定して内容を保護する機能を持っています。ファイルを開く際にパスワードを要求したり、編集を制限したりすることができます。
staroffice2john とは何か?
staroffice2john は、John the Ripper スイートに含まれるユーティリティスクリプト(多くの場合 Perl スクリプトまたは Python スクリプト)の一つです。その主な目的は、パスワードで保護された StarOffice、OpenOffice.org、および LibreOffice のファイルから、John the Ripper が解析可能な形式のパスワードハッシュを抽出することです。
John the Ripper 本体は、直接オフィスファイルを読み込んでパスワードを解析することはできません。まず、ファイル内に埋め込まれているパスワード関連情報(ハッシュ化されたパスワードや暗号化パラメータなど)を特定のフォーマットで取り出す必要があり、その役割を担うのが staroffice2john なのです。
このツールは、以下のファイル形式に対応していると考えられます(John the Ripper のバージョンやコミュニティによる拡張によってサポート状況は変化する可能性があります)。
- 古い StarOffice バイナリ形式 (
.sdw,.sxc,.sxd,.sxw,.sxiなど、ただし現行バージョンでのサポートは限定的かもしれません) - OpenOffice.org XML 形式 (
.sxw,.sxc,.sxiなど) - OpenDocument Format (ODF) (
.odt,.ods,.odpなど)
特に現代では ODF 形式 (.odt, .ods, .odp) が主流であるため、これらのファイル形式に対応していることが重要です。いくつかの情報源では、ODF ファイルのハッシュ抽出には libreoffice2john という名前のツールが使われる場合もあることが示唆されていますが、staroffice2john が ODF 形式を扱える可能性も十分にあります。John the Ripper のバージョンによっては、これらのツールが統合されているか、あるいはどちらかの名前で ODF をサポートしている場合があります。
*2john ツールは、様々なファイル形式(ZIP, RAR, PDF, KeePass, SSH キー, オフィス文書など)に対応するものが多数存在します。ファイル形式ごとに専用の *2john ツールを使うのが基本です。 staroffice2john の仕組み
staroffice2john は、指定されたオフィスファイルを解析し、パスワード保護に関する情報を探し出します。ODF 形式などのモダンなオフィスファイルは、実際には複数の XML ファイルや設定ファイルを ZIP 形式でアーカイブしたものです。パスワード保護が設定されている場合、特定の XML ファイル(例: content.xml や settings.xml)内に、暗号化されたデータやパスワード検証に必要な情報(ソルト、イテレーション回数、暗号化アルゴリズムなど)が含まれています。
staroffice2john はこれらの情報を読み取り、John the Ripper が理解できる以下のような形式の文字列(ハッシュ)を標準出力に出力します。
$odf*<type>*<checksum-type>*<iterations>*<key-size>*<iv-length>*<salt-length>*<salt>*<checksum>*<iv>*<encrypted-length>*<encrypted-part>このハッシュ文字列には、ファイル名、パスワード検証に必要なパラメータ(暗号化タイプ、チェックサムタイプ、反復回数、鍵サイズ、初期化ベクトル(IV)の長さ、ソルトの長さと値、チェックサム、IV の値など)、そして暗号化されたデータの一部が含まれています。John the Ripper はこの情報をもとに、様々なパスワード候補を試行し、正しいパスワードを見つけ出そうとします。
staroffice2john のインストールと場所
staroffice2john は、通常 John the Ripper 本体と一緒に配布されています。個別にインストールする必要はほとんどありません。John the Ripper をインストールする方法はいくつかあります。
- パッケージマネージャ (推奨): 多くの Linux ディストリビューション (Debian, Ubuntu, Kali Linux, Fedora など) では、標準のリポジトリから John the Ripper をインストールできます。
# Debian/Ubuntu/Kali の場合 sudo apt update sudo apt install john # Fedora の場合 sudo dnf install john - ソースコードからコンパイル: 最新版やカスタマイズ版を使いたい場合は、Openwall の John the Ripper 公式サイトからソースコードをダウンロードしてコンパイルします。
- コミュニティ版 (Jumbo John): より多くのハッシュ形式や機能、最適化を含むコミュニティ版 (通称 Jumbo John) も人気があります。GitHub などで開発が進められています。
インストール後、staroffice2john スクリプトは通常、John the Ripper の実行ファイルと同じディレクトリか、その近くのディレクトリに配置されます。一般的な場所は以下の通りです。
/usr/bin//usr/sbin//usr/share/john/- John the Ripper のソースコードを展開したディレクトリ内の
runディレクトリ (例:/opt/JohnTheRipper/run/)
見つからない場合は、find コマンドや locate コマンドで探すことができます。
sudo find / -name staroffice2john\*
# または
locate staroffice2john*2john スクリプトを含む)がプリインストールされていることが多いです。 staroffice2john の基本的な使い方
staroffice2john の使い方は非常にシンプルです。コマンドラインでスクリプトを実行し、引数としてパスワード保護されたオフィスファイルを指定します。
ステップ1: ハッシュの抽出
ターミナルを開き、以下のコマンドを実行します。/path/to/staroffice2john は実際のスクリプトのパスに、protected_document.odt は解析したいファイル名に置き換えてください。
/path/to/staroffice2john protected_document.odt または、John the Ripper の run ディレクトリにいる場合は、相対パスで指定できます。
./staroffice2john ../path/to/protected_document.odt成功すると、John the Ripper が解析できる形式のハッシュ文字列が標準出力に表示されます。
protected_document.odt:$odf*1*1*100000*256*16*16*xxxxxxxx...*yyyyyyyy...*zzzzzzzz...*512*abababab... このハッシュをファイルに保存しておくと、後で John the Ripper で解析する際に便利です。リダイレクト(>)を使ってファイルに保存しましょう。
/path/to/staroffice2john protected_document.odt > office_hash.txt これで、office_hash.txt というファイルにハッシュが保存されました。
ステップ2: John the Ripper でハッシュを解析
次に、保存したハッシュファイルを John the Ripper に渡して、パスワードクラッキングを実行します。
john office_hash.txtJohn the Ripper は、デフォルトの設定(辞書攻撃、インクリメンタルモードなど)でパスワードの解析を試みます。
特定の攻撃モードやオプションを指定することもできます。例えば、辞書ファイル (wordlist.txt) を使って辞書攻撃を行う場合は、--wordlist オプションを使用します。
john --wordlist=/path/to/wordlist.txt office_hash.txt ODF 形式のハッシュであることを明示的に指定するために --format=odf オプションが必要になる場合もあります。John the Ripper は通常、ハッシュ形式を自動検出しますが、複数の形式として認識される可能性がある場合や、確実に指定したい場合に有効です。
john --format=odf --wordlist=/path/to/wordlist.txt office_hash.txt パスワードが見つかると、John the Ripper はそのパスワードを表示します。解析には時間がかかることがあります(特にパスワードが複雑な場合)。中断したセッションは後で --restore オプションで再開できます。
# セッションの再開
john --restore クラックに成功したパスワードは、john --show コマンドで確認できます。
john --show office_hash.txt出力例:
protected_document.odt:SecretPassword123: ... (その他の情報) ...
1 password hash cracked, 0 left対応フォーマットと注意点
staroffice2john (および関連する libreoffice2john) が対応する具体的なファイル形式や暗号化方式は、John the Ripper のバージョンによって異なります。
- ODF (OpenDocument Format):
.odt,.ods,.odpなど、LibreOffice や OpenOffice.org の標準形式。AES-256 などの比較的新しい暗号化方式が使われている場合が多いです。staroffice2johnまたはlibreoffice2johnで対応している可能性が高いです。John the Ripper でのフォーマット名はodfやodf-aesなどになることがあります。 - 古い StarOffice/OpenOffice.org 形式:
.sxw,.sxc,.sxiなど。これらの形式は Blowfish 暗号などが使われていることがありました。staroffice2johnが元々ターゲットとしていた形式ですが、現在のバージョンでのサポート状況は確認が必要です。John the Ripper でのフォーマット名はstarofficeなどになることがあります。
注意点
- John the Ripper のバージョン: 古いバージョンの John the Ripper では、最新の LibreOffice で採用されている暗号化方式に対応していない場合があります。可能な限り最新版(特に Jumbo John)を使用することをお勧めします。
libreoffice2johnの存在: 環境によってはstaroffice2johnではなくlibreoffice2johnという名前のスクリプトが存在し、ODF ファイルのハッシュ抽出に使われることがあります。どちらのスクリプトが ODF に対応しているか、あるいは両方が対応しているかは、実際に試すか、John the Ripper のドキュメントを確認する必要があります。- 暗号化強度: 近年の LibreOffice/OpenOffice では、強力な暗号化(例: AES-256)と鍵導出関数(PBKDF2 など)が用いられています。これにより、総当たり攻撃や辞書攻撃に対する耐性が高まっています。単純なパスワードでなければ、解析には膨大な時間と計算リソースが必要になる可能性があります。
- GPU の活用: John the Ripper は GPU を利用したパスワード解析にも対応しています (OpenCL や CUDA を使用)。GPU を使うことで、CPU のみの場合と比較して大幅に解析速度を向上させることができます。ただし、対応するハッシュ形式や設定が必要です。
| ファイル形式 | 拡張子例 | 想定される JtR フォーマット名 | 備考 |
|---|---|---|---|
| OpenDocument Format (ODF) | .odt, .ods, .odp | odf, odf-aes | 現在の主流。staroffice2john または libreoffice2john で対応。AES暗号化が一般的。 |
| OpenOffice.org XML | .sxw, .sxc, .sxi | odf または staroffice (?) | ODF の前身。staroffice2john で対応している可能性あり。 |
| 古い StarOffice Binary | .sdw, .sdc, .sdd | staroffice (?) | LibreOffice 4.0以降では読み込み非推奨/不可。JtR でのサポートも限定的かも。 |
倫理的な考慮事項と合法性
John the Ripper や staroffice2john のようなパスワードクラッキングツールは、非常に強力ですが、その使用には細心の注意が必要です。
- これらのツールは、自分が所有しているファイルや、明示的にテストする許可を得ているファイルに対してのみ使用してください。
- 他人のファイルやシステムに対して、許可なくパスワードクラッキングを試みることは、多くの国や地域で不正アクセス行為として法律で禁止されており、重大な犯罪となります。
- ツールの使用目的は、あくまでセキュリティ監査、脆弱なパスワードの発見、または自身が忘れたパスワードの回復(正当な理由がある場合)に限定されるべきです。
- 悪用は絶対にしないでください。
技術的な知識は、倫理的な責任感を持って正しく活用することが重要です。
まとめ
staroffice2john は、John the Ripper スイートの一部として提供される、パスワード保護された StarOffice/OpenOffice/LibreOffice ファイルからパスワードハッシュを抽出するための便利なツールです。
staroffice2john <ファイル名> > hash.txtのようにして、ファイルからハッシュ情報を抽出します。ODF ファイルの場合はlibreoffice2johnを使う場合もあります。- 抽出したハッシュファイル (
hash.txt) をjohn hash.txtのように John the Ripper に渡してパスワード解析を実行します。 --wordlistや--format=odfなどのオプションを利用して、解析方法をカスタマイズできます。
このツールを使うことで、忘れてしまったパスワードの回復や、組織内のパスワードポリシーの強度テストなどに役立てることができます。ただし、その強力さゆえに、常に倫理的な観点と法律を遵守して使用することが不可欠です。
パスワード保護は重要なセキュリティ機能ですが、万能ではありません。強力なパスワードを設定し、ファイルを適切に管理することが依然として重要です。