小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

黑客為什么可以做到無(wú)需知道源碼的情況下找出系統(tǒng)漏洞?

 三平齋 2018-08-06
題目可能不能表達(dá)完整我的意思,大體來(lái)說(shuō)是:我作為一個(gè)比較普通的程序員,要讀懂一個(gè)別人的源碼已經(jīng)很不易了,還要從中找出漏洞。比如你把windows的源碼放我面前,我肯定看暈了,別說(shuō)找漏洞了,何況windows還不開(kāi)源。linux開(kāi)源,我看的也很暈,只能一點(diǎn)點(diǎn)扣。還有web方面,不知道別人服務(wù)器的源碼,怎么找出別人服務(wù)器的程序上的漏洞的呢。所以我覺(jué)得黑客或者說(shuō)安全人員一定有和軟件開(kāi)發(fā)者不同的視角。
?
?

提問(wèn)者估計(jì)是一個(gè)剛學(xué)會(huì)編程的菜鳥(niǎo)程序員,看見(jiàn)大段代碼頭就昏。問(wèn)題很好,解答很難。

首先,為什么windows不開(kāi)源還有那么多人研究呢,甚至比開(kāi)源的Linux研究人員多的多?因?yàn)槿澜邕\(yùn)行windows的機(jī)器最多,大部分windows用戶沒(méi)有經(jīng)過(guò)嚴(yán)格培訓(xùn),只會(huì)使用鼠標(biāo)鍵盤(pán),Linux用戶都要使用命令行,沒(méi)幾個(gè)用戶是新手,開(kāi)源的Linux也使得漏洞可以用最快的速度被修補(bǔ),因?yàn)槭澜缟嫌泻芏嗳嗽诰S護(hù)Linux。windows不開(kāi)源,只能由微軟負(fù)責(zé)維護(hù)和補(bǔ)丁更新。世界上有大把的程序員,但微軟公司負(fù)責(zé)開(kāi)發(fā)操作系統(tǒng)的人不超過(guò)五萬(wàn)(算上離職的也不會(huì)超過(guò)十萬(wàn)人),寫(xiě)操作系統(tǒng)內(nèi)核的核心開(kāi)發(fā)人員不超過(guò)1000人,你連寫(xiě)操作系統(tǒng)代碼都不會(huì)只會(huì)寫(xiě)應(yīng)用程序根本理解不了操作系統(tǒng)是如何運(yùn)轉(zhuǎn)的,要想入門(mén)還是先多看看操作系統(tǒng)的書(shū)吧,至少要理解操作系統(tǒng)是如何運(yùn)行的,推薦先看看Linux的內(nèi)核代碼,有一定基礎(chǔ)后再看《windows核心揭秘》。

其次,windows操作系統(tǒng)是用C/C++寫(xiě)的,很多程序員都使用高級(jí)語(yǔ)言寫(xiě)程序,對(duì)C和C++這些“中間語(yǔ)言”不熟悉不了解,不知道哪些函數(shù)容易溢出,使用哪些函數(shù)更安全或者可以替代不安全的函數(shù)。系統(tǒng)漏洞的精髓在于緩沖區(qū)溢出,緩沖區(qū)溢出說(shuō)白了就是利用馮諾伊曼架構(gòu)的缺陷——數(shù)據(jù)和代碼存儲(chǔ)在同一個(gè)設(shè)備內(nèi)存中,讓計(jì)算機(jī)錯(cuò)誤的把數(shù)據(jù)當(dāng)作代碼來(lái)執(zhí)行。在windows數(shù)據(jù)結(jié)構(gòu)中有堆棧和堆都可以被溢出,在NT5.0之前的系統(tǒng)中根本沒(méi)有防范機(jī)制,XPSP2引入了安全堆棧,在編譯器中還有/GS選項(xiàng),用于防止堆棧溢出,使得堆棧溢出非常困難,但并不是不可能,堆溢出仍然可以。

當(dāng)熟練掌握了緩沖區(qū)溢出就可以對(duì)windows進(jìn)行分析了,方法主要是“黑盒”與“白盒”。白盒就是當(dāng)微軟發(fā)布補(bǔ)丁之后用虛擬機(jī)分析補(bǔ)丁前后的代碼級(jí)差別,找出漏洞,但是這些漏洞都是微軟補(bǔ)丁過(guò)的,利用價(jià)值不大;黑盒分析則是在完全沒(méi)有源碼的情況下靠分析工具和人的經(jīng)驗(yàn)來(lái)尋找漏洞,人的經(jīng)驗(yàn)起決定作用,你必須知道程序員比較容易在哪些地方犯錯(cuò)誤,包括使用不安全函數(shù)、邊界檢查不完整、競(jìng)爭(zhēng)條件、SEH結(jié)構(gòu)化異常錯(cuò)誤處理和VEH向量化異常錯(cuò)誤處理等操作系統(tǒng)內(nèi)部的知識(shí)。黑盒分析找到的漏洞一般沒(méi)有補(bǔ)丁,又稱0day漏洞,據(jù)說(shuō)這種漏洞在地下黑市上價(jià)值上萬(wàn)美元(任意代碼可執(zhí)行漏洞值這個(gè)價(jià),其他的信息泄露或者提升權(quán)限價(jià)值就比較低了)。

當(dāng)你能夠找到windows的0day漏洞,特別是影響巨大的任意代碼可執(zhí)行漏洞的時(shí)候,你已經(jīng)是站在程序員金字塔塔尖的一小群人了,找到漏洞之后就需要編寫(xiě)一小段shellcode來(lái)利用漏洞,這段代碼條件非常苛刻,也許只針對(duì)特定的windowsSP版本有效,也許針對(duì)所有windows系統(tǒng)有效。對(duì)所有windows有效的shellcode一定是可移植的,換句話說(shuō)shellcode必須能夠通用化??梢园裺hellcode想象成一個(gè)偵察兵,一個(gè)先頭空降部隊(duì),如何在茫茫黑夜中偵查操作系統(tǒng)防線的位置、火力點(diǎn)的分布情況,從哪里開(kāi)始執(zhí)行負(fù)載并且不會(huì)陷入操作系統(tǒng)的泥沼中淹死(這足可以寫(xiě)一本書(shū)來(lái)描述)shellcode只是一枚導(dǎo)彈的制導(dǎo)系統(tǒng),它負(fù)載的炸藥可能是一個(gè)在地上砸個(gè)坑的鉛球,也可能是毀滅一座城市的核武器。

這也是最體現(xiàn)黑客技術(shù)水平的地方,同一個(gè)漏洞有的人編寫(xiě)的shellcode能實(shí)現(xiàn)通用化(具體要看漏洞的位置以及形成原因),有的人編寫(xiě)的根本不能運(yùn)行或者極大影響系統(tǒng)速度。一般來(lái)說(shuō)編寫(xiě)shellcode都使用匯編語(yǔ)言,極少數(shù)情況下還需要使用二進(jìn)制代碼。

當(dāng)你掌握以上技能后,就將修煉終極絕技了,那就是無(wú)比困難的、一旦掌握就必將天下無(wú)敵的絕技——硬件漏洞,就比如intel最近的“融毀”和“幽靈”。如果說(shuō)操作系統(tǒng)是計(jì)算機(jī)的靈魂,那CPU就是計(jì)算機(jī)的心臟。從層級(jí)上來(lái)說(shuō),一般程序員編寫(xiě)的應(yīng)用程序運(yùn)行在3級(jí),操作系統(tǒng)運(yùn)行在0級(jí)(最新情況是操作系統(tǒng)運(yùn)行在-1級(jí),0級(jí)運(yùn)行虛擬機(jī),intel叫vt-x技術(shù),可以極大減少切換層級(jí)引起的系統(tǒng)開(kāi)銷(xiāo))而CPU核心運(yùn)行在-3級(jí),擁有遠(yuǎn)超windows的權(quán)限,這才是計(jì)算機(jī)的終極命門(mén),硬件漏洞通用性也無(wú)與倫比,因?yàn)樽烂鍯PU就intel和amd能生產(chǎn),CPU微代碼不更新的話漏洞會(huì)一直存在(老式計(jì)算機(jī)只有更換CPU,而老機(jī)器更換CPU幾乎不可能,因?yàn)橹靼宀恢С?,需要更換主板代價(jià)太大得不償失;三年內(nèi)新式計(jì)算機(jī)可以更新UEFI微代碼,也就是微軟和intel提供的補(bǔ)?。┻@就是撞擊地球后足以毀滅世界的小行星級(jí)別的武器了。要找到這種級(jí)別漏洞光靠個(gè)人已經(jīng)不可能,光需要的特殊硬件就不是個(gè)人買(mǎi)得起的,一般要大公司或者國(guó)家才能找到這種級(jí)別的漏洞。

最后,用三個(gè)我最喜歡的小例子來(lái)結(jié)尾吧。

1、當(dāng)windows彈出著名的“程序引用了0x00000000地址,即將關(guān)閉”的錯(cuò)誤提示的時(shí)候,普通程序員會(huì)順從的點(diǎn)擊確定關(guān)閉對(duì)話框,然后思考究竟是什么地方出了問(wèn)題;聰明一些的程序員會(huì)利用windows內(nèi)核轉(zhuǎn)儲(chǔ)來(lái)尋找問(wèn)題的答案,不一定能解決問(wèn)題;頂尖黑客則會(huì)用softice或者其他工具重現(xiàn)這個(gè)問(wèn)題,必須把它解決,沒(méi)準(zhǔn)能寫(xiě)出shellcode。

2、impossible和i'm'possible從字母排列上都是一樣的,但意思卻是相反的,這就是緩沖區(qū)溢出的精髓,只添加了兩個(gè)標(biāo)點(diǎn)。impossible是單詞,屬于數(shù)據(jù)的范疇,I'm'possible是句子,屬于代碼的范疇,混淆數(shù)據(jù)與代碼的界限,讓計(jì)算機(jī)把數(shù)據(jù)當(dāng)成代碼執(zhí)行,只需要緩沖區(qū)溢出兩個(gè)標(biāo)點(diǎn)而已。在計(jì)算機(jī)的世界中,復(fù)雜的、毫無(wú)規(guī)律的垃圾數(shù)據(jù)突然間組成了一幅美麗的圖畫(huà),隨著鎖“卡嗒”一聲,安全的大門(mén)緩緩打開(kāi),苦心經(jīng)營(yíng)的安全防線瞬間崩潰。

3、在電影《黑客帝國(guó)》中,普通的程序安安靜靜的運(yùn)行在虛擬機(jī)中,少數(shù)像尼奧這樣不安分的程序突破了虛擬機(jī)的安全機(jī)制,進(jìn)入到了真實(shí)操作系統(tǒng)矩陣中,這時(shí)候操作系統(tǒng)的SEH異常錯(cuò)誤處理機(jī)制史密斯登場(chǎng)了;后來(lái)尼奧發(fā)現(xiàn)矩陣也不是真實(shí)的操作系統(tǒng),只不過(guò)是更高一級(jí)的虛擬機(jī)罷了(虛擬機(jī)嵌套),尼奧可以在矩陣中使用操作系統(tǒng)的特權(quán)指令消滅追殺來(lái)的烏賊機(jī)器人就證明了這一點(diǎn);最后史密斯叛變,病毒幾乎感染了操作系統(tǒng)的所有進(jìn)程,尼奧犧牲自己幫助操作系統(tǒng)定位了史密斯的位置(病毒的PID),經(jīng)過(guò)一輪內(nèi)存殺毒和系統(tǒng)重啟后,操作系統(tǒng)又回到了正常的狀態(tài)。

每天活躍在互聯(lián)網(wǎng)上的應(yīng)用成百上千萬(wàn),包括PC端以及目前越來(lái)越主流的移動(dòng)端,不僅有通過(guò)瀏覽器訪問(wèn)的,還有需要安裝客戶端的,不僅有與服務(wù)器強(qiáng)交互的,還有獨(dú)立運(yùn)行的本地軟件。

而這其中,開(kāi)源的(包括開(kāi)放源碼的)產(chǎn)品少之又少。但,這并不妨礙一個(gè)黑客找出其中的漏洞。換句話說(shuō),找漏洞并不需要源碼。

當(dāng)然了,在有源碼的情況下,挖洞是一件難度系數(shù)指數(shù)下降的事情。雖然讀懂一個(gè)大型軟件源碼耗時(shí)又耗力,但對(duì)于黑客來(lái)說(shuō),可以略去其中大半的代碼來(lái)閱讀,只關(guān)心可能造成危險(xiǎn)的部分。就像一名建筑工程師看一份大樓的施工圖,要看懂大樓的結(jié)構(gòu)、建筑材料、水電線路等等各方各面,而對(duì)于《Prison Break》中的Michael Scofield可能只關(guān)心地下管道的分布。

那么,在沒(méi)有源碼的情況下,黑客怎么挖洞呢?這種情況,我們可以稱之為黑盒。而挖洞,的確需要與程序編輯者持有完全相反的角度和看法。對(duì)于輸入輸出點(diǎn),程序猿考慮的是正確的輸入獲得正確的輸出,而黑客則考慮特殊的非法輸入獲得異常的有價(jià)值輸出。那系統(tǒng)登錄來(lái)說(shuō),程序猿考慮的是用戶輸入注冊(cè)的用戶名、口令能夠在登錄時(shí)與數(shù)據(jù)庫(kù)中的數(shù)據(jù)匹配成功,而黑客則會(huì)嘗試引起數(shù)據(jù)庫(kù)查詢異常的輸入作為用戶名、口令內(nèi)容,希望應(yīng)用返回更多數(shù)據(jù)庫(kù)中的有效數(shù)據(jù)。

對(duì)于黑客來(lái)說(shuō),不知道源碼情況下,只要有輸入就可以了,不管是應(yīng)用具有的功能頁(yè)面,還是一個(gè)輸入接口,通過(guò)一種叫做模糊測(cè)試的技術(shù)就可以開(kāi)始你的挖洞之旅。模糊測(cè)試可以構(gòu)造一系列正常和異常的輸入值,根據(jù)應(yīng)用的返回來(lái)判斷脆弱點(diǎn)的存在。

在黑客的武器庫(kù)中,模糊測(cè)試只是其中一個(gè)利器,像什么漏掃、逆向、脫殼、注入、暴破等等不一而足。

作為程序猿,在編寫(xiě)程序時(shí)不僅要從正向角度完成應(yīng)用的功能,還需要從黑客角度逆向分析應(yīng)用在處理異常輸入時(shí)的反應(yīng),才能做出高安全的應(yīng)用。

黑盒確實(shí)是比較難從外部攻破的,但是這也是滲透過(guò)程中非常非常非常常見(jiàn)的現(xiàn)象,如果每個(gè)目標(biāo)網(wǎng)站或者目標(biāo)系統(tǒng),你都能拿到源代碼,那,做這個(gè)還有什么樂(lè)趣可言呢?

首先回答一下答主的描述中的疑問(wèn),讀懂源碼已經(jīng)很不容易了,何況還要從中找出漏洞。我的觀點(diǎn)是,題主和黑客的心態(tài)不同,題主的心態(tài)是以讀懂,學(xué)習(xí)為主,就像是一個(gè)學(xué)者,在考據(jù)東西,黑客的心態(tài)則不一樣,黑客的心態(tài)是攻擊性的,他不需要明白所有函數(shù)的作用,不需要知道上下的連接,左右的影響,他就像一個(gè)獵狗,只在乎自己最關(guān)心的部分,從這個(gè)部分往外推演,就像是抽絲剝繭般,找到自己需要的內(nèi)容。例如一套網(wǎng)站系統(tǒng),涉及到注冊(cè),登錄,用戶管理,文章發(fā)布,商品更新,訂單管理,數(shù)據(jù)統(tǒng)計(jì),倉(cāng)儲(chǔ)銷(xiāo)售,這是一個(gè)非常龐大繁雜的系統(tǒng),要完全吃下來(lái), 非常耗費(fèi)精力,可是黑客會(huì)把注意力放在輸入輸出上面,去找可能提權(quán)的地方,這么做的效率是非常高的。

現(xiàn)在來(lái)講,如何做黑盒滲透。

所有黑盒,即便你不知道內(nèi)部如何,但是必有輸入輸出,如果沒(méi)有輸入輸出,那么再厲害的黑客也拿它沒(méi)辦法,但是話又說(shuō)回來(lái),一個(gè)系統(tǒng)沒(méi)有輸入輸出,那對(duì)任何人也毫無(wú)價(jià)值,所以說(shuō),一切系統(tǒng),都是有可能被滲透的。

不同的輸入,可能會(huì)獲得不同的輸出,這是一切攻擊滲透的前提,這里面大有學(xué)問(wèn),例如一個(gè)網(wǎng)站,我輸入正確的用戶密碼,就可以登錄成功,我輸入錯(cuò)誤的用戶密碼,則會(huì)提示密碼錯(cuò)誤,這就是根據(jù)不同的輸入給出的不同輸出,通過(guò)構(gòu)造輸入內(nèi)容,獲得輸出反饋,可以揣測(cè)系統(tǒng)的內(nèi)部工作流程,甚至直接推斷出具體代碼

這不是一件容易的事,但也不是不可以做到

為什么黑客能夠找到漏洞?

我是一個(gè)學(xué)Python的web開(kāi)發(fā)的,在web這方面我比較了解,所以主要從這方面去講解,其他的其實(shí)也很類(lèi)似,但不一樣,可以進(jìn)行類(lèi)比。

web方面其實(shí)不是需要知道源碼的,當(dāng)然,你能夠知道的話,那可能就更方便了。首先,黑客會(huì)去試探你的服務(wù)器,如何試探呢?通過(guò)進(jìn)行一些合法的請(qǐng)求,通過(guò)你返回的這些信息中,能夠得出你的服務(wù)器類(lèi)型,你是用什么語(yǔ)言來(lái)寫(xiě)的(當(dāng)然,這個(gè)判斷不一定準(zhǔn))。

就如一個(gè)黑盒子,黑客不斷地根據(jù)輸入和輸出,來(lái)了解你的整個(gè)web(或者說(shuō)是服務(wù)器或者網(wǎng)站)。

在網(wǎng)站方面,很多的漏洞都出在輸入上,有輸入的地方,就需要去防止黑客。這是為什么呢?舉個(gè)例子,如果一個(gè)博客,它有一個(gè)評(píng)論功能,你評(píng)論完成之后就會(huì)返回到這個(gè)頁(yè)面上(就是可以看到你的評(píng)論),假如,你現(xiàn)在輸入的評(píng)論不是一個(gè)正常的評(píng)論,而是一段代碼(js,h5,sql語(yǔ)句都有可能),再如果,你沒(méi)有對(duì)這些東西進(jìn)行過(guò)濾或者轉(zhuǎn)義的話,那么你就會(huì)將一個(gè)可能帶有不可預(yù)測(cè)性的代碼加入到你的網(wǎng)站里面了。(很可能用戶只要進(jìn)入這個(gè)頁(yè)面,那么他的信息就會(huì)暴露,然后進(jìn)一步感染電腦。)

再說(shuō)一下,用前端框架很容易出現(xiàn)漏洞,因?yàn)榉篮诳偷谋仨毷呛蠖?,前端是為了用戶體驗(yàn),減小服務(wù)器壓力,如果由于前端將這些過(guò)濾的事情做了,而后端由于疏忽沒(méi)有去做,那么黑客是完全可以繞過(guò)前端的檢測(cè),攻擊后端(你的服務(wù)器。)

另一個(gè)很重要的就是sql注入,比如一個(gè)請(qǐng)求,你是直接用這些參數(shù)去數(shù)據(jù)庫(kù)取數(shù)據(jù),那么如果這些參數(shù)是一個(gè)sql語(yǔ)句,修改你的數(shù)據(jù)庫(kù)權(quán)限(通常是通過(guò)一些其他的信息來(lái)獲取數(shù)據(jù)庫(kù)的類(lèi)型,如查看報(bào)錯(cuò)信息等等),如果你進(jìn)行了過(guò)濾,但是不周全的話,可以進(jìn)行轉(zhuǎn)碼,然后你的數(shù)據(jù)庫(kù)還是會(huì)執(zhí)行這些漏洞。

我的回答差不多就結(jié)束了,想要獲取更多關(guān)于黑客的好玩的東西,可以關(guān)注我哦~~~~

還有一點(diǎn)點(diǎn)需要提一下,就是如果獲取到了你的服務(wù)器,數(shù)據(jù)庫(kù),代碼等等,黑客通常會(huì)先查看一下已經(jīng)出現(xiàn)的漏洞,進(jìn)行窮舉法(一般是用黑客軟件進(jìn)行)。

再對(duì)于軟件這方面的,一個(gè)是,通過(guò)下載了惡意軟件(通過(guò)獲取了權(quán)限,然后就可以完全掌控你的計(jì)算機(jī)),一般是偽造相似的軟件,其實(shí)你的應(yīng)用軟件越多,留下的后門(mén)的可能性就越大,每個(gè)軟件都有一定的權(quán)限,但是如果這些權(quán)限被黑客利用的話,就是一場(chǎng)浩劫了。

針對(duì)Web方面

在網(wǎng)絡(luò)滲透工程師眼里,你說(shuō)的這種行為通常被稱為“黑盒測(cè)試”,這也是大部分黑(script)客(kid)最常用的測(cè)試手段。

在這種情況下,黑客進(jìn)行黑盒測(cè)試的首要任務(wù)就是收集信息,盡可能的收集web網(wǎng)站的DNS、程序結(jié)構(gòu)、數(shù)據(jù)庫(kù)信息等等,為之后的滲透測(cè)試奠定基礎(chǔ)。

下一步便是使用一些專業(yè)的掃描器如awvs nessus等,進(jìn)行一些高危漏洞的掃描,同時(shí)進(jìn)行手工檢測(cè),找一些掃描器容易忽略的地方進(jìn)行利用。

最后把這些信息綜合總結(jié)來(lái)進(jìn)行利用。

上面是2017年總結(jié)的Owasp Top 10,也就是近幾年間最流行的高危漏洞。


在我看來(lái),黑盒測(cè)試為首當(dāng)測(cè)試,沒(méi)有什么特別的問(wèn)題的話,白盒測(cè)試便更能挖掘出藏在深處的漏洞。

首先黑客沒(méi)有傳說(shuō)中大家想象的那么神奇,因?yàn)榧词乖倥1频暮诳推鸫a也是一名標(biāo)準(zhǔn)的程序員,現(xiàn)在大家對(duì)于黑客的印象很多都被帶溝里去了。真正的黑客除了是程序員之外還具備極客思想,這是黑客區(qū)別于普通程序員的唯一標(biāo)記,也是最明顯的標(biāo)記。

事實(shí)中很多人覺(jué)得黑客能夠隨意進(jìn)入別人的服務(wù)器做自己想做的事情,順便給自己弄點(diǎn)好處,估計(jì)大家心目中黑客的想象和現(xiàn)實(shí)中駭客標(biāo)準(zhǔn)更加的貼近。真正搞破壞的是駭客,不是黑客所為,黑客在一定層面上還能促進(jìn)網(wǎng)絡(luò)安全的進(jìn)步,會(huì)給一些政府或者企業(yè)善意的提醒促進(jìn)進(jìn)一步提升自身的網(wǎng)絡(luò)安全。

所以不要只看到黑客光鮮的一面,背后無(wú)數(shù)的日子對(duì)著電腦解決探索問(wèn)題的時(shí)間才是黑客絕大部分精力所在。

從樓主的描述看還處于程序員的初級(jí)階段,能夠讀懂大段的代碼是一個(gè)程序員必備的標(biāo)準(zhǔn),而且源碼的讀取不是挨著一點(diǎn)點(diǎn)的來(lái),靠對(duì)整個(gè)框架有個(gè)理解然后再去考慮閱讀代碼,做事情先有指導(dǎo)思想,有了大方向然后推斷哪方面有問(wèn)題,然后找到對(duì)應(yīng)模塊代碼進(jìn)行修改調(diào)試,再牛逼的黑客也需要經(jīng)歷這個(gè)過(guò)程。

另外黑客算是軟件領(lǐng)域的安全科目,需要具備一定的安全基礎(chǔ),常見(jiàn)的網(wǎng)絡(luò)TCP/IP,匯編語(yǔ)言,C語(yǔ)言基礎(chǔ),以及常見(jiàn)的安全知識(shí)都要具備,不僅僅是熟悉的那回事了,不知道樓主從事的什么技術(shù)行業(yè)用的什么編程語(yǔ)言,如果距離很遠(yuǎn)感覺(jué)很神秘也屬于很正常的心里反映,所話說(shuō)隔行如隔山。

想做點(diǎn)事情還是需要一定的積累。要想人前顯貴學(xué)會(huì)背后受罪。

首先題主的感覺(jué)是對(duì)的,黑客確實(shí)比普通開(kāi)發(fā)或者普通安全人員有著不同的視角。

普通測(cè)試人員一般對(duì)程序進(jìn)行黑盒測(cè)試,也就是功能測(cè)試,數(shù)據(jù)驅(qū)動(dòng)測(cè)試,或者規(guī)格說(shuō)明測(cè)試。通過(guò)使用整個(gè)軟件或某種軟件功能來(lái)嚴(yán)格地測(cè)試, 而并沒(méi)有通過(guò)檢查程序的源代碼或者很清楚地了解該軟件的源代碼程序具體是怎樣設(shè)計(jì)的。測(cè)試人員通過(guò)輸入他們的數(shù)據(jù)然后看輸出的結(jié)果從而了解軟件怎樣工作。而一般的安全人員測(cè)試基本從白盒測(cè)試開(kāi)始,也就是通過(guò)程序的源代碼進(jìn)行測(cè)試而不使用用戶界面。這種類(lèi)型的測(cè)試需要從代碼句法發(fā)現(xiàn)內(nèi)部代碼在算法,溢出,路徑,條件等等中的缺點(diǎn)或者錯(cuò)誤,進(jìn)而加以修正。對(duì)于黑客,他們挖洞的方式絕對(duì)不僅僅限于黑白盒測(cè)試,除了一些常規(guī)挖洞方式,比如sql注入、請(qǐng)求截獲,參量,窮舉ddos,xss漏洞等,黑客們還有一套他們自己編寫(xiě)的一套掃描漏洞的程序,他們挖洞的視角是全局視角,任何程序都不可能做的天衣無(wú)縫,黑客們總會(huì)在某個(gè)細(xì)微的地方找到漏洞。打個(gè)比方,普通測(cè)試用肉眼,而黑客們用的是顯微鏡。

另外,任何自稱為黑客的人對(duì)各種底層技術(shù)研究得比較深入。

比如http請(qǐng)求的底層原理,要經(jīng)歷多少次握手多少次響應(yīng),每次攜帶什么類(lèi)型的數(shù)據(jù)包,怎么才能截獲數(shù)據(jù)包……平時(shí)我們見(jiàn)到的外掛程序很多都基于此,基本上都是截獲篡改數(shù)據(jù)包。還有一方面,黑客的成長(zhǎng)過(guò)程也會(huì)研究各種sdk的源碼,特別是涉及程序安全的源碼,然后有針對(duì)性編寫(xiě)一套套各種各樣掃描漏洞的程序,以此幫助他們發(fā)現(xiàn)漏洞。

作為一個(gè)碼農(nóng),接觸的圈子里有不少研究安全的,當(dāng)然他們還算不上黑客,僅僅是把別人的服務(wù)搞down機(jī)或者破解一些賬號(hào)看看下程序后臺(tái)到底有什么東西,以此作為可以吹牛或炫耀的談資,沒(méi)做什么傷天害理的事。

最后我想說(shuō)的是,黑客和安全人員都是程序世界不可或缺的。黑客的攻,安全的防,一攻一防才推動(dòng)著程序安全技術(shù)不斷革新和發(fā)展,這種攻防模式才使得我們這些程序開(kāi)發(fā)人員在編寫(xiě)代碼時(shí)時(shí)刻保持警惕和審慎的態(tài)度,編寫(xiě)好每一行安全的代碼。

看了幾個(gè)已經(jīng)回答過(guò)的朋友的答案,實(shí)在是驢唇不對(duì)馬嘴。問(wèn)者問(wèn)的是,不知道源碼的情況下是怎么找到bug的,這里的bug應(yīng)該不是局限在web,而是軟件或者系統(tǒng)方面。

首先說(shuō)明,我不是搞it的,但我相信我可以給問(wèn)者一個(gè)較為滿意的解釋。

如果你對(duì)網(wǎng)絡(luò)安全感興趣,肯定知道以前的流光,灰鴿子,如果不知道,那可能你太年輕了。流光是當(dāng)年國(guó)內(nèi)非常流行的探測(cè)漏洞并加以利用的黑客軟件,包括了web和系統(tǒng),作者流光也是國(guó)內(nèi)網(wǎng)絡(luò)安全數(shù)一數(shù)二的人物,目前在做研究。這是題外話,我要說(shuō)的是,僅僅依賴于別人的工具進(jìn)行攻擊或者滲透,個(gè)人覺(jué)得沒(méi)什么技術(shù)含量的。

如果你感興趣,我推薦metasploit。

話題回到問(wèn)者的問(wèn)題,尋找漏洞的確需要讀懂作者的代碼,假如讀不懂的話,做一名出色的安全工作者至少在我看來(lái)功力還遠(yuǎn)遠(yuǎn)不夠,至少還不入門(mén)。

問(wèn)者疑惑那些大神是怎么做到的,這里要看你對(duì)程序的理解程度,其實(shí)一門(mén)語(yǔ)言和平臺(tái)你足夠了解的話,即使沒(méi)有注釋還是能讀懂的,而且很容易,唯一的難點(diǎn)可能是算法的復(fù)雜。所以,要讀懂代碼,可以從庫(kù)函數(shù)這種方式去入手分析整段代碼,這是常用的辦法。

再次,其實(shí)真正的安全人員必備的素質(zhì),不是僅僅讀源代碼,而是匯編,好了這里回到問(wèn)題的關(guān)鍵,講到匯編千萬(wàn)不要認(rèn)為那是老掉牙的語(yǔ)言,那可錯(cuò)了,做信息安全,定會(huì)分析病毒代碼,病毒源代碼你不可能拿到的,那么唯一的辦法就是虛擬機(jī)把病毒的機(jī)器碼逆向翻譯成匯編,專業(yè)名詞叫逆向工程,craker,其實(shí)也是一樣的技術(shù)。所以,問(wèn)者問(wèn)是怎么讀懂源代碼的,不是源代碼,是逆向工程里的匯編代碼。這是作為安全工作者必會(huì)的技術(shù)。

能夠逆向,基本可以分析大部分的軟件,甚至系統(tǒng)底層代碼。當(dāng)然,這里要會(huì)的技術(shù)還很多,比如解密技術(shù),軟件是加殼的,你必須破解才能得到純正的代碼。

再次,其實(shí)軟件漏洞是有規(guī)律可循的,如今軟件安全性測(cè)試,有基本的黑盒和白盒,黑盒技術(shù)中有一種fuzzing測(cè)試,意思就是對(duì)要測(cè)試的模塊輸入畸形數(shù)據(jù),然后查找漏洞,這是尋找漏洞較為快的方法,當(dāng)年ie漏洞就是用這種方法找到的,當(dāng)然具體的技術(shù)原理我個(gè)人還在研究過(guò)程中。

那么說(shuō)到白盒測(cè)試,就是讀代碼,代碼分析,這里講軟件漏洞的幾種常見(jiàn)類(lèi)型,其實(shí)大部分的漏洞也是這幾種形式,黑盒原理也是用的這幾種,包括,棧溢出,這是最為常見(jiàn)的漏洞形式,堆溢出,這種難度有點(diǎn)大,整數(shù)溢出,數(shù)組越界,釋放重引用,重釋放,如果不明白,推薦一本大神的書(shū),漏洞原理,自己去看。

如果以上弄明白了,可以看看國(guó)外的大神寫(xiě)的,捉蟲(chóng)日記,此書(shū)的作者就是讀源碼找漏洞的。

以上是軟件漏洞的大體的尋找方法,至于web,常見(jiàn)的其實(shí)是注入,但如今基本找不到了,除非網(wǎng)站技術(shù)特別馬虎,因?yàn)橹灰^(guò)濾嚴(yán)格,注入基本不太可能?;蛘呤强缯?,那也是因?yàn)闃?biāo)志符關(guān)閉不嚴(yán)。那么剩下的,就是基于軟件漏洞的滲透,比如ftp協(xié)議,郵件協(xié)議,或者閱讀器等等,一旦被攻破或者打開(kāi)了帶有惡意代碼的文件,感染病毒,被植入后門(mén),其實(shí)就等于把大門(mén)打開(kāi)了,然后為所欲為。

WEB方面已經(jīng)很多人回答過(guò)了,我就不再重復(fù)。我在來(lái)現(xiàn)在的工作崗位以前,因個(gè)人愛(ài)好從事過(guò)漏洞挖掘工作。

首先我們知道,任何程序,計(jì)算機(jī)在執(zhí)行的時(shí)候都是二進(jìn)制的,二進(jìn)制可以直接翻譯成匯編語(yǔ)言,因?yàn)閰R編是對(duì)二進(jìn)制的助記符,這個(gè)是沒(méi)有任何難度的。

在沒(méi)有源碼的情況下,我們可以通過(guò)調(diào)試工具跟蹤程序的執(zhí)行,調(diào)試工具會(huì)把程序執(zhí)行的每一步都翻譯成匯編代碼呈現(xiàn)給我們。常用的調(diào)試工具在ring3級(jí)有ollydbg,靜態(tài)分析工具IDA等,這個(gè)層面主要是挖掘應(yīng)用程序的漏洞,比如………網(wǎng)絡(luò)游戲(我已經(jīng)退出江湖很多年了,別問(wèn)我怎么做,也沒(méi)有保留源代碼了)。

windows等操作程序靜態(tài)分析可以在使用IDA將相關(guān)的dll文件等系統(tǒng)文件進(jìn)行靜態(tài)分析,動(dòng)態(tài)跟蹤就要在ring0級(jí)進(jìn)行調(diào)試了,早期我們一般使用softice,現(xiàn)在都是windbg,雙機(jī)聯(lián)調(diào)或者虛擬機(jī)。

熟練的調(diào)試人員閱讀這些匯編代碼,很容易就能翻譯成自己熟悉的任何一種高級(jí)語(yǔ)言代碼,比如C語(yǔ)言,甚至易語(yǔ)言。通過(guò)反匯編,我們可以發(fā)現(xiàn)一部分簡(jiǎn)單的,低級(jí)的漏洞,通過(guò)動(dòng)態(tài)跟蹤可以修改相應(yīng)的參數(shù)來(lái)驗(yàn)證漏洞,也可以發(fā)現(xiàn)新的漏洞。在熟練的技術(shù),知識(shí)儲(chǔ)備之外,更多的……發(fā)現(xiàn)漏洞還靠運(yùn)氣!

最簡(jiǎn)單明了的答案就是。所有電腦程序都需要通過(guò)編程語(yǔ)言來(lái)實(shí)現(xiàn)系統(tǒng)的構(gòu)建。但所有編程語(yǔ)言都逃不了程序語(yǔ)法和運(yùn)算邏輯等要點(diǎn)。簡(jiǎn)單舉例asp,php語(yǔ)言等動(dòng)態(tài)web語(yǔ)言。這些程序語(yǔ)言在俾發(fā)明者創(chuàng)造出的時(shí)候就已經(jīng)存在一些語(yǔ)法或者邏輯上的問(wèn)題。而黑客就是最熟悉這些程序語(yǔ)言的人群之一,所以他們會(huì)根據(jù)每個(gè)目標(biāo)系統(tǒng)的特點(diǎn),再通過(guò)已知的編程語(yǔ)言邏輯上存在的邏輯漏洞對(duì)系統(tǒng)進(jìn)行測(cè)試。當(dāng)然,編程語(yǔ)言的邏輯漏洞是可以通過(guò)規(guī)范的程序編寫(xiě)來(lái)避免錯(cuò)誤。但現(xiàn)今的信息系統(tǒng)架構(gòu)尤其復(fù)雜,已經(jīng)不是以前的一兩個(gè)靜態(tài)頁(yè)面那么簡(jiǎn)單了,所以很容易就會(huì)產(chǎn)生漏洞的??偨Y(jié):有些系統(tǒng)漏洞是因人為的不規(guī)范導(dǎo)致的,也有些是因?yàn)橄到y(tǒng)工程龐大而出現(xiàn)的邏輯漏洞。而黑客就是通過(guò)尋找這些漏洞從而實(shí)現(xiàn)目的。

?

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多