1.实验内容
对网站进行嗅探,同时对包进行协议分析
2.实验过程
(1)动手实践tcpdump
将kali服务器设置为桥接模式,同时将虚拟网络编辑器中的Vmnet0中的桥接模式改为自己的网卡。
进入root模式,查询自己的IP地址,输入命令sudo tcpdump -n src 192.168.11.194 and tcp port 80 and "tcp[13] & 18 =2"
进行嗅探。
此处,不知道什么原因,登录www.besti.edu.cn无法抓取任何数据,所以改用www.bilibili.com。
观察发现访问了1个web服务器,IP地址为27.36.126.36.80。
(2)动手实践Wireshark
打开Wireshark,输入命令luit -encoding gbk telnet bbs.fozztexx.com
以telnet方式登录BBS进行抓包。
在wireshark的过滤器直接输入 telnet ,即可过滤显示telnet相关的数据包,通过查看wireshark里面可知其端口号为23,IP地址为50.79.157.209。
抓包发现传递用户名和密码时,是一个字符一个字符传递的。用户名为NEW。
通过追踪tcp流可以发现密码为123456。
(3)取证分析实践,解码网络扫描器(listen.cap)
打开下载好的 listen.pcap,选择菜单栏中的统计->会话,再点击IPv4,可以看到 172.31.4.178 和 172.31.4.188 之间有大量的双向的网络数据包,因此可初步确定这两个是攻击主机IP和网络扫描的目标主机IP。
查看会话数据包内容,发现所有的请求数据包(如TCP SYN包)则是从172.31.4.178发起,所有的响应数据包(如SYN/ACK包)均是从172.31.4.188发出。
攻击主机的IP地址是: 172.31.4.178
网络扫描的目标IP地址是: 172.31.4.188
1.本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
将 listen.pcap 复制到kali虚拟机中,使用snort对二进制记录文件进行入侵检测。
sudo apt-get update // 更新APT库
sudo apt-get install snort // 安装snort
sudo chmod 777 /etc/snort/snort.conf // 给予snort.conf可读可写可执行权限
snort -A console -q -u snort -c /etc/snort/snort.conf -r ~/listen.pcap // -A开启报警模式,-q不显示状态报告,,-u为初始化后改变snort的UID,-c为使用后面的配置文件,进入IDS模式,-r从pcap格式的文件中读取数据包
由于Kali里面安装snort总是失败,尝试多次无法进行,因此根据群内同学的建议,在SeedUbuntu中进行snort的安装并进行分析。
输入命令sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap
进行查看,可以发现本次攻击是使用nmap发起的。
2.你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
扫描前nmap会通过arp更新目标MAC地址,所以使用Wireshark的过滤器扫描出arp包,可以看到共进行4次nmap扫描。
可以看出攻击机第一次nmap扫描和第二次nmap扫描之间没有数据包,则第一次nmap扫描为探测目标IP是否活跃,指令为 nmap -sP 172.31.4.188
nmap扫描原理是基于ping的,因此每次扫描时,nmap会通过ARP来确定目标MAC地址,在wireshark中过滤到四组ARP(从攻击机到目标主机),说明共进行了四次端口扫描。
观察第二次扫描的末尾数据包,发现有大量的TCP协议、ICMP协议、UDP协议数据,并使用了大量构造的标志位,以触发不同的响应包。
猜测该扫描为主动探测操作系统 nmap -O 扫描。Nmap内部包含了2600多种已知操作系统的指纹特征,根据扫描返回的数据包生成一份系统指纹,将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的操作系统。如果无法匹配,则以概率形式列举出可能的系统。
第三次ARP后均为TCP协议数据,并且数据量庞大(从2071排到了133219),可以看到在数据包中存在大量SYN请求包,通过过滤器搜索 tcp
可以看到序号9、10、13是一组半开放扫描,使用不完整的tcp三次握手来对目标主机进行尝试性的连接,攻击主机的57738号端口对目标ip的3306号端口发送SYN包,目标ip的3306号端口开放,返回一个 TCP SYN & ACK 包,然后攻击主机发送一个 RST 包停止建立连接。这是典型的半开放扫描(TCP SYN 扫描),下面红色和蓝色框框中的也是类似,分别监测出目标主机的23号端口、80号端口和139号端口开放。
再看绿色框框中,攻击主机对目标机的955号端口发送了SYN包,该端口返回一个 TCP RST & ACK 包,说明该端口关闭。
猜测以扫描的指令可能为 nmap -sS -p 1-65535 172.31.4.188
进行TCP SYN全端口扫描。
第四次ARP后,不仅有TCP协议数据,还有HTTP、TELNET、SMB应用层协议的数据。
在TCP的端口中,某些端口是确定的,比如22号端口用于ssh登录。以22号端口为例使用过滤器命令为 tcp.port == 22
。
发现除了建立TCP SYN扫描,还建立了ssh连接,这是为了探测靶机的网络服务,于是猜测攻击机对靶机进行了 -sV 的版本扫描。
3.在蜜罐主机上哪些端口被发现是开放的?
通过过滤器的 tcp.flags.syn == 1 and tcp.flags.ack == 1
可以过滤出SYN | ACK的数据包,这是目标主机反馈攻击主机的端口活跃信息。可查看靶机的开放端口有:21 22 23 25 53 80 139 445 3306 5432 8009 8180
4.攻击主机的操作系统是什么?
使用p0f工具,p0f是一款被动探测工具,能够通过捕获并分析目标主机发出的数据包来对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙的情况下也没有问题。
在终端先输入 sudo apt-get install p0f
安装p0f,再输入 sudo p0f -r listen.pcap
探测,得知版本为linux 2.6.x。
3.学习中遇到的问题及解决
- 问题1:kali服务器连不上网
- 问题1解决方案:将其网络适配器改为桥接模式,并将虚拟网络编辑器中的VMnet0中的桥接模式改为自己的网卡
- 问题2:kali下载snort有问题
- 问题2解决方案:改用Ubuntu。
4.学习感悟、思考等)
通过本次实验了解了tcpdump的一些命令,并通过Wireshark进行listen.pcap包的过滤。但还是对Wireshark的一些命令不够熟悉,应加强学习。