# NMAP 使用教學 ### **<span style="font-size: 25px;">Nmap 可以使用多種不同的方法來執行</span>** - **多目標掃描**: ```nmap google.com cloudflare.com microsoft.com``` 可一次輸入多個目標進行掃描。 - **IP 範圍掃描**: ```nmap 10.11.12.15-20``` 將會掃描從 `10.11.12.15` 到 `10.11.12.20`。 - **子網路掃描**: ```nmap 10.10.10.10/30``` 將會掃描該子網中的 4 個 IP。 ------------ ### **<span style="font-size: 25px;">TCP Flags</span>** | 標誌 | 說明 | |------|------| | **URG** | 緊急標誌,設置了 URG 標誌的 TCP 段會立即處理,而不需等待之前發送的 TCP 段。 | | **ACK** | 確認標誌用於確認接收的 TCP 段。 | | **PSH** | 推送標誌,要求 TCP 立即將數據傳遞給應用程式。 | | **RST** | 重置標誌,用於重置連接。另一個設備(例如防火牆)可能會發送此標誌以終止 TCP 連接。當數據發送到主機時,如果接收端沒有服務來響應,這個標誌也會被使用。 | | **SYN** | 同步標誌,用於啟動 TCP 三次握手,並與其他主機同步序列號。序列號應在 TCP 連接建立期間隨機設置。 | | **FIN** | 結束標誌,告訴對方它已經沒有更多的數據要發送了。這是正常的 TCP 連接關閉過程的一部分。| ### **<span style="font-size: 25px;">nmap 端口狀態</span>** | 狀態 | 說明 |-|-| | **Open (開啟)**| 表示在指定端口上有服務在監聽。此狀態通常表明該服務可以接收並處理請求。| | **Closed(關閉)** | 表示指定端口上沒有服務在監聽,但端口是可訪問的。 | | **Filtered(過濾)** | 表示 Nmap 無法確定端口是開放還是關閉,因為端口不可訪問。通常是因為防火牆阻止了 Nmap 的探測包,或者是回應包被阻止。 | | **Unfiltered(未過濾)** | 表示 Nmap 無法確定端口是開放還是關閉,但端口是可訪問的。這種狀態通常在使用 ACK 掃描(-sA)時遇到。 | | **Open\|Filtered(開放\|過濾)** | 表示 Nmap 無法確定端口是開放還是過濾。| | **Closed\|Filtered(關閉\|過濾)** | 表示 Nmap 無法確定端口是關閉還是過濾。| ---- > **<span style="color: red;font-size: 30px;">NMAP 重要參數 (大小寫有差)</span>** ### **<span style="font-size: 25px;">NMAP 初期掃描大範圍主機參數</span>** * ``-sL`` : 僅顯示掃描範圍而不會執行真正的掃描,可拿來查看子網路範圍等等 * ``-PR`` : 使用 **ARP** 協定進行掃描,只有在同一個子網才能使用 * ``-PS`` : 為 **SYN PING** 掃描,傳送 **SYN** 封包來檢查機器是否存活,若存活則會繼續掃描端口 * ``-PA`` : 傳送 **ACK** 來檢查機器是否存活,若回傳 **RST** 表示機器存活,不會進行三方交握,僅特權用戶能執行 * ``-PU`` : 傳送 **UDP** 封包至特定端口來檢查機器是否存活,若端口不存在且機器存活會回傳 "Port Unreachable"(ICMP Type 3, Code 3) 即可確認機器狀態 **<span style="font-size: 20px;">特殊參數</span>** * ``-sn`` : 僅執行主機掃描,而不進行端口掃描 * ``-n `` : 跳過 DNS 查詢,不會查詢主機名稱,可增加掃描速度與隱蔽性 ----- ### **<span style="font-size: 25px;">NMAP 中期掃描主機開放端口參數</span>** * ``-sT`` : 為 **TCP** 連線,透過完成標準的 **TCP** 三向交握來確定 **TCP** 端口是否開放,在確認端口開放後即斷開 * ``-sS`` : 為 **TCP SYN** 掃描,與 **-sT** 相比,它是一種更快、更隱蔽的掃描方法,不會建立完整三向溝通 * ``-sU`` : 為 **UDP** 掃描,完整的 **UDP** 端口掃描,用來確定每個端口的具體狀態 * ``-sA`` : 為 **TCP ACK** 掃描,可查看哪些端口未被防火牆阻擋,在目標環境有防火牆時很好用 **<span style="font-size: 20px;">其他掃描方法</span>** 以下掃描方法的共同點是它們都不包含 **SYN** 標誌,因此無狀態防火牆不會將這些封包識別為 TCP 連線請求,讓這些封包有機會通過防火牆並到達目標系統,**這些掃描方式通常用於繞過簡單的防火牆或檢測系統**: * ``-sN`` : 為不帶任何標誌( **SYN、FIN** 等等) 掃描,透過目標回應 **RST** 來確認端口狀態 * ``-sF`` : 為 **TCP FIN** 掃描,與 **-sN** 類似,都是透過目標回傳 **RST** 確認端口狀態 * ``-sX`` : 在 **Xmas** 掃描中,發送的 **TCP** 封包會同時設定 **FIN、PSH、URG** 標誌,與 **-sN** 和 **-sF** 一樣,如果收到RST封包,則表示連接埠已關閉 * ``-Pn`` : ``-Pn`` 參數的作用是跳過 Ping 探測 然而,這類偽造封包的方法在有狀態防火牆面前通常會無效,因為有狀態防火牆幾乎會攔截所有這種非標準連線的封包。 **<span style="font-size: 20px;">常用特殊參數</span>** * ``-F`` : 快速掃描,僅掃描一些常見的端口,這個參數適合在時間有限或僅需要快速檢查常見服務的情況下使用" * ``-p`` : 指定範圍,例如: ``-p1-100`` 指定掃描端口 1 到 100 的範圍 、``-p22,23,80 ``指定特定端口,```-p-```則為掃描所有端口 * ``-T`` : 決定掃描強度,由T0~T5排序,T0最慢,T5最快,數字越高的話準確度與隱蔽性越差 * ``-S`` : 偽造來源IP,將來源 ip 更改成偽造的,例如 ``nmap -S Fake-IP target-IP`` * ``-D`` : 偽裝掃描,一次偽裝好幾個 ip 來掩蓋真實來源,例如 ``nmap -D 10.10.0.1,10.10.0.2,ME target-IP``:此指令讓掃描看起來是來自三個不同的來源 IP * ``-f`` : 分段資料包,將我們的封包進行分段的選項,IP資料包被分為8位元組或更少,若 **TCP** 資料包大小為 32,則 ``-f`` 可分成四個資料包,能降低被防火牆或是 IDS 偵查到的機會,使用 -ff 會以 16 字節為單位進行分段" **<span style="font-size: 20px;">更多詳細內容參數</span>** * ``--reason`` : 提供有關 Nmap 為何判斷系統狀態或端口狀態的具體原因 * ``-v``或``-vv`` : 提供更多的掃描過程細節,例如掃描進度和步驟等等,``-vv`` 比 ``-v`` 有著更多細節 * ``-d``或``-dd`` : 是 Nmap 的調試(debugging)模式,用來顯示非常詳細的輸出,``-dd`` 比 ``-d`` 有著更多細節,內容非常多,建議輸出至文件查看 --- ### **<span style="font-size: 25px;">nmap後期深入掃描細節參數</span>** * ``-sV`` : 掃描端口版本訊息,可使用``--version-intensity (0~9)`` 來控制掃描強度,0為最弱,9最強,特別注意的是使用 -sV 指令的話,必定會進行 TCP 三向交握,隱蔽性較差。 因此在使用上,**可以先使用 ``-sS`` 等等有較高隱蔽性的參數來掃描有開放的端口,再使用 ``-sV``配合 ``-p``(指定端口) 對已開放的端口進行進一步的掃描** * ``-O`` : 掃描目標作業系統資訊 * ``-A`` : 全方面掃描模式,會有更高強度的掃描,會執行多種不同的掃描方法或參數,隱蔽性差 * ``--traceroute`` : 查看路由 * ``-script`` : Nmap NSE(Nmap Scripting Engine)是一個強大的工具,允許用戶使用腳本來自動執行偵測、漏洞掃描和其他網路安全測試,內容非常多,可上網自行查閱。 * `-sC` : 使用預設腳本集執行腳本掃描。 ---- ### **<span style="font-size: 25px;">nmap 儲存輸出內容</span>** * ``-oN`` : 將輸出的內容,以完整標準檔案的方式儲存成檔案,使用方法: ``nmap -oN filename target-IP`` <a href="https://hackmd.io/_uploads/By155V7lye.png" target="_blank"><img src="https://hackmd.io/_uploads/By155V7lye.png" ></a> * ``-oG`` : 將輸出的內容,以過濾的方式儲存成檔案,它可以有效率地過濾掃描輸出中的特定關鍵字 使用方法: ``nmap -oG filename target-IP`` 也可以搭配 **grep** 指令 ``grep KEYWORD filename``,來快速搜尋大範圍開放的服務等等 <a href="https://hackmd.io/_uploads/H1L5dBQe1g.png" target="_blank"><img src="https://hackmd.io/_uploads/H1L5dBQe1g.png" ></a> <a href="https://hackmd.io/_uploads/SyZ6OBme1l.png" target="_blank"><img src="https://hackmd.io/_uploads/SyZ6OBme1l.png" ></a> ### **<span style="font-size: 25px;">若想了解更詳細的部分,可以查看官方文檔</span>** **https://nmap.org/man/zh/index.html**