¿Te ha gustado el artículo?
0
¿Te ha gustado el artículo?
0

Penetration testing: encuentra las vulnerabilidades en tu red

Los responsables de una red local de ordenadores conocen el gran esfuerzo que implica su creación y su mantenimiento. Es necesario configurar todos los componentes de tal manera que funcionen y se encuentren siempre actualizados, así como conviene instalar el software correspondiente en los dispositivos de los usuarios y definir los respectivos derechos de acceso. Sin embargo, la tarea más importante es implementar el concepto de seguridad adecuado para proteger a la red de ataques maliciosos. Dependiendo del tamaño de la red y de los estándares de seguridad requeridos, se aplicarán diferentes medidas y módulos, desde firewall por hardware y programas antivirus hasta complejas soluciones con componentes de hardware adicionales, tales como sistemas de detección y prevención de intrusos.  

Si ya has desarrollado el concepto de seguridad, la tarea no termina ahí: realizar pruebas regulares de seguridad para verificar la protección de una red forma parte de las tareas rutinarias de grandes empresas y autoridades gubernamentales. Con los llamados penetration tests (en español, pruebas de penetración), también conocidos como pentests, es posible determinar la vulnerabilidad de la red, de cada uno de los sistemas participantes o de una sola aplicación. Sobre la base de los resultados de estas pruebas de seguridad web es posible implementar medidas adecuadas para su optimización, pero ¿cómo se llevan a cabo estos tests y qué representan exactamente para la red?

¿Qué es un pentest?

En el contexto de la informática, el penetration testing es una metodología que consiste en planificar un ataque a una red, independientemente de su tamaño, o sobre equipos individuales, con el fin de revelar vulnerabilidades en el objeto de prueba. Para este propósito se simulan diversos patrones de ataque utilizando herramientas creadas por métodos de ataque conocidos. Los componentes típicos de un pentest son: 

  • Elementos de acoplamiento de red tales como routers, conmutadores o puertos
  • Puertos de seguridad tales como cortafuegos, filtros de paquetes o programas antivirus, balanceadores de carga, IDS e IPS, etc.
  • Servidores web, servidores de bases de datos, servidores de archivos, etc.
  • Equipos de telecomunicaciones
  • Cualquier tipo de aplicaciones web
  • Instalaciones de infraestructura como, por ejemplo, mecanismos de control de acceso
  • Redes inalámbricas implicadas tales como redes WLAN o Bluetooth.

Por lo general, los test de penetración se clasifican en pruebas de caja negra, donde los pentester (es decir, quienes realizan la prueba) solo tienen a su disposición la dirección de la red (sistema de destino) y en pruebas de caja blanca, en el cual se parte de un amplio conocimiento de los sistemas puestos a prueba, incluyendo su dirección IP, el software utilizado y sus componentes de hardware. Este último tipo de pentest abarca escenarios que no pueden ser considerados por las pruebas de caja negra como, por ejemplo, un ataque propiciado por alguien bien informado que forme parte de la misma empresa.

Motivaciones y condiciones para un pentest

En principio, el grado de peligro de un ataque a tu red aumenta dependiendo del valor de tus datos. Las autoridades gubernamentales y los bancos que manejan datos sensibles de sus clientes son tan atractivos para los cibercriminales como aquellas empresas de renombre que almacenan know how de gran importancia en sus servidores. Ahora bien, si administras datos o proyectos de menor trascendencia tampoco deberías relegar la seguridad a un segundo plano. Proteger tus datos es una cuestión que no depende de si operas una tienda online o de si ejecutas tu ERP en un servidor en red, de si tienes un proyecto web informativo con numerosas contribuciones o de si simplemente utilizas la red como una plataforma de trabajo. En estos casos, el atacante puede afectar a tu proyecto de la siguiente manera:

  • dañando los proyectos web o entornos de trabajo que administres,
  • accediendo a valiosas contraseñas dentro de la red,
  • infiltrando software malicioso,
  • robando datos de identificación de las cuentas de clientes,
  • o haciendo un uso indebido de los sistemas informáticos de tu red.

Aparte de las consecuencias económicas, es común que este tipo de ataques tengan un impacto negativo en la reputación, especialmente si los clientes se ven afectados directamente o si el ataque se conoce públicamente.

Si decides llevar a cabo un penetration testing no es recomendable que lo hagas motu proprio contra tu propia red o tus aplicaciones, sino que, por el contrario, dejes esta tarea en manos de un pentester profesional. Dichas pruebas requieren ciertas competencias profesionales, especialmente debido a que las pruebas de penetración pueden tener una intensidad diferente y acarrear complicaciones o daños graves si no se realizan correctamente. Por lo tanto, se trata más bien de encontrar el equilibrio perfecto entre el tipo de ataque necesario y el predecible provecho de cada punto débil. Además, debido a su imparcialidad y diferente perspectiva, un pentester externo que no haya participado en el diseño, la implementación y la gestión de la red ofrecerá los mejores resultados

Cualquier tipo de penetration test parte de la base de que eres el propietario de la red de prueba o de que cuentas con la autorización correspondiente. Un acuerdo contractual es un factor sine qua non para el trabajo en conjunto con un comprobador externo donde se registre la duración y la intensidad del pentest, así como las pruebas y medidas de protección de datos.

Herramientas para el penetration testing

La diversidad de tipos de ataque a una red implica que los pentester tengan una variada serie de herramientas a su disposición. Estas incluyen, por ejemplo, el escaneo de puertos, el escaneo de vulnerabilidades, el análisis de puertos, los generadores de paquetes o los descifradores de contraseñas. Muchas herramientas fueron desarrolladas específicamente para pruebas de seguridad web y de redes y, por lo tanto, se adaptan a zonas de prueba específicas. Y mientras que la mayoría de los programas provienen del sector de código abierto, también hay algunas aplicaciones de pago que, generalmente, están mejor documentadas y vinculadas a una asistencia integral al usuario. Este hecho resulta una gran ventaja, ya que dependiendo de los escenarios y las posibilidades definidas para cada instrumento, es decisivo que el pentester controle perfectamente las funciones de las herramientas que utiliza.

Actualmente es común encontrarse con extensas colecciones de herramientas para las pruebas de penetración compiladas por profesionales de seguridad experimentados. A menudo, estas colecciones trabajan sobre la base de alguna distribución Linux y pueden ejecutarse a través de un medio de almacenamiento externo, como por ejemplo un DVD o una memoria USB. Algunas de las ventajas de estas distribuciones para pruebas de penetración es que, a su vez, gozan de cierta seguridad, reúnen, preconfiguran y ponen a disposición de los usuarios todas las herramientas esenciales en una misma plataforma. Publicada en 2007, una de las soluciones más populares es la distribución Kali Linux.

¿Cómo se lleva a cabo una prueba de penetración?

Para que el penetration testing de buenos resultados, deberás diseñar primero un concepto claro. Dicho concepto define los componentes que se van a probar, los plazos que debe cumplir cada prueba, así como un test completo de la red y, finalmente, si tienes a disposición todas las herramientas necesarias. Esta fase de preparación es aún más importante cuando se contrata a un pentester externo y también cuando se realiza una prueba de caja blanca. En este caso, es esencial que comuniques toda la información acerca de tu red y los sistemas participantes y que compartas la documentación existente.

El procedimiento del pentest se divide principalmente en cuatro áreas:

  • Verificación del concepto de red: ya en la fase de preparación, una prueba de penetración identifica inconsistencias o vulnerabilidades específicas en el diseño de la red o de sus componentes individuales. El hecho de que, por ejemplo, las aplicaciones hayan sido configuradas con derechos de acceso diferentes, generará complicaciones rápidamente y planteará un riesgo de seguridad para la totalidad de la red, incluso si esta y los programas individuales alojados están protegidos adecuadamente. Algunos de estos casos pueden ser aclarados preliminarmente, mientras que otros solo son comprobables por medio de una prueba práctica. 
  • Prueba de las medidas de endurecimiento (hardening): el eje de una red informática corporativa segura es que los sistemas implicados estén endurecidos. En parte, el penetration testing también consiste en comprobar la efectividad de las medidas de endurecimiento aplicadas. Esto implica que tanto el software instalado como el sistema operativo, los servicios del sistema y las aplicaciones utilizadas por el usuario han de ser constantemente actualizadas. En caso de que se utilicen versiones antiguas para algunas aplicaciones por cuestiones de compatibilidad, será necesario valerse de otros medios de protección. Además, los requisitos de acceso y autenticación juegan un papel importante para los sistemas y programas individuales. En este caso, el pentest se ocupa de temas como los derechos de acceso, el uso de contraseñas y el cifrado, así como de la cuestión de si se le ha negado el acceso a personas no autorizadas. Otra tarea consiste en verificar las interfaces existentes, puertos abiertos e instrumentos reguladores como, por ejemplo, el cortafuegos. 
  • Búsqueda de vulnerabilidades conocidas: por lo general, descubrir las vulnerabilidades de un software no toma mucho tiempo, ya que, en la mayoría de casos, los pentester están familiarizados con los puntos débiles de los objetos de prueba. Estos pueden identifican rápidamente qué aplicaciones representan un riesgo para la seguridad, gracias a sus investigaciones sobre el nivel de endurecimiento de los componentes de las redes y sobre el estado de sus parches y versiones. En caso de que se tengan que examinar muchos sistemas en un corto período de tiempo, vale la pena utilizar escáneres de vulnerabilidad, aunque algunas veces estos pueden arrojar resultados inexactos. 
  • El uso selectivo de exploits: la certeza de si las vulnerabilidades encontradas también pueden ser explotadas solo se consigue si el pentester utiliza el exploit apropiado. Los exploits son secuencias de comandos que, por lo general, provienen de diferentes fuentes en Internet y no siempre están programadas de forma segura. Así, si se ejecuta uno de estos exploits inseguros, se corre el riesgo de bloquear las aplicaciones o el sistema probados y, en el peor de los casos, se pueden sobrescribir zonas de memoria importantes. En este caso, solo se deben utilizar scripts procedentes de fuentes fiables para las pruebas de penetración o abstenerse completamente de probar dichas vulnerabilidades.

Todos los pasos y resultados de los pentest deben registrarse por escrito. Las áreas en las que se concentrará durante el proceso se definen previamente. De esta forma, se fijan las bases ideales para el seguimiento de los pasos individuales y de la evaluación final de los resultados. Por lo general, el pentester proporciona estimaciones precisas sobre aquellos fallos de seguridad descubiertos que representan un mayor riesgo para la red. Sobre la base de estas listas de prioridades podrás optimizar paso a paso la protección de tu sistema.

Las ventajas y desventajas de las pruebas complejas de seguridad

Las estructuras homogéneas de grandes ordenadores son parte del pasado. Las estructuras informáticas descentralizadas actuales, en parte reforzadas por la conexión directa entre socios y clientes por Internet, cuentan con nuevas vulnerabilidades y fallos de funcionamiento que son reparadas, con más o menos rapidez, por los fabricantes de software. Para algunos programas, la asistencia está completamente configurada, con lo que, sin mayor esfuerzo, el usuario está en el lado seguro. Los cortafuegos y antivirus protegen contra ataques externos, pero el surgimiento de nuevas vulnerabilidades puede poner en riesgo la seguridad del sistema rápidamente. Los escáneres de vulnerabilidades son una herramienta útil para sistemas de redes complejas, sin embargo, no son suficientes.

Aquí, el penetration testing desempeña su labor más importante: en primer lugar, revisa los sistemas con mayor dedicación que una comprobación de seguridad común y, por otro lado, tiene como objetivo fundamental comprobar la interacción de los componentes individuales. Si incluyes un pentester externo, obtendrás un punto de vista adicional y una perspectiva diferente acerca del concepto de seguridad subyacente. Los pentester profesionales están especialmente capacitados y proceden de manera similar a como lo haría un atacante. A menudo, los resultados muestran vulnerabilidades en tu red que, de otra manera, probablemente nunca hubieras descubierto.

Sin embargo, la cooperación con un comprobador externo también está asociada a ciertos riesgos. Debes partir de la base de que este obtendrá una visión de tu red interna durante la ejecución del test. Adicionalmente, siempre existe la posibilidad de que la prueba de penetración cause daños irreparables, incluso si la realizas tú mismo. Cabe resaltar que los pentests implementan diferentes medidas de seguridad que se ejecutan de fondo durante todo el día y que, por lo tanto, conllevan la desventaja de que solo proporcionan una impresión instantánea de tus sistemas de red. Como consecuencia, no es recomendable fundamentar una estructura de seguridad sobre la base de pruebas de penetración, ni tampoco renunciar a los mecanismos tradicionales de seguridad.

Por último, la llamada ingeniería social no forma parte de los riesgos que comprobaría una prueba de penetración clásica. Muchos proveedores de servicios ofrecen la verificación de las vulnerabilidades humanas en las empresas, incluyendo, opcionalmente, formación especializada.

Cifrado Red Seguridad