辞書攻撃に使う元ネタの辞書ファイル

THC-Hydraでアタックを試してみる際、crunchコマンドでリストを作ってブルートフォースも良いのだが、やはり辞書攻撃を試してみるのが常套手段。となると、次に欲しくなるのは辞書ファイル。

お手軽な例では、Linuxのpasswdコマンドが利用しているcracklibのワードリストが良い。

通常、/usr/share/dict/linux.words にあり、40万個ほどのwordが詰まっている。しかしまぁ、これよりもう少しアングラな香りがする辞書が欲しい(よね?)。

ということでここでは、OpenWallが配布している辞書ファイルを紹介する。なお実際にhydraでアタックするとどのくらいの時間がかかるかは、前の記事(Kali Linuxのhydraでブルートフォースを試す - ろば電子が詰まっている)を参照してください

OpenWallとは

OpenWallは有名なパスワードクラッカー "John the Ripper" の開発元であり、そちらのWebサイトから辞書ファイル(単語をひたすら並べただけのテキストファイル)をダウンロードすることができる。辞書ファイルは無料でダウンロードできるが、http://www.openwall.com/wordlists/のWebページによると有償版も販売しており、そちらは40 million entries(4000万個)の単語が載っているそうだ。お値段は$27.95。

しかし辞書攻撃に使うことを考えると、数ばかりたくさんあっても攻撃時間が増えるばかりでしかたが無いので……無料版の小さなサイズがむしろちょうど良かったりする。

ダウンロード

http://download.openwall.net/pub/wordlists/
から無造作にダウンロードできる。

/languages/Japanese/ ディレクト

この中には日本語に即した辞書があり、lower.gzとmixed.gzの2ファイルがある。

lower.gzは小文字で日本語の単語が色々入っており、その単語数は113963個である。また、単語数はすべて8文字以内となっている。ちょっと中身の一部を抜粋してみよう。

goku
gokuaku
gokuakuh
gokuboso
gokubuto
gokuchuu
gokudou
gokugets
gokugetu
gokugoku
gokuhi
gokuhijo
gokuhin
gokuhiri
gokui
gokuin
gokujou
gokujyou
gokukei
gokumi
gokumon
gokumont
gokunets
gokunetu
gokungi
gokuraku
gokuri

gokuakuhなどは、もっと後ろに文字が付くけど8文字で切っているのだろう。またこのファイルには固有名詞も載っている。(nobunagaやieyasu、abasiriやkushiroはある。doraemon は無い。基準がよく分からない)。

mixed.gzは、長音を含む単語が入っている。しかし単語は1444個しかなく、中身もこんな感じであまりパスワードには使われそうにないものが多いのでオマケかな。

no-suri-
no-suues
no-tacch
no-tacti
no-to
noiro-ze
nokuta-n
nomine-t
noripi-
nu-do
nxyoji-
nxyoji-b
nyu-
nyu-feis
nyu-ji-r
nyu-mede
nyu-orin
nyu-ron

おや、"のりピー"があるな。

/passwords/ ディレクト

この中には、lower.gzとpassword.gzが置いてある。

lower.gzは、小文字でよく使われるパスワードが800個ほど列挙されている。この量は適度に小さく、手頃で使いやすい。

もう一つのpassword.gzは、パスワードとしてよく使われる文字列を頻度順に並べてくれている。総数3500個ほどで、また他のファイルが2003年で更新が止まっているのに比べてこのファイルだけは2011年までメンテナンスが続いている。内容はこんな感じ。

#!comment: This list has been compiled by Solar Designer of Openwall Project,
#!comment: http://www.openwall.com/wordlists/
#!comment:
#!comment: This list is based on passwords most commonly seen on a set of Unix
#!comment: systems in mid-1990's, sorted for decreasing number of occurrences
#!comment: (that is, more common passwords are listed first).  It has been
#!comment: revised to also include common website passwords from public lists
#!comment: of "top N passwords" from major community website compromises that
#!comment: occurred in 2006 through 2010.
#!comment:
#!comment: Last update: 2011/11/20 (3546 entries)
123456
12345
password
password1
123456789
12345678
1234567890
abc123
computer
tigger
1234
qwerty
money
carmen
mickey
secret
summer
internet

辞書攻撃の辞書ファイルとしては、この1ファイルだけあれば十分なんじゃないかな。

コメント行の扱い

/passwords配下の辞書ファイルは、先頭数行にコメント行が入っている。

#!comment: Dan Klein's list of common passwords (has lowercase words only).

ひょっとして、先頭にシャープが付くパスワードは、クラッキングツールからもコメント扱いされるのでブルートフォースされにくいのでは? と思ったが、hydraは先頭にシャープがあっても問答無用にパスワードとみなすので意味が無かった。

ただこの、「クラッキングツールからはコメント行扱いされてしまうパスワード」は上手く攻撃を回避できるんじゃないかというアイディア自体は、何かに応用できないかなーと考えている。けどまだ思いつかず。

結論

あまりあれこれ使っても時間かかるだけだし、まずはひとつ、
http://download.openwall.net/pub/wordlists/passwords/password.gz
を利用するのが妥当。

またサーバ管理者は、アカウントのパスワードがこの辞書ファイルに載っていないか、確認した方が良いだろう。ここに載っているということは、それはクラックツールを使う世界中の人たちからアタックされてしまうパスワードである、ということである。