TryHackMe(THM):Hydra

目次

この記事は、DeepL翻訳を利用して和訳しています。

www.deepl.com

Task 1  Hydra Introduction

サイト内の英文をDeepLで訳した内容を要約すると、以下のようになります。

Hydraはブルートフォース方式のオンラインパスワードクラッキングプログラムで、システムのログインパスワードを素早くハッキングするツールです。

HydraはSSH、Web Application Form、FTPSNMPなどのいろいろなプロトコルの認証サービスに対してパスワードリストを使ってブルートフォース攻撃でパスワードを解析することができます。

 

Hydraの各プロトコルのオプションの詳細については、公式のKali Hydraツールページをお読みください:https://en.kali.tools/?p=220

 

Task 2  Using Hydra

 Hydraに渡すオプションは、どのサービス(プロトコル)を攻撃するかによって異なります。例えば、ユーザー名をuser、パスワードリストをpasslist.txtとして、FTPブルートフォース攻撃したい場合、次のようなコマンドを使用します。

hydra -l user -P passlist.txt ftp://<$IP>

 

今回のデプロイ機では、SSHとWebフォーム(POST方式)でHydraを使うためのコマンドを紹介します。

SSH

hydra -l <username> -P <full path to pass> <$IP> -t 4 ssh

 

OPTION DESCRIPTION
-l is for the username
-P Use a list of passwords
-t specifies the number of threads to use

Hydra を使用して Web フォームをブルートフォースすることもできますが、通常は GET または POST メソッドが使用されているので、リクエストの種類を確認する必要があります。ブラウザのネットワークタブ(開発者ツール)を使ってリクエストタイプを確認したり、ソースコードを見たりすることができます。

 

以下は、POSTログインフォームにブルートフォースをかけるHydraコマンドの例です。

hydra -l <username> -P <wordlist> <$IP> http-post-form "/:username=^USER^&password=^PASS^:F=incorrect" -V

 

OPTION DESCRIPTION
-l Single user name
-P indicates use the following password list
http-post-form indicates the type of form (post)
/login url the login page URL
:username the form field where the username is entered
^USER^ tells Hydra to use the username
password the form field where the password is entered
^PASS^ tells Hydra to use the password list supplied earlier
Login indicates to Hydra the Login failed message
Login failed is the login failure message that the form returns
F=incorrent If this word appears on the page, its incorrent
-V verborse output for every attempt

 

ここから問題を解いていきます。

Use Hydra to bruteforce molly's web password. What is flag 1?

Hydraを使ってmollyのウェブパスワードをブルートフォースする。フラグ1とは?

まずnmapを実行

# nmap -sV -sC <$IP>

f:id:akebono-haze:20210504095512p:plain

80番ポートと22番ポートが解放されていることが確認できます。

問題文にユーザ名(molly)が指定されているので、上の説明文にあるログインフォームにブルートフォースをかけるHydraコマンドを実行します。

hydra -l molly -P <wordlist> <$IP> http-post-form "/login:username=^USER^&password=^PASS^:F=incorrect" -V

 

f:id:akebono-haze:20210504113024p:plain

何度か説明にあった構文でパスワードファイルを最後まで実行しましたが解析できませんでした。

先人の知恵を拝借すると、構文にモレ?があるのか

「/username=」の部分を「/login:username=」に変更すると解析できました。

f:id:akebono-haze:20210504113537p:plain

80番ポートが解放されているのでブラウザでアクセスしてみます。

f:id:akebono-haze:20210504113755p:plain

ログイン画面が表示されました。先ほど解析できたパスワードを用いてログインしてみます。

ログインが成功して画面遷移されたらフラグが表示されました。

f:id:akebono-haze:20210504113951p:plain

 

Use Hydra to bruteforce molly's SSH password. What is flag 2?

Hydraを使ってmollyのSSHパスワードをbruteforceする。フラグ2とは?

こちらもhydoraを用いてパスワードを解析します。

f:id:akebono-haze:20210504114325p:plain

パスワードが解析できました。

sshでログインします。

 lsコマンドでディレクトリ内を確認すると、flag2.txtが見つかりました。

catコマンドで中身を確認します。

f:id:akebono-haze:20210504114456p:plain

完了!

今回は構文を間違えたのでかなり時間がかかりました。