Test de intrusión

El test de intrusión es el proceso para identificar vulnerabilidades de seguridad en una aplicación evaluando el sistema o la red con diversas técnicas maliciosas. Los puntos débiles de un sistema se explotan en este proceso a través de un ataque simulado autorizado. También se conoce como prueba de penetración.

El propósito de esta prueba es asegurar datos importantes de personas externas como hackers que pueden tener acceso no autorizado al sistema. Una vez que se identifica la vulnerabilidad, se utiliza para explotar el sistema para obtener acceso a información confidencial.

Una prueba de penetración también se conoce como prueba de la pluma y un probador de penetración también se conoce como un hacker ético.

Vamos a explicar aquí en qué consiste el test de intrusión, los tipos y cómo realizarlos.

¿Qué es un test de intrusión?

Podemos descubrir las vulnerabilidades de un sistema informático, una aplicación web o una red mediante test de intrusión.

Una prueba de penetración indica si las medidas defensivas existentes empleadas en el sistema son lo suficientemente fuertes como para evitar cualquier violación de seguridad. Los informes de las pruebas de penetración también sugieren las contramedidas que se pueden tomar para reducir el riesgo de piratería del sistema.

Causas de vulnerabilidades

Los motivos por los que se producen vulnerabilidades en los sistemas son los siguientes:

  • Errores de diseño y desarrollo: Puede haber fallos en el diseño de hardware y software. Estos errores pueden poner sus datos críticos para el negocio en riesgo de exposición.
  • Mala configuración del sistema: Si el sistema está mal configurado, puede introducir lagunas a través de las cuales los atacantes pueden ingresar al sistema y robar la información.
  • Errores humanos: factores humanos como la eliminación inadecuada de documentos, dejar los documentos desatendidos, errores de codificación, compartir contraseñas en sitios de suplantación de identidad (phishing), etc. pueden conducir a infracciones de seguridad.
  • Conectividad: si el sistema está conectado a una red no segura está al alcance de los piratas informáticos.
  • Complejidad: la vulnerabilidad de seguridad aumenta en proporción a la complejidad de un sistema. Cuantas más características tenga un sistema, mayores serán las posibilidades de que el sistema sea atacado.
  • Contraseñas: las contraseñas se utilizan para evitar el acceso no autorizado. Deben ser lo suficientemente fuertes como para que nadie pueda adivinar su contraseña. No deben compartirse con nadie y deben cambiarse periódicamente. A pesar de estas instrucciones, a veces las personas revelan sus contraseñas a otros, las escriben en algún lugar y guardan contraseñas fáciles de adivinar.
  • Entrada del usuario: debes haber oído hablar de la inyección SQL, desbordamientos del búfer, etc. Los datos recibidos electrónicamente a través de estos métodos pueden usarse para atacar el sistema receptor.
  • Administración: la seguridad es difícil y costosa de administrar. A veces las organizaciones carecen de una gestión adecuada de riesgos y, por lo tanto, la vulnerabilidad se induce en el sistema.
  • Falta de capacitación para el personal: esto conduce a errores humanos y otras vulnerabilidades.
  • Comunicación: canales como redes móviles, Internet, teléfono abren el alcance del robo de seguridad.

¿Para qué sirve un test de intrusión?

Todos hemos oído hablar del ataque de ransomware WannaCry que comenzó en mayo de 2017. Bloqueó más de 2 computadoras lakh en todo el mundo y exigió pagos de rescate en la criptomoneda Bitcoin. Este ataque ha afectado a muchas organizaciones grandes en todo el mundo.

Con estos ciberataques masivos y peligrosos que ocurren en estos días, es inevitable hacer pruebas de penetración a intervalos regulares para proteger los sistemas de información contra las brechas de seguridad.

Por lo tanto, las pruebas de penetración se requieren principalmente para:

  • Proteger los datos financieros o críticos mientras se transfieren entre diferentes sistemas o a través de la red.
  • Muchos clientes solicitan esas pruebas como parte del ciclo de lanzamiento del software.
  • Proteger los datos del usuario.
  • Encontrar vulnerabilidades de seguridad en una aplicación.
  • Descubrir lagunas en el sistema.
  • Evaluar el impacto empresarial de los ataques exitosos.
  • Cumplir con la política de seguridad de la información en la organización.
  • Implementar una estrategia de seguridad efectiva en la organización.

Cualquier organización necesita identificar problemas de seguridad presentes en la red interna y las computadoras. El uso de esta organización de información puede planificar una defensa contra cualquier intento de piratería. La privacidad del usuario y la seguridad de los datos son las principales preocupaciones hoy en día.

Imagínate si algún hacker logra obtener detalles del usuario de redes sociales como Facebook. La organización puede enfrentar problemas legales debido a una pequeña laguna que queda en un sistema de software. Por lo tanto, las grandes organizaciones están buscando certificaciones de cumplimiento PCI (industria de tarjetas de pago) antes de hacer negocios con clientes de terceros.

¿Qué debe probarse?

Lo que debe probarse en un test de intrusión es:

  • Software (sistema operativo, servicios, aplicación)
  • Hardware
  • Red
  • Procesos
  • Comportamiento del usuario final

Tipos de pruebas de penetración

Vamos a ver a continuación los principales tipos de pruebas de penetración.

Prueba de ingeniería social

En esta prueba, se están haciendo intentos para hacer que una persona revele información confidencial como contraseña, datos críticos para el negocio, etc. Estas pruebas se realizan principalmente a través del teléfono o Internet y se dirigen a ciertos servicios de asistencia, empleados y procesos .

Los errores humanos son las principales causas de la vulnerabilidad de la seguridad. Todos los miembros del personal deben seguir las normas y políticas de seguridad para evitar intentos de penetración de ingeniería social. Un ejemplo de estos estándares incluye no mencionar ninguna información confidencial en el correo electrónico o la comunicación telefónica. Se pueden realizar auditorías de seguridad para identificar y corregir fallas del proceso.

Prueba de aplicación web

Utilizando métodos de software, se puede verificar si la aplicación está expuesta a vulnerabilidades de seguridad. Comprueba la vulnerabilidad de seguridad de las aplicaciones web y los programas de software ubicados en el entorno de destino.

Prueba de penetración física

Se aplican fuertes métodos de seguridad física para proteger los datos confidenciales. Esto se usa generalmente en instalaciones militares y gubernamentales. Deben probarse todos los dispositivos de red físicos y puntos de acceso para localizar cualquier fallo que pueda originar una violación de seguridad. Esta prueba no es muy relevante para el alcance de las pruebas de software.

Prueba de servicios de red

Esta es una de las pruebas de penetración más efectuada donde se identifican los fallos en la red a través de la entrada que se realiza en los sistemas de la red para verificar qué tipo de vulnerabilidades hay. Se puede hacer de forma local o remota.

Prueba del lado del cliente

Su objetivo es buscar y explotar vulnerabilidades en los programas de software del lado del cliente.

Dial de guerra de marcación remota

Busca módems en el entorno e intenta iniciar sesión en los sistemas conectados a través de estos módems mediante adivinación de contraseña o forzamiento bruto.

Prueba de seguridad inalámbrica

Esta prueba descubre los puntos de acceso o redes Wi-Fi abiertos, no autorizados y menos seguros y se conecta a través de ellos.

Las 7 categorías anteriores que hemos visto son una forma de clasificar los tipos de pruebas de pluma. También podemos organizar los tipos de pruebas de penetración en tres partes como se ve a continuación.

Prueba de penetración de caja negra

En este enfoque, el probador evalúa el sistema, red o proceso objetivo sin el conocimiento de sus detalles. Simplemente tienen un nivel muy alto de entradas como URL o nombre de la empresa que utilizan para penetrar en el entorno de destino. No se está examinando ningún código en este método.

Prueba de penetración de la caja blanca

Aquí, el probador está equipado con detalles completos sobre el entorno objetivo: sistemas, red, sistema operativo, dirección IP, código fuente, esquema, etc. Examina el código y descubre errores de diseño y desarrollo. Es una simulación de un ataque de seguridad interno.

Prueba de penetración de caja gris

En este enfoque, el probador tiene detalles limitados sobre el entorno objetivo. Es una simulación de ataques de seguridad externos.

¿Cómo realizar un test de intrusión?

Analicemos el proceso real seguido por las agencias de prueba o los probadores de penetración. Identificar las vulnerabilidades presentes en el sistema es el primer paso importante en este proceso. Se toman medidas correctivas sobre esta vulnerabilidad y se repiten las mismas pruebas de penetración hasta que el sistema sea negativo para todas esas pruebas.

Podemos clasificar este proceso en los siguientes métodos:

  1. Recopilación de datos: se utilizan varios métodos, incluida la búsqueda de Google, para obtener datos del sistema de destino. También se puede usar la técnica de análisis de código fuente de la página web para obtener más información sobre el sistema, el software y las versiones de complementos. Hay muchas herramientas y servicios gratuitos disponibles en el mercado que pueden brindarle información como nombres de bases de datos o tablas, versiones de bases de datos, versiones de software, el hardware utilizado y varios complementos de terceros utilizados en el sistema de destino.
  2. Evaluación de vulnerabilidad: en función de los datos recopilados en el primer paso, se puede encontrar la debilidad de seguridad en el sistema de destino. Esto ayuda a los evaluadores de penetración a lanzar ataques utilizando puntos de entrada identificados en el sistema.
  3. Explotación real: este es un paso crucial. Requiere habilidades y técnicas especiales para lanzar un ataque contra el sistema objetivo. Los probadores de penetración experimentados pueden usar sus habilidades para lanzar un ataque al sistema.
  4. Resultado en análisis y preparación de informes: después de completar las pruebas de penetración, se preparan informes detallados para tomar medidas correctivas. Todas las vulnerabilidades identificadas y los métodos correctivos recomendados se enumeran en estos informes. Puede personalizar el formato del informe de vulnerabilidad (HTML, XML, MS Word o PDF) según las necesidades de su organización.

Fases

La realización de una prueba de penetración en una organización implica tres pasos o fases, que son los siguientes.

Fase previa al ataque

En la fase previa al ataque, el equipo de pruebas de penetración investiga la red de la organización. En otras palabras, la fase previa al ataque implica el reconocimiento o la recopilación de datos.

El equipo de pruebas de penetración puede realizar escaneos de red para recopilar información valiosa no solo sobre el sistema operativo sino también sobre las aplicaciones que se ejecutan en el sistema. Hay dos tipos en la fase previa al ataque de la siguiente manera:

  • Reconocimiento activo: este tipo se refiere a la fase en la que la organización superior detecta la posibilidad.
  • Reconocimiento pasivo: se refiere a la fase que la organización objetivo no puede detectar y, por lo tanto, la persona responsable de las pruebas de penetración puede recopilar la máxima información posible.

Fase de ataque

En la fase de ataque, los hackers profesionales monitorean y prueban la seguridad de los sistemas y la red de la organización. Las herramientas usadas en esta fase son a veces explotivas y a veces sensibles. Las diversas actividades en esta fase son las siguientes

  • Prueba de perímetro: este tipo de prueba se realiza para verificar informes de errores y evaluar las reglas de filtrado de protocolos. Como Secure Shell (SSH), FTP y Talento. La persona responsable de penetrar el perímetro de una organización también debe probar el desbordamiento del búfer, la inyección de SQL, la validación de entrada incorrecta, la desinfección de salida aún más.
  • Pruebas de aplicaciones web diferentes: aquí se probará el objetivo para verificar si este es vulnerable a los ataques de desbordamiento del búfer. Estas actividades verifican si los servicios se pueden definir o no en caso de que los servicios prestados a los usuarios estén bloqueados.
  • Adquisición del objetivo: se refiere al conjunto de actividades que son más interferentes y desafiantes que escanear la red en busca de cualquier vulnerabilidad. También verifica si la política de seguridad se aplica correctamente en la organización o no.
  • Privilegios ascendentes: estas actividades se realizan para proporcionar una cuenta de usuario más conjunto de privilegios para el sistema en la red. Su objetivo principal es probar o verificar las herramientas de pirateo que son capaces de no solo explotar una vulnerabilidad en un sistema, sino también crear una nueva cuenta de usuario en un sistema con privilegios de administrador.

Fase posterior al ataque

En la fase posterior al ataque, el sistema se restaura a las configuraciones originales. Esto implica que los archivos, las entradas de registro y cualquier recurso compartido y conexión creados que se crearon en la fase de ataque previo o ataque se borran. Por lo tanto, las diversas acciones en la fase posterior al ataque son las siguientes

  • Eliminar cualquier archivo o herramienta que se haya cargado en el sistema durante las pruebas.
  • Eliminar o revertir cualquier cambio realizado en la configuración del registro.
  • Reservar cualquier cambio realizado en la lista de control de acceso.
  • Restaurar el sistema al estado en que se encontraba antes de comenzar los pasos de las pruebas de penetración.

Herramientas

Las herramientas automatizadas se pueden utilizar para identificar algunas vulnerabilidades estándar presentes en una aplicación. Las herramientas de Pentest escanean el código para verificar si hay un código malicioso presente que pueda conducir a una posible violación de la seguridad.

Estas herramientas pueden verificar las lagunas de seguridad presentes en el sistema examinando las técnicas de cifrado de datos y descubriendo valores codificados como nombre de usuario y contraseña.

Criterios para seleccionar la mejor herramienta de penetración:

  • Fácil de implementar, configurar y usar.
  • Debería escanear su sistema fácilmente.
  • Debe clasificar las vulnerabilidades en función de la gravedad que necesita una solución inmediata.
  • Tiene que poder automatizar la verificación de vulnerabilidades.
  • Ser capaz de volver a verificar las vulnerabilidades encontradas anteriormente.
  • Genere informes detallados de vulnerabilidad y registros.

Una vez que sepas qué pruebas necesitas realizar, puedes capacitar tus recursos de pruebas internas o contratar consultores expertos para que realicen la tarea de penetración por ti.

Las principales herramientas para realizar una prueba de penetración son:

Netsparker

Es un escáner automatizado preciso que identificará vulnerabilidades como la inyección SQL y las secuencias de comandos entre sitios en aplicaciones web y API web. Netsparker verifica de manera única las vulnerabilidades identificadas, demostrando que son reales y no falsos positivos.

Por lo tanto, no tiene que perder horas verificando manualmente las vulnerabilidades identificadas una vez que finaliza un análisis.

Está disponible como un software de Windows y un servicio en línea.

Acunetix

Es un escáner de vulnerabilidades web totalmente automatizado que detecta e informa sobre más de 4500 vulnerabilidades de aplicaciones web, incluidas todas las variantes de SQL Injection y XSS.

Complementa el papel de un probador de penetración al automatizar tareas que pueden tomar horas para probar manualmente, brindando resultados precisos sin falsos positivos a la máxima velocidad.

Acunetix es totalmente compatible con aplicaciones HTML5, JavaScript y de una sola página, así como con sistemas CMS. Incluye herramientas manuales avanzadas para probadores de penetración y se integra con los rastreadores de problemas y WAF populares.

Core Impact

Con más de 20 años en el mercado, Core Impact afirma tener la mayor variedad de exploits disponibles en el mercado, también le permiten ejecutar los exploits gratuitos de Metasploit dentro de su marco si faltan uno. Automatizan muchos procesos con asistentes, tienen una pista de auditoría completa que incluye comandos de PowerShell y pueden volver a probar un cliente simplemente reproduciendo la pista de auditoría.

Core escribe sus propios exploits de ‘grado comercial’ para garantizar la calidad y ofrecer soporte técnico tanto para esos exploits como para su plataforma.

Afirman ser el líder del mercado y solían tener un precio similar. Más recientemente, el precio ha bajado y tienen modelos apropiados para empresas y consultorías de seguridad.

Probely

Escanea tus aplicaciones web para encontrar vulnerabilidades o problemas de seguridad y proporciona orientación sobre cómo solucionarlos, teniendo en cuenta a los desarrolladores.

Probely no solo presenta una interfaz elegante e intuitiva, sino que también sigue un enfoque de desarrollo API-First, que proporciona todas las funciones a través de una API. Esto permite que Probely se integre en los canales de integración continua para automatizar las pruebas de seguridad.

Probely cubre OWASP TOP10 y miles de vulnerabilidades más. También se puede usar para verificar los requisitos específicos de PCI-DSS, ISO27001, HIPAA y RGPD.

Herramienta de prueba de penetración recomendada: Acunetix.

Acunetix WVS ofrece a los profesionales de seguridad e ingenieros de software por igual una gama de características sorprendentes en un paquete sencillo, directo y muy robusto.

Empresas

Las empresas recomendadas para realizar pruebas de penetración son:

  • ScienceSoft: es una reconocida empresa de consultoría de TI y desarrollo de software con uno de sus principales intereses en los servicios de seguridad cibernética. La compañía está equipada con 16 años de experiencia en la realización de pruebas de penetración de caja negra, caja blanca y caja gris de todos los componentes de la infraestructura de TI de diferente tamaño y complejidad. Puedes ponerte en contacto con el equipo de expertos de hackers éticos certificados de ScienceSoft para obtener ayuda con cualquier inquietud relacionada con la seguridad.
  • ImmuniWeb®: es una compañía de pruebas de penetración con sede en Ginebra, Suiza. Su plataforma de prueba de penetración de aplicaciones habilitada para DevSecOps combina humanos con inteligencia artificial y viene con cero SLA falso positivo, detección de vulnerabilidad más alta e informes accionables. Ofrece pruebas exhaustivas de penetración de aplicaciones de aplicaciones web y móviles internas y externas, API y servicios web, servidores de correo, dispositivos IoT y más.

Ejemplos de casos de prueba

En Pentest, tu objetivo es encontrar agujeros de seguridad en el sistema.

A continuación se presentan algunos casos de prueba genéricos y no necesariamente aplicables a todas las aplicaciones.

  • Comprueba si la aplicación web puede identificar ataques de spam en los formularios de contacto utilizados en el sitio web.
  • Servidor proxy: comprueba si el tráfico de red es monitoreado por dispositivos proxy. El servidor proxy dificulta que los piratas informáticos obtengan detalles internos de la red, protegiendo así el sistema de ataques externos.
  • Filtros de correo electrónico no deseado: verifica si el tráfico de correo electrónico entrante y saliente se filtra y se bloquean los correos electrónicos no solicitados.
  • Muchos clientes de correo electrónico vienen con filtros de spam incorporados que deben configurarse según sus necesidades. Estas reglas de configuración se pueden aplicar a encabezados de correo electrónico, asunto o cuerpo.
  • Cortafuegos: asegúrate de que toda la red o las computadoras estén protegidas con cortafuegos. Un firewall puede ser software o hardware para bloquear el acceso no autorizado a un sistema. También puede evitar el envío de datos fuera de la red sin su permiso.
  • Intenta explotar todos los servidores, sistemas de escritorio, impresoras y dispositivos de red.
  • Verifica que todos los nombres de usuario y contraseñas estén encriptados y transferidos a través de conexiones seguras como https.
  • Comprueba la información almacenada en las cookies del sitio web. No debe estar en un formato legible.
  • Comprueba si no hay un puerto abierto en la red.
  • Analiza todos los dispositivos telefónicos y la seguridad de la red WIFI.
  • Verifica todos los métodos HTTP. Los métodos PUT y Delete no deben habilitarse en un servidor web.
  • Examina si la contraseña cumple con los estándares requeridos. La contraseña debe tener al menos 8 caracteres y contener al menos un número y un carácter especial.
  • El nombre de usuario no debe ser «admin» o «administrador».
  • La página de inicio de sesión de la aplicación debe bloquearse con algunos intentos fallidos de inicio de sesión.
  • Los mensajes de error deben ser genéricos y no deben mencionar detalles de error específicos como «Nombre de usuario no válido» o «Contraseña no válida».
  • Examina si los caracteres especiales, las etiquetas HTML y las secuencias de comandos se manejan correctamente como valor de entrada.
  • Los detalles internos del sistema no deben revelarse en ninguno de los mensajes de error o alerta.
  • Deben mostrarse mensajes de error personalizados a los usuarios finales en caso de un bloqueo de la página web.
  • Analiza el uso de entradas de registro. La información confidencial no debe mantenerse en el registro.
  • Todos los archivos deben analizarse antes de cargarlos en el servidor.
  • Los datos confidenciales no deben pasarse en URL mientras se comunican con diferentes módulos internos de la aplicación web.
  • No debe haber ningún nombre de usuario o contraseña codificados en el sistema.
  • La funcionalidad de restablecimiento de contraseña debe ser segura.
  • Prueba la aplicación para inyección SQL y la aplicación para Cross-Site Scripting .
  • Las validaciones de entrada importantes se deben realizar en el lado del servidor en lugar de las comprobaciones de JavaScript en el lado del cliente.
  • Los recursos críticos en el sistema deben estar disponibles solo para personas y servicios autorizados.
  • Todos los registros de acceso deben mantenerse con los permisos de acceso adecuados.
  • La sesión del usuario debe finalizar al cerrar sesión.
  • La exploración del directorio debe estar deshabilitada en el servidor.
  • Todas las aplicaciones y versiones de la base de datos deben estar actualizadas.
  • Debes verificar la pérdida de memoria y el desbordamiento del búfer.
  • El tráfico entrante de la red debe examinarse para encontrar ataques troyanos.
  • El sistema debe estar a salvo de ataques de fuerza bruta, un método de prueba y error para encontrar información confidencial como contraseñas.
  • El sistema o la red deben estar protegidos contra ataques DoS (denegación de servicio). El ciberdelincuente puede apuntar a la red o un solo ordenador mediante solicitudes continuas ya que, al sobrecargarse los recursos en el sistema de destino, se produce la denegación de servicio para solicitudes legítimas.
  • La aplicación debe estar protegido contra ataques de inyección de script HTML y contra ataques COM y ActiveX.
  • Verificar contra ataques de suplantación de identidad. La suplantación de identidad puede ser de varios tipos: suplantación de direcciones IP, suplantación de identidad de correo electrónico, falsificación de ARP, falsificación de referencias, falsificación de identificador de llamadas, envenenamiento de redes de intercambio de archivos, falsificación de GPS.
  • Comprueba si hay un ataque de cadena de formato no controlado: un ataque de seguridad que puede hacer que la aplicación se bloquee o ejecute el script dañino en él.

Estos son solo los escenarios de prueba básicos para comenzar con Pentest. Hay cientos de métodos de penetración avanzados que se pueden hacer manualmente o con la ayuda de herramientas de automatización.