Threat Modeling
Modelado de Amenazas
¡Bienvenido a la guía completa de HackTricks sobre el Modelado de Amenazas! Emprende una exploración de este aspecto crítico de la ciberseguridad, donde identificamos, entendemos y diseñamos estrategias contra posibles vulnerabilidades en un sistema. Este hilo sirve como una guía paso a paso repleta de ejemplos del mundo real, software útil y explicaciones fáciles de entender. Ideal tanto para novatos como para profesionales experimentados que buscan fortalecer sus defensas de ciberseguridad.
Escenarios Comúnmente Usados
Desarrollo de Software: Como parte del Ciclo de Vida de Desarrollo de Software Seguro (SSDLC), el modelado de amenazas ayuda a identificar posibles fuentes de vulnerabilidades en las primeras etapas del desarrollo.
Pruebas de Penetración: El estándar de ejecución de pruebas de penetración (PTES) requiere modelado de amenazas para entender las vulnerabilidades del sistema antes de llevar a cabo la prueba.
Modelo de Amenazas en Resumen
Un Modelo de Amenazas se representa típicamente como un diagrama, imagen u otra forma de ilustración visual que muestra la arquitectura planificada o la construcción existente de una aplicación. Se asemeja a un diagrama de flujo de datos, pero la distinción clave radica en su diseño orientado a la seguridad.
Los modelos de amenazas a menudo presentan elementos marcados en rojo, simbolizando posibles vulnerabilidades, riesgos o barreras. Para agilizar el proceso de identificación de riesgos, se emplea el triángulo CIA (Confidencialidad, Integridad, Disponibilidad), que forma la base de muchas metodologías de modelado de amenazas, siendo STRIDE una de las más comunes. Sin embargo, la metodología elegida puede variar según el contexto y los requisitos específicos.
El Triángulo CIA
El Triángulo CIA es un modelo ampliamente reconocido en el campo de la seguridad de la información, que representa Confidencialidad, Integridad y Disponibilidad. Estos tres pilares forman la base sobre la cual se construyen muchas medidas y políticas de seguridad, incluidas las metodologías de modelado de amenazas.
Confidencialidad: Asegurar que los datos o el sistema no sean accedidos por individuos no autorizados. Este es un aspecto central de la seguridad, que requiere controles de acceso apropiados, cifrado y otras medidas para prevenir filtraciones de datos.
Integridad: La precisión, consistencia y confiabilidad de los datos a lo largo de su ciclo de vida. Este principio asegura que los datos no sean alterados o manipulados por partes no autorizadas. A menudo implica sumas de verificación, hashing y otros métodos de verificación de datos.
Disponibilidad: Esto asegura que los datos y servicios sean accesibles para los usuarios autorizados cuando sea necesario. Esto a menudo implica redundancia, tolerancia a fallos y configuraciones de alta disponibilidad para mantener los sistemas en funcionamiento incluso frente a interrupciones.
Metodologías de Modelado de Amenazas
STRIDE: Desarrollado por Microsoft, STRIDE es un acrónimo de Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege. Cada categoría representa un tipo de amenaza, y esta metodología se utiliza comúnmente en la fase de diseño de un programa o sistema para identificar amenazas potenciales.
DREAD: Esta es otra metodología de Microsoft utilizada para la evaluación de riesgos de amenazas identificadas. DREAD significa Damage potential, Reproducibility, Exploitability, Affected users, and Discoverability. Cada uno de estos factores se puntúa, y el resultado se utiliza para priorizar las amenazas identificadas.
PASTA (Proceso para Simulación de Ataques y Análisis de Amenazas): Esta es una metodología de siete pasos, centrada en el riesgo. Incluye la definición e identificación de objetivos de seguridad, la creación de un alcance técnico, la descomposición de la aplicación, el análisis de amenazas, el análisis de vulnerabilidades y la evaluación de riesgos/triage.
Trike: Esta es una metodología basada en riesgos que se centra en defender activos. Comienza desde una perspectiva de gestión de riesgos y examina amenazas y vulnerabilidades en ese contexto.
VAST (Modelado de Amenazas Visual, Ágil y Simple): Este enfoque busca ser más accesible e integrarse en entornos de desarrollo ágil. Combina elementos de las otras metodologías y se centra en representaciones visuales de amenazas.
OCTAVE (Evaluación de Amenazas, Activos y Vulnerabilidades Críticos Operacionales): Desarrollado por el Centro de Coordinación CERT, este marco está orientado hacia la evaluación de riesgos organizacionales en lugar de sistemas o software específicos.
Herramientas
Hay varias herramientas y soluciones de software disponibles que pueden asistir en la creación y gestión de modelos de amenazas. Aquí hay algunas que podrías considerar.
Una avanzada GUI de múltiples características y multiplataforma para profesionales de ciberseguridad. Spider Suite se puede utilizar para el mapeo y análisis de la superficie de ataque.
Uso
Elige una URL y rastrea
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-9a30072dc008dea8ac9ecfd174d42da398148eb4%252Fthreatmodel_spidersuite_1.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=9d4a6fb3&sv=1)
Ver gráfico
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-677044160faf84b1e63ab8255d4a452da5f3230e%252Fthreatmodel_spidersuite_2.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=825c0ebe&sv=1)
Un proyecto de código abierto de OWASP, Threat Dragon es tanto una aplicación web como de escritorio que incluye diagramación de sistemas así como un motor de reglas para generar automáticamente amenazas/mitigaciones.
Uso
Crear nuevo proyecto
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-ecde927edd44271e11a799bbcea962996621cf96%252Fcreate_new_project_1.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=42c36344&sv=1)
A veces podría verse así:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-f553214e3d75e3e7b457920dcf65eac1ca652385%252F1_threatmodel_create_project.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=6b3a14c1&sv=1)
Lanzar nuevo proyecto
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-42059a6fbabd44d04ea984ce176daabe3237f17a%252Flaunch_new_project_2.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=782b19a&sv=1)
Guardar el nuevo proyecto
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-fe86fdc2007f36c3856d33760bd90281b8f05b25%252Fsave_new_project.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=28d1008b&sv=1)
Crea tu modelo
Puedes usar herramientas como SpiderSuite Crawler para inspirarte, un modelo básico podría verse algo así
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-aee249ee51278c3d613a529c1d90b5b72ab6d2e5%252F0_basic_threat_model.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=ee90359&sv=1)
Solo un poco de explicación sobre las entidades:
Proceso (La entidad misma como un servidor web o funcionalidad web)
Actor (Una persona como un visitante del sitio web, usuario o administrador)
Línea de flujo de datos (Indicador de interacción)
Frontera de confianza (Diferentes segmentos o ámbitos de red.)
Almacenar (Cosas donde se almacenan los datos, como bases de datos)
Crear una amenaza (Paso 1)
Primero debes elegir la capa a la que deseas agregar una amenaza
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-419d88e2e5d5284efe87a267c04dabf271ac4a5a%252F3_threatmodel_chose-threat-layer.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=cae1758e&sv=1)
Ahora puedes crear la amenaza
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-e00d3b127a6cb15be36c614b2f7d11f83fb8c194%252F4_threatmodel_create-threat.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=ccc4612e&sv=1)
Ten en cuenta que hay una diferencia entre amenazas de Actor y amenazas de Proceso. Si agregaras una amenaza a un Actor, solo podrás elegir "Spoofing" y "Repudiation". Sin embargo, en nuestro ejemplo, agregamos una amenaza a una entidad de Proceso, por lo que veremos esto en el cuadro de creación de amenazas:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-fe1cdc5637cb93910dcafe0d5578d8548ab227a0%252F2_threatmodel_type-option.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=d51a21b8&sv=1)
Listo
Ahora tu modelo terminado debería verse algo así. Y así es como haces un modelo de amenaza simple con OWASP Threat Dragon.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-7848461b12e88d93f02b089c1400ea40d4db5735%252Fthreat_model_finished.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=5abd75fb&sv=1)
Esta es una herramienta gratuita de Microsoft que ayuda a encontrar amenazas en la fase de diseño de proyectos de software. Utiliza la metodología STRIDE y es particularmente adecuada para aquellos que desarrollan en la pila de Microsoft.
Last updated