Kippo

Z Wikiknih

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]

  1. Kippo [online]. [Cit. 2013-01-14]. Dostupné online.
  2. Kojoney [online]. [Cit. 2013-01-14]. Dostupné online.
  3. Kippo FAQ [online]. [Cit. 2013-01-14]. Dostupné online.

Externí odkazy[editovat | editovat zdroj]