Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo...

32
Il processo di Il processo di Logon e la Logon e la sicurezza per sicurezza per l’utente l’utente interattivo e per interattivo e per i servizi i servizi Marco Russo Marco Russo DevLeap DevLeap http://blogs.devleap.com/marco http://blogs.devleap.com/marco [email protected] [email protected]

Transcript of Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo...

Page 1: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 2: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

AgendaAgenda

Processo di LogonLsass

Winlogon

Sessioni, Windows Station e DesktopDifferenze e ruoli

Page 3: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

ProcessoProcessodi logondi logon

Page 4: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 5: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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)

Page 6: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 7: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 8: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 9: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 10: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 11: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

SAM ServiceSAM Service

Process ExplorerProcess Explorerhttp://www.sysinternals.com/Utilities/http://www.sysinternals.com/Utilities/

ProcessExplorer.htmlProcessExplorer.html

Page 12: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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)

Page 13: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 14: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 15: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 16: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

SAM ServiceSAM Service

Depends (Platform SDK)Depends (Platform SDK)

Page 17: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 18: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 19: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 20: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 21: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

Sessioni LogonSessioni Logon

LogonSessionsLogonSessionshttp://www.sysinternals.com/Utilities/http://www.sysinternals.com/Utilities/

LogonSessions.htmlLogonSessions.html

Page 22: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

Logon localeLogon locale

MSGINA

MSV1_0

LSASS

LPC

Winlogon

SAMSRV

Page 23: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 24: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

Sessioni, Sessioni, Windows Windows Station,Station,DestkopDestkop

Page 25: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 26: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 27: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 28: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 29: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 30: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 31: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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

Page 32: Il processo di Logon e la sicurezza per lutente interattivo e per i servizi Marco Russo DevLeapdevleap.it.

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