From fc5d37950ba17b0ef51f83c6d3bc19d22852ff35 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 4 Aug 2025 18:44:51 +0000 Subject: [PATCH] Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's --- src/SUMMARY.md | 1 + .../android-app-pentesting/README.md | 81 +++++----- .../accessibility-services-abuse.md | 145 ++++++++++++++++++ .../android-app-pentesting/tapjacking.md | 9 +- 4 files changed, 195 insertions(+), 41 deletions(-) create mode 100644 src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ad779f71c..177fddcd7 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -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) diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index 7bf60b7c3..7d030e571 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -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 ) -**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 = ` `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 = ` `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]() -Da [Wikipedia](): **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](): **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 diff --git a/src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md b/src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md new file mode 100644 index 000000000..3e156d2ed --- /dev/null +++ b/src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md @@ -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 + + + + + + + + + +``` +Il file XML di accompagnamento definisce come apparirà la finestra di dialogo falsa: +```xml + + +``` +--- + +## 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://:1935/live/`, 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 +* [PlayPraetor’s 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}} diff --git a/src/mobile-pentesting/android-app-pentesting/tapjacking.md b/src/mobile-pentesting/android-app-pentesting/tapjacking.md index 840de4ce7..eb483a054 100644 --- a/src/mobile-pentesting/android-app-pentesting/tapjacking.md +++ b/src/mobile-pentesting/android-app-pentesting/tapjacking.md @@ -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)