Kippo HoneyPot
All’hackmeeting 2013 di Cosenza, tra i tanti ed interessanti talk ce n’è stato uno che mi ha particolarmente attirato. Il talk in questione parlava di HoneyPot, ed in particolare di Kippo che tra la varie features ne ha una molto carina che consiste nella registrazione video dei comandi eseguiti dall’attaccante, grazie alla quale abbiamo visto una serie di “follie” che hanno fatto esplodere dalle risate la sala che ci ospitava, si perchè altra feature molto carina è il fake del comando “exit” quindi l’attaccante pensado di essersi sloggato e di eseguire comandi nel proprio terminale in realtà stava ancora digitando all’interno della sessione ssh dell’honeypot, praticamente si resta intrappolati!! Fico no?? Comunque oltre al lato “divertente” della cosa, c’è un’effettiva utilità nel creare un’ honeypot: si possono vedere da dove provengono gli attacchi per esempio, o capire come si comporta un’attaccante, quali file scarica (exploit o bot) , quali file o comandi va cercando una volta loggato e via dicendo…
Bene dopo un pò di mesi ho deciso di implementare pure io kippo sul mio “fisso”, approfittando del fatto di essere fuori sede per qualche tempo e quindi di poter lasciare il tutto in funzione. Quello che vado ora ad illustrarvi è il procedimento che ho eseguito per installare e configurare kippo ed un paio di accorgimenti che ho adottato per rendere il tutto più “credibile” in più c’è l’opzione facoltativa di loggare il tutto su un db mysql.
Cominciamo con qualche considerazione: per una questione di sicurezza kippo non deve essere avviato come utente root quindi non possiamo metterlo in ascolto direttamente sulla porta 22 ( linux necessita di privilegi elevati per eseguire i servizi sulle porte < 1024 ) infatti kippo di default si mette in ascolto sulla porta 2222, quindi possiamo prendere 2 strade:
1) scriviamo 1 regola di iptables per forwardare il traffico, tipo questa ( il \ indica che è tutto scritto sulla stessa riga):
$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp \
--dport 22 -j REDIRECT --to-port 2222
2) usare authbind che ci permette di eseguire kippo direttamente sulla porta 22
a) Io ho deciso di utilizzare authbind. Quindi come prima cosa andiamo subito a modificare il file di configurazione di ssh, in modo da poter raggiungere la nostra macchina senza rimanere intrappolati noi stessi in kippo =)
$ sudo nano /etc/ssh/sshd_config
b) e modifichiamo la porta 22 con un’altra a nostra scelta, io ho messo 2233, già che c’ero ho vietato il login a root… Riavviamo poi il servizio:
$ sudo service ssh restart
c) Ora prepariamo il nostro sistema installando tutto ciò che ci occorre ( il \ indica che è tutto scritto sulla stessa riga) :
$ sudo apt-get install python-dev openssl python-openssl \
python-pyasn1 python-twisted python-mysqldb mysql-server authbind
d) Possiamo ora creare un altro utente con il quale potremo avviare kippo:
$ adduser honey
e) e modifichiamo visudo in modo che il nostro nuovo utente abbia la possibilità di usare sudo:
$ sudo visudo
honey ALL=(ALL:ALL) ALL
f) Finiamo ora la nostra configurazione preparando authbind:
$ sudo touch /etc/authbind/byport/22
$ sudo chown honey:honey /etc/authbind/byport/22
$ sudo chmod 777 /etc/authbind/byport/22
g) Logghiamoci con il nostro nuovo utente e scarichiamo l’ultima versione di kippo (al momento 0.8) all’interno della nostra home, estraiamolo ed editiamo il file di configurazione modificando la porta 2222 con la porta 22:
$ nano kippo.cfg
h) E per finire editiamo il file start.sh
$ nano start.sh
modificando la seguente riga:
twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid
con questa:
authbind --deep twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid
così possiamo utilizzare authbind per metterci in ascolto sulla porta 22, finito questo passaggio possiamo lanciare kippo, oppure aspetta un attimo e continua a leggere:
$ ./start.sh
Possiamo assicurarci che la nostra porta sia aperta e kippo in ascolto con:
$ sudo netstat -antp
i) Per rendere più credibile la cosa sarebbe utile popolare la directory /kippo-0.8/honeyfs con una struttura del filesystem credile, basta creare altre directory come lo sono nel nostro fs, e magari aggiungere pure qualche file….
C’è un ulteriore passaggio che possiamo fare, puramente facoltativo, e cioè quello di utilizzare mysql per loggare tutto quello che succede a kippo… Prima di tutto cominciamo con l’installarlo se già non l’avete (potete pure optare per phpmyadmin e creare un db, qui faremo tutto tramite terminale):
$ sudo apt-get install python-mysqldb mysql-server
Durante l’ installazione vi verrà chiesta la psw di root, cercate qualcosa di non troppo guessabile 😉
Continuiamo poi con la configurazione del DB (sostituite psw_DB con una vostra password!!! )
$ sudo mysql -u root -p
> CREATE DATABASE kippo;
> GRANT ALL ON kippo.* TO 'kippo'@'localhost' IDENTIFIED BY 'psw_DB';
> exit
Torniamo nella directory di kippo, se avete seguito questa guida sarà in /home/honey/kippo-0.8/doc/sql e carichiamo la struttura delle tabelle che kippo ci mette a disposizione all’interno del nostro DB:
$ sudo mysql -u honey -p
> USE kippo;
> source ./doc/sql/mysql.sql;
> exit
A questo punto possiamo ri-loggarci come utente honey. Se prima abbiamo avviato kippo ora dobbiamo killare il processo, usando il comando ps -x e poi kill $PID
$ ps x | grep kippo 12345 ? Sl 0:00 /usr/bin/python /usr/bin/twistd -y kippo.tac -l log/kippo.log –pidfile kippo.pid $ sudo kill 12345
Spostiamoci ora nel file di configurazione di kippo ed editiamo le seguenti linee decommentandole e aggiustandole secondo le impostazioni prese finora:
$ nano kippo.cfg
[database_mysql]
host = localhost
database = kippo
username = honey
password = psw_DB
Finito! Siamo pronti per usare kippo e loggare il tutto tramite mysql…. Per controllare che sia effettivamente in esecuzione usiamo ancora netstat:
$ ./start.sh
$ sudo netstat -antp
Mentre per vedere gli eventi loggati nel DB possiamo usare questa query:
$ mysql -u kippo -p
> USE kippo; > SELECT * FROM auth;
Spero che sia tutto chiaro! Se avete qualcosa da aggiungere, da suggerire o da consigliare fatevi avanti!! A breve metterò qualche log, dopo 2 ore che kippo era in esecuzione ho cominciato a ricevere connessioni, per ora nulla di che, ma appena avrò qualcosa di interessante da postare lo farò!
Happy Hacking!!
noyse_dog
Tags: hack, honeypot, kippo