Siguiendo con la entrada sobre la inseguridad de sentirse seguro, me gustaría ahora describirles 3 tecnologías de uso habitual que dan una falsa sensación de seguridad:
– Antivirus: Siempre que le explico a algún no especialista que es un antivirus, le explico que no es un “antivirus”. Es muy sencillo; un antivirus es la forma abreviada (o comercial) de decir que es un antivirus de virus conocidos. Sí, existen módulos heurísticos y otras historias de ciencia ficción, pero la realidad es que los virus nuevos no son detectados por los antivirus hasta que son conocidos. Esto implica que si tenemos la mala suerte de toparnos con un virus de relativa novedad no conocido por nuestro antivirus, éste será de poca utilidad. Obviamente, aunque el antivirus que utilizamos lo reconozca, si el nuestro no se encuentra actualizado, la consecuencia es la misma, de ahí la importancia de actualizar las firmas del AV.
– IDS de red: Los IDS tienen el mismo problema que los antivirus: son “IDSs de patrones conocidos”, pero son mucho peores que los AV ya que por lo general no toman medidas inmediatas, sino que se limitan a registrar e informar. Además, existen numerosas ocasiones en las que están “ciegos”, como por ejemplo en el tráfico cifrado en el que funcionan todas nuestras web corporativas importantes. Además únicamente registran intrusos en base a patrones “técnicos”, pero no a nivel de “negocio”, de modo que alguien puede estar haciendo transferencias bancarias de forma masiva, y el IDS sólo vera un usuario utilizando la aplicación de transferencias.
– Los auditores de vulnerabilidades (Nessus / OpenVAS / etc): Volvemos a lo mismo. No podemos estar tranquilos con haber pasado un scanner de vulnerabilidades y ver que todo queda corregido, dado que éstos únicamente lo son de vulnerabilidades conocidas y en su gran mayoría de software conocido, por lo que todos los desarrollos adhoc pueden ser completamente vulnerables a ataques de todo tipo y pasar inadvertidos. Es cierto que en este campo las herramientas están evolucionando y cada vez son mas capaces de analizar desarrollos desconocidos, pero cualquier auditoria automática de este tipo debería incluir un disclaimer en el que se indique que la herramienta sólo comprueba vulnerabilidades en versiones y configuraciones de programas conocidos, por lo que no incluye la detección de problemas en desarrollos propios, programas no conocidos o partes no públicas que pueden ser facilmente explotables por usuarios maliciosos. De aquí la necesidad e importancia de que una auditoría de este tipo sea complementada con auditorías manuales, tanto de los desarrollos a nivel de código, como a nivel de interacción con el usuario final.
Dicho esto, ¿cómo actuar en estos casos? El planteamiento es muy sencillo: se debe trabajar con el supuesto de que las herramientas no existen:
– Antivirus: Debemos actuar como si no se dispusiera de antivirus. En un entorno de oficina, por ejemplo, no ejecutar programas de los que no se conozca el origen, limitar la ejecución de binarios y código externo, eliminar los ejecutables que llegan por correo electrónico, restringir la descarga de ejecutables a través del proxy web, y deshabilitar el acceso a programas en unidades CD/USB.
– Detección de intrusos de red: Al IDS de red le pasan desapercibidas muchas cosas, y potencialmente puede generar un gran número de falsos positivos. No obstante, si conoce su negocio y sus aplicaciones seguro que sabe dónde mirar para detectar cosas extrañas; trate de añadir IDS de host, o integrados dentro de la lógica del negocio, ya que serán mucho más efectivos. Y por supuesto no los utilice como excusa para no tener en perfecto estado de revista la seguridad de sus servidores.
– Auditorías de vulnerabilidades: Como se ha comentado, no es suficiente con los análisis que se limitan a los datos de la caja negra. Debemos revisar de manera no exclusivamente automática las actualizaciones de versiones de los programas, su funcionamiento cuando interactúan con el usuario, la configuración de las aplicaciones con respecto a la seguridad (usando guías de buenas practicas, o mediante el análisis de todas sus funcionalidades), y por supuesto controlar el desarrollo desde su orígenes, incluyendo la seguridad en todo el ciclo. La idea es que el hecho de que la herramienta de auditoría que utilizamos no haya encontrado un problema de seguridad no significa que no exista, e incluso puede estar más cerca de lo que pensamos.
Entonces, ¿dejamos de utilizar estas incompletas e imperfectas medidas de seguridad? Repasemos de nuevo los tres puntos:
– Antivirus: Hoy en día, en ninguna cabeza cabe el no disponer de antivirus en cualquier entorno Windows, así que además de aplicar las prácticas seguras descritas previamente, hay que asegurarse de su correcta actualización de este, para que al menos esté al día de los virus conocidos. Es decir, que obviamente sí lo debemos de tener.
– IDS: Mi opinion sobre los IDS (no compartida por muchos miembros de este blog) es que son bastante inútiles (esta entrada que va un poco en esa línea), y si no tienen funcionalidad automática de IPS sirven para muy poco (aunque eso puede generar otro tipo de problemas diferentes). En todo caso, la mayor utilidad que le veo a un IDS es la de detectar malware interno poco sofisticado, es decir intrusos internos, con lo que sí pueden ser positivos, aunque el objetivo debería ser que no llegaran dentro. También puede ser útil como herramienta de diagnóstico, para buscar algún patrón concreto en difusión amplia de malware. En definitiva, para ciertas finalidades contar con un IDS es sumamente interesante.
– Auditor de vulnerabilidades: Aunque sean herramientas imperfectas, por su bajo coste de ejecución (se realiza de manera centralizada) pueden ser un primer paso para auditar una red. Aunque es verdad que cada vez son mas inteligentes y son mas capaces de auditar desarrollos genéricos (sqlmap es una maravilla), siguen siendo potencialmente peligrosas en cuanto a que la visión de auditoria de caja negra dista mucho de ser todo lo completa que la puede realizar un “humano” y puede generar una percepción de seguridad inexistente, además de ser infinitamente mas incompleta que una auditoria de caja blanca.
Como creo que era de esperar, usen todas ellas, pero tengan en cuenta siempre los disclaimers correspondientes y no se queden tranquilos con estos “false friends“. En una entrada posterior veremos qué pasa con las certificaciones: ¿”false friends“, o no?
Damià, me vas a permitir una pequeña crítica constructiva a este post:
En primer lugar estoy de acuerdo en que hay mucha gente que se cree que las herramientas de seguridad son la panacea y que funcionan solas y siempre perfectamente bien. Las herramientas no son perfectas, pero si muy útiles. Un Formula 1 puede ir a 300 Km/h, pero no es perfecto, sigue necesitando un piloto que lo conduzca, y si el piloto no es capaz de controlar el coche a más de 80Km/h… pero eso no quiere decir que ese F1 no sirva para nada, solo que su “operador” no lo está manejando como debiera.
Lo mismo ocurre con los antivirus, no son herramientas infalibles, como dices están basados mayoritariamente en firmas, pero si los combinas con el sentido común del usuario (no abrir adjuntos raros, ni navegar por sitios chungo, ni meter cualquier pendrive que nos den, dentro de la medida de lo posible) sí que es una herramienta que nos puede resultar muy útil.
Con el software de auditoría de vulnerabilidades pasa lo mismo, si el auditor que hay detrás no tiene ni idea no le sirve para nada, porque le ocultan los banners de los servicios y ya lo han dejado sin recursos, pero si el auditor es un pentester con experiencia tendrá otros recursos para obtener información, y juntando la información de todas estas herramientas podrá obtener mucha información. Ninguna de ellas por si sola te da toda la información, pero cada una de ellas te da una información muy valiosa.
Por último, con el que estoy menos de acuerdo es con los detectores de intrusos de red, ya que creo que tu definición es para los IDSs desplegados (casi) por defecto, con las firmas por defecto y sin ningún tipo de configuración adicional. Por ejemplo, Snort, admite una alta parametrización. Para empezar, te permite crear tus propias reglas de detección, e incluso convertir tu Snort “by default” basado en firmas en un Snort basado en detección de anomalías, tras un análisis del tráfico habitual en tu red y de dedicar algún tiempo en ponerlo apunto. Esta manera de funcionar, no es infalible, pero por definición es mucho más fiable que los métodos basados en firmas. En cuanto al tráfico cifrado, Snort se puede configurar con las claves privadas SSL de los servidores de nuestra organización, de tal forma que pueda descifrar el tráfico y comprobar su contenido, al igual que hace con tráfico no cifrado.
Al final, con todo pasa lo mismo, las herramientas serán mejores o peores, pero son exactamente eso, herramientas, y necesitan una mano experta que las use para sacarles todo el partido, y si no la tienen… pues en ese caso su utilidad queda muy reducida, claro, pero eso no quiere decir que las herramientas no sean útiles, solo que no se están manejando de la forma adecuada.
En resumen, estoy de acuerdo con las medidas adicionales que propones, porque nunca están de más, pero estoy en desacuerdo con la afirmación de que estas herramientas son poco útiles. Solo son poco útiles en manos inexpertas.
Esa es mi opinión.
Un saludo.
Se que las herramientas que he comentado, si se configuran bien son mil veces mas efectivas que si se configuran mal, y cada vez son mas inteligentes, creo que en la ultima parte del post lo he dajado bastante claro, que recomiendo el uso de todas ellas, pero son en todo caso altamente imperfectas, y son en todo caso adicionales a las otras medidas que de verdad son las que hay que tomar (caja blanca). :-)
Quizas podemos hacer otro post, caja blanca vs caja negra :-)
¡¡Por supuesto que recomiendo el uso de antivirus, openvas y snort!! Pero sabiendo que no son herramientas “completas”. Vamos que creo que no estamos tan en desacuerdo :-)
Un Saludo
Damià
No, no estamos en total desacuerdo :) digamos que estoy de acuerdo en las conclusiones, pero no en las razones que llevan a tomarlas.
Como he comentado antes, estoy de acuerdo en añadir las medidas adicionales y no confiar en que la herramienta lo haga todo sola ni en que sea infalible (defensa en profundidad), pero no estoy de acuerdo en que sean “bastante inútiles” ni en que “se debe trabajar con el supuesto de que no existen”, sino que por contra opino que lo que hay que hacer es desplegarlas bien y tener gente preparada “a los mandos”, y que si se hace así no solo no debemos trabajar bajo el supuesto de que no existen, sino que nos van a resultar extremadamente útiles.
Antivirus y demás son como el ESP y el ABS de los coches: ayudan al usuario prudente a salvar algunas situaciones límite, pero no son una garantía de seguridad absoluta. O como la vacuna contra la gripe, que te ayuda a hacerla más llevadera pero, no te libra necesariamente de padecerla.
Un saludo.