linux嗅探工具Dsniff详解

linux 嗅探工具Dsniff 详解Dsniff 是一个著名的网络嗅探工具包。其开发者Dug Song 早在1999年12月,以密歇根大学CITI 研究室(Center for Informatio

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 的下载网址:除了针对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,ICQ 2000, IRC, MSN Messenger, 或Yahoo Messenger

msgsnarf [-i interface ][[-v ]pattern [expression

]]

urlsnarf

urlsnarf 可以嗅探HTTP 请求报文的内容,并以CLF (CommonLog Format )通用日志格式输出

urlsnarf [-n ][-i interface ][[-v ]pattern [expression

]]

webspy

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-middleattack)! 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 连接后的交互内容也显示了出来)

,

webmitm

webmitm 与sshmitm 类似,也需要dnsspoof 的“配合”,不同的是,webmitm“劫持”的是HTTP 和HTTPS 会话过程,捕获SSL 的加密通信。

webmitm [-d ]

arpspoof

arpspoof 启用arp 欺骗,将自己网卡的IP 地址伪装成指定IP 地址的MAC

持续不断的发送假的ARP 响应包给一台或多台主机,以“毒害”其ARP 缓存表。一旦成功,即可以用别的嗅探工具来“接收”发送到本地的数据包。与Ettercap 不同的是,arpspoof 并不进行真正的“嗅探”,它只是简单的进行ARP 欺骗,本地主

机必须启动内核的IP Forwarding 功能(或者使用fragrouter 这样的工具),否则,所有“转向”发到本地的数据包就如同进了黑洞,正常的网络通信将无法进行,而一旦启动了本地的IP Forwarding ,内核将自动对本地收到的目的IP 却是别处的数据包进行转发,正常的通信自然可以进行。这样,就可以进行后续的许多工作,包括分析嗅探得到的数据包、修改数据包中的某些信息以重新转发等等。

在Linux 中,缺省是禁止IP Forwarding 的,可以使用简单的命令启动它:

修改#vi/etc/sysctl.conf:

net.ipv4.ip_forward=1

修改后运行#sysctl–p命令使得内核改变立即生效;

一旦启动了本地的IP Forwarding ,内核将自动对本地收到的目的IP 却是别处的数据包进行转发,(同时向数据包的源地址发送ICMP 重定向报文,当然,由于启用了ARP 欺骗,这个

,

重定向报文是不起作用的)。这里第17个数据包的源地址已经从本来的源MAC 地址改变为本地MAC

地址了。说明数据包是本地转发出去的。

arpspoof [-i interface ][-t target ]host 如果不指定tagget

则向网络中所有的主机发送欺骗dnsspoof

dnsspoof 启用DNS 欺骗,如果dnsspoof 嗅探到局域网内有DNS 请求数据包,它会分析其内容,并用伪造的DNS 响应包来回复请求者。如果是请求解析某个域名,dnsspoof 会让该域名重新指向另一个IP 地址(黑客所控制的主机),如果是反向IP 指针解析,dnsspoof 也会返回一个伪造的域名。

dnsspoof [-i interface ][-f hostsfile ][expression ]这里-f 可以指定主机列表文件,文件格式与/usr/local/lib/dnsspoof.hosts相同,如果不指定该文件,dnsspoof 会返回本地的IP 给域名解析

请求者

这里本地主机会抢先代替DNS 服务器来相应查询,前提是本地主机先回答DNS 查询,如果因为网络问题,DNS 服务器先发送了应答,DNS

欺骗就不能生效了

macof

macof 用来进行MAC flooding ,可以用来使交换机的MAC 表溢出,对于以后收到的数据包以广播方式发送。注意:在进行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 连接后,会同时想两边(冒充对方)发送tcp reset 报文,重置连接。

tcpnice

tcpnice 能够通过在添加活动的流量,降低指定的LAN 上的TCP 连接的速度

,

tcpnice [-I ][-i interface ][-n increment ]expression 度,1为原速,20

为最低这里的-n 后面可以跟1-20,代表降低的速

标签: