Launch

Raw machines

This part is related to raw machines (they do not contain any configurations).

Running the machines

# The vagrant directory
cd breakingbAD/vagrant

# Starting the virtual machines
vagrant up

Tip

To stop the virtual machines, use vagrant halt in the same directory.

Base build

Next, we want to provision the raw machines to setup a base build. All of the configurations will be built on top of this core architecture.

Tip

If you are using a virtual environment with Python, make sure to activate it beforehand.

# The ansible directory
cd breakingbAD/ansible

# Creating a base build
ansible-playbook -i inventory.yml playbooks/base_build/base_build.yml

DNS lookups

You may need to modify your host configuration for any DNS lookups you are likely to make.

I personally use a docker container (Exegol) that holds the following configuration.

# Current file: /etc/hosts
192.168.56.10 breakingbad.local
# Current file: /etc/resolv.conf
nameserver 192.168.56.10
domain breakingbad.local

Configurations

Vulnerabilities

The laboratory contains dangerous AD configurations as well as Windows vulnerabilities (related to patching). To better name a vulnerability related to dangerous AD configurations, identifiers are used.

Dangerous configurations

  • ID = 01 | ESC8

  • ID = 02 | NTLMv1

  • ID = 03 | WebClient

  • ID = 04 | GPO

  • ID = 05 | IPv6

  • ID = 06 | LLMNR, NBT-NS & mDNS

  • ID = 07 | Password in user’s description

  • ID = 08 | Kerberoasting

  • ID = 09 | ASREProasting

  • ID = 10 | ESC1

  • ID = 11 | Anonymous Logon special group (inside the Pre-Windows 2000 Compatible Access group)

Patch-related vulnerabilities

  • sAMAccountName spoofing

  • ZeroLogon

  • Certifried

Quick installation

To install all the vulnerabilities at once and without any customization, run the following command.

# Current directory: ansible
ansible-playbook -i inventory.yml playbooks/vulnerabilities/vulnerabilities.yml --extra-vars "action=enable"

Tip

To disable them all, run the following command.

# Current directory: ansible
ansible-playbook -i inventory.yml playbooks/vulnerabilities/vulnerabilities.yml --extra-vars "action=disable"

For ID05 (IPv6) and ID06 (LLMNR, NBT-NS & mDNS), you can trigger a lookup using the following commands.

ID05 - IPv6

# Current directory: ansible
ansible-playbook -i inventory.yml playbooks/vulnerabilities/05.yml --extra-vars "action=trigger"

ID06 - LLMNR, NBT-NS & mDNS

# Current directory: ansible
ansible-playbook -i inventory.yml playbooks/vulnerabilities/06.yml --extra-vars "action=trigger"

More on vulnerabilities in the Introduction section.