Kysymys:
Kuinka Windowsin "Suojattu työpöytä" -tila toimii?
snth
2011-05-12 17:08:06 UTC
view on stackexchange narkive permalink

Voiko kukaan selittää (tai antaa linkin yksinkertaiseen selitykseen), mikä on Windowsin "Suojattu työpöytä" -tila ja miten se toimii?

Kuulin siitä juuri KeePass-ohjeista ( KeePass - Syötä pääavain suojatulle työpöydälle) ja haluaisi ymmärtää sen paremmin.

Yleensä kirjaintyyppisiä otsikoita ja alatunnisteita pidetään turhina SE-sivustoissa. Vedin ne sinulle.
Suojattu työpöytä -linkki oli rikki. FTFY. Myös FTR: Vaikka UAC: n kaltainen "suojattu työpöytä", * saattaa * pystyä suojaamaan sinua ohjelmiston näppäinlukijoilta, ne ovat tehottomia laitteiston näppäinlukijoita vastaan. Sinun ei silti tule kirjoittaa mitään salasanoja (tai muita tietoja), joita arvostat järjestelmässä, johon et luota.
@Iszi kiittää huomautuksesta. Mitä ovat laitteiston näppäinlukijat? Olisiko se kuin erityisesti suunniteltu näppäimistö Internet-kahvilassa? Olen enimmäkseen huolissani Windows-tietokoneestani, joten olen valmis luottamaan siihen, että laitteisto on kunnossa, mutta olen huolissani haittaohjelmien asentamisesta itse.
Laitteiston näppäinlukijoita on monenlaisia. Se voi olla näppäimistö ja USB / PS2-portin väliin kytketty dongle (kuka vielä käyttää PS2: ta?) Tai se voi olla koko näppäimistö. Turvakongressien ihmisistä on kerrottu monia tarinoita, joiden siivooja on noutanut salasanansa.
Hyväksyn @iszi: n turvallisuuskommentit.Näppäimistön turvallisuutta UAC-tilassa vs näppäimistönlukijoita ei ole dokumentoitu kunnolla.JOS et ole joutunut tietojenkalastelun tai troijalaisen hevonenohjelman saaliiksi, jolla on sivuvaikutuksia, mikään RAJOITETTU KÄYTTÄJÄ / Base-käyttäjä ei voi lukea UAC Secure -työpöydän näppäimistön syötettä.MUTTA.ole varuillasi.Jos ohjelma asettaa rekisteriavaimen poistamaan SecureDesktopin käytöstä, kun se suorittaa asennuksen (toivottavasti se ei ole mahdollista Install Sheildin kanssa), UAC toimii käyttäjän yhteydessä ja kaikki muut kuin järjestelmänvalvojan avaimet kirjaavat nappaavat UAC-sisällön.(Hyvä käyttäytymisen havaitseminen AV saa kuitenkin näppäinlukijat kiinni)
Kolme vastused:
#1
+64
user2213
2011-05-12 20:48:30 UTC
view on stackexchange narkive permalink

Lyhyt vastaus

"Suojattu työpöytä" -nimelle on kolme erillistä ongelmaa:

  • Windowsin sisäänrakennetut toiminnot, kuten GINA ja Credential Provider -malli.
  • Samana käyttäjänä toimivien etuoikeutettujen ja käyttöoikeuksien ulkopuolisten sovellusten erottaminen (estä nimellisesti etuoikeuden laajentuminen), mikä saattaa liittyä seuraaviin:
  • SwitchDesktop () , jota KeePass käyttää ja saattaa olla (tai en ole varma) vastustaa DLL-injektiota.

Yksityiskohtainen vastaus

Nopeana alustana Windows-käyttöliittymien rakentamiseen pohjimmiltaan kaikki kulkee funktion nimeltä CreateWindow () (tarkoitan kaikkea, jokainen painike) , jokainen valikko, kaikki) ja sille annetaan hWnd tai Window Handle. Näiden Windowsin muokkaaminen tapahtuu toisella toiminnolla, SendMessage().

Tässä on saalis. Käyttäjätilasovelluksena oikeiden API-puhelujen tekeminen voin melko helposti lähettää viestejä toiseen Windowsiin. On melko triviaalia saada painikkeet katoamaan muiden ihmisten muodoista. On hieman vaikeampi suorittaa DLL-injektio ja kytkeä viestisilmukka, joka vastaanottaa viestejä (käyttöjärjestelmä lähettää Windows-viestejä, kun heille tapahtuu asioita), mutta ei niin paljon vaikeampi. Jos pystyn kiinnittämään nuo tapahtumat, voisin lähettää automaattisesti "kyllä ​​/ ei" -lomakkeesi. Tai voisin vaihtaa tunnisteen ReallyDodgyVirus.exe -kohdasta explorer.exe -kohtaan ja et olisi kukaan viisaampi.

Lisää : Todella hyvä artikkeli eri tekniikoista, joilla koodi viedään käynnissä olevan prosessin osoiteavaruuteen.

Mitä KeePass tekee nyt?

Lähteen hyvin lyhyt tarkastelu osoittaa, että he käyttävät toisen koodin luomiseen CreateDesktop () , SwitchDesktop () ja CloseDesktop () . työpöytä on yhdistetty fyysiseen katselulaitteeseen, jossa olet. Englanniksi he pyytävät ydintä luomaan heille eristetyn työpöydän, jonka hWnd -objektit ovat muiden sovellusten SendMessage () -alueen löydettävissä olevan alueen ulkopuolella.

Haluan huomauttaa, että SwitchDesktop keskeyttää oletustyöpöydän käyttöliittymän päivityksen. En ole varma, onko myös viestisilmukat jäädytetty - epäilen, ettei työpöytä ole luotu uudeksi ketjuksi.

Tässä tapauksessa KeePass piirtää käyttöliittymää, Joten suoritus ei , kuten ymmärrän, NT AUTHORITY / SYSTEM . Sen sijaan uusi työpöytä luodaan erillään pohjimmiltaan nykyisestä työpöydästä, mikä suojaa sitä. Olen iloinen, että minua korjataan siinä. Katso kuitenkin MSDN for SwitchDesktop:

SwitchDesktop-toiminto epäonnistuu, jos työpöytä kuuluu näkymättömään ikkuna-asemaan. SwitchDesktop epäonnistuu myös, kun sitä kutsutaan prosessista, joka liittyy suojattuun työpöytään, kuten WinLogon- ja ScreenSaver-työpöytiin. Suojattuun työpöytään liittyvät prosessit sisältävät mukautettuja UserInit-prosesseja. Tällaiset puhelut epäonnistuvat tyypillisesti "pääsy estetty" -virheellä.

Uskon, että tämä tarkoittaa, että nämä valintaikkunat (näytönsäästäjät, Windows-sisäänkirjautuminen) on rakennettu syvemmälle Windowsiin siten, että ne suoritetaan aina koodina > NT AUTHORITY \ JÄRJESTELMÄ ja UserInit -prosessi luovat aliprosessit kelvollisella todennuksella vaaditulla käyttöoikeustasolla.

Tämän tuon esiin siksi, että uskon on kaksi asiaa: erilaiset työpöydät ja etuoikeuksien erottaminen. Mark Russinovichin keskustelusta suojatusta työpöydästä:

Windowsin eheysmekanismi ja UIPI on suunniteltu luomaan suojaeste kohotettujen sovellusten ympärille. Yksi sen alkuperäisistä tavoitteista oli estää ohjelmistokehittäjiä tekemästä pikakuvakkeita ja hyödyntämällä jo korotettuja sovelluksia hallinnollisten tehtävien suorittamiseen. Tavallisilla käyttöoikeuksilla toimiva sovellus ei voi lähettää synteettisiä hiiri- tai näppäimistötuloja kohotettuun sovellukseen saadakseen sen tekemään tarjouksensa tai syöttämään koodia kohotettuun sovellukseen hallinnollisten toimintojen suorittamiseksi.

Kuten SteveS sanoo , UAC suorittaa erillisen työpöytäprosessin nimellä NT AUTHORITY / SYSTEM . Jos pystyt saamaan UAC: n toimintaan ( hozzájáru.exe ) prosessinhallinnan kautta, se näyttää tältä:

UAC under process explorer

Oikeuksien laajentaminen prosessina Minulla ei ole sen yksityiskohtia, mutta tässä mielestäni ymmärrän: Uskon, että etuoikeuksien eskaloituminen Windows-sovellusliittymässä saa prosessin käymään nimellä NT AUTHORITY / SYSTEM (kykenee siis suorittamaan uusi prosessi millä tahansa oikeuksilla, joita se haluaa, tässä tapauksessa järjestelmänvalvoja). Kun sovellus pyytää suurempia käyttöoikeuksia, kyseinen kysymys kysytään uudelta työpöydältä paikallisesti, jolle mikään sovelluksistasi ei voi saada työpöydän kahvaa tai mitään GUI-elementin kahva. Kun annat suostumuksesi, hozzájáru.exe luo prosessin etuoikeutetuksi käyttäjäksi. Siten prosessi, joka toimii nimellä NT AUTHORITY \ SYSTEM , on seurausta uuden etuoikeutetun prosessin luomisen tarpeesta, ei menetelmänä suojatun työpöydän luomiseen. Se, että työpöytä eroaa oletusasetuksista, lisää molemmissa tapauksissa turvallisuutta.

Uskon, että Mark tarkoittaa yllä, että näiden suojattujen työasemien lisäksi on kaksi asiaa: tapahtuu:

  • Oletusjärjestelmänvalvojan työpöydälläsi on tosiasiallisesti käyttöoikeuksia, toisin kuin Windows XP: ssä ja aiemmissa.
  • Etuoikeutetut ja etuoikeutetut sovellukset ovat nyt erillisillä työpöydillä (vastuuvapauslauseke: voi olla vain ACL-luettelo muistissa olevista kohteista, en ole varma), mikä varmistaa, että käyttöoikeuksettomat koodit eivät voi käyttää etuoikeutettuja objekteja.

Windows-kirjautumiskäyttöliittymä on jälleen erilainen Vista / 7-käyttöjärjestelmässä.

Selvästi mikään näistä menetelmistä ei suojaa sinua ydintilan juuripaketeilta, mutta ne estävät käyttöoikeuksien laajentumisen ja käyttöliittymän eheys vaarantuu eristämällä etuoikeutetut sovellukset tai KeePassin tapauksessa arkaluontoinen valintaikkuna.

Muokkaa

Tarkastellessasi KeePass-koodia kovemmin, Näin tämän kätevän osan C #:

  Bitmap bmpBack = UIUtil.CreateScreenshot (); if (bmpBack! = Null) UIUtil.DimImage (bmpBack); / * ... * / SecureThreadParams stp = new SecureThreadParams (); stp.BackgroundBitmap = bmpBack; stp.ThreadDesktop = pNewDesktop;  

Tästä näet, että KeePass ottaa kuvakaappauksen suostumuksensa jäljentämiseksi .exe taustan, himmentää sen ja luo uuden työpöydän vanhan työpöydän taustalla. Siksi epäilen, että vanha työpöytä jatkuu, vaikka sitä ei renderöidä. Mielestäni tämä vahvistaa, että mitään maagista NT AUTHORITY \ SYSTEM -toimintoa ei tapahdu sekä KeePass- että confidence.exe -tietojen kanssa (epäilen, että nõusime.exe tekee samaa asiaa käyttöliittymällä, se käynnistetään vain NT AUTHORITY \ SYSTEM ) -yhteydessä.

Muokkaa 2

Kun sanon DLL Injektio, ajattelen erityisesti DLL-injektiota vioittamaan käyttöliittymää. DLL-injektio on edelleen mahdollista KeePassissa prosessina, en vain ole varma, voidaanko sitä käyttää vaikuttamaan suojattuun käyttöliittymään. Sitä voidaan kuitenkin käyttää pääsemään prosessin muistiin ja sen säikeisiin tarttumalla täten syötettyyn salasanan esisalaukseen. Vaikea, mutta mielestäni mahdollista. Arvostan sitä, että joku neuvoo asiaa, jos hän tietää.

En tiedä, voidaanko sitä pitää "yksinkertaisena selityksenä", mutta tämä on yksi parhaista selityksistä, jotka olen lukenut. :) Muokatan viestiäni, koska se ei ole täysin tarkka, koska vain SYSTEM voi luoda turvallisia työpöytiä.
@SteveS Mielestäni, jos ymmärrykseni on oikea, on olemassa kahta erityyppistä työpöytää, "Secure" kuten "Windows-osassa ja vain muokattavissa GINA: n kautta, sano" ja "Secure" kuten "eristetty". En ole 100% siitä, että erilliset työpöydät luodaan saman käyttäjän ylläpitämille etuoikeutetuille ja etuoikeutetuille sovelluksille, mutta luulen, että Mark R viittaa siihen. Valitettavasti näiden käsitteiden erottamisesta tulee melko triviaalia melko nopeasti ...! Vastauksenne on mielestäni hieno, koska kaikissa tarkoituksissa käytetään samoja ajatuksia (korkealla tasolla).
@Ninefingers - Tämä on hieno vastaus. Voisitko kenties kuitenkin antaa yhden kappaleen "TL; DR" -yhteenvedon yläreunaan?
@Iszi: n muokkain `tl; dr`: ssä, mutta olen nyt asettanut sen alkuun.
Toivon todella, että voisin antaa tämän + 1-merkinnän muokatuissa yksityiskohdissa. @Ninefingers - Toivottavasti et välitä, muokatin kolmannen "lyhyen vastauksen" luettelomerkin toivottavasti sen selkeyttämiseksi - se näytti minulle hieman hämmentävältä.
@Iszi En välitä ollenkaan - olen samaa mieltä, sanamuodon siirtäminen on parannusta.
Hieno vastaus! Yksi pieni sekaannus: mikä on "viestisilmukka"? Oletan, että se on tyypillinen Windows-termi sille, mitä kutsuisin tapahtumasilmukaksi?
@nealmcb kyllä, periaatteessa. Jokaisella ikkunalla (yleensä ylimmän tason varsinainen Windows) on toiminto, joka on takaisinsoitto, jota kutsutaan periaatteessa jatkuvasti kaikkien siinä ikkunassa tapahtuvien tapahtumien kanssa, kuten `` WM_CLOSE '', jos käyttäjä napsauttaa esimerkiksi `` x ''. Dll-injektion avulla voit kytkeä omat kuuntelijat, joten voit liittää `` WM_KEYDOWN`` ja napata jokaisen avaimen, jonka käyttäjä kirjoittaa sovelluksen yhteydessä ...
Vau, opin enemmän Windows-käyttöliittymästä kuin olin neuvotellut. Hyvä vastaus! Kiitos paljon!
@snth ei ole ongelma. Jos olet kiinnostunut Windowsin sisäisistä osista, Mark Russinovich on kuvakaappauksen työkalun kirjoittaja (Process Explorer), ja hänen bloginsa on paljon lukemisen arvoinen. Hän on niin hyvä, Microsoft palkkasi hänet pari vuotta sitten.
2.0 käyttää todellista SecureDesktopia, mutta onko se jotain, joka voidaan ajaa myös kuolevaisena käyttäjänä ja estääkö ikkunan siirtymisen normaaliin ohjelmaan?Se vie järjestelmärutiinin, joka voisi käynnistää todellisen SecureDesktopin järjestelmän käyttäjäkontekstissa, mikä voi tapahtua, mutta se vie jonkin verran tutkimusta sen selvittämiseksi, mitä KeePass 2.0 tekee siellä.
#2
+16
Steve
2011-05-12 19:36:25 UTC
view on stackexchange narkive permalink

"Suojattu työpöytä" on työpöytä, jota voi käyttää vain järjestelmä itse. Se kuulostaa hieman oudolta, eikä todennäköisesti selitä paljoakaan.

Windowsissa työpöytä on näkymä, jonka avulla voit olla vuorovaikutuksessa prosessien kanssa. Kun kirjaudut Windowsiin (kirjautumiskehote), olet työpöydällä. Kun olet kirjautunut sisään ja näet Käynnistä-valikon, olet erillisellä työpöydällä. Kun lukitset tietokoneesi, olet uudella työpöydällä. Kun UAC ponnahtaa esiin, olet toisella työpöydällä. Windowsissa on melko paljon erilaisia ​​työpöytiä.

Suojattu työpöytä on työpöytä, joka ei kuulu muiden sovellusten esteettömyyden piiriin. Kirjautumistyöpöytä on suojattu työpöytä (luonut winlogon.exe), samoin kuin UAC-työpöytä. Mikään muu prosessi ei voi olla vuorovaikutuksessa työpöydän kanssa, joten mikään muu prosessi ei voi tehdä esimerkiksi aktivoida painiketta tai lukea tekstilaatikon sisältöä. Siksi UAC on (teoriassa) hyödyllinen.

Kolmannen osapuolen sovellukset voivat luoda suojatun työpöydän pyytääkseen tietoja (kuten pääsalasanaa) ja siirtääkseen sen sitten kyseiseen sovellukseen. Tällä tavalla mikään muu prosessi ei teoriassa voi niputtaa salasanaa.

Hyvä aloitus suojatuille työasemille on tämän artikkelin ensimmäinen puolisko siitä, kuinka UAC toimii suojatulla työpöydällä: http: / /blogs.msdn.com/uac/archive/2006/05/03/589561.aspx.

Linkki on kuollut, tässä on päivitetty URL: https://docs.microsoft.com/en-us/archive/blogs/uac/user-account-control-prompts-on-the-secure-desktop
#3
+1
Mudasir
2014-07-30 16:19:58 UTC
view on stackexchange narkive permalink

suojattu työpöytä toimii paikallisen järjestelmätilin alla eikä mikään muu prosessi voi olla vuorovaikutuksessa sen kanssa, paitsi OSK, Narrator jne., sen aloittaa winlogon.exe ja voit poistaa sen käytöstä rekisterissä HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ Järjestelmä muuttamalla PromptOnSecureDesktopin arvoksi 1: stä 0: een, jos suoritat cmd.exe: n järjestelmätilillä, se ei silti ole vuorovaikutuksessa suojatun työpöydän kanssa ja himmeä työpöytä, jonka näet, kun napsautat Suorita järjestelmänvalvojana UAC-kehotteen alla on suojattu työpöytä ja kun paina ctrl + Alt + Del ja näet skyblue-näytön, jossa on vain vähän vaihtoehtoja, kuten lukita tämä compter jne., on myös turvallinen työpöytä, Windowsissa on oletusarvoisesti kolme työpöytää 1 winlogon 2 näytönsäästäjä 3 käyttäjän työpöytä



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...