# Breaking PAM: Recovering Root on Parrot OSA real-world recovery story after breaking PAM authentication on Parrot OS.


<br>

<figure>
  <img src="/panda/images/pam-recovery.png" alt="Breaking PAM - Parrot OS">
  <figcaption>Recuperación del sistema tras romper PAM en Parrot OS.</figcaption>
</figure>

# 🐼 Breaking PAM: Recovering Root on Parrot OS

Un 2 de mayo, mientras intentaba dejar listo mi entorno en Parrot OS para mezclar música como DJ, me encontré con un problema inesperado:

● pantalla negra al iniciar.

---

## 🔴 El impacto

El sistema lograba iniciar, pero algo no estaba bien:

- sudo dejó de funcionar
- passwd devolvía *Permission denied*
- la autenticación era inconsistente

Había pasado de un problema visual a algo más serio:

👉 pérdida de control lógico del sistema

<br>

<figure style="text-align: center;">
  <img src="/panda/images/pam-break.png"
       alt="passwd permission denied"
       style="max-width: 650px; width: 100%; border-radius: 12px;">
  <figcaption>Intentos de cambio de contraseña fallando: Permission denied incluso en entorno root.</figcaption>
</figure>
---

## 🧠 Diagnóstico

Primero descarté lo básico:

- `/usr/bin/passwd` tenía permisos correctos (SUID)
- `/etc/shadow` tenía permisos válidos
- el filesystem no tenía restricciones como `nosuid`

Entonces quedó claro:

👉 el problema no era permisos.
👉 era el stack de autenticación (PAM).

---

## 🛠️ Recuperación

El siguiente paso fue recuperar control total del sistema.

Desde GRUB inicié en modo de emergencia:

👉 `init=/bin/bash`

Monté el sistema en modo escritura:

```bash
mount -o remount,rw /
```

Y desde ahí corregí configuraciones críticas.
<figure style="text-align: center;">
  <img src="/panda/images/pam-recovery-shell.png"
       alt="root recovery shell"
       style="max-width: 700px; width: 100%; border-radius: 12px;">
  <figcaption>Acceso root en modo recuperación para restaurar el sistema.</figcaption>
</figure>

---
🔧 Solución

El problema estaba en configuraciones corruptas de PAM.

Reinstalar los paquetes clave permitió restaurar el comportamiento esperado:

libpam-modules
libpam-runtime
libpam0g

Tras esto, el sistema volvió a comportarse de forma consistente.

🧩 Lecciones aprendidas
PAM es un punto crítico del sistema
pequeños cambios pueden romper toda la autenticación
validar permisos no siempre es suficiente
tener acceso a recovery es clave

👉 nunca subestimar cambios en autenticación

## 🐼 Cierre

En pentesting, romper algo no es el objetivo final.

En este caso, el sistema quedó en un estado crítico:
- autenticación rota
- sin acceso efectivo (`sudo` y `passwd`)

Prácticamente, el control del sistema se había perdido por completo.

Romper fue fácil.
Lo valioso fue entender qué falló y cómo recuperarlo.

A partir de ahí, el proceso fue claro:
- aislar el problema
- evitar depender de mecanismos rotos (PAM)
- recuperar acceso desde un entorno de emergencia
- reconstruir la autenticación de forma controlada

Porque en seguridad no se trata solo de explotar,
sino de comprender, recuperar y reconstruir.

👉 todo está conectado… incluso cuando parece que solo rompiste una cosa.
---

