安全性監控跳島攻擊:防堵不當的依存性

Jesper M. Johansson

在上一期的《安全性監控》,我討論了使用 USB 快閃磁碟機攻擊網路的初步行動。這種攻擊是將受感染的 USB 快閃磁碟機插入電腦中,惡意程式碼隨後便開始自動執行,或是只要使用者幫點忙 (利用簡單的社交工程)

就可以執行。這種攻擊範圍只限於工作站本機,但是惡意程式碼顯然有辦法傳播到網路各處。我在即將出版的《Windows Server 2008 Security Resource Kit》(Microsoft Press®,2008 年) 這本書裡面,詳細討論了這類網路攻擊,本文將引述該章節的部分內容。

當然,其中一項防護措施就是禁止使用卸除式磁碟機。這項措施看來似乎相當謹慎,但使用者其實還是有辦法中途埋伏,採取無懈可擊的攻擊行動。對所有的環境來說 (除了最機密的環境之外),比較有效的措施還是妥善管理各種潛在風險,並且控制它們暴露於風險的程度。

此外,卸除式磁碟機也絕對不是入侵用戶端電腦的唯一途徑。還記得<安全性十大定律> (請參閱 microsoft.com/technet/archive/community/columns/security/essays/10imlaws.mspx) 嗎?第三定律的整體觀點仍然不變:「倘若不肖份子能夠毫無阻礙地存取您的實體電腦,您的電腦就淪陷了」。這段討論的大意是,如果攻擊者有權存取您的電腦,就表示那部電腦已遭入侵。如果攻擊者有辦法指使您在電腦上執行他的程式碼,他甚至可以從遠端犯案。所以您不妨把下面這句話當作第一定律:「倘若不肖份子能夠說服您在電腦上執行他的程式,您的電腦就淪陷了。」

您只要時時將十大定律謹記在心,就能確保電腦安全。這些定律不但被公認經得起各種考驗,而且不會有太大的變動 — 除非我們完全改變電腦的運作方式。所以,只要想想十大定律如何準確反映我們所提出的案例,就非確實遠離卸除式磁碟機不可。這一點,只要在登錄做少許變更就行了。

當然啦,您還得採用其他的防護層。您大可假設您有許多用戶端電腦已遭到入侵,或者正受到不把貴公司安全性當一回事的使用者所操控。因此,您必須減輕它們對網路其他部分所造成的衝擊,而且它也證明了瞭解、分析,以及減輕安全依存性的重要性。

安全依存性的定義

當一部電腦的安全性,必須仰賴另一部電腦的安全性時,這會產生安全依存性。也許您曾聽說,只要網域控制站 (DC) 被駭客入侵,就表示整個網路都遭殃了。把網域控制站視為所有網域成員安全性的依歸,可說是一針見血的說法。如果 DC 不安全,成員電腦也無法保持安全。如果駭客可以變更網域的安全性設定,那麼他只要在成員電腦的 Administrators 群組新增帳戶,就可以接管網域中的任何一部電腦。所以只要存在任何足以讓系統管理員入侵的罩門,都不是好玩的事。系統管理員對於它所管理的電腦,應該都具有完整的存取權。

電腦系統難免都有依存性,事實上,它們不但普遍存在,也經常有存在的必要;不過,這不表示所有的依存性都是妥當的依存性。在本文中,我要討論哪些是妥當、哪些是不當的依存性,然後再分析依存性的類型,以及減輕它們的方法。在《Windows Server 2008 Security Resource Kit》中,我會更詳細的解說特定的依存性,並且討論管理它們的方式。

妥當的依存性

一般說來,當比較不機密的系統仰賴比較機密的系統以求安全時,就屬於妥當的依存性。電腦和系統通常都可以根據它們的機密程度加以分類 (特定環境下的特定類別集合與一般討論並沒有關聯,最重要的是有繼承分類)。為了方便討論,假設我有兩種分類:工作站和網域控制站。在這個案例中,如果工作站為了安全必須仰賴網域控制站的話,並不成問題。網域控制站類別的機密性遠高於工作站,理當受到更嚴密的保護。

使用者帳戶也是同樣的道理。系統管理員有權存取使用者擁有的資料,這一點是可以接受的。這是因為系統管理員負責的範圍較廣,同時也能夠自由 (雖然不見得是直接或明顯) 存取電腦及其中所含的全部資料。如果您瞭解這一點,並且妥善管理這些電腦,這樣的依存性就不會有任何問題。

對於軟體,甚至可以透過相同的方式來分析。低機密性的軟體 (例如網頁瀏覽器) 理所當然能夠使用並且仰賴高機密性的軟體 (例如作業系統)。如果作業系統發現錯誤,即使網頁瀏覽器遭受新問題的威脅也不令人意外,說不定也不會馬上引起極度的關切 — 作業系統和其他重要的應用程式和資料,才是大家關切的焦點。這與修正錯誤的方式,或是將 Hotfix 安裝到哪裡有關 — 錯誤應該盡可能的切中問題加以修復。也正因如此,才得以充份發揮修正檔的保護影響力。所以,我們不應該是針對網頁瀏覽器中的問題尋找因應措施,而是要修復作業系統本身。

另外,您也可以變更設計,來移除依存性。比方說,您可以重新編寫網頁瀏覽器,降低它對作業系統的依存性。如果不打算像機密性低的元件 (網頁瀏覽器) 一樣使用安全性高的元件 (在此指作業系統) 的功能的話,不妨採用後者這個方法。

不當的依存性

看過前面解說何謂妥當的依存性之後,何謂不當的依存性就呼之欲出了。一般說來,機密性較高的系統絕對不能依賴機密性較低的系統來求取安全。

如果工作站遭到入侵,就表示網域控制站的安全性也已被破壞,那麼手邊的安全性問題可就嚴重了。若是網路的總體安全性必須仰頼該網路上每一部電腦的安全性,根本就保護不了這樣的網路。

用統計數字來說明的話,假如網路上的每一部電腦有 99.999% 的時候都很「安全」,您的網路的確相當安全。事實上,就當今的所有網路 (規模最小的網路除外) 而言,這個百分比可能相當不切實際。但是現在我們假設您的網路有 40,000 部電腦,每一部電腦有 .001% 的時候很容易入侵。這就表示您的整體網路可能有高達 40% 的時候不夠安全。

當然,如果依存性沒有妥善管理的話,只需要一部電腦那 .001% 的時間就足以入侵整個網路。這麼說來,網路到底有多安全呢?很顯然,比起機密性低的系統,機密性高的系統絕對是主要的受保護對象。

這個論點也可以延伸到使用者帳戶和軟體。比方說,新的 Terminal Services client for Windows® 容許您儲存使用者名稱和密碼,以進行實際透明化的終端機服務登入。這些認證都是使用認證管理員 API 來儲存,並且由主要登入工作階段所用的認證加以保護。

這麼一來就產生安全依存性了。假設現在有位網路系統管理員登入她的個人工作站,她使用這個工作站來收發電子郵件、瀏覽網頁以及進行其他一般資訊工作者的工作。當然,這些動作是使用低權限的網域帳戶來進行。

這位系統管理員在某段時間連接到其中一個網域控制站執行一些管理工作。她使用終端機服務用戶端來執行這個動作,並且為了方便日後連線,她選擇儲存密碼。這麼一來,就產生一個 (也許是兩個) 不當的安全依存性了。第一,她的網域系統管理員帳戶認證現在是受到她自己的低權限資訊工作者認證所保護。如果這個低權限使用者帳戶遭到入侵,網域系統管理使用者帳戶也會受到危害,最後導致整個網域淪陷。

第二個依存性是因為她在非網域控制站輸入網域系統管理認證而產生。除非她的個人工作站受到與網域控制站同級以上的保護 (這大概不可能),否則就會產生網域控制站仰賴使用者個人工作站安全性的依存性。比方說,如果同一辦公室內有位員工心存不滿,在網路系統管理員的工作站安裝一個按鍵記錄器,這時候就可以擷取到網域系統管理認證。您只要在非網域控制站輸入網域系統管理認證,就等於把整個網域暴露在非網域控制站上所有的安全性漏洞。

假設現在有一個攻擊者在網域系統管理員目前登入、或者曾經登入或者即將登入的電腦上,插入一個卸除式磁碟機,這個網域系統管理員就會遭到入侵,淪陷範圍甚至會延伸到整個網域。所以您非得瞭解這種情況,才能加以防範。當然軟體也一樣,當一個安全應用程式必須仰賴不安全應用程式的功能來執行某些工作時,也會發生同樣的情況。

分析攻擊行為

我之前曾說過,當惡意卸除式磁碟機插入電腦時可能會發生的狀況。不過這也許只在最初有插入磁碟機的電腦,才比較明顯。因此,我們假設那部電腦有加入網域,如 [圖 1] 所示。

[圖 1] 理想的網域依存性

[圖 1]** 理想的網域依存性 **

此處示範的案例是理想的依存性。這些箭頭都有方向,並且是指向依存性的來源。舉個例說,工作站的安全性仰賴網域控制站的安全性,而使用者的安全性仰賴工作站的安全性。攻擊者也許可以入侵工作站,進而入侵使用者放在該工作站的所有資訊,不過會將入侵的範圍隔離起來,限於該處。

但是萬一登入該工作站的使用者,是伺服器上本機 Administrators 群組的成員,而且網域系統管理員也經常登入該伺服器,那麼依存性就變成如 [圖 2] 所示。

[圖 2] 遭到入侵的網域依存性

[圖 2]** 遭到入侵的網域依存性 **

只要變更一下誰登入了那些電腦的假設,整個網路的安全性都會遭受危害。由於網域系統管理員會登入伺服器,因此網域控制站以及整個網域的安全性,都會仰賴該伺服器的安全性。

如果將伺服器管理得網域控制站一樣安全,那就沒什麼關係。但是此處登入該工作站的使用者,是伺服器上 Administrators 群組的成員。因此伺服器的安全性,就得仰賴工作站的安全性。換句話說,整個網域的安全性,完全掌握在工作站的安全性手中。您猜怎麼著?工作站的使用者,竟然就在毫不知情的情況下執行攻擊者的工具。

在現今首重資訊安全性的世界裡,大概找不到比安全依存性更需要深入瞭解的概念。如果您開始分析網路,並且努力瞭解依存性,十之八九都會發現不當的依存性。最糟的情況是 (其實這種情況遠比您想像的更常見),整個網路的安全性,都得仰賴整個網路 — 換句話說,每一部電腦的安全性,或多或少都要仰賴其他每一部電腦的安全性。因此,在這類的環境裡,不可能有任何適合且實用的風險管理策略,因為要控制當中的關係根本不可能,而複雜性更是難理解。唯有分析並管理依存性才是解決之道。

在本文中,我只簡短介紹依存性的概觀,以及分析和降低依存性的方法。如需更詳細的資訊,不妨參考我的著述《Windows Server 2008 Security Resource Kit》。我有整整一章都在說明如何運用複雜的技術 (例如伺服器與網域隔離) 以及普通的技術 (例如系統管理帳戶管理) 來分析和管理依存性,來保障網路的安全。

感謝 David LeBlanc 的協助,使本文的雛型構想成形。

Jesper M. Johansson 是負責軟體安全性問題的軟體架構設計人員,也是《TechNet Magazine》的特約編輯之一。他擁有 MIS 博士學位,在安全性領域有超過 20 年的經驗。

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.