與來自IT、信息、網絡安全行業很多縮略詞一樣,APT(高級持續性威脅)這個術語正變得廣為人知。就像新生概念一樣,它和它的兄弟詞語AET(高級逃逸技術)占據了當今各大媒體的頭條。
然而,從這兩個術語涉及的最基本層面上來看,它們并沒有任何創新。新的簡寫的確概括了當今這個高度信息化的時代遇到的一些真正的威脅,但它們只是在沒人注意的時候偷偷重新發明了自己。因此,APT里代表持續性(Persistent)的那個“P”看上去才顯得如此恰當(apt本身就是個英文單詞,有恰當的、合適的意思)。
隨著攻擊技術的不斷發展,歷史上的威脅和今天的威脅之間有一個微妙的區別。一些人利用嚴肅的計劃和項目管理技術創造了用于實戰的高級逃逸技術,這使得當今的惡意行為如虎添翼。
早在1993年,計算機病毒還是當時最新潮的現象。在英國皇家空軍的計算機安全部門進行計算機病毒研究的人員提出了一個瘋狂想法:使用單層或多層封裝將惡意代碼數據隱藏起來,以規避反病毒系統。也就是說,這就是上個世紀90年代的APT。
如今,很多網絡安全社區傾向于給遇到的每個安全問題都打上普適性的標簽,然后把問題踢給一些相關的技術保護概要,這份概要又會提供某個可行的全/半自動解決方案,最后導出使用某種信息安全靈丹妙藥的確切等級。
然而,以APT為例,上述過程并沒有考慮到攻擊的多面性。例如,APT是病毒?零日漏洞?系統漏洞?還是全新的惡意腳本?對所有這些問題的答案都是令人費解的。
為了對APT的能力和目的有更深刻的理解,我們應當整體審視一下OSI七層模型。然后我們可以看到,APT的制造者是如何依據自己的想象力,將攻擊向量運用到針對OSI模型特定一層或幾層的漏洞上,并取得成功的。以下是OSI模型七層協議:
* 應用層
* 表示層
* 會話層
* 傳輸層
* 網絡層
* 鏈路層
* 物理層
在面對APT攻擊時,一件非常重要的事情是意識到這些攻擊有可能隨設計者的意圖隨意演變。攻擊者運用攻擊向量的某幾點展開攻擊,目標是找到一些要素的漏洞,或者是一些和OSI協議棧相關的要素。盡管,從某種程度上來講,不管APT有沒有被定制好,都要用到大量暴露的通常信息,但這正是我們防不勝防的東西。
舉例而言,攻擊者可能決定將攻擊放在OSI協議棧的上層部分,并在這部分直接發掘漏洞,這樣做有可能導致更底層的漏洞暴露。如果黑客利用社會工程攻擊鎖定目標人員、跟蹤數據包,可能導致OSI模型中更接近技術接口的層面受到威脅,進而使得網絡層上的實體遭到針對性攻擊。
[page]文章寫到這里,應該介紹一下APT的真實定義了:
“它是一種使得攻擊成為可能的邏輯/物理條件,能造成在多重向量層面上的不利狀態,使得人員、軟件、系統陷入危險,實現攻擊者的直/間接訪問,進而發掘目標實體的部分漏洞,甚至造成漏洞的全面暴露。”
關于APT攻擊最值得記住的威脅點是,我們完全不知道它們在邏輯上是如何組織的,也不知道它們針對的是OSI協議棧的哪一層的漏洞。舉例而言,通過混合型魚叉式網絡釣魚的方法投放數據包,可以對單個或多人開展攻擊;攻擊的目標則可以很多樣化,或是利用Windows XP的漏洞,或是對外圍信息安全基礎設施進行直接攻擊,亦或是偽造IP包頭,騙過保護系統;攻擊的結果是在網絡層上成功建立惡意連接。
惡意連接有可能是未授權的數據出口,它使得攻擊者得以遠程調用目標系統上的命令行(Shell操控接口),進而運行強大的Windows管理規范命令行程序(wmic.exe),再向受害網絡發送INTERROGATE詢問控制請求,勘察字符段;或者通過網絡向同組服務器發送硬盤取證軟件。
有一些APT攻擊可能針對人類心理的弱點,比如好奇心。舉例而言,黑客在攻擊一個總部位于倫敦的公司時,把USB盤分散扔到公司停車場里,并給U盤標上個人理財、2015裁員、女朋友的相片等等標簽。然而,這些USB盤都感染了基于Hacksaw、Switchblade制作的U盤病毒,一旦把USB盤插到計算機上,病毒就會通過計算機I/O感染整個系統。
整體來看,針對性的APT攻擊流程大致包括:對目標進行踩點;搜集開源情報(Open Source Intelligence, OSINT)以及任何其它黑客能夠挖出來的信息。單個的信息含金量可能并不高,但是當信息組合起來,有可能構成發動一次攻擊的基礎。
舉例而言,一家公司從基于元數據的構件里泄露出了信息,這些信息是從該公司的網站上無意之中大量泄露的,而公司并不知情。這些信息包括IP地址、用戶名、本地系統名稱、文件夾、操作系統,以及基礎應用程序的版本:比如Oracle。這都會被有心的攻擊者利用起來。
真的有公司想告訴世界他們仍然在用Windows NT 4.0 Service Pack 6a,而且公司內的Windows XP覆蓋率居高不下嗎?抑或是公司業務都運行在過時的服務器上,且有多項隨時有可能被黑客瞄準的中高安全級漏洞? 所有這些信息都可能對想捏軟柿子的APT攻擊者產生至關重要的作用。
如果要考慮哪些要素在數據/元數據泄密方面不是那么重要,就要考慮哪些暴露的通常信息會幫助攻擊者構建攻擊。對上述例子而言,我們來看看隱藏在元數據屬性里的潛在信息,下圖是一個例子。有著家大業大的微軟庇護,直到2015年,Windows NT 4.0依然有它的一席之地,這些老舊產品周期里的系統存在很大的安全風險。
接下來看社會工程學在APT里面所占的地位,請想象以下場景。在一次早期的踩點行動中,攻擊者發現了一系列不安全的文檔,它們來自于一個雇員發布在銀行網站上的信息。經過分析提取,攻擊者得知了雇員的個人背景;通過仔細翻閱相關的元數據,攻擊者得以發掘一些關于文檔創建的內部信息。攻擊者的下一步就是以個人信息為偵查目標,對目標銀行進行開源情報(OSINT)分析,確定目標個人。很容易就能發現,這個人的部門和分機號碼被關聯到了他自己的登錄用戶名上。
到了這個節點,在Facebook、LinkedIn上查找更多情報就是非常容易的了,攻擊已經箭在弦上。現在的問題只是給目標打電話,作為陌生人主動展開對話,使用已經收集到的信息騙取目標的信任,然后對無防備的目標發起惡意通信。
[page]APT相當多元化,依照順序,以下是它所利用到的工具:
* 開源情報
* 情報分析
* 社會工程
* 發掘目標PC的漏洞
* 發送數據包
當然,還有很多對目標產生威脅的方法,這些方法不一定同源,也不一定易于發現。不容忽視的是,其它作為干擾的攻擊手段也經常和APT混在一起,以將企業遭到邏輯攻擊時的注意力和防御資源從真正危險的攻擊中移開。
要想防御邏輯攻擊,真正有效的辦法是去思考有多少暴露的通常信息,而且不要通過名字、商標、檔案來查詢這些信息:部署一種專門尋找直/間接安全事件,或安全反常行為的防御系統。信息安全靈丹妙藥的時代早已遠去,我們生活在一個不安全的時代。這意味著我們應當最大限度地運用想象力,在大量暴露的信息中保護我們的資產。
這一現狀也決定了,公司應當配備高性能的探測預警系統,如果可能的話,應當對整個公司的安全事件進行標記,在對任何遠程第三方組織打開接口時更應如此。以一家英國公司作為反例,在遭到APT攻擊后四周,這家公司才建立了依賴IT基礎架構庫(ITIL)的安全方案,以防止滲透攻擊、未授權高權限賬戶創建,以及病毒感染。這無疑是應對APT攻擊時最糟糕的解決辦法,尤其是在內部網絡已經受到確定無疑的威脅時。對任何APT攻擊而言,它都制造了一個理想機會,攻擊找到的后門可能持續幾個月甚至幾年都不會被發現。
上文的結論如下。任何APT攻擊向量都基于對OSI協議棧上層或底層的攻擊,而且會在棧上多個層次尋找漏洞來實現攻擊的最終目的。攻擊可能需要用到一系列工具,包括混合攻擊,垃圾郵件,可疑鏈接,以及簡單有效的社會工程方法。
而且,在APT攻擊逐漸流行的大潮流下,我們不能忘記開源情報、數據泄密,以及其它能夠為攻擊者所用的潛在信息。大量暴露的信息所帶來的安全威脅意味著我們必須考慮、調查每一個潛在的隱患。
在2015年,我們必須意識到,非傳統的APT攻擊需要非傳統的防御。老辦法已經行不通了。