關於下一代安全防護的討論

wyzsk發表於2020-08-19
作者: vodu · 2016/01/26 15:20

0x00 前言


從事網際網路安全研究有些年了,研究防毒軟體,安全套裝,防火牆,IPS之類的監控裝置也有一段時間了,開始對現有和下一代安全防護有一點自己的想法,並且開始琢磨更為安全的架構,致力於讓網際網路更安全。

0x01 現狀


先說一下現有安全裝置或者服務。

第一個肯定是說防毒軟體或者相應防毒安防套裝。防毒軟體或者安防套裝應該為現如今最主流的安防手段。國內,不管從事什麼職業的人,安裝完系統,第一件事就想著安裝什麼防毒軟體更能保護我不受惡意軟體的入侵。大眾已經開始比較防毒軟體優劣了,安全意識能到達如此高的地步,甚是欣慰。但是這也從側面印證了一個問題,傳統防毒軟體已經過時了,不具有在當今網際網路社會中提供高安全防護的能力,無法對高水平滲透行為進行防禦。不論是透過多年研究經驗,還是透過分析各大安全公司的追蹤報告,都能得出印證,現有防毒軟體不足以對尖端滲透行為(APT)提供足夠的安全防護 。甚至按照某些報告中的敘述,滲透人員只需要相應的免殺一下,就能完全忽略防毒軟體所帶來的威脅。

縱觀FireEye在2013年,2014年的APT報告中,就可以看出,APT行為針對的目標前三位為政府,服務類機構,高科技企業,再說下排第七位的,航空國防類工業。這四類企業是現有安全水平最高的幾類企業。Symantec,Mcafee這類最主流的病毒防護軟體,都不一定被他們認為是可靠的。更不用說國內的一些防護類的軟體。

諮詢了一些專門做滲透測試的朋友,他們直言,從來沒有出現過被這類病毒防護軟體發現,趕出內網的情況。

所以照此看,如果一個企業相信售前,指望這類防毒軟體保護自身不被入侵,只能說很天真。

再說說硬體裝置,各類防火牆,IPS。Cisco ASA系列,Juniper SSG系列,Fortinet FortiGate系列,再或者像Palo Alto一樣的硬體的應用層防火牆,見識的實在是太多了,就算在白皮書中說的再怎麼智慧,動態識別行為,只能說規則還是太死,不足以阻攔APT的行為。更何況國內的某些廠商還掙扎在效能資料上,一加上防火牆,網路延遲增加了太多。線速轉發,吞吐量什麼都上不去,智慧化只能淪落為笑談。

在校期間,有幸見識了國內某銀行支行的建設,使用國產裝置,由於處於私有網路中,防火牆只是用來啟動,耗電,都沒插網線,只是因為他們的員工說有他網速太卡。

接觸防火牆這麼多年,不考慮效能問題,覺得它最有用處的就兩個功能,在三層隔離網路,依照規則進行過濾。其他的特性基本沒有阻攔滲透行為。

最後說說IDS與各類監控裝置。這是公司網路最後一道防線了,但是這道防線的作用卻是受到了極大的限制。各類日誌與監測服務,包含所有內網的行為,如果能精確判斷各類行為,將會直接導致滲透行為的暴露。但是滲透行為觸發的報警經常不是emerg或者alert,經常是notice甚至為info級別。所以這類行為往往被忽略,只能進行仔細的分析才能發現。

0x02 下一代安全防護


如果仔細分析日誌,是能發現現有滲透行為的,所以大家都在說下一代網路安全防禦方式。國外已經給我們做出了一個例子,那就是FireEye與旗下的mandiant,應該是我們所謂的下一代防護。在經過分析FireEye的報告和各種討論,提出瞭如下可能實現的方案:

打造一個“管理員”,能在日誌海中耐心,快速地識別所有的流量,將每一個流量識別成一個行為或者一個行為的一部分,再將這個行為對應到發起人,可能是一個IP或者是一個域賬戶,判斷是不是這個人可能的或是合法的行為。

透過這個方案,不合法的行為將會串聯起來,變得異常明顯。當然這個方案在之前,需要極大的成本,其中的重點就是在打造這個機器學習,或者叫做人工智慧。但是在最近,Google公開了他的神經網路演算法,並且遵循Apache協議,給每個程式設計師打造人工智慧夥伴並且產品化的可能。

阿里,360等也全部在研發下一代防護服務。絕對逃不出識別流量行為,分析行為的這個模式,相信也是在學FireEye的做法,或者說是本土化。機器學習的開源,只能說每個安全人員都有可能適用自身的下一代防護系統。

那麼下一代防護系統是否能滿足現有最高安全級別的防護要求呢,我們來做個小小的舉例:假設我們的監測系統已經學習了一週或者更長時間網路流量日誌。

  • pi與ghost,傳統型,立即上線,隨時發起連線,使用TCP上線,本地管理員許可權執行。

    有以下幾點較為敏感:

    1. 時時刻刻在活躍的非信任連線 alert
    2. 一個TCP未知協議的連線,非信任地址(可能防火牆就不會放過)warning
    3. 可能立即就會有掃描內網行為 emerg
    4. ...
  • pi與ghost變種型,工作時間定時上線,使用標準https協議通訊,使用system許可權執行

    經過檢測,將可能會有以下幾點引發注意

    1. 在工作時間時時刻刻活躍的非信任連線 alert
    2. 員工參加某個集中活動,像午餐什麼的,網路較為沉寂的時候仍然一直保持活躍 waining
    3. 在使用者賬戶在非登入狀態的非信任流量 alert
    4. 上行大於下行的非信任流量 總流量小叫notice 總流量較大 alert 5mb
    5. 可能會有內網掃描流量 emerg
    6. 關於上線時間,異常精確的一個時間點 alert
    7. 過多的與域控的通訊 alert
    8. 嘗試訪問非公共與自己部門的伺服器 alert
    9. 非管理員嘗試訪問網路裝置 alert
    10. 機器只有非信任連線的https訪問 alert 瀏覽器都沒開,就有https流量 warning
    11. 使用者行為異常,非hsts網站,直接使用https訪問,沒有http跳轉過程,但使用者從來不會去手動輸入https warning
    12. ...

危險係數應該是累加,到達一個閾值,就會總結行為,提取日誌,上報分析人員。遇到warning就會更加關注該源產生的流量。兩個alert就應該是閾值。

我們按照同樣的思路測試我們自己的遠控,也不能很好的逃避監測。目前的設計思路還只是根據流量日誌進行的分析,流量日誌包括源與目的地址,時間,協議,大小這些資料流量的基本資料。如果能更深入的對資料包的內容進行檢測,將會極大的增強識別能力。我們的學習資料是流量日誌,所以我們存在於旁路,甚至不存在於公司網路,對使用者完全透明。

如果我們繼續擴充套件,像Mandiant一樣,將資訊收集點放入客戶機器,標識所有進入內網的流量,把所有的PC機器當成自己的蜜罐,精確的標記每一個流量,然後深度收集每一個流量最後的行為,再利用神經網路學習並且識別出來哪些流量的行為是異常的。例如,一個被標記的流量來了,由瀏覽器接收,然後瀏覽器建立了一個新的程式,下載了一個EXE,在新的程式下執行。這個行為明顯不是一個正常網頁應該產生的效果,將該行為,加上所有的流量資料,記憶體執行資料提交分析人員,之後應該就能出現0day與遠控的分析報告。這種監測機制能高效的捕獲EXP,木馬及滲透行為。

目前提出的網路防禦手段,即使名字叫做下一代防護,也都只能對當前滲透手段進行防禦,不可能做到一勞永逸。因為下一代攻擊手段就是為了應對下一代防護,之後下下一代防護才能防禦這種攻擊。

舉個例子,bit9,白名單防護軟體,非白名單的可執行檔案不允許被執行,如果嘗試執行,將會被阻止並且引發報警。當時應該可以號稱EXP+木馬組合的剋星,就算你擁有0day,並且執行成功了,將遠控下回本地,但是你的遠控不能被執行,並且還會引發報警。結果就是0day與遠控都爆了。

這種防禦方式基本是不可逾越的,但那只是在poweshell+wmi出現之前,這種方式能完美的繞過檔案白名單機制,完爆了bit9。而暴露這種攻擊手法的,就是行為檢測,因為就算滲透軟體發生了巨大的變化,但是你的滲透行為仍然不會有本質的改變。相信就是這樣,該攻擊方式已被FireEye曝出。

0x03 探討


那麼,如果阿里360什麼開發完善了這種檢測服務,那是不是網路就安全了,那是不可能的。我們就來小小地討論下在這種環境下,究竟如何能長期生存下去。

這種檢測的核心就是行為,如果我們的行為不能被發現,或者被識別成使用者行為,再或者是一個被信任的流量,那麼是不是我們就能在這個網路中生存下去了。我在這裡有三個沒有經過實際驗證的想法,跟大家討論下。

方案一、我們的行為被識別成使用者的行為

我們的遠控在系統中寄存,但是主程式只是一個守護程式,不論是劫持系統程式還是什麼的,只是存在,進行守護,但是不完成任何通訊。然後透過注入劫持使用者正常通訊程式,例如瀏覽器,劫持Chrome程式,當使用者啟動瀏覽器的時候,我們的通訊程式隨即啟動或者略有延遲,進行絕對正常的通訊,dns,http轉https,或者直接進行https通訊,客戶端取回指令,執行程式執行,然後在傳回指令結果。整個過程類似聊天,你一句,我一句。如果使用者關閉瀏覽器,所有連線隨即關閉,但是伺服器的最後一句話仍然會在伺服器上,直到下一次開啟瀏覽器,在繼續整個過程。

在這個過程中,我們的所有行為會被理解成使用者瀏覽器的某些行為。因為網頁不可能只存在於一臺伺服器上,一定會有圖片伺服器,js伺服器,廣告之類的。所以只要我麼你的流量保持在一個很小的水平,將不會引發任何警覺。就算進行行為的橫向對比甚至,檢測服務很智慧,自己也向我們的伺服器進行通訊進行內容判斷,我們判斷不是我們的客戶端,就直接返回一大堆js或者圖片廣告或者正常網頁什麼的,因為就算你是用相同的url,cookies等資訊,你也不能保證你和使用者收到的資料一定是一樣的,並且資料經過加密,https資料包不能由第三方拆解,不能進行對比。這樣就完整的偽裝成一臺不被信任但是完全不敏感的伺服器。

我們的連線就算在一個分析人員來看,也會是一個使用者訪問一個正常的網頁,產生了一些你不明白的流量,但是絲毫不敏感。但是在機器上,我們的通訊程式如何跟主程式進行通訊,並且能不被mandiant這類分析軟體認為敏感,是寫本地檔案,還是什麼的,肯定會有方式。大流量的資料,透過郵件啊之類的合法的大流量行為進行傳輸。

這樣理論上就能繞過行為檢測,穩定地駐留在這個內部網路中。

方案二、我們是被信任的

內網使用者也是需要正常使用PC,完成某些目的。這樣他就會需要各種軟體或者平臺什麼的支援。這些軟體基本都會向自己公司的伺服器進行互動,可能是回執報告,可能是檢查更新,可能是任何行為。如果我們使用這種流量進行通訊,那是不是能被所有的檢測機制信任,即使我們的流量很大。

我們的核心就是大範圍的網路劫持。下面舉個例子。

在一個工作內網中,我們的木馬使用正常的https協議上線,在系統中駐留的方式很傳統,沒有任何特別的地方,最特別是是用的域名,我們使用windowsupdate.microsoft.com,或者support.microsoft.com,抑或是chrome.google.com進行上線。進行大流量的資料傳輸,上線時間什麼的行為不做任何特別的設定,唯一限制的就是使用標準的https協議或者之類的安全加密協議。那麼檢測系統抑或是分析人員會如何理解這個流量行為?

我們在設計實現FireEye這類產品方案的初期,第一個就提出的,*.microsoft.com,*.cisco.com,*.google.com(個別域名除外,像code.google.com)這樣的域名的流量日誌直接扔掉,檢測這類流量行為的是沒有任何意義的。我相信很多設計者也是這樣的想法,就算不是,該類流量過大,被系統識別出來,提交分析人員,分析人員也基本就會看一眼扔掉,應為分析這樣的流量沒有什麼卵用。這個行為如何定義呢,好點的人在說microsoft收集系統使用報告呢吧,有點惡意的人肯定說微軟在收集使用者個人資訊。基本不會認為有人利用該域名進行滲透。

說說實現方案,其實難度不是特別大,絕對不是不可能。劫持或者控制區域DNS,至於是投毒,滲透還是什麼隨意。如果域名不夠絕對,我就直接劫持IP地址,全部使用微軟的IP地址進行通訊。只要控制一個路由器就可以實現不論是劫持域名還是劫持IP。之前的文章已經實現過類似的劫持,完成了想要的目的。

方案三、無法分析我們的行為

第三條方案比較直接,直接讓我們的行為無法被識別到,做法就是我們直接攻擊分析伺服器或者說的人工智慧的核心,去尋找這些元件的漏洞。如果能執行命令更好,是刪光所有的日誌,還是直接刪除伺服器所有資料都是後話了。

然後我們在短期內就可以直接無視這種行為方面的檢測。

0x04 結語


任何系統,軟體都會有漏洞,堅信。

群策群力,共同邁向下一代。

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章