亚洲日本免费-啊轻点灬太粗太长了三男一女-麻豆av电影在线观看-日韩一级片毛片|www.grbbt.com

nmap軟件使用思路及常見用法

  一、掃描思路

  二、常見用法

  1、使用nslookup 解析出域名的IP地址

  2、使用 nmap -sL 查詢該IP網段中包含的ip地址(不檢測存活狀態,僅列表)

  3、使用nmap -sn 查詢網段中關注主機或者整個網段的IP存活狀態

  nmap -sn

  nmap針對局域網和廣域網(會根據源目的是否在同一網段進行判斷)有兩種不同的掃描方式

  當目標主機與源主機不在同一網段時:

  Nmap會發送四種不同類型的數據包來探測目標主機是否在線。

  1)  ICMP echo request

  2)  a TCP SYN packet to port 443

  3)  a TCP ACK packet to port 80

  4)  an ICMP timestamp request

  舉例:以掃描某個公網IP為例

  nmap -sn IP

  

  當目標主機與源主機在同一網段時

  nmap -sn 192.168.1.103

  Nmap 將通過發送arp請求,來檢查ip是否在線 

  4、掃描感興趣主機的端口

  需要注意,nmap在端口掃描前,首先會自動對ip的存活狀態掃描,如果發現目標ip不存活,將不再進行端口掃描。在進行ip存活掃描時(同-sn時的掃描,不過是nmap自動的),會發送2次掃描,以判斷ip的存活。

  下面是對未存活ip的掃描抓包,使用的nmap -sS -p 80 [ip] 來掃描80端口,但實際nmap先進行了ip存活的掃描

  nmap -sS -p 80 [ip]             #掃描TCP 80端口

 

  這是返回的結果,針對這種未存活的ip,nmap建議 使用 -Pn ,即不進行主機存活判斷,直接掃描端口。  

 

    下圖是使用-Pn 選項來掃描80端口

  nmap -Pn -sS -p 80 113.11.*.*  

 
 

  從nmap的掃描結果看,該端口被過濾,即不確定是否存活,但該主機是存活的。

  但從抓包來看,該主機沒有任何回包,說明該端口被過濾或未開啟,同時,也無該ip的其他回包信息,所以,判斷nmap的主機存活結論是錯誤的(個人認為)。從抓包來看,nmap當未受到數據包時,默認都發送2次請求包。當未收到回復包時,說明發送過去的數據包被防火墻等設備過濾掉了,如果沒有被過濾,應該回復rest包,nmap顯示的端口則是關閉。

  nmap端口掃描結果的說明:

  Nmap通過探測將端口劃分為6個狀態:

  1 open:                    端口是開放的。

  2 closed:                  端口是關閉的。

  3 filtered:                 端口被防火墻IDS/IPS屏蔽,無法確定其狀態。

  4 unfiltered:             端口沒有被屏蔽,但是否開放需要進一步確定。

  5 open|filtered:       端口是開放的或被屏蔽。

  6 closed|filtered :    端口是關閉的或被屏蔽。

  nmap常見的端口掃描方式有以下幾種:

  -P     指定端口號,如果不指定端口,默認是掃描1000個常用的tcp或udp端口(根據掃描項)

  -F     快速模式,當不指定端口時,僅掃描TOP 100的端口

  -sS    TCP端口掃描,使用SYN 方式掃描,不建立TCP連接

  -sT    TCP端口掃描,tcp connect 通過3次握手,建立tcp連接

  -sU   UDP端口掃描

  其他端口掃描方式:

  -sA/sW/sM:指定使用 ACK/Window/Maimon scans的方式來對目標主機進行掃描。

  -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密掃描方式來協助探測對方的TCP端口狀態。

  –scanflags <flags>: 定制TCP包的flags。

  -sI <zombiehost[:probeport]>: 指定使用idle scan方式來掃描目標主機(前提需要找到合適的zombie host)

  -sY/sZ: 使用SCTP INIT/COOKIE-ECHO來掃描SCTP協議端口的開放的情況。

  -sO: 使用IP protocol 掃描確定目標機支持的協議類型。

  -b <FTP relay host>: 使用FTP bounce scan掃描方式

  端口掃描原理

  TCP SYN scanning

  這是Nmap默認的掃描方式,通常被稱作半開放掃描(Half-open scanning)。該方式發送SYN到目標端口,如果收到SYN/ACK回復,那么判斷端口是開放的;如果收到RST包,說明該端口是關閉的。如果沒有收到回復,那么判斷該端口被屏蔽(Filtered)。因為該方式僅發送SYN包對目標主機的特定端口,但不建立的完整的TCP連接,所以相對比較隱蔽,而且效率比較高,適用范圍廣。

  TCP SYN探測到端口關閉:

  TCP SYN探測到端口開放:

  TCP connect scanning

  TCP connect方式使用系統網絡API connect向目標主機的端口發起連接,如果無法連接,說明該端口關閉。該方式掃描速度比較慢,而且由于建立完整的TCP連接會在目標機上留下記錄信息,不夠隱蔽。所以,TCP connect是TCP SYN無法使用才考慮選擇的方式。

  TCP connect探測到端口關閉:

  TCP connect探測到端口開放:

  TCP ACK scanning

  向目標主機的端口發送ACK包,如果收到RST包,說明該端口沒有被防火墻屏蔽;沒有收到RST包,說明被屏蔽。該方式只能用于確定防火墻是否屏蔽某個端口,可以輔助TCP SYN的方式來判斷目標主機防火墻的狀況。

  TCP ACK探測到端口被屏蔽:

  TCP ACK探測到端口未被屏蔽:

  TCP FIN/Xmas/NULL scanning

  這三種掃描方式被稱為秘密掃描(Stealthy Scan),因為相對比較隱蔽。FIN掃描向目標主機的端口發送的TCP FIN包或Xmas tree包/Null包,如果收到對方RST回復包,那么說明該端口是關閉的;沒有收到RST包說明端口可能是開放的或被屏蔽的(open|filtered)。

  其中Xmas tree包是指flags中FIN URG PUSH被置為1的TCP包;NULL包是指所有flags都為0的TCP包。

  TCP FIN探測到主機端口是關閉的:

  TCP FIN探測到主機端口是開放或屏蔽的:

  UDP scanning

  UDP掃描方式用于判斷UDP端口的情況。向目標主機的UDP端口發送探測包,如果收到回復“ICMP port unreachable”就說明該端口是關閉的;如果沒有收到回復,那說明UDP端口可能是開放的或屏蔽的。因此,通過反向排除法的方式來斷定哪些UDP端口是可能出于開放狀態。

  UDP端口關閉:

  UDP端口開放或被屏蔽:

  隱藏自身IP的掃描

  使用idle scan方式借助僵尸主機(zombie host,也被稱為idle host,該主機處于空閑狀態并且它的IPID方式為遞增。詳細實現原理參見:http://nmap.org/book/idlescan.html)來掃描目標在主機,達到隱蔽自己的目的;

  或者使用FTP bounce scan,借助FTP允許的代理服務掃描其他的主機,同樣達到隱藏自己的身份的目的。

  5、版本偵測

  版本偵測,用于確定目標主機開放端口上運行的具體的應用程序及版本信息。

  Nmap提供的版本偵測具有如下的優點:

  高速。并行地進行套接字操作,實現一組高效的探測匹配定義語法。

  盡可能地確定應用名字與版本名字。

  支持TCP/UDP協議,支持文本格式與二進制格式。

  支持多種平臺服務的偵測,包括Linux/Windows/Mac OS/FreeBSD等系統。

  如果檢測到SSL,會調用openSSL繼續偵測運行在SSL上的具體協議(如HTTPS/POP3S/IMAPS)。

  如果檢測到SunRPC服務,那么會調用brute-force RPC grinder進一步確定RPC程序編號、名字、版本號。

  支持完整的IPv6功能,包括TCP/UDP,基于TCP的SSL。

  通用平臺枚舉功能(CPE)

  廣泛的應用程序數據庫(nmap-services-probes)。目前Nmap可以識別幾千種服務的簽名,包含了180多種不同的協議。

  5.1   版本偵測原理

  簡要的介紹版本的偵測原理。

  版本偵測主要分為以下幾個步驟:

  1.首先檢查open與open|filtered狀態的端口是否在排除端口列表內。如果在排除列表,將該端口剔除。

  2.如果是TCP端口,嘗試建立TCP連接。嘗試等待片刻(通常6秒或更多,具體時間可以查詢文件nmap-services-probes中Probe TCP NULL q||對應的totalwaitms)。通常在等待時間內,會接收到目標機發送的“WelcomeBanner”信息。nmap將接收到的Banner與nmap-services-probes中NULL probe中的簽名進行對比。查找對應應用程序的名字與版本信息。

  3.如果通過“Welcome Banner”無法確定應用程序版本,那么nmap再嘗試發送其他的探測包(即從nmap-services-probes中挑選合適的probe),將probe得到回復包與數據庫中的簽名進行對比。如果反復探測都無法得出具體應用,那么打印出應用返回報文,讓用戶自行進一步判定。

  4.如果是UDP端口,那么直接使用nmap-services-probes中探測包進行探測匹配。根據結果對比分析出UDP應用服務類型。

  5.如果探測到應用程序是SSL,那么調用openSSL進一步的偵查運行在SSL之上的具體的應用類型。

  6.如果探測到應用程序是SunRPC,那么調用brute-force RPC grinder進一步探測具體服務。

  5.2    版本偵測的用法

  版本偵測方面的命令行選項比較簡單

  -sV: 指定讓Nmap進行版本偵測

  –version-intensity <level>: 指定版本偵測強度(0-9),默認為7。數值越高,探測出的服務越準確,但是運行時間會比較長。

  –version-light: 指定使用輕量偵測方式 (intensity 2)

  –version-all: 嘗試使用所有的probes進行偵測 (intensity 9)

  –version-trace: 顯示出詳細的版本偵測過程信息。

  下面以掃描80端口的版本為例,顯示snmp的掃描結果和抓包結果

  snmp -sV -p 80 113.11.*.*        #指定掃描80端口


  從抓包可以看出,在未指定 -Pn 參數時,默認限制性的ip存活性檢測,只有當確認主機存活后才進行版本檢測。

  使用snmp -sV 113.11.*.* 時,默認檢查存活狀態,根據存活狀態再掃描TCP常見的1000端口,根據端口狀態再掃描版本(在http版本確認中,首先建立了tcp連接,然后關閉tcp連接,再建立連接3次握手,并發出get請求后進行4次揮手)

  6、OS偵測

  命令nmap -O 113.11.*.*

  nmap首先檢測主機存活狀態,然后掃描常見的1000端口,最后判斷OS系統,下圖是運行后的結果。根據結果,里面的端口都能夠掃描出是開啟或是關閉,說明未架設防火墻等安全防護設備。

  

  7、Nmap 高級用法

  防火墻與IDS規避為用于繞開防火墻與IDS(入侵檢測系統)的檢測與屏蔽,以便能夠更加詳細地發現目標主機的狀況。

  Nmap提供了多種規避技巧,通常可以從兩個方面考慮規避方式:數據包的變換(Packet Change)與時序變換(Timing Change)。

  7.1 分片(Fragmentation)

  將可疑的探測包進行分片處理(例如將TCP包拆分成多個IP包發送過去),某些簡單的防火墻為了加快處理速度可能不會進行重組檢查,以此避開其檢查。

  -f; –mtu <val>: 指定使用分片、指定數據包的MTU.

  nmap -sn -f –mtu 16 113.11.*.*          #注意 mtu后的數值必須是8的倍數,如下圖提示

  

  下圖中,首先是正常命令時的抓包,然后是采用分片后的抓包:

  nmap -sn 113.11.*.*

  nmap  -sn -f –mtu 16 113.11.*.*

  wKiom1SzxLaj4WcNAAWMdWEuyaY985.jpg從抓包中,可以看出data的數據包為16byte,與分片設定的字節是一致的,同時抓包中也有提示分片包"Reassembled in #878"

  7.2 IP誘騙(IP decoys)

  在進行掃描時,將真實IP地址和其他主機的IP地址(其他主機需要在線,否則目標主機將回復大量數據包到不存在的主機,從而實質構成了拒絕服務攻擊)混合使用,以此讓目標主機的防火墻或IDS追蹤檢查大量的不同IP地址的數據包,降低其追查到自身的概率。注意,某些高級的IDS系統通過統計分析仍然可以追蹤出掃描者真實IP地址。

  -D <decoy1,decoy2[,ME],…>: 用一組IP地址掩蓋真實地址,其中ME填入自己的IP地址。

  nmap -sn -D 1.1.1.1 113.11.*.*        #這里如果不添加[ME]自己的地址也會使用自己的地址,同時也會發送誘騙的地址,即2個地址都將作為源地址

  

  下圖是抓包截圖,可以看出源地址有兩個,一個是誘騙的地址,另一個是自己的真實地址,利用偽裝地址可以發動反射形dos攻擊

  這是源地址為內網地址,當源地址為公網地址時,不填寫源地址是否可行,需要驗證。

  7.3 指定源端口

  某些目標主機只允許來自特定端口的數據包通過防火墻。例如FTP服務器配置為:允許源端口為21號的TCP包通過防火墻與FTP服務端通信,但是源端口為其他端口的數據包被屏蔽。所以,在此類情況下,可以指定Nmap將發送的數據包的源端口都設置特定的端口。

  -g/–source-port <portnum>: 使用指定源端口

  nmap -sn -g  11111 113.11.*.*        #指定源端口為11111,向外發送

  

  下圖是抓包,從中可以看出tcp的源端口都是51111,這個可以通過指定源端口來符合防火墻的ACL訪問列表,從而躲避防火墻的檢測。

  

  7.4 掃描延時

  某些防火墻針對發送過于頻繁的數據包會進行嚴格的偵查,而且某些系統限制錯誤報文產生的頻率(例如,Solaris 系統通常會限制每秒鐘只能產生一個ICMP消息回復給UDP掃描),所以,定制該情況下發包的頻率和發包延時可以降低目標主機的審查強度、節省網絡帶寬。

  <待補實例>

  7.5 IP偽裝(IP Spoofing)

  顧名思義,IP偽裝即將自己發送的數據包中的IP地址偽裝成其他主機的地址,從而目標機認為是其他主機在與之通信。需要注意,如果希望接收到目標主機的回復包,那么偽裝的IP需要位于統一局域網內。另外,如果既希望隱蔽自己的IP地址,又希望收到目標主機的回復包,那么可以嘗試使用idle scan或匿名代理(如TOR)等網絡技術。

  -S <IP_Address>: 偽裝成其他IP地址

  nmap -sn -S 1.1.1.1 113.11.*.*        #當源地址偽裝成其他ip時,目標機認為是其他主機在與之通信。

  <實例不成功>,下面是未成功的抓圖,如有知曉的同學,請指點j_0069.gif

  提示如果是偽裝的源ip地址,必須要使用-Pn 和 -e 選項

  

  當使用了-Pn 和 -e 選項后,依然提示報錯,不能夠分配地址。

  nmap -sn -Pn -e wlan0 -S 1.1.1.1 113.11.*.*

  nmap -sn -Pn -e eth0 -S 1.1.1.1 113.11.*.*

  

  7.6 其他技術

  Nmap還提供多種規避技巧,比如指定使用某個網絡接口來發送數據包、指定發送包的最小長度、指定發包的MTU、指定TTL、指定偽裝的MAC地址、使用錯誤檢查和(badchecksum)。

  更多信息http://nmap.org/book/man-bypass-firewalls-ids.html

  -f; –mtu <val>: 指定使用分片、指定數據包的MTU.

  -D <decoy1,decoy2[,ME],…>: 用一組IP地址掩蓋真實地址,其中ME填入自己的IP地址。

  -S <IP_Address>: 偽裝成其他IP地址

  -e <iface>: 使用特定的網絡接口

  -g/–source-port <portnum>: 使用指定源端口

  –data-length <num>: 填充隨機數據讓數據包長度達到Num。

  –ip-options <options>: 使用指定的IP選項來發送數據包。

  –ttl <val>: 設置time-to-live時間。

  –spoof-mac <mac address/prefix/vendor name>: 偽裝MAC地址

  –badsum: 使用錯誤的checksum來發送數據包(正常情況下,該類數據包被拋棄,如果收到回復,說明回復來自防火墻或IDS/IPS)。

  8 NSE腳本引擎

  <待補充>

  NSE腳本引擎(Nmap Scripting Engine)是Nmap最強大最靈活的功能之一,允許用戶自己編寫腳本來執行自動化的操作或者擴展Nmap的功能。

  NSE使用Lua腳本語言,并且默認提供了豐富的腳本庫,目前已經包含14個類別的350多個腳本。

  NSE的設計初衷主要考慮以下幾個方面:

  網絡發現(Network Discovery)

  更加復雜的版本偵測(例如skype軟件)

  漏洞偵測(Vulnerability Detection)

  后門偵測(Backdoor Detection)

  漏洞利用(Vulnerability Exploitation)

    文章來源:http://2042617.blog.51cto.com/2032617/1602300

上一篇:安卓防火墻 PS DroidWall

下一篇:Nmap高級用法與典型場景