Los mainframes son un componente crítico de la infraestructura de TI en muchas industrias, ya que impulsan el procesamiento de transacciones de gran volumen con alta confiabilidad y numerosos mecanismos de seguridad. Los bancos, las aerolíneas, los hoteles y las compañías de seguros confían en los mainframes para manejar las transacciones asociadas con transferencias bancarias, compras con tarjeta de crédito, creación de reservas y procesamiento de reclamaciones de seguros.
Como cualquier sistema informático, los errores de configuración del mainframe son posibles a pesar de las características de seguridad avanzadas. Debido a la importancia de la información que manejan estas máquinas, es imperativo que los evaluadores de penetración evalúen la seguridad en los mainframes con regularidad y cuidado. Cada mainframe está especialmente diseñado para adaptarse a un caso de uso concreto, por lo que un evaluador de penetración puede tardar algún tiempo en comprender el entorno que está evaluando. Después de la fase inicial de reconocimiento, el evaluador buscará vulnerabilidades y configuraciones erróneas en el software y las aplicaciones que se ejecutan en el mainframe.
Existen varias herramientas de pruebas de penetración disponibles para mainframes, pero se trata de scripts independientes, que no forman parte de una herramienta multifuncional. Un tester debe dedicar tiempo a determinar qué scripts son apropiados para ejecutar y dónde encontrar los scripts que funcionarán mejor en su entorno. Para cubrir esta brecha, Elizabeth Christensen y yo, ambas becarias de IBM X-Force Red, desarrollamos m-RAY, un escáner automatizado de vulnerabilidades para mainframes de IBM que ejecutan el sistema operativo z/OS. Su objetivo es ayudar a los probadores de penetración en las etapas iniciales de su contratación al identificar errores de configuración y vulnerabilidades comunes. Con esta herramienta, los evaluadores reducen las horas dedicadas a ejecutar comandos manualmente y realizar reconocimientos, lo que aumenta la cantidad de tiempo que pueden dedicar a dar seguimiento a posibles rutas de ataque o puntos de pivote e identificar problemas antes de que lo haga un adversario.
m-RAY se diseñó como una infraestructura fácilmente extensible que comprueba las vulnerabilidades en las configuraciones de varios servicios y simplifica el proceso de ejecución de scripts en un entorno z/OS. Debido a la naturaleza personalizada de los mainframes, los evaluadores pueden configurar qué características les gustaría usar para adaptarse mejor al entorno en el que están trabajando.
La lista de errores de configuración para verificar se compiló a partir de la Guía de implementación técnica de seguridad (STIG) de z/OS RACF. Las STIG son requisitos de configuración utilizados por el Departamento de Defensa para proteger sus sistemas y se basan en recomendaciones del NIST. Ya sea que una empresa deba cumplir con estos requisitos o no, las STIG proporcionan una fuente de mejores prácticas de la industria para varios productos de software y forman la base de esta herramienta de seguridad. El equipo identificó las 25 principales configuraciones erróneas que aportarían mayor valor a un probador, y que serían las más importantes para que los clientes conocieran, y luego implementó estas configuraciones como comprobaciones de vulnerabilidades.
Por ejemplo, m-RAY comprueba si los niveles de permiso de los usuarios se alinean en los entornos Unix y TSO, si SSH está configurado para usar algoritmos criptográficos seguros y si las cuentas inactivas se revocan automáticamente. Actualmente, m-RAY proporciona información sobre errores de configuración del mainframe en el entorno de Unix System Services y en RACF, el software de seguridad que maneja el control de acceso de los usuarios en z/OS. Algunos proporcionan una respuesta definitiva sobre si hay un cierto error de configuración en el sistema, mientras que otros proporcionan información del sistema, como una lista de cuentas de usuario que pueden acceder a un recurso determinado. Un tester de penetración puede entonces trabajar con el cliente para determinar si el acceso está correctamente restringido.
Además de verificar las configuraciones del sistema, otro objetivo de m-RAY es consolidar las características de las herramientas de mainframe existentes. Estas herramientas de enumeración suelen estar escritas en REXX, un lenguaje de scripting de mainframe. Para utilizar uno de estos scripts durante una prueba de inserción, el evaluador debe encontrar la herramienta de código abierto, descargarla en su computadora, subirla desde allí al mainframe, ejecutarla e interpretar los Resultados. Para agilizar este procedimiento, m-RAY incluye los dos scripts REXX de código abierto más populares y automatiza el proceso de carga y ejecución del script, así como la limpieza posterior del entorno. Los evaluadores también pueden agregar sus propios scripts REXX personalizados a la herramienta.
En general, mediante el uso de m-RAY, un probador de penetración puede automatizar muchas de las comprobaciones de vulnerabilidades que de otro modo necesitarían realizar manualmente y puede reducir el tiempo dedicado a obtener una visión general inicial del sistema.
Hay varias formas de interactuar con un mainframe moderno. El método tradicional es TSO, que permite a los usuarios conectarse a una sesión interactiva y emitir comandos. Esto suele implicar el uso de un emulador de terminal especializado que opera sobre el protocolo IBM® 3270. La mayoría de los mainframes modernos también ejecutan SSH, un protocolo de conectividad remota que puede operar en todas las plataformas. Esto proporciona una forma de emitir comandos TSO y UNIX y automatizar acciones como parte de un script. m-RAY opera a través de una conexión SSH al mainframe para usar la funcionalidad adicional que proporciona SSH y evitar dependencias específicas de la plataforma.
SSH en el mainframe utiliza Unix System Services, una característica de z/OS que le permite ejecutar programas escritos para sistemas Unix. Con este protocolo, m-RAY establece una conexión con el mainframe y ejecuta comandos para recopilar información para realizar comprobaciones de configuración errónea. SCP se utiliza para copiar de forma segura scripts REXX al mainframe. La autenticación se puede realizar mediante una contraseña o un par de claves para adaptarse a diferentes configuraciones del sistema.
La aplicación principal proporciona una interfaz de usuario de línea de comandos, configura las conexiones y comienza a buscar vulnerabilidades. El evaluador de penetración ingresa la dirección IP del mainframe, selecciona los tipos de configuraciones incorrectas que se deben verificar e ingresa un conjunto de credenciales de bajo nivel. Luego, se inicia una conexión entre m-RAY y el mainframe que garantiza la capacidad de enviar comandos y recibir Resultados del sistema.
Las verificaciones de vulnerabilidades se dividen en tres categorías: verificaciones de servicios del sistema Unix, verificaciones a través de TSO y reconocimiento general. Después de seleccionar una de estas categorías, un tester tiene la opción de ejecutar todas las comprobaciones o configurar cuáles desea ejecutar. Tras recopilar los resultados de un escaneo, m-RAY elabora un reporte de hallazgos e información del sistema que puede orientar al tester de penetración a medida que avanza en su combate. Ejecutar un script de REXX funciona de forma similar. Tras seleccionar la opción de scripts, un tester puede seleccionar cuáles desea ejecutar.
La parte más importante del diseño de esta aplicación es su modularidad. A medida que las mejores prácticas de seguridad evolucionan con el tiempo, será necesario agregar comprobaciones para nuevas configuraciones erróneas y modificar las existentes. Se pueden agregar nuevas comprobaciones y scripts modificando una plantilla incluida y solo requieren saber qué comandos deben ejecutarse para recopilar la información relevante. Si un probador de penetración quisiera añadir una nueva comprobación que implicara ejecutar un comando TSO, no necesitaría saber cómo configurar una conexión con el mainframe, solo tendría que conocer el comando TSO y, opcionalmente, cuál es el resultado deseado del comando. Agregar un nuevo cheque debería tomar menos de 10 minutos. También es posible agregar nuevos protocolos de conexión. m-RAY utilizó SSH porque era la mejor opción para la funcionalidad actual, pero agregar otro protocolo de conexión también se simplifica a través de clases de conexión que implementan una interfaz estándar.
m-RAY es una herramienta de código abierto que se puede encontrar aquí.
La esperanza de este proyecto es que continúe ampliándose con nuevas comprobaciones de errores de configuración y vulnerabilidades más allá de las 25 implementadas actualmente. La selección actual ha sido curada para ofrecer el máximo valor tanto a los testers de penetración como a los clientes cuyos sistemas están evaluando. Esto, combinado con la funcionalidad de las herramientas de código abierto existentes, da como resultado la herramienta de pruebas de penetración para mainframes más completa que existe.