-
1 # Geek視界
-
2 # Kali教程
期待以下回答能對你有所助力!
駭客技術是個很龐大的概念,包括不同的方向,每個方向又可以劃分成多個領域,隨著技術的進步,每個領域都可以無限細分,不同的領域之間也在不斷交叉。因此如果將駭客技術的方向、領域、知識用結構圖表示,會得到一張錯綜複雜、密密麻麻的網狀圖。看到這樣的知識結構圖,估計大部分初學者都會被成功勸退,想要繼續學習的人也會因不知從何學起而迷茫。本文將以密碼線上攻擊為例,透過分析每個實施步驟,梳理需要學習的具體知識,幫助初學者找準方向。
構建密碼字典
無論是線上攻擊還是離線攻擊,構建密碼字典都是破解密碼過程中最核心的環節,字典的好壞直接決定了密碼破解的效率和成功率。密碼攻擊的本質就是暴力破解,即用密碼組合窮舉的方式不停地去試探,直到“試”出正確的密碼。密碼組合的窮舉需要耗費大量的CPU資源,為了減輕CPU的壓力並方便重複利用,通常將窮舉的密碼組合儲存在文件裡,這個文件稱為密碼字典。
下面以構建日期字典為例:形如19951213的日期密碼由8位數字的排列組合,理論上來說有1億(10的8次方)個組合方式,但因為年月日都有各自的取值範圍,實際的組合數並沒有想象中那麼多,比如19590101到20181231之間總共只有2萬多個不同的組合。除了日期集合,還可以構建電話號碼集合、英文單詞集合、姓氏拼音集合。還可以對不同集合進行組合,構建更復雜的密碼,例如將姓氏拼音與日期組合成形如Chen19951213的密碼。
程式設計構建密碼字典的過程很簡單,比如日期字典只需要用三個迴圈巢狀就能完成;實現不同集合元素的組合,需要使用陣列或連結串列等資料結構;將生成的密碼儲存到文件,需要了解I/O知識。總結一下:構建密碼字典只需要用到流程控制、陣列或連結串列、I/O流等最基礎的程式設計知識,使用C、Java、Python等任何一種語言都能輕鬆實現。
搭建網站
密碼線上攻擊其實就是將字典中的使用者名稱和密碼按照特定格式組裝,然後向網站登入介面傳送登入請求,直至成功的過程。未經對方同意攻擊網站的做法是違法行為,所以請大家搭建自己的網站用於測試和學習。搭建網站的過程也並不複雜,目前主流的解決方案如Apache+Tomcat可以直接拿來使用,另外還需要學習配置資料庫,實現登入功能。需要學習的知識如下:
Web系統的基本架構:最簡單的Web系統可分為表示層(頁面)、邏輯層(使用者名稱和密碼驗證)、資料層(資料庫),需要了解不同層級的功能、工作流程、資料交換等方面的知識。
資料庫的配置:對主流資料庫如Oracle,MySQL,SQL Server都要有所瞭解,還需要掌握SQL語句的編寫;
登入頁面的編寫:學習HTML、JSP、PHP等頁面語言,會編寫簡單的登入介面,當然可以從網上下載,修改後使用;
驗證功能的實現:學習Web開發,比如JavaWeb(我只會這個),用sevlet實現明文密碼的加密和使用者名稱、密碼的驗證。
線上攻擊
密碼線上攻擊不是在登入頁面裡靠手動輸入使用者名稱密碼,而是透過程式設計實現。不知道大家平時有沒有發現這樣一個問題:在登入網站時,瀏覽器的位址列裡只會顯示域名,並不會顯示登入頁面的url。實現對頁面的線上攻擊要有的放矢,因此必須先找到登入頁面的完整url。此網路站伺服器的IP、協議、埠、頁面請求方式、失敗時的返回資訊都必須在攻擊之前掌握。所有這些都可以透過資料抓包和解析來實現,需要的知識有:
HTTP協議:兩種請求方法GET和POST,報文的格式;
抓包解析程式的編寫:Java、Python都有大量用於抓包的庫,可以直接使用,也可以自己動手編寫,當然這要建立在對TCP、HTTP充分理解的基礎上,另外需要學習的知識:正則表示式;
密碼碰撞程式的編寫:線上攻擊的最後一步就是編寫程式從字典中迴圈提取使用者名稱和密碼,組裝成Request向登入頁面發起攻擊,接受並分析Reponse,沒有發現失敗資訊說明攻擊成功,這一步也只需要最基本的程式設計知識。
總結
學習技術需要有工匠精神,在一個小的領域精益求精,任何人皆可成為大師。以上列出的知識框架是入門級的,但是每個知識點都值得深入挖掘探索。比如:在瞭解攻擊原理之後採取技術手段提高網站的安全性,然後尋找新的攻擊破解的辦法,如此往復。這樣“左右互搏”的學習方式,不僅能保持學習興趣,還能提高學習效率。很多讀者在之前文章的評論裡詢問如何入門,如果你真的對駭客技術感興趣並願意學習,不妨從密碼線上攻擊的例子學起,在與自己的較量中不斷進步。
回覆列表
根據我所知道的回答一下這個問題
攻防環境的搭建學習網路攻防,必須有一個可以學習的攻防環境。
直接在公網上進行攻防實驗會給自己帶來不必要的麻煩。
在公網上搜尋帶有特定安全漏洞的主機猶如大海撈針,很費時間,而且非常容易觸發入侵檢測系統之類的,給自己帶來麻煩。
靶機系統:帶有安全漏洞的主機,可以使用VMware虛擬機器安裝,基礎作業系統一般要包括Linux和Windows的。
攻擊系統:目前最流行的攻擊系統非Kail莫屬,Kail基於Ubuntu開發,擁有非常多的工具,非常適合用於網路滲透和審計。
主機作業系統:可以選擇windows系列或者linux系列的64位系統,為了支援大記憶體,建議使用win7 64位或者Ubuntu 64位。
硬體系統需要一個好點兒的電腦,由於需要安裝虛擬化軟體。記憶體要足夠大,建議8G以上的。
某寶上也有相關的課程可以購買。
網易雲上面也有相關免費課程