作者:
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的做法,或者說是本土化。機器學習的開源,只能說每個安全人員都有可能適用自身的下一代防護系統。
那麼下一代防護系統是否能滿足現有最高安全級別的防護要求呢,我們來做個小小的舉例:假設我們的監測系統已經學習了一週或者更長時間網路流量日誌。
危險係數應該是累加,到達一個閾值,就會總結行為,提取日誌,上報分析人員。遇到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 結語
任何系統,軟體都會有漏洞,堅信。
群策群力,共同邁向下一代。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!