辞書ファイルについて

Kalilinux

ブルート・フォース・アタック ” Brute Force Attack ” (総当たり攻撃)とは、パスワードを破る際に可能な組み合わせを全て試して最終的にパスワードを検出する方法です。

コンピュータは繰り返しの作業に強いためにこの攻撃方法が成立します。

しかしながらその際非常に時間がかかるので時短を図る為に、人間がパスワードとして採用しやすい文字列を予め編集しておいて辞書ファイルにしておき、それに基づいて片っ端からパスワードを試す方法を特に辞書攻撃と呼びます。

今回は辞書攻撃に使われる辞書ファイルの話。

辞書ファイルの場所

kaliでは予め辞書が備え付けてあります。

/usr/share/wordlistsにある ” rockyou.txy.gz ” が解凍前の辞書ファイルです。

wordlists

parrotでも同じ場所に同じものがあります。

wordlists

GUIではここの ” rockyou.txt,gz “をダブルクリックすれば解凍画面が開きます。

rockyou

rockyou.txtを選択して展開ボタンを押します。さらに次の画面では保存先を選択しますと、その場所に解凍したテキストファイルが現れます。

画面左上のkali ー 05 PasswordAttack ー PasswordProfiling&Wordlists ー Wordlistsからもアクセス可能であり、この場合は辞書ファイルの ” rockyou.txt.gz ” を解凍するかと聞いてきます。

辞書ファイルを調べる

解凍された ” rockyou.txt ” ファイルを適当なテキストエディタで開いてみます。

調査その1

(今回はMousepadを使用して、先頭に行番号をつけています。)

最初の10行

rockyou

最初は ” 123456 ” というパスワードから試されるみたいですね、定番の ” password ” は4番目にあります。10番目の ” abc123 ” などもよく使われそうです。

rockyou

50万番目あたりです。 ” john ” から始まる人名みたいです。数字は必ずしも連続していません。

rockyou

100万番目あたり。 ” buda “とは何でしょう。この部分では ” budapest ” (=ハンガリーの首都)しか分かりません。

rockyou

500万番目あたり。 ” novi ” の最初の4文字まで共通です。

rockyou

1000万番目あたり。 ” arisha ” は人名のようですがその後の数字には規則性はありません。

rockyou

最後は1434万4392番でした。つまり辞書には14,344,392通りの文字列があります。これを順にパスワードとして入力した試していく訳です。

いやー、よくこんなもん作るよ。

黒く抜けている部分は文字コードセットの関係で表示できない文字(アラビア文字とか)が入っているものと思われます。

調査その2

次にこの ” rockyou.txt ” をgrepコマンドを使用して調べてみます。

まずは ” ABC123 ” が含まれるもの

非常に沢山あるので、個数を調べてみました。

” -c ” オプションで個数が分かります。

調べると116個ありました。

小文字の ” abc123 ” は795個

大文字小文字混在では957個もあります。( ” -i ” は大文字小文字を区別しないオプション)

次の ” abcd1234 ” を調べると56個、 ” abcde12345 ” は14個あります。

これでも多いので、 ” abcdef23456 ” にすると6個でした。

6個を表示

ちなみに検索語句を ” や ‘ で囲んでも同じ結果になります。(検索文字に記号が入っていればこの表記にします。)

” abcdefg1234567 ” は5個あります。

” abcdefgh12345678 ” でも2個。

” abcdefghi123456789 ” の18文字ともなれば流石に1つもありませんでした。

次にデフォルトパスワード ” kali ” を含む数。非常に沢山あります。

調べると4281もありました。やはりデフォルトのパスワードは変えておいた方が無難ですね。

現在の私のパスワードは存在しませんでした。

ネット上の辞書ファイル

有名なパスワードクラックツールである” John the Ripper ” の開発元の、Open Wallのサイトから、辞書ファイルがダウンロード出来ます。このページの ” all.gz ” がそれです。

また、同じページの ” languagesフォルダ ” から ” japanese フォルダ” に入ると、2つの日本語用ファイルがあります。

” lower.gz ” と ” mixed.gz ” です。

これら3つについても調べてみました。

All.gz

まずはメインの ” all.gz “

all

最初の89行目まではコメント欄です。

all

90行目からパスワード候補の文字列が始ります。やっぱり最初は ” 123456 ” ですね。定番の ” password ” や ” abc123 ” もあります。

all

100万番目あたり。 ” good “から始まる言葉。

all

全部で5,014,958個でした。kali付随の ” rockyou ” に比べて約3分の1の数です。終了までのスピードが3倍速いとも言えるし、当たる確率が3分の1しかないとも言えます。

lower.gz

次にjapaneseの中の ” lower.gz “

lower

最初の10個、” aashite ” とか、確かに日本語で読めます。

lower

合計で113,964個でした。

mixed.gz

最後はjapaneseの中の ” mixed.gz “

mixed

最初の10個。全てハイフン ” – ” が入っています。なので ” mixed ” なのでしょうか。

mixed

合計は1,444個でした。この数でも十分多いのですが、何だか少なく感じてしまいます。

RockYou2021.txt

(2024/5/1 追記) 12.7GBもある巨大な辞書ファイルです。

存在は確認したけど、落としてくる気にならないや。

まとめ

辞書攻撃に使われる辞書の中身とその数を覗いてみました。多いもので1400万です。多ければ多いほど「当たり」を引きやすくなりますが、その分時間もかかります。

設定したパスワードが、人間が思いつきそうもない文字列だったら辞書攻撃は通用しなさそうです。逆に人間にとって覚えやすい(思い出しやすい)文字列は危ないと言えそうです。

実際の攻撃では、複数の辞書ファイルを一つにまとめたり(catコマンド)、文字数を制限して絞り込んだり(例えば正しいパスワードが8文字以上と判明している場合は7文字以下のものは最初から除外しておく:pw-inspectorコマンド)して予め辞書の編集をしておきます。

追加)辞書ファイルを作成するツール: crunchとcewl

辞書ファイルを作成するツールを紹介(2023/10/21追記)

両者ともkali ー 05-PasswordAttacks ー cewl, crunch

crunch

候補の文字を組み合わせて、設定した文字数の文字列集を作成するツール

crunch 最小文字数 最大文字数 候補文字列挙 -o 出力ファイル名

下の例では、『0』『1』『2』『!』の4文字を組み合わせて、最小1文字、最大2文字の文字列集を作成しています。(ファイル名は ” wordlistcrunch2.txt ” と設定しています)

下のような文字列集が出来ています。

cewl

cewlは、意味のある単語を拾ってきて辞書を作るツールです。

適当にwebサイトを設定すると、そのサイトから集めてきます。

cewl -w 出力ファイル名 webサイトURL

辞書を作るのに任意のwebサイトから単語を拾ってくるだなんて何だか安易な気がしますが、そのwebサイトを攻撃する立場に立つと、そのサイトに侵入するパスワードの語句がサイト内にあると考えてサイト内の単語を収集するということでしょう。

つまりこのツールは、狙ったサイトの中にある語句を全部収集して、それを同じサイトのパスワード候補して利用するツールと考えられます。

逆に考えると、サイト内では使っていない語句をそのサイトのパスワードにするのが無難です。

コメント

タイトルとURLをコピーしました