20212931 2021-2022-3 《网络攻防实践》第三次实验任务
实践三 网络嗅探与协议分析
一、实验内容
(一)原理
- 网络嗅探
简介:指利用计算机的网络接口截获其它计算机的数据报文的一种手段。
常见类型:共享式网络嗅探(集线器)、交互式网络嗅探(MAC地址映射表)、类Unix网络嗅探技术实现(内核态的BPF和用户态的libpcap抓包工具库)、Windows网络嗅探技术实现
网络嗅探器:一般基于标准接口BPF和libpcap,最常用包括libcap抓包开发库、tcpdump以及wireshark嗅探器软件(类Unix平台和Windows平台)。 - 网络协议分析
定义:为了获取网络嗅探所截获的,经过封包过程组装的,二进制格式原始报文内容中的内部信息,根据TCP/IP协议栈的协议规范重新还原数据包在各个协议层上的协议格式及内容。
步骤:1.网络嗅探得到的原始数据是在链路层传输的二进制数据包。
2.对帧结构进行分析,得到帧头各字段结构,根据帧头字段确定网络层的协议类型,并提取包含网络层数据的内容。
3.进一步对IP数据包进行分析,确定传输层协议类型,提取传输层数据内容。
4.根据TCP或UDP目标端口确定确定具体的应用层协议,得到应用层特定协议的应用交互内容。
5.依据相应应用层协议对数据进行整合恢复,得到实际传输数据。
(二)要求
- 动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探
回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么? - 动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析
回答如下问题并给出操作过程:a.你所登录的BBS服务器的IP地址与端口各是什么?
b.TELNET协议是如何向服务器传送你输入的用户名及登录口令?
c.如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令? - 取证分析实践,解码网络扫描器(listen.cap)
a.攻击主机的IP地址是什么?
b.网络扫描的目标IP地址是什么?
c.本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
d.你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
e.在蜜罐主机上哪些端口被发现是开放的?
f.攻击主机的操作系统是什么?
二、实验过程
(一)tcpdump
- 利用tcpdump使用命令tcpdump -n src [主机地址] and tcp port 80 and tcp[13] = 2 or tcp[13] = 18监听默认网卡
- 其中-n表示对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。
- tcp[13] = 2 or tcp[13] = 18筛选SYN和SYN-ACK数据包
- 由图可知,访问了以下WEB服务器
124.225.206.22.80
111.206.209.249
124.225.214.206
124.225.214.214
18.224.230.138(亚马逊云服务器,一度让我怀疑人生)
124.225.206.22
(二)wireshark
入侵检测
- 打开wireshark捕获eth0的数据包
- 利用命令行访问复旦大学BBS服务器(水木清华已然不对外开放,昔日的辉煌无法得见)
- 通过捕获的数据包可以得知ip和端口
- 使用guest默认登录,利用wireshark的tcp流追踪,便可以找到完整的用户名口令及其传输过程,重复传输两次数据
(三)取证分析
- 首先利用snort对记录文件进行入侵检测
- 安装:sudo apt-get install snort并给予权限sudo chmod 777 /etc/snort/snort.conf
- 运行指令查询(-A是开启报警模式,-q为不显示状态报告,-r为从pcap格式的文件中读取数据包)(Wireshark导入文件后利用统计conversations也可观察)
- 可知:172.31.4.178 扫描了 172.31.4.188,利用nmap扫描
协议分析
- 1.nmap常用扫描技术
目前确定了工具为nmap,想要在庞大的数据流中找到扫描位置,就要了解nmap几种常见的扫描技术原理
Tcp SYN Scan (sS):半开放扫描,Nmap发送SYN包到远程主机,不产生任何会话。
Tcp connect() scan(sT):Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect()。Tcp connect()扫描技术只适用于找出TCP和UDP端口。
Udp scan(sU):发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的。
PING Scan (sP):只用于找出主机是否是存在在网络中,PING扫描需要ROOT权限,如果用户没有ROOT权限,PING扫描将会使用connect()调用。
版本检测(sV):扫描目标主机和端口上运行的软件的版本,使用版本检测扫描之前需要先用TCP SYN扫描开放了哪些端口,从开放的端口获取信息来判断软件的版本。
OS检测(O):远程检测操作系统和软件,把TCP和UDP数据包发送到目标机器上,然后检查结果和数据库对照。 - 2.分析
根据之前对攻击机和靶机IP的确定,在wireshark中筛选ARP(nmap每次探测主机活跃是在广播域内广播arp request报文,而nmap每次扫描之前都会进行主机活跃探测),即可确定一共四次扫描。
因为第一次和第二次扫描直接没有数据包交互,可以确定第一次是采用nmap -sP进行主机活跃探测。
定位第二次扫描数据包的开始
观察后续数据包,可以发现很多SYN数据包被发送,但仍无法确认具体扫描类型
定位第二次扫描数据流末尾,观察到很多对端口1的数据包,异常,且使用了大量构造的标志位,以触发不同的响应,由此可以确定扫描类型nmap -O
观察第三次扫描,发现往返数据包量为13W,同时浏览其中的数据包类型,大多为SYN标志,对各类不同端口,不产生任何会话,由此猜测,折半,对65535端口的全扫描,具体命令nmap -sS -p 1-65535
对于最后一次扫描,扫描时间远长于其他扫描,猜测可能是-sV服务探测或者-A全局扫描,具体进一步查找,SYN标志的半开扫描,筛选端口8180(http),建立连接,确定nmap -sV
确定开放端口,则筛选SYN和SYN.ACK标志位即可tcp.flags.syn == 1 and tcp.flags.ack == 1,而且基于之前第三次扫描确定为全端口扫描,检索在第三次扫描数据流中即可。
确定操作系统利用被动探测工具p0f,它能够通过捕获并分析目标主机发出的数据包来对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙的情况下也没有问题。(别忘记安装)
三、实验体会
本次实验是对简单的网络嗅探和被动检测分析的验证,难点在于分析环节,不仅需要对扫描和攻击的原理足够清晰,同时需要一定的网络架构与协议基础知识,刚开始在海量的数据包内检索完全找不到头绪,在重造了自己的网络知识后,才找到规律,但对更进一步的数据包结构分析仍需要学习,路漫漫其修远兮,吾将上下而求索。