Un attacco di tipo pastejacking, come il nome stesso lascia intuire, consente ai criminal hacker di colpire le vittime sfruttando la classica funzionalità del “copia&incolla”, in particolar modo mentre navigano tra siti Web e social network.
Si tratta dunque di attacchi tra i più insidiosi poiché vanno a colpire dispositivi che non hanno protezioni adeguate, sfruttano le tecniche di social engineering e le errate security policy aziendali.
Indice degli argomenti
Attacco pastejacking: origini e metodologie
Diversi anni fa alcuni esperti informatici dimostrarono che era possibile sfruttare alcune istruzioni dei linguaggi HTML/CSS per aggiungere contenuti alla clipboard (gli appunti di sistema) senza che l’utente si accorgesse di nulla.
Molti sono i vettori per questo tipo di attacco che si sta evolvendo in fretta raffinando, al contempo, i metodi di hide che consentono di nasconderne le tracce. L’ultima variante individuata durante il 2018, ad esempio, si basava su script malevoli scritti in JavaScript.
Analizziamo dunque il funzionamento di un attacco pastejacking utilizzando un tool ampiamente usato: PasteJacking di Dylan Ayrey.
Analisi di un attacco pastejacking
I browser moderni permettono agli sviluppatori Web di aggiungere automaticamente dei contenuti nella clipboard degli utenti quando si verificano particolari condizioni. Questo metodo usa un JavaScript e può esser copiato dopo un evento.
Un PoC (Proof of Concept) di un codice d’esempio di questa particolare funzionalità è presente sul sito di Dylan Ayrey. Analizziamolo per comprendere come funziona.
In particolare, sulla pagina di esempio è possibile leggere questo testo:
“Copy the text below and run it in your terminal for totally not evil things to happen
echo “evil””
Se andiamo ad analizzare il sorgente della pagina scopriamo questo codice:
<html>
<body>
Copy the text below and run it in your terminal for totally not evil things to happen.
</br>
<p>echo “not evil”</p>
<script>
document.addEventListener(‘copy’, function(e){
console.log(e);
e.clipboardData.setData(‘text/plain’, ‘echo “evil”\r\n’);
e.preventDefault(); // We want our data, not data from any selection, to be written to the clipboard
});
</script>
</body>
</html>
In pratica, all’utente viene chiesto di copiare il testo echo “no evil” e successivamente incollarlo (Ctrl+V) in una finestra del terminale (in ambiente Windows è il Prompt dei comandi o la PwerShell).
In realtà, l’operazione di selezione e copia del testo (mediante la combinazione di tasti Ctrl+C) sulla pagina HTML non fa altro che avviare l’esecuzione del codice il cui risultato è quello di copiare negli appunti dell’utente, a sua insaputa ed in maniera assolutamente invisibile, il testo echo “evil”\n.
Il parametro \n (newline) fa sì che il comando venga eseguito automaticamente una volta “incollato” nel terminale senza che l’utente prema invio, ergo l’utente non vede cosa ha copiato prima di eseguirlo.
Le implicazioni sono molteplici come molteplici sono le tecniche di social engineering e di phishing utilizzate dai criminal hacker per ingannare l’utente e convincerlo a copiare un testo da una pagina Web o da un post sui social network.
Uno scenario possibile di attacco potrebbe essere il seguente.
La vittima apre una pagina HTML gestita dal criminal hacker (nel nostro esempio, è la pagina precedente gestita mediante il tool di hacking PasteJacking) nella quale c’è scritto:
“La password di admin è 123456”
oppure
“questa la stringa per installare la patch”
La vittima copia la password ma il contenuto degli appunti, cioè della clipboard, viene rimpiazzato con quello malevolo nascosto dal criminal hacker nella pagina Web compromessa.
Successivamente, la vittima è convinta di incollare il testo nel terminale (o comunque in una finestra di esecuzione), ma in realtà dagli appunti viene estratto il codice malevolo che viene immediatamente eseguito senza richiedere alcuna interazione da parte della vittima stessa, che così non ha modo di vedere cosa è stato realmente copiato.
L’unico risultato di questa operazione è che l’utente vede una schermata vuota del terminale ed è indotto a pensare che qualcosa sia andato storto. Nel frattempo, invece, è stato eseguito il codice malevolo che, ad esempio, può avviare una sessione della shell Meterpreter.
I metodi utilizzati per ingannare l’utente
Il tool PasteJacking utilizzato in questo esempio (ma ovviamente il concetto può essere esteso a qualsiasi tool malevolo utilizzabile dai criminal hacker in uno scenario reale di attacco) usa 3 metodi per ingannare l’utente a copiare il payload:
- un codice JavaScript per fare l’hook all’evento copia e rimpiazzarlo con dati differenti;
- un attributo span style per nascondere le linee malicious dall’esser sovrascritti;
- uno span style ma questa volta fa in modo che il testo sia trasparente e non-markable.
Ognuno di questi metodi ha i suoi pro e contro: alcuni non funzionano con alcuni browser, altri necessitano di copiare tutto il testo presente nella pagina e altro ancora.
L’attacco deve esser studiato nei minimi particolari per avere un discreto successo.
C’è da dire, infine, che questo tipo di attacco non sembra funzionare con Safari Browser e OSX terminal.
Come prevenire un attacco pastejacking
Da quanto visto finora è evidente che per non rimanere vittime di un attacco pastejacking è sufficiente mettere in sicurezza il proprio browser.
Nel caso di Firefox l’utilizzo di un addon come NoScript con cui bloccare l’esecuzione automatica di qualunque script, non è sufficiente a prevenire questo tipo di attacco.
Una delle cose da fare è sicuramente aggiornare la Bash (o il terminale, a seconda del sistema operativo utilizzato) almeno alla versione 4.4+ e abilitare l’opzione:
enable-bracketed-paste
In questa maniera, ogni volta che viene copiato da Internet qualcosa, nella shell non viene eseguita automaticamente.
Per abilitarlo, è sufficiente aggiungere la riga seguente:
set enable-bracketed-paste on in ~/.inputrc
Inoltre, per difenderci da un attacco pastejackig è utile uno script come pp che consente di vedere ciò che viene copiato. Ad esempio, sempre usando la pagina di Dylan possiamo vedere:
aaron@aaron-pc:~$ pp
echo “evil”^M$
Execute? (y/n): n
aaron@aaron-pc:~$
Una buona policy di sicurezza, inoltre, consiste nell’utilizzare sempre Notepad (per gli utenti Windows) per tutto ciò che viene copiato da siti non trusted.
Non bisogna mai permettere agli utenti in azienda di andare su siti ad alto rischio (anche la posta personale lo è!).
In ambiente Windows, un metodo di prevenzione efficiente è sicuramente disabilitare l’esecuzione del comando cmd che serve ad avviare la shell ad utenti non admin.
È consigliabile attivare il PUA (Potentially Unwanted Applications, il controllo utente di Windows) creando una whitelist di applicazioni.
Per chi usa Chrome è invece possibile scaricare e installare l’estensione Hardened Paste.
Per finire, è utile assicurarsi che tutto quello che esce dalla rete locale sia autorizzato e che le policy siano disegnate per limitare e prevenire comunicazioni non autorizzate.