nmapの真実

88
100 年年年年年年年年年年年 Nmap ののの

Upload: abendcve99990001

Post on 08-Jan-2017

12.416 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Nmapの真実

100 年後にまた会いましょうNmapの真実

Page 2: Nmapの真実

自己紹介小河 哲之Twitter : abend

ISOG-WG1Burp Suite Japan ユーザグループ

Page 3: Nmapの真実

言いたい事

100 年後、 Nmap にまた会いたい。

Page 4: Nmapの真実

why

なぜ、その結論に至ったのか。その真実をご紹介します。

Page 5: Nmapの真実

Nmap

Network Mapper の略。ポートスキャン、ホスト探索、セキュリティチェックを行うためのソフトウエア。オープンソース。

Page 6: Nmapの真実

きっかけは

1 通のメッセージから始まった。

Page 7: Nmapの真実

きっかけは

Software Design で Nmap など記事書いてみませんか?

Page 8: Nmapの真実

きっかけは

ええっ!?オレ??

Page 9: Nmapの真実

きっかけは

July Tech Festa で講演聞いたんですよ。

Page 10: Nmapの真実

きっかけは

http://www.slideshare.net/zaki4649/free-securitycheck

Page 11: Nmapの真実

きっかけは

そう、きっかけは July Tech Festa で登壇したから。

Page 12: Nmapの真実

記事を書く

初めて記事を書くことになった。

Page 13: Nmapの真実

誰向け?

対象読者はインフラエンジニア

Page 14: Nmapの真実

記事を書く

しかも、 8 ページも。1200 文字 ×8 ページ =9600 文字

Page 15: Nmapの真実

流れを考えてみた

Nmap がどんなもんか説明して、オプションいくつか説明して終わる。

Page 16: Nmapの真実

なので

なんとかなるかと思い、二つ返事で受諾した。

Page 17: Nmapの真実

まずは

とりあえず、リファレンスを読み返してみた。

Page 18: Nmapの真実

リファレンス

Page 19: Nmapの真実

ウェーイ

日本語のリファレンスって、嬉しいよね。

Page 20: Nmapの真実

だが、しかし

これが、真実とは限らない。

Page 21: Nmapの真実

Ping Scan

-sP (Ping スキャン ) って、 Ping打つよね?

Page 22: Nmapの真実

Ping Scan

Page 23: Nmapの真実

Ping Scan

Ping だけではなかった。

Page 24: Nmapの真実

Ping Scan

80/TCP へのアクセスもあるって。

Page 25: Nmapの真実

だが、しかし

真実は異なる。

Page 26: Nmapの真実

Wow

Page 27: Nmapの真実

見えてきた

ICMP 、 80/TCP 、 443/TCP へパケットを送る。

Page 28: Nmapの真実

パケットの真実

同セグメントの場合、 ARP も送る。

Page 29: Nmapの真実

リファレンスの真実

Page 30: Nmapの真実

リファレンスは語る

-sP は以前のオプションで、今は -sn オプション。

Page 31: Nmapの真実

古いんだよ

日本語のリファレンスには -sn オプションの記載はない。

Page 32: Nmapの真実

そう、真実は

日本語のリファレンスより英語のリファレンス読め。

Page 33: Nmapの真実

次の真実

-T オプションでタイミングの調整ができる。

Page 34: Nmapの真実

設定値は

-T0 から -T5 の 6 段階で制御可能。Nmap は -T3 がデフォルト。

Page 35: Nmapの真実

どんな制御?

具体的にどのような調整がされるのだろうか。

Page 36: Nmapの真実

リファレンス

Page 37: Nmapの真実

ほぅ

-T0 だと 5 分に 1 回パケットを送る。-T1 だと 15 秒、 -T2 は 0.4 秒に1 回。

Page 38: Nmapの真実

他にもいろいろある

-T4 は失敗時の再送回数 6 回、 -T5 は 2 回などなど・・・。

Page 39: Nmapの真実

これだけ?

-T0 とかの再送回数は?

Page 40: Nmapの真実

リファレンスでも

英語のリファレンスにも書かれていない。

Page 41: Nmapの真実

そう、真実は

ソースの中にしかない。

Page 42: Nmapの真実

いろいろあった 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); }

Page 43: Nmapの真実

そう、真実は

-T0 は平行処理数は 1 で、遅延時間は 5 分に 1 回、再送回数は 10回(抜粋)

Page 44: Nmapの真実

そう、真実は

-T1 は平行処理数は 1 で、遅延時間は 15 秒、再送回数は 10 回(抜粋)

Page 45: Nmapの真実

そう、真実は

-T2 は平行処理数は 1 で、遅延時間は 0.4 秒、再送回数は 10 回(抜粋)

Page 46: Nmapの真実

そう、真実は

-T3 は平行処理数および遅延時間はネットワーク状況に応じて変動、再送回数は 10 回(抜粋)

Page 47: Nmapの真実

そう、真実は

-T4 は平行処理数はネットワーク状況により変動、応答時間の最大タイムアウトは 1250 ミリ秒、遅延時間は 10 ミリ秒、再送回数は6 回(抜粋)

Page 48: Nmapの真実

そう、真実は

-T5 は平行処理数はネットワーク状況により変動、応答時間の最大タイムアウトは 300 ミリ秒、遅延時間は 5 ミリ秒、再送回数は 2 回(抜粋)

Page 49: Nmapの真実

そう、真実は

ソースの中にしかない。

Page 50: Nmapの真実

では

scan-delay は遅延時間を指定可能

Page 51: Nmapの真実

リファレンスには

Page 52: Nmapの真実

というわけで

--scan-delay 100ms で 0.1 秒間に 1 パケット

Page 53: Nmapの真実

キャプチャしてみる

Time

Page 54: Nmapの真実

ふむ

約 0.1 秒間に 1 パケット送っている。

Page 55: Nmapの真実

ふむ

portscan servicescan

Time

Page 56: Nmapの真実

真実

Service Scan は、 0.1 秒ではない。

Page 57: Nmapの真実

真実

ガンガン、パケット出している。

Page 58: Nmapの真実

メールした

[email protected] にバグ報告した。

Page 59: Nmapの真実

回答きた

Nmap 「タイミングは time.ccで実装しているんだよ。」

Page 60: Nmapの真実

回答きた

オレ「うん、そうっぽいね」

Page 61: Nmapの真実

回答きた

Nmap 「 Service Scan はそれ実装していなかった。」

Page 62: Nmapの真実

回答きた

オレ「やっぱ!!」

Page 63: Nmapの真実

回答きた

Nmap 「次のプロジェクトで実装するよ。」

Page 64: Nmapの真実

回答きた

オレ「・・・。」

Page 65: Nmapの真実

ソース読んでいたんです。

他にバグがないか、ソース見てたんです。

Page 66: Nmapの真実

X

XT H E X F I L E S

Page 67: Nmapの真実

X

X は、 Xmas Scan の X

Page 68: Nmapの真実

Xmas Scan

Xmas Scan は、 Nmap だとFIN 、 PSH 、 URG のフラグ設定し投げる。

Page 69: Nmapの真実

Xmas Scan

RST が帰ってくるかどうかでポートの状況を判断する。

Page 70: Nmapの真実

由来

色々なフラグが ON になっているから Xmas ツリーがライトアップされているみたいだからだそう。

Page 71: Nmapの真実

Xでも Xmas

2016 年の Xmas は日曜日。

Page 72: Nmapの真実

Xでも Xmas

そんな日に、 Nmap かけるんなら

Page 73: Nmapの真実

Xでも Xmas

-v ( Verbos オプション)をつけて。

Page 74: Nmapの真実

Message from Nmap

Nmap がこんなことを言ってくれる。

Page 75: Nmapの真実

Merry Christmas

Nmap wishes you a merry Christmas! Specify -sX for Xmas Scan (https://nmap.org/book/man-port-scanning-techniques.html).

Page 76: Nmapの真実

よく見て

Xmas だから Xmas Scan に何かを起こるわけではないが

Page 77: Nmapの真実

Merry Christmas

チキンとケーキがなくても Nmap が祝ってくれる。

Page 78: Nmapの真実

オレ、使ったことないけど。

-sX も使ってあげて。活用できるか不明だけど。

Page 79: Nmapの真実

Xmasだけじゃない

Nmap が祝うのは、 Xmas だけではない。

Page 80: Nmapの真実

他にもある

2016 年 9 月 1 日に -v を付けて試してみよう。

Page 81: Nmapの真実

Message from Nmap

Nmap がこんなことを言ってくれる。

Page 82: Nmapの真実

2016/9/1

Happy 19th Birthday to Nmap, may it live to be 119!

Page 83: Nmapの真実

2016/9/1

Nmap は自分自身を祝う。

Page 84: Nmapの真実

2116/9/1

そして、 100 年後の Nmap も。

Page 85: Nmapの真実

結論

なので、

Page 86: Nmapの真実

Happy Birthday!!

100 年後、 Nmap にまた会いたい。

Page 87: Nmapの真実

宣伝

オプションの説明とかはSoftware Design に紙面の許される限り記載しています(初心者向け)。

Page 88: Nmapの真実

宣伝

続きは Software Design5 月号で。