{"id":407,"date":"2013-11-14T23:53:22","date_gmt":"2013-11-14T22:53:22","guid":{"rendered":"http:\/\/under12oot.noblogs.org\/?p=407"},"modified":"2013-11-14T23:53:22","modified_gmt":"2013-11-14T22:53:22","slug":"kippo-honeypot","status":"publish","type":"post","link":"https:\/\/under12oot.noblogs.org\/?p=407","title":{"rendered":"Kippo HoneyPot"},"content":{"rendered":"<p><em>All&#8217;hackmeeting 2013 di Cosenza,<\/em> tra i tanti ed interessanti talk ce n&#8217;\u00e8 stato uno che mi ha particolarmente attirato. Il talk in questione parlava di <a title=\"HoneyPot\" href=\"https:\/\/it.wikipedia.org\/wiki\/Honeypot\" target=\"_blank\">HoneyPot<\/a>, ed in particolare di <a title=\"kippo\" href=\"https:\/\/code.google.com\/p\/kippo\/\" target=\"_blank\">Kippo<\/a> che tra la varie features ne ha una molto carina che consiste nella registrazione video dei comandi eseguiti dall&#8217;attaccante, grazie alla quale abbiamo visto <em>una serie di &#8220;follie&#8221;<\/em> che hanno fatto esplodere dalle risate la sala che ci ospitava, si perch\u00e8 altra feature molto carina <em>\u00e8 il fake del comando &#8220;exit&#8221;<\/em> quindi l&#8217;attaccante pensado di essersi sloggato e di eseguire comandi nel proprio terminale in realt\u00e0 stava ancora digitando all&#8217;interno della sessione ssh dell&#8217;honeypot, <em>praticamente si resta intrappolati<\/em>!! Fico no?? Comunque oltre al lato &#8220;divertente&#8221; della cosa, <em>c&#8217;\u00e8 un&#8217;effettiva utilit\u00e0<\/em> nel creare un&#8217; honeypot: si possono vedere da <em>dove provengono gli attacchi<\/em> per esempio, o capire come si <em>comporta un&#8217;attaccante, quali file scarica (exploit o bot)<\/em> , quali <em>file o comandi va cercando<\/em> una volta loggato e via dicendo&#8230;<\/p>\n<p>Bene dopo un p\u00f2 di mesi ho deciso di implementare pure io kippo sul mio &#8220;fisso&#8221;, 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 \u00e8 il procedimento che ho eseguito per\u00a0 installare e configurare kippo ed <em>un paio di accorgimenti<\/em> che ho adottato per rendere il tutto pi\u00f9 &#8220;credibile&#8221; in pi\u00f9 c&#8217;\u00e8 l&#8217;opzione facoltativa di loggare il tutto su un db mysql.<\/p>\n<p>Cominciamo con qualche considerazione: per una questione di sicurezza <em><span style=\"text-decoration: underline\">kippo non deve essere avviato come utente root<\/span><\/em> quindi non possiamo metterlo in ascolto direttamente sulla porta 22 ( linux necessita di privilegi elevati per eseguire i servizi sulle porte &lt; 1024 ) infatti <em>kippo di default si mette in ascolto sulla porta 2222<\/em>, quindi possiamo prendere 2 strade:<\/p>\n<p>1) scriviamo 1 regola di <em>iptables per forwardare<\/em> il traffico, tipo questa ( <em>il \\ indica che \u00e8 tutto scritto sulla stessa riga<\/em>):<\/p>\n<pre><strong><span style=\"color: #993366\">$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp \\\r\n --dport 22 -j REDIRECT --to-port 2222<\/span><\/strong><\/pre>\n<p>2)<em> usare authbind<\/em> che ci permette di eseguire kippo\u00a0 direttamente sulla porta 22<\/p>\n<p>a) Io ho deciso di utilizzare <em>authbind.<\/em> Quindi come prima cosa andiamo subito a <em>modificare il file di configurazione di ssh<\/em>, in modo da poter raggiungere la nostra macchina senza rimanere intrappolati noi stessi in kippo =)<\/p>\n<pre><strong><span style=\"color: #993366\">$ sudo nano \/etc\/ssh\/sshd_config<\/span><\/strong><\/pre>\n<p>b) e <em>modifichiamo la porta 22<\/em> con un&#8217;altra a nostra scelta, io ho messo 2233, gi\u00e0 che c&#8217;ero <em>ho vietato il login a root<\/em>&#8230; Riavviamo poi il servizio:<\/p>\n<pre><strong><span style=\"color: #993366\">$ sudo service ssh restart<\/span><\/strong><\/pre>\n<p>c) Ora prepariamo il nostro sistema installando tutto ci\u00f2 che ci occorre ( <em>il \\ indica che \u00e8 tutto scritto sulla stessa riga<\/em>) :<\/p>\n<pre><span style=\"color: #993366\"><strong>$ sudo apt-get install python-dev openssl python-openssl \\\r\npython-pyasn1 python-twisted python-mysqldb mysql-server authbind <\/strong><\/span><\/pre>\n<p>d) Possiamo ora creare un altro utente con il quale potremo avviare kippo:<\/p>\n<pre><strong><span style=\"color: #993366\">$ adduser honey<\/span><\/strong><\/pre>\n<p>e) e modifichiamo visudo in modo che il nostro nuovo utente <em>abbia la possibilit\u00e0 di usare sudo<\/em>:<\/p>\n<pre><strong><span style=\"color: #993366\">$ sudo visudo<\/span><\/strong><\/pre>\n<p>honey\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ALL=(ALL:ALL) ALL<\/p>\n<p>f) Finiamo ora la nostra configurazione preparando authbind:<\/p>\n<pre><strong><span style=\"color: #993366\">$ sudo touch \/etc\/authbind\/byport\/22\r\n<strong>$ sudo<\/strong> chown honey:honey \/etc\/authbind\/byport\/22\r\n<strong>$ sudo<\/strong> chmod 777 \/etc\/authbind\/byport\/22<\/span><\/strong><\/pre>\n<p><em>g) Logghiamoci<\/em> con il nostro nuovo utente e <a href=\"https:\/\/code.google.com\/p\/kippo\/downloads\/list\" target=\"_blank\">scarichiamo l&#8217;ultima versione<\/a> di kippo <em>(al momento 0.8)<\/em> all&#8217;interno della nostra home, estraiamolo ed <em>editiamo il file di configurazione<\/em> modificando la porta 2222 con la porta 22:<\/p>\n<pre><strong><span style=\"color: #993366\">$ nano kippo.cfg<\/span><\/strong><\/pre>\n<p>h) E per finire editiamo il file start.sh<\/p>\n<pre><strong><span style=\"color: #993366\">$ nano start.sh<\/span><\/strong><\/pre>\n<p>modificando la seguente riga:<\/p>\n<pre><strong>twistd -y kippo.tac -l log\/kippo.log --pidfile kippo.pid<\/strong><\/pre>\n<p>con questa:<\/p>\n<pre><strong>authbind --deep twistd -y kippo.tac -l log\/kippo.log --pidfile kippo.pid<\/strong><\/pre>\n<p>cos\u00ec possiamo utilizzare authbind per metterci in ascolto sulla porta 22, finito questo passaggio possiamo lanciare kippo, <strong>oppure aspetta un attimo e continua a leggere<\/strong>:<\/p>\n<pre><strong><span style=\"color: #993366\">$ .\/start.sh<\/span><\/strong><\/pre>\n<p>Possiamo assicurarci che la nostra porta sia aperta e kippo in ascolto con:<\/p>\n<pre><strong><span style=\"color: #993366\">$ sudo netstat -antp\r\n\r\n<\/span><\/strong><\/pre>\n<p>i) Per rendere pi\u00f9 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&#8230;.<\/p>\n<p><em>C&#8217;\u00e8 un ulteriore passaggio<\/em> che possiamo fare, <em>puramente facoltativo<\/em>, e cio\u00e8 quello d<em>i utilizzare mysql per loggare tutto<\/em> quello che succede a kippo&#8230; Prima di tutto cominciamo con l&#8217;installarlo se gi\u00e0 non l&#8217;avete (potete pure optare per phpmyadmin e creare un db, qui faremo tutto tramite terminale):<\/p>\n<pre><span style=\"color: #993366\"><strong>$ sudo apt-get install python-mysqldb mysql-server<\/strong><\/span><\/pre>\n<p>Durante l&#8217; installazione vi verr\u00e0 chiesta la psw di root, cercate qualcosa di non troppo guessabile \ud83d\ude09<\/p>\n<p>Continuiamo poi con la configurazione del DB <em>(sostituite psw_DB con una vostra password!!! )<\/em><\/p>\n<pre><span style=\"color: #993366\"><strong>$ sudo mysql -u root -p<\/strong><\/span><\/pre>\n<pre><span style=\"color: #993366\"><strong>&gt; CREATE DATABASE kippo;\r\n&gt; GRANT ALL ON kippo.* TO 'kippo'@'localhost' IDENTIFIED BY 'psw_DB';\r\n&gt; exit<\/strong><\/span><\/pre>\n<p>&nbsp;<\/p>\n<p>Torniamo nella directory di kippo, se avete seguito questa guida sar\u00e0 in<em> \/home\/honey\/kippo-0.8\/doc\/sql<\/em> e carichiamo la struttura delle tabelle che kippo ci mette a disposizione all&#8217;interno del nostro DB:<\/p>\n<pre><strong><span style=\"color: #993366\">$ sudo mysql -u honey -p<\/span><\/strong><\/pre>\n<pre><strong><span style=\"color: #993366\">&gt; USE kippo;\r\n&gt; source .\/doc\/sql\/mysql.sql;\r\n&gt; exit<\/span><\/strong><\/pre>\n<p>A questo punto <em>possiamo ri-loggarci<\/em> come utente honey. Se prima abbiamo avviato kippo ora dobbiamo killare il processo, usando il comando ps -x e poi kill $PID<\/p>\n<pre><strong><span style=\"color: #993366\">$ ps x | grep kippo<\/span><\/strong>\r\n<strong>12345 ? Sl\u00a0 0:00 \/usr\/bin\/python \/usr\/bin\/twistd -y kippo.tac -l log\/kippo.log \u2013pidfile kippo.pid<\/strong>\r\n\r\n<strong><span style=\"color: #993366\">$ sudo kill 12345<\/span><\/strong><\/pre>\n<p>Spostiamoci ora nel <em>file di configurazione di kippo<\/em> ed editiamo le seguenti linee <em>decommentandole e aggiustandole<\/em> secondo le impostazioni prese finora:<\/p>\n<pre><strong><span style=\"color: #993366\">$ nano kippo.cfg<\/span><\/strong>\r\n\r\n<strong>[database_mysql]\r\nhost = localhost\r\ndatabase = kippo\r\nusername = honey\r\npassword = psw_DB <\/strong><\/pre>\n<p><em>Finito!<\/em> Siamo pronti per usare kippo e loggare il tutto tramite mysql&#8230;. Per controllare che sia effettivamente in esecuzione usiamo ancora netstat:<\/p>\n<pre><strong><span style=\"color: #993366\">$ .\/start.sh<\/span><\/strong><\/pre>\n<pre><strong><span style=\"color: #993366\">$ sudo netstat -antp<\/span><\/strong><\/pre>\n<p>Mentre per vedere gli eventi loggati nel DB possiamo usare questa query:<\/p>\n<pre><span style=\"color: #993366\"><strong>$ mysql -u kippo -p<\/strong><\/span><\/pre>\n<pre><strong>&gt; USE kippo;\r\n&gt; SELECT * FROM auth;<\/strong><\/pre>\n<p>&nbsp;<\/p>\n<p>Spero che sia tutto chiaro! Se avete qualcosa da <em>aggiungere, da suggerire o da consigliare fatevi avanti!!<\/em> A breve metter\u00f2 qualche log, dopo 2 ore che kippo era in esecuzione ho cominciato a ricevere connessioni, per ora nulla di che, ma appena avr\u00f2 qualcosa di interessante da postare lo far\u00f2!<\/p>\n<p><em>Happy Hacking!!<\/em><\/p>\n<p><em>noyse_dog<\/em><\/p>\n<pre><strong><span style=\"color: #993366\">\u00a0<\/span><\/strong><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>All&#8217;hackmeeting 2013 di Cosenza, tra i tanti ed interessanti talk ce n&#8217;\u00e8 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&#8217;attaccante, grazie alla quale abbiamo visto [&hellip;]<\/p>\n","protected":false},"author":5820,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[13,65,66],"class_list":["post-407","post","type-post","status-publish","format-standard","hentry","category-howto","tag-hack","tag-honeypot","tag-kippo"],"_links":{"self":[{"href":"https:\/\/under12oot.noblogs.org\/index.php?rest_route=\/wp\/v2\/posts\/407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/under12oot.noblogs.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/under12oot.noblogs.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/under12oot.noblogs.org\/index.php?rest_route=\/wp\/v2\/users\/5820"}],"replies":[{"embeddable":true,"href":"https:\/\/under12oot.noblogs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=407"}],"version-history":[{"count":6,"href":"https:\/\/under12oot.noblogs.org\/index.php?rest_route=\/wp\/v2\/posts\/407\/revisions"}],"predecessor-version":[{"id":433,"href":"https:\/\/under12oot.noblogs.org\/index.php?rest_route=\/wp\/v2\/posts\/407\/revisions\/433"}],"wp:attachment":[{"href":"https:\/\/under12oot.noblogs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/under12oot.noblogs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/under12oot.noblogs.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}