20189320《網絡攻防》第九周做業

1、Kali視頻學習總結

(一)壓力測試工具

       壓力測試經過肯定一個系統的瓶頸或者不能接受的性能點,來得到系統能提供的最大的服務級別的測試。通俗地講,壓力測試是爲了發如今什麼條件下你的應用程序的性能會變得不可接受。
       Kali下壓力測試工具包括VoIP壓力測試工具、WEB壓力測試、網絡壓力測試及無線壓力測試四個分類。linux

       1.VoIP壓力測試工具

       包括iaxflood和inviteflood。git

       2.THC-SSL-DOS

       藉助WEB壓力測試下的THC-SSL-DOS攻擊工具,任何人均可以把提供SSL安全鏈接的網站攻擊下線,這種攻擊方法被稱爲SSL拒絕服務攻擊。德國黑客組織「The Hacker’s Choice」發佈THC SSL DOS,利用SSL中的已知弱點,迅速消耗服務器資源,與傳統DDos工具不一樣的是,它不須要任何帶寬,只須要一臺執行單一攻擊的電腦
       漏洞存在於協議的renegotiation過程當中,renegotiation被用於瀏覽器到服務器之間的驗證。
       算法

       3.dhcpig

       耗盡DHCP資源池的壓力測試。
       sql

       4.IPv6攻擊工具包

       由THC發佈的IPv6攻擊工具包包括:
       shell

       5.Inundator

       IDS/IPS/WAF壓力測試工具,經過耗盡對方的認證資源來實現壓力測試攻擊。編程

       6.Macof

       可作泛洪攻擊。
       windows

       7.Siege

       Siege是一個壓力測試和評測工具,設計用於WEB開發者評估應用在壓力下的承受能力:能夠根據配置對一個WEB站點進行多用戶的併發訪問,記錄每一個用戶全部請求過程的相應時間,並在必定數量的併發訪問下重複進行。Siege功能比較強大,進行攻擊的同時還能夠進行數據分析。
       數組

       8.T50壓力測試

       T50 Sukhoi PAK FA Mixed Packet Injector是一個壓力測試工具,它功能強大且具備獨特的數據包注入工具。T50支持*nix系統可進行多種協議的數據包注入,實際上支持15種協議。T50的主要特色:瀏覽器

  • Flooding.
  • CIDR support.
  • TCP, UDP, ICMP, IGMPv2, IGMPv3, EGP, DCCP, RSVP, RIPv2, GRE, ESP, AH, EIGRP and OSPF support.
  • TCP Options.
  • High performance.
  • Can hit about 1000000 packets per second.

       

       9.無線壓力測試

       包括介紹過的MDK3和Reaver。
       
       安全

(二)數字取證工具

       數字取證技術將計算機調查和分析技術應用於對潛在的、有法律效力的電子證據的肯定與獲取,一樣它們都是針對黑客和入侵的,目的都是保障網絡安全。Kali Linux下有豐富的數字取證工具:

       1.PDF取證工具集

       包括peepdf、pdf-parser和pdfid。
       其中,peepdf是一個使用Python編寫的PDF文件分析工具,它能夠檢測惡意的PDF文件。其設計目標是爲安全研究人員提供PDF分析中可能用到的全部組件,無需使用3或4種工具完成同一件任務。
       

       2.反數字取證chkrootkit

       chkrootkit是一個Linux系統下的查找檢測rootkit後門的工具,是判斷系統是否被植入rootkit的利器
       
       

       3.內存取證工具集

       包括Volatility和Volafox。
       其中,Volatility是開源的Windows,Linux,MaC,Android的內存取證分析工具,由Python編寫而成,命令行操做,支持各類操做系統。Volatility功能比較強大,能夠直接分析抓取的內存狀態
       

       4.取證分割工具binwalk

       binwalk是一個固件的分析工具,旨在協助研究人員對固件分析、提取及逆向工程用處。簡單易用,徹底自動化腳本,並經過自定義簽名,提取規則和插件模塊,更重要的一點是能夠輕鬆地擴展。
       
       藉助binwalk有個很強大的功能是提取文件(壓縮包)中存在的隱藏文件(或內容文件),亦可分析文件格式

       5.取證哈希驗證工具集

       包括md5deep和rahash2。
       其中,md5deep是一套跨平臺的方案,能夠計算和比較MD5等哈希加密信息的摘要MD五、SHA-一、SHA-25六、Tiger、Whirlpool。
       
       

       6.取證鏡像工具集

       針對鏡像文件的取證工具,如mmsstatmmls等命令。
       

       7.數字取證套件

       數字取證目錄較爲精簡,對應有數字取證套件,包括DFF、autopsy等工具。DFF和autopsy均具備圖形化界面。
       其中,DFF(Digital Forensics Framework)是一個簡單但強大的數字取證工做輔助工具,它具備一個靈活的模塊系統,具備多種功能,包括:恢復錯誤或崩潰致使的文件丟失,證據的研究和分析等。DFF提供了一個強大的體系結構和一些有用的模塊。
       而autopsy提供了一個瀏覽器控制檯 。
       
       點擊如上圖所示的連接,打開autopsy的瀏覽器頁面:
       
       

(三)報告工具與系統服務

       一次完整的滲透測試,最後總要完成一份優雅的報告做爲一個小結。相應地,Kali Linux爲安全工程師準備了報告工具集,包括Documentation、媒體捕捉和證據管理三個部分。其中,Documentation包括Dradis和Keepnote兩個工具,媒體捕捉包括Cutycapt和Recordmydesktop兩個工具,證據管理包括Maltego、Casefile等工具。
       同時,對於Kali Linux下的各項系統服務,整理以下:

       1.Dradis:基於瀏覽器的在線筆記

       Dradis是一個用於提升安全檢測效率的信息共享框架(協做平臺)。它提供了一個集中的信息倉庫,用於標記咱們目前已經作的工做和下一步計劃。

       2.Keepnote

       一個很精簡的筆記軟件,具備以下特色:

  • 富文本格式:彩色字體,內置圖片,超連接(即:能保存整個網頁的圖品文字等完整信息)。
  • 樹形分層組織內容:分門別類,一目瞭然(很重要)。
  • 全文搜索。
  • 綜合截圖:屏幕截圖後,能夠在筆記中直接插入截圖。
  • 文件附件。
  • 集成的備份和恢復。
  • 拼寫檢查(經過gtkspell)。
  • 自動保存。
  • 內置的備份和恢復(zip文件存檔)。

       

       3.Cutycapt

       將網頁內容截成圖片保存。
       

       4.Recordmydesktop

       屏幕錄像工具,用來錄製桌面。
       

       5.Maltego Casefile

       屬於報告工具集中的證據管理。

       6.MagicTree

       是一個面向滲透測試人員的工具,能夠幫助咱們輕鬆直接地進行數據合併、查詢、外部命令執行和報告生成。全部的數據都會以樹形結構存儲,很是方便。
       

       7.Truecrypt

       一款免費開源的加密軟件,同時支持Windows Vista、7/XP、Mac OS X、Linux等操做系統。

       8.系統服務介紹

  • BeEF:對應XSS測試框架BeEF的啓動與關閉。
  • Dradis:對應筆記本分享服務Dradis的啓動與關閉。
  • HTTP:對應Kali本機WEB服務的啓動與關閉。
  • Metasploit:對應Metasploit服務的啓動與關閉。
  • Mysql:對應Mysql服務的啓動與關閉。
  • OpenVas:對應掃描器Openvas服務的啓動與關閉。
  • SSH:對應SSH服務的啓動與關閉。

2、教材學習總結

(一)惡意代碼基礎知識

       1.惡意代碼定義與分類

       (1)惡意代碼定義

       惡意代碼指的是使計算機按照攻擊者的意圖執行以達到惡意目標的指令集。

       (2)惡意代碼類型

       惡意代碼能夠根據其執行方式、傳播方式和對攻擊目標的影響分爲計算機病毒、蠕蟲、惡意移動代碼、特洛伊木馬、後門、殭屍程序、內核套件等。須要注意的是,一些惡意代碼會綜合使用多種技術,因此具備多種分類的特性,能夠歸爲融合型惡意代碼。

       2.計算機病毒

       (1)計算機病毒的定義

       ①Fred Cohen首次提出計算機病毒的概念:計算機病毒是一個能感染其餘程序的程序,它靠篡改其餘程序,並把自身的拷貝嵌入其餘程序而實現病毒的感染。隨後他進一步將計算機病毒定義爲:病毒程序經過修改其餘程序的方法將本身的精確複製或可能演化的形式放入其餘程序中,從而感染它們。
       ②Ed Skoudis爲了給出計算機病毒和蠕蟲的區別,給出瞭如下定義:計算機病毒是一種可以自我複製的代碼,經過將自身嵌入其餘程序進行感染,而感染過程一般須要人工干預才能完成。
       ③1994年《中華人民共和國計算機安全保護條例》給出了我國對計算機病毒的具備法規效力的定義:計算機病毒是指編制或者在計算機程序中插入的,破壞計算機功能或數據、影響計算機使用,並能自我複製的一組計算機指令或者程序代碼。

       (2)計算機病毒的基本特性:感染性、潛伏性、可觸發性、破壞性和衍生性。

       (3)計算機病毒潛在的感染目標可分爲:可執行文件、引導扇區和支持宏指令的數據文件三大類。

       (4)計算機病毒的傳播機制

       一旦病毒在計算機系統中被觸發,它就會尋找可供感染的宿主程序位置,並複製自身並寄生在宿主上,病毒可能依附在移動存儲或硬盤的引導扇區,或者能夠嵌入代碼的文檔、可執行文件或者腳本文件。然而在一般意義下,病毒不會像蠕蟲同樣可以自主地跨越網絡傳播,而是須要藉助人類的幫助從一臺計算機傳播到另外一臺計算機。
       計算機病毒的傳播渠道包括移動存儲、電子郵件及下載、共享目錄等。

       3.網絡蠕蟲

       (1)網絡蠕蟲的定義

       網絡蠕蟲是一種能夠自我複製的代碼,而且經過網絡傳播,一般無須人爲干預就能傳播。

       (2)網絡蠕蟲的基本特性

       網絡蠕蟲的定義特性在於經過網絡的自主傳播。而計算機病毒的定義特性在於感染宿主,包括可執行文件、數據文檔或磁盤引導扇區,而蠕蟲則沒有必要感染宿主。

       (3)網絡蠕蟲的組成結構

       典型的蠕蟲內部組成結構包括:「彈頭」、傳播引擎、目標選擇算法和掃描引擎、有效載荷。

       4.後門與木馬

       (1)後門的定義

       從定義特性上進行分析,後門是容許攻擊者繞過系統常規安全控制機制的程序,可以按照攻擊者本身的意圖提供訪問通道。

       (2)木馬的定義

       做爲特洛伊木馬的簡稱,木馬是指一類看起來具備某個有用或善意目的的,但實際掩蓋着一些隱藏惡意功能的程序。

       (3)後門工具可以爲攻擊者提供多種不一樣類型的訪問通道,包括:

  • 本地權限提高和本地帳號:使得攻擊者可以將其權限等級提高爲系統管理員,或者新增一個本地帳戶,有了這些用戶權限。攻擊者能夠任意訪問系統及其文件。
  • 單個命令的遠程執行:攻擊者能夠經過此類後門單獨執行一個命令,並得到命令運行結果。
  • 遠程命令行解釋器訪問:即遠程Shell,這類後門容許攻擊者經過網絡快速直接地輸入可以在目標系統上運行的Shell命令,並得到運行結果。
  • 遠程控制GUI:可以以圖形化界面的方式來訪問目標系統,並提供較遠程Shell功能更多、更簡單易用的訪問接口。
  • 無故口後門:能夠無須打開TCP或者UDP監聽端口的無故口後門。

       5.殭屍程序與僵屍網絡

       (1)僵屍網絡的定義

       僵屍網絡是指攻擊者出於惡意目的,傳播殭屍程序控制大量主機,並經過一對多的命令與控制信道所組成的網絡。

       (2)僵屍網絡的基本特性

       僵屍網絡區別於其餘攻擊方式的基本特性是使用一對多的命令與控制機制。另外,僵屍網絡還具備惡意性和網絡傳播性。

       (3)僵屍網絡的功能結構

       僵屍網絡能夠分爲主體功能模塊和輔助功能模塊,主體功能模塊包括實現僵屍網絡定義特性的命令與控制模塊和實現網絡傳播特性的傳播模塊,而包含輔助功能模塊的殭屍程序則具備更強大的攻擊功能和更好的生存能力。

       (4)殭屍程序的命令與控制機制

       當前主流使用的僵屍網絡命令與控制機制包括:基於IRC協議的命令與控制機制、基於HTTP協議的命令與控制機制和基於P2P協議的命令與控制機制這三大類。

(二)惡意代碼分析方法

       1.惡意代碼分析技術概述

       (1)代碼分析的定義

       代碼分析,或稱程序分析,是按需求使用必定的規則、方法和工具對計算機程序進行分析,以推導出其程序結構、數據流程和程序行爲的處理過程。

       (2)惡意代碼分析的定義

       惡意代碼分析就是利用一系列的程序分析技術方法、流程和工具,來識別惡意代碼關鍵程序結構和行爲特徵的過程。

       (3)惡意代碼分析的技術方法分類

       惡意代碼分析的技術方法主要包括靜態分析和動態分析兩大類。

       2.惡意代碼分析環境

       對於惡意代碼分析實踐而言,一個可以徹底受控、易於構建與恢復的分析環境是必需的。
       惡意代碼分析環境分爲:惡意代碼發燒友的分析環境、基於虛擬化構建惡意代碼分析環境和用於研究的惡意代碼自動分析環境。

       3.惡意代碼靜態分析技術

       (1)惡意代碼靜態分析的定義

       靜態代碼分析方法在不實際執行軟件代碼狀況下對惡意代碼進行自動化或輔助分析,經過包括使用反病毒引擎掃描識別已知的惡意代碼家族和變種,逆向分析獲取惡意代碼的關鍵程序信息、模塊構成、內部數據結構和關鍵控制流程,理解惡意代碼的機理,並提取特徵碼用於檢測。

       (2)惡意代碼靜態分析的主要技術手段

       惡意代碼靜態分析的主要技術手段具體包括:反病毒軟件掃描、文件格式識別、字符串提取分析、二進制結構分析、反彙編、反編譯、代碼結構與邏輯分析、加殼識別與代碼脫殼等。

       4.惡意代碼動態分析技術

       (1)惡意代碼動態分析的定義

       動態代碼分析方法是經過在受控環境中執行待分析的目標惡意代碼,並利用系統、網絡、甚至指令層次上的監控技術手段,來獲取目標代碼的行爲機理和運行結果。

       (2)惡意代碼動態分析的主要技術手段

       惡意代碼動態分析的主要技術手段具體包括:快照比對、系統動態行爲監控、網絡協議棧監控、沙箱、動態調試等。

(三)軟件安全概述

       1.軟件安全漏洞威脅

       能夠被攻擊者利用並致使危害的安全缺陷被稱爲軟件安全漏洞。安全漏洞的範疇不限於軟件安全漏洞,還包括硬件、我的與組織管理中存在的、可以被攻擊者利用來破壞安全策略的弱點,可是軟件安全漏洞是目前最多見,也是影響範圍最大的安全漏洞類型
       軟件安全漏洞構成了目前安全漏洞最爲主要的部分,也是計算機安全應急響應組織所關注的重點。

       2.軟件安全困境

       著名信息安全專家G. Hoglund和G. McGraw提出了軟件安全「困境三要素」:複雜性、可擴展性和連通性。軟件的這三個要素共同做用,使得軟件的安全風險管理成爲一個巨大的挑戰,從而很難根除安全漏洞。

       3.軟件安全漏洞類型

       從技術上主要包括以下幾類:

       (1)內存安全違規類

       內存安全違規類漏洞是在軟件開發過程當中在處理RAM內存訪問時所引入的安全缺陷。緩衝區溢出漏洞是一種最基礎的內存安全問題。

       (2)輸入驗證類漏洞

       輸入驗證類安全漏洞是指軟件程序在對用戶輸入進行數據驗證存在的錯誤,沒有保證輸入數據的正確性、合法性和安全性,從而致使可能被惡意攻擊與利用。

       (3)競爭條件類

       競爭條件類缺陷是系統或進程中一類比較特殊的錯誤,一般在涉及多進程或多線程處理的程序中出現,是指處理進程的輸出或者結果沒法預測,並依賴於其餘進程事件發生的次序或時間時,所致使的錯誤。

       (4)權限混淆與提高類

       權限混淆與提高類漏洞是指計算機程序因爲自身編程疏忽或被第三方欺騙,從而濫用其權限,或賦予第三方不應給予的權限。

(四)緩衝區溢出基礎概念

       

       1.緩衝區溢出的基本概念

       緩衝區溢出是計算機程序中存在的一類內存安全違規類漏洞,在計算機程序向特定緩衝區內填充數據時,超出了緩衝區自己的容量,致使外溢數據覆蓋了相鄰內存空間的合法數據,從而改變程序執行流程破壞系統運行完整性。
       緩衝區溢出攻擊發生的根本緣由:現代計算機系統的基礎架構——馮·諾依曼體系存在本質的安全缺陷,即採用了「存儲程序」的原理,計算機程序的數據和指令都在同一內存中進行存儲,而沒有嚴格的分離。這一缺陷使得攻擊者能夠將輸入的數據,經過利用緩衝區溢出漏洞,覆蓋修改程序在內存空間中與數據區相鄰存儲的關鍵指令,從而達到使程序執行惡意注入指令的攻擊目的。

       2.緩衝區溢出漏洞的分類

       緩衝區溢出漏洞根據緩衝區在進程內存空間中的位置不一樣,又分爲棧溢出、堆溢出和內核溢出這三種具體技術形態。
       (1)棧溢出是指存儲在棧上的一些緩衝區變量因爲存在缺少邊界保護問題,可以被溢出並修改棧上的敏感信息(一般是返回地址),從而致使程序流程的改變。
       (2)堆溢出是指存儲在堆上的緩衝區變量缺少邊界保護所遭受溢出攻擊的安全問題。
       (3)內核溢出漏洞存在於一些內核模塊或程序中,是因爲進程內存空間內核態中存儲的緩衝區變量被溢出形成的。

(五)Linux平臺上的棧溢出與Shellcode

       1.Linux平臺棧溢出攻擊技術

       Linux平臺中的棧溢出攻擊按照攻擊數據的構造方式不一樣,主要有NSR、RNS和RS三種模式。

       2.Linux平臺的Shellcode實現技術

       Shellcode是一段機器指令,對於咱們一般接觸的IA32架構平臺,Shellcode就是符合Intel 32位指令規範的一串CPU指令,被用於溢出以後改變系統正常流程,轉而執行Shellcode以完成滲透測試者的攻擊目的,一般是爲他提供一個訪問系統的本地或遠程命令行訪問(即Shell)
       按照在本地溢出攻擊和遠程溢出攻擊使用場景的不一樣,分爲本地Shellcode和遠程Shellcode。

       (1)Linux本地Shellcode實現機制

       Linux系統本地Shellcode一般提供的功能就是爲攻擊者啓動一個命令行Shell。
       Shellcode的通用方法:
       ①先用高級編程語言,一般用C,來編寫Shellcode程序;
       ②編譯並反彙編調試這個Shellcode程序;
       ③從彙編語言代碼級別分析程序執行流程;
       ④整理生成的彙編代碼,儘可能減少它的體積並使它可注入,並可經過嵌入C語言進行運行測試和調試;
       ⑤提取彙編代碼所對應的opcode二進制指令,建立Shellcode指令數組。

       (2)Linux遠程Shellcode實現機制

       Linux系統上的遠程Shellcode的實現原理與本地Shellcode徹底一致,也是經過執行一系列的系統調用來完成指定的功能。實現方法步驟也是首先給出高級語言的功能代碼實現,而後經過反彙編調試編譯後的二進制程序,提取、優化和整理所得到的彙編代碼,並最終產生opcode二進制指令代碼。

(六)Windows平臺上的棧溢出與Shellcode

       1.Windows平臺棧溢出攻擊技術

       Windows操做系統平臺在不少方面與與Linux操做系統具備顯著不一樣的實現機制,而在這些差別中,與成功攻擊應用程序中棧溢出漏洞密切相關的主要有以下三點:
       (1)對程序運行過程當中廢棄棧的處理方式差別
       當一個函數調用完成返回至調用者,執行下一條指令以前,Windows平臺會向廢棄棧中寫入一些隨機的數據,而Linux則不進行任何的處理。
       (2)進程內存空間的佈局差別
       Windows操做系統的進程內存空間佈局與Linux存在着不一樣,Linux進程內存空間中棧底指針在0xc0000000之下,即通常棧中變量的位置都在0xbfff地址附近,在這些地址中沒有空字節。Windows平臺的棧位置處於0x00FFFFFF如下的用戶內存空間,通常爲0x0012地址附近,而這些內存地址的首字節均爲0x00空字節。
       (3)系統功能調用的實現方式差別
       Windows平臺上進行操做系統功能調用的實現方法較Linux更加複雜,Linux系統中經過「int 80」中斷處理來調用系統功能,而Windows系統則是經過操做系統中更爲複雜的API及內核處理例程調用鏈來完成系統功能調用,對應用程序直接可見的是應用層中如kernel32.dll、User32.dll等系統動態連接庫中導出的一些系統API接口函數。

       2.Windows平臺的Shellcode實現技術

       按照在本地溢出攻擊和遠程溢出攻擊使用場景的不一樣,分爲本地Shellcode和遠程Shellcode。

       (1)Windows本地Shellcode實現機制

       在Windows平臺上,典型的本地Shellcode一樣也是啓動一個命令行Shell,即「command.com」或「cmd.exe」。

       (2)Windows遠程Shellcode實現機制

       與Linux系統相似,更爲經常使用的Shellcode是能夠在遠程滲透攻擊中使用的,可以給出shell網絡訪問的遠程Shellcode。
       Windows遠程Shellcode的C語言實現示例代碼,其大體過程以下:
       ①建立一個服務器端socket,並在指定的端口上監聽;
       ②經過accept()接受客戶端的網絡鏈接;
       ③建立子進程,運行「cmd.exe」,啓動命令行;
       ④建立兩個管道,命令管道將服務器端socket接收(recv)到的客戶端經過網絡輸入的執行命令,鏈接至cmd.exe的標準輸入;而後輸出管道將cmd.exe的標準輸出鏈接至服務器端socket的發送(send),經過網絡將運行結果反饋給客戶端。

(七)堆溢出攻擊

       堆溢出攻擊是緩衝區溢出中第二種類型的攻擊方式,因爲堆中的內存分配與管理機制較棧更爲複雜,不一樣操做系統平臺的實現機制都具備顯著的差別,同時經過堆中的緩衝區溢出控制目標程序執行流程須要更精妙的構造,所以堆溢出攻擊的難度較棧溢出要複雜不少,真正掌握、理解並運用堆溢出攻擊也更爲困難一些。

(八)緩衝區溢出攻擊的防護技術

       經過以上對緩衝區溢出攻擊技術的介紹,咱們知道攻擊者一般先經過溢出植入攻擊代碼,而後經過修改關鍵數據結構改變程序執行流程,最後讓攻擊代碼執行。因此,天然而然地,針對緩衝區溢出攻擊的防護技術圍繞着如何組織這三步中任何一步失效,來達到抵禦緩衝區溢出攻擊的能力。

       1.嘗試杜絕溢出的防護技術

       解決緩衝區溢出攻擊最根本的方法是編寫正確的、不存在緩衝區溢出安全漏洞的軟件代碼,但因爲C/C++語言做爲效率優先的語言,很容易就會出現緩衝區溢出。

       2.容許溢出但不讓程序改變執行流程的防護技術

       這種防護技術容許溢出發生,但對可能影響到程序流程的關鍵數據結構實施嚴密的安全保護,不讓程序改變其執行流程,從而阻斷溢出攻擊。

       3.沒法讓攻擊代碼執行的防護技術

       這種防護技術嘗試解決馮·諾依曼體系的本質缺陷,經過堆棧不可執行限制來防護緩衝區溢出攻擊。

相關文章
相關標籤/搜索