網站首頁 > 熱門病毒專題 > 大型網際網路公司如何防止駭客入侵(上)
 
標題:大型網際網路公司如何防止駭客入侵(上)
分類:熱門病毒專題 日期:2018/12/3 下午 02:58:04

大型網際網路公司如何防止駭客入侵(上)

江民科技  2018/11/30

 

如何知道自己所在的企業是否被入侵了?

是沒人來“駭”?

還是因自身感知能力不足,暫時還無法發現?

 

其實,入侵偵測是每一個大型網際網路企業都要面對的嚴峻挑戰。價值越高的公司,面臨入侵的威脅也越大,即便是 Yahoo 這樣的網際網路鼻祖,在落幕(被收購)時仍遭遇數據失竊的事情。

  

安全無小事,一旦網際網路公司被成功“入侵”,其後果將不堪想像。

 

基於“攻防對抗”的考量,本文不會提及具體的入侵偵測模型、演算法和策略,那些希望直接照搬“入侵策略”的同學可能會感到失望。

 

但是我們會將一部分運營思路分享出來,請各位同行指點,如能對後來者起到幫助的作用,那就更好了,也歡迎大家跟我們交流探討。

 

 

入侵的定義

 

典型的入侵場景:駭客在很遠的地方,通過網路遠端控制目標的筆記型電腦/手機/伺服器/網路設備,進而隨意地讀取目標的隱私資料,又或者使用目標系統上的功能,包括但不限於使用手機的麥克風監聽目標,使用攝影鏡頭偷窺監控目標,使用目標設備的計算能力挖礦,使用目標設備的網路能力發動 DDoS 攻擊等等。亦或是破解了一個服務的密碼,進去查看敏感資料、控制門禁/紅綠燈。以上這些都屬於經典的入侵場景。

 

我們可以給入侵下一個定義:就是駭客在未經授權的情況下,控制、使用我方資源(包括但不限於讀寫資料、執行命令、控制資源等)達到各種目的。

 

從廣義上講,駭客利用 SQL 注入漏洞竊取資料,或者拿到了目標功能變數名稱在 ISP 中的帳號密碼,以篡改 DNS 指向一個黑頁,又或者找到了目標的社交帳號,在微博/QQ/郵箱上,對虛擬資產進行非授權的控制,都屬於入侵的範疇。

 

 

 

針對企業的入侵偵測

 

企業入侵偵測的範圍,多數情況下比較狹義:一般特指駭客對 PC、系統、伺服器、網路(包括辦公網、生產網)控制的行為。

 

駭客對 PC、伺服器等主機資產的控制,最常見的方法是通過 Shell 去執行指令,獲得 Shell 的這個動作叫做 GetShell

 

比如通過 Web 服務的上傳漏洞,拿到 WebShell,或者利用 RCE 漏洞直接執行命令/代碼(RCE 環境變相的提供了一個 Shell)。

 

另外,通過某種方式先植入“木馬後門”,後續直接利用木馬集成的 Shell 功能對目標遠端控制,這個也比較典型。

 

因此,入侵偵測可以重點關注 GetShell 這個動作,以及 GetShell 成功之後的惡意行為(為了擴大戰果,駭客多半會利用 Shell 進行探測、翻找竊取、橫向移動攻擊其他內部目標,這些區別於好人的特性也可以作為重要的特徵)。

 

有一些同行(包括商業產品),喜歡報告 GetShell 之前的一些“外部掃描、攻擊探測和嘗試行為”,並美其名曰“態勢感知”,告訴企業有人正在“試圖攻擊”。

 

在筆者看來,實戰價值並不大。包括很多大型企業,基本上無時無刻都在遭受“不明身份”的攻擊。

 

知道了有人在“嘗試”攻擊,如果並不能有效地去行動,無法有效地對行動進行告警,除了耗費心力之外,並沒有太大的實際價值。

 

當我們習慣“攻擊”是常態之後,就會在這樣的常態下去解決問題,可以使用什麼加固策略,哪些可以實現常態化的運營,如果有什麼策略無法常態化運營。

 

類似於 SQL 注入、XSS 等一些不直接 GetShell Web 攻擊,暫時不在狹義的“入侵偵測”考慮範圍,建議可以劃入“漏洞”、“威脅感知”等領域,另行再做探討。

 

當然,利用 SQL 注入、XSS 等入口,進行了 GetShell 操作的,我們仍抓 GetShell 這個關鍵點,不必在乎漏洞入口在何處。

 

 

“入侵”和“內鬼”

 

與入侵接近的一種場景是“內鬼”。入侵本身是手段,GetShell 只是起點,駭客 GetShell 的目標是為了之後對資源的控制和資料的竊取。

 

而“內鬼”天然擁有合法的許可權,可以合法接觸敏感資產,但是基於工作以外的目的,他們對這些資源進行非法的處置,包括拷貝副本、轉移外泄、篡改資料牟利等。

 

內鬼的行為不在“入侵偵測”的範疇,一般從內部風險控制的視角進行管理和審計,比如職責分離、雙人審計等。也有資料防洩密產品(DLP)對其進行輔助,這裡不展開細說。

 

有時候,駭客知道員工 A 有許可權接觸目標資產,便定向攻擊 A,再利用 A 的許可權把資料竊取走,也定性為“入侵”。

 

畢竟 A 不是主觀惡意的“內鬼”。如果不能在駭客攻擊 A 的那一刻捕獲,或者無法區分駭客控制的 A 竊取資料和正常員工 A 的訪問資料,那這個入侵偵測也是失敗的。

 

 

入侵偵測的本質

 

前文已經講過,入侵就是駭客可以不經過我們的同意,來操作我們的資產,在手段上並沒有任何的限制。

 

那麼如何找出入侵行為和合法正常行為的區別,將其跟合法行為進行分開,就是“入侵發現”。在演算法模型上,這算是一個標記問題(入侵、非入侵)。

 

可惜的是,入侵這種動作的“黑”樣本特別稀少,想通過大量的帶標籤的資料,有監督的訓練入侵偵測模型,找出入侵的規律比較難。

 

因此,入侵偵測策略開發人員,往往需要投入大量的時間,去提煉更精准的表達模型,或者花更多的精力去構造“類似入侵”的類比資料。

 

一個經典的例子是,為了檢測出 WebShell,安全從業人員可以去 GitHub 上搜索一些公開的 WebShell 樣本,數量大約不到 1000 個。

 

而對於機器學習動輒百萬級的訓練需求,這些資料遠遠不夠。況且 GitHub 上的這些樣本集,從技術手法上來看,有單一技術手法生成的大量類似樣本,也有一些對抗的手法樣本缺失。

 

因此,這樣的訓練,試圖讓 AI 去通過“大量的樣本”掌握 WebShell 的特徵並區分出它們,原則上不太可能完美地去實現。

 

此時,針對已知樣本做技術分類,提煉更精准的表達模型,被稱為傳統的特徵工程。

 

而傳統的特徵工程往往被視為效率低下的重複勞動,但效果往往比較穩定,畢竟加一個技術特徵就可以穩定發現一類 WebShell

 

而構造大量的惡意樣本,雖然有機器學習、AI 等光環加持,但在實際環境中往往難以獲得成功:自動生成的樣本很難描述 WebShell 本來的含義,多半描述的是自動生成的演算法特徵。

 

另一個方面,入侵的區別是看行為本身是否“授權”,而授權與否本身是沒有任何顯著的區分特徵的。

 

因此,做入侵對抗的時候,如果能夠通過某種加固,將合法的訪問收斂到有限的通道,並且給該通道做出強有力的區分,也就能大大的降低入侵偵測的成本。

 

例如,對訪問來源進行嚴格的認證,無論是自然人,還是程式 API,都要求持有合法票據。

 

而派發票據時,針對不同情況做多緯度的認證和授權,再用 IAM 針對這些票據記錄和監控它們可以訪問的範圍,還能產生更底層的 Log 做異常訪問模型感知。

 

這個全生命週期的風控模型,也是 Google BeyondCorp 無邊界網路得以實施的前提和基礎。

 

因此,入侵偵測的主要思路也就有兩種:

 

根據黑特徵進行模式匹配(例如 WebShell 關鍵字匹配)。

 

根據業務歷史行為(生成基線模型),對入侵行為做異常對比(非白即黑),如果業務的歷史行為不夠收斂,就用加固的手段對其進行收斂,再挑出不合規的小眾異常行為。

 

 

入侵偵測與攻擊向量

 

根據目標不同,可能暴露給駭客的攻擊面會不同,駭客可能採用的入侵手法也就完全不同。

 

比如,入侵我們的 PC/筆記型電腦,還有入侵部署在機房/雲上的伺服器,攻擊和防禦的方法都有挺大的區別。

 

針對一個明確的“目標”,它被訪問的管道可能是有限集,被攻擊的必經路徑也有限。“攻擊方法”+“目標的攻擊面”的組合,被稱為“攻擊向量”。

 

因此,談入侵偵測模型效果時,需要先明確攻擊向量,針對不同的攻擊路徑,採集對應的日誌(資料),才可能做對應的檢測模型。

 

比如,基於 SSH 登錄後的 Shell 命令資料集,是不能用於檢測 WebShell 的行為。

 

而基於網路流量採集的資料,也不可能感知駭客是否在 SSH 後的 Shell 環境中執行了什麼命令。

 

基於此,如果有企業不提具體的場景,就說做好了 APT 感知模型,顯然就是在“吹噓”了。

 

所以,入侵偵測得先把各類攻擊向量羅列出來,對每一個細分場景分別採集資料(HIDS+NIDS+WAF+RASP+應用層日誌+系統日誌+PC……),再結合公司的實際資料特性,作出適應公司實際情況的對應檢測模型。

 

不同公司的技術棧、資料規模、暴露的攻擊面,都會對模型產生重大的影響。

 

比如很多安全工作者特別擅長 PHP 下的 WebShell 檢測,但是到了一個 Java 系的公司……

 

 

 

常見的入侵手法與應對

 

如果對駭客的常見入侵手法理解不足,就很難有的放矢,有時候甚至會陷入“政治正確”的陷阱裡。比如滲透測試團隊說,我們做了 A 動作,你們竟然沒有發現,所以你們不行。

 

而實際情況是,該場景可能不是一個完備的入侵鏈條,就算不發現該動作,對入侵偵測效果可能也沒有什麼影響。

 

每一個攻擊向量對公司造成的危害,發生的概率如何進行排序,解決它耗費的成本和帶來的收益如何,都需要有專業經驗來做支撐與決策。

 

現在簡單介紹一下,駭客入侵教程裡的經典流程(完整過程可以參考殺傷鏈模型):

 

入侵一個目標之前,駭客對該目標可能還不夠瞭解,所以第一件事往往是“踩點”,也就是搜集資訊,加深瞭解。

 

比如,駭客需要知道,目標有哪些資產(功能變數名稱、IP、服務),它們各自的狀態如何,是否存在已知的漏洞,管理它們的人有誰(以及如何合法的管理的),存在哪些已知的洩漏資訊(比如社工庫裡的密碼等)……

 

一旦踩點完成,熟練的駭客就會針對各種資產的特性,醞釀和逐個驗證“攻擊向量”的可行性,下文列舉了常見的攻擊方式和防禦建議。

 

 

高危服務入侵

 

所有的公共服務都是“高危服務”,因為該協定或者實現該協定的開源元件,可能存在已知的攻擊方法(高級的攻擊者甚至擁有對應的 0day)。

 

只要你的價值足夠高,駭客有足夠的動力和資源去挖掘,那麼當你把高危服務開啟到網際網路,面向所有人都打開的那一刻,就相當於為駭客打開了“大門”。

 

比如 SSHRDP 這些運維管理相關的服務,是設計給管理員用的,只要知道密碼/秘鑰,任何人都能登錄到伺服器端,進而完成入侵。

 

 

而駭客可能通過猜解密碼(結合社工庫的資訊洩露、網盤檢索或者暴力破解),獲得憑據。

 

事實上這類攻擊由於過於常見,駭客早就做成了全自動化的全網際網路掃描的蠕蟲類工具,雲上購買的一個主機如果設置了一個弱口令,往往在幾分鐘內就會感染蠕蟲病毒,就是因為這類自動化的攻擊者實在是太多了。

 

或許,你的密碼設置得非常強壯,但是這並不是你可以把該服務繼續暴露在網際網路的理由,我們應該把這些埠限制好,只允許自己的 IP(或者內部的堡壘主機)訪問,徹底斷掉駭客通過它入侵我們的可能。

 

與此類似的,MySQLRedisFTPSMTPMSSQLRsync 等等,凡是自己用來管理伺服器或者資料庫、檔的服務,都不應該針對網際網路無限制的開放。

 

否則,蠕蟲化的攻擊工具會在短短幾分鐘內攻破我們的服務,甚至直接加密我們的資料,甚至要求我們支付比特幣,進行敲詐勒索。

 

還有一些高危服務存在 RCE 漏洞(遠端命令執行),只要埠開放,駭客就能利用現成的 exp,直接 GetShell,完成入侵。

 

防禦建議: 針對每一個高危服務做入侵偵測的成本較高,因為高危服務的具體所指非常的多,不一定存在通用的特徵。

 

所以,通過加固方式,收斂攻擊入口性價比更高。禁止所有高危埠對網際網路開放可能,這樣能夠減少 90% 以上的入侵概率。

 

 

Web 入侵

 

隨著高危埠的加固,駭客知識庫裡的攻擊手法很多都會失效了。但是 Web 服務是現代網際網路公司的主要服務形式,不可能都關掉。

 

於是,基於 PHPJavaASPASP.NETNodeC 寫的 CGI 等等動態的 Web 服務漏洞,就變成了駭客入侵的最主要入口。

 

比如,利用上傳功能直接上傳一個 WebShell,利用檔包含功能,直接引用執行一個遠端的 WebShell(或者代碼),然後利用代碼執行的功能,直接當作 Shell 的入口執行任意命令,解析一些圖片、視頻的服務,上傳一個惡意的樣本,觸發解析庫的漏洞……

 

Web 服務下的應用安全是一個專門的領域(道哥還專門寫了本《白帽子講 Web 安全》),具體的攻防場景和對抗已經發展得非常成熟了。

 

當然,由於它們都是由 Web 服務做為入口,所以入侵行為也會存在某種意義上的共性。相對而言,我們比較容易能夠找到駭客 GetShell 和正常業務行為的一些區別。

 

針對 Web 服務的入侵痕跡檢測,可以考慮採集 WAF 日誌、Access LogAuditd 記錄的系統調用,或者 Shell 指令,以及網路層面 Response 相關的資料,提煉出被攻擊成功的特徵,建議我們將主要的精力放在這些方面。

 

 

0day 入侵

 

通過洩漏的工具包來看,早些年 NSA 是擁有直接攻擊 ApacheNginx 這些服務的 0day 武器的。

 

這意味著對手很可能完全不用在乎我們的代碼和服務寫成什麼樣,拿 0day 一打,神不知鬼不覺就 GetShell 了。

 

但是對於入侵偵測而言,這並不可怕:因為無論對手利用什麼漏洞當入口,它所使用的 Shellcode 和之後的行為本身依然有共性。

 

Apache 存在 0day 漏洞被攻擊,還是一個 PHP 頁面存在低級的代碼漏洞被利用,從入侵的行為上來看,說不定是完全一樣的,入侵偵測模型還可以通用。

 

所以,把精力聚焦在有駭客 GetShell 入口和之後的行為上,可能比關注漏洞入口更有價值。當然,具體的漏洞利用還是要實際跟進,然後驗證其行為是否符合預期。

 

 

辦公終端入侵

 

絕大多數 APT 報告裡,駭客是先對人(辦公終端)下手,比如發個郵件,哄騙我們打開後,控制我們的 PC,再進行長期的觀察/翻閱,拿到我們的合法憑據後,再到內網漫遊。

 

所以這些報告,多數集中在描述駭客用的木馬行為以及家族代碼相似度上。而反 APT 的產品、解決方案,多數也是在辦公終端的系統調用層面,用類似的方法,檢驗“免殺木馬”的行為。

 

因此,EDR 類的產品+郵件安全閘道+辦公網出口的行為審計+APT 產品的沙箱等,聯合起來,可以採集到對應的資料,並作出相似的入侵偵測感知模型。

 

而最重要的一點,是駭客喜歡關注內部的重要基礎設施,包括但不限於 AD 域控、郵件伺服器、密碼管理系統、許可權管理系統等,一旦拿下,就相當於成為了內網的“上帝”,可以為所欲為。

 

所以對公司來說,重要基礎設施要有針對性的攻防加固討論,微軟針對 AD 的攻防甚至還發過專門的加固白皮書。

 

大型的網際網路公司,本身就處在網際網路中。網路安全事件十分複雜,網路安全問題是一件不可鬆懈的事情,不要被“狼來了”的資訊所困擾從而放鬆警惕,安全無小事,“駭客”一旦攻擊入侵,接下來面對的結果損失是無法預計的!

 

網路時代的發展,網路安全問題不容忽視,江民科技在網路安全領域一直處於領先地位,不僅有自主研發的殺毒引擎、病毒庫,在技術支撐上也佔據行業領先地位,也一直在向著成為全球領先的資訊安全產品與服務提供者的目標而努力。面對網路安全問題,我們一直在努力。

 
 
 
CopyRight  © 江民科技 1996 - 2021 版權所有 All Rights Reserved
總代理:六合國際實業有限公司 E-mail: jiangmin@jiangmin.com.tw