第388章 中间人攻击
虽然wdows3.1也已经设计了权限控制,并且将系统进行了分层,但是在这方面做得并不好,甚至可以说是相当的粗糙。 不过这也可以理解,毕竟这个系统刚刚出来,并且他们当时为了能够尽快地推出,也非常的赶时间,将一些重要的功能首先实现了,对于普通用户来说,他们设计的权限控制体系已经基本能够满足要求了。 wdows3x系列cao作系统,根本就不是为实时cao作系统而开发的,实时系统,他们有专门的wdowsnt系列,其权限控制就比这个要完善多了,稳定性也极大的增强。不过,同样的道理,他们想要对nt系统进行定制修改的难度也就更大了,总体说来,还没有直接使用这个来得方便。 并且,wdows系列的系统都是闭源的,说白了这是商业软件,你想使用,就必须进行购买,他们现在这样使用,是违反知识产权法的,使用的是盗版。要是被微软发现,他们是可以通过司法途径进行起诉的。当然,至于国内的法院受不受理,这又是另外一回事了。 wldaw3.1系统的权限系统虽然简单,但是在用户层,想要对系统层进行cao作这是绝对禁止的,因为会威胁到系统的稳定性,只要破坏了系统的某一个关键数据结构,很有可能就会让系统崩溃。 涉及到系统底层的cao作,都是通过微软给出的sdk包里面的系统函数进行实现的。这些系统函数,不会乱cao作内存里面关键的数据,而是会按照系统程序员所期望的方式实现某些功能。 这样做既不会影响系统的稳定性和安全性,又可以让编写应用软件的程序员获得想要的功能,还可以简化cao作步骤,让他们不用关心底层的运行机制,简直是一举三得的好办法。 当然也并不是说系统层里面的东西,用户层完全访问不了,那些病毒木马想要实现自己的功能,很大程度上就是利用了系统的漏洞,获得了超过用户层的权限。 不过,他们这个系统,已经被他们经过极度的优化,一些常见漏洞也基本上给打上了补丁,要想找出这样一个漏洞,还是很困难 所以,余波在听到林鸿大言不惭地说权限要自己动手去拿,不会自动送上门。的时候,不由冷冷一笑,反驳道: 你说得倒轻巧,有本事你拿一个看看 余波心中还对林鸿有些意见毕竟正是他的到来,才导致大家人心惶惶,担心自己为之工作了好多年的心血被推到重来。此外,他也对林鸿轻描淡写的态度很是看不惯,就算你们公司自己编写出了一个控制系统,但是也不能这样信口开河吧 他们在这个系统上浸yin了这么久自认为自己对这个系统的了解,只是仅次于那些开发系统的人了。 他当然知道权限要自己去拿,并不会自动送上门但是,说起来容易做起来难,有些事情是站着说不腰疼,这样的人,他见得多了。 余波认为是林鸿想要在他们领导面前表现自己,才故意这样鼻孔插大葱装象。 林鸿听到他的话笑了下,没有放在心上而是对曹兴平和徐直中说道: 这个情况我之前是遇到过的。很多木马和蠕虫,就是通过重写系统底层的函数来截流数据。这在系统安全领域,有一个专门的名词,叫做中间人攻击。 中间人攻击,在黑客领域是一种非常古老并且有效的攻击方式。 其本质原理,就是在数据流动的链路上,串接一个攻击者自己的转发器,从而达到嗅探窃取数据的目的。 这种情形,就好像将一个水管给截段,然后在上面连接一个自己的转接头,这个转接头是不会影响水管中水流的正常流动的,它只是对水流进行监控,一旦发现水流里面有一条鱼经过,它就负责将这个信息给记录在案,甚至,它还有其他一些比较神奇的功能,例如,将这条鱼替换成一条泥鳅。 而水管两端的人,由于缺乏沟通,根本不知道这些水流在流动的过程中到底发生了什么。 他们不知道自己私下发送的鱼被别人监控了,甚至被人掉包,发送方以为自己发送了一条鱼,而接收方则以为对方发送了一条泥鳅。 在网络领域,这个中间人甚至可以是一台电脑,用户a向用户b发送信息,却被人偷偷地让信息流跑到电脑c上面走了一圈,而ab用户却根本不知道自己的信息已经被人监听了。由于电脑c只是对数据进行复制和备份,完全不对信息进行修改,是被动的行文,所以ab是很难发现这种行为的。 而在单机里面,中间人攻击更多的就是像这次这样,对某个环节或者函数进行接管,相当于在外面另外套了一层,要想访问真实的内容,必须从中间人这里进入。 林鸿的超级蠕虫对数据进行搜集,实际上也是这个原理,从表面上看,已经被感染的系统和原来的系统是根本没有任何差别的,不会影响到数据的正常流动,也不会影响系统的稳定性。 而他们现在的这个雷达控制系统,很显然也是这样,有某一个东西正好接管了他们系统中所调用的一个系统函数,只是,对方在处理那个底层函数的时候,有个地方没有处理好,导致他们在调用这个函数的时候,根本没有调用成功,结果就没有返回值。 徐直中和曹兴平两人对视一眼,然后徐直中问道:小鸿,你能肯定是这个原因吗 林鸿所说的话,通俗易懂,他们也听明白了。 虽然不离十,但是为了保险起见,林鸿还是得自己动手验证一下才能打包票。 这样吧,如果方便的话,我就使用我自己的方式进行验证一下。他说道。 徐直中稍微想了一下,便点头同意了。 在曹兴平的示意下,余波只好让出了自己的座位。 林鸿坐了上去,然后调出编译器,立刻动手编写一个小工具。 这个小工具非常简单,只有一个功能,那就是持续不断地对之前那个函数进行调用,然后使用内存dump的方式,将内存里面的指定数据保存在一个文本文件里面,与此同时,也监测那个函数的返回结果。 接着,林鸿便将余波之前做的过程重新做了一遍,重启,然后进入静默状态,再重新恢复
一个新的文件便被生成了。 林鸿使用编辑器将其打开,开始分析文本文件里面的内容。 站在林鸿身后,想看他好戏的余波顿时有些傻眼了。 也不知道林鸿是故意的还是怎的,他的动作非常快,写代码也感觉就像是心中早就编写过无数次那样,直接一溜烟地就编写了过去,稍微修复了几个由于疏忽而导致的错误之后,这个小工具便很快就写完了。整个过程,用了不到三分钟的时间。 余波站在身后一直目不眨眼地盯着都没有跟上他的步伐。虽然看懂了大概的意思,但是其细节却是完全理解不了,不知道对方为什么这么编写。 而看到最终生成的那个文本文件,他更是傻眼,因为里面的内容按理说来,是根本访问不到的,是系统层的内存数据。 这不可余波还想说什么,不过立刻有闭了嘴,因为事实摆在眼前,他再说不可能,那不是一句废话么 林鸿将记录迅速的看了一遍,最终点头道: 果然如此。里面的确有一个隐藏的程序,接管了这个函数。 这个log文件中的记录,非常明显地显示出,进入静默状态的时候,内存里面的函数栈有了比较明显的变化,数据显示一个新的函数被压入了栈。 栈是数据结构中一个比较特殊的数据结构,其特点就是先进后出,例如弹夹就是一个典型的栈结构,子弹装进去的时候,先压入,再弹出,最先装入的是最后被射出。 在程序中,函数里面的各个数据和变量,也是按照一定的顺序,一个一个压入,执行完毕之后,再一个一个弹出。 要想监控函数的变化,就只要监控指定位置的那个栈结构就行了。林鸿从内存中dump出来的数据,就是栈里面的东西。 这个结果,在场的其他三人脸色都有些变了。 这意味着,林鸿所说的话是正确的,系统底层的确有一个隐藏的程序在秘密活动,而他们之前对此却毫不知情。 徐直中还好,已经有了心理准备,曹兴平却是脸色变得极其难看。 那为什么在刚开始启动的时候没有这个问题,而进入静默状态才会出现 这个时候,余波突然插言问道,他这个时候,已经没有心思去膈应林鸿了。 这是因为在系统启动的时候,你们的这个壳程序优先启动,然后对方才启动,这样就根本没有受到它的影响,两者相安无事。 但是进入静默状态的时候,壳程序会要关闭,再次启动的时候,那个隐藏程序已经完全接管了整个函数接口,可能是对方在这一块没有处理好,导致两者产生了冲突,壳程序调用的那个函数没有能够返回有效的数值,而你们恰好又没有对这个返回值进行判断处理,最终导致了整个壳程序的崩溃。