Forensic CTF Writeup: Baud, James Baud (II)

En el primer artículo abrimos boca con algunas cuestiones del forense, así que ahora toca continuar con el primer plato.

4. What makes this email service difficult to analyze?

ProtonMail es un servicio de correo web diseñado teniendo en cuenta la seguridad. Cuando un usuario se crea una cuenta, debe generar a su vez unas claves que cifran todos sus correos. De esta forma ProtonMail (si nos fiamos de ellos, por supuesto) nunca va a tener acceso a los datos del usuario al estar cifrados de forma segura.

Los correos que enviamos a otros usuarios de ProtonMail se cifran automáticamente con las claves públicas del destino, por lo que tampoco pueden interceptarse. Y obviamente todas las comunicaciones van protegidas con TLS.

Sin ofrecer una seguridad 100% (eso de que las claves me las guarde un tercero no me termina de convencer), es una solución más que aceptable para usuarios que requieran de un nivel de seguridad medio-alto y que no tengan unos conocimientos técnicos avanzados.

5. What is the email address of the user?

Linux way
Si seguimos revisando la SQLite tenemos un poco más abajo la respuesta.

jamesbaudii

Respuesta: “notroger@protonmail.com”

Windows way

Realizamos la misma operación con el BrowsingHistoryView:

jamesbaudii2

Respuesta: “notroger@protonmail.com”

Conclusiones: Aquí las opciones eran múltiples aunque lo más obvio sería tirar de Volatility y ya veremos que nos va a tocar hacerlo en nada. Con el trabajo hecho anteriormente es pan comido tanto en Windows como en Linux.

6. What email address does he correspond with?

Linux & Windows

Entramos en territorio Volatility, que afortunadamente puede ser ejecutado sin problemas tanto en Linux como en Windows (que también dispone de su propio ejecutable standalone), por lo que la solución será equivalente en ambos casos.

Vamos a examinar la memoria de Chrome a ver qué información somos capaces de obtener. Si hacemos un pslist observamos que hay cinco procesos de Chrome: cuatro procesos que cuelgan de un único proceso padre (es decir, el gestor y cuatro pestañas abiertas).

0x93fbb780 chrome.exe         5704   5980 23...0        0      2      0 2016-10-30 01:51:50 UTC+0                                 
0x92071c40 chrome.exe         2900   5704 24...2        0      2      0 2016-10-30 01:51:50 UTC+0
0xb451b540 chrome.exe         4076   5704 25...6       0      2      0 2016-10-30 01:52:33 UTC+0
0xb455b040 chrome.exe         4992   5704 25...8       0      2      0 2016-10-30 02:05:42 UTC+0
0xb76b9400 chrome.exe           84   5704 24...2        0      2      0 2016-10-30 03:23:25 UTC+0

Como no sabemos qué pestaña es la que tiene abierto ProtonMail, volcamos la memoria de todos los procesos con memdump:

# ./volatility_2.5_linux_x64 -f ../James_Baud/roger.mem --profile=Win10x86 memdump --dump-dir dump/ -p 5704

Una primera aproximación pasaría por emplear bulk_extractor, una herramienta de reconocimiento y extracción de patrones que suele dar buenos resultados (y que en DEFT 8.1 viene instalada por defecto) pero que en este caso no nos resuelve la papeleta ya que no nos devuelve información de interés. Toca hacer uso de medidas más radicales.

Como sabemos que el origen es notroger@protonmail.com, podemos hacer un strings del volcado de memoria del proceso en raw e intentar buscar las zonas cercanas a dicha dirección (las opciones -A y -B de fgrep permiten capturar un número n de líneas después y antes de la coincidencia).

# strings 2900.dmp |grep protonmail -A 5 -B 5|fgrep "notroger@protonmail.com" |less

En Windows podemos descargarnos un strings de la propia web de Microsoft, y a lo mejor podríamos hacer algo con un .bat y findstr, pero vamos a aplicar un poco de KISS (Keep It Simple, Stupid) y a bajarnos un grep (y ya que estamos, un less) para Windows con un conjunto de utilidades Linux para Windows.

Al final es el proceso 4992 el que tenía abierta la pestaña de Protonmail, ya que vemos unas cuantas líneas que parecen indicarlo.

To: Notroger <notroger@protonmail.com>asse
"SenderAddress": "notroger@protonmail.com",
"Address": "notroger@protonmail.com",
(4) Inbox | notroger@protonmail.com | ProtonMail

Para afinar un poco la búsqueda cambiamos el criterio por “From|To”:

# strings 4992.dmp |grep protonmail -A 5 -B 5|egrep "From|To:" |less

Y rebuscando un poco encontramos premio:

From: Notroger <notroger@protonmail.com>
To: Notconnery <notconnery@protonmail.com>
X-Original-To: notroger@protonmail.com

Respuesta: “notconnery@protonmail.com”

Conclusiones: Volatility es una herramienta muy potente, que nos puede dar una inmensa cantidad de información sobre un sistema (y sobre todo, multiplataforma). Y ProtonMail es muy seguro en sus comunicaciones, pero la RAM es muy traidora. Recordad: si queréis privacidad extra, reiniciad todos los días vuestro equipo para limpiar la RAM.

7. What type of file is the payload?

Linux & Windows

En el reto no queda claro a qué se refieren como payload ya que puede referirse a los datos transmitidos en una comunicación o a la carga activa de un malware. Como la segunda opción la contestaremos más tarde, vamos a interpretar que en este pregunta nos piden la primera.

Seguimos en territorio mixto ya que tenemos que ser capaces de extraer más información del volcado de la pestaña de Chrome. Un examen un poco más concreto del grep anterior nos deja ver una cadena de lo más interesante:

Re: 24 HOURS UNTIL THE WORLD KNOWS THE TRUTH

Parece ser el asunto de una cadena de mensajes que se están intercambiando RM y SC. Si afinamos un poco el fgrep:

# strings 4992.dmp |fgrep "24 HOURS UNTIL THE WORLD KNOWS THE TRUTH" -A 20 -B 20 |less

Vemos que en la respuesta obtenemos algo más interesante (está editado mínimamente para mejorar la legibilidad):

Re: 24 HOURS UNTIL THE WORLD KNOWS THE TRUTH
uQrbCqughZMYlHWfSvBq0941yQJB0BnZzBZ6MY61sRmsc_um3kOpQfUoBzmny0MFt4GIILs1VXNe-SRqsa5stQ==
_.reduce
.messageIDs
PRESENT_FOR_CONNERY.zip (1.16 MB)
miYh
<div>Well Connery, it seems we're at an impasse. You threaten to kill me but I have a dead man's switch connected elaborately to release 
the key for the attached encrypted file full of dirt on you and your despicable low-brow antics.
<br></div><div><br></div><div>
Good day - ROG-MO OUT</div>
<div class="protonmail_signature_block "><div class="protonmail_signature_block-user "><br></div>
<div class="protonmail_signature_block-proton ">Sent with <a href="https://protonmail.com">ProtonMail</a> 
Secure Email.<br></div></div><div><br></div>
<blockquote type="cite" class="protonmail_quote">
<div>-------- Original Message --------<br></div>
<div>Subject: Re: 24 HOURS UNTIL THE WORLD KNOWS THE TRUTH<br></div>
<div>Local Time: October 29, 2016 7:15 PM<br></div>
<div>UTC Time: October 30, 2016 2:15 AM<br></div>
<div>From: notconnery@protonmail.com<br></div>
<div>To: Notroger <notroger@protonmail.com><br></div><div><br></div>
<div>Well aren't you a rather cheeky fearlash bashtard. We'll see what happens in the next 24 hours Rosher. You will rue the day you
 croshed me.<br></div><div><br></div>
<div>-SEAN-CON OUT<br></div>
<div><br></div><div class="protonmail_signature_block "><div class="protonmail_signature_block-user "><br></div>
<div class="protonmail_signature_block-proton ">Sent with <a href="https://protonmail.com">ProtonMail</a> Secure Email.<br></div>
</div><div><br></div><blockquote type="cite" class="protonmail_quote">
<div>-------- Original Message --------<br>
</div><div>Subject: 24 HOURS UNTIL THE WORLD KNOWS THE TRUTH<br></div>
<div>Local Time: October 29, 2016 10:11 PM<br></div>
<div>UTC Time: October 30, 2016 2:11 AM<br></div>
<div>From: notroger@protonmail.com<br></div>
<div>To: notconnery@protonmail.com <notconnery@protonmail.com><br></div><div><br></div>
<div>This is me putting you securely on notice Sean. I have compromising photos of you, lots of them. In 24 hours I'm going to 
release them and reveal to all the truth, allowing the global realization that I, Roger Moore am the best James Bond.<br></div>
<div>PS: Check the attached for a MERE MORSEL of the pain I'm about to rain upon you.<br></div><div><br></div>
<div>Ta-ta you sly haggis consuming scamp- RM<br></div><div><br></div>
<div class="protonmail_signature_block "><div class="protonmail_signature_block-user "><br></div>
<div class="protonmail_signature_block-proton ">Sent with <a href="https://protonmail.com">ProtonMail</a> Secure Email.<br></div>
</div><div><br></div></blockquote><div><br></div></blockquote><div><br></div>

Si se revisa la salida con más detalle se pueden ver detalles de tres correos (editados a continuación y siguiendo el orden lógico, dejando solo la información esencial):

Correo1:
Subject: 24 HOURS UNTIL THE WORLD KNOWS THE TRUTH
UTC Time: October 30, 2016 2:11 AM
From: notroger@protonmail.com
To: notconnery@protonmail.com
This is me putting you securely on notice Sean. I have compromising photos of you, lots of them. In 24 hours I’m going to release them and reveal to all the truth, allowing the global realization that I, Roger Moore am the best James Bond
PS: Check the attached for a MERE MORSEL of the pain I’m about to rain upon you.
Ta-ta you sly haggis consuming scamp- RM

Correo 2:
Subject: Re: 24 HOURS UNTIL THE WORLD KNOWS THE TRUTH
UTC Time: October 30, 2016 2:15 AM
From: notconnery@protonmail.com
To: Notroger <notroger@protonmail.com
Well aren’t you a rather cheeky fearlash bashtard. We’ll see what happens in the next 24 hours Rosher. You will rue the day you croshed me
SEAN-CON OUT

Correo 3:
Re: 24 HOURS UNTIL THE WORLD KNOWS THE TRUTH
Well Connery, it seems we’re at an impasse. You threaten to kill me but I have a dead man’s switch connected elaborately to release the key for the attached encrypted file full of dirt on you and your despicable low-brow antics.
Good day – ROG-MO OUT

Todo parece indicar que el fichero PRESENT_FOR_CONNERY.zip es el que se envía en el inicio de la cadena de correos.

Respuesta: .zip

Conclusiones: Creo que queda demostrada la cantidad de cosas que se pueden quedar olvidadas en la RAM (y que el supuesto Sean Connery habla con un acento escocés horrible)

8. What is the first Google search the user made about the other individual?

Linux way

Aquí es necesario ser meticuloso, ya que las búsquedas en Chrome se pueden hacer de varias formas, entre las que destacamos dos:

  • Búsqueda “clásica”: Accedemos a www.google.com e introduciendo el término de búsqueda. La URL resultante será del estilo de https://www.google.com/search/…
  • Búsqueda instantánea (Instant Search): Chrome permite introducir un término de búsqueda directamente en la barra de URL. En el historial este acceso quedará marcado como: https://www.google.com/webhp?sourceid=chrome-instant

Con esta información en mente podemos volver sobre la SQLite que habíamos obtenido en el punto 5, y buscar la información correcta:

jamesbaudii3

Respuesta: “sean connery is a fake”

Windows way

Podríamos emplear MyLastSearch, pero el propio BrowsingHistoryView nos da todo el historial de URL visitadas, entre las que tendrían que estar las búsquedas que necesitamos.

Si revisamos con un poco de cariño el historial, nos cuesta poco encontrar la primera búsqueda realizada por RM:

https://www.google.com/webhp?sourceid=chrome-instant&rlz=1C1CHBF_enUS716US716&ion=1&espv=2&ie=UTF-8#q=sean%20connery%20is%20a%20fake
30/10/2016 2:52:00 1 Chrome

jamesbaudii4

Respuesta: “sean connery is a fake”

9. What is the second Google search the user made about the other individual?

Linux & Windows

Seguimos el mismo proceso con cuidado, y obtenemos la respuesta (están ya marcadas en las imágenes anteriores):

https://www.google.com/webhp?sourceid=chrome-instant&rlz=1C1CHBF_enUS716US716&ion=1&espv=2&ie=UTF-8#q=sean+connery+scandal
sean connery scandal – Google Search
30/10/2016 2:52:10 1 Chrome

Respuesta: “sean connery scandal”

10. What is the third Google search the user made about the other individual?

Linux & Windows

Baby, baby, one more time (Britney Spears forensics style).

https://www.google.com/webhp?sourceid=chrome-instant&rlz=1C1CHBF_enUS716US716&ion=1&espv=2&ie=UTF-8#q=sean+connery+is+a+jerk
sean connery is a jerk – Google Search
30/10/2016 2:52:55 1 Chrome

Respuesta: “sean connery is a jerk”
Conclusiones: los historiales de navegación son verdaderas minas de oro, y en muchos casos totalmente accesibles. Eso sí, asegúrate siempre de capturar el perfil completo del usuario por si hace uso de varios.

No está mal como segundo plato… En el siguiente artículo, el plato fuerte: intrusión a la parrilla.

(Este post consta de 4 partes. Esta es el 2/4. Accede al siguiente pinchando aquí.)