HoneyPot componente hardware usato come trappola per attacchi informatici | Linuxiano.it
Privacy Policy

HoneyPot componente hardware usato come trappola per attacchi informatici

HoneyPot componente hardware usato come trappola per attacchi

L’era di Internet che stiamo vivendo ci vede costantemente sotto attacco da parte di malefici bot alla ricerca di vulnerabilità da sfruttare su tutti i dispositivi del mondo

Da sempre cerchiamo di difenderci da queste piaghe digitali, purtroppo però il progettatore dei sistemi di protezione non è sempre al passo coi tempi; il processo di mitigazione, che da sempre è stato quello di bloccare l’accesso (di IP, user-agent, vulnerabilità conosciute e tc…) parte dal presupposto che un bot non deve, in nessun modo, poter accedere a certe informazioni, bloccandolo quindi sulla soglia del server.

In diverse situazioni questo tipo di approccio si è rilevato fallimentare: da qui è nata l’idea di ritrattare il processo comportamentale di un bot, traendolo in inganno attraverso modelli comportamentali maligni (pattern) e di bloccarli una volta riconosciuta l’attività dannosa.

Gli HoneyPot (barattoli di miele) in rete riassumono perfettamente questo concetto: creare una trappola per il boot, di solito un file o un pach “succosi”, per poi imprigionarlo costringendolo a trovare altre falle fittizie o bloccarlo nel firewall. Sul piano della forma un HoneyPot non è tanto diverso da un comune servizio (come un web server) ed effettivamente ad una occhiata sembrerà davvero un servizio reale.

Il mollusco della rete

Cowrie è un HoneyPot SSH e Telnet in grado di creare log degli attacchi di forza bruta.

In questo articolo useremo Ubuntu Server ma ovviamente potremo utillizzare gli stessi comandi per qualunque altra distribuzione basata su Debian GNU/LINUX (e con i giusti accorgimenti, anche per le altre distro della famiglia del pingnino).

Per prima cosa assicuriamoci che la nostra distribuzione sia aggiornata: benchè Cowrie sia relativamente sicuro (ad oggi non esistono vulnerabilità che ne dimostrino falle pericolose ) è importante sapere che, dando accesso a una shell (anche virtuale), esiste una remota possibilità di poter sfruttare ulteriori falle del sistema:

Terminale
  • sudo apt-get update
  • sudo apt-get upgrade

Viene al momento di installare le dipendenze di Cowrie:

Terminale
  • sudo apt-get install git virtualenv libmpfr-dev libssl-dev libmpc-dev libffi-dev build-essential libpython-dev

Come abilitare SSH su Ubuntu

Ecco come abilitare il servizio Secure Shell (SSH) in Ubuntu per consentire l’accesso remoto sicuro e altre comunicazioni di rete.

Ubuntu fornisce OpenSSH (OpenBSD Secure Shell) nei suoi repository di universi, che è una suite di utilità di rete relative alla sicurezza basate sul protocollo SSH.

1. Per installarlo, aprire il terminale (Ctrl + Alt + T) o accedere al server Ubuntu ed eseguire il comando:

Terminale
  • sudo apt-get install openssh-server

2. Dopodiché, dovresti avere il servizio SSH abilitato nel tuo sistema, puoi controllarne lo stato eseguendo il comando:

Terminale
  • sudo service ssh status

Prima di proseguire con l’installazione, configuriamo il servizio SSH reale in modo che risponda da una porta diversa della 22: questa porta solitamente è quella usata dai servizi SSH ed in costante attacco da parte dei bot/attacker, perciò la utilizzeremo come HoneyPot.

SSH, non più la porta 22

Per spostare i servizi SSH (reali) su una nuova porta è necessario modificare i file sshd_config sulla seguente cartella:

honeypot-trappola-per-attacchi-informatici

Terminale

sudo gedit /etc/ssh/sshd_config

Cerchiamo la riga “Port”, rimuoviamo il cancelletto (#) di fronte ad esso e specificando un nuovo numero (ad esempio 29992). Confermiamo le modifiche con la combinazione [CTRL+S], chiudiamo con [INVIO].

honeypot-trappola-per-attacchi-informatici

Sarà ora necessario riavviare il servizio SSH. Possiamo farlo attraverso:

Terminale

sudo service ssh restart

Preparare l’ ambiente

Se il collegamento al server è di tipo remoto ricolleghiamoci alla macchina, stavolta specificando la nuova porta 29992. Se quindi prima abbiamo usato:

Terminale

ssh [email protected][INDIRIZZO] ora dovremo specificare la porta con -p:

ssh -p 29992 [email protected][INDIRIZZO IP]

Procediamo ora a creare un nuovo account da associare specificatamente a Cowrie (compila come preferisci i campi e seguire)

immagine

Terminale

sudo adduser –disabled-password cowrie

In questo modo verrà creato un account senza password; possiamo eseguire il login come tale utente scrivendo da terminale:

Terminale

su cowrie

Viene ora il momento di copiare nella Home utente il programma.

Cloniamo dal repository GIT ufficiale l’ intero pacchetto e accediamo alla cartella appena creata

immagine

Terminale

cd

git clone http://github.com/micheloosterhof/cowrie

cd cowrie

È arrivato il momento di creare e attivare uno spazio virtuale per la sandbox che conterrà l’honeypot: questo è possibile grazie a virtualnv, un modulo Python che abbiamo già installato:

Terminale

virtualnv cowrie-env

source cowrie-env/bin/activate

Concludiamo la preparazione del’ ambiente Cowrie aggiornando PIP o i moduli richiesti dal programma:

Terminale

(cowrie-env) pip install –upgrade -r requirements.txt

Configurazione e primo avvio di Cowrie

La configurazione di Cowrie è legata principalmente al file cowrie.cfg, non ancora presente sul sistema. In questa situazione verrà utilizzata l’ origine disèonibile su cowrie.cfg avranno priorità sul secondo. Consigliamo di modificare sempre e solo cowrie.cfg, cosi che nel caso ci fossero aggiornamenti non avremo il bisogno di riassegnare le modifiche richieste.

Il comando per copiarlo è:

Terminale
  • cp cowrie.cfg.dist cowrie.cfg

Ora possiamo modificare il file di configurazione assegnando alcuni piccoli accorgimenti per renderlo efficace:

Terminale
  • nano cowrie.cfg

Da qui consiglio di modificare porta (listen_endpoints)e hostname (ad esempio assegnandogli web server o qualcosa del genere) cosi da evitare l’ esposizione del valore di default (chi conosce cowrie sa ch “srv04” come hostname può voler significare la presenza di un honeypot) e di modificare limiti di download o di timeout in base alle proprie esigenze; salviamo ([CTRL+X],[Y] e [INVIO]) e lanciamo il programma:

Terminale
  • bin/cowrie start

Possiamo tornare all’ account root, quindi “blindare” la porta 22 alla 2222 (che di default è quella dell’ HoneyPot) attraverso due comandi: con iptables sarà necessario effetuare il login da root, mentre con authbind (previa pre-installazione) sarà l’ ideale per chi non ha tali permessi.

Vedremo entrambi gli account (esci dall’ account cowrie con exit).

Inoltro attraverso iptables:

Terminale
  • sudo iptables -t nat -A PREROUTING -p tcp –dport 22 -j REDIRECT –to-port 2222

Inoltro attraverso authbind:

Terminale
  • sudo apt-get install authbind
  • touch /etc/authbind/byport/22
  • chown cowrie:cowrie /etc/authbind/byport/22
  • chmod 777 /etc/authbind/byport/22

Testare cowrie

Per verificare il coretto funzionamento di Cowrie possiamo lanciare dalla macchina server il comando:

Terminale
  • sudo lsof -i
  • sudo netstat -ltpu

Se invece volessimo simulare un attaccante da remoto potremmo effettuare un port scanning ai danni della macchina attraverso NIMAP. In questo caso il comando da scrivere:

Terminale
  • sudo nmap -p 22.2222.29992 -sS [INDIRIZZOIPSERVER]

Dai risultati ottenuti possiamo evincere che le porte 22 e 2222 risponderanno all’ honeypot SSH, mentre la porta 26662 risulterà un semplice servizio TCP.

Conwrie a questo punto risponderà a tutte le richieste sulla porta 22, accettando qualunque conbinazione di username e password. Da una macchina esterna possiamo quindi lanciare una prova:

Terminale

Effetuato l’ accesso possiamo sbizzarrirci con il lancio dei soliti comandi da terminale; potremo scaricare file, lanciare tool e navigare in directory fittizie.

Da lato sys-admin potremo monitorare i log (salvati nella cartella /log/tty presente nella cartella Home di Crowrie) creati volta per volta in base alle sessioni generate.

I log presenti (visualizzabili attraverso il comando ls) saranno facilmente navigabili attraverso il tool integrato playlog.

bin/playlog /homecowrie/cowrie/log/tty[LOG]

ad esempio:

bin/playlog /homecowrie/cowrie/log/tty/20180329-125024-323fd92f1916-Oi.log

Per conoscere tutti i log presenti in cowrie ti basterà scrivere da terminale “ls”, accompagnato da -al (giusto per una questione d’ ordine):

Terminale
  • ls -al /home/cowrie/cowrie/log/tty/

Log via SQL

Cowrie integra al suo interno una funzione che permette d salvare i log direttamente su un DBMS relazionale. Questo può essere molto comodo per utilizzare un CMS esterno (ad esempio Kippo-graph) oppure manipolare i dati da un software scritto da noi!

Nel nostro caso abbiamo installato con successo il tutto su MySQL (che abbiamo già preinstallato).

Qualora non dovesse essere presente vi ricordiamo il comando, con tantoì di estensione Python:

Terminale
  • sudo apt-get install mysql-server libmysqlclient-dev python-mysqldb

A questo punto dovremo ripreparare l’ ambiente di cowrie, quindi procediamo con ordine:

Terminale
  • su cowrie
  • source cowrie/cowrie-env/bin/activate
  • pip install mysql client

Se dovvessero esserci problemi scrivi:

Terminale
  • pip install mysql-python

Porcediamo ora a creare un Database dedicato, quindi assegnamo ad esso i permessi, ripuliamoli e usciamo dal client mysql:

Terminale
  • mysql -u root -p
[se richiesta inserisci una password]

mysql> CREATE DATABASE cowrie:

mysql> GRANT ALL ON cowrie.*

TO ‘cowrie’@’localhost’

IDENTIFIED BZ ‘password’;

mysql> FLUSH PRIVILEGES:

mysql> exit

Possiamo ora verificare i permessi e caricare nel database la struttura SQL che ci è stata fornita dal programma:

cd $Home/cnwrie/doc/sql

$ mysql -u cowrie -p

mysql> source mysql.sql;

mysql> exit

 

È arrivato il momento di configurare cowrie affinchè sia in grado di salvare in MZSQL:

riapriamo il file cowrie.cfg come visto precedentemente:

 

nano $HOME/cowrie/cowrie.cfg

 

Siamo pronti a riavviare il programma:

cd $HOME/cowrie/bin

$ ./cowrie.restart

Iscriviti al sito

Il tuo nome (richiesto)

La tua email (richiesto)

Oggetto

Il tuo messaggio


Ho letto

l’informativa Privacy

e autorizzo il trattamento dei miei dati personali per le finalità ivi indicate.

Risolvi il reCAPTCHA per dimostrare che non sei un robot:
[recaptcha]

clicca qui per tornare a Linuxiano