Kanariefågeltestet
Det sägs att man inom gruvdrift historiskt använt kanariefåglar för att kontrollera förekomsten av dödlig gas. Den procedur som användes var att kanariefåglar firades ned i ett område som skulle undersökas och sedan upp igen. Var fågeln död när den kom upp kunde förekomst av farlig gas konstateras, levde den var det antagligen ingen direkt dödsfara. Oavsett vilka funderingar man har kring detta avseende effektivitet mot långsamt verkande förorening eller som djurvän har det gett upphov till begreppet “canaries” inom IT-säkerhet. I likhet med kanariefåglarna i gruvan används canaries inom IT-säkerhet för att detektera pågående angrepp snarare än att förhindra dessa. Den här blogposten handlar om OpenCanary som är ett exempel på en fritt tillgänglig produkt från företaget Thinkst.
OpenCanary är en Python daemon som konfigureras för att imitera vanliga tjänster på ett internt nätverk. Den genererar sedan larm när en oförsiktigt angripare försöker interagera med dessa och fungerar därmed som en varningsklocka för pågående angrepp.
Jag har testat produkten i Lubuntu installerat på en Intel Compute Stick kallad files. Installationen var smärtfri och jag döpte min instans av opencanary till thebird . Jag konfigurerade min canary att imitera en FTP och en HTTP server samt reagaera på portskanningar genom att modifera relevant konfigurationsfil enligt nedan.
Vidare konfigurerade jag min kanariefågel att larma mig via gmail. Med kanariefågeln på vakt var det dags att testade dess effektivitet I att detektera angrepp. Resten av den här blogg beskriver denna vid två enkla angrepp angrepp.
Ett scenario med en oförsiktig angripare
Angreppet:
En tänkt angripare portskannar enheten med verktyget nmap ser att en FTP-server kör och försöker logga in med användarnamn h4ck3r och lösenord p4asword!!!.
Från portskanningen ser angriparen att en HTTP-sever körs på port 80. Angriparen besöker därför files IP-address i en webbläsare och av vad som ser ut som inloggningssidan för ett NAS. Angriparen gör ett nytt inloggningsförsök på denna sida återigen med inloggningsuppgifterna h4ck3r och p4ssw0rd!!.
Detektion
Såväl portskanningen som inloggningsförsöket över FTP generar larm som skickas från den gmail jag skapat för ändamålet.
Larmen från portskanningen innehåller IP- samt MAC-addresser för angriparens maskin medan larmet från inloggningsförsöket även innehåller de användaruppgifter som används. Om det var ett verkligt angrepp hade självfallet denna information varit mycket värdefull för att identifiera kormpomenterade enheter och autentiseringsuppgifter.
Besöket på HTTP-sidan och inloggningen där generar även det ett antal larm:
I likhet med portskanningen och FTP-inloggningen fångas även denna gång angriparens aktivtet inklusive inloggningsuppgifter samt tilltäckliga uppgifter för att kunna identifiera enheten på nätverket.
Ett scenario med en försiktigare angripare
Angrepp utan larm
Som med alla säkerhetsprodukter krävss vissa förutsättningar för att produkten ska fungera. I min uppsättning är möjligheterna för kanariefågeln att skapa larm att den kan kommunicera med gmail. Förstör angriparen den förmågan är det möjligt att kommunicera med produkten utan att larm generas.
Angripare kan undersöka kanariefågeln utan att skapa larm genom att använda kända sårbarheter i ARP-protokollet som används för att koppla samman MAC- och IP-addresser. För att visa hur det kan gå till använder vi verktyget Bettercap.
Initalt kan angriparen identifiera enheter på nätverket med net.recon-modulen i Bettercap. Det gör man genom att aktivera net.recon som gör att att Bettercap regelbundet läser av ARP-tabellen på angriparens maskin samt exekverar kommandot net.show enligt nedan.
När angriparen har identiferat maskinen files kan ett ARP Cache Poisoning angrepp utföras mot files och dess gateway. Med net.recon aktiverat kan det här utföras genom följande kommandon:
ARP Cache Poisoning angreppet innebär att angriparens maskin skickar ut falska ARP-replies som får det att se ut som såväl files som gateway har angriparens MAC-address. Det gör att all kommunikation mellan files och dess gateway går via angriparens maskin, det vill säga angriparen är man-in-the-middle. Med verktyget tcpdump kan man se detta enligt nedan.
På files syns detta i arp-tabellen där man ser att två olika IP-address motsvarar samma MAC-address.
Om files faktiskt var en FTP- eller HTTP-server skulle det här kunna användas för att avläsa inloggningsuppgifter för de båda klartextprotokollen. Vill angriparen istället förhindra att files kommunicerar med yttervärlden kan hen åstadkomma det genom att helt enkelt konfigurera sin brandvägg till att droppa aktuella paket.
När jag först gör det här, och sedan samma aktiviteter som i det oförsiktiga scenariot, får jag nu inga mail överhuvudtaget.
Slutsats
Å ena sidan lärde vi oss av scenariot med en oförsiktig angripare att Opencanary med enkla medel ger stora möjligheter att detektera pågående IT-angrepp. Den ger dessutom bra ledtrådar i incidenthanteringen. Å andra sidan såg vi i fallet med en försiktig angripare att de larm som generas kan stoppas om angriparen har en man-in-the-middle position i nätverket.
Vår kanariefågel kan alltså fungera som en snubbeltråd för angriparen i en allmän försvarstrategi baserad på principen defence-in-depth, men produkten ersätter inte andra säkerhetsfunktioner på nätverksnivå. Exemeplvis skulle den metod som används i scenariot med en försiktigare angripare snabbt upptäckts om det fanns övervakning av ovanlig ARP-trafik på nätverket. Omvänt skulle sannolikt inte ett enskilt felaktigt inloggningsförsök över HTTP genera ett larm i en traditionell säkerhetsprodukt.
Analogin med kanariefåglarna i gruvan har slutligen egentigen en dimension till; i båda fallen innebär “fågel-larmen” att något dåligt har inträffat, men att fåglarna verkar oberörda innebär inte att allt är säkert.
Referenser
- Bettercap – https://www.bettercap.org/
- Open canary – https://github.com/thinkst/opencanary