Linux Command nmap - 主機發現,端口掃描,服務和版本探測 實踐

nmap

NMap(Network Mapper)是一個網絡連接端掃描軟件,用來掃描網上電腦開放的網絡連接端。確定哪些服務運行在哪些連接端,並且推斷計算機運行哪個操作系統。它是網絡管理員必用的軟件之一,以及用以評估網絡系統安全。

其基本功能有三個:

  • 是掃描主機端口,嗅探所提供的網絡服務
  • 是探測一組主機是否在線
  • 還可以推斷主機所用的操作系統,到達主機經過的路由,系統已開放端口的軟件版本
NMap端口狀態

當nmap向目標主機發送報文並根據返回報文從而認定端口的6種狀態。(注意:這六種狀態只是namp認爲的端口狀態,例如:有些主機或者防火牆會返回一些不可靠的報文從而妨礙nmap對端口開放問題的確認)

  • Open(開放的):端口處於開放狀態,意味着目標機器上的應用程序正在該端口監聽連接/報文

  • Closed(關閉的):端口處於關閉狀態。這裏我們值得注意的是關閉的端口也是可訪問的,只是該端口沒有應用程序在它上面監聽,但是他們隨時可能開放

  • Filtered(過濾的):由於包過濾阻止探測報文到達端口, Nmap 無法確定該端口是否開放。過濾可能來自專業的防火牆設備,路由器規則或者主機上的軟件防火牆

  • Unfiltered(未被過濾的):意味着端口可訪問,但 Nmap 不能確定它是開放還是關閉

    這種狀態和filtered的區別在於:unfiltered的端口能被nmap訪問,但是nmap根據返回的報文無法確定端口的開放狀態,而filtered的端口直接就沒能夠被nmap訪問。端口被定義爲Unfilterd只會發生在TCP ack掃描類型時當返回RST的報文。而端口被定義爲filtered 狀態的原因是是報文被防火牆設備,路由器規則,或者防火牆軟件攔截,無法送達到端口,這通常表現爲發送NMAP的主機收到ICMP報錯報文,或者主機通過多次重複發送沒有收到任何迴應)。

  • Open|filtered狀態:這種狀態主要是nmap無法區別端口處於open狀態還是filtered狀態。這種狀態只會出現在open端口對報文不做迴應的掃描類型中,如:udp,ip protocol ,TCP null,fin,和xmas掃描類型

  • Closed|filtered狀態:這種狀態主要出現在nmap無法區分端口處於closed還是filtered時

例子

主機發現,以下結果爲不存在:

:nmap 1.2.3.4
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 22:55 CST
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.09 seconds

檢查目標主機mail所開啓的TCP服務:

:nmap www.baidu.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 22:47 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.015s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Not shown: 997 filtered ports
PORT    STATE  SERVICE
80/tcp  open   http
443/tcp open   https
445/tcp closed microsoft-ds

Nmap done: 1 IP address (1 host up) scanned in 7.30 seconds

僅僅進行ping掃描 (主機發現),沒有進一步的測試 (如端口掃描或者操作系統探測):

:nmap -sP www.baidu.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 22:56 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.028s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds

TCP SYN 主機掃描:

  1. 主機發現只連接目標主機TCP的80 端口,不使用ICMP,連接時發送SYN標誌位的空TCP報文;
    SYN 標誌位告訴對方您正試圖建立一個連接。通常目標端口是關閉的,一個 RST (復位) 包會發回來;
    2. 如果碰巧端口是開放的,目標會進行 TCP 三步握手的第二步,迴應 一個SYN/ACK TCP 報文。
    3. 然後運行 Nmap 的機器則會扼殺這個正在建立的連接,發送一個 RST而非 ACK 報文,否則,一個完全的連接將會建立。 RST 報文是運行 Nmap 的機器而不是Nmap 本身響應的,因爲它對收到 的 SYN/ACK 感到很意外。
    4. Nmap 並不關心端口開放還是關閉。 無論 RST 還是 SYN/ACK 響應都告訴 Nmap 該主機正在運行。
不會建立連接,只是試一下可不可以:
:nmap -PS www.baidu.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 22:59 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.018s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Not shown: 997 filtered ports
PORT     STATE  SERVICE
80/tcp   open   http
443/tcp  open   https
4444/tcp closed krb524

Nmap done: 1 IP address (1 host up) scanned in 8.10 seconds

TCP ACK主機掃描

  1. TCP ACK 掃描和剛纔討論的TCP SYN掃描相當類似(-PA 選項使用和 SYN 探測相同的默認端口80)。 區別就是設置TCP的 ACK 標誌位而不是 SYN 標誌位。 提供SYN和ACK兩種ping是使其通過防火牆的機會儘可能大。
  2. ACK 報文表示確認一個建立連接的嘗試,但該連接尚未完全建立。 所以遠程主機應該總是迴應一個 RST 報文, 因爲它們並沒有發出過連接請求到運行 Nmap 的機器,如果它們正在運行的話。
  3. 由於沒頭沒腦的 ACK 報文通常會被識別成僞造的而丟棄。解決這個兩難的方法是通過即指定 -PS,又指定-PA 來即發送 SYN 又發送 ACK。
:nmap -PS -PA www.baidu.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 23:01 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.024s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 6.61 seconds

TCP SYN 端口掃描

  1. (半連接2/3)默認用—SP去發現主機
  2. SYN掃描最默認最受歡迎的掃描選項,在一個沒有入侵防火牆的快速網絡上,每秒鐘可以掃描數千個端口。 SYN 掃描相對來說不張揚,不易被注意到,因爲它從來不完成 TCP 連接。
  3. 它常常被稱爲半開放掃描,因爲它不打開一個完全的 TCP 連接。它發送一個 SYN 報文,就像您真的要打開一個連接,然後等待響應。 SYN/ACK 表示端口在監聽 (開放) ,而 RST (復位)表示沒有監聽者。
:sudo nmap -sS www.baidu.com
Password:
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 23:04 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.023s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 8.16 seconds

TCP connect()掃描,如果該端口開放會建立三次握手過程:

:nmap -sT www.baidu.com

服務和版本探測:

:nmap -sV www.baidu.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 23:06 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.014s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Not shown: 998 filtered ports
PORT    STATE SERVICE  VERSION
80/tcp  open  http     Apache httpd
443/tcp open  ssl/http Apache httpd

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 24.77 seconds

感覺都差不多,需要跟抓包一起看。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章