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- 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
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
editovatHlavní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
editovatPro 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í
editovatPo ú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
editovatPro 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
editovatV 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
editovatPro vyhnutí se úpravy iptables je určena tato varianta, po které bude Kippo spuštěn přímo na portu 22:
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
editovatV 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
editovatPo 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
editovatPokud 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
editovatPro 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
editovatPo provedení všech změn je možno ověřit dostupnost emulovaného terminálu:
ssh -p 22 root@localhost
Prohlížení záznamů
editovatObecné
editovatKippo 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
editovatZaznamenané 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
editovatPro 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
editovatReference
editovat- ↑ 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.