- 相關推薦
漏洞挖掘學習方法
導語:首先我會從一個較高的角度總結于我眼中何謂漏洞挖掘;然后詳細討論在軟件漏洞挖掘過程中我們需要掌握的技能以及需要的知識和工具等。下面由小編為大家整理的漏洞挖掘學習方法,希望可以幫助到大家!

一、什么是漏洞挖掘
從某個角度來講,我們可以將漏洞挖掘工作比作玩迷宮游戲,不同的是,這個迷宮與我們平時所見的游戲中的迷宮略有不同:
。1)你無法立即看到它整體的外觀;
。2)隨著漏洞挖掘工作的深入,這個迷宮的形狀逐漸擴大;
。3)你將會擁有多個起點及終點,但是無法確定這些點具體在哪里;
。4) 最終這個迷宮可能永遠也無法100%的完整,但是卻能夠弄清楚A點至B點的一條完整路徑。
二、漏洞挖掘需要具備的知識
從事漏洞挖掘工作需要具備的知識是極其廣泛的,并且隨著時間在不斷改變,也取決于你所研究的對象(web程序、桌面程序、嵌入式等等)。不過,萬變不離其宗,所需要掌握的知識領域卻總可以認為是確定的,我認為大致可以分為以下四個方面:
。1) 程序正向開發(fā)技術。這是一個開發(fā)者需要掌握的能力,包括編程語言、系統(tǒng)內部設計、設計模式、協(xié)議、框架等。擁有豐富編程經驗與開發(fā)能力的人在漏洞挖掘過程中往往比那些只對安全相關領域有所了解的人員對目標應用能有更深入的理解,從而有更高的產出。
。2)攻防一體的理念。這些知識涵蓋了從基本的安全原則到不斷變換的漏洞形態(tài)及漏洞緩解措施。攻擊和防御結合的理念,能夠有效幫助研究者既能夠發(fā)現漏洞,同時也能夠快速給出有效的漏洞緩解措施和規(guī)避方法。
。3)有效使用工具。能夠高效的使用工具能夠快速將思路轉化為實踐,這需要通過花時間去學習如何配置和使用工具,將其應用于自己的任務并構建自己的工作流程來不斷積累經驗。更進一步,需要深入掌握所使用工具的原理,以及如何對其進行二次開發(fā),以使得其能夠更加高效的應用于當前的工作實際。事實上,我認為面向過程的學習方法往往比面向工具的學習方法更加高效以及有價值,當自己發(fā)現一個在使用一個工具遇到瓶頸時,先不要退縮,嘗試去改造它,或者通過自己動手實踐去完成能夠適應當前工作的工具,這往往能夠幫助快速積累大量實踐經驗。幫助我們以后更加高效的去實踐漏洞挖掘工作。
(4)對目標應用的理解。最后,也是最重要的,作為一個漏洞挖掘人員,對自己研究的應用程序在安全性方面必須要比這個程序的開發(fā)者或維護者有更深的理解。這樣你才能盡可能的發(fā)現這個程序中的漏洞并修復它。
三、 漏洞挖掘需要做什么
當我分析一個應用程序時,我通常采用下圖展示的四個“分析模型”,每當我遇到障礙導致我思路受阻時,我就會從其中一個模型切換到下一個模型,當然,這不是一個線性的切換,我不知道這個方法是否對每個人都有用,但是對于我的確是幫助巨大:
(1) 理解有關漏洞的相關模型(2) 試圖假設一個場景去破壞程序(3) 嘗試去破壞程序
漏洞的復雜性分布非常廣。一方面,有很多漏洞非常簡單與直觀,并且利用代碼一目了然,比如說經典的sql注入。另一方面,在系統(tǒng)中有的看似并不相關,并且就其自身而言并非不安全,但是當這些東西以一種特定的方式結合起來的時候,就有可能引發(fā)大的漏洞,比如說條件競爭,或者一些其他的復雜的邏輯漏洞。我嘗試將這些漏洞按照復雜級別分為“一級漏洞”和“二級漏洞”,不過也有其他分類方法。引用一局來自Project Zero的Ben Hawkes說過的一句話:
Themodern exploit is not a single shot vulnerability anymore。 They tend to be achain of vulnerabilities that add up to a full—system compromise。
如今想要完成一個完整的利用,只靠單一的漏洞往往行不通。很多時候我們需要靠一連串的漏洞才能完成一起完整的利用,致使系統(tǒng)“妥協(xié)”。
【漏洞挖掘學習方法】相關文章:
Apache Kafka read Object漏洞的分析報告10-09
計算機漏洞檢測思考論文10-08
計算機安全漏洞檢測技術的運用論文10-09
數據挖掘實習報告10-11
計算機網絡安全漏洞及防范的論文10-11
計算機網絡安全漏洞及防范論文10-08
復雜網絡數據挖掘論文11-15
高一學習方法指導與學習方法12-07
學習方法10-26
經典的學習方法10-26