Windows Sintetico

Transcript

Windows Sintetico
Windows Sintetico
http://escher07.altervista.org
1.
2.
3.
4.
5.
6.
Filesystem ........................................................................................................... 1
1.1.
Concetti base ............................................................................................. 1
1.2.
Struttura .................................................................................................... 2
1.2.1. Registro di configurazione ..................................................................... 3
1.2.2. Files SAM ............................................................................................. 4
1.2.3. Files Inf ............................................................................................... 4
1.2.4. Cartella System32 ................................................................................. 4
1.2.5. Fonts di Sistema ................................................................................... 5
1.2.6. GAC ..................................................................................................... 5
Avvio ................................................................................................................... 5
2.1.
Concetti base ............................................................................................. 5
2.2.
I Servizi ..................................................................................................... 7
Funzionalità di rete ............................................................................................... 9
Log di sistema ...................................................................................................... 9
Sicurezza in Windows ......................................................................................... 10
5.1.
Concetti base sulla sicurezza negli accessi .................................................. 10
5.2.
Autenticazione Locale e Remota................................................................. 11
5.3.
Parametrizzazione e Policy......................................................................... 13
Bibliografia e Links ............................................................................................. 13
1. Filesystem
1.1. Concetti base
Il filesystem “storico” degli ambienti Windows è il FAT, nelle sue varie versioni (12 bit, 16
bit e 32 bit) utilizzato come filesystem di sistema fino a Windows ME e a tutt’oggi
impiegato per floppy e chiavi USB.
Il file system FAT è un file system classificato tra quelli con allocazione concatenata. Una
unità FAT può essere divisa in quattro aree: Area riservata, Tabella di Allocazione dei File,
Directory radice ed Area dei File. L'area riservata parte dal settore logico zero e contiene il
boot sector con le informazioni utili per la gestione dell'unità. Ogni voce della Tabella di
Allocazione dei File (in sigla FAT, appunto), detta record, corrisponde ad un cluster
dell'area dei file. In questa tabella il valore delle voci indica se quel cluster è libero,
riservato, danneggiato o utilizzato da qualche file.
Le varie versioni della FAT differivano essenzialmente per numero di bit utilizzabili per
indicizzare i cluster e dimensione dei medesimi. Ne derivano limiti di dimensioni massime
di questo tipo:
Filesystem Cluster
FAT12
8K
FAT16
32K
Numero Cluster
212=4096
216=65536
Massima dimensione gestibile
32 MB
2048 MB
FAT32
32K
232Æ222=4194304
131072 MB = 131 GB
I principali difetti della FAT sono legati alla frammentazione e all’assenza di gestione di
ACL. Il motivo di tutto questo (ed in particolare della tendenza alla frammentazione) si
capisce con le considerazioni che seguono.
I primi sistemi Windows erano essenzialmente pensati per un contesto mono utente in cui
le modifiche riguardano tipicamente gli ultimi files salvati. Dunque salvarli in modo da
occupare spazi tutti vicini (ovvero operare in un contesto di allocazione concatenata ma
con logiche di prima allocazione simili alla contigua) portava ad uno scenario di ridotta
frammentazione quale il seguente:
Questo provoca invece elevata frammentazione quando l’accesso e le modifiche possono
riguardare tutti i file indipendentemente dal loro ordine di memorizzazione (come
normalmente avviene in un contesto multi utente) perché, non essendoci spazio vicino per
le estensioni (magari piccole) si deve andare a memorizzarle in un altro cluster, magari
significativamente lontano dal primo.
Microsoft ha partire da Windows NT e per tutti i sistemi successivi (sia in ambiente server
che desktop) ha introdotto il filesystem NTFS le cui caratteristiche migliorative principali
rispetto al precedente sono queste:
•
•
•
•
Transazionalità – La gestione è fatta in modo che se un'operazione è interrotta a
metà (ad esempio per un blackout) viene persa solo quell'operazione ma non è
compromessa l'integrità del file system.
Permessi e Controllo d'Accesso - a ciascun file o cartella è possibile assegnare dei
diritti di accesso (lettura, scrittura, modifica, cancellazione e altri).
Nomi lunghi e Unicode - i nomi dei file e delle cartelle possono essere lunghi fino a
255 caratteri e possono contenere caratteri di tutte le lingue del mondo grazie alla
codifica Unicode.
Dimensioni e Flessibilità - La dimensione dei volumi e il massimo numero di file sono
praticamente illimitati; la dimensione del volume può raggungere al massimo i 256
Terabytes (248 clusters - 1), il numero limite di file è invece di circa 4,3 miliardi (232 1). La dimensione massima di un singolo file è di 16 Terabytes, contro i 4 GigaBytes
di FAT e FAT32.
NTFS sfrutta un'indicizzazione a 64 bit, sebbene la sua implementazione sia basata
soltanto su 32 bit. La “tabella” con cui NTFS indicizza i propri contenuti si chiama Master
File Table (MFT) che è strutturata in blocchi (solitamente in record di 1KB) che contiene
gli attributi di tutti i file del volume, inclusi i metadati.
1.2. Struttura
Un filesystem Windows si presenta come un insieme di vari oggetti, raggruppati in cartelle.
Quelli comuni sono ad esempio files (di testo, binari, cifrati) e link simbolici : quelli
“speciali” sono trattati nei paragrafi che seguono.
Nel filesystem Windows ogni HD (logico, ovvero quando viene visto dal sistema a valle
dell’eventuale RAID) corrisponde ad una lettera, in genere a partire da C (A e B sono
riservati ai floppy). Per ogni HD quindi esiste di fatto un filesystem separato mentre il
registro è in ogni caso comune per tutti.
1.2.1. Registro di configurazione
Il registro è un archivio a struttura gerarchica che contiene informazioni di vario tipo, parte
in chiaro e parte criptate, organizzato per chiavi e voci. Le chiavi si sviluppano a più livelli :
il livello di base è questo:
Nome della chiave principale Descrizione
HKEY_LOCAL_MACHINE
Contiene informazioni sul sistema del computer locale, compresi i dati
relativi all'hardware e al sistema operativo quali il tipo di bus, la
memoria di sistema, i driver di periferica e i dati di controllo dell'avvio.
HKEY_CLASSES_ROOT
Contiene informazioni utilizzate dalle varie tecnologie OLE e dai dati di
associazione file-classi. Una chiave o un valore particolare è presente in
HKEY_CLASSES_ROOT se una chiave o un valore corrispondente è
presente in HKEY_LOCAL_MACHINE\SOFTWARE\Classes o
HKEY_CURRENT_USER\SOFTWARE\Classes. Se in entrambe le
posizioni è contenuta una chiave o un valore, la versione visualizzata in
HKEY_CLASSES_ROOT corrisponde alla versione in
HKEY_CURRENT_USER.
HKEY_CURRENT_USER
Contiene il profilo utente dell'utente attualmente connesso in modalità
interattiva, al contrario della modalità remota, incluse le variabili di
ambiente, le impostazioni del desktop, le connessioni di rete, le
stampanti e le preferenze del programma. Questa sottostruttura è un alias
della sottostruttura HKEY_USERS e punta a HKEY_USERS\ID di
protezione (SID) dell'utente corrente.
HKEY_USERS
Contiene le informazioni riguardanti i profili utente e il profilo
predefinito caricati correntemente, incluse le informazioni presenti anche
in HKEY_CURRENT_USER. I profili degli utenti che accedono a un
server in modalità remota non sono caricati in questa chiave del server,
ma nel Registro di sistema del computer locale.
HKEY_CURRENT_CONFIG
Contiene informazioni sul profilo hardware utilizzato dal sistema del
computer locale all'avvio. Queste informazioni vengono utilizzate per
configurare determinate impostazioni, quali i driver di periferica da
caricare e la risoluzione dello schermo da utilizzare. Questa
sottostruttura fa parte della sottostruttura HKEY_LOCAL_MACHINE e
punta a
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware
Profiles\Current
Le voci (che riguardano ad esempio caratteristiche delle periferiche, impostazioni di avvio,
dati temporanei dei programmi etc…) hanno formati “strani” quali i seguenti:
Tipo di dati
Descrizione
REG_BINARY
Dati binari non formattati. Quasi tutte le informazioni sui
componenti hardware sono memorizzate come dati binari e vengono
visualizzate nell'Editor del Registro di sistema in formato
esadecimale.
REG_DWORD
Dati rappresentati da un numero della lunghezza di 4 byte. Molti
parametri relativi a driver di periferica e servizi appartengono a
questo tipo e vengono visualizzati nell'Editor del Registro di sistema
in formato binario, esadecimale oppure decimale.
REG_EXPAND_SZ
Stringa di dati di lunghezza variabile. Questo tipo di dati include le
variabili risolte quando un programma o un servizio utilizza i dati.
REG_MULTI_SZ
Stringa multipla. A questo tipo appartengono i valori che contengono
elenchi o valori multipli in un formato leggibile. Le voci sono
separate da spazi, virgole o altri segni di punteggiatura.
REG_SZ
Stringa di testo di lunghezza fissa.
REG_FULL_RESOURCE_DESCRIPTOR Serie di matrici nidificate, create per memorizzare un elenco di
risorse per un componente hardware o un driver.
Fisicamente le chiavi del registro di configurazione sono memorizzate nei files “hives” che
si trovano in C:\Windows\System32\Config
1.2.2. Files SAM
Sono posizionati nella medesima cartella dei files hive e sono la base del sistema di
autenticazione di Windows. Sono files criptati e resi inaccessibili a chiunque dall’avvio del
sistema da un apposito servizio.
1.2.3. Files Inf
Sono dei files di testo posizionati nella cartella C:\windows\inf e servono essenzialmente
per tre scopi:
-
Identificare i driver per le periferiche
Copiare i files dal CD/Cartella sorgente al sistema
Aggiungere chiavi al registro
1.2.4. Cartella System32
E’ la cartella C:\windows\system32 e contiene la maggior parte delle DLL e degli eseguibili
del sistema. Corrisponde un po’ alla \bin dei sistemi Unix. E’ accessibile anche da remoto
utilizzando la condivisione nascosta \\server\admin$
1.2.5. Fonts di Sistema
C:\WINDOWS\Fonts
1.2.6. GAC
Ovvero Global Assembly Cache, corrispondente a C:\WINDOWS\Assembly. E’
fondamentale per il funzionamento del framework di .NET e contiene tutte le DLL che è
possibile richiamare direttamente, ovvero senza aggiungere riferimento esplicito e/o
usando nomi simbolici quali System, Networking etc….
2. Avvio
2.1. Concetti base
La sequenza di avvio di Windows “tradizionale” è basata sull’eseguibile ntldr.exe (boot
loader), sul suo file di configurazione (boot.ini) e sull’eseguibile ntdetect per il
riconoscimento delle periferiche. Schematicamente possiamo individuare i seguenti passi:
Tappa
Se tutto funziona correttamente Se si verifica un errore
1) Master Boot
Record
II Bios controlla il Master Boot
Viene visualizzato il messaggio:
Record dell'hard disk, viene lanciata "Impossibile leggere dal disco di avvio
la sequenza di avvio
selezionato"
2) Inizializzazione di II file di sistema Ntldr.exe attiva la Compare il messaggio :
NTLoader
modalità a 32 bit per la Cpu e carica "NTLDR mancante"
il file Boot.ini
3) Selezione del
Se sono installati più sistemi
Compare il messaggio:
sistema operativo operativi, l'utente seleziona
Boot.ini non valido"
Windows
4) Controllo
II file di sistema Ntdetect controlla Interruzione con comparsa
dell'hardware
tutti i componenti hardware installati di schermata blu
5) Caricamento del II kernel e gli Hardware Abstraction Interruzione con comparsa
kernel di Windows Layer (Hal) vengono caricati e
di schermata blu con dicitura "Errore
attivati
del kernel"
6) Caricamento dei I driver vengono caricati e inseriti
driver
nel Registry come "attivati"
7) Inizializzazione
del kernel
NTLoader passa il comando al
kernel di Windows
Schermata blu e compare il
messaggio: "IRQ_less_or_Equal"
II computer si blocca
al messaggio "Avvìo di Windows in
corso"
8) Avvio dei servizi II Servizio di gestione delle sessioni Il sistema si blocca e frequentemente
di Windows
(Smss.exe) avvia una nuova
vengono visualizzate schermate blu e
sessione di Windows
messaggi di errore.
9) Login dell'utente Una volta effettuato il login con
successo, vengono caricati gli
elementi del desktop
10) Fine del
Windows carica i programmi
processo di Boot
presenti nella cartella di esecuzione
automatica
Compare il messaggio:
"Nome utente o password scorretti"
Il pc si blocca, possono apparire
schermate blu
Il passo 8 è quello in cui vengono avviati i “servizi” e merita qualche nota ulteriore.
Diciamo innanzitutto che:
-
processo è un’istanza di un programma che viene eseguita sequenzialmente
ad ogni processo viene attribuito un identifier unico (PID)
un processo può dividersi in più unità idealmente elaborate in parallelo dette
threads
un processo può lanciare a sua volta altri processi, detti processi child
Un processo è in sostanza un “oggetto” caratterizzato dai seguenti elementi:
-
Un puntatore che lo rende accessibile dal SO (handler)
Immagine del codice macchina associato ad un programma
Un’area di memoria contenente il programma, i dati ed i risultati intermedi. La
memoria può essere allocata staticamente (stack) o dinamicamente (heap).
Attributi di sicurezza (utente proprietario ed operazioni concesse)
Attributi di stato
Per andare più nel concreto in una macchina windows (client) il primo processo ad essere
avviato è, come detto, “Smss” che a sua volta avvia:
-
csrss (Client/Server Runtime Server Subsystem. che questo processo gestisce la
maggior parte dei comandi grafici in Windows.)
winlogon (per intercettare la richiesta di logon interattiva)
Winlogon come vedremo meglio in seguito si impossessa della sequenza Ctrl+Alt+Del e
avvia i vari servizi , restando nel contempo in attesa di input. Quando questo input arriva
apre un desktop, ovvero una sessione della shell Explorer.exe e all’interno di questa
appariranno come processi child tutti i programmi lanciati (in esecuzione automatica o no)
dall’utente.
Il seguente albero dei processi, realizzato con l’utility PrcView mostra chiaramente quanto
descritto.
Questa sequenza è stata pesantemente riprogettata in Windows Vista dove ad esempio
compare un nuovo boot loader (Windows Boot Manager, Bootmgr.exe) che carica il boot
loader specifico di Vista (Winload.exe) solo come “uno dei possibili” boot specifici per SO
2.2. I Servizi
Come si è detto il servizio di gestione delle sessioni lancia i servizi di sistema. Sa quali
servizi lanciare perché per ognuno di essi è stata generata (dall’utente o dall’installer del
sistema operativo) una opportuna chiave, inserita nel registro di configurazione.
Questa operazione si fa con la console services.mmc oppure con l’eseguibile da riga di
comando sc.
La registrazione comporta che un certo eseguibile (es. C:\programmi\memorystatus.exe)
sia associato ad un certo nome di servizio (es. memstatus). Questo nome sarà quello
utilizzato per farlo partire. Avremo ad esempio:
sc create memstatus C:\programmi\memorystatus.exe
sc start memstatus
Particolarità dei servizi è che oltre ad essere necessariamente dei programmi non
interattivi (altrimenti non potrebbero girare sempre in background ma si bloccherebbero
per tempo indefinito aspettando degli input) e che questi girano con i diritti di account
speciali quali ad esempio:
-
SYSTEM
LOCAL SERVICE
NETWORK SERVICE
Gli viene assegnato uno di questi “utenti” (che comporta diverse politiche di sicurezza, es.
un network service può essere fatto partire da remoto) a seconda del tipo di servizio. Da
notare che i servizi si possono arrestare o far partire anche con NET STOP/START. Se si
usa SC però è possibile far girare il servizio con i diritti di un particolare utente:
Ovvero:
Sarebbe bene che i servizi non girassero come SYSTEM (che è l’impostazione predefinita
quando si è loggiati da administrator, come comunemente si fa quando si installano i
programmi) ma appunto come altri utenti eventualmente generici (come SERVIZIO DI
RETE LOCALE).
Non tutti i servizi ascoltano su una certa porta, ovvero sono destinati ad essere chiamati
da rete. Alcuni lo fanno col numero della porta che è in sostanza nel loro codice.
Esiste un file chiamato services (C:\windows\system32\driver\etc\services) che decodifica i
servizi in base al nome, ovvero associa ad un nome servizio una coppia Protocollo\Porta.
Direi che serva solo come nota statica.
Su una stessa porta possono trovarsi più servizi anche se sarebbe meglio che ad ogni
porta corrispondesse un solo servizio.
Esistono poi opportuni exe (es. svchost) che lanciati con argomenti diversi danno servizi
diversi.
3. Funzionalità di rete
Windows non nasce come sistema operativo in grado di lavorare in rete ed in un contesto
multiutente. Lo diventa da Windows NT in poi in cui le funzionalità dell’allora sistema
operativo di rete Microsoft Lan Manager vengono integrate nel prodotto.
Anche se funzionalità successive lo hanno reso capace di operare in un contesto
multiprotocollo (ed fra i vari col TCP/IP) originariamente il protocollo principe delle
comunicazioni fra host windows era il NetBios, simile all’SMB di Linux e a tutt’oggi sempre
fondamentale per le condivisioni.
I computer sono indicati con nomi netbios e le risorse sono individuate tramite named
pipes ovvero percorsi contenenti il nome dell’host desiderato più le eventuali sottocartelle,
come ad esempio \\server\condivisa.
Il Netbios (o meglio il NetBEUI, essendo a rigore NetBEUI il protocollo e NetBios la sua
API) non è un protocollo instradabile (ovvero non può attraversare i router) per cui per
poter comunicare (es. sfogliare la rete) in un contesto di più subnet è stato necessario
aggiungere:
-
un sistema di trasporto per i dati NetBios (binding NetBios/TCP)
un sistema di risoluzione dei nomi NetBios (statico lmhosts o dinamico, server
WINS)
Fra le condivisioni ruolo particolare ce l’hanno quelle amministrative e le comunicazioni
interprocesso (IPC, Inter Process Comunication) utilizzate per dare comandi – utente o di
amministrazione – su host remoti.
4. Log di sistema
Windows memorizza i log che chiama “eventi” nella cartella
C:\WINDOWS\system32\config. Sono files .evt che non sono leggibili come files di testo,
ma che devono essere aperti con il visualizzatore eventi del pannello di controllo
(eventvwr.msc /s).
L’attività di logging è definita spesso da Microsoft “auditing” ed è configurabile soprattutto
in un ambiente Active Directory. La configurazione dell’attività di logging può essere fatta
in vari modi : abbiamo comunque che le aree dove si può attivare il log sono queste:
Value
Meaning
A
Restart, Shutdown, System
B
Logons and Logoffs
C
File and Object Access
D
Use of User Rights
E
Process Tracking
F
Security Policy Management
G
User and Group Management
Z
Determines if the policy is enabled or disabled.
Dove:
-
If any of the values (A,B,C,D,E,F,G) are set to 1, success auditing is enabled on
those areas.
If any of the values (A,B,C,D,E,F,G) are set to 2, failure auditing is enabled on
those areas.
If any of the values (A,B,C,D,E,F,G) are set to 3, both success and failures are
audited on those areas.
If the value of Z is 1, the policy is enabled; if it is 0, auditing is disabled.
5. Sicurezza in Windows
5.1. Concetti base sulla sicurezza negli accessi
La sicurezza negli accessi in Windows (da NT in poi) è basata su cinque oggetti ovvero:
Oggetto
Security Identifier
(SID)
Access Control Entry
(ACE)
Access Control List
(ACL)
Security Descriptor
Access Token
Descrizione
Identificatore univoco attribuito ad ogni utente o gruppo che
viene creato.
Insieme di permessi per un SID su un oggetto.
Insieme di tutte le ACE relative allo stesso oggetto.
Insieme dei seguenti dati relativi ad un oggetto : SID del
proprietario e del suo gruppo, ACL di sistema (ereditate), ACL
aggiunte manualmente.
E’ una sorta di “carta di indentità dell’utente” che contiene
varie informazioni fra cui il SID, i SID dei gruppi a cui
appartiene, la ACL per gli oggetti che saranno creati
Quando un utente si collega il sottosistema di sicurezza crea per quell’accesso un Access
Token. Il token può essere restituito da un sistema di autenticazione locale o remoto,
attraverso due processi:
-
Winlogon
Netlogon
Winlogon.exe il processo responsabile dell'implementazione del logon locale. Non appena
avviato, WinLogon registra come propria la sequenza di tasti Ctrl-Alt-Canc (anche
chiamata Secure Attention Sequence, SAS).
Netlogon.exe è il processo che invece raccoglie le richieste di logon locale e le inoltra ad
un opportuno domain controller per la convalida dell’accesso, ovvero per la generazione
del token e la sua restituzione alla postazione che ne ha fatto richiesta.
5.2. Autenticazione Locale e Remota
L’autenticazione vera e propria avviene confrontando la coppia username:password coi i
dati contenuti nei file SAM.
L’accesso a questi file (modifica ma anche lettura o copia) è impossibile per ogni utente
che operi all’interno del sistema (anche Administrator) da un servizio di sistema LSASS
(local securety authorithy service) che si avvia all’avvio di windows e che fa parte dei
processi critici e quindi non terminabili.
Ciononostante e’ comunque possibile con vari metodi (ad esempio basati sulla lettura del
filesystem da un altro, quale ad esempio quello di una distribuzione “Live”) procurarsi una
copia dei SAM per poterli leggere.
Utilizzando un programma apposito (dato che oltretutto sono crittati) si trova che le righe
del SAM sono siffatte:
Utente = Administator:
SID = 500
Hash = AF1E236C6C6F6836436106F874D:2C5293:28C4D552D17AF99C78186AB62030A4B1
Descrizione = Account predefinito per l’amministrazione del computer/dominio
Come si vede le password memorizzate in questo file non sono in chiaro ma sono state
trattate attraverso un opportuno algoritmo di hash. Più in dettaglio possiamo dire che
l’hash memorizzato è costituito da due password trattate come se fossero indipendenti,
ovvero :
-
LMHash = Password Lan Manager (16 bit)
NTLMHash = Password NT (16 bit)
Il valore Lan Manager viene solitamente utilizzato per l'identificazione dell'utente nei
collegamenti in rete, mentre il valore locale viene usato nel logon interattivo.
Il processo con cui queste vengono ottenute, detta “p” la password inserita è questo:
p1 = UpperCase(p)
p2 = TruncOrFill(p1,14)
p3a = Left(p2,7)
p3b = Right(p2,7)
h1= DES(“KGASSC%!”, p3a)
h2= DES(“KGASSC%!”, p3b)
LMHash=Concact(h1,h2)
p1 = Unicode(p)
NTLMHash = MD4(p1)
Come si vede in entrambi i casi la cifratura è a chiave simmetrica : cambia solo l’algoritmo
(DES nel primo caso, MD4 nel secondo).
In pratica la password inserita viene prima trasformata in hash ed è questo valore che
viene confrontato con il dato presente nel SAM. Se i due sono uguali viene concesso
l’accesso e viene creato il token.
Entrambi gli algoritmi hanno la caratteristica di poter ricostruire la password in chiaro solo
per iterazioni successive : il numero di iterazioni necessario rende a tutt’oggi facilmente
“attaccabili” le password fino a 7 caratteri, proponibile l’attacco per password ad 8,
improponibile oltre.
C’è però da notare che questo vale per un attacco completamente “brute force” :
discorso diverso se si unisce l’iteratività ad uno sfruttamento più intelligente delle
debolezze del sistema, come ad esempio la possibilità di descrittare separatamente la
parte “alta” e “bassa” dell’LMHash o sfruttare le debolezze del meccanismo di
Response/Challenge.
Abbiamo detto infatti che la LMHash è la password utilizzata per l’autenticazione remota.
Questa password viene trasmessa in pacchetti SMB (Netbios) ma non viene inviata per
intero bensì “a pezzi” attraverso l’algoritmo di Response/Challenge che prevede una
sequenza di operazioni come questa:
1. Il client invia al server una richiesta di connessione;
2. Il server genera un valore random ad 8 bit (challenge) e lo invia al
client;
3. Il client, detto H l’LMHash della password inserita da tastiera:
3.1. Aggiunge ad H al 5 bit nulli;
3.2. Crea delle chiavi DES a 56 bit con i 3 “pezzi” da 7 bit ottenuti;
3.3. Codifica in DES gli 8 bit del challenge con ognuna delle chiavi
precedenti Impacchetta il tutto in 24 bit (“response”) che invia al
server;
4. Il server prende il valore cifrato della password dell’utente dal proprio
file SAM (Hs) e lo tratta come H ai passi 3.1, 3.2, 3.3 ottenendo un
valore presunto della response
5. Se response=”response presunta” l’utente è riconosciuto, se no no.
Un meccanismo di trasmissione di questo tipo obbliga chi voglia risalire alla password dai
dati catturati con uno sniffer (con cui può prelevare gli 8 bit del challenge ed i 24 della
response) ad eseguire tre decifratore DES iterative, cosa che comporta tempi abbastanza
elevati ai tempi in cui il tutto fu proposto ma assolutamente affrontabili ad oggi.
Per questo motivo Microsoft ha prima introdotto su quest’impianto NTLM+Challenge
(l’originario LM+Challenge inviava le password in chiaro!) la possibilità di creare le chiavi
DES non a 56 ma a 128 bit (NTLMv2) il che permette di ottenere un livello di sicurezza
paragonabile a quello di Kerberos.
C’è da notare che con i mezzi attuali per decrittare una password NTLMv2 di 8 caratteri
con un brute force occorrono circa 20 giorni : va notato però che per mantenere la
compatibilità coi sistemi precedenti a Windows NT SP4 è possibile per il client chiedere di
dialogare in modo NTLMv1 : in questo modo i tempi di decrittazione brute force diventano
di ore ed infatti alcuni programmi hanno la possibilità di utilizzare questo attacco basato
sull’NTLM Downgrade.
Altra possibilità di protezione è la “firma” sui pacchetti SMB.
Un prospetto riepilogativo :
Windows Windows Windows
Metodo di
autenticazione
2000
NT 4.0
95/98
Kerberos
si
no
no
NTLM v2
NTLM v1
LM
EAP
si
si
si
si
si (1)
si
si
no
si (2)
si
si
no
MS-CHAP v2
si
si
si (3)
MS-CHAP v1
si
si
si
CHAP
si
si
si
SPAP
si
si
si
PAP
si
si
si
NOTE: (1) Installando il Service Pack 4 o
superiore. (2) Installando il Directory Service
Client. (3) Installando il Dial Up Networking 1.3 o
superiore.
5.3. Parametrizzazione e Policy
Sono possibili varie parametrizzazioni interessanti, molte legate alla sicurezza fra cui avere
uno startup/shutdown logon/logoff log più dettagliato. Si possono ottenere coi seguenti
applicativi (selezionabili da Start – Esegui):
-
Criteri di sicurezza : secpol.msc /s
Criteri di gruppo : gpedit.msc
Modelli di Protezione : (Aggiungi Snap-in Security Templates)
6. Bibliografia e Links
Filesystem
http://it.wikipedia.org/wiki/NTFS
http://it.wikipedia.org/wiki/File_Allocation_Table
Registro di sistema
http://technet2.microsoft.com/windowsserver/it/library/28e3337c-70ff-41e1-86ef2581350712a91040.mspx?mfr=true
Processi e Threads
http://en.wikipedia.org/wiki/Process_(computing)
Processo di avvio
http://www.infopcfacile.it/il_processo_di_avvio_di_windows_xp-ed_il_suo_signi.html
Autenticazione
http://www.dia.unisa.it/~ads/corso-security/www/CORSO-9900/hash/mdx.htm
http://www.amagri.it/sicurezza_windows.htm
Log
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q246120
Inf files
http://www.wd-3.com/archive/InfFiles.htm