hydraはオンラインのパスワードクラックツールです。
前回はsshの話でしたが、今回はそのssh接続時のパスワードをHydraでクラックする話です。
左のラズパイ5に攻撃者役を、右のラズパイ4Bに被害者役を担ってもらいます。
ssh接続を行うためのパスワードを(本当は知っているのだけど知らないフリして)クラックします。
他人の管理下のサーバーを攻撃することは犯罪行為となります。くれぐれも自分の管理下サーバーで行いましょう。
Offline AttackとOnline Attack
” John the ripper ” などのOffline Attackツールは、「鍵(パスワードハッシュ)を手元に入手してきて、手持ちの鍵束と比較しながら正しい鍵を見つける。」というイメージです。
これに対して、 ” hydra ” などのOnline Attackツールは、「実際に相手の家のドアまで行って鍵穴に鍵の候補を片っ端から差し込んでみて試す」ことを、鍵が開くまで延々と繰り返すイメージです。
辞書ファイルの設定
まずは準備としてパスワード候補の単語を集めた辞書ファイルを用意します(これが鍵束に相当します)。
この辞書ファイルにはいつも通り ” rockyou.txt ” を用意します。(入手方法はここを参照)
さてこの ” rockyou.txt ” には1434万語以上のパスワード候補文字列があります。
が、残念ながらその中には当たりパスワードはありません。
当たりパスワードを知っている自分が言うのだから間違いありません。
当たりパスワードの挿入
そこで ” rockyou.txt ” ファイルを編集して、その100番目に当たりパスワードを挿入しておくことにします。
こんな感じ、 ” j ” から始まる9文字の文字列(当たりパスワード)が100番目に挿入されています。このファイルを ” rockyou100.txt ” という別名で保存しておきます。
これで100回目の試行で必ずパスワード破りが出来る辞書ファイルが完成しました。
辞書の検証
” grep ” コマンドで当たりパスワードを探すと、 ” rockyou.txt ” ファイル中にはありませんが、 ” rockyou100.txt ” ファイル中には見つかります。
hydraによるパスワードクラック
hydraの構文
まずは、コマンドラインから直接実行する方法。
hydra -l ユーザ名 -P パスワード辞書ファイル名 サービス名://ターゲットホスト名:ポート番号
又は、
hydra -l ユーザ名 -P パスワード辞書ファイル ターゲットホスト名 サービス名
ポート番号はデフォルトの22番であれば省略可。
デフォルトとは違う場合は ” -s ” オプションでポート番号指定します。
最低限必要な設定は、ユーザ名(ログインID)、パスワード(の候補ファイル)、ターゲットホスト名(又はIPアドレス)、サービス名(sshなど)の4項目です。
設定項目 | オプション | 設定値 |
ユーザ名 | -l -L | 指定値 ファイル |
パスワード | -p -P | 指定値 ファイル |
ターゲットホスト名 又はIPアドレス | なし -M | 指定値 ファイル |
サービス名 | なし | ssh |
ポート番号 | -s | 22:デフォルトの場合は不要 |
hydraの実行
下の例では上段の例に倣った構文にしています。
hydra -l kali -P rockyou100.txt ssh://192.168.11.21
実行した結果。
下から7行目、水色の文字で当たりパスワードが表示されています。
この結果が出るまで、78秒かかりました。
78秒の間に100個のパスワードを試行したことになります。
100語で78秒かかるということは、例えば1434万語では約1118万秒(=約130日)かかるということになります。
もし当たりパスワードを入れていなかっとしたら、130日後に実行結果が出て、パスワード破りが徒労に終わったことが判明したことでしょう。
Hydraの起動
左上メニューから、05-PasswordAttacksにhydraがありますので、ここから起動することも出来ます。
起動すると、ウィザード形式で設定項目を丁寧に聞いてきてくれます。(versionは9.5です)
まずはヘルプ画面の後、サービスの種類から聞いてきます。
サービスの種類(ssh)、ターゲット(192.168.11.21)、ユーザー名(kali)、辞書ファイル(rockyou100.txt)、(次のオプションはスキップ)、ポート番号(22)を順次入力した所です。
あれこれ確認を求められるけど、スキップして最後に ” y ” で実行します。
実行すると同じ結果が出ます。解析にかかった時間は同じ78秒でした。
この方法は設定が少し冗長で面倒な感じもします。
Hydra Graphical (xhydra)
” xHydra ” は ” hydra ” のGUI版のツールでありこれを使用することも出来ます。
Kali ー 05-PasswordAttacks ー Online Attacks内にあります。
起動した最初の画面です。
IPアドレスとポート番号を入力。以下順次、右隣のタブを開けていきます。
ユーザー名と辞書ファイルを設定します。
同時にいくつ接続するかなど。相手サーバーの設定によっては調節が必要です。
デフォルトでは一度に16人で並列して鍵を開けに行きます。コマンドラインでは ” -t ” オプションで指定します。
ここはあまり弄らなくて良さそうです。
最後に左下の ” Start ” をクリックして実行開始します。
下から7行目、パスワードを当てました。(当たり前だけど)
かかった時間は前2者と同じ78秒でした。
まとめ
今回は簡素化のためパスワードのみ多数を用意して、他要素は1つに固定しました。しかし実際はユーザー名も不明である為に多数の候補から選んだり、アタック対象のホストも複数だったりします。その場合、試行回数も乗算となり膨大な数になります。
また相手サーバーがありますので、相手側のサーバー設定によっては、相手から弾かれない程度の同時接続数・接続/試行間隔・最大試行回数を調節する必要も実際には生じます。
次回は、今回の攻撃経過を守備側(sshサーバー側)から見てみます。
コメント