Penetration Testing Conceptos generales y situación actual A/S Rodrigo Guirado, CISA, CGEIT Senior Manager – Advisory Services [email protected] PwC Agenda / Contenido Motivación Definiciones Generales Usos Recomendados Definición de Escenarios Etapas Usuales Cambios en los Últimos Años Vulnerabilidades en Aplicativos Web Penetration Testing – Conceptos generales y situación actual Motivación Definiciones Generales Usos Recomendados Definición de Escenarios Etapas Usuales Cambios en los Últimos Años Vulnerabilidades en Aplicativos Web Motivación La práctica actual de Penetration Testing • Cada vez más considerada como “un recurso más” dentro de las tareas usuales de seguridad de una organización • Se está viendo como un requerimiento formal en muchos casos (e.g. normas PCI) • Ha adquirido un mayor grado de formalización en los últimos años (incluyendo publicación de códigos de ética asociados) • No obstante lo anterior, existen servicios de Penetration Testing de alcance muy diferente por lo cual es importante conocer sus diferencias y usos adecuados • Si bien en general las actualizaciones automáticas del software de base han mejorado (hasta cierto punto) la situación general en cuanto a vulnerabilidades de infraestructura, por otra parte las aplicaciones web (en muchos casos críticas) siguen presentando problemas graves Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 4 Penetration Testing – Conceptos generales y situación actual Motivación Definiciones Generales Usos Recomendados Definición de Escenarios Etapas Usuales Cambios en los Últimos Años Vulnerabilidades en Aplicativos Web Definiciones Generales Terminología • Penetration Testing - “Método para evaluar la seguridad de un sistema o red informática simulando un ataque de origen hostil” (Wikipedia) - “Una prueba de seguridad con un objetivo específico que termina cuando dicho objetivo se obtiene o se acaba el tiempo disponible” (OSSTMM – “Open Source Security Testing Methodology Manual”) - “Prueba de seguridad donde los evaluadores copian ataques reales para subvertir las funciones de seguridad de un aplicativo, sistema o red” (NIST – “National Institute of Standards and Technology”) • Lo más relevante a destacar es que un Penetration Testing es un conjunto de pruebas con el objetivo de detectar vulnerabilidades en un sistema – en otras palabras, nunca puede considerarse como una certificación de que un sistema es “seguro” o “inviolable” Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 6 Definiciones Generales Terminología • Variantes de Penetration Testing - “Black Box” / “Blind”: el consultor no cuenta con ninguna información del sistema/red que debe analizar - “White Box” / “Full Disclosure”: el consultor tiene acceso a toda la información (incluyendo datos internos, código fuente, etc.) del sistema/red que debe analizar - “Gray Box” / “Partial Disclosure”: cualquier caso intermedio a los anteriores (e.g. el consultor cuenta con un mapa de la red y los segmentos de direcciones relevantes, pero no con el código fuente de los aplicativos disponible) • En este caso es importante considerar que cada variante simula diferentes situaciones de la realidad y por lo tanto la elección de la variante correcta puede afectar significativamente el valor de la prueba Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 7 Penetration Testing – Conceptos generales y situación actual Motivación Definiciones Generales Usos Recomendados Definición de Escenarios Etapas Usuales Cambios en los Últimos Años Vulnerabilidades en Aplicativos Web Usos Recomendados ¿Cuándo utilizar un Penetration Testing? • Los dos conceptos principales a analizar son la adecuación de las técnicas para el objetivo de prueba específico y luego la relación costobeneficio • Algunas consideraciones sobre los Penetration Testing: - No son un reemplazo para una correcta revisión / auditoría de la configuración de cierta infraestructura - No analizan las prácticas operativas asociadas a determinado ambiente (que pueden acarrear sus propios problemas de seguridad) - Son acotados en el tiempo y reflejan la situación en un momento específico (“foto” de la realidad) - Las técnicas que puede aplicar el consultor posiblemente no puedan llegar hasta los límites de lo que haría un atacante Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 9 Usos Recomendados ¿Cuándo utilizar un Penetration Testing? • Los mejores usos para un Penetration Testing podrían incluir: - Confirmar / verificar los resultados de una revisión / auditoría de configuración - Cumplir con requerimientos internos / externos - Como alternativa más económica y rápida a una auditoría de código en aplicativos críticos • En cualquiera de los casos, es importante exigir en cualquier servicio de este tipo garantías al proveedor en cuanto a la privacidad de cualquier hallazgo y la ética del personal que trabajará en el proyecto • Para lograr adecuadamente los objetivos anteriores es importante definir adecuadamente la variante metodológica a utilizar según se mencionaba previamente (black/gray/white box) Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 10 Usos Recomendados Ventajas y desventajas de cada modalidad • Black Box - Ventajas • El consultor no recibe ninguna información ni acceso autorizado a los sistemas o aplicativos • Es típicamente el más rápido y barato de los servicios (en algunos casos, el servicio es enteramente automático) - Desventajas • Tiene la menor probabilidad de detectar vulnerabilidades • Es común que el foco sea exclusivamente la infraestructura y se ignoren los aplicativos • Simula solamente el “mejor caso” para la organización por lo cual puede generar un falso nivel de confianza Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 11 Usos Recomendados Ventajas y desventajas de cada modalidad • White Box - Ventajas • Tiene la mayor probabilidad de detectar vulnerabilidades • Suele incluir un foco importante en los aplicativos (donde usualmente se presentan más problemas) • Simula el “peor caso” para la organización lo cual ofrece un nivel importante de confianza - Desventajas • Tiene una duración mayor (más horas de consultor en comparación a herramientas automáticas) y mayor costo • Requiere de un nivel importante de confianza en el consultor que va a recibir todos los detalles de la instalación Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 12 Usos Recomendados Ventajas y desventajas de cada modalidad • Gray Box - Según las características particulares del proyecto, se combinan las ventajas y desventajas de los dos casos anteriores - Si los escenarios de prueba son definidos adecuadamente, es en general la modalidad que ofrece la mejor relación costo-beneficio, dado que para cada vulnerabilidad detectada se puede estimar qué atacantes tendrían mayor probabilidad de explotarla y de este modo definir un plan preventivo razonable - Debería ser la primer modalidad a considerar al solicitar un servicio de Penetration Testing (excepto que existan argumentos de gran peso para elegir una de las otras) Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 13 Penetration Testing – Conceptos generales y situación actual Motivación Definiciones Generales Usos Recomendados Definición de Escenarios Etapas Usuales Cambios en los Últimos Años Vulnerabilidades en Aplicativos Web Definición de Escenarios Aspectos básicos a considerar Determinar blancos Analizar agentes y amenazas y métodos Definir pruebas Determinar Pruebas de motivación Determinar blancos Acceso Externo Seleccionar Determinar medio Escenario Determinar agentes de ataque Macro Pruebas Pruebas de Acceso Interno Determinar Oportunidades Pruebas de plataformas específicas Pruebas sobre Aplicaciones Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 15 Definición de Escenarios Aspectos básicos a considerar • Agentes - En general es difícil prever quien puede ser el agente que ejecute un determinado ataque aunque dependiendo de las operaciones de la organización se pueden hacer suposiciones - Es preferible siempre asumir que el atacante cuenta con conocimientos significativos (particularmente si en el análisis previo no se logró acotar demasiado la lista de posibles agentes) - Es importante recordar que los agentes internos a una organización son en general los responsables del mayor porcentaje de ataques efectivos Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 16 Definición de Escenarios Aspectos básicos a considerar • Objetivo - Algunos posibles objetivos (que suelen requerir diferentes niveles de acceso / compromiso de la instalación) incluyen: • “Defacing” (dañar la imagen del sitio como protesta o demostración de habilidades) • Denegación de servicios (como protesta o para crear una disrupción en las operaciones de un competidor) • Obtención de información sensitiva (datos privados, listas de clientes, números de tarjeta de crédito, etc.) • Introducción de transacciones no autorizadas • Utilización del sitio para futuros ataques (“zombies”) - Es importante considerar el concepto de materialidad cuando se realiza el análisis de los objetivos Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 17 Definición de Escenarios Aspectos básicos a considerar • Recursos - Es preferible asumir que el atacante cuenta con información detallada sobre los protocolos y mecanismos de seguridad utilizados (el concepto de “security through obscurity” es en general sumamente débil, particularmente contra ataques internos) - También debe considerarse que el atacante pueda lograr cierto nivel de acceso básico al ambiente a atacar, particularmente en sitios públicos o de clientela masiva (e.g. home banking) o través de técnicas de ingeniería social - Si se asume que el atacante cuenta con recursos significativos (e.g. acceso a una “botnet” de tamaño importante) entonces pueden existir determinados ataques (e.g. denegación de servicios, ataques de fuerza bruta contra claves criptográficas de largo insuficiente) que serán automáticamente exitosos Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 18 Penetration Testing – Conceptos generales y situación actual Motivación Definiciones Generales Usos Recomendados Definición de Escenarios Etapas Usuales Cambios en los Últimos Años Vulnerabilidades en Aplicativos Web Etapas Usuales Etapas de un ataque • En general cualquier ataque sobre la infraestructura consistirá de las siguientes etapas (con algunas opcionales dependiendo del escenario específico) - Detección de equipos - Detección del “mapa” de la red - Detección de servicios y versiones - Detección de debilidades - Obtención de algún nivel de acceso inicial - Escalamiento de privilegios • A lo anterior se agregan todos los ataques específicos sobre las aplicaciones que residan en dicha infraestructura que no tienen que seguir un orden particular y que se discutirán más adelante Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 20 Etapas Usuales Detección de equipos y estructura de red • El agente buscará en esta etapa detectar la mayor parte de componentes posibles de la red a atacar • No solamente los servidores, sino además el resto del equipamiento de comunicaciones (routers, switches, etc.) y seguridad (firewalls, IDS, etc.) podrán ser blancos importantes • La detección de la estructura de la red no siempre es estrictamente necesaria, pero le puede dar al agente un nivel adicional de información para la realización de ataques • Por ejemplo, conocer si hay segmentos de red con diferente nivel de protección o cuales son los equipos de comunicación en determinadas rutas Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 21 Etapas Usuales Detección de equipos y estructura de red • Técnicas de detección de equipos y rutas - Servidores de nombre (DNS) - “Ping” (típicamente sobre segmentos secuenciales de IPs) • ICMP • TCP • UDP • Paquetes preparados específicamente (que pueden en algunos casos permitir conocer la configuración de firewalls intermedios) - “Traceroute” (y sus variantes) - Simple Network Management Protocol (SNMP) • Dependiendo de la configuración de las herramientas utilizadas por el atacante, es muy posible que esta etapa pase inadvertida Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 22 Etapas Usuales Detección de servicios y versiones • En esta etapa suelen aparecer indicios de que la red está bajo ataque • El agente buscará determinar cuáles son los servicios corriendo (http, telnet, smtp, bases de datos, dns, etc.), los sistemas operativos que los soportan, y las versiones de dichas componentes • “Port Scanning” (recorrida de puertos en forma secuencial/aleatoria) - La técnica mas básica es intentar realizar una conexión estándar de TCP con el puerto específico - Por velocidad y para evitar logs en ciertas configuraciones se utiliza el llamado “Stealth Scan” (o “Half-Open”) enviando paquetes SYN construidos especialmente - Hay otras técnicas similares (FIN, XMAS-Tree, Null, ACK) que intentan pasar los controles del firewall y analizar la respuesta de los equipos a “errores” de conexión Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 23 Etapas Usuales Detección de debilidades • En esta etapa el agente buscará determinar vulnerabilidades en los servicios instalados • Típicamente se utilizarán herramientas automatizadas que cuentan con bases de datos actualizadas periódicamente para hacer el análisis, aunque en algunos casos el atacante podrá interactuar directamente con los servicios • Algunas de las vulnerabilidades (“exploits”) más usuales incluyen: - “Buffer overflows” / “Dangling Pointers” / “Off-by-one” - “Directory Traversal” / “Source Disclosure” - “MIME exploits” Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 24 Etapas Usuales Obtención / escalamiento de acceso • Si en la etapa anterior el agente encuentra algún servicio que incluye vulnerabilidades, puede intentar utilizar dicho servicio para obtener algún nivel de acceso al servidor donde el mismo ejecuta • Dependiendo de sus objetivos, este nivel de acceso puede o no ser suficiente, lo cual depende en general de los privilegios con los que corra el servicio • En el caso de que necesite un mayor nivel, el atacante normalmente intentará escalar sus privilegios a través de nuevos ataques (e.g. ataques locales) • Es importante notar que en el caso de detectarse que un atacante obtuvo cierto nivel de acceso a un equipo (especialmente con perfiles de alto nivel de privilegio), puede resultar muy difícil determinar qué información fue accedida o qué otros componentes del servidor pueden estar comprometidos Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 25 Penetration Testing – Conceptos generales y situación actual Motivación Definiciones Generales Usos Recomendados Definición de Escenarios Etapas Usuales Cambios en los Últimos Años Vulnerabilidades en Aplicativos Web Cambios en los Últimos Años Escenarios de ataque en la actualidad • Hace algunos años la existencia de servidores en producción con vulnerabilidades significativas no era una ocurrencia del todo extraña, principalmente por las siguientes razones: - Falta de conocimiento/especialización en seguridad de los administradores - Falta de procedimientos adecuados de seguimiento de vulnerabilidades y actualización de versiones - Demoras significativas de los proveedores entre la aparición de una vulnerabilidad y la liberación del “patch” correspondiente - Falta de criterios claros dentro de la comunidad de seguridad sobre el relacionamiento con los proveedores de tecnología y la publicación de las debilidades detectadas Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 27 Cambios en los Últimos Años Escenarios de ataque en la actualidad • En la actualidad varias de esas situaciones han sido corregidas (e.g. mayor velocidad de los proveedores, actualizaciones automáticas, “códigos” aceptados para la publicación de vulnerabilidades) y por consiguiente la seguridad a nivel de infraestructura ha mejorado significativamente (al menos en redes externas) • Al mismo tiempo, han adquirido gran popularidad los desarrollos “de tipo web” para toda clase de aplicativos (ya sean de uso interno como externo) con implicaciones absolutamente críticas en cuanto a seguridad • Finalmente, cada vez más se aprecia un objetivo delictivo en la utilización de vulnerabilidades informáticas (los “script kiddies” de principios de década han ido dejando su lugar a organizaciones criminales asociadas a fraudes, robo de secretos y extorsión) Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 28 Cambios en los Últimos Años Servicios actuales de Penetration Testing • En virtud de lo anterior, es importante que un servicio actual de Penetration Testing esté correctamente planificado y se enfoque en aquellos aspectos que le puedan producir los mayores riesgos a la organización • Los servicios de tipo “Black Box” o solamente basados en infraestructura, si bien pueden tener algún lugar dentro de una estrategia general de pruebas de seguridad, difícilmente puedan considerarse como suficientes excepto en los escenarios más simples (e.g. sitio institucional sin aplicativos o contenido dinámico) • La orientación a escenarios presentada previamente ofrece un mecanismo simple para determinar los requerimientos mínimos que debería tener un servicio de Penetration Testing en la actualidad y qué aspectos deben ser complementados con otros mecanismos (revisión de configuraciones y procedimientos, auditoría de aplicativos, etc.) Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 29 Penetration Testing – Conceptos generales y situación actual Motivación Definiciones Generales Usos Recomendados Definición de Escenarios Etapas Usuales Cambios en los Últimos Años Vulnerabilidades en Aplicativos Web Vulnerabilidades en Aplicativos Web Principales vulnerabilidades existentes • Tanto a efectos de indicar aquellos aspectos que deberían considerarse dentro de un Penetration Testing que incluya a los aplicativos como para que sirva de “recordatorio” (ya sea para desarrolladores, auditores u oficiales de seguridad) a continuación se mencionarán las principales debilidades que usualmente se observan en aplicaciones web • Si bien la lista de “principales debilidades” claramente puede ser objeto de debate y es responsabilidad de cada organización realizar su propio análisis y toma de decisiones, para facilitar la discusión se utilizará la lista denominada “Top Ten 2007” de la OWASP (“Open Web Application Security Project” – www.owasp.org) Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 31 Vulnerabilidades en Aplicativos Web OWASP – “Top Ten 2007” • • • • • • • • • • Cross Site Scripting (XSS) Injection Flaws Malicious File Execution Insecure Direct Object Reference Cross Site Request Forgery (CSRF) Information Leakage and Improper Error Handling Broken Authentication and Session Management Insecure Cryptographic Storage Insecure Communications Failure to Restrict URL Access Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 32 Vulnerabilidades en Aplicativos Web Algunas recomendaciones • Además de las recomendaciones básicas asociadas a cualquier proyecto de desarrollo tendientes a mejorar la calidad del producto final, se pueden hacer algunos comentarios sobre el tema seguridad • El diseño de la seguridad de un sistema (e.g. un módulo centralizado) debe ser considerado desde el inicio del proyecto • Puede ser interesante hacer un análisis de riesgos durante el diseño (similar a la definición de escenarios de ataque) para entender como el diseño de la seguridad debe atender a los mismos en función de la clasificación de los datos que se manejen • Los controles no pueden ser algo “a agregar” luego de obtener cierta funcionalidad básica ni deberían estar “distribuidos” dentro de la aplicación (e.g. como parte del código de transacciones específicas) • Evitar la falsa competencia “seguridad vs. usabilidad” Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 33 Vulnerabilidades en Aplicativos Web Algunas recomendaciones • Recordar que cualquier elemento que se ejecute en el cliente (e.g. un control en javascript) no debe nunca considerarse como una parte relevante del esquema de seguridad • Dentro de las especificaciones de los planes de prueba para la aplicación se debe incluir el tema de la seguridad • Debería establecerse como un objetivo a probar que el sistema sea tolerante (o idealmente inmune) a determinadas clases de ataques, mediante técnicas similares a las de un Penetration Testing • Un tema adicional a considerar (particularmente durante el Análisis de Riesgos) es la seguridad de cualquier tipo de datos confidenciales o privados de terceros que los sistemas manejen, para evitar contingencias legales Penetration Testing – Conceptos generales y situación actual PricewaterhouseCoopers Abril 2009 Diapositiva 34 Nuestra Visión Ser la Firma líder en servicios profesionales, reconocida por ser diferente en su enfoque innovador, comportamiento ético, calidad, multidisciplinariedad, integración en torno al cliente y su aporte al desarrollo de la comunidad, que se caracteriza por relacionamientos profesionales de largo plazo, con rentabilidad sostenida en el tiempo y por la satisfacción y compromiso de sus talentos. © 2009 PricewaterhouseCoopers. Todos los derechos reservados. PricewaterhouseCoopers hace referencia a la red de XBRL - Conceptos Generales y Ejemplos de Utilización firmas miembro de PricewaterhouseCoopers International Limited, siendo cada una de ellas una entidad legal separada e independiente.*connectedthinking es una marca registrada de PricewaterhouseCoopers LLP (US). PricewaterhouseCoopers PwC Abril 2009 Diapositiva 35