Nmap
Nmap (“Network Mapper(網路映射器)”) 是一款開源的網路探測和安全審核的工具,支持在 Windows、Unix/Linux 以及 MAC OS 平臺下運行,它的設計目標是快速地掃描大型網路,當然用它掃描單個主機也沒有問題,Nmap 以新穎的方式使用原始 IP 報文來發現網路上有哪些主機,那些主機提供什么服務(應用程式名和版本),那些服務運行在什么作業系統(包括版本資訊),它們使用什么型別的報文過濾器/防火墻,以及一堆其它功能,雖然 Nmap 通常用于安全審核,許多系統管理員和網路管理員也用它來做一些日常的作業,比如查看整個網路的資訊,管理服務升級計劃,以及監視主機和服務的運行,
Nmap基礎
Nmap的掃描方式:
- 完全連接掃描:利用TCP/IP協議的三次握手連接機制,使源主機和目的主機的某個埠建立一次完整的連接,如果建立成功,則表明該埠開放,否則,表明該埠關閉,
- 半連接掃描:是指在源主機和目的主機的三次握手連接程序中,只完成前兩次握手,不建建立一次完整的連接,
- SYN掃描:首先向目標主機發送連接請求,當目標主機回傳回應后,立即切斷連接程序,并查看回應情況,如果目標主機回傳ACK資訊,表示目標主機的該埠開放,如果目標主機回傳RESET資訊,表示該埠沒有開放,
- SYN|ACK掃描: 由源主機向目標主機的某個埠直接發送SYN|ACK資料包,而不是先發送SYN資料包,由于這種方法不發送SYN資料包,目標主機會認為這是一次錯誤的連接,從而會報錯,如果目標主機的該埠沒有開放,會回傳RST資訊;如果該埠開放(LISTENING) ,則不會回傳任何資訊,而是直接將這個資料包拋棄掉,
- ACK掃描:首先由主機A向目標主機B發送FIN資料包,然后查看反饋資料包的TTL值和WIN值,開放埠所回傳的資料包的TTL值一般小于64,而關閉埠的回傳值一般大于64開放埠所回傳的WIN值一般大于0,而關閉埠的回傳值一般等于0.
- FIN掃描:源主機A向目標主機B發送FIN資料包,然后查看反饋訊息,如果埠回傳RESET資訊,則說明該埠關閉,如果埠沒有回傳任何訊息,則說明埠開放,
- ID頭資訊掃描(僵尸掃描): 需要用一臺第三方機器配置掃描,并且這臺機器的網路通信量要非常少,即dumb主機,首先由源主機A向dumb主機B發出連續的P ING資料包,并且查看主機B回傳的資料包的ID頭資訊,一般而言,每個順序資料包的1D頭的值會加1.然后由源主機A假冒主機B的地址向目的主機C的任意埠(1-65535) 發送SYN資料包,這時,主機C向主機B發送的資料包有兩種可能的結果:1、SYN|ACK:表示該埠處于監聽狀態;2、RST|ACK:表示該埠處于非監聽狀態,那么,由后續PING資料包的回應資訊的ID頭資訊可以看出,如果主機C的某個埠是開放的,則主機B回傳A的資料包中,ID頭的值不是遞增1,而是大于1.如果主機C的某個埠是非開放的,則主機B回傳A的資料包中,ID頭的值遞增1,非常規律,
- 隱蔽掃描:是指能夠成功地繞過IDS、防火墻和監視系統等安全機制,取得目標主機埠資訊的一種掃描方式,
利用Nmap進行主機發現
利用ARP協議發現
不知道什么是ARP?(點這里)
ARP協議位于TCP/IP模型的網路層,這個協議主要用來解決邏輯地址和物理地址的轉換關系,
當設備于于我們處于同一網段時,使用ARP掃描技術是最佳的選擇,在Nmap < 7.8 的版本中引數“-PR”用來指定使用ARP掃描,Nmap > 7.8 的版本中廢棄了這個引數,ARP掃描在可能使用的地方默認啟用,這種掃描方式只能用于與Nmap設備在同一網段的目標設備,
nmap -sn 192.168.1.0/24
注:-sn 僅判斷目標設備是否存活不進行仔細地掃描,避免浪費時間,

wireshark抓包如圖
不知道什么是wireshark?(點這里)

利用ICMP協議發現
不知道什么是ICMP?(點這里)
Nmap使用 -PE 引數可以實作ICMP的設備發現,這個程序實際上和ping命令是一樣的,
nmap -sn -PE 192.168.1.15

因為這里是同一局域網下,wireshark抓包效果與TCP SYN掃描相同,不知道什么是wireshark?(點這里)
Nmap使用 -PP 引數就可以實作ICMP的時間戳設備發現
nmap -sn -PP 192.168.1.15

因為這里是同一局域網下,wireshark抓包效果與TCP SYN掃描相同,不知道什么是wireshark?(點這里)
Nmap使用 -PM 引數就可以實作ICMP的地址掩碼設備發現,
nmap -sn -PM 192.168.1.15

因為這里是同一局域網下,wireshark抓包效果與TCP SYN掃描相同,不知道什么是wireshark?(點這里)
利用TCP協議掃發現
不知道什么是TCP?(點這里)
1、TCP SYN
Nmap使用 -PS 引數來向目標設備發送一個設定了SYN標志的資料包,這個資料包的內容部分為空,通常默認的目標埠是80埠,我們也可以使用引數來改變目標埠,當指定多個埠時,Nmap將會并行地對這些埠進行測驗,目標設備在收到了Nmap所發送的SYN資料包之后,會認為Nmap所在設備想要和自己的一個埠建立連接,如果這個埠是開放的,目標設備就會按照TCP 3次握手的規定,發回一個SYN+ ACK資料包,表示同意建立連接;如果這個埠是關閉的,目標設備就會拒絕這次連接,向Nmap所在設備發送一個RST資料包,
nmap -sn -PS 192.168.1.15

wireshark抓包如圖,因為我這里是同一局域網下Nmap會默認使用ARP掃描,所以無法抓取TCP包,不知道什么是wireshark?(點這里)

2、TCP ACK
Nmap使用 -PA 引數來進行TCP ACK掃描,TCP ACK掃描和TCP SYN掃描很相似,不同之處只在于Nmap發送的資料包中使用SYN+ ACK標志位,而不是SYN標志位,按照TCP 3次握手的規定,只有當設備A向設備B發送了SYN資料包之后,設備B才會回應設備A 一個SYN + ACK資料包,
現在Nmap直接向目標設備發送一個 TCP + ACK資料包,目標設備顯然不清楚這是怎么回事,當然也不可能成功建立TCP連接,因此只能向Nmap所在設備發送一個RST資料包,表示無法建立這個TCP連接,
nmap -PA -p 80 192.168.1.15

因為這里是同一局域網下,wireshark抓包效果與TCP SYN掃描相同,不知道什么是wireshark?(點這里)
利用UDP協議發現
不知道什么是UDP?(點這里)
Nmap使用 -PU 引數來進行UDP掃描,當一個埠接收到一個UDP資料包時,如果他是關閉的,就會給源埠發回一個ICMP埠不可達資料包;如果它是開放的,就會忽略這個資料包,也就是將它丟棄而不回傳任何資訊,
nmap -sn -PU 192.168.1.15

因為這里是同一局域網下,wireshark抓包效果與TCP SYN掃描相同,不知道什么是wireshark?(點這里)
利用Nmap進行埠掃描
埠
根據埠使用情況的不同,簡單地將埠分為三類:
- **公認埠 (Well Known Port):**這類埠也常稱為“常用埠”,這類埠的埠號為0~1024,它們緊密系結于一些特定的服務, 通常這些埠的通信明確表明了某種服務的協議,不可重新定義它的作用物件,
- **注冊埠( Registered Port ):**埠號為1025 ~ 49151,它們松散地系結于一些服務,也就是說,有許多服務系結于這些埠,這些埠同樣用于許多其他目的,這些埠多數沒有明確地定義服務物件,不同程式可根據實際需要自己定義,
- **動態/私有埠( Dynamic 1 Private Port):**埠號為49 152~65 535, 理論上,不應把常用服務分配在這些埠上,但是有些較為特殊的程式,特別是一些木馬程式非常喜歡用這些埠,因為這些埠常常不被注意,容易隱蔽,
根據所提供的服務方式的不同,埠又可分為“TCP埠”和“UDP埠”兩種,幾之間相互通信一般采用這兩種埠,
Nmap 把埠分成六個狀態:
- Open(開放的):應用程式正在該埠接收 TCP 連接或者 UDP 報文,
- Closed(關閉的):關閉的埠對于 Nmap 也是可訪問的(它接受 Nmap 的探測報文并作出回應),但沒有應用程式在其上監聽,
- Filtered(被過濾的):由于包過濾阻止探測報文到達埠,Nmap 無法確定該埠是否開放,
- Unfiltered(未被過濾的):未被過濾狀態意味著埠可訪問,但 Nmap 不能確定它是開放還是關閉,
- Open|Filtered(開放或者被過濾的):當無法確定埠是開放還是被過濾的,Namp就把該端
- Closed|Filtered(關倍訓者被過濾的):該狀態用于 Nmap 不能確定埠是關閉的 還是被過濾的,它只可能出現在 IPID Idle 掃描中,
基礎掃描
1、Nmap常規掃描
nmap 192.168.1.15

2、對IP地址不連續的多臺設備進行掃描
nmap 192.168.1.5 192.168.1.15

3、對IP地址連續的范圍內的多臺設備掃描
nmap 192.168.1.1-20

4、對整個子網的設備進行掃描
nmap 192.168.1.0/24
因為在此環境中我只開啟了三臺設備,所以掃描結果于上圖相同,
5、-v 引數,掃描服務器,顯示打開的埠及掃描詳細資訊
nmap -v 192.168.1.15

6、-p 引數,掃描指定范圍的埠
默認情況下,Nmap只會掃描1000個“最有價值的埠”,不會掃描全部的95535個TCP或UDP埠,若需要全面檢測埠,則需要加入- p 65535 或者 -p-

7、-O 引數,掃描目標服務器的作業系統型別
nmap -O 192.168.1.15

8、-A 引數,掃描所有資訊
nmap -A 192.168.1.15

TCP連接掃描
不知道什么是TCP?(點這里)
Nmap使用 -sT 引數來進行Connect掃描(TCP連接掃描),Connect掃描其實和SYN掃描很像,只是這種掃描方式完成了TCP的3次握手,
nmap -sT -p 80 192.168.1.15

wireshark抓包如圖,不知道什么是wireshark?(點這里)

ACK掃描
Nmap使用 -sA 引數來進行ACK掃描,首先向目標主機發送連接請求,當目標主機回傳回應后,立即切斷連接程序,并查看回應情況,如果目標主機回傳ACK資訊,表示目標主機的該埠開放,如果目標主機回傳RESET資訊,表示該埠沒有開放,
nmap -sA -p 80 6666 192.168.1.15

wireshark抓包如圖,不知道什么是wireshark?(點這里)

SYN掃描
Nmap使用 -sS 引數來進行SYN掃描,SYN掃描是較為流行的一種掃描方式, 同時它也是Nmap所采用的默認掃描方式,這
種掃描方式速度極快,可以在一秒內掃描上千個埠,并且不容易被網路中的安全設備所發現,Nmap會向目標設備的一個埠發送請求連接的SYN資料包,而目標設備在接收到這個SYN資料包之后,掃描器在收到SYN + ACK資料包后,不是發送ACK資料包而是發送RST資料包請求斷開連接,這樣,3次握手就沒有完成,無法建立正常的TCP連接,因此,這次掃描就不會被記錄到系統日志中,這種掃描方式一般不會在目標設備上留下掃描痕跡,
nmap -sS -p 80 192.168.1.15

wireshark抓包如圖,不知道什么是wireshark?(點這里)

FIN掃描
Nmap使用 -sF 引數來進行FIN掃描,源主機A向目標主機B發送FIN資料包,然后查看反饋訊息,如果埠回傳RESET資訊,則說明該埠關閉,如果埠沒有回傳任何訊息,則說明埠開放,
nmap -sF -p 80 6666 192.168.1.15

wireshark抓包如圖,不知道什么是wireshark?(點這里)

UDP掃描
不知道什么是UDP?(點這里)
Nmap的SYN掃描和完整的TCP掃描都不能掃描UDP埠,因為UDP協議無連接的方式傳輸資料,
Nmap使用 -sU引數來進行UDP掃描
nmap -sU -p 80 192.168.1.15

wireshark抓包如圖,不知道什么是wireshark?(點這里)

利用Nmap掃描目標系統
-O 引數,掃描目標服務器的作業系統型別
–osscan-limit 引數,只對滿足“具有打開和關閉的埠”條件的設備進行作業系統掃描
nmap -O --osscan-limit 192.168.1.15

–osscan-guess 引數,只對滿足“具有打開和關閉的埠”條件的設備進行作業系統掃描
nmap -O --osscan-guess 192.168.1.15
掃描結果與上圖相同
利用Nmap掃描目標服務
-sV 引數,對目標系統上運行的服務和軟體進行掃描
nmap -sV 192.168.1.15

保存掃描結果為xml
-oX 引數,將掃描結果保存為xml檔案
nmap -oX /root/test.xml 192.168.1.15

Nmap掃描擴展
1、–randomize-hosts 隨機掃描
nmap --randomize-hosts 192.168.1.1-20

2、–scan-delay 延時掃描(單位:秒)
nmap -scan-delay 5 192.168.1.15
通常將隨機掃描和延時掃描組合使用
nmap --randomize-hosta --scan-delay 5 192.168.1-20
Nmap腳本滲透
在 Nmap安裝目錄下的 scripts檔案夾里存放了許多以“.nse”后綴結尾的文本檔案,這些就是Nmap 自帶的腳本引擎,使用 Nmap Script 時,需要添加引數“–script=腳本名稱”,
nmap --script XXX.nse XXXXX.com
kali中Nmap腳本路徑
/usr/share/namp/sceipt

windows中Nmap腳本路徑
\Nmap\scripts

1、IP地址資訊收集
nmap --script=ip-geolocation-* XXXX.com
2、DNS資訊收集
nmap --script=dns-brute XXX.com
3、檢索系統資訊
nmap --script=membase-http-info.nse XXX.com
4、系統常見漏洞掃描
nmap --script=smb- viln-* XXX.com
5、web常見漏洞掃描
#掃描敏感目錄
nmap --script=http-enum.nse wXXXX.com
#掃描注入漏洞
nmap --script=http-sql-injection.nse XXXX.com
#掃描cms注入漏洞
nmap --script=http-vuln-* XXX.com
7、Mysql資料庫滲透測驗
#暴力破解Mysql
nmap --script=mysql-brute.nse 192.168.1.15
#Mysql詳細資訊
nmap --script=mysql-info.nse 192.168.1.15
8、使用所有加腳本掃描
namp --script all 192.168.1.15
Nmap命令詳解

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/339126.html
標籤:其他
