使用Namp時的基本思路

2021-08-10 12:10:46 字數 2457 閱讀 1253

使用nmap掃瞄主要會涉及到主機發現、埠掃瞄、獲取服務的banner資訊和作業系統識別這四個方面,下面詳細介紹其原理。

根據nmap進行主機發現時,傳送的資料報在tcp/ip協議七層模型中所屬的層數,把主機發現分為

二、三、四層主機發現。

利用arp協議,一般是滲透進入一台內網主機後用於發現內網中存活主機

優點:掃瞄速度快;結果可靠
缺點:不可路由,只能發現本網段內的主機
引數:-sn
nmap 1.1.1.0/24 –sn

掃瞄用時9.31seconds,速度還可以。

利用icmp協議

優點:可路由,能夠訪問外網;速度比較快
缺點:速度比二層慢;經常被邊界防火牆過濾
引數:-sn
沒錯,還是同樣的命令,這是因為如果攻擊機和目標在同網段,則傳送二層arp包,在不同網段,會傳送三層icmp包(即ping命令)

可以看到的確容易被防火牆過濾,提示目標沒存活。

利用tcp和udp協議

優點:可路由且結果可靠;不太可能被防火牆過濾;甚至可以發現所有埠都關閉的主機
缺點:基於狀態過濾的防火牆可能過濾掃瞄,即不返回任何值;全埠掃瞄速度慢(tcp 65535個埠 udp65535個埠)
引數:-ps 傳送tcp的syn包    

-pa 傳送tcp的ack包    

-pu 傳送udp包

發現原理:

向特定的tcp或udp埠傳送資料報,根據響應包來判斷主機是否存活。

對於tcp埠

傳送syn包,埠開放會返回syn/ack包,關閉則會返回rst包,因為有返回包,所以主機存活,若沒有返回包則判定主機不存活;
傳送ack包,由於未建立連線,所以不管埠開放還是關閉,都會返回rst包,所以主機存活,若沒有返回包則判定主機不存活。
對於udp埠

埠開放和主機不存活時都不產生返回包,只有埠不開放時產生icmp port-unreachable返回包,所以只有根據接收到的icmp port-unreachable返回包來判斷主機存活。
namp -ps80 1.1.1.1

可以看到四層主機發現的確比三層主機發現強。

發現存活主機後對存活主機進行埠掃瞄,埠對應網路服務及應用程式,服務程式的漏洞通過埠攻入。

埠掃瞄分為tcp埠掃瞄和udp埠掃瞄。

1.syn掃瞄

又稱為隱蔽埠,不建立完整連線,只傳送syn包,得到syn/ack返回後,不再傳送ack包,所以很隱蔽。

原理:傳送syn包,若返回syn/ack包,則埠開放,返回rst包則埠關閉
引數:-ss
nmap -ss 1.1.1.1 -p 80,21,25,110,443

2.全連線掃瞄

原理:建立完整的tcp三次握手,結果最準確但不隱蔽
引數:-st
nmap -st 1.1.1.1 -p 80,21,25,110,443

原理:埠開放不產生任何返回包,埠不開放產生icmp port-unreachable返回包
引數:-su
nmap 1.1.1.1 -su -p 53

banner資訊包括軟體開發商、軟體名稱、服務型別和版本號等。

注意banner資訊的獲取要建立完整的tcp連線,即使用-st引數。

原理:通過指紋特徵來識別服務,不同的服務返回的響應不同,將響應和指紋庫進行對比從而得到結果
引數:-sv
nmap -st 1.1.1.1 -p 1-100 -sv

原理:通過指紋特徵來識別作業系統,不同的作業系統返回的響應不同,將響應和指紋庫進行對比從而得到結果
引數:-o
nmap -o 1.1.1.1

python unittest基本思路

unittest是python中的單元測試框架,但也可以作為selenium自動化測試框架。基本思路主要分為以下三步 1.設計測試用例,注意點主要是要包含測試類和測試方法 class unittest class unittest.testcase 必須包含unittest模組下的testcase類...

快速排序基本思路

尊重原創,原文鏈結 今天看到大神寫的一篇快速排序的部落格,肅然起敬,覺得原來快速排序這麼簡單 下面進行簡單的試試 快速排序的基本思想是 1 先從數列中取出乙個數作為基準數 2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊 3 再對左右區間重複第二步,直到各區間只有乙個數...

堆排序基本思路

前提 1 不建立新的空間,只在當前帶排序陣列arr中做處理 2 公升序,大頂堆。思路 1 首先建立大頂堆。建立大頂堆的過程 heapinsert 是自下而上不斷調整新加入元素的位置 2 交換首次建立好大頂堆的首尾元素 最大元素沉底,這也是為什麼利用大頂堆做公升序 同時用於重建大頂堆的arr尺寸減1 ...