diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 088f962ff..4a374c24d 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -32,6 +32,7 @@ - [Clone a Website](generic-methodologies-and-resources/phishing-methodology/clone-a-website.md) - [Detecting Phishing](generic-methodologies-and-resources/phishing-methodology/detecting-phising.md) - [Discord Invite Hijacking](generic-methodologies-and-resources/phishing-methodology/discord-invite-hijacking.md) + - [Mobile Phishing Malicious Apps](generic-methodologies-and-resources/phishing-methodology/mobile-phishing-malicious-apps.md) - [Phishing Files & Documents](generic-methodologies-and-resources/phishing-methodology/phishing-documents.md) - [Basic Forensic Methodology](generic-methodologies-and-resources/basic-forensic-methodology/README.md) - [Baseline Monitoring](generic-methodologies-and-resources/basic-forensic-methodology/file-integrity-monitoring.md) diff --git a/src/generic-methodologies-and-resources/phishing-methodology/README.md b/src/generic-methodologies-and-resources/phishing-methodology/README.md index b9198fcb0..a9a4ed8a5 100644 --- a/src/generic-methodologies-and-resources/phishing-methodology/README.md +++ b/src/generic-methodologies-and-resources/phishing-methodology/README.md @@ -6,7 +6,7 @@ 1. Riconoscere la vittima 1. Selezionare il **dominio della vittima**. -2. Eseguire alcune basi di enumerazione web **cercando portali di accesso** utilizzati dalla vittima e **decidere** quale impersonare. +2. Eseguire alcune enumerazioni web di base **cercando portali di accesso** utilizzati dalla vittima e **decidere** quale impersonare. 3. Utilizzare alcune **OSINT** per **trovare email**. 2. Preparare l'ambiente 1. **Acquistare il dominio** che si intende utilizzare per la valutazione di phishing @@ -22,17 +22,17 @@ ### Tecniche di Variazione del Nome di Dominio - **Parola chiave**: Il nome di dominio **contiene** una **parola chiave** importante del dominio originale (es., zelster.com-management.com). -- **sottodominio con trattino**: Cambiare il **punto in un trattino** di un sottodominio (es., www-zelster.com). +- **sottodominio con trattino**: Cambiare il **punto con un trattino** di un sottodominio (es., www-zelster.com). - **Nuovo TLD**: Stesso dominio utilizzando un **nuovo TLD** (es., zelster.org) - **Omo-glyph**: **sostituisce** una lettera nel nome di dominio con **lettere che sembrano simili** (es., zelfser.com). - **Trasposizione:** **scambia due lettere** all'interno del nome di dominio (es., zelsetr.com). -- **Singolarizzazione/Plurale**: Aggiunge o rimuove “s” alla fine del nome di dominio (es., zeltsers.com). +- **Singolarizzazione/Pluralizzazione**: Aggiunge o rimuove “s” alla fine del nome di dominio (es., zeltsers.com). - **Omissione**: **rimuove una** delle lettere dal nome di dominio (es., zelser.com). - **Ripetizione:** **ripete una** delle lettere nel nome di dominio (es., zeltsser.com). - **Sostituzione**: Come l'omo-glyph ma meno furtivo. Sostituisce una delle lettere nel nome di dominio, forse con una lettera vicina alla lettera originale sulla tastiera (es., zektser.com). - **Sottodominio**: Introduce un **punto** all'interno del nome di dominio (es., ze.lster.com). - **Inserimento**: **inserisce una lettera** nel nome di dominio (es., zerltser.com). -- **Punto mancante**: Aggiungere il TLD al nome di dominio. (es., zelstercom.com) +- **Punto mancante**: Aggiunge il TLD al nome di dominio. (es., zelstercom.com) **Strumenti Automatici** @@ -53,7 +53,7 @@ Quando questo concetto è **applicato alle richieste DNS**, è possibile che il Ad esempio, una singola modifica di bit nel dominio "windows.com" può cambiarlo in "windnws.com." -Gli attaccanti possono **sfruttare questo registrando più domini di bit-flipping** simili a quello della vittima. La loro intenzione è reindirizzare gli utenti legittimi alla propria infrastruttura. +Gli attaccanti possono **sfruttare questo registrando più domini con bit-flipping** simili a quello della vittima. La loro intenzione è reindirizzare gli utenti legittimi alla propria infrastruttura. Per ulteriori informazioni leggi [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/) @@ -91,7 +91,7 @@ ssh -L 3333:127.0.0.1:3333 @ **Configurazione del certificato TLS** -Prima di questo passaggio, dovresti **aver già acquistato il dominio** che intendi utilizzare e deve **puntare** all'**IP del VPS** dove stai configurando **gophish**. +Prima di questo passaggio dovresti aver **già acquistato il dominio** che intendi utilizzare e deve **puntare** all'**IP del VPS** dove stai configurando **gophish**. ```bash DOMAIN="" wget https://dl.eff.org/certbot-auto @@ -239,7 +239,7 @@ Puoi usare [https://www.spfwizard.net/](https://www.spfwizard.net) per generare ![](<../../images/image (1037).png>) -Questo è il contenuto che deve essere impostato all'interno di un record TXT nel dominio: +Questo è il contenuto che deve essere impostato all'interno di un record TXT all'interno del dominio: ```bash v=spf1 mx a ip4:ip.ip.ip.ip ?all ``` @@ -264,7 +264,7 @@ Questo tutorial si basa su: [https://www.digitalocean.com/community/tutorials/ho > v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB > ``` -### Testa il punteggio di configurazione della tua email +### Testa il punteggio della tua configurazione email Puoi farlo usando [https://www.mail-tester.com/](https://www.mail-tester.com)\ Basta accedere alla pagina e inviare un'email all'indirizzo che ti forniscono: @@ -339,7 +339,7 @@ Nota che **per aumentare la credibilità dell'email**, è consigliato utilizzare - Invia un'email a un **indirizzo inesistente** e controlla se la risposta ha qualche firma. - Cerca **email pubbliche** come info@ex.com o press@ex.com o public@ex.com e invia loro un'email e aspetta la risposta. -- Prova a contattare **alcune email valide scoperte** e aspetta la risposta. +- Prova a contattare **qualche email valida scoperta** e aspetta la risposta. ![](<../../images/image (80).png>) @@ -356,13 +356,13 @@ Nota che **per aumentare la credibilità dell'email**, è consigliato utilizzare ![](<../../images/image (826).png>) > [!TIP] -> Di solito dovrai modificare il codice HTML della pagina e fare alcuni test in locale (magari utilizzando un server Apache) **fino a quando non ti piacciono i risultati.** Poi, scrivi quel codice HTML nella casella.\ +> Di solito dovrai modificare il codice HTML della pagina e fare alcuni test in locale (magari usando un server Apache) **fino a quando non ti piacciono i risultati.** Poi, scrivi quel codice HTML nella casella.\ > Nota che se hai bisogno di **utilizzare alcune risorse statiche** per l'HTML (magari alcune pagine CSS e JS) puoi salvarle in _**/opt/gophish/static/endpoint**_ e poi accedervi da _**/static/\**_ > [!TIP] -> Per il reindirizzamento potresti **reindirizzare gli utenti alla legittima pagina web principale** della vittima, o reindirizzarli a _/static/migration.html_ per esempio, mettere qualche **ruota che gira (**[**https://loading.io/**](https://loading.io)**) per 5 secondi e poi indicare che il processo è stato completato con successo**. +> Per il reindirizzamento potresti **reindirizzare gli utenti alla legittima pagina principale** della vittima, o reindirizzarli a _/static/migration.html_ per esempio, mettere qualche **ruota che gira (**[**https://loading.io/**](https://loading.io)**) per 5 secondi e poi indicare che il processo è stato completato con successo**. -### Utenti e Gruppi +### Utenti & Gruppi - Imposta un nome - **Importa i dati** (nota che per utilizzare il modello per l'esempio hai bisogno del nome, cognome e indirizzo email di ogni utente) @@ -378,7 +378,7 @@ Nota che il **Profilo di Invio consente di inviare un'email di prova per vedere ![](<../../images/image (192).png>) > [!TIP] -> Ti consiglio di **inviare le email di prova a indirizzi di 10min mail** per evitare di essere inserito in blacklist durante i test. +> Ti consiglio di **inviare le email di prova a indirizzi di 10min mail** per evitare di essere inserito nella blacklist durante i test. Una volta che tutto è pronto, lancia semplicemente la campagna! @@ -390,9 +390,9 @@ Se per qualche motivo desideri clonare il sito web, controlla la seguente pagina clone-a-website.md {{#endref}} -## Documenti e File Backdoor +## Documenti & File con Backdoor -In alcune valutazioni di phishing (principalmente per Red Teams) vorrai anche **inviare file contenenti qualche tipo di backdoor** (magari un C2 o semplicemente qualcosa che attivi un'autenticazione).\ +In alcune valutazioni di phishing (principalmente per Red Teams) vorrai anche **inviare file contenenti qualche tipo di backdoor** (magari un C2 o magari solo qualcosa che attivi un'autenticazione).\ Controlla la seguente pagina per alcuni esempi: {{#ref}} @@ -403,18 +403,18 @@ phishing-documents.md ### Via Proxy MitM -L'attacco precedente è piuttosto astuto poiché stai simulando un vero sito web e raccogliendo le informazioni fornite dall'utente. Sfortunatamente, se l'utente non ha inserito la password corretta o se l'applicazione che hai simulato è configurata con 2FA, **queste informazioni non ti permetteranno di impersonare l'utente ingannato**. +L'attacco precedente è piuttosto astuto poiché stai falsificando un sito web reale e raccogliendo le informazioni fornite dall'utente. Sfortunatamente, se l'utente non ha inserito la password corretta o se l'applicazione che hai falsificato è configurata con 2FA, **queste informazioni non ti permetteranno di impersonare l'utente ingannato**. Qui è dove strumenti come [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) e [**muraena**](https://github.com/muraenateam/muraena) sono utili. Questo strumento ti permetterà di generare un attacco simile a MitM. Fondamentalmente, gli attacchi funzionano nel seguente modo: -1. Tu **impersoni il modulo di accesso** della vera pagina web. -2. L'utente **invia** le sue **credenziali** alla tua pagina falsa e lo strumento le invia alla vera pagina web, **controllando se le credenziali funzionano**. -3. Se l'account è configurato con **2FA**, la pagina MitM chiederà di inserirlo e una volta che l'**utente lo introduce**, lo strumento lo invierà alla vera pagina web. +1. Tu **impersoni il modulo di accesso** della pagina web reale. +2. L'utente **invia** le sue **credenziali** alla tua pagina falsa e lo strumento le invia alla pagina web reale, **controllando se le credenziali funzionano**. +3. Se l'account è configurato con **2FA**, la pagina MitM chiederà di inserirlo e una volta che l'**utente lo introduce**, lo strumento lo invierà alla pagina web reale. 4. Una volta che l'utente è autenticato, tu (come attaccante) avrai **catturato le credenziali, il 2FA, il cookie e qualsiasi informazione** di ogni interazione mentre lo strumento sta eseguendo un MitM. ### Via VNC -E se invece di **inviare la vittima a una pagina malevola** con lo stesso aspetto di quella originale, la invii a una **sessione VNC con un browser connesso alla vera pagina web**? Sarai in grado di vedere cosa fa, rubare la password, il MFA utilizzato, i cookie...\ +E se invece di **inviare la vittima a una pagina malevola** con lo stesso aspetto di quella originale, la invii a una **sessione VNC con un browser connesso alla pagina web reale**? Sarai in grado di vedere cosa fa, rubare la password, il MFA utilizzato, i cookie...\ Puoi fare questo con [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) ## Rilevare la rilevazione @@ -436,12 +436,18 @@ Usa [**Phishious** ](https://github.com/Rices/Phishious) per valutare se la tua ## Hijacking degli Appunti / Pastejacking -Gli attaccanti possono silenziosamente copiare comandi malevoli negli appunti della vittima da una pagina web compromessa o typosquatted e poi ingannare l'utente a incollarli all'interno di **Win + R**, **Win + X** o una finestra del terminale, eseguendo codice arbitrario senza alcun download o allegato. +Gli attaccanti possono silenziosamente copiare comandi malevoli negli appunti della vittima da una pagina web compromessa o typosquatted e poi ingannare l'utente a incollarli dentro **Win + R**, **Win + X** o una finestra del terminale, eseguendo codice arbitrario senza alcun download o allegato. {{#ref}} clipboard-hijacking.md {{#endref}} +## Phishing Mobile & Distribuzione di App Malevole (Android & iOS) + +{{#ref}} +mobile-phishing-malicious-apps.md +{{#endref}} + ## Riferimenti - [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/) diff --git a/src/generic-methodologies-and-resources/phishing-methodology/mobile-phishing-malicious-apps.md b/src/generic-methodologies-and-resources/phishing-methodology/mobile-phishing-malicious-apps.md new file mode 100644 index 000000000..c9cdd4813 --- /dev/null +++ b/src/generic-methodologies-and-resources/phishing-methodology/mobile-phishing-malicious-apps.md @@ -0,0 +1,94 @@ +# Mobile Phishing & Malicious App Distribution (Android & iOS) + +{{#include ../../banners/hacktricks-training.md}} + +> [!INFO] +> Questa pagina tratta delle tecniche utilizzate dagli attori delle minacce per distribuire **APK Android malevoli** e **profili di configurazione mobile iOS** attraverso il phishing (SEO, ingegneria sociale, negozi falsi, app di incontri, ecc.). +> Il materiale è adattato dalla campagna SarangTrap esposta da Zimperium zLabs (2025) e da altre ricerche pubbliche. + +## Flusso di Attacco + +1. **Infrastruttura SEO/Phishing** +* Registrare dozzine di domini simili (incontri, condivisione cloud, servizio auto…). +– Utilizzare parole chiave e emoji nella lingua locale nell'elemento `` per posizionarsi su Google. +– Ospitare *sia* le istruzioni di installazione Android (`.apk`) che iOS sulla stessa pagina di atterraggio. +2. **Download Prima Fase** +* Android: link diretto a un APK *non firmato* o “negozio di terze parti”. +* iOS: `itms-services://` o link HTTPS semplice a un profilo **mobileconfig** malevolo (vedi sotto). +3. **Ingegneria Sociale Post-installazione** +* Al primo avvio, l'app chiede un **codice di invito / verifica** (illusione di accesso esclusivo). +* Il codice è **POSTato su HTTP** al Command-and-Control (C2). +* C2 risponde `{"success":true}` ➜ il malware continua. +* L'analisi dinamica di Sandbox / AV che non invia un codice valido non vede **comportamenti malevoli** (evasione). +4. **Abuso dei Permessi a Runtime** (Android) +* I permessi pericolosi vengono richiesti **solo dopo una risposta positiva dal C2**: +```xml +<uses-permission android:name="android.permission.READ_CONTACTS"/> +<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> +<uses-permission android:name="android.permission.READ_PHONE_STATE"/> +<!-- Le versioni più vecchie richiedevano anche permessi SMS --> +``` +* Le varianti recenti **rimuovono `<uses-permission>` per SMS da `AndroidManifest.xml`** ma lasciano il percorso del codice Java/Kotlin che legge gli SMS tramite riflessione ⇒ abbassa il punteggio statico pur rimanendo funzionale su dispositivi che concedono il permesso tramite abuso di `AppOps` o obiettivi vecchi. +5. **Interfaccia Facciata & Raccolta in Background** +* L'app mostra viste innocue (visualizzatore SMS, selettore galleria) implementate localmente. +* Nel frattempo, esfiltra: +- IMEI / IMSI, numero di telefono +- Dump completo di `ContactsContract` (array JSON) +- JPEG/PNG da `/sdcard/DCIM` compressi con [Luban](https://github.com/Curzibn/Luban) per ridurre le dimensioni +- Contenuto SMS opzionale (`content://sms`) +I payload sono **compressi in batch** e inviati tramite `HTTP POST /upload.php`. +6. **Tecnica di Consegna iOS** +* Un singolo **profilo di configurazione mobile** può richiedere `PayloadType=com.apple.sharedlicenses`, `com.apple.managedConfiguration`, ecc. per iscrivere il dispositivo in una supervisione simile a “MDM”. +* Istruzioni di ingegneria sociale: +1. Aprire Impostazioni ➜ *Profilo scaricato*. +2. Toccare *Installa* tre volte (screenshot sulla pagina di phishing). +3. Fidarsi del profilo non firmato ➜ l'attaccante ottiene i diritti su *Contatti* & *Foto* senza revisione dell'App Store. +7. **Livello di Rete** +* HTTP semplice, spesso sulla porta 80 con intestazione HOST come `api.<phishingdomain>.com`. +* `User-Agent: Dalvik/2.1.0 (Linux; U; Android 13; Pixel 6 Build/TQ3A.230805.001)` (no TLS → facile da individuare). + +## Test Difensivi / Suggerimenti per il Red-Team + +* **Bypass Analisi Dinamica** – Durante la valutazione del malware, automatizzare la fase del codice di invito con Frida/Objection per raggiungere il ramo malevolo. +* **Manifest vs. Diff a Runtime** – Confrontare `aapt dump permissions` con `PackageManager#getRequestedPermissions()` a runtime; la mancanza di permessi pericolosi è un campanello d'allarme. +* **Canarino di Rete** – Configurare `iptables -p tcp --dport 80 -j NFQUEUE` per rilevare picchi di POST non solidi dopo l'inserimento del codice. +* **Ispezione mobileconfig** – Utilizzare `security cms -D -i profile.mobileconfig` su macOS per elencare `PayloadContent` e individuare diritti eccessivi. + +## Idee di Rilevamento per il Blue-Team + +* **Trasparenza dei Certificati / Analisi DNS** per catturare picchi improvvisi di domini ricchi di parole chiave. +* **Regex User-Agent & Path**: `(?i)POST\s+/(check|upload)\.php` da client Dalvik al di fuori di Google Play. +* **Telemetria Codice di Invito** – POST di codici numerici di 6–8 cifre poco dopo l'installazione dell'APK può indicare staging. +* **Firma MobileConfig** – Bloccare profili di configurazione non firmati tramite politica MDM. + +## Utili Frida Snippet: Auto-Bypass Codice di Invito +```python +# frida -U -f com.badapp.android -l bypass.js --no-pause +# Hook HttpURLConnection write to always return success +Java.perform(function() { +var URL = Java.use('java.net.URL'); +URL.openConnection.implementation = function() { +var conn = this.openConnection(); +var HttpURLConnection = Java.use('java.net.HttpURLConnection'); +if (Java.cast(conn, HttpURLConnection)) { +conn.getResponseCode.implementation = function(){ return 200; }; +conn.getInputStream.implementation = function(){ +return Java.use('java.io.ByteArrayInputStream').$new("{\"success\":true}".getBytes()); +}; +} +return conn; +}; +}); +``` +## Indicatori (Generici) +``` +/req/checkCode.php # invite code validation +/upload.php # batched ZIP exfiltration +LubanCompress 1.1.8 # "Luban" string inside classes.dex +``` +## Riferimenti + +- [The Dark Side of Romance: SarangTrap Extortion Campaign](https://zimperium.com/blog/the-dark-side-of-romance-sarangtrap-extortion-campaign) +- [Luban – Android image compression library](https://github.com/Curzibn/Luban) + +{{#include ../../banners/hacktricks-training.md}}