Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Logon workstations - na co to vlastně přesně je a na co to není
leden 29
Logon workstations - na co to vlastně přesně je a na co to není

Tohle jste možná už v Active Directory, ve vlastnostech nějakého účtu, viděli, ne?

Na co to je? Najdete to na záložce Account, pod čudlíkem Log on to a jmenuje se to Logon workstations (atribut userWorkstations). Pro nějaký uživatelský účet to omezí seznam počítačů, na který se dá "přihlásit". To je dost obecná hláška.

Různí pseudobezpečnostní experti to doporučují jako bezva ochranu, například pro servisní účty. Kamoš mě na to zrovna upozornil. Vůbec nechápu, proč takové články čte, když si může číst tu u mě na webu, no rozumíte tomu? :-)

Co to přesně dělá?

Ovlivňuje to jak NTLM, tak i Kerberos ověřování.

Pro Kerberos to znamená, že účet, který má tuto hodnotu nějak vyplněnou, si nemůže vydat TGT (uživatelský tiket, krbtgt) z jiného počítače, než ze seznamu počítačů vyjmenovaných. Pokud nedostanete TGT, tak nedostanete ani žádný další TGS, který byste potřebovali pro přístup do sítě na libovolné siťové služby. Jak to DCčko pozná, odkud ten TGT AS (authentication service) požadavek posíláte? Uvnitř TGT AS request paketu je polícko Addresses a uvnitř něho je napsáno jméno počítače, ze kterého se to odesílá.

Chybová hláška pro tento TGT AS request je KDC_ERR_POLICY (12). Takže tím končí sranda s Kerberosem. Alespoň na oko.

Pokud se jedná o NTLM, tak součástí NTLM Authenticate Message, tedy té zprávy, která už obsahuje NTLM response z klienta na server, je políčko WorkstationString. Tohle zase obsahuje jméno počítače, ze kterého to NTLM ověření děláte.

Chybová hlášku, kterou dostanete při takovém NTLM pokusu z nežádoucí stanice, je STATUS_INVALID_WORKSTATION (0xC0000070, The user isn't allowed to sign in to this computer, nebo přesněji The user account is restricted such that it may not be used to log on from the source workstation.). Takže tím končí sranda s NTLM. Alespoň na oko.

Obě chybové hlášky jsou vidět na DC v Security event logu:

Event ID: 4776
Event type: Audit failure
Event subcategory: Credentials validation
Message: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0, Error code: 0xC0000070, Source workstation

Což uvádí jméno zdrojového počítače. Takže v případě NTLM je to v pohodě prozkoumatelné.

Event ID: 4768
Event type: Audit failure
Event subcategory: Kerberos Authentication Service
Message: A Kerberos authentication ticket (TGT) was requested. Result code 0xC

V tomhle případě se soudruh Kerberos neobtěžuje uvádět jméno počítače, takže z události vidíte pouze zdrojovou IP adresu, což může, ale taky nemusí moc pomoci.

Nejdrsnější je, když ten login chcete použít z nepovoleného doménového počítače pro připojení na vzdálenou plochu počítače, který je povolený. To by mělo jít, ne? Pokud ten klient není v doméně, tak to jde. Ale když je v doméně, probíhá tam Kerberos před-autentizace toho RDP spojení a tím pádem to selže s podivnou hláškou:

MSTSC RDP client - Remote Desktop Connection
An authentication error has occured
The local security authority cannot be contacted
This could be due to an expired password
Please update your password if it has expired

Jak se to chová, pokud se opravdu přihlásím na povoleném počítači

Takže heslo daného účtu lze použít jen na vyjmenovaných strojích. Ale do sítě se s tím už pak dostanete kamkoliv. To byste museli omezit pomocí User rights assignment nebo nějak jinak.

Takže jde čistě jen o to, aby se to heslo nezadávalo nikde jinde, než na vyjmenovaných strojích.

Taky je dobré si uvědomit, že zadat ho můžete vždycky, akorát vám to potom dál už nepojede :-)

Alespoň na oko

Celé to je podvod. Ani políčko Adresses uvnitř TGT AS request paketu, ani ten WorkstationString uvnitř NTLM Authenticate Message není nijak ověřovaný. To tam prostě klientský počítač dobrovolně vloží podle toho, jak je nastavený.

Ani k tomu, abyste si požádali o Kerberos tikety, nebo prováděli NTLM ověřování, nemusíte mít svoji stanici v doméně. Prostě vykonstruujete ty pakety a vložíte do nich jakékoliv jméno vás napadne. Nebo si pro jednoduchost ten počítač správně pojmenujete. Dokonce to do těch paketů nemusíte vkládat vůbec (viz. Java Kerberos klient, nebo Samba přes NTLM nebo i Kerberos, pokud je tak nenastavíte).

Je to krásně vidět například na lidech, co tohle mají nastaveno na účtu, a používají Outlook Anywhere z domácího počítače. To jim potom admini musí nastavit jméno jejich domácího počítače (něco jako MaruskaDoma, nebo AntoninParby, kámošův stroj se jmenuje HPS - tedy hovno prdel sračka, to je naše značka) do toho seznamu v Active Directory, jinak se nepřipojí. Prostě jak si stroj myslí, že se jmenuje, to prostě hodí do těch paketů.

Tak zvaná bezpečnost pro servisní účty

Blbost. Jedná se o jednoduchý obstrukční mechanismus, aby přihlašovací údaje toho účtu někdo nezadával na všemožných strojích. Nelze to dokonce použít ani pro runas /netonly. Takže se to hodí jako obstrukce. Pokud ale to heslo znám a budu moc chtít, rozhodně ho použiju i jinde, jen to bude trošku větší dřina.

Vhodné použití

Dobře, servisní účty možná. Ale paráda je to pro Domain Admins a jiné dedikované serverové správce. Tyhle účty se nemají vůbec co používat jinde, než na svých serverech. Jen to trošku kazí to RDPčko.

Comments

RE: Logon workstations - na co to vlastně přesně je a na co to není

díky, dobrej tip. :)
Michal Zobec on 29.1.2014 22:44

Re: Logon workstations - na co to vlastně přesně je a na co to není

Dobrý den,
s AD zatím nemám moc zkušeností tak se zeptám. Jak uživatelovi nastavit, k jakým PC se může přihlašovat?
Karel Nový on 7.2.2014 8:22

Re: Logon workstations - na co to vlastně přesně je a na co to není

jo, to je přesně ono. pokud tam nastavíte seznam jmen počítačů, na které se uživatel může přihlásit, tak se bude moci přihlásit právě jenom na tyto počítače.
ondass on 10.2.2014 22:00

Add Comment

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Type number two as digit *


Semhle vyplňte číslici dvě. Předchozí antispemové pole nefunguje úplně dokonale, zdá se, že jsou i spamery, které pochopily, že je občas potřeba vyplnit autora :-)

Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments