20252908 2024-2025-2 《网络攻防实践》实验三
20252908 2024-2025-2 《网络攻防实践》实验三
1.实验内容
1.1网络嗅探基本原理
网络嗅探是通过捕获网络传输数据包并对其解析分析的技术。本次实验使用tcpdump与Wireshark等完成流量抓取与协议分析。
1.2tcpdump工具使用
tcpdump是Linux/Kali下经典命令行抓包工具,支持灵活的流量过滤规则,可精准抓取指定IP、协议、端口的数据包。
核心常用参数包括:
-
-i:指定监听网卡,any表示监听所有网卡。
-
-n:禁止DNS反向解析,直接以数字形式显示IP,提升效率与可读性。
-
支持逻辑过滤规则:host、port、and/or组合筛选目标流量。
1.3Wireshark协议分析
Wireshark是图形化网络抓包与深度协议分析工具,支持对实时流量与离线pcap文件解析。
关键功能:
-
协议过滤(如telnet)快速定位目标流量。
-
追踪TCP流还原完整会话交互过程。
-
查看各层协议头部字段,分析报文交互细节。
1.4TELNET协议特性
TELNET是基于TCP的远程登录协议,默认端口23,是本次实验中登录BBS服务器所用的核心协议。
其核心特性及安全隐患:
-
客户端与服务器需先通过TCP三次握手,建立可靠的网络连接
-
缺陷:所有传输的数据均以明文形式封装在数据段中,以ASCII码形式发送。即使口令在终端界面不显示,在网络传输中依然是明文,可被嗅探工具直接捕获,安全性极低
1.5端口扫描原理与Nmap工具
端口扫描是渗透测试、攻击取证中信息收集的重要环节,指通过向目标主机发送探测报文,判断目标主机各端口的开放状态,进而推断其运行的服务类型。本次攻击者使用的是Nmap工具,可通过Snort离线分析抓包文件(listen.cap)验证。
Snort是一款开源入侵检测系统,可对离线抓包文件进行入侵检测,生成告警信息,辅助判断扫描工具和扫描行为。
1.6被动指纹识别工具p0f
p0f 是被动式流量分析工具,不主动发包,仅通过解析数据包特征(TTL、窗口大小、TCP选项等)识别:扫描类型、主机操作系统版本等,隐蔽性强,适用于攻击取证与流量溯源。
1.7攻击流量取证分析方法
离线pcap文件可通过多种工具完成攻击溯源:
-
Wireshark:筛选SYN包、SYN+ACK包定位攻击机与目标机。
-
tshark:命令行提取扫描端口、开放端口并排序去重。
-
Snort:入侵检测规则匹配,识别扫描行为并生成告警。
-
通过报文交互时序与特征,判断扫描工具、方式及开放端口。
2.实验过程
2.1使用tcpdump开源软件对在本机上访问www.163.com网站过程进行嗅探
先在kali终端查看本机IP地址为192.168.32.2。

再使用sudo tcpdump -i any -n host www.163.com and tcp port 80 or tcp port 443 命令来抓取本机和www.163.com 之间的所有 HTTP(80) 和 HTTPS(443) 网络流量。
-i any :指定所有网卡
-n :不把IP解析成域名,显示数字IP,更直观
host www.163.com :只抓和www.163.com通信的包
and tcp port 80 or tcp port 443 :只抓HTTP和HTTPS流量

然后在kali打开浏览器访问网易的首页界面,可以发现对其产生了嗅探信息。

2.1.1你在访问www.163.com网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
分析嗅探信息可知,其访问了4个Web服务器,IP地址分别为153.3.237.72、60.221.222.1、220.197.35.208、220.197.35.192。有多个IP地址可能的原因是其不是只访问一个网站,而是访问一个网页所需的所有资源,它们分散在多台服务器上,所以会看到多个不同的Web服务器IP。网易首页并非单一HTML文件,每个域名可能解析到不同的CDN节点或源站IP,因此浏览器会分别建立TCP/TLS连接,也可能与负载均衡有关。
2.2使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析
先打开Wireshark,选择eth0,开启网络流量捕获。

同时使用luit -encoding gbk telnet bbs.byr.cn命令尝试登陆北邮人BBS。

等待加载完毕,输入代号guest,代表访客账户,无需注册。登陆成功后回到Wireshark,在显示过滤器中输入telnet进行过滤。

2.2.1你所登录的BBS服务器的IP地址与端口各是什么?
由上图可以发现所有 Telnet 数据包的目标 IP均为211.68.71.66,所以BBS 服务器IP地址为:211.68.71.66,BBS服务器端口:23(Telnet协议的默认端口就是 23)。
2.2.2TELNET协议是如何向服务器传送你输入的用户名及登录口令?
客户端与服务器会先通过TCP三次握手建立可靠连接。连接建立完成后,Telnet以明文方式将用户输入的用户名和登录口令封装在数据段中进行不加密传输。在终端输入的字符都会以ASCII码形式发送至服务器,即使口令在终端界面不显示,在网络中依然以明文形式传输,因此使用抓包工具可以直接捕获并查看完整的用户名和登录口令。
2.2.3如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
在过滤后的包中任选一条,右键选择追踪流—>TCP流,Wireshark 会自动还原出完整的会话内容。因为以明文形式传输,所以可以直接看到客户端发送的用户名和登录口令,例如:guest。

2.3取证分析实践,解码网络扫描器(listen.cap)
2.3.1攻击主机的IP地址是什么?网络扫描的目标IP地址是什么?
分析发现,该主机在短时间内向172.31.4.188的多个不同端口发送SYN报文,具有明显的端口扫描特征。进一步通过筛选RST, ACK和SYN, ACK响应报文,可以验证172.31.4.188为被扫描目标主机,172.31.4.178为发起扫描的攻击主机。

2.3.2本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
首先安装Snort对listen.pcap抓包文件进行离线分析,能够有效检测出攻击者使用Nmap发起的 TCP SYN半开放扫描等恶意行为,生成相应告警信息,从而完成网络攻击取证与流量分析。安装的Snort版本如下。

我们先把listen.pacp文件放在snort的目录下,方便路径索引,使用命令 sudo snort -r listen.pcap -c /etc/snort/snort.lua -A alert_fast,用于启动Snort入侵检测系统,对离线抓包文件listen.pcap进行入侵检测分析。
-r指定读取流量文件,-c加载检测规则配置,-A alert_fast指定告警输出格式。

现在判定其扫描工具,对其报告进行分析可发现wizard模块统计到19次TCP扫描、7次命中,符合Nmap多方法扫描的特征,进一步验证了工具类型。

并且从port_scan模块统计到135515个扫描包,stream_tcp模块显示67657个TCP会话,呈现出对目标主机大量端口的并发探测,这也是Nmap高速端口扫描的典型行为,这是又一佐证。

所以可得出结论其使用的是NMAP工具。
2.3.3你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
我们可以先使用sudo apt install p0f命令安装工具p0f,其是一款被动式网络指纹识别工具,专门用于分析网络流量、识别操作系统和应用层行为,而且全程不会主动发送探测包,因此隐蔽性极高。
执行sudo p0f -r listen.pcap命令后,报告直接输出NMap SYN scan,其通过 TCP 报文指纹判定扫描方法为TCP SYN半开放扫描。

或者我们可以在过滤器输入ip.src == 172.31.4.178 and tcp.flags。

再输入ip.src == 172.31.4.178 && ip.dst == 172.31.4.188 && tcp.flags.syn==1,可以发现正常TCP连接需完成三次握手,但在本次抓包中:扫描发起方仅发送了初始SYN探测包,未回复第三步的ACK报文;且目标主机因始终收不到ACK,只能持续重传SYN+ACK报文,直到超时;整个过程未建立完整TCP连接,不会在目标主机留下连接日志,符合SYN半开放扫描的隐蔽性特征。

使用命令tshark -r listen.pcap -Y "ip.src == 172.31.4.178 and tcp.flags.syn == 1 and tcp.flags.ack == 0" -T fields -e tcp.dstport | sort -n | uniq提取攻击者发送的SYN扫描包的目标端口,结果显示攻击者对目标主机进行了TCP全端口(1–65535)扫描。
SYN半开放扫描工作原理如下:
- 发起探测:攻击主机向目标端口发送SYN报文(TCP连接请求,模拟三次握手第一步),不携带任何应用层数据。
- 端口状态判断:若端口开放:目标主机返回SYN+ACK报文,表示同意建立连接;若端口关闭:目标主机返回RST报文,表示拒绝连接。
- 中断连接:攻击主机收到响应后,直接发送RST报文中断连接,不完成完整的TCP三次握手。
2.3.4在蜜罐主机上哪些端口被发现是开放的?
通过tshark -r listen.pcap -Y "ip.src == 172.31.4.188 and tcp.flags.syn == 1 and tcp.flags.ack == 1" -T fields -e tcp.srcport | sort -n | uniq命令筛选蜜罐主机返回的SYN+ACK报文,提取源端口并去重,最终确定蜜罐主机的开放端口为:21、22、23、25、53、80、139、445、3306、3632、5432、8009、8180。

注意这与上一条tshark命令的不同,前者是看扫描机在扫哪些端口,后者是看目标机哪些端口开放了。
2.3.5攻击主机的操作系统是什么?
通过sudo p0f -r listen.pcap命令可看出攻击主机的操作系统是Linux 2.6.x。

3.学习中遇到的问题及解决
问题1:在本次实验中,运行Snort工具时,遇到了因依赖库损坏、版本冲突或系统环境异常导致的报错,Wireshark工具无法正常启动、规则加载失败或命令执行报错。
问题1解决方案:由于多次尝试修复依赖、重装软件包均未解决问题,最终采用重装Kali Linux系统的方式,并多准备了一个备份,以备不时之需。新Kali被分配的IP地址为:192.168.32.6。

4.学习感想和体会
通过本次实验,我熟悉了tcpdump、Wireshark的使用,完成了访问嗅探、Telnet登录分析及 listen.cap取证,收获很多。实验中,我用tcpdump嗅探访问www.163.com,分析Web 服务器IP;用Wireshark分析Telnet登录 BBS的流量,查找其服务器IP和端口,尝试获取明文用户名、口令,了解了其安全缺陷。在取证分析中,我从数据包中排查出攻击主机、目标 IP、扫描工具及开放端口等关键信息,提升了协议分析和取证能力。实验中我遇到了Wireshark启动失败、源报错、依赖冲突等问题,这个排查真的特别麻烦,浪费了很多时间,但是提升了排错能力。

浙公网安备 33010602011771号