Tier 2: Recommended Lab (Active Directory)
Time Required: 4-6 hours Cost: $0 (evaluation licenses) Requirements: 16GB RAM minimum, 120GB free disk space
What You're Building
1 Kali Linux VM (attacker)
1 Windows Server 2019/2022 (Domain Controller)
2 Windows 10 VMs (domain workstations)
1 Ubuntu Server (Linux pivot target)
Complete Active Directory domain
What You Can Practice: Everything in the 30-day series, including full AD compromise chains
Prerequisites
Complete Tier 1 first, or at minimum:
VirtualBox or VMware installed
Understanding of VM creation
Network configuration knowledge
Step 1: Download All Required ISOs
Windows Server 2022
Select ISO - LTSC format
Download 64-bit ISO (~5.3GB)
Evaluation period: 180 days
Windows 10 Enterprise
Download 64-bit ISO (~5GB)
You'll need 2 instances
Ubuntu Server
Download Ubuntu Server 22.04 LTS (~1.4GB)
Kali Linux
Download pre-built VM from: https://www.kali.org/get-kali/#kali-virtual-machines
Step 2: Create Virtual Network
VirtualBox Setup
VirtualBox → File → Preferences → Network
Create NAT Network:
Name:
ADLabNetwork CIDR:
10.10.10.0/24Enable DHCP: NO (we'll use static IPs)
Click OK
VMware Setup
VMware → Edit → Virtual Network Editor
Change Settings (admin required)
Add Network → VMnet3
Type: Host-only or NAT
Subnet:
10.10.10.0Disable DHCP
Click Apply
Step 3: Create Domain Controller VM
Create VM
VirtualBox:
New VM: Name
DC01Type: Windows, Version: Windows 2019/2022 (64-bit)
RAM: 4096 MB minimum (6GB recommended)
Hard disk: 60 GB
Processors: 2 CPUs
Network:
ADLabNAT Network
VMware:
Create New VM
Use ISO: Windows Server 2022
Name:
DC01Disk: 60GB
RAM: 4096MB
CPUs: 2
Network: VMnet3
Install Windows Server
Start VM, boot from ISO
Language: English → Next
Install Now
Version: Windows Server 2022 Standard Evaluation (Desktop Experience)
Important: Choose "Desktop Experience" not "Server Core"
Custom install
Select disk → Next
Wait for installation (~15 minutes)
Set Administrator password:
P@ssw0rd123!Press Ctrl+Alt+Delete to login
Configure Static IP
Open Server Manager (opens automatically)
Click Local Server on left
Click Ethernet (next to IPv4 address assigned by DHCP)
Right-click Ethernet → Properties
Select Internet Protocol Version 4 (TCP/IPv4)
Click Properties
Select Use the following IP address:
IP address:
10.10.10.10Subnet mask:
255.255.255.0Default gateway:
10.10.10.1Preferred DNS:
127.0.0.1(itself)
Click OK, close windows
Rename computer:
Server Manager → Local Server → Computer name
Click computer name → Change
Computer name:
DC01Click OK, restart
Step 4: Install Active Directory Domain Services
Add AD DS Role
After restart, login as Administrator
Server Manager → Manage → Add Roles and Features
Click Next through first 3 screens
Server Roles: Check Active Directory Domain Services
Click Add Features when prompted
Click Next through remaining screens
Click Install
Wait for installation (~5 minutes)
Click Close when complete
Promote to Domain Controller
In Server Manager, click notification flag (top right)
Click Promote this server to a domain controller
Select Add a new forest
Root domain name:
corp.localClick Next
Forest/Domain functional level: Windows Server 2016
Check Domain Name System (DNS) server
DSRM password:
P@ssw0rd123!Click Next through remaining screens
Prerequisites check will run
Click Install
Server will restart automatically (~10 minutes)
Verify AD Installation
Login as
CORP\Administratorwith passwordP@ssw0rd123!Server Manager should show AD DS installed
Open Active Directory Users and Computers:
Server Manager → Tools → Active Directory Users and Computers
Expand
corp.local→ You should see organizational units
Step 5: Create Domain Users and Groups
Create Organizational Units
Open Active Directory Users and Computers
Right-click
corp.local→ New → Organizational UnitName:
Corp Users→ OKCreate another OU:
Corp ComputersCreate another OU:
Service Accounts
Create Standard Domain Users
Right-click Corp Users → New → User
First name:
JohnLast name:SmithUser logon name:
jsmithClick Next
Password:
Welcome123!Uncheck User must change password at next logon
Check Password never expires (for lab only!)
Click Next → Finish
Create these additional users:
Sarah Johnson
sjohnson
Welcome123!
Domain Users
Mike Davis
mdavis
Welcome123!
Domain Users
Emily Wilson
ewilson
Welcome123!
Domain Users
Domain Admin Backup
da_backup
P@ssw0rd123!
Domain Admins
Help Desk
helpdesk
Help123!
Domain Users
SQL Service
sql_svc
Summer2023!
Domain Users
Add Users to Groups
Right-click
da_backup→ PropertiesMember Of tab → Add
Type:
Domain Admins→ Check Names → OKClick OK
Create Service Principal Names (for Kerberoasting)
Open Command Prompt as Administrator
Add SPN to sql_svc account:
setspn -A MSSQLSvc/SQL01.corp.local:1433 corp\sql_svc
setspn -A MSSQLSvc/SQL01.corp.local corp\sql_svcVerify SPN was added:
setspn -L corp\sql_svcStep 6: Create Workstation VMs
Create First Workstation (WORKSTATION-01)
VirtualBox/VMware:
Create new VM:
WORKSTATION-01Type: Windows 10 (64-bit)
RAM: 2048 MB (2GB minimum)
Disk: 40 GB
CPUs: 1-2
Network: Same as DC (ADLab / VMnet3)
Install Windows 10
Boot from Windows 10 ISO
Install Windows 10 Enterprise Evaluation
Username:
localuserPassword:
Local123!Disable all privacy settings
Complete setup to desktop
Configure Static IP
Control Panel → Network and Sharing Center
Change adapter settings
Right-click Ethernet → Properties
IPv4 Properties:
IP:
10.10.10.100Subnet:
255.255.255.0Gateway:
10.10.10.1DNS:
10.10.10.10(the DC)
OK → Close
Join Domain
Right-click Start → System
Click Rename this PC (advanced)
Click Change
Computer name:
WORKSTATION-01Member of: Domain →
corp.localClick OK
Enter credentials:
Username:
AdministratorPassword:
P@ssw0rd123!
Welcome message will appear
Click OK → Restart
Post-Domain Join Configuration
Login as
CORP\jsmith(password:Welcome123!)Disable Windows Defender (same as Tier 1)
Install Chrome/Firefox
Save some credentials in browser (for harvesting practice)
Take a snapshot:
Domain Joined - Clean
Create Second Workstation (WORKSTATION-02)
Clone WORKSTATION-01 VM (faster than reinstalling):
VirtualBox: Right-click VM → Clone → Full clone
VMware: Right-click VM → Manage → Clone
Name:
WORKSTATION-02Generate new MAC addresses
Start cloned VM
Change computer name to
WORKSTATION-02:System → Rename PC →
WORKSTATION-02Rejoin domain if needed
Change IP to
10.10.10.101Restart
Step 7: Create Ubuntu Server VM (Linux Pivot Target)
Create VM
New VM:
UBUNTU-SRV01Type: Linux, Version: Ubuntu (64-bit)
RAM: 2048 MB
Disk: 20 GB
Network: Same network as other VMs
Install Ubuntu Server
Boot from Ubuntu Server ISO
Language: English
Keyboard: Default
Network: DHCP for now (we'll configure static later)
Storage: Use entire disk
Profile setup:
Name:
ubuntuServer name:
ubuntu-srv01Username:
ubuntuPassword:
ubuntu123
Install OpenSSH server: YES
Featured snaps: Skip
Wait for installation
Reboot when prompted
Configure Static IP
Login as
ubuntuEdit netplan configuration:
sudo nano /etc/netplan/00-installer-config.yamlConfigure static IP:
network:
ethernets:
ens33: # or ens160, check with: ip link
dhcp4: no
addresses:
- 10.10.10.50/24
gateway4: 10.10.10.1
nameservers:
addresses:
- 10.10.10.10
- 8.8.8.8
version: 2Save (Ctrl+O, Enter, Ctrl+X)
Apply configuration:
sudo netplan applyVerify:
ip addr show
# Should see 10.10.10.50Install Vulnerable Software (for practice)
# Update system
sudo apt update && sudo apt upgrade -y
# Install some services
sudo apt install -y apache2 mysql-server ssh
# Enable services
sudo systemctl enable apache2
sudo systemctl enable mysql
sudo systemctl enable ssh
# Create a test user
sudo useradd -m -s /bin/bash testuser
echo "testuser:password123" | sudo chpasswdStep 8: Setup Kali Linux (Attacker VM)
Import Kali VM
Import pre-built Kali VM (from Tier 1 steps)
Or create new if needed
Configure Static IP
# Edit network configuration
sudo nano /etc/network/interfacesAdd:
auto eth0
iface eth0 inet static
address 10.10.10.5
netmask 255.255.255.0
gateway 10.10.10.1
dns-nameservers 10.10.10.10Or use Network Manager GUI:
Click network icon → Edit Connections
Edit Wired connection
IPv4 Settings → Manual
Add: IP
10.10.10.5, Netmask255.255.255.0, Gateway10.10.10.1DNS:
10.10.10.10Save
Install Additional Tools
# Update Kali
sudo apt update
sudo apt full-upgrade -y
# Install additional AD tools
sudo apt install -y bloodhound neo4j
sudo apt install -y crackmapexec
sudo apt install -y python3-impacket
# Install PowerShell (for PowerView, etc.)
sudo apt install -y powershell
# Download common tools
mkdir ~/tools
cd ~/tools
# PowerView
wget https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1
# Rubeus
wget https://github.com/r3motecontrol/Ghostpack-CompiledBinaries/raw/master/Rubeus.exe
# SharpHound
wget https://github.com/BloodHoundAD/BloodHound/raw/master/Collectors/SharpHound.ps1Step 9: Verify Full Lab Connectivity
Network Diagram
10.10.10.5 - Kali Linux (Attacker)
10.10.10.10 - DC01 (Domain Controller)
10.10.10.50 - Ubuntu-SRV01 (Linux target)
10.10.10.100 - WORKSTATION-01 (Windows target)
10.10.10.101 - WORKSTATION-02 (Windows target)Connectivity Tests
From Kali:
# Ping all systems
ping -c 2 10.10.10.10
ping -c 2 10.10.10.50
ping -c 2 10.10.10.100
ping -c 2 10.10.10.101
# Scan entire network
nmap -sn 10.10.10.0/24
# Test DNS resolution
nslookup corp.local 10.10.10.10
nslookup dc01.corp.local 10.10.10.10
# Quick port scan on DC
nmap -sV -p 53,88,135,139,389,445,3389 10.10.10.10Expected results:
All pings should succeed
DNS should resolve corp.local
DC should show ports: 53 (DNS), 88 (Kerberos), 389 (LDAP), 445 (SMB)
Step 10: Test Active Directory Functionality
From Workstation
Login to WORKSTATION-01 as
CORP\jsmithOpen Command Prompt
Test domain connectivity:
nltest /dclist:corp.local
net user jsmith /domain
gpresult /rFrom Kali (Initial AD Enumeration)
# Test SMB access
smbclient -L //10.10.10.10 -U jsmith
# Password: Welcome123!
# Use CrackMapExec
crackmapexec smb 10.10.10.10 -u jsmith -p Welcome123! --shares
# Test with Impacket
python3 /usr/share/doc/python3-impacket/examples/GetADUsers.py corp.local/jsmith:WeStep 11: Take Snapshots of Complete Lab
Critical: Snapshot every VM now!
Shut down all VMs gracefully
Take snapshot of each:
Kali-Attacker→ "AD Lab - Clean State"DC01→ "Domain Controller - Configured"WORKSTATION-01→ "Domain Joined - Clean"WORKSTATION-02→ "Domain Joined - Clean"UBUNTU-SRV01→ "Linux Target - Clean"
Tier 2 Complete! 🎉🎉
You now have a complete Active Directory environment. You can practice:
All techniques from Tier 1
AD enumeration (Day 22)
Kerberoasting (Day 23)
Pass-the-ticket attacks (Day 24)
Golden/Silver tickets (Day 25)
DCSync attacks (Day 26)
Full AD compromise chains (Featured Walkthrough)
Optional Enhancements
Add More Users:
# On DC01, open PowerShell
1..20 | ForEach-Object {
$user = "user$_"
New-ADUser -Name $user -SamAccountName $user -UserPrincipalName "[email protected]" -AccountPassword (ConvertTo-SecureString "Welcome123!" -AsPlainText -Force) -Enabled $true -Path "OU=Corp Users,DC=corp,DC=local"
}Add File Shares:
# On DC01
New-Item -Path "C:\Shares\Public" -ItemType Directory
New-SmbShare -Name "Public" -Path "C:\Shares\Public" -FullAccess "Everyone"
# Add some fake sensitive files
"SSN: 123-45-6789" | Out-File C:\Shares\Public\employees.txtConfigure Group Policy:
Server Manager → Tools → Group Policy Management
Create new GPO: "Disable Defender"
Link to domain
Configure to disable Windows Defender on all workstations
© 2025 Maxwell Cross - All Rights Reserved
Last updated
Was this helpful?