Hacking ético

“If you know the enemy and know yourself, you need not fear the result of a hundred battles.”  – Sun Tzu, Art of War

Como decía Sun Tzu, la mejor forma de protegerse es conocer al enemigo y conocerse a si mismo. Desde proavan podemos proporcionarle estas armas, para hacer que su negocio no esté al alcance de cualquier hacker.

En proavan, sabemos que la seguridad en las aplicaciones web es posiblemente lo que más se pasa por alto, ya que se suele poner el foco en otros factores como la funcionalidad, velocidad, usabilidad,… sin embargo, la seguridad debería ser una prioridad en cualquier organización, dado los riesgos que conlleva y el alto impacto de los mismos. Los hackers están concentrando sus esfuerzos en las aplicaciones basadas en web – carritos de compra, formularios, páginas de inicio de sesión y sistemas de gestión de contenidos dada la gran cantidad de vulnerabilidades que se pueden encontrar y los resultados que se pueden obtener mediante su explotación.

Metodología

owaspSeguimos la metodología OWASP para la detección de vulnerabilidades en aplicaciones web. Esta metodología se divide en varias fases:

  1. Information gathering: recopilación de información sobre los sistemas, componentes y aplicaciones instaladas.
  2. Configuration Management Testing: búsqueda de vulnerabilidades debidas a una mala configuración de los sistemas y componentes utilizados para el desarrollo.
  3. Authentication Testing: vulnerabilidades detectadas en formularios de login.
  4. Session Management Testing: vulnerabilidades derivadas de un mal uso de las sesiones en aplicaciones web.
  5. Authorization testing: escalado de privilegios a través de la comprobación del sistema de gestión de permisos y roles.
  6. Business Logic Testing: comprobaciones de seguridad derivadas de la propia funcionalidad de la aplicación a testear.
  7. Data Validation Testing: las aplicaciones web deben validar/sanear todos los datos recibidos. En este apartado se prueban todos los tipos de inyecciones que dan lugar a diferentes tipos de ataques y vulnerabilidades.
  8. Denial of Service Testing: se intenta conseguir que la aplicación web deje de estar operativa utilizando diferentes tipos de ataques.
  9. Web Services Testing: diferentes tipos de ataque más enfocados a web-services.
  10. Ajax Testing: comprobaciones especiales para interacciones web Ajax.

Tecnología

Existen multitud de herramientas que permiten automatizar parte del proceso de PenTesting, aunque la mayor parte del trabajo se desarrolla de forma manual capturando, analizando y modificando el tráfico entre el cliente (navegador) y el servidor (aplicación web).

Actualmente existen distintas distribuciones Linux que aunan muchas de estas herramientas y facilitan así nuestro trabajo. Estas son algunas de las que utilizamos, si bien, hemos hecho varias modificaciones y mejoras para completarlas y ponerlas a nuestro gusto.

dojo_maven   kali

Caja negra y caja blanca

La mayoría de las pruebas que hacemos se basan en un enfoque de caja negra, es decir, no sabemos nada sobre su aplicación, su infraestructura, o cómo está codificada. En este caso el resultado será muy fiable, es decir, estaremos en la misma situación que cualquier otro hacker.

cajas_med

Si bien, es conveniente realizar una revisión rápida del código fuente, ya que se pueden detectar fallas estructurales de diseño y codificación, las cuales podrían dar lugar a vulnerabilidades no detectadas durante las pruebas de caja negra.


Ejecución del servicio

La prestación del servicio de seguridad en aplicaciones web tiene las siguientes fases:

fases_servicio

  1. Definición de objetivos y entorno: De entre las aplicaciones que conforman su infraestructura deberá indicarnos qué aplicación o aplicaciones son las que quiere probar. Así mismo, tendremos que fijar cuál va a ser el entorno y la ventana de pruebas. Podríamos probar en su entorno real de producción, o preferiblemente, en un entorno de pre-producción o certificación.
  2. Aceptación del plan de pruebas: Con la información recogida en la reunión anterior, generaremos un plan de pruebas que nuestro cliente debe aceptar para continuar con las mismas. En este plan se especifican el objetivo de las pruebas, entorno, ventana temporal, tipos de pruebas que se van a realizar, etc…
  3. Ejecución de las pruebas:  desde proavan ejecutamos las pruebas de seguridad. Comenzaremos normalmente por las pruebas de caja negra, para completarlas finalmente con el resultado de las pruebas de caja blanca, tal como se haya definido en el plan de pruebas de seguridad (PPS).
  4. Presentación del informe de resultados: El penetration testing report, o informe de pruebas de seguridad, tiene los siguientes contenidos:
    • Pruebas realizadas: pruebas de seguridad realizadas sobre la infraestructura y los objetivos fijados.
    • Informe de vulnerabilidades: se describen las vulnerabilidades detectadas, cómo se ha llegado a ellas, cómo se podrían explotar y cómo se podrían corregir.
    • Análisis de riesgos: según las vulnerabilidades detectadas se realiza un análisis de riesgos según el impacto y probabilidad de explotación de cada vulnerabilidad.
    • Recomendaciones:  se dan una serie de recomendaciones sobre la aplicación web y la infraestructura, para cubrir las brechas de seguridad detectadas.
    • Conclusiones: conclusiones sobre la realización de las pruebas por parte de proavan.