一.实验要求
(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地址是什么?
本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
在蜜罐主机上哪些端口被发现是开放的?
攻击主机的操作系统是什么?
二、实验过程
1、动手实践tcpdump
将kali-Linux虚拟机网络模式改变为桥接模式
查询本机ip为192.168.137.118
输入命令sudo tcpdump -n src 192.168.137.118 and tcp port 80 and “tcp[13]&18=2”
在浏览器中访问www.tianya.cn 监听结果进行分析
然后通过"nslookup tianya.cn"命令查看www.tianya.cn对应的IP地址,验证我们tcpdump的正确性。124.225.206.22
2、动手实践Wireshark
打开kali虚拟终端,输入 luit -encoding gbk telnet bbs.fudan.edu.cn访问复旦大学BBS服务器,发现其ip地址为202.120.225.9
发现复旦大学BBS的ip为202.120.225.9
本地打开wireshark,并开启捕获
以ip地址为条件筛选
发现其端口为23
发现TELNET协议是以字节为单位传递用户名和密码的
通过追踪TCP流发现用户名GUEST
3、取证分析实践,解码网络扫描器(listen.cap)
将下载好的listen.pcap复制到kali虚拟机中
并用wireshark打开
选择菜单栏中Statistics(统计)下的Conversation(会话) 选择IPV4
可以看出只有172.31.4.178和172.31.4.188之间有大量的双向网络数据包
因此可初步确定两者为攻击主机IP和目标主机IP
再选择过滤TCP数据包,查看会话数据包内容
所有的请求数据包则是从172.31.4.178发起,响应数据包均是从172.31.4.188发出
所以攻击主机的IP地址是: 172.31.4.178
网络扫描的目标IP地址是: 172.31.4.188
使用snort进行入侵检测
输入命令sudo apt-get update和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命令对listen.pcap文件进行分析
可以发现本次攻击是使用nmap发起的
扫描前nmap会通过arp更新目标MAC地址,攻击机在广播域中广播arp request报文,寻找目标IP地址为172.31.4.188的主机的MAC地址,所以使用Wireshark的过滤器扫描出arp包
可以看到共进行4次nmap扫描
第一次nmap扫描和第二次nmap扫描之间没有数据包,则第一次nmap扫描为探测目标IP是否活跃
用过滤器筛选出ICMP包,可以看到两组ICMP request包和ICMP replay包,说明使用了主机扫描,并且确定了目标主机是活跃的
第三次ARP后均为TCP协议数据,并且数据量庞大,可以看到在数据包中存在大量SYN请求包,说明攻击机的57738端口向目标主机发起了TCP SYN扫描,以确定目标主机的哪些端口开放,开放的端口则回复SYN|ACK数据包,不活跃的端口则回复RST|ACK数据包
可以看到序号9、10、13是一组半开放扫描,使用不完整的tcp三次握手来对目标主机进行尝试性的连接,攻击主机的57738号端口对目标ip的3306号端口发送SYN包,目标ip的3306号端口开放,返回一个 TCP SYN & ACK 包,然后攻击主机发送一个 RST 包停止建立连接。
输入过滤条件:tcp.flag.syn == 1 and tcp.flags.ack==1,则可以过滤出所有的SYN|ACK的数据包,这是目标主机反馈攻击主机的端口活跃信息,即可得到所有的开放端口
可以看到开放了21,22,23,25,53,80,139,445,3306,3632,5432,8009,8180端口
使用p0f分析攻击机的操作系统
输入sudo apt-get install p0f安装p0f工具,再输入命令sudo p0f -r listen.pcap对文件进行分析,得到结果为Linux 2.6.X
三、学习中遇到的问题及解决
安装snort不成功
原因:源中不包含snort
解决方法:更换源
输入
打开sources.list 文件
用#把默认官方源注释掉,添加正确的源
deb http://http.kali.org/kali kali-rolling main contrib non-free
deb http://http.kali.org/kali sana main non-free contrib
deb http://security.kali.org/kali-security sana/updates main contrib non-free
deb http://old.kali.org/kali moto main non-free contrib
再执行sudo apt-get update和sudo apt-get install snort即可安装成功
四、学习感想和体会
通过本次实验,了解了网络嗅探与协议分析的基本原理和方法,熟悉了各种分析工具的使用,加深了我对传输协议及其工作流程的理解,同时对海量报文的过滤和分析比较繁琐,需要一定的耐心。