4

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

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

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

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

最后,我也尝试了兄弟网络监视器。尽管它提供了 TCP 连接列表 (conn.log),但我无法获取 TCP 连接内容。

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

在此先感谢,丹。

4

2 回答 2

1

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

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

于 2014-01-05T13:23:57.453 回答
0

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

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

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

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

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

TL;DR:这不能单独使用捕获工具来完成。

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

于 2016-03-01T21:13:50.167 回答