Verificator RDP automat pentru configurare
Având în vedere subiectul vulnerabilităților sistemului Windows, vom continua să vorbim despre atacuri care vizează rețelele corporative afectate. În mod surprinzător, tehnica Pass-the-Hash funcționează acum pentru conexiunile RDP. Adică, ne putem autentifica folosind hash-ul NTLM al utilizatorului atunci când ne conectăm prin RDP!
Pe de altă parte, am aflat recent că nu toți oamenii știu ce este PtH. Așa că vă voi spune pe scurt despre această chestiune.
Deci, să începem cu faptul că sistemul de operare Windows este un sistem multi-utilizator și, prin urmare, trebuie să stocheze parolele utilizatorului. Dar stocarea lor în text clar nu este sigură și, prin urmare, sunt stocate hashing. Hashing este o funcție unidirecțională, al cărei rezultat nu poate fi determinat din valoarea de intrare (adică nu poate fi „decriptată”). NT hash este formatul în care Windows stochează parolele. Mai mult, aș dori să subliniez că, chiar dacă este o gazdă sau un domeniu separat, formatul de stocare este același.
Al doilea punct important este suportul profund pentru Single Sign-on (autentificare automată „unică”) de către Windows pe baza autentificării NTLM. Nu transmite în text clar nici parola, nici hash-ul NT în sine. Algoritmul este următorul: mai întâi clientul trimite o cerere de conectare, apoi serverul returnează o secvență (provocare) generată aleatoriu. După aceasta, clientul ia hash-ul utilizatorului, îl conectează cu provocarea, îl hash și îl trimite la server. El, la rândul său, face la fel. Și dacă hashurile se potrivesc, atunci utilizatorul are dreptate.
Concluzia aici este că hash-ul NT este echivalentul exact al parolei utilizatorului. La urma urmei, aproape toate serviciile care există în ecosistemul Windows acceptă autentificarea NTLM. De exemplu, HTTP, SMB (prin care ne putem conecta și gestiona gazda de la distanță), SMTP, FTP, conexiuni la un server SQL și așa mai departe.
Astfel, prin piratarea unei gazde din domeniu, putem obține hash-uri ale utilizatorilor din memorie și apoi să ne mutăm prin rețea, autentificându-ne cu ele peste tot. Această tehnică se numește Pass-the-Hash. Drept urmare, protecția domeniului se pliază ca un castel de cărți.
Excepția a fost întotdeauna protocolul RDP. Anterior, te puteai conecta doar introducând o parolă. Și aceasta a fost o problemă, deoarece foarte des există segmente închise (DMZ, de exemplu) într-o rețea corporativă, unde doar accesul RDP este permis pe firewall (pentru ca administratorii să poată administra).
Deci, în Windows 8.1 și 2012 R2, în mod implicit există acum suport pentru autentificarea hash. Dar inițial Microsoft a numit această funcție Mod de administrare restricționat și, desigur, nu vorbesc despre „suport” pentru PtH.
Prin urmare, să le mulțumim cercetătorilor de la labs.portcullis.co.uk pentru că au spus întregul adevăr lumii (pentru detalii, urmăriți videoclipul de acolo). Acum, pe scurt, despre practică. Tot ce trebuie să ne conectăm este rezultatul eforturilor proiectului FreeRPD, adică un client RDP open source (inclus implicit în Kali). După publicarea studiului, au integrat suportul PtH chiar în studiu. Prin urmare, pentru a ne conecta avem nevoie de următoarea linie în consolă:
xfreerdp /d:nume_domeniu /u:Administrator /pth: 8846F7EAEE8FB117AD06BDD830B7586C/v: 192.168.0.1 |
unde după /d: este numele domeniului,
după /u: - nume de utilizator,
după /pth: -hash,
după /v: - IP-ul serverului.
La fel ca și în cazul versiunilor client anterioare ale sistemelor de operare Microsoft, utilizatorii edițiilor Pro și Enterprise ale edițiilor Windows 10 (dar nu Home) se pot conecta de la distanță la computerele lor prin Remote Desktop Services (RDP). Cu toate acestea, există o limită a numărului de sesiuni RDP simultane - doar un utilizator la distanță poate lucra la un moment dat. Când încercați să deschideți o a doua sesiune RDP, sesiunea primului utilizator este solicitată să se încheie.
În versiunea în limba engleză avertismentul este:
Un alt utilizator este conectat. Dacă continuați, acestea vor fi deconectate. Doriți să vă conectați oricum?
Faptul este că în edițiile desktop ale sistemelor de operare Microsoft există următoarele restricții principale privind utilizarea serviciului desktop la distanță:
- Suportul pentru acces RDP este disponibil numai în edițiile mai vechi de Windows (Professional și ulterioare), iar în edițiile de acasă (Home) această funcționalitate este dezactivată.
- Este posibilă o singură conexiune RDP la distanță. Când încearcă să deschidă o a doua sesiune RDP, utilizatorului i se solicită să încheie conexiunea existentă.
- În acest caz, există un utilizator care lucrează la consola computerului (local), cu o conexiune RDP la distanță, sesiunea sa va fi deconectată (blocata). Afirmația opusă este de asemenea adevărată: sesiunea RDP la distanță este încheiată forțat dacă utilizatorul se conectează la consola de sistem
De fapt, limitarea numărului de conexiuni rdp simultane nu este tehnică, ci mai degrabă una de licențiere, interzicând crearea unei stații de lucru bazate pe Terminal Server RDP pentru mai mulți utilizatori. Deși din punct de vedere tehnic, orice ediție de Windows, dacă există suficientă memorie, poate suporta munca simultană a câtorva zeci de utilizatori la distanță (în medie, 150-200 MB de memorie sunt necesare pentru o sesiune de utilizator, excluzând aplicațiile care rulează) . Acestea. Numărul maxim de sesiuni simultane este, teoretic, limitat doar de resursele computerului.
Vom analiza două moduri de a dezactiva limita numărului de conexiuni RDP simultane în Windows 10:
Important. Inițial, în prima versiune a articolului, principala opțiune de lucru pentru a elimina limita numărului de conexiuni simultane de utilizatori RDP a fost metoda de modificare și înlocuire a unui fișier termsrv.dllîn folderul %SystemRoot%\System32. Cu toate acestea, atunci când instalați o nouă versiune a Windows 10 sau unele actualizări de securitate, acest fișier este actualizat. Ca rezultat, trebuie să editați acest fișier cu un editor Hex de fiecare dată, ceea ce este destul de obositor. Prin urmare, principala modalitate de a organiza un server terminal gratuit pe client Windows 10 este să luați în considerare utilitarul Biblioteca Wrapper RDP.
Notă. Modificările sistemului descrise în acest articol vor fi probabil considerate o încălcare a Acordului de licență Windows, cu toate consecințele care decurg.
Biblioteca Wrapper RDP
O alternativă la modificarea fișierului termsrv.dll este utilizarea proiectului Biblioteca Wrapper RDP. Acest program funcționează ca un strat între managerul de control al serviciului (SCM-Service Control Manager) și serviciul terminal (Servicii terminale) și vă permite să activați nu numai suportul pentru mai multe sesiuni RDP simultane, ci și să activați suportul pentru gazdă RDP pe edițiile de acasă. din Windows 10. RDP Wrapper nu face nicio modificare fișierului termsrv.dll, pur și simplu încărcând termsrv cu parametrii modificați.
Astfel, această soluție va funcționa chiar dacă actualizați versiunea fișierului termsrv.dll, astfel încât să nu vă faceți griji cu privire la actualizările Windows.
Important. Înainte de a instala RDP Wrapper: este important să utilizați versiunea originală (nepatchată) a fișierului termsrv.dll. În caz contrar, RDP Wrapper poate să nu funcționeze stabil sau să nu pornească deloc.
Puteți descărca RDP Wrapper din depozitul GitHub: https://github.com/binarymaster/rdpwrap/releases (cea mai recentă versiune disponibilă a RDP Wrapper Library v1.6.2 a fost lansată relativ recent - 28 decembrie 2017). Judecând după informațiile de pe pagina dezvoltatorului, toate versiunile de Windows sunt acceptate. Windows 10 este acceptat până la versiunea Insider Preview 10.0.17063.1000 din 13 decembrie 2017.
Sfat. Apropo, sunt disponibile sursele RDP Wrapper Library, ceea ce vă permite să asamblați singur fișierele executabile dacă doriți.
Arhiva RDPWrap-v1.6.2.zip conține mai multe fișiere:
- RDPWinst.exe - program de instalare/eliminare pentru RDP Wrapper Library
- RDPConf.exe - Utilitar de configurare RDP Wrapper
- RDPCheck.exe - Local RDP Checker - Utilitar de verificare RDP
- install.bat, uninstall.bat, update.bat - fișiere batch pentru instalarea, dezinstalarea și actualizarea RDP Wrapper
Pentru a instala utilitarul, rulați fișierul install.bat cu drepturi de administrator.
După finalizarea instalării, rulați RDPConfig.exe. Și asigurați-vă că în secțiune Diagnosticare toate elementele sunt vopsite în verde.
Notă. În cazul meu, pentru că Nu există acces la Internet pe computer; programul nu a putut obține de la Github versiunea curentă a fișierului INI cu setări pentru versiunea mea de Windows. De aceea statutul spune . Descărcați fișierul rdpwrap.ini din resursa de dezvoltare și plasați-l în directorul de instalare. Reporniți serviciul și asigurați-vă că eticheta se schimbă în .
Printre caracteristicile interesante ale noii versiuni de RDP Wrapper:
- opțiune Ascundeutilizatoriipeconectareecran- permite.
- Când dezactivați opțiunea O singură sesiune per utilizator— vor fi permise mai multe sesiuni RDP simultane sub un singur cont (cheia de registry este setată fSingleSessionPerUser= 0 în ramura HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser).
Dacă, după actualizarea versiunii Windows, RDP Wrapper nu funcționează, verificați dacă secțiunea Diagnosticare conține inscripția.
Încercați să actualizați fișierul ini cu un script update.bat, sau manual și reinstalați serviciul
rdpwinst.exe -u
rdpwinst.exe -i
Încercăm să deschidem o a doua sesiune RDP. Totul a mers! Acum, Windows 10 permite a doi utilizatori la distanță să se conecteze simultan prin RDP.
Utilitarul ar trebui să funcționeze pe toate edițiile de Windows acceptate în prezent: Windows Vista, Windows 7, Windows 8, Windows 8.1 și Windows 10. Astfel, puteți face un server terminal din orice versiune client de Windows.
Modificarea fișierului termsrv.dll
Notă. Această metodă este aplicabilă numai la versiunea RTM a Windows 10 x64 (10240).
Puteți elimina limita numărului de conexiuni RDP modificând fișierul termsrv.dll (un fișier de bibliotecă utilizat de serviciul Remote Desktop Services). Fișierul se află în directorul C:\Windows\System32).
Înainte de a modifica fișierul termsrv.dll, este recomandabil să creați o copie de rezervă a acestuia (dacă este necesar, puteți reveni la versiunea originală a fișierului):
copiați c:\Windows\System32\termsrv.dll termsrv.dll_backup
Înainte de a edita fișierul termsrv.dll, trebuie să deveniți proprietarul acestuia și să acordați grupului de administratori drepturi depline asupra acestuia (toate operațiunile sunt efectuate în mod similar cu cele descrise în articol). Apoi opriți serviciul Desktop la distanță (TermService) din consola services.msc sau din linia de comandă:
Net stop TermService
Pentru ediția Windows 10 x64 RTM (versiunea fișierului termsrv.dll - 10.0.10240.16384): deschideți fișierul termsrv.dll folosind orice editor HEX (de exemplu, Tiny Hexer)
Găsiți linia:
39 81 3C 06 00 00 0F 84 73 42 02 00
Și înlocuiește-l cu:
B8 00 01 00 00 89 81 38 06 00 00 90
Salvați fișierul și porniți serviciul TermService.