<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title><![CDATA[[SecurityRatty] tag: typed]]></title>
    <link>http://securityratty.com/tag/typed</link>
    <description></description>
    <pubDate>Thu, 03 Apr 2008 08:18:00 +0000</pubDate>
    <generator>iRatty Engine</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <item>
      <title><![CDATA[PasswordTextBox]]></title>
      <link>http://securityratty.com/article/4e1580792b56914339b6489792b99933</link>
      <guid>http://securityratty.com/article/4e1580792b56914339b6489792b99933</guid>
      <description><![CDATA[Chris Sells used to poke fun at me when we worked together in my former life . He used to call my security class, &quot;Essential Access Denied&quot;. His point was a good one: when they aren't applied...]]></description>
      <content:encoded><![CDATA[<p><a href="http://www.sellsbrothers.com/" target="_blank">Chris Sells</a> used to poke fun at me when we worked together in my <a href="http://www.flickr.com/photos/andyrs/240203382/" target="_blank">former life</a>. He used to call my security class, &quot;Essential Access Denied&quot;. His point was a good one: when they aren&#39;t applied carefully, security countermeasures often just get in the way of getting work done. I don&#39;t know about you, but password-mode text boxes in web forms have always been one of those annoyances.</p> <p>I&#39;m not complaining about the fact that I can&#39;t see what I&#39;m typing. I understand and laud that feature, because I don&#39;t want someone looking over my shoulder at the password I&#39;m typing, and this even applies when I&#39;m at home. I love my children, but I certainly don&#39;t want them knowing the password to my bank account!</p> <p>No, what I&#39;m bothered by is how a typical password text box behaves on a form that may incur multiple post-backs before it&#39;s finally submitted. If you use the built in ASP.NET TextBox control, it purposely does not repopulate the password text, which means if you press a button on the form that performs a post-back, or if you have a multi-page form that posts back on every step, that password disappears, and the user typically has to re-enter it. You could solve this with liberal use of ASP.NET Ajax UpdatePanels, but that adds its own complexities. I wanted a simpler solution.</p> <p>So I did a little research to see what others had discovered about this problem, and I ended up deriving my own custom control from TextBox to make a much more user-friendly (and developer-friendly) TextBox control. I called it PasswordTextBox, and it acts just like a TextBox in password mode, but it retains the password while still giving the user the same level of protection the standard TextBox supplies.</p> <p>My PasswordTextBox operates very simply: it stores the password in control state, and renders a series of fixed characters (with the same length as the actual password) into the text box so that it &quot;looks&quot; like the user&#39;s password has been rendered. Since control state is part of view state, and since view state is stored in a hidden field on the form, I encrypt the password before putting it into control state.</p> <p>The result is quite nice - the user can post your form back as many times as she needs to, perhaps moving back and forth across wizard steps or tabs, and when she finally presses the &quot;Finish&quot; button (or whatever you call the last step of your input form), your code will be able to read the password by simply accessing the Text property on the PasswordTextBox. The user will believe that her password is sitting there on the form while she&#39;s working, as the same number of obfuscated characters will show up in the field as she typed in originally (what she doesn&#39;t know is that those characters aren&#39;t her real password anymore, but what she doesn&#39;t know won&#39;t hurt her!)</p> <p>Note that to keep this simple, I used DPAPI to encrypt the password, which suited my purposes. But if you have a web farm, that won&#39;t work well at all if you don&#39;t know which machine the user&#39;s going to post back to, so you&#39;ll want to replace that with something more robust. I could see looking up the &lt;machineKey&gt; for entropy, as that tends to be sync&#39;d already across the farm, but I&#39;ve not yet spent the cycles to go down that road, since unfortunately all of the code for generating keys based on that config section are off limits in ASP.NET (most of the useful stuff is marked internal). I don&#39;t think it&#39;d be that hard to do though.</p> <p>Anyway, without further ado, here&#39;s the code, which you&#39;ll see is quite simple. I&#39;d love feedback, especially if you see any glaring problems with the idea or the implementation!</p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> PasswordTextBox : TextBox
{
    <span class="rem">// unlikely that a string of these would be used for a password</span>
    <span class="kwrd">const</span> <span class="kwrd">char</span> PasswordPlaceholderChar = <span class="str">&#39;}&#39;</span>;

    <span class="kwrd">string</span> password; <span class="rem">// stored encrypted in control state</span>

    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> OnInit(EventArgs e)
    {
        <span class="kwrd">base</span>.OnInit(e);
        Page.RegisterRequiresControlState(<span class="kwrd">this</span>);
    }

    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">object</span> SaveControlState()
    {
        <span class="kwrd">byte</span>[] encryptedPassword = ProtectPassword(password);

        <span class="kwrd">object</span> baseControlState = <span class="kwrd">base</span>.SaveControlState();
        <span class="kwrd">if</span> (<span class="kwrd">null</span> == baseControlState)
            <span class="kwrd">return</span> encryptedPassword;
        <span class="kwrd">else</span> <span class="kwrd">return</span> <span class="kwrd">new</span> Pair(baseControlState, encryptedPassword);
    }

    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> LoadControlState(<span class="kwrd">object</span> savedState)
    {
        <span class="kwrd">byte</span>[] encryptedPassword;

        Pair pair = savedState <span class="kwrd">as</span> Pair;
        <span class="kwrd">if</span> (<span class="kwrd">null</span> != pair)
        {
            <span class="kwrd">base</span>.LoadControlState(pair.First);
            encryptedPassword = pair.Second <span class="kwrd">as</span> <span class="kwrd">byte</span>[];
        }
        <span class="kwrd">else</span> encryptedPassword = savedState <span class="kwrd">as</span> <span class="kwrd">byte</span>[];

        password = UnprotectPassword(encryptedPassword);
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// This control always uses TextMode=Password</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">override</span> TextBoxMode TextMode
    {
        get
        {
            <span class="kwrd">return</span> TextBoxMode.Password;
        }
        set { }
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// TextBox doesn&#39;t render value attribute for TextMode=Password</span>
    <span class="rem">/// So we add code that renders a placeholder text instead</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="rem">/// &lt;param name=&quot;writer&quot;&gt;&lt;/param&gt;</span>
    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> AddAttributesToRender(HtmlTextWriter writer)
    {
        <span class="kwrd">base</span>.AddAttributesToRender(writer);

        <span class="kwrd">string</span> text = Text;
        <span class="kwrd">if</span> (text.Length &gt; 0)
            writer.AddAttribute(HtmlTextWriterAttribute.Value,
                GetPlaceholderPassword(text));
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// TextBox doesn&#39;t save the &quot;Text&quot; viewstate in</span>
    <span class="rem">/// TextMode=Password and we don&#39;t want our behavior to break</span>
    <span class="rem">/// if ViewState is turned off so we store the password in</span>
    <span class="rem">/// Control State, encrypted with MachineKey</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">string</span> Text
    {
        get
        {
            <span class="kwrd">return</span> password ?? <span class="kwrd">string</span>.Empty;
        }
        set
        {
            <span class="rem">// this prevents us overwriting the actual</span>
            <span class="rem">// password with a placeholder</span>
            <span class="kwrd">if</span> (!<span class="kwrd">string</span>.IsNullOrEmpty(password) &amp;&amp;
                <span class="kwrd">value</span>.Equals(GetPlaceholderPassword(password)))
                <span class="kwrd">return</span>;

            password = <span class="kwrd">value</span>;
        }
    }

    <span class="kwrd">private</span> <span class="kwrd">string</span> GetPlaceholderPassword(<span class="kwrd">string</span> realPassword)
    {
        <span class="kwrd">int</span> length = 12;
        <span class="kwrd">if</span> (!<span class="kwrd">string</span>.IsNullOrEmpty(realPassword))
            length = realPassword.Length;

        StringBuilder sb = <span class="kwrd">new</span> StringBuilder();
        sb.Append(PasswordPlaceholderChar, length);

        <span class="kwrd">return</span> sb.ToString();
    }

    <span class="kwrd">public</span> <span class="kwrd">byte</span>[] ProtectPassword(<span class="kwrd">string</span> password)
    {
        <span class="kwrd">if</span> (<span class="kwrd">string</span>.IsNullOrEmpty(password))
            <span class="kwrd">return</span> <span class="kwrd">null</span>;
        <span class="kwrd">byte</span>[] cleartext = Encoding.UTF8.GetBytes(password);
        <span class="kwrd">return</span> ProtectedData.Protect(cleartext, <span class="kwrd">null</span>,
            DataProtectionScope.LocalMachine);
    }

    <span class="kwrd">public</span> <span class="kwrd">string</span> UnprotectPassword(<span class="kwrd">byte</span>[] ciphertext)
    {
        <span class="kwrd">if</span> (<span class="kwrd">null</span> == ciphertext)
            <span class="kwrd">return</span> <span class="kwrd">null</span>;
        <span class="kwrd">byte</span>[] cleartext = ProtectedData.Unprotect(ciphertext, <span class="kwrd">null</span>,
            DataProtectionScope.LocalMachine);
        <span class="kwrd">return</span> Encoding.UTF8.GetString(cleartext);
    }
}
</pre><div style="clear:both;"></div><img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=54154" width="1" height="1">]]></content:encoded>
      <pubDate>Wed, 29 Oct 2008 16:49:54 +0000</pubDate>
      <category domain="http://securityratty.com/tag/password-mode text boxes">password-mode text boxes</category>
      <category domain="http://securityratty.com/tag/text">text</category>
      <category domain="http://securityratty.com/tag/return null">return null</category>
      <category domain="http://securityratty.com/tag/return">return</category>
      <category domain="http://securityratty.com/tag/net">net</category>
      <category domain="http://securityratty.com/tag/net ajax updatepanels">net ajax updatepanels</category>
      <category domain="http://securityratty.com/tag/net textbox control">net textbox control</category>
      <category domain="http://securityratty.com/tag/password">password</category>
      <category domain="http://securityratty.com/tag/textbox control">textbox control</category>
      <source url="http://www.pluralsight.com/community/blogs/keith/archive/2008/10/29/passwordtextbox.aspx">PasswordTextBox</source>
    </item>
    <item>
      <title><![CDATA[Remotely Eavesdropping on Keyboards]]></title>
      <link>http://securityratty.com/article/ce6b4f5ae267c442104b3483854d3c78</link>
      <guid>http://securityratty.com/article/ce6b4f5ae267c442104b3483854d3c78</guid>
      <description><![CDATA[Clever work : The researchers from the Security and Cryptography Laboratory at Ecole Polytechnique Federale de Lausanne are able to capture keystrokes by monitoring the electromagnetic radiation of...]]></description>
      <content:encoded><![CDATA[<p><a href="http://www.theregister.co.uk/2008/10/20/keyboard_sniffing_attack/">Clever</a> <a href="http://news.bbc.co.uk/2/hi/technology/7681534.stm">work</a>:</p>

<blockquote>The researchers from the Security and Cryptography Laboratory at Ecole Polytechnique Federale de Lausanne are able to capture keystrokes by monitoring the electromagnetic radiation of PS/2, universal serial bus, or laptop keyboards. They've outline four separate attack methods, some that work at a distance of as much as 65 feet from the target.

<p>In one video demonstration, researchers Martin Vuagnoux and Sylvain Pasini sniff out the the keystrokes typed into a standard keyboard using a large antenna that's about 20 to 30 feet away in an adjacent room.</blockquote></p>

<p>Website <a href="http://lasecwww.epfl.ch/keyboard/">here</a>. </p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/schneier/fulltext?a=nR9FM"><img src="http://feeds.feedburner.com/~f/schneier/fulltext?i=nR9FM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/schneier/fulltext?a=kZp9M"><img src="http://feeds.feedburner.com/~f/schneier/fulltext?i=kZp9M" border="0"></img></a>
</div>]]></content:encoded>
      <pubDate>Thu, 23 Oct 2008 08:48:16 +0000</pubDate>
      <category domain="http://securityratty.com/tag/researchers">researchers</category>
      <category domain="http://securityratty.com/tag/researchers martin vuagnoux">researchers martin vuagnoux</category>
      <category domain="http://securityratty.com/tag/universal serial bus">universal serial bus</category>
      <category domain="http://securityratty.com/tag/ecole polytechnique federale">ecole polytechnique federale</category>
      <category domain="http://securityratty.com/tag/sylvain pasini sniff">sylvain pasini sniff</category>
      <category domain="http://securityratty.com/tag/keystrokes typed">keystrokes typed</category>
      <category domain="http://securityratty.com/tag/attack methods">attack methods</category>
      <category domain="http://securityratty.com/tag/electromagnetic radiation">electromagnetic radiation</category>
      <category domain="http://securityratty.com/tag/feet">feet</category>
      <source url="http://www.schneier.com/blog/archives/2008/10/remotely_eavesd.html">Remotely Eavesdropping on Keyboards</source>
    </item>
    <item>
      <title><![CDATA[Microsoft defends IE 'phone home' feature, clarifies privacy policy]]></title>
      <link>http://securityratty.com/article/5bfeb51f0c0b05f8f39974a36d75d7ce</link>
      <guid>http://securityratty.com/article/5bfeb51f0c0b05f8f39974a36d75d7ce</guid>
      <description><![CDATA[Microsoft Friday defended the Internet Explorer 8 (IE8) tool that suggests sites based on the URLs typed into its address bar, saying that the browser &quot;phones home&quot; only a limited amount of...]]></description>
      <content:encoded><![CDATA[Microsoft Friday defended the Internet Explorer 8 (IE8) tool that suggests sites based on the URLs typed into its address bar, saying that the browser "phones home" only a limited amount of information to Microsoft and that the company discards all user IP addresses almost immediately.]]></content:encoded>
      <pubDate>Sat, 13 Sep 2008 20:00:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/microsoft">microsoft</category>
      <category domain="http://securityratty.com/tag/microsoft friday">microsoft friday</category>
      <category domain="http://securityratty.com/tag/suggests sites based">suggests sites based</category>
      <category domain="http://securityratty.com/tag/phones home">phones home</category>
      <category domain="http://securityratty.com/tag/internet explorer">internet explorer</category>
      <category domain="http://securityratty.com/tag/address bar">address bar</category>
      <category domain="http://securityratty.com/tag/urls typed">urls typed</category>
      <category domain="http://securityratty.com/tag/company discards">company discards</category>
      <category domain="http://securityratty.com/tag/browser">browser</category>
      <source url="http://www.networkworld.com/news/2008/091208-ms-defends-ie-phone-home.html?fsrc=rss-security">Microsoft defends IE 'phone home' feature, clarifies privacy policy</source>
    </item>
    <item>
      <title><![CDATA[Securing Your Gmail With Just a Click]]></title>
      <link>http://securityratty.com/article/607ed5a24c0b50b25a2cbe170ddda454</link>
      <guid>http://securityratty.com/article/607ed5a24c0b50b25a2cbe170ddda454</guid>
      <description><![CDATA[Im learning lessons on security this week, because Ive just brought a new kitten home and she is exploring every nook and cranny in my home. Chewing on my cacti, playing with the blinds, and naturally...]]></description>
      <content:encoded><![CDATA[<p>I&#8217;m learning lessons on security this week, because I&#8217;ve just brought <a rel="nofollow" target="_blank" href="http://flickr.com/photos/sylphbranching/2778845191/">a new kitten </a>home and she is exploring every nook and cranny in my home. Chewing on my cacti, playing with the blinds, and naturally clawing up the couch. I wish there was a way to press a button and kitty-proof my house!</p>
<p>Luckily there now is a way to press a button and get secure gmail with SSL, at least. Thanks to <span class="entry-author-name"><a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~r/Security-Bloggers-Network/~3/370004218/">Martin McKeay</a> for the tip </span>&#8211; the big Goog has enabled HTTPS in the Gmail options settings&#8211;</p>
<blockquote><p>Gmail has been capable of running on SSL for quite some time, but it’s not something that’s enabled by default. I always typed the https in by hand, but I don’t completely trust that method. I’ve used Better Gmail2 in the past, but that doesn’t like FireFox 3 for some reason. There are also a number of <a rel="nofollow" target="_blank" href="http://userscripts.org/scripts/show/1404">scripts</a> for <a rel="nofollow" target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/748">GreaseMonkey</a> that force Gmail to use SSL, but now Gmail has made it an <a rel="nofollow" target="_blank" href="http://googlesystem.blogspot.com/2008/07/force-gmail-to-use-secure-connection.html">option on the settings page</a>. It’s on the bottom of the page and easy to miss if you’re not looking closely.</p></blockquote>
<p>Good, now I can stop worrying about my email and get to the tough task of securing my apartment instead.</p>
<p><span class="entry-author-name">Go read the full article about this new feature <a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~r/Security-Bloggers-Network/~3/370004218/">here.</a><br />
</span></p>]]></content:encoded>
      <pubDate>Thu, 21 Aug 2008 11:51:12 +0000</pubDate>
      <category domain="http://securityratty.com/tag/gmail">gmail</category>
      <category domain="http://securityratty.com/tag/force gmail">force gmail</category>
      <category domain="http://securityratty.com/tag/secure gmail">secure gmail</category>
      <category domain="http://securityratty.com/tag/gmail options settings">gmail options settings</category>
      <category domain="http://securityratty.com/tag/page">page</category>
      <category domain="http://securityratty.com/tag/settings page">settings page</category>
      <category domain="http://securityratty.com/tag/ssl">ssl</category>
      <category domain="http://securityratty.com/tag/completely trust">completely trust</category>
      <category domain="http://securityratty.com/tag/martin mckeay">martin mckeay</category>
      <source url="http://feeds.feedburner.com/~r/itsecurity/~3/371376583/">Securing Your Gmail With Just a Click</source>
    </item>
    <item>
      <title><![CDATA[Security Between Virtual Machines?]]></title>
      <link>http://securityratty.com/article/69916a03ef5251f62e6e3deefe8910ec</link>
      <guid>http://securityratty.com/article/69916a03ef5251f62e6e3deefe8910ec</guid>
      <description><![CDATA[Is there security needed between virtual machines? Some say no, some say yes. I've been out talking to a number of virtualization users and non users on this topic and I'm finding that some say no and...]]></description>
      <content:encoded><![CDATA[
<div xmlns="http://www.w3.org/1999/xhtml"><p>Is there security needed between virtual machines?&nbsp; Some say no, some say yes.&nbsp; I've been out talking to a number of virtualization users and non users on this topic and I'm finding that some say no and some say yes.&nbsp; The users of virtualization technology tend to say yes while others looking at virtualization from the outside tend to say no.&nbsp; Why is this?</p>

<p>Well, I thought I'd blog on my thoughts on this!</p>

<p>You see, in the physical datacenter there is no firewalling between servers plugged into the same switch and because of this some people think, well if its not done in the physical world why should it be done in the virtual world.&nbsp; I believe that its not done in the physical world today because there are no solutions today that embed security into datacenter switches.&nbsp; Should it be done in the physical world?&nbsp; I think so!&nbsp; It never hurts to get security as close as possible to the things you are trying to protect and what better place than the switch port in which the critical asset are connected to.&nbsp; This is why people have HOST BASED FW/IPS ON SERVERS!&nbsp; To get security as close as possible!&nbsp; Is that needed?&nbsp; </p>

<p>So my first response to those that say, security between virtual machines is not needed because its not done in the physical world is:&nbsp; Well, just because people have done things one way for many years doesn't mean there isn't a better way.</p>

<p>Would environments be more secure if there was security between servers?&nbsp; I tend to think so.&nbsp; You see, many of the attacks that are taking place these days are not attacks for fame but attacks for fortune and gone are the days where people just hacked to spread nasty viruses.&nbsp; Its all about the data these days (ie. credit cards, social security numbers, etc).&nbsp; We've all heard about the TJ Max security breach where customer data was compromised and many others like banks that have had credit cards compromised.&nbsp; </p>

<p>How and the heck do you think most of these things happened?&nbsp; Attackers are targeting the datacenter these days.&nbsp; Physical or Virtual.&nbsp; Their gateway into these environments are the Web Front End Servers.&nbsp; Let me say that again.&nbsp; The Web Front End Servers!&nbsp; Hackers get to the data from the web front end server that talks to the database backend server.&nbsp; This useually occurs by something called &quot;Cross-Site Scripting&quot; or &quot;SQL Injection&quot; breaches.&nbsp; </p>

<p>Here is a trival way of how this happens:</p>

<p>A hacker finds a vulnerable web site.&nbsp; He sometimes does this by something called Google Hacking.&nbsp; He uses Google to search for sites that has vulnerabilities on it.&nbsp; Say a web site has some content on one of the pages that says &quot;Powered by Drupal 4.1&quot;.&nbsp; If a hacker knows that Drupal 4.1 software has a vulnerability in it, he can now target all the search results related to this.&nbsp; <a href="http://en.wikipedia.org/wiki/Google_hacking">Click Here for more detail</a>.</p>

<p>Now lets say Drupal 4.1 on a web site has a SQL-Injection vulnerability because the developer of the Drupal software didn't do Form Field Validation properly.&nbsp; A Form field is something you fill out on a web page like a form that asks for the user name and password.&nbsp; User names and passwords to log into the web site are stored on whats called a Database Server.&nbsp; Hmmm... So this means the web server needs to talk to the database server right?&nbsp; Yes!&nbsp; Keep this in the back of our head for now.&nbsp; The hacker enters in &quot;Admin&quot; for the user ID and &quot;password doesn't matter <strong>'or 1=1--</strong>&quot; for the password.&nbsp; And presto!&nbsp; He is logged in to the server as Admin.</p>

<p>The reason he was able to log in is because the web site sends a SQL Database command to the Database server and because the developer of the Drupal software didn't do &quot;Form Field Validation&quot; properly (method of checking for invalid characters like the ' (single quote)&nbsp; symbol), the user was able to bypass the password.&nbsp; Notice the 'OR 1=1 command appended to the password.&nbsp; One does equal one so therefore it will return a TRUE result to the password checker and the OR says use the password typed in (password doesnt matter) OR check to see if one is equal to one.&nbsp; If its true then the password is valid for this user which is Admin.</p>

<p>Now that the user is on the web server, he probably has the ability to connect to the database server or other servers in the network.&nbsp; Why?&nbsp; Because there is connectivity from the web front end to all of the backend servers.&nbsp; He essently can backdoor his way throughout the network. </p>

<p>Another method is for him to append some SQL statement to another SQL statement.&nbsp; Lets say their is a FORM FIELD on the website that collects some information from the database to display it to web site users.&nbsp; It could be entering in the Zip code to find store locations in your area.&nbsp; Instead of putting in the zip code you could put in &quot;95123 'UNION SELECT * FROM credit_card_table--&quot;.&nbsp; The hacker is injecting via the UNION command (which means join one SQL statement with another one) a command that says grab all (via the asterisk) information out the credit card table.</p>

<p>Lastly, the hacker can use the UNION command to write text of his desire to a text file on the database server.&nbsp; He may write some nasty code, tell the database to write the code to a file and then tell the server to execute that file.&nbsp; The code could be used to do a denial of service attack to the other virtual machines or whatever.&nbsp; The possibilities are endless!!</p>

<p>Anyway, these are high level examples.&nbsp; I think you get the point.</p>

<p>The Web Front End Virtual Machine has a need to talk to the Web Back End Virtual Machine and security such as Firewalling, Intrusion Prevention definately needs to be in place to have a higher level of security.</p>

<p>Another reason to have security between virtual machines is because servers are now mobile in the virtual world.&nbsp; They move between trust domains to take advantage of computing resources that may be available on a given piece of hardware.&nbsp; Lets say one PHYSICAL server was hosting database VM's and another PHYSICAL server was hosting file server VM's.&nbsp; The file server VM could VMOTION to the same environment as the database VM's.&nbsp; &nbsp;Now where is your isolation between trust domains or unlike resources?</p>

<p>People should think about this problem in greater detail.&nbsp; I'd love to hear everyones comments as to whether or not they think security between VM's is needed.</p>

<p><a href="http://vmwaresecurity.typepad.com/.shared/image.html?/photos/uncategorized/2008/06/22/creditcardhacker_2.jpg" onclick="window.open(this.href, '_blank', 'width=640,height=400,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img height="312" border="0" width="500" alt="Creditcardhacker_2" title="Creditcardhacker_2" src="http://vmwaresecurity.typepad.com/security_in_the_virtual_w/images/2008/06/22/creditcardhacker_2.jpg" style="margin: 0px 5px 5px 0px; float: left;" /></a>
 </p><br /><br /><br /><br /><p>John Peterson<br />Montego Networks</p></div>
]]></content:encoded>
      <pubDate>Sun, 22 Jun 2008 11:30:57 +0000</pubDate>
      <category domain="http://securityratty.com/tag/web">web</category>
      <category domain="http://securityratty.com/tag/web page">web page</category>
      <category domain="http://securityratty.com/tag/web site sends">web site sends</category>
      <category domain="http://securityratty.com/tag/server">server</category>
      <category domain="http://securityratty.com/tag/file server">file server</category>
      <category domain="http://securityratty.com/tag/database backend server">database backend server</category>
      <category domain="http://securityratty.com/tag/web front">web front</category>
      <category domain="http://securityratty.com/tag/vulnerable web site">vulnerable web site</category>
      <category domain="http://securityratty.com/tag/database server">database server</category>
      <source url="http://feeds.feedburner.com/~r/SecurityInTheVirtualWorld/~3/317542130/security-betwee.html">Security Between Virtual Machines?</source>
    </item>
    <item>
      <title><![CDATA[Security Between Virtual Machines?]]></title>
      <link>http://securityratty.com/article/5e0193263d9b2c777748e80174926e2a</link>
      <guid>http://securityratty.com/article/5e0193263d9b2c777748e80174926e2a</guid>
      <description><![CDATA[Is there security needed between virtual machines? Some say no, some say yes. I've been out talking to a number of virtualization users and non users on this topic and I'm finding that some say no and...]]></description>
      <content:encoded><![CDATA[
<div xmlns="http://www.w3.org/1999/xhtml"><p>Is there security needed between virtual machines?&nbsp; Some say no, some say yes.&nbsp; I've been out talking to a number of virtualization users and non users on this topic and I'm finding that some say no and some say yes.&nbsp; The users of virtualization technology tend to say yes while others looking at virtualization from the outside tend to say no.&nbsp; Why is this?</p>

<p>Well, I thought I'd blog on my thoughts on this!</p>

<p>You see, in the physical datacenter there is no firewalling between servers plugged into the same switch and because of this some people think, well if its not done in the physical world why should it be done in the virtual world.&nbsp; I believe that its not done in the physical world today because there are no solutions today that embed security into datacenter switches.&nbsp; Should it be done in the physical world?&nbsp; I think so!&nbsp; It never hurts to get security as close as possible to the things you are trying to protect and what better place than the switch port in which the critical asset are connected to.&nbsp; This is why people have HOST BASED FW/IPS ON SERVERS!&nbsp; To get security as close as possible!&nbsp; Is that needed?&nbsp; </p>

<p>So my first response to those that say, security between virtual machines is not needed because its not done in the physical world is:&nbsp; Well, just because people have done things one way for many years doesn't mean there isn't a better way.</p>

<p>Would environments be more secure if there was security between servers?&nbsp; I tend to think so.&nbsp; You see, many of the attacks that are taking place these days are not attacks for fame but attacks for fortune and gone are the days where people just hacked to spread nasty viruses.&nbsp; Its all about the data these days (ie. credit cards, social security numbers, etc).&nbsp; We've all heard about the TJ Max security breach where customer data was compromised and many others like banks that have had credit cards compromised.&nbsp; </p>

<p>How and the heck do you think most of these things happened?&nbsp; Attackers are targeting the datacenter these days.&nbsp; Physical or Virtual.&nbsp; Their gateway into these environments are the Web Front End Servers.&nbsp; Let me say that again.&nbsp; The Web Front End Servers!&nbsp; Hackers get to the data from the web front end server that talks to the database backend server.&nbsp; This useually occurs by something called &quot;Cross-Site Scripting&quot; or &quot;SQL Injection&quot; breaches.&nbsp; </p>

<p>Here is a trival way of how this happens:</p>

<p>A hacker finds a vulnerable web site.&nbsp; He sometimes does this by something called Google Hacking.&nbsp; He uses Google to search for sites that has vulnerabilities on it.&nbsp; Say a web site has some content on one of the pages that says &quot;Powered by Drupal 4.1&quot;.&nbsp; If a hacker knows that Drupal 4.1 software has a vulnerability in it, he can now target all the search results related to this.&nbsp; <a href="http://en.wikipedia.org/wiki/Google_hacking">Click Here for more detail</a>.</p>

<p>Now lets say Drupal 4.1 on a web site has a SQL-Injection vulnerability because the developer of the Drupal software didn't do Form Field Validation properly.&nbsp; A Form field is something you fill out on a web page like a form that asks for the user name and password.&nbsp; User names and passwords to log into the web site are stored on whats called a Database Server.&nbsp; Hmmm... So this means the web server needs to talk to the database server right?&nbsp; Yes!&nbsp; Keep this in the back of our head for now.&nbsp; The hacker enters in &quot;Admin&quot; for the user ID and &quot;password doesn't matter <strong>'or 1=1--</strong>&quot; for the password.&nbsp; And presto!&nbsp; He is logged in to the server as Admin.</p>

<p>The reason he was able to log in is because the web site sends a SQL Database command to the Database server and because the developer of the Drupal software didn't do &quot;Form Field Validation&quot; properly (method of checking for invalid characters like the ' (single quote)&nbsp; symbol), the user was able to bypass the password.&nbsp; Notice the 'OR 1=1 command appended to the password.&nbsp; One does equal one so therefore it will return a TRUE result to the password checker and the OR says use the password typed in (password doesnt matter) OR check to see if one is equal to one.&nbsp; If its true then the password is valid for this user which is Admin.</p>

<p>Now that the user is on the web server, he probably has the ability to connect to the database server or other servers in the network.&nbsp; Why?&nbsp; Because there is connectivity from the web front end to all of the backend servers.&nbsp; He essently can backdoor his way throughout the network. </p>

<p>Another method is for him to append some SQL statement to another SQL statement.&nbsp; Lets say their is a FORM FIELD on the website that collects some information from the database to display it to web site users.&nbsp; It could be entering in the Zip code to find store locations in your area.&nbsp; Instead of putting in the zip code you could put in &quot;95123 'UNION SELECT * FROM credit_card_table--&quot;.&nbsp; The hacker is injecting via the UNION command (which means join one SQL statement with another one) a command that says grab all (via the asterisk) information out the credit card table.</p>

<p>Lastly, the hacker can use the UNION command to write text of his desire to a text file on the database server.&nbsp; He may write some nasty code, tell the database to write the code to a file and then tell the server to execute that file.&nbsp; The code could be used to do a denial of service attack to the other virtual machines or whatever.&nbsp; The possibilities are endless!!</p>

<p>Anyway, these are high level examples.&nbsp; I think you get the point.</p>

<p>The Web Front End Virtual Machine has a need to talk to the Web Back End Virtual Machine and security such as Firewalling, Intrusion Prevention definately needs to be in place to have a higher level of security.</p>

<p>Another reason to have security between virtual machines is because servers are now mobile in the virtual world.&nbsp; They move between trust domains to take advantage of computing resources that may be available on a given piece of hardware.&nbsp; Lets say one PHYSICAL server was hosting database VM's and another PHYSICAL server was hosting file server VM's.&nbsp; The file server VM could VMOTION to the same environment as the database VM's.&nbsp; &nbsp;Now where is your isolation between trust domains or unlike resources?</p>

<p>People should think about this problem in greater detail.&nbsp; I'd love to hear everyones comments as to whether or not they think security between VM's is needed.</p>

<p><a href="http://vmwaresecurity.typepad.com/.shared/image.html?/photos/uncategorized/2008/06/22/creditcardhacker_2.jpg" onclick="window.open(this.href, '_blank', 'width=640,height=400,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img height="312" border="0" width="500" alt="Creditcardhacker_2" title="Creditcardhacker_2" src="http://vmwaresecurity.typepad.com/security_in_the_virtual_w/images/2008/06/22/creditcardhacker_2.jpg" style="margin: 0px 5px 5px 0px; float: left;" /></a>
 </p><br /><br /><br /><br /><p>John Peterson<br />Montego Networks</p></div>
]]></content:encoded>
      <pubDate>Sun, 22 Jun 2008 11:30:57 +0000</pubDate>
      <category domain="http://securityratty.com/tag/web">web</category>
      <category domain="http://securityratty.com/tag/web page">web page</category>
      <category domain="http://securityratty.com/tag/web site sends">web site sends</category>
      <category domain="http://securityratty.com/tag/server">server</category>
      <category domain="http://securityratty.com/tag/file server">file server</category>
      <category domain="http://securityratty.com/tag/database backend server">database backend server</category>
      <category domain="http://securityratty.com/tag/web front">web front</category>
      <category domain="http://securityratty.com/tag/vulnerable web site">vulnerable web site</category>
      <category domain="http://securityratty.com/tag/database server">database server</category>
      <source url="http://vmwaresecurity.typepad.com/security_in_the_virtual_w/2008/06/security-betwee.html">Security Between Virtual Machines?</source>
    </item>
    <item>
      <title><![CDATA[PEBKAC Attack Script: Finding passwords in event logs]]></title>
      <link>http://securityratty.com/article/33dc9f0404776cd386d3087cb051cb72</link>
      <guid>http://securityratty.com/article/33dc9f0404776cd386d3087cb051cb72</guid>
      <description><![CDATA[Ever wanted to quickly search a Windows Event Log to find passwords users inadvertently typed into the user name field? Well, this script should make it easy to do such audits. Read the rest of the...]]></description>
      <content:encoded><![CDATA[Ever wanted to quickly search a Windows Event Log to find passwords users 
inadvertently typed into the user name field? Well, this script should make it 
easy to do such audits. Read the rest of the article for details. Also, if you 
are interested in using BackTrack for pen-testing, check out my friend
<a href="http://leebaird.com/Me/Hacking.html">Lee Baird's collection of videos 
and documentation on BackTrack and other hacking topics</a>.
<p><a href="http://feeds.feedburner.com/~a/IrongeeksSecuritySite?a=8cfcYh"><img src="http://feeds.feedburner.com/~a/IrongeeksSecuritySite?i=8cfcYh" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/IrongeeksSecuritySite/~4/309264712" height="1" width="1"/>]]></content:encoded>
      <pubDate>Tue, 10 Jun 2008 17:49:39 +0000</pubDate>
      <category domain="http://securityratty.com/tag/friend lee baird">friend lee baird</category>
      <category domain="http://securityratty.com/tag/windows event log">windows event log</category>
      <category domain="http://securityratty.com/tag/backtrack">backtrack</category>
      <category domain="http://securityratty.com/tag/script">script</category>
      <category domain="http://securityratty.com/tag/rest">rest</category>
      <category domain="http://securityratty.com/tag/collection">collection</category>
      <category domain="http://securityratty.com/tag/check">check</category>
      <category domain="http://securityratty.com/tag/documentation">documentation</category>
      <category domain="http://securityratty.com/tag/user">user</category>
      <source url="http://feeds.feedburner.com/~r/IrongeeksSecuritySite/~3/309264712/i.php">PEBKAC Attack Script: Finding passwords in event logs</source>
    </item>
    <item>
      <title><![CDATA[PEBKAC Attack Script: Finding passwords in event logs]]></title>
      <link>http://securityratty.com/article/2dbef6810b4e4e7e6e699cc8a3c428eb</link>
      <guid>http://securityratty.com/article/2dbef6810b4e4e7e6e699cc8a3c428eb</guid>
      <description><![CDATA[Ever wanted to quickly search a Windows Event Log to find passwords users inadvertently typed into the user name field? Well, this script should make it easy to do such audits. Read the rest of the...]]></description>
      <content:encoded><![CDATA[Ever wanted to quickly search a Windows Event Log to find passwords users 
inadvertently typed into the user name field? Well, this script should make it 
easy to do such audits. Read the rest of the article for details. Also, if you 
are interested in using BackTrack for pen-testing, check out my friend
<a href="http://leebaird.com/Me/Hacking.html">Lee Baird's collection of videos 
and documentation on BackTrack and other hacking topics</a>.<img src="http://feedproxy.google.com/~r/IrongeeksSecuritySite/~4/B6aBCXe2Hqo" height="1" width="1"/>]]></content:encoded>
      <pubDate>Tue, 10 Jun 2008 17:49:39 +0000</pubDate>
      <category domain="http://securityratty.com/tag/friend lee baird">friend lee baird</category>
      <category domain="http://securityratty.com/tag/windows event log">windows event log</category>
      <category domain="http://securityratty.com/tag/backtrack">backtrack</category>
      <category domain="http://securityratty.com/tag/script">script</category>
      <category domain="http://securityratty.com/tag/rest">rest</category>
      <category domain="http://securityratty.com/tag/collection">collection</category>
      <category domain="http://securityratty.com/tag/check">check</category>
      <category domain="http://securityratty.com/tag/documentation">documentation</category>
      <category domain="http://securityratty.com/tag/user">user</category>
      <source url="http://feedproxy.google.com/~r/IrongeeksSecuritySite/~3/B6aBCXe2Hqo/i.php">PEBKAC Attack Script: Finding passwords in event logs</source>
    </item>
    <item>
      <title><![CDATA[Keystroke Logging]]></title>
      <link>http://securityratty.com/article/4177a8229cda00c2be7e03b7b231b100</link>
      <guid>http://securityratty.com/article/4177a8229cda00c2be7e03b7b231b100</guid>
      <description><![CDATA[Cybercriminals have devised many methods to obtain sensitive information from your endpoint devices. However, few of them are as effective as keystroke logging. Keystroke logging, also known as...]]></description>
      <content:encoded><![CDATA[Cybercriminals have devised many methods to obtain sensitive information from your endpoint devices.  However, few of them are as effective as keystroke logging.  Keystroke logging, also known as keylogging, is the capture of typed characters.  The data captured can include document content, passwords, user ID's, and other potentially sensitive bits of information.  Using this approach, an attacker can obtain valuable data without cracking into a hardened database or file server.]]></content:encoded>
      <pubDate>Fri, 04 Apr 2008 06:07:18 +0000</pubDate>
      <category domain="http://securityratty.com/tag/obtain valuable data">obtain valuable data</category>
      <category domain="http://securityratty.com/tag/keystroke">keystroke</category>
      <category domain="http://securityratty.com/tag/information">information</category>
      <category domain="http://securityratty.com/tag/data">data</category>
      <category domain="http://securityratty.com/tag/obtain sensitive information">obtain sensitive information</category>
      <category domain="http://securityratty.com/tag/include document content">include document content</category>
      <category domain="http://securityratty.com/tag/typed characters">typed characters</category>
      <category domain="http://securityratty.com/tag/endpoint devices">endpoint devices</category>
      <category domain="http://securityratty.com/tag/sensitive bits">sensitive bits</category>
      <source url="http://networking.ittoolbox.com/r/rss.asp?url=http://blogs.ittoolbox.com/security/adventures/archives/keystroke-logging-23539">Keystroke Logging</source>
    </item>
    <item>
      <title><![CDATA[The Real "Security 2.0"?]]></title>
      <link>http://securityratty.com/article/bacd88d359bef5faad5d771a70263a69</link>
      <guid>http://securityratty.com/article/bacd88d359bef5faad5d771a70263a69</guid>
      <description><![CDATA[Yes! YES! Y-E-S! You guessed right - a blogging frenzy; I am baaack from my vacation/speaking in first cold then warm places and I have a &quot;backblog&quot; of fun items

First is &quot; Why Hacking Changed &quot; from...]]></description>
      <content:encoded><![CDATA[Yes! YES! Y-E-S! You guessed right - a blogging frenzy; I am baaack from my vacation/speaking in first cold then warm places and I have a "backblog" of fun items.<br /><br />First is "<a href="http://www.0x000000.com/?i=536">Why Hacking Changed</a>" from <a href="http://www.0x000000.com">The Hacker Webzine</a>. Please read it; and see thru all the drama.<br /><br />Some quotes:<br /><br />"Old school hacking is dead, network hacking is dead, firewalls are useless and AV software is a mere redundant software package that underlines your frustration and ignorance about contemporary hacking."<br /><br />"If you can define hacking today, it no longer means telnetting into servers or blowing whistles, but exploiting the application layer. With the application layer, I also mean the scripting language beneath it, since it interacts with the applications that it's running and share memory, and thereby the hardware it's running on."<br /><br />and<br /><br />"We can even prove that we can own your network with only seven characters typed into your query string: 1' OR 1=1 is far more dangerous than any shellcode I've ever seen in my life."<br /><br />"What works today works also tomorrow. And what will work in two or 5 years from now is software and application hacking."<div class="blogger-post-footer">About me: http://www.chuvakin.org</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/AntonChuvakinPersonalBlog?a=uhMZOIG"><img src="http://feeds.feedburner.com/~f/AntonChuvakinPersonalBlog?i=uhMZOIG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AntonChuvakinPersonalBlog?a=28tJsXG"><img src="http://feeds.feedburner.com/~f/AntonChuvakinPersonalBlog?i=28tJsXG" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AntonChuvakinPersonalBlog/~4/263523198" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 03 Apr 2008 08:18:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/application layer">application layer</category>
      <category domain="http://securityratty.com/tag/application">application</category>
      <category domain="http://securityratty.com/tag/network">network</category>
      <category domain="http://securityratty.com/tag/share memory">share memory</category>
      <category domain="http://securityratty.com/tag/dead">dead</category>
      <category domain="http://securityratty.com/tag/characters typed">characters typed</category>
      <category domain="http://securityratty.com/tag/hacker webzine">hacker webzine</category>
      <category domain="http://securityratty.com/tag/software">software</category>
      <category domain="http://securityratty.com/tag/language beneath">language beneath</category>
      <source url="http://feeds.feedburner.com/~r/AntonChuvakinPersonalBlog/~3/263523198/real-security-20.html">The Real "Security 2.0"?</source>
    </item>
  </channel>
</rss>
