nmapの実用的コマンド10選
みなさん、nmap活用してますか?nmapはポートスキャンツールとして有名ですが、最近は機能が拡張されていて、様々な機能をサポートしています。
nmapはGordon Lyonによって書かれたセキュリティスキャナである。ポートスキャン機能だけでなく、OSやバージョンの検出機能、サービスおよびそのバージョンの検出機能など、多くの機能を兼ね備えている。
via:nmap – Wikipedia
nmapは、使いこなせればネットワーク管理者にとって非常に役に立つツールです。
今回はnmapを使った実用的なコマンドを10個ほどご紹介します。
nmapのインストール
nmapはWindowsでもMacでもlinuxでも動作します。
バイナリは以下に置いてありますので、適当にインストールしましょう。
Download the Free Nmap Security Scanner for Linux/MAC/UNIX or Windows
linuxにインストールする場合は、ubuntuなら
sudo apt-get install nmap
cnetosなら、
sudo yum install nmap
でインストールできます。
該当ホストへのポートスキャンチェック
nmap <IP Address>
nmapの基本的な使い方で、該当のホストへポートスキャンチェックを実行します。
$ nmap 192.168.1.1
Starting Nmap 6.49BETA2 ( http://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.00083s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 5.08 seconds
ネットワーク内のホスト探索
nmap -sP <IP Address/Subnetmask>
指定したネットワーク内のIPアドレスに対して、オンラインになっているホストをリストアップします。このコマンドはホストに対して以下のやり取りを行っています。
・ICMP echo request
・ポート 443 への SYN
・ポート 80 への ACK
・ICMP timestamp request
$ nmap -sP 192.168.1.0/24
Nmap scan report for 192.168.1.1
Host is up (0.0029s latency).
Nmap scan report for 192.168.1.2
Host is up (0.0016s latency).
Nmap scan report for 192.168.1.3
Host is up (0.0014s latency).
Nmap scan report for 192.168.1.4
Host is up (0.0013s latency).
Nmap scan report for 192.168.1.5
Host is up (0.0012s latency).
該当ホストのOSを調べる
nmap -O <IP Address>
該当のホストのOSを調査する場合は、オプションで「-O」を付けて実行します。実行にはRoot権限が必要です。
$ sudo nmap -O 192.168.1.1
Starting Nmap 6.49BETA2 ( http://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.00013s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
631/tcp open ipp
6667/tcp open irc
Device type: general purpose
Running: Apple Mac OS X 10.10.X
OS CPE: cpe:/o:apple:mac_os_x:10.10
OS details: Apple Mac OS X 10.10 (Yosemite) (Darwin 14.0.0 - 14.1.0)
Network Distance: 0 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 16.07 seconds
該当ホストのホスト名を調べる
nmap -sL <IP Address/Subnetmask>
該当ホストのホスト名を調べるには、オプションに「-sL」を付けて実行します。実行にはRoot権限が必要です。
$ sudo nmap -sL 192.168.1.0/24
Starting Nmap 6.49BETA2 ( http://nmap.org )
Nmap scan report for router-gw (192.168.1.1)
Nmap scan report for myhost–1 (192.168.1.2)
Nmap scan report for myhost–2 (192.168.1.3)
基本的なTCP/UDPポートへのスキャン
nmap -sS -sU -Pn <IP Address>
ホストに対して、一般的なTCP/UDPのポート(約2000ポート)へスキャンを実行します。実行にはRoot権限が必要です。
nmapでは、スキャンの前にpingでの疎通確認を行っていますが、ファイアウォールなどでICMPを止めている場合、スキャンできないため、「-Pn」オプションを付与して、事前のPingスキャンをスキップさせています。
$ sudo nmap -sS -sU -Pn 192.168.1.1
Starting Nmap 6.49BETA2 ( http://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.00012s latency).
Not shown: 1994 closed ports
PORT STATE SERVICE
631/tcp open ipp
6667/tcp open irc
123/udp open ntp
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf
全てのTCP/UDPポートへのスキャン
nmap -sS -sU -Pn -p 1-65535 <IP Address>
全てのポート(1から65535まで)に対してポートスキャンを行いたい場合は、「-p」オプションの後にスキャンするポート番号を指定します。実行にはRoot権限が必要です。
該当のホストへのTCPコネクションを確認
nmap -sT <IP Address>
基本的なTCPポート(約1000ポート)へのTCPコネクションを試みます。ホストに対して、SYN パケットを送り、相手からSYN/ACKパケットが送られてきたら実際にコネクションを張り(ACKパケットを送信)、ポートが開いていると判断します。
$ nmap -sT 192.168.1.1
Starting Nmap 6.49BETA2 ( http://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.00027s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
631/tcp open ipp
6667/tcp open irc
高速スキャン
nmap -T4 -F <IP Address>
通常よりも調査するポート数を減らして(100ポート)高速にスキャンする場合は、「-T4」と「-F」オプションを使います。
$ nmap -T4 -F 192.168.1.1
Starting Nmap 6.49BETA2 ( http://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 99 closed ports
PORT STATE SERVICE
631/tcp open ipp
動作しているサービスの詳細を調べる
「-A」オプションを付けると、各サービスの詳細情報を表示させることができます。
$ nmap -T4 -A localhost
Starting Nmap 6.49BETA2 ( http://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.00014s latency).
Not shown: 500 closed ports, 497 filtered ports
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.1.19
|_http-title: 403 Forbidden
|_http-methods: No Allow or Public header in OPTIONS response (status code 405)
631/tcp open ipp CUPS 2.0
| http-methods: Potentially risky methods: PUT
|_See http://nmap.org/nsedoc/scripts/http-methods.html
|_http-server-header: CUPS/2.0 IPP/2.1
|_http-title: Web Interface is Disabled - CUPS v2.0.0
6667/tcp open irc?
|_irc-info: Unable to open connection
Device type: general purpose
Running: Apple Mac OS X 10.10.X
OS CPE: cpe:/o:apple:mac_os_x:10.10
OS details: Apple Mac OS X 10.10 (Yosemite) (Darwin 14.0.0 - 14.1.0)
Network Distance: 0 hops
詳細な情報を全て調査する
「-v」オプションを付けると、詳細な情報を表示させることができます。
$ nmap -T4 -A -v localhost
Starting Nmap 6.49BETA2 ( http://nmap.org )
NSE: Loaded 122 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 09:40
Completed NSE at 09:40, 0.00s elapsed
Initiating NSE at 09:40
Completed NSE at 09:40, 0.00s elapsed
Initiating SYN Stealth Scan at 09:40
Scanning 192.168.1.1 [1000 ports]
Discovered open port 631/tcp on 192.168.1.1
Discovered open port 6667/tcp on 192.168.1.1
Completed SYN Stealth Scan at 09:40, 3.08s elapsed (1000 total ports)
Initiating Service scan at 09:40
Scanning 2 services on 192.168.1.1
Completed Service scan at 09:40, 6.03s elapsed (2 services on 1 host)
Initiating OS detection (try #1) against 192.168.1.1
NSE: Script scanning 192.168.1.1.
Initiating NSE at 09:40
Completed NSE at 09:40, 0.28s elapsed
Initiating NSE at 09:40
Completed NSE at 09:40, 0.00s elapsed
Nmap scan report for 192.168.1.1
Host is up (0.00016s latency).
Not shown: 500 filtered ports, 498 closed ports
PORT STATE SERVICE VERSION
631/tcp open ipp CUPS 2.0
|_http-favicon: Unknown favicon MD5: 321A53C36B96
| http-methods: GET HEAD OPTIONS POST PUT
| Potentially risky methods: PUT
|_See http://nmap.org/nsedoc/scripts/http-methods.html
|_http-server-header: CUPS/2.0 IPP/2.1
|_http-title: Web Interface is Disabled - CUPS v2.0.0
6667/tcp open irc?
|_irc-info: Unable to open connection
Device type: general purpose
Running: Apple Mac OS X 10.10.X
OS CPE: cpe:/o:apple:mac_os_x:10.10
OS details: Apple Mac OS X 10.10 (Yosemite) (Darwin 14.0.0 - 14.1.0)
Uptime guess: 10.174 days (since Tue Jun 16 05:29:20 2015)
Network Distance: 0 hops
TCP Sequence Prediction: Difficulty=258 (Good luck!)
IP ID Sequence Generation: Randomized
大変参考になりました。