PRŮZKUM VLASTNOSTÍ VOLNĚ DOSTUPNÝCH IMPLEMENTACÍ HONEYPOTŮ A BLACKHOLE NETWORKS S OHLEDEM NA JEJICH POUŽITÍ VE VIRTUÁLNÍ LABORATOŘI POČÍTAČOVÝCH SÍTÍ jméno: Přemysl Ťok login: tok014
1. Co je to honeypot V překladu do čestiny to znamená "medový hrnec" a je to aplikace, která simuluje virtualní prvek v síti se všemi jeho vlastnostmi - tzn. operační systém, otevřené/zavřené porty, běžící služby se kterými blíže seznámíme v kapitole 3. Konfigurace. Na tvorbu honeypotu se dá na internetu najit několik komerčních i nekomerčních programů. My použijeme program Honeyd, který je volně dostupný na http://honeyd.org. Honeyd je síťová služba (démon), který běží na unixovém počítači. Nastavuje se pomocí konfiguračního souboru, ve kterém si nastavíme na jakých IP adresách má honeyd poslouchat, jaké systémy simulovat a jaké služby má na daných portech nabízet. Pokud hacker scanuje síť a dostane se k některé z našich adres, honeyd mu odpoví příslušným paketem. Honyed vše loguje, takže můžeme snadno zjistit, kdo co v síti provádí. Honeyd můžeme táké nakonfigurovat tak, že pokud se někdo pokusí připojit na port, který jsme nastavily jako otevřený, může honeyd spustit skript, který danou službu simuluje. Hacker tak získá dojem, že pracuje se skutečným strojem. A pokud se loguje i výstup ze skriptu, můžeme získat přehled o útočníkových aktivitách. 2. Instalace Pokud nenajdeme pro naši distribuci Linuxu již předkompilovaný balíček můžeme si na oficialní stránce http://www.honeyd.org stáhnout zdrojové soubory a vše si sami zkompilovat. V tom případě ale budeme potřebovat i následujicí knihovny: libevent, libdnet a libpcap. Nebo jestli se vám nechce kompilovat, můžete použít předkompilovanou verzi honeyd_kit, který lze ho získat na http://www.citi.umich.edu/u/provos/honeyd/honeyd_kit -1.0c-a.tgz. 3. Konfigurace Než začneme s konfigurací honeyd, musíme si zajistit dostatečný rozsah IP adres pro naše virtuální stroje. To nám umožní nástroj arpd. Pokud používáte honeyd_kit jako my, stačí, pokud v souboru./start-arpd.sh nastavíme síť, kde má poslouchat v našem případě 10.80.1.0/24. #!/bin/sh # # Aprd startup script. # Marcus Ranum/Lance Spitzner 3 Jan, 2003 # # PURPOSE: To start the Arpd process # Add '-d' to command line for debug information set -x # Monitor entire network./arpd 10.80.1.0/24 Teď už se může pustit do samotné konfigurace honeyd, ta se provádí pomocí konfiguračního souboru honeyd.conf.
3.1. Konfigurace chování TCP, UDP a ICMP protokolů v Honeyd TCP protokol: open naváže spojení (standardní chování), block ignoruj paket, neposílej odpověď, reset odpověz paketem RST, tarpit - zpozdí spojení (slouží ke zpomalení komunikace a tím může vlastně zaměstnat zdroje útpčícího počítače). UDP protokol: open odpovídej block neodpovídej reset odpověz paketem ICMP Port unreachable (standardní chování) ICMP protokol: open odpověz příslušným ICMP paketem block ignoruj paket a neodpovídej (standardní chování) tady je ukázka našeho konfiguračního souboru: ##### Honeyd Configuration File ##### # Last Updated: 31 May, 2005 ##################################################################### ### Start with default template. If you don't assign specifc ### ### behavior to a specific honeypot, it defaults to the 'default' ### ### template. You must have a template with the name 'default'. ### ##################################################################### ################################################################### ### We now have the rest of our templates and honeypot behavior ### ### ### ### Port Behavior ### ### TCP (default is Open) ### ### - Open: Respond with Syn/Ack, establish connection ### ### - Block: Drop packet and do not reply ### ### - Reset: Respond with RST ### ### - Tarpit: Sticky connection ### ### ### ### UDP (default is Closed) ### ### - Open: No response ### ### - Block: Drop packet and do not reply ### ### - Reset: Respond with ICMP port error message ###
### ### ### ICMP (default is Open) ### ### - Open: Reply to ICMP packets ### ### - Block: Drop packet and do not reply ### ### ### ### Ethernet Codes ### ### - Located in ethernet.c file, compiled into honeyd ### ################################################################### ### Windows computers create windowsxp set windowsxp personality "Microsoft Windows XP Home Edition" set windowsxp default tcp action reset set windowsxp default udp action reset set windowsxp default icmp action open add windowsxp tcp port 80 "sh scripts/misc/test.sh" add windowsxp tcp port 139 open add windowsxp tcp port 137 open add windowsxp udp port 137 open add windowsxp udp port 135 open bind 10.80.1.101 windowsxp create windows2000 set windows2000 personality "Microsoft Windows XP Professional" set windows2000 default tcp action reset set windows2000 default udp action reset add windows2000 tcp port 25 "sh scrpits/win32/win2k/exchange-smtp.sh" add windows2000 tcp port 80 "sh scripts/win32/win2k/iis.sh" add windows2000 tcp port 110 "sh script/win32/win2k/exchange-pop3.sh" add windows2000 tcp port 139 open add windows2000 tcp port 137 open add windows2000 udp port 137 open add windows2000 udp port 135 open set windows2000 uptime 3284460 bind 10.80.1.102 windows2000 ### Linux 2.4.x computer create linux set linux personality "Linux 2.4.16-2.4.18" set linux default tcp action reset set linux default udp action reset add linux tcp port 110 "sh scripts/unix/general/pop/emulate-pop3.sh" add linux tcp port 25 "perl scripts/unix/general/smtp.pl" add linux tcp port 21 "sh scripts/unix/linux/ftp.sh" set linux uptime 3284460 bind 10.80.1.103 linux ### Cisco router create router set router personality "Cisco IOS 11.3-12.0(11)" set router default tcp action reset set router default udp action reset add router tcp port 23 "perl scripts/cisco/router-telnet.pl" set router uid 32767 gid 32767 set router uptime 1327650 bind 10.80.1.104 router
použité příkazy: create linux Tento příkaz vytvoří a poté i identifikuje daný virtuální stroj, který se v tomto případě jmenuje linux. set linux personality "Linux 2.4.16-2.4.18" Definujeme jaký operační systém chceme na daném virtuální stroji ohlašovat, zde se jedná o linux s jádrem 2.4.16 2.4.18. Přehled podporovaných operačních systémů je uveden v souboru nmap.assoc. set linux default tcp action reset Nastavuje odpověď na pokus o spojení. set linux default udp action reset Nastavuje odpověď na UDP paket. add linux tcp port 110 "sh scripts/unix/general/pop/emulatepop3.sh" Nastavuje port 110 jako otevřený a definuje, který skript na portu poslouchá. add linux tcp port 25 "perl scripts/unix/general/smtp.pl" add linux tcp port 21 "sh scripts/unix/linux/ftp.sh" Již hotové skripty, které jsme použily smtp.pl, ftp.sh jsou obsaženy v honeyd_kitu, nebo si je a mnohé jiné můžeme stáhnout ze stránky www.honeyd.org/contrib.php. Po stažení je, ale pořeba přiřadit právo na spuštění. set linux uptime 3284460 Definuje, jak dlouho už daný systém běží. bind 192.168.20.103 linux Přiřadí adresu na které systém poběží.. 4. Spuštění honeyd Honeyd_kit obsahuje dva skripty, které honeyd spustí první je./start-arpd.sh, který jsme si již upravily podle našich potřeb, druhý je./start-honeyd.sh. I ten je nutné přispůsobit našim podmínkám: #!/bin/sh # Honeyd startup script. # Marcus Ranum/Lance Spitzner 3 Jan, 2003 # # PURPOSE: To start the Honeyd process # Add '-d' to command line for debug information set -x # Launch Honeyd./honeyd -f honeyd.conf -p nmap.prints -x xprobe2.conf -a nmap.assoc -0 pf.os -l /var/log/honeyd 10.80.1.101-10.80.1.104
-f <soubor> Určuje soubor, ze kterého souboru se bude brát konfigurace. -x <soubor> Soubor s definicí, jak honeyd reaguje na nástroje využívající ICMP fingerprint, pro určení operačního systému scanovaného zařízení. -l <soubor> Říká kam logovat události spojené s honeyd (např. příjem síťovích paketů). -a <soubor> Soubor, který asociuje styl fingerprintů pro xprobe (možnost -x) se stylem fingerprintů, které používá nmap pro určení operačního systému. -0 <soubor> Soubor s databází fingerprintů. Jména operačních systému specifikována v tomto souboru používá honeyd jako dynamickou šablonu. 10.80.1.101 10.80.1.104 Poslední je rozsah, v jakém honeyd poslouchá. Ten si musíte upravit podle své sítě. 5. Testování Pro testování jsem použil nástroj network tools( balíček NET-TOOLS 1.60-17UBUNTU1), který je obsažen v distribuci Ubuntu 6.10. Scanování na IP adrese 10.80.1.101 s nastavením: create windowsxp set windowsxp personality "Microsoft Windows XP Home Edition" set windowsxp default tcp action reset set windowsxp default udp action reset set windowsxp default icmp action open add windowsxp tcp port 80 "sh scripts/misc/test.sh" add windowsxp tcp port 139 open add windowsxp tcp port 137 open add windowsxp udp port 137 open add windowsxp udp port 135 open bind 10.80.1.101 windowsxp
Scanování na IP adrese 10.80.1.102 s nastavením: create windows2000 set windows2000 personality "Microsoft Windows XP Professional" set windows2000 default tcp action reset set windows2000 default udp action reset add windows2000 tcp port 25 "sh scrpits/win32/win2k/exchange-smtp.sh" add windows2000 tcp port 80 "sh scripts/win32/win2k/iis.sh" add windows2000 tcp port 110 "sh script/win32/win2k/exchange-pop3.sh" add windows2000 tcp port 139 open add windows2000 tcp port 137 open add windows2000 udp port 137 open add windows2000 udp port 135 open set windows2000 uptime 3284460 bind 10.80.1.102 windows2000
Scanování na IP adrese 10.80.1.103 s nastavením: create linux set linux personality "Linux 2.4.16-2.4.18" set linux default tcp action reset set linux default udp action reset add linux tcp port 110 "sh scripts/unix/general/pop/emulate-pop3.sh" add linux tcp port 25 "perl scripts/unix/general/smtp.pl" add linux tcp port 21 "sh scripts/unix/linux/ftp.sh" set linux uptime 3284460 bind 10.80.1.103 linux
Scanování na IP adrese 10.80.1.104 s nastavením: create router set router personality "Cisco IOS 11.3-12.0(11)" set router default tcp action reset set router default udp action reset add router tcp port 23 "perl scripts/cisco/router-telnet.pl" set router uid 32767 gid 32767 set router uptime 1327650 bind 10.80.1.104 router
Ukázka logovacího souboru: 2007-01-27-17:44:38.4104 udp(17) E 10.80.1.77 4735 10.80.1.102 137: 50 0 2007-01-27-17:52:47.1646 honeyd log stopped ------ 2007-01-28-19:31:39.9411 honeyd log started ------ 2007-01-28-19:52:36.2479 honeyd log started ------ 2007-01-28-19:53:00.8387 icmp(1) - 10.80.1.70 10.80.1.101: 8(0): 84 2007-01-28-19:53:01.8178 icmp(1) - 10.80.1.70 10.80.1.101: 8(0): 84 2007-01-28-19:53:02.8168 icmp(1) - 10.80.1.70 10.80.1.101: 8(0): 84 2007-01-28-19:53:03.8174 icmp(1) - 10.80.1.70 10.80.1.101: 8(0): 84 2007-01-28-19:53:04.8174 icmp(1) - 10.80.1.70 10.80.1.101: 8(0): 84 2007-01-28-19:53:14.8771 tcp(6) - 10.80.1.70 49281 10.80.1.101 1: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9323 tcp(6) - 10.80.1.70 49178 10.80.1.101 2: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9325 tcp(6) - 10.80.1.70 41781 10.80.1.101 3: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9327 tcp(6) - 10.80.1.70 35835 10.80.1.101 4: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9328 tcp(6) - 10.80.1.70 52070 10.80.1.101 5: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9330 tcp(6) - 10.80.1.70 47134 10.80.1.101 6: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9331 tcp(6) - 10.80.1.70 54237 10.80.1.101 7: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9333 tcp(6) - 10.80.1.70 44853 10.80.1.101 8: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9334 tcp(6) - 10.80.1.70 57744 10.80.1.101 9: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9336 tcp(6) - 10.80.1.70 59821 10.80.1.101 10: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9337 tcp(6) - 10.80.1.70 56987 10.80.1.101 11: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9338 tcp(6) - 10.80.1.70 51690 10.80.1.101 12: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9340 tcp(6) - 10.80.1.70 51690 10.80.1.101 13: 60 S [Linux 2.6 ] 2007-01-28-19:53:14.9341 tcp(6) - 10.80.1.70 53702 10.80.1.101 14: 60 S [Linux 2.6 ] Z logovacího souboru je vidět, že někdo s IP adresou 10.80.1.70 na které běží Linux 2.6 scanuje virtuální stroj s IP adresou 10.80.1.101, že jde o scan naznačují krátké intervaly mezi pakety.
6. Závěr Výše uvedený popis ukazuje jenom základní práci s honeyd, který umožňuje vytvářet rozsáhlé sítě virtuálních strojů (až 65536 IP adres), umožňuje nastavit mezi nimy směrování, simulovat ztrátovost nebo šířku pásma. Také je možné použít honeyd k odhalení útoků internetových červů a zjištění techniky jejich pronikání do systému. Zdroje www.honeyd.org http://www.security-portal.cz/clanky/tvorime-honeypoty.html http://connect.zive.cz/index.php?q=node/70 Hakin9, jak se bránit? 3/2005 - Honeypoty past na havěť