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.