20199320 2019-2020-2 《网络攻防实践》第四周作业

20199320 2019-2020-2 《网络攻防实践》第四周作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/19attackdefense
这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10518
我在这个课程的目标是 掌握网络攻防知识及操作
这个作业在哪个具体方面帮助我实现目标 学习网络嗅探技术,分析网络协议
作业正文.... 见下文
其他参考文献 见文末

1. 实践内容

1.1 网络嗅探

  • 网络嗅探概述

    网络嗅探技术是一种常用的窃听技术,利用计算机的网络接口截获并监听数据流中所包含的隐私信息。

  • 网络嗅探的原理与实现

    以太网工作原理介绍:以太网通过使用CSMA/CD协议的共享通信信道进行消息传输。以太网中的数据以帧为单位,将上层的数据包装配上帧头和帧尾,通过MAC地址匹配数据包的目标。当网卡处于混杂模式下,能够接受一切通过它连接的以太网络的数据帧。

  • 不同平台网络嗅探技术实现

    类UNIX平台下,用户态的libpcap与内核态的BPF和过滤机制进行配合,共同提供UNIX平台的网络嗅探接口;windows平台下,通过与libpcap相容的WinPcap进行抓取。

  • 网络嗅探软件

    类Unix平台下的嗅探软件:libpcap、tcpdump、wireshark和dsniff、sniffit等等

    windows平台下的嗅探软件:wireshark、snifferPro等等

  • 网络嗅探的检测

    可以通过探测网卡是否处于混杂模式来进行检测,或者通过构建MAC地址无效但是IP地址有效的ICMP Echo请求查看主机是否返回应答包从而测试网卡是否处于混杂状态。

  • 网络嗅探的防范措施

    采用安全的网络拓扑,对网络进行合理分段;通过在重要的主机或网关上设置静态的ARP对应表,以及在交换机上设置静态的MAC-端口映射表,能够防止利用MAC地址欺骗、ARP欺骗等手段进行嗅探的手法;重视网络数据传输的集中位置点的安全防范;避免使用明文传输口令或敏感信息的网络协议。

1.2 网络协议分析

  • 定义

    对解惑的以二进制数字发送的数据包进行分析,得出该数据包使用的协议以及内容的技术。

  • 原理

    首先利用嗅探技术截获链路层数据包,然后逐步分析确定该数据包使用的网络层协议、传出层协议、应用层协议,最后解析获得传输的数据。

  • 网络协议分析工具

    wireshark

2. 实践过程

2.1 动手实践——tcpdump

使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?

在kali虚拟机上终端输入tcpdump src 192.168.200.4 and tcp dst port 80,浏览器访问www.tianya.cn,tcpdump嗅探到的数据包如下:

可得:浏览器访问了以下6个服务器:

124.225.135.230 海南省三亚市电信

218.77.130.200 海南省 电信

124.225.214.214 海南省海口市电信

72.21.202.25 美国 华盛顿州西雅图市亚马逊公司数据中心

server-99-84-106-158.iad79.r.cloudfront.net 对应IP:99.84.106.158 美国 弗吉尼亚 阿什本

124.225.65.154 海南省海口市电信

2.2 动手实践——wireshark

使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:

(1)你所登录的BBS服务器的IP地址与端口各是什么?

(2)TELNET协议是如何向服务器传送你输入的用户名及登录口令?

(3)如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?

(1)首先打开本机的telnet服务,控制面板-程序和功能-启用或关闭windows功能-勾选telnet客户端。

本机以telnet方式登录BBS,这里尝试了大量网站,但奇怪的是telnet登录不上, 花费了很多时间,后来选择登录另一主机(winXP),在winXP上打开wireshark,物理主机运行窗口输入telnet 192.168.200.2,提示是否传输信息,输入y回车,输入登录名和密码,此时winXP补到的数据包中可捕获到如下信息:

得到登录的服务器IP:192.168.200.2,端口:23

(2)本地终端上输入的用户名和口令及以后输入的任何命令或字符都以NVT(Net Virtual Terminal)格式传送到远程主机,该过程实际上是从本地主机向远程主机发送一个IP数据报。

注:Telnet远程登录服务分为以下4个过程:
 1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;
 2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据报;
 3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
 4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。

(3)选择一个数据包右键进行TCP流跟踪,获取到登录用户名和密码,如下图:

2.3 取证分析实践——解码网络扫描

  • (1)攻击主机和目标主机的IP是多少?

    使用kali虚拟机环境,先下载老师提供的listen.pcap并复制到kali,用wireshark打开,再点击Statistics->Conversations->IPv4, 查看攻击机和靶机的IP,如图:

    发现172.31.4.178与172.31.4.188有大量数据包交互,再过滤icmp包,如图:

    发现由172.31.4.178向172.31.4.188发出的都是request请求包,172.31.4.188向172.31.4.178发出的是回执包,由此断定,攻击机IP:172.31.4.178 靶机IP:172.31.4.188

  • (2)本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?

    这里用snort工具分析,具体安装如下(注:这里可能多次出错,一般是因为网络连接不稳定,只要断开再连就可,不要问我为什么知道,之前安装open-vm-tools因为同样的问题尝试了几乎一下午,唉,这该死的网络):

    sudo apt-get install snort
    
    sudo update-rc.d snort disable
    
    sudo chmod 777 /etc/snort/snort.conf
    
    sudo apt-get install python-pip(安装pip)
    
    sudo pip install websnort
    
    安装好配置snort IP地址为192.168.200.0/25
    

    终端输入sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r /home/kali/Desktop/listen.pcap

    其中参数意义:

    -A 设置报警模式

    -q 安静模式,不显示标志和状态报告

    -u 初始化后改变Snort的UID

    -c 使用配置文件,这会使得snort进入IDS模式,并从中读取运行的配置信息

    -r 从pcap格式的文件中读取数据包

    如图:

    可得本次攻击是nmap发起的。

  • (3)你所分析的日志文件中,攻击者使用了哪种扫描方法,扫描的目标端口是什么,并描述工作原理。

    以arp条件过滤,发现攻击机和靶机有4组数据包,因为在每次扫描之前,nmap会通过arp更新目标MAC地址,故推测共进行了4次扫描。

    1)上述的icmp过滤发现有数据包交互,说明进行了icmp ping扫描,即nmap -sP 172.31.4.188.

    2)观察到数据包有大量进行了TCP SYN扫描,如图,以目标主机139号端口为例,攻击机向靶机发送带[SYN]标志的请求包,靶机返回一个[SYN/ACK]确认连接,主机再发送一个[RST]断开连接,表名该端口开放。故推测攻击机进行了nmap -sS 172.31.4.188 扫描。如图:

    3)由于不同端口对应不同的服务,参考常用端口号及对应服务(这里以53号端口为例),以53号端口进行过滤tcp.port==53,发现,除了建立TCP的半开连接,竟然真的建立了dns连接,这是为了探测靶机的网络服务,于是猜测攻击机对靶机进行了-sV的版本扫描。原理:版本检测不同于其他扫描,它不是用来扫描靶机上开放的端口,不过他需要从开放的端口获取信息来判断软件的版本,故一些相应开放的端口若建立了对应的服务,则可推断使用了版本检测扫描。如图:

    4)对多路复用的1号端口进行过滤,发现建立了发送了大量的标志位,以触发大量响应包,进而可探测出靶机的操作系统。如图,推测使用的nmap -o 进行操作系统探测。nmap 系统探测的原理就是利用探针数据包来查看目标主机的响应数据,分析操作系统的"指纹"确定操作系统,这些探针利用了TCP、UDP、ICMP等各种协议,经过巧妙地设计,发现操作系统的细微差别。如图:

  • (4)在蜜罐主机上发现那些端口是开放的?

    tcp.flags.syn == 1 and tcp.flags.ack == 1过滤出SYN | ACK的数据包,即靶机反馈扫描机的端口活跃信息。如图,可以确定21,22,23,25,53,80,139,445,3306,3632,5432,8009,8180这几个端口是活跃的。

  • (5)额外奖励问题:攻击主机的操作系统是什么?

    这里使用p0f工具,p0f是一款被动探测工具,能够通过捕获并分析目标主机发出的数据包来对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙的情况下也没有问题。

    首先终端输入apt-get install p0f 安装,之后利用命令p0f -r /home/kali/Desktop/listen.pcap 探测到攻击机的操作系统为:linux 2.6.x ,如图:

2.4 攻防对抗实践

攻击方用nmap扫描,防守方用tcpdump嗅探,用wireshark分析,并分析出攻击方的扫描目的以及每次使用的nmap命令。

  • kali(192.168.200.4)作为攻击方,nmap扫描,seedubuntu(192.168.200.6)作为防守方,输入tcpdump -i ens33 -w /home/seed/test.pcap监听并且保存文件为test.pcap。利用wireshark打开test.pcap进行如上一个实验的分析,可成功猜测攻击机使用的nmap命令。

  • 通过查看ICMP数据包推测攻击方的命令:ping 192.168.200.6,如图:

  • 通过成功建立的TCP SYN半开连接推测命令:nmap -sS 192.168.200.6,如图:

  • 通过22号端口建立了ssh服务推测攻击方命令:nmap -sV 192.168.200.6,如图:

  • 通过1号端口构造的大量标志位推测攻击方命令:nmap -O 192.168.200.6,如图:

3. 学习中遇到的问题及解决

  • 问题1:物理主机telnet方式登录远程主机时,显示该命令不是本地命令。

    解决方法:打开控制面板-程序和功能-启用或关闭windows功能-勾选telnet客户端,启动telnet服务。

  • 问题2:以telnet方式登录BBS网站总显示23号端口连接失败,明明已经开启telnet服务了,所以到底为什么?

    解决方法:查阅资料,先ping一下该网站,有的成功有的失败,但是即使ping成功,telnet依旧登录不上,鄙人实在找不到解决方法了,改换为登录远程主机,总之能获取到用户名和密码,理解了telnet的简单使用。

  • 问题3:kali安装vmtools总出现依赖性错误,提示手动删除open-vm-tools.

    解决方法:尝试各种方法删除还是出错,最后百度到因为kali2.0以上版本不再适用vmtools,而是有自己的open-vm-tools工具,需先在文件/etc/apt/sources.list中更新源,把之前的源注释掉,添加以下

    #阿里云源
    
    deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib(实测可用,推荐)
    
    终端执行(提示:保证kali联网)
    
    apt-get update
    
    apt-get install open-vm-tools-desktop fuse
    
    reboot
    

    重启后即可。

4. 实践总结

本次实践的内容是网络嗅探,基本掌握了wireshark抓包工具的使用,熟悉了tcpdump进行网络嗅探的使用,更加掌握了nmap的原理,通过解码网络扫描的实践学会了用snort分析攻击机使用了什么扫描命令,同时用wireshark分析攻击机的扫描命令,通过攻防对抗实践更加熟悉了相关原理和操作。期间出现了n个错误,好在最后通过各种方法解决了,深刻体会到这门课需要很大的耐心,加油。

5. 参考文献

posted @ 2020-03-24 15:21  梁旭20199320  阅读(292)  评论(0编辑  收藏  举报