协议分析与分析工具(一)

【实验目的】

了解Wireshark的基本工具使用,掌握本地数据包分析的能力。

【知识点】

Wireshark,TCP/IP。

【实验原理】

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的途径取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是全世界最广泛的网络封包分析软件之一。wireshark 抓包界面:

说明:数据包列表区中不同的协议使用了不同的颜色区分。协议颜色标识定位在菜单栏View --> Coloring Rules,如下所示。

  1. Display Filter(显示过滤器), 用于设置过滤条件进行数据包列表过滤。菜单路径:Analyze --> Display Filters。
  1. Packet List Pane(数据包列表), 显示捕获到的数据包,每个数据包包含编号,时间戳,源地址,目标地址,协议,长度,以及数据包信息。 不同协议的数据包使用了不同的颜色区分显示。
  1. Packet Details Pane(数据包详细信息), 在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。数据包详细信息面板是最重要的,用来查看协议中的每一个字段。各行信息分别为:

(1)Frame: 物理层的数据帧概况

(2)Ethernet II: 数据链路层以太网帧头部信息

(3)Internet Protocol Version 4: 互联网层IP包头部信息

(4)Transmission Control Protocol: 传输层IT的数据段头部信息,此处是TCP

(5)Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议

wireshark可使用布尔表达式:

复制代码
等于: == or eq
And: && or and
Or: || or or

在使用过滤器表达式示例如下:

复制代码
ip.addr eq 192.168.10.195 and ip.addr == 192.168.10.1
http.request && ip.addr == 192.168.10.195
http.request || http.response
dns.qry.name contains microsoft or dns.qry.name contains windows

【软件工具】

  • 操作机:Kali Linux 1台;
  • 软件:Wireshark。

【实验预期】

  1. Wireshark的列内容配置完成
  2. Wireshark识别主机和用户
  3. Wireshark使用过滤命令识别恶意流量

【实验步骤与结果】

1.更改列显示

进入操作机,单击左上角搜索【wireshark】,并单击打开该工具。

将桌面的malware-traffic-analysis(1)文件夹的【traffic-for-wireshark-column-setup.pcap】拖入【wireshark】中。

Wireshark 的默认列是:

NO--从 pcap 开始的帧编号。第一帧总是 1。

Time--从pcap 的第一帧开始分解为纳秒的秒数。第一帧始终为 0.000000。

Source--源地址,通常是 IPv4、IPv6 或以太网地址。

Destination--目的地地址,通常是 IPv4、IPv6 或以太网地址。

Protocol--以太网帧、IP 数据包或 TCP 段(ARP、DNS、TCP、HTTP 等)中使用的协议。

Length--帧的长度(以字节为单位)

在日常工作中,想要在 Wireshark 显示以下列的内容:

UTC的日期和时间

源IP、端口

目的IP、端口

HTTP HOST

HTTPS server

信息的列

(1)隐藏列

右键单击任何列标题以显示列标题菜单。然后左键单击任何列出的列以取消选中它们。如图所示显示了未选中和隐藏的No、Protocol和Length列。

(2)添加列

在Wireshark中添加列,右键单击任意列,然后选择【Column Preferences...】。

Column Preferences菜单列出了所有已查看或已隐藏的列。在Column Preferences菜单的左下方附近有两个按钮。一个有一个加号来添加列。另一个减号来删除列。左键单击加号。标题为【New Column】的条目应出现在列表的底部。

双击【New Column】并将其重命名为【Source Port】。任何新列的列类型始终显示【Number】。双击【Number】弹出一个菜单,然后滚动到【Src port (unresolved)】并选择它作为列类型。

左键单击该条目并将其拖动到紧跟在源地址之后的位置。

同样再添加一条目的端口,标题为【Destination Port】,类型为【Dest port (unresolved)】,最后同样拖到目的地址后面,完成上述配置单击【OK】按钮即可。

为什么要拖动排序:核心是查看习惯 + 逻辑排版
1. 网络报文信息天然逻辑顺序:源 IP→源端口→目的 IP→目的端口
(3)更改为UTC--把 Wireshark 抓包时间从本地时区 → 改成 UTC 世界标准时间显示

单击菜单栏【View】→【Time Display Format】,依次点击【Time Display Format】的【UTC Date and Time of Day...】及【Seconds】。

(4)添加自定义列

要快速查找 HTTP 流量中使用的域,使用Wireshark过滤器,在过滤器中输入【http.request】然后回车并查看帧详细信息窗口。依次展开帧信息【Hypertext Transfer Protocol】→【GET...】,可以看到【Host】对应的为URL地址。

左键单击此行以将其选中。右键单击该行。在该菜单的顶部附近,选择【Apply as Column】,如下图所示。

可以看到在列中已经有关于http协议对应的URL地址的信息,如下图所示。

要快速查找 HTTPS流量中使用的域,请使用Wireshark过滤器【ssl.handshake.type == 1 】回车并查看帧详细信息窗口。依次展开帧信息【Transport Layer Security】→【TLSv1.2 Record Layer: Handshake Protocol: Client Hello】→【Handshake Protocol: Client Hello】→【Extension: server_name (len=26)】→【Server Name Indication extension】,可以看到对应的为URL地址。

同样也是右键单击该行。在该菜单的顶部附近,选择【Apply as Column】,如下图所示。

同样也可以看到在列中已经有关于https协议对应的URL地址的信息,如下图所示。

2.Wireshark常用过滤使用方法

(1)基于 Web 的感染流量过滤器

将桌面的malware-traffic-analysis(1)文件夹的【Using-Wireshark-diplay-filters-Emotet-with-IcedID.pcap】拖入【wireshark】中,并使用【http.request or ssl.handshake.type == 1】过滤命令,去过滤HTTP和HTTPS协议,如下图所示。

通过上图可以看到大量的关于UDP 1900端口,UDP 1900端口简单服务发现协议(SSDP,Simple Service Discovery Protocol)是一种应用层协议,SSDP 是一种用于发现即插即用设备的协议,它与正常的网络流量无关。因此,可使用以下表达式将其过滤掉【(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)】或【(http.request or ssl.handshake.type == 1) and !(ssdp)】,如下图所示。

在某些情况下,受感染的主机可能会尝试连接已脱机或拒绝TCP连接的服务器。通过添加【tcp.flags eq 0x0002】在过滤器中包含TCP SYN段,可以揭示这些尝试的连接。使用过滤命令【(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)】,如下图所示。

通过上图可以看到TCP SYN段显示受感染的主机尝试通过TCP 8443端口连接IP地址217.165.2.133。

(2)过滤其他类型的感染流量

在某些情况下,感染后的流量不会基于Web,受感染的主机会连接C2服务器。这些服务器可以直接托管在IP地址上,也可以托管在使用域名的服务器上。例如一些感染后流量由 Nanocore 远程访问工具 (RAT) 引起的 C2 流量,不是 HTTP 或 HTTPS流量。

C&C (Command and Control server,命令和控制服务器),也可写作C2,是一种用于向受恶意软件(自动程序(bot)、木马(rootkit)、蠕虫(worm))感染的计算机的服务器的恶意软件发送指令或更新程序的服务器,即C&C服务器用于控制这些恶意软件。通常,C&C 服务器将运行在本身已被破坏或使用被盗信用卡购买的 Web 服务器上。

C&C 服务器主要是控制感染的计算机,除此之外也可能但不一定作为受感染计算机上传被盗信息的放置区。

C&C 服务器不必运行与其控制的计算机相同的操作系统。
NanoCore RAT是在.Net框架中开发的有名的远控软件,网络环境中大量利用各种手段传播此软件,有时巧妙的构造有效的绕过杀软在进一步通过服务端进行功能模块的更新,深受黑客喜爱。

将桌面的malware-traffic-analysis(1)文件夹的【Using-Wireshark-diplay-filters-Nanocore-RAT.pcap】拖入【wireshark】中。可以查看DNS流量使用过滤命令【(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)】

通过上图可以发现该流量显示了从www.mercedes-club-bg.com下载一个可执行文件,用于感染易受攻击的 Windows 主机,如下图所示。

之后开始尝试通过TCP连接到185.163.45.48 的franex.sytes.net和95.213.251.165 的franexserve.duckdns.org。如下图所示显示了 DNS 查询和 TCP 流量之间的相关性

恶意软件还可以使用其他常见协议进行恶意流量。恶意软件可以将受感染的主机变成垃圾邮件机器人,在每分钟发送数十到数百封电子邮件。其特点是向各种邮件服务器发出多个 DNS 请求,然后是 TCP 25、465、587端口或与电子邮件流量关联的其他 TCP 端口上的 SMTP 流量。

将桌面的malware-traffic-analysis(1)文件夹的【Using-Wireshark-diplay-filters-spambot.pcap】拖入【wireshark】中,并使用【smtp】命令过滤smtp协议,如下图所示。

通过上图发现几个STARTTLS,这很可能是加密的 SMTP 流量,将无法看到电子邮件内容,使用常见电子邮件标头行中的字符串来找到未加密的SMTP流量,例如:

复制代码
smtp contains "From: "
smtp contains "Message-ID: "
smtp contains "Subject: "

右键任意一行,依次选择【Follow】→【TCP Stream】,查看TCP数据流,如下图所示。

可以看到电子邮件未加密的内容,如下图所示。

(3)保存过滤命令

在使用上述的过滤命令打出来会过于繁杂,可以将它们保存为过滤按钮。Wireshark过滤器栏的右侧是一个加号,用于添加过滤器按钮。依旧以过滤电子邮件为例,点击左上角的【+】按钮,如下图所示。

(3)保存过滤命令

在使用上述的过滤命令打出来会过于繁杂,可以将它们保存为过滤按钮。Wireshark过滤器栏的右侧是一个加号,用于添加过滤器按钮。依旧以过滤电子邮件为例,点击左上角的【+】按钮,如下图所示。

完成后可看到【email】按钮,先点击【X】按钮清空过滤命令,再点击【email】按钮,可看到效果。

同理添加过滤命令【 (http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)】,先点击上图处的【X】按钮清空过滤命令,点击左侧【+】按钮。

在【Label】处填写【basic】,【Filter】填写【 (http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)】,最后点击【ok】按钮即可完成,如下图所示。

同理添加完成以下过滤按钮,在【Label】处填写【basic+】,【Filter】填写【 (http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)】,最后点击【ok】按钮。

在【Label】处填写【basic+DNS】,【Filter】填写【(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)】,最后点击【ok】按钮。

清除过滤按钮,依次点击新添加的几个过滤按钮,即可看到相应的效果。

3.识别用户与主机信息

(1)来自 DHCP 流量的主机信息

如何使用Wireshark找到IP地址关联的MAC地址和主机名的主机信息?过滤两类协议:DHCP或NBNS。DHCP 流量可以帮助识别连接到网络的几乎任何类型的计算机的主机。NBNS流量主要由运行Microsoft Windows的计算机或运行 MacOS 的 Apple 主机生成。

动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是RFC 1541定义的标准协议,该协议允许服务器向客户端动态分配 IP 地址和配置信息。

通常DHCP 服务器至少向客户端提供以下信息:

1、IP 地址

2、子网掩码

3、默认网关

还可以提供其他信息,如域名服务 (DNS) 服务器的地址和 Windows Internet 名称服务 (WINS) 服务器的地址。

DHCP服务器为客户端分配IP地址有三种形式:

1、管理员将一个IP地址固定分配给一个客户端。

2、随机地将地址永久性分配给客户端。

3、随机地将地址分配给客户端使用一段时间。

第三种是最常见的使用形式。地址的有效使用时间段称为租用期,租用期满之前,客户端必须向服务器请求继续租用。服务器接受请求后才能继续使用,否则无条件放弃。

DHCP ACK :服务器对客户端的DHCP REQUEST报文的确认响应报文。客户端收到此报文后,才真正获得了IP地址和相关的配置信息。

DHCP REQUEST:客户端对DHCP OFFER报文的响应,表示接受相关配置。客户端续延IP地址租期时也会发出该报文。

将桌面的malware-traffic-analysis(1)文件夹的【host-and-user-ID-pcap-01.pcap】拖入【wireshark】中,并在过滤器中过滤【dhcp】。

单击第二行DHCP REQUEST,并依次展开部分帧信息【Dynamic Host Configuration Protocol (Request)】→【Option: (12) Host Name】,可看到主机名为【Rogers-iPad】。

同样也是右键单击该行。在该菜单的顶部附近,选择【Apply as Column】,如下图所示。

可以看到主机名在列中的效果,如下图所示。

得到信息整理,172.16.1.207 的主机名是Rogers-iPad,MAC 地址是7c:6d:62:d2:e3:4f。此 MAC 地址分配给 Apple。根据主机名,该设备很可能是 iPad,如下图所示

(2)来自 NetBIOS 名称服务 (NBNS) 流量的主机信息

将桌面的malware-traffic-analysis(1)文件夹的【host-and-user-ID-pcap-02.pcap】拖入【wireshark】中,并在过滤器中过滤【nbns】。

找到第一行的帧详细信息部分还显示分配给IP地址的主机名,如图所示。

(3)HTTP 流量的设备型号和操作系统

HTTP 的用户代理字符串可以表明操作系统是什么。如果 HTTP 流量来自 Android 设备,还可以确定设备的制造商和型号。

用户代理(User Agent,简称 UA),是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

将桌面的malware-traffic-analysis(1)文件夹的【host-and-user-ID-pcap-03.pcap】拖入【wireshark】中,并在过滤器中过滤【 (http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)】或者点击之前添加完成的【basic】过滤按钮,如下图所示。

右键单击第四行,依次选择【Follow】→【HTTP Stream】,查看HTTP数据流,如下图所示。

User-Agent表示在Windows 7 x64操作系统上运行的Google Chrome 网络浏览器版本 72.0.3626.81,如下图所示

请注意图中 User-Agent中的以下字符串:(Windows NT 6.1;Win64;x64),Windows NT 6.1表示 Windows 7。

对于 User-Agent 行,Windows NT 字符串表示 Microsoft Windows 的以下版本,如下所示:

Windows NT 5.1: Windows XP

Windows NT 6.0: Windows Vista

Windows NT 6.1: Windows 7

Windows NT 6.2: Windows 8

Windows NT 6.3: Windows 8.1

Windows NT 10.0:Windows 10

将桌面的malware-traffic-analysis(1)文件夹的【host-and-user-ID-pcap-04.pcap】拖入【wireshark】中,并在过滤器中过滤【 (http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)】或者点击之前添加完成的【basic】过滤按钮,如下图所示。

右键单击该行,依次选择【Follow】→【HTTP Stream】,查看HTTP数据流,如下图所示。

User-Agent 行显示Android 7.1.2,这是 2017 年 4 月发布的旧版 Android 操作系统。LM-X210APM表示此 Android 设备的型号。

将桌面的malware-traffic-analysis(1)文件夹的【host-and-user-ID-pcap-05.pcap】拖入【wireshark】中,并在过滤器中过滤【 (http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)】或者点击之前添加完成的【basic】过滤按钮,如下图所示。

右键单击该行,依次选择【Follow】→【HTTP Stream】,查看HTTP数据流,如下图所示。

User-Agent显示(iPhone; CPU iPhone OS 12_1_3 like Mac OS X)。这表明 Apple 设备是 iPhone,并且运行的是 iOS 12.1.3,如下图所示。

(4)来自 Kerberos 流量的 Windows 用户帐户

将桌面的malware-traffic-analysis(1)文件夹的【host-and-user-ID-pcap-06.pcap】拖入【wireshark】中并在过滤器中过滤命令【kerberos.CNameString】。

该数据包来自于域环境中的Windows 主机信息:

域名: happycraft.org

网段: 172.16.8.0/24 (172.16.8.0 - 172.16.8.255)

域控制器 IP: 172.16.8.8

域控制器主机名: Happycraft-DC

网关: 172.16.8.1

广播地址: 172.16.8.255

Windows 客户端: 172.16.8.201

找到第一行数据的帧信息内容,找到带有【CNameString:johnson-pc$】那一行并将其应用为列,如下图所示。

创建一个名为CNameString的新列。向下滚动到列显示中的最后几帧。在172.16.8.8的域控制器和172.16.8.201的 Windows客户端之间的流量中找到关于theresa.johnson的用户帐户名,也就是说Windows 客户端172.16.8.201的域账户名为theresa.johnson,如下图所示。

相关推荐
fox_lht1 小时前
14.2.读文件
开发语言·后端·rust
codeejun1 小时前
每日一Go-74、Go 云原生可观测性实战之OpenTelemetry 全链路采集:Trace + Metrics + Logs
开发语言·云原生·golang
神仙别闹1 小时前
基于 Python 实现 ANN 与 KNN 的图像分类
开发语言·python·分类
yugi9878381 小时前
基于Qt的实用二维码生成解决方案
开发语言·qt
_小许_1 小时前
Go语言导入与导出excel文件
开发语言·golang·excel
SilentSamsara1 小时前
高并发 API 压测与调优:locust + 火焰图 + 瓶颈定位
开发语言·python·青少年编程·docker·中间件
酉鬼女又兒1 小时前
零基础入门计算机网络:物理层核心知识全解——传输方式分类、编码调制原理与信道极限容量计算
网络·计算机网络·考研·职场和发展·分类·数据挖掘·php
myenjoy_11 小时前
开源!Go+Wails+Vue3 手搓一个 PLC 实时监控桌面工具
开发语言·golang·开源
Flash.kkl1 小时前
C++基于websocketpp的多用户网页五子棋项目
开发语言·网络·数据库·c++·websocket·mysql