Macで利用できる脆弱性診断・検査ツール　〜導入＆簡易編〜

脆弱性診断を簡易的に実施するってときに、手持ちのMacで簡単に導入して実施できるツールを調べてみました。

- ポートスキャン用に [Nmap](#nmap)
- ミドルウェアの設定確認に[Nikto](#nikto)

## Nmap
ポートスキャン機能が充実している。閉じているつもりで開いているのがポート。
そのチェックに利用できます。配布元：https://nmap.org/

### 導入

```shell-session
$ brew install nmap
```

### 利用
```shell-session
$ nmap '対象ホストIP'
$ nmap 192.168.xxx.xxx

Starting Nmap 7.70 ( https://nmap.org ) at 2018-10-18 17:56 JST
Nmap scan report for 192.168.xxx.xxx
Host is up (0.00059s latency).
Not shown: 968 closed ports, 26 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
110/tcp open  pop3
143/tcp open  imap
443/tcp open  https
993/tcp open  imaps
995/tcp open  pop3s

Nmap done: 1 IP address (1 host up) scanned in 5.35 seconds
```
### 結果の見方
> Starting Nmap 7.70 ( https://nmap.org ) at 2018-10-18 17:56 JST

Nmapのバージョンと実行日時

> Nmap scan report for 192.168.xxx.xxx

スキャン対象

> Not shown: 968 closed ports, 26 filtered ports

閉じられたポート数（968ポート）と、フィルターにかかったポート数（26ポート）

> PORT    STATE SERVICE
> 80/tcp  open  http
> 110/tcp open  pop3
> 143/tcp open  imap
> 443/tcp open  https
> 993/tcp open  imaps
> 995/tcp open  pop3s

開いているポート番号とプロトコル

### ※注意する点
端末上に、ESETなどのセキュリティソフトが入っていると、Email Protection機能やWeb Access Protection機能のため結果が異なることがあります。


## Nikto
公表済みのセキュリティホールを検出できるので、Apacheなどミドルウェアの設定し忘れなどを防ぐことができます。配布元：https://cirt.net/Nikto2

### 導入

```shell-session
$ brew install nikto
```

### 利用
```shell-session
$ nikto -h '対象ドメイン（httpとhttpsは別物）'
$ nikto -h https://hogehoge.com

- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.xxx.xxx
+ Target Hostname:    hogehoge.com
+ Target Port:        443
---------------------------------------------------------------------------
+ SSL Info:        Subject:  /OU=Domain Control Validated/OU=PositiveSSL Wildcard/CN=*.example.com
                   Altnames: *.hogehoge.com, hogehoge.com
                   Ciphers:  ECDHE-RSA-AES256-GCM-SHA384
                   Issuer:   /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
+ Start Time:         2018-10-18 18:10:01 (GMT9)
---------------------------------------------------------------------------
+ Server: Apache
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The site uses SSL and the Strict-Transport-Security HTTP header is not defined.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Server leaks inodes via ETags, header found with file /robots.txt, inode: 2238918, size: 27, mtime: Tue Jan 27 14:05:43 2015
+ Server is using a wildcard certificate: *.hogehoge.com
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE 
```
### 結果の見方

>  Nikto v2.1.6

Niktoのバージョン

>  Target IP:          192.168.xxx.xxx
>  Target Hostname:    hogehoge.com
>  Target Port:        443

対象となったホストのIP、ドメイン、ポート番号

>  SSL Info:        Subject:  /OU=Domain Control Validated/OU=PositiveSSL > Wildcard/CN=*.example.com
>                    Altnames: *.hogehoge.com, hogehoge.com
>                    Ciphers:  ECDHE-RSA-AES256-GCM-SHA384
>                    Issuer:   /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA > Limited/CN=COMODO RSA Domain Validation Secure Server CA

SSLを利用していればSSLの詳細

> Server: Apache
> The anti-clickjacking X-Frame-Options header is not present.
> The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
> The site uses SSL and the Strict-Transport-Security HTTP header is not defined.

1行1行が指摘事項。闇雲に調べて対応しているとアプリケーションの動作へ影響もあるので、動作確認しながら対応を行いましょう。