Skadevare

Dagens tekst er hentet fra kapittel 21 i Cryptography and Network Security, og handler om skumle ting som du kan bli smittet av på det store, stygge internettet – med andre ord, skadevare (malware).

Vi starter med en liten kjepphest: Skadevare er ikke ondsinnet programvare. Sist jeg sjekket, hadde Skynet ikke blitt selvbevisst, så vi har fortsatt ikke programvare som tenker selv, uavhengig av hva AI-gale investorer måtte tro om temaet. Skadevare er ondartet programvare; det som finnes av tenkning bak er foretatt av den som skrev programmet.

Dessuten bør det nevnes at mesteparten av innholdet i dette kapittelet er mer enn 10 år gammelt, så det framstår som litt foreldet.

Virus og annet ondartet innhold

Datavirus har fått mye publisitet; både i nyhetene, populærlitteraturen og i filmer, og det overdrives ofte. Virus er et av medlemmene i familien “skadevare”, og effekten er oftest åpenbar. Virus har kanskje fått mer oppmerksomhet enn de fortjener, men vi kan ikke ignorere risikoen de utgjør.

Bakdører

En bakdør er en hemmelig inngangspunkt i et program som tillater den som kjenner til den å omgå vanlige sikkerhetsprosedyrer. Dette er noe som tidligere har vært brukt av utviklere for å sikre kjapp tilgang til forskjellige funksjoner mens programmet er under utvikling, men representerer en trussel dersom de ikke fjernes før produktet når markedet, slik at de kan oppdages av angripere. I våre dager regnes det å legge inn slike bakdører i beste fall for uaktsomt eller direkte illojalt. Skadevare pleier imidlertid ofte å legge inn slike bakdører når et system infiseres.

Logisk bombe

Dette er en av de eldste formene for ondartet programvare. Det er ofte kode som er innbakt i et legitimt program, som aktiveres når spesifikke forutsetninger er til stede, f.eks. tilstedeværelse eller fravær av en bestemt fil, en gitt dag/tid, eller at en gitt bruker logger inn. Det finnes historier om programmerere eller systemansvarlige som har lagt inn logiske bomber som utløses dersom navnet deres fjernes fra ansattlistene.

Når en logisk bombe utløses, medfører det vanligvis skade på systemet; filer endres eller slettes, disker formatteres, eller systemet kræsjer.

Trojansk hest

En trojansk hest (eller trojaner) er et program med skjulte bi-virkninger. Den vil vanligvis framstå som attraktiv på noe vis, f.eks. et kult spill eller en viktig programvareoppdatering (ref. Dragonfly). Når den kjøres vil den typisk kjøre noen ekstra kommandoer i bakgrunnen, ofte for å la angriperen få indirekte tilgang til systemet f.eks. ved å installere en bakdør. En trojaner kan også brukes for å spre et virus eller en orm, eller ganske enkelt ødelegge data.

Zombie

Det kan diskuteres om dette egentlig er en egen type skadevare, eller bare et symptom. Uansett, dette kaller vi en datamaskin som er tatt over av annen skadevare, og som kan fjernstyres av en angriper, f.eks. for å indirekte foreta angrep mot en tredjepart. Ofte brukes dette for å foreta et distribuert tjenestenektangrep (DDoS), hvor tusenvis av slike zombier instrueres til å sende trafikk mot uskyldige offer.

Mobil kode

Mobil kode er et program, script eller makro som kjører uforandret på et heterogent utvalg av plattformer eller en stor homogen gruppe (f.eks. Microsoft Windows). Slik kode sendes fra ett fjernt system og kjøres på det locale systemet. Mobil kode brukes ofte for å injisere et virus eller en orm – eller så representerer den mobile koden selve ormen. Den mobile koden kan følgelig ha innebygget egne utnyttelser av sårbarheter (exploits) som brukes til å få urettmessig tilgang til data eller rettigheter på det utsatte systemet.

Flertrussel-skadevare

I de senere år har vi sett at skadevare ikke så lett lar seg sette i bås – for 10-15 år siden kunne eksperter bruke masse tid og energi på å diskutere om en gitt type skadevare var en orm eller et virus, men nå ser vi ofte at et gitt eksemplar har egenskaper til flere av de forskjellige typene skadevare beskrevet over. Et multipartitt virus kan infisere på flere forskjellige måter og påvirke flere forskjellige typer filer. Et blandet angrep vil bruke flere forskjellige måter for å spre seg og infisere målet for å maksimere spredningshastighet og konsekvenser. Nimda hadde for eksempel komponenter som kunne klassifiseres som orm, virus og mobil kode. Skadevare kan også bruke mer utradisjonelle måter å spre seg på, som lynmeldinger (Instant Messaging) eller fildelingsnettverk.

Virus

Et virus er et stykke programvare som infiserer andre programmer ved å modifisere dem til å inneholde en kopi av viruset, slik at det kjører skjult når programmet kjøres. De vi i utgangspunktet være spesifikke til en gitt maskinvare og operativsystem, og vil følgelig utnytte deres spesifikke muligheter og sårbarheter. Et typisk virus vil gå gjennom flere faser (ikke nødvendigvis i denne rekkefølgen): Hvilefase, spredningsfase, utløsningsfase, og kjøring.

Virus-struktur

Et virus består typisk av tre komponenter; en infeksjonsmekanisme som muliggjør spredning, en utløsermekanisme som aktiverer nyttelasten, og selve nyttelasten som er det viruset faktisk gjør – vanligvis et eller annet ondartet. Viruset kan rent praktisk hektes foran det infiserte programmet, hektes bak, eller inne i programmet et sted. Ofte vil det være organisert slik at når det infiserte programmet kjører, så vil viruset kjøre først, og deretter det originale programmet.

Det er mulig å blokkere selve infeksjonen (men dette er vanskelig), eller spredningen vha. aksesskontroll.

Virusklassifisering

Datavirus har vært kjent som tanke-eksperimenter og science fiction allerede på 70-tallet. Det første kjente PC-viruset observert i “vill tilstand” var “Brain”-viruset i 1986. Det stammet fra Lahore, Pakistan, og var utviklet av to brødre som drev en programvarevirksomhet – det ble påstått at hensikten var å være en kopibeskyttelse, men hovedeffekten av viruset var å endre “merkelappen” på disketten til “(c) Brain”. Brain infiserte mengder av amerikanske universiteter sent på 80-tallet.

Brain var et eksempel på et “boot sector” virus, og skrev over området på en diskett som var ment for oppstart av operativsystemet (den gang operativsystemer kunne finnes på en diskett). Andre virus infiserte enkelt-filer, og det finnes også såkalte makrovirus (se under).

Virus kan også ha andre egenskaper; enkelte er krypterte slik at de er vanskeligere å analysere – de inneholder da en liten snutt som brukes til å dekryptere viruskoden før den kjører. Slike virus er ofte samtidig “lavtflyvende” (stealth), dvs. vanskelige å oppdage, og holder seg gjerne godt skjult før de utløses. En annen måte å unngå oppdagelse er å være polymorft, dvs. ta forskjellige former i forskjellige instanser; ofte betyr dette at viruset er metamorft, dvs., endrer seg ved hver spredning. Polymorfe/metamorfe virus kan være vanskelig å oppdage med signaturer, ettersom signaturene også kan endre seg ved hver spredning.

Makrovirus

En makro er et program som kjører inne i at annet program, typisk for å automatisere editeringsfunksjoner. Tidlig på 90-tallet fant Microsoft ut at det sikkert ville være kjempepraktisk å kunne ha makroer i som kunne utføres automatisk hver gang et gitt dokument eller regneark ble åpnet. Spesielt var dette praktisk for de som lager virus, og makrovirus ble følgelig veldig vanlig midt på 90-tallet.

Et makrovirus er typisk plattformuavhengig (Microsoft Word fantes både for Windows og andre operativsystemer), og infiserer dokumenter slik at de spres lett. En makro er ofte implementert i en form for Basic. Senere utgaver av tekstbehandlere og regneark osv. har nå forbedret beskyttelse mot makrovirus, og de blir gjenkjent av mange antivirusprogrammer.

Epostvirus

Epostvirus hevdes av boken å være en mer nylig utvikling, men også her har det eksistert varianter i mange år. Et eksempel fra sent på 90-tallet er Melissa-viruset, som var en MS Word makro i et dokument som ble sendt som vedlegg. Hvis vedlegget ble åpnet, ble makroen aktivert ved å sende dokumentet videre til alle i brukerens adresseliste, i tillegg til å gjøre lokal ugagn.

Senere epostvirus benyttet seg av en sårbarhet i Internet Explorers behandling av <iframe> elementer i HTML epost, slik at brukere kunne bli infisert ved kun å lese eposten, uten å åpne noe vedlegg. Dette gjorde at spredningen gikk mye raskere.

Virus mottiltak

Det beste er å forhindre infeksjon, men det er vanskelig. Et eksperiment vi gjorde for ti år siden bekreftet at uansett om man har antivirusbeskyttelse, så vil man bli infisert hvis man har et tilstrekkelig risikabelt handlingsmønster på nettet. Realistisk så trenger man mekanismer for å detektere, identifisere og fjerne virus fra infiserte systemer. Hvis viruset kan detekteres, men ikke lar seg fjerne, må man forkaste og erstatte det infiserte programmet.

Antivirus evolusjon

Både virusteknologi og antivirus har utviklet seg i løpet av årene. Tidlige virus bestod av ganske enkel kode, og var lette å fjerne, men ettersom virus blir mer avanserte, må mottiltakene følge med. Første generasjon antivirus var enkle signatur-baserte søkeverktøy som baserte deteksjon på å kjenne igjen bestemte bitmønstre i viruskoden. Andre generasjon bygde videre på slik heurestikk med å kjenne igjen bestemte fragmenter, og brukte hash for integritetssjekk av filer (f.eks. Tripwire). Tredje generasjon antivirus gjenkjente bestemte handlinger som kunne karakterisere et virus (f.eks. det å skrive til oppstarts-sektoren på et flyttbart lagringsmedium). Fjerde generasjon kombinerte flere forskjellige metoder.

Generisk dekrypering

En måte å detektere virus på er å sende kjørbare filer gjennom et verktøy som har en CPU-emulator for å tolke instruksjoner (dvs. kjører programmet som skal undersøkes i emulatoren), antivirusfunksjonalitet for å søke etter kjente virussignaturer, og en emuleringskontrollmodul for å styre prosessen. Dersom filen inneholder et kryptert virus, lar emulatoren det dekryptere seg i det virtuelle miljøet, og kan deretter søke periodisk etter virussignaturer.

Det vil være en avveining hvor lenge man skal la et program kjøre i emulatoren og søke etter virus, jo lengre man emulerer jo mer øker presumtivt sannsynligheten for at viruset aktiveres og lar seg detektere, men samtidig øker jo forsinkelsen før man får brukt programmet til noe fornuftig. Senere virus har brukt mekanismer for å detektere om de kjører i en emulator, og i så fall la være å aktiver seg. Imidlertid har denne strategien kanskje blitt tatt igjen av teknologien, for med virtualisering og nettsky kjører stadig flere programmer kun på virtuelle datamaskiner, som viruset neppe kan skille fra en emulator.

Ormer

En orm er et selvkopierende program som sprer seg over nettet; det kan bruke epost, fjerneksekvering, eller fjerninnlogging. Den har faser på samme måte som virus: hvile, spredning, utløsning og utføring. I spredningsfasen vil en orm søke etter andre systemer, koble seg til et system hvis mulig, og så kopiere seg over til det nye systemet og kjøre ormekoden der. En orm vil typisk forkle seg som en systemprosess, og holde seg mest mulig skjult før den eventuelt foretar noen lokale handlinger.

Konseptet “dataorm” ble introdusert av Science Fiction forfatteren John Brunner i romanen “Shockwave Rider” fra 1975, og ble implementert som et eksperiment av Xerox Palo Alto Research Center på 80-tallet.

Morris-ormen

En av de mest kjente ormene noensinne kalles “Internett-ormen” eller rett og slett “morris-ormen” etter mannen som skapte den, Robert T. Morris. Den slapp ut i verden i 1988, og brukte forskjellige angrep mot Unix-maskiner for å spre seg. Den hadde en liste av ofte brukte brukernavn og passord som den prøvde å logge seg inn med. Dessuten utnyttet den sårbarheter i systemprogrammene “finger” og “sendmail” som kunne gi tilgang til et skall på målmaskinen. Så snart den fikk tilgang, sendte den over en liten programsnutt som lastet ned hovedkoden til ormen, og startet den.

Ormen hadde i utgangspunktet ingen skadelige effekter, men problemet var at den infiserte maskiner flere ganger, så mange ganger at maskinene etter hvert fikk problemer med å utføre oppgavene sine.

“Nylige” ormeangrep

Det har ikke vært skrevet veldig mye om ormeangrep det siste tiåret, men tidlig på 2000-tallet var dette veldig populært. I juli 2001 kom Code Red, som utnyttet en sårbarhet i Microsofts vevtjener Internet Information Service (IIS). Den søkte etter tilfeldige IP-adresser for å spre seg videre, og utførte DDoS-angrep på kommando. Varianten Code Red II la til den fiffige egenskapen at den la inn en bakdør på infiserte systemer. SQL Slammer kom tidlig i 2003, men angrep kun MS SQL Server, og påvirket derfor ikke så mange personlige datamaskiner.

Blaster ormen påvirket imidlertid alle Windows 2000 og Windows XP maskiner, og spredde seg fort fra den ble sluppet i august 2003. Det samme gjaldt Sasser-ormen som kom året etterpå, og i en periode var det så ille at det rett og slett var umulig å installere en ny Windows XP PC mens den var koblet til internett – den ble infisert av en orm før installasjonen var helt ferdig, og før man hadde mulighet til å installere oppgraderinger som tettet hullet som ormene brukte.

Mydoom var en annen masse-utsendende epost-orm fra 2004 som blant andre ting installerte en bakdør på infiserte systemer. Det fantes også Warezov familien av ormer som scannet det infiserte systemet for epostadresser og så sendte seg selv videre som et vedlegg.

Som illustrasjonen over viser, så vi også en trend der “lappe-vinduet” (dvs. tiden fra en oppdatering som lukket en sårbarhet ble publisert, til tiden den første ormen som benyttet seg av sårbarheten dukket opp) krympet alvorlig, til punktet at vinduet ble negativt, dvs. at ormer benyttet seg av sårbarheter som det da ikke fantes oppdateringer for. Dette kalles “null-dags-utnyttelse” (zero-day exploit).

Ormteknologi

De mest suksessfulle ormene var multiplatform og benyttet seg av flere forskjellige sårbarheter for infeksjon og spredning. Spesielt populært har vært sårbarheter det ikke finnes oppdateringer for. Mange har spredd seg ultraraskt, og oppdagelse har vært vanskelig pga. polymorfe (hvordan de ser ut) og metamorfe (hva de gjør) egenskaper. Ormer har benyttet seg av forskjellige transportmetoder; epost, direkte kommunikasjon mot bestemte tjenester, og mer.

Mobiltelefonormer

Ormer på mobiltelefoner dukket først opp i 2004, og rettet seg naturlig nok inn mot smarttelefoner som har mulighet for å installere programvare. Populære kommunikasjonsalternativer var Blåtann eller MMS, og konsekvensene kunne være at telefonen ble satt ut av drift, data på telefonen ble slettet, eller sending av meldinger til betalingstjenester i utlandet, som forårsaket høye telefonregninger for offeret. Boken nevner CommWarrior fra 2005 som eksempel, den påvirket Symbian-telefoner (typisk fra Nokia), og spredde seg ved bruk av blåtann til telefoner i nærheten, eller via MMS ved å bruke telefonnummer fra adresseboken.

Orm mottiltak

Mottiltak mot ormer overlapper i stor grad med anti-virus teknikker. Når ormen først er kommet inn i systemet, vil den ofte kunne detekteres av antivirusverktøy. Ormer forårsaker ofte betydelig nettaktivitet, som kan detekteres av inntrengingsdeteksjonssystemer.

Ormeforsvar kan omfatte signaturbasert filtrering der man søker etter en bestemt bitstreng som identifiserer ormen, innholdsbasert filtrering hvor man ser på hva koden gjør for å avgjøre om den er en orm eller ei, anomalibaserte teknikker som ser på trafikk generert av ormene, trafikkanalyse for å se om kommunikasjonsmønsteret er som man kunne forvente eller muligens generert av en tilfeldig algoritme. Virkningen av en orm kan reduseres ved å strupe igjen utgående trafikk ved orme-mistanke, eller stoppe trafikk til/fra gitte porter fullstendig dersom disse knyttes til et bestemt angrep.

Distribuerte tjenestenektangrep (DDoS)

Distribuerte tjenestenektangrep (DDoS) utgjør en vesentlig trussel, og kan gjøre nettverksbaserte systemer utilgjengelige i lange perioder ved å pøse inn unyttig trafikk fra et stort antall “zombier”. Slike angrep har blitt stadig mer sofistikerte, og det som finnes av forsvarsmekanismer har hatt problemer med å håndtere dem.

Hvordan lage et angrepsnettverk

Angriperen må først lage et stort antall zombier. Dette kan gjøres på flere forskjellige måter, enten ved å utnytte en sårbarhet på mange systemer, eller å bruke en spredningsmekanisme som epost, frittstående trojaner, e.l. Hvis man satser på aktiv spredning må man ha en strategi for å lete etter sårbare systemer; tilfeldig søk, en bestemt liste, topologisk avgrenset, eller hele det lokale subnettet. Dessuten trenger angriperen programvare for å styre angrepet, og en mulighet for å kommunisere med zombiene; Internet Relay Chat (IRC) har vært et populært valg for sistnevnte.

DDoS mottiltak

Det er grovt sett tre typer mottiltak mot DDoS:

  1. Forhindring og avskjæring av angrep (før)
  2. Deteksjon og filtrering av angrep (mens)
  3. Tilbakesporing av angrepskilde og identifikasjon (etter)

Det er et enormt spenn av angrepsmuligheter, og følgelig må mottiltakene utvikle seg. Internettleverandører kan bidra på flere plan, bl.a. ved å detektere datamaskiner i sitt nett som pøser ut DDoS og annen tvilsom trafikk, og stenge dem ute fra sitt nett inntil de er blitt oppgradert og sikret. Det er viktig å påpeke at å spore angrep tilbake til individuelle zombier er liten hjelp i å identifisere den som egentlig står bak det hele.

 

Illustrasjon ved Lee Davy (CC BY 2.0)