Puedes ver las cinco partes anteriores de este post aquí:
Enumeración en Linux para Post-Explotación – Parte 1.
Enumeración en Linux para Post-Explotación – Parte 2.
Enumeración en Linux para Post-Explotación – Parte 3.
Enumeración en Linux para Post-Explotación – Parte 4.
Enumeración en Linux para Post-Explotación – Parte 5.
En el sistema comprometido pueden haber utilidades que permitan acceder a características o información sensible y este es uno de los motivos por los que es importante, en un proceso de post-explotación, realizar un análisis de la memoria de los procesos encontrados así como consultar el listado de GTFOBins para ver si alguno de los binarios disponibles en el sistema pueden ser aprovechados de algún modo. Estos dos puntos serán los que se explorarán en este post.
Una vez se gana acceso al sistema es posible que algunos procesos tengan información sensible almacenada en la memoria, concretamente en la heap del programa. Si el sistema comprometido cuenta con herramientas de depuración como por ejemplo el GNU Dubugger (GDB) es posible que se pueda cargar dicho proceso con el depurador y a continuación hacer un “dump” de la memoria. Para que esto funcione es necesario que el usuario con el que se está trabajando tenga permisos suficientes para acceder a dicho proceso, lo cual no siempre es posible pero es algo que se debe comprobar. Uno de los focos iniciales que podrían ser interesantes son aquellos procesos que se encuentran asociados a alguna conexión con un servidor remoto, especialmente aquellas que utilizan algún protocolo como FTP, SMTP, POP, IMAP, HTTP, entre otros, ya que en la memoria de dichos procesos se pueden encontrar credenciales de usuario y otros detalles interesantes en texto plano.
Para probar lo anterior, en la imagen se puede apreciar que se establece una conexión contra un servidor FTP y se puede ver que el proceso que está vinculado a dicha conexión es el “1724”. A continuación, si es posible acceder al proceso con los permisos asignados a dicho usuario, se puede ejecutar el comando “gdb -p 1724”. Una vez abierto el GDB se consultan las direcciones de memoria y a continuación, se ejecuta un volcado de lo que haya en la “heap” del proceso, que es sin duda la parte más interesante ya que es en donde se quedarán guardados algunos detalles sobre el proceso y otros objetos que se van creando sobre la marcha durante la ejecución del programa.
Como se puede apreciar, el volcado se ha generado correctamente gracias al comando “dump memory” de GDB, a continuación solamente hace falta salir del depurador y ejecutar un comando como “strings” para analizar la memoria. En este punto, dependiendo del tamaño del fichero, es posible que sea necesario filtrar con “grep” para entrar información que puede ser sensible, como por ejemplo usuarios y contraseñas. De hecho, para hacerlo de una forma más cómoda, dicho fichero se puede transferir a la máquina del atacante y posteriormente realizar el análisis correspondiente.
Hace algunas semanas se ha publicado una serie de posts sobre Enumeración en Windows para Post-explotación y en la parte 6 de dicha serie se ha hablado sobre el proyecto LOLBas y su filosofía. El proyecto GTFOBins es similar pero orientado a sistemas Unix. Cuenta con una colección amplia de binarios y utilidades que se encuentran disponibles en sistemas Unix y que pueden servir para exfiltrar información, acceder a directorios restringidos y en algunos casos elevar privilegios. Algunos de los GTFObins más comunes se listan a continuación.
Uno de los usos más comunes de esta utilidad es precisamente el de ejecutar diferentes tipos de procesamientos sobre la salida que genera algún comando, no obstante tal como se indica en el proyecto de GTFOBins también se puede utilizar para generar una reverse shell.
Se trata de una utilidad que en sistemas basados en Unix es de vital importancia para ver los registros, logs y eventos que se han ido produciendo en el sistema, especialmente útil para efectos de depuración de errores o fallos que se producen en el kernel. En algunas versiones de esta herramienta se encuentra disponible la opción -H que permite indicar un comando arbitrario, evidentemente dicho comando puede ser una shell local o una reversa. Otras alternativas para explotar esta herramienta se encuentran detalladas en GTFOBins
El comando FIND también es una de las utilidades más comunes en los sistemas basados en Unix a la hora de ejecutar búsquedas en el sistema. En algunas versiones de este binario se admite la opción “-exec” la cual permite la ejecución de una instrucción en el caso de que haya una coincidencia en la búsqueda. Por ejemplo, en la imagen que se enseña a continuación, en el momento en el que se encuentra el directorio “tmp” se ejecutan los comandos indicados, primero “/bin/sh” el cual genera una shell simple en el sistema y luego, una shell reversa con netcat. Algo bastante simple pero que permite ver la dinámica de este GTFOBin
Se trata de algunas técnicas que complementan las ya vistas y que evidentemente, también hacen parte de ese “check-list” que se suele llevar a cabo en la etapa de post-explotación en sistemas Linux. Si te ha parecido interesante te invito a que dejes un comentario en este post con tus impresiones.
Un saludo y Happy Hack!
Adastra.