声明: 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个月,即便战战兢兢,如临深渊,如履薄冰,可是很快,又要走到一我的生路口的风雨转折点,让人悲欣交集。
就此搁笔,不知所云。