內網滲透——PSExec工具
簡介
PsExec 是由 Mark Russinovich 創建的 Sysinternals Suite中包含的工具。最初,它旨在作為系統管理員的便利工具,以便他們可以通過在遠程主機上運行命令來執行維護任務。后來因為太過方便,被利用到內網滲透之中。現在PsExec類的工具有各種語言的實現,如Metasploit的psexec psexec psh, Impacket psexec, pth-winexe, Empire Invoke-Psexec等等。
PsExec是一個輕量級的telnet替代工具,它使您無需手動安裝客戶端軟件即可執行其他系統上的進程,並且可以獲得與命令控制台幾乎相同的實時交互性。PsExec最強大的功能就是在遠程系統和遠程支持工具(如ipconfig、whoami)中啟動交互式命令提示窗口,以便顯示無法通過其他方式顯示的有關遠程系統的信息。
系統管理員通常會使用這款工具來遠程執行腳本,例如組件安裝腳本或數據收集腳本。這種方法不僅操作起來非常的簡單,而且還可以節省資源。最重要的是,這種方法還可以避免服務器出現漏洞。除此之外,很多人也會將其用於軟件部署的過程中,雖然也有很多其他的工具可以選擇,但是PsExec追求的是性價比。
同樣的,攻擊者也是考慮到了這些因素所以才會選擇PsExec的。除了上述原因之外,還有下面這幾點:
-
這些工具屬於合法工具,因此當反病毒軟件或終端檢測產品檢測到了這類惡意軟件之后,有可能只會發出警告,或者直接忽略它們。具體將取決於用戶的設置情況。
-
這些工具可以直接從微軟的官方網站免費下載獲取。
-
如果攻擊者在惡意軟件中使用這些工具的話,目標用戶的計算機中很可能已經安裝好這些工具了,所以這也為攻擊者提供了方便。
工作原理
PsExec特點:
- psexec遠程運行需要遠程計算機啟用文件和打印共享且默認的Admin$共享映射到C:windows目錄。
- psexec建立連接之后目標機器上會被安裝一個“PSEXESVC”服務。但是psexec安全退出之后這個服務會自動刪除(在命令行下使用exit命令退出)。
PsExec詳細運行過程:
-
- TCP三次握手,通過SMB會話進行身份驗證。
- 連接
admin$
共享,通過 SMB 訪問默認共享文件夾ADMIN$
,寫入PSEXESVC.exe文件; - 利用ipc命名管道調用svcctl服務
- 利用svcctl服務開啟psexesvc服務
- 生成4個命名管道以供使用。一個psexesvc管道用於服務本身,另外的管道stdin(輸入)、stdout(輸出)、stderr(輸出)用於重定向進程。
作為滲透工具的缺點
- 特征明顯,psexec類工具會釋放文件,市面上的殺毒軟件基本都能檢測到。
- 執行過程中需要安裝服務,會留下日志,容易通過溯源推測出攻擊過程,並且退出時偶爾會出現服務不能刪除的情況。
- 條件限制,需要開啟admin$ 445端口共享。
使用流程
定位域控
利用nslookup定位DC
無IPC連接
我們在win7的機器上查看了解情況,若無共享的連接,則我們在使用PsExec的時候需要使用賬號密碼進行驗證
PsExec.exe \\192.168.43.100 -u username -p password
無需彈出新的cmd窗口,直接拿下域控
有IPC連接
這個時候無需驗證賬號密碼
PsExec.exe \\192.168.43.100 cmd.exe
Msf中的Psexec模塊
use exploit/windows/smb/psexec
set RHOST 192.168.43.100
set smbuser usernmae
set smbpass password
run
使用技巧
remote UAC
UAC是什么?UAC是微軟在Windows Vista 以后版本引入的一種安全機制,可以阻止未經授權的應用程序自動進行安裝,並防止無意中更改系統設置。對於UAC保持默認或者更高的話,共享時可能會出現拒絕訪問的情況
這時,可以修改注冊表,將UAC設置為最低
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem添加新DWORD值,鍵值:LocalAccountTokenFilterPolicy 為1。