Construye un Directorio Activo de pruebas con BadBlood

BadBlood de Secframe es una herramienta que nos ayudará a crear una estructura y miles de objetos en un dominio de Microsoft Active Directory de prueba. El objetivo es tener un dominio similar a un dominio en el mundo real para practicar el uso de herramientas y comprender las defensas y protección del Directorio Activo.

Pero no penséis que BadBlood es una herramienta que siempre va a generarnos el mismo resultado, cada vez que se ejecuta produce resultados distintos: el dominio, los usuarios, los grupos, las computadoras y los permisos son diferentes cada vez.

Para usarla simplemente hay que descargar el repositorio y lanzar el script Invoke-BadBlood.ps1 con un usuario con privilegios de Domain Admin y Schema Admin.

# clone the repo
git clone https://github.com/davidprowe/badblood.git
#Run Invoke-badblood.ps1
./badblood/invoke-badblood.ps1

Si queremos editar las OUs de nivel superior podemos hacerlo en el archivo de configuración “3lettercodes.csv”. También podemos modificar los detalles de la estructura de OUs que se incluyen en AD_OU_CreateStructure\CreateOUStructure.ps1.

Una vez que se completa la estructura, BadBlood comienza a crear un número aleatorio de usuarios (500-10000) en el dominio. Este proceso está diseñado en el fichero AD_Users_Create\CreateUsers.ps1.

Durante la creación de cada usuario, BadBlood selecciona aleatoriamente una unidad organizativa o contenedor y coloca a esa persona en una ruta también aleatoria. La herramienta genera usuarios masculinos y femeninos muy aleatorios basados en los archivos de texto ubicados en la carpeta \Names dentro de AD_Users_Create. Además, cada usuario se crea con una contraseña única. La herramienta completa un poco de información sobre la cuenta de usuario y avanza al siguiente paso: grupos.

Los grupos se nombran aleatoriamente en el script AD_Groups_Create\CreateGroups.ps1 extrayendo información de un archivo hotmail.txt ubicado en la misma carpeta que el script. Los grupos, al igual que los usuarios, se colocan aleatoriamente en unidades organizativas y contenedores aleatorios en el dominio.

El siguiente paso es crear equipos o computadoras en el dominio, cosa que se define en AD_Computers_Create\CreateComputers.ps1. Estas computadoras también tienen nombres generados aleatoriamente. Al igual que los otros objetos creados antes, las computadoras se colocan en unidades organizativas aleatorias. Si deseamos crear más usuarios o equipos en el DA podemos editar la variable $NumOfUsers  y $NumOfComps respectivamente en el script Invoke-BadBlood.

Y por último, BadBlood se encarga de generar permisos. Esto se define en el script AD_Permission_Randomizer\GenerateRandomPermissions.ps1, que llama e importa las funciones de la carpeta AD_OU_SetACL. Hay muchos scripts en esta carpeta, con muchas funciones dentro de cada script. Se pueden usar para automatizar muchas tareas de permisos de Active Directory que un administrador puede encontrar durante su día a día. Todos los permisos que se establecen (aleatoriamente) con BadBlood se encuentran en la función "Create-PermissionSet". Hay muchos permisos en esta función y BadBlood aleatoriza qué permisos agregar cada vez que se llama a la misma.

BadBlood toma esos permisos, elige usuarios y establece los permisos en OU. Luego elige grupos y coloca los permisos en unidades organizativas. Luego hace lo mismo con computadores o equipos. Todo ello aleatoriamente.
 
El último paso de Invoke-BadBlood lo tenemos en Ad_Groups_Create\AddRandomToGroups.ps1. Este script realiza tres funciones principales para terminar la ejecución de la herramienta:

- Selecciona el 80% de los usuarios del dominio y los agrega a grupos aleatorios. En ese momento los usuarios tienen los permisos otorgados a los grupos.
- Selecciona el 20% de los grupos y los agrega a grupos aleatorios. Debido a esto, los permisos comienzan a volverse aún más enrevesados en el dominio.
- Selecciona el 10% de las computadoras y las agrega a grupos aleatorios también.

Fuentes:
https://www.secframe.com/badblood
https://github.com/davidprowe/BadBlood

Comentarios