网络安全的保卫者们要随时做好准备,同入侵者在每一台服务器甚至每一个进程里展开“巷战”,并将他们彻底消灭。
——题记
兵败莫斯科城下后,德国人把眼光放在了苏联的中南部地区。
作为连接中南部地区的重要枢纽,斯大林格勒一旦被德军控制,苏联不仅仅将损失大量的作战部队,还将损失大量的粮食、石油、矿产、军工厂以及国际援助,从而失去对德作战的战争潜力。
说斯大林格勒是最后一道防线绝不为过。
惨烈的斯大林格勒保卫战
1942年7月17日,德军携优势地空火力逼近斯大林格勒,苏德双方在斯大林格勒接近地展开了激烈的交战,二战历史上规模最大、伤亡最惨烈的战役——斯大林格勒保卫战正式打响。
为了增强守军斗志,斯大林发布了第227号命令,严厉要求苏联红军部队“绝对不许后退一步!”
遗憾的是,在会战初期,苏联方面似乎并没做好准备。德军迅速突破了其外围防线,攻入斯大林格勒城内。
惨烈的巷战开始了。
在占领市中心后,德军的推进只能用米来衡量,德第6集团军的一位叫汉斯·德尔的军官在《进军斯大林格勒》一书中写到:“敌我双方为争夺每一座房屋、车间、水塔、铁路路基,甚至为争夺一堵墙、一个地下室和每一堆瓦砾都展开了激烈的战斗。”
1943年2月2日,历时近200天的斯大林格勒战役以德军的失败而告终。自此轴心国集团元气大伤,再也无力在欧洲东线战场发动大规模攻势,并逐渐走向灭亡。
据统计,在会战最激烈的阶段,双方投入兵力超过二百万,坦克两千辆,飞机两千三百多架,火炮两万五千门。
绝不可迷信边界防御
让人没想到的是,在二战结束后的几十年间,原本是美国军方为了计算这些武器弹道轨迹而定制的计算机,取得飞速发展,使其成为了互联网的重要终端载体,网络空间悄然诞生。而在最近的十年里,云计算、移动互联网和物联网技术的应用,让网络空间的外延不断扩大。
网络空间的利益纷争,让同样烈度的战役也时常在网络空间上演。
斯大林格勒保卫战给人们的第一条启示就是不能过度迷信边界防御。
边界防御重要吗?毫无疑问,它是网络安全防御的第一道防线。否则是德国人绝不会在苏德战争初期的几个月内,闪击到莫斯科城下;在希特勒下达“蓝色行动”的作战命令后,德军也不至于很快就打穿了斯大林格勒的外围防线。
但过度依赖是有问题的。
面对攻守及其不平衡的局面,攻击者利用强大的情报搜集能力,找出目标防守的薄弱点,从而轻而易举的攻破目标的外围防线。在内网中如入无人之境,直面网络空间里的“斯大林格勒”——服务器,存储重要数据、核心代码或者运行着核心应用的地方。
从去年的攻防演习来看,攻击方也不磨叽,上来就祭出杀手锏武器——0day漏洞。这就如同攻击方拿到了目标的“布防图”,任你边界布防再严密,他们也能一击命中薄弱环节。
果不其然,演习的第一天,就有一众目标被0day攻击打穿。
物理断网听起来够安全了吧。2017年5月12日,永恒之蓝勒索病毒以迅雷不及掩耳之势穿透网络安全边界,安全工程师们不得不在每一台中招的机器上,与勒索病毒展开“贴身肉搏”。
值得注意的是,隔离网的中招情况,要比普通家用电脑严重的多。
在付出数百万台机器中招和不计其数的经济损失后,安全工程师们才暂时遏制住了永恒之蓝传播的势头。
做好打“巷战”的准备
既然不能迷信边界防御,防守方就要时刻做好和入侵者“打巷战”的准备,逐台服务器展开争夺。
做好准备首先就是要知己,这也是斯大林格勒战役中的第二点启示。
事实上,在战役之初,朱可夫元帅并不够了解自己的部队,以至于抵达前线后才发现他们处于“缺粮少弹”的状态。
就网络安全防御而言,CIO或者CISO们也可能没有掌握自己单位服务器情况的全貌,例如有多少台服务器,各台服务器上都装什么版本的操作系统和应用软件,存储了哪些数据,更不要说软硬件配置是否正确、都有哪些漏洞、漏洞是否已经安装补丁了。
在这种情况下,防守方很难组织起有效的抵抗。攻击者在突破网络边界后,就可以任选一台防守薄弱的服务器下手,并以此为据点,向其他服务器横向渗透。
那把自己服务器的这点事情梳理清楚容易吗?说难那肯定难。
在云计算出现以前,大家多用的是物理服务器,简而言之就是一台性能极强的电脑。那么大一台机器摆在那里,想搞不清楚都难。现在不一样了,在云计算模式下,一台物理机可以生成很多台虚拟服务器或者云服务器,创建他们只需要用户在控制台点几下,前后也就不过一分钟时间,这让管理难度加大了许多。
并且,云服务器看不见也摸不着,这让管理员十分头疼,经常会发现莫名其妙多了几台服务器,也不知道是谁创建的,上面跑着什么应用,用的还是123456这种弱口令。
不过,这件事情说容易也容易,和大象放进冰箱一样总共也就三步:放一双眼睛——盯着他们——记下来。
那么问题来了,这双眼睛从何而来?简单,交给研发就好了。一行行代码背后噼里啪啦的键盘声,工程师们却掏出了一把锁,叫做云锁,全称是奇安信云锁服务器安全管理系统。
顾名思义,这就是给服务器上锁的一款产品,看就要把服务器给看得清清楚楚。
云锁能深度洞察,包括都有哪些服务器,登录口令是不是弱口令,上面装了什么操作系统、跑着什么应用,开放了哪些端口,都有什么样的漏洞,这些漏洞是不是都有补丁,补丁是不是都安装了等等这些情况,凡是能被黑客利用的弱点,云锁都要看到,并把他们记在“小本本”上,不安全的地方就给出整改建议,没打补丁的地方给打上补丁。
这个过程,业界习惯叫做“资配漏补”,也就是“资产、配置、漏洞和补丁。”
但服务器并不是静止不动的,上面有有网络在连接、有应用在运行、还有数据在传输,因此在看的基础上,云锁还能把看到的行为学习下来,也记在一个“小本本”上,形成用户行为画像,这个“小本本”就是大家口中的白名单。
凡是不在白名单上的,都可以认为是可疑的。
这有什么用呢?一台服务器上面运行的程序、经常访问的IP地址基本上是固定的,就那么几类,如果突然运行了一个从来没见过的应用,或者访问了从来没访问的IP地址,那就可能出问题了,就需要后续进行研判是否中招。
比如你知道你的一个朋友从来不喝酒,但有一天晚上他喝的酩酊大醉,那他没准就遇到了什么不如意的事情。
战斗在每一间房屋、每一片瓦
斯大林格勒战役还有第三个启示。
受到极寒天气影响,德国人在进攻莫斯科的时候遇到了严重的补给困难,机械化部队难以发挥作用,士气也非常低落。尽管苏联军队在莫斯科城下挫败了德国人的进攻,但依然没有扭转敌强我弱的局面。
因此,面对德国人向斯大林格勒发起的夏季攻势,想要复制莫斯科的胜利,把德军拦在城下是非常困难的,打巷战几乎无法避免。
巷战是惨烈的,但防守方在面对优势敌军时,很多时候却不得不如此。
就像不能迷信边界防御一样,做好了战前准备,就以为服务器安全可以高枕无忧。要能够在服务器内部的每一个角落,随时同攻击行为展开“巷战”。尤其是在攻防演习这种“战时状态”,面对攻击方高频度的攻击行为和变幻莫测的攻击技巧,单纯的“资配漏补”很难奏效,必须要利用技术手段与攻击方做持续对抗。
巷战有一个明显的特点:未知性,你不知道敌军会从哪一片墙后面突然跑出来给你一枪。想要占据主动权,实时掌握敌军视野,并适时发起局部进攻非常重要。喜欢玩游戏的人都知道,不管是FPS、RPG还是MOBA类游戏,拥有“全图视野”是多么爽。
云锁另外一个强大的功能,就是通过布满服务器内部的“眼睛”,帮防守方开全图视野。业界习惯把这双“眼睛”叫做“探针”。
云锁的探针有四种。
第一种是IN-APP WAF探针。它的工作原理和普通WAF类似,部署在Web应用上,监控所有进入Web应用的流量。一旦发现“坏人”混迹在正常流量中,即可发出告警。它的优势在于,云锁对于加密流量(可以理解为伪装后的坏人)检测能力更强。
第二种RASP探针。RASP中文全称是应用运行时自我保护,其目的在于让应用程序拥有自我免疫和防御的能力。它主要的主要能力是hook网络流量,细粒度的监控应用脚本的行为及函数调用上下文信息(程序员都懂的),及时发现恶意代码和漏洞利用行为。
说点大白话。假如云锁发现躲在墙后的敌人举枪向你瞄准,他就会通知你危险并及时躲避;假如云锁发现敌方通信兵和长官通话,它会通知你敌方通信兵可能正在汇报你方部署情况,要及时干掉他。也就是云锁从敌方肢体语言(在IT环境中就是机器语言)中发现危险信号,为你下一步反制行动提供参考。
第三种是内核加固探针。内核到底是什么?简单来说就是底层环境,也就是操作系统、内存这些东西。攻击者在服务器内每发起一次攻击行为,就会在内核上留下一些痕迹(当然攻击者也可以清除痕迹),就像敌人每走一步就会在地上留下脚印,每开一枪就会留下弹壳一样。云锁的内核加固探针就是在系统层,通过观察这些“痕迹”来进行黑客行为画像,监控攻击者的攻击行为。
同时,这个内核加固探针还能起到为内核加固的作用,增强操作系统自身对抗黑客攻击和恶意代码的能力,限制漏洞利用后的下一步行为。不然攻击者不知道从什么地方“打个地道”跑到我后面,岂不是满盘皆输?
第四种是Webshell动态检测探针。针对Web服务器有一种非常常见的攻击类型叫Webshell攻击,它是一种后门文件,攻击者将其上传到服务器后,就通过运行它获取控制服务器的权限。但通常而言,Webshell文件并不会在自己脑门上写着坏人俩字,相反还会进行各种伪装、加密,防守者可能直到被拿站了才恍然大悟。
那怎么办?还记得《亮剑》里老李让国民党暂七师师长常乃超跑那五公里吗?当时常乃超被俘后混在普通俘虏中,最后因为跑不动五公里露馅了。没有那五公里,就没有后来南京军事学院的常教员。没有常教员的润色,老李的毕业论文可能也没有那么气壮山河。
话说回来。云锁也会进行全盘扫描,把包括Webshell在内的脚本文件扔到沙箱里“跑五公里”,一旦发现非法行为就标记出来,并把检测结果同步给WAF和RASP探针,下次再发现一样的脚本文件,直接干掉就行了。
打赢服务器保卫战
十几年前,大家保护服务器的主要方法还是在上面装个杀毒软件,杀不杀得了病毒全靠天意。
然而在过去的十数年间,服务器的形态发生了翻天覆地的变化,作为机构承载关键业务和敏感数据的核心平台,任何一个小小的缺陷都会被攻击者抓住并无限放大。无论你的补丁打的再怎么好、口令设置的再怎么复杂,面对0day、内存马、社工渗透这种形态的攻击时,都显得力不从心。
当然,发现攻击从来不是一件容易的事情。有统计数据显示,针对服务器的攻击平均在99天内不会被发现,超过53%的受害者是在外部通知后才知道被攻击的。与攻击驻留时间相对应的是防御发现时间,防守者平均需要170天才能检测到一个高级威胁。
好在,云锁并不是一个人作战。在服务器的外围,奇安信天眼能够在流量侧,清晰洞察“敌军的动向”。
持续的检测与对抗,才能打赢网络空间里的“斯大林格勒保卫战”。