<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Abysssec Security Research &#187; shahin</title>
	<atom:link href="http://www.abysssec.com/blog/author/shahin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.abysssec.com/blog</link>
	<description>Security Researches , Advisories , Coding , Projects , Reversing , Exploitation , Fuzzing</description>
	<lastBuildDate>Tue, 31 Jan 2012 15:52:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Exploiting CVE-2011-2140 another flash player vulnerability</title>
		<link>http://www.abysssec.com/blog/2012/01/31/exploiting-cve-2011-2140-another-flash-player-vulnerability/</link>
		<comments>http://www.abysssec.com/blog/2012/01/31/exploiting-cve-2011-2140-another-flash-player-vulnerability/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 15:41:43 +0000</pubDate>
		<dc:creator>shahin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.abysssec.com/blog/?p=1469</guid>
		<description><![CDATA[hello all . before going future we are sorry to not update blog regularly, but it&#8217;s due to we are busy with stack of projects and also working on our expert training courses. so as we didn&#8217;t post any blog post here we go with another flash player exploit we wrote long time ago. &#160; 1) Advisory information [...]]]></description>
			<content:encoded><![CDATA[<p>hello all .</p>
<p>before going future we are sorry to not update blog regularly, but it&#8217;s due to we are busy with stack of projects and also working on our <strong><span style="text-decoration: underline;">expert training courses.</span></strong></p>
<p>so as we didn&#8217;t post any blog post here we go with another flash player exploit we wrote long time ago.</p>
<p>&nbsp;</p>
<h1>1) Advisory information</h1>
<p>&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638"><strong>  Title                   :  </strong><strong>Adobe flash player memory overwrite exploit </strong><strong></strong><strong>  Version             :  </strong><strong>&lt;= 10.3.186.3</strong><strong></strong><strong>  Discovery         :  <a href="http://www.zerodayinitiative.com/advisories/ZDI-11-276/">http://www.zerodayinitiative.com/advisories/ZDI-11-276/</a></strong><strong>  Vendor             :  <a href="http://adobe.com/">http://adobe.com</a></strong></p>
<p><strong>  Impact              :  Critical</strong></p>
<p><strong>  Contact            :   info  [at] abysssec.com</strong></p>
<p><strong>  Twitter             :   @abysssec</strong></p>
<p><strong> </strong></td>
</tr>
</tbody>
</table>
<h1>2) Vulnerability Information</h1>
<p>&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638">Class<strong>        1- Stack Overwrite</strong>Impact<strong></strong><strong>Successfully exploiting this issue allows remote attackers to gain code execution on vulnerable system</strong></p>
<p>Remotely Exploitable</p>
<p><strong>Yes</strong></p>
<p>Locally Exploitable<strong></strong></p>
<p><strong>Yes</strong></td>
</tr>
</tbody>
</table>
<h1></h1>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h1>3) Vulnerabilities detail</h1>
<p>&nbsp;</p>
<h2>1- Stack overwrite vulnerability</h2>
<p>&nbsp;</p>
<p>Before we go deep into the vulnerability for understanding this vulnerability you should take a look at MP4 format and H.264/AVC data structures.The actual vulnerability occurs during processing data units in Sequence Parameter Set in MP4. Sub_1005B396 function, is responsible for processing   Sequence Parameter Set. In this function pic_order_cnt_type from SPS will be check, if it’s equal with 1, other fields like data_pic_order_always_zero_flag , offset_for_non_ref_pic , offset_for_top_to_bottom_field  will be initialize :</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638">.text:1005B396 sub_1005B396    proc near               ; CODE XREF: sub_1005B8DB+4Bp.text:1005B397                 push    ebp.text:1005B398                 push    esi.text:1005B399                 push    edi</p>
<p>.text:1005B39A                 mov     edi, ecx</p>
<p>.text:1005B39C                 call    sub_1005A95B</p>
<p>.text:1005B3A1                 mov     esi, [esp+10h+arg_0]</p>
<p>.text:1005B3A5                 mov     ecx, edi</p>
<p>.text:1005B3A7                 mov     [esi], al</p>
<p>&nbsp;</p>
<p>&#8230;</p>
<p>&nbsp;</p>
<p>.text:1005B47D                 mov     ecx, edi</p>
<p>.text:1005B47F                 mov     [esi+20h], eax</p>
<p>.text:1005B482                 call    sub_1005AA64</p>
<p>.text:1005B487                 mov     [esi+40h], eax</p>
<p>.text:1005B48A                 cmp     eax, ebp             <strong>à</strong>     <strong>if( pic_order_cnt_type )</strong></p>
<p>.text:1005B48C                 jnz     short loc_1005B49D</p>
<p>&nbsp;</p>
<p>…</p>
<p>&nbsp;</p>
<p>.text:1005B49D loc_1005B49D:                           ; CODE XREF: sub_1005B396+F6j</p>
<p>.text:1005B49D                 xor     ebx, ebx</p>
<p>.text:1005B49F                 inc     ebx</p>
<p>.text:1005B4A0                 cmp     eax, ebx            <strong>à</strong>       <strong>if( pic_order_cnt_type == 1 )</strong></p>
<p>.text:1005B4A2                 jnz     short loc_1005B4EF</p>
<p>.text:1005B4A4                 mov     ecx, edi</p>
<p>.text:1005B4A6                 call    sub_1005A99A    à       offset_for_top_to_bottom_field</p>
<p>.text:1005B4AB                 mov     ecx, edi</p>
<p>.text:1005B4AD                 mov     [esi+48h], al</p>
<p>.text:1005B4B0                 call    sub_1005AA93    à        offset_for_non_ref_pic</p>
<p>.text:1005B4B5                 mov     ecx, edi</p>
<p>.text:1005B4B7                 mov     [esi+54h], eax</p>
<p>.text:1005B4BA                 call    sub_1005AA93    à         offset_for_top_to_bottom_field<strong></strong></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Then the num_ref_frames_in_pic_order_cnt_cycle will be set and if it’s bigger than 0 the values in offset_for_ref_frame will be copied into buffer.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638">text:1005B4BF                 mov     ecx, edi.text:1005B4C1                 mov     [esi+50h], eax.text:1005B4C4                call    sub_1005AA64      <strong>à</strong>    <strong>num_ref_frames_in_pic_order_cnt_cycle</strong>.text:1005B4C9                 mov     [esi+4Ch], eax</p>
<p>.text:1005B4CC                 test    eax, eax</p>
<p>.text:1005B4CE                 jbe     short loc_1005B4EF</p>
<p>.text:1005B4D0                 lea     eax, [esi+58h]</p>
<p>.text:1005B4D3                 mov     [esp+10h+arg_0], eax</p>
<p>.text:1005B4D7</p>
<p>.text:1005B4D7 loc_1005B4D7:                                             <strong>à</strong>         <strong>do{</strong></p>
<p>.text:1005B4D7                 mov     ecx, edi</p>
<p>.text:1005B4D9                 call    sub_1005AA93                    <strong>à</strong>         <strong>offset_for_ref_frame[i]</strong></p>
<p>.text:1005B4DE                 mov     ecx, [esp+10h+arg_0]</p>
<p>.text:1005B4E2                 add     [esp+10h+arg_0], 4            <strong>à</strong><strong>          buf = &amp;buf + 4</strong></p>
<p>.text:1005B4E7                 inc     ebp                                      <strong>à</strong>          <strong>i++</strong></p>
<p>.text:1005B4E8                 mov     [ecx], eax                           <strong>à</strong>          <strong>buf = offset_for_ref_frame[i]</strong></p>
<p>.text:1005B4EA                 cmp     ebp, [esi+4Ch]</p>
<p>.text:1005B4ED                 jb      short loc_1005B4D7             <strong>à</strong>          <strong>} while(i &lt; </strong><strong>num_ref_frames_&#8230;</strong><strong>)    </strong></td>
</tr>
</tbody>
</table>
<p>You should got the vulnerability at this point. There is no boundary check for num_ref_frames_in_pic_order_cnt_cycle, so our data related to  offset_for_ref_frame will be copy into the stack , that’s all .</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>2- Exploitation</h2>
<p>Thanks to windows memory manager, browser and class of bug it’s not that hard to archive RCE. The only thing that should care about is return address. Because values which copied from MP4 file into stack, come with the changes. In other words, these values ​​after reading from file will be decode and then are copied into stack. Values ​​are copied into the buffer are generated from values in file into Signed Exp-Golomb code.After taking controll of EIP it&#8217;s easy to finish the job we used basic heap spray.</p>
<p>here is reliable exploit : <a href="http://www.abysssec.com/blog/wp-content/uploads/2012/01/CVE-2011-2140.zip">CVE-2011-2140</a></p>
<p>happy hunting !</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abysssec.com/blog/2012/01/31/exploiting-cve-2011-2140-another-flash-player-vulnerability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Excel 2007 SP2 Buffer Overwrite Vulnerability BA / Exploit (MS11-021)</title>
		<link>http://www.abysssec.com/blog/2011/11/02/microsoft-excel-2007-sp2-buffer-overwrite-vulnerability-ba-exploit-ms11-021/</link>
		<comments>http://www.abysssec.com/blog/2011/11/02/microsoft-excel-2007-sp2-buffer-overwrite-vulnerability-ba-exploit-ms11-021/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 18:47:48 +0000</pubDate>
		<dc:creator>shahin</dc:creator>
				<category><![CDATA[Exploits / BUG Decryption]]></category>
		<category><![CDATA[0day]]></category>
		<category><![CDATA[code execution]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[ms11]]></category>
		<category><![CDATA[ms11-021]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[sp2]]></category>

		<guid isPermaLink="false">http://www.abysssec.com/blog/?p=1387</guid>
		<description><![CDATA[hello all as we didn&#8217;t publish any exploit for a bit we just going to release. 1) Advisory information Title : Microsoft Excel 2007 SP2 Buffer Overwrite Vulnerability Vendor : http://www.microsoft.com Impact : Critical Contact : info [at] abysssec.com Twitter : @abysssec Microsoft : A remote code execution vulnerability exists in the way that Microsoft [...]]]></description>
			<content:encoded><![CDATA[<p>hello all</p>
<p>as we didn&#8217;t publish any exploit for a bit we just going to release.</p>
<h2>1) Advisory information</h2>
<p>Title : Microsoft Excel 2007 SP2 Buffer Overwrite Vulnerability</p>
<p>Vendor : http://www.microsoft.com<br />
Impact : Critical<br />
Contact : info [at] abysssec.com<br />
Twitter : @abysssec</p>
<p>Microsoft :<br />
A remote code execution vulnerability exists in the way that Microsoft Excel handles specially crafted Excel files.An attacker who successfully exploited this vulnerability could take complete control of an affected system. An attacker could then install programs; view, change, or delete data; or create new accounts with full user rights.</p>
<h2>2) Vulnerability detail</h2>
<p>each excel file can contain multiple BOF (2057) records . This record specifies the first substream associated with workbook.One of the fields in these records, specify substream recordd to come with. This field can be extracted from sub_3018F0C2 function.</p>
<p><code> .text:301A0C87 push [ebp+arg_2C]<br />
.text:301A0C8A mov ecx, [ebp+var_14]<br />
.text:301A0C8D push 1<br />
.text:301A0C8F call sub_3018F0C2<br />
.text:301A0C94 mov ecx, eax<br />
.text:301A0C96 mov eax, [ebp+arg_24]<br />
.text:301A0C99 cmp eax, ebx<br />
.text:301A0C9B mov [ebp+var_10], ecx<br />
.text:301A0C9E jz short loc_301A0CA2<br />
.text:301A0CA0 mov [eax], ecx<br />
</code></p>
<p>If the field value is equal with 400, sub_3019DFBA function is called to check file type. if file type is xls EXCEL.exe will display a message If approved it will continue to run the code.if you change file extension to xlb there will be any message. After this step sub_3053F626 function will be executed. This function will parse the next BOF records.</p>
<p><code><br />
.text:304D4E9D cmp [ebp+arg_20], ebx<br />
.text:304D4EA0 jnz short loc_304D4EC6<br />
.text:304D4EA2 test dword ptr word_30EDCF9C, 2000000h<br />
.text:304D4EAC jnz short loc_304D4EC6<br />
.text:304D4EAE mov edx, [ebp+arg_C]<br />
.text:304D4EB1 mov ecx, [ebp+arg_8]<br />
.text:304D4EB4 push 3Fh<br />
.text:304D4EB6 call sub_3019DFBA<br />
.text:304D4EBB cmp eax, ebx<br />
.text:304D4EBD mov [ebp+var_8], eax<br />
.text:304D4EC0 jz loc_304D4FD3<br />
.text:304D4EC6<br />
.text:304D4EC6 loc_304D4EC6: ; CODE XREF: sub_301A0BC7+3342D9j<br />
.text:304D4EC6 ; sub_301A0BC7+3342E5j<br />
.text:304D4EC6 push ebx<br />
.text:304D4EC7 push dword_30EB89A4<br />
.text:304D4ECD push [ebp+var_C]<br />
.text:304D4ED0 call sub_3053F626<br />
.text:304D4ED5 cmp dword_30F5E64C, ebx<br />
.text:304D4EDB mov [ebp+var_8], eax<br />
.text:304D4EDE jz short loc_304D4EE7<br />
.text:304D4EE0 cmp eax, ebx<br />
.text:304D4EE2 jz short loc_304D4EE7<br />
</code></p>
<p>one of records may come after BOF,is undocumented record which have record type equal to 0xA7 (167). for truly parsing this record should come with another record with 0x3C (60) record type. if it meet this requirement the length of records will be read and copied to the stack the function which operation of copying data records in the stack is sub_30199E55. This function takes three arguments .The first argument specifies the number of bytes to copy, which will read from file. The second argument specifies the destination of the copy and the third argument specifies the maximum amount of data can be copied. values of the second and third arguments based on the amount of computing reading from file and into this cumpoting,computational error which may occur here &#8230;</p>
<p><code><br />
.text:3053F830 call sub_301A0A01<br />
.text:3053F835 cmp eax, 3Ch<br />
.text:3053F838 mov [ebp+var_ED4], eax<br />
.text:3053F83E jnz loc_30540488<br />
.text:3053F844 call sub_301A0A01<br />
.text:3053F849 mov ecx, [ebp+var_EDC]<br />
.text:3053F84F imul ecx, [ebp+var_F00]<br />
.text:3053F856 mov edi, eax<br />
.text:3053F858 mov eax, [ebp+var_EE0]<br />
.text:3053F85E lea ebx, [ecx+eax+3]<br />
.text:3053F862 call sub_301A0ABE<br />
.text:3053F867 push 0FFFFFFFDh<br />
.text:3053F869 pop edx<br />
.text:3053F86A sub edx, ecx<br />
.text:3053F86C add eax, edx<br />
.text:3053F86E push eax ; Dst<br />
.text:3053F86F push ebx ; int<br />
.text:3053F870 mov eax, edi<br />
.text:3053F872 call sub_30199E55<br />
</code></p>
<p>the vulnerability that exists here is that we can change the value of parameter 3 whith our own values. program will not correcly controll third argument of sub_30199E55 this and can result in the desired amount and location of desired data can overwrite in the stack.</p>
<p><code><br />
.text:30199E60 cmp edi, [esp+4+Dst]<br />
.text:30199E64 ja loc_303EE1B7<br />
.text:30199E6A mov ecx, [esp+4+arg_0]<br />
.text:30199E6E push ebx<br />
.text:30199E6F mov ebx, dword_30F726C0<br />
.text:30199E75 push ebp<br />
.text:30199E76 mov ebp, nNumberOfBytesToRead<br />
.text:30199E7C push esi<br />
.text:30199E7D mov [esp+10h+Dst], ecx<br />
....<br />
.text:30199E93 mov eax, [esp+10h+Dst]<br />
.text:30199E97 push esi ; Size<br />
.text:30199E98 lea edx, dword_30F6E6B8[ebx]<br />
.text:30199E9E push edx ; Src<br />
.text:30199E9F push eax ; Dst<br />
.text:30199EA0 sub edi, esi<br />
.text:30199EA2 call memcpy<br />
.text:30199EA7 add [esp+1Ch+Dst], esi<br />
.text:30199EAB add ebx, esi<br />
.text:30199EAD add esp, 0Ch<br />
.text:30199EB0 test edi, edi<br />
.text:30199EB2 mov dword_30F726C0, ebx<br />
.text:30199EB8 jnz loc_301E0DB3<br />
</code></p>
<h2>3) Exploitation :</h2>
<p>Stack overflows are not hard to exploit at all ! but as we have both /GS , SAFESEH here. because given that we are destined to memcpy we can change it so that it begins to overwrite the stack after GS. and from there when the return comes , our values contained in the ESP and we can call it with simple call esp and game is over !!!</p>
<p>&nbsp;</p>
<p style="text-align: left;"><a href="http://www.abysssec.com/blog/2011/11/02/microsoft-excel-2007-sp2-buffer-overwrite-vulnerability-ba-exploit-ms11-021/memcpy/" rel="attachment wp-att-1388"><img class="aligncenter size-full wp-image-1388" title="memcpy" src="http://www.abysssec.com/blog/wp-content/uploads/2011/11/memcpy.png" alt="" width="428" height="267" /></a></p>
<h6 style="text-align: left;">download full exploit source  : <a href="http://www.abysssec.com/blog/2011/11/02/microsoft-excel-2007-sp2-buffer-overwrite-vulnerability-ba-exploit-ms11-021/ms11-021/" rel="attachment wp-att-1456" target="_blank">MS11-021</a></h6>
<p>Happy Hacking .</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abysssec.com/blog/2011/11/02/microsoft-excel-2007-sp2-buffer-overwrite-vulnerability-ba-exploit-ms11-021/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bypassing all anti-virus in the world (Good Bye Detection , Hello Infection)</title>
		<link>http://www.abysssec.com/blog/2011/09/25/bypassing-all-anti-virus-in-the-world-good-bye-detection-hello-infection/</link>
		<comments>http://www.abysssec.com/blog/2011/09/25/bypassing-all-anti-virus-in-the-world-good-bye-detection-hello-infection/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 20:54:55 +0000</pubDate>
		<dc:creator>shahin</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[Pen-test Method]]></category>
		<category><![CDATA[reversing]]></category>
		<category><![CDATA[0/35]]></category>
		<category><![CDATA[100% FUD]]></category>
		<category><![CDATA[Anti virus]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[crypt]]></category>
		<category><![CDATA[Crypter]]></category>
		<category><![CDATA[FUD]]></category>
		<category><![CDATA[heuristic]]></category>
		<category><![CDATA[private]]></category>
		<category><![CDATA[proactive defense]]></category>
		<category><![CDATA[runtime]]></category>
		<category><![CDATA[scantime]]></category>
		<category><![CDATA[sonar]]></category>
		<category><![CDATA[VampCrypt]]></category>

		<guid isPermaLink="false">http://www.abysssec.com/blog/?p=1363</guid>
		<description><![CDATA[hello to all readers Introduction as  you may read in @abysssec in twitter  actually in past a few months we did a cool research on bypassing anti-viruses and got really great result . Bypassing anti-viruses is not a new topic and it’s still about encrypting / decrypting  of a program to being hide from AV [...]]]></description>
			<content:encoded><![CDATA[<p>hello to all readers</p>
<h2>Introduction</h2>
<p>as  you may read in @abysssec in twitter  actually in past a few months we did a cool research on bypassing anti-viruses and got really great result .</p>
<p>Bypassing anti-viruses is not a new topic and it’s still about encrypting / decrypting  of a program to being hide from AV eyes. In past it was really, really easy task to do but AV’s getting smarter and bypassing all anti-viruses with some really unique methods that each of them use is not funny and neither easy to do.</p>
<p>before i go feature i like to have a simple glossary for unfamiliar readers.</p>
<h2>Glossary</h2>
<p>Crypter : the program (mostly GUI) will crypt the malware / bot to make it hide from anti-viruses</p>
<p>Stub : the Decryptor of crypted program</p>
<p>FUD : Fully Un Detectable (FUD = no AV detect)</p>
<p>RUNPE : run the PE without headers in memory</p>
<p>USG : unique stub generator. (make unique stubs)</p>
<p>Binder: will join two file will drop in hdd or mem</p>
<p>Pumper: will increase size of tool</p>
<p>EOF  : end of file(in crypter it need to preserve)</p>
<p>Cloner : will clone the file (Decryptor like in HDD)</p>
<p>Icon Changer: will change the final exe icon</p>
<p>well there are two also different kind of crypters scan time and run time. The good crypter is run time one because as it name says the scan time crypter is just FUD at scan time and when you run it and after real malware decrypted  it will be detect  so not that useful. And the real crypter is the runtime one.</p>
<h2>How it works ?</h2>
<p>if we remove all complex technical info for bypassing all 35 anti-virus around the world it works really sample.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="aligncenter" title="encryption" src="http://img38.imageshack.us/img38/1530/encryption.png" alt="" width="398" height="217" /></p>
<p style="text-align: center;"><img class="aligncenter" title="Decryption" src="http://img263.imageshack.us/img263/6300/decryption.png" alt="" width="398" height="176" /></p>
<p>it simply encrypt  program, decrypt, and  then run it in memory. encryption algorithm is not important and sample ideas are enough to make a crypter fud</p>
<p>but some of mostly used alghortims are :</p>
<div>I. RC4</div>
<div>II. AES</div>
<div>III.DES</div>
<div>IV. TEA</div>
<div>V. XOR</div>
<div>VI. CryptoAPI</div>
<div>VII. blowfish</div>
<div>note that there is important part in your job and that is run the malware safely in memory after decrypting it , and this is done by RunPE . the idea of RunPE comes from great PoC by Tan Chew Keong called dynamic forking of win32 exe : <a href="http://www.security.org.sg/code/loadexe.html">http://www.security.org.sg/code/loadexe.html</a></div>
<p>steps and idea are really sample :</p>
<p>CreateProcess</p>
<p>Find Base address</p>
<p>Virtualalloc</p>
<p>Align sections</p>
<p>Fix thread context</p>
<p>Resume thread</p>
<p>but this is not easy to hide this kind of API chaining from anti-viruses .</p>
<p>so we finished our research by writing a new fud crypter and our crypter is unique and different with public ones .</p>
<p>our crypter is unique and can bypass all 35 exist av right now .</p>
<p>here is list of AV we fully tested our crypters on them .</p>
<pre> - Ad-Aware
 - AhnLab V3 Internet Security
 - ArcaVir
 - Avast
 - Avast 5
 - AVG Free
 - AntiVir (Avira)
 - BitDefender
 - BullGuard
 - VirusBuster Internet Security
 - Clam Antivirus
 - COMODO Internet Security
 - Dr.Web
 - eTrust-Vet
 - F-PROT Antivirus
 - F-Secure Internet Security
 - G Data
 - IKARUS Security
 - Kaspersky Antivirus
 - McAfee
 - MS Security Essentials
 - ESET NOD32
 - Norman
 - Norton Antivirus
 - Panda Security
 - A-Squared
 - Quick Heal Antivirus
 - Rising Antivirus
 - Solo Antivirus
 - Sophos
 - Trend Micro Internet Security
 - VBA32 Antivirus
 - Vexira Antivirus
 - Webroot Internet Security
 - Zoner AntiVirus</pre>
<p>we even tested 10 year ago malware and our crypter can hide them from any anti-virus system .</p>
<p>our crypter comes with some unique features here is some of them</p>
<p>&nbsp;</p>
<pre> - FUD 0 / 35 detection</pre>
<pre> - EOF support</pre>
<pre> - Coded in C/ASM Stub and GUI In C#
 - Compatible with Win 2k/XP/7 x32 and x64
 - Ability of bypassing heuristic and emulators (Kaspersky pro-acvtive defense , Nod32 advanced heuristic , Norton Sonar, Avira heuristic)
 - Command line support
 - Unicode support (chines , russian and so on)
 - Right-to-Left Exploit after crypting you can have .mp3 , doc , pdf , avi or anything as output !!!
 - inbuilt scanner and scanning with 35 anti-virus after cryptring
 - advanced file binder with drop in disk and memory
 - Anti-debug
 - Anti-sandbox
 - advanced encryption : Double XOR , RC4, AES256
 - Advanced resource storage : unique method</pre>
<p>here is some screen shot of GUI :</p>
<p style="text-align: center;"> <img class="aligncenter" title="main" src="http://img821.imageshack.us/img821/5753/77969111.png" alt="" width="236" height="354" /></p>
<p style="text-align: center;"><img class="aligncenter" title="crypter-main" src="http://img829.imageshack.us/img829/6604/52669995.png" alt="" width="236" height="354" /></p>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="aligncenter" title="crypter-extenction-exploit" src="http://img202.imageshack.us/img202/5251/79635338.png" alt="" width="236" height="354" /></p>
<p>&nbsp;</p>
<p style="text-align: center;"> <img class="aligncenter" title="antis" src="http://img607.imageshack.us/img607/3291/13548031.png" alt="" width="236" height="354" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>and finally you can see the actual work in a demo here :</p>
<p><a href="http://abysssec.com/files/VampCrypt.rar  ">http://abysssec.com/files/VampCrypt.rar</a></p>
<p>as we don&#8217;t want harm anyone if you are :</p>
<p>- penetration testing company</p>
<p>- anti virus / IDS company</p>
<p>- any legit company who needs it</p>
<p><strong>&#8221; please note that WE DON&#8221;T give tool / technology to PERSON . ONLY VERIFIED COMPANY &#8221;  </strong></p>
<p>contact : info [at] abysssec.com</p>
<p>and as always you can follow @abysssec in twitter</p>
<p>happy fudding .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abysssec.com/blog/2011/09/25/bypassing-all-anti-virus-in-the-world-good-bye-detection-hello-infection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exploit for CVE-2011-0222  Safari SVG Vulnerability</title>
		<link>http://www.abysssec.com/blog/2011/07/26/exploit-for-cve-2011-0222-safari-svg-vulnerability/</link>
		<comments>http://www.abysssec.com/blog/2011/07/26/exploit-for-cve-2011-0222-safari-svg-vulnerability/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 12:21:35 +0000</pubDate>
		<dc:creator>shahin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.abysssec.com/blog/?p=1359</guid>
		<description><![CDATA[Hello all again we are here with a patched vuln again and this time apple safari one . &#160; &#160; actually it&#8217;s not that really odd to see your 0day got patched in vendor big patches and this time this happened to US too. our safari vulnerability got patched and we decide to public our windows exploit + stand alone [...]]]></description>
			<content:encoded><![CDATA[<p>Hello all again</p>
<p>we are here with a patched vuln again and this time apple safari one .</p>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="aligncenter" title="Apple Bug" src="http://www.testingthefuture.net/wp-content/uploads/2011/01/Apple_bug.jpg" alt="" width="500" height="333" /></p>
<p>&nbsp;</p>
<p>actually it&#8217;s not that really odd to see your 0day got patched in vendor big patches and this time this happened to US too.</p>
<p>our safari vulnerability got patched and we decide to public our windows exploit + stand alone trigger without any pop up and finally a simple ROP to DEP bypass .</p>
<p>no more explanation this time check out exploit code.</p>
<pre>http://www.abysssec.com/files/CVE-2011-0222_WinXP_Exploit.zip

http://www.exploit-db.com/sploits/CVE-2011-0222_WinXP_Exploit.zip</pre>
<p>as always feel free to contact us : info [at] abysssec.com</p>
<p>follow @twitter for updates</p>
<p>&nbsp;</p>
<p>cheers</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abysssec.com/blog/2011/07/26/exploit-for-cve-2011-0222-safari-svg-vulnerability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analysis of CVE-2011-0041 vulnerability in GDI+</title>
		<link>http://www.abysssec.com/blog/2011/07/18/analysis-of-cve-2011-0041-vulnerability-in-gdi/</link>
		<comments>http://www.abysssec.com/blog/2011/07/18/analysis-of-cve-2011-0041-vulnerability-in-gdi/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 13:02:36 +0000</pubDate>
		<dc:creator>shahin</dc:creator>
				<category><![CDATA[advisory]]></category>
		<category><![CDATA[Exploits / BUG Decryption]]></category>
		<category><![CDATA[reversing]]></category>
		<category><![CDATA[BA]]></category>
		<category><![CDATA[binary analysis]]></category>
		<category><![CDATA[Bounty]]></category>
		<category><![CDATA[CVE-2011-0044]]></category>
		<category><![CDATA[exploit]]></category>
		<category><![CDATA[GDI+]]></category>
		<category><![CDATA[metasploit]]></category>
		<category><![CDATA[MSF]]></category>
		<category><![CDATA[VUPEN]]></category>

		<guid isPermaLink="false">http://www.abysssec.com/blog/?p=1344</guid>
		<description><![CDATA[Abysssec Research we tried for other case in exploit bounty this time for a 500$ one . no luck for successful exploitation and to be honest we didn&#8217;t tried so hard . at least we got a PoC and here is our analysis for this cool bug. 1) Advisory information &#160;   Title                   :  GDI+ CreateDashedPath Integer overflow in gdiplus.dll [...]]]></description>
			<content:encoded><![CDATA[<p align="center">Abysssec Research</p>
<p align="center"><a href="http://www.abysssec.com/blog/wp-content/uploads/2011/07/Abyssssec.png"><img class="aligncenter size-full wp-image-1346" title="Abyssssec" src="http://www.abysssec.com/blog/wp-content/uploads/2011/07/Abyssssec.png" alt="" width="222" height="203" /></a></p>
<p style="text-align: left;" align="center">we tried for other case in exploit bounty this time for a 500$ one .</p>
<p style="text-align: left;" align="center">no luck for successful exploitation and to be honest we didn&#8217;t tried so hard . at least we got a PoC and here is our analysis for this cool bug.</p>
<h1>1) Advisory information</h1>
<p>&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638"><strong>  Title                   :  GDI+ CreateDashedPath Integer overflow in gdiplus.dll  </strong></td>
</tr>
</tbody>
</table>
<p><strong>  Discovery         :  <a href="http://www.vupen.com/">Nicolas july from vupen</a></strong></p>
<p><strong>  Analysis            :  <a href="http://www.abyssssec.com/">Abysssec.com</a></strong></p>
<p><strong>  Vendor             :  <a href="http://www.microsoft.com/">http://www.microsoft.com</a></strong></p>
<p><strong>  Impact              :  High</strong></p>
<p><strong>  Contact            :  info  [at] abysssec.com</strong></p>
<p><strong>  Twitter             : @abysssec</strong></p>
<h2>  CVE                   : CVE-2011-0041</h2>
<h1>2) Vulnerable version</h1>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638"><strong>Gdiplus.dll 5.2.6001.22319</strong></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h1>3) Vulnerability information</h1>
<p>&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638">Class</td>
</tr>
</tbody>
</table>
<p><strong>        1-Integer overflow</strong></p>
<p>Impact<strong></strong></p>
<p><strong>Successfully exploiting this issue allows remote attackers to execute arbitrary code in the context of vulnerable application or cause denial-of-service conditions.</strong></p>
<p>Remotely Exploitable</p>
<p><strong>Yes</strong></p>
<p>Locally Exploitable<strong></strong></p>
<p><strong>Yes</strong></p>
<h1></h1>
<h1>4) Vulnerabilities detail</h1>
<p>&nbsp;</p>
<p>The vulnerability exists in gdiplus!GpPath::CreateDashedPath function of gdiplus.dll that is responsible for bitmap drawing and other 2d graphic rendering. EMF+ file is one of the image file format that is rendered by the library. And the vulnerability is based on some floating point calculation of an EMF+ path object.</p>
<p>We made the following proof of concept to trigger the issues and it will be explained more:</p>
<p style="text-align: center;"><a href="http://www.abysssec.com/blog/wp-content/uploads/2011/07/Hexing.png" target="_blank"><img class="aligncenter size-medium wp-image-1347" title="Hexing" src="http://www.abysssec.com/blog/wp-content/uploads/2011/07/Hexing-300x186.png" alt="" width="300" height="186" /></a></p>
<p>&nbsp;</p>
<p>A little taste of file format we simply put a EMF_COMMENT record (id = 0&#215;00000046) and embed and emf+ geraphic object ( id = 0&#215;00004008 ) . For simplicity we ripped out a valid graphic object from another file and started to play with it. The record have two important area that we highlighted them in the above picture.</p>
<p>&nbsp;</p>
<p>Here is the faulty code:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638"><strong>.text:4ECFCBAD loc_4ECFCBAD:                     </strong></td>
</tr>
</tbody>
</table>
<p><strong>.text:4ECFCBAD                 mov     eax, esi</strong></p>
<p><strong>.text:4ECFCBAF                 shl     eax, 3</strong></p>
<p><strong>.text:4ECFCBB2                 cmp     [ebp+lpMem], 0</strong></p>
<p><strong>.text:4ECFCBB6                 push    eax             ; dwBytes</strong></p>
<p><strong>.text:4ECFCBB7                 jz      short loc_4ECFCBCE</strong></p>
<p><strong>.text:4ECFCBB9                 push    [ebp+lpMem]     ; lpMem</strong></p>
<p><strong>.text:4ECFCBBC                 call    GpRealloc(x,x)</strong></p>
<p><strong>.text:4ECFCBC1                 test    eax, eax</strong></p>
<p><strong>.text:4ECFCBC3                 jz      loc_4ECFCCDB</strong></p>
<p><strong>.text:4ECFCBC9                 mov     [ebp+lpMem], eax</strong></p>
<p><strong>.text:4ECFCBCC                 jmp     short loc_4ECFCBDE</strong></p>
<p><strong>.text:4ECFCBCE ; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</strong></p>
<p><strong>.text:4ECFCBCE</strong></p>
<p><strong>.text:4ECFCBCE loc_4ECFCBCE:                      </strong></p>
<p><strong>.text:4ECFCBCE                 call    GpMalloc(x)</strong></p>
<p><strong>.text:4ECFCBD3                 test    eax, eax</strong></p>
<p><strong>.text:4ECFCBD5                 mov     [ebp+lpMem], eax</strong></p>
<p><strong>.text:4ECFCBD8                 jz      loc_4ECFCCDB</strong></p>
<p>&nbsp;</p>
<p>The above code uses the eax register as arguments to the GpMalloc function. GpMalloc is simply a gdi version of heapAlloc function. The value of eax register is based on various floating point calculation that is not simple to examine at first look.</p>
<p>But I traced the value of eax register and it seems the calculations are based on our values mentioned earlear in the file.  And it doesn’t bound checked well, by changing the path value tricky it is possible when the “shl    eax, 3” instruction multiply the value by 8 we get an integer overflow and in turn a faulty heap allocation.</p>
<p>&nbsp;</p>
<p>I dynamically traced the values with my proof of concept file. Eax register is equall to eax + [ebp-38] * 10 and as there are a lot of values and calculations before that, for better consideration I made the following diagram:</p>
<p>&nbsp;</p>
<p><a href="http://www.abysssec.com/blog/wp-content/uploads/2011/07/diagram.png"><img class="aligncenter size-medium wp-image-1348" title="diagram" src="http://www.abysssec.com/blog/wp-content/uploads/2011/07/diagram-300x290.png" alt="" width="300" height="290" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>It took a lot of time explanation of all of the variables above but, the important one is the GpPath object that is in the code a clone of the object is made to later be manipulated for drawings.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638"><strong>.text:4ECFC9D9 loc_4ECFC9D9:                           ; CODE XREF: GpPath::CreateDashedPath(DpPen const *,GpMatrix const *,float,float,float,int)+1AAj</strong></td>
</tr>
</tbody>
</table>
<p><strong>.text:4ECFC9D9                 fld     dword ptr [esi+eax*4]</strong></p>
<p><strong>.text:4ECFC9DC                 fmul    [ebp+arg_0]</strong></p>
<p><strong>.text:4ECFC9DF                 fstp    dword ptr [esi+eax*4]</strong></p>
<p><strong>.text:4ECFC9E2                 inc     eax</strong></p>
<p><strong>.text:4ECFC9E3                 cmp     eax, [ebp+arg_4]</strong></p>
<p><strong>.text:4ECFC9E6                 jl      short loc_4ECFC9D9</strong></p>
<p><strong>.text:4ECFC9E8</strong></p>
<p><strong>.text:4ECFC9E8 loc_4ECFC9E8:                       </strong></p>
<p><strong>.text:4ECFC9E8                 mov     ecx, [ebp+var_18] ; Src</strong></p>
<p><strong>.text:4ECFC9EB                 call    GpPath::Clone(void)</strong></p>
<p><strong>.text:4ECFC9F0                 mov     edi, eax</strong></p>
<p><strong>.text:4ECFC9F2                 test    edi, edi</strong></p>
<p><strong>.text:4ECFC9F4                 jz      loc_4ECFCDBA</strong></p>
<p><strong>.text:4ECFC9FA                 mov     eax, [edi]</strong></p>
<p><strong>.text:4ECFC9FC                 mov     ecx, edi</strong></p>
<p><strong>.text:4ECFC9FE                 call    dword ptr [eax+4]</strong></p>
<p>&nbsp;</p>
<p>After calling the clone, it checks whether it is a valid clone or not at address 4ECFC9FE.</p>
<p>The offset +34h of the object contains a pointer to our 4byte path object values.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638"><strong>0:000&gt; dd ecx</strong></td>
</tr>
</tbody>
</table>
<p><strong>0e03ca50  4ec67e58 68745031 00000000 00000000</strong></p>
<p><strong>0e03ca60  0e03ca74 0e03ca74 00000010 00000010</strong></p>
<p><strong>0e03ca70  00000002 00000100 00000000 00000000</strong></p>
<p><strong>0e03ca80  00000000 0e03ca98 0e03ca98 00000010</strong></p>
<p><strong>0e03ca90  00000010 00000002 449a8eab 458ac500</strong></p>
<p><strong>0e03caa0  449a8eab 4e0000fe 00000000 00000000</strong></p>
<p><strong>0e03cab0  00000000 00000000 00000000 00000000</strong></p>
<p><strong>0e03cac0  00000000 00000000 00000000 00000000</strong><strong></strong></p>
<p>&nbsp;</p>
<p>Our floating point values in the file format:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638"><strong>0e03ca98  449a8eab 458ac500 449a8eab 4e0000fe</strong></td>
</tr>
</tbody>
</table>
<p><strong>0e03caa8  00000000 00000000 00000000 00000000</strong><strong></strong></p>
<p>&nbsp;</p>
<p>But there are some modifications on our values before we get the faulty code. First after the clone is performed GpPath::Flatten function made some changes to our values based on a transform matrix in the file. So this is cause of the highlighted 6 DWORDs in the file.­­­</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638"><strong>.text:4ECFC9FE                 call    dword ptr [eax+4]</strong></td>
</tr>
</tbody>
</table>
<p><strong>.text:4ECFCA01                 test    eax, eax</strong></p>
<p><strong>.text:4ECFCA03                 jz      loc_4ECFCDBA</strong></p>
<p><strong>.text:4ECFCA09                 fld     ds:flt_4ECB80FC</strong></p>
<p><strong>.text:4ECFCA0F                 push    ecx             ; float</strong></p>
<p><strong>.text:4ECFCA10                 lea     eax, [ebp+var_F8]</strong></p>
<p><strong>.text:4ECFCA16                 fstp    [esp+108h+var_108]</strong></p>
<p><strong>.text:4ECFCA19                 push    eax             ; int</strong></p>
<p><strong>.text:4ECFCA1A                 mov     ecx, edi</strong></p>
<p><strong>.text:4ECFCA1C                 call    GpPath::Flatten(GpMatrix const *,float)</strong></p>
<p><strong>.text:4ECFCA21                 cmp     [ebp+var_2C], 0</strong></p>
<p>&nbsp;</p>
<p>Flattened GpPath object values:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638"><strong>0:000&gt; dd poi(edi+34)</strong></td>
</tr>
</tbody>
</table>
<p><strong>0e03cd18  449a7eab 458ac100 449a7eab 4e0000fd</strong></p>
<p><strong>0e03cd28  00000000 00000000 00000000 00000000</strong><strong></strong></p>
<p>&nbsp;</p>
<p>And after that our changed GpPath object is sent to calculateGradiantArray and some array of floating point values are made based on its calculation.</p>
<p>There are many other default floating point values has effects on the value of the overflowing size for GpMalloc that are not so interesting and I’ve just shown them on the diagram.</p>
<p>After the calculation integer wrapped, the heap allocated by the gpMalloc function is not big enough to hold our data. So in next uses of the wrapped allocated heap the corruption occurs. But it seems there is not a straight way of exploiting such heap corruptions using a standalone file. .</p>
<p style="text-align: left;"><a href="http://www.abysssec.com/blog/wp-content/uploads/2011/07/Crash.png" target="_blank"><img class="aligncenter" title="Crash" src="http://www.abysssec.com/blog/wp-content/uploads/2011/07/Crash-300x142.png" alt="" width="300" height="142" /></a></p>
<pre>PoC link   : <a title="GD+" href="http://abysssec.com/files/GDI_PoC.zip" target="_blank">http://abysssec.com/files/GDI_PoC.zip</a></pre>
<pre></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.abysssec.com/blog/2011/07/18/analysis-of-cve-2011-0041-vulnerability-in-gdi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DEP/ASLR bypass using 3rd party + Clarification</title>
		<link>http://www.abysssec.com/blog/2011/07/03/depaslr-bypass-using-3rd-party-clarification/</link>
		<comments>http://www.abysssec.com/blog/2011/07/03/depaslr-bypass-using-3rd-party-clarification/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 10:04:16 +0000</pubDate>
		<dc:creator>shahin</dc:creator>
				<category><![CDATA[advisory]]></category>
		<category><![CDATA[Exploits / BUG Decryption]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[Arashi]]></category>
		<category><![CDATA[ASLR]]></category>
		<category><![CDATA[Bounty]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[Clarification]]></category>
		<category><![CDATA[DEP]]></category>
		<category><![CDATA[exploiting]]></category>
		<category><![CDATA[Ikazuchi]]></category>
		<category><![CDATA[ROP]]></category>
		<category><![CDATA[Sugokunai]]></category>
		<category><![CDATA[tatsumaki]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://www.abysssec.com/blog/?p=1329</guid>
		<description><![CDATA[hello again to all of our great readers . is this post we are going to do some clarification also share and drop some random 0day DEP/ASLR bypass using 3rd parties . due to there is lots of things to say we wrote all the notes as an article called &#8220;The Arashi&#8221;. &#160; Table of [...]]]></description>
			<content:encoded><![CDATA[<p>hello again to all of our great readers .</p>
<p>is this post we are going to do some clarification also share and drop some random 0day DEP/ASLR bypass using 3rd parties .</p>
<p>due to there is lots of things to say we wrote all the notes as an article called &#8220;The Arashi&#8221;.</p>
<p>&nbsp;</p>
<p><img class="aligncenter" title="Storm" src="http://www.puppetgov.com/wp-content/uploads/2010/01/storm.jpg" alt="" width="350" height="308" /></p>
<p>Table of content :</p>
<p>===============================================================</p>
<p>Introduction and warning</p>
<p style="text-align: left;">The Story of Sayonara</p>
<p style="text-align: left;">First Method: ASLR Bitter</p>
<p style="text-align: left;">Second Method: Process Explorer</p>
<p style="text-align: left;">Narly Windbg Extension</p>
<p style="text-align: left;">Mona / PVEFindAddr</p>
<p style="text-align: left;">Ropping this fun DLL</p>
<p style="text-align: left;">First 0day tatsumaki</p>
<p style="text-align: left;">Second (half) 0day Ikazuchi</p>
<p style="text-align: left;">Third 0day Sugokunai</p>
<p style="text-align: left;">Final Note</p>
<p style="text-align: left;">===============================================================</p>
<p style="text-align: left;">and finally  here you can download it from  : <a title="The Arashi" href="http://abysssec.com/files/The_Arashi.pdf" target="_blank">here</a></p>
<p style="text-align: left;"><span style="text-decoration: underline;">note that the offer in paper will be expire in 10 day so if you are verified and need one of modules let us know . </span></p>
<p style="text-align: left;"><span style="text-decoration: underline;">as always feel free to contact us : info [at] abysssec.com</span></p>
<p style="text-align: left;">and also follow @abysssec in twitter</p>
<p style="text-align: left;">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abysssec.com/blog/2011/07/03/depaslr-bypass-using-3rd-party-clarification/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exploiting Adobe Flash Player on Windows 7</title>
		<link>http://www.abysssec.com/blog/2011/04/18/exploiting-adobe-flash-player-on-windows-7/</link>
		<comments>http://www.abysssec.com/blog/2011/04/18/exploiting-adobe-flash-player-on-windows-7/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 09:18:51 +0000</pubDate>
		<dc:creator>shahin</dc:creator>
				<category><![CDATA[advisory]]></category>
		<category><![CDATA[Exploits / BUG Decryption]]></category>
		<category><![CDATA[Fuzzing / Auditing]]></category>
		<category><![CDATA[reversing]]></category>
		<category><![CDATA[0day]]></category>
		<category><![CDATA[CVE2010-3654]]></category>
		<category><![CDATA[exploit]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[win7]]></category>
		<category><![CDATA[windows7]]></category>

		<guid isPermaLink="false">http://www.abysssec.com/blog/?p=1302</guid>
		<description><![CDATA[Hello again . as a lot of readers like windows 7 exploits here is other one . 1) Advisory information Title                   : Adobe Flash player Action script type confusion &#160; Version             :  flash10h.dll Discovery         :  Malware writers Exploit              :  www.abysssec.com Vendor             :  http://www.adobe.com Impact              :  Critical Contact            :   info  [at] abysssec.com Twitter     [...]]]></description>
			<content:encoded><![CDATA[<p>Hello again . as a lot of readers like windows 7 exploits here is other one .</p>
<p><a href="http://www.abysssec.com/blog/wp-content/uploads/2011/04/FlashPlayerZeroDayVulnerability_thumb.jpg"><img class="aligncenter size-full wp-image-1303" title="FlashPlayerZeroDayVulnerability_thumb" src="http://www.abysssec.com/blog/wp-content/uploads/2011/04/FlashPlayerZeroDayVulnerability_thumb.jpg" alt="" width="293" height="293" /></a></p>
<h2>1) Advisory information</h2>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="638" valign="top"><strong> Title                   : </strong><strong>Adobe   Flash player Action script type confusion</strong><strong> </strong>&nbsp;</p>
<p><strong> Version             :  flash10h.dll</strong></p>
<p><strong> Discovery         :  Malware writers </strong></p>
<p><strong> Exploit              :  www.abysssec.com</strong></p>
<p><strong> Vendor             :  <a href="http://www.adobe.com/">http://www.adobe.com</a></strong></p>
<p><strong> Impact              :  Critical</strong></p>
<p><strong> Contact            :   info  [at] abysssec.com</strong></p>
<p><strong> Twitter            : @abysssec</strong></p>
<p><strong> CVE                    : </strong><strong>CVE-2010-3654</strong><strong> </strong></td>
</tr>
</tbody>
</table>
<h2>2) Vulnerable version</h2>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="638" valign="top"><strong>Adobe   Flash Player 10.1.53 .64</strong><strong> prior versions</strong></td>
</tr>
</tbody>
</table>
<h2>3) Vulnerability information</h2>
<p>&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="638" valign="top">Class&nbsp;</p>
<p><strong> 1- Type Confusion</strong></p>
<p>Impact<strong> </strong></p>
<p><strong>Successfully   exploiting this issue allows remote attackers to execute code under the   context of targeted browser.</strong></p>
<p>Remotely   Exploitable</p>
<p><strong>Yes</strong></p>
<p>Locally   Exploitable<strong> </strong></p>
<p><strong>Yes</strong></td>
</tr>
</tbody>
</table>
<h2>4) Vulnerability detail</h2>
<p>Here we have type confusion vulnerability in ActionScript bytecode language. The cause of these vulnerabilities is because of implementation of verification process in AS3 jit engine that because of some miscalculation in verifying datatype atoms, some data replaces another type of data and the confusion results in faulty machine code.</p>
<p>Action script has the following structure. First our scripts are compiled using an action script compiler like flex to AS3 ByteCodes and embed it to DoABC, DoAction or DoInitAction tags in swf file format. When flash player opens the swf file, bytecodes are compiled to a jitted machine code through verification and generation process. Verification process is responsible for checking bytecodes to be valid instructions and it pass the valid bytecodes to generation process, thus generation process produces the machine code in memory.</p>
<p>According to Dion Blazakis’s JIT Spray paper:</p>
<p style="text-align: center;"><a href="http://www.abysssec.com/blog/wp-content/uploads/2011/04/AS1.png"><img class="aligncenter size-full wp-image-1306" title="AS" src="http://www.abysssec.com/blog/wp-content/uploads/2011/04/AS1.png" alt="" width="499" height="202" /></a></p>
<p>&nbsp;</p>
<p>To handle this runtime typing requirement, the ActionScript interpreter represents internal objects using tagged pointers – internal, this object is called an “atom”. Tagged pointers are a common implementation technique to differentiate between those objects stored by value and those stored by reference using the same word sized memory cell. A tagged pointer stores type information in the least significant bits and stores a type specific values in the most significant bits. As shown in Illustration 1, the ActionScript atom is 32 bits wide; it allocates 3 bits to store the type information and uses 29 bits for the value.</p>
<p>So if it would be possible to confuse verifier too act an atom as another atom by some bytecode changes it would be possible to generate faulty code that most of the times lead to disclosing a vtable pointer call to the attacker.</p>
<p>The bug is perfectly presented in Haifei li recent slides. We have OriginalClass and RefClass with the same functions. Func1 &#8211; OriginalClass return a class objects, but Func1 – RefClass returns another type. By changing a byte in the bytecode we have confused AS3 to execute RefClass functions in the main class. After that verifier confuses the return type of the function with an OriginalClass object and generate faulty code with the vtable under the control of the return value.</p>
<p><a href="http://www.abysssec.com/blog/wp-content/uploads/2011/04/windbg.png"><img class="aligncenter size-full wp-image-1305" title="windbg" src="http://www.abysssec.com/blog/wp-content/uploads/2011/04/windbg.png" alt="" width="592" height="128" /></a></p>
<p>&nbsp;</p>
<p>Exploitation:</p>
<p>For exploitation purpose on recent protections on windows 7 without any 3<sup>rd</sup> party, it is possible to use the same bug many times to leak the imageBase address and payload address. In our exploit we used three confusion to read String Objects address and accordingly imagebase address.</p>
<p><a href="http://www.abysssec.com/blog/wp-content/uploads/2011/04/Chart.png"><img class="aligncenter size-full wp-image-1307" title="Chart" src="http://www.abysssec.com/blog/wp-content/uploads/2011/04/Chart.png" alt="" width="291" height="297" /></a></p>
<p>Step1: read shellcode string object pointer by confusing it with uint and use it to leak ImageBase.</p>
<p>Step2: leak address of the shellcode with the same pointer and NewNumber trick.</p>
<p>Step3: send imageBase &amp; shellcode address as parameters to the RopPayload function, develop Rop payload string and again confuse the return value with uint to read address of RopPayload string.</p>
<p>Step4: send address of the rop payload as parameters to the last confused function that confuses string type with class object. And thus address of our rop payload will be used as vtable in the fake class object.</p>
<p>Note: In using strings as a buffer for shellcode in action script, it is important to use alphanumeric characters because the toString method converts our ascii character set to uincode thus make our shellcode unusable.</p>
<h2>5) Conclusion</h2>
<p>Finally we got the point that memory leakages are extremely useful in modern exploitation to bypass DEP, ASLR protections. It would be possible to find same atom confusion situation and other object leakage in adobe flash player. Kudos to haifei li for his great research, although it was not that simple to implement a reliable exploit with just slides without attending in talk.</p>
<h2>6) Refrences</h2>
<p><a href="http://cansecwest.com/csw11/Flash_ActionScript.ppt" target="_blank">http://www.cansecwest.com/csw11/Flash_ActionScript.ppt</a></p>
<p><a href="http://www.semantiscope.com/research/BHDC2010/BHDC-2010-Paper.pdf" target="_blank">http://www.semantiscope.com/research/BHDC2010/BHDC-2010-Paper.pdf</a></p>
<h2>7) Exploit-Code</h2>
<p>Here you can get our reliable exploit against windows 7 :</p>
<p>calc.exe payload</p>
<p>Download : <a href="http://www.abysssec.com/blog/wp-content/uploads/2011/04/CVE-2010-3654_Win7.zip">CVE-2010-3654_Win7</a></p>
<p style="text-align: center;"><a href="http://www.abysssec.com/blog/wp-content/uploads/2011/04/Exploited.png" target="_blank"><img class="aligncenter size-medium wp-image-1317" title="Exploited" src="http://www.abysssec.com/blog/wp-content/uploads/2011/04/Exploited-300x151.png" alt="" width="300" height="300" /></a></p>
<p>if you need other payloads for sure you know how to change it ;)</p>
<p>as always feedbacks are welcomed and you can follow @abysssec in twitter to getting updates .</p>
<p>Happy Hunting !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abysssec.com/blog/2011/04/18/exploiting-adobe-flash-player-on-windows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacking / Exploiting / Cheating in Online Games</title>
		<link>http://www.abysssec.com/blog/2011/03/21/hacking-exploiting-cheating-in-online-games/</link>
		<comments>http://www.abysssec.com/blog/2011/03/21/hacking-exploiting-cheating-in-online-games/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 15:00:39 +0000</pubDate>
		<dc:creator>shahin</dc:creator>
				<category><![CDATA[advisory]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[reversing]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aimbot]]></category>
		<category><![CDATA[Aimbot.dll]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[cheat]]></category>
		<category><![CDATA[counter strike]]></category>
		<category><![CDATA[cs 1.6]]></category>
		<category><![CDATA[flashhack]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[half-life]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[noflash]]></category>
		<category><![CDATA[nosmoke]]></category>
		<category><![CDATA[ring0]]></category>
		<category><![CDATA[shahin]]></category>
		<category><![CDATA[smokehack]]></category>
		<category><![CDATA[speedhack]]></category>
		<category><![CDATA[SXE 11.6]]></category>
		<category><![CDATA[SXE 11.6 Fix 2]]></category>
		<category><![CDATA[SXE-Injected]]></category>
		<category><![CDATA[unhook]]></category>
		<category><![CDATA[VAC]]></category>
		<category><![CDATA[VAC 2]]></category>
		<category><![CDATA[Valve Anti Cheat]]></category>
		<category><![CDATA[wallhack]]></category>
		<category><![CDATA[world of warcraft]]></category>
		<category><![CDATA[wow]]></category>
		<category><![CDATA[WPE]]></category>

		<guid isPermaLink="false">http://www.abysssec.com/blog/?p=1263</guid>
		<description><![CDATA[Hello to all readers. we know that there are thousands and millions of online game players around and we guess lots of them may like to cheat this is our totally offensive research that we did to present in immunity infiltrate and as we missed that so here we go . &#160; This research is about hacking [...]]]></description>
			<content:encoded><![CDATA[<p>Hello to all readers.</p>
<p>we know that there are thousands and millions of online game players around and we guess lots of them may like to cheat this is our totally offensive research that we did to present in <a href="https://www.immunityinc.com/infiltrate/" target="_blank"> <span style="color: #ff0000;"><strong>immunity infiltrate</strong></span></a> and as we missed that so here we go .</p>
<p>&nbsp;</p>
<p><a href="http://www.abysssec.com/blog/wp-content/uploads/2011/03/3-21-2011-6-01-12-PM1.png"><img class="aligncenter" title="3-21-2011 6-01-12 PM" src="http://www.abysssec.com/blog/wp-content/uploads/2011/03/3-21-2011-6-01-12-PM1-300x148.png" alt="" width="300" height="148" /></a></p>
<p>This research is about hacking /exploiting / cheating in online games and is sponsored by <span style="color: #ff0000;"><strong><a href="https://www.immunityinc.com/" target="_blank">immunity</a></strong></span>.</p>
<p>&nbsp;</p>
<p>This is a six part talk and contains:</p>
<p>&nbsp;</p>
<p>Part I   : introduction</p>
<p>Part II: Hacking Online Game Servers</p>
<p>Part III: Exploiting Online Games</p>
<p>Part IV: Cheating in Online games</p>
<p>Part V   : Creating your own cheats</p>
<p>Part VI: Bypassing anti-cheat engines</p>
<p>&nbsp;</p>
<p>Real world cheating is mainly focused on in this talk as it&#8217;s fun and legal.<br />
During this talk we will have a tour into all the ways to manipulate an online game<br />
and we will end up with bypassing the latest anti-cheating technologies and<br />
manipulating the game to our heart&#8217;s desire.</p>
<p>&nbsp;</p>
<p>Our case studies are:</p>
<p>&nbsp;</p>
<p>1 -counter strike (half-life) as game:</p>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="aligncenter" title="Cstrike" src="http://www.straferight.com/photopost/data/500/counter-strike-logo.jpg" alt="" width="240" height="241" /></p>
<p>2- SXE-Injected and Valve-anti cheat (VAC) as anti-cheat engines</p>
<p style="text-align: center;"><img class="aligncenter" title="SXE-Injected" src="http://www.asosyalgenclik.net/sxe.png" alt="" width="240" height="240" /></p>
<p>Our codes will be release soon as soon we can but if you are hurry to use some cheats you can find almost all necessary codes in slides also there is two demos for proofing our research. We really enjoyed this research and it’s done from our side hope you enjoy too.</p>
<p>&nbsp;</p>
<p>You can download slides here:</p>
<p>ppt : <a href="http://www.abysssec.com/blog/wp-content/uploads/2011/03/Exploiting-Online-Games.pptx" target="_blank">Exploiting-Online-Games</a></p>
<p>Font : <a href="http://www.abysssec.com/blog/wp-content/uploads/2011/03/Purisa.zip" target="_blank">in case if you have problem with embedded one </a></p>
<p>PDF : <a href="http://www.abysssec.com/blog/wp-content/uploads/2011/03/Exploiting-Online-Games.pdf" target="_blank">Exploiting-Online-Games</a></p>
<p>PS 1 : video demos are ready but due to those are huge we need to find a better way to compress them after that we will post them here.</p>
<p>PS 2 : Tools will be release after a while .</p>
<p>For getting updates about tools / videos please follow @abysssec in twitter.</p>
<p>&nbsp;</p>
<p>For any question please contact:</p>
<p>&nbsp;</p>
<p>Shahin [at] abysssec.com</p>
<p>&nbsp;</p>
<p>For any other requirement please contact:</p>
<p>&nbsp;</p>
<p>Info [at] abysssec.com</p>
<p>&nbsp;</p>
<p>Kind Regards</p>
<p style="text-align: left;">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abysssec.com/blog/2011/03/21/hacking-exploiting-cheating-in-online-games/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exploiting Internet Explorer 8 on Windows 7</title>
		<link>http://www.abysssec.com/blog/2010/12/21/exploiting-internet-explorer-8-on-windows-7/</link>
		<comments>http://www.abysssec.com/blog/2010/12/21/exploiting-internet-explorer-8-on-windows-7/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 23:03:40 +0000</pubDate>
		<dc:creator>shahin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.abysssec.com/blog/?p=1257</guid>
		<description><![CDATA[hello all. Our Demo is clear enough. maybe we release some more detail&#8217;s later. [There is a video that cannot be displayed in this feed. Visit the blog entry to see the video.] good luck]]></description>
			<content:encoded><![CDATA[<p>hello all.</p>
<div id="_mcePaste">Our Demo is clear enough. maybe we release some more detail&#8217;s later.</div>
<p>[There is a video that cannot be displayed in this feed. <a href="http://www.abysssec.com/blog/2010/12/21/exploiting-internet-explorer-8-on-windows-7/">Visit the blog entry to see the video.]</a></p>
<p>good luck</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abysssec.com/blog/2010/12/21/exploiting-internet-explorer-8-on-windows-7/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Adobe Shockwave player rcsL chunk memory corruption 0day</title>
		<link>http://www.abysssec.com/blog/2010/10/22/adobe-shockwave-player-rcsl-chunk-memory-corruption-0day/</link>
		<comments>http://www.abysssec.com/blog/2010/10/22/adobe-shockwave-player-rcsl-chunk-memory-corruption-0day/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 14:40:16 +0000</pubDate>
		<dc:creator>shahin</dc:creator>
				<category><![CDATA[advisory]]></category>
		<category><![CDATA[Exploits / BUG Decryption]]></category>

		<guid isPermaLink="false">http://www.abysssec.com/blog/?p=1242</guid>
		<description><![CDATA[1) Advisory information Title                   :  Adobe Shockwave player rcsL chunk memory corruption Version             : Shockwave player 11.5.8.612 Discovery         :  http://www.abysssec.com Vendor             :  http://www.adobe.com Impact              :  Critical Contact            :  shahin [at] abysssec.com , info  [at] abysssec.com Twitter             : @abysssec CVE                   :  ZeroDay Not Patched 2) Vulnerable version Shockwave Player 11.5.8.612 last version 3) Vulnerability information Class [...]]]></description>
			<content:encoded><![CDATA[<h2>1) Advisory information</h2>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="638" valign="top"><strong> Title                   :    Adobe </strong><strong>Shockwave player rcsL chunk memory   corruption</strong></p>
<p><strong> Version             : </strong><strong>Shockwave player</strong><strong> 11.5.8.612</strong></p>
<p><strong> Discovery         :  <a href="http://www.abysssec.com/">http://www.abysssec.com</a></strong></p>
<p><strong> Vendor             :  <a href="http://www.adobe.com/">http://www.adobe.com</a></strong></p>
<p><strong> Impact              :  Critical</strong></p>
<p><strong> Contact              :  shahin [at] abysssec.com , info  [at] abysssec.com</strong></p>
<p><strong> Twitter             : @abysssec</strong></p>
<p><strong> CVE                   :  ZeroDay Not Patched</strong></td>
</tr>
</tbody>
</table>
<h2>2) Vulnerable version</h2>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="638" valign="top"><strong><a href="http://www.filehippo.com/download_shockwave/">Shockwave Player 11.5.8.612</a> last version</strong></td>
</tr>
</tbody>
</table>
<h2>3) Vulnerability information</h2>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="638" valign="top">Class</p>
<p><strong> 1- </strong><strong>Memory corruption allow command execute</strong><strong> </strong></p>
<p>Impact<strong> </strong></p>
<p><strong>Successfully   exploiting this issue allows remote attackers to execute arbitrary code or   cause denial-of-service conditions.</strong></p>
<p>Remotely   Exploitable</p>
<p><strong>Yes</strong></p>
<p>Locally   Exploitable<strong> </strong></p>
<p><strong>Yes</strong></td>
</tr>
</tbody>
</table>
<h2>4) Vulnerabilities detail</h2>
<p><strong>Introduction </strong></p>
<p>Shockwave player is a plug in for loading Adobe Director video files in to the browser. Director movies have DIR or compressed format of DCR.  DIR file format is based on RIFF based formats. RIFF formats start with a 4byte RIFX identifier and length of the file. And subsequently chunks come together with format of 4byte chunk identifier + size of chunk + data. Some of the chunk identifiers are tSAC, pami, rcsL.</p>
<p>By help of our simple fuzzer we have manipulated a director movie file and found a vulnerability in part of an existing rcsL chunk.</p>
<p><strong>Vulnerability explanation </strong></p>
<p>There is a 4bytes value in the undocumented rcsL chunk in our sample director movie and it may be possible to find similar rcsL chunks in other director samples. The 4bytes so called value can be manipulated to reach the vulnerable part of function 68122990. Here is the function:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="616" valign="top"><strong>.</strong><strong>text:68122990 sub_68122990    proc near               ; CODE XREF:   sub_68112120+1A57p</strong></p>
<p><strong>.text:68122990                                         ;   DATA XREF: sub_68122F30+4AAo</strong></p>
<p><strong>.text:68122990</strong></p>
<p><strong>.text:68122990 var_8           = dword ptr -8</strong></p>
<p><strong>.text:68122990 var_4           = dword ptr -4</strong></p>
<p><strong>.text:68122990 arg_0           = dword ptr  4</strong></p>
<p><strong>.text:68122990 arg_4           = dword ptr  8</strong></p>
<p><strong>.text:68122990</strong></p>
<p><strong>.text:68122990                 sub     esp, 8</strong></p>
<p><strong>.text:68122993                 mov     eax, [esp+8+arg_4]</strong></p>
<p><strong>.text:68122997                 push    ebx</strong></p>
<p><strong>.text:68122998                 push    ebp</strong></p>
<p><strong>.text:68122999                 push    esi</strong></p>
<p><strong>.text:6812299A                 mov     esi, [esp+14h+arg_0]</strong></p>
<p><strong>.text:6812299E                 push    edi</strong></p>
<p><strong>.text:6812299F                 push    eax</strong></p>
<p><strong>.text:681229A0                 push    esi</strong></p>
<p><strong>.text:681229A1                 call    sub_680FC6D0</strong></p>
<p><strong>.text:681229A6                 mov     ecx, [esi+18h]</strong></p>
<p><strong>.text:681229A9                 mov     edx, [esi+10h]</strong></p>
<p><strong>.text:681229AC                 mov     ebp, [esi+1Ch]</strong></p>
<p><strong>.text:681229AF                 mov     ebx, [esi+20h]</strong></p>
<p><strong>.text:681229B2                 add     ecx, 0FFFFFFF8h</strong></p>
<p><strong>.text:681229B5                 cmp     ebp, 3</strong></p>
<p><strong>.text:681229B8                 mov     [esp+18h+arg_0], eax</strong></p>
<p><strong>.text:681229BC                   mov     [esi+18h], ecx</strong></p>
<p><strong>.text:681229BF                 mov     eax, [edx]</strong></p>
<p><strong>.text:681229C1                 mov     edx, [eax+ecx]</strong></p>
<p><strong>.text:681229C4                 lea     edi, [esi+1Ch]</strong></p>
<p><strong>.text:681229C7                 mov     [edi], edx</strong></p>
<p><strong>.text:681229C9                 mov     eax, [eax+ecx+4]</strong></p>
<p><strong>.text:681229CD                 mov     [edi+4], eax</strong></p>
<p><strong>.text:681229D0                 mov     [esp+18h+var_8], 4</strong></p>
<p><strong>.text:681229D8                 mov     [esp+18h+var_4], 0</strong></p>
<p><strong>.text:681229E0                 jz      short loc_681229F6</strong></p>
<p><strong>.text:681229E2                 push    ebx</strong></p>
<p><strong>.text:681229E3                 push    ebp</strong></p>
<p><strong>.text:681229E4                 push    0Ch</strong></p>
<p><strong>.text:681229E6                 push    esi</strong></p>
<p><strong>.text:681229E7                 call    sub_680FCFB0</strong></p>
<p><strong>.text:681229EC                   pop     edi</strong></p>
<p><strong>.text:681229ED                 pop     esi</strong></p>
<p><strong>.text:681229EE                 pop     ebp</strong></p>
<p><strong>.text:681229EF                 pop     ebx</strong></p>
<p><strong>.text:681229F0                 add     esp, 8</strong></p>
<p><strong>.text:681229F3                 retn    8</strong></p>
<p><strong>.text:681229F6 ;   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</strong></p>
<p><strong>.text:681229F6</strong></p>
<p><strong>.text:681229F6 loc_681229F6:                           ; CODE XREF:   sub_68122990+50j</strong></p>
<p><strong>.text:681229F6                 mov     ecx, [ebx]</strong></p>
<p><strong>.text:681229F8                 mov       edx, [ecx]</strong></p>
<p><strong>.text:681229FA                 mov     ecx, [esp+18h+arg_0]</strong></p>
<p><strong>.text:681229FE                 lea     eax, [esp+18h+var_8]</strong></p>
<p><strong>.text:68122A02                 push    eax</strong></p>
<p><strong>.text:68122A03                 push    ecx</strong></p>
<p><strong>.text:68122A04                 push      ebx</strong></p>
<p><strong>.text:68122A05                 push    esi</strong></p>
<p><strong>.text:68122A06                 call    dword ptr [edx+2Ch]</strong></p>
<p><strong>.text:68122A09                 mov     ecx, [esi+7Ch]</strong></p>
<p><strong>.text:68122A0C                 test    ecx, ecx</strong></p>
<p><strong>.text:68122A0E                 jz      short loc_68122A22</strong></p>
<p><strong>.text:68122A10                 push    ebx</strong></p>
<p><strong>.text:68122A11                 push    ebp</strong></p>
<p><strong>.text:68122A12                 push    esi</strong></p>
<p><strong>.text:68122A13                 call    sub_680FC730</strong></p>
<p><strong>.text:68122A18                 pop     edi</strong></p>
<p><strong>.text:68122A19                 pop     esi</strong></p>
<p><strong>.text:68122A1A                 pop     ebp</strong></p>
<p><strong>.text:68122A1B                 pop     ebx</strong></p>
<p><strong>.text:68122A1C                 add     esp, 8</strong></p>
<p><strong>.text:68122A1F                 retn    8</strong></p>
<p><strong>.text:68122A22 ;   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</strong></p>
<p><strong>.text:68122A22</strong></p>
<p><strong>.text:68122A22 loc_68122A22:                           ; CODE XREF:   sub_68122990+7Ej</strong></p>
<p><strong>.text:68122A22                 test    eax, eax</strong></p>
<p><strong>.text:68122A24                 jnz     loc_68122AAC</strong></p>
<p><strong>.text:68122A2A                 push    esi</strong></p>
<p><strong>.text:68122A2B                 call    sub_680FD9D0</strong></p>
<p><strong>.text:68122A30                 push    edi</strong></p>
<p><strong>.text:68122A31                 push    esi</strong></p>
<p><strong>.text:68122A32                 mov     [edi], ebp</strong></p>
<p><strong>.text:68122A34                 mov     [edi+4], ebx</strong></p>
<p><strong>.text:68122A37                 call    sub_680FC7C0</strong></p>
<p><strong>.text:68122A3C                 push    esi</strong></p>
<p><strong>.text:68122A3D                 call    sub_680FD9D0</strong></p>
<p><strong>.text:68122A42                 mov     eax, [esp+18h+arg_4]</strong></p>
<p><strong>.text:68122A46                 mov     edx, [esi+28h]</strong></p>
<p><strong>.text:68122A49                 mov     [esi+0A4h], eax</strong></p>
<p><strong>.text:68122A4F                 mov     dword ptr [esi+20h], 80000001h</strong></p>
<p><strong>.text:68122A56                 mov     ecx, [edx]</strong></p>
<p><strong>.text:68122A58                 lea     eax, [eax+eax*2]</strong></p>
<p><strong>.text:68122A5B                 push    esi</strong></p>
<p><strong>.text:68122A5C                 call    dword ptr [ecx+eax*8+20h]</strong></p>
<p><strong>.text:68122A60                 mov     eax, [esi+7Ch]</strong></p>
<p><strong>.text:68122A63                 test    eax, eax</strong></p>
<p><strong>.text:68122A65                 jz      short loc_68122A85</strong></p>
<p><strong>.text:68122A67                 cmp     eax, 4</strong></p>
<p><strong>.text:68122A6A                 jnz     short loc_68122ACE</strong></p>
<p><strong>.text:68122A6C                 mov     edx, [esp+18h+arg_0]</strong></p>
<p><strong>.text:68122A70                 push    edx</strong></p>
<p><strong>.text:68122A71                 push    8</strong></p>
<p><strong>.text:68122A73                 push    37h</strong></p>
<p><strong>.text:68122A75                 push    esi</strong></p>
<p><strong>.text:68122A76                 call    sub_680FD040</strong></p>
<p><strong>.text:68122A7B                 pop     edi</strong></p>
<p><strong>.text:68122A7C                 pop     esi</strong></p>
<p><strong>.text:68122A7D                 pop       ebp</strong></p>
<p><strong>.text:68122A7E                 pop     ebx</strong></p>
<p><strong>.text:68122A7F                 add     esp, 8</strong></p>
<p><strong>.text:68122A82                 retn    8</strong></p>
<p><strong>.text:68122A85 ;   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</strong></p>
<p><strong>.text:68122A85</strong></p>
<p><strong>.text:68122A85 loc_68122A85:                           ; CODE XREF:   sub_68122990+D5j</strong></p>
<p><strong>.text:68122A85                 mov     eax, [edi]</strong></p>
<p><strong>.text:68122A87                 mov     ecx, [edi+4]</strong></p>
<p><strong>.text:68122A8A                 mov     edx, [esi+10h]</strong></p>
<p><strong>.text:68122A8D                   mov     [esp+18h+var_8], eax</strong></p>
<p><strong>.text:68122A91                 mov     eax, [esi+18h]</strong></p>
<p><strong>.text:68122A94                 add     eax, 0FFFFFFF8h</strong></p>
<p><strong>.text:68122A97                 mov     [esp+18h+var_4], ecx</strong></p>
<p><strong>.text:68122A9B                 mov     [esi+18h], eax</strong></p>
<p><strong>.text:68122A9E                 mov     ecx, [edx]</strong></p>
<p><strong>.text:68122AA0                 mov     edx, [ecx+eax]</strong></p>
<p><strong>.text:68122AA3                 mov     [edi], edx</strong></p>
<p><strong>.text:68122AA5                 mov     eax, [ecx+eax+4]</strong></p>
<p><strong>.text:68122AA9                 mov     [edi+4], eax</strong></p>
<p><strong>.text:68122AAC</strong></p>
<p><strong>.text:68122AAC loc_68122AAC:                           ; CODE XREF:   sub_68122990+94j</strong></p>
<p><strong>.text:68122AAC                 push    ebx</strong></p>
<p><strong>.text:68122AAD                 push    ebp</strong></p>
<p><strong>.text:68122AAE                 push    esi</strong></p>
<p><strong>.text:68122AAF                 call    sub_680FC730</strong></p>
<p><strong>.text:68122AB4                 mov     eax, [esi+7Ch]</strong></p>
<p><strong>.text:68122AB7                 test    eax, eax</strong></p>
<p><strong>.text:68122AB9                 jnz     short loc_68122ACE</strong></p>
<p><strong>.text:68122ABB                 push    esi</strong></p>
<p><strong>.text:68122ABC                 call    sub_680FD9D0</strong></p>
<p><strong>.text:68122AC1                 mov     ecx, [esp+18h+var_8]</strong></p>
<p><strong>.text:68122AC5                 mov     edx, [esp+18h+var_4]</strong></p>
<p><strong>.text:68122AC9                 mov     [edi], ecx</strong></p>
<p><strong>.text:68122ACB                 mov     [edi+4], edx</strong></p>
<p><strong>.text:68122ACE</strong></p>
<p><strong>.text:68122ACE loc_68122ACE:                           ; CODE XREF:   sub_68122990+DAj</strong></p>
<p><strong>.text:68122ACE                                         ;   sub_68122990+129j</strong></p>
<p><strong>.text:68122ACE                 pop     edi</strong></p>
<p><strong>.text:68122ACF                 pop     esi</strong></p>
<p><strong>.text:68122AD0                 pop     ebp</strong></p>
<p><strong>.text:68122AD1                 pop     ebx</strong></p>
<p><strong>.text:68122AD2                 add     esp, 8</strong></p>
<p><strong>.text:68122AD5                 retn    8</strong></p>
<p><strong>.text:68122AD5 sub_68122990    endp</strong></td>
</tr>
</tbody>
</table>
<p>In the above function we have direct control on the second argument of the function. By manipulating the argument in rcsL chunk we reach to an indirect call that is based on our arguments:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="616" valign="top"><strong>.text:68122A42                 mov     eax, [esp+18h+arg_4]</strong></p>
<p><strong>.text:68122A46                 mov     edx, [esi+28h]</strong></p>
<p><strong>.text:68122A49                 mov     [esi+0A4h], eax</strong></p>
<p><strong>.text:68122A4F                 mov     dword ptr [esi+20h], 80000001h</strong></p>
<p><strong>.text:68122A56                 mov     ecx, [edx]</strong></p>
<p><strong>.text:68122A58                 lea     eax, [eax+eax*2]</strong></p>
<p><strong>.text:68122A5B                 push    esi</strong></p>
<p><strong>.text:68122A5C                 call    dword ptr [ecx+eax*8+20h]</strong></td>
</tr>
</tbody>
</table>
<p><strong> </strong></p>
<p>The above code is our vulnerable part. EAX register is set with second argument that we have control on it and ESI is first argument of the function and is a pointer to a dynamic allocated structure in heap. Value of offset 28h of the structure that is unknown is set in ECX register and finally an indirect call to the &#8216;ECX+EAX*24+20h&#8217; is done. Because result of EAX*24 is a large value and we have complete control on EAX register we can almost control first byte of our indirect call pointer without the need of ECX register.</p>
<h2><strong>Exploitation :</strong></h2>
<p>For exploitation purpose because we don&#8217;t have a fixed address in our call we cannot control the execution flow to an exact value but we can jump to a specific range because we have control on first bytes of the pointer of indirect call. So here by abusing javascript we can use old-school heap spray technic to fill memory with nops+shellcode and call to this range.</p>
<p>To control the 4 bytes EAX register in our exploit we manipulated 4bytes at offset 4C4B of the file to value FFF00267.</p>
<p>An important hint here is that because we call the indirect pointer the EIP is set to nops itself. As you know an EIP of 90909090 is invalid. But we can use other opcodes as nopslides that doesn’t have any effect. In our test sample we used 0a0a0a0a as both base range of heap spray and nopslides because 0a0a opcode is an OR instruction on some unimportant registers.</p>
<p>The sample + exploit are tested on patched windows XP service pack 3.</p>
<p>here is exploit + binary analysis link:</p>
<p><a title="Exploit Link" href="http://abysssec.com/files/Adobe_Shockwave_Director_rcsL_Chunk_Memory_Corruption.zip " target="_blank">http://abysssec.com/files/Adobe_Shockwave_Director_rcsL_Chunk_Memory_Corruption.zip</a></p>
<p>Proof Video : <a href="http://www.offensive-security.com/adobe-shockwave-player-rcsL-exploit-0day.mp4" target="_blank">Here</a></p>
<p>PS 1 : this vulnerability is not patched bug released by ZDI <a href="http://www.zerodayinitiative.com/advisories/ZDI-10-162/">http://www.zerodayinitiative.com/advisories/ZDI-10-162/</a></p>
<p>PS 2 : it&#8217;s possible to exploit this vulnerability on modern windows like Vista/7 too and it&#8217;s up to readers &#8230;</p>
<p>related links:</p>
<p><a href="http://www.vupen.com/english/advisories/2010/2752">http://www.vupen.com/english/advisories/2010/2752</a></p>
<p><a href="http://secunia.com/advisories/41932">http://secunia.com/advisories/41932</a></p>
<p><a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-3653" target="_blank">CVE-2010-3653</a></p>
<p><a href="http://www.adobe.com/products/player_census/shockwaveplayer/">http://www.adobe.com/products/player_census/shockwaveplayer/</a></p>
<p><a href="http://www.adobe.com/support/security/advisories/apsa10-04.html">http://www.adobe.com/support/security/advisories/apsa10-04.html</a></p>
<p>Happy Hacking !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abysssec.com/blog/2010/10/22/adobe-shockwave-player-rcsl-chunk-memory-corruption-0day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.offensive-security.com/adobe-shockwave-player-rcsL-exploit-0day.mp4" length="5516874" type="video/mp4" />
		</item>
	</channel>
</rss>

