セキュリティ監査やトラブルシューティングでいろいろと便利な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.comNmap 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.comNmap 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でポチポチやる必要があります。
- 関連記事
-
-
S&W M100-1 ヘアピンを使った手錠抜け 2016/05/03
-
firefoxでyoutubeの冒頭の広告を無効化する方法 2016/04/26
-
nmapの使い方まとめ 202 2014/08/30
-
冷風機や冷風扇という地雷より室外機一体型の小型エアコンを 2014/07/12
-
RainbowCrackとやらを使ってみた 2011/12/17
-