Más información sobre la seguridad del script de PowerShell

Se aplica a: Configuration Manager (rama actual)

Es responsabilidad del administrador validar el uso de parámetros de PowerShell y PowerShell propuestos en su entorno. Estos son algunos recursos útiles para ayudar a los administradores a educar sobre el poder de PowerShell y las posibles superficies de riesgo. Esta guía le ayudará a mitigar posibles superficies de riesgo y a permitir que se usen scripts seguros.

Seguridad de scripts de PowerShell

La característica de scripts Configuration Manager permite revisar y aprobar scripts visualmente. Otro administrador puede solicitar que se permita su script. Los administradores deben tener en cuenta que los scripts de PowerShell pueden tener scripts ofuscados. Un script ofuscado podría ser malintencionado y difícil de detectar con la inspección visual durante el proceso de aprobación del script. Revise visualmente los scripts de PowerShell y use herramientas de inspección para ayudar a detectar problemas de script sospechosos. Estas herramientas no siempre pueden determinar la intención del autor de PowerShell, por lo que puede llamar la atención sobre un script sospechoso. Sin embargo, las herramientas requerirán que el administrador juzgue si es una sintaxis de script intencionada o malintencionada.

Recomendaciones

  • Familiarícese con las instrucciones de seguridad de PowerShell mediante los distintos vínculos a los que se hace referencia a continuación.
  • Firmar los scripts: otro método para proteger los scripts es que se revisen y, a continuación, se firmen, antes de importarlos para su uso.
  • No almacene secretos (como contraseñas) en scripts de PowerShell y obtenga más información sobre cómo controlar los secretos.

Información general sobre la seguridad de PowerShell

Esta colección de vínculos se eligió para proporcionar a los administradores de Configuration Manager un punto de partida para aprender sobre las recomendaciones de seguridad de scripts de PowerShell.

Defensa contra ataques de PowerShell

Protección contra la inyección de código malintencionado

PowerShell: el equipo azul describe el registro de bloques de script profundo, el registro de eventos protegidos, la interfaz de examen antimalware y las API de generación de código seguro

API para la interfaz de examen antimalware

Seguridad de parámetros de PowerShell

Pasar parámetros es una manera de tener flexibilidad con los scripts y aplazar las decisiones hasta el tiempo de ejecución. También abre otra superficie de riesgo.

En la lista siguiente se incluyen recomendaciones para evitar la inserción de scripts o parámetros malintencionados:

  • Permitir solo el uso de parámetros predefinidos.
  • Use la característica de expresión regular para validar los parámetros permitidos.
    • Ejemplo: si solo se permite un determinado intervalo de valores, use una expresión regular para comprobar solo los caracteres o valores que pueden formar el intervalo.
    • La validación de parámetros puede ayudar a evitar que los usuarios intenten usar determinados caracteres con escape, como comillas. Puede haber varios tipos de comillas, por lo que el uso de expresiones regulares para validar qué caracteres ha decidido que son permisibles suele ser más fácil que intentar definir todas las entradas que no están permitidas.
  • Use el módulo de PowerShell "cazador de inyección" en el Galería de PowerShell.
    • Puede haber falsos positivos, por lo que busque la intención cuando algo se marque como sospechoso para determinar si es un problema real o no.
  • Microsoft Visual Studio tiene un analizador de scripts que puede ayudar a comprobar la sintaxis de PowerShell.

El siguiente vídeo titulado: "DEF CON 25 - Lee Holmes - Get $pwnd: Attacking Battle Hardened Windows Server" (Def CON 25 - Lee Holmes - Get $pwnd: Attacking Battle Hardened Windows Server) proporciona una visión general de los tipos de problemas que puede proteger (especialmente la sección 12:20 a 17:50):

Recomendaciones de entorno

En la lista siguiente se incluyen recomendaciones generales para los administradores de PowerShell:

  • Implemente la versión más reciente de PowerShell, como la versión 5 o posterior, que está integrada en Windows 10 o posterior. También puede implementar el Windows Management Framework.
  • Habilite y recopile registros de PowerShell, incluidos opcionalmente el registro de eventos protegidos. Incorpore estos registros en los flujos de trabajo de firma, búsqueda y respuesta a incidentes.
  • Implemente Just Enough Administration en sistemas de alto valor para eliminar o reducir el acceso administrativo sin restricciones a esos sistemas.
  • Implemente Windows Defender directivas de Control de aplicaciones para permitir que las tareas administrativas aprobadas previamente usen la funcionalidad completa del lenguaje de PowerShell, a la vez que limita el uso interactivo y no aprobado a un subconjunto limitado del lenguaje de PowerShell.
  • Implemente Windows 10 o posterior para proporcionar a su proveedor de antivirus acceso completo a todo el contenido (incluido el contenido generado o des ofuscado en tiempo de ejecución) procesado por hosts de scripting de Windows, incluido PowerShell.