hacktricks/linux-hardening/privilege-escalation/linux-active-directory.md
2024-02-11 01:46:25 +00:00

9.1 KiB

Linux Active Directory

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Linuxowy komputer może również znajdować się w środowisku Active Directory.

Linuxowy komputer w AD może przechowywać różne bilety CCACHE w plikach. Te bilety można wykorzystać i nadużyć tak samo jak inne bilety kerberos. Aby odczytać te bilety, musisz być właścicielem użytkownika biletu lub rootem wewnątrz maszyny.

Wyliczanie

Wyliczanie AD z poziomu linuxa

Jeśli masz dostęp do AD w systemie Linux (lub basha w systemie Windows), możesz spróbować https://github.com/lefayjey/linWinPwn, aby wyliczyć AD.

Możesz również sprawdzić następującą stronę, aby dowiedzieć się innych sposobów na wyliczanie AD z poziomu linuxa:

{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} pentesting-ldap.md {% endcontent-ref %}

FreeIPA

FreeIPA to otwarte źródło alternatywa dla Microsoft Windows Active Directory, głównie dla środowisk Unixowych. Łączy ono kompletny katalog LDAP z MIT Kerberos Key Distribution Center do zarządzania podobnie jak Active Directory. Wykorzystując Dogtag Certificate System do zarządzania certyfikatami CA & RA, obsługuje uwierzytelnianie wieloczynnikowe, w tym karty inteligentne. Zintegrowany jest SSSD do procesów uwierzytelniania Unix. Dowiedz się więcej na ten temat:

{% content-ref url="../freeipa-pentesting.md" %} freeipa-pentesting.md {% endcontent-ref %}

Zabawa z biletami

Pass The Ticket

Na tej stronie znajdziesz różne miejsca, w których można znaleźć bilety kerberos wewnątrz hosta linuxowego, a na następnej stronie możesz dowiedzieć się, jak przekształcić te formaty biletów CCache na Kirbi (format wymagany w systemie Windows) oraz jak przeprowadzić atak PTT:

{% content-ref url="../../windows-hardening/active-directory-methodology/pass-the-ticket.md" %} pass-the-ticket.md {% endcontent-ref %}

Ponowne wykorzystanie biletu CCACHE z /tmp

Pliki CCACHE to formaty binarne do przechowywania poświadczeń Kerberos, które zwykle są przechowywane z uprawnieniami 600 w /tmp. Te pliki można zidentyfikować po ich formacie nazwy, krb5cc_%{uid}, odpowiadającym UID użytkownika. Dla weryfikacji biletu uwierzytelniającego, zmienna środowiskowa KRB5CCNAME powinna być ustawiona na ścieżkę do żądanego pliku biletu, umożliwiając jego ponowne wykorzystanie.

Wyświetl aktualny bilet używany do uwierzytelniania za pomocą env | grep KRB5CCNAME. Format jest przenośny, a bilet można ponownie wykorzystać, ustawiając zmienną środowiskową za pomocą export KRB5CCNAME=/tmp/ticket.ccache. Format nazwy biletu Kerberos to krb5cc_%{uid}, gdzie uid to UID użytkownika.

# Find tickets
ls /tmp/ | grep krb5cc
krb5cc_1000

# Prepare to use it
export KRB5CCNAME=/tmp/krb5cc_1000

Ponowne wykorzystanie biletów CCACHE z keyringu

Bilety Kerberos przechowywane w pamięci procesu mogą być wyodrębnione, zwłaszcza gdy ochrona ptrace na maszynie jest wyłączona (/proc/sys/kernel/yama/ptrace_scope). Przydatne narzędzie do tego celu można znaleźć pod adresem https://github.com/TarlogicSecurity/tickey, które ułatwia wyodrębnianie poprzez wstrzykiwanie się do sesji i zrzucanie biletów do /tmp.

Aby skonfigurować i używać tego narzędzia, należy postępować zgodnie z poniższymi krokami:

git clone https://github.com/TarlogicSecurity/tickey
cd tickey/tickey
make CONF=Release
/tmp/tickey -i

Ten proces będzie próbował wstrzyknąć się do różnych sesji, wskazując sukces poprzez przechowywanie wyodrębnionych biletów w /tmp z konwencją nazewnictwa __krb_UID.ccache.

Ponowne wykorzystanie biletu CCACHE z SSSD KCM

SSSD przechowuje kopię bazy danych pod ścieżką /var/lib/sss/secrets/secrets.ldb. Odpowiadający klucz jest przechowywany jako ukryty plik pod ścieżką /var/lib/sss/secrets/.secrets.mkey. Domyślnie klucz jest tylko do odczytu, jeśli masz uprawnienia root.

Wywołanie **SSSDKCMExtractor ** z parametrami --database i --key spowoduje analizę bazy danych i odszyfrowanie sekretów.

git clone https://github.com/fireeye/SSSDKCMExtractor
python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey

Blob Kerberosa w pamięci podręcznej poświadczeń można przekonwertować na plik CCache Kerberosa, który może zostać przekazany do Mimikatz/Rubeus.

Ponowne wykorzystanie biletu CCACHE z keytabu

git clone https://github.com/its-a-feature/KeytabParser
python KeytabParser.py /etc/krb5.keytab
klist -k /etc/krb5.keytab

Wyodrębnianie kont z pliku /etc/krb5.keytab

Klucze kont usługowych, niezbędne dla usług działających z uprawnieniami roota, są bezpiecznie przechowywane w plikach /etc/krb5.keytab. Te klucze, podobnie jak hasła dla usług, wymagają ścisłej poufności.

Aby sprawdzić zawartość pliku keytab, można użyć polecenia klist. Narzędzie to służy do wyświetlania szczegółów kluczy, w tym NT Hash do uwierzytelniania użytkownika, zwłaszcza gdy typ klucza jest identyfikowany jako 23.

klist.exe -t -K -e -k FILE:C:/Path/to/your/krb5.keytab
# Output includes service principal details and the NT Hash

Dla użytkowników Linuxa, KeyTabExtract oferuje funkcjonalność do wyodrębniania skrótu RC4 HMAC, który może być wykorzystany do ponownego użycia skrótu NTLM.

python3 keytabextract.py krb5.keytab
# Expected output varies based on hash availability

Na macOS, bifrost służy jako narzędzie do analizy plików keytab.

./bifrost -action dump -source keytab -path /path/to/your/file

Wykorzystując wyodrębnione informacje o koncie i haszu, można nawiązać połączenie z serwerami za pomocą narzędzi takich jak crackmapexec.

crackmapexec 10.XXX.XXX.XXX -u 'ServiceAccount$' -H "HashPlaceholder" -d "YourDOMAIN"

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!