Computerbeveiliging - Hoe je bad guys buiten de deur houdt

Forceren SMB connectie via DHCP options

10-08-2020, 14:07 door Anoniem, 6 reacties
# Scenario
ik heb een DHCP server onder mijn controle, een client vraag en krijgt een IP via mijn server.

# Vraag
kan ik de client via één van de 'DHCP options' forceren een SMB verbinding (SMB NEGOTIATE) op te laten zetten naar een server onder mijn controle?

# Achtergrond DHCP options
er zijn 200+ DHCP options die je mee kan geven. Een aantal kennen we: subnet mask, ntp server, domain name. Maar er zijn heel veel (voor mij) onbekende DHCP options. IANA heeft een opsomming in het assignment "Dynamic Host Configuration Protocol (DHCP) and Bootstrap Protocol (BOOTP) Parameters".

# Toelichting vraag
Het zou een interessante toevoeging kunnen zijn om, via DHCP options, een client te forceren om een NTLM hash te lekken naar een server die onder jou/mijn controle staat.
En ja, ik weet dat er alternatieven zijn om NTLM hashes uit te lokken maar ben hier specifiek geïnteresseerd in de (on)mogelijkheid via DHCP options. Is hier wel een research naar gedaan of zie ik iets over het hoofd en is dit gewoonweg niet nodig. En ja...ik zou ze één voor één kunnen testen, maar liever vraag ik het eerst even aan deze community.
Reacties (6)
10-08-2020, 19:28 door Anoniem
Door Anoniem: # Scenario
ik heb een DHCP server onder mijn controle, een client vraag en krijgt een IP via mijn server.

# Vraag
kan ik de client via één van de 'DHCP options' forceren een SMB verbinding (SMB NEGOTIATE) op te laten zetten naar een server onder mijn controle?

# Achtergrond DHCP options
er zijn 200+ DHCP options die je mee kan geven. Een aantal kennen we: subnet mask, ntp server, domain name. Maar er zijn heel veel (voor mij) onbekende DHCP options. IANA heeft een opsomming in het assignment "Dynamic Host Configuration Protocol (DHCP) and Bootstrap Protocol (BOOTP) Parameters".

# Toelichting vraag
Het zou een interessante toevoeging kunnen zijn om, via DHCP options, een client te forceren om een NTLM hash te lekken naar een server die onder jou/mijn controle staat.
En ja, ik weet dat er alternatieven zijn om NTLM hashes uit te lokken maar ben hier specifiek geïnteresseerd in de (on)mogelijkheid via DHCP options. Is hier wel een research naar gedaan of zie ik iets over het hoofd en is dit gewoonweg niet nodig. En ja...ik zou ze één voor één kunnen testen, maar liever vraag ik het eerst even aan deze community.

Een DHCP kan niets _forceren_ . Het is aan de client om er iets mee te doen.
Een client is ook totaal niet verplicht om alle opties - standaard of niet - te kennen of te gebruiken.

Er zijn een aantal bootstrap opties, die clients kunnen gebruiken om verder te starten - (zoals een NFS server met het root filesystem, of een iscsi-gegevens, of een TFTP server) . Dat soort opties worden eigenlijk alleen begrepen door de clients die op zo'n kaal systeem zitten.
(lees over 'PXE boot' , dan kom je daar meer over tegen).

Ik zie een paar NetBIOS over TCP dhcp-opties als ik zo kijk.
Ik heb niet het idee dat dat veel gebruikt wordt.

Active Directory client bootstrap is voor zo ver ik weet vooral DNS gebaseerd , en niet zozeer DHCP .

Overigens : als je al een DHCP server onder controle hebt op een lokaal segment, heb je meestal al heel veel mogelijkheden om "iets" met de client-verkeer te doen.

Welk scenario heb je in gedachten waarin jij de DHCP antwoorden geeft met een (ntlm) server van jou erin, waarin dat het enige/voornaamste is wat je kunt ?
Je kunt dan ook een andere gateway meegeven en kijken/MITM'en met allerlei client verkeer. Of een eigen DNS server meegeven .
11-08-2020, 08:12 door Bitje-scheef
Ik denk dat dit binnen een LAN een zeker voordelen -kan- hebben. Maar het geeft ook risico's. Ik zie hier mogelijkheden voor exploits, bv een virus/ransomeware om smb connecties te forceren (en/of te herleiden) op een ander niveau dan wat nu mogelijk is.

Natuurlijk is dit wel af te vangen en in te bouwen in nieuwe ontwerpen.

Daarnaast is het mechanisme zoals het nu bestaat, redelijk goed toepasbaar. Gaat het ook samenwerken met andere authenticatie structuren?

Verwacht geen snelle aanpassing. Voor een alfa en beta versie ben je al snel 5 jaar verder en je moet de juiste mensen meekrijgen om dit in een versie als optie definitief te krijgen.

Ik zou je aanraden om eens te experimenteren met een linux dhcp server, aangezien hier makkelijk opties aan toe te voegen zijn. Er zijn o.a. java-based en python-based dhcp servers.
11-08-2020, 09:55 door Anoniem
Door Anoniem:
Welk scenario heb je in gedachten waarin jij de DHCP antwoorden geeft met een (ntlm) server van jou erin, waarin dat het enige/voornaamste is wat je kunt ?

Bedankt voor je reactie.
Op het netwerk is één Windows client die passief is (gebruiker ingelogd maar niet actief), maar de client staat wel 'draaiend' aan. Via mijn DHCP heb ik enige invloed op de client. Passief sniffen (via default gateway) levert niets op. Ik hoop de client (via een DHCP optie) een SMB verbinding te laten opzetten naar mijn server (bijvoorbeeld via python 'Responder' tool) zodat hij zijn NTLM hash lekt en ik die (mogelijk) kan kraken.
11-08-2020, 10:34 door Anoniem
Door Bitje-scheef: Ik denk dat dit binnen een LAN een zeker voordelen -kan- hebben. Maar het geeft ook risico's.
Als ik de vraagsteller goed begrijp is hij kwaadwillend en wil hij juist gebruik maken van die risico's.
Maar wat de 1e reactie zegt klopt: er zijn heel veel opties en met de meesten wordt niks gedaan door de gemiddelde client.
Er is nog wel een soort afwijking van de standaard ontstaan in de zin dat normaal gesproken een client bij het request een
lijst meegeeft van de opties waarin hij geinteresseerd is, en de server dan alleen de values van de opties uit die lijst terug
geeft, maar die afwijking is dan dat bepaalde clients ook opties accepteren of zelfs nodig hebben waar ze niet om gevraagd
hebben. De server stuurt dus een value op zonder dat die optie opgevraagd is.
Echter dat zie je niet zo zeer in de wereld van de servers en werkstations, maar meer in de wereld van de TV Settopboxen
die op die manier van hun DHCP server bepaalde parameters doorkrijgen die ze nodig hebben om te werken.
(dit doet men bijvoorbeeld om een door de ISP geleverde settopbox alleen te laten werken icm de door die ISP geleverde
router. tot dit ontdekt en gedocumenteerd is en er aanwijzingen op internet verschijnen hoe je dit ook met andere routers
kunt laten werken)

Blijft echter het feit dat een DHCP optie geen "push" item is wat je de client door de strot kunt duwen maar puur en alleen
een vrijwillig af te handelen parameter value. Het dichtst dat je bij besturen van de client komt is de hele "network boot"
constructie (zoals PXE) maar daar moet de client dan wel om vragen, meestal met bijv F12 tijdens boot of een vaste BIOS
setting op dit gebied.
12-08-2020, 09:23 door Bitje-scheef
Door Anoniem:
Door Bitje-scheef: Ik denk dat dit binnen een LAN een zeker voordelen -kan- hebben. Maar het geeft ook risico's.
Als ik de vraagsteller goed begrijp is hij kwaadwillend en wil hij juist gebruik maken van die risico's.
Maar wat de 1e reactie zegt klopt: er zijn heel veel opties en met de meesten wordt niks gedaan door de gemiddelde client.
Er is nog wel een soort afwijking van de standaard ontstaan in de zin dat normaal gesproken een client bij het request een
lijst meegeeft van de opties waarin hij geinteresseerd is, en de server dan alleen de values van de opties uit die lijst terug
geeft, maar die afwijking is dan dat bepaalde clients ook opties accepteren of zelfs nodig hebben waar ze niet om gevraagd
hebben. De server stuurt dus een value op zonder dat die optie opgevraagd is.
Echter dat zie je niet zo zeer in de wereld van de servers en werkstations, maar meer in de wereld van de TV Settopboxen
die op die manier van hun DHCP server bepaalde parameters doorkrijgen die ze nodig hebben om te werken.
(dit doet men bijvoorbeeld om een door de ISP geleverde settopbox alleen te laten werken icm de door die ISP geleverde
router. tot dit ontdekt en gedocumenteerd is en er aanwijzingen op internet verschijnen hoe je dit ook met andere routers
kunt laten werken)

Blijft echter het feit dat een DHCP optie geen "push" item is wat je de client door de strot kunt duwen maar puur en alleen
een vrijwillig af te handelen parameter value. Het dichtst dat je bij besturen van de client komt is de hele "network boot"
constructie (zoals PXE) maar daar moet de client dan wel om vragen, meestal met bijv F12 tijdens boot of een vaste BIOS
setting op dit gebied.

Zeker je hebt helemaal gelijk. Ik had het meer gelezen alsof hij een extra feature wilde toevoegen aan het protocol.
12-08-2020, 12:12 door Anoniem
Door Anoniem:
Door Anoniem:
Welk scenario heb je in gedachten waarin jij de DHCP antwoorden geeft met een (ntlm) server van jou erin, waarin dat het enige/voornaamste is wat je kunt ?

Bedankt voor je reactie.
Op het netwerk is één Windows client die passief is (gebruiker ingelogd maar niet actief), maar de client staat wel 'draaiend' aan. Via mijn DHCP heb ik enige invloed op de client. Passief sniffen (via default gateway) levert niets op. Ik hoop de client (via een DHCP optie) een SMB verbinding te laten opzetten naar mijn server (bijvoorbeeld via python 'Responder' tool) zodat hij zijn NTLM hash lekt en ik die (mogelijk) kan kraken.

Je hebt NOG minder kans wanneer je een werkende client iets via DHCP wilt bijleren.
Heel veel opties worden alleen geevalueerd in de initiële DHCP fase (DISCOVER/OFFER) . Opties 'on the fly' toevoegen aan de regelmatige dhcp renew leidt zelden tot het oppakken ervan door het systeem.

Voor zo ver er voor jou handige boot-time parameters zijn , moet je dat systeem dus rebooten. Het leest alsof je dat niet kunt doen. [als je netwerk down brengt zal een DHCP client als het goed is weer gaan DISCOVEREN. Maar een OS zal dan misschien niks (meer) doen met dhcp opties die alleen voor boot-time relevant zijn.]
(fwiw, wat ik hiervan gezien heb was voornamelijk op Linux en afgeleiden. Ik verwacht dat het bij Windows nogal hetzelfde werkt . Maar getest heb ik dat niet)
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.