Cita

"Those who are willing to pay a penny of security for a penny of usability will eventually have neither"

25 enero 2015

Analizando un correo malicioso

             
En cierta cuenta de correo  que  tengo repartida por muchos sitios (pero no en ninguno esencial) es normal que me lleguen a veces correos de spam. Correos que Gmail coloca eficazmente en la carpeta correspondiente. Estas vacaciones, sin embargo, me llegó uno a la bandeja de entrada. Al hecho curioso de que se salta los filtros de Google, se unía el detalle de que el cuerpo estaba vacío y solo contenía un anexo. Picada por la curiosidad y aprovechando el tiempo libre, me decidí a investigarlo para averiguar cuánta información pudiera sobre el origen y propósito de dicho correo (que intuía nada bueno). A continuación comparto el proceso y resultado de dicha investigación:

El nombre del remitente era "NOKIA CENTERy el asunto "PROMO". El anexo era un documento word "1..docx". Por supuesto, no lo abrí en la oficina (no queremos ser una puerta de entrada para APT ¿verdad?). Por supuesto, no lo abrí tampoco en casa. Habría que estudiarlo (con mucho cuidadito). Pero, primero, quería obtener algunos datos sobre el correo en si.

La dirección email del remitente (centernokia93@yahoo.co.id) correspondía con un dominio de Indonesia. Lo busqué también en Sherlock pero no encontré nada relevante. Así es que procedía a analizar el código fuente del email. Esto lo podemos hacer en Gmail con la opción "Mostrar original". La parte más relevante es la que se muestra a continuación:

Received: by 106.10.196.88; Tue, 23 Dec 2014 13:09:28 +0000
Date: Tue, 23 Dec 2014 13:09:28 +0000 (UTC)
From: NOKIA CENTER <centernokia93@yahoo.co.id>
Reply-To: NOKIA CENTER <centernokia93@yahoo.co.id>
Message-ID: <267297989.497716.1419340168301.JavaMail.yahoo@jws10970.mail.sg3.yahoo.com>

Y ahí vemos que la dirección IP de origen (106.10.196.88) corresponde a un servidor de yahoo de Singapour.

También vemos que el adjunto está codificado en base64:

Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=1..docx

Así es que copiamos el texto codificado que se encuentra a continuación en el fuente del email y lo dejamos en un fichero de texto para poder decodificarlo:

$ base64 -d adjunto.txt > doc.deco
$ file doc.deco
doc.deco: Microsoft Word 2007+

Si miramos el fichero original, obtenemos lo mismo:

$ file 1..docx
1..docx: Microsoft Word 2007+

Vemos que se trata de un documento word 2007. Sin embargo, al descargarlo (como veremos después) se comprueba en las propiedades de los ficheros que, tanto el documento como su binario embebido, tienen fecha de principios de 1980 y finales de 1979. Cosa curiosa que no sé qué puede significar.

Tenéis más explicaciones sobre cómo analizar el fuente de un correo y sus adjuntos en el blog de Flu-Project y en el de Security Art Work.



Lo siguiente era analizar el adjunto por si tenía regalito. Si lo analizamos con strings -a 1..docxx podemos ver si tiene cosas raras como macros, comandos de ejecución de ficheros o llamadas a urls. En mi caso, no había nada de eso. De todos modos, lo descomprimí para verle bien "las tripas"

Descomprimir un archivo de office es fácil: solo hay que cambiarle la extensión por .zip y luego descomprimirlo. Al hacerlo, crea una estructura de carpetas con varios archivos, fundamentalmente xml, que son los que forman el fichero en cuestión. En este caso, solo tenía un fichero OLE: oleObject1.bin. Subí ambos a sistemas multiantivirus como Virus Total y Malwr. También subí una foto que había dentro, por si acaso. El resultado fue que todo estaba limpio:

- En Virustotal: el docx el ole y la foto

- En Malwr: el docx y el ole.
 
Lo siguiente que hice fue pasar el oledump al archivo binario:

 $ sudo ./oledump.py oleObject1.bin

 1:       94 '\x01CompObj'
 2:       20 '\x01Ole'
 3:        6 '\x03ObjInfo'
 4:   438490 'CONTENTS'


Nada raro tampoco. La última versión del oledump la podéis descargar del blog de Didier Stevens, donde también explica un poco cómo usarlo. También hay algunas explicaciones en este otro blog.

Hay más cosas que se pueden hacer para analizar adjuntos ofimáticos. Pero no me parecía necesario porque, con las pruebas anteriores, parece que quedaba claro que el fichero en cuestión era inofensivo. Lo único que hice, para terminar, fue abrir con cuidado el anexo en una máquina virtual y monitorizar las conexiones con Wireshark, para asegurarme de que no hacía nada raro. Para ello, instalé una imagen de Windows 7 en VirtualBox.

El resultado fue que no había ningún "bicho" que se conectara con un C2, sino solo un documento de scam comunicándome que había sido agraciada con un premio de Nokia y que debía enviarles mis datos bancarios a una dirección. ¡Era la lotería perfecta! Una lotería en la que te dicen que te ha tocado sin participar porque han hecho un sorteo aleatorio entre varias direcciones de correo. Y que no se lo cuentes a nadie para evitar no sé qué fraude (para no alertar a los servicios anti-spam, claro). Venía también un número de teléfono y, buscando por él en Google, encontré que había gente que había recibido un correo parecido, como en este foro. Todas las personas que encontré que se quejaban de lo mismo eran de India, Pakistán, por ahí. Y, como el correo parecía provenir de Singapour o de Indonesia, todo quedaba en la zona. Pero ¿por qué me llegó a mí un scam cuya fuente y objetivos parecían circunscribirse al Océano Índico? Ni idea.

Advierto que no soy una experta forense, que la investigación tal vez no sea exhaustiva, que quizá se hubieran podido hacer más cosas. Que hay bichos que saben esconderse bien de los antivirus. Pero que he hecho todo lo posible por "cazarlo" si lo hubiera. Y que, de todos modos, me siento bastante protegida porque tengo Linux ;) En cualquier caso, la experiencia ha sido divertida y ha sido una manera de iniciarme tímidamente en el mundillo del análisis de malware.




18 enero 2015

The Imitation Game

                                                 

Yo también he visto la peli The Imitation Game, que trata sobre la contribución que hicieron el gran criptógrafo Alan Turing y su equipo para descifrar los mensajes de la máquina alemana Enigma durante la Segunda Guerra Muncial. Como soy una reciente apasionada de la criptología, no podía perdérmela.

Aprendí mucho sobre Turing y cómo se rompió Enigma en el curso de criptología que hice y en el libro de Microhistorias. Así es que la película era una manera de ver cómo había tratado el tema, recordar, comparar y pasar un buen rato.

La verdad es que la peli es más una reivindicación de la figura de Turing que un documental sobre su carrera y pasa de puntillas por algunos detalles muy interesantes desde el punto de vista criptológico: el papel de los polacos, los detalles del texto interceptado que ayudaron a romper la clave; que, si bien son mencionados, quedan un poco eclipsados por las relaciones interpersonales de Turing y su particular forma de ser. Pero es que es para el gran público. También se permite algunas licencias de guión como ponerle nombre a "la" máquina (en realidad, hubo varias y ninguna se llamó como su amigo de infancia). 

Para que no os perdais, debéis tener en cuenta que la película discurre en tres tiempos que se van alternando: el momento final en el que es detenido e interrogado por el policía, el de la trama principal (que es cuando trabaja en Bletchley Park) y el de sus recuerdos de infancia. Los tres están relacionados y referenciados, ya que la peli está todo el rato jugando con el tiempo. Y, sin querer hacer spoilers, prestad atención a una de las primeras escenas, que incluye cianuro y una manzana, porque tiene que ver con algo que sucede después.

                              

En mi opinión, el título de la película no tiene nada que ver con Enigma, aunque el guión gire principalmente al rededor de ésta. Es una conclusión que saco de la conversación de Turing con el policía, donde explica si sería posible hacer una máquina que pensara, aunque no como un humano, y si sería posible distinguirlos. Es que Turing también es el autor del test que lleva su nombre, que sirve para saber si lo que tenemos delante es un ordenador o una persona. ¿Os suenan de algo los captchas esos famosos que hay que teclear (por ejemplo, para poner un comentario en este blog)? Bueno, el test es algo más complejo, pero esa es la idea. Y aún la gente se sigue preguntando si podrá haber algún día una máquina que lo engañe imitando a la perfección la lógica de una persona. Turing también se planteaba si podría haber una máquina de propósito general, que sirviera para varias cosas y no para una sola. Y todas esa cosas se las cuenta al policía, dejando entrever la evolución de la informática en los siguiente años. Como con otros genios que murieron jóvenes, al ver su legado, uno se pregunta lo que Turing hubiera podido llegar a aportar, de haber vivido más tiempo.

Lo que más me gustó: la interpretación de Benedict Cumberbarch, que lo borda (creo que merece la pena verlo en inglés). 

Lo que menos: que no se centrara más en los detalles criptográficos y las licencias del guión antes comentadas. Lo segundo creo que es innecesario. Lo primero, lo comprendo: para que el público general no se aburra, me he tenido que aburrir un poco yo ;).

Si queréis saber algo más sobre Enigma, no os perdáis esta estupenda recopilación de vídeos en el blog de Brady.

También es interesante este programa de radio sobre Joan Clark, la amiga (y prometida) de Turing:

Y para saber lo que opinan otros bloggeros sobre la película:




(no os perdais los comentarios de los lectores, que también aportan).

Espero que os haya gustado la reseña. Y, si os animáis a ir a verla, podéis pasaros por aquí a comentar qué os ha parecido. :)

14 enero 2015

Resolviendo un enigma



... o, al menos, intentándolo.

Durante las vacaciones, ElevenPaths presentó un reto criptológico con premio. Como desde que realicé el estupendo Curso de Especialidades Criptológicas del CCN, soy una aficionada a la materia, me puse a ello. La verdad es que lo resolví a medias. Y, en todo caso, no a tiempo. No obstante, me parece interesante compartir el proceso que seguí: sirve para repasar algunas ideas de criptología y, para los legos en la materia, quizá para aproximarse a ella.

El criptograma consistía en un gif animado, con el siguiente texto:

C1UQTMO6GZ

Al principio no dieron ninguna pista y, viendo que ninguna letra se repetía, pensé que en el texto original tampoco habría letras repetidas. Esto, claro está, si se tratara de un cifrado de sustitución monoalfabética, en el cual cada símbolo del texto en claro, se corresponde siempre con el mismo símbolo en texto cifrado, en una relación biunívoca. Un ejemplo de este tipo de cifrado es el de César (sí, por Julio César, que ya lo usaba), en el que cada letra se sustituye por la que ocupa un número dado de desplazamientos en el alfabeto (normalmente 3), siendo este número la clave del criptograma. Estaba claro que, en este caso no se estaba utilizado dicho algoritmo (si no, podéis probar a sustituir la C por la Z, la U por la R, etc. y veréis que no sale nada coherente). Pero, como no tenía mucho tiempo y está aferrada a la hipótesis del monoalfabeto, pensé que, fuera cual fuera el algoritmo, debía buscar un texto en el que los símbolos no se repitieran, que incluyera números y letras y que tuviera algo que ver con las fechas en las que estábamos (en criptología, la imaginación también vale); así es que me dije: "FELIZ 2015". ¿Verdad que es genial? Pues no, no era eso.

Parece ser que nadie pudo resolverlo, porque prorrogaron la fecha de la solución y ofrecieron una pista. Y aquí es donde llegamos a otro punto importante en criptología: para romper un criptograma siempre necesitamos "algo" (una pista sobre el algoritmo, un trozo de algo cifrado cuyo claro conozcamos, alguna idea sobre alguna palabra que pueda incluir el texto original, el contexto en el que se usa...). No se puede criptoanalizar un texto sin tener absolutamente ni idea de qué va la cosa. Si leéis "La isla del tesoro" o veis "The imitation game", comprenderéis mejor lo que digo.


La pista que dieron fue "Vigenere protege tus dulces". Y ahí ya tenemos dos: el algoritmo utilizado (Vigenère) y "algo" sobre el texto cifrado (está en plural y tiene que ver con los dulces).

El de Vigenère es un cifrado de sustitución polialfabética, en el que un misma letra del claro no siempre devuelve la misma letra en el cripto y que utiliza una tabla como la siguiente:

(fuente: wikipedia)
Las letras de las columnas, arriba, corresponden con las del texto en claro y las de las filas, a la izquierda, con las de la clave. La clave se pone debajo del claro, repitiéndose si fuera necesario por ser más corta que éste. Así pues, si en nuestro claro tenemos una M y la letra de clave que hay debajo es una K, tendremos que buscar la intersección entre la columna M y la fila K, que vemos que es una W. 

Para descifrar hacemos al revés: conociendo la clave, buscamos en la fila de la letra correspondiente (en este caso, la de la K) dónde está la letra del cripto (la W) y subimos para arriba en esa columna, para ver qué letra del claro es (la M). 

Otra manera de ver esto es pensar que Vigenère es un César mejorado en el que el desplazamiento no es fijo, sino que para cada letra del claro viene marcado por la letra de la clave que está debajo. En el ejemplo anterior, la K indica que hay que sumar 10 a la posición de la letra M, lo que nos da la W. Y para descifrar, restamos.

Pero claro, descifrar presupone que conocemos la clave. Sin embargo, nosotros estamos criptoanalizando, que es un poquito más difícil porque somos el enemigo (o el participante del concurso) y no sabemos la clave. ¿Cómo hacemos entonces?

Vigenère presumía de que su cifrado era irrompible y, por mucho tiempo, se creyó así. Pero al final se demostró que si el texto era lo suficientemente largo, las frecuencias acababan repitiéndose, lo que hacía posible su criptonálisis. Sin embargo, éste no es el caso del cripto que nos ocupa, que solo tiene diez letras. En este caso, hay que utilizar el método de la palabra probable. Este método consiste en imaginar una posible palabra que pueda aparecer en el texto claro, colocarla bajo el cripto y, a partir de ahí sacar la clave de manera natural, restando las posiciones de desplazamiento en el alfabeto. Como se supone que clave es una palabra de diccionario, si lo que obtenemos no tiene sentido, desplazamos la palabra bajo el cripto y volvemos a hacer lo mismo, hasta que aparezca algo coherente.

¿Qué palabra probable tenemos en el cripto de ElevenPaths? Pues bien, sabemos que tiene que ver con dulces; así es que una posibilidad es ir probando con todos los que se nos ocurran (mazapanes, chocolates...). Pero además sabemos algo interesante: según la pista que nos dieron, está en plural. Así es que, probablemente, termine en "es". Pues lo que hice fue, en vez de ir probando distintas palabras, colocar ES debajo de GZ, a ver qué daba. Y entonces vi la luz.


Si lo hacéis, con el método explicado anteriormente, veréis que el resultado es CH. Y, rápidamente, recordé una palabra que tiene mucho que ver con ElevenPaths: Latch. Usando Latch como clave repetida dos veces bajo el cripto quise descifrarlo utilizando la tabla anterior. Pero me tropecé con un escollo: el Vigenère clásico no tiene números. ¿Cómo es que en el cripto aparecían? Aquí es donde me obcequé un poquillo, pensando que los números tenían que ser en realidad letras: el 6 la G y el 1 la I; y, al descifrarlo obtuve algo como "RIBOMBONES" y deduje que las dos primeras letras eran tan solo "ruido" que se habían añadido al texto para aumentar la dificultad del criptoanálisis y que había simplemente que prescindir de ellas. En vez de darme cuenta de que bastaba con ampliar el alfabeto, colocando las cifras del 0 al 9 a continuación de la Z, tal y como explicaron en la solución del blog, lo que daba como resultado "11BOMBONES" y que era precisamente el premio: una caja con 11 bombones.

De todos modos, aunque lo hubiera resuelto completamente bien, no me hubiera servido: para cuando yo mandé el correo varias personas ya se me habían adelantado con la solución correcta. Y es que, como bien sabía el equipo de criptólogos que trabajaba a contrarreloj en  Bletchley Park, no basta con resolver un enigma: hay, además, que hacerlo a tiempo.

                      

Espero que hayáis disfrutado del ejercicio tanto como yo y que os haya picado la curiosidad por este mundillo tan interesante como es el de la criptología. Solo me queda dar las gracias a ElevenPaths por este delicioso entretenimiento y a Ángel Goitia la enhorabuena por el premio.