01 septiembre 2010

S21sec analiza la seguridad de Tofino


Recientemente Byressecurity y S21sec labs han anunciado que están trabajando conjuntamente en la evaluación de seguridad de Tofino, un firewall específico para entornos de control industrial (SCADA). El trabajo está enmarcado dentro de las evaluaciones que S21sec labs realiza en el laboratorio SCADA de Pamplona para el análisis de las características de seguridad de los productos SCADA.


Tofino Industrial Security solution es una tecnología de firewall SCADA de la que ya se realizó una introducción en este blog hace unos meses y que recientemente ha recibido un galardón de la consultora Frost&Sullivan como mejor producto de seguridad industrial en 2010. Tofino va a lanzar en breve una nueva versión con nuevas características de seguridad basadas en parte en este estudio.


Daniel Chavarri & Iñaki Lopez

S21sec labs

Stumble
Delicious
Technorati
Twitter
Facebook
Meneame
Linkedin

27 agosto 2010

Formación y certificaciones en seguridad digital

Algo importante cuando se quiere trabajar en seguridad de la información es tener la mayor cantidad de conocimientos previos sobre seguridad posibles. En realidad, tenerlos no es obligatorio, muchas empresas contratan personas que recientemente han acabado sus estudios universitarios con muy pocos, incluso nulos conocimientos sobre seguridad, pero siempre es deseable conocer algo de la materia. Son estas mismas empresas las que se encargan de formar a estas personas una vez se demuestra que se tienen aptitudes y ganas de trabajar en este campo. Pero casi siempre es un punto de partida más interesante contratar a una persona que tenga conocimientos previos.

Muchas son las personas que se interesan por este campo de las tecnologías de la información, tiene cierto atractivo trabajar en seguridad. Hace años que el mundo de la seguridad de la información se ha desvinculado de la palabra "hacker" (esta sí que tienen atractivo y si no que se lo digan a Hollywood), pero aún a día de hoy, no se puede negar que trabajar en el ámbito de la seguridad de la información tiene encanto para muchas personas.

En el departamento de formación de S21sec recibimos al año muchas solicitudes de información referentes a la formación especializada en seguridad digital como la siguiente:

"Hola me llamo Javier, soy ingeniero/técnico en informática y desearía orientar mi carrera profesional hacia el mundo de la seguridad. Me gustaría saber si con el curso Network Security Administrator se obtiene alguna titulación al terminar dicha formación. Gracias"

Y ante esto, nosotros nos preguntamos ¿qué es lo que busca la gente que quiere trabajar en seguridad de la información?

En muchos casos nos llegan emails con preguntas como estas. Personas con titulación que tienen ganas de aprender, pero quieren saber si "tal o cual" curso les otorgará un título de reconocido prestigio.

Varias son las certificaciones de reconocido prestigio. Estoy seguro que si preguntamos a los lectores de este blog por las más importantes del sector el 90% coincidirá en los mismos nombres. Pero ¿son estas certificiaciones un fiel reflejo de los conocimientos en materia de seguridad de la información de un profesional? En muchos casos, la realidad es que para obtener algunas de estas certificaciones, lo que ha de hacerse es preparase para superar el examen, lo cual no garantiza realmente que se tengan conocimientos teórico - prácticos de las materias que estas certificaciones abarcan.

En S21sec university trabajamos en ambas líneas, cursos que otorguen conocimientos teórico - prácticos, mucho mas prácticos que teóricos por cierto, pero que además tengan el mayor reconocimiento posible.
José Alemán
S21sec university

Stumble
Delicious
Technorati
Twitter
Facebook
Meneame
Linkedin

10 agosto 2010

Visitar este sitio puede dañar tu equipo

Es común el desconcierto de muchos usuarios cuando al entrar en una página web les aparece un aviso similar a este:



pero el desconcierto se convierte en pánico cuando esto ocurre en tu dominio y no puedes acceder a él. Primero aclarar que estos avisos pueden aparecer en tu navegador Google chrome a través del mensaje: "Advertencia: Visitar este sitio puede dañar tu equipo" o en firefox con: "¡Este sitio es una web atacante!". Ambos navegadores usan la misma fuente de datos a través de la organización sin ánimo de lucro StopBadware, originada en la Universidad de Harvard.

¿Qué hacer en estos casos?. Lo primero que no cunda el pánico, bueno sí, pero de manera controlada, algo de estrés siempre es bueno para trabajar. Vayamos por pasos:

  1. Comprobar con otros servicios; aunque estos avisos de google son muy fiables, nunca está de más comprobar el presunto sitio malicioso con cualquiera de estas herramientas de análisis de urls maliciosas, algunas podrán mostrar datos con más detalle para analizar posteriormente.

  2. Interpretar los datos: con todo lo que tenemos ahora ya debiéramos poder realizar un primer diagnóstico, en el caso de la imagen, vemos que el dominio legítimo contenía a otro que no lo era tanto, este último contaba en su historial con: Malicious software includes 46 exploit(s), 10 scripting exploit(s) entre otras acciones similares.

  3. Saber cuando ocurrio: En este caso concreto la información que Google nos proporciona es: "The last time Google visited this site was on 2010-08-10, and the last time suspicious content was found on this site was on 2010-08-10." Con este dato podremos correlar los logs para buscar el patrón del ataque. Hay que tener en cuenta que Google no escanea los sitios a diario, y puede que ya no quede rastro del código malicioso que hizo saltar este aviso pero todavía siga apareciendo como sitio dañino. [ver punto 8]

  4. ¿Por qué ocurrio?: Si todavía no sabes porque Google cree que tu sitio es malicioso, es hora de revisar detalles de los servicios comentados en el punto 1, cruzar los dedos y tener suerte de encontrar algún rastro. Si te gusta la marcha siempre podrás revisar el código a pelo. Es posible el caso de que todo se haya limpiado ya (en caso de dominios no gestionados por nosotros) y no seamos capaces de saber exactamente que contenía ni porque saltó el aviso.

  5. Limpiar nuestro sitio: Una vez que sepamos cual era la fuente del problema tendremos que eliminar el código malicioso; generalmente iframes ocultos o javascript ofuscado formando parte de lo que se denomina ataques drive-by download. Ejemplo de uno de ellos. Para ello tendremos que tener conocimiento de cuales son las partes legítimas del sitio web y cuales no, de nuevo aquí, nos ayudaran herramientas del punto 1.

  6. Investigar las causas del origen: A parte del punto anterior, es posible que no lleguemos a saber a ciencia cierta todo lo que hicieron en nuestro sitio web, por lo que lo más recomendable, es realizar una revisión en nuestro servidor web en busca de archivos sospechosos, ocultos y registros extraños en BBDD, y como no, revisar los logs. Las causas más comunes de este tipo de casos según nuestra experiencia son SQL injections, redirecciones en el archivo .htaccess o aprovechamiento de vulnerabilidades conocidas en diferentes CMSs. Puede darse en ocasiones qué no seamos capaces de conocer las verdaderas causas, en algunos casos ni los propios servicios de alojamiento pueden descubrir que ocurrió.

  7. Prevenir la reinfección: Una vez que hemos limpiado el código malicioso de nuestro sitio y hayamos encontrado o no las causas de ello, será hora de cambiar todas las contraseñas y realizar actualizaciones en el software para que este libre de bugs conocidos que pudieran haberse aprovechado para modificar nuestro sitio. Si el origen fue a través de SQL injections, enseña la guía de desarrollo seguro owasp a quién implementó el sitio web. Otra medida muy aconsejable es revisar todos los scripts de terceras partes que tengamos como banners, anuncios y cualquier cosa similar que no dependa directamente de nosotros. Otro punto aconsejable y completamente independiente de tu sitio web es, cerciorarte de que tu equipo con el que accedes a la web está libre de virus. Aunque los troyanos bancarios tienen como principal objetivo recopilar datos bancarios, también lo hacen de múltiples sitios sociales y aplicaciones de todo tipo.

  8. Solicitar a Google una nueva revisión: Si después de haber seguido todos estos pasos, nuestro sitio sigue siendo reportado como dañino, deberemos solicitar una nueva revisión del sitio a través de las herramientas de webmaster de google. Si no lo hacemos así, puede que pasen hasta semanas con nuestro sitio en las listas negras de google. Pero si confirmamos que somos los dueños del dominio y todo está limpio, nos podrán sacar de la lista negra en 24H.
Casos como este ocurren a diario sin que los propietarios de los sitios web sean conscientes de ello hasta que ya es demasiado tarde. El resultado es que el sitio web comprometido se incluye en listas negras y el usuario lo percibe a través de su navegador con avisos como el de este caso siendo las principales repercusiones:
  • Incapacidad de acceder al sitio web.
  • Pérdida de confianza de los usuarios/visitantes del sitio web y mala imagen de marca.
  • Penalización de los buscadores y consiguiente descenso del sitio en los SERPs.
Esperemos que la próxima vez que te encuentres con un caso de estos sepas como actuar para frenar el badware.

Stumble
Delicious
Technorati
Twitter
Facebook
Meneame
Linkedin

29 julio 2010

Inteligencia en Seguridad

Decía Stephen Hawking en su libro de ‘Historia del Tiempo’ que, si pusiese todas las publicaciones que aparecen diariamente de su especialidad una detrás de otra, tendría que viajar a 60 Km/hora para mantenerse delante de ellas. Esta metáfora sirve para hacernos una idea de la cantidad de información que se genera diariamente en cualquier campo, pero teniendo en cuenta que el libro está escrito en 1988, creo que todos estaremos de acuerdo en que en la actualidad tendríamos que viajar notablemente más rápido que el Dr. Hawking.

El análisis de tal cantidad de información necesita de un pre-proceso de selección, eliminación de "ruido blanco", contrastar su veracidad, análisis técnico y de impacto, medidas de mitigación y aplicación en escenarios reales. Es un proceso complejo en el que intervienen multitud de componentes, desde la selección de fuentes apropiadas (muchas veces propias) hasta la creación de procesos automáticos que ayuden en la "digestión" de las mismas. Hay que sumar a las dificultades la velocidad de proceso, ya que la información caduca rápidamente y es necesario hacer llegar a todos los actores implicados la información lo antes posible. Por supuesto, el formato de entrega debe ser el adecuado para cada uno de los receptores, lo más sintético posible y orientado a su negocio, junto con las implicaciones y mitigaciones cuando lo aplicamos al entorno de la seguridad.

Sin duda se trata de una tarea nada sencilla. Los clientes de servicios de inteligencia son los primeros que exigen estar perfectamente informados de cualquier novedad que les pueda afectar, tanto a nivel técnico como en lo que atañe a sus procesos productivos. Es necesario, por tanto, generar una relación cercana con ellos para conocer qué esperan y cómo desean recibir la información. Este último es un tema muy importante, ya que enfocar el detalle de una información a un perfil distinto al receptor puede hacer que ésta sea totalmente inútil.


Stumble
Delicious
Technorati
Twitter
Facebook
Meneame
Linkedin

27 julio 2010

Sobre phishings en la nube y el robo a un ladrón

Desde Imperva nos cuentan que han descubierto un kit de phishing muy especial. A diferencia de los kits que vienen apareciendo desde hace años, este promete incluir una serie de características muy interesantes:

  • ¡No es necesario saber PHP ni HTML!
  • ¡Fácil, rápido, limpio y compacto!
  • Permite suplantar 16 importantes webs con calidad "profesional"
  • ¡La notificación de nuevas víctimas es muy rápida!
  • No necesita instalación (Portable)
  • Funciona en: Windows XP / Vista / Windows 7
  • Incluye un pequeño servidor FTP integrado
  • Proporciona una herramienta de "limpieza" (en caso de que desee eliminar rastros sobre usted o sus víctimas)
Una de las características más interesantes de este nuevo tipo de kits es la posibilidad de utilizarlos sin necesidad de instalar nada. Esto se consigue gracias a que, tanto el backend, como el código encargado de la recolección de información robada, están alojados en la nube, y en caso de cierre de la página de phishing, basta con volver a colgar dicha página en otro servidor para que todo vuelva a "funcionar".

Sin embargo, lo que es más curioso de este kit concreto, es el hecho de que, sus programadores -que colgaron el kit en foros de hacking- incluyeron una pequeña backdoor en el programa cuyo propósito no era otro que el de enviar los datos robados por las distintas "instalaciones" a su propio servidor, consiguiendo de esta forma, y con un esfuerzo mínimo, un volumen de credenciales robadas bastante superior al que hubieran conseguido si hubieran sido ellos mismos los que hubieran montado los phishings.

Por supuesto, para que no fuese demasiado "cantoso", y por qué no, quizás también como una forma de demostrar un cierto agradecimiento a sus incautos colaboradores, un pequeño porcentaje de las credenciales robadas se enviaban también a los usuarios del kit para compensarles por el duro trabajo realizado montando los phishings para beneficio de los "colegas" ;)

Con la idea de trastear un poco con el kit, me bajé una copia y, para mi sorpresa, ¡llevaba la friolera de 213.000 descargas!:


Al descomprimir el programa para la instalación nos encontrábamos con un banner publicitario en el que se comentaban las características del software:


Como no tenía un Windows a mano, hago un inciso para comentar que el programa se instala bastante bien en Linux con Wine (al menos, con la versión 1.0.1 que es la que viene en Lenny) y solamente me hizo falta descargar la librería msvbvm60.dll para poder ejecutarlo.

Con la idea de documentar un poco el proceso, durante la instalación aproveché para hacer algunas capturas de pantalla:
En la última captura, ya con el kit en ejecución, se puede apreciar una ventana en la que se pueden elegir esas 16 páginas (bastante conocidas, por cierto) que el programa permite falsificar:


Está claro que en este mundo de la ciberdelincuencia se puede aplicar perfectamente aquello de que "el que no corre, vuela" y, por supuesto, hay que andarse con mucho ojo si uno no quiere que "se la den con queso" ;)

Fernando Braquehais
S21sec e-crime

Stumble
Delicious
Technorati
Twitter
Facebook
Meneame
Linkedin

12 julio 2010

XPath Injection

Antes de ver una inyección de XPath, veamos que es el lenguaje XPath:

"XPath (XML Path Language) es un lenguaje que permite construir expresiones que recorren y procesan un documento XML. La idea es parecida a las expresiones regulares para seleccionar partes de un texto sin atributos (plain text). XPath permite buscar y seleccionar teniendo en cuenta la estructura jerárquica del XML. XPath fue creado para su uso en el estándar XSLT, en el que se usa para seleccionar y examinar la estructura del documento de entrada de la transformación".

Una de las virtudes de XPath, es que puede seleccionar información dentro de un documento XML, haciendo referencia a cualquier tipo de dato, mostrando el resultado en una representación en forma de "árbol de nodos". Dentro de cada árbol, existen diferentes tipos de nodos:

- Raíz.
- Elemento.
- Atributo.
- Texto.
- Comentarios.
- Instrucción de procesamiento.

Otro de los puntos fuertes son sus expresiones (instrucciones del lenguaje), en las que se incluyen operaciones, como por ejemplo los "location path": /usuario/contraseña. Esta operación hace referencia a todos los elementos contraseña que descienden de cualquier elemento usuario que a su vez, desciende el nodo raíz.

Operaciones a destacar:

- /usuario/dir[@private="si"] -> selecciona los elementos cuyo predicado private sea un "si".
- //usuario/nombre -> selecciona todos los nombre de los usuarios.
- //usuario/node() -> selecciona todos los nodos descendientes de usuario de cualquier tipo: text(), comment(), processinginstruction().

Funciones a destacar:

- count(): count(//usuario/child::node()) -> el resultado será el número de nodos de todos los usuarios.
- stringlength(string): stringlength(//usuario[position()=1]/child::node()[position()=1]) -> devolverá el tamaño del primer string del primer nodo del primer usuario.

- substring(string, num, num):substring((//usuario[position()=1]/child::node()[position()=1),1,1) -> devolverá la primera letra del primer nodo del primer usuario.

Una vez tenida una cierta idea de cómo funciona XPath, vamos a ver un ejemplo práctico para poder realizar la inyección XPath:

Estamos ante una aplicación común, en la que se nos pide el usuario y la contraseña para poder acceder a una zona privada. Como es habitual, tenemos dos entradas de texto, en la cuales estarán permitidas cadenas alfanuméricas y quizás algún carácter especial. Probamos a meter únicamente en el usuario una comilla simple ', y esperamos la respuesta de la aplicación. Con un poco de suerte, recibiremos un error de este estilo:

System.Xml.XPath.XPathException:
Error during parse of
string(//usuario[nombre/text()=''' and contraseña/text()='']/cuenta/text())

Bien, el error nos muestra información importante, ya que aparece la petición realizada y podemos deducir la estructura del xml al que hace referencia, que sería algo así:

<usuario>
<nombre></nombre>
<contraseña></contraseña>
<cuenta></cuenta>
</usuario>

Una vez conocida la estructura y como se realizan las peticiones, empezaremos a inyectar código. Probaremos a meter en el campo de usuario la siguiente instrucción ' or 1=1 or ''='. La petición realizada, quedaría de la siguiente manera "string(//usuario[nombre/text()='' or 1=1 or ''='' and contraseña/text()='']/cuenta/text())". Si todo sale bien, la consulta nos debería de devolver el primer usuario de la lista del xml, dándonos acceso a la aplicación.

Pero, ¿qué pasaría si el aplicativo no devuelve nada después de realizar peticiones en busca de usuarios, contraseñas, etc., si como hemos podido observar, el campo usuario parece ser vulnerable?, ¿significa eso que la aplicación no es vulnerable? Puede que sea así, pero también podríamos estar delante de un posible Blind XPath Injection.

En este caso, para saber si la consulta que realizamos nos devuelve algo, nos fijaremos si las respuesta recibida es verdadera o falsa. Imaginemos que tenemos un usuario y contraseña y necesitamos saber qué tipo de privilegio tiene, si es cuenta de administrador, usuario normal o invitado. Basándonos en la estructura obtenida anteriormente, la petición a realizar sería la siguiente:

' or substring((//usuario[position()=1]/child::node()[position()=3]),1,1)="a" or ''='

Lo que estamos pidiendo en la petición es que, queremos saber si la primera letra del tipo de cuenta del primer usuario es "a". Si la respuesta es verdadera, la aplicación nos devolverá una respuesta positiva, en este caso acceso al aplicativo. Si fuera una respuesta falsa, se recargaría la página del login de nuevo.

Como se puede observar, este tipo de inyección es muy parecida a la inyección SQL, pero como pasa con todo lo parecido, siempre hay algo distinto.

Néstor López del Moral, Dept. Auditoría S21sec


Stumble
Delicious
Technorati
Twitter
Facebook
Meneame
Linkedin

02 julio 2010

Nuevo incidente SCADA

El pasado domingo día 13 de junio, se produjo un nuevo incidente en materia de SCADA. Un fallo en uno de los equipos que integran el sistema SCADA de la planta de tratamiento de agua de la ciudad de Chelan (WA, USA) ha dejado a sus ciudadanos sin agua corriente durante varias horas.

El fallo en el equipo ha propiciado que el sistema principal de agua careciera de presión suficiente para el bombeo del líquido elemento. Unas horas más tarde el servicio ha sido restablecido por completo gracias al sistema de backups.

El incidente no ha sido grave gracias a la rápida actuación de los operarios de la planta restaurando el equipo que originó el problema, unido a que el incidente se produjo de madrugada y a que el hospital de la ciudad contaba con medidas preventivas para casos de emergencia, por lo que se ha puesto en funcionamiento el tanque de reserva, que ha sido suficiente para abastecer al hospital durante el tiempo que ha durado el corte.
Aunque el incidente no ha pasado a mayores, se ha hecho patente la importancia de la seguridad en infraestructuras críticas, puesto que el fallo de un simple equipo ha afectado durante horas la calidad de vida de todos los ciudadanos de esta población en cuestión.

También hay que recalcar la importancia de que cada organización responsable de sistemas SCADA cuente con procedimientos de seguridad, puesto que si en este caso no se hubiera contado con un plan de contingencia, el restablecimiento del servicio hubiera sido más lento y tedioso además de haber causado mucho más daño.

Enlace a la noticia publicada por el periódico local : http://www.lakechelanmirror.com/main.asp?SubSectionID=5&ArticleID=2670&SectionID=5

Daniel Herreras Rodríguez
S21sec labs

Stumble
Delicious
Technorati
Twitter
Facebook
Meneame
Linkedin
 

© Copyright S21sec 2010 - Todos los derechos reservados