20199306 2019-2020-2 《网络攻防实践》第4周作业
20199306 2019-2020-2 《网络攻防实践》第4周作业
一.实践内容
1.网络嗅探技术概述
- 网络嗅探概念:网络嗅探利用计算机的网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密信息等。
- 网络嗅探器(Sniffer):实现网络嗅探技术的工具,它捕获的数据报文是经过处理之后的二进制数据,因此通常会结合网络协议分析技术来解析嗅探到的而网络数据。
- 网络嗅探是一把双刃剑:对于攻击者来说,网络嗅探是他们经常使用的渗透技术,他们在获得内部网络中一台主机的访问权后进行实施,能够静默地、被动地嗅探到网络上传输的数据;对于防御者来说,网络管理员可以利用网络嗅探来捕获与分析网络的流量信息,以便找出所关心网络中潜在的问题并解决。
网络嗅探的监听对象:目前主要的监听对象是以太网(有线局域网)和Wi-Fi(无线局域网)。
网络嗅探器的分类:按照实现形式分为软件嗅探器和硬件嗅探器。
- 硬件嗅探器:通过专用硬件对网络数据进行捕获和分析,也称为协议分析仪。
优点:速度快,因为常常放到网络中关键位置,所以捕获的网络数据也比较全面。
缺点:成本较高、价格昂贵。 - 软件嗅探器:一般实现为不同操作系统类型上的应用软件,通过对网卡进行编程从而实现。
优点:价格便宜或者免费,方便使用。
缺点:速度慢,往往无法抓取网络上所有的传输数据,不能全面了解网络运行状态。
2.网络嗅探的原理与实现
-
以太网工作原理:共享通信信道,它采用了载波侦听/冲突检测技术(CSMA/CD)避免共享链路的通信冲突。以太网中传输的数据是以“帧”为单位,帧头中包含发送源和目标的MAC地址。共享信道中,网卡在收到数据时只会收到与网卡自身的MAC地址匹配的数据。
-
共享式网络:使用集线器(Hub)连接,网络拓扑基于总线方式,物理上是广播的。交互式网络:使用交换机组建,所以数据帧都是通过交换机来进行数据转发的。它内存中有“MAC地址-端口映射表”,通过该表将数据发送到特定端口上。
交换机中的嗅探攻击方法:
- MAC地址洪泛攻击:发送大量虚构的含有MAC地址和IP地址数据包,使交换机的映射表溢出,变成类似共享式网络一样便于嗅探。
- MAC欺骗:假冒所要监听的网卡,伪造目标源的MAC地址,使交换机相信攻击者的MAC地址就是目标地址,从而达到嗅探。
- ARP欺骗:目前交换式网络最常用的嗅探手段,利用IP地址于MAC地址之间进行转换时的协议漏洞,达到MAC欺骗。
类UNIX平台的网络嗅探技术实现:主要通过内核态的BPF和用户态的libpcap抓包工具实现。
Windows平台的网络嗅探实现技术:
- NPF(与类UNIX平台上的BPF模块兼容),内核态虚拟设备驱动程序,功能是过滤数据包,并将这些数据包完整的上传给用户;
- WinPcap:与libpcap库相兼容的标准抓包接口。
3.实现网络嗅探软件
类UNIX平台:libpcap抓包开发库、tcpdump、wireshark等。
Windows平台:wireshark、SnifferPro、Buttsniffer、NetMon、Network Associates Sniffer等。
4.网络嗅探的检测与防范
网络嗅探检测:同一主机上,可以通过检查网卡是否运行在混杂模式下,来发现正在监听的嗅探器。许多版本的linux内核只检查数据包中的IP地址以确定是否送到IP协议栈,因此可以构造MAC地址无效而IP。
网络嗅探防范:采取一系列措施达到减少或消除网络嗅探对网络数据所造成的安全危险。以下为四种措施:
使用安全的网络拓扑,尽量将共享式网络升级为交换式网络。
用静态ARP或者MAC-端口映射表代替动态机制,能够防范MAC地址欺骗、ARP欺骗等。
重视网络数据传输的集中位置点的安全防范。比如网关、路由器、交换机等重要区域。
避免使用明文传输口令或敏感信息的网络协议,使用加密及安全增强的网络协议。
5.网络协议分析技术
-
概念:对获取到的二进制格式数据包进行解析,恢复出各层网络协议信息以及传输内容的技术方法。
-
原理:网络协议分析技术原理类似于对数据包解包的过程,需要从底向上逐层地解析网络协议,同时进行IP分片包以及TCP会话的重组。他需要恢复出各层网络协议信息以及传输内容。
-
网络协议分析典型步骤:
1.通过网络嗅探获取原始数据。这里的数据是在链路层传输的二进制数据包,大多数是以太网数据帧。
2.分析以太网数据帧,定位出帧头各字段结构,根据帧头Type字段确定网络层协议类型,并提取数据帧中包含的网络层数据内容。
3.进一步对IP数据包进行分析,如需重组则先重组,根据IP协议头中的Protocol字段,确定传输层协议类型,并提取IP数据包中的传输层数据内容。
4.继续根据TCP或UDP的目标端口确定具体的应用层协议,并对TCP或UDP数据包进行拼接重组,得到应用层特定的应用交互内容。
5.根据相应得应用层协议对数据进行整合恢复,得到实际传输的数据。 -
网络协议分析工具Wireshark:对网络数据进行分析,主要作用是捕获网络数据包,对于数据包进行协议分析时尽可能地显现详细情况。被应用于多个安全领域。
wireshark过滤命令:
- 端口过滤:例如过滤TCP协议端口号为80的包,tcp.port==80;
- ip过滤:例如过滤源ip地址的包,ip.src==192.168.200.125;
- 协议过滤:在过滤框中输入协议名称即可。
http模式过滤:
- 过滤get包,http.request.method=="GET"
- 过滤post包,http.request.method=="POST"
二.实践过程
实践1.动手实践tcpdump
- 问题:使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
访问www.tianya.cn网站首页时,使用tcpdump src 本机IP and tcp dst port 80指令进行查询,本机IP为:192.168.200.4
捕捉到地址为:124.225.135.230
实践2.使用Wireshark开源软件对在本机上以telnet方式登录BBS进行嗅探与协议分析
- 回答如下问题并给出操作过程:(1)你所登录的BBS服务器的IP地址与端口各是什么?(2)telnet协议是如何向服务器传送你输入的用户名及登录口令的?(3)如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
先将Wireshark打开,然后在终端中输入指令luit -encoding gbk telnet bbs.fudan.edu.cn登录BBS:
在Wireshark中,通过查询,我们可以获得BBS服务器的IP为202.120.225.9,端口为23:
Telnet协议在传输用户名和密码时采用明文传输,右键目的ip为202.120.225.9的follow追踪TCP流:
实践3.取证分析实践:解码网络扫描
- 案例分析挑战内容:这次案例分析挑战是完全为刚入门的安全分析师准备的,目标是分析有人为构造的一台蜜罐主机5次不同类型端口扫描。需要指出的是,这次案例分析中的端口扫描流量并不是从“野外”捕获的,而是特意构造的,这次入门级的案例分析挑战的目的完全是为了提供学习和训练的机会。网络入侵检测器-snort捕获每次扫描的流量并存入tcpdump格式二进制网络日志文件中。这次挑战的任务每组从这5次扫描的日志文件中随机选择两个,分析这两个文件,回答所列的问题,并撰写详细的实验分析报告。通过这次挑战,你能够学习到数据包抓取技术的使用方法,以及使用数据包解码工具tcpdump或Wireshark分析网络数据包的技能。
- 问题:
(1)攻击主机的IP地址是什么?
(2)网络扫描的目标IP地址是什么?
(3)本次案例中是使用了哪个扫描工具发起这些端口扫描/?你是如何确定的?
(4)你所分析的日志文件中,攻击者使用了哪种扫描方法,扫描的目标端口是什么,并描述其工作原理。
(5)在蜜罐主机上发现哪些端口是开放的?
(6)额外奖励问题:攻击主机的操作系统是什么?
打开从云班课上下载的listen.pcap:
wireshark界面点击 统计(S)——>Conversations——>IPv4:
从上图数据交换的情况可以看出:网络扫描的目标IP地址为172.31.4.188,攻击主机的IP地址为172.31.4.178。
接下来是分析攻击者使用了nmap哪些指令进行了攻击。首先通过上周的学习,我们知道nmap扫描的原理和ping类似,在每次扫描前,nmap会通过arp更新目标MAC地址,因此过滤文件的arp包如下图,不难看出一共进行了4次nmap扫描。其中第一次和第二次之间没有数据包,所以第一次作为ARP的单独扫描,猜测是使用nmap -sp命令判断网段中活跃的主机,这也是上周学习的网络扫描的第一步判断活跃主机:
接下来是判断第二次nmap扫描使用的命令。使用命令tcp.port == 57738 and tcp.flags.syn == 1 and tcp.flags.ack == 0此命令行表示tcp端口57738发送tcp请求但无回应,通过wireshark过滤出来的数据包可知,此次扫描基本囊括了靶机上的所有协议和服务,所以猜测是进行了namp -O扫描靶机上安装的操作系统:
我们发现第三次扫描大致的往返包是12W,由于靶机多数端口应是关闭状态,整体数据流是([SYN]->[SYN,ACK])大小为2,故大致扫描了6W个端口。nmap默认只能扫描1000个端口,因此可以猜测第三次扫描应该是用命令nmap -sS人为指定端口数量。使用命令tcp.port == 23(23为telnet端口)过滤文件数据。发现攻击机对靶机进行4次扫描过程。不难看出在第一二三次扫描都只是建立了连接就结束了,但在第四次扫描的时候出现了telnet连接;如果使用命令tcp.port == 22(22为ssh端口)同样可知第一二三次都是建立连接,第四次出现了ssh连接,所以猜测第四次nmap扫描使用了命令nmap -sV探测靶机上开放的网络服务。
最后使用命令tcp.flags.syn == 1 and tcp.flags.ack == 1进行过滤发现靶机上打开的端口为21、22、23、25、53、80、139、445、3306、5432、8009、8180.如果wireshark过滤之后显示的是服务的话,可以使用端口对照表进行查看端口。
三.学习中遇到的问题及解决
问题:kali攻击机无法上网
解决:做实验时换了Ubuntu虚拟机,同时找同学咨询解决方法:https://www.cnblogs.com/the-elvis/p/11384420.html,但是目前还是没有解决相关问题。
问题:Ubuntu无法安装snort工具
解决:可能是因为版本太老,和李忠兰等同学交流后发现可以通过分析完成实验任务:https://www.cnblogs.com/Jody9123/p/12549418.html
四.实践总结
嗅探和分析可以帮助我们获得更多的信息,更了解被攻击系统,更容易攻入被攻击系统。随着攻防技术的发展,嗅探和分析的工具不断增加,整体成集成化、平台化发展。因为工具集成程度不一,所能完成的工作不一,因此我们需要选择合适的工具使用。
但本次实践过程中,之前安装的两个虚拟机都有不同程度的问题,所以实验进行不完整,目前暂时这样交作业,课后继续解决相关问题,最后完成之后单独再次提交。
五.实践后续
在和同学交流以及网上查阅资料之后,kali的主要问题在于网络设置模式不对以及没有换源。
于是我先把网路改为桥接,然后根据:kali更换国内源,所示方法将kali换成阿里云的源,更新系统之后就可以安装工具了:
同时,我还查阅资料:Kali 解决中文乱码问题,将kali系统升级换上中文,解决中文乱码问题(也顺路安装了中文输入法):
在换好kali源之后,实验重新做了一次:
安装snort工具并给权限以及安装p0f:
将listen.pcap拖入kali:
使用命令:sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r ./listen.pcap,可以发现是攻击是由nmap发起的:
使用命令:sudo p0f -r listen.pcap,进行探测,得知版本为linux 2.6.x: