浅谈二进制漏洞研究与病毒研究

阅读量530039

|评论4

发布时间 : 2020-04-13 14:30:38

 

安全方向

最近一些朋友找到我,说想学习一下漏洞和病毒研究,其实很多安全研究人员想入门二进制安全,但关于二进制安全,很多新手朋友对这个方向不太了解,也不知道该怎么去深入的研究学习二进制安全,如何才能成为像自己羡慕的一些顶级安全大佬一样,很多初学者会感到迷茫,不知道从何入手开始学习,二进制安全相比其他安全方向,这个方向的入门门槛相对要高一些,主要是需要安全研究人员有一定的逆向分析与调试能力,需要对计算机内存管理、程序运行原理、计算机系统底层知识都比较深的理解,需要研究人员不断的动手调试研究并且坚持不懈,这是一个很长期的过程,不是一天两天的事情,但是二进制安全一定是安全研究从业者未来想成为顶级安全大师必需要修炼和学习的一门技术,掌握这门技术会让你比别人更懂安全,更懂黑客,二进制安全可以说是练武者内功的修炼,俗话说的好:练武不练功到老一场空,笔者利用这篇文章给一些刚入行的新手朋友解答一下二进制研究的思路与入门指导吧

二进制安全研究人员在专业的安全公司主要包含两个方向:漏洞研究、病毒研究,很多人对这两个方向不太了解,因为研究的人本身不太多,这两个方向都需要花费研究人员大量的时间和精力,同时要想在这两个方向有所成绩,需要安全研究人员持续不断的投入时间和精力,没有速成的方法,这也导致大部分安全从业者在接触这两个方向不久之后,就选择了放弃,同时也导致这两个方向的人才出现严重的断层,大多数人只是停留在入门水平,也没有深入的研究和坚持,就放弃了,并没有在这两个方向做更深入的研究,没有坚持做下去,如果你不懂二进制安全,当你做安全的时间越长,你就会越发的觉得你一直在学习武功招式,各种武功招式学了不少,套路也会不少,而一直忽略了内功的修炼,越到后面越会感觉少一点什么东西,而且随着计算机底层安全技术的发展,如果没有二进制安全方面的长期积累,你会发现你在其他方向会越来越难,最后就只能转行了

 

漏洞研究

其实漏洞研究并不是那么神秘,市面上已经有很多非常好的书籍了,只是愿意投入时间和精力的人太少了,先学会一门语言,以C语言入门,然后了解一些操作系统底层的基础知识,比方内存分配,指针操作等,再进行汇编语言的学习,对汇编语言有一个基础的了解之后,可以编写一些相关的程序,在编写程序的过程中学习软件调试技术,解决在编程过程中遇到的每一个BUG,这是一个长期的过程,需要不断的练习,有了这些基础之后,就可以尝试去分析一些已知的漏洞,弄清楚这些漏洞的原理,如果有POC或EXP的,可以手动调试一遍,搞清楚这些POC和EXP的技术细节,关于漏洞分析,我这里推荐两本书《0day安全:软件漏洞分析技术》和《漏洞战争》,这两本书对一些常见的漏洞原理与例子进行了详细分析,值得收藏,时不是拿出来翻下,同时一定要多动手,学二进制安全不动手,是学不到东西的,当弄清楚一些常用的漏洞的原理之后,就可以开始尝试去挖掘一些漏洞了

其实漏洞研究的基础就是分析程序的Crash,蓝屏DUMP等,漏洞研究人员在挖掘漏洞之前都是不断地去分析各种程序的Crash,弄清楚这些程序为啥Crash,在Crash的时候能不能被利用,这也是漏洞研究的入门,当一个程序出现Crash的时候可能就是漏洞所在,经验丰富的漏洞研究人员会在程序Crash的时候,快速定位到漏洞所在,同时分析这个漏洞是否可被利用,在花时间去研究编写相应的EXP,不过这种对Crash的“敏感”需要漏洞研究人员长期的积累与研究才会形成,这也就是为啥经验丰富的漏洞人员可以更快速的挖掘出软件的漏洞,牛逼的漏洞研究人员,可能只需要使用IDA就可能找到很多程序的漏洞所在,这就要靠很多年的经验和积累了,这里很多朋友就会问了,那怎么才能让程序Crash呢?这就是为啥很多漏洞研究人员会去开发一些Fuzzing程序,啥是Fuzzing程序,其实就是要想办法把程序搞Crash,不把程序搞Crash,就没办法发现和挖掘漏洞,这就是挖掘漏洞的过程,先使用反汇编工具去分析程序中可能存在的漏洞点(一般是程序的输入点),再去开发相应的Fuzzing程序,不断地测试输入怎么样的畸形数据会导致程序Crash,再从这些导致Crash的畸形数据中去找有价值的数据,通过动态调试去找到数据Crash原理,然后再看看这个Crash的过程能不能补利用,漏洞挖掘的过程大致就是这个过程了,过程虽然说起来简单,但是需要花费漏洞研究人员大量的时间和精力的,不是一两天的事,分析一个已经存在的漏洞,同时又有POC的情况下,只要有二进制逆向分析调试基础,用不了多长时间,但如果需要发现有价值的漏洞,同时又能写出EXP,没有长期的积累和丰富的经验,基本不可能在短时间内完成,很多时间漏洞的发现与挖掘是漏洞研究人员长期的积累之后,已经对漏洞有一种敏感,会在一些程序可能出现的漏洞点上进行不断的尝试,才发现的,当然也有一些漏洞天才选择,靠灵感就能发现一些漏洞吧,不过大部分漏洞研究与挖掘顶级的高手都经历过一个长期积累的过程,这个过程就是一个不断积累的过程,不去积累这种分析调试能力,是没办法更进一步的分析和挖掘漏洞的,同时也没办法发现漏洞,更别说开发EXP了,这个过程是一个非常枯燥的过程,需要研究人员是真的热爱这件事,不然很难坚持,这也就是为啥这个方向研究的人比较少的原因

 

病毒研究

很多新手朋友对病毒研究也不是很清楚,一些新手朋友问我,病毒分析有前途吗?到底有什么用?未来的发展前景如何?一些朋友也在私下问我,说我看很多公司都不招病毒研究方向呢?是为什么呢?是不是没有病毒了?是不是这个方向不重要?很多朋友还会顾虑到,为啥外面一些公司在招安全研究员的时候招这个方向的很少呢?这里我也给大家解答一下,同时可以非常肯定的告诉大家:病毒研究一定有前途,而且非常重要,笔者也给新手推荐一个学习线路,作为一个入门指导

很多安全研究人员对病毒研究方向不太懂,更不清楚这个方向,笔者曾经写过一篇文章,专门介绍了一下这个方向《你真的了解病毒分析吗?反病毒专家为你深度揭密》,其实很多人对病毒这个概念也不太了解,早期的计算机病毒主要以蠕虫病毒、感染型病毒为主,这些病毒通过感染系统文件,通过电子邮件、共享局域网、系统漏洞等进行传播,当时的计算机病毒主要使用汇编语言进行编写,感染计算机系统中的COM文件和PE文件,这些计算病毒都是人为编写的程序,具备很强的自我复制和传播感染能力,主要用于破坏计算机功能和存储数据,这个时候的黑客组织主要以一种“炫技”的方式展现自己的技术水平,编写这些计算机病毒主要用途可能只是研究,并没有太多的利益驱动,随着计算机网络的发展,计算机病毒开始向更多类型发展,个人计算机安全问题那个时期主要以病毒、木马为主,可以说在那个年代个人电脑上各种病毒木马横行,这些病毒类型主要以蠕虫病毒、感染型病毒、破坏型病毒为主,木马类型主要以盗号木马,后门下载器,远控木马(灰鸽子、Gh0st)为主,这个时候的黑客组织开始以利益驱动为主了,这些病毒程序主要通过盗取受害者数据进行谋利,比方游戏帐号和密码、交社软件帐号和密码、远程控制受害者盗取受害者隐私数据等,能过盗取的这些帐号、密码以及隐私数据在第三方网站上出售获取利益,从这个时候开始黑客组织不要以炫技为主了,转变为以利益为主,现在随着时代的发展,又出现了各种不同类型的恶意软件,这些恶意软件包含勒索病毒、挖矿病毒、流氓推广病毒、僵尸网络病毒、下载器病毒、后门、银行木马、APT远控木马、窃密木马等,同时把这些不同类型的样本家族统称为恶意软件了

病毒研究需要掌握的基础知识和漏洞研究是一样的,主要就是对各种不同类型的黑客攻击样本进行逆向分析,从这些样本中获取到有价值的信息,这里涉及到一个样本的捕获能力,拿到流行病毒样本之后,需要对样本进行详细分析,提取出样本中的病毒行为特征,流量特征等,分析病毒样本主要采用静态+动态相结合分析方法,很多病毒样本会使用各种不同的对抗技术,比方:反调试、反沙箱、反虚拟机、混淆、加壳、加密、自修改代码、Rootkit等技术,这些高端的样本需要病毒研究人员具有很强的逆向分析能力,对这些技术都有研究,同时一些APT攻击的样本中可能还会使用各种0day或Nday,这需要病毒研究人员还具备漏洞分析调试能力,病毒研究需要学习很多安全基础知识,不同的病毒样本研究的重点不一样,使用的攻击手法和获取数据的方法也不一样,对病毒研究完成之后,需要对病毒样本进行一个跟踪,如果是流行的病毒样本,会不断变种,从这些病毒的变种版本中溯源到某个黑客组织或者每个病毒家族的发展,总结出这个家族使用了哪些攻击手法,利用了哪些流行的漏洞,样本里面使用了哪些免杀方法等

其实病毒研究和漏洞研究是相辅相成的,两者有一定的关联,又有一定的区别,漏洞是病毒的载体,同时病毒又包含漏洞,病毒研究主要是研究病毒里面利用的漏洞,这些漏洞主要为系统漏洞,主要以分析为主,漏洞研究包含漏洞分析,同时还需要进行漏洞的挖掘,漏洞的分析跟病毒里面的漏洞分析差不多,需要分析调试能力,漏洞研究还需要去挖掘新的漏洞,同时病毒研究不仅仅需要研究病毒样本,还需要去研究样本里面的漏洞原理与利用技术,所以这两个方向有交集又有不同的侧重点,但都需要研究人员长期的积累与坚持,才能有所成就,很多人在某个方向,研究一段时间之放弃了,还有一些人连入门都没有入,就看了几份漏洞分析或病毒分析文章,了解一些大体就觉得就这样了,其实自己啥也没学会,这两个方向一定是需要花费很多时间和精力去长期研究的,而且一定要动手自己去分析研究,不然基本是学不到什么东西的,很多人老是想急于求成,其实这两个方向都是没有捷径可以走的,属于内功的修炼,古代修炼内功的人都需要自己找个地方,安安静静的去修炼,需要一步一步脚踏实地,这个是没办法速成的,光看别人写的报告,其实啥也没学到,当有新的漏洞出现或新的样本出现的时候还是不会,所以一定要动手多研究,才能学到东西,慢慢积累,培养一种二进制研究的“敏感度”,这样当你遇到一个样本或一个漏洞的时候就能快速定位到相关的问题,当你修炼完成之后,比拼的就是速度了,天下武功,无坚不摧,唯快不破,高手的决斗比拼的就是速度

安全问题,一直是全人类最关心的问题,不管在哪个行业,安全永远都是放在第一位,网络安全问题层出不穷,这些网络安全问题又是怎么产生的呢?其实网络安全从最开始出现到现在,发展了差不多几十年,核心安全问题一直都没有变过,还是漏洞与病毒,通过这两大核心又发展出很多不同的东西,就跟计算机最开始就是1和0,后面又发展出各种不同的语言一样,漏洞和病毒一直是安全的核心,全球大多数网络安全攻击活动也都是利用漏洞和病毒发起的,现在主流的黑客组织攻击手法用来传播恶意软件的方法,如下所示:

基本上全球主流的黑客组织攻击手法都离不开上面这些了,这些攻击手法都不是单一的存在,它存在于黑客组织攻击的完整过程链当中,成熟的黑客组织会使用上面的一种或多种攻击法,以达到不同的目标,其中社会工程更是一项复杂的科学,真实的渗透测试都会使用很多社会工程学的方法,网络安全攻击手法发展了这几十年,其实高端的黑客组织攻击方法一直没变化,主要还是利用社会工程(网络钓鱼+垃圾邮件+间谍)、漏洞、病毒,黑客组织利用这些攻击方法,不断发起网络攻击活动,导致全球网络安全攻击事件层出不穷

如今网络安全已经成为了全球各国关注与发展的重点,甚至已经成为了一个国家的“国防”事业核心,可以说没有网络安全就没有国家安全,全球各地的网络犯罪黑客组织无时无刻不在发起网络攻击行为,未来随着全球网络基础设施的更进一步发展,黑客组织攻击的目标会越来越多,攻击的平台越来越多,攻击的手法也会越来越多,这是一场永不停止的对抗,同时网络安全已经成为了一个企业发展的重要支撑,企业做的越大,越是需要重视安全问题,全球发现的各种网络安全攻击,数据泄露安全事件,大多数都是由漏洞+病毒发起的攻击,漏洞包含:WEB应用漏洞、软件漏洞、系统漏洞,病毒包含:勒索病毒、挖矿病毒、窃密远控木马、僵尸网络、银行木马、APT攻击木马等,黑客组织通过漏洞发起网络攻击,然后在受害者主机上植入各种病毒程序,盗取或破坏受害者数据,达到网络攻击的目的,专业的网络安全公司一定在这两个方向都有深入的研究和积累的,漏洞分析挖掘能力,病毒跟踪捕获能力,这两个方向在未来需要更多专业的人才,但这些人才需要时间去培养,任何一个方向都需要花费大量的时间和精力,需要研究人员具有很强的研究能力,同时需要对安全很有兴趣和热爱,不然很难坚持,但这两个方向一定是未来安全的重点,我们做安全的目的其实就是对抗黑客,黑客组织每天都在研究新的攻击漏洞,并利用这些漏洞开发新的恶意软件,用这些网络武器对目标发起攻击

安全这条路很长,如果真想在这条路上走的更远一点,我建议还是多花时间去研究漏洞,病毒这两个方向吧,当你研究的时候越长,你越会发现这两个方向是安全的基础,也相当于楼房的地基,地基不牢,后面起再高的楼房也会倒塌,现在安全圈很流行两个东西,一个是CTF,一个是红蓝对抗,CTF就不说了,主要是“应试教育”,在校的大学生可以多参加,我之前就说过了,没啥不好的,在里面可以学一些东西,但不在沉迷于CTF,因为真正的网络安全问题,不是CTF,红蓝对抗是最进几年非常流行的东西,基本上很多公司都有自己的蓝军团队,专业的安全公司通过蓝军团队对发现更多的安全问题,同时对抗黑客,随着红蓝对抗的热潮,现在国家非常重视安全这块,每年都有组织HW,今年的HW马上也要开始了,其实HW的重点不就是漏洞+病毒吗?要想在HW中取得好的成绩,有高端的漏洞+高级免杀病毒,HW中取得好成绩不是很容易的事?然而这两个东西说起来容易,做起来却很难,现在哪几家公司愿意长期专门投入这两个方面的人才培养呢?公司如果真想在HW中取得好的成绩,吊打其他安全团队,一定要注重安全技术研究,在漏洞研究和病毒研究在这两个方面愿意投入相关的人力,专门研究各种漏洞利用技术,木马植入免杀技术,这不是一两天的事,需要长时间的积累的,积累的时间越长,积累的时间越多,安全能力就会越高,到HW的时候随便拿点东西出来就可以吊打别人了,如果从来不积累,想在短时间内成长基本是不可能的事,或者像一些低端的黑客组织一样,通过花钱购买其他成熟黑客组织开发的网络攻击武器(漏洞、病毒),来完成攻击行为了,高端的黑客组织一定是有一批高端的漏洞研究和病毒研究的人员的

安全研究人员有空还是就多去研究一些漏洞,多去分析一些新的样本的免杀技术和攻击手法,研究漏洞和研究病毒一样,需要研究人员不断去尝试,不断去验证,在这个过程中可能需要很大的耐心和精力,未来一定需要更多二进制安全的人才,然而这两个方向都不是一朝一夕的事,需要花费研究人员很多时间去研究,不然很难坚持的,分析调试能力是安全研究的基础能力,需要花费大量的时间和精力去磨练,当你的这个能力足够强之后,不管是做漏洞研究,还是做病毒研究都会得心应手,随着时间的积累,你慢慢就是安全领域最顶端的人才了,做这两个方向的研究,坚持很重要,这就需要研究人员对安全真的很感兴趣,兴趣和爱好可能是支撑这两个方向的研究人员一直踏踏实实去研究的原因吧,希望有更多的年轻人能加入到这两个方向中,不管未来平台怎么变化,安全概念怎么更新,安全框架如何演进,安全产品如何革新,漏洞+病毒永远是网络安全中最核心的东西,也是成为网络安全顶级人才必经的道路,专业网络安全公司一定在这两个方向都拥有一批顶尖的人才,但这条路并不简单,就看你能不能坚持了,付出的越多,回报也一定会越多

安全方向现在越来越多了,也越来越细了,但安全问题的核心从来没有变过,安全研究的重点一直是漏洞和病毒,但不管是漏洞,还是病毒都需要安全研究人员能够坚持,坚持,再坚持,动手,动手,再动手,学习,学习,再学习,能坚持下来,你未来就会成为安全领域的顶端人才,坚持不下来,可能最后大多数安全从业者就只能转行了

当你在安全的这条路上走的越远,可能你就会越明白上面的内容,同时也希望这篇文章对一些初学者有所帮助吧,其实做安全研究入门并不难,学习资料也很多,难的是坚持,特别是二进制安全方向,需要长期的坚持和积累才能有所成长,可能很多人刚入门坚持了一段时间就不愿做了,谁能坚持,可能谁就能走的更远,未来网络安全,不管是在政府还是企业都会变得越来越重要,一定需要更多专业的安全研究人员,努力,加油,坚持吧!

本文由安全分析与研究原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/202806

安全客 - 有思想的安全新媒体

分享到:微信
+118赞
收藏
安全分析与研究
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66