攻防|“兵器譜”之二:它在網絡空間裏,堅守着最後一道防線
釋出日期:2021-03-28 作者:奇安信
網絡安全的保衞者們要隨時做好準備,同入侵者在每一台服務器甚至每一個進程裏展開“巷戰”,並將他們徹底消滅。——題記
兵敗莫斯科城下後,德國人把眼光放在了蘇聯的中南部地區。
作為連接中南部地區的重要樞紐,斯大林格勒一旦被德軍控制,蘇聯不僅僅將損失大量的作戰部隊,還將損失大量的糧食、石油、礦產、軍工廠以及國際援助,從而失去對德作戰的戰爭潛力。
説斯大林格勒是最後一道防線絕不為過。
慘烈的斯大林格勒保衞戰
1942年7月17日,德軍攜優勢地空火力逼近斯大林格勒,蘇德雙方在斯大林格勒接近地展開了激烈的交戰,二戰歷史上規模最大、傷亡最慘烈的戰役——斯大林格勒保衞戰正式打響。
為了增強守軍鬥志,斯大林發佈了第227號命令,嚴厲要求蘇聯紅軍部隊“絕對不許後退一步!”
遺憾的是,在會戰初期,蘇聯方面似乎並沒做好準備。德軍迅速突破了其外圍防線,攻入斯大林格勒城內。
慘烈的巷戰開始了。
在佔領市中心後,德軍的推進只能用米來衡量,德第6集團軍的一位叫漢斯·德爾的軍官在《進軍斯大林格勒》一書中寫到:“敵我雙方為爭奪每一座房屋、車間、水塔、鐵路路基,甚至為爭奪一堵牆、一個地下室和每一堆瓦礫都展開了激烈的戰鬥。”
1943年2月2日,歷時近200天的斯大林格勒戰役以德軍的失敗而告終。自此軸心國集團元氣大傷,再也無力在歐洲東線戰場發動大規模攻勢,並逐漸走向滅亡。
據統計,在會戰最激烈的階段,雙方投入兵力超過二百萬,坦克兩千輛,飛機兩千三百多架,火炮兩萬五千門。
絕不可迷信邊界防禦
讓人沒想到的是,在二戰結束後的幾十年間,原本是美國軍方為了計算這些武器彈道軌跡而定製的計算機,取得飛速發展,使其成為了互聯網的重要終端載體,網絡空間悄然誕生。
而在最近的十年裏,雲計算、移動互聯網和物聯網技術的應用,讓網絡空間的外延不斷擴大。
網絡空間的利益紛爭,讓同樣烈度的戰役也時常在網絡空間上演。
斯大林格勒保衞戰給人們的第一條啓示就是不能過度迷信邊界防禦。
邊界防禦重要嗎?毫無疑問,它是網絡安全防禦的第一道防線。否則德國人絕不會在蘇德戰爭初期的幾個月內,閃擊到莫斯科城下;在希特勒下達“藍色行動”的作戰命令後,德軍也不至於很快就打穿了斯大林格勒的外圍防線。
但過度依賴是有問題的。
面對攻守及其不平衡的局面,攻擊者利用強大的情報蒐集能力,找出目標防守的薄弱點,從而輕而易舉的攻破目標的外圍防線。在內網中如入無人之境,直面網絡空間裏的“斯大林格勒”——服務器,存儲重要數據、核心代碼或者運行着核心應用的地方。
從去年的攻防演習來看,攻擊方也不磨嘰,上來就祭出殺手鐧武器——0day漏洞。這就如同攻擊方拿到了目標的“佈防圖”,任你邊界佈防再嚴密,他們也能一擊命中薄弱環節。
果不其然,演習的第一天,就有一眾目標被0day攻擊打穿。
物理斷網聽起來夠安全了吧。2017年5月12日,“永恆之藍”勒索病毒以迅雷不及掩耳之勢穿透網絡安全邊界,安全工程師們不得不在每一台中招的機器上,與勒索病毒展開“貼身肉搏”。
值得注意的是,隔離網的中招情況,要比普通家用電腦嚴重的多。
在付出數百萬台機器中招和不計其數的經濟損失後,安全工程師們才暫時遏制住了“永恆之藍”傳播的勢頭。
做好打“巷戰”的準備
戰鬥在每一間房屋、每一片瓦
斯大林格勒戰役還有第三個啓示。
受到極寒天氣影響,德國人在進攻莫斯科的時候遇到了嚴重的補給困難,機械化部隊難以發揮作用,士氣也非常低落。儘管蘇聯在莫斯科城下挫敗了德國人的進攻,但依然沒有扭轉敵強我弱的局面。
因此,面對德國人向斯大林格勒發起的夏季攻勢,想要複製莫斯科的勝利,把德軍攔在城下是非常困難的,打巷戰幾乎無法避免。
巷戰是慘烈的,但防守方在面對優勢敵軍時,很多時候卻不得不如此。
就像不能迷信邊界防禦一樣,做好了戰前準備,就以為服務器安全可以高枕無憂。要能夠在服務器內部的每一個角落,隨時同攻擊行為展開“巷戰”。
尤其是在攻防演習這種“戰時狀態”,面對攻擊方高頻度的攻擊行為和變幻莫測的攻擊技巧,單純的“資配漏補”很難奏效,必須要利用技術手段與攻擊方做持續對抗。
巷戰有一個明顯的特點:未知性,你不知道敵軍會從哪一片牆後面突然跑出來給你一槍。想要佔據主動權,實時掌握敵軍視野,並適時發起局部進攻非常重要。喜歡玩遊戲的人都知道,不管是FPS、RPG還是MOBA類遊戲,擁有“全圖視野”是多麼爽。
雲鎖另外一個強大的功能,就是通過佈滿服務器內部的“眼睛”,幫防守方開全圖視野。業界習慣把這雙“眼睛”叫做“探針”。
雲鎖的探針有四種。
第一種是IN-APP WAF探針。它的工作原理和普通WAF類似,部署在Web應用上,監控所有進入Web應用的流量。一旦發現“壞人”混跡在正常流量中,即可發出告警。它的優勢在於,雲鎖對於加密流量(可以理解為偽裝後的壞人)檢測能力更強。
第二種RASP探針。RASP中文全稱是應用運行時自我保護,其目的在於讓應用程序擁有自我免疫和防禦的能力。它主要的主要能力是hook網絡流量,細粒度的監控應用腳本的行為及函數調用上下文信息(程序員都懂的),及時發現惡意代碼和漏洞利用行為。
説點大白話。假如雲鎖發現躲在牆後的敵人舉槍向你瞄準,他就會通知你危險並及時躲避;假如雲鎖發現敵方通信兵和長官通話,它會通知你敵方通信兵可能正在彙報你方部署情況,要及時幹掉他。也就是雲鎖從敵方肢體語言(在IT環境中就是機器語言)中發現危險信號,為你下一步反制行動提供參考。
第三種是內核加固探針。內核到底是什麼?簡單來説就是底層環境,也就是操作系統、內存這些東西。攻擊者在服務器內每發起一次攻擊行為,就會在內核上留下一些痕跡(當然攻擊者也可以清除痕跡),就像敵人每走一步就會在地上留下腳印,每開一槍就會留下彈殼一樣。雲鎖的內核加固探針就是在系統層,通過觀察這些“痕跡”來進行黑客行為畫像,監控攻擊者的攻擊行為。
同時,這個內核加固探針還能起到為內核加固的作用,增強操作系統自身對抗黑客攻擊和惡意代碼的能力,限制漏洞利用後的下一步行為。不然攻擊者不知道從什麼地方“打個地道”跑到我後面,豈不是滿盤皆輸?
第四種是Webshell動態檢測探針。針對Web服務器有一種非常常見的攻擊類型叫Webshell攻擊,它是一種後門文件,攻擊者將其上傳到服務器後,就通過運行它獲取控制服務器的權限。但通常而言,Webshell文件並不會在自己腦門上寫着壞人倆字,相反還會進行各種偽裝、加密,防守者可能直到被拿站了才恍然大悟。
那怎麼辦?還記得《亮劍》里老李讓國民黨暫七師師長常乃超跑那五公里嗎?當時常乃超被俘後混在普通俘虜中,最後因為跑不動五公里露餡了。沒有那五公里,就沒有後來南京軍事學院的常教員。沒有常教員的潤色,老李的畢業論文可能也沒有那麼氣壯山河。
話説回來。雲鎖也會進行全盤掃描,把包括Webshell在內的腳本文件扔到沙箱裏“跑五公里”,一旦發現非法行為就標記出來,並把檢測結果同步給WAF和RASP探針,下次再發現一樣的腳本文件,直接幹掉就行了。
打贏服務器保衞戰
然而在過去的十數年間,服務器的形態發生了翻天覆地的變化,作為機構承載關鍵業務和敏感數據的核心平台,任何一個小小的缺陷都會被攻擊者抓住並無限放大。無論你的補丁打的再怎麼好、口令設置的再怎麼複雜,面對0day、內存馬、社工滲透這種形態的攻擊時,都顯得力不從心。
當然,發現攻擊從來不是一件容易的事情。有統計數據顯示,針對服務器的攻擊平均在99天內不會被發現,超過53%的受害者是在外部通知後才知道被攻擊的。與攻擊駐留時間相對應的是防禦發現時間,防守者平均需要170天才能檢測到一個高級威脅。
好在,雲鎖並不是一個人作戰。在服務器的外圍,奇安信天眼能夠在流量側,清晰洞察“敵軍的動向”。
持續的檢測與對抗,才能打贏網絡空間裏的“斯大林格勒保衞戰”。