zoukankan      html  css  js  c++  java
  • 20199321 2019-2020-2 《网络攻防实践》第四周作业

    1 实践内容

    1.1 网络嗅探

    • 利用计算机网路接口截获目的地为其他计算机的数据报文,监听数据流中所包含的用户账户密码或私密信息等。

    • 网络嗅探是一把双刃剑。

    • 网络嗅探分类

      • 网络嗅探技术可以按照所监听的链路层网络进行分类。(主要监听对象:以太网[有线]、WI-Fi[无线])
      • 网络嗅探器按照实现方式也可以分为硬件(协议分析仪)和软件嗅探器两种。
    • 网络嗅探原理

      • 以太网工作原理:以太网是共享信道,采用载波监听/冲突检测技术,在以太网共享通信媒介中,网络上的站点采用广播机制,所以计算机能够接收到在共享媒介上发送给其他计算机的信息。在网卡收到以太网共享媒介上传输的数据时,如果网卡驱动程序设置为混杂模式,则其能够接收一切通过它连接共享通信媒介的数据帧。

      • 根据以太网在实际部署有线局域网方式的不同分为共享式网络与交换式网络两种。

        部署 共享式网络 交换式网络
        连接 集线器 交换机
        功能 在同一集线器上连接的所有主机在发送数据包时,都会发往每一台主机,因此其中任一主机都能够嗅探整个集线器上的全部网络流量 交换机根据映射表与数据包的目标MAC地址进行转发的,因此可以有效地避免网络广播风暴,减少网络数据被嗅探的风险
      • 使用MAC地址洪泛攻击、MAC欺骗、ARP欺骗等在交换网络中实现嗅探。

    • 网络嗅探软件

      类UNIX平台 Windows平台
      libpcap抓包开发库、tcpdump以及 wireshark嗅探器等 类UNIX平台的对应移植版本,wireshark、snifferPro等
      通过内核态的BPF和用户态的libpcap抓包工具库实现 -

    1.2 网络协议分析

    • 网络协议分析是指对网络上传输的二进制格式数据包进行解析,以恢复出各层网络协议伈息以及传输内容的技术方法。
    • 网络协议分析过程
      • 得到链路层传输的二进制数据包,一般为以太网数据帧
      • 进行结构分析,根据帧头Type字段确定网络层协议类型
      • 对IP数据包进行分析
      • 根据TCP或UDP的目标端口确定具体的应用层协议
      • 依据相应的应用层协议对数据进行整合恢复,得到实际传输的数据

    2 实践过程

    2.1 tcpdump

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

    • 在ubuntu中输入命令sudo tcpdump src 192.168.200.3 and tcp dst port

    • 由此可知浏览器访问的Web服务器如下:
     39.156.66.179  
     221.182.218.238 
     221.182.218.151
     221.182.218.244
     221.182.218.229//天涯IP,海南省海口市
    

    2.2 Wireshark

    使用Wireshark开源软件对在本机上以telnet方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
    (1)你所登录的BBS服务器的IP地址与端口各是什么?
    (2)telnet协议是如何向服务器传送你输入的用户名及登录口令的?
    (3)如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?

    • 在命令行输入telnet bbs.fudan.edu.cn,注册后进行登录并捕包,查看Wireshark捕包情况如下。

    • 查看包ip地址为【202.120.225.9】 ,端口为【23】

    • telnet是使用明文传输传送输入的用户名及登录口令,并且是单个字符传输。如图中标出了部分被的包中,包含我输入的信息。

    • 利用【telnet】过滤出来,并TCP追踪BBS的IP作为源地址,可以发现用户名及登录口令

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

    1.攻击主机的IP地址是什么?
    2.网络扫描的目标IP地址是什么?
    3.本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
    4.你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
    5.在蜜罐主机上哪些端口被发现是开放的?
    6.攻击主机的操作系统是什么?

    • 用wireshark打开listen.pcap,点击【菜单栏->统计->会话->IPv4】,172.31.4.178172.31.4.188之间发送了大量的数据包,判断攻击发生在二者之间。

    • 对tcp数据包的分析,存在许多的下面的过程,这是典型的TCP SYN(半开)扫描的包的特征。从而可以看出攻击主机的IP地址是172.31.4.178,网络扫描的目标IP地址是:172.31.4.188
     172.31.4.178 发送SYN包给 172.31.4.188
     172.31.4.188 发送SYN ACK包给 172.31.4.178
     172.31.4.178发送RST包给 172.31.4.188
    

    端口开放:1、Client发送SYN 2、Server端发送SYN/ACK 3、Client发送RST断开
    端口关闭:1、Client发送SYN 2、Server端回复RST(表示端口关闭)

    • 进入【共享文件夹】,运行指令sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap查询结果如下(-A是开启报警模式,-q为不显示状态报告,-r为从pcap格式的文件中读取数据包),可知通过nmap工具对端口进行了扫描。。

    • 由于我们已经确定了这些扫描是由 nmap 所发起的,而 nmap 在发起端口扫描之前总是先通过 Ping扫描和针对80端口的探测确定目标主机是否活跃,通过过滤器搜索icmp,可以定位ICMP协议对应的Ping扫描。

    • TCP SYN扫描。攻击机57738端口向目标主机进行的TCP SYN扫描。大量包都是SYN、SYN ACK、RST包。能够给予SYN ACK包回应的端口都是打开的,并且有大量的这样的包,证明探测的端口也是很多的,有12万左右,并且大量端口是不可达的,所以每次探测一般发送的SYN和回复RST,因此有很有可能是使用-p指定了扫描所有端口。

    TCP SYN扫描原理
    1、扫描端向目标端发送SYN请求建立连接
    2、目标端收到请求后,回复ACK同意连接并同意发送SYN请求建立连接
    3、扫描端收到后,发送ACK同意,此时三次握手完成,以此来判断端口是否存活

    • 使tcp.flags.syn == 1 and tcp.flags.ack == 1进行过滤,可以过滤出SYN | ACK的数据包,即为目标主机反馈端口活跃信息所以活跃端口为21(FTP),22(ssh),23(Telnet),25(SMTP),53(DNS),80(HTTP),139(NetBIOS/SMB),445(SMB),3306(MySQL),5432(postgresql),8009,8180。

    • 不同操作系统的ttl是不一样的。ttl=64因此靶机使用的操作系统应该是linux。

    • 使用以下命令安p0f,p0f是一个纯粹的被动指纹识别工具,它在不干涉双方通信的情况下,通过嗅探的方式来分析流经某一网卡的流量以达到指纹识别的目的。
      换源-阿里云

    sudo apt-get update  
    sudo apt-get install snort
    sudo chmod 777 /etc/snort/snort.conf 
    
    使用方法
    命令行参数
    用法: p0f  [ …选项… ]  [ ‘过滤规则’ ]
    网络接口选项:
    -i  iface  - 指定监听的网络接口
    -r  file   - 读取由抓包工具抓到的网络数据包文件
    -p        - 设置 -i参数 指定的网卡 为混杂模式
    -L        - 列出所有可用接口
    操作模式和输出设置:
    -f  file   - 指定指纹数据库 (p0f.fp) 路径,不指定则使用默认数据库。(默认:/etc/p0f/p0f.fp)
    -o  file   - 将信息写入指定的日志文件中。只有同一网卡的log文件才可以附加合并到本次监听中来。
    -s  name   - 回答 unix socket 的查询 API
    -u  user   - 以指定用户身份运行程序,工作目录会切换到到当前用户根目录下;
    -d        - 以后台进程方式运行p0f ,需要配合-0或者-s选项
    性能相关的选项:
    -S  limit  - 设置API并发数,默认为20,上限为100;
    -t  c,h    - 设置连接超时时间 (30s,120m)
    -m  c,h    - 设置最大网络连接数(connect)和同时追踪的主机数(host)(默认值: c = 1,000, h = 10,000).
    
    • 利用p0f -r listen.pcap进行探测得到具体结果

    2.4 实践作业——攻防对抗实践

    攻击方用nmap扫描(达到特地目的),防守方用tcpdump嗅探,用Wireshark分析,并分析出攻击方的扫描目的以及每次使用的nmap命令。

    • 使用WinXP作为攻击机,IP:192.168.200.2,UbuntuSeed作为靶机,IP:192.168.200.3

    • 第一部分:攻击机使用ping命令,防守方用tcpdump嗅探,用Wireshark分析捕包。

    • 检测出ICMP协议数据包,可以推测为ping命令。目的是探测主机是否在线。第1,2个数据包为在广播域内广播arp报文.

    • 第二部分:对靶机进行TCP端口扫描,结果如图,只有22端口开放


    • 捕获的包中有许多RST ACK包,证明许多端口不可达,表明端口未开放,推测使用半开扫描,并且因为端口不可达,存在大量RST包。

    • 第三部分:对目标机进行UDP端口扫描:nmap -sU 192.168.200.3

    4 学习中遇到的问题及解决方法

    • 虚拟机在安装Nsort时遇到问题,打算重新安装kali,进行安装。(已经解决,实验过程补充在上面)
    • BBS论坛参考其他同学的博客选择了可以用的复旦大学的论坛。
    • 主机和虚拟机之间的传输问题,直接拖拽会卡死,通过共享文件夹解决。

    5 实践总结

    在充分了解了各种的扫描过程和原理后,在分析时才能够抓住头绪,利用好工具,做好判断。发现以前学习的还是十分浅显,需要进一步学习。

    6 参考资料

    Kali安装所用教程汇总
    最全的tcpdump使用详解
    p0f - 被动探测操作系统工具

  • 相关阅读:
    如何找出数组中重复次数最多的数
    如何计算两个有序整型数组的交集
    如何分别使用递归与非递归实现二分查找算法
    如何用递归算法判断一个数组是否是递增
    如何用一个for循环打印出一个二维数组
    如何用递归实现数组求和
    ElasticSearch安装和head插件安装
    SpringBoot全局异常处理方式
    Redis高级命令操作大全--推荐
    Mysql中FIND_IN_SET和REPLACE函数简介
  • 原文地址:https://www.cnblogs.com/20199321zjy/p/12552235.html
Copyright © 2011-2022 走看看