漏洞的分類
按照漏洞的形成原因,漏洞大體上可以分為程序邏輯結構漏洞、程序設計錯誤漏洞、開放式協議造成的漏洞和人為因素造成的漏洞。
按照漏洞被人掌握的情況,漏洞又可以分為已知漏洞、未知漏洞和0day等幾種類型。
程序邏輯結構漏洞
這種類型的漏洞有可能是編程人員在編寫程序時,因為程序的邏輯設計不合理或者錯誤而造成的程序邏輯漏洞。這種類型的漏洞最典型的要數微軟的Windows 2000用戶登錄的中文輸入法漏洞。非授權人員可以通過登錄界面的輸入法的幫助文件繞過Windows的用戶名和密碼驗證而取的計算機的最高權限。
這種類型的漏洞也有可能是合法的程序用途被黑客利用去做不正當的用途。這種類型的漏洞最典型的就是后面案例中提到的Winrar的自解壓功能,程序設計者的本意是為了方便用戶的使用,使得沒有安裝Winrar的用戶也可以解壓經過這種方式壓縮的文件。但是這種功能被黑客用到了不正當的用途上。
這種漏洞用一個比喻可能更容易理解。打一個比方來說,你開了一扇門,在門上開了一個狗洞,專門為了狗方便出入。正常情況下,人應該用鑰匙打開鎖才能進來。可是有個家伙他發現利用某個竅門人也可以從狗洞進出,那么這個從狗洞進出的方法就可以看著是一個安全漏洞。
程序設計錯誤漏洞
還有一種類型的漏洞是編程人員在編寫程序時由于技術上的疏忽造成的漏洞。這種類型的漏洞最典型的是緩沖區溢出漏洞,它也是被黑客利用得最多的一種類型的漏洞。下面的章節我們會詳細介紹這種緩沖區溢出漏洞。
開放式協議造成的漏洞
目前,國際互聯網的通信采用的是具有開放性的TCP/IP協議。因為TCP/IP協議的最初設計者在設計該通信協議時,只考慮到了協議的實用性,而沒有考慮到協議的安全性,所以在TCP/IP協議中存在著很多漏洞。比如說,利用TCP/IP協議的開放和透明性嗅探網絡數據包,竊取數據包里面的用戶口令和密碼信息;TCP協議三次握手的潛在缺陷所導致的拒絕服務攻擊等。在下面的章節中會介紹一些利用TCP/IP協議的漏洞進行攻擊的一些案例。
人為因素造成的漏洞
一個系統如果本身設計得很完善,安全性也很高,但管理人員安全意識淡薄,同樣的會給系統留下漏洞。譬如說,系統本身非常完備安全,但系統登錄所需要的管理 員帳戶或口令,可是因為設置過于得簡單而被黑客猜解出來了,那么其他的環節再安全也沒有絲毫意義;再或者雖然管理員設置了很復雜的密碼,可是他把密碼寫在 一張紙上,并隨手扔到廢紙簍里,那么也同樣有可能造成密碼泄露而導致系統被黑客入侵。
已知漏洞
已知漏洞是指已經被人們發現,并被人們廣為傳播的公開漏洞。這種類型的特點是漏洞形成的原因和利用方法已經被眾多的安全組織、黑客和黑客組織所掌握。安全 組織或廠商按照公布的漏洞形成原因和利用方法,在他們的安全防護產品中或安全服務項目加入針對相應類型漏洞的防護方法。黑客和黑客組織利用公布的漏洞形成 原因,寫出專門的具有針對性的漏洞利用程序文件,并能繞過安全防護軟件。比如說針對某個IE瀏覽器版本的IE漏洞利用文件,或者他們干脆利用一些漏洞公布站點上提供的漏洞利用程序文件并不加任何修改地去攻擊互聯網上的計算機。
產生漏洞的軟件的開發商則會針對被公開的漏洞的信息,修補他們開發的程序以供他們的用戶修補已經存在漏洞的軟件。
未知漏洞
未知的漏洞則是指那些已經存在但還沒有被人發現的漏洞,這種類型漏洞的特征是雖然它們沒有被發現,但它們在客觀上已經存在了,它們帶給計算機網絡安全的是隱蔽的威脅。如果它們哪一天被黑客有意或無意的找出來后就會對計算機網絡安全構成巨大的威脅。
所以軟件開發商、安全組織、黑客和黑客組織都在努力的發現漏洞,可以說誰先發現了漏洞,誰就可以掌握主動權。如果是軟件開發商和安全組織先發現了漏洞,他們就可以在安全防護上取得主動權;如果是黑客或黑客組織先發現了漏洞,他們就可以在攻擊上取得主動權。
0day漏洞
所謂 0day 漏 洞是指已經被發掘出來,但還沒有大范圍傳播開的漏洞,也就是說,這種類型的漏洞有可能掌握在極少數人的手里。黑客有可能在這種類型的漏洞的信息還沒有大范 圍的傳播開的時候,利用這段時間差攻擊他們想要攻擊的目標機器,因為絕大多數用戶還沒有獲取到相關的漏洞信息,也無從防御,黑客要想得手還是很容易的。