Date post: | 01-May-2015 |
Category: |
Documents |
Upload: | nunziatella-antonelli |
View: | 215 times |
Download: | 2 times |
Il processo di Logon Il processo di Logon e la sicurezza per e la sicurezza per l’utente interattivo e l’utente interattivo e per i serviziper i servizi
Marco RussoMarco RussoDevLeapDevLeaphttp://blogs.devleap.com/marcohttp://blogs.devleap.com/marco [email protected]@devleap.it
AgendaAgenda
Processo di LogonLsass
Winlogon
Sessioni, Windows Station e DesktopDifferenze e ruoli
ProcessoProcessodi logondi logon
Perché è importante il processo di Perché è importante il processo di logonlogon
Garantisce sicurezza dell’accesso al sistemaConsente di comprendere le cause di eventuali problemi e le fonti di possibili attacchi
Cosa succede al BootCosa succede al Boot
Avviamento Kernel(MBR, Boot, Ntldr, NtDetect, Ntbootdd, Ntoskrnl, Hal)
Avviamento servizi di sistemaProcesso System – contiene tutti i driver
Gestito da Local Security Authority (LSA)
Avviamento SMSSSession manager, avvia Winlogon e CSRSS
Avviamento CSRSSSottosistema Win32 – processo user-mode controparte di Win32.sys che è la parte kernel
Avviamento WINLOGONAvvia SCM (Service Control Manager) e LSASS (Local Security Authority Sub-System)
Cosa succede al LogonCosa succede al Logon
CTRL-ALT-CANCGestito 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 Elementi principali della security di WindowsWindows
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
Componenti security (kernel + user)Componenti security (kernel + user)
hardware interfaces (buses, I/O devices, interrupts, interval timers, DMA, memory cache control, etc., etc.)
System Service Dispatcher
SystemThreads
UserMode
KernelMode
NtosKrnl.Exe
Ob
jectM
gr.
WindowsUSER,
GDI
File
Syste
m C
ach
e
I/O Mgr
Device &File Sys.Drivers
Plu
g an
dP
lay Mg
r.
Po
wer
Mg
r.
Sec
urity
Referen
ceM
on
itor
Virtu
alM
emo
ry
Pro
cesses&
Th
reads
Lo
calP
roced
ure
Call Graphics
Drivers
Kernel
Hardware Abstraction Layer (HAL)
(kernel mode callable interfaces)
Co
nfig
ura
-tio
n M
gr
(registry)
WinLogonMSGINA
LSASSActive
Directory
LSA Server
SAM Server
MSVC1_0.dl
Kerberos.dll
LSAPolicy
Event Logger
ActiveDirectory
SAM
Componenti securityComponenti security
LSA – Local Security AuthorityProcesso 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
WinLogonMSGINA LSASS
NetLogonActive
Directory
LSA Server
SAM Server
MSVC1_0.dl
Kerberos.dll
LSAPolicy
Event Logger
ActiveDirectory
SAM
Componenti LSASSComponenti LSASS
SAM ServiceInsieme 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
SAM ServiceSAM Service
Process ExplorerProcess Explorerhttp://www.sysinternals.com/Utilities/http://www.sysinternals.com/Utilities/
ProcessExplorer.htmlProcessExplorer.html
Componenti LSASSComponenti LSASS
Active DirectoryServizio 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 autenticazioneDLL 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)
Componenti LSASSComponenti 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 controllerWinLogonMSGINA LSASS
NetLogonActive
Directory
LSA Server
SAM Server
MSVC1_0.dl
Kerberos.dll
LSAPolicy
Event Logger
ActiveDirectory
SAM
Componenti securityComponenti 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.dllRegistry: HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\GinaDLL
WinLogonMSGINA LSASS
NetLogonActive
Directory
LSA Server
SAM Server
MSVC1_0.dl
Kerberos.dll
LSAPolicy
Event Logger
ActiveDirectory
SAM
Security Reference MonitorSecurity Reference Monitor
Controlla accesso a oggetti, manipola privilegi e genera messaggi auditFunzioni in Ntoskrnl.exe
Alcune sono documentate nel DDK
Esposte in modalità utente come Windows API
SAM ServiceSAM Service
Depends (Platform SDK)Depends (Platform SDK)
Comunicazione tra SRM e LSAComunicazione 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
Local securityauthority (LSA) server
SeLsaCommandPort Private comm. portPrivate comm. port
SeRmCommandPort Private comm. portPrivate comm. port
Security referencemonitor (SRM
Sharedsection
User modeKernel mode
Set audit eventCreate logon sessionDelete logon session
Write audit messageDelete logon session
Cosa rende il logon sicuro?Cosa rende il logon sicuro?
Prima che chiunque faccia logon, il desktop visibile è quello di WinlogonWinlogon registra CTRL+ALT+DEL (Secure Attention Sequence = SAS) SAS passa al desktop WinlogonNessuna applicazione può deregistrarlo, perché solo il thread che registra un hotkey può deregistrarloSe la gestione dell’input di Windows riceve un codice SAS, disabilita eventuali keyboard hook per evitare che sia intercettato
LogonLogon
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
LogonLogon
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 tokenUna sessione di logon è attiva solo fino a che c’è almeno un token associato alla sessione
Sessioni LogonSessioni Logon
LogonSessionsLogonSessionshttp://www.sysinternals.com/Utilities/http://www.sysinternals.com/Utilities/
LogonSessions.htmlLogonSessions.html
Logon localeLogon locale
MSGINA
MSV1_0
LSASS
LPC
Winlogon
SAMSRV
Winlogon
MSGINA
Kerberos
LSASS
NTDSA
LSASS
LPCUDP
Domain Controller
Local Machine
Logon remoto - Active DirectoryLogon remoto - Active Directory
Se il logon è per un utente di dominio, le credenziali criptate sono inviate a LSASS sul domain controller
Active
Directory
Sessioni, Sessioni, Windows Windows Station,Station,DestkopDestkop
SessioniSessioni
Una sessione è un oggetto kernelRappresenta una sessione di lavoroOgni processo è associato a una sessioneDefinisce un namespace per gli oggetti kernel
Evita condivisioni indesiderate di oggetti tra sessioni diverse
Il namespace degli oggetti kernel per default è locale alla sessioneLa 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 StationWindows Station
Una Windows Station è una “stazione logica” di WindowsOgni sessione ha le sue Windows StationOgni Windows Station ha:
Una clipboard
Una atom tableTabella ID-Stringa, usata per le finestre di Windows
Uno o più Desktop
Windows StationWindows Station
La sessione 0 ha più Windows StationWinSta0 – 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 WinSta0Altrimenti non visualizzano interfaccia utente
Eccezione: dialog box conflag MB_SERVICE_NOTIFICATIOn e MB_DEFAULT_DESKTOP_ONLY
DesktopDesktop
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ù finestreUna 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\WinlogonUsato esclusivamente da Winlogon per il Logon utente
Sessioni, Windows Station e DesktopSessioni, 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 StationWindows StationDesktopDesktop
Process ExplorerProcess Explorerhttp://www.sysinternals.com/Utilities/http://www.sysinternals.com/Utilities/
ProcessExplorer.htmlProcessExplorer.html
WinObjWinObjhttp://www.sysinternals.com/Utilities/WinObj.htmlhttp://www.sysinternals.com/Utilities/WinObj.html
ConclusioniConclusioni
Il logon è un’attività eseguita da processi eseguiti in user-mode ma strettamente controllati dal kernelUtenti locali e remoti hanno lo stesso punto di ingresso, anche se l’autenticazione può avvenire con metodi differentiL’isolamento tra utenti diversi avviene tramite isolamento tra le sessioniL’isolamemento tra servizi e applicazioni avviene con le Windows StationL’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.