TeamViewer bajo la lupa Forense.

TeamViewer es un programa que permite a los usuarios controlar remotamente otro ordenador sin necesidad de grandes conocimientos informáticos. Tan solo es necesario introducir un identificador y un PIN para de este modo tomar el control de cualquier ordenador, así de fácil, desde cualquier parte del mundo podremos controlar un ordenador con la única condición de que disponga de una conexión a Internet y el programa Teamviewer instalado. Lógicamente este es un programa totalmente lícito, que está pensando para administrar o reparar remotamente ordenadores sin la necesidad de estar físicamente delante de ellos.

 

Fig. 1 Hack Teamviewer

 

Pero, si este software está diseñado para ahorrar costes y facilitar el trabajo a los administradores de sistemas. – ¿Qué hago escribiendo sobre TeamViewer en GLIDER.es?. – La realidad nos indica que muchos “ciber ataques“, normalmente sufridos en pequeñas y medianas empresas, no son producto de APTs (Advanced Persistent Threat), ni tampoco de ataques avanzados mediante el uso malware tipo 0 Day cuyo código no es todavía conocido. Siguiendo la premisa del principio de economía de la Navaja de Ockham: en igualdad de condiciones, la explicación más sencilla suele ser la más probable. Así que si nos tenemos que enfrentar a un ataque que ha sufrido una empresa, por el cual le han borrado toda la base de datos de clientes o facturación. – ¿Por dónde comenzaríamos el análisis?, ¿buscaríamos trazas de malware o analizaríamos los logs de acceso de la máquina comprometida para ver y determinar lo que ha ocurrido?. Si disponemos de un equipo lo suficientemente grande, podemos comenzar a estudiar varias hipótesis al mismo tiempo, pero en condiciones normales, iremos una por una, siguiéndola hasta que la podamos descartar o nos lleve a unos indicios suficientemente robustos que identifiquen la causa del incidente de seguridad. Hoy, como tantas otras veces, el origen del ataque provine de algo tan antiguo como es el ego, la venganza o la ira, más concretamente de un hipotético empleado que fue despedido de una empresa y como venganza decidió conectarse a los servidores de su antiguo trabajo para hacer todo cuanto daño esté a su alcance.

Ahí es donde entra TeamViewer, si conjugamos una empresa con una política de credenciales laxa, que no elimina las cuentas de usuario de un empleado despedido, con un empleado/delincuente, con mucho ego, mucha ira, mucha ansía de venganza y poco sentido común y auto control, que aprovechándose del programa que utilizó durante años para conectarse de forma remota a su empresa y poder trabajar desde fuera de la sede de la misma, obtenemos un nuevo artículo para GLIDER.es. Un nuevo artículo en el que TeamViewer será la fuente de Evidencia Digital a estudiar.

 

Fig. 3 Una fuente de evidencia digital

 

Tampoco hay que olvidar que no siempre todo va a ser culpa de un empleado al que han despedido y decide conectarse de forma remota a su anterior empresa para eliminar o robar información importante. En otras ocasiones el ataque podrá ser fruto de una mala configuración del sistema, por ejemplo al exponer de forma pública e involuntaria las credenciales de acceso al sistema remoto de TeamViewer, credenciales que alguien con no muy buenas intenciones puede utilizar para hacer el mal.

 

Fig. 4 Leak TeamViewer en un establecimiento hostelero

 

Seguir leyendo

Todo lo que WhatsApp sabe sobre ti.

“Todo lo que WhatsApp sabe sobre ti”, en el mundo en el que vivimos, de noticias sensacionalistas y normalmente faltas de rigor, este sería el título ideal para este artículo, con el que seguro que cosecharía muchas más visitas que con el título que elegí, pero como ya sabéis, no soy muy fan de las noticias tipo “clickbait” para atraer seguidores, prefiero la objetividad y el realismo, por eso que el artículo de hoy se llama: “Todo lo que WhatsApp sabe sobre ti”. 😉

Como seguro que ya sabréis, el próximo 25 de mayo de 2018, comenzará a aplicarse en España y en el resto de Europa, el Reglamento General de Protección de Datos (RGPD), que sustituirá a la actual normativa vigente. Aunque realmente este reglamento ya entró el vigor hace años, sin embargo se dio una moratoria de dos años para que las Instituciones, empresas y organizaciones que tratan datos fueran preparándose y adaptándose para el momento en que este Reglamento se comenzase a aplicar.

 

Fig. 1 Menú para solicitar información de WhatsApp

 

Lógicamente, yo no soy experto en Protección de Datos, por eso no voy a entrar a comentar este Reglamento, sin embargo para el post que hoy me ocupa, sí que me gustaría hablar del artículo 59 de dicho Reglamento, en el que dice que se deben facilitar al interesado los datos personales que obren en una base de datos sobre su persona, para que esta puede rectificar u oponerse a los mismos. – ¿Y esto que tiene que ver con la informática forense?. – Pues que las distintas redes sociales, plataformas de correo… Etc deben permitir ver a sus usuarios todos los datos que tengan sobre ellos. WhatsApp, como es lógico, no queda fuera de esta ley, es por ello, que desde la versión 2.18.132 de WhatsApp, ya se ofrece a los usuarios de esta red social la posibilidad de generar un informe con todos los datos que esta aplicación conoce sobre sus clientes/usuarios. Esto es exactamente de lo que voy hablar en este artículo: cómo lograr obtener este informe y mostrar la información que contiene, información que no solo va a tener una importancia legal,  en el contexto de un análisis forense informático, será una valiosa fuente de datos. Vamos a ello:

 

Fig. 2 Artículo 59 RGPD

 

Seguir leyendo

Solución Final al Forensic CyberSecurity Challenge. Parte 2/2

Ya ha pasado casi un mes de la celebración de ForoCiber en la ciudad de Badajoz, como ya os conté en el artículo: “Solución al Forensic CyberSecurity Challenge. Parte 1”, fui uno de los retadores del CTF (Capture the Flag), de la cátedra ViewNext-UEx sobre “Seguridad y Auditoría en Sistemas de Software” que se llevó a cabo en ForoCiber, mas concretamente me encargué del diseño del reto forense.

Como ya sabéis, GLIDER.es, simplemente es un sitio web dónde cuando me apetece y tengo el suficiente tiempo, escribo unas cuentas lineas sobre temas relacionados con la informática forense, hacking o cualquier otro tipo de aventura. La finalidad de esta web, ni es obtener dinero, ni llegar a situar a GLIDER.es como referente en webs de este tipo. Los que me conocéis, sabéis que esto es simplemente un hobbie que terminará cuando ya no me motive escribir este tipo artículos, eso sí: ¡Espero que todavía quede mucho para que llegue ese día!. Os estaréis preguntando para que os cuento todo esto ahora, el motivo es sencillo, últimamente no dispongo de todo el tiempo que me gustaría para escribir artículos en GLIDER.es, y tengo claro que escribir aquí nunca se convertirá en una obligación, como ya dije, es un simple entretenimiento.

Durante este mes habéis sido muchos los que me escribisteis para preguntar cuando publicaría la segunda parte del artículo: “Solución al Forensic CyberSecurity Challenge”. Os agradezco enormemente vuestro interés por los temas que aquí público, y sobre todo por los ánimos que me dais para continuar, pero tenéis que entender que escribir un artículo técnico con las características de los aquí publicados requiere mucho tiempo, tiempo del que no siempre se dispone. Pero como mas vale tarde que nunca, y lo prometido es deuda, hoy por fin tengo un rato para sentarme tranquilamente delante del ordenador, desconectar de otros quehaceres (que a veces también es necesario), y escribir un artículo mientras disfruto de un sabroso café con leche. Así que os voy a contar la forma de resolver el: Forensic CyberSecurity Challenge.

En primer lugar quiero pedir disculpas a los que habéis leído la Parte 1 de este artículo, en ella os explicaba un método un tanto bizarro (extravagante) para unir las 157.288 partes del fichero de la imagen forense. Ya os comenté que esa no era la forma mas “cómoda” para realizar el concatenado de ficheros, pero en ese momento (la competición estaba abierta) no podía dar una pista que favoreciera a los competidores que visitaran GLIDER.es respecto de los que no, por eso di una pista para que los que estaban atascados pudieran continuar en cierto modo, pero a cambio, tendrían que invertir mucho tiempo en ejecutar todos los comandos que en ese artículo detallé, y no eran precisamente pocos 😉

Seguir leyendo

Solución al Forensic CyberSecurity Challenge. Parte 1/2

Como seguro que sabéis, hace ya unos meses que Andrés Caro, profesor de la Universidad de Extremadura y director de la Cátedra de patrocinio ViewNext-UEx sobre “Seguridad y Auditoría de Sistemas Software” y Tote Sancho, Ingeniero en Informática y también investigador de la Cátedra ViewNext-UEx, me propusieron desarrollar un #CiberRETO forense, de dificultad alta, para que todo aquel que quisiera participar en la competición individual y demostrar sus competencias en el ámbito de la ciberseguridad, lo pudiera hacer a través de esta fantástica iniciativa, cuya finalidad es detectar y premiar a las nuevas promesas de la ciberseguridad del ámbito nacional. Además, al ganador de la competición, entre otros premios, se le regalará un ordenador portátil de última generación.

 

Fig. 1 Flyer CyberSecurity Challenge

 

La competición se basa en el sistema CTF (Capture the Flag), por lo que a cada participante, se le entregaran una serie de ficheros o accesos a sistemas informáticos, para que a través de distintas técnicas de: Ingeniería inversa, Exploiting, Análisis Forense, Hacking web, Criptografía y Esteganografía, puedan ir descubriendo cuales son los flags de cada una de las pruebas, y así, ir obteniendo puntos en la clasificación final. El que mas puntos obtenga, ganará la competición.

 

Fig. 2 Alzando la bandera en Iwo Jima

 

En el caso del reto forense, se entregará a cada participante un fichero tipo TAR.GZ, nombrado como: “IMAGEN_DIFU_ForoCIBER_m4nu_GLIDER_Forense_MD5_e1b316594ff7bf55c8f8488f5aff4a7b.tar.gz”, con un peso total de 3,4 MB (3.362.087 bytes para ser mas exactos). A partir de este fichero, cada uno de los competidores tendrá que desarrollar sus capacidades técnicas, lógicas e intuitivas para poder realizar un tratamiento adecuado de esta evidencia digital y lograr localizar el tan preciado flag.

Cuando Andrés y Tote me pidieron este reto, al momento sabía lo que tenía que hacer, y esto no es otra cosa que crear un reto realista. En algunas competiciones CTF en las que he participado como competidor, el apartado de análisis forense se basaba en retos totalmente inverosímiles, es decir, que en la vida real nunca se le van a dar esos casos a ningún analista. Por eso yo buscaba huir de ese tipo de pruebas “teóricas”, así que he diseñado una prueba basada completamente en mis experiencias personales y reales a la hora de realizar análisis forenses de distintas evidencias digitales. Una vez explicado esto, y a falta de poco mas de 24 horas para que termine el plazo de presentar las soluciones a los retos, les dejaré en este artículo una pequeña pista a todos aquellos competidores que están un poco estancados con la prueba forense. Ahí va:

En este caso, y en cualquiera que se nos pueda dar, lo primero que deberemos hacer con el fichero TAR.GZ que nos ha proporcionado la organización es fijarnos en el nombre del mismo, quizás a través del nombre podamos obtener la primera pista del reto, o quizás no, pero la única forma de averiguarlo es comprobándolo. En este caso, podemos ver que el nombre del fichero termina en: “MD5_e1b316594ff7bf55c8f8488f5aff4a7b”.

 

Fig. 3 Fichero para analizar

 

Teniendo en cuenta que se trata de 32 caracteres hexadecimales precedidos de la palabra MD5, podemos suponer que sea un HASH tipo MD5 de algo. – ¿Y de que podrá ser?. – Pues por poder puede ser de muchas cosas, pero lo mas probable es que sea: o el hash de una contraseña “cifrada” o el hash del fichero en si. Para comprobar si se trata de una contraseña cifrada, existen muchas formas, pero la mas sencilla es que Google trabaje por nosotros, tan fácil como buscar la cadena en cuestión en el buscador, si nos arroja algún resultado, será un indicador de que se puede tratar de una contraseña:

 

Fig. 4 crack the hash by Google

 

En este caso es negativo, pero si por ejemplo, si el string fuera: “210cf7aa5e2682c9c9d4511f88fe2789” Podríamos pensar que tiene alguna relación con la palabra “admin”, a la cual le corresponde ese hash. Como no se trata de nada de eso, nos olvidamos de esta teoría y pasamos a la siguiente. – ¿Que otra cosa puede ser?. – Lo mas probable es que sea el hash del mismo fichero, así que vamos a comprobarlo:

 

Fig. 5 Hash del fichero evidencia.

 

Como se puede ver en la imagen superior, efectivamente se trata del hash MD5 del propio fichero. Si estas pensando como es posible insertar en el nombre de un fichero el hash de propio fichero y si esto no es un poco como la película de “Inception”, la realidad es que no, como ya expliqué en el artículo: “Prueba Nula, el hash no coincide”  al calcular el hash de un fichero no influye el nombre del propio fichero, así que tranquilamente podremos calcular el hash de cualquier fichero, luego renombrar el fichero por un nombre que incluya la suma MD5 calculada sin miedo a modificar el hash calculado previamente, y no, no es brujería, es simplemente comprender como opera una funciona hash. Todo muy bonito. – ¿Pero para que ha valido todo esto?. – Realmente para nada. Que el nombre del fichero incluya un hash, en este caso solo sirve para comprobar la integridad del fichero que hemos descargado y que no está corrupto o que no nos ha fallado la descarga. Lo siento, el forense es así, no vas a obtener un resultado de interés con cada comando que ejecutes.

Visto lo visto, vamos a descomprimir el fichero para ver lo que tiene dentro, y tratar de continuar con el reto:

 

Fig. 6 Descompresión de la imagen.  

 

Si al tiempo que estás leyendo este artículo vas ejecutando los pasos que te voy contando por aquí, no te asustes por lo que te acaba de ocurrir al tratar de descomprimir el fichero, no estás viendo Matrix en tu consola, esto como ya os dije: es la vida real, no es un reto que alguien se ha inventado en su casa, y si, acabáis de descomprimir ni mas ni menos que: 157.288 ficheros de un TAR.GZ de menos de 4MB!!!.

 

Fig. 7 un maravilloso ls | wc -l

 

– ¿Pero que son todos esos ficheros que parecen secuenciales y tienen nombres como: “IMAGEN_ForoCIBER_m4nu_GLIDER_Forense0000aa”, “IMAGEN_ForoCIBER_m4nu_GLIDER_Forense0000ab”, “IMAGEN_ForoCIBER_m4nu_GLIDER_Forense0000ac”?. – Vamos a tratar de averiguarlo. Si abrimos el primero de los ficheros (teniendo en cuenta el orden del abecedario) con un editor hexadecimal podemos comprobar que el fichero comienza con los valores hexadecimales:4E 54 46 53, o lo que es lo mismo: el valor con el comienzan todas las particiones de discos duro en formato NTFS.

 

Fig. 8 cabecera NTFS en hexadecimal

 

Lo que significa que muy probablemente, teniendo en cuenta el propio nombre del fichero, se trate de una imagen forense de algún tipo de dispositivo de almacenamiento, y si, como seguro que os estáis imaginando, la imagen está troceada en mas de 150 mil partes. – ¿Por qué?. – Eso mismo me pregunté yo el día que me entregaron una imagen forense de un disco duro de 1Tb troceado en partes de 1024 bytes. Aprovecho la ocasión para agradecer a la persona que tuvo a bien trocear en mas de un millón de partes una imagen forense y luego renombrar esos trozos de forma aleatoria para facilitarme la tarea de tratarla. En serio: gracias, gracias a ti hoy tenemos este reto 😉

Ahora comienza lo divertido, si estás pensando en ir a tu Windows, abrir tu herramienta forense favorita y tratar de cargar la imagen “a pelo”, quizás te encuentres con que no vas a poder abrir una imagen troceada en tantas partes. – ¿Y ahora que hacemos?. – Pues si está troceada, vamos a unirla. – ¿Como?. – Con “cat”. Si sois usuarios de sistemas Linux, habréis utilizado alguna vez el comando “cat” para “abrir” un fichero de texto y poder leer su contenido, pero igual lo que no sabéis (o quizás si) es que “cat” realmente no es un visor de texto (aunque se utilice para ello), “cat” lo que hace realmente es concatenar el fichero que le pases con el siguiente, lógicamente si solamente le pasas un fichero y no diriges la salida a ningún sitio, nos mostrará por consola el contenido del fichero. Pero como “cat” realmente lo que hace es concatenar el contenido de los ficheros que le pases, es decir, “unir los ficheros”, podremos concatenar (unir) todos y cada uno de los ficheros en los que se ha partido la imagen y lograremos tener una imagen válida para trabajar, pero… ¡Oh, wait!

 

Fig. 9 cat fake

 

Al igual que el resto de software forense, la lista de argumentos es demasiado larga para concatenarla de una sola atacada, así que tendremos que ir por partes, o mejor dicho, por trozos. Os voy a contar la forma mas extravagante que se me ha ocurrido para unir todas estas partes en una sola, no digo que no existan mas métodos, pero seguro que ninguno es tan chulo como el que os voy a enseñar:

Lo primero será mediante cat, ir concatenando un número limitado de partes, al estar nombrada cada parte en un orden alfabético, podemos ir ejecutando el comando: “cat NOMBRE_DEL_FICHERO_a* > salida1” para en vez de concatenar todos los trozos de una sola vez, ir haciéndolo por tramos y que de ese modo, cat no se sature. Es decir, primero con la A, luego la B, la C, la D… Y así todo el abecedario. ¡OJO! No nos olvidaremos de cambiar el nombre del fichero de salida para que no se sobre escriba con el siguiente, y a poder ser estableceremos nombres que nos permitan conocer el orden de creación: salida1, salida2, salida3

 

Fig. 10 concatenar, concatenar y concatenar…

 

De momento todo va bien, el problema es al hacer: “cat NOMBRE_DEL_FICHERO_z* > salida27”, resulta que en la Z, comienza la siguiente serie de números, por lo que de nuevo nos hemos pasado con el número de argumentos que cat es capaz de procesar.

 

Fig. 11 Quien mucho abarca, poco aprieta.

 

Así que a volver a realizar otro segundo nivel de tramo, en este caso sería algo tal que así: “cat NOMBRE_DEL_FICHERO_za* > salida27”…

 

Fig. 12 cat…

 

Si a estas alturas ya estáis pensando que esto es un rollo, siento deciros que ni tan siquiera habéis comenzando, aún os quedan otros cuatro niveles mas de “abecedario” para poder pasarle un argumento completo a cat sin que se sature. ¿Quien dijo que fuera fácil?… Venga, a seguir: AZA, AZB, AZC, AZD,…, ZZHA, ZZHB, ZZHB,… ZZHYSA, ZZHYSB, ZZHYSC… No seré yo quien diga que no existen métodos mas sencillos para unir estas ciento cincuenta mil partes de una imagen, pero nadie me podrá decir que este no es un método válido, aunque si un poco estrafalario. Aquí es dónde cada cual deberá sacar su ingenio a trabajar para encontrar un método mas “elegante” y sobre todo, eficiente para realizar esta tarea lo mas rápido posible, ya que solo os quedan 24 horas para terminar el reto.

Una vez hayáis acabado de “arrejuntar” todos esos ficheritos, solo os quedará concatenar lo ficheros ya concatenados, valga la redundancia:

 

Fig. 13 concatenando lo concatenado

 

Ahora si, ya sea con este método, programando un script que os automatice la tarea, a hachazos 😉 o con lo que quiera que se os haya ocurrido, habréis logrado obtener un fichero de unos 15728640 bytes, o lo que es lo mismo 15,7MB (si os falta un solo byte, es que algo habéis hecho mal). Si os habéis fijado, entre los tropecientos mil trozos de imagen seccionada, había un fichero llamado: “IMAGEN_ForoCIBER_m4nu_GLIDER_Forense.info”, si lo abrimos con cat (jeje) veremos que reza lo siguiente:

 

Fig. 14 Hash SHA1 de la imagen.

 

En efecto, es el log de creación de la imagen forense, y entre sus lineas nos encontramos con una que nos dice cual es la firma digital, ahora si, en SHA1, de la imagen forense, en este caso, el HASH: 0e991fc1b321fabce495099a783c4146fe074e9f. Si todo ha ido bien, y no nos hemos confundido en el orden a la hora de unir todos los trozos de la imagen y sobre todo, si no nos hemos dejado ningún trozo atrás, al comprobar el HASH SHA1 de nuestro imagen, nos debería dar este mismo resultado, veamoslo:

 

Fig. 15 comprobación del hash

 

En efecto, el hash coincide y ya podremos comenzar el análisis de la evidencia., ¡Por fin!, pero esto ya lo dejamos para otro día, que el reto todavía continua abierto.

 

Continúa leyendo la Segunda parte de  Solución al Forensic CyberSecurity Challenge 2.  PULSANDO AQUÍ.

 

Minando que es gerundio. Parte 4/4

Si, llevo ya unos cuantos días sin publicar ningún nuevo artículo en GLIDER.es. Desde el último artículo que publiqué, en el que os contaba como implementar un minero de criptomonedas en una página web (y que no os pillen) no he vuelto a publicar nada mas. Las malas lenguas ya estaban diciendo que había obtenido miles de Euros con el minero web de Monero, y que me había retirado a las paradisíacas islas bañadas por las cálidas y cristalinas aguas del océano Atlántico, si, a las islas Cíes. Pero no, de momento lo obtenido con la minería web no me da para tanto. En este último artículo de la saga “Minando que es gerundio” os contaré los beneficios reales que he obtenido, para que podáis comprobar desde un punto de vista totalmente objetivo y riguroso cuan sencillo, o no, es obtener ingentes cantidades de dinero con esta nueva moda de la minería.

 

Fig.1 Paradisíacas islas Cíes

 

Hace poco mas de un mes, el 17 de diciembre de 2017, cree una cuenta en la plataforma CoinHive, para obtener mi primer minero web de criptomonedas, en este caso se trata de Monero, una moneda, que como ya expliqué, está especialmente diseñada para ser minada a través de CPU de ordenadores normales y no a través de chips tipo ASIC como es el caso de los BitCoin.

 


Fig.2 Plataforma CoinHive

 

Una vez cree mi cuenta en CoinHive, el siguiente paso fue obtener el minero, o lo que es lo mismo, el código JS (JavaScript) que me va a permitir “tomar el control” de los ordenadores que visiten una página web concreta, en este caso, de un apartado de GLIDER.es para que los visitantes minen para mi. Este código se puede decir que se divide en dos partes, o al menos, yo lo implementé así.

La primera parte, sería el código fuente del minero en si, en este caso el código lo proporciona directamente CoinHive, así que yo no me tengo que romper la cabeza en desarrollarlo, simplemente lo invoco desde un Script y listo. El código que actualmente está usando CoinHive para sus mineros lo podéis encontrar en este enlace: https://coinhive.com/lib/coinhive.min.js

 


Fig.3 Codigo JS CoinHive

 

Seguir leyendo