20212813 2021-2022-2 《网络攻防实践》第三周作业

一、实验内容

1、网络嗅探

网络嗅探是一种黑客常用的窃听技术,与传统的电话窃听在电话线路上对特定号码的通话内容进行监听类似,网络嗅探利用计算机的网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密信息等。实现网络嗅探技术的工具称为网络嗅探器,本次实验使用到的嗅探器有:

  • TCPDump:TCPDump可以将网络中传送的数据包完全截获下来提供分析,是一款强大的网络抓包工具,它使用 libpcap 库来抓取网络数据包,这个库在几乎在所有的 Linux/Unix 中都有
  • Wireshark:Wireshark是一款网络封包分析软件,,能够截取网络封包,并尽可能显示出最为详细的网络封包资料。

2、网络协议分析

网络协议分析是网络嗅探器进一步解析与理解捕获数据包必需的技术手段。本次实验中大多根据TCP流量的目标端口、连接方式等确定攻击方式、采用的攻击手段和攻击方信息等。

二、实验过程

1、动手实践tcpdump

使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?

tcpdump是一款强大的网络抓包工具,它使用 libpcap 库来抓取网络数据包,这个库在几乎在所有的 Linux/Unix 中都有。

为了方便直接使用Kali上自带的tcpdump,需要将Kali的网路配置改为桥接模式。桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。相当于虚拟机和物理机在同一局域网下,这样可以让Kali监听本机网络流量。
修改桥接模式之后需要在虚拟网络编辑器下将桥接模式桥接至相应网络(这里本机连接的以太网,如果使用的WIFi则需要连接至相应的网络名称,可在网络适配器中查看):

修改之后可以看到现在主机和虚拟机在同一网段下:

在kali下使用命令sudo tcpdump src 172.16.43.243 and tcp dst port 80进行数据包捕获,在本地主机上访问www.tianya.cn网站,捕获结果如下图所示,可以看到主要访问的有124.225.206.22、124.225.69.77、124.225.135.230、124.225.214.206四个web服务器


此外通过使用Fiddler对访问www.tianya.cn网页产生的流量进行捕获,如下图所示,可以更加清楚的看到访问各个服务器都是要获取什么样的资源数据:

2、动手实践Wireshark

使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:

你所登录的BBS服务器的IP地址与端口各是什么?
TELNET协议是如何向服务器传送你输入的用户名及登录口令?
如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?

本次实验登录的BBS服务器为复旦的BBS服务器,其网址为bbs.fudan.edu.cn,通过使用nslookup命令可以知道对应的IP地址为202.120.225.9,使用的端口为23号端口(提供telnet服务):

在本地主机命令提示符上使用telnet进行登录telnet 202.120.225.9,同时使用Wireshark捕获数据包:

为了更清楚的查看TELNET协议的运作方式以及使用Wireshark进行分析,开启kali的telnet服务,在本地主机上使用telnet登录kali用户,如下图所示:

kali的IP地址为192.168.11.224,服务端口为23号端口:

telnet的交互需要使用一系列的指令或字符来进行协商或通信,点开一个telnet数据包,可以看到命令的交互和需要显示的字符数据:


输入用户名和密码之后,通过追踪流,可以看到完整的telnet交互数据,其中就包括刚刚登录提交的用户名和密码:

3、取证分析实践,解码网络扫描器(listen.pcap)

(1)攻击主机的IP地址是什么?
(2)网络扫描的目标IP地址是什么?
(3)本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
(4)你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
(5)在蜜罐主机上哪些端口被发现是开放的?
(6)攻击主机的操作系统是什么?

(1)基本分析

对于网络流量包listen.pcap,可以使用Wireshark打开,点击统计->converstations 可以查看每个TCP连接的流量,如下图所示,其中IP地址为172.31.4.178的主机对172.31.4.188的主机的TCP连接占了绝大部分(细看数据包,其中多是由A对B发起连接),由此我们可以推测攻击的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命令对网络包进行分析,可以发现本次攻击是由Nmap发起的:

(2)具体分析

首先我们使用Wireshark过滤器扫描出每次扫描的开始数据包,通过查找资料我们知道,在每次扫描之前,Nmap会通过ARP协议更新目标MAC地址,因此,我们过滤出所有的ARP包,因为我们已经知道了攻击IP(172.31.4.178)和靶机IP(172.31.4.188),所以一共存在四次扫描,如下图所示:

第一次扫描

第一次扫描只有一个ARP包,因此可以得知,第一次扫描是通过ARP包判断目标主机状态,为ping扫描,参数为-sP

ping扫描,Nmap在扫描端口时,默认都会使用ping扫描,只有主机存活,Nmap才会继续扫描

第二次扫描

通过查看第二次扫描过程中的数据包(7~2068),可以看到从9到2026一直在使用SYN扫描检查端口是否开放,从2027开始到2068,出现了不一样的扫描包形式,如下图所示:

通过这些包可以确定本次扫描为操作系扫描,命令参数为-O,参考我之前写的这篇博客,这里我再次分析一遍这五个步骤:

  • 序列生成:序列生成测试由六个数据包组成,这六个包是每隔 100 毫秒分开发送的,且都是 TCP SYN 包。每个TCP SYN包的结果将有助于 NMAP 确定操作系统的类型。如下图所示,Nmap向目标主机开放的21号端口大致以时间间隔100ms连续发送了6个TCP SYN。

  • ICMP 回显:两个有着不同设置的 ICMP 请求包被送到目标系统,由此产生的反应将有助于实现验证操作系统类型。如下图所示,在序列生成测试之后进行两次ICMP数据包请求,两次的ICMP请求设置不同。

  • UDP:这个测试由一个被发送给一个关闭的端口的数据包组成。如果目标系统上的这个端口是关闭的,而且返回一条 ICMP 端口不可达的信息,那么就说明没有防火墙。如下图所示,Nmap向目标主机的关闭端口42253端口发送UDP数据包,并返回了ICMP端口不可达信息,由此说明目标主机没有防火墙。

  • TCP 显式拥塞通知:当生成许多包通过路由器时会导致其负载变大,这称之为拥塞。其结果就是系统会变慢以降低拥堵,以便路由器不会发生丢包。这个包仅为了得到目标系统的响应而发送。因为不同的操作系统以不同的方式处理这个包,所以返回的特定值可以用来判断操作系统。如下图所示,该TCP数据包的ECN、CWR位被设置为1,标志着接收端被通知路径上发生了拥塞。ECN使用TCP头部来告知发送端网络正在经历拥塞,并且告知接收端发送段已经受到了接收端发来的拥塞通告,已经降低了发送速率。

  • TCP:在这个测试中会发送六个数据包。一些带有特定的包设置的包被发送用来到打开的或关闭的端口。结果也将会因为操作系统的不同而不同。所有 TCP 包都是以如下不同的标志被发送:
    (a)无标志
    (b)SYN、FIN、URG 和 PSH
    (c)ACK
    (d)SYN
    (e)ACK
    (f)FIN、PSH 和 URG
    如下图所示,Nmap按照上述TCP数据包的顺序依次向目标主机发送六个数据包,且前三个数据包被发送至开放端口(21号),后三个数据包发送至关闭端口(1号)。

第三次和第四次扫描

第三次扫描和第四次扫描之间大约有13万个数据包,量比较大,整体数据流应都为SYN半开扫描,大小为2,故大致扫描了6万个端口。考虑到Nmap默认只能扫描1000个端口,则第三次扫描的参数可能为-sS -p "*" 来指定扫描全部端口:
使用tcp.port == 22过滤条件可以看到在第四次扫描中出现了SSH连接,可以猜测此处就是为了探知靶机的SSH软件版本,所以第四次用来探测端口服务版本,扫描的参数为-sV

蜜罐主机开放的端口

使用tcp.flags.syn == 1 and tcp.flags.ack == 1过滤条件,将靶机正确响应TCP连接的数据包过滤出来,可以发现开放的端口有21、22、23、25、53、80、139、445、3306、5432、8009、8180:

攻击主机的操作系统确定

为了确定攻击主机的操作系统,这里使用了p0f这款被动探测操作系统工具,它能够通过捕获并分析目标主机发出的数据包来对主机上的操作系统进行鉴别,在kali上安装p0f后,使用p0f -r listen.pcap对数据包进行分析,可以从中发现探测到的操作系统版本为Linux 2.6.x:

三、实验总结

通过本次网络嗅探与协议分析实验,熟悉了多种网络嗅探工具和协议分析工具的使用,尤其是进一步了解了Wireshark的使用,以及如何用Wireshark进行网络攻击流量分析的步骤和思路,这对于理解攻击手段和分析网络流量有很大的帮助,以后会多多实践,不断进步。

posted @ 2022-04-01 22:26  z十夜  阅读(57)  评论(0编辑  收藏  举报