Founder of MalwareIntelligence, a site dedicated to research on all matters relating to anti-malware security, criminology computing and information security in general, always from a perspective closely related to the field of intelligence.

martes, 4 de diciembre de 2007

PENETRATION TESTING EN NUESTROS DÍAS

Hay varias razones por las cuales las empresas grandes y medianas necesitan contratar servicios de penetration testing. Si bien las profecías de la muerte de este tipo de servicios nunca se cumplieron (¿alguien recuerda cuando Gartner Group predijo la muerte de los IDS, el dominio absoluto de los IPS y el despegue de las PKI hace algunos años? Bueno, aún seguimos esperando), lo que sí es un hecho es que la forma de hacer penetration testing ha cambiado de forma significativa.

Siempre existió cierto empalme entre revisiones de vulnerabilidades (orientados más a ejecutar escaneos de vulnerabilidades conocidas) y un penetration test tradicional, porque algunas actividades del primero se realizaban como parte del segundo. Actualmente los escaneos de vulnerabilidades se realizan cada vez con mayor frecuencia y esta actividad tiene a automatizarse lo más posible, al grado que hay empresas que en cuestión de días han cubierto todo un ciclo de revisión de su infraestructura. Los costos de las herramientas y servicios de escaneo de vulnerabilidades, si bien no son del todo baratos, si bajaron considerablemente con respecto a su precio de mercado cuando se empezaron a ofrecer a finales de los 90s.

El costo de un penetration test sin embargo no ha bajado en la misma proporción, y hoy en día no hace mucho sentido pagar tal cantidad de dinero si gran parte de las actividades se concentran en hacer lo que se hace en una revisión de vulnerabilidades. Pero antes de entrar de lleno en los nuevos requerimientos de un PenTest de nuestros días conviene repasar cuáles son las necesidades actuales.

En primer lugar, algunas empresas están obligadas a contratar servicios de PenTest por regulación; de entrada, todas las empresas y entidades financieras que están normadas por PCI. En términos de PCI DSS 1.1 (la versión actual del estándar de seguridad), la necesidad de realizar un PenTest periódico por parte de un tercero certificado se basa en tener una cierta seguridad por parte de las marcas de tarjeta de crédito (VISA, Mastercard, Amex y compañía) de que la infraestructura de sistemas donde se procesa, almacena, transmite o genera información de tarjetas de pago no es fácilmente accesible para un atacante.

En segundo lugar, tenemos los ataques dirigidos, que se enfocan muchas veces en buscar vulnerabilidades específicas en los sistemas de una empresa (particularmente en sistemas y aplicaciones propietarias). A pesar de los avances en detección de vulnerabilidades genéricas en aplicaciones hechas en casas a través de escáners de código fuente y de vulnerabilidades, aún resulta muy complicado identificar con estas herramientas de forma automática muchas vulnerabilidades que a veces son triviales de encontrar. Técnicamente podría decirse que tenemos cubiertas las vulnerabilidades de desbordamiento de memoria con las herramientas y procesos de desarrollo adecuados, pero cosas que parecen sencillas como el manejo de sesiones en una aplicación son muy complicadas de detectar con las herramientas para revisión de vulnerabilidades actuales.

En tercer lugar tenemos el enfoque de los grupos de criminales profesionales hacia el eslabón más débil (los clientes y empleados). Un criminal profesional no va a perder el tiempo tratando de penetrar los sistemas de seguridad robustos de un Banco (de acuerdo, no todos los Bancos tiene una seguridad robusta pero podríamos decir que la mayoría poseen un nivel de seguridad aceptable), cuando es mucho más sencillo, rápido y difícil de rastrear un ataque enfocado hacia los clientes. Con la misma lógica, un criminal profesional que busca realizar espionaje industrial tiene más probabilidades de éxito buscando empleados de la compañía (como seres humanos nos gusta socializar y regamos todo tipo de información sobre nosotros en Internet, créanme que no es nada difícil), para después tratar de: engañarlos (ingeniería social), sobornarlos, o enviarles algún código malicioso customizado a sus computadoras personales. Obviamente están considerados aquí también todos los ataques internos.

En cuarto lugar tenemos una marcada tendencia hacia la desaparición de un perímetro claro en las comunicaciones. Por todos lados proliferan las extranets, acceso remotos de empleados y todo tipo de servicios a clientes a través de portales Web. El resultado obviamente es que los firewalls terminan llenos de huecos como coladeras y nos hemos visto obligados a subir de capa las protecciones de seguridad, a nivel de las aplicaciones (canal, acceso, sesión y almacenamiento seguro de datos).

Hay actividades que también han tendido a desaparecer aunque no podemos descartarlas del todo:

  • Ataques de negación de servicios. Hoy en día la gente va a la cárcel con mayor facilidad por estas actividades y no es tan sencillo efectuar estos ataques de forma anónima.
  • Ataques masivos por virus y gusanos informáticos de rápida propagación. Lo mismo que el caso anterior. De vez en cuando todavía aparece alguno que otro pero los criminales se enfocan en usar código malicioso para hacer ataques silenciosos, difíciles de detectar y más dirigidos, porque tiene mayores beneficios económicos para ellos.
  • Distribución de códigos de explotación para vulnerabilidades conocidas. En gran medida por las nuevas leyes que han aparecido en algunos países, pero también porque los criminales que han descubierto tales vulnerabilidades entienden que pueden sacar mayor provecho de esta información si no la divulgan. Para los que han estado presentes en foros como Bugtraq o Full Disclosure desde hace años saben bien a qué me refiero.

Es claro que un servicio de PenTest tradicional, enfocado a vulnerabilidades de la red y relativamente pocas pruebas de penetración manuales ya no es redituable en nuestros días. Las características que buscamos hoy en día de un PenTest deben incluir entre otras:

  • Gran cantidad de pruebas manuales. Ir al grano; como lo dijimos anteriormente, no tiene ningún sentido perder el tiempo con rehacer lo que se hace en revisiones de seguridad periódicas.
  • Mayor cantidad de tiempo invertido en revisar aplicaciones. Los esquemas de seguridad a nivel de redes e infraestructura han madurado ya bastante. Obviamente si a este nivel aún se encuentran vulnerabilidades considerables la empresa tiene un problema mucho mayor y debería de pensar en otras cosas antes de iniciar con un PenTest, pero si no es preferible dirigir los esfuerzos en evaluar lo que una revisión de vulnerabilidades no puede analizar. Sobre todo es importante considerar aplicaciones Web.
  • Información completa para el personal a cargo del PenTest. Anteriormente se tenía la creencia de que el mejor PenTest era aquel que simulaba el proceso de un hacker y por eso existían los llamados PenTest "zero-knowledge", donde no se le daba ninguna información al consultor salvo un rango de direcciones IP. Nunca me pareció congruente este esquema y menos ahora; un criminal profesional en nuestros días puede dedicar meses en planear y ejecutar su ataque (y queremos que el consultor lo haga en unos cuantos días), además un potencial atacante interno puede tener ya toda la información que necesita. ¿Para qué poner en desventaja innecesariamente al personal de seguridad y nosotros gastar el dinero sin ningún sentido creyendo que un servicio de este tipo constituye una buena evaluación?
  • Con respecto a la red, considerar todos los canales de comunicación hasta sus extremos y no sólo el perímetro con Internet. Los puntos de entrada son múltiples ahora, muchos canales de comunicación con clientes o empleados incluso van encriptados y lo que viaja por ahí ni siquiera se revisa por otros controles de seguridad (ej. IDS/IPS) en muchos casos. Por eso es muy importante revisar todos los puntos de acceso.
  • Considerar ataques dirigidos a clientes y empleados. Entiéndase por esto ataques de ingeniería social y con código malicioso customizado. Es crítico evaluar resistencia a intrusiones, fraudes y fugas de información por estos medios. Si bien en el caso de clientes es prácticamente imposible conocer los niveles de seguridad de computadoras personales, se puede evaluar el esquema de autenticación, el manejo de sesiones y cómo podría un atacante obtener acceso ilegítimo en una computadora sin protección con las medidas de seguridad que ofrecemos a nivel aplicación.
  • Considerar medidas de seguridad internas. Esto incluye a las aplicaciones y sistemas que no están expuestos al exterior pero que proporcionan acceso a personal interno que podría ser sobornado o engañado para proporcionar un acceso no autorizado a la información sensible de la empresa. En particular (como lo comenté en un artículo anterior), se deben revisar las medidas de seguridad aplicadas para evitar accesos no autorizados por parte de los administradores de sistemas críticos.
  • Considerar desarrollos específicos. Debido a la diversidad de ambientes en un PenTest actual se requiere la capacidad de desarrollar pruebas personalizadas a través de scripts y desarrollos propios. Estos desarrollos requieren un profundo conocimiento de plataformas de aplicaciones, lenguajes de programación, criptografía y protocolos de comunicación para poder interactuar con el ambiente de la empresa.

Con todo esto, podemos elaborar un sencillo cuadro comparativo de las diferencias entre un PenTest requerido actualmente y uno tradicional:



Como conclusión, podemos ver que es necesario un cambio importante en los servicios ofrecidos actualmente por las empresas de seguridad así como en la actitud y grado de involucramiento de las empresas. Además, es necesario un cambio importante en la literatura, cursos de capacitación y metodologías para ofrecer estos servicios. Por decirlo de alguna manera: ya no estamos en épocas donde sólo existían médicos generales (el PenTester tradicional tiende a ser aún un "todólogo"); en estos momentos necesitamos equipos formados con especialistas. Si alguien me dijera que domina PenTesting en: redes, aplicativos Web con todos los sabores y plataformas, criptografía, programas maliciosos e ingeniería social, yo dudaría en contratarlo (hoy en día conocer suficiente de cada una de esas disciplinas lleva varios años, y eso sin contar el tiempo invertido en capacitación para mantenerse actualizado).

Al día de hoy, pocas empresas de seguridad están en condiciones de ofrecer servicios de PenTesting de calidad con los requerimientos actuales; esto no va cambiar mucho hasta que los clientes no empiecen a demandar este tipo de servicios y dejen de requerir los PenTest tradicionales, cuyos beneficios son limitados actualmente.

Fuente: http://candadodigital.blogspot.com/2007/12/penetration-testing-en-nuestros-das.html

0 comentarios:

Publicar un comentario