20199317 2019-2020-4 《网络攻防实践》第4周作业
1.实践内容
1.1 网络嗅探
1.1.1 网络嗅探概述
- 网络嗅探(Sniff)是一种黑客常用的窃听技术,与传统的电话窃听在电话线路上对特定号码的内容进行监听类似,网络嗅探利用计算机的网络接口目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密信息等。
- 网络嗅探技术与工具分类:按照所监听的链路层网络进行分类,以太网(Ethernet)与Wi-Fi是目前有线局域网(Local Access Network,LAN)与无线局域网(Wireless Local Access Network,WLAN)最流行的链路层协议,也是目前的网络嗅探器主要监听对象。按照实现形式分为软件嗅探器和硬件嗅探器两种。
1.1.2 网络嗅探的原理与实现
- 以太网工作原理:以太网中数据的传播是以“帧”为单位进行的,而以太网上的网络接口设备(Network Interface Controller,NIC),通常是网卡,都拥有一个48位的MAC地址。在网卡收到以太网共享媒介上传输的数据时,网卡驱动程序在正常模式设置下,只会接受目标MAC地址与网卡自身MAC地址相匹配的数据帧,或目标MAC地址为广播地址的广播帧。而网卡驱动程序还支持一种混杂模式,处于该模式下的网卡能够接收一切通过它连接共享通信媒介的数据帧,而不管该数据帧是否是传给它的。
- 在纯交换的网络中,使得本不应到达的数据包到达本地以实现嗅探的技术手段有:MAC地址洪泛攻击、MAC欺骗、ARP欺骗。
1.1.3 网络嗅探软件
- 类UNIX平台网络嗅探器软件
类UNIX平台上的网络嗅探器软件一般都是基于标准接口BPF与libcap,最常用的包括libcap抓包开发库、tcpdump以及wireshark嗅探器软件。 - Windows平台网络嗅探器软件
Windows平台上也有非常多的网络嗅探器软件,类UNIX平台上的BPF/libpcap/tcpdump标准嗅探接口与程序在Windows平台上有对应的移植版本,即NPF/winpcap/windump,著名的开源网络嗅探软件wireshark也有Windows版本。
1.1.4 网络嗅探的检测与防范
- 网络嗅探的检测:网络嗅探属于一种被动式非干扰性的攻击手段,具有很高的隐蔽性,在同一主机上,可以通过检查网卡是否运行在混杂模式下,来发现正在进行监听的嗅探器,此外,也可以基于混杂模式下操作系统和协议栈的不同特性,来检测出网络中其他主机上的嗅探器。如在Linux内核中,正常情况下,只处理本机MAC地址或者以太网广播MAC地址的数据包,而在混杂模式下,许多版本Linux内核只检查数据包中的IP地址以确定是否送到IP协议栈,因此可以构造MAC地址无效而IP地址有效的ICMPEcho请求,看目标主机是否返回应答包,如果目标主机返回应答包,说明目标主机未检查MAC地址,即处于混杂模式,正执行嗅探;而如果目标主机忽略请求,则说明目标主机网卡处于正常模式。
- 网络嗅探的防范措施:采用安全的网络拓扑,尽量将共享式网络升级为交换式网络,并通过在交换机上设置VLAN等技术手段;用静态ARP或者MAC-端口映射表代替动态机制;重视网络数据传输的集中位置点的安全防范,如网关、路由器和交换机等;避免使用明文传输口令或敏感信息的网络协议。
1.2 网络协议分析
网络协议分析是指对网络上传输的二进制格式数据包进行解析,以恢复出各层网络协议信息以及传输内容的技术方法。
网络协议分析与主机的解包过程原理类似,需要从底向上逐层地解析网络协议,同时进行IP分片包以及TCP会话的重组,但不同的是,主机上接收数据包的关键目的只是获取其中包含的应用层数据,对传输层、网络层与链路层上的信息内容并不关心,而网络协议分析则需要解析与保存各个网络层次上的所有包头字段信息,以及最高层的应用层数据内容,并提供给用户用以了解网络数据包的全方位信息。
2.实践过程
实践一:tcpdump
- 使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
在kali上输入命令tcpdump src 192.168.0.103 and tcp dst port 80
,这里的192.168.0.103是本机IP地址,得到如下结果:
浏览器访问Web服务器有很多个,在此只看上图中的4个,他们的IP地址为:124.225.65.154,124.225.135.230,218.77.130.200,72.21.202.25。
再用命令nslookup查询www.tianya.cn网站对应的IP地址,得到结果:
可以看到用tcpdump对www.tianya.cn进行嗅探成功。
实践二:Wireshark
- 使用Wireshark开源软件对在本机上以telnet方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
(1)你所登录的BBS服务器的IP地址与端口各是什么?
(2) telnet 协议是如何向服务器传送你输入的用户名及登录口令的?
(3)如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
首先在windows上开启Wireshark
然后进入命令行,输入telnet bbs.fudan.edu.cn
,可以看到如下界面:
得到我登录的复旦大学BBS服务器的IP地址为:202.120.225.9
使用注册的账号密码登录,(账号:chengzhenghu 密码:123456),登录后的界面如下:
再根据得到的IP地址在Wireshark设置过滤条件ip.addr==202.120.225.9
选中一数据包,右击选中跟踪——>TCP流,可看到如下所示:
可以看到输入的账号密码,说明telnet协议以明文向服务器传送输入的用户名及登录口令,
按如图所示选中192.168.0.107->202.120.225.9的数据流
得到结果:
chengzhenghu为抓取到的用户名,123456为抓取到的密码
取证分析实践:解码网络扫描
- 问题:
1.攻击主机的IP地址是什么?
2.网络扫描的目标IP地址是什么?
3.本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
4.你所分析的日志文件中,攻击者使用了哪种扫描方法,扫描的目标端口是什么,并描述其工作原理。
5.在蜜罐主机上发现哪些端口是开放的?
6.额外奖励问题:攻击主机的操作系统是什么?
打开从云班课上下载的listen.pcap,在出现的wireshark界面点击 统计(S)——>Conversations——>IPv4,得到如下图:
可以看到往返主机172.31.4.178和主机172.31.4.188之间的数据包很多,远多于其他三组,所以172.31.4.178和172.31.4.188即为攻击主机和靶机主机
从发送的TCP数据包可以看出,ACK数据包都是由172.31.4.188发出的,由此可确定网络扫描的目标IP地址为172.31.4.188,攻击主机的IP地址为172.31.4.178
本次案例中是使用了nmap发起的端口扫描,在kali中,安装 snort 工具sudo apt-get install snort
给予所有权限:sudo chmod 777 /etc/snort/snort.conf
进入 pcap 包所在目录后 cd Desktop
,执行sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap
,得到如下结果:
以arp作为过滤条件,攻击机在广播域中广播arp request报文,寻找目标IP地址为172.31.4.188的主机的MAC地址
以icmp作为过滤条件,可以看到两组ICMP request包和ICMP replay包,说明使用了主机扫描,并且确定了目标主机是活跃的,如下:
以tcp作为过滤条件,可以看到在数据包中存在大量SYN请求包,说明攻击机的57738端口向目标主机发起了TCP SYN扫描,以确定目标主机的哪些端口开放,开放的端口则回复 SYN|ACK数据包,不活跃的端口则回复RST|ACK数据包,如下
输入过滤条件:tcp.flags.syn == 1 and tcp.flags.ack == 1,则可以过滤出所有的SYN|ACK的数据包,即可得到所有的开放端口,如下:
开放的端口有:21(ftp),22(ssh),23(telnet),25(smtp),53(domain),80(http),139(ssn),445(microsoft-ds),
3306(mysql),5432(postgresql),8009,8180
首先输入sudo apt-get install pOf
安装pOf工具
再进入 listen.pcap 包所在目录后 cd Desktop
,输入命令sudo p0f -r listen.pcap
,得到如下检测结果:
于是,攻击主机的操作系统是Linux 2.6.x
攻防对抗实践
- 攻击方用nmap扫描(达到特定目的),防守方用tcpdump 嗅探,用Wireshark分析,并分析出攻击方的扫描目的以及每次使用的nmap命令。撰写实验报告。
使用kali(192.168.200.2)作为攻击方,Metasploitable2-Linux(192.168.200.125)作为防守方,在linux下输入tcpdump -i eth0 -w listen-nmap.pcap
进行数据包监听并将其存入到listen-nmap.pcap
攻击方使用nmap -sP 192.168.200.125
对防守方进行主机扫描
攻击机使用nmap -sS 192.168.200.125
对防守方进行TCP端口扫描,如下所示:
在防守方查看日志:sudo tcpdump -r listen-nmap.pcap
3.学习中遇到的问题及解决
- 问题1:在做实践二时,一开始是在kali下telnet,但是BBS界面出现乱码
- 问题1解决方案:最后用本机windows的命令行完成的,还是中文的看起来一目了然。。。
- 问题2:在kali中下载snort时出现Unable to locate package snort
- 问题2解决方案:问题出在源,更新源即可,参考https://blog.csdn.net/qq_43613772/article/details/103311593
4.实践总结
这次实验涉及到的知识点还是比较多的,但是我对于各种工具的使用还是不大熟悉,理解的也不够深入,需要继续学习。
参考资料
- Linux使用tcpdump命令抓包保存pcap文件wireshark分析》
- kali安装open-vm-tools-desktop出现 (已解决)-----E: 无法定位软件包 open-vm-tools-desktop
- .