最近項目任務有需求,想探究一下對未知未加密網絡協議的解析。
之前只了解過基本的計算機網絡知識,對於具體的網絡協議,更多是學術上的認識,而沒有工程上的認知與實踐。因此對於網絡協議解析的工作,可謂是一籌莫展。
各種查找資料,這方面的公開資料還真少,國內外就沒多少人在做,別說工程,就學術研究都非常少。為什么?因為太難!
不過非常感謝知乎匿名用戶在問題“在網絡協議逆向分析方面有哪些值得推薦教材/讀物? https://www.zhihu.com/question/26962412”下的回答,讓我對協議逆向解析有了基礎的認識。
於是乎開始找相應的工具,只要能用就行,至少讓我感受一下對未知協議的逆向分析過程也好。
可是找遍了國內外所有資源,幾乎沒有可用的工具,只有一個Netzob的開源項目可以參考。
那就開干吧!
1 Netzob簡介
從國內一些地方找到了相關信息,但是資源太少,於是借了VPN出去逛了逛。Netzob本來有個官方網站,但是現在其域名居然過期了在重新拍賣,所以沒有找到最詳細的信息。還好其作為開源的python項目,在PyPI https://pypi.org/project/Netzob/上面有相應的文檔和資源,不過不是很全面。
其官方介紹是:
Netzob是一種用於逆向工程,流量生成和通信協議模糊測試的開源工具。此工具允許通過被動和主動進程推斷協議的消息格式(詞匯表)和狀態機(語法)。其目的是通過半自動方式利用生物信息學和語法推理算法,將最先進的學術研究帶入運營領域。
Netzob適用於逆轉網絡協議,結構化文件以及系統和流程(IPC和與驅動程序和設備的通信)。一旦推斷,可以在我們的流量生成引擎中使用協議模型,以允許模擬真實且可控的通信端點和流。
Netzob處理不同類型的協議:文本協議(如HTTP和IRC),基於分隔符的協議,固定字段協議(如IP和TCP)和可變長度字段協議(如基於TLV的協議)
作者為:
法國學者Georges Bossert和Frédéric Guihéry
其最后版本及維護時間為:
v1.0.2 - 2016-04-30
既然有資源,必然有教程。可是翻了一大圈,國外還真沒有這個版本的教程,甚至連老的版本也沒有,看樣子研究的人研究是很少很少啊。
回到國內,非常感謝liyihao17 https://blog.csdn.net/liyihao17 在其博客中對老版本Netzob-0.4.1使用及開發的相關說明,還有bitpeach https://www.cnblogs.com/bitpeach/p/4111742.html 對該版本在ubuntu上安裝過程的詳細介紹,讓我有信心在ubuntu上對netzob進行安裝和試用。
本來是想就裝個老版本試試,但是過程簡直不要太痛苦,不知道為什么,按照上述二位作者的方法,ubuntu12里面各種錯誤,折騰了好久還是沒法安裝,主要錯誤在包依賴關系。最后沒辦法,只能放棄對老版本的安裝。
后面自己冷靜下來梳理了一下,決定對其最新版本進行嘗試性安裝,沒想到還成功了!
下面是對安裝試用過程的簡要記錄,主要記錄下一些坑人的地方。
2 Netzob-1.0.2 ubuntu安裝與試用
2.1 安裝
這個最新的版本是python3,於是選擇了ubuntu18作為搭載平台,其自帶了python3.6,可以省一些事情。
如果對ubuntu非常熟悉的話,按照官方文檔來安裝應該是不會太費力,但是我想在這里與大多數和我一樣的新手來分享學習安裝過程。
官方文檔顯示如下的步驟:
This file depends on setuptools which like few other modules cannot be automatically installed. The reason why, you have to manually install the following bunch of prerequisites before initiating Netzob’s install process.
python3
python3-dev
python3-setuptools
build-essential
We also highly recommend to install the following additional dependencies:
python-sphinx (for the documentation)
看起來好簡單,但是真實安裝時遇到許多問題
問題1:速度慢
資源都是在國外,所以賊慢,怎么辦?首先換成國內的linux資源,這里推薦aliyun的鏡像資源。
問題2:用apt-get安裝,各種包依賴關系錯誤,基本無法按步驟安裝
可能是因為Netzob大量調用了第三方庫和包,而且開發時間較長同時缺少資金資源來良好地維護,所以其包依賴關系較為復雜。這時我首先安裝了aptitude這個包管理工具,它在處理包依賴關系方面好過apt太多
問題3:執行Netzob最后安裝時,提示pcapy錯誤
首先我想那就裝個pcapy吧,可是居然還錯!!!又各種想辦法,后來發現不是pcapy的問題,而是ubuntu上面沒有pcapy需要的libpcap庫,於是把這個libpcap裝上
問題4:最后安裝Netzob過程中,各種死機/中斷
分析了一下,死機和中斷多發生在下載一些小的依賴包的過程中,應該是網絡問題,所以一旦發生了因下載導致的中斷和假死,就果斷結束進程,重新安裝。
就這樣,折騰了一天,終於給裝上了。
2.2 利用pycharm試用
這個最新版本是沒有圖形界面的,如果直接用,效果不太友好。自然要用個IDE來調用和調試,也可以滿足個性化任務需求。
於是在ubuntu上面安裝了pycharm,准備按照liyihao17的方法來用一下,結果又遇到了問題。
問題1 明明安裝了netzob,但是解釋器找不到
python開發學習也有過一些經驗,但是這種問題是第一次遇到,最后發現問題簡直讓人無語。原來我將工程名和文件名直接命名為了netzob,和外部依賴的netzob文件沖突了,解釋器會自動選擇本地文件進行關聯,於是導致無法調用真實的netzob。改個工程名和文件名就行了
問題2 程序無法讀取相應的pcap文件
這個錯誤沒有詳細的提示,就是說無法讀取,簡直讓人無從下手。開始逐一排查問題,最后發現是權限問題。原來ubuntu下的pycharm默認工程文件放在了root文件夾下面,影響了程序的讀取權限。於是果斷在其它位置建立了工程項目,問題解決。
最初發表於CSDN
---------------------
作者:Traveller__Lee
來源:CSDN
原文:https://blog.csdn.net/qq_20728177/article/details/87903659
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!