ポートスキャンツールnmapについて

#ポートスキャンツールnmapの使い方
ここではポートスキャンツールnmapのmacOSでのインストールの方法、基礎的な使い方について書いていこうと思う
##1 ダウンロード&インストールの方法
1. まずはhttps://nmap.org/download.html にアクセス。
2. そしてnmap-7.31.tar.bz2をダウンロード
3. そしてターミナルを開きダウンロードしたファイルがあるディレクトリに行き、書いてあるこのコマンドを打ち込む。バージョンに応じて少し変えてください。

```
$bzip2 -cd nmap-7.31.tar.bz2 | tar xvf -
$cd nmap-7.31
$./configure
$make
$su root
$make install
```
 これでインストールは完了
コマンドを打ったあと色々と出てくるがパスワードが要求される時が来るのでその時は素直に打ってください。

追記：homebrewが入っていたらこれでできます。
```
$brew install nmap
```

##2 nmapの基本的な使い方
###用途
このツールはサーバーのどのポートが開いているかをスキャンするセキュリティーツールです。　そして便利なことにステルススキャンと呼ばれる、バレない（ログが残らない）スキャンや、囮を使ってばれないようにスキャンする、OSや動いているサービスを特定するなどのポートスキャンだけでないさまざまな機能があります。これらを使えば悪用（攻撃）もできるのですが法に触れるので絶対にしないでください⭐️
###使い方
基本的には
```
nmap スキャンタイプ　オプション　ターゲットのIPアドレス
```
です。
単純にポートの状態を取得するだけならば
```
nmap ターゲットのIPアドレス
```
でできます 。

それではこれから詳しいオプションなどについての解説、といきたいのですが自分もすべて把握しているわけではないのでよく使うオプションだけ。

-sS
これはステルススキャンのオプションです。これをつけて実行することで全く対策をしていないPCにはロギングされなくなります。ただし、ロギングツールなどがターゲットにインストールされていたらバレるので万能ではありません。
これを実行する場合はルート権限が必要になります。

-Pn
nmapは最初にpingを実行するのですがpingが帰ってこなかったらスキャンを実行してくれません。そんなときにこのオプションをつけるとpingを実行しないですぐにスキャンを実行してくれます。

-O
これはターゲットのOSを特定してくれるオプションです。空いているポートがいくつかあると結構当たります。

-A
これが一番良く使うオプションですOS検出、バージョン検出、スクリプトスキャン、およびトレースルートを全てこれだけで行ってくれます。これをつけておけばだいたい大丈夫です。

###試しに実行してみる

では音楽を流すために使っているラズパイにやってみたいと思います。

```
$nmap 192.168.1.9
Starting Nmap 7.70 ( https://nmap.org ) at 2018-05-28 15:28 JST
Nmap scan report for 192.168.1.9
Host is up (0.0067s latency).
Not shown: 990 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
111/tcp   open  rpcbind
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
3000/tcp  open  ppp
3001/tcp  open  nessus
3005/tcp  open  deslogin
5000/tcp  open  upnp
49152/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
```

開いているポートの情報が見れましたね。それでは次に-Aオプションをつけて実行してみたいと思います。

```
$nmap -A 192.168.1.9                                                                                                                                                                                                    master [f71743b] deleted modified untracked
Starting Nmap 7.70 ( https://nmap.org ) at 2018-05-28 15:30 JST
Nmap scan report for 192.168.1.9
Host is up (0.012s latency).
Not shown: 990 closed ports
PORT      STATE SERVICE     VERSION
22/tcp    open  ssh         OpenSSH 6.7p1 Raspbian 5+deb8u4 (protocol 2.0)
| ssh-hostkey: 
|   1024 d1:dd:4f:1c:d0:f3:67:32:ac:75:ef:a9:d9:63:fd:21 (DSA)
|   2048 50:20:88:31:c8:71:f0:eb:f3:94:c9:e8:12:fb:c2:ae (RSA)
|_  256 23:59:6d:f1:0c:02:f6:26:cb:c9:e3:c2:3e:85:b4:b4 (ECDSA)
80/tcp    open  http        Node.js Express framework
|_http-cors: GET POST PUT DELETE OPTIONS
|_http-title: Volumio - Audiophile Music Player
111/tcp   open  rpcbind     2-4 (RPC #100000)
| rpcinfo: 
|   program version   port/proto  service
|   100000  2,3,4        111/tcp  rpcbind
|   100000  2,3,4        111/udp  rpcbind
|   100024  1          35889/udp  status
|_  100024  1          43317/tcp  status
139/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp   open  netbios-ssn Samba smbd 4.2.14-Debian (workgroup: WORKGROUP)
3000/tcp  open  http        Node.js Express framework
|_http-cors: GET POST PUT DELETE OPTIONS
|_http-title: Volumio - Audiophile Music Player
3001/tcp  open  http        Node.js Express framework
|_http-title: Error
3005/tcp  open  deslogin?
| fingerprint-strings: 
|   FourOhFourRequest, GetRequest, HTTPOptions: 
|     HTTP/1.1 404 Not Found
|     Date: Mon, 28 May 2018 06:30:17 GMT
|_    Connection: close
5000/tcp  open  rtsp        Apple AirTunes rtspd 105.1
|_rtsp-methods: ANNOUNCE, SETUP, RECORD, PAUSE, FLUSH, TEARDOWN, OPTIONS, GET_PARAMETER, SET_PARAMETER
49152/tcp open  upnp        Portable SDK for UPnP devices 1.6.20.jfd5 (Linux 4.9.80-v7+; UPnP 1.0)
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port3005-TCP:V=7.70%I=7%D=5/28%Time=5B0BA20A%P=x86_64-unknown-linux-gnu
SF:%r(GetRequest,52,"HTTP/1\.1\x20404\x20Not\x20Found\r\nDate:\x20Mon,\x20
SF:28\x20May\x202018\x2006:30:17\x20GMT\r\nConnection:\x20close\r\n\r\n")%
SF:r(HTTPOptions,52,"HTTP/1\.1\x20404\x20Not\x20Found\r\nDate:\x20Mon,\x20
SF:28\x20May\x202018\x2006:30:17\x20GMT\r\nConnection:\x20close\r\n\r\n")%
SF:r(FourOhFourRequest,52,"HTTP/1\.1\x20404\x20Not\x20Found\r\nDate:\x20Mo
SF:n,\x2028\x20May\x202018\x2006:30:17\x20GMT\r\nConnection:\x20close\r\n\
SF:r\n");
Service Info: Host: VOLUMIO; OS: Linux; CPE: cpe:/o:linux:linux_kernel, cpe:/o:linux:linux_kernel:4.9.80-v7%2B

Host script results:
|_clock-skew: mean: -17s, deviation: 0s, median: -17s
|_nbstat: NetBIOS name: VOLUMIO, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb-os-discovery: 
|   OS: Windows 6.1 (Samba 4.2.14-Debian)
|   Computer name: localhost
|   NetBIOS computer name: VOLUMIO\x00
|   Domain name: \x00
|   FQDN: localhost
|_  System time: 2018-05-28T06:30:23+00:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2018-05-28 15:30:23
|_  start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 19.37 seconds
```

こんな感じでちゃんと情報が取得できてますね！




##最後に
nmapは本当に多機能なポートスキャンツールです。この記事ではnmapの機能を一割も紹介できていません。しかしこの記事で少しでもnmapに興味を持っていただけたら幸いです。
man nmapを実行することで詳しいオプションが見れるので(英語ですが）気になった方は見てみてください。
あと参考にしたサイトがものすごくしっかり解説してくれているので深く知りたいと思った方はそちらもぜひ。

##参考
http://www.yk.rim.or.jp/~shikap/security/use_nmap.html