當我們在保護自己或是公司的時候,了解駭客是怎麼想的,透過駭客思維思考自己有沒有一些潛在漏洞或問題也非常重要。
在EP33 - 怎麼確保產品安全性?中所提及的威脅模型分析 Threat Modeling以及滲透測試 Pentesting都是透過駭客和攻擊者的角度來檢視自己很常見的例子,但這種知己知彼的思考模式還是可以幫助我們該怎麼樣保護自己的。
前陣子看到下面這篇文章在討論駭客在攻擊一個目標前會思考的六個問題,看看駭客在真正發動攻擊以前可能會考量的點,透過這個方式看看自己有沒有不小心變成待宰羔羊了。
文章連結:David “moose” Wolpoff - 6 Questions Attackers Ask Before Choosing an Asset to Exploit
站在駭客的角度,在攻擊一個目標前能夠蒐集到越多的資料,對目標有越多的了解是越好的。因此,當駭客計畫要攻擊一個目標時,做的第一件事往往就是偵查與搜集資料。OSINT(公開來源情報)就很常是駭客用來搜集資料的手法。在了解目標以後駭客才有辦法去研究適合的攻擊策略與手法。
雖然在什麼都不知道的情況下不是不能直接嘗試進行攻擊,但這麼做往往會花費更多時間,也可能會打草驚蛇,讓目標發現有人正在試著攻擊他們,這有可能導致目標加強防禦讓攻擊變得更困難,甚至留下更多足跡不小心讓自己被抓到。
站在防禦的立場可以檢查一下自己在網路上有哪些資訊是公開的,是不是有一些不必要資訊也被公佈在網路上了。
舉例來說,架設網站或伺服器時,可能會在洩漏了所使用的服務名稱和版本,假設使用的伺服器是 Apache 2.4.33,攻擊者就可以去研究看看 2.4.33 這個版本的 Apache 有沒有一些已知漏洞,如果有的話又能被如何利用。
另一個例子是,公司在求職網發布徵人啟事時,很常會在技能欄位提供許多公司內部使用的系統資訊。像是以下圖來說,我們就可以透過這起徵才廣告知道這家公司主要是使用 Windows 的伺服器配合 MSSQL 資料庫。
如果我們能夠把這些資訊隱藏,那麼駭客就會需要花更多的時間跟精力才能得到這些資訊,攻擊成本也就變高了。
而站在一般用戶的角度的話,我們可以去檢查自己在社群媒體和網路上分享了多少我們自己的資訊,這些資訊是被公開的分享在網路上的嗎?還是只有自己的好友知道?這些資訊除了隱私上可能造成的疑慮,在未來也有可能被攻擊者搜集,變成用來對我們進行社交工程可能的資訊。
方法可以參考EP8 中的 保護自己的個資
即使是在同一個組織或系統內部,不同的伺服器和電腦也會有不同的目的和不同的價值。
駭客在選擇攻擊目標的時候,如果是在其他條件相同的情況下,很自然的會比較頃向針對比較有價值的那些東西。因此不同的目標在相似的條件下可以被拿來作為入侵的突破口的時候,駭客通常會選擇比較有價值的那個來作為目標。
在第一個問題的時候有提到如果提供太多資訊,就有可能會讓攻擊者知道自己使用的系統有哪些潛在漏洞,而這個部分就可以透過 CVE 去了解潛在漏洞。
CVE(Common Vulnerability and Exposures 常見漏洞與披露)是一個包含了快 15 萬個常見的資安漏洞或弱點的資料庫,各個漏洞都被整理成統一的格式,並編上編號,在溝通與管理上可以更精確地了解對方指的是哪個系統的哪一個漏洞。
像是 CVE-2019-0708 就是在 2019 年登記,編號 0708 的漏洞,透過搜尋這串字,我們就可以找到許多關於這個漏洞的相關資訊,包含其他人已經寫好這個漏洞的攻擊工具。
駭客會利用 CVE 或是其他類似的系統,快速地尋找某個特定版本系統上的漏洞和攻擊方式。
如果能找到已知而且可以被拿來利用的漏洞的話會替駭客省下不少的時間和精力,因此目標有沒有已知而且可以被開採的漏洞對駭客來說會是很重要的一個考量點。
面對這一點,身為防守方的我們如果能夠很即時的更新所有的系統,確保所有已知的漏洞都有被修補的話,就可以大大增加駭客在這方面的困難度,也就是因為這樣,我們才會不斷的提醒大家更新的重要性。
大部分的時候,重要的資產會有比較多防護,因此有漏洞的那個系統往往不會是最有價值的目標,也因此駭客在透過這些漏洞找到了可以入侵目標的突破口以後,還會要想辦法在目標的系統內潛伏跟移動接近有價值的那些資產,即使在成功入侵了對方的系統以後,也要想辦法不被發現。
除了在第一時間不要被發現以外,駭客也要注意不要留下太多的入侵足跡,不然這些足跡在目標發現自己被攻擊了以後,會被用來追查駭客的身份。留下越多紀錄跟足跡,就有越高的機率會被抓到。
而在大多數的系統中,會有防毒軟體、入侵偵測系統、事件管理系統等等的工具,這些工具會時時刻刻監控和記錄著系統內的一舉一動,目的就是為了能夠及時地找到入侵的攻擊者,因此駭客除了要找的入侵系統的突破口以外,也要想辦法在系統中隱藏自己。
要成功挖掘一個漏洞並用它來進行攻擊並不是一件容易的事,過程中所需要的時間跟精力都是攻擊成本。
即使是前面提到有已知漏洞的目標,駭客也是會需要依據目標的系統環境去做調整和客製化,更別提是沒有已知漏洞的系統。
而且很多時候為了研究和測試,駭客還會需要自己架設一個相似的系統,如果是遇到比較少人用的系統,網路上比較少相關說明跟資訊,駭客就還要自己花時間慢慢研究。
這些細節都會對駭客攻擊成功的可能性以及時間成本有很大的影響的,因此駭客在真的開始攻擊以前也會考慮這方面的可行性。
如果我們能夠提高攻擊者的攻擊成本就可以降低他們攻擊的意願
這個問題有點像上面幾點的綜合體,更宏觀的去考慮要不要攻擊
就像一般的事業一樣,也要考慮投資報酬率
除了APT這類型較特殊的駭客集團以外,大部分的駭客所擁有的時間、金錢跟資源都是有限的。因此目標能否帶來相應的報酬是很決定性的考量因素。
除了投資報酬率以外,可重復性也是一個很重要的考量。如果今天花時間開發的漏洞可以大規模的用在很多的目標上的話,一定是會讓駭客比較有動力的。
像是過去,會有蘋果電腦不會中毒的迷思就是因為過去蘋果電腦的用戶跟 Windows 電腦比起來少太多了,因此駭客寧願把時間跟精力花在開發 Windows 的惡意程式上,這樣只要成功開發一款惡意程式,就能夠感染大量的目標,駭客也就能有更多的獲利。同樣的道理,蘋果電腦的用戶在最近幾年持續增加,也因此 Mac 上的惡意程式也越來越多。
看完了這六個問題,大家應該會發現駭客在發動攻擊以前會考慮滿多事情的。
站在防禦的角度來看,要建立一個完美沒有弱點的系統是不可能的,但如果我們在了解了駭客的考量點以後,從這些角度下手,透過Defense in Depth 縱深防禦的方式結合不同的工具和手法,從不同的面相讓駭客的攻擊成本增加、並且讓他們認為不值得花這些時間和成本在我們身上的話,他們就會把目標轉移到其他公司了,這麼做就可以大大的減少我們成為目標的機率。
同樣的道理也適用在保護自己上面,如果我們在每天上網使用手機電腦的過程中,利用之前教大家的方法保護自己,並且多注意多小心一點,其實就可以讓自己比大多數的人都更難攻擊,也就會降低自己成為目標的機率。