黑客入門之漏洞分類及進一步發(fā)掘

漏洞是一個永遠的童話。實現(xiàn)劫富濟貧的英雄夢想,實現(xiàn)打破技術(shù)壟斷的自由藍圖,發(fā)現(xiàn)漏洞的人,利用漏洞的人,修補漏洞的人,喜歡漏洞的人,害怕漏洞的人就象這個多彩的世界一樣,他們構(gòu)成了計算機網(wǎng)絡(luò)安全世界永遠的角色!
現(xiàn)在很多口必稱漏洞,把漏洞的利用當自己的絕招和寶貝,其實漏洞是什么,我們或許存在著很多誤解。下面結(jié)合相關(guān)資料和我個人的理解,我們今天就講講什么是漏洞,這個十分基本的問題。
1、什么是漏洞
專業(yè)上講漏洞是在硬件、軟件、協(xié)議的具體實現(xiàn)或系統(tǒng)安全策略上(主要是人為)存在的缺陷,從而可以使攻擊者能夠在未授權(quán)的情況下訪問或破壞系統(tǒng)。但是,其實這是一個綱目,很多書上定義都不同,這里算是比較全面的。怎么理解呢,還是有例子來說吧,這幾十年來,漏洞太多了,不能一一說。
2、漏洞的狹義范圍
漏洞會影響到很大范圍的軟硬件設(shè)備,包括作系統(tǒng)本身及其支撐軟件,網(wǎng)絡(luò)客戶和服務(wù)器軟件,網(wǎng)絡(luò)路由器和安全防火墻等。怎么理解呢,就是在這些不同的軟硬件設(shè)備中都可能存在不同的安全漏洞問題。
3、漏洞的廣義范圍
這里的漏洞是指所有威脅到計算機信息安全的事物。包括人員、硬件、軟件、程序、數(shù)據(jù)。
4、漏洞的長久性
漏洞問題是與時間緊密相關(guān)的。一個系統(tǒng)從發(fā)布的那一天起,隨著用戶的深入使用,系統(tǒng)中存在的漏洞會被不斷暴露出來,這些早先被發(fā)現(xiàn)的漏洞也會不斷被系統(tǒng)供應(yīng)商發(fā)布的補丁軟件修補,或在以后發(fā)布的新版系統(tǒng)中得以糾正。而在新版系統(tǒng)糾正了舊版本中具有漏洞的同時,也會引入一些新的漏洞和錯誤。因而隨著時間的推移,舊的漏洞會不斷消失,新的漏洞會不斷出現(xiàn)。漏洞問題也會長期存在。
5、漏洞的隱蔽性
系統(tǒng)安全漏洞是指可以用來對系統(tǒng)安全造成危害,系統(tǒng)本身具有的,或設(shè)置上存在的缺陷。總之,漏洞是系統(tǒng)在具體實現(xiàn)中的錯誤。比如在建立安全機制中規(guī)劃考慮上的缺陷,作系統(tǒng)和其他軟件編程中的錯誤,以及在使用該系統(tǒng)提供的安全機制時人為的配置錯誤等。
系統(tǒng)安全漏洞是在系統(tǒng)具體實現(xiàn)和具體使用中產(chǎn)生的錯誤,但并不是系統(tǒng)中存在的錯誤都是安全漏洞。只有能威脅到系統(tǒng)安全的錯誤才是漏洞。許多錯誤在通常情況下并不會對系統(tǒng)安全造成危害,只有被人在某些條件下故意使用時才會影響系統(tǒng)安全。
6、漏洞的必然被發(fā)現(xiàn)性
漏洞雖然可能最初就存在于系統(tǒng)當中,但一個漏洞并不是自己出現(xiàn)的,必須要有人發(fā)現(xiàn)。在實際使用中,用戶會發(fā)現(xiàn)系統(tǒng)中存在錯誤,而入侵者會有意利用其中的某些錯誤并使其成為威脅系統(tǒng)安全的工具,這時人們會認識到這個錯誤是一個系統(tǒng)安全漏洞。系統(tǒng)供應(yīng)商會盡快發(fā)布針對這個漏洞的補丁程序,糾正這個錯誤。這就是系統(tǒng)安全漏洞從被發(fā)現(xiàn)到被糾正的一般過程。
系統(tǒng)攻擊者往往是安全漏洞的發(fā)現(xiàn)者和使用者,要對于一個系統(tǒng)進行攻擊,如果不能發(fā)現(xiàn)和使用系統(tǒng)中存在的安全漏洞是不可能成功的。對于安全級別較高的系統(tǒng)尤其如此。
系統(tǒng)安全漏洞與系統(tǒng)攻擊活動之間有緊密的關(guān)系。因而不該脫離系統(tǒng)攻擊活動來談?wù)摪踩┒磫栴}。廣泛的攻擊存在,才使漏洞存在必然被發(fā)現(xiàn)性。
7、為什么要緊跟最新的計算機系統(tǒng)及其安全問題的最新發(fā)展動態(tài)
脫離具體的時間和具體的系統(tǒng)環(huán)境來討論漏洞問題是毫無意義的。只能針對目標系統(tǒng)的作系統(tǒng)版本、其上運行的軟件版本以及服務(wù)運行設(shè)置等實際環(huán)境來具體談?wù)撈渲锌赡艽嬖诘穆┒醇捌淇尚械慕鉀Q辦法。
同時應(yīng)該看到,對漏洞問題的研究必須要跟蹤當前最新的計算機系統(tǒng)及其安全問題的最新發(fā)展動態(tài)。這一點如同對計算機病毒發(fā)展問題的研究相似。如果在工作中不能保持對新技術(shù)的跟蹤,就沒有談?wù)撓到y(tǒng)安全漏洞問題的發(fā)言權(quán),既使是以前所作的工作也會逐漸失去價值。
你喜歡漏洞,你討厭也好。它永遠存在,做到了"不以物喜,不以己悲",實現(xiàn)了"愛她就愛她的靈魂----自由,平等,共享,創(chuàng)新"。 同時它也證明了這個世界沒有絕對的安全,如果世界上永遠存在計算機存在軟件,那么它又將證明什么叫永恒。童話里有永恒的虛假的美, 而漏洞是永恒的真實的童話。
一、不同角度看安全漏洞的分類
對一個特定程序的安全漏洞可以從多方面進行分類。
1、從用戶群體分類
●大眾類軟件的漏洞。如Windows的漏洞、IE的漏洞等等。
●專用軟件的漏洞。如Oracle漏洞、Apache漏洞等等。
2、從數(shù)據(jù)角度看分為
●能讀按理不能讀的數(shù)據(jù),包括內(nèi)存中的數(shù)據(jù)、文件中的數(shù)據(jù)、用戶輸入的數(shù)據(jù)、數(shù)據(jù)庫中的數(shù)據(jù)、網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)等等。
●能把指定的內(nèi)容寫入指定的地方(這個地方包括文件、內(nèi)存、數(shù)據(jù)庫等)
●輸入的數(shù)據(jù)能被執(zhí)行(包括按機器碼執(zhí)行、按Shell代碼執(zhí)行、按SQL代碼執(zhí)行等等)
3、從作用范圍角度看分為
●遠程漏洞,攻擊者可以利用并直接通過網(wǎng)絡(luò)發(fā)起攻擊的漏洞。這類漏洞危害極大,攻擊者能隨心所欲的通過此漏洞操作他人的電腦。并且此類漏洞很容易導(dǎo)致蠕蟲攻擊,在Windows。
●本地漏洞,攻擊者必須在本機擁有訪問權(quán)限前提下才能發(fā)起攻擊的漏洞。比較典型的是本地權(quán)限提升漏洞,這類漏洞在Unix系統(tǒng)中廣泛存在,能讓普通用戶獲得最高管理員權(quán)限。
4、從觸發(fā)條件上看可以分為
●主動觸發(fā)漏洞,攻擊者可以主動利用該漏洞進行攻擊,如直接訪問他人計算機。
●被動觸發(fā)漏洞,必須要計算機的操作人員配合才能進行攻擊利用的漏洞。比如攻擊者給管理員發(fā)一封郵件,帶了一個特殊的jpg圖片文件,如果管理員打開圖片文件就會導(dǎo)致看圖軟件的某個漏洞被觸發(fā),從而系統(tǒng)被攻擊,但如果管理員不看這個圖片則不會受攻擊。
5、從操作角度看可分為
●文件操作類型,主要為操作的目標文件路徑可被控制(如通過參數(shù)、配置文件、環(huán)境變量、符號鏈接燈),這樣就可能導(dǎo)致下面兩個問題:
◇寫入內(nèi)容可被控制,從而可偽造文件內(nèi)容,導(dǎo)致權(quán)限提升或直接修改重要數(shù)據(jù)(如修改存貸數(shù)據(jù)),這類漏洞有很多,如歷史上Oracle TNS LOG文件可指定漏洞,可導(dǎo)致任何人可控制運行Oracle服務(wù)的計算機;
◇內(nèi)容信息可被輸出,包含內(nèi)容被打印到屏幕、記錄到可讀的日志文件、產(chǎn)生可被用戶讀的core文件等等,這類漏洞在歷史上Unix系統(tǒng)中的crontab子系統(tǒng)中出現(xiàn)過很多次,普通用戶能讀受保護的shadow文件;
●內(nèi)存覆蓋,主要為內(nèi)存單元可指定,寫入內(nèi)容可指定,這樣就能執(zhí)行攻擊者想執(zhí)行的代碼(緩沖區(qū)溢出、格式串漏洞、PTrace漏洞、歷史上Windows2000的硬件調(diào)試寄存器用戶可寫漏洞)或直接修改內(nèi)存中的機密數(shù)據(jù)。
●邏輯錯誤,這類漏洞廣泛存在,但很少有范式,所以難以查覺,可細分為:
◇條件競爭漏洞(通常為設(shè)計問題,典型的有Ptrace漏洞、廣泛存在的文件操作時序競爭)
◇策略錯誤,通常為設(shè)計問題,如歷史上FreeBSD的Smart IO漏洞。
◇算法問題(通常為設(shè)計問題或代碼實現(xiàn)問題),如歷史上微軟的Windows 95/98的共享口令可輕易獲取漏洞。
◇設(shè)計的不完善,如TCP/IP協(xié)議中的3步握手導(dǎo)致了SYN FLOOD拒絕服務(wù)攻擊。
◇實現(xiàn)中的錯誤(通常為設(shè)計沒有問題,但編碼人員出現(xiàn)了邏輯錯誤,如歷史上博彩系統(tǒng)的偽隨機算法實現(xiàn)問題)
●外部命令執(zhí)行問題,典型的有外部命令可被控制(通過PATH變量,輸入中的SHELL特殊字符等等)和SQL注入問題。
6、從時序上看可分為
●已發(fā)現(xiàn)很久的漏洞:廠商已經(jīng)發(fā)布補丁或修補方法,很多人都已經(jīng)知道。這類漏洞通常很多人已經(jīng)進行了修補,宏觀上看危害比較小。
●剛發(fā)現(xiàn)的漏洞:廠商剛發(fā)補丁或修補方法,知道的人還不多。相對于上一種漏洞其危害性較大,如果此時出現(xiàn)了蠕蟲或傻瓜化的利用程序,那么會導(dǎo)致大批系統(tǒng)受到攻擊。
●0day:還沒有公開的漏洞,在私下交易中的。這類漏洞通常對大眾不會有什么影響,但會導(dǎo)致攻擊者瞄準的目標受到精確攻擊,危害也是非常之大。
二、不同角度看待漏洞利用
如果一個缺陷不能被利用來干“原本”不能干的事(安全相關(guān)的),那么就不能被稱為安全漏洞,所以安全漏洞必然和漏洞利用緊密聯(lián)系在一起。
漏洞利用的視角有:
●數(shù)據(jù)視角:訪問本來不可訪問的數(shù)據(jù),包括讀和寫。這一條通常是攻擊者的核心目的,而且可造成非常嚴重的災(zāi)難(如銀行數(shù)據(jù)可被人寫)。
●權(quán)限視角:主要為權(quán)限繞過或權(quán)限提升。通常權(quán)限提升都是為了獲得期望的數(shù)據(jù)操作能力。
●可用性視角:獲得對系統(tǒng)某些服務(wù)的控制權(quán)限,這可能導(dǎo)致某些重要服務(wù)被攻擊者停止而導(dǎo)致拒絕服務(wù)攻擊。
●認證繞過:通常利用認證系統(tǒng)的漏洞而不用受權(quán)就能進入系統(tǒng)。通常認證繞過都是為權(quán)限提升或直接的數(shù)據(jù)訪問服務(wù)的。
●代碼執(zhí)行角度:主要是讓程序?qū)⑤斎氲膬?nèi)容作為代碼來執(zhí)行,從而獲得遠程系統(tǒng)的訪問權(quán)限或本地系統(tǒng)的更高權(quán)限。這個角度是SQL注入、內(nèi)存指針游戲類漏洞(緩沖區(qū)溢出、格式串、整形溢出等等)等的主要驅(qū)動。這個角度通常為繞過系統(tǒng)認證、權(quán)限提升、數(shù)據(jù)讀取作準備的。
三、漏洞發(fā)掘方法
首先必須清除安全漏洞是軟件BUG的一個子集,一切軟件測試的手段都對安全漏洞發(fā)掘?qū)嵱谩,F(xiàn)在”黑客“用的各種漏洞發(fā)掘手段里有模式可循的有:
●fuzz測試(黑盒測試),通過構(gòu)造可能導(dǎo)致程序出現(xiàn)問題的方式構(gòu)造輸入數(shù)據(jù)進行自動測試。
●源碼審計(白盒測試),現(xiàn)在有了一系列的工具都能協(xié)助發(fā)現(xiàn)程序中的安全BUG,最簡單的就是你手上最新版本的C語言編譯器。
●IDA反匯編審計(灰盒測試),這和上面的源碼審計非常類似,唯一不同的是很多時候你能獲得軟件,但你無法拿到源碼來審計,但IDA是一個非常強大的反匯編平臺,能讓你基于匯編碼(其實也是源碼的等價物)進行安全審計。
●動態(tài)跟蹤分析,就是記錄程序在不同條件下執(zhí)行的全部和安全問題相關(guān)的操作(如文件操作),然后分析這些操作序列是否存在問題,這是競爭條件類漏洞發(fā)現(xiàn)的主要途徑之一,其他的污點傳播跟蹤也屬于這類。
●補丁比較,廠商的軟件出了問題通常都會在補丁中解決,通過對比補丁前后文件的源碼(或反匯編碼)就能了解到漏洞的具體細節(jié)。
以上手段中無論是用哪種都涉及到一個關(guān)鍵點:需要通過人工分析來找到全面的流程覆蓋路徑。分析手法多種多樣,有分析設(shè)計文檔、分析源碼、分析反匯編代碼、動態(tài)調(diào)試程序等。
四、漏洞等級評定
考察漏洞的危害性應(yīng)該緊密的和利用該漏洞帶來的危害相關(guān),并不是通常大家認識的所有緩沖區(qū)溢出漏洞都是高危漏洞。以遠程漏洞為例,比較好的劃分方法為:
1 可遠程獲取OS、應(yīng)用程序版本信息。
2 開放了不必要或危險得服務(wù),可遠程獲取系統(tǒng)敏感信息。
3 可遠程進行受限的文件、數(shù)據(jù)讀取。
4 可遠程進行重要或不受限文件、數(shù)據(jù)讀取。
5 可遠程進行受限文件、數(shù)據(jù)修改。
6 可遠程進行受限重要文件、數(shù)據(jù)修改。
7 可遠程進行不受限得重要文件、數(shù)據(jù)修改,或?qū)ζ胀ǚ?wù)進行拒絕服務(wù)攻擊。
8 可遠程以普通用戶身份執(zhí)行命令或進行系統(tǒng)、網(wǎng)絡(luò)級的拒絕服務(wù)攻擊。
9 可遠程以管理用戶身份執(zhí)行命令(受限、不太容易利用)。
10 可遠程以管理用戶身份執(zhí)行命令(不受限、容易利用)。
本地漏洞幾乎都是導(dǎo)致代碼執(zhí)行,歸入上面的10分制可以為:
遠程主動觸發(fā)代碼執(zhí)行(如IE的漏洞)。
遠程被動觸發(fā)代碼執(zhí)行(如Word漏洞/看圖軟件漏洞)。
五、DEMO
一個防火墻隔離(只允許運維部的人訪問)的網(wǎng)絡(luò)里運行一臺Unix服務(wù)器;操作系統(tǒng)中只有root用戶和oracle用戶可登陸,操作系統(tǒng)中運行了Apache(nobody權(quán)限)、Oracle(oracle用戶權(quán)限)等服務(wù)。
一個攻擊者的目的是修改Oracle數(shù)據(jù)庫中的帳單表的數(shù)據(jù)。
其可能的攻擊步驟為:
●1.接入運維部的網(wǎng)絡(luò),獲得一個運維部的IP地址從而能通過防火墻訪問被保護的Unix服務(wù)器。
●2.利用Apache服務(wù)的某遠程緩沖區(qū)溢出漏洞直接獲得一個nobody權(quán)限的shell訪問。
●3.利用操作系統(tǒng)某suid程序的漏洞將自己的權(quán)限提升到root權(quán)限。
●4.用Oracle的sysdba登陸進入數(shù)據(jù)庫(本地登陸不需要密碼)。
●5.修改目標表的數(shù)據(jù)。
以上5個過程分析下來為:
●第1步:認證繞過
●第2步:遠程漏洞、代碼執(zhí)行(機器碼)、認證繞過
●第3步:權(quán)限提升、認證繞過
●第4步:認證繞過
●第5步:數(shù)據(jù)寫
相關(guān)文章
2019最新RDP遠程桌面漏洞官方補丁(針對win2003、win2008)
Windows系列服務(wù)器于2019年5月15號,被爆出高危漏洞,windows2003、windows2008、windows2008 R2、windows xp系統(tǒng)都會遭到攻擊,該服務(wù)器漏洞利用方式是通過遠程桌面端口332021-07-25寶塔面板 phpmyadmin 未授權(quán)訪問漏洞 BUG ip:888/pma的問題分析
這篇文章主要介紹了寶塔面板 phpmyadmin 未授權(quán)訪問漏洞 BUG ip:888/pma,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-24CPU幽靈和熔斷漏洞是什么?Intel為大家簡單易懂的科普了一番
不久前讓整全行業(yè)緊張、全球用戶恐慌的Spectre幽靈、Meltdown熔斷兩大漏洞事件剛剛告一段落了,那么這兩個漏洞到底是什么?可能還有很多人不是很清楚,想了解的朋友跟著小2018-03-21- 2017年5月12日,WannaCry蠕蟲通過MS17-010漏洞在全球范圍大爆發(fā),感染了大量的計算機,該蠕蟲感染計算機后會向計算機中植入敲詐者病毒,導(dǎo)致電腦大量文件被加密,本文對其2017-05-17
- 大部分的用戶可能不要了解文件上傳漏洞,下面小編就為大家具體的講解什么事文件上傳漏洞以及文件上傳漏洞的幾種方式2016-11-02
- 漏洞檢測工具用語有高危漏洞,中危漏洞,低危漏洞以及漏洞的危害介紹,本文介紹的非常詳細,具有參考解決價值,感興趣的朋友一起看看吧2016-10-11
- 漏洞無處不在,它是在硬件、軟件、協(xié)議的具體實現(xiàn)或系統(tǒng)安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權(quán)的情況下訪問或破壞系統(tǒng)2016-09-29
手把手教你如何構(gòu)造Office漏洞POC(以CVE-2012-0158為例)
近年來APT追蹤盛行,最常見的就是各種以釣魚開始的攻擊,不僅僅有網(wǎng)站掛馬式釣魚,也有魚叉式郵件釣魚,下面小編就為大家介紹office漏洞CVE-2012-0158,一起來看看吧2016-09-28- SSL(安全套接字層)逐漸被大家所重視,但是最不能忽視的也是SSL得漏洞,隨著SSL技術(shù)的發(fā)展,新的漏洞也就出現(xiàn)了,下面小編就為大家介紹簡單七步教你如何解決關(guān)鍵SSL安全問題2016-09-23
Python 爬蟲修養(yǎng)-處理動態(tài)網(wǎng)頁
在爬蟲開發(fā)中,大家可以很輕易地 bypass 所謂的 UA 限制,甚至用 scrapy 框架輕易實現(xiàn)按照深度進行爬行。但是實際上,這些并不夠。關(guān)于爬蟲的基礎(chǔ)知識比如數(shù)據(jù)處理與數(shù)據(jù)存2016-09-12