<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 七、 端口掃描技術 作為一個修車新手,我可能折騰幾個小時來摸索怎樣把基本工具(錘子,膠帶,扳子等) 用于手 頭的任務。當我慘痛地失敗,把我的老爺車拖到一個真正的技師那兒的時候,他總是在他的工 具箱里翻來翻去,直到拽出一個完美的工具然后似乎不費吹灰之力搞定它。端口掃描的藝術和 這個類似。專家理解成打的掃描技術,選擇最適合的一種 (或者組合)來完成給定的任務。 另 一方面,沒有經驗的用戶和剛入門者總是用默認的 SYN 掃描解決每個問題。既然 Nmap 是免費的 掌握端口掃描的唯一障礙就是知識。這當然是汽車世界所不能比的,在那里,可能需要高超的 技巧才能確定您需要一個壓桿彈簧壓縮機,接著您還得為它付數千美金。 大部分掃描類型只對特權用戶可用。這是因為他們發送接收原始報文,這在 Unix 系統需要 root 權限。在 Windows 上推薦使用 administrator 賬戶,但是當 WinPcap 已經被加載到操作系統時 非特權用戶也可以正常使用 Nmap 當 Namp 在 1997 年發布時 需要 root 權限是一個嚴重的局限 因為很多用戶只有共享的 shell 賬戶。現在,世界變了,計算機便宜了,更多人擁有互聯網連 接,桌面 UNIX 系統 (包括 Linux 和 MAC OS X)很普遍了。Windows 版本的 Nmap 現在也有了,這 使它可以運行在更多的桌面上。由于所有這些原因,用戶不再需要用有限的共享 shell 賬戶運 行 Nmap。這是很幸運的,因為特權選項讓 Nmap 強大得多也靈活得多。 雖然 Nmap 努力產生正確的結果,但請記住所有結果都是基于目標機器(或者它們前面的防火墻) 返回的報文的。。這些主機也許是不值得信任的,它們可能響應以迷惑或誤導 Nmap 的報文。更 普遍的是非 RFC 兼容的主機以不正確的方式響應 Nmap 探測。FIN,Null 和 Xmas 掃描特別容易遇 到這個問題。這些是特定掃描類型的問題,因此我們在個別掃描類型里討論它們。 這一節討論 Nmap 支持的大約十幾種掃描技術。一般一次只用一種方法,除了 UDP 掃描(-sU)可 能和任何一種 TCP 掃描類型結合使用 友情提示一下 端口掃描類型的選項格式是-sC 其中 C 是 個顯眼的字符,通常是第一個字符。一個例外是 deprecated FTP bounce 掃描(-b)。默認情況 下,Nmap 執行一個 SYN 掃描,但是如果用戶沒有權限發送原始報文(在 UNIX 上需要 root 權限) 或者如果指定的是 IPv6 目標,Nmap 調用 connect()。本節列出的掃描中,非特權用戶只能執行 connect()和 ftp bounce 掃描。 `-sS` (TCP SYN 掃描) SYN 掃描作為默認的也是最受歡迎的掃描選項,是有充分理由的。它執行得很快,在一個 沒有入侵防火墻的快速網絡上,每秒鐘可以掃描數千個端口。 SYN 掃描相對來說不張揚 不易被注意到,因為它從來不完成 TCP 連接。它也不像 Fin/Null/Xmas,Maimon 和 Idle 掃描依賴于特定平臺,而可以應對任何兼容的 TCP 協議棧。它還可以明確可靠地區分 open(開放的), closed(關閉的),和 filtered(被過濾的) 狀態 它常常被稱為半開放掃描,因為它不打開一個完全的 TCP 連接。它發送一個 SYN 報文, 就像您真的要打開一個連接,然后等待響應。 SYN/ACK 表示端口在監聽 (開放),而 RST (復位)表示沒有監聽者。如果數次重發后仍沒響應,該端口就被標記為被過濾。如果收 到 ICMP 不可到達錯誤 (類型 3,代碼 1,2,3,9,10,或者 13),該端口也被標記為被 過濾。 `-sT` (TCP connect()掃描) 當 SYN 掃描不能用時,CP Connect()掃描就是默認的 TCP 掃描。當用戶沒有權限發送原 始報文或者掃描 IPv6 網絡時,就是這種情況。 Instead of writing raw packets as most other scan types do,Nmap 通過創建 connect() 系統調用要求操作系統和目標機以及 端口建立連接,而不像其它掃描類型直接發送原始報文。 這是和 Web 瀏覽器,P2P 客戶 端以及大多數其它網絡應用程序用以建立連接一樣的 高層系統調用 它是叫做 Berkeley Sockets API 編程接口的一部分。Nmap 用該 API 獲得每個連接嘗試的狀態信息,而不是 讀取響應的原始報文。 當 SYN 掃描可用時,它通常是更好的選擇。因為 Nmap 對高層的 connect()調用比對原始 報文控制更少 所以前者效率較低 該系統調用完全連接到開放的目標端口而不是像 SYN 掃描進行半開放的復位。這不僅花更長時間,需要更多報文得到同樣信息,目標機也更 可能記錄下連接。IDS(入侵檢測系統)可以捕獲兩者,但大部分機器沒有這樣的警報系統 當 Nmap 連接,然后不發送數據又關閉連接,許多普通 UNIX 系統上的服務會在 syslog 留 下記錄,有時候是一條加密的錯誤消息。此時,有些真正可憐的服務會崩潰,雖然這不 常發生。如果管理員在日志里看到來自同一系統的一堆連接嘗試,她應該知道她的系統 被掃描了。 `-sU` (UDP 掃描) 雖然互聯網上很多流行的服務運行在 TCP 協議上,[UDP](http://www.rfc-editor.org/rfc/rfc768.txt) 服務也不少。 DNS,SNMP,和 DHCP (注冊的端口是 53,161/162,和 67/68)是最常見的三個。因為 UDP 掃描一般較慢,比 TCP 更困難,一些安全審核人員忽略這些端口。這是一個錯誤,因為可探測的 UDP 服務相當 普遍,攻擊者當然不會忽略整個協議。所幸,Nmap 可以幫助記錄并報告 UDP 端口。 UDP 掃描用`-sU` 選項激活 它可以和 TCP 掃描如 SYN 掃描 (`-sS`)結合使用來同時檢查兩種 協議。 UDP 掃描發送空的(沒有數據)UDP 報頭到每個目標端口。如果返回 ICMP 端口不可到達錯 誤(類型 3,代碼 3),該端口是 closed(關閉的)。 其它 ICMP 不可到達錯誤(類型 3,代 碼 1,2,9,10,或者 13)表明該端口是 filtered(被過濾的)。偶爾地,某服務會響應一 個 UDP 報文,證明該端口是 open(開放的)。如果幾次重試后還沒有響應,該端口就被認為是 open|filtered(開放|被過濾的)。這意味著該端口可能是開放的,也可能包過濾器 正在封鎖通信。可以用版本掃描(-sV)幫助區分真正的開放端口和被過濾的端口。 UDP 掃描的巨大挑戰是怎樣使它更快速。開放的和被過濾的端口很少響應,讓 Nmap 超時 然后再探測,以防探測幀或者響應丟失。關閉的端口常常是更大的問題。它們一般發回 一個 ICMP 端口無法到達錯誤 但是不像關閉的 TCP 端口響應 SYN 或者 Connect 掃描所發 送的 RST 報文,許多主機在默認情況下限制 ICMP 端口不可到達消息。 Linux 和 Solaris 對此特別嚴格。例如, Linux 2.4.20 內核限制一秒鐘只發送一條目標不可到達消息 (見 net/ipv4/icmp。c)。 Nmap 探測速率限制并相應地減慢來避免用那些目標機會丟棄的無用報文來阻塞網絡。不 幸的是,Linux 式的一秒鐘一個報文的限制使 65,536 個端口的掃描要花 18 小時以上。 加速 UDP 掃描的方法包括并發掃描更多的主機,先只對主要端口進行快速掃描,從防火 墻后面掃描,使用--host-timeout 跳過慢速的主機。 `-sN; -sF; -sX` (TCP Null,FIN,and Xmas 掃描) 這三種掃描類型 (甚至用下一節描述的 --scanflags 選項的更多類型) 在 [TCP RFC](http://www.rfc-editor.org/rfc/rfc793.txt) 中 發掘了一個微妙的方法來區分 open(開放的)和 closed(關閉的)端口。第 65 頁說“如果 [目標]端口狀態是關閉的.... 進入的不含 RST 的報文導致一個 RST 響應。” 接下來的 一頁討論不設置 SYN,RST,或者 ACK 位的報文發送到開放端口: “理論上,這不應該發 生,如果您確實收到了,丟棄該報文,返回。 ” 如果掃描系統遵循該 RFC,當端口關閉時,任何不包含 SYN,RST,或者 ACK 位的報文會 導致一個 RST 返回,而當端口開放時,應該沒有任何響應。只要不包含 SYN,RST,或者 ACK,任何其它三種(FIN,PSH,and URG)的組合都行。Nmap 有三種掃描類型利用這一點 Null 掃描 (`-sN`) 不設置任何標志位(tcp 標志頭是 0) FIN 掃描 (`-sF`) 只設置 TCP FIN 標志位。 Xmas 掃描 (-sX) 設置 FIN,PSH,和 URG 標志位,就像點亮圣誕樹上所有的燈一樣。 除了探測報文的標志位不同,這三種掃描在行為上完全一致。如果收到一個 RST 報文, 該端口被認為是 closed(關閉的) 而沒有響應則意味著端口是 open|filtered(開放或者 被過濾的)。如果收到 ICMP 不可到達錯誤(類型 3,代號 1,2,3,9,10,或者 13),該 端口就被標記為 被過濾的。 這些掃描的關鍵優勢是它們能躲過一些無狀態防火墻和報文過濾路由器。另一個優勢是 這些掃描類型甚至比 SYN 掃描還要隱秘一些。但是別依賴它 -- 多數現代的 IDS 產品可 以發現它們。一個很大的不足是并非所有系統都嚴格遵循 RFC 793。 許多系統不管端口 開放還是關閉,都響應 RST。這導致所有端口都標記為 closed(關閉的)。這樣的操作系 統主要有 Microsoft Windows,許多 Cisco 設備,BSDI,以及 IBM OS/400。但是這種掃 描對多數 UNIX 系統都能工作 這些掃描的另一個不足是它們不能辨別 open(開放的)端口 和一些特定的 filtered(被過濾的)端口,從而返回 open|filtered(開放或者被過濾 的)。 `-sA` (TCP ACK 掃描) 這種掃描與目前為止討論的其它掃描的不同之處在于它不能確定 open(開放的)或者 open|filtered(開放或者過濾的))端口。它用于發現防火墻規則,確定它們是有狀態的 還是無狀態的,哪些端口是被過濾的。 ACK 掃描探測報文只設置 ACK 標志位(除非您使用 --scanflags) 當掃描未被過濾的系統 時, open(開放的)和 closed(關閉的) 端口都會返回 RST 報文。Nmap 把它們標記為 unfiltered(未被過濾的),意思是 ACK 報文不能到達,但至于它們是 open(開放的)或者 closed(關閉的) 無法確定。不響應的端口或者發送特定的 ICMP 錯誤消息(類型 3,代號 1,2,3,9,10,或者 13)的端口,標記為 filtered(被過濾的)。 `-sW` (TCP 窗口掃描) 除了利用特定系統的實現細節來區分開放端口和關閉端口,當收到 RST 時不總是打印 unfiltered,窗口掃描和 ACK 掃描完全一樣。它通過檢查返回的 RST 報文的 TCP 窗口域 做到這一點。在某些系統上,開放端口用正數表示窗口大小(甚至對于 RST 報文) 而關閉 端口的窗口大小為 0。因此,當收到 RST 時,窗口掃描不總是把端口標記為 unfiltered 而是根據 TCP 窗口值是正數還是 0,分別把端口標記為 open 或者 closed 該掃描依賴于互聯網上少數系統的實現細節,因此您不能永遠相信它。不支持它的系統 會通常返回所有端口 closed。當然,一臺機器沒有開放端口也是有可能的。如果大部分 被掃描的端口是 closed,而一些常見的端口 (如 22, 25,53) 是 filtered,該系統 就非常可疑了。偶爾地,系統甚至會顯示恰恰相反的行為。 如果您的掃描顯示 1000 個 開放的端口和 3 個關閉的或者被過濾的端口,那么那 3 個很可能也是開放的端口。 `-sM` (TCP Maimon 掃描) Maimon 掃描是用它的發現者 Uriel Maimon 命名的。他在 Phrack Magazine issue #49 (November 1996)中描述了這一技術。 Nmap 在兩期后加入了這一技術。這項技術和 Null FIN,以及 Xmas 掃描完全一樣,除了探測報文是 FIN/ACK。根據 RFC 793 (TCP),無論端 口開放或者關閉,都應該對這樣的探測響應 RST 報文。然而,Uriel 注意到如果端口開放 許多基于 BSD 的系統只是丟棄該探測報文。 `--scanflags` (定制的 TCP 掃描) 真正的 Nmap 高級用戶不需要被這些現成的掃描類型束縛 --scanflags 選項允許您通過 指定任意 TCP 標志位來設計您自己的掃描。讓您的創造力流動,躲開那些僅靠本手冊添 加規則的入侵檢測系統! `--scanflags` 選項可以是一個數字標記值如 9 (PSH 和 FIN),但使用字符名更容易些。只 要是 URG, ACK,PSH, RST,SYN,and FIN 的任何組合就行。例如,--scanflags URGACKPSHRSTSYNFIN 設置了所有標志位,但是這對掃描沒有太大用處。標志位的順序不 重要。 除了設置需要的標志位,您也可以設置 TCP 掃描類型(如-sA 或者-sF)。那個基本類型告 訴 Nmap 怎樣解釋響應。例如, SYN 掃描認為沒有響應意味著 filtered 端口,而 FIN 掃 描則認為是 open|filtered。除了使用您指定的 TCP 標記位,Nmap 會和基本掃描類型一 樣工作。如果您不指定基本類型,就使用 SYN 掃描。 `-sI <zombie host[:probeport]>` (Idlescan) 這種高級的掃描方法允許對目標進行真正的 TCP 端口盲掃描 (意味著沒有報文從您的真 實 IP 地址發送到目標)。相反,side-channel 攻擊 利用 zombie 主機上已知的 IP 分段 ID 序列生成算法來窺探目標上開放端口的信息。 IDS 系統將顯示掃描來自您指定的 zombie 機(必須運行并且符合一定的標準)。 這種奇妙的掃描類型太復雜了,不能在此完 全描述,所以我寫一篇非正式的論文, 發布在 [http://nmap.org/book/idlescan.html](http://nmap.org/book/idlescan.html)。 除了極端隱蔽(由于它不從真實 IP 地址發送任何報文), 該掃描類型可以建立機器間的 基于 IP 的信任關系。 端口列表從 zombie 主機的角度。顯示開放的端口。 因此您可以 嘗試用您認為(通過路由器/包過濾規則)可能被信任的 zombies 掃描目標。 如果您由于 IPID 改變希望探測 zombie 上的特定端口, 您可以在 zombie 主機后加上一 個冒號和端口號。 否則 Nmap 會使用默認端口(80)。 `-sO` (IP 協議掃描) IP 協議掃描可以讓您確定目標機支持哪些 IP 協議 (TCP,ICMP,IGMP,等等)。從技術 上說,這不是端口掃描,既然它遍歷的是 IP 協議號而不是 TCP 或者 UDP 端口號。但是它 仍使用 -p 選項選擇要掃描的協議號,用正常的端口表格式報告結果,甚至用和真正的端 口掃描一樣的掃描引擎。因此它和端口掃描非常接近,也被放在這里討論。 除了本身很有用,協議掃描還顯示了開源軟件的力量。盡管基本想法非常簡單,我過去 從沒想過增加這一功能也沒收到任何對它的請求。在 2000 年夏天,Gerhard Rieger 孕育 了這個想法,寫了一個很棒的補丁程序,發送到 nmap-hackers 郵件列表。我把那個補丁 加入了 Nmap,第二天發布了新版本。幾乎沒有商業軟件會有用戶有足夠的熱情設計并貢 獻他們的改進。 協議掃描以和 UDP 掃描類似的方式工作。它不是在 UDP 報文的端口域上循環,而是在 IP 協議域的 8 位上循環,發送 IP 報文頭。報文頭通常是空的,不包含數據,甚至不包含所 申明的協議的正確報文頭 TCP,UDP,和 ICMP 是三個例外。它們三個會使用正常的協議頭,因為否則某些系統拒絕發送,而且 Nmap 有函數創建它們。協議掃描不是注意 ICMP 端口不可到達消息,而是 ICMP 協議不可到達消息。如果 Nmap 從目標主機收到任何協議 的任何響應,Nmap 就把那個協議標記為 open。 ICMP 協議不可到達錯誤(類型 3,代號 2) 導致協議被標記為 closed。其它 ICMP 不可到達協議(類型 3,代號 1,3,9,10,或者 13) 導致協議被標記為 filtered (雖然同時他們證明 ICMP 是 open )。如果重試之后仍 沒有收到響應,該協議就被標記為 open|filtered `-b <ftp relay host>` (FTP 彈跳掃描) FTP 協議的一個有趣特征([RFC 959](http://www.rfc-editor.org/rfc/rfc959.txt)) 是支持所謂代理 ftp 連接。它允許用戶連接到一臺 FTP 服務器,然后要求文件送到一臺第三方服務器。這個特性在很多層次上被濫用,所以 許多服務器已經停止支持它了。其中一種就是導致 FTP 服務器對其它主機端口掃描。只 要請求 FTP 服務器輪流發送一個文件到目標主機上的所感興趣的端口。錯誤消息會描述 端口是開放還是關閉的。這是繞過防火墻的好方法,因為 FTP 服務器常常被置于可以訪 問比 Web 主機更多其它內部主機的位置。 Nmap 用-b 選項支持 ftp 彈跳掃描。參數格式 是 username:password@server:port。 Server 是某個脆弱的 FTP 服務器的名字或者 IP 地址。您也許可以省略 username:password,如果服務器上開放了匿名用戶 (user:anonymous password:-wwwuser@)。端口號(以及前面的冒號) 也可以省略,如果 server 使用默認的 FTP 端口(21)。 當 Nmap1997 年發布時,這個弱點被廣泛利用,但現在大部分已經被 fix 了。脆弱的服務 器仍然存在,所以如果其它都失敗了,這也值得一試。如果您的目標是繞過防火墻,掃 描目標網絡上的開放的 21 端口(或者甚至任何 ftp 服務,如果您用版本探測掃描所有端 口),然后對每個嘗試彈跳掃描。Nmap 會告訴您該主機脆弱與否。如果您只是試著玩 Nmap, 您不必(事實上,不應該)限制您自己。在您隨機地在互聯網上尋找脆弱的 FTP 服務器時 考慮一下系統管理員不太喜歡您這樣濫用他們的服務器。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看