The puzzle:
It was a morning ritual. Ms. Moneymany sipped her coffee as she quickly went through the email that arrived during the night. One of the messages caught her eye, because it was clearly spam that somehow got past the email filter. The message extolled the virtues of buying medicine on the web and contained a link to the on-line pharmacy. “Do people really fall for this stuff?” Ms. Moneymany thought. She was curious to know how the website would convince its visitors to make the purchase, so she clicked on the link.
The website was slow to load, and seemed to be broken. There was no content on the page. Disappointed, Ms. Moneymany closed the browser’s window and continued with her day.
She didn’t realize that her Windows XP computer just got infected.
You are the forensic investigator. You possess the network capture (PCAP) file that recorded Ms. Moneymany’s interactions with the website. Your mission is to understand what probably happened to Ms. Moneymany’s system after she clicked the link. Your analysis will start with the PCAP file and will reveal a malicious executable.
A grandes líneas, el texto nos introduce en el contexto de nuestra investigación. Una persona curiosa decide pinchar en un enlace a una página de venta de productos farmacéuticos. Después de un tiempo esperando, parece que la web no se muestra, por lo que decide seguir con su vida. Sin saberlo, esa web contiene un código malicioso que acaba de infectar su puesto. Para averiguar lo que ha pasado realmente, se dispone de una captura de red.
Lo primero que se va a realizar es la descarga de la captura y comprobar la huella digital:
Figura 1. Comprobando el MD5 de la evidencia
Una vez se ha asegurado que la captura tiene el mismo hash, se examina un poco la captura para tener más datos del entorno que tenemos que investigar. Se comienza por graficar los flujos de paquetes para identificar las máquinas involucradas. Para esto, se ha programado un pequeño script que obtiene los datos desde tshark y crea la gráfica, dándole mayor tamaño a aquellas ips con más tráfico:
Figura 2. Gráfica de flujos
Se puede observar que las dos ips con más tráfico son 192.168.23.129 y 59.53.91.102. También que tódo el tráfico tiene como punto en común la ip interna, por lo que se deduce que esa debe ser la ip de la máquina infectada. Para terminar, se decide poner en el punto de mira la ip 59.53.91.102 porque es la que más tráfico ha intercambiado y por lo tanto, podría ser el origen de la infección.
El script utilizado es el siguiente:
#!/usr/bin/perl
use GraphViz;
my %ips;
my %flows;
my $g = GraphViz->new();
my $count=0;
my $out = qx/tshark -r infected.pcap -Tfields -Eseparator=, -e ip.src -e ip.dst/;
@data = split(/\n/,$out);
foreach my $line (@data) {
my ($src, $dst) = split(/,/,$line);
$ips{$src}++;
$ips{$dst}++;
my $hash = "$src:$dst";
$flows{$hash}=1;
$count++;
}
foreach my $flow (keys %flows) {
my ($src,$dst) = split(/:/,$flow);
my $weight = $ips{$src} * 0.005;
my $weight2 = $ips{$dst} * 0.005;
$g->add_node($src, height => $weight, width => $weight, style => 'filled', shape => 'rectangle');
$g->add_edge($src,$dst);
}
$g->as_png("graph.png");
Pregunta nº 1: Buscando applets
1. As part of the infection process, Ms. Moneymany’s browser downloaded two Java applets. What were the names of the two .jar files that implemented these applets?
Cómo se decía en el enunciado, Ms. Moneymany ha visitado una web maliciosa. Al parecer y según la pregunta, lo que contiene esa web son dos applets (.jar) de java. Para encontrarlos dentro del tráfico, se recurre a la utilidad de consola tshark. tshark permite mostrar información relevante sobre una captura o capturar en vivo. Es el complemento ideal a wireshark cuando se quiere profundizar en el contenido de un volcado:
Figura 3. Buscando los applets
Pregunta nº 2: Conocer el usuario de la víctima
2. What was Ms. Moneymany’s username on the infected Windows system?
Se conoce desde dónde sale el tráfico y se filtran los paquetes para ver si pueden dar una idea del usuario:
forensics@blueliv:~$ tshark -R "ip.src == 192.168.23.129" -r infected.pcap
Ahí tenemos una posible conversación que podría contener el nombre de usuario (/11111/gate.php?guid=ADMINISTRATOR!TICKLABS-LZ!1C7AE7C1&ver=10084&stat=ONLINE&ie=8.0.6001.18702&os=5.1.2600&ut=Admin&cpu=92&ccrc=5A4F4DF7&md5=5942ba36cf732097479c51986eee91ed). También cabe destacar que el campo md5 tiene la misma terminación que el md5 del malware (que se nos preguntará más adelante). Esta vez hay suerte de que la petición fuera tan clara, pero se podría usar un método alternativo para encontrar nombres de usuarios. Por ejemplo, usando ngrep:
forensics@blueliv:~$ ngrep -I infected.pcap -i user 'ip src 192.168.23.129'
Figura 5. ngrep nos permite buscar por expresiones regulares
Pregunta nº 3: La url
3. What was the starting URL of this incident? In other words, on which URL did Ms. Moneymany probably click?
Listando todas las conexiones de la víctima, se muestra la primera referencia:
Figura 6. Lista de paquetes con peticiones desde el cliente
Para mayor comodidad, vemos el paquete dentro de wireshark:
Figura 7. Wireshark muestra la respuesta en su formato original
Por desgracia, Wireshark no puede descodificar la conversación por lo que se recurre a usar tshark (de nuevo) para que muestre la respuesta sin comprimir:
forensics@blueliv:~$ tshark -r infected.pcap -R 'frame.number==13' -Tfields -Ttext | tr -s ' ' | grep -v ' \\n'
Figura 8. Contenido incompleto pero válido para hacerse una idea
Tshark ha truncado el contenido, pero vale para determinar que este parece ser el origen, un javascript ofuscado desde la ip sospechosa.
Pregunta nº 4: Extrayendo el malware
4. As part of the infection, a malicious Windows executable file was downloaded onto Ms. Moneymany’s system. What was the file’s MD5 hash? (Hint: It ends on “91ed”.)
Pregunta nº 5: Malware empaquetado
5. What is the name of the packer used to protect the malicious Windows executable? Hint: This is one of the most popular freely-available packers seen in “mainstream” malware.
Pregunta nº 6: Desempaquetando el malware
6. What is the MD5 hash of the unpacked version of the malicious Windows executable file?
Pregunta nº 7: Conexión hacia alguna parte
7. The malicious executable attempts to connect to an Internet host using an IP address which is hard-coded into it (there was no DNS lookup). What is the IP address of that Internet host?
Conclusiones