sikkerhed - Bevis legitim Windows-bruger logget ind (ikke adgang til live disk)

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan går det med at bevise at et script/program, som brugeren udfører, er legitim? Du kunne få fat i brugernavn/id, men hvis harddisken bliver taget af Bob og spundet op i en ny maskine, er der noget, der stopper Bob, der skaber en bruger med samme navn/id og narrer programmet til at tro det er legitimt?


Har windows en offentlig nøgle eller noget lignende til en bruger?


I det væsentlige vil jeg automatisere et script til at starte en start, men først efter at den (og eneste) legitime bruger har logget ind. Jeg vil forhindre at nogen tager scriptet fra maskinen og udfører det i et andet miljø, der narrer scriptet ind i tænker en legitim bruger er logget ind.


Som normalt undskylder jeg, hvis dette duplikater, tror jeg, at jeg søger med de forkerte søgeord, fordi jeg ikke kan finde det, jeg leder efter.


Jeg nævner script, fordi jeg ideelt set vil implementere det i Python, men sproget er ikke vigtigt for svaret.


Rediger: Mere googling antyder, at der er et Windows User Security ID (SID) og også adgang til tokens. Så måske kan jeg låse scriptet ned til et bestemt SID, og ​​kontrollere, at scriptet er startet med et gyldigt adgangstoken? Men ville det være muligt at få SID'en fra systemet og oprette en ny bruger med samme SID og falsk adgang?


Jeg begynder også at tro, at dette behov skal flyttes til sikkerhedsstakken.

Bedste reference


Så ikke et præcist svar på mit spørgsmål, men løser det overordnede problem.


Windows Crypt.ProtectData () API krypterer data, så kun den bruger, der oprettede den, kan dekryptere den. [2]


Ved at kryptere og skrive til en fil kan jeg gemme ting, der ikke behøver en ekstra adgangskode til adgang, og kan med rimelighed antage, at kun brugeren kan få adgang. Dataene kan ikke læses af nogen, der bruger en livedisk eller flytter filerne til en anden Windows-miljø med samme Windows-brugernavn.


For at besvare det oprindelige spørgsmål mere direkte ved at teste, om du kan dekryptere det, beviser du, at den tilsigtede bruger kører koden.


Som jeg nævnte i det oprindelige spørgsmål, ønskede jeg at skrive dette i python. Så jeg skrev en klasse til at gemme/hente nøgle: Værdipar fra en krypteret fil ved hjælp af pywin32 og win32Crypt.ProtectData(). Jeg bogførte det på GitHub for alle interesserede. [3]