kali linux

【悪用厳禁】ブルートフォース攻撃とは?攻撃方法と対策を解説!

こんにちは、インフラエンジニアのryuです。

今回の記事は、ブルートフォース攻撃とは何かを解説していきます。 ブルートフォース攻撃とはパスワードを総当たりで試してパスワードを奪取する手法です。kali linuxを使用して攻撃方法の解説と対策方法を解説していきます。

※ブルートフォース攻撃は自分の環境で行ってください。他人のサーバーへの攻撃は絶対に行わないようにしてください。

ブルートフォース攻撃とは?

ブルートフォース攻撃とは、総当たり攻撃のことです。

総当たり攻撃とは、暗号暗証番号などで、理論的にありうるパターン全てを入力し解読する暗号解読法。例としては、自転車のチェーンロックやトランクダイヤル錠を、全ての番号の組み合わせ(4桁なら0000から9999まで)を片っ端から試す方法と同じで、この「片っ端から」で、いずれ正解に行き着こうというものである。

(wikipediaより)

つまり、パスワードを総当たりで試し、パスワードを解析する攻撃方法です。

kali linuxでブルートフォース攻撃してみる

では、ブルートフォース攻撃をやってみましょう。

準備:環境構築

まず、環境の構築を行います。攻撃用のサーバーとしてkali linuxを準備しましょう。インストール方法はこちらの記事を参考にしてください。

次に、攻撃されるサーバーの準備をします。linuxサーバーでWebサーバーを構築して、Basic認証の設定を行います。Basic認証のやり方は今回は割愛します。Basic認証で使用するユーザは”user”でパスワードも”user”です。

basic認証についてもこちらの記事で解説しています。参考にしてください。

kali linuxの”hydra”を使用して攻撃する

“hydra”とは、パスワード攻撃をするためのツールです。kali linuxにデフォルトでインストールされています。web以外にも、sshやftpへの攻撃が可能です。

まず、総当たり攻撃で使うパスワードを作成します。”crunch”というコマンドを使うと簡単に作成できます。以下のコマンドを入力してください。

crunch 4 4 -o password.txt

crunchコマンドを使うことで、4文字の”aaaa”から”zzzz”までのパスワードを自動生成してくれます。以下のようなファイルが作成されます。

パスワードファイル作成

次に”hydra”コマンドを入力して、このパスワードファイルを使ってブルートフォース攻撃を行います。

hydra -l user -P password.txt XX.XX.XX.XX http-get

-l で認証するユーザを指定します。

-Pはパスワードファイルを指定します。

XX.XX.XX.XXはwebサーバのIPアドレスを指定します。

http-getはプロトコルの指定です。ftpの場合は”ftp”、sshの場合は”ssh”と指定します。

実行すると、以下のようになります。パスワードがuserと表示されました。

ブルートフォース攻撃実行

ブルートフォース攻撃の対策

次にブルートフォース攻撃の対策を解説します。対策は以下のようなものがあります。

  • パスワードを長く複雑なものにする
  • 多要素認証を導入する
  • パスワードの試行回数を制限する
  • ログの監視

パスワードを長く複雑なものにする

総当たり攻撃は、パスワードファイルのものを全て試します。そのため、時間がかかります。今回、試しで攻撃した「user」という4文字のパスワードですら、1時間くらいかかりました。パスワードの文字を長く、英語大文字小文字数字記号を含めたパスワードにすれば、パスワード解析に膨大な時間がかかります。

多要素認証を導入する

多要素認証とは、パスワードと他の要素を使って認証をするものです。パスワード+生体認証など、詳しくはこちらの記事で解説しています。

パスワードの試行回数を制限する

パスワードの試行回数を制限します。そうすることで、パスワード総攻撃を防げます。例えば、3回パスワードを間違えたらアカウントをロックするなど。銀行のキャッシュカードのような感じです。

ログの監視

パスワード総攻撃を行うと、ログに大量の認証エラーのログが表示されます。普段よりログの監視を行いましょう。そして、不審なログが大量に出た場合は、通知を出し未然に防ぐようにしましょう。

さいごに

ブルートフォース攻撃の攻撃方法と対策方法を解説しました。攻撃方法を理解すると、対策も考えやすいです。kali linuxには攻撃用ツールが多く入っているので、ぜひ使ってみてください。

About me
大手メーカのIT部門→上場ベンチャーでインフラエンジニアやってます。エンジニア歴は8年目。 サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。 AI、ARも勉強中です! youtubeでも技術ネタを発信していきます。↓のアイコンよりご覧ください!