最普遍的安全威脅來自內部,同時這些威脅通常都是致命的,其破壞性也遠大于外部威脅。其中網絡嗅探對于安全防護一般的網絡來說,操作簡單的同時威脅巨大,很多黑客也使用嗅探器進行網絡入侵的滲透.. 網絡嗅探器對信息安全的威脅來自其被動性和非干擾性,使得網絡嗅探具有很強的隱蔽性,往往讓網絡信息泄密變得不輕易被發現。本文分析了網絡嗅探的原理,分析了一些實例,提出解決方案和介紹實踐經驗。
一、 嗅探器攻擊原理
嗅探器(sniffer) 是利用計算機的網絡接口截獲目的地為其他計算機的數據報文的一種技術。它工作在網絡的底層,把網絡傳輸的全部數據記錄下來. 嗅探器可以幫助網絡治理員查找網絡漏洞和檢測網絡性能.嗅探器可以分析網絡的流量,以便找出所關心的網絡中潛在的問題。不同傳輸介質的網絡的可監聽性是不同的。一般來說,以太網被監聽的可能性比較高,因為以太網是一個廣播型的網絡;FDDI Token被監聽的可能性也比較高,盡管它并不是一個廣播型網絡,但帶有令牌的那些數據包在傳輸過程中,平均要經過網絡上一半的計算機;微波和無線網被監聽的可能性同樣比較高,因為無線電本身是一個廣播型的傳輸媒介,彌散在空中的無線電信號可以被很輕易的截獲。一般情況下,大多數的嗅探器至少能夠分析下面的協議:
1、標準以太網
2、TCP/ip
3、IPX
4、DECNET
5、FDDI Token
6、微波和無線網。
實際應用中的嗅探器分軟、硬兩種。軟件嗅探器便宜易于使用,缺點是往往無法抓取網絡上所有的傳輸數據(比如碎片),也就可能無法全面了解網絡的故障和運行情況;硬件嗅探器的通常稱為協議分析儀,它的優點恰恰是軟件嗅探器所欠缺的,但是價格昂貴。目前主要使用的嗅探器是軟件的。
嗅探器捕捉真實的網絡報文。嗅探器通過將其置身于網絡接口來達到這個目的--例如將以太網卡設置成雜收模式。數據在網絡上是以幀(Frame)的單位傳輸的。幀通過特定的稱為網絡驅動程序的軟件進行成型,然后通過網卡發送到網線上。通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的以太網卡捕捉到這些幀,并告訴操作系統幀的到達,然后對其進行存儲。就是在這個傳輸和接收的過程中,每一個在LAN上的工作站都有其硬件地址。這些地址唯一地表示著網絡上的機器。當用戶發送一個報文時,這些報文就會發送到LAN上所有可用的機器。在一般情況下,網絡上所有的機器都可以"聽"到通過的流量,但對不屬于自己的報文則不予響應。假如某在工作站的網絡接口處于雜收模式,那么它就可以捕捉網絡上所有的報文和幀,假如一個工作站被配置成這樣的方式,它(包括其軟件)就是一個嗅探器。這也是嗅探器會造成安全方面的問題的原因。通常使用嗅探器的入侵者,都必須擁有基點用來放置嗅探器。對于外部入侵者來說,能通過入侵外網服務器、往內部工作站發送木馬等獲得需要,然后放置其嗅探器,而內部破壞者就能夠直接獲得嗅探器的放置點,比如使用附加的物理設備作為嗅探器(例如,他們可以將嗅探器接在網絡的某個點上,而這個點通常用肉眼不輕易發現。除非人為地對網絡中的每一段網線進行檢測,沒有其他輕易方法能夠識別出這種連接(當然,網絡拓撲映射工具能夠檢測到額外的IP地址)。
嗅探器可能造成的危害:
嗅探器能夠捕捉口令.
能夠捕捉專用的或者機密的信息.
可以用來危害網絡鄰居的安全,或者用來獲取更高級別的訪問權限.
分析網絡結構,進行網絡滲透。
二.嗅探器攻擊實例
linux、Unix環境下的嗅探器有:Tcpdump、Nmap、Linuxsniffer、hunt、sniffit 等。Linsniffer是一個簡單實用的嗅探器。它主要的功能特點是用來捕捉用戶名和密碼,它在也這方面非常出色。注:編譯該軟件需要所在的Linux系統上必須的網絡包含文件(tvp.h、ip.h、inet.hif_t、her.h)。 雖然這個工具易于使用,但是Linsniffer需要完整的IP頭文件,包括經常存儲在/usr/include/net和 /usr/include/netinet的頭文件,在編譯前確保PATH變量包含/usr/include。
獲得這個軟件后,進入src目錄,使用下面的命令來編譯Linsniffer:
$ cc linsniffer.c -o linsniffer
要運行Linsniffer,使用下面的命令:
$ linsniffer
啟動以后linsniffer將創建一個空文件:tcp.log來存儲嗅探結果。
CJH$ ftp www.red.netConnected to www.red.net.220 www.red.net FTP server Wed Aug 19 02:55:52 MST 2002) ready.Name (www.red.net:root): goodcjh331 PassWord required for goodcjh.Password:230 User goodcjh logged in.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls -al200 PORT command sUCcessful.150 Opening ASCII mode data connection for /bin/ls.total 14drwxrwxr-x 4 goodcjh goodcjh 1024 May 20 19:35 .drwxr-xr-x 6 root root 1024 May 20 19:28 ..-rw-rw-r-- 1 goodcjh goodcjh 96 May 20 19:56 .bash_history-rw-r--r-- 1 goodcjh goodcjh 49 Nov 25 2002 .bash_logout-rw-r--r-- 1 goodcjh goodcjh 913 Nov 24 2002 .bashrc-rw-r--r-- 1 goodcjh goodcjh 650 Nov 24 2002 .cshrc-rw-r--r-- 1 goodcjh goodcjh 111 Nov 3 2002 .inputrc-rwxr-xr-x 1 goodcjh goodcjh 186 Sep 1 2002 .kshrc-rw-r--r-- 1 goodcjh goodcjh 392 Jan 7 2002 .login-rw-r--r-- 1 goodcjh goodcjh 51 Nov 25 2002 .logout-rw-r--r-- 1 goodcjh goodcjh 341 Oct 13 2002 .PRofile-rwxr-xr-x 1 goodcjh goodcjh 182 Sep 1 2002 .profile.kshdrwxr-xr-x 2 goodcjh goodcjh 1024 May 14 12:16 .seyondrwxr-xr-x 3 goodcjh goodcjh 1024 May 14 12:15 lg226 Transfer complete.ftp> ls200 PORT command successful.150 Opening ASCII mode data connection for /bin/ls.total 14drwxrwxr-x 4 goodcjh goodcjh 1024 May 20 19:35 .drwxr-xr-x 6 root root 1024 May 20 19:28 ..-rw-rw-r-- 1 goodcjh goodcjh 96 May 20 19:56 .bash_history-rw-r--r-- 1 goodcjh goodcjh 49 Nov 25 2002 .bash_logout-rw-r--r-- 1 goodcjh goodcjh 913 Nov 24 2002 .bashrc-rw-r--r-- 1 goodcjh goodcjh 650 Nov 24 2002 .cshrc-rw-r--r-- 1 goodcjh goodcjh 111 Nov 3 2002 .inputrc-rwxr-xr-x 1 goodcjh goodcjh 186 Sep 1 2002 .kshrc-rw-r--r-- 1 goodcjh goodcjh 392 Jan 7 2002 .login-rw-r--r-- 1 goodcjh goodcjh 51 Nov 25 2002 .logout-rw-r--r-- 1 goodcjh goodcjh 341 Oct 13 2002 .profile-rwxr-xr-x 1 goodcjh goodcjh 182 Sep 1 2002 .profile.kshdrwxr-xr-x 2 goodcjh goodcjh 1024 May 14 12:16 .seyondrwxr-xr-x 3 goodcjh goodcjh 1024 May 14 12:15 lg226 Transfer complete.ftp> ls -F200 PORT command successful.150 Opening ASCII mode data connection for /bin/ls.total 14drwxrwxr-x 4 goodcjh goodcjh 1024 May 20 19:35 ./drwxr-xr-x 6 root root 1024 May 20 19:28 ../rw-rw-r-- -rw-r--r-- 1 goodcjh goodcjh 49 Nov 25 2002 .bash_logout-rw-r--r-- 1 goodcjh goodcjh 913 Nov 24 2002 .bashrc-rw-r--r-- 1 goodcjh goodcjh 650 Nov 24 2002 .cshrc-rw-r--r-- 1 goodcjh goodcjh 111 Nov 3 2002 .inputrc-rwxr-xr-x 1 goodcjh goodcjh 186 Sep 1 2002 .kshrc*-rw-r--r-- 1 goodcjh goodcjh 392 Jan 7 2002 .login-rw-r--r-- 1 goodcjh goodcjh 51 Nov 25 2002 .logout-rw-r--r-- 1 goodcjh goodcjh 341 Oct 13 2002 .profile-rwxr-xr-x 1 goodcjh goodcjh 182 Sep 1 2002 .profile.ksh*drwxr-xr-x 2 goodcjh goodcjh 1024 May 14 12:16 .seyon/drwxr-xr-x 3 goodcjh goodcjh 1024 May 14 12:15 lg/226 Transfer complete.ftp> cd lg250 CWD command successful.ftp> ls -F200 PORT command successful.150 Opening ASCII mode data connection for /bin/ls.total 8drwxr-xr-x 3 goodcjh goodcjh 1024 May 14 12:15 ./drwxrwxr-x 4 goodcjh goodcjh 1024 May 20 19:35 ../rw-r--r-- -rw-r--r-- 1 goodcjh goodcjh 629 Aug 22 2002 lg3_prefs-rw-r--r-- 1 goodcjh goodcjh 728 Aug 22 2002 lg3_soundPref-rw-r--r-- 1 goodcjh goodcjh 2024 Aug 22 2002 lg3_startupdrwxr-xr-x 2 goodcjh goodcjh 1024 May 14 12:15 lg_layouts/226 Transfer complete.ftp> cd lg_layouts250 CWD command successful.
CJH => www.red.net [21]USER goodcjhPASS fadSYSTPORT 172,16,0,1,4,192LIST -alPORT 172,16,0,1,4,193LISTPORT 172,16,0,1,4,194LIST -FCWD lgPORT 172,16,0,1,4,195LIST -F
SYSTPORT 172,16,0,1,4,192LIST -alPORT 172,16,0,1,4,193LISTPORT 172,16,0,1,4,194LIST -FCWD lgPORT 172,16,0,1,4,195LIST -F
#/usr/sbin/lsof >test#vi test 或 grep [打開的端口號]
2、將數據隱藏,使嗅探器無法發現。
嗅探器非常難以被發現, 因為它們是被動的程序一個老練的攻擊者可以輕易通過破壞日志文件來掩蓋信息。它們并不會給別人留下進行核查的尾巴.。完全主動的解決方案很難找到,我們可以采用一些被動的防御措施:
1.安全的拓撲結構。
2.會話加密。
3.用靜態的ARP或者IP-MAC對應表代替動態的。
安全的拓撲結構:
嗅探器只能在當前網絡段上進行數據捕捉。這就意味著,將網絡分段工作進行得越細,嗅探器能夠收集的信息就越少。但是,除非你的公司是一個ISP,或者資源相對不受限制,否則這樣的解決方案需要很大的代價。網絡分段需要昂貴的硬件設備。有三種網絡設備是嗅探器不可能跨過的:交換機、路由器、網橋。我們可以通過靈活的運用這些設備來進行網絡分段。大多數早期建立的內部網絡都使用HUB集線器來連接多臺工作站,這就為網絡中數據的泛播(數據向所有工作站流通),讓嗅探器能順利地工作提供了便利。普通的嗅探器程序只是簡單地進行數據的捕捉,因此需要杜絕網絡數據的泛播。 隨著交換機的價格下降,網絡改造變得可行且很必要了。不使用HUB而用交換機來連接網絡,就能有效地避免數據進行泛播,也就是避免讓一個工作站接收任何非與之相關的數據。 對網絡進行分段,比如在交換機上設置VLAN,使得網絡隔離不必要的數據傳送。一般可以采用20個工作站為一組,這是一個比較合理的數字。然后,每個月人為地對每段進行檢測(也可以每個月采用md5隨機地對某個段進行檢測)。網絡分段只適應于中小的網絡。假如有一個500個工作站的網絡,分布在50個以上的部門中,那么完全的分段的成本上是很高的。
會話加密。
會話加密提供了另外一種解決方案。不用非凡地擔心數據被嗅探,而是要想辦法使得嗅探器不熟悉嗅探到的數據。這種方法的優點是明顯的:即使攻擊者嗅探到了數據,這些數據對他也是沒有用的。S/key和其它一次性口令技術一樣,使竊聽帳號信息失去意義。S/key的原理是遠程主機已得到一個口令(這個口令不會在不安全的網絡中傳輸),當用戶連接時會獲得一個"挑戰"(challenge)信息,用戶將這個信息和口令經過某個算法運算,產生正確的"響應"(response)信息(假如通訊雙方口令正確的話)。這種驗證方式無需在網絡中傳輸口令,而且相同的"挑戰/響應"也不會出現兩次。S/key可從以下網址得到: ftp://thumper.bellcore.com/pub/nmh/skey。它的缺點是所有帳號信息都存放在一臺主機中,假如該主機被入侵,則會危及整個網絡安全。另外配置它也不是一件簡單的事情。Kerberos包括流加密rlogind和流加密telnetd等,它可以防止入侵者捕捉用戶在登錄完成后所進行的操作。 在加密時有兩個主要的問題:一個是技術問題,一個是人為問題。
技術是指加密能力是否高。例如,64位的加密就可能不夠,而且并不是所有的應用程序都集成了加密支持。而且,跨平臺的加密方案還比較少見,一般只在一些非凡的應用之中才有。人為問題是指,有些用戶可能不喜歡加密,他們覺得這太麻煩。用戶可能開始會使用加密,但他們很少能夠堅持下。總之我們必須尋找一種友好的媒介-使用支持強大這樣的應用程序,還要具有一定的用戶友好性。使用secure shell、secure copy或者IPV6協議都可以使得信息安全的傳輸。傳統的網絡服務程序,SMTP、HTTP、FTP、POP3和Telnet等在本質上都是不安全的,因為它們在網絡上用明文傳送口令和數據,嗅探器非常輕易就可以截獲這些口令和數據.SSH的英文全稱是Secure Shell。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣"中間服務器"這種攻擊方式就不可能實現了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一個安全的"通道"。SSH綁定在端口22上,其連接采用協商方式使用RSA加密。身份鑒別完成之后,后面的所有流量都使用IDEA進行加密。SSH(Secure Shell)程序可以通過網絡登錄到遠程主機并執行命令。SSH的加密隧道保護的只是中間傳輸的安全性,使得任何通常的嗅探工具軟件無法獲取發送的內容。它提供了很強的安全驗證可以在不安全的網絡中進行安全的通信.所以它是防范嗅探器的一種方法。
用靜態的ARP或者IP-MAC對應表代替動態的ARP或者IP-MAC對應表。
該措施主要是進行滲透嗅探的防范,采用諸如ARP欺騙手段能夠讓入侵者在交換網絡中順利完成嗅探。網絡治理員需要對各種欺騙手段進行深入了解,比如嗅探中通常使用的ARP欺騙,主要是通過欺騙進行ARP動態緩存表的修改。在重要的主機或者工作站上設置靜態的ARP對應表,比如win2K系統使用arp命令設置,在交換機上設置靜態的IP-MAC對應表等,防止利用欺騙手段進行嗅探的手法。
除了以上三點另外還要重視重點區域的安全防范 。這里說的重點區域,主要是針對嗅探器的放置位置而言。入侵者要讓嗅探器發揮較大功效,通常會把嗅探器放置在數據交匯集中區域,比如網關、交換機、路由器等四周,以便能夠捕捉更多的數據。因此,對于這些區域就應該加強防范,防止在這些區域存在嗅探器。
# tar -zxvf ssh2-2.4.0.tar.gz# cd ssh2-2.4.0# ./configure ;# make ;#make install
# rm /etc/ssh2/hostkey*# ssh-keygen2 -P /etc/ssh2/hostkey
# sshd# ps x
# ssh cjh@red.forge.net
# scp my.php cjh@cjh.org:/usr/local/apache/htdocs/
#scp servername:/home/ftp/pub/file1./
新聞熱點
疑難解答