Windows: jak zablokować skrypty?

System Windows zawiera kilka środowisk skryptowych o bardzo szerokich możliwościach. Jednak to, co jest zaletą dla programistów, może być zagrożeniem dla użytkowników. Wyłączenie skryptów w Windows jest nieco trudne i miewa zaskakujące skutki uboczne.

Windows: jak zablokować skrypty?
Windows: jak zablokować skrypty?
Źródło zdjęć: © Materiały prasowe
Kamil J. Dudek

23.04.2024 06:30

Osoba chcąca wyłączyć w Windowsie działanie skryptów VBScript za pomocą systemowych Zasad Grupy prędko spotka się z rozczarowaniem. Sekcja Skrypty nie zawiera przełącznika wyłączającego je, a ustawienia dotyczące VBScript wyłączają je jedynie w środowiskach rysowanych przez Internet Explorera, gdzie od lat jest to już ustawienie domyślne.

W przypadku skryptów PowerShell jest lepiej, ale tylko pozornie. Możliwe jest ustawienie zakazu wykonywania niepodpisanych skryptów, ale… nie blokuje to następujących operacji:

  • zapisania treści skryptu do zmiennej i uruchomienia PowerShella z parametrem -command i zmienną
  • wypisania skryptu na standardowe wejście i przepuszczenia go przez PowerShell.exe
  • wypisania skryptu na standardowe wejście i przepuszczenia go przez Invoke-Expression
  • pobierania treści skryptu przez Net.WebClient.DownloadString i przepuszczenia przez Invoke-Command

Dalsza część artykułu pod materiałem wideo

Trudno powstrzymać PowerShella

Zablokowanie "wykonywania skryptów" oznacza zablokowanie jedynie właśnie tego: skryptów. Nie "zawartości skryptów, ładowanej w dowolny sposób". Ma to niestety logiczny sens, praktycznego nie ma jednak za grosz. Dlatego do wyłączania skryptów należy podejść na zasadzie minimalizacji szkód, jeżeli rozwiązania totalne są nieskuteczne.

Software Restrictions Policies
Software Restrictions Policies © dobreprogramy | Kamil Dudek

Istnieje przełącznik umożliwiający wyłączenie silnika wykonawczego VBScript. Zastosowanie go sprawi, że skrypty VBS po prostu przestaną być wykonywane. W codziennej pracy nie będzie to zauważalne, jeżeli nasze oprogramowanie nie korzysta ze skryptów. Sam Windows zawiera jednak własne skrypty VBS.

Jeżeli nie potrzebujemy narzędzi do administrowania drukarkami (Printing_Admin_Scripts), licencjonowania i konfigurowania WinRM, możemy wyłączyć obsługę skryptów VBScript za pomocą klucza Rejestru, dodawanego następującym poleceniem:

New-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings\' -Name "Enabled" -PropertyType DWORD -Value "0" -Force

PowerShell jest trudniejszym przypadkiem. Choć w systemie nie ma skryptów PowerShell stosowanych jako wewnętrzne narzędzia, niektóre instalatory (a rzadziej - także aktualizacje) stosują go. Można więc obrać jedną z dwóch ścieżek: odebranie PowerShellowi dostępu do Internetu i zablokowanie wykonywania środowiska. Aby całkowicie zablokować wykonywanie PowerShella, można użyć Zasad Ograniczeń Oprogramowania (SRP). Należy ustawić dwie reguły: dla skrótu i dla ścieżki.

SRP

Obie są tworzone w Edytorze Zasad Grupy, uruchamianym poleceniem gpedit.msc. Edytor należy wyszukać w menu Start i wybrać Uruchom jako Administrator (lub uruchomić polecenie w wierszu poleceń administratora). Następnie w dziale Ustawienia komputera przejść do działu Ustawienia systemu Windows, a potem Ustawienia zabezpieczeń. Znajduje się tam sekcja Zasady ograniczeń oprogramowania, którą należy włączyć prawym klawiszem. Uaktywni to opcję Reguły dodatkowe, którą także należy kliknąć prawym klawiszem i wybrać Nowa reguła skrótu oraz Nowa reguła ścieżki.

PowerShell: GPO
PowerShell: GPO © dobreprogramy | Kamil Dudek

W obu przypadkach za pomocą przycisku Przeglądaj należy odnaleźć plik C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe i wybrać dla niego "Poziom zabezpieczeń: niedozwolone". Reguła ścieżki zabezpieczy nas przed uruchomieniem programu PowerShell ale nie będzie skuteczna, jeżeli ktoś wykona kopię pliku EXE w innej lokalizacji.

Reguła skrótu zadziała dla każdego pliku o każdej nazwie, jeżeli jego zawartość (a raczej jej skrót, hash) będzie taka, jak zawartość zablokowanego pliku PowerShell.exe. Problem w tym, że… plik PowerShell.exe bywa zastępowany przez aktualizacje Windows. Ostatni raz miało to miejsce w styczniu 2024 (stan na kwiecień 2024).

Metody blokowania skryptów są nieidalne i mogą negatywnie wpłynąć na inne oprogramowanie, wewnętrznie korzystające ze skryptów, co przecież nie zawsze jest bezpośrednio widoczne i oczywiste. Trudno oszacować, o jakie programy może chodzić, należy mieć jednak taki fakt na uwadze, wprowadzając ograniczenia opisane powyżej.

Kamil J. Dudek, współpracownik redakcji dobreprogramy.pl

Programy

Zobacz więcej
it.prooprogramowaniewindows 11
Wybrane dla Ciebie
Komentarze (62)