Il processo di Logon e
la sicurezza per
l’utente interattivo e
per i servizi
Marco Russo
DevLeap
http://blogs.devleap.com/marco
[email protected]
Agenda
Processo di Logon
Lsass
Winlogon
Sessioni, Windows Station e Desktop
Differenze e ruoli
Processo
di logon
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
Cosa succede al Boot
Avviamento Kernel
(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
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)
WinLogon
MSGINA
LSASS
Event
Logger
Active
Directory
LSA
Policy
LSA
Server
User
Mode
SAM
Server
Active
Directory
MSVC1_0.dl
Kerberos.dll
SAM
System
Threads
Kernel
Mode
System Service Dispatcher
(kernel mode callable interfaces)
Kernel
Hardware Abstraction Layer (HAL)
NtosKrnl.Exe
hardware interfaces (buses, I/O devices, interrupts,
interval timers, DMA, memory cache control, etc., etc.)
Local
Procedure
Call
Configuration Mgr
(registry)
Processes
&
Threads
Virtual
Memory
Security
Reference
Monitor
Power
Mgr.
Object
Mgr.
File
System
Cache
Device &
File Sys.
Drivers
Plug and
Play Mgr.
I/O Mgr
Windows
USER,
GDI
Graphics
Drivers
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
LSA
Policy
LSASS
NetLogon
Active
Directory
LSA
Server
SAM
Server
Event
Logger
Active
Directory
MSVC1_0.dl
Kerberos.dll
SAM
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
SAM Service
Process Explorer
http://www.sysinternals.com/Utilities/ProcessExplorer.html
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)
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
MSGINA
LSA
Policy
LSASS
NetLogon
Active
Directory
LSA
Server
SAM
Server
Event
Logger
Active
Directory
MSVC1_0.dl
Kerberos.dll
SAM
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
MSGINA
LSA
Policy
LSASS
NetLogon
Active
Directory
LSA
Server
SAM
Server
Event
Logger
Active
Directory
MSVC1_0.dl
Kerberos.dll
SAM
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
SAM Service
Depends (Platform SDK)
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
Security reference
monitor (SRM
Private comm. port
Write audit message
Delete logon session
Shared
section
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
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
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
Sessioni Logon
LogonSessions
http://www.sysinternals.com/Utilities/LogonSessions.html
Logon locale
Winlogon
MSGINA
LPC
LSASS
MSV1_0
SAMSRV
Logon remoto - Active Directory
Se il logon è per un utente di dominio, le
credenziali criptate sono inviate a LSASS sul
domain controller
Domain Controller
LSASS
Winlogon
NTDSA
MSGINA
UDP
LPC
Local Machine
LSASS
Kerberos
Active
Directory
Sessioni,
Windows Station,
Destkop
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
Process Explorer
http://www.sysinternals.com/Utilities/ProcessExplorer.html
WinObj
http://www.sysinternals.com/Utilities/WinObj.html
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.
Scarica

Il processo di Logon e la sicurezza per l`utente interattivo e per i servizi