section

Honeypot s OpenCanary

06.10.2021| Tag Bezpečnost

V IT je honeypot lákadlo na útočníky v síti, které se vydává za nějakou zajímavou službu či server a zachytává útočníkovy akce. OpenCanary je pak open source síťový honeypot, který je možné relativně snadno uchodit.

Pro doma může být honeypot zajímavá hračka, pokud se bezpečným způsobem vystaví do internetu. Sbírá údaje o podniknutých útocích a častokrát loguje i samotné příkazy, které byly do honeypotu zadány. Pro firmu však taková věc může být také užitečná. Honeypot se vydává za nějakou pro útočníka zajímavě vypadající službu – NAS, SQL server, webový server a tak dále. Útočník neodolá a na službu přistoupí, což honeypot správci sítě ihned oznámí. U honeypotu většinou stačí i pouhý sken portů, aby dal ihned správci vědět o nějaké aktivitě. To z něj dělá velmi zajímavou detekční sondu v případě kompromitace sítě. Dá se totiž očekávat, že útočník si po vniknutí do LAN síť napřed oťuká, než začne cíleně útočit. Pokud je taková LAN složená z mnoha oddělených lokalit, může být malý honeypot jednoduchá cesta, jak si síť hlídat. Taková tedy byla původní motivace pro mé experimentování s honeypotem.

Hezká open source varianta honeypotu pro zmíněný účel je OpenCanary projekt od Thinkst Canary. Firma primárně prodává už hotového kanárka – krabičku/VM, která stačí pouze zapojit do sítě, a bude plnit funkci detekční sondy imitující různé služby. Jenže takový kanárek stojí vcelku pořádné peníze. Je proto skvělé, že tvůrci dali k dispozici i free verzi kanárka, která pro detekci něčeho nekalého v síti naprosto stačí.

OpenCanary umí imitovat škálu běžně užívaných služeb. Příkladem budiž SSH, telnet, http web server, ftp nebo mysql. Všechno to jsou věci, po kterých útočník může v síti pátrat. Svého času uměl kanárek i RDP, ale to je v této době z nějakého důvodu odebráno. Jakmile kanárek zaregistruje přístup na nějakou z jeho vystavených služeb, dá vědět předem nastaveným způsobem adminovi (standardně přes syslog nebo emailem). Kanárek není vůbec náročný na zdroje, pro první test jsem ho měla na VM s 1 GB paměti, jedním CPU a 50 GB diskem, což bylo úplně bez problémů. Produkčního kanárka mám na malině 4 B s 2GB paměti a také úplně bez problémů. Na VM i na malině jsem měla Ubuntu 20.04.

Pro instalaci se stačí řídit návodem na Thinkst Githubu. Není třeba tam vymýšlet nic navíc, proto kroky instalace do článku vypisovat nebudu. V rámci instalace se vytvoří základní konfigurace, kterou je potřeba upravit podle vlastní potřeby. Definují se zde služby, které má kanárek imitovat, jejich porty a jakým způsobem se mají ohlašovat. Dále se nastavuje způsob logování a alertingu. Dobře se dá odpíchnout od dokumentace OpenCanary.

Já jsem nakonec kanárka nastavila tak, aby imitoval Synology NAS. Pro účel detekce nějakého skenu portů to není úplně podstatné, ale protože kanárek má v základu http skin pro Synology, rozhodla jsem se ho využít. Povolila jsem tedy službu http, ftp a ssh na standardních portech a upravila ohlašování těchto služeb tak, aby se podobalo reálnému Synology. U vystavování služeb jen pozor, aby se kanárek nepomlátil s reálným systémem. Třeba u SSH jsem službu reálného serveru, kde kanárek běží, převedla na jiný port v sshd konfigu.

Zde je ukázka NAS login stránky imitované kanárkem.

CAN5

A tady je pro porovnání výsledek skenu reálného Synology NAS a kanárka. SSH u kanárka se hlásí podivně, ale to je kvůli nevhodně zvolenému popisu služby v konfiguraci. Stačí si s tím trochu pohrát.

CAN2
CAN3

Pro kanárka je možné vytvořit a povolit systemd službu, aby pak mohl startovat automaticky se startem systému. Podoba služby se řeší ve wiki na Githubu projektu. Chce to chvilku ladit a najít variantu, která bude fungovat. Níže je pro ukázku verze služby, která funguje mně. V ExecStart a ExecStop musí být cesta k virtuálnímu prostředí kanárka.

[Unit]

Description=OpenCanary

After=syslog.target

After=network-online.target


[Service]

User=root

RemainAfterExit=yes

Restart=always

ExecStart=/home/ubuntu/OpenCanary/env/bin/opencanaryd --start

ExecStop=/home/ubuntu/OpenCanary/env/bin/opencanaryd --stop


[Install]

WantedBy=multi-user.target

Alerty umí kanárek zasílat různými způsoby. Osobně jsem zkoušela SMTP, ale nakonec jsem přešla na syslog, u kterého i zůstanu. SMTP funguje hezky, ale v základu je kanárek při startu hodně ukecaný, což zrovna u detekční sondy není úplně dobré. V syslogu se běžně dají zprávy filtrovat podle vybraných atributů, a dále přes syslog se tak mohou alertovat jen zprávy, které mají význam. Před zasazením do sítě je dobré v systému nastavit přesný čas, aby alerty odpovídaly skutečnosti.

První ukázka jsou maily od kanárka při startu služeb. Za krátkou dobu je jich poměrně dost na to, aby to člověka otravovalo.

CAN1

Druhá ukázka už je ze syslog konzole za běhu kanárka. Kanárek kromě zdrojové adresy útočníka loguje také jméno a heslo, které se pokoušel použít.

CAN4

Zatím mám kanárka v síti jen velmi krátce pro test reálné použitelnosti, ale vše se jeví dobře. Program funguje spolehlivě, dá se dobře nastavovat a reaguje jak na sken portů, tak na přímou interakci. Ve virtuálu by pořizovacími náklady byl jen čas na implementaci, s malinou jako fyzickým podkladem byl náklad cca dva tisíce, což se při menším počtu poboček pořád dá akceptovat. Zatím nemám pořádně rozmyšleno, zda kanárka umístit do PC nebo serverového segmentu, ale při dostatku zdrojů je možné mít i několik kanárků stylizovaných do různých služeb pro PC i serverový segment. Asi bych však na jednom stroji nezapínala všechny služby, aby to pro útočníka nebylo tak nápadné.

Pro velké šťouraly – je možnost vcelku snadno upravit skin, který v sobě kanárek má. Obrázky jsou dostupné v adresářové struktuře a html index taktéž. Zkusila jsem defaultní NAS skin od Canary upravit tak, aby se podobal DSM 7, a vypadal pro útočníka trochu zajímavěji. Zde je výsledek. Všechny funkce kanárka zůstaly zachovány.

CAN6

Soubory byly ukryty v cestě níže, tedy ve virtuálním prostředí kanárka v home složce uživatele. Předpokládám, že to u standardní instalace bude všude víceméně stejné.

/home/ubuntu/OpenCanary/env/lib/python3.8/site-packages/opencanary/modules/data/

A pro velké a schopné šťouraly – moduly jednotlivých služeb jsou vlastně pythoní skripty. Věřím tomu, že s trochou zdatnosti v programování se dá kanárek ještě hodně rozšířit.

A toť vše. Kanárek je krásná hračka, ale upřímně doufám, že po reálném nasazení o něm už mimo údržbovou činnost neuslyším.