如果你是一名負責搭建嵌入式系統(或軟件、設備、網絡等)的工程師或開發者,那么你排在最高優先級之一的事情是(或應該是)鑒別并最大限度的減少潛在的數據安全漏洞。要想有效的實現這個目標,你需要了解系統是如何被黑客入侵的,最終要理解如何“像黑客一樣思考”。![]() 黑客攻擊利用的是漏洞,這些其中可能是設計缺陷、訪問控制薄弱、配置錯誤或者許多其他的問題等。這篇文章會深入探討黑客的思維,正如你所看到的,他們在發現和利用漏洞方面的過程和思維方式與工程師如何處理系統開發還是有很大不同的。 黑客的思維到底是怎樣的?下面的內容可能有趣、混亂或枯燥,所以準備一大杯咖啡讓我們深入探究一下。 黑客的心態和思維:執行任務 黑客與工程師之間最顯著的區別在于他們如何應對挑戰,工程師(和科學家,就此而言)是系統性的,首先會定義和分析問題,然后制定計劃(或假設),并對假設進行測試,最后對測試結果進行分析,不論成功和失敗都會得出結論。 這是科學的方法,數百年來人們都是采用這樣的流程,黑客則不會遵循這個流程。首先沒有什么計劃,而是當做是一個任務。黑客的計劃是不確定的,靈活的,記住一點黑客并不是在構建必須經過時間考驗的工程,相反他們要做的就是破解。他們不需要讓管理者或CEO滿意,他們關注的是完成所定義的任務。 工程師做事是系統化的,黑客則是務實的,他們的方法非常的實際。雖然會有一些相似之處,但核心的不同之處在于黑客們會竭盡全力完成他們的任務,此外他們不會關注那些對自己沒有幫助的結果,而且無需向其他人作出解釋。 這有時也被描述為列表 vs 路徑思考: • 科學家和工程師對列舉的每一項都會報告結果 • 黑客遵循路徑,他們會按一個思路一直繼續下去,知道這條路走不通 總而言之,工程師的目標是徹底,黑客的目標是有效。這些看似微小的細微差別一旦付諸實施則會顯現巨大的差別和影響。 常見的模式:殺傷鏈 當黑客侵入到某個環境或者系統時,他們通常會遵循一個共同的模式,稱為殺傷鏈(kill chain),當黑客對系統和網絡進行攻擊時,他們會尋找該環境中更高級別的訪問和操作權限(圖1)。最后當他們獲得足夠的訪問權限時,他們就可以竊取想要的數據或者植入惡意代碼。 ![]() 圖1:如果你能在殺傷鏈的早期抓住黑客,那么你才可以防止黑客攻擊的發生 黑客經常會在一個入侵環境中停留很長時間:平均100-140天,比如2013年零售連鎖企業遭遇了黑客攻擊,黑客使用了大概100多天的時間進行了全面的攻擊,如果你能在殺傷鏈的早期發現黑客就可以阻止黑客攻擊的發生。 需要注意的是大多數的黑客攻擊都是使用機器人自動完成的,雖然我們可以在描述實際執行這些操作是人為的,但是背后實際上是機器人完成了所有操作。 黑客的思維 黑客看待事物的角度是不同的,特別是以下幾點: • 觀察明顯的細節 • 想象最壞的情況 • 探索每一個潛在的訪問入口 • 喜歡一切數據 • 理解人是薄弱的環節 • 喜歡晦澀難懂的信息 • 尋找并利用后門 • 利用第三方漏洞 • 尋求憑據 • 清理垃圾 觀察明顯的細節 當你深入開發時很容易忽略某個明顯的弱點,不妨后退一步問問自己一些基本的問題,使用如下“五個為什么”評估一下: • 為什么你的產品要這樣做? • 為什么有這個必要? • 為什么要采用這種設計方式? • 為什么這樣是好的? • 為什么不換一種不同的方式? • 這個練習的目的是找出明顯的薄弱環節,黑客會發現它們,而且會比你想象的要快得多。 想象最壞的情況 最壞的情況是什么?它發生的可能性有多大?黑客一般沒有道德標準。當你的網絡或應用正深陷泥潭并努力恢復時,他們并不會感到同情,因此你需要制定計劃來處理那些更糟糕的情況。 然而還是要小心不要卷入所謂的“僵尸場景”中,也就是由于一系列的荒唐事件而引發的災難,大多數僵尸電影都是基于這個前提的。 探索每一個潛在的訪問入口 你必須知道任何人或任何事物訪問你系統的每一種可能的方式,黑客會進行所有的嘗試,并且很多次。你可能認為你的藍牙接口是超級安全的,但是有幾十種方法可以專門利用藍牙讓你的系統變得不安全,確保你對每個接口都進行了積極的測試,無論你的系統設計有多么的復雜。 喜歡一切數據 黑客們更喜歡數據或某些類型的數據,數據存儲也是黑客在環境中獲得持久性訪問的一種方式,你必須分析你的系統數據: • 數據是怎樣存儲的? • 數據是如何傳輸的? • 誰可以訪問這些數據? • 如何監控、管理和控制對數據的訪問? • 訪問日志是怎樣的?這些數據都到哪里去了? 理解人是薄弱的環節 黑客們明白人是數據安全方面的薄弱環節,我們不僅不穩定、不可靠,而且極易受到操縱,如果你的系統涉及任何這些有弱點的人(他確實有這些弱點),那么這就是你系統的弱點。 所有的信息安全問題通常歸結為人類的弱點。無論我們是否進行了錯誤的配置或編寫了錯誤的代碼,人都制造系統的一些弱點。假設用戶會犯錯誤,并且會有很多錯誤,因此我們要格外注意人的一些操作。 喜歡晦澀難懂的技術信息 黑客們都喜歡晦澀難懂的技術信息,他們會隨機挖掘出你幾年前存放的文檔,從而使用這些文檔的數據對你的系統發起攻擊,這也是破解新系統的樂趣之一。 當你向公眾發布某些技術數據類型時要謹慎,假設黑客們會得到并進行分析,如果你的產品是在一個開放的環境中開發的,那么你就更應該以更加安全的方式設計某些組件和功能特性。 尋找并利用后門 20世紀80年代的一部電影《戰爭游戲》讓很多黑客體驗到了黑客攻擊的滋味。電影中間有一個很棒的場景,一個計算機科學家責備他的書呆子同事把計算機系統的后門當做秘密:“Potatohead先生,這些后門不是秘密!” 他的話在現在看來一樣的真實,應用程序或設備的后門非常的常見,黑客們會尋找它們,它是侵入系統最古老和最可靠的技術之一,在《戰爭游戲》中就有展示,當然在今天也仍然適用。 利用第三方漏洞 盡管你可能會深切關注系統的安全性問題,但是你的供應商或合作伙伴是否也和你一樣的關注?黑客們通常會將第三方組件作為目標,因為通過獲取某一項技術就可以攻擊大量的相關目標。Heartbleed就是不安全的第三方組件造成系統風險的一個例子,Heartbleed是OpenSSL設計實現的一個缺陷,OpenSSL被應用到數百萬中產品中,這意味著一個漏洞足以使數百萬(可能是數十億)臺設備遭受到攻擊。 如果你的系統中集成有第三方組件,則會繼承該組件的所有弱點,雖然產品可能屬于其他人,但是你需要對其安全問題負責。 尋找憑據 合法的用戶賬戶是黑客們最終想要獲取的,一旦他們獲取了憑據,黑客就會升級他們的權限從而進入你的系統,此外使用合法憑據通常不會引發警報。 雖然你可能無法始終保護用戶的憑據(因為它在用戶的手中),但是你仍然可以防止惡意使用這些憑據,這就要從實施最小權限開始,也就是說用戶永遠不能擁有比他們需要更多的訪問權限,此外你應該積極的測試系統對于權限升級類型的攻擊。 清理你的垃圾 你的系統是整體的一部分嗎?一部分受到攻擊會讓其他部分也遭受到攻擊?給你的系統傳遞虛假數據會怎樣?這就是Stuxnet惡意軟件的工作方式。它會向工業控制系統提供虛假信息并讓系統過載,如果黑客們想竊取你的數據或進行破壞操作,那么可能就會像過多的網絡流量一樣使你的系統過載。 拒絕服務類型的攻擊很難阻止,當設計你的系統時,你需要考慮它是否有可能會過載,并建立相應的機制來阻止或忽略大量的輸入數據,此外時鐘都需要驗證發送給你系統的數據是否是可信任的,這一點非常的重要。 總結 作為一名設計工程師,確定并最大限度的減少潛在的數據安全漏洞是主要目標,黑客的工作方式與工程師工作方式大不相同,他們并不是采用系統化的方法,他們有屬于自己的殺傷鏈方法,按照這種方式他們會持續不斷的尋找到漏洞來利用,“像黑客一樣進行思考”要求你以不同的方式來看待你設計的系統,其中一部分意味著理解漏洞和解決方案的技術細節,然而更重要的部分是需要觀察一些明顯的缺陷,理解人所犯的一些錯誤和疏忽,了解黑客會尋找什么以及他們是如何利用這些線索的。 貿澤電子致力于幫助工程師開發更安全的系統,參加“像黑客一樣思考”網絡研討會(與Anitian公司聯合舉辦)并且訂閱我們出版的數據安全電子雜志。 此外請大家繼續關注本系列博客的第2部分,將向大家介紹搭建安全系統的一些技巧。 現在就查看第2部分! Andrew Plato是一名在信息安全行業有著20年從業經驗的資深人士,1995年當微軟開始支持第一個互聯網電子商務網站時,Andrew無意中使用SQL注入的方式入侵了該網站。這次事件啟發Andrew成立了Anitian,其使命就是幫助人們了解保護數據和系統的復雜性,從那時起Andrew參與了數千個安全項目并撰寫了大量的文章,而且還就IT安全相關的問題進行了數百次的演示。Andrew組建了一支出色的安全分析師團隊,他致力于搭建具有創新、協作式的高度信任的工作環境。Andrew對安全性、風險、合規性方面提出的直率且務實的觀點使他成為備受矚目的演講者、作者和顧問。 原文鏈接: https://www.mouser.cn/blog/think ... kill-chain-and-more ![]() |