Demystifying Obfuscation Used in the Thanksgiving Spam Campaign
2 Minute Read
by Rodel Mendrez
During Thanksgiving week, we noticed this quite unusual XML-format MS Office Document file:
Figure 1: Email Sample
Saving a Word document file as XML is a legitimate option but criminals had taken advantage of this file format to circumvent malware scanners and spam filters.
This Microsoft Office Word document file has an almost "hidden" TextFrame object sitting in the corner. The document also has macro in it which we will also be investigating.
If you expand this tiny TextFrame object you will see an obfuscated CMD shell:
The entire CMD code can be seen below:
Next in the investigation, we de-obfuscated this shell command, by first removing all the caret characters "^", this is because CMD shell omits this on execution.
Taking a look at the first line of code:
cmd /c %LOCalAPpdaTA:~ -3,-2%^M%SysTEmrOoT:~ +6, +1%; ; ; ; /V:^o^ ; /%appDATa:~-7, 1%"
When printing this command using the echo command, it prints "cMD; ;;; /V:o /R"
The code extracts the substring from the value of the environment variable and from this, it builds a command string. For example:
%localappdata% environment variable is equivalent to this path "C:\Users\Username\AppData\Local"
Then using substring command in cmd shell "%localappdata:~-3,-2%" it extracts a character between position 3 from the end of the string and position 2 from the end string:
"C:\Users\Username\AppData\Local"
We are not sure why the malware writer obfuscated this, since they already had a fairly obvious precursor "cmd" string in the command shell.
Next, we take a look at the block of obfuscated strings assigned to the variable t8Vb and the FOR loop after that (as seen in Figure 9):
for /l %m IN (2143, -4, 3) do (SeT yN5H=!yN5H!!t8Vb:~ %m, 1!) if %m==3 ;(call; %yN5H:*yN5H!=%)
The loop actually extracts each character starting from the end of the string of the variable t8Vb and steps 4 positions backward each loop until it reaches the 3rd position of the string.
To make it a lot easier, we can reverse the string block:
Then starting from the first position we extract every 4th character from the string block.
After extracting, it builds a string of the powershell command shown below:
So how does the powershell command get executed? The answer is a macro code. When a user opens this document file and enables the macros. A VBA macro code will trigger. This code extracts the string from the TextFrame then executes it using VBA Shell command
So what is the payload?
The PowerShell attempts to download a binary from a list of URLs:
hxxp:// danzarspiritandtruth[.]com /J7B5TiAIp
hxxp:// littlepeonyphotos[.]ru /jPGDyvIm
hxxp:// iuyouth.hcmiu.edu[.]vn /mVayv0I7S
hxxp:// exploraverde[.]co /mmR4TaGu8
hxxp:// turkaline[.]com /zGiFH0X
Then the script saves the binary to the Windows temporary folder and executes it.
The binary files at the end of the URL are Emotet - a notorious banking trojan that rolls out different behavior such as info-stealing modules for emails and browsers.
About LevelBlue
LevelBlue secures what's next with intelligence-led security delivering visibility and speed to stop threats faster. As the world’s largest and most analyst-recognized pure-play managed security services provider, our AI-powered managed services and cyber expertise across managed, advisory, and incident response services help clients operate with confidence. Learn more about us.