macOS Sensitive Locations & Interesting Daemons
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:
HackTricks Opleiding GCP Red Team Expert (GRTE)
Wagwoorde
Skadu Wagwoorde
Skadu wagwoord word gestoor met die gebruiker se konfigurasie in plists geleë in /var/db/dslocal/nodes/Default/users/
.
Die volgende eenlyn kan gebruik word om alle inligting oor die gebruikers (insluitend hash inligting) te dump:
Scripts soos hierdie of hierdie kan gebruik word om die hash na hashcat formaat te transformeer.
'n Alternatiewe een-liner wat die kredensiale van alle nie-diens rekeninge in hashcat formaat -m 7100
(macOS PBKDF2-SHA512) sal dump:
Sleutelsak Dump
Let daarop dat wanneer die sekuriteit-binary gebruik word om die wagwoorde ontcijfer te dump, verskeie vrae die gebruiker sal vra om hierdie operasie toe te laat.
Op grond van hierdie kommentaar juuso/keychaindump#10 (comment) lyk dit of hierdie gereedskap nie meer werk in Big Sur nie.
Keychaindump Oorsig
'n Gereedskap genaamd keychaindump is ontwikkel om wagwoorde uit macOS sleutelhouers te onttrek, maar dit ondervind beperkings op nuwer macOS weergawes soos Big Sur, soos aangedui in 'n bespreking. Die gebruik van keychaindump vereis dat die aanvaller toegang verkry en bevoegdhede tot root verhoog. Die gereedskap benut die feit dat die sleutelhouer standaard ontgrendel is by gebruikersaanmelding vir gerief, wat toepassings toelaat om dit te benader sonder om die gebruiker se wagwoord herhaaldelik te vereis. As 'n gebruiker egter kies om hul sleutelhouer na elke gebruik te sluit, word keychaindump ondoeltreffend.
Keychaindump werk deur 'n spesifieke proses genaamd securityd te teiken, wat deur Apple beskryf word as 'n daemon vir magtiging en kriptografiese operasies, wat noodsaaklik is vir toegang tot die sleutelhouer. Die onttrekkingsproses behels die identifisering van 'n Master Key wat afgelei is van die gebruiker se aanmeldwagwoord. Hierdie sleutel is noodsaaklik om die sleutelhouer-lêer te lees. Om die Master Key te vind, skandeer keychaindump die geheuehoop van securityd met behulp van die vmmap
opdrag, op soek na potensiële sleutels binne areas wat as MALLOC_TINY
gemerk is. Die volgende opdrag word gebruik om hierdie geheue-lokasies te ondersoek:
Na die identifisering van potensiële meester sleutels, keychaindump soek deur die hoop vir 'n spesifieke patroon (0x0000000000000018
) wat 'n kandidaat vir die meester sleutel aandui. Verdere stappe, insluitend deobfuscation, is nodig om hierdie sleutel te benut, soos uiteengesit in keychaindump's bronkode. Ontleders wat op hierdie gebied fokus, moet oplet dat die belangrike data vir die ontsleuteling van die sleutelring binne die geheue van die securityd proses gestoor is. 'n Voorbeeldopdrag om keychaindump te loop is:
chainbreaker
Chainbreaker kan gebruik word om die volgende tipes inligting uit 'n OSX sleutelketting op 'n forensies-gesonde manier te onttrek:
Gehashde Sleutelketing wagwoord, geskik vir kraken met hashcat of John the Ripper
Internet Wagwoorde
Generiese Wagwoorde
Privaat Sleutels
Publieke Sleutels
X509 Sertifikate
Veilige Aantekeninge
Appleshare Wagwoorde
Gegewe die sleutelketing ontgrendel wagwoord, 'n meester sleutel verkry met behulp van volafox of volatility, of 'n ontgrendel lêer soos SystemKey, sal Chainbreaker ook platteks wagwoorde verskaf.
Sonder een van hierdie metodes om die Sleutelketing te ontgrendel, sal Chainbreaker al die ander beskikbare inligting vertoon.
Dump sleutelketing sleutels
Dump sleutelring sleutels (met wagwoorde) met SystemKey
Dump sleutelring sleutels (met wagwoorde) om die hash te kraak
Dump sleutelring sleutels (met wagwoorde) met geheue-aflaai
Volg hierdie stappe om 'n geheue-aflaai uit te voer
Dump sleutelring sleutels (met wagwoorde) met die gebruiker se wagwoord
As jy die gebruiker se wagwoord ken, kan jy dit gebruik om sleutelrings wat aan die gebruiker behoort te dump en te ontsleutel.
kcpassword
Die kcpassword lêer is 'n lêer wat die gebruikers se aanmeldwagwoord bevat, maar slegs as die stelselaanvaarder outomatiese aanmelding geaktiveer het. Daarom sal die gebruiker outomaties aangemeld word sonder om vir 'n wagwoord gevra te word (wat nie baie veilig is nie).
Die wagwoord word in die lêer /etc/kcpassword
xored met die sleutel 0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F
. As die gebruiker se wagwoord langer is as die sleutel, sal die sleutel hergebruik word.
Dit maak die wagwoord redelik maklik om te herstel, byvoorbeeld met behulp van skripte soos hierdie een.
Interessante Inligting in Databasisse
Boodskappe
Kennisgewings
Jy kan die Kennisgewings data vind in $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
Die meeste van die interessante inligting gaan in blob wees. So jy sal daardie inhoud moet onttrek en dit moet omskakel na mens leesbaar of gebruik strings
. Om toegang te verkry kan jy doen:
Aantekeninge
Die gebruikers aantekeninge kan gevind word in ~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite
Voorkeure
In macOS toepassings is voorkeure geleë in $HOME/Library/Preferences
en in iOS is dit in /var/mobile/Containers/Data/Application/<UUID>/Library/Preferences
.
In macOS kan die cli-gereedskap defaults
gebruik word om die Voorkeur lêer te wysig.
/usr/sbin/cfprefsd
eis die XPC dienste com.apple.cfprefsd.daemon
en com.apple.cfprefsd.agent
en kan geroep word om aksies soos om voorkeure te wysig, uit te voer.
Stelselnotasies
Darwin Notasies
Die hoofdaemon vir notasies is /usr/sbin/notifyd
. Om notasies te ontvang, moet kliënte registreer deur die com.apple.system.notification_center
Mach-poort (kontroleer dit met sudo lsmp -p <pid notifyd>
). Die daemon is konfigureerbaar met die lêer /etc/notify.conf
.
Die name wat vir notasies gebruik word, is unieke omgekeerde DNS-notasies en wanneer 'n notasie na een van hulle gestuur word, sal die kliënt(e) wat aangedui het dat hulle dit kan hanteer, dit ontvang.
Dit is moontlik om die huidige status te dump (en al die name te sien) deur die sein SIGUSR2 na die notifyd-proses te stuur en die gegenereerde lêer te lees: /var/run/notifyd_<pid>.status
:
Verspreide Kennisgewing Sentrum
Die Verspreide Kennisgewing Sentrum waarvan die hoof binêre /usr/sbin/distnoted
is, is 'n ander manier om kennisgewings te stuur. Dit stel 'n paar XPC dienste bloot en dit voer 'n paar kontroles uit om te probeer om kliënte te verifieer.
Apple Push Kennisgewings (APN)
In hierdie geval kan toepassings registreer vir onderwerpe. Die kliënt sal 'n token genereer deur Apple se bedieners te kontak deur middel van apsd
.
Dan sal verskaffers ook 'n token genereer en in staat wees om met Apple se bedieners te verbind om boodskappe aan die kliënte te stuur. Hierdie boodskappe sal plaaslik deur apsd
ontvang word wat die kennisgewing aan die toepassing wat daarop wag, sal oordra.
Die voorkeure is geleë in /Library/Preferences/com.apple.apsd.plist
.
Daar is 'n plaaslike databasis van boodskappe geleë in macOS in /Library/Application\ Support/ApplePushService/aps.db
en in iOS in /var/mobile/Library/ApplePushService
. Dit het 3 tabelle: incoming_messages
, outgoing_messages
en channel
.
Dit is ook moontlik om inligting oor die daemon en verbindings te verkry met:
User Notifications
Hierdie is kennisgewings wat die gebruiker op die skerm moet sien:
CFUserNotification
: Hierdie API bied 'n manier om 'n pop-up met 'n boodskap op die skerm te wys.Die Bulletin Board: Dit wys in iOS 'n banner wat verdwyn en in die Kennisgewing Sentrum gestoor sal word.
NSUserNotificationCenter
: Dit is die iOS bulletin board in MacOS. Die databasis met die kennisgewings is geleë in/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)
Last updated