【问题标题】:How can I decode SQL Server traffic with wireshark?如何使用wireshark 解码SQL Server 流量?
【发布时间】:2021-03-22 08:58:25
【问题描述】:

我可以使用wireshark捕获数据包,但我无法将流解码为任何可理解的内容。

This item 在 WireShark 错误数据库中表明这在 SQL Server 2005 或更高版本中可能是不可能的。但是 Stack Overflow 上的几个人声称这是回答这个问题的好方法:

How to validate SQL Server traffic is encrypted?

任何帮助表示赞赏。

【问题讨论】:

    标签: sql-server wireshark


    【解决方案1】:

    编辑 (2017-05-02):Microsoft 网络监视器 - 已替换为 Microsoft Message Analyzer - 用于相同目的。另请参阅此答案下方的评论或进一步了解如何使用它的答案!

    注意: Microsoft Message Analyzer was deprecated in late 2019,不再提供下载。

    原答案

    Microsoft 本身还有另一个被低估的工具:“Microsoft Network Monitor”。基本上这与wireshark非常相似,除了一些特定的MS协议比wireshark本身有更好的解析器和可视化支持,而且显然它只能在windows下运行;-)。

    这个工具已经很老了,看起来已经被废弃了(到目前为止还没有看到更新的版本),但仍然做得很好,并且定义新协议的语法非常简洁/有趣 - 所以它仍然具有很大的功能未来。

    分析示例 - 为 TDS 过滤记录 - 所以其他数据包大部分被丢弃:

    对于 sql server 连接也是如此。 MNM 甚至可以可视化通过网络传输的结果集——非常简洁。尽管如此,上面提到的wireshark足以验证加密并在线路本身上应用证书。意味着它可以完全理解 TDS-Protocoll。

    处理 TLS

    还带有扩展名(所谓的专家)“NmDecrypt”和正确的证书(包括私钥) - 可以解密协议 - 对于在 TDS 内部使用 TLS 的 TDS 来说非常好 - 难怪 - 没有人真的将其实现为wireshark的完全支持的协议;)

    到目前为止 - 关于 MSSQL-Traffic - 或者更准确地说是 TDS-Protocol,这是迄今为止我遇到的最好的工具。 Wireshark 很酷——但在这种情况下,MNM 是“更好的”。有朋! ;)

    工具链接:

    【讨论】:

    • MS 网络监视器已被 Microsoft Message Analyzer 取代,它确实可以很好地解密 TDS 中的 TLS(不需要 NMDecrypt)。
    • 该产品现已弃用,没有替代品。
    • 糟糕!是一个简洁的工具... rip microsoft 消息分析器-但很可能在wireshark 的并行存在方面付出了很多努力-那里的问题:wireshark 现在可以正确解码TDS吗?每个协议步骤的脚本内容真的很酷......但是很好
    【解决方案2】:

    不是wireshark,但对我来说Microsoft Message Analyzer 非常适合。

    获取所有发送的命令

    1. 开始新会话
    2. 添加 Live Trace 作为数据源
    3. 选择场景(我选择了本地网络接口
    4. 输入诸如 *address == 10.1.2.129 之类的会话过滤器表达式以仅过滤到您的 sql 服务器的流量。
    5. 点击开始
    6. 右键单击按摩表中的列标题并选择添加列...
    7. 添加 TDS > SQLBatch > SqlBatchPacketData > SQLText

    这应该会给你类似下面的东西

    不幸的是,目前没有实现自动滚动,但您可以按时间戳排序,并在顶部弹出新的查询。

    【讨论】:

    • 此产品现已弃用,没有替代品。
    【解决方案3】:

    您指的问题是如何证明流量是加密的。

    所以他们用wireshark来表明你看不懂。

    早期版本的 SQL Server 加密很弱,但我认为解密 SQL Server 2005 流量并不容易。

    【讨论】:

    • 但问题是,他们如何证明它是加密的?您需要解码 TDS 流,并且(至少对我而言)如何在 wireshark 中执行此操作并不明显。
    【解决方案4】:

    Wireshark 在了解协议(和层)时解码并显示捕获的数据。这意味着捕获的数据没有被加密。 如果数据是加密的(SSL,即),WS 将只显示 SSL 握手和原始数据。

    【讨论】:

    • 这是错误的,因为使用的 MS-SQL-Protocol 在协议本身内部而不是在最外层执行 SSL/TLS,这很常见。因此,在这种情况下这是错误的,并且在寻找 ssl 握手时不会指示正确的答案 - 在这种情况下从来没有!
    猜你喜欢
    • 2017-09-23
    • 2018-04-15
    • 1970-01-01
    • 2017-09-18
    • 2017-01-15
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 2015-06-22
    相关资源
    最近更新 更多