racf2john 徹底解説:メインフレーム RACF パスワード監査を強化しよう 💪

John the Ripper スイートの一部である racf2john を活用して、IBM メインフレームのセキュリティを向上させる方法

はじめに:メインフレームセキュリティと racf2john の役割

IBM メインフレームは、長年にわたり基幹業務システムの中核として、多くの企業や組織で利用され続けています 🏦。その堅牢性や信頼性は高く評価されていますが、セキュリティ対策は現代の脅威に合わせて常に進化させる必要があります。特に、ユーザー認証の根幹であるパスワードの管理は極めて重要です。

メインフレーム環境における代表的なセキュリティサブシステムの一つが RACF (Resource Access Control Facility) です。RACF は、ユーザー認証、アクセス制御、監査ログなどの機能を提供し、システムリソースを保護します。しかし、設定されたパスワードが推測しやすいものであったり、古くから使われている脆弱なものであったりすると、セキュリティリスクとなります 😨。

ここで登場するのが、オープンソースのパスワードクラッキングツールとして広く知られる John the Ripper (JtR) と、そのスイートに含まれるユーティリティの一つである racf2john です。racf2john は、RACF データベースからパスワードハッシュ情報を抽出し、John the Ripper が解析できる形式に変換する役割を担います。

このプロセスを通じて、システム管理者は自社のメインフレーム環境で使用されているパスワードの強度を評価し、脆弱なパスワードを持つユーザーアカウントを特定できます。これは、不正アクセスを未然に防ぎ、セキュリティポリシーの遵守を確認するための重要な監査活動となります ✨。

この記事では、racf2john の基本的な使い方から、John the Ripper と連携したパスワード監査の実践的な手順までを詳しく解説します。メインフレームのセキュリティに関わる方、特に RACF の管理や監査を担当されている方にとって、有用な情報となることを目指します。

注意: パスワードクラッキングツールの使用は、必ず適切な権限と許可の下で行ってください。許可なく他者のシステムやデータに対してこれらのツールを使用することは、法律や組織の規定に違反する可能性があります 🚫。この記事は、正当なセキュリティ監査目的での利用を前提としています。

racf2john の入手と準備

racf2john は単体のツールではなく、John the Ripper スイートの一部として提供されています。そのため、まずは John the Ripper を入手し、セットアップする必要があります。

John the Ripper は、公式サイトや GitHub リポジトリから入手できます。主要な Linux ディストリビューションでは、パッケージマネージャを通じて簡単にインストールできる場合が多いです。

公式サイト: https://www.openwall.com/john/

GitHub リポジトリ (Bleeding-jumbo ブランチが推奨されることが多い): https://github.com/openwall/john-jumbo

Debian/Ubuntu 系 Linux の場合:

sudo apt update
sudo apt install john

Red Hat/CentOS/Fedora 系 Linux の場合:

sudo dnf install john # Fedora
sudo yum install john # CentOS/RHEL (EPEL リポジトリが必要な場合あり)

ソースからビルドする場合 (最新機能を利用したい場合):

git clone https://github.com/openwall/john-jumbo.git
cd john-jumbo/src/
./configure
make -s clean && make -sj4

ビルド後、実行ファイルは `john-jumbo/run/` ディレクトリ内に生成されます。

John the Ripper をインストールまたはビルドすると、通常、実行ファイルと同じディレクトリ (多くの場合 `run` ディレクトリ) に racf2john スクリプト (または実行ファイル) が配置されます。

cd /path/to/john/run/ # John the Ripper の run ディレクトリに移動
ls racf2john*

このコマンドで racf2john (または racf2john.py など) が見つかれば準備OKです 👍。

racf2john を使用するには、入力データとして RACF データベースの情報が必要です。一般的には、IBM が提供するユーティリティ IRRDBU00 (RACF Database Unload Utility) を使用して、RACF データベースの内容をフラットファイル (シーケンシャルデータセット) にアンロード(出力)したものを使用します。

IRRDBU00 ユーティリティの実行には、メインフレーム上での適切な権限と JCL (Job Control Language) の知識が必要です。生成されるアンロードデータには、ユーザー情報、パスワード情報(ハッシュ化されています)、アクセス権限など、非常に機密性の高い情報が含まれます 🔒。

具体的な IRRDBU00 の実行手順や JCL の例については、IBM の公式ドキュメントや、所属する組織のメインフレーム運用手順を参照してください。

アンロード処理によって生成されたデータファイルを、racf2john を実行する環境 (Linux, macOS, Windows など) に安全な方法で転送する必要があります。転送時には、ファイルの機密性を保つために、暗号化された通信路 (SFTP, SCP など) を使用することが強く推奨されます。

重要: IRRDBU00 のアンロードデータは極めて機密性の高い情報です。取り扱いには最大限の注意を払い、アクセス権限を厳格に管理し、不要になったデータは安全に削除してください。漏洩した場合、深刻なセキュリティインシデントにつながる可能性があります。

racf2john の基本的な使い方

RACF のアンロードデータを準備できたら、いよいよ racf2john を使ってパスワードハッシュを抽出します。使い方は非常にシンプルです。

基本的な構文は以下の通りです。

/path/to/john/run/racf2john <racf_unload_file> > <output_hash_file>
  • /path/to/john/run/racf2john: racf2john スクリプトまたは実行ファイルへのパスを指定します。John the Ripper の `run` ディレクトリにいる場合は、単に ./racf2john で実行できます。
  • <racf_unload_file>: IRRDBU00 によって生成され、転送してきた RACF アンロードデータファイルの名前を指定します。
  • > <output_hash_file>: 抽出されたパスワードハッシュを保存するファイル名を指定します。リダイレクト (>) を使ってファイルに出力するのが一般的です。

例えば、RACF アンロードデータファイルが racf_data.unload で、抽出したハッシュを racf_hashes.txt というファイルに保存したい場合は、次のように実行します。

cd /path/to/john/run/
./racf2john /path/to/racf_data.unload > racf_hashes.txt

処理が完了すると、racf_hashes.txt ファイルが生成されます。

racf2john によって生成される出力ファイル (上記の例では racf_hashes.txt) には、John the Ripper が理解できる形式でパスワードハッシュが記述されます。一般的な形式は以下のようになります。

USERNAME:$RACF$*userid*hash
ANOTHERUSER:$RACF$*another*hashedpassword
  • USERNAME: RACF 上のユーザー ID (ユーザー名)
  • $RACF$: John the Ripper がハッシュの種類を識別するためのプレフィックス
  • *userid*hash: ユーザー ID と実際のパスワードハッシュ(エンコードされている場合もあります)を組み合わせた文字列。アスタリスク (*) が区切り文字として使われることが多いです。

このファイルには、パスワードが設定されているユーザーアカウントの情報が含まれます。パスワードが設定されていない、または無効化されているアカウントの情報は通常含まれません。

💡 RACF のバージョンや設定によっては、ハッシュの形式が異なる場合があります (例: DES, KDFAES など)。racf2john はこれらの違いを認識し、John the Ripper が適切に処理できる形式に変換しようと試みます。

racf2john のオプション解説

racf2john 自体には、通常、多くのコマンドラインオプションは用意されていません。主な機能は、入力ファイルを受け取り、標準出力にハッシュを出力することに特化しています。

もし特定のオプションが存在する場合、John the Ripper のバージョンや racf2john の実装 (Perl スクリプトか Python スクリプトかなど) によって異なる可能性があります。ヘルプオプション (--help など) が実装されていれば、それを試すことで利用可能なオプションを確認できます。

./racf2john --help

しかし、多くの場合、特別なオプションを指定せずとも、基本的な使い方(入力ファイルを与えて出力をリダイレクトする)で十分なことが多いでしょう。

重要なのは、racf2john で生成したハッシュファイルを、後続の John the Ripper によるクラック処理で正しく指定することです。John the Ripper 側で、RACF ハッシュ形式を明示的に指定する必要がある場合があります。

抽出したハッシュを John the Ripper でクラックする 🔨

racf2john でパスワードハッシュを抽出したら、次はそのハッシュファイルを使って John the Ripper によるパスワードクラッキング (監査) を実行します。これにより、脆弱なパスワードが実際に特定されます。

John the Ripper を実行する最も基本的なコマンドは以下の通りです。

/path/to/john/run/john <hash_file>

先ほどの例で作成した racf_hashes.txt を使う場合:

cd /path/to/john/run/
./john racf_hashes.txt

John the Ripper は、ハッシュファイル内の $RACF$ プレフィックスを認識し、自動的に適切なクラッキングモード (racf フォーマット) を選択しようとします。

処理が開始されると、John the Ripper はデフォルトのモード(シングルクラックモード、ワードリストモード、インクリメンタルモードを組み合わせたもの)でパスワードの推測を試みます。

ハッシュ形式が自動で認識されない場合や、特定の形式で処理を強制したい場合は、--format オプションを使用します。

./john --format=racf racf_hashes.txt

RACF のハッシュにはいくつかのバリエーションがあるため、John the Ripper のドキュメントや ./john --list=formats コマンドで利用可能なフォーマット名を確認し、適切なものを指定することが有効な場合があります (例: --format=racf-kdfaes)。

特定の単語リスト (辞書ファイル) を使ってパスワードを推測させたい場合は、--wordlist オプションを使用します。これは、よく使われる単語や、組織に関連する用語などがパスワードに使われていないかを確認するのに効果的です 📚。

./john --wordlist=/path/to/password.lst --format=racf racf_hashes.txt

password.lst の部分には、使用したいワードリストファイルのパスを指定します。John the Ripper にはデフォルトでいくつかのワードリストが含まれていることもありますし、インターネット上で公開されている様々なワードリストを利用することも可能です。

特定の文字種 (数字のみ、英小文字のみ、など) や長さの組み合わせを総当たりで試す場合は、インクリメンタルモードを使用します。--incremental オプションで指定します。

./john --incremental=Digits --format=racf racf_hashes.txt # 数字のみ
./john --incremental=Lower --format=racf racf_hashes.txt # 英小文字のみ

利用可能なモード名は john.conf ファイルで定義されています。このモードは時間がかかる可能性がありますが、単純なパターンを持つパスワードを発見できることがあります。

John the Ripper は、クラックに成功したパスワードを john.pot (デフォルトのポットファイル名) というファイルに記録します。クラックされたパスワードを確認するには、--show オプションを使用します。

./john --show racf_hashes.txt

このコマンドは、racf_hashes.txt に含まれるハッシュのうち、john.pot ファイルに記録されている(つまりクラック済みの)パスワードを表示します。出力形式は通常 USERNAME:PASSWORD:...(他の情報) のようになります。

USERNAME:password123:1000:1000::/home/user:/bin/bash
ANOTHERUSER:secret:1001:1001::/home/another:/bin/sh

2 password hashes cracked, 0 left

この結果から、どのユーザーが推測されやすいパスワードを使用しているかが判明します 😲。

ヒント: John the Ripper の処理は中断・再開が可能です。Ctrl+C で中断しても、再度同じコマンドを実行すれば、前回の続きから処理を再開します (状態は john.rec ファイルに保存されます)。長時間のクラック処理も安心して実行できますね 😊。

実践的なシナリオと注意点

racf2john と John the Ripper を組み合わせることで、単にパスワードをクラックするだけでなく、より広範なセキュリティ監査と改善活動に繋げることができます。

クラック結果を分析することで、現在のパスワードポリシーが有効に機能しているか評価できます。例えば、

  • 単純な単語や短いパスワードが多くクラックされた場合 → より複雑なパスワード(長さ、文字種)を要求するポリシーへの見直しが必要かもしれません 🤔。
  • ユーザー ID と類似したパスワードが多く見つかった場合 → そのようなパスワードを禁止する設定が RACF で有効になっているか確認が必要です。
  • 特定の部署や役割のユーザーに脆弱なパスワードが集中している場合 → そのグループに対するセキュリティ教育や注意喚起が必要かもしれません 📣。

定期的にこの監査を実施し、結果をフィードバックすることで、パスワードポリシーの実効性を高めることができます。

パスワード監査は一度実施して終わりではありません。新しいユーザーの追加、パスワードの変更などにより、状況は常に変化します。四半期に一度、半年に一度など、定期的に racf2john と John the Ripper を用いた監査を実施し、継続的にパスワードの強度を監視することが重要です 📅。

監査結果は記録し、前回からの変化や傾向を把握することで、より効果的な対策を計画できます。

繰り返しになりますが、IRRDBU00 のアンロードデータは極めて機密性の高い情報です。

  • アクセス制御: アンロードデータの生成、転送、保管、そして racf2john や John the Ripper を実行する環境へのアクセスは、必要最小限の権限を持つ担当者に限定してください 👤。
  • データ保管: 監査が終了したら、アンロードデータファイル、racf2john の出力ファイル (ハッシュファイル)、John the Ripper のポットファイル (john.pot) は、不要になったら速やかに安全な方法で削除してください 🗑️。これらのファイルが不正にアクセスされると、パスワード情報が漏洩するリスクがあります。
  • 実行環境: racf2john や John the Ripper を実行するマシン自体も、適切なセキュリティ対策 (OS のパッチ適用、アクセス制御、マルウェア対策など) が施されている必要があります。
  • 転送: メインフレームから監査用マシンへのデータ転送は、必ず暗号化された経路 (SFTP, SCP など) を使用してください 🛡️。

この種のパスワード監査ツールを使用する行為自体が、組織のセキュリティポリシーや情報管理規定に準拠している必要があります。必ず、システムオーナーやセキュリティ部門からの正式な承認と、適切な権限を得た上で実施してください。許可なくこれらのツールを使用することは、内部不正とみなされる可能性があります。

まとめ

racf2john は、John the Ripper スイートの強力なユーティリティであり、IBM メインフレームの RACF 環境におけるパスワードセキュリティ監査に不可欠なツールです。IRRDBU00 でアンロードした RACF データベースからパスワードハッシュを抽出し、John the Ripper で解析可能な形式に変換することで、システム管理者は組織内で使用されているパスワードの強度を評価し、潜在的な脆弱性を特定できます。

この記事で解説した手順に従い、racf2john と John the Ripper を適切に使用することで、以下のようなメリットが期待できます。

  • 脆弱なパスワードを使用しているアカウントの特定 ✅
  • パスワードポリシーの有効性の評価と改善点の発見 ✅
  • メインフレーム環境全体のセキュリティレベルの向上 ✅
  • コンプライアンス要件への対応支援 ✅

ただし、これらのツールが扱うデータの機密性は非常に高いため、その取り扱いには細心の注意が必要です。適切な権限、厳格なアクセス管理、安全なデータ保管・削除を徹底し、組織のセキュリティポリシーに従って運用することが絶対条件となります。

racf2john を活用した定期的なパスワード監査は、メインフレーム環境を保護するための重要なプロアクティブなセキュリティ対策です。ぜひ、このツールを理解し、責任ある方法で活用して、組織の貴重な情報資産を守りましょう 💪🛡️。

参考情報

より詳細な情報については、以下の公式リソースをご参照ください。

  • John the Ripper official website: https://www.openwall.com/john/
  • John the Ripper Community Wiki (使い方やフォーマットに関する情報): https://openwall.info/wiki/john/
  • John the Ripper GitHub Repository (ソースコード、最新情報): https://github.com/openwall/john-jumbo
  • IBM Documentation (RACF, IRRDBU00 に関する情報): IBM の公式ドキュメントサイトで関連情報を検索してください (URL はバージョン等により変動するため、直接のリンクは控えます)。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です