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
  • 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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

Obecné

editovat

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

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

Ú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

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.

Reference

editovat
  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