NTLMv2
Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 28. toukokuuta 2018 tarkistetusta
versiosta . tarkastukset vaativat
5 muokkausta .
NTLMv2 (NTLM-versio 2) on Microsoft Windows -perheen käyttöjärjestelmiin sisäänrakennettu verkkotodennusprotokolla . Käytetään laajasti erilaisissa niihin perustuvissa palveluissa. Sen oli alun perin tarkoitus parantaa todennuksen turvallisuutta korvaamalla vanhentuneet LM ja NTLM v1. NTLMv2 otettiin käyttöön Windows NT 4.0 SP4:stä alkaen, ja sitä käyttävät Microsoft Windowsin versiot Windows 10 :een asti . Keksinnöstä lähtien NTLMv1- ja NTLMv2-protokollat ovat olleet monien hyökkäysten kohteena ja niissä on esiintynyt laaja valikoima vakavia haavoittuvuuksia.
Todennusjärjestelmä
SMB- tai SMB2- sanomilla toteutetussa todennusmallissa todennusprosessi on seuraava, riippumatta siitä, minkä tyyppistä todennusdialektia käytetään (LM, LMv2, NTLM, NTLM2, NTLMv2):
- Asiakas yrittää muodostaa yhteyden palvelimeen ja lähettää palvelimelle pyynnön, jossa kerrotaan, mitkä murteet se voi todentaa, esimerkiksi: LM, NTLM, NTLM2, NTLMv2. Siksi asiakkaan ja palvelimen välinen LMv2-todennusmurre on suljettu pois.
- Palvelin valitsee turvallisimman murteen (esimerkiksi NTLMv2) asiakkaalta saadusta murteiden luettelosta (oletusarvoisesti) ja lähettää sitten vastauksen asiakkaalle.
- Asiakas, joka on päättänyt todennusmurteen, yrittää päästä palvelimelle ja lähettää NEGOTIATE_MESSAGE -pyynnön .
- Palvelin vastaanottaa pyynnön asiakkaalta ja lähettää sille CHALLENGE_MESSAGE -vastauksen , joka sisältää 8 tavun satunnaisen sekvenssin. Sitä kutsutaan Server Challengeksi .
- Asiakas, saatuaan Server Challenge -sekvenssin palvelimelta , käyttää salasanaansa tämän sekvenssin salaamiseen ja lähettää sitten palvelimelle AUTHENTICATE_MESSAGE -vastauksen , joka sisältää 24 tavua.
- Palvelin, saatuaan vastauksen, suorittaa saman Server Challenge -sekvenssin salaustoiminnon , jonka asiakas suoritti. Vertaamalla tuloksiaan asiakkaan vastaukseen, se sallii tai estää pääsyn vastaavuuden perusteella.
LM- ja NTLM-todennusalgoritmien kehitys
LM
- Käyttäjän salasana OEM-merkkijonona muunnetaan isoiksi kirjaimille. Esimerkiksi salasana on " SecREt01", jolloin saadaan OEM-merkkijono:0x5345435245543031
- Jos salasana on alle 14 merkkiä pitkä, se täytetään nollasta 14 tavuun:0x5345435245543031000000000000
- Tuloksena oleva 14 tavun sekvenssi jaetaan kahteen 7 tavun puolikkaaseen: 0x53454352455430ja0x31000000000000
- Kutakin 7-tavuista puolikasta käytetään luomaan kaksi 8-tavuista DES-avainta: 0x52a2516b252a5161ja0x3180010101010101
- Käyttämällä DES-algoritmia ja ASCII-merkkijonoa " KGS!@#$%" sekä kahta aiemmin luotua DES-avainta lasketaan kaksi hash-arvoa, kumpikin 8 tavua: 0xff3750bcc2b22412ja0xc2265b23734e0dac
- 8 tavun hash-arvot yhdistetään 16 tavun sekvenssiksi, jolloin muodostuu LM-hash :0xff3750bcc2b22412c2265b23734e0dac
- 16 tavun LM-hash on täytetty nollasta 21 tavuun:0xff3750bcc2b22412c2265b23734e0dac0000000000
- 21 tavun sekvenssi on jaettu kolmeen 7 tavun osaan: 0xff3750bcc2b224, 0x12c2265b23734eja0x0dac0000000000
- Kutakin osaa käytetään kolmen DES-avaimen luomiseen: 0xfe9bd516cd15c849, 0x136189cbb31acd9dja0x0dd6010101010101
- DES-algoritmin ja Server Challengen sekä aiemmin muodostetun kolmen DES-avaimen avulla lasketaan kolme hash-arvoa, kukin 8 tavua pitkä . Jos esimerkiksi palvelinhaaste oli 0x0123456789abcdef, saat: 0xc337cd5cbd44fc97, 82a667af6d427c6djae67c20c2d3e77c56
- 8 tavun hash-arvot ketjutetaan 24 tavun sekvenssiin. Tämä järjestys on LM-vastaus :0xc337cd5cbd44fc9782a667af6d427c6de67c20c2d3e77c56
LMv2
- Unicode-merkkijonon muodossa olevasta käyttäjän salasanasta lasketaan MD4-algoritmia käyttäen NTLM-hash , joka koostuu 16 tavusta. Esimerkiksi salasana " SecREt01" tai Unicode-merkkijono 0x53006500630052004500740030003100MD4-algoritmia käyttävän muuntamisen jälkeen näyttää tältä:0xcd06ca7c7e10c99b1d33b7485a2ed808
- Käyttäjätunnus ja verkkotunnuksen nimi Unicode-merkkijonoina ketjutetaan ja muunnetaan isoiksi kirjaimiksi. Lisäksi tästä sekvenssistä ja aiemmin saadusta NTLM-hashista lasketaan HMAC - MD5-algoritmia käyttäen NTLMv2-hash , joka koostuu 16 tavusta. Esimerkiksi käyttäjänimi " User" ja verkkotunnuksen nimi " Domain" antavat merkkijonon " USERDOMAIN" tai Unicode-merkkijonon 0x550053004500520044004f004d00410049004e00. HMAC - MD5-algoritmin jälkeen , jossa NTLM-hash on käytetty, lasketaan NTLMv2-0x04b8e0ba74289cc540826bab1dee63ae hash :.
- Client Challenge -sekvenssi muodostetaan 8 satunnaisesti valitusta tavusta (satunnainen), esimerkiksi:0xffffff0011223344
- Server Challenge ja Client Challenge yhdistetään 16 tavun sekvenssiksi. Jos esimerkiksi Server Challenge oli 0x0123456789abcdef, niin saamme:0x0123456789abcdefffffff0011223344
- Palvelinhaasteen ja asiakashaasteen sekvenssistä ja aiemmin HMAC-MD5-algoritmia käyttäen lasketusta NTLMv2-hashista lasketaan 16 tavusta koostuva hajautusarvo:0xd6e6152ea25d03b7c6ba6629c2d6aaf0
- Hajautusarvo ketjutetaan Client Challengen kanssa 24-tavuiseksi sekvenssiksi. Tämä järjestys on LMv2-vastaus :0xd6e6152ea25d03b7c6ba6629c2d6aaf0ffffff0011223344
NTLM
- Unicode-merkkijonon muodossa olevasta käyttäjän salasanasta lasketaan MD4 - algoritmia käyttäen NTLM-hash , joka koostuu 16 tavusta. Esimerkiksi salasana " SecREt01" tai Unicode-merkkijono MD4-algoritmia0x53006500630052004500740030003100 käyttävän muuntamisen jälkeen näyttää tältä:0xcd06ca7c7e10c99b1d33b7485a2ed808
- 16 tavun NTLM-tiiviste on täytetty nollasta 21 tavuun:0xcd06ca7c7e10c99b1d33b7485a2ed8080000000000
- 21 tavun sekvenssi on jaettu kolmeen 7 tavun osaan. 0xcd06ca7c7e10c9, 0x9b1d33b7485a2eja0xd8080000000000
- Kutakin 7-tavuista osaa käytetään kolmen 8-tavun DES-avaimen luomiseen: 0xcd83b34fc7f14392, 0x9b8f4c767543685dja0xd904010101010101
- DES-algoritmin ja Server Challengen sekä aiemmin muodostetun kolmen DES-avaimen avulla lasketaan kolme hash-arvoa, kukin 8 tavua pitkä . Esimerkiksi, jos Palvelinhaaste oli 0x0123456789abcdef, niin se osoittautuu: 0x25a98c1c31e81847, 0x466b29b2df4680f3ja0x9958fb8c213a9cc6
- 8 tavun Nash-arvot ketjutetaan 24 tavun sekvenssiksi. Tämä järjestys on NTLM-vastaus :0x25a98c1c31e81847466b29b2df4680f39958fb8c213a9cc6
NTLM2
- Client Challenge -sekvenssi muodostetaan 8 satunnaisesti valitusta tavusta (satunnainen), esimerkiksi:0xffffff0011223344
- Client Challenge on täytetty nollasta 21 tavuun. Tämä järjestys on LMv2-vastaus :0xffffff001122334400000000000000000000000000000000
- Server Challenge ja Client Challenge yhdistetään 16 tavun sekvenssiksi. Esimerkiksi, jos palvelinhaaste oli 0x0123456789abcdef, niin käy ilmi:0x0123456789abcdefffffff0011223344
- Vastaanotetusta sekvenssistä lasketaan MD5 -algoritmin avulla seuraava tiivistearvo, joka koostuu 16 tavusta:0xbeac9a1bc5a9867c15192b3105d5beb1
- Ensimmäiset 8 tavua leikataan pois aiemmin vastaanotetusta hash-arvosta:0xbeac9a1bc5a9867c
- Unicode-merkkijonon muodossa olevasta käyttäjän salasanasta lasketaan MD4 - algoritmia käyttäen NTLM-hash , joka koostuu 16 tavusta. Esimerkiksi salasana " SecREt01" tai Unicode-merkkijono MD4-algoritmia0x53006500630052004500740030003100 käyttävän muuntamisen jälkeen näyttää tältä:0xcd06ca7c7e10c99b1d33b7485a2ed808
- 16 tavun NTLM-tiiviste on täytetty nollasta 21 tavuun:0xcd06ca7c7e10c99b1d33b7485a2ed8080000000000
- 21 tavun sekvenssi on jaettu kolmeen 7 tavun osaan. 0xcd06ca7c7e10c9, 0x9b1d33b7485a2eja0xd8080000000000
- Kutakin 7-tavuista osaa käytetään kolmen 8-tavun DES-avaimen luomiseen: 0xcd83b34fc7f14392, 0x9b8f4c767543685dja0xd904010101010101
- Käyttämällä DES-algoritmia ja hash-arvon leikattua osaa sekä kolmea aiemmin luotua DES-avainta lasketaan kolme hash-arvoa, kukin 8 tavua. Esimerkiksi, jos Palvelinhaaste oli 0x0123456789abcdef, niin se osoittautuu: 0x10d550832d12b2cc, 0xb79d5ad1f4eed3dfja0x82aca4c3681dd455
- 8 tavun Nash-arvot ketjutetaan 24 tavun sekvenssiksi. Tämä järjestys on NTLM2-vastaus :0x10d550832d12b2ccb79d5ad1f4eed3df82aca4c3681dd455
NTLMv2
- Unicode-merkkijonon muodossa olevasta käyttäjän salasanasta lasketaan MD4 - algoritmia käyttäen NTLM-hash , joka koostuu 16 tavusta. Esimerkiksi salasana " SecREt01" tai Unicode-merkkijono MD4-algoritmia0x53006500630052004500740030003100 käyttävän muuntamisen jälkeen näyttää tältä:0xcd06ca7c7e10c99b1d33b7485a2ed808
- Käyttäjätunnus ja verkkotunnuksen nimi Unicode-merkkijonoina ketjutetaan ja muunnetaan isoiksi kirjaimiksi. Lisäksi tästä sekvenssistä ja aiemmin saadusta NTLM-hashista lasketaan HMAC - MD5-algoritmia käyttäen NTLMv2-hash , joka koostuu 16 tavusta. Esimerkiksi käyttäjänimi " User" ja verkkotunnuksen nimi " Domain" antavat merkkijonon " USERDOMAIN" tai Unicode-merkkijonon 0x550053004500520044004f004d00410049004e00. HMAC - MD5-algoritmin jälkeen , jossa käytetään NTLM-tiivistettä , lasketaan NTLMv2-hash :0x04b8e0ba74289cc540826bab1dee63ae
- Client Challenge -sekvenssi muodostetaan 8 satunnaisesti valitusta tavusta (satunnainen), esimerkiksi:0xffffff0011223344
- Blob muodostuu esimerkiksi: 0x01010000 - blob-allekirjoitus, 0x00000000 - varattu arvo, 0x0090d336b734c301 - aikaleima, 0xffffff0011223344 - satunnainen asiakashaaste, 0x00000000 - tuntematon, 0x02000c0044004f004d00410049004e0001000c005300450052005600450052000400140064006f006d00610069006e002e0063006f006d00030022007300650072007600650072002e0064006f006d00610069006e002e0063006f006d0000000000 - kohdetietolohko, 0x00000000 - tuntematon
- Palvelinhaaste ja blob yhdistetään sekvenssiksi, josta HMAC - MD5-algoritmin ja aiemmin lasketun NTLMv2-hash-hajautusarvon avulla lasketaan 16 tavusta koostuva hash-arvo. Jos esimerkiksi palvelinhaaste oli 0x0123456789abcdef, saadaan seuraava järjestys: 0x0123456789abcdef01010000000000000090d336b734c301ffffff00112233440000000002000c0044004f004d00410049004e0001000c005300450052005600450052000400140064006f006d00610069006e002e0063006f006d00030022007300650072007600650072002e0064006f006d00610069006e002e0063006f006d000000000000000000. HMAC - MD5-algoritmin käytön jälkeen saadaan seuraava hash-arvo:0xcbabbca713eb795d04c97abc01ee4983
- 16 tavun Nash-arvot ketjutetaan blobin kanssa sekvenssiksi. Tämä järjestys on NTLMv2-vastaus :0xcbabbca713eb795d04c97abc01ee498301010000000000000090d336b734c301ffffff00112233440000000002000c0044004f004d00410049004e0001000c005300450052005600450052000400140064006f006d00610069006e002e0063006f006d00030022007300650072007600650072002e0064006f006d00610069006e002e0063006f006d000000000000000000
Haavoittuvuudet
Verkkoliikenteen kuunteleminen
Kuuntelemalla verkkoliikennettä voit siepata SMB - todennuspaketit ja ottaa siten haltuunsa palvelinhaasteen ja vastauksen asiakkaalta. Näillä kahdella parametrilla on todennusmenetelmästä huolimatta (jopa NTLMv2:lla) mahdollista nykyaikaisten ohjelmistojen avulla (olettaen yksinkertaisen salasanan, vaikkapa "12345") arvata asiakkaan salasana muutamassa tunnissa. Mutta jos todennusmenetelmä on NTLMv2 ja asiakkaan salasana sisältää isoja, isoja, pieniä kirjaimia, numeroita ja erikoismerkkejä, tällaisen salasanan murtaminen voi kestää useita vuosia.
Palvelimen huijaus
- Tuo palvelin, jota asiakas haluaa käyttää. Voit tehdä tämän käyttämällä primitiivisintä DDoS - hyökkäystä.
- Määritä tietokoneelle, josta hyökkäys tehdään, kaikki palvelinparametrit eli palvelimen nimi, palvelimen IP-osoite ja palvelimen MAC-osoite. Tämä on tarpeen, jotta palvelimelle osoitettu asiakas yrittää muodostaa yhteyden tietokoneeseen, josta hyökkäys suoritetaan.
- Kun asiakas pyytää valitsemaan todennusmurteen, tietokoneen, josta hyökkäys tehdään, on valittava turvallisin murre, nimittäin LM (tai turvallisempi NTLM). Tämän seurauksena tietokone, josta hyökkäys suoritettiin, saa LM-vastauksen (vastauksen). Hyökkääjä, jolla on sarja Server Challenge ja LM Response , salasanan murtamiseen raa'alla voimalla ( Bruteforce -hyökkäys) menee vain muutama tunti.
Todennuspaketin huijaus
Tämä menetelmä ei juurikaan eroa palvelimen vaihtamisesta. Palvelin valitsee erikoisohjelmiston avulla tai paikallisen suojauskäytännön asetuksia muuttaen turvallisimman todennusmurteen tyypin.
Onnistuneiden hyökkäysten estäminen
Salasanat
Salasanaa valitessaan asiakkaan tulee noudattaa seuraavia sääntöjä:
- Salasanan tulee sisältää mahdollisimman monta merkkiä;
- Salasanan tulee sisältää kirjaimia, numeroita ja muita symboleja;
- Kaikkien tärkeiden tilien salasanojen on oltava yksilöllisiä.
Windowsin suojauskäytännön määrittäminen
Käynnistä "Ohjauspaneeli" ja avaa osio "Hallintatyökalut → Paikallinen suojauskäytäntö → Paikalliset käytännöt → Suojausasetukset". Etsi tästä osiosta "Verkon suojaus: LAN Managerin todennustaso" -käytäntö. Valitse avattavasta luettelosta vaihtoehto "Lähetä vain NTLMv2-vastaus. Estä LM ja NTLM"
Esimerkkejä
Katso myös
Linkit