disk group abuse
El grupo disk concede acceso de lectura y escritura a los dispositivos de bloque del sistema (/dev/sda, /dev/dm-0, etc.). Pertenecer a este grupo equivale, en la práctica, a tener acceso de lectura a todo el disco sin pasar por el sistema de ficheros ni por sus permisos: si puedes leer el dispositivo crudo, puedes leer cualquier fichero que viva en él, incluido /etc/shadow.
El indicio se ve en id: un usuario con groups=...,6(disk). Para enumerar qué dispositivos pertenecen al grupo:
id
find / -group disk 2>/dev/nullLa herramienta más cómoda para explotarlo es debugfs, un depurador de sistemas de ficheros ext que permite navegar y volcar ficheros del dispositivo en modo interactivo:
debugfs /dev/dm-0
debugfs: cat /etc/shadowCon cat /etc/shadow desde debugfs se obtiene el hash de root aunque el fichero tenga permisos 640 de root:shadow, porque la lectura se hace contra el dispositivo de bloque, no contra la ruta protegida. A partir de ahí, el hash ($6$..., sha512crypt) se rompe sin conexión con John o hashcat y se obtiene la contraseña de root.
Por qué es tan potente. No es un exploit ni una race condition: es un permiso de grupo mal concedido. El grupo disk está pensado para tareas de administración de almacenamiento, pero saltarse la capa de permisos del sistema de ficheros lo convierte en un acceso total de lectura (y escritura, lo que permite incluso modificar ficheros directamente en el dispositivo).
debugfs también escribe: con -w se monta el dispositivo en lectura/escritura y se puede reemplazar un binario o inyectar una clave, aunque la vía limpia sigue siendo leer y crackear:
debugfs -w /dev/dm-0
debugfs: cat /root/.ssh/id_rsa # robar la clave privada de root directamente del discoAveriguar el dispositivo raíz para apuntar debugfs:
df -h / # o: lsblk ; mount | grep ' / 'Matices. debugfs funciona sobre familias ext (ext2/3/4); con otros sistemas de ficheros habría que usar la herramienta equivalente. Y aunque el grupo da escritura sobre el dispositivo, editar estructuras del disco en caliente es arriesgado (corrupción): leer /etc/shadow o la clave SSH de root es lo fiable.
Cómo detectarlo. La firma es el acceso directo al dispositivo de bloque saltándose el sistema de ficheros: un proceso que abre /dev/sda//dev/dm-0 en lectura y no es una utilidad de almacenamiento legítima (auditd con -w /dev/dm-0 -p rwa, o vigilando ejecuciones de debugfs/dd por usuarios no administradores). En reposo, un usuario que no gestiona almacenamiento perteneciendo al grupo disk es ya la desviación de configuración; y la lectura de /etc/shadow que no pasa por el VFS (no aparece un open de la ruta pero sí del dispositivo) es el indicio de que se ha esquivado la capa de permisos.
Defensa. No añadir usuarios al grupo disk salvo necesidad real; tratar la pertenencia a disk (y a shadow, docker, etc.) como equivalente a root a efectos de modelo de amenazas. Relacionado con otros abusos de grupos privilegiados y de configuración privilegiada.
Máquinas donde se aplica
- ExtplorerProving Grounds Practice
- FanatasticProving Grounds Practice