Nmapによるポートスキャン基礎

## はじめに

ハッキングをする際、システムやネットワークの情報を収集するプロセスを「Enumeration」と呼びます。
「Enumeration」では一般的にポートスキャンが最初に行われます。ポートスキャンすることでシステムのどのポートが空いているか、どのようなサービスが実行されているのかを把握できます。ポートスキャンはNmapというツールを使用するのが一般的です。
Nmapは指定したターゲットのポートに様々な方法でアクセスを試み、その結果を返却します。ポートの開閉状態の他、稼働しているサービスやOS情報も取得できます。

この記事では、Nmapの概要、基本的な機能説明および基本的なスキャンの詳細について記載します。

:::note info
本記事で記載しているコマンド例は、[Try Hack Me](https://tryhackme.com/room/furthernmap)で用意されているサーバでの実行結果です。
:::

## 前提知識

以下の技術について事前に把握しておくと、本記事をスムーズに理解できます。

- [TCP](https://www.infraexpert.com/study/tcpip7.html)
- [ポート番号](https://www.infraexpert.com/study/tea5.htm)
- [コントロールフラグ](https://www.infraexpert.com/study/tcpip8.html)
- [3ウェイハンドシェイク](https://www.infraexpert.com/study/tcpip9.html)
- [UDP](https://www.infraexpert.com/study/tcpip12.html)
- [ICMP](https://www.infraexpert.com/study/tcpip4.html)
- [ping](https://www.infraexpert.com/study/tcpip5.html)


## 基本的なスキャン

Nmapには3つの基本的なスキャンがあります。

- TCPスキャン(-sT)
- SYNスキャン(-sS)
- UDPスキャン(-sU)

### TCPスキャン(-sT)

TCPスキャン(-sT)は、SYNフラグをたてたTCPリクエストをポートに送信し、3ウェイハンドシェイクが成立したかどうかでポート開閉を判断するスキャンです。
後述する[SYNスキャン(-sS)](#synスキャン-ss)の場合、ポートにSYNを送信してスキャンは終了しますが、こちらはACKまで送信し、TCPコネクションを確立させます。

NmapはポートにSYNフラグをたてたTCPリクエストをサーバに送信します。サーバはポートが開いていた場合、SYN+ACKをNmap側に返します。この時、Nmapはそのポートが開いていると判断し、ACKをポートに送信して、TCPコネクションを確立させます。

![3ウェイハンドシェイク](https://raw.githubusercontent.com/kenryo012/qiita-content/main/images/Nmapことはじめ/3way_handshake.png)
[出典：https://ja.wikipedia.org/wiki/3ウェイ・ハンドシェイク](ttps://ja.wikipedia.org/wiki/3ウェイ・ハンドシェイク)

■**コマンド実行結果**

出力の `PORT`,`STATE`,`SERVICE` からどのポートが開いているか、また、そのポートでどのようなサービスが実行されているかを確認できます。

コマンド実行結果から、解放されているポート番号とサービスは以下の通りです。

|ポート番号|サービス|
|---|---|
|21/tcp|ftp|
|53/tcp|domain|
|80/tcp|http|
|135/tcp|msrpc|
|3389/tcp|ms-wbt-server|

また、 `Not shown: 995 filtered ports` と記載されている部分は995個のポートがファイアウォールによってフィルタリングされており、ポートが解放されているか、閉じているか判断できないことを表します。（後述）

```bash
root@ip-10-10-236-185:~# nmap -sT 10.10.62.95
Starting Nmap 7.60 ( https://nmap.org ) at 2023-02-23 06:01 GMT
Nmap scan report for ip-10-10-62-95.eu-west-1.compute.internal (10.10.62.95)
Host is up (0.00058s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:95:AF:BB:24:03 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 12.78 seconds
```

#### ポートが閉じていた場合

ポートが閉じていた場合はどのような動作になるでしょうか？
[RFC793](https://www.rfc-editor.org/rfc/rfc793)では次のように記載されています。

>    1. If the connection does not exist (CLOSED) then a reset is sent
    in response to any incoming segment except another reset.  In
    particular, SYNs addressed to a non-existent connection are rejected
    by this means.

つまり、閉じているポートにSYNを送信すると、RSTフラグが立てられたレスポンスが返却されます。
NmapはRSTを受け取ることでポートが閉じられていると判断します。

閉じているポートがある場合、[こちらのサイト](https://blog.katsubemakito.net/linux/portscan)の実行結果 `Not shown: 959 closed ports, 35 filtered ports` のように閉じているポートの数が出力されます。

```bash
$ nmap localhost

Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-29 16:28 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00058s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 959 closed ports, 35 filtered ports

PORT    STATE SERVICE
80/tcp  open  http
110/tcp open  pop3
143/tcp open  imap
631/tcp open  ipp
993/tcp open  imaps
995/tcp open  pop3s
```

#### ファイアウォールによりフィルタリングされている場合

ファイアウォールによりフィルタリングされている場合はどのような動作になるでしょうか？
ファイアウォールの多くはフィルタリングしているポートへのリクエストをドロップするように設定されています。
そのため、NmapがファイアウォールにフィルタリングされているポートにSYNを送信した場合、ドロップされるため応答が返ってきません。
この時、Nmapはポートがフィルタリングされていると判断します。

ポートがフィルタリングされているという情報は攻撃者にとって有益な情報になる可能性があります。
そのため、ファイアウォールでフィルタリングされたポートにSYNが送信されたら、ドロップするのではなくRSTを返却するように設定するということもセキュリティを向上させる対応といえます。
例えば、LinuxのIPtablesでは以下のコマンドでRSTを返却するよう設定できます。

```bash
iptables -I INPUT -p tcp --dport <port> -j REJECT --reject-with tcp-reset
```

### SYNスキャン(-sS)

SYNスキャン(-sS)は、TCPスキャンと同様にポートが開いているかどうかを判断するスキャンです。
ただし、スキャンの方法がTCPスキャンと異なり、その方法から**ハーフオープン**スキャン、**ステルス**スキャンと呼ばれることがあります。
TCPスキャンはターゲットと3ウェイハンドシェイクにより、コネクションを確立します。
一方、SYNスキャンはターゲットからSYN+ACK受取後、RSTを送り返し、コネクションを確立せず、終了します。

![SYNスキャン](https://raw.githubusercontent.com/kenryo012/qiita-content/main/images/Nmapことはじめ/synscan.png)
[出典：https://www.geeksforgeeks.org/what-is-syn-scanning/](https://www.geeksforgeeks.org/what-is-syn-scanning/)

■**コマンド実行結果**

TCPポートに対するスキャンのため、結果は[TCPスキャン(-sT)](#tcpスキャン-st)と同じです。

```bash
root@ip-10-10-199-68:~# nmap -sS 10.10.69.154
Starting Nmap 7.60 ( https://nmap.org ) at 2023-02-18 13:44 GMT
Nmap scan report for ip-10-10-69-154.eu-west-1.compute.internal (10.10.69.154)
Host is up (0.00052s latency).
Not shown: 995 filtered ports
PORT STATE SERVICE
21/tcp open ftp
53/tcp open domain
80/tcp open http
135/tcp open msrpc
3389/tcp open ms-wbt-server
MAC Address: 02:A3:BA:BA:DE:C9 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 18.98 seconds
```

#### SYNスキャンのメリット

SYNスキャンは主に3つのメリットがあります。

１つ目は、進入検知システム（IDS）から検知されにくいということです。
IDSの機種によっては**3ウェイハンドシェイクでコネクションが確立されたか**を監視してしており、**コネクションを確立しないSYNスキャン**は検知しません。ただし、検知できる機種も存在します。

２つ目は、接続を試行したことがログに記録されにくいということです。
一般的なシステムでは3ウェイハンドシェイクでコネクションがを確立した時、それをログに記録します。
SYNスキャンはコネクションを確立しないため、ログに記録されません。

３つ目は、スキャンが高速であるということです。
TCPスキャンのように3ウェイハンドシェイクによるコネクションを確立しないため、高速にスキャンできます。

#### SYNスキャンのデメリット

一方でSYNスキャンにはデメリットもあります。

１つ目は、Linux環境でSYNスキャンを実行する時、sudo権限が必要になることです。
これは、SYNスキャンの生パケット送受信時にsudo権限が必要だからです。
このことから、sudo権限なしの場合、nmapはTCPスキャンをデフォルトで実行します。sudo権限ありの場合、SYNスキャンをデフォルトで実行します。

２つ目は、不安定なサービスにSYNスキャンをした場合、負荷によりダウンする可能性があることです。
テスト用に本番環境を利用する際は十分に注意する必要があります。

#### ポートが閉じていた場合、フィルタリングされていた場合の動作

ポートが閉じていた場合やファイアウォールによりフィルタリングされている場合、nmapはどのような動作をするでしょうか？
この場合、TCPスキャンと同じ動きをします。
つまり、ポートが閉じていた場合、RSTを受け取ります。フィルタリングされていた場合、SYNパケットがドロップされるため、応答を受け取ることができません。

### UDPスキャン(-sU)

UDPスキャン(-sU)は、UDPを利用したスキャンです。
UDPはTCPと異なり、3ウェイハンドシェイクはせず、ターゲットとコネクションを確立しません。
そのため、TCPと比べ高速に通信できますが、信頼性が低いステートレスなプロトコルです。
UDPスキャンはこのようなUDPの性質のため、ポートにリクエストを送信しても応答が返ってきません。

■**コマンド実行結果**

コマンド実行結果の読み方は[TCPスキャン(-sT)](#tcpスキャン-st)と同様です。
解放されているポート番号とサービスは以下の通りです。

|ポート番号|サービス|
|---|---|
|53/udp|domain|

```bash
root@ip-10-10-199-68:~# nmap -sU 10.10.69.154
Starting Nmap 7.60 ( https://nmap.org ) at 2023-02-18 13:53 GMT
Nmap scan report for ip-10-10-69-154.eu-west-1.compute.internal (10.10.69.154)
Host is up (0.00034s latency).
Not shown: 999 open|filtered ports
PORT STATE SERVICE
53/udp open domain
MAC Address: 02:A3:BA:BA:DE:C9 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 115.51 seconds
```

#### UDPスキャンの動作

開いているUDPポートにリクエストを送信するとどうなるでしょうか？
UDPの性質上応答はないはずです。Nmapはこの時、そのUDPポートを**open/filtered**と判断します。
つまり、そのポートが開いているか、フィルタリングされているか、どちらかの状態であると判断するということです。

![オープンしているポートにUDPアクセスした場合](https://raw.githubusercontent.com/kenryo012/qiita-content/main/images/Nmapことはじめ/udpscan_open.png)
[出典：https://www.kagoya.jp/howto/engineer/infosecurity/port-scanning/](https://www.kagoya.jp/howto/engineer/infosecurity/port-scanning/)

閉じているポートにリクエストを送信するとどうなるでしょうか？
この場合、ターゲットから**ICMP Port Unreachable**が返却されます。
Nmapはこの応答からポートが閉じていると判断します。

![クローズしているポートにUDPアクセスした場合](https://raw.githubusercontent.com/kenryo012/qiita-content/main/images/Nmapことはじめ/udpscan_close.png)
[出典：https://www.kagoya.jp/howto/engineer/infosecurity/port-scanning/](https://www.kagoya.jp/howto/engineer/infosecurity/port-scanning/)

#### top-ports オプションによるスキャン時間短縮

ポートが開いているか判断に時間を要するため、UDPスキャンは他のTCPスキャンよりも時間がかかります。
スキャン時間を短縮するには `-top-ports <number>` オプションを使用すると良いです。
例えば、 `<number>` を**20**にしてUDPスキャンした場合、最もよく利用される上位**20**個のUDPポートに対してスキャンを行います。これにより、スキャン時間を大幅に短縮できます。

■**コマンド実行結果**

コマンド実行結果の最後にスキャン時間が出力されます。
`Nmap done: 1 IP address (1 host up) scanned in 1.77 seconds` からスキャンに**1.77秒**かかったことがわかります。
オプションなしのスキャンでは**115.51秒**かかっているため、スキャン時間を大きく削減できていることがわかります。

```bash
root@ip-10-10-82-126:~# nmap -sU -top-ports 20  10.10.93.218

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 17:23 GMT
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.00019s latency).

PORT      STATE         SERVICE
53/udp    open|filtered domain
67/udp    open|filtered dhcps
68/udp    open|filtered dhcpc
69/udp    open|filtered tftp
123/udp   open|filtered ntp
135/udp   open|filtered msrpc
137/udp   open|filtered netbios-ns
138/udp   open|filtered netbios-dgm
139/udp   open|filtered netbios-ssn
161/udp   open|filtered snmp
162/udp   open|filtered snmptrap
445/udp   open|filtered microsoft-ds
500/udp   open|filtered isakmp
514/udp   open|filtered syslog
520/udp   open|filtered route
631/udp   open|filtered ipp
1434/udp  open|filtered ms-sql-m
1900/udp  open|filtered upnp
4500/udp  open|filtered nat-t-ike
49152/udp open|filtered unknown
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

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

## その他スキャン

一般的ではないですが、TCPスキャンの一種として以下のスキャンがあります。

- NULLスキャン(-sN)
- FINスキャン(-sF)
- Xmasスキャン(-sX)

これらはステルススキャンと呼ばれているSYNスキャンより、さらにステルス性が高いスキャンです。

### NULLスキャン(-sN)

NULLスキャン(-sN)は、コントロールフラグ全てを0を設定して、ポートにリクエストします。
リクエストされたポートが閉じていた場合、ターゲットはRSTを返却します。

![NULLスキャン](https://raw.githubusercontent.com/kenryo012/qiita-content/main/images/Nmapことはじめ/nullscan.png)
[出典：https://cyberfortress.jp/2020/02/18/blog-python-portscaningtool/](https://cyberfortress.jp/2020/02/18/blog-python-portscaningtool/)

■**コマンド実行結果**

```bash
root@ip-10-10-236-185:~# nmap -sN 10.10.62.95
Starting Nmap 7.60 ( https://nmap.org ) at 2023-02-23 06:03 GMT
Nmap scan report for ip-10-10-62-95.eu-west-1.compute.internal (10.10.62.95)
Host is up (0.00010s latency).
All 1000 scanned ports on ip-10-10-62-95.eu-west-1.compute.internal (10.10.62.95) are open|filtered
MAC Address: 02:95:AF:BB:24:03 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 21.43 seconds
```

### FINスキャン(-sF)

FINスキャン(-sF)は、コントロールフラグの1つであるFINを1に設定して、ポートにリクエストします。
リクエストされたポートが閉じていた場合、ターゲットがRSTを返却するのは、NULLスキャンと同様です。

![FINスキャン](https://raw.githubusercontent.com/kenryo012/qiita-content/main/images/Nmapことはじめ/finscan.png)
[出典：https://cyberfortress.jp/2020/02/18/blog-python-portscaningtool/](https://cyberfortress.jp/2020/02/18/blog-python-portscaningtool/)

■**コマンド実行結果**

```bash
root@ip-10-10-236-185:~# nmap -sF 10.10.62.95
Starting Nmap 7.60 ( https://nmap.org ) at 2023-02-23 06:05 GMT
Nmap scan report for ip-10-10-62-95.eu-west-1.compute.internal (10.10.62.95)
Host is up (0.00011s latency).
All 1000 scanned ports on ip-10-10-62-95.eu-west-1.compute.internal (10.10.62.95) are open|filtered
MAC Address: 02:95:AF:BB:24:03 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 21.43 seconds
```

### Xmasスキャン(-sX)

Xmasスキャン(-sX)は、コントロールフラグのPSH、URG、FINを1に設定して、ポートにリクエストします。
このTCPリクエストのコントロールフラグを並べて見るとクリスマスツリーのようであるからこの名前になりました。
こちらも他のスキャンと同様にリクエストされたポートが閉じていた場合、ターゲットはRSTを返却します。

![Xmasスキャン](https://raw.githubusercontent.com/kenryo012/qiita-content/main/images/Nmapことはじめ/xmasscan.png)
[出典：https://cyberfortress.jp/2020/02/18/blog-python-portscaningtool/](https://cyberfortress.jp/2020/02/18/blog-python-portscaningtool/)

■**コマンド実行結果**

```bash
root@ip-10-10-236-185:~# nmap -sX 10.10.62.95
Starting Nmap 7.60 ( https://nmap.org ) at 2023-02-23 06:08 GMT
Nmap scan report for ip-10-10-62-95.eu-west-1.compute.internal (10.10.62.95)
Host is up (0.00017s latency).
All 1000 scanned ports on ip-10-10-62-95.eu-west-1.compute.internal (10.10.62.95) are open|filtered
MAC Address: 02:95:AF:BB:24:03 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 21.42 seconds
```

### その他スキャンの動作

以上3種のスキャンで開いているポートにリクエストした場合、UDPスキャンと似ている動作をします。
つまり、応答があった場合（ターゲットから**ICMP Port Unreachable**が返却された場合）、**close**と判断します。応答がない場合、**open/filtered**と判断します。

[RFC793](https://www.rfc-editor.org/rfc/rfc793)では、閉じているポートに不正なリクエスト（上記3種のようなリクエスト）を送信した場合、RSTを返却し、開いているポートの場合、応答しないと記載されています。ただし、ネットワーク機器によってはその限りではありません。

## NSEスクリプト

NmapにはNSEという追加機能があります。NSEとは**Nmap Scripting Engine**の略で、スクリプトはLuaで記述されています。
脆弱性の診断からエクスプロイトの自動化などをNSEで実施可能です。

### NSEスクリプトの使い方

`--script` オプションにカテゴリ、スクリプトを含んだディレクトリ、またはスクリプトファイルを指定することでNSEを実行できます。
例えば、`--script=safe` を指定するとsafeカテゴリのNSEが実行されます。
また、カテゴリをカンマで区切って指定することで複数のスクリプトを同時実行させることができます。
`--script=auth,brute` のような感じです。
カテゴリの詳細は[公式サイト](https://nmap.org/book/nse-usage.html)に記載されていますが、使用可能なものをいくつか紹介します。

- `vlun` : 脆弱性をスキャンします。
- `exploit` : 脆弱性の悪用を試みます。
- `brute` : 実行中のサービスにブルートフォースを試みます。

スクリプトによっては引数が必要になります。
例えば、**http-put**というPUTメソッドでサーバにファイルをアップロードするスクリプトには、ファイルをアップロードするリモートのファイルパスとアップロードするファイルのローカルパスが必要になります。
引数は `--script-args` オプションで指定します。引数が複数ある場合、カンマで区切ります。
引数名は `<script-name>.<argument>` の形式で指定します。
**http-put**の例は以下の通りです。

```bash
nmap -p 80 --script http-put --script-args http-put.url='/dav/hoge.php',http-put.file='./hoge.php'.
```

■**コマンド実行結果**

以下はローカルファイル `./test.txt` をサーバ（IPアドレス `10.10.93.218`）に `/tmp/test.txt` としてアップロードするコマンドです。
結果はエラーですが、アップロードを試みていることがわかります。

```bash
Nmap done: 1 IP address (1 host up) scanned in 0.92 seconds
root@ip-10-10-82-126:~# nmap -p 80 --script http-put --script-args http-put.url='/tmp/test.txt',http-put.file='./test.txt' 10.10.93.218

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 17:36 GMT
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.00034s latency).

PORT   STATE SERVICE
80/tcp open  http
|_http-put: ERROR: /tmp/test.txt could not be created
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

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

### NSEスクリプトの管理

NSEスクリプトは[公式サイト](https://nmap.org/nsedoc/)からダウンロードして使用できますし、ローカルストレージから参照もできます。
Nmapは `/usr/share/nmap/scripts` にNSEスクリプトをデフォルトで保存します。
Nmapは `--script` オプションで指定した場合、ここからスクリプトを探索します。

`--script` オプションに指定できるカテゴリやNSEスクリプトを確認する方法は2つあります。
1つ目は `/usr/share/nmap/scripts/script.db` を参照することです。
このファイルは利用可能な各スクリプトのファイル名とそれに対応するカテゴリが記載されたファイルです。
例えば、以下の `script.db` の内容から `safe` カテゴリを指定した場合、実行されるNSEスクリプトは次の4つです。

|スクリプト名|
|---|
|acarsd-info.nse|
|address-info.nse|
|afp-ls.nse|
|afp-serverinfo.nse|

```bash
Entry { filename = "acarsd-info.nse", categories = { "discovery", "safe", } }
Entry { filename = "address-info.nse", categories = { "default", "safe", } }
Entry { filename = "afp-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "afp-ls.nse", categories = { "discovery", "safe", } }
Entry { filename = "afp-path-vuln.nse", categories = { "exploit", "intrusive", "vuln", } }
Entry { filename = "afp-serverinfo.nse", categories = { "default", "discovery", "safe", } }
```

2つ目は、lsコマンドを使用することです。
例えば、`ls -l /usr/share/nmap/scripts/*ftp*` などを実行してftp関連のスクリプトを検索できます。

```bash
root@ip-10-10-82-126:~# ls -l /usr/share/nmap/scripts/ftp*
-rw-r--r-- 1 root root 4564 Apr 16  2018 /usr/share/nmap/scripts/ftp-anon.nse
-rw-r--r-- 1 root root 3253 Apr 16  2018 /usr/share/nmap/scripts/ftp-bounce.nse
-rw-r--r-- 1 root root 3108 Apr 16  2018 /usr/share/nmap/scripts/ftp-brute.nse
-rw-r--r-- 1 root root 3258 Apr 16  2018 /usr/share/nmap/scripts/ftp-libopie.nse
-rw-r--r-- 1 root root 3295 Apr 16  2018 /usr/share/nmap/scripts/ftp-proftpd-backdoor.nse
-rw-r--r-- 1 root root 3810 Apr 16  2018 /usr/share/nmap/scripts/ftp-syst.nse
-rw-r--r-- 1 root root 6007 Apr 16  2018 /usr/share/nmap/scripts/ftp-vsftpd-backdoor.nse
-rw-r--r-- 1 root root 5943 Apr 16  2018 /usr/share/nmap/scripts/ftp-vuln-cve2010-4221.nse
```

#### スクリプトの追加

NSEスクリプトは自作できますが、ただ `/usr/share/nmap/scripts` にスクリプトを配置しても使用できません。
新しくスクリプトを追加する場合、以下の手順を行います。

- 公式サイトからスクリプトをダウンロードし、所定の場所に配置します。

```bash
sudo wget -O /usr/share/nmap/scripts/<script-name>.nse https://svn.nmap.org/nmap/scripts/<script-name>.nse
```

- script.dbを更新します。

```bash
nmap -script-updatedb
```

## pingスイープ

攻撃者の偵察行為（どのIPアドレスが稼働しているかどうか）として使用されるのが**pingスイープ**です。こちらもNmapで実施できます。
Nmapは指定されたIPアドレスにICMPリクエストを送信します。応答が返ってきた場合、そのIPアドレスが存在していると判断します。

Nmapでのpingスイープは `-sn` オプションで実行します。
以下のようにハイフンでICMPリクエストを送信するIPアドレスの範囲を指定できます。

```bash
nmap -sn 192.168.0.1-254
```

■**コマンド実行結果**

以下はIPアドレス `192.168.0.1` から `192.168.0.254` に**pingスイープ**を実行した結果です。
`Host is up` と記載されいているIPアドレスは**pingスイープ**で応答を返したものです。
以下7つのIPが応答したことを表します。

|IPアドレス|
|---|
|10.10.93.21|
|10.10.93.62|
|10.10.93.69|
|10.10.93.192|
|10.10.93.193|
|10.10.93.218|
|10.10.93.249|

```bash
root@ip-10-10-82-126:~# nmap -sn 10.10.93.1-255

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 17:30 GMT
Nmap scan report for ip-10-10-93-21.eu-west-1.compute.internal (10.10.93.21)
Host is up (0.00039s latency).
MAC Address: 02:3B:9A:F2:C6:D9 (Unknown)
Nmap scan report for ip-10-10-93-62.eu-west-1.compute.internal (10.10.93.62)
Host is up (0.00032s latency).
MAC Address: 02:19:EA:50:C5:1B (Unknown)
Nmap scan report for ip-10-10-93-69.eu-west-1.compute.internal (10.10.93.69)
Host is up (0.00046s latency).
MAC Address: 02:BF:1A:FD:49:31 (Unknown)
Nmap scan report for ip-10-10-93-192.eu-west-1.compute.internal (10.10.93.192)
Host is up (0.0033s latency).
MAC Address: 02:CD:C6:8E:9A:57 (Unknown)
Nmap scan report for ip-10-10-93-193.eu-west-1.compute.internal (10.10.93.193)
Host is up (0.0033s latency).
MAC Address: 02:6E:CA:98:9F:1B (Unknown)
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (-0.099s latency).
MAC Address: 02:2F:F3:CB:61:7D (Unknown)
Nmap scan report for ip-10-10-93-249.eu-west-1.compute.internal (10.10.93.249)
Host is up (0.0020s latency).
MAC Address: 02:05:0F:1E:97:CD (Unknown)
Nmap done: 255 IP addresses (7 hosts up) scanned in 1.60 seconds
```

CIDR表記で指定もできます。

```bash
nmap -sn 192.168.0.0/24
```

■**コマンド実行結果**

```bash
root@ip-10-10-82-126:~# nmap -sn 10.10.93.1/24

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 17:32 GMT
Nmap scan report for ip-10-10-93-21.eu-west-1.compute.internal (10.10.93.21)
Host is up (0.0029s latency).
MAC Address: 02:3B:9A:F2:C6:D9 (Unknown)
Nmap scan report for ip-10-10-93-62.eu-west-1.compute.internal (10.10.93.62)
Host is up (0.0052s latency).
MAC Address: 02:19:EA:50:C5:1B (Unknown)
Nmap scan report for ip-10-10-93-69.eu-west-1.compute.internal (10.10.93.69)
Host is up (0.0052s latency).
MAC Address: 02:BF:1A:FD:49:31 (Unknown)
Nmap scan report for ip-10-10-93-192.eu-west-1.compute.internal (10.10.93.192)
Host is up (0.0042s latency).
MAC Address: 02:CD:C6:8E:9A:57 (Unknown)
Nmap scan report for ip-10-10-93-193.eu-west-1.compute.internal (10.10.93.193)
Host is up (0.0042s latency).
MAC Address: 02:6E:CA:98:9F:1B (Unknown)
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.00029s latency).
MAC Address: 02:2F:F3:CB:61:7D (Unknown)
Nmap scan report for ip-10-10-93-249.eu-west-1.compute.internal (10.10.93.249)
Host is up (-0.094s latency).
MAC Address: 02:05:0F:1E:97:CD (Unknown)
Nmap done: 256 IP addresses (7 hosts up) scanned in 1.69 seconds
```

### 権限による動作の違いについて

実行するユーザの権限（ルートユーザ、ルートユーザ以外）により、[pingスイープの動作が多少異なります](https://kaworu.jpn.org/security/pingスイープ)。
ルートユーザの場合、NmapはTCPポート443にSYN、TCPポート80にACKを送信します。
それ以外のユーザの場合、NmapはTCPポート443にSYN、TCPポート80に**SYN**を送信します。

## ファイアウォールによるフィルタリング回避について

Windows OSは一般的にデフォルトのファイアウォールでICMPをブロックしています。つまり、pingに応答しません。
Nmapはデフォルトでスキャン開始前に疎通確認としてpingを送信しますが、これにより、NmapはWindowsをスキャン対象外と判断してしまう可能性があります。

これを回避する方法が `-Pn` オプションです。
このオプションを指定するとスキャンする前にpingを送信しないようにしてくれます。
これにより、Windowsがスキャン対象外となるような問題は発生しなくなりますが、スキャンに時間がかかるようになるので注意が必要です。

フィルタリング回避に関するその他重要なオプションをいくつか示します。

- `-f` : パケットをフラグメントし、パケットがファイアウォールやIDSによって検出される可能性を低くします。
- `--mtu <number>` : 送信するパケットに使用する最大伝送単位サイズを指定します。指定する値は8の倍数である必要があります。
- `--scan-delay <time>ms` : 送信するパケットの間に遅延を指定します。ネットワークが不安定な場合に指定したり、時間ベースのファイアウォールやIDSのトリガーを回避するためにも使用されます。

## その他オプション

### ターゲットのOSを確認(-O)

ターゲットのOS情報を取得します。

■**コマンド実行結果**

`Device type`,`Running`,`Aggressive OS guesses` からOSの推定結果が出力されます。

```bash
root@ip-10-10-82-126:~# nmap -O 10.10.93.218

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 17:51 GMT
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.0011s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:2F:F3:CB:61:7D (Unknown)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: specialized
Running (JUST GUESSING): AVtech embedded (87%)
Aggressive OS guesses: AVtech Room Alert 26W environmental monitor (87%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop

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

### 動作しているサービスのバージョンを確認(-sV)

稼働しているサービスのバージョンを取得します。また、動作しているOS情報も取得できます。

■**コマンド実行結果**

`VERSION` にサービスのバージョン情報が出力されます。
`Service Info` にOS情報が出力されます。

```bash
root@ip-10-10-82-126:~# nmap -sV 10.10.93.218

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 17:53 GMT
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.0021s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE       VERSION
21/tcp   open  ftp           FileZilla ftpd
53/tcp   open  domain        Microsoft DNS
80/tcp   open  http          Microsoft IIS httpd 10.0
135/tcp  open  msrpc         Microsoft Windows RPC
3389/tcp open  ms-wbt-server Microsoft Terminal Services
MAC Address: 02:2F:F3:CB:61:7D (Unknown)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

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

### ポートスキャン詳細情報表示(-v)

スキャンの詳細情報を出力します。

■**コマンド実行結果**

他のスキャン結果と比較すると多くの情報が出力されていることがわかります。

```bash
root@ip-10-10-82-126:~# nmap -v 10.10.93.218

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 17:55 GMT
Initiating ARP Ping Scan at 17:55
Scanning 10.10.93.218 [1 port]
Completed ARP Ping Scan at 17:55, 0.22s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 17:55
Completed Parallel DNS resolution of 1 host. at 17:55, 0.00s elapsed
Initiating SYN Stealth Scan at 17:55
Scanning ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218) [1000 ports]
Discovered open port 21/tcp on 10.10.93.218
Discovered open port 3389/tcp on 10.10.93.218
Discovered open port 80/tcp on 10.10.93.218
Discovered open port 135/tcp on 10.10.93.218
Discovered open port 53/tcp on 10.10.93.218
Completed SYN Stealth Scan at 17:55, 17.30s elapsed (1000 total ports)
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.0015s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 17.64 seconds
           Raw packets sent: 3005 (132.204KB) | Rcvd: 20 (864B)
```

### ポートスキャンのより詳細な情報表示(-vv)

[ポートスキャン詳細情報表示(-v)](#ポートスキャン詳細情報表示-v)より詳細な情報を出力します。

例■**コマンド実行結果**

`REASON` などが追加出力されていることがわかります。

```bash
root@ip-10-10-82-126:~# nmap -vv 10.10.93.218

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 17:56 GMT
Initiating ARP Ping Scan at 17:56
Scanning 10.10.93.218 [1 port]
Completed ARP Ping Scan at 17:56, 0.22s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 17:56
Completed Parallel DNS resolution of 1 host. at 17:56, 0.00s elapsed
Initiating SYN Stealth Scan at 17:56
Scanning ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218) [1000 ports]
Discovered open port 3389/tcp on 10.10.93.218
Discovered open port 80/tcp on 10.10.93.218
Discovered open port 135/tcp on 10.10.93.218
Discovered open port 21/tcp on 10.10.93.218
Discovered open port 53/tcp on 10.10.93.218
Completed SYN Stealth Scan at 17:56, 17.76s elapsed (1000 total ports)
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up, received arp-response (0.0011s latency).
Scanned at 2023-03-04 17:56:08 GMT for 18s
Not shown: 995 filtered ports
Reason: 995 no-responses
PORT     STATE SERVICE       REASON
21/tcp   open  ftp           syn-ack ttl 128
53/tcp   open  domain        syn-ack ttl 128
80/tcp   open  http          syn-ack ttl 128
135/tcp  open  msrpc         syn-ack ttl 128
3389/tcp open  ms-wbt-server syn-ack ttl 128
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 18.11 seconds
           Raw packets sent: 3004 (132.160KB) | Rcvd: 19 (820B)
```

### 出力形式を指定する（標準）(-oN <ファイル名>)

コマンド実行結果を、標準の形式で指定したファイルに出力します。

例：■**コマンド実行結果**

```bash
root@ip-10-10-82-126:~# nmap 10.10.93.218 -oN on.txt

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 17:57 GMT
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.0018s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 18.41 seconds
root@ip-10-10-82-126:~# cat on.txt
# Nmap 7.60 scan initiated Sat Mar  4 17:57:30 2023 as: nmap -oN on.txt 10.10.93.218
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.0018s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

# Nmap done at Sat Mar  4 17:57:49 2023 -- 1 IP address (1 host up) scanned in 18.41 seconds
```

### 出力形式を指定する（Grep検索可能出力）(-oG)

コマンド実行結果を、Grep検索ができる形式でスキャン結果をファイルに出力してくれます。
ただ、[公式サイト](https://nmap.org/man/ja/man-output.html)の以下の記載の通り、廃止予定のオプションです。

```text
この出力フォーマットを最後に取り上げたのは、廃止予定だからだ。XML出力フォーマットのほうがはるかに強力であり、熟練ユーザにとっての使い勝手もほぼ変わらない。XMLはパーサーの標準で、多数の優れたXMLパーサーが利用可能になっているのに対し、grep可能出力は筆者独自のスクリプトに過ぎない。XMLは拡張性が高く、Nmapの新機能がリリースされるたびに対応可能だが、grep可能出力にはこうした機能を追加する余地がないため、割愛せざるを得ないことも多い。
```

■**コマンド実行結果**

```bash
root@ip-10-10-82-126:~# nmap 10.10.93.218 -oG oG.txt

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 17:59 GMT
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.00097s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 14.67 seconds
root@ip-10-10-82-126:~# cat oG.txt
# Nmap 7.60 scan initiated Sat Mar  4 17:59:34 2023 as: nmap -oG oG.txt 10.10.93.218
Host: 10.10.93.218 (ip-10-10-93-218.eu-west-1.compute.internal) Status: Up
Host: 10.10.93.218 (ip-10-10-93-218.eu-west-1.compute.internal) Ports: 21/open/tcp//ftp///, 53/open/tcp//domain///, 80/open/tcp//http///, 135/open/tcp//msrpc///, 3389/open/tcp//ms-wbt-server/// Ignored State: filtered (995)
# Nmap done at Sat Mar  4 17:59:48 2023 -- 1 IP address (1 host up) scanned in 14.67 seconds
```

### 出力形式を指定する（主要3種類）(-oA)

コマンド実行結果を標準、Grep検索可能出力、XMLそれぞれの形式でファイルに出力します。

■**コマンド実行結果**

```bash
root@ip-10-10-82-126:~# nmap 10.10.93.218 -oA oA.txt

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 18:01 GMT
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.0013s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 19.92 seconds
root@ip-10-10-82-126:~# cat oA.txt.gnmap
# Nmap 7.60 scan initiated Sat Mar  4 18:01:47 2023 as: nmap -oA oA.txt 10.10.93.218
Host: 10.10.93.218 (ip-10-10-93-218.eu-west-1.compute.internal) Status: Up
Host: 10.10.93.218 (ip-10-10-93-218.eu-west-1.compute.internal) Ports: 21/open/tcp//ftp///, 53/open/tcp//domain///, 80/open/tcp//http///, 135/open/tcp//msrpc///, 3389/open/tcp//ms-wbt-server/// Ignored State: filtered (995)
# Nmap done at Sat Mar  4 18:02:07 2023 -- 1 IP address (1 host up) scanned in 19.92 seconds
root@ip-10-10-82-126:~# cat oA.txt.nmap
# Nmap 7.60 scan initiated Sat Mar  4 18:01:47 2023 as: nmap -oA oA.txt 10.10.93.218
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.0013s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

# Nmap done at Sat Mar  4 18:02:07 2023 -- 1 IP address (1 host up) scanned in 19.92 seconds
root@ip-10-10-82-126:~# cat oA.txt.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nmaprun>
<?xml-stylesheet href="file:///usr/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
<!-- Nmap 7.60 scan initiated Sat Mar  4 18:01:47 2023 as: nmap -oA oA.txt 10.10.93.218 -->
<nmaprun scanner="nmap" args="nmap -oA oA.txt 10.10.93.218" start="1677952907" startstr="Sat Mar  4 18:01:47 2023" version="7.60" xmloutputversion="1.04">
<scaninfo type="syn" protocol="tcp" numservices="1000" services="1,3-4,6-7,9,13,17,19-26,30,32-33,37,42-43,49,53,70,79-85,88-90,99-100,106,109-111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254-256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443-445,458,464-465,481,497,500,512-515,524,541,543-545,548,554-555,563,587,593,616-617,625,631,636,646,648,666-668,683,687,691,700,705,711,714,720,722,726,749,765,777,783,787,800-801,808,843,873,880,888,898,900-903,911-912,981,987,990,992-993,995,999-1002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,1121-1124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,1163-1166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,1233-1234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,1309-1311,1322,1328,1334,1352,1417,1433-1434,1443,1455,1461,1494,1500-1501,1503,1521,1524,1533,1556,1580,1583,1594,1600,1641,1658,1666,1687-1688,1700,1717-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,1862-1864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,2020-2022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,2105-2107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,2190-2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-2383,2393-2394,2399,2401,2492,2500,2522,2525,2557,2601-2602,2604-2605,2607-2608,2638,2701-2702,2710,2717-2718,2725,2800,2809,2811,2869,2875,2909-2910,2920,2967-2968,2998,3000-3001,3003,3005-3007,3011,3013,3017,3030-3031,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,3300-3301,3306,3322-3325,3333,3351,3367,3369-3372,3389-3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689-3690,3703,3737,3766,3784,3800-3801,3809,3814,3826-3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,4443-4446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,5050-5051,5054,5060-5061,5080,5087,5100-5102,5120,5190,5200,5214,5221-5222,5225-5226,5269,5280,5298,5357,5405,5414,5431-5432,5440,5500,5510,5544,5550,5555,5560,5566,5631,5633,5666,5678-5679,5718,5730,5800-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,5900-5904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,5998-6007,6009,6025,6059,6100-6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565-6567,6580,6646,6666-6669,6689,6692,6699,6779,6788-6789,6792,6839,6881,6901,6969,7000-7002,7004,7007,7019,7025,7070,7100,7103,7106,7200-7201,7402,7435,7443,7496,7512,7625,7627,7676,7741,7777-7778,7800,7911,7920-7921,7937-7938,7999-8002,8007-8011,8021-8022,8031,8042,8045,8080-8090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,8290-8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651-8652,8654,8701,8800,8873,8888,8899,8994,9000-9003,9009-9011,9040,9050,9071,9080-9081,9090-9091,9099-9103,9110-9111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,9593-9595,9618,9666,9876-9878,9898,9900,9917,9929,9943-9944,9968,9998-10004,10009-10010,10012,10024-10025,10082,10180,10215,10243,10566,10616-10617,10621,10626,10628-10629,10778,11110-11111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,14441-14442,15000,15002-15004,15660,15742,16000-16001,16012,16016,16018,16080,16113,16992-16993,17877,17988,18040,18101,18988,19101,19283,19315,19350,19780,19801,19842,20000,20005,20031,20221-20222,20828,21571,22939,23502,24444,24800,25734-25735,26214,27000,27352-27353,27355-27356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,34571-34573,35500,38292,40193,40911,41511,42510,44176,44442-44443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,49999-50003,50006,50300,50389,50500,50636,50800,51103,51493,52673,52822,52848,52869,54045,54328,55055-55056,55555,55600,56737-56738,57294,57797,58080,60020,60443,61532,61900,62078,63331,64623,64680,65000,65129,65389"/>
<verbose level="0"/>
<debugging level="0"/>
<host starttime="1677952907" endtime="1677952927"><status state="up" reason="arp-response" reason_ttl="0"/>
<address addr="10.10.93.218" addrtype="ipv4"/>
<address addr="02:2F:F3:CB:61:7D" addrtype="mac"/>
<hostnames>
<hostname name="ip-10-10-93-218.eu-west-1.compute.internal" type="PTR"/>
</hostnames>
<ports><extraports state="filtered" count="995">
<extrareasons reason="no-responses" count="995"/>
</extraports>
<port protocol="tcp" portid="21"><state state="open" reason="syn-ack" reason_ttl="128"/><service name="ftp" method="table" conf="3"/></port>
<port protocol="tcp" portid="53"><state state="open" reason="syn-ack" reason_ttl="128"/><service name="domain" method="table" conf="3"/></port>
<port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="128"/><service name="http" method="table" conf="3"/></port>
<port protocol="tcp" portid="135"><state state="open" reason="syn-ack" reason_ttl="128"/><service name="msrpc" method="table" conf="3"/></port>
<port protocol="tcp" portid="3389"><state state="open" reason="syn-ack" reason_ttl="128"/><service name="ms-wbt-server" method="table" conf="3"/></port>
</ports>
<times srtt="1297" rttvar="1341" to="100000"/>
</host>
<runstats><finished time="1677952927" timestr="Sat Mar  4 18:02:07 2023" elapsed="19.92" summary="Nmap done at Sat Mar  4 18:02:07 2023; 1 IP address (1 host up) scanned in 19.92 seconds" exit="success"/><hosts up="1" down="0" total="1"/>
</runstats>
</nmaprun>
```

### アグレッシブモード有効(-A)

[サービス検出](#動作しているサービスのバージョンを確認-sv)、[オペレーティングシステム検出](#ターゲットのosを確認-o)、トレースルート(-sC)、一般的なスクリプトのスキャン(--traceroute)を有効にします。

https://www.oreilly.com/library/view/nmap-network-exploration/9781786467454/916fdbc5-6ae2-4f8b-a5a2-c2515309daad.xhtml

■**コマンド実行結果**

```bash
root@ip-10-10-82-126:~# nmap -A 10.10.93.218

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 18:05 GMT
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.0010s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE       VERSION
21/tcp   open  ftp           FileZilla ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
| ftp-syst:
|_  SYST: UNIX emulated by FileZilla
53/tcp   open  domain        Microsoft DNS
80/tcp   open  http          Microsoft IIS httpd 10.0
| http-methods:
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows Server
135/tcp  open  msrpc         Microsoft Windows RPC
3389/tcp open  ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=win-scan
| Not valid before: 2023-03-03T17:19:56
|_Not valid after:  2023-09-02T17:19:56
|_ssl-date: 2023-03-04T18:05:32+00:00; 0s from scanner time.
MAC Address: 02:2F:F3:CB:61:7D (Unknown)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: specialized
Running (JUST GUESSING): AVtech embedded (87%)
Aggressive OS guesses: AVtech Room Alert 26W environmental monitor (87%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

TRACEROUTE
HOP RTT     ADDRESS
1   1.05 ms ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)

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

### スキャン速度指定（タイミングテンプレート）(-T0)

数値部分は0から5まで指定可能です。
数値が大きいほど高速にスキャンできます。ただし、エラーになる可能性も高くなります。
-T5だと10秒程度でスキャンできましたが、-T0だと10分ぐらい待ちましたが結果が返ってきませんでした。

■**コマンド実行結果**

```bash
root@ip-10-10-82-126:~# nmap -T5 10.10.93.218

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 18:07 GMT
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.0027s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

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

```

### ポート指定(-p ポート番号)

スキャンするポート番号を指定します。

■**コマンド実行結果**

```bash
root@ip-10-10-82-126:~# nmap -p 80 10.10.93.218

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 18:09 GMT
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.00026s latency).

PORT   STATE SERVICE
80/tcp open  http
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

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

```

### ポート指定（範囲指定）(-p 開始ポート番号-終了ポート番号)

スキャンするポートの範囲を指定します。

■**コマンド実行結果**

以下はポート番号80から2000までをスキャンした実行結果です。

```bash
root@ip-10-10-82-126:~# nmap -p 80-2000 10.10.93.218

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-04 18:11 GMT
Nmap scan report for ip-10-10-93-218.eu-west-1.compute.internal (10.10.93.218)
Host is up (0.00079s latency).
Not shown: 1919 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
135/tcp open  msrpc
MAC Address: 02:2F:F3:CB:61:7D (Unknown)

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

### ポート指定（全ポート指定）(-p-)

全ポート（0から65535）をスキャンします。
30分ぐらい経っても結果が返ってこなかったため、諦めました。

## 参考

- https://tryhackme.com/room/furthernmap
- https://www.infraexpert.com/study/tea5.htm
- https://www.infraexpert.com/study/tcpip8.html
- https://www.infraexpert.com/study/tcpip9.html
- https://www.infraexpert.com/study/tcpip12.html
- https://www.infraexpert.com/study/tcpip4.html
- https://www.infraexpert.com/study/tcpip5.html
- https://ja.wikipedia.org/wiki/3ウェイ・ハンドシェイク
- https://www.rfc-editor.org/rfc/rfc793
- https://www.geeksforgeeks.org/what-is-syn-scanning/
- https://nmap.org/man/ja/man-port-scanning-techniques.html
- https://www.kagoya.jp/howto/engineer/infosecurity/port-scanning/
- https://cyberfortress.jp/2020/02/18/blog-python-portscaningtool/
- https://nmap.org/book/nse-usage.html
- https://kaworu.jpn.org/security/pingスイープ
- https://kaworu.jpn.org/security/nmap_OS検出
- https://knowledge.sakura.ad.jp/97/
- https://nmap.org/man/ja/man-output.html
- https://www.oreilly.com/library/view/nmap-network-exploration/9781786467454/916fdbc5-6ae2-4f8b-a5a2-c2515309daad.xhtml
- https://cysec148.hatenablog.com/entry/2020/12/16/184934