
Ако използвате Windows ежедневно и PowerShell ви звучи познато, но не сте системен администратор, може би си мислите, че тази конзола е само за „системни хора“. Нищо не може да бъде по-далеч от истината: с... подходящи скриптове и команди и знаейки изпълнявайте скриптове от всяко място Можете да автоматизирате задачи, да спестите време и да проверите сигурността на вашия компютър, дори без повишени привилегии.
PowerShell е създаден като инструмент за администратори, но през годините се е превърнал в много мощна, гъвкава и разширяема среда за автоматизация с многократно използваеми скриптовеМного от тези скриптове са предназначени за големи корпоративни среди, но голяма част могат да се използват такива, каквито са, или да се адаптират за работа в нормалната потребителска сесия, без да се докосва нищо критично в системата.
Какво е PowerShell и защо трябва да ви е грижа, дори ако не сте администратор?
PowerShell е команден ред и скриптов език, базиран на .NETПредлага се в Windows 7 и по-нови версии (както и в Linux и macOS с PowerShell Core). За разлика от старата CMD, тя работи с обекти и има стотици командлети (cmdlets) с много последователен синтаксис: глагол-съществително, като например Get-Process o Set-Service.
В допълнение към класическия интерпретатор, PowerShell включва и ISE (Интегрирана среда за скриптове) Той предлага редактор с подсветка на синтаксиса, вградена помощ и панел за изпълнение. Всичко това прави писането, тестването и отстраняването на грешки в скриптовете много по-лесно, дори ако тепърва започвате.
Въпреки че е свързан с разширена администрация, PowerShell е много полезен и за Потребители, които искат да автоматизират повтарящи се задачи, процеси на преглед, услуги или регистрационни файлове за събития без да е необходимо да навигирате през менютата. И най-вече, позволява ви да свързвате сложни действия само с няколко реда код.
Една важна разлика в сравнение с CMD е, че PowerShell позволява Създавайте сложни скриптове, използвайте външни модули и достъпвайте .NET, WMI и CIM API.работа с JSON, XML, HTML и управление на локални или отдалечени ресурси. Общността е публикувала хиляди скриптове и модули в GitHub, обхващащи сигурност, мрежи, Azure, Active Directory, автоматизация на работния плот и много други; например, обучение за Премахване на bloatware от Windows с помощта на PowerShell Това е задача, която можете да автоматизирате с публични скриптове.
PowerShell със и без администраторски права
В Windows можете да отворите PowerShell с нормални или повишени права. Когато го стартирате „като администратор“ (щракване с десния бутон > Изпълнете като администратор), ще можете да извършвате действия като:
- Промяна на политиката за изпълнение на скриптове.
- Промяна системни файлове и защитени файлове.
- Направете промени в регистрация които влияят на цялата система.
Когато го отворите без повишение на права, сте ограничени от разрешенията на вашия акаунт, но това не означава, че не можете да правите нищо. Все още можете да го стартирате. скриптове, които работят с вашия профил, вашите документи, вашите процеси, вашите UWP приложения или потребителски настройкиИ в корпоративни среди много модули за одит и сигурност могат да се използват със стандартни разрешения, поне за задачи за преглед.
Типичен сценарий е да имате основен скрипт, който се изпълнява с повишени права и че от съображения за сигурност стартира други скриптове, които трябва да бъдат изпълнени никакви привилегииСтартирането на PowerShell сесия с по-малко привилегии от повишен акаунт не е тривиално, тъй като команди като Старт-процес o Извикване-израз Те са склонни да наследяват контекста на сигурността. От гледна точка на стандартен потребител обаче, това, което ни интересува, е точно обратното: Възползвайте се от всички скриптове, които работят, без да докосвате привилегии.
Основни PowerShell команди и cmdlets, които улесняват живота ви
За да извлечете максимума от скриптовете, най-добре е първо да усвоите няколко основни командлета – вижте нашите Пълно ръководство за основните команди— които можете да използвате без специални права във вашата потребителска сесия. Те ви позволяват Разгледайте системата, разберете какво е инсталирано и как се държии дори генериране на отчети в HTML или XML.
Get-Module -All Той показва всички PowerShell модули, налични на вашата система, включително тези, които се зареждат при поискване. Това е добър начин да разберете какъв „инструментариум“ имате под ръка, преди да започнете да пишете или изпълнявате скриптове на трети страни.
Con get-команда Получавате списък с всички командлети, функции, псевдоними и приложения, които PowerShell може да изпълнява. Можете да филтрирате по име или тип, за да намерите командата, от която се нуждаете, дори ако си спомняте само част от името ѝ.
За да не се объркате със синтаксиса, Извикай помощ Това е вашият най-добър съюзник. Използван заедно с име на командлет, той ви предлага Подробна информация, параметри, примери за употреба в реалния свят и бележки за работа. Ако искате да сте сигурни, че имате актуална помощ, можете да изпълните Помощ за актуализиране (това обикновено изисква повдигане) и ако възникнат някакви проблеми, консултирайте се как Отстраняване на грешки в PowerShell.
В ежедневието команди като Get-Process, Вземете услуга o GetComputerInfo Те ви позволяват да видите кои процеси и услуги са активни или да се консултирате подробна информация за хардуера и операционната система без да отваря десетки прозорци.
Има някои особено полезни командлети за управление на файлове от скриптове: Get-ChildItem за да се изброи съдържанието на папките (включително атрибути, размери и дати), Копиране на артикул y Преместване на елемент за копиране или преместване на елементи, Нов продукт да създавате файлове или директории и Out-Файлов за да изведете изхода на други команди в текстов файл.
За да манипулира данни, Къде-Object, Изберете Object- y За всеки обект Те ви дават много фин контрол: филтрирате списъци, избирате колони, обхождате колекции от обекти и прилагате действия елемент по елемент. Оттам можете да генерирате отчети или да ги трансформирате с ConvertTo-HTML o ConvertTo-Xmlкоето е полезно за документиране на състоянието на вашата машина или мрежа.
PowerShell скриптове, фокусирани върху сигурността и администрирането, от които можете да се възползвате
С течение на времето PowerShell се превърна в швейцарското ножче на Windows администраторитеMicrosoft го направи междуплатформен и с отворен код, а GitHub вече е пълен с хранилища със скриптове, предназначени за защита на системите, наблюдение на активността или автоматизиране на внедряванията; струва си обаче да се знае и... Рискове от скриптове, изтеглени от GitHub и как да се предпазите, преди да изпълните чужд код.
По-долу ще разгледаме някои от референтните пакети и скриптове, които си струва да знаете. Въпреки че няколко са предназначени за професионални среди (Azure, Active Directory, Sysmon и др.), тяхната структура служи като ръководство. Перфектен пример за писане на ваши собствени скриптове за многократна употреба и сигурни възможности за писанеИ в много случаи можете да използвате функциите му за четене, без да повишавате разрешенията.
Posh-Sysmon: Разширена конфигурация на Sysmon от PowerShell
Sysmon, от пакета Sysinternals на Microsoft, е инструмент, който Той записва системните събития с изключително подробности.: създаване на процеси, мрежови връзки, промени в паметта и др. Това е ключово за откриване на странно поведение в компютри, изложени на интернет или критични сървъри.
Скриптът Пош-Сисмон Базиран е на PowerShell 3.0 или по-нова версия и улеснява създаване и управление на конфигурационни файлове на Sysmon без да е необходимо ръчно редактиране на XML. От конзолата можете да генерирате правила за регистриране, например, на достъп до процеса LSASS чрез филтъра. ProcessAccess и по този начин да се открият опити за записване на идентификационни данни в паметта.
Въпреки че инсталирането и конфигурирането на Sysmon обикновено се извършва с повишени привилегии, дизайнът на Posh-Sysmon показва много добре как... структуриране на модулни скриптове с функции, които импортират, генерират и валидират конфигурацииИ след като Sysmon е стартиран и работи, можете да заявявате събития, без да сте администратор, използвайки командлети като Get-WinEventфилтриране през канала Sysmon.
Скриптове за подсилване на имейли и Office 365 с PowerShell
Често срещана техника при атаки срещу среди на Microsoft 365 включва компрометиране на акаунт и създаване на правила за тихо пренасочване В Outlook: всички съответни имейли (напр. финансови) се препращат към пощенската кутия на нападателя, без потребителят да забележи.
PowerShell ви позволява да преглеждате и защитавате тези конфигурации. С командлети като Set-RemoteDomain Възможно е да се деактивира автоматичното пренасочване към външни домейни, например с нещо подобно:
Set-RemoteDomain име на отдалечен домейн -AutoForwardEnabled $false
Този тип корекция обикновено се извършва от административен контекст на Exchange Online, но философията е валидна и за напреднал потребител: можете Използвайте скриптове, за да одитирате правилата за входящата си поща, да преглеждате активните препращания и да откривате подозрително поведениеВ много случаи частта за одит се изпълнява със стандартни разрешения за вашата собствена пощенска кутия.
Локален администратор и управление на пароли със скриптове
Една от най-големите дупки в сигурността в мрежите на Windows е повторното използване на същата локална администраторска парола в много системи. Това отваря вратата за атаки с латерално движение, ако нападателят получи едно от тези идентификационни данни.
Има скриптове като MassiveRemove-LocalAdmins които преглеждат списък с компютри и премахват конкретни акаунти от техните локални администраторски групи. В комбинация с инструменти като LAPS (Решение за локална администраторска парола), който генерира уникални пароли за всяка машина, драстично намалява този риск.
За потребител без привилегии, този тип скрипт служи предимно като справочник: той показва как Свържете се дистанционно, преглеждайте локални групи, сравнявайте списъци с членове и регистрирайте променитеЧастта за четене на локални групи на вашата машина може да се изпълнява без повишаване на правата, което вече ви позволява да видите кои акаунти имат повече привилегии от необходимото; има и ръководства за Създаване и управление на потребители в Windows с PowerShell които ви помагат да разберете по-добре тези процеси.
MicroBurst и други скриптове за Azure и облака
В облачни среди PowerShell е още по-актуален. Проектът МикроБърст Той обединява PowerShell скриптове за:
- Открийте услугите на Azure и открити ресурси.
- Одитирайте слаби или лошо проектирани конфигурации.
- Изпълнявайте задачи след експлоатация и генерирайте данни за идентификационни данни по време на тестове за проникване.
Въпреки че пълното му използване изисква достатъчно разрешения в абонаментите на Azure, то е отличен пример за Как да използвате PowerShell модули за взаимодействие с облачни APIМного функции за изброяване могат да се изпълняват с ограничени идентификационни данни, което е полезно, дори ако сте отговорни само за личните си ресурси в Azure.
SecurityPolicyDsc и възпроизводими шаблони за сигурност
Модулът Политика за сигурностDsc Разчита на желаната конфигурация на състоянието (DSC), за да дефинира декларативно местни политики за сигурностОпции за акаунти, одит, политики за блокиране на акаунти и др. Вместо да прилагате промените ръчно, вие описвате желаното състояние в конфигурационен файл и PowerShell се грижи за прилагането му.
За корпоративни среди това позволява екипите да бъдат съгласувани със справочници, като например тези на Център за интернет сигурност или препоръки на NIST. Непривилегирован потребител не може да прилага тези правила в цялата система, но може разберете и прегледайте настройките, които се отнасят за него и използвайте DSC за управление на тестови среди на машини, върху които имате пълен контрол (например, вашият собствен персонален компютър).
Device Guard, Credential Guard и скриптове за готовност
В Windows 10 и Windows Server, технологии като Защита на устройството, защита от идентификационни данни и защита от експлойти Те помагат за изолиране на идентификационните данни и приложенията, намалявайки повърхността за атака. Microsoft предлага скрипт за подготовка (DG_Readiness.ps1), който анализира дали вашата машина може да поддържа тези функции, проверява съвместимостта на хардуера и може да ги активира или деактивира.
Този скрипт трябва да се изпълнява с повишени привилегии, но разчита на логика, която можете да репликирате: проверете хардуерните възможности, прочетете текущата конфигурация, запишете резултатите в лог файлове и ги изложете на други инструментиДори и да не можете да активирате Credential Guard като стандартен потребител, можете да прегледате генерирания отчет, за да видите колко защитен е вашият компютър.
NTFS сигурност: Подробни разрешения за файлове и папки
По подразбиране PowerShell включва само Get-Acl y Set-Acl за работа със списъци за контрол на достъпа NTFS, а директното му използване не е особено удобно за потребителя. Модулът NTFS сигурност Той значително разширява тези възможности с интуитивни командлети за:
- Списък с разрешения по четлив начин.
- Добавяне или премахване на конкретни ACE.
- Вижте какви разрешения има даден потребител за даден ресурс.
Много операции за четене могат да се използват без повишени права, стига да имате достъп до въпросната папка. Това ви позволява, като потребител, одит кой може да чете или променя вашите данни на споделени дискове, да преглеждате наследяването на разрешения и да откривате прекалено отворени конфигурации; дори да се научите да Как да промените името на група в Windows без да се нарушава достъпът, това може да бъде част от този одит.
Posh-SecMod и други модули за откриване и одит
пакет Posh-SecMod Включва функции, ориентирани към сигурността, сред които:
- Откриване на мрежа и картографиране на основно оборудване.
- Анализ на резултатите от инструменти като Nmap или DNSRecon.
- Достъп до отдалечена регистрация чрез WMI.
- Помощни програми за одит и заявки към база данни.
За потребител без администраторски права интересът се състои във факта, че много от тези функции работят като клиентиТе четат информация от открити услуги, обработват съществуващи данни или интерпретират лог файлове. Възможно е да се използват някои от техните възможности, например, за да проверете как изглежда вашето оборудване от мрежата или да интерпретирате отчетите на скенера за уязвимости, без да е необходимо да инсталирате допълнителен софтуер.
Мониторинг на промените в групите и откриване на злоупотреби
В Active Directory типичната атака се състои от добавяне на акаунт към привилегирована група (като администратори на домейн) и да го използват, докато остават незабелязани. Скриптове като Членство в MonitorADGroup Те са посветени на наблюдението на тези групи и изпращането на известия, например по имейл, когато настъпи промяна.
Въпреки че пълното внедряване обикновено изисква акаунти с разрешения за четене на Active Directory, логиката е приложима към ежедневния ви контекст: можете да пишете скриптове, които Следете промените в локални групи, списъци с членове на приложения или дори критични конфигурационни файловеи да ви показваме известия, без да се налага да ги проверявате едно по едно.
Защита на работните станции с BlackViperScript
Уебсайтът „Черната пепелянка“ е известен от години с публикуването си Препоръки за услуги на Windows, които могат да бъдат деактивирани за повишаване на производителността или подобряване на сигурността. Проектът BlackVipperScript Той предоставя тези препоръки на PowerShell, което ви позволява автоматично да прилагате профили на услуги (напр. защитени, балансирани, агресивни).
Това е добър пример за това как сериализиране на сложни конфигурации в скриптове които ги прилагат, запазват и възстановяват. На компютър, на който сте администратор, можете да го използвате директно; в други случаи можете да изучите кода му, за да научите как. Избройте услугите, запишете текущото им състояние, приложете промени и генерирайте резервни копия че след това можете да обърнете.
25 допълнителни команди, за да отидете още една стъпка напред
Освен големите модули, има много PowerShell команди, които, когато се използват разумно, са много практични дори без повишени привилегии:
- Get-WmiObject с класове като Win32_ComputerSystem, Win32_BIOS o Win32_QuickFixИнженеринг за да видите производителя, BIOS или инсталираните актуални корекции.
- Get-WmiObject Win32_NetworkAdapterConfiguration за получаване на IP адреси, DHCP настройки и мрежови параметри.
- Рестартиране-услуга y Вземете услуга за управление на услуги (в много случаи ще ви е необходимо повишаване на правата за промени, но четенето не го изисква).
- Invoke-Command y Въведете-PSSession да изпълнява команди на други компютри, когато е активирано отдалечено администриране.
- Стоп-процес да прекратявате проблемни процеси по име или ID, нещо, което можете да правите със собствените си процеси, без да сте администратор.
Всичко това се допълва от възможността за генериране на бързи отчети в HTML или обикновен текст, използвайки ConvertTo-HTML y Out-Файлов. Например можете Избройте процесите, конвертирайте ги в HTML и отворете резултата в браузъра. за да ги прегледате по-лесно.
Допълнителни скриптове за сигурност: SAM, Net Session, Kerberos и други
В областта на офанзивната и отбранителната сигурност, общността е разработила и други много интересни скриптове, като например:
- Скриптове за Ограничете отдалечения достъп до диспечера на акаунти за сигурност (SAM) използвайки протокола SAMR, предотвратявайки показването на потребители и групи от всеки удостоверен потребител.
- Инструменти като Нетно прекратяванекоито ограничават кой може да изпълнява NetSessionEnum и да преглежда активни сесии на сървър.
- Модули за анализиране на събития за влизане и откриване на подозрително използване на привилегировани акаунти, включително съпоставяне на данни с услуги като VirusTotal.
- Скриптове, които изследват Кешове за билети на Kerberos да се намерят евентуални „златни билети“ с аномални срокове.
Повечето от тези ресурси са предназначени за администратори, но разбирането на начина им на работа ви помага да интерпретирайте симптомите на евентуален компромис във вашата собствена потребителска сесия: необичайни влизания, нови членове в групи от високо ниво, услуги, които променят състоянието си без обяснение и др.
Модулът PowerShell за услуги като DRDA и други вградени среди
Някои продукти на Microsoft, като например DRDA услуга на сървъра за интеграция на хостовеТе предоставят конфигурацията си почти изцяло чрез специфичен PowerShell модул. В този случай, модулът Microsoft.HostIntegration.PowerShell Той предлага командлети за:
- конфигуриране Връзки към SQL Server и параметри за удостоверяване.
- Променете начина, по който се обработват статични SQL пакети и неговото търсене.
- дефинира преобразувания на дата и час, персонализирани кодови страници и присвоявания на сортиране.
- конфигуриране агенти за проследяване на слушане (текст, конзола, ETW, дневник на събитията).
За потребител без разрешения, тези типове модули служат по-скоро като ръководство за това какво е възможно: Научете се да работите с двоични модули, да импортирате команди, да се консултирате с помощта им и да проверявате конфигурации, без да ги променяте.В много среди, четенето на определени параметри на услуги може да се извърши без повишаване на правата, което ви позволява да проверите например дали регистрирането на проследяване е активно или какви съпоставяния на сравнение се използват.
Като цяло, PowerShell се е утвърдил като референтен език за управление и защита на WindowsДори и да не винаги имате администраторски права, си струва да инвестирате време в овладяване на основите и изучаване на най-често срещаните скриптове и модули, защото те ще ви позволят да работите по-ефективно, да откривате проблеми по-рано и да говорите на същия език като администраторите, когато имате нужда от тяхната помощ.
- PowerShell Позволява ви да автоматизирате сложни задачи в Windows, използвайки скриптове за многократна употреба, дори без да сте администратор.
- Има многобройни модули и скриптове инструменти, ориентирани към сигурност, мрежа и Azure, които улесняват одити и прегледи.
- Много команди на четене и наблюдение Те работят със стандартни разрешения и помагат за откриване на проблеми.
- Конкретни модули на продукти на Microsoft разкриват своята конфигурация чрез кратки команди, което засилва централната роля на PowerShell.
