Reversing Retefe - il Banking Trojan che si sta diffondendo in Svizzera - Hack Mur@Z

Breaking

giovedì, novembre 08, 2018

Reversing Retefe - il Banking Trojan che si sta diffondendo in Svizzera

introduzione

Circa un anno fa, è stato pubblicato sul blog del GovCert le informazioni a riguardoNon è cambiato molto dall'anno scorso, tranne che abbiamo assistito a un aumento delle corse di malspam nelle ultime due settimane e vogliamo sfruttare l'opportunità per mostrare come decodificare il malware di Retefe.
Iniziamo con un grafico delle corse di Retefe malspam, abbiamo visto negli ultimi 3 anni. Oltre a poche settimane, Retefe ha colpito la Svizzera con le onde di malspam più volte alla settimana. Sul lato destro del diagramma, è possibile vedere le società dalle quali gli hacker hanno impersonato i marchi per attirare utenti innocenti nell'aprire i documenti allegati o fare clic sui collegamenti.

Retefe Timeline
Retefe Timeline

Ma Retefe non si rivolge esclusivamente ai clienti di e-banking in Svizzera, ma anche in Liechtenstein, Austria e Norvegia, utilizzando temi malspam localizzati per motivare i destinatari di tali e-mail malspam ad aprire l'allegato e infettarsi con Retefe.

Modus Operandi

Spieghiamo brevemente il modus operandi e gli elementi dell'infrastruttura di Retefe dopo l'infezione del client:
  1. Se la vittima desidera connettersi a un sito Web di eBanking, il cliente viene reindirizzato tramite TOR al portale di eBanking fraudolento.
  2. Dopo che la vittima ha inserito le credenziali di eBanking, il sito Web visualizza un collegamento di download a un'app Android (se necessario per l'accesso) per il secondo fattore che verrà utilizzato per completare la sequenza di accesso.
  3. Il truffatore afferra le credenziali inserite.
  4. Il truffatore utilizza le credenziali immesse per impostare una sessione per la banca delle vittime ed emette un pagamento per un account specifico

Retefe Modus Operandi
Modus Operandi

Inversione del binario

Retefe viene solitamente fornito da un documento Microsoft Word dannoso con macro, che scarica ed esegue un binario x64. In questo post del blog ci concentriamo sull'eseguibile scaricato.
Analizzeremo un esempio di Retefe con il seguente hash SHA-1: 
184ec697c4151e8d90734e3d9a639b4c8d134825
Questo binario è anche chiaramente contrassegnato come Retefe su VirusTotal: 
VirusTotal Link

EAST

Iniziamo direttamente in IDA Pro, che inizialmente mostra il punto di ingresso del campione di malware:

Punto d'entrata
Punto d'entrata


Mentre percorriamo la prima parte del codice assembly, vediamo una chiamata a una funzione chiamata sub_7FF7313713A0(evidenziata nella schermata sopra). Fare doppio clic su questa funzione ci porta allo screenshot successivo che è già la parte più importante di questo binario.

GRATIS
GRATIS


Un'operazione XOR su una posizione di memoria all'interno di un loop è spesso indicativa di dati decodificati interessanti. Questo è il motivo per cui impostiamo un breakpoint F2in questa esatta posizione in IDA. Quindi proviamo e avvia il debugger con F9Il debugger si arresterà come previsto nel punto di interruzione. Quindi assegniamo la posizione di memoria che è decifrata nel loop: saltiamo su RBX(questo può essere diverso nel tuo caso) usando la finestra dei registri e aggiungiamo un marker ALT + mnella finestra di disassemblaggio di IDA.

registri
registri


Mark Position
Mark Position


Inserisci la descrizione del marchio
Inserisci la descrizione del marchio


Abbiamo chiamato il marcatore script, perché vorremmo sapere quale sarà in questa esatta posizione dopo la routine di decrittografia XOR. Ora possiamo tornare alla vista grafico ESC, rimuovere il punto di interruzione F2, posizionare il cursore dopo la routine di decrittografia loc_7FF731371413e premere F4(Esegui al cursore).

Rimuovi punto di interruzione
Rimuovi XOR Breakpoint


Ora possiamo supporre che il codice crittografato XOR sia decifrato e collocato nella posizione che abbiamo contrassegnato in precedenza. Il modo più semplice per verificare questa ipotesi è saltare alla posizione contrassegnata, che abbiamo chiamato script . Basta premere CTRL + me selezionare lo script . Questo ci porterà direttamente al codice decrittografato, dopo averlo convertito in una stringa ASCII (premere a):

Codice JavaScript
Codice JavaScript


Questo sembra molto promettente e sembra essere il codice JavaScript. Ora potremmo selezionare l'intero script e rimuovere i caratteri obsoleti oppure possiamo usare un piccolo script Python per estrarre tutti i caratteri del JavaScript:

export.py


ea = ScreenEA()
file_ = AskFile(1, "*.*", 'output file')
thestring = ""
while True:
    b = Byte(ea)
    if not b:
        break
    else:
        thestring += chr(b)
    ea += 1

with open(file_, 'wb') as w:
    w.write(thestring)
Per utilizzare lo script precedente, premiamo ALT + F7e selezioniamo lo script prima creato export.py.
Questo conclude il lavoro svolto in IDA Pro. Dopo aver decifrato il codice JavaScript, l'eseguibile eseguirà il codice con un motore di scripting JavaScript incorporato e terminerà. Nella prossima sezione analizzeremo il JavaScript.

Debug di JavaScript

Esistono molti strumenti per il debug di JavaScript, in particolare i browser Web. Per Retefe useremo il rhino come interprete di script. 
Prima di iniziare lo script con rhino, daremo un'occhiata al JavaScript. Una rapida occhiata ci mostra una funzione chiamata eval, che è sempre sospettosa e di solito significa che il codice è offuscato. Retefe utilizza la crittografia AES per nascondere il suo codice da rilevamento basato su firma e semplice analisi.
Craccare l'offuscamento è tuttavia banale: possiamo sostituire la evalfunzione con una semplice printed eseguire il codice con rhino in un ambiente unix. Conduciamo anche il risultato a js-beautify per ottenere un JavaScript ben formattato.

$ rhino exported.js | js-beautify -d | sed 's/\"\ +\ \"//g' > output.js
Se apriamo output.jsin un editor di testo, vediamo molte informazioni utili. 
Alcune parti interessanti dello script sono elencate di seguito:
Snippet di codiceDescrizione
["sanitized1.onion", "sanitized2.onion"]Domini di comunicazione TOR
this.InstallCert = function ()Installazione di un certificato di origine
String.Format ( "http://127.0.0.1:5555/{0}.js?ip={1}"Impostazione di un proxy pac
if (muilangs == 'en-US')Controllo della lingua MUI del SO -> Questo è interessante, perché solo i sistemi non en-US saranno infettati!
È possibile decodificare ulteriormente le parti codificate Base64 con il comando unix

$ echo "BASE64CODE" | base64 -d
e vedresti ancora di più! Ad esempio l'installazione di socks (socat), l'installazione di un client TOR, alcune connessioni FTP, il certificato (COMODO) stesso e molto altro.

Conclusione

Abbiamo cercato di mostrarti un modo semplice per decodificare manualmente un binario di Retefe. Retefe è un eccellente caso di studio per le persone che vorrebbero utilizzare IDA per la prima volta. 
Tutte le informazioni che abbiamo trovato nel binario invertendolo, possono anche essere facilmente estrapolate automaticamente semplicemente forzando la chiave XOR nell'eseguibile e eseguendo lo scripting dei comandi di Linux.












Fonte: GovCERT.ch (permalink)