Emulate NET VIEW behaviour from Powershell

By Andrei Ungureanu - Last updated: Tuesday, February 14, 2017 - Save & Share - Leave a Comment

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).

Posted in Scripting • Tags: , , , Top Of Page

Write a comment