En un directorio activo, por defecto, todos los usuarios autenticados tienen acceso de escritura a algunos de sus propios atributos y acceso de lectura a los atributos de otros usuarios. Por increíble que parezca, se puede abusar de los atributos de usuario con acceso de lectura/escritura para almacenar payloads y convertir así al directorio activo en un auténtico C2.
La idea no es nueva, de hecho ya la expuso harmj0y en su blog en 2016, que además creó un script en powershell para usar la propiedad 'msmqsigncertificates' para escribir el payload en el atributo del usuario. La ventaja de usar 'msmqsigncertificates' es que tiene un tamaño máximo de 1 MB y también tiene el PAS (Partial Attribute Set), es decir, los payloads almacenados en 'msmqsigncertificates' se propagarán a todas las copias del catálogo global en el bosque.
Entonces básicamente el procedimiento será el siguiente: un usuario cambia su propiedad mientras que otro usuario consulta continuamente la información que se puede leer por todos y luego informa los resultados a sus propios "certificados de msmqsignce". Es decir, tenemos un canal de datos bidireccional de 1 MB.
En el escenario propuesto por akijos, Aki (el atacante) creará un payload utilizando el cmdlet 'New-ADPayload'. El payload se comprimirá utilizando la compresión .NET [IO.Compression.DeflateStream] y luego los datos en Base64 se almacenarán en el atributo 'msmqsigncertificates'. Esto también creará como resultado un script en Powershell que debe ejecutarse en la máquina Victim (Tom Hanks).
El script de activación debe ejecutarse en la máquina víctima y después volveremos a la máquina atacante y usaremos el cmdlet "Get-ADPayloadResult" para obtener los resultados.
A continuación podéis ver el vídeo con la PoC:
Detección:
La idea no es nueva, de hecho ya la expuso harmj0y en su blog en 2016, que además creó un script en powershell para usar la propiedad 'msmqsigncertificates' para escribir el payload en el atributo del usuario. La ventaja de usar 'msmqsigncertificates' es que tiene un tamaño máximo de 1 MB y también tiene el PAS (Partial Attribute Set), es decir, los payloads almacenados en 'msmqsigncertificates' se propagarán a todas las copias del catálogo global en el bosque.
Entonces básicamente el procedimiento será el siguiente: un usuario cambia su propiedad mientras que otro usuario consulta continuamente la información que se puede leer por todos y luego informa los resultados a sus propios "certificados de msmqsignce". Es decir, tenemos un canal de datos bidireccional de 1 MB.
En el escenario propuesto por akijos, Aki (el atacante) creará un payload utilizando el cmdlet 'New-ADPayload'. El payload se comprimirá utilizando la compresión .NET [IO.Compression.DeflateStream] y luego los datos en Base64 se almacenarán en el atributo 'msmqsigncertificates'. Esto también creará como resultado un script en Powershell que debe ejecutarse en la máquina Victim (Tom Hanks).
El script de activación debe ejecutarse en la máquina víctima y después volveremos a la máquina atacante y usaremos el cmdlet "Get-ADPayloadResult" para obtener los resultados.
A continuación podéis ver el vídeo con la PoC:
Url del video: https://youtu.be/SAQ1riJcw8E
Detección:
- Monitorizar los cambios del atributo de información personal.
- Bloquear el permiso del usuario para actualizar el atributo de información personal.
- Auditar los logs de modificación de objetos del directorio y buscar IDs de eventos de Windows 5136.
- https://msdn.microsoft.com/en-us/library/ms684394%28v=vs.85%29.aspx
- https://akijosberryblog.wordpress.com/2018/03/17/active-directory-as-a-c2-command-control/
- http://www.harmj0y.net/blog/powershell/command-and-control-using-active-directory/
- https://gist.githubusercontent.com/HarmJ0y/a219057e9d2faedf69d32e04c0f1874f/raw/783ac0851923f98975573b5392af9be0226ae539/ADC2.ps1
- https://www.blackhat.com/docs/us-17/wednesday/us-17-Miller-The-Active-Directory-Botnet.pdf
Comentarios
Publicar un comentario