Förutom att Offensive Security numera går under namnet OffSec så har företaget även släppt en ny version av Kali Linux som heter Kali Purple.
Som det nya namnet lite avslöjar så handlar det om en Linux-distribution som är anpassad för Purple-Teaming eller Blue-Teaming, dvs mer defensiv cybersäkerhet än offensiv som Kali Linux är mest känt för.
Och givetvis så är Kali Purple proppad med över 100 st olika verktyg, och för att nämna några:
Med följer även Kali Autopilot som låter dig bygga olika attackscenarion samt en community Wiki som låter dig läsa på om olika defensiva verktyg och hur du använder dessa.
Brim är ett relativt nytt verktyg som släpptes 2018 som underlättar analys av nätverkstrafik. De tre grundstenarna i Brim är Suricata, Zeek (tidigare Bro) och Wireshark.
Den primära analysen görs i ett grafisk gränssnitt som är utvecklat i ramverket Electron (som bl.a. Slack). Backend är skrivet i programspråket Go och använder ett filformat vid namn ZNG. Givetvis går det också att använda Brim utan det grafiska gränssnittet.
Eftersom designen är Unix-lik så kan du separera samtliga komponenter och arbeta mot en Zeek-instans som ligger på en annan server och bara använda det grafiska gränssnittet i Brim på din arbetsstation.
Att komma igång och importera en PCAP-fil på 1 GB tar bara några sekunder och du kan komma igång och arbeta direkt med datan. Förutom PCAP-filer så kan Brim även arbeta med formaten .pcapng, .zng och Zeek ASCII/JSON.
När du startar Brim för första gången ser det ut enligt nedan skärmdump. Du arbetar med olika spaces, queries samt du har möjlighet att se din historik:
När vi sedan importerat en fil så kan vi ställa manuella frågor via en ZQL-query eller klicka på valfritt fält. Följande skärmdump visar hur det ser ut direkt när vi valt att importera en PCAP:
Och nu är det dags att försöka att ställa några ZQL-frågor för att sedan utföra Threat hunting. Med första frågan kollar vi bara vilka olika streams som finns tillgängliga, och ni som arbetat med Zeek tidigare känner igen dessa:
count() by _path | sort -r
Och då ser det ut enligt följande på den PCAP som jag valt att arbeta med:
Från ovan vy så kan vi också högerklicka och välja ”Pivot to logs” för att se all trafik givet en viss _path. Och i ovan fall så ser vi enbart en snmp-förfrågan. Då kan vi enkelt filtrera ut den förfrågan via höger musknapp eller att skriva följande ZQL:
_path = "snmp"
Och enligt ovan så ser vi även att det förekommer 97 st okrypterade anslutningar där vi har möjlighet att söka efter avvikande user_agents med följande ZQL:
_path="http" | count() by user_agent | sort -r
Vilket då ger oss följande user_agents:
Det är även möjligt att använda cut() på följande sätt exempelvis:
_path=http | count() by status_code,host | status_and_counts=collect(cut(status_code,count)) by host
Och en till trevlig sak är att ZQL förstår sig på CIDR så du kan använda network_of() på följande sätt för att hitta vilka nät som DNS-servrar finns på:
_path=dns | put classnet=network_of(id.resp_h) | cut classnet | count() by classnet | sort -r
En annan fördel med Brim som är värd att trycka på också är att du enkelt kan öppna intressanta streams med Wireshark med hjälp av ett klick. Se röd pil nedan:
Vill man helt utesluta det grafiska gränssnittet och bara använda bakomliggande funktioner så går detta också givetvis bra för att exempelvis importera och arbeta med en PCAP-fil.
Det finns två sätt att importera en PCAP-fil direkt från kommandoskalet. Det ena är via zapi som följer med Brims installation eller ladda hem verktyget brimcap. För att använda de verktyg som följer med så kör man bara:
zapi new testspace
zapi -s testspace postpcap trace_2021-02-27_06:17:24.anon.pcap
Vilket tar 26 sekunder. Vi kan sedan ställa frågor direkt mot vårat nya testspace och den ZNG-fil som skapades på följande sätt:
Första releasen av Brim släpptes 2018 och sedan dess har det släppts mängder av förbättringar och uppdateringar. Dock har det inte hänt så mycket sedan Februari 2021 då version 0.24.0 släpptes.
Företaget bakom Brim har ca 7 anställda och går under namnet Brim Security och här kan du ladda hem Brim om du själv vill testa:
Jag gillar också tänket bakom Zed, att strukturera upp metadata. Och jag hoppas att fler projekt ska plocka upp det såsom Arkime (tidigare Moloch). Och även möjligheten att köra Zqd som är lyssnaren remote tycker jag är mycket bra.
En annan idé som verkar lovande är kombinationen tshark + Elasticsearch, något som är implementerat i tsharkVM.
Threat Hunting eller Cyber Threat Hunting som det också kallas har varit ett modeord inom cybersäkerhetsbranschen sedan några år. Och förra året så skrev jag på LinkedIn om vad det är för något. Kort och gått så jobbar du efter en eller flera teser och försöker identifiera antagonister i dina IT-system.
Open Threat Exchange (OTX) är en tjänst där du kan dela med dig av Indicators of Compromise (IOC). Jag har exempelvis lagt upp IOC:er för domännamn som anropas från en bakdörr som återfinnes i ett Chrome Extension. Tjänsten är gratis att använda och har ett API där du kan med hjälp av en API-nyckel ladda hem IOC:er som andra eller du själv har lagt upp.
Critical Stack
Intel Feed från företaget Critical Stack är också en gratis tjänst där du kan ladda hem en aggregerad lista med IOC:er. Denna lista som du ladda hem innehåller flertalet andra listor som du själv väljer. Och upp till 160 olika listor finns att välja på hos Critical Stack. Jag har valt 155 st där jag aktivt har valt bort fem stycken listor som ger false-positive larm:
hosts-file.net Ad/Tracking Domains
sysctl.org Domain Blocklist (Ads)
Known Tor Exit Nodes
hosts-file.net Misleading Marketing Domains
torproject.org Official Exit Node List
Installation
Denna guide förutsätter att du redan har open-source IDS:en Bro installerat. Du kan exempelvis använda min favorit, Linux-disten Security Onion där Bro finns färdiginstallerat.
Jag har inför denna guide sparat ner PCAP-filer för ungefär ett års datatrafik där jag kommer att gå igenom samtliga filer efter indikatorer från listorna ovan. Men du behöver inte köra mot nersparade pcap-filer, för listorna går även att köra direkt mot realtidstrafik i Bro.
Installation Critial Stack
Du kan antingen köra den mer osäkra vägen via Packagecloud eller installera deb-paktet:
För mer information om Bro:s Intelligence Framework kan du läsa här.
Installation Alienvault OTX
Först registrerar du dig för ett gratis-konto och får sedan tillgång till en API-nyckel. Sedan klonar vi ner ett projekt från Github som heter Alienvault OTX Bro IDS Connector. Viktigt här är att vi klonar ner projektet till rätt katalog.
Eller så kör vi detta script som automatiserar förfarandet:
Och kollar vi på uppdelningen gällande vilka typer så skiljer det sig något mot Critical Stacks indikatorer:
17354 st Intel::DOMAIN
15018 st Intel::FILE_HASH
5969 st Intel::URL
594 st Intel::ADDR
75 st Intel::EMAIL
Analysera PCAP-filerna
Nu är det bara sista steget kvar och det är att köra bro direkt mot pcap-filerna. Jag brukar göra ett enkelt shellscript på 4-5 rader som loopar igenom alla sparade pcap-filer och skapar en ny katalog för varje dag (om du lagrar en fil per dag).
En av fördelarna med att köra Bro istället för att enbart titta på käll- och destinations- IP-nummer är att Bro avkodar och tittar i protokoll. Såsom om certifikatet i en TLS-förbindelse har ett CN (CommonName) som matchar en IOC.
Jag kör Bro med följande argument:
time bro -r filnamn.pcap local "Site::local_nets += {10.0.0.0/8}"
Jag hoppas att denna guide kan hjälpa dig att identifiera intrång. Du kommer troligtvis även att behöva filtrera bort en hel del falska positiva larm.