- (:」∠)_
- 一、实践内容
- 1.1 网络嗅探
- 1.1.1 网络嗅探技术定义
- 1.1.2 网络嗅探的原理
- 1.1.3 网络嗅探器软件
- 1.2 网络协议分析
- 1.2.1 网络协议分析技术原理
- 1.2.2 网络协议技术分析步骤
- 1.2.3 网络协议分析技术实现
- 1.1 网络嗅探
- 二、实践过程
- 2.1 动手实践:tcpdump
- 2.2 动手实践:Wireshark
- 2.3 实践作业:取证分析实践:解码网络扫描
- 2.4 实践作业:攻防对抗实践
- 学习中遇到的问题及解决方法
(:」∠)_
- 此作业所属课程:2019-2020-2-1991&1993《网络攻防实践》
- 本次作业要求:第四次作业 网络嗅探与协议分析
- 课程目标:学习网络攻防实践
- 本次作业在哪个方面帮助我实现目标:第四章 网络嗅探与协议分析
一、实践内容
1.1 网络嗅探
1.1.1 网络嗅探技术定义
Sniff,是一种黑客常用的窃听技术,利用计算机的网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密信息等。实现网络嗅探技术的工具称为网络嗅探器(Sniffer),嗅探器捕获的数据报文是经过封包处理之后的二进制数据,因此通常会结合网络协议分析技术来解析嗅探到的网络数据,这样才能恢复出TCP/IP协议栈上各层网络协议的内容,以及实际发送的应用层信息。
1.1.2 网络嗅探的原理
网络嗅探的底层技术原理根据所监听的网络类型不同也具有一定的差异
- 以太网工作原理:以太网通过使用CSMA/CD协议的共享通信信道进行消息传输。以太网中的数据以帧为单位,将上层的数据包装配上帧头和帧尾,通过MAC地址匹配数据包的目标。当网卡处于混杂模式下,能够接受一切通过它连接的以太网络的数据帧。
- 共享式网络与交换式网络中的嗅探:在共享式网络中,当主机A向主机C发送数据包时,集线器先接收到数据,然后再把它所接收到的数据发送到所有接口,所以集线器上所有接口所连按 的主机上的网卡也能收到数据,如主机B网卡如果处于混杂模式,就可以嗅探到主机A到主机C的通信数据包。 而在交换式网络中,交换机可以检查每一个收到的数据帧,并对数据帧进行转发处理,在交换机内存中保存有 "MAC地址-端口映射表”,在转发数据帧时,只允许与目标MAC地址匹配成功的数据包通过交换机,并只发送到特定端口上。交换式网络的网络嗅探技术:MAC地址洪泛攻击、MAC欺骗、ARP欺骗
- 类 UNIX 平台的网络嗅探技术实现:类 UNIX 平台的网络嗅探技术主要通过内核态的 BPF (Berkeley Packet Filter) 和用户态的 libpcap 抓包工具库实现。
- Windows 平台的网络嗅探实现技术:Windows 橾作系统内核并不提供标准的网络嗅探与抓包接口,因此需要通过增加一个驱动程序或网络组件来访问内核网卡驱动中捕获的数据包,而目前最常用的是与类 UNIX 平台上的 BPF 模块兼容的 NPF (NetGroup Packet Filter)。
1.1.3 网络嗅探器软件
- 类Unix平台下的嗅探软件:libpcap、tcpdump、wireshark和dsniff、sniffit等等;
- windows平台下的嗅探软件:wireshark、snifferPro等等。
1.2 网络协议分析
网络协议分析是网络嗅探器进一步解析与理解捕获数据包必需的技术手段。网络嗅探截获的是在通过封包过程组装的二进制格式原始报文内容,为了获取其中包含的信息,就需要根据 TCP/IP 协议栈的协议规范,重新还原出数据包在各个协议层上的协议格式及其内容,以及在应用层传输的实际数据。
1.2.1 网络协议分析技术原理
网络协议分析是指对网络上传输的二进制格式数据包进行解析,以恢复出各层网络协议信息以及传输内容的技术方法。
1.2.2 网络协议技术分析步骤
1.首先网络嗅探得到的原始数据是在链路层传输的二进制数据包,大多数情况下是以太网数据帧;
2.对以太网数据帧进行结构分析,定位出帧头各字段结构,根据帧头的Type字段确 定网络层协议类型,大多数情况下是 IP 协议 (0800), 并提取数据帧中包含的网络层数据内容;
3.对IP数据包进行分析,如果设置了分片位,则进行IP分片重组,根据IP协议头中的Protocol字段,确定传输层协议类型,通常情况下是TCP(6)或者UDP(17), 并提取1P数据包中的传输层数据内容;
4.继续根据TCP或UDP的目标端口确定具体的应用层协议,如http、ftp、telnet等协议数据包,并对TCP或者UDP数据包进行拼接重组,得到应用层特定协议的应用交互内容;
5.依据相应的应用层协议对数据进行整合恢复,得到实际传输的数据。
1.2.3 网络协议分析技术实现
在开源的网络嗅探器软件如Tcpdump、Wireshark、Snort等都有相应的源码实现。
具体使用见下面实践2-Wireshark
二、实践过程
2.1 动手实践:tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:
你在访问www.tianya.cn网站首页是,浏览器将访问多少个Web服务器?他们的IP都是什么?
- 1.在kali访问www.tianya.cn
- 2.在terminal运行命令
sudo tcpdump src 192.168.200.2 and tcp dst port 80
其中 src 和 dst 是确定传输方向的关键字,指明ip包中源地址是 192.168.200.2 ,表示只捕获80端口的TCP协议数据包,监听192.168.200.2的http通信。
监听到如下结果:
- 3.成功得到浏览器访问的Web服务器的IP地址,有8个
IP地址 |
---|
124.225.65.154 |
124.225.65.173 |
200.130.77.218 |
124.225.214.206 |
124.225.135.230 |
124.225.214.214 |
106.120.159.126 |
72.21.202.25 |
- 4.命令
nslookup tianya.cn
查看www.tianya.cn对应的IP地址
2.2 动手实践:Wireshark
使用Wireshark开源软件对在本机上以telnet方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程?
(1)你所登录的BBS服务器的IP地址与端口各是什么?
(2)telnet协议是如何向服务器传送你输入的用户名及登录口令的?
(3)如何利用Wireshark分析嗅探得数据包,并从中获取你的用户名及登录口令?
- 1.在windows功能启动Telnet Client
- 2.输入cmd,启动控制台,输入命令:telnet bbs.fudan.edu.cn,进入复旦大学BBS论坛
- 3.打开WireShark,筛选协议为telnet,开始抓包,然后注册登录,通过查看wireshark可知其IP及端口号为23
- 4.选择分析TCP跟踪流,选择发送方和接收方,可以得到我用的用户名和登录口令
- 5.利用Wireshark分析嗅探的数据包,并从中获取用户名和密码。可以看到账号为JYjy,密码为12345678。
2.3 实践作业:取证分析实践:解码网络扫描
案例分析挑战内容: 这次案例分析挑战是完全为刚入门的安全分析师准备的,目标是分析由人为构造的到一台蜜罐主机的5次不同类型端口扫描。需要指出的是,这次案例分析中的端口扫描流量并不是从 “ 野外“ 捕获的,而是特意构造的,这次入门级的案例分析 挑战的目的完全是为了提供学习和训练的机会。
网络入侵检测器-snort 捕获每次扫描的流噩并存入 tcpdump 格式二进制网络日志文件中。这次挑战的任务每组从这5次扫描的日志文件中随机选择两个,分析这两个文件,回答所列的问题,并撰写详细的实验分析报告。通过这次挑战,你能够学习到数据包抓取技术的使用方法,以及使用数据包解码工具 tcpdump 或 Wireshark 分析网络数据包的技能。
问题:
1.攻击主机的 IP 地址是什么?
2.网络扫描的目标 IP 地址是什么?
3.本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
4.你所分析的日志文件中,攻击者使用了哪种扫描方法,扫描的目标端口是什么,并描述其工作原理。
5.在蜜罐主机上发现哪些端口是开放的?
6.额外奖励问题: 攻击主机的操作系统是什么?
- 1.用wireshark打开老师提供的listen.pcap文件
- 2.选择统计->Concersations->IPv4·4,可以看到 172.31.4.178 和 172.31.4.188 之间有大量的双向的网络数据包,因此可初步确定这两个是攻击主机IP和网络扫描的目标主机IP。
- 3.选择分析->对话过滤器->IPv4,看到所有的请求数据包(如TCP SYN包)是从172.31.4.178发起,所有的响应数据包(如SYN/ACK包)均是从172.31.4.188发出。
因此确定,攻击主机为172.31.4.178;目标主机为172.31.4.188
- 4.打开kali,将listen.pacp文件放入kali,安装snort工具,准备检测
- 5.执行命令
sudo chmod 777 /etc/snort/snort.conf // 给予snort.conf可读可写可执行权限
snort -A console -q -u snort -c /etc/snort/snort.conf -r ~/listen.pcap // -A开启报警模式,-q不显示状态报告,,-u为初始化后改变snort的UID,-c为使用后面的配置文件,进入IDS模式,-r从pcap格式的文件中读取数据包
看到这个攻击是用nmap端口扫描发起的
- 6.扫描前nmap会通过arp更新目标MAC地址,所以使用Wireshark的过滤器扫描出arp包,可以看到共进行4次nmap扫描;并可以看出攻击机第一次nmap扫描和第二次nmap扫描之间没有数据包,则第一次nmap扫描为探测目标IP是否活跃,使用nmap -sP;
- 7.观察第二次扫描的末尾数据包,发现有大量的TCP协议、ICMP协议、UDP协议数据,并使用了大量构造的标志位,以触发不同的响应包;猜测该扫描为主动探测操作系统nmap -O 扫描。Nmap内部包含了2600多种已知操作系统的指纹特征,根据扫描返回的数据包生成一份系统指纹,将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的操作系统。如果无法匹配,则以概率形式列举出可能的系统。
- 8.第三次ARP后均为TCP协议数据,并且数据量庞大(从2071排到了133219),可以看到在数据包中存在大量SYN请求包,通过过滤器搜索 tcp;可以看到序号9、10、13是一组半开放扫描,使用不完整的tcp三次握手来对目标主机进行尝试性的连接,攻击主机的57738号端口对目标ip的3306号端口发送SYN包,目标ip的3306号端口开放,返回一个 TCP SYN & ACK 包,然后攻击主机发送一个 RST 包停止建立连接。这是典型的半开放扫描(TCP SYN 扫描),蓝色框框中的也是类似,分别监测出目标主机的23号端口、80号端口和139号端口开放。再看绿色框框中,攻击主机对目标机的955号端口发送了SYN包,该端口返回一个 TCP RST & ACK 包,说明该端口关闭。猜测以扫描的指令可能为 nmap -sS -p 1-65535 172.31.4.188 进行TCP SYN全端口扫描。
- 9.第四次ARP后,不仅有TCP协议数据,还有HTTP、TELNET、SMB应用层协议的数据。在TCP的端口中,某些端口是确定的,比如22号端口用于ssh登录。以22号端口为例使用过滤器命令为 tcp.port == 22;发现除了建立TCP SYN扫描,还建立了ssh连接,这是为了探测靶机的网络服务,于是猜测攻击机对靶机进行了 -sV 的版本扫描。
- 10.通过过滤器的 tcp.flags.syn == 1 and tcp.flags.ack == 1 可以过滤出SYN | ACK的数据包,这是目标主机反馈攻击主机的端口活跃信息。可查看靶机的开放端口在下图框出。
- 11.在kali上使用p0f工具对pcap文件进行分析,发现p0f判断靶机为linux。执行命令
sudo p0f -r /home/kali/Documents/listen.pcap
2.4 实践作业:攻防对抗实践
攻击方用nmap扫描(达到特定目的),防守方用tcpdump嗅探,用Wireshark分析,并分析出攻击方的扫描目的以及每次使用的nmap命令。
- 1.攻击方kali的IP:192.168.200.2;防守方seedubuntu的IP:192.168.200.9
- 2.在kali上运行命令tcpdump -i eth0 -w listen.pcap和攻击指令
- 3.在wireshark中可以看到收到的攻击
学习中遇到的问题及解决方法
1、kali的apt无法更新库进而不能安装工具
按照地址 /home/etc/apt/sources.list 在文件中换源(我换成浙大的源之后比较稳定正常)
2、命令使用有时不清楚,需要细心和学习。
3、感谢卡米亚@冯文浩的细心指导,帮助我还算顺利完成作业。
4、参考了很多同学的作业,再次感谢。
可爱的蕾新
可爱的大神
善良的卡米亚