mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
Translated ['mobile-pentesting/android-app-pentesting/README.md'] to it
This commit is contained in:
parent
fd6b7fbb24
commit
7de70f6ca6
1 changed files with 105 additions and 98 deletions
|
@ -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!
|
||||
|
||||
**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**\
|
||||
Resta aggiornato con il mondo dell'hacking in rapida evoluzione attraverso notizie e approfondimenti in tempo reale
|
||||
|
||||
**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
|
||||
|
||||
|
@ -61,7 +61,16 @@ com.android.insecurebankv2
|
|||
adb shell pm path com.android.insecurebankv2
|
||||
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
|
||||
|
||||
|
@ -70,7 +79,7 @@ Per favore, [**leggi qui per trovare informazioni sui diversi decompiler disponi
|
|||
|
||||
### 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**
|
||||
|
||||
|
@ -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
|
||||
|
||||
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:
|
||||
|
||||
* **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.
|
||||
* **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.
|
||||
* **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.
|
||||
* **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.
|
||||
- **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.
|
||||
- **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.
|
||||
- **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.
|
||||
- **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** è 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.\
|
||||
Di fatto, **acceca l'utente dal sapere che sta effettivamente eseguendo azioni sull'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'applicazione vittima**.
|
||||
|
||||
Trova ulteriori informazioni in:
|
||||
|
||||
|
@ -105,7 +114,7 @@ Trova ulteriori informazioni in:
|
|||
|
||||
### 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:
|
||||
|
||||
|
@ -122,7 +131,7 @@ In Android, i file **archiviati** nella **memoria interna** sono **progettati**
|
|||
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**.
|
||||
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**
|
||||
|
||||
|
@ -131,11 +140,11 @@ Quando si tratta di file su **memoria esterna**, come le schede SD, dovrebbero e
|
|||
1. **Accessibilità**:
|
||||
* 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**:
|
||||
* 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.
|
||||
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.
|
||||
* 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.
|
||||
|
||||
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**
|
||||
|
||||
* **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.
|
||||
* **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.
|
||||
* **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 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
|
||||
|
||||
|
@ -158,24 +167,22 @@ Per qualche motivo a volte gli sviluppatori accettano tutti i certificati anche
|
|||
SSLSocketFactory sf = new cc(trustStore);
|
||||
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 non sicura
|
||||
### Crittografia danneggiata
|
||||
|
||||
**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**
|
||||
|
||||
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
|
||||
|
||||
* È 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 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
|
||||
|
||||
### Applicazione React Native
|
||||
|
@ -196,19 +203,19 @@ Leggi la seguente pagina per imparare come accedere facilmente al codice C# dell
|
|||
|
||||
### 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
|
||||
|
||||
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**.
|
||||
|
||||
### 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" %}
|
||||
[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
|
||||
|
||||
**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**\
|
||||
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!
|
||||
|
||||
|
@ -248,7 +255,7 @@ Resta informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali de
|
|||
|
||||
## 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
|
||||
|
||||
|
@ -264,7 +271,7 @@ Grazie alla connessione ADB puoi utilizzare **Drozer** e **Frida** all'interno d
|
|||
|
||||
#### 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:
|
||||
|
||||
{% 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.
|
||||
{% 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>)
|
||||
|
||||
|
@ -286,7 +293,7 @@ Inoltre, nota che nella **configurazione della VM Android in Genymotion** puoi s
|
|||
|
||||
#### 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**.
|
||||
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**.
|
||||
|
||||
> 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.
|
||||
### Perdita non intenzionale di dati
|
||||
> 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 involontaria di dati
|
||||
|
||||
**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**.
|
||||
{% 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.
|
||||
|
||||
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.
|
||||
|
||||
### 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`
|
||||
|
||||
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.\
|
||||
Drozer è uno strumento utile per **sfruttare attività esportate, servizi esportati e Provider di Contenuti** come imparerai nelle sezioni seguenti.
|
||||
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.
|
||||
|
||||
### 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)\
|
||||
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.
|
||||
|
||||
|
@ -361,16 +368,16 @@ Nota che un bypass di autorizzazione non è sempre una vulnerabilità, dipender
|
|||
|
||||
**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
|
||||
|
||||
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
|
||||
|
||||
[**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)
|
||||
|
||||
|
@ -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)\
|
||||
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)
|
||||
|
||||
### **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 **aprire** uno **schema** dichiarato usando **adb** o un **browser**:
|
||||
Puoi **aprire** uno **schema** dichiarato utilizzando **adb** o un **browser**:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -424,8 +431,8 @@ Ogni volta che trovi un deep link, controlla che **non stia ricevendo dati sensi
|
|||
|
||||
**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`.\
|
||||
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/).
|
||||
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 l'endpoint vulnerabile ha utilizzato il metodo corretto) e qualsiasi altra vulnerabilità. Maggiori [informazioni qui](http://dphoeniixx.com/2020/12/13-2/).
|
||||
|
||||
**Altri esempi**
|
||||
|
||||
|
@ -439,23 +446,23 @@ Un [interessante rapporto di bug bounty](https://hackerone.com/reports/855618) s
|
|||
|
||||
#### 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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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/)
|
||||
* 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)
|
||||
|
@ -467,7 +474,7 @@ Quando lo SSL Pinning è implementato, diventa necessario bypassarlo per ispezio
|
|||
|
||||
### 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...**\
|
||||
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.
|
||||
|
||||
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`**
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
|
@ -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.
|
||||
* 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.
|
||||
* 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
|
||||
|
||||
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.
|
||||
* **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).
|
||||
* **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)
|
||||
|
@ -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
|
||||
|
||||
**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!
|
||||
|
||||
|
@ -580,13 +587,13 @@ Resta informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali de
|
|||
|
||||
![](<../../.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
|
||||
docker pull opensecurity/mobile-security-framework-mobsf
|
||||
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_).\
|
||||
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.
|
||||
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'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.
|
||||
|
||||
|
@ -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**.\
|
||||
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").\
|
||||
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**").
|
||||
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 "**Load**" e premere "**Start Instrumentation**" (sarà possibile vedere i log di quegli script all'interno di "**Frida Live Logs**").
|
||||
|
||||
![](<../../.gitbook/assets/image (419).png>)
|
||||
|
||||
Inoltre, sono disponibili alcune funzionalità ausiliarie di Frida:
|
||||
|
||||
* **Enumerare Classi Caricate**: Stampa tutte le classi caricate
|
||||
* **Cattura Stringhe**: 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.
|
||||
* **Enumerare Metodi di Classe**: Inserisci il nome della classe (come "java.io.File") e stamperà tutti i metodi della classe.
|
||||
* **Cerca Modello di Classe**: 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.
|
||||
* **Enumerate Loaded Classes**: Stampa tutte le classi caricate
|
||||
* **Capture Strings**: Stampa tutte le stringhe catturate durante l'uso dell'applicazione (molto rumoroso)
|
||||
* **Capture String Comparisons**: Potrebbe essere molto utile. Mostrerà le **2 stringhe confrontate** e se il risultato è stato Vero o Falso.
|
||||
* **Enumerate Class Methods**: Inserire il nome della classe (come "java.io.File") e verranno stampati tutti i metodi della classe.
|
||||
* **Search Class Pattern**: Cerca classi per modello
|
||||
* **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**
|
||||
|
||||
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
|
||||
help
|
||||
shell ls
|
||||
|
@ -636,12 +643,12 @@ receivers
|
|||
**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.\
|
||||
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" %}
|
||||
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
|
||||
```
|
||||
|
@ -660,7 +667,7 @@ Questo è un **ottimo strumento per eseguire analisi statica con un'interfaccia
|
|||
|
||||
### [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
|
||||
pip3 install --user qark # --user is only needed if not using a virtualenv
|
||||
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 è 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.
|
||||
|
||||
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}
|
||||
```
|
||||
|
@ -722,7 +729,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
|||
|
||||
![](<../../.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:
|
||||
|
||||
|
@ -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\))
|
||||
|
||||
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.
|
||||
|
||||
|
@ -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:
|
||||
|
||||
* 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;
|
||||
* 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`.
|
||||
|
||||
### [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 è 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
|
||||
|
||||
|
@ -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>
|
||||
|
||||
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**\
|
||||
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
|
||||
|
||||
**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!
|
||||
|
||||
|
|
Loading…
Reference in a new issue