Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's

This commit is contained in:
Translator 2025-08-04 18:44:51 +00:00
parent c20a3201a9
commit fc5d37950b
4 changed files with 195 additions and 41 deletions

View File

@ -322,6 +322,7 @@
- [Android APK Checklist](mobile-pentesting/android-checklist.md)
- [Android Applications Pentesting](mobile-pentesting/android-app-pentesting/README.md)
- [Accessibility Services Abuse](mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md)
- [Android Applications Basics](mobile-pentesting/android-app-pentesting/android-applications-basics.md)
- [Android Task Hijacking](mobile-pentesting/android-app-pentesting/android-task-hijacking.md)
- [ADB Commands](mobile-pentesting/android-app-pentesting/adb-commands.md)

View File

@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
## Nozioni di Base sulle Applicazioni Android
## Nozioni di base sulle Applicazioni Android
È altamente consigliato iniziare a leggere questa pagina per conoscere le **parti più importanti relative alla sicurezza di Android e i componenti più pericolosi in un'applicazione Android**:
@ -13,7 +13,7 @@ android-applications-basics.md
## ADB (Android Debug Bridge)
Questo è lo strumento principale di cui hai bisogno per connetterti a un dispositivo Android (emulato o fisico).\
**ADB** consente di controllare i dispositivi sia tramite **USB** che tramite **Rete** da un computer. Questa utility permette la **copia** di file in entrambe le direzioni, **installazione** e **disinstallazione** di app, **esecuzione** di comandi shell, **backup** di dati, **lettura** di log, tra le altre funzioni.
**ADB** consente di controllare i dispositivi sia tramite **USB** che **rete** da un computer. Questa utility abilita la **copia** di file in entrambe le direzioni, **installazione** e **disinstallazione** di app, **esecuzione** di comandi shell, **backup** di dati, **lettura** di log, tra le altre funzioni.
Dai un'occhiata alla seguente lista di [**Comandi ADB**](adb-commands.md) per imparare come utilizzare adb.
@ -24,9 +24,10 @@ A volte è interessante **modificare il codice dell'applicazione** per accedere
## Altri trucchi interessanti
- [Falsificare la tua posizione nel Play Store](spoofing-your-location-in-play-store.md)
- [API Privilegiata Shizuku (accesso privilegiato non root basato su ADB)](shizuku-privileged-api.md)
- [Sfruttare meccanismi di aggiornamento in-app insicuri](insecure-in-app-update-rce.md)
- [Spoofing della tua posizione nel Play Store](spoofing-your-location-in-play-store.md)
- [API privilegiata Shizuku (accesso privilegiato non root basato su ADB)](shizuku-privileged-api.md)
- [Sfruttamento di meccanismi di aggiornamento in-app insicuri](insecure-in-app-update-rce.md)
- [Abuso dei Servizi di Accessibilità (Android RAT)](accessibility-services-abuse.md)
- **Scarica APK**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd)
- Estrai APK dal dispositivo:
```bash
@ -77,14 +78,14 @@ L'**esame dei file _Manifest.xml_ e **_strings.xml_** di un'applicazione può ri
- **Sicurezza della Rete**: Le configurazioni di sicurezza della rete personalizzate (`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 manifest può evidenziare componenti che potrebbero essere abusati. Ulteriori analisi durante i test dinamici possono rivelare come sfruttare questi componenti.
- **Content Providers e FileProviders**: I content provider esposti potrebbero consentire accessi o modifiche non autorizzate ai dati. Anche la configurazione dei FileProviders dovrebbe essere scrutinata.
- **Broadcast Receivers e URL Schemes**: Questi componenti potrebbero essere sfruttati, prestando particolare attenzione a come vengono gestiti gli URL schemes per le vulnerabilità di input.
- **Broadcast Receivers e URL Schemes**: Questi componenti potrebbero essere sfruttati per sfruttamenti, prestando particolare attenzione a come vengono gestiti gli schemi URL per le vulnerabilità di input.
- **Versioni SDK**: Gli attributi `minSdkVersion`, `targetSDKVersion` e `maxSdkVersion` indicano le versioni Android supportate, evidenziando l'importanza di non supportare versioni Android obsolete e vulnerabili per motivi di sicurezza.
Dal file **strings.xml**, informazioni sensibili come chiavi API, schemi personalizzati e altre note per gli sviluppatori possono essere scoperte, sottolineando la necessità di una revisione attenta di queste risorse.
Dal file **strings.xml**, informazioni sensibili come chiavi API, schemi personalizzati e altre note degli sviluppatori possono essere scoperte, sottolineando la necessità di una revisione attenta di queste risorse.
### Tapjacking
**Tapjacking** è un attacco in cui un'**applicazione** **maligna** viene lanciata e **si posiziona sopra un'applicazione vittima**. Una volta che oscura visibilmente l'app vittima, la sua interfaccia utente è progettata in modo da ingannare l'utente a interagire con essa, mentre passa l'interazione all'app vittima.\
**Tapjacking** è un attacco in cui un **applicazione** **maligna** viene lanciata e **si posiziona sopra un'applicazione vittima**. Una volta che oscura visibilmente l'app vittima, la sua interfaccia utente è progettata in modo da ingannare l'utente a interagire con essa, mentre passa l'interazione all'app vittima.\
In effetti, sta **ciecando l'utente dal sapere che sta effettivamente eseguendo azioni sull'app vittima**.
Trova ulteriori informazioni in:
@ -112,7 +113,7 @@ In Android, i file **memorizzati** nella **memoria interna** sono **progettati**
1. **Static Analysis:**
- **Assicurati** che l'uso di `MODE_WORLD_READABLE` e `MODE_WORLD_WRITABLE` sia **scrutinato attentamente**. Queste modalità **possono potenzialmente esporre** file a **accessi non intenzionati o non autorizzati**.
2. **Dynamic Analysis:**
- **Verifica** le **permissive** impostate sui file creati dall'app. In particolare, **controlla** se alcuni file sono **impostati per essere leggibili o scrivibili a livello globale**. Questo può 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.
- **Verifica** le **permissive** impostate sui file creati dall'app. In particolare, **controlla** se ci sono file **impostati per essere leggibili o scrivibili a livello globale**. Questo può 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.
**External Storage**
@ -157,14 +158,14 @@ Alcuni sviluppatori salvano dati sensibili nello storage locale e li crittografa
**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 i **hash** vengono utilizzati per memorizzare le password, ad esempio, dovrebbero essere utilizzati hash resistenti a brute-force con sale.
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 i **hash** vengono utilizzati per memorizzare le password, ad esempio, dovrebbero essere utilizzati hash resistenti al brute-force con sale.
### Altri controlli
- È consigliato **offuscare l'APK** per rendere più difficile il lavoro di reverse engineering per gli attaccanti.
- Se l'app è sensibile (come le app bancarie), dovrebbe eseguire i **propri controlli per vedere se il mobile è rootato** e agire di conseguenza.
- Se l'app è sensibile (come le app bancarie), dovrebbe eseguire i propri **controlli per vedere se il mobile è rootato** e agire di conseguenza.
- Se l'app è sensibile (come le app bancarie), dovrebbe controllare se viene utilizzato un **emulatore**.
- Se l'app è sensibile (come le app bancarie), dovrebbe **controllare la propria integrità prima di eseguirla** per verificare se è stata modificata.
- Se l'app è sensibile (come le app bancarie), dovrebbe **controllare la propria integrità prima di eseguire** per verificare se è stata modificata.
- Usa [**APKiD**](https://github.com/rednaga/APKiD) per controllare quale compilatore/pacchetto/offuscatore è stato utilizzato per costruire l'APK.
### Applicazione React Native
@ -185,7 +186,7 @@ Leggi la seguente pagina per imparare come accedere facilmente al codice C# dell
### Applicazioni Superpacked
Secondo questo [**post del 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'app che decomprime questo tipo di app... e di un modo più veloce che implica **eseguire l'applicazione e raccogliere i file decompressi dal filesystem.**
Secondo questo [**post del 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'app che decomprime questo tipo di app... e di un modo più veloce che implica **eseguire l'applicazione e raccogliere i file decompressi dal filesystem.**
### Analisi statica automatizzata del codice
@ -238,14 +239,14 @@ Grazie alla connessione ADB puoi utilizzare **Drozer** e **Frida** all'interno d
#### Utilizzando 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)**ultimi versioni x86** supportano le librerie ARM senza necessitare di un emulatore arm lento).
- [**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) **ultimi x86** versioni **supportano le librerie ARM** senza necessità di un emulatore arm lento).
- Impara a configurarlo in questa pagina:
{{#ref}}
avd-android-virtual-device.md
{{#endref}}
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Versione gratuita:** Edizione personale, devi creare un account. _È consigliato **scaricare** la versione **CON**_ _**VirtualBox** per evitare potenziali errori._)
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Versione gratuita:** Edizione personale, devi creare un account. _È consigliato **scaricare** la versione **CON** _ _**VirtualBox** per evitare potenziali errori._)
- [**Nox**](https://es.bignox.com) (Gratuito, ma non supporta Frida o Drozer).
> [!TIP]
@ -290,9 +291,9 @@ Se un'applicazione **crasha** e **salva log**, questi log possono assistere gli
Come pentester, **cerca di dare un'occhiata a questi log**.
**Dati di analisi inviati a terzi**
**Dati di analisi inviati a terze parti**
Le applicazioni spesso integrano servizi come Google Adsense, che possono involontariamente **trapelare dati sensibili** a causa di implementazioni errate da parte degli sviluppatori. Per identificare potenziali perdite di dati, è consigliabile **intercettare il traffico dell'applicazione** e controllare eventuali informazioni sensibili inviate a servizi di terze parti.
Le applicazioni spesso integrano servizi come Google Adsense, che possono involontariamente **far trapelare 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 eventuali informazioni sensibili inviate a servizi di terze parti.
### DB SQLite
@ -306,7 +307,7 @@ Enumera le tabelle utilizzando `.tables` e enumera le colonne delle tabelle eseg
### Drozer (Attività di sfruttamento, Content Providers e Servizi)
Da [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** ti consente 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 interprocesso (IPC) di Android e interagire con il sistema operativo sottostante.\
Drozer è uno strumento utile per **sfruttare attività esportate, servizi esportati e Content Providers** come imparerai nelle sezioni seguenti.
Drozer è uno strumento utile per **sfruttare attività esportate, servizi esportati e Content Providers**, come imparerai nelle sezioni seguenti.
### Sfruttare attività esportate
@ -315,7 +316,7 @@ Ricorda anche che il codice di un'attività inizia nel metodo **`onCreate`**.
**Bypass dell'autorizzazione**
Quando un'Activity è esportata, puoi invocare il suo schermo da un'app esterna. Pertanto, se un'attività con **informazioni sensibili** è **esportata**, potresti **bypassare** i meccanismi di **autenticazione** **per accedervi.**
Quando un'Activity è 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**.
[**Scopri come sfruttare le attività esportate con Drozer.**](drozer-tutorial/index.html#activities)
@ -337,7 +338,7 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
#### Tapjacking
Se il tapjacking non viene prevenuto, potresti abusare dell'attività esportata per far **eseguire azioni inaspettate** all'utente. Per ulteriori informazioni su [**cos'è il Tapjacking segui il link**](#tapjacking).
Se il tapjacking non viene prevenuto, potresti abusare dell'attività esportata per far **eseguire azioni inaspettate all'utente**. Per ulteriori informazioni su [**cos'è il Tapjacking segui il link**](#tapjacking).
### Sfruttare i Content Providers - Accesso e manipolazione di informazioni sensibili
@ -351,7 +352,7 @@ I content provider sono fondamentalmente utilizzati per **condividere dati**. Se
[**Leggi questo se vuoi rinfrescare cosa è un Servizio.**](android-applications-basics.md#services)\
Ricorda che le azioni di un Servizio iniziano nel metodo `onStartCommand`.
Un servizio è fondamentalmente qualcosa che **può ricevere dati**, **elaborarli** e **restituire** (o meno) una risposta. Quindi, se un'applicazione esporta alcuni servizi, dovresti **controllare** il **codice** per capire cosa sta facendo e **testarlo** **dinamicamente** per estrarre informazioni riservate, bypassare misure di autenticazione...\
Un servizio è fondamentalmente qualcosa che **può ricevere dati**, **elaborarli** e **restituire** (o meno) una risposta. Quindi, se un'applicazione sta esportando alcuni servizi, dovresti **controllare** il **codice** per capire cosa sta facendo e **testarlo** **dinamicamente** per estrarre informazioni riservate, bypassare misure di autenticazione...\
[**Scopri come sfruttare i Servizi con Drozer.**](drozer-tutorial/index.html#services)
### **Sfruttare i Broadcast Receivers**
@ -399,7 +400,7 @@ Un [interessante rapporto di bug bounty](https://hackerone.com/reports/855618) s
- **I certificati non vengono sempre ispezionati correttamente** dalle applicazioni Android. È comune che queste applicazioni trascurino gli avvisi e accettino certificati autofirmati o, in alcuni casi, tornino a utilizzare connessioni HTTP.
- **Le negoziazioni durante il handshake SSL/TLS sono a volte deboli**, impiegando suite crittografiche insicure. Questa vulnerabilità rende la connessione suscettibile ad attacchi man-in-the-middle (MITM), consentendo agli attaccanti di decrittare i dati.
- **La perdita di informazioni private** è un rischio quando le applicazioni si autenticano utilizzando canali sicuri ma poi comunicano tramite canali non sicuri per altre transazioni. Questo approccio non riesce a proteggere i dati sensibili, come i cookie di sessione o i dettagli degli utenti, dall'intercettazione da parte di entità maligne.
- **La perdita di informazioni private** è un rischio quando le applicazioni si autenticano utilizzando canali sicuri ma poi comunicano tramite canali non sicuri per altre transazioni. Questo approccio non riesce a proteggere i dati sensibili, come i cookie di sessione o i dettagli degli utenti, dall'intercettazione da parte di entità malevole.
#### Verifica del certificato
@ -415,7 +416,7 @@ Per ispezionare il traffico HTTP, è necessario **installare il certificato dell
Le applicazioni destinate a **API Level 24 e superiori** 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 su come modificare la Configurazione della Sicurezza di Rete, [**fai riferimento a questo tutorial**](make-apk-accept-ca-certificate.md).
Se **Flutter** viene utilizzato, devi seguire le istruzioni in [**questa pagina**](flutter.md). Questo perché, aggiungere semplicemente il certificato nel negozio non funzionerà poiché Flutter ha la propria lista di CA valide.
Se **Flutter** viene utilizzato, devi seguire le istruzioni in [**questa pagina**](flutter.md). Questo perché, semplicemente aggiungendo il certificato nel negozio non funzionerà poiché Flutter ha la propria lista di CAs validi.
#### Bypassare SSL Pinning
@ -464,7 +465,7 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
In Android, il Keystore è il miglior posto per memorizzare dati sensibili, tuttavia, con privilegi sufficienti è ancora **possibile accedervi**. Poiché le applicazioni tendono a memorizzare qui **dati sensibili in chiaro**, i pentest dovrebbero controllare per questo come utente root o qualcuno con accesso fisico al dispositivo potrebbe essere in grado di rubare questi dati.
Anche se un'app ha memorizzato dati nel keystore, i dati dovrebbero essere crittografati.
Anche se un'app memorizza dati nel keystore, i dati dovrebbero essere crittografati.
Per accedere ai dati all'interno del keystore, puoi utilizzare questo script Frida: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
```bash
@ -478,7 +479,7 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
```
### **Immagini di Sfondo**
Quando metti un'applicazione in background, Android memorizza un **istantanea dell'applicazione** in modo che, quando viene ripristinata in primo piano, inizi a caricare l'immagine prima dell'app, quindi sembra che l'app sia stata caricata più velocemente.
Quando metti un'applicazione in background, Android memorizza un **istantanea dell'applicazione** in modo che, quando viene ripristinata in primo piano, inizi a caricare l'immagine prima dell'app, così sembra che l'app sia stata caricata più velocemente.
Tuttavia, se questa istantanea contiene **informazioni sensibili**, qualcuno con accesso all'istantanea potrebbe **rubare quelle informazioni** (nota che è necessario avere i permessi di root per accedervi).
@ -501,7 +502,7 @@ Il pericolo risiede nel consentire agli attaccanti di attivare componenti dell'a
### Punti Essenziali
- **Iniezione di Intent** è simile al problema di Open Redirect del web.
- Gli exploit comportano il passaggio di oggetti `Intent` come extra, che possono essere deviati per eseguire operazioni non sicure.
- Gli exploit coinvolgono il passaggio di oggetti `Intent` come extra, che possono essere deviati per eseguire operazioni non sicure.
- Può esporre componenti non esportati e provider di contenuti agli attaccanti.
- La conversione di URL in `Intent` di `WebView` può facilitare azioni indesiderate.
@ -512,7 +513,7 @@ Probabilmente conosci questo tipo di vulnerabilità dal Web. Devi essere partico
- **Iniezione SQL:** Quando gestisci query dinamiche o Content-Providers assicurati di utilizzare query parametrizzate.
- **Iniezione JavaScript (XSS):** Verifica che il supporto per JavaScript e Plugin sia disabilitato per qualsiasi WebView (disabilitato per impostazione predefinita). [Ulteriori informazioni qui](webview-attacks.md#javascript-enabled).
- **Inclusione di File Locali:** Le WebView dovrebbero avere l'accesso al file system disabilitato (abilitato per impostazione predefinita) - `(webview.getSettings().setAllowFileAccess(false);)`. [Ulteriori informazioni qui](webview-attacks.md#javascript-enabled).
- **Cookie Eterni**: In diversi casi, quando l'applicazione Android termina la sessione, il cookie non viene revocato o potrebbe persino essere salvato su disco.
- **Cookie Eterni**: In diversi casi, quando l'applicazione android termina la sessione, il cookie non viene revocato o potrebbe essere persino salvato su disco.
- [**Flag Sicuro** nei cookie](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
---
@ -525,7 +526,7 @@ Probabilmente conosci questo tipo di vulnerabilità dal Web. Devi essere partico
![](<../../images/image (866).png>)
**Valutazione della vulnerabilità dell'applicazione** utilizzando un bel frontend web-based. Puoi anche eseguire analisi dinamica (ma devi preparare l'ambiente).
**Valutazione delle vulnerabilità dell'applicazione** utilizzando un bel frontend web-based. Puoi anche eseguire analisi dinamica (ma devi preparare l'ambiente).
```bash
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
@ -533,11 +534,11 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
Nota che MobSF può analizzare **Android**(apk)**, IOS**(ipa) **e Windows**(apx) applicazioni (_Le applicazioni Windows devono essere analizzate da un MobSF installato su un host Windows_).\
Inoltre, se crei un file **ZIP** con il codice sorgente di un'app **Android** o di un'app **IOS** (vai alla cartella radice dell'applicazione, seleziona tutto e crea un file ZIP), sarà in grado di analizzarlo anche.
MobSF consente anche di **diff/Confrontare** analisi e di integrare **VirusTotal** (dovrai impostare la tua chiave API in _MobSF/settings.py_ e abilitarla: `VT_ENABLED = TRUE` `VT_API_KEY = <Your API key>` `VT_UPLOAD = TRUE`). Puoi anche impostare `VT_UPLOAD` su `False`, quindi l'**hash** sarà **caricato** invece del file.
MobSF consente anche di **diff/Confrontare** analisi e di integrare **VirusTotal** (dovrai impostare la tua chiave API in _MobSF/settings.py_ e abilitarla: `VT_ENABLED = TRUE` `VT_API_KEY = <La tua chiave API>` `VT_UPLOAD = TRUE`). Puoi anche impostare `VT_UPLOAD` su `False`, quindi l'**hash** sarà **caricato** invece del file.
### Analisi dinamica assistita con MobSF
**MobSF** può essere molto utile per l'**analisi dinamica** in **Android**, ma in quel caso dovrai installare MobSF e **genymotion** sul tuo host (una VM o Docker non funzionerà). _Nota: Devi **avviare prima una VM in genymotion** e **poi MobSF.**_\
**MobSF** può essere molto utile per l'**analisi dinamica** in **Android**, ma in quel caso dovrai installare MobSF e **genymotion** sul tuo host (una VM o Docker non funzioneranno). _Nota: Devi **avviare prima una VM in genymotion** e **poi MobSF.**_\
L'**analizzatore dinamico di MobSF** può:
- **Dump dei dati dell'applicazione** (URL, log, appunti, screenshot fatti da te, screenshot fatti da "**Exported Activity Tester**", email, database SQLite, file XML e altri file creati). Tutto questo viene fatto automaticamente tranne per gli screenshot, devi premere quando vuoi uno screenshot o devi premere "**Exported Activity Tester**" per ottenere screenshot di tutte le attività esportate.
@ -548,11 +549,11 @@ Dalle versioni di Android **> 5**, avvierà **automaticamente Frida** e imposter
**Frida**
Per impostazione predefinita, utilizzerà anche alcuni script Frida per **bypassare SSL pinning**, **rilevamento root** e **rilevamento debugger** e per **monitorare API interessanti**.\
Per impostazione predefinita, utilizzerà anche alcuni script Frida per **bypassare il pinning SSL**, **rilevamento del root** e **rilevamento del debugger** e per **monitorare API interessanti**.\
MobSF può anche **invocare attività esportate**, acquisire **screenshot** di esse e **salvarle** per il rapporto.
Per **iniziare** il test dinamico premi il pulsante verde: "**Start Instrumentation**". Premi "**Frida Live Logs**" per vedere i log generati dagli script Frida e "**Live API Monitor**" per vedere 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 Frida** (per inviare i risultati dei tuoi script di venerdì a MobSF usa la funzione `send()`). Ha anche **diversi script pre-scritti** che puoi caricare (puoi aggiungerne di più in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), basta **selezionarli**, premere "**Load**" e premere "**Start Instrumentation**" (sarai in grado di vedere i log di quegli script all'interno di "**Frida Live Logs**").
MobSF consente anche di caricare i propri **script Frida** (per inviare i risultati dei tuoi script Frida a MobSF usa la funzione `send()`). Ha anche **diversi script pre-scritti** che puoi caricare (puoi aggiungerne di più in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), basta **selezionarli**, premere "**Load**" e premere "**Start Instrumentation**" (sarai in grado di vedere i log di quegli script all'interno di "**Frida Live Logs**").
![](<../../images/image (419).png>)
@ -625,7 +626,7 @@ 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 in Windows, MacOS X e Linux, che analizza i file _.apk_ in cerca di vulnerabilità. Fa questo decomprimendo gli APK e applicando una serie di regole per rilevare quelle vulnerabilità.
SUPER è un'applicazione da riga di comando che può essere utilizzata in Windows, MacOS X e Linux, che analizza i file _.apk_ in cerca di vulnerabilità. Lo fa decomprimendo gli APK e applicando una serie di regole per rilevare quelle vulnerabilità.
Tutte le regole sono centrate in un file `rules.json`, e ogni azienda o tester può creare le proprie regole per analizzare ciò di cui hanno bisogno.
@ -657,9 +658,9 @@ androbugs.exe -f [APK file]
**Androwarn** è uno strumento il cui obiettivo principale è rilevare e avvisare l'utente riguardo a potenziali comportamenti malevoli sviluppati da un'applicazione Android.
Il rilevamento viene eseguito con l'**analisi statica** del bytecode Dalvik dell'applicazione, rappresentato come **Smali**, con la libreria [`androguard`](https://github.com/androguard/androguard).
Il rilevamento viene effettuato con l'**analisi statica** del bytecode Dalvik dell'applicazione, rappresentato come **Smali**, utilizzando la libreria [`androguard`](https://github.com/androguard/androguard).
Questo strumento cerca **comportamenti comuni di applicazioni "cattive"** come: esfiltrazione di identificatori di telefonia, intercettazione di flussi audio/video, modifica dei dati PIM, esecuzione di codice arbitrario...
Questo strumento cerca **comportamenti comuni delle applicazioni "cattive"** come: esfiltrazione di identificatori di telefonia, intercettazione di flussi audio/video, modifica dei dati PIM, esecuzione di codice arbitrario...
```
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
```
@ -688,7 +689,7 @@ Nota che a seconda del servizio e della configurazione che utilizzi per offuscar
### [ProGuard](<https://en.wikipedia.org/wiki/ProGuard_(software)>)
Da [Wikipedia](<https://en.wikipedia.org/wiki/ProGuard_(software)>): **ProGuard** è uno strumento open source da riga di comando che riduce, ottimizza e offusca il codice Java. È in grado di ottimizzare il bytecode e di rilevare e rimuovere istruzioni non utilizzate. ProGuard è software gratuito ed è distribuito sotto la GNU General Public License, versione 2.
Da [Wikipedia](<https://en.wikipedia.org/wiki/ProGuard_(software)>): **ProGuard** è uno strumento da riga di comando open source che riduce, ottimizza e offusca il codice Java. È in grado di ottimizzare il bytecode e di rilevare e rimuovere istruzioni non utilizzate. ProGuard è software gratuito ed è distribuito sotto la GNU General Public License, versione 2.
ProGuard è distribuito come parte dell'Android SDK e viene eseguito durante la costruzione dell'applicazione in modalità release.
@ -710,13 +711,13 @@ Trova una guida passo-passo per deoffuscare l'apk in [https://blog.lexfo.fr/dexg
Puoi caricare un APK offuscato sulla loro piattaforma.
### [Deobfuscate android App](https://github.com/In3tinct/deobfuscate-android-app)
### [Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app
Questo è uno strumento LLM per trovare potenziali vulnerabilità di sicurezza nelle app Android e deoffuscare il codice delle app Android. Utilizza l'API pubblica di Google Gemini.
Questo è uno strumento LLM per trovare potenziali vulnerabilità di sicurezza nelle app android e deoffuscare il codice delle app android. Utilizza l'API pubblica di Google Gemini.
### [Simplify](https://github.com/CalebFenton/simplify)
È un **deoffuscatore android generico.** Simplify **esegue virtualmente un'app** per comprendere il suo comportamento e poi **cerca di ottimizzare il codice** in modo che si comporti in modo identico ma sia più facile da comprendere per un umano. Ogni tipo di ottimizzazione è semplice e generico, quindi non importa quale tipo specifico di offuscazione venga utilizzato.
È un **deoffuscatore android generico.** Simplify **esegue virtualmente un'app** per comprendere il suo comportamento e poi **cerca di ottimizzare il codice** in modo che si comporti in modo identico ma sia più facile da comprendere per un umano. Ogni tipo di ottimizzazione è semplice e generico, quindi non importa quale sia il tipo specifico di offuscazione utilizzato.
### [APKiD](https://github.com/rednaga/APKiD)
@ -724,7 +725,7 @@ APKiD ti fornisce informazioni su **come è stato creato un APK**. Identifica mo
### Manuale
[Leggi questo tutorial per imparare alcuni trucchi su **come fare il reverse engineering di offuscazioni personalizzate**](manual-deobfuscation.md)
[Leggi questo tutorial per imparare alcuni trucchi su **come fare reverse engineering di offuscazioni personalizzate**](manual-deobfuscation.md)
## Laboratori

View File

@ -0,0 +1,145 @@
# Android Accessibility Service Abuse
{{#include ../../banners/hacktricks-training.md}}
## Overview
`AccessibilityService` è stato creato per aiutare gli utenti con disabilità a interagire con i dispositivi Android. Sfortunatamente, le stesse **API di automazione potenti** (navigazione globale, input di testo, invio di gesti, finestre sovrapposte…) possono essere utilizzate dai malware per ottenere **il completo controllo remoto** del dispositivo _senza privilegi di root_.
I moderni trojan bancari Android e i Trojan di accesso remoto (RAT) come **PlayPraetor, SpyNote, BrasDex, SOVA, ToxicPanda** e molti altri seguono la stessa ricetta:
1. Ingegnere sociale la vittima per abilitare un servizio di accessibilità malevolo (il permesso *BIND_ACCESSIBILITY_SERVICE* è considerato "ad alto rischio" e richiede un'azione esplicita da parte dell'utente).
2. Sfruttare il servizio per
* catturare ogni evento UI e testo che appare sullo schermo,
* iniettare gesti sintetici (`dispatchGesture`) e azioni globali (`performGlobalAction`) per automatizzare qualsiasi compito desiderato dall'operatore,
* disegnare sovrapposizioni a schermo intero sopra app legittime utilizzando il tipo di finestra **TYPE_ACCESSIBILITY_OVERLAY** (nessun prompt `SYSTEM_ALERT_WINDOW`!),
* concedere silenziosamente ulteriori permessi di runtime cliccando sulle finestre di dialogo di sistema a nome della vittima.
3. Esfiltrare dati o eseguire **On-Device-Fraud (ODF)** in tempo reale mentre l'utente guarda uno schermo perfettamente normale.
---
## Requesting the permission
```xml
<!-- AndroidManifest.xml -->
<service
android:name="com.evil.rat.EvilService"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
android:exported="false">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data android:name="android.accessibilityservice"
android:resource="@xml/evil_accessibility_config"/>
</service>
```
Il file XML di accompagnamento definisce come apparirà la finestra di dialogo falsa:
```xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/service_description"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackGeneric"
android:notificationTimeout="200"
android:canPerformGestures="true"
android:canRetrieveWindowContent="true"/>
```
---
## Primitivi di automazione UI remota
```java
public class EvilService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
// harvest text or detect foreground app change
}
// Simulate HOME / BACK / RECENTS …
private void navHome() { performGlobalAction(GLOBAL_ACTION_HOME); }
private void navBack() { performGlobalAction(GLOBAL_ACTION_BACK); }
private void openRecents() { performGlobalAction(GLOBAL_ACTION_RECENTS); }
// Generic tap / swipe
public void tap(float x, float y) {
Path p = new Path(); p.moveTo(x, y);
GestureDescription.StrokeDescription s = new GestureDescription.StrokeDescription(p, 0, 50);
dispatchGesture(new GestureDescription.Builder().addStroke(s).build(), null, null);
}
}
```
Con solo queste due API, un attaccante può:
* Sbloccare lo schermo, aprire l'app bancaria, navigare nell'albero dell'interfaccia utente e inviare un modulo di trasferimento.
* Accettare ogni dialogo di autorizzazione che appare.
* Installare/aggiornare APK extra tramite l'intento del Play Store.
---
## Modelli di abuso
### 1. Overlay Phishing (Raccolta di credenziali)
Un `WebView` trasparente o opaco viene aggiunto al gestore delle finestre:
```java
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
MATCH_PARENT, MATCH_PARENT,
TYPE_ACCESSIBILITY_OVERLAY, // ⬅ bypasses SYSTEM_ALERT_WINDOW
FLAG_NOT_FOCUSABLE | FLAG_NOT_TOUCH_MODAL, // touches still reach the real app
PixelFormat.TRANSLUCENT);
wm.addView(phishingView, lp);
```
La vittima digita le credenziali nel modulo falso mentre l'app in background riceve gli stessi gesti non viene mai mostrato alcun avviso sospetto "disegna sopra altre app".
> Esempio dettagliato: la sezione *Accessibility Overlay Phishing* all'interno della pagina Tapjacking.
### 2. Automazione della frode su dispositivo
Famiglie di malware come **PlayPraetor** mantengono un canale WebSocket persistente dove l'operatore può emettere comandi di alto livello (`init`, `update`, `alert_arr`, `report_list`, …). Il servizio traduce questi comandi nei gesti di basso livello sopra, ottenendo transazioni non autorizzate in tempo reale che aggirano facilmente l'autenticazione a più fattori legata a quel dispositivo.
### 3. Streaming e monitoraggio dello schermo
Combinando l'**API MediaProjection** con una libreria client RTMP, il RAT può trasmettere il framebuffer live a `rtmp://<c2>:1935/live/<device_id>`, dando all'avversario una perfetta consapevolezza situazionale mentre il motore di Accessibilità gestisce l'interfaccia utente.
---
## PlayPraetor flusso di comando e controllo
1. **Heartbeat HTTP(S)** iterare su un elenco hard-coded fino a quando un dominio risponde `POST /app/searchPackageName` con il C2 attivo.
2. **WebSocket (porta 8282)** comandi JSON bidirezionali:
* `update` inviare nuove conf/APK
* `alert_arr` configurare modelli di overlay
* `report_list` inviare l'elenco dei nomi dei pacchetti mirati
* `heartbeat_web` keep-alive
3. **RTMP (porta 1935)** streaming live di schermo/video.
4. **Esfiltrazione REST**
* `/app/saveDevice` (impronta)
* `/app/saveContacts` | `/app/saveSms` | `/app/uploadImageBase64`
* `/app/saveCardPwd` (credenziali bancarie)
Il **AccessibilityService** è il motore locale che trasforma quei comandi cloud in interazioni fisiche.
---
## Rilevamento di servizi di accessibilità malevoli
* `adb shell settings get secure enabled_accessibility_services`
* Impostazioni → Accessibilità → *Servizi scaricati* cercare app che **non** provengono da Google Play.
* Le soluzioni MDM / EMM possono imporre `ACCESSIBILITY_ENFORCEMENT_DEFAULT_DENY` (Android 13+) per bloccare i servizi sideloaded.
* Analizzare i servizi in esecuzione:
```bash
adb shell dumpsys accessibility | grep "Accessibility Service"
```
---
## Raccomandazioni di indurimento per gli sviluppatori di app
* Contrassegnare le viste sensibili con `android:accessibilityDataSensitive="accessibilityDataPrivateYes"` (API 34+).
* Combinare `setFilterTouchesWhenObscured(true)` con `FLAG_SECURE` per prevenire il dirottamento di tap/overlay.
* Rilevare overlay interrogando `WindowManager.getDefaultDisplay().getFlags()` o l'API `ViewRootImpl`.
* Rifiutare di operare quando `Settings.canDrawOverlays()` **o** un servizio di Accessibilità non fidato è attivo.
---
## Riferimenti
* [PlayPraetors evolving threat: How Chinese-speaking actors globally scale an Android RAT](https://www.cleafy.com/cleafy-labs/playpraetors-evolving-threat-how-chinese-speaking-actors-globally-scale-an-android-rat)
* [Android accessibility documentation Automating UI interaction](https://developer.android.com/guide/topics/ui/accessibility/service)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -2,6 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
## **Informazioni di base**
**Tapjacking** è un attacco in cui un **applicazione** **maligna** viene lanciata e **si posiziona sopra un'applicazione vittima**. Una volta che oscura visibilmente l'app vittima, la sua interfaccia utente è progettata in modo da ingannare l'utente a interagire con essa, mentre passa l'interazione all'app vittima.\
@ -9,7 +10,7 @@ In effetti, sta **accecato l'utente dal sapere che sta effettivamente eseguendo
### Rilevamento
Per rilevare app vulnerabili a questo attacco, dovresti cercare **attività esportate** nel manifest android (nota che un'attività con un intent-filter è automaticamente esportata per impostazione predefinita). Una volta trovate le attività esportate, **controlla se richiedono qualche permesso**. Questo perché l'**applicazione maligna avrà bisogno di quel permesso**.
Per rilevare app vulnerabili a questo attacco, dovresti cercare **attività esportate** nel manifesto android (nota che un'attività con un intent-filter è automaticamente esportata per impostazione predefinita). Una volta trovate le attività esportate, **controlla se richiedono qualche permesso**. Questo perché l'**applicazione maligna avrà bisogno di quel permesso**.
Puoi anche controllare la versione SDK minima dell'app, verificando il valore di **`android:minSdkVersion`** nel file **`AndroidManifest.xml`**. Se il valore è **inferiore a 30**, l'app è vulnerabile al Tapjacking.
@ -100,6 +101,12 @@ wm.addView(phishingView, lp);
- Disabilitare *Installa da fonti sconosciute* e *Accessibilità per app non attendibili*.
- Applicare PlayProtect e dispositivi aggiornati.
Per ulteriori dettagli su come sfruttare i Servizi di Accessibilità per il controllo remoto completo del dispositivo (ad es. PlayPraetor, SpyNote, ecc.) vedere:
{{#ref}}
accessibility-services-abuse.md
{{#endref}}
## Riferimenti
* [Bitsight ToxicPanda Android Banking Malware 2025 Study](https://www.bitsight.com/blog/toxicpanda-android-banking-malware-2025-study)