nmapの使い方

/ Linux/Unix / Comment[0]
nmapは言わずと知れた高性能なネットワークマッピングツール。
ありえないほど便利だから使い方書いておくお。


基本的な使い方

TCPスキャン
# nmap 192.168.1.1
Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-27 11:50 JST
Nmap scan report for 192.168.1.1
Host is up (0.0050s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
53/tcp open domain
80/tcp open http
554/tcp open rtsp
2869/tcp open unknown
8888/tcp open sun-answerbook

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


UDPスキャン
# nmap -sU 192.168.1.1
Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-27 11:51 JST
Nmap scan report for 192.168.1.1
Host is up (0.018s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
53/udp open|filtered domain
67/udp open|filtered dhcps
68/udp open|filtered dhcpc
1900/udp open|filtered upnp
5010/udp open|filtered telelpathstart
5050/udp open|filtered mmcc
5060/udp open|filtered sip

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


Pingスキャン
# nmap -sP 192.168.1.0/24
Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-27 11:52 JST
Nmap scan report for 192.168.1.1
Host is up (0.0031s latency).
Nmap scan report for 192.168.1.2
Host is up (0.00070s latency).
Nmap scan report for 192.168.1.3
Host is up (0.016s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 7.73 seconds


OS検知
# nmap -O 10.25.0.1
:
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: HP Onboard Administrator management console (96%),
Chumby Internet radio (95%), Linux 2.6.13 - 2.6.28 (95%), Linux 2.6.29 (95%),
Linux 2.6.18 - 2.6.28 (94%), Linux 2.6.22 - 2.6.23 (94%), Linux 2.6.26 (94%),
AVM FRITZ!Box FON WLAN 7050, Linksys WAG200G, or Netgear DG834GT wireless broadband router (93%),
Gemtek P360 WAP or Siemens Gigaset SE515dsl wireless broadband router (93%),
Linux 2.6.18 (92%)
No exact OS matches for host (test conditions non-ideal).


ありきたりなポートを高速簡易スキャン
# nmap -F 10.0.1.1
Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-27 12:10 JST
Nmap scan report for 10.0.1.1
Host is up (0.00062s latency).
Not shown: 96 closed ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds

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




ステルス性が高いスキャンテクニック

SYNフラグスキャン
# nmap -sS 192.168.1.1

スリーウェイハンドシェイクは「SYN送信 → SYN/ACK受信 → ACK送信 → ヽ(*゚д゚)ノ」という仕組みで、
オープンポートでSYNを受けると、必ずSYN/ACKを返し、クローズポートでSYNを受けると、RSTを返すようになっている。
ようは、SYN/ACKが帰ってきたポートをオープンと判断し、RSTが帰ってきたらクローズと判断するオプションである。
コネクションスキャンと違い、SYNフラグスキャンはセッションを確率しないのでターゲットのログに残る可能性は低い。
だが、IDSやFWにSYN Flood Attackとしてドロップされてしまう可能性がある。


FINフラグスキャン
# nmap -sF 192.168.1.1

FINフラグはセッションを終了する時に送られるフラグで、
オープンポートでFINフラグを受けとると返答は帰らないが、クローズポートでFINフラグを受けとるとRSTフラグが返される。
RSTフラグが帰ってこないポートがオープンポートなわけだが、FWによりパケット自体がドロップされている可能性も考えられる。
openかfilteredを判断するには他のスキャン方式も併用する必要がある。
FINフラグはセッションを終了するフラグのため、FWにブロックされたりログに記録される可能性が低いスキャン方法である。



IDS,ファイアウォール回避のテクニックなど

フラグメントスキャン
# nmap -f 192.168.1.1

フラグメントパケットの再構築には大量のリソースを必要とするため、一部IDSやFWではフラグメントパケットの調査を無効にしている場合があり-fオプションによりスキャンパケットをフラグメント化することでIDSやFWを回避できる場合がある。
一部のIDSやFWでは、度の越えたフラグメントパケットはドロップするように設定されているものもありスキャンに失敗する可能性もある。


スキャン間隔を広げてIDSを回避
# nmap -sS -T2 10.0.1.1

-Tオプションは次のポートへスキャンを開始するまでの待ち時間を指定するもので、0~5まで指定できる(デフォルトでは3)。
ポートにアクセス後、数秒以内に別のポートにアクセスした場合ポートスキャンと判断するというようなポリシがIDSに設定されている場合などはこのオプションで回避できる可能性が高い。


ソースポートを指定してFWを回避
# nmap -g 20 10.0.1.1

デフォルトではランダムなソースポートでスキャンが実行されるが、
-gオプションでソースポートを指定することで、パケットフィルタ型のFWを回避できる場合がある。

 FW回避に有効なポート
 ・20 FTPデータ転送ポート
 ・53 DNSゾーン転送ポート
 ・80 HTTPポート
 ・88 Kerberosポート
 ・139 NetBIOSサービスポート
 ・445 Microsoft-dsポート



バージョン情報の取得などでどうしてもコネクションスキャンしなければならない場合、-Dオプションで
デコイを使ってターゲットのログを偽IPアドレスで溢れさせ、攻撃者のIPアドレスの存在感を薄くすることができる。
# nmap -D 192.168.1.12,ME,98.139.180.149 10.0.1.1

ターゲットホストのnetstatの出力。複数のホストから攻撃を受けているように見える。
tcp        0      0 10.0.1.1:80             192.168.1.12:33805      SYN_RECV   
tcp 0 0 10.0.1.1:80 98.139.180.149:47653 SYN_RECV
tcp 0 0 10.0.1.1:30001 192.168.1.12:33805 SYN_RECV
tcp 0 0 10.0.1.1:30001 98.139.180.149:53117 SYN_RECV
tcp 0 0 10.0.1.1:21 98.139.180.149:53117 SYN_RECV
tcp 0 0 10.0.1.1:21 192.168.1.12:33805 SYN_RECV
tcp 0 0 10.0.1.1:445 192.168.1.12:33805 SYN_RECV
tcp 0 0 10.0.1.1:445 98.139.180.149:53117 SYN_RECV




Nmapの拡張機能

nmapにはLUA言語で書かれた拡張機能であるスクリプトが用意されている。
例えばバージョンを引き出すものだとか、ブルートフォースアタックするもの、マルウェアに感染したホストを探すものなど。
これらスクリプトは/usr/share/nmap/scripts/に格納されている。
また、スクリプトを呼び出すには--scriptオプションで拡張子を除くベースファイル名を指定する。

--scriptオプションを実行した際に指定したスクリプトがインストールされているのにも関わらず「NSE: failed to initialize the script engine:」というエラーが表示された場合は、次の操作を実行する
# wget http://nmap.org/svn/nselib/citrixxml.lua -o /usr/share/nmap/nselib/citrixxml.lua
# nmap --script-updatedb


バナーを取得
# nmap --script=banner 10.0.1.1
Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-27 12:08 JST
NSE: Script Scanning completed.
Nmap scan report for 10.0.1.1
Host is up (0.00026s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
21/tcp open ftp
| banner: 220 blackhawk FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17)
|_ready.
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
8001/tcp open unknown
8002/tcp open teradataordbms
9099/tcp open unknown
|_banner: :IRC.irc 020 * :Please wait while we process your connection.

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


Sambaが稼働しているシステムのOSを調べる
# nmap --script=smb-os-discovery 10.0.1.1 -p445
Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-27 12:02 JST
NSE: Script Scanning completed.
Nmap scan report for 10.0.1.1
Host is up (0.00011s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds

Host script results:
| smb-os-discovery:
| OS: Unix (Samba 3.4.7)
| Name: Unknown\Unknown
|_ System time: 2011-11-27 12:02:37 UTC+9

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


HTMLのタイトルを取得
# nmap --script=html-title -p80 nicovideo.jp/24
:
Nmap scan report for 202.248.110.227
Host is up (0.015s latency).
PORT STATE SERVICE
80/tcp open http
|_html-title: \xE3\x83\x8B\xE3\x82\xB3\xE3\x83\x8B\xE3\x82\xB3\xE3\x82\xA2\xE3\x83\x97\xE3\x83\xAA

Nmap scan report for 202.248.110.230
Host is up (0.019s latency).
PORT STATE SERVICE
80/tcp open http
|_html-title: Site doesn't have a title (text/plain).

Nmap scan report for 202.248.110.231
Host is up (0.015s latency).
PORT STATE SERVICE
80/tcp open http
|_html-title: Site doesn't have a title (text/plain; charset=utf-8).

Nmap scan report for us.nicovideo.com (202.248.110.235)
Host is up (0.019s latency).
PORT STATE SERVICE
80/tcp open http
| html-title: 302 Found
|_Did not follow redirect to http://www.niconico.com/

Nmap scan report for 202.248.110.236
Host is up (0.013s latency).
PORT STATE SERVICE
80/tcp filtered http

Nmap scan report for nicovideo.jp (202.248.110.243)
Host is up (0.016s latency).
PORT STATE SERVICE
80/tcp open http
| html-title: 301 Moved Permanently
|_Did not follow redirect to http://www.nicovideo.jp/

Nmap scan report for 202.248.110.247
Host is up (0.014s latency).
PORT STATE SERVICE
80/tcp open http
|_html-title: 403 Forbidden

Nmap done: 256 IP addresses (42 hosts up) scanned in 23.41 seconds


サービスのバージョンを取得
# nmap -sV 10.0.1.1
Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-27 12:00 JST
Nmap scan report for 10.0.1.1
Host is up (0.0028s latency).
Not shown: 993 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp OpenBSD ftpd 6.4 (Linux port 6.4)
80/tcp open http Apache httpd 2.2.14 ((Ubuntu))
139/tcp open netbios-ssn Samba smbd 3.X (workgroup: INFERNO)
445/tcp open netbios-ssn Samba smbd 3.X (workgroup: INFERNO)
8001/tcp open http Apache httpd 2.2.14 ((Ubuntu))
8002/tcp open http Apache httpd 2.2.14 ((Ubuntu))


OSやサービスのバージョン検知など、いくつかのスクリプトを実行
# nmap -A 10.0.1.1
Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-27 12:20 JST
Nmap scan report for 10.0.1.1
Host is up (0.00028s latency).
Not shown: 993 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp OpenBSD ftpd 6.4 (Linux port 6.4)
80/tcp open http Apache httpd 2.2.14 ((Ubuntu))
|_html-title: Site doesn't have a title (text/html).
139/tcp open netbios-ssn Samba smbd 3.X (workgroup: INFERNO)
445/tcp open netbios-ssn Samba smbd 3.X (workgroup: INFERNO)
8001/tcp open http Apache httpd 2.2.14 ((Ubuntu))
|_html-title: 404 Not Found
8002/tcp open http Apache httpd 2.2.14 ((Ubuntu))
|_html-title: 401 Authorization Required
| http-auth: HTTP Service requires authentication
|_ Auth type: Basic, realm = Control
9099/tcp open irc IRCnet-based ircd
| irc-info: Server: IRC.irc
| Version: 2.11.2p1. IRC.irc 000A
| Lservers/Lusers: 0/1
| Uptime: 3 days, 0:32:59
| Source host: 10.0.0.1
|_Source ident: NONE or BLOCKED
Service Info: Hosts: blackhawk, IRC.irc; OS: Linux

Host script results:
|_nbstat: NetBIOS name: BLACKHAWK, NetBIOS user: , NetBIOS MAC:
| smb-os-discovery:
| OS: Unix (Samba 3.4.7)
| Name: Unknown\Unknown
|_ System time: 2011-11-27 12:21:49 UTC+9
|_smbv2-enabled: Server doesn't support SMBv2 protocol

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



最後に
次のポリシを持つIDSに守られているホストのポートスキャン例
 ・同じホストから1秒間にSYNが10以上来た場合SYN Flood Attackと判断
 ・同じホストから5秒以内に別のポートへSYN、ACKがあったらポートスキャンと判断
 ・88/tcpからの接続は許可

ブロックされにくいFINフラグでopen|filteredポートを絞り込む
# nmap -sF -g88 10.0.1.1
PORT     STATE         SERVICE
21/tcp open|filtered ftp
80/tcp open|filtered http
139/tcp open|filtered netbios-ssn
445/tcp open|filtered microsoft-ds
8001/tcp open|filtered unknown
8002/tcp open|filtered teradataordbms
9099/tcp open|filtered unknown

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

SYNフラグスキャンをゆっくりと実行してオープンかフィルターかをハッキリさせる
# nmap -sS -T1 -g88 10.0.1.1 -p21,80,139,445,8001,8002,9099
PORT     STATE SERVICE
21/tcp open ftp
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
8001/tcp open unknown
8002/tcp open teradataordbms
9099/tcp open unknown

Nmap done: 1 IP address (1 host up) scanned in 120.12 seconds
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可