Segundo CTF sobre correo electrónico de Metaspike, en este caso llamado “Space Invaders”. El reto consta de cuatro partes que iré publicando en sucesivos artículos.

El enunciado de esta primera parte nos dice lo siguiente:

You are being asked to examine an email1 between two colleagues within the same corporation. The email contains an important business document known to have been created and maintained on a volume formatted with the NT File System (NTFS).

Based on your examination of the email, are the creation and last modification timestamps of the attachment more likely to be legitimate or fake? Enter L for legitimate, F for fake.

1SHA-256: FB42631EC43891EE2D877E02D911 A1FFB95E9B31825986F09DEFE8B9A55F2614

El primer paso es descargarse el fichero en formato msg. Como siempre usamos el comando sha256sum y comprobamos que el “hash” coincide.

──(kali㉿kali)-[~/Desktop/msgopen]
└─$ sha256sum FW__New_Finite_Curvature_Product_Line_Specs.msg                                                 127 ⨯
fb42631ec43891ee2d877e02d911a1ffb95e9b31825986f09defe8b9a55f2614  FW__New_Finite_Curvature_Product_Line_Specs.msg
                                                                                                                    
┌──(kali㉿kali)-[~/Desktop/msgopen]

El siguiente paso lógico sería pasar por VirusTotal el fichero para ver si tiene algo raro dentro pero vamos a omitir este paso porque ya sabemos que es algo que todos hacemos antes de abrir un fichero. :wink:

Aquí lo normal sería utilizar alguna herramienta para Windows y poder husmear dentro de las propiedades MAPI del fichero pero como a mí me gusta hacer las cosas al “estilo software libre” voy a usar una librería de PHP llamada hfig/mapi (https://github.com/hfig/MAPI) en un pequeño script. Aquí os dejo su contenido:

<?php
require 'vendor/autoload.php';

use Hfig\MAPI;
use Hfig\MAPI\OLE\Pear;

// message parsing and file IO are kept separate
$messageFactory = new MAPI\MapiMessageFactory();
$documentFactory = new Pear\DocumentFactory(); 

$ole = $documentFactory->createFromFile('FW__New_Finite_Curvature_Product_Line_Specs.msg');
$message = $messageFactory->parseMessage($ole);

$dateToPrint = date_create();
date_timestamp_set($dateToPrint, $message->properties['creation_time']);
echo 'Message Creation time: ', date_format($dateToPrint,'U => Y-m-d H:i:s.u T'), "\n";
date_timestamp_set($dateToPrint, $message->properties['last_modification_time']);
echo 'Message Last modification time: ', date_format($dateToPrint, 'U => Y-m-d, H:i:s.u T'), "\n\n";
foreach ($message->getAttachments() as $attachment) {
  echo 'Attachment: ', $attachment->properties['display_name'], "\n";
  date_timestamp_set($dateToPrint, $attachment->properties['creation_time']);
  echo 'Attachment creation time: ', date_format($dateToPrint,'U => Y-m-d H:i:s.u T'), "\n";
  date_timestamp_set($dateToPrint, $attachment->properties['last_modification_time']);
  echo 'Attachment last modification time: ', date_format($dateToPrint,'U => Y-m-d H:i:s.u T'), "\n";
}
?>

Tras ejecutarlo la salida que muestra es la siguiente:

┌──(kali㉿kali)-[~/Desktop/msgopen]
└─$ php ex1.php
Message Creation time: 1607983178 => 2020-12-14 16:59:38.000000 EST
Message Last modification time: 1607983178 => 2020-12-14, 16:59:38.000000 EST

Attachment: FC_4fca-8f34_Specs.txt
Attachment creation time: 1591119805 => 2020-06-02 13:43:25.000000 EDT
Attachment last modification time: 1591385420 => 2020-06-05 15:30:20.000000 EDT
┌──(kali㉿kali)-[~/Desktop/msgopen]
└─$ 

Aunque no lo pueda demostrar fehacientemente, es bastante probable que se hayan modificado las fechas de creación y modificación de este correo y de sus adjuntos porque es muy poco probable que todas estas acciones se realicen justo en el microsegundo cero.