nmap :「指定したホストやネットワークに対してポートやサービスを検出する」ネットワークスキャナ
nmap の典型オプション
-p: ports。nmapが対象ポート範囲を指定する。-sV: scan + Version。nmapがサービスの版数を推定する。-sS: scan + SYN。nmapがTCP SYNスキャンを行う。-sT: scan + TCP connect。nmapがTCPコネクトスキャンを行う。-sU: scan + UDP。nmapがUDPスキャンを行う。-sN: scan + NULL。nmapがNULLフラグスキャンを行う。-sF: scan + FIN。nmapがFINスキャンを行う。-sX: scan + Xmas。nmapがXmasスキャンを行う。-sC: scan + “default Scripts”。nmapが既定スクリプト集合を使う(Cは歴史的略記で厳密頭字語ではない)。-O: Operating-system。nmapがOS推定を行う。-A: Aggressive。nmapが包括的検出(-sV -O -sC等)を有効化する。-Pn: Ping no。nmapがホスト発見を省略してスキャンを強行する。-T0..5: Timing。nmapがスキャン速度テンプレートを選ぶ。-oN: output Normal。nmapが通常テキスト出力を保存する。-oG: output Grepable。nmapがgrepしやすい形式で保存する。-oX: output XML。nmapがXMLで保存する。-oA: output All。nmapがN/G/Xの三種を同時保存する。-v/-vv: verbose。nmapが冗長度を上げる。-n: no DNS。nmapが名前解決を行わない。-R: Resolve always。nmapが必ず逆引きする。
補足: 文字は「意味の頭文字」を指すことが多いが、歴史的経緯で必ずしも厳密な頭字語ではない。各実装差異を避けるために、長い形式(例: --human-readable, --script=default)を併記して使うことを推奨する。
入出力の具体例
答え: 各オプションごとに最小の入出力例を示す。出力は代表例だ。環境で差が出る。
-p(ports)
入力
nmap -p 22,80,443 10.0.0.5
出力(抜粋)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
入力(全ポート)
nmap -p- 10.0.0.5
出力(抜粋)
Not shown: 65530 closed tcp ports
22/tcp open ssh
80/tcp open http
5432/tcp open postgresql
-sV(Version)
入力
nmap -sV -p 80,22 10.0.0.5
出力(抜粋)
22/tcp open ssh OpenSSH 9.6p1 (protocol 2.0)
80/tcp open http Apache httpd 2.4.57
Service Info: OS: Linux
-sS(TCP SYN)
入力(root 権限推奨)
sudo nmap -sS -p 1-1024 10.0.0.5
出力(抜粋)
PORT STATE SERVICE
22/tcp open ssh
25/tcp closed smtp
80/tcp open http
-sT(TCP connect)
入力
nmap -sT -p 22,80 10.0.0.5
出力(抜粋)
22/tcp open ssh
80/tcp open http
-sU(UDP)
入力(root 推奨)
sudo nmap -sU -p 53,123,161 10.0.0.5
出力(抜粋)
PORT STATE SERVICE
53/udp open domain
123/udp open|filtered ntp
161/udp closed snmp
-sN(NULL)
入力
sudo nmap -sN -p 80,22 10.0.0.5
出力(抜粋)
PORT STATE SERVICE
22/tcp closed ssh
80/tcp open|filtered http
-sF(FIN)
入力
sudo nmap -sF -p 80 10.0.0.5
出力(抜粋)
PORT STATE SERVICE
80/tcp open|filtered http
-sX(Xmas)
入力
sudo nmap -sX -p 80 10.0.0.5
出力(抜粋)
PORT STATE SERVICE
80/tcp open|filtered http
-sC(default scripts)
入力
nmap -sC -p 80 10.0.0.5
出力(抜粋)
PORT STATE SERVICE
80/tcp open http
| http-title: MyApp
| http-server-header: nginx/1.24.0
|_http-methods: GET HEAD POST OPTIONS
-O(OS detection)
入力
sudo nmap -O 10.0.0.5
出力(抜粋)
OS details: Linux 5.4 - 6.1
Network Distance: 1 hop
-A(Aggressive)
入力
sudo nmap -A 10.0.0.5
出力(抜粋)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6p1
80/tcp open http nginx 1.24.0
|_http-title: MyApp
|_http-server-header: nginx/1.24.0
Device type: general purpose
OS details: Linux 5.10-6.1
TRACEROUTE (using port 80/tcp)
-Pn(no host discovery)
入力
nmap -Pn -p 22 10.0.0.5
出力(抜粋)
Host is up.
22/tcp open ssh
-T0..5(timing)
入力(速い)
nmap -T4 -p 1-1000 10.0.0.5
出力(末行例)
Nmap done: ... scanned in 5.12 seconds
入力(遅い・慎重)
nmap -T1 -p 1-1000 10.0.0.5
出力(末行例)
Nmap done: ... scanned in 48.7 seconds
-oN(normal 出力を保存)
入力
nmap -sV -oN scan.txt 10.0.0.5
出力(末行)
Nmap done: 1 IP address (1 host up) scanned in 6.32 seconds
確認
head scan.txt
# Nmap 7.95 scan initiated ...
Nmap scan report for 10.0.0.5
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6p1
-oG(grepable)
入力
nmap -p 22,80 -oG scan.gnmap 10.0.0.5
出力(ファイル中)
Host: 10.0.0.5 () Ports: 22/open/tcp//ssh///, 80/open/tcp//http///
-oX(XML)
入力
nmap -sV -oX scan.xml 10.0.0.5
出力(ファイル冒頭)
<?xml version="1.0"?>
<!DOCTYPE nmaprun>
<nmaprun scanner="nmap" args="nmap -sV -oX scan.xml 10.0.0.5" version="7.95">
-oA(All: N/G/X を同時保存)
入力
nmap -A -oA fullscan 10.0.0.5
出力(ファイル生成)
fullscan.nmap fullscan.gnmap fullscan.xml
-v / -vv(verbose)
入力
nmap -v -p 1-1000 10.0.0.5
``]
**出力(抜粋)**
Initiating SYN Stealth Scan at 10:12
Scanning 10.0.0.5 [1000 ports]
Discovered open port 22/tcp on 10.0.0.5
**入力(より詳細)**
```bash
nmap -vv -p 22 10.0.0.5
出力(抜粋)
Initiating TCP SYN Stealth Scan against 10.0.0.5
Completed SYN Stealth Scan, 1 total ports
-n(no DNS)
入力
nmap -n 10.0.0.5
出力(先頭行)
Nmap scan report for 10.0.0.5
-R(必ず逆引き)
入力
nmap -R 10.0.0.5
出力(先頭行・逆引き成功時)
Nmap scan report for host-10-0-0-5.example.local (10.0.0.5)
注: 許可を得た対象だけをスキャンしろ。


コメント