linux嗅探工具Dsniff详解
Dsniff是一个著名的网络嗅探工具包。其开发者Dug Song早在1999年12月,以密歇根大学CITI研究室(Center for Information Technology Integration)的研究成果为基础,开发了这个后来具有很大影响力的网络安全工具包。Dug Song开发Dsniff的本意是揭示网络通信的不安全性,借助这个工具包,网络管理员可以对自己的网络进行审计,也包括渗透测试。但万事总有其两面性,Dsniff所带来的负面作用也是“巨大”的,首先它是可以自由获取的,任何拥有这个工具包的人都可能做“非正当”的事,其次,Dsniff里面的某些工具,充分揭示了一些安全协议的“不安全性”,例如针对SSH1和SSL的MITM(Man-In-The-Middle)攻击工具—SSHmitm和Webmitm。SSH1和SSL都是建立网络通信加密通道的机制,向来被认为是很安全的,但人们在具体使用时,往往因为方便性上的考虑而忽视了某些环节,造成实事上的不安全。所以说,最大的不安全性,往往并不在于对安全的一无所知,而在于过于相信自己的安全。
Dub Song在2000年12月发布了Dsniff的v2.3版本,该版本支持OpenBSD、Linux、Solaris 系统平台。目前,最新版本是2001年3月发布的v2.4b1的Beta版。Dsniff的下载网址:/~dugsong/dsniff/
除了针对Unix系统的版本,从网上也可以得到Windows平台上运行的Dsniff早期版
dsniff工具介绍
纯粹被动地进行网络活动监视的工具,包括:dsniff、filesnarf、mailsnarf、msgsnarf、urlsnarf、webspy针对SSH和SSL的MITM(Man-In-The-Middle)“攻击”工具,包括sshmitm和webmitm 发起主动欺骗的工具,包括:arpspoof、dnsspoof、macof其它工具,包括tcpkill、tcpnice
dsniff
dsniff是一个密码侦测工具,他能够自动分析端口上收到的某些协议的数据包,并获取相应的密码。dnisff支持的协议有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的表达式,指定对哪些数据包进行攻击
filesnarf
filesnarf可以嗅探网络文件系统(NFS)的流量,并选定某个文件,转储到本地当前工作目录
filesnarf[-i interface
EM>][[-v]pattern[expression]]
mailsnarf
mailsnarf可以嗅探SMTP和POP流量,并以Berkeley邮件格式输出e-mail消息
mailsnarf[-i interface][[-v]pattern[expression]]
嗅探发送的SMTP流量:
嗅探接收的POP流量:
msgsnarf
msgsnarf可以嗅探聊天软件的聊天内容,包括AOL,ICQ2000,IRC,MSN Messenger,或Yahoo Messenger
msgsnarf[-i interface][[-v]pattern[expression]]
urlsnarf
urlsnarf可以嗅探HTTP请求报文的内容,并以CLF(Common Log Format)通用日志格式输出
urlsnarf[-n][-i interface][[-v]pattern[expression]]
ssh工具windowswebspy
webspy指定一个要嗅探的主机,如果指定主机发送HTTP请求,打开网页,webspy也会通过netscape浏览器在本地打开一个相同的网页
webspy[-i interface]host host指定要嗅探的主机
sshmitm
sshmitm是Dsniff自带的一个具有威胁的工具之一。首先通过dnsspoof伪造实际机器主机名将攻击目标主机的SSH连接转到本地,那么sshmitm可以截获来自主机的密钥,并获得被劫持连接中的所有信息解码,然后重新转发SSH流量到SSH服务器。
sshmitm可以对某个SSH会话发动MITM(Monkey-In-The-Middle)攻击(注意,这里的Monkey是Dsniff包readme文件中的解析,而不是常见的Man,这种区别实际上是没有“区别”,也许就是因为Dsniff以猴
子做为其标志的原因吧)。通过sshmitm,攻击者可以捕获某个SSH会话的登录口令,甚至可以“劫持”整个会话过程(攻击者在其主机上通过OpenSSL 提供的代码生成伪造的证书,以欺骗目标主机,使之相信就是有效的通信另一方,结果是,攻击者主机成了SSH安全通道的中转站)。目前,对于SSH1,这种MITM攻击已经构成了严重的威胁。MITM并不是一个新的概念,它是一种对认证及密钥交换协议进行攻击的有效手段。通常,在SSH会话中,服务器首先会给客户端发送其公钥,严格来说,这种密钥的交换和管理应该是基于X.509这种公钥基础设施(PKI)的,但因为PKI本身的复杂性导致真正应用了这种公钥管理机制的服务器非常少,所以,通常情况下,服务器只是简单的自己生成密钥对,并将其中的公钥发送给客户端。
客户端收到服务器的公钥后,必须独立验证其有效性。通常,使用SSH的客户端会由sysadmin或其它账号来维护一个“密钥/主机名”的本地数据库,当首次与某个SSH服务器建立连接时,客户端可能被事先配制成自动接受并记录服务器公钥到本地数据库中,这就导致可能发生MITM攻击。其实,建立加密的安全网络都存在一个基本的问题,无论如何,某种程度上讲,加密通道的初始化连接总是建立在一个存在潜在危险的网络之上的,如果密钥交换机制并不健全,或者是根本就被忽略了,那之后建立起来的加密通道也形同虚设了。按道理讲,SSH之类的协议本身是没有问题的,只要严格按照标准来建立加密及密钥交换管理机制(例如PKI),攻击者是根本不会有可乘之机的,可问题就在于,许多时候,为了使用上的方便,“复杂”的保证技术就被人们抛之脑后了。当然,一种协议如果其可用性并不很强,也许本身
就是问题,现在,SSH2较SSH1已经有了较大改进。具体来说,在某个SSH 连接建立之初,如果客户端收到一个未知的服务器端公钥,OpenSSH会有下列配置处理方式:
自动增加该公钥到本地数据库;发出下面列出的警告消息,并询问用户是添加该公钥
还是放弃连接;
------------------------------------------------------------------------
--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.
拒绝接受。如果客户端对未知公钥的验证被取消了(或者客户端配置本身已经旁路掉了这个过程),或者如果客户端保存已知主机CA证书的缓存被“毒害”了,就很有可能导致攻击者发起MITM攻击。从根本
上讲,要防止MITM方式的攻击,用户自身加强安全措施才是关键,例如,密钥的初始交换也许可以换做其它方式(比如软盘),严格管理本地的证书列表数据库,对于出现的告警提示,应该仔细甄别,防止第三方的欺骗行为。
sshmitm[-d][-I][-p port]host[port]
注意:这里的-P后面指定的是sshmitm本地使用的端口,也就是攻击目标主机用来连接SSH 服务器的端口,而后面的port则是我转发SSH流量到SSH服务器使用的端口,此外如果是用了参数-I,就可以在攻击目标主机连接到SSH服务器后,查看他们之间的交互内容。
首先通过dnsspoof进行对攻击目标进行dns欺骗:
接着便可以进行sshmitm嗅探:(由于使用了-I,所以,SSH连接后的交互内容也显示了出来)