Directory Service Comparison Tool

By Andrei Ungureanu - Last updated: Saturday, May 20, 2017

Luna asta am mai scris despre AD snapshots iar acum o sa povestesc despre un tool ce poate fi folosit pentru a descoperi modificari in AD, comparand snapshot-ul cu informatia actuala din AD.

Tool-ul se numeste Directory Service Comparison Tool si il gasiti aici:

http://blog.frli.se/p/dsct.html

Dupa instalare, va trebui sa deschideti o consola MMC si sa adaugati de acolo Directory Service Comparison Tool. Va trebui sa specificati unde se va conecta consola pentru a interoga AD-ul actual si snapshotul.

image

Nota: localhost:7000 se refera la serverul de pe care rulez tool-ul, care are pornita o instanta de DSAMAIN pe portul 7000.

Mai jos sunt cateva screenshot-uri care exemplifica ce se poate face cu acest tool. Se pot vedea obiectele nou adaugate, precum si modificarile facute obiectelor existente (puteti vedea si vechile valori ale atributelor).

image

image

In imaginea de mai jos se poate vedea cum useraccount control a fost schimbat la Password Never Expire.

image

E un tool ce merita retinut. Are si functie de cautare ce foloseste un filtru LDAP, dar inca se mai pot aduce imbunatatiri.

PS: Si AD Explorer poate compara snapshoturi.

Filed in Active Directory • Tags: ,

New updates for old Win XP/2003

By Andrei Ungureanu - Last updated: Sunday, May 14, 2017

Noul val de malware de tip ransomware/worm a reusit sa faca o premiera. Si anume, ca Microsoft sa scoata update-uri pentru sisteme de operare ce nu mai sunt suportate.

https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/

Update-urile ce rezolva problema in protocolul SMB v1 au fost publicate pentru Windows XP/2003/Vista:

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4012598

PS: Inca sunt foarte multi clienti din sectorul industrial si bancar ce inca ruleaza multe sisteme critice pe XP/2003. Asta a fost unul din motivele pentru care eu cred ca au lansat aceste updateuri iesind din schema. Oricum updateurile erau pregatite pentru clientii ce platesc separat contracte de suport, dar acum incearca sa faca pe baietii buni si sa incadreze NSA-ul la categoria evil.

Filed in Security, Windows Client, Windows Server • Tags: ,

Active Directory Snapshots & DSAMAIN

By Andrei Ungureanu - Last updated: Tuesday, May 9, 2017

Dupa atatia ani de Active Directory inca mai sunt multe functionalitati de care majoritatea adminilor nici macar nu au auzit. Si sunt chestii de baza ce te pot ajuta in multe din activitatile zilnice de admin. Iar una din aceste functionalitati este aceea de AD Snapshots (a nu se confunda cu VM Snapshot).

Nu mai stiu daca am scris despre snapshoturi cu mecanismul builtin aici asa ca azi o sa reiau subiectul (acum aproape 10 ani scrisesem ceva pentru Technet). In schimb tin minte ca am scris despre AD Explorer care are o functie asemanatoare.

Functia de snapshot a aparut odata cu Windows Server 2008 si permite sa salvati un snapshot sau o imagine a AD-ului in momentul respectiv. Imagine ce mai apoi poate fi accesata folosind AD Users & Computers.

Nimeni nu vrea sa ajunga sa restaureze dintr-un backup de AD iar recent nici nu a mai fost nevoie de cand cu AD Recycle Bin. Dar sunt situatii cand obiectul nu a fost sters, ci atributele lui au fost modificate si nu prea ai vrea sa restaurezi din backup doar pentru asta. Dar daca ai sti ce se afla inainte in acele atribute, ai putea sa le repopulezi manual.

Iar aici snapshoturile te ajuta. Poti face snapshot-uri ale AD-ului inainte de anuminte modificari, iar daca ceva nu functioneaza asa cum trebuie, poti lua informatia din snapshot.

Si ca sa nu mai lungim vorba, ca sa facem un snapshot, folosim clasicul NTDSUTIL:

image

Seria de comenzi necesara este snapshot, activate instance ntds, create.

Din acest moment avem un snapshot creat si orice modificare adusa la nivelul NTDS.DIT va fi salvata in snapshot folosind copy on write.

Pentru a vedea snapshoturile existente putem folosi LIST ALL:

image

Primul snapshot este cel care ne intereseaza pe noi, al doilea reprezinta volumul pe care se afla baza de date (in functie de setup aici pot fi listate mai multe volume).

Tot ce trebuie sa facem acum, este sa montam snapshot-ul. Si facem asta cu MOUNT si ID-ul din prima linie (nu cea ce reprezinta volumul):

image

Iar acum daca folosim Windows Explorer o sa vedem ceva de genul asta:

image

image

Comanda LIST MOUNTED ne va arata tot ce am montat din NTDSUTIL:

image

Iar comanda UNMOUNT va demonta volumul respectiv.

Nota: comanda DELETE poate fi folosita pentru a sterge un snapshot si va recomand sa faceti asta atunci cand nu mai sunt necesare.

Ok, si acum ca avem un snapshot creat si montat, ce facem mai departe. Mai e nevoie de inca un pas, si anume de DSAMAIN cu parametrul /DBPATH si /LDAPPORT pentru a porni o instanta separata a bazei NTDS.DIT din snapshot.

image

In exemplul de mai sus, am pornit o noua instanta pe portul 7000 ce va rula atata timp cat DSAMAIN este pornit in acel comand prompt.

Nota: E de la sine inteles de ce nu putem folosi porturile default. Suntem pe un Domain Controller si sunt deja folosite.

Ca sa ne conectam folosim Active Directory Users and Computers si alegem optiunea Change Domain Controller:

image

image

image

Iar din acest moment avem acces la versiunea read only din snapshot.

La final trebuie doar sa inchidem consola si command promptul in care ruleaza DSAMAIN. Si daca este nevoie sa stergem snapshotul.

Mai trebuie sa mai spun ca DSAMAIN poate fi folosit pentr a instanta copii ale NTDS.DIT si din backup. Nu este nevoie neaparat de snapshot facut cu NTDSUTIL.

Si bineinteles, comenzile din NTDSUTIl se pot si automatiza, dar asta cu alta ocazie Winking smile.

Filed in Active Directory • Tags: , , ,

MEX Debugging Extension for WinDbg

By Andrei Ungureanu - Last updated: Friday, May 5, 2017

Pentru utilizatorii inraiti de WinDBG, cateva extensii sunt binevenite:

https://blogs.technet.microsoft.com/pfelatam/2016/07/19/mex-debugging-extension-for-windbg/

https://blogs.msdn.microsoft.com/luisdem/2016/07/19/mex-debugging-extension-for-windbg-2/

Nu-s asa de noi, dar la cat de des folosesc eu Windbg era si normal sa le descopar cu intarziere.

Filed in Diverse • Tags:

Performance Tuning Guidelines for Windows Server 2016

By Andrei Ungureanu - Last updated: Thursday, April 27, 2017

Si cand spuneam ca nu mai exista documentatie de calitate pe zona de Windows Server, uite ca a venit o surpriza – Performance Tuning Guidelines for Windows Server 2016:

https://blogs.technet.microsoft.com/windowsserver/2017/04/26/performance-tuning-guidelines-for-windows-server-2016/

https://docs.microsoft.com/en-us/windows-server/administration/performance-tuning/

Sunt acoperite zone precum Active Directory, Hyper-V, File & Storage, Networking, RDS/RDP, Web & Containers.

Si remarcati ca acum se foloseste termenul Guidelines, nu Best Practices Smile.

Filed in Windows Server • Tags:

Disable Windows Server Auto Lock Screen

By Andrei Ungureanu - Last updated: Wednesday, April 26, 2017

De pe la Windows Server 2012, sistemul de operare de tip server are un feature destul de incomod, mai ales pentru mediile de test. Si anume Auto Lock la ecran. Daca OS-ul nu detecteaza input de la mouse si tastatura pentru cateva minute, va bloca ecranul si va fi nevoie din nou de reintroducerea parolei.

In mod normal aceasta functionalitate este utila, atunci cand adminul uita sesiunea logata. Dar pentru cazurile cand lucram pe un laborator/mediu de test, atunci poate fi chiar enervanta.

Mai jos o sa prezint cum puteti dezactiva aceasta functionalitate, si fac asta pentru ca nu este deloc intuitiv. Pana la Windows 2012, totul era controlat prin screen saver, dar lucrurile s-au schimbat.

Deschideti Local Group Policy Editor (https://technet.microsoft.com/en-us/library/cc731745(v=ws.11).aspx):

image

Navigati in Computer Configuration\Policies\Administrative Templates\System\ Power Management\Video and Display Settings iar aici schimbati “Turn off the display (plugged in)” pe Enabled si cu valoarea 0.

image

By default setarea este pe disabled.

Dupa modificare, va fi nevoie sa rulati si un GPUPDATE /FORCE pentru o aplicare imediata.

Filed in Windows Server • Tags:

Check if a string is null or empty

By Andrei Ungureanu - Last updated: Tuesday, April 18, 2017

Cand lucrezi cu string-uri in Powershell de multe ori vrei sa verifici daca nu cumva string-ul este null sau contine spatii sau tab-uri. O varianta ar fi sa verifici dimensiunea lui sau sa iei fiecare caracter in parte si sa il compari.

Sau exista si o varianta mai simpla, folosind o metoda .Net – IsNullOrWhiteSpace. Asa ca puteti folosi aceasta metoda direct din Powershell ca in exemplul de mai jos:

 

If ([string]::IsNullOrWhiteSpace($string))

{

#do something

}

Detalii aici: https://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace(v=vs.110).aspx

Si inca o metoda asemenatoare este IsNulOrEmpty: https://msdn.microsoft.com/en-us/library/system.string.isnullorempty(v=vs.110).aspx

Filed in Scripting • Tags: , ,

Veeam Backup Free Edition & Veeam Explorer for Active Directory

By Andrei Ungureanu - Last updated: Wednesday, March 22, 2017

Veeam Backup and Replication s-a ridicat foarte mult in ultimul timp, in special pentru suportul platformelor de virtualizare si usurintei in utilizare fata de vechile produse de pe piata. Mai putin cunoscuta este versiunea free (si nu FastSCP, ci Veeam Backup and Replication, care include si suport pentru SCP si multe altele).

Eu acum o sa ma refer la un tool ce se instaleaza odata cu Veeam Backup and Replication si se numeste Veeam Explorer for Active Directory. Tool-ul va poate ajuta sa faceti recover la obiectele din AD chiar si atunci cand AD Recycle Bin nu este activat sau cand nu aveti un system state backup ci doar o copie a NTDS.DIT.

O sa incep prin a urma procesul de instalare care este banal. Cat timp nu introduci licenta, produsul functioneaza in modul free.

image

image

image

image

image

image

Odata instalat puteti porni consola principala. Nu sunt multe de vazut aici, existand destul de multe limitari in varianta free.

image

image

Link-urile catre tool-urile free le gasiti si in Program Files:

image

Si sa presupunem acum ca vrem sa restauram ceva dintr-o copie mai veche a unui NTDS.DIT. Putem folosi consola principala pentru a localiza fisierul sau direct Veeam Explorer for Microsoft Active Directory.

image

image

Dupa ce selectati Recover, o sa puteti sa faceti browse in copia AD offline, exact ca si cum ati utiliza ADUC:

image

Daca selectam optiunea advanced vom avea acces si la zonele DNS stocate in AD si la Configuration Partition. Deci vom putea restaura inclusiv inregistrari DNS.

image

image

Right click pe un obiect din lista si urmatoarele optiuni apar:

image

Compare va poate ajuta sa vedeti diferentele intre copia offline si online.

image

Din acelasi meniu se poate face si restore sau export in LDF.

PS: Acelasi procedeu se poate folosi pentru a restaura un intreg OU (mai putin optiunea compare).

Un ghid complet al versiunii free gasiti in link-ul de mai jos.

https://www.veeam.com/pdf/guide/veeam_backup_free_9_5_user_guide_en.pdf

Filed in Active Directory • Tags: , ,

Emulate NET VIEW behaviour from Powershell

By Andrei Ungureanu - Last updated: Tuesday, February 14, 2017

Am fost pus de multe ori in situatia in care am avut nevoie sa listez share-uri de pe un sistem remote folosind un script, si cu toate ca un simplu utilizator poate face asta foarte simplu din Windows Explorer, din linie de comanda sunt foarte putine optiuni.

Una dintre ele ar fi folosind NET VIEW. Cu NET VIEW poti lista foarte usor share-urile de pe o masina remote, si nici nu iti trebuie drepturi deosebite.

Problema cu NET VIEW este ca output-ul este text, intr-un format ce este greu de manipulat. Desigur ca poti face un parser peste acest output si sa scoti de acolo doar ce este necesar.

Am incercat varianta cu Powershell si ma gandeam ca ar fi destul de simplu. Dar nu este. In Powershell singurele moduri de a executa acest task sunt via WMI. Adica te conectezi la masina remote si interoghezi namespace-ul WMI. Doar ca pentru asta iti trebuie drepturi de admin pe masina remote.

O varianta gasita aici ar fi fost folosind ADSI cu providerul WinNT:

([adsi]"WinNT://$computername/LanmanServer,FileService").Children | Select-Object @(
  @{n='CurrentUserCount';e={$_.CurrentUserCount}}
  @{n='Name';            e={$_.Name.Value}}
  @{n='Server';          e={$_.HostComputer | Split-Path -Leaf}}
  @{n='Path';            e={$_.Path.Value}}
  @{n='Description';     e={$_.Description.Value}}
)

Mai multe detalii pe tema asta gasiti si in urmatoarele link-uri:

http://etutorials.org/Server+Administration/Active+directory/Part+III+Scripting+Active+Directory+with+ADSI+ADO+and+WMI/Chapter+22.+Manipulating+Persistent+and+Dynamic+Objects/22.3+Enumerating+Sessions+and+Resources/

http://etutorials.org/Server+Administration/Active+directory/Part+III+Scripting+Active+Directory+with+ADSI+ADO+and+WMI/Chapter+22.+Manipulating+Persistent+and+Dynamic+Objects/22.2+Creating+and+Manipulating+Shares+with+ADSI/

https://books.google.ro/books?id=4bFX1kwEf9cC&pg=PA250&lpg=PA250&dq=adsi+winnt+lanmanserver&source=bl&ots=pDuNJVlzhp&sig=q3ZAmhvn9jf6xsdvlmJBZgr7-Nk&hl=en&sa=X&ved=0ahUKEwi-vebPgZDSAhXGFywKHdkxDHkQ6AEIQzAG#v=onepage&q=adsi%20winnt%20lanmanserver&f=false

Dar am cautat o alta varianta, pentru ca doream sa emulez exact ceea ce face NET VIEW pentru a putea interactiona si cu sisteme non windows dar care partajeaza resurse prin CIFS.

Si am gasit pana la urma solutia intr-un proiect pe GitHub ce emuleaza comenzile NET * si foloseste API-urile WIN32 via Powershell. Proiectul foloseste destul de mult cod de pe ExploitMonday si poate parea dubios, dar este proiect ce ofera tool-uri in special pentru zona de PenTest.

https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1

Iar in acest modul powershell gasiti si functia Get-NetShare.

image

Vechiul proiect il gasiti aici:

https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerView 

Si alte cateva link-uri cu informatii ajutatoare:

http://www.exploit-monday.com/2012/05/accessing-native-windows-api-in.html

https://www.veil-framework.com/veil-powerview-usage-guide/

Nu este nevoie sa importati toate functiile de acolo. Cu putina munca, puteti gasi dependintele si pastra doar functiile de care aveti nevoie (pastrati totusi Get-DelegateType si Get-ProcAddress; sunt necesare ca sa puteti lucra cu Win32 API).

Filed in Scripting • Tags: , , ,

Optimizing Powershell functions by using a filter function

By Andrei Ungureanu - Last updated: Wednesday, February 1, 2017

Cred ca cel mai bine ar fi sa incep explicand cum preia o functie input-ul ce vine prin pipeline.

In mod normal o functie in powershell poate sa preia input din pipeline folosind variabila $Input.

image

Si daca trimitem ceva prin pipeline catre functie iata ce obtinem:

image

Pare normal, nu-i asa? Dar iata ce se intampla cu adevarat in spate. Functia noastra asteapta pana intreg continutul array-ului ce vine prin pipeline este stocat in variabila $Input si abia apoi functia isi continua executia. Daca am dori ca in codul functiei sa prelucram continutul ce vine prin pipeline, ar trebui sa folosim o structura de tip ForEach si sa trecem prin toate obiectele din variabila $Input. Ceva ca in exemplul de mai jos:

image

Nota:Bineinteles ca rezultatul va fi identic cu cel din primul exemplu pentru ca doar am enumerat obiectele.

Va intrebati de ce nu folosesc $_ ca sa acceses obiectul curent din pipeline. Pentru ca nu este definit cand folosesc acest model si am zis si mai sus in ce moment se incepe executia functiei.

Dar daca vom defini functia ca un filtru si anume asa:

image

Scapam de ForEach si putem accesa variabila $_. Si mai mult de atat, in cazul in care avem un volum mare de obiecte ce vine prin pipeline, functia le va prelua pe rand si nu va trebui sa astepte pana cand toate vor fi stocate in $input.

Si acum ca stiti la ce foloseste Filter in powershell, va doresc Happy Scripting!

 

PS: Puteti folosi si definitia Function si sa accesati $_, dar folosing blocul Process:

image

E un topic mai advanced cand vine vorba de functii, asa ca prefer sa folosesc in continuare Filter.

Filed in Scripting • Tags: , ,