Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Nmap 9つの真実

9,646 views

Published on

2016年avtokyo発表資料

Published in: Engineering

Nmap 9つの真実

  1. 1. もう「何も言えねぇ」 Nmap 9つの真実
  2. 2. 自己紹介 小河 哲之 Twitter:abend ISOG-WG1 Burp Suite Japan User Group Prosit 2
  3. 3. きっかけ Software Design5月号 にNmapについて記事を 寄稿しました。記事執筆の 過程で気づいたことなどを ご紹介します。 ※資料中、バージョンの記載 がないものはv7.12を抜粋 3
  4. 4. はじめに Nmapに存在する8つの隠しオプションと Nmapが発見できるたった1つのマルウェア(ワー ム)の検出方法や、どうすればうまく活用できる のかをご紹介します。 8つの隠しオプション+1つのマルウェア=9つの真実 4
  5. 5. Nmap ネットワークスキャナの1つ。Gordon Lyonが 1997年に作成。 - ポートスキャン - ホストの探索 - OSやサービスの検出 - 脆弱性スキャン 5
  6. 6. 8つの隠しオプション Reference Guideやhelpに記載されている ものが、Nmapのすべてのオプションとは限らな い。 6
  7. 7. --noninteractive 7
  8. 8. --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
  9. 9. --noninteractive 実行中にEnterとか連打して、進捗状況を確 認したりしますよね。これをできなくするためのオ プション。 9
  10. 10. --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
  11. 11. --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を押した
  12. 12. --noninteractive packet traceやdebugもオプションつけ忘れ た場合に有効化することや、オプションを付けて いたが途中から無効化することも可能。 12
  13. 13. --noninteractive 「スキャンがめちゃくちゃ遅いときにちゃんとパケッ ト飛んでいるか確認するために、一時的に有効 化する」などの用途があります。 --noninteractiveをつけると、これらができな くなる。 13
  14. 14. --noninteractive 日本語のリファレンスガイドを見ると 14
  15. 15. --noninteractive v4.00(2006/1/31)に追加されたオプション なので、日本語のリファレンスガイドはそれ以前 に書かれたものだと推測される。 15
  16. 16. 16 --noninteractive 結論: 役に立たない
  17. 17. --nogcc 17
  18. 18. --nogcc セグメント単位でスキャンする場合に一斉にパ ケット送る。そのため、スキャンにかかる時間が 短い。 10回の平均時間(同セグの/24にSYN Scan) オプションなし:9.62sec --nogccオプションあり:3.73sec 18
  19. 19. --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
  20. 20. --nogcc filterされているホストと何らかのサービスが稼 働するホスト 計2ホストが検出されなかった。 オプションなし:9ホスト --nogccオプションあり:7ホスト ※1ホストについては、arpの応答が遅いためと 推測される。--send-ipオプションで改善。 20
  21. 21. --nogcc nmapでは輻輳制御が行われていますが、-- nogccは輻輳制御を行わないために一斉にパ ケットが送信されます。 21
  22. 22. --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
  23. 23. --nogcc Nmapの輻輳制御は3つのポイントで行われま す。 • congestion window • exponential backoff • slow start 23
  24. 24. --nogcc • congestion window → drop検知時にパケットを減らす • exponential backoff → drop検知時に劇的に速度を遅くする • slow start → 徐々にスキャン速度を上げていく 24
  25. 25. --nogcc --nogccは一斉に送信するので、負荷が高く なる可能性があります。また、輻輳制御が行わ れないことによる結果の精度低下も予想され、 検出漏れにつながる可能性がある。 やんちゃな方のためのオプション。 25
  26. 26. 26 --nogcc 結論: やんちゃな方以外、役に立た ない
  27. 27. --route-dst 27
  28. 28. --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. 29. 29 --route-dst 結論: 役に立たない
  30. 30. -I(大文字のi) 30
  31. 31. -I(大文字のi) ident scanはそもそも実装されていないらしい。 case 'I': error("WARNING: identscan (- I) no longer supported. Ignoring -I"); break; // o.identscan++; break; 31
  32. 32. -thc 33
  33. 33. -thc # nmap -thc !!Greets to Van Hauser, Plasmoid, Skyper and the rest of THC!! おめでとうってことらしい。 34
  34. 34. 35 -thc 結論: 役に立たない
  35. 35. -oH 36
  36. 36. HTMLで出力できるオプション。エスケープに漏 れがあれば、XSSの可能性も。 37 -oH
  37. 37. -oH 2.30BETA16から3.93までは、 } else if (strcmp(long_options[option_index].name, "oH") == 0) { fatal("HTML output is not yet supported"); ※すべてのバージョンを確認してません。 38
  38. 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
  39. 39. -oH これまで(たぶん)一度も実装されなかったオプ ションだと思われる。NmapのXSSは見てみた かった。 40
  40. 40. 41 -oH 結論: 役に立たない
  41. 41. --ff 42
  42. 42. --ff 16byteにフラグメントしてくれるオプション。 Referenceに載っている「-f」は8byteにフラグ メントするオプション。 43
  43. 43. --ff 「-f」、「--ff」ともにフラグメントするbyte数を加 算していく。 } else if (strcmp(long_options[option_index]. name, "ff") == 0) { o.fragscan += 16; 44
  44. 44. --ff この場合はどうなるでしょうか。 45 nmap -f -f --ff --ff 192.168.1.1
  45. 45. --ff 「-f」8byte × 2 + 「--ff」16byte×2 = 48byteでフラグメントされる。「-v」、「-vv」も 同様に、つければつけるほど、verboseは高く なる。 46
  46. 46. --ff 「何byteにフラグメントされるでしょう?」という小 学生レベルの算数が学べる。 nmap -f -f --ff 192.168.1.1 47
  47. 47. --ff ただ単にフラグメントしたいなら、「-f」や「--ff」 を使うより、「-mtu XX」でフラグメントしたほう がコマンドが見やすい。 nmap -mtu 24 192.168.1.1 48
  48. 48. 49 --ff 結論: 小学生以外、役に立たない
  49. 49. --deprecated-xml-osclass 50
  50. 50. --deprecated-xml-osclass -oXのosclassタグがosmatchタグの子になる のかどうかを指定するオプションのようです。用 途が不明。 51
  51. 51. --deprecated-xml-osclass オプションにハイフンなどの記号が含まれるもの が他にもありますが、最大遅延時間を指定す るオプションではどっちが実行可能なオプションで しょうか。 ① --max-scan-delay ② --max_scan_delay 52
  52. 52. --deprecated-xml-osclass 両方とも実行可能です。 Nmapのすべてのオプションで「- 」(ハイフン)、 「_」(アンダーバー)のどちらでも実行できます。 ただし、--max_scan-delayのように「-」、 「_」を混在させるのはダメ、ゼッタイ。 53
  53. 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
  54. 54. ソースを見て、これに気づいた時の気持ちが osscan.ccの1209行目に書かれていたので ご紹介します。 --deprecated-xml-osclass 55
  55. 55. char *p, *q; /* OH YEAH!!!! */ --deprecated-xml-osclass 56
  56. 56. では、ここで日本語のリファレン スガイドを見てみましょう。 --deprecated-xml-osclass 57
  57. 57. --deprecated-xml-osclass 58 コンザイ、ダメ、ゼッタイって言ったのに、混在した ものが記載されている。
  58. 58. --deprecated-xml-osclass 59 実際に使用してみるとどうなるかというと nmap: unrecognized option '-- max_scan-delay' See the output of nmap -h for a summary of options.
  59. 59. コンザイ、ゼッタイ、ダメ --deprecated-xml-osclass 60
  60. 60. 日本語のリファレンスガイドが間違 えている!! --deprecated-xml-osclass 61
  61. 61. --deprecated-xml-osclass 62 max_scan_delayオプションは・・・ • v3.75(2004/10/18)に追加される。 • v3.99(2006/1/25) から「-」、「_」の両 方が使用可能になる。
  62. 62. --deprecated-xml-osclass 63 v3.75からv3.99(2006/1/25)の間に11 バージョンリリースされている。すべて「_」のみと なっており、混在したものは存在しなかった。 そのため、ただ単に日本語のリファレンスガイド はタイプミスであると思われる。
  63. 63. --deprecated-xml-osclass 64 日本語リファレンスガイドは、古いだけではなく 誤りもあった。これを発見した時の気持ちがnet util.ccの4478行目にありました。
  64. 64. continue; /* D'oh! */ 日本語訳:おいおい、なんてこった --deprecated-xml-osclass 65
  65. 65. 66 --deprecated-xml-osclass 結論: 役に立たない
  66. 66. 67 ~ 途中経過 ~ 8オプション、全て役に立たない。
  67. 67. 検出可能なたった1つのマルウェア 68
  68. 68. 1つのマルウェア(ワーム) NmapはService Scanでたった1つだけマル ウェア(に感染したホスト)を見つけることができる。 69
  69. 69. Service Scan Service Scan(-sVオプション)には、 intensity(--version-intensity)という重み が存在している。 0から9までの段階があり、特 に指定しない場合はintensityは7になる。 70
  70. 70. Service Scan nmap-service-probesに各ポートとfinger printが保存されている。このファイルのrarity がintensityにあたる。 71
  71. 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を 指定していな ければ実施さ れない
  72. 72. Service Scan -sVオプションだけでは、3割程度しか活用でき ていない。 intensityを指定することでpc- anywhereやJavaRMIなどを正確に把握で きる可能性が高まる。 73
  73. 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
  74. 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
  75. 75. _人人人人人人人人人_ > mydoom !? <  ̄Y^Y^Y^Y^Y^Y^Y ̄ 76
  76. 76. Mydoom 77 https://www.ipa.go.jp/security/topics/newvirus/mydoom.html
  77. 77. Mydoom 78 2004年ころにブレイク。メールで感染を広げる タイプで、特定の期間にwww.sco.comなど へ攻撃を仕掛ける。特定ポートで待ち受ける。 ※2004年は北島康介「チョー気持ちいい」が 流行語大賞になった年
  78. 78. 試してみた 79 Windows XP SP3に感染させた。
  79. 79. WORM_MYDOOM.BR 80
  80. 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
  81. 81. 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
  82. 82. NmapがMydoomに対応!! 83 Nmap 4.00(2006年1月31日リリース)に probeが追加されている。約2年間かけて、 NmapがMydoomに対応!!
  83. 83. これでMydoomなんて怖くない 84 だが、オプションをつけるだけでMydoomが見つ かるようになるなんて、もう
  84. 84. 85 何も言えねぇ
  85. 85. 86 たった1つのマルウェア検出 結論: Mydoomに困っている人以 外、役に立たない
  86. 86. 87 まとめ
  87. 87. 88 まとめ 9つの真実はどれも役に立たない。 Reference Guideやhelpに記載されていな いのも、当たり前なのかもしれない。
  88. 88. Nmap ネットワークスキャナの1つ。Gordon Lyonが1997 年に作成。 - ポートスキャン - ホストの探索 - OSやサービスの検出 - 脆弱性スキャン - やんちゃのサポート - 算数のお勉強 - 1つのワームを検出 89 New!!
  89. 89. 最後に service_scan.ccの845行目を見ながらお 別れをしようと思います。 90
  90. 90. if (newstrlen < 3) return -1; // Have a nice day! 91

×