Enumerar Permisos Indeseables en los Archivos de un Sistema GNU/Linux
Establecer una buena política permite garantizar a los usuarios acceso específico hacia el sistema y sus contenidos, los cuales sean absolutamente necesarios. Luego se necesita identificar todos los archivos sobre el sistema, los cuales podrían posiblemente ser accedidos o modificados por usuarios legítimos o atacantes maliciosos, para perjuicio de la confidencialidad, integridad, o seguridad del sistema y su contenido. Entre los temas a considerar en primera instancia está la identificación de todos los archivos factibles de ser escritos por todos, los cuales podrían potencialmente poseer un riesgo para la confidencialidad, integridad, o seguridad del sistema y sus datos en caso sean modificados.
Para la siguiente demostración se utilizará la máquina virtual de nombre Metasploitable 2 y Kali Linux. En el escenario descrito a continuación ya se tiene acceso previo no privilegiado hacia el sistema comprometido.
Un atacante malicioso no privilegiado intentará listar los archivos o carpetas factibles de ser escritos por todos los usuarios, los cuales podría modificar o posiblemente utilizar para elevar privilegios sobre el sistema.
find / -perm -o=w > /tmp/ListaW
head -n 20 /tmp/ListaW
Adicionalmente un atacante malicioso intentará enumerar todos los archivos binarios sobre el sistema, los cuales pueden ser ejecutados por una cuenta de usuario restringida, y utilizarlos para posiblemente escalar permisos de la cuenta restringida de manera directa o indirecta.
find / -perm -o=x > /tmp/ListaX
head -n 20 /tmp/ListaX
En algunas distribuciones GNU/Linux los bits SetUID/SUID/SGID están ajustados para permitir a un archivo binario ejecutarse con los permisos del usuario “root” y funcionar de manera fiable en el sistema. Esto asegura a los archivos binarios no encontrar nunca inconvenientes con los permisos mientras cumplen una tarea específica, pues tienen acceso completo hacia los recursos del sistema. Lo cual proporciona también la capacidad de acceso para usuarios legítimos y atacantes maliciosos.
Buscar los archivos con el bit SetUID/SUID ajustado en el sistema.
find / -type f -perm 0400 -ls > /tmp/ListaSUID
head -n 20 /tmp/ListaSUID
Buscar los archivos con el bit SGID ajustados en el sistema.
find / -type f -perm 0400 -ls > /tmp/ListaSGID
head -n 20 /tmp/ListaSGID
Aunque esto podría no percibirse como una amenaza inmediata, la combinación de archivos y carpetas factibles de ser escritos por todos los usuarios con utilidades como tftp, netcat u otros, pueden conducir a los atacantes a utilizar el acceso limitado proporcionado por estos, para subir recursos hacia el sistema los cuales son necesarios para ganar acceso "root".
Fuentes:
http://www.tldp.org/HOWTO/Security-HOWTO/file-security.html
https://wiki.archlinux.org/index.php/File_permissions_and_attributes
https://www.kali.org/
http://sourceforge.net/projects/metasploitable/files/Metasploitable2/
Sobre el Autor
Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
WhatsApp: https://wa.me/51949304030
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
Youtube: https://www.youtube.com/c/AlonsoCaballero
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/