diff --git a/SUMMARY.md b/SUMMARY.md
index 1cc896174..469469af5 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -725,6 +725,7 @@
* [Ret2plt](binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2plt.md)
* [Ret2ret & Reo2pop](binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2ret.md)
* [CET & Shadow Stack](binary-exploitation/common-binary-protections-and-bypasses/cet-and-shadow-stack.md)
+ * [Libc Protections](binary-exploitation/common-binary-protections-and-bypasses/libc-protections.md)
* [Memory Tagging Extension (MTE)](binary-exploitation/common-binary-protections-and-bypasses/memory-tagging-extension-mte.md)
* [No-exec / NX](binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md)
* [PIE](binary-exploitation/common-binary-protections-and-bypasses/pie/README.md)
diff --git a/binary-exploitation/common-binary-protections-and-bypasses/libc-protections.md b/binary-exploitation/common-binary-protections-and-bypasses/libc-protections.md
new file mode 100644
index 000000000..d21bf0981
--- /dev/null
+++ b/binary-exploitation/common-binary-protections-and-bypasses/libc-protections.md
@@ -0,0 +1,94 @@
+# Protezioni di Libc
+
+
+
+Impara l'hacking di AWS da zero a eroe conhtARTE (Esperto Red Team AWS di HackTricks)!
+
+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)
+* 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** 🐦 [**@hacktricks\_live**](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.
+
+
+
+## Applicazione dell'Allineamento dei Chunk
+
+**Malloc** alloca memoria in **gruppi di 8 byte (32-bit) o 16 byte (64-bit)**. Ciò significa che la fine dei chunk nei sistemi a 32 bit dovrebbe allinearsi con **0x8**, e nei sistemi a 64 bit con **0x0**. La funzionalità di sicurezza controlla che ogni chunk **si allinei correttamente** in queste posizioni specifiche prima di utilizzare un puntatore da un bin.
+
+### Benefici per la Sicurezza
+
+L'applicazione dell'allineamento dei chunk nei sistemi a 64 bit migliora significativamente la sicurezza di Malloc limitando il posizionamento dei chunk falsi a solo 1 su ogni 16 indirizzi. Ciò complica gli sforzi di exploit, specialmente in scenari in cui l'utente ha un controllo limitato sui valori di input, rendendo gli attacchi più complessi e difficili da eseguire con successo.
+
+* **Attacco Fastbin su \_\_malloc\_hook**
+
+Le nuove regole di allineamento in Malloc ostacolano anche un attacco classico che coinvolge il `__malloc_hook`. Precedentemente, gli attaccanti potevano manipolare le dimensioni dei chunk per **sovrascrivere questo puntatore di funzione** e ottenere **esecuzione di codice**. Ora, il rigoroso requisito di allineamento garantisce che tali manipolazioni non siano più valide, chiudendo una via comune di exploit e potenziando la sicurezza complessiva.
+
+## Mascheramento dei Puntatori su fastbins e tcache
+
+Il **Mascheramento dei Puntatori** è un potenziamento della sicurezza utilizzato per proteggere i **puntatori Fd di fastbin e tcache** nelle operazioni di gestione della memoria. Questa tecnica aiuta a prevenire certi tipi di tattiche di exploit di memoria, in particolare quelle che non richiedono informazioni di memoria divulgate o che manipolano direttamente le posizioni di memoria relative a posizioni conosciute (sovrascritture **relative**).
+
+Il cuore di questa tecnica è una formula di oscuramento:
+
+**`Nuovo_Ptr = (L >> 12) XOR P`**
+
+* **L** è la **Posizione di Archiviazione** del puntatore.
+* **P** è il vero **Puntatore Fd di fastbin/tcache**.
+
+Il motivo per cui lo spostamento bit a bit della posizione di archiviazione (L) di 12 bit verso destra prima dell'operazione XOR è critico. Questa manipolazione affronta una vulnerabilità intrinseca nella natura deterministica dei 12 bit meno significativi degli indirizzi di memoria, che sono tipicamente prevedibili a causa dei vincoli dell'architettura di sistema. Spostando i bit, la porzione prevedibile viene esclusa dall'equazione, migliorando la casualità del nuovo puntatore mascherato e proteggendo così dagli exploit che si basano sulla prevedibilità di questi bit.
+
+Questo puntatore mascherato sfrutta la casualità esistente fornita dalla **Randomizzazione dello Spazio degli Indirizzi (ASLR)**, che randomizza gli indirizzi utilizzati dai programmi per rendere difficile ai malintenzionati prevedere la disposizione della memoria di un processo.
+
+**Demascherare** il puntatore per recuperare l'indirizzo originale coinvolge l'utilizzo della stessa operazione XOR. Qui, il puntatore mascherato è trattato come P nella formula, e quando XORato con la posizione di archiviazione invariata (L), si ottiene il puntatore originale. Questa simmetria nel mascheramento e demascheramento garantisce che il sistema possa codificare e decodificare efficientemente i puntatori senza un overhead significativo, aumentando notevolmente la sicurezza contro gli attacchi che manipolano i puntatori di memoria.
+
+### Benefici per la Sicurezza
+
+Il mascheramento dei puntatori mira a **prevenire sovrascritture parziali e complete dei puntatori nell'heap**, un miglioramento significativo in termini di sicurezza. Questa funzionalità influisce sulle tecniche di exploit in diversi modi:
+
+1. **Prevenzione delle Sovrascritture Relative di Byte**: Precedentemente, gli attaccanti potevano modificare parte di un puntatore per **reindirizzare i chunk dell'heap verso posizioni diverse senza conoscere gli indirizzi esatti**, una tecnica evidente nell'exploit **House of Roman** senza leak. Con il mascheramento dei puntatori, tali sovrascritture relative **senza un leak dell'heap richiedono ora un attacco a forza bruta**, riducendo drasticamente la probabilità di successo.
+2. **Aumento della Difficoltà degli Attacchi a Tcache Bin/Fastbin**: Gli attacchi comuni che sovrascrivono i puntatori di funzione (come `__malloc_hook`) manipolando le voci fastbin o tcache sono ostacolati. Ad esempio, un attacco potrebbe coinvolgere il leak di un indirizzo LibC, liberare un chunk nel tcache bin, e quindi sovrascrivere il puntatore Fd per reindirizzarlo a `__malloc_hook` per l'esecuzione di codice arbitrario. Con il mascheramento dei puntatori, questi puntatori devono essere correttamente mascherati, **necessitando di un leak dell'heap per una manipolazione accurata**, elevando così la barriera dell'exploit.
+3. **Necessità di Leak dell'Heap in Posizioni Non-Heap**: Creare un chunk falso in aree non-heap (come lo stack, la sezione .bss o PLT/GOT) ora richiede anche un leak dell'heap a causa della necessità di mascheramento dei puntatori. Ciò estende la complessità nell'exploit di queste aree, simile alla necessità di manipolare gli indirizzi LibC.
+4. **Rendere più Complicato il Leak degli Indirizzi dell'Heap**: Il mascheramento dei puntatori limita l'utilità dei puntatori Fd nei fastbin e tcache bin come fonti di leak degli indirizzi dell'heap. Tuttavia, i puntatori nei bin non ordinati, piccoli e grandi rimangono non mascherati, quindi ancora utilizzabili per il leak degli indirizzi. Questo spinge gli attaccanti a esplorare questi bin per informazioni sfruttabili, anche se alcune tecniche potrebbero ancora consentire di demascherare i puntatori prima di un leak, sebbene con vincoli.
+
+### **Demascherare i Puntatori con un Leak dell'Heap**
+
+{% hint style="danger" %}
+Per una migliore spiegazione del processo [**controlla il post originale da qui**](https://maxwelldulin.com/BlogPost?post=5445977088).
+{% endhint %}
+
+### Panoramica dell'Algoritmo
+
+La formula utilizzata per mascherare e demascherare i puntatori è:
+
+**`Nuovo_Ptr = (L >> 12) XOR P`**
+
+Dove **L** è la posizione di archiviazione e **P** è il puntatore Fd. Quando **L** viene spostato a destra di 12 bit, si ottengono i bit più significativi di **P**, a causa della natura di **XOR**, che restituisce 0 quando i bit vengono XORati con se stessi.
+
+**Passaggi Chiave nell'Algoritmo:**
+
+1. **Leak Iniziale dei Bit più Significativi**: XORando lo spostato **L** con **P**, si ottengono efficacemente i primi 12 bit di **P** poiché la porzione spostata di **L** sarà zero, lasciando invariati i bit corrispondenti di **P**.
+2. **Recupero dei Bit del Puntatore**: Poiché XOR è reversibile, conoscere il risultato e uno degli operandi consente di calcolare l'altro operando. Questa proprietà è utilizzata per dedurre l'intero set di bit per **P** XORando successivamente set di bit con parti del puntatore mascherato.
+3. **Demascheramento Iterativo**: Il processo viene ripetuto, ogni volta utilizzando i bit di **P** appena scoperti dal passaggio precedente per decodificare il segmento successivo del puntatore mascherato, fino a quando tutti i bit sono recuperati.
+4. **Gestione dei Bit Deterministici**: I 12 bit finali di **L** vengono persi a causa dello spostamento, ma sono deterministici e possono essere ricostruiti post-processo.
+
+Puoi trovare un'implementazione di questo algoritmo qui: [https://github.com/mdulin2/mangle](https://github.com/mdulin2/mangle)
+## Protezione Pointer Guard
+
+Pointer guard è una tecnica di mitigazione degli exploit utilizzata in glibc per proteggere i puntatori di funzione memorizzati, in particolare quelli registrati dalle chiamate di libreria come `atexit()`. Questa protezione coinvolge la mescolatura dei puntatori tramite XOR con un segreto memorizzato nei dati del thread (`fs:0x30`) e l'applicazione di una rotazione bit a bit. Questo meccanismo mira a impedire agli attaccanti di dirottare il flusso di controllo sovrascrivendo i puntatori di funzione.
+
+### **Bypass di Pointer Guard con un leak**
+
+1. **Comprensione delle Operazioni di Pointer Guard:** La mescolatura dei puntatori avviene utilizzando la macro `PTR_MANGLE` che esegue l'XOR del puntatore con un segreto a 64 bit e poi esegue una rotazione a sinistra di 0x11 bit. L'operazione inversa per recuperare il puntatore originale è gestita da `PTR_DEMANGLE`.
+2. **Strategia di Attacco:** L'attacco si basa su un approccio di testo noto, dove l'attaccante deve conoscere sia la versione originale che quella mescolata di un puntatore per dedurre il segreto usato per la mescolatura.
+3. **Sfruttare i Testi Noto:**
+* **Identificare i Puntatori di Funzione Fissi:** Esaminando il codice sorgente di glibc o le tabelle dei puntatori di funzione inizializzati (come `__libc_pthread_functions`), un attaccante può trovare puntatori di funzione prevedibili.
+* **Calcolare il Segreto:** Utilizzando un puntatore di funzione noto come `__pthread_attr_destroy` e la sua versione mescolata dalla tabella dei puntatori di funzione, il segreto può essere calcolato ruotando all'indietro (rotazione a destra) il puntatore mescolato e quindi facendo XOR con l'indirizzo della funzione.
+4. **Testi Alternativi:** L'attaccante può anche sperimentare la mescolatura dei puntatori con valori noti come 0 o -1 per vedere se questi producono pattern identificabili in memoria, rivelando potenzialmente il segreto quando tali pattern vengono trovati negli snapshot di memoria.
+5. **Applicazione Pratica:** Dopo aver calcolato il segreto, un attaccante può manipolare i puntatori in modo controllato, bypassando essenzialmente la protezione Pointer Guard in un'applicazione multithread con la conoscenza dell'indirizzo di base di libc e la capacità di leggere posizioni di memoria arbitrarie.
+
+## Riferimenti
+
+* [https://maxwelldulin.com/BlogPost?post=5445977088](https://maxwelldulin.com/BlogPost?post=5445977088)
+* [https://blog.infosectcbr.com.au/2020/04/bypassing-pointer-guard-in-linuxs-glibc.html?m=1](https://blog.infosectcbr.com.au/2020/04/bypassing-pointer-guard-in-linuxs-glibc.html?m=1)
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md
index 75112021f..3c0d83104 100644
--- a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md
+++ b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md
@@ -6,11 +6,11 @@
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)
+* 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.
+* **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.
@@ -18,7 +18,7 @@ Altri modi per supportare HackTricks:
Un **pacchetto di installazione macOS** (noto anche come file `.pkg`) è un formato di file utilizzato da macOS per **distribuire software**. Questi file sono come una **scatola che contiene tutto ciò di cui un software** ha bisogno per installarsi ed eseguirsi correttamente.
-Il file del pacchetto stesso è un archivio che contiene una **gerarchia di file e directory che verranno installati sul computer di destinazione**. Può anche includere **script** per eseguire operazioni prima e dopo l'installazione, come la configurazione dei file di configurazione o la pulizia delle vecchie versioni del software.
+Il file del pacchetto stesso è un archivio che contiene una **gerarchia di file e directory che verranno installati sul computer di destinazione**. Può anche includere **script** per eseguire attività prima e dopo l'installazione, come configurare file di configurazione o pulire vecchie versioni del software.
### Gerarchia
@@ -27,8 +27,8 @@ Il file del pacchetto stesso è un archivio che contiene una **gerarchia di file
* **Distribuzione (xml)**: Personalizzazioni (titolo, testo di benvenuto...) e controlli di script/installazione
* **PackageInfo (xml)**: Informazioni, requisiti di installazione, posizione di installazione, percorsi agli script da eseguire
* **Elenco dei materiali (bom)**: Elenco dei file da installare, aggiornare o rimuovere con permessi di file
-* **Payload (archivio CPIO compresso gzip)**: File da installare nella `posizione di installazione` da PackageInfo
-* **Script (archivio CPIO compresso gzip)**: Script di installazione pre e post e altre risorse estratte in una directory temporanea per l'esecuzione.
+* **Payload (archivio CPIO compresso gzip)**: File da installare nella `posizione-di-installazione` da PackageInfo
+* **Script (archivio CPIO compresso gzip)**: Script di installazione precedenti e successivi e altre risorse estratte in una directory temporanea per l'esecuzione.
### Decomprimere
```bash
@@ -44,33 +44,37 @@ xar -xf "/path/to/package.pkg"
cat Scripts | gzip -dc | cpio -i
cpio -i < Scripts
```
-Per visualizzare i contenuti del programma di installazione senza decomprimerlo manualmente, è possibile utilizzare il tool gratuito [**Suspicious Package**](https://mothersruin.com/software/SuspiciousPackage/).
+Per visualizzare i contenuti dell'installer senza decomprimerlo manualmente, è possibile utilizzare il tool gratuito [**Suspicious Package**](https://mothersruin.com/software/SuspiciousPackage/).
-## Informazioni di base sui file DMG
+## Informazioni di Base sui DMG
-I file DMG, o Apple Disk Images, sono un formato di file utilizzato da macOS di Apple per le immagini disco. Un file DMG è essenzialmente un **immagine disco montabile** (contiene il proprio filesystem) che contiene dati di blocco grezzi tipicamente compressi e talvolta criptati. Quando si apre un file DMG, macOS lo **monta come se fosse un disco fisico**, consentendo di accedere ai suoi contenuti.
+I file DMG, o Apple Disk Images, sono un formato di file utilizzato da macOS di Apple per le immagini disco. Un file DMG è essenzialmente un **immagine disco montabile** (contiene il proprio filesystem) che contiene dati di blocco grezzi tipicamente compressi e talvolta criptati. Quando apri un file DMG, macOS lo **monta come se fosse un disco fisico**, consentendoti di accedere ai suoi contenuti.
+
+{% hint style="danger" %}
+Nota che gli installer **`.dmg`** supportano **così tanti formati** che in passato alcuni di essi contenenti vulnerabilità sono stati abusati per ottenere **esecuzione di codice kernel**.
+{% endhint %}
### Gerarchia
-
+
-La gerarchia di un file DMG può essere diversa in base ai contenuti. Tuttavia, per i DMG delle applicazioni, di solito segue questa struttura:
+La gerarchia di un file DMG può essere diversa in base al contenuto. Tuttavia, per i DMG delle applicazioni, di solito segue questa struttura:
-* Livello superiore: Questo è la radice dell'immagine disco. Contiene spesso l'applicazione e eventualmente un collegamento alla cartella Applicazioni.
-* Applicazione (.app): Questa è l'applicazione effettiva. In macOS, un'applicazione è tipicamente un pacchetto che contiene molti file e cartelle individuali che compongono l'applicazione.
-* Collegamento alle Applicazioni: Questo è un collegamento rapido alla cartella Applicazioni in macOS. Lo scopo di questo è rendere facile l'installazione dell'applicazione. È possibile trascinare il file .app su questo collegamento per installare l'app.
+- Livello Superiore: Questo è la radice dell'immagine disco. Contiene spesso l'applicazione e eventualmente un collegamento alla cartella Applicazioni.
+- Applicazione (.app): Questa è l'applicazione effettiva. In macOS, un'applicazione è tipicamente un pacchetto che contiene molti file e cartelle individuali che compongono l'applicazione.
+- Collegamento Applicazioni: Questo è un collegamento alla cartella Applicazioni in macOS. Lo scopo di questo è rendere facile l'installazione dell'applicazione. Puoi trascinare il file .app su questo collegamento per installare l'app.
## Privesc tramite abuso di pkg
### Esecuzione da directory pubbliche
-Se uno script di pre o post installazione esegue ad esempio da **`/var/tmp/Installerutil`**, e un attaccante potrebbe controllare tale script per ottenere privilegi elevati ogni volta che viene eseguito. Oppure un altro esempio simile:
+Se uno script di installazione precedente o successivo esegue ad esempio da **`/var/tmp/Installerutil`**, e un attaccante potrebbe controllare tale script per ottenere privilegi ogni volta che viene eseguito. Oppure un altro esempio simile:
-
+
### AuthorizationExecuteWithPrivileges
-Si tratta di una [funzione pubblica](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg) che diversi programmi di installazione e aggiornamento chiameranno per **eseguire qualcosa come root**. Questa funzione accetta il **percorso** del **file** da **eseguire** come parametro, tuttavia, se un attaccante potesse **modificare** questo file, sarebbe in grado di **abusare** della sua esecuzione con privilegi di root per **elevare i privilegi**.
+Si tratta di una [funzione pubblica](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg) che diversi installer e aggiornatori chiameranno per **eseguire qualcosa come root**. Questa funzione accetta il **percorso** del **file** da **eseguire** come parametro, tuttavia, se un attaccante potesse **modificare** questo file, sarà in grado di **abusare** della sua esecuzione con privilegi di root per **escalare i privilegi**.
```bash
# Breakpoint in the function to check wich file is loaded
(lldb) b AuthorizationExecuteWithPrivileges
@@ -82,7 +86,7 @@ Per ulteriori informazioni, controlla questo talk: [https://www.youtube.com/watc
Se un installer scrive in `/tmp/fixedname/bla/bla`, è possibile **creare un mount** su `/tmp/fixedname` senza proprietari in modo da poter **modificare qualsiasi file durante l'installazione** per abusare del processo di installazione.
-Un esempio di ciò è **CVE-2021-26089** che è riuscito a **sovrascrivere uno script periodico** per ottenere l'esecuzione come root. Per ulteriori informazioni, dai un'occhiata al talk: [**OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE)
+Un esempio di ciò è **CVE-2021-26089** che è riuscito a **sovrascrivere uno script periodico** per ottenere l'esecuzione come root. Per ulteriori informazioni, guarda il talk: [**OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE)
## pkg come malware
@@ -92,14 +96,15 @@ Un esempio di ciò è **CVE-2021-26089** che è riuscito a **sovrascrivere uno s
### JS in Distribution xml
-È possibile aggiungere tag **`