20242935 2024-2025-2 《网络攻防实践》第三周作业
网络嗅探与协议分析
一、实验要求
(1)动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
(2)动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
- 你所登录的BBS服务器的IP地址与端口各是什么?
- TELNET协议是如何向服务器传送你输入的用户名及登录口令?
- 如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
(3)取证分析实践,解码网络扫描器(listen.cap)
- 攻击主机的IP地址是什么?
- 网络扫描的目标IP地址是什么?
- 本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
- 你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
- 在蜜罐主机上哪些端口被发现是开放的?
- 攻击主机的操作系统是什么?
2.学习中遇到的问题及解决
3.学习感想和体会
二、知识点梳理
(1)网络嗅探与协议分析
- 常用工具:
- tcpdump:通过tcpdump分析访问某个网站时,涉及的Web服务器及其IP地址。例如监听HTTP流量:sudo tcpdump -n src <IP地址> and tcp port 80 and "tcp[13]&18=2"
- Wireshark: 图形化工具,提供详细的数据包分析功能,支持协议解码和流量过滤(如使用 telnet 过滤器)。例如捕获TELNET登录流量(明文传输):过滤
telnet
流量:telnet;查看用户名和密码:Follow TCP Stream
追踪完整会话,看到明文密码。
(2)取证分析与攻击检测
- 使用 Wireshark 分析扫描流量
- Snort 入侵检测:入侵检测系统,可分析 pcap 文件,检测攻击行为(如 Nmap 扫描)
- 蜜罐主机的开放端口
- 使用 p0f 被动分析攻击主机操作系统:
p0f
是一款用于被动识别操作系统的工具
三、实验过程
任务一:动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
- 使用指令ifconfig查看kali虚拟机的IP地址位192.168.200.2
- 再在kali终端使用指令进行监听,表示监听192.168.200.2的http通信
- 再打开https://www.bilibili.com/,访问哔哩哔哩(因为www.tianya.cn打不开)
sudo tcpdump -n src 192.168.200.2 and tcp port 80 and "tcp[13]&18=2"
- 成功得到浏览器访问的Web服务器的IP地址如下
任务二:动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
-
选择在主机上进行telnet,首先将telnet打开
-
在Kali Linux的终端中运行命令,指定编码格式访问清华大学BBS服务器,并以guest用户名进入
luit -encoding gbk telnet bbs.mysmth.net
-
虚拟机中打开wireshark,双击选择eth0这个网卡,wireshark开始抓包
-
看到清华大学BBS服务器的IP地址
-
在wireshark的过滤器直接输入 telnet ,即可过滤显示telnet相关的数据包,通过查看wireshark里面可知其端口号为23
-
在点击Follow,再点击Tcp stream,下拉就可以看到在输入用户名guest时,telnet是通过明文的方式一个个字符传输数据的
-
可以看到嗅探的数据包用户名为guest,密码为空
任务三:取证分析实践,解码网络扫描器(listen.cap)
(1)攻击主机的IP地址是什么?
- 将listen.cap放到我们的kali虚拟机里面,我是放到了Downloads里面的
- 通过wirshark打开此文件
- 经过分析数据包流量,发现攻击主机大量主动发送扫描数据包的源IP地址为:攻击主机IP:172.31.4.178
- 这是通过Wireshark分析中,发现有大量数据包(尤其是TCP SYN)从这个IP发起,明确表明它是主动进行端口扫描的攻击主机
(2)网络扫描的目标IP地址是什么?
-
根据分析数据流向,发现攻击者发起扫描的目标主机IP地址明确为:目标主机IP:172.31.4.188
-
这是攻击者TCP SYN数据包中的明确目标IP地址,所有扫描数据包均指向该主机地址
(3)本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
- 能明确确认本次扫描攻击工具为Nmap:因为在TCP SYN扫描中,攻击者发起的SYN包的TCP初始窗口大小(Win值)呈现周期性的变化规律,如1024、2048、3072、4096;此窗口大小循环变化的模式为Nmap在进行TCP SYN扫描时的典型行为特征;这种TCP窗口大小变化策略专门用于规避IDS/IPS检测以及探测目标主机操作系统类型
- 同时也可以使用snort查看攻击机和靶机的IP地址、攻击者采用的工具(snort是一款入侵检测系统,它可以检测到pcap文件当中的一些攻击行为)
- 首先使用指令更新APT库
sudo apt-get update
- 再使用指令安装snort
sudo apt-get install snort
- 在listen.pcap所在文件夹中单击鼠标右键,选择“在这里打开终端”
- 在终端处输入并使用指令
sudo snort -q -c /etc/snort/snort.lua -r listen.pcap
-
Snort分析正常完成,但默认不会将警报(alert)输出到屏幕,而是保存到Snort默认日志文件中
-
再下载Snort3社区规则文件
sudo wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz -O /tmp/snort3-community-rules.tar.gz
sudo mkdir -p /etc/snort/rules
sudo tar -xzvf /tmp/snort3-community-rules.tar.gz -C /etc/snort/rules
- 执行后,文件解压到了一个名为
snort3-community-rules
的子目录下(即:/etc/snort/rules/snort3-community-rules/
)
sudo mv /etc/snort/rules/snort3-community-rules/* /etc/snort/rules/
- 再检查文件位置
ls /etc/snort/rules/snort3-community.rules
- 再执行Snort分析命令
sudo snort -c /etc/snort/snort.lua -r listen.pcap -R /etc/snort/rules/snort3-community.rules -A alert_fast -l /var/log/snort
- 往下拉,可以看到图中清晰地显示出了Snort检测到的报警信息,可以发现本次攻击是使用nmap发起的
(4)你所分析的日志文件中,攻击者使用了哪种扫描方法,扫描的目标端口是什么,并描述其工作原理。
- namp在每次开启扫描之前,都会先发送一个ARP广播请求包,在局域网内找到某个 IP 地址对应的 MAC 地址,来确定靶机是否还活跃
- 那么在Wireshark中筛选ARP
- nmap在发起端口扫描之前总是先通过ping扫描和针对80端口的探测确定目标主机是否活跃
- 通过过滤器搜索icmp,可以定位icmp协议对应的ping扫描,实现两次ping扫描
-
攻击者主机发送大量的
TCP SYN
数据包到目标主机的不同端口 -
若目标主机端口是开放的,目标主机返回
[SYN, ACK]
,攻击者随即发送RST
包终止连接 -
若端口关闭,目标主机直接返回
[RST, ACK]
包 -
所以可能发出的扫描指令如下:
- nmap -p 172.31.4.188:这是一个基本的 nmap 扫描命令,试图扫描 IP 地址 172.31.4.188 的默认端口
- nmap -O 172.31.4.188:-O 选项用于操作系统探测,尝试猜测目标主机的操作系统和版本
- nmap -sL -p 1-65535 172.31.4.188:-sL 表示仅列出目标,不会实际发送探测包,仅显示指定范围内的 IP;-p 1-65535 指定扫描所有端口(1 到 65535)
- nmap -v 172.31.4.188:-v 选项启用详细模式,提供更详细的扫描输出
(5)在蜜罐主机上哪些端口被发现是开放的?
- 通过过滤器的
tcp.flags.syn == 1 and tcp.flags.ack == 1
可以过滤出SYN | ACK的数据包,这是目标主机反馈攻击主机的端口活跃信息
- 可查看靶机的开放端口有:21 22 23 25 53 80 139 445 3306 5432 8009 8180
- 以上端口均回应了SYN,ACK确认报文,说明攻击者扫描时这些端口明确显示为开放状态
(6)攻击主机的操作系统是什么
- 使用p0f工具,p0f是一款被动探测工具
- 在listen.pcap所在文件夹中单击鼠标右键,选择“在这里打开终端”
- 在终端先更新软件源中的所有列表
sudo apt-get update
- 再安装p0f
sudo apt-get install p0f
- 再使用指令探测
sudo p0f -r listen.pcap
- 执行完毕,可以得知版本为linux 2.6.x
四、学习中遇到的问题及解决
问题一:Snort确实安装成功了,但Snort缺少必要的配置文件:/etc/snort/snort.conf。执行命令:ls /etc/snort/snort.conf。显示:ls: cannot access '/etc/snort/snort.conf': No such file or directory。这表示默认配置文件不存在。
解决方法:我的Snort版本是3.1.82,Snort 3.x 默认配置文件已经更换为 snort.lua
而非 snort.conf
。那么需要的命令应如下所示:
sudo snort -q -c /etc/snort/snort.lua -r listen.pcap
问题二:在安装p0f时出现SYSTEM ERROR : Can't access file 'listen.pcap'.

解决方法:我之前上传的listen.pcap
文件位于虚拟机的Downloads
目录中,但我现在处于~
根目录下。因此需要切换回到包含listen.pcap
文件的目录再执行命令。
五、学习感想和体会
动手使用 tcpdump 和 Wireshark 让我直观体会到数据包的传输过程,尤其是 TELNET 明文传输的脆弱性。遇到 Snort 配置文件缺失和 p0f 文件路径错误时,通过查阅文s档和调整命令(如使用 snort.lua 和切换目录)解决了问题,培养了动手能力。
六、参考资料
1.tcpdump参数解析及使用详解(转载)-CSDN博客