Dela via


NTLM-användarautentisering

Den här artikeln innehåller information om NTLM-användarautentisering.

Ursprungligt KB-nummer: 102716

Sammanfattning

I den här artikeln beskrivs följande aspekter av NTLM-användarautentisering i Windows:

  • Lösenordslagring i kontodatabasen
  • Användarautentisering med hjälp av MSV1_0-autentiseringspaketet
  • Direktautentisering

Mer information

Lösenordslagring i kontodatabasen

Användarposter lagras i SAM-databasen (Security Accounts Manager) eller i Active Directory-databasen. Varje användarkonto är associerat med två lösenord: DET LAN Manager-kompatibla lösenordet och Windows-lösenordet. Varje lösenord krypteras och lagras i SAM-databasen eller i Active Directory-databasen.

Det LAN Manager-kompatibla lösenordet är kompatibelt med lösenordet som används av LAN Manager. Det här lösenordet baseras på oem-teckenuppsättningen (originalutrustningstillverkaren). Det här lösenordet är inte skiftlägeskänsligt och kan vara upp till 14 tecken långt. OWF-versionen av det här lösenordet kallas även LAN Manager OWF- eller ESTD-version. Det här lösenordet beräknas med hjälp av DES-kryptering för att kryptera en konstant med lösenordet för klartext. LAN Manager OWF-lösenordet är 16 byte långt. De första 7 byteen av lösenordet för klartext används för att beräkna de första 8 byteen av LAN Manager OWF-lösenordet. De andra 7 byteen av lösenordet för klartext används för att datorhantera de andra 8 bytena av LAN Manager OWF-lösenordet.

Windows-lösenordet baseras på Unicode-teckenuppsättningen. Det här lösenordet är skiftlägeskänsligt och kan vara upp till 128 tecken långt. OWF-versionen av det här lösenordet kallas även För Windows OWF-lösenord. Det här lösenordet beräknas med hjälp av hashfunktionen RSA MD4. Den här funktionen beräknar en sammandrag på 16 byte av en sträng med variabel längd med lösenordsbyte med klartext.

Ett användarkonto kanske saknar antingen LAN Manager-lösenordet eller Windows-lösenordet. Varje försök görs dock att underhålla båda versionerna av lösenordet.

Om användarkontot till exempel är portat från en LAN Manager UAS-databas med hjälp av PortUas, eller om lösenordet ändras från en LAN Manager-klient eller från en Windows for Workgroups-klient, finns endast LAN Manager-versionen av lösenordet. Om lösenordet har angetts eller ändrats på en Windows-klient och lösenordet inte har någon LAN Manager-representation finns endast Windows-versionen av lösenordet. (Lösenordet kanske inte har någon LAN Manager-representation eftersom lösenordet är längre än 14 tecken eller eftersom tecknen inte kan representeras i OEM-teckenuppsättningen.)

Användargränssnittsbegränsningar i Windows tillåter inte att Windows-lösenord överskrider 14 tecken. Konsekvenserna av den här begränsningen beskrivs senare i den här artikeln.

I Windows 2000 Service Pack 2 och senare versioner av Windows finns en inställning som gör att du kan förhindra att Windows lagrar en LAN Manager-hash för ditt lösenord. Mer information finns i följande artikelnummer för att visa artikeln i Microsoft Knowledge Base:

299656 Så här förhindrar du att Windows lagrar en LAN Manager-hash för ditt lösenord i Active Directory och lokala SAM-databaser

Kommentar

Microsoft stöder inte manuellt eller programmatiskt ändring av SAM-databasen.

Användarautentisering med hjälp av MSV1_0-autentiseringspaketet

Windows använder API:et LsaLogonUser för alla typer av användarautentiseringar. API:et LsaLogonUser autentiserar användare genom att anropa ett autentiseringspaket. Som standard anropar LsaLogonUser autentiseringspaketet MSV1_0 (MSV). Det här paketet ingår i Windows NT. MSV-autentiseringspaketet lagrar användarposter i SAM-databasen. Det här paketet stöder direktautentisering av användare i andra domäner med hjälp av Netlogon-tjänsten.

Internt är MSV-autentiseringspaketet uppdelat i två delar. Den första delen av MSV-autentiseringspaketet körs på den dator som är ansluten till. Den andra delen körs på datorn som innehåller användarkontot. När båda delarna körs på samma dator anropar den första delen av MSV-autentiseringspaketet den andra delen utan att netlogon-tjänsten ingår. Den första delen av MSV-autentiseringspaketet identifierar att direktautentisering krävs eftersom domännamnet som skickas inte är ett eget domännamn. När direktautentisering krävs skickar MSV begäran till Netlogon-tjänsten. Netlogon-tjänsten dirigerar sedan begäran till Netlogon-tjänsten på måldatorn. Netlogon-tjänsten skickar i sin tur begäran till den andra delen av MSV-autentiseringspaketet på datorn.

LsaLogonUser stöder interaktiva inloggningar, tjänstinloggningar och nätverksinloggningar. I MSV-autentiseringspaketet skickar alla former av inloggning namnet på användarkontot, namnet på domänen som innehåller användarkontot och någon funktion av användarens lösenord. De olika typerna av inloggning representerar lösenordet på olika sätt när de skickar det till LsaLogonUser.

För interaktiva inloggningar, batchinloggning och tjänstinloggning finns inloggningsklienten på den dator som kör den första delen av MSV-autentiseringspaketet. I det här fallet skickas lösenordet med klartext till LsaLogonUser och till den första delen av MSV-autentiseringspaketet. För tjänstinloggningar och batchinloggningar ger Service Control Manager och Schemaläggaren ett säkrare sätt att lagra kontots autentiseringsuppgifter.

Den första delen av MSV-autentiseringspaketet konverterar lösenordet med klartext både till ett LAN Manager OWF-lösenord och till ett Windows NT OWF-lösenord. Sedan skickar den första delen av paketet lösenordet med klartext antingen till NetLogon-tjänsten eller till den andra delen av paketet. Den andra delen frågar sedan SAM-databasen efter OWF-lösenorden och ser till att de är identiska.

För nätverksinloggningar fick klienten som ansluter till datorn tidigare en 16-bytes utmaning, eller "nonce". Om klienten är en LAN Manager-klient beräknade klienten ett 24-bytes utmaningssvar genom att kryptera 16 byte-utmaningen med 16 byte LAN Manager OWF-lösenordet. LAN Manager-klienten skickar sedan det här "LAN Manager Challenge Response" till servern. Om klienten är en Windows-klient beräknas ett "Windows NT Challenge Response" med hjälp av samma algoritm. Windows-klienten använder dock Windows OWF-data med 16 byte i stället för LAN Manager OWF-data. Windows-klienten skickar sedan både LAN Manager Challenge Response och Windows NT Challenge Response till servern. I båda fallen autentiserar servern användaren genom att skicka följande till API:et LsaLogonUser:

  • Domännamnet
  • Användarnamnet
  • Den ursprungliga utmaningen
  • Svar på LAN Manager-utmaningen
  • Det valfria Svaret på Windows NT Challenge

Den första delen av MSV-autentiseringspaketet skickar den här informationen oförändrad till den andra delen. Först frågar den andra delen OWF-lösenorden från SAM-databasen eller från Active Directory-databasen. Sedan beräknar den andra delen utmaningssvaret med hjälp av OWF-lösenordet från databasen och den utmaning som skickades in. I den andra delen jämförs sedan det beräknade utmaningssvaret med det införda utmaningssvaret.

Kommentar

Med NTLMv2 kan klienten också skicka en utmaning tillsammans med användning av sessionsnycklar som minskar risken för vanliga attacker.

Som tidigare nämnts kan antingen versionen av lösenordet saknas i SAM-databasen eller från Active Directory-databasen. Dessutom kanske någon av versionerna av lösenordet saknas i anropet till LsaLogonUser. Om både Windows-versionen av lösenordet från SAM-databasen och Windows-versionen av lösenordet från LsaLogonUser är tillgängliga används båda. Annars används LAN Manager-versionen av lösenordet för jämförelse. Den här regeln hjälper till att framtvinga skiftlägeskänslighet när nätverksinloggningar sker från Windows till Windows. Den här regeln tillåter även bakåtkompatibilitet.

Direktautentisering

NetLogon-tjänsten implementerar direktautentisering. Den utför följande funktioner:

  • Väljer den domän som autentiseringsbegäran ska skickas till.
  • Väljer servern i domänen.
  • Skickar autentiseringsbegäran till den valda servern.

Det är enkelt att välja domänen. Domännamnet skickas till LsaLogonUser. Domännamnet bearbetas på följande sätt:

  • Om domännamnet matchar namnet på SAM-databasen bearbetas autentiseringen på datorn. På en Windows-arbetsstation som är medlem i en domän anses namnet på SAM-databasen vara namnet på datorn. På en Active Directory-domänkontrollant är namnet på kontodatabasen namnet på domänen. På en dator som inte är medlem i en domän bearbetar alla inloggningar begäranden lokalt.
  • Om det angivna domännamnet är betrott av den här domänen skickas autentiseringsbegäran till den betrodda domänen. På Active Directory-domänkontrollanter är listan över betrodda domäner lätt tillgänglig. På en medlem i en Windows-domän skickas begäran alltid till arbetsstationens primära domän, så att den primära domänen kan avgöra om den angivna domänen är betrodd.
  • Om det angivna domännamnet inte är betrott av domänen bearbetas autentiseringsbegäran på den dator som är ansluten till som om det angivna domännamnet var det domännamnet. NetLogon skiljer inte mellan en obefintlig domän, en obetrodd domän och ett felaktigt skrivet domännamn.

NetLogon väljer en server i domänen genom en process som kallas identifiering. En Windows-arbetsstation identifierar namnet på en av Windows Active Directory-domänkontrollanterna i sin primära domän. En Active Directory-domänkontrollant identifierar namnet på en Active Directory-domänkontrollant i varje betrodd domän. Komponenten som gör identifieringen är dc-positioneraren som körs i Netlogon-tjänsten. Dc-positioneraren använder antingen NETBIOS- eller DNS-namnmatchning för att hitta de nödvändiga servrarna, beroende på vilken typ av domän och förtroende som har konfigurerats.