Kippo
Kippo[1] je skript v jazyce Python inspirovaný obdobným projektem Kojoney[2], licencovaný pod novou licencí BSD, vyvinutý k emulaci prostředí shellu a tvářící se jakožto plnohodnotný SSH terminál. Slouží k zachycení brute force útoků zejména na Linuxové servery, které provozují důležité aplikace, např. databázové servery finančního oddělení. Avšak z principu multiplatformnosti použitého jazyka je možné tento skript provozovat i na jiných OS. Veškeré akce, příkazy v emulovaném prostředí a stažené soubory (povětšinou sloužící k dodatečným útokům) jsou ukládány, lze je poté podrobně analyzovat a poté provést případná opatření počínaje blokací útočící IP adresy, rozsahu či provedení patřičných právních kroků.
Svým principem se tedy jedná o past, zvané jakožto honeypot, která poskytuje vzhledem k vlastnostem jazyka střední míru interakce s útočícím uživatelem.
Hlavní vlastnosti[editovat | editovat zdroj]
- Skript v jazyce Python
- Útočník nemá přístup k samotnému systému.[3]
- Prostředí, emulovaný systém souborů a dalších aspekty včetně falešných uživatelských účtů a hesel lze libovolně upravovat a měnit
- Možnost provést otisk adresářové struktury systému, na kterém je oneypot provozován, úpravu popisu HW součástí a emulovaných síťových rozhraní
- Záznam interakcí
- Možnost vlastních úprav skriptu dle BSD
Instalace a nastavení v prostředí distribuce Debian[editovat | editovat zdroj]
Níže je uvedený jednoduchý postup na instalaci v prostředí Linux, konkrétně distribuce Debian s využitím nástavby APT w:aptitude.
Předpoklady postupu[editovat | editovat zdroj]
Hlavním předpokladem bezpečného provozu Kippo je jeho spouštěním pod účtem s omezenými pravomocemi obsahující nezbytné pravomoce, jakožto přístup zápis/čtení do adresáře, ve kterém je spouštěn a patřičnou schopnost síťové komunikace (příchozí SSH porty jsou otevřeny). Dále je předpokládána, pro tento postup, práce v adresáři, kde bude aplikace provozována pod uživatelem s omezenými pravomocemi. U příkazů, které vyžadují root/správcovská oprávnění, je vždy uvedena patřičná poznámka.
Instalace Python[editovat | editovat zdroj]
Pokud v instalaci systému nebyl Python doposud nainstalován, tak proveďte instalaci ze standardního repositáře pod root uživatelem:
aptitude install python-twisted
Stažení a příprava[editovat | editovat zdroj]
Pro stažení Kippo je možné využít oficiální webové stránky či příkaz:
wget https://kippo.googlecode.com/files/kippo-0.5.tar.gz
Poté stačí daný archiv rozbalit:
tar xf kippo-0.5.tar.gz
A v neposlední řadě nastavit oprávnění X pro daný spouštěcí skript:
cd kippo-0.5
chmod 774 start.sh
První spuštění a otestování[editovat | editovat zdroj]
Po úspěšném rozbalení a přípravě je vhodné vše otestovat. Kippo spustíme z příkazové řádky v daném adresáři zavoláním:
cd kippo-0.5
./start.sh
Po provedení inicializace se aplikace spustí na pozadí. Poté po provedení testu se na tento emulovaný SSH terminál připojte pomocí (falešné heslo je přednastaveno na 123456):
cd kippo-0.5
ssh -p 2222 root@localhost
Pokud se vám úspěšně podařilo přihlásit na terminál, tak je vše správně nastaveno.
Zprovoznění na portu 22[editovat | editovat zdroj]
Pro vlastní aplikaci falešného SSH terminálu na portu 22 (standardní port SSH je nutné provést v prvé řadě přenastavení samotného funkčního SSH serveru (je-li nainstalován). Před provedením níže uvedeného postupu si soubory před úpravou prosím zálohujte.
Změna portu legitimního serveru[editovat | editovat zdroj]
V souboru /etc/ssh/sshd_config upravte řádek (nutný root přístup) s textem Port dle vlastního uvážení, např. pro provozování legitimního SSH serveru na portu 214:
Port 214
Pro aplikování změn nezapomeňte SSH server restartovat (nutný root přístup). Pokud jste přihlášení právě skrze SSH, tak bude nutné se po tomto restartu znovu k SSH přihlásit (avšak k vámi zvolenému portu):
/etc/init.d/ssh restart
Varianta 1: Spuštění přímo na portu 22[editovat | editovat zdroj]
Pro vyhnutí se úpravy iptables je určena tato varianta, po které bude Kippo spuštěn přímo na portu 22:
Příprava Authbind a systému[editovat | editovat zdroj]
Vzhledem k tomu, že na portu 22 smí pouze poslouchat aplikace spuštěná pod root oprávněními je nutno provést instalaci aplikace Authbind (nutný root přístup pro uvedené příkazy):
aptitude install authbind
Poté připravit adresářovou strukturu portu 22, kde UZIVATEL je uživatel pod kterým bude Kippo spuštěn:
touch /etc/authbind/byport/22
chown UZIVATEL:UZIVATEL /etc/authbind/byport/22
chmod 777 /etc/authbind/byport/22
Úprava Kippo[editovat | editovat zdroj]
V neposlední řadě je nutno editovat soubor start.sh, a upravit řádek z:
twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid
na
authbind --deep twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid
Poté je nutno upravit soubor kippo.cfg konkrétně řádek:
ssh_port = 2222
na
ssh_port = 22
(Re)start Kippo[editovat | editovat zdroj]
Po provedení všech změn je možno Kippo opětovně spustit na portu 22:
./start.sh
A poté případně ověřit dostupnost emulovaného terminálu:
ssh -p 22 root@localhost
Varianta 2: Přesměrování požadavků portu 22[editovat | editovat zdroj]
Pokud není z nějakého důvodu možné využít variantu č. 1, tak je možné nechat Kippo spuštěné na svém původním portu a požadavky an port pomocí iptables přesměrovat.
Úprava iptables[editovat | editovat zdroj]
Pro přesměrování je nutno upravit iptables pomocí níže uvedených příkazů spuštěných s root oprávněním:
iptables -A INPUT -i eth0 -p tcp --dport 2222 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 22 -j REDIRECT --to-port 222
Po provedení výše uvedených příkazů je povolen vstup na portu 2222 s následným přesměrováním požadavkům portu 22 na port 2222.
Ověření dostupnosti[editovat | editovat zdroj]
Po provedení všech změn je možno ověřit dostupnost emulovaného terminálu:
ssh -p 22 root@localhost
Prohlížení záznamů[editovat | editovat zdroj]
Obecné[editovat | editovat zdroj]
Kippo zaznamenává veškeré obecné záznamy včetně pokusů o přihlášení, přihlášení či ztráty spojení. Tyto záznamy jsou uloženy v adresáři log, kde soubor bez číselné přípony je nejnovější a starší záznamy obsahují, se stářím se zvyšující, číselnou příponu, např. kippo.log.12.
Interakce[editovat | editovat zdroj]
Zaznamenané interakce provedené při úspěšném přihlášení lze nalézt v adresáři log/tty/, pro jejiž přehrávání je připraven skript playlog, který je umístěná v adresář utils. Jednotlivé záznamy lze přehrávat např. takto:
./playlog.py ../log/tty/20121021-185644-3080.log
Stažené soubory[editovat | editovat zdroj]
Útočníkem stažené soubory lze nalézt v adresáře dl. Název těchto souborů je odvozen od data, času, URL a názvu souboru.
Podrobnější konfigurace[editovat | editovat zdroj]
Pro podrobnější konfiguraci Kippo lze využít též souboru kippo.cfg, ve kterém lze nalézt např. heslo pro falešná přihlášení. Též je zde možné specifikovat umístění vlastní databáze s falešnými hesly (např. z generátoru), nastavení hostname, zapisování záznamů do MySQL namísto do adresáře log.
Odkazy[editovat | editovat zdroj]
Reference[editovat | editovat zdroj]
- ↑ Kippo [online]. [Cit. 2013-01-14]. Dostupné online.
- ↑ Kojoney [online]. [Cit. 2013-01-14]. Dostupné online.
- ↑ Kippo FAQ [online]. [Cit. 2013-01-14]. Dostupné online.