1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CUPP - 人間の「ありがち」を突くパスワード辞書生成ツール

1
Posted at

1. CUPP とは何か?

CUPP(Common User Passwords Profiler) は、
ターゲットに関する情報(名前、誕生日、ニックネーム、ペット名、会社名など)をもとに、人間が作りがちなパスワード候補のワードリストを自動生成するツールです。

単純な「総当たり(bruteforce)」ではなく、

「人はこういうパスワードを付けがち」

という心理と習慣に寄せた辞書を作れるのが最大の特徴です。

Red Team のパスワード攻撃効率を上げるのはもちろん、
Blue Team 側が「どんなパスワードが危険か」を理解する教材としても優秀です。


2. 何がすごいのか?(Keyspace型との違い)

手法 特徴 弱点
Keyspace(crunch等) 形式通りに全組み合わせ生成 サイズ爆発・時間がかかる
CUPP 人物・組織情報ベースで“ありそう”を優先生成 情報が少ないと精度も下がる

つまり CUPP は、

  • 無駄撃ちを減らせる
  • 現実的なサイズの辞書になりやすい
  • “当たりそうな順”に近い候補を作れる

という、実戦向きのアプローチを取ります。


3. インストール方法

Python 3 が入っている環境で、GitHub からクローンします。

git clone https://github.com/Mebus/cupp.git
cd cupp
python3 cupp.py -h

ヘルプが出れば準備OKです。


4. 基本的な使い方

4.1 対話モード(-i):CUPPの本領

python3 cupp.py -i

cupp.py!                 # Common
      \                     # User
       \   ,__,             # Passwords
        \  (oo)____         # Profiler
           (__)    )\   
              ||--|| *      [ Muris Kurgas | j0rgan@remote-exploit.org ]
                            [ Mebus | https://github.com/Mebus/]


[+] Insert the information about the victim to make a dictionary
[+] If you don't know all the info, just hit enter when asked! ;)

> First Name:

すると、次のような質問が表示されます:

  • 名前 / 苗字 / ニックネーム
  • 誕生日(本人・パートナー・子供)
  • ペットの名前
  • 会社名
  • 関連キーワード
  • 記号を付けるか?
  • 末尾に数字を付けるか?
  • leet(1337)変換を使うか?

例:

  • Taro
  • 1995
  • dog
  • company

などを入れると、CUPPは以下のような候補を組み合わせて生成します:

  • taro1995
  • dog123
  • company2024
  • T4r0(leet変換)
  • taro!1995
    …などなど

最後に 重複を削除して、1つのワードリストファイルにまとめてくれます。


4.2 1337(Leet)モードとは?

Leet(リート)とは、文字を数字に置き換える表記のこと:

  • a → 4
  • i → 1
  • e → 3
  • o → 0
  • s → 5
  • t → 7

例:

  • passwordp4ssw0rd
  • tarot4r0

「ちょっと賢いつもりで変換したパスワード」を丸裸にするための機能です。
正直、今でもめちゃくちゃヒット率高いです……。


5. 既存ワードリストのダウンロード(-l)

python3 cupp.py -l
 cupp.py!                 # Common
      \                     # User
       \   ,__,             # Passwords
        \  (oo)____         # Profiler
           (__)    )\   
              ||--|| *      [ Muris Kurgas | j0rgan@remote-exploit.org ]
                            [ Mebus | https://github.com/Mebus/]

	
	Choose the section you want to download:

     1   Moby            14      french          27      places
     2   afrikaans       15      german          28      polish
     3   american        16      hindi           29      random
     4   aussie          17      hungarian       30      religion
     5   chinese         18      italian         31      russian
     6   computer        19      japanese        32      science
     7   croatian        20      latin           33      spanish
     8   czech           21      literature      34      swahili
     9   danish          22      movieTV         35      swedish
    10   databases       23      music           36      turkish
    11   dictionaries    24      names           37      yiddish
    12   dutch           25      net             38      exit program
    13   finnish         26      norwegian       

	
	Files will be downloaded from http://ftp.funet.fi/pub/unix/security/passwd/crack/dictionaries/ repository
	
	Tip: After downloading wordlist, you can improve it with -w option
Enter number: 

言語・カテゴリ別の辞書を選んでダウンロードできます:

  • names
  • japanese
  • passwords
  • movies
  • music
  • places
  • などなど

既存辞書をベースに、さらに -w オプションで加工することも可能です。


6. Alecto データベースの利用(-a)

python3 cupp.py -a

これは、有名な Alecto DB(流出・収集されたユーザー名/パスワード集) 由来のデータから、

  • alectodb-usernames.txt
  • alectodb-passwords.txt

を自動生成してくれます。

いわゆる「デフォルト認証情報・ありがちパスワード集」の即席セットです。


7. 実戦での使いどころ(Red Team視点)

CUPPが刺さるのはこんな場面:

  • OSINT で人物情報がある程度集まっている
  • 社内アカウント・VPN・Webログインなどの認証テスト
  • パスワードスプレー前の高確率候補リスト作成
  • 総当たりの前段階の“精密爆撃”

よくある流れは:

  1. OSINT で情報収集
  2. CUPP でカスタム辞書生成
  3. 小さめ・当たりそうな順で試行
  4. ダメなら crunch 等で形式拡張

**「まずCUPP、ダメならKeyspace」**が王道パターンです。


8. 防御側(Blue Team)が学ぶべきこと

CUPPで簡単に出てくるパスワードは、だいたいこういう特徴があります:

  • 名前+誕生日
  • ペット名+数字
  • 会社名+年号
  • 単語+123 / ! / 2024
  • leet変換しただけの単語

つまり、防御側は:

  • ❌ こういうパスワードを許可しない
  • ✅ 流出辞書・類似パターンをブロック
  • ✅ MFA を必須化
  • ✅ レート制限・ロックアウト・検知を入れる

これだけで CUPP系の攻撃はほぼ無力化できます。


まとめ

CUPP は、

  • 「人間のクセ」を突く辞書生成ツール
  • 総当たりより現実的で効率がいい
  • Red Team では成功率アップ
  • Blue Team では“危険なパスワードの教科書”になる

という、攻防どちらにも価値の高いツールです。

パスワードは「複雑そう」じゃなくて「予測不能」であるべき。
CUPPは、その幻想を容赦なく粉砕してくれます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?