<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Didier Stevens &#187; Malware</title>
	<atom:link href="http://blog.didierstevens.com/category/malware/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.didierstevens.com</link>
	<description>(blog 'DidierStevens)</description>
	<lastBuildDate>Thu, 26 Aug 2010 12:11:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.didierstevens.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/60bb50c97cd147341ffb43b0e2ef0d15?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>Didier Stevens &#187; Malware</title>
		<link>http://blog.didierstevens.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.didierstevens.com/osd.xml" title="Didier Stevens" />
	<atom:link rel='hub' href='http://blog.didierstevens.com/?pushpress=hub'/>
		<item>
		<title>Quickpost: More Malformed PDFs</title>
		<link>http://blog.didierstevens.com/2010/05/18/quickpost-more-malformed-pdfs/</link>
		<comments>http://blog.didierstevens.com/2010/05/18/quickpost-more-malformed-pdfs/#comments</comments>
		<pubDate>Tue, 18 May 2010 12:05:23 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Malware]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[Quickpost]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=2157</guid>
		<description><![CDATA[Here&#8217;s a heads up for some malicious PDF samples that are deliberately malformed to avoid detection. The most important case is the missing endobj keyword: Adobe Reader will happily parse a PDF where the object are not terminated with endobj, but my pdf-parser won&#8217;t. I&#8217;ll have to update the parser to deal with this case. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=2157&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a heads up for some malicious PDF samples that are deliberately malformed to avoid detection.</p>
<p>The most important case is the missing endobj keyword:</p>
<p><img class="alignnone size-full wp-image-2158" title="20100517-232551" src="http://didierstevens.files.wordpress.com/2010/05/20100517-232551.png?w=230&#038;h=176" alt="" width="230" height="176" /></p>
<p>Adobe Reader will happily parse a PDF where the object are not terminated with endobj, but my pdf-parser won&#8217;t. I&#8217;ll have to update the parser to deal with this case.</p>
<p>The cross-reference table can also be omitted:</p>
<p><img class="alignnone size-full wp-image-2159" title="20100517-232740" src="http://didierstevens.files.wordpress.com/2010/05/20100517-232740.png?w=256&#038;h=420" alt="" width="256" height="420" /></p>
<p>This is not an issue for my parser.</p>
<p>And then I also received a sample with a stream object, where the case of the endstream object was wrong: Endstream. First we assumed Adobe Reader was not case-sensitive for the endstream keyword, but I found out it can actually parse a stream object with missing endstream keyword:</p>
<p><img class="alignnone size-full wp-image-2160" title="20100517-232817" src="http://didierstevens.files.wordpress.com/2010/05/20100517-232817.png?w=267&#038;h=242" alt="" width="267" height="242" /></p>
<p>This is an issue for my parser.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/2157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/2157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/2157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/2157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/didierstevens.wordpress.com/2157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/didierstevens.wordpress.com/2157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/didierstevens.wordpress.com/2157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/didierstevens.wordpress.com/2157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/2157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/2157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/2157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/2157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/2157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/2157/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=2157&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2010/05/18/quickpost-more-malformed-pdfs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2010/05/20100517-232551.png" medium="image">
			<media:title type="html">20100517-232551</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2010/05/20100517-232740.png" medium="image">
			<media:title type="html">20100517-232740</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2010/05/20100517-232817.png" medium="image">
			<media:title type="html">20100517-232817</media:title>
		</media:content>
	</item>
		<item>
		<title>Frisky Solitaire &#8211; Another Info Stealer</title>
		<link>http://blog.didierstevens.com/2010/03/09/frisky-solitaire-another-info-stealer/</link>
		<comments>http://blog.didierstevens.com/2010/03/09/frisky-solitaire-another-info-stealer/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 00:00:15 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Forensics]]></category>
		<category><![CDATA[Malware]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=2072</guid>
		<description><![CDATA[Marcus Murray gave a great talk at TechEd Berlin 2009: &#8220;Hack-Proofing Your Clients Using Windows 7 Security&#8221;. In one of his demos, he showed a trojaned Excel spreadsheet. The spreadsheet was a simple text-based game, but it had a malicious component that executed surreptitiously while the game was played. As I&#8217;ve done several hacks with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=2072&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.truesec.com/en/consulting.htm#mm">Marcus Murray</a> gave a great talk at TechEd Berlin 2009: &#8220;Hack-Proofing Your Clients Using Windows 7 Security&#8221;. In one of his demos, he showed a trojaned Excel spreadsheet. The spreadsheet was a simple text-based game, but it had a malicious component that executed surreptitiously while the game was played.</p>
<p>As I&#8217;ve done several <a href="http://blog.didierstevens.com/2008/10/23/excel-exercises-in-style/">hacks with Excel macros</a> in the past, this made me realize that social engineering is a key element to get people to run macros from a spreadsheet of unknown origin.</p>
<p>Several people have asked me about de details of the vulnerability I exploited in my <a href="http://blog.didierstevens.com/2010/03/08/pdf-info-stealer-poc/">PDF Info Stealer PoC</a>. But that&#8217;s not important. It&#8217;s not about the exploit, it&#8217;s about the payload: the info stealer. As I&#8217;ve written in <a href="http://blog.didierstevens.com/2010/03/08/pdf-info-stealer-poc/">my previous post</a>, I don&#8217;t even need an exploit to get users to execute the info stealer. If I put the info stealer inside an Excel spreadsheet and social engineer the targeted users to execute the macros, I&#8217;ve achieved my goal without exploiting a software vulnerability.</p>
<p>I present you Frisky Solitaire:</p>
<p><img class="alignnone size-full wp-image-2073" title="XPPROSP3-2010-03-05-20-49-19" src="http://didierstevens.files.wordpress.com/2010/03/xpprosp3-2010-03-05-20-49-19.png?w=1024&#038;h=768" alt="" width="1024" height="768" /></p>
<p>Frisky solitaire is more compelling than text-based Excel games, because of the graphics. I took Solitaire from ReactOS, turned it into a DLL and embedded it with my <a href="http://blog.didierstevens.com/2010/02/16/memoryloadlibrary-from-c-program-to-shellcode/">memory loading shellcode</a> into Excel macros (the same technique as <a href="http://blog.didierstevens.com/2010/02/08/excel-with-cmd-dll-regedit-dll/">I developed for cmd.dll and regedit.dll</a>). I imagine that a simple game like Solitaire in Excel can go viral inside a company, when you know that many corporations disable standard Windows games on their desktops and Terminal Servers.</p>
<p>But in a crude attempt at social engineering the male population of a targeted company, I added an element of nudity to the game. The implied message of the game&#8217;s title is that winning games increases nudity. I know, I&#8217;m talking about basic instincts here, but it still does the trick&#8230;</p>
<p>So I imagine that this game can become popular with a large part of the male employees of a targeted company. And that they wouldn&#8217;t question the fact you have to execute Excel macros to play a game. Sounds plausible, no?</p>
<p>Of course, you guessed it: Frisky Solitaire is trojaned with an info stealer&#8230; No need to exploit a software vulnerability to steal info. Given that here too, everything is done in memory, detection is unlikely.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/2072/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/2072/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/2072/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/2072/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/didierstevens.wordpress.com/2072/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/didierstevens.wordpress.com/2072/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/didierstevens.wordpress.com/2072/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/didierstevens.wordpress.com/2072/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/2072/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/2072/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/2072/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/2072/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/2072/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/2072/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=2072&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2010/03/09/frisky-solitaire-another-info-stealer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2010/03/xpprosp3-2010-03-05-20-49-19.png" medium="image">
			<media:title type="html">XPPROSP3-2010-03-05-20-49-19</media:title>
		</media:content>
	</item>
		<item>
		<title>PDF Info Stealer PoC</title>
		<link>http://blog.didierstevens.com/2010/03/08/pdf-info-stealer-poc/</link>
		<comments>http://blog.didierstevens.com/2010/03/08/pdf-info-stealer-poc/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 00:00:00 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Forensics]]></category>
		<category><![CDATA[Malware]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=2046</guid>
		<description><![CDATA[An info stealer is malware that steals credentials or files from its victims. Info stealers don&#8217;t require admin rights to perform their task, and can be designed to evade or bypass AV, HIPS, DLP and other security software. I helped out a friend testing his environment with a PoC PDF info stealer I designed (I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=2046&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>An info stealer is malware that steals credentials or files from its victims.</p>
<p>Info stealers don&#8217;t require admin rights to perform their task, and can be designed to evade or bypass AV, HIPS, DLP and other security software.</p>
<p>I helped out a friend testing his environment with a PoC PDF info stealer I designed (I will not publish it).</p>
<p><img class="alignnone size-full wp-image-2049" title="pdf-infostealer-1" src="http://didierstevens.files.wordpress.com/2010/03/pdf-infostealer-1.png?w=499&#038;h=231" alt="" width="499" height="231" /></p>
<p>This PDF document exploits a known vulnerability, and executes shellcode to load a DLL (embedded inside the PDF document) from memory into memory. This way, nothing gets written to disk (except the PDF file). The DLL searches the My Documents folder of the currect user for a file called budget.xls, and uploads it to <a href="http://pastebin.com/HXDu9Z8r">Pastebin.com</a>.</p>
<p><img class="alignnone size-full wp-image-2050" title="pdf-infostealer-2" src="http://didierstevens.files.wordpress.com/2010/03/pdf-infostealer-2.png?w=712&#038;h=349" alt="" width="712" height="349" /></p>
<p>My PDF info stealer was succesful: file budget.xls was posted to Pastebin.com</p>
<p>Preventing an info stealer from operating is not easy. The Windows operating system is designed to give user processes unrestricted access to the user&#8217;s data. It&#8217;s only starting with the Windows Vista kernel and <a href="http://en.wikipedia.org/wiki/Mandatory_Integrity_Control">Windows Integrity Control</a> that a process can be assigned a lower level than user data and be restricted from accessing it. Lowering the Integrity Level of Acrobat Reader will help us in this case, but if I exploit an Excel vulnerability (or just use macros, without exploiting a vulnerability), the integrity levels will not protect us.</p>
<p>Neither is preventing data egress easy. OK, you can decide to block Pastebin.com. But can you block all sites that can be posted to? Like <a href="http://blog.didierstevens.com/2008/03/31/hiding-inside-wikipedia/">Wikipedia</a>? And if you can, do you block <a href="http://blog.didierstevens.com/2010/02/22/ping-shellcode/">ICMP packets</a>?</p>
<p>To protect confidential data, don&#8217;t let it be accessed by systems with Internet access. That&#8217;s not very practical, but it&#8217;s reliable. Or use strong encryption with strong passwords (not the default RC4 Excel encryption). The info stealer will have the <a href="http://blog.didierstevens.com/2008/12/09/updates-bpmtk-and-hakin9-pdf-and-metasploit/">extra difficulty to steal the password too</a>.</p>
<p>I know this is obvious advice, but it&#8217;s not easy protecting data from carefully designed info stealers on Windows.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/2046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/2046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/2046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/2046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/didierstevens.wordpress.com/2046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/didierstevens.wordpress.com/2046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/didierstevens.wordpress.com/2046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/didierstevens.wordpress.com/2046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/2046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/2046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/2046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/2046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/2046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/2046/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=2046&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2010/03/08/pdf-info-stealer-poc/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2010/03/pdf-infostealer-1.png" medium="image">
			<media:title type="html">pdf-infostealer-1</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2010/03/pdf-infostealer-2.png" medium="image">
			<media:title type="html">pdf-infostealer-2</media:title>
		</media:content>
	</item>
		<item>
		<title>Adobe Reader JavaScript Blacklist Framework</title>
		<link>http://blog.didierstevens.com/2010/01/11/adobe-reader-javascript-blacklist-framework/</link>
		<comments>http://blog.didierstevens.com/2010/01/11/adobe-reader-javascript-blacklist-framework/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 01:51:17 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Malware]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[Vulnerabilities]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1926</guid>
		<description><![CDATA[The JavaScript Blacklist Framework is a security feature Adobe released with Adobe Reader and Acrobat versions 8.1.7 and 9.2. When you&#8217;re in a case where you need to use Adobe Reader and you can&#8217;t disable JavaScript, the JavaScript Blacklist Framework can help you mitigate zero-days in JavaScript API functions by disabling the vulnerable functions. I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1926&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://kb2.adobe.com/cps/504/cpsid_50431.html" target="_blank">JavaScript Blacklist Framework</a> is a security feature Adobe released with Adobe Reader and Acrobat versions 8.1.7 and 9.2.</p>
<p>When you&#8217;re in a case where you need to use Adobe Reader and you can&#8217;t disable JavaScript, the JavaScript Blacklist Framework can help you mitigate zero-days in JavaScript API functions by disabling the vulnerable functions.</p>
<p>I produced a video where I disable util.printf:</p>
<p><span style="text-align:center; display: block;"><a href="http://blog.didierstevens.com/2010/01/11/adobe-reader-javascript-blacklist-framework/"><img src="http://img.youtube.com/vi/wDAc88GS9cQ/2.jpg" alt="" /></a></span></p>
<p>Notice that when I blacklist util.printf, the script still executes until the blacklisted function util.printf is called. At that moment, the script is cancelled and the user is warned.</p>
<p>On Windows, you can blacklist functions by adding them to registry value tBlackList (HKLM\SOFTWARE\Policies\Adobe\<em>product</em>\<em>version</em>\FeatureLockDown\cJavaScriptPerms\tBlackList). To blacklist more than one function, use the same registry value and separate the functions by the pipe-character (e.g. Util.printf|Collab.getIcon). Pay attention to the fact that the framework is case-sensitive (e.g. Util.printf is correct, util.printf is not correct).</p>
<p>The framework is impervious to bypassing with some basic obfuscation techniques found in malicious PDFs (eval(&#8220;util.printf&#8230; ; x = util.printf; x(&#8220;&#8230; ).</p>
<p>It&#8217;s too bad that blacklisting is limited to the JavaScript API; the functions to blacklist must be in the form &lt;object-name&gt;.&lt;function-name&gt;. Otherwise we would be able to blacklist some global functions of the JavaScript language that are often used in malicious PDF files, like unescape. According to the <a href="http://en.wikipedia.org/wiki/ECMAScript" target="_blank">ECMAScript</a> specification, unescape is a member function of the Global Object. I tried several ways to blacklist it (unescape, .unescape, this.unescape, Doc.unescape, &#8230;), but failed.</p>
<p>If you really want to disable unescape, you could do this by patching the JavaScript plugin EScript.api. Maybe I&#8217;ll post a method to do this in-memory with my basic process manipulation tool kit.</p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:0;width:1px;height:1px;">
<h1>Adobe Reader JavaScript Blacklist Framework</h1>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/1926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/1926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/1926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/1926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/didierstevens.wordpress.com/1926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/didierstevens.wordpress.com/1926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/didierstevens.wordpress.com/1926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/didierstevens.wordpress.com/1926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/1926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/1926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/1926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/1926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/1926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/1926/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1926&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2010/01/11/adobe-reader-javascript-blacklist-framework/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/wDAc88GS9cQ/2.jpg" medium="image" />
	</item>
		<item>
		<title>The Undeletable SafeBoot Key</title>
		<link>http://blog.didierstevens.com/2010/01/01/the-undeletable-safeboot-key/</link>
		<comments>http://blog.didierstevens.com/2010/01/01/the-undeletable-safeboot-key/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 12:53:41 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Malware]]></category>
		<category><![CDATA[My Software]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1908</guid>
		<description><![CDATA[I present you a new program to create the SafeBoot registry key with special permissions protecting it from deletion. After using this new program, you&#8217;ll be able to restore the SafeBoot registry keys with my .REG files. Many malware deletes the SafeBoot registry key to prevent you from booting into Safe Mode. I provide a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1908&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I present you a new program to create the SafeBoot registry key with special permissions protecting it from deletion. After using this new program, you&#8217;ll be able to restore the SafeBoot registry keys with <a href="http://blog.didierstevens.com/2007/02/19/restoring-safe-mode-with-a-reg-file/">my .REG files</a>.</p>
<p>Many malware <a href="http://blog.didierstevens.com/2006/06/22/save-safeboot/">deletes the SafeBoot registry key</a> to prevent you from booting into Safe Mode. I provide <a href="http://blog.didierstevens.com/2007/02/19/restoring-safe-mode-with-a-reg-file/">a registry fix</a> to restore these keys.</p>
<p>But there exists malware that goes even further and actively monitors the registry to thwart every attempt to restore the keys by deleting them as soon as they are restored. Untill now, I recommended to use <a href="http://blog.didierstevens.com/2008/11/26/update-restoring-safe-mode-with-a-reg-file-and-a-live-cd/">a Live CD to restore the keys in</a> such a case (this is a complex procedure). This way, the malware is not running while you restore the SafeBoot keys.</p>
<p>Now I developed another solution: a program to create the SafeBoot registry key with permissions to deny Administrators and System accounts to delete the key. This way, the malware can&#8217;t delete the keys because it lacks the permissions to do so.</p>
<p>Here are the SafeBoot permissions on a default Windows XP install:</p>
<p><img class="alignnone size-full wp-image-1910" title="20100101-122749e" src="http://didierstevens.files.wordpress.com/2010/01/20100101-122749e.png?w=567&#038;h=492" alt="" width="567" height="492" /></p>
<p>And here are the permissions of the SafeBoot key created with my new program:</p>
<p><img class="alignnone size-full wp-image-1911" title="20100101-122911e" src="http://didierstevens.files.wordpress.com/2010/01/20100101-122911e.png?w=567&#038;h=492" alt="" width="567" height="492" /></p>
<p>I designed my program to create the SafeBoot key only when it is missing, and to set the special permissions while it is created:</p>
<p><img class="alignnone size-full wp-image-1912" title="20100101-122826e" src="http://didierstevens.files.wordpress.com/2010/01/20100101-122826e.png?w=440&#038;h=73" alt="" width="440" height="73" /></p>
<p>My program will not set the special permissions when the key exists. If the SafeBoot keys exists and you can&#8217;t boot into Safe Mode, you&#8217;re dealing with another issue than a Safe Mode disabling malware (probably a buggy driver).</p>
<p>The program is a console program, but it will pause at the end so you can read its output, even when you launch it from Windows Explorer (i.e. double-click it). If you want to use it in a script and prevent the prompt from appearing, use option -n.</p>
<p>If the SafeBoot key exists, my program will tell this (SYSTEM\CurrentControlSet\Control\SafeBoot exists.) and it will leave the permissions unchanged. If your system is clean but you want to protect the SafeBoot keys, I recommend you change the permissions manually using RegEdit.</p>
<p>My program creates only registry key SYSTEM\CurrentControlSet\Control\SafeBoot, and not the subkeys. To restore the subkeys, you just need to <a href="http://blog.didierstevens.com/2007/02/19/restoring-safe-mode-with-a-reg-file/">use the appropriate .REG file</a>.</p>
<p>Having read this, you might have thought that malware authors could bypass this protection by changing the permissions before deleting the keys. You&#8217;re right. I don&#8217;t deny Administrator and System accounts the permission to change the permissions, because I don&#8217;t expect there is malware in the wild that changes permissions of the SafeBoot key. I&#8217;ll deal with it when it eventually appears.</p>
<p>Download:</p>
<p><a href="http://www.didierstevens.com/files/software/UndeletableSafebootKey_V0_0_0_1.zip" target="_self">UndeletableSafebootKey_V0_0_0_1.zip</a> (<a href="https://www.didierstevens.com/files/software/UndeletableSafebootKey_V0_0_0_1.zip" target="_self">https</a>)</p>
<p>MD5: 2FAC291AD547657E31B157B8581D4601</p>
<p>SHA256: 7A1E42A57BBF8E804491318671AE992947C82DCC9C2001E3033B45E4AEAB2DDE</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/1908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/1908/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/1908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/1908/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/didierstevens.wordpress.com/1908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/didierstevens.wordpress.com/1908/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/didierstevens.wordpress.com/1908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/didierstevens.wordpress.com/1908/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/1908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/1908/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/1908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/1908/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/1908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/1908/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1908&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2010/01/01/the-undeletable-safeboot-key/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2010/01/20100101-122749e.png" medium="image">
			<media:title type="html">20100101-122749e</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2010/01/20100101-122911e.png" medium="image">
			<media:title type="html">20100101-122911e</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2010/01/20100101-122826e.png" medium="image">
			<media:title type="html">20100101-122826e</media:title>
		</media:content>
	</item>
		<item>
		<title>Preventing Applications From Starting (Malicious) Applications</title>
		<link>http://blog.didierstevens.com/2009/10/05/preventing-applications-from-starting-malicious-applications/</link>
		<comments>http://blog.didierstevens.com/2009/10/05/preventing-applications-from-starting-malicious-applications/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 00:00:54 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Malware]]></category>
		<category><![CDATA[My Software]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[Vulnerabilities]]></category>
		<category><![CDATA[bpmtk]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1786</guid>
		<description><![CDATA[Another very effective way to prevent malicious documents from infecting PCs, is to prevent vulnerable applications from starting other applications. As almost all shellcode found in malicious documents in-the-wild (again, I&#8217;m excluding targeted attacks) will ultimately start another process to execute the trojan, blocking this will prevent the trojan from executing. This is an old [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1786&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Another very effective way to <a href="http://blog.didierstevens.com/2009/09/27/preventing-malicious-documents-from-compromising-windows-machines/" target="_self">prevent malicious documents from infecting PCs</a>, is to prevent vulnerable applications from starting other applications. As almost all shellcode found in malicious documents in-the-wild (again, I&#8217;m excluding targeted attacks) will ultimately start another process to execute the trojan, blocking this will prevent the trojan from executing.</p>
<p>This is an old idea you&#8217;ll find implemented in many sandboxes and HIPS. I added a new DLL to my <a href="http://blog.didierstevens.com/2008/02/28/introducing-the-basic-process-manipulation-tool-kit/" target="_self">basic process manipulation tool kit</a> to prevent applications from creating a new process. Loading this DLL inside a process will prevent this process from creating a new process. I&#8217;ll explain the technique used in my DLL and how to load it in vulnerable applications in upcoming blogposts, but I want to start with showing how it prevents malicious documents from infecting a PC.</p>
<p>When the DLL is loaded inside a process, it will patch the Create Process API to intercept and block calls to it:</p>
<p><img class="alignnone size-full wp-image-1790" title="hook-createprocess-010" src="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-010.png?w=700&#038;h=182" alt="hook-createprocess-010" width="700" height="182" /></p>
<p>As a first test, we&#8217;ll use my <a href="http://blog.didierstevens.com/2008/05/20/quickpost-eicarpdf/" target="_self">eicar.pdf</a> document.</p>
<p><img class="alignnone size-full wp-image-1791" title="hook-createprocess-009" src="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-009.png?w=677&#038;h=310" alt="hook-createprocess-009" width="677" height="310" /></p>
<p>Clicking the button will save the eicar.txt file to a temporary folder and launch the editor.</p>
<p>Adobe Acrobat reader will warn you when an application is to be launched:</p>
<p><img class="alignnone size-full wp-image-1792" title="hook-createprocess-011" src="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-011.png?w=574&#038;h=205" alt="hook-createprocess-011" width="574" height="205" /></p>
<p>But when you accept, the editor will be prevented to execute:</p>
<p><img class="alignnone size-full wp-image-1793" title="hook-createprocess-012" src="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-012.png?w=510&#038;h=142" alt="hook-createprocess-012" width="510" height="142" /></p>
<p>That&#8217;s because the DLL intercepted and blocked the Create Process call:</p>
<p><img class="alignnone size-full wp-image-1794" title="hook-createprocess-013" src="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-013.png?w=717&#038;h=119" alt="hook-createprocess-013" width="717" height="119" /></p>
<p>As a second test, let&#8217;s use a real malicious PDF document. The hooks installed by the DLL prevent it from executing the trojan:</p>
<p><img class="alignnone size-full wp-image-1795" title="hook-createprocess-014" src="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-014.png?w=723&#038;h=149" alt="hook-createprocess-014" width="723" height="149" /></p>
<p>Adobe Reader starts and then just crashes, without spawning another process:</p>
<p><img class="alignnone size-full wp-image-1797" title="hook-createprocess-017" src="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-017.png?w=724&#038;h=189" alt="hook-createprocess-017" width="724" height="189" /></p>
<p>When opening the same malicious PDF, but without the protecting DLL, the machine gets trojaned (execution of 1.exe and Internet Explorer):</p>
<p><img class="alignnone size-full wp-image-1796" title="hook-createprocess-018" src="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-018.png?w=725&#038;h=274" alt="hook-createprocess-018" width="725" height="274" /></p>
<p>This simple way of preventing applications from launching other applications comes with some drawbacks. For example, the Check Update function in Adobe Reader will not function anymore.</p>
<p>When you have a sandboxing system of HIPS installed on the machines you manage, check if you can use it to prevent vulnerable applications from starting other applications. If it doesn&#8217;t provide such a feature, try the new DLL I&#8217;ll be posting in the new version of bpmtk.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/didierstevens.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/didierstevens.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/didierstevens.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/didierstevens.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/1786/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1786&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2009/10/05/preventing-applications-from-starting-malicious-applications/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-010.png" medium="image">
			<media:title type="html">hook-createprocess-010</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-009.png" medium="image">
			<media:title type="html">hook-createprocess-009</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-011.png" medium="image">
			<media:title type="html">hook-createprocess-011</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-012.png" medium="image">
			<media:title type="html">hook-createprocess-012</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-013.png" medium="image">
			<media:title type="html">hook-createprocess-013</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-014.png" medium="image">
			<media:title type="html">hook-createprocess-014</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-017.png" medium="image">
			<media:title type="html">hook-createprocess-017</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/10/hook-createprocess-018.png" medium="image">
			<media:title type="html">hook-createprocess-018</media:title>
		</media:content>
	</item>
		<item>
		<title>Yubikey, Trojans and Twitter</title>
		<link>http://blog.didierstevens.com/2009/08/26/yubikey-trojans-and-twitter/</link>
		<comments>http://blog.didierstevens.com/2009/08/26/yubikey-trojans-and-twitter/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 11:33:11 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Encryption]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Malware]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1684</guid>
		<description><![CDATA[Stina, Yubico&#8217;s CEO, gave me a Yubikey at RSA London last year. It&#8217;s a small keyfob simulating a USB keyboard. Each time you press the button while it&#8217;s inserted in a USB port, it generates a one-time-password. The Yubikey is a clever little two-factor authentication device. But I&#8217;ve some issues using the Yubikey in a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1684&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Stina, Yubico&#8217;s CEO, gave me a <a href="http://en.wikipedia.org/wiki/Security_token#Yubico_YubiKey" target="_blank">Yubikey</a> at RSA London last year. It&#8217;s a small keyfob simulating a USB keyboard. Each time you press the button while it&#8217;s inserted in a USB port, it generates a one-time-password.</p>
<p><img class="alignnone size-full wp-image-1724" title="20090825-221451" src="http://didierstevens.files.wordpress.com/2009/08/20090825-221451.png?w=320&#038;h=241" alt="20090825-221451" width="320" height="241" /></p>
<p>The Yubikey is a clever little <a href="http://en.wikipedia.org/wiki/Two-factor_authentication" target="_blank">two-factor authentication</a> device.</p>
<p>But I&#8217;ve some issues using the Yubikey in a really secure system. As Twitter plays a role in this, and because lately Twitter started to be used by <a href="http://bits.blogs.nytimes.com/2009/08/20/how-hackers-snatch-real-time-security-id-numbers/" target="_blank">trojans as a communication channel</a>, I decided it&#8217;s time to publish the issues I encountered together with mitigating actions.</p>
<p><strong>Technical details</strong></p>
<p>The OTP generated by the Yubikey is an AES-encrypted data stream. I&#8217;ve obtained the AES-key embedded in my Yubikey from Yubico and am able to decode the OTP with a simple Python program.</p>
<pre>Insert Yubikey and start generating OTPs:

OTP: lkeuuuceeeivjgtbjcbevigeccerfufugdijuhflckrd
public_id = lkeuuuceeeiv
secret_id = ************
counter = 26
counter_session = 1
random_number = 13042
timestamp = 0x8321a8</pre>
<ul>
<li>public_id and secret_id identifies the Yubikey (notice that the public_id is the prefix of the OTP).</li>
<li>counter: this is a persistent register. It is increased with 1 each time the Yubikey is inserted in a USB port.</li>
<li>counter_session: this is a volatile register. It is set to 0 each time the Yubikey is inserted in a USB port, and increased with 1 for each OTP generation</li>
<li>random_number is what it says on the tin: a random number, different per OTP</li>
<li>timestamp is a volatile 32-bit register. It is set to a random value each time the Yubikey is inserted in a USB port, and is then increased with 1 by a 8Hz clock. Yubico specifies an average variation of 20% on the 8Hz clock per Yubikey. With the measurements I made, I calculate that the 8Hz clock of my key has a 32% deviation.</li>
</ul>
<p>Validating an OTP is done by successfully decrypting the OTP. Replay attacks are mitigated by comparing the counters and timestamp with historical data.</p>
<p>When trying to design a website that uses the Yubikey to authenticate, I imagined the following attack and found a way to mitigate it.</p>
<p><strong>Attack 1:</strong></p>
<p>Assume a website that uses the Yubikey to logon (i.e. an OTP generated with your Yubikey is needed to log on to the site, possibly together with more classic credentials like a username/password combo).<br />
Because this website has my AES key and can decrypt my OTP, my Yubikey authenticates me and I&#8217;m granted access to the site.<br />
A web browser trojan could steal an OTP like this:</p>
<ol>
<li>I generate an OTP (OTP1) with my Yubikey</li>
<li>The trojan intercepts and stores OTP1, doesn&#8217;t send OTP1 to the website, but makes the browser display a fake error message (404, server load too high, Yubikey error, &#8230;) prompting me to generate a second OTP</li>
<li>I&#8217;m fooled by the fake error, and generate a second OTP (OTP2) with my Yubikey</li>
<li>The trojan intercepts and stores OTP2, and sends OTP1 to the website</li>
<li>The website grants me access, and the trojan stops interfering</li>
<li>OTP2 can be used by the operators of the trojan to get access to the website, as long as I&#8217;m not first to access the website at a later time with a new OTP (OTP3). Twitter could be used as a channel to communicate the OTPs in real-time to the trojan operators.</li>
</ol>
<p><strong>Mitigation:</strong></p>
<p>The website can detect this attack (the malicious use of OTP2) if the following algorithm is implemented:</p>
<ol>
<li>for every account, the last valid OTP is stored, together with a server-side timestamp (when it was received by the website)</li>
<li>if a new OTP is received, the counter value of the previous OTP is compared with the counter value of the new OTP</li>
<li>when both counters have the same value, the website knows that the OTPs were generated in the same session, and thus that it can compare timestamps.</li>
<li>it calculates the delta of the timestamps of the OTPs, and also the delta of the server-side timestamps when it received the OTPs.</li>
<li>if the 2 deltas differ too much (more than 20% margin), then it refuses the OTP and doesn&#8217;t grand access to the website</li>
</ol>
<p>But now comes the second attack for which I have no mitigation, despite some <a href="http://forum.yubico.com/viewtopic.php?f=6&amp;t=361&amp;p=1608" target="_blank">help from the Yubico forum</a>.</p>
<p><strong>Attack 2:</strong></p>
<p>Assume a website which uses the Yubikey OTP to 1) authenticate users and 2) validate transactions. A classic example of such a site is an online banking site. The user generates an OTP to logon, and then has to generate an OTP for each financial transaction.<br />
A web browser trojan could insert its own transaction like this:</p>
<ol>
<li>I generate an OTP (OTP1) with my Yubikey</li>
<li>The trojan intercepts and stores OTP1 together with a timestamp, doesn&#8217;t send OTP1 to the website, but makes the browser display a fake error message (404, server load too high, Yubikey error, &#8230;) prompting me to generate a second OTP</li>
<li>I&#8217;m fooled by the fake error, and generate a second OTP (OTP2) with my Yubikey</li>
<li>The trojan intercepts and stores OTP2 together with a timestamp, and sends OTP1 to the website</li>
<li>The website grants me access</li>
<li>After an amount of time equal to the delta between the 2 stored timestamps, the trojan starts a transaction (invisible to the user) and uses OTP2 to validate the transaction.</li>
<li>When I start my own transactions, the trojan passes the OTPs on to the website, but delays them with the same timestamp delta to avoid post-exploitation detection.</li>
</ol>
<p>I can&#8217;t device an algorithm to detect this fraud server-side, if the Yubikey is the only authentication and validation mechanism used. This attack would not work with a challenge-response token, because the keys generated by such a token are different for logon and transaction validation. Typically, these tokens generate one type of keys for logon, and another type of keys based on a challenge for transactions. The challenge encodes data of the transaction, so that a particular challenge can&#8217;t be used for another transaction.</p>
<p>One Yubico forum member suggests a type of CAPTCHA to ensure that each submitted OTP is submitted by a human (hence the CAPTCHA), but I don&#8217;t believe this is practical, as malware is able to defeat some CAPTCHAs and humans are unable to solve some CAPTCHAs.</p>
<p>Feel free to post a comment with your migitation suggestions, but please keep them practical <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/1684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/1684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/didierstevens.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/didierstevens.wordpress.com/1684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/didierstevens.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/didierstevens.wordpress.com/1684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/1684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/1684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/1684/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1684&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2009/08/26/yubikey-trojans-and-twitter/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/08/20090825-221451.png" medium="image">
			<media:title type="html">20090825-221451</media:title>
		</media:content>
	</item>
		<item>
		<title>Download My Hakin9 Article &#8220;Anatomy of Malicious PDF Documents&#8221;</title>
		<link>http://blog.didierstevens.com/2009/05/20/download-my-hakin9-article-anatomy-of-malicious-pdf-documents/</link>
		<comments>http://blog.didierstevens.com/2009/05/20/download-my-hakin9-article-anatomy-of-malicious-pdf-documents/#comments</comments>
		<pubDate>Wed, 20 May 2009 18:21:56 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Malware]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1456</guid>
		<description><![CDATA[Hakin9 has released my article &#8220;Anatomy of Malicious PDF Documents&#8221; from their latest issue. Get it here in exchange for an e-mail address.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1456&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hakin9 has released my article &#8220;Anatomy of Malicious PDF Documents&#8221; from their latest issue. Get it <a href="http://hakin9.org/prt/view/pdf-articles.html" target="_blank">here in exchange for an e-mail address</a>.</p>
<p><img class="alignnone size-full wp-image-1457" title="20090520-200713" src="http://didierstevens.files.wordpress.com/2009/05/20090520-200713.png?w=614&#038;h=448" alt="20090520-200713" width="614" height="448" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/1456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/1456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/1456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/1456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/didierstevens.wordpress.com/1456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/didierstevens.wordpress.com/1456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/didierstevens.wordpress.com/1456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/didierstevens.wordpress.com/1456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/1456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/1456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/1456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/1456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/1456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/1456/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1456&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2009/05/20/download-my-hakin9-article-anatomy-of-malicious-pdf-documents/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/05/20090520-200713.png" medium="image">
			<media:title type="html">20090520-200713</media:title>
		</media:content>
	</item>
		<item>
		<title>Malformed PDF Documents</title>
		<link>http://blog.didierstevens.com/2009/05/14/malformed-pdf-documents/</link>
		<comments>http://blog.didierstevens.com/2009/05/14/malformed-pdf-documents/#comments</comments>
		<pubDate>Thu, 14 May 2009 07:55:46 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Malware]]></category>
		<category><![CDATA[My Software]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1416</guid>
		<description><![CDATA[For the sake of this post, I consider a PDF document malformed when it doesn&#8217;t observe the basic structure of a PDF document. I&#8217;ve seen a couple of malicious, malformed PDF documents. The most recent was a malicious swine flu PDF document that contains another, bening, PDF document with information about the swine flu (obtained [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1416&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For the sake of this post, I consider a PDF document malformed when it doesn&#8217;t observe the <a href="http://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/" target="_self">basic structure of a PDF document</a>.</p>
<p>I&#8217;ve seen a couple of malicious, malformed PDF documents. The most recent was a malicious swine flu PDF document that contains another, bening, PDF document with information about the swine flu (obtained from the CDC site). This second PDF document is displayed to mislead the user while the exploit runs.</p>
<p><img class="alignnone size-full wp-image-1418" title="20090513-211945" src="http://didierstevens.files.wordpress.com/2009/05/20090513-211945.png?w=656&#038;h=388" alt="20090513-211945" width="656" height="388" /></p>
<p>This second PDF document is XOR-encoded and appended to the end of the malicious PDF document, making the malicious PDF document malformed (FYI: the PDF file format supports embedded files, but this wasn&#8217;t used here). A PDF reader like Adobe or Foxit has no problems opening this malformed PDF, because it scans a PDF document for the trailer (%%EOF) starting from the end of the document. Everything that follows this trailer and doesn&#8217;t adhere to the PDF syntax is just ignored.</p>
<p><img class="alignnone size-full wp-image-1419" title="20090513-213940" src="http://didierstevens.files.wordpress.com/2009/05/20090513-213940.png?w=503&#038;h=857" alt="20090513-213940" width="503" height="857" /></p>
<p>I&#8217;ve added some new features to my <a href="http://blog.didierstevens.com/programs/pdf-tools/" target="_self">PDF tools</a> to handle malformed PDF documents.</p>
<p><strong>PDFiD</strong></p>
<p>The new version of <a href="http://blog.didierstevens.com/programs/pdf-tools/#pdfid" target="_self">PDFiD</a> has an &#8211;extra option. Like it names imply, use it to add extra analysis data to the PDFiD report. The extra option adds <a href="http://en.wikipedia.org/wiki/Information_entropy" target="_blank">entropy</a> calculations to the report:</p>
<p><img class="alignnone size-full wp-image-1425" title="20090513-220050" src="http://didierstevens.files.wordpress.com/2009/05/20090513-220050.png?w=443&#038;h=77" alt="20090513-220050" width="443" height="77" /></p>
<p>For a normal PDF file, expect the total entropy and the entropy of bytes inside stream objects to be close to the maximum value 8.0. This means that the distribution of byte values is close to random, which is characteristic of compressed and encrypted data.</p>
<p>Outside streams objects, the data appears much less random, and the entropy is much lower, usually around 4.0 or 5.0.</p>
<p>However, for malformed PDF documents, where data is added without using stream objects, the entropy outside stream objects is much higher. Here is the report for the malicious swine flu PDF:</p>
<p><img class="alignnone size-full wp-image-1426" title="20090513-203729" src="http://didierstevens.files.wordpress.com/2009/05/20090513-203729.png?w=430&#038;h=268" alt="20090513-203729" width="430" height="268" /></p>
<p>Another datum added to the report by using the &#8211;extra option is for the end-of-file marker %%EOF.</p>
<p>The &#8220;%%EOF&#8221; line mentions the number of times %%EOF appears in the document (more than once usually indicates <a href="http://blog.didierstevens.com/2008/05/07/solving-a-little-pdf-puzzle/" target="_self">incremental updates</a>). &#8220;After last %%EOF&#8221; counts the number of bytes after the last %%EOF. This value will be not be zero when data has been appended.</p>
<p><strong>pdf-parser</strong></p>
<p>The previous versions of <a href="http://blog.didierstevens.com/programs/pdf-tools/" target="_self">pdf-parser</a> output a lot of &#8220;todo 10&#8243; data (an indication of malformed PDF data) when they parse a malformed PDF document. I&#8217;ve suppresed this behavior, you&#8217;ll need to use option &#8211;verbose to enable it from now on, should you need it. Since I first use PDFiD to check a PDF document before using pdf-parser, I don&#8217;t consider the &#8220;todo&#8221; output relevant anymore, as PDFiDs entropy and %%EOF report will tell me if a PDF document is malformed.</p>
<p><img class="alignnone size-full wp-image-1430" title="20090513-223049" src="http://didierstevens.files.wordpress.com/2009/05/20090513-223049.png?w=436&#038;h=156" alt="20090513-223049" width="436" height="156" /></p>
<p>But the other new option in pdf-parser, &#8211;extract, is more important. Example:</p>
<p>pdf-parser.py &#8211;extract payload.bin malformed.pdf</p>
<p>This option will extract all malformed data from malformed.pdf and write it to file payload.bin, giving you easy access to the embedded payload.</p>
<p><strong>Samples</strong></p>
<p>You can download a normal and malformed Hello World PDF file <a href="http://www.didierstevens.com/files/data/normal-and-malformed-pdf.zip" target="_self">here</a> to get familiarized with my updated tools. 4096 random bytes have been appended to the end of the PDF document to make it malformed.</p>
<p>Here is a last example when the entropy calculation can be handy even if the payload is stored inside a stream object:</p>
<p><img class="alignnone size-full wp-image-1440" title="20090513-203522" src="http://didierstevens.files.wordpress.com/2009/05/20090513-203522.png?w=430&#038;h=268" alt="20090513-203522" width="430" height="268" /></p>
<p>The reason the total entropy and entropy of bytes inside stream objects is very low here, is that this malicious PDF document has a payload with a very long, uncompressed NOP-sled (more than one million times 0&#215;90).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/1416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/1416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/1416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/1416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/didierstevens.wordpress.com/1416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/didierstevens.wordpress.com/1416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/didierstevens.wordpress.com/1416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/didierstevens.wordpress.com/1416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/1416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/1416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/1416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/1416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/1416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/1416/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1416&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2009/05/14/malformed-pdf-documents/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/05/20090513-211945.png" medium="image">
			<media:title type="html">20090513-211945</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/05/20090513-213940.png" medium="image">
			<media:title type="html">20090513-213940</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/05/20090513-220050.png" medium="image">
			<media:title type="html">20090513-220050</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/05/20090513-203729.png" medium="image">
			<media:title type="html">20090513-203729</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/05/20090513-223049.png" medium="image">
			<media:title type="html">20090513-223049</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/05/20090513-203522.png" medium="image">
			<media:title type="html">20090513-203522</media:title>
		</media:content>
	</item>
		<item>
		<title>PDFiD On VirusTotal</title>
		<link>http://blog.didierstevens.com/2009/04/21/pdfid-on-virustotal/</link>
		<comments>http://blog.didierstevens.com/2009/04/21/pdfid-on-virustotal/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 16:59:14 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Malware]]></category>
		<category><![CDATA[My Software]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1349</guid>
		<description><![CDATA[I know my posts here are rather emotionless, and that&#8217;s how I prefer them for this blog. But this time, I&#8217;m very proud and I&#8217;m not hiding it: my PDFiD tool is now running on VirusTotal! Thanks for your work Julio! PDFiD will give you statistics of some very basic elements of the PDF language. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1349&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I know my posts here are rather emotionless, and that&#8217;s how I prefer them for this blog.</p>
<p>But this time, I&#8217;m very proud and I&#8217;m not hiding it: my <a href="http://blog.didierstevens.com/2009/03/31/pdfid/" target="_self">PDFiD tool</a> is now running on <a href="http://blog.hispasec.com/virustotal/44" target="_blank">VirusTotal</a>!</p>
<p>Thanks for your work <a href="http://twitter.com/jcanto" target="_blank">Julio</a>!</p>
<p>PDFiD will give you statistics of some very basic elements of the PDF language. This <a href="http://blog.didierstevens.com/programs/pdf-tools/#pdfid" target="_self">helps you decide if a PDF could be malicious</a> or not.</p>
<p><img class="alignnone size-full wp-image-1350" title="pdfid-virustotal" src="http://didierstevens.files.wordpress.com/2009/04/pdfid-virustotal.png?w=724&#038;h=680" alt="pdfid-virustotal" width="724" height="680" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/1349/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/didierstevens.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/didierstevens.wordpress.com/1349/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/didierstevens.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/didierstevens.wordpress.com/1349/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/didierstevens.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/didierstevens.wordpress.com/1349/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/didierstevens.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/didierstevens.wordpress.com/1349/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/didierstevens.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/didierstevens.wordpress.com/1349/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/didierstevens.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/didierstevens.wordpress.com/1349/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&amp;blog=264765&amp;post=1349&amp;subd=didierstevens&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2009/04/21/pdfid-on-virustotal/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2009/04/pdfid-virustotal.png" medium="image">
			<media:title type="html">pdfid-virustotal</media:title>
		</media:content>
	</item>
	</channel>
</rss>