作业所属课程:https://edu.cnblogs.com/campus/besti/19attackdefense/
作业要求:https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10471
目录
1.实践内容
网络嗅探
-
窃听技术,一方面可以作为被动攻击,具有隐蔽性另一方面可以为管理员提供网络内部的流量,找出故障和问题;也可为入侵检测系统提供数据基础。利用计算机的网络接口截获要发往其他计算机的数据报(往往是经过封装的二进制数据,需要结合网络协议分析工具进行分析来获取数据包中的内容。
-
网络嗅探器的分类
- 以太网;无线:其中无线嗅探器可以读取和分析无线传输协议的数据包
- 软件;硬件:硬件嗅探器也称为嗅探分析仪,速度快,分析数据全面,成本高;软件嗅探器:通过对网卡编程实现,成本低,易于使用,速度慢,往往无法抓取网络上所有的传输数据(如碎片包),拦截到的数据不够全面
- 网络嗅探器的原理
以太网工作原理:以太网共享通信信道,采用载波监听/冲突检测技术(CSMA/CD)避免共享链路上的通信冲突,在以太网的共享通讯媒介中,网络上的站点使用广播机制来发送自己的数据,也就是说,我们可以接收到在共享媒介上,发给其他计算机的数据包。
以太网中数据以”帧”传播,帧头部
包括源MAC和目的MAC,计算机的网卡一般情况下只会将所含有的目的MAC地址与自己的MAC地址相同的包进行拆包并交给上一层协议。而当网卡设置为混杂模式时,可以捕获一切经过它的数据包而不丢弃。
在有线局域网中,分为共享式网络和交换式网络。共享式网络通过集线器(HUB)连接(目前较少),HUB会将收到的数据包在局域网内进行广播;交换式网络通过交换机连接,交换机内部有一个自学习机制,自动生成MAC地址-端口映射表,将收到的数据包根据这个表发送给相应的端口,进而发送给拥有对应的MAC地址的计算机。
(1)MAC地址泛洪攻击:向交换机发送大量含有虚构MAC地址和IP地址的数据包,使交换机的MAC地址-端口映射表溢出,这时,交换机会将收到的数据包进行广播处理。
(2)MAC欺骗:攻击者将自己的MAC地址伪装为想要窃取的、即将发送给目标计算机的MAC地址,并发送以这样的MAC地址发送数据包出去,会使交换机更新自己的MAC地址-端口映射表,以使交换机将之后收到的含有目标MAC为该MAC的数据包都转发给攻击者。
(3)ARP欺骗:攻击者发送用于欺骗的ARP数据包,告诉网关,要攻击的IP对应着自己的MAC地址,以使网关将对应MAC地址的数据包发给攻击者。
- 以太网;无线:其中无线嗅探器可以读取和分析无线传输协议的数据包
-
在类UNIX平台上的实现
-
通过内核态的BPF和用户态的libpcap抓包工具库实现。BPF是类UNIX系统上数据链路层的原始接口,可以使网卡开启混杂模式,以接收到以太网上所有的包,且具有过滤功能;Libpcap为类UNIX平台上的应用程序提供标准的网络嗅探接口。
-
在Windows平台上的实现
-
使用NPF内核态虚拟设备驱动程序,过滤数据包,并将这些数据包传给用户态的Winpcap。
-
网络嗅探器软件
-
类UNIX系统上:libpcap抓包开发库;tcpdump嗅探器软件;wireshark等。在Windows上,wireshark,tcpdump等。tcpdump的使用参考,中文版命令详解。如图,捕获到192.168.200.124正在访问百度:
-
- 网络嗅探的检测
检查网卡运行是否运行在混杂模式下;基于混杂模式下操作系统和协议栈的不同特性:在linux内核中,如果处于混杂模式,linux值检查数据包中的IP地址以确定是否送到IP协议栈,因此构造MAC无效而IP地址有效的ICMP Echo请求,如果应答主机返回应答包,则说明目标主机未检查MAC地址,处于混杂模式,如果目标主机忽略请求,则说明目标主机网卡处于正常模式;在Windows中,构造一个目标MAC地址只有前八位为0xff的数据包,如果收到了目标主机的响应包,则说明目标主机处于混杂模式下(此处为自己的看法,不知道是否正确。因为windows在混杂模式下,会将目的MAC地址前八位为0xff的包当做广播包)通过目标主机的响应时间判断目标主机的性能,难道是速度越快,处理数据包的能力越强,性能越好,就说明是一个网络嗅探器? - 防范措施
- 采用安全的网络拓扑:使用交换式网络,并通过在交换机上设置VLAN分段等技术手段,对网络进行合理分段
- 使用静态ARP或者静态MAC-端口映射表
- 重视网络数据传输的集中位置点的安全防范,如网关、路由器和交换机
- 避免使用明文传输口令或敏感信息的网络协议
- 采用安全的网络拓扑:使用交换式网络,并通过在交换机上设置VLAN分段等技术手段,对网络进行合理分段
网络协议分析
原理:从底层向上逐层解析网络协议,同时进行IP分片包以及TCP会话重组。保存各个网络层次上的所有报头字段信息,以及最高层的应用层数据内容。数据包的拆包过程如下图:
【src/dst】 host IP监听指定源地址/目的地址的包 【less/greater】 length 选择长度小于等于或者大于等于length长度的包 【tcp/udp】【src/dst】 port n 选择源/目的端口为n的tcp/udp包
实践过程
+ 动手实践:tcpdump
使用tcpdump开源软件对在本机上访问https://www.tianya.cn 回答问题,你在访问天涯网站首页时,浏览器将访问多少个Web服务器?他们IP地址都是什么? 使用命令:```sudo tcpdump src 192.168.88.128 and tcp dst port 80 ```捕获源IP为本机,目的端口为80端口的数据包。 可以通过分析->Fellow TCP Stream选项重组一次TCP对话中的所有数据包。
使用wireshark开源软件对在本机上以tenet方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程: (1)你所登录的BBS服务器的IP地址与端口各是什么? (2)telnet协议是如何向服务器传送你输入的用户名及登录口令的? (3)如何利用wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令? 首先,我在www.newsmth.net注册了一个账号,之后打开wireshark,对WLAN进行监控,之后在windows的命令提示符中,输入telnet bbs.newsmth.net进行访问,之后用注册好的账号和密码进行登录。
停止wireshark的捕包,在过滤条件框中输入telnet进行过滤,可以看出IP地址:120.92.212.76 ,端口为23
- 取证分析实践:解码网络扫描
网络入侵检测器snort捕获每次扫描的流量并存入tcpdump格式二进制网络日志文件中,这次挑战的任务每组从这5次扫描的日志文件中随机选择两个,分析这两个文件,回答所列问题
(1)攻击主机的IP地址是什么?
(2)网络扫描的目标IP地址是什么?
(3)本次案例中时使用了哪个扫描攻击发起这些端口扫描?你是如何确定的?
(4)你所分析的日志文件中,攻击者使用了哪种扫描方法,扫描的目标端口是什么?并描述其工作原理
(5)在蜜罐主机上发现哪些端口是开放的?
(6)额外奖励问题,攻击主机的操作系统是什么?
根据前面一部分捕获的包,可以看出有寻找172.31.4.188的广播包,172.31.4.178在后续对172.31.4.188发出tcp半开扫描,只看172.31.4.188的3306端口,172.31.4.178发出SYN第一次握手,在收到172.31.4.188的SYN+ACK第二次握手后,172.31.4.178发出RST拒绝包。典型的半开扫描,后面也有很多类似的回合,对于172.31.4.188未开放的端口,172.31.4.188直接发送拒绝包RST+ACK。所以攻击机的IP为172.31.4.178,目标主机的IP为172.31.4.188。从会话
想要确切地知道攻击者用的扫描方法,这里使用snort入侵检测工具进行检测,在kali上,使用sudo apt-get install snort
进行下载,为snort增加权限sudo chmod 777 /etc/snort/snort.conf
;使用sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap
对日志进行分析,其中,参数-A设置报警模式,-q为安静模式,-u为初始化后改变snort的UID,-c为使用后面的配置文件,进入IDS模式,-r为读取后面的pcap文件
在同一子网内,Nmap会对该类目标采用ARP协议进行探测,即使命令参数规定的是其他探测手段,也会先使用ARP进行探测,这种方式效率高,速度快。如果主机活跃,会收到目的主机的MAC地址。在下图中,我们可以看到172.31.4.178发出了4次寻找172.31.4.188地址的MAC地址映射的包,由此判断,攻击机进行了4次扫描。而在第一次和第二次的ARP探测之间并没有发送数据包,说明这是一次探测目标主机是否活跃的扫描,所以第一次扫描为主机扫描。
SYN、ECN、CWR、Reserves在第二次发送ARP包之后,开始进行TCP SYN半开扫描,攻击机先向目标IP发送含有SYN标志的TCP包,如果目标主机的该端口开放,则响应一个SYN+ACK的包进行第二次握手,攻击机收到这样的包之后,发送一个RST拒绝包;如果对应的端口关闭,那么目标主机会发送一个带有RST+ACK标志的包;没有完成三次握手建立TCP连接,前面都是TCP数据包,但是从编号为2045的包开始就不是TCP类型的包了,攻击机向目标主机发送了两个ICMP的包,TTL不同,但是目标主机返回去的都是64,有UDP包,再后面几个TCP的包,是攻击机向目标主机的21端口进行发包,这些包的标志位置1的有SYN、ECN、CWR、Reserves,ECN,CWR表示网络拥堵,进行慢启动,攻击方收到目标主机的21端口的第二次握手响应之后,断开进行重连;2054号的TCP包没有置1的标志,可能是虚假重传,2055号TCP包,FIN、SYN、PSH、URG置1,FIN用于断开连接,SYN用于建立连接,正常情况下,SYN和FIN是不能同时置1的,而RFC也没有规定IP协议栈如何处理这样的畸形报文,因此,各个操作系统的协议栈在收到这样的报文后的处理方式也不同,攻击者可以通过观察到的处理方式进行判断目标主机的操作系统的类型。在第二次扫描中,对于有些端口一次都没有发过包,而对于21端口却发送了8次包,即使收到了目标主机发出的第二次握手,攻击机发送RST之后还是继续发包到目标主机的21端口,他是想干什么?目前判断第二次扫描是用来操作系统扫描的,对端口进行扫描以及构造奇怪的TCP包,目标主机以自己的规则进行相应,会形成TCP/IP协议栈指纹,使得Nmap可以对目标主机的操作系统进行判断。
第三次扫描,数据过于庞大,从两千多到一万三千多,远远超过Nmap默认的扫描一千来个端口,所以应该是进行了全端口扫描。
第四次扫描,从下面第三个图可以看到,在第四次扫描的最后,攻击机和目的主机上的一些端口终于完成了连接,对于能够远程连接的服务进行了探查,之后又发送FIN包进行断开连接,可以看出本次扫描,主要是为了扫描目的主机上的服务软件版本,为服务版本扫描。
对于判断攻击机的操作系统,我们使用p0f进行判断(p0f是一个纯粹的被动指纹识别工具,它在不干涉双方通信的情况下,通过嗅探的方式来分析流经某一网卡的流量以达到指纹识别的目的。它能够快速识别一个tcp连接两端的主机操作系统,因为它是被动识别工具,所以在某些nmap被禁止、不可靠、太慢或者会触发警报的情况下,它仍然能够很好的工作)通过apt-get install p0f
进行安装,使用```sudo p0f -r listen.pcap对每一条记录进行分析,得出结论,图中所示,攻击机的系统为:linux2.6.x
攻防对抗实践:攻击方用nmap扫描(达到特定目的),防守方用tcpdump嗅探,用Wireshark分析,并分析出攻击方的扫描目的以及每次使用的nmap命令。
本实验,使用kali(192.168.200.3)作为防守一方,打开wireshark和tcpdump使用eht0进行监听;Winattack(192.128.200.2)作为攻击一方,使用Nmap对kali进行扫描,在这里,我使用```nmap -sS 192.168.200.3,不知道为什么,Winattack扫描结束后,说所有端口都关闭着呢,kali上的tcpdump拦截不到任何包,wireshark却能接收到winattack发送的所有包,并能返回RST包,
学习中遇到的问题及解决
对于第二次扫描中,有些对于有些端口会重复发送请求连接的包表示不理解,对于同一个端口通过构造不同的标志位进行连接可以理解,但是同一个端口进行同样的发包就不能理解了。
为什么kali的端口扫描的时候全关了?奇奇怪怪的。
对于kali虚拟机不能联网的问题,把整个虚拟机的网络恢复默认设置,kali选用NAT连接即可。
学习感想和体会
还有好多东西需要学!