Realizando el otro día el reto del análisis forense que había dejado Jack Crook (@jackcr) en el grupo GCIH de LinkedIn, actualicé Volatility a la versión 2.3_alpha. En este reto, el autor había incluido el volcado de la RAM y un timeline del disco de cada uno de los equipos afectados, así como una captura del tráfico de red. No obstante, al revisar las novedades que incluia esta versión Alfa vi que traía un par de ellas que llamaban la atención: mbrparser y mftparser.
Mftparser, como se indica en la página de Volatility, escanea y analiza entradas en la Master File Table (MFT). El plugin escanea la memoria en busca de posibles entradas de la MFT y muestra determinada información asociada. Una explicación del funcionamiento se detalla con más profundidad en la entrada OMFW 2012: Reconstructing the MBR and MFT from Memory.
A pesar de que tenía el timeline, decidí probar el nuevo plugin y compararlo con el que nos habían proporcionado. La salida puede mostrarse en un formato tabulado o, aquí es donde se le puede sacar mucho potencial, en formato el body de Sleuthkit (con la opción –output=body).
mbelda@audit:~/Forensics/jackcr-challenge$ python ~/volatility/vol.py --profile=WinXPSP3x86 -f ENG-USTXHOU-148/memdump.bin mftparser –output=body Volatile Systems Volatility Framework 2.3_alpha Scanning for MFT entries and building directory, this can take a while (FN) 0x12d588|WINDOWS\Prefetch\NETEXE~1.PF|11727|---a-------I---|0|0|424|1353971273|1353971273| 1353971273|1353971273 (SI) 0x12d588|WINDOWS\Prefetch\NETEXE~1.PF|11727|---a-------I---|0|0|424|1353971273|1353971273| 1353971273|1353971273 (FN) 0x12d588|WINDOWS\Prefetch\NET.EXE-01A53C2F.pf|11727|---a-------I---|0|0|424|1353971273| 1353971273|1353971273|1353971273 (FN) 0x2bbee0|WINDOWS\Prefetch\NET1EX~1.PF|11728|---a-------I---|0|0|432|1353971306|1353971306| 1353971306|1353971306 (SI) 0x2bbee0|WINDOWS\Prefetch\NET1EX~1.PF|11728|---a-------I---|0|0|432|1353971306|1353971306| 1353971306|1353971306 (FN) 0x2bbee0|(Null)|11728|---------------|0|0|432|0|0|0|0 (FN) 0x311000|WINDOWS\Prefetch\NET1EX~1.PF|11728|---a-------I---|0|0|480|1353971306|1353971306| 1353971306|1353971306 (SI) 0x311000|WINDOWS\Prefetch\NET1EX~1.PF|11728|---a-------I---|0|0|480|1353980005|1353980005| 1353980005|1353971306 (FN) 0x311000|WINDOWS\Prefetch\NET1.EXE-029B9DB4.pf|11728|---a-------I---|0|0|480|1353971306|13 53971306|1353971306|1353971306 (FN) 0x311400|WINDOWS\Prefetch\SLEXE-~1.PF|11729|---a-------I---|0|0|472|1353971435|1353971435| 1353971435|1353971435 (SI) 0x311400|WINDOWS\Prefetch\SLEXE-~1.PF|11729|---a-------I---|0|0|472|1353971493|1353971493| 1353971493|1353971435 [...]
Luego basta con ejecutar mactime, de la suite Sleuthkit, sobre este fichero y obtendremos un timeline del sistema a partir de la RAM de éste.
mbelda@audit:~/Forensics/jackcr-challenge$ mactime -b ENG-USTXHOU-148/body.txt > ENG-USTXHOU-148/body_mactime.txt
Esto me parece especialmente útil cuando, por motivos de tamaño o disponibilidad, no podemos tener una imagen del disco analizado, aportándonos información de cuándo se creó o accedió a determinados archivos.
Veamos un ejemplo. Gracias a buscar cadenas (comando strings con la IP descubierta mediante el comando connscan) directamente sobre el volcado de la RAM, se descubre un correo recibido por el usuario que contiene un enlace a un fichero ejecutable:
mbelda@audit:~/Forensics/jackcr-challenge$ python ~/volatility/vol.py --profile=WinXPSP3x86 -f
ENG-USTXHOU-148/memdump.bin connscan
Volatile Systems Volatility Framework 2.3_alpha
Offset(P) Local Address Remote Address Pid
---------- ------------------------- ------------------------- ---
0x01f60850 0.0.0.0:0 1.0.0.0:0 36569092
0x01ffa850 172.16.150.20:1291 58.64.132.141:80 1024
0x0201f850 172.16.150.20:1292 172.16.150.10:445 4
0x02084e68 172.16.150.20:1281 172.16.150.10:389 628
0x020f8988 172.16.150.20:2862 172.16.150.10:135 696
0x02201008 172.16.150.20:1280 172.16.150.10:389 628
0x18615850 172.16.150.20:1292 172.16.150.10:445 4
0x189e8850 172.16.150.20:1291 58.64.132.141:80 1024
0x18a97008 172.16.150.20:1280 172.16.150.10:389 628
0x18b8e850 0.0.0.0:0 1.0.0.0:0 36569092
0x18dce988 172.16.150.20:2862 172.16.150.10:135 696
mbelda@audit:~/Forensics/jackcr-challenge$ strings ENG-USTXHOU-148/memdump.bin >
ENG-USTXHOU-148/strings.txt
mbelda@audit:~/Forensics/jackcr-challenge$ cat ENG-USTXHOU-148/strings.txt
[…]
Received: from d0793h (d0793h.petro-markets.info [58.64.132.141])
by ubuntu-router (8.14.3/8.14.3/Debian-9.2ubuntu1) with SMTP id qAQK06Co005842;
Mon, 26 Nov 2012 15:00:07 -0500
Message-ID: <FCE1C36C7BBC46AFB7C2A251EA868B8B@d0793h>
From: "Security Department" <isd@petro-markets.info>
To: <amirs@petro-market.org>, <callb@petro-market.org>,
<wrightd@petro-market.org>
Subject: Immediate Action
Date: Mon, 26 Nov 2012 14:59:38 -0500
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0015_01CDCBE6.A7B92DE0"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.5512
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5512
Return-Path: isd@petro-markets.info
X-OriginalArrivalTime: 26 Nov 2012 20:00:08.0432 (UTC) FILETIME=[A2ABBF00:01CDCC10]
This is a multi-part message in MIME format.
------=_NextPart_000_0015_01CDCBE6.A7B92DE0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Attn: Immediate Action is Required!!
The IS department is requiring that all associates update to the new =
version of anti-virus. This is critical and must be done ASAP! Failure =
to update anti-virus may result in negative actions.
Please download the new anti-virus and follow the instructions. Failure =
to install this anti-virus may result in loosing your job!
Please donwload at http://58.64.132.8/download/Symantec-1.43-1.exe
Regards,
The IS Department
------=_NextPart_000_0015_01CDCBE6.A7B92DE0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18702">
[…]
Mediante el plugin iehistory (también nuevo en esta versión 2.3 de Volatility) se pudo confirmar que el usuario pinchó en el enlace:
mbelda@audit:~/Forensics/jackcr-challenge$ python ~/volatility/vol.py --profile=WinXPSP3x86 -f ENG-USTXHOU-148/memdump.bin iehistory Volatile Systems Volatility Framework 2.3_alpha ************************************************** Process: 284 explorer.exe Cache type "URL " at 0x2895000 Record length: 0x100 Location: Visited: callb@http://58.64.132.8/download/Symantec-1.43-1.exe Last modified: 2012-11-26 23:01:53 Last accessed: 2012-11-26 23:01:53 File Offset: 0x100, Data Offset: 0x0, Data Length: 0xa8
Pero no sería sino gracias al timeline creado por el plugin mftparser que se puede confirmar que no sólo se pinchó en el enlace sino que se descargó el fichero, se ejecutó y así fue comprometido inicialmente el sistema.
mbelda@audit:~/Forensics/jackcr-challenge$ cat ENG-USTXHOU-148/body_mactime.txt
[…]
Mon Nov 26 2012 23:01:54 472 mac. --------------- 0 0 10117 Documents and Settings\
callb\Local Settings\Temp
352 macb ---a-------I--- 0 0 11721 System Volume Information\
_restore{68B1E438-DDF2-48EE-
BFAF-9C59BEF8C439}\RP26\
A0008032.sys
504 macb ---a-------I--- 0 0 11722 WINDOWS\Prefetch\
SYMANTEC-1.43-1[2].
EXE-3793B625.pf
504 macb ---a-------I--- 0 0 11722 WINDOWS\Prefetch\SYMANT~1.PF
584 mac. --------------- 0 0 3420 WINDOWS\system32\CatRoot2
824 .a.. --------------- 0 0 3432 WINDOWS\system32\CatRoot2\
{F750E~1
344 mac. ---a----------- 0 0 6996 WINDOWS\system32\CatRoot2\
tmp.edb
352 .a.. ---a----------- 0 0 8499 WINDOWS\system32\CatRoot2\
edb00095.log
344 .ac. -h------------- 0 0 8610 WINDOWS\system32\6to4ex.dll
336 mac. ---a----------- 0 0 8611 WINDOWS\system32\CatRoot2\
edb.log
472 mac. -----------I--- 0 0 8823 System Volume Information\
_restore{68B1E438-DDF2-48EE-
BFAF-9C59BEF8C439}\RP26
Mon Nov 26 2012 23:01:55 352 m.c. ---a-----c----- 0 0 10219 WINDOWS\system32\dllcache\
beep.sys
344 mac. ---a----------- 0 0 206 WINDOWS\system32\drivers\
beep.sys
416 .a.. ---a----------- 0 0 3438 WINDOWS\system32\CatRoot2\
{F750E6C3-38EE-11D1-85E5-
00C04FC295EE}\TIMEST~1
416 .a.. ---a----------- 0 0 3439 WINDOWS\system32\CatRoot\
{F750E6C3-38EE-11D1-85E5-
00C04FC295EE}\TIMEST~1
576 .a.. -h------------- 0 0 45 WINDOWS\inf
344 mac. ---a----------- 0 0 7161 WINDOWS\system32\wbem\Logs\
wbemess.log
352 .a.. ---a----------- 0 0 8071 WINDOWS\inf\syssetup.inf
568 ..c. -hs--------I--- 0 0 8835 Documents and Settings\callb\
IETLDC~1
344 m.c. -hsa-------I--- 0 0 8836 Documents and Settings\callb\
IETldCache\index.dat
344 .a.. --s------------ 0 0 9481 WINDOWS\system32\config\
systemprofile\Application Data\
Microsoft\SystemCertificates\My\
CTLs
344 .a.. --s------------ 0 0 9482 WINDOWS\system32\config\
systemprofile\Application Data\
Microsoft\SystemCertificates\My\
CRLs
472 .a.. --s------------ 0 0 9483 WINDOWS\system32\config\
systemprofile\Application Data\
Microsoft\SystemCertificates\
My\CERTIF~1
Mon Nov 26 2012 23:01:56 352 macb ---a-------I--- 0 0 10216 System Volume Information\
_restore{68B1E438-DDF2-48EE-
BFAF-9C59BEF8C439}\RP26\
A0008033.PNF
360 mac. ---a----------- 0 0 3355 WINDOWS\inf\syssetup.PNF
Mon Nov 26 2012 23:01:59 352 .ac. ---a-----c----- 0 0 10219 WINDOWS\system32\dllcache\
beep.sys
352 macb ---a-------I--- 0 0 11705 System Volume Information\
_restore{68B1E438-DDF2-
48EE-BFAF-9C59BEF8C439}\
RP26\A0008034.sys
936 mac. rhs------c----- 0 0 71 WINDOWS\system32\dllcache
Mon Nov 26 2012 23:02:07 352 .a.. ---a----------- 0 0 23813 WINDOWS\system32\racpldlg.dll
Mon Nov 26 2012 23:03:10 472 macb --------------- 0 0 7556 WINDOWS\webui
Mon Nov 26 2012 23:03:21 488 macb ---a-------I--- 0 0 11706 WINDOWS\Prefetch\
IPCONFIG.EXE-2395F30B.pf
488 macb ---a-------I--- 0 0 11706 WINDOWS\Prefetch\IPCONF~1.PF
352 .a.. ---a----------- 0 0 24145 WINDOWS\system32\ipconfig.exe
Mon Nov 26 2012 23:03:55 376 mac. ---a----------- 0 0 3436 WINDOWS\system32\CatRoot2\
{F750E6C3-38EE-11D1-85E5-
00C04FC295EE}\catdb
Mon Nov 26 2012 23:04:14 352 .a.. ---a----------- 0 0 23351 WINDOWS\system32\drivers\
fastfat.sys
Mon Nov 26 2012 23:04:24 336 mac. ---a----------- 0 0 9790 WINDOWS\system32\CatRoot2\
edb.chk
Mon Nov 26 2012 23:06:34 504 macb ---a----------- 0 0 11710 WINDOWS\ps.exe
472 m.c. --------------- 0 0 28 WINDOWS
Mon Nov 26 2012 23:06:35 504 m.c. ---a----------- 0 0 11710 WINDOWS\ps.exe
Mon Nov 26 2012 23:06:47 416 macb ---a----------- 0 0 11719 WINDOWS\webui\gs.exe
Mon Nov 26 2012 23:06:48 416 mac. ---a----------- 0 0 11719 WINDOWS\webui\gs.exe
Mon Nov 26 2012 23:06:52 440 macb ---a----------- 0 0 11723 WINDOWS\webui\ra.exe
Mon Nov 26 2012 23:06:56 344 macb ---a----------- 0 0 11724 WINDOWS\webui\sl.exe
Mon Nov 26 2012 23:06:59 368 macb ---a----------- 0 0 11725 WINDOWS\webui\wc.exe
288 m... ---a----------- 0 0 11739 WINDOWS\system32\wc.exe
Mon Nov 26 2012 23:07:31 352 .a.. --------------- 0 0 11470 WINDOWS\system32\iertutil.dll
344 .a.. ---a----------- 0 0 11498 WINDOWS\system32\urlmon.dll
344 .a.. ---a----------- 0 0 11502 WINDOWS\system32\wininet.dll
488 mac. ---a-------I--- 0 0 11706 WINDOWS\Prefetch\IPCONF~1.PF
352 macb ---a----------- 0 0 11726 WINDOWS\webui\netuse.dll
[...]
Los otros ficheros resaltados son lo que crea el Dropper al ejecutarse y es así como se compromete el equipo. Si alguien quiere ver el informe final del reto, en el siguiente enlace pueden consultar el que ha subido Bryan Nolen (@BryanNolen) en la página de Volatility.
Buen fin de semana a todos.
