100年後にまた会いましょう
Nmapの真実
自己紹介
小河 哲之
Twitter:abend
ISOG-WG1
Burp Suite Japan ユーザグループ
言いたい事
100年後、Nmapにまた会いたい。
why
なぜ、その結論に至ったのか。
その真実をご紹介します。
Nmap
Network Mapperの略。ポートスキャン、ホスト
探索、セキュリティチェックを行うためのソフト
ウエア。オープンソース。
きっかけは
1通のメッセージから始まった。
きっかけは
Software DesignでNmapなど記事書
いてみませんか?
きっかけは
ええっ!?オレ??
きっかけは
July Tech Festaで講演聞いたんですよ。
きっかけは
http://www.slideshare.net/zaki4649
/free-securitycheck
きっかけは
そう、きっかけはJuly Tech Festaで登
壇したから。
記事を書く
初めて記事を書くことになった。
誰向け?
対象読者はインフラエンジニア
記事を書く
しかも、8ページも。
1200文字×8ページ=9600文字
流れを考えてみた
Nmapがどんなもんか説明して、オプ
ションいくつか説明して終わる。
なので
なんとかなるかと思い、二つ返事で
受諾した。
まずは
とりあえず、リファレンスを読み返して
みた。
リファレンス
ウェーイ
日本語のリファレンスって、嬉しいよ
ね。
だが、しかし
これが、真実とは限らない。
Ping Scan
-sP (Ping スキャン)って、Ping打つよ
ね?
Ping Scan
Ping Scan
Pingだけではなかった。
Ping Scan
80/TCPへのアクセスもあるって。
だが、しかし
真実は異なる。
Wow
見えてきた
ICMP、80/TCP、443/TCPへパケット
を送る。
パケットの真実
同セグメントの場合、ARPも送る。
リファレンスの真実
リファレンスは語る
-sPは以前のオプションで、今は-snオ
プション。
古いんだよ
日本語のリファレンスには-snオプショ
ンの記載はない。
そう、真実は
日本語のリファレンスより英語のリファ
レンス読め。
次の真実
-Tオプションでタイミングの調整がで
きる。
設定値は
-T0から-T5の6段階で制御可能。
Nmapは-T3がデフォルト。
どんな制御?
具体的にどのような調整がされるの
だろうか。
リファレンス
ほぅ
-T0だと5分に1回パケットを送る。
-T1だと15秒、-T2は0.4秒に1回。
他にもいろいろある
-T4は失敗時の再送回数6回、-T5は2
回などなど・・・。
これだけ?
-T0とかの再送回数は?
リファレンスでも
英語のリファレンスにも書かれていな
い。
そう、真実は
ソースの中にしかない。
いろいろあった
case 'T':
if (*optarg == '0' || (strcasecmp(optarg, "Paranoid") == 0)) {
o.timing_level = 0;
o.max_parallelism = 1...
そう、真実は
-T0は平行処理数は1で、遅延時間は
5分に1回、再送回数は10回
(抜粋)
そう、真実は
-T1は平行処理数は1で、遅延時間は
15秒、再送回数は10回
(抜粋)
そう、真実は
-T2は平行処理数は1で、遅延時間は
0.4秒、再送回数は10回
(抜粋)
そう、真実は
-T3は平行処理数および遅延時間は
ネットワーク状況に応じて変動、再送
回数は10回
(抜粋)
そう、真実は
-T4は平行処理数はネットワーク状況
により変動、応答時間の最大タイムア
ウトは1250ミリ秒、遅延時間は10ミリ秒、
再送回数は6回
(抜粋)
そう、真実は
-T5は平行処理数はネットワーク状況
により変動、応答時間の最大タイムア
ウトは300ミリ秒、遅延時間は5ミリ秒、
再送回数は2回
(抜粋)
そう、真実は
ソースの中にしかない。
では
scan-delayは遅延時間を指定可能
リファレンスには
というわけで
--scan-delay 100ms で0.1秒間に1パ
ケット
キャプチャしてみる
Time
ふむ
約0.1秒間に1パケット送っている。
ふむ
portscan servicescan
Time
真実
Service Scanは、0.1秒ではない。
真実
ガンガン、パケット出している。
メールした
dev@nmap.orgにバグ報告した。
回答きた
Nmap「タイミングはtime.ccで実装して
いるんだよ。」
回答きた
オレ「うん、そうっぽいね」
回答きた
Nmap「Service Scanはそれ実装してい
なかった。」
回答きた
オレ「やっぱ!!」
回答きた
Nmap「次のプロジェクトで実装する
よ。」
回答きた
オレ「・・・。」
ソース読んでいたんです。
他にバグがないか、ソース見てたん
です。
X
T H E X F I L E S
X
Xは、Xmas ScanのX
Xmas Scan
Xmas Scanは、NmapだとFIN、PSH、
URGのフラグ設定し投げる。
Xmas Scan
RSTが帰ってくるかどうかでポートの
状況を判断する。
由来
色々なフラグがONになっているから
Xmasツリーがライトアップされている
みたいだからだそう。
XでもXmas
2016年のXmasは日曜日。
XでもXmas
そんな日に、Nmapかけるんなら
XでもXmas
-v( Verbosオプション)をつけて。
Message from Nmap
Nmapがこんなことを言ってくれる。
Merry Christmas
Nmap wishes you a merry Christmas!
Specify -sX for Xmas Scan
(https://nmap.org/book/man-port-
scanning-tec...
よく見て
XmasだからXmas Scanに何かを起こ
るわけではないが
Merry Christmas
チキンとケーキがなくてもNmapが祝って
くれる。
オレ、使ったことないけど。
-sXも使ってあげて。
活用できるか不明だけど。
Xmasだけじゃない
Nmapが祝うのは、Xmasだけではな
い。
他にもある
2016年9月1日に-vを付けて試してみ
よう。
Message from Nmap
Nmapがこんなことを言ってくれる。
2016/9/1
Happy 19th Birthday to Nmap, may it
live to be 119!
2016/9/1
Nmapは自分自身を祝う。
2116/9/1
そして、100年後のNmapも。
結論
なので、
Happy Birthday!!
100年後、Nmapにまた会いたい。
宣伝
オプションの説明とかはSoftware
Designに紙面の許される限り記載し
ています(初心者向け)。
宣伝
続きはSoftware Design5月号で。
Upcoming SlideShare
Loading in …5
×

Nmapの真実

184 views

Published on

Nmap

Published in: Engineering

Nmapの真実

  1. 1. 100年後にまた会いましょう Nmapの真実
  2. 2. 自己紹介 小河 哲之 Twitter:abend ISOG-WG1 Burp Suite Japan ユーザグループ
  3. 3. 言いたい事 100年後、Nmapにまた会いたい。
  4. 4. why なぜ、その結論に至ったのか。 その真実をご紹介します。
  5. 5. Nmap Network Mapperの略。ポートスキャン、ホスト 探索、セキュリティチェックを行うためのソフト ウエア。オープンソース。
  6. 6. きっかけは 1通のメッセージから始まった。
  7. 7. きっかけは Software DesignでNmapなど記事書 いてみませんか?
  8. 8. きっかけは ええっ!?オレ??
  9. 9. きっかけは July Tech Festaで講演聞いたんですよ。
  10. 10. きっかけは http://www.slideshare.net/zaki4649 /free-securitycheck
  11. 11. きっかけは そう、きっかけはJuly Tech Festaで登 壇したから。
  12. 12. 記事を書く 初めて記事を書くことになった。
  13. 13. 誰向け? 対象読者はインフラエンジニア
  14. 14. 記事を書く しかも、8ページも。 1200文字×8ページ=9600文字
  15. 15. 流れを考えてみた Nmapがどんなもんか説明して、オプ ションいくつか説明して終わる。
  16. 16. なので なんとかなるかと思い、二つ返事で 受諾した。
  17. 17. まずは とりあえず、リファレンスを読み返して みた。
  18. 18. リファレンス
  19. 19. ウェーイ 日本語のリファレンスって、嬉しいよ ね。
  20. 20. だが、しかし これが、真実とは限らない。
  21. 21. Ping Scan -sP (Ping スキャン)って、Ping打つよ ね?
  22. 22. Ping Scan
  23. 23. Ping Scan Pingだけではなかった。
  24. 24. Ping Scan 80/TCPへのアクセスもあるって。
  25. 25. だが、しかし 真実は異なる。
  26. 26. Wow
  27. 27. 見えてきた ICMP、80/TCP、443/TCPへパケット を送る。
  28. 28. パケットの真実 同セグメントの場合、ARPも送る。
  29. 29. リファレンスの真実
  30. 30. リファレンスは語る -sPは以前のオプションで、今は-snオ プション。
  31. 31. 古いんだよ 日本語のリファレンスには-snオプショ ンの記載はない。
  32. 32. そう、真実は 日本語のリファレンスより英語のリファ レンス読め。
  33. 33. 次の真実 -Tオプションでタイミングの調整がで きる。
  34. 34. 設定値は -T0から-T5の6段階で制御可能。 Nmapは-T3がデフォルト。
  35. 35. どんな制御? 具体的にどのような調整がされるの だろうか。
  36. 36. リファレンス
  37. 37. ほぅ -T0だと5分に1回パケットを送る。 -T1だと15秒、-T2は0.4秒に1回。
  38. 38. 他にもいろいろある -T4は失敗時の再送回数6回、-T5は2 回などなど・・・。
  39. 39. これだけ? -T0とかの再送回数は?
  40. 40. リファレンスでも 英語のリファレンスにも書かれていな い。
  41. 41. そう、真実は ソースの中にしかない。
  42. 42. いろいろあった case 'T': if (*optarg == '0' || (strcasecmp(optarg, "Paranoid") == 0)) { o.timing_level = 0; o.max_parallelism = 1; o.scan_delay = 300000; o.setInitialRttTimeout(300000); } else if (*optarg == '1' || (strcasecmp(optarg, "Sneaky") == 0)) { o.timing_level = 1; o.max_parallelism = 1; o.scan_delay = 15000; o.setInitialRttTimeout(15000); } else if (*optarg == '2' || (strcasecmp(optarg, "Polite") == 0)) { o.timing_level = 2; o.max_parallelism = 1; o.scan_delay = 400; } else if (*optarg == '3' || (strcasecmp(optarg, "Normal") == 0)) { } else if (*optarg == '4' || (strcasecmp(optarg, "Aggressive") == 0)) { o.timing_level = 4; o.setMinRttTimeout(100); o.setMaxRttTimeout(1250); o.setInitialRttTimeout(500); o.setMaxTCPScanDelay(10); o.setMaxSCTPScanDelay(10); o.setMaxRetransmissions(6); } else if (*optarg == '5' || (strcasecmp(optarg, "Insane") == 0)) { o.timing_level = 5; o.setMinRttTimeout(50); o.setMaxRttTimeout(300); o.setInitialRttTimeout(250); o.host_timeout = 900000; o.setMaxTCPScanDelay(5); o.setMaxSCTPScanDelay(5); o.setMaxRetransmissions(2); }
  43. 43. そう、真実は -T0は平行処理数は1で、遅延時間は 5分に1回、再送回数は10回 (抜粋)
  44. 44. そう、真実は -T1は平行処理数は1で、遅延時間は 15秒、再送回数は10回 (抜粋)
  45. 45. そう、真実は -T2は平行処理数は1で、遅延時間は 0.4秒、再送回数は10回 (抜粋)
  46. 46. そう、真実は -T3は平行処理数および遅延時間は ネットワーク状況に応じて変動、再送 回数は10回 (抜粋)
  47. 47. そう、真実は -T4は平行処理数はネットワーク状況 により変動、応答時間の最大タイムア ウトは1250ミリ秒、遅延時間は10ミリ秒、 再送回数は6回 (抜粋)
  48. 48. そう、真実は -T5は平行処理数はネットワーク状況 により変動、応答時間の最大タイムア ウトは300ミリ秒、遅延時間は5ミリ秒、 再送回数は2回 (抜粋)
  49. 49. そう、真実は ソースの中にしかない。
  50. 50. では scan-delayは遅延時間を指定可能
  51. 51. リファレンスには
  52. 52. というわけで --scan-delay 100ms で0.1秒間に1パ ケット
  53. 53. キャプチャしてみる Time
  54. 54. ふむ 約0.1秒間に1パケット送っている。
  55. 55. ふむ portscan servicescan Time
  56. 56. 真実 Service Scanは、0.1秒ではない。
  57. 57. 真実 ガンガン、パケット出している。
  58. 58. メールした dev@nmap.orgにバグ報告した。
  59. 59. 回答きた Nmap「タイミングはtime.ccで実装して いるんだよ。」
  60. 60. 回答きた オレ「うん、そうっぽいね」
  61. 61. 回答きた Nmap「Service Scanはそれ実装してい なかった。」
  62. 62. 回答きた オレ「やっぱ!!」
  63. 63. 回答きた Nmap「次のプロジェクトで実装する よ。」
  64. 64. 回答きた オレ「・・・。」
  65. 65. ソース読んでいたんです。 他にバグがないか、ソース見てたん です。
  66. 66. X T H E X F I L E S
  67. 67. X Xは、Xmas ScanのX
  68. 68. Xmas Scan Xmas Scanは、NmapだとFIN、PSH、 URGのフラグ設定し投げる。
  69. 69. Xmas Scan RSTが帰ってくるかどうかでポートの 状況を判断する。
  70. 70. 由来 色々なフラグがONになっているから Xmasツリーがライトアップされている みたいだからだそう。
  71. 71. XでもXmas 2016年のXmasは日曜日。
  72. 72. XでもXmas そんな日に、Nmapかけるんなら
  73. 73. XでもXmas -v( Verbosオプション)をつけて。
  74. 74. Message from Nmap Nmapがこんなことを言ってくれる。
  75. 75. Merry Christmas Nmap wishes you a merry Christmas! Specify -sX for Xmas Scan (https://nmap.org/book/man-port- scanning-techniques.html).
  76. 76. よく見て XmasだからXmas Scanに何かを起こ るわけではないが
  77. 77. Merry Christmas チキンとケーキがなくてもNmapが祝って くれる。
  78. 78. オレ、使ったことないけど。 -sXも使ってあげて。 活用できるか不明だけど。
  79. 79. Xmasだけじゃない Nmapが祝うのは、Xmasだけではな い。
  80. 80. 他にもある 2016年9月1日に-vを付けて試してみ よう。
  81. 81. Message from Nmap Nmapがこんなことを言ってくれる。
  82. 82. 2016/9/1 Happy 19th Birthday to Nmap, may it live to be 119!
  83. 83. 2016/9/1 Nmapは自分自身を祝う。
  84. 84. 2116/9/1 そして、100年後のNmapも。
  85. 85. 結論 なので、
  86. 86. Happy Birthday!! 100年後、Nmapにまた会いたい。
  87. 87. 宣伝 オプションの説明とかはSoftware Designに紙面の許される限り記載し ています(初心者向け)。
  88. 88. 宣伝 続きはSoftware Design5月号で。

×