駆け出しセキュリティエンジニアとして、すごい初歩的なところから取り組んだことをメモしていきます!
今日はBrute forceです!
概要
IDとパスワードの総当たり攻撃(Brute force、ブルートフォース)をすることで、アカウントを持っていないWebサイトにログインを試みます。
対象のWebサイトはあらかじめ脆弱性をもった状態で作成されているDVWAを使い、Burp suiteを使って攻撃していきます。
利用ツール
- ホストOS:Windows11
- ハイパーバイザー:Virtual box 7.0.18
- ゲストOS:Kali Linux 2024.2
- ペネトレーションテストなどのサイバーセキュリティに関するツールが事前にインストールされているLinux
- Damn Vulnerable Web Application(DVWA)
- 意図的に脆弱性が含まれているWebサイトで、どのようにWebサイトが攻撃されるかを学ぶことができる
- 脆弱性の強弱を変更することも可能(今回は一番簡単なモードを選択)
- Burp suite v2024.5.5
- 今回はプロキシとして利用して、Webサイトにアクセスする際にやりとりするデータの中身を確認します。
- プロキシとは、クライアント(=Webブラウザ≒パソコン)がWebサーバに情報(=Webページ)を取りに行く際に代理で取りにいってくれるサーバーです。クライアントがどんな情報を送っているのか(取りに行っているのか)を把握しています。
準備
- Kali LinuxのローカルでDVWAを立ち上げ
-
http://localhost/DVWA/
を開いて、ログインする - DVWA Securityタブを選択し、SecurityレベルをLowにする
- Brute forceタブを選択
攻撃
試しにUsernameとPasswordを入力して挙動を確認してから、Burp suite を用いてBrute force攻撃をしかけてログイン情報を奪取していきます!
試し打ち
まずはUsernameとPasswordにa
を入れてログインしようとしてみます。
そうすると、下図のエラーメッセージが表示され、ログインに失敗したことがわかります(当たり前といえば当たり前です…)
また、URLは以下に変化しています
http://localhost/DVWA/vulnerabilities/brute/?username=a&password=a&Login=Login#
つまり、username=a&password=a
のところをうまく変化させるだけで、ログインの試行が可能なことがわかります。
利用するUsernameリストとPasswordリスト
事前にこれら2つのリストを作成しておきます。
以下のユーザーリストとパスワードリストを利用しようと思います
(Username=admin, Password=passwordでログインできてしまうので、このぐらいで大丈夫です…)
Usernameリスト
root
sys
msfadmin
admin
user
service
postgres
tomcat
Passwordリスト
user
password
12345678
msfadmin
root
guest
batman
asdfasdf
tomcat
Burp suiteで攻撃
ここからBurp suite を使って、IDとパスワードを奪取していきたいと思います。
起動
左上のKali Linuxのアイコンを選択し、Burp
と入力
こんな感じの画面になれば起動完了。よく一番右のタブのLearn
の画面になっていることが多いです。
プロキシの設定
- Proxy タブを選択
- Proxy Setting を選択
- Tools → Proxy になっていることを確認
- Proxy Listenersで
Edit
を選択し、Interfaceが127.0.0.1:8080
に変更
今回はlocalhostで起動しているDVWAのWebサイトのプロキシになるように設定するので、IPアドレスは127.0.0.1
で固定ですが、Portは自由に設定可能です。
動作確認
Open browserを選択して、Webブラウザが起動させます。
起動したブラウザでhttp://localhost/DVWA/index.php
を検索すると、ログイン画面がでてくるので、ログインします。
- (右)Burp suiteの画面でIntercept is off をクリックしてIntercept is on にする
- (左)DVDAのBrute Forceタブを選択
- (左)Usernameにtest_user、Passwordにtest_passを入れてLoginをクリック
そうするとHTTPリクエストがBurp suiteの方に表示されます。
ブラウザの方はBurp suite(プロキシ)の方で、通信が止まっているので、画面の変化はないです。
攻撃を実施
先ほどのリクエストのどこかで右クリックして、Send to Intruder
を選択
Intruderタブに移って、Positionsを選択して、以下二つの設定をする
- Attack typeを
Cluster bomb
に設定。この設定では複数のパラメータのリストのすべての掛け合わせをテストすることができる - 変数になる
test_user
,test_pass
を選択して、右側のAdd$
を選択することで、$test_user$
,$test_pass$
となり、変数として扱うことができる(画像はtest_passを選択している状態です。この後Add$を押します)
Payloads
に移り、Payload set
を1
に設定する。これは先ほど選んだ変数のリストになり、先に現れるUsernameの変数が1
と対応しています。
Payload settings[Simple list]
に事前に決めていたユーザーリストを入力し、Payload set
を2に変更して、パスワードリストも入力します。
Settings
でStore requeestsとStore responsesにチェックが入っていることを確認できたら、Start attackをクリックする。
「無料版だと制限があります」という内容の注意がでるので、OKを選択
そうするとログインの試行結果が得られます。下図の赤枠のUsernameとPasswordの組では得られた応答の長さを表すLengthが異なっており、このIDとパスワードの組がログインに成功したと思われます。
確認するためには、ProxyタブのIntercept is on をクリックし、Intercept is offにしてから、DVWAのWeb画面でログインをしてみるとわかります。
最後に
今回はBurp suite を使って、Brute forceをしてみました。
Hydraでも同じようなことができるのですが、Cookieの設定や構文を理解することが難しいといったことから少しハードルはあります…
その点、GUIで扱えるBurp suite は使い勝手がよいと思います。
参考