hacktricks/macos-hardening/macos-red-teaming
2024-09-24 18:23:24 +00:00
..
macos-mdm Translated ['crypto-and-stego/cryptographic-algorithms/unpacking-binarie 2024-07-19 04:51:32 +00:00
macos-keychain.md Translated ['macos-hardening/macos-red-teaming/macos-keychain.md'] to rs 2024-09-24 18:23:24 +00:00
README.md Translated ['macos-hardening/macos-red-teaming/README.md', 'macos-harden 2024-08-21 15:05:58 +00:00

macOS Red Teaming

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Abusing MDMs

  • JAMF Pro: jamf checkJSSConnection
  • Kandji

Ako uspete da kompromitujete administratorske akreditive za pristup upravljačkoj platformi, možete potencijalno kompromitovati sve računare distribuiranjem vašeg malvera na mašinama.

Za red teaming u MacOS okruženjima, veoma je preporučljivo imati neko razumevanje kako MDM-ovi funkcionišu:

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

Using MDM as a C2

MDM će imati dozvolu da instalira, upita ili ukloni profile, instalira aplikacije, kreira lokalne administratorske naloge, postavi firmware lozinku, menja FileVault ključ...

Da biste pokrenuli svoj MDM, potrebno je da vaš CSR potpiše dobavljač što možete pokušati da dobijete sa https://mdmcert.download/. A da biste pokrenuli svoj MDM za Apple uređaje, možete koristiti MicroMDM.

Međutim, da biste instalirali aplikaciju na registrovanom uređaju, i dalje je potrebno da bude potpisana od strane developerskog naloga... međutim, prilikom MDM registracije, uređaj dodaje SSL certifikat MDM-a kao pouzdan CA, tako da sada možete potpisati bilo šta.

Da biste registrovali uređaj u MDM, potrebno je da instalirate mobileconfig datoteku kao root, koja može biti isporučena putem pkg datoteke (možete je kompresovati u zip, a kada se preuzme iz safarija, biće dekompresovana).

Mythic agent Orthrus koristi ovu tehniku.

Abusing JAMF PRO

JAMF može pokretati prilagođene skripte (skripte koje razvija sysadmin), nativne payload-e (kreiranje lokalnog naloga, postavljanje EFI lozinke, praćenje datoteka/procesa...) i MDM (konfiguracije uređaja, sertifikati uređaja...).

JAMF self-enrolment

Idite na stranicu kao što je https://<company-name>.jamfcloud.com/enroll/ da vidite da li imaju omogućenu samoregistraciju. Ako imaju, može tražiti akreditive za pristup.

Možete koristiti skriptu JamfSniper.py da izvršite napad password spraying.

Štaviše, nakon pronalaženja odgovarajućih akreditiva, mogli biste biti u mogućnosti da brute-force-ujete druge korisničke naloge sa sledećim obrascem:

JAMF device Authentication

jamf binarni fajl sadrži tajnu za otvaranje keychain-a koja je u vreme otkrića bila deljena među svima i bila je: jk23ucnq91jfu9aj.
Štaviše, jamf persistira kao LaunchDaemon u /Library/LaunchAgents/com.jamf.management.agent.plist

JAMF Device Takeover

JSS (Jamf Software Server) URL koji će jamf koristiti nalazi se u /Library/Preferences/com.jamfsoftware.jamf.plist.
Ova datoteka u suštini sadrži URL:

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 %}

Dakle, napadač bi mogao da postavi zlonamerni paket (pkg) koji prepisuje ovu datoteku prilikom instalacije postavljajući URL na Mythic C2 slušalac iz Typhon agenta kako bi sada mogao da zloupotrebi JAMF kao C2.

{% code overflow="wrap" %}

# 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 %}

JAMF Impersonacija

Da biste imitirali komunikaciju između uređaja i JMF-a, potrebno je:

  • UUID uređaja: ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'
  • JAMF ključanica iz: /Library/Application\ Support/Jamf/JAMF.keychain koja sadrži sertifikat uređaja

Sa ovom informacijom, napravite VM sa ukradenim Hardver UUID i sa onemogućenim SIP, prebacite JAMF ključanicu, hook-ujte Jamf agent i ukradite njegove informacije.

Krađa tajni

a

Takođe možete pratiti lokaciju /Library/Application Support/Jamf/tmp/ za prilagođene skripte koje administratori možda žele da izvrše putem Jamf-a, jer su ovde smeštene, izvršene i uklonjene. Ove skripte mogu sadržati akreditive.

Međutim, akreditivi se mogu proslediti ovim skriptama kao parametri, pa biste trebali pratiti ps aux | grep -i jamf (čak i bez da budete root).

Skripta JamfExplorer.py može slušati nove datoteke koje se dodaju i nove argumente procesa.

macOS Daljinski Pristup

I takođe o MacOS "posebnim" mrežnim protokolima:

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

Active Directory

U nekim slučajevima ćete otkriti da je MacOS računar povezan sa AD. U ovom scenariju trebali biste pokušati da enumerišete aktivni direktorijum kao što ste navikli. Pronađite neku pomoć na sledećim stranicama:

{% 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 %}

Neki lokalni MacOS alat koji vam takođe može pomoći je dscl:

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

Takođe postoje neki alati pripremljeni za MacOS koji automatski enumerišu AD i igraju se sa kerberosom:

  • Machound: MacHound je ekstenzija za Bloodhound alat za reviziju koja omogućava prikupljanje i unos odnosa Active Directory na MacOS hostovima.
  • Bifrost: Bifrost je Objective-C projekat dizajniran za interakciju sa Heimdal krb5 API-ima na macOS-u. Cilj projekta je omogućiti bolje testiranje bezbednosti oko Kerberosa na macOS uređajima koristeći nativne API-je bez potrebe za bilo kojim drugim okvirom ili paketima na cilju.
  • Orchard: JavaScript za automatizaciju (JXA) alat za izvršavanje enumeracije Active Directory.

Informacije o domeni

echo show com.apple.opendirectoryd.ActiveDirectory | scutil

Korisnici

Tri tipa MacOS korisnika su:

  • Lokalni korisnici — Upravlja ih lokalna OpenDirectory usluga, nisu na bilo koji način povezani sa Active Directory.
  • Mrežni korisnici — Volatilni Active Directory korisnici koji zahtevaju vezu sa DC serverom za autentifikaciju.
  • Mobilni korisnici — Active Directory korisnici sa lokalnom rezervnom kopijom svojih kredencijala i fajlova.

Lokalne informacije o korisnicima i grupama se čuvaju u folderu /var/db/dslocal/nodes/Default.
Na primer, informacije o korisniku pod imenom mark se čuvaju u /var/db/dslocal/nodes/Default/users/mark.plist a informacije o grupi admin su u /var/db/dslocal/nodes/Default/groups/admin.plist.

Pored korišćenja HasSession i AdminTo ivica, MacHound dodaje tri nove ivice u Bloodhound bazu podataka:

  • CanSSH - entitet kojem je dozvoljeno SSH na host
  • CanVNC - entitet kojem je dozvoljeno VNC na host
  • CanAE - entitet kojem je dozvoljeno izvršavanje AppleEvent skripti na host
#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

Više informacija na https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/

Computer$ lozinka

Dobijte lozinke koristeći:

bifrost --action askhash --username [name] --password [password] --domain [domain]

Moguće je pristupiti Computer$ lozinki unutar System keychain-a.

Over-Pass-The-Hash

Dobijte TGT za specifičnog korisnika i uslugu:

bifrost --action asktgt --username [user] --domain [domain.com] \
--hash [hash] --enctype [enctype] --keytab [/path/to/keytab]

Kada se TGT prikupi, moguće je ubrizgati ga u trenutnu sesiju sa:

bifrost --action asktgt --username test_lab_admin \
--hash CF59D3256B62EE655F6430B0F80701EE05A0885B8B52E9C2480154AFA62E78 \
--enctype aes256 --domain test.lab.local

Kerberoasting

bifrost --action asktgs --spn [service] --domain [domain.com] \
--username [user] --hash [hash] --enctype [enctype]

Sa dobijenim servisnim tiketima moguće je pokušati pristupiti deljenjima na drugim računarima:

smbutil view //computer.fqdn
mount -t smbfs //server/folder /local/mount/point

Pristupanje Keychain-u

Keychain verovatno sadrži osetljive informacije koje, ako se pristupi bez generisanja obaveštenja, mogu pomoći u napredovanju vežbe crvenog tima:

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

Spoljni servisi

MacOS Red Teaming se razlikuje od regularnog Windows Red Teaming-a jer je obično MacOS integrisan sa nekoliko spoljnih platformi direktno. Uobičajena konfiguracija MacOS-a je pristup računaru koristeći OneLogin sinhronizovane akreditive, i pristupanje nekoliko spoljnih servisa (kao što su github, aws...) putem OneLogin-a.

Razne tehnike crvenog tima

Safari

Kada se fajl preuzme u Safariju, ako je to "siguran" fajl, biće automatski otvoren. Dakle, na primer, ako preuzmete zip, biće automatski raspakovan:

Reference

{% hint style="success" %} Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks
{% endhint %}