martes, 15 de mayo de 2012

Qhost utiliza rutina XOR para esconder datos.

Hoy vamos a analizar el siguiente malware que me envío un lector a mi correo.



Este troyano afecta entidades bancarias del Perú modificando el archivo .host
de la PC victima.



Aquí vemos el correo enviado a las victimas, disimulando una postal virtual.





Link:
hxxp://www.atesitaliana.com/video/postales/videopostal.exe

Anubis:



Analizada la muestra en VT, notamos un grado medio de detecciones.






El malware esta programado en VB6, no se encuentra ofuscado su código (VBCrypt), solo noto que tiene cadenas codificadas, como por ejemplo:


"4D88525F7A0C0B32408E5046304C57354490435C6E404B2C0A94165B750C"



Utilizando un decompilador de VB encontramos la llamada a la rutina de desencripcion de la cadena y la rutina.




loc_00402D97: var_28 = "4D88525F7A0C0B32408E5046304C57354490435C6E404B2C0A94165B750C" <- Cadena a desencriptar


loc_00402DA1: Proc_00403FA0(var_28, var_28, ecx)         <-- Llamada a la rutina
loc_00402DAB: var_2C = Proc_00403FA0(var_28, var_28, ecx)
loc_00402DB2: Proc_00404350(var_2C, edx, ecx)




Rutina de desencripcion:


Public Sub Proc_1_0_403FA0()
loc_00403FC2:   var_8 = &H401250
loc_00403FF4:   var_24 = "%ü&/@#$A"   <---- KEY del XOR!!!
loc_00403FFE:   var_20 = 004026ACh
loc_00404008:   var_1C = 1
loc_00404016:   Var_Ret_1 = Len(Me)  
loc_00404028:   var_7C = Var_Ret_1
loc_0040402B:
loc_0040402F: If 00000001h > 0 Then GoTo loc_004041A6 ciclo.
loc_0040403D:   var_3C = 2
loc_00404040:   var_44 = 2
loc_00404056:   var_64 = &H4008
loc_0040405D:   var_54 = Mid$(Me, 1, 2)    
loc_0040408E:   var_3C = 1
loc_00404095:   var_44 = 2
loc_0040409C:   var_5C = var_24        = "%ü&/@#$A"
loc_0040409F:   var_64 = &H4008
  loc_004040B2: 1 = 1 - 0001h
loc_004040C0:   idiv ecx                  
  loc_004040C8: 1 = 1 + 00000001h
loc_004040D4:   var_54 = Mid$(var_24, 1, 1)
loc_004040E5:   var_2C = var_54
loc_00404100:   var_5C = var_20
loc_00404103:   var_64 = 8
loc_0040411B:   var_34 = "&h" & Me                    
loc_00404140:   var_44 = Chr(eax Xor edx)          <-   OPERADOR  XOR!
loc_00404152:   var_54 = var_20 & var_20                          
  loc_00404188: 1 = 1 + 0001h
  loc_0040419A: 00000002h = 00000002h + 00000001h
loc_004041A1:   GoTo loc_0040402B
loc_004041A6:
loc_004041AC:   var_28 = 1
loc_004041B8:   GoTo loc_004041E6
loc_004041E5:   Exit Sub
loc_004041E6:
loc_00404200:   Exit Sub
End Sub





Analizando esta rutina, armo un decodificador XOR en Python



# -*- coding: iso-8859-15 -*-
import operator
import sys
import binascii
ca = ''
keypin = "%ü&/@#$A"
datac  = "46914201255B41610A9F065D25440420419806670B667D1E69B3656E0C7C690066B46F61057F770E63A8716E1266780C4C9F5440334C423579AB4F41244C533279BF535D32464A357399545C294C4A1D7789487360030B3705B1494129574B3305D3520F1266631E76A606002403677B79AB4F41244C5332798F455D3250576F4084430F6F45"; #cadena a desencriptar




salida = '';


def xor(key, string):
    c = 0
    data = []
    for k in xrange(len(string)):
        if c > len(key)-1:
            c = 0
        fi = ord(key[c])
        c += 1
        se = ord(string[k])
        data += [chr(operator.xor(fi, se))]
    return data


cadena = binascii.a2b_hex(datac);
salida = xor(keypin,cadena);


for imprime in range(len(salida)):
    ca = ca + salida[imprime]
print ca
print



por lo que 4D88525F7A0C0B32408E5046304C57354490435C6E404B2C0A94165B750C


Decodifica como: http://servipostales.com/h0t5/
Conectandome a este URL con malzilla obtenemos el string:



Cargando este string en el decodificador en python (variable datac)

14CE1101700D146F14DC4A40234248294A8F520F711A1D6F1CCD081E77110A7316C9064D2E0D472E48DC1716790D1D700BCD111D6E111774059E4801234C496F5599061E791A0A7814D21718720D167210DC5158370D462F0B9F494260121D780BC517017114166F17CF130F3754536F4792084C2F4E0A3140DC1716790D1D700BCD111D6E1117740594525B30190B6E4792084C2F4E04701CC50816710D157617D2141C75034C35518C1C006F414A6F46934B01304604701CC50816710D157617D2141C75034C35518C1C006F5453360B9E4801234C496F5599061E791A0A7814D21718720D167210DC5C402E4257244289544E710D462F0B9F49426E53416114C51F0179120A7012CE081D73160436528B08552F4D4532409B535D21120A234BD245402D0D542405CD1F166E1A156F14CB1401721011614D88525F7A0C0B3B4A92475C2544513344CD084D2E0D472E48D2564A60121D780BC517017114166F17CF130F285750311FD3095837540A3B4A92475C2544513344CD084D2E0D472E48D2564A60121D780BC517017114166F17CF130F3754536F479E504E22424A224A9F4941344A4A244B8847436E404B2C05CD1F166E1A156F14CB140172101161479E504E22424A224A9F4941344A4A244B8847436E404B2C05CD1F166E1A156F14CB1401721011614D88525F7A0C0B36528B084D2255452344924540234C4A354C9243413442486F46934B00




Decodifica como:

127.0.0.1 localhost 199.91.172.235 bn.com 199.91.172.235 bn.com.pe 199.91.172.235 www.bn.com 199.91.172.235 www.bn.com.pe 199.91.172.235 http://bn.com 199.91.172.235 http://bn.com.pe 199.91.172.235 http://www.bn.com.pe 199.91.172.235 zonasegura1.bn.com.pe 199.91.172.235 www.zonasegura1.bn.com.pe 199.91.172.235 http://zonasegura1.bn.com.pe 199.91.172.235 http://www.zonasegura1.bn.com.pe 199.91.172.235 www.bbvabancocontinental.com 199.91.172.235 bbvabancocontinental.com 199.91.172.235 http://www.bbvabancocontinental.com/


Son los sitios de phishing que afectan a entidades bancarias del Perú




También en el cuerpo del troyano encontramos la siguiente cadena:




46914201255B41610A9F065D25440420419806670B667D1E69B3656E0C7C690066B46F61057F770E63A8716E1266780C4C9F5440334C423579AB4F41244C533279BF535D32464A357399545C294C4A1D7789487360030B3705B1494129574B3305D3520F1266631E76A606002403677B79AB4F41244C5332798F455D3250576F4084430F6F45


Decodifica como:


cmd.exe /c reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\  /v Monitor /t REG_SZ /d C:\Windows\scrrss.exe /f


Es la llave del registro y el nombre del troyano que tendrá en el sistema.




Binario en http://www.mediafire.com/?irura6lwln1vknr

(La password me la piden por mensaje)


Eso es todo por el momento.

@DKavalanche 2012




PD: Por favor comenten... así no me siento solo...

5 comentarios:

Moc dijo...

Interesante, podrías poner las muestras para que todos podamos ir aprendiendo. Gracias y saludos!

@Dkavalanche dijo...

Voy a subir las muestras de cada troyano, tengo que ver que servicio podría utilizar sin infringir en los términos de Blogger.

Gracias por comentar.

Moc dijo...

Puedes subir las muestras a dropbox con password, y que luego te pidan por correo, asi mides el impacto.

@Dkavalanche dijo...

Ya me di de alta, pronto subiré las muestras.

Saludos!

@Dkavalanche dijo...

Hola ya subí, para este caso, la muestra, con passw = infected


Saludos.

Android: BankBot. Hace un tiempo se filtro el fuente de un Bankbo t para android y se masifico bastante, creo que muchos lo han lanzado pa...