もう「何も言えねぇ」
Nmap 9つの真実
自己紹介
小河 哲之
Twitter:abend
ISOG-WG1
Burp Suite Japan User Group
Prosit
2
きっかけ
Software Design5月号
にNmapについて記事を
寄稿しました。記事執筆の
過程で気づいたことなどを
ご紹介します。
※資料中、バージョンの記載
がないものはv7.12を抜粋
3
はじめに
Nmapに存在する8つの隠しオプションと
Nmapが発見できるたった1つのマルウェア(ワー
ム)の検出方法や、どうすればうまく活用できる
のかをご紹介します。
8つの隠しオプション+1つのマルウェア=9つの真実
4
Nmap
ネットワークスキャナの1つ。Gordon Lyonが
1997年に作成。
- ポートスキャン
- ホストの探索
- OSやサービスの検出
- 脆弱性スキャン
5
8つの隠しオプション
Reference Guideやhelpに記載されている
ものが、Nmapのすべてのオプションとは限らな
い。
6
--noninteractive
7
--noninteractive
Nmapはインタラクティブなアプリケーションです。
Starting Nmap 7.25BETA1
( https://nmap.org ) at 2016-07-30 23:38 JST
Stats: 0:00:01 elapsed; 0 hosts completed
(1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 0.10%
done
8
--noninteractive
実行中にEnterとか連打して、進捗状況を確
認したりしますよね。これをできなくするためのオ
プション。
9
--noninteractive
nmap_tty.ccの336行目から342行目抜粋。
"Interactive keyboard commands:n"
"? Display this informationn"
"v/V Increase/decrease verbosityn"
"d/D Increase/decrease debuggingn"
"p/P Enable/disable packet tracingn"
"anything else Print statusn"
"More help: https://nmap.org/book/man-runtime-
interaction.htmln");
10
--noninteractive
Starting Nmap 7.25BETA1 ( https://nmap.org ) at
2016-07-30 23:39 JST
Packet Tracing enabled.
SENT (1.6510s) TCP 192.168.217.130:45411 >
192.168.217.131:8888 S ttl=41 id=54162 iplen=44
seq=1659576208 win=1024 <mss 1460>
RCVD (1.6509s) TCP 192.168.217.131:8888 >
192.168.217.130:45411 RA ttl=64 id=0 iplen=40
seq=0 win=0
Packet Tracing disabled.
11
pを押した
Pを押した
--noninteractive
packet traceやdebugもオプションつけ忘れ
た場合に有効化することや、オプションを付けて
いたが途中から無効化することも可能。
12
--noninteractive
「スキャンがめちゃくちゃ遅いときにちゃんとパケッ
ト飛んでいるか確認するために、一時的に有効
化する」などの用途があります。
--noninteractiveをつけると、これらができな
くなる。
13
--noninteractive
日本語のリファレンスガイドを見ると
14
--noninteractive
v4.00(2006/1/31)に追加されたオプション
なので、日本語のリファレンスガイドはそれ以前
に書かれたものだと推測される。
15
16
--noninteractive
結論:
役に立たない
--nogcc
17
--nogcc
セグメント単位でスキャンする場合に一斉にパ
ケット送る。そのため、スキャンにかかる時間が
短い。
10回の平均時間(同セグの/24にSYN Scan)
オプションなし:9.62sec
--nogccオプションあり:3.73sec
18
--nogcc
19
0
50
100
150
200
250
300
350
0
0.27
0.54
0.81
1.08
1.35
1.62
1.89
2.16
2.43
2.7
2.97
3.24
3.51
3.78
4.05
4.32
4.59
4.86
5.13
5.4
5.67
5.94
6.21
6.48
6.75
7.02
7.29
7.56
7.83
8.1
8.37
8.64
8.91
9.18
9.45
9.72
9.99
10.26
10.53
10.8
packet
second
nogcc 3.72sec
オプションなし 11.06sec
--nogcc
filterされているホストと何らかのサービスが稼
働するホスト 計2ホストが検出されなかった。
オプションなし:9ホスト
--nogccオプションあり:7ホスト
※1ホストについては、arpの応答が遅いためと
推測される。--send-ipオプションで改善。
20
--nogcc
nmapでは輻輳制御が行われていますが、--
nogccは輻輳制御を行わないために一斉にパ
ケットが送信されます。
21
--nogcc
scan_engine.ccの394行目から403行目
を抜粋。
/* In case the user specifically asked for no
group congestion control */
if (o.nogcc) {
if (when)
*when = USI->now;
return true;
}
22
--nogcc
Nmapの輻輳制御は3つのポイントで行われま
す。
• congestion window
• exponential backoff
• slow start
23
--nogcc
• congestion window
→ drop検知時にパケットを減らす
• exponential backoff
→ drop検知時に劇的に速度を遅くする
• slow start
→ 徐々にスキャン速度を上げていく
24
--nogcc
--nogccは一斉に送信するので、負荷が高く
なる可能性があります。また、輻輳制御が行わ
れないことによる結果の精度低下も予想され、
検出漏れにつながる可能性がある。
やんちゃな方のためのオプション。
25
26
--nogcc
結論:
やんちゃな方以外、役に立た
ない
--route-dst
27
--route-dst
インタフェースごとに指定したIPのルーティング先
を確認するためのオプション。
# nmap –e eth0 --route-dst 8.8.8.8
Starting Nmap 7.25BETA1 ( https://nmap.org ) at
2016-09-20 12:41 JST
8.8.8.8
eth0 eth0 srcaddr 192.168.1.209 nexthop
192.168.1.254
28
29
--route-dst
結論:
役に立たない
-I(大文字のi)
30
-I(大文字のi)
ident scanはそもそも実装されていないらしい。
case 'I':
error("WARNING: identscan (-
I) no longer supported. Ignoring
-I");
break;
// o.identscan++; break;
31
-thc
33
-thc
# nmap -thc
!!Greets to Van Hauser, Plasmoid,
Skyper and the rest of THC!!
おめでとうってことらしい。
34
35
-thc
結論:
役に立たない
-oH
36
HTMLで出力できるオプション。エスケープに漏
れがあれば、XSSの可能性も。
37
-oH
-oH
2.30BETA16から3.93までは、
} else if
(strcmp(long_options[option_index].name,
"oH") == 0) {
fatal("HTML output is not yet
supported");
※すべてのバージョンを確認してません。
38
-oH
3.94ALPHA1からは7.12
} else if
(strcmp(long_options[option_index].name,
"oH") == 0) {
fatal("HTML output is not directly
supported, though Nmap includes an XSL
for transforming XML output into HTML.
See the man page.");
※すべてのバージョンを確認してません。
39
-oH
これまで(たぶん)一度も実装されなかったオプ
ションだと思われる。NmapのXSSは見てみた
かった。
40
41
-oH
結論:
役に立たない
--ff
42
--ff
16byteにフラグメントしてくれるオプション。
Referenceに載っている「-f」は8byteにフラグ
メントするオプション。
43
--ff
「-f」、「--ff」ともにフラグメントするbyte数を加
算していく。
} else if
(strcmp(long_options[option_index].
name, "ff") == 0) {
o.fragscan += 16;
44
--ff
この場合はどうなるでしょうか。
45
nmap -f -f --ff --ff 192.168.1.1
--ff
「-f」8byte × 2 + 「--ff」16byte×2 =
48byteでフラグメントされる。「-v」、「-vv」も
同様に、つければつけるほど、verboseは高く
なる。
46
--ff
「何byteにフラグメントされるでしょう?」という小
学生レベルの算数が学べる。
nmap -f -f --ff 192.168.1.1
47
--ff
ただ単にフラグメントしたいなら、「-f」や「--ff」
を使うより、「-mtu XX」でフラグメントしたほう
がコマンドが見やすい。
nmap -mtu 24 192.168.1.1
48
49
--ff
結論:
小学生以外、役に立たない
--deprecated-xml-osclass
50
--deprecated-xml-osclass
-oXのosclassタグがosmatchタグの子になる
のかどうかを指定するオプションのようです。用
途が不明。
51
--deprecated-xml-osclass
オプションにハイフンなどの記号が含まれるもの
が他にもありますが、最大遅延時間を指定す
るオプションではどっちが実行可能なオプションで
しょうか。
① --max-scan-delay
② --max_scan_delay
52
--deprecated-xml-osclass
両方とも実行可能です。
Nmapのすべてのオプションで「- 」(ハイフン)、
「_」(アンダーバー)のどちらでも実行できます。
ただし、--max_scan-delayのように「-」、
「_」を混在させるのはダメ、ゼッタイ。
53
--deprecated-xml-osclass
nmap.ccの597行目から598行目を抜粋。
「-」、「_」をそれぞれ定義しています。
{"max_scan_delay", required_argument, 0, 0},
{"max-scan-delay", required_argument, 0, 0},
deprecated-xml-osclassも両方定義され
ている。
54
ソースを見て、これに気づいた時の気持ちが
osscan.ccの1209行目に書かれていたので
ご紹介します。
--deprecated-xml-osclass
55
char *p, *q; /* OH YEAH!!!! */
--deprecated-xml-osclass
56
では、ここで日本語のリファレン
スガイドを見てみましょう。
--deprecated-xml-osclass
57
--deprecated-xml-osclass
58
コンザイ、ダメ、ゼッタイって言ったのに、混在した
ものが記載されている。
--deprecated-xml-osclass
59
実際に使用してみるとどうなるかというと
nmap: unrecognized option '--
max_scan-delay'
See the output of nmap -h for a
summary of options.
コンザイ、ゼッタイ、ダメ
--deprecated-xml-osclass
60
日本語のリファレンスガイドが間違
えている!!
--deprecated-xml-osclass
61
--deprecated-xml-osclass
62
max_scan_delayオプションは・・・
• v3.75(2004/10/18)に追加される。
• v3.99(2006/1/25) から「-」、「_」の両
方が使用可能になる。
--deprecated-xml-osclass
63
v3.75からv3.99(2006/1/25)の間に11
バージョンリリースされている。すべて「_」のみと
なっており、混在したものは存在しなかった。
そのため、ただ単に日本語のリファレンスガイド
はタイプミスであると思われる。
--deprecated-xml-osclass
64
日本語リファレンスガイドは、古いだけではなく
誤りもあった。これを発見した時の気持ちがnet
util.ccの4478行目にありました。
continue; /* D'oh! */
日本語訳:おいおい、なんてこった
--deprecated-xml-osclass
65
66
--deprecated-xml-osclass
結論:
役に立たない
67
~ 途中経過 ~
8オプション、全て役に立たない。
検出可能なたった1つのマルウェア
68
1つのマルウェア(ワーム)
NmapはService Scanでたった1つだけマル
ウェア(に感染したホスト)を見つけることができる。
69
Service Scan
Service Scan(-sVオプション)には、
intensity(--version-intensity)という重み
が存在している。 0から9までの段階があり、特
に指定しない場合はintensityは7になる。
70
Service Scan
nmap-service-probesに各ポートとfinger
printが保存されている。このファイルのrarity
がintensityにあたる。
71
Service Scan
nmap-service-probesに、126パターンが
登録されている。
72
Num
Rarity
2
6
0
3
8 9
12
5
50
31
0
10
20
30
40
50
60
None 1 2 3 4 5 6 7 8 9
intensityを
指定していな
ければ実施さ
れない
Service Scan
-sVオプションだけでは、3割程度しか活用でき
ていない。 intensityを指定することでpc-
anywhereやJavaRMIなどを正確に把握で
きる可能性が高まる。
73
Service Scan
いくつかあるrarity 9のひとつ。
Probe TCP mydoom q|x0dx0d|
rarity 9
ports 706,3127-3198
match mydoom
m|x04x5b000000| p/MyDoom
virus backdoor/ v/v012604/
74
Service Scan
いくつかあるrarity 9のひとつ。
Probe TCP mydoom q|x0dx0d|
rarity 9
ports 706,3127-3198
match mydoom
m|x04x5b000000| p/MyDoom
virus backdoor/ v/v012604/
75
_人人人人人人人人人_
> mydoom !? <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
76
Mydoom
77
https://www.ipa.go.jp/security/topics/newvirus/mydoom.html
Mydoom
78
2004年ころにブレイク。メールで感染を広げる
タイプで、特定の期間にwww.sco.comなど
へ攻撃を仕掛ける。特定ポートで待ち受ける。
※2004年は北島康介「チョー気持ちいい」が
流行語大賞になった年
試してみた
79
Windows XP SP3に感染させた。
WORM_MYDOOM.BR
80
Intensityの指定なし
81
# nmap -p- -sV IPアドレス
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
25/tcp open smtp Microsoft ESMTP 6.0.2600.5949
80/tcp open http Microsoft IIS httpd 5.1
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows 98 netbios-ssn
443/tcp open https?
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
1025/tcp open msrpc Microsoft Windows RPC
5424/tcp open unknown
Intensityの指定あり
82
# nmap -p- -sV --version-intensity 9 IPアドレス
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
25/tcp open smtp Microsoft ESMTP 6.0.2600.5949
80/tcp open http Microsoft IIS httpd 5.1
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows 98 netbios-ssn
443/tcp open https?
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
1025/tcp open msrpc Microsoft Windows RPC
5424/tcp open mydoom MyDoom virus backdoor v012604
NmapがMydoomに対応!!
83
Nmap 4.00(2006年1月31日リリース)に
probeが追加されている。約2年間かけて、
NmapがMydoomに対応!!
これでMydoomなんて怖くない
84
だが、オプションをつけるだけでMydoomが見つ
かるようになるなんて、もう
85
何も言えねぇ
86
たった1つのマルウェア検出
結論:
Mydoomに困っている人以
外、役に立たない
87
まとめ
88
まとめ
9つの真実はどれも役に立たない。
Reference Guideやhelpに記載されていな
いのも、当たり前なのかもしれない。
Nmap
ネットワークスキャナの1つ。Gordon Lyonが1997
年に作成。
- ポートスキャン
- ホストの探索
- OSやサービスの検出
- 脆弱性スキャン
- やんちゃのサポート
- 算数のお勉強
- 1つのワームを検出
89
New!!
最後に
service_scan.ccの845行目を見ながらお
別れをしようと思います。
90
if (newstrlen < 3) return -1;
// Have a nice day!
91

Nmap 9つの真実