macOS Sensitive Locations & Interesting Daemons
Last updated
Last updated
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)
Shadow lozinka se čuva sa konfiguracijom korisnika u plists smeštenim u /var/db/dslocal/nodes/Default/users/
.
Sledeći oneliner može se koristiti za iskopavanje sve informacije o korisnicima (uključujući informacije o hash-u):
Skripte poput ove ili ove mogu se koristiti za transformaciju heša u hashcat format.
Alternativni jedan-liner koji će izbaciti kredencijale svih ne-servisnih naloga u hashcat formatu -m 7100
(macOS PBKDF2-SHA512):
Još jedan način da se dobije ShadowHashData
korisnika je korišćenjem dscl
: sudo dscl . -read /Users/`whoami` ShadowHashData
Ova datoteka se koristi samo kada sistem radi u jedno-korisničkom režimu (dakle, ne vrlo često).
Imajte na umu da prilikom korišćenja binarne datoteke za sigurnost da izbacite dekriptovane lozinke, nekoliko prompteva će tražiti od korisnika da dozvoli ovu operaciju.
Na osnovu ovog komentara juuso/keychaindump#10 (comment), izgleda da ovi alati više ne funkcionišu u Big Sur-u.
Alat pod nazivom keychaindump razvijen je za ekstrakciju lozinki iz macOS ključanika, ali se suočava sa ograničenjima na novijim verzijama macOS-a poput Big Sur-a, kako je naznačeno u diskusiji. Korišćenje keychaindump zahteva od napadača da dobije pristup i eskalira privilegije na root. Alat koristi činjenicu da je ključanik po defaultu otključan prilikom prijave korisnika radi pogodnosti, omogućavajući aplikacijama da mu pristupaju bez ponovnog traženja lozinke korisnika. Međutim, ako korisnik odluči da zaključa svoj ključanik nakon svake upotrebe, keychaindump postaje neefikasan.
Keychaindump funkcioniše tako što cilja specifičan proces nazvan securityd, koji Apple opisuje kao demon za autorizaciju i kriptografske operacije, što je ključno za pristup ključaniku. Proces ekstrakcije uključuje identifikaciju Master Key-a izvedenog iz lozinke za prijavu korisnika. Ova ključna informacija je neophodna za čitanje datoteke ključanika. Da bi locirao Master Key, keychaindump skenira memorijski heap securityd koristeći komandu vmmap
, tražeći potencijalne ključeve unutar oblasti označenih kao MALLOC_TINY
. Sledeća komanda se koristi za inspekciju ovih memorijskih lokacija:
Nakon identifikacije potencijalnih master ključeva, keychaindump pretražuje hrpe za specifičnim obrascem (0x0000000000000018
) koji ukazuje na kandidata za master ključ. Dalji koraci, uključujući deobfuskaciju, su potrebni za korišćenje ovog ključa, kao što je navedeno u izvor kodu keychaindump. Analitičari koji se fokusiraju na ovu oblast treba da primete da su ključni podaci za dekripciju keychain-a smešteni unutar memorije securityd procesa. Primer komande za pokretanje keychaindump je:
Chainbreaker može se koristiti za ekstrakciju sledećih tipova informacija iz OSX keychain-a na forenzički ispravan način:
Hashovana lozinka za keychain, pogodna za razbijanje sa hashcat ili John the Ripper
Internet lozinke
Generičke lozinke
Privatni ključevi
Javni ključevi
X509 sertifikati
Sigurne beleške
Appleshare lozinke
Uzimajući u obzir lozinku za otključavanje keychain-a, master ključ dobijen korišćenjem volafox ili volatility, ili datoteku za otključavanje kao što je SystemKey, Chainbreaker će takođe pružiti lozinke u običnom tekstu.
Bez jedne od ovih metoda otključavanja Keychain-a, Chainbreaker će prikazati sve druge dostupne informacije.
Pratite ove korake da izvršite dump memorije
Ako znate korisničku lozinku, možete je koristiti da izvučete i dekriptujete keychain-e koji pripadaju korisniku.
Fajl kcpassword je fajl koji sadrži lozinku za prijavu korisnika, ali samo ako je vlasnik sistema omogućio automatsku prijavu. Stoga, korisnik će biti automatski prijavljen bez traženja lozinke (što nije baš sigurno).
Lozinka se čuva u fajlu /etc/kcpassword
xored sa ključem 0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F
. Ako je lozinka korisnika duža od ključa, ključ će se ponovo koristiti.
To čini lozinku prilično lakom za oporavak, na primer koristeći skripte kao ovu.
Možete pronaći podatke o obaveštenjima u $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
Većina zanimljivih informacija će biti u blob. Tako da ćete morati da izvučete taj sadržaj i transformišete ga u čitljiv format ili koristite strings
. Da biste mu pristupili, možete uraditi:
Korisničke beleške mogu se naći u ~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite
U macOS aplikacijama, podešavanja se nalaze u $HOME/Library/Preferences
, a u iOS-u su u /var/mobile/Containers/Data/Application/<UUID>/Library/Preferences
.
U macOS-u, cli alat defaults
može se koristiti za modifikovanje Preferences datoteke.
/usr/sbin/cfprefsd
zahteva XPC usluge com.apple.cfprefsd.daemon
i com.apple.cfprefsd.agent
i može se pozvati da izvrši radnje kao što je modifikovanje podešavanja.
Datoteka /System/Library/OpenDirectory/permissions.plist
sadrži dozvole primenjene na atribute čvora i zaštićena je SIP-om.
Ova datoteka dodeljuje dozvole specifičnim korisnicima po UUID-u (a ne uid-u) kako bi mogli da pristupe specifičnim osetljivim informacijama kao što su ShadowHashData
, HeimdalSRPKey
i KerberosKeys
među ostalima:
Glavni demon za obaveštenja je /usr/sbin/notifyd
. Da bi primali obaveštenja, klijenti moraju da se registruju putem com.apple.system.notification_center
Mach porta (proverite ih sa sudo lsmp -p <pid notifyd>
). Demon se može konfigurisati datotekom /etc/notify.conf
.
Imena koja se koriste za obaveštenja su jedinstvene obrnute DNS notacije i kada se obaveštenje pošalje jednom od njih, klijent(i) koji su naznačili da mogu da ga obrade će ga primiti.
Moguće je dumpovati trenutni status (i videti sva imena) slanjem signala SIGUSR2 procesu notifyd i čitanjem generisane datoteke: /var/run/notifyd_<pid>.status
:
Distributed Notification Center čija je glavna binarna datoteka /usr/sbin/distnoted
, je još jedan način za slanje obaveštenja. Izlaže neke XPC usluge i vrši neke provere kako bi pokušao da verifikuje klijente.
U ovom slučaju, aplikacije se mogu registrovati za teme. Klijent će generisati token kontaktirajući Apple-ove servere putem apsd
.
Zatim, provajderi će takođe generisati token i moći će da se povežu sa Apple-ovim serverima kako bi slali poruke klijentima. Ove poruke će lokalno primiti apsd
koji će proslediti obaveštenje aplikaciji koja ga čeka.
Podešavanja se nalaze u /Library/Preferences/com.apple.apsd.plist
.
Postoji lokalna baza podataka poruka koja se nalazi u macOS-u u /Library/Application\ Support/ApplePushService/aps.db
i u iOS-u u /var/mobile/Library/ApplePushService
. Ima 3 tabele: incoming_messages
, outgoing_messages
i channel
.
Takođe je moguće dobiti informacije o daemon-u i vezama koristeći:
Ovo su obaveštenja koja korisnik treba da vidi na ekranu:
CFUserNotification
: Ovaj API pruža način da se na ekranu prikaže iskačuće obaveštenje sa porukom.
Oglasna tabla: Ovo prikazuje u iOS-u baner koji nestaje i biće sačuvan u Centru za obaveštenja.
NSUserNotificationCenter
: Ovo je oglasna tabla u iOS-u na MacOS-u. Baza podataka sa obaveštenjima se nalazi u /var/folders/<user temp>/0/com.apple.notificationcenter/db2/db
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)