domingo, 15 de abril de 2012

Inseguridad Bancaria Online. Parte III

Ha pasado considerable tiempo desde que escribí en esta serie de artículos sobre inseguridad bancaria a pesar de ser de los más populares de mi blog. Sorpresivamente, mis lectores más asiduos de esta serie provienen de Rusia y Ukrania lo cual debo confesar fue algo inesperado. Mi ingenuidad me hizo pensar que los administradores de bancos en Latinoamerica serían los más preocupados en leer estas lineas, pero en la práctica no fue así.

Despues de sopesar la pertinencia de esta serie por un largo tiempo, y al ver que otros han seguido empujando el barco en esta linea, decidí darle la bienvenida a mis colegas Rusos y Ukranianos y continuar con esta serie. Eso si, no esperen que aprenda Ruso a corto plazo, así que tendrán que seguir usando google translate.

Uno de los "errores" más frecuentes que veo en los sistemas de banca en linea hoy en día es el de los famosos "teclados virtuales". Para ponernos en la misma página, estos sistemas no son más que reemplazos del teclado físico de nuestra PC (o dispositivo móvil) por uno virtual directamente en el sistema web del banco:



Por cierto, tratar de usar estos teclados virtuales web desde tu dispositivo móvil es particularmente dificil (no intentar en casa). Pero aparte de hacernos la vida más dificil, el objetivo de estos teclados es bien conocido y cuando escuchamos los argumentos de sus implementadores casi que les creemos. La problemática que intentan resolver (al menos en teoría) es la de los famosos "keyloggers".

Los keyloggers son un tipo especial de malware cuyo objetivo es capturar todas las teclas tipeadas en nuestro PC (o dispositivo móvil). En este caso, cuando el cliente de la banca en linea tipea su contraseña en la pagina web del banco, el keylogger instalado en su máquina captura la contraseña y se la envía a nuestro atacante (esto sonará prejuicioso, pero no es un secreto que la mayoría de los destinos de estas contraseñas robadas son Rusa, Ukrania y etc. LOL).


La premisa básica de los teclados virtuales es que si no hay teclas tipeadas en el teclado de la PC, pues no hay password capturado. Hasta ahora todo va bien. Lamentablemente, lo que no se han puesto a pensar los que dan el visto bueno para implementar estos sistemas es ¿qué tan difícil es modificar un keylogger que captura teclas a uno que tome un screenshot de la pantalla del computador? La respuesta es: trivial. Realmente, hace muchos años hice el experimento de pedirle a un colega que midiera el tiempo que le costaría tomar el código fuente de un keylogger de teclas y convertirlo en un keylogger que capturara pantallazos. Para mi sorpresa, el trabajo duró menos de 2 horas. El único cambio requerido fue reemplazar el evento de "pulsar tecla" por el evento de "pulsar boton de mouse". Cuando este evento es escuchado por el nuevo keylogger, se ejecuta la captura de pantalla y listo. Por cierto, para los aventurados a experimentar, les recomiendo utilizar este keylogger hecho en python. El tiempo de transformación debería ser considerablemente menor.

Ahora bien, esta respuesta puede ser una sorpresa para algunos, pero increiblemente no lo es para los desarrolladores de teclados virtuales. En efecto, he visto muchos otros teclados de nueva generación que intentan un gran número de triquiñuelas para complicar la acción de los "screenloggers" como voy a llamarlos de ahora en adelante. Trucos por cierto, uno peor que el otro, pues ninguno ni siquiera se acerca a lograr su objetivo.

Por ejemplo, el primer truco es hacer que las teclas virtuales se "ofusquen" cuando el puntero se posiciona encima para pulsarlo. La idea es que el "screenlogger" tomará la foto de la pantalla cuando el boton está cambiado a un "*" y no cuando está revelando el número que se pulso. Las posiciones de las teclas cambian cuando se visita la página web por primera vez en un intento de prevenir al atacante visitar la página y mirar la posición de las teclas fijas. Lamentablemente, lo único que tiene que hacer el atacante, es esperar a la primera cargada de la página, tomar la foto de la posición de todas las teclas virtuales en ese momento, y luego tomar las posiciones de cuando se ejecutó el click con el mouse.

El siguiente truco es hacerlo aún más incomodo para el usuario. No sólo las teclas cambian de posición cada vez que visitas la página, si no que despues de cada click, las posiciones vuelven a cambiar. Este tipo de teclado no lo he visto (gracias a Dios, porque debe ser sumamente incomodo para el usuario), pero tampoco sería efectivo. Lo que el atacante debe hacer es simplemente agregar unos cuantos eventos más a la escucha de su "super screenlogger" para capturar lo que se deba capturar en el momento que no esta ofuscado.


Espero que mis lectores estén a este punto convencidos que no importa lo que hagan para arreglar estos teclados virtuales, su búsqueda es inutil. Si la PC del usuario ya está infectada, el estado del juego es "Game Over" y el resultado es "Admin 0, Attacker 1". Mi mensaje es: "por favor, dejen de perseguir a los elefantes rosados".


Ahora bien, digamos entonces que despues de esta larga reflexión sobre todo lo que puede hacer mi atacante ¿estaríamos en lo correcto de decir que los teclados virtuales no proveen ninguna seguridad adicional al sistema convencional? La respuesta es NO. En realidad, la utilización de estos teclados virtuales significa un incremento de la inseguridad para el usuario. Es decir, desde el punto de vista de seguridad informática, utilizar un teclado virtual es PEOR que no utilizarlo. Y espero que si no los sorprendí hasta ahora, con esta afirmación haya captado su atención.

La razón por la que la utilización de teclados virtuales aumenta el riesgo del usuario se aleja del ámbito técnico y se monta sobre el ámbito social/cultural y hasta práctico. Imaginemos la terrible situación dibujada en el siguiente monólogo:

- Necesito hacer banca en linea.
- No se, cualquier transacción.
- Estoy en mi oficina, con mucha gente caminando por los pasillos y realmente es muy dificil evitar que los que pasan por ahí vean mi pantalla.
- Si, lo sé, pero no puedo esperar a llegar a mi casa, en donde tengo un cuarto sellado, con una sola computadora, sin nadie alrededor y protegido contra radiaciones electromagneticas (Tempest).
- Tengo que hacer la transacción desde aquí y en ese instante en la oficina del trabajo.
- Ahora bien, abro la página web del banco, y me pongo a teclear mi contraseña en el bendito tecladito virtual.
- Toma el tiempo que me demoré tipeandola.
- Ahora toma el tiempo que te demorarías tipeando la misma contraseñaen el teclado físico.
- El tiempo en tu teclado físico es muchisimo menor, aún más si tu trabajo es justamente con computadoras todo el día, pues estarás acostumbrado a tipear muy rápido!.
- A menos por supuesto que escribas con un sólo dedo sobre el teclado.
- No creo que escribas con un sólo dedo sobre el teclado físico si te la pasas todo el día en frente de la PC!
- Hey, un momento, pero cuando tecleas sobre tu teclado virtual, en efecto! es como si tuvieras UN SOLO DEDO (el puntero del mouse).
- Ahora lo entiendo. El teclado virtual me regreso al estado mental de un niño de 5 años que recien aprende a tipear conscientemente sobre la PC, utiliza un sólo dedo y se detiene a buscar las letras para tipearlas una por una, demorandose largos tiempos para tipear hasta las más simples frases.


En efecto, el tiempo de oportunidad para que alguien que casualmente pasa por ahí, vea tu contraseña mientras utilizas el mouse para tipearla en el teclado virtual es muchisimo mayor al que tendría si utilizas tus 8 o 10 dedos para tipearla en el teclado físico muchísimo más rapido. La técnica de "robar la contraseña de tu víctima mientras la tipea sin que se de cuenta" recibe el nombre de "shoulder-surfing" y es una práctica más bien de los de la escuela vieja. Sin embargo, no deja de ser sumamente efectiva.

Es un largo cuento y un triste desenlace para los que usan esta tecnología que, a pesar de ser muy "bonita" y "vistosa", es sumamente insegura y no debería ser usada en ninguna situación.

En los siguientes artículos de esta serie exploraremos los pésimos hábitos de utilizar Javascript de terceros y hasta el uso de "tarjetas de coordenadas" en los sistemas de banca en linea. Un saludo para mis colegas administradores de banca en linea de Rusia y Ukrania ;) Espero corrijan sus sistemas y que no sufran de estas fallas! No se lo pierdan!

Ver también:
Inseguridad Bancaria Online. Parte I
Inseguridad Bancaria Online. Parte II

7 comentarios:

  1. Ciertamente, es una verdadera lástima que los administradores de bancos en Latinoamerica no se interesen tanto en leer estas lineas y mejorar la seguridad de una manera verdaderamente práctica y efectiva, bueno, o por lo menos no manifiesten que lo hacen, eso si sería una esperanza para los que somos usuarios y, francamente, mudarme a Rusia o a Ukrania cerca de los que sí se interesan, no está en mis planes =D

    ResponderEliminar
  2. BUeno, Luego que recomendarias para mitigar este riesgo latente. OTP?

    ResponderEliminar
    Respuestas
    1. Hola Anónimo, muchas gracias por tu comentario. Mi recomendación sería contactar a un especialista en seguridad informática para que no sólo evalue la pertinencia de utilizar un OTP en tu contexto, si no para asegurarte que cualquiera sea la solución que decidas utilizar, ésta sea implementada de forma correcta. No te imaginas la cantidad de veces que he visto organizaciones que implementan soluciones muy complejas, "state of the art", por decirlo de alguna manera, pero por ahorrarse unos cuantos centavos delegan en personas sin mucha experiencia o no especialistas la responsabilidad de "tirar flechas" y poner las cosas a "medio funcionar". El resultado no es nada bonito. De hecho, estoy considerando escribir otro artículo para demostrar la siguiente conjetura:
      "Para toda buena práctica, standard, recomendación o cualquier otra 'bala de plata', existe al menos una situación o contexto en donde esa recomendación/buena práctica es completamente contra-producente". Mucho cuidado con seguir a ciegas las recomendaciones de tus vendedores. Para encontrar la verdadera solución a tu problema, es imperativo entender correctamente el problema. Para ésto, no te va a ayudar un OTP, ni ninguna otra tecnología "off-the-shelf". Contrata a un especialista que te ayude a dimensionar tu problema y seleccionar la mejor alternativa de remediación. Si me permites un último símil, lo peor que puedes hacer una vez caes en enfermedad es auto-medicarte, ¿cierto? Todavía peor es ir a la farmacia y preguntar al vendedor si tiene algún medicamento para la tos, ¿verdad? Mi recomendación viene exactamente por ese lado. Un gran saludo y mucha suerte.

      Eliminar
  3. De verdad gracias por compartir tus conocimientos con el publico, sobre todo en estos momentos que dependemos cada ves mas y mas de los sistemas de información y de las consecuencias de esa dependencia, por cierto esos cursos del SANS, son en Venezuela?

    ResponderEliminar
    Respuestas
    1. Hola Jose Angel, muchas gracias por tu comentario. Los cursos del SANS Institute los puedes tomar en varias modalidades. En la modalidad de "Local Mentor", los puedes tomar aquí en Venezuela y conmigo como facilitador. Si deseas más info al respecto escríbeme por aquí: http://latinsec.blogspot.com/p/contactame_22.html

      Eliminar
  4. tiene razon, cada vez que se lanza un nuevo sistema de seguridad siemprea habra la persona que se las arregle para romper la seguridad, asi que no abra lugar seguro dentro de red.
    yo diria si susede el robo por contraseña siempre pienso en algunos motivos.
    1- colocar el pass en un cyber.
    2- andar de miron en web "raras", descargar/ejecutar sus apliacaiones.
    3- ser un asiduo del p2p (los mp3 tambien pueden contener virus)
    4- descargar "crack" para aplicaciones y juegos jaja
    todo eso sin tener el antivirus actualizado y con una vercion "crack" del año 2006.

    los programas no nos eligen, somos nosotros los que elegimos a los programas.

    ResponderEliminar