网络嗅探工具的原理 sniffer&wireshark

今天突然想到这个问题:wireshark之所以能抓到其它主机的包,是因为共享式以太网;那么现在的交换式以太网怎么使用wireshark?

在网上看了一些资料,整理了下面这篇文章

Sniffer(嗅探器)是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。Snifffer可以作为能够捕获网络报文的设备,ISS为Sniffer这样定义:Sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。

Sniffer的正当用处主要是分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。在合理的网络中,Sniffer的存在对系统管理员是致关重要的,系统管理员通过Sniffer可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯有些甚至牵涉到各种的协议,借助于Sniffer%2C系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或者相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。

嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。

为了对Sniffer的工作原理有一个深入的了解,我们先简单介绍一下HUB与网卡的原理。

1、预备知识 HUB(集线器)与交换机工作原理

由于以太网等很多网络(常见HUB连接的内部网)是基于总线方式,物理上是广播的,就是当一个机器发给另一个机器的数据,HUB先收到然后把它接收到的数据再发给其他的(来的那个口不发了)每一个口,所以在HUB下面同一网段的所有机器的网卡都能接收到数据。

交换机的内部单片程序能记住每个口的MAC地址,以后就该哪个机器接收就发往哪个口,而不是像共享HUB那样发给所有的口,所以交换机下只有该接收数据的机器的网卡能接收到数据,当然广播包还是发往所有口。显然集线器的工作模式使得两个机器传输数据的时候其他机器的端口也占用了,所以集线器决定了同一网段同一时间只能有两个机器进行数据通信;而交换机上连接的两个机器传输数据的时候其它机器的端口没有占用,所以别的口之间也可以同时传输。这就是交换机与HUB不同的两个地方,HUB是同一时间只能一个机器发数据并且所有机器都可以接收,只要不是广播数据交换机同一时间可以有对机器进行数据传输并且数据是私有的。

2、网卡工作原理

再讲讲网卡的工作原理。网卡收到传输来的数据,网卡内的单片程序先接收数据头的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就在接收后产生中断信号通知CPU,认为不该接收就丢弃不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。CPU得到中断信号产生中断,操作系统就根据网卡驱动程序中设置的网卡中断程序地址调用驱动程序接收数据,驱动程序接收数据后放入信号堆栈让操作系统处理。

3、局域网如何工作

数据在网络上是以很小的称为帧(Frame)的单位传输的帧由好几部分组成,不同的部分执行不同的功能。(例如,以太网的前12个字节存放的是源和目的的地址,这些会告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等)。

帧通过特定的网络驱动程序进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。

通常在局域网(LAN)中同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址。(代表所有的接口地址),在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:

1、帧的目标区域具有和本地网络接口相匹配的硬件地址。

2、帧的目标区域具有“广播地址”。

在接受到上面两种情况的数据包时,网卡通过CPU产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。

当采用HUB,用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应(换句话说,机器A不会捕获属于机器B的数据,而是简单的忽略这些数据)。

如果局域网中某台机器的网络接口处于混杂(promiscuous)模式(即网卡可以接收其收到的所有数据包),那么它就可以捕获网络上所有的报文和帧,如果一台机器被配置成这样的方式,它(包括其软件)就是一个嗅探器。

当采用了交换机,那么正常情况下,其它主机的数据包就不会出现在本地的网络接口,那么也就无法嗅探其它主机的数据包。当然可以采用一些特殊的方法进行嗅探。

4、Sniffer原理

在介绍完前面的内容后就可以来说明Sniffer的原理了。首先,要知道SNIFFER要捕获的东西必须是要物理信号能收到的报文信息。显然只要通知网卡接收其收到的所有包(一般叫做混杂promiscuous模式:指网络上的所有设备都对总线上传送的数据进行侦听,并不仅仅是它们自己的数据。),在HUB下就能接收到这个网段的所有包,但是交换机下就只能是自己的包加上广播包

要想在交换机下接收别人的包,那就要让其发往你的机器所在口。交换机记住一个口的MAC是通过接收来自这个口的数据后并记住其源MAC,就像一个机器的IP与MAC对应的ARP列表,交换机维护一个物理口与MAC的表,所以可以欺骗交换机的。可以发一个包设置源MAC是你想接收的机器的MAC,那么交换机就把你机器的网线插的物理口与那个MAC对应起来了,以后发给那个MAC的包就发往你的网线插口了,也就是你的网卡可以Sniffer到了。注意这物理口与MAC的表与机器的ARP表一样是动态刷新的,那机器发包后交换HUB就又记住他的口了,所以实际上是两个在争,这只能应用在只要收听少量包就可以的场合。

内部网基于IP的通信可以用ARP欺骗别人机器让其发送给你的机器,如果要想不影响原来两方的通信,可以欺骗两方,让其都发给你的机器再由你的机器转发,相当于做中间人,这用ARP加上编程很容易实现。并且现在很多设备支持远程管理,有很多交换机可以设置一个口监听别的口,不过这就要管理权限了。

利用这一点,可以将一台计算机的网络连接设置为接受所有以太网总线上的数据,从而实现Sniffer。Sniffer就是一种能将本地网卡状态设成‘混杂’状态的软件,当网卡处于这种“混杂”方式时,该网卡具备“广播地址”,它对遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的网卡具备置成混杂模式的能力)

可见,Sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:Sniffer是极其安静的,它是一种消极的安全攻击。

嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:标准以太网、TCP/IP、IPX。

嗅探器造成的危害

sniffing是作用在网络基础结构的底层。通常情况下, 用户并不直接和该层打交道,有些甚至不知道有这一层存在。所以,应该说Sniffer的危害是相当之大的,通常,使用Sniffer是在网络中进行欺骗的开始。它可能造成的危害:

嗅探器能够捕获口令。这大概是绝大多数非法使用Sniffer的理由,Sniffer可以记录到明文传送的用户名和口令。能够捕获专用的或者机密的信息。比如金融帐号,许多用户很放心在网上使用自己的信用卡或现金帐号,然而Sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin。比如偷窥机密或敏感的信息数据,通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限窥探低级的协议信息。

这是很可怕的事,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口IP地址、IP路由信息和TCP连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用Sniffer收集这些信息只有一个原因:他正要进行一次欺骗(通常的ip地址欺骗就要求你准确插入TCP连接的字节顺序号),如果某人很关心这个问题,那么Sniffer对他来说只是前奏,今后的问题要大得多。(对于高级的黑客而言,这是使用Sniffer的唯一理由吧)

事实上,如果在网络上存在非授权的嗅探器就意味着你的系统已经暴露在别人面前了。

一般Sniffer只嗅探每个报文的前200到300个字节。用户名和口令都包含在这一部分中,这是我们关心的真正部分。

简单的放置一个嗅探器并将其放到随便什么地方将不会起到什么作用。将嗅探器放置于被攻击机器或网络附近,这样将捕获到很多口令,还有一个比较好的方法就是放在网关上。Sniffer通常运行在路由器,或有路由器功能的主机上。这样就能对大量的数据进行监控。Sniffer属第二层次的攻击。通常是攻击者已经进入了目标系统,然后使用Sniffer这种攻击手段,以便得到更多的信息。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程。

时间: 2024-10-11 07:28:22

网络嗅探工具的原理 sniffer&wireshark的相关文章

六款主流免费网络嗅探软件wireshark,tcpdump,dsniff,Ettercap,NetStumbler

1.WireShark WireShark是一个开源免费的高性能网络协议分析软件,它的前身就是非常著名的网络分析软 件Ethereal.你可以使用它来解决网络疑难问题,进行网络协议分析,以及作为软件或通信协议的开发参考,同时也可以用来作为学习各种网络协议的教学 工具等等.WireShark支持现在已经出现了绝大多数的以太网网卡,以及主流的无线网卡. WireShark具有如下所示的特点: (1) 支持多种操作系统平台,可以运行于Windows.Linux.Mac OS X10.5.5.Solar

Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap

Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap 网络扫描和嗅探工具--Nmap Nmap也就网络映射器(Network Mapper),是一个免费开放的网络扫描和嗅探工具.该工具可以扫描主机是否在线.所开放的端口号.提供的网络服务及操作系统类型等.本节将介绍Nmap工具的使用.在使用Nmap工具之前,首先需要了解它的几种扫描类型.Nmap主要的扫描类型如表4-1所示. 表4-1  Nmap扫描类型 [实例4-1]使用nmap工具扫描目标主机192.168.6.105的端口号.执行命

python scapy网络嗅探

1. 介绍 scapy是一个可用于网络嗅探的非常强大的第三方库.在网络嗅探方面前面的博文介绍过通过Raw Socket进行网络嗅探,但是Raw Socket比较底层,使用起来可能不太容易而且在不同的系统上也有一定的区别. 在网络流量嗅探方面,常用的一些第三方库: pylibpcap pycapy pypcap impacket scapy 接下来我详细介绍下scapy的使用,它在这些库中功能最强大使用也最灵活.具有以下几个特点: 交互模式,用作第三方库. 可以用来做packet嗅探和伪造pack

实验二 网络嗅探与欺骗

中国人民公安大学 Chinese people' public security university 网络对抗技术 实验报告   实验二 网络嗅探与欺骗     学生姓名 ?刘家亨 年级 2014级 区队 三区队 指导教师 高见     信息技术与网络安全学院 2016年11月7日   实验任务总纲 2016-2017 学年 第 一 学期 一.实验目的 1.加深并消化本课程授课内容,复习所学过的互联网搜索技巧.方法和技术: 2.了解并熟悉常用的网络嗅探方式,掌握常用抓包软件的使用方法和过滤技巧

NMAP网络扫描工具的安装与使用

简介 NMAP是一款流行的网络扫描和嗅探工具也是一个强大的端口扫描类安全测评工具,被广泛应用在黑客领域做漏洞探测以及安全扫描,更多的nmap是一个好用的网络工具,在生产和开发中也经常用到,主要做端口开放性检测和局域网信息的查看收集等,不同Linux发行版包管理中一般也带有nmap工具,这里选择去官网下载源码包进行编译安装,nmap的官网是是:https://namp.org由于某城墙的原因,打开会比较慢或者连接失败,所以奉上nmap中文网地址:http://www.nmap.com.cn/ 中文

20145306 《网络攻防》 后门原理与应用

20145306<网络攻防>后门原理及其应用 后门原理 后门就是不经过正常认证流程而访问系统的通道. 实现后门攻击首先是要有一个后门程序,然后将程序放入目标的操作系统上,然后让其运行起来,还需要不被恶意代码的检测程序发现.后门程序的生成方法很多,在这次试验用meterpreter来生成后门程序:放入目标的系统可以通过诱骗对方下载包含后门的程序,直接用存储设备拷贝到目标上......之后需要让后门程序运行,设置程序自启动,win定时任务,伪装成常用的软件等方法. 实验过程 ncat是一个底层工具

linux如何ARP嗅探 Linux下嗅探工具Dsniff安装记录

先来下载依赖包 和一些必须要用到的工具 我这里用的是 dsniff-2.3 的版本 wget http://www.monkey.org/~dugsong/dsniff/dsniff-2.3.tar.gz wget http://www.8090sec.com/uploads/soft/dsniff-2.3.tar.gz 备用下载 一.安装gcc # yum -y install gcc 二.安装 openssl 直接yum安装也可以的 # tar zxvf openssl-0.9.7i.tar

网络图片嗅探工具driftnet

网络图片嗅探工具driftnet 图片是网络数据传输的重要内容.Kali Linux内置了一款专用工具drifnet.该工具可以支持实时嗅探和离线嗅探.它可以从数据流中提取JPEG和GIF这两种网络最常用图片格式的数据,并进行保存,供渗透测试人员进行分析.同时,它还可以提取MPEG的声音数据,并进行播放.

ThinkAndroid框架 网络状态监听原理

ThinkAndroid框架 网络状态监听原理,有需要的朋友可以参考下. 现在用到网络监听的地方越来越广泛,这里提供下ThinkAndroid里的实现方法,还是根据功能原理倒着给出代码: 1.网络状态会发出广播,监听网络状态肯定通过广播接收者实现,广播接受者: /** * @Title NetworkStateReceiver * @Package com.ta.util.netstate * @Description 是一个检测网络状态改变的,需要配置 <receiver * android: