Translated ['mobile-pentesting/android-app-pentesting/README.md'] to it

This commit is contained in:
Translator 2024-05-06 12:40:25 +00:00
parent fd6b7fbb24
commit 7de70f6ca6

View file

@ -19,15 +19,15 @@ Altri modi per supportare HackTricks:
Unisciti al server [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) per comunicare con hacker esperti e cacciatori di bug bounty! Unisciti al server [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) per comunicare con hacker esperti e cacciatori di bug bounty!
**Approfondimenti sull'Hacking**\ **Approfondimenti sull'Hacking**\
Coinvolgiti con contenuti che approfondiscono l'emozione e le sfide dell'hacking Interagisci con contenuti che approfondiscono l'emozione e le sfide dell'hacking
**Notizie sull'Hacking in Tempo Reale**\ **Notizie sull'Hacking in Tempo Reale**\
Resta aggiornato con il mondo dell'hacking in rapida evoluzione attraverso notizie e approfondimenti in tempo reale Resta aggiornato con il mondo dell'hacking in rapida evoluzione attraverso notizie e approfondimenti in tempo reale
**Ultime Annunci**\ **Ultime Annunci**\
Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali delle piattaforme Resta informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma
**Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi! **Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi stesso!
## Concetti di Base delle Applicazioni Android ## Concetti di Base delle Applicazioni Android
@ -61,7 +61,16 @@ com.android.insecurebankv2
adb shell pm path com.android.insecurebankv2 adb shell pm path com.android.insecurebankv2
package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
adb pull /data/app/com.android.insecurebankv2- Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
```
* Unisci tutti gli split e gli apk di base con [APKEditor](https://github.com/REAndroid/APKEditor):
```bash
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 1 | xargs -n1 -i adb pull {} splits
java -jar ../APKEditor.jar m -i splits/ -o merged.apk
# after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner
java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
``` ```
## Analisi Statica ## Analisi Statica
@ -70,7 +79,7 @@ Per favore, [**leggi qui per trovare informazioni sui diversi decompiler disponi
### Alla ricerca di informazioni interessanti ### Alla ricerca di informazioni interessanti
Semplicemente dando un'occhiata alle **stringhe** dell'APK puoi cercare **password**, **URL** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), chiavi **API**, **crittografia**, **UUID Bluetooth**, **token** e qualsiasi altra cosa interessante... cerca anche eventuali **backdoor** di esecuzione del codice o backdoor di autenticazione (credenziali admin codificate nell'app). Semplicemente guardando le **stringhe** dell'APK puoi cercare **password**, **URL** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), chiavi **API**, **crittografia**, **UUID Bluetooth**, **token** e qualsiasi altra cosa interessante... cerca anche **backdoor** di esecuzione del codice o backdoor di autenticazione (credenziali admin codificate nell'app).
**Firebase** **Firebase**
@ -78,24 +87,24 @@ Presta particolare attenzione agli **URL di Firebase** e controlla se sono confi
### Comprensione di base dell'applicazione - Manifest.xml, strings.xml ### Comprensione di base dell'applicazione - Manifest.xml, strings.xml
L'**esame dei file \_Manifest.xml**_\*\* e \*\*_**strings.xml**\_\*\* di un'applicazione può rivelare potenziali vulnerabilità di sicurezza\*\*. Questi file possono essere accessibili utilizzando decompiler o rinominando l'estensione del file APK in .zip e quindi decomprimendolo. L'**esame dei file \_Manifest.xml** e **strings.xml** di un'applicazione può rivelare potenziali vulnerabilità di sicurezza. Questi file possono essere accessati utilizzando decompiler o rinominando l'estensione del file APK in .zip e quindi decomprimendolo.
Le **vulnerabilità** identificate dal **Manifest.xml** includono: Le **vulnerabilità** identificate dal **Manifest.xml** includono:
* **Applicazioni debuggabili**: Le applicazioni impostate come debuggabili (`debuggable="true"`) nel file _Manifest.xml_ rappresentano un rischio in quanto consentono connessioni che possono portare a sfruttamenti. Per una maggiore comprensione su come sfruttare le applicazioni debuggabili, consulta un tutorial su come trovare ed esplorare le applicazioni debuggabili su un dispositivo. - **Applicazioni debuggabili**: Le applicazioni impostate come debuggabili (`debuggable="true"`) nel file _Manifest.xml_ rappresentano un rischio in quanto consentono connessioni che possono portare a sfruttamenti. Per una maggiore comprensione su come sfruttare le applicazioni debuggabili, consulta un tutorial su come trovare ed esplorare le applicazioni debuggabili su un dispositivo.
* **Impostazioni di backup**: L'attributo `android:allowBackup="false"` dovrebbe essere esplicitamente impostato per le applicazioni che gestiscono informazioni sensibili per impedire il backup non autorizzato dei dati tramite adb, specialmente quando il debug USB è abilitato. - **Impostazioni di backup**: L'attributo `android:allowBackup="false"` dovrebbe essere esplicitamente impostato per le applicazioni che gestiscono informazioni sensibili per impedire il backup non autorizzato dei dati tramite adb, specialmente quando il debug USB è abilitato.
* **Sicurezza di rete**: Le configurazioni personalizzate di sicurezza di rete (`android:networkSecurityConfig="@xml/network_security_config"`) in _res/xml/_ possono specificare dettagli di sicurezza come i pin dei certificati e le impostazioni del traffico HTTP. Un esempio è consentire il traffico HTTP per domini specifici. - **Sicurezza di rete**: Le configurazioni personalizzate di sicurezza di rete (`android:networkSecurityConfig="@xml/network_security_config"`) in _res/xml/_ possono specificare dettagli di sicurezza come i pin dei certificati e le impostazioni del traffico HTTP. Un esempio è consentire il traffico HTTP per domini specifici.
* **Attività e servizi esportati**: Identificare attività e servizi esportati nel manifesto può evidenziare componenti che potrebbero essere abusati. Un'ulteriore analisi durante i test dinamici può rivelare come sfruttare questi componenti. - **Attività e servizi esportati**: Identificare attività e servizi esportati nel manifesto può evidenziare componenti che potrebbero essere abusati. Un'ulteriore analisi durante i test dinamici può rivelare come sfruttare questi componenti.
* **Provider di contenuti e FileProvider**: I provider di contenuti esposti potrebbero consentire l'accesso o la modifica non autorizzati dei dati. Anche la configurazione dei FileProvider dovrebbe essere scrutinata. - **Provider di contenuti e FileProvider**: I provider di contenuti esposti potrebbero consentire l'accesso o la modifica non autorizzati dei dati. Anche la configurazione dei FileProvider dovrebbe essere scrutinata.
* **Ricevitori di trasmissione e schemi di URL**: Questi componenti potrebbero essere sfruttati per l'exploit, con particolare attenzione a come vengono gestiti gli schemi di URL per le vulnerabilità di input. - **Ricevitori di trasmissione e schemi di URL**: Questi componenti potrebbero essere sfruttati per l'exploit, con particolare attenzione a come vengono gestiti gli schemi di URL per le vulnerabilità di input.
* **Versioni SDK**: Gli attributi `minSdkVersion`, `targetSDKVersion` e `maxSdkVersion` indicano le versioni di Android supportate, evidenziando l'importanza di non supportare versioni obsolete e vulnerabili di Android per motivi di sicurezza. - **Versioni SDK**: Gli attributi `minSdkVersion`, `targetSDKVersion` e `maxSdkVersion` indicano le versioni di Android supportate, evidenziando l'importanza di non supportare versioni obsolete e vulnerabili di Android per motivi di sicurezza.
Dal file **strings.xml**, possono essere scoperte informazioni sensibili come chiavi API, schemi personalizzati e altre note per sviluppatori, sottolineando la necessità di una revisione attenta di queste risorse. Dal file **strings.xml**, possono essere scoperte informazioni sensibili come chiavi API, schemi personalizzati e altre note degli sviluppatori, sottolineando la necessità di una revisione attenta di queste risorse.
### Tapjacking ### Tapjacking
**Tapjacking** è un attacco in cui un'applicazione **malintenzionata** viene avviata e si **posiziona sopra un'applicazione vittima**. Una volta che oscura visivamente l'app vittima, la sua interfaccia utente è progettata in modo tale da ingannare l'utente affinché interagisca con essa, mentre passa l'interazione all'app vittima.\ **Tapjacking** è un attacco in cui un'applicazione **malintenzionata** viene avviata e **si posiziona sopra un'applicazione vittima**. Una volta che oscura visivamente l'applicazione vittima, la sua interfaccia utente è progettata in modo tale da ingannare l'utente affinché interagisca con essa, mentre passa l'interazione all'applicazione vittima.\
Di fatto, **acceca l'utente dal sapere che sta effettivamente eseguendo azioni sull'app vittima**. Di fatto, **acceca l'utente dal sapere che sta effettivamente eseguendo azioni sull'applicazione vittima**.
Trova ulteriori informazioni in: Trova ulteriori informazioni in:
@ -105,7 +114,7 @@ Trova ulteriori informazioni in:
### Task Hijacking ### Task Hijacking
Un'**attività** con il **`launchMode`** impostato su **`singleTask` senza alcun `taskAffinity`** definito è vulnerabile al Task Hijacking. Ciò significa che un'applicazione può essere installata e se avviata prima dell'applicazione reale potrebbe **dirottare il task dell'applicazione reale** (quindi l'utente interagirà con l'applicazione malintenzionata pensando di usare quella reale). Un'**attività** con il **`launchMode`** impostato su **`singleTask` senza alcun `taskAffinity`** definito è vulnerabile al Task Hijacking. Ciò significa che un'**applicazione** può essere installata e se avviata prima dell'applicazione reale potrebbe **dirottare il task dell'applicazione reale** (quindi l'utente interagirà con l'**applicazione malintenzionata pensando di usare quella reale**).
Ulteriori informazioni in: Ulteriori informazioni in:
@ -122,7 +131,7 @@ In Android, i file **archiviati** nella **memoria interna** sono **progettati**
1. **Analisi Statica:** 1. **Analisi Statica:**
* **Assicurarsi** che l'uso di `MODE_WORLD_READABLE` e `MODE_WORLD_WRITABLE` sia **scrutinato attentamente**. Queste modalità **potrebbero esporre** i file a **accessi non intenzionali o non autorizzati**. * **Assicurarsi** che l'uso di `MODE_WORLD_READABLE` e `MODE_WORLD_WRITABLE` sia **scrutinato attentamente**. Queste modalità **potrebbero esporre** i file a **accessi non intenzionali o non autorizzati**.
2. **Analisi Dinamica:** 2. **Analisi Dinamica:**
* **Verificare** le **autorizzazioni** impostate sui file creati dall'app. In particolare, **verificare** se alcuni file sono **impostati come leggibili o scrivibili a livello globale**. Ciò potrebbe rappresentare un rischio significativo per la sicurezza, poiché consentirebbe a **qualsiasi applicazione** installata sul dispositivo, indipendentemente dalla sua origine o intento, di **leggere o modificare** questi file. * **Verificare** le **autorizzazioni** impostate sui file creati dall'app. In particolare, **verificare** se alcuni file sono **impostati come leggibili o scrivibili globalmente**. Ciò potrebbe rappresentare un rischio significativo per la sicurezza, poiché consentirebbe a **qualsiasi applicazione** installata sul dispositivo, indipendentemente dalla sua origine o intento, di **leggere o modificare** questi file.
**Archiviazione esterna** **Archiviazione esterna**
@ -131,11 +140,11 @@ Quando si tratta di file su **memoria esterna**, come le schede SD, dovrebbero e
1. **Accessibilità**: 1. **Accessibilità**:
* I file su memoria esterna sono **leggibili e scrivibili globalmente**. Ciò significa che qualsiasi applicazione o utente può accedere a questi file. * I file su memoria esterna sono **leggibili e scrivibili globalmente**. Ciò significa che qualsiasi applicazione o utente può accedere a questi file.
2. **Preoccupazioni per la sicurezza**: 2. **Preoccupazioni per la sicurezza**:
* Date la facilità di accesso, è consigliabile **non memorizzare informazioni sensibili** su memoria esterna. * Date le facilità di accesso, è consigliabile **non memorizzare informazioni sensibili** sulla memoria esterna.
* La memoria esterna può essere rimossa o accessibile da qualsiasi applicazione, rendendola meno sicura. * La memoria esterna può essere rimossa o accessibile da qualsiasi applicazione, rendendola meno sicura.
3. **Gestione dei dati dalla memoria esterna**: 3. **Gestione dei dati dalla memoria esterna**:
* Effettuare sempre **validazione dell'input** sui dati recuperati dalla memoria esterna. Questo è cruciale perché i dati provengono da una fonte non attendibile. * Effettuare sempre **validazione dell'input** sui dati recuperati dalla memoria esterna. Questo è cruciale perché i dati provengono da una fonte non attendibile.
* Memorizzare eseguibili o file di classe su memoria esterna per il caricamento dinamico è fortemente sconsigliato. * Memorizzare eseguibili o file di classe sulla memoria esterna per il caricamento dinamico è fortemente sconsigliato.
* Se la tua applicazione deve recuperare file eseguibili dalla memoria esterna, assicurati che questi file siano **firmati e verificati crittograficamente** prima di essere caricati dinamicamente. Questo passaggio è vitale per mantenere l'integrità della sicurezza della tua applicazione. * Se la tua applicazione deve recuperare file eseguibili dalla memoria esterna, assicurati che questi file siano **firmati e verificati crittograficamente** prima di essere caricati dinamicamente. Questo passaggio è vitale per mantenere l'integrità della sicurezza della tua applicazione.
La memoria esterna può essere **accessibile** in `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` La memoria esterna può essere **accessibile** in `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
@ -146,8 +155,8 @@ A partire da Android 4.4 (**API 17**), la scheda SD ha una struttura delle direc
**Dati sensibili memorizzati in chiaro** **Dati sensibili memorizzati in chiaro**
* **Preferenze condivise**: Android consente a ogni applicazione di salvare facilmente file XML nel percorso `/data/data/<nomepacchetto>/shared_prefs/` e talvolta è possibile trovare informazioni sensibili in chiaro in quella cartella. * **Preferenze condivise**: Android permette a ogni applicazione di salvare facilmente file XML nel percorso `/data/data/<nomepacchetto>/shared_prefs/` e talvolta è possibile trovare informazioni sensibili in chiaro in quella cartella.
* **Database**: Android consente a ogni applicazione di salvare facilmente database sqlite nel percorso `/data/data/<nomepacchetto>/databases/` e talvolta è possibile trovare informazioni sensibili in chiaro in quella cartella. * **Database**: Android permette a ogni applicazione di salvare facilmente database sqlite nel percorso `/data/data/<nomepacchetto>/databases/` e talvolta è possibile trovare informazioni sensibili in chiaro in quella cartella.
### TLS non sicuro ### TLS non sicuro
@ -158,24 +167,22 @@ Per qualche motivo a volte gli sviluppatori accettano tutti i certificati anche
SSLSocketFactory sf = new cc(trustStore); SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
``` ```
Un buon modo per testare ciò è provare a catturare il traffico utilizzando un proxy come Burp senza autorizzare Burp CA all'interno del dispositivo. Inoltre, è possibile generare con Burp un certificato per un hostname diverso e utilizzarlo. ### Crittografia danneggiata
### Crittografia non sicura
**Processi di gestione delle chiavi scadenti** **Processi di gestione delle chiavi scadenti**
Alcuni sviluppatori salvano dati sensibili nello storage locale e li crittografano con una chiave codificata/prevedibile nel codice. Questo non dovrebbe essere fatto poiché un'operazione di reverse engineering potrebbe consentire agli attaccanti di estrarre le informazioni confidenziali. Alcuni sviluppatori salvano dati sensibili nella memoria locale e li crittografano con una chiave codificata/prevedibile nel codice. Questo non dovrebbe essere fatto poiché un'operazione di reverse engineering potrebbe consentire agli attaccanti di estrarre le informazioni confidenziali.
**Utilizzo di algoritmi insicuri e/o deprecati** **Utilizzo di algoritmi insicuri e/o deprecati**
Gli sviluppatori non dovrebbero utilizzare **algoritmi deprecati** per eseguire **controlli** di autorizzazione, **memorizzare** o **inviare** dati. Alcuni di questi algoritmi sono: RC4, MD4, MD5, SHA1... Se vengono utilizzati **hash** per memorizzare ad esempio le password, dovrebbero essere utilizzati hash **resistenti** all'attacco di forza bruta con salt. Gli sviluppatori non dovrebbero utilizzare **algoritmi deprecati** per eseguire **controlli** di autorizzazione, **memorizzare** o **inviare** dati. Alcuni di questi algoritmi sono: RC4, MD4, MD5, SHA1... Se vengono utilizzati **hash** per memorizzare le password ad esempio, dovrebbero essere utilizzati hash **resistenti** all'attacco di forza bruta con salt.
### Altri controlli ### Altri controlli
* È consigliabile **oscurare l'APK** per rendere più difficile il lavoro di reverse engineering agli attaccanti. * È consigliabile **oscurare l'APK** per rendere più difficile il lavoro di reverse engineering agli attaccanti.
* Se l'app è sensibile (come le app bancarie), dovrebbe effettuare i suoi **propri controlli per verificare se il dispositivo mobile è stato sradicato** e agire di conseguenza. * Se l'app è sensibile (come le app bancarie), dovrebbe effettuare i **propri controlli per verificare se il dispositivo mobile è stato sradicato** e agire di conseguenza.
* Se l'app è sensibile (come le app bancarie), dovrebbe verificare se viene utilizzato un **emulatore**. * Se l'app è sensibile (come le app bancarie), dovrebbe verificare se viene utilizzato un **emulatore**.
* Se l'app è sensibile (come le app bancarie), dovrebbe **verificare la propria integrità prima di eseguirsi** per controllare se è stata modificata. * Se l'app è sensibile (come le app bancarie), dovrebbe **verificare la propria integrità prima di eseguirla** per controllare se è stata modificata.
* Utilizzare [**APKiD**](https://github.com/rednaga/APKiD) per verificare quale compilatore/packer/obfuscator è stato utilizzato per compilare l'APK * Utilizzare [**APKiD**](https://github.com/rednaga/APKiD) per verificare quale compilatore/packer/obfuscator è stato utilizzato per compilare l'APK
### Applicazione React Native ### Applicazione React Native
@ -196,19 +203,19 @@ Leggi la seguente pagina per imparare come accedere facilmente al codice C# dell
### Applicazioni Superpacked ### Applicazioni Superpacked
Secondo questo [**post sul blog**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked è un algoritmo Meta che comprime il contenuto di un'applicazione in un singolo file. Il blog parla della possibilità di creare un'applicazione che decomprime questo tipo di app... e un modo più veloce che coinvolge **eseguire l'applicazione e raccogliere i file decompressi dal filesystem**. Secondo questo [**post sul blog**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked è un algoritmo Meta che comprime il contenuto di un'applicazione in un unico file. Il blog parla della possibilità di creare un'applicazione che decomprime questo tipo di app... e un modo più veloce che coinvolge **eseguire l'applicazione e raccogliere i file decompressi dal filesystem**.
### Analisi statica automatizzata del codice ### Analisi statica automatizzata del codice
Lo strumento [**mariana-trench**](https://github.com/facebook/mariana-trench) è in grado di individuare **vulnerabilità** esaminando il **codice** dell'applicazione. Questo strumento contiene una serie di **fonti conosciute** (che indicano allo strumento i **luoghi** in cui l'**input** è **controllato dall'utente**), **sinks** (che indicano allo strumento **luoghi pericolosi** in cui un input malintenzionato potrebbe causare danni) e **regole**. Queste regole indicano la **combinazione** di **fonti-sinks** che indica una vulnerabilità. Lo strumento [**mariana-trench**](https://github.com/facebook/mariana-trench) è in grado di individuare **vulnerabilità** esaminando il **codice** dell'applicazione. Questo strumento contiene una serie di **fonti conosciute** (che indicano allo strumento i **luoghi** in cui l'**input** è **controllato dall'utente**), **sorgenti** (che indicano allo strumento i **luoghi pericolosi** in cui un input utente malintenzionato potrebbe causare danni) e **regole**. Queste regole indicano la **combinazione** di **sorgenti-sorgenti** che indica una vulnerabilità.
Con questa conoscenza, **mariana-trench esaminerà il codice e individuerà possibili vulnerabilità al suo interno**. Con questa conoscenza, **mariana-trench esaminerà il codice e individuerà possibili vulnerabilità al suo interno**.
### Informazioni riservate divulgate ### Segreti rivelati
Un'applicazione potrebbe contenere informazioni riservate (chiavi API, password, URL nascosti, sottodomini...) al suo interno che potresti essere in grado di scoprire. Potresti utilizzare uno strumento come [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) Un'applicazione potrebbe contenere segreti (chiavi API, password, URL nascosti, sottodomini...) al suo interno che potresti essere in grado di scoprire. Potresti utilizzare uno strumento come [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks)
### Eludere l'autenticazione biometrica ### Bypass dell'autenticazione biometrica
{% content-ref url="bypass-biometric-authentication-android.md" %} {% content-ref url="bypass-biometric-authentication-android.md" %}
[bypass-biometric-authentication-android.md](bypass-biometric-authentication-android.md) [bypass-biometric-authentication-android.md](bypass-biometric-authentication-android.md)
@ -237,10 +244,10 @@ Unisciti al server [**HackenProof Discord**](https://discord.com/invite/N3FrSbmw
Coinvolgiti con contenuti che esplorano l'emozione e le sfide dell'hacking Coinvolgiti con contenuti che esplorano l'emozione e le sfide dell'hacking
**Notizie sull'hacking in tempo reale**\ **Notizie sull'hacking in tempo reale**\
Resta aggiornato con il mondo dell'hacking in rapida evoluzione attraverso notizie e approfondimenti in tempo reale Resta aggiornato con il mondo dell'hacking ad alta velocità attraverso notizie e approfondimenti in tempo reale
**Ultime notizie**\ **Ultime notizie**\
Resta informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma
**Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi! **Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi!
@ -248,7 +255,7 @@ Resta informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali de
## Analisi dinamica ## Analisi dinamica
> Prima di tutto, è necessario un ambiente in cui è possibile installare l'applicazione e tutto l'ambiente (certificato Burp CA, Drozer e Frida principalmente). Pertanto, è estremamente consigliato un dispositivo con permessi di root (emulato o meno). > Prima di tutto, è necessario un ambiente in cui è possibile installare l'applicazione e tutto l'ambiente (certificato Burp CA, Drozer e Frida principalmente). Pertanto, è estremamente consigliato un dispositivo radicato (emulato o meno).
### Analisi dinamica online ### Analisi dinamica online
@ -264,7 +271,7 @@ Grazie alla connessione ADB puoi utilizzare **Drozer** e **Frida** all'interno d
#### Utilizzo di un emulatore #### Utilizzo di un emulatore
* [**Android Studio**](https://developer.android.com/studio) (Puoi creare dispositivi **x86** e **arm**, e secondo [**questo** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)le **ultime versioni x86** supportano le librerie ARM senza necessità di un lento emulatore ARM). * [**Android Studio**](https://developer.android.com/studio) (Puoi creare dispositivi **x86** e **arm**, e secondo [**questo** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**ultime versioni x86** supportano le librerie ARM senza necessità di un lento emulatore ARM).
* Impara a configurarlo in questa pagina: * Impara a configurarlo in questa pagina:
{% content-ref url="avd-android-virtual-device.md" %} {% content-ref url="avd-android-virtual-device.md" %}
@ -278,7 +285,7 @@ Grazie alla connessione ADB puoi utilizzare **Drozer** e **Frida** all'interno d
Quando crei un nuovo emulatore su qualsiasi piattaforma, ricorda che maggiore è la dimensione dello schermo, più lento sarà l'emulatore. Quindi seleziona schermi piccoli se possibile. Quando crei un nuovo emulatore su qualsiasi piattaforma, ricorda che maggiore è la dimensione dello schermo, più lento sarà l'emulatore. Quindi seleziona schermi piccoli se possibile.
{% endhint %} {% endhint %}
Per **installare i servizi Google** (come AppStore) in Genymotion è necessario fare clic sul pulsante evidenziato in rosso nell'immagine seguente: Per **installare i servizi Google** (come AppStore) in Genymotion devi fare clic sul pulsante evidenziato di rosso nell'immagine seguente:
![](<../../.gitbook/assets/image (277).png>) ![](<../../.gitbook/assets/image (277).png>)
@ -286,7 +293,7 @@ Inoltre, nota che nella **configurazione della VM Android in Genymotion** puoi s
#### Utilizzare un dispositivo fisico #### Utilizzare un dispositivo fisico
È necessario attivare le opzioni di **debugging** e sarebbe utile se fosse **rootato**: È necessario attivare le opzioni di **debugging** e sarebbe utile se potessi **eseguire il root**:
1. **Impostazioni**. 1. **Impostazioni**.
2. (Da Android 8.0) Seleziona **Sistema**. 2. (Da Android 8.0) Seleziona **Sistema**.
@ -295,8 +302,8 @@ Inoltre, nota che nella **configurazione della VM Android in Genymotion** puoi s
5. Torna indietro e troverai le **Opzioni sviluppatore**. 5. Torna indietro e troverai le **Opzioni sviluppatore**.
> Una volta installata l'applicazione, la prima cosa da fare è provarla e investigare cosa fa, come funziona e prendere confidenza con essa.\ > Una volta installata l'applicazione, la prima cosa da fare è provarla e investigare cosa fa, come funziona e prendere confidenza con essa.\
> Suggerisco di **effettuare questa analisi dinamica iniziale utilizzando l'analisi dinamica di MobSF + pidcat**, in modo da poter **imparare come funziona l'applicazione** mentre MobSF **cattura** molti **dati interessanti** che potrai esaminare in seguito. > Suggerisco di **effettuare questa analisi dinamica iniziale utilizzando l'analisi dinamica di MobSF + pidcat**, in modo da poter **imparare come funziona l'applicazione** mentre MobSF **cattura** molti **dati interessanti** che potrai rivedere in seguito.
### Perdita non intenzionale di dati ### Perdita involontaria di dati
**Registrazione** **Registrazione**
@ -307,40 +314,40 @@ Nota che a partire da **versioni più recenti di Android 4.0**, **le applicazion
In ogni caso, è comunque consigliabile **non registrare informazioni sensibili**. In ogni caso, è comunque consigliabile **non registrare informazioni sensibili**.
{% endhint %} {% endhint %}
**Cache del Buffer di Copia/Incolla** **Cache del buffer di copia/incolla**
Il framework **basato sulla clipboard** di Android consente la funzionalità di copia-incolla nelle app, ma rappresenta un rischio poiché **altre applicazioni** possono **accedere** alla clipboard, esponendo potenzialmente dati sensibili. È cruciale **disabilitare le funzioni di copia/incolla** per sezioni sensibili di un'applicazione, come i dettagli della carta di credito, per prevenire perdite di dati. Il framework **basato sulla clipboard** di Android abilita la funzionalità di copia/incolla nelle app, ma rappresenta un rischio poiché **altre applicazioni** possono **accedere** alla clipboard, esponendo potenzialmente dati sensibili. È cruciale **disabilitare le funzioni di copia/incolla** per sezioni sensibili di un'applicazione, come i dettagli della carta di credito, per prevenire perdite di dati.
**Log dei Crash** **Log dei crash**
Se un'applicazione **va in crash** e **salva i log**, questi log possono aiutare gli attaccanti, specialmente quando l'applicazione non può essere decompilata. Per mitigare questo rischio, evitare di registrare i crash e, se i log devono essere trasmessi tramite la rete, assicurarsi che siano inviati tramite un canale SSL per la sicurezza. Se un'applicazione **va in crash** e **salva i log**, questi log possono aiutare gli attaccanti, specialmente quando l'applicazione non può essere decompilata. Per mitigare questo rischio, evitare di registrare i crash e, se i log devono essere trasmessi tramite la rete, assicurarsi che siano inviati tramite un canale SSL per la sicurezza.
Come pentester, **prova a dare un'occhiata a questi log**. Come pentester, **prova a dare un'occhiata a questi log**.
**Dati di Analisi Inviati a Terze Parti** **Dati di analisi inviati a terze parti**
Le applicazioni spesso integrano servizi come Google Adsense, che possono involontariamente **leakare dati sensibili** a causa di un'implementazione impropria da parte degli sviluppatori. Per identificare potenziali perdite di dati, è consigliabile **intercettare il traffico dell'applicazione** e controllare se vengono inviate informazioni sensibili a servizi di terze parti. Le applicazioni spesso integrano servizi come Google Adsense, che possono involontariamente **leakare dati sensibili** a causa di un'implementazione impropria da parte degli sviluppatori. Per identificare potenziali perdite di dati, è consigliabile **intercettare il traffico dell'applicazione** e controllare se vengono inviate informazioni sensibili a servizi di terze parti.
### Database SQLite ### Database SQLite
La maggior parte delle applicazioni utilizzerà **database SQLite interni** per salvare informazioni. Durante il pentest dai un'**occhiata** ai **database** creati, ai nomi delle **tabelle** e delle **colonne** e a tutti i **dati** salvati perché potresti trovare **informazioni sensibili** (che sarebbero una vulnerabilità).\ La maggior parte delle applicazioni utilizzerà **database SQLite interni** per salvare informazioni. Durante il pentest dai un'**occhiata** ai **database** creati, ai nomi delle **tabelle** e delle **colonne** e a tutti i **dati** salvati perché potresti trovare **informazioni sensibili** (che costituirebbero una vulnerabilità).\
I database dovrebbero trovarsi in `/data/data/nome.pacchetto/databases` come `/data/data/com.mwr.example.sieve/databases` I database dovrebbero trovarsi in `/data/data/nome.pacchetto/databases` come `/data/data/com.mwr.example.sieve/databases`
Se il database sta salvando informazioni confidenziali ed è **criptato** ma puoi **trovare** la **password** all'interno dell'applicazione, è comunque una **vulnerabilità**. Se il database sta salvando informazioni confidenziali ed è **criptato** ma puoi **trovare** la **password** all'interno dell'applicazione, è comunque una **vulnerabilità**.
Enumera le tabelle usando `.tables` e enumera le colonne delle tabelle facendo `.schema <nome_tabella>` Elenca le tabelle utilizzando `.tables` e elenca le colonne delle tabelle eseguendo `.schema <nome_tabella>`
### Drozer (Attività di Sfruttamento, Provider di Contenuti e Servizi) ### Drozer (Attività di exploit, Provider di contenuti e Servizi)
Da [Documenti di Drozer](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** ti permette di **assumere il ruolo di un'app Android** e interagire con altre app. Può fare **qualsiasi cosa che un'applicazione installata può fare**, come ad esempio utilizzare il meccanismo di Comunicazione tra Processi di Android (IPC) e interagire con il sistema operativo sottostante.\ Da [Documenti di Drozer](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** ti permette di **assumere il ruolo di un'app Android** e interagire con altre app. Può fare **qualsiasi cosa che un'applicazione installata può fare**, come utilizzare il meccanismo di Comunicazione tra Processi di Android (IPC) e interagire con il sistema operativo sottostante.\
Drozer è uno strumento utile per **sfruttare attività esportate, servizi esportati e Provider di Contenuti** come imparerai nelle sezioni seguenti. Drozer è uno strumento utile per **sfruttare attività esportate, servizi esportati e Provider di contenuti** come imparerai nelle sezioni seguenti.
### Sfruttare le Attività esportate ### Sfruttare attività esportate
[**Leggi questo se vuoi rinfrescare cosa sia un'Attività Android.**](android-applications-basics.md#launcher-activity-and-other-activities)\ [**Leggi questo se vuoi rinfrescare cosa sia un'Attività Android.**](android-applications-basics.md#launcher-activity-and-other-activities)\
Ricorda anche che il codice di un'attività inizia nel metodo **`onCreate`**. Ricorda anche che il codice di un'attività inizia nel metodo **`onCreate`**.
**Bypass dell'autorizzazione** **Bypass di autorizzazione**
Quando un'Attività è esportata, puoi invocare la sua schermata da un'app esterna. Pertanto, se un'attività con **informazioni sensibili** è **esportata**, potresti **bypassare** i **meccanismi di autenticazione** per accedervi. Quando un'Attività è esportata, puoi invocare la sua schermata da un'app esterna. Pertanto, se un'attività con **informazioni sensibili** è **esportata**, potresti **bypassare** i **meccanismi di autenticazione** per accedervi.
@ -361,16 +368,16 @@ Nota che un bypass di autorizzazione non è sempre una vulnerabilità, dipender
**Fuga di informazioni sensibili** **Fuga di informazioni sensibili**
**Le attività possono anche restituire risultati**. Se riesci a trovare un'attività esportata e non protetta che chiama il metodo **`setResult`** e **restituisce informazioni sensibili**, si verifica una fuga di informazioni sensibili. **Le attività possono anche restituire risultati**. Se riesci a trovare un'attività esportata e non protetta che chiama il metodo **`setResult`** e **restituisce informazioni sensibili**, si tratta di una fuga di informazioni sensibili.
#### Tapjacking #### Tapjacking
Se il tapjacking non è impedito, potresti abusare dell'attività esportata per fare sì che l'**utente compia azioni inaspettate**. Per ulteriori informazioni su [**cosa è il Tapjacking segui il link**](./#tapjacking). Se il tapjacking non è impedito, potresti abusare dell'attività esportata per fare sì che l'**utente compia azioni inaspettate**. Per ulteriori informazioni su [**cos'è il Tapjacking segui il link**](./#tapjacking).
### Sfruttare i Content Providers - Accesso e manipolazione di informazioni sensibili ### Sfruttare i Content Providers - Accesso e manipolazione di informazioni sensibili
[**Leggi questo se vuoi rinfrescare cosa sia un Content Provider.**](android-applications-basics.md#content-provider)\ [**Leggi questo se vuoi rinfrescare cosa sia un Content Provider.**](android-applications-basics.md#content-provider)\
I content provider sono fondamentalmente utilizzati per **condividere dati**. Se un'app dispone di content provider disponibili, potresti essere in grado di **estrarre dati sensibili** da essi. È anche interessante testare possibili **iniezioni SQL** e **traversali di percorsi** poiché potrebbero essere vulnerabili. I content provider sono fondamentalmente utilizzati per **condividere dati**. Se un'app dispone di content provider disponibili, potresti essere in grado di **estrarre dati sensibili** da essi. È anche interessante testare possibili **iniezioni SQL** e **traversali di percorsi** in quanto potrebbero essere vulnerabili.
[**Scopri come sfruttare i Content Providers con Drozer.**](drozer-tutorial/#content-providers) [**Scopri come sfruttare i Content Providers con Drozer.**](drozer-tutorial/#content-providers)
@ -387,13 +394,13 @@ Un servizio è fondamentalmente qualcosa che **può ricevere dati**, **elaborarl
[**Leggi questo se vuoi rinfrescare cosa sia un Ricevitore di Broadcast.**](android-applications-basics.md#broadcast-receivers)\ [**Leggi questo se vuoi rinfrescare cosa sia un Ricevitore di Broadcast.**](android-applications-basics.md#broadcast-receivers)\
Ricorda che le azioni di un Ricevitore di Broadcast iniziano nel metodo `onReceive`. Ricorda che le azioni di un Ricevitore di Broadcast iniziano nel metodo `onReceive`.
Un ricevitore di broadcast aspetterà un tipo di messaggio. A seconda di come il ricevitore gestisce il messaggio, potrebbe essere vulnerabile.\ Un ricevitore di broadcast sarà in attesa di un tipo di messaggio. A seconda di come il ricevitore gestisce il messaggio, potrebbe essere vulnerabile.\
[**Scopri come sfruttare i Ricevitori di Broadcast con Drozer.**](./#exploiting-broadcast-receivers) [**Scopri come sfruttare i Ricevitori di Broadcast con Drozer.**](./#exploiting-broadcast-receivers)
### **Sfruttare gli Schema / Deep links** ### **Sfruttare gli Schemi / Deep links**
Puoi cercare manualmente deep links, utilizzando strumenti come MobSF o script come [questo](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ Puoi cercare manualmente deep links, utilizzando strumenti come MobSF o script come [questo](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\
Puoi **aprire** uno **schema** dichiarato usando **adb** o un **browser**: Puoi **aprire** uno **schema** dichiarato utilizzando **adb** o un **browser**:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -424,8 +431,8 @@ Ogni volta che trovi un deep link, controlla che **non stia ricevendo dati sensi
**Parametri nel percorso** **Parametri nel percorso**
Devi controllare anche se un deep link sta utilizzando un parametro all'interno del percorso dell'URL come: `https://api.example.com/v1/users/{username}`, in tal caso puoi forzare un accesso al percorso attraverso qualcosa del genere: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\ Devi controllare anche se un deep link sta utilizzando un parametro all'interno del percorso dell'URL come: `https://api.example.com/v1/users/{username}`, in tal caso puoi forzare una traversata del percorso accedendo a qualcosa del genere: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
Nota che se trovi gli endpoint corretti all'interno dell'applicazione potresti essere in grado di causare un **Reindirizzamento Aperto** (se parte del percorso viene utilizzata come nome di dominio), **acquisizione dell'account** (se puoi modificare i dettagli degli utenti senza token CSRF e il punto finale vulnerabile ha utilizzato il metodo corretto) e qualsiasi altra vulnerabilità. Maggiori [informazioni qui](http://dphoeniixx.com/2020/12/13-2/). Nota che se trovi gli endpoint corretti all'interno dell'applicazione potresti essere in grado di causare un **Reindirizzamento Aperto** (se parte del percorso viene utilizzata come nome di dominio), **acquisizione dell'account** (se puoi modificare i dettagli degli utenti senza token CSRF e l'endpoint vulnerabile ha utilizzato il metodo corretto) e qualsiasi altra vulnerabilità. Maggiori [informazioni qui](http://dphoeniixx.com/2020/12/13-2/).
**Altri esempi** **Altri esempi**
@ -439,23 +446,23 @@ Un [interessante rapporto di bug bounty](https://hackerone.com/reports/855618) s
#### Verifica del Certificato #### Verifica del Certificato
Ci concentreremo sulla **verifica del certificato**. È fondamentale verificare l'integrità del certificato del server per migliorare la sicurezza. Questo è cruciale perché configurazioni TLS non sicure e la trasmissione di dati sensibili su canali non crittografati possono comportare rischi significativi. Per dettagliati passaggi sulla verifica dei certificati del server e sulla gestione delle vulnerabilità, [**questa risorsa**](https://manifestsecurity.com/android-application-security-part-10/) fornisce una guida completa. Ci concentreremo sulla **verifica del certificato**. È fondamentale verificare l'integrità del certificato del server per migliorare la sicurezza. Questo è cruciale perché configurazioni TLS non sicure e la trasmissione di dati sensibili su canali non crittografati possono comportare rischi significativi. Per passaggi dettagliati sulla verifica dei certificati del server e sulla gestione delle vulnerabilità, [**questa risorsa**](https://manifestsecurity.com/android-application-security-part-10/) fornisce una guida completa.
#### SSL Pinning #### SSL Pinning
Lo SSL Pinning è una misura di sicurezza in cui l'applicazione verifica il certificato del server rispetto a una copia conosciuta memorizzata all'interno dell'applicazione stessa. Questo metodo è essenziale per prevenire attacchi MITM. Implementare lo SSL Pinning è fortemente consigliato per le applicazioni che gestiscono informazioni sensibili. Lo SSL Pinning è una misura di sicurezza in cui l'applicazione verifica il certificato del server rispetto a una copia conosciuta memorizzata all'interno dell'applicazione stessa. Questo metodo è essenziale per prevenire attacchi MITM. L'implementazione dello SSL Pinning è fortemente raccomandata per le applicazioni che gestiscono informazioni sensibili.
#### Ispezione del Traffico #### Ispezione del Traffico
Per ispezionare il traffico HTTP, è necessario **installare il certificato dello strumento proxy** (ad esempio, Burp). Senza installare questo certificato, il traffico crittografato potrebbe non essere visibile attraverso il proxy. Per una guida sull'installazione di un certificato CA personalizzato, [**clicca qui**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine). Per ispezionare il traffico HTTP, è necessario **installare il certificato dello strumento proxy** (ad esempio, Burp). Senza installare questo certificato, il traffico crittografato potrebbe non essere visibile attraverso il proxy. Per una guida sull'installazione di un certificato CA personalizzato, [**clicca qui**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Le applicazioni che mirano a **API Livello 24 e successivi** richiedono modifiche alla Configurazione della Sicurezza di Rete per accettare il certificato CA del proxy. Questo passaggio è fondamentale per ispezionare il traffico crittografato. Per istruzioni sulla modifica della Configurazione della Sicurezza di Rete, [**consulta questo tutorial**](make-apk-accept-ca-certificate.md). Le applicazioni che mirano a **API Livello 24 e superiore** richiedono modifiche alla Configurazione della Sicurezza di Rete per accettare il certificato CA del proxy. Questo passaggio è fondamentale per ispezionare il traffico crittografato. Per istruzioni sulla modifica della Configurazione della Sicurezza di Rete, [**consulta questo tutorial**](make-apk-accept-ca-certificate.md).
#### Bypass dello SSL Pinning #### Bypass dello SSL Pinning
Quando lo SSL Pinning è implementato, diventa necessario bypassarlo per ispezionare il traffico HTTPS. Sono disponibili vari metodi a tale scopo: Quando lo SSL Pinning è implementato, diventa necessario bypassarlo per ispezionare il traffico HTTPS. Sono disponibili vari metodi a tale scopo:
* Modificare automaticamente l'**apk** per **bypassare** lo SSLPinning con [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Il principale vantaggio di questa opzione è che non sarà necessario il root per bypassare lo SSL Pinning, ma sarà necessario eliminare l'applicazione e reinstallare la nuova, e ciò non funzionerà sempre. * Modificare automaticamente l'**apk** per **bypassare** lo SSL Pinning con [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Il principale vantaggio di questa opzione è che non sarà necessario il root per bypassare lo SSL Pinning, ma sarà necessario eliminare l'applicazione e reinstallare la nuova, e ciò non funzionerà sempre.
* È possibile utilizzare **Frida** (discusso di seguito) per bypassare questa protezione. Qui trovi una guida su come utilizzare Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/) * È possibile utilizzare **Frida** (discusso di seguito) per bypassare questa protezione. Qui trovi una guida su come utilizzare Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
* Puoi anche provare a **bypassare automaticamente lo SSL Pinning** utilizzando [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` * Puoi anche provare a **bypassare automaticamente lo SSL Pinning** utilizzando [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
* Puoi anche provare a **bypassare automaticamente lo SSL Pinning** utilizzando **l'analisi dinamica di MobSF** (spiegata di seguito) * Puoi anche provare a **bypassare automaticamente lo SSL Pinning** utilizzando **l'analisi dinamica di MobSF** (spiegata di seguito)
@ -467,7 +474,7 @@ Quando lo SSL Pinning è implementato, diventa necessario bypassarlo per ispezio
### Frida ### Frida
[Frida](https://www.frida.re) è un toolkit di strumenti di strumentazione dinamica per sviluppatori, reverse-engineers e ricercatori di sicurezza.\ [Frida](https://www.frida.re) è un toolkit di strumenti di strumentazione dinamica per sviluppatori, reverse engineer e ricercatori di sicurezza.\
**Puoi accedere all'applicazione in esecuzione e agganciare i metodi in tempo reale per cambiare il comportamento, i valori, estrarre valori, eseguire codice diverso...**\ **Puoi accedere all'applicazione in esecuzione e agganciare i metodi in tempo reale per cambiare il comportamento, i valori, estrarre valori, eseguire codice diverso...**\
Se vuoi fare pentesting delle applicazioni Android devi sapere come usare Frida. Se vuoi fare pentesting delle applicazioni Android devi sapere come usare Frida.
@ -520,11 +527,11 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
Quando si mette un'applicazione in background, Android memorizza uno **snapshot dell'applicazione** in modo che quando viene ripristinata in primo piano inizi a caricare l'immagine prima dell'app in modo che sembri che l'app sia stata caricata più velocemente. Quando si mette un'applicazione in background, Android memorizza uno **snapshot dell'applicazione** in modo che quando viene ripristinata in primo piano inizi a caricare l'immagine prima dell'app in modo che sembri che l'app sia stata caricata più velocemente.
Tuttavia, se questo snapshot contiene **informazioni sensibili**, qualcuno con accesso allo snapshot potrebbe **rubare tali informazioni** (nota che è necessario il root per accedervi). Tuttavia, se questo snapshot contiene **informazioni sensibili**, qualcuno con accesso allo snapshot potrebbe **rubare tali informazioni** (nota che è necessario avere i permessi di root per accedervi).
Gli snapshot di solito sono memorizzati in: **`/data/system_ce/0/snapshots`** Gli snapshot di solito sono memorizzati in: **`/data/system_ce/0/snapshots`**
Android fornisce un modo per **prevenire la cattura dello screenshot impostando il FLAG\_SECURE** come parametro di layout. Utilizzando questa flag, i contenuti della finestra vengono trattati come sicuri, impedendo che compaiano negli screenshot o che siano visualizzati su display non sicuri. Android fornisce un modo per **prevenire la cattura dello screenshot impostando il FLAG\_SECURE** come parametro di layout. Utilizzando questa flag, i contenuti della finestra sono trattati come sicuri, impedendo che compaiano negli screenshot o che siano visualizzati su display non sicuri.
```bash ```bash
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
``` ```
@ -534,7 +541,7 @@ Questo strumento potrebbe aiutarti a gestire diversi strumenti durante l'analisi
### Iniezione di Intent ### Iniezione di Intent
Gli sviluppatori spesso creano componenti proxy come attività, servizi e ricevitori di trasmissioni che gestiscono questi Intent e li passano a metodi come `startActivity(...)` o `sendBroadcast(...)`, il che può essere rischioso. Gli sviluppatori spesso creano componenti proxy come attività, servizi e ricevitori di trasmissione che gestiscono questi Intent e li passano a metodi come `startActivity(...)` o `sendBroadcast(...)`, il che può essere rischioso.
Il pericolo risiede nel permettere agli attaccanti di attivare componenti dell'app non esportate o accedere a provider di contenuti sensibili deviando questi Intent. Un esempio notevole è il componente `WebView` che converte gli URL in oggetti `Intent` tramite `Intent.parseUri(...)` e poi li esegue, potenzialmente portando a iniezioni di Intent dannose. Il pericolo risiede nel permettere agli attaccanti di attivare componenti dell'app non esportate o accedere a provider di contenuti sensibili deviando questi Intent. Un esempio notevole è il componente `WebView` che converte gli URL in oggetti `Intent` tramite `Intent.parseUri(...)` e poi li esegue, potenzialmente portando a iniezioni di Intent dannose.
@ -543,14 +550,14 @@ Il pericolo risiede nel permettere agli attaccanti di attivare componenti dell'a
* **Iniezione di Intent** è simile al problema di reindirizzamento aperto del web. * **Iniezione di Intent** è simile al problema di reindirizzamento aperto del web.
* Gli exploit coinvolgono il passaggio di oggetti `Intent` come extra, che possono essere reindirizzati per eseguire operazioni non sicure. * Gli exploit coinvolgono il passaggio di oggetti `Intent` come extra, che possono essere reindirizzati per eseguire operazioni non sicure.
* Può esporre componenti non esportati e provider di contenuti agli attaccanti. * Può esporre componenti non esportati e provider di contenuti agli attaccanti.
* La conversione di URL in `Intent` da parte di `WebView` può facilitare azioni non intenzionali. * La conversione di URL in `Intent` di `WebView` può facilitare azioni non intenzionali.
### Iniezioni Lato Client Android e altri ### Iniezioni Lato Client Android e altri
Probabilmente conosci questo tipo di vulnerabilità dal Web. Devi prestare particolare attenzione a queste vulnerabilità in un'applicazione Android: Probabilmente conosci questo tipo di vulnerabilità dal Web. Devi prestare particolare attenzione a queste vulnerabilità in un'applicazione Android:
* **SQL Injection:** Quando si gestiscono query dinamiche o Content-Providers, assicurati di utilizzare query parametriche. * **SQL Injection:** Quando si gestiscono query dinamiche o Content-Providers, assicurati di utilizzare query parametriche.
* **Iniezione di JavaScript (XSS):** Verifica che JavaScript e il supporto ai plugin siano disabilitati per qualsiasi WebView (disabilitati per impostazione predefinita). [Maggiori informazioni qui](webview-attacks.md#javascript-enabled). * **Iniezione di JavaScript (XSS):** Verifica che il supporto JavaScript e dei Plugin sia disabilitato per qualsiasi WebView (disabilitato per impostazione predefinita). [Maggiori informazioni qui](webview-attacks.md#javascript-enabled).
* **Inclusione di File Locale:** Le WebViews dovrebbero avere l'accesso al file system disabilitato (abilitato per impostazione predefinita) - `(webview.getSettings().setAllowFileAccess(false);)`. [Maggiori informazioni qui](webview-attacks.md#javascript-enabled). * **Inclusione di File Locale:** Le WebViews dovrebbero avere l'accesso al file system disabilitato (abilitato per impostazione predefinita) - `(webview.getSettings().setAllowFileAccess(false);)`. [Maggiori informazioni qui](webview-attacks.md#javascript-enabled).
* **Cookie Eterne**: In diversi casi, quando l'applicazione Android termina la sessione, il cookie non viene revocato o potrebbe persino essere salvato su disco. * **Cookie Eterne**: In diversi casi, quando l'applicazione Android termina la sessione, il cookie non viene revocato o potrebbe persino essere salvato su disco.
* [**Flag Sicuro** nei cookie](../../pentesting-web/hacking-with-cookies/#cookies-flags) * [**Flag Sicuro** nei cookie](../../pentesting-web/hacking-with-cookies/#cookies-flags)
@ -568,7 +575,7 @@ Interagisci con contenuti che esplorano l'emozione e le sfide dell'hacking
Resta aggiornato sul mondo dell'hacking frenetico attraverso notizie e approfondimenti in tempo reale Resta aggiornato sul mondo dell'hacking frenetico attraverso notizie e approfondimenti in tempo reale
**Ultime Comunicazioni**\ **Ultime Comunicazioni**\
Resta informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma
**Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi! **Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi!
@ -580,13 +587,13 @@ Resta informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali de
![](<../../.gitbook/assets/image (866).png>) ![](<../../.gitbook/assets/image (866).png>)
**Valutazione delle vulnerabilità dell'applicazione** utilizzando un'interfaccia web frontend. È anche possibile eseguire un'analisi dinamica (ma è necessario preparare l'ambiente). **Valutazione delle vulnerabilità dell'applicazione** utilizzando un'interfaccia web front-end. È anche possibile eseguire un'analisi dinamica (ma è necessario preparare l'ambiente).
```bash ```bash
docker pull opensecurity/mobile-security-framework-mobsf docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
``` ```
Si noti che MobSF può analizzare le applicazioni **Android**(apk), **IOS**(ipa) e **Windows**(apx) (_le applicazioni Windows devono essere analizzate da un MobSF installato in un host Windows_).\ Si noti che MobSF può analizzare le applicazioni **Android**(apk), **IOS**(ipa) e **Windows**(apx) (_le applicazioni Windows devono essere analizzate da un MobSF installato in un host Windows).\
Inoltre, se si crea un file **ZIP** con il codice sorgente di un'app **Android** o **IOS** (andare alla cartella principale dell'applicazione, selezionare tutto e creare un file ZIP), sarà in grado di analizzarlo anche. Inoltre, se si crea un file **ZIP** con il codice sorgente di un'applicazione **Android** o **IOS** (andare alla cartella principale dell'applicazione, selezionare tutto e creare un file ZIP), sarà in grado di analizzarlo anche.
MobSF consente anche di **diff/Confrontare** l'analisi e di integrare **VirusTotal** (è necessario impostare la propria chiave API in _MobSF/settings.py_ e abilitarla: `VT_ENABLED = TRUE` `VT_API_KEY = <La tua chiave API>` `VT_UPLOAD = TRUE`). È anche possibile impostare `VT_UPLOAD` su `False`, quindi l'**hash** verrà **caricato** invece del file. MobSF consente anche di **diff/Confrontare** l'analisi e di integrare **VirusTotal** (è necessario impostare la propria chiave API in _MobSF/settings.py_ e abilitarla: `VT_ENABLED = TRUE` `VT_API_KEY = <La tua chiave API>` `VT_UPLOAD = TRUE`). È anche possibile impostare `VT_UPLOAD` su `False`, quindi l'**hash** verrà **caricato** invece del file.
@ -606,25 +613,25 @@ Dalle versioni di Android > 5, avvierà **automaticamente Frida** e imposterà l
Per impostazione predefinita, utilizzerà anche alcuni script di Frida per **bypassare il pinning SSL**, **rilevare il root** e **rilevare il debugger** e per **monitorare API interessanti**.\ Per impostazione predefinita, utilizzerà anche alcuni script di Frida per **bypassare il pinning SSL**, **rilevare il root** e **rilevare il debugger** e per **monitorare API interessanti**.\
MobSF può anche **invocare attività esportate**, acquisire **screenshot** di esse e **salvarli** per il report. MobSF può anche **invocare attività esportate**, acquisire **screenshot** di esse e **salvarli** per il report.
Per **avviare** il test dinamico premere il pulsante verde: "**Avvia strumentazione**". Premere "**Frida Live Logs**" per visualizzare i log generati dagli script di Frida e "**Live API Monitor**" per visualizzare tutte le invocazioni ai metodi hookati, gli argomenti passati e i valori restituiti (questo apparirà dopo aver premuto "Avvia strumentazione").\ Per **avviare** il test dinamico premere il pulsante verde: "**Start Instrumentation**". Premere "**Frida Live Logs**" per visualizzare i log generati dagli script di Frida e "**Live API Monitor**" per visualizzare tutte le invocazioni ai metodi hookati, gli argomenti passati e i valori restituiti (questo apparirà dopo aver premuto "Start Instrumentation").\
MobSF consente anche di caricare i propri **script di Frida** (per inviare i risultati dei tuoi script di Frida a MobSF utilizzare la funzione `send()`). Ha anche **diversi script pre-scritti** che è possibile caricare (è possibile aggiungerne altri in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), basta **selezionarli**, premere "**Carica**" e premere "**Avvia strumentazione**" (sarà possibile vedere i log di quegli script all'interno di "**Frida Live Logs**"). MobSF consente anche di caricare i propri **script di Frida** (per inviare i risultati dei tuoi script di Frida a MobSF utilizzare la funzione `send()`). Ha anche **diversi script pre-scritti** che è possibile caricare (è possibile aggiungerne altri in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), basta **selezionarli**, premere "**Load**" e premere "**Start Instrumentation**" (sarà possibile vedere i log di quegli script all'interno di "**Frida Live Logs**").
![](<../../.gitbook/assets/image (419).png>) ![](<../../.gitbook/assets/image (419).png>)
Inoltre, sono disponibili alcune funzionalità ausiliarie di Frida: Inoltre, sono disponibili alcune funzionalità ausiliarie di Frida:
* **Enumerare Classi Caricate**: Stampa tutte le classi caricate * **Enumerate Loaded Classes**: Stampa tutte le classi caricate
* **Cattura Stringhe**: Stampa tutte le stringhe catturate durante l'uso dell'applicazione (molto rumoroso) * **Capture Strings**: Stampa tutte le stringhe catturate durante l'uso dell'applicazione (molto rumoroso)
* **Cattura Confronti di Stringhe**: Potrebbe essere molto utile. Mostrerà le **2 stringhe confrontate** e se il risultato è stato Vero o Falso. * **Capture String Comparisons**: Potrebbe essere molto utile. Mostrerà le **2 stringhe confrontate** e se il risultato è stato Vero o Falso.
* **Enumerare Metodi di Classe**: Inserisci il nome della classe (come "java.io.File") e stamperà tutti i metodi della classe. * **Enumerate Class Methods**: Inserire il nome della classe (come "java.io.File") e verranno stampati tutti i metodi della classe.
* **Cerca Modello di Classe**: Cerca classi per modello * **Search Class Pattern**: Cerca classi per modello
* **Traccia Metodi di Classe**: **Traccia** un'**intera classe** (vedi input e output di tutti i metodi della classe). Ricorda che per impostazione predefinita MobSF traccia diversi metodi di API Android interessanti. * **Trace Class Methods**: **Traccia** un'**intera classe** (vedi input e output di tutti i metodi della classe). Ricorda che per impostazione predefinita MobSF traccia diversi metodi di API Android interessanti.
Una volta selezionato il modulo ausiliario che si desidera utilizzare, è necessario premere "**Avvia strumentazione**" e si vedranno tutti gli output in "**Frida Live Logs**". Una volta selezionato il modulo ausiliario che si desidera utilizzare, è necessario premere "**Start Intrumentation**" e si vedranno tutti gli output in "**Frida Live Logs**".
**Shell** **Shell**
Mobsf ti offre anche una shell con alcuni comandi **adb**, comandi **MobSF** e comandi **shell** comuni in fondo alla pagina di analisi dinamica. Alcuni comandi interessanti: Mobsf ti offre anche una shell con alcuni comandi **adb**, comandi **MobSF** e comandi **shell** comuni nella parte inferiore della pagina di analisi dinamica. Alcuni comandi interessanti:
```bash ```bash
help help
shell ls shell ls
@ -636,12 +643,12 @@ receivers
**Strumenti HTTP** **Strumenti HTTP**
Quando il traffico http viene catturato, è possibile visualizzare una vista poco attraente del traffico catturato nella sezione "**HTTP(S) Traffic**" in basso o una vista più piacevole nel pulsante verde "**Start HTTPTools**". Dalla seconda opzione, è possibile **inviare** le **richieste catturate** a **proxy** come Burp o Owasp ZAP.\ Quando il traffico http viene catturato, è possibile visualizzare una vista poco attraente del traffico catturato nella sezione "**HTTP(S) Traffic**" in basso o una vista più piacevole nel pulsante verde "**Start HTTPTools**". Dalla seconda opzione, è possibile **inviare** le **richieste catturate** a **proxy** come Burp o Owasp ZAP.\
Per farlo, _accendere Burp -->_ _disattivare l'Intercept --> nella sezione MobSB HTTPTools selezionare la richiesta_ --> premere "**Invia a Fuzzer**" --> _selezionare l'indirizzo del proxy_ ([http://127.0.0.1:8080\\](http://127.0.1:8080)). Per farlo, _accendere Burp -->_ _disattivare l'Intercept --> nella sezione MobSB HTTPTools selezionare la richiesta_ --> premere "**Send to Fuzzer**" --> _selezionare l'indirizzo del proxy_ ([http://127.0.0.1:8080\\](http://127.0.1:8080)).
Una volta completata l'analisi dinamica con MobSF, è possibile premere su "**Avvia Web API Fuzzer**" per **fuzzare le richieste http** e cercare vulnerabilità. Una volta completata l'analisi dinamica con MobSF, è possibile premere su "**Start Web API Fuzzer**" per **fuzzare le richieste http** e cercare vulnerabilità.
{% hint style="info" %} {% hint style="info" %}
Dopo aver eseguito un'analisi dinamica con MobSF, le impostazioni del proxy potrebbero essere configurate in modo errato e potresti non essere in grado di correggerle dall'interfaccia grafica. È possibile correggere le impostazioni del proxy facendo: Dopo aver eseguito un'analisi dinamica con MobSF, le impostazioni del proxy potrebbero essere configurate in modo errato e potresti non essere in grado di correggerle dall'interfaccia grafica. È possibile correggere le impostazioni del proxy eseguendo:
``` ```
adb shell settings put global http_proxy :0 adb shell settings put global http_proxy :0
``` ```
@ -660,7 +667,7 @@ Questo è un **ottimo strumento per eseguire analisi statica con un'interfaccia
### [Qark](https://github.com/linkedin/qark) ### [Qark](https://github.com/linkedin/qark)
Questo strumento è progettato per cercare diverse **vulnerabilità di sicurezza delle applicazioni Android**, sia nel **codice sorgente** che negli **APK confezionati**. Lo strumento è inoltre **in grado di creare un APK deployable "Proof-of-Concept"** e **comandi ADB**, per sfruttare alcune delle vulnerabilità trovate (attività esposte, intenti, tapjacking...). Come Drozer, non è necessario eseguire il root del dispositivo di test. Questo strumento è progettato per cercare diverse **vulnerabilità di sicurezza delle applicazioni Android**, sia nel **codice sorgente** che negli **APK confezionati**. Lo strumento è inoltre **in grado di creare un APK deployable come "Proof-of-Concept"** e **comandi ADB**, per sfruttare alcune delle vulnerabilità trovate (attività esposte, intent, tapjacking...). Come Drozer, non è necessario eseguire il root del dispositivo di test.
```bash ```bash
pip3 install --user qark # --user is only needed if not using a virtualenv pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk qark --apk path/to/my.apk
@ -680,11 +687,11 @@ reverse-apk relative/path/to/APP.apk
``` ```
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
SUPER è un'applicazione da riga di comando che può essere utilizzata su Windows, MacOS X e Linux, che analizza i file _.apk_ alla ricerca di vulnerabilità. Fa ciò decomprimendo i file APK e applicando una serie di regole per rilevare tali vulnerabilità. SUPER è un'applicazione da riga di comando che può essere utilizzata su Windows, MacOS X e Linux, che analizza i file _.apk_ alla ricerca di vulnerabilità. Fa ciò decomprimendo gli APK e applicando una serie di regole per rilevare tali vulnerabilità.
Tutte le regole sono contenute in un file `rules.json`, e ogni azienda o tester potrebbe creare le proprie regole per analizzare ciò di cui hanno bisogno. Tutte le regole sono contenute in un file `rules.json`, e ogni azienda o tester potrebbe creare le proprie regole per analizzare ciò di cui hanno bisogno.
Scarica le ultime versioni binarie dalla [pagina di download](https://superanalyzer.rocks/download.html) Scarica le ultime versioni eseguibili dalla [pagina di download](https://superanalyzer.rocks/download.html)
``` ```
super-analyzer {apk_file} super-analyzer {apk_file}
``` ```
@ -722,7 +729,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
![](<../../.gitbook/assets/image (595).png>) ![](<../../.gitbook/assets/image (595).png>)
**MARA** è un **F**ramework di **A**nalisi e **R**everse engineering di **A**pplicazioni **M**obili. È uno strumento che riunisce strumenti comunemente utilizzati per il reverse engineering e l'analisi di applicazioni mobili, per assistere nel test delle applicazioni mobili contro le minacce alla sicurezza mobile di OWASP. Il suo obiettivo è rendere più facile e amichevole questo compito agli sviluppatori di applicazioni mobili e ai professionisti della sicurezza. **MARA** è un **F**ramework di **R**everse engineering e **A**nalisi di **A**pplicazioni **M**obili. È uno strumento che riunisce strumenti comunemente utilizzati per il reverse engineering e l'analisi di applicazioni mobili, per assistere nel test delle applicazioni mobili contro le minacce alla sicurezza mobile di OWASP. Il suo obiettivo è rendere più facile e amichevole questo compito per gli sviluppatori di applicazioni mobili e i professionisti della sicurezza.
È in grado di: È in grado di:
@ -743,7 +750,7 @@ Nota che a seconda del servizio e della configurazione che si utilizza per obfus
### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\)) ### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\))
Da [Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\)): **ProGuard** è uno strumento a riga di comando open source che riduce, ottimizza e obfusca il codice Java. È in grado di ottimizzare il bytecode e individuare ed eliminare istruzioni inutilizzate. ProGuard è un software gratuito e viene distribuito con licenza GNU General Public License, versione 2. Da [Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\)): **ProGuard** è uno strumento a riga di comando open source che riduce, ottimizza e obfusca il codice Java. È in grado di ottimizzare il bytecode e individuare ed eliminare istruzioni non utilizzate. ProGuard è un software gratuito e viene distribuito con la licenza pubblica generale GNU, versione 2.
ProGuard è distribuito come parte dell'SDK Android e viene eseguito durante la compilazione dell'applicazione in modalità di rilascio. ProGuard è distribuito come parte dell'SDK Android e viene eseguito durante la compilazione dell'applicazione in modalità di rilascio.
@ -754,9 +761,9 @@ Trova una guida passo-passo per deobfuscare l'APK in [https://blog.lexfo.fr/dexg
(Da quella guida) L'ultima volta che abbiamo controllato, la modalità di funzionamento di Dexguard era: (Da quella guida) L'ultima volta che abbiamo controllato, la modalità di funzionamento di Dexguard era:
* caricare una risorsa come un InputStream; * caricare una risorsa come un InputStream;
* alimentare il risultato a una classe che eredita da FilterInputStream per decodificarlo; * alimentare il risultato a una classe che eredita da FilterInputStream per decifrarlo;
* fare un'obfuscazione inutile per sprecare alcuni minuti di tempo a un reverser; * fare un'obfuscazione inutile per sprecare alcuni minuti di tempo a un reverser;
* alimentare il risultato decodificato a un ZipInputStream per ottenere un file DEX; * alimentare il risultato decifrato a un ZipInputStream per ottenere un file DEX;
* infine caricare il DEX risultante come una risorsa utilizzando il metodo `loadDex`. * infine caricare il DEX risultante come una risorsa utilizzando il metodo `loadDex`.
### [DeGuard](http://apk-deguard.com) ### [DeGuard](http://apk-deguard.com)
@ -781,7 +788,7 @@ APKiD fornisce informazioni su **come è stato creato un APK**. Identifica molti
### [Androl4b](https://github.com/sh4hin/Androl4b) ### [Androl4b](https://github.com/sh4hin/Androl4b)
AndroL4b è una macchina virtuale di sicurezza Android basata su ubuntu-mate che include la raccolta degli ultimi framework, tutorial e laboratori di diversi esperti di sicurezza e ricercatori per il reverse engineering e l'analisi malware. AndroL4b è una macchina virtuale di sicurezza Android basata su ubuntu-mate che include la raccolta degli ultimi framework, tutorial e laboratori di diversi esperti di sicurezza e ricercatori per il reverse engineering e l'analisi di malware.
## Riferimenti ## Riferimenti
@ -799,7 +806,7 @@ AndroL4b è una macchina virtuale di sicurezza Android basata su ubuntu-mate che
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Unisciti al [**server Discord di HackenProof**](https://discord.com/invite/N3FrSbmwdy) per comunicare con hacker esperti e cacciatori di bug! Unisciti al server [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) per comunicare con hacker esperti e cacciatori di bug!
**Approfondimenti sull'Hacking**\ **Approfondimenti sull'Hacking**\
Interagisci con contenuti che approfondiscono l'emozione e le sfide dell'hacking Interagisci con contenuti che approfondiscono l'emozione e le sfide dell'hacking
@ -808,7 +815,7 @@ Interagisci con contenuti che approfondiscono l'emozione e le sfide dell'hacking
Resta aggiornato con il mondo dell'hacking ad alta velocità attraverso notizie e approfondimenti in tempo reale Resta aggiornato con il mondo dell'hacking ad alta velocità attraverso notizie e approfondimenti in tempo reale
**Ultime Novità**\ **Ultime Novità**\
Resta informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma
**Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi! **Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi!