MalwareTech – Strings Everywhere

Buenas haxors!

Os traigo la ultima venada que me ha pegado y es que ando aprendiendo temas de Malware. Ya sabéis… tiempo libre + un punto de locura y algo de genialidad (@ValthekOn) y gente que te apoya en los momentos raros y jodidos y te empuja a romper tus miedos y Voila! otro que esta dándole al reversing o intentándolo. Antes de nada gracias @naivenom porque tus posts de ASM me están ayudando en esta aventura.

¿Aún no sabéis de qué hablo? => Anda pasaros por=> AQUÍ

Pero vamos a lo que nos ocupa. Descubrí el blog de MalwareTech, y que dentro de él, hay varios retos que ayudan a aprender el funcionamiento de como hacer reversing a Malware así que me dije : Why Not? Y ya de liarme yo… ¿por qué no liar al colega @Luigy0x18… y hacer que estruje la neurona?

Pero antes de continuar, y para que todos sepamos de quien hablamos y podamos situarnos quien es la persona tras el blog:

Actualmente se encuentra en juicio en Estados Unidos… ¿Héroe? ¿Villano? Eso lo dejo a cada uno de vosotros, yo lo tengo claro.

En este articulo hablaremos de los 3 primeros retos. Son sencillos y ayudan a quitarle el miedo a IDA PRO… (en mi caso IDA NOOB porque casi ni saber como coño se abría Hulia ;P)


Las reglas son muy sencillas :

  • No ejecutes el Binario
  • No lo metas a un debugger
  • Disfruta del aprendizaje
  • Todos los archivos de reto son un ZIP con clave «MalwareTech»

Para no complicarnos la existencia, lo haremos todo usando estas herramientas:

  1. Máquina Virtual Windows7x64 (Si, x64 o sino IDA no os funcionara) + Maquina KALI
  2. IDA Free edition 
  3. Radare 
  4. Ghidra 
  5. Strings de Systernals
  6. Resource Hacker

 

Antes de entrar de lleno por refrescar y que no suene a chino, vamos a dar un poco de anatomía (manos quietas que van al pan) hablo de binarios:

Tras las cabeceras que tiene un binario, existen varias secciones que nos son de gran utilidad a la hora de analizar Malware y que el hecho de conocerlas suponen el éxito o el fracaso absoluto de lo que estamos haciendo. @Roskyfrosky… perdóname si meto la gamba (era mi primerito día)

  • .text => Contiene el código ejecutable del binario. Normalmente tiene permisos de Lectura y Ejecución (R-X) y en caso de disponer de permisos de escritura los antivirus pierden la cabeza ya que suele ser indicador de que algo raro ocurre y podría ser un código auto-modificable.
  • .rdata => Es la información de Importación y Exportación del programa. En esta sección se guardan también cadenas de texto que se consideran NO MUTABLES . Como dato curioso, todo programa importa como mínimo una cosa, MAIN. Son datos de acceso global para todo el programa y sí, contiene los maravillosos STRINGS.
  • .data => Son los datos globales de la aplicación que son modificables durante su ejecución. Normalmente esta sección alberga las variables del programa.
  • .rsrc =>  Es la sección que marca los recursos utilizados por la aplicación (cursores, iconos, imágenes, forms, menús, …). Pero estamos hablando de malware así que es muy probable que esta sección contenga un binario secundario que sea la carga maliciosa.

Si queréis ampliar mas esta información os recomiendo la saga de artículos de @naivenom sobre ASM y reversing : AQUÍ ya que os va a ser necesario conocer las instrucciones BÁSICAS. Pero por refrescar algunas que nos van a ser útiles a lo largo de esta corta aventura, os dejo una pequeña guía rápida de las que nos encontraremos:

  • MOV => Permite copiar o insertar datos de diferentes formas entre registros, memoria y datos.
  • SHL   => Desplazamiento a la izquierda. Se desplazan a la izquierda los bits del operando destino tantas posiciones como indique el operando fuente.
  • XOR   => Su función es efectuar bit por bit la disyunción exclusiva lógica de los dos operandos:
    • Resultado
      1 1 0
      1 0 1
      0 1 1
      0 0 0
  • INC      => La instrucción suma 1 al operando destino y guarda el resultado en el mismo operando destino.
  • OR        => La instrucción OR lleva a cabo, bit por bit, la disyunción inclusiva lógica de los dos operandos:
    • Resultado
      1 1 1
      1 0 1
      0 1 1
      0 0 0


DICHO ESTO… A FUNCIONARRR!!

Strings 1

 

Tal y como hemos comentado aquí os dejamos las diferentes vías de solución que hemos encontrado utilizando las principales herramientas de reversing que se utilizan en la actualidad:

 

Strings 2


Tal y como hemos comentado aquí os dejamos las diferentes vías de solución que hemos encontrado utilizando las principales herramientas de reversing que se utilizan en la actualidad:

 

 

 

Strings 3

Tal y como hemos comentado aquí os dejamos las diferentes vías de solución que hemos encontrado utilizando las principales herramientas de reversing que se utilizan en la actualidad:

 

 

Espero que el articulo sea de ayuda para ir quitando miedo al reversing de Malware tal como me ha pasado a mi y que si os interesa, empecéis a engancharos porque mi intención es que sea el 1º de unos cuantos sobre el tema ya que me flipa y me apetecía compartirlo con vosotros . Y sobre todo Gracias al colega @Luigy0x18 que se ha pegado una muy buena currada con RADARE para ofrecernos otro punto de vista y más opciones a la hora de solucionar los retos.

Un abrazote a tod@s Conejill@s! y cualquier duda ya sabéis: https://t.me/Fwhibbit