文章2004年就有了,转载注意版权!
作者:马丁 martin@cnsea.org,来自: www.cnsea.org
前言:这篇文章是“黑客张大民在IPv6世界里的幸福与烦恼”的续篇,如果想了解一下黑客张大民的来龙上脉和背景,可以参考下面这篇文章。
黑客张大民在做完IPv6和,Pv4安全性的比较研究后,得到了很多同行们的反馈。许多人提出了很多中肯的意见。让张大民欣慰的是,这些研究也得到了一些他很敬佩的前辈和同行的注意。可是,由于在这上面浪赞的时间太多,张大民在公司的工作有所拖拉。老板对他有了点意见。没办法,他只好加班加点,把积累下来的工作做完。奸几个星期都没有好好休息。这几天,总算忙完了,张大民已经自觉有点心力惟悴。看老板今天刚对自己有了点笑脸,赶紧提出要休假两周,想好好放松一下。
张大民最心仪的休假地方就是江南水乡的一些小镇。远离一切城市的喧嚣,更重要的是,可以原理一切和互联网有关的东西,好好休息一下自己的脑子。打点行装,张大民为自己找到了一个安静的水乡小镇,入住旅店后,好好睡了一觉,然后到处走走看看,吃吃江南美食,看看小镇风光,和街口洗菜的大妈聊聊天,两天下来,感觉很不错。可两天过后,张大民又有想弄他的电脑了,虽然他来休假之前下了决心,坚决不带他的笔记本来,但张大民来之前还是忍不住打印了一些最新的互联网攻防技术的文档,向每天晚上睡觉之前,拿出来看一看。
这天张大民吃完中饭,想回来睡个午觉,下午准备去山里里踏青。可睡之前发现自己打印的那些文档不见了。找前台的服务小姐一问,发现是让收拾房间服务生给收走了。张大民有点不乐意了,找到服务生,服务生说已经统一扔到后院的垃圾箱里了。张大民对服务生发了点小火,告诉他以后没有客人的许可不准随便收走客人的东西。然后就自己去后院的垃圾箱,想把这些文档找回来,边走边想:“自己真是有点走火如魔了,这些破文档居然也要到垃圾箱里去找回来”。
到旅店后院的垃圾箱里正翻着,忽然听见后面有人说话:“小兄弟,看你年纪轻轻的,身体也挺好,干嘛跑到这来抢我的生意”。张大民回头一看,身后站着一个精瘦的老头,于里拿着个细铁丝做的夹子,肩上背了个大塑料袋子。里面装了了好多压扁了的易拉罐。张大民敢紧解释,他只是在找一些丢失了的东西,并不想和他老人家挣捡破烂的地盘。’老头问什么东西,张大民没搭理他。可老头问个不停,‘钱,存摺儿?结婚帖子?’张大民只好说是一些电脑的文件,正说着,就找到了。老头说叫他看看,张大民乐了,这老头看起来比他父母要大,他费了好大劲才教会他妈写电子邮件,这些文档都是讲网络安全攻防的,又英文居多,这位破烂的老头怎么能看得懂。
没想到,这老头对着混暗的灯光,在路灯底下挺快就看完了,说“这种攻击没根啊,狗脑子”。
张大民吃了一惊,这时最新的黑客入侵记录,也许漏洞还没有被公布呢?
“怎么叫没根呢?为什么是狗脑子?”,张大民问?
“小兄弟,看你这不修边幅的样子,一天到晚都在琢磨着怎么黑别人的电脑吧?估计你也觉得你是个黑客。黑害也是分等级的,我讲的不是哪些公布漏洞的人,而是互联网的UNDERGROUND。这种利用未知漏洞控制主机,把ROOTKIT放到内核里,再装个小后门的伎俩我见得多了,不如流,知道黑害是怎么分等级的么?”
老头问?
“不就是看谁的水平高么?”张大民说。暗暗惊奇这老头的见解。
“呵呵”,老头笑了,“看你这么着迷的样子,你的水平也不会次,但决定黑客级别的是这三个英文字母”,老头蹲下身来,用捡破烂的那个铁丝夹子在地上划拉了三个英文字母“OWN”。
“OWN”,张大民说,“OWN有什么了不起”,如果张大民愿意,他随时都可以找到并控制互联网上千台有漏洞的主机。
“呵呵”,老头又乐了,“控制一两台主机的黑客是一个级别;控制100到1000台主机的黑害又是一个级别,控制上万台以上主机的黑客又是一个级别。小兄弟,你自认为是那个级别?”
“我不知道,我已经很少做控制别人主机的事情了,有时间自己发现一些漏洞,和安全界的人分享比较好”,张大民说。
“不错”,老头看着他,眼中有些赞许。“但比这些黑客更高一层境界的人,是想控制Network Infrastructure”,老头接着说。
“Network Infrastructure?”,张大民问。看这个老头说出这样标准的英语,张大民心中暗自惊奇。
“是”,老头说,“交换机,路由器,尤其是互联网骨干网的大型路由器,大型企业网的骨干交换机,控制了这些设备,就等于控制了整个网络的结构。如果你能控制一个企业网中的这些设备,就等于控制了整个企业网,比控制单一的主机要强大的多了。如果你真的能有本事控制互联网骨干网的大型路由器,那么整个互联网至少有一部分是在你的掌握之中了”。
“这些东西也能被OWN的么?”,张大民问?
“当然”,老头说,“到一些IRC的CHANNEL上去看看,明码实价,一台路由器的控制权可以换很多张信用卡号码,不过这些路由器大部分都是小企业管理不善的,低端,接入层的路由器”。
“那怎么OWN这些路由器呢?”,张大民问。
“呵呵”,老头笑到,“如果真的想控制整个互联网的INFRASTRUCTURE,唯一的办法就是自己能发现路由器和交换机上面的漏洞。”
“啊”,张大民点头称是,他一直在在这方面有兴趣。“那如何发现路由器和交换机上面的漏洞?”,张大民已经对老头有点尊敬了。心里一直想问一个问题,但还没敢问。
老头看着他,又笑了一笑,“小兄弟”,老头说,“我看你有些悟性,人也不坏今天已经不早了,我得回去了,如果你真的对这些东西感兴趣,明天还是这里,同一个时间,我们再接着聊”。
路由协议安全性
张大民回到旅馆,对这个老头暗自称奇。虽然对这个老头的来历由无数疑问,但觉得还是最好先别问,只谈技术。
第二天,张大民准时来到旅馆后院的垃圾箱边上,准备仔仔细细的问一下技术上的问题。
异常报文攻击
“到底怎么样能找到路由器和交换机上的漏洞?”,张大民问。
“路由器和交换机主要是要转发网络流量,要把网络流量转发到正确的日标地址,为了要达到这个目的,路由器和交换机之间要彼此交流路由信息”,老头说。
“那就是路由协议吧”,张大民问。
“没错”,老头接着说,“互联网之所以能发展到今天的规模,正是因为这些可扩展性的路由协议,尤其是BGP。整个互联网的结构就是建立在这些协议的正常运行的基础上。不管是企业网还是ISP的互联网骨干网,所有的路由器和交换机都要运行这些路由协议。这些路由协议就是互联网设备之间进行交流的语言,也是为什么互联网上的任意一台主机都可以链接到其它任意一台主机”。
“那照你这么说,找到路由器和交换机上的漏洞就等于是要找到这些网络协议上的漏洞喽?”,张大民问。
“没错”,老头赞许的说,“你的悟性还是不错得”。
“我也不是没想过这些方面的问题”,张大民说,“可是找到这些路由协议,网络协议上的漏洞何其容易,关键问题是这些协议太多了,正常运行的就有至少三四十种,每个协议都不简单,象路由协议RIP还算简单的,象OSPF,ISIS就复杂的很多,更别提BGP了。有的人一辈子就钻研怎么使用好BGP。不要说以前的一些协议如管理协议ICMP,远程登录协议TELNET和SSH,底层的IP,TCP和UDP;应用层的就更多了,象WEB的HTTP,文件传输的TFTP,FTP;网络安全加密的IPSEC AH&ESP,ISAKMP;远程认证的RADIUS;网络组发的PIM,DVMRP,IGMP;网络管理的DHCP,SNMP,DNS等等。这些都是任何一台路由器上必须要实现的一些基本协议。现在的新协议又层出不穷,象语音的协议H.323,SIP,提高安全的TLS,SSL,STCP,SBGP,IPV6的协议ICMPV6。。。而想熟悉任何一个协议,都要花上好多时间来潜下心来,仔细钻研。而要想发现任何一个协议的漏洞,还要对协议的理解更上一层楼。要想成为所有协议的专家,还能发现其中的安全问题,这个可是有点太难了吧?”。张大民问。
“呵呵”,老头点点头,“看样子你对一些主要的网络协议 还是有一点定的了解的,不错,网络协议千变万化,各个用处不同。如果你要往这方面想,那就只好知难而退了”。老头接着说,“但看问题要看本质,不要被表明现象的千变万化所迷惑,不要被各种各样的网络协议的名字而吓倒”不管一个协议要实现什么样的功能,有一些本质的东西是一样的,要理解这些本质的东西,就要首先理解一个报文的生命历程。
“一个报文的生命历程?”,张大民问倒。
“没错”,老头说,“告诉我路由器或者交换机的主要功能是什么?”。
“应该是转发网络流量吧”,张大民说。
“对的”,老头点了一下头,“对于一台路由器或者交换机来说,不管是什么样的网络协议数据报文,对他们来说全世界只有两中不同的报文”。
“是什么?”,张大民问。
“一是一台路由器要转发的报文,一是一台路由器要处理的报文”,老头说,“当一个报文的IP目标地址不是路由器本身时,路由器知道它需要转发这个报文,就查询路由表,找到需要转发出去的网络接口,转发出去,你也可以把这种报文叫作过路报文。当一个报文的旧目标地址是这台路由器本身的IP地址时,路由器知道它需要处理这个数据报文。通常情况下这个数据报文可能是路由协议报文,如OSPF报文或者BGP报文。通常要到达路由器本身的报文都可以被叫作控制报文,如路由协议,ICMP报文等。过路报文的在路由器内部的生命周期很短,路由器只看一下它的目标地址,按照目标地址找到要转发的网络接口,就把它发出去了。而对于控制报文就不一样了。”,老头说,“我给你划一个典型的OSPF报文的处理过程·,老头说着,用他捡破烂用的铁丝夹子在地上划了如下的图。
“你对OSPF还算熟悉吧”,老头问?
“还可以”,张大民说。
“那就好”,者头接着说,“以这个OSPF HELLO的数据报文为例,这个报文进入路由器以后,路由器首先要做的就是解析OSPF报文的数据格式”。“路由器根据什么来解析这个数据格式呢?”,老头又问。
“当然是根据RFC了”,张大民回答。
“正是”,老头说,“路由器根据OSPF RFC中定义的数据报文格式,来解析OSPF报文中带来的数据。在OSPF HELLO的数据报文中,这些数据包涵路由器ID,地区ID,HELLO报文的发布间隔等等。当路由器把这些数据从OSPF HELLO数据报文中解析出来后,就把它们送给处理OSPF HELLO的算法去,这个算法会把这些数据安装到相应的数据结构中。象在OSPF的数据结构中,一定会有一个叫作OSFP邻居的数据结构。其中包涵了路由器ID,地区ID,HELLO报文的发布间隔等等的数据。这个数据结构中的数据将会在以后的OSPF运行过程中被使用”。
“到此为止,一个控制报文就完成了它在路由器内部的生命过程”。老头说。
“嗯,应该是这样的”。张大民点头称是。
“注意到我举的是个OSPF路由协议的例子”,老头说,“但你认为别的协议的处理方法会有不同么?”,老头问倒。
“啊!”,张大民一拍脑袋,“这个处理过程对于所有的网络协议都是一样的,不管是什么样的网络协议,只要它们的报文到达了路由器,路由器都要对它们进行三步处理。
1.对这些报文,按照RFC定义的报文格式进行解析。
2.解析后的数据放到一定的数据结构中
3.这些数据结构将在以后路由协议的运行中被使用
“正是”,老头说。“在这三步处理的过程中,每一步都会因为程序员的疏忽而造成可能的安全漏洞”。
“是啊”,张大民点头称是。
“第一步,也就是对网络协议报文格式的解析过程。想想看,如果我象一台路由器发布了一个IPv4的报文,你应该对IPv4的报文头报熟悉了。我可以在这个报文头的任何部分撒谎。譬如说我可以把版本号设置成0或者255。如果解析网络协议报文格式的程序不能检验这个错误,就会造成运行上的问题。如果我把IPv4报文头中“总报文长度Total Length”设置成0或者65535,而网络协议报文格式的程序不对这个“总报文长度Total Length”是否有效做出判断,而盲目相信,根据其中的内容进行数据处理的话,会发生什么样的情况?”,老头问?
“远程缓冲区溢出!”,张大民兴奋的说。对于一个黑客来说,远程缓冲区溢出是他们最好的朋友了。
此主题相关图片如下:
“没错”,老头点了一下头。“;注意到我可以改变这个IPv4报文头中的任意内容,来看看一个IPv4报文格式解析程序是不是对每一个域都进行了有效性判断。智者千虑必有一失,如果程序员对一千个域都进行了判断,而疏忽了一千零一个,那我们就找到了一台路由器上的远程缓冲区溢出漏洞”。
“WOW!”,张大民惊叹了一声。“而且这个方法是对所有的网络协议都有效的,因为所有的网络协议都是由这些报文组成的,只是报文的格式不同而已。
IPv4,我猜已经被攻击过无数次了,应该比较强壮了,而对一些新的协议,象VOIP的协议,对于异常报文格式的检验是否完全彻底,就不可而知了。而网络协议千千万万,就象您说的,智者千虑必有一失,也就是说,在路由器和交换机这些网络设备上找到远程缓冲区溢出漏洞并不是很难的一件事情。”,张大民觉得一扇大门已经向他打开,其中有无穷的奥妙等着他去探索。
“先别高兴的太早”,老头笑着说。“我们知道这些网络协议的报文解析程序之中一定会有安全漏洞,但你以为找到它们会很容易,那你就错了”。
“为什么”,张大民问。
“因为你不知道一个协议的报文解析程序中是否会有漏洞,你就要用不同的异常报文格式来试试它。而从理论上来说,我们需要试所有可能的报文内容,才能确定一个协议的报文解析程序中已经找不到漏洞了。”。
“嗯”,张大民点头说。“应该是这样的”。
“可是”,老头接着说。“让我们再回过头来看看IPv4的报文格式,告诉我,如果不算IPv4的可选部分,最小的IPv4的报文头长度是多少?”
“算上IP目标地址和源地址,一共是20十字节”,张大民不加思索的说。
“那我要把其中所有可能的值全部穷举一遍,有多少个可能的值”?,老头接着问。
“一十字节有八位,那应该是2的160次方”,张大民说,“WOW,那就是说,我是不可能把所有的IPv4报文头中可能出现的内容都完全过一遍的”,研究过IPv6地址空间的张大民知道,2的160次方是一个天文数字,如果以最快的超级计算机来穷举可能的IPv4报文头的内容,也需要成百上千年的时间。“既然一个小小的IPv4报文头都不可能穷举,更别提其它更复杂的网络协议的报文了”,张大民接着说。
“正是”,老头说,“如果你想用穷举的方法来发现路由器上的远程缓冲区溢出漏洞,还是不太现实的”。
“是”,张大民说,“但是问题是,理论上是这样,但现实中,以IPv4为例,如果我试了一些IPv4版本号0和IPv4版本号255,没找到漏洞,那我差不多就知道如果我再试版本号80和81已经没什么意义了,没有必要把IPv4版本号从0到255都试一遍吧”?张大民间。
“那是因为你对IPv4的概念已经很了解了,对于其它的网络协议来说,如果你不了解,不试一遍,怎么能确定没有漏洞”?,老头说,“虽然我们不能用穷举的方法来找到漏洞,但我们可以用一些方法来尽量逼近穷举方法”,老头又在地上用铁丝夹子画了个图。
“毫无疑问,当你穷举的异常报文数目越多,找到漏洞的可能性就越大。但报文数目和找到漏洞的可能性并不是线性关系。正如你所说的,如果你对一个网络协议比较了解,知道报文中每一部分都是做什么的,那如果你只试一个无效的值,一个最大值(根据一个报文的域的字节数来定)和一个最小值0,基本上就可以覆盖大部分可能会出现的漏洞”。者头说。“但如果有简单的方法可以试更多的报文,也就是说,如果我们能把图中的黑线向右推,推的越远越好,那也当然好”。
“有没有这样简单的方法呢?”,张大民问。
“随机”,老头说。
“随机?什么意思?”,张大民问。
“我们对一个报文中所有的域都随机产生一个值,这样我们就得到了一个随机的报文内容,如果我们产生足够多的随机值,那么我们就等于把这条黑线向右推了又远些·。老头说。
“是这样”,张大民点头称是。“如果你用普通的PC,对于IPv4的报文头产生随机的内容,运行它个一两个月,也没有关系,没准儿还可能找到新的漏洞”
“去看看那些大的网络设备供应商的网络安全漏洞列表”,老头说,“大部份都是这些最简单的,因为没有对报文中内容进行有效性检验,而造成的远程缓冲区溢出漏洞”,老头说。
“嗯”,张大民说,“看样子这是攻击的第一步,那如果一个协议的报文格式解析程序已经完美无缺了,还可以怎么样来攻击呢?”,张大民又问。
“呵呵”,老头笑道,“看样子你还真是很好”,老头说,“可我今天的活还没干完呢,我的去捡捡我的破烂了。”
“我来帮你一起捡吧”,张大民已经对这个老头很是佩服了,觉得人家给自己讲了这么多东西,帮帮忙总是应该的。
“吃饱了撑的!”,老头白了他一眼,“小伙子年纪轻轻,捡什么破烂!”。老头说,“这样吧,明天有船到岸,会卸下很多船上的垃圾,明天你到江边码头找我,如果我有空,再聊。”,老头说完,背起他的大袋子,不等张大民开口,就头也不回的就走了。
张大民没办法,只好会到旅店,躺在床上,想着今天的收获,竟然完全没有了游山玩水的兴致。
低速洪水攻击(Low Rate Flooding Attack)
第二天,张大民早早起来,直奔码头。好说歹说,不管老头同意不同意,一定要帮老头捡破烂。老头峙不过他,也就随张大民去了。张大民跑前跑后,频献殷勤,不到半天时间就把老头一天想做的事都做完了。省下的时间,赶紧再接着和老头讨论。
“看样子异常报文对网络协议的威胁还是很大的”,张大民说,“从而也就造成了对网络设备的威胁。看样子如果一个网络协议多做一些对异常格式报文的检测,,应该就没问题了”。
“呵呵”,老头看着今天张大民帮着捡来的满满一大袋子易拉罐,脸上露出满足的笑容。“不要以为能防备异常报文就高枕无忧了,一个格式上完全正常的报文也可以对网络设备造成和大威胁。”
“怎么会呢?”,张大民不解的问?
“还是给你举个例子吧”,老头说,“路由协议OSPF你是了解一些的了。每一个路由器上的OSPF协议都要和被的路由器上的OSPF协议建立邻居关系,对吧。”
“是”,张大民说,“然后路由器之间才能交换彼此的路由”。
“哪路由器是根据什么来建立OSPF的邻居关系呢?”,老头问。
“是根据接收到的OSPF的HELLO报文,里面有对面邻居的ID”,张大民说。
“正是”,老头点了一下头。“每接收到这样的一个HELLO报文,路由器就要看这个HELLO报文中邻居ID是否在自己的邻居数据库中,如果不在,就要把这个邻居ID也放到自己的邻居数据库中。”老头说,“这样也就造成了一个漏洞,我可以向一台运行OSPF的路由器发布很多OSPF HELLO报文,每个报文中的邻居ID都是随机的,看一看这台路由器到底能允许接收多少OSPF的邻居,如果程序员在实现OSPF的过程中没有注意这个限制条件,但邻居越来越多达到程序员当初没有考虑到的数目时,OSPF的运行就有可能会出问题。”。
“为什么会出问题呢”,张大民问。
“还是给你画个图吧”,老头说。
此主题相关图片如下:
“网络协议种类繁多,功能各有不同。但从一个程序实现的角度来看,几乎所有的网络协议程序都可以按照上面的图来分类。首先是报文格式解析部分,要把报文中的数据解析出来。然后就会把这些数据送给网络协议的算法。OSPF有OSPF的算法,BGP有BGP的算法,等等。当实现这些算法的时候,写过网络协议程序的人都知道,算法是由数据结构来驱动的。所有的从报文解析出来的数据都要首先存储在数据结构中,然后在网络运行的过程中,根据各种不同的情况,和数据结构中的数据,来实现各个不同网络协议,也就是RFC中定义的算法。”,老头说。“以OSPF为例,如果要实现OSPF网络协议的算法,就要首先建立一个OSPF邻居的数据结构。然后要为每一个OSPF的邻居建立一个OSPF邻居数据结构的实体。写过程序的人也都知道,建立一个数据结构的实体的过程也是一个分配内存的过程。
如果需要建立的实体越多,那么要分配的内存也越多。占用系统的资源也越多。象我们前面说的向一台路由器发布邻居ID随机的OSPF邻居报文,可以在短时间内消耗很多系统的内存,如果程序员当初没有考虑到这种情况,很有可能造成非法的内存操作,而导致OSPF完全不能工作。”
“WOW”,张大民感叹说,“这也是挺厉害的一种攻击方法。而且这种攻击方法也不依靠协议的特殊功能。任何协议都有数据结构,如果我们能在远程向这些数据结构中插入一些无用的垃圾数据,或者可以远程操纵这些数据结构的运行和分配,那可以说是非常酷的一种攻击方法”。
“没错”,老头说,“而且注意到我并不需要向一台路由器发布大量的报文,象现在这些DDOS攻击,动不动就要上G bps的网络流量。我只需要向一台路由器发布很少的报文,网络流量可能也就是几Kbps,就有可能把一台性能很高的路由器弄下线,可谓是四两搏千斤”。
“嗯”,张大民点头称是。“不管一台路由器的性能多么强大,是思科的GSR也好,还是JUNIPER的M系列,只要它们的网络协议实现上有这样的漏洞,发过去几百个类似的报文就有可能把它们弄下线”。
“是”,老头说,“而且对一个网络协议的实现程序来来说,用到的数据结构就那么几个,所以试着攻击一下它们应该不很费时间。比用异常报文攻击的方法要省时多了”。
逻辑运行攻击
张大民对今天了解到的东西有无限感慨。网络安全真的是无处不在,博大精深。不论是在不同操作系统的主机上,还是在组成互联网的这些网络设备上,对任何一方面的网络安全作出有成效的研究都有可能要花费一两年的时间。而这个老头对自己讲的这些,为自己在网络协议安全性上的知识有了一个质的飞跃,节省了自己很多的时间和很多可能要走的技术上的弯路。想到这里,张大民对老头充满了感激之情。一高兴,也不管哪个垃圾箱多脏多远,虽然有点后悔自己一天到晚弄电脑,没有好好锻炼一下身体,捡破烂也有点力不从心,还是爬上爬下,为老头多捡了好多值钱的破烂。晚上还要坚持请老头吃顿饭。老头争不过他,老少二人来到了镇边的一个小酒馆,要了些江南小菜。边吃边聊。
“能对网络协议的数据结构进行远程的攻击当然好,但我需要对协议有比较深刻的理解,还要猜一下一个协议到底要使用什么样的数据结构,可能一开始操作起来还有些难度。而相对来说,使用异常报文的攻击就相对来说容易一些了”。张大民说。
“你以为异常报文的攻击就那么容易么?”,老头问。
“是啊,我只要找到报文的格式,然后修改一下就行了”。张大民说。
“对于没有状态的协议来说,当然是这样的。例如IP,UDP等”,老头说,“但对于有状态的协议来说,可就不是这么简单了。”
“什么是有状态的协议?”,张大民问。
“例如TCP,你应该知道TCP的哪个比较复杂的状态转换图吧?”,老头问。
“当然”,张大民说,“在学校里面上计算机网络时就知道了”。
“那就好”,老头说着,在地上又划了个图。
此主题相关图片如下:
对没有状态的网络协议的异常报文攻击是比较简单的。你构建好了异常报文,只管发就是了。但对于有状态的网络协议来说,如果它当前不在某一个状态,而你给它发布一个报文,它根本就不会处理这个报文,也就根本不会达到攻击的效果。你需要先送几个有效的报文,驱动网络协议到达某个状态,然后再送一个在这个状态内被网络协议接收的异常报文,才能达到攻击的效果”,老头说,“每一个协议的有限状态机都是不要一样的,BGP有BGP自己的状态转换,TCP有TCP自己的状态转换。所以如果你想攻击有状态的协议,要对协议如何运行非常了解才行”。
“啊”,张大民点头,“看样子还是很难”。
“当然”,老头说,“如果容易的话,就不是高层次黑客追求的目标了”。老头笑这说,“但异常报文和低速洪水攻击还不是攻击网络协议中最麻烦的方法”。
“啊?”,张大民道,还有什么别的,比这两个还麻烦?”。张大民问。
“逻辑运行攻击”,老头说。
“什么是逻辑运行攻击?”,张大民问。
“就是对网络协议算法的攻击”,老头说,“也就是说,能利用网络协议实现中逻辑算法的漏洞,找到逻辑算法中的弱点。能达到这一个阶段,需要对一个协议有很深的理解,不仅包括数据报文格式,还有协议具体的运行过程和可能出现的各种异常情况。”
“呕”,张大民一脸不解的问,“哪要怎么看?”。
“给你举个例子”,老头说。“知道前一阵TCP窗口大小的重至攻吧。”老头问。“啊,知道,就是一个美国的小子发现,他发现了TCP算法中一个问题,可以用和少的攻击报文来切断一个TCP的联系”,张大民说。
“正是”,这是比较高级的协议攻击方法了,为此TCP的RFC还要修改一下”,老头说,“当然,如果你能发现这样的一个漏洞,那么你也可以出名了”。
“那有没有系统的方法可以发现一个网络协议中的逻辑运行漏洞呢?”,张大民问。
“呵呵,你还真的是很好问”,老头笑道。“在这个问题上是没有捷径可走的,唯有专下心来,刻苦钻研一个网络协议,成为这个协议的专家,才能在这上面有所作为。但一旦你达到了这个层次,恐怕网络安全界不知道你的人就没几个了。”
“是这样”,张大民感慨的说。心想:但是网络协议这一块,就有这么多的难度,每一个层次都有不同的方法和窍门。关键是不要被问题的表明所吓倒,要看清问题的本质,找到问题的共同点,摸索出发现漏洞的方法。“那按照攻击的难度来说,对于网络协议的攻击方法应该按照这样来排序喽”,张大民说。“
量简单的是无状态的异常报文攻击。
然后是有状态的异常报文攻击。
然后是低速洪水攻击来远程攻击数据结构
最难的就是对网络协议逻辑和算法的攻击。
“是”,老头赞许的看了张大民一眼,“你的悟性还是不错的。”。
结尾
“大爷,我一直有一个问题想问你,可又不太敢”,张大民鼓足勇气,终于想问一下老头为什么会在这里以捡破烂为生?
老头看了他一眼,笑道,“小兄弟,我知道你一定一直在猜测我的来历,为什么会在这里做这个来跑生活”,老头抬起头来,看看天边渐红的火烧云,太阳快下山了,隐隐有汽笛声从远处传来,浑浊的江水泛着白沫,一声一声的敲打的江边的石头,“想当年,我也有风光的时候”,老头拿着铁丝夹子,在沙地上胡乱划着,面色变得沉重起来,·我只想告诉你一点,做人一定要有正气,不管你有多大的权力,能够掌握多少资源,可以做多大的破坏,造成多大的影响。切不可因为一时的成功而冲昏了头脑,也不能因为自己的本事而心生邪念。不要因为黑客这个名字就以为自己可以为所欲为,作些损人利己的事情。你可以成功一时,但绝没有可能会逍遥一世。黑客存在的意义就是因为黑客的正气。记住,超强的技术加上做人的正气,才能使你在网络安全领域永远立于不败之地。”。
“是”,张大民点头。“我记住了”,心中暗想:这位老人家的身世背后,不知道隐藏了多少惊心动魄的网络攻防故事。和在网络安全界何等的大起大落。“老人家,我的假期已经到了,我得回去了,很感激你能给我讲解这么多网络协议方面的知识,在我走之前,我能帮你什么吗?”,张大民问。
“哈哈”,老头大笑一声,“小兄弟,切记,技术重要,做人更重要,生活比技术重要,我家破人亡,平了头每日捡破烂,却自有真人生在里面,见识到了,即是幸,即是福。衣食是本,自有人类,就是每日在忙这个。可囿在其中,终于还不太像人。”,说罢,站起身来,顶着夕阳,在张大民茫然的眼光中,头也不回的走了。
张大民在码头矗立良久,想着这几天领悟到的东西,又想了老头最后说的话,虽然不太明白,但也有所领悟。最后居然觉得,对老头最后这句话的领悟,居然是这次奇遇的最大收获。
留言评论(旧系统):