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

实验目的】

了解FTP、telnet应用层流量特征,掌握RDP、HTTPS流量解密基本操作流程。

【知识点】

Wireshark,TCP/IP。

【实验原理】

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

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

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

  1. Display Filter(显示过滤器), 用于设置过滤条件进行数据包列表过滤。菜单路径:Analyze --> Display Filters。

  2. Packet List Pane(数据包列表), 显示捕获到的数据包,每个数据包包含编号,时间戳,源地址,目标地址,协议,长度,以及数据包信息。 不同协议的数据包使用了不同的颜色区分显示。

  3. 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台;server 2008 1台;
  • 软件:Wireshark。

【实验拓扑】

【实验预期】

  1. 使用wireshark识别应用协议
  2. 使用wireshark流量解密RDP/HTTPS协议

【实验步骤与结果】

1.应用协议分析

(1)Telnet程序分析

Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。最大的缺点是明文传输。

telnet服务默认为禁用不开启状态,需开启telnet服务,进入【Windows 2008】控制台,点击【开始】,输入【services.msc】,默认情况下,telnet服务安装完成后是处于禁用状态的,因此需要将其启动模式改为手动或是自动,并启动该服务,如下图所示。

进入【Linux】控制台,打开wireshark,在wireshark中,选择eth0网卡进行监听,如下图所示。

打开终端输入【telnet 10.0.0.44】,输入完成后,在wireshark中也抓到了相关流量,如下图所示。

在login和password中各自填入【Windows 2008】的账户与密码,如下图所示。

点击红色按钮直至变为灰色,停止抓包。

在过滤器中输入【telnet or tcp】分析telnet服务。如下图所示,1为TCP握手阶段,典型的三次握手,2为信息交换阶段。(4报文之后)

下图红框中的帧信息内容显示字符串为login,为输入账号的地方。

所以下图3为等待用户登录,4为账号输入阶段。(以第31条报文为界限)

再往下几行的帧为开始为登录账号的字符串a,再往下为d,连起来为administrator

所以下图5为等待密码输入,6为密码输入阶段。(已76为接你)

再往下几行的帧为开始为密码的字符串c,再往下为o,连起来为com.1234。

(2)FTP协议分析

打开终端新建一个hello.txt的文件【touch hello.txt】,关闭上一个实验的wireshark,并重新再次打开,使用eth0监听。

在终端中输入【ftp 10.0.0.44】登录ftp,ftp账户与密码分别为admin/com.1234。

使用过滤命令【tcp.port == 20 or ftp】,过滤ftp协议与tcp20端口。

在终端输入【put hello.txt】,上传hello.txt文件和【dir】命令列出目录

FTP客户端发起对FTP服务器的访问时,首先需要对服务器的TCP端口21建议TCP连接,如下图所示包列表窗格里能够看到TCP三次握手建立连接的报文。FTP控制连接建立后,FTP服务器首先发回FTP响应报文,报文的内容就是一个响应码(220)和服务器版本提示字符串,表示服务就绪。

接下来,在输入口令验证通过后,将出现FTP命令提示界面,这时可以输入FTP命令传送文件。如果有文件传输要求,就会在客户和服务器之间建立起一个新的TCP连接,服务器使用TCP端口20来传输数据。如下图所示是传送文件的报文实例

在上图中wireshark把报文解析为FTP-DATA,服务器端口为20。加亮部分为传送的列目录命令返回的数据。

关闭wireshark,并重新再次打开,将桌面的malware-traffic-analysis(2)文件夹的【Using-Wireshark-diplay-filters-FTP-malware.pcap】拖入【wireshark】中,并使用过滤命令【ftp】。

发现受感染的Windows主机登录到totallyanonymous.com的FTP帐户并检索名为fc32.exe和o32.exe。

在TCP 21 端口上的FTP控制通道还显示了作为名为6R7MELYD6的文件上传到FTP服务器。

2.流量解密RDP

(1)从 RDP 客户端删除前向保密密码。

一些加密密码提供前向保密,也称为完全前向保密。这些类型的密码为 SSL/TLS 连接创建多个会话密钥。使用前向保密,我们无法使用来自 RDP 服务器的单个私有加密密钥来解密 SSL/TLS 流量。因此,我们必须删除支持 RDP 客户端上的前向保密的配置选项。

进入【windows 2008】控制台,以管理员身份打开组策略管理控制台gpedit.msc,如下图所示。

依次查找顺序为【计算机配置】→【管理模板】→【网络】→【SSL配置设置】,找到【SSL密码套件顺序】,如下图所示。

双击【SSL密码套件顺序】,更改为【已启用】,最后点击【确定】按钮,如下图所示。

再次打开【SSL密码套件顺序】窗口,双击密码列表并复制整个列表,如下图所示。

打开桌面的notepad++,新建文本将刚刚复制的文字复制此处,并在菜单栏【视图】中选择【自动换行】

将Diffie-Hellman Ephemeral(ECDHE) 或数字签名算法 (ECDSA) 加密进行移除。

移除完后剩下的文字,再次打开【SSL密码套件顺序】窗口,复制粘贴到【SSL密码套件顺序】的列表,确保覆盖原始列表,最后点击【确定】按钮。

(2)获取 RDP 服务器的私有加密密钥。

确认是否开启了远程桌面,右键【计算机】选择【属性】,单击【高级系统设置】,在【远程】选项卡中勾选【允许运行任意...】。

依次进入桌面的【mimikatz】→【Win32】文件夹,右键点击【mimikatz.exe】以管理员身份运行。

privilege::debug crypto::cng crypto::capi crypto::certificates -systemstore:CERT_SYSTEM_STORE_LOCAL_MACHINE -store:"Remote Desktop" /export crypto::certificates -systemstore:CERT_SYSTEM_STORE_SERVICES -store:vmms\My -export

将上图红框处的文件使用rar压缩为1.zip,复制到c:\inetpub\wwwroot中

进入【Linux】控制台,打开浏览器输入【http://10.0.0.44/1.zip】,下载完成后解压文件至桌面。

相关推荐
z_鑫1 小时前
深入理解MyBatis:collection集合封装的底层原理与实现细节
java·开发语言·数据库·spring boot·mybatis
贺国亚1 小时前
06-奢侈零售VIP-Clienteling-Agent
开发语言·python·零售
我命由我123451 小时前
Android 开发问题:获取到的 Android ID 发生了变化
android·java·开发语言·java-ee·android studio·android jetpack·android runtime
nix.gnehc1 小时前
Python 内存管理深度解析
开发语言·python
码上有光1 小时前
c++: AVL树
开发语言·c++·avl树
不会C语言的男孩1 小时前
Linux 系统编程 · 第 9 章:进程创建
linux·c语言·开发语言
skywalk81631 小时前
段言项目推进6.15 @ Dumate+Trae
开发语言·学习·编程
我命由我123451 小时前
Android 开发问题:全局的主题颜色设置,导致 CheckBox 控件在勾选状态下不显示样式
android·java·开发语言·java-ee·intellij-idea·intellij idea·android jetpack
Cloud_Shy6181 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第七章 Item 51)
开发语言·人工智能·笔记·python·学习方法