【问题标题】:How to write http layer sniffer如何编写http层嗅探器
【发布时间】:2014-01-22 21:38:36
【问题描述】:

我想写一个应用层嗅探器(SMTP/ftp/http)。

根据我的搜索,第一步(也许是最难的!)步骤是重新组装嗅探连接的 tcp 流。

确实,我需要的是类似wireshark 的“跟随TCP 流”选项,但我需要一个在实时界面上自动执行此操作的工具。据我所知,Tshark 可以自动从保存的 pcap 文件 (link) 中提取 TCP 流数据,但不能从实时接口中提取。 Tshark 可以在实时界面上做到吗???

据我所知,TCPflow 可以做我想做的事,但是它不能处理 IP 碎片整理和 SSL 连接(我想在我有服务器私钥的情况下分析 SSL 内容)。

最后,我也尝试了 bro network monitor。虽然它提供了 TCP 连接列表(conn.log),但我无法获取 TCP 连接内容。

欢迎对上述工具或任何其他有用工具提出任何建议。

提前致谢,丹。

【问题讨论】:

    标签: tcp wireshark tshark bro


    【解决方案1】:

    perl Net::Inspect 库可能会对您有所帮助。它还带有一个 tcpudpflow,可以将 tcp 和 udp 流写入单独的文件,类似于 tcpflow。它适用于 pcap 文件或可以进行实时捕获。该库处理 IP 分段。它还带有一个 httpflow 工具来提取 HTTP 请求和响应(包括解压缩、分块编码..)。它目前不处理 SSL。

    作为这个库的作者,我不认为提取 TCP 流是最难的部分,HTTP 解析器(不包括解压缩,包括分块模式)几乎是 IP 和 TCP 总和的两倍。

    【讨论】:

      【解决方案2】:

      此示例适用于重组单个协议的应用程序数据:

      tshark -Y "tcp.dstport == 80" -T fields -d tcp.port==80,echo -e echo.data
      

      它捕获实时 http 数据,对其进行重组,然后将其输出为原始十六进制。

      如果你愿意,我可以添加一个小脚本将十六进制解析为 ascii。

      如果我有服务器私钥,我想分析 SSL 内容

      TL;DR:仅使用捕获工具无法做到这一点。

      为什么不这样做:因为每个 SSL 会话都会生成一个新的秘密会话密钥,而没有此密钥您无法解密会话。拥有私有服务器密钥是不够的。这背后的想法是,如果有人捕获了您的 SSL 流量并将其保存,然后一年后他“找到”了私有服务器密钥,那么他仍然无法解密您的流量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-23
        • 1970-01-01
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多