淺談網路安全風險評估
2015-08-25
筆者曾從事網路安全風險評估工作,很早就想寫這個話題了,但覺得寫得太細的話,寫不完,那暫且就先「淺談」。
PS:僅從個人認識角度來談,如有雷同,就對了。
什麼是網路安全風險評估
風險評估(Risk Assessment)的目的是:
識別系統面臨的威脅(Threat)
判斷這種威脅轉變成現實後可能帶來的影響(Impact)
判斷這種轉變的可能性或難易度(Probability)
風險(Risk)是威脅因素(Threat Agent)利用漏洞(Vulnerability)使威脅(Threat)成為現實,從而讓資產(Asset)受到影響(Impact)的潛在可能。
這句話是不是有點拗口,那就對了:)
簡化一下:
風險(Risk)是潛在可能。可以理解為:
威脅(Threat)是產生風險(Risk)的外因,漏洞(Vulnerability)則是內因,兩者的共同作用產生了風險(Risk)。不是所有的漏洞(Vulnerability)都需要立即消除,只有存在對應的威脅(Threat)時,該漏洞(Vulnerability)才會導致風險(Risk),但系統的所有漏洞(Vulnerability)都應該管理起來,因為環境在變,新的威脅(Threat)隨時可能出現。威脅分析的作用,就是為決策者判斷哪些系統漏洞需要優先解決提供依據。
Risk = Threat *Impact * Probability
Threat Agent是Threat的製造者
Asset是Risk的承擔者Impact是Threat轉變為現實後對Asset的影響Attack是Threat Agent讓Threat轉變為現實產生Impact的方法(Threat materialize)Probability是這種轉變的難易程度或可能性Vulnerability是導致Attack成功的Asset的某種內在屬性Risk Level(High/Middle/Low)使得我們可以為Risk制定合適的Safeguard
網路安全風險評估的步驟
網路安全風險評估可以在產品開發周期的前期和後期進行。
前期進行主要為了做安全加固:
資產識別/系統分析 > 威脅分析 > 識別風險 > 制定消減措施 > 產品響應
後期進行主要為了做安全測試來檢驗安全效果(審計/稽核):
資產識別/系統分析 > 威脅分析 > 安全測試設計 > 安全測試執行 > 安全問題定級 > 制定消減措施 > 產品響應
資產識別/系統分析
資產識別是指識別出被評估系統中的關鍵資產,也就是回答「需要保護什麼?」這個問題。一般來說,一個系統的關鍵資產是這個系統的業務和數據,包括核心業務組件、用戶的數據、用於鑒權和認證的密碼、密鑰等。
系統分析是進行威脅分析的前提,只有充分了解被評估系統的功能、結構、業務流等信息後,威脅分析才有依據。系統分析也為漏洞識別提供需要的輸入。系統分析的第一個步驟是了解系統及其所在的解決方案對外提供的業務功能,知道系統能夠做什麼,對被分析系統有一個High Level的感性認識,之後通過多個維度(viewpoint)對系統進行分解,最後通過業務流將各分解後的組件串聯起來,實現「整體-局部-整體」的分析過程。需要注意的是,在進行系統分析前,必須根據項目的目的和限制條件對系統分析進行約束,否則,系統分析是分析不完的。
下面舉一個例子。筆者以前從事的一個Android指紋認證系統的解決方案級的安全評估(相關敏感信息已經刪掉),做系統分析的時候,需要對整個業務有一個概括理解,並畫出總體的系統架構圖。這個指紋認證系統,涉及Android、Trustzone、APP客戶端、APP後台等,有什麼介面,如何交互,關鍵資產存儲在哪裡,都需要在圖中分析出來:
做完這種系統架構圖後,再去根據業務場景或者系統組件來進行多維度的細化分析,方式五花八門,沒有什麼固定套路,只要分析清楚了就OK。一般來說,可以做以下的分析:
系統的組網情況(處在什麼位置/周邊系統/…)
硬體架構分析(設備/單板/匯流排/CPU/…)
軟體架構分析(OS/DB/Platform/Web後台/…)內/外部介面分析(維護介面/業務介面/調試介面/…)典型業務流程/場景分析(業務場景1/業務場景2/…)管理/維護場景分析(近端維護場景/遠程維護場景/…)關鍵事件分析(登錄/鑒權/認證/數據讀寫/…)
威脅分析
學習如何做威脅分析之前,需要了解什麼是威脅。
Threat:
A set of potential incidents in which a threat agent causes a threat event to an asset using a specific entry point into the system那麼一般來說有什麼威脅呢?可以從安全三元組來理解:
CIA(confidentiality, integrity, and availability),指「機密性」、「完整性」、「可用性」,加上「抗抵賴性」是需要確保的系統安全屬性。
威脅分類:
? 對機密性的威脅
如Information Disclosure:通過嗅探、暴力破解等手段竊取用戶身份,認證信息,仿冒合法用戶訪問系統。攻擊者非法獲得系統中保存的或傳輸過程中的機密數據,如用戶認證信息、用戶業務數據、系統代碼等? 對完整性的威脅如Tampering with Data:通過修改發送給系統的數據或從系統收到的數據,影響系統業務邏輯,比如繞過認證機制、欺騙計費系統、執行越權操作等? 對可用性的威脅如Denial of Service:通過Flood、畸形報文等攻擊等手段造成系統不能提供正常的服務? 對抗抵賴性的威脅通過修改系統訪問日誌、審計日誌來隱藏攻擊痕迹、修改業務行為記錄
威脅分析就是識別威脅,根據「威脅」的定義,實際上是要識別構成威脅的各組成部分,來總結出一個句子:
攻擊者(威脅源),利用XXX漏洞(漏洞),通過XXX方式(攻擊界面、攻擊手段),對XXX(關鍵資產)產生了XXX威脅(後果)
說白了,這個階段就是造句。
但威脅分析是整個安全評估最難的環節,需要採用多種方法去YY有什麼威脅、有什麼可能性、有什麼攻擊面、外部攻擊者如何攻擊系統、內部攻擊者(內鬼)如何攻擊系統。
雖說威脅分析套路很多,只要識別出威脅就可以,但業界也有一些比較成熟的建模,比如X.805分層分析、攻擊樹模型、微軟的STRIDE威脅建模等。這裡就不再詳述,請自行google。
這裡給個STRIDE作為例子:
分析完威脅,就要根據這些威脅點來進行安全測試。
這裡就有很多領域,比如web安全(前端+後端)、Android/IOS安全、雲安全等等
未完待續
推薦閱讀:
※信息相關的角色和責任(Day013)
※Python3學習系列(四):編寫屬於自己的郵件偽造工具
※你可能被自己的耳機監聽了
※黑客如何「凌空點穴」,隔空搞數據?
※CIA泄露資料分析(黑客工具&技術)—Windows篇