
Ako svakodnevno koristite Windows i PowerShell vam zvuči poznato, ali niste sistem administrator, možda mislite da je ova konzola samo za "sistemske ljude". Ništa ne može biti dalje od istine: uz prave skripte i naredbe , te poznavanje pokretanja skripti s bilo kojeg mjesta, možete automatizirati zadatke, uštedjeti vrijeme i provjeriti sigurnost svog računara, čak i bez povišenih privilegija.
PowerShell je prvobitno dizajniran kao administratorski alat, ali se tokom godina razvio u moćno, fleksibilno i proširivo okruženje za automatizaciju sa skriptama koje se mogu ponovo koristiti . Mnoge od ovih skripti su namijenjene velikim poslovnim okruženjima, ali dobar broj njih se može koristiti kakav jeste ili prilagoditi za rad u vašoj normalnoj korisničkoj sesiji bez uticaja na bilo koje kritične sistemske komponente.
Šta je PowerShell i zašto bi vas to trebalo zanimati čak i ako niste administrator?
PowerShell je komandna linija i skriptni jezik zasnovan na .NET-u , dostupan na Windows 7 i novijim verzijama (a također i na Linuxu i macOS-u sa PowerShell Core-om). Za razliku od starog CMD-a, radi s objektima i ima stotine cmdleta (naredbi) s vrlo konzistentnom sintaksom glagola i imenice, kao što su Get-Process ili Set-Service.
Pored klasičnog interpretera, PowerShell uključuje Integrisano okruženje za skriptovanje (ISE) koje nudi editor sa isticanjem sintakse, ugrađenom pomoći i oknom za pokretanje. Sve ovo čini pisanje, testiranje i otklanjanje grešaka u skriptama mnogo lakšim, čak i za početnike.
Iako se često povezuje s naprednom administracijom, PowerShell je također vrlo koristan za korisnike koji žele automatizirati repetitivne zadatke, procese pregleda, usluge ili zapise događaja bez potrebe za navigacijom kroz menije. I, prije svega, omogućava vam povezivanje složenih radnji u lanac sa samo nekoliko linija koda.
Ključna razlika u odnosu na CMD je to što vam PowerShell omogućava kreiranje sofisticiranih skripti, korištenje vanjskih modula, pristup .NET, WMI i CIM API-jima , rad s JSON, XML i HTML, te upravljanje lokalnim ili udaljenim resursima. Zajednica je objavila hiljade skripti i modula na GitHub-u koji pokrivaju sigurnost, umrežavanje, Azure, Active Directory, automatizaciju radne površine i još mnogo toga; na primjer, učenje kako ukloniti bloatware iz Windowsa pomoću PowerShella je zadatak koji možete automatizirati pomoću javno dostupnih skripti.
PowerShell sa i bez administratorskih privilegija
U Windowsu, PowerShell možete otvoriti sa normalnim ili povišenim privilegijama. Pokretanje "kao administrator" (desni klik > Pokreni kao administrator ) vam omogućava da izvršite radnje kao što su:
- Promijenite politiku izvršavanja skripti.
- promjena sistemske datoteke i zaštićene datoteke.
- Napravite izmjene na registracija koji utiču na cijeli sistem.
Kada ga otvorite bez povećanja privilegija, ograničeni ste dozvolama vašeg računa, ali to ne znači da ne možete ništa učiniti. I dalje možete pokretati skripte koje rade na vašem profilu, dokumentima, procesima, UWP aplikacijama ili korisničkim postavkama . U korporativnim okruženjima, mnogi moduli za reviziju i sigurnost mogu se koristiti sa standardnim dozvolama, barem za zadatke pregleda.
Tipičan scenario uključuje glavnu skriptu koja se izvršava s povišenim privilegijama , a koja, iz sigurnosnih razloga, pokreće druge skripte koje se moraju izvršavati bez privilegija . Pokretanje PowerShell sesije s manje privilegija iz povišene sesije nije trivijalno, jer naredbe poput `Start-Process` ili `Invoke-Expression` imaju tendenciju nasljeđivanja sigurnosnog konteksta. Međutim, iz perspektive standardnog korisnika, ono što nas zanima je upravo suprotno: iskorištavanje svih skripti koje rade bez promjene privilegija.
Osnovne PowerShell naredbe i cmdleti koji vam olakšavaju život
Da biste maksimalno iskoristili skripte, najbolje je prvo savladati nekoliko osnovnih cmdleta - pogledajte naš kompletan vodič za osnovne naredbe - koje možete koristiti bez posebnih privilegija u svojoj korisničkoj sesiji. Oni vam omogućavaju da istražite sistem, razumijete šta je instalirano i kako se ponaša , pa čak i generirate izvještaje u HTML-u ili XML-u.
`Get-Module -All` prikazuje sve PowerShell module dostupne na vašem sistemu, uključujući i one koji se učitavaju na zahtjev. Ovo je dobar način da vidite koje alate imate na raspolaganju prije nego što počnete pisati ili pokretati skripte trećih strana.
Get -Command vam daje listu svih cmdleta, funkcija, aliasa i aplikacija koje PowerShell može pokrenuti. Možete filtrirati po imenu ili tipu da biste pronašli komandu koja vam je potrebna čak i ako se sjećate samo dijela njenog imena.
Da biste izbjegli da se izgubite u sintaksi, Get-Help je vaš najbolji prijatelj. Korišten s nazivom cmdleta, pruža detaljne informacije, parametre, primjere upotrebe iz stvarnog svijeta i napomene o radu. Ako želite biti sigurni da imate ažurnu pomoć, možete pokrenuti Update-Help (ovo obično zahtijeva povišene privilegije), a ako naiđete na bilo kakve probleme, pogledajte kako riješiti PowerShell greške.
U svakodnevnoj upotrebi, naredbe poput Get-Process , Get-Service ili Get-ComputerInfo omogućavaju vam da vidite koji su procesi i servisi aktivni ili da zatražite detaljne podatke o hardveru i operativnom sistemu bez otvaranja desetina prozora.
Postoje posebno korisni cmdleti za upravljanje datotekama iz skripti: Get-ChildItem za prikaz sadržaja mapa (uključujući atribute, veličine i datume), Copy-Item i Move-Item za kopiranje ili premještanje stavki, New-Item za kreiranje datoteka ili direktorija i Out-File za ispis rezultata drugih naredbi u tekstualnu datoteku.
Za manipulaciju podacima, Where-Object , Select-Object i ForEach-Object vam daju vrlo finu kontrolu: možete filtrirati liste, birati kolone, iterirati kroz kolekcije objekata i primjenjivati akcije element po element. Odatle možete generirati izvještaje ili ih transformirati pomoću ConvertTo-Html ili ConvertTo-Xml , što je korisno za dokumentiranje stanja vašeg računara ili mreže.
PowerShell skripte usmjerene na sigurnost i administraciju koje možete iskoristiti
Vremenom je PowerShell postao švicarski nož Windows administratora . Microsoft ga je učinio višeplatformskim i otvorenim, a GitHub je sada ispunjen repozitorijima skripti dizajniranih za jačanje sistema, praćenje aktivnosti i automatizaciju implementacije. Međutim, također je važno biti svjestan rizika skripti preuzetih s GitHub-a i kako se zaštititi prije pokretanja koda treće strane.
U nastavku donosimo pregled nekih referentnih paketa i skripti koje vrijedi znati. Iako je nekoliko njih dizajnirano za profesionalna okruženja (Azure, Active Directory, Sysmon, itd.), njihova struktura služi kao savršen primjer za pisanje vlastitih skripti za višekratnu upotrebu i sigurnih skripti , a u mnogim slučajevima možete koristiti njihove funkcije čitanja bez povišenih privilegija.
Posh-Sysmon: Napredna konfiguracija Sysmona iz PowerShella
Sysmon, iz Microsoftovog Sysinternals paketa, je alat koji izuzetno detaljno bilježi sistemske događaje : kreiranje procesa, mrežne veze, promjene memorije itd. Ključan je za otkrivanje neobičnog ponašanja na računarima izloženim internetu ili kritičnim serverima.
Posh-Sysmon skripta je zasnovana na PowerShellu 3.0 ili novijem i pojednostavljuje kreiranje i upravljanje Sysmon konfiguracijskim datotekama bez potrebe za ručnim uređivanjem XML-a. Iz konzole možete generirati pravila za evidentiranje, na primjer, pristupa LSASS procesu pomoću ProcessAccess filtera , čime se otkrivaju pokušaji ispisivanja vjerodajnica u memoriju.
Iako se instaliranje i konfigurisanje Sysmona obično vrši sa povišenim privilegijama, Posh-Sysmonov dizajn jasno pokazuje kako strukturirati modularne skripte, sa funkcijama koje uvoze, generišu i validiraju konfiguracije . A, kada se Sysmon pokrene i pokrene, možete ispitivati događaje bez administratorskih privilegija koristeći cmdlete poput Get-WinEvent , filtrirajući po Sysmon kanalu.
Skripte za pojačanje e-pošte i Office 365 pomoću PowerShella
Uobičajena tehnika napada na Microsoft 365 okruženja uključuje kompromitovanje računa i kreiranje pravila tihog prosljeđivanja u Outlooku: sve relevantne e-poruke (npr. finansijske) prosljeđuju se u napadačev poštanski sandučić, a da korisnik to ne primijeti.
PowerShell vam omogućava pregled i zaštitu ovih postavki. Pomoću cmdleta poput Set-RemoteDomain možete onemogućiti automatsko prosljeđivanje na vanjske domene, na primjer, nečim poput:
Postavi-Udaljeni-domen naziv-udaljenog-domena -Omogućeno-automatsko-prosljeđivanje $false
Ova vrsta prilagođavanja se obično vrši iz administrativnog konteksta Exchange Onlinea, ali filozofija vrijedi i za naprednog korisnika: možete koristiti skripte za reviziju pravila pristigle pošte, pregled aktivnih prosljeđivanja i otkrivanje sumnjivog ponašanja . U mnogim slučajevima, dio za reviziju se pokreće sa standardnim dozvolama za vaš vlastiti poštanski sandučić.
Lokalni administrator i upravljanje lozinkama pomoću skripti
Jedna od najvećih sigurnosnih ranjivosti u Windows mrežama je ponovna upotreba iste lokalne administratorske lozinke na više računara. To otvara vrata napadima lateralnog kretanja ako napadač dobije jednu od tih lozinki.
Skripte poput MassiveRemove-LocalAdmins skeniraju listu računara i uklanjaju određene račune iz njihovih lokalnih administratorskih grupa. U kombinaciji s alatima poput LAPS-a (Local Administrator Password Solution) , koji generira jedinstvene lozinke za svaki računar, drastično smanjuju ovaj rizik.
Za korisnika bez privilegija, ova vrsta skripte je prvenstveno referenca: pokazuje kako se povezati na daljinu, upitati lokalne grupe, uporediti liste članova i evidentirati promjene . Dio o čitanju lokalnih grupa na vlastitom računaru može se pokrenuti bez podizanja privilegija, što vam već omogućava da vidite koji računi imaju više privilegija nego što je potrebno. Osim toga, postoje vodiči za kreiranje i upravljanje korisnicima u Windowsu pomoću PowerShella koji vam mogu pomoći da bolje razumijete ove procese.
MicroBurst i druge skripte za Azure i oblak
U cloud okruženjima, PowerShell je još relevantniji. MicroBurst projekat objedinjuje PowerShell skripte za:
- Otkrijte Azure usluge i izloženi resursi.
- Revidirajte slabe ili loše dizajnirane konfiguracije.
- Obavljajte zadatke nakon eksploatacije i ispisujte podatke o akreditivima tokom testiranja penetracije.
Iako njegova puna upotreba zahtijeva dovoljne dozvole na Azure pretplatama, to je odličan primjer kako iskoristiti PowerShell module za interakciju s cloud API-jima . Mnoge funkcije nabrajanja mogu se pokrenuti s ograničenim vjerodajnicama, što je korisno čak i ako ste odgovorni samo za svoje lične resurse u Azureu.
SecurityPolicyDsc i reproducibilni sigurnosni predlošci
Modul SecurityPolicyDsc koristi konfiguraciju željenog stanja (DSC) za deklarativno definiranje lokalnih sigurnosnih politika : opcija računa, revizije, politika zaključavanja računa itd. Umjesto ručne primjene promjena, željeno stanje opisujete u konfiguracijskoj datoteci, a PowerShell obavlja implementaciju.
Za korporativna okruženja, ovo omogućava timovima da se usklade s referentnim vodičima kao što su oni Centra za internet sigurnost ili preporuke NIST-a. Korisnik bez privilegija ne može primijeniti ove politike na cijeli sistem, ali može razumjeti i pregledati konfiguracije koje se na njega primjenjuju i koristiti DSC za upravljanje testnim okruženjima na mašinama nad kojima ima punu kontrolu (na primjer, vlastiti lični računar).
Zaštita uređaja, zaštita vjerodajnica i skripte za spremnost
U Windowsu 10 i Windows Serveru, tehnologije poput Device Guarda, Credential Guarda i Exploit Guarda pomažu u izolaciji akreditivnosti i aplikacija, smanjujući površinu za napad. Microsoft nudi skriptu za spremnost ( DG_Readiness.ps1 ) koja analizira da li vaš računar može podržati ove funkcije, provjerava kompatibilnost hardvera i može ih omogućiti ili onemogućiti.
Ovaj skript se mora pokrenuti s povećanim privilegijama, ali se oslanja na logiku koju možete replicirati: provjera hardverskih mogućnosti, čitanje trenutne konfiguracije, snimanje rezultata u log datoteke i njihovo izlaganje drugim alatima . Iako ne možete aktivirati Credential Guard kao standardni korisnik, možete pregledati generirani izvještaj da vidite koliko je vaš sistem zaštićen.
NTFS sigurnost: Detaljne dozvole za datoteke i mape
Podrazumevano, PowerShell uključuje samo Get-Acl i Set-Acl za rad sa NTFS listama kontrole pristupa, a njihova direktna upotreba nije baš jednostavna za korištenje. Modul NTFSSecurity uveliko proširuje ove mogućnosti intuitivnim cmdlets-ima za:
- Lista dozvola na čitljiv način.
- Dodajte ili uklonite određene ACE-ove.
- Pogledajte koje dozvole određeni korisnik ima na resursu.
Mnoge operacije čitanja mogu se izvršiti bez povećanih dozvola, pod uslovom da imate pristup dotičnoj mapi. Ovo vam, kao korisniku, omogućava da provjeravate ko može čitati ili mijenjati vaše podatke na dijeljenim diskovima, pregledate nasljeđivanje dozvola i otkrijete previše permisivne konfiguracije; čak i učenje kako preimenovati grupu u Windowsu bez prekida pristupa može biti dio te revizije.
Posh-SecMod i drugi moduli za otkrivanje i reviziju
Paket Posh-SecMod uključuje sigurnosno orijentirane funkcije, među kojima su:
- Otkrivanje mreže i mapiranje osnovne opreme.
- Analiza rezultata iz alata kao što su Nmap ili DNSRecon.
- Pristup udaljenoj registraciji putem WMI-ja.
- Uslužni programi za reviziju i upiti u bazu podataka.
Za korisnika bez administratorskih privilegija, ključna prednost leži u činjenici da mnoge od ovih funkcija djeluju kao klijenti : čitaju informacije iz izloženih servisa, obrađuju postojeće podatke ili interpretiraju logove. Moguće je koristiti neke od njihovih mogućnosti, na primjer, da biste provjerili kako vaš računar izgleda s mreže ili interpretirali izvještaje skenera ranjivosti bez instaliranja dodatnog softvera.
Praćenje promjena u grupama i otkrivanje zloupotrebe
U Active Directoryju, tipičan napad uključuje dodavanje računa u privilegovanu grupu (kao što su Administratori domene) i njegovo neotkriveno korištenje. Skripte poput MonitorADGroupMembership prate ove grupe i šalju upozorenja, na primjer putem e-pošte, kada dođe do promjene.
Iako potpuna implementacija obično zahtijeva račune s dozvolama za čitanje Active Directoryja, logika se može prenijeti na vaš svakodnevni kontekst: možete pisati skripte koje prate promjene u lokalnim grupama, listama članova aplikacije ili čak kritičnim konfiguracijskim datotekama i prikazivati vam upozorenja bez potrebe da ih provjeravate jedno po jedno.
Zaštita radnih stanica pomoću BlackViperScripta
Web stranica Black Viper je godinama poznata po objavljivanju preporuka o Windows servisima koji se mogu onemogućiti radi poboljšanja performansi ili sigurnosti. Projekt BlackViperScript donosi ove preporuke u PowerShell, omogućavajući automatiziranu primjenu profila servisa (npr. siguran, uravnotežen, agresivan).
To je dobar primjer kako serijalizovati složene konfiguracije u skripte koje ih primjenjuju, spremaju i vraćaju. Na računaru na kojem ste administrator, možete ga koristiti direktno; u drugim slučajevima, možete proučiti njegov kod kako biste naučili kako da navedete servise, uhvatite njihovo trenutno stanje, primijenite promjene i generišete sigurnosne kopije koje kasnije možete vratiti.
25 dodatnih naredbi za korak dalje
Pored velikih modula, postoji mnogo PowerShell komandi koje su, kada se mudro koriste, vrlo praktične čak i bez povećanih privilegija:
- Get-WmiObject sa klasama kao što su Win32_ComputerSystem, Win32_BIOS o Win32_QuickFixInženjering da biste vidjeli proizvođača, BIOS ili instalirane hitne ispravke.
- Get-WmiObject Win32_NetworkAdapterConfiguration da dobije IP adrese, DHCP postavke i mrežne parametre.
- Restart-Servis y Get Service za upravljanje uslugama (u mnogim slučajevima će vam trebati povišenje privilegija za promjene, ali čitanje to ne zahtijeva).
- Invoke-Command y Enter-PSSession za pokretanje naredbi na drugim računarima kada je omogućena udaljena administracija.
- Stop-proces da biste prekinuli problematične procese po imenu ili ID-u, nešto što možete učiniti na vlastitim procesima bez da ste administrator.
Sve ovo je dopunjeno mogućnošću generiranja brzih izvještaja u HTML-u ili običnom tekstu pomoću ConvertTo-Html i Out-File . Na primjer, možete navesti procese, pretvoriti ih u HTML i otvoriti rezultat u pregledniku radi lakšeg pregleda.
Dodatne sigurnosne skripte: SAM, Net Session, Kerberos i još mnogo toga
U oblasti ofanzivne i defanzivne sigurnosti, zajednica je razvila i druge veoma zanimljive skripte, kao što su:
- Skripte za Ograničite udaljeni pristup Upravitelju sigurnosnih računa (SAM) korištenje SAMR protokola, sprječavajući bilo kojeg autentificiranog korisnika da navede korisnike i grupe.
- Alati poput Neto prekidkoji ograničavaju ko može pokrenuti NetSessionEnum i pregledati aktivne sesije na serveru.
- Moduli za analizirati događaje prijave i otkrivanje sumnjive upotrebe privilegovanih računa, uključujući povezivanje podataka sa servisima kao što je VirusTotal.
- Skripte koje ispituju Kerberos keš memorija za tikete kako bi se locirale moguće "zlatne karte" s anomalnim trajanjem.
Većina ovih resursa namijenjena je administratorima, ali razumijevanje njihovog načina rada pomaže vam da protumačite simptome mogućeg kompromitiranja u vlastitoj korisničkoj sesiji: neobične prijave, novi članovi u grupama visokog nivoa, usluge koje mijenjaju stanje bez objašnjenja itd.
PowerShell modul za servise kao što su DRDA i druga ugrađena okruženja
Neki Microsoftovi proizvodi, kao što je usluga Host Integration Server DRDA , gotovo u potpunosti otkrivaju svoju konfiguraciju putem namjenskog PowerShell modula. U ovom slučaju, modul Microsoft.HostIntegration.PowerShell pruža cmdlets za:
- Postavite SQL Server veze i parametre autentifikacije.
- Prilagodite način na koji se s njima postupa statički SQL paketi i njegovu potragu.
- Definirajte konverzije datuma i vremena, prilagođene kodne stranice i dodjele sortiranja.
- Postavite agenti za prisluškivanje tragova (tekst, konzola, ETW, dnevnik događaja).
Za korisnika bez privilegija, ove vrste modula služe više kao vodič za ono što je moguće: učenje rada s binarnim modulima, uvoz naredbi, konsultovanje njihove pomoći i provjera konfiguracija bez njihovog mijenjanja . U mnogim okruženjima, čitanje određenih parametara servisa može se obaviti bez podizanja privilegija, što vam omogućava da provjerite, na primjer, da li je aktivno evidentiranje tragova ili koja se mapiranja sortiranja koriste.
Generalno, PowerShell se etablirao kao jezik za upravljanje i zaštitu Windowsa . Čak i ako nemate uvijek administratorske privilegije, vrijedi uložiti vrijeme u savladavanje njegovih osnova i učenje najčešćih skripti i modula, jer će vam omogućiti efikasniji rad, ranije otkrivanje problema i komunikaciju istim jezikom kao i administratori kada vam je potrebna njihova pomoć.
- PowerShell Omogućava vam automatizaciju složenih zadataka u Windowsu pomoću skripti za višekratnu upotrebu, čak i bez da ste administrator.
- Ima ih mnogo moduli i skripte alati orijentisani na sigurnost, mrežu i Azure koji olakšavaju revizije i preglede.
- Mnoge komande čitanje i praćenje Rade sa standardnim dozvolama i pomažu u otkrivanju problema.
- Određeni moduli Microsoft proizvoda otkrivaju svoju konfiguraciju putem komandne komande, što pojačava centralnu ulogu PowerShella.
