Svaret ligger i Windows event loggene. 

Windows skriver alle sine logger til Windows event log, ved å aktivere riktig loggnivå for Windows klienter, servere og Active Directory vil windows logge alle loggene du trenger for å ivareta full kontroll på blant annet bruker opprettelser og endringer på tilganger av privilegerte rettighetsgrupper som Domain og Enterprise Admin. 

Dette er viktig å ha kontroll på både i fra et drifts og et sikkerhets perspektiv.  
For drifts avdelingen så er det viktig å ha kontroll på og kunne dokumentere at det ikke foregår skygge aktiviteter. Med en IAM løsning på plass ønsker en ikke at det skal opprettes brukerkontoer eller gis utvidede rettigheter utenom IAM løsningen. 

For sikkerhets perspektivet så er det viktig å ha kontroll på blant annet brukeropprettelser for å kunne avdekke indikatorer på kompromittering ved at det forsøkes å opprette nye brukere eller forsøkes å erverve tilgang til privilegerte tilgangsgrupper. Det er også viktig å ha kontroll på bruken av privilegerte tilgangsgrupper, Splunk kan ikke hjelpe deg med å liste hvem som har tilgang, men den kan fortelle deg hvem har fått og mistet tilgang og sammen med en PowerShell spørring så er du i besittelse av både og.  

Slik får vi kontroll på bruker opprettelsene 

Til dette trenger vi å ha følgende Event ID’er i loggene: 4720, 4722, 4725, 4726, 4738 
Har du ikke disse loggene i Windows event log så har du ikke konfigurert logging i policy for Windows User Account Manager, denne finner du under Advanced Audit Policy Configuration -> Account Management -> Audit User Account Management. Det anbefales å logge både success og failure for å kunne se forsøk på og ikke bare gjennomførte handlinger. 
 
For å sjekke om du har disse loggene tilgjengelige i Splunk så kan du benytte følgende SPL søk: 

index=* sourcetype=wineventlog LogName=Security EventCode IN (4720, 4722, 4725, 4726, 4738) 
| dedup EventCode 
| table EventCode 

Denne spørringen skal gi inntil 5 Event ID’er som resultat, gir den resultat så er logging konfigurert. 

Event ID 4720 – A user was created.

Event ID 4720 beskriver opprettelse av en ny bruker konto, den inneholder blant annet informasjon om opprettet bruker og hvem som opprettet brukeren. 
Dersom brukeren er opprettet av en annen bruker enn systemkontoen til IAM løsningen så må det gå en alarm og handlingen må verifiseres for om den er legitim eller ikke. 

For å opprette et søk i Splunk som ser etter denne hendelsen kan du benytte følgende grunnlag og bare sette inn din egen informasjon for hvilken index dere skriver Windows Event Logger til og navn på tjenestekonto på AIM løsningen. Det er mulig å begrense søket til kun domenekontrollere. 

index=<winEventLogs> sourcetype=wineventlog LogName=Security EventCode=4720  
| convert timeformat="%Y-%m-%d %H:%M:%S" ctime(_time) as Tidspunk 
| eval Message=split(Message,".")  
| eval Melding=mvindex(Message,0)  
| eval admin=mvindex(Account_Name,0)  
| eval user=mvindex(Account_Name,1)  
| search admin!=<IAM konto>  
| table Tidspunkt EventCode admin Melding user Display_Name 
| rename EventCode as "Event ID" admin as "Opprettet av:" user as "Opprettet brukernavn:" Display_Name as "Opprettet brukers Visningsnavn:" 

Event ID 4722 – A user was enabled.

Event ID 4722 skrives når en deaktivert bruker blir aktivert, men den skrives også når det opprettes en ny bruker. Denne vil naturlig forkomme i sammenheng med Event ID 4720.  
Det blir også skapt en loggføring på Event ID 4738 når en bruker blir aktivert. 
Loggen inneholder informasjon om hvilken bruker som ble aktivert og hvem som aktiverte den.

Dersom en deaktivert bruker blir aktivert av en annen bruker enn systemkontoen til IAM løsningen så må det gå en alarm og handlingen må verifiseres for om den er legitim eller ikke. 

For å opprette et søk i Splunk som ser etter denne hendelsen kan du benytte følgende grunnlag og bare sette inn din egen informasjon for hvilken index dere skriver Windows Event Logger til og navn på tjenestekonto på AIM løsningen. Det er mulig å begrense søket til kun domenekontrollere. 

index=<winEventLogs> sourcetype=wineventlog LogName=Security EventCode=4722 
| convert timeformat="%Y-%m-%d %H:%M:%S" ctime(_time) as Tidspunk 
| eval Message=split(Message,".")  
| eval Melding=mvindex(Message,0)  
| eval admin=mvindex(Account_Name,0)  
| eval user=mvindex(Account_Name,1)  
| search admin!=<IAM konto>  
| table Tidspunkt EventCode admin Melding user 
| rename EventCode as "Event ID" admin as "Opprettet av:" user as "Enablet bruker:" 

Event ID 4725 – A user was disabled. 

Event ID 4725 skrives når en brukerkonto blir deaktivert, det blir også skapt en Event ID 4738 sammen med denne. 
Loggen inneholder informasjon om hvilken bruker som ble deaktivert og hvem som deaktiverte den. 

Dersom en bruker blir deaktivert av en annen bruker enn systemkontoen til AIM løsningen så må det gå en alarm og handlingen må verifiseres for å se om den er legitim eller ikke. 

For å opprette et søk i Splunk som ser etter denne hendelsen kan du benytte følgende grunnlag og bare sette inn din egen informasjon for index dere skriver Windows Event Logger til og tjenestekonto på AIM løsningen. Det er mulig å begrense søket til kun domenekontrollere. 

index=<winEventLogs> sourcetype=wineventlog LogName=Security EventCode=4722 
| convert timeformat="%Y-%m-%d %H:%M:%S" ctime(_time) as Tidspunk 
| eval Message=split(Message,".")  
| eval Melding=mvindex(Message,0)  
| eval admin=mvindex(Account_Name,0)  
| eval user=mvindex(Account_Name,1)  
| search admin!=<IAM konto>  
| table Tidspunkt EventCode admin Melding user 
| rename EventCode as "Event ID" admin as "Opprettet av:" user as "Disablet bruker:" 

Event ID 4726 – A user was deleted. 

Event ID 4726 skrives når en brukerkonto blir deaktivert. Det blir også skapt en Event ID 4738 sammen med denne. 
Loggen inneholder informasjon om hvilken bruker som ble slettet og hvem som slettet den. 

Dersom en bruker blir slettet av en annen bruker enn systemkontoen til AIM løsningen så må det gå en alarm og handlingen må verifiseres for å se om den er legitim eller ikke. 

For å opprette et søk i Splunk som ser etter denne hendelsen kan du benytte følgende grunnlag og bare sette inn din egen informasjon for index dere skriver Windows Event Logger til og tjenestekonto på AIM løsningen. Det er mulig å begrense søket til kun domenekontrollere. 

index=<winEventLogs> sourcetype=wineventlog LogName=Security EventCode=4726 
| convert timeformat="%Y-%m-%d %H:%M:%S" ctime(_time) as Tidspunk 
| eval Message=split(Message,".")  
| eval Melding=mvindex(Message,0)  
| eval admin=mvindex(Account_Name,0)  
| eval user=mvindex(Account_Name,1)  
| search admin!=<IAM konto>  
| table Tidspunkt EventCode admin Melding user 
| rename EventCode as "Event ID" admin as "Opprettet av:" user as "Slettet bruker:" 

Event ID 4738 – A user was changed. 

Event ID 4738 skrives hver gang det gjøres endringer på en brukerkonto. Verdien ligger i at den i større grad kan avdekke hva som er endret på brukerkontoen.  
Sett i sammenheng med de andre Event ID’ene vi har vært igjennom her, er dette eventen mindre interessant å alarmere på, men den kan gi ytterligere informasjon. 

Dashbord og Alarmer 

Dashbord i Splunk er en fin måte å holde øye med status, men dashbord er bare fancy rapporter. Det er tilfeldigheter som gjør at du oppdager feilene med dashbordene. Det er viktig med noe som påkaller din oppmerksomhet når det inntreffer viktige hendelser og det er her alerts kommer inn. Sett opp alerts i Splunk slik at det ikke lenger er tilfeldig å oppdage uønskede hendelser. Splunk støtter et stort utvalg av muligheter for alerts. Den kan varsle på epost, i Teams eller Slack, og den kan opprette sak i servicedesk løsningen. Det finnes flere tilpassede løsninger for ulike type varslinger. 
 
Alle Event IDene over kan brukes til å lage separate alarmer, men det kan være mer hensiktsmessig å ha en samlet alarm for denne type hendelser. Derfor har jeg her samlet sammen en spørring som dekker opprettelse, enable, disable og sletting av bruker. 

Koden må oppdateres med riktig index og tjenestekonto for ditt miljø. 

index=<winEventIndex> sourcetype=wineventlog EventCode IN (4720, 4722, 4725, 4726) 
| eval Message=split(Message,".")  
| eval Melding=mvindex(Message,0)  
| eval admin=mvindex(Account_Name,0)  
| eval user=mvindex(Account_Name,1)  
| search admin!=<SVC_IAM>  
| table admin Melding user  
| rename admin as "Opprettet av:" user as "Opprettet brukernavn”