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)変換を使うか?
例:
Taro1995dogcompany
などを入れると、CUPPは以下のような候補を組み合わせて生成します:
taro1995dog123company2024-
T4r0(leet変換) -
taro!1995
…などなど
最後に 重複を削除して、1つのワードリストファイルにまとめてくれます。
4.2 1337(Leet)モードとは?
Leet(リート)とは、文字を数字に置き換える表記のこと:
- a → 4
- i → 1
- e → 3
- o → 0
- s → 5
- t → 7
例:
-
password→p4ssw0rd -
taro→t4r0
「ちょっと賢いつもりで変換したパスワード」を丸裸にするための機能です。
正直、今でもめちゃくちゃヒット率高いです……。
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.txtalectodb-passwords.txt
を自動生成してくれます。
いわゆる「デフォルト認証情報・ありがちパスワード集」の即席セットです。
7. 実戦での使いどころ(Red Team視点)
CUPPが刺さるのはこんな場面:
- OSINT で人物情報がある程度集まっている
- 社内アカウント・VPN・Webログインなどの認証テスト
- パスワードスプレー前の高確率候補リスト作成
- 総当たりの前段階の“精密爆撃”
よくある流れは:
- OSINT で情報収集
- CUPP でカスタム辞書生成
- 小さめ・当たりそうな順で試行
- ダメなら crunch 等で形式拡張
**「まずCUPP、ダメならKeyspace」**が王道パターンです。
8. 防御側(Blue Team)が学ぶべきこと
CUPPで簡単に出てくるパスワードは、だいたいこういう特徴があります:
- 名前+誕生日
- ペット名+数字
- 会社名+年号
- 単語+123 / ! / 2024
- leet変換しただけの単語
つまり、防御側は:
- ❌ こういうパスワードを許可しない
- ✅ 流出辞書・類似パターンをブロック
- ✅ MFA を必須化
- ✅ レート制限・ロックアウト・検知を入れる
これだけで CUPP系の攻撃はほぼ無力化できます。
まとめ
CUPP は、
- 「人間のクセ」を突く辞書生成ツール
- 総当たりより現実的で効率がいい
- Red Team では成功率アップ
- Blue Team では“危険なパスワードの教科書”になる
という、攻防どちらにも価値の高いツールです。
パスワードは「複雑そう」じゃなくて「予測不能」であるべき。
CUPPは、その幻想を容赦なく粉砕してくれます。