Se paso el siguiente archivo para analizar:
Nombre: Update.dat
Md5: 2EE96AC73679D0F7C647A22BF52B7ED2
Md5 del archivo a analizar
Se determina el tipo de archivo, que en nuestro
caso es: Data
Tipo de archivo
Se revisa el contenido del mismo, encontrándose
datos que aparecen ser datos codificados/cifrados.
Contenido del archivo a investigar
Los archivos ".dat" tienen la
particularidad de que solamente se pueden abrir con el archivo que los ha
generado, por lo que se necesita conocer el programa que lo ha generado.
Información encontrada sobre los archivos
".dat"
Más
información: http://www.online-convert.com/es/formato-de-archivo/dat
Se revisan los primeros bytes del documento,
comprobando que existe la cadena de texto: "This program cannot be run in
DOS mode"
Por este motivo se procede a modificar el "magic
number" para que se corresponde con el "magic number" de un
archivo PE, pero no se obtiene el resultado deseado (ver el código fuente)
Se realizan otras pruebas pero gracias a VirusTotal
se descubre le tipo de archivo con el que está lidiando: Visual Basic Script.
Información dada por VirusTotal sobre nuestro archivo.
Más
información:
https://www.virustotal.com/es/file/11cf0916424e955ac59505b192979010c0a9fb15171286c6c2e7e05680c652f7/analysis/
Si se cambia la extensión por la de
".vbs", tampoco obtenemos el resultado.
NOTA: El
código de dichos archivos es código plano.
Por lo que nos encontramos ante un archivo con
extensión ".vbe", Visual Basic Encriptado, que es como si fuera un
archivo con extensión ".exe".
Se procede a intentar descubrir una manera de
descifrar el código para analizar el código fuente, descubriéndose el siguiente
código en Internet:
'===============================================================================
'===============================================================================
'
SCRIPT........: scriptDecode.vbs
'
VERSION.......: 1.5
'
DATE..........: 11/22/2003
'
AUTHOR........: Jean-Luc Antoine
'
LINK..........:
http://www.interclasse.com/scripts/decovbe.php
' ALTERED
BY....: Joe Glessner
'
DESCRIPTION...: Decodes scripts
encoded with screnc.exe. Usable with
'
Wscript by dragging an encoded script onto this one. If done
'
this way, only the first 100 lines (or so) of the script
'
will be displayed.
'
If run using Cscript.exe the entire output will be
'
displayed.
'
This script can be used to output the decoded script to a
'
file using Cscript.exe by calling it with the following
'
syntax:
'
'
cscript [Path]\scriptDecoder.vbs [Path]\<filename> >> output.txt
'
'===============================================================================
'===============================================================================
'**Start Encode**
'===============================================================================
'# START
<CODE>
'===============================================================================
option explicit
'---------------------------------------------------------------------------
'# Declare variables
'---------------------------------------------------------------------------
Dim oArgs,
NomFichier
'---------------------------------------------------------------------------
'# Check Arguments
'---------------------------------------------------------------------------
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)
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
'---------------------------------------------------------------------------
'# Decode the file and output the results
'---------------------------------------------------------------------------
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
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 & _
"
<filename>"
End If
'===============================================================================
'# Functions
'===============================================================================
'---------------------------------------------------------------------------
'# Name................: Decode()
'# Use.................: Decode(Chaine)
'# Purpose.............: Reverse the encoding done by screnc.exe.
'---------------------------------------------------------------------------
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 Then index=index+1
If
(c=9) or ((c>31) and (c<128)) Then
If (c<>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
'---------------------------------------------------------------------------
'# Name................: BrowseForFolder()
'# Use.................: BrowseForFolder(ByVal pstrPrompt, ByVal
'# pintBrowseType,
ByVal pintLocation)
'# Purpose.............: Locate the encoded script using
Shell.Application
'---------------------------------------------------------------------------
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
'===============================================================================
'# END
</CODE>
'===============================================================================
El código para ejecutar el descifrado es:
cscript
//NoLogo <archivo para descifrar> <archivo cifrado> > <archivo
de salida de datos>
El resultado es bastante interesante:
Código fuente contenido en el archivo investigado
¡Interesante!
No hay comentarios:
Publicar un comentario