Simovits

Ut ur lådan

Jag har vid många uppdrag stött på låsta klienter som är tänkta att användas för ett specifikt syfte eller för en specifik applikation. Dessa klienter återfinns ofta på publika platser eller via en mellanhands-applikation så som RDP eller Citrix, och vid många tillfällen är dessa otillräckligt skyddade.

Det är här den roliga delen börjar.

Scenariot.

I ett typexempel på en sådan här attack så skulle vår angripare först identifiera en låst klient. Låt oss säga en själv-incheckningsdator på ett hotell. Datorn kör Windows 7 och hotellets IT-administratör har ansträngt sig och stängt av Windows startmeny, aktivitetshanteraren och andra funktioner. Datorn är konfigurerad till att automatiskt starta incheckningsapplikationen i fullskärmsläge när datorn startar igång.

Tyvärr har IT-administratören glömt att ta bort vissa Windows-kommandon vilket vår angripare nu identifierat. Med några enkla knapptryck så har angriparen tagit sig in på kontrollpanelen och kan därefter navigera till systemhårddisken. Väl där inne så letar angriparen upp de mest smaskiga filerna så som databasen som innehåller alla incheckade gäster med deras personuppgifter och kreditkortsnummer. Angriparen stjäl databasen och säljer den därefter till högst budande på Tradera.

Hur går vi till väga

Denna form av attack grundar sig i att utvecklarna eller IT-administratorn glömt bort att stänga av specifika kortkommandon och funktioner i Windows som vi som angripare kan utnyttja. Eftersom konfigurationsdialogerna för kortkommandona och funktionerna ligger utspridda och ibland måste stängas av via GPO:er eller registerändringar så är det lätt hänt att någon metod blir bortglömd.

Jag tänkte nedan lista några av de vanliga funktionerna som kan användas för att bryta sig ur en låst klient. Metoderna kan användas för lokala låsta klienter och även låsta klienter som vi ansluter till via RDP eller liknande tjänst. Det är dock värt att notera att vissa kommandon kan agera lite annorlunda på fjärrklienter. Den här bloggen fokuserar enbart på Windows-klienter då dessa utgör den huvudsakliga delen av alla låsta klienter.

Stödfunktioner

Windows kommer med en del stödfunktioner som kan åberopas med några lätta knapptryck. Dessa ger ofta direktåtkomst till kontrollpanelen, varefter angriparen kan navigera vidare till klientens hårddiskar därifrån.

Tröga tangenter (Shift x5)

Genom att trycka på shift 5 gånger på rad så får vi upp en dialog för att antigen sätta på tröga tangenter eller stänga av kortkommandot i kontrollpanelen. Väljer vi att inaktivera funktionen så blir vi slussade till kontrollpanelen.

Hjälp-fönstret (F1)

F1 är ofta den universella knappen för att öppna ett hjälp-fönster. Den här metoden varierar i effektivitet beroende på hur den underliggande applikationen är byggd. Har vi tur så får vi upp en webbläsare. Från webbläsaren kan vi därefter peka startsidan på en lokal fil som cmd.exe (startsida: C:\Windows\System32\cmd.exe) och därefter vid omstart av webbläsaren få upp en nedladdningsdialog varifrån vi kan välja att köra CMD och få en lokal terminal.

Skärmtangentbordet (Windows-knappen + CTRL + O)

Skärmtangentbordet har faktiskt en genväg på tangentbordet. Genom att trycka på Windows-knappen + CTRL + O så får vi upp skärmtangentbordet. Medan skärmtangentbordet i sig inte är så intressant så finns det en liten knapp nere i högra hörnet vid namn ”Alternativ” varifrån vi får upp en dialogruta. I dialogrutan kan vi därefter klicka på knappen ”Bestäm om Skärmtangentbordet ska startas när du loggar in” vilket ytterligare en gång för oss till kontrollpanelen.

Run (Windows-knappen + R)

Medan detta inte är en stödfunktion så är det fortfarande en väldigt intressant funktion att testa och kan användas till mycket om den är tillgänglig. Genom att trycka på Windows-knappen + R så får vi upp en dialog varifrån vi kan välja att köra olika program. Typexempel på vad vi skulle vilja exekvera här är cmd.exe eller varför inte ändra lite i registret och dra ner säkerheten med regedit?

Peters specialare

Det här är lite av ett udda fall och något jag upptäckte vid ett pentest av en lokal låst klient.
Klienten var uppsatt med Windows 10 och hade alla ovannämnda genvägar avstängda förutom Tröga tangenter, vilket i sin tur resulterade i en dialog som meddelade om att kontrollpanelen var avstängd via GPO:er. Under testernas gång så upptäckte jag följande metod för att bryta mig ut ur den låsta applikationen.

  1. Öppna låsskärmen med Ctrl + Alt + Delete.
  2. Tryck på knappen Hjälpmedel (cirkel med två pilar) och öppna skärmtangentbordet.
  3. Håll nere Ctrl och Shift och tryck därefter på Avbryt på låsskärmen.
  4. Om allt fungerat som det ska så ska skärmtangentbordet följa med ner till det olåsta operativsystemet
  5. Från operativsystem. Klicka på Alternativ på skärmtangentbordet och därefter knappen ”Bestäm om Skärmtangentbordet ska startas när du loggar in” (notera att knappen inte finns där på skärmtangentbordet i låsskärmen). Detta ska öppna kontrollpanelen även om den stängts av via GPO:er.

Det är viktigt att notera att steg tre kan behöva upprepas ett flertal gånger (cirka 20 gånger i vissa fall) då det verkar vara lite slumpmässigt när den följer med ner till operativsystemet. Vad som verkade hjälpa här var att skapa fördröjningar genom att slå på högkontrast-läge samtidigt som man klickar på avbryt eller att ha en feldialog på operativsystemet innan man börjar proceduren. Jag har dock inga bevis för att detta ska hjälpa.

Jag har även testat proceduren på en Windows 10 konfigurerad för kioskläge och kunde där inte upprepa samma procedur.

Och mera

Det finns en uppsjö av genvägar och funktioner som jag inte tagit med i den här bloggartikeln. Jag rekommenderar att ta en titt på Microsofts egen dokumentation över genvägar och utifrån den utforma egna tester. Ni hittar listan på https://support.microsoft.com/sv-se/help/12445/windows-keyboard-shortcuts

Hur man skyddar sin låsta klient

Vad vi kan konstatera från det här blogginlägget är att det är väldigt svårt att skydda sina låsta klienter. Det finns ett multum av genvägar och funktioner som vi kan använda för att bryta oss ur och någon av dessa blir ofta kvarglömd. Lyckligtvis har Microsoft i Windows 10 introducerat kioskläge vilket är en funktion som sköter alla inställningar åt dig. Med några enkla knapptryck så sätter du snabbt upp ett konto som binds till en applikation, varefter vi har en färdigkonfigurerad klient.

Samtliga ovannämnda funktioner fungerar inte i Windows 10 kioskläge. Jag kommer inom en obestämd framtid utföra mer tester mot kioskläget i syfte att hitta potentiella brister.