complete penetration testing guide with sample test cases
Es el proceso para identificar vulnerabilidades de seguridad en una aplicación mediante la evaluación del sistema o la red con varias técnicas maliciosas. Los puntos débiles de un sistema se explotan en este proceso mediante un ataque simulado autorizado.
El propósito de esta prueba es proteger datos importantes de personas externas, como piratas informáticos, que pueden tener acceso no autorizado al sistema. Una vez que se identifica la vulnerabilidad, se utiliza para explotar el sistema y obtener acceso a información confidencial.
Una prueba de penetración también se conoce como prueba de penetración y un probador de penetración también se conoce como pirata informático ético.
Lo que vas a aprender:
- ¿Qué son las pruebas de penetración?
- Causas de las vulnerabilidades
- Empresas y herramientas de prueba de penetración
- Herramientas recomendadas para pruebas de penetración
- Compañía recomendada para pruebas de penetración
- ¿Por qué pruebas de penetración?
- ¿Qué se debe probar?
- Tipos de pruebas de penetración
- Técnicas de prueba de la pluma
- Prueba de penetración Casos de prueba de muestra (escenarios de prueba)
- Conclusión
¿Qué son las pruebas de penetración?
Podemos descubrir las vulnerabilidades de un sistema informático, una aplicación web o una red mediante pruebas de penetración.
Una prueba de penetración indica si las medidas defensivas existentes empleadas en el sistema son lo suficientemente fuertes como para evitar violaciones de seguridad. Los informes de las pruebas de penetración también sugieren las contramedidas que se pueden tomar para reducir el riesgo de que el sistema sea pirateado.
Causas de las vulnerabilidades
- Errores de diseño y desarrollo : Puede haber fallas en el diseño de hardware y software. Estos errores pueden poner los datos críticos de su negocio en riesgo de exposición.
- Mala configuración del sistema : Ésta es otra causa de vulnerabilidad. 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 : Los factores humanos, como la eliminación inadecuada de documentos, dejar los documentos desatendidos, errores de codificación, amenazas internas, compartir contraseñas en sitios de phishing, etc., pueden provocar violaciones de seguridad.
- Conectividad : Si el sistema está conectado a una red no segura (conexiones abiertas), entonces 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 funciones tenga un sistema, más posibilidades tendrá de ser 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. Las contraseñas no deben compartirse con nadie a ningún costo y las contraseñas deben cambiarse periódicamente. A pesar de estas instrucciones, a veces las personas revelan sus contraseñas a otras personas, las escriben en algún lugar y mantienen contraseñas fáciles de adivinar.
- Entrada del usuario : Debe haber oído hablar de la inyección SQL, los desbordamientos de búfer, etc. Los datos recibidos electrónicamente a través de estos métodos se pueden utilizar para atacar el sistema de recepción.
- 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, se induce la vulnerabilidad en el sistema.
- Falta de formación del personal : Esto conduce a errores humanos y otras vulnerabilidades.
- Comunicación : Canales como redes móviles, Internet, teléfono abren la posibilidad de robo de seguridad.
Empresas y herramientas de prueba de penetración
Se pueden utilizar herramientas automatizadas 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 seguridad. Las herramientas de Pentest pueden verificar las lagunas de seguridad presentes en el sistema examinando las técnicas de cifrado de datos y descubriendo valores codificados como el nombre de usuario y la contraseña.
Criterios para seleccionar la mejor herramienta de penetración:
- Debe ser fácil de implementar, configurar y usar.
- Debería escanear su sistema fácilmente.
- Debe categorizar las vulnerabilidades según la gravedad que necesita una solución inmediata.
- Debería poder automatizar la verificación de vulnerabilidades.
- Debería volver a verificar las vulnerabilidades encontradas anteriormente.
- Debe generar informes y registros detallados de vulnerabilidades.
Una vez que sepa qué pruebas necesita realizar, puede capacitar a sus recursos internos de prueba o contratar consultores expertos para que realicen la tarea de penetración por usted.
Herramientas recomendadas para pruebas de penetración
# 1) Acunetix
Acunetix WVS ofrece tanto a los profesionales de la seguridad como a los ingenieros de software una gama de características asombrosas en un paquete sencillo, directo y muy sólido.
=> Pruebe la mejor herramienta de prueba de lápiz aquí
# 2) Intruso
Intruso es un potente escáner de vulnerabilidades que encuentra debilidades de ciberseguridad en su patrimonio digital, explica los riesgos y ayuda a solucionarlos antes de que se produzca una infracción. Es la herramienta perfecta para ayudar a automatizar sus esfuerzos de pruebas de penetración.
Características clave :
- Más de 9.000 comprobaciones automatizadas en toda su infraestructura de TI.
- Comprobaciones de la infraestructura y de la capa web, como la inyección de SQL y las secuencias de comandos entre sitios.
- Analiza automáticamente sus sistemas cuando se descubren nuevas amenazas.
- Múltiples integraciones: AWS, Azure, Google Cloud, API, Jira, Teams y más.
- Intruder ofrece una prueba gratuita de 30 días de su plan Pro.
Compañía recomendada para pruebas de penetración
# 1) ImmuniWeb®
ImmuniWeb® es una empresa de pruebas de penetración con sede en Ginebra, Suiza. Su plataforma de pruebas 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 procesables.
ImmuniWeb ofrece pruebas integrales 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.
Características clave:
- Detección continua de nuevos códigos.
- Pruebas manuales rápidas y rentables.
- Capacidades de parcheo virtual con un clic.
- Acceso 24/7 a analistas de seguridad.
- Integración DevSecOps y CI / CD.
- Pedido instantáneo y entrega rápida.
- Tablero de instrumentos multifunción.
Otras herramientas gratuitas:
Servicios comerciales:
También puede consultar la siguiente lista disponible en STH que habla sobre 37 poderosas herramientas de prueba de penetración => Potentes herramientas de prueba de penetración para cada probador de penetración
cómo abrir archivos binarios en Windows
¿Por qué pruebas de penetración?
Debe haber oído hablar del ataque de ransomware WannaCry que comenzó en mayo de 2017. Bloqueó más de 2 lakh de computadoras en todo el mundo y exigió pagos de rescate en la criptomoneda Bitcoin. Este ataque ha afectado a muchas grandes organizaciones de todo el mundo.
Con estos ciberataques masivos y peligrosos que ocurren en estos días, se ha vuelto inevitable realizar pruebas de penetración a intervalos regulares para proteger los sistemas de información contra violaciones de seguridad.
Por lo tanto, las pruebas de penetración se requieren principalmente para:
- Los datos financieros o críticos deben protegerse mientras se transfieren entre diferentes sistemas o en la red.
- Muchos clientes solicitan pruebas de lápiz como parte del ciclo de lanzamiento del software.
- Para proteger los datos del usuario.
- Para encontrar vulnerabilidades de seguridad en una aplicación.
- Descubrir lagunas en el sistema.
- Evaluar el impacto empresarial de los ataques exitosos.
- Cumplir con el cumplimiento de la seguridad de la información en la organización.
- Implementar una estrategia de seguridad efectiva en la organización.
Cualquier organización necesita identificar los 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 mayores preocupaciones en la actualidad.
Imagínese si cualquier pirata informático logra obtener detalles de usuario de un sitio de redes sociales como Facebook. La organización puede enfrentar problemas legales debido a una pequeña laguna en un sistema de software. Por lo tanto, las grandes organizaciones buscan certificaciones de cumplimiento de PCI (industria de tarjetas de pago) antes de hacer negocios con clientes externos.
¿Qué se debe probar?
- Software (sistema operativo, servicios, aplicación)
- Hardware
- Red
- Procesos
- Comportamiento del usuario final
Tipos de pruebas de penetración
# 1) Prueba de ingeniería social: En esta prueba, se intenta 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 están dirigidas a determinados servicios de asistencia técnica, empleados y procesos.
Los errores humanos son las principales causas de 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 la 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.
# 2) Prueba de aplicación web: Usando 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.
# 3) Prueba de penetración física: Se aplican sólidos métodos de seguridad física para proteger los datos confidenciales. Esto se usa generalmente en instalaciones militares y gubernamentales. Todos los dispositivos de red físicos y puntos de acceso se prueban para detectar las posibilidades de cualquier violación de seguridad. Esta prueba no es muy relevante para el alcance de las pruebas de software.
# 4) Prueba de servicios de red : Esta es una de las pruebas de penetración que se realizan con más frecuencia, en la que se identifican las aberturas en la red mediante la entrada que se está haciendo en los sistemas de la red para verificar qué tipo de vulnerabilidades existen. Se puede realizar de forma local o remota.
# 5) Prueba del lado del cliente : Tiene como objetivo buscar y explotar vulnerabilidades en programas de software del lado del cliente.
# 6) Dial de guerra de acceso telefónico remoto : Busca módems en el entorno e intenta iniciar sesión en los sistemas conectados a través de estos módems adivinando contraseñas o mediante la fuerza bruta.
# 7) Prueba de seguridad inalámbrica : 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 categorizar los tipos de pruebas de penetración. También podemos organizar los tipos de pruebas de penetración en tres partes, como se muestra a continuación:
Analicemos estos enfoques de prueba uno por uno:
- Prueba de penetración de caja negra : En este enfoque, el evaluador evalúa el sistema, la red o el proceso de destino sin el conocimiento de sus detalles. Solo tienen un nivel muy alto de entradas, como URL o nombre de la empresa, con las que penetran en el entorno de destino. No se examina ningún código en este método.
- Prueba de penetración de caja blanca : En este enfoque, el probador está equipado con detalles completos sobre el entorno de destino: 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 a la seguridad interna.
- Prueba de penetración de caja gris : En este enfoque, el evaluador tiene detalles limitados sobre el entorno de destino. Es una simulación de ataques de seguridad externos.
Técnicas de prueba de la pluma
- Prueba de penetración manual
- Usando herramientas de prueba de penetración automatizadas
- Combinación de proceso manual y automatizado
El tercer proceso es más común para identificar todo tipo de vulnerabilidades.
Prueba de penetración manual
Es difícil encontrar todas las vulnerabilidades con herramientas automatizadas. Hay algunas vulnerabilidades que se pueden identificar solo mediante escaneo manual. Los probadores de penetración pueden realizar mejores ataques en aplicaciones en función de sus habilidades y conocimiento del sistema que se está penetrando.
Los métodos como la ingeniería social solo pueden ser realizados por humanos. La verificación manual incluye el diseño, la lógica empresarial y la verificación del código.
Proceso de prueba de penetración:
Analicemos el proceso real que siguen las agencias de pruebas o los probadores de penetración. Identificar las vulnerabilidades presentes en el sistema es el primer paso importante en este proceso. Se toman acciones correctivas sobre esta vulnerabilidad y se repiten las mismas pruebas de penetración hasta que el sistema es negativo a todas esas pruebas.
Podemos categorizar 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 utilizar la técnica de análisis del código fuente de la página web para obtener más información sobre el sistema, el software y las versiones de los 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: Según los datos recopilados en el primer paso, se puede encontrar la debilidad de seguridad en el sistema de destino. Esto ayuda a los probadores 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 al sistema objetivo. Los probadores de penetración experimentados pueden usar sus habilidades para lanzar un ataque al sistema.
# 4) Resultado del análisis y preparación del informe: Después de completar las pruebas de penetración, se preparan informes detallados para tomar acciones 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.
Prueba de penetración Casos de prueba de muestra (escenarios de prueba)
Recuerde que esto no es una prueba funcional. En Pentest su objetivo es encontrar agujeros de seguridad en el sistema. A continuación se muestran algunos casos de prueba genéricos y no necesariamente aplicables a todas las aplicaciones.
- Compruebe si la aplicación web puede identificar ataques de spam en los formularios de contacto utilizados en el sitio web.
- Servidor proxy: compruebe si los dispositivos proxy supervisan el tráfico de red. 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: verifique si el tráfico de correo electrónico entrante y saliente se filtra y los correos electrónicos no solicitados están bloqueados.
- 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 los encabezados, el asunto o el cuerpo de los correos electrónicos.
- Cortafuegos: asegúrese 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. Un firewall puede evitar el envío de datos fuera de la red sin su permiso.
- Intente explotar todos los servidores, sistemas de escritorio, impresoras y dispositivos de red.
- Verifique que todos los nombres de usuario y contraseñas estén encriptados y transferidos a través de conexiones seguras como https.
- Verifique la información almacenada en cookies del sitio web . No debe estar en un formato legible.
- Verifique las vulnerabilidades encontradas anteriormente para verificar si la solución está funcionando.
- Verifique si no hay ningún puerto abierto en la red.
- Verifique todos los dispositivos telefónicos.
- Verifique la seguridad de la red WIFI.
- Verifique todos los métodos HTTP. Los métodos PUT y Delete no deben habilitarse en un servidor web.
- Verifique 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 como 'admin' o 'administrador'.
- La página de inicio de sesión de la aplicación debe bloquearse ante 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'.
- Verifique si los caracteres especiales, las etiquetas HTML y los scripts se manejan correctamente como un valor de entrada.
- Los detalles internos del sistema no deben revelarse en ninguno de los mensajes de error o alerta.
- Los mensajes de error personalizados deben mostrarse a los usuarios finales en caso de que una página web se bloquee.
- Verifique el uso de entradas de registro. La información confidencial no debe mantenerse en el registro.
- Todos los archivos deben escanearse antes de cargarlos en el servidor.
- Los datos confidenciales no deben pasarse en URL mientras se comunica 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.
- Verifique todos los campos de entrada con una cadena de entrada larga con y sin espacios.
- Verifique si la función de restablecimiento de contraseña es segura.
- Verificar aplicación para Inyección SQL .
- Verificar aplicación para Secuencias de comandos entre sitios .
- Las validaciones de entrada importantes deben realizarse en el lado del servidor en lugar de las comprobaciones de JavaScript en el lado del cliente.
- Los recursos críticos del sistema deben estar disponibles solo para personas y servicios autorizados.
- Todos los registros de acceso deben mantenerse con los permisos de acceso adecuados.
- Verifique que la sesión del usuario finalice al cerrar la sesión.
- Verifique que la exploración de directorios esté deshabilitada en el servidor.
- Verifique que todas las aplicaciones y versiones de la base de datos estén actualizadas.
- Verifique la manipulación de URL para comprobar si una aplicación web no muestra información no deseada.
- Verifique la pérdida de memoria y el desbordamiento del búfer.
- Verifique si se analiza el tráfico de red entrante para encontrar ataques de troyanos.
- Verifique si el sistema está a salvo de ataques de fuerza bruta, un método de prueba y error para encontrar información confidencial como contraseñas.
- Verifique si el sistema o la red están protegidos contra ataques DoS (denegación de servicio). El pirata informático puede apuntar a una red o una sola computadora con solicitudes continuas debido a que los recursos en el sistema de destino se sobrecargan, lo que resulta en la denegación de servicio para solicitudes legítimas.
- Verifique la aplicación para ataques de inyección de scripts HTML.
- Verifique 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,
- Suplantación de ARP, suplantación de referencias, suplantación de identidad de llamadas, envenenamiento de redes de intercambio de archivos, suplantación de GPS.
- Compruebe 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 ella.
- Verificar ataque de inyección XML: se utiliza para alterar la lógica prevista de la aplicación.
- Verificar contra ataques de canonicalización.
- Verifique si las páginas de error muestran información que pueda ser útil para que un pirata informático ingrese al sistema.
- Verifique si algún dato crítico como la contraseña está almacenado en archivos secretos en el sistema.
- Verifique si la aplicación devuelve más datos de los necesarios.
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 realizar manualmente o con la ayuda de herramientas de automatización.
Otras lecturas:
Estándares de prueba de penetración
- PCI DSS (Estándar de seguridad de datos de la industria de tarjetas de pago)
- OWASP (Proyecto de seguridad de aplicaciones web abiertas)
- ISO / IEC 27002 , OSSTMM (El Manual de metodología de pruebas de seguridad de código abierto)
Certificaciones
- GPEN
- Probador de seguridad asociado ( AST )
- Probador de seguridad senior (SST)
- Probador de penetración certificado ( CPT )
Conclusión
Finalmente, como probador de penetración, debe recopilar y registrar todas las vulnerabilidades en el sistema. No ignore ningún escenario teniendo en cuenta que los usuarios finales no lo ejecutarán.
Uy concepto en c # con ejemplo
Si es un probador de penetración, ayude a nuestros lectores con su experiencia, consejos y casos de prueba de muestra sobre cómo realizar las pruebas de penetración de manera efectiva.
Lectura recomendada
- 19 potentes herramientas de prueba de penetración utilizadas por profesionales en 2021
- Guía para principiantes sobre pruebas de penetración de aplicaciones web
- Pruebas alfa y beta (una guía completa)
- Pruebas de seguridad de red y las mejores herramientas de seguridad de red
- Guía de pruebas de seguridad de aplicaciones web
- Guía completa de pruebas de verificación de compilación (pruebas de BVT)
- Pruebas funcionales versus pruebas no funcionales
- Mejores herramientas de prueba de software 2021 (Herramientas de automatización de pruebas de control de calidad)