domingo, mayo 26, 2013

Pentesting Persistente, Pentesting Contínuo, Pentesting by Desing

Cuando se hace la auditoría de seguridad a una empresa lo más probable es que siempre acabes entregando un informe en el que se demuestra que ha sido posible entrar - si no a todo - a zonas importanters del sistema. Además, siempre aparecen vulnerabilidades menores que ayudan a preparar ataques más importantes al sistema o fallos de configuración en el entorno que abren definitivamente la puerta.

Esto en la vida real se puede ver fácilmente en lo sencillo que es encontrar vulnerabilidades en sitios web de grandes compañías como Apple, o en webs de proyectos de importancia como el Senado o la web de la famosa Presidencia Europea de España, que acaban sufriendo por errores fácilmente detectables en una auditoría de seguridad.

Aún así, muchos de los sitios webs que acaban siendo vulnerados han pasado alguna auditoría de seguridad en algún momento de su ciclo de vida, lo que hace dudar más si cabe, sobre si el modelo de auditoría de seguridad externa que contratan muchas empresas tiene sentido o no. O lo que es lo mismo, responder a la pregunta de por qué en la mayoría de los casos en los que se hace una auditoría de seguridad, se descubren cosas graves. La respuesta a esta pregunta es sencilla:

El pentesting no debería ser un proceso puntual que se contrata, sino un servicio de ataque 24x7 durante todo el ciclo de vida de tu sistema.

Todos los días a todas horas debería estar el sistema informática bajo el ataque del pentester. Para ello tu sistema tiene que estar diseñado con soporte para Pentesting desde la fase de diseño. Y si no, pues perderás la guerra y acabarás owneado.

Mi teoría es que mientras te ataquen más los más malos que los buenos, tienes las de perder, y para ello es necesario contar con un proceso de pentesting diferente. No se puede contar con una grupo de pentesters durante una semana que vengan y te demuestren que pueden colarse en tu sistema. Así lo único que estás contrastando es que en la próxima auditoría que te obliguen a hacer dentro de un año volverás a ser comprometido - si no totalmente, al menos parcialmente -.

Pentesting Persistente/ Pentesting Continuo

Entre el tiempo que pasa entre un proceso de pentesting y otro tu sistema informático va a sufrir cientos de mutaciones provocadas por actualización del software de los servidores, el software de los clientes y/o toda la electrónica de red. También habrá actualizaciones y cambios en el código de tus sitios web que habrán realizado tus desarrolladores. Tus certificados digitales se habrán hecho un poco más viejos, algunos hasta habrán caducado, y las contraseñas de tus usuarios habrán sido usadas de forma insegura en cientos de sitios. Por supuesto, tu sistema informático habrá crecido en tamaño, quieras o no, un buen porcentaje.

A todo esto, habrá que sumar unos cuantos miles de charlas en conferencias de seguridad y hacking en las que se habrán publicado cientos de herramientas, cientos de nuevos trucos de hacking y cientos de bugs en componentes que utilizas en tus sistemas.

Todos estos cambios, todas estas nuevas herramientas, todo este nuevo conocimiento estará ya en el arsenal de un pentester que habrá seguido estudiando Kung-Fu para darle una buena paliza a tu sistema la próxima vez que te encuentre.

¿Y si tengo el al equipo de pentesting interno?

Genial. Si tienes un equipo de seguridad haciendo pentesting todo el día, con formación continua, con capacidad de lanzar una prueba contra un sistema todos los días a cualquier hora, sin necesidad de pasar una enorme lista de restricciones antes, entonces estarás haciendo lo que te digo: Pentesting Continuo

Pero si tu equipo de pentesting interno no puede hacer una prueba de D.O.S. cuando quiera para testear el sistema, o no puede pegarle fuerte y duro a una web porque el servicio puede dejar de funcionar, entonces estás perdido, ya que tu sistema no cuenta con Pentesting by Desing.

Tus sistemas tienen que estar diseñados para soportar el acoso 24x7 de los ataques de los malos, y por tanto debería estar diseñado para soportar el acoso 24x7 de los buenos. Si no es así, los malos ya han ganado y es cuestión de tiempo que acabes con un defacement de LulzSec - u otro grupo - o una portada en los medios de comunicación por un bug de renombre.

Yo sistematicamente pruebo los bugs nuevos que aparecen con sitios que deberían tener un cierto nivel de preocupación con estos temas, como los metadatos con la Misile Defense Agency o en las agencias de inteligencia mundiales, los .DS_Store con Apple y Google, o los fallos de IIS Short Name en webs de Beijing y Washington D.C. Al final ni ellos tienen un sistema de Pentesting continuo 24x7.

Pentesting by Design

Para que puedas tener un proceso de auditoría que sea más rápida y efectiva que los ataques de los malos tienes que hacer que tu sistema cuente con el Pentesting by Design. Esto quiere decir que el dimensionamiento de la memoria, el almacenamiento y el ancho de banda de la línea de comunicaciones en tu sistema esté diseñado con el porcentaje necesario para dar una calidad de servicio adecuada a tus usuarios, más el porcentaje destinado al ataque continuo de los malos, más el porcentaje necesario para que tu sistema pueda sufrir un proceso de Pentesting Continuo 24x7 desde el primer día.

¿Es suficiente esto?

Pues no, por supuesto. El Pentesting by Desing te permitirá realizar un Pentesting Persistente de tu equipo, lo que te permitirá sólo que los procesos de auditoría de seguridad tengan las mismas oportunidades que un atacante malo, pero luego deberás seguir haciendo los deberes en todas las fases de gestión de la seguridad de tus sistemas.

Actualización: La implementación de esta idea la llevamos finalmente a la realidad con nuestro servicio de Pentesting Persistente Faast que ofrecemos a grandes empresas e industrias.

Saludos Malignos!

13 comentarios:

Javier Tobal dijo...

Qué buena idea!
Podemos montar una hacking factory y vender HaaS (Hacking-as-a-service)
Daríamos trabajo a todos los hackers amigos.
A cada cliente le hacemos un dashboard en tiempo real con los ataques realizados y el porcentaje de éxito. Podríamos cubrir ataques desde fuera y desde dentro (con un par de usuarios -logins- "de pega": uno de RRHH y otro de Marketing-y-ventas).
Además, cada mes o así le hacemos un "ataque en campo".

¿cuánto costaría un servicio así?
24x7 = 5 hackers en turnos = 40k / mes (precios de consultor)
1 hacker podría "llevar" ¿20 empresas?

¿pagaría una empresa 2000 euros al mes por un servicio así (equipos y gastos aparte)?

igual sí

gjulian dijo...

El problema que le veo a esto es que no es plausible. ¿Pentesting 24x7? No creo que un sistema sufra tantos cambios como para que merezca la pena estar continuamente mirando a ver si tiene alguna brecha. Quizás si tendría sentido hacer un pentest cada vez que hay una actualización o hay eventos importantes (un congreso de seguridad, un bug grave descubierto en X aplicación...). Incluso hacer un pentest cada semana por si los usuarios tienen posibilidades reales de abrir agujeros en el sistema, y aun así me parecería muy excesivo.

Además, otro problema: ¿qué pasa si, por hacer pentesting, te cargas el sistema? El pentester ve una posible vulnerabilidad grave y por lo que sea (los humanos se equivocan) no la deja ahí para estudiarla bien sino que prueba "qué pasa si hago esto" y se va todo abajo. Sí, claro, mejor que lo detectemos nosotros y no los malos, pero nos hemos cargado el sistema nosotros mismos cuando no habría hecho falta y no creo que a nadie le haga gracia.

Que hace falta más seguridad, sí, estoy de acuerdo, pero lo que propones me parece demasiado excesivo.

Simplicius dijo...

Interesante esta entrada...yo trabajo en lo que se puede llamar un equipo de pentesting interno y sinceramente lo que propones es aunque muy idealista también poco probable, ya no solo por presupuesto...al fin y al cabo yo cobro por estar 40 horas a la semana dedicado a ello, pero hay que tener en cuenta a la otra parte, EL NEGOCIO, ellos esto no lo ven así, es decir como un pentester haciendo su trabajo impacte lo más mínimo en cualquier servicio....ya no te digo si causa una indisponibilidad por un DOS....basicamente se conforman con que se realicrn pruebas antes de salir a producción o ante cambios sustanciales y hay que decir que estas pruebas NUNCA son sobre entornos productivos sino replicados en entornos previos...personalmente no conozco al menos en nuestro pais empresa alguna que además de tener equipo de pentesters propio estos hagan su trabajo con libertar y sin presiones, si alguien conoce alguna que lo diga!

Unknown dijo...

@gjulian, si bien es cierto que un sistema no sufriría tantos cambios, pero por un lado las pruebas serían a todos los niveles y a todo tipo de instancias, que no se hace en cinco minutos.
Además, ese equipo requiere una formación casi ininterrumpida, tienen que ser la vanguardia de la tecnología, lo cual tampoco es "pilla el Backtrack y pulsa teclas a lo loco". Por cierto, se supone que el equipo de pentesting también se dedicaría a proponer soluciones o incluso a resolver dichas vulnerabilidades (que también lleva su tiempo).

Por último hay procesos que no son "click and hack". Un scanneo minucioso con NMAP puede llevar días, semanas o meses, dependiendo de cuánto te apetezca llamar la atención.

Si pretendes que un par de personas haga eso una vez cada trimestre, apañados vamos.

Chema Alonso dijo...

Lo que digo en este post es:

1) El sistema tiene que estar diseñado para sufrir pentesting 24x7

2) El proceso de pentesting debe ser 24x7, no que tenga que haber un pentester 24x7 detrás. La mayoría de los ataques se hacen con herramientas automatizadas que ayudan a la búsqueda de fallos...

Saludos!

Anónimo dijo...

¡Uff! Es todo lo que se me ocurre.
En un mundo ideal...
Por cierto (y sin ánimo de ser chinchorra): "plausible" es "digno de aplauso"; yo me imagino lo que el comentario quiere decir es "posible". :-)

Anónimo dijo...

Para @anónimo.

Plausible: 2. adj. Atendible, admisible, recomendable. Hubo para ello motivos plausibles.

Está bien usado ;-)

Unknown dijo...

Es interesante, un poco aplicando la idea "ágil" al mundo del pentest.

A cualquier sysadmin le comentan hace 10 años de montar una infraestructura y una metodología de trabajo que permitiera realizar 10 despliegues al día[1], diría que eso es una locura, que las cosas se romperían y no funcionaría. Sin embargo, esa idea es el principio del movimiento DevOps, que están adoptando todas las empresas que quieran ser relevantes durante los próximos 5 años (no sólo es cosa de frikis de startups, incluso empresas como IBMu Oracle se ha apuntado al carro[2]).

Esta especie de "pentesting ágil" es lo mismo, puede parecer una locura, pero va a ser necesario, al menos para las empresas que quieran ser relevantes durante los próximos 10 años... Negocio debe ser ágil, para adaptarse a los cambios del mercado y, obviamente, IT debe ser capaz de seguir el ritmo para poder apoyar a negocio, y la seguridad *debe* formar parte de esa adaptación.




[1]
http://blip.tv/oreilly-velocity-conference/velocity-09-john-allspaw-10-deploys-per-day-dev-and-ops-cooperation-at-flickr-2297883
http://es.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr
https://github.com/Netflix/SimianArmy/wiki

[2]
https://www.ibm.com/developerworks/community/blogs/devops/?lang=en
https://mix.oracle.com/events/oow11/proposals/10888-devops-for-dbas

Unknown dijo...

De hecho he encontrado que sitios como Twitter ya van hacia esa filosofía.

http://www.slideshare.net/xplodersuv/putting-your-robots-to-work-14901538
http://videos.2012.appsecusa.org/video/54250716

Anónimo dijo...

pufff, Ilusos!!!! preocupándose por la seguridad.

Usen Linux donde no te tendrán que preocuparse porque NO tiene fallas.

http://muyseguridad.net/2013/05/24/la-seguridad-en-el-escritorio-linux-a-debate/

Anónimo dijo...

@anonimo: ah, ok; gracias. No conocía esa acepción y pensaba que más que no recomendable quería decir que era inviable. :-)

F4l53-19 dijo...

Para el Anónimo Linuxer@:

Todo en esta vida está sujeto a errores y fallos, yo también prefiero Linux, pero no creas que 100% seguro, nunca he conocido nada más seguro que un Spectrum y aún, puedes alojar ahí en tan pequeña memoria algún souvenir.

¡Un Abrazo!

Marck dijo...

El dia de ayer estaba curioseando en una pagina web y encontré en una pagina que tenían un archivo .htacces a la vista de todo el publico. No encontré paswords ni nada pero quería saber si se puede hacer algo con esto y mas que lo anterior saber que tan vulnerable puede ser un sitio web que permita algo asi.

Creo que se dieron cuenta de que abri el archivo y la pagina web la quitaron durante dos horas por lo que supongo que lo hicieron para ocultarlo o eliminarlo. aun tengo la copia pero si me sorprendi de esto.

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares