PROMETHIUM (StrongPity/APT C-41) an element no match for LMNTRIX

PROMETHIUM an element no match for LMNTRIX
PROMETHIUM an element no match for LMNTRIX

In this research, we have primarily focused on the Turkish APT group APT-C-41 (aka StrongPity and Promethium). The modus operandi of this group has been to install a backdoor on its victims machine to perform Cyber espionage operations. The main targets of this APT group have been Financial organisations, Industrial plants and Educational institutes. LMNTRIX threat research team brings together some of the payloads used by APT-C-41 (aka StrongPity and Promethium) in different campaigns across Europe in last quarter of the year 2020 by this threat actor group.

Payload details:

Payload HashCommand & Control Domains
d7aae4694291a7811c18ccc0af9d4b53mentiononecommon[.]com
06752c080a5c00baf971243be65a49b8ms21-app3-upload[.]com
52a895199380705c514dd0a23ba52414mailtransfersagents[.]com
c930f328b5b3894feced92d04908b256applicationrepo[.]com
469c0460e4c1fefd01db4ae9f79c53c7uppertrainingtool[.]com
d7c62bc2a06d5abd872152ec87c64c8b   07ee8219801ec09951b8609142639480 c009b0bcf1c02503fff0d0e511188b68 a57e5f2011d04117c28982a68db28e23 ff9b1e2d7ad8b022f3fd3d9395382cf5hostoperationsystems[.]com
989af6e0bb7fa4d62815f4fdc4696b85Protectapplication[.]com

Sample Analysis

LMNTRIX Threat research team performed a binary analysis of one of the collected to understand different functions used by APT-C-41 (aka StrongPity and Promethium) in their payload.

Hash (MD5): 52a895199380705c514dd0a23ba52414

File size: 117 KB

The collected specimen is an exe file (32 bit) and while checking the entry point, we confirmed that the file was compiled using VC++.

The above disassembled code is the entry point (call function followed by Jmp instruction) known for VC++ compiled file. We confirmed the compiler detail again with the help of other static analysis tool.

We further dissected the sample in the controlled environment to study the tactic used by the malware. We see the techniques like the discovery of file and directories, defence evasion mechanisms like VM aware, file obfuscation found in the sample. The sample has an anti-debugging function as:

Further, we found the function to detect the presence of the virtual environment (VM aware functionality), it executes the anti-VM instructions.

After bypassing these functions, we found the command and control domain embedded into the code. The snapshot shows the communication happens to the malicious domain which we highlighted below [mailtransfersagents(dot)com]:


This communication was initialized by using WINHTTP libraries to add the header requests, WinHttpSetOption, WinHttpSendRequest-WriteData and finally performed the receive response.

The functions highlighted above in the disassembled code was used for data exfiltration. The below code further shows the ping command and directory remove command used by the malware sample as well.
This clearly states that the sample has the functionality of deleting the directory trees in the victim machine and perform it in quiet mode. These actions are done with the help of command “rmdir” and parameters (/q and /s). This deletion with quiet mode didn’t ask for any confirmation to the user.

MITRE ATTACK ID Mapping

Techniques IDName
T1547Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder
T1543Create or Modify System Process: Windows Service
T1578Develop Capabilities: Digital Certificates, Code Signing Certificates
T1189Drive-by Compromise
T1036Masquerading: Match Legitimate Name or Location, task or service
T1553Subvert Trust controls; Code Signing
T1205Traffic Signaling: Port Knocking
T1204User Execution: Malicious File
T1078Valid Accounts: Local Accounts

Mitigations:

The following is the Yara Detection Rule for APT-C-41 :

rule win_strongpity_auto {

meta:

date = “2020-12-22”

version = “1”

tool = “yara-signator v0.6.0”

signator_config = “callsandjumps;datarefs;binvalue”

malpedia_rule_date = “20201222”

malpedia_hash = “52a895199380705c514dd0a23ba52414”

malpedia_version = “20201023”

malpedia_license = “CC BY-SA 4.0”

malpedia_sharing = “TLP:WHITE”

strings:

$sequence_0 = { 56 8b7508 f7d1 85f6 }

// n = 4, score = 500

//   56                   | push                esi

//   8b7508               | mov                 esi, dword ptr [ebp + 8]

//   f7d1                 | not                 ecx

//   85f6                 | test                esi, esi

$sequence_1 = { a1???????? 33c4 89442450 8b03 55 8ba828010000 8b4d00 }

// n = 7, score = 300

//   a1????????           |

//   33c4                 | xor                 eax, esp

//   89442450             | mov                 dword ptr [esp + 0x50], eax

//   8b03                 | mov                 eax, dword ptr [ebx]

//   55                   | push                ebp

//   8ba828010000         | mov                 ebp, dword ptr [eax + 0x128]

//   8b4d00               | mov                 ecx, dword ptr [ebp]

$sequence_2 = { e8???????? 8bd8 83c408 85db 0f85f5020000 8b442420 }

// n = 6, score = 300

//   e8????????           |

//   8bd8                 | mov                 ebx, eax

//   83c408               | add                 esp, 8

//   85db                 | test                ebx, ebx

//   0f85f5020000         | jne                 0x2fb

//   8b442420             | mov                 eax, dword ptr [esp + 0x20]

$sequence_3 = { 52 ff15???????? 83c404 837c241000 750a 837d0400 0f852e020000 }

// n = 7, score = 300

//   52                   | push                edx

//   ff15????????         |

//   83c404               | add                 esp, 4

//   837c241000           | cmp                 dword ptr [esp + 0x10], 0

//   750a                 | jne                 0xc

//   837d0400             | cmp                 dword ptr [ebp + 4], 0

//   0f852e020000         | jne                 0x234

$sequence_4 = { 83c408 83f8ff 0f845d050000 ff442410 85f6 7fe0 }

// n = 6, score = 300

//   83c408               | add                 esp, 8

//   83f8ff               | cmp                 eax, -1

//   0f845d050000         | je                  0x563

//   ff442410             | inc                 dword ptr [esp + 0x10]

//   85f6                 | test                esi, esi

//   7fe0                 | jg                  0xffffffe2

$sequence_5 = { 57 50 8944246c 89442450 }

// n = 4, score = 300

//   57                   | push                edi

//   50                   | push                eax

//   8944246c             | mov                 dword ptr [esp + 0x6c], eax

//   89442450             | mov                 dword ptr [esp + 0x50], eax

$sequence_6 = { 397704 0f8493000000 eb6b 8b54241c 6a04 }

// n = 5, score = 300

//   397704               | cmp                 dword ptr [edi + 4], esi

//   0f8493000000         | je                  0x99

//   eb6b                 | jmp                 0x6d

//   8b54241c             | mov                 edx, dword ptr [esp + 0x1c]

//   6a04                 | push                4

$sequence_7 = { c3 837c240800 56 57 8b7c240c 8db710050000 7534 }

// n = 7, score = 300

//   c3                   | ret

//   837c240800           | cmp                 dword ptr [esp + 8], 0

//   56                   | push                esi

//   57                   | push                edi

//   8b7c240c             | mov                 edi, dword ptr [esp + 0xc]

//   8db710050000         | lea                 esi, [edi + 0x510]

//   7534                 | jne                 0x36

$sequence_8 = { 68???????? 50 e8???????? 83c40c 8d85e0fdffff ffb574f7ffff }

// n = 6, score = 200

//   68????????           |

//   50                   | push                eax

//   e8????????           |

//   83c40c               | add                 esp, 0xc

//   8d85e0fdffff         | lea                 eax, [ebp – 0x220]

//   ffb574f7ffff         | push                dword ptr [ebp – 0x88c]

$sequence_9 = { 899570f7ffff 3b5708 0f82c3feffff e9???????? }

// n = 4, score = 200

//   899570f7ffff         | mov                 dword ptr [ebp – 0x890], edx

//   3b5708               | cmp                 edx, dword ptr [edi + 8]

//   0f82c3feffff         | jb                  0xfffffec9

//   e9????????           |

$sequence_10 = { 6a5c 668945f2 58 56 }

// n = 4, score = 200

//   6a5c                 | push                0x5c

//   668945f2             | mov                 word ptr [ebp – 0xe], ax

//   58                   | pop                 eax

//   56                   | push                esi

$sequence_11 = { 83ee01 75f8 e8???????? c3 8b770c 8d4710 8bd6 }

// n = 7, score = 200

//   83ee01               | sub                 esi, 1

//   75f8                 | jne                 0xfffffffa

//   e8????????           |

//   c3                   | ret

//   8b770c               | mov                 esi, dword ptr [edi + 0xc]

//   8d4710               | lea                 eax, [edi + 0x10]

//   8bd6                 | mov                 edx, esi

$sequence_12 = { e8???????? 83c410 ebe6 8b45e4 8b0c85a8bf4100 8b45e8 f644012880 }

// n = 7, score = 200

//   e8????????           |

//   83c410               | add                 esp, 0x10

//   ebe6                 | jmp                 0xffffffe8

//   8b45e4               | mov                 eax, dword ptr [ebp – 0x1c]

//   8b0c85a8bf4100       | mov                 ecx, dword ptr [eax*4 + 0x41bfa8]

//   8b45e8               | mov                 eax, dword ptr [ebp – 0x18]

//   f644012880           | test                byte ptr [ecx + eax + 0x28], 0x80

$sequence_13 = { c746345c4b4100 57 ff7634 c6463c01 e8???????? 59 59 }

// n = 7, score = 200

//   c746345c4b4100       | mov                 dword ptr [esi + 0x34], 0x414b5c

//   57                   | push                edi

//   ff7634               | push                dword ptr [esi + 0x34]

//   c6463c01             | mov                 byte ptr [esi + 0x3c], 1

//   e8????????           |

//   59                   | pop                 ecx

//   59                   | pop                 ecx

$sequence_14 = { 6a2f 59 668908 33c9 8b4608 66890c78 668b45d8 }

// n = 7, score = 200

//   6a2f                 | push                0x2f

//   59                   | pop                 ecx

//   668908               | mov                 word ptr [eax], cx

//   33c9                 | xor                 ecx, ecx

//   8b4608               | mov                 eax, dword ptr [esi + 8]

//   66890c78             | mov                 word ptr [eax + edi*2], cx

//   668b45d8             | mov                 ax, word ptr [ebp – 0x28]

condition:

7 of them and filesize < 999424

}

Tags: No tags

Comments are closed.