Decopile .NET

Iniciado por d0x1s, 8 Junio 2019, 20:21 PM

0 Miembros y 1 Visitante están viendo este tema.

d0x1s

Hola a todos necesito decopilar un ejecutable en .NET. He observado que contiene varios obfuscators pero no se como empezar con el , vamos como meterle mano. Gracias a cualquie aportacion de antemano.

https://anonfile.com/l3x84au2n1/decopile_me_exe


https://www.virustotal.com/gui/file/1f76c0d58e2cead998fec4582e706d2926fa28e1a2f7091e2e308defee7a82fd/detection

Geovane

¡Hola

Si los deobfuscator comunes y fácil de encontrar como de4dot, entre otros, no resolver, usted debe actualizar o crear desde cero para nuevos métodos de ofuscación.

Crear nuevos requiere mucha experiencia.

Saludos.
Para servicios, envíe un mensaje privado, sólo para servicios en curso hasta fecha de 10/06/2019

d0x1s

#2
Gracias por tu respuesta, de4dot no funciona debido a que el ejecutable a decopilar contiene fake atributtes. Creo que esta ofuscado con trinity .NET obfuscator.
Pd: No tengo mucha experiencia en esto.

apuromafo CLS

#3
a mi punto de vista es una peticion directa de crackearlo, pero veamos hasta donde llegamos por encima : :silbar:

descripcion del programa: Prometheus Software 2019

ahora bien, abres en dnspy (x64) se ve claramente que esto tiene multiples capas al inicio:


Imports System

Namespace CryptoObfuscator
   Friend Class ProtectedWithCryptoObfuscatorAttribute
   End Class
   ' Token: 0x0200004C RID: 76
End Namespace

Namespace Xenocode.Client.Attributes.AssemblyAttributes
   Friend Class ProcessedByXenocode
   End Class
   ' Token: 0x02000050 RID: 80
End Namespace

Friend Class ObfuscatedByGoliath
End Class

NineRays.Obfuscator
'
' Types:
'
' SoftwareWatermarkAttribute


Namespace SecureTeam.Attributes
   Friend Class ObfuscatedByCliSecureAttribute
   End Class
   ' Token: 0x0200004A RID: 74
End Namespace

osea mas claro imposible xD hay ofuscadores de por medio, que hacen que colapse el de4dot, vamos a exeinfope
0)Original:
exeinfope 0.0.5.6 -> .NET ConfuserEx  structure [ mutation / mod -> generic ]

1)al quitar la primera capa de confuserex, con herramientas para desempacar confuser (si , en tuts4you  y otros foros hablan del tema,es bien complejo)
bueno veamos que aparece una vez desempacado:

exeinfope 0.0.5.6 -> [ Linker 48 ] - Microsoft Visual C# / Basic.NET  [ Obfus/Crypted ]  - EP Token : 060000EF
2) al usar sobre el desempacado usar de4dot de kao o bien de Wuhensoft
parece en la forma como  DeepSea Obfuscator v4 / Ben-Mhenni-Protector / o inclusive hasta el babel

si intento en la primera y segunda capa comentada, pasar de4dot, ahora si tengo algo mas claro,  un poco mas con dnspy, al volcar y analizar se ve así.
exeinfope 0.0.5.6 ->*** .NET - dotfuscator - PreEmpire Solutions - www.preemptive.com  -  stub :  Microsoft Visual C# / Basic.NET  - EP Token : 060001CC


en el caso de desofuscar con de4dot, luego del tema: ya no existe nada ilegible, igual falta desofuscar bastantes cosas,  la aplicación desofuscada es un x86 (32 bytes) desde analisis de rdgpacker detector, pero al pasar por dnspy para depurarlo, claramente es de x64 .

en mi caso al navegar por propiedades:
Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0"

es claro que han hecho uso de visual studio 15.9 (no es el mas actualizado)
https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes


mas ayuda no daré, pues solo quería confirmar que protección tiene: es confuser y hay ofuscación.

Private Sub method_3()
      Me.grid_2.Visibility = Visibility.Hidden
      Me.grid_3.Visibility = Visibility.Visible
      Class19.string_5 = Me.textBox_0.Text
      Class19.string_6 = Me.passwordBox_0.Password
      Settings.[Default].username = Class19.string_5
      Settings.[Default].password = Class19.string_6
      Settings.[Default].Save()
   End Sub

como metodo 3, es un programa que muestra un panel de conexión a traves de usuario y clavey guarda esos parámetros

cuando inicia
Public Sub New()
      Me.InitializeComponent()
      Me.textBox_0.Text = Settings.[Default].username
      Me.passwordBox_0.Password = Settings.[Default].password

coloca los valores de default.

verifica que no sean nulos
Private Sub button_0_Click(sender As Object, e As RoutedEventArgs)
      If Me.textBox_0.Text = "" OrElse Me.passwordBox_0.Password = "" Then
         Class5.smethod_11("", True)
      End If
      Task.Run(AddressOf Me.method_2)
   End Sub

se intenta conectar via socket a la ip 51.38.51.87
luego de la validación via conect hay 17 casos (opciones), y con ello establece true/false hacia la conexión con el navegador, luego de ello deberia haber un form con muchos radiogroups y opciones asi que puedo afirmar que es un sistema de cheat engine o algo asi, con ello cuenta con 90 cases (opciones) y al menos 33 diccionarios posibles de manejar , dentro del programa se aprecian 2 versiones, es algo extraño pero seria la 3.3.5.0 y 3.3.2.0 a la vez.

y ya de ahi validará la información, claramente es un programa pensado para ingresar a la plataforma de ellos, no tengo mas sentido de seguir explicando el programa, es un programa diseñado para ser manejado por el navegador con su usuario y clave establecido por ellos

Saludos Apuromafo

d0x1s

#4
Cita de: apuromafo en 11 Junio 2019, 16:41 PM
a mi punto de vista es una peticion directa de crackearlo, pero veamos hasta donde llegamos por encima : :silbar:

descripcion del programa: Prometheus Software 2019

ahora bien, abres en dnspy (x64) se ve claramente que esto tiene multiples capas al inicio:


Imports System

Namespace CryptoObfuscator
   Friend Class ProtectedWithCryptoObfuscatorAttribute
   End Class
   ' Token: 0x0200004C RID: 76
End Namespace

Namespace Xenocode.Client.Attributes.AssemblyAttributes
   Friend Class ProcessedByXenocode
   End Class
   ' Token: 0x02000050 RID: 80
End Namespace

Friend Class ObfuscatedByGoliath
End Class

NineRays.Obfuscator
'
' Types:
'
' SoftwareWatermarkAttribute


Namespace SecureTeam.Attributes
   Friend Class ObfuscatedByCliSecureAttribute
   End Class
   ' Token: 0x0200004A RID: 74
End Namespace

osea mas claro imposible xD hay ofuscadores de por medio, que hacen que colapse el de4dot, vamos a exeinfope
0)Original:
exeinfope 0.0.5.6 -> .NET ConfuserEx  structure [ mutation / mod -> generic ]

1)al quitar la primera capa de confuserex, con herramientas para desempacar confuser (si , en tuts4you  y otros foros hablan del tema,es bien complejo)
bueno veamos que aparece una vez desempacado:

exeinfope 0.0.5.6 -> [ Linker 48 ] - Microsoft Visual C# / Basic.NET  [ Obfus/Crypted ]  - EP Token : 060000EF
2) al usar sobre el desempacado usar de4dot de kao o bien de Wuhensoft
parece en la forma como  DeepSea Obfuscator v4 / Ben-Mhenni-Protector / o inclusive hasta el babel

si intento en la primera y segunda capa comentada, pasar de4dot, ahora si tengo algo mas claro,  un poco mas con dnspy, al volcar y analizar se ve así.
exeinfope 0.0.5.6 ->*** .NET - dotfuscator - PreEmpire Solutions - www.preemptive.com  -  stub :  Microsoft Visual C# / Basic.NET  - EP Token : 060001CC


en el caso de desofuscar con de4dot, luego del tema: ya no existe nada ilegible, igual falta desofuscar bastantes cosas,  la aplicación desofuscada es un x86 (32 bytes) desde analisis de rdgpacker detector, pero al pasar por dnspy para depurarlo, claramente es de x64 .

en mi caso al navegar por propiedades:
Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0"

es claro que han hecho uso de visual studio 15.9 (no es el mas actualizado)
https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes


mas ayuda no daré, pues solo quería confirmar que protección tiene: es confuser y hay ofuscación.

Private Sub method_3()
      Me.grid_2.Visibility = Visibility.Hidden
      Me.grid_3.Visibility = Visibility.Visible
      Class19.string_5 = Me.textBox_0.Text
      Class19.string_6 = Me.passwordBox_0.Password
      Settings.[Default].username = Class19.string_5
      Settings.[Default].password = Class19.string_6
      Settings.[Default].Save()
   End Sub

como metodo 3, es un programa que muestra un panel de conexión a traves de usuario y clavey guarda esos parámetros

cuando inicia
Public Sub New()
      Me.InitializeComponent()
      Me.textBox_0.Text = Settings.[Default].username
      Me.passwordBox_0.Password = Settings.[Default].password

coloca los valores de default.

verifica que no sean nulos
Private Sub button_0_Click(sender As Object, e As RoutedEventArgs)
      If Me.textBox_0.Text = "" OrElse Me.passwordBox_0.Password = "" Then
         Class5.smethod_11("", True)
      End If
      Task.Run(AddressOf Me.method_2)
   End Sub

se intenta conectar via socket a la ip 51.38.51.87
luego de la validación via conect hay 17 casos (opciones), y con ello establece true/false hacia la conexión con el navegador, luego de ello deberia haber un form con muchos radiogroups y opciones asi que puedo afirmar que es un sistema de cheat engine o algo asi, con ello cuenta con 90 cases (opciones) y al menos 33 diccionarios posibles de manejar , dentro del programa se aprecian 2 versiones, es algo extraño pero seria la 3.3.5.0 y 3.3.2.0 a la vez.

y ya de ahi validará la información, claramente es un programa pensado para ingresar a la plataforma de ellos, no tengo mas sentido de seguir explicando el programa, es un programa diseñado para ser manejado por el navegador con su usuario y clave establecido por ellos

Saludos Apuromafo

Increible explicación apuromafo me ha quedado bastante claro todo, realmente era mas sencillo de lo que yo pensaba. Muchisimas gracias por tomarte las molestias de ofrecerme una explicacion tan detallada. Me sirve muchisimo para aprender. Veo que no ofreces muchos detalles acerca de como desobfuscar confuserex ya que existe bastante controversia acerca de este tema y es mas complejo pero podrias darme una ligera idea y de paso serias tan amable de compartir el ejecutable final con el que has analizado su funcionalidad. Una vez mas muchisimas gracias. :)

apuromafo CLS

 compartir el ejecutable final  -> no, eso puede ser tomado a mal,   no puedo.

por otro lado para leer del tema de confuser  verás que no es nada nuevo:
https://www.google.com/search?q=confuser+ex

Saludos

d0x1s

#6
Cita de: apuromafo en 12 Junio 2019, 16:18 PM
compartir el ejecutable final  -> no, eso puede ser tomado a mal,   no puedo.

por otro lado para leer del tema de confuser  verás que no es nada nuevo:
https://www.google.com/search?q=confuser+ex

Saludos


Muchisimas gracias de todas formas , he intentado varios tutoriales por no decir muchos pero no se como hacer esactamente ya que es confuseex moded y no se como remover el anti tamper etc... se me hace complicado en este ejecutable ya que no sigue los habituales patrones de los tutoriales.
pd: tampoco puedo debugear correctamente ya que en el modulo principal creo que es:
he observado que implementa isdebuggerpresent y otros metodos anti debug


https://anonfile.com/Zfwat5vcn7/decopile_me_ez-cleaned_exe

Ya esta decopilado, cualquier ayuda para descifrar ahora los strings etc.. seria bien recibida. Necesito obtener la maxima desecriptacion para que el programa sea lo mayor legible que se pueda. Gracias de antemano. :)

MOD: No hacer doble post. Usa el boton modificar.