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

8.5 KiB

macOS Sleutelsak

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}

Hoof Sleutelsakke

  • Die Gebruiker Sleutelsak (~/Library/Keychains/login.keycahin-db), wat gebruik word om gebruiker-spesifieke akrediteer soos toepassingswagwoorde, internetwagwoorde, gebruiker-gegenereerde sertifikate, netwerkwagwoorde, en gebruiker-gegenereerde publieke/privaat sleutels te stoor.
  • Die Stelsel Sleutelsak (/Library/Keychains/System.keychain), wat stelsel-wye akrediteer soos WiFi wagwoorde, stelsel wortelsertifikate, stelsel privaat sleutels, en stelsel toepassingswagwoorde stoor.

Wagwoord Sleutelsak Toegang

Hierdie lêers, terwyl hulle nie inherente beskerming het nie en afgelaai kan word, is versleuteld en vereis die gebruiker se platte wagwoord om ontsleuteld te word. 'n Gereedskap soos Chainbreaker kan gebruik word vir ontsleuteling.

Sleutelsak Inskrywings Beskerming

ACLs

Elke inskrywing in die sleutelsak word gereguleer deur Toegang Beheer Lyste (ACLs) wat bepaal wie verskillende aksies op die sleutelsak inskrywing kan uitvoer, insluitend:

  • ACLAuhtorizationExportClear: Laat die houer toe om die duidelike teks van die geheim te verkry.
  • ACLAuhtorizationExportWrapped: Laat die houer toe om die duidelike teks wat met 'n ander verskafde wagwoord versleuteld is, te verkry.
  • ACLAuhtorizationAny: Laat die houer toe om enige aksie uit te voer.

Die ACLs word verder vergesel deur 'n lys van vertroude toepassings wat hierdie aksies kan uitvoer sonder om te vra. Dit kan wees:

  • Nil (geen toestemming vereis, elkeen is vertrou)
  • 'n leë lys (niemand is vertrou)
  • Lys van spesifieke toepassings.

Ook kan die inskrywing die sleutel ACLAuthorizationPartitionID bevat, wat gebruik word om die teamid, apple, en cdhash te identifiseer.

  • As die teamid gespesifiseer is, dan om die inskrywing waarde sonder 'n prompt te verkry moet die gebruikte toepassing die selfde teamid hê.
  • As die apple gespesifiseer is, dan moet die app onderteken wees deur Apple.
  • As die cdhash aangedui is, dan moet die app die spesifieke cdhash hê.

Skep 'n Sleutelsak Inskrywing

Wanneer 'n nuwe inskrywing geskep word met Keychain Access.app, geld die volgende reëls:

  • Alle apps kan versleutel.
  • Geen apps kan uitvoer/ontsleutel (sonder om die gebruiker te vra).
  • Alle apps kan die integriteitskontrole sien.
  • Geen apps kan ACLs verander nie.
  • Die partitionID is gestel op apple.

Wanneer 'n toepassing 'n inskrywing in die sleutelsak skep, is die reëls effens anders:

  • Alle apps kan versleutel.
  • Slegs die skep-toepassing (of enige ander apps wat eksplisiet bygevoeg is) kan uitvoer/ontsleutel (sonder om die gebruiker te vra).
  • Alle apps kan die integriteitskontrole sien.
  • Geen apps kan die ACLs verander nie.
  • Die partitionID is gestel op teamid:[teamID hier].

Toegang tot die Sleutelsak

security

# List keychains
security list-keychains

# Dump all metadata and decrypted secrets (a lot of pop-ups)
security dump-keychain -a -d

# Find generic password for the "Slack" account and print the secrets
security find-generic-password -a "Slack" -g

# Change the specified entrys PartitionID entry
security set-generic-password-parition-list -s "test service" -a "test acount" -S

# Dump specifically the user keychain
security dump-keychain ~/Library/Keychains/login.keychain-db

APIs

{% hint style="success" %} Die keychain enumerasie en dumping van geheime wat nie 'n prompt sal genereer nie kan gedoen word met die hulpmiddel LockSmith {% endhint %}

Lys en kry inligting oor elke keychain inskrywing:

  • Die API SecItemCopyMatching gee inligting oor elke inskrywing en daar is 'n paar eienskappe wat jy kan stel wanneer jy dit gebruik:
  • kSecReturnData: As waar, sal dit probeer om die data te ontsleutel (stel op vals om potensiële pop-ups te vermy)
  • kSecReturnRef: Kry ook verwysing na keychain item (stel op waar in geval jy later sien jy kan ontsleutel sonder pop-up)
  • kSecReturnAttributes: Kry metadata oor inskrywings
  • kSecMatchLimit: Hoeveel resultate om terug te gee
  • kSecClass: Watter soort keychain inskrywing

Kry ACLs van elke inskrywing:

  • Met die API SecAccessCopyACLList kan jy die ACL vir die keychain item kry, en dit sal 'n lys van ACLs teruggee (soos ACLAuhtorizationExportClear en die ander voorheen genoem) waar elke lys het:
  • Beskrywing
  • Vertroude Toepassing Lys. Dit kan wees:
  • 'n app: /Applications/Slack.app
  • 'n binêre: /usr/libexec/airportd
  • 'n groep: group://AirPort

Eksporteer die data:

  • Die API SecKeychainItemCopyContent kry die platte teks
  • Die API SecItemExport eksporteer die sleutels en sertifikate maar jy mag dalk wagwoorde moet stel om die inhoud versleuteld te eksporteer

En dit is die vereistes om 'n geheim sonder 'n prompt te kan eksporteer:

  • As 1+ vertroude apps gelys:
  • Nodig die toepaslike autorisasies (Nil, of wees deel van die toegelate lys van apps in die autorisasie om toegang tot die geheime inligting te verkry)
  • Nodig kodehandtekening om te pas by PartitionID
  • Nodig kodehandtekening om te pas by een vertroude app (of wees 'n lid van die regte KeychainAccessGroup)
  • As alle toepassings vertrou:
  • Nodig die toepaslike autorisasies
  • Nodig kodehandtekening om te pas by PartitionID
  • As geen PartitionID, dan is dit nie nodig nie

{% hint style="danger" %} Daarom, as daar 1 toepassing gelys is, moet jy kode in daardie toepassing inspuit.

As apple aangedui word in die partitionID, kan jy dit met osascript benader, so enigiets wat alle toepassings met apple in die partitionID vertrou. Python kan ook hiervoor gebruik word. {% endhint %}

Twee addisionele eienskappe

  • Onsigbaar: Dit is 'n booleaanse vlag om die inskrywing van die UI Keychain app te versteek
  • Algemeen: Dit is om metadata te stoor (so dit is NIE VERSPREID nie)
  • Microsoft het al die verfrissingstokens in platte teks gestoor om toegang tot sensitiewe eindpunte te verkry.

References

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

Ondersteun HackTricks
{% endhint %}