¿Quiere obtener acceso de superusuario a un sistema Linux? Estas son algunas de las mejores formas de enumerar una máquina Linux.

La enumeración es una de las etapas clave de las pruebas de penetración. Es lo primero que debe hacer cuando ha comprometido un sistema objetivo como probador de penetración. Aunque hay una gran cantidad de herramientas para automatizar este proceso, siempre se recomienda examinar manualmente y volver a verificar el sistema en busca de posibles vectores de escalada de privilegios.

Veamos las diferentes formas de enumerar manualmente un sistema Linux para la escalada de privilegios.

¿Por qué es importante la enumeración para la escalada de privilegios?

La escalada de privilegios, también conocida como Escalada de privilegios (EOP), es un componente central de las pruebas de penetración y la metodología de las pruebas de penetración. Como sugiere el nombre, es una etapa en la que intenta elevar sus privilegios al administrador o, en los sistemas Linux, al usuario raíz.

instagram viewer

Para obtener privilegios de root, primero debe encontrar una vulnerabilidad en el sistema. Aquí es donde entra en juego la enumeración. Aunque existen herramientas para automatizar la enumeración, la mayoría de las veces, la enumeración manual y exhaustiva puede descubrir errores de configuración y otras vulnerabilidades que las herramientas no detectan.

1. Enumeración del sistema

Lo primero que debe hacer después de obtener un punto de apoyo inicial es aprender sobre el sistema al que ha establecido acceso. Esto lo ayudará a optimizar sus cargas útiles para que coincidan con la arquitectura y garantizar la máxima compatibilidad de sus cargas útiles con el sistema de destino.

Por ejemplo, si tiene un exploit de 64 bits, deberá modificarlo si su sistema de destino solo admite software de 32 bits, ya que hay una diferencia entre los sistemas de 32 y 64 bits.

Además, conocer la versión del kernel lo ayudará a buscar vulnerabilidades en la web en caso de que descubra que la versión está desactualizada y es vulnerable a una vulnerabilidad pública. Aquí hay algunos comandos que lo ayudarán a obtener información del sistema:

Para encontrar información del sistema, como la versión del kernel, la versión del sistema operativo, etc., escriba:

gato /etc/cpuinfo 
uname -a

Si desea obtener más información sobre la arquitectura de la CPU, use el comando lscpu:

lscpu

2. Enumeración de procesos

Los procesos son programas en ejecución. Conocer la lista completa de procesos en un sistema Linux, junto con algunas otras tácticas de enumeración mencionado en esta guía lo ayudará a identificar procesos potencialmente vulnerables y aprovecharlos para elevar privilegio.

Por ejemplo, si encuentra un proceso que se ejecuta con privilegios de raíz, es posible que pueda inyectarle un código arbitrario que podría conducir a una escalada exitosa de privilegios.

Puedes usar el comando ps con el auxiliar banderas para listar todos los procesos en el sistema:

pd auxiliar

3. Enumeración de usuarios y grupos

La enumeración de usuarios y grupos es importante para determinar quién tiene acceso a qué parte del sistema. Saber eso le permite medir sus objetivos de manera eficiente y construir una estrategia de ataque efectiva. Además, puede crear asignaciones adecuadas y comprender en profundidad los roles y privilegios de cada cuenta.

Tener visibilidad de cuentas privilegiadas le permite probar combinaciones conocidas de nombre de usuario y contraseña. Puede imprimir el contenido de la /etc/passwd y /etc/group archivos para acceder a la lista de usuarios. Alternativamente, también puede usar el comando getent.

A obtener la lista de usuarios en Linux:

obtener contraseña

Para obtener la lista de grupos:

grupo de captadores

4. Investigación de archivos confidenciales

Archivos confidenciales como /etc/passwd y /etc/shadow potencialmente puede filtrar mucha información. De /etc/shadow puede encontrar los hash de la contraseña de los usuarios e intentar descifrarlos con una herramienta de descifrado de hash como Hashcat o John the Ripper.

También está el /etc/sudoers que, si puede editarlo de alguna manera, permitirá modificar los permisos de sudo para usuarios y grupos.

5. Comprobando los permisos de sudo

La gestión adecuada de los permisos de sudo es crucial para la seguridad de un sistema Linux. El análisis de los permisos de sudo le otorgará una idea de los posibles vectores para la escalada de privilegios. Si hay configuraciones incorrectas, como que ciertos programas tienen un nivel alarmante de privilegios, es posible que pueda explotarlos para obtener acceso de root.

Este es solo un ejemplo de las muchas vías de ataque que pueden abrirse una vez que tenga claros los permisos de sudo en el sistema Linux. Otro ejemplo sería abusar del mecanismo de precarga de la biblioteca LD_PRELOAD, que puede enumerar mirando los permisos de sudo.

sudo-l

6. Encontrar exploits del kernel de Linux

Los exploits del kernel de Linux son mortales porque atacan el núcleo del sistema operativo que se ejecuta en el sistema comprometido. Con una falla crítica del kernel, podrá hacer casi cualquier cosa con el sistema.

Para encontrar vulnerabilidades del kernel, primero, averigüe la versión del kernel y luego, use una herramienta como searchsploit o, usando Google idiotas, encuentre un exploit adecuado que afecte la versión exacta del kernel que se ejecuta en el sistema.

7. Explotación de binarios SUID

SUID es la abreviatura de Establecer ID de usuario de propietario al momento de la ejecución. Es un tipo especial de permiso de archivo que, cuando se establece, ejecuta un programa con los privilegios de su propietario.

Si el usuario root creó un programa y se configuró el bit SUID para él, el programa, cuando se ejecuta, poseerá privilegios de root. ¿Cómo se puede abusar de SUID? Es sencillo.

Enumere todos los archivos binarios con el conjunto de bits SUID, explore la lista, encuentre un archivo binario para el que tenga acceso de escritura y edite su fuente para agregar su carga útil. Puede utilizar el comando de búsqueda para buscar binarios SUID y redirigir la salida estándar a /dev/null:

encontrar / -perm -4000 2>/dev/null

8. Secuestro de bibliotecas

A veces puede haber programas ejecutándose en el sistema que utilizan bibliotecas que no están protegidas contra escritura. En tal escenario, puede sobrescribir fácilmente la biblioteca en uso y tomar el control de la funcionalidad del programa.

Si tiene suerte y encuentra un programa ejecutándose como root, podría secuestrar la biblioteca de la que depende y potencialmente obtener acceso al shell de root.

9. Investigación y secuestro de variables de entorno

Las variables de entorno son tipos especiales de variables que, hasta cierto punto, definen cómo funcionan el sistema y los programas. Una variable de entorno importante es la variable PATH.

Almacena la ubicación de todos los binarios ejecutables en el sistema. Puede manipular la variable PATH y encadenarla con otras vulnerabilidades, como el secuestro de bibliotecas, para obtener acceso a la raíz.

Por ejemplo, supongamos que hay un ejecutable con un conjunto de bits SUID. Para funcionar correctamente, está llamando a un binario sin definir su ruta completa.

Puede aprovechar esto creando una versión maliciosa duplicada del binario y actualizando la variable PATH con la ubicación de el binario malicioso, de modo que cuando se ejecuta el ejecutable SUID, su binario malicioso se ejecutará como root y podrá generar un shell de raíz.

Además, también hay una buena posibilidad de encontrar claves y contraseñas secretas simplemente mirando las variables de entorno. Puede imprimir todas las variables de entorno usando el comando env:

env

10. Encuentra artefactos en el historial de Bash

A menudo, el historial del usuario actual no se eliminará. Puede abusar de esto para obtener acceso potencial a información confidencial o volver a ejecutar comandos anteriores con parámetros modificados.

Aunque es probable que esto no conduzca a una escalada de privilegios, es una buena fuente de fugas de información para aclarar lo que el usuario suele hacer en el sistema.

11. Secuestro de trabajos cron vulnerables

Los trabajos cron son una característica integrada y muy ingeniosa de Linux. Si migró desde Windows, un trabajo cron se puede comparar directamente con una tarea programada en Windows.

Se ejecuta periódicamente y ejecuta comandos. Tanto la hora en que se ejecutará como los comandos que ejecutará están predefinidos por el usuario. A veces, puede encontrar algunos trabajos cron vulnerables a ataques como la inyección de comodines o que el usuario con el que ha iniciado sesión puede escribirlos.

Puede abusar de estas vulnerabilidades para obtener acceso de root al sistema. Para explotar un trabajo cron, primero debe encontrar uno vulnerable. Estos son los comandos para enumerar los trabajos cron que se están ejecutando actualmente y otros datos relevantes:

ls /etc/cron.d/
crontab -l -u

12. Listado de paquetes obsoletos

Cuando haya establecido el acceso a un sistema, uno de los primeros pasos que debe tomar es enumerar todos los paquetes de software instalados y contar sus versiones instaladas con su última versión.

Existe la posibilidad de que se instale algún paquete oscuro que no se use mucho pero que sea críticamente vulnerable a un ataque de escalada de privilegios. Luego puede explotar ese paquete para obtener acceso de root.

Use el comando dpkg con el -l etiqueta para enumerar los paquetes instalados en los sistemas basados ​​en Debian y Ubuntu:

dpkg-l

Para los sistemas RHEL/CentOS/Fedora, use este comando para enumerar los paquetes instalados:

rpm-qa 

Ahora sabe cómo enumerar manualmente Linux para la escalada de privilegios

La escalada de privilegios depende únicamente de la enumeración. Cuanta más información tenga acceso, mejor podrá planificar sus estrategias de ataque.

La enumeración eficiente es clave para establecer un punto de apoyo, aumentar los privilegios y persistir con éxito en su sistema de destino. Aunque hacer las cosas manualmente ayuda, algunas de las tareas se pueden asignar a herramientas automatizadas para ahorrar tiempo y esfuerzo. Debe conocer las mejores herramientas de seguridad para escanear un sistema en busca de vulnerabilidades.