Dowiedz się więcej o zabezpieczeniach skryptów programu PowerShell

Dotyczy: programu Configuration Manager (bieżąca gałąź)

Administrator jest odpowiedzialny za weryfikowanie proponowanego użycia parametrów programu PowerShell i programu PowerShell w ich środowisku. Oto kilka przydatnych zasobów ułatwiających informowanie administratorów o możliwościach programu PowerShell i potencjalnych obszarach ryzyka. Te wskazówki ułatwiają ograniczanie potencjalnych obszarów ryzyka i zezwalanie na używanie bezpiecznych skryptów.

Zabezpieczenia skryptu programu PowerShell

Funkcja skryptów Configuration Manager umożliwia wizualne przeglądanie i zatwierdzanie skryptów. Inny administrator może zażądać, aby ich skrypt był dozwolony. Administratorzy powinni mieć świadomość, że skrypty programu PowerShell mogą mieć zaciemnione skrypty. Zaciemniony skrypt może być złośliwy i trudny do wykrycia podczas inspekcji wizualnej podczas procesu zatwierdzania skryptu. Wizualnie przejrzyj skrypty programu PowerShell i użyj narzędzi do inspekcji, aby pomóc w wykrywaniu podejrzanych problemów ze skryptami. Te narzędzia nie zawsze mogą określić intencję autora programu PowerShell, dzięki czemu mogą zwrócić uwagę na podejrzany skrypt. Jednak narzędzia będą wymagać od administratora oceny, czy jest to złośliwa lub zamierzona składnia skryptu.

Zalecenia

  • Zapoznaj się ze wskazówkami dotyczącymi zabezpieczeń programu PowerShell, korzystając z różnych linków wymienionych poniżej.
  • Podpisz skrypty: Inną metodą zapewnienia bezpieczeństwa skryptów jest ich weryfikacja, a następnie podpisanie przed zaimportowaniem ich do użycia.
  • Nie przechowuj wpisów tajnych (takich jak hasła) w skryptach programu PowerShell i dowiedz się więcej o sposobie obsługi wpisów tajnych.

Ogólne informacje o zabezpieczeniach programu PowerShell

Ta kolekcja linków została wybrana w celu nadania administratorom Configuration Manager punktu wyjścia do poznania zaleceń dotyczących zabezpieczeń skryptów programu PowerShell.

Ochrona przed atakami programu PowerShell

Ochrona przed wstrzyknięciem złośliwego kodu

PowerShell — niebieski zespół omawia rejestrowanie bloków skryptów głębokich, rejestrowanie zdarzeń chronionych, interfejs skanowania oprogramowania chroniącego przed złośliwym kodem i interfejsy API bezpiecznej generacji kodu

Interfejs API dla interfejsu skanowania chroniącego przed złośliwym oprogramowaniem

Zabezpieczenia parametrów programu PowerShell

Przekazywanie parametrów to sposób na elastyczność wykonywania skryptów i odroczenie decyzji do czasu uruchomienia. Otwiera również kolejną powierzchnię ryzyka.

Poniższa lista zawiera zalecenia dotyczące zapobiegania złośliwym parametrom lub iniekcji skryptu:

  • Zezwalaj tylko na użycie wstępnie zdefiniowanych parametrów.
  • Użyj funkcji wyrażenia regularnego, aby zweryfikować dozwolone parametry.
    • Przykład: Jeśli tylko określony zakres wartości jest dozwolony, użyj wyrażenia regularnego, aby sprawdzić tylko te znaki lub wartości, które mogą składać się na zakres.
    • Weryfikowanie parametrów może pomóc uniemożliwić użytkownikom próbę użycia pewnych znaków, które mogą zostać uciekły, takich jak cudzysłowy. Może istnieć wiele typów cudzysłowów, dlatego używanie wyrażeń regularnych do sprawdzania, które znaki, które zostały określone jako dopuszczalne, jest często łatwiejsze niż próba zdefiniowania wszystkich danych wejściowych, które nie są dozwolone.
  • Użyj modułu programu PowerShell "injection hunter" w Galeria programu PowerShell.
    • Mogą istnieć wyniki fałszywie dodatnie, więc poszukaj intencji, gdy coś jest oflagowane jako podejrzane, aby ustalić, czy jest to prawdziwy problem, czy nie.
  • Microsoft program Visual Studio ma analizator skryptów, który może pomóc w sprawdzeniu składni programu PowerShell.

Poniższy film zatytułowany: "DEF CON 25 - Lee Holmes - Get $pwnd: Attacking Battle Hardened Windows Server" zawiera omówienie typów problemów, przed których można się zabezpieczyć (zwłaszcza w sekcji od 12:20 do 17:50):

Zalecenia dotyczące środowiska

Poniższa lista zawiera ogólne zalecenia dla administratorów programu PowerShell:

  • Wdróż najnowszą wersję programu PowerShell, taką jak wersja 5 lub nowsza, która jest wbudowana w Windows 10 lub nowszą. Możesz również wdrożyć Windows Management Framework.
  • Włącz i zbierz dzienniki programu PowerShell, opcjonalnie uwzględniając chronione rejestrowanie zdarzeń. Uwzględnij te dzienniki w sygnaturach, przepływach pracy wyszukiwania zagrożeń i reagowania na zdarzenia.
  • Zaimplementuj administrację just enough w systemach o wysokiej wartości, aby wyeliminować lub ograniczyć nieograniczony dostęp administracyjny do tych systemów.
  • Wdrażanie Windows Defender zasad kontroli aplikacji w celu umożliwienia wstępnie zatwierdzonym zadaniam administracyjnym korzystania z pełnej możliwości języka programu PowerShell przy jednoczesnym ograniczeniu interakcyjnego i niezatwierdowanego użycia do ograniczonego podzestawu języka programu PowerShell.
  • Wdróż Windows 10 lub nowsze, aby zapewnić dostawcy oprogramowania antywirusowego pełny dostęp do całej zawartości (w tym zawartości wygenerowanej lub zaciemnionej w czasie wykonywania) przetworzonej przez hosty skryptów systemu Windows, w tym programu PowerShell.