Własnoręczne podpisywanie skryptów PowerShell

PowerShell jest dość potężnym narzędziem, głównie z racji, iż dość łatwo o dodatkowe przystawki do zarządzania poszczególnymi elementami systemu. Niestety większość tych przystawek jest robiona przez samych użytkowników dlatego nie są one sygnowane podpisem Microsoftu.

Aby uruchomić takie skrypt możemy wykonać dwie operacje. Albo ustawić politykę wykonywania skryptów na zupełne minimum:

Set-ExecutionPolicy Unrestricted

Niestety jest to najgorsze rozwiązanie jakie możemy wybrać gdyż wtedy wszystkie skrypty będą wykonywane. Zarówno te świadomie przez nas uruchamiane jak i wszelakie szkodliwe oprogramowanie.

W celu podniesienia bezpieczeństwa najlepszym wyjściem jest ustawnie polisy na

Set-ExecutionPolicy RemoteSigned

Oraz własnoręczne podpisanie sprawdzonych przez nas skryptów. Takie rozwiązanie pozwoli nam na wykonywanie naszego kody, a wszystkie pozostałem skrypty zostaną zablokowane.

Jak w takim razie odpisać skrypt PowerShella ??

Mianowicie ściągamy i instalujemy pakiet Windows SDK, w celu wydobycia aplikacji Makecert. Następnie przystępujemy do wygenerowania certyfikatu (podczas generowania zostaniemy poproszeni o podanie hasła zabezpieczającego certyfikat).

Zaufany certyfikat do głównego urzędu certyfikacji.

makecert -n "CN=PowerShell Local Certificate Root" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr localMachine

Oraz osobisty certyfikat do podpisywania skryptów.

makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer

Gdy już posiadamy odpowiedni certyfikat przystępujemy do podpisywania plików.

Set-AuthenticodeSignature <lokalizacja pliku> @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]

Czasem niestety może zdarzyć się „nieznany błąd” podczas podpisywania. Jest on spowodowany tym, iż najprawdopodobniej plik ze skryptem został zapisany w innym kodowaniu aniżeli UTF-8. Wystarczy prze edytować plik zapisując go z poprawnym kodowaniem i problem powinien ustąpić.

Źródła:
http://technet.microsoft.com/en-us/library/ee176961.aspx
http://msdn.microsoft.com/en-us/library/bfsktky3(VS.80).aspx
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en

Advertisements

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s