Speculation Control Powershell Module – Meltdown and Spectre

By Andrei Ungureanu - Last updated: Saturday, February 10, 2018

O metoda simpla de a detecta daca un sistem este vulnerabil la Meltdown si Spectre, este via Powershell. Exista un modul numit SpeculationControl ce poate fi gasit si pe script center si in powershell gallery.

Pentru a-l instala din Powershell Gallery folositi comanda Install-Module SpeculationControl:

image

Iar apoi Get-SpeculationControlSettings.

Dupa cum se vede si in screenshot-ul de mai sus, pentru Spectre e nevoie si de firmware update.

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

NSLOOKUP–Advanced Tips & Tricks

By Andrei Ungureanu - Last updated: Saturday, January 27, 2018

Am fost rugat de un prieten sa dezvolt subiectul din titlu, pentru ca se pare ca NSLOOKUP inca nu este atat de cunoscut pe cum credeam.

Orice sysadmin trebuie sa stie sa foloseasca NSLOOKUP si este unul din primele optiuni atunci cand investighezi o problema de DNS. Dupa cum spune si numele (Name Server LOOKUP) cu NSLOOKUP puteti adresa interogari DNS direct catre name server facand bypass la cache-ul local.

Tool-ul inca pastreaza multe ciudatenii legacy dar e foarte usor sa treci de ele. Am vazut persoane care credeau ca au o problema cand vedeau Default Server: Unknown (sau UnKnown can’t find : Non-existent domain):

image

Tool-ul are o problema cu zonele reverse. Adica in sensul ca raporteaza erori atunci cand name serverul folosit nu are o adresa de tip PTR (reverse lookup). Deci daca aveti control asupra serverului DNS folosit (corp network, etc) puteti adauga zona reverse si inregistrarile PTR necesare pentru a face lucrul cu NSLOOKUP mai fluent.

Deci “Default Server: Unknown” nu reprezinta o problema. Serverul folosit este cel implicit de pe sistemul utilizat. Cererile sunt trimise direct catre server si se face bypass la cache-ul local.

Pentru a folosi alt server se foloseste sintaxa SERVER IP ca in exemplul de mai jos:

image

Sau daca vreti sa interogati direct un ROOT server, folositi comanda ROOT:

image

Iar cu SET ALL puteti vedea setarile din sesiunea existenta si serverul root folosit:

image

Puteti schimba si serverul root folosind SET ROOT.

Dar cea mai importanta setare mi se pare cea pentru activarea modului DEBUG. Aceasta se face cu SET DEBUG, iar cu SET ALL se poate vedea daca e activata sau nu. Mai exista si SET D2 (exhaustive debug mode) insa diferentele sunt destul de mici:

image

Iar in modul debug putem vedea exact intrebarile trimise serverului de DNS precum si raspunsul:

image

In exemplul meu de mai sus am schimbat din nou cu serverul local pentru ca folosind un root server nu as fi primit un raspuns complet ci un referral (asa sunt setate serverele root, primesti doar referral-uri catre TLD-urile responsabile)

Iesirea din modul debug se face cu SET NODEBUG sau cu SET NOD2. Oricum la iesirea din tool totul revine la default.

Si nu in ultimul rand exista SET TYPE (sau SET QUERYTYPE) prin care specificati ce tip de inregistrari interogati. By default este A (se poate vedea cu SET ALL), insa puteti interoga inregistrarea de tip SOA a unui domeniu folosind SET TYPE=SOA si interogand numele domeniului:

image

La fel puteti proceda si pentru inregistrari MX, SRV etc.

NSLOOKUP nu este chiar un tool perfect insa daca stiti sa il utilizati va poate grabi investigatia si va poate scuti de o instalare de Wireshark.

Filed in Networking • Tags:

List mapped network drives from Powershell and the SMBShare module

By Andrei Ungureanu - Last updated: Sunday, December 17, 2017

Scriam recent de comenzile ce se termina cu PSDrive si aveam si un task in care trebuia sa listez maparile existente ce duc catre un share din retea.

Solutia gasita a fost cu urmatoarea comanda:

Get-PSDrive -PSProvider FileSystem | ? {$_.DisplayRoot -like ‘\\*’}

Dar am descoperit ca in modulul SMB ce il gasiti incepand cu Windows 2012 R2 si Windows 8.1 exista comanda Get-SmbMapping:

image

Si obtineti acelasi rezultat, dar intr-un mod mult mai simplu.

PS: e foarte interesant si util modulul SMBShare.

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

PSDrive cmdlets and scope

By Andrei Ungureanu - Last updated: Saturday, December 16, 2017

Ieri am scris despre network drive map via Powershell. Ce mi-a scapat si am aflat si eu dupa, e scopul comenzilor care sincer mi se pare putin ciudat.

Daca rulezi dintr-o sesiune powershell si folosesti -Persist, o sa vezi maparea in Explorer. Dar daca rulezi New-PSDrive dintr-un script, in momentul in care scriptul isi termina executia, drive-ul o sa dispara din Explorer. Asta pentru ca scopul scripului este local (el insusi).

Ca si fix trebuie sa folositi –Scope Global in comenzile cu New-PSDrive:

image

Daca citeam si documentatia inainte sigur aflam:

https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Management/New-PSDrive?view=powershell-3.0

PS: Am observat si cateva cazuri ciudate. Sunt momente cand Explorer nu isi face refresh si cateodata e nevoie sa restartezi sistemul (posibil sa mearga si doar cu un restart de proces).

Filed in Windows Client, Windows Server • Tags: ,

Creating network drive mappings with Powershell

By Andrei Ungureanu - Last updated: Friday, December 15, 2017

Pana de curand NET USE era comanda favorita pentru a crea mapari in retea. Si bineinteles variantele VBScript folosind WScript.Network ce mai apoi au fost preluate si in Powershell versiunile 1 si 2. In schimb incepand cu Powershell v3 lucrurile s-au simplicat putin.

Dar sa o luam din nou de la inceput cu variantele existente:

NET USE X: \\server\share /persistent:yes

Poate fi apelat in continuare din Powershell.

Urmatoarea varianta ar fi prin WScript.network dar via Powershell nu VBscript:

$netobj = $(New-Object -ComObject WScript.Network)

$netobj.MapNetworkDrive("X:", “\\server\share”)

Avantajul este ca se integreaza mai bine in scripturile powershell si exista un alt nivel de control. Si merge pe orice versiune de Powershell.

Dar cea mai buna varianta, in caz ca nu mai aveti sisteme sub Powershell v3 este sa folositi New-PSDrive (nu va lasati pacaliti ca exista si in v1 & 2 ca nu va functiona; lipseste parametrul –Persist):

New-PSDrive –Name “X” –PSProvider FileSystem –Root “\\server\share” –Persist

image

Cheia este parametrul –Persist, altfel maparea nu va fi vizibila in afara sesiunii Powershell.

Si bineinteles ca mai exista si variantele cu modificat chei de registri, dar sincer nu isi mai au rostul.

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

Search Active Directory user by email address

By Andrei Ungureanu - Last updated: Tuesday, December 12, 2017

Cautarea unui user in Active Directory dupa adresa de email nu ar trebui sa fie ceva foarte dificil, insa cateodata cautarile folosind Get-ADUser pot fi mai ciudate si din cauza asta m-am gandit sa public si sintaxa pentru Get-ADUser prin care se poate face asa ceva.

Iar sintaxa daca vreau sa caut dupa un singur user ar fi ceva de genul:

Get-ADUser -filter "mail -eq ‘aungureanu@source.local’"

image

Si in cazul in care avem un fisier CSV ce contine o lista cu adresele de email putem folosi acest one liner:

Import-Csv .\emails.csv |%{Get-ADUser -filter "mail -eq ‘$($_.email)’"}

image

Coloana din fisierul CSV trebuie sa se numeasca Email si atentie la modul in care s-a facut escape la $_.

Intr-un script, folosind For-Each ar fi fost mult mai simplu pentru ca nu ar fi trebuit sa lucram cu $_, dar pentru cine are nevoie de un one liner rapid asta este o varianta foarte buna.

PS: Comanda merge adaptata usor pentru a filtra si dupa alte atribute.

Filed in Active Directory, Scripting • Tags: ,

Update Powershell help files on computers without Internet connection

By Andrei Ungureanu - Last updated: Saturday, December 9, 2017

  Se mai intampla cateodata sa lucrez pe un sistem remote si sa am nevoie sa ma uit in help-ul unei comenzi din Powershell. numai ca sa aflu ca trebuie sa rulez un Update-Help pentru a downloada continutul de pe Internet.

  In afara de faptul ca dureaza, se mai intampla sa nimeresti un sistem ce nu are acces la Internet. Dar exista o varianta si una foarte simpla. Help-ul poate fi downloadat de pe un alt sistem si importat acolo unde avem nevoie.

  Comanda prin care realizam acest lucru este Save-Help:

image

  Folosind Save-Help –DestinationPath \\server\share, putem downloada “help-ul” intr-o locatie din retea accesibila si de sistemele ce nu au acces la internet. De retinut ca Save-Help nu va salva continutul aflat deja local pe sistemul de pe care rulam comanda ci va downloada continutul nou de pe internet si il va salva in locatia specificata (fara a-l instala local).

  Pe sistemele unde este necesar sa importam continutul downloadat vom rula Update-Help insa cu parametrul –SourcePath.

image

Si pentru cei ce vor sa aiba continutul updatat la zi, se pot crea scheduled taskuri care sa importe periodic continutul din share.

Filed in Scripting • Tags:

Easy way to set AD attributes from Powershell

By Andrei Ungureanu - Last updated: Saturday, November 18, 2017

Cand vine vorba de Active Directory, Powershell a inceput sa devina cea mai buna metoda de update a informatiilor. Iar comanda pentru update-ul informatiilor unui user account este Set-ADUser. Daca va uitati in help-ul comenzii o sa observati ca exista deja parametri pentru multe din atributele uzuale din AD. Dar sa zicem ca avem de modificat un atribut custom sau pur si simplu nu stim parametrul necesar, insa stim LDAP Display name-ul atributului.

Tot ce trebuie sa facem este sa folosim Set-ADUser cu parametrul –Replace:

Set-ADUser –Replace @{Description=”Domain Administrator”}

image

Imediat update-ul se va vedea imediat in directory:

image

Optiunea va suprascrie orice alta valoare existanta. Iar daca vreti sa setati mai multe atribute folositi urmatoarea sintaxa:

Set-ADUser administrator -Replace @{description="Domain Administrator"; physicalDeliveryOfficeName="Bucuresti"}

image

Pentru ajustarea atributelor, comanda mai are si parametri –Add, –Clear, Remove. Add poate fi folosit cand nu exista o valoare setata deja, altfel nu va merge pe atributele ce sunt single value. Clear va sterge informatia stocata in atributele specificate (ex: –Clear Description, Title). Si normal ca va intrebati la ce mai foloseste Remove. Nu uitati ca exista atribute multivalued iar Remove se foloseste ca sa stergi o anumita valoare stocata in acel atribut. Iata si un exemplu:

Set-ADUser administrator -Remove @{otherhomephone="222"}

image

Set-ADUser administrator -Remove @{otherhomephone="222"}

Filed in Active Directory, Scripting • Tags: ,

Using multiple filters with Get-ADComputer

By Andrei Ungureanu - Last updated: Sunday, October 15, 2017

Modul in care filtrezi informatia prin cmdleturile din modulul Active Directory nu sunt prea bine explicate in documentatie si nici nu sunt exemple clare. Exemplul meu de azi va fi pentru Get-ADComputer dar se poate folosi si cu alte comenzi.

Filtrarea informatiilor cu parametrul Filter din comanda va ajuta sa micsorati cantitatea de data culeasa de pe domain controller si va scuteste din a filtra datele in Excel.

Cel mai simplu exemplu este cel cu Get-ADComputer – Filter * ce va returna toate computer accounturile din AD.

Dar daca renuntam la *,  regula este ca filtrul trebuie sa fie continut intre acolade sau ghilimele. O sa aleg acolade pentru ca se vad mai bine in exemple.

Get-ADComputer -filter {Name -like ‘w*}

image

Exemplul asta mi-a listat obiectele ce incep cu litera W. Dar o sa vreau sa folosesc mai multe conditii asa ca o sa adaug si conditia ca obiectele sa inceapa si cu litera S.

Get-ADComputer -filter {Name -like ‘w*’ -or Name -like ‘s*’}

image

Si in continuare putem sa adaugam inca un OR sau altceva. Daca totusi vrem sa folosim conditiile existente SI o alta conditie aditionala atunci trebuie sa ne folosim de paranteze ca in urmatorul exemplu:

Get-ADComputer -filter {(Name -like ‘w*’ -or Name -like ‘s*’) -and (Enabled -eq ‘false’)}

image

Sper sa aiba sens ce am scris pana acum. O lista cu operatorii suportati gasiti in documentatie:

https://docs.microsoft.com/en-us/powershell/module/addsadministration/get-adcomputer?view=win10-ps

PS: Sunt variante si cu parametrul –LDAPFILTER, dar asta daca esti familiar cu interogarile LDAP.

Filed in Active Directory, Scripting, Windows Server • Tags:

Uninstall corrupted Windows programs

By Andrei Ungureanu - Last updated: Saturday, September 2, 2017

Tocmai ce ma rugase un prieten sa il ajut sa dezinstaleze ceva soft-uri Apple, care nu mai mergeau dezinstalate in mod traditional cu optiunea uninstall. Sa te duci de mana sa cureti prin registry, ar dura o vesnicie, asa ca am apelat la Microsoft Program Install and Uninstall Utility.

Merge pe toate versiunile de Windows de la 7 la 10.

image

image

image

Si cam atat. Doar selectezi aplicatia si ai rezolvat. In cazurile in care l-am folosit eu chiar a functionat. In felul asta am reusit sa fac reinstall la aplicatiile problematice.

Filed in Windows Client • Tags: