Security

Nuovi PowerToy per l'elevazione dei privilegi in Windows Vista

Michael Murgolo

 

Panoramica:

  • PowerToy per l'esecuzione come amministratore per strumenti di script di terze parti
  • PowerToy per l'esecuzione come altro utente
  • Prompt eseguito come sistema per CMD e Windows PowerShell
  • Elevation Gadget di trascinamento

Scarica il codice per questo articolo: Elevation2008_06.exe (197KB)

Ecco un'altra edizione dei PowerToy di elevazione dei privilegi per Windows Vista. Questo argomento è stato illustrato in dettaglio nel numero di giugno 2007 di TechNet Magazine. Un anno dopo ci risiamo. Questa volta, tuttavia, verrà illustrato come la funzionalità per l'esecuzione come amministratore sia stata estesa ad alcuni

dei miei strumenti di script di terze parti preferiti, verrà descritto un metodo per sostituire un'interessante funzionalità di Windows® XP che è stata rimossa da Windows Vista® e verranno analizzati alcuni degli utili strumenti inclusi nei PowerToy di elevazione dei privilegi.

PowerToy per l'esecuzione come amministratore per strumenti di script aggiuntivi

Uno degli argomenti trattati nell'articolo precedente (disponibile all'indirizzo technet.microsoft.com/magazine/cc162321.aspx) riguardava l'attivazione dell'opzione per l'esecuzione come amministratore per gli strumenti di script di Windows nativi. Per questo articolo ho creato i PowerToy per l'esecuzione come amministratore per alcuni strumenti di script di terze parti:

Il codice per ciascuno di questi strumenti è incluso nel download di questo articolo, disponibile all'indirizzo technetmagazine.com. I file effettivi sono denominati ElevateAutoIt3.inf, ElevateAutoHotKey.inf, ElevatePerlScript.inf ed ElevateKiXtart.inf, rispettivamente. Per AutoIt v3, AutoHotkey e ActivePerl, la configurazione è piuttosto semplice. Scaricare semplicemente l'applicazione corrispondente e installarla nella posizione predefinita. Una volta installate le applicazioni a cui si è interessati, è possibile installare il PowerToy per l'esecuzione come amministratore appropriato per ciascuno strumento.

Purtroppo, KiXtart 2010 non include un programma di installazione. Pertanto, per assicurarsi che KiXtart venga installato in una posizione standard in modo da garantire il corretto funzionamento del PowerToy, in questo articolo viene fornito un file INF che consentirà di installare KiXtart 2010 (v 4.60) in Programmi\KiXtart e di registrare l'estensione di file .kix.

Accedere al sito Web www.kixtart.org/?p=downloads, scaricare KiX2010_460.zip e decomprimerlo in una cartella. Copiare il file Install_KiXtart.inf (incluso nel download del codice che accompagna questo articolo) nella stessa cartella. Fare quindi clic con il pulsante destro del mouse su Install_KiXtart.inf e selezionare Install. Infine, installare semplicemente il PowerToy ElevateKiXtart.inf.

PowerToy per l'esecuzione come altro utente

La funzionalità Controllo dell'account utente (UAC) è stata progettata per rendere il sistema operativo meno vulnerabile al malware, configurando il sistema in modo che gli utenti, anche quelli con privilegi di amministratore, eseguano la maggior parte delle applicazioni con privilegi utente standard. Controllo dell'account utente offre la possibilità di elevare i privilegi per l'esecuzione di attività amministrative e altre funzioni delle applicazioni. Questa possibilità di elevazione dei privilegi viene fornita tramite l'opzione per l'esecuzione come amministratore, che viene visualizzata quando si fa clic con il pulsante destro del mouse sui file eseguibili. I PowerToy per l'elevazione dei privilegi trattati nel numero di giugno 2007 hanno esteso questa capacità di utilizzare altri tipi di file e oggetti.

La funzionalità incorporata in Windows Vista funziona piuttosto bene per molte attività amministrative. Tuttavia, in Windows Vista non è stato preso in considerazione uno scenario importante. Molti reparti IT prevedono un criterio in base al quale gli amministratori di rete utilizzano un account utente per le relative attività quotidiane, come l'utilizzo della posta elettronica, la creazione di documenti e simili, e un secondo account utente specifico per l'amministrazione della rete (o amministrazione del computer locale).

Questo avviene allo scopo di ridurre il rischio che un amministratore di rete comprometta l'intero sistema in uso o il dominio in cui risiede nel caso in cui esegua accidentalmente codice malware durante lo svolgimento delle relative attività quotidiane. Questa configurazione è stata implementata in Windows XP utilizzando l'opzione Esegui come..., visualizzata facendo clic con il pulsante destro del mouse. Tuttavia, questa opzione non è stata introdotta in Windows Vista perché è stata sostituita con l'opzione Esegui come amministratore.

Lo strumento da riga di comando runas, tuttavia, è ancora presente in Windows Vista. Purtroppo, non è possibile utilizzarlo per le attività più comuni che prevedono l'utilizzo di due account, eseguendo gli snap-in di Microsoft® Management Console (MMC). Si supponga, ad esempio, che si sia responsabile di alcune attività di gestione di account in Active Directory®. Per l'esecuzione delle attività quotidiane viene utilizzato l'account utente standard e il proprio account di amministrazione di rete è anche membro del gruppo Administrators locale (è possibile quindi installare strumenti di gestione di rete quando necessario) su un computer Windows Vista con la funzionalità Controllo dell'account utente attivata. Si desidera avviare lo snap-in Utenti computer di Active Directory (ADU&C) con l'account amministrativo di Active Directory. Si tenta, pertanto, di eseguire il comando runas, come indicato di seguito:

runas /user:mydomain\admin
"mmc.exe %windir%\system32\dsa.msc"

Tuttavia, questo comando non determina l'avvio di ADU&C, ma viene visualizzato il seguente messaggio di errore: "Per l'operazione richiesta è necessaria l'elevazione dei privilegi". In questo caso l'eseguibile MMC è contrassegnato per l'esecuzione con il livello di privilegio highestAvailable. Poiché il livello highestAvailable per l'account di amministrazione di rete è quello di amministratore, l'avvio di ADU&C utilizzando questo metodo richiede l'elevazione dei privilegi. Poiché il comando runas non determina una richiesta di elevazione dei privilegi, viene generato il messaggio di errore.

Pertanto, in Windows Vista questo scenario risulta particolarmente complesso a causa della mancanza di una voce di menu di scelta rapida per l'opzione Esegui come... e di meccanismi incorporati che consentano di eseguire un processo con un altro nome utente che richiede l'elevazione dei privilegi.

Questo articolo sarebbe piuttosto deludente se non fornisse una soluzione a questo problema; tuttavia, per fortuna, uno dei miei PowerToy di elevazione dei privilegi originali fornisce la chiave per risolvere il secondo problema e nel presente articolo ne viene definito un altro per risolvere il primo problema. Sarebbe bello poter affermare che sono riuscito a escogitare la soluzione al problema correlato all'elevazione dei privilegi, ma questa è stata elaborata da Gov Maharaj del team Windows AppCompat.

Alla fine si scopre che il PowerToy Elevate Command può essere utilizzato con il comando runas. A differenza del comando precedente, il seguente comando è in grado di determinare una richiesta di elevazione dei privilegi:

runas /user:mydomain\admin
"elevate mmc.exe%windir%\system32\dsa.msc"

In tal modo, runas provoca l'avvio di elevate.cmd (dal punto di vista tecnico, il processo avviato è cmd.exe) come altro utente e il comando elevate è responsabile dell'avvio di mmc.exe con una richiesta di elevazione dei privilegi.

Infine, ho utilizzato questo trucco in combinazione con le associazioni per i file .exe e .msc e vi ho associato l'interfaccia utente di un'applicazione HTML per creare un PowerToy che consente di creare l'opzione Run as Another User, disponibile tramite il menu di scelta rapida. Quando si seleziona Run as Another User, viene visualizzata un'applicazione HTML simile a quella riportata nella Figura 1.

Figura 1 Strumento Run as Another User

Figura 1** Strumento Run as Another User **(Fare clic sull'immagine per ingrandirla)

Immettere semplicemente il nome utente e il dominio; per un account sul computer locale, selezionare la casella di controllo Use Local Account. È possibile quindi fare clic sul pulsante Run per avviare l'applicazione come utente standard o sul pulsante Run as Admin per avviare l'applicazione con privilegi elevati. Dopo aver fatto clic su uno di questi due pulsanti, runas.exe verrà eseguito e verrà richiesta una password o il PIN della smart card.

Poiché questo PowerToy utilizza il PowerToy Elevate Command, è necessario prima installare quest'ultimo. Fare quindi clic con il pulsante destro del mouse sul file RunAs.inf, selezionare Install e approvare l'elevazione dei privilegi. Per disinstallare lo strumento, utilizzare Programmi e funzionalità nel Pannello di controllo.

Notare che alcuni dei collegamenti relativi ai file .msc in Strumenti amministrativi (come Gestione computer) funzionano correttamente con questo PowerToy. Tuttavia, tenere presente che se si installano gli strumenti amministrativi di Windows Server® 2003 utilizzando adminpak.msi, i collegamenti creati non rappresentano collegamenti standard per i file .msc. Rappresentano invece collegamenti di Windows Installer e, di conseguenza, in Esplora risorse non viene visualizzata l'opzione Run as Another User per questi collegamenti.

Per tali collegamenti sarà necessario individuare i file .msc e fare clic con il pulsante destro del mouse su di essi o creare nuovi collegamenti ai file .msc. Inoltre, il comando runas non funziona con Internet Explorer® a causa delle nuove caratteristiche di progettazione di Internet Explorer per la compatibilità con la modalità protetta di Windows Vista (ulteriori informazioni relative a questo problema sono disponibili all'indirizzo support.microsoft.com/?id=922980).

Nota: nel periodo intercorso tra il completamento di questi PowerToy e la pubblicazione del presente articolo, Windows Sysinternals ha rilasciato un nuovo strumento che, dal punto di vista funzionale, è molto simile al mio PowerToy per l'esecuzione come altro utente. Questo strumento è denominato ShellRunas ed è disponibile sul sito di Windows Sysinternals: technet.microsoft.com/sysinternals/cc300361.

Poiché gli sviluppatore nel team di Sysinternals scrivono codice per professione, è preferibile utilizzare lo strumento da essi creato. È possibile utilizzare il PowerToy illustrato nel presente articolo come esempio del modo in cui questa attività in particolare e le estensioni della shell in generale possano essere eseguite utilizzando applicazioni HTML con codice di script.

CMD e PowerShell Prompt Here as System

Accade talvolta che sia necessario eseguire i programmi nel contesto del sistema locale. Ad esempio, molti strumenti di distribuzione software, come System Center Configuration Manager (SCCM), utilizzano un agente client che viene eseguito come sistema locale per lo svolgimento delle relative attività.

Per verificare il comportamento di un programma di installazione software in esecuzione come sistema locale, prima di tentare una distribuzione con un prodotto, come SCCM, può essere utile avviare il programma di installazione utilizzando un prompt dei comandi in esecuzione come sistema locale. Ho pertanto deciso di creare i PowerToy CMD e PowerShell Prompt Here as System.

In ambiente Windows XP, una funzione come questa viene in genere eseguita con uno script della shell dei comandi:

@echo off
sc create CmdAsSystem type= own type= interact
binPath= "cmd /c start cmd /k (cd c:\ ^& color ec ^& 
title ***** SYSTEM *****)"
net start CmdAsSystem
sc delete CmdAsSystem

Tuttavia, se si tenta di eseguire questa funzione da un prompt dei comandi con privilegi elevati in Windows Vista, verrà generato il seguente messaggio di errore e il prompt dei comandi in esecuzione come sistema non verrà visualizzato:

AVVISO:  Il servizio CmdAsSystem è configurato come interattivo, tuttavia il supporto non risulta valido. Il servizio potrebbe non funzionare correttamente.

Il problema è che questo script tenta di creare e avviare un servizio interattivo. I servizi interattivi non funzionano correttamente a causa della funzione Session 0 Isolation introdotta in Windows Vista. Per una descrizione di Session 0 Isolation, vedere il white paper "Services in Windows Vista" disponibile all'indirizzo microsoft.com/whdc/system/vista/Vista_Services.mspx.

Per superare questa limitazione ho utilizzato lo strumento Psexec sviluppato da Sysinternals (visitare il sito Web all'indirizzo technet.microsoft.com/sysinternals/bb897553.aspx). Questo strumento consente di avviare i processi nel contesto di sistema. Purtroppo, la maggior parte degli strumenti di Sysinternals non include un programma di installazione. Pertanto, ho fornito un file INF (disponibile nel download del codice) per installare l'intera suite di Sysinternals (che contiene Psexec) in Programmi\ Sysinternals Suite. Questo file INF crea inoltre i collegamenti del menu Start per gli strumenti grafici della suite.

Per installare la suite, scaricare SysinternalsSuite.zip da technet.microsoft.com/sysinternals/bb842062.aspx e decomprimerlo in una cartella. Copiare il file INF (Install_SysinternalsSuite.inf) nella cartella, fare clic con il pulsante destro del mouse su Install_SysinternalsSuite.inf e selezionare Install. Poiché questi nuovi PowerToy utilizzano il PowerToy Elevate Command, installare quest'ultimo. Successivamente, è possibile installare CmdHereAsSystem.inf e PowerShellHereAsSystem.inf. Una volta installati questi PowerToy, le opzioni CMD Prompt Here as System e PowerShell Prompt Here as System saranno disponibili come voci del menu di scelta rapida per le cartelle e le unità in Esplora risorse, come illustrato nella Figura 2.

Figura 2 Opzioni CMD Prompt Here as System e PowerShell Prompt Here as System

Figura 2** Opzioni CMD Prompt Here as System e PowerShell Prompt Here as System **

Nella Figura 3 viene illustrato un prompt CMD eseguito come sistema. I colori chiari indicano che questo prompt viene eseguito come sistema e che, se vengono immessi i comandi errati, è possibile che si verifichino eventi imprevisti che possono causare danni al sistema.

Figura 3 Occorre utilizzare il PowerToy CMD Prompt as System con responsabilità

Figura 3** Occorre utilizzare il PowerToy CMD Prompt as System con responsabilità **

Infine, questi PowerToy aggiungono dei comandi al sistema in modo che sia possibile avviare questi prompt nella finestra di dialogo Esegui o in un prompt CMD. Ad esempio, l'esecuzione del seguente comando dalla finestra di dialogo Esegui consentirà di avviare un prompt CMD come sistema nella cartella di Windows:

cmdassystem "c:\windows"

Il comando equivalente per Windows PowerShellTM è psassystem. Tenere presente inoltre che i PowerToy CMD e PowerShell Prompt Here as Administrator sono stati modificati per installare comandi simili: cmdasadmin e psasadmin, rispettivamente.

Elevation Gadget

La maggior parte dei miei PowerToy richiede un clic del pulsante destro del mouse. Tuttavia, a questo aggiornamento ho aggiunto una funzionalità un po' più divertente. Si tratta di un gadget di Windows Sidebar, denominato Elevation Gadget (illustrato nella Figura 4) e rappresenta una destinazione di trascinamento. Trascinare da Esplora risorse un eseguibile o uno script per il quale sia definita un'azione runas. In tal modo, verrà avviato con privilegi elevati.

Figura 4 Elevation Gadget di destinazione

Figura 4** Elevation Gadget di destinazione **

Se si sono installati i precedenti PowerToy di elevazione dei privilegi, questo gadget sarà compatibile con gli script di Windows Script Host, gli script di Windows PowerShell, le applicazioni HTML e i pacchetti e le patch di Windows Installer nonché con gli eseguibili e gli script della shell dei comandi per i quali, per impostazioni predefinita, in Windows Vista è definita un'azione runas. È inoltre possibile trascinare più elementi contemporaneamente. Provare a trascinare una cartella nel gadget per vedere cosa succede.

Per installare il gadget, fare doppio clic su Elevation.gadget (disponibile nel download del codice). Se si desidera esaminare il codice per il gadget, aggiungere l'estensione .cab al nome del file. È possibile quindi estrarre il contenuto dal file Cab.

Conclusioni

Il download per questo articolo contiene sia i nuovi PowerToy che quelli dell'articolo originale. Ad alcuni dei PowerToy precedenti sono state apportate lievi modifiche. Ad esempio, le versioni originali di Windows PowerShell Prompt Here as Administrator e di Elevate WSH Script prevedevano l'installazione delle nuove copie di elevate.cmd ed elevate.vbs. Poiché anche alcuni dei nuovi PowerToy sono basati su questi file, ho modificato questi strumenti in modo da richiedere l'installazione del PowerToy Elevate Command (e pertanto condividono tale copia). Per determinare se un PowerToy richiede l'installazione del PowerToy Elevate Command, esaminare l'intestazione nel file INF.

Anche in altri PowerToy originali sono state apportate modifiche secondarie e non funzionali. Disinstallare sempre la versione precedente di un PowerToy prima di installare quella più recente. Poiché questa raccolta ora comprende 17 strumenti, ho incluso gli script della shell dei comandi per installare e disinstallare l'intera raccolta (InstallAllPowerToys.cmd e UninstallAllPowerToys.cmd, rispettivamente). È possibile configurare questi script in modo che vengano installati e disinstallati solo gli strumenti che è necessario utilizzare.

Tenere presente che InstallAllPowerToys.cmd, per impostazione predefinita, non prevede l'installazione dei PowerToy per l'esecuzione come amministratore per gli strumenti di script di terze parti. È possibile modificare questo script in modo che vengano installati solo i PowerToy per i quali si è installato il software. Quando uno di questi script viene eseguito, si riavvia automaticamente con privilegi elevati. UninstallAllPowerToys.cmd determina anche la rimozione di tutte le versioni precedenti di questi strumenti.

Come tutti i PowerToy, questi strumenti non sono supportati e vengono utilizzati a proprio rischio. Tenere presente che non si tratta di prodotti Microsoft ufficiali, ma sono mie creazioni personali. Questi strumenti sono stati testati solo da me e da pochi altri volontari su un sistema Windows Vista a 32 bit in cui viene utilizzato l'inglese come lingua predefinita. Infine, è possibile che tutti o alcuni di questi PowerToy non funzionino con aggiornamenti, service pack o versioni future del sistema operativo Windows.

Michael Murgolo è un consulente senior per le infrastrutture dei servizi di consulenza Microsoft. Lavora in particolare su sistemi operativi, distribuzione, servizi di rete, Active Directory, gestione dei sistemi, automazione e gestione delle patch. È un esperto nell'area della distribuzione e migrazione dei desktop.

© 2008 Microsoft Corporation e CMP Media, LLC. Tutti i diritti riservati. È vietata la riproduzione completa o parziale senza autorizzazione.