Linux下的sniffer——Dsniff
[轉(zhuǎn)載]Linux下的sniffer ——Dsniff信息來源:www.shangdi.orgDsniff 是一個(gè)著名的網(wǎng)絡(luò)嗅探工具包。其開發(fā)者Dug Song早在1999年12月,以密歇根大學(xué)CIT
[轉(zhuǎn)載]Linux下的sniffer ——Dsniff
信息來源:www.shangdi.org
Dsniff 是一個(gè)著名的網(wǎng)絡(luò)嗅探工具包。其開發(fā)者Dug Song早在1999年12月,以密歇根大學(xué)CITI 研究室(Center for Information Technology Integration)的研究成果為基礎(chǔ),開發(fā)了這個(gè)后來具有很大影響力的網(wǎng)絡(luò)安全工具包。Dug Song開發(fā)Dsniff 的本意是揭示網(wǎng)絡(luò)通信的不安全性,借助這個(gè)工具包,網(wǎng)絡(luò)管理員可以對(duì)自己的網(wǎng)絡(luò)進(jìn)行審計(jì),也包括滲透測(cè)試。但萬事總有其兩面性,Dsniff 所帶來的負(fù)面作用也是―巨大‖的,首先它是可以自由獲取的,任何擁有這個(gè)工具包的人都可能做―非正當(dāng)‖的事,其次,Dsniff 里面的某些工具,充分揭示了一些安全協(xié)議的―不安全性‖,例如針對(duì)SSH1和SSL 的MITM (Man-In-The-Middle )攻擊工具—SSHmitm 和 Webmitm 。SSH1和SSL 都是建立網(wǎng)絡(luò)通信加密通道的機(jī)制,向來被認(rèn)為是很安全的,但人們?cè)诰唧w使用時(shí),往往因?yàn)榉奖阈陨系目紤]而忽視了某些環(huán)節(jié),造成實(shí)事上的不安全。所以說,最大的不安全性,往往并不在于對(duì)安全的一無所知,而在于過于相信自己的安全。
Dub Song在2000年12月發(fā)布了Dsniff 的v2.3版本,該版本支持OpenBSD 、Linux 、Solaris 系統(tǒng)平臺(tái)。目前,最新版本是2001年3月發(fā)布的v2.4b1的Beta 版。Dsniff 的下載網(wǎng)址:http://monkey.org/~dugsong/dsniff/
除了針對(duì)Unix 系統(tǒng)的版本,從網(wǎng)上也可以得到Windows 平臺(tái)上運(yùn)行的Dsniff 早期版 作為一個(gè)工具集,dsniff 包括的工具分為四類:
?
?
?
? 純粹被動(dòng)地進(jìn)行網(wǎng)絡(luò)活動(dòng)監(jiān)視的工具,包括:dsniff 、filesnarf 、mailsnarf 、msgsnarf 、urlsnarf 、webspy 針對(duì)SSH 和SSL 的MITM (Man-In-The-Middle )―攻擊‖工具,包括sshmitm 和webmitm 發(fā)起主動(dòng)欺騙的工具,包括:arpspoof 、dnsspoof 、macof 其它工具,包括tcpkill 、tcpnice
dsniff 的安裝Dsniff 依賴于一些第三方的軟件包:
openssl-0.9.7i.tar.gz
libnids-1.18.tar.gz
libpcap-0.7.2.tar.gz
libnet-1.0.2a.tar.gz
Berkeley db-4.7.25.tar.gz
我使用的操作系統(tǒng)是RHEL5
一、安裝openssl
注意:這里都采用默認(rèn)配置,如果要修改安裝的目錄,可以參考軟件包里的install 文件 用tar 解壓軟件包后,執(zhí)行三條命令:
1.
2.
3. ./config make make install
,二、安裝libpcap
用tar 解壓軟件包后,執(zhí)行三條命令:
1.
2.
3. ./configure make make install 三、安裝libnet
用tar 解壓軟件包后,執(zhí)行三條命令:
1.
2.
3. ./configure make make install 四、安裝libnids
用tar 解壓軟件包后,執(zhí)行三條命令:
1.
2.
3. ./configure make make install 五、安裝Berkeley DB
用tar 解壓軟件包后,執(zhí)行
1.
2.
3.
4. cd build_unix ../dist/configure make make install
六、最后安裝dsniff
用tar 解壓軟件包后,執(zhí)行
1.
2.
3. ./configure make make install 七、演示(注:安裝中過長(zhǎng)的編譯過程被我刪減了)
安裝完成后,默認(rèn)dsniff 的安裝目錄是/usr/local/sbin,在這里可以看到dsniff 所有的工具
,dsniff 工具介紹 ?
?
?
? 純粹被動(dòng)地進(jìn)行網(wǎng)絡(luò)活動(dòng)監(jiān)視的工具,包括:dsniff 、filesnarf 、mailsnarf 、msgsnarf 、urlsnarf 、webspy 針對(duì)SSH 和SSL 的MITM (Man-In-The-Middle )―攻擊‖工具,包括sshmitm 和webmitm 發(fā)起主動(dòng)欺騙的工具,包括:arpspoof 、dnsspoof 、macof 其它工具,包括tcpkill 、tcpnice
msgsnarf msgsnarf 可以嗅探聊天軟件的聊天內(nèi)容,包括AOL,ICQ 2000, IRC, MSN Messenger, 或Yahoo Messenger
msgsnarf [-i interface ] [[-v ] pattern [expression ]]
urlsnarf urlsnarf 可以嗅探HTTP 請(qǐng)求報(bào)文的內(nèi)容,并以CLF (Common Log Format)通用日志格式輸出
urlsnarf [-n ] [-i interface ] [[-v ] pattern [expression ]]
webspywebspy 指定一個(gè)要嗅探的主機(jī),如果指定主機(jī)發(fā)送HTTP 請(qǐng)求,打開網(wǎng)頁,webspy 也會(huì)通過netscape 瀏覽器在本地打開一個(gè)相同的網(wǎng)頁
webspy [-i interface ] host host 指定要嗅探的主機(jī)
sshmitm sshmitm 是Dsniff 自帶的一個(gè)具有威脅的工具之一。首先通過dnsspoof 偽造實(shí)際機(jī)器主機(jī)名將攻擊目標(biāo)主機(jī)的SSH 連接轉(zhuǎn)到本地,那么sshmitm 可以截獲來自主機(jī)的密鑰,并獲得被劫持連接中的所有信息解碼,然后重新轉(zhuǎn)發(fā)SSH 流量到SSH 服務(wù)器。
sshmitm 可以對(duì)某個(gè)SSH 會(huì)話發(fā)動(dòng)MITM (Monkey-In-The-Middle )攻擊(注意,這里的Monkey 是Dsniff 包readme 文件中的解析,而不是常見的Man ,這種區(qū)別實(shí)際上是沒有―區(qū)別‖,也許就是因?yàn)镈sniff 以猴子做為其標(biāo)志的原因吧)。通過sshmitm ,攻擊者可以捕獲某個(gè) SSH 會(huì)話的登錄口令,
,甚至可以―劫持‖整個(gè)會(huì)話過程(攻擊者在其主機(jī)上通過OpenSSL 提供的代碼生成偽造的證書,以欺騙目標(biāo)主機(jī),使之相信就是有效的通信另一方,結(jié)果是,攻擊者主機(jī)成了SSH 安全通道的中轉(zhuǎn)站)。目前,對(duì)于SSH1,這種MITM 攻擊已經(jīng)構(gòu)成了嚴(yán)重的威脅。MITM 并不是一個(gè)新的概念,它是一種對(duì)認(rèn)證及密鑰交換協(xié)議進(jìn)行攻擊的有效手段。通常,在SSH 會(huì)話中,服務(wù)器首先會(huì)給客戶端發(fā)送其公鑰,嚴(yán)格來說,這種密鑰的交換和管理應(yīng)該是基于X.509這種公鑰基礎(chǔ)設(shè)施(PKI )的,但因?yàn)镻KI 本身的復(fù)雜性導(dǎo)致真正應(yīng)用了這種公鑰管理機(jī)制的服務(wù)器非常少,所以,通常情況下,服務(wù)器只是簡(jiǎn)單的自己生成密鑰對(duì),并將其中的公鑰發(fā)送給客戶端??蛻舳耸盏椒?wù)器的公鑰后,必須獨(dú)立驗(yàn)證其有效性。通常,使用SSH 的客戶端會(huì)由sysadmin 或其它賬號(hào)來維護(hù)一個(gè)―密鑰/主機(jī)名‖的本地?cái)?shù)據(jù)庫,當(dāng)首次與某個(gè)SSH 服務(wù)器建立連接時(shí),客戶端可能被事先配制成自動(dòng)接受并記錄服務(wù)器公鑰到本地?cái)?shù)據(jù)庫中,這就導(dǎo)致可能發(fā)生MITM 攻擊。其實(shí),建立加密的安全網(wǎng)絡(luò)都存在一個(gè)基本的問題,無論如何,某種程度上講,加密通道的初始化連接總是建立在一個(gè)存在潛在危險(xiǎn)的網(wǎng)絡(luò)之上的,如果密鑰交換機(jī)制并不健全,或者是根本就被忽略了,那之后建立起來的加密通道也形同虛設(shè)了。按道理講,SSH 之類的協(xié)議本身是沒有問題的,只要嚴(yán)格按照標(biāo)準(zhǔn)來建立加密及密鑰交換管理機(jī)制(例如PKI ),攻擊者是根本不會(huì)有可乘之機(jī)的,可問題就在于,許多時(shí)候,為了使用上的方便,―復(fù)雜‖的保證技術(shù)就被人們拋之腦后了。當(dāng)然,一種協(xié)議如果其可用性并不很強(qiáng),也許本身就是問題,現(xiàn)在,SSH2較SSH1已經(jīng)有了較大改進(jìn)。具體來說,在某個(gè)SSH 連接建立之初,如果客戶端收到一個(gè)未知的服務(wù)器端公鑰,OpenSSH 會(huì)有下列配置處理方式:
1.
2. 自動(dòng)增加該公鑰到本地?cái)?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-middle attack)! It is also possible that the host-key has just been changed. Please contact your system administrator.
3. 拒絕接受。如果客戶端對(duì)未知公鑰的驗(yàn)證被取消了(或者客戶端配置本身已經(jīng)旁路掉了這個(gè)
過程),或者如果客戶端保存已知主機(jī)CA 證書的緩存被―毒害‖了,就很有可能導(dǎo)致攻擊者發(fā)起MITM 攻擊。從根本上講,要防止MITM 方式的攻擊,用戶自身加強(qiáng)安全措施才是關(guān)鍵,例如,密鑰的初始交換也許可以換做其它方式(比如軟盤),嚴(yán)格管理本地的證書列表數(shù)據(jù)庫,對(duì)于出現(xiàn)的告警提示,應(yīng)該仔細(xì)甄別,防止第三方的欺騙行為。
sshmitm [-d ] [-I ] [-p port ] host [port ]
注意:這里的-P 后面指定的是sshmitm 本地使用的端口,也就是攻擊目標(biāo)主機(jī)用來連接SSH 服務(wù)器的端口,而后面的port 則是我轉(zhuǎn)發(fā)SSH 流量到SSH 服務(wù)器使用的端口,此外如果是用了參數(shù)-I ,就可以在攻擊目標(biāo)主機(jī)連接到SSH 服務(wù)器后,查看他們之間的交互內(nèi)容。
首先通過dnsspoof 進(jìn)行對(duì)攻擊目標(biāo)進(jìn)行dns 欺騙:
接著便可以進(jìn)行sshmitm 嗅探:(由于使用了-I ,所以,SSH 連接后的交互內(nèi)容也顯示了出來)
,webmitm webmitm 與sshmitm 類似,也需要dnsspoof 的―配合‖,不同的是,webmitm―劫持‖的是HTTP 和HTTPS 會(huì)話過程,捕獲SSL 的加密通信。
webmitm [-d ]
arpspoof arpspoof 啟用arp 欺騙,將自己網(wǎng)卡的IP 地址偽裝成指定IP 地址的MAC
持續(xù)不斷的發(fā)送假的ARP 響應(yīng)包給一臺(tái)或多臺(tái)主機(jī),以―毒害‖其ARP 緩存表。一旦成功,即可以用別的嗅探工具來―接收‖發(fā)送到本地的數(shù)據(jù)包。與Ettercap 不同的是,arpspoof 并不進(jìn)行真正的―嗅探‖,它只是簡(jiǎn)單的進(jìn)行ARP 欺騙,本地主
機(jī)必須啟動(dòng)內(nèi)核的IP Forwarding功能(或者使用fragrouter 這樣的工具),否則,所有―轉(zhuǎn)向‖發(fā)到本地的數(shù)據(jù)包就如同進(jìn)了黑洞,正常的網(wǎng)絡(luò)通信將無法進(jìn)行,而一旦啟動(dòng)了本地的IP Forwarding,內(nèi)核將自動(dòng)對(duì)本地收到的目的IP 卻是別處的數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā),正常的通信自然可以進(jìn)行。這樣,就可以進(jìn)行后續(xù)的許多工作,包括分析嗅探得到的數(shù)據(jù)包、修改數(shù)據(jù)包中的某些信息以重新轉(zhuǎn)發(fā)等等。
在Linux 中,缺省是禁止IP Forwarding的,可以使用簡(jiǎn)單的命令啟動(dòng)它:
修改#vi /etc/sysctl.conf:
net.ipv4.ip_forward = 1
修改后運(yùn)行#sysctl –p 命令使得內(nèi)核改變立即生效;
一旦啟動(dòng)了本地的IP Forwarding,內(nèi)核將自動(dòng)對(duì)本地收到的目的IP 卻是別處的數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā),(同時(shí)向數(shù)據(jù)包的源地址發(fā)送ICMP 重定向報(bào)文,當(dāng)然,由于啟用了ARP 欺騙,這個(gè)重定向報(bào)文是不起作用的)。 這里第17個(gè)數(shù)據(jù)包的源地址已經(jīng)從本來的源MAC 地址改變?yōu)楸镜豈AC 地址了。說明數(shù)據(jù)包是本地轉(zhuǎn)發(fā)出去的。
arpspoof [-i interface ] [-t target ] host 如果不指定tagget 則向網(wǎng)絡(luò)中所有的主機(jī)發(fā)送欺騙
dnsspoof
dnsspoof 啟用DNS 欺騙,如果dnsspoof 嗅探到局域網(wǎng)內(nèi)有DNS 請(qǐng)求數(shù)據(jù)包,它會(huì)分析其內(nèi)容,并用偽造的DNS 響應(yīng)包來回復(fù)請(qǐng)求者。如果是請(qǐng)求解析某個(gè)域名,dnsspoof 會(huì)讓該域名重新指向另一個(gè)IP 地址(黑客所控制的主機(jī)),如果是反向IP 指針解析,dnsspoof 也會(huì)返回一個(gè)偽造的域名。
dnsspoof [-i interface ] [-f hostsfile ] [expression ] 這里-f 可以指定主機(jī)列表文件,文件格式與/usr/local/lib/dnsspoof.hosts相同,如果不指定該文件,dnsspoof 會(huì)返回本地的IP 給域名解析請(qǐng)求
,者
這里本地主機(jī)會(huì)搶先代替DNS 服務(wù)器來相應(yīng)查詢,前提是本地主機(jī)先回答DNS 查詢,如果因?yàn)榫W(wǎng)絡(luò)問題,DNS 服務(wù)器先發(fā)送了應(yīng)答,DNS 欺騙就不能生效了
macof macof 用來進(jìn)行MAC flooding,可以用來使交換機(jī)的MAC 表溢出,對(duì)于以后收到的數(shù)據(jù)包以廣播方式發(fā)送。注意:在進(jìn)行MAC 泛洪之前就存在于交換機(jī)MAC 表中的條目不會(huì)被覆蓋,只能等到這些條目自然老化
macof [-i interface ] [-s src ] [-d dst ] [-e tha ] [-x sport ] [-y dport ] [-n times ]
tcpkilltcpkill 能夠切斷指定的TCP 會(huì)話連接,主要是基于TCP 的三次握手過程
tcpkill [-i interface ] [-1...9] expression
這里,當(dāng)tcpkill 檢測(cè)到兩邊的TCP 連接后,會(huì)同時(shí)想兩邊(冒充對(duì)方)發(fā)送tcp reset報(bào)文,重置連接。
tcpnicetcpnice 能夠通過在添加活動(dòng)的流量,降低指定的LAN 上的TCP 連接的速度
,tcpnice [-I ] [-i interface ] [-n increment ] expression 這里的-n 后面可以跟1-20,代表降低的速度,1為原速,20為最低
耶穌的博客--QQ :114967639 2011-12-12 01:34
【轉(zhuǎn)】dsniff 使用筆記(1)
dsniff 下載
主要支持文件下載地址
ftp://ftp.falsehope.com/home/gomez/
ftp://rpmfind.net/linux/redhat/9/en/os/i386/RedHat/RPMS/libpcap-0.7.2-1.i386.rpm
dsniff 常見問題
-------------------------------------------------------------------------------------------------------------------
測(cè)試環(huán)境:Redhat9 VMWare
,因?yàn)樘砹?,我就不寫詳?xì)了,從下午一直到深夜,終于安裝成功了!靠的是堅(jiān)持、再堅(jiān)持,中間也想過放棄,但是我挺過去了,寫這篇文章,希望幫助大家少走彎路。
1、用到的文件:
大小 名稱
188,480 bison-1.35-6.i386.rpm
13,124,129 db-4.7.25.tar.gz
126,797 dsniff-2.3.tar.gz
1,456,620 flex-2.5.35.tar.gz
4,518,355 gcc-3.2.2-5.i386.rpm
1,902,283 gcc-c -3.2.2-5.i386.rpm
3,250,937 glibc-2.3.2-5.i386.rpm
12,419,241 glibc-common-2.3.2-5.i386.rpm
2,329,790 glibc-devel-2.3.2-5.i386.rpm
51,827 libnet-1.0.2a-2.i386.rpm
1,021,236 libnet.tar.gz
115,912 libnids-1.16-2.i386.rpm
154,465 libpcap-0.7.2-1.i386.rpm
1,273,366 libstdc -devel-3.2.2-5.i386.rpm
3,459,643 openssl-0.9.8i.tar.gz
,2、安裝
首先,從官方網(wǎng)站下載安裝文件,還有許多支持文件,需要安裝。 可以參考的網(wǎng)站:
3、需要注意的地方
我只把我遇到的問題的地方列出來參考。安裝順序:
3.0 g gcc問題
如果在安裝db 和dsniff 之前有這方面的問題, 應(yīng)盡量先安裝好下列文件先,: 使用命令rpm -Uvh ******.rpm 升級(jí)rpm 包
3.1 berkeley db安裝
(1)建一個(gè)db 存放文件夾 例如我用的是:/etc/db/db
(2)把安裝文件解壓縮到 /etc/db/db/ 內(nèi)
(3)cd /etc/db/db/
(4)進(jìn)入這個(gè)目錄 cd /etc/db/db/build_unix 然后執(zhí)行