Nmapコマンドチートシート（ホスト探索編）

# 本記事の概要
ペンテスターにとって必ず使うツールといってもいい「Nmap(network mapper)」コマンドについてのチートシートです。

## Nmapによるスキャンの全体像
ご存じの通りネットワークにはLayerという概念が存在します。
**Layer2（データリンク層）** では、
①ARPスキャン
**Layer3（ネットワーク層）** では、
②ICMPスキャン
**Layer4（トランスポート層）** では、
③TCPスキャン
④UDPスキャン
の機能を提供しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647774/9c216007-9d56-684c-0ae2-43e839f408a4.png)

:::note info
本記事では、PCやサーバのことを総称して**ホスト**と記載しています
:::

:::note warn
インターネット上の任意のIPにスキャンを実施した場合、刑事罰に問われる場合があります。スキャンを実施する場合は、必ず自身が保有するNWに対し実施してください
:::


## 各スキャン方式の用途とコマンド例
### ①ARPスキャン
データリンク層で動作するARPは**同一セグメント内に存在するホストの一覧を洗い出す際**に使用します。当然ではありますが、データリンク層で動作するプロトコルであるため、同一セグメント内のホストが対象となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647774/6dfb9596-2223-eeef-b5cf-b06b6aeb9918.png)

#### コマンド
```powershell
nmap -PR -sn MACHINE_IP/24
```

#### 実行結果
4行目、7行目、9行目にてARP応答を返したホストが表示されていることがわかります。
```
Starting Nmap 7.60 ( https://nmap.org ) at 2023-06-11 08:35 BST
Stats: 0:00:02 elapsed; 0 hosts completed (0 up), 256 undergoing ARP Ping Scan
ARP Ping Scan Timing: About 21.48% done; ETC: 08:36 (0:00:11 remaining)
Nmap scan report for ip-10-10-210-69.eu-west-1.compute.internal (10.10.210.69) 
Host is up (-0.099s latency).
MAC Address: 02:08:7C:85:55:5B (Unknown)
Nmap scan report for ip-10-10-210-168.eu-west-1.compute.internal (10.10.210.168)
Host is up (0.00035s latency).
MAC Address: 02:97:C6:F8:BB:A7 (Unknown)
Nmap scan report for ip-10-10-210-248.eu-west-1.compute.internal (10.10.210.248)
Host is up (0.000069s latency).
MAC Address: 02:3D:A0:EF:34:83 (Unknown)
Nmap done: 256 IP addresses (3 hosts up) scanned in 7.41 seconds
```

### ②ICMPスキャン
ICMPは`ping`コマンド等で使用されるプロトコルです。ICMPスキャンを実施することで、**IP reachableなホストを洗い出す**ことが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647774/690de521-d7b7-7254-7787-947722bdbbcb.png)

#### コマンド
```powershell
nmap -PE -sn MACHINE_IP/24 #ICMP Echo Scan
nmap -PP -sn MACHINE_IP/24 #ICMP Timestamp Scan
nmap -PM -sn MACHINE_IP/24 #ICMP Address Mask Scan
```

#### 実行結果（ICMP Echo Scan）
2行目、5行目にて`icmp echo reply`を返したホストが表示されていることがわかります。
```
Starting Nmap 7.60 ( https://nmap.org ) at 2023-06-11 08:45 BST
Nmap scan report for ip-10-10-68-83.eu-west-1.compute.internal (10.10.68.83)
Host is up (-0.100s latency).
MAC Address: 02:B9:2F:E4:C5:C7 (Unknown)
Nmap scan report for ip-10-10-68-143.eu-west-1.compute.internal (10.10.68.143)
Host is up (0.00018s latency).
MAC Address: 02:C8:F5:D6:E7:3D (Unknown)
Nmap done: 256 IP addresses (2 hosts up) scanned in 4.80 seconds
```

### ③TCPスキャン/④UDPスキャン
IP reachableであったとしても、当該ホストで稼働しているサービスがわからなければ、攻撃を成立させることはできません。そこで使用するのが、**③TCPスキャン/④UDPスキャン**です。当該スキャンを実施することにより、**各プロトコルでポートが解放されているホストの一覧**を調べることができます。

#### コマンド
```powershell
nmap -PS22,80,443 -sn MACHINE_IP/30 #TCP SYN Ping Scan
nmap -PA22,80,443 -sn MACHINE_IP/30 #TCP ACK Ping Scan
nmap -PU53,161,162 -sn MACHINE_IP/30 #UDP Ping Scan
```

#### 実行結果(TCP SYN Ping Scan)
2行目にて、当該ポートが解放されているホストを確認することができます。
```
Starting Nmap 7.60 ( https://nmap.org ) at 2023-06-11 08:59 BST
Nmap scan report for ip-10-10-68-143.eu-west-1.compute.internal (10.10.68.143)
Host is up (0.000068s latency).
MAC Address: 02:C8:F5:D6:E7:3D (Unknown)
Nmap done: 256 IP addresses (1 host up) scanned in 4.75 seconds
```

## 最後に
本記事を最後まで読んでいただきありがとうございました。
次回はポートスキャンについての記事を作成する予定です。公開しましたらTwitterにて投稿いたしますので、是非ともフォローをお願いいたします。

https://twitter.com/ff_0000_ff/status/1664868626963509248