カスタム単語リスト生成ツール「CeWL」
2025年5月2日
セキュリティエンジニアの曽我です。今回のtoolsシリーズ第4回は、パスワードクラッキングの効率を飛躍的に高める 「CeWL」(Custom Word List generator、発音は「cool」)について詳しく解説します。前回紹介した John the Ripperと組み合わせることで、対象組織に特化したパスワードクラッキングが可能になります。
本記事では、CeWLの基本から実践的な活用法まで、コマンド例と出力結果を交えながら解説します。一般的な 辞書攻撃よりも効率的な方法を知りたいセキュリティエンジニアの方々に、ぜひ参考にしていただければと思います。
目次
- CeWLとは
- インストール方法
- 基本的な使い方 3.1. ウェブサイトからの単語収集 3.2. 深度の調整 3.3. 最小単語長の指定
- 高度な使用方法 4.1. メタデータの抽出 4.2. メールアドレスの収集 4.3. 認証が必要なサイトへのアクセス
- 実践的な活用例 5.1. 対象組織特化の辞書作成 5.2. John the Ripperとの連携 5.3. ソーシャルエンジニアリングでの活用
- セキュリティ対策への応用
- まとめ
- 参考資料
1. CeWLとは
CeWL(Custom Word List generator)は、特定のウェブサイトをクロールして、そこに含まれる単語を抽出し、カスタム単語リスト(辞書)を生成するツールです。Rubyで書かれたこのツールは、Robin Wood(DigiNinja)によって開発され、Kali Linuxに標準搭載されています。
CeWLの主な特徴:
- 指定したウェブサイトから単語を収集
- クロールする深さ(リンクをたどる階層)の調整が可能
- 最小・最大単語長のフィルタリング
- メタデータ(著者名、組織名など)の抽出
- メールアドレスの収集
- Basic認証対応サイトへのアクセス
- プロキシサポート
一般的な辞書攻撃では標準の単語リスト(rockyou.txtなど)を使用しますが、CeWLを使うことで対象組織特有の用語やプロジェクト名などを含んだカスタム辞書を作成できます。これにより、パスワードクラッキングの成功率を大幅に向上させることが可能です。
2. インストール方法
Kali Linuxには標準でインストールされていますが、他のディストリビューションへのインストール方法も記載します。
Debian/Ubuntuベースのシステム:
sudo apt update
sudo apt install cewl
Rubyのgemを使用したインストール:
sudo gem install cewl
GitHubからのインストール:
git clone https://github.com/digininja/CeWL.git
cd CeWL
bundle install
インストールが完了したら、以下のコマンドでバージョンとヘルプを確認できます:
cewl -h
出力例:
CeWL 5.5.2 (Grouping) Robin Wood (robin@digi.ninja) (https://digi.ninja/)
Usage: cewl [OPTIONS] ... <url>
OPTIONS:
-h, --help: Show help
-k, --keep: Keep the downloaded file
-d <x>,--depth <x>: Depth to spider to, default 2
-m <x>,--min_word_length <x>: Minimum word length, default 3
-o, --offsite: Let the spider visit other sites
...
3. 基本的な使い方
3.1. ウェブサイトからの単語収集
最も基本的な使用法は、ウェブサイトのURLを指定して単語を収集することです:
cewl https://example.com -w wordlist.txt
このコマンドは、example.comから単語を収集し、wordlist.txtファイルに保存します。デフォルトでは、最小単語長3文字、クロール深度2階層で実行されます。
出力例:
CeWL 5.5.2 (Grouping) Robin Wood (robin@digi.ninja) (https://digi.ninja/)
INFO: Starting CeWL at 2025/06/01 14:23:45
INFO: Parsing webpage https://example.com
INFO: Found 152 words
INFO: Writing words to wordlist.txt
生成された単語リストの内容を確認:
cat wordlist.txt
出力例(一部):
example
domain
internet
assigned
corporation
infrastructure
information
reserved
...
3.2. 深度の調整
クロールする深さ(リンクをたどる階層)を調整するには、-d
オプションを使用します:
cewl https://example.com -d 3 -w wordlist_depth3.txt
深度を増やすと、より多くの単語を収集できますが、処理時間も増加します。
3.3. 最小単語長の指定
最小単語長を指定するには、-m
オプションを使用します:
cewl https://example.com -m 5 -w wordlist_min5.txt
このコマンドは、5文字以上の単語のみを収集します。
複数のオプションを組み合わせることも可能です:
cewl https://example.com -d 3 -m 6 -w wordlist_depth3_min6.txt
4. 高度な使用方法
4.1. メタデータの抽出
ウェブページのメタデータ(著者名、組織名など)を抽出するには、--meta
オプションを使用します:
cewl https://example.com --meta -w wordlist_with_meta.txt
このオプションは、HTMLのmeta要素だけでなく、PDFやMS Officeドキュメントのメタデータも抽出できます。著者名やプロジェクト名などは、パスワードに使われることが多いため、非常に有用な情報源となります。
4.2. メールアドレスの収集
メールアドレスを収集するには、-e
オプションを使用します:
cewl https://example.com -e -w emails.txt
収集されたメールアドレスは、ソーシャルエンジニアリングやさらなる情報収集に役立ちます。
4.3. 認証が必要なサイトへのアクセス
Basic認証が必要なサイトにアクセスするには、-a
オプションを使用します:
cewl https://example.com -a -u username -p password -w wordlist_auth.txt
プロキシを使用する場合は、以下のように指定します:
cewl https://example.com --proxy_host 127.0.0.1 --proxy_port 8080 -w wordlist_proxy.txt
4.4. 出力形式のカスタマイズ
単語の出現回数を含めたリストを生成するには、-c
オプションを使用します:
cewl https://example.com -c -w wordlist_with_count.txt
出力例:
example,23
domain,15
internet,12
information,8
...
出現回数の多い単語は、組織内で重要なキーワードである可能性が高く、パスワードに使われる確率も高いと考えられます。
5. 実践的な活用例
5.1. 対象組織特化の辞書作成
ペネトレーションテストを実施する際、対象組織のウェブサイトをCeWLでクロールして、組織特有の用語を収集します:
cewl https://target-organization.com -d 4 -m 5 --with-numbers -w target_org_dict.txt
組織名、製品名、プロジェクト名などの特有の用語が収集できます。
5.2. John the Ripperとの連携
CeWLで生成した単語リストをJohn the Ripperで使用して、効率的にパスワードをクラックします:
# CeWLで単語リストを生成
cewl https://target-organization.com -d 3 -m 5 -w target_words.txt
# ルール適用のための前処理(オプション)
john --wordlist=target_words.txt --rules --stdout > target_words_with_rules.txt
# 生成した単語リストを使用してパスワードをクラック
john --wordlist=target_words_with_rules.txt hashes.txt
このアプローチは、一般的な辞書を使用するよりも成功率が高いことが多いです。
5.3. ソーシャルエンジニアリングでの活用
CeWLを使用して収集した組織特有の用語やプロジェクト名は、ソーシャルエンジニアリング攻撃の構築にも役立ちます:
# メールアドレスと組織の用語を収集
cewl https://target-organization.com -e -w emails.txt
cewl https://target-organization.com -d 3 -m 5 -w terms.txt
収集した情報を使用して、対象組織の内部者のように見えるフィッシングメールを作成することができます。
6. セキュリティ対策への応用
CeWLは攻撃ツールとして使用できますが、防御側でも活用できます:
-
パスワードポリシーの強化:
- CeWLで自社サイトから単語リストを生成し、それらの単語をパスワードに使用禁止する
- パスワードの複雑さ要件を見直し、単純な単語の組み合わせを防止
-
定期的なパスワード監査:
- CeWLで生成した単語リストを使用して、自社のパスワード強度を定期的にテスト
- 弱いパスワードを使用しているユーザーを特定し、教育を実施
-
情報漏洩の最小化:
- 公開ウェブサイトに掲載する情報を見直し、機密情報や内部用語の露出を最小限に抑える
- メールアドレスの収集を困難にするための対策を実施(画像化、JavaScript保護など)
7. まとめ
CeWLは、カスタム単語リストを生成するための強力なツールです。対象組織特有の用語を収集することで、パスワードクラッキングの効率を大幅に向上させることができます。
前回紹介したJohn the Ripperと組み合わせることで、標準の辞書では発見できない可能性のあるパスワードを解析する能力が高まります。特に、組織特有の用語やプロジェクト名をパスワードに使用するユーザーが多い環境では、非常に効果的です。
CeWLを使用することで、パスワードセキュリティの現実的な評価が可能になり、組織のセキュリティポリシーの改善に役立てることができます。ただし、すべての強力なセキュリティツールと同様に、適切な許可と倫理的な目的のもとで使用することが重要です。
8. 参考資料
- CeWL 公式GitHub リポジトリ
- DigiNinja CeWL ページ
- Kali Linux Tools: CeWL
- OWASP パスワードセキュリティチートシート
- ペネトレーションテスト用辞書作成テクニック
※本記事の内容は、教育目的および正当なセキュリティテストのためのものです。CeWLの使用は、自分が所有または正当な許可を得たシステムとウェブサイトに限定してください。許可なく他者のウェブサイトをクロールすることは、利用規約違反やサーバー負荷増加などの問題を引き起こす可能性があります。必ず適切な許可を得た上で実行してください。