网络嗅探工具的原理 sniffer&wireshark - CSDN博客

标签: | 发表时间:2018-01-26 11:43 | 作者:
出处:http://blog.csdn.net

今天突然想到这个问题: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这种攻击手段,以便得到更多的信息。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程。

相关 [网络嗅探 工具 原理] 推荐:

网络嗅探工具的原理 sniffer&wireshark - CSDN博客

- -
今天突然想到这个问题:wireshark之所以能抓到其它主机的包,是因为共享式以太网;那么现在的交换式以太网怎么使用wireshark. 在网上看了一些资料,整理了下面这篇文章. Sniffer(嗅探器)是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等. Snifffer可以作为能够捕获网络报文的设备,ISS为Sniffer这样定义:Sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具.

搜索工具everything的原理

- - 行业应用 - ITeye博客
一下内容转载自: http://bbs.51cto.com/thread-662776-1.html. 初接触Everything你一定会好奇为什么它能快得这么离谱. 根据Everything的官网所说,它1分钟可以索引100万个文件. 如果笔记本上320G的硬盘48万多个文件,建立索引需要的时间也只有几秒.

工具小结

- yboren - 博客园-welfear
文档名称:工具小结(Tools Tips) 文档维护:Xuefeng Chang(welfear@gmail.com @welfear) 文档日期:2010.10.17 find. -name "*.java" | sed 's/.*\///' | \ sort | uniq -c | grep -v "^ *1 " | sort -r 短小精干.

Windows工具集

- - 互联网 - ITeye博客
参考: https://community.rapid7.com/servlet/JiveServlet/downloadBody/2881-102-2-6389/Mitigating%20Service%20Account%20Credential%20Theft%20on%20Windows.pdf.

HandlerSocket的原理

- Roger - MySQLOPS 数据库与运维自动化技术分享
HandlerSocket的应用场景:. MySQL自身的局限性,很多站点都采用了MySQL+Memcached的经典架构,甚至一些网站放弃MySQL而采用NoSQL产品,比如Redis/MongoDB等. 不可否认,在做一些简单查询(尤其是PK查询)的时候,很多NoSQL产品比MySQL要快很多,而且前台网站上的80%以上查询都是简洁的查询业务.

hbase原理

- - CSDN博客云计算推荐文章
1.hbase利用hdfs作为其文件存储系统,利用mapreduce来处理数据,利用zookeeper作为协调工具. 2.行键(row key),类似于主键,但row key是表自带的. 3.列族(column family) ,列(也称作标签/修饰符)的集合,定义表的时候指定的,列是在插入记录的时候动态增加的.

zookeeper原理

- - CSDN博客云计算推荐文章
1.为了解决分布式事务性一致的问题. 2.文件系统也是一个树形的文件系统,但比linux系统简单,不区分文件和文件夹,所有的文件统一称为znode. 3.znode的作用:存放数据,但上限是1M ;存放ACL(access control list)访问控制列表,每个znode被创建的时候,都会带有一个ACL,身份验证方式有三种:digest(用户名密码验证),host(主机名验证),ip(ip验证) ,ACL到底有哪些权限呢.

索引原理

- - ITeye博客
索引是存储引擎用于快速找到记录的一种数据结构. 也就会说索引也是一种数据结构,也占用磁盘空间. 索引是对查询优化最有效的手段,可以将查询提升几个数量级,相当牛掰啊. 1)索引大大减少了服务器需要扫描的数据量. 2)索引可以帮助服务器避免排序和临时表. 3)索引可以将随机IO变为顺序IO. 数据库索引可以想象成一本书的目录,如果想在一本书中找到某个主题,那么先到书的目录中找到这个主题,然后根据目录提供的页码,找到要找的主题.

Hessian原理

- - 互联网 - ITeye博客
Hessian 原理分析. 一.      远程通讯协议的基本原理. 二.      应用级协议 Binary-RPC. Binary-RPC 是一种和 RMI 类似的远程调用的协议,它和 RMI 的不同之处在于它以标准的二进制格式来定义请求的信息 ( 请求的对象、方法、参数等 ) ,这样的好处是什么呢,就是在跨语言通讯的时候也可以使用.

MapReduce原理

- - C++博客-牵着老婆满街逛
       MapReduce 是由Google公司的Jeffrey Dean 和 Sanjay Ghemawat 开发的一个针对大规模群组中的海量数据处理的分布式编程模型. MapReduce实现了两个功能. Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集. 而Reduce是把从两个或更多个Map中,通过多个线程,进程或者独立系统并行执行处理的结果集进行分类和归纳.