linux|实践三 网络嗅探与协议分析


20212806 2021-2022-2 《网络攻防实践》第3周作业

    • 1.实验内容(知识总结)
    • 2.实验过程
    • 3.学习中遇到的问题及解决
    • 4.学习总结
    • 参考资料

1.实验内容(知识总结) 网络嗅探
(1)定义
网络嗅探是一种黑客常用的窃听技术,利用计算机的网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密信息等。
(2)网络嗅探器
实现网络嗅探技术的工具称为网络嗅探器。嗅探器捕获的数据报文是经过封包处理之后的二进制数据,因此通常会结合网络协议分析技术来解析嗅探到的网络数据,这样才能恢复出TCP/IP协议栈上各层网络协议的内容,以及事件发送的应用层信息。
(3)网络嗅探器的原理和实现
  • 以太网工作原理:以太网采用了CSMA/CD技术,由于使用了广播机制,所有与网络连接的工作站都可以看到网络上传递的数据。网卡是网络中主机接收发送数据的硬件设备。网卡完成收发数据包的工作。网卡对于数据的接收有四种模式:
    • 广播模式:该模式下的网卡能够接收网络中的广播数据。
    • 组播模式:该模式下的网卡能够接收组播数据。
    • 直接模式:只有匹配目的MAC地址的。网卡才能接收该数据。
    • 混杂模式:无论其目的MAC地址是什么,网卡都能够接收一切监听到的数据。
  • 网络监听的原理:
    • 利用以太网的特性把网卡置为混杂模式状态的工具,一旦网卡设置为这种模式,它就能接收经过它的每一个信息包。
    • 共享式网络嗅探:使用集线器连接,集线器上任意一台主机都能够嗅探整个集线器上的全部网络流量。
    • 交互式网络嗅探:通过MAC地址映射表来发送数据。通常有以下三种方式实现嗅探:
      MAC地址泛洪攻击、MAC欺骗、ARP欺骗
网络协议分析
  • 定义:网络协议分析是网络嗅探器进一步解析与理解捕获数据包必须的技术手段,是指对网络上传输的二进制格式数据包进行解析,以恢复出各层网络协议信息以及传输内容的技术方法。
  • 原理:网络协议分析需要从底向上逐层解析网络协议,同时进行IP分片包以及TCP会话的重组,需要解析与保存各个网络层次上的所有包头字段信息,以及最高层的应用层数据,并提供给用户以了解网络数据包的全方位信息。
  • 技术实现:在开源的软件如Tcpdump、Wireshark和Snort中都有相应源码实现。
  • 网络协议分析工具:Wireshark
2.实验过程 (1)动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
  • 先在kail上访问www.tianya.cn网站
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 在terminal运行命令 sudo tcpdump src 192.168.200.3 and tcp dst port 80 ,其中 src 和 dst 是确定传输方向的关键字,指明ip包中源地址是 192.168.37.129 ,表示只捕获80端口的TCP协议数据包,监听192.168.200.3的http通信。
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 成功得到浏览器访问的Web服务器的IP地址如下:

  • 通过 nslookup tianya.cn 命令查看www.tianya.cn对应的IP地址
    linux|实践三 网络嗅探与协议分析
    文章图片

(2)动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
你所登录的BBS服务器的IP地址与端口各是什么?
TELNET协议是如何向服务器传送你输入的用户名及登录口令?
如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
  • 选择在主机上进行telnet,首先将telnet打开
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 打开wireshark
  • 以 bbs.fudan.edu.cn 为例,打开windows终端在命令行输入 telnet bbs.fudan.edu.cn 进入
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 发现所登录的BBS服务器的IP为 202.120.225.9 ,然后输入 new 进行注册,再重新进入
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 在wireshark的过滤器直接输入 telnet ,即可过滤显示telnet相关的数据包,通过查看wireshark里面可知其端口号为23
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 可以发现这里传递用户名和密码时,是一个字符一个字符传递的
    linux|实践三 网络嗅探与协议分析
    文章图片

    linux|实践三 网络嗅探与协议分析
    文章图片

    linux|实践三 网络嗅探与协议分析
    文章图片

  • 可以看到传递密码是用明文传输的,很容易被获取,可知telnet是明文传输非常的不安全
    linux|实践三 网络嗅探与协议分析
    文章图片

    linux|实践三 网络嗅探与协议分析
    文章图片

    linux|实践三 网络嗅探与协议分析
    文章图片

  • 也可以通过追踪TCP流可以看到用户名和密码
    linux|实践三 网络嗅探与协议分析
    文章图片

(3)取证分析实践,解码网络扫描器(listen.cap)
1. 攻击主机的IP地址是什么?
2. 网络扫描的目标IP地址是什么?
  • 打开下载好的 listen.pcap,选择菜单栏中的统计->会话,再点击IPv4,可以看到 172.31.4.178 和 172.31.4.188 之间有大量的双向的网络数据包,因此可初步确定这两个是攻击主机IP和网络扫描的目标主机IP。
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 查看会话数据包内容,发现所有的请求数据包(如TCP SYN包)则是从172.31.4.178发起,所有的响应数据包(如SYN/ACK包)均是从172.31.4.188发出。
  • 攻击主机的IP地址是: 172.31.4.178
  • 【linux|实践三 网络嗅探与协议分析】网络扫描的目标IP地址是: 172.31.4.188
    3. 本次案例使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
  • 将 listen.pcap 复制到kali虚拟机中,使用snort对二进制记录文件进行入侵检测。
sudo apt-get update// 更新APT库 sudo apt-get install snort// 安装snort sudo chmod 777 /etc/snort/snort.conf // 给予snort.conf可读可写可执行权限 snort -A console -q -u snort -c /etc/snort/snort.conf -r ~/listen.pcap // -A开启报警模式,-q不显示状态报告,,-u为初始化后改变snort的UID,-c为使用后面的配置文件,进入IDS模式,-r从pcap格式的文件中读取数据包

  • 可以发现本次攻击是使用nmap发起的
4. 你所分析的日志文件中,攻击者使用了哪种扫描方法,扫描的目标端口是什么,并描述其工作原理
  • 扫描前nmap会通过arp更新目标MAC地址,所以使用Wireshark的过滤器扫描出arp包,可以看到共进行4次nmap扫描
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 可以看出攻击机第一次nmap扫描和第二次nmap扫描之间没有数据包,则第一次nmap扫描为探测目标IP是否活跃,指令为 nmap -sP 172.31.4.188
  • nmap扫描原理是基于ping的,因此每次扫描时,nmap会通过ARP来确定目标MAC地址,在wireshark中过滤到四组ARP(从攻击机到目标主机),说明共进行了四次端口扫描。
  • 观察第二次扫描的末尾数据包,发现有大量的TCP协议、ICMP协议、UDP协议数据,并使用了大量构造的标志位,以触发不同的响应包。
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 猜测该扫描为主动探测操作系统 nmap -O 扫描。Nmap内部包含了2600多种已知操作系统的指纹特征,根据扫描返回的数据包生成一份系统指纹,将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的操作系统。如果无法匹配,则以概率形式列举出可能的系统。
  • 第三次ARP后均为TCP协议数据,并且数据量庞大(从2071排到了133219),可以看到在数据包中存在大量SYN请求包,通过过滤器搜索 tcp
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 可以看到序号9、10、13是一组半开放扫描,使用不完整的tcp三次握手来对目标主机进行尝试性的连接,攻击主机的57738号端口对目标ip的3306号端口发送SYN包,目标ip的3306号端口开放,返回一个 TCP SYN & ACK 包,然后攻击主机发送一个 RST 包停止建立连接。这是典型的半开放扫描(TCP SYN 扫描),下面红色和蓝色框框中的也是类似,分别监测出目标主机的23号端口、80号端口和139号端口开放。
  • 再看绿色框框中,攻击主机对目标机的955号端口发送了SYN包,该端口返回一个 TCP RST & ACK 包,说明该端口关闭。
  • 猜测以扫描的指令可能为 nmap -sS -p 1-65535 172.31.4.188 进行TCP SYN全端口扫描。
  • 第四次ARP后,不仅有TCP协议数据,还有HTTP、TELNET、SMB应用层协议的数据。
  • 在TCP的端口中,某些端口是确定的,比如22号端口用于ssh登录。以22号端口为例使用过滤器命令为 tcp.port == 22
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 发现除了建立TCP SYN扫描,还建立了ssh连接,这是为了探测靶机的网络服务,于是猜测攻击机对靶机进行了 -sV 的版本扫描。
5. 在蜜罐主机上发现哪些端口是开放的?
  • 通过过滤器的 tcp.flags.syn == 1 and tcp.flags.ack == 1 可以过滤出SYN | ACK的数据包,这是目标主机反馈攻击主机的端口活跃信息。可查看靶机的开放端口有:21 22 23 25 53 80 139 445 3306 5432 8009 8180
    linux|实践三 网络嗅探与协议分析
    文章图片
6. 攻击主机的操作系统是什么?
  • 使用p0f工具,p0f是一款被动探测工具,能够通过捕获并分析目标主机发出的数据包来对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙的情况下也没有问题。
  • 在终端先输入 sudo apt-get install p0f安装p0f,再输入 sudo p0f -r listen.pcap 探测,得知版本为linux 2.6.x。
    linux|实践三 网络嗅探与协议分析
    文章图片
3.学习中遇到的问题及解决
  • 问题1:Kali登录 bbs.fudan.edu.cn网站时,出现乱码
  • 问题1解决方案:
    ①在命令行输入”dpkg-reconfigure locales”。进入图形化界面之后,(空格是选择,Tab是切换,*是选中),选中en_US.UTF-8和zh_CN.UTF-8,确定后,将en_US.UTF-8选为默认;
    ②安装中文字体,”apt-get install xfonts-intl-chinese “和” apt-get install ttf-wqy-microhei”,这时发现网页不乱码,系统也不乱码;
    ③重启 。
  • 问题2:在kali终端里执行snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap命令时,出现以下情况
    linux|实践三 网络嗅探与协议分析
    文章图片

  • 问题2解决方案:权限不足,执行sudo su命令,切换到root用户
4.学习总结 本章学习了tcpdump的一些命令,还有wireshark的过滤等功能。完成全部实践后,感觉对wireshark还是不够熟悉,其中使用nmap进行网络服务类型探查时wireshark抓包的分析还不是很清楚,在这方面还要多加努力。
参考资料
  • 《网络攻防技术与实践(第二版)》
  • tcpdump参数解析及使用详解

    推荐阅读