Monthly Archives

4 Articles

Powershell/Windows 7

Bluescreen på maskina mi!!

Posted by ragnar harper on

Maskina fikk blåskjerm her om dagen , og det var lenge siden sist. Endelig får jeg prøvd litt troubleshooting, tenkte jeg.

I min iver fyrte jeg opp maskina igjen – og fant memory.dmp i c:\windows mappa. Jeg startet WinDbg som jeg har installert på maskina (og som jeg har satt opp med Symbols) og lastet inn minnedumpen.

Ganske raskt fikk jeg følgende skjermbilde:

image

Probably caused by : bcmw1664.sys .

Da måtte jeg jo finne ut hvem som har denne fila – og det står jo i registry – nemlig under HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

Så mitt neste steg blir da å fyre opp Powershell, og jeg lister ut alt som er under denne nøkkelen i registry. Det viser seg å være ganske mye, så derfor lokaliserer jeg den med følgende Powershell kommando:

get-childitem -path hklm:\System\CurrentControlSet\Services | foreach-object {if((Get-ItemProperty $_.Psath).ImagePath -match "bcmwl664.sys") {Get-ItemProperty $_.PSPath | format-list}}

Ikke overraskende ser det slik ut:

image

Broadcom Network adapter …

Neste steget blir da å finne ut om jeg har oppdatert driver 🙂

Nok en spennende dag – gjort enklere med Powershell 🙂

Active Directory/Powershell

Powershell og Group Policy – noen praktiske eksempler på bruk

Posted by ragnar harper on

Idag fikk jeg en forespørsel om eksempler på hvordan man kan bruke Powershell iforbindelse med group policy.

Eksemplene mine kjøres på Windows 7 eller på Windows Server 2008 R2.

Jeg starter med å importere modulen som inneholder Group Policy kommandoene:

Import-Module GroupPolicy

Vi kan starte med å liste ut alle Group Policy Object (GPO) som er definert:

Get-GPO -All

image

Ett eksempel er å liste ut alle GPO’er som er endret iløpet av de siste 3 ukene.

get-gpo -all | where {$_.ModificationTime -gt (Get-Date).AddDays(-21)}

I dette eksemplet lister vi kun de GPO’ene som er endret (har ModificationTime som er større enn)  datoen for 21 dager siden.

image

Videre kan vi ta ut rapporter på hvilke innstillinger som er satt:

get-gpo -all | where {$_.ModificationTime -gt (Get-Date).AddDays(-21)} | Get-GPOReport -ReportType Html | out-file GPOEndret.html

image

Man kan også enkelt ta backup av GPO’er med cmdlet’en Backup-GPO , og man kan kjøre restore med Restore-GPO

For eksempel tar jeg backup av alle GPO’er med eksemplet under, og lager disse på \\server1\gpobackups:

Backup-Gpo -All -Path \\Server1\GpoBackups

Om jeg for istedet kun ønsket å ta backup av de GPO’er som var endret iløpet av de siste tre uker, kan jeg gjøre det slik:

get-gpo -all | where {$_.ModificationTime -gt (Get-Date).AddDays(-21)} | backup-gpo -path c:\
backup

image

Likeså kan man kjøre tilbake backup med Restore-Gpo:

Restore-Gpo -Name "AppLocker Policy" -path \\Server1\GpoBackups

image

Jeg kan også kjøre Restore av alle GPO’er ved å benytte parameteren –All på Restore-GPO.

I denne posten har jeg gått igjennom noen praktiske eksempler. Jeg tar gjerne imot forslag til nye guider eller poster 🙂

Happy scripting!

Guide/Infrastruktur2.0

Infrastruktur 2.0 – en liten guide

Posted by ragnar harper on

Nå som ferien er over er det vel på tide å få skrevet litt igjen. Jeg har de siste to årene jobbet mye med det jeg kaller “Infrastruktur 2.0”, og jeg har tenkt å skrive en liten artikkel serie om dette.

IT-industrien har vært igjennom en del endringer også tidligere, og denne gangen skjer det virkelig ett paradigmeskifte. Jeg tenker selvsagt på nettskyen. Skal du jobbe i IT de kommende årene bør du sette deg grundig inn i nettskyen. (og Powershell bør du uansett beherske….)

Infrastruktur 2.0 handler om hvordan vi bygger en infrastruktur som er dynamisk og fleksibel, gir oss frigjøring fra fysisk lokasjon, samt støtter IT-løsninger lokalt, hos partnere og i nettskyen. De fleste kommer til å få hybrider – hvor de har løsninger kjørende flere steder.

Med en slik endring i tilnærming må vi også endre hvordan vi designer og implementerer grunnleggende komponenter i vår infrastruktur. Virtualisering er selvsagt en viktig egenskap for ditt datasenter – det samme gjelder automatisering og brukervennlige løsninger fjernadgang til ditt datasenter.  Vi må også strekke identiteten vår ut i nettskyen og til partnere, vi må ivareta informasjonsflyt mellom applikasjoner som kjører i ulike datasentre – og vi må sørge for informasjonssikkerhet uavhengig av den fysiske lokasjon til informasjonen.

Jeg tenker å ta for meg de siste elementene i denne serien – integrasjon mellom tjenestene, identitet og informasjonssikkerhet. Mitt fokus kommer til å ligge rundt Microsoft sine produkter og løsninger.

Powershell/Sikkerhet

Noen tanker rundt sikkerhet, Powershell og skuespill

Posted by ragnar harper on

Det er med forundring jeg iaktar sikkerhetsteateret som fortsatt spilles i programvareindustrien. For eksempel selges kryptering fortsatt som en magisk formel som sikrer sikkerhet, og jo større nøkkellengde, jo bedre. De matematiske egenskapene som krypteringen hviler på er sjelden de reelle utfordringene som sikkerheten faktisk møter. Det er i selve implementeringen av sikkerhet at vi feiler. I implementeringen av kryptering – ikke i det matematiske grunnlaget for kryptering. Det spiller derfor sjelden en stor rolle om krypteringen er 128, 256 eller 512 bits – så lenge man kan gå rundt.

Om du låser døra med verdens beste låser – hva betyr vel det så lenge du lar vinduet stå åpent?

Sagt på en annen måte, det hjelper ikke hvor tykk døra er når vinduet står åpent.

Det er lett å glemme , men uansett like viktig, at sikkerheten aldri blir bedre enn det dårligste leddet i en kjede av elementer. I den virkelige verden er det enda lettere å faktisk oppdage at vinduet står oppe, enn det er i den virtuelle verden.

I den virkelige verden hvor man har behov for høy sikkerhet er det mange problemstillinger som ødelegger muligheten for maksimal sikkerhet. Elementer som brukervennlighet, bakoverkompabilitet og ytelse kommer ofte, eller alltid, foran sikkerhet.

Istedet konsentrerer vi sikkerhet rundt et teaterstykke, hvor vi “føler” oss trygge. Vi skaper en illusjon om at noe er sikkert. I programvare versjonen av dette teaterstykket er begrep som nøkkellengde viktig. Andre ting vi føler er utrygt er hashingalgoritmer, på grunn av “birthday” syndromet som disse har. Vi gidder ikke ta innover oss den faktiske reelle betydningen av problemstillingene, da disse ikke passer inn i teaterstykket.

For å kunne vurdere elementer mot hverandre er av vi avhengige av måleparametre. Dette gjelder også sikkerhet. Vi ønsker å måle den eksakte graden av sikkerhet, slik at dette kan være med i vår vurdering. I denne hunger etter falsk informasjon, blir det gjort snarveier. En av disse er at nøkkellengden og algoritmen benyttet til kryptering er en sannferdig beskrivelse av sikkerheten i ett system. Dette er kun for markedsføring, og har ingen reell betydningen for den faktiske sikkerheten en løsning innehar. Ok, la oss fortsette til det jeg egentlig ville skrive om:

En av de andre stykkene som spilles på dette teateret er av leverandører av sikkerhetsprogramvare. Disse gjør desperate stunt for å si noe om sikkerheten til ett system, og prøver alt de kan for at du skal kjøpe disse forsvarsmekanismene. I sommer har dette tatt en forunderlig vending. På BlackHat konferansen i Las Vegas har to personer demonsterert hvordan Powershell er et kraftfullt shell for Windows. De har demonstrert at dette shellet også kan utnyttes for ondsinnede handlinger. De ser styrken i Powershell, og demonsterer at man kan gjøre farlige kommandoer med automatisering. Foredragsholderne har en ganske edruelig holdning til Powershell og sikkerhet – men det gjøres ett par stunt for å få deltakere til sesjonen.

En sikkerhetsleverandør (hvis navn ikke skal nevnes her) demonstrerer nå sin kraftige inkompetanse på sikkerhet generellt og Powershell spesiellt. De hevder at det er utgikk en “0-day exploit” for Powershell, og at de sikrer mot denne. I tillegg beskriver de “ExecutionPolicy” i Powershell som en sikkerhetsteknologi – noe det aldri har vært, og aldri tillagt egenskapen som fra Microsoft. ExecutionPolicy i Powershell er en flott løsning for å unngå kjøring av ad-hoc script ved en misforståelse. ExecutionPolicy hindrer deg ikke i å kjøre kommandoer – kun rettigheter i systemet nekter deg det. Selv om du har ExecutionPolicy satt til “Restricted”kan du kjøre en hvilken som helst kommando – dog får du ikke startet og kjørt .ps1 filer direkte fra kommandolinjen. Det betyr at alle kommandoene i scriptet kan kjøres, og du kan ganske enkelt laste inn alle kommandoene i en fil, og utføre denne, linje for linje med for eksempel Invoke-Expression cmdlet.

Alle som har satt seg nogenlunde inn i Powershell har fått med seg dette. Man skulle anta att en sikkerhetsleverandøre som leverer sikkerhet som også “omfatter” Powershell, også hadde tatt seg bryet med å forstå grunnleggende elementer av Powershell.

Problemet er at mange leser kun overskrifter av det som skrives på Internett – og – ikke bli overrasket nå – tror på det de leser.Selv om en hel artikkel er feil, kan denne lett referes til som en sannhet. Det provoserer når noen søker å selge produkter du ikke trenger, for å beskytte deg mot en trussel som ikke finnes. Mange selskaper som selger sikkerhet selger sikkerhetsprodukter du ikke trenger, fordi du tenker “det skader ikke å være på den sikre siden”. Men hva er den sikre siden i slike tilfeller? Hva med risikoen slike programmer kan innføre i? Når ett selskap tar lett på sannheten, og ikke setter seg godt nok inn i det de søker å beskytte deg mot – hvor mye har de da å tilføre av sikkerhet med sine produkter?

Vi vil alltid erkjenne forsvarerens dilemma – som forsvarer må vi sikre og forsvare alle elementene i vår løsning. Som angriper derimot trenger vi å kun finne ett svakt punkt.

Desverre finnes det digitale kvakksalvere anno 2010 som selger deg noe du ikke trenger, ja, som faktisk kan gjøre ting værre.

Det er dessverre vanskelig for de som ikke jobber med sikkerhet og avdekke disse (faktisk også for de som jobber med sikkerhet).