71
社区成员




网络嗅探(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))
网络嗅探软件:libpcap抓包开发库、tcpdump嗅探器软件、wireshark嗅探器软件(ethereal)、Snort、dsniff、sniffit、linux-sniffer
网络嗅探的检测:检查网卡是否允许在混杂模式,来发现正在监听的嗅探器;基于混杂模式下操作系统和协议栈的不同特性,来检测出网络中其他主机上的嗅探器;Linux,构造MAC地址无效而IP地址有效的ICMP Echo请求,看目标主机是否返回应答包,返回说明目标主机未检查MAC地址,处于混淆正执行嗅探;Windows,混杂模式下,检查一个包是否为以太网广播包,只要看MAC地址前八位是否为Oxff;目标主机的响应时间是否处于异常状态
网络嗅探的防范措施:采用安全的网络拓扑,尽量将共享式网络升级为交换式网络,并通过在交换机设置VLAN等技术手段;用静态ARP或者MAC-端口映射表代替动态机制;重视网络数据传输的集中位置点的安全防范;避免使用明文传输口令或敏感信息的网络协议,而使用加密及安全增强的协议进行替代
网络协议分析的典型过程包括以下几个步骤:网络嗅探得到的原始数据是在链路层传输的二进制数据包;对帧结构进行分析,得到帧头各字段结构,根据帧头字段确定网络层的协议类型,并提取包含网络层数据的内容;进一步对IP数据包进行分析,确定传输层协议类型,提取传输层数据内容;根据TCP或UDP目标端口确定确定具体的应用层协议,得到应用层特定协议的应用交互内容;依据相应应用层协议对数据进行整合恢复,得到实际传输数据
使用tcpdump开源软件对在本机上访问 http://www.tianya.cn/ 网站过程进行嗅探,回答问题:
启动tcpdump
访问天涯主页,输入命令sudo tcpdump src 192.168.200.4 and tcp dst port 80
筛选
使用nslookup
查询http://www.tianya.xn--cn%2C-vy0gl53t/
根据观察,浏览器访问了4个web浏览器
124.225.135.230、172.64.155.188、111.206.209.249、124.225.65.30
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
打开Wireshark
访问复旦大学BBS论坛
访问复旦大学BBS论坛时发现其IP地址为==202.120.225.9
在捕获结果中查询ip.addr==202.120.225.9
其端口号为23
传递用户名和密码时,是一个字符一个字符传递的
可以通过查看Telnet Data查看输入内容
也可以通过追踪TCP流查看
打开listen.pcap,在出现的wireshark界面点击统计(S)——>Conversations——>IPv4
可以看到往返主机172.31.4.178和主机172.31.4.188之间的数据包很多,远多于其他三组,所以172.31.4.178和172.31.4.188即为攻击主机和靶机主机对应的ip
从发送的TCP数据包可以看出,ACK数据包都是由172.31.4.188发出的,由此可确定网络扫描的目标IP地址为172.31.4.188
目标ip172.31.4.178
本次案例中是使用了nmap发起的端口扫描
安装snort工具sudo apt-get update
和sudo apt-get install snort
给予所有权限:sudo chmod 777 /etc/snort/snort.conf
从以上数据确定本次案例所使用的扫描工具为nmap
以arp作为过滤条件,攻击机在广播域中广播arp request报文,寻找目标IP地址为172.31.4.188的主机的MAC地址
以icmp作为过滤条件,可以看到两组ICMP request包和ICMP replay包,说明使用了主机扫描,并且确定了目标主机是活跃的
以tcp作为过滤条件,可以看到在数据包中存在大量SYN请求包,说明攻击机的57738端口向目标主机发起了TCP SYN扫描,以确定目标主机的哪些端口开放,开放的端口则回复SYN|ACK数据包,不活跃的端口则回复RST|ACK数据包
可以看到序号9、10、13是一组半开放扫描,使用不完整的tcp三次握手来对目标主机进行尝试性的连接,攻击主机的57738号端口对目标ip的3306号端口发送SYN包,目标ip的3306号端口开放,返回一个 TCP SYN & ACK 包,然后攻击主机发送一个 RST 包停止建立连接
还发现除了建立TCP SYN扫描,还建立了ssh连接,这是为了探测靶机的网络服务,于是猜测攻击机对靶机进行了 -sV 的版本扫描
过滤出所有的SYN|ACK的数据包,目标主机反馈攻击主机的端口活跃信息,即可得到所有的开放端口
21 22 23 25 53 80 139 445 3306 3632 5432 8009 8180端口开放
使用p0f工具,得到如下检测结果:
操作系统Linux 2.6.x
签名错误,无法更新软件
维护签名
本次实验,我学习了网络嗅探与协议分析的基本原理和方法,更熟悉使用了各种网络工具,特别是对各种报文的过滤方法,提高了从繁杂的信息中获取有用信息的能力,也提高的自我学习的能力,收获颇多。
[1]诸葛建伟. 网络攻防技术与实践[M]. 电子工业出版社, 2011-6.
[2]HF&SLC. Tcpdump命令抓包详细分析[EB/OL]. [2023年03月15日].https://www.cnblogs.com/ct20150811/p/9431976.html.
[3]keygun24. The following signatures were invalid:EXPKEYSIG ED444FF07D8D0BF6 KaliLinuxRepository<devel@kali.org>[EB/OL]. [2023年03月18日].https://blog.csdn.net/Keygun/article/details/126704821.