1.实践内容
一、网络嗅探技术概述
网络嗅探(Sniff),利用计算机的网络接口截获目的地为其他计算机的数据报文(二进制数据),以监听数据流中所包含的用户账户密码或私密信息
嗅探技术的危害与作用:
一方面对于攻击者可以获得机密信息、底层网络协议信息,有助于中间人攻击。
另一方面对于防御方利用网络嗅探找出关心网络中潜在的问题并解决。
网络嗅探技术与工具分类
按照所监听的链路层网络进行分类:
有限局域网(Local Access Network,LAN):以太网(Ethernet)::tcpdump
无线局域网(Wireless Local Access Network,WLAN):Wi-Fi::Kismet
按照实现形式进行分类:
软件嗅探器(对网卡进行编程的实现):价格便宜或者免费,易于使用,速度慢,不全面
硬件嗅探器(协议分析仪):速度快,捕获数据全面,成本高,价格昂贵
二、网络嗅探的原理与实现
以太网(802.3协议)工作原理
以太网是共享通信信道的,数据的传播是以“帧”为单位进行的,采用载波侦听/冲突检测技术避免共享链路上的通信冲突
网卡(Network Interface Controller,NIC):以太网上的网络接口设备,有48位的MAC地址(发送源的MAC地址、目标MAC地址)
混杂模式(Promiscuous Mode):此时网卡能够接收一切通过他连接共享通信媒介的数据帧。(嗅探以太网上的流量,就需要将网卡设为混杂模式)
共享式网络与交换式网络中的嗅探
根据部署方式的不同分为:
共享式网络
使用集线器(Hub)连接,其网络拓扑是基于总线方式,物理上是广播的。
集线器这种工作模式决定了在同一集线器上连接的所有主机在发送数据包时,都会发往每一台主机,因此其中的任一主机都能嗅探整个集线器上的全部网络流量
交换式网络
主要使用交换机组建,数据帧都是通过交换机进行数据转发。
交换机接收到数据帧后,转发处理通过MAC地址-端口映射表只允许与目标MAC地址匹配成功的数据包通过交换机,并只转发到特定端口上。(有效避免网络广播风暴,减少数据被嗅探的风险)
纯交换网络中,使用如下技术手段使得根本不应到达的数据包到达本地,实现嗅探
MAC地址泛洪攻击 (就是给交换机发送大量含有虚构MAC地址和IP地址的数据包,使他的表溢出无法处理,进入“打开失效”模式,开始类集线器的工作方式)
MAC欺骗(假冒所要监听的主机网卡,不断更新交换机的表,使原本发给目的主机的数据包,现在发给攻击者,达到数据嗅探的结果)
ARP欺骗(利用IP地址与MAC地址之间进行转换时的协议漏洞,达到MAC地址欺骗)
类UNIX平台的网络嗅探技术实现(主要通过内核态的BPF(Berkeley Packet Filter)和用户态的libpcap抓包工具库的实现)
Windows平台的网络嗅探实现技术(需要增加一个驱动程序或网络组件来访问内核网卡驱动中捕获的数据包,内核态虚拟设备驱动程序(NPF):过滤数据包,标准抓包接口(WinPcap))
网络嗅探软件类UNIX平台网络嗅探软件(一般都是基于BPF与libpcap)
libpcap抓包开发
2.实践过程
动手实践
(1)动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
先在kail上访问www.tianya.cn网站
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个web服务器?他们的IP地址是什么?
- 直接启动tcpdump,将抓取所有经过第一个网络接口上的数据包
- 访问天涯主页,使用
sudo tcpdump src 192.168.200.6and tcp dst port 80
成功得到浏览器访问的Web服务器的IP地址如下:
通过 nslookup tianya.cn
命令查看www.tianya.cn对应的IP地址
(2)动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
你所登录的BBS服务器的IP地址与端口各是什么?
TELNET协议是如何向服务器传送你输入的用户名及登录口令?
如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
(1)输入luit -encoding gbk telnet bbs.fudan.edu.cn(指定编码格式)命令访问复旦大学BBS服务器,得其IP地址为202.120.225.9
(2)在wireshark的过滤器直接输入 telnet ,即可过滤显示telnet相关的数据包,通过查看wireshark里面可知其端口号为23