Nmapの真実(続)
自己紹介
2
小河 哲之
Twitter:abend
ISOG-WG1
Burp Suite Japan User Group
Nmap
3
ネットワークスキャナの1つ。
- ポートスキャン
- ホストの探索
- OSやサービスの検出
- 脆弱性スキャン
権限のお話
4
権限による変化
5
一般ユーザと管理者とでは、挙動がかわりま
す。
① 一般ユーザ:
$ nmap 192.168.0.1
② 管理者ユーザ
# nmap 192.168.0.1
権限による変化
6
① 一般ユーザの場合、Connect Scanになり
ます。
② 管理者ユーザの場合、SYN Scanになりま
す。
7
SYN ScanはRaw Socketを扱うため管理者権
限がないと実行できません。Connect Scanは
管理者権限がなくても実行できます。
権限による変化
8
管理者は自動的にSYN Scanになってしまう。
それをConnect Scanでポートスキャンを行う方
法は2つあります。
権限による変化
9
1つ目は「-sT」を明示的に指定する方法。
2つ目は「--unprivileged」を指定する方法。
権限による変化
10
「-A」は、「-O」、「-sV」、「-sC」、「--traceroute」
をまとめたものだが、「 --unprivileged」を指定
した場合、 「-O」、 「--traceroute」は管理者権
限が必要なため実行されない。
権限による変化
11
root@kali:~# nmap -O 192.168.217.131 --unprivileged
TCP/IP fingerprinting (for OS scan) requires root privileges.
QUITTING!
だが、「-O」を指定した場合はエラーとなる。
「-A」の時は実行されないだけでエラーにな
らない。
権限による変化
12
オプションが同じでも実行権限によって結果
が変わってしまうので、その点で注意が必要
になる。
権限による変化
unfilteredのお話
13
ポートスキャン
14
ポートスキャンを行うと結果が出力される。
ポートの状況は6パターンある。
open , closed , filtered , unfiltered ,
open|filtered , closed|filtered
ポートスキャン
15
ポートスキャンを行うと結果が出力される。
ポートの状況は6パターンある。
open , closed , filtered , unfiltered ,
open|filtered , closed|filtered
unfiltered?
16
Nmapリファレンスガイドだと
ポートにはアクセス可能だが、そのポートが
開いているか閉じているかをNmapでは判別
できないことを意味する。
https://nmap.org/man/jp/man-port-scanning-
basics.html
unfiltered
17
アクセス可能ならopenになるのではないだろ
うか。
どういう状況なのだろうか。
18
ACK ScanはACKフラグのみがセットされたパ
ケットを送信して、挙動からstatusを判断する。
ACKを投げる
?
ACK Scan
ACK Scan
19
何も帰ってこない。
何も帰ってこないということは、filterされてい
ると判断する。
filter!!
ACK Scan
20
RSTが帰ってくる
RSTが帰ってくるということは、openか
closed(filterされていない)という判断になり
unfilteredとなる。
filterされ
てない!!
ACK Scan
21
「アクセス可能 = filterされていないがopen
かcloseか分からない」ということ。どういう使い
道なのかは分からないが。
ACK Scan
22
} else if (tcp->th_flags & TH_RST) {
current_reason = ER_RESETPEER;
if (USI->scantype == WINDOW_SCAN ) {
newstate = (tcp->th_win) ? PORT_OPEN : PORT_CLOSED;
} else if (USI->scantype == ACK_SCAN) {
newstate = PORT_UNFILTERED;
} else newstate = PORT_CLOSED;
scan_engin_raw.ccの1818行から1824行目で
ポートの状況を判定をしていると推測される。
Window Scanのお話
23
Window Scan
24
NmapのReference Guideより抜粋
Window scan is exactly the same as ACK
scan except that it exploits an implementation
detail of certain systems to differentiate open
ports from closed ones
https://nmap.org/book/man-port-scanning-techniques.html
Window Scan
25
Widow ScanはACK Scanと同じ。Window Scan
だとopenかcloseの判定ができる。
なぜACK Scanと同じなのにポートの状況を
判定できる?
Window Scan
26
} else if (tcp->th_flags & TH_RST) {
current_reason = ER_RESETPEER;
if (USI->scantype == WINDOW_SCAN ) {
newstate = (tcp->th_win) ? PORT_OPEN : PORT_CLOSED;
} else if (USI->scantype == ACK_SCAN) {
newstate = PORT_UNFILTERED;
} else newstate = PORT_CLOSED;
Window ScanもACK Scanと同様の判定だが、
RSTパケットのWindow sizeが0でなければ
openと判定する。
openと判定
27
Starting Nmap 7.10 ( https://nmap.org ) at 2016-07-03 04:22 JST
Nmap scan report for 192.168.1.219
Host is up (0.00070s latency).
PORT STATE SERVICE
80/tcp open http
closeと判定
28
Starting Nmap 7.10 ( https://nmap.org ) at 2016-07-03 05:14 JST
Nmap scan report for 192.168.1.219
Host is up (0.00031s latency).
PORT STATE SERVICE
80/tcp closed http
Window Scan
29
VMでNATさせ、Window Scanをした場合に
RSTパケットのWindow sizeが0ではなくなる。
Connect ScanではRSTパケットのWindow size
が0だが。理由は不明。
まとめ
30
• 管理者権限で実行しましょう。
• スキャンタイプって色々あって奥深いね。
• NAT環境だと思わぬ結果になることがあ
るから、気を付けようね。

Nmapの真実(続)