Autorun/AutoPlay i detalj

AutoRun og AutoPlay er velkjente og mye omdiskuterte funksjoner. Med tanke på sikkerheten, kanskje rett og slett ikke verdens beste funksjoner...

Men uansett, tenkte her å gå i detalj om hvordan de faktisk funker, fikk lyst til å grave litt i dette. Først og fremst Autorun. Enkelte firmaer har fått problemer lignende den gamle spredningen av virus via floppy disker som tas med mellom hjemmemaskin og jobbmaskin, men nå er det USB minnepinner med Autorun det er snakk om. For å ikke snakke om hvilke angrepsvektorer dette åpner for folk med mer eller mindre kriminelle hensikter.

 

Bakgrunn og problem

Autorun er en funksjon i Explorer og håndteres av prosessen kalt explorer.exe på systemet ditt. (Dersom du har satt opp alle explorer instanser til å starte som ulike prosesser vil det være den første explorer.exe prosessen, som jo er shellet ditt) I all enkelhet ser den da etter fila autorun.inf i root på devicen som er koblet til. Syntaksen i denne fila kan være rimelig enkel:

 [autorun]
OPEN=Autorun\ShelExec default.htm

Hentet fra en Msdn CD. Som du sikkert er med på betyr dette at programmet shelexec i folderen autorun blir startet, med gitt parameter. Hvorfor er dette dumt? Vel, se for deg at noen legger ut et par minnepinner på parkeringsplassen bedriften din bruker, eller kanskje røykeplassen. (utprøvd teknikk). Jeg kan garantere deg at den god del personer ville tatt dem med inn og plugga dem i maskina si, bare for å se om det var noe spennende på dem (og om de kan ta den i bruk selv). Med Autorun på vil da et program kunne starte... og dette programmet kan for eksempel ta passord hashene på maskina, info om nettverket ditt og annen spennende informasjon og sende dette ut på nettet et sted, der det så kan hentes av en ventende mottager.

Eller kanskje en av brukerne i bedriften din har satt fra seg maskina si på en konferanse, riktignok låst i henhold til reglene, men likevel. En person setter inn en U3 usb minnepinne som er satt opp med f. eks Hacksaw eller Switchblade, programmer som kan hente ut masser av info eller lignende. (du finner artikler om programmene nevnt på https://wiki.hak5.org/)

Og for de som syns de scenarioene virker lite sannsynlig, hva med brukeren din som tar med seg filer mellom jobb og hjemme på USB minnepinner? Via denne kan det bli diverse "artigheter" inn i nettet ditt. 

 

Autoplay er en noe annerledes funksjon, den lar deg velge program som skal startes basert på hva slags type media og innhold som blir funnet. Slik kan for eksempel det å sette inn en musikk CD medføre at Windows Media Player blir startet. Dette åpner forsåvidt også en angrepsvektor, om enn vesentlig mer tungvint. Det er da teoretisk mulig å for eksempel utnytte kjente hull tilknyttet media avspilling til å angripe maskinen. En oppdatert maskin vil selvsagt sikre deg i stor grad mot dette.

En helt annen diskusjon er jo at om brukerne dine kjører som standard bruker istedetfor lokal admin, isåfall er ikke dette lenger på langt nær en så stor sikkerhetrisiko.

 

I all enkelhet skjer følgende:

  • Du setter inn en usb stick eller cd
  • Windows sjekker om Autorun er skrudd helt av
  • Windows Vista sjekker hva slags cd det er. Om det er en video dvd, musikk eller lignende går det rett til Autoplay for slike formater.
    • Hvis ikke, sjekk etter autorun.inf fila

      • Hvis ikke autorun.inf, sjekk etter AutoPlay filer
    • Hvis AutoRun er skrudd av, ikke gjør noe

 

Kontroll med AutoRun og Autoplay

Først og fremst kan du styre dette lokalt på din egen maskin. På Windows Vista er begge deler samlet under control panel aplet'en som heter Autoplay, enkelt og greit. Der kan du spesifisere hva som skal skje basert hva slags innhold det er. Der snakker vi stort sett autoplay, f.eks start media player dersom det er en Audio CD som settes i. Det er derimot en egen kategori for "Software and games" og der kan du velge "Install or Run program" som standard automatisk oppgave. Dette vil isåfall medføre at programmer definert i autorun fila på devicen blir kjørt. Dette er altså Autorun funksjonen. Min anbefalning er egentlig å huke av krysset helt på toppen slik at du skrur av både autoplay og autorun for alle enheter. Men i minste fall bør du sette "Software and Games" til alt annet enn "Install or Run".

Det er også en annen viktig forskjell når det gjelder Autorun og Windows Vista: I tidligere Windows utgaver var Autorun default satt til å kjøre Autorun programmet, mens i Windows Vista er default å spørre brukeren. Autorun kjøringer kommer da opp som eget valg i dialogboksen, sammen med slike valg som "Open folder to view files" osv. Altså en del tryggere. Bortsett fra at brukeren kan krysse av for "Always do this"...

 

Klikk for større bilde

 

Dette kan selvsagt styres via group policy også. Du finner innstillingene under "User Configuration\Administrative Templates\Windows Components\AutoPlay Policies". (finnes under Machine config også)

En opsjon der heter så mye som "Turn off Autoplay". Med denne kan du velge å skru av for alle devicer eller bare CD og Removable.

Opsjonen som heter "Default behavior for AutoRun" lar deg velge om programmer definert i autorun fila skal kjøres automatisk eller ikke. Denne setter du selvsagt til å aldri kjøre autorun programmer.

 

Du kan også editere dette i registry direkte.

Key: HKEY_LOCAL_MACHINE \Software\Microsoft\ Windows\CurrentVersion \Policies\Explorer

Dword: NoDriveTypeAutoRun

Verdien 0xFF slår av for alle typer drives. I Group Policy templaten for innstillingene jeg nevnte over har du som sagt to valg, der finner du igjen denne registry nøkkelen og verdien for å skru av både CD og Removable devices: desimal 181. Endringer du gjør lokalt for Autorun trer i kraft med en gang, ikke påkrevd med restart eller noe. (Group policy templaten finner du i c:\windows\PolicyDefinitions\Autoplay.admx)

 

Slik kan du altså styre det lokalt, sentralt med GP eller bruke registry settings via scripts. Brukerens innstillinger for autoplay handlers finner du under

Key: \Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\

Det er en ting som er verdt å merke seg, og det er at Windows Vista husker hvilke devicer den har sett før. Dette lagres under HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2

Og dersom Windows Vista har brukt enheten før vil samme action som sist bli utført, uavhengig av dine Autorun innstillinger. Moralen er: Skru av dette i GP fra dag en. Om du ikke gjør det, slett innholdet der på alle maskiner når du disabler autorun hvis du virkelig vil sikre deg.

Nick Brown har en interessant blog post om dette, der han skriver om problemer de har hatt med Ormer som kommer inn via USB pinner. De syns ikke det var trygt nok å skulle håndtere policier og måtte slette MountPoints2 pr bruker. De endte derfor opp med en interessant hack via IniFileMapping. Det de gjør er rett og slett å redirigere Windows hver gang den leter etter en fil kalt Autorun.inf. Dette er ment for å redirigere eldre Ini filer til riktige steder i registry, men funker fint når de redirigere til en tom plassering. Sees da som en tom Autorun.inf av Windows og vil også påvirke USB pinner som Windows Vista gjenkjenner og har lagret fra før.

La oss heller ikke glemme at du i Windows Vista kan blokkere ulike typer devicer fra å installeres på maskina. Les mer her. Ikke alltid det er en passende løsning, men i enkelte scenarioer er det veldig nyttig. (Var faktisk flere bedrifter, gjerne innen Helse eller Forsvar, som brukte Lim i USB portene for å oppnå dette med XP)

 

Hva skjer faktisk mot disken

Dette måtte jeg jo også se nærmere på, ved bruk av Sysinternals Process Monitor (procmon.exe ersatter Filemon på Vista). Tester med en MSDN CD, altså en Data cd, først med Autoplay/autorun på fullt og deretter med alt slått av. Filtrerer på kun hendelser fra explorer.exe med path som starter med D:. Se bildene under:

Klikk for større bilde

Over er altså autorun på. Som du ser finner Explorer en Autorun.inf fil og derfor leter den ikke etter mer. Under er Autorun/autoplay skrudd av via Control Panel.

autorun-av

Ned til å hente inn info om enheten/media og sjekke om Dirty flag er satt er det likt, men der stopper det uten Autoplay/autorun. Det er en del som hevder det ikke er mulig å skru av Autoplay helt fordi alt dette skjer likevel, men det er rett og slett feil. Det som skjer her er relatert til AutoMount i Windows. Alle storage enheter forsøkes å mountes direkte med en gang de kobles til og da må man hente inn info om hva slags media det er. Og når det gjelder de fleste storage enheter kan det jo være en rekke ulike konfigurasjoner, Allocation units, filsystem osv. Dette er jo en av tingene som man merker stor forskjell på mellom Windows og Linux, selvom det jo etterhvert er noe automount i Linux distroer også. Og i motsetning til Autorun er jeg for Automount.

 

Hvis jeg setter inn en musikk CD skjer følgende om autoplay ikke er på:

autoplay cd av

Dersom Autoplay står på skjer det ikke noe mer enn at Autoplay dialogboksen åpnes og spør om jeg vil spille av musikken. Dette er fordi Windows allerede i første query som utføres har fått info som tilsier at dette er en musikk cd, ikke data cd.

Derimot en data DVD som er brent med UDF filformat gjør at Vista må utføre flere kall mot DVD'en for å hente ut nødvendig info om innholdet.  Uten at jeg er noen ekspert på UDF regner jeg med dette har med filsystemets oppbygging å gjøre, spesielt relatert til varianten med VAT, såkalt incremental writing som brukes til ikke re-writable media, som gjør at det må leses fra flere steder på disken for å hente inn den totale filtabellen. (Kanskje noen som kan kommentere på det?)

autoplay på udf

 

MountPoints2 og AutoPlayHandlers

Jeg nevnte denne registernøkkelen tidligere. Windows Vista lagrer data om removable storage enheter den har sett der, inkludert nettverksshare.

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2

 klikk for større bilde

Kjapt uttrekk fra en av labmaskinene mine. Her ser vi Windows husker autorun fila fra en USB disk jeg har.

 

HKEY_CURRENT_USER\ Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\

klikk for større bilde

AutoPlayHandlers er en interessant reg key. Som du ser finner du Default Handlers og UserChosen Handlers. Dvs de valgene du setter opp i Control Panel\Autoplay. Det som er spesielt verdt å merke seg her er KnownDevices og ikke minst at de kan ha en egen definert Device handler. Her kan det da utføres en standard action hver gang akkurat den devicen kobles til. (Som dere ser er det et digitalkamera. Og standard action er satt til PromptEachTime, så ingen fare denne gangen).