2014-01-05 109 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流量,將其保存,然後一年後他「發現」私人服務器密鑰,那麼他仍然無法解密您的流量。