实验一 网络流量分析

本次实验所使用到的主要软件包括:虚拟机(VMware/VirtualBox), 流量分析软件(Wireshark, Zeek或科来网络数据包分析软件),网络扫描工具nmap,浏览器(Chrome或IE)。

每个题目给出主要操作步骤、截图和分析。

一. 虚拟机环境设置与网络配置

  1. 使用VMware或VirtualBox创建Linux虚拟机(Ubuntu或 Centos,推荐Ubuntu 18.04);
    1.打开VMware,创建新的虚拟机

    2.选择使用【典型】,下一步

    3.选择【稍后安装操作系统】,可以自定义安装,然后下一步

    4.这里选择linuxubuntu 64位,下一步

    5.设置虚拟机名称和安装位置

    6.设置虚拟机磁盘容量

    7.点击【自定义硬件©】

    8.设置内存大小和处理器数量,选择使用ISO映像文件并找到ISO文件所在路径将其引入,点击【关闭】,然后点击完成

    9.点击【开启此虚拟机】开机,进行linux虚拟机安装

    10.安装ubuntu,点击【install ubuntu】,当然也可以选择中文

    11.选择正常安装,继续下一步

    12.点击【现在安装】,开始进行安装,弹出的选框点击【继续】

    13.选择地区位置,在地图上点击中国的位置,然后【继续】

    14.设置用户名和登录密码,点击【继续】

    15.等待安装完成即可

    16.点击【重启】,完成安装

    2)使用命令行对虚拟机IP地址、网关进行配置,对虚拟机的网络分别使用桥接、NAT和主机模式(host-only),描述三种网络配置的区别,以及虚拟机与主机以及互联网的连通性,并进行解释在虚拟机。
  2. 桥接模式配置,在虚拟机设置处选择桥接模式

    开启虚拟机在命令行打开网络配置文件

    进行ip和网关等参数配置

    重新启动网卡,激活配置

    Ping百度网址进行测试,能连通,桥接配置完成
  3. NAT模式,虚拟机设置网络适配器选择NAT

    虚拟机自动分配ip地址和网关,不需做过多操作,且能连接互联网
  4. 主机(host-only)模式
    虚拟机网络适配器设置为仅主机模式

    查看物理主机的网络配置信息

    然后配置虚拟机ip地址,网关和DNS

    检验是否能与主机通信,ping 主机ip地址能ping通

    在物理主机上ping虚拟机检验能否ping通

    双方都能ping通,但是不能连接外网,ping 百度不能ping通

    三种模式的区别:
    桥接:
    桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚网卡在拓扑图上处于同等地位,主机和虚拟机在同一网段内,虚拟交换机相当于一台现实网络中的交换机,物理网卡和虚拟网卡的子网掩码、网关、DNS等参数相同。在桥接模式下,虚拟机和主机和互联网可以互相连通。
    NAT:
    在NAT网络中,使用VMnet8虚拟网卡,主机和是哪个的虚拟网卡被直接连接到VMnet8虚拟交换机上与虚拟网卡进行通信,VMnet8虚拟网卡的作用仅限于和VMnet8网段进行通信,它不给VMnet8网段提供路由功能,所以虚拟机虚拟一个NAT服务器,使虚拟网卡可以连接到Internet。在这种情况下,我们就可以使用端口映射功能,让访问主机80端口的请求映射到虚拟机的80端口上。在NAT地址转换模式下,宿主计算机相当于一台开启了DHCP功能的路由器,而虚拟机则是内网中的一台真实主机,通过路由器(宿主计算机)DHCP动态获得网络参数。因此在NAT模式下,虚拟机可以访问外部网络,反之则不行,因为虚拟机属于内网,虚拟机可与主机和互联网连通
    仅主机(host-only):
    在Host-Only模式下,虚拟网络是一个全封闭的网络,它唯一能够访问的就是主机。其实Host-Only网络和NAT网络很相似,不同的地方就是 Host-Only网络没有NAT服务,相当于虚拟机通过双绞线和宿主计算机直连,而宿主计算机不提供任何路由服务,所以虚拟网络不能连接到互联网,虚拟机只能与主机进行相互通信,但是可以设置主机的网络共享来实现虚拟机连接互联网。

二、 流量分析软件使用

  1. 使用Wireshark还原通过HTTP下载的文件。
    1.开启wireshark抓包,找一个http的网站,选择下载一张图片,这里推荐使用搜狗浏览器或360极速浏览器
  2. vware esxi 镜像流量 vmware镜像虚拟机流量_IP

  3. 2.在wireshark抓到的数据报中筛选过滤,找到下载图片的数据包进行解析
  4. vware esxi 镜像流量 vmware镜像虚拟机流量_IP_02

  5. 3.找到下载的图片,然后追踪TCP流
  6. vware esxi 镜像流量 vmware镜像虚拟机流量_IP_03

  7. 可看到图片的一些信息和图片的ASCII码
  8. vware esxi 镜像流量 vmware镜像虚拟机流量_IP_04

  9. 4.然后将其转换成原始数据
  10. vware esxi 镜像流量 vmware镜像虚拟机流量_网络_05

  11. 5.将数据文件另存为tupian.jpg文件
  12. vware esxi 镜像流量 vmware镜像虚拟机流量_网络_06

  13. 可以看到此时图片格式不正确文件打不开
  14. vware esxi 镜像流量 vmware镜像虚拟机流量_vware esxi 镜像流量_07

  15. 6.然后将图片文件拖到WinHex中观察图片的十六进制代码,因为jpg格式的图片的文件开头为FFD8,结尾为FFD9,所以修改文件代码,仅留下文件中FFD8和FFD9中间部分数据
  16. vware esxi 镜像流量 vmware镜像虚拟机流量_wireshark_08


  17. vware esxi 镜像流量 vmware镜像虚拟机流量_linux_09

  18. 7.修改完成后将文件另存为tupian22.jpg,此时就可以打开图片文件了,通过http下载的文件还原成功
  19. vware esxi 镜像流量 vmware镜像虚拟机流量_linux_10


  20. 分析HTTP请求关键字段,包括IP, 端口,URL、User agent,以及响应码,回答通过User agent字段如何判断操作系统
    IP分析:
  21. vware esxi 镜像流量 vmware镜像虚拟机流量_linux_11

  22. 端口分析:源端口:22760, 目的端口:80
  23. vware esxi 镜像流量 vmware镜像虚拟机流量_linux_12

  24. URL:
  25. vware esxi 镜像流量 vmware镜像虚拟机流量_网络_13

  26. 响应码:200 OK
  27. vware esxi 镜像流量 vmware镜像虚拟机流量_IP_14

  28. User agent:
    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0
  29. vware esxi 镜像流量 vmware镜像虚拟机流量_IP_15

  30. 从User Agent中的(Windows NT 10.0; WOW64)可以得出,操作系统为64位的Windows10系统

3)分别使用浏览器和流量分析软件(Wireshark)提取使用HTTPS网站的证书文件,分析该证书关键信息,包括颁发者、颁发时间、密钥信息等。

1.首先打开wireshark开始抓包

2.打开浏览器—>打开百度网页,随便搜索浏览

3.在wireshark中筛选出TLS数据包,找到含有certificate信息的数据包

vware esxi 镜像流量 vmware镜像虚拟机流量_wireshark_16


4.查看数据包信息,展开Transport Layer Security,再找到Handshake Protocol:certificate

vware esxi 镜像流量 vmware镜像虚拟机流量_vware esxi 镜像流量_17


5.将certificate展开,可看到证书信息,但是这样显示的是字节流,并不能看出证书信息

vware esxi 镜像流量 vmware镜像虚拟机流量_IP_18


6.选中certificate信息点击鼠标右键,选择【导出分组字节流】,输入文件名,后缀是cer,保存类型为All Files。

vware esxi 镜像流量 vmware镜像虚拟机流量_linux_19


7.打开保存的证书文件,即可看到https证书详细信息

vware esxi 镜像流量 vmware镜像虚拟机流量_网络_20


从详细信息中可以看到:

颁发者为Microsoft RSA TLS CA 02

证书有效期为

vware esxi 镜像流量 vmware镜像虚拟机流量_linux_21


公钥RSA(2048 Bits)

vware esxi 镜像流量 vmware镜像虚拟机流量_wireshark_22


版本序列号等

vware esxi 镜像流量 vmware镜像虚拟机流量_IP_23

三、Zeek使用

  1. 在Linux虚拟机安装Zeek,在命令行进行数据包实时抓取。

1.进入Zeek官网,选择下载Linux Binaries

vware esxi 镜像流量 vmware镜像虚拟机流量_网络_24


2.选择操作系统版本为ubuntu,然后点击添加软件源手动安装

vware esxi 镜像流量 vmware镜像虚拟机流量_网络_25


3.按 Ctrl+Alt+T 打开命令行终端,输入以下4条命令进行安装

echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list
curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_20.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null
sudo apt update
sudo apt install zeek-lts

4.安装完成后使用whereis zeek可查看Zeek安装位置

vware esxi 镜像流量 vmware镜像虚拟机流量_linux_26


5.使用cd /opt/zeek/etc/ 命令进入该目录下,使用ls命令查看目录中文件

vware esxi 镜像流量 vmware镜像虚拟机流量_网络_27


6.使用vi node.cfg 命令编辑配置文件,设置检测设备的正确接口interface,设置要监视的正确网卡,我的网卡是ens33,完成之后保存并退出

vware esxi 镜像流量 vmware镜像虚拟机流量_vware esxi 镜像流量_28


vware esxi 镜像流量 vmware镜像虚拟机流量_vware esxi 镜像流量_29


7.使用vi networks.cfg命令编辑配置文件,注释掉默认设置,然后添加监测环境的本地网络,添加完成后保存退出本地网络IP地址

vware esxi 镜像流量 vmware镜像虚拟机流量_vware esxi 镜像流量_30


编辑配置文件

vware esxi 镜像流量 vmware镜像虚拟机流量_linux_31


vware esxi 镜像流量 vmware镜像虚拟机流量_网络_32


8.现在使用zeekctl启动Zeek,但是看到还启动不了

vware esxi 镜像流量 vmware镜像虚拟机流量_wireshark_33


原因是安装zeek的时候,并未将bin目录放到环境中,因此还需要设置环境变量,将/opt/zeek/bin路径放到环境中9.添加环境变量

9.1 使用export PATH=$PATH:/opt/zeek/bin 命令添加环境变量:在~/.bashrc文件中添加路径,如果是普通用户下则仅对当前用户,如果是在root用户下则是对所有用户

9.2 source ~/.bashrc 使其设置生效

9.3 echo $PATH 打印环境变量中的路径,如果出现zeek地址则添加成功

vware esxi 镜像流量 vmware镜像虚拟机流量_vware esxi 镜像流量_34


说明:如果不是root用户,zeek文件夹的操作权限需要交给用户,使用sudo chmod -R 777 /opt/zeek 命令修改zeek文件夹的用户权限



10.现在使用zeekctl命令可以开启ZeekControl终端了,由于是第一次使用,还需要使用命令 install对ZeekControl配置进行初始化安装,然后用start命令启动Zeek实例

vware esxi 镜像流量 vmware镜像虚拟机流量_wireshark_35


说明:zeek启动之后会一直进行下去,可以使用stop命令来停止运行2)分析Zeek产生的log日志,说明有哪些log以及conn.log每个字段的含义。

1.使用命令cd /opt/zeek/logs/current进入logs文件夹下,用ls命令查看有哪些log日志文件

vware esxi 镜像流量 vmware镜像虚拟机流量_wireshark_36


可以看到有http,dhcp,ntp,srderr,conn,stdout,dns等log文件,分别记录了各种数据包流量的内容

其中conn.log中每个字段的含义
Ts:time:Timestamp 时间戳
Uid:string:Unique ID of Connection 连接的唯一ID
Id.orig_h: addr:Originating endpoint’s IP address 发起端的IP地址
Id.orig_p: port:Originating endpoint’s TCP/UDP port(or ICMP code) 发起端点的
TCP/UDP端口
Id.resp_h: addr:Responding endpoint’s IP address 响应端的IP地址
Id.resp_p: port:Responding endpoint’s TCP/UDP port(or ICMP code) 响应端点的TCP/UDP端口
Proto: enum:Transport layer protocol of connection数据包传输层连接协议TCP,UDP
Service: string:Dynamically detected application protocol 动态检测应用程序协议
Duration: interval:看到最后一个数据包的时间 - 看到第一个数据包的时间,即数据包发送的时间
Orig_bytes: count:如果是TCP,则从序列号加载字节
Resp_bytes: count:响应者有效载荷字节,如果是TCP,则来自序列号
Conn_state: string:Connection state 连接状态
Local_orig: bool:如果conn来自本地则为T,如果远程则为F。如果site::local\u nets为空,,则始终取消设置
Missed_bytes: count:连接间隙中缺少的字节数
History: string: 连接状态历史记录
Orig_pkts: count: 原始数据包数
Orig_ip_bytes: count:原始IP字节数(通过IP总长度标头字段)
Resp_pkts: count: 响应数据包数
Resp_ip_bytes: count: 响应IP字节数(通过IP总长度标头字段)
Tunnel_parents: set: 如果已隧道化,则封装父级的连接UID

注:当host是本机,目标主机是虚拟机,也可让虚拟机扫描host。不能使用虚拟机扫描非宿主机机器。