Marco Russo DevLeap http://blogs.devleap.com/marco marco@devleap.it 27/03/2017 2:27 AM Il processo di Logon e la sicurezza per l’utente interattivo e per i servizi Marco Russo DevLeap http://blogs.devleap.com/marco marco@devleap.it ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Agenda Processo di Logon Sessioni, Windows Station e Desktop Lsass 27/03/2017 2:27 AM Agenda Processo di Logon Lsass Winlogon Sessioni, Windows Station e Desktop Differenze e ruoli ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Processo di logon 27/03/2017 2:27 AM ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Perché è importante il processo di logon 27/03/2017 2:27 AM Perché è importante il processo di logon Garantisce sicurezza dell’accesso al sistema Consente di comprendere le cause di eventuali problemi e le fonti di possibili attacchi ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Cosa succede al Boot Avviamento Kernel Avviamento servizi di sistema (MBR, Boot, Ntldr, NtDetect, Ntbootdd, Ntoskrnl, Hal) Avviamento servizi di sistema Processo System – contiene tutti i driver Gestito da Local Security Authority (LSA) Avviamento SMSS Session manager, avvia Winlogon e CSRSS Avviamento CSRSS Sottosistema Win32 – processo user-mode controparte di Win32.sys che è la parte kernel Avviamento WINLOGON Avvia SCM (Service Control Manager) e LSASS (Local Security Authority Sub-System)
Cosa succede al Logon CTRL-ALT-CANC Gestito da Local Security Authority (LSA) Richiesta utente e password (o PIN smartcard) Creazione access token Operazione fisicamente a carico di SMSS, processo user-mode che accede a API native, non accessibili da altri processi Avviamento processo shell (explorer.exe) con access token così ottenuto HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell Un processo per default eredita access token da processo padre Explorer è il processo che crea altri processi
Elementi principali della security di Windows 27/03/2017 2:27 AM Elementi principali della security di Windows Local Security Authority (LSA) – processo locale eseguito in modalità utente Autentica utenti locali Local Security Authority (LSA) – processo eseguito su Domain Controller Autentica utenti su macchine in rete Security Reference Monitor – componente kernel Gestione del controllo sull’accesso agli oggetti kernel ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Componenti security (kernel + user) 27/03/2017 2:27 AM Componenti security (kernel + user) WinLogon MSGINA LSASS Event Logger Active Directory LSA Policy LSA Server SAM Server Active Directory User Mode Kernel MSVC1_0.dl SAM Kerberos.dll System Threads System Service Dispatcher (kernel mode callable interfaces) Windows USER, GDI NtosKrnl.Exe I/O Mgr File System Cache Object Mgr. Play Mgr. Plug and Power Mgr. Security Reference Monitor Virtual Memory Processes & Threads Configura- (registry) tion Mgr Procedure Local Call ì Device & File Sys. Drivers Graphics Drivers Kernel Hardware Abstraction Layer (HAL) hardware interfaces (buses, I/O devices, interrupts, interval timers, DMA, memory cache control, etc., etc.) ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Componenti security LSA – Local Security Authority 27/03/2017 2:27 AM Componenti security LSA – Local Security Authority Processo modalità utente (\Windows\System32\Lsass.exe) che implementa policy (password, logon), autenticazione e invio informazioni audit al security event log LSASS policy database: registry HKLM\SECURITY WinLogon MSGINA LSASS Event Logger NetLogon Active Directory LSA Policy LSA Server SAM Server Active Directory MSVC1_0.dl SAM Kerberos.dll ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Componenti LSASS SAM Service Insieme di funzioni (\Windows\System32\Samsrv.dll ) responsabili del database contenente utenti e gruppi definiti sulla macchina locale Database SAM database: Contiene utenti e gruppi locali, con rispettivi password e attributi. Memorizzato nel registry: HKLM\SAM. Password cracker: attaccano l’hash della password dell’utente locale memorizzato nel SAM ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
SAM Service Process Explorer http://www.sysinternals.com/Utilities/ProcessExplorer.html Demo al volo con Process Explorer Aprire LSASS.EXE Guardare Process Properties / Services (c’è SamSS) Con Find DLL cercare Samsrv.dll (oppure visualizzare le DLL di LSASS.EXE nel lower pane) ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Componenti LSASS Active Directory Package autenticazione 27/03/2017 2:27 AM Componenti LSASS Active Directory Servizio di directory che gestisce un database con le informazioni sugli oggetti di un dominio Un dominio è un insieme di computer e dei gruppi associati, gestiti come una singola entità Il server di Active Directory è implementato come servizio (\Windows\System32\Ntdsa.dll) eseguito nel processo Lsass Package autenticazione DLL eseguite nel processo Lsass cge implementano la policy di autenticazione di Windows: LanMan: \Windows\System32\Msvc1_0.dll Kerberos: \Windows\System32\Kerberos.dll Negoziazione: usa LanMan o Kerberos (il più appropriato) ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Componenti LSASS Net Logon service (Netlogon) 27/03/2017 2:27 AM Componenti LSASS Net Logon service (Netlogon) Servizio Windows (\Windows\System32\Netlogon.dll) eseguito in Lsass che risponde alle richieste di logon provenienti dal protocollo Microsoft LAN Manager 2 Windows NT (pre-Windows 2000) Autenticazione gestita come logon locali Netlogon individua anche I domain controller WinLogon LSASS MSGINA Event Logger NetLogon Active Directory LSA Policy LSA Server SAM Server Active Directory MSVC1_0.dl SAM Kerberos.dll ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Componenti security Processo Logon (Winlogon) 27/03/2017 2:27 AM Componenti security Processo Logon (Winlogon) Processo \Windows\System32\Winlogon.exe responsabile per logon interattivo e risposta a SAS (CTRL-ALT-CANC) Graphical Identification and Authentication (GINA) DLL eseguita in Winlogon usata per richiedere nome utente e password o PIN smartcard Default: \Windows\System32\Msgina.dll Registry: HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\GinaDLL WinLogon LSASS MSGINA Event Logger SAS = Secure Attention Sequence NetLogon Active Directory LSA Policy LSA Server SAM Server Active Directory MSVC1_0.dl SAM Kerberos.dll ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Security Reference Monitor 27/03/2017 2:27 AM Security Reference Monitor Controlla accesso a oggetti, manipola privilegi e genera messaggi audit Funzioni in Ntoskrnl.exe Alcune sono documentate nel DDK Esposte in modalità utente come Windows API ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Depends (Platform SDK) 27/03/2017 2:27 AM SAM Service Depends (Platform SDK) Demo con Depends.exe (Platform SDK – copiata in Tools\Bin delle nostre demo) Aprire \windows\system32\Ntoskrnl.exe Visualizzare funzioni che inziano con “Se” (Security) Sono le funzioni del Security Reference Monitor, accessibili in modalità utente come API NT ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Comunicazione tra SRM e LSA 27/03/2017 2:27 AM Comunicazione tra SRM e LSA Comunicazione via local procedure call (LPC) SeLsaCommandPort/SeRmCommand porte per inizializzazione Uso di porte private e shared memory una volta che l’inizializzazione è completa Set audit event Create logon session Delete logon session Local security authority (LSA) server Private comm. port SeLsaCommandPort Private comm. port User mode Kernel mode Private comm. port SeRmCommandPort Private comm. port Shared section Security reference monitor (SRM Write audit message Delete logon session ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Cosa rende il logon sicuro? 27/03/2017 2:27 AM Cosa rende il logon sicuro? Prima che chiunque faccia logon, il desktop visibile è quello di Winlogon Winlogon registra CTRL+ALT+DEL (Secure Attention Sequence = SAS) SAS passa al desktop Winlogon Nessuna applicazione può deregistrarlo, perché solo il thread che registra un hotkey può deregistrarlo Se la gestione dell’input di Windows riceve un codice SAS, disabilita eventuali keyboard hook per evitare che sia intercettato ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
27/03/2017 2:27 AM Logon Dopo aver ricevuto nome utente e password, GINA li invia al Local Security Authority Sub System (LSASS) LSASS chiama un package di autenticazione per verificare il logon Logon locale o dominio legacy: usa MSV1_0. Utente e password sono criptati e confrontati con il database Security Accounts Manager (SAM) Se il logon è a un dominio Active Directory (AD), usa Kerberos che comunica con un domani controller AD Se trova corrispondenza, recupera account utente, gruppi a cui appartiene e privilegi ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
27/03/2017 2:27 AM Logon LSASS crea un token per la sessione di logon e Winlogon lo associa al primo processo della sessione Token creati con API NtCreateToken API Ogni processo riceve una copia del token del processo padre Non si possono aggiungere SID e privilegi a un token Una sessione di logon è attiva solo fino a che c’è almeno un token associato alla sessione ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
LogonSessions http://www.sysinternals.com/Utilities/LogonSessions.html 27/03/2017 2:27 AM Sessioni Logon LogonSessions http://www.sysinternals.com/Utilities/LogonSessions.html Demo Aprire Command Prompt con utente Amministratore Eseguire “LogonSessions –p” (utility Sysinternals) per vedere sessioni logon attive e processi associati Nota bene: sessioni senza processi sono spesso servizi di sistema, bisognerebbe entare con utente LOCALSYSTEM per vederle ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Logon locale Winlogon LPC LSASS MSGINA MSV1_0 SAMSRV ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Logon remoto - Active Directory 27/03/2017 2:27 AM Logon remoto - Active Directory Se il logon è per un utente di dominio, le credenziali criptate sono inviate a LSASS sul domain controller Domain Controller Winlogon LSASS MSGINA NTDSA UDP LPC Active Directory L’autenticazione in rete viene spiegata nella sessione TechNet del pomeriggio (quindi Kerberos, NTLM v1 e V2, LM, ecc.) LSASS Local Machine Kerberos ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Sessioni, Windows Station, Destkop 27/03/2017 2:27 AM Sessioni, Windows Station, Destkop ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Sessioni Una sessione è un oggetto kernel Rappresenta una sessione di lavoro Ogni processo è associato a una sessione Definisce un namespace per gli oggetti kernel Evita condivisioni indesiderate di oggetti tra sessioni diverse Il namespace degli oggetti kernel per default è locale alla sessione La sessione locale è la 0 (detta Console) Tutti i servizi e l’utente interattivo sono in sessione 0 Terminal Server fornisce sessioni da 1 in avanti
Windows Station Una Windows Station è una “stazione logica” di Windows Ogni sessione ha le sue Windows Station Ogni Windows Station ha: Una clipboard Una atom table Tabella ID-Stringa, usata per le finestre di Windows Uno o più Desktop
Windows Station La sessione 0 ha più Windows Station WinSta0 – usata per tutti i processi interattivi Service-0x0-3e7$ - servizi non interattivi [LogonSession] – servizi eseguiti con user account Una per ogni utente diverso associato ai servizi I servizi interattivi sono associati a WinSta0 Altrimenti non visualizzano interfaccia utente Eccezione: dialog box conflag MB_SERVICE_NOTIFICATIOn e MB_DEFAULT_DESKTOP_ONLY
Desktop Ogni Windows Station può avere più desktop Di solito serve solo per WinSta0 della sessione Solo un desktop attivo per Windows Station Ogni desktop può avere più finestre Una finestra appartiene sempre a un solo desktop Esistono tool per passare da un desktop all’altro Virtual Desktop Manager (XP Power Toys), shareware Per default esistono due desktop \Windows\WinSta0\Default Associato a tutte le applicazioni \Windows\WinSta0\Winlogon Usato esclusivamente da Winlogon per il Logon utente
Sessioni, Windows Station e Desktop Legame tra Sessioni, Windows Station e Desktop Le Windows Station di sessioni non interattive hanno un desktop in più Disconnect Desktop, in pratica è un desktop vuoto Usato quando utente remoto si sconnette lasciando sessione aperta Riduce trasferimento di dati sulla rete
Windows Station Desktop 27/03/2017 2:27 AM Windows Station Desktop Process Explorer http://www.sysinternals.com/Utilities/ProcessExplorer.html WinObj http://www.sysinternals.com/Utilities/WinObj.html Demo con WinObj Aprire WinObj con utente amministratore Aprire cartella \Sessions\0 Aprire cartella \Windows\WindowsStations Commentare windows station presenti Aprire sessione remota con Remote Desktop sul PC locale (se si ha Windows Server 2003) Verificare che esiste una cartella \Sessions\n (dove N > 0) In questa cartella esistono altri BaseNamedObjects, altri DosDevices e un’altra Windows Station (sempre WinSta0, che contiene i processi con interfaccia utente associata alla sessione) Demo con Process Explorer Abilitare in Lower Pane l’elenco degli Handle Verificare l’esistenza di handle aperti a Windows Stations e Desktop Nel processo WinLogon ci sono tre desktop: Default, Winlogon e Disconnect (quest’ultimo è usato da Terminal Server per mandare lì l’interfaccia utente quando l’utente è sconnesso, per ridurre il trasferimento di dati sulla rete), gli altri ne hanno uno I processi con interfaccia utente hanno solo il desktop Default I servizi hanno solo il desktop default, ma nelle Windows Station non hanno WinSta0 ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
27/03/2017 2:27 AM Conclusioni Il logon è un’attività eseguita da processi eseguiti in user-mode ma strettamente controllati dal kernel Utenti locali e remoti hanno lo stesso punto di ingresso, anche se l’autenticazione può avvenire con metodi differenti L’isolamento tra utenti diversi avviene tramite isolamento tra le sessioni L’isolamemento tra servizi e applicazioni avviene con le Windows Station L’isolamento tra applicazioni e finestra logon avviene tramite desktop diversi ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
© 2005 Microsoft Corporation. All rights reserved. 27/03/2017 2:27 AM © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. ©2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.