Durante la última década los entornos tecnológicos basados en servicios en la nube se han convertido en piezas clave dentro de las compañías que, cada vez más, trasladan sus servicios y/o sistemas a proveedores de este tipo de servicios.
El Test de Intrusión de entornos Cloud cubre la necesidad de actuaciones externas de seguridad, contemplando las particularidades tecnologías, limitaciones y consideraciones que deben tenerse en cuenta cuando se llevan a cabo en los servicios en la nube simulando la acción de un atacante que quisiera vulnerar servicios, aplicaciones o componentes siempre utilizando para ello las herramientas y metodologías utilizadas por los hackers, pero de forma ética.
En Internet Security Auditors aportamos las soluciones de seguridad más adecuadas a todos los ámbitos de los Sistemas de Información, siendo los proyectos de auditoría basados en Hacking Ético uno de ellos.
La mejor manera de hacer esta evaluación de la seguridad es realizando ataques controlados sobre los sistemas. Se pueden llevar a cabo tanto de forma remota (desde las instalaciones de Internet Security Auditors), como desde las instalaciones del cliente, dependiendo de los objetivos buscados y el ámbito de la auditoría.
Durante la ejecución de un Test de Intrusión, existen distintas fases que deben llevarse a cabo. Cada una de ellas requiere múltiples actuaciones y consideraciones. Los siguientes apartados contemplan cada una de dichas fases y se describe la guía de actuación.
Un Test de Intrusión se compone de las siguientes fases:
Para realizar estos ataques se utilizarán tanto técnicas, como herramientas de hacking. Las herramientas serán las mismas que las utilizadas en el mundo underground por los propios hackers para realizar los ataques, así como herramientas creadas por el equipo técnico de Internet Security Auditors para realizar los Test de Intrusión y, que han sido elaboradas a partir de las pautas definidas en los estándares OSSTMM, ISSAF PTES.
Identificación de servicios, sistemas operativos y componentes de red:
- Enumeración e identificación de hosts vivos.
- Escaneo de puertos e identificación de su estado (abierto, cerrado, filtrado).
- Identificación de protocolos.
- Identificación de plataforma y versión instalada en los servicios que corren en cada uno de los puertos abiertos.
- Identificación de plataforma y versión de sistema operativo.
Análisis de actualizaciones:
- Identificación de versiones instaladas en los diferentes sistemas.
- Escaneo de puertos e identificación de su estado (abierto, cerrado, filtrado).
- Búsqueda de vulnerabilidades que puedan afectar a las versiones detectadas.
- Explotación manual de las vulnerabilidades.
Análisis de configuraciones:
- Detección e identificación del uso de parámetros por defecto
en la configuración. - Detección de opciones de depuración habilitadas.
- Detección de configuraciones deficientes.
- Uso de credenciales de acceso por defecto.
- Explotación manual de las vulnerabilidades.
Análisis de los sistemas de autenticación:
- Identificación de todos los servicios que utilicen algún tipo de autenticación.
- Validación de transmisión de credenciales por un canal cifrado.
- Validación de la existencia de mecanismo de bloqueo de cuentas.
- Identificación de medidas contra ataques automáticos.
- Verificación de la no existencia de contraseñas por defecto o contraseñas débiles.
Recopilación de información:
- Búsqueda de información en Internet.
- Identificación de plataformas.
- Búsquedas de robots.txt y humans.txt.
- Fugas de información en la aplicación.
- Identificación de puntos de entrada a la aplicación.
Análisis de los sistemas de autenticación:
- Identificación de todos los servicios que utilicen algún tipo de autenticación.
- Validación de transmisión de credenciales por un canal cifrado.
- Validación de la existencia de mecanismo de bloqueo de cuentas.
- Identificación de medidas contra ataques automáticos.
- Validación del proceso de recuperación de credenciales.
- Evasión del sistema de autenticación.
- Verificación de la no existencia de contraseñas por defecto o contraseñas débiles.
Análisis de la configuración en la infraestructura:
- Identificación de herramientas de administración.
- Verificación de credenciales por defecto.
- Identificación de recursos de ejemplo.
- Identificación de ficheros de backup y no referenciados.
- Identificación de métodos HTTP soportados.
- Identificación de cabecera HSTS (HTTP Strict Transport Security).
- Identificación de mecanismos de protección anti-clickjacking.
Análisis de la gestión de la identidad:
- Verificación de la política de acceso definida por la aplicación para cada rol existente.
- Validación del proceso de registro de usuarios.
- Verificación de cuentas de usuario predecibles.
- Validación de la posibilidad de enumerar cuentas de usuario.
Análisis de la autorización:
- Identificación de vulnerabilidades de tipo path traversal.
- Identificación de vulnerabilidades de tipo RFI (remote file inclusion).
- Validar la evasión del esquema de autorización.
- Validar referencias inseguras directas a objetos.
Análisis de la gestión de sesiones:
- Identificar cookies utilizadas por la aplicación.
- Realizar un análisis de los tokens de sesión.
- Verificación de los atributos de las cookies.
- Validación de la existencia de cookies persistentes.
- Validar funcionalidad de logout.
- Validar que la sesión expira tras un tiempo prudencial por inactividad.
- Validación de vulnerabilidad de tipo Fijación de Sesión.
- Validar exposición de variables de sesión.
- Validación de vulnerabilidad de tipo CSRF.
Análisis de la validación de datos:
- Verificar que existe un mecanismo centralizado de validación de datos.
- Confirmar que la aplicación valida correctamente los datos antes de ser utilizados.
- Verificar la no existencia de vulnerabilidades como SQL Injection o Cross-Site Scripting.
Análisis de la gestión de errores:
- Generar escenarios de error no controlados.
- Analizar mensajes de error en busca de fugas de información.
- Analizar stack traces.
Análisis de criptografía débil:
- Validar que no se transmite información sensible en claro.
- Validar que no se utilizan cifrados débiles.
- Validar que los protocolos débiles se encuentran deshabilitados.
- Validar que las renegociaciones SSL/TLS inseguras se encuentran deshabilitadas.
- Validar que no se utiliza MD5 (collision attacks).
- Validar que no se utiliza RC4 (crypto-analitical attacks).
- Validar que el servidor está protegido frente al ataque BEAST.
- Validar que el servidor está protegido frente al ataque CRIME.
- Validar que el servidor está protegido frente al ataque POODLE.
- Verificar validez del certificado SSL.