La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

La riduzione dei privilegi in Windows Marco Russo

Presentazioni simili


Presentazione sul tema: "La riduzione dei privilegi in Windows Marco Russo"— Transcript della presentazione:

1 La riduzione dei privilegi in Windows Marco Russo

2 Agenda Cosa è un utente con privilegi minimi Perché è giusto farlo Vivere senza essere amministratori Prepararsi al grande salto Gli strumenti Sviluppare senza essere amministratori Novità in Windows Vista Regole di scrittura (riferimenti)

3 Utente con privilegi minimi La maggior parte degli utenti usa un account di amministratore locale della macchina Qualsiasi operazione è consentita Comodo per installare software e accedere a tutte le configurazioni del sistema operativo Rischio latente: eseguire del codice che, volontariamente o no, abusa di questo privilegio Utente normale Si dice con privilegi minimi perché non può installare nuove applicazioni e accedere a molte componenti critiche del sistema È un meccanismo di difesa, anche dai propri errori prima che da attacchi esterni e/o codice maligno

4 Chi deve usare un utente amministratore? Nessuno, nella pratica quotidiana Soprattutto non per navigare su Internet e leggere mail Ma io sono un sistemista! Bene, quindi hai già due utenti, uno amministrativo per le operazioni amministrative e uno personale per tutto il resto. Vero? Bravo! Ma io sono un programmatore! Beh, se scrivi software su un computer attaccato a una rete e magari anche a Internet, sei pur sempre un utente come molti altri Ma soprattutto, le applicazioni che scrivete sono utilizzabili da un utente normale? Come le provate con un utente amministratore?

5 Perché è giusto farlo Perché è giusto avere un utente non amministratore

6 I rischi AzioneAdminUser Programma in run automatico SIPARZ. Installazione e avviamento servizi SINO Connessione a server di rete SI Installazione keylogger SINO Invio dati su porte TCP/IP SI Installazione driver SINO Analisi traffico di rete (sniffing) SINO Controllo remoto PC SIPARZ. PARZ. = Vulnerabilità parziale

7 Privilegi minimi Run with Least Privilege Significa eseguire con il minimo dei privilegi Si applica ad applicazioni Web e Windows LPA: Least Privileged Account Utente con privilegi minimi Si applica a un utente che non è amministratore In Windows, un utente che appartiene al gruppo Users di default

8 Perché è giusto farlo Unapplicazione andrebbe eseguita con il minimo dei privilegi necessari Limita i danni in caso di errore o attacco Sicurezza, insomma... Unapplicazione dovrebbe essere eseguibile con il minimo dei privilegi necessari Il programmatore deve pensarci Non tutti i programmatori lo fanno È un motivo per cui i sistemisti odiano i programmatori

9 Perché è giusto farlo I vantaggi: Conseguenze di eventuali virus: limitate Riduce superficie di attacco No spyware Difficile che si installino, non hanno diritti sufficienti Esperimento: Un anno di navigazione con un PC senza antivirus, senza anti-spyware e senza firewall Ma tutti gli aggiornamenti installati tempestivamente Dopo un anno: nessun virus, nessuno spyware Attenzione: non è una garanzia, ma aiuta al 95% Si resta sempre e comunque esposti a vulnerabilità 0day Utente consapevole, non può essere considerato un utente medio

10 Vivere senza essere amministratori

11 Lesperienza da utente Create un logon associato al gruppo Users No Administrators No Power Users Al logon scoprirete che: Non potete installare nuove applicazioni Non potete installare plug-in e ActiveX su Internet Explorer Non potete aggiornare le applicazioni esistenti Alcune applicazioni già installate non si possono più avviare o presentano dei problemi di funzionamento

12 Cosè che non va? Perché le applicazioni smettono di funzionare: 60% - Accesso a file/directory non autorizzato 39% - Accesso a Registry non autorizzato <1% - Mancanza di privilegi sufficienti Soluzioni 1. Scrivere meglio il codice… Ma non sempre si può 2. Individuare i problemi e aumentare gli accessi al minimo indispensabile (su file e registry) Su file e registry, work around fino a nuova versione 3. Aumentare i diritti dellutente Non è una soluzione, è un tornare al problema

13 Guida alla sopravvivenza Il 99% dei problemi è causato da accessi non autorizzati al File System e al Registry Due tool indispensabili per la diagnosi: FileMon RegMon Entrambi su

14 Problemi di File System Directory leggibili da Everyone e modificabili solo da amministratori e power users: C:\ C:\WINDOWS C:\WINDOWS\SYSTEM32 C:\PROGRAM FILES Spesso i programmi aprono in scrittura file in queste directory Anche se poi fanno solo operazioni di lettura Comunque è un errore scrivere in queste directory, ogni utente dovrebbe avere configurazioni separate

15 Problemi di Registry Hive leggibili da Everyone e modificabili solo da amministratori HKEY_LOCAL_MACHINE Spesso i programmi aprono in scrittura queste chiavi di registry Anche se poi fanno solo operazioni di lettura Comunque è un errore scrivere in questa parte di registry, ogni utente dovrebbe avere configurazioni separate e usare HKEY_CURRENT_USER

16 Accessi a File e Registry Windows Explorer RegEdit

17 Perché tutti questi problemi Molti in buona fede Windows 9x non ha ACL (Access Control List) Tutti gli utenti possono fare tutto (o quasi) su disco e registry Le applicazioni sviluppate su Windows 9x funzionano su Windows 2000/XP/2003, ma ignorano laspetto della security Altre applicazioni non sono state mai testate da utenti non amministratori…

18 Preparazione al grande salto

19 La vita dura dellutente Si può e si deve sviluppare con un utente non amministratore È lunico modo per capire subito cosa succede ai programmi sviluppati È anche una questione psicologica: vivere sulla propria pelle certe esperienze fa aumentare la sensibilità al problema È un modo più sicuro di usare un PC Indipendentemente da firewall e antivirus

20 Come fare il grande salto Caratteristiche dellutente: No gruppo Administrators No gruppo Power Users Sì gruppo Users Per uno sviluppatore Creare un gruppo Developer o Advanced User Si definiranno le permission sul gruppo e non sullutente In caso di nuovi utenti sviluppatori sarà facile abilitarli Associare lutente a tale gruppo

21 Come fare il grande salto Tre strade: Cambiare il proprio utente (amministratore locale della macchina) in un utente normale Problema: ciò che è già installato resta accessibile allutente solo perché è owner di registry e directory Si rischia di non percepire alcuni problemi Creare un nuovo utente Strada consigliabile Si perdono i profili Reinstallare tutto Si perdono i profili Si evitano eredità del passato Ci vuole un sacco di tempo!!

22 Prepararsi psicologicamente Perché questo avvertimento? Tanti programmi e tante operazioni non funzioneranno più come prima! I primi due giorni sono i più duri Ci saranno delle crisi… Resistete! Potete farcela! Dopo una settimana: Vi sentirete meglio di prima Avvertirete un maggiore controllo sulla macchina Vi chiederete come avete fatto prima

23 Gli strumenti

24 RunAs Il primo strumento da usare è RunAs Consente di avviare un programma con le credenziali di un altro utente Richiede un logon a ogni esecuzione Si può fare uno script con le password in chiaro ma… bye bye security! Va usato solo per le applicazioni che necessitano realmente di un amministratore: Configurazione di sistema Console amministrative FileMon, RegMon, ProcessExplorer

25 RunAsAdmin Utility free Consente di fare logon come amministratore ma usando dei privilegi ridotti Utile per usare utenti Amministratori in maniera più sicura Si può fare il RunAs dei programmi scegliendo come modificare il token da associare al processo

26 PrivBar Utility free Visualizza il livello di privilegio con cui sono eseguiti Explorer e Internet Explorer

27 RunAs, RunAsAdmin e PrivBar RunAs su Explorer RunAs da Command Prompt RunAsAdminPrivBar

28 Riparare le applicazioni scritte male Individuare Registry e Directory di cui modificare le ACL Usare RegMon e FileMon Di solito si trova un Access Denied poco prima dellinterruzione del programma Abbassare al minimo indispensabile i diritti delle ACL Solo sulla directory interessata Meglio (quando possibile) solo sul file interessato Usare gruppo Developer/Advanced User piuttosto che il singolo utente

29 FileMon Utility free Monitor degli accessi al file system Intercetta tutte le chiamate di I/O Può rallentare le operazioni, in particolare se nella finestra si visualizza tutto senza filtri Utile anche per analizzare il responsabile di eccessive operazioni di I/O

30 RegMon Utility free Monitor degli accessi al registry Intercetta tutte le chiamate alle API del Registry Può rallentare le operazioni, in particolare se nella finestra si visualizza tutto senza filtri Utile anche per analizzare dove risiede la configurazione di un programma Talvolta non è dove dovrebbe essere Es. configurazione per utente in HKLM\Software

31 Uso di FileMon e RegMon Filtrare le operazioni ACCESS DENIED Errore che dipende da insufficienza di privilegi Identificazione del problema e possibili soluzioni: Garantire laccesso da un utente normale a file/directory interessate Workaround temporaneo se non è una propria applicazione Segnalare il bug e installare poi una versione corretta Modificare il codice di accesso alla risorsa Se è un proprio programma – durante il debug questi problemi emergono quasi completamente se non si è amministratori

32 Riparare applicazioni scritte male… FileMonRegMon

33 Application Compatibility Toolkit Alcune funzionalità di ACT consentono di bypassare alcuni dei problemi più frequenti LUA shim Crea file system e registry virtuale in modo analogo a quanto fa Vista Richiede.NET 1.1 e SQL Server 2000 (o MSDE)

34 Sviluppare senza essere amministratori Indicazioni specifiche per i programmatori

35 Setup di Visual Studio.NET 2003 Visual Studio.NET 2003 crea alcuni gruppi a cui uno sviluppatore deve appartenere: VS Developers Debugger Users Inserire a mano gli utenti sviluppatori in questi gruppi Alcune attività restano agli amministratori: Registrazione di componenti COM (regsvr32/regasm) Installazione di assembly nella GAC (gacutil) Installazione di componenti.NET nel catalogo COM+ (regsvcs)

36 Setup di Visual Studio 2005 Visual Studio 2005 usa solo un gruppo speciale: Debugger Users Inserire a mano gli utenti sviluppatori in tale gruppo Alcune attività restano agli amministratori (come in VS.NET 2003): Registrazione di componenti COM (regsvr32/regasm) Installazione di assembly nella GAC (gacutil) Installazione di componenti.NET nel catalogo COM+ (regsvcs)

37 Problemi di debug Gruppo Debugger Users A questo gruppo è assegnato il privilegio SeDebugPrivilege Un virus potrebbe sfruttare questo privilegio per alcuni attacchi ai processi in esecuzione Per le applicazioni.NET (managed) il debug al processo di un altro utente richiede utente admin Non è così per applicazioni Unmanaged Problemi per chi sviluppa servizi o siti web Workaround: in debug eseguire il servizio/sito web con lo stesso utente con cui si fa il debug Se debug remoto: richiesto privilegio SeDebugPrivilege anche su macchina remota

38 Debug ASP.NET Due aspetti Lutente con cui gira lapplicazione Usare lo stesso utente con cui si sviluppa per fare debug I diritti sulle directory usate da ASP.NET Abilitare i diritti su tali directory allutente con cui gira lapplicazione ASP.NET Windows 2000/XP: Lutente associato a ASPNET_WP.EXE è uno solo per tutta la macchina Workaround: eseguire VS.NET con RunAs _solo_ limitatamente alla fase di debug Windows 2003: Gli application pool di II6 aiutano nella gestione di diverse applicazioni con credenziali differenti Visual Studio 2005: Si può usare Visual Web Developer Web Server.

39 Modifica utente ASP.NET IIS 5 (fino a Windows XP) Modificare tag processModel del file web.config Usare ASPNET_SETREG per cifrare la password senza lasciarla in chiaro (KB ) IIS 6 (Windows 2003) Creare un Application Pool Assegnare utente sviluppatore allapplication pool Assegnare utente sviluppatore a gruppo IIS_WPG Altrimenti non funziona con ASP.NET Assegnare la Virtual Directory allApplication Pool

40 VB6 Brutte notizie Non è pensato per essere utilizzato da utenti non amministratori Si può ovviare con le tecniche descritte prima Usare FileMon e RegMon Individuare punti in cui modificare le ACL Molti problemi causati da componenti (ActiveX) di terze parti Anche qua si può ovviare con modifica di ACL Problema: è un lavoro immane e si rischia di tornare al punto di partenza (bassa security)

41 Novità in Windows Vista

42 Aumento della protezione in Windows Vista Servizi eseguiti con Least-Privileged Account Driver in modalità utente se non richiedono funzioni disponibili solo nel kernel Gestione diretta I/O, interrupt, accesso hardware, istruzioni privilegiate della CPU Un driver per un dispositivo collegato su USB non ne ha bisogno User Account Control Gestione automatizzata del RunAs per tutti gli utenti

43 User Kernel Admin System Services 1.Pochi layer 2.La maggior parte con alti privilegi 3.Controllo limitato tra I layer Windows XP

44 System Services D D D User Account Control (LUA) Service Hardening Admin Service 1 D D D Kernel Service 2 Service 3 D D D Low Privilege Services Low rights programs 1.Maggior numero di layer 2.Servizi ripartiti 3.Ridotta la dimension e di layer ad alto rischio LUA User Svc 6 Svc 7 User mode drivers Vista

45 Service hardening Esecuzione con privilegi minimi (Least-privilege Account) Riduce al minimo accesso a risorse Riduce il potenziale danno e il numero di vulnerabilità critiche nei servizi Estende il modello di sicurezza esistente e fornisce opzioni diverse in base alle caratteristiche del servizio GoodSpostamento a un least privilege account (LPA) Ristrutturazione del servizio in due parti dove necessario (separazione zona critica dalle altre che possono usare LPA) Eliminazione di privilegi Windows non necessari per singolo servizio Fornisce regole per firewall BetterGarantisce accesso al Sid del servizio attraverso ACL su risorse specifiche BestUsa SID-Servizio, ACL e write-restricted token per isolare i servizi

46 Cambiamenti ai servizi di Vista Servizi comuni alle due piattaforme Windows XP SP2 LocalSystem Wireless Configuration System Event Notification Network Connections (netman) COM+ Event System NLA Rasauto Shell Hardware Detection Themes Telephony Windows Audio Error Reporting Workstation ICS RemoteAccess DHCP Client W32time Rasman browser 6to4 Help and support Task scheduler TrkWks Cryptographic Services Removable Storage WMI Perf Adapter Automatic updates WMI App Management Secondary Logon BITS Network Service DNS Client Local Service SSDP WebClient TCP/IP NetBIOS helper Remote registry Vista client LocalSystem Firewall Restricted Removable Storage WMI Perf Adapter Automatic updates WMI App Management Secondary Logon LocalSystem Demand started BITS Network Service Fully Restricted DNS Client ICS RemoteAccess DHCP Client W32time Rasman browser 6to4 Task scheduler IPSEC Services Server NLA Network Service Network Restricted TrkWks Cryptographic Services Local Service No Network Access Wireless Configuration System Event Notification Network Connections Shell Hardware Detection Rasauto Themes COM+ Event System Local Service Fully Restricted Telephony Windows Audio TCP/IP NetBIOS helper WebClient SSDP Error Reporting Event Log Workstation Remote registry

47 User Account Control (UAC) Nome precedente: LUA Utenti fanno logon come non-admin per default Interfaccia utente per elevare privilegi ad amministratore per operazioni specifiche Applicazioni e tool amministrativi devono essere UAC area Differenziare le funzionalità disponibili in base ai privilegi dellutente Applicare controlli di sicurezza corretti alle funzionalità del prodotto

48 Approccio UAC Migliorare la produttività garantendo le permission solo quando necessario Consente a utenti standard di eseguire funzionalità chiave senza impattare sulle impostazioni globali Aiuta a isolare i file di sistema e i dati da codice maligno o errato Limita i danni potenziali ai dati personali usando Protected Mode IE Tutte le applicazioni sono eseguite come utente standard se non sono configurate diversamente Isolamento a livello di processo di applicazioni amministrative e ad alto rischio

49 Windows Vista UAC Goals Tutti gli utenti sono Standard User per default Token filtrato creato durante il logon Solo applicazioni marcate appositamente ricevono il token non filtrato Amministratori usano i privilegi completi solo per operazioni e applicazioni amministrative Lutente fornisce un consenso esplicito prima di usare privilegi elevati Alta compatibilità delle applicazioni Redirezione dei dati Consente a vecchie applicazioni di essere eseguite come utente standard Le impostazioni scritte su chiavi riservate del registry sono salvate in unimmagine virtuale del Registry, visibile solo dal programma che le ha effettuate Rilevamento procedure installazione

50 UAC Architecture Standard User Rights Administrative Rights Admin logon Standard User Token Admin Token User Process Change Time ZoneChange Time Zone Run IT Approved ApplicationsRun IT Approved Applications Install FontsInstall Fonts Install PrintersInstall Printers Run MSN MessengerRun MSN Messenger Etc.Etc. Admin Process Install Application Admin Process Configure IIS Admin Process Change Time Standard User Mode Split Token Admin Privileges Admin Privilege Standard User Privilege Admin Privilege Abby Token

51 Contenuti di uno Standard User Token Privilegi tipici di Standard User token Bypass traverse checking (SeChangeNotify) Shut down the system (SeShutdown) Increase Working Set Size (SeIncreaseWorkingSet) Remove computer from docking station (SeUndock) Change Time Zone (SeChangeTimeZone) Nuovo in Vista Tutti gli altri privilegi sono rimossi RID privilegiati impostati a DENY_ONLY Es. Administrators, Enterprise Admins, Policy Admins, Power User, etc. – tutti i gruppi che determinano lo split del token

52 Come eseguire codice con privilegi elevati Configurare unapplicazione che richiede privilegi di amministratore attraverso il manifest Individuazione installer Application Compatibility shims (automatismo) Tab Compatibility in Program Properties Right-click Run as Administrator (Run Elevated… in beta precedenti di Vista)

53 Esempi interfaccia utente

54 Richiesta elevazione privilegi

55 Interfaccia con livelli di warning diversi Applicazione sistema operativo Applicazione Unsigned Applicazione signed

56 Conclusione La security è un problema di tutti, non solo di Microsoft Chiunque scriva software è parte del problema Ciascuno deve fare la sua parte Per cominciare: Scrivere applicazioni utilizzabili da utenti normali Sviluppare con un utente non amministratore

57 Link utili Bug di Visual Studio, KB833896, Uso di aspnet_setreg, KB329290, Developing Software in Visual Studio.NET with Non-Administrative Privileges tchDevelopingSoftwareInVisualStudioNETWithNon-AdministrativePrivileges.asp Keith Brown - Libri e blog Why non admin – Wiki Using a Least-Privileged Account mspx

58 Link utili Blog User Account Control in Vista Blog Aaron Margosis

59 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

60 Regole di scrittura del codice

61 4 semplici regole Separare dati setup e configurazione utente Aprire solo in lettura se si deve leggere Accedere a risorse con privilegi minimi Memorizzare i dati per utente

62 Dati setup e configurazione utente Dati setup Informazioni sullinstallazione Directory con risorse Impostazioni globali come porte TCP/IP per un servizio Configurazione di un servizio Scrivere durante linstallazione su: Registry: hive HKLM (HKEY_LOCAL_MACHINE) C:\Program Files\...

63 Dati setup e configurazione utente Configurazione utente (su file) Modelli, configurazioni su file (XML o altro): C:\Documents and Settings\NOMEUTENTE\Application Data\NOMEAZIENDA\NOMEAPPLICAZIONE\... Modelli, configurazioni su file (XML o altro) per tutti gli utenti: C:\Documents and Settings\All Users\Application Data\NOMEAZIENDA\NOMEAPPLICAZIONE\... Directory in sola lettura per utenti normali Ci scrivono solo i gruppi Administrators e Power Users Per ottenere queste directory usare: System.Environment.GetFolderPath Vedere parametro Environment.SpecialFolder Molti casi specifici già definiti

64 Dati setup e configurazione utente Configurazione utente (su registry) Configurazione globale (directory con dati, percorsi, impostazioni definite in fase di Setup) HKEY_LOCAL_MACHINE (abbreviato in HKLM) Solo in lettura per utenti normali Ci scrive soltanto il gruppo Administrators Configurazione di partenza per tutti gli utenti: HKEY_USERS\.DEFAULT Contenuto copiato nel profilo di un utente al primo logon sulla macchina, non interviene sui profili già esistenti Solo in lettura per utenti normali Ci scrive soltanto il gruppo Administrators Configurazione specifica per ogni utente HKEY_CURRENT_USER (abbreviato in HKCU) Diritti completi per lutente Impossibile vedere la configurazione di un utente diverso (a meno che non si sia Administrators)

65 Aprire in sola lettura Il setup viene eseguito da un amministratore Crea e modifica qualsiasi file e/o chiave di registry Il programma viene eseguito da un utente Dopo il setup accedere solo in lettura alle informazioni di configurazione Eseguire Open con richiesta diritti sola lettura Effettuare solo operazioni Read Errore comune: Fare la Open con diritti di lettura e scrittura In seguito, fare solo Read senza fare Write Il problema è che la Open fallisce subito… Morale: Open va READ ONLY

66 Accedere a risorse con privilegi minimi Più in generale, laccesso a una risorsa va fatto richiedendo privilegi minimi Aprire un file in lettura se non serve scrivere Accedere a processi, thread e semafori senza richiedere diritti più alti del necessario Se si scrive un servizio o un sito web, assegnare un utente con privilegi minimi per accedere alle risorse necessarie al programma Evitare LocalSystem come utente di default Un errore (o un attacco) può essere devastante

67 Memorizzare i dati per utente I dati dellutente per default vanno su My Documents Environment.GetFolderPath( Environment.SpecialFolder.Personal ) Diritti di ownership per lutente Ogni applicazione può vedere tutti i dati dellutente Anche per questo è importante evitare linstallazione di virus e spyware Dove mettere dati visibili e modificabili da tutti gli utenti?

68 Memorizzare i dati per utente Dove mettere dati visibili e modificabili da tutti gli utenti? Non esiste uno standard Problema latente di sicurezza: i dati sono pubblici Esempio: un MDB con la contabilità… non è una buona idea renderlo accessibile a tutti Possibile soluzione: Individuare una directory comune e cambiare le ACL durante il setup (una potrebbe essere SpecialFolder.CommonApplicationData) Resta il problema di aggiungere dei nuovi utenti in futuro: deve farlo lamministratore NON LASCIARE DIRITTI A EVERYONE!!!


Scaricare ppt "La riduzione dei privilegi in Windows Marco Russo"

Presentazioni simili


Annunci Google