linux嗅探工具Dsniff詳解
linux 嗅探工具Dsniff 詳解Dsniff 是一個著名的網(wǎng)絡(luò)嗅探工具包。其開發(fā)者Dug Song 早在1999年12月,以密歇根大學CITI 研究室(Center for Informatio
linux 嗅探工具Dsniff 詳解
Dsniff 是一個著名的網(wǎng)絡(luò)嗅探工具包。其開發(fā)者Dug Song 早在1999年12月,以密歇根大學CITI 研究室(Center for Information Technology Integration )的研究成果為基礎(chǔ),開發(fā)了這個后來具有很大影響力的網(wǎng)絡(luò)安全工具包。Dug Song 開發(fā)Dsniff 的本意是揭示網(wǎng)絡(luò)通信的不安全性,借助這個工具包,網(wǎng)絡(luò)管理員可以對自己的網(wǎng)絡(luò)進行審計,也包括滲透測試。但萬事總有其兩面性,Dsniff 所帶來的負面作用也是“巨大”的,首先它是可以自由獲取的,任何擁有這個工具包的人都可能做“非正當”的事,其次,Dsniff 里面的某些工具,充分揭示了一些安全協(xié)議的“不安全性”,例如針對SSH1和SSL 的MITM (Man-In-The-Middle )攻擊工具—SSHmitm和Webmitm 。SSH1和SSL 都是建立網(wǎng)絡(luò)通信加密通道的機制,向來被認為是很安全的,但人們在具體使用時,往往因為方便性上的考慮而忽視了某些環(huán)節(jié),造成實事上的不安全。所以說,最大的不安全性,往往并不在于對安全的一無所知,而在于過于相信自己的安全。
Dub Song 在2000年12月發(fā)布了Dsniff 的v2.3版本,該版本支持OpenBSD 、Linux 、Solaris 系統(tǒng)平臺。目前,最新版本是2001年3月發(fā)布的v2.4b1的Beta 版。Dsniff 的下載網(wǎng)址:除了針對Unix 系統(tǒng)的版本,從網(wǎng)上也可以得到Windows 平臺上運行的Dsniff 早期版dsniff 工具介紹
純粹被動地進行網(wǎng)絡(luò)活動監(jiān)視的工具,包括:dsniff 、filesnarf 、mailsnarf 、msgsnarf 、urlsnarf 、webspy 針對SSH 和SSL 的MITM (Man-In-The-Middle )“攻擊”工具,包括sshmitm 和webmitm 發(fā)起主動欺騙的工具,包括:arpspoof 、dnsspoof 、macof 其它工具,包括tcpkill 、tcpnice dsniff
dsniff 是一個密碼偵測工具,他能夠自動分析端口上收到的某些協(xié)議的數(shù)據(jù)包,并獲取相應的密碼。dnisff 支持的協(xié)議有FTP, Telnet, SMTP, HTTP, POP, poppass, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP MS-CHAP, NFS, VRRP, YP/NIS,SOCKS, X11, CVS, IRC, AIM, ICQ, Napster, PostgreSQL, Meeting Maker, Citrix ICA, Symantec pcAnywhere, NAI Sniffer, Microsoft SMB, Oracle SQL*Net,Sybase and Microsoft SQL 。
dsniff [-c ][-d ][-m ][-n ][-i interface ][-s snaplen ][-f services ][-t trigger[,...]]][-r |-w savefile ]
[expression ]注意:這里所有的expression 都是代表TCPDUMP 的表達式,指定對哪些數(shù)
據(jù)包進行攻擊
filesnarf
,filesnarf 可以嗅探網(wǎng)絡(luò)文件系統(tǒng)(NFS )的流量,并選定某個文件,轉(zhuǎn)儲到本地當前工作目錄
filesnarf [-i interface
EM>][[-v ]pattern [expression ]]
mailsnarf
mailsnarf 可以嗅探SMTP 和POP 流量,并以Berkeley 郵件格式輸出e-mail 消息mailsnarf [-i interface ][[-v ]pattern [expression ]]
嗅探發(fā)送的SMTP 流量:
嗅探接收的POP
流量:
,msgsnarf
msgsnarf 可以嗅探聊天軟件的聊天內(nèi)容,包括AOL,ICQ 2000, IRC, MSN Messenger, 或Yahoo Messenger
msgsnarf [-i interface ][[-v ]pattern [expression
]]
urlsnarf
urlsnarf 可以嗅探HTTP 請求報文的內(nèi)容,并以CLF (CommonLog Format )通用日志格式輸出
urlsnarf [-n ][-i interface ][[-v ]pattern [expression
]]
webspy
webspy 指定一個要嗅探的主機,如果指定主機發(fā)送HTTP 請求,打開網(wǎng)頁,webspy 也會通過netscape 瀏覽器在本地打開一個相同的網(wǎng)頁
webspy [-i interface ]host host 指定要嗅探的主機
,sshmitm
sshmitm 是Dsniff 自帶的一個具有威脅的工具之一。首先通過dnsspoof 偽造實際機器主機名將攻擊目標主機的SSH 連接轉(zhuǎn)到本地,那么sshmitm 可以截獲來自主機的密鑰,并獲得被劫持連接中的所有信息解碼,然后重新轉(zhuǎn)發(fā)SSH 流量到SSH 服務(wù)器。
sshmitm 可以對某個SSH 會話發(fā)動MITM (Monkey-In-The-Middle )攻擊(注意,這里的Monkey 是Dsniff 包readme 文件中的解析,而不是常見的Man ,這種區(qū)別實際上是沒有“區(qū)別”,也許就是因為Dsniff 以猴子做為其標志的原因吧)。通過sshmitm ,攻擊者可以捕獲某個SSH 會話的登錄口令,甚至可以“劫持”整個會話過程(攻擊者在其主機上通過OpenSSL 提供的代碼生成偽造的證書,以欺騙目標主機,使之相信就是有效的通信另一方,結(jié)果是,攻擊者主機成了SSH 安全通道的中轉(zhuǎn)站)。目前,對于SSH1,這種MITM 攻擊已經(jīng)構(gòu)成了嚴重的威脅。MITM 并不是一個新的概念,它是一種對認證及密鑰交換協(xié)議進行攻擊的有效手段。通常,在SSH 會話中,服務(wù)器首先會給客戶端發(fā)送其公鑰,嚴格來說,這種密鑰的交換和管理應該是基于X.509這種公鑰基礎(chǔ)設(shè)施(PKI )的,但因為PKI 本身的復雜性導致真正應用了這種公鑰管理機制的服務(wù)器非常少,所以,通常情況下,服務(wù)器只是簡單的自己生成密鑰對,并將其中的公鑰發(fā)送給客戶端。
客戶端收到服務(wù)器的公鑰后,必須獨立驗證其有效性。通常,使用SSH 的客戶端會由sysadmin 或其它賬號來維護一個“密鑰/主機名”的本地數(shù)據(jù)庫,當首次與某個SSH 服務(wù)器建立連接時,客戶端可能被事先配制成自動接受并記錄服務(wù)器公鑰到本地數(shù)據(jù)庫中,這就導致可能發(fā)生MITM 攻擊。其實,建立加密的安全網(wǎng)絡(luò)都存在一個基本的問題,無論如何,某種程度上講,加密通道的初始化連接總是建立在一個存在潛在危險的網(wǎng)絡(luò)之上的,如果密鑰交換機制并不健全,或者是根本就被忽略了,那之后建立起來的加密通道也形同虛設(shè)了。按道理講,SSH 之類的協(xié)議本身是沒有問題的,只要嚴格按照標準來建立加密及密鑰交換管理機制(例如PKI ),攻擊者是根本不會有可乘之機的,可問題就在于,許多時候,為了使用上的方便,“復雜”的保證技術(shù)就被人們拋之腦后了。當然,一種協(xié)議如果其可用性并不很強,也許本身就是問題,現(xiàn)在,SSH2較SSH1已經(jīng)有了較大改進。具體來說,在某個SSH 連接建立之初,如果客戶端收到一個未知的服務(wù)器端公鑰,OpenSSH 會有下列配置處理方式:
自動增加該公鑰到本地數(shù)據(jù)庫;發(fā)出下面列出的警告消息,并詢問用戶是添加該公鑰
,還是放棄連接;
------------------------------------------------------------------------
--WARNING:HOST IDENTIFICATION HAS CHANGED! --
------------------------------------------------------------------------
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middleattack)! It is also possible that the host-key has just been changed. Please contact your system administrator. 拒絕接受。如果客戶端對未知公鑰的驗證被取消了(或者客戶端配置本身已經(jīng)旁路掉了這個過程),或者如果客戶端保存已知主機CA 證書的緩存被“毒害”了,就很有可能導致攻擊者發(fā)起MITM 攻擊。從根本上講,要防止MITM 方式的攻擊,用戶自身加強安全措施才是關(guān)鍵,例如,密鑰的初始交換也許可以換做其它方式(比如軟盤),嚴格管理本地的證書列表數(shù)據(jù)庫,對于出現(xiàn)的告警提示,應該仔細甄別,防止第三方的欺騙行為。
sshmitm [-d ][-I ][-p port ]host [port ]
注意:這里的-P 后面指定的是sshmitm 本地使用的端口,也就是攻擊目標主機用來連接SSH 服務(wù)器的端口,而后面的port 則是我轉(zhuǎn)發(fā)SSH 流量到SSH 服務(wù)器使用的端口,此外如果是用了參數(shù)-I ,就可以在攻擊目標主機連接到SSH 服務(wù)器后,查看他們之間的交互內(nèi)容。首先通過dnsspoof 進行對攻擊目標進行dns
欺騙:
接著便可以進行sshmitm 嗅探:(由于使用了-I ,所以,SSH 連接后的交互內(nèi)容也顯示了出來)
,webmitm
webmitm 與sshmitm 類似,也需要dnsspoof 的“配合”,不同的是,webmitm“劫持”的是HTTP 和HTTPS 會話過程,捕獲SSL 的加密通信。
webmitm [-d ]
arpspoof
arpspoof 啟用arp 欺騙,將自己網(wǎng)卡的IP 地址偽裝成指定IP 地址的MAC
持續(xù)不斷的發(fā)送假的ARP 響應包給一臺或多臺主機,以“毒害”其ARP 緩存表。一旦成功,即可以用別的嗅探工具來“接收”發(fā)送到本地的數(shù)據(jù)包。與Ettercap 不同的是,arpspoof 并不進行真正的“嗅探”,它只是簡單的進行ARP 欺騙,本地主
機必須啟動內(nèi)核的IP Forwarding 功能(或者使用fragrouter 這樣的工具),否則,所有“轉(zhuǎn)向”發(fā)到本地的數(shù)據(jù)包就如同進了黑洞,正常的網(wǎng)絡(luò)通信將無法進行,而一旦啟動了本地的IP Forwarding ,內(nèi)核將自動對本地收到的目的IP 卻是別處的數(shù)據(jù)包進行轉(zhuǎn)發(fā),正常的通信自然可以進行。這樣,就可以進行后續(xù)的許多工作,包括分析嗅探得到的數(shù)據(jù)包、修改數(shù)據(jù)包中的某些信息以重新轉(zhuǎn)發(fā)等等。
在Linux 中,缺省是禁止IP Forwarding 的,可以使用簡單的命令啟動它:
修改#vi/etc/sysctl.conf:
net.ipv4.ip_forward=1
修改后運行#sysctl–p命令使得內(nèi)核改變立即生效;
一旦啟動了本地的IP Forwarding ,內(nèi)核將自動對本地收到的目的IP 卻是別處的數(shù)據(jù)包進行轉(zhuǎn)發(fā),(同時向數(shù)據(jù)包的源地址發(fā)送ICMP 重定向報文,當然,由于啟用了ARP 欺騙,這個
,重定向報文是不起作用的)。這里第17個數(shù)據(jù)包的源地址已經(jīng)從本來的源MAC 地址改變?yōu)楸镜豈AC
地址了。說明數(shù)據(jù)包是本地轉(zhuǎn)發(fā)出去的。
arpspoof [-i interface ][-t target ]host 如果不指定tagget
則向網(wǎng)絡(luò)中所有的主機發(fā)送欺騙dnsspoof
dnsspoof 啟用DNS 欺騙,如果dnsspoof 嗅探到局域網(wǎng)內(nèi)有DNS 請求數(shù)據(jù)包,它會分析其內(nèi)容,并用偽造的DNS 響應包來回復請求者。如果是請求解析某個域名,dnsspoof 會讓該域名重新指向另一個IP 地址(黑客所控制的主機),如果是反向IP 指針解析,dnsspoof 也會返回一個偽造的域名。
dnsspoof [-i interface ][-f hostsfile ][expression ]這里-f 可以指定主機列表文件,文件格式與/usr/local/lib/dnsspoof.hosts相同,如果不指定該文件,dnsspoof 會返回本地的IP 給域名解析
請求者
這里本地主機會搶先代替DNS 服務(wù)器來相應查詢,前提是本地主機先回答DNS 查詢,如果因為網(wǎng)絡(luò)問題,DNS 服務(wù)器先發(fā)送了應答,DNS
欺騙就不能生效了
macof
macof 用來進行MAC flooding ,可以用來使交換機的MAC 表溢出,對于以后收到的數(shù)據(jù)包以廣播方式發(fā)送。注意:在進行MAC 泛洪之前就存在于交換機MAC 表中的條目不會被覆
,蓋,只能等到這些條目自然老化
>macof [-i interface ][-s src ][-d dst ][-e tha ][-x sport ][-y dport ][-n times
]
tcpkill
tcpkill 能夠切斷指定的TCP 會話連接,主要是基于TCP 的三次握手過程
tcpkill [-i interface ][-1...9]
expression
這里,當tcpkill 檢測到兩邊的TCP 連接后,會同時想兩邊(冒充對方)發(fā)送tcp reset 報文,重置連接。
tcpnice
tcpnice 能夠通過在添加活動的流量,降低指定的LAN 上的TCP 連接的速度
,tcpnice [-I ][-i interface ][-n increment ]expression 度,1為原速,20
為最低這里的-n 后面可以跟1-20,代表降低的速