<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Didier Stevens</title>
	<atom:link href="http://blog.didierstevens.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.didierstevens.com</link>
	<description>(blog 'DidierStevens)</description>
	<pubDate>Tue, 18 Nov 2008 21:08:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>My ISSA / OWASP Talk &#8220;Risky PDF&#8221;</title>
		<link>http://blog.didierstevens.com/2008/11/18/my-issa-owasp-talk-risky-pdf/</link>
		<comments>http://blog.didierstevens.com/2008/11/18/my-issa-owasp-talk-risky-pdf/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 18:34:06 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
		
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://didierstevens.wordpress.com/?p=925</guid>
		<description><![CDATA[For those of you who attended my ISSA / OWASP talk Risky PDF, thanks for your interesting and challenging questions! I’m very pleased with the feedback I got.
You can download the presentation and demo files here. All my PDF blogpost can be found using  category PDF.
A recurring remark I received afterward is about claiming not [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>For those of you who attended my ISSA / OWASP talk Risky PDF, thanks for your interesting and challenging questions! I’m very pleased with the feedback I got.</p>
<p>You can download the <a href="http://www.didierstevens.com/files/documents/risky-pdf-20081117.zip" target="_self">presentation and demo files here</a>. All my PDF blogpost can be found using  <a href="http://blog.didierstevens.com/category/pdf/" target="_self">category PDF</a>.</p>
<p>A recurring remark I received afterward is about claiming not to be a PDF expert, while my presentation (and research) clearly shows otherwise.</p>
<p>I didn’t express myself clearly. When I started my presentation by stating that I’m not a PDF expert, I meant that I don’t know how to produce a PDF document with a nice layout, a content table, an index, captivating graphics, … I don’t even know how to use Adobe Professional to create a PDF document with embedded JavaScript. So don’t ask me questions about producing “benign” PDF documents, because I don’t have a clue.</p>
<p>But I do have build-up expertise in malicious PDF documents. I’ve become an expert in analyzing PDF malware. I know how to create a PDF document with embedded JavaScript from scratch, just using a text editor (and I’ve build tools to automate this). And I can perform a forensic analysis of PDF documents.</p>
<p>My PDF expertise is limited to malicious usage and forensics. Outside of the IT security field, people with my expertise are not considered PDF experts. It wasn’t intended as false modesty, I just can’t help you troubleshoot “benign” PDFs <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/925/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/925/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/925/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/925/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/925/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/925/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/925/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/925/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/925/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/925/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&blog=264765&post=925&subd=didierstevens&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2008/11/18/my-issa-owasp-talk-risky-pdf/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/didierstevens-128.jpg" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>
	</item>
		<item>
		<title>Shoulder Surfing a Malicious PDF Author</title>
		<link>http://blog.didierstevens.com/2008/11/10/shoulder-surfing-a-malicious-pdf-author/</link>
		<comments>http://blog.didierstevens.com/2008/11/10/shoulder-surfing-a-malicious-pdf-author/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 21:32:55 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
		
		<category><![CDATA[Forensics]]></category>

		<category><![CDATA[Malware]]></category>

		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://didierstevens.wordpress.com/?p=893</guid>
		<description><![CDATA[Ever since I read about the incremental updates feature of the PDF file format, I&#8217;ve been patiently waiting for a malicious PDF document with incremental updates to come my way. Thanks to Bojan, that day has finally arrived.
The 2 malicious PDF documents I received (data.pdf and info.pdf) both exploit the same Acrobat JavaScript util.printf vulnerability.
data.pdf [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ever since I read about the <a href="http://blog.didierstevens.com/2008/05/07/solving-a-little-pdf-puzzle/" target="_self">incremental updates</a> feature of the PDF file format, I&#8217;ve been patiently waiting for a malicious PDF document with incremental updates to come my way. Thanks to <a href="http://isc.sans.org/diary.html?storyid=5312" target="_blank">Bojan</a>, that day has finally arrived.</p>
<p>The 2 malicious PDF documents I received (data.pdf and info.pdf) both exploit the same Acrobat JavaScript <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=2008-2992" target="_blank">util.printf vulnerability</a>.</p>
<p>data.pdf is very interesting to me: it&#8217;s one PDF file containing 5 incremental updates, essentially bringing us an archeological record of the malware author&#8217;s trial-and-error session. So let&#8217;s start uncovering what the malware writer has been up to.</p>
<p>Looking at the type of objects inside data.pdf (with my <a href="http://blog.didierstevens.com/programs/pdf-tools#pdf-parser" target="_self">PDF parser</a>), we can see many startxref and xref objects:</p>
<p><img class="alignnone size-full wp-image-907" title="20081110-202238" src="http://didierstevens.files.wordpress.com/2008/11/20081110-202238.png?w=660&#038;h=240" alt="20081110-202238" width="660" height="240" /></p>
<p>The metadata of data.pdf reveals that the guy (from personal experience, I know that most bad programmers are males <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) used Adobe Acrobat 8.1.0 to create this document in the early hours of Thursday November 6th 2008, and that his machine has timezone setting +01:00.</p>
<p>It took 52 minutes 32 seconds to create the first version of data.pdf. This version contains everything to execute a JavaScript script upon opening of the document, but the script to be executed is empty.</p>
<p>44 seconds later, a second version is created, containing this script:</p>
<p><img class="alignnone size-full wp-image-902" title="20081110-185852" src="http://didierstevens.files.wordpress.com/2008/11/20081110-185852.png?w=613&#038;h=367" alt="20081110-185852" width="613" height="367" /></p>
<p>This script performs a heap spray (the most indented section of function main) of shellcode (contained in variable sccs) and then exploits the util.printf format string bug. This exploit is contained in function main, which should be triggered by app.setTimeOut after 3 seconds. However, the use of setTimeOut in this script is buggy (details can be found in Adobe&#8217;s JS API Reference), and main() will never execute.</p>
<p>After 44 seconds, another version is created to try to get this exploit to work. He modified the call to setTimeOut like this:</p>
<p><img class="alignnone size-full wp-image-903" title="20081110-185933" src="http://didierstevens.files.wordpress.com/2008/11/20081110-185933.png?w=241&#038;h=31" alt="20081110-185933" width="241" height="31" /></p>
<p>This is completely wrong, so after 4 minutes and 12 seconds (probably spend Googling for an answer as to why this doesn&#8217;t work), he returns to the previous call, but now hopes that 5 seconds will do better than 3 seconds.</p>
<p><img class="alignnone size-full wp-image-904" title="20081110-190004" src="http://didierstevens.files.wordpress.com/2008/11/20081110-190004.png?w=270&#038;h=33" alt="20081110-190004" width="270" height="33" /></p>
<p>Of course, it doesn&#8217;t. After one minute and a half, he gives up, and modifies the script to execute his exploit without delay:</p>
<p><img class="alignnone size-full wp-image-905" title="20081110-190045" src="http://didierstevens.files.wordpress.com/2008/11/20081110-190045.png?w=619&#038;h=302" alt="20081110-190045" width="619" height="302" /></p>
<p>I can&#8217;t say he&#8217;s a sharp programmer or tenacious, but at least, he&#8217;s result-driven&#8230;</p>
<p>Let&#8217;s turn our attention to the second malicious PDF (info.pdf) I received. This file contains no incremental updates, but it&#8217;s still interesting because it has the same origin as data.pdf. This file was created at exactly the same time, and contains the same identification (/ID[&lt;DD95D438BE408D4FB12AC2FE7ED5E6C6&gt;&lt;14FA8F4917ED8449B59BF6CFA41C39BD&gt;]) as data.pdf. Most PDF applications add a unique ID to the trailer of every PDF document they create. info.pdf was saved a day later (about 37 hours later), and contains the same exploit script as data.pdf, but with an extra layer of JavaScript obfuscation.</p>
<p>Bojan confirmed he was the first to submit these files to Virustotal. I calculated the MD5 hashes for the different versions of data.pdf, but none were submitted to VT, so our guy didn&#8217;t use VT for QA.</p>
<p>It was an interesting experience, &#8220;spying&#8221; on this malware author. Let&#8217;s hope they don&#8217;t stop using incremental updates, and that some of them will be careless enough to leave personal data hidden in their malicious PDF documents.</p>
<p>data.pdf MD5 1A8E5242F21727959683FA8CC7AA94AD</p>
<p>info.pdf MD5 23F31C83EE658BB5C2635BEFDE56199A</p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/893/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&blog=264765&post=893&subd=didierstevens&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2008/11/10/shoulder-surfing-a-malicious-pdf-author/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/didierstevens-128.jpg" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/11/20081110-202238.png" medium="image">
			<media:title type="html">20081110-202238</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/11/20081110-185852.png" medium="image">
			<media:title type="html">20081110-185852</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/11/20081110-185933.png" medium="image">
			<media:title type="html">20081110-185933</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/11/20081110-190004.png" medium="image">
			<media:title type="html">20081110-190004</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/11/20081110-190045.png" medium="image">
			<media:title type="html">20081110-190045</media:title>
		</media:content>
	</item>
		<item>
		<title>Creating PDF Test-Files</title>
		<link>http://blog.didierstevens.com/2008/11/09/creating-pdf-test-files/</link>
		<comments>http://blog.didierstevens.com/2008/11/09/creating-pdf-test-files/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 12:56:47 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
		
		<category><![CDATA[My Software]]></category>

		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://didierstevens.wordpress.com/?p=871</guid>
		<description><![CDATA[As promised, I&#8217;m releasing a couple of my PDF tools as a warm-up to my ISSA Belgium and OWASP Belgium talk.
After having manually created some PDF test-files (just using a text editor), I stepped up to the next level and wrote a quick-and-dirty Python module to generate PDF documents by assembling fundamental PDF elements.
My mPDF.py [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><em><a href="http://blog.didierstevens.com/2008/10/20/analyzing-a-malicious-pdf-file/" target="_self">As promised</a>, I&#8217;m releasing a couple of my PDF tools as a warm-up to my <a href="http://www.issa-be.org/mambo/index.php?option=com_content&amp;task=view&amp;id=144&amp;Itemid=43" target="_blank">ISSA Belgium</a> and <a href="http://www.owasp.org/index.php/Belgium#PROGRAM" target="_blank">OWASP Belgium</a></em> talk.</p>
<p>After having manually created some PDF test-files (just using a text editor), I stepped up to the next level and wrote a quick-and-dirty Python module to generate PDF documents by assembling <a href="http://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/" target="_self">fundamental PDF elements</a>.</p>
<p>My mPDF.py module contains a class with methods to create headers, indirect objects, stream objects, trailers and XREFs. One of the programs I wrote based on this module is make-pdf-javascript.py. This Python program allows me to create a simple PDF document with embedded JavaScript that will execute upon opening of the PDF document. Program details and download <a href="http://blog.didierstevens.com/programs/pdf-tools/#make-pdf" target="_self">here</a>.</p>
<p>An example: to create a PDF document exploiting the <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=2008-2992" target="_blank">util.printf Adobe Reader vulnerability</a> in its simplest form (e.g. no shellcode and no heap spray), issue the following command:</p>
<p><img class="alignnone size-full wp-image-875" title="20081109-121930" src="http://didierstevens.files.wordpress.com/2008/11/20081109-121930.png?w=660&#038;h=40" alt="20081109-121930" width="660" height="40" /></p>
<p>Here it crashes Adobe Reader 8.1.2 on Windows XP SP2:</p>
<p><img class="alignnone size-full wp-image-878" title="20081109-130302" src="http://didierstevens.files.wordpress.com/2008/11/20081109-130302.png?w=546&#038;h=370" alt="20081109-130302" width="546" height="370" /></p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/871/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/871/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/871/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/871/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/871/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&blog=264765&post=871&subd=didierstevens&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2008/11/09/creating-pdf-test-files/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/didierstevens-128.jpg" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/11/20081109-121930.png" medium="image">
			<media:title type="html">20081109-121930</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/11/20081109-130302.png" medium="image">
			<media:title type="html">20081109-130302</media:title>
		</media:content>
	</item>
		<item>
		<title>Picture Puzzle</title>
		<link>http://blog.didierstevens.com/2008/11/09/picture-puzzle/</link>
		<comments>http://blog.didierstevens.com/2008/11/09/picture-puzzle/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 07:41:34 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
		
		<category><![CDATA[Puzzle]]></category>

		<guid isPermaLink="false">http://didierstevens.wordpress.com/?p=863</guid>
		<description><![CDATA[As I announced via Twitter, here&#8217;s a new puzzle. Find the message I&#8217;ve hidden in this picture.
First one to post a comment with the correct answer can get a sticker. For those who don&#8217;t know, comments are moderated.

&#160;&#160;&#160;&#160;&#160;&#160;     ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As I announced via <a href="http://twitter.com/DidierStevens" target="_blank">Twitter</a>, here&#8217;s a new puzzle. Find the message I&#8217;ve hidden in <a href="http://didierstevens.com/files/data/picture-puzzle.bmp" target="_self">this picture</a>.</p>
<p>First one to post a comment with the correct answer can get a <a href="http://blog.didierstevens.com/2008/08/05/how-is-my-hacking-com/" target="_self">sticker</a>. For those who don&#8217;t know, comments are moderated.</p>
<p><img src="http://didierstevens.com/files/data/picture-puzzle.bmp" alt="" /></p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/863/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&blog=264765&post=863&subd=didierstevens&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2008/11/09/picture-puzzle/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/didierstevens-128.jpg" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.com/files/data/picture-puzzle.bmp" medium="image" />
	</item>
		<item>
		<title>Quickpost: Remember FireOx?</title>
		<link>http://blog.didierstevens.com/2008/11/03/quickpost-remember-fireox/</link>
		<comments>http://blog.didierstevens.com/2008/11/03/quickpost-remember-fireox/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 17:05:43 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
		
		<category><![CDATA[Hacking]]></category>

		<category><![CDATA[Quickpost]]></category>

		<guid isPermaLink="false">http://didierstevens.wordpress.com/?p=861</guid>
		<description><![CDATA[Remember FireOx?
This time, I tested my Excel scripts on a CommNet machine, here at TechEd Barcelona. Worked without problem.
&#160;&#160;&#160;&#160;&#160;&#160;     ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Remember <a href="http://blog.didierstevens.com/2006/11/08/fireox/" target="_self">FireOx</a>?</p>
<p>This time, I tested <a href="http://blog.didierstevens.com/2008/10/23/excel-exercises-in-style/" target="_self">my Excel scripts</a> on a CommNet machine, here at TechEd Barcelona. Worked without problem.</p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/861/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/861/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/861/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/861/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/861/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&blog=264765&post=861&subd=didierstevens&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2008/11/03/quickpost-remember-fireox/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/didierstevens-128.jpg" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>
	</item>
		<item>
		<title>Quickpost: &#8220;An Old IE Trick&#8221; Revisited</title>
		<link>http://blog.didierstevens.com/2008/11/01/quickpost-an-old-ie-trick-revisited/</link>
		<comments>http://blog.didierstevens.com/2008/11/01/quickpost-an-old-ie-trick-revisited/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 22:30:14 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
		
		<category><![CDATA[Malware]]></category>

		<category><![CDATA[Quickpost]]></category>

		<guid isPermaLink="false">http://didierstevens.wordpress.com/?p=848</guid>
		<description><![CDATA[One year ago I blogged about an old IE trick still being used by malware. What can be said now that I resubmitted my test files to Virustotal (VT)? Not much, because VT is not an anti-virus test tool (it&#8217;s a virus test tool).
More AV products detect my test files now; and test files with [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One year ago I blogged about <a href="http://blog.didierstevens.com/2007/10/23/a000n0000-0000o000l00d00-0i000e000-00t0r0000i0000c000k/" target="_self">an old IE trick</a> still being used by malware. What can be said now that I resubmitted my test files to <a href="http://www.virustotal.com/" target="_blank">Virustotal</a> (VT)? Not much, because <a href="http://blog.didierstevens.com/2008/04/21/only-x-out-of-32-antivirus-products-detect-this/" target="_self">VT is not an anti-virus test tool</a> (it&#8217;s a virus test tool).</p>
<p>More AV products detect my test files now; and test files with longer zero byte sequences, that weren&#8217;t detected a year ago, are getting detected now. So I&#8217;m not really going out on a limb here when I say that the detection has improved. But there&#8217;s no way to quantify this improvement with VT results alone.</p>
<p>My test file with 255 contiguous zero bytes, which wasn&#8217;t detected by VT one year ago, is being detected by 6 AV products now. But it must be clear that I can&#8217;t conclude from this that only 6 AV products have been improved in the past year.</p>
<p>First of all, we can&#8217;t know if all AV products that have been improved in the past year, have been upgraded on the VT site. It&#8217;s very likely that some new engines have not been installed on VT yet.</p>
<p>Second, this improvement might not come to expression on VT. VT uses command-line scanners, and many AV protection features are not present in the command-line versions.</p>
<p>Third, the improved detection could just be the result of new signatures for the very same test files I submitted. Just out of curiosity, I created a new file with 543 contiguous zero bytes. It gets detected by some AV products.</p>
<p>If you&#8217;re interested in the detailed detections, here are the links to the VT results:</p>
<ul>
<li><a href="http://www.virustotal.com/analisis/2f43491a651e1128b15db9cd30cdb5b5" target="_blank">Unobfuscated malware</a></li>
<li><a href="http://www.virustotal.com/analisis/da1ec1faf43f4eed9690c30692ab860d" target="_blank">Obfuscated malware 255 zero bytes</a></li>
<li><a href="http://www.virustotal.com/analisis/fe4cfef71e5c56bf9f2dd8de8aceaa31" target="_blank">Obfuscated malware 256 zero bytes</a></li>
<li><a href="http://www.virustotal.com/analisis/a8df9b9c19df2b352e9b76cd97fb9e78" target="_blank">Obfuscated malware 500 zero bytes</a></li>
<li><a href="http://www.virustotal.com/analisis/09d923d7152366402b31cd948df7c23a" target="_blank">Obfuscated malware 543 zero bytes</a></li>
</ul>
<hr /><a href="http://blog.didierstevens.com/2007/11/01/announcing-quickposts/">Quickpost info</a></p>
<hr />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/848/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/848/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/848/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/848/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/848/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&blog=264765&post=848&subd=didierstevens&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2008/11/01/quickpost-an-old-ie-trick-revisited/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/didierstevens-128.jpg" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>
	</item>
		<item>
		<title>Quickpost: Fingerprinting PDF Files</title>
		<link>http://blog.didierstevens.com/2008/11/01/quickpost-fingerprinting-pdf-files/</link>
		<comments>http://blog.didierstevens.com/2008/11/01/quickpost-fingerprinting-pdf-files/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 11:57:17 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
		
		<category><![CDATA[Malware]]></category>

		<category><![CDATA[PDF]]></category>

		<category><![CDATA[Quickpost]]></category>

		<guid isPermaLink="false">http://didierstevens.wordpress.com/?p=853</guid>
		<description><![CDATA[Per request, a more detailed post on how I use my pdf-parser stats option.
I have two malicious PDF files with a different title, different size (100K and 700K) and different content. But they share an identical internal PDF structure, because they have exactly the same number and type of fundamental elements:

These statistics were generated with [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Per request, a more detailed post on how I use my <a href="http://blog.didierstevens.com/programs/pdf-tools/" target="_self">pdf-parser</a> stats option.</p>
<p>I have two malicious PDF files with a different title, different size (100K and 700K) and different content. But they share an identical internal PDF structure, because they have exactly the same number and type of <a href="http://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/" target="_self">fundamental elements</a>:</p>
<p><img class="alignnone size-full wp-image-854" title="20081101-124755" src="http://didierstevens.files.wordpress.com/2008/11/20081101-124755.png?w=626&#038;h=324" alt="" width="626" height="324" /></p>
<p>These statistics were generated with the following command:</p>
<pre>pdf-parser.py --stats malware.pdf</pre>
<p>As both malicious PDF files produce identical stats (or fingerprint), I can assume they share the same origin.</p>
<hr /><a href="http://blog.didierstevens.com/2007/11/01/announcing-quickposts/">Quickpost info</a></p>
<hr />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/853/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/853/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/853/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/853/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/853/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/853/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/853/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/853/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/853/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/853/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&blog=264765&post=853&subd=didierstevens&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2008/11/01/quickpost-fingerprinting-pdf-files/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/didierstevens-128.jpg" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/11/20081101-124755.png" medium="image">
			<media:title type="html">20081101-124755</media:title>
		</media:content>
	</item>
		<item>
		<title>pdf-parser.py</title>
		<link>http://blog.didierstevens.com/2008/10/30/pdf-parserpy/</link>
		<comments>http://blog.didierstevens.com/2008/10/30/pdf-parserpy/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 17:19:23 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
		
		<category><![CDATA[My Software]]></category>

		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://didierstevens.wordpress.com/?p=832</guid>
		<description><![CDATA[I&#8217;m publishing my pdf-parser tool featured in my last video. Details and download here.

&#160;&#160;&#160;&#160;&#160;&#160;     ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m publishing my pdf-parser tool featured in <a href="http://blog.didierstevens.com/2008/10/20/analyzing-a-malicious-pdf-file/" target="_blank">my last video</a>. Details and download <a href="http://blog.didierstevens.com/programs/pdf-tools/" target="_self">here</a>.</p>
<p><img class="alignnone size-full wp-image-834" title="20081030" src="http://didierstevens.files.wordpress.com/2008/10/20081030.png?w=628&#038;h=260" alt="" width="628" height="260" /></p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/832/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/832/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/832/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/832/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/832/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/832/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/832/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/832/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/832/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/832/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&blog=264765&post=832&subd=didierstevens&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2008/10/30/pdf-parserpy/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/didierstevens-128.jpg" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/10/20081030.png" medium="image">
			<media:title type="html">20081030</media:title>
		</media:content>
	</item>
		<item>
		<title>Excel Exercises in Style</title>
		<link>http://blog.didierstevens.com/2008/10/23/excel-exercises-in-style/</link>
		<comments>http://blog.didierstevens.com/2008/10/23/excel-exercises-in-style/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 10:34:07 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
		
		<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://didierstevens.wordpress.com/?p=821</guid>
		<description><![CDATA[I developed another variant of my &#8220;Excel macro injects embedded DLL&#8221; script.
In stead of creating and loading a temporary DLL from VBScript, I inject and execute shellcode directly from the VBA application.
Some HIPS would prevent my previous script from running, because it loaded an unapproved DLL. But my new version doesn&#8217;t load a DLL.

Of course, [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I developed another variant of my <a href="http://blog.didierstevens.com/2008/06/25/bpmtk-bypassing-srp-with-dll-restrictions/" target="_self">&#8220;Excel macro injects embedded DLL&#8221;</a> script.</p>
<p>In stead of creating and loading a temporary DLL from VBScript, I inject and execute shellcode directly from the VBA application.</p>
<p>Some <a href="http://en.wikipedia.org/wiki/Intrusion-prevention_system" target="_blank">HIPS</a> would prevent my previous script from running, because it loaded an unapproved DLL. But my new version doesn&#8217;t load a DLL.</p>
<p><img class="alignnone size-full wp-image-823" title="20081022-212126" src="http://didierstevens.files.wordpress.com/2008/10/20081022-212126.png?w=720&#038;h=556" alt="" width="720" height="556" /></p>
<p>Of course, writing shellcode is more difficult than developing a PE executable.</p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/821/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/821/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/821/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/821/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/821/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/821/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/821/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/821/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/821/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/821/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&blog=264765&post=821&subd=didierstevens&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2008/10/23/excel-exercises-in-style/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/didierstevens-128.jpg" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/10/20081022-212126.png" medium="image">
			<media:title type="html">20081022-212126</media:title>
		</media:content>
	</item>
		<item>
		<title>The Case of the Corrupted Stream Object</title>
		<link>http://blog.didierstevens.com/2008/10/21/the-case-of-the-corrupted-stream-object/</link>
		<comments>http://blog.didierstevens.com/2008/10/21/the-case-of-the-corrupted-stream-object/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 21:38:12 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
		
		<category><![CDATA[Malware]]></category>

		<category><![CDATA[PDF]]></category>

		<category><![CDATA[Reverse Engineering]]></category>

		<guid isPermaLink="false">http://didierstevens.wordpress.com/?p=810</guid>
		<description><![CDATA[A malicious PDF file I analyzed a couple of months ago (the one featured in this video) had a corrupted stream object. It uses a /FlateDecode filter, but I could not find a way to decompress it with the zlib library. Back then, I wrote it off as an error of the malware author.

Lately, I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A malicious PDF file I analyzed a couple of months ago (the one <a href="http://blog.didierstevens.com/2008/10/20/analyzing-a-malicious-pdf-file/" target="_self">featured in this video</a>) had a corrupted <a href="http://blog.didierstevens.com/2008/05/19/pdf-stream-objects/" target="_self">stream object</a>. It uses a /FlateDecode filter, but I could not find a way to decompress it with the <a href="http://www.zlib.net/" target="_blank">zlib library</a>. Back then, I wrote it off as an error of the malware author.</p>
<p><img class="alignnone size-full wp-image-811" title="20081021-225926" src="http://didierstevens.files.wordpress.com/2008/10/20081021-225926.png?w=564&#038;h=243" alt="" width="564" height="243" /></p>
<p>Lately, I&#8217;ve been analyzing some shellcode, and while looking at the shellcode in said malicious PDF, I saw it! The second-stage shellcode, a egghunt shellcode, is searching through process memory for the 8 bytes at the beginning of the corrupted stream object.</p>
<p><img class="alignnone size-full wp-image-812" title="20081021-232027" src="http://didierstevens.files.wordpress.com/2008/10/20081021-232027.png?w=518&#038;h=227" alt="" width="518" height="227" /></p>
<p>The malware author knows that the PDF reader loads the PDF document in memory, so he just overwrote the stream object with his third-stage shellcode. This way, his third-stage shellcode is already in memory, waiting to be found by his second-stage shellcode. And the size of his third-stage shellcode is not limited by the buffer he is overflowing.</p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/810/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/810/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/810/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/810/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/810/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/810/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/810/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/810/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/810/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/810/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&blog=264765&post=810&subd=didierstevens&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2008/10/21/the-case-of-the-corrupted-stream-object/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/didierstevens-128.jpg" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/10/20081021-225926.png" medium="image">
			<media:title type="html">20081021-225926</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2008/10/20081021-232027.png" medium="image">
			<media:title type="html">20081021-232027</media:title>
		</media:content>
	</item>
	</channel>
</rss>