扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
嗅探器(也称网络分析器)是种能够察看网络传输、将其解码并为网管提供可用的数据的一种软件。网管可以使用它提供的数据来诊断网络存在的问题。而恶意用户还会利用嗅探器来从网络上获取存储在文本中的密码。下面列举一些常用的专用嗅探器:NAI嗅探器(商用)、Wireshark(以前叫Ethereal,是一种Linux,Windows以及其他平台上使用的开发源码的图形用户界面的嗅探器)、TCPDump(开放源码命令行嗅探器,在Unix类的操作系统上使用,如Linux或者FreeBSD),还有它的Windows版——WinDump。
首先我们来说明一下一些网络基本知识。大多数的以太网都是一根总线的拓扑结构,使用同轴电缆或者双绞线和hub连通。网络上的所有节点(计算机和其他设备)都可以通过同样的线路通信,并且使用称为载波监听多路访问/冲突检测(CSMA/CD)的方案依次发送数据。你可以把CSMA/CD看作是在一个很吵闹的宴会中的两人对话,你需要等一会儿,等别人说话的间歇才有机会发言。网络上的所有节点都有自己唯一的MAC(媒体访问控制)地址,他们使用该地址互相发送信息包。通常,节点只会关注目的地是自己的MAC地址的那些信息包。但是如果网卡被设置成混杂模式的话,那它就会察看它连接的线路上的所有数据包。
为了减少冲突数量、降低嗅探不属于某节点的数据的可能性,大多数网络都使用了交换机。在网络中,hub是种无源设备,它会将接收到的所有传输发送到它的所有端口。而交换机则察看它所连接的所有节点的MAC地址以及所在端口,然后把那些数据包只发给它的目标节点。交换机大大降低了网路中的冲突数量,增大了网络的吞吐量。理论上,使用交换机的网络中,每个节点只能收到广播消息(发给局域网上所有计算机的消息)以及专门发送给它的MAC地址的数据包,还有偶尔出现的不知道目标地址的数据包。但是即使在局域网中使用交换机,它还是有可能被人使用某些交换机上的镜像端口而嗅探(这些镜像端口本来是网管分析网络问题时使用的),嗅探者可以误导交换机使其将数据映射给所有端口或者使用一种称为ARP病毒的技术(后面会详细讲到)。
以上讲述的是以太网络的一些基本知识,而WiFi(801.11a/801.11b/801.11g/801.11n)则与之完全不同。无线局域网很像使用hub的以太局域网。局域网中所有计算机都能看到发送给别的计算机的数据,但通常他们可以设置成忽略这些信息。(事实上,比这复杂,但是我篇幅有限,就不详细讲那错综复杂的80.211网络了)。但如果网卡是设置成混杂模式的话,那么它就不会忽略发送给其他计算机的数据,而是会察看这些数据,允许使用嗅探器的用户看到附在同一访问点的发送给其他用户的数据。混杂模式在Windows和Linux(或者其他类似Unix的操作系统)的有线网卡上运行得很有效,但是并不是所有的无线网卡都能很好地支持该模式(比如Intel的叫做IPW2200的Centrino 802.11g芯片)。如果嗅探器的网卡不支持混杂模式,那么嗅探者就得把它附到无线网络的WAP(无线接入点)上才能看到其他数据。如果攻击者使用的是Linux(或者类似Unix的操作系统),如果网卡支持的话,它可能可以使用监听模式。在监听模式下,无线网卡直接监听无线电波中的原始信息包而无需WAP的辅助。从攻击者角度看,监听模式的好处是:由于不需要WAP,他们的活动不会留下任何痕迹,也不用在网络上发送数据包。
由于WiFi网络使用的安全协议各有不同,因此嗅探WiFi网络变得更加复杂。如果你的网卡支持混杂模式并且你能使用WEP(也就是说你知道WEP密钥)连接到无线网络,你就可以嗅探几乎所有你想要获得的信息。如果网络使用的是WPA,就没那么容易了,因为即使你知道密码,你也不一定能解码那些你没有参与的网络对话中的所有数据。但是,你却有可能进行ARP病毒攻击或者使用其它的MitM(有人参与其中)攻击,从而获得数据路由。
网管们应当注意嗅探器的很多合法用途。网管可以用它们找出网络上出问题的计算机,比如占用太多带宽,网络设置错误或者正在运行恶意软件等等。我觉得它们在找出黑客攻击方面非常有用,我可以用它们嗅探自己的服务器找出那些不正常的传输。学会用嗅探器来找出网络的问题的话,每个系统管理员都能很好地完成自己的工作,我推荐你们使用Wireshark,因为它是免费的、跨平台的并且能够找到大量的相关资料(可以从本文结尾的链接中找到更多信息)。
那些想要绕过安全措施的人也可以用嗅探器。很多流行的应用协议把登陆凭证(用户名和密码)以纯文本的形式传递或者使用加密性差的形式传送。这些不安全的协议包括FTP、Telnet、POP3、SMTP还有HTTP基本验证。这种情况下应尽量使用替代它们的SFTP,SSH(安全保护套件),以及HTTPS(SSL)。也许你很难从FTP协议切换到别的协议,因为使用像SFTP这样更安全的协议的客户端并不一定总是有。较新版本的Windows(命令行的ftp.exe以及图形用户界面形式的浏览器)都支持FTP客户端,但是你也可以下载支持SFTP的Filezilla和PSFTP的免费客户端。有些嗅探器拥有很强的提取密码的能力,比如Cain,Dsniff以及Ettercap。这三个都是免费或者开放源码的。Cain只支持Windows而Dsniff和Ettercap通常在Unix环境中运行,但也有相应的Windows版本。
ARP欺骗/ARP病毒
ARP是指地址解析协议,它允许网络将IP地址解析成MAC地址。基本上,ARP是这样工作的:当某个使用局域网IP的主机想要与另一台主机联络的时候,它需要那台主机的MAC地址。首先,它会查询自己的ARP缓存(想要查看你的ARP缓存,在命令行中输入ARP),看看是否已经知道那台主机的MAC地址,如果没有,它会发出广播ARP请求,询问谁拥有我正在找的主机的IP地址? 如果拥有该地址的主机收到该ARP请求,它就会用自己的MAC地址响应,于是两台主机就可以使用IP进行对话了。通常,在像以太网这样使用Hub或者801.11b标准的总线网络中,所有NICs(网络接口卡)为混杂模式的主机都能收到所有的传输,但是在使用交换机的网络中却有所不同。交换机会查看发送给它的数据,并只把数据包传给它的目标MAC地址所属主机。使用交换机的网络更安全一些并且能够提高网速,因为它只把数据包发给需要去的地方。但是仍然有突破这种网络的方法。使用Arpspoof(Dsniff的部分功能),Ettercap或者Cain我们就可以欺骗局域网中的其他主机,告诉它们,我们就是它们要找的那个主机,把它们传输通过我们来转发。
即使是使用交换机的网络,攻击者也可以很容易地从恢复启动CD中使用Dsniff或者Ettercap,来进行ARP欺骗并将传输转为通过它们来进行。这些工具甚至能够自动解析出用户名和密码,这给使用者提供极大的便利。如果攻击者在网关和FTP服务器之间进行ARP欺骗,那么它就能嗅探传输并在用户试图从站点外获取数据的时候提取用户名和密码,使用SMTP和POP3也是一样。即使是用SFTP、SSL以及SSH,仍然可以用Ettercap嗅探密码,因为该工具可以代理那些类型的连接。用户可能会收到警告说,他们试图获得的服务器的公共密钥已经被修改,或者可能不合法,但是我们中有多少人只是将那些信息关闭而根本不读呢
图1中的图片说明了ARP欺骗/ARP病毒如何工作的。基本上,攻击者跟Alan的电脑说,他就是Brain的电脑,反之亦然。这样,攻击者把Alan和Brain之间的网络传输全部接收过来了。一旦攻击者在两个节点之间进行了ARP欺骗,他就可以用任何他喜欢的工具进行嗅探(TCPDump、Wireshark、Ngrep等等)。在网关和电脑之间进行ARP欺骗的话,攻击者可以看到电脑正在发送和从网上接收的所有数据。本文中我只会讲到如何使用这些工具。
使用Dsniff和Ettercap快速演示ARP欺骗
让我们从Dug Song的、支持Dsniff的ARPspoof程序开始吧。我使用的Unix版本,但是你可以找到Win32版本的。运行Dsniff最简单的方法就是从恢复启动CD启动。首先你应该确定包转发已经开启,不然我们的机器会丢弃所有我们想要嗅探的主机之间的传输,导致服务无响应。我用的一些工具会自动进行这项工作(比如Ettercap),但是保险起见,你也许会希望自己来做这件事。根据操作系统的不同,你可以使用如下的命令:
Linux:
echo 1 > /proc/sys/net/ipv4/ip_forward
BSD:
sysctl -w net.inet.ip.forwarding=1
现在你的计算机将把转发所有的传输,现在你可以开始ARP欺骗了。我们假设你想要嗅探一个主机和网关之间的所有传输,这样你就可以看到它发送到网络上的所有数据。如果想要获得双向的所有传输,你应当使用如下2个命令行:
arpspoof -t 192.168.1.1 192.168.1.2 & >/dev/null
arpspoof -t 192.168.1.2 192.168.1.1 & >/dev/null
“& >/dev/nul”部分是为了使它在终端运行起来更容易,但是为了debug,你可能想要忽略它。现在你可以使用你想要的任何套件来嗅探连接。新手的话,我推荐使用Dsniff,它支持ARPspoof来嗅探纯文本密码。用Dsniff开始嗅探,你只需退出到命令窗口并输入:
dsniff
Dsniff找到用户名和密码后,它会将它们显示在屏幕上。如果你想要查看所有其他传输,我推荐你使用TCPDump或者 Wireshark。如果想要停止ARP欺骗,输入如下命令:
killall arpspoof
这会关闭上面启动的2个Arpspoof。
另一个很棒的工具是Ettercap,它相当于ARP病毒和密码嗅探界的瑞士军刀。我通常在非互动模式中使用它,但是默认情况下它的交互界面非常友好,使用起来很方便。如果你想要使用Ettercap来进行ARP病毒,你可以使用下面示范的命令例句。如果我们的目标是网络上的所有主机,想要嗅探每个节点之间的所有传输,我们可以用下列命令:
ettercap -T -q -M ARP // //
你应当谨慎的使用上面那段命令,因为如果把一个大网络中所有的传输都通过一台很慢的计算机的话,那么这很有可能使整个网络连接瘫痪。
我们可以找个替罪羊,来看看Ip地址为192.168.1.1的主机,我们可以使用如下命令:
ettercap -T -q -M ARP /192.168.1.1/ //
如果192.168.1.1是网关,我们应该可以看到所有的输出传输。下面是这些命令行选项的功能:
-T 告诉Ettercap使用文字界面,我最喜欢这个选项,因为GUI模式太复杂了。
-q 让Ettercap安静些,换句话说就是少些冗长的文字报告。
-M 让Ettercap我们想要使用的MITM(人参与其中)方式,本例中是ARP病毒。
其他工具
我还想说很多其他的工具。首先就是Cain,这个Windows用户会觉得很好用。总之,它功能强大,操作简单。
如果你喜欢漂亮的图形界面,Cain就是你很好的选择之一。它不像Ettercap那么多选项,但是很酷也有很多Windows附加功能。
还有为了查看特定内容的专门的嗅探器。Driftnet能够分析出人们上网看到的图片。
这些也是嗅探器比如P0f,它让你被动得知网络传输的操作系统。
以上说的只是众多专门的嗅探器中的一小部分,仅仅是冰山的一角。
减轻嗅探攻击的危害
人们可以使用不少方法来缓解嗅探攻击的危害:
1.不使用像HTTp验证以及Telnet这些不安全的协议。事实上,你应当嗅探自己的网络,看看这些工具都列出了哪些能提取的密码。
2.如果你不得不使用不安全的协议,那你最好能把敏感信息加密后再传送出去。
3.察看临界工作站和服务器之间的静态ARP表。这种方法不易维持,但是可以限制arp欺骗。
4.运行ARPWatch等软件来检测你的网络物理地址,看看它是不是变成指向嗅探器的了。
5.运行Sniffdet和Sentinel来检测网卡是否出于混杂模式,是否运行了嗅探软件。
6.让从外部进入你的设备的、使用Wi-Fi的笔记本使用VPN来连接到网络。
7.锁住工作站,这样用户就无法安装嗅探软件或者像Knoppix那样从CD运行嗅探软件。
8.把员工工作站和服务器与公共终端隔离到不同的局域网中。
希望这篇文章能给你提供些许帮助。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者