2014-01-05 40 views
4

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

根据我的搜索,首先(也许是最难!)的步骤是重新组装sniffed连接的tcp流。

事实上,我需要的是类似wireshark的“遵循TCP流”选项,但我需要一个工具,它可以在实时界面上自动执行。据我所知,Tshark可以从保存的pcap文件中自动提取TCP流数据(link),但不能从实时接口中提取。 Tshark可以在现场接口上做到吗?我知道,TCPflow可以做到我想要的,然而,它不能处理IP碎片整理和SSL连接(我想在我拥有服务器私钥的情况下分析SSL内容)。

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

任何关于提到的工具或任何其他有用的工具的建议是值得欢迎的。

在此先感谢Dan。

回答

1

perl Net :: Inspect库可能会帮助你。它还带有一个tcpudpflow,它可以将tcp和udp流写入单独的文件中,类似于tcpflow。它适用于pcap文件或可以进行实时捕捉。该库处理IP分片。它还附带一个httpflow工具来提取HTTP请求和响应(包括解压缩,分块编码......)。它目前不处理SSL。作为这个库的作者,我不认为提取TCP流是最难的部分,HTTP解析器(不包括解压缩,包括分块模式)几乎是IP和TCP组合的两倍。

0

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

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

它捕获活HTTP数据,它重新组合,并且输出它作为原料十六进制。

我可以添加一个小脚本来解析十六进制ascii如果你喜欢。

我要分析的情况下,SSL内容我有服务器私钥

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

为什么不能:因为每个SSL会话都会生成一个新的秘密对话密钥,并且您不能在没有此密钥的情况下解密会话。拥有专用服务器密钥是不够的。这背后的想法是,如果有人捕获您的SSL流量,将其保存,然后一年后他“发现”私人服务器密钥,那么他仍然无法解密您的流量。