A PowerShell biztonsági funkciói

A PowerShell számos olyan funkcióval rendelkezik, amelyeket a szkriptelési környezet biztonságának javítására terveztek.

Végrehajtási irányelv

A PowerShell végrehajtási szabályzata egy biztonsági funkció, amely szabályozza, hogy a PowerShell milyen feltételek mellett tölt be konfigurációs fájlokat, és parancsfájlokat futtat. Ez a funkció segít megakadályozni a rosszindulatú szkriptek végrehajtását. Csoportházirend-beállítással végrehajtási szabályzatokat állíthat be számítógépekre és felhasználókra. A végrehajtási szabályzatok csak a Windows platformra vonatkoznak.

További információért lásd az about_Execution_Policies részt .

A SecureString osztály használata

A PowerShell számos parancsmaggal rendelkezik, amelyek támogatják az System.Security.SecureString osztály használatát. A .NET-osztályhoz hasonlóan a SecureStringet is használhatja a saját szkriptjeiben. A Microsoft azonban nem javasolja a SecureString használatát az új fejlesztéshez. A Microsoft azt javasolja, hogy kerülje a jelszavak használatát, és támaszkodjon más hitelesítési eszközökre, például tanúsítványokra vagy Windows-hitelesítésre.

A PowerShell továbbra is támogatja a SecureString osztályt a visszamenőleges kompatibilitás érdekében. A SecureString használata még mindig biztonságosabb, mint egy egyszerű szöveges sztring használata. A PowerShell továbbra is a SecureString típusra támaszkodik, hogy elkerülje a tartalom véletlen felfedését a konzolon vagy a naplókban. Körültekintően használja a SecureStringet , mert könnyen átalakítható egyszerű szöveges sztringgé. A SecureString használatáról a System.Security.SecureString osztály dokumentációjában olvashat bővebben.

Modul- és szkriptblokknaplózás

A modulnaplózás lehetővé teszi a naplózás engedélyezését a kiválasztott PowerShell-modulokhoz. Ez a beállítás a számítógép összes munkamenetében érvényes. A PowerShell a Windows PowerShell eseménynaplójában rögzíti a megadott modulok folyamatvégrehajtási eseményeit.

A szkriptblokkok naplózása lehetővé teszi a parancsok, szkriptblokkok, függvények és szkriptek feldolgozását – akár interaktív módon, akár automatizálással. A PowerShell naplózza ezeket az információkat a Microsoft-Windows-PowerShell/Operational eseménynaplóban.

További információért tekintse át az alábbi cikkeket:

AMSI-támogatás

A Windows Antimalware Scan Interface (AMSI) egy API, amely lehetővé teszi, hogy az alkalmazások műveleteket adjanak át egy kártevőirtó szkennernek, például a Windows Defendernek a rosszindulatú hasznos adatok kereséséhez. A PowerShell 5.1-től kezdve a Windows 10-en (és újabb verziókon) futó PowerShell minden szkriptblokkot átad az AMSI-nek.

A PowerShell 7.3 kibővíti az AMSI-nek küldött adatokat ellenőrzés céljából. Most már az összes .NET-metódushívást tartalmazza.

Az AMSI-ről további információt a következő témakörben talál: Hogyan segít az AMSI.

Korlátozott nyelvi mód

A KorlátozottAnguage mód a PowerShell-munkamenetekben engedélyezett parancsmagok és .NET-típusok korlátozásával védi a rendszert. A teljes leírást lásd: about_Language_Modes.

Alkalmazásvezérlő

A Windows 10 két technológiát tartalmaz, az App Control vállalati verziót és az AppLockert , amelyekkel vezérelheti az alkalmazásokat. A PowerShell észleli, hogy a rendszerszintű alkalmazásvezérlési szabályzat kényszerítve van-e. A szabályzat bizonyos viselkedéseket alkalmaz szkriptblokkok, szkriptfájlok vagy modulfájlok betöltésekor, hogy megakadályozza a kód tetszőleges végrehajtását a rendszeren.

Az App Control for Business a Microsoft Biztonsági reagálási központ (MSRC) által meghatározott karbantartási feltételek alapján biztonsági funkcióként lett kialakítva. Az App Control for Business a Windows előnyben részesített alkalmazásvezérlő rendszere. További információ arról, hogy a PowerShell hogyan támogatja az AppLockert és az App Control vállalati verziót, olvassa el az App Control használata a PowerShell biztonságossá tételéhez című témakört.

Az AppLocker egy örökölt alkalmazásvezérlési rendszer, amely továbbra is támogatott a Windows 10-ben és a Windows 11-ben. Az AppLocker nem az MSRC által meghatározott karbantartási feltételek szerinti biztonsági szolgáltatás. További információ a karbantartási feltételekről: Microsoft Biztonság Windows karbantartási feltételei.

Rendszerzárolási mód

A PowerShellben a Rendszerlezárás mód a Windows által a Vállalati alkalmazásvezérlőn vagy az AppLockeren keresztül kikényszerített rendszerszintű alkalmazásvezérlési szabályzat absztrakciója. Ha egy alkalmazásvezérlési szabályzat aktív, a PowerShell rendszerzárolási módba lép. Rendszerzárolási módban az alkalmazásvezérlési szabályzat határozza meg az egyes futtatóterek nyelvi módját.

Fontos

Rendszerzárolási mód nélkül a nyelvi mód nem terjed át a futtatási terek között. Minden futtatótér egymástól függetlenül lekérdezi a Windows alkalmazásvezérlési szabályzatot a nyelvi mód meghatározásához. A nyelvi mód beállítása az egyik runspace-en nincs hatással a többi runspace-re. Aktív alkalmazásvezérlési szabályzat nélkül az új futtatóterek alapértelmezés szerint üzemmódba kerülnek FullLanguage .

Szoftveres anyagjegyzék (SBOM)

A PowerShell 7.2-től kezdve minden telepítési csomag tartalmaz egy szoftveres anyagjegyzéket (SBOM). A PowerShell csapata SBOM-eket is gyárt azokhoz a modulokhoz, amelyek saját tulajdonban vannak, de a PowerShelltől függetlenül szállítják őket.

Az SBOM-fájlokat a következő helyeken találja:

  • A PowerShellben keresse meg az SBOM-t a következő helyen $PSHOME/_manifest/spdx_2.2/manifest.spdx.json: .
  • Modulok esetén keresse meg az SBOM-t a modul mappájában._manifest/spdx_2.2/manifest.spdx.json

Az SBOM létrehozása és közzététele az első lépés a szövetségi kormányzati kiberbiztonság modernizálásához és a szoftverellátási lánc biztonságának javításához. A kezdeményezésről további információt az SBOM-ek SPDX-sel való létrehozása a Microsoftnál című blogbejegyzésben talál.

Biztonságos adatátvitel a PowerShell-remotingban

A PowerShell 7.6-preview5-ös verziója előtt a Session_KeySecureString titkosítására szolgál, mielőtt távoli PowerShell-munkamenetet küldene neki. A PowerShell Remoting Protocol (PSRP) kulcscserét hajt végre az ügyfél és a kiszolgáló között, amikor át kell helyezni egy SecureString objektumot. A csere a következő lépéseket foglalja magában:

  1. Az ügyféloldal létrehoz egy nyilvános/privát kulcspárt, és elküldi a nyilvános kulcsot a kiszolgálónak.
  2. A kiszolgáló létrehoz egy munkamenetkulcsot a szimmetrikus titkosításhoz.
  3. A kiszolgáló a nyilvános kulccsal titkosítja a munkamenetkulcsot, és elküldi az ügyfélnek.
  4. Az ügyfél és a kiszolgáló is az új munkamenetkulcsot használja a SecureString-objektumok titkosításához .

A PowerShell Remoting Protocol (PSRP) az algoritmust RSAEncryptionPadding.Pkcs1 használja a kulcscsere során. Az algoritmus NEM biztonságos, így a kulcscsere nem biztosít további biztonságot.

Fontos

Biztonságos átviteli réteget kell használnia a PSRP-en keresztüli biztonságos adatátvitel biztosításához.

A PowerShell 7.6-preview.5 verziójától kezdve a kulcscsere elavult. A PSRP verziója a 2.4-es verzióra lett növelve, és a következő módosításokat tartalmazza:

  • A következő PSRP-üzenetek elavultak, ha az ügyfél és a kiszolgáló is 2.4-s vagy újabb verziójú:

    • nyilvános kulcs
    • NYILVÁNOS_KULCS_KÉRÉS
    • TITKOSÍTOTT_MUNKAMENET_KULCS
  • A titkosítási és visszafejtési lépések SecureString kimaradnak, ha az ügyfél és a kiszolgáló is 2.4-s vagy újabb verziójú.

Ez a módosítás visszamenőlegesen kompatibilis.

  • A régi ügyfelek vagy kiszolgálók (2.3-as vagy újabb verzió) esetén a kulcscsere akkor is használható, ha szükséges.
  • A PSRP akkor használhat elnevezett távoli csöves munkameneteket, ha az ügyfél és a kiszolgáló is ugyanazon a gépen található. Mivel egy távoli ügyfél csatlakozhat a nevesített csőhöz, és az adatok már nem munkamenet-kulccsal titkosítottan vannak, a nevesített cső (amelyet a rendszer Enter-PSHostProcess céljából használ) elutasítja a távoli ügyfelet.

Biztonsági karbantartási feltételek

A biztonsági határ logikai elkülönítést biztosít a kód és a különböző megbízhatósági szintű biztonsági tartományok adatai között. A biztonsági funkciók biztonsági határokra épülnek, hogy robusztus védelmet nyújtsanak bizonyos fenyegetések ellen. Az ebben a kategóriában szereplő biztonsági funkciók esetében Microsoft a jelentett biztonsági réseket karbantartással kívánja kezelni.

A PowerShell biztonsági funkciói

  • Rendszerzárolás és alkalmazásvezérlés vállalkozások számára
  • Korlátozott nyelvi mód az App Control vállalati verzióval

További információkért lásd a Windows biztonsági frissítéseinek Microsoft feltételrendszere című dokumentációt.

Bizonyos esetekben a biztonsági funkciók védelmet nyújthatnak a fenyegetések ellen anélkül, hogy robusztus védelmet biztosíthatnak. Ezeket a biztonsági funkciókat általában részletes védelmi funkcióknak vagy kockázatcsökkentéseknek nevezik, mivel további biztonságot nyújtanak, de olyan beépített korlátozásokkal is rendelkezhetnek, amelyek megakadályozzák, hogy teljes mértékben mérsékeljék a fenyegetéseket. A mélységi védelmi funkciók megkerülése önmagában nem jelent közvetlen kockázatot, mivel a támadónak olyan biztonsági rést is meg kell találnia, amely hatással van egy biztonsági határra, vagy további technikákra, például a szociális tervezésre kell támaszkodnia az eszköz sérülésének kezdeti szakaszának eléréséhez.

A PowerShell részletes védelmi funkciói

  • Korlátozott nyelvi mód AppLocker használatával, munkamenet-konfiguráción keresztül vagy a(z) $ExecutionContext.SessionState.LanguageMode manuális beállításával konfigurálva
  • Rendszerzárolás az AppLockerrel
  • Végrehajtási házirend