hacktricks/macos-hardening/macos-red-teaming/README.md

12 KiB

Red Teaming w macOS

{% hint style="success" %} Dowiedz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Dowiedz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Wesprzyj HackTricks
{% endhint %}

Nadużywanie MDM

  • JAMF Pro: jamf checkJSSConnection
  • Kandji

Jeśli uda ci się skompromitować dane uwierzytelniające administratora w celu uzyskania dostępu do platformy zarządzania, możesz potencjalnie skompromitować wszystkie komputery, rozpowszechniając złośliwe oprogramowanie na maszynach.

Podczas red teamingu w środowiskach MacOS zaleca się posiadanie pewnego zrozumienia działania MDM:

{% content-ref url="macos-mdm/" %} macos-mdm {% endcontent-ref %}

Wykorzystanie MDM jako C2

MDM będzie miał uprawnienia do instalowania, zapytywania lub usuwania profili, instalowania aplikacji, tworzenia kont administratora lokalnego, ustawiania hasła firmware, zmiany klucza FileVault...

Aby uruchomić własne MDM, musisz podpisać swój CSR przez dostawcę, którego możesz spróbować uzyskać za pomocą https://mdmcert.download/. Aby uruchomić własne MDM dla urządzeń Apple, możesz użyć MicroMDM.

Jednakże, aby zainstalować aplikację na zarejestrowanym urządzeniu, nadal musi ona być podpisana przez konto deweloperskie... jednakże, po zarejestrowaniu w MDM, urządzenie dodaje certyfikat SSL MDM jako zaufany CA, więc teraz możesz podpisywać cokolwiek.

Aby zarejestrować urządzenie w MDM, musisz zainstalować plik mobileconfig jako root, który może być dostarczony za pomocą pliku pkg (możesz spakować go w zip i po pobraniu z safari zostanie rozpakowany).

Agent Mythic Orthrus wykorzystuje tę technikę.

Nadużywanie JAMF PRO

JAMF może uruchamiać skrypty niestandardowe (skrypty opracowane przez sysadmina), natywne ładunki (tworzenie kont lokalnych, ustawianie hasła EFI, monitorowanie plików/procesów...) i MDM (konfiguracje urządzenia, certyfikaty urządzenia...).

Samozapis JAMF

Przejdź do strony takiej jak https://<nazwa-firmy>.jamfcloud.com/enroll/, aby sprawdzić, czy mają włączone samozapisywanie. Jeśli tak, może poprosić o dane uwierzytelniające do dostępu.

Możesz użyć skryptu JamfSniper.py do przeprowadzenia ataku na hasło metodą password spraying.

Ponadto, po znalezieniu odpowiednich danych uwierzytelniających, możesz być w stanie przeprowadzić atak brutalnej siły na inne nazwy użytkowników za pomocą następującego formularza:

Uwierzytelnianie urządzenia JAMF

Binarny plik jamf zawierał sekret do otwarcia keychain, który w momencie odkrycia był udostępniony wszystkim i był to: jk23ucnq91jfu9aj.
Ponadto, jamf utrzymuje się jako LaunchDaemon w /Library/LaunchAgents/com.jamf.management.agent.plist

Przejęcie urządzenia JAMF

URL JSS (Jamf Software Server), który użyje jamf, znajduje się w /Library/Preferences/com.jamfsoftware.jamf.plist.
Ten plik zawiera podstawowo URL:

{% code overflow="wrap" %}

plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist

[...]
<key>is_virtual_machine</key>
<false/>
<key>jss_url</key>
<string>https://halbornasd.jamfcloud.com/</string>
<key>last_management_framework_change_id</key>
<integer>4</integer>
[...]

{% endcode %}

Więc atakujący mógłby umieścić złośliwy pakiet (pkg), który nadpisuje ten plik podczas instalacji, ustawiając adres URL nasłuchiwania Mythic C2 z agentem Typhon, aby teraz móc wykorzystać JAMF jako C2.

# After changing the URL you could wait for it to be reloaded or execute:
sudo jamf policy -id 0

# TODO: There is an ID, maybe it's possible to have the real jamf connection and another one to the C2

{% endcode %}

Podszywanie się pod JAMF

Aby podrobić komunikację między urządzeniem a JMF, potrzebujesz:

  • UUID urządzenia: ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'
  • Klucz JAMF z: /Library/Application\ Support/Jamf/JAMF.keychain, który zawiera certyfikat urządzenia

Mając te informacje, utwórz maszynę wirtualną z ukradzionym sprzętowym UUID oraz z wyłączonym SIP, wrzuć klucz JAMF, zahacz agenta Jamf i skradnij jego informacje.

Kradzież sekretów

a

Możesz również monitorować lokalizację /Library/Application Support/Jamf/tmp/ w poszukiwaniu skryptów niestandardowych, które administratorzy chcieliby wykonać za pomocą Jamf, ponieważ są one umieszczane tutaj, uruchamiane i usuwane. Te skrypty mogą zawierać poświadczenia.

Jednakże poświadczenia mogą być przekazywane do tych skryptów jako parametry, dlatego musisz monitorować ps aux | grep -i jamf (nawet bez bycia rootem).

Skrypt JamfExplorer.py może nasłuchiwać na dodawanie nowych plików i nowych argumentów procesu.

Zdalny dostęp do macOS

Oraz o "specjalnych" protokołach sieciowych w MacOS:

{% content-ref url="../macos-security-and-privilege-escalation/macos-protocols.md" %} macos-protocols.md {% endcontent-ref %}

Active Directory

W niektórych przypadkach zauważysz, że komputer z MacOS jest podłączony do AD. W takim scenariuszu powinieneś spróbować wyliczyć katalog aktywny, tak jak jesteś tego przyzwyczajony. Znajdź pomoc na następujących stronach:

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

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

{% content-ref url="../../network-services-pentesting/pentesting-kerberos-88/" %} pentesting-kerberos-88 {% endcontent-ref %}

Pewne lokalne narzędzie MacOS, które również może ci pomóc, to dscl:

dscl "/Active Directory/[Domain]/All Domains" ls /

Również istnieją narzędzia przygotowane dla systemu MacOS do automatycznego wyliczania AD i zabawy z kerberosem:

  • Machound: MacHound to rozszerzenie narzędzia audytowego Bloodhound umożliwiające zbieranie i przetwarzanie relacji w Active Directory na hostach MacOS.
  • Bifrost: Bifrost to projekt Objective-C zaprojektowany do współpracy z interfejsem API Heimdal krb5 na macOS. Celem projektu jest umożliwienie lepszego testowania bezpieczeństwa wokół Kerberosa na urządzeniach macOS przy użyciu natywnych interfejsów API, bez konieczności korzystania z innych frameworków ani pakietów na celu.
  • Orchard: Narzędzie JavaScript for Automation (JXA) do wyliczania Active Directory.

Informacje o domenie

echo show com.apple.opendirectoryd.ActiveDirectory | scutil

Użytkownicy

Trzy rodzaje użytkowników MacOS to:

  • Użytkownicy lokalni — Zarządzani przez lokalną usługę OpenDirectory, nie są w żaden sposób połączeni z Active Directory.
  • Użytkownicy sieciowi — Nietrwałe użytkownicy Active Directory, którzy wymagają połączenia z serwerem DC w celu uwierzytelnienia.
  • Użytkownicy mobilni — Użytkownicy Active Directory z lokalną kopią zapasową swoich poświadczeń i plików.

Lokalne informacje o użytkownikach i grupach są przechowywane w folderze /var/db/dslocal/nodes/Default.
Na przykład informacje o użytkowniku o nazwie mark są przechowywane w /var/db/dslocal/nodes/Default/users/mark.plist, a informacje o grupie admin znajdują się w /var/db/dslocal/nodes/Default/groups/admin.plist.

Oprócz korzystania z krawędzi HasSession i AdminTo, MacHound dodaje trzy nowe krawędzie do bazy danych Bloodhound:

  • CanSSH - podmiot uprawniony do łączenia się przez SSH z hostem
  • CanVNC - podmiot uprawniony do łączenia się przez VNC z hostem
  • CanAE - podmiot uprawniony do wykonywania skryptów AppleEvent na hoście
#User enumeration
dscl . ls /Users
dscl . read /Users/[username]
dscl "/Active Directory/TEST/All Domains" ls /Users
dscl "/Active Directory/TEST/All Domains" read /Users/[username]
dscacheutil -q user

#Computer enumeration
dscl "/Active Directory/TEST/All Domains" ls /Computers
dscl "/Active Directory/TEST/All Domains" read "/Computers/[compname]$"

#Group enumeration
dscl . ls /Groups
dscl . read "/Groups/[groupname]"
dscl "/Active Directory/TEST/All Domains" ls /Groups
dscl "/Active Directory/TEST/All Domains" read "/Groups/[groupname]"

#Domain Information
dsconfigad -show

Więcej informacji można znaleźć pod adresem https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/

Dostęp do Keychain

Keychain prawdopodobnie zawiera wrażliwe informacje, które w przypadku uzyskania dostępu bez generowania monitu mogą pomóc w przeprowadzeniu ćwiczeń czerwonej drużyny:

{% content-ref url="macos-keychain.md" %} macos-keychain.md {% endcontent-ref %}

Usługi zewnętrzne

Red Teaming na MacOS różni się od standardowego Red Teamingu na Windows, ponieważ zazwyczaj MacOS jest zintegrowany z kilkoma zewnętrznymi platformami bezpośrednio. Powszechną konfiguracją MacOS jest dostęp do komputera za pomocą synchronizowanych pośrednictwem OneLogin poświadczeń oraz dostęp do kilku zewnętrznych usług (takich jak github, aws...) za pośrednictwem OneLogin.

Różne techniki Red Team

Safari

Gdy plik jest pobierany w Safari, jeśli jest to plik "bezpieczny", zostanie automatycznie otwarty. Na przykład, jeśli pobierasz plik zip, zostanie automatycznie rozpakowany:

Odnośniki