20212928 2021-2022-2 《网络攻防实践》第5周作业
一、 实验内容与原理
1.网络嗅探
(1)网络嗅探技术定义:
网络嗅探是一种黑客常用的窃听技术。与传统的电话窃听相类似,网络嗅探利用计算机的网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密信息等。
实现网络嗅探技术的工具称为网络嗅探器。嗅探器捕获的数据报文是经过封包处理之后的二进制数据。因此,通常会结合网络协议分析技术来解析嗅探到的网络数据,这样才能恢复出TCP/IP协议栈上各层网络协议的内容。以及实际发送的应用程序信息。
网络嗅探技术的分类,按照所监听的链路层网络分为:以太网和Wi-Fi
网络嗅探器分为:有线嗅探器和“有线”嗅探器;
网络嗅探器(按实现形式)分为:软件嗅探器和硬件嗅探器
(2)网络嗅探的原理与实现
以太网工作原理介绍:以太网通过使用CSMA/CD协议的共享通信信道进行消息传输。以太网中的数据以帧为单位,将上层的数据包装配上帧头和帧尾,通过MAC地址匹配数据包的目标。当网卡处于混杂模式下,能够接受一切通过它连接的以太网络的数据帧。
以太网在部署局域网时分为共享式网络与交换式网络。共享式网络使用集线器连接;交互式网络使用交换机组件,数据通过交换机转发。
集线器的工作模式决定了同一集线器上连接的所有主机在发送数据包时,都会发往每一台主机,因此任一主机都能嗅探整个集线器上的全部网络流量。
交换机对每一个收到的数据帧根据映射表进行转发处理,发送至特定端口。这种方式可以减少网络被嗅探的风险。不过还是可以通过以下三种方式嗅探:1)MAC地址洪泛攻击 2)MAc地址欺骗 3)ARP欺骗
(3)使用工具
类Unix平台下的嗅探软件:libpcap抓包开发库、tcpdump、wireshark和dsniff、sniffit等等
windows平台下的嗅探软件:wireshark、snifferPro等等
(4)防范措施
采用安全的网络拓扑:对网络进行合理的分段,从而尽量使网络包只被转发到目标主机上。对网段分段越细,网络嗅探能够搜集到的信息就越少。
用静态ARP或MAC-端口映射表代替动态机制:通过在重要的主机或网关上设置静态的ARP对应表,以及在交换机上设置静态的MAC-端口映射表,能够防止利用MAC地址欺骗、ARP欺骗。
重视网络数据传输集中位置点的安全防范,如网关、路由器和交换机等。
避免使用明文传输口令或敏感信息的网络协议:使用安全性强的网络协议进行替代。
2.网络协议分析
(1)原理
对网络上传输的二进制数据包进行解析,以恢复出各层网络协议信息以及传输内容的技术方法。
网络协议分析技术的具体流程:
1)通过嗅探得到链路层传输的二进制数据包(大多是以太网数据帧)
2)对以太网帧进行结构分析确定网络层协议类型并提取数据帧包含的网络层数据内容
3)进一步对IP数据包进行分析,确定传输层协议类型,并提取IP数据包中的传输数据内容
4)然后根据TCP或UDP端口确定具体的应用层协议,并对TCP或UDP数据包重组,得到应用层特定协议的应用交互内容。
5)最后依据相应的应用层协议对数据进行整合恢复,得到实际传输数据。
(2)技术的实现
在开源的软件如tcpdump、wireshark、snort中都有相应源码实现。
Snort网络协议分析处理过程如下:1)解析以太网数据帧 2)解析IP数据包 3)解析TCP数据包
上述的三个解析过程都可以分为三个部分:1)预处理 2)拆包 3)解析
wireshark主要作用是捕获网络数据包,对数据包进行协议分析以尽可能地显示详细的情况,并以更容易被理解的格式呈现给用户。
二、 实验要求
1.动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
2.动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
(1)你所登录的BBS服务器的IP地址与端口各是什么?
(2)TELNET协议是如何向服务器传送你输入的用户名及登录口令?
(3)如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
3.取证分析实践,解码网络扫描器(listen.cap)
(1)攻击主机的IP地址是什么?
(2)网络扫描的目标IP地址是什么?
(3)本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
(4)你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
(5)在蜜罐主机上哪些端口被发现是开放的?
(6)攻击主机的操作系统是什么?
三、 实验过程
1. 动手实践tcpdump
1)打开kali,将虚拟机设置为桥接模式
2)在Kali中查看本机IP地址为192.168.11.45,如下图:
3)在kali虚拟机的终端输入sudo tcpdump -n src 192.168.11.28 and tcp port 80 and "tcp[13] & 18 =2",
4)然后浏览器访问网站:www.tianya.cn,,嗅探到的结果如下:
5)在浏览器访问网站后,出现4个Web服务器,IP分别为117.18.237.29, 124.225.135.230,124.225.206.22,124.225.69.77,
6)通过nslookup tianya.cn查看,确认了天涯的IP地址。所以上述四个地址中,124.225.206.22是www.tianya.cn对应的IP地址
2. 动手实践Wireshark
1)在终端输入luit -encoding gbk telnet bbs.fudan.edu.cn 访问复旦大学BBS服务器,结果如下,之后注册用户名pcl
但发现用户名已经被注册,所以重新注册名为pclpcl,密码为123456
2)本地打开wireshark,如图,开启捕获,如下图所示,我所登录的BBS服务器的IP地址是202.120.225.9,端口是23
3)我们可以用如下方式获取用户名和口令:在wireshark中输入telnet的过滤条件,之后我们便可以看到用户名和密码是逐个输入的,还可以发现,密码中每个字符之间还会加上*号,用户名之间的传送也是加了一些符号的。
由于用户名是三次连续的pcl,这里就只截取了一次,接下来是密码
当然每个数字之间还会有*,如下图
3. 取证分析实践,解码网络扫描器(listen.cap)
1) 首先,下载云班课上分享的listen.pcap,并将其移动到虚拟机中,用wireshark打开待分析的二进制记录文件,使用菜单栏中Statistics(统计)下的Conversation(会话),选择IPV4得到如下图:
由上图,172.31.4.178与172.31.4.188互相发送了大量的数据包,可以初步确定攻击者与被攻击者的IP在二者之间。
2)再选择过滤TCP数据包,查看会话数据包内容,如下图,
ACK定义即确认字符,表示接收到的字符无错误。接收站对所收到的报文进行检查,若未发现错误,便向发送站发出确认回答ACK,表明信息已被正确接收,并准备好接收下一份报文,同时,下图tcp数据包的分析可以看出,172.31.4.188基本发送的都是ACK确认包,可以推测出此ip为目标主机,而172.31.4.178为攻击主机的IP地址。
因此,攻击主机的IP地址为:172.31.4.178,网络扫描的目标IP地址:172.31.4.188
3)通过snort工具解析wireshark的pcap文件,
不行,因此需要先进行更新,
但是发现一些日志文件下载失败,重新下载,
4)更新完之后进行安装
5)之后,在终端输入命令sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap
经查询可知其中参数意义:
-A 设置报警模式
-q 安静模式,不显示标志和状态报告
-u 初始化后改变Snort的UID
-c 使用配置文件,这会使得snort进入IDS模式,并从中读取运行的配置信息
-r 从pcap格式的文件中读取数据包
之后,使用snort对数据包分析sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap但发现出错了,
原因是listen.pacp是没放到home文件夹里去,放进去之后再次输入命令,从下图可知本次攻击是nmap发起的端口扫描,通过snort工具可以得知。
攻击IP地址为172.31.4.178,靶机IP地址为172.31.4.188
6)由于nmap通过ARP确定MAC地址的,所以以ARP条件进行过滤,出现四个攻击开始的标志,因为在每次扫描之前,nmap会通过ARP更新目标MAC地址,可以看到攻击机和靶机之间有4组数据包,所以进行了4次扫描。
7)以ICMP为条件过滤发现,有攻击机和靶机之间的双向数据包,说明进行了ICMP ping扫描,即 nmap -sP 172.31.4.188。
8)以TCP条件进行过滤,我们可以观察到进行了大量的TCP扫描,如下图可以看到攻击机向靶机发送SYN请求包,靶机返回SYN,ACK确认连接,攻击机响应,说明该端口开放,所以攻击机进行了nmap -sS 172.31.4.188 扫描。
9)之后,我们在将过滤条件改为端口53,即输入tcp.port==53的口令,如下图,观察该端口的数据包发现攻击机和靶机之间建立了TCP和DNS连接用以探测网络服务,所以攻击机对靶机进行了nmap -sV 172.31.4.188的版本检测扫描。
10) 紧接着,我们将过滤条件改为端口1,如下图,我们可以观察发现攻击机发送了大量的SYN触发响应包,目的是探测靶机操作系统。攻击机使用nmap -o 172.31.4.188探测靶机操作系统,原理是发送探针数据包获取目标主机的响应数据包,分析操作系统的"指纹"从而确定操作系统,这些探针数据包可以利用TCP、UDP、ICMP等协议发现操作系统之间的差别。
11)然后,我们在筛选器中输入tcp.flags.syn == 1 and tcp.flags.ack == 1进行过滤,得到SYN,ACK数据包,即攻击机扫描后即靶机反馈的端口活跃相关信息。如图,可以确定21,22,23,25,53,80,139,445,3306,3632,5432,8009,8180这几个端口是活跃的。
11) 最后一步,我们在终端输入apt-get install p0f 安装P0f,安装完毕后输入命令p0f -r /home/kali/Desktop/listen.pcap 探测到攻击机的操作系统为:linux 2.6.x ,如下图:
四、 学习中遇到的问题及解决
1. 问题1:当我直接用snort工具解析wireshark的pcap文件,发现并不能用,原因是需要先更新,更新的过程中又失败了,如下图
解决:可能在地下网的问题,回头在实验室可以成功进行更新
2. 问题2:使用snort对数据包分析sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap但发现出错了,如下图:
解决:将listen.pcap没有放到home文件夹下,将其放入后,即可解决该问题。
五、学习感悟、思考
通过本次实验,我了解了关于网络嗅探的定义、原理以及所使用的工具,重温了三次握手协议,对wireshark的使用更为熟练,当然,在实验过程中,我还出现了许许多多的小问题,但是最后经过查询以及询问同学都将其一一解决,也有了一定的成就感。