这个作业属于哪个课程 | 《网络攻防实践》 |
这个作业的要求在哪里 | 网络攻防第四周作业 |
我在这个课程的目标是 | 学习网络嗅探技术,协议分析,完成动手实践 |
这个作业在哪个具体方面帮助我实现目标 | 学习网络嗅探技术的原理与实现,运用相关软件,检测与防范;网络协议分析的原理、技术实现。 |
作业正文 | 见作业 |
其他参考文献 | 见文末 |
一.实践内容
(一)网络嗅探技术
1.概述
定义:网络嗅探技术是一种黑客常用的窃听技术,利用计算机网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码和私密信息等。
危害与作用:嗅探技术是一把双刃剑,对攻击者来说,可以被动地嗅探网络传输数据,不容易被发现,具有很强的隐蔽性和非干扰性;网络管理员也可以用此来检测网络环境,发现问题。
嗅探技术与工具的分类:按照所监听的链路层网络分类,tcpdump支持以太网的嗅探,即有限局域网;Kismet支持WiFi,即无线局域网的嗅探。按照实现形式分为硬件嗅探器和软件嗅探器。
2.原理与实现
以太网工作原理:以太网与电话线路不同,它是共享通信信道的,然后采用了冲突检测技术避免共享链路的通信冲突。数据传播是以“帧”进行的,网络接口设备通常是网卡,都有48位的接口地址。在网卡收到传输的数据时,正常模式下,只会接受地址相匹配的数据,而在混杂模式下,网卡能接受一切通过它连接的数据帧,无论是不是发给他的。我们为了嗅探以太网上的流量,就要将网卡设置为混杂模式。
共享式网络与交换式网络中的嗅探:以太网在实际部署有限局域网时,分为共享式网络和交换式网络,分别用集线器和交换机连接。纯交换网络中也有方法实现嗅探,例如MAC地址泛洪攻击、MAC欺骗、ARP欺骗。
类UNIX平台的实现:主要是通过内核态的BPF和用户类的libpcap抓包工具实现的
嗅探软件:tcpdump软件(目前维护地最好)、wireshark软件,libpcap抓包开发库,其他如dsniff、sniffit等
Windows平台的实现:需要通过一个驱动程序或网络组件来访问内核网卡,目前常用的是NPF(内核态虚拟设备驱动程序)或用户态的WinPcap
嗅探软件:tcpdump软件
3.检测与防范:判断网卡是否处于混乱模式下;尽量采取交换式网络,重视网络数据传输的集中位置点的安全防范,避免使用明文传输口令和敏感信息的网络协议。
(二)网络协议分析
网络协议分析是网络嗅探器进一步解析与理解捕获数据包必需的技术手段,为获取二进制包中的具体内容,就需要通过TCP/IP协议栈的协议规范重新还原数据包在各个协议层的格式和内容。
1.技术原理:
网络协议分析是指对网络上传输的二进制格式数据包进行解析, 以恢复各层网络协议信息以及传输内容的技术方法。步骤为1.对以太网数据帧进行结构分析,定位帧头各字段结构,根据帧头Type字段确定网络类型协议;对IP数据包进行分析,根据IP协议头中的Protocal字段确定传输层协议类型;根据TCP或UDP的目标端口确定具体应用层协议,如http、ftp、telnet等协议数据包;根据应用层协议对数据进行整合。
2.分析工具Wireshark
总览窗口中会逐行列出数据包,并提供数据包编号、捕获时间、源和目的地址,数据包使用的协议(一般是最高层协议)。若选中某一行则在数据查看中会被高亮显示。通过过滤器设置捕捉时过滤可采用如下基本命令:
```[srcldst]host<host>``` 监听指定主机为源地址;
```lesslgreater<lenth>``` 选择长度符合要求的包(大于等于或小于等于)
```[tcpludp][srcldst]port<port> ``` 过滤TCP,UDP及端口号
二.实践过程
(一)动手实践:tcpdump
使用tcpdump开源软件对本机上访问www.tianyan.cn网站进行嗅探,回答问题:在访问此首页时,浏览器访问多少个web服务器?IP地址都是什么?
- 使用ubuntu虚拟机来嗅探主机的访问情况,kali用不了不知道为什么。打开终端输入
tcpdump src 10.46.1.18 and tcp dst port 80
,中间为自己主机的ip地址。
- 通过嗅探结果可以看到浏览器一共访问了7个IP地址,分别是
124.255.65.154
(日本)
124.255.135.230
(日本)
124.255.214.206
(日本)
124.255.65.173
(日本)
124.215.214.214
(日本)
218.77.130.200
(海南省海口市 电信)
72.21.202.25
(美国弗吉尼亚阿什本 亚马逊云) - 输入
nslookup tainya.cn
查看www.tianya.cn的IP地址,验证IP是正确的。
(二)动手实践:Wireshark
使用tcpdump开源软件对本机上以telnet(基于文本的网络协议)方式登录BBS(网络论坛)进行嗅探与协议分析,
- 所登录的BBS服务器的IP地址和端口各是什么?
- telnet协议是如何向服务器传送所输入的用户名及登录口令的?
- 如何利用wireshark分析嗅探数据包,并从中获取用户名和登录口令?
下面以复旦大学BBS举例,嗅探其IP地址和端口等信息。
(1)首先在主机上打开telnet,通过搜索,打开控制面板->卸载程序->启用或关闭Windows功能->勾选telnet客户端。
(2)下载安装好wireshark软件并打开,选择菜单栏上捕获 -> 选项,勾选对应网卡(我的是网线连接,所以选择以太网网卡)。
(3)在终端cmd中登入复旦大学的论坛,输入telnet bbs.fudan.edu.cn
。
(4)可以看到其IP地址为202.120.225.9;端口为 23 ;输入new进入注册账号。
(5)在过滤器中输入ip.src == 202.120.225.9
,可看到telnet数据包。
(6)通过追踪 TCP 流,详细参考wireshark追踪tcp流的方法
(7)可以看到我们的账号和密码(因为Telnet协议在传输用户名和密码时采用的时明文传输)
(三)实践作业:
1.取证分析实践:解码网络扫描
分析由人为构造的到一台蜜罐主机的五次不同类型的端口扫描。
- 攻击主机的IP地址是什么?
- 网络扫描的目标IP地址是什么?
- 本次案例中是使用哪个扫描工具发起了这些端口扫描?如何确定?
- 所分析的日志中,攻击者使用了哪种扫描方法,扫描目标端口是什么?
(1)打开老师给的文件,通过发送数据初步判断攻击机IP地址为172.31.4.178
,目标主机IP地址为172.31.4.188
,因为TCP在其协议头中使用大量的标志位或者说1位(bit)布尔域来控制连接状态
SYN
- 创建一个连接
FIN
- 终结一个连接
ACK
- 确认接收到的数据
一直是172.31.4.178
在创建连接,172.31.4.188
返回接受到的数据。
(2)使用的是nmap扫描工具
(3)判断nmap扫描时使用的指令:nmap扫描的原理和ping类似,在每次扫描前,nmap会通过arp更新目标MAC地址,因此过滤文件的arp包如下图,然后找到了四次who has 172.31.4.188?tell172.31.4.178,从而判定四次扫描的起点:No、5,No、7,No、2071,No、133220。第一步次扫描猜测是使用nmap -sP
指令。
(4)然后使用tcp.port == 57738 and tcp.flags.syn == 1 and tcp.flags.ack == 1
指令,可获得开放端口的数据。
(5)nmap -O
具有判断扫描主机操作系统的功能,第二次扫描从No.7到No.2070,对之间的数据包分析可发现,有许多的端口数据频繁传输,可通过对比不同操作系统之间的差异确定目标机的操作系统类型。
(6)第二次扫描从No.7到No.2070,第三次扫描从No.2071到No.133219,第三次扫描的数据量非常大,可能是通过nmap -sS
来指定扫描的端口数量。
(7)通过tcp.port == 23
(23为telnet端口)过滤文件数据,发现前三次都是建立连接之后就重置,但第四次出现了telnet连接,因此判断第四次扫描为nmap -sV
命令,扫描了安装的网络服务。
三.学习中遇到的问题及解决
- 问题1:在实践tcpdump时,Ubuntu不能嗅探到主机。
- 问题1解决方案:ping了主机一下,发现不能ping通,更改网卡设置为桥接模式便可以嗅探。
- 问题2:kali虚拟机上安装不了snort
- 问题2解决方案:上网查询了相关原因,没有查到具体原因;好像Windows机可以安装,课后再试一下。
四.实践总结
- 有很多用虚拟机的细节都需要去网上寻找方法,会卡在一个很小的地方,所以还需要不断地去尝试,总结经验。
- 实践过程中,尤其是最后的分析过程,参考了孙启龙、解建国等同学的博客,再对照学习内容进行完善。如果是自己来分析,还是会比较困难。缺少比较多的基础知识,希望后面能一边实践一边补充。