domingo, 19 de junio de 2011

Mitos, Leyendas y Fantasías - Parte 1


Este artículo está inspirado en un breve intercambio que sostuve por el google buzz con una persona de extenso recorrido y experiencia con sistemas *nix. El post que lo inició todo es el que sigue:

Richzendy: No hay nada como la sensación de seguridad que da el navegar por cualquier sitio sabiendo que no te vas a contagiar de algún virus #usalinux

En un principio estoy de acuerdo: es una "sensación", sin embargo, la siguiente afirmación en cuanto a "sabiendo que no te vas a contagiar..." es muy osada en realidad. Y por eso mi respuesta:

Ruben Recabarren - ¿"Sabiendo"? o ¿"Creyendo"? yo te puedo contar de varios sitios donde te puedes infectar de un monton de cosas feas no solo para linux, sino también para cualquier sistema operativo que te puedas imaginar ;)

En efecto, rutinariamente no sólo me toca analizar malware para Linux, sino que también me toca desarrollarlo. Como parte de mis pruebas de penetración, tengo que estar constantemente modificando mis herramientas y payloads para demostrar la vulnerabilidad de los sistemas de mis clientes y generar recomendaciones de cómo hacerlos más seguros. Esto incluye también rutinariamente un extensa gama de distintos sistemas operativos. La respuesta semi-religiosa que casi nunca viene acompañada de ningún fundamento técnico no se hizo esperar:

jaime sanmartin - Yo tengo 25 años con Unix, Xenix y Linux y no me han pegado el primer virus. Eso para mi es seguridad..Aun mas, con Linux se pueden reparar los desastres de Windows. Con Windows no se puede hacer lo mismo...

Inmediatamente sale a colación la comparación con Windows. Esto para mí es indicación que la discusión se está tornando fanática. En ninguna parte de los posts anteriores se nombra ni a Windows ni a ninguna comparación con ningún Sistema Operativo en específico. El poster original hizo un comentario sobre su sensación al navegar con Linux, y yo hice un comentario sobre su falsa sensación de seguridad. Sin embargo, las guerras religiosas siempre necesitan colar al más desvalido (Windows) para fortalecer un argumento que carece de todo soporte técnico verdadero. Mi respuesta como siempre tratando de evadir la guerra que se avecina:

Ruben Recabarren - Bueno, sin animos de desatar una guerra santa, yo solo digo que es distinto "creer" que no se te ha pegado el primer virus a estar limpio en serio ;) Perfecto tema para el siguiente articulo de mi blog :D


Y en realidad, yo todavía no he conocido a la primera persona que confrontada con la cruda verdad de la pregunta: 

"Acaso tu puedes asegurar que tan sólo utilizando el Sistema Operativo $BLANK tu computadora no podrá ser vulnerada?" 

sea capaz de responder con la misma fuerza con que afirman sus creencias religiosas.  Usualmente ésto termina las guerras santas, pues a los fanáticos no les gusta cuestionar su fé. Sin embargo:

jaime sanmartin - Yo estoy limpio en serio. Por otro lado, a menos que tengas un sistema perfecto de auditoria, nadie puede estar seguro de haber tenido, o no, un virus en su computadora. Y los sistemas perfectos no existen. El virus pudo entrar, hacer su trabajo y salir. Si en ese momento estabas actualizando o algo parecido, pues no lo viste. Si lo detectaste, estas seguro que SI. Pero si no lo detectaste, nunca podras estar seguro. Ahi el argumento empieza a volverse filosofico...

Lo cual es insospechado al igual que misterioso. Parafraseando: "...Estoy limpio en serio, pero no estoy seguro y nadie puede estarlo...". Esta respuesta inspira y casi ruega el análisis de varios aspectos que lamentablemente son un mal que aqueja a muchas organizaciones, grandes y pequeñas, de software libre o privativo por igual.


1.- El cuchillo y el bisturí. La analogía es la siguiente: todo el mundo probablemente estará de acuerdo en que no es lo mismo que te operen utilizando un cuchillo de carnicero que utilizando un bisturí. Sin embargo, muy pocas personas se dan cuenta que por mas que un carnicero empuñe un bisturí, jamas se volverá un cirujano. En otras palabras la herramienta no hace al maestro. Linux muy bien puede ser el bisturí, lamentablemente, él por si sólo, no puede garantizarte una mejor seguridad.


Para ejemplificar aún más mi argumento consideremos lo siguiente: Si yo tuviera que seleccionar, para un servidor de misión crítica (i.e. alto grado de seguridad), considerando todo lo demás igual, entre un sistema operativo Linux y otro Windows, preferiría Linux a Windows sin lugar a dudas. No porque Linux sea innatamente más seguro que Windows, si no porque con un sistema operativo libre sólo estoy limitado por mi propio conocimiento, tiempo y motivación. Si tengo un problema, simplemente tomo la fuente, la modifico, recompilo y resuelto mi problema. Es decir, tengo una "esperanza" de lograr más seguridad. Por el contrario, con Windows, ni siquiera el problema es no tener el código fuente. En otros articulos he demostrado lo sencillo que es agregar funcionalidad a un programa directamente en el binario sin utilizar su código fuente. De la misma forma, aplicar parches para modificar funcionalidad existente directamente al binario sin el código fuente, tampoco es una tarea imposible. Sólo se requiere un poquito de conocimiento extra en arquitectura y los internos de Windows. ¿Cúal es el problema entonces? En efecto, muy pocas personas se dan cuenta que el único problema es legal. Si yo me pongo a modificar un programa del S.O. Windows, no sólo estoy violando sus terminos de uso, si no que en muchos paises podría estar violando la ley de "Digital Millenium Copyright Act" (DMCA). Ley, por cierto, que muchos paises en Latinoamerica se han visto "obligados" a adoptar debido a los tratados de libre comercio (TLC's).


De la misma forma, si fuera confrontado con la necesidad de decidir entre: Un servidor Linux con un administrador mediocre, y un servidor Windows con un experto no sólo en Windows sino también en todas las funciones que va a realizar el servidor y experto en seguridad informática en general, pues tomaría al servidor Windows sin pensarlo. No por Windows, si no por el administrador. No importa cúan seguro o abierto sea tu sistema, si el que lo usa es un carnicero, jamás podrá llevar a cabo su trabajo adecuadamente. Por más inmensa comunidad de software libre que exista, y por más que extienda su mano el mediocre para pedir ayuda, probablemente lo único que recibirá de respuesta es "tirate al metro". Ni siquiera es que lo condone o esté de acuerdo. Es una realidad palpable e innegable, sin tabúes y sin prejuicios.


2.- Nada es completamente, 100%, perfectamente seguro. Suspiro profundo. Este es probablemente el argumento más pernicioso para contaminar la cultura corporativa de una organización. Sí, es verdad que el sistema perfecto no es alcanzable. En efecto, cuando mis clientes me dicen que necesitan una prueba de penetración para "...saber si pueden ser hackeados..." Mi respuesta es siempre: "... Les voy a ahorrar un monton de tiempo y dinero, la respuesta es sí, no me debe nada, hasta luego...". Lamentablemente este argumento se ha convertido en escudo y excusa para conductas imperdonables como: no aplicar los parches del sistema operativo o aplicaciones, no desinstalar funcionalidad extra que no es usada, no arreglar fallas gravisimas de XSS, SQL injection, y un monton de problemas más que hacen la vulneración de nuestros sistemas una tarea "trivial". Obviamente, un atacante determinado y con más recursos que los nuestros siempre logrará vulnerar nuestros sistemas. Pero realmente, ¿Es nuestra tarea asegurarnos que los recursos que ese atacanque necesita para vulnerar nuestros sistemas sean tan ínifmos?


Lastimosamente, muchos administradores de sistemas y personal de TI en general fallan catastróficamente en percibir lo trivial que se ha vuelto vulnerar sistemas utilizando programitas "point-and-click" que explotan vulnerabilidades "enlatadas" y que están al alcance de cualquier adolescente en los Inter-tubes. Peor aún, a veces se atreven a utilizar el argumento: "Eso es culpa del usuario".


3.- ¿XSS? Eso NO es un problema de la aplicación. Esa es una vulnerabilidad de muy bajo impacto y además para explotarla se necesita la estupidez del usuario. Suspiro aún más profundo. Realmente no se cómo ponerlo, pero ésto toca los nervios más profundos de mi ser y no es fácil contenerse. Lo único que diré es lo siguiente: Cuando la gente de TI va al consecionario a comprar un carro, ¿le preguntan si es un experto en motores de combustión interna antes de venderselo? Por que yo estoy seguro que a mí no me lo preguntan. Y si trataran de insinuarlo a la hora de reclamar la garantía, lo que pueden llevar es un incendio del local. Mínimo. Exactamente lo mismo sucede con nuestros sistemas de información. Requerir que el usuario normal entienda los intríngulis del funcionamiento del navegador para usarlo y no morir en el intento es, por la medida chiquita, un absurdo sin igual. Y si vamos un poquito más alla, todo ésto es nada más parte de la desidia y poco entendimiento por parte de muchos departamentos de TI que desarrollamos en el punto anterior.


4.- No existen virus para Linux y la probabilidad de que me infecte usando Windows es mucho mayor a que me infecte si uso Linux. El mismo argumento utilizan los amantes de los sistemas Apple. Si consideramos todo lo anterior, se puede ver facilmente  que este argumento no es del todo preciso. Es cierto que sistemas no-Windows son menos "targeted" por el crimen informático. Sin embargo, la razón de ésto no tiene que ver en lo absoluto con su seguridad "innata". Por el contrario, es el simple resultado de la considerable disminución del ROI que significa desarrollar malware para un sistema operativo que no es tan popular. De hecho, los primeros en darse cuenta de esta cruda realidad han sido los usuarios de Mac OS X.


Por otro lado, para realmente hablar de forma seria y responsable sobre probabilidades de infección y de ataques, es necesario considerar la victima del ataque dentro de la ecuación. No es lo mismo perfilar el atacante de la abuelita que usa su PC para leer las cartas de sus nietos en el exterior, que el administrador que le da soporte a los sistemas que manejan información financiera sensible de millones de personas. Para la abuelita, el mayor riesgo lo representan los atacantes oportunistas y de menos sofisticación. En este caso, sí, por favor, darle la manzanita a la abuelita. 

Sin embargo, si estamos hablando de una organización privada o gubernamental que maneja datos un poquito más importantes que los de la abuela, por un lado, los atacantes oportunistas no son una amenaza importante. Los atacantes oportunistas conforman un porcentaje muy pequeño de toda la gama de atacantes que nos acechan. De hecho, yo llegaría al punto de decir que son mas bien "aliados oportunistas". El atacante oportunista y de menos sofisticación usualmente terminará haciendole un deface a nuestra página web y más nada. Su conocimiento no le dá para más. Ésto para nosotros es probablemente lo mejor que nos puede pasar al lado de todas las otras alternativas que son una peor que la otra. Específicamente, el atacante sofisticado, del que realmente nos interesa preocuparnos, es el que aprovechandose de la misma falla que los atacantes oportunistas, está silenciosamente en nuestros sistemas sustrayendo información o esperando el peor momento para llevar a cabo un sabotaje catastrófico. Mirando la situación desde una perspectiva más amplia, lo único verdaderamente importante que logró el adolescente que nos hizo el deface, es echarle a perder el esquema a nuestro atacante profesional. Esto se debe a que la gerencia de nuestra organización despues de poner la cara roja ante sus clientes y la opinion publica, sacará el látigo para que los encargados de TI dejen aunque sea algo de la desidia que hablabamos anteriormente, las fallas serán cerradas poco a poco y la vigilancia será incrementada aunque sea por un tiempo. Es de esta situación tan particular que nace el odio encarnizado de los criminales profesionales hacia los "script kiddies". Las lecturas son extensas, pero una y otra vez hemos visto como grupos del underground amenazan a los script kiddies y hasta en algunos casos los delatan a las autoridades para sacarlos del juego. Para los interesados en más detalles, pueden hacer busquedas en google sobre: ~el8, h0n0, zf0, etc. Preparense para abrir su mente a una realidad muy poco conocida.


Ahora bien, si no es tan importante el sistema operativo que se use, o la tecnología que se desarrolle para defendernos de los criminales profesionales, entonces ¿Qué lo es? La respuesta la dimos al comienzo: El artesano que sepa usar esa tecnología es la verdadera respuesta. Creer que metiendo más dinero o metiendo más tecnologia en nuestra plataforma va a resolver nuestros problemas de seguridad es como querer comprar clavos, madera y herramientas, tirarlas en el jardin y pretender al día siguiente encontrar un patio de madera artesanal. Por supuesto, esto es nada más el comienzo. Posteriormente es necesario llevar a cabo una conscientización y priorización de las vulnerabilidades y fallas que constantemente estaremos "creando" en nuestros propios sistemas. Mantenerse al día en estos asuntos es una tarea casi imposible para los que adicionalmente son responsables de que los sistemas "funcionen". Es aquí donde pueden ayudar servicios profesionales que evalúan la seguridad de sus plataformas desde el punto de vista de un atacante profesional. Si deseas ver demostraciones de todos estos puntos y cómo una prueba de penetración puede ayudar a tu empresa estás invitado a usar el enlace de contacto.

1 comentario:

  1. Ser fanboy de algo es una etapa mas de la vida, por lo general es superada cuando te ves reflejado en otros fansboys o cuando notas que solo has estado siguiendo un paradigma.

    ResponderEliminar