Sjaj i bijeda Windows Credentials Managera

Windows Credentials Manager (dalje: WCM) imaju sve desktop i serverske Windows edicije, od XP/2003 naovamo, uključujući još neslužbeni Win Server 2016. Dostupan je kroz Control Panel, njegov komandnolinijski ekvivalent je cmdkey. WCM je u stvari front end programske logike (lokalnog servisa) koja korisniku windoza omogućuje upravljanje korisničkim računima potrebnim za autentikaciju na mrežne resurse - dijeljene mape i pisači, web proxy, web ili mail servisi, aplikacije za udaljeni pristup računalu... i slično.

Vjerodajnicu koju rabimo za autentikaciju na neki udaljeni resurs WCM upamti tako da ju spremi u takozvani Windows Vault, nakon što korisnik to naredi/odobri u aplikaciji poput Windows Explorer, Internet Explorer, Outlook, Remote Desktop, Skype.... a ponešto spremi i mimo korisnika. Da skratimo priču, niže je ilustrirana tipična situacija: WCM će spremiti vjerodajnicu za pristup dijeljenoj mapi na domaćinu Ralica7, jer smo mu tako naredili opcijom Remember my credentials.


Bez ikakve dvojbe, korisna je to stvarca jer u konačnici omogućuje Single Sign-On u nedomenskom prostoru tj. kad trebamo rabiti udaljeni resurs na kojega naš aktivni account nema prava. Budući spadam u IT profiće, dakle, kadar koji intenzivno „šara“ po LAN i WAN resursima, godinama koristim WCM servis. Čovjek prihvati stvari kakve jesu, posebno ako mu, barem nazivno, idu u prilog, i više o tome ne razmišlja... Loša navada, kako ćemo vidjeti!
Prije par dana poželih urediti vjerodajnice nagomilane u WCM-u, ta skupilo ih se kojih četrdesetak (jednom spremljeni akreditiv WCM pamti bez vremenskog ograničenja), ali shvatih da ih ne mogu brisati grupno nego jednu po jednu. Pa skoknuh na Internet po neku skriptu, računam, nisam ja jedini gotovan na ovom svijetu, netko je već nešto smislio.... Skriptu sam našao, no naletjeh i na nešto puno važnije – ranjivost WCM-a kao servisa. Ta ranjivost pogađa svakog korisnika windoza, a najviše onog s admin pravima!

Idemo redom. Za brisanje svih vjerodajnica iz Vaulta iskoristite nižu skriptu, hvala nepoznatom autoru.

cmdkey.exe /list > "%TEMP%\List.txt"
findstr.exe Target "%TEMP%\List.txt" > "%TEMP%\tokensonly.txt"
FOR /F "tokens=1,2 delims= " %%G IN (%TEMP%\tokensonly.txt) DO cmdkey.exe /delete:%%H
del "%TEMP%\List.txt" /s /f /q
del "%TEMP%\tokensonly.txt" /s /f /q

Za selektivno brisanje prilagodite gornju skriptu ili iskoristite Nirsoftov Network Password Recovery jer je ovaj, od Microsofta anatemiziran programčić (vidi niže zašto), opremljen i funkcijom brisanja više vjerodajnica odjednom.

Ahilova peta WCM servisa je iznenađujuće slaba zaštita lozinki ukeširanih vjerodajnica pa ih alati poput Network Password Recovery (dalje: NPR) ekspresno deenkriptiraju. Za razbijanje mojih lozinki, a većina ih je ekstradugačkih i kompleksnih, NPR utroši 4 – 5 sekundi! Niža slika prikazuje gornji dio popisa razotkrivenih vjerodajnica; razumljivo, prekrio sam polje Password (na slici P), no vidimo da su neke lozinke jačine Very Strong, također, da su uspješno iščitane razne vrste vjerodajnica, a ti su podaci za ovaj članak važniji od mojih lozinki.

NPR spada u lako dobavljive alate, besplatan je, portabilan je (jedan .exe veličine 50-ak kilobajta) i, srećom za sve potencijalne žrtve, ima neka ograničenja. Najvažnije ograničenje je to da radi samo u sigurnosnom kontekstu administratora konkretnog računala. Ali oprez - to ne znači da drugi alati, posebno oni kojima se služe cyber kriminalci, imaju takva ograničenja! Jer nije problem u NPR-u nego u WCM servisu.

Uočite kako neka zlonamjerna osoba, opremljena samo NPR-om, može ozbiljno nauditi nama sistemcima (i sličnima s admin ovlastima). Alat je, kako rekosmo, monolitan i portabilan, k tomu, može se pokretati i skriptom uz parametar za spremanje svih nalaza u log datoteku. Znači, dovoljno je da admin računala ostavi svoj stroj nezaključan svega 5 - 10 minuta pa da mu neki-lik-u-prolazu sa NPR-om na USB sticku ukrade sve ukeširane accounte. Nadalje, ako taj lik raspolaže naprednijim alatom i vještinama hakiranja... uz ovako slabo štićene akreditive „samo nebo je granica“!
Istina je, Microsoft pomalo unaprijeđuje WCM i kao aplikaciju i kao servis, ali sve je to nedostatno jer NPR radi podjednako uspješno na tek iskovanoj Desetki kao i na sada već ocvaloj Sedmici. Kažem „podjednako“ zato jer na Desetki alat ipak nije uspio iščitati moj Live ID za Microsoft cloud usluge, a na Sedmici jest. Što ne znači, podsjećam, da će i neki drugi alat te namjene zatajiti na Desetki.

Tehnološki aspekt cijele priče – koji su (a)simetrični enkripcijski algoritmi u igri, rabi li se uistinu enkripcija ili samo hashiranje, što je od svega toga (i)reverzibilno (i bla-bla) – potpuno je nebitan u odnosu na realno stanje, a ono nije dobro. Žargonom security officera sumirano: Potencijalni vektor napada identificiran je na svakoj novijoj Windows serverskoj i desktop instalaciji;  trenutna razina kritičnosti je High za Windows instalacije dohvatljive s Interneta, za vlasnike prijenosnika i IT administratore. Srećom, ti „sigurnjaci“ stalno nešto dramatiziraju... :o)

Svakako, na Microsoftu je da ovo konačno riješi, ta previše je windoza rasijano po svijetu, a i kupci MS-ovih OS-ova ne zaslužuju takav ignorantski odnos. Ili neka se u WCM UI postavi neka obavijest na temu slabe zaštite lozinki. Na nama je, pak, da se u međuvremenu osiguramo kako najbolje znamo. Zato par savjeta tipa „obrana i zaštita u kontekstu WCM-a“:

a) U mjere zaštite Windows računala uvrstite i ovu glede WCM servisa.

b) Provjerite i pročistite ukeširane vjerodajnice na svim važnijim desktop i serverskim Windows instalacijama. Na kritično važnim instalacijama deaktivirajte servis Credential Manager (Admin Tools > Services).

c) Testovima sam potvrdio slutnju da WCM ne pamti vjerodajnice za pristup dijeljenim mapama ako se rabi legacy naredba net use. Zgodno je znati jer na LAN-u jako često moramo mapirati disk na dijeljeni direktorij (share).

d) Ako baš morate rabiti WCM, povremeno prekontrolirajte stanje. Ja sam si, recimo, na svom prijenosniku složio task koji jednom mjesečno poziva cmdkey /list.

e) IT persone sa većim ovlastima na računala pod Windows OS-ovima trebaju paziti kad riješavaju neki problem na tuđoj Windows instalaciji kako im WCM ne bi ukeširao njihov admin account. U mom WCM-u našao sam, i NPR-om učas iščitao account administratora foresta!

f) Ako to ikome može pomoći, znajte da se vjerodajnice spremaju u %systemdrive%\Users\UserName\AppData\Roaming\Microsoft\Credentials.

Jooj, pokušao sam, al’ ne mogu ovo prešutjeti! Pogledajte kako Korporacija rješava problem dugogodišnje ranjivosti WCM-a: instruirali su svoj Defender da prijavi NPR kao maliciozni program. Poruka je jasna - problem je ono što ukazuje na problem! Defender ne sprečava NPR u djelovanju, samo ponekad javi da je na disku. Istovremeno, TrendMicro, antivirusno rješenje enterprise razine, uopće ne reagira na NPR, bio ovaj pasivan (na disku) ili aktivan u RAM-u.

Vote: 
4
Vaša ocjena: Nema Average: 4 (1 vote)

Komentari

Mislim da u članku možda nije dovoljno jasno objašnjeno kako Network Password Recovery može otkriti samo spremljene lozinke (točnije rečeno vjerodajnice) trenutačno prijavljenog korisnika Windowsa, odnosno korisnika za kojeg je poznata lozinka za prijavu u Windows "because the Credentials file is encrypted with the SHA hash of the log-on password, and without that hash, the Credentials file cannot be decrypted" (vidi http://www.nirsoft.net/utils/network_password_recovery.html).

NPR u stvari ne radi "razbijanje" lozinki nego radi ono što i sam Credentials Manager kada ga neka aplikacija zatraži lozinku za prijavu na određeni resurs.

Dakle, da bi netko prijavljenom korisniku ukrao spremljene lozinke putem NPR-a ili sličnog alata, korisnik treba ostaviti računalo nezaključano, što je općenito loša praksa kojom korisnik ostavlja mogućnost da netko zloupotrijebi njegove korisničke ovlasti (npr. prijavu na neki Linux server u root shell).

Koliko mi je poznato, isti problem postoji i s drugim programima putem Credentials Managera. Npr. na nekim distribucijama Linuxa (npr. Ubuntu) također postoji servis za spremanje podataka za prijavu na različite resurse a kao password manager se koristi program Seahorse. Pri tome se vjerodajnice spremaju u kriptirani spremnik, tzv. keyring. Početno postoji keyring Login koji se dekriptira na osnovu korisnikove lozinke za prijavu na Linux, tj. čim se korisnik prijavi na sustav, otključa se i taj keyring.

Nešto slično rade i moderni web-preglednici kada im korisnik da pravo da spreme neku njegovu lozinku za prijavu na neki internetski servis. U svim tim slučajevima radi se o sličnom stupnju (ne)sigurnosti.

Problem nije samo u tome što prijavljeni korisnik koji ostavi računalo bez nadzora daje mogućnost da mu netko ukrade tako spremljene lozinke, nego se često događa da sam korisnik izgubi spremljene lozinke kada se izgubi njegov korisnički profil (kvar diska i slično) a ne postoji backup.

Stoga mi se praktičniji čine alati kao što je KeePass jer je korisnik svjestan da su njegove lozinke spremljene u točno određenu datoteku i to mu govori da mora imati njezinu sigurnosnu kopiju.

Kolega Ratko Žižek nije CARNetov sistmac, ne može se ulogirati da bi odgovorio na Robertove primjedbe. Pa ću ja napraviti C&P:

Pozdrav Roberte, i dragi čitatelji.

Ne samo da u članku nije objašnjeno kako NPR može otkriti spremljene lozinke nego je, štoviše, u članku istaknuto da je u kontekstu članka to nebitno. Zašto? Pa zato jer sam još tijekom pripremnog perioda odlučio biti izrazito pragmatičan, fokusirati se na informiranje čitatelja o slaboj zaštitu lozinki u WCM-u i pomoći ponekim savjetom, a ne baviti se upogonjenim kriptografskim tehnologijama i rješejnima. Izrazom "razbijati" želio sam istaknuti da se do pohranjenih lozinki može doći mimo WCM-a, a sama činjenica što Microsoft tretira NPR kao Hacking Tool (vidi zadnju sliku članka) govori nam da uopće nisu oduševljeni činjenicom što, kako kažeš "NPR radi isto što i WCM". Inače, osobno sam puno vremena ulupao u tehnički aspekt ove teme, iz puke radoznalosti, i mogu reći da je u citat koji se može naći na NirSftovom siteu samo malecki dio cijele priče, nadalje, da među upućenima dominira stav da Microsoft nikada nije jednoznačno tehnički specificirao svoje WCM rješenje.Posljedično, sve tehnički profilirane tvrdnje glede ove teme treba uzeti sa zadrškom. Osobno čak smatram - a o tome nisam htio pisati jer bi narušilo koncept članka - da je Nirsoft namjerno ograničio svoj NPR kako se kao pravna osoba ne bi izložio nekim sankcijama.
Nadalje, što se mene tiče, stoji sve što kažeš, jer, naravno, još štošta korisnoga može se i mora reći, ljudima to treba.


Vjerojatno se nisam dobro izrazio u nekim rečenicama. Evo ispravka krivo shvaćenih rečenica:

Mislim da u članku možda nije dovoljno jasno objašnjeno da Network Password Recovery može otkriti samo spremljene lozinke (točnije rečeno vjerodajnice) trenutačno prijavljenog korisnika Windowsa...

(Dakle, panika bi bila kada bi NPR mogao otkriti lozinke bilo kojeg korisnika Windowsa čiji korisnički profil može čitati.)

Ovako NPR u stvari ne radi "razbijanje" lozinki nego ih samo dohvaća iz kriptiranog spremišta na isti način kao i sam Credentials Manager kada ga neka aplikacija zatraži lozinku za prijavu na određeni resurs.

Mogu još nadodati da sam nakon kratkog traženja našao da Microsoft to izričito navodi - vidi https://technet.microsoft.com/en-us/library/hh994565.aspx, podnaslov Credential Manager store:

Users may choose to save passwords in Windows by using an application or through the Credential Manager Control Panel applet. These credentials are stored on the hard disk drive and protected by using the Data Protection Application Programming Interface (DPAPI). Any program running as that user will be able to access credentials in this store.

Taj način rada Credentials Managera svakako može imati nezgodne posljedice. Npr. neki malware, kojeg bi korisnik pokrenuo, mogao bi očitati korisnikove spremljene vjerodajnice i dojaviti ih svom gazdi na Internetu.

Kao što sam napisao, slična mogućnost spremanja vjerodajnica postoji i na drugim sustavima. I svaki takav način spremanja vjerodajnica je u stvari nesiguran ako aplikacije mogu dohvaćati spremljene vjerodajnice bez da korisnik izričito pristane na to. Stoga bi korisnik trebao dobro odvagnuti rizik otkrivanja svojih vjerodajnica (a time i rizik neovlaštenog pristupa pripadnim podatcima) prije nego što pristane da budu spremljene na takav nesiguran način.

Ne, Roberte, NPR ne može otkriti lozinke trenutačno prijavljenog korisnika (kažeš, naime, da može); NPR to može odraditi samo za onog korisnika koji ima administratorske privilegije na računalu. Zato sam u članku i napisao "Najvažnije ograničenje je to da radi samo u sigurnosnom kontekstu administratora konkretnog računala".Tijekom pripreme članka našao sam na nekim forumima da se ranije moglo s njime raditi kako si opisao (valjda na XP-u); ako i jest, to više nije slučaj a XP je passe.

Sada još koja o tom nesretnom izrazu "razbijanje", koji te je očito zažuljao. Ovako stoji stvar glede WCM-a: bez obzira ima li korisnik računala admin ili user privilegije, on kroz WCM ne vidi lozinke svojih ukeširanih accounta. Može mijenjati postojeću lozinku, ali ne vidi postojeću. Rečeno je u cijelosti točno za Windows 7; na Osmici i Desetki korisnik vidi lozinke ukeširanih Web računa, ali i nadalje ne vidi lozinke Windows računa. I onda se - interaktivno ili remotely - pojavi lik sa programčićem poput NPR-a koji lozinke u hipu razotkrije... Utoliko, riječ "razbiti", upotrijebio sam iz dramaturških razloga. Uoči, molim, da odmah potom, u istom odlomku, rabim riječ "iščitava", što jasno sugerira da ne ciljam na brute force ili dictionary metode (i njihove derivate); na to nas, uostalom, upućuje i sama brzina iščitavanja koju u članku spomenuh: 4 - 5 sekundi.

Tvoja tvrdnja "... nego ih samo dohvaća iz kriptiranog spremišta na isti način kao i sam Credentials Manager", što argumetiraš informacijom iz onog MS-ovog članka (usput, upravo mi je taj članak bio prvi izvor informacija, kasnije sam shvatio da je "niškoristi" jer simplificira temu) "Any program running as that user will be able to access credentials in this store" u raskoraku je sa mojim spoznajama. Objašnjavanje bi uzelo puno vremena i prostora, uzalud, kako ja to vidim; zato predlažem da čitatelji uistinu zainteresirani za temu sami istraže detalje i donesu svoj zaključak.

Inače, sa zadovoljstvom sam primijetio da si se sjetio i drugog mogućeg scenarija: "neki malware, kojeg bi korisnik pokrenuo, mogao bi očitati korisnikove spremljene vjerodajnice i dojaviti ih svom gazdi na Internetu". Da, tako je, ima još toga, dao sam to u članku naslutiti rečenicom: "Nadalje, ako taj lik raspolaže naprednijim alatom i vještinama hakiranja... uz ovako slabo štićene akreditive samo nebo je granica! ".

A sad najvažnije: nemojmo skretati sa bitnoga, a to je dugogodišnja ranjivost WCM-a. NPR mi je poslužio kao dobrodošlo demonstracijsko sredstvo, oživio je članak, ali on je za temu savršeno nebitan. Bitno je to da imamo ozbiljan sigurnosni problem (ta svi znamo da su vjerodajnice naša digitalna iskaznica i krađa nam može ozbiljno nauditi) i da Microsoft taj problem predugo ignorira.

Evo još jednog članka slične tematike:
http://arstechnica.com/security/2015/11/hacking-tool-swipes-encrypted-credentials-from-password-manager/

Članak govori o alatu KeeFarce koji će pročitati sadržaj baze vjerodajnica otvorene u popularnom password manageru KeePass v. 2.* i spremiti je u datoteku "%APPDATA%/keepass_export.csv".

Taj princip mogao bi iskoristiti neki malware koji bi se pokrenuo pod korisničkim računom i čekao da korisnik otvori bazu vjerodajnica. Zatim bi isčitao vjerodajnice i poslao ih gazdi na Internetu.