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)
注: 許可を得た対象だけをスキャンしろ。
コメント