20242931 2024-2025-2 《网络攻防实践》第三周作业
1. 实验内容
(1)动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.baidu.com网站过程进行嗅探,回答问题:你在访问www.baidu.com网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
(2)动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
- 你所登录的BBS服务器的IP地址与端口各是什么?
- TELNET协议是如何向服务器传送你输入的用户名及登录口令?
- 如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
(3)取证分析实践,解码网络扫描器(listen.cap)
- 攻击主机的IP地址是什么?
- 网络扫描的目标IP地址是什么?
- 本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
- 你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
- 在蜜罐主机上哪些端口被发现是开放的?
- 攻击主机的操作系统是什么?
2. 实验过程
2.1 动手实践tcpdump
- 启动kali,升级权限进入root模式,通过“ifconfig”确认ip地址为“192.168.200.12”
- 通过以下tcpdump命令对本机向外的通信进行抓包,然后在浏览器中访问"https://www.baidu.com/"
tcpdump -n src 192.168.200.12 and tcp port 80 and "tcp[13] & 18 =2"
- 观察监听记录,可以发现访问百度时,浏览器将访问个5服务器,ip地址如图所示
2.2 动手实践Wireshark
- 打开wireshark,选择eth0网卡
- 通过以下命令,以TELNET方式访问清华大学BBS服务器
luit -encoding gbk telnet bbs.mysmth.net
- 新开一个终端窗口,ping 论坛域名,查询ip地址,可知是“120.92.212.76”
- 回到wireshark,在其中一个Destination为120.92.212.76的数据包中可以看出,该BBS论坛的端口号是23
- 想要利用Wireshark分析嗅探的数据包,并从中获取用户名及登录口令,我们首先要选择一条记录,右键点击“Follow”,选择“TCP Stream”
- 可以在一堆乱码中找到我们的用户名“guest”
- 修改“Show as”选择“GBK”,即可以在追踪的TCP流中看到中文字符,可以判断出其内容就是我们登录过程中返回的信息
- TELNET协议是如何向服务器传送你输入的用户名及登录口令的?
用户的终端通过TELNET客户端与远程服务器建立TCP连接,这一过程使用的是标准的TCP端口23,一旦连接建立,用户可以在终端中输入用户名和登录口令,输入的每个字符都会被即时捕获,也就是说,用户每敲一个字符,远程主机都会对此做出反应,因此我们会看到一红一蓝两两重复的字符。TELNET协议将用户输入的字符(如用户名和口令)编码成特定的格式,然后通过已经建立的TCP连接发送到远程服务器,此过程没有对数据进行加密,因此用户输入的内容以明文形式传输。远程服务器接收到这些数据后,会解析所接收到的字符,将其识别为用户名和口令。服务器将输入的用户名与口令与其数据库中存储的信息进行比对,以确认用户的身份,根据身份验证的结果,服务器会向客户端发送响应信息。
2.3 取证分析实践,解码网络扫描器(listen.cap)
- 将listen.pcap复制到Kali虚拟机中
- 用 Wireshark 打开 listen.pcap,分析请求与数据回复包,判断攻击机IP地址是“172.31.4.178”,网络扫描目标IP地址(即靶机IP地址)是“172.31.4.188”
- 更新软件源,安装 snort
sudo apt-get update
sudo apt install snort
- 在listen.pcap所在文件夹打开终端,输入以下命令
snort -c /etc/snort/snort.lua -r listen.pcap -A alert_full
- 本次案例中使用了Nmap扫描工具发起端口扫描
- 在过滤栏筛选ARP数据包,攻击机每次扫描前会发送一个ARP请求包,来确定靶机是否活跃,故攻击机请求靶机MAC地址的ARP包可以作为攻击开始的标志
- 第一、二次攻击行为之间攻击机无其他动作,可以判断其只是在进行主机活跃检测,命令是
nmap -sP 172.31.4.188
- 第二次询问后,攻击者发送了很多syn包,靶机也有所回复,看上去是在做端口扫描,但通过观察第二次攻击末尾记录,可以看到攻击者构造了很多带有标志位的包,说明攻击者并不是单纯在做开放端口扫描,而是在做操作系统探测,命令是
nmap -O 172.31.4.188
- 通过观察可以发现第三次攻击发送和接受的包非常多,约13万,这些包几乎全是攻击机发给靶机的syn包及靶机的回复,据数据推算是在做半开扫描,而且是全端口扫描,命令是
nmap -sS -p 1-65535 172.31.4.188
- 第四次攻击对于可以连接的端口进入了更深入的交流,是nmap通过通信在检测靶机开放了什么服务,指令是
nmap -sV 172.31.4.188
- 以
tcp.flags.syn==1 and tcp.flags.ack==1 and ip.src==172.31.4.188
为条件进行筛选,可以发现靶机开放端口有21 22 23 25 53 80 139 445 3306 3632 5432 8009 8180
- 安装p0f ,命令为
apt-get install p0f
- 输入命令
p0f -r listen.pcap
,可以看到攻击机操作系统为Linux 2.6.x
3. 学习中遇到的问题及解决
- 问题1:输入教程命令
snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap
报错
-
问题1解决方案:教程实验较早,安装的snort2版本,现在已更新snort3,一些规则及配置有更新,如配置文件从原来的
.conf
更新为.lua
,命令语句中的console
也不符合新版本要求,从而导致报错,找到原因后将命令改为snort -c /etc/snort/snort.lua -r listen.pcap -A alert_full
,得以解决 -
问题2:修改命令后虽不再报错,但仍未输出扫描数据信息
-
问题2解决方案:以管理员模式打开配置文件,在
5.configure detection
板块对应位置添加语句enable_builtin_rules = true
4. 学习感想和体会
本次实验除了起初网络不稳定,多次联网失败导致迟迟未能开始之外没有遇到很大困难。本科阶段也简单使用过Wireshark抓包工具,但也是一知半解,并没有掌握分析方法,通过这次实践,学会了一些使用技巧,锻炼了分析能力,同时回顾了TCP三次握手协议,在实践中对理论知识以及网络攻击有了更生动的了解,对nmap扫描工具也更加熟悉。此外,在遇到报错时总容易浮躁,这是我需要反思的一点,在网络上搜索解决方案与询问AI都没有解决问题,后来发现是思考角度出了错,关于unknown logger console
问题,一直以为是配置文件中多出了新版本无法识别的语句,不断修改配置文件内容,但都无济于事,最后通过参考其他同学的博客,发现问题出在命令语句上,豁然开朗。
参考资料
Snort 3 Rule Writing Guide - Snort 3 Rule Writing Guide
一文读懂TCP的三次握手(详细图解)_tcp三次握手图解-CSDN博客