nmapの使い方まとめ 202

/ Hack / Comment[0]

セキュリティ監査やトラブルシューティングでいろいろと便利なnmapの使い方を解説します。

自分はnmapにオプションをつけて実行することはあまり無いのでほとんど忘れてますが、LPIC202ではnmapの使い方も問われるようなのでメモも兼ねて書きます。

基本的な使い方

google.comをスキャン
$ nmap google.com
Starting Nmap 6.40 ( http://nmap.org ) at 2014-08-30 12:56 JST
Nmap scan report for google.com (173.194.38.71)
Host is up (0.012s latency).
Other addresses for google.com (not scanned): 173.194.38.66 173.194.38.73 173.194.38.68 173.194.38.78 173.194.38.70 173.194.38.69 173.194.38.64 173.194.38.65 173.194.38.67 173.194.38.72
rDNS record for 173.194.38.71: nrt19s17-in-f7.1e100.net
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

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

一般ユーザがオプションをつけずに実行するとバニラスキャン(コネクトスキャン)を行います。

google.comへのnmapの結果を見てみると80/tcpと443/tcpが開いていることが分かります。
Aレコードに複数のIPがありロードバランサで付加分散を行っているようなホストでは
上記のようにスキャンしたIPアドレスとしていないIPアドレスの一覧が表示されます。

ステルス性の高いスキャンオプション

特殊なスキャンにはroot権限が必要になります。

-sS SYNスキャン

# nmap -sS 10.255.0.1

SYNパケットを相手のポートに投げつけて応答パケットがFINならclose、SYN+ACKならopenと解釈するスキャン方法です。
また、SYN+ACKが帰ってきた場合はこちらからRSTを送ってセッションを強制終了させることにより、ターゲットホストのログに残りづらくなります。

tcpdumpによるパケット抜粋
オープンポートの場合

SYNを送る
13:59:10.411640 IP 10.0.1.1.42095 > 10.255.0.1.80: Flags [S], seq 1438248065, win 1024, options [mss 1460], length 0
SYN+ACKが帰る→Openと判断
13:59:10.412676 IP 10.255.0.1.80 > 10.0.1.1.42095: Flags [S.], seq 4063128936, ack 1438248066, win 16384, options [mss 1460], length 0
RSTで強制終了
13:59:10.412726 IP 10.0.1.1.42095 > 10.255.0.1.80: Flags [R], seq 1438248066, win 0, length 0
クローズポートの場合
SYNを送る
14:12:09.251642 IP 10.0.1.1.38877 > 10.255.0.1.4444: Flags [S], seq 2286079062, win 1024, options [mss 1460], length 0
RSTが帰る→Closeと判断
14:12:09.253023 IP 10.255.0.1.4444 > 10.0.1.1.38877: Flags [R.], seq 0, ack 2286079063, win 0, length 0

SYNスキャンの弱点としては、Fail2banやファイアウォールなどにSYN Flood攻撃と判定されてブロックされやすいことです。
そんなときは-Tオプションによりスキャンの延滞を変えることによりファイアウォールなどを回避することが可能です。

-T0-5(数字が高いほど早い)
# nmap -sS -T2 10.255.0.1

-sN NULLスキャン

TCPフラグが付いていないTCPパケットをポートへ投げつけるスキャン方法です。

RFCではクローズポートに対してTCPパケットを受けた場合はRSTを返すように制定されているため、RSTが帰ってこないポートがopenまたはfilteredと判断できます。
コネクションを確立することが無いためステルス性は高いですが、ファイアウォールのルールによってはRSTを返さず無視することもあるので、その場合は正常にスキャンすることは出来ません。

open|filterの場合

フラグ無しのTCPパケットを送る
14:20:46.179631 IP 10.0.1.1.65243 > 10.255.0.1.53: Flags [], win 1024, length 0
14:20:46.279722 IP 10.0.1.1.65244 > 10.255.0.1.53: Flags [], win 1024, length 0
RST応答無し→open|filtered

closeの場合

フラグ無しのTCPパケットを送る
14:20:58.275633 IP 10.0.1.1.41133 > 10.255.0.1.4444: Flags [], win 1024, length 0
RSTが帰ってくる→closeと判断
14:20:58.278019 IP 10.255.0.1.4444 > 10.0.1.1.41133: Flags [R.], seq 0, ack 1225135145, win 0, length 0
-sF FINスキャン

FINパケットを投げつけるスキャン方法です。

クローズポートに対してFINを送るとRSTを返すようになっています。これを利用して、応答無しポートがopenまたはfiltered、RSTが帰ってきたポートがcloseと判断できます。
このスキャン方法もコネクションを確立しないためステルス性は高いです。

open|filteredの場合

FINを送るが返答無し→open|filtered
14:50:44.131635 IP 10.0.1.1.49396 > 10.255.0.1.53: Flags [F], seq 3720851809, win 1024, length 0
14:50:44.231719 IP 10.0.1.1.49397 > 10.255.0.1.53: Flags [F], seq 3720786272, win 1024, length 0

closeの場合

FINを送る
14:50:49.743638 IP 10.0.1.1.45798 > 10.255.0.1.4444: Flags [F], seq 3551518369, win 1024, length 0
RST+ACKが帰ってくる→close
14:50:49.744603 IP 10.255.0.1.4444 > 10.0.1.1.45798: Flags [R.], seq 0, ack 3551518369, win 0, length 0

スキャンを高速化するオプション

-F
スキャン対象を/usr/share/nmap/nmap-servicesファイルに列挙されたポートに限定することにより高速化を実現するオプションです。
-T
スキャンディレイのテンプレを指定するオプションです。-T0-2がIDS/IPSの回避に使われ、-T3がデフォルトです。
-T4が高速スキャンで、-T5となると精度が若干損なわれますが超高速になります。 $ nmap -T4 10.255.0.1
-p

ポート範囲を指定してスキャンすることでスキャンの無駄を減らします。

例えば下記コマンドでウェルノウンポートである1-1023だけをスキャンすることが可能です。
$ nmap -p1-1023 10.255.0.1

ポートをカンマ区切りで指定することも可能です。
$ nmap -p21,22,80,587 10.255.0.1

情報収集オプション

-O OSを予測

-Oオプションをつけることによりポートの挙動などからOSを予測することが出来ます。

ステルス性の高いスキャンと併用すると精度が落ちるため(-sSだけは精度高め)、精度を求めるなら通常のバニラスキャン(オプション無しか-sTオプション)で行うといいでしょう。
# nmap -O uedakana.com

Nmap scan report for uedakana.com (59.106.19.218)
Host is up (0.0100s latency).
rDNS record for 59.106.19.218: www768.sakura.ne.jp
Not shown: 985 closed ports
PORT    STATE    SERVICE
21/tcp  open     ftp
22/tcp  open     ssh
23/tcp  filtered telnet
25/tcp  filtered smtp
79/tcp  filtered finger
80/tcp  open     http
110/tcp open     pop3
111/tcp filtered rpcbind
139/tcp filtered netbios-ssn
143/tcp open     imap
443/tcp open     https
445/tcp filtered microsoft-ds
587/tcp open     submission
993/tcp open     imaps
995/tcp open     pop3s
Device type: general purpose|firewall|specialized
Running (JUST GUESSING): FreeBSD 6.X|7.X|9.X|8.X (99%), m0n0wall FreeBSD 6.X (91%), VMware ESX Server 4.X (90%)
OS CPE: cpe:/o:freebsd:freebsd:6.3 cpe:/o:freebsd:freebsd:7.0 cpe:/o:freebsd:freebsd:9 cpe:/o:freebsd:freebsd:8 cpe:/o:m0n0wall:freebsd cpe:/o:vmware:esxi:4.1 cpe:/o:m0n0wall:freebsd:6
Aggressive OS guesses: FreeBSD 6.3-RELEASE (99%), FreeBSD 7.0-RELEASE (95%), FreeBSD 7.1-PRERELEASE 7.2-STABLE (95%), FreeBSD 9.0-RELEASE (95%), FreeBSD 7.0-RELEASE - 9.0-RELEASE (94%), FreeBSD 8.1-RELEASE (94%), FreeBSD 7.0-RC1 (92%), FreeBSD 7.1-RELEASE (92%), FreeBSD 7.0-STABLE (92%), FreeBSD 9.1-RELEASE (91%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 13 hops

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 44.23 seconds
-A より詳細な情報を取得

-sV,-sC,--tracerouteオプションなどをまとめたオプションで、ポートをスキャンするだけでなく実際にアクセスしてさまざまな情報を取得してくれるオプションです。
# nmap -A uedakana.com

Nmap scan report for uedakana.com (59.106.19.218)
Host is up (0.014s latency).
rDNS record for 59.106.19.218: www768.sakura.ne.jp
Not shown: 985 closed ports
PORT    STATE    SERVICE      VERSION
21/tcp  open     ftp          ProFTPD 1.3.4d
| ssl-cert: Subject: commonName=*.sakura.ne.jp
| Not valid before: 2013-12-26T01:56:54+00:00
|_Not valid after:  2018-12-26T01:56:54+00:00
|_ssl-date: 2014-08-30T06:46:08+00:00; +1s from local time.
22/tcp  open     ssh          OpenSSH 5.8p2_hpn13v11 (FreeBSD 20110503; protocol 1.99)
|_ssh-hostkey: ERROR: Script execution failed (use -d to debug)
|_sshv1: Server supports SSHv1
23/tcp  filtered telnet
25/tcp  filtered smtp
79/tcp  filtered finger
80/tcp  open     http         Apache httpd 2.2.25
|_http-title: K's Laboratory\xEF\xBD\x9E\xE5\xA3\xB0\xE5\x84\xAA\xE3\x83\xBB\xE6\xA4\x8D\xE7\x94\xB0\xE4\xBD\xB3\xE5\xA5\x88\xE3\x82\xAA\xE3\x83\x95\xE3\x82\xA3\xE3\x82\xB7\xE3\x83\xA3\xE3\x83\xAB\xE3\x82\xB5\xE3\x82\xA4...
110/tcp open     pop3         Courier pop3d
|_pop3-capabilities: IMPLEMENTATION(Courier Mail Server) UIDL STLS PIPELINING APOP TOP LOGIN-DELAY(10) USER
111/tcp filtered rpcbind
139/tcp filtered netbios-ssn
143/tcp open     imap         Courier Imapd (released 2011)
|_imap-capabilities: ACL2=UNION SORT THREAD=ORDEREDSUBJECT completed CAPABILITY CHILDREN THREAD=REFERENCES OK QUOTA IMAP4rev1 UIDPLUS NAMESPACE IDLE ACL STARTTLSA0001
443/tcp open     ssl/http     Apache httpd 2.2.25
|_http-title: \x82\xB3\x82\xAD\x82\xE7\x82\xCC\x83\x8C\x83\x93\x83^\x83\x8B\x83T\x81[\x83o
| ssl-cert: Subject: commonName=*.sakura.ne.jp
| Not valid before: 2013-12-26T01:56:54+00:00
|_Not valid after:  2018-12-26T01:56:54+00:00
|_ssl-date: 2014-08-30T06:46:08+00:00; +2s from local time.
445/tcp filtered microsoft-ds
587/tcp open     smtp         Sendmail 8.14.5/8.14.5
|_smtp-commands: www768.sakura.ne.jp Hello ********** [***.*.**.**], pleased to meet you, ENHANCEDSTATUSCODES, PIPELINING, 8BITMIME, SIZE 209715200, DSN, AUTH CRAM-MD5 DIGEST-MD5 LOGIN PLAIN, STARTTLS, DELIVERBY, HELP,
| ssl-cert: Subject: commonName=*.sakura.ne.jp
| Not valid before: 2013-12-26T01:56:54+00:00
|_Not valid after:  2018-12-26T01:56:54+00:00
|_ssl-date: 2014-08-30T06:46:08+00:00; +1s from local time.
993/tcp open     ssl/imap     Courier Imapd (released 2011)
|_imap-capabilities: completed SORT THREAD=ORDEREDSUBJECT ACL2=UNIONA0001 CAPABILITY CHILDREN THREAD=REFERENCES OK QUOTA IMAP4rev1 UIDPLUS NAMESPACE IDLE ACL AUTH=PLAIN
| ssl-cert: Subject: commonName=*.sakura.ne.jp
| Not valid before: 2013-12-26T01:56:54+00:00
|_Not valid after:  2018-12-26T01:56:54+00:00
|_ssl-date: 2014-08-30T06:46:08+00:00; +1s from local time.
| sslv2:
|   SSLv2 supported
|_  ciphers: none
995/tcp open     ssl/pop3     Courier pop3d
|_pop3-capabilities: IMPLEMENTATION(Courier Mail Server) LOGIN-DELAY(10) UIDL APOP TOP PIPELINING USER
| ssl-cert: Subject: commonName=*.sakura.ne.jp
| Not valid before: 2013-12-26T01:56:54+00:00
|_Not valid after:  2018-12-26T01:56:54+00:00
|_ssl-date: 2014-08-30T06:46:08+00:00; +2s from local time.
| sslv2:
|   SSLv2 supported
|_  ciphers: none
Device type: general purpose|firewall|specialized
Running (JUST GUESSING): FreeBSD 6.X|9.X|7.X|8.X (99%), m0n0wall FreeBSD (90%), OpenBSD 4.X (90%), VMware ESX Server 4.X (90%), Genua OpenBSD 4.X (89%)
OS CPE: cpe:/o:freebsd:freebsd:6.3 cpe:/o:freebsd:freebsd:9 cpe:/o:freebsd:freebsd:7.0 cpe:/o:freebsd:freebsd:8 cpe:/o:m0n0wall:freebsd cpe:/o:openbsd:openbsd:4.0 cpe:/o:vmware:esxi:4.1 cpe:/o:genua:openbsd:4
Aggressive OS guesses: FreeBSD 6.3-RELEASE (99%), FreeBSD 9.0-RELEASE (96%), FreeBSD 7.0-RELEASE (95%), FreeBSD 7.1-PRERELEASE 7.2-STABLE (95%), FreeBSD 7.0-RELEASE - 9.0-RELEASE (94%), FreeBSD 8.1-RELEASE (94%), FreeBSD 9.1-RELEASE (93%), FreeBSD 7.0-STABLE (92%), FreeBSD 7.1-RELEASE (92%), FreeBSD 7.2-RELEASE - 8.0-RELEASE (91%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 13 hops
Service Info: OSs: Unix, FreeBSD; CPE: cpe:/o:freebsd:freebsd

TRACEROUTE (using port 1025/tcp)
HOP RTT      ADDRESS
1   1.66 ms  ntt.setup (10.255.0.1)
2   7.30 ms  * * *
3   15.09 ms * * *
4   36.27 ms * * *
5   35.84 ms * * *
6   ...
7   35.67 ms ae-13.r25.tokyjp05.jp.bb.gin.ntt.net (129.250.5.94)
8   9.59 ms  ae-5.a20.tokyjp01.jp.ra.gin.ntt.net (61.213.162.170)
9   47.00 ms xe-4-1-0.a20.tokyjp01.jp.ra.gin.ntt.net (61.120.145.162)
10  9.06 ms  tkgrt1s-wrt3.bb.sakura.ad.jp (59.106.247.121)
11  39.15 ms tkgrt2b-wrt1s.bb.sakura.ad.jp (157.17.130.6)
12  9.27 ms  tkgrt20e-grt1b.bb.sakura.ad.jp (157.17.132.82)
13  38.46 ms www768.sakura.ne.jp (59.106.19.218)

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

ケースごとのスキャンテンプレ

-nは名前解決を抑制するオプションです。

同セグメントに居るホストをリストアップ
# nmap -n -sL 192.168.1.0/24
同セグメントホストの情報収集
# nmap -n -A -T4 192.168.1.0/24
迅速なステルススキャン+OS検出
# nmap -sS -O -T4 -F 10.255.0.1
慎重なステルススキャン
# nmap -n -sN -T1 10.255.0.1
# nmap -n -sA -T1 10.255.0.1
Tor越しのコネクトスキャン
# service tor start
# tor-resolv fc2.com
# torsocks nmap -n -F -A -Pn 54.241.184.159
tor越しでは精度は低く、最悪スキャンできないホストもあるようです。そんなときはtorsocksを通したncでポチポチやる必要があります。
関連記事

コメント

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