nmap 9つの真実
TRANSCRIPT
もう「何も言えねぇ」
Nmap 9 つの真実
自己紹介
小河 哲之Twitter : abend
ISOG-WG1Burp Suite Japan User GroupProsit
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
--noninteractiveNmap はインタラクティブなアプリケーションです。
Starting Nmap 7.25BETA1 ( https://nmap.org ) at 2016-07-30 23:38 JSTStats: 0:00:01 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth ScanSYN Stealth Scan Timing: About 0.10% done
8
--noninteractive実行中に Enter とか連打して、進捗状況を確認したりしますよね。これをできなくするためのオプション。
9
--noninteractivenmap_tty.cc の 336 行目から 342 行目抜粋。"Interactive keyboard commands:\n""? Display this information\n""v/V Increase/decrease verbosity\n""d/D Increase/decrease debugging\n""p/P Enable/disable packet tracing\n""anything else Print status\n" "More help: https://nmap.org/book/man-runtime-interaction.html\n");
10
--noninteractiveStarting Nmap 7.25BETA1 ( https://nmap.org ) at 2016-07-30 23:39 JSTPacket 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=0Packet Tracing disabled.
11
p を押した
P を押した
--noninteractivepacket trace や debug もオプションつけ忘れた場合に有効化することや、オプションを付けていたが途中から無効化することも可能。
12
--noninteractive「スキャンがめちゃくちゃ遅いときにちゃんとパケット飛んでいるか確認するために、一時的に有効化する」などの用途があります。
--noninteractive をつけると、これらができなくなる。
13
--noninteractive日本語のリファレンスガイドを見ると
14
--noninteractivev4.00(2006/1/31) に追加されたオプションなので、日本語のリファレンスガイドはそれ以前に書かれたものだと推測される。
15
16
--noninteractive
結論:役に立たない
--nogcc
17
--nogccセグメント単位でスキャンする場合に一斉にパケット送る。そのため、スキャンにかかる時間が短い。
10 回の平均時間 ( 同セグの /24 に SYN Scan)オプションなし: 9.62sec--nogcc オプションあり: 3.73sec
18
--nogcc
19
0 0.42 0.84 1.26 1.68 2.1 2.52 2.94 3.36 3.78 4.2 4.62 5.04 5.46 5.88 6.3 6.72 7.14 7.56 7.98 8.4 8.82 9.24 9.6610.0810.510.920
50
100
150
200
250
300
350
pack
et
second
nogcc 3.72secオプションなし 11.06sec
--nogccfilter されているホストと何らかのサービスが稼働するホスト 計 2 ホストが検出されなかった。
オプションなし: 9 ホスト--nogcc オプションあり: 7 ホスト※1 ホストについては、 arp の応答が遅いためと推測される。 --send-ip オプションで改善。 20
--nogccnmap では輻輳制御が行われていますが、 --nogcc は輻輳制御を行わないために一斉にパケットが送信されます。
21
--nogccscan_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
--nogccNmap の輻輳制御は 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.8Starting Nmap 7.25BETA1 ( https://nmap.org ) at 2016-09-20 12:41 JST8.8.8.8eth0 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
--ff16byte にフラグメントしてくれるオプション。 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
日本語リファレンスガイドは、古いだけではなく誤りもあった。これを発見した時の気持ちが netutil.cc の 4478行目にありました。
continue; /* D'oh! */日本語訳:おいおい、なんてこった
--deprecated-xml-osclass
65
66
--deprecated-xml-osclass
結論:役に立たない
67
~ 途中経過 ~
8 オプション、全て役に立たない。
検出可能なたった 1 つのマルウェア
68
1 つのマルウェア ( ワーム )
Nmap は Service Scan でたった 1 つだけマルウェア ( に感染したホスト ) を見つけることができる。
69
Service ScanService Scan(-sV オプション ) には、intensity(--version-intensity) という重みが存在している。 0 から 9 までの段階があり、特に指定しない場合はintensity は 7 になる。
70
Service Scannmap-service-probes に各ポートとfinger print が保存されている。このファイルの rarity が intensity にあたる。
71
Service Scannmap-service-probes に、 126 パターンが登録されている。
72
Num
Rarity0
10
20
30
40
50
60
26
03
8 912
5
50
31
None1 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|\x0d\x0d|rarity 9ports 706,3127-3198match mydoom m|\x04\x5b\0\0\0\0\0\0| p/MyDoom virus backdoor/ v/v012604/
74
Service Scanいくつかある rarity 9 のひとつ。
Probe TCP mydoom q|\x0d\x0d|rarity 9ports 706,3127-3198match mydoom m|\x04\x5b\0\0\0\0\0\0| 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 VERSION21/tcp open ftp Microsoft ftpd25/tcp open smtp Microsoft ESMTP 6.0.2600.594980/tcp open http Microsoft IIS httpd 5.1135/tcp open msrpc Microsoft Windows RPC139/tcp open netbios-ssn Microsoft Windows 98 netbios-ssn443/tcp open https?445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds1025/tcp open msrpc Microsoft Windows RPC5424/tcp open unknown
Intensity の指定あり
82
# nmap -p- -sV --version-intensity 9 IP アドレス
PORT STATE SERVICE VERSION21/tcp open ftp Microsoft ftpd25/tcp open smtp Microsoft ESMTP 6.0.2600.594980/tcp open http Microsoft IIS httpd 5.1135/tcp open msrpc Microsoft Windows RPC139/tcp open netbios-ssn Microsoft Windows 98 netbios-ssn443/tcp open https?445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds1025/tcp open msrpc Microsoft Windows RPC5424/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