20212818 2021-2022-2 《网络攻防》第三次作业
一、实验内容
1、网络嗅探
1.1 网络嗅探定义
网络嗅探技术是一种常用的窃听技术,利用计算机的网络接口截获并监听数据流中所包含的隐私信息。
嗅探技术按照链路可以分为:有线局域网和无线局域网嗅探技术;也可以按照实现方式分为:软件嗅探器和硬件嗅探器。
1.2 网络嗅探原理
网络嗅探技术是一把双刃剑,即可用于攻击者进行攻击,也可用于防御者进行检测。网络嗅探技术可以按照所监听的网络链路层网络进行分类,分为有线局域网和无线局域网两种。网络嗅探器按照实现方式也可以分为硬件和软件嗅探器两种。下面介绍有线局域网链路层协议——以太网为例,对网络嗅探技术的基本原理做简要介绍。
网络嗅探按照其定义可知其是用于对网络中传输的数据进行捕获,因此我们先了解下以太网的基本工作原理以便更好理解网络嗅探。以太网是共享信道,采用CSMA/CD(载波监听/冲突检测技术)。在以太网共享通信媒介中,网络上的站点采用广播方式因此计算机能够接收到在共享媒介上发送给其他计算机的信息。以太网数据以帧为数据单位进行传输,传输时需要加上帧头。在网卡收到以太网共享媒介上传输的数据时,如果网卡驱动程序设置为混杂模式,则其能够接收到一切通过它连接共享通信媒介的数据帧,这就可用于网络嗅探。
1.3 嗅探器
嗅探器(Sniffer)最初是作为网络管理员检测网络通信的一种工具。在局域网中,由于以太网的共享式特性决定了嗅探能够成功。因为以太网是基于广播方式传送数据的,所有的物理信号都会被传送到每一个主机节点,此外网卡可以被设置成混杂接收模式,这种模式下,无论监听到的数据帧目的地址如何,网卡都能予以接收。而 TCP/IP 协议栈中的应用。协议大多数明文在网络上传输,这些明文数据中,往往包含一些敏感信息(如密码、账号等),因此使用 Sniffer 可以悄无声息地监听到所有局域网内的数据通信,得到这些敏感信息。同时 Sniffer 的隐蔽性好,它只是“被动”接收数据,而不向外发送数据,所以在传输数据的过程中,根本无法觉察到有人监听。当然,Sniffer 的局限性是只能在局域网的冲突域中进行,或者是在点到点连接的中间节点上进行监听。在交换网络中,虽然避免了利用网卡混杂模式进行的嗅探。但交换机并不会解决所有的问题,在一个完全由交换机连接的局域网内,同样可以进行网络嗅探。主要包括以下三类:
(1)、MAC洪水
交换机要负责建立两个节点间的“虚电路”,就必须维护一个交换机端口与 MAC 地址的映射表,这个映射表是放在交换机内存中的,但由于内存数量的有限,地址映射表可以存储的映射表项也有限。如果恶意攻击者向交换机发送大量的虚假 MAC 地址数据,有些交换机在应接不暇的情况下,就会像一台普通的 Hub 那样只是简单地向所有端口广播数据,嗅探者就可以借机达到窃听的目的。当然,并不是所有交换机都采用这样的处理方式,况且,如果交换机使用静态地址映射表,这种方法就失灵了。
(2)、MAC复制
MAC 复制实际上就是修改本地的 MAC 地址,使其与欲嗅探主机的 MAC 地址相同,这样,交换机将会发现,有两个端口对应相同的 MAC 地址,于是到该 MAC 地址的数据包将同时从这两个交换机端口发送出去。这种方法与后面将要提到的 ARP 欺骗有本质的不同,前者是欺骗交换机,后者是毒害主机的ARP 缓存而与交换机没有关系。 但是,只要简单设置交换机使用静态地址映射表,这种欺骗方式也就失效了。
(3)、ARP欺骗
按照 ARP 协议的设计,为了减少网络上过多的 ARP 数据通信,一台主机,即使受到的 ARP 应答并非自己请求得到的,它也会将其插入到自己的 ARP 缓存表中,这样,就造成了“ARP 欺骗”的可能。如果黑客想探听同一网络中两台主机之间的通信,他会分别给这两台主机发送一个 ARP 应答包,让两台主机都“误”认为对方的 MAC 地址是第三方的黑客所在的主机,这样,双方看似“直接”的通信连接,实际上都是通过黑客所在的主机间接进行。黑客一方面得到了想要的通信内容,另一方面,只需要更改数据包中的一些信息,成功地做好转发工作即可。在这种嗅探方式中,黑客所在主机是不需要设置网卡的混杂模式的,因为通信双方的数据包在物理上都是发给黑客所在的中转主机的。
1.4 网络嗅探工具
类UNIX工具:tcpdump、wireshark
Windows工具:windump、wireshark、SnifferPro
1.5 网络嗅探的检测与防范
网络嗅探检测:同一主机上,可以通过检查网卡是否运行在混杂模式下,来发现正在监听的嗅探器。许多版本的linux内核只检查数据包中的IP地址以确定是否送到IP协议栈,因此可以构造MAC地址无效而IP。
网络嗅探防范:采取一系列措施达到减少或消除网络嗅探对网络数据所造成的安全危险。以下为四种措施:
(1)、使用安全的网络拓扑,尽量将共享式网络升级为交换式网络。
(2)、用静态ARP或者MAC-端口映射表代替动态机制,能够防范MAC地址欺骗、ARP欺骗等。
(3)、重视网络数据传输的集中位置点的安全防范。比如网关、路由器、交换机等重要区域。
(4)、避免使用明文传输口令或敏感信息的网络协议,使用加密及安全增强的网络协议。
2、网络协议分析技术原理
对网络上传输的二进制格式数据包进行解析,以恢复出各层网络协议信息以及传输内容的技术方法。网络协议分析技术的具体流程:通过嗅探得到链路层原始二进制数据包、对以太网帧进行结构分析、对IP数据包进行分析、确定具体的应用层协议、对数据进行整合恢复,得到实际传输数据。
二、实验过程
任务一、动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
1、首先查询本机的IP地址
我直接输入ifconfig就可查询
2.使用FireFox浏览器输入天涯的链接www.tianya.cn
3、输入命令tcpdump host www.tianya.cn后,打开firefox浏览器随便浏览一下,终端窗口则会出现数据,可以看到主机一直在和且只和IP地址为124.225.206.22的网站进行数据交换,这个IP地址就是www.tianya.cn的IP地址,则证明tcpdump已抓取到天涯的数据包。
任务二、动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
1、你所登录的BBS服务器的IP地址与端口各是什么?
2、TELNET协议是如何向服务器传送你输入的用户名及登录口令
3、如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令
1、kali中本身有wireshark,点击所有程序中的嗅探与欺骗, 打开wireshark,然后在终端中输入命令
2、到wireshark查看网络动态,在filter框过滤只显示telnet协议的数据,我们发现它的ip地址是202.120.225.9,端口号是23
4、在终端命令输入guest,作为试用进入
4、这时候切换至wireshark, 右击202.120.225.9,选择追踪流中的TCP
可以看到密码为guest
将该页面左下角的“整个对话”替换为如下图所示,则显示下面的密码,更为清楚
任务三、取证分析实践,解码网络扫描器(listen.cap)
1、攻击主机的IP地址是什么?
2、网络扫描的目标IP地址是什么?
3、本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
4、你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
5、在蜜罐主机上哪些端口被发现是开放的?
6、攻击主机的操作系统是什么
用wireshark打开listen.pcap
为了找出重点,我们筛选ipv4,
选择“统计-->IPV4 statistics-->All Addresses”
我们会发现流量主要是集中在两个地址172.4.31.178
和172.4.31.188
之间,接下来要做的就是找出谁是源地址,谁是目的地址,从上图可知发送SYN的一方是172.4.31.178
(TCP协议三次握手中发送此标志位的即为源地址), 我们发现攻击机的ip是172.31.4.178
,网络扫描的ip是172.31.4.188
安装snort:sudo apt-get install snort
使用命令sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r ./listen.pcap(其中listen.pcap在桌面上),查询结果如下(本文用到的
-A
是开启报警模式,-q
为不显示状态报告,-r
为从pcap格式的文件中读取数据包)。
在每次扫描前,nmap会通过arp更新目标MAC地址,因此过滤文件的arp包如下图,不难看出一共进行了4次nmap扫描,扫描的起点分别是5,7,2071和133220。其中第一次和第二次之间没有数据包,所以第一次作为ARP的单独扫描,也就是使用nmap -sp命令判断网段中活跃的主机
判断第二次nmap扫描使用的命令。将抓包过程挪到第二次扫描的末端,可以看到攻击机在UDP、TCP、SSH端口上使用了大量标志位。由此可知,第二次扫描使用了namp -o
。
判断第三次nmap扫描使用的命令。在这次扫描过程中往返数据包相差很大(13w多),我们预测是采用了全局端口扫描,所以应该是使用namp -sS
命令进行TCP SYN所有端口的扫描。
判断第四次nmap扫描使用的命令。我们发现第四次扫描的时间都要高于之前扫描的时间,所以我们也可以猜测是namp -sV
进行网络服务的探测。具体来看下,我们筛选8180
端口(http)。我们发现普通的活跃性检测就是半开扫描,SYN->SYN,ACK->RST
,但是我们观察第四次扫描,建立了握手,并且建立了HTTP连接,说明这次扫描应该是namp -sV
。
接下来确定端口。通过筛选tcp.flags.syn == 1 and tcp.flags.ack == 1
,得到开放的端口有:21 22 23 25 53 80 139 445 3306 5432 8009 8180
接下来确定操作系统。首先用sudo apt-get install p0f安装p0f,然后在终端输入命令p0f -r listen.pcap
进行探测得到结果如下,是Linux 2.6.X。
三、学习中遇到的问题及解决
问题1:在安装snort时,因为kali版本太老的原因尝试多次都安装不成功,会出现kali只有命令行界面的结果。
解决:安装了新版本的kali,snort成功安装。
问题2:在新版本kali上安装snort时,最初也不成功。
解决:后面发现是网络原因,先将kali改为桥接模式,并且换源,从而成功安装。安装后再换回局域网进行后续实验。
四、学习感悟
1、本次主要学习与运用了网络嗅探与协议分析的相关技术手段,用到一些新的软件包括tcpdump和snort,掌握到了新的知识,同时通过wireshark对不同数据包进行分析,对wireshark的运用也更加熟练。
2、对网络攻防的知识掌握比上周做实验时要更清晰一些,但掌握地也并不透彻,需要进一步消化吸收与运用。