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

<channel>
	<title>ThreatFire Research Blog &#187; Reversing</title>
	<atom:link href="http://blog.threatfire.com/category/reversing/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.threatfire.com</link>
	<description>ThreatFire™ AntiVirus protects when others can&#039;t</description>
	<lastBuildDate>Mon, 15 Mar 2010 15:00:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Much Tedroo about Nothing, other than &#8220;Viagra Professional&#8221;</title>
		<link>http://blog.threatfire.com/2010/01/much-tedroo-about-nothing-other-than-viagra-professional.html</link>
		<comments>http://blog.threatfire.com/2010/01/much-tedroo-about-nothing-other-than-viagra-professional.html#comments</comments>
		<pubDate>Wed, 20 Jan 2010 00:24:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Commodity Kit]]></category>
		<category><![CDATA[Evasion technique]]></category>
		<category><![CDATA[Exploit]]></category>
		<category><![CDATA[Obfuscation]]></category>
		<category><![CDATA[Reversing]]></category>
		<category><![CDATA[Scams and Monetization]]></category>
		<category><![CDATA[Shellcode]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Trojan]]></category>
		<category><![CDATA[Undetected malware]]></category>
		<category><![CDATA[Unpack]]></category>
		<category><![CDATA[Vulnerability]]></category>

		<guid isPermaLink="false">http://blog.threatfire.com/?p=575</guid>
		<description><![CDATA[In an early-2009 literary flourish we condemned spammers to hell, discussed the Tedroo spambot&#8217;s increased momentum due to the shutdown of other botnets, posted screenshots of the Tedroo spewed pharmaceutical spam and related scam sites, and noted its distribution via malicious pdf files. Tedroo&#8217;s increased presence and its distribution is continuing into 2010. As a matter of fact, while the distributors [...]]]></description>
			<content:encoded><![CDATA[<p>In an <a title="March 2009 Tedroo Post" href="http://blog.threatfire.com/2009/03/much-tedroo-about-nothing.html" target="_blank">early-2009</a> literary flourish we condemned spammers to hell, discussed the Tedroo spambot&#8217;s increased momentum due to the shutdown of other botnets, posted screenshots of the Tedroo spewed pharmaceutical spam and related scam sites, and noted its distribution via malicious pdf files. Tedroo&#8217;s increased presence and its distribution is continuing into 2010. As a matter of fact, while the distributors are relying on users&#8217; delays in updating their vulnerable pdf readers like Acrobat, the distributors are actively maintaining/modifying the bot itself &#8212; AV scanner results on the repacked binaries are very low as the modified variants are newly re-released.</p>
<p>Vulnerable systems with out-of-date Adobe Acrobat installs are the main focus of the attacks involving the Tedroo spambot. The spambot commonly is being distributed via a set of canned attacks using what appears to be a version of the Liberty Exploit kit. The Liberty pack maintains an effective set of Acrobat attacks, and considering the thousands of Acrobat attacks prevented on ThreatFire systems since the beginning of Jan, the attacks themselves are well chosen &#8212; vulnerable versions of Acrobat Reader continue to be readily available, even in this new decade. </p>
<p>Once the malformed pdf&#8217;s shellcode is passed control on a victim system, it attempts to download multiple components from another server. In our samples, a system hosted in China. There are several downloads to choose from on the server. The first of the files is a loader, carrying a packing stub somewhat similar to the recent Bredolab packed malware with an outer layer of encryption on top of a UPX packed inner layer. It drops a dll to an alternate data stream of a random file in the windows or system32 directory. It then registers that ADS in the AppInit_DLLs so that the dll is loaded at startup. The dll is loaded, and maintains a long list of paths and executables. Most are related to security solutions (examples are listed below) and system components. It terminates a group of them immediately. It then adds entries for security software to the Restricted Software Policy list in the registry, an AVKill method that we haven&#8217;t seen fully described as one elsewhere:  HKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Paths\&lt;SID&gt;</p>
<p>C:\Documents and Settings\All Users\Application Data\PC Tools<br />
C:\Program Files\Common Files\PC Tools<br />
C:\Program Files\Kaspersky Lab<br />
C:\Documents and Settings\All Users\Application Data\Kaspersky Lab<br />
C:\Documents and Settings\All Users\Application Data\Kaspersky Lab Setup Files<br />
C:\Program Files\ESET<br />
C:\Program Files\Panda Security<br />
C:\Program Files\Avira<br />
C:\Program Files\Norton AntiVirus<br />
C:\Program Files\Alwil Software<br />
C:\Program Files\Agnitum<br />
C:\Program Files\Symantec</p>
<p>With that undetected (on the day of discovery) component loaded and AV processes killed, the Tedroo spambot is loaded. In the latest loader variants associated with the bot, we observe an interesting entry point with anti-debug and anti-emulator tricks that can be vaguely described as an abuse of <a title="Anti-Unpacking Tricks" href="http://pferrie.tripod.com/papers/unpackers.pdf" target="_blank">&#8220;Modern&#8221; CPU Instructions</a>. In this case, the packer implements an unexpected x86 VMX instruction &#8212; VMLAUNCH. Versions of reverser-friendly Ollydbg decode it to &#8220;sgdt edx&#8221; and cannot handle the instruction at runtime, reporting to the user that it does not know how to step into it, while some vendor emulators also have a difficult time decoding it. </p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-593" style="border: black 1px solid;" title="Olly_sgdt" src="http://blog.threatfire.com/wp-content/uploads/2010/01/Olly_sgdt.png" alt="Olly sgdt" width="418" height="154" /></p>
<p>Windbg, on the other hand, decodes the vmlaunch command properly as specified by the Intel Reference material, seen below&#8230;</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-594" style="border: black 1px solid;" title="Windbg vmlaunch" src="http://blog.threatfire.com/wp-content/uploads/2010/01/Windbg_vmlaunch.png" alt="Windbg vmlaunch" width="384" height="146" /></p>
<p>Following the malware entrypoint, a windbg deadlisting shows &#8220;mov ecx, 0&#215;4fffh&#8221;, followed by the vmlaunch. On processors we observed, this setup thows an exception for an Illegal Instruction with ecx = 0&#215;4fffh. The writers of this trick, however, took it upon themselves to force the code to trigger this exception 20,479 times (the decimal representation of 0&#215;4fffh). It&#8217;s implemented by registering an SEH pointer to code that simply stores the counter, decrements it, and returns back into the ExcecuteHandler2 function within ntdll that&#8217;s within the standard flow of Windows exception handling. Each time, the exception &#8220;handler&#8221; code returns back into RtlDispatchException and eventually NtContinue, where CONTEXT.eip takes control directly back to the Illegal Instruction location, triggering yet another exception. When the counter finally is decremented to zero, the unpacking stub then modifies CONTEXT.eip on the stack so that flow passes out of this exception loop at ntdll.NtContinue and further into its unpacking stub. Tricky stuff indeed.</p>
<div id="attachment_595" class="wp-caption aligncenter" style="width: 526px"><img class="size-full wp-image-595  " style="border: black 1px solid;" title="decrement_CONTEXT_struct" src="http://blog.threatfire.com/wp-content/uploads/2010/01/decrement_CONTEXT_struct.png" alt="Decrement ecx value within the process CONTEXT struct" width="516" height="394" /><p class="wp-caption-text">Decrement ecx value within the process CONTEXT struct</p></div>
<p>Continuing on its code path, the code first checks if it&#8217;s been run before on the victim system, looking for registry values it creates:</p>
<p>HKCU  &#8220;Software\Microsoft\Windows\CurrentVersion\Run&#8221;<br />
 HKCU  &#8220;Software\Microsoft\Windows\CurrentVersion\policies\Explorer\Run&#8221;<br />
 HKLM  &#8220;Software\Microsoft\Windows\CurrentVersion\Run&#8221;<br />
 HKLM  &#8220;Software\Microsoft\Windows\CurrentVersion\policies\Explorer\Run&#8221;<br />
    value: userini path: c:\windows\explorer.exe:userini.exe</p>
<p>It copies itself as an alternate data stream of explorer.exe<br />
     c:\windows\explorer.exe:userini.exe</p>
<p>It sets this ADS to load at startup in the various autorun registry entries listed above, and then runs thru a series of sleeps/gettickcout to delay activity and cloak itself.</p>
<p> After a long wait, the spambot calls InternetConnectA and HttpOpenRequestA to contact its hardcoded server and retrieves more spam templates. The resulting spam recently has all led to www . pharm directbook .com, another &#8221;Canadian Pharmacy #1 Internet Online Drugstore&#8221;. This behavior is similar to that noted in our past <a title="March 2009 Tedroo Post" href="http://blog.threatfire.com/2009/03/much-tedroo-about-nothing.html" target="_blank">post</a>. The sites have been run for years by a group otherwise known as &#8220;<a title="Glavmed Canadian Pharmacy" href="http://spamtrackers.eu/wiki/index.php?title=Canadian_Pharmacy" target="_blank">Glavmed</a>&#8220;, selling knockoff, illegal pills with shifty names like &#8220;Viagra Professional&#8221;&#8230;</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-596" style="border: black 1px solid;" title="www .pharmadirectbook. com" src="http://blog.threatfire.com/wp-content/uploads/2010/01/www-.pharmadirectbook.-com.png" alt="www .pharmadirectbook. com" width="585" height="426" /></p>
<p> </p>
<p>In spite of the significant shutdowns over the past year, spam like Tedroo&#8217;s continues to mess it all up on the net. Don John couldn&#8217;t have tried to mess up a good thing any better himself.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threatfire.com/2010/01/much-tedroo-about-nothing-other-than-viagra-professional.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>$4.5 million for Unencrypted Communications</title>
		<link>http://blog.threatfire.com/2009/12/4-5-million-for-unencrypted-communications.html</link>
		<comments>http://blog.threatfire.com/2009/12/4-5-million-for-unencrypted-communications.html#comments</comments>
		<pubDate>Thu, 17 Dec 2009 21:40:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Government and Cybersecurity]]></category>
		<category><![CDATA[Reversing]]></category>

		<guid isPermaLink="false">http://blog.threatfire.com/?p=537</guid>
		<description><![CDATA[Sometimes gadgets are great fun and security isn&#8217;t a critical concern, but when price tags on military technology are upwards of several million dollars, it&#8217;s always a surprise to read about potential errors in design. Apparently, video feed communications are made in the plain from U.S. military drones, resulting in an easy way to intercept these communications [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes gadgets are great fun and security isn&#8217;t a critical concern, but when price tags on military technology are upwards of several million dollars, it&#8217;s always a surprise to read about potential errors in design. Apparently, video feed communications are made in the plain from U.S. military drones, resulting in an easy way to <a title="WSJ Drone Video Feeds" href="http://online.wsj.com/article/SB126102247889095011.html" target="_blank">intercept these communications</a> &#8211; a $26 software package called &#8220;SkyGrabber&#8221; (whose Russian distribution site currently is down, possibly for good). Skygrabber can be used to hijack and intercept video feeds from satellites.</p>
<p>Not exactly &#8220;hacked drones&#8221;, but poorly secured at the least.</p>
<p> </p>
<div id="attachment_538" class="wp-caption aligncenter" style="width: 584px"><img class="size-full wp-image-538" title="Skygrabber" src="http://blog.threatfire.com/wp-content/uploads/2009/12/Skygrabber.png" alt="SkyGrabber by SkySoftware" width="574" height="529" /><p class="wp-caption-text">SkyGrabber by SkySoftware</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.threatfire.com/2009/12/4-5-million-for-unencrypted-communications.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zbot: Not Your Typical Malware</title>
		<link>http://blog.threatfire.com/2009/11/zbot-not-your-typical-malware.html</link>
		<comments>http://blog.threatfire.com/2009/11/zbot-not-your-typical-malware.html#comments</comments>
		<pubDate>Wed, 04 Nov 2009 17:02:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bot]]></category>
		<category><![CDATA[Bredolab]]></category>
		<category><![CDATA[Evasion technique]]></category>
		<category><![CDATA[Password stealing]]></category>
		<category><![CDATA[Reversing]]></category>
		<category><![CDATA[ZBot]]></category>

		<guid isPermaLink="false">http://blog.threatfire.com/?p=490</guid>
		<description><![CDATA[The cybercriminal gangs developing and distributing Zbot have been highly active recently, as seen here and here, so let&#8217;s dig into the code again.
On a day to day basis, malware researchers locate a sample of interest, which can seem similar to isolating a grain of sand on a beach, and investigate it in the lab.  [...]]]></description>
			<content:encoded><![CDATA[<p>The cybercriminal gangs developing and distributing Zbot have been highly active recently, as seen <a title="Facebook Bredolab Zbot Spam" href="http://blog.threatfire.com/2009/10/facebook-password-reset-confirmation-spam-bredolab-zbot-adware.html" target="_blank">here</a> and <a title="Zbot Victim Locations Yesterday" href="http://blog.threatfire.com/2009/10/who-fell-for-the-facebook-password-reset-scam-yesterday.html" target="_blank">here</a>, so let&#8217;s dig into the code again.</p>
<p>On a day to day basis, malware researchers locate a sample of interest, which can seem similar to isolating a grain of sand on a beach, and investigate it in the lab.  Some tools are utilized to capture information generated by the sample which typically include changes to what Windows runs at startup, browser default page settings, newly installed programs or libraries, generated network traffic, and, if neccesary, unpacked/decrypted copies of the sample.  With most samples, this information collection process is straight forward, but Zbot is smarter than your average malware.</p>
<p>These tools are very effective for analysis because it can be easy to determine which changes came from which programs.  After unpacking a regular malware sample, it is possible to control it using a debugger and walk through interesting sections of code to see how it works.  This ease of analysis is where Zbot separates itself from typical malware.</p>
<p>The first action recent zbot variants perform is to unpack themselves (sdra64.exe, <a title="Recent Zbot" href="http://www.threatexpert.com/report.aspx?md5=F836BA2BA0CEE2B8F0CFEE31BB535515" target="_blank">F836BA2BA0CEE2B8F0CFEE31BB535515</a>), and instead of performing any immediate botnet-related tasks, it injects this unpacked code into the winlogon.exe process and terminates itself.</p>
<p>This injection is interesting for two reasons. First, the winlogon process is very sensitive.  For instance, asking a tool like process explorer to terminate the winlogon process can cause a blue screen of death.  Even if an anti-virus scanner detects this payload in memory, it is tough remove because it has to be careful not to take down the winlogon process with it. So the selection of this process target in particular was carefully done.  Secondly, the payload of this injection requires running inside the actual winlogon process for initial activation.  The payload attempts to piggy-back off of a &#8220;non-IO worker&#8221; thread running uniquely within the winlogon process via the CreateTimerQueueTimer() function. If the payload is artificially injected into another process, the payload will not exhibit its malicious behavior. This runtime requirement makes it difficult to emulate the payload&#8217;s environment for research purposes.</p>
<p>A portion of the payload does not only execute from within the winlogon process, however. The activated code running within winlogon (described above) also injects a copy of itself into the first real svchost.exe process that it finds.  It uses the same thread piggy-backing techniques employed in the winlogon process.  One of the first tasks that this newly injected payload performs is the downloading of the encrypted configuration file.  Later, after this configuration fetching task is complete, it injects this same payload into all other processes, which then engage API hooks to intercept the victims&#8217; online banking web traffic.</p>
<p>These injection and information stealing tasks are all coordinated with the payload residing in the winlogon process via named pipe inter-process communication mechanism.  The pipe is typically accessed via the file name &#8220;\\.\pipe\_AVIRA_2108&#8243; and uses a mutex with the same name (_AVIRA_2108) to guard against simultaneous access to this resource by multiple payloads in other processes.  This named pipe is watched for a series of number commands which perform particular actions, some of which are listed below:</p>
<p>05: opens local.ds<br />
06: closes local.ds<br />
07: opens user.ds<br />
08: closes user.ds<br />
09: closes sdra64.exe<br />
10: opens sdra64.exe<br />
14: intentionally causes a NULL pointer dereference (crashes the winlogon process, resulting in a BSOD)</p>
<p>In the screenshot provided below, we can see a piece of code that executes immediately after downloading the encrypted configuration data.  It sends the command &#8220;6&#8243; to the named pipe which tells the winlogon payload to close the &#8220;local.ds&#8221; data file, which resides in the %SYSTEM%\lowsec directory.  It then writes a fresh &#8220;local.ds&#8221; file to this directory, and instructs the winlogon payload to re-open this data file with the &#8220;5&#8243; command.</p>
<p style="text-align: center;">
<div id="attachment_491" class="wp-caption aligncenter" style="width: 411px"><img class="size-full wp-image-491  " style="border: 1px solid black;" title="Svchost Example" src="http://blog.threatfire.com/wp-content/uploads/2009/11/svchost_example.png" alt="Svchost Example Zbot Command" width="401" height="465" /><p class="wp-caption-text">Svchost Example Zbot Commands</p></div>
<p>Separating the malware execution into code chunks that reside in different processes makes it difficult to analyze what this bot actually does. With each chunk camouflaged inside a real process, the separation also makes it difficult to properly clean off your system once infected, due to the infection being spread all over legitimate processes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threatfire.com/2009/11/zbot-not-your-typical-malware.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Streamviewer&#8217;s .gif Images Embedded with Encrypted Malware</title>
		<link>http://blog.threatfire.com/2009/06/streamviewers-gif-images-embedded-with-encrypted-malware.html</link>
		<comments>http://blog.threatfire.com/2009/06/streamviewers-gif-images-embedded-with-encrypted-malware.html#comments</comments>
		<pubDate>Tue, 16 Jun 2009 16:15:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Embedded trojan]]></category>
		<category><![CDATA[Evasion technique]]></category>
		<category><![CDATA[Obfuscation]]></category>
		<category><![CDATA[Reversing]]></category>

		<guid isPermaLink="false">http://newblog.threatfire.com/2009/06/streamviewers-gif-images-embedded-with-encrypted-malware.html</guid>
		<description><![CDATA[Our post last week warned on a group moving their FakeAv-Koobface-Vundo-Spyware  &#8220;softwarefortubeview&#8221; phony codec downloader to a new home last week, and this week, we are examining a similar scheme that downloads, surprise, surprise, Koobface, FakeAv prompting BHOs like iehelper.dll&#8217;s prompts for &#8220;Antivirus system PRO&#8221;, performs some level of click fraud, installs podmena.dll and [...]]]></description>
			<content:encoded><![CDATA[<p>Our <a href="http://blog.threatfire.com/2009/06/softwarefortubeview-moves-to-new-home.html" target="_blank">post</a> last week warned on a group moving their FakeAv-Koobface-Vundo-Spyware  &#8220;softwarefortubeview&#8221; phony codec downloader to a new home last week, and this week, we are examining a similar scheme that downloads, surprise, surprise, Koobface, FakeAv prompting BHOs like iehelper.dll&#8217;s prompts for &#8220;Antivirus system PRO&#8221;, performs some level of click fraud, installs podmena.dll and podmena.sys&#8230;this one also includes a nice ftp credential stealing component, stealing passwords from FileZilla, Coffee Cup, FTP Control, CuteFtp and more.</p>
<p>Streamviewer.40050.exe (and other streamviewer + random version names) has been flying off the shelf at a server on 64.20.38.171. That ip hosts multiple badware domains:<br />go-exe-go.com<br />reverse38-170.reserver.ru<br />gruzzilla.com<br />hot-exe-area.com<br />last-exe-portal.com<br />main-exe-home.com<br />super-exe-home.com</p>
<p>Interesting about the downloader is the way in which additional malware is downloaded and dropped by this phony codec. It contacts a set of servers with encoded data about the system.<br />reportsystem32.com  (216.240.146.119)<br />terradataweb.com  (66.199.229.229)<br />dvdisorapid.com  (64.27.5.202)<br />superimagesart.com  (95.211.8.61)<br />thenewpic.com  (66.148.80.4)<span style="text-decoration: underline;"></p>
<p></span>It then pulls out data from a decoded xml file containing a list of urls to contact for a variety of .gif images (titem.gif, qwerce.gif, 217.gif, etc).<br />superimagesart.com<br />thenewpic.com<br />stockshopimages.com<br />imagesoffline.com<br />theimagesphoto.com<br />imageheadphones.com</p>
<p>At the time of download, gif viewers will display titem.gif with a political message about french politician Christine Boutin:</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YaXoRZbsXc4/SjfzGHimxwI/AAAAAAAAA24/GP9nW_h1Ey8/s1600-h/DEVENEZSEROPO_2.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 176px; height: 102px;" src="http://4.bp.blogspot.com/_YaXoRZbsXc4/SjfzGHimxwI/AAAAAAAAA24/GP9nW_h1Ey8/s320/DEVENEZSEROPO_2.png" alt="" id="BLOGGER_PHOTO_ID_5348010368954713858" border="0" /></a></p>
<p>Know that we do not endorse any political message with this post. But this gif image is no ordinary image. If it were, its size might reach 35 kb at the most. Embedded in the image is the encrypted payload, bloating the image out over a couple hundred kilobytes (~270 kb).<br />The downloader gathers the response information from the previous sites to find more urls to contact and finds its decryption key. It then uses its key to decrypt the code embedded within downloaded gifs.</p>
<p>Much like the recent (and possibly related) beladen downloader and the older Tibs downloaders, this malware delivery embedded image scheme attempts to evade gateway appliance based protection and optimized AV scans with gif-based encrypted payloads. It stymies automated web crawling based research efforts. No longer are we seeing simple xor decoding schemes with visible PE headers in downloaded image files. The encryption implemented for this attack was another previously commerical and proprietary encryption algorithm.<br />ThreatFire is preventing this downloader in fairly high prevalence.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threatfire.com/2009/06/streamviewers-gif-images-embedded-with-encrypted-malware.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Recipe for Stolen Biscuits</title>
		<link>http://blog.threatfire.com/2009/04/a-recipe-for-stolen-biscuits.html</link>
		<comments>http://blog.threatfire.com/2009/04/a-recipe-for-stolen-biscuits.html#comments</comments>
		<pubDate>Thu, 30 Apr 2009 23:03:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Reversing]]></category>
		<category><![CDATA[Software Release]]></category>
		<category><![CDATA[hacking tool]]></category>

		<guid isPermaLink="false">http://newblog.threatfire.com/2009/04/a-recipe-for-stolen-biscuits/</guid>
		<description><![CDATA[As Koobface has proven, stealing biscuits can get malware distributors a long ways.
Another technique and tool has just been posted to abuse stolen biscuits, much like the Koobface worm, and it supports changing a wall without the password. The author claims to have just completed &#8220;FBController &#8211; The Ultimate Utility to Control Facebook accounts without [...]]]></description>
			<content:encoded><![CDATA[<p>As Koobface has proven, stealing biscuits can get malware distributors a long ways.</p>
<p>Another technique and tool has just been posted to abuse stolen biscuits, much like the Koobface worm, and it supports changing a wall without the password. The author claims to have just completed &#8220;FBController &#8211; The Ultimate Utility to Control Facebook accounts without the Password&#8221;.</p>
<p>Be aware that downloading and executing code from untrusted sources is always a problem, and please do not fall for the ongoing phony video codec or <a href="http://blog.threatfire.com/2008/12/koobface-on-loose-as-flashupdateexe.html" target="_blank">software update</a> ploys.</p>
<p>Update &#8211; a cnet writer <a href="http://news.cnet.com/8301-1009_3-10234720-83.html?part=rss&amp;subj=news&amp;tag=2547-1_3-0-20" target="_blank">finds the techniques interesting</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threatfire.com/2009/04/a-recipe-for-stolen-biscuits.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Koobface Anti-Emulation Time Lock Trick</title>
		<link>http://blog.threatfire.com/2008/12/koobface-anti-emulation-time-lock-trick.html</link>
		<comments>http://blog.threatfire.com/2008/12/koobface-anti-emulation-time-lock-trick.html#comments</comments>
		<pubDate>Mon, 08 Dec 2008 19:55:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Evasion technique]]></category>
		<category><![CDATA[Koobface]]></category>
		<category><![CDATA[Reversing]]></category>
		<category><![CDATA[Undetected malware]]></category>
		<category><![CDATA[Worm]]></category>

		<guid isPermaLink="false">http://newblog.threatfire.com/2008/12/koobface-anti-emulation-time-lock-trick/</guid>
		<description><![CDATA[Koobface contains a lot of interesting tricks, components, and schemes to write about. In the interest of keeping this post somewhat brief, we&#8217;ll focus on an anti-emulation technique that may be keeping the AV detection rates low for repacked and redistributed Koobface executables, while at the same time providing vendors with a false or confused [...]]]></description>
			<content:encoded><![CDATA[<p>Koobface contains a lot of interesting tricks, components, and schemes to write about. In the interest of keeping this post somewhat brief, we&#8217;ll focus on an anti-emulation technique that may be keeping the AV detection rates low for repacked and redistributed Koobface executables, while at the same time providing vendors with a false or confused sense of effectiveness.</p>
<p>At worm runtime in the lab, we observed that one unpacked loop in particular was taking excessively long to execute prior to any identifiable malicious behavior from the worm, and this same loop is present in four of the five binaries that the Koobface flash_update component is dropping. So we took another look.</p>
<p>Within the common loop, GetTickCount() was called and bytes were moved and compared, but it seemed that no real decryption was occuring. Persistent data was not rewritten or modified. This sort of activity is suggestive of something called a <a href="http://www.datasecurity-event.com/uploads/timelock.pdf" target="_blank">time-lock</a>: &#8220;A common anti-emulation trick is to introduce loops that take a relatively long time to compute. The loop may in fact take so long to emulate that the antivirus scanner gives up.&#8221;<br />However, what appears to be a Koobface time lock implementation is very simple, much more simple in its implementation than the ones formalized in the paper linked to above. But the concept is just as interesting in that it implements a variable length lock duration at runtime. The amount of time dedicated to spinning through the loop is in part dependent on the amount of time that the system has been running. And yet, the technique&#8217;s usage is uncommon in that there are not two timing calls and a hardcoded value to compare against to detect emulation. Instead, this unusual variability is due to its unique use of a singular GetTickCount() call and a comparison to a counter value that is also being incremented.</p>
<p>Here is the loop that we were interested in, as viewed through a debugger:</p>
<p>00401712  |> /83C9 FF           /or      ecx, FFFFFFFF<br />00401715  |. |33C0              |xor     eax, eax<br />00401717  |. |8D7C24 10         |lea     edi, dword ptr ss:[esp+10]<br />0040171B  |. |F2:AE             |repne   scas byte ptr es:[edi]<br />0040171D  |. |F7D1              |not     ecx<br />0040171F  |. |49                |dec     ecx<br />00401720  |. |3BF1              |cmp     esi, ecx<br />00401722  |. |73 18             |jnb     short DA3FE57A.0040173C<br />00401724  |. |8BC6              |mov     eax, esi<br />00401726  |. |99                |cdq<br />00401727  |. |B9 05000000       |mov     ecx, 5<br />0040172C  |. |F7F9              |idiv    ecx<br />0040172E  |. |8A4C34 10         |mov     cl, byte ptr ss:[esp+esi+10]<br />00401732  |. |B0 FB             |mov     al, 0FB<br />00401734  |. |2AC2              |sub     al, dl<br />00401736  |. |02C8              |add     cl, al<br />00401738  |. |884C34 10         |mov     byte ptr ss:[esp+esi+10], cl<br />0040173C  |> |46                |<span style="font-weight: bold;">inc     esi</span><br />0040173D  |. |FFD3              |call    near ebx    ;  <span style="font-weight: bold;">kernel32.GetTickCount</span><br />0040173F  |. |83C9 FF           |or      ecx, FFFFFFFF<br />00401742  |. |8BD0              |<span style="font-weight: bold;">mov     edx, eax</span><br />00401744  |. |33C0              |xor     eax, eax<br />00401746  |. |8D7C24 10         |lea     edi, dword ptr ss:[esp+10]<br />0040174A  |. |F2:AE             |repne   scas byte ptr es:[edi]<br />0040174C  |. |F7D1              |not     ecx<br />0040174E  |. |49                |dec     ecx<br />0040174F  |. |03D1              |<span style="font-weight: bold;">add     edx, ecx</span><br />00401751  |. |3BF2              |<span style="font-weight: bold;">cmp     esi, edx</span><br />00401753  |.^\72 BD             \<span style="font-weight: bold;">jb      short DA3FE57A.00401712</span></p>
<p>When the first location is jumped into, esi is already set to &#8220;0&#8243;.<br />It&#8217;s a nice loop &#8212; the last insruction takes you back to the first almost every time, but the loop is executed an unpredicatable number of times. Mostly all of the instructions within the loop are arbitrary in that they do not modify any data. For example, the &#8220;repne scas byte ptr es:[edi]&#8221; instructions simply read through a hard-coded string, looking for the null byte at the end of the string. That same string is read again and again, almost like a strlen() that doesn&#8217;t return a value:<br />void strlen (const char * str) {<br />const char *pstr = str;<br />while( *pstr++ ) ;<br />}<br />When GetTickCount is called, it returns the number of milliseconds that have elapsed since the system was started. Because this value changes on every system it is run and every time it is called, the duration of the time lock will be unpredictable. When edx (our TickCount) is sub&#8217;d from esi, the CF flag is set to &#8220;1&#8243;, and the jb instruction sees the value as &#8220;below&#8221;, so we jump back to the first instruction location. Every loop execution, both the esi and edx values are incremented and then compared. When they are equal, the loop is exited.</p>
<p>Therefore, the effect is that emulators may &#8220;give up&#8221; on this executable due to the loop, but the behavior is somewhat unpredictable. Sometimes, the lock duration will be short enough for an emulator to hang on and perform an erratic detection. This erratic detection may cause confusion for AV scanner vendors relying on emulation capabilities and create a false sense of effective detection.</p>
<p>Finally, it is interesting that the &#8220;worm&#8221; components and droppers contain this same loop, as though it were a macro simply copied and pasted into the source for the various executables. The final and money making adware payload, &#8220;tinyproxy.exe&#8221;, did not contain the loop. The adware/spyware component most likely was obtained from another party.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threatfire.com/2008/12/koobface-anti-emulation-time-lock-trick.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Race2Zero Results and Comments</title>
		<link>http://blog.threatfire.com/2008/08/race2zero-results-and-comments.html</link>
		<comments>http://blog.threatfire.com/2008/08/race2zero-results-and-comments.html#comments</comments>
		<pubDate>Tue, 12 Aug 2008 00:29:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AntiMalware Solutions]]></category>
		<category><![CDATA[Defcon]]></category>
		<category><![CDATA[Evasion technique]]></category>
		<category><![CDATA[Obfuscation]]></category>
		<category><![CDATA[Reversing]]></category>
		<category><![CDATA[Undetected malware]]></category>
		<category><![CDATA[hacking tool]]></category>

		<guid isPermaLink="false">http://newblog.threatfire.com/2008/08/race2zero-results-and-comments/</guid>
		<description><![CDATA[The Race2Zero contest at Defcon added a new voice, the voice of an eager young student from New Zealand, to the conversation regarding the problems of Anti-Virus scanner evasion that has been going on for years. At the base of the effort, the organizer wanted to demonstrate the ease with which AV scanners can be [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.racetozero.net/motivations.html" target="_blank">Race2Zero</a> contest at Defcon added a new voice, the voice of an eager young student from New Zealand, to the conversation regarding the problems of Anti-Virus scanner evasion that has been going on for years. At the base of the effort, the organizer wanted to demonstrate the ease with which AV scanners can be evaded by tweaking already compiled malware and reveal some of the more sophisticated methods that can be used for evasion. It was unclear if he had any experience or skills in the techniques himself. However, by organizing this event, he claimed that as a researcher, he would be able to somehow quantify efforts and results to help with cost/benefit analysis of software defense: &#8220;Quantifying how much an attacker must invest to circumvent the defences that a defender has invested in is a key part of being able to evaluate where best to place security spend to gain the most benefit. Race to Zero is one way in which we as researchers can proactively answer these and other questions, while at the same time challenging some of the best minds available in the security community.&#8221;</p>
<p>He wanted to demonstrate AV shortcomings by providing competing teams with a set of AV-scanner detected malware samples, one after another. The samples would be tweaked by the participants in a way so that the core activity of the software would not be changed but the file would evade on-demand file scanners and remain undetected by 32 scanners. Eventually, one team would race to &#8220;zero detection&#8221; on all ten samples first. And he wanted it to be fun &#8212; &#8220;Reverse engineering and code analysis is fun.&#8221;</p>
<p>What he succeeded in demonstrating, from what I could tell, is that there are high levels of complexity involved in the setup, preparation, support and understanding of his &#8220;competition&#8221;.<br />Understanding malware, an environment for working with it, the variety of antivirus products and their uses, PE files, assembly level programming, network traffic, exploits and their delivery vectors, and the relevance of each to AV scanner effectiveness, are all beefy topics that the organizers and their helpers didn&#8217;t seem to either fully grasp, have the resources to adequately deal with, or both.<br />Running a handful of command line scanners across a handful of questionably selected (a MS-DOS variant, several widespread worms from several years ago, exploits against Word 2000 without any copies of Word 2000 to test against, etc) malware samples to be modified doesn&#8217;t really provide the amount of quantifiable results to make large claims for a cost/benefit analysis of security defense and the evaluation of AV scanners. Professional AV test and review groups themselves have a difficult enough time carrying out this sort of evaluation effort with hundreds and sometimes tens of thousands of samples with days or weeks of paid and competent effort, often without the limits of a group of volunteer organizers and speakers attempting the project.</p>
<p>While the subject of the AV evasion black market is always an interesting one for those pushing a behavioral-based technology like ThreatFire, this first &#8220;competition&#8221; didn&#8217;t seem to live up to the attention that it received (as the organizer seemed to expect). We&#8217;ll wait for a technical paper that was proposed to be delivered:<br />&#8220;We hope to be able to give a presentation of findings from Race to Zero at DefCon, a paper has been submitted but a decision on it has not yet been made. Following the contest, when further analysis has been conducted, a technical paper will be publicly released.&#8221;<br />Maybe the public paper or an event next year will bring more interesting results with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threatfire.com/2008/08/race2zero-results-and-comments.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Black Hat 2008</title>
		<link>http://blog.threatfire.com/2008/08/black-hat-2008.html</link>
		<comments>http://blog.threatfire.com/2008/08/black-hat-2008.html#comments</comments>
		<pubDate>Wed, 06 Aug 2008 22:58:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blackhat]]></category>
		<category><![CDATA[Bot]]></category>
		<category><![CDATA[Reversing]]></category>
		<category><![CDATA[Storm]]></category>
		<category><![CDATA[Virus Bulletin]]></category>

		<guid isPermaLink="false">http://newblog.threatfire.com/2008/08/black-hat-2008/</guid>
		<description><![CDATA[Black Hat Las Vegas 2008. If the latest Dns exploit research performed in part by Dan Kaminsky comes up in casual conversation for you, then these are your people. The ~4,500 nameless researchers and geeks at this conference rush into Ceasar&#8217;s Palace event halls to hear about recent software security research and reports.Jeff Moss kicked [...]]]></description>
			<content:encoded><![CDATA[<p>Black Hat Las Vegas 2008. If the latest Dns exploit research performed in part by Dan Kaminsky comes up in casual conversation for you, then these are your people. The ~4,500 nameless researchers and geeks at this conference rush into Ceasar&#8217;s Palace event halls to hear about recent software security research and reports.<br />Jeff Moss kicked off the con this morning with a mention that the generous BH sponsors step up to defray rising costs and not to monopolize discussion as a form of advertisement. I&#8217;m witnessing that promise realized right now, as Tom Stracener slams one of their very generous sponsors in his presentation. The knowledge is not censored here and flows freely.</p>
<p>One of the topics near and dear to our PC Tools hearts happened to be the focus of Joe Stewart&#8217;s presentation on reversing Storm titled &#8220;Protocols and Encryption of the Storm Botnet&#8221;. It was somewhat of a Virus Bulletin style presentation, but he added a lot of information regarding offensive techniques for joining the Bot network, disrupting it, and details of his findings about the bot network&#8217;s communications. It was great stuff.</p>
<p>Also interesting was Jonathan Rom&#8217;s talk on implementing a javascript based persistent rootkit. While it was somewhat stealth, I don&#8217;t know that it classified as a rootkit. However, the malcode was fairly well hidden in the plain text file he discussed. And while the design flaw that the code is dependent on for functionality has been patched in Firefox 3 and wasn&#8217;t as platform dependent as the intro suggested, the idea was well implemented against XP systems in their demo.</p>
<p>Off to another talk on the development and functionality of dns tunneling reverse shellcode.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threatfire.com/2008/08/black-hat-2008.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Will the Real Virtumonde Please Stand Up?</title>
		<link>http://blog.threatfire.com/2008/06/will-the-real-virtumonde-please-stand-up.html</link>
		<comments>http://blog.threatfire.com/2008/06/will-the-real-virtumonde-please-stand-up.html#comments</comments>
		<pubDate>Tue, 17 Jun 2008 20:26:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Adware]]></category>
		<category><![CDATA[Obfuscation]]></category>
		<category><![CDATA[Reversing]]></category>
		<category><![CDATA[Undetected malware]]></category>
		<category><![CDATA[Vundo]]></category>

		<guid isPermaLink="false">http://newblog.threatfire.com/2008/06/will-the-real-virtumonde-please-stand-up/</guid>
		<description><![CDATA[It seems that quite a bit of malware is being classified as Vundo (Virtumonde) these days.  With the volume of malware currently being distributed in dynamic link library form, it is not always easy to differentiate one from another.  Frequently these modules are statically linked with C and C++ runtimes, compression, and GUI [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that quite a bit of malware is being classified as Vundo (Virtumonde) these days.  With the volume of malware currently being distributed in dynamic link library form, it is not always easy to differentiate one from another.  Frequently these modules are statically linked with C and C++ runtimes, compression, and GUI libraries, which can slow analysis down.  In addition to all this embedded library code, Vundo&#8217;s code seems to be under constant development and is updated to fix bugs, add a new piece of functionality, or add more randomization to prevent signature recognition quite frequently.</p>
<p>However, there is one construct that the developers behind the code seem to enjoy using.  In almost every place where an event and sometimes registry value names are created, the name is generated by a function which is similar between variants.</p>
<p>The function derives this name from an attribute of the infected computer.  The attribute is the serial number assigned to the &#8220;C:&#8221; drive volume when it was last formatted by the operating system.  Then, the serial number is randomized by one or more bitwise cpu instructions against a number selected by the programmer.  The result of these operations is converted into a string and returned for use.</p>
<p>The recognition of this function can help positively ID a Vundo sample.  The source code representation of this function would look similar to this:</p>
<pre>#include &lt;windows.h&gt;#define arbitrary_vundo_number 0xFDEC

int generate_number(char *output){    int return_value;    DWORD volume_serial_number;

    return_value = GetVolumeInformation("c:\\", NULL, 0,        &amp;volume_serial_number, NULL, NULL, NULL, 0);

    volume_serial_number ^= arbitrary_vundo_number;

    return wsprintf(output, "%08x", volume_serial_number);}</pre>
<p>Actual Vundo assembly code looks like this:
<pre>push    esi             ; nFileSystemNameSizepush    esi             ; lpFileSystemNameBufferpush    esi             ; lpFileSystemFlagspush    esi             ; lpMaximumComponentLengthlea     eax, [ebp+VolumeSerialNumber]push    eax             ; lpVolumeSerialNumberpush    esi             ; nVolumeNameSizepush    esi             ; lpVolumeNameBufferpush    offset RootPathName ; "c:\\"mov     [ebp+VolumeSerialNumber], 123hcall    ds:GetVolumeInformationAxor     [ebp+VolumeSerialNumber], 34D2121hpush    [ebp+VolumeSerialNumber]push    offset a08x     ; "%08x"push    [ebp+arg_0]     ; LPSTRcall    ds:wsprintfAadd     esp, 0Chpop     esileaveretn</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.threatfire.com/2008/06/will-the-real-virtumonde-please-stand-up.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vundo Variant Appropriates Microsoft Research Source Code</title>
		<link>http://blog.threatfire.com/2008/06/vundo-variant-appropriates-microsoft-research-source-code.html</link>
		<comments>http://blog.threatfire.com/2008/06/vundo-variant-appropriates-microsoft-research-source-code.html#comments</comments>
		<pubDate>Tue, 10 Jun 2008 22:54:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Evasion technique]]></category>
		<category><![CDATA[Reversing]]></category>
		<category><![CDATA[Vundo]]></category>

		<guid isPermaLink="false">http://newblog.threatfire.com/2008/06/vundo-variant-appropriates-microsoft-research-source-code/</guid>
		<description><![CDATA[For the past several years, the Vundo family (also known as Virtumonde) of malware appeared high on AV vendors&#8217; prevalence lists &#8212; this stuff is everywhere. To get there, the malware employs an aggressive set of tactics over the course of its distribution to evade AV and anti-spyware solutions. A close examination exposes an interesting [...]]]></description>
			<content:encoded><![CDATA[<p>For the past several years, the <a href="http://www.threatexpert.com/reports.aspx?find=vundo+virtumonde+monder&amp;x=0&amp;y=0" target="_blank">Vundo family</a> (also known as Virtumonde) of malware appeared high on AV vendors&#8217; prevalence lists &#8212; this stuff is everywhere. To get there, the malware employs an aggressive set of tactics over the course of its distribution to evade AV and anti-spyware solutions. A close examination exposes an interesting observation that some of its user-mode rootkit tactics use the Microsoft Research Detours library in order to hide its presence from security solutions. Below is a somewhat technical description.</p>
<p>First off, the <a href="http://research.microsoft.com/sn/detours/" target="_blank">Detours project</a> out of Microsoft Research focuses on &#8220;<a href="http://research.microsoft.com/%7Egalenh/Publications/HuntUsenixNt99.pdf" target="_blank">Binary Interception of Win32 Functions</a>&#8220;. In other words, when a developer or malware writer wants to hook a function inline and insert their own code, they can intercept a win32 function with code from the Detours library.<br />To use this code commercially, &#8220;Detours Professional 2.1 includes a license for use in production environments and the right to distribute detour functions in products&#8230;For information on licensing Detours Professional 2.1 contact Microsoft&#8217;s IP Licensing Group at iplg@microsoft.com&#8221;. Let&#8217;s assume either that Microsoft never provided the vundo developers with a license or that the vundo developers never attempted to obtain a license for their &#8220;commercial&#8221; use.</p>
<p>One of Vundo&#8217;s library components currently in the wild is injected into processes as a part of its attack. This component may in turn be detected by anti-spyware scanners using the EnumProcessModules api call, which would provide an anti-malware scanner using that call with a handle to the injected module. And this is where the abuse begins.<br />You can see the malicious Vundo hook in this screenshot, implementing the hook functionality from the Detours library. Basically, if a process calls EnumProcessModules, the vundo appropriated code will intercept the win32 function and report that the module enumeration procedure failed. When the EnumProcessModules call fails, certain security scanners are unable to detect the vundo component&#8217;s presence:</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_YaXoRZbsXc4/SE8GMlAuieI/AAAAAAAAAWc/t6KPbLx1wWQ/s1600-h/hook_EnumProcessModules.png" target="_blank"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_YaXoRZbsXc4/SE8GMlAuieI/AAAAAAAAAWc/t6KPbLx1wWQ/s200/hook_EnumProcessModules.png" alt="" id="BLOGGER_PHOTO_ID_5210390107054311906" border="0" /></a></p>
<p>How can Detours code be identified in this dll? Well, the source of the detours library can be placed side-by-side with the unpacked and disassembled vundo component. In many places, the same sequence and order of instructions and data is unmistakably identical. For the sake of brevity, we&#8217;ll focus on just a couple that briefly illustrates our point in this post.</p>
<p>Here, the deadlisting for the vundo function is on the left, and the matching Detours source code on the right. This chunk of Detours code is at the core of the hooking functionality within disasm.cpp of detours.lib. The source from the Detours library here is determining the length of the currently evaluated instruction and then copying the instruction to the trampoline buffer (this location is the place where the inlined vundo rootkit function can call back into the original function without interception). The appropiated code on the left is compiler optimized, and it is a mirror image of the Detours logic on the right:</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_YaXoRZbsXc4/SE8Gk7D8ycI/AAAAAAAAAWk/-0mrdIlb614/s1600-h/copy_opcode_data_highlight.png" target="_blank"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_YaXoRZbsXc4/SE8Gk7D8ycI/AAAAAAAAAWk/-0mrdIlb614/s200/copy_opcode_data_highlight.png" alt="" id="BLOGGER_PHOTO_ID_5210390525290269122" border="0" /></a></p>
<p>Here, in a similar fashion, we see vundo functionality that was stolen from the Detours library calling the DetourCopyInstructionEx() function and an inlined detour_does_code_end_function() function. In this reversing illustration, the vundo function is performing checks to ensure the target function&#8217;s eligibility for interception. In other words, vundo&#8217;s appropriated Detours code is checking to see if the target function contains a select set of instructions that would prevent hooking:</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YaXoRZbsXc4/SE8Gn8R7GEI/AAAAAAAAAWs/qR4Uj_0Kpjs/s1600-h/detourattach_highlight.png" target="_blank"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_YaXoRZbsXc4/SE8Gn8R7GEI/AAAAAAAAAWs/qR4Uj_0Kpjs/s200/detourattach_highlight.png" alt="" id="BLOGGER_PHOTO_ID_5210390577156921410" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threatfire.com/2008/06/vundo-variant-appropriates-microsoft-research-source-code.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
