20199115 2019-2020-2 《网络攻防实践》第四周作业
1.实践内容
一、网络嗅探技术概述
-
网络嗅探(Sniff),利用计算机的网络接口截获目的地为其他计算机的数据报文(二进制数据),以监听数据流中所包含的用户账户密码或私密信息
-
嗅探技术的危害与作用:
-
一方面对于攻击者可以获得机密信息、底层网络协议信息,有助于中间人攻击。
-
另一方面对于防御方利用网络嗅探找出关心网络中潜在的问题并解决。
-
-
网络嗅探技术与工具分类
-
按照所监听的链路层网络进行分类:
-
有限局域网(Local Access Network,LAN):以太网(Ethernet)::tcpdump
-
无线局域网(Wireless Local Access Network,WLAN):Wi-Fi::Kismet
-
-
按照实现形式进行分类:
-
软件嗅探器(对网卡进行编程的实现):价格便宜或者免费,易于使用,速度慢,不全面
-
硬件嗅探器(协议分析仪):速度快,捕获数据全面,成本高,价格昂贵
-
-
二、网络嗅探的原理与实现
-
以太网(802.3协议)工作原理
-
以太网是共享通信信道的,数据的传播是以“帧”为单位进行的,采用载波侦听/冲突检测技术避免共享链路上的通信冲突
-
网卡(Network Interface Controller,NIC):以太网上的网络接口设备,有48位的MAC地址(发送源的MAC地址、目标MAC地址)
-
混杂模式(Promiscuous Mode):此时网卡能够接收一切通过他连接共享通信媒介的数据帧。(嗅探以太网上的流量,就需要将网卡设为混杂模式)
-
-
共享式网络与交换式网络中的嗅探
-
根据部署方式的不同分为:
-
共享式网络
-
使用集线器(Hub)连接,其网络拓扑是基于总线方式,物理上是广播的。
-
集线器这种工作模式决定了在同一集线器上连接的所有主机在发送数据包时,都会发往每一台主机,因此其中的任一主机都能嗅探整个集线器上的全部网络流量
-
-
交换式网络
-
主要使用交换机组建,数据帧都是通过交换机进行数据转发。
-
交换机接收到数据帧后,转发处理通过MAC地址-端口映射表只允许与目标MAC地址匹配成功的数据包通过交换机,并只转发到特定端口上。(有效避免网络广播风暴,减少数据被嗅探的风险)
-
-
-
-
纯交换网络中,使用如下技术手段使得根本不应到达的数据包到达本地,实现嗅探
-
MAC地址泛洪攻击 (就是给交换机发送大量含有虚构MAC地址和IP地址的数据包,使他的表溢出无法处理,进入“打开失效”模式,开始类集线器的工作方式)
-
MAC欺骗(假冒所要监听的主机网卡,不断更新交换机的表,使原本发给目的主机的数据包,现在发给攻击者,达到数据嗅探的结果)
-
ARP欺骗(利用IP地址与MAC地址之间进行转换时的协议漏洞,达到MAC地址欺骗)
-
-
类UNIX平台的网络嗅探技术实现(主要通过内核态的BPF(Berkeley Packet Filter)和用户态的libpcap抓包工具库的实现)
-
Windows平台的网络嗅探实现技术(需要增加一个驱动程序或网络组件来访问内核网卡驱动中捕获的数据包,内核态虚拟设备驱动程序(NPF):过滤数据包,标准抓包接口(WinPcap))
网络嗅探软件
-
类UNIX平台网络嗅探软件(一般都是基于BPF与libpcap)
-
libpcap抓包开发库
-
tcpdump嗅探器软件 :最老的也是最通用的嗅探程序
-
wireshark嗅探器软件(ethereal):UNIX平台下最好的基于图形界面的嗅探软件。
-
其他嗅探软件 (Snort、dsniff、sniffit、linux-sniffer)
-
-
Windows平台网络嗅探器软件
- tcpdump嗅探器软件:通过
src 192.168.199.200 and tcp dst port 80
可以查看源主机向外连接的HTTP网络流量的情况。通过tcpdump将监视第一个网络接口上所有流过的数据包。
- tcpdump嗅探器软件:通过
网络嗅探的检测与防范
-
网络嗅探的检测
-
检查网卡是否允许在混杂模式,来发现正在监听的嗅探器
-
基于混杂模式下操作系统和协议栈的不同特性,来检测出网络中其他主机上的嗅探器
-
Linux,构造MAC地址无效而IP地址有效的ICMP Echo请求,看目标主机是否返回应答包,返回说明目标主机未检查MAC地址,处于混淆正执行嗅探
-
Windows,混杂模式下,检查一个包是否为以太网广播包,只要看MAC地址前八位是否为Oxff
-
目标主机的响应时间是否处于异常状态
-
-
网络嗅探的防范措施
-
采用安全的网络拓扑,尽量将共享式网络升级为交换式网络,并通过在交换机设置VLAN等技术手段
-
用静态ARP或者MAC-端口映射表代替动态机制
-
重视网络数据传输的集中位置点的安全防范
-
避免使用明文传输口令或敏感信息的网络协议,而使用加密及安全增强的协议进行替代
-
二、网络协议分析技术
-
网络协议分析技术原理
-
网络协议分析的典型过程包括以下几个步骤:
1、 网络嗅探得到的原始数据是在链路层传输的二进制数据包。
2、对帧结构进行分析,得到帧头各字段结构,根据帧头字段确定网络层的协议类型,并提取包含网络层数据的内容。
3、进一步对IP数据包进行分析,确定传输层协议类型,提取传输层数据内容。
4、根据TCP或UDP目标端口确定确定具体的应用层协议,得到应用层特定协议的应用交互内容。
5、依据相应应用层协议对数据进行整合恢复,得到实际传输数据。
-
- 网络协议分析工具Wireshark
2.实践过程
动手实践
tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个web服务器?他们的IP地址是什么?
- 直接启动tcpdump,将抓取所有经过第一个网络接口上的数据包
- 访问天涯主页,使用
sudo tcpdump src 192.168.200.2 and tcp dst port 80
(或者使用命令sudo tcpdump -nn '(tcp[tcpflags] & tcp-syn !=0 and tcp[tcpflags] & tcp-ack!=0) and (host 192.168.200.2)'
其中搜索条件:host 192.168.200.2
,tcp-syn !=0
,tcp-ack!=0
,即抓取syn不等于0,ack不等于0指定IP192.168.3.7的包。)
- 用
nslookup
查询www.tianya.cn
,核验
通过观察发现主要经过的Web服务器:221.182.218.238
,202.100.252.114
,124.225.214.214
,39.156.66.179
,221.182.218.229
,221.182.218.244
Wireshark
任务:使用wireshark对在本机上以telnet方式登录BBS进行嗅探与协议分析。回答如下问题并给出操作过程:
(1)你所登录的BBS服务器的IP地址与端口是什么?
(2)telnet协议是如何向服务器传送你输入的用户名及登录口令的?
(3)如何利用wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
- 首先打开Wireshark,然后在终端输入
luit -encoding gbk telnet bbs.fudan.edu.cn
进入复旦大学BBS论坛,利用Wireshark捕获,选择Protocol方式,捕获后可以看到地址为:202.120.225.9
,端口为23 ,Telnet协议在传输用户名和密码时采用的时明文传输,点击分析,追踪TCP流,选择对话,可以看到嗅探的数据包用户名为guest,密码为空
实践作业
任务人为构造的到一台蜜罐主机的5次不同类型的端口扫描。网络入侵检测器-snort捕获每次扫描的流量并存入tcpdump格式二进制网络日志文件中
问题:
(1) 攻击主机的IP地址是什么?
(2) 网络扫描的目标IP地址是什么?
(3) 本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
(4) 你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理?
(5) 蜜罐主机上哪些端口被发现是开放的?
(6) 攻击主机的操作系统是什么?
- 首先要了解一张tcp通信图
- 将listen.pacp文件移到kali里,用Wireshark打开该文件,我们可以看到攻击主机的IP为172.31.4.178,网络扫描的目标IP是172.31.4.188
- 使用snort对二进制记录文件进行入侵检测。首先通过
sudo apt-get install snort
安装snort,并给予snort.conf可读可写可执行权限sudo chmod 777 /etc/snort/snort.conf
,运行指令sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r ~/home/kali/Desktop/listen.pcap
查询(snort指令)。通过snort可以看出是采用namp发起的扫描。
- nmap每次探测主机活跃是在广播域内广播arp request报文,所以要在Wireshark中筛选ARP,我们可以从最前面的序号看到,找到了四次
who has 172.31.4.188?tell172.31.4.178
,从而判定四次扫描。
- 第一次扫描在5和6之后,紧接着又是一次arp,第一个和第二次之间并没有数据包。可见,第一次扫描的目的仅仅是确认主机活跃,所用的命令应该是
nmap -sP
。
- 第二次扫描是对端口进行半开的TCP SYN扫描。发现在TCP三次握手的过程中,攻击机发送SYN包后,靶机回应了RST/ACK包,但在这之后攻击机没有再返回ACK进行确认,故可以得出结论,这里只进行了半开扫描,也就是一个不完整的TCP三次握手。
-
第三次扫描,数据量十分庞大,应该是指定端口SYN TCP扫描,使用
nmap -sS -p 1-65535
-
第四次扫描,活跃性检测就是三次握手
SYN->SYN,ACK->SYN/RST
,但是我们观察第四次扫描,却建立了HTTP连接,说明这次扫描应该是namp -sV
。
- 首先确定端口,通过筛选tcp.flags.syn == 1 and tcp.flags.ack == 1,得到开放的端口有:21 22 23 25 53 80 139 445 3306 5432 8009 8180
- 使用
p0f -r listen.pcap
进行操作系统类型的探测(首先用sudo apt-get install p0f
安装), 结果应该是Linux 2.6X
攻防对抗实践 攻击方用nmap扫描,防守方用nmap嗅探,wireshark分析,并分析出攻击方的扫描目的以及nmap的命令
-
攻击机为kali
192.168.200.2
,靶机为Metasploitable2192.168.200.125
-
在Metasploitable2上运行
tcpdump -i eth0 -w dump.pcap
监听并且保存文件为dump.pcap -
在kali主机上用nmap进行攻击,包括-sP,-sV,-sS,-O攻击。
- 利用
tcpdump -r dump.pcap
查看和分析,或者导出利用Wireshark进行分析查看
3.学习中遇到的问题及解决
- 问题1:Wireshark使用不是很熟练,好多信息一开始根本看不懂
- 问题1解决方案:仔细阅读相关博客,了解其中隐含的信息内容
4.实践总结
多多动手,不会就查相关信息,不断学习!一定要多实践,多分析!!!!