search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

如何與「永恆之藍」這樣的病毒和睦相處

引言

不久前,來自網路的Wannacry Ransomware君在世界各地同時上演了一部綁匪大片,台詞華麗,演技出色,當仁不讓地成為世界第一網紅。紛擾過後,我們本著實事求是的精神,科學地探討一下如何與它們和睦相處。

框架和模塊是碼農們最津津樂道的話題,基於成熟框架和模塊可以大幅提升開發效率,提高代碼質量,簡單的說就是站在巨人的肩膀上可以下班更早,加班更少。WannaCry也是基於網路攻擊框架二次開發的結果,它利用前輩們留下的非物質文化遺產:永恆之藍(ETERNALBLUE) 模塊,針對Windows SMB服務的實現漏洞植入惡意代碼,再結合自己的創新:加密用戶文件和顯示勒索聲明,一代網紅勒索病毒由此誕生。從病毒本身的設計流程來看,似乎並不需要高深的編碼技巧或深厚的理論根基,然而這也恰恰是這一事件中最值得我們警惕的地方:NSA泄漏的攻擊模塊遠不止永恆之藍一種,藉助已有攻擊框架進行二次開發的難度又如此之低,所以,可以預期,一大波未知的病毒正在來襲的路上。

是不是細思極恐?

病毒是什麼,病毒由一段可執行代碼與數據構成,自身不能在裸機上運行,通過適當的途徑侵入宿主操作系統,通過宿主系統中的存儲和網路實現複製傳播。

病毒是一類特殊的計算機程序,廣義上稱為惡意軟體。通常它們懷著對人類的深深的惡意來到世上,行為各不相同,有的在你的屏幕上畫個圈圈詛咒你,有的會竊取你設備中的隱私照片,還有的會眨眼間轉走你銀行卡上的購房首付款……顯然,它們的目標還是很一致的:危害人類設備,破壞世界和平。

我們接著來看病毒是如何入侵操作系統的。病毒的入侵無外乎兩個途徑:主動和被動。所謂主動是針對目標系統嘗試發起掃描和攻擊,一般是遠程發起,當發現了自己能吃定的漏洞之後,就通過各種陰險手段(其實技術實現上大多還是很優雅的)攫取系統許可權,進而將惡意代碼注入宿主系統中伺機作惡,對此沒什麼概念的小夥伴可以自行腦補一下《異形》中的人類被寄生的過程。

病毒入侵的另一種方式,我們稱之為被動方式。這種方式並不需要系統存在漏洞或缺陷,需要的是用戶的經驗、常識或智商存在缺陷。它們通過各種偽裝誘騙用戶去打開或運行自己,包括形形色色讓你心動的郵件、鏈接、不明來源的安裝程序等等,一旦獲得機會運行,它們會悄無聲息的在你的系統中安營紮寨、留下多道後門,然後為所欲為,這類病毒又被形象地稱為(特洛伊)木馬。

對於大多數用戶,良好的使用習慣是第一位的。堡壘往往從內部被攻克,再安全的操作系統,再強大的安全機制,都難以阻止用戶的自我毀滅的腳步。良好的使用習慣中最重要的,是安全更新,安全更新,安全更新!為什麼呢?這要先談一下操作系統漏洞的由來。

漏洞實際是軟體缺陷的一種,也就是俗稱的bug,是由於軟體開發人員的疏忽而導致程序沒有按照預期的方式運行。軟體缺陷多種多樣,有些很呆,有些很萌,也並不都會對系統安全構成威脅。在軟體正式發布前,研發人員和測試人員經過漫長而艱苦卓絕的互相傷害,通常最終會達成妥協,通過共同消滅軟體缺陷的方式來解決雙方的爭端。然而總會一些生性狡猾、城府極深的漏網之魚,潛伏在革命隊伍中,混入千家萬戶。當它們中的一些被黑客們發現、策反,並藉助自己在系統內部的有利位置,披著合法軟體的外衣,做出送人頭、坑隊友的惡劣行徑時,就成為軟體系統的公敵:漏洞。

軟體漏洞通常分為代碼實現漏洞和邏輯設計漏洞。代碼實現漏洞通常是開發人員代碼編寫方式的缺陷而產生的漏洞,常見的包括緩衝區溢出、格式化字元串、內存越界訪問、資源釋放重用等;另一類則是邏輯設計漏洞,它在架構或流程設計上就存在的固有缺陷,較為常見的例如安全機制可旁路,導緻密碼檢查、許可權驗證等機制被輕易繞過。而越龐大越複雜的系統中越容易產生這兩類漏洞。操作系統就是這樣一類極其龐大而複雜的軟體系統。

雖然操作系統漏洞常常難以完全避免,然而某個漏洞一旦被發現,開發廠商都會在第一時間發布安全更新對問題進行修復。以這次勒索病毒為例,事實上早在一個月前微軟就公布了漏洞警告和補丁,提供了安全更新,那些開啟自動更新及時修復了漏洞的用戶,他們可以用省下的三個比特幣吃著火鍋唱著歌,完全不用擔心麻匪。

所以請划重點:操作系統安全更新非常重要,不論個人用戶、企業用戶還是系統管理員,不論伺服器,桌面還是移動終端,不論Windows,Linux還是MacOS,都應該儘可能及時地從操作系統廠商處獲取安全更新。

其次,殺毒軟體也可以起到一定的安全增強的作用,多數殺毒軟體可以藉助病毒庫對已有病毒的特徵進行分析比對,一旦發現用戶即將運行的程序中含有病毒或惡意程序,會及時提醒用戶,甚至自動清除。因此,殺毒軟體可以在很大程度上防禦已知的、以被動方式入侵系統的病毒。

那麼,積極地安全更新、安裝殺毒軟體就可以解決所有病毒威脅了么?很不幸,事實並非如此。安全更新和殺毒軟體之於病毒威脅正如強身健體之於疾病隱患,可以大幅降低幾率,卻難以完全避免。為什麼?這要從零日(0-day)漏洞說起。

零日漏洞,聽起來就很霸氣的一個名字,彷彿給人一種世界末日的感覺。它並不是指具體的某個或某類漏洞,而是指被黑客發現后立刻用來發起攻擊的漏洞,這些漏洞尚未公開,用戶不知道,軟體廠商也不了解,應對時間為零。所以,這類漏洞沒有檢測工具,沒有修復方法,傳統被動升級防禦、病毒特徵比對的方式毫無用處,一旦被用來發起攻擊,普通系統是毫無招架能力的。那麼有沒有可以防禦零日漏洞的安全的操作系統呢?

多年前,永恆之藍的始作蛹者NSA為了防禦自家系統,開發了一套安全框架,多年後這套框架通過開源組織進入了Linux內核,這就是SELinux。作為造成這次世界性災難的幕後大boss,NSA為自己定製的SELinux又是怎樣的一套防具呢?

SELinux全稱Security Enhanced Linux ,是針對Linux的全面安全增強,相比一般的發現漏洞-修復漏洞這種被動挨打的模式,SELinux具備主動防禦能力,可以抵禦包括零日漏洞在內的多種攻擊。那麼SELinux是如何做到的呢?

訪問控制是操作系統安全體系中的最核心最關鍵的機制,它決定了系統中什麼樣的資源可以被哪些用戶以什麼樣的方式來訪問,也就是說普通用戶能做什麼,入侵者能做什麼,應用軟體能做什麼,惡意軟體能做什麼,都是訪問控制系統決定的。SELinux的核心訪問機制是強制訪問控制,又叫MAC(別想多了,不是蘋果電腦,也不是網卡地址,是Mandatory Access Control),SELinux的安全特性是建立在MAC基礎之上的。

幾乎所有操作系統中都有一個身影,叫管理員,Administrator也好,root也好,都是一群在系統中權力無限大,對任何資源都有完全訪問許可權的傢伙。多數系統服務是以管理員許可權運行的,如果它們存在漏洞,被劫持去做一些它們本不該做的事情的時候,是不會阻攔的,因為它無法區分某個動作是程序正常行為還是惡意行為,在它眼裡,身份就是權力的象徵,只要認可了你的管理員身份,你說什麼都是對的,你做什麼都是合法的。

MAC機制又是怎樣的呢?MAC是一個充滿秩序的世界,一個每天需要早請示,晚彙報,一舉一動要提出申請的世界。在MAC中,一切訪問計劃都要事先寫入安全策略,沒有明確的策略允許的任何訪問都會被禁止。假設我們有一個存在緩衝區溢出漏洞的文件共享服務,與多數系統服務一樣使用管理員許可權運行。攻擊者通過精心構建一個特殊的數據包發送給伺服器,使存在漏洞伺服器正常的執行流程被劫持,轉而執行修改管理員密碼的操作。在DAC控制下的傳統操作系統中,一旦攻擊生效,那麼管理員密碼會被這個平時八竿子打不著的文件伺服器修改,攻擊者隨後可以很容易的登錄進入系統。而在MAC系統中,文件伺服器的可訪問的文件是嚴格受限的。

安全策略的定義了該服務可以訪問的所有資源,攻擊者在攻擊了文件伺服器后,希望修改管理員密碼,它需要訪問的是密碼管理文件,由於文件伺服器進程僅被策略僅允許訪問需要被共享的文件,因此對密碼管理文件的操作將被拒絕,攻擊失效。這種情況下最壞的情形是,攻擊者可能非法訪問共享文件,因為它仍在安全策略允許範圍內。儘管如此,一個系統級的安全漏洞對整個操作系統的影響被限制在了非常小的範圍內。

通過細粒度的劃分訪問許可權,將所有應用和服務的訪問限制在最小範圍內,這就是強制訪問控制保護系統不受已知及未知漏洞攻擊的原理。

了解了SELinux及其強制訪問框架后,看到攻防兩端都造詣深厚的NSA,你可能會驚嘆於矛尖盾厚的美國在信息安全領域的強大的實力。其實也很早就對信息安全領域展開了全面的研究,公安部對信息安全的各個領域提出了一些列標準,最早在GB 17859-1999標準中就根據需求將計算機信息系統由低到高,劃分為1-5共五個等級。在GB/T 20272-2006中更進一步對操作系統安全技術提出了具體要求。

從國標安全第三級開始要求操作系統提供強制訪問控制,除了要實現SELinux中的各類安全模型架構外,還根據最小特權原則開創性的引入三權分立的概念,將普通操作系統中許可權不受控制的管理員根據職責分解為系統管理員,安全管理員,審計管理員三個角色。系統管理員負責「行政」體系,也就是系統中的配置管理,類似網路配置、服務啟停(安全服務除外)、設備管理等等;安全管理員負責「立法」,負責安全策略制定、載入以及安全服務的開啟;審計管理員的職責類似「司法」,制定違規訪問的記錄,安全服務的關閉,三個角色的許可權之間互相制約,從根本上避免了惡意入侵者通過獲取管理員許可權對操作系統的全面控制。

同時標準還對用戶數據的私密性、完整性提出了嚴格的保護要求,要求操作系統通過安全標籤保障用戶數據不被非法讀取和篡改。國標安全四級除了在訪問控制和數據保護上提出更為嚴格要求之外,還要求設計者對操作系統的安全策略模型、安全功能模塊進行形式化驗證,並進行隱蔽通道分析,對系統抵禦攻擊能力進行評估,也是目前已有操作系統能達到的最高安全等級。目前普華、凝思等國產操作系統廠商已經開發出了符合國標安全四級的安全操作系統,提供了遠高於普通SELinux的底層安全保護。

儘管病毒與惡意入侵併非只針對操作系統,信息安全是全方位的,單一從操作系統層面無法解決所有的安全問題,然而作為所有上層應用的最底層軟體支撐,操作系統卻承載著一切上層軟體的安全機制,脫離操作系統的構建的安全體系,如同沙灘上的城堡,即使再堅固也將最終失去根基。

作者介紹:

孟健 ,普華基礎軟體首席架構師。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦