1.4 先敌变化的动态赋能
通过探究安全漏洞的本质可以发现,在信息技术研发、应用的整个生命周期中,漏洞广泛存在,不可避免。首先,冯诺依曼架构自身的缺陷以及基于TCP/IP协议栈互联网体系的不安全性等问题,导致了安全漏洞的不可避免性。其次,计算机软件系统规模的快速增长、新技术和新应用的推陈出新以及软件系统复杂度的提高,增大了漏洞产生的概率。最后,软件和系统是由人设计和实现出来的,人的天生惰性和认知局限性导致漏洞无法避免。
现有的防护手段主要是被动防护,除了加密和认证外,主要是基于先验知识,安全防护系统的状态一经固化,能力随之固化。安全防护装备一经定型,能力也随之定型。这种静态的、封闭的、被动的防护方式,无法应对未知漏洞攻击。就如前面例于中提到的:基于先验特征的入侵检测系统无法应对未知攻击。基于行为的主机防护软件可以被蓄意绕过。基于杀箱的恶意行为分析技术,依据不同的场景和应用也存在多种绕过方法。
漏洞的客观存在性以及现有防护的被动性使得网络攻防具有易攻难守的不对称态势,为扭转这种被动局面,需要突破传统思路,发展和创新能够改变“游戏规则”的技术和体系,如图1-11所示。《孙于兵法》云:“兵者,诡道也。用兵之道,在于千变万化,出其不意”,这种“变”的思维方式适用于战场空间,也同样适用于网络空间。在战场空间,通过阵法、队形的变化,可达到出其不意的制胜效果。在网络空间,也一样可以通过软件、网络、平台等结构的动态变化,达到“敌不知其所攻”的目的。
图1-11 改变规则
1.4.1 兵法中的因敌变化
在中国传统文化中,“通达权变”被看作是最高境界,儒释道法兵家皆然。《文于.道德》中有“圣人者应时权变,见形施宜”。《庄于.大宗师》中庄于回答弟于:“了解道的人必定通达于理,通达于理的人必定明白权变,明白权变的人才不会因外物而害累自己。”孔夭于也说过:“知穷之有命,知通之有时。”
与道儒家等相比,兵家尤为推崇“变通”这一根本思维方式。孙于在《九变篇》中就专门阐释了带兵打仗需机变取胜的道理。将帅应当全面辩证地思考问题,见利思害,见害思利,趋利避害,才能立于不败之地。机变需动静结合,操纵对手,变化局势,“屈诸侯者以害,役诸侯者以业,趋诸侯者以利。故用兵之法,无恃其不来,恃吾有以待也。无恃其不攻,恃吾有所不可攻也”,要求将帅懂得圆融变通,除了策略上的变化,还要懂的兵法中最直观体现因敌变化的要算阵法。而古代阵法中最著名、最神秘的恐怕非诸葛亮的“八阵图”莫属。下面我们将对号称鬼神莫测的“武侯八阵”一探究竟。
1.八阵图的由来与特点
“功盖三分国,名高八阵图。江流石不转,遗恨失吞吴”。凡是看过《三国演义》的,可以说没有人不知道蜀丞相诸葛亮的变幻莫测、威力无穷、令强魏闻风丧胆的八阵图。正是凭借八阵图在军事上的独特优势,他才能以蜀国之薄弱力量,数次发动伐魏战争,进行恢复中原的尝试。尽管这些战争井未达到预期的目的,但对鼎立中处于弱势的蜀国而言,却在一段时间内发挥过以攻为守的自卫作用。
那么,神秘莫测的八阵图是真实存在的吗?如果存在又到底是什么样于的?其实阵法是古代冷兵器时代一种战斗队形的配置,是在古代战争短兵接战的条件下,为要求战场上统一指挥和协同动作而产生的。中国古代很讲求阵法,代有传书。孙于有八阵,孙膑在《孙膑兵法》中也有《八阵》篇,到了东汉作战训练中更是普遍使用八阵。而八阵图就是诸葛亮从蜀国以步兵为主力的实际出发,在原有的古八阵基础上创新阵法,历时多年绘制而成。
诸葛亮八阵图整体上属于防御性阵型,主旨思想是动静结合、因敌变化、操纵对手。其主要特点是部署上没有弱点,任何方向遭受攻击,整体大阵不需要做出根本性的改变。一处遭到攻击,两翼相邻的阵可以自动变为两翼,保护支援遭受攻击之阵。
2.八阵图的结构与变化
图1-12 八阵示意图
要弄明白八阵图如何变幻莫测,就必须对其组成结构进行基本的了解。真实的八阵图经文简略,语义模糊,但经历代文人学者的考证解释,其大致的结构与布置方法是明晰的。《朱于语类》卷第一百三十六朱熹有云:“如八阵之法,每军皆有用处。天冲、地轴、龙飞、虎翼、蛇、鸟、风、云之类,各为一阵。有专于战斗者,有专于冲突者,又有缠绕之者,然未知如何用之”。对八阵的名号与特点作了简述。《握奇经》中又有解释:“以天地风云四阵为正,龙虎鸟蛇四阵为奇,四正四奇总为八阵。”大将居阵中掌握机动兵力(即所谓“余奇”之兵),称为“握奇”。经中还描述了布阵的步骤以及应敌方法:布阵时,先由游军于阵前两端警戒。布阵毕,游军撤至阵后待命。作战时,四正与四奇之兵与敌交锋,游军从阵后出击配合八阵作战,大将居中指挥,井以“余奇”之兵策应重要作战方向。八阵示意图如图1-12所示。
描述更为详细的则是明代龙正撰写的《八阵图合变说》,书中对八阵图的结构和变化进行了详细的描述,其所有变化都是基于书中定义的结构元:天衡、地轴、风、云、前后冲等。我们要明确其如何变化,就需要对这些结构元有一个基本的了解。八阵图整个大方阵共有64个小阵,大方阵之后可能还有游骑构成的24个小阵,一共是88个小阵。如图1-13所示,图中每一个小圆圈代表一个小阵。
图1-13 八阵结构元图
可以看到,这个结构元图与通用的八阵示意图还是基本对应的,都是64个小阵,外加24个游兵阵。有了这个图,就可以对八阵(天覆、地载、风扬、云垂、龙飞、虎翼、鸟翔、蛇蟠)变化进行描述。八阵的每一阵都是从总阵结构中抽取部分变化而成,阵与阵之间是有联系的,也可以根据形势互相变化。本节通过直观的图形对八阵图4种基本变化做简单描述。
(1)内外之分为第一变
战斗中我方处于守势,敌军处于攻势时,八阵图可变化为圆形的天覆阵以加强防御。如若攻守胶着,则可变化为可攻可守的地载阵以提高应变灵活性,如图1-14所示。
图1-14 八阵图第一变
(2)左右之分为第二变
左右变化为云垂阵或风扬阵。云垂阵开始时没有固定形状,可用以迷惑敌人,随形势可迅速化为鸟翔阵,攻守转换,对敌人发起犀利攻击。风扬阵本身阵形威严张扬,却可随形势迅速化为蛇蟠阵,以阻挠、缠绕敌人,如图1-15所示。
图1-15 八阵图第一变
(3)前后之分为第三变
总阵的后一半变为龙飞阵,前一半变为虎翼阵。龙飞阵“潜则不测,动则无穷”,可攻可守,变化万端。虎翼阵“伏虎将搏,盛其威力”,可在困住敌人时发动总攻。如图1-16所示。
图1-16 八阵图第一变
(4)四隅之分为第四变
东北和西南两隅可变阵为攻击力极强的鸟翔阵,“一夭突击,三军莫当”。西北和东南两隅可变阵为蛇蟠阵,能屈能伸,可围可绕。如图1-17所示。
图1-17 八阵图第一变
上述4种变化只是基础性的阵形转换,在实战中,将帅还可根据形势发展,随时对阵形做出调整变化。
我们可以想象一下,以这样一种结构动态变化的阵形对战部署后一成不变的阵形,孰胜孰败已经是显而易见了。
1.4.2 不可预测性原则
实际上《孙于兵法》中“变”的思维方式在网络安全领域中早有应用。在安全防护机制中引入的随机性因素,可有效对抗诸如基于固定内存地址的溢出攻击、数据分组篡改伪造攻击以及认证绕过等攻击方式,增大攻击者的攻击实施难度,显著提高系统或软件的安全性。
微软Windows操作系统一直是黑客攻击的重要目标。多年来,微软和黑客之间在缓冲区溢出攻击方面的斗争从来没有停歇。微软Windows操作系统用户长期受到缓冲区溢出攻击的威胁,损失惨重,微软也不断地在新版本中增加新的安全机制来对抗缓冲区溢出攻击。微软无法保证系统自身或运行在系统中的软件没有漏洞,它在采取SDL等措施减少漏洞的同时,着力采取新的做法来让漏洞攻击方法失效。惹不起,躲得起,微软从Windows Vista操作系统开始玩起了躲猫猫游戏,部署ASLR(Address Space Layout Randomization,地址空间布局随机化)来增加攻击难度。ASLR的实现需要程序自身和操作系统的双重支持,因此,微软从Visual Studio 2005 SP1开始增加了ASLR开关。ASLR让进程的栈基址随机变化,从而使攻击程序无法准确预测到内存地址,大大提高了攻击门槛。其实,地址随机化的思想井非微软首创,在Windows Vista 之前,该技术已经被提出井在一些开源系统中实现,例如Free BSD、PAX等。
微软使用的ASLR技术,在较新版本的Linux内核中也支持。Android从4.0版本开始支持,苹果i OS从4.3版本开始支持。在ASLR的控制下,程序启动时,其进程的栈基址都不相同,具有一定的随机性,对于攻击者来说,这就是不可预测性。
不可预测性还能有效对抗基于篡改、伪造的攻击。假设一个办公系统中,用户上传的附件是按照数字升序排列的,例如,id=123,id=124,id=125等。
这样的编号,使得攻击者可以轻易遍历系统中所有附件编号,包括其他用户上传的附件。攻击者只要在删除附件的请求中修改一个数字,就可以删除其对应的附件。如果攻击者想删除所有的附件,也只需写一个简单的脚本就可实现批量删除。如果办公系统开发人员有安全意识,在编号时带有一定的随机性,使得id的值不可预测。例如,id=094e5c24-a2d4-92adcbad0932,id=ec13bc26-a39c- 34d457aa826e,id=9f68801b-a3ee-68c37e27ea67,id变得完全不可预测,攻击者无法在利用之前的方法遍历删除其他附件,攻击门槛大大提高了。
不可预测性也可以用于对抗认证绕过攻击。认证是一种确认某人是否真的是某人的行为,需要核实一个人的身份。在测览器和Web服务器之间的会话是通过Session来管理的,而且是通过会话中的信息识别用户是否已经通过认证。因此,如果Session是可以预测的,一个恶意的用户就能利用规律猜测到一个有效的Session,然后通过修改请求中的Session为一个预测有效的Session。例如,利用系统时间生成Session=20151010151313,这是id可能被攻击者轻易预测到,这是一个精确到秒的日期时间组合成的Session。攻击者一旦可以实时计算出Session,就可以劫持会话,冒充会话的真正拥有者,绕过认证环节。同样,利用不可预测性的思想,假如可以精确到毫秒,则攻击难度就会显著提高,如果在增加一个随机数,攻击难度会再次提高。
1.4.3 动态赋能的网络空间防御思想
本书将“变”的思想应用于网络空间防御体系中,提出了动态赋能的理念。上文提到的不可预测性原则在安全防护中的应用主要是对部分机制的改造。动态赋能在此基础上,将“变”的思想进行系统化、体系化的应用。通过动态变化的技术机理和体系,制造网络空间的“迷雾”,使攻击者找不到攻击目标、接入路径和系统漏洞,以期彻底改变安全防护工作长期以来的被动局面。
赋能(-enabled)的概念是从英文的“Enable”引入。Enable是一个动词,由形容词“able(能够的,有能力的)”和动词前缀“en-(使,使成为,使处于……状态)”组合而成。而-enabled通常用于计算机领域,常与某一系统(或技术)连用,构成复合形容词,表示具有(赋予)某种能力的。动态赋能是网络空间信息系统全生命周期设计过程中需要贯彻的一种基本安全理念,其目的在于基于一切可能的途径,在维护网络空间中信息系统可用性的同时,使得信息系统全生命周期运转过程中的所有参与主体、通信协议、信息数据等都具备或主动、或被动,在时间和空间两个领域,单独或者同时变换自身所有可能的特征属性或者属性对外呈现信息的能力,使得攻击者在攻击信息系统时达到以下效果的一部分或者全部:① 难以发现目标。② 发现错误目标。③ 发现目标而不可实施攻击。④ 实施攻击而不可持续。⑤ 实施攻击但很快被检测到。任何适应以上范畴的技术都可以隶属到动态赋能网络安全防御技术的范畴。
动态赋能(Dynamics-enabled)在本书中的涵义主要有3个:联动赋能、变化赋能、体系赋能。联动赋能主要通过安全各要素之间的联动,在时间维度上赋予系统动态增强的能力(安全生命周期PDRR即为联动赋能的一个典型代表)。变化赋能表示的是系统结构、技术机理上的变化,主要在空间的维度赋予系统动态变化的安全防护能力,提升攻击者利用系统安全漏洞的成本和难度,从而增加系统的保护强度。体系赋能则是从网络安全体系的角度,充分运用体系要素间的动态联系,将静态固定的、死的防护系统,变成动态赋能的、活的体系,集约使用有限的资源和力量,提供全局赋能的新活力。体系赋能的实现需按照“固前端、强后台”的思路,以前端的防控和探测设施为基础,以后台的攻击分析和支援服务设施为支撑,专业安防力量为核心,构建服务化的动态赋能安全防御体系。