nmap高級使用
1. nmap簡介
nmap的定義
-
nmap的定義:
nmap是一款開源的網路探測和安全審核工具,可以用來掃描網路主機,確定哪些主機在運行、運行哪些服務以及運行哪個作業系統等資訊,它可以通過各種方式對目標主機進行探測,如TCP SYN掃描、UDP掃描、TCP connect() 掃描、FTP bounce攻擊掃描等,同時,nmap還具有多種高級功能,如作業系統指紋識別、版本探測、腳本掃描等,是網路安全人員必備的工具之一,
nmap的特點
-
nmap的特點:
- 可以掃描本地網路中的所有設備,包括開放的埠和服務,
- 可以進行遠程主機的埠掃描,以及對遠程主機進行作業系統和服務版本的探測,
- 支持多種掃描技術,如TCP、UDP、ICMP等,
- 可以進行靈活的掃描范圍和掃描選項的配置,
- 可以使用腳本進行高級掃描和漏洞檢測,
- 可以輸出多種格式的掃描結果,如文本、XML、HTML等,
- 可以通過插件機制進行功能擴展,
nmap的應用場景- 在網路安全領域,nmap可以用來掃描網路上的主機和埠,以便發現網路中存在的漏洞和安全隱患,
- 在系統管理領域,nmap可以用來檢查網路設備的配置和狀態,以便確定網路中存在的問題和瓶頸,
- 在開發領域,nmap可以用來測驗網路應用程式的安全性和性能,以便提高應用程式的質量和可靠性,
- 在滲透測驗領域,nmap可以用來獲取目標網路的拓撲結構和服務資訊,以便制定攻擊計劃和選擇攻擊方式,
- 在網路監控領域,nmap可以用來監測網路設備的狀態和活動,以便及時發現和解決網路故障和安全事件,
2. nmap的基本使用
安裝nmap
-
使用包管理器安裝(以Ubuntu為例):
sudo apt-get update sudo apt-get install nmap -
從源代碼安裝:
wget https://nmap.org/dist/nmap-7.91.tar.bz2 tar -xvjf nmap-7.91.tar.bz2 cd nmap-7.91 ./configure make sudo make install -
使用Docker安裝:
docker pull nmap docker run nmap -sS target
表格語法:
| 安裝方式 | 命令 |
|---|---|
| 包管理器 | sudo apt-get install nmap |
| 源代碼安裝 | ./configure make sudo make install |
| Docker安裝 | docker pull nmap docker run nmap -sS target |
nmap的基本命令
- nmap掃描目標IP地址:
nmap 192.168.1.1 - nmap掃描目標主機名:
nmap www.example.com - nmap掃描目標IP地址段:
nmap 192.168.1.1-100 - nmap掃描目標網段:
nmap 192.168.1.0/24 - nmap掃描目標網段并指定埠范圍:
nmap -p 1-100 192.168.1.0/24 - nmap掃描目標主機并指定埠范圍:
nmap -p 80,443 www.example.com - nmap掃描目標主機并進行服務探測:
nmap -sV www.example.com
nmap的掃描方式- 基本TCP掃描
nmap -sT target
使用TCP連接進行掃描,可以檢測目標主機上的開放埠,
-
基本UDP掃描
nmap -sU target使用UDP資料報進行掃描,可以檢測目標主機上的開放埠,
-
全面掃描
nmap -p1-65535 -sV -sS -T4 target掃描所有的TCP埠和UDP埠,同時進行版本檢測和TCP SYN掃描,使用-T4選項來加快掃描速度,
-
作業系統檢測
nmap -O target使用TCP/IP堆疊指紋來檢測目標主機的作業系統型別,
-
NSE腳本掃描
nmap --script <script> target使用NSE腳本來掃描目標主機,可以檢測出很多服務和漏洞資訊,可以使用
--script-help選項來查看所有可用的腳本,
3. nmap高級使用
nmap的高級掃描技巧
- 使用nmap進行TCP SYN掃描
nmap -sS target
-
使用nmap進行TCP Connect掃描
nmap -sT target -
使用nmap進行UDP掃描
nmap -sU target -
使用nmap進行作業系統指紋識別
nmap -O target -
使用nmap進行服務指紋識別
nmap -sV target -
使用nmap進行埠版本指紋識別
nmap -sV --version-all target -
使用nmap進行腳本掃描
nmap -sC target -
使用nmap進行快速掃描
nmap -F target -
使用nmap進行全埠掃描
nmap -p- target -
使用nmap進行帶服務和版本的全埠掃描
nmap -p- -sV target
表格示例:
| 掃描型別 | 命令 |
|---|---|
| TCP SYN 掃描 | nmap -sS target |
| TCP Connect 掃描 | nmap -sT target |
| UDP 掃描 | nmap -sU target |
| 作業系統指紋識別 | nmap -O target |
| 服務指紋識別 | nmap -sV target |
| 埠版本指紋識別 | nmap -sV --version-all target |
| 腳本掃描 | nmap -sC target |
| 快速掃描 | nmap -F target |
| 全埠掃描 | nmap -p- target |
| 帶服務和版本的全埠掃描 | nmap -p- -sV target |
OS指紋識別
- 使用nmap進行OS指紋識別:
$ nmap -O target_ip
Starting Nmap 7.80 ( https://nmap.org ) at 2021-08-11 14:00 EDT
Nmap scan report for target_ip
Host is up (0.0010s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.32 - 2.6.39
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.34 seconds
通過使用nmap的-O選項,可以對目標主機進行OS指紋識別,nmap會嘗試發送不同的TCP/IP資料包,通過目標主機的回應來判斷其所使用的作業系統型別和版本號,在上面的示例中,nmap識別出目標主機運行的是Linux 2.6.X作業系統,并提供了更詳細的資訊,
埠掃描技巧
- 使用TCP SYN掃描技巧
nmap -sS <目標IP>
-
使用TCP connect() 掃描技巧
nmap -sT <目標IP> -
使用UDP掃描技巧
nmap -sU <目標IP> -
使用TCP ACK掃描技巧
nmap -sA <目標IP> -
使用TCP Window掃描技巧
nmap -sW <目標IP> -
使用TCP Maimon掃描技巧
nmap -sM <目標IP> -
使用IDLE/IPID Header掃描技巧
nmap -sI <目標IP> -
使用FTP Bounce掃描技巧
nmap -b <FTP代理IP>:<FTP代理埠> <目標IP> -
使用SCTP INIT掃描技巧
nmap -sY <目標IP> -
使用RPC掃描技巧
nmap -sR <目標IP> -
使用IP Protocol掃描技巧
nmap -sO <目標IP> -
使用NULL掃描技巧
nmap -sN <目標IP> -
使用FIN掃描技巧
nmap -sF <目標IP> -
使用Xmas掃描技巧
nmap -sX <目標IP> -
使用ACK掃描技巧
nmap -sA <目標IP> -
使用TCP Ping掃描技巧
nmap -PT <目標IP> -
使用UDP Ping掃描技巧
nmap -PU <目標IP> -
使用ICMP Ping掃描技巧
nmap -PE <目標IP>
作業系統漏洞掃描
-
使用nmap掃描作業系統漏洞:
nmap -sV --script vuln <目標IP>該命令將掃描目標主機的服務版本,并且使用nmap的漏洞掃描腳本對其進行漏洞掃描,如果發現存在漏洞,將會輸出相應的漏洞資訊,
-
使用nmap掃描作業系統漏洞(表格):
命令 說明 nmap -sV --script vuln <目標IP> 掃描目標主機的服務版本,并使用nmap的漏洞掃描腳本對其進行漏洞掃描,如果發現存在漏洞,將會輸出相應的漏洞資訊,
nmap的腳本引擎
- 使用默認腳本掃描目標主機:
nmap -sC target_ip
- 使用特定腳本掃描目標主機:
nmap --script=smb-os-discovery.nse target_ip
- 列出所有可用的腳本:
nmap --script-help all
- 使用腳本分類掃描目標主機:
nmap --script "vuln and safe" target_ip
- 使用腳本引數掃描目標主機:
nmap --script smb-enum-shares.nse --script-args smbuser=username,smbpass=password target_ip
表格:
| 腳本名稱 | 描述 |
|---|---|
| http-robots.txt | 檢查目標主機的robots.txt檔案 |
| ftp-anon | 嘗試匿名登錄目標主機的FTP |
| ssh-auth-methods | 列出目標主機支持的SSH認證方法 |
| smb-enum-users | 列舉目標主機的SMB用戶 |
| ssl-heartbleed | 檢查目標主機是否受到心臟出血漏洞的影響 |
腳本引擎的概念
- 腳本引擎的概念:
nmap腳本引擎是nmap的一個強大功能,它可以使nmap更加智能化、自動化,nmap腳本引擎能夠自動化執行各種任務,如漏洞掃描、服務識別、作業系統檢測等,nmap腳本引擎是由nmap自帶的一套腳本語言撰寫的,這些腳本可以通過引數指定來執行,使用nmap腳本引擎可以大大提高nmap的掃描效率和準確性,下面是一個使用nmap腳本引擎進行漏洞掃描的實體:
nmap -sV --script vuln target
這個命令將使用nmap腳本引擎執行漏洞掃描,并將掃描結果輸出到終端,
常用的腳本引擎
- http-title.nse
$ nmap -sV --script=http-title <target>
該腳本引擎會對目標主機的HTTP服務進行探測,并嘗試從HTTP回應中獲取網站的標題資訊,
-
smb-vuln-ms17-010.nse
$ nmap -p 445 --script=smb-vuln-ms17-010 <target>該腳本引擎會檢測目標主機是否存在MS17-010漏洞,該漏洞曾經導致WannaCry勒索軟體大肆傳播,
-
ftp-anon.nse
$ nmap -sV --script=ftp-anon <target>該腳本引擎會檢測目標主機是否允許匿名FTP訪問,如果允許,則會列出FTP服務器上的所有檔案和目錄,
使用腳本引擎進行滲透測驗- 使用腳本引擎進行滲透測驗
nmap的腳本引擎可以幫助安全工程師進行更加深入的滲透測驗,以下是一個使用腳本引擎進行埠掃描和漏洞檢測的示例:
nmap --script vuln -p 80 192.168.0.1
該命令將使用nmap的腳本引擎掃描192.168.0.1的80埠,并檢測該埠是否存在已知漏洞,可以使用不同的腳本來進行不同型別的滲透測驗,例如:
nmap --script ftp-anon.nse 192.168.0.1
該命令將使用nmap的腳本引擎掃描192.168.0.1的21埠,并檢測該埠是否存在匿名FTP訪問權限,除了nmap自帶的腳本,還可以使用第三方腳本來進行更加高級的滲透測驗,需要注意的是,使用腳本引擎進行滲透測驗需要謹慎操作,避免對目標系統造成不必要的影響,
4. nmap安全使用
nmap的安全風險
- nmap的安全風險:
nmap作為一款強大的掃描工具,如果使用不當可能會帶來一些安全風險,比如:
-
未經授權的掃描:在未經授權的情況下對目標進行掃描可能會觸犯法律,因此在使用nmap時一定要遵守相關法律法規,
-
掃描過于頻繁:過于頻繁的掃描可能會對目標造成負擔,甚至導致目標系統崩潰,因此在使用nmap時需要控制掃描頻率,
-
誤報漏報:nmap掃描結果的準確性與目標系統的配置有關,如果目標系統對掃描進行了防御,可能會導致nmap掃描結果的誤報或漏報,
nmap的安全使用建議
- 不要在未經授權的情況下掃描他人的網路或主機,
- 在進行掃描時,確保已經得到了合法的授權和許可,
- 不要使用nmap進行非法的活動,比如入侵或攻擊,
- 在進行掃描時,可以使用一些安全措施,比如使用代理或者VPN等方式隱藏自己的IP地址,
- 對掃描結果進行妥善保管,不要將掃描結果泄露給未授權的人員,
- 在進行掃描時,可以使用一些nmap的安全選項,比如–spoof-mac或者–randomize-hosts等選項來隱藏自己的真實身份,
nmap的安全使用案例- 使用nmap掃描自己的網路,查找可能存在的漏洞
nmap -sS -sV -O -A -T4 192.168.1.0/24
- 使用nmap檢測自己的防火墻是否安全
nmap -sA -PN -p 1-65535 firewall.example.com
- 使用nmap檢測其他主機的安全性,查找可能存在的漏洞
nmap -sS -sV -O -A -T4 target.example.com
- 使用nmap檢測自己的網路中是否有未知設備
nmap -sP 192.168.1.0/24
- 使用nmap檢測自己的網路中是否有未授權的訪問
nmap -sS -sV -O -A -T4 -p 80,443,8080,8443 192.168.1.0/24
表格語法輸出:
| nmap的安全使用案例 | 命令示例 |
|---|---|
| 使用nmap掃描自己的網路,查找可能存在的漏洞 | nmap -sS -sV -O -A -T4 192.168.1.0/24 |
| 使用nmap檢測自己的防火墻是否安全 | nmap -sA -PN -p 1-65535 firewall.example.com |
| 使用nmap檢測其他主機的安全性,查找可能存在的漏洞 | nmap -sS -sV -O -A -T4 target.example.com |
| 使用nmap檢測自己的網路中是否有未知設備 | nmap -sP 192.168.1.0/24 |
| 使用nmap檢測自己的網路中是否有未授權的訪問 | nmap -sS -sV -O -A -T4 -p 80,443,8080,8443 192.168.1.0/24 |
5. 總結
nmap的優缺點
-
nmap的優點:
- 可以掃描多種協議和埠
- 可以進行作業系統和服務識別
- 可以進行漏洞掃描和脆弱性評估
- 可以進行主機發現和網路拓撲繪制
-
nmap的缺點:
- 可能會被防火墻和入侵檢測系統(IDS)檢測到
- 可能會被誤認為是攻擊行為
- 可能會影響被掃描主機的正常運行
- 需要一定的技術水平和經驗才能使用好
nmap的未來發展
- nmap的未來發展:
- nmap將繼續更新和改進,以適應不斷變化的網路環境和安全需求,
- 未來版本可能會增加更多的漏洞掃描和滲透測驗功能,
- nmap也可能會增加更多的網路流量分析和資料可視化功能,以幫助用戶更好地理解和分析掃描結果,
- 另外,nmap也可能會與其他安全工具集成,以提供更全面的安全解決方案,
- 總的來說,nmap的未來發展將繼續致力于為用戶提供更強大、更靈活、更易用的安全掃描和測驗工具,
nmap的使用心得- nmap的使用心得:
- 在掃描目標時,可以使用“-Pn”引數來跳過主機的ping檢測,這對于主機禁止ping的情況非常有用,例如:
nmap -Pn 192.168.1.1 - 在掃描時,可以使用“-sS”引數來進行TCP SYN掃描,這種掃描方式比較隱蔽,不容易被目標主機檢測到,例如:
nmap -sS 192.168.1.1 - 在進行埠掃描時,可以使用“-p-”引數來掃描目標主機的所有埠,這樣可以保證不會漏掉任何重要的埠,例如:
nmap -p- 192.168.1.1 - 在掃描時,可以使用“-oN”引數將掃描結果保存到檔案中,方便后續分析和查看,例如:
nmap -oN scan.txt 192.168.1.1 - 在進行服務識別時,可以使用“-sV”引數來獲取目標主機上運行的具體服務版本資訊,這對于后續的漏洞掃描非常有用,例如:
nmap -sV 192.168.1.1
本文來自博客園,作者:讓-雅克-盧梭,轉載請注明原文鏈接:https://www.cnblogs.com/lusuo/p/17302383.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/549637.html
標籤:其他
