BoomER - Recolectando info en Linux - BoomerNiX

martes, 27 de noviembre de 2018

BoomER - Recolectando info en Linux

En esta ocasión vamos a ver un ejemplo de recolección de información en los sistemas Linux. Contamos con un módulo en BoomER que trata de encontrar en un determinado directorio, que es indicado en las opciones, los ficheros con el bit SUID y/o SGID y que tengan como propietario a root.

¿Por qué se querrá encontrar este tipo de archivos? La respuesta más directa que se puede dar es, por si los podemos utilizar para una escalada de privilegios. Pero si se entra más en detalle para comprenderlo:
  • SUID >> Sirve para indicar, que el fichero se va a ejecutar con los permisos del creador del fichero.
  • SGID >> Exactamente lo mismo que SUID, pero dirigida al grupo, por lo tanto, se ejecutará con los permisos del grupo al que pertenece.
  • Usuario Root >> Nos interesa para la elevación de privilegios, un usuario estándar no será de nuestro interés.
Este módulo se puede ejecutar de 2 formas:
  • Recursiva: busca los ficheros a partir de un directorio indicado.
  • Normal: solo busca ficheros en un determinado directorio.
El resultado se mostrará por pantalla, pero también se puede guardar en un fichero (la ruta por defecto es una carpeta interna de la herramienta), ya que nos permitirá consultarlo más adelante.
Para llevar a cabo esta prueba, se utilizarán los siguientes comandos:
  1. load linux/gathering/suid_sgid_root
  2. put path /bin
  3. put recursive False
  4. run
Y al ejecutarlo, en modo no recursivo, se tiene el siguiente resultado (la línea que pone Recursive mode se trata de un pequeño fallo que teníamos al pintar el modo que se lanzaba o.O):


Si se comprueba la dirección indicada para el fichero, y se abre el documento se obtiene la misma información que la que se vio en la terminal:


El código se puede consultar en GitHubDestacaremos los puntos más importantes, que son las líneas que nos ayudan a comprobar SUID o SGID:

if (mode & S_ISUID) == 2048:
if (mode & S_ISGID) == 1024:

Las variables S_ISUID y S_ISGID están definidas en el módulo stat, basta con importarlas y la variable mode se obtiene del siguiente código:

f = stat(file_name)
mode = f.st_mode

Indicar que stat se encuentra en el módulo os.

Pues aquí terminamos con este post. ¡Nos vemos en la próxima entrada!

No hay comentarios:

Publicar un comentario