BRATA malware per dispositivi Android spacciato per AntiSPAM

10/09/2021

apk BRATA Intesa SanPaolo

Nel corso delle attività di monitoraggio il CERT-AGID ha rilevato un dominio di recente registrazione ai danni di clienti di banca Intesa San Paolo.

La pagina di phishing, in lingua italiana e accessibile solo tramite uno user-agent “Android”, è progettata per sottrarre le credenziali di accesso e salvarle in un file di testo all’interno di una cartella sullo stesso server”.

Da ulteriori analisi è emersa la presenza di una pagina denominata AntiSPAM attraverso la quale si invitano i clienti della banca a scaricare una applicazione per dispositivi Android denominata “AntiSPAM.apk

Come è possibile ipotizzare l’applicazione rilasciata non ha lo scopo di proteggere i clienti dallo spam ma di sottrarre loro ulteriori informazioni. Nello specifico si tratta di una variante del malware denominato BRATA rilevato per la prima volta nel 2020 all’interno di applicazioni presenti nel Play Store e successivamente veicolato tramite attacchi di social engineering.

Risultano invece recenti le evidenze dell’uso di BRATA in attività italiane, il malware (APK) è sempre lo stesso ma viene ricompilato con nuovi indirizzi e pubblicizzato attraverso domini di nuova registrazione.

Funzionalità di BRATA

Gestisce una serie di comandi tramite la funzione switchObjectToInt che utilizza un indice per enumerare il comando ottenuto e quindi saltare alla relativa istruzione.

Nel dettaglio, la lista dei comandi è la seguente:

(C0224BA.switchObjectToInt(this._cmd_receiver.Get("cmd_base"), "send_notify", "get_sms", "sms_get_default", "sms_set_default", "get_screen", "del_application", "del_protections", "check_initial", "intent_protect", "intent_system", "intent_overlay", "open_a11y", "open_over", "touch", "palavra", "go_home", "go_recent", "go_back", "get_application", "get_nodes", "del_overlay", "up_overlay", "up_app", "set_bright", "touch_click", "touch_decision", "text_decision", "puxanodetest", "click", "focus", "tudolog", "swipe_event_pattern", "swipe_event", "get_pattern", "run_tel", "run_pattern"))

I comandi vengono inviati al server tramite chiamate websocket da cui ricava ulteriori istruzioni.

In questo caso viene restituita la lista dei software Antivirus da verificare:

{
    "prop": "reader_request",
    "etype": "runFunction",
    "value": [
        {
            "list_avs": {
                "com.bitdefender.security": "not",
                "com.atvcleaner": "not",
                "com.pandasecurity.pandaav": "not",
                "com.zoner.android.antivirus": "not",
                "com.kbs.core.antivirus": "not",
                "com.quickheal.platform": "not",
                "com.antivirus": "not",
                "mans.antivirus.security": "not",
                "com.antivirus.mobilesecurity.viruscleaner.applock": "not",
                "org.malwarebytes.antimalware": "not",
                "com.drweb": "not",
                "com.lookout": "not",
                "com.avira.android": "not",
                "com.eset.ems2.gp": "not",
                "com.eset.etvs.gp": "not",
                "anywheresoftware.b4a.b4abridge_gg": "testeeee",
                "com.wsandroid.suite": "not",
                "com.symantec.mobilesecurity": "not",
                "com.cleanteam.onesecurity": "not",
                "com.avast.android.mobilesecurity": "not",
                "com.kaspersky.security.cloud": "not",
                "com.mobilesecurity.viruscleaner": "not",
                "com.kms.free": "not",
                "br.com.clickbit.b4apac": "testeeee",
                "com.bitdefender.antivirus": "not"
            },
            "cmd_base": "del_protections"
        }
    ]
}

Ad esempio, inviando il comando “del_protections” il server remoto risponde con le seguenti istruzioni:

{
	"type": "event",
	"event": "parse_request",
	"params": {
		"cmd_base": "protections_removed"
	}
} {
	"prop": "reader_request",
	"etype": "runFunction",
	"value": [{
		"telegram_host": "https:\/\/www.telegram.org\/Channel Telegrammmmm",
		"websocket_host": "ws:\/\/111.90.149.241:2001\/hakon",
		"packages_accept": [{
			"package": "com.nu.production",
			"inject_name": "nu_html_principal.html",
			"inject_update": "true",
			"inject_down": "http:\/\/192.168.10.106:2001\/injects\/google_html.inject"
		}, {
			"package": "com.whatsapp",
			"inject_name": "nu_html_principal.html",
			"inject_update": "true",
			"inject_down": "http:\/\/192.168.10.106:2001\/injects\/test_html.inject"
		}, {
			"package": "com.santander.din",
			"inject_name": "nu_html_principal.html",
			"inject_update": "true",
			"inject_down": "http:\/\/192.168.10.106:2001\/injects\/test_html.inject"
		}],
		"cmd_base": "check_initial"
	}]

Le pagine HTML ospitate nelle URL con IP interno “192.168.10.106” in realtà vengono risolte tramite l’IP pubblico inziale e rappresentano le pagine di phishing (Google, Bendigo Bank, Form generica di pagamenti tramite carta di credito) caricate tramite la funzione webinject.

BRATA dispone di una funzione “_send_vnc_image” utilizzata per inviare screenshot alla cartella “upload” dichiarata nella variabile “_link_upload_vnc” della funzione “_process_globals“.

L’app fa uso del servizio di accessibilità per compiere azioni autonomamente, come ad esempio la possibilità di ottenere i permessi.

Il malware utilizza la presenza e creazione di alcuni file per indicare alcune fasi dell’infezione. Il contenuto di questi file non è importante ma è curioso notare come questo sia “team-ira.com”.

Comandi del malware

send_notifyMostra una notifica con testo ed icona indicati dal C2
get_smsInvia al C2 gli ultimi N SMS
sms_get_defaultAvvia un’activity relativa agli SMS (lettura, composizione?)
Sembra che non sia ben implementato (l’activity è sempre nulla)
get_screenUsa il componente MediaProjectionManager per fare uno screenshot.
Tramite l’accessibility service abilita i permessi necessari in automatico.
L’immagine è salvata tramite l’endpoint /upload?cmd=image_vnc?res=[W]x[H]&android=[botId].
Notare che il parametro [botId] permette di scrivere su file semi-arbitrari sul C2, se X indica il botId, inviando una post all’endpoint upload, si può scrivere il contenuto sul file: /root/FileRccUpdate/www/users/X/vnc.png.
del_applicationCancella un’applicazione
del_protectionsCancella una lista di applicazioni (AV)
check_initialGenera e salva il botid e lo manda al C2
intent_protectControlla e disabilita Google Play Protect
intent_systemPermette all’applicazione di modificare le impostazioni di sistema
intent_overlayPermette all’app di mostrare overlay gestendo il caso di UI Xiomi
open_a11yMostra le impostazioni di accessibilità
open_overSimile a intent_overlay ma senza gestire UI Xiomi
touchNon sembra implementato.
Dovrebbe cliccare su un elemento il cui testo contiene una stringa data dal C2
palavraImposta la clipboard con un test dato dal C2
go_home, go_recent, go_backComandi per la navigazione tra le activity
get_applicationInvia la lista di applicazioni al C2
get_nodesInvia il testo contenuto nelle view della finestra attiva
del_overlay, up_overlayCancella/mostra una pagina di phishing
up_appAvvia un’applicazione
set_brightImposta la luminosità dello schermo come indicato dal C2
touch_clickSimula un click ad una posizione (x, y) nello schermo tramite il servizio
di accessibilità.
touch_decision, text_decisionControlla se un pulsante è premuto o una textview contiene il testo dato
puxanodetestInvia al C2 il desto di un elemento con id “debug”
click, focusClicca/Focus su un elemento con id dato
tudologNon è chiaro.
Legge il testo dagli elementi di nome “vamover”.
swipe_event_patternNon impleentato
swipe_eventSimula uno swipe da un punto ad un altro dello schermo
get_patternOttiene il pattern usato per lo sblocco del cell precedentemente
registrato tramite il servizio di accessibilità.
run_telChiama un numero/codice
run_patternProva a sbloccare il cell.

Servizio di accessibilità

Anche Brata fa uso di un servizio di accessibilità. Appena avviato chiede all’utente di abilitarlo:

Il malware si spaccia per un’applicazione di nome “Sicurezza dispositivo”.

Dopo aver attivato il servizio di accessibilità questo sarà usato per azioni automatiche.

Il malware mostrerà una finestra di caricamento con un testo che vuole indurre l’utente a credere che l’app stia effettuando delle verifiche di sicurezza.
Infine, si chiede e mostra un toast con scritto che tutte le verifiche hanno avuto successo.

Da questo momento l’app non è più apribile.

Conclusioni

L’app è sviluppata con anywhere software b4a mentre il C2 con b4j. Nonostante la lingua rilevata nelle stringhe di testo sembra essere porteghese, il target per cui è stata sfruttata è senza ombra di dubbio italiano. È la terza volta nel 2021 che il CERT-AGID individua il file AntiSPAM.apk veicolato tramite campagne di phishing indirizzate a istituti bancari italiani: il 3 giugno, il 6 luglio e il 10 settembre.

Il CERT-AGID ha provveduto ad allertare i diretti interessati e diramato gli indicatori di compromissione attraverso le proprie piattaforme a tutela della propria constituency.

Al fine di rendere pubblici i dettagli di questa campagna si riportano di seguito gli indicatori rilevati:

Link: Download IoC