Inntrengere

Dagens tekst er hentet fra kapittel 22 i Cryptography and Network Security, og handler om slemme mennesker som prøver å bryte seg inn i intetanende folks datasystemer, og hva vi kan gjøre for å forhindre dette.

Ondsinnet eller uønsket tilgang til nettverksbasert systemer er et vesentlig problem. Slik tilgang kan skje enten lokalt eller via nettverket, og vi kan dele inntrengerne i grovt tre klasser:

  • Utenforstående (Masquerador)
    Omgår aksesskontrollmekanismer for å utnytte legitime brukerkonti
  • Misbruker (Misfeasor)
    Gyldig bruker som aksesserer ressurser vedkommende ikke er autorisert for
  • Skjult (Clandestine user)
    Inntrenger som tiltvinger seg system-rettigheter, og bruker disse for å unngå å bli oppdaget

Inntrengerne kan ha varierende kompetansenivå, fra amatørmessige nybegynnere til durkdrevne profesjonelle. Basert på det som offentliggjøres i den mer eller mindre kulørte pressen, er det klar et økende problem, helt fra den “snedige hackeren” som Cliff Stoll fortalte om i “The Cuckoo’s Egg” til dagens talende statistikker fra CERT og NSM.

Hva driver så disse inntrengerne med? Det kan være alt fra “godartede” aktiviteter drevet av nysgjerrighet til alvorlige ting som tilgang til sensitive data, endring av data, og total utslettelse av system. Også de “uskyldige” inntrengerne koster ressurser; administratorer må finne ut hva de har gjort, passord og nøkler må byttes ut, osv. Det faktum at inntrengere finnes bidro til at det ble opprettet responsenheter (eller CERTer – Computer Emergency Response Team) i flere større organisasjoner – i Norge har vi per i dag NorCERT, KraftCERT, FinansCERT, HelseCSIRT (Computer Security Incident Response Team), m.fl. (CERT er et varemerke fra Carnegie Mellon University). Teknikker og oppførselsmønster til inntrengere endrer seg stadig, men det er likevel en del felles egenskaper.

Eksempler på inntrenging

Inntrengere kan finne på mye rart. Det kan dreie seg om fjerntilgang til systemadministratorbrukeren, klotring på et nettsted (bytte ut nettsiden med et støtende eller villedende innhold), gjetting/knekking av passord, kopiering eller lesing av sensitive data eller databaser, kjøring av programvare for avlytting av datatrafikk (packet sniffer), distribusjon av piratkopiert programvare, gi seg ut for å være en gyldig bruker for å få resatt et passord, eller rett og slett bruke en ubevoktet datamaskin som ikke er låst. I gamle dager kan man også av og til ringe opp modem via telefon, og få tilgang til internett dersom modemet ikke hadde sikkerhetsmekanismer som brukernavn/passord – men nå er det vel ingen som bruker modem lenger.

Hackere

Mennesker som bryter seg inn i datamaskiner har i populærlitteraturen blitt kalt “hackere” – det har selvsagt vært masse diskusjoner om bruken av denne betegnelsen. Mange har valgt å gi hackerene hatter for å angi om de er snille eller slemme – hvite hatter for de snille, svarte for de slemme, og grå for de som er midt i mellom.

Gamle dagers hackere var ofte motivert av spenningen ved å få tilgang til et nytt system, og statusen dette ga i hackermiljøet. Denne var basert på hva man hadde fått til, og hvilken kunnskap og ferdigheter man har tilegnet seg. Såkalte “godartede” hackere kan kanskje tolereres, men de bruker ofte store ressurser og kan medføre ytelsesproblemer – og man kan ikke vite på forhånd om en inntrenger er ondsinnet eller ei.

Sikkerhetsmekanismer som inntrengningsdeteksjonssystemer (IDS) inntrengningsforhindringssystemer (IPS) eller virtuelle private nettverk (VPN) kan gjøre det vanskeligere for folk å trenge seg inn i et system. Bevissthet rundt inntrengere førte til at CERTer ble etablert, ikke bare for å hjelpe til “når det brenner”, men også for å samle informasjon om sårbarheter og for å bidra med å bedre oppmerksomhet, bevissthet og kunnskap om sikkerhet.

Eksempel på Hackeroppførsel

Her er et eksempel på hvordan en hacke kunne gått fram for noen år siden:

  1. Velg mål vha. oppslagsverktøy for IP-adresse
  2. Kartlegg nettverk for tilgjengelige tjenester
  3. Identifiser potensielt sårbare tjenester
  4. Gjett passord ved uttømmende søk
  5. Installer fjernadministreringsverktøy
  6. Vent på at administrator logger seg på, og snapp opp passord
  7. Bruk passord for å få tilgang til resten av nettverket

Nå ville man nok i større grad bruke forskjellige automatiserte verktøy.

Kriminell virksomhet

I våre dager er organiserte grupper av hackere mer av en trussel enn enkeltstående «teknologientusiaster». Det kan være alt fra kommersielle virksomheter, via statlige aktører, til mer løst sammensatte gjenger. Den enkelte hackeren er ofte ung, og vi har sett tendenser til mange er russiske eller øst-europeiske – men også kinesiske i senere år. Kredittkortnummer på ehandel-tjenere har vært populære mål, men i det siste har vi sett mange varianter, gjerne kombinert med bruk av forskjellig skadevare – utpresningsvare (ransomware) har vært en lukrativ inntektskilde for mange.

Kriminelle hackere har vanligvis spesifikke mål, og etter penetrering vil de handle raskt for så å trekke seg ut når de har gjort det de kom for. IDS / IPS kan hjelpe, men er ofte mindre effektive mot manuelt innrettede, tilpassede angrep. Konsekvensen er at sensitive data trenger sterk beskyttelse, ikke bare mot omverdenen, men også internt i et system.

Raske og presise handlinger gjør at inntrengeren vil være vanskeligere å detektere. Perimeteret kan forbigås gjennom sårbare porter, og man kan bruke trojanere og andre bakdører for å sørge for at man kan komme tilbake senere. Systemer som baserer seg primært på brukernavn/passord vil være sårbare for sniffere. Profesjonelle inntrengere vil ikke somle rundt i systemet til de blir oppdaget, og vil gjøre få eller ingen feil.

Insiderangrep

Angrep fra innsidere er blant de vanskeligste å detektere og forhindre. Ansatte har jo både lovlig tilgang og kunnskap om systemet, og er ideelt plassert dersom de ønsker å gjøre noe slemt. Et innsiderangrep kan være motivert av hevntanker eller at den ansatte mener at hun/han «fortjener mer», gjerne i forbindelse med oppsigelser. Bortsett fra forskjellige former for hærverk, har det vært relativt vanlig at ansatte tar med seg kundedata når de skal begynne å jobbe for en konkurrent.

IDS / IPS har ventelig lite å bidra med i denne sammenhengen, men det kan være mer å hente på å sørge for at ingen har tilgang til mer informasjon enn de trenger (minste privilegium), overvåke logger for å avdekke mistenkelig tilgang, bruke sterk autentisering (gjerne med flere faktorer), sikkerhetskopiering, og gjennomføre en termineringsprosess der den ansatte mister tilgang til sensitive data i oppsigelsesperioden.

Innsidere kan jo gjøre mye ugagn hvis de vil. Ting å se etter kan være om de oppretter ekstra brukerkonti for seg selv og sine venner (men dette er jo ganske grovt, da…), de kan aksessere brukerkonti og applikasjoner de normalt ikke ville ha behov for, de kan sende epost (presumtivt med sensitivt innhold) til tidligere og fremtidige arbeidsgivere, kan ha skjulte elektroniske samtaler gående, besøke nettsteder som henvender seg til misfornøyde ansatte, de kan foreta unormalt store nedlastinger og filkopieringer, og de kan aksessere nettverket på uvanlige tidspunkt. Husk imidlertid at denne listen er skrevet fra et amerikansk utgangspunkt, og mye av dette vil være å betrakte som uakseptabel overvåkning i Norge.

Inntrengningsteknikker

Målet for en inntrenger er å få tilgang og/eller øke privilegiene på et system. For å få til dette, bruker man ofte sårbarheter i operativsystemet eller applikasjoner. For systemer som baserer seg på brukernavn/passord er det som nevnt hendig om man kan få tak i slike, da kan man utføre diverse handlinger med samme rettigheter som den rettmessige eieren.

Gangen i et angrep er grovt sett: Identifisering av målet, samling av informasjon (rekognosering), enkel tilgang til systemet (som vanlig bruker), økning av privilegier (ofte ved hjelp av en sårbarhet), gjøre det man kom for å gjøre, og til slutt skjuling av alle spor.

Passordgjetting

Dette var tradisjonelt et av de vanligste angrepene. Angriperen kjenner til et brukernavn (fra en epost, en nettside, e.l.), og går så i gang med å gjette et tilhørende passord. Gode kandidater ville være forskjellige standardpassord, korte passord, vanlige ord, eller brukerinformasjon (navn i forskjellige avskygninger, fødselsdag, telefonnummer, interesser). Uttømmende søk av alle mulige passord kan gjøres automatisk, men krever vanligvis at man har tilgang til en passordfil. Om angriperen er suksessfull eller ei avhenger av hvor godt passord brukeren har valgt – og undersøkelser tyder på at mange brukere velger veldig dårlige passord.

Passordfangst

En annen variant går ut på å fange opp passord i bruk. Dette kan gjøres på forskjellige måter, enten ved å observere når en bruker taster inn passordet sitt (såkalt skuldersurfing), bruke en trojaner til å samle inn passordet, avlytte en usikret nettverkspålogging (f.eks. telnet, FTP, vevtilgang eller epost – men stadig færre som gjør dette ubeskyttet). Når man først er inne kan man finne ytterligere nyttig informasjon ved å hente ut vevhistorikk etc., og bruke tilgangen man har fått til å gi seg ut for å være denne brukeren. Mottiltak baserer seg mye på bevisstgjøring av brukere.

Inntrengningsdeteksjon (IDS)

I og med at det er umulig å lage systemer som er 100% sikre, kommer det til å skje sikkerhetsbrudd. Dette medfører at vi trenger å være i stand til å detektere inntrenginger etter at de har skjedd, slik at vi kan blokkere dem (dersom vi oppdager dem hurtig nok), avskrekke angripere, og samle informasjon for å forbedre sikkerheten. Vi antar at en inntrenger vil oppføre seg annerledes enn en gyldig bruker, men har ingen skuddsikker måte å skille dem på.

Tilnærminger til inntrengningsdeteksjon

Statistisk anomalideteksjon prøver å definere statistiske grenseverdier for hva som er normal eller forventet oppførsel, basert på en profilering av gyldige brukere. Regelbasert deteksjon prøver å definere hva som er “god” oppførsel, og detektere avvik. Man kan også samle informasjon om penetreringsmetoder, og detektere disse som et mønster.

Revisjon

Revisjon og logger er et fundamentalt verktøy for inntrengningsdeteksjon. Alle vanlige flerbruksoperativsystemer har innebygde revisjonssystemer som standardfunksjonalitet, men disse har ikke alltid den informasjonen man trenger i den ønskede formen. Deteksjonsspesifikke revisjonsspor er konstruert spesielt for å samle inn den nødvendige informasjonen, men medfører en kostnad i form av ekstraarbeidet det innebærer.

Statistisk anomalideteksjon

Anomalideteksjon kan være terskelbasert, der frekvensen av bestemte hendelser telles over tid, og hvis det overskrider et antall som ansees som “rimelig”, kan man anta at det dreier seg om en inntrenging. Alene er dette en grov og ganske ineffektiv deteksjonsmetode.

Profilbaserte metoder karakteriserer tidligere oppførsel til gyldige brukere, og detekterer vesentlige avvik fra dette. Profilen er vanligvis komplekst oppbygd, basert på flere parametere.

Analyse av revisjonslogger

Dette er fundamentet til statistiske tilnærminger; man analyserer loggdata for å etablere metrikker over tid: teller, måler, intervalltidtaker, ressursbruk. Man bruker så forskjellige tester på disse for å bestemme om nåværende oppførsel er akseptabel, her kan man pøse på med forventningsverdier, gjennomsnitt, varians, standardavvik, multivariat analyse markovprosesser, tidsserier, osv. osv. Man trenger i utgangspunktet ingen tidligere kunnskap om angrep og sårbarheter utover selve loggene.

Regelbasert inntrengningsdeteksjon

Man kan observere hendelser i et system, og anvende regler for å bestemme om en aktivitet er mistenkelig eller ei. Regelbasert anomalideteksjon analyserer historiske revisjonsspor for å identifisere gyldige bruksmønstre, og autogenererer regler for dem. Deretter observerer man nåværende oppførsel og sammenligner med reglene for å se om det harmonerer. På samme måte som statistisk anomalideteksjon, trenger man ikke eksisterende kunnskap om sikkerhetsfeil.

Regelbasertpenetreringsidentifikasjon bruker ekspertsystemteknologi med regler som identifiserer kjente penetreringer, sårbarhetsmønstre eller mistenkelig oppførsel. Man sammenligner så revisjonsspor eller tilstander med reglene. Reglene vil vanligvis være spesifikke for maskinvareplattform og operativsystem. Reglene genereres gjerne for hånd av eksperter som samler domenekunnskap fra sikkerhetsadministratorer; kvaliteten av reglene avhenger naturlig nok avhvor bra dette utføres.

Base-Rate Fallacy

Inntrenginngsdeteksjonssystemer har et fundamentalt problem: de må detektere en vesentlig andel av reelle inntrenginger, samtidig som antallet falske alarmer holdes lavt. Hvis for få inntrenginger detekteres, vil man ha en falsk følelse av trygghet; hvis det er for mange falske alarmer ender man opp med å enten ignorere dem, eller bruke urimelig mye tid på unødig tøys. Dette er en vanskelig balansegang, og eksisterende systemer har ikke utmerket seg på dette feltet.

Distribuert inntrengningsdeteksjon

Det tradisjonelle fokuset for IDS har vært enkeltsystemer, men i dag er jo det meste i nettverk. Et mer effektivt forsvarville være å samarbeide for å detektere inntrengere. Imidlertid har jo forskjellige systemer forskjellige loggformater, og det kan dessuten være konfidensialitetsaspekter ved data som sendes i forskjellige nett. Det er mulig å lage både sentraliserte og distribuerte arkitekturer.

Honningkrukker

En honningkrukke er et luresystem man kan bruke for å oppholde angripere, lure dem bort fra de virkelig kritiske systemene, og samle informasjon om deres aktiviteter. De er ofte utformet for å oppmuntre angriperen til å bruke tid på systemet slik at administratoren får tid til å respondere. En honningkrukke vil være fylt med mer eller mindre oppdiktet og irrelevant informasjon, og vil ofte ha ekstra mekanismer for å registrere hver lille ting angriperen gjør. De kan enten være et enkeltsystem eller en samling av maskiner i et nettverk. En honningkrukke vil vanligvis ikke ha noen verdi etter at den er avslørt, men flere har syslet med tanken om å ha dynamiske honningkrukker som kun opprettes når et angrep er underveis.

Passordadministrasjon

Passord representerer fortsatt frontlinjen mot inntrengere, og brukere vil oppgi brukernavn som identifiserer dem og bestemmer hvilke privilegier de har, og passord som autentiserer dem. Passord lagres (nesten) alltid kryptert på noe vis; Unix brukte tradisjonelt flere runder med DES (variant med salt), mer moderne systemer bruker en kryptografisk hashfunksjon. Muligheten for å kjøre uttømmende passordsøk mot en kryptert passordfil førte til at passordfilen ble beskyttet i det fleste systemer, slik at kun prosesser med systemrettigheter fikk tilgang.

Passordstudier

Det har opp gjennom tidene vært gjennomført flere passordstudier; Klein fant i 1990 at mange passord er gjettbare, og en studie ed Purdue in 1992 slo fast at mange korte passord var i bruk. Konklusjonen var at hvis man overlater det til brukerne, vil mange av dem ofte velge dårlige passord, så man trenger en tilnærming til å motvirke dette.

Administrasjon av passord – opplæring

Det går an å bruke retningslinjer og god brukeropplæring, hvor man forteller brukerne om viktigheten av å ha gode passord, og gir retningslinjer for gode passord. Tradisjonelt har vi brukt kriterier som minimum lengde (8 tegn eller mer), bruke en blanding av store og små bokstaver, tall og tegnsetting, og unngå ord som kan finnes i en ordliste. I våre dager er konsensus i passordkretser at det viktigste er å bruke en pass-frase, dvs. en setning snarere enn et passord. Dessverre viser det seg at det ikke hjelper med råd og retningslinjer; hvis man overlater det til brukerne, så kommer alt for mange av dem til å velge et dårlig passord.

Maskingenererte passord

Et alternativ kunne vært å la datamaskinen velge passord, men et tilfeldig passord er sannsynligvis umulig å huske, så de ville blitt skrevet ned på en gul lapp som sannsynligvis festes under tastaturet. Til og med uttalbare passord viser seg å være vanskelige å huske, og maskingenererte passord har en historie med dårlig aksept hos brukere.

Boken reklamerer for FIPS PUB 181 som en av de beste generatorene; den har både beskrivelse og eksempelkode, og genererer ord ved å sette sammen tilfeldige uttalbare stavelser.

Reaktiv sjekking av passord

For en tid tilbake var det populært blant systemadministratorer å reaktivt kjøre verktøy for å gjette passord – det finnes gode ordlister for nær sagt ethvert språk eller interessegruppe. Aktuelle verktøy var f.eks “Crack”. Hvis man klarer å knekke et passord, tar man og sperrer kontoen inntil det endres. Dette var imidlertid en ressurskrevende tilnærming, og eventuelle dårlige passord var sårbare inntil verktøyet fant dem.

Proaktiv sjekking av passord

Den mest lovende strategien er selvfølgelig å la brukerne velge egne passord, men sjekke at de er gode nok, og evt. nekte å akseptere de dårlige passordene brukeren angir. Dette kan gjøres ved å tvinge gjennom enkle kompleksitetsregler som nevnt over, men enkle regler klarer ofte ikke ta hensyn til økt sikkerhet fra passordlengde, slik at mange systemer ender opp med å nekte å akseptere et kjempebra passord på 30 tegn fordi det ikke har noen stor bokstav. Det går også an å sjekke mot en ordliste av kjente dårlige passord, eller bruke en algoritmisk metode (Markov-modell eller bloom-filter) for å detektere dårlige valg.

Illustrasjon ved Kyle McDonald CC BY 2.0