20252915时进旭 2025-2026-2 《网络攻防实践》第三周作业
注意
首先要把虚拟机网卡设置为桥接模式

任务一:动手实践tcpdump
实验内容
使用tcpdump开源软件对在本机上访问www.sohu.com网站过程进行嗅探。
实验过程
查看本机IP地址:

sudo tcpdump -n src 192.168.31.120 and tcp port 80 and "tcp[13]&18=2"
命令作用:使用tcpdump工具,-n为禁用反向域名解析,筛选源IP地址为192.168.200.5且TCP协议目标端口为80的数据包
tcp[13]&18=2是一个伯克利包过滤器(BPF)语法,作用是检查TCP标志字段,SYN位必须为1且ACK必须为0,精确匹配了TCP三次握手的第一步的SYN 包
https为443端口,所以稍作更改:
sudo tcpdump -n src 192.168.31.120 and tcp port 443 and "tcp[13]&18=2"
注意是先使用命令再访问页面
访问http://www.sohu.com会自动跳转到https://www.sohu.com:

使用目标端口为80的命令:
sudo tcpdump -n src 192.168.31.120 and tcp port 80 and "tcp[13]&18=2"

使用目标端口为443的命令:
sudo tcpdump -n src 192.168.31.120 and tcp port 443 and "tcp[13]&18=2"

查看域名所对对应的服务器IP:

回答问题
你在访问www.sohu.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
根据80端口的命令结果,会访问四个服务器:
123.6.195.40
116.196.143.237
23.219.170.59
119.188.204.76
任务二:动手实践Wireshark
实验内容
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
(1) 你所登录的BBS服务器的IP地址与端口各是什么?
(2) TELNET协议是如何向服务器传送你输入的用户名及登录口令?
(3) 如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
实验过程
复旦大学BBS
https://bbs.fudan.edu.cn/
luit -encoding gbk telnet bbs.fudan.edu.cn
但是此BBS无法连接,因此换用下述BBS:
https://bbs.fozztexx.com/

luit -encoding gbk telnet bbs.fudan.edu.cn

使用Wireshark监听网卡eth0:

在命令行中使用用户名和密码进行登录:

使用Wireshark跟踪TELNET的整个通信过程:

可以获取到用户名及密码:

回答问题
(1) 你所登录的BBS服务器的IP地址与端口各是什么?
我所登陆的BBS服务器的IP地址和端口分别为50.79.157.209:23
(2) TELNET协议是如何向服务器传送你输入的用户名及登录口令?
建立连接后,使用明文传输
(3) 如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
过滤双方的IP地址,并点击follow追踪TCP流,即可获取
任务三:取证分析实践,解码网络扫描器(listen.cap)
实验内容
(1) 攻击主机的IP地址是什么?
(2) 网络扫描的目标IP地址是什么?
(3) 本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
(4) 你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
(5) 在蜜罐主机上哪些端口被发现是开放的?
(6) 攻击主机的操作系统是什么?
实验过程
Snort
首先在kali上安装Snort:
sudo apt-get update #更新安装源
apt list -a snort #查看可用的snort版本发现现在只有3的版本,和早期博客不一样
sudo apt-get install snort #安装snort
snort --version #查看snort版本


这里我的listen.pcap文件是放在/home/ye-jiu/桌面下的:

安装完成,使用Snort对listen.pcap文件进行分析:
sudo snort -c /etc/snort/snort.lua -r /home/ye-jiu/桌面/listen.pcap
得到分析的结果,但是版本3的并不能明确查出是nmap的扫描:

snort遇到的问题
注意一些博客中版本2.x的snort的默认规则文件为snort.conf,而版本3.x的为snort.lua,且版本3.x删除了-A console的参数后规定默认输出到控制台,所以会产生报错:
snort -A console -q -u snort -c /etc/snort/snort.conf -r ~/listen.pcap

Wireshark
右键使用Wireshark打开listen.pcap :


查询ARP:
因为nmap会根据arp更新目标MAC地址,因此通过查询ARP地址,即可得到攻击者通过广播的形式查询靶机172.31.4.188的MAC地址

查询ICMP:
查询icmp可以发现,攻击机和靶机之间存在双向数据包,说明进行了批量的ping扫描进行主机扫描,以确认目标靶机是否活跃。

查询TCP:
可以发现进行了大量的TCP扫描,例如攻击机向靶机发送SYN请求包,靶机返回SYN,ACK确认连接,攻击机响应,说明该端口开放。反之,如果靶机返回RST,ACK,则说明靶机的该端口关闭。

tcp.flags.syn == 1 and tcp.flags.ack == 1:
通过查询tcp.flags.syn == 1 and tcp.flags.ack == 1可以得到靶机所有开放的端口,例如有21、22、23、25、53、80、139、445、3306、8180等端口。

p0f
首先安装p0f:
sudo apt install p0f
sudo p0f -r /home/ye-jiu/桌面/listen.pcap #注意根据自己路径调整

发现NMap SYN scan:

且扫描出客户机OS采用的是linux 2.6.x版本:

回答问题
(1) 攻击主机的IP地址是什么?
攻击主机的IP地址为172.31.4.178。
(2) 网络扫描的目标IP地址是什么?
目标IP地址172.31.4.188。
(3) 本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
使用Nmap工具扫描,因为进行了TCP SYN 扫描。
(4) 你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
进行了TCP SYN扫描,扫描了约67657个端口,只有83个端口开放。TCP SYN是采用扫描器向目标端口发送一个SYN包发起连接,如果目标端口开放则会回复SYN-ACK包,扫描器收到后不发送确认ACK包完成三次握手,而是立即发送RST包重置连接;如果端口关闭则目标会直接回复RST包;若无响应则可能被过滤。
(5) 在蜜罐主机上哪些端口被发现是开放的?
蜜罐主机上有21、22、23、25、53、80、139、445、3306、8180等端口是开放的
(6) 攻击主机的操作系统是什么?
攻击主机的操作系统是Linux 2.6.X

浙公网安备 33010602011771号