聲明: php
1)本文由我bitpeach原創撰寫,禁止一切形式的轉載。若有轉載,侵權必究。
前端
2)本簡談主要分爲三個方面,第一是自動化協議逆向技術的基本理論,第二是當前發展趨勢,第三是入門協議逆向技術的必備過程。 算法
3)既是簡談,則文章篇幅不長,同時本文觀點不必定正確,但願拋磚引玉,能得高人指點,幸爲殊榮。 編程
4)最近一個月比較忙,昨天正好寫完稿子,今天就簡寫一些內容,避免重複,故爲簡談。安全
協議逆向工程是指在不依賴於協議描述的狀況下,經過對協議實體的網絡輸入/輸出、系統行爲和指令執行流程進行監控和分析,提取協議文法、語法和語義的過程。(潘璠博士,吳禮發教授,洪徵副教授團隊《協議逆向工程研究進展》)協議逆向工程這一術語,名字中帶有工程,可是事實上,其中含有較多的學術理論推導和數學模型創建工做,所以本人更傾向於稱之爲協議逆向工程技術或協議逆向技術。網絡
協議逆向技術不是Fuzzing,可是能夠用於Fuzzing。協議逆向技術不是協議分類技術,可是能夠用於協議分類新技術。發現協議逆向技術成爲了各類補別人窟窿的技術,緣由就在於其技術前提惡劣,工做的假設前提信息缺失匱乏,因此其通用性和推廣性比通常理論模型要好,同時代價就是技術難點多,不必定能保證解析出成果來。機器學習
當前學術研究認爲,協議分析技術是包含協議逆向技術的。緣由在於,協議分析技術除協議逆向技術外,還包含協議識別,流量分類,協議安全測試等其餘技術分支。
工具
由於是協議規格未知,因此先驗信息未知。在學術研究中,稱爲先驗信息匱乏或損失。根據機率論,先驗信息損失,只能觀測到後驗機率,由於沒法還原字段規格的聯合機率分佈,從理論上來說,永遠不可能求解字段的正確位置(這一觀點論斷已經發表於2016年IET Communications和其餘期刊上)。所以不管是從數學推導上,仍是從工程實踐上,都比較難,不能突破後驗機率的侷限性,只要是觀測捕獲的未知協議,就只能永遠擬合逼近字段的正確位置,可是不能完備地求取字段位置,這受限於觀測樣本的特徵多樣性。(即相似於極限概念,能夠無限趨近,但不能到達。)
性能
協議逆向技術存在的意義,在於當分析對象是私有協議時,則該技術應運而生。當前存在大量的私有協議,有數據顯示,未識別應用或未知流量佔據統計報告所在網絡 地區的30%。(數據來源,請查閱ReFlow組織和Internet2組織發佈的流量統計報告。統計對象地區分別在巴西國家網絡,美國 Internet2網絡。)同時,一些業務需求使得協議設計者必需要保護本身的協議規格,如工控協議,物聯網協議,無線數據鏈系統,RFID協議、自定義 藍牙或Zigbee協議等等。學習
兩點意義。
第一點,學術價值在目前2016年來看,仍然有必定潛力。將來4到5年確實不太好說,可是當前2016年本年度,是很是有價值。在後續章節中,會討論當前發展趨勢。
第二點,具有應用推廣價值,惋惜的地方在於,除了學術界著名的Netzob開源工具之外,尚未據說過旗號就叫「協議逆向技術」的開源工具。這反映了做爲工具平臺,理論轉化率不高,仍是過分依賴人工分析。
(1)報文序列分析,也叫基於網絡軌跡(Network Trace)的協議逆向技術
(2)指令序列分析,也叫基於動態污點(Dynamic Taint)或程序分析(Execution Trace)的協議逆向技術
(3)主要區別,可閱讀相關綜述型論文,這裏展現我本身繪製的學習筆記圖。
本人見識淺薄,沒有徹底羅列,只列舉部分學者團隊,且與網絡軌跡相關的。請恕後生唐突冒昧。
(1)Marshall A. Beddoe,McAfee研究員,現疑似爲軟件工程師。堪稱協議逆向技術自動化研究的啓蒙者和開山者。首次提出自動化算法引入到協議逆向技術中,而後提供了開源的PI項目源代碼。恐怕在這位宗師以後,也沒有人敢開源本身的代碼吧,無私而又強大,不得不佩服這位學者。
(2)微軟科學研究院,Cui Weidong。中國人,清華畢業,後在美國工做,是國際學術研究中,協議逆向技術的較早啓蒙者。其著名的Discoverer技術方案,爲入門經典之做。
(3)廣東中山大學,餘順爭教授,王變琴老師高級工程師,羅建楨博士,肖明明博士等。這些學者是協議逆向技術和流量分類領域的強者,是國內學術研究中,協議逆向技術的較早開拓者。
(4)南京,吳禮發教授,洪徵副教授團隊。是協議逆向技術傳統強隊,國內較早的開拓者,其相關學術研究較多,基本每一年都會有,2015年也沒有例外。
(5)法國高等電子學院,Georges Bossert團隊負責人。Netzob開源的設計者,曾在社交網絡上,與之作太短暫交流,欽佩他的工具理念和算法設計,同時討論了二進制協議逆向技術研究的新興議題。
(6)華中科技大學,李偉明教授團隊。在2010年之2013年期間,作了大量的協議逆向技術工做,主要目的是作模糊(Fuzzing)測試。目前可能已經轉移了研究領域。
(7)四川核物理研究院,去年和今年發表了幾篇文獻,研究想法和研究思路都比較好。不知道是否會繼續從事研究,若是還繼續從事研究的話,那麼是很是好的一件事,爲協議逆向技術研究推進,貢獻一份力量。很羨慕這種研究出產量高的新晉團隊,實力強,人數多。
(8)鄭州,舒輝老師,羅軍勇老師,陳性元老師,韓繼紅老師。這些前輩均在國內一類期刊上,發表過相關研究。惟一遺憾的是,這些前輩可能會轉移研究領域,或團隊延續性中斷。
(9)若有遺漏,歡迎交流。冒昧唐突,請恕原諒。
(1)可能工控安全企業會涉足吧,我的不太懂,就不議論了。
(2)帖子一枚,本人不懂Fuzzing,可是PI項目自己不是Fuzzing,卻能夠運用至Fuzzing裏面,緣由是多序列算法能夠對域結構進行標記。地址:百度安全論壇,http://anquan.baidu.com/bbs/forum.php?mod=viewthread&tid=408345
(3)其餘:略
僅探討基於網絡軌跡的協議逆向技術研究
(1)本科碩士博士的學位論文
截止2015年,部分尤爲值得欽佩的論文,包括王一鵬等人的學位論文,很是具備學術價值,理論推導也不錯。
(2)國內外期刊會議等短論文
針對上述知名團隊,論文水平質量較高。呈現的特色是:a)2015年開始,在協議狀態機等領域,突破進展較快較多較好。b)2015年開始,發現了協 議逆向技術與流量分類的共性問題,提出面向協議逆向技術的協議分類方法研究,成爲一個分支。緣由很簡單,由於未知協議的分類方法很難,是無監督的,不能進 行有監督或半監督。c)2016開始,旗幟鮮明地提出二進制協議逆向技術的新興議題。雖然二進制協議逆向不是個新問題,可是是一個新議題,尚無相關學者提出專門方法解析它。
(3)參考文獻和對應工做的梳理關係圖,僅供參考,不能做爲嚴格證實材料。Attention!注意,圖中甚至可能出現謬誤,請自行甄別。因爲時效性,沒有給出更新的文獻了。
(4)參考文獻和對應歷史時間的梳理關係圖,僅供參考,不能做爲嚴格證實材料。Attention!注意,圖中甚至可能出現謬誤,請自行甄別。因爲時效性,沒有給出更新的文獻了。
(1)2011年,潘璠博士等人,協議逆向工程研究進展。是個人啓蒙讀物,深爲感激敬佩,引領晚輩走向此路
(2)2013年,張釗等人,協議規範研究綜述。思路清晰,概念總結到位。狀態機的綜述整理也比較新穎。
(3)2015年,吳禮發教授等人,協議狀態機推斷綜述。專門談狀態機的,總結和梳理十分詳實,閱讀此文,如飢似渴,欽佩之至。
(4)2015年,劉淵等人,基於網絡數據的協議逆向工程研究進展。在面向協議逆向技術的協議分類研究上,有較好的論述,將報文分類引入到協議逆向問題中來,是好思路,也是符合實際應用需求的。
(5)2015年,John Narayan等人,協議逆向工程工具綜述,純正英文文獻。邏輯圖表關係比較形象,做爲碩士研究生入門讀物,又鍛鍊本身的英語,是個不錯的選擇。:-)
(6)以上不徹底列舉,若有遺漏,請恕失誤。
僅探討基於網絡軌跡的協議逆向技術研究
(1)面向協議逆向技術的協議分類研究
從事協議逆向技術,最致命的是前端,真實網絡環境下,未知私有的協議數據到手後,但是是一團亂麻,不知道哪些是同一類的私有協議。只有牽頭牽出一類私有協議的數據,纔好作下一步工做。本來這一工做不屬於協議逆向,可是在實際需求上產生了這一問題,所以衍生了報文分類研究。協議分類研究很早也開始了,可是不一樣於協議逆向問題中的協議分類,緣由有不少,只談一條最重要的,由於是無監督的分類問題,還很差評估準確程度。
(2)字段格式提取研究
在字段格式提取研究上,比較有意思的一件事。相關基於網絡軌跡的研究,呈現兩個特色:a)常見作文本字段的解析;b)評估方法用的是召回率這種協議分類指標,同時研究的人少。截止2015年,每一年最多一篇是專門針對字段格式提取這一技術目的的研究討論。大多研究者的思路是關鍵字段提取,而不是字段格式提取。二者不等價。緣由是對於協議的分類或解析,有時候選取一到兩個字段,就能夠區別,沒有必要作到字段格式的份上。至關於從百米的起始跑道,推動到百米終點,大多研究在起點位置徘徊,研究字段域結構提取,字段指紋,字段特徵提取,說到最後仍然是精度不高的特徵,評估時選用識別率,而不是用Discoverer中的字段區域精確評估指標。反映了,字段格式提取的工做難以突破,難度較高,在這一領域的強者,是廣東中山大學,餘順爭教授和羅建楨博士的研究,數學功底推導和算法設計思路均十分新穎。
(3)語義推斷研究
在這一領域上,基於網絡軌跡的研究稀少,緣由是技術難點比字段格式提取還多。語義推斷,有時候依賴於字段格式提取。當字段格式提取不暢的時候,語義推斷也很難作下去。然而,有時候,語義推斷不須要提取字段格式。這反映了兩種不一樣的研究思路,一種是引入語義信息的先驗猜想,一種是以字段格式提取爲基礎的語義探索。兩個前後關係和上下關係不一樣。截止2015年,僅2010年和2014年的兩三篇文獻,專門探討semantic information外,恐怕也再沒見到。這一方面是後續本人研究極其感興趣的地方。
(4)狀態機推演研究
在這一領域上,廣東中山大學餘順爭教授和南京吳禮發教授等團隊是傳統強隊,也有部分術語稱爲狀態機推斷研究。通常分爲初始狀態標註構建和狀態機化簡,部分研究每每涉及到協議分類研究。因此面向協議逆向技術的協議分類研究能夠劃入到這一研究中來,不過目前尚未討論二者關係,期待有人可以討論。
僅探討基於網絡軌跡的協議逆向技術研究
(1)未知協議發現
當前公開學術文獻較少使用這一術語,EI收錄的相關研究領域中幾乎沒有人使用,因此這一術語須要謹慎討論。緣由是聽到若干次技術討論,使用協議發現這一術語。問題是怎麼定義協議發現,怎樣的協議能叫被發現,具體公式含義尚不明確。並不是是指這一術語錯誤,而是說,當將這一律念表述清晰,可能會引起一系列的優秀靈感。如藉助異常檢測理論,對未知協議發現,下形式化表達或準確數學公式的定義。還存在一種可能性,協議發現到最後,實際已經有一個術語能夠歸納它了。種種猜想都須要後續探索研究。
(2)字段格式提取方面
提出了二進制協議字段的新議題。由於在常見的網絡環境中,若是是文本字段,直接翻譯ASCII或猜想編碼集,便可得到一些有用信息,再根據有用信息的利用,逐步解析剝離。可是對於二進制協議,這是常見的形態,工控領域,無線通訊領域,衛星網絡領域,鏈路傳輸領域,僵屍網絡領域,觀察到的協議數據若是協議規格不知道,大多呈現的是二進制數據狀態,不知道哪兒和哪兒是字段邊界,用ASCII一譯碼,譯不出來,說明二進制協議字段的問題是個比文本協議字段解析更復雜的問題。
同時在2015年之2016年期間,有不少同行對字段格式提取的統計方法思路,作了探索。能夠說是百花齊放,這是很好的一個事情,你們一塊兒研究,一塊兒探索,讓這個領域活下去。筆者有點悲觀的緣由已經寫在前文中了。
(3)報文分類方面
協議逆向工程的報文分類問題,通常有三方面子問題(略),也是當前本人團隊下一步要作的理論探索和實際進展工做。
(4)協議逆向和協議「正向」
不少學者都在作協議逆向,但是作協議「正向」的很少。這個「正向」不是按規格解析的意思,而是從正向上分析協議設計者在設計協議的思路,從正向上分析協議在組合時的先驗分佈,當前2015年有一位韓國人發表了相關研究,已知工控協議的規格,分析工控協議特色。這裏不贅述了,也是本人課題組下一步要作的實際進展工做。
(1)綜述類文獻:已經在上面的小節中羅列了。
(2)具體技術文獻:按照綜述類文獻,一篇篇讀吧。想作以程序分析爲入口的,就讀指令分析序列部分。想作以Pcap包捕獲數據爲分析對象的,就讀基於網絡軌跡的協議逆向技術研究。
(3)若是是學術研究者,不是工業界者。能夠考慮修這幾門課:數據挖掘與機器學習,數據挖掘與統計學習,天然語言處理,生物信息學,時間序列分析,模式識別,統計學習,人工智能等。
(1)Netzob,看看前輩的平臺工具,能夠提升本身的眼界。
(2)編程實踐工具:只是推薦而已,根據本身狀況用。比較推薦Python,R,Matlab,C等。作項目用C及其變種,作學術用Python,R,Matlab。由於有些庫工具比較好用,利於學術快速出成果和性能分析。
昨晚,畢業學位論文的文字大致已經成型,達成了初版較爲系統驗證的文字草案了,至少已經不用發愁了,感慨萬千。
早年時,求學遊歷,就已經學習過反者道之動,弱者道之用的網絡信息安全對抗的哲學規律,讓我對信息安全理論受用無比,受益不淺。
古人云:文章千古事,得失寸心知。曾經腹中經綸明珠多顆,覺得蒙塵,一度想束之高閣。
現在,應感謝本身生命中的恩人和貴人,尤爲是感激指點個人恩師。
首先,讓本身陰差陽錯地走向了研究方向,儘管當年選擇這個方向的時候,有一段很詼諧的經歷。
而後,又一路有驚無險地度過學術研究的各類考覈難關和人生生活難關。
最後,到了今天這個地方,本身都不敢想象本身會達到這樣的地步,我簡直是傻人有傻福,命中得遇貴人,或許就是電影裏的「Stupid is as stupid does.」,十分珍惜這樣的緣分命運。
讀到過這樣的典記,
公孫丑曰:「道則高矣,美矣,宜若登自然,似不可及也;何不使彼爲可幾及而日孳孳也?」
孟子曰:「大匠不爲拙工改廢繩墨,羿不爲拙射變其彀率。君子引而不發,躍如也。中道而立,能者從之。」
引而不發,躍如也。中道而立,能者從之。這樣的人生境界恐怕惟有恩師才能達到吧,願繼日後來者應倍加珍惜。
終於意識到,還有3個月,即便戰戰兢兢,如臨深淵,如履薄冰,可是很快,又要走到一我的生路口的風雨轉折點,讓人悲欣交集。
就此擱筆,不知所云。