Un honeypot casalingo con Nepenthes
by admin on Apr.01, 2009, under Hacking, Networking, Sicurezza, Tools
Ho cercato di trattare in un post precedente che cosa siano gli honeypot e come vengano impiegati per raccogliere informazioni riguardanti attacchi in corso, emulando vulnerabilità note per catturare i worms che tali vulnerabilità normalmente sfruttano per propagarsi.
Data la disponibilità di strumenti opensource/GPL diventa di conseguenza una tentazione irresistibile quella di allestire un piccolo honeypot casalingo che dia la possibilità di studiare da vicino il fenomeno delle cyber-infezioni.
Allo scopo ho scelto di utilizzare il software Nepenthes, principalmente perché viene tuttora attivamente sviluppato e tale caratteristica è assolutamente imprescindibile in un settore in continua evoluzione.
Perciò, pur essendo disponibili package preconfezionati per Ubuntu/Debian l’installazione è avvenuta a partire dai sorgenti ottenuti tramite svn:
# svn co https://svn.carnivore.it/nepenthes/trunk/
La compilazione prevede alcuni prerequisiti software in termini di dipendenze, ottenibile, su Debian, con:
# apt-get install libcurl3-dev libmagic-dev libpcre3-dev libadns1-dev libpcap0.8-dev iptables-dev
# apt-get install autoconf automake1.9 autotools-dev libtool
dopodiché, la usuale sequenza:
# ./configure –prefix=/opt/nepenthes
# make && make install
La necessità di altre dipendenze preinstallate, che personalmente non ho riscontrato sulla macchina utilizzata, dovrebbe essere abbastanza chiaramente evidenziata in presenza di eventuali interruzioni durante la fase di configure.
La configurazione di Nepenthes è a carico di un unico file, in questo caso /opt/nepenthes/etc/nepenthes/nepenthes.conf, che ovviamente può essere personalizzato, ma è sicuramente utilizzabile così come è:
Il lancio del programma, cui fa seguito un output comprendente una rappresentazione ascii art che raffigura la pianta carnivora il cui nome ha ispirato gli autori del software, è semplicemente:
# /opt/nepenthes/bin/nepenthes
# #
!�..,(’
!!..,�,
!*’.,!*
*!’.,!�
‘!’.,!�
.�,’,*�,,.
,#=%(#%#%%#%%%C
.#%C=,:::::::,,5%#.
(#!!,,,,,,,,,,,J7#’
=#!(=,,,,,,,,:==(7! ,%###!##%’.
.=#(CJ3$#%C7==�((77 ,%##%%!#%%%#%*
.#(#J#A3#$==7=J=!�(=3′ ,%##%%::::,,::%#%, ‘!(====((!,’.
######$@53C=(����==(�=C7 %##(::::,,,,,::%##A$$3$CCJ3CJC(7C!
#(###3#’J�%J(�!!!*!!J(((=J’ ,##(:::,,,,,:::%##5%C’ .
.#3#3#$#. C5$C7�!=���!7=(�(7= ;##(:,,,,,,,::%###%.
‘####*. 7AJC7�!7�(��!�((=7C. |###((,,,,,,,)%##%=C, .*�(7!
(%7C77!(==!�!��=7=C! ((%############%!(CC�.,�JAA%3C’
�$C7C7=�(=���((=(=J= ,:%%@M;%%;.77C7(=C!�!*!�=!�C(777J3$3=!,’.
,%CJJ=C(7(((((=((=JC 7####::###CC=(CC=(=�(*!=!=�=7=77JJ,
.%J337J==(=7==C=C7C3,##J!::::77#%J=CJ==���=!=�===(7C7C*
C$33C3C7=7C777CJJJ%7##C:,,,,,:#$3CJC==(=7(���(=C(J$CJ*
‘%$333CCC3CCCCCJ%3%#%#$C:,,,:3#AJJ3C7=JC=(((((7C7C3J3!
(#$$3JJJ%3J$J33$$AA33#5J:,,:A#$$$JC7CJCC7=(=(CJ$CJJ$,
J#%$$%33%$5$A#$%#%CJ3#A%:35#%J3$3JJCCC$C7J77JC$J33$’
.75AA%%%$AA%#A%5#%CJC#J###3#J$%3$JJCCJCC3J33$33$$A.
=5555A%AA5#5@%,%CJC3J###ACJJ$5$33JJJJJJJJ%%%3%%A%
.3@55##A5###=’!AJCJJ3###ACJ3A#$$$%$$33333$%%%AA5!
%3J%5�5$J=’ ‘533CC3###ACJ$#@A%%%AA$A%$$A%AA55�
A=(3$A’. 3A3J33###%CJ$�#AA55AA%5#AA%%5#5�
.AC=�$J ‘A%$J$A##A33AA�555###55#5555#A!
*J7==A� ‘$%$%%##A3A=.JA###555%55##5(.
=JJJJ5′ ‘(A5A#JA%! *=�@#%AA5553�
J$3J$$ .55A$#* .#A$A�%7*
.$33$%C %$JJ5. !3J(%�.
‘%%%A$7 %CC75. C(J7(
*A%J$A= %==73 ,J7C$’
7%$JJ@! ‘A7=CC =C7CJ
$J3(3#. *$77C= %(CC(
.#33($J �7C73, ‘$JJC,
# #
Nepenthes Ampullaria
# #
Nepenthes Version 0.2.2
Compiled on Linux/x86 at Mar 29 2009 16:51:38 with g++ 4.3.2
Started on silversurfer running Linux/i686 release 2.6.27-7-generic
…
Il lancio di nepenthes, che, se non si utilizza l’opzione -D, rimane associato al terminale di controllo, provoca l’apertura di numerose porte corrispondenti ai servizi vulnerabili fantasma esposti da nepenthes, come deducibile a questo punto tramite:
# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
nepenthes 6705 root 6u IPv4 23374 TCP *:smtp (LISTEN)
nepenthes 6705 root 7u IPv4 23375 TCP *:pop3 (LISTEN)
nepenthes 6705 root 8u IPv4 23376 TCP *:imap2 (LISTEN)
nepenthes 6705 root 9u IPv4 23377 TCP *:imap3 (LISTEN)
nepenthes 6705 root 10u IPv4 23378 TCP *:ssmtp (LISTEN)
nepenthes 6705 root 11u IPv4 23379 TCP *:imaps (LISTEN)
nepenthes 6705 root 12u IPv4 23380 TCP *:pop3s (LISTEN)
nepenthes 6705 root 13u IPv4 23381 TCP *:2745 (LISTEN)
nepenthes 6705 root 14u IPv4 23382 TCP *:6129 (LISTEN)
nepenthes 6705 root 15u IPv4 23383 TCP *:loc-srv (LISTEN)
nepenthes 6705 root 16u IPv4 23384 TCP *:microsoft-ds (LISTEN)
nepenthes 6705 root 17u IPv4 23385 TCP *:1025 (LISTEN)
nepenthes 6705 root 18u IPv4 23386 TCP *:ftp (LISTEN)
nepenthes 6705 root 19u IPv4 23387 TCP *:https (LISTEN)
nepenthes 6705 root 20u IPv4 23388 TCP *:17300 (LISTEN)
nepenthes 6705 root 21u IPv4 23389 TCP *:2103 (LISTEN)
nepenthes 6705 root 22u IPv4 23390 TCP *:eklogin (LISTEN)
nepenthes 6705 root 23u IPv4 23391 TCP *:2107 (LISTEN)
nepenthes 6705 root 24u IPv4 23392 TCP *:3372 (LISTEN)
nepenthes 6705 root 25u IPv4 23393 UDP *:ms-sql-m
nepenthes 6705 root 26u IPv4 23394 TCP *:3127 (LISTEN)
nepenthes 6705 root 27u IPv4 23395 TCP *:netbios-ssn (LISTEN)
nepenthes 6705 root 28u IPv4 23396 TCP *:3140 (LISTEN)
nepenthes 6705 root 29u IPv4 23397 TCP *:5554 (LISTEN)
nepenthes 6705 root 30u IPv4 23398 TCP *:1023 (LISTEN)
nepenthes 6705 root 31u IPv4 23399 TCP *:27347 (LISTEN)
nepenthes 6705 root 32u IPv4 23400 TCP *:5000 (LISTEN)
nepenthes 6705 root 33u IPv4 23401 TCP *:webmin (LISTEN)
nepenthes 6705 root 34u IPv4 23402 TCP *:nameserver (LISTEN)
nepenthes 6705 root 35u IPv4 23403 TCP *:www (LISTEN)
Nepenthes genera un certo numero di files contenenti informazioni sugli attacchi ricevuti, i file binari scaricati.
Una volta che Nepenthes subisca un attacco riguardante uno dei servizi simulati, Nepenthes esamina il tipo di attacco ed interpreta lo shellcode allo scopo di comprendere se il worm sta tentando di scaricare un file e con quale metodo (http/link/ftp..).
Allorché Nepenthes individua un tentativo di scaricare un file binario, ha la capacità di scaricarlo e archiviarlo, così che lo si possa analizzare in seguito.
Il log file generale di Nepenthes è (sempre in questo caso) /opt/nepenthes/var/log/nepenthes.log
Si possono trovare notizie sulle connessioni in ingresso, i tentativi di exploit, i payloads e così via analizzando tale file di log.
Altri file di log interessanti sono /opt/nepenthes/var/log/nepenthes/logged_submissions e /opt/nepenthes/var/log/nepenthes/logged_downloads, che contengono informazioni sui tentativi di download e sulla loro origine:
….
[2009-03-30T21:00:56] 151.16.254.221 -> 192.168.1.10 tftp://0.0.0.0/ssms.exe
[2009-03-30T21:20:38] 151.65.90.70 -> 192.168.1.10 link://151.65.90.70:35112/CawkOg==
….
I files binari catturati vengono archiviati in /opt/nepenthes/var/lib/nepenthes/binaries/, con un nome corrispondente al loro checksum md5:
# ls
18a91e6661584dff4d6451e2e4b6bbf7 98eb0fdadf8a403c013a8b1882ec986d ad51430c7ab32fc38a3b3b1a94342b7d
343ebf0a89fa72cb07710c4171de00d1 a02d7f5e3679ebc70506345ebfa09888 e55730a85a4bacb9209efa8d6591ee67
462e522183a130a48c940d16377071b0 a4ffbcd15262b98c7cc2715fa6f420f9
65cf5d3bc5efd0d4ffcf83bfb59ba33b ac9912b3872c7b0e776a315971fb063d
essi vengono tranquillamente riconosciuti come eseguibili MS Windows
# file *
18a91e6661584dff4d6451e2e4b6bbf7: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit
343ebf0a89fa72cb07710c4171de00d1: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit
462e522183a130a48c940d16377071b0: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit
65cf5d3bc5efd0d4ffcf83bfb59ba33b: MS-DOS executable, MZ for MS-DOS
98eb0fdadf8a403c013a8b1882ec986d: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit
a02d7f5e3679ebc70506345ebfa09888: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit
a4ffbcd15262b98c7cc2715fa6f420f9: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit
ac9912b3872c7b0e776a315971fb063d: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit, UPX compressed
ad51430c7ab32fc38a3b3b1a94342b7d: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit
e55730a85a4bacb9209efa8d6591ee67: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit
mentre la loro specifica natura virale può essere facilmente individuata grazie ad una scansione effettuata tramite il noto antivirus opensource ClamAV:
# clamscan .
./ad51430c7ab32fc38a3b3b1a94342b7d: Trojan.Small-4287 FOUND
./a4ffbcd15262b98c7cc2715fa6f420f9: Trojan.Small-4287 FOUND
./343ebf0a89fa72cb07710c4171de00d1: Trojan.Small-4287 FOUND
./98eb0fdadf8a403c013a8b1882ec986d: Trojan.SdBot-4763 FOUND
./ac9912b3872c7b0e776a315971fb063d: Trojan.Agent-80988 FOUND
./18a91e6661584dff4d6451e2e4b6bbf7: Trojan.Small-4287 FOUND
./a02d7f5e3679ebc70506345ebfa09888: OK
./e55730a85a4bacb9209efa8d6591ee67: Trojan.Small-4287 FOUND
./65cf5d3bc5efd0d4ffcf83bfb59ba33b: Trojan.Kolabc-2 FOUND
./462e522183a130a48c940d16377071b0: Trojan.Agent-4938 FOUND
———– SCAN SUMMARY ———–
Known viruses: 538122
Engine version: 0.94.2
Scanned directories: 1
Scanned files: 10
Infected files: 9
Data scanned: 1.12 MB
Time: 5.785 sec (0 m 5 s)
Secondo l’analisi di threatexpert (http://www.threatexpert.com/) cui ho sottoposto il file a02d7f5e3679ebc70506345ebfa09888, che in precedenza ClamAV non era riuscito ad classificare, contiene un trojan, identificabile esattamente come Trojan-Downloader.Tiny, il quale, seguendo uno schema di comportamento estremamente comune, si connette a vari servers remoti per ottenere files malevoli da eseguirsi ad insaputa e danno dell’utente.

