Professional Documents
Culture Documents
Agosto 2008
Los tipos de archivo más comunes contenidos en un archivo ASF son los WMA
(Windows Media Audio) y WMV (Windows Media Video). Nótese que las
abreviaciones de las extensiones de archivo son distintas de los codecs que llevan
el mismo nombre. Los archivos que contienen exclusivamente audio WMA pueden
nombrarse usando extensiones .WMA, mientras que los archivos con contenido
audio y video pueden usar la extensión .WMV. En ambos casos, si uno lo desea,
también se les puede dar la extensión .ASF.
El siguiente informe de VirusTotal ilustra los nombres que los distintos motores
antivirus le han dado a esta nueva familia que se pretende estudiar:
AntiVir Worm/GetCodec.A
Avast Win32:Trojan-gen {Other}
AVG Downloader.Generic7.YJK
BitDefender Trojan.Downloader.GetCodec.B
QuickHeal Worm.GetCodec.a
eSafe Suspicious File
F-Secure Worm.Win32.GetCodec.a
Fortinet PossibleThreat
GData Worm.Win32.GetCodec.a
Ikarus Worm.Win32.GetCodec.a
Kaspersky Worm.Win32.GetCodec.a
McAfee W32/GetCodec.a
NOD32v2 Win32/TrojanDownloader.Small.OCY
Panda Suspicious file
Prevx1 Cloaked Malware
Sophos W32/GetCodec-A
Sunbelt Worm.Win32.GetCodec.a
Symantec Trojan.Brisv.A
TheHacker W32/GetCodec.a
TrendMicro PAK_Generic.001
VBA32 Worm.Win32.GetCodec.a
VirusBuster Worm.GetCodec.A
Webwasher Win32.Trojan.ASF.Hijacker.A
2
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN
2. Análisis de la muestra
Esta sección detalla el análisis de ingeniería inversa que se realizó sobre la muestra
que produjo el resultado de VirusTotal anterior, el ejemplar puede ser identificado
por los siguientes hashes:
MD5: 4e2f538fa4dfe028c221ee7f020a05d4
SHA1: 3a2055b22105b8de4b384d7a1936afaafd7df8c1
countOfScanedEntities 10h 0
malware_installed 14h 1 (first malware execution 0)
countOFscanedFiles 18h 0
countOFinfectedFiles 1Ch 0
hundretOfScanedFiles 20h 0
prot_data 24h addr
www.hispasec.com
tempFilePath 28h addr (TempPath)
3
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN thread_priority 2Ch 0
HKEY_CURRENT_USER\SOFTWARE\Microsoft\PIMSRV
4
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN Cuando esta comprobación falla, la rutina isMalwareInstalled devuelve falso y la
variable “malware_installed” se fija a 0:
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
push offset Name ; "PIMSRV1"
push 1 ; bInitialOwner
push 0 ; lpMutexAttributes
call CreateMutexW
www.hispasec.com
call GetLastError
sub eax, 0B7h
5
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN neg eax
sbb eax, eax
inc eax
mov esp, ebp
pop ebp
retn
Set_Mutex endp
www.hispasec.com
Ilustración 3 - rutina Modify_Winamp_Conf
6
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN Como podemos ver en la Ilustración 3, el troyano usa la API “SHGetFolderPathW”
para averiguar vía CSIDL1 dos rutas hacia archivos de configuración de Winamp. El
valor CSIDL se calcula en este trozo de código:
Este contador adopta valores en el rango 0-7. Los primeros dos elementos de
CSIDLs_table se inicializan a 1Ah y 1Ch.
Estos valores CSIDL le permiten al troyano conocer la ruta hacia dos archivos de
configuración de Winamp:
• defext: Esta propiedad define la extensión por defecto que se asigna a todo
archivo que Winamp desconoce e intenta reproducir. Este parámetro se fija
a MP3 por defecto.
1
Los valores CSIDL (constant special item ID list) ofrecen un identificador único independiente del
sistema para acceder a directories especiales usados frecuentemente por las aplicaciones, directorios
bien podrían tener diferentes nombres y rutas en distintos sistemas. Por ejemplo, la carpeta de sistema
puede ser “C:\Windows” en un equipo y “C:\Winnt” en otro. Estas constantes se definen en Shlobj.h. Un
www.hispasec.com subconjunto de ellas también están definidas en Shfolder.h.
7
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN El autor del troyano únicamente declaró dos valores en la tabla de CSIDLs, ¿qué
sucede con el resto? Dijimos que se definía un contador que barría el rango 0-7,
los valores 2-7 simplemente extraen valores aleatorios de la pila (seguramente se
trate de un error de programación).
HKCU\Software\Microsoft\MediaPlayer\Player\Extensions\.mp3
8
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN .text:004025EC lea ecx, [ebp+Data]
.text:004025EF push ecx ; lpData
.text:004025F0 push 4 ; dwType
.text:004025F2 push 0 ; Reserved
.text:004025F4 push offset ValueName ;
"URLAndExitCommandsEnabled"
.text:004025F9 mov edx, [ebp+hKey]
.text:004025FC push edx ; hKey
.text:004025FD call RegSetValueExW
Vemos como, por raro que parezca, el autor del espécimen fija el valor de
“URLAndExitCommandsEnabled” a “0”. En efecto, acaba de desactivar los
comandos scriptados de tipo URLAndExit en archivos ASF, impidiendo que se
descargue cualquier otro archivo malicioso haciendo uso de este método. Algunos
pensarán que se trata de un error al interpretar la documentación de este valor,
otros se han adelantado a decir que probablemente se trate de un error de
programación, el autor de este documento está convencido de que se hizo de
forma voluntaria. Este paso hace el ataque más silencioso, se puede decir que se
trata de un truco para ocultarle a la víctima las modificaciones que sufrirán sus
archivos multimedia.
9
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN .text:00401A15 mov [ebp+csidl8], 10h
.text:00401A1C mov [ebp+csidl9], 13h
.text:00401A23 mov [ebp+csidl10], 3Bh
.text:00401A2A mov [ebp+counter], 0
.text:00401A34 jmp short loc_401A45
.text:00401A36 ; -----------------------------------
.text:00401A36
.text:00401A36 loc_401A36:
.text:00401A36 mov eax, [ebp+counter]
.text:00401A3C add eax, 1
.text:00401A3F mov [ebp+counter], eax
.text:00401A45
.text:00401A45 loc_401A45:
.text:00401A45 cmp [ebp+counter], 44
.text:00401A4C jnb short loc_401A84
.text:00401A4E lea ecx, [ebp+FileName]
.text:00401A54 push ecx ; pszPath
.text:00401A55 push 0 ; dwFlags
.text:00401A57 push 0 ; hToken
.text:00401A59 mov edx, [ebp+counter]
.text:00401A5F mov eax, [ebp+edx*4+csidl] ;CSIDL_table
.text:00401A63 push eax ; csidl
.text:00401A64 push 0 ; hwnd
.text:00401A66 call SHGetFolderPathW
.text:00401A6C test eax, eax
.text:00401A6E jl folder_path_not_available
.text:00401A70 lea ecx, [ebp+FileName]
.text:00401A76 push ecx ; Path
.text:00401A77 mov ecx, [ebp+this]
.text:00401A7D call SearchVulnsFiles
.text:00401A82
.text:00401A82 folder_path_not_available:
.text:00401A82 jmp short loc_401A36
.text:00401A84 ; ---------------------------------
.text:00401A84
.text:00401A84 loc_401A84:
.text:00401A84 mov ecx, [ebp+this]
.text:00401A8A call sub_401C00
.text:00401A8F mov al, 1
.text:00401A91 mov esp, ebp
.text:00401A93 pop ebp
.text:00401A94 retn
.text:00401A94 Search_and_Infect endp
10
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN 0x0005 // My Documents
.text:004019F9 mov [ebp+csidl4], 2Eh ; CSIDL_COMMON_DOCUMENTS
0x002e // All Users\Documents
.text:00401A00 mov [ebp+csidl5], 1Ah ;CSIDL_APPDATA
0x001a // <user name>\Application Data
.text:00401A07 mov [ebp+csidl6], 1Ch ;CSIDL_LOCAL_APPDATA
0x001c // <user name>\Local Settings\Applicaiton Data (non
roaming)
.text:00401A0E mov [ebp+csidl7], 6 ;CSIDL_FAVORITES
0x0006 // <user name>\Favorites
.text:00401A15 mov [ebp+csidl8], 10h ;CSIDL_DESKTOPDIRECTORY
0x0010 // <user name>\Desktop
.text:00401A1C mov [ebp+csidl9], 13h ;CSIDL_NETHOOD
0x0013 // <user name>\nethood
.text:00401A23 mov [ebp+csidl10], 3Bh ;CSIDL_CDBURN_AREA
0x003b // USERPROFILE\Local Settings\Application
Data\Microsoft\CD Burning
CSIDL_CDBURN_AREA 0x003b
¿Por qué es tan interesante? La carpeta de “tostado de CDs” contiene archivos que
están listos para copiarse a un CD/DVD, infectando estos ficheros el malware tiene
la posibilidad de propagarse vía compartición de CDs/DVDs.
Llegado a este punto tenemos que la primera ruta en la que el ejemplar busca
ficheros a infectar es “//All Users\My Music”. En nuestro se trata de:
Hemos usado dos formatos de fichero distintos (mp3 y wma) con el fin de
descubrir las diferencias de comportamiento en función del tipo de fichero.
Búsqueda de archivos
Para buscar archivos víctima el autor hace uso de dos APIs de Windows bastante
www.hispasec.com conocidas:
11
HISPASEC SISTEMAS
•
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN FindFirstFileW
• FindNextFileW
Tras todo este proceso tan laborioso el lector pensará, ¿qué pasa si mis archivos
multimedia están guardados en una ruta que no aparece en la tabla de CSIDLs? Si
la búsqueda se realiza sobre rutas CSIDLs concretas mis archivos deberían estar a
salvo de la inyección de código, ¿correcto? Mala suerte, antes de acabar el bucle
Search_and_Infect (búsqueda e infección) la muestra llama a la rutina
Search_files_on_LogicalDrives (busca archivos en todas las unidades lógicas).
La Ilustración 6 muestra como el espécimen trata de infectar todas aquellas unidades de tipo:
12
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN organizaciones que usan intensivamente las unidades compartidas: colegios,
residencias, etc.
Avancemos por el código, podemos ver como cuando la muestra se ejecuta por
primera vez malware_installed se fijará a falso y la cuenta de elementos
escaneados (archivos y carpetas) será 0 en módulo 100, al hacer el módulo 100
con cada múltiplo de 100 se guardará la ruta actual del malware en el registro:
13
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN .text:004015AD add ecx, 1
.text:004015B0 mov eax, [ebp+this]
.text:004015B6 mov [eax+countOfScanedEntities], ecx
.text:004015B9 test edx, edx
.text:004015BB jnz short malware_was_executed
.text:004015BD mov ecx, [ebp+CurrentPath]
.text:004015C3 push ecx ; lpData
.text:004015C4 mov ecx, [ebp+this]
.text:004015CA call set_prot_path ; set current 'path' to prot
value
.text:004015CF malware_was_executed:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\PIMSRV\prot
.text:004015CF malware_was_executed:
.text:004015CF mov edx, [ebp+this]
.text:004015D5 movzx eax, [edx+malware_installed]
.text:004015D9 test eax, eax
.text:004015DB jz short loc_401604
.text:004015DD mov ecx, [ebp+CurrentPath]
.text:004015E3 push ecx ; lpString
.text:004015E4 mov edx, [ebp+this]
.text:004015EA mov eax, [edx+prot_data]
.text:004015ED push eax
.text:004015EE mov ecx, [ebp+this]
.text:004015F4 call Cmp_Path_protData
.text:004015F9 movzx ecx, al
.text:004015FC test ecx, ecx
.text:004015FE jz search_next_file
www.hispasec.com
14
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN
15
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN Una de estas tablas contiene extensiones de archivos mpX, mientras que la otra
incluye extensiones relacionadas con Windows Media Player. Cuando el fichero
encontrado es de interés, la muestra salta al bloque FileIsVulnerable.
Método de infección
La rutina TryInfect comienza por crear un archivo temporal:
C:\DOCUME~1\virtual\LOCALS~1\Temp\NEW21.tmp
Cuando los atributos son los deseados se procede a la inyección de código en sí:
Todas las variables fijadas para realizar la inyección de código deberían estar
www.hispasec.com bastante claras mirando el desensamblado:
16
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN
Tal y como se puede apreciar, esta rutina compara VulnFileExtensión (la extensión
del fichero objetivo) sólo contra una tabla: mpX_table. Si la extensión no está
indexada en esta tabla el malware decidirá que se trata de un archivo WMP. ¿Por
qué se agrupan los archivos en función de su extensión? ¿La muestra se comporta
de distinta manera dependiendo del tipo de archivo?
El análisis de estas rutinas nos permite decir que el método de infección como tal
es el mismo, la única diferencia reside en el hecho de que los archivos mpX se han
de convertir al formato ASF primero.
www.hispasec.com
17
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN
Si recordamos los dos archivos que se crearon para esta prueba, VulnFilePath aun
apuntará a:
18
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN
Para ver si el archivo está ya infectado el autor trata de coger las interfaces COM
IWMHeaderInfo o IWMHeaderInfo3 con la función GetInterface. Estas COMs le
permiten leer información de archivos ASF:
19
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN .text:00402F43 ; ----------------------------------------------------
.text:00402F43
.text:00402F43 loc_402F43:
.text:00402F43 mov ecx, [ebp+counter]
.text:00402F46 add ecx, 1
.text:00402F49 mov [ebp+counter], ecx
.text:00402F4C
.text:00402F4C loc_402F4C:
.text:00402F4C movzx edx, [ebp+countOfScripts]
.text:00402F50 cmp [ebp+counter], edx
.text:00402F53 jge no_more_scripts_available
Una coincidencia entre CommandLen y Type alerta sobre el hecho de que el archivo
se encuentra ya infectado, si éste es el caso el valor devuelto por isInfected será
verdadero y no se tomarán más medidas. Sin embargo, si el archivo no estaba
infectado el flujo de ejecución saltará a la rutina de infección:
www.hispasec.com
20
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN
21
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN En efecto, si echamos un vistazo al tamaño del archivo infectado y lo comparamos
con el del archivo antes de la inyección intuimos que la rutina tuvo éxito:
La variable lpMode está estrechamente relacionada con el tipo de fichero que fue
infectado, es más útil cuando el fichero infectado es un .mpX.
22
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN El archivo que fue convertido de .mpX a .asf se guardó en %temp%. Puesto que la
inyección se hace sólo sobre TEMPFILE el malware debe reemplazar el archivo
.mpX original con aquel convertido a ASF:
www.hispasec.com
23
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN
www.hispasec.com
24
HISPASEC SISTEMAS
SEGURIDAD Y TECNOLOGÍAS
DE LA INFORMACIÓN
4. Conclusión
Tal y como hemos visto, esta es una técnica más que está siendo empleada por los
creadores de malware para engañar a los usuarios e inducirlos a descargar
archivos maliciosos. Este método puede ser usado para descargar cualquier tipo de
contenido simplemente cambiando la URL de descarga del codec. Se trata de un
enfoque muy elegante pues el archivo a descargar puede ser fácilmente modificado
en el lado servidor, permitiendo actualizar el ejemplar conforme la industria
Antivirus refina sus firmas para detectarlo.
www.hispasec.com
25