Ja, det heter faktisk MineMeld. (Trodde lenge selv at det var MindMeld!)
MineMeld er ett gratis verktøy fra Palo Alto Networks, som er utviklet ene og alene for å gjøre hverdagen deres enklere!
Kort fortalt så er dette en lettvekts server basert på Ubuntu som korrelerer data fra forskjellige eksterne lister, for så gjøre dem om til ett format vi kan levere til Palo Alto Networks brannmuren via External Dynamic List(EDL). External Dynamic List er en 7.1 funksjon, så kjører man 7.0 og tidligere, så er det kun støtte for IP-lister.
Eksempler for lister vi kan korrelere data fra:
- Azure Cloud-IP
- Office 365 IP\URL
- RansomwareTracker som inneholder informasjon om IP\URL som er med i kampanjer
- SpamHouse som har data om IP\URL som er innblandet i SPAM aktivitet
Pluss mange mange fler, men i dette innlegget skal jeg fokusere på noe jeg vet mange trenger, nemlig en komplett oversikt over alle IPer og URLer som brukes for Office365!
Først må vi installere serveren, og jeg viser her hvordan man gjør det med en *.ova fil for VMware. Du kan få tak i denne på følgende url: https://s3-eu-west-1.amazonaws.com/minemeld-dist/0_9/minemeld-vm-0.9.5.ova
Etter den er lastet ned, så er det bare å åpne den i VMware, jeg bruker VMware Workstation 11.
Her ser dere standard oppsett, jeg har valgt å øke fra 1024 til 2048mb RAM, det gir vesentlig bedre ytelse på web-gui.
Start minemeld, og vent ca 4-6 minutter før du beskjeden om at minemeld har startet korrekt. Du kan dermed logge inn med følgende informasjon:
Username: ubuntu
Password: rsplizardspock
Det er ikke nødvendig å logge inn i shellet egentlig, men jeg visste ikke IPen..
(For de som ikke skjønner passordet så er det “Rock, Scissors, Paper, Lizard, Spock” som er en variant som ble mest kjent etter å ha vært med i en Big Bang Theory episode.)
En enkel ifconfig senere så vet jeg at web-serveren lytter på https://192.168.1.170.
Vi kan nå logge inn på web-gui med følgende passord:
Username: admin
Password: minemeld
Du vil da bli presentert med følgende Dashboard, her ser vi at standard oppsett i .ova filen inneholder noe konfigurasjon allerede. La oss se nærmere på det.
Her ser vi en grafisk presentasjon av oppsettet, og enkelt forklart fungerer det slik:
Grønne sirkler representerer det vi kaller for “Miners”, dette er de som henter data fra ulike kilder på internett.
Røde sirkler representerer “engines” som korrelerer data fra Miners basert på om det er IPv4, IPv6 eller URL.
Gule sirkler representerer “Lists” som blir generert på kriterier vi setter, i eksemplet over har vi 3 stk, der innholdet er High Confidence, Medium Confidence og Low Confidence.
Dette gir oss mulighet til å blokkere High Confidence, mens vi kan ha alert på Medium og Low for å se om det er noe trafikk mot disse IPene. Dette gir oss kontroll, og mulighet til å reagere om vi ser noe merkelig.
Som nevnt tidligere, så har vi mulighet til å hente informasjon fra svært mange aktører. Jeg anbefaler dermed at første stopp er å gå til “Config” og deretter trykke på knappen som heter “browse prototypes”. Det er ikke så rent lite vi kan gjøre.. og dette er gratis!
Siden eksemplet her baserer seg på Office365, så kjørte jeg ett raskt søk på Office365, vi får da opp 17 treff! Dette er lister med IPer og URLer som Microsoft vedlikeholder, som vi kan nå dra direkte inn til brannmuren via EDL. Dette gir oss mulighet til å lage regler for trafikk, og SSL dekryptering basert på denne informasjonen. Noe som er svært nyttig! Ingenting er kjedeligere enn å manuelt vedlikeholde slike lister.
Vi går tilbake til “Config” og trykker nå på plusstegnet for å lage en ny Node basert på en prototype.
Først må man gi den ett navn, her har jeg bare brukt “O365_<innhold>” som standard, dette er helt opptil dere. Så velger man hvilken prototype denne Noden skal bruke, og man kan da velge mellom de 3 vi gikk igjennom i sted. “Miner”, “Engine” og “List”. Vi starter med å lage en Miner, basert på office365.O365. Du ser beskrivelsen på bildet.
Vi velger ikke noe på INPUT, men aktiverer OUTPUT. Enkelt forklart så er INPUT andre Noder, og Mineren skal ikke hente data fra andre Noder, men direkte fra Microsoft. OUTPUT betyr at Noden skal tillate at andre Noder henter data, noe som vi trenger i neste steg. Trykk OK for å lagre noden.
Lag en ny Node, og denne gangen skal vi lage en “Engine” som faktisk korrelerer dataene. Vi gir den ett passende navn, og deretter definerer en Prototype som samsvarer med dataene vi skal korrelere. Her lager vi en Engine som henter ut og leser IPv4 adresser. Under INPUT definerer vi Mineren vi nettopp satt opp, og OUTPUT setter vi til Enabled. Trykk OK for å lagre.
Vi lager enda en ny Node, denne gangen skal det bli en “List” som inneholder de prosesserte dataene fra Engine noden. Vi gir den ett navn som tidligere, og velger en Prototype som henter ut de dataene vi ønsker. I dette tilfellet bruker vi “feedHCGreen” som står for High Confidence Share Level Green, denne bruker vi siden alle dataene fra Microsoft er 100% korrekt og offentlig tilgjengelig. INPUT er Engine Noden vi har laget, og OUTPUT er disabled, siden vi ikke skal dele data videre med noen andre Noder. Trykk OK for å lagre.
Ute i “Config” menyen har vi en “Commit” knapp, trykk på denne og vent i ca 2-3 minutter før alle endringene har trådt i kraft.
Trykk deretter på en av de nodene vi har laget, og velg nederste meny på venstre side, du vil da se den grafiske representasjonen av det vi har laget.
Her ser vi 0365_portal_and_identity Miner, O365_engine_IPv4 henter data og korrelerer det, før 0365_IPv4_list kompilerer sin liste.
Mer at Det grå feltet representerer mengden med data som kommuniseres mellom nodene, her ser vi at det går mindre mellom listen vår og engine, enn fra miner til engine.
Ser vi på statistikken til Enginen vår så ser vi at ca halvparten av inneholdet fra Mineren vår blir ignorert. Ett raskt kikk i loggen viser at dette er IPv6 og URL data. Dette blir avvist siden vår Engine ser kun etter IPv4 adresser. Så da blir neste steg..
Og lage enda en ny Node! Vi starter med en ny “Engine” som skjønner URL. Gi den ett navn og velg riktig Prototype. Velg Mineren fra tidligere på INPUT og aktiver OUTPUT. Tykk OK.
Deretter lager vi en ny liste, dette må vi gjøre fordi Palo Alto Networks ikke støtter både URL og IPer i samme liste per idag over EDL. Velg den nye engine for URL på INPUT og deaktiver OUTPUT. Trykk ok og lagre.
Også har “me juksa lite!”, jeg har her lagt til enda flere Minere, dette må gjøres for å sikre at man faktisk får alle URLer og IPer tilhørende Office 365. Dette var de jeg måtte legge til for mitt miljø, om man bruker mange funksjoner i Office 365 så kan det hende at man må legge til alle 17 som finnes. Det kan være lurt å lese beskrivelsen i Prototyp listen.
Men her kan dere se nå at vi har flere Minere som leverer data til 2 stk Engines, som igjen korrelerer dataene slik at vi sitter igjen med 2 lister som vi kan bruke på brannmuren. En for URL og en for IP. Vi kan også legge til IPv6 om det er behov for det også.
Slik ser min konfigurasjon ut nå, om man vil legge til flere INPUTS for en Engine, så trykker man bare på området jeg har ringet rundt.
Slik ser mitt Dashboard ut etter denne konfigurasjonen, her ser vi at det er endring i data hele tiden, noe som er en god indikator på at alt fungerer slik det skal.
Nå mangler vi bare å få dataene inn til Palo Alto Networks brannmuren.
Første steg da er å trykke på listene vi har laget for å finne ut URL vi må bruke for EDL import.
En rask sjekk viser at vi får tilgang og at det er data listen. Vi hopper da over til brannmuren.
Vi hopper til “Objects->External Dynamic Lists”, og trykker “Add”.
Vi legger inn URL og velger de forskjellige innstillingene. Viktig og få “Type” riktig. Her kan vi velge mellom IP, Domain og URL. Jeg velger å sjekke listen hver time, da jeg antar at det ikke skjer så ofte endringer fra Microsoft sin side.
Trykk “Test Source URL” for å sjekke om brannmuren når MineMeld, om det går bra, så kan man trykke OK. Legg til URL listen på tilsvarende måte.
Da sitter vi med følgende lister i brannmuren, kjør en commit!
Når commiten er ferdig, så kan det være fornuftig å sjekke om listene faktisk fungerer. Dette kan ikke gjøres via GUI, så da må vi inn på CLI.
Kjør følgende kommando> request system external-list show type ip|url name <navn på listen> for å få opp innholdet. Du ser at det fungerte fint for meg. Du får også informasjon om listene er i bruk via “Referenced” feltet.
Vi vet nå at listene har data, så da kan vi bruke det i regler! Hva med å ha en regel som gjør at kun kjente brukere kan bruke tillatte applikasjoner mot kjente Office 365 destinasjoner? Det kan vi nå gjøre!
Eller kanskje bruke PBF til å sende all trafikk mot O365 tjenester via en dedikert link? Det kan vi gjøre!
Eller kanskje lage en Decryption regel for å dekryptere trafikken? Eller kanskje du ønsker å unnta for dekryptering? Valget er ditt, men vi har nå iallefall den informasjonen vi trenger for få det til!
En rask kikk i loggene viser at trafikken treffer også! Happy days!
Kort oppsummert så er det fornuftig å ta en titt på MineMeld, det er ett kraftig verktøy som kan gjøre mye moro! Jeg vil følge opp med flere eksempler senere, men har hatt flere som har hatt spørsmål rundt Office 365.
Ressurser:
Live! MineMeld – Masse flere eksempler, og mye nyttig informasjon!