20212903 王钧 2021-2022-2 《网络攻防实践》第三周作业
20212903 王钧 2021-2022-2 《网络攻防实践》第三周作业
1.实验内容
网络嗅探:网络嗅探基本介绍
网络嗅探利用计算机的网络接口截获目的地址为其他计算机的数据报文,以监听数据流中所包含的私密信息。实现网络嗅探技术的工具称为网络嗅探器。截获到的是经过封包的二进制数据,通常会结合网络协议分析技术来解析嗅探到的网络数据。网络嗅探是攻击者经常使用的内网渗透技术,通常在攻击者获得内部网络中的一台主机的访问权后实施。可以静默地、被动地嗅探网络上传输的数据。所以针对网络嗅探的检测与防范还是比较困难的。下面介绍一些基本的检测防范方法。
- 网络嗅探的检测:如检查网卡是否运行在混杂模式下。也可以通过操作系统和协议栈对混杂模式的香型不同来判断。
- 网络嗅探的防范:采用安全的网络拓扑(交换式网络),用静态ARP代替动态,避免明文传输,重视网络集中节点的保护(路由器,交换机等)。
以太网和WiFi是有线局域网和无线局域网最流行的链路层协议,也是网络嗅探的主要监听对象。
- tcpdump支持对以太网的嗅探
- kismet支持WiFi网络的监听
- 以上两种针对不同局域网的嗅探器在对数据包实际进行破解和分析的时候完全没有区别。唯一的区别是无线嗅探器可以读取和分析符合无线传输协议的数据包。
网络嗅探器按照实现形式可以分为软件嗅探器和硬件嗅探器:
- 硬件嗅探器通过专用网络对网络数据进行捕获和分析,也称为协议分析仪。
- 软件嗅探器一般实现位不同操作系统类型上的应用软件,通过对网卡进行编程实现。
网络嗅探:原理及实现(以太网)
这一小节从以太网的工作原理到共享式网络和交换式网络的嗅探,最后介绍了类Unix平台和Windows平台的网络嗅探技术的实现。
- 以太网的工作原理:以太网是共享通信信道数据以帧为单位传输,以太网帧头中包括发送源的MAC地址与目标MAC地址。当站点需要发送数据时,通过协议栈进行TCP/IP封包,在数据链路层“装配”帧头与帧尾,发送至共享通信介质上。网卡驱动程序在正常模式下,只会接受目标MAC地址与自身MAC地址相匹配的数据帧。但是网卡的混杂模式将会接收一切通过它连接共享通信媒介的数据帧。
- 共享式网络嗅探:使用集线器连接,集线器上任意一台主机都能够嗅探整个集线器上的全部网络流量。
- 交互式网络嗅探:通过MAC地址映射表来发送数据。通常有以下三种方式实现嗅探
- MAC地址泛洪攻击:向交换机发送大量含有虚构MAC地址和IP地址的数据包,使映射表溢出无法处理,交换机进入类似集线器的工作方式。
- MAC欺骗:通常用于突破基于MAC地址的局域网访问控制。这里书上讲的比较模糊,参考MAC地址欺骗
- ARP欺骗:利用IP地址与MAC地址之间进行转换时的协议漏洞,达到MAC欺骗,这里推荐详细参考ARP欺骗窃听秘密及实现。
- 类Unix网络嗅探技术实现:通过内核态的BPF和用户态的libpcap抓包工具库实现。BPF是数据链路层上的原始接口,提供原始链路层封包的收发功能。如果网卡处于混杂模式,将会收到网络上所有包。libpcap与内核态BPF包嗅探与过滤机制想配合,为类Unix平台上的应用程序提供标准的网络嗅探接口,网络数据包的标准格式为pcap。
- Windows网络嗅探技术实现:Windows操作系统内核不提供标准的网络嗅探与抓包接口。NPF是一个内核态虚拟设备驱动程序,功能是过滤数据包,将数据包原封不动传给用户模块。WinPcap包括packet.dll和wpcap.dll两层模块的标准抓包接口。
网络嗅探:嗅探器软件
通常使用的网络嗅探器软件一般基于标准接口BPF和libpcap,最常用包括libcap抓包开发库、tcpdump以及wireshark嗅探器软件(类Unix平台和Windows平台)。
- libpcap抓包开发库:libpcap开发的基本步骤是打开网络设备、设置过滤规则、捕获数据、关闭网络设备。
- tcpdump:tcpdump是通用的命令行网络嗅探器与数据包分析协议。通过
src 192.168.200.2 and tcp dst port 80
可以查看源主机向外连接的HTTP网络流量的情况。通过tcpdump
将监视第一个网络接口上所有流过的数据包。 - Wireshark嗅探器软件:是一款开源数据包分析工具,主要作用是捕获网络数据包,对于数据包进行协议分析以尽可能显示详细的情况,并以更容易理解的格式呈现给用户。
网络协议分析技术
网络嗅探截获的是通过封包过程组装的二进制格式原始报文内容,为了获取其包含信息,要根据TCP/IP协议栈的协议规范重新还原数据包在各个协议层上的协议格式及内容。目前主要的网络协议分析工具是wireshark。网络协议分析的典型过程包括以下几个步骤(找了一张高清图):
- 网络嗅探得到的原始数据是在链路层传输的二进制数据包。
- 对帧结构进行分析,得到帧头各字段结构,根据帧头字段确定网络层的协议类型,并提取包含网络层数据的内容。
- 进一步对IP数据包进行分析,确定传输层协议类型,提取传输层数据内容。
- 根据TCP或UDP目标端口确定确定具体的应用层协议,得到应用层特定协议的应用交互内容。
- 依据相应应用层协议对数据进行整合恢复,得到实际传输数据。
2.实验过程
(1)动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
首先按照视频讲解,将Kali虚拟机改为桥接模式,这样子需要重新看一下Kali虚拟机的ip地址
通过ifconfig
进行查看,可以看到这是Kali虚拟机的IP地址为192.168.11.105
使用命令tcpdump -nn '(tcp[tcpflags] & tcp-syn !=0 and tcp[tcpflags] & tcp-ack!=0) and (host 192.168.11.105)'
从上图可以看出,经过了
124.225.206.22
124.225.69.77
111.206.209.249
124.225.135.230
124.225.214.206
124.225.65.170
52.25.210.71
18.65.200.44
13.32.74.101
54.148.72.145
44.229.115.174
18.65.166.113
(2)动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
- 你所登录的BBS服务器的IP地址与端口各是什么?
- TELNET协议是如何向服务器传送你输入的用户名及登录口令?
- 如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
输入luit -encoding gbk telnet bbs.fudan.edu.cn
进入复旦大学bbs论坛,通过图中第二行可以看出其IP地址为202.120.225.9
通过wireshark抓包,利用筛选规则ip.src==202.120.225.9 or ip.dst==202.120.225.9
可以看到目的IP地址的端口为23
通过抓包可以看到,TELNET协议在传输用户名和密码的时候是明文传输,并且是一个一个字母传输,我输入的用户名为guest
,密码为空,可以看到抓到5个包其数据分别为g,u,e,s,t
五个字母。
取证分析实践,解码网络扫描器(listen.cap)
- 攻击主机的IP地址是什么?
- 网络扫描的目标IP地址是什么?
- 本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
- 你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
- 在蜜罐主机上哪些端口被发现是开放的?
用wireshark打开listen.pcap文件
1、攻击主机的IP地址是什么?网络扫描的目标IP地址是什么?
打开wireshark统计中会话,根据图中的统计,可以看出主要的流量在172,31,4.178
与172,31,4.188
之间
因此,攻击机与靶机的IP地址应该就是这两个
接下来,需要进一步确实两个IP地址哪一个是攻击机哪一个是靶机
通过下图可以看出172,31,4.178
向172,31,4.188
发了一个SYN标记的TCP包其中seq=0
因此可以得知172,31,4.178
为攻击主机的IP地址,172,31,4.188
为靶机主机的IP地址
2、本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
首先需要安装入侵检测系统snort,首先使用命令sudo apt-get update
进行更新
更新后再使用命令sudo apt-get install snort
进行安装snort
使用命令sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r /home/user/listen.pcap
对listen.pcap进行入侵检测
命令中参数的含义如下:
-A 设置报警模式
-q 安静模式,不显示标志和状态报告
-u 初始化后改变Snort的UID
-c 使用配置文件,这会使得snort进入IDS模式,并从中读取运行的配置信息
-r 从pcap格式的文件中读取数据包
通过上图结果可以看到所使用的工具是NMAP,攻击机利用NMAP工具进行端口扫描
第一次扫描
我们可以到图中有四次广播用色箭头值了出来,但是第一个箭头和第二个箭头之间没有其余数据包,因此可以判定第一次扫描这里使用了namp -sP
进行主机活跃探测
第二次扫描
在看第二次扫描的末尾处,发现了有ICMP包,有TCP的包,有UDP的包,同时有大量的标志位,这说明这是尝试触发不同的响应包,因此可以判断该扫描为命令nmap -O
第三次扫描
第三次扫描命令的判断相对简单点,通过过滤arp包发现第三次扫描直接从2071到了133220,中间有一万多的数据包。因此可以判断第三次扫描的命令为nmap -sS
第四次扫描
通过下图我们可以看到,在第四次扫描中,不仅TCP数据包,还有HTTP、TELNET等数据包
从下图中可以看到HTTP协议包后面有SYN->SYN,ACK->RST
建立了连接,因此可以看到这次扫描应该就是nmap -sV
3、在蜜罐主机上哪些端口被发现是开放的?
利用命令tcp.flags.syn == 1 and tcp.flags.ack == 1
可以看到有哪些端口是开放的是活跃的(回复ACK+SYN的端口就是开放的窗口)
通过查看顾虑后的信息,可以得到开放的端口有21 22 23 25 53 80 139 445 3306 5432 8009 8180
4、攻击主机的操作系统是什么?
确实攻击机的操作系统需要用到p0f工具,因此首先需要利用命令p0f -r listen.pcap
安装它
利用命令p0f -r listen.pcap
进行探测
根据下图可以看出攻击机的操作系统为Linux2.6.x
3.学习中遇到的问题及解决
- 本次实验较为顺利,尚无遇到一些问题
4.学习感悟、思考等
通过这次实验,我发现自己对于计算机网络知识的了解还需要提高。本科期间学习的计算机网络知识在某些时候已经不太够用。需要进一步学习计算机网络的相关知识,同时还需要有一定的深度。
这次实验不仅仅有理论上的收获,对于网络攻防实践的技能我也学会了很多新的知识,例如如何利用工具进行网络嗅探,通过抓包反向分析网络嗅探所使用的命令,提高了我的实践与分析能力。