Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoLuigia Bellucci Modificato 10 anni fa
1
Email: malta@vevy.com Blog: http://blogs.ugidotnet.org/raffaele Profilo: https://mvp.support.microsoft.com/profile/raffaele
2
Blog http://blogs.ugidotnert.org/raffaele La versione di Windows è dwMajorVersion.dwMinorVersion OSVERSIONINFOEX (GetVersionEx) contiene queste informazioni Major = 5 Windows 2000, XP, 2003 Minor = 0 Windows 2000 Minor = 1 Windows XP Minor = 2 Windows XP 64 bit, 2003, 2003 R2 Major = 6 Windows Vista, 2008, Windows 7, 2008 R2 Minor = 0 Windows Vista, Windows 2008 wProductType = VER_NT_WORKSTATION Vista Minor = 1 Windows 7, Windows 2008 R2 wProductType = VER_NT_WORKSTATION Windows 7 Windows 7 R2 (Server) solo per hardware a 64 bit
3
Blog http://blogs.ugidotnert.org/raffaele
4
È una struttura dati che ogni processo ottiene dal sistema operativo in cambio delle credenziali (user/pwd) In pratica è la carta di identità di un utente che contiene: L'identità dell'utente sotto forma di "SID" I gruppi a cui appartiene l'utente I privilegi assegnati all'utente Alla logon la shell (explorer.exe) avrà il nostro token Ogni volta che facciamo "doppio click" su un'applicazione questa eredita il token dal processo che l'ha lanciato (explorer.exe) Se facciamo doppio click su un virus e siamo amministratori del PC, il virus avrà un token da amministratore
5
Blog http://blogs.ugidotnert.org/raffaele LSA (LSALogonUser) 1. Logon 2. Creazione token Administrator 3. Rimozione privilegi Primary Token (restricted) Linked Token (full) Explorer.exe (token restricted) 4. Token
6
Blog http://blogs.ugidotnert.org/raffaele Esplicite deny sui gruppi administrators e domain admin Mandatory label (Integrity Level) medium (invece di high) Virtualization allowed Default Dacl non contiene administrators Eliminazione di quasi tutti i privilegi SeIncreaseQuotaPrivilege SeMachineAccountPrivilege SeSecurityPrivilege SeTakeOwnershipPrivilege SeLoadDriverPrivilege SeSystemProfilePrivilege SeSystemtimePrivilege SeProfileSingleProcessPrivilege SeIncreaseBasePriorityPrivilege SeCreatePagefilePrivilege SeBackupPrivilege SeRestorePrivilege SeIncreaseQuotaPrivilege SeMachineAccountPrivilege SeSecurityPrivilege SeTakeOwnershipPrivilege SeLoadDriverPrivilege SeSystemProfilePrivilege SeSystemtimePrivilege SeProfileSingleProcessPrivilege SeIncreaseBasePriorityPrivilege SeCreatePagefilePrivilege SeBackupPrivilege SeRestorePrivilege SeShutdownPrivilege SeChangeNotifyPrivilege SeUndockPrivilege SeIncreaseWorkingSetPrivilege SeTimeZonePrivilege SeShutdownPrivilege SeChangeNotifyPrivilege SeUndockPrivilege SeIncreaseWorkingSetPrivilege SeTimeZonePrivilege Token full Token restricted SeShutdownPrivilege SeDebugPrivilege SeSystemEnvironmentPrivilege SeChangeNotifyPrivilege SeRemoteShutdownPrivilege SeUndockPrivilege SeManageVolumePrivilege SeImpersonatePrivilege SeCreateGlobalPrivilege SeIncreaseWorkingSetPrivilege SeTimeZonePrivilege SeCreateSymbolicLinkPrivilege SeShutdownPrivilege SeDebugPrivilege SeSystemEnvironmentPrivilege SeChangeNotifyPrivilege SeRemoteShutdownPrivilege SeUndockPrivilege SeManageVolumePrivilege SeImpersonatePrivilege SeCreateGlobalPrivilege SeIncreaseWorkingSetPrivilege SeTimeZonePrivilege SeCreateSymbolicLinkPrivilege
7
Blog http://blogs.ugidotnert.org/raffaele LUA Buglight (A. Margosis) http://blogs.msdn.com/aaron_margosis/archive/2008/06/13/lua- buglight-2-0-preview.aspx Standard User Analyzer Parte dell'Application Compatibility Toolkit - ACT 5.0 http://www.microsoft.com/downloads/details.aspx?FamilyId=24DA8 9E9-B581-47B0-B45E-492DD6DA2971&displaylang=en Process Monitor (FileMon + RegMon) Sul sito di SysInternals (ora diventato Technet) Application Verifier (codice nativo C++) http://msdn.microsoft.com/en-us/library/ms220931.aspx
8
Blog http://blogs.ugidotnert.org/raffaele Il token di un processo non può essere cambiato Si può elevare il processo (che farà apparire UAC) grazie alla API ShellExecute (C++) o alla classe Process (.NET) Le API CreateProcess NON elevano il processo ma tornano ERROR_ELEVATION_REQUIRED se è necessario elevare il processo L'informazione di elevazione viene ricavata: 1. Dal manifest embedded o esterno 2. Nel database 'application compatibility' (registry) 3. Ricerca euristica di un installer wchar_t wszDir[MAX_PATH]; GetSystemDirectory(wszDir,_countof(wszDir)); wcscat_s(wszDir,_countof(wszDir),L"\\cmd.exe"); HINSTANCE h = ShellExecute(0, L"runas", wszDir, 0, 0, SW_SHOWNORMAL); wchar_t wszDir[MAX_PATH]; GetSystemDirectory(wszDir,_countof(wszDir)); wcscat_s(wszDir,_countof(wszDir),L"\\cmd.exe"); HINSTANCE h = ShellExecute(0, L"runas", wszDir, 0, 0, SW_SHOWNORMAL); C++ Process p = new Process(); ProcessStartInfo psi = new ProcessStartInfo(@ "cmd.exe"); psi.UseShellExecute = true; psi.Verb = "runas"; p.StartInfo = psi; p.Start(); Process p = new Process(); ProcessStartInfo psi = new ProcessStartInfo(@ "cmd.exe"); psi.UseShellExecute = true; psi.Verb = "runas"; p.StartInfo = psi; p.Start(); C#
9
Blog http://blogs.ugidotnert.org/raffaele COM Elevation Moniker può elevare un COM object L'applet del control panel per il cambio dell'ora usa questo sistema Per essere "elevabili" gli oggetti COM devono: Essere marcati nel registry HKLM\Software\Classes\CLSID\{CLSID}\Elevation\Enabled = 1 Avere un nome che verrà mostrato da UAC HKLM\Software\Classes\CLSID\{CLSID}\LocalizedString = Se possiedono un'icona (...\Elevation\IconReference=...) verrà mostrata nella dialog di UAC Per elevare l'oggetto si usa CoGetObject con questa sintassi: Elevation:Administrator!new{GUID} Elevation:Highest!new{GUID} Elevation:Highest!clsid{GUID} Listato di CoCreateInstanceAsAdmin: http://msdn.microsoft.com/en-us/library/ms679687.aspx
10
Blog http://blogs.ugidotnert.org/raffaele http://blogs.ugidotnet.org/raffaele/ archive/2009/01/27/windows-vista-integrity-levels-parte-1.aspx
11
Blog http://blogs.ugidotnert.org/raffaele Sono un meccanismo per diminuire l'accesso agli oggetti rispetto alle tradizionali Access Control List I fattori sono due: Integrity Level (Low, Medium, High, System) Integrity Policy (no-read-up, no-write-up, no-execute-up) Questi fattori sono presenti: Nel token di ogni processo Nel security descriptor degli oggetti kernel (file, registry, etc.) Windows confronta questi fattori ad ogni accesso Esempio: il "protected mode" di Internet Explorer
12
Blog http://blogs.ugidotnert.org/raffaele Low Medium High Low Medium High Processo Medium Read + Write Read Processi Oggetti
13
Blog http://blogs.ugidotnert.org/raffaele LocalSystemSystem LocalServiceSystem NetworkServiceSystem AdministratorsHigh Backup OperatorsHigh Network Configuration Operators High Cryptographic OperatorsHigh Authenticated UsersMedium Everyone (World)Low AnonymousUntrusted
14
Blog http://blogs.ugidotnert.org/raffaele User Interface Privilege Isolation Permette di impedire ad un processo con un integrity level più basso di... eseguire SendMessage o PostMessage di certi messaggi Internamente Windows ha una "blacklist" dei messaggi vietati tra cui WM_USER + x realizzare thread hook monitorare con i journal hook iniettare dll... verso un processo di livello più alto
15
Blog http://blogs.ugidotnert.org/raffaele
16
Impostazioni globali e read-only Creare la struttura di cartelle necessarie all'applicazione Salvare nella Program Files le impostazioni globali e read-only Installare i certificati digitali Applicare le ACL su cartelle e certificati Installare oggetti COM in HKLM Il setup.MSI viene eseguito con privilegi elevati Creare una "custom action" per eseguire operazioni non previste dalla configurazione del Setup MSI
17
Blog http://blogs.ugidotnert.org/raffaele L'utente ha diritto di Read/Write su queste cartelle Le "Documents" sono quelle per i dati Le "Application" sono quelle per le configurazioni Il setup crea una sottocartella con il nome Azienda e/o Applicativo C:\users\raf\Documents\Visual Studio 2008\... Cartella XP C:\Documents and Settings\... Cartella Vista/Win7 User Con divi sa App C++ SHGetKnownFolder Path.NET Environment. GetFolderPath( Environment. SpecialFolder....) All Users\ Application Data C:\ProgramDataSi FOLDERID_ ProgramData Common ApplicationData raf\Application Data C:\Users\raf\ AppData\Roaming Si FOLDERID_ RoamingAppData ApplicationData raf\Local Settings\ Application Data C:\Users\raf\ AppData\Local Si FOLDERID_ LocalAppData LocalApplicationData raf\My Documents C:\Users\raf\ Documents Si FOLDERID_ Documents MyDocuments (non disponibile)C:\Users\PublicSi FOLDERID_ Public GetEnvironmentVariable ("public") - raccolta di cartelle Solo Win7 Si- FOLDERID_ DocumentsLibrary (usare PInvoke)
18
Blog http://blogs.ugidotnert.org/raffaele Gli applicativi NON devono scrivere: nelle cartelle di sistema: Program Files, Windows, System32 nel registry sotto le key HKLM / HKCR A partire da Vista le operazioni di scrittura sono virtualizzate Solo se l'applicazione non ha un manifest Solo se il token contiene il flag "Virtualization Enabled" Solo su macchine a 32 bit User mode kernel mode Luafv.sys Ntfs.sys Applicazione Legacy Applicazione Legacy \Windows\App.ini \Users\ \AppData\Local\ VirtualStore\Windows\App.ini \Windows\App.ini Access Denied \Windows\App.ini Access Denied Applicazione Vista Applicazione Vista File System
19
Blog http://blogs.ugidotnert.org/raffaele
21
È una struttura dati, tipicamente inserita nelle risorse dell'eseguibile che permette di informare il sistema operativo se è opzionale o necessario che il processo sia elevato Visual Studio gestisce i manifest sia in progetti VC++ che.NET A partire da Vista esiste la sezione requestedElevationLevel che può assumere tre valori: asInvoker: Assume i diritti dell'utente highestAvailable: richiede l'elevazione se l'utente è amministratore, non la richiede se l'utente è solo user requireAdministrator: richiede sempre l'elevazione
22
Blog http://blogs.ugidotnert.org/raffaele A partire da Windows 7 esiste la sezione CompatibilityInfo Indica la versione di Windows per cui è stata studiata l'applicazione Windows 7 cambia il comportamento di servizi/api a seconda del manifest API: GetOverlappedResult API: ReadFileEx RPC: exception handling RPC: Thread pool management Desktop Windows Manager: Fail/Lock bit blitting Le applicazioni prive di CompatibilityInfo saranno considerate "legacy" dal sistema operativo Quelle funzionalità di API/RPC/DWM saranno come su Windows Vista
23
Blog http://blogs.ugidotnert.org/raffaele Afferma la necessità che laccesso ad una risorsa deve essere 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
24
Blog http://blogs.ugidotnert.org/raffaele Button SendMessage(GetDlgItem(hWnd, IDOK), BCM_SETSHIELD, 0, TRUE); Hyperlink Mettere un'icona IDI_SHIELD vicino Menu contestuali IContextMenu ha il supporto specifico per il Shield Menu di Popup Ricavare l'icona da SHSTOCKICONINFO e disegnarla
25
Blog http://blogs.ugidotnert.org/raffaele L'architettura di Winlogon e sessioni è cambiata Nuovi credential provider nel processo di logon Isolamento della "Session 0" L'interattività con il desktop deve essere evitata Nuovo servizio di Interattività per facilitare la migrazione Nuove API COM per pilotare il Firewall Service Restart Policy limitata a 3 restart Protected Mode di Internet Explorer I plugin devono essere testati e tenere conto degli integrity levels MSMQ Client per Windows 2000 non più disponibile
26
Blog http://blogs.ugidotnert.org/raffaele Informazioni su Windows 7 http://www.microsoft.com/windows/windows-7 Provate Windows 7 beta 1 http://msdn.microsoft.com/en-us/dd353271.aspx Windows Developer Center http://msdn.microsoft.com/windows Windows 7 Developer Guide http://msdn.microsoft.com/en-us/library/dd371748(VS.85).aspx Download di Windows SDK 7.0 beta 1 http://www.microsoft.com/downloadS/details.aspx?familyid=A91DC12 A-FC94-4027-B67E-46BAB7C5226C&displaylang=en Windows 7 Application Quality Cookbook http://code.msdn.microsoft.com/Windows7AppQuality Integrity Levels e UIPI http://blogs.ugidotnet.org/raffaele/archive/2009/01/27/ windows-vista-integrity-levels-parte-1.aspx
27
©2009 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.