<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D0cFR3o8fyp7ImA9WhBaEUw.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568</id><updated>2013-05-20T22:43:36.477-07:00</updated><category term="Citrix access gateway enterprise" /><category term="Cryptography" /><category term="LDAPS" /><category term="keys" /><category term="HTTPS" /><category term="butter" /><category term="netscaler" /><category term="free" /><category term="IT" /><category term="Awesome" /><category term="Load balance" /><category term="XLSX" /><category term="F5" /><category term="TCP/IP" /><category term="Oracle" /><category term="XLS" /><category term="HTTP" /><category term="csharp" /><category term="excel" /><category term="&quot;Advanced Persistent Protection" /><category term="analysis" /><category term="HSM" /><category term="windows" /><category term="Advance Persistent Controls" /><category term="SSL" /><category term="VBS" /><category term="VB Script" /><category term="certificates" /><category term="advanced persistent threat" /><category term="controls" /><category term="security" /><category term="convert" /><category term="IT Staffing" /><category term="key management" /><category term="IT Culture" /><category term="CSV" /><category term="BigIP" /><category term="APT" /><category term="LDAP" /><category term="Two-factor authentication" /><category term="which" /><category term="CAG" /><category term="Advanced Persistent Control Suite" /><category term="captcha" /><category term="PKI" /><category term="openSSL" /><category term="LSASS" /><category term="pass the hash" /><category term="Tools" /><category term="TLS" /><category term="requirements" /><category term="Web servers" /><category term="Root DSE" /><title>Mark Gamache's Random Blog</title><subtitle type="html">Here's random stuff related to what I am working on or interested in during my work day or in my personal life.  I'm a nerd.  The content will be nerdy.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://markgamache.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/MarkGamachesRandomBlog" /><feedburner:info uri="markgamachesrandomblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkcHQXs9fyp7ImA9WhBaEUw.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-5851637835786770286</id><published>2013-05-20T22:27:00.000-07:00</published><updated>2013-05-20T22:27:10.567-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-20T22:27:10.567-07:00</app:edited><title>Demystifying Certificate Requirements in Mutual TLS</title><content type="html">
&lt;head&gt;
&lt;meta http-equiv=Content-Type content="text/html; charset=windows-1252"&gt;
&lt;meta name=Generator content="Microsoft Word 12 (filtered)"&gt;
&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
 {font-family:"Cambria Math";
 panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
 {font-family:Calibri;
 panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
 {font-family:Tahoma;
 panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:0in;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
 {color:blue;
 text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
 {color:purple;
 text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
 {mso-style-link:"Balloon Text Char";
 margin:0in;
 margin-bottom:.0001pt;
 font-size:8.0pt;
 font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:.5in;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:0in;
 margin-left:.5in;
 margin-bottom:.0001pt;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:0in;
 margin-left:.5in;
 margin-bottom:.0001pt;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:.5in;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
span.BalloonTextChar
 {mso-style-name:"Balloon Text Char";
 mso-style-link:"Balloon Text";
 font-family:"Tahoma","sans-serif";}
.MsoPapDefault
 {margin-bottom:10.0pt;
 line-height:115%;}
@page WordSection1
 {size:8.5in 11.0in;
 margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
 {page:WordSection1;}
 /* List Definitions */
 ol
 {margin-bottom:0in;}
ul
 {margin-bottom:0in;}
--&gt;
&lt;/style&gt;

&lt;/head&gt;

&lt;body lang=EN-US link=blue vlink=purple&gt;

&lt;div class=WordSection1&gt;

&lt;p class=MsoNormal&gt;Understanding Certificates and SSL/TLS long ago became an IT
fundamental. &lt;/p&gt;

&lt;p class=MsoNormal&gt;Somehow, the industry seems to have not noticed.  In my
quest to take fewer calls on this stuff, here is my attempt to help demystify
all the certificates involved in Client SSL/Mutual TLS.  I seem to be spending
2+ hours a day on the phone talking web and server admins through this stuff.&lt;/p&gt;

&lt;p class=MsoNormal&gt;The reason I am doing this is because Google failed me.  There
are a lot of docs that focus on all the other aspects of the SSL/TLS negotiation,
but none of them focuses on the certificates and what they do for us. Microsoft
has one of the &lt;a
href="http://technet.microsoft.com/en-us/library/cc783349(v=ws.10).aspx"&gt;better
papers&lt;/a&gt; on SSL/TLS, but there is a lot lacking around the certificates and
the SSL/TLS handshakes are overly summarized.&lt;/p&gt;

&lt;p class=MsoNormal&gt;Here is the handshake that MS shows us.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;img border=0 width=503 height=380 id="Picture 3"
src="https://s3.amazonaws.com/markgamache/MSHandShake.gif"
alt=MSHandShake.gif&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;While this may be a four message handshake, there are a few
different conversations taking place, simultaneously, in the handshake.  The
conversations and their certificate requirements are more easily understood
when they are pulled out of the stick context of the message format. &lt;/p&gt;

&lt;p class=MsoNormal&gt;I will say that I am doing a bit of summarizing.  SSL/TLS
has four major components: authentication, message integrity, key negotiation
and encryption.  This post focuses heavily on the authentication aspect.  I am
lumping SSL and TLS together as the basic functions of the negotiations are the
same, only the implementation details vary a bit.  I am also leaving out a bit
about session key generation.  &lt;/p&gt;

&lt;p class=MsoNormal&gt;I break the handshake down into 4 different conversations.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'&gt;A.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Hellos
&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;a.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The
client tells the server that it wants to go secure and offers the suite of
ciphers it supports.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;b.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The
server selects a &lt;a
href="http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-3"&gt;cipher&lt;/a&gt;
from the list.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;c.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;No
certificates are involved here.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'&gt;B.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Server
Certificate presentations&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;a.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The
server sends over the SSL certificate AND the &lt;a
href="http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-3"&gt;chain&lt;/a&gt;. 
&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;b.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The
server must have the private key for the SSL certificate.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;c.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;If
the chain, (CA hierarchy) is not sent, negotiation MUST fail.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;d.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The
client SHOULD perform full cert and chain validation against these certs,
making sure they chain to a Root CA that is trusted explicitly by the client.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'&gt;C.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Key
Exchanges&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;a.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The
client and server exchange data that allows the negotiation of session
encryption keys.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;b.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;If
EDH is used, then the RSA/DSS key is used to block MITM of the key negotiation.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;c.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;If
RSA key negotiation is used, the client encrypts its initial key material with
the public key on the server SSL certificates, assuming cert and chain
validation succeeded. &lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'&gt;D.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Client
Certificate  presentations&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;a.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The
server issues a Certificate Request.  This lists the key types allowed on the
certificate and a list of Distinguished Names (DNs).  These DNs are used as a
hint to help the client determine which of its many possible certificates is
the “right” one.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;b.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The
client selects a certificate, for which it MUST have the private key, and sends
the certificate to the server.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'&gt;c.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The
client sends data that is signed using its private key, proving it holds the
certificate in question.&lt;/p&gt;

&lt;p class=MsoListParagraphCxSpLast style='margin-left:1.0in;text-indent:-.25in'&gt;d.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The
server checks the signature.  If the signature passes, the server may be
configured to pass/fail the client based on data in the certificate.  Often the
certificate serial number or Subject DN must match a static list, or the
certificate must be one that is on file.  The decision to pass/fail the client
cert is not specified in any RFC.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;img border=0 width=624 height=435 id="Picture 2"
src="https://s3.amazonaws.com/markgamache/2waySwimLane.gif"
alt=2waySwimLane.gif&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;Certificates Needed&lt;/b&gt;&lt;/p&gt;

&lt;table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
 style='border-collapse:collapse;border:none'&gt;
 &lt;tr&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&amp;nbsp;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border:solid windowtext 1.0pt;
  border-left:none;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;b&gt;Client          &lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border:solid windowtext 1.0pt;
  border-left:none;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;b&gt;Server&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;b&gt;A - Hellos&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;None&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;None&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;b&gt;B - Server Certificate&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;Root CA Cert for Trust&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;SSL Cert and Chain to send&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;b&gt;C - Key Exchange&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;Public key from Server Cert&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;Private key for Server Cert&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;b&gt;D - Client Auth&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;Client Cert and Private key&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;Client cert for explicit trust or CA cert to implicit trust.  Cert
  values MAY be checked.&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;Client and Server Perspective&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;One often forgotten part of this is that when there are two
parties, the role of client and server may change.   For instance, let's say A
pushes a full DB copy every night to B, and then B pulls deltas hourly during
the day. In this scheme, at night, B is the server, but during the day, B is
the client.  This means that both parties need a cert and a server cert with
chain, and they need to know how to implicitly or explicitly trust other
clients, and they need Root CA certs so they can trust the server cert when
they are the client.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;Take the time to understand how your connections are
established and it is fairly easy to figure out which certificates are used
when. When it comes to figuring out what is wrong, you can usually figure out
the issue by where the handshake fails.  The handshake failures usually can
only be seen via packet captures.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;a name="_GoBack"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;
&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/NMmc0flv3VY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/5851637835786770286/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=5851637835786770286" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/5851637835786770286?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/5851637835786770286?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/NMmc0flv3VY/demystifying-certificate-requirements.html" title="Demystifying Certificate Requirements in Mutual TLS" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2013/05/demystifying-certificate-requirements.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAASX0-fCp7ImA9WhBXFk0.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-4964901513723275235</id><published>2013-03-29T18:24:00.000-07:00</published><updated>2013-03-29T18:25:48.354-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-29T18:25:48.354-07:00</app:edited><title>Hello IT Person, Welcome to the Security Organization</title><content type="html">&lt;head&gt;
&lt;meta http-equiv=Content-Type content="text/html; charset=windows-1252"&gt;
&lt;meta name=Generator content="Microsoft Word 12 (filtered)"&gt;
&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
 {font-family:"Cambria Math";
 panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
 {font-family:Calibri;
 panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:8.0pt;
 margin-left:0in;
 line-height:107%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
 {color:blue;
 text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
 {color:purple;
 text-decoration:underline;}
@page WordSection1
 {size:8.5in 11.0in;
 margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
 {page:WordSection1;}
--&gt;
&lt;/style&gt;

&lt;/head&gt;

&lt;body lang=EN-US link=blue vlink=purple&gt;

&lt;div class=WordSection1&gt;

&lt;p class=MsoNormal&gt;This is a post that is long overdue.   The IT industry went
through a revolution and most people in IT missed it and are still missing it. 
&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;If you are in any form of IT related job, you are in the
information security field.&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;You may say, “No, I’m just an IT Project Manager (analyst,
whatever), security is another team”.  You are wrong and your career is heading
towards a cliff. &lt;/p&gt;

&lt;p class=MsoNormal&gt;It only takes a tiny bit of Googling to realize that
everyone is getting hacked.  Even the biggies, &lt;a
href="http://blogs.rsa.com/anatomy-of-an-attack/"&gt;RSA&lt;/a&gt;, &lt;a
href="http://www.foxnews.com/tech/2013/02/24/microsoft-confirms-hack-attack-mirroring-recent-facebook-break-in/"&gt;Microsoft&lt;/a&gt;,
&lt;a
href="http://www.nbcnews.com/technology/technolog/facebook-hacked-says-users-not-affected-1C8398370"&gt;Facebook&lt;/a&gt;,
&lt;a
href="http://www.huffingtonpost.com/2012/01/06/symantic-hack-source-code_n_1190673.html"&gt;Symantec&lt;/a&gt;,
and &lt;a
href="http://appleinsider.com/articles/13/02/19/apple-pushes-out-java-update-to-patch-security-hole"&gt;Apple&lt;/a&gt;
aren’t immune. There are too many actors with too many motivations.  If it is
connected to the web, there is either money in hacking it, or it can be used as
a foothold to hack for money.  If it’s connected to the web, there is probably
someone with a social or political agenda that makes it a target and if not, it
is a platform for the &lt;a href="http://en.wikipedia.org/wiki/Hacktivism"&gt;hacktivists&lt;/a&gt;
to leverage.  On top of the myriad of highly skilled and motivated attackers, there
are thousands off &lt;a href="http://en.wikipedia.org/wiki/Script_kiddie"&gt;wannabe
hackers&lt;/a&gt; simply looking for low hanging fruit to test their skills or to get
a thrill.  Even if you don’t have a penny to your name, your computing &lt;a
href="http://slashdot.org/topic/datacenter/russian-website-selling-hacked-servers-report/"&gt;power&lt;/a&gt;
is a commodity if it can be added to a botnet. Hopefully, you already know that
it’s a given that everyone is a target.  If you still need persuading on this
point--don’t worry, there are plenty of Wal-Marts that need greeters.  Get your
app in early.  (That’s “app” as in “application”, which is a paper form you will
fill out with a pen. You won’t need LinkedIn for this.—The Editor)&lt;/p&gt;

&lt;p class=MsoNormal&gt;So, why is security your job?  Every day (week if you are a
slacker?) you make decisions that impact security.  It doesn’t matter if you
specialize in a niche, like UI or UX; or something broad, like program or
project management.  If you are working with data in any way, that data has
value to your organization.  There will certainly be negative impact if the
data is compromised or corrupted.  Even if you run or maintain a static website
in which the content is public and can easily be restored if lost, you don’t
want your system to be a foothold into your important systems or take part in a
DDoS attack.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style='font-size:14.0pt;line-height:107%'&gt;Your Role&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;i&gt;Backup Operators&lt;/i&gt;&lt;/b&gt; – Don’t lose the data and
don’t lose those unencrypted backup files.  This role should be a no brainer. 
This role has Confidentiality, Integrity, and Availability components. &lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;i&gt;Systems Administrators&lt;/i&gt;&lt;/b&gt; – Once again, this is a
no brainer.  SAs have all the access themselves and they configure access to
ALL of your data.  Remember, all of your applications sit on a host that an SA
“owns”.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;i&gt;DBAs and DBOs&lt;/i&gt;&lt;/b&gt; – Please, for the love of all
that is good, you guys MUST know you have to protect that data. Do you??&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;i&gt;Project and Program Managers&lt;/i&gt;&lt;/b&gt; – I know lumping
you guys onto one line will get me all sorts of hate mail.  You guys decide
things like what use cases exist, for what users, accessing what data. You
decide whether to engage formal security teams for assistance. You decide to
cut product or project scope, and everyone knows security is the first to get
cut.      &lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;i&gt;Developers&lt;/i&gt;&lt;/b&gt; – You guys are the worst.  Yeah,
I’m saying it. Inventing your own “cryptography”, passwords in log files,
backdoors, assuming users will use your apps the way you want them to, and on
and on.  Seriously devs, get your acts together.   &lt;a name="_GoBack"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;i&gt;Network Engineers&lt;/i&gt;&lt;/b&gt; – I think this is the only
role that most folks actually think of as a security role.  In fact, this role
is the least interesting in terms of security roles. Read those manuals and
change those default passwords.  And stop using &lt;a
href="https://hk.globalsign.com/ssl-information-center/dangers-of-self-signed-ssl-certificates.html"&gt;self-signed
certs&lt;/a&gt;.  Can you really not remember how a MITM attack works long enough to
say to a manager: “Wait, we need a real cert on that appliance admin portal
page”?  You know what, if you can’t explain to a manager what a MITM attack is
and why your choice of cert matters, you’re part of the problem.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;Your day to day job may be focused on something else, but it
is only a matter of time until IT folks start getting fired for massively bad security
lapses.  If it is on the &lt;a href="https://www.owasp.org/index.php/Top_10_2013"&gt;OWASP
Top 10&lt;/a&gt; or the &lt;a href="http://www.sans.org/top25-software-errors/"&gt;SANS Top
25&lt;/a&gt; and you don’t know a bit about it, you may want to pick up that &lt;a
href="https://hiringcenter.walmartstores.com/OnlineHiringCenter/initialPage.jsp"&gt;Wal-Mart
job app&lt;/a&gt;.  No one is asking you to figure everything out about security, but
you need to at least understand some basics and keep your eyes out.  If you do
run a system, you’d better become a security expert in the context of that
system. &lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;


&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/2eucqwg81sk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/4964901513723275235/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=4964901513723275235" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/4964901513723275235?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/4964901513723275235?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/2eucqwg81sk/hello-it-person-welcome-to-security.html" title="Hello IT Person, Welcome to the Security Organization" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2013/03/hello-it-person-welcome-to-security.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUAQX87fyp7ImA9WhBTE0U.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-1398084699552169061</id><published>2013-02-08T19:24:00.000-08:00</published><updated>2013-02-08T19:24:00.107-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-08T19:24:00.107-08:00</app:edited><title>Senators Marco Rubio, Orrin Hatch, Amy Klobuchar hate America</title><content type="html">
&lt;head&gt;
&lt;meta http-equiv=Content-Type content="text/html; charset=windows-1252"&gt;
&lt;meta name=Generator content="Microsoft Word 12 (filtered)"&gt;
&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
 {font-family:"Cambria Math";
 panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
 {font-family:Calibri;
 panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:0in;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
 {color:blue;
 text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
 {color:purple;
 text-decoration:underline;}
.MsoPapDefault
 {margin-bottom:10.0pt;
 line-height:115%;}
@page WordSection1
 {size:8.5in 11.0in;
 margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
 {page:WordSection1;}
--&gt;
&lt;/style&gt;

&lt;/head&gt;

&lt;body lang=EN-US link=blue vlink=purple&gt;

&lt;div class=WordSection1&gt;

&lt;p class=MsoNormal&gt;I posted a &lt;a
href="http://markgamache.blogspot.com/2012/09/microsoft-announces-plan-to-further.html"&gt;snarky
blog&lt;/a&gt; on H1B Visas last year, but it appears that based on &lt;a
href="http://www.ndtv.com/article/world/new-us-legislation-for-doubling-h1b-visa-make-green-card-easier-323977"&gt;current
events&lt;/a&gt;, it is time to post again.  I doubt I will say anything that hasn’t
been said before, but this needs to be said, over and over.  &lt;/p&gt;

&lt;p class=MsoNormal&gt;H1Bs are a tool of “The Man” to keep &lt;a
href="http://www.huffingtonpost.com/2011/04/05/us-inequality-infographic_n_845042.html#s261410&amp;amp;title=CEO_Pay"&gt;America’s&lt;/a&gt;
record &lt;a
href="http://www.huffingtonpost.com/2009/08/14/income-inequality-is-at-a_n_259516.html"&gt;breaking&lt;/a&gt;
income &lt;a
href="http://www.slate.com/articles/news_and_politics/the_great_divergence/features/2010/the_united_states_of_inequality/introducing_the_great_divergence.html"&gt;disparity&lt;/a&gt;
on track for even bigger numbers.   Yeah!  Maybe we can break a new record next
year!&lt;/p&gt;

&lt;p class=MsoNormal&gt;Proponents of the &lt;a
href="http://en.wikipedia.org/wiki/H-1B_visa"&gt;H1B&lt;/a&gt;, or increasing the
allowed number of them, will tell you heartwarming patriotic tales of the U.S.
needing these so we can keep companies on shore, in business, and competing
against the world.  Capitalism is the best thing ever, but when you run out of
local resources, you have to import them to keep your business from failing. 
It’s just supply and demand. We have demand. If these companies can’t get smart
employees, they will go out of business and then America loses.  Limit the H1Bs
and Microsoft will have to fold up shop, then the Seattle area dies with it,
then Silicon Valley and LA aren’t far behind.  Plus, hey, we are forced to pay
all these folks &lt;a href="http://en.wikipedia.org/wiki/H-1B_visa#Wage_depression"&gt;prevailing
wage&lt;/a&gt;. &lt;/p&gt;

&lt;p class=MsoNormal&gt;All of this is horseshit.  &lt;/p&gt;

&lt;p class=MsoNormal&gt;(Sorry, parents who are reading my blog to your kids before
bed.  I’ll try not to use that language again…)&lt;/p&gt;

&lt;p class=MsoNormal&gt;Why is it horseshit?  (Okay. I’m not trying very hard.)&lt;/p&gt;

&lt;p class=MsoNormal&gt;Here’s why:&lt;/p&gt;

&lt;p class=MsoNormal&gt;The H1B is simply access to a pool of lesser-paid
employees.  In my previous post, I referred to them as indentured servants.  (Work
at Microsoft for a few months, and you will see it. Comments welcome.)&lt;/p&gt;

&lt;p class=MsoNormal&gt;Further, when the onshore talent is forced to compete
against the indentured servants, they have to put in the same kind of hours the
indentured do.  When it comes to supply and demand, the prevailing wage rule
doesn’t let the market come into play.  The extra supply of labor hours drives
down demand.  It’s just that simple. &lt;/p&gt;

&lt;p class=MsoNormal&gt;H1Bs are anti-American and chip away at the American Dream
every day.  One could make an argument that the visa is just opening a bigger
market, thus very capitalist. But seriously, I kind of want America to be
around and to have jobs when my kid grows up.  &lt;/p&gt;

&lt;p class=MsoNormal&gt;Here’s how the H1Bs are ruining America.  If we stop or cut
the H1B numbers, the demand for smart people goes up.  With demand up, wages go
up.  Wages don’t just go up for the top tier professionals; they go up for
every other tier as well.  Crap, there goes our chance at another Guinness Book
Income Disparity Record.  If the wages go up, the jobs get much more attractive
to America’s youth.  If demand for those jobs goes up, we need more training
institutes for whatever technical jobs are in more demand.  Kids will go to
college and get smart if there is a path to riches.  Right now, average wages
for many of these jobs are comfortably nice, but they don’t scream, “Learn me,
you can vacation in Park City every year and drive an Escalade!”&lt;/p&gt;

&lt;p class=MsoNormal&gt;The H1B keeps kids from seeing any American Dream, so the
ones lucky enough to afford college just get yet another Art History Degree and
fill out that McDonald’s job application.&lt;/p&gt;

&lt;p class=MsoNormal&gt;I have met a few folks who have left tech for trade jobs,
because the pay is similar and the stress is lower. &lt;/p&gt;

&lt;p class=MsoNormal&gt;One might make a claim that there is a short term need for
the smart folk, as American kids aren’t up to speed yet.  I concede the
possibility, but how do we fix the cycle?  On our current path, it seems that we
don’t, we just continue to import cheap labor.&lt;/p&gt;

&lt;p class=MsoNormal&gt;The market only works for us if you let it.&lt;/p&gt;

&lt;p class=MsoNormal&gt;If that were the end of it, one might be able to let go.  As
it turns out, and I won’t pretend to know everything about these companies, &lt;a
href="http://en.wikipedia.org/wiki/Mahindra_Satyam"&gt;many&lt;/a&gt; &lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/Satyam-Computer-Services/475873.htm"&gt;of&lt;/a&gt;
the &lt;a href="http://en.wikipedia.org/wiki/Tata_Consultancy_Services"&gt;big&lt;/a&gt; &lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/Tata-Consultancy-Services/528236.htm"&gt;consumers&lt;/a&gt;
of &lt;a
href="http://en.wikipedia.org/wiki/Cognizant_Technology_Solutions#Offshoring_and_hiring_in_the_U.S."&gt;H1Bs&lt;/a&gt;
&lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/Cognizant-Technology-Solutions/119153.htm"&gt;are&lt;/a&gt;
foreign &lt;a href="http://en.wikipedia.org/wiki/Larsen_%26_Toubro_Infotech"&gt;owned&lt;/a&gt;
&lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/Larsen-Toubro-Infotech/312628.htm"&gt;companies&lt;/a&gt;
&lt;a href="http://en.wikipedia.org/wiki/IGATE_Patni"&gt;who&lt;/a&gt; &lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/Patni-Americas/788815.htm"&gt;rarely&lt;/a&gt;
hire &lt;a href="http://en.wikipedia.org/wiki/HCL_Technologies"&gt;Americans&lt;/a&gt; &lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/HCL-Technologies-America/239259.htm"&gt;and&lt;/a&gt;
specialize in &lt;a href="http://en.wikipedia.org/wiki/Wipro"&gt;filling&lt;/a&gt; &lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/Wipro/600708.htm"&gt;headcount&lt;/a&gt;
for &lt;a href="http://en.wikipedia.org/wiki/Infosys"&gt;companies&lt;/a&gt; &lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/Infosys-Limited/1088782.htm"&gt;who&lt;/a&gt;
can’t get H1Bs or have more than their fair share. These companies are
funneling their revenue right out of America.  These aren’t even American
companies in need of talent, hoping they can compete!&lt;/p&gt;

&lt;p class=MsoNormal&gt;Don’t get me wrong, I don’t hate foreigners; I worked with
some great ones at MS and many great ones at T-Mobile.  What I want is to
protect America, its future, and its market for high paying jobs.  Keeping
wages low in this manner hurts America.  We need to fix this for our children.&lt;/p&gt;

&lt;p class=MsoNormal&gt;H1B visas are nothing more than a way to keep money out of
the hands of &lt;a href="http://www.myvisajobs.com/Visa-Sponsor/Google/225093.htm"&gt;workers&lt;/a&gt;
&lt;a href="http://www.myvisajobs.com/Visa-Sponsor/Yahoo/606633.htm"&gt;and&lt;/a&gt; &lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/Microsoft/356252.htm"&gt;in&lt;/a&gt; &lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/Intel/267260.htm"&gt;the&lt;/a&gt; &lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/IBM/54.htm"&gt;hands&lt;/a&gt; &lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/Oracle/470.htm"&gt;of&lt;/a&gt; &lt;a
href="http://www.myvisajobs.com/Visa-Sponsor/JPMorgan-Chase/290601.htm"&gt;execs&lt;/a&gt;
&lt;a href="http://www.myvisajobs.com/Visa-Sponsor/Goldman-Sachs/209527.htm"&gt;and&lt;/a&gt;
&lt;a href="http://www.myvisajobs.com/Visa-Sponsor/Hewlett-Packard/243291.htm"&gt;larger&lt;/a&gt;
&lt;a href="http://www.myvisajobs.com/Visa-Sponsor/Bank-America/60293.htm"&gt;shareholders&lt;/a&gt;.
&lt;/p&gt;

&lt;p class=MsoNormal&gt;Taking a look at some of the top H1B sponsors, I can’t help
but notice three distinct categories.  We have offshore consultancies, household
name tech companies, and banks/wall street firms. None of these companies are
lacking in cash to bump up the pay of their employees or to fund training and education
for the lesser employees with potential.  &lt;a
href="http://www.jimcollins.com/article_topics/articles/expensive-name-ceos.html"&gt;This&lt;/a&gt;
is &lt;a
href="http://www.slate.com/articles/business/moneybox/2006/03/grossup_gross_out.html"&gt;pure&lt;/a&gt;
&lt;a
href="http://www.dailyfinance.com/2012/03/26/tales-from-the-crypt-more-horrifying-ceo-pay-pack/"&gt;greed&lt;/a&gt;.  
&lt;/p&gt;

&lt;p class=MsoNormal&gt;Here a look at H1B data for 2001 – 2012&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style='font-size:14.0pt;line-height:115%'&gt;Household
Names&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=483
 style='width:362.0pt;margin-left:4.5pt;border-collapse:collapse'&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;b&gt;&lt;span style='color:black'&gt;Employer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border:solid windowtext 1.0pt;
  border-left:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;b&gt;&lt;span style='color:black'&gt;Denied&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border:solid windowtext 1.0pt;
  border-left:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;b&gt;&lt;span style='color:black'&gt;Requested&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Microsoft Corporation&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;206&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;38001&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;IBM Corporation&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;416&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;25067&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Oracle Corporation&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;177&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;12587&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Intel Corporation&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;86&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;11686&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Qualcomm Inc&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;79&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;8492&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Accenture Ltd&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;57&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;6637&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Cisco Systems, Inc&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;125&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;6273&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Google Inc&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;30&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;6241&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Hewlett-Packard Company&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;98&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;5907&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;CVS Rx Services, Inc. dba CVS Pharmacy&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;47&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;5804&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Rite Aid Corporation&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;89&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;5385&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style='font-size:14.0pt;line-height:115%'&gt;Wall
Street&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=483
 style='width:362.0pt;margin-left:4.5pt;border-collapse:collapse'&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;b&gt;&lt;span style='color:black'&gt;Employer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border:solid windowtext 1.0pt;
  border-left:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;b&gt;&lt;span style='color:black'&gt;Denied&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border:solid windowtext 1.0pt;
  border-left:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;b&gt;&lt;span style='color:black'&gt;Requested&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;CitiGroup&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;187&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;8147&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;JPMorgan Chase &amp;amp; Co&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;75&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;6564&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Goldman, Sachs &amp;amp; CO&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;51&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;6527&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Bank of America&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;79&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;4304&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Merrill Lynch &amp;amp; Co., Inc&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;65&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;4140&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Credit Suisse First Boston&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;55&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;3760&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;UBS AG&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;61&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;3659&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Capital One Financial Corp&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;65&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;3648&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style='font-size:14.0pt;line-height:115%'&gt;Offshore
Consultancies &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=483
 style='width:362.0pt;margin-left:4.5pt;border-collapse:collapse'&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;b&gt;&lt;span style='color:black'&gt;Employer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border:solid windowtext 1.0pt;
  border-left:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;b&gt;&lt;span style='color:black'&gt;Denied&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border:solid windowtext 1.0pt;
  border-left:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;b&gt;&lt;span style='color:black'&gt;Requested&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Satyam Computer Services, Ltd&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;163&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;29824&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Tata Consultancy Services&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;155&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;17996&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Infosys Limited&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;222&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;16013&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Larsen &amp;amp; Toubro Infotech Limited&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;83&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;14105&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Wipro Limited&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;67&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;13420&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Infosys Technologies Limited&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;55&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;10139&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Cognizant Technology Solutions&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;368&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;9375&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='height:15.0pt'&gt;
  &lt;td width=319 nowrap valign=bottom style='width:239.0pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&gt;&lt;span style='color:black'&gt;Patni Americas, Inc&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=100 nowrap valign=bottom style='width:75.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;80&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=64 nowrap valign=bottom style='width:48.0pt;border-top:none;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt;height:15.0pt'&gt;
  &lt;p class=MsoNormal align=right style='margin-bottom:0in;margin-bottom:.0001pt;
  text-align:right;line-height:normal'&gt;&lt;span style='color:black'&gt;8146&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;Well, at least Steve Ballmer gets to keep his fleet of
Ferraris.&lt;/p&gt;

&lt;p class=MsoNormal&gt;…And Larry Ellison gets to keep tropical islands. &lt;/p&gt;

&lt;p class=MsoNormal&gt;…and our children will get to keep…what&lt;a name="_GoBack"&gt;&lt;/a&gt;?&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;
&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/zOg7sxUdmMo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/1398084699552169061/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=1398084699552169061" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/1398084699552169061?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/1398084699552169061?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/zOg7sxUdmMo/senators-marco-rubio-orrin-hatch-amy.html" title="Senators Marco Rubio, Orrin Hatch, Amy Klobuchar hate America" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>13</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2013/02/senators-marco-rubio-orrin-hatch-amy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMDSXoyeip7ImA9WhNbEkQ.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-7485970339411486511</id><published>2013-01-15T14:32:00.000-08:00</published><updated>2013-01-15T15:27:58.492-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-15T15:27:58.492-08:00</app:edited><title>NTLM hasn’t been relevant for like 12 years... and other lies.</title><content type="html">
&lt;head&gt;
&lt;meta http-equiv=Content-Type content="text/html; charset=windows-1252"&gt;
&lt;meta name=Generator content="Microsoft Word 12 (filtered)"&gt;
&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
 {font-family:Wingdings;
 panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
 {font-family:"Cambria Math";
 panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
 {font-family:Cambria;
 panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
 {font-family:Calibri;
 panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
 {font-family:Tahoma;
 panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:0in;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
h1
 {mso-style-link:"Heading 1 Char";
 margin-top:24.0pt;
 margin-right:0in;
 margin-bottom:0in;
 margin-left:0in;
 margin-bottom:.0001pt;
 line-height:115%;
 page-break-after:avoid;
 font-size:14.0pt;
 font-family:"Cambria","serif";
 color:#365F91;}
h2
 {mso-style-link:"Heading 2 Char";
 margin-top:10.0pt;
 margin-right:0in;
 margin-bottom:0in;
 margin-left:0in;
 margin-bottom:.0001pt;
 line-height:115%;
 page-break-after:avoid;
 font-size:13.0pt;
 font-family:"Cambria","serif";
 color:#4F81BD;}
a:link, span.MsoHyperlink
 {color:blue;
 text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
 {color:purple;
 text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
 {mso-style-link:"Balloon Text Char";
 margin:0in;
 margin-bottom:.0001pt;
 font-size:8.0pt;
 font-family:"Tahoma","sans-serif";}
span.Heading1Char
 {mso-style-name:"Heading 1 Char";
 mso-style-link:"Heading 1";
 font-family:"Cambria","serif";
 color:#365F91;
 font-weight:bold;}
span.BalloonTextChar
 {mso-style-name:"Balloon Text Char";
 mso-style-link:"Balloon Text";
 font-family:"Tahoma","sans-serif";}
span.Heading2Char
 {mso-style-name:"Heading 2 Char";
 mso-style-link:"Heading 2";
 font-family:"Cambria","serif";
 color:#4F81BD;
 font-weight:bold;}
@page WordSection1
 {size:8.5in 11.0in;
 margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
 {page:WordSection1;}
 /* List Definitions */
 ol
 {margin-bottom:0in;}
ul
 {margin-bottom:0in;}
--&gt;
&lt;/style&gt;

&lt;/head&gt;

&lt;body lang=EN-US link=blue vlink=purple&gt;

&lt;div class=WordSection1&gt;

&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal'&gt;&lt;span style='font-size:11.5pt;font-family:"Arial","sans-serif";
color:black'&gt;A surprising number of foolish Slashdotters have pointed out that
my latest work, &lt;a
href="http://markgamache.blogspot.com/2013/01/ntlm-challenge-response-is-100-broken.html"&gt;breaking
the NTLM and LM handshakes and phishing for users’ NT hashes&lt;/a&gt;, is totally
irrelevant and has been for 12ish years. &amp;nbsp;&lt;/span&gt;&lt;span style='font-size:
13.5pt;font-family:"Times New Roman","serif";color:black'&gt;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style='font-size:11.5pt;font-family:"Arial","sans-serif";
color:black'&gt;As a fan of debate, I’ll start with points that are interesting
but have no real bearing on the topic.&lt;/span&gt;&lt;/p&gt;

&lt;ul type=disc&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Slashdotters are
     clearly &lt;a
     href="http://it.slashdot.org/comments.pl?sid=3368135&amp;amp;cid=42526775"&gt;not
     qualified&lt;/a&gt; to make this assessment. &amp;nbsp;Their &lt;a
     href="http://www.logicalfallacies.info/relevance/appeals/appeal-to-authority/"&gt;Appeal
     to Authority&lt;/a&gt; fails. &lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Microsoft
     wouldn’t issue an &lt;a
     href="http://technet.microsoft.com/en-us/security/advisory/973811"&gt;advisory&lt;/a&gt;
     and &lt;a href="http://support.microsoft.com/kb/2793313"&gt;Fix-It&lt;/a&gt; if it
     weren’t relevant. &amp;nbsp;My Appeal to Authority is better than theirs.
     &amp;nbsp;;-) &lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;The existence of
     one a newer protocol, Kerberos, does not make NTLM simply disappear.&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Wikipedia
     actually &lt;a href="http://en.wikipedia.org/wiki/NTLM#NTLM_and_Kerberos"&gt;doesn’t
     say NTLM is long dead&lt;/a&gt;. &amp;nbsp;Wikipedia as an appeal to authority is a
     joke. &amp;nbsp;I link to it regularly, not for its completeness, but because
     it is written for a &lt;a
     href="http://it.slashdot.org/comments.pl?sid=3368135&amp;amp;cid=42526807"&gt;layman
     audience&lt;/a&gt;. &amp;nbsp;It is a great place to start if you don’t know
     something.&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;I’m not a &lt;a
     href="http://it.slashdot.org/comments.pl?sid=3368135&amp;amp;cid=42527463"&gt;Linux
     fanboy looking to disgrace MS&lt;/a&gt;. &amp;nbsp;I’m a long time &lt;a
     href="http://www.microsoft.com/learning/en/us/mcse-certification.aspx"&gt;MCSE&lt;/a&gt;
     and even gave MS some props in my post. &amp;nbsp;&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Finally, my work
     is what it is, probably the last nail, of hundreds, in the coffin. &amp;nbsp;I
     make no claim to it being inspired by God.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal'&gt;&lt;span style='font-size:13.5pt;font-family:"Times New Roman","serif";
color:black'&gt;&lt;br&gt;
&lt;/span&gt;&lt;span style='font-size:11.5pt;font-family:"Arial","sans-serif";
color:black'&gt;Now to the relevant details... &amp;nbsp;When MS introduced &lt;a
href="http://technet.microsoft.com/en-us/library/bb742516.aspx"&gt;Active
Directory in Windows 2000&lt;/a&gt;, they implemented &lt;a
href="http://web.mit.edu/kerberos/"&gt;Kerberos 5&lt;/a&gt; as the default
authentication protocol &lt;b&gt;FOR DOMAIN ACCOUNTS&lt;/b&gt;. This is a pretty important
requirement. If a machine is &lt;a
href="http://windows.microsoft.com/en-US/windows-vista/Join-or-create-a-workgroup"&gt;not
domain joined&lt;/a&gt;, or the account is not a &lt;a
href="http://msdn.microsoft.com/en-us/library/dd451959.aspx"&gt;domain account&lt;/a&gt;,
Kerberos is not an option. The upside here is that when machines are in
workgroups, it is much less likely that the accounts will have any sort of
value off of the host. &amp;nbsp;However, this does not stop the &lt;a
href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa380493(v=vs.85).aspx"&gt;SSPI&lt;/a&gt;
from trying to authenticate using your &lt;a
href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa374731(v=vs.85).aspx"&gt;cached
account credentials&lt;/a&gt; when accessing resources that are not on the host.
&amp;nbsp;This means a workgroup host could still be vulnerable to my “&lt;a
href="http://markgamache.blogspot.com/2013/01/ntlm-challenge-response-is-100-broken.html"&gt;Send
the Hash&lt;/a&gt;” attack if not &lt;a href="http://support.microsoft.com/kb/2793313"&gt;properly
configured&lt;/a&gt;.&lt;/span&gt;&lt;span style='font-size:13.5pt;font-family:"Times New Roman","serif";
color:black'&gt;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style='font-size:11.5pt;font-family:"Arial","sans-serif";
color:black'&gt;Even for machines that are domain joined, while Kerberos is the
default, NTLM is used in several situations:&lt;/span&gt;&lt;/p&gt;

&lt;ul type=disc&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;If the service
     is not Kerberos enabled (Kerberized). &amp;nbsp;Maybe it runs on an NT server?&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;The
     service/server does not have a Service Principal Name (SPN) registered.&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;The
     service/server has duplicate SPNs registered. &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;When accessing
     the system by IP rather than name.&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Improperly built
     clusters.&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;3rd party system
     implemented incorrectly.&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;When accessing
     data across forests, using an older domain type trust.&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;When the client
     can’t access a KDC/DC, such as when it is outside the firewall.&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;When the KDC/DC
     is behind NAT.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal'&gt;&lt;span style='font-size:13.5pt;font-family:"Times New Roman","serif";
color:black'&gt;&lt;br&gt;
&lt;/span&gt;&lt;span style='font-size:11.5pt;font-family:"Arial","sans-serif";
color:black'&gt;Before getting in depth with a couple of these cases, I’ll make a
generalization, “Kerberos is very hard to get right, except under simple
conditions.”&lt;/span&gt;&lt;span style='font-size:13.5pt;font-family:"Times New Roman","serif";
color:black'&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span class=Heading1Char&gt;&lt;span style='font-size:14.0pt'&gt;Outside the
Firewall or Behind NAT&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:13.5pt;font-family:
"Times New Roman","serif";color:black'&gt;&lt;br&gt;
&lt;/span&gt;&lt;span style='font-size:11.5pt;font-family:"Arial","sans-serif";
color:black'&gt;MS’s implementation of Kerberos requires that the clients, servers,
and &lt;a
href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa378170(v=vs.85).aspx"&gt;KDC&lt;/a&gt;/DCs
all be on the same routed network with AD integrated DNS or DDNS that allows
the DCs to register &lt;a href="http://en.wikipedia.org/wiki/SRV_record"&gt;SRV&lt;/a&gt;
records. The clients must be able to find and access the KDCs to get Kerberos
tickets. &amp;nbsp;I am not going to cover all the details of Kerberos, but this is
a key difference. &amp;nbsp;With NTLM, the server you want to access does the job
of finding a DC and getting the DC to validate the challenge/response after
your client has done its handshake. &amp;nbsp;The resource server passes the
challenge and response to the DC over RPC using &lt;a
href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms678509(v=vs.85).aspx"&gt;packet
privacy&lt;/a&gt; and gets back a pass/fail and a list of group memberships which it
uses to build the user’s &lt;a
href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa374909(v=vs.85).aspx"&gt;access
token&lt;/a&gt;. This is super simple and easy when the client is outside your
firewall. &amp;nbsp;You only need to open one port, the application's port. &amp;nbsp;&lt;/span&gt;&lt;span
style='font-size:13.5pt;font-family:"Times New Roman","serif";color:black'&gt;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style='font-size:11.5pt;font-family:"Arial","sans-serif";
color:black'&gt;If you intend to make Windows Kerberos work across NAT or behind a
firewall, prepare for pain. &amp;nbsp;Each Windows client has a component called
the &lt;a
href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms675983(v=vs.85).aspx"&gt;dcLocator&lt;/a&gt;.
&amp;nbsp;Its exact operations vary slightly from version to version of Windows.
&amp;nbsp;You might think you just need to open up TCP88 to a KDC and you’re set.
&amp;nbsp;You might get a pony in the mail too. &amp;nbsp;&lt;/span&gt;&lt;span
style='font-size:13.5pt;font-family:"Times New Roman","serif";color:black'&gt;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style='font-size:11.5pt;font-family:"Arial","sans-serif";
color:black'&gt;I’ll blog on the exact details at some point, but the dcLocator
first needs to find the KDC DNS SRV records in the &lt;a
href="http://support.microsoft.com/kb/817470"&gt;_msdcs&lt;/a&gt;.domainname.org zone.
&amp;nbsp;Right off the bat, this means that you need &lt;a
href="http://en.wikipedia.org/wiki/Split-horizon_DNS"&gt;split DNS&lt;/a&gt;, as the
answers inside your firewall will not be the same IP as outside. Once you have
your external DNS zone and main DC records, the client will ping all the DCs
and select the fastest to respond. If ICMP is blocked, nothing proceeds. The
client sends a &lt;a href="http://www.networksorcery.com/enp/protocol/cldap.htm"&gt;CLDAP&lt;/a&gt;
query to the fastest DC. This is connectionless LDAP over 389 UDP. &amp;nbsp;This
query is to ask which &lt;a
href="http://technet.microsoft.com/en-us/library/cc782048(v=ws.10).aspx"&gt;AD
site&lt;/a&gt; the client is a member of. &amp;nbsp;This query is not answered in a
traditional way, based on the &lt;a
href="http://www.rfc-editor.org/rfc/rfc2254.txt"&gt;filter&lt;/a&gt;. &amp;nbsp;Instead, AD
uses the source IP to map the IP to an &lt;a
href="http://technet.microsoft.com/en-us/library/cc754697.aspx"&gt;AD subnet&lt;/a&gt;
which maps to an AD site, which the LDAP search response will contain. &amp;nbsp;If
your client is behind NAT, then the source IP will likely be a SNAT address.
&amp;nbsp;From this response, the dcLocator then does a second DNS SRV query to get
the DCs that are in the AD site returned from the CLDAP query. &amp;nbsp;The
dcLocator then pings each of those DCs and the first to respond is queried and
if the response is satisfactory, then this becomes the default DC for a period
of time. &amp;nbsp;This time can vary by OS version. &amp;nbsp;Now we are ready to do
Kerberos. Some versions of Windows try UDP88 first and then when they get back
the “response too large” they try TCP88 route. If UDP is blocked, these
versions may not try TCP88 even if it is open. I will not be swearing to this
in court as it has been over a year since I configured this type of scenario
and I am writing this without a net. &amp;nbsp;&lt;/span&gt;&lt;span style='font-size:13.5pt;
font-family:"Times New Roman","serif";color:black'&gt;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style='font-size:11.5pt;font-family:"Arial","sans-serif";
color:black'&gt;This means, that for Kerberos to work outside the firewall or
behind NAT, you need to:&lt;/span&gt;&lt;/p&gt;

&lt;ul type=disc&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Setup Split DNS&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Create at least
     one domain level SRV pointing to the external IP address&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Create a site
     DNS SRV record for EVERY DC in the default site, pointing to the external
     IP address.&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Open port 389
     UDP&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Open port 88 UDP&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Open Port 88 TCP&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style='color:black;line-height:normal;vertical-align:baseline'&gt;&lt;span
     style='font-size:11.5pt;font-family:"Arial","sans-serif"'&gt;Open ICMP&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style='font-size:11.5pt;line-height:115%;
font-family:"Arial","sans-serif";color:black'&gt;Kerberos Diagram&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style='font-size:11.5pt;line-height:115%;
font-family:"Arial","sans-serif";color:black'&gt;&lt;img border=0 width=370
height=395 id="Picture 0" src="https://s3.amazonaws.com/markgamache/KerbHard.gif"
alt=KerbHard.gif&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:13.5pt;line-height:115%;font-family:
"Times New Roman","serif";color:black'&gt;&lt;br&gt;
&lt;/span&gt;&lt;span style='font-size:11.5pt;line-height:115%;font-family:"Arial","sans-serif";
color:black'&gt;NTLM is a lot easier to use in both NAT and outside the firewall scenarios.
&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:11.5pt;line-height:115%;font-family:
"Arial","sans-serif";color:black'&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;NTLM Diagram&lt;/b&gt;&lt;span style='font-size:13.5pt;line-height:
115%;font-family:"Times New Roman","serif"'&gt;&lt;br&gt;
&lt;img border=0 width=328 height=346 id="Picture 1"
src="https://s3.amazonaws.com/markgamache/NTLMEasy.gif" alt=NTLMEasy.gif&gt;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span class=Heading1Char&gt;&lt;span style='font-size:14.0pt;line-height:115%'&gt;Messed
up SPN &lt;/span&gt;&lt;/span&gt;&lt;span class=Heading1Char&gt;&lt;span style='font-size:14.0pt;
line-height:115%'&gt;Scenarios&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;A &lt;a
href="http://web.mit.edu/kerberos/krb5-1.11/doc/admin/princ_dns.html"&gt;&lt;span
style='font-size:11.5pt;line-height:115%;font-family:"Arial","sans-serif"'&gt;Service
Principal Name&lt;/span&gt;&lt;/a&gt; (&lt;a
href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms677949(v=vs.85).aspx"&gt;&lt;span
style='font-size:11.5pt;line-height:115%;font-family:"Arial","sans-serif"'&gt;SPN&lt;/span&gt;&lt;/a&gt;)
maps an instance of a service running on a server to the account that it runs
under. &amp;nbsp;Kerberos uses shared secrets, between each party and the KDC/DC,
to allow for authentication and key exchange. &amp;nbsp;When a client wants to use
a service, it asks the KDC for a ticket to the specific service/server combination.
&amp;nbsp;The ticket is encrypted by the KDC so that only the service can open it.
&amp;nbsp;If there is no SPN registered for the service, a ticket can’t be
granted. &amp;nbsp;If two accounts have the SPN registered, the ticket cannot be
granted. &amp;nbsp;If the service is running under the context of a different
account, the ticket cannot be decrypted. &amp;nbsp;&lt;span style='font-size:13.5pt;
line-height:115%;font-family:"Times New Roman","serif"'&gt;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span class=Heading2Char&gt;&lt;span style='font-size:13.0pt;line-height:115%'&gt;Clusters&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;Many web admins just allow their &lt;a
href="http://technet.microsoft.com/en-us/library/cc735247(v=ws.10).aspx"&gt;&lt;span
style='font-size:11.5pt;line-height:115%;font-family:"Arial","sans-serif"'&gt;appPools&lt;/span&gt;&lt;/a&gt;
to run as local system or network service. &amp;nbsp;This means they are running
under the machine account, which is a domain account and has an SPN or at least
can have one. &amp;nbsp;In order to make your cluster work with Kerberos, all appPools
must run under the same domain account and usually an SPN must be manually
created by an admin.&amp;nbsp;MS has made some &lt;a
href="http://blogs.msdn.com/b/sudeepg/archive/2009/02/08/iis-7-kernel-mode-authentication.aspx"&gt;&lt;span
style='font-size:11.5pt;line-height:115%;font-family:"Arial","sans-serif"'&gt;changes
to IIS&lt;/span&gt;&lt;/a&gt; to make this easier, but in many cases it is out of the
frying pan...&lt;span style='font-size:13.5pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span class=Heading2Char&gt;&lt;span style='font-size:13.0pt;line-height:115%'&gt;SQL&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;SQL server tries to register its SPN whenever it comes online.
&amp;nbsp;If you are following best practices, and using a domain account to run
SQL, then SQL will try to register the SPN attribute on that account.
&amp;nbsp;This is a proper configuration, however most accounts so not have the
SELF write SPN permission (&lt;a
href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa374868(v=vs.85).aspx"&gt;&lt;span
style='font-size:11.5pt;line-height:115%;font-family:"Arial","sans-serif"'&gt;ACE&lt;/span&gt;&lt;/a&gt;),
and fail. &amp;nbsp;This means that Kerberos won't work and NTLM is negotiated. &lt;/p&gt;

&lt;h2&gt;&lt;br&gt;
Connection by IP Address&lt;/h2&gt;

&lt;p class=MsoNormal&gt;This fails as there is not an SPN set that uses the IP, such
as HTTP/10.0.0.5. Rather the SPN is HTTP/www.domain.com. &amp;nbsp;This can be
overcome by registering the IP SPN, but does not scale well. &amp;nbsp;I’ve thought
about building a simple tool to do this, but my list of to-dos is long. &lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;In the end, the threat and attack models are very different for
the enterprise and stand alone users. &lt;/p&gt;

&lt;h1&gt;Enterprise Exposure&lt;/h1&gt;

&lt;p class=MsoNormal&gt;The enterprise is likely to block many outgoing ports,
making it less likely that “send the hash” attacks will succeed.  This however
doesn’t mean there is no risk from NTLMv1.  With any type of foothold, the
attack is VERY effective.  All it takes is one compromised host, one badge not
checked, a network port activated outside of your secure areas, etc.&lt;/p&gt;

&lt;p class=MsoNormal&gt;Enterprise users spend time in hotels, airports, hospitals, etc.  These types of places are ripe for the picking.  &lt;/p&gt;

&lt;h1&gt;Workgroup Exposure&lt;/h1&gt;

&lt;p class=MsoNormal&gt;For workgroup members, the threats vary considerably.  The
user may spend much of their time behind NAT, which may make it hard for an
attacker who steals a hash to use it.  The user may spend time in coffee shops,
etc, making them ripe for attack.&lt;/p&gt;

&lt;h1&gt;Summary&lt;/h1&gt;

&lt;p class=MsoNormal&gt;While Kerberos is more secure than NTLMv2, it is not really
fair to say it is better. &amp;nbsp;They both have pros and cons. &amp;nbsp;NTLM is
VERY commonly used today both by design and due to it being a fallback for
failed Kerberos.  Depending on your systems’ settings, you may be sending LM
and NTLMv1.  ALL VERSIONS of Windows still accept LM and NTLM by default, so
you may still be allowing the issue. You may not be initiating dirty handshakes,
but you will accept them if offered. &lt;/p&gt;

&lt;p class=MsoNormal&gt;Finally, the fix is very simple. There is almost no &lt;a
href="http://blogs.technet.com/b/askds/archive/2009/10/08/ntlm-blocking-and-you-application-analysis-and-auditing-methodologies-in-windows-7.aspx"&gt;downside&lt;/a&gt;
to making the change. If due to some crazy twist of fate you have a system that only works with NTLMv1 or LM, that system will break. &lt;br&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/B_ffD51r0yc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/7485970339411486511/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=7485970339411486511" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/7485970339411486511?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/7485970339411486511?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/B_ffD51r0yc/ntlm-hasnt-been-relevant-for-like-12.html" title="NTLM hasn’t been relevant for like 12 years... and other lies." /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2013/01/ntlm-hasnt-been-relevant-for-like-12.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cDSH0yfCp7ImA9WhNbFE0.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-8193389423091902167</id><published>2013-01-08T10:00:00.000-08:00</published><updated>2013-01-16T21:37:59.394-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-16T21:37:59.394-08:00</app:edited><title>NTLM Challenge Response is 100% Broken (Yes, this is still relevant)</title><content type="html">&lt;head&gt;


&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
 {font-family:Wingdings;
 panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
 {font-family:"Cambria Math";
 panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
 {font-family:Cambria;
 panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
 {font-family:Calibri;
 panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
 {font-family:Tahoma;
 panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
 {font-family:"Segoe UI";
 panose-1:2 11 5 2 4 2 4 2 2 3;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:0in;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
h1
 {mso-style-link:"Heading 1 Char";
 margin-top:24.0pt;
 margin-right:0in;
 margin-bottom:0in;
 margin-left:0in;
 margin-bottom:.0001pt;
 line-height:115%;
 page-break-after:avoid;
 font-size:14.0pt;
 font-family:"Cambria","serif";
 color:#365F91;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
 {mso-style-link:"Title Char";
 margin-top:0in;
 margin-right:0in;
 margin-bottom:15.0pt;
 margin-left:0in;
 border:none;
 padding:0in;
 font-size:26.0pt;
 font-family:"Cambria","serif";
 color:#17365D;
 letter-spacing:.25pt;}
p.MsoTitleCxSpFirst, li.MsoTitleCxSpFirst, div.MsoTitleCxSpFirst
 {mso-style-link:"Title Char";
 margin:0in;
 margin-bottom:.0001pt;
 border:none;
 padding:0in;
 font-size:26.0pt;
 font-family:"Cambria","serif";
 color:#17365D;
 letter-spacing:.25pt;}
p.MsoTitleCxSpMiddle, li.MsoTitleCxSpMiddle, div.MsoTitleCxSpMiddle
 {mso-style-link:"Title Char";
 margin:0in;
 margin-bottom:.0001pt;
 border:none;
 padding:0in;
 font-size:26.0pt;
 font-family:"Cambria","serif";
 color:#17365D;
 letter-spacing:.25pt;}
p.MsoTitleCxSpLast, li.MsoTitleCxSpLast, div.MsoTitleCxSpLast
 {mso-style-link:"Title Char";
 margin-top:0in;
 margin-right:0in;
 margin-bottom:15.0pt;
 margin-left:0in;
 border:none;
 padding:0in;
 font-size:26.0pt;
 font-family:"Cambria","serif";
 color:#17365D;
 letter-spacing:.25pt;}
a:link, span.MsoHyperlink
 {color:blue;
 text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
 {color:purple;
 text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
 {mso-style-link:"Balloon Text Char";
 margin:0in;
 margin-bottom:.0001pt;
 font-size:8.0pt;
 font-family:"Tahoma","sans-serif";}
p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
 {margin:0in;
 margin-bottom:.0001pt;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:.5in;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:0in;
 margin-left:.5in;
 margin-bottom:.0001pt;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:0in;
 margin-left:.5in;
 margin-bottom:.0001pt;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:.5in;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
span.Heading1Char
 {mso-style-name:"Heading 1 Char";
 mso-style-link:"Heading 1";
 font-family:"Cambria","serif";
 color:#365F91;
 font-weight:bold;}
span.BalloonTextChar
 {mso-style-name:"Balloon Text Char";
 mso-style-link:"Balloon Text";
 font-family:"Tahoma","sans-serif";}
span.TitleChar
 {mso-style-name:"Title Char";
 mso-style-link:Title;
 font-family:"Cambria","serif";
 color:#17365D;
 letter-spacing:.25pt;}
.MsoPapDefault
 {margin-bottom:10.0pt;
 line-height:115%;}
@page WordSection1
 {size:8.5in 11.0in;
 margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
 {page:WordSection1;}
 /* List Definitions */
 ol
 {margin-bottom:0in;}
ul
 {margin-bottom:0in;}--&gt;
&lt;/style&gt;&lt;/head&gt;



&lt;body lang="EN-US" link="blue" vlink="purple"&gt;

&lt;div class="WordSection1"&gt;

&lt;div style="border-bottom: solid #4F81BD 1.0pt; border: none; padding: 0in 0in 4.0pt 0in;"&gt;

&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;Updated&lt;/b&gt; as it seems a lot of folks don't read.  The reason this attack is interesting is that I steal or phish the hash in the attack WITHOUT physical or administrative access. Yes, I am aware of the 30 amazing tools that "already did that" using local admin access. Also &lt;a href="http://markgamache.blogspot.com/2013/01/ntlm-hasnt-been-relevant-for-like-12.html"&gt;here&lt;/a&gt; for why this is still matters. 
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
First off, I can’t say I broke the NTLM handshake; the march
of time did it.&amp;nbsp; Apparently I am just the one who bothered to put it together.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
There have been numerous &lt;a href="http://www.slideshare.net/blackwhites/ntlm-unsafe"&gt;whitepapers&lt;/a&gt;, &lt;a href="http://www.defcon.org/images/defcon-16/dc16-presentations/defcon-16-grutzmacher.pdf"&gt;hacker
conference sessions&lt;/a&gt;, and &lt;a href="http://www.skullsecurity.org/blog/2008/lanman-and-ntlm-not-as-complex-as-you-think"&gt;blog
posts&lt;/a&gt; dedicated to the weaknesses of NTLM (and LM) authentication.&amp;nbsp; However,
the weaknesses described in previously published works were theoretical, or
required stealing hashes using admin rights. This means the host was already
compromised, thus the exploits themselves are a bit boring and redundant.&amp;nbsp; One
couldn’t just phish for the hashes or MITM the hashes; due to the challenge
response mechanism.&amp;nbsp;&amp;nbsp; The best case for getting to the hash or password from outside
the host was to do a MITM attack (or a phish) and substitute a chosen
challenge.&amp;nbsp; This only worked if the victim was willing to negotiate NTLM
without the Session Security Flag. This would then allow an attacker to build
rainbow tables to get the hash or password. Rather, the attacker probably
already had tables built for the chosen challenge.&amp;nbsp; This scenario is a pretty
high bar to reach.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
To frame the conversation, there are actually 4 handshakes
in the NTLM suite that move up in security and complexity. They are LM, NTLM,
NTLM with session security, and NTLMv2.&amp;nbsp; As of now, only NTLMv2 stands as
secure.&amp;nbsp; There is no way, other than encrypting your link with say IPSec, to
secure the 3 weak handshakes.&amp;nbsp; The good news is, all Microsoft OSs already have
a registry key that can control the handshakes options.&amp;nbsp; MS will release a &lt;a href="http://support.microsoft.com/kb/2793313"&gt;KB&lt;/a&gt; and &lt;a href="http://technet.microsoft.com/security/advisory/973811"&gt;Advisory&lt;/a&gt; on
1/8 on this and the information can be found below.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Now, thanks to Moxie Marlinspike’s &lt;a href="https://www.cloudcracker.com/"&gt;Cloudcracker&lt;/a&gt;, an attacker can skip the
pre-chosen challenge and brute force the challenge response to get the NTLM
hash.&amp;nbsp; If the victim is running XP, the situation is even worse, as
Cloudcracker will return the LM hash which can always be broken overnight to
derive the user’s password .&lt;/div&gt;
&lt;h1&gt;
Why Does this Matter Now?&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
Before I get to the exploit details, let me clarify how
relevant these technologies still are in today’s world. You might think that
with all the papers and presentations, no one would be using NTLM...or, God
forbid, LM. NTLMv2 has been around for quite some time. Surel&lt;a href="" name="_GoBack"&gt;&lt;/a&gt;y,
everyone is using it. Right?&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Wrong!&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
According to the last data from the &lt;a href="http://www.w3schools.com/browsers/browsers_os.asp"&gt;W3 Schools&lt;/a&gt;, 21% of
computers are running XP, while NetMarketShare claims it is &lt;a href="http://www.netmarketshare.com/operating-system-market-share.aspx?qprid=10&amp;amp;qpcustomd=0"&gt;39%&lt;/a&gt;.&amp;nbsp;
Unless someone has hardened these machines (no MS patches do this), these
machines are sending LM and NTLM responses!&amp;nbsp; While these lists leave out server
OSs, 2003 Server still sends NTLM responses by default.&amp;nbsp; Yes, every MS OS since
NT 4.0 SP4 has supported NTLMv2, but NTLM and LM were not excluded by default until
Vista. &amp;nbsp;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
But wait, there’s more! It is also very common for companies
that have heterogeneous environments to use Active Directory Group Policy to
keep the settings &lt;i&gt;weak&lt;/i&gt;, usually out of fear of breaking Samba
connectivity.&amp;nbsp; Sure, Samba has supported NTLMv2 for a long time, but most IT
folks tend to think “Why beef up security if you might break something? No one
is claiming to have broken NTLM.”&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Well, here it is: I’VE BROKEN NTLM. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Now, get to fixin’.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
More on fixin’ later.&amp;nbsp; (I can’t take credit for breaking NTLM.
I’m no math whiz. I just happen to specialize in applied crypto, and I looked
in the right place at the right time.)&lt;/div&gt;
&lt;h1&gt;
The Attack&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
When I read a summary of &lt;a href="https://www.cloudcracker.com/blog/2012/07/29/cracking-ms-chap-v2/"&gt;Moxie’s
MS-CHAPv2 crack&lt;/a&gt;, I saw that the big deal was not that the implementation
had some crazy flaw, it was that Moxie had affordably built a system that can
brute force the DES keys that make up the heart of the challenge response
mechanism.&amp;nbsp; In less than 24 hours, given a known 64 bit plaintext (challenge)
and a ciphertext (response), Cloudcracker can return the key to you.&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
This made me wonder what else was broken, given affordable
DES brute forcing now exists. &amp;nbsp;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
I didn’t dig a lot deeper into the attack at the time, as I
was researching NTLM so I could write a &lt;a href="http://markgamache.blogspot.com/2013/01/rehashing-pass-hash.html"&gt;blog
post on Pass the Hash Attacks&lt;/a&gt;.&amp;nbsp; I know this is well covered territory, but
I never found a paper that covered all my questions, so I figured I’d do it
myself.&amp;nbsp; Much of my research was done by reading the protocol details on Eric
Glass’s &lt;a href="http://davenport.sourceforge.net/ntlm.html"&gt;exhaustive page&lt;/a&gt;
on the topic. I’ve found no better source for understanding the protocols.&amp;nbsp; &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
That’s then I stumbled across this: (Bold added for emphasis.)&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;i&gt;The NTLM response is calculated as follows :&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;i&gt;The MD4 message-digest algorithm (described in &lt;/i&gt;&lt;a href="http://www.ietf.org/rfc/rfc1320.txt"&gt;&lt;i&gt;RFC 1320&lt;/i&gt;&lt;/a&gt;&lt;i&gt;) is applied
to the Unicode mixed-case password. This results in a 16-byte value - the NTLM
hash.&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;b&gt;&lt;i&gt;The 16-byte NTLM hash is null-padded to 21 bytes.&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;b&gt;&lt;i&gt;This value is split into three 7-byte thirds.&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;b&gt;&lt;i&gt;These values are used to create three DES keys (one
from each 7-byte third).&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;i&gt;Each of these keys is used to DES-encrypt the
challenge from the Type 2 message (resulting in three 8-byte ciphertext
values).&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
These three ciphertext values are concatenated to form a
24-byte value. This is the NTLM response.&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;b&gt;Note that only the calculation of the hash value
differs from the LM scheme; the response calculation is the same.&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
That’s right, to reverse the challenge response, I just need
to brute force two DES iterations that have 56 bit keys and one that only uses
2 bytes of the 56 bit key space for the last crack.&amp;nbsp; Moxie shows it like this,
for those who are more visual.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;img border="0" height="227" id="Picture 1" src="https://s3.amazonaws.com/markgamache/image001.png" width="608" /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
I immediately went to Moxie’s posts on the topic to figure
out how to use Cloudcracker to brute force out my hashes.&amp;nbsp; That’s when I
discovered that MS-CHAPv2 uses the EXACT same math as the LM and NTLM challenge
response.&amp;nbsp; Moxie was kind enough to point me to the &lt;a href="https://github.com/moxie0/chapcrack/blob/master/chapcrack/commands/ParseCommand.py#L59"&gt;line
in his code&lt;/a&gt; that demonstrates how one can submit the challenge and response
to Cloudcracker to get back the LM or NTLM hash.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;i&gt;print "CloudCracker Submission = $99$%s" %
base64.b64encode("%s%s%s%s" % (plaintext, c1, c2, k3[0:2]))&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Just concatenate your challenge, and the first two thirds of
your response, and k3 as base64 and Bob’s your uncle.&amp;nbsp; The only thing that
threw me was, why is k3 only 2 bytes?&amp;nbsp; To save on processing power, I assume,
you must brute force the final key before sending it to Cloudcraker, which just
appends it to the first two recovered keys and sends it back.&amp;nbsp; As the last key
is the one that has 5 bytes that are always all 00, this is easy.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Using Eric Glasses example, I sent in $99$ASNFZ4mrze8lqYwcMegYR0ZrKbLfRoDz2Ag=
&amp;nbsp;to Cloudcracker.&amp;nbsp; This is the challenge 0123456789ABCDEF, low response 25A98C1C31E81847,
mid response 466B29B2DF4680F3, and D808, the first two bytes of the final third
of the hash, which I brute forced locally.&amp;nbsp; If you decide to follow along with
me, make sure to look at Glass’s parity adjusting of the keys.&amp;nbsp; DES keys are
really 64 bit, not 56, but as the right bit of each byte is a parity bit, it
can’t count toward the total entropy or key space. &amp;nbsp;Or, you can just use his
provided &lt;a href="http://davenport.sourceforge.net/ntlm.html#appendixD"&gt;Java
code&lt;/a&gt;.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Then I just had to wait until I got an email with this:&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;i&gt;CloudCracker has successfully completed its attack
against your CHAPv2 handshake. The NT hash for the handshake is included below,
and can be plugged back into the 'chapcrack' tool to decrypt a packet capture,
or to authenticate to the server:&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;i&gt;cd06ca7c7e10c99b1d33b7485a2ed808&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;i&gt;This run took 68799 seconds. Thank you for using
cloudcracker.com, this concludes your job.&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
For those who missed it, I just got the NT hash from the
challenge and response, which are easily observed on the wire. &lt;b&gt;I just got
the hash WITHOUT compromising the host first&lt;/b&gt;.&amp;nbsp; To use this in an attack I just
need the right MITM foothold or a phishing email. &lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;
To: All Employees&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;
From: HR Communications&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;
Subject: Updates to the Employee
Handbook&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;
Body: Human Resources has completed
a significant rewrite and update to the Employee Handbook.&amp;nbsp; While some of the
changes are minor, it is worth a look for all employees.&amp;nbsp; Employees with aging
parents will likely be excited to see the increase in paid time off for
emergency care of elder dependents.&amp;nbsp; The guidelines for company events where
alcoholic beverages are provided have also been updated.&amp;nbsp; &lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;
Finally, with the passing of
Washington Initiative 502, we are publishing the new guidelines for Marijuana
in the work place. &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;
The handbook can be found here: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;
\\hrFiles.ru\HRFiles\EmployeeManualv3.docx&amp;nbsp;
&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;
Best Regards,&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;
Human Resources&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;I call this attack “Request the Hash”&lt;/b&gt;.&amp;nbsp; Sorry for the
pun, but who wouldn’t immediately click the link to find out their companies
new pot policy???&lt;/div&gt;
&lt;h1&gt;
The Good News&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
First of all, I commend MS for changing the default to
NLTMv2, as of Vista, and for leaving us the option if we just can’t live without
LM or NTLM.&amp;nbsp; At this point though, I think it is incumbent on MS to push the
issue at the local security policy level, letting domain administrators
override common sense as needed. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
There might be some testing and some interoperability
failures for enterprises, but the good news is the settings for LM, NTLM, and
NTLMv2 have been around a long time. The reg key HKLM\SYSTEM\CurrentControlSet\Control\Lsa\LmCompatibilityLevel
allows you to choose the level of fallback your system will allow.&amp;nbsp; Set this to
3 or greater for workstations and you are probably set. This situation is a bit
more complex as almost all windows computers are not just clients, but also
servers, offering you the admin$ share and c$, etc.&amp;nbsp; The same setting has
slightly different bearing on which versions the machine will accept when
acting as a server, say when doing remote administration of your desktops. This
&lt;a href="http://technet.microsoft.com/en-us/magazine/2006.08.securitywatch.aspx"&gt;great
article&lt;/a&gt;, by &lt;a href="http://www.eweek.com/c/a/Security/Microsoft-Security-Guru-Leaves-for-Amazoncom/"&gt;Jesper
Johansson&lt;/a&gt;, covers both the client and server aspect. &lt;b&gt;Personally, I am
setting all my systems to 5.&lt;/b&gt;&amp;nbsp; If you allow systems to be set below 5, you
may be masking the fact that clients are still performing NTLM or LM
handshakes.&amp;nbsp; &lt;/div&gt;
&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"&gt;
&lt;tr&gt;
  &lt;td style="border: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 36.9pt;" valign="top" width="49"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
Level&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-left: none; border: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 112.5pt;" valign="top" width="150"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
Group Policy Name&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-left: none; border: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 1.75in;" valign="top" width="168"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
Sends&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-left: none; border: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 81.0pt;" valign="top" width="108"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
Accepts&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-left: none; border: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 1.7in;" valign="top" width="163"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
Prohibits Sending&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td style="border-top: none; border: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 36.9pt;" valign="top" width="49"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
0&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 112.5pt;" valign="top" width="150"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;Send LM and NTLM Responses&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.75in;" valign="top" width="168"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;LM, NTLM,&lt;br /&gt;
  NTLMv2 Session Security is negotiated&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 81.0pt;" valign="top" width="108"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;LM, NTLM, NTLMv2&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.7in;" valign="top" width="163"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;NTLMv2&lt;br /&gt;
  Session Security (on Windows 2000 below SRP1, Windows NT 4.0, and Windows 9x)&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td style="border-top: none; border: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 36.9pt;" valign="top" width="49"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
1&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 112.5pt;" valign="top" width="150"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;Send LM and NTLM—use NTLMv2 session security if negotiated&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.75in;" valign="top" width="168"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;LM, NTLM&lt;br /&gt;
  NTLMv2 Session Security is negotiated&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 81.0pt;" valign="top" width="108"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;LM, NTLM, NTLMv2&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.7in;" valign="top" width="163"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;NTLMv2&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td style="border-top: none; border: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 36.9pt;" valign="top" width="49"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
2&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 112.5pt;" valign="top" width="150"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;Send NTLM response only&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.75in;" valign="top" width="168"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;NTLM,&lt;br /&gt;
  NTLMv2 Session Security is negotiated&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 81.0pt;" valign="top" width="108"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;LM, NTLM, NTLMv2&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.7in;" valign="top" width="163"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;LM and NTLMv2&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td style="border-top: none; border: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 36.9pt;" valign="top" width="49"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
3&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 112.5pt;" valign="top" width="150"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;Send NTLMv2 response only&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.75in;" valign="top" width="168"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;NTLMv2&lt;br /&gt;
  Session Security is always used&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 81.0pt;" valign="top" width="108"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;LM, NTLM, NTLMv2&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.7in;" valign="top" width="163"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;LM and NTLM&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td style="border-top: none; border: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 36.9pt;" valign="top" width="49"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
4&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 112.5pt;" valign="top" width="150"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;Send NTLMv2 response only/refuse LM&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.75in;" valign="top" width="168"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;NTLMv2 Session Security&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 81.0pt;" valign="top" width="108"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;NTLM, NTLMv2&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.7in;" valign="top" width="163"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;LM&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td style="border-top: none; border: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 36.9pt;" valign="top" width="49"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
5&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 112.5pt;" valign="top" width="150"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;Send NTLMv2 response only/refuse LM and NTLM&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.75in;" valign="top" width="168"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;NTLMv2,&lt;br /&gt;
  Session Security&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 81.0pt;" valign="top" width="108"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;NTLMv2&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 1.7in;" valign="top" width="163"&gt;
  &lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;
&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;LM and NTLM&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
You may ask, “Who cares if my server accepts LM or NTLM?”&amp;nbsp;
If not all your clients are managed, your server could be unwittingly used to
compromise an account used by a client with weak settings.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
I did a fresh Ubuntu install and verified that its SMB/CIFS
client only sent NTLMv2 response, even when I attempted to downgrade using &lt;a href="http://www.oxid.it/cain.html"&gt;Cain&lt;/a&gt;.&amp;nbsp; I have not yet had a chance to
test web browsers that support NTLM auth via SPNEGO.&amp;nbsp;&amp;nbsp; That’s right; most web browsers
perform &lt;a href="http://tools.ietf.org/html/rfc4559"&gt;NTLM auth in HTTP Headers&lt;/a&gt;
when a trusted site requests it.&amp;nbsp; &lt;/div&gt;
&lt;h1&gt;
A Reminder About the Downside of Doing Nothing&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
While web browsers only perform the NTLM auth for trusted
sites by default, generally, Windows OSs seem to make no distinction between
trusted and un-trusted zones for other protocols, such as CIFS/SMB, SQL/TDS,
and RPC.&amp;nbsp; This means that a phishing attack with a &lt;a href="file://server/share"&gt;file://server//share&lt;/a&gt; link could yield great
results for an attacker.&amp;nbsp; Based on the rapid succession of tries and retries,
it is safe to assume that the first 2 – 5 attempts by a machine are the OS, via
SSPI, trying to auth with the victim’s cached creds.&amp;nbsp; This means the attacker
does not need to see a successful auth to trust that the credentials are valid.
Maybe you took my advice on &lt;a href="http://markgamache.blogspot.com/2013/01/rehashing-pass-hash.html"&gt;Pass
the Hash&lt;/a&gt;, and blocked all the protocols that use NTLM, at your perimeter.&amp;nbsp;
This doesn’t stop one of your clients, say a laptop at home outside your
perimeter from trying to do something that won’t try an NTLM handshake. There
are just too many ways to fail, if you allow LM or NTLM in any context. OK, so
the attacker has the hash, but they are outside the firewall… You’re safe,
right?&amp;nbsp; No!&amp;nbsp; At this point, the attacker has a valid hash and is ready to use
the account to get your data.&amp;nbsp; Now the attacker has two options:&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpFirst" style="text-indent: -.25in;"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;If your system is sending LM responses, getting that hash makes
for super light work in cracking the password.&amp;nbsp; If you are sending the better
NTLM hash, you are still in hot water.&amp;nbsp; Cloudcracker also has a huge set of
rainbow tables.&amp;nbsp; For another $20 I can submit the hash and likely get the
password of an average user. There are surely plenty of ways inside your
perimeter with just username and password. Moxie, if you are reading this, how
about a one step operation (from the customer perspective) that pipes the
recovered hash into the rainbow tables after it’s been cracked. Maybe a price a
tad under $40 for the two cracks?&amp;nbsp; &lt;/div&gt;
&lt;div class="MsoListParagraphCxSpLast" style="text-indent: -.25in;"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;BUT WAIT!!&amp;nbsp; Attackers don’t need your stinking password! If I
have the hash, it is &lt;a href="http://markgamache.blogspot.com/2013/01/rehashing-pass-hash.html"&gt;password
equivalent&lt;/a&gt;! The first step of every auth involving NTLM and NTLMv2 is to convert
the password to the NT hash.&amp;nbsp; Your weak settings just saved the attacker a
step.&amp;nbsp; Once the hash has been stolen, the only ways to render it useless are to
change the password or remove all of the channels by which it can be passed. (The
latter feels infeasible).&amp;nbsp; &lt;/div&gt;
&lt;h1&gt;
Protecting Yourself and Your Company&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
If you are a lone user, make sure all of your systems are
set to LmCompatibilityLevel 3 or higher via &lt;a href="http://msdn.microsoft.com/en-us/library/ms814176.aspx"&gt;local security
policy&lt;/a&gt;, &lt;a href="http://technet.microsoft.com/en-us/library/hh125918(v=ws.10)#BKMK_49"&gt;group
policy&lt;/a&gt;, or via the &lt;a href="http://technet.microsoft.com/en-us/library/cc960646.aspx"&gt;registry key&lt;/a&gt;.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
If you are a corporate type, make sure the GPO is set to
force 3 or higher.&amp;nbsp; You may notice that levels 4 and 5 talk about domain
controllers refusing different levels.&amp;nbsp; This is not a great protection and may
even mask a problem.&amp;nbsp; While the DC blocking the LM auth passed by a client
won’t let the user access the system, the damage is already done: The LM
response was sent, and the attacker may have it.&amp;nbsp; Sure, it is nice for the
attacker to see the successful auth so they know the crack is worth the time,
but the rapid fails and retries will tell the attacker that the client OS had
the creds cached and the hash that was used is almost certainly good, at a
minimum on that client machine, if not the domain. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
If you are running a Samba client, enter this line ‘client
ntlmv2 auth’ into your smb.conf file. &lt;/div&gt;
&lt;h1&gt;
Final Paranoid Thought&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
If you have any of the weak settings, CHANGE YOUR PASSWORD
after fixing them! &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
I made this discovery when I realized DES was brute-forcible
on a budget.&amp;nbsp; I immediately started thinking of a list of all of the processes
that broke along with DES&lt;i&gt;.&amp;nbsp; I’m sure this is exactly the list that every
nations’ spy services started making when they acquired the computing power to
brute force DES.&lt;/i&gt;&amp;nbsp; I assume that it has been affordable for most of them for
5 – 10 years now.&amp;nbsp; &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Sorry, spies, if this closes a door for you.&amp;nbsp; I read a book
that says another one will open.&amp;nbsp; ;-) &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h1&gt;
Appendix A: Proof of Concept Code&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
In order to validate my work, I built a simple tool proof
the crypto and create the CloudCracker token.&amp;nbsp; First off, I am not a great or
professional coder, so don’t laugh when you look at the code.&amp;nbsp; Second, Eric
Glass’s &lt;a href="http://davenport.sourceforge.net/ntlm.html#appendixD"&gt;code&lt;/a&gt;
was a great help.&amp;nbsp; His is in Java, while mine is c#.&amp;nbsp; Last, I used &lt;a href="http://www.bouncycastle.org/csharp/"&gt;Bouncy Castle’s&lt;/a&gt; c# crypto
library, for two reasons.&amp;nbsp; The .NET libraries do not support MD4, because for
hashing it is VERY weak and the .NET libraries block the use of weak DES keys.&amp;nbsp;
NTLM does not account for weak keys.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
My code is a fair bit redundant, checking and rechecking
itself.&amp;nbsp; This is because each CloudCracker summation costs $20 and I didn’t
want to have to send/spend several failed submissions during debugging. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
The code can be found &lt;a href="https://s3.amazonaws.com/markgamache/NTLMforCloudcracker.zip"&gt;here&lt;/a&gt;. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
The challenge and response data should be in hex, while the
password should be ASCII.&amp;nbsp; &lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/ZjRzdzixTPc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/8193389423091902167/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=8193389423091902167" title="16 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/8193389423091902167?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/8193389423091902167?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/ZjRzdzixTPc/ntlm-challenge-response-is-100-broken.html" title="NTLM Challenge Response is 100% Broken (Yes, this is still relevant)" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>16</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2013/01/ntlm-challenge-response-is-100-broken.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4MSHozfSp7ImA9WhNUFEQ.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-2551777593935915642</id><published>2013-01-04T21:55:00.001-08:00</published><updated>2013-01-06T09:39:49.485-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-06T09:39:49.485-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Cryptography" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="pass the hash" /><title>Rehashing Pass the Hash</title><content type="html">
&lt;head&gt;
&lt;meta http-equiv=Content-Type content="text/html; charset=windows-1252"&gt;
&lt;meta name=Generator content="Microsoft Word 12 (filtered)"&gt;
&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
 {font-family:"Cambria Math";
 panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
 {font-family:Cambria;
 panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
 {font-family:Calibri;
 panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
 {font-family:BatangChe;
 panose-1:2 3 6 9 0 1 1 1 1 1;}
@font-face
 {font-family:"\@BatangChe";
 panose-1:2 3 6 9 0 1 1 1 1 1;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:0in;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
h1
 {mso-style-link:"Heading 1 Char";
 margin-top:24.0pt;
 margin-right:0in;
 margin-bottom:0in;
 margin-left:0in;
 margin-bottom:.0001pt;
 line-height:115%;
 page-break-after:avoid;
 font-size:14.0pt;
 font-family:"Cambria","serif";
 color:#365F91;
 font-weight:bold;}
h2
 {mso-style-link:"Heading 2 Char";
 margin-top:10.0pt;
 margin-right:0in;
 margin-bottom:0in;
 margin-left:0in;
 margin-bottom:.0001pt;
 line-height:115%;
 page-break-after:avoid;
 font-size:13.0pt;
 font-family:"Cambria","serif";
 color:#4F81BD;
 font-weight:bold;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
 {mso-style-link:"Title Char";
 margin-top:0in;
 margin-right:0in;
 margin-bottom:15.0pt;
 margin-left:0in;
 line-height:normal;
 font-size:26.0pt;
 font-family:"Cambria","serif";
 color:#17365D;
 letter-spacing:.25pt;}
a:link, span.MsoHyperlink
 {color:blue;
 text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
 {color:purple;
 text-decoration:underline;}
p
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:0in;
 line-height:115%;
 font-size:12.0pt;
 font-family:"Times New Roman","serif";}
p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
 {mso-style-link:"No Spacing Char";
 margin:0in;
 margin-bottom:.0001pt;
 line-height:normal;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
 {margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:.5in;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
span.Heading1Char
 {mso-style-name:"Heading 1 Char";
 mso-style-link:"Heading 1";
 font-family:"Cambria","serif";
 color:#365F91;
 font-weight:bold;}
span.Heading2Char
 {mso-style-name:"Heading 2 Char";
 mso-style-link:"Heading 2";
 font-family:"Cambria","serif";
 color:#4F81BD;
 font-weight:bold;}
span.TitleChar
 {mso-style-name:"Title Char";
 mso-style-link:Title;
 font-family:"Cambria","serif";
 color:#17365D;
 letter-spacing:.25pt;}
span.NoSpacingChar
 {mso-style-name:"No Spacing Char";
 mso-style-link:"No Spacing";}
p.msotitlecxspfirst, li.msotitlecxspfirst, div.msotitlecxspfirst
 {mso-style-name:msotitlecxspfirst;
 mso-style-link:"Title Char";
 margin:0in;
 margin-bottom:.0001pt;
 line-height:normal;
 font-size:26.0pt;
 font-family:"Cambria","serif";
 color:#17365D;
 letter-spacing:.25pt;}
p.msotitlecxspmiddle, li.msotitlecxspmiddle, div.msotitlecxspmiddle
 {mso-style-name:msotitlecxspmiddle;
 mso-style-link:"Title Char";
 margin:0in;
 margin-bottom:.0001pt;
 line-height:normal;
 font-size:26.0pt;
 font-family:"Cambria","serif";
 color:#17365D;
 letter-spacing:.25pt;}
p.msotitlecxsplast, li.msotitlecxsplast, div.msotitlecxsplast
 {mso-style-name:msotitlecxsplast;
 mso-style-link:"Title Char";
 margin-top:0in;
 margin-right:0in;
 margin-bottom:15.0pt;
 margin-left:0in;
 line-height:normal;
 font-size:26.0pt;
 font-family:"Cambria","serif";
 color:#17365D;
 letter-spacing:.25pt;}
p.msolistparagraphcxspfirst, li.msolistparagraphcxspfirst, div.msolistparagraphcxspfirst
 {mso-style-name:msolistparagraphcxspfirst;
 margin-top:0in;
 margin-right:0in;
 margin-bottom:0in;
 margin-left:.5in;
 margin-bottom:.0001pt;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
p.msolistparagraphcxspmiddle, li.msolistparagraphcxspmiddle, div.msolistparagraphcxspmiddle
 {mso-style-name:msolistparagraphcxspmiddle;
 margin-top:0in;
 margin-right:0in;
 margin-bottom:0in;
 margin-left:.5in;
 margin-bottom:.0001pt;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
p.msolistparagraphcxsplast, li.msolistparagraphcxsplast, div.msolistparagraphcxsplast
 {mso-style-name:msolistparagraphcxsplast;
 margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:.5in;
 line-height:115%;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";}
span.BoldExampleChar
 {mso-style-name:"BoldExample Char";
 mso-style-link:BoldExample;}
p.BoldExample, li.BoldExample, div.BoldExample
 {mso-style-name:BoldExample;
 mso-style-link:"BoldExample Char";
 margin:0in;
 margin-bottom:.0001pt;
 line-height:normal;
 font-size:10.0pt;
 font-family:BatangChe;
 font-weight:bold;}
p.msopapdefault, li.msopapdefault, div.msopapdefault
 {mso-style-name:msopapdefault;
 margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:0in;
 line-height:115%;
 font-size:12.0pt;
 font-family:"Times New Roman","serif";}
p.msochpdefault, li.msochpdefault, div.msochpdefault
 {mso-style-name:msochpdefault;
 margin-top:0in;
 margin-right:0in;
 margin-bottom:10.0pt;
 margin-left:0in;
 line-height:115%;
 font-size:10.0pt;
 font-family:"Times New Roman","serif";}
.MsoChpDefault
 {font-size:10.0pt;}
.MsoPapDefault
 {margin-bottom:10.0pt;
 line-height:115%;}
@page WordSection1
 {size:8.5in 11.0in;
 margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
 {page:WordSection1;}
--&gt;
&lt;/style&gt;

&lt;/head&gt;

&lt;body lang=EN-US link=blue vlink=purple&gt;

&lt;div class=WordSection1&gt;

&lt;p class=MsoNormal&gt;The first question one might ask is, “Really…&amp;nbsp; Why are
you writing about this old news now?”&amp;nbsp; The answer is simple; even with the
release of Window 8 and Server 2012, Pass the Hash (PTH) attacks are still
incredibly simple and effective.&amp;nbsp; While from an academic standpoint
passing the hash is simple to understand, it is a bit more complex from an
attacker or defender’s stand point. &amp;nbsp;The reason for this post is that
having read a huge number of papers and post on pass the hash, none of them
gave me a clear picture.&amp;nbsp; &amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;The reason pass the hash is so powerful is due to NTLM’s
initial design flaw.&amp;nbsp; NTLM was essentially broken from the day it was
released.&amp;nbsp; While UNIX started saving salted hashes in the 1970s, the
designers of NTLM chose to use an unsalted hash.&amp;nbsp; Salting a hash is
probably the most important design criterion when designing an authentication
system.&lt;/p&gt;

&lt;p class=MsoNormal&gt;A &lt;a href="http://en.wikipedia.org/wiki/Hash_function"&gt;hash&lt;/a&gt;
is a one way transformation of a variable input to a fixed length output.&amp;nbsp;
A hash function must be deterministic, meaning that the same input will always
generate the same output, no matter what platform it might be run on. Another
key property of a good hash function is that even a small change in the input
creates a significant change in the output.&amp;nbsp; The final vital property of a
hash function is that it must be truly one way.&amp;nbsp; There must be no method
allowing the input to be derived using only the output. &lt;/p&gt;

&lt;p class=MsoNormal&gt;With these properties, and the benefit of hindsight, a hash
is the perfect way to for one party to prove they know a password without the
other party actually knowing it.&amp;nbsp;&amp;nbsp; &lt;a
href="http://plaintextoffenders.com/"&gt;Storing reversible or god forbid
plaintext passwords&lt;/a&gt; introduces a significant number or risks.&amp;nbsp; Only the
ignorant do this.&lt;/p&gt;

&lt;p class=MsoNormal&gt;If the hash can’t be reversed, then you might think there
are no more risks and you can just hash those passwords and be on your merry
way.&amp;nbsp; If we didn’t have a security model to think about, this might make
sense.&amp;nbsp;&amp;nbsp; The reason we bother to hash the passwords and not store
them as plaintext on our authentication servers is that, on the off chance that
the auth server is compromised, we want to minimize the value of the stolen
identities.&amp;nbsp; Assuming you kick out the attacker and restore from backup, it
would be nice to not have to force all of your users to change their
passwords.&amp;nbsp; It would be nice to be sure that the breach wasn’t just a
foothold to a larger attack. Additionally, as users tend to reuse passwords, we
don’t want to put the users’ accounts at risk on other systems or sites.&amp;nbsp;
This brings us to the risk created by just storing the password hash with no
salt.&amp;nbsp; If one has access to the hash and wants to derive the input
(password), all that needs to be done is test passwords until the outputs (hashes)
match.&amp;nbsp; This &lt;a href="http://en.wikipedia.org/wiki/Brute-force_attack"&gt;Brute
force&lt;/a&gt; method is always a theoretical option when trying to defeat a
cryptographic function.&amp;nbsp; Trying all possible passwords is time consuming,
which works against the attacker.&amp;nbsp; Unfortunately, with super fast
processors and huge amounts of cheap storage, it is now possible to &lt;a
href="http://en.wikipedia.org/wiki/Rainbow_table"&gt;pre-compute and store huge
numbers of hashes and the corresponding passwords&lt;/a&gt;.&amp;nbsp; In the space of &lt;a
href="http://project-rainbowcrack.com/buy.php"&gt;less than 1 TB&lt;/a&gt;, you can
store tables that cover 96% of 1 to 9 character passwords containing upper
case, lower case, and numbers.&amp;nbsp; By storing just the password hash we make
it completely worth an attacker’s time to create and save the pre-computes
values.&amp;nbsp; Even better, you can just &lt;a
href="https://www.cloudcracker.com/dictionaries.html"&gt;pay when you need to use
someone else’s’ tables&lt;/a&gt;. &lt;/p&gt;

&lt;p class=MsoNormal&gt;Simply salting the hash wastes all that work the attacker
did to pre-compute the hashes.&amp;nbsp; Salting a hash is simply adding random or
pseudo-random data to the input before computing the hash.&amp;nbsp; The salt is
saved and later used when verifying the password. &amp;nbsp;When verifying the
password, the salt is looked up, re-applied to the password that is being
tested, and the data hashed.&amp;nbsp; If the result on file and the real-time
computed result match, the password was correct. By applying the random data,
we have completely wasted the attackers’ pre-computation effort.&amp;nbsp; Ideally,
every account uses a different salt, so that even if your user database is
taken, every password must be brute forced separately.&amp;nbsp; &lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;i&gt;Salted Hash Example&lt;/i&gt;&lt;/p&gt;

&lt;p class=BoldExample&gt;Password&amp;nbsp;&amp;nbsp;&amp;nbsp; Salt&amp;nbsp; SHA-1 Hash&lt;/p&gt;

&lt;p class=BoldExample&gt;V3ryStrong&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 88 93 EB 7A 28
DA A4 95 89 B1 B5 A1 E0 C6 A0 83 9D 38 A3 39&lt;/p&gt;

&lt;p class=BoldExample&gt;V3ryStrong&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 59 86 41 B2 62
B7 C3 C7 54 27 78 94 FB D6 59 24 5F 77 74 40&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;The example is purposely weak to make for easy
understanding.&amp;nbsp; Usually the salt would be 8 – 16 bytes. It shows the
amplification provided by SHA-1. &amp;nbsp;With a single bit change the data is
completely different and we see that there is no way to pre-compute all
passwords, unless we pre-compute all passwords with all possible salt values,
which in not feasible. &amp;nbsp;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;While this is fun background data, it really has little to
do with passing the hash, as PTH lets an attacker who has the hash assume the
user’s identity without ever knowing the password.&amp;nbsp; This is because
windows stores the user’s NT hash in &lt;a
href="http://en.wikipedia.org/wiki/Active_Directory"&gt;Active Directory&lt;/a&gt; &lt;a
href="http://www.ntdsxtract.com/downloads/ActiveDirectoryOfflineHashDumpAndForensics.pdf"&gt;DIT&lt;/a&gt;
or the &lt;a href="http://en.wikipedia.org/wiki/Security_Accounts_Manager"&gt;SAM&lt;/a&gt;.&amp;nbsp;
The first step of NTLM and NTLMv2 handshakes is that the system converts the
user’s password to the NT hash, and the handshake does some fun handshake math
that proves the user knew the hash, without the hash ever crossing the
network.&amp;nbsp; &lt;/p&gt;

&lt;p class=MsoNormal&gt;This system makes the hash “password equivalent”.&amp;nbsp; If
an attacker has the user’s hash, they just skip the “convert password to NT
hash” and go straight to using it in the handshake.&amp;nbsp;&amp;nbsp; There are many
tools for doing this, depending on where NTLM is being used. NTLM
authentication occurs in-band with the protocol that is being used to access
data or access a system.&amp;nbsp; NTLM auth occurs inside remote file access via
CIFS/SMB, TDS for accessing SQL server, RPC for all sorts or remote
administration and access, &lt;a href="http://tools.ietf.org/html/rfc4559"&gt;HTTP&lt;/a&gt;
for web auth, and I’m sure a few more things.&amp;nbsp; &lt;/p&gt;

&lt;p class=MsoNormal&gt;In order for an attacker to pass the hash, they need four
things:&lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:37.65pt;text-indent:-.25in'&gt;1.&lt;span
style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;The valid NT hash (and username)&lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:37.65pt;text-indent:-.25in'&gt;2.&lt;span
style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;A channel to pass the hash through&lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:37.65pt;text-indent:-.25in'&gt;3.&lt;span
style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;A server hosting a service that utilizes/allows NTLM auth&lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:37.65pt;text-indent:-.25in'&gt;4.&lt;span
style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;A client (or tool) that allows the attacker to input the hash rather
than the password &lt;/p&gt;

&lt;p class=MsoNormal&gt;In a world where all four elements are available to an
attacker, there is no stopping PTH.&amp;nbsp; Keeping in mind the four
requirements, defenders can limit, and more importantly, and understand their
level of exposure.&amp;nbsp; &lt;/p&gt;

&lt;h1&gt;Securing the Hash&lt;/h1&gt;

&lt;p class=MsoNormal&gt;The most important thing a defender can do is keep the hash
from falling into the wrong hands.&amp;nbsp; The hash resides on a computer in two
main areas; the SAM (Security Account Manager) db and in RAM, for users that
are logged in.&amp;nbsp; There is a common misconception that the NT hash is also
stored in the registry for cached logon of domain user accounts on domain
joined computers.&amp;nbsp; This is just that, a misconception. Depending on system
settings, data is stored that allows a domain user to logon to a machine when
no domain controller is available; however this data is an &lt;a
href="http://moyix.blogspot.com/2008/02/cached-domain-credentials.html"&gt;MD4 of
the NT hash + username&lt;/a&gt;.&amp;nbsp; It might be worth an attackers’ time to
pre-compute the hashes for common user names, such as ‘Administrator’.&amp;nbsp; &lt;/p&gt;

&lt;p class=MsoNormal&gt;Looking at the threat model, one can conclude that the horse
is out of the barn if the hash is stolen.&amp;nbsp; In order to steal the hash, the
attacker had to gain full control of the system.&amp;nbsp; The attacker must either
execute hash stealing code as a member of local administrators, or gain
physical access to the poorly protected computer.&amp;nbsp; While the horse is
indeed out of the barn on that host, the attacker should be able to go no
further.&amp;nbsp; At least that is the defenders hope. This is, of course, not the
case.&amp;nbsp; If the user has the other three required elements, she can act as
the user at will.&amp;nbsp; &lt;/p&gt;

&lt;h2&gt;Stealing the Hash from RAM&lt;/h2&gt;

&lt;p class=MsoNormal&gt;In order for an attacker to steal a user’s NT hash from RAM,
the attacker must run code with administrator rights.&amp;nbsp; As with all the
advice that will be offered, all the controls are fairly standard and map to
basic security concepts.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;&lt;span style='font-family:
Symbol'&gt;·&lt;/span&gt;&lt;span style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Reduce surface area&lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'&gt;&lt;span
style='font-family:"Courier New"'&gt;o&lt;/span&gt;&lt;span style='font-size:7.0pt;
line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Don’t
leave sessions logged in unnecessarily, as another administrator’s failure can
compromise your account.&lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'&gt;&lt;span
style='font-family:"Courier New"'&gt;o&lt;/span&gt;&lt;span style='font-size:7.0pt;
line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Avoid
logging in with administrator rights.&amp;nbsp; If you screw up and run attackers
code, they can’t steal the hash if you aren’t an admin.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;&lt;span style='font-family:
Symbol'&gt;·&lt;/span&gt;&lt;span style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Use up to date AV software&lt;/p&gt;

&lt;h2&gt;Stealing the Hash via Physical Access&lt;/h2&gt;

&lt;p class=MsoNormal&gt;We all know that if an attacker has &lt;a
href="http://technet.microsoft.com/library/cc722487.aspx#EIAA"&gt;physical access&lt;/a&gt;
to a host then they own the host.&amp;nbsp; The last thing we want to do is allow the
attacker to use that host as a foothold to even more systems and data.&amp;nbsp; In
the case of PTH attacks, we probably have good news here.&amp;nbsp; The NT hashes
are stored in the local SAM. If the computers are not domain joined, the
username and password usually don’t cross hosts, unless you took the time to
sync up your usernames and passwords across them all.&amp;nbsp; As I mentioned
earlier, the cached domain credentials DO NOT contain the NT hash. This means
the SAM from one computer is of no value on anther.&amp;nbsp;&amp;nbsp; &lt;/p&gt;

&lt;p class=MsoNormal&gt;The one place where there IS a great deal of risk is in an
enterprise, where standardization probably means that the local admin password
is the same across every domain member.&amp;nbsp; &amp;nbsp;This means that the
compromise of any one server is equivalent to the compromise of every
server.&amp;nbsp; This means that that dev server that you left up running PHP 1.2
can be a great foothold to the rest of your servers and data.&lt;/p&gt;

&lt;p class=MsoNormal&gt;To reduce this risk:&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;&lt;span style='font-family:
Symbol'&gt;·&lt;/span&gt;&lt;span style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Use full disk encryption that requires a token or Password Based Key
Derivation Function&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;&lt;span style='font-family:
Symbol'&gt;·&lt;/span&gt;&lt;span style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href="http://support.microsoft.com/kb/310105"&gt;Enable&lt;/a&gt; &lt;a
href="http://www.windowsitpro.com/article/encryption2/getting-the-most-from-windows-system-key"&gt;syskey&lt;/a&gt;
protection &amp;gt; 1.&lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'&gt;&lt;span
style='font-family:"Courier New"'&gt;o&lt;/span&gt;&lt;span style='font-size:7.0pt;
line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;This
requires a password or floppy to boot and decrypt the goodies in the SAM.&lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'&gt;&lt;span
style='font-family:"Courier New"'&gt;o&lt;/span&gt;&lt;span style='font-size:7.0pt;
line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;This
scales poorly for an enterprise.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;&lt;span style='font-family:
Symbol'&gt;·&lt;/span&gt;&lt;span style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Make sure all local admin passwords are different.&lt;/p&gt;

&lt;h2&gt;Stealing the Hash from the Network&lt;/h2&gt;

&lt;p class=MsoNormal&gt;The NTLM and NTLMv2 handshakes assure that the NT hash
itself can be verified, without it ever appearing on the network.&amp;nbsp; There
is nothing to see here.&lt;/p&gt;

&lt;p class=MsoNormal&gt;If an attacker were to figure out a way to get the hash from
the network, it would be an impressive feat. &lt;/p&gt;

&lt;h1&gt;Securing the Channels&lt;/h1&gt;

&lt;p class=MsoNormal&gt;If the attacker steals the hash, but has no path to pass it
over, then the hash is of little value.&amp;nbsp; One nice thing about NTLM auth is
that it occurs in band with the protocol utilizing it, so as a defender, you
can better understand and limit your exposure.&amp;nbsp; If you block ports 80,
138,139, and 445, but open 1433, you know that the stolen hash can only be used
to access SQL data but not remote file access or websites.&lt;/p&gt;

&lt;p class=MsoNormal&gt;Controls to consider:&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;&lt;span style='font-family:
Symbol'&gt;·&lt;/span&gt;&lt;span style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Reduce Surface Area. Only open the ports you need.&amp;nbsp; Duh…&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;&lt;span style='font-family:
Symbol'&gt;·&lt;/span&gt;&lt;span style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Authenticate end points with VPN or IPSec.&lt;/p&gt;

&lt;h1&gt;Stop using NTLM&lt;/h1&gt;

&lt;p class=MsoNormal&gt;This one is not so simple.&amp;nbsp; One can “kerberize” all
sorts of servers.&amp;nbsp; That is, allow them to utilize Kerberos authentication
rather than NTLM.&amp;nbsp; Microsoft has done a pretty good job kerberizing
applications, but in almost all cases, if Kerberos fails, the app will allow
fallback to NTLM. &lt;/p&gt;

&lt;p class=MsoNormal&gt;I know of no options for a defender here.&amp;nbsp; This section
is really a call to MS, and others, to allow for more granular options related
to NTLM auth, Kerberos, and fallback options. &lt;/p&gt;

&lt;p class=MsoNormal&gt;I suppose this is an opportunity for firewall vendors as
well.&amp;nbsp; It would be fairly easy to block NTLM auth and allow Kerberos on a
per protocol basis.&amp;nbsp; I suspect an F5 ninja could write a crazy &lt;a
href="https://devcentral.f5.com/irules"&gt;iRule&lt;/a&gt; to do it too. &lt;/p&gt;

&lt;h1&gt;Stop Clients from Allowing the use of the NT Hash&lt;/h1&gt;

&lt;p class=MsoNormal&gt;Assuming you have dealt with the firewall rules, most
attackers will have no channel to pass hashes over.&amp;nbsp; The last option would
be to pass from hosts inside your network.&amp;nbsp; This seems plausible, as the
attacker got enough access to steal the hash.&amp;nbsp;&amp;nbsp; &lt;/p&gt;

&lt;p class=MsoNormal&gt;There are two classes of tools that let you work from the
hash rather than the password.&amp;nbsp; The first are tools like &lt;a
href="http://www.ampliasecurity.com/research/wcefaq.html#whatiswce"&gt;WCE&lt;/a&gt;,
which run on windows and allow an administrator to inject arbitrary usernames
and hashes into a user’s session.&amp;nbsp; This allows all subsequent uses of any
tool in that session to authenticate as the injected user.&amp;nbsp; This means
that any Windows tool that speaks NTLM will work. &amp;nbsp;The second class are
custom tools that may run on any OS and speak the protocol in question, be it
SMB, TDS/SQL, RPC, or whatever, AND they speak NTLM taking a hash rather than
password.&lt;/p&gt;

&lt;p class=MsoNormal&gt;For a good list of current tools and tons of great info on
PTH, see &lt;a href="http://passing-the-hash.blogspot.com/"&gt;Still Passing the Hash
15 Years Later&lt;/a&gt;.&lt;/p&gt;

&lt;p class=MsoNormal&gt;A good list, granted probably dated, of AV test results for
detection of the tools, can be found &lt;a
href="http://www.sans.org/reading_room/whitepapers/testing/pass-the-hash-attacks-tools-mitigation_33283"&gt;here&lt;/a&gt;.
&lt;/p&gt;

&lt;p class=MsoNormal&gt;Controls to consider:&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;&lt;span style='font-family:
Symbol'&gt;·&lt;/span&gt;&lt;span style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Make sure EVERY host inside your firewall has up to date AV. &lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'&gt;&lt;span
style='font-family:"Courier New"'&gt;o&lt;/span&gt;&lt;span style='font-size:7.0pt;
line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Enforce
this with &lt;a href="http://en.wikipedia.org/wiki/Network_Access_Control"&gt;NAC&lt;/a&gt;
or &lt;a href="http://technet.microsoft.com/en-us/network/bb545879.aspx"&gt;NAP&lt;/a&gt;.&lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'&gt;&lt;span
style='font-family:"Courier New"'&gt;o&lt;/span&gt;&lt;span style='font-size:7.0pt;
line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Make
sure hosts with AV match up to your CMDB, such that all hosts are accounted
for.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;&lt;span style='font-family:
Symbol'&gt;·&lt;/span&gt;&lt;span style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Consider &lt;a
href="http://technet.microsoft.com/en-us/library/hh831440.aspx"&gt;AppLocker&lt;/a&gt;
and &lt;a href="http://support.microsoft.com/kb/324036"&gt;Software Restriction
Polices&lt;/a&gt;.&lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'&gt;&lt;span
style='font-family:"Courier New"'&gt;o&lt;/span&gt;&lt;span style='font-size:7.0pt;
line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Make
sure to block known tools by hash so the attacker can’t just rename at tool&lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'&gt;&lt;span
style='font-family:"Courier New"'&gt;o&lt;/span&gt;&lt;span style='font-size:7.0pt;
line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Make
sure to block known tools by name, in case the attacker makes code changes but
chooses to use the same executable name. &lt;/p&gt;

&lt;p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'&gt;&lt;span
style='font-family:"Courier New"'&gt;o&lt;/span&gt;&lt;span style='font-size:7.0pt;
line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Consider
white listing known good apps rather than trying to blacklist known bad ones.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;&lt;span style='font-family:
Symbol'&gt;·&lt;/span&gt;&lt;span style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Minimize the number of local administrators.&amp;nbsp; A local admin can
stop AV or add exclusions prior to copying over and loading up tools.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;&lt;span style='font-family:
Symbol'&gt;·&lt;/span&gt;&lt;span style='font-size:7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Keep up on the latest version of the tools and test your AV yourself.&lt;/p&gt;

&lt;h1&gt;Understanding Why Pass the Hash Still Works&lt;/h1&gt;

&lt;p class=MsoNormal&gt;The best way to learn this stuff is to go to &lt;a
href="http://davenport.sourceforge.net/ntlm.html"&gt;Eric Glass’s NTLM&lt;/a&gt; page
and do the math along with him.&amp;nbsp; I am borrowing heavily here to summarize
for lazy.&amp;nbsp; ;-)&amp;nbsp; Well, there is a lot more great stuff on his page
that you don’t need to know to understand PTH.&lt;/p&gt;

&lt;p class=MsoNormal&gt;There are three different types of NTLM responses:&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;1.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href="http://davenport.sourceforge.net/ntlm.html#theNtlmResponse"&gt;NTLM
Response&lt;/a&gt;&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;2.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a
href="http://davenport.sourceforge.net/ntlm.html#theNtlm2SessionResponse"&gt;NTLM2
Response&lt;/a&gt;, not to be confused with NTLMv2 Response&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;3.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href="http://davenport.sourceforge.net/ntlm.html#theNtlmv2Response"&gt;NTLMv2
Response&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;NTLM Response&lt;/h2&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;1.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Convert password to Unicode and apply MD4 hash.&amp;nbsp; This is the NT
hash.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;2.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Pad the NT hash with 0s to make it 21 bytes.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;3.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Break the 21 bytes in to 3 keys of 7 bytes each.&amp;nbsp; This is 56 bits.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;4.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Apply odd parity to each key.&amp;nbsp; This makes each key a valid 64 bit
DES key.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;5.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Encrypt the NTLM challenge (from the server) with each of the three
keys.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;6.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Concatenate the three encrypted values, creating the response.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;7.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Send it.&lt;/p&gt;

&lt;p class=MsoNormal&gt;As you can see, the challenge is provided by the server, and
could be substituted by an attacker with network access. &amp;nbsp;This allows an
attacker to create pre-computed responses (rainbow tables) for that
challenge.&amp;nbsp; Obviously this is scary.&lt;/p&gt;

&lt;h2&gt;NTLM2 Response&lt;/h2&gt;

&lt;p class=MsoNormal&gt;Once again, not to be confused with the NTLMv2
Response.&amp;nbsp; This one uses nearly the same math as the NTLM Response, but
let’s the client add a “client challenge” thus negating the value of an
attacker substituting their own challenge. &amp;nbsp;&amp;nbsp;This is used when the
0x00080000- NTLM 2 session security flag is set.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;1.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Convert password to Unicode and apply MD4 hash.&amp;nbsp; This is the NT
hash.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;2.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Pad the NT hash with 0s to make it 21 bytes.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;3.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Break the 21 bytes in to 3 keys of 7 bytes each.&amp;nbsp; This is 56 bits.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;4.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Apply odd parity to each key.&amp;nbsp; This makes each key a valid 64 bit
DES key.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;5.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;The client creates a random 8 byte client challenge.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;6.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;The server challenge and client challenge are concatenated and MD5 is
applied, creating the challenge data.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;7.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Encrypt the challenge (MD5 output) with each of the three keys.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;8.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Concatenate the three encrypted values, creating the response.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;9.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Send it.&lt;/p&gt;

&lt;h2&gt;NTLMv2 Response&lt;/h2&gt;

&lt;p class=MsoNormal&gt;This response is next level.&amp;nbsp; It is totally different
that the first two and includes a timestamp, the domain the user belongs to, as
well as target information.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;1.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Convert password to Unicode and apply MD4 hash.&amp;nbsp; This is the NT
hash.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;2.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Concatenate the upper case Unicode username with the Unicode
authentication target.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;3.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Perform HMAC-MD5 on the result of step 2, using the NT hash.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;4.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Construct blob, containing the Blob signature, 4 bytes of all 0s, the
time in NT time format, the client challenge, another 4 bytes of all 0s, and
the target information from the server Type 2 (challenge) message, and another
4 bytes of all 0s.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;5.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;The server challenge form the Type 2 message is concatenated to the blob
from step 4.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;6.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;The blob from step 4 is then HMAC-MD5’d using the result of the HMAC-MD5
in step 3.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;7.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;The HMAC response from step 6 and the blob from 4 are concatenated and
constitute the response.&lt;/p&gt;

&lt;p class=MsoListParagraph style='text-indent:-.25in'&gt;8.&lt;span style='font-size:
7.0pt;line-height:115%;font-family:"Times New Roman","serif"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Send it.&lt;/p&gt;

&lt;h1&gt;Conclusion&lt;/h1&gt;

&lt;p class=MsoNormal&gt;Pass the hash attacks are alive and well and are not going
away anytime soon.&amp;nbsp; Protect your systems.&amp;nbsp; &lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/Rpt4Dk-dsD0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/2551777593935915642/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=2551777593935915642" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/2551777593935915642?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/2551777593935915642?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/Rpt4Dk-dsD0/rehashing-pass-hash.html" title="Rehashing Pass the Hash" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2013/01/rehashing-pass-hash.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDSXg5cSp7ImA9WhNbEU0.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-8095872549375182695</id><published>2012-09-30T10:14:00.000-07:00</published><updated>2013-01-13T11:57:58.629-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-13T11:57:58.629-08:00</app:edited><title>Microsoft Announces Plan to Further Drive Down Worker Wages</title><content type="html">Microsoft's &lt;a href="http://www.nationaljournal.com/thenextamerica/education/microsoft-pushes-plan-to-pay-for-stem-education-with-h-1b-visa-fees-20120927" target="_blank"&gt;latest bid&lt;/a&gt; to avoid paying employees market rates is genius. &amp;nbsp;Everyone knows, if you want to get public and government support, you have to "Do it for the kids". &amp;nbsp; Offering to put up money for science education is incredibly philanthropic, I mean self serving. &amp;nbsp; I'm amused by this very small bribe attempt. &amp;nbsp;It is in extreme contrast to former MS CEO Bill Gate's &lt;a href="http://www.gatesfoundation.org/Pages/home.aspx" target="_blank"&gt;extreme giving&lt;/a&gt; with no ask for compensation.&lt;br /&gt;
&lt;br /&gt;
Make no mistake, the US is full of brilliant tech people. &amp;nbsp;There are more than enough to go around. &amp;nbsp;The reason there are 1000s of tech startups that you've never heard of is because these people are everywhere. &amp;nbsp;Why hasn't MS retained them? &amp;nbsp;First, MS did employ a huge number of them and &lt;a href="http://www.vanityfair.com/business/2012/08/microsoft-lost-mojo-steve-ballmer" target="_blank"&gt;drove them away screaming&lt;/a&gt;. &amp;nbsp;Second, MS hasn't shared the wealth for years. &amp;nbsp;In the 80s and 90s they were still churning out millionaires, but now the best you can hope for is a very comfortable living. &amp;nbsp;As long as startups offer the chance to get a little rich there will be an appeal. &amp;nbsp;As long as MS crushes innovation internally and denies employees a chance to make a difference, startups will be attractive. &lt;br /&gt;
&lt;br /&gt;
There is no doubt in my mind that if MS brought back the opportunity of the 80s and 90s, both for pay and to make a difference, they would have no trouble attracting the talent they need. &lt;br /&gt;
&lt;br /&gt;
I do agree that the US needs to put more focus and money into science education, but really, what kid is going to get excited about a career in software when MS has succeeded in pulling in all the low paid foreign developers and keeping the market rate for devs low? &amp;nbsp; My short stint at MS very closely matched what was described in the VF article linked above. &lt;br /&gt;
&lt;br /&gt;
You know how you encourage people to learn?? &amp;nbsp;Put high paying jobs out there that will allow the people to make money and have a life. &amp;nbsp;Who wants to work 60+ hour weeks and never see their kids, all for a rate that is barely or below market rate? &lt;br /&gt;
&lt;br /&gt;
My final point, this $10k bribe per head isn't even a market rate bribe. &amp;nbsp;The Visa makes the employee an indentured servant. &amp;nbsp;Work 60 hour weeks or we will give you that dreaded bad review and send you back to the developing world where you came from. &amp;nbsp; If "We the People" are going to take a bribe to keep wages low, we need a bigger cut. &amp;nbsp;Let's start thinking about $50k a year. &amp;nbsp; I bet if we add that $50k to a base MS salary, they could attract all sorts of on shore talent, but alas, those workers might want to spend time with their kids. &lt;br /&gt;
&lt;br /&gt;
I found this fictitious quote from fake MS Talent Acquisition VP Walter Van Hert:&amp;nbsp;"We at MS are dedicated to acquiring the best and brightest minds, at well below market rate, because it is an honor to work for Microsoft".&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/Y4mTbw37kOA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/8095872549375182695/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=8095872549375182695" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/8095872549375182695?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/8095872549375182695?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/Y4mTbw37kOA/microsoft-announces-plan-to-further.html" title="Microsoft Announces Plan to Further Drive Down Worker Wages" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2012/09/microsoft-announces-plan-to-further.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQBSHwyeSp7ImA9WhNbEEw.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-6682651066453188756</id><published>2012-09-16T12:46:00.000-07:00</published><updated>2013-01-12T09:39:19.291-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-12T09:39:19.291-08:00</app:edited><title>Microsoft, STOP WITH THE SOCIAL!</title><content type="html">Researching some&amp;nbsp;nuanced&amp;nbsp;Microsoft systems information has caused me to put this string in my always&amp;nbsp;open&amp;nbsp;cut and pasted text file:&amp;nbsp;&lt;b&gt;&lt;i&gt;site:microsoft.com -site:social.technet.microsoft.com -site:social.msdn.microsoft.com&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I have searched for hundreds of bits of MS info and looked for hundreds of MS&amp;nbsp;solutions&amp;nbsp;to issues via Bing and Google. &amp;nbsp;I HAVE NEVER FOUND AN ANSWER in any of the MS social sites. &amp;nbsp;I have found plenty of people with the same&amp;nbsp;problems&amp;nbsp;as me, but so far no solutions. &amp;nbsp;Occasionally&amp;nbsp;I have found a&amp;nbsp;band-aide&amp;nbsp;or reallllly bad advice that hides the problem, but never a meaningful answer.&lt;br /&gt;
&lt;br /&gt;
Please join me in not even getting MS&amp;nbsp;social&amp;nbsp;sites back in your&amp;nbsp;search&amp;nbsp;results.&lt;br /&gt;
&lt;br /&gt;
Microsoft, YOU MAKE BILLIONS a year. &amp;nbsp;Please stop asking your users and customers to provide support for&amp;nbsp;each other. &amp;nbsp;If you insist on using social, spend some money and pay really smart people who are subject matter experts to get&amp;nbsp;involved. Moderate the crap out of social.&lt;br /&gt;
&lt;br /&gt;
STOP WASTING MY TIME! &amp;nbsp;If I wanted to&amp;nbsp;rely&amp;nbsp;on other users for support, I'd have gone&amp;nbsp;open&amp;nbsp;source.&amp;nbsp;&amp;nbsp; &lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/D2kCZMLsOuM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/6682651066453188756/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=6682651066453188756" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/6682651066453188756?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/6682651066453188756?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/D2kCZMLsOuM/microsoft-stop-with-social.html" title="Microsoft, STOP WITH THE SOCIAL!" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2012/11/microsoft-stop-with-social.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cFR3g7eip7ImA9WhBaEUw.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-2916609761133859419</id><published>2012-03-15T19:56:00.000-07:00</published><updated>2013-05-20T22:43:36.602-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-20T22:43:36.602-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSL" /><category scheme="http://www.blogger.com/atom/ns#" term="Web servers" /><category scheme="http://www.blogger.com/atom/ns#" term="TLS" /><category scheme="http://www.blogger.com/atom/ns#" term="PKI" /><category scheme="http://www.blogger.com/atom/ns#" term="HTTPS" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><title>Proper PKI Configuration for SSL/TLS Servers</title><content type="html">&lt;h1&gt;
Don’t Teach Bad Habits&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&amp;nbsp;A large number of servers and applications are built with SSL configured incorrectly.&amp;nbsp; If your SSL is misconfigured, it is as good as no SSL.&amp;nbsp; In reality, it may be worse than no SSL, as it gives the feeling of safety where none exists.&amp;nbsp; This is most common when developers and administrators leverage a framework that they don’t fully understand.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Any time a user sees one of the following errors or warnings, the server admin has failed.&amp;nbsp; A user, no matter how technical, should NEVER be forced to answer these questions.&amp;nbsp; Every time a user is trained to hit Yes, or OK to one of these errors, the user is being trained to fail.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="page-break-after: avoid;"&gt;
&lt;v:shapetype coordsize="21600,21600" filled="f" id="_x0000_t75" o:preferrelative="t" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;  &lt;v:path gradientshapeok="t" o:connecttype="rect" o:extrusionok="f"&gt;  &lt;o:lock aspectratio="t" v:ext="edit"&gt; &lt;/o:lock&gt;&lt;/v:path&gt;&lt;/v:stroke&gt;&lt;/v:shapetype&gt;&lt;v:shape alt="Description: New Picture (1).gif" id="Picture_x0020_4" o:spid="_x0000_i1035" style="height: 148.5pt; mso-wrap-style: square; visibility: visible; width: 354pt;" type="#_x0000_t75"&gt;  &lt;v:imagedata o:title="New Picture (1)" src="file:///C:\Users\mark\AppData\Local\Temp\msohtmlclip1\01\clip_image001.gif"&gt; &lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-l7H-M8q6Rso/T2KjvFBlYVI/AAAAAAAAA1M/qdQmrzEL1rQ/s1600/1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="267" src="http://2.bp.blogspot.com/-l7H-M8q6Rso/T2KjvFBlYVI/AAAAAAAAA1M/qdQmrzEL1rQ/s640/1.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
Figure 1 IE SSL Error&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-OHHdNClNxkQ/T2Kj188PDMI/AAAAAAAAA1U/jQ9pJSAr2yE/s1600/2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="343" src="http://1.bp.blogspot.com/-OHHdNClNxkQ/T2Kj188PDMI/AAAAAAAAA1U/jQ9pJSAr2yE/s640/2.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Figure 2 Firefox SSL Error&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="page-break-after: avoid;"&gt;
&lt;v:shape alt="Description: New Picture (3).gif" id="Picture_x0020_6" o:spid="_x0000_i1033" style="height: 221.25pt; mso-wrap-style: square; visibility: visible; width: 290.25pt;" type="#_x0000_t75"&gt;  &lt;v:imagedata o:title="New Picture (3)" src="file:///C:\Users\mark\AppData\Local\Temp\msohtmlclip1\01\clip_image003.gif"&gt; &lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-yaoSo_y73AQ/T2Kj-Tz0UkI/AAAAAAAAA1c/F8q2vvWQbPo/s1600/3.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="488" src="http://3.bp.blogspot.com/-yaoSo_y73AQ/T2Kj-Tz0UkI/AAAAAAAAA1c/F8q2vvWQbPo/s640/3.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
Figure 3 Opera SSL Error&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-e3nF08iAqTA/T2KkFzCEXhI/AAAAAAAAA1k/4LG6Sm-Tib4/s1600/4.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="342" src="http://4.bp.blogspot.com/-e3nF08iAqTA/T2KkFzCEXhI/AAAAAAAAA1k/4LG6Sm-Tib4/s640/4.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Figure 4 Chrome SSL Error&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;span style="font-size: large;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Different browsers may have slightly different text for different failures, but most users will think of them as the same thing, “The place where I have to do an extra click to get to my site”. &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h1&gt;
Who is Protecting Whom&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;This document only covers standard, run of the mill SSL, where the server has a certificate and the client does not.&amp;nbsp; Two way or Mutual TLS is not commonly used and not covered here.&amp;nbsp; One of the things that confuses people about SSL is that it is designed to allow the client to protect itself and provides on protection or authentication of the client for the benefit of the server. &amp;nbsp;&amp;nbsp;The server operator or application owner is supposed to be giving the client everything it needs to make sure the connection is secure.&amp;nbsp; Presumably the user is going to submit some data that he or she does not want disclosed.&amp;nbsp; If you are running an application where the liability is not on the client, standard one way SSL is not enough for you.&amp;nbsp; You are assuming a risk that you have no control over and you need additional controls.&amp;nbsp; This is the case with most online banking in the US. &amp;nbsp;&amp;nbsp;If the customer loses his password to an attacker, and the attacker drains the account, in many cases, the bank is liable.&amp;nbsp; There have been a few cases recently where banks have been able to successfully put the burden on the customer. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;It is safe to assume that if your application is misconfigured such that the client cannot accurately verify that the connection is secure, your end user will be able to make a successful case as to why the risk should be shifted to you, despite any Terms of Service or other contract that may state otherwise.&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h2&gt;
Help Them Help Themselves&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;There are many criteria that the client can use to determine if it should trust a connection to a server.&amp;nbsp; While some clients may chose to ignore some of the criteria, it is wise to do everything right, and avoid any issues. &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h3&gt;
Subject Common Name&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;The Subject of the certificate is a description of the entity that offers it to a client.&amp;nbsp; To those familiar with LDAP, it may look like and x.500 Distinguished Name (DN), and it is in fact referred to as a DN.&amp;nbsp; For example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoQuote"&gt;
&lt;span style="font-size: large;"&gt;subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;However, most of the DN is arbitrary and with the inclusion of E=, for email address, it has no hierarchical convention like an LDAP DN.&amp;nbsp; &amp;nbsp;While some lament this inclusion, unless there really is an LDAP to look at, who cares if the data is actually hierarchical…&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;There are two exceptions to the “arbitrary” nature of the subject.&amp;nbsp; First, parties may choose to check the subject for a specific value.&amp;nbsp; Cisco VPN concentrators, for instance, can check that a certain OU or L is included.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;By far the most important, for SSL/TLS is the CN, or common name.&amp;nbsp; Most clients check to make sure that the CN matches the name that the client is attempting to connect to. &amp;nbsp;&amp;nbsp;This may be the most common configuration error.&amp;nbsp; The reason for this is that as a web developer, you can’t control what the user enters in their address bar.&amp;nbsp; Maybe the user will type google.com or maybe they will type www.google.com, or they might try and access some named service like maps.google.com.&amp;nbsp;&amp;nbsp; They may even type in an IP address.&amp;nbsp; Often two or more of the sites may be hosted on the same server at the same IP address.&amp;nbsp; To keep things nice and consistent, many web developers may redirect the connection to the pretty named site.&amp;nbsp; This is how google does it if you enter http://google.com into the address bar:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;span style="font-size: large;"&gt;HTTP/1.1 301 Moved Permanently&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;span style="font-size: large;"&gt;Location: http://www.google.com/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;While this works great with non-SSL sites, this will fail with HTTPS unless you plan correctly.&amp;nbsp; The reason that this fails is that the SSL negotiation happens BEFORE HTTP data can be passed.&amp;nbsp; You can’t have an HTTP redirect if the SSL negotiation fails.&amp;nbsp; This is the reason that many think that you cannot use host header based virtual sites with SSL.&amp;nbsp; They are wrong, you just have to know what you are doing and get the right certificate.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;We have two different options, if we want a certificate to work with multiple names.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h3&gt;
Wild Cards Certificates&lt;/h3&gt;
&lt;h4&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/h4&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;One answer to the problem of name matching is to just get one certificate that can answer for all hosts in your domain.&amp;nbsp; RFC 5425 defines a wildcard that can match any host in a domain, so the subject common name *.google.com would work for www.google.com, google.com, and mail.google.com.&amp;nbsp; While some clients seem to allow the wildcard to match domains as well as hosts, the RFC forbids this, so avoid it.&amp;nbsp; For example, *.google.com should not work for www2.maps.google.com, as only the leftmost name is the host portion.&amp;nbsp; Everything to the right is domain, and the * is not supposed to figure into domain matching.&amp;nbsp; The domain here is maps.google.com.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h3&gt;
Subject Alternate Name&lt;/h3&gt;
&lt;h4&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/h4&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;The other option, especially if you are using host headers for sites that do not share the same domain name, is to use the subject alternate name or SAN.&amp;nbsp; The SAN is a list of names that can also be checked by a client.&amp;nbsp; One certificate could then be used for www.google.com and www.gmail.com.&amp;nbsp;&amp;nbsp; While clients are supposed to be able to parse both the subject common name and the SAN list, some do this poorly, therefore it is wise to add the subject common name to the list of SANs as well. &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h3&gt;
Picking the Right Name&lt;/h3&gt;
&lt;h4&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/h4&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;As stated above, the client will match the name it thinks it is connecting to to the names on the certificate.&amp;nbsp; In the case of a web browser, this is the name in the address or URL bar.&amp;nbsp; This means that if your site is behind a load balance, then the common name must match the DNS name that resolves to the load balancer.&amp;nbsp; The client has no idea there may be a cluster and load balancer. &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="page-break-after: avoid;"&gt;
&lt;v:shape alt="Description: LBCerts.gif" id="Picture_x0020_0" o:spid="_x0000_i1031" style="height: 176.25pt; mso-wrap-style: square; visibility: visible; width: 153.75pt;" type="#_x0000_t75"&gt;  &lt;v:imagedata o:title="LBCerts" src="file:///C:\Users\mark\AppData\Local\Temp\msohtmlclip1\01\clip_image005.gif"&gt; &lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-xuyLNeZV44w/T2KkYl03B7I/AAAAAAAAA1s/Ls1mPSWE55I/s1600/5.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-xuyLNeZV44w/T2KkYl03B7I/AAAAAAAAA1s/Ls1mPSWE55I/s320/5.gif" width="278" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
Figure 5 Typical Web Cluster&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;span style="font-size: large;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;In Figure 5, the proper common name for the certificate would be www.google.com. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;In some corporate environments, users may bypass the load balancer in certain circumstances.&amp;nbsp; In this case, the certificate may need SANs or to use a wild card.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h3&gt;
Time Validity&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Certificates contain a Valid From and Valid To date.&amp;nbsp; The client will check to verify that the date of the connection attempt is between the two dates.&amp;nbsp; Don’t let your certificates expire. &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h3&gt;
Certificate Revocation List Distribution Points&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Generally it is thought that only PKI operators need to be concerned with CRLs and CDPs (CRL Distribution Points).&amp;nbsp; This is not the case.&amp;nbsp; A CRL is a list of certificates that the issuing CA has determined are not to be trusted.&amp;nbsp; Not all certificates list a CRL, obviously if one does not exist, you don’t care about them.&amp;nbsp; If the client determines that the certificate it is inspecting is listed on the CRL, it should reject the connection.&amp;nbsp; The reason you should be concerned with CDPs, as an application owner, is that your clients will attempt to read them.&amp;nbsp; Different clients react differently when they fail to access the CRL.&amp;nbsp; Some clients will fail open and allow the connection and some will deny it.&amp;nbsp; If you know your clients are behind highly restrictive firewalls, you may need to make sure that they have access not just to your site, but also to the CDP.&amp;nbsp; This is a common place to fail in a B2B or corporate environment.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h3&gt;
Basic Constraints, Key Usage, and Enhanced Key Usage&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;A good PKI book or web site would never lump these all together, but this is neither of those.&amp;nbsp; Each of these is a field that can describe how the certificate or the associated private key can be used.&amp;nbsp; Some clients may choose to make decisions based on these.&amp;nbsp; IE for instance will allow and SSL connection to a server with no EKUs listed, but if the EKU section is used and the server authentication usages is not listed, it will deny the connection. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;If the Basic Constrains listed in the certificate of the CA that signed your SSL certificate doesn’t list it as a CA, the client should abort the connection.&amp;nbsp; This keeps someone from using a certificate and private key as if it were a CA.&amp;nbsp; In the past, vendors forgot to check this, and anyone who bought a legitimate SSL certificate could use it to sign other certificates that were otherwise cryptographically sound.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Key Usage should list Digital Signature and Key Encipherment; if Key Usage is defined without Key Encipherment the client should abort the connection.&amp;nbsp; If Key Usage is not listed, all uses are allowed.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h2&gt;
The Chain&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;The server’s SSL certificate does not exist in a vacuum.&amp;nbsp; It is at the bottom of a PKI hierarchy.&amp;nbsp; Without the context of the PKI the SSL certificate is useless.&amp;nbsp; The beauty of using PKI to secure (authenticate, negotiate keys and provide integrity checks) an SSL connection is that this can be done with a relatively small number of trusted third parties.&amp;nbsp; One of the big reasons to leverage PKI is to avoid the risks and overhead of increasing the number of parties you, or your clients, have to trust.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;A quick reminder about key management; there is NO WAY to exchange key material securely, over an un-trusted network, without an out of band trust being established.&amp;nbsp; Diffie–Hellman does not provide authentication, so there is no way to know which party you are negotiating with.&amp;nbsp; RSA key pairs are useless as well, as the public key must be distributed securely in order for it to be trusted.&amp;nbsp; This is why OSs, Java, web browsers, and such have keystores as part of their distributions.&amp;nbsp; Ponder this; did the browser or java package you downloaded come over via SSL or could an attacker have poisoned the keystore in the package? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;The root CA is the most important element in a PKI.&amp;nbsp; The trust it conveys is significant and makes it easy to extend trust to a huge number of parties.&amp;nbsp; In order to extend this trust, subordinate CAs can propagate that trust.&amp;nbsp; It is common for a well built PKI to be two or three tiers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="page-break-after: avoid;"&gt;
&lt;v:shape alt="Description: 3TierPKI.gif" id="Picture_x0020_1" o:spid="_x0000_i1030" style="height: 390.75pt; mso-wrap-style: square; visibility: visible; width: 314.25pt;" type="#_x0000_t75"&gt;  &lt;v:imagedata o:title="3TierPKI" src="file:///C:\Users\mark\AppData\Local\Temp\msohtmlclip1\01\clip_image006.gif"&gt; &lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-k4ytXnqLOus/T2Kkoj39hNI/AAAAAAAAA10/QJPJfsGjWU4/s1600/6.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-k4ytXnqLOus/T2Kkoj39hNI/AAAAAAAAA10/QJPJfsGjWU4/s640/6.gif" width="513" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
Figure 6 Typical 3 Tier PKI&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;span style="font-size: large;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;To increase security and usability, one should never ask a client to trust a subordinate CA or SSL certificate explicitly.&amp;nbsp; Trust should always extend implicitly from the Root CA.&amp;nbsp; &amp;nbsp;Any time you ask an end user to make the decision to trust a certificate, YOU HAVE FAILED.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;It’s alright to configure dev and test wrong, right? NO!!&amp;nbsp; None of your testing is valid if you don’t configure your dev and test correctly.&amp;nbsp; Additionally, dev and test are your chance to make sure you fully understand how to configure your systems correctly.&amp;nbsp; In the parlance of sports, “You play how you practice”.&amp;nbsp; So don’t practice failing. &amp;nbsp;&amp;nbsp;It is well worth the extra 10 minutes to get this right.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;This hierarchy is built so that a security failure at a lower level can be eliminated by simply revoking a certificate and effectively pruning an entire branch of the PKI.&amp;nbsp; Figure 6 shows the chain belonging to webmail.T-Mobile.com, whereas Figure 7 shows the entire PKI.&amp;nbsp; If the A1 CA, in Figure 7, were compromised, the root could simply revoke the A1’s certificate and A1 and everything below it would no longer be trusted.&amp;nbsp; This has no negative effect on L1C or L1B or anything below them.&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-xoxJt4ZNl50/T2KkvXYJoII/AAAAAAAAA18/Kof5V28BF3Q/s1600/7.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="537" src="http://4.bp.blogspot.com/-xoxJt4ZNl50/T2KkvXYJoII/AAAAAAAAA18/Kof5V28BF3Q/s640/7.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Figure 7 Big PKI&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;span style="font-size: large;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;This type of design reduces the overall damage that can be done by a successful attacker.&amp;nbsp; Usually the root is offline in a vault, so it can’t be hacked.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;If the client only trusts the Root, but the SSL certificate is signed by an issuing CA, like L1C in Figure 7, how does the client bridge the gap and get the trust extended to it?&amp;nbsp; The chain MUST be sent by the server as part of the SSL negotiation.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;This is another area of common misconfiguration. &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="page-break-after: avoid;"&gt;
&lt;v:shape alt="Description: WireS3Certs.gif" id="Picture_x0020_8" o:spid="_x0000_i1028" style="height: 197.25pt; mso-wrap-style: square; visibility: visible; width: 468pt;" type="#_x0000_t75"&gt;  &lt;v:imagedata o:title="WireS3Certs" src="file:///C:\Users\mark\AppData\Local\Temp\msohtmlclip1\01\clip_image008.gif"&gt; &lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-k8pPjKz6gLU/T2KlJYBV03I/AAAAAAAAA2E/MZHaWhPEgbs/s1600/8.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://4.bp.blogspot.com/-k8pPjKz6gLU/T2KlJYBV03I/AAAAAAAAA2E/MZHaWhPEgbs/s640/8.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
Figure 8 Wireshark sees 3 certificates&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;span style="font-size: large;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;We see in Figure 8, a properly configured server sending the SSL certificate, the Issuer CA certificate, and the intermediate CA certificate.&amp;nbsp;&amp;nbsp; If we look at the Intermediate CA certificate, it will list its issuer as the Root, Entrust, which the clients hopefully trust.&amp;nbsp; This is enough data for the client to “build” the chain and cryptographically verify that no monkey business has occurred. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;As part of building the chain, the client will perform all the checks above, time validity, not revoked, etc, on each certificate in the chain.&amp;nbsp; If any check fails, the client should abort the connection.&amp;nbsp; If the chain successfully builds to the root, then the client can allow the session and security is assured. &amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h2&gt;
Forcing SSL&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Another common mistake is not forcing SSL and simply enabling it.&amp;nbsp; Some site owners and designers wrongly assume that the only time they need SSL is during authentication.&amp;nbsp; If the user’s authenticated session has any value at all, then the entire session must be SSL protected.&amp;nbsp; HTTP sessions are trivial for an attacker to hijack.&amp;nbsp; Additionally, configurations on a site that mix HTTP and HTTPS are prone to human error induced problems.&amp;nbsp;&amp;nbsp; Rather than trusting that links include HTTPS or that only certain pages are set to require SSL, instead set the entire site to require SSL.&amp;nbsp;&amp;nbsp; All the arguments about the extra processor load of SSL haven’t been relevant since 2003 or so.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h1&gt;
Why All the Failures?&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;It would be nice if there was an easy to identify, universally hated, body like congress that could be blamed for SSL failures.&amp;nbsp; Vendors meet this requirement well.&amp;nbsp; SSL certificate vendors point their fingers at the application and OS vendors and the application and OS vendors blame the SSL certificate vendors and the open source community.&amp;nbsp; The overall problem is that there is a knowledge gap between the vendors and the admins who setup the servers and applications.&amp;nbsp; Very few admins know what the chain is, how to send it, or how to verify that it is being sent.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h2&gt;
Verifying the Chain is Sent&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Getting the chain sent, in the first place varies by application and platform, so it is best covered later.&amp;nbsp; Checking that the chain is sent is easy.&amp;nbsp; Simply install openSSL and run this command:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;span style="font-size: large;"&gt;openssl s_client -connect host:port&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;This returns a very handy output full of useful information, including:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;i&gt;Certificate chain&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;i&gt;&amp;nbsp;0 s:/C=US/ST=Texas/L=Frisco/O=T-Mobile USA, Inc./OU=USA/CN=webmail.T-Mobile.com&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; i:/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c) 2009 Entrust, Inc./CN=Entrust Certification Authority - L1C&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;i&gt;&amp;nbsp;1 s:/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c) 2009 Entrust, Inc./CN=Entrust Certification Authority - L1C&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; i:/O=Entrust.net/OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Certification Authority (2048)&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;i&gt;&amp;nbsp;2 s:/O=Entrust.net/OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Certification Authority (2048)&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; i:/C=US/O=Entrust.net/OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Secure Server Certification Authority&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;i&gt;---&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;0 is the SSL certificate and the numbers go up.&amp;nbsp;&amp;nbsp; The subject and issuer DNs are listed to make an easy visual verification of the chain.&amp;nbsp; You can see that this application does not send the root. If you wish to verify the entire chain cryptographically, you can use the –CAfile argument and reference your Root CA certificate, in PEM format.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;This would include the following line, assuming the chain checked out:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;span style="font-size: large;"&gt;Verify return code: 0 (ok)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Sending the Chain&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;This section is the real reason this document was written.&amp;nbsp; There is very little guidance on the web telling admins to send the chain or how to send the chain, and often vendor documents brush over this and or don’t even cover it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
Windows&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;This section may be a bit of a generalization, as many applications can run on windows that use their own SSL code.&amp;nbsp; If the application uses the OS’s SSL, CAPI or CNG, then the OS will attempt to build and send chain based on what it finds in the machine store, or the store of the account running the server or application.&amp;nbsp; This will apply to all MS server applications, such as IIS, Exchange, Active Directory, etc.&amp;nbsp; Unless the developer overrides the default behaviors, this will apply to .NET apps as well.&amp;nbsp; To make sure that the OS can find the certificates in the chain, make sure that they are all in the same “My” or “Personal” store that holds the SSL certificate.&amp;nbsp; Windows can find the certificates in the other stores as well, but it is nice to know there they are and be clear which certificates are which.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="page-break-after: avoid;"&gt;
&lt;v:shape alt="Description: machineCerts.gif" id="Picture_x0020_9" o:spid="_x0000_i1027" style="height: 270.75pt; mso-wrap-style: square; visibility: visible; width: 416.25pt;" type="#_x0000_t75"&gt;  &lt;v:imagedata o:title="machineCerts" src="file:///C:\Users\mark\AppData\Local\Temp\msohtmlclip1\01\clip_image009.gif"&gt; &lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-cT_rNvgJGPQ/T2Kll3IXRMI/AAAAAAAAA2M/PrjPMZxF00I/s1600/9.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="416" src="http://3.bp.blogspot.com/-cT_rNvgJGPQ/T2Kll3IXRMI/AAAAAAAAA2M/PrjPMZxF00I/s640/9.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
Figure 9 Windows Machine Stores&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Java&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;No matter which OS your JVM is running on, or the version of JVM you are running, there is one keystore that is part of the build.&amp;nbsp; The cacerts file found under lib/security holds the list of trusted CAs.&amp;nbsp; Java keystore files use passwords.&amp;nbsp; The default password for your cacerts file is ‘changeit’.&amp;nbsp; This is the list of CAs that you JVM will trust by default. &amp;nbsp;If a client side Java application will use SSL, this is the store that the trust will be based on, unless the developer made a decision to use a separate store.&amp;nbsp; The Java keystore format is proprietary, and is sometimes referred to as JKS.&amp;nbsp; Sun provides the executable ‘keytool’ to create, edit, and inspect keystore files.&amp;nbsp; Newer versions of keytool and Java seem to make it harder to mess up creating the keystore, but in older versions mistakes are very common and allowed by keytool.&amp;nbsp; The JKS file format is a password protected wrapper that should contain all the CA certificates in your chain.&amp;nbsp; Inside that wrapper is another password protected wrapper that holds the private key corresponding to your SSL certificate. &amp;nbsp;&amp;nbsp;For best results, when creating your keystore file, import the CA certificates starting from the root and working down, installing the signed SSL certificate last.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;The process goes like this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Italicizes text is entered by you.&amp;nbsp; Non-italics is command output.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h4&gt;
Create the Keystore and Key Pair&lt;o:p&gt;&lt;/o:p&gt;&lt;/h4&gt;
&lt;div class="MsoNoSpacing"&gt;
From command prompt type the following to create keystore.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&amp;nbsp;&lt;i&gt;keytool -genkey -alias sslcert -keysize 2048 -keyalg RSA -keystore keystore.jks&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
The following attributes must be specified.&amp;nbsp; Remember what the password is since it will be needed when setting up server and importing signed certificates.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Password: password&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
First and Last Name: &lt;b&gt;(must be the FQDN of the server or the F5)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Organizational Unit: (ex. used Operations in particular example)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Organization: (ex. used Company USA.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
City or Locality: (ex. used Seattle)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
State or Province: (ex. used Washington)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Two Letter Country Code: (ex. used US for United States)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Once attributes have been inputted, user is asked to verify information.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Select "&lt;i&gt;y&lt;/i&gt;" and hit &lt;enter&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/enter&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
The user is then asked for key password for &amp;lt; sslcert &amp;gt;, use same password type above and hit &lt;enter&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/enter&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Keystore has now been created.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Create the Certificate Signing Request&lt;o:p&gt;&lt;/o:p&gt;&lt;/h4&gt;
&lt;div class="MsoNoSpacing"&gt;
From the command line enter&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;i&gt;keytool -certreq -alias sslcert -keystore keystore.jks -file ssl.req&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Get the file ssl.req to the CA admin or vendor for signing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;span style="font-size: large;"&gt;Once the Certificate has been signed, the admin or vendor will return the certificate file.&amp;nbsp; In the example, this is certnew.cer.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h4&gt;
Import the CA Hierarchy Certificates&lt;o:p&gt;&lt;/o:p&gt;&lt;/h4&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;span style="font-size: large;"&gt;Before importing the signed certificate into your keystore you will need to establish the trust by importing the CA Certificates.&amp;nbsp; Always start with the root CA and work your way down.&amp;nbsp; This example will show a three tier PKI.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;i&gt;keytool -import -trustcacerts -alias MYRoot -keystore keystore.jks -file "Company USA Root CA.cer"&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Enter keystore password:&amp;nbsp; password&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Owner: CN=Company USA Root CA&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Issuer: CN=Company USA Root CA&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Serial number: 311a0088059a3abe4afb6520a6f749d8&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Valid from: Thu Jan 04 12:54:35 PST 2007 until: Mon Jan 04 13:00:47 PST 2027&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Certificate fingerprints:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MD5:&amp;nbsp; 82:0D:0C:3C:24:09:D6:9C:84:A7:6D:C3:CA:44:F8:C0&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHA1: 5F:62:6A:91:5D:0D:26:F6:FB:AF:76:92:8C:2A:F1:C6:CD:D2:66:0F&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Trust this certificate? [no]:&amp;nbsp; yes&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Certificate was added to keystore&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;i&gt;keytool -import -trustcacerts -alias MYInt -keystore keystore.jks -file "Company USA Intermediate CA 01.cer"&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Enter keystore password:&amp;nbsp; password&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Certificate was added to keystore&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;i&gt;keytool -import -trustcacerts -alias MYIssuer -keystore keystore.jks -file "Company USA Issuer CA 02.cer"&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Enter keystore password:&amp;nbsp; password&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Certificate was added to keystore&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;span style="font-size: large;"&gt;The alias creates a friendly name to list the CA in the keystore.&amp;nbsp; Each alias must be unique, so make up useful, but unique names. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Import the Signed Request File&lt;o:p&gt;&lt;/o:p&gt;&lt;/h4&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;span style="font-size: large;"&gt;The signed request file must be imported back into the original file.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;i&gt;keytool -import -trustcacerts -alias sslcert -keystore keystore.jks -file certnew.cer&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Enter keystore password:&amp;nbsp; password&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
Certificate reply was installed in keystore&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNoSpacing"&gt;
&lt;span style="font-size: large;"&gt;You now have a properly built Java keystore.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
openSSL&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;openSSL is a fantastic tool and set of libraries that is leveraged by many applications.&amp;nbsp; OpenSSL’s native format for dealing with certificates, certificate signing request, and keys is the PEM format.&amp;nbsp; OpenSSL is the most versatile tool for dealing with certificates and keys, as it can convert to and from almost any format, except the Java keystore.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;A typical PEM formatted certificate looks like this:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
-----BEGIN CERTIFICATE-----&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
MIIFuzCCBKOgAwIBAgIETBsbdDANBgkqhkiG9w0BAQUFADCBsTELMAkGA1UEBhMC&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
…&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
FPagpeXsGSr0ipNqRy6m1T2mAO3Ok2B4hK6pBnhtf2n7oY1LB/e1rSIHTivJ9eaN&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
rOCwFjRf+bcELIi2manBx9zI0Qy8JES3vzXBG3xMkJ4Vv3QI93Uk4qn3jodtCPNj&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
DZZTUPbnHqRshXE6zSB7S6BvRbsmaYps9JF1+j5e3Q==&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
-----END CERTIFICATE-----&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;The chain file is just the individual CA certificates in one file, end to end, starting from the issuing CA, moving up to the root, like so:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
-----BEGIN CERTIFICATE-----&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
MIIFuzCCBKOgAwIBAgIETBsbdDANBgkqhkiG9w0BAQUFADCBsTELMAkGA1UEBhMC&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
…&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
rOCwFjRf+bcELIi2manBx9zI0Qy8JES3vzXBG3xMkJ4Vv3QI93Uk4qn3jodtCPNj&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
DZZTUPbnHqRshXE6zSB7S6BvRbsmaYps9JF1+j5e3Q==&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
-----END CERTIFICATE-----&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
-----BEGIN CERTIFICATE-----&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
MIIE8jCCA9qgAwIBAgIEOGPp/DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
…&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
PFS+/i/qaZ0cHimbltjI/lGQ8SSmkAaz8Cmi/3gud1xFIdlEADHzvjJP9QoyDfz8&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
uhZ2VrLWSJLyi6Y+t6xcaeoLP2ZFuQ==&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
-----END CERTIFICATE-----&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
-----BEGIN CERTIFICATE-----&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
MIIEnzCCBAigAwIBAgIERp6RGjANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
…&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
RfPB+JbFi1WkzGuDFiAy2r77r5u3n+F+hJ+ePFCnP1zCvouGuAiS7vhCKw0T43aF&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
SApKv9ClOwqwVLht4wj5NI0LjosSzBcaM4eVyJ4K3FBTF3s=&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
-----END CERTIFICATE-----&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Note that the begin and end certificate statements are left in place.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;To create a key pair and certificate signing request do the following:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;i&gt;&lt;span style="font-size: large;"&gt;openssl req -new -newkey rsa:2048 -nodes -out file.csr -keyout file.key&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;This will output your key files and CSR.&amp;nbsp; The vendor or PKI admin should sign the CSR and return your SSL certificate as well as the CA certificate in your chain.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;With the returned files and openSSL, the sky is the limit.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h3&gt;
Apache&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;First off, there are a couple of ways to configure HTTPS on apache.&amp;nbsp; The main methods are via mod_ssl and Apache-SSL.&amp;nbsp; Apache-SSL has not been updated in a while and should be avoided.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Mod_ssl uses openSSL libraries, so you will need openSSL to do anything fun.&amp;nbsp; The native file format for openSSL is called PEM or base64, which are text files, rather than the DER format, that is binary.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;The file that will contain your SSL settings is the httpd.conf file.&amp;nbsp; There are three settings that you will care about.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;SSLCertificateFile&lt;/b&gt;&amp;nbsp; -&amp;nbsp; This is the actual SSL certificate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;SSLCertificateKeyFile&lt;/b&gt;&amp;nbsp; -&amp;nbsp; this is the associated private key file.&amp;nbsp; If there is a pass phrase on the key, it must be entered at startup.&amp;nbsp; This may not be appropriate for some environments. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;SSLCertificateChainFile&lt;/b&gt;&amp;nbsp; - This is chain file as described above.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h3&gt;
F5 Local Traffic Manager – BigIP&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;First of all, you probably should not be terminating SSL on your F5.&amp;nbsp; “Need to know” or “reduced surface area” says that you don’t want the F5 techs to be able to see your decrypted traffic.&amp;nbsp; There are few good cases for decrypting SSL at the F5.&amp;nbsp; If you need to inspect host headers or URLs, this may be necessary.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;F5 uses openSSL so the section above will help get the needed key and cert material.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;In the SSL Client Profile, there is an option to set the Chain file.&amp;nbsp; Simply copy over the chain file in the openSSL format and apply the setting.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;See &lt;a href="http://support.f5.com/kb/en-us/solutions/public/6000/400/sol6401.html"&gt;http://support.f5.com/kb/en-us/solutions/public/6000/400/sol6401.html&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;And &lt;a href="http://support.f5.com/kb/en-us/solutions/public/10000/100/sol10167.html"&gt;http://support.f5.com/kb/en-us/solutions/public/10000/100/sol10167.html&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Forcing SSL&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;SSL should be forced at the web site level, to eliminate human error. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
IIS&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;In IIS you can define the SSL settings at the site level, virtual directory level, or the page/object level.&amp;nbsp; The best place to do this is at the site level.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="page-break-after: avoid;"&gt;
&lt;v:shape alt="Description: iis6ForceSSL.gif" id="Picture_x0020_2" o:spid="_x0000_i1026" style="height: 346.5pt; mso-wrap-style: square; visibility: visible; width: 362.25pt;" type="#_x0000_t75"&gt;  &lt;v:imagedata o:title="iis6ForceSSL" src="file:///C:\Users\mark\AppData\Local\Temp\msohtmlclip1\01\clip_image010.gif"&gt; &lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-VRW4t7aT3JE/T2Kl1seiFwI/AAAAAAAAA2U/N3XSFDAbQVg/s1600/10.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="611" src="http://4.bp.blogspot.com/-VRW4t7aT3JE/T2Kl1seiFwI/AAAAAAAAA2U/N3XSFDAbQVg/s640/10.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
Figure 10 Requiring SSL in IIS6&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-ll4VECH-tFw/T2Kl6tqaCcI/AAAAAAAAA2c/unPuy2GkSgA/s1600/11.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/-ll4VECH-tFw/T2Kl6tqaCcI/AAAAAAAAA2c/unPuy2GkSgA/s640/11.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Figure 11 Requiring SSL in IIS7&lt;/div&gt;
&lt;div class="MsoCaption"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="page-break-after: avoid;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="page-break-after: avoid;"&gt;
&lt;span style="font-size: large;"&gt;In order to make a better experience, consider changing the default 403.4 HTTP error page to a redirect page, so the user does not get an ugly error.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="page-break-after: avoid;"&gt;
&lt;span style="font-size: large;"&gt;&lt;a href="http://raoulpop.com/2007/08/07/automatic-redirect-from-http-to-https/"&gt;http://raoulpop.com/2007/08/07/automatic-redirect-from-http-to-https/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
Apache&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;In the httpd.conf file, use the directive SSLRequireSSL to require SSL all the time.&amp;nbsp; &lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_ssl.html#sslrequiressl"&gt;http://httpd.apache.org/docs/2.0/mod/mod_ssl.html#sslrequiressl&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;In order to make the end user experience better, consider implementing a redirect from HTTP to HTTPS, rather than just blocking HTTP.&amp;nbsp; &lt;a href="http://www.besthostratings.com/articles/force-ssl-htaccess.html"&gt;http://www.besthostratings.com/articles/force-ssl-htaccess.html&lt;/a&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
F5 LTM&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;The LTM does not have extra ports setup by default.&amp;nbsp; If you do not setup the HTTP port, the user will get a server not found error.&amp;nbsp; Consider creating a VIP and iRule that redirects the user to your HTTPS site.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;The iRule would look like this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;span style="font-size: large;"&gt;when HTTP_REQUEST { &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;span style="font-size: large;"&gt;HTTP::redirect "https://[HTTP::host][HTTP::uri]" &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Codey"&gt;
&lt;span style="font-size: large;"&gt;} &amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;This simply redirects the browser, rewriting the URL with and HTTPS replacing the HTTP. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h1&gt;
Not Covered&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;A few things may seem to be missing here.&amp;nbsp; This document focuses on PKI related configuration.&amp;nbsp; Different apps and OSs also have other SSL/TLS settings that are not directly related to PKI.&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h2&gt;
Cipher Suites&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;As part of the SSL negotiation, the client and server agree on a ciphersuite that is common to them both, hopefully the strongest common suite.&amp;nbsp; As attacks and computing power change, the “best” ciphers change.&amp;nbsp; &amp;nbsp;It is called a suites, as it defines ciphers users in four areas, authentication, key exchange, messaged integrity check (MAC), and the bulk (symmetric) cipher used, including mode, for block ciphers.&amp;nbsp; There is a wide array of combinations of these parameters.&amp;nbsp; As the suite is only as strong as its weakest link, most ciphersuites should be eliminated from your configuration.&amp;nbsp; As of December 2011, you should eliminate any suite that sets any of the four areas to null.&amp;nbsp; You should eliminate any suite that relies on MD5 for its MAC. You should eliminate any ciphersuite that uses a block cipher in CBC mode.&amp;nbsp; One should also eliminate suites that utilize a symmetric cipher with a key shorter than 128 bit.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;For more on CipherSuites, see &lt;a href="http://tools.ietf.org/html/rfc4346"&gt;http://tools.ietf.org/html/rfc4346&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
Windows&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Microsoft allows you to pick the ciphersuites you will allow, as well as prioritize how they will be negotiated.&amp;nbsp; A good place to start is here &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa374757(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/windows/desktop/aa374757(v=vs.85).aspx&lt;/a&gt; .&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;We aware that XP/2003 and Win7/2008 have different settings and available suites.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
Java&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;The Java Class SSLSocket allows the developer to adjust the suites used.&amp;nbsp;&amp;nbsp; &lt;a href="http://docs.oracle.com/javase/1.4.2/docs/api/javax/net/ssl/SSLSocket.html"&gt;http://docs.oracle.com/javase/1.4.2/docs/api/javax/net/ssl/SSLSocket.html&lt;/a&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
F5&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;The LTM/BigIP settings for ciphersuite can be found here &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086418/SSL-Profiles-Part-4-Cipher-Suites.aspx"&gt;http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086418/SSL-Profiles-Part-4-Cipher-Suites.aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
Apache&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Apache support for changing your ciphersuite can be found here &lt;a href="http://httpd.apache.org/docs/2.0/ssl/ssl_howto.html"&gt;http://httpd.apache.org/docs/2.0/ssl/ssl_howto.html&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;span style="font-size: large;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;h2&gt;
Mixed Content&lt;/h2&gt;
&lt;div&gt;
&lt;span style="font-size: large;"&gt;I won't go into how to fix it, or configure your systems, cause you don't pay me... &amp;nbsp;but, creating a page that uses SSL, but that has&amp;nbsp;elements&amp;nbsp;in the page that are not over SSL is called creating mixed content. &amp;nbsp;This is common for those who use CDNs, as their images are all&amp;nbsp;served&amp;nbsp;up via HTTP. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;span style="font-size: large;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: large;"&gt;Mixed content gives the user fun symbols that indicate badness, but how bad?? &amp;nbsp;We can't expect users to make the call on this kind of thing. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-e9f-7KAUbqo/T2KovaXhfSI/AAAAAAAAA2k/zrZF6TeT9gU/s1600/12.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-e9f-7KAUbqo/T2KovaXhfSI/AAAAAAAAA2k/zrZF6TeT9gU/s1600/12.gif" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Figure&amp;nbsp;12&amp;nbsp;Google Reader Throwing Mixed Content Error in Chrome&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: large;"&gt;What's a user supposed to think when they encounter Figure 12? &amp;nbsp;Can your mom or&amp;nbsp;grandfather&amp;nbsp;get meaning out of this&amp;nbsp;explanation? &amp;nbsp;&lt;a href="https://support.google.com/chrome/bin/answer.py?hl=en&amp;amp;answer=95617"&gt;https://support.google.com/chrome/bin/answer.py?hl=en&amp;amp;answer=95617&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h1&gt;
Summary&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;If you want to make the customer experience good, and avoid litigation, make sure to configure SSL on your web servers correctly.&amp;nbsp; Any failure in your configuration may put the client at risk, but it may be a risk that is assumed by you, due to contracts.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Make sure you:&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Set the right subject common name&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Send the chain&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Have time valid certificates&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Include the right usage information&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Force SSL&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;Have verified that the CRLs can be reached&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;CHECK YOUR WORK&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/TVvCkwIMj48" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/2916609761133859419/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=2916609761133859419" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/2916609761133859419?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/2916609761133859419?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/TVvCkwIMj48/proper-pki-configuration-for-ssltls.html" title="Proper PKI Configuration for SSL/TLS Servers" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-l7H-M8q6Rso/T2KjvFBlYVI/AAAAAAAAA1M/qdQmrzEL1rQ/s72-c/1.gif" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2012/03/proper-pki-configuration-for-ssltls.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08GSHYyfCp7ImA9WhVTF0g.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-5510976292770267013</id><published>2012-03-02T23:30:00.000-08:00</published><updated>2012-03-02T23:30:29.894-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-02T23:30:29.894-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Advance Persistent Controls" /><category scheme="http://www.blogger.com/atom/ns#" term="Advanced Persistent Control Suite" /><category scheme="http://www.blogger.com/atom/ns#" term="&quot;Advanced Persistent Protection" /><title>Enrique Salem, president and CEO, Symantec, I WANT MY $2</title><content type="html">As my readers know, in &lt;a href="http://markgamache.blogspot.com/2011/05/next-big-thing-in-information-security.html" target="_blank"&gt;May of 2011&lt;/a&gt;, I coined and began protecting the terms "Advanced Persistent Protection", "Advance&amp;nbsp;Persistent&amp;nbsp;Controls", and "Advanced&amp;nbsp;Persistent&amp;nbsp;Control Suite". &lt;br /&gt;
&lt;br /&gt;
This week, my brilliant reader &lt;a href="http://markgamache.blogspot.com/2011/05/next-big-thing-in-information-security.html?showComment=1330464632543#c6550631061341106340" target="_blank"&gt;Sterling&lt;/a&gt; pointed out that I now have one peer who agrees with me,&amp;nbsp;Enrique Salem, president and CEO of Symantec. &amp;nbsp;In a post for &lt;a href="http://www.scmagazine.com/protecting-information-today-for-a-secure-future/article/229625/" target="_blank"&gt;SC Magazine&lt;/a&gt;, he makes four bullet points about Advanced Persistent Protection. I'm thinking three is the limit for reasonable use. &amp;nbsp;If Symantec is going to start pimping my copyrighted phrase, they need to pay!&lt;br /&gt;
&lt;br /&gt;
I am currently in talks with&amp;nbsp;&lt;a href="http://www.kvia.com/news/24478415/detail.html" target="_blank"&gt;Michael “Let’s Get&lt;/a&gt; &lt;a href="http://abcnews.go.com/GMA/Weekend/lets-ready-rumble-meet-man-catchphrase/story?id=9022704" target="_blank"&gt;Ready to Rumble” Buffer's&lt;/a&gt; legal team to get my cash out of these guys. &lt;br /&gt;
&lt;br /&gt;
Symantec, I have no desire to litigate as long as you give me what I am due. &amp;nbsp;I'm glad to take a per use fee or we can negotiate an exclusive long term deal if you'd prefer. &amp;nbsp;You'd better hurry though, RSA has already started talks. I'd hate for this to sink your upcoming marketing campaign.&lt;br /&gt;
&lt;br /&gt;
Cheers,&lt;br /&gt;
&lt;br /&gt;
Mark&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/b6OAPc2dHI0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/5510976292770267013/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=5510976292770267013" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/5510976292770267013?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/5510976292770267013?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/b6OAPc2dHI0/enrique-salem-president-and-ceo.html" title="Enrique Salem, president and CEO, Symantec, I WANT MY $2" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2012/03/enrique-salem-president-and-ceo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4BQXk_fyp7ImA9WhRXEEs.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-2599500852436379567</id><published>2011-12-15T23:12:00.000-08:00</published><updated>2011-12-16T11:49:10.747-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-16T11:49:10.747-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="advanced persistent threat" /><category scheme="http://www.blogger.com/atom/ns#" term="APT" /><title>Advanced Persistent Threats - Thank You Wikipedia</title><content type="html">My head is near exploding, as I'm sure yours is, from all the APT news. &amp;nbsp;It's everywhere, I swear I saw it on the cover of the Weekly World News. &lt;br /&gt;
&lt;br /&gt;
What&amp;nbsp;annoys&amp;nbsp;me is that the first several times I&amp;nbsp;heard&amp;nbsp;about an APT, "they" were&amp;nbsp;basically&amp;nbsp;describing any other virus or malware. &amp;nbsp;The only&amp;nbsp;difference&amp;nbsp;was that the&amp;nbsp;writers&amp;nbsp;did a better job hiding their command and control, and they used more, and&amp;nbsp;varying, ways to hide from AV and stay resident. &amp;nbsp;This is a lame term as there is no line where quality&amp;nbsp;achieves&amp;nbsp;the level of Advanced!!&lt;br /&gt;
&lt;br /&gt;
After hearing about the&amp;nbsp;nature&amp;nbsp;of the RSA breach, I have decided to only give credence to those who refer to an APT as an actor. &amp;nbsp;APTs are not code. &amp;nbsp;An APT is someone, some organization, or a nation state who is well funded,&amp;nbsp;highly&amp;nbsp;sophisticated, and&amp;nbsp;persistent&amp;nbsp;in their goal to&amp;nbsp;compromise&amp;nbsp;something.&lt;br /&gt;
&lt;br /&gt;
I went to&amp;nbsp;Wikipedia&amp;nbsp;to see what the masses were saying, assuming the worst. &amp;nbsp;Wikipedia agrees with me? &amp;nbsp;I may &amp;nbsp;have to turn in my&amp;nbsp;security&amp;nbsp;spurs. &amp;nbsp;:-P&lt;br /&gt;
&lt;br /&gt;
Proper use, "I am an advanced persistent threat".&lt;br /&gt;
&lt;br /&gt;
Improper user, "I created and advanced&amp;nbsp;persistent&amp;nbsp;threat".&lt;br /&gt;
&lt;br /&gt;
You can kill or jail an advanced&amp;nbsp;persistent&amp;nbsp;threat, but you can't delete it.&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/Cuz43uCupuU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/2599500852436379567/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=2599500852436379567" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/2599500852436379567?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/2599500852436379567?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/Cuz43uCupuU/advanced-persistent-threats-thank-you.html" title="Advanced Persistent Threats - Thank You Wikipedia" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2011/12/advanced-persistent-threats-thank-you.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IHQnkycSp7ImA9WhRQFEg.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-1324755717635983695</id><published>2011-11-22T19:33:00.000-08:00</published><updated>2011-12-09T11:38:53.799-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-09T11:38:53.799-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Root DSE" /><category scheme="http://www.blogger.com/atom/ns#" term="Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="LDAP" /><title>LDAP Tool of the Day - getrootDSE</title><content type="html">I'm an &lt;a href="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol" target="_blank"&gt;LDAP&lt;/a&gt; guy. &amp;nbsp;I'm not even sure&amp;nbsp;what&amp;nbsp;that means, but I am one. &amp;nbsp;I spend a lot of my work time looking at LDAPs. &amp;nbsp;For the&amp;nbsp;purists, I look at directories. &amp;nbsp;LDAP is just an interface to the&amp;nbsp;directory. &amp;nbsp;If I look at the protocol with &lt;a href="http://www.wireshark.org/" target="_blank"&gt;Wireshark&lt;/a&gt;, does that mean I am looking at LDAPs, 'cuase I do that too. &amp;nbsp;Can you really look at a directory? &amp;nbsp;I've never been to our data centers. &amp;nbsp;Where was I?&lt;br /&gt;
&lt;br /&gt;
There are a lot of great tools for working with LDAP, but there is always room for one more,&amp;nbsp;right? &amp;nbsp; A common task for me is to need to look at the contents of the &lt;a href="http://tools.ietf.org/html/rfc3045" target="_blank"&gt;Root DSE&lt;/a&gt; and verify the SSL certificate being used, if SSL is used.&lt;br /&gt;
&lt;br /&gt;
For those not familiar with&amp;nbsp;the&amp;nbsp;&lt;a href="https://www.opends.org/wiki/page/DefinitionRootDSE" target="_blank"&gt;root DSE&lt;/a&gt;, it is an entry offered by all LDAP servers. &amp;nbsp;Its DN is null or empty, depending on how you&amp;nbsp;interpret&amp;nbsp;the &lt;a href="http://tools.ietf.org/html/rfc4510" target="_blank"&gt;RFCs&lt;/a&gt;. &amp;nbsp;It almost always accepts un-authenticated connections and lists information about the contents and&amp;nbsp;&lt;a href="http://www.networksorcery.com/enp/protocol/ldap.htm" target="_blank"&gt;capabilities&lt;/a&gt;&amp;nbsp;of the LDAP server. &amp;nbsp;It will usually list the supported LDAP controls,&amp;nbsp;authentication&amp;nbsp;types&amp;nbsp;offered, and often the naming contexts is holds. &amp;nbsp;Different&amp;nbsp;vendors list different data, and it is this data that I am often&amp;nbsp;interested&amp;nbsp;in.&lt;br /&gt;
&lt;br /&gt;
Here are a few typical entries:&lt;br /&gt;
&lt;b&gt;&lt;a href="http://www.microsoft.com/en-us/server-cloud/windows-server/active-directory-overview.aspx" target="_blank"&gt;Active Directory&lt;/a&gt; Domain&amp;nbsp;Controller&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;dn:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;currentTime: 20111123000138.0Z&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;subschemaSubentry: CN=Aggregate,CN=Schema,CN=Configuration,DC=example,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;dsServiceName: CN=NTDS Settings,CN=&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;mydomcontr08&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;,CN=Servers,CN=Food,CN=Sites,CN=Co&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;nfiguration,DC=example,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts: DC=example,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts: CN=Configuration,DC=example,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts: CN=Schema,CN=Configuration,DC=example,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;defaultNamingContext: DC=example,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;schemaNamingContext: CN=Schema,CN=Configuration,DC=example,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;configurationNamingContext: CN=Configuration,DC=example,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;rootDomainNamingContext: DC=example,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.319&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.801&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.473&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.528&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.417&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.619&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.841&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.529&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.805&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.521&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.970&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.1338&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.474&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.1339&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.1340&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.1413&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 2.16.840.1.113730.3.4.9&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 2.16.840.1.113730.3.4.10&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.1504&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.1852&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.802&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.1907&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.1948&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.1974&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.1341&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl: 1.2.840.113556.1.4.2026&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPVersion: 3&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPVersion: 2&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: MaxPoolThreads&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: MaxDatagramRecv&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: MaxReceiveBuffer&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: InitRecvTimeout&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: MaxConnections&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: MaxConnIdleTime&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: MaxPageSize&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: MaxQueryDuration&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: MaxTempTableSize&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: MaxResultSetSize&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: MaxNotificationPerConn&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies: MaxValRange&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;highestCommittedUSN: 124867805&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedSASLMechanisms: GSSAPI&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedSASLMechanisms: GSS-SPNEGO&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedSASLMechanisms: EXTERNAL&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedSASLMechanisms: DIGEST-MD5&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;dnsHostName: mydomcontr08.example.ORG&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;ldapServiceName: example.ORG:mydomcontr08$@example.ORG&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;serverName: CN=mydomcontr08,CN=Servers,CN=Food,CN=Sites,CN=Configuration,DC=examp&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;le,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedCapabilities: 1.2.840.113556.1.4.800&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedCapabilities: 1.2.840.113556.1.4.1670&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedCapabilities: 1.2.840.113556.1.4.1791&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedCapabilities: 1.2.840.113556.1.4.1935&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;isSynchronized: TRUE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;isGlobalCatalogReady: TRUE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;domainFunctionality: 2&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;forestFunctionality: 2&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;domainControllerFunctionality: 3&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href="http://www.oracle.com/technetwork/middleware/id-mgmt/index-093158.html" target="_blank"&gt;Oracle Virtual Directory&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;dn:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts: ou=Groups,dc=example,dc=com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts: ou=admins,dc=example,dc=com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts: ou=employees,dc=example,dc=com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts: ou=IDMUsers,dc=idm.example,dc=com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts: ou=partners,dc=example,dc=com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts: OU=portal users,dc=example,dc=com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts: dc=example,dc=com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts: ou=OIDUsers,dc=idm.example,dc=com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;objectClass: top&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;subschemaSubEntry: cn=schema&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedSASLMechanisms: EXTERNAL&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedSASLMechanisms: CRAM-MD5&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPVersion: 2&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPVersion: 3&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedExtension: 1.3.6.1.4.1.1466.20037&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href="http://www.oracle.com/technetwork/middleware/id-mgmt/overview/index-082035.html" target="_blank"&gt;Oracle Internet Directory&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;dn:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedsaslmechanisms: DIGEST-MD5&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedldapversion: 2&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedldapversion: 3&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedextension: 2.16.840.1.113894.1.9.1&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedextension: 1.3.6.1.4.1.1466.20037&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113730.3.4.2&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113894.1.8.1&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113894.1.8.2&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113894.1.8.3&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113894.1.8.4&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113894.1.8.5&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113894.1.8.6&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113894.1.8.7&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 1.2.840.113556.1.4.473&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 1.2.840.113556.1.4.319&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113894.1.8.14&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113894.1.8.16&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113894.1.8.23&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedcontrol: 2.16.840.1.113894.1.8.29&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;subschemasubentry: cn=subschemasubentry&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;subregistrysubentry: cn=subregistrysubentry&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;subconfigsubentry: cn=subconfigsubentry&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;pwdpolicysubentry: cn=default,cn=pwdPolicies,cn=Common,cn=Products,cn=OracleCont&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;ext&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclupgradeinprogress: FALSE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orcltimelimit: 3600&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclstatsperiodicity: 60&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclstatslevel: 0&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclstatsflag: 0&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclsizelimit: 100000&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclsimplemodchglogattributes: uniquemember&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclsimplemodchglogattributes: member&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclsimplemodchglogattributes: orcluserapplnprovstatus&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclsimplemodchglogattributes: orcluserapplnprovstatusdesc&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclsimplemodchglogattributes: orcluserprovfailurecount&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclservermode: rw&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclreplicaid: prdoidx401_poid1&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclreplagreements: cn=replication configuration&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orcloptcontainsquery: 0&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclnormdn:: IA==&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclmaxtcpidleconntime: 120&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclmatchdnenabled: 0&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orcllegacyoidsyncagent: cn=odisrv+orclhostname=prdoidx001,cn=Registered Instance&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;s,cn=Directory Integration Platform,cn=Products,cn=OracleContext&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orcllegacyoidsyncagent: cn=odisrv+orclhostname=prdoidx401,cn=Registered Instance&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;s,cn=Directory Integration Platform,cn=Products,cn=OracleContext&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orcllegacyoidsyncagent: cn=odisrv+orclhostname=prdoidx002,cn=Registered Instance&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;s,cn=Directory Integration Platform,cn=Products,cn=OracleContext&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orcllegacyoidsyncagent: cn=odisrv+orclhostname=prdoidx402,cn=Registered Instance&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;s,cn=Directory Integration Platform,cn=Products,cn=OracleContext&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orcleventlevel: 0&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclentrylevelaci: access to entry by * (browse, noadd, nodelete)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclentrylevelaci: access to attr=(orclaci,orclguname,orclgupassword,orclprname,&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;orclprpassword,orclcryptoscheme,orclsuname,orclsupassword) by * (none)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclentrylevelaci: access to attr=(*) by * (search, read, nowrite, nocompare)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclentrylevelaci: access to attr=(*) AppendToAll by group="cn=directoryadmingro&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;up,cn=oracle internet directory" (search,read,write,compare)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclentrylevelaci: access to entry AppendToAll by group="cn=directoryadmingroup,&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;cn=oracle internet directory" (browse,add,delete)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclentrylevelaci: access to attr=(orclstatsflag, orclstatsperiodicity,orclevent&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;level) by dn="cn=emd admin,cn=oracle internet directory" (search,read,write,com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;pare) by * (search,read)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclenablegroupcache: 1&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclecachemaxsize: 10000000&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclecachemaxentries: 25000&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclecacheenabled: 1&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orcldirectoryversion: OID 10.1.4.3.0&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orcldiprepository: FALSE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orcldebugop: 511&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orcldebugflag: 0&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclcatalogentrydn: cn=catalogs&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclauditlevel: 0&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;orclanonymousbindsflag: 1&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;matchingrules: distinguishedNameMatch&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;matchingrules: caseIgnoreMatch&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;matchingrules: caseExactMatch&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;matchingrules: numericStringMatch&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;matchingrules: telephoneNumberMatch&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;changestatus: cn=changestatus&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;changelog: cn=changelog&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;authpassword;oid: {SASL/MD5}sHex432oGONWYembe52eKA==&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;authpassword;oid: {SASL/MD5-DN}UpdstrkdNdL5mxyQ8wFP5iQ==&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;authpassword;oid: {SASL/MD5-U}m0/awjpasdf346gaKaIHs9UQ==&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can get this all via the command line, with &lt;a href="http://linux.die.net/man/1/ldapsearch" target="_blank"&gt;ldapsearch&lt;/a&gt;. &amp;nbsp;For windows, I use the &lt;a href="http://www.opends.org/" target="_blank"&gt;OpenDS&lt;/a&gt; version.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;ldapsearch -h host.name.org &amp;nbsp;-p 389 -w "" -b "" -s base &amp;nbsp;objectclass=*&lt;br /&gt;
&lt;br /&gt;
I often forget the command, and if you need SSL, then you need to add -Z -X. &amp;nbsp;Really, the -X is something that I'd complain about in most contexts, as it&amp;nbsp;accepts&amp;nbsp;any SSL certs. &amp;nbsp;In this case, I am meaning to investigate the cert as well.&lt;br /&gt;
&lt;br /&gt;
This gets me the LDAP info, but, then I'd need to use &lt;a href="http://www.openssl.org/" target="_blank"&gt;openssl&lt;/a&gt; to get the SSL and cert info.&lt;br /&gt;
&lt;br /&gt;
Using&lt;br /&gt;
&amp;gt;openssl s_client -connect ovd.internal.example.com:636&lt;br /&gt;
I get the connect info:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Loading 'screen' into random state - done&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;CONNECTED(0000017C)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;depth=3 CN = Example USA Root CA&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;verify error:num=19:self signed certificate in certificate chain&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;verify return:0&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;---&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Certificate chain&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;0 s:/C=US/ST=Washington/L=Bothell/O=Example USA, Inc./OU=Internal Systems/CN=ovd.internal.Example.com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;i:/DC=org/DC=Example/CN=Example USA Issuer CA 02&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1 s:/DC=org/DC=Example/CN=Example USA Issuer CA 02&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;i:/CN=Example USA Intermediate CA 01&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;2 s:/CN=Example USA Intermediate CA 01&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;i:/CN=Example USA Root CA&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;3 s:/CN=Example USA Root CA&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;i:/CN=Example USA Root CA&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;---&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Server certificate&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;-----BEGIN CERTIFICATE-----&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;MIIGFTCCBP2gAwIBAgIKN3rWsgABAAWq7TANBgkqhkiG9w0BAQUFADBSMRMwEQYK&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;CZImiZPyLGQBGRYDb3JnMRcwFQYKCZImiZPyLGQBGRYHZ3NtMTkwMDEiMCAGA1UE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;AxMZVC1Nb2JpbGUgVVNBIElzc3VlciBDQSAwMjAeFw0xMTAxMzAwMTU2MjlaFw0x&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;MjAxMzAwMTU2MjlaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;hpw6x12bNa5bqIzyCm70ENEWSZkVAIiYPgNlJEs4AjmzgHo9ixPqsRmzSbmryaAg&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;8Pw6PUYagF+4soVfKRTZm62m+6qHlmnsDeGjKh6YR7QSwySTH+LV0VXuPBecM7T9&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;tf90c4mUD/jKnk9o0up0yTxXDf/WKNQ9SHKkzxvqJ8+7DcVw5kjBe+x8H1/HK420&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;skqyrngmSrL/3xjN/9JdXJp3WRVa+2dYAg==&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;-----END CERTIFICATE-----&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;subject=/C=US/ST=Washington/L=Bothell/O=Example USA, Inc./OU=Internal Systems/CN=ovd.internal.Example.com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;issuer=/DC=org/DC=Example/CN=Example USA Issuer CA 02&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;---&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;No client certificate CA names sent&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;---&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;SSL handshake has read 6038 bytes and written 368 bytes&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;---&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Server public key is 1024 bit&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Secure Renegotiation IS supported&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Compression: NONE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Expansion: NONE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;SSL-Session:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; Protocol &amp;nbsp;: TLSv1&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; Cipher &amp;nbsp; &amp;nbsp;: EDH-RSA-DES-CBC3-SHA&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; Session-ID: 4ECC3B5303F3EAB7AFDD9452D7671A08CA4E345DF07F7FF3A76A3B9C62B2DA10&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; Session-ID-ctx:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; Master-Key: B074BCE20BBF51B4EF420994309A4CC3DD85DB48F9CB6C5305F984A936FD6B659588C942B63FBC0228EF570D7E05777F&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; Key-Arg &amp;nbsp; : None&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; PSK identity: None&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; PSK identity hint: None&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; Start Time: 1322007377&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; Timeout &amp;nbsp; : 300 (sec)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; Verify return code: 19 (self signed certificate in certificate chain)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;---&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Last, I have to cut&amp;nbsp;and&amp;nbsp;paste the&amp;nbsp;certificate&amp;nbsp;into a file and use openssl to read it.&lt;br /&gt;
&amp;gt;openssl asn1parse -in "cert.pem"&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; 0:d=0 &amp;nbsp;hl=4 l=1557 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; 4:d=1 &amp;nbsp;hl=4 l=1277 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; 8:d=2 &amp;nbsp;hl=2 l= &amp;nbsp; 3 cons: cont [ 0 ]&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;10:d=3 &amp;nbsp;hl=2 l= &amp;nbsp; 1 prim: INTEGER &amp;nbsp; &amp;nbsp; &amp;nbsp; :02&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;13:d=2 &amp;nbsp;hl=2 l= &amp;nbsp;10 prim: INTEGER &amp;nbsp; &amp;nbsp; &amp;nbsp; :377AD6B200010005AAED&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;25:d=2 &amp;nbsp;hl=2 l= &amp;nbsp;13 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;27:d=3 &amp;nbsp;hl=2 l= &amp;nbsp; 9 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:sha1WithRSAEncryption&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;38:d=3 &amp;nbsp;hl=2 l= &amp;nbsp; 0 prim: NULL&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;40:d=2 &amp;nbsp;hl=2 l= &amp;nbsp;82 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;42:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;19 cons: SET&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;44:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;17 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;46:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;10 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:domainComponent&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;58:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: IA5STRING &amp;nbsp; &amp;nbsp; :org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;63:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;23 cons: SET&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;65:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;21 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;67:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;10 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:domainComponent&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;79:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 7 prim: IA5STRING &amp;nbsp; &amp;nbsp; :gsm1900&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;88:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;34 cons: SET&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;90:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;32 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;92:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:commonName&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;97:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;25 prim: PRINTABLESTRING &amp;nbsp; :Example USA Issuer CA 02&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 124:d=2 &amp;nbsp;hl=2 l= &amp;nbsp;30 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 126:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;13 prim: UTCTIME &amp;nbsp; &amp;nbsp; &amp;nbsp; :110130015629Z&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 141:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;13 prim: UTCTIME &amp;nbsp; &amp;nbsp; &amp;nbsp; :120130015629Z&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 156:d=2 &amp;nbsp;hl=3 l= 144 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 159:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;11 cons: SET&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 161:d=4 &amp;nbsp;hl=2 l= &amp;nbsp; 9 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 163:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:countryName&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 168:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 2 prim: PRINTABLESTRING &amp;nbsp; :US&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 172:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;19 cons: SET&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 174:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;17 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 176:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:stateOrProvinceName&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 181:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;10 prim: PRINTABLESTRING &amp;nbsp; :Washington&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 193:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;16 cons: SET&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 195:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;14 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 197:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:localityName&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 202:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 7 prim: PRINTABLESTRING &amp;nbsp; :Bothell&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 211:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;27 cons: SET&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 213:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;25 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 215:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:organizationName&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 220:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;18 prim: PRINTABLESTRING &amp;nbsp; :Example USA, Inc.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 240:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;25 cons: SET&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 242:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;23 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 244:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:organizationalUnitName&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 249:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;16 prim: PRINTABLESTRING &amp;nbsp; :Internal Systems&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 267:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;34 cons: SET&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 269:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;32 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 271:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:commonName&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 276:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;25 prim: PRINTABLESTRING &amp;nbsp; :ovd.internal.Example.com&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 303:d=2 &amp;nbsp;hl=3 l= 159 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 306:d=3 &amp;nbsp;hl=2 l= &amp;nbsp;13 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 308:d=4 &amp;nbsp;hl=2 l= &amp;nbsp; 9 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:rsaEncryption&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 319:d=4 &amp;nbsp;hl=2 l= &amp;nbsp; 0 prim: NULL&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 321:d=3 &amp;nbsp;hl=3 l= 141 prim: BIT STRING&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 465:d=2 &amp;nbsp;hl=4 l= 816 cons: cont [ 3 ]&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 469:d=3 &amp;nbsp;hl=4 l= 812 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 473:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;29 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 475:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:X509v3 Subject Key Identifier&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 480:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;22 prim: OCTET STRING &amp;nbsp; &amp;nbsp; &amp;nbsp;[HEX DUMP]:0414D5FBEBB564FC0855035A02C36F05D3BE6AB6D990&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 504:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;31 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 506:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:X509v3 Authority Key Identifier&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 511:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;24 prim: OCTET STRING &amp;nbsp; &amp;nbsp; &amp;nbsp;[HEX DUMP]:30168014688A27CD6281B170FAC4A241E1F84927278B3A00&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 537:d=4 &amp;nbsp;hl=4 l= 305 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 541:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:X509v3 CRL Distribution Points&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 546:d=5 &amp;nbsp;hl=4 l= 296 prim: OCTET STRING &amp;nbsp; &amp;nbsp; &amp;nbsp;[HEX DUMP]: &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 846:d=4 &amp;nbsp;hl=4 l= 294 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 850:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 8 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:Authority Information Access&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; 860:d=5 &amp;nbsp;hl=4 l= 280 prim: OCTET STRING &amp;nbsp; &amp;nbsp; &amp;nbsp;[HEX DUMP]:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1144:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;12 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1146:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:X509v3 Basic Constraints&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1151:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 1 prim: BOOLEAN &amp;nbsp; &amp;nbsp; &amp;nbsp; :255&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1154:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 2 prim: OCTET STRING &amp;nbsp; &amp;nbsp; &amp;nbsp;[HEX DUMP]:3000&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1158:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;11 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1160:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:X509v3 Key Usage&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1165:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 4 prim: OCTET STRING &amp;nbsp; &amp;nbsp; &amp;nbsp;[HEX DUMP]:030205A0&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1171:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;62 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1173:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 9 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:1.3.6.1.4.1.311.21.7&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1184:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;49 prim: OCTET STRING &amp;nbsp; &amp;nbsp; &amp;nbsp;[HEX DUMP]:302F06272B0601040182371508AFAB1B85DD9D4F82E999398785C52C83F1EE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;23778AC8DE812D86D8DA8E14020164020106&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1235:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;19 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1237:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 3 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:X509v3 Extended Key Usage&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1242:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;12 prim: OCTET STRING &amp;nbsp; &amp;nbsp; &amp;nbsp;[HEX DUMP]:300A06082B06010505070301&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1256:d=4 &amp;nbsp;hl=2 l= &amp;nbsp;27 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1258:d=5 &amp;nbsp;hl=2 l= &amp;nbsp; 9 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:1.3.6.1.4.1.311.21.10&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1269:d=5 &amp;nbsp;hl=2 l= &amp;nbsp;14 prim: OCTET STRING &amp;nbsp; &amp;nbsp; &amp;nbsp;[HEX DUMP]:300C300A06082B06010505070301&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1285:d=1 &amp;nbsp;hl=2 l= &amp;nbsp;13 cons: SEQUENCE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1287:d=2 &amp;nbsp;hl=2 l= &amp;nbsp; 9 prim: OBJECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:sha1WithRSAEncryption&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1298:d=2 &amp;nbsp;hl=2 l= &amp;nbsp; 0 prim: NULL&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;1300:d=1 &amp;nbsp;hl=4 l= 257 prim: BIT STRING&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I can get 98% of what I need in one command, with my new tool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;gt;getrootdse myORG.org 636 ssl&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Performing a RootDSE search ...&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedSASLMechanisms &amp;nbsp; is GSSAPI&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedSASLMechanisms &amp;nbsp; is GSS-SPNEGO&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedSASLMechanisms &amp;nbsp; is EXTERNAL&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedSASLMechanisms &amp;nbsp; is DIGEST-MD5&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;defaultNamingContext &amp;nbsp; is DC=myORG,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;domainControllerFunctionality &amp;nbsp; is 3&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;ldapServiceName &amp;nbsp; is myORG.org:myDomcontr01$@myORG.ORG&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPVersion &amp;nbsp; is 3&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPVersion &amp;nbsp; is 2&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;dsServiceName &amp;nbsp; is CN=NTDS Settings,CN=myDomcontr01,CN=Servers,CN=myORG-West,CN=Sites,CN=Configurati&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;on,DC=myORG,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;subschemaSubentry &amp;nbsp; is CN=Aggregate,CN=Schema,CN=Configuration,DC=myORG,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is MaxPoolThreads&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is MaxDatagramRecv&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is MaxReceiveBuffer&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is InitRecvTimeout&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is MaxConnections&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is MaxConnIdleTime&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is MaxPageSize&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is MaxQueryDuration&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is MaxTempTableSize&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is MaxResultSetSize&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is MaxNotificationPerConn&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedLDAPPolicies &amp;nbsp; is MaxValRange&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;isSynchronized &amp;nbsp; is TRUE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;dnsHostName &amp;nbsp; is myDomcontr01.myORG.org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.319&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.801&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.473&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.528&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.417&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.619&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.841&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.529&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.805&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.521&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.970&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.1338&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.474&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.1339&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.1340&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.1413&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 2.16.840.1.113730.3.4.9&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 2.16.840.1.113730.3.4.10&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.1504&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.1852&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.802&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.1907&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.1948&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.1974&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.1341&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedControl &amp;nbsp; is 1.2.840.113556.1.4.2026&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;isGlobalCatalogReady &amp;nbsp; is TRUE&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;forestFunctionality &amp;nbsp; is 2&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedCapabilities &amp;nbsp; is 1.2.840.113556.1.4.800&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedCapabilities &amp;nbsp; is 1.2.840.113556.1.4.1670&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedCapabilities &amp;nbsp; is 1.2.840.113556.1.4.1791&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;supportedCapabilities &amp;nbsp; is 1.2.840.113556.1.4.1935&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;highestCommittedUSN &amp;nbsp; is 376377966&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;rootDomainNamingContext &amp;nbsp; is DC=myORG,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;schemaNamingContext &amp;nbsp; is CN=Schema,CN=Configuration,DC=myORG,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts &amp;nbsp; is DC=myORG,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts &amp;nbsp; is CN=Configuration,DC=myORG,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namingContexts &amp;nbsp; is CN=Schema,CN=Configuration,DC=myORG,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;configurationNamingContext &amp;nbsp; is CN=Configuration,DC=myORG,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;serverName &amp;nbsp; is CN=myDomcontr01,CN=Servers,CN=myORG-West,CN=Sites,CN=Configuration,DC=myORG,DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;currentTime &amp;nbsp; is 20111123004547.0Z&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;domainFunctionality &amp;nbsp; is 2&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;RootDSE search completed.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;SSL for encryption is enabled&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;SSL information:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; cipher strength: 128&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; exchange strength: 1024&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; protocol: Tls1Client&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; hash strength: 160&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; algorithm: Aes128&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; KeyExAlgo: 41984&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;The&amp;nbsp;certificate&amp;nbsp;did NOT validate correctly&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;The cert information is:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; Subject: CN=myDomcontr01.myORG.org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;Issuer: CN=myORG USA Issuer CA 06 v1, DC=myORG, DC=org&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;Expires: 8/21/2012 6:46:46 AM&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;Hash: 6D8F0501B7881A0DCCC84E1DCF4E1DF0646A4479&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;Public Key: 30818902818100C9D8ADE08D8CC893934C95AFF45DCFAB317B83CD0A93D659B181B8AB476D49954F94E2EE148C9A095C86592DCA458&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;B488DB3D5BDE5F14EAD3FBBB0D15A6DB1B48B587EB13984B15D27B2BEF4AF421BE8861B4A0C704A5510C5A2D431202675D65F9455573BDA2083D1DCD&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;6A2541FDA6CD6205FFACE670467366F9FC763B5C8B50203010001&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;Serial: 1BC1C68D000000005EC9&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Here's the c# code&lt;br /&gt;
&lt;a href="https://s3.amazonaws.com/markgamache/doWork.cs"&gt;https://s3.amazonaws.com/markgamache/doWork.cs&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
the .NET 2.0&amp;nbsp;assembly.&lt;br /&gt;
&lt;a href="https://s3.amazonaws.com/markgamache/GetRootDSE.exe"&gt;https://s3.amazonaws.com/markgamache/GetRootDSE.exe&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Enjoy.&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/cwt6axs86NE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/1324755717635983695/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=1324755717635983695" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/1324755717635983695?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/1324755717635983695?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/cwt6axs86NE/ldap-tool-of-day-getrootdse.html" title="LDAP Tool of the Day - getrootDSE" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2011/11/ldap-tool-of-day-getrootdse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUFQXc7cSp7ImA9WhRSGU4.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-3378736007140910818</id><published>2011-11-21T20:25:00.000-08:00</published><updated>2011-11-21T20:30:10.909-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-21T20:30:10.909-08:00</app:edited><title>Learn From My Mistakes - Toddlers</title><content type="html">I was recently reminded, twice, that kids don't see the world or understand language the way big people do.  Here are two examples. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Be Careful&lt;/b&gt;&lt;br /&gt;
A few weeks ago, I was working out on our deck with a hammer.  My 2 year old daughter came out and kept getting in the way.  Being a wonderful and loving father, I warned my daughter.  Using a tone that I knew was caring and not threatening, I said, "Sweetie, watch out or daddy might smash your toes with the hammer".  My daughter immediately broke out into hysterical tears, screaming, "No daddy, don't smash my toes". &amp;nbsp;I guess one should think before they speak.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Dirty Apple&lt;/b&gt;&lt;br /&gt;
The other day my daughter was eating an apple out in the yard of a house we were looking at. &amp;nbsp;She was eating an apple, which she dropped into the dirt. &amp;nbsp; As the apple was covered in dirt, I told my&amp;nbsp;daughter&amp;nbsp;it was dirty and we'd get another one. &amp;nbsp;Then I threw it over the house&amp;nbsp;into&amp;nbsp;the green belt behind in the back. &amp;nbsp;Once again, my daughter broke out into tears, yelling, "daddy, apple&amp;nbsp;disappear&amp;nbsp;into sky"!! &lt;br /&gt;
&lt;br /&gt;
Don't be like me...&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/3meBzqdfh50" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/3378736007140910818/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=3378736007140910818" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/3378736007140910818?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/3378736007140910818?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/3meBzqdfh50/learn-from-my-mistakes-toddlers.html" title="Learn From My Mistakes - Toddlers" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2011/11/learn-from-my-mistakes-toddlers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQASXk_fyp7ImA9WhZUFE0.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-3877900257741773981</id><published>2011-05-24T20:38:00.000-07:00</published><updated>2011-06-06T16:35:48.747-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-06T16:35:48.747-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Cryptography" /><category scheme="http://www.blogger.com/atom/ns#" term="HSM" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="key management" /><title>Why We Use Hardware Security Modules</title><content type="html">&lt;div class="MsoNormal"&gt;Hardware Security Modules (HSMs) are a security device that adds a lot of expense, man hours and complexity to a data processing system.   As security and usability are always a trade-off, let’s look at when you want to make the trade.  First off, what do HSMs to at a basic level?  An HSM is a device used for key management and encryption and decryption of data.  The HSM holds the key material on the device and there is no way to export the keys in a usable format.  This keeps and attacker from copying your encrypted database and then taking the key and decrypting the data offsite, on his own time, where he is less likely to be caught.  Used correctly, this is a big security gain. &lt;/div&gt;&lt;div class="MsoNormal"&gt;There are a few guiding principles to keep in mind when looking at the threats to your data and the protections that the proper use on an HSM can bring.&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;         &lt;/span&gt;&lt;/span&gt;Encryption is easy, key management is very hard.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc722487.aspx#EFAA"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;         &lt;/span&gt;&lt;/span&gt;A computer is only as secure as the administrator is trustworthy.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc722487.aspx#EEAA"&gt;Encrypted data is only as secure as the decryption key&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc722487.aspx#EIAA"&gt;If a bad guy has unrestricted physical access to your computer, it's not your computer anymore.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;         &lt;/span&gt;&lt;/span&gt;A data processing system, in terms of security, is like a chain.  It is only as strong as the weakest link.&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;         &lt;/span&gt;&lt;/span&gt;There are some risks that are too big to be accepted by any one person or department.  Requiring multiple people for some operations raises the security bar.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;When considering how to implement key management, the other option we look at is software based keys.  Let’s take a quick look at the trade-offs of each.  As you will see, HSMs are not a silver bullet.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid black .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;"&gt;&lt;tbody&gt;
&lt;tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;"&gt;   &lt;td style="border: solid black 1.0pt; mso-border-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 431.6pt;" valign="top" width="575"&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-left: none; border: solid black 1.0pt; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 1.25in;" valign="top" width="120"&gt;&lt;div class="MsoNormal"&gt;HSM&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-left: none; border: solid black 1.0pt; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 85.5pt;" valign="top" width="114"&gt;&lt;div class="MsoNormal"&gt;Software Keys&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 1;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 431.6pt;" valign="top" width="575"&gt;&lt;div class="MsoNormal"&gt;Someone with physical access to your server can take your   keys*&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 1.25in;" valign="top" width="120"&gt;&lt;div class="MsoNormal"&gt;Maybe&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 85.5pt;" valign="top" width="114"&gt;&lt;div class="MsoNormal"&gt;Yes&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 2;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 431.6pt;" valign="top" width="575"&gt;&lt;div class="MsoNormal"&gt;An attacker who can execute code on your servers can copy   your keys&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 1.25in;" valign="top" width="120"&gt;&lt;div class="MsoNormal"&gt;No&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 85.5pt;" valign="top" width="114"&gt;&lt;div class="MsoNormal"&gt;Yes&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 3;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 431.6pt;" valign="top" width="575"&gt;&lt;div class="MsoNormal"&gt;A rogue administrator can copy your keys&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 1.25in;" valign="top" width="120"&gt;&lt;div class="MsoNormal"&gt;No&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 85.5pt;" valign="top" width="114"&gt;&lt;div class="MsoNormal"&gt;Yes&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 4;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 431.6pt;" valign="top" width="575"&gt;&lt;div class="MsoNormal"&gt;Use adds considerable extra expense&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 1.25in;" valign="top" width="120"&gt;&lt;div class="MsoNormal"&gt;Yes&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 85.5pt;" valign="top" width="114"&gt;&lt;div class="MsoNormal"&gt;No&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 5;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 431.6pt;" valign="top" width="575"&gt;&lt;div class="MsoNormal"&gt;Use adds considerable complexity&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 1.25in;" valign="top" width="120"&gt;&lt;div class="MsoNormal"&gt;Yes&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 85.5pt;" valign="top" width="114"&gt;&lt;div class="MsoNormal"&gt;No&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 6; mso-yfti-lastrow: yes;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 431.6pt;" valign="top" width="575"&gt;&lt;div class="MsoNormal"&gt;Someone with root level access to your app server can see   data before it is encrypted&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 1.25in;" valign="top" width="120"&gt;&lt;div class="MsoNormal"&gt;Yes&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 85.5pt;" valign="top" width="114"&gt;&lt;div class="MsoNormal"&gt;Yes&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="MsoNormal"&gt;*Properly configured, the keys are unusable even if the HSM is stolen.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;While there are hundreds of specific threats and attack vectors against your data processing systems, it is important to align your controls to specific threats.  In the case of using hardware encryption modules, there are four basics threats that might make us consider the use of an HSM over software based keys.&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt; &lt;/span&gt;The rogue administrator.&lt;/li&gt;
&lt;li&gt;Attackers with physical access to servers.&lt;/li&gt;
&lt;li&gt;Attackers who have root access on servers.&lt;/li&gt;
&lt;/ol&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;While there may be some other benefits offered by an HSM, they are ancillary and redundant to other controls that should be in place.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;We need to understand a couple of basic HSM concepts before we can see what they do for us.&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l3 level1 lfo3; text-indent: -.25in;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt; &lt;/span&gt;&lt;/span&gt;The Security World – This is a logical concept that can span more than one HSM.  It is a group of HSMs that all share a common master key.  Members of a security world can share application keys from other members in the world.  Keys can be copied to security world members without possibility of comprise.&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt; &lt;/span&gt;&lt;/span&gt;Smart Cards – The security world is run by and protected with smart cards.  These cards are actually small computers that that can create keys, store them and perform operations using them.  The cards can be protected with a PIN for additional security.   The cards are designed to make it very difficult to copy a card in a short time and without destroying it.&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt; &lt;/span&gt;&lt;/span&gt;k of n card sets – Many operations on an HSM require a high level of assurance, so the HSM can be setup to require more than one smartcard be used to perform an operation.  The card set is sized and distributed so that it is unlikely that cardholders will be able to collaborate on subversive actions.  The number of cards required to perform actions is called a quorum.  A large n ensures that if cards are lost or destroyed enough can still be found to maintain uptime.  k of n is based on &lt;a href="http://en.wikipedia.org/wiki/Shamir's_Secret_Sharing"&gt;Shamir’s Secret Sharing&lt;/a&gt; algorithm.&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt; &lt;/span&gt;&lt;/span&gt;Administrator Card Set - The ACS cards run the security world, in conjunction with the HSM.  ACS cards are used to backup and restore the security world.  This includes adding new HSMs to the security world.  The key that decrypts the backup file for disaster recovery and adding devices to the security world is base on the ACS and protected with the secret sharing algorithm.&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt; &lt;/span&gt;&lt;/span&gt;Operator Cards – The OCS cards are used to access application keys.  These are the keys that actually encrypt and decrypt the data.  The OCS k of n can be different from the ACS k of n.&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt; &lt;/span&gt;&lt;/span&gt;HSM Soft keys – The HSM soft keys these are application keys that can be used with no action from an OCS card set.  All you need to do is boot the server holding the HSM, or the netHSM.  If an attacker takes the HSM, they have unrestricted use of the key.  They can’t export the key, but they can use the key at will to decrypt any stolen encrypted data.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;When properly configured, the HSM keeps and attacker with privileged access or a rogue administrator from taking a copy of your encrypted data and copy of your key and decrypting your data at their leisure.  The best the attacker can do is to grab data before it is encrypted or send encrypted data to the HSM for decryption.  When looked at in conjunction with proper audit logs and some sort of IDS or IPS solution, this should significantly limit the time that the attacker has access to gather plaintext data.  &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;If an attacker manages to steal an HSM they cannot copy your security worlds as they lack the ACS quorum.  They cannot use OCS protected keys without the OCS quorum.  HOWEVER, anything protected by HSM soft keys can be decrypted by simply putting the stolen HSM online in a new system. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The bottom line is this:&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l2 level1 lfo4; text-indent: -.25in;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt; &lt;/span&gt;&lt;/span&gt;If you use an HSM with HSM Soft keys, you probably are wasting your money as you are not reducing risk when attackers have physical access.  You can get the same logical access value with keys stored in the file system of the appropriate application tier.&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt; &lt;/span&gt;&lt;/span&gt;If the attacker has root access at the right tier in your application, at a minimum, they can copy off the data before it is encrypted and worse case, they can call APIs to decrypt data at will.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;HSMs are awesome, but don’t assume just they will solve your problems.  In my experience, the biggest holes are created by the applications and APIs that rely on the HSMs.   &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/FfcItNjTGro" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/3877900257741773981/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=3877900257741773981" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/3877900257741773981?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/3877900257741773981?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/FfcItNjTGro/why-we-use-hardware-security-modules.html" title="Why We Use Hardware Security Modules" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2011/05/why-we-use-hardware-security-modules.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAEQns7cCp7ImA9WhZXF08.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-7641065071110370109</id><published>2011-05-05T23:25:00.000-07:00</published><updated>2011-05-06T16:31:43.508-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-06T16:31:43.508-07:00</app:edited><title>The Next Big Thing in Information Security</title><content type="html">&lt;p class="MsoNormal"&gt;Many of us in the industry are bothered by the use of security vendors selling based on Fear, Uncertainty, and Doubt (&lt;a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"&gt;FUD&lt;/a&gt;).&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;FUD gets in the way of rational thought and often has a negative impact on proper prioritization and budgeting.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;Specific vulnerabilities may change, but the basics have not; Threats can come from the host, application, or network.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The latest “new” scary thing to fear is the &lt;a href="http://en.wikipedia.org/wiki/Advanced_Persistent_Threat"&gt;Advanced Persistent Threat&lt;/a&gt;.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This is terrifying!!!&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;What is this new threat?&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The threat is just that virus and malware authors are getting better at their jobs.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Now that there is a market for cyber-crime, hostage-ware and the like, the bad guys are getting more advanced.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The free market is at work and the money attracts talent.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;All the APT does is makes itself really hard to remove.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The bad guys are just finding more ways and have better logic behind their execution.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;In windows for example, they are placing the their code in many location, in multiple forms, running in multiple processes that reinforce each other, and that startup in many locations and for many reasons. &lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;Their code starts early and when you kill one of their processes, another re-instantiates it. &lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;They bad guys are just getting more thorough.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Now that the security marketing guys have invented this new scary threat, there is only one solution, my solution.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;We need to map a very specific control to a specific threat or vulnerability.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;There is only one control that can meet this threat head on; the “Advanced Persistent Control” or the “Advanced Persistent Control Suite”.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;These are really enterprise solutions. To address the consumer space; we need a product with “Advanced Persistent Protection”.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;No other compensating control maps so perfectly to the threat.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I have Googled, Binged, Yahooed, Patent and Trademark searched the heck out of these things* and get no hits, so I am in the process of filing the appropriate trademark, service mark, provisional patents and copyright paperwork to protect these names and technologies.&lt;span style="mso-spacerun:yes"&gt;  Boy do I love how the patent office allows such insanely broad patents.  &lt;/span&gt;I own these names, but will be willing to license them to security vendors if their products and bids qualify.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;That’s right, Symantec, McAfee, Kaspersky, or an up and comer, line up and start bidding.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;For the right price, I will sell my rights completely; otherwise I may just license limited use of the names.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;I must warn you, don’t think you can just take these names.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;They are not in common use and they are mine.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Like &lt;a href="http://en.wikipedia.org/wiki/Michael_Buffer"&gt;Michael &lt;/a&gt;“&lt;a href="http://www.kvia.com/news/24478415/detail.html"&gt;Let’s Get Ready to Rumble&lt;/a&gt;” &lt;a href="http://abcnews.go.com/GMA/Weekend/lets-ready-rumble-meet-man-catchphrase/story?id=9022704"&gt;Buffer&lt;/a&gt;, I plan to carefully and jealously guard my property.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Consumers beware, if you do not have Advance Persistent Protection, you are asking to be a victim of cyber-crime.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Corporations, without an Advanced Persistent Control Suite, you are not taking due diligence to protect your customers’ data and intellectual property.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;I smell grounds for gross negligence.  Don't be a victim, like &lt;a href="http://www.rsa.com/node.aspx?id=3872"&gt;RSA&lt;/a&gt;.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Bidders, you can contact me at &lt;a href="mailto:mark.gamache@gmail.com"&gt;mark.gamache@gmail.com&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;*Ok, there was on unrelated hit on one of the terms.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;One!&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/pxDLOJdv8eI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/7641065071110370109/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=7641065071110370109" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/7641065071110370109?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/7641065071110370109?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/pxDLOJdv8eI/next-big-thing-in-information-security.html" title="The Next Big Thing in Information Security" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2011/05/next-big-thing-in-information-security.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8HRnc-eyp7ImA9Wx9aFk4.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-6760621406145208844</id><published>2011-03-07T22:33:00.001-08:00</published><updated>2011-03-08T17:07:17.953-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-08T17:07:17.953-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IT Culture" /><category scheme="http://www.blogger.com/atom/ns#" term="IT Staffing" /><title>The IT Revolution is Coming Soon, I Hope</title><content type="html">I've been very concerned about the IT staffing for some time.  Anyone who's been in the industry for more than 5 years should be too; if not, you may not be paying attention.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem is, this that there are WAY too many people in IT jobs, who aren't qualified to hold the job.  These people range from bumbling, but harmless,  mopes who just don't seem to get it, to those who seem to get everything wrong and cost their employers thousands or even millions of dollars.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This problem is hard to quantify and even harder to combat.  Here's why...&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;There is strong demand for qualified IT staff and the jobs pay very well.  There will always be people who are willing to lie or stretch the truth and hope they don't get caught, or they "catch on".&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect"&gt;The Dunning-Kruger Effect&lt;/a&gt;.  Dumb people don't know they are dumb, so their resume is likely to sound good, as it is a reflection of their perception of their skills.&lt;/li&gt;&lt;li&gt;IT recruiters usually just look for keywords on resumes and match a few phrases given to them by hiring managers. &lt;/li&gt;&lt;li&gt;Hiring Managers are managers...  They often aren't qualified to evaluate competency, they just know if a candidate uses acronyms and terminology in the right context.&lt;/li&gt;&lt;li&gt;Except for a few IT Operations jobs, there is almost no accountability for poor performance and poor decision making.   No one assigns blame to an architect or developer when something fails three or six months later.&lt;/li&gt;&lt;li&gt;It's not "nice" to call someone dumb and apparently "not qualified" is a bit too close to dumb for some people.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoworld.com/t/it-training/it-graduates-not-well-trained-ready-go-767"&gt;Poor IT training abounds&lt;/a&gt;.  Universities are poorly equipped to keep up with the pace of new technologies, and IT training chains specialize in selling dreams to hopeless career changers.  Yes, I generalize here and expect abuse... but I am right.  ;-)&lt;/li&gt;&lt;li&gt;Those damn &lt;a href="http://www.careercast.com/jobs-rated/10-best-jobs-2011"&gt;10 Best Jobs&lt;/a&gt;/Careers articles.  Magazines, and our parents have been telling us to get in to IT since the early 90's.  The money entices people who don't have the natural curiosity and other skills, to excel in IT.   Seriously, take the bad advice from your high school career councilor and find a way to do what you love, or at least something that keeps you out of my way.&lt;/li&gt;&lt;li&gt;The myth of the 10 (12, 15, whatever) year old IT whiz.  Just because your kid, sisters kid, neighbor's kid, can install windows or use Facebook and Twitter does not mean he/she is a prodigy.  If a kid likes to "play doctor", it doesn't mean he/she is ready for a career in medicine. &lt;/li&gt;&lt;li&gt;There is too much focus on how to operate applications/systems, rather than fundamentals of operations.   &lt;/li&gt;&lt;li&gt;IT moves fast.  Training budgets, when they exist, are rarely able to keep up with the next big thing.&lt;/li&gt;&lt;li&gt;Time.  Who the hell has time to train????&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The good news is there are signs that some employers are starting catch on. &lt;a href="http://www.infoworld.com/t/it-jobs/poaching-it-employees-the-rise-458?source=footer"&gt;This article from InfoWorld&lt;/a&gt; indicates that IT shops are working harder to retain skilled staff and other IT shops are looking to pick off real talent. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the mean time, here are a few thoughts on what the industry needs to do, to save itself from the under-qualified people it's already hired or about to hire.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Start making people accountable.  Create or adopt existing &lt;a href="http://en.wikipedia.org/wiki/PDCA"&gt;PDCA &lt;/a&gt;(Demming) feedback systems.  Don't just look to improve your systems when you get to the check phase, also track who did what and and make corrections to staffing as needed.&lt;/li&gt;&lt;li&gt;Create career paths for performers.  Find ways to identify staff who have the capability to do better work or whose talent is being wasted.&lt;/li&gt;&lt;li&gt;Stop caring about degrees.  At least half of the truly talented folks I know in IT don't have degrees, and those that do, don't have them in CS or anything related to IT.  Four years in college is a long time to side track an IT career.  :-P&lt;/li&gt;&lt;li&gt;Start firing the worst performers!  This may feel harsh, but it helps the industry as a whole.  These pole should NOT be in IT.  If you manage them out, re-org them out, lay them off, etc, they can easily spin the departure to a new employer.  If you've fired them, when the prospective employer calls and learns they are "not eligible for re-hire", they will understand the code.&lt;/li&gt;&lt;li&gt;Pay even more to top performers, but tie it to real performance.  Don't just give it to the guy in the seat...&lt;/li&gt;&lt;li&gt;Make time and find budget to train those who can absorb and use the new skills. &lt;/li&gt;&lt;li&gt;Find ways to figure out who the skilled folks are treat them like kings!  &lt;/li&gt;&lt;li&gt;Employers, remember, the only leverage you have here is benefits; be it cash, flex time, free cars...  When it comes to supply and demand, there is a tiny supply of skilled IT folks and a serious demand.  Don't make the mistake of thinking you can replace someone. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;IT folks, well the smart ones...  Here's what you should be doing to enhance your awesome:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Keep your resume, especially skills, up to date and online in &lt;a href="http://www.monster.com/"&gt;Monster&lt;/a&gt;, or your favorite jobs site.&lt;/li&gt;&lt;li&gt;Update your &lt;a href="http://www.linkedin.com/"&gt;LinkedIn&lt;/a&gt;, and connect with other smart people. &lt;/li&gt;&lt;li&gt;Do not endorse people on LinkedIn  you would not hire.  It may be "nice" to give someone a glowing recommendation, and they may give you one back, but if they aren't actually skilled, it may reflect poorly on you.&lt;/li&gt;&lt;li&gt;Even if you are happy in your, actively look for the "right" job and keep your mind open.  Going on interviews is good practice, even if you aren't interested in the job.  &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The End.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/RAXX0JZ_9YM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/6760621406145208844/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=6760621406145208844" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/6760621406145208844?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/6760621406145208844?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/RAXX0JZ_9YM/it-revolution-is-coming-soon-i-hope.html" title="The IT Revolution is Coming Soon, I Hope" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2011/03/it-revolution-is-coming-soon-i-hope.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08GSXo8eyp7ImA9Wx9SF0k.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-95325805191368816</id><published>2010-12-06T22:56:00.000-08:00</published><updated>2010-12-07T11:23:48.473-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-07T11:23:48.473-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="F5" /><category scheme="http://www.blogger.com/atom/ns#" term="LDAP" /><category scheme="http://www.blogger.com/atom/ns#" term="Load balance" /><category scheme="http://www.blogger.com/atom/ns#" term="HTTP" /><category scheme="http://www.blogger.com/atom/ns#" term="TCP/IP" /><category scheme="http://www.blogger.com/atom/ns#" term="BigIP" /><title>Tuning F5 Big-IP Performance to Ruin Your Performance</title><content type="html">&lt;p class="MsoNormal"&gt;Or Configuring the F5 BigIP to shoot you in the foot.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Ever have bizarre connection problems when a client hits a Big-IP, but not when it hits the pool members directly?&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Is it happening to you right now and you don’t even know it?&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;If your application is not stateless, this post may help you a lot.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;If nothing else, it covers some fundamentals that we've all let rust.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Also, just because you aren't seeing the problem doesn't mean it is not there…&lt;/p&gt;  &lt;p class="MsoNormal"&gt;For years, we have seen a few LDAP connection problems that could not be explained, but the volume was so low that no one was willing to take the time to work with us to find out what was going on.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;With the addition of some new high volume systems, the problem has become more frequent and had greater impact, probably due to poor LDAP exception handling.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Our service is an LDAP with approximately 20,000,000 million objects in it, each with around 28 attributes.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;We service 17 to 20 million LDAP requests a day.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This an average of 231 LDAP request per second, if you do the math, but as most hours are slow, our peak is closer to 600 per second. This service is actually 3 LDAP servers fronted by a single Big-IP HA pair.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;img src="http://4.bp.blogspot.com/_zbKsdv3LNOY/TP3daFT8t5I/AAAAAAAAAzk/SiMnEEmQTgA/s400/LDAPandF5.gif" style="cursor:pointer; cursor:hand;width: 251px; height: 400px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5547833756162504594" /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Before we dig in, the F5 Big-IP or Local Traffic Manager (LTM) is a modern marvel.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The people who build these things and make the “magic” they do are amazing.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;They can solve some really complex availability and scaling challenges.&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;Like most marvels, when applied wrong, they may not help, or even do harm.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Try taking 20,000 grams of Amoxicillin for a headache. :-P&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The Big-IP was originally created to load balance traffic to web sites that take very high volumes of traffic.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;If you have gotten this far, you probably already know that the Big-IP is optimized to spread the traffic to a pool of servers so that they all get a portion of the traffic.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The tricky part is that there are hundreds of levers, knobs and switches, most of which default to the most common use case, &lt;a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"&gt;HTTP &lt;/a&gt;traffic.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;While HTTP uses &lt;a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol"&gt;TCP &lt;/a&gt;as its transport, HTTP IS STATELESS.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;HTTP does not care if you have already opened a TCP socket or not.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;It doesn’t care if the socket the browser uses is dead.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;That is, your web browser is coded to deal with every possible TCP use case fast and efficiently.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;On the other hand, some Application Layer Protocols, such as &lt;a href="http://en.wikipedia.org/wiki/Ldap"&gt;LDAP&lt;/a&gt;, are stateful and use the connection oriented nature of&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;TCP to maintain state.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This is at the heart of the problems I saw last week (and ongoing for years…).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;LDAP, in the most common use case, requires a client connection to bind to the server using a username and password.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The entire session is authenticated in that user’s context and all reads and writes are filtered through an access control list in the directory.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Just a reminded, an LDAP server is a TCP listener that translates the LDAP protocol to an &lt;a href="http://en.wikipedia.org/wiki/X.500"&gt;x.500&lt;/a&gt; directory.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;An LDAP server is not a directory in and of itself, it is just a port and a set of communications rules optimized for access to an x.500 directory.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Here is a typical LDAP session with 192.168.0.15 as the server:&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;      &lt;/span&gt;&lt;b&gt;1&lt;/b&gt; 14:48:40.484934 192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;12403 &gt; ldap [SYN] Seq=4167455526 Win=65535 Len=0 MSS=1260&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;      &lt;/span&gt;&lt;b&gt;2&lt;/b&gt; 14:48:40.523621 192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 12403 [SYN, ACK] Seq=4126863585 Ack=4167455527 Win=3780 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;      &lt;/span&gt;&lt;b&gt;3&lt;/b&gt; 14:48:40.523683 192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;12403 &gt; ldap [ACK] Seq=4167455527 Ack=4126863586 Win=65535 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;      &lt;/span&gt;&lt;b&gt;4&lt;/b&gt; 14:48:40.603744 192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindRequest(1) "mgamach@testldap.org" simple &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;      &lt;/span&gt;&lt;b&gt;5&lt;/b&gt; 14:48:40.642792 192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindResponse(1) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;      &lt;/span&gt;&lt;b&gt;6&lt;/b&gt; 14:48:40.649008 192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchRequest(2) "DC=testldap,DC=org" baseObject&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;      &lt;/span&gt;&lt;b&gt;7&lt;/b&gt; 14:48:40.675407 192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchResEntry(2) "DC=testldap,DC=org"&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;| searchResDone(2) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;      &lt;/span&gt;&lt;b&gt;8&lt;/b&gt; 14:49:12.076343 192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;unbindRequest(8) &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;      &lt;/span&gt;&lt;b&gt;9&lt;/b&gt; 14:49:12.076718 192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;12403 &gt; ldap [FIN, ACK] Seq=4167456246 Ack=4127490647 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;     &lt;/span&gt;&lt;b&gt;10&lt;/b&gt; 14:49:12.100687 192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 12403 [FIN, ACK] Seq=4127490647 Ack=4167456246 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;     &lt;/span&gt;&lt;b&gt;11 &lt;/b&gt;14:49:12.100768 192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;12403 &gt; ldap [ACK] Seq=4167456247 Ack=4127490648 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span&gt;     &lt;/span&gt;&lt;b&gt;12 &lt;/b&gt;14:49:12.105203 192.168.0.15&lt;span style="mso-spacerun:yes"&gt;         &lt;/span&gt;192.168.0.20&lt;span style="mso-spacerun:yes"&gt;          &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 12403 [FIN, ACK] Seq=4127490647 Ack=4167456247 Len=0&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:9.0pt;mso-bidi-font-size:11.0pt; line-height:115%"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The things worth noting are that A) the bind can’t occur&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;until after the TCP 3-way handshake, B) when the client sends the unbind the server responds with a FIN, starting the TCP session tear-down, and C) this is one TCP session for the whole LDAP session.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;An LDAP client can run multiple LDAP session at once, in which case, each would have its own ephemeral port.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;While some LDAP server and client code can perform multiple asynchronous calls inside one TCP session, it is not very common and often not done well, but he client code developers. &lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;By far, the most common method is to treat each LDAP session as a synchronous session, request, then reply then request, then reply and so on until the unbind.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If the TCP session fails for any reason, the LDAP session is gone, there is no way to revive it or reconnect to it.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Hopefully the client app and underlying systems are written well enough to deal with a failure and retry in a well considered manner.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This is often not the case; consider the &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6870947"&gt;Java bug&lt;/a&gt; that does not inform the LDAP stack of a TCP reset for 15 seconds.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;That is one very painful timeout if a customer is waiting.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Back to the problem that we were seeing… At an application level our internal customers were seeing various connection errors in their logs.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Different OSs and JVM versions seemed to throw slightly different errors, adding a bit to the confusion.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;It took quite some time to get the data we needed to diagnose the issue.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;We needed a packet capture on both sides of the BigIP as well as time stamped failure logs and IPs from the apps.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;With such high volume traffic, trying to find an error without somewhere to start is like trying to find one special needle in a needle stack, while wearing someone else’s bifocals.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Having the data in hand and using several WireShark tricks that I will blog on later, I found the root cause.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The Big-IP config we were given was not vetted for awesome.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;We assumed that the networking team that creates the VIP and configures the pool analyzed our app and set up a config to optimize our performance.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;In fact, the config seemed a bit random.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;We had already visited the config once as the F5 was introducing a 13x delay in response times.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This turned out to be a TCP Profile setting that was set to WAN optimized.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The settings in question optimized for bandwidth savings, over speed.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Ooops!&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The culprit that we also fixed, prior to this, was that the TPC Idle timeout on the F5 did not match that of our LDAP servers.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The F5 was set to close idle threads after 5 minutes, while the LDAP servers allow 2 hours.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Finally, there isn’t just one TCP profile; there is one server (S-NAT) side and one client (VIP) side.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Ours had different idle timeouts, leaving the F5 stuck between two parties who expected the session to be held open for different amounts of time.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;With those finds and fixes in place, we still see about a .5% failure rates, which is totally unacceptable with such a high volume service.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;That is still an average or more that once per second.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Here’s the last bit of fundamentals needed to understand why we were still seeing failures.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;There was only one IP in our F5 S-NAT pool, this means that it could, theoretically, have 65536 simulations connections to our pool members.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;However, the default setting for the use of those ports does not force the use of them all.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The F5 setting &lt;b&gt;&lt;a href="http://support.f5.com/kb/en-us/solutions/public/5000/000/sol5089a.html"&gt;TM.PreserveClientPort&lt;/a&gt;&lt;/b&gt;, by default has the S-NAT IP use the same ephemeral port as the upstream side of the conversation; meaning the client to VIP.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The laws of TCP/IP say that the S-NAT IP can only make one connection on one port.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This means if two of our clients make calls using the same ephemeral port, at the same time, the one with the established connection stays live and the other gets a nice TCP reset in its Christmas stocking.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This is a bit more confusing for the app because the F5 accepts the VIP side TCP handshake while it is still getting ready to try the S-NAT side connection.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Only then does it realize that the port is taken and it can’t connect.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Once that happens, the F5 sends and unexpected TCP reset to the client when it is expecting to be able to do an LDAP bind.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;img src="http://1.bp.blogspot.com/_zbKsdv3LNOY/TP3hazYSbwI/AAAAAAAAAzs/Gz3TGjmZdwU/s400/LDAPandF5B.gif" style="cursor:pointer; cursor:hand;width: 235px; height: 400px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5547838166575247106" /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;At this point, you are thinking, “but Mark, what are the odds of two of your clients using the same ephemeral port at the same time?  They must be crazy low”.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Well, there’s more.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Different OSs limit the number of possible ephemeral ports that can be used.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;BSD for instance used to only use 1024 to 3976.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;In our case most of our clients are on Solaris 10, which allows anything above 32768. &lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;We have around 20 clients that pseudo-randomly pick a port between 32768 and 65536.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This is actually a probability problem exactly like the &lt;a href="http://en.wikipedia.org/wiki/Birthday_problem"&gt;Birthday Problem&lt;/a&gt;.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;We just have 20 people (servers) with 32768 days (ports) to choose from instead of 365.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;We are looking to know what the probability is of any 2 of the servers using the same port.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;I will ignore the complexity of adding time as a factor.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;That is, some clients may hold a port open for longer than others, depending on the operations being performed. If we just assume that all the machines connect once using a random port, then our odds come up as .6% which is right next to our observed impact.&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;As we will see in a minute, this number may or may not make sense.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;It is really just to make the point that it is a lot more likely to have a collision, than might seem intuitive.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;While there are still a couple more factors to look at, let’s look at a failure in action. &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;1 0.000000&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [SYN] Seq=2258030186 Win=32768 Len=0 MSS=1460 WS=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;2 0.000005&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [SYN, ACK] Seq=2422958290 Ack=2258030187 Win=4380 Len=0 MSS=1460 WS=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;3 0.042001&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindRequest(1) "uid=appBindAcct,ou=applications,c=us,dc=testLDAP,dc=com" simple &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;4 0.042010&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [SYN] Seq=4287903691 Win=4380 Len=0 MSS=1460 WS=0 &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;5 0.042013&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=2422958291 Ack=2258030284 Win=4477 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;6 0.042734&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [SYN, ACK] Seq=1298286822 Ack=4287903692 Win=49640 Len=0 MSS=1460 WS=0 &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;7 0.042738&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=4287903692 Ack=1298286823 Win=4380 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;8 0.042741&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindRequest(1) "uid=appBindAcct,ou=applications,c=us,dc=testLDAP,dc=com" simple &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;9 0.043455&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [ACK] Seq=1298286823 Ack=4287903789 Win=49543 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;10 0.043699&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindResponse(1) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;11 0.043703&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindResponse(1) success&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;12 0.043706&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=4287903789 Ack=1298286837 Win=4394 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;13 0.088130&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchRequest(2) "mobile=2065551234,ou=subscribers,c=us,dc=testLDAP,dc=com" baseObject &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;14 0.088135&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchRequest(2) "mobile=2065551234,ou=subscribers,c=us,dc=testLDAP,dc=com" baseObject &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;15 0.088138&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=2422958305 Ack=2258030416 Win=4609 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;16 0.088866&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [ACK] Seq=1298286837 Ack=4287903921 Win=49640 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;17 0.089591&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchResEntry(2) "mobile=2065551234,ou=subscribers,c=us,dc=testLDAP,dc=com" &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;18 0.089595&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchResEntry(2) "mobile=2065551234,ou=subscribers,c=us,dc=testLDAP,dc=com" &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;19 0.089598&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=4287903921 Ack=1298286926 Win=4483 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;20 0.089600&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchResDone(2) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;21 0.089602&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchResDone(2) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;22 0.089605&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=4287903921 Ack=1298286940 Win=4497 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;23 0.130614&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [ACK] Seq=2258030416 Ack=2422958408 Win=32768 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;24 0.130861&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;unbindRequest(3) &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;25 0.130865&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;unbindRequest(3) &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;26 0.130867&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=2422958408 Ack=2258030452 Win=4645 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;27 0.131347&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [FIN, ACK] Seq=2258030452 Ack=2422958408 Win=32768 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;28 0.131351&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=2422958408 Ack=2258030453 Win=4645 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;29 0.131354&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [FIN, ACK] Seq=4287903957 Ack=1298286940 Win=4497 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;30 0.131356&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [FIN, ACK] Seq=1298286940 Ack=4287903957 Win=49640 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;31 0.131359&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [FIN, ACK] Seq=4287903957 Ack=1298286941 Win=4497 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;32 0.131362&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [FIN, ACK] Seq=2422958408 Ack=2258030453 Win=4645 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;33 0.132083&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;ovsessionmgr &gt; 61325 [ACK] Seq=1298286941 Ack=4287903958 Win=49640 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;34 0.132088&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;10.99.26.25&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;[TCP Dup ACK 33#1] ovsessionmgr &gt; 61325 [ACK] Seq=1298286941 Ack=4287903958 Win=49640 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;35 0.172359&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;192.168.113.59&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [ACK] Seq=2258030453 Ack=2422958409 Win=32768 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;36 56.717368&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [SYN] Seq=3620104483 Win=32768 Len=0 MSS=1460 WS=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;37 56.717374&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [SYN, ACK] Seq=3332499193 Ack=3620104484 Win=4380 Len=0 MSS=1460 WS=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;38 56.758628&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindRequest(1) "uid=appBindAcct,ou=applications,c=us,dc=testLDAP,dc=com" simple &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;39 56.758638&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [SYN] Seq=258910960 Win=4380 Len=0 MSS=1460 WS=0 &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;40 56.758640&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=3332499194 Ack=3620104581 Win=4477 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;41 56.759124&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [SYN, ACK] Seq=3696686467 Ack=258910961 Win=49640 Len=0 MSS=1460 WS=0 &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;42 56.759128&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=258910961 Ack=3696686468 Win=4380 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;43 56.759131&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindRequest(1) "uid=appBindAcct,ou=applications,c=us,dc=testLDAP,dc=com" simple &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;44 56.759605&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [ACK] Seq=3696686468 Ack=258911058 Win=49543 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;45 56.760583&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindResponse(1) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;46 56.760588&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;bindResponse(1) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;47 56.760591&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=258911058 Ack=3696686482 Win=4394 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;48 56.802823&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;modifyRequest(2) "mobile=4255552345,ou=subscribers,c=us,dc=testLDAP,dc=com" &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;49 56.802830&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;modifyRequest(2) "mobile=4255552345,ou=subscribers,c=us,dc=testLDAP,dc=com" &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;50 56.802833&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP &lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=3332499208 Ack=3620104727 Win=4623 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;51 56.803309&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [ACK] Seq=3696686482 Ack=258911204 Win=49640 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;52 56.814303&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;modifyResponse(2) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;53 56.814309&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;modifyResponse(2) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;54 56.814312&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=258911204 Ack=3696686496 Win=4408 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;55 56.856552&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;unbindRequest(3) &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;56 56.856557&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;unbindRequest(3) &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;57 56.856560&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP &lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=3332499222 Ack=3620104763 Win=4659 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;58 56.857061&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [FIN, ACK] Seq=3696686496 Ack=258911240 Win=49640 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;59 56.857066&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=258911240 Ack=3696686497 Win=4408 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;60 56.857068&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [FIN, ACK] Seq=3332499222 Ack=3620104763 Win=4659 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;61 56.857269&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [FIN, ACK] Seq=3620104763 Ack=3332499222 Win=32768 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;62 56.898034&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [ACK] Seq=3620104764 Ack=3332499223 Win=32768 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;63 57.381196&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [FIN, ACK] Seq=3620104763 Ack=3332499223 Win=32768 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;64 57.381200&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.58&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=3332499223 Ack=3620104764 Win=4659 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;65 57.381204&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [FIN, ACK] Seq=258911240 Ack=3696686497 Win=4408 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;66 57.381931&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [ACK] Seq=3696686497 Ack=258911241 Win=49640 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;67 70.622841&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.38&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [SYN] Seq=2324271576 Win=32768 Len=0 MSS=1460 WS=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;68 70.622846&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.38&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [SYN, ACK] Seq=151461930 Ack=2324271577 Win=4380 Len=0 MSS=1460 WS=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;69 70.664112&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.38&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindRequest(1) "uid=appBindAcct,ou=applications,c=us,dc=testLDAP,dc=com" simple &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;70 70.664121&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;[TCP Port numbers reused] 61325 &gt; ovsessionmgr [SYN] Seq=273484448 Win=4380 Len=0 MSS=1460 WS=0 &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;71 70.664124&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.38&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=151461931 Ack=2324271674 Win=4477 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;72 71.664114&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [SYN] Seq=273484448 Win=4380 Len=0 MSS=1460 WS=0 &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;73 72.864329&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [SYN] Seq=273484448 Win=4380 Len=0 MSS=1460 WS=0 &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;74 74.063807&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.22&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [SYN] Seq=273484448 Win=4380 Len=0 MSS=1460 &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;75 75.264023&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.38&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [RST, ACK] Seq=151461931 Ack=2324271674 Win=4477 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;76 95.794344&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [SYN] Seq=136650233 Win=32768 Len=0 MSS=1460 WS=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;77 95.794349&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [SYN, ACK] Seq=3257078415 Ack=136650234 Win=4380 Len=0 MSS=1460 WS=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;78 95.835606&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindRequest(1) "uid=appBindAcct,ou=applications,c=us,dc=testLDAP,dc=com" simple &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;79 95.835616&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [SYN] Seq=3796674135 Win=4380 Len=0 MSS=1460 WS=0 &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;80 95.835619&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=3257078416 Ack=136650331 Win=4477 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;81 95.836114&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [SYN, ACK] Seq=3190364148 Ack=3796674136 Win=49640 Len=0 MSS=1460 WS=0 &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;82 95.836118&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=3796674136 Ack=3190364149 Win=4380 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;83 95.836121&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindRequest(1) "uid=appBindAcct,ou=applications,c=us,dc=testLDAP,dc=com" simple &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;84 95.836578&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [ACK] Seq=3190364149 Ack=3796674233 Win=49543 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;85 95.837317&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindResponse(1) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;86 95.837320&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;bindResponse(1) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;87 95.837323&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=3796674233 Ack=3190364163 Win=4394 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;88 95.879556&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchRequest(2) "mobile=3605551234,ou=subscribers,c=us,dc=testLDAP,dc=com" baseObject &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;89 95.879562&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchRequest(2) "mobile=3605551234,ou=subscribers,c=us,dc=testLDAP,dc=com" baseObject &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;90 95.879565&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=3257078430 Ack=136650861 Win=5007 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;91 95.880280&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [ACK] Seq=3190364163 Ack=3796674763 Win=49640 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;92 95.881746&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchResEntry(2) "mobile=3605551234,ou=subscribers,c=us,dc=testLDAP,dc=com" &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;93 95.881751&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchResEntry(2) "mobile=3605551234,ou=subscribers,c=us,dc=testLDAP,dc=com" &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;94 95.881754&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=3796674763 Ack=3190364902 Win=5133 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;95 95.881756&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchResDone(2) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;96 95.881758&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;searchResDone(2) success &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;97 95.881761&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [ACK] Seq=3796674763 Ack=3190364916 Win=5147 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;98 95.922763&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [ACK] Seq=136650861 Ack=3257079183 Win=32768 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;99 95.923035&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;unbindRequest(3) &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;100 95.923038&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;LDAP&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;unbindRequest(3) &lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;101 95.923040&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=3257079183 Ack=136650897 Win=5043 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;102 95.923504&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [FIN, ACK] Seq=136650897 Ack=3257079183 Win=32768 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;103 95.923507&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [ACK] Seq=3257079183 Ack=136650898 Win=5043 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;104 95.923509&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [FIN, ACK] Seq=3796674799 Ack=3190364916 Win=5147 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;105 95.923511&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20 &lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [FIN, ACK] Seq=3190364916 Ack=3796674799 Win=49640 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;106 95.923515&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ovsessionmgr [FIN, ACK] Seq=3796674799 Ack=3190364917 Win=5147 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;107 95.923517&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;       &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ldap &gt; 61325 [FIN, ACK] Seq=3257079183 Ack=136650898 Win=5043 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;108 95.924223&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;ovsessionmgr &gt; 61325 [ACK] Seq=3190364917 Ack=3796674800 Win=49640 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;109 95.924228&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;10.99.26.28&lt;span style="mso-spacerun:yes"&gt;        &lt;/span&gt;10.99.248.20&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;[TCP Dup ACK 108#1] ovsessionmgr &gt; 61325 [ACK] Seq=3190364917 Ack=3796674800 Win=49640 Len=0&lt;/p&gt;  &lt;p class="Code"&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;110 95.964510&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;192.168.113.37&lt;span style="mso-spacerun:yes"&gt;     &lt;/span&gt;192.168.0.10&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;TCP&lt;span style="mso-spacerun:yes"&gt;      &lt;/span&gt;61325 &gt; ldap [ACK] Seq=136650898 Ack=3257079184 Win=32768 Len=0&lt;/p&gt;  &lt;p class="MsoNormal"&gt;First off, all of this traffic is from ephemeral port 61325, whether it is from the client or the S-NAT side of the F5.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;All the traffic to and from the ldap port is on the VIP side of the F5.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;All of the traffic to and from the ovsessionmgr port is on the S-NAT side of the F5, to the LDAP servers.&lt;/p&gt;  &lt;p class="ListMG"&gt;LDAP VIP:&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;192.168.0.10&lt;/p&gt;  &lt;p class="ListMG"&gt;S-NAT IP:&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;10.99.248.20&lt;/p&gt;  &lt;p class="ListMG"&gt;LDAP Servers:&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;10.99.26.22, 10.99.26.25, 10.99.26.28&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The rest of the IPs are clients.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;First off, this capture only lasts 95 seconds, yet we see 4 different clients use the same ephemeral port in that short time. &lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;This 13 KB capture is, of course, massively filtered.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The actual 95 second window is about 250 MB.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;During this time, there is only one TCP reset sent (Frame 75), so we will analyze what happens there first, then go back to why there aren’t more failures.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In frames 55 and 56, we see a client send an unbind to the F5 and the F5 sends the unbind to the LDAP server.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This starts the end of the two TCP sessions.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;58 to 66 are the proper tear downs of the TCP sessions on both sides of the F5. This means that Client, F5 VIP side, F5 S-NAT side and server all agree the TCP sessions are over.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;67 is a different client staring a new TCP handshake with the VIP.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;It is using the same ephemeral port, 61325.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;As TCP Segments can arrive out of order, we can see that 68 and 71 complete the TCP handshake, then the client attempts to bind in 69.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Keep in mind that the data will be delivered from the IP stack to the app in order.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;70 is the S-NAT trying to establish a TCP session with a pool member, 10.99.26.22.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;There is no SYN/ACK segment, so the S-NAT IP tries again in 72, 73 and 74.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;After the four failures to establish the S-NAT side TCP session, the F5 gives up and has to do something with the established connection on the VIP side, so it sends the TCP reset in frame 75.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;“But wait”, you cry,&lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;“In Frame 66 we saw the final ACK of the session close with 10.99.26.22”.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;WAIT indeed, TIME_WAIT to be more exact.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;a href="http://www.faqs.org/rfcs/rfc793.html"&gt;RFC 793&lt;/a&gt; says that the TCP session, while closed in a data transmission sense, is still left locked in a state called TIME_WAIT.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This is designed to make sure that any segments that were out of order make it to their destination before the socket is completely closed and refuses the data.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;It also makes sure that there is enough time for the final ACK of the close process has arrived.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;After all you can’t ACK that ACK or it’s not the final ACK.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Here’s the rub, TIME_WAIT was defined as 2 times the Maximum Segment Lifetime (MSL) in RFC 793.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This value was, as the FRC puts it,  is “arbitrary”.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;To be more exact, it made sense based on the networking technologies when the RFC was written in 1981.&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;This value, which is 4 minutes (2 X an MSL of 2 min), was appropriate for the slow networks of the day.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Since then, some vendors have decided this is too long.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;There is good reason for this.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;If a server needs to make a large number of outbound connections, this 4 minute penalty before the port can be reused can lead to port exhaustion.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This value is tunable on an OS level.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The default for windows is still 4 minutes.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Our LDAP servers have 60 second TIME_WAIT, as part of the Solaris settings. &lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;TIME_WAIT means different things to the client and server.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The client cannot make any calls out on that ephemeral port, not to any server, until the wait is over.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The server cannot accept traffic from the source host on that same source port until the wait is over.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The server could accept new traffic from the same source host, if it were on a new ephemeral port.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Between frames 66 and 74, the final ACK and the final SYN attempt, we only see about 12 seconds.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The LDAP server is clearly in its 60 second TIME_WAIT and properly refusing the connection.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Now you’re confused and so was I.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Well, there are a couple more F5 TCP Profile settings that come into play.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;First, the TIME_WAIT is settable in the TCP profile and defaults to 2 seconds!!&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The client and server don’t agree, by way of negotiation, on a TIME_WAIT, they both have their own.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;b&gt;This mismatch makes collisions possible&lt;/b&gt;.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This setting is great to have, but it must be set for your use case.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;The default is not right for our use case.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Second, and even more interesting/scary, is the &lt;a href="http://support.f5.com/kb/en-us/solutions/public/7000/500/sol7559.html"&gt;TIME_WAIT Recycle option&lt;/a&gt;, which is defaulted to on.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This behavior is described as TIME-WAIT Truncation, in &lt;a href="http://www.faqs.org/rfcs/rfc1644.html"&gt;RFC 1644&lt;/a&gt;.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This allows the S-NAT side to cut the TIME_WAIT short if it receives a packet wanting the port, just like we see in frame 72.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;In this case, the setting doesn’t matter, as the F5 2 second timer is long over.&lt;span style="mso-spacerun:yes"&gt;   &lt;/span&gt;This setting makes a lot of sense, performance wise, &lt;b&gt;IF &lt;/b&gt;the S-NAT does not try to hit a pool member that is still in TIME_WAIT.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;In our case, we see that all 3 pool members were hit in that 95 seconds window.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;As we only have one S-NAT IP to work with and the F5 can’t guess at the TIME_WAIT on the pool members, we are setup for failure.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The moral of the story is, all the F5's performance settings have tradeoffs.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;By keeping TIME_WAIT low, the F5 can save on memory, by dumping the session early and avoid port exhaustion, but unless you have the proper number of S-NAT IPs, you are shooting yourself in the foot.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;By setting the F5 TIME_WAIT to match the time wait of your severs, you avoid the risk of collisions, but you tie up the ports and RAM on the F5.  In essence, Adding IPs to the S-NAT IP pool lets us use probability to avoid most collisions. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;The bottom line is, make sure your F5 setting match your use case.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;You may also want to read &lt;a href="http://support.f5.com/kb/en-us/solutions/public/9000/800/sol9812.html"&gt;this article from F5&lt;/a&gt; on things that may cause the F5 to send a TCP reset.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;Lessons learned:&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Configuring a load balancer well requires great knowledge about not just networking, but the nature of the application being load balanced. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;F5 has done such a great job optimizing the defaults for HTTP, that most customers may never even see problems, if they are there at all. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Fundamentals like TCP session teardown and TCP state are worth knowing more about.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;There is no better reference than &lt;a href="http://www.amazon.com/TCP-Illustrated-Vol-Addison-Wesley-Professional/dp/0201633469"&gt;TCP/IP Illustrated&lt;/a&gt; by Stevens. &lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/dmgyBy6t2wo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/95325805191368816/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=95325805191368816" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/95325805191368816?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/95325805191368816?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/dmgyBy6t2wo/tuning-f5-big-ip-performance-to-ruin.html" title="Tuning F5 Big-IP Performance to Ruin Your Performance" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_zbKsdv3LNOY/TP3daFT8t5I/AAAAAAAAAzk/SiMnEEmQTgA/s72-c/LDAPandF5.gif" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2010/12/tuning-f5-big-ip-performance-to-ruin.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGRnY_cCp7ImA9Wx5aFE8.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-8188093639418476498</id><published>2010-11-10T14:24:00.000-08:00</published><updated>2010-11-10T14:43:47.848-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-10T14:43:47.848-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IT Culture" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="Awesome" /><title>IT is All Ones and Zeros, heavy on the Zeros...</title><content type="html">In a rather technical discussion, yesterday, I was accused of "splitting hairs".  Call me crazy, but you can't split most IT hairs...  There is no splitting a binary digit.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;IT and IT types are all about accuracy and terminology.  Misperception in a technical setting costs time and wastes money.  When a tech is "splitting hairs", there is usually a good reason, or they are just being a dick  Granted, I was doing both.  ;-)   ...or maybe its Asperger's... &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/ZcxCSGYMiDQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/8188093639418476498/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=8188093639418476498" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/8188093639418476498?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/8188093639418476498?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/ZcxCSGYMiDQ/it-is-all-ones-and-zeros-heavy-on-zeros.html" title="IT is All Ones and Zeros, heavy on the Zeros..." /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2010/11/it-is-all-ones-and-zeros-heavy-on-zeros.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcER348eip7ImA9WxFXGEg.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-842513343568348908</id><published>2010-05-25T19:44:00.000-07:00</published><updated>2010-05-25T22:50:06.072-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-25T22:50:06.072-07:00</app:edited><title>Some Things That IT Hates About Executives</title><content type="html">&lt;div&gt;&lt;div&gt;&lt;div&gt;I recently read &lt;a href="http://hbr.org/web/extras/8things/1-intro"&gt;Eight Things Executives Hate About IT&lt;/a&gt;, by Susan Cramm, and it rubbed me the wrong way. The article tries to use language that softens the hate, but it's pretty transparent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are my rebuttals to a few points...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(IT) Consists of condescending techies who don’t listen.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We're not condescending, we're just smarter than the execs. There is a serious imbalance of brain power. How that makes an exec feel is there problem, granted, we might be able to rub it in less. Self esteem comes from the self, if they feel condescended to, that is a personal problem. I recommend therapy. The fat paycheck seems to compensate well for the feelings of inadequacy that the job brings up. Many of us don't "&lt;i&gt;lack the expertise to advise senior executives&lt;/i&gt;" and many do. Who's being condescending now! It feels it's time for couples counseling.&lt;/div&gt;&lt;div&gt;Seriously though, the &lt;a href="http://en.wikipedia.org/wiki/The_Dilbert_Principle"&gt;Dilbert Principle&lt;/a&gt; tells us,  (yes, Scott Adams is s-m-r-t) that dumb people with the right political skills are regularly promoted in order to keep them out of the way of real work.  I'm not saying all execs are dumb, just that there is a mixed bag.  Execs are like a box of chocolates... &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll quote the whole point here...&lt;/div&gt;&lt;div&gt;&lt;b&gt;"(IT) Doesn't understand the true needs of the business&lt;/b&gt;&lt;/div&gt;&lt;div&gt;IT nags you for requirements and complains that you always change your mind about what you want from your systems. Why doesn’t IT understand that change should be expected in a dynamic business environment where nothing is static? "&lt;/div&gt;&lt;div&gt;Seriously, have you take a single programming class? One? A computer system cannot be dynamic. It can't change on its own. It cannot anticipate needs. The code (if you’re lucky) only does exactly what you tell it too. it takes inputs and outputs and does "stuff". Every different type of input or output must be fully understood, by way of a use case, and then code and error handling written for each one. If the use case wasn't thought of, how does one write code?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Proposes “deluxe” when “good enough” will do&lt;/b&gt;&lt;/div&gt;&lt;div&gt;My experience has been just the opposite.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;IT projects never end&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The writer complains about the projects being "perennially 90% done" . Maybe she should have read her own point above about the business being dynamic. If you keep adding 10% to the scope...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Is reactive rather than proactive&lt;/b&gt;&lt;/div&gt;&lt;div&gt;"When you need help, you feel like a technology pauper, going door-to-door begging for help from functional specialists who complain that you didn’t get them involved early enough."&lt;/div&gt;&lt;div&gt;Hmmmmm... If only I could see a solution here. Maybe get the specialists involved earlier? No, that isn't it. We'll go out and get crystal balls so we can know what you will need. Please hold your breath until we get back to you.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Doesn't support innovation&lt;/b&gt;&lt;/div&gt;&lt;div&gt;"When you try to brainstorm with IT about new technologies you could use to innovate – like 2.0 tools, for instance – they patronize you by dismissing your questions and noting that your people aren’t properly using the systems already in place."&lt;/div&gt;&lt;div&gt;Does she even know what 2.0 tools are? Web 2.0? Let me make her point about condescending IT for her? WHAT!! You want user generated content in your billing system or CRM? Maybe you want photos in your activation system? Maybe she means AJAX? Yeah, spicing up the UI a tad bit, now that is innovation.&lt;/div&gt;&lt;div&gt;You cannot just call every crazy, one eighth baked idea innovation. Wait, I've got it, let's keep all the zeros, but replace the ones with Folgers crystals.&lt;/div&gt;&lt;div&gt;Trust us, if you have even a spark of a good idea, we will help bring it to glorious fruition.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;IT never has good news&lt;/b&gt;&lt;/div&gt;&lt;div&gt;"No matter how much you spend or how hard you work, the promise of technology seems perpetually beyond your reach. Even the “successful” launch of new systems is accompanied with the inevitable onslaught of bugs, crashes, and change requests"&lt;/div&gt;&lt;div&gt;This is what you get when your project is date driven. Your project options are: Right, Fast, and Cheap. You can pick any two.&lt;/div&gt;&lt;div&gt;I'd recommend cutting scope, or hiring more good developers. And while we are on that topic. Not all IT staff are equal or interchangeable. Nothing spells fail like using sub-par IT staff and PMs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I do agree with the writer, the situation has gotten out of hand. IT and the execs do need to come to an agreement. The first step should be honest communications about capabilities and expectations. Mush of IT has messed up. We work too many hours, delivering the near impossible time and again. We've allowed the bar to be set to high. Execs, wanting to push the envelope, try to push even further. It's time to reset expectations and force execs to understand the trade-offs involved with the scope of projects.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/JzJsR0oQ0h4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/842513343568348908/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=842513343568348908" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/842513343568348908?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/842513343568348908?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/JzJsR0oQ0h4/some-things-that-it-hates-about.html" title="Some Things That IT Hates About Executives" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2010/05/some-things-that-it-hates-about.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYEQ388eSp7ImA9WxFXEE8.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-6179317662753384542</id><published>2010-05-16T09:10:00.000-07:00</published><updated>2010-05-16T09:25:02.171-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-16T09:25:02.171-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="butter" /><title>Top Rejected Names for "I Can't Believe it's Not Butter"</title><content type="html">5.  This is like butter, only made of chemicals that somehow make it more healthy?&lt;br /&gt;&lt;br /&gt;4.  This tub was mislabeled.&lt;br /&gt;&lt;br /&gt;3.  Based on hours of testing, I am sure this is Butter, yet the package claims otherwise.&lt;br /&gt;&lt;br /&gt;2.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Mmmmmm&lt;/span&gt;, butter!  What? Lying whore!!!!!!!!!&lt;br /&gt;&lt;br /&gt;1.  I am unable to conceive of a universe, wherein this is not butter.&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/LwHZiCp7WcA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/6179317662753384542/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=6179317662753384542" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/6179317662753384542?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/6179317662753384542?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/LwHZiCp7WcA/top-rejected-names-for-i-cant-believe.html" title="Top Rejected Names for &quot;I Can't Believe it's Not Butter&quot;" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2010/05/top-rejected-names-for-i-cant-believe.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEBRnY_fyp7ImA9WxFXGE8.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-8003491354400783512</id><published>2010-02-23T16:00:00.000-08:00</published><updated>2010-05-25T14:24:17.847-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-25T14:24:17.847-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSL" /><category scheme="http://www.blogger.com/atom/ns#" term="TLS" /><category scheme="http://www.blogger.com/atom/ns#" term="PKI" /><category scheme="http://www.blogger.com/atom/ns#" term="openSSL" /><category scheme="http://www.blogger.com/atom/ns#" term="certificates" /><title>How I Learned to Stop Hating Java and Start Loving s_client</title><content type="html">&lt;div&gt;Got SSL problems?  Ask me how s_client can help!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Have you ever had one of those days when a customer tells you that they can connect to your server using SSL, but not to the F5 load balancer in front of it?  Here's my tale.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I provide LDAP over SSL access, to a group of my domain controllers, by way of an F5 load balancer.   None of the apps that use this are AD aware, so we just have one virtual IP (VIP) on an F5 on port 636.  I don't want to &lt;a href="http://support.microsoft.com/kb/931351"&gt;add Subject Alternate Names&lt;/a&gt; (SANs) to my DC certificates, so we terminate SSL at the F5 and then create a new SSL session from F5 to the appropriate DCs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As the PKI that issues our SSL/TLS certificates is internal, it is common to have to help our customers provision their local CA trust stores to trust our Root CA.  Nearly all of the systems that use the F5 are Java based.  Since setting up the F5, we've noticed that the systems required our customers to install all three tiers of our PKI in to their local trust store.  This seemed odd, as my experience has always been that importing the root alone was good enough to allow proper chaining.  We always chalked it up to weak chaining code in the Java stack.  How foolish of me/us!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Last week we had a fresh windows machine try and use the F5 and they got the same result.  That is, he failed to connect to the load balancer, getting a failed trust error.  The customer had only installed our Root CA in his trusted roots store.  Instead of just adding all the tiers of our PKI, the customer decided to point directly at one of our DCs.  To my surprise, he connected with no chaining failures.  Apparently the Root CA was good enough when connecting to the DC, but no for the F5.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At that point, I stopped blaming Java and demanded answers.  Enter my new trusty friend &lt;a href="http://www.openssl.org/"&gt;openssl&lt;/a&gt; &lt;a href="http://www.openssl.org/docs/apps/s_client.html"&gt;s_client&lt;/a&gt;.   s_client establishes an SSL/TLS session with a server and then waits for you to send commands.  Think of it as getting a socket, like telnet, only after establishing an SSL session first.  But wait, there's more...  s_client can also tell you all about the SSL session in question. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;openssl s_client -connect server:port -showcerts&lt;/i&gt; will also show you what is being negotiated by your server and client.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When connecting to my DC directly I got:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;CONNECTED(00000730)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Certificate chain&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;b&gt; 0 s:/CN=DCserver.domain.org&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;   i:/DC=org/DC=domain/CN=Fun USA Issuer CA 02&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;-----BEGIN CERTIFICATE-----&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;MIIF5TCCBM2gAwIBAgIKS5ibh&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;-----END CERTIFICATE-----&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;b&gt; 1 s:/DC=org/DC=domain/CN=Fun USA Issuer CA 02&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;   i:/CN=Fun USA Intermediate CA 01&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;-----BEGIN CERTIFICATE-----&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;MIIF/zCCBOegAwIBA&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;-----END CERTIFICATE-----&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;b&gt; 2 s:/CN=Fun USA Intermediate CA 01&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;   i:/CN=Fun USA Root CA&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;-----BEGIN CERTIFICATE-----&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;MIIF5jCCBM6g&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;-----END CERTIFICATE-----&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Server certificate&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;subject=/CN=DCserver.domain.org&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;issuer=/DC=org/DC=domain/CN=Fun USA Issuer CA 02&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Acceptable client certificate CA names&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;/C=US/O=VeriSign, Inc./OU=Class 1 Public Primary Certification Authority - G2/OU=(c) 1998 VeriSign, Inc. - For authorized use only/OU=VeriSign Trust Network&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-size:x-small;"&gt;/C=US/O=First Data Digital Certificates Inc./CN=First Data Digital Certificates Inc. Certification Authority&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting/OU=Certification Services Division/CN=Thawte Personal Basic CA/emailAddress=personal-basic@thawte.com&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-size:x-small;"&gt;/C=US/O=VeriSign, Inc./OU=Class 1 Public Primary Certification Authority&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority - G2/OU=(c) 1998 VeriSign, Inc. - For authorized use only/OU=VeriSign Trust Network&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-size:x-small;"&gt;/C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Root&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-size:x-small;"&gt;/OU=Copyright (c) 1997 Microsoft Corp./OU=Microsoft Corporation/CN=Microsoft Root Authority&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;/DC=com/DC=microsoft/CN=Microsoft Root Certificate Authority&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;SSL handshake has read 7832 bytes and written 318 bytes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;New, TLSv1/SSLv3, Cipher is RC4-MD5&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Server public key is 1024 bit&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Compression: NONE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Expansion: NONE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;SSL-Session:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Protocol  : TLSv1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Cipher    : RC4-MD5&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Session-ID: 80050000AB7EA7AC223A31DAE93EFE553CFFEB093D224D59C6C3DD169AFEA1D3&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Session-ID-ctx: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Master-Key: 382218AB63FFC1A874DAD739E48630D8410F05FFE24BAEF54DF7E88578DE2720AF111FF4E7C052A42A357AB476C205B5&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Key-Arg   : None&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Start Time: 1266967263&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Timeout   : 300 (sec)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Verify return code: 20 (unable to get local issuer certificate)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can see that the server and client negotiated a TLSv1 session using RC4-MD5.  More importantly, for me, we see what certificates the server offered up for the SSL connection.   I've truncated the output to remove most of the &lt;a href="http://email.about.com/cs/standards/a/base64_encoding.htm"&gt;base64 encoded&lt;/a&gt; certificate data, as you don't need it.  It can be useful if you know what to do with it, but that is out of scope.   You can see that my DC will allow client certificates, but is not requiring them.  You will see that the DCserver cert was offered up, along with the Issuer 02, the Intermediate, and the Root.  This gives a client all the hierarchy to allow chaining to the Root, which was trusted.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I ran the s_client connect against the F5, I got this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;CONNECTED(00000730)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Certificate chain&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;b&gt; 0 s:/C=US/ST=WA/L=Renton/O=Fun USA, Inc/OU=Business Systems/CN=f5.domain.org&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;   i:/DC=org/DC=domain/CN=Fun USA Issuer CA 02&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;-----BEGIN CERTIFICATE-----&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;MIIGATCCBOmgAwIB&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;-----END CERTIFICATE-----&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Server certificate&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;subject=/C=US/ST=WA/L=Renton/O=Fun USA, Inc/OU=Business Systems/CN=f5.domain.org&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;issuer=/DC=org/DC=domain/CN=Fun USA Issuer CA 02&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;No client certificate CA names sent&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;SSL handshake has read 1687 bytes and written 306 bytes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;New, TLSv1/SSLv3, Cipher is RC4-MD5&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Server public key is 1024 bit&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Compression: NONE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Expansion: NONE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;SSL-Session:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Protocol  : TLSv1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Cipher    : RC4-MD5&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Session-ID: B53C2347A4947080D27A65929C3E2ADCFE6DCCFC70F57456BA8155E036347B4E&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Session-ID-ctx: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Master-Key: 24E43E3324F07EDCA3C2F0DC790FFE0134B5B0FC027E08B46988A02A26A402780D548C1DAC8C8F3F1EFA0F071A098F8A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Key-Arg   : None&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Start Time: 1266967301&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Timeout   : 300 (sec)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;    Verify return code: 21 (unable to verify the first certificate)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you can see, this is much shorter.   The F5 was offering up only the server certificate and none of the chain.  As the client only has the Root trusted, it cannot succeed in processing the chain.  The only way a session like this can be trusted is if the client explicitly trusts the server certificate or the CA that issued the certificate.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I love s_client...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As it turns out, the F5 team forgot to load up the chain.  Some systems won't even offer up SSL without a valid chain, but F5 is way better!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/XwZh8qMOypk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/8003491354400783512/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=8003491354400783512" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/8003491354400783512?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/8003491354400783512?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/XwZh8qMOypk/how-i-learned-to-stop-hating-java-and.html" title="How I Learned to Stop Hating Java and Start Loving s_client" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2010/02/how-i-learned-to-stop-hating-java-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08BQXozeSp7ImA9WxJUFUU.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-828826044382448555</id><published>2009-07-13T11:26:00.000-07:00</published><updated>2009-07-14T09:44:10.481-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-14T09:44:10.481-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Two-factor authentication" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="certificates" /><title>Why Software Certificates Aren't a Second Authentication Factor</title><content type="html">&lt;a href="http://en.wikipedia.org/wiki/Two-factor_authentication"&gt;Two Factor&lt;/a&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;authentication&lt;/span&gt; is better than one.  It is a requirement for some systems that need to be more secure, such as &lt;a href="https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;PCI&lt;/span&gt;&lt;/a&gt; covered systems.   What does this actually mean and why is it more secure?&lt;br /&gt;&lt;br /&gt;Two-factor &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;authentication&lt;/span&gt; means that you have &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;authenticators&lt;/span&gt; from to different classes of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;authenticator&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;What you know, like a password or pass phrase.&lt;/li&gt;&lt;li&gt;What you have, like a &lt;a href="http://en.wikipedia.org/wiki/One-time_password"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;OTP&lt;/span&gt;&lt;/a&gt; Token or a &lt;a href="http://en.wikipedia.org/wiki/Smart_card"&gt;smart card&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;What you are, like a fingerprint, voice print, &lt;a href="http://www.admitonesecurity.com/"&gt;keystroke rhythm&lt;/a&gt;. &lt;/li&gt;&lt;/ol&gt;These general definitions are generally accepted by all.   Let's go a step further and look at what they actually mean, and what the intent is.  What are the kinds of attacks against a specific &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;authenticator&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why would you even want a second factor and why from a different class?&lt;/span&gt;&lt;br /&gt;We don't want more security!   If we use a send factor, an attacker has something else to get in order to impersonate the legitimate user.  However, if the user can get the first factor, then you surely don't want to use one just like it.  Different classes of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;authenticators&lt;/span&gt; have different threat models, attack vectors and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;vulnerabilities&lt;/span&gt;.   If the attacker can steal one password, they can surely steal a second.   They just do what they did, for a bit longer.&lt;br /&gt;&lt;br /&gt;If an attacker has to somehow get my password and steal my physical token without me knowing, that's a tall order.  You can get my password remotely, but you have top travel and sneak to get my token.   On top of that, I carry a &lt;a href="http://www.spyderco.com/catalog/details.php?product=227"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Spyderco&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Delica&lt;/span&gt;&lt;/a&gt;.  That's how I spell &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;compensating&lt;/span&gt; control.&lt;br /&gt;&lt;br /&gt;The intent of the "what you have" factor, in my opinion, is that the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;authenticator&lt;/span&gt; be a physical object that can not be easily duplicated.  This maintains the threat model and the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Spyderco&lt;/span&gt; control. The "what you have" factor should be hard to copy even if the legitimate owner is colluding.  "Here, have a copy of my certificate and private key", should not be an option.   If the what you have can be transmitted &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;electronically&lt;/span&gt;, it's not a true what you have.&lt;br /&gt;&lt;br /&gt;Software &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;certificates&lt;/span&gt; and the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;corresponding&lt;/span&gt; private keys, that are stored in some sort of non-volatile storage, i.e. your hard drive.  I'll focus on windows boxes, as I can speak very accurately about them, but the following is true with any OS.  If the users have physical access to the computers, then they can get admin rights, which means that they can get the private key for the certificate.   Don't believe it...  Remember, if you have &lt;a href="http://technet.microsoft.com/en-us/library/cc722487.aspx#EIAA"&gt;physical access to the box, you own the box&lt;/a&gt;.  Did you think that your whole disk encryption product could protect you?  Take a look at &lt;a href="http://en.wikipedia.org/wiki/Cold_boot_attack"&gt;cold boot&lt;/a&gt; attacks.&lt;br /&gt;&lt;br /&gt;Once you have admin rights, there are two methods to get the private key.  The private key is stored in the registry and file system.  It's obfuscated a bit and protected with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;DPAPI&lt;/span&gt;, in the machine context.  This means that an admin can export the private key.  Wait, you've marked the private key as not exportable!  Remember, the admin owns the box.  The key is there, a piece of code is just telling the system to not hand it over.   Let's look at C:\Documents and Settings\All Users\Application Data\Microsoft\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Crypto&lt;/span&gt;\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;RSA&lt;/span&gt;\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;MachineKeys&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;HKEY&lt;/span&gt;_LOCAL_MACHINE\SOFTWARE\Microsoft\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;SystemCertificates&lt;/span&gt;\My\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;Certificates&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;HKEY&lt;/span&gt;_LOCAL_MACHINE\SOFTWARE\Microsoft\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;SystemCertificates&lt;/span&gt;\My\Keys&lt;br /&gt;These are all linked together to protect you from getting the key.   If we take a look in one of the key files, we see an Export Flag.  In this case, local software is reading that flag and choosing whether or not to respect it.  Once could just use a little magic and pull out the key.  Enter the ninjas at &lt;a href="http://www.isecpartners.com/index.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;ISEC&lt;/span&gt; Partners &lt;/a&gt;and their &lt;a href="http://www.isecpartners.com/jailbreak.html"&gt;Jailbreak&lt;/a&gt;.  Give it a shot, and you will see that you can export the key!&lt;br /&gt;&lt;br /&gt;So, if the user colludes, copying the software certificate is trivial.  If the user is just negligent, the attacker could ghost (clone) the drive and then get access later.   If the user is negligent, but uses a good full drive encryption product, the attacker will need some time with the computer to get the key. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Protections of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;Certificates&lt;/span&gt; and Keys That Work&lt;/span&gt;&lt;br /&gt;My examples above are related to machine &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;certificates&lt;/span&gt;.  Those are the only ones that can be used for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;IPSec&lt;/span&gt;, in most cases.  If your user does not collude with the attacker and cant' be tricked into running their attack code, (that seems unlikely, users will click on anything)  then user &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;certificates&lt;/span&gt; are secure.  Why?  User &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;certificates&lt;/span&gt; are protected by &lt;a href="http://msdn.microsoft.com/en-us/library/ms995355.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;DPAPI&lt;/span&gt; &lt;/a&gt;in the user context.   This means that they private key can only be decrypted if the user has typed in their password.  The system does not escrow the key for the user, the user's private keys are protected with a key that is derived directly form the password using &lt;a href="http://www.rsa.com/rsalabs/node.asp?id=2129"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;PKCS&lt;/span&gt; 7&lt;/a&gt;.  If the actual password is not available, their is no way to recover the key.  In a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;workgroup&lt;/span&gt;, this is absolute.  If the machine is domain joined, an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;administrator&lt;/span&gt; of the domain can reset the user's password and reconnect the machine to the domain and the key can be recovered.  Collusion by your domain admins is a whole lot more worrisome than your user.&lt;br /&gt;&lt;br /&gt;Whole disk encryption that requires keys stored on a smart card or token can stop most attacks.  The problem with most whole disk encryption &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;implementations&lt;/span&gt; is that they are not actually secure.  They just keep the dumb and honest honest.  If you can boot the PC without entering a pass phrase or insert a token, then your disk encryption keys are stored locally and can be accessed by your boot loader.  This means that it's just a matter of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;understanding&lt;/span&gt; how that works to get the key, or one can let the machine boot and then use the cold boot method to get the key from RAM.  Use real encryption, get a token or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;smartcard&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;One could also use &lt;a href="http://support.microsoft.com/kb/310105"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;SYSKEY&lt;/span&gt;  &lt;/a&gt;in mode 2 or 3.  This encrypts some of the SAM using a key that is derive from a password or on a floppy disk.  Neither of these is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_40"&gt;particularly&lt;/span&gt; manageable on an enterprise scale.  Most users will leave the floppy in the drive and the password has no rotation policy.  Either you have to track it per PC or have a universal password for your org, which will surely get out.&lt;br /&gt;&lt;br /&gt;So, if you have a software certificate and private key, they are electronic assets with many avenues that can allow an attacker to copy and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_41"&gt;electronically&lt;/span&gt; copy and transmit them.  While the attack vectors for getting the private key differ from getting the user's password, the spirit of "something you have" is not met by a software certificate.   This is not to discount the value of software &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_42"&gt;certificates&lt;/span&gt; in many situations, they are great.  I simply am making the point that they are what they are and one should never forget.&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/mEEN7EfkDuE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/828826044382448555/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=828826044382448555" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/828826044382448555?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/828826044382448555?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/mEEN7EfkDuE/why-software-certificates-arent-second.html" title="Why Software Certificates Aren't a Second Authentication Factor" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2009/07/why-software-certificates-arent-second.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EGSHw7fCp7ImA9WxJWGUo.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-6313682896672553781</id><published>2009-06-25T15:45:00.000-07:00</published><updated>2009-06-25T17:20:29.204-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-25T17:20:29.204-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSL" /><category scheme="http://www.blogger.com/atom/ns#" term="LSASS" /><category scheme="http://www.blogger.com/atom/ns#" term="LDAP" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="LDAPS" /><title>Sniffing the Unsniffable</title><content type="html">&lt;div&gt;In a previous &lt;a href="http://markgamache.blogspot.com/2008/03/looking-inside-netscaler-and-cag-ent.html"&gt;post &lt;/a&gt;I covered how to export a private key to decrypt SSL traffic in &lt;a href="http://www.wireshark.org/"&gt;Wireshark&lt;/a&gt;.   This is dandy, as long as you have access to the private key.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What do you do if you don't have access to the private key???  Perhaps you are using a windows box and the certificate policy is set to not allow the export of the private key.  Yes, a super ninja can take it, if they know enough about the file locations and &lt;a href="http://msdn.microsoft.com/en-us/library/ms995355.aspx"&gt;DPAPI&lt;/a&gt;, but it's hard.  Maybe I'll cover that soon.  What if you are the client and the server is some commercial service?  You'll never get that key.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you are on a windows host, you are in luck!  Enter my new best friend, &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=f5ec767f-27f2-4fb3-90a5-4bf0d5f4810a&amp;amp;displaylang=en"&gt;STrace&lt;/a&gt;, from Microsoft. STrace uses MS Research's amazing tool, &lt;a href="http://research.microsoft.com/en-us/projects/detours/"&gt;detours&lt;/a&gt;.   I'll avoid a huge digression and just say that detours is crazy awesome.   It intercepts win32 functions in memory and allows the code to be altered on the fly.  That's right "re-writing the in-memory code for target functions".  Yikes!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;STrace was written for something other than our purposes.  It's meant to be used in conjunction with &lt;a href="http://www.microsoft.com/downloadS/details.aspx?FamilyID=d25ba362-c17b-4d80-a677-1faff862e629&amp;amp;displaylang=en"&gt;HTTPREPLAY&lt;/a&gt;.  This allows of debugging a web browser session over and over, without the server.   Booooorrrriiinnnggg.  Actually it's very cool, but not for us.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of the things that STrace does for us, to support its original goes, is to inject itself into processes that are using SSL.  You simply find the PID of the process and inject the DLL and you get your data out, unencrypted.   The data is in a format designed for HTTPREPLAY, which is only a bit of a pain.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Going for the Gold!&lt;/b&gt;&lt;/div&gt;&lt;div&gt;If you've ever dealt with LDAPS failures in AD, you know how tricky they can be.  You can only watch the SSL negotiation, then you lose out.  If the issue involves a lying crappy vendor of a developer who just read about LDAP when the project started, you always want to look at the data they are sending.  LDAP on the wire never lies!  Too bad that by default, the Domain Controller Certificate Template is set to not allow export of your private key.  If you're like me, you may have the party turn off SSL and suddenly it all works.  Hmmmm...  We must see what is really being sent!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First off, the strace readme.txt is full of awesome and it's short.  It's worth a once over.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first step in the process is to figure out which process is our LDAP SSL server.  We know that SSL for LDAP is on port 636, so we run &lt;i&gt;&lt;b&gt;netstat -b -n -a&lt;/b&gt;&lt;/i&gt; to get the list of ports and their process names and the PID&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That gets us this:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;i&gt;TCP    0.0.0.0:636            0.0.0.0:0              LISTENING       428&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;[lsass.exe]&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we know that LSASS is the process and the PID is 428.  LSASS!!  Oh no, that is super protected certainly we can't touch it.  This may be the Holy Grail.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you follow the readme file, your first attempt will fail. Luckily the error is mentioned right in the file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Note that you may get some permission issue if you want to "inject" the STRACE DLL in "protected"  processes (Injib may fail with error 5 (ACCESS_DENIED) on OpenProcess()). One way to workaround this problem is to &lt;i&gt;run INJLIB from a CMD running under the system account. &lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That sound great, but how?  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We will use some &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx"&gt;pstools &lt;/a&gt;to get the rest of what we need.   If you don't know pstools and the &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx"&gt;Sysinternals Suite&lt;/a&gt;, you may not actually be a windows admin.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;psexec -s will let us run a process as system! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;let's try &lt;/div&gt;&lt;div&gt;&lt;i&gt;psexec -s "C:\Program Files\STRACE\INJDLL.EXE" /p:428 /d:"C:\Program Files\STRACE\STRACE.DLL"&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, if you run something like Sysinternals Process Explorer and do a find for "strace"  you will see it is now attached to LSASS.  No errors, no LSASS detects evil, shutting down...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At this point, you should see a strace log file on your desktop, but you don't.  Sysinternals Filemon will show us why.  The default location is the desktop, but where is system's desktop, it's not under documents and settings.  Filemon finds it here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C:\WINDOWS\system32\config\systemprofile\Desktop\STRACE_LSASS_PID_428_24062009_223405.LOG&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;3:35:26 PM&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;lsass.exe:400&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;WRITE &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;C:\WINDOWS\system32\config\systemprofile\Desktop\STRACE_LSASS_PID_428_24062009_223405.LOG&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;SUCCESS&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Offset: 9630 Length: 26&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Now, we can use some LDAP Tools to connect to the server over SSL and watch what happens. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I bind to the DC, I get a whole lot, but I'll pull out the good stuff:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;06/25/2009 23:55:41:078 - SecBuffer #1 BufferType:0x00000000 cbBuffer:47906816&lt;/div&gt;&lt;div&gt;06/25/2009 23:55:41:078 - SecBuffer #2 BufferType:0x00000000 cbBuffer:54197772&lt;/div&gt;&lt;div&gt;06/25/2009 23:55:41:078 - SecBuffer #3 BufferType:0x00000000 cbBuffer:-1&lt;/div&gt;&lt;div&gt;06/25/2009 23:55:41:078 - SecBuffer #0 BufferType:0x00000007 cbBuffer:5&lt;/div&gt;&lt;div&gt;06/25/2009 23:55:41:078 - SecBuffer #1 BufferType:0x00000001 cbBuffer:45&lt;/div&gt;&lt;div&gt;06/25/2009 23:55:41:078 - SECBUFFER_DATA - 45 byte(s) / DecryptMessage - OUTPUT &lt;/div&gt;&lt;div&gt;=====================================================&lt;/div&gt;&lt;div&gt;                 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f           0123456789abcdef&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;0000: 30 2b 02 01 01 60 26 02 01 03 04 17 61 64 6d 69            0+...`&amp;amp;.....admi&lt;/div&gt;&lt;div&gt;0010: 6e 69 73 74 72 61 74 6f 72 40 62 6c 69 6d 2e 62                 nistrator@blim.b&lt;/div&gt;&lt;div&gt;0020: 6c 61 6d 80 08 70 61 73 73 77 6f 72 64                                          lam..password&lt;/div&gt;&lt;div&gt;=====================================================&lt;/div&gt;&lt;div&gt;06/25/2009 23:55:41:078 - SecBuffer #2 BufferType:0x00000006 cbBuffer:16&lt;/div&gt;&lt;div&gt;06/25/2009 23:55:41:078 - SecBuffer #3 BufferType:0x00000000 cbBuffer:-1&lt;/div&gt;&lt;div&gt;06/25/2009 23:55:41:093 - SecBuffer #0 BufferType:0x00000002 cbBuffer:5&lt;/div&gt;&lt;div&gt;06/25/2009 23:55:41:093 - SecBuffer #1 BufferType:0x00000001 cbBuffer:22&lt;/div&gt;&lt;div&gt;06/25/2009 23:55:41:093 - SECBUFFER_DATA - 22 byte(s) / EncryptMessage - INPUT &lt;/div&gt;&lt;div&gt;=====================================================&lt;/div&gt;&lt;div&gt;                  00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f      0123456789abcdef&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;0000: 30 84 00 00 00 10 02 01 01 61 84 00 00 00 07 0a     0........a......&lt;/div&gt;&lt;div&gt;0010: 01 00 04 00 04 00                                                                                             ......&lt;/div&gt;&lt;div&gt;=====================================================&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We see here that it gets some buffers and decrypted messages.  I see my username and password and then some sort of response.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To verify our suspicions, we make the same conneciton, this time without SSL and capture it via wireshark.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If we look for the same data, we get these two frames:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;0000  00 0c 29 bb 00 2e 00 1a 4b 79 8d 34 08 00 45 00   ..).....Ky.4..E.&lt;/div&gt;&lt;div&gt;0010  00 55 c1 14 40 00 80 06 5c 60 0a 01 64 97 0a 01   .U..@...\`..d...&lt;/div&gt;&lt;div&gt;0020  64 95 0a 87 01 85 b6 56 6c 8e 73 0a 76 db 50 18   d......Vl.s.v.P.&lt;/div&gt;&lt;div&gt;0030  fc 00 d0 48 00 00 &lt;b&gt;30 2b 02 01 01 60 26 02 01 03   ...H..0+...`&amp;amp;...&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;0040  04 17 61 64 6d 69 6e 69 73 74 72 61 74 6f 72 40   ..administrator@&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;0050  62 6c 69 6d 2e 62 6c 61 6d 80 08 70 61 73 73 77   blim.blam..passw&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;0060  6f 72 64                                                                                                                         ord&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;0000  00 1a 4b 79 8d 34 00 0c 29 bb 00 2e 08 00 45 00   ..Ky.4..).....E.&lt;/div&gt;&lt;div&gt;0010  00 3e 26 b4 40 00 80 06 f6 d7 0a 01 64 95 0a 01   .&gt;&amp;amp;.@.......d...&lt;/div&gt;&lt;div&gt;0020  64 97 01 85 0a 87 73 0a 76 db b6 56 6c bb 50 18   d.....s.v..Vl.P.&lt;/div&gt;&lt;div&gt;0030  fa c3 f6 bf 00 00 &lt;b&gt;30 84 00 00 00 10 02 01 01 61   ......0........a&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;0040  84 00 00 00 07 0a 01 00 04 00 04 00&lt;/b&gt;                                  ............&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you notice, we have a byte for byte match for the bottom part of the packet.  If you break out your &lt;a href="http://www.uic.rsu.ru/doc/inet/tcp_stevens/"&gt;TCPIP Illustraed&lt;/a&gt;, you will find that the top of each frame is the Ethernet, IP and TCP header data, we are getting just the LDAP protocol payload!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If we look closer, we see that all our LDAP traffic is there.  The downside being, that we don't get information on the host sending the data and we don't have &lt;a href="http://www.tcpdump.org/"&gt;libcap &lt;/a&gt;format, so tools like wireshark can't dissect the protocols for us in a nice way.  If you understand libcap, it looks trivial to create fake Ethernet, IP and TCP data and drop in the payload to make a libcap file, or use existing parsers to dissect the messages.  Its beyond me though.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The last down side is that I can't find out how to un-inject the strace dll.  So far, only rebooting has fixed this.&lt;br /&gt;&lt;br /&gt;And that is that...  If you can detour the SSL from LSASS, you can do it anywhere!&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/9UnwpQn5hV4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/6313682896672553781/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=6313682896672553781" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/6313682896672553781?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/6313682896672553781?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/9UnwpQn5hV4/sniffing-unsniffable.html" title="Sniffing the Unsniffable" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2009/06/sniffing-unsniffable.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIMRHo5fCp7ImA9WxJQFEg.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-1447898935921696307</id><published>2009-05-27T13:30:00.000-07:00</published><updated>2009-05-27T13:36:25.424-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-27T13:36:25.424-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSL" /><category scheme="http://www.blogger.com/atom/ns#" term="Cryptography" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><category scheme="http://www.blogger.com/atom/ns#" term="keys" /><title>Analysis of Oracle Hyperion Web Analysis Studio 9.3 Logon Security</title><content type="html">&lt;div style="text-align: left;"&gt;Before I start I'll point out that Oracle does not make any claims that the Hyperion Logins are secure without SSL.  This analysis was performed to clear up misconceptions on the part of others.  &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;Analysis of Oracle Hyperion Web Analysis Studio 9.3 Logon Security&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Abstract&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;A quick vetting of how Hyperion handles usernames and passwords shows that their controls offer little protection of credentials while crossing the network, in the absence of SSL.  While passwords are not sent across the network as clear text, they are only lightly obfuscated and subject to multiple attacks.&lt;br /&gt;Hyperion should not be used unless the login pages are encrypted using SSL derived from a certificate that chains to a trusted Root Certificate Authority.  This is most important when using the LDAP connector as it then puts credentials at risk that might grant access to other systems.&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Analysis&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;There are multiple ways to take a look at Hyperion yielding varying results.  Hyperion sends data via Java code to the app server via an unknown application protocol.  It uses Java serialized objects, which may be meaningful to some else.  At the TCP level, the usernames can be seen on the wire in clear text, along with what appears to be a base64 encoded password.&lt;br /&gt;A message snippet looks like this:&lt;br /&gt;------------------314159265358979323846&lt;br /&gt;Content-Disposition: form-data; name="param type 1"&lt;br /&gt;Content-Type: text/plain; charset=US-ASCII&lt;br /&gt;Content-Transfer-Encoding: 8bit&lt;br /&gt;&lt;br /&gt;com.hyperion.atf.security.authentication.IAuthenticationHelper&lt;br /&gt;&lt;br /&gt;------------------314159265358979323846&lt;br /&gt;Content-Disposition: form-data; name="param type 2"&lt;br /&gt;Content-Type: text/plain; charset=US-ASCII&lt;br /&gt;Content-Transfer-Encoding: 8bit&lt;br /&gt;&lt;br /&gt;com.hyperion.atf.security.users.IUserManagerCreateTask&lt;br /&gt;&lt;br /&gt;------------------314159265358979323846&lt;br /&gt;Content-Disposition: form-data; name="param value 0"&lt;br /&gt;Content-Type: application/x-java-serialized-object&lt;br /&gt;Content-Transfer-Encoding: binary&lt;br /&gt;&lt;br /&gt;....sr.&lt;com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;csPasswordt..Ljava/lang/String;L.&lt;br /&gt;csUserNameq.~..xpt..DmFVYnsCImM=t..markgamache&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;------------------314159265358979323846&lt;br /&gt;&lt;br /&gt;The first thing we see is that the protocol breaks up messages with Pi.  Who knows…  The second thing we see is that the helpful words, Password and UserName can be found.  These are followed by DmFVYnsCImM=, presumably my password and then markgamache, my username.  By simply trying a few attempts with different usernames and passwords, it becomes clear that we are correct in our assumptions.  Third, but for later, we also get a java class name, hyperion.atf.security.authentication.SimplePasswordToken.&lt;/com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;/div&gt;&lt;div&gt;&lt;com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Replay Attacks&lt;br /&gt;&lt;/span&gt;Before we look at any technical attacks, we’ll look at that messaging format.  The TCP data sent along with the username and password contain no sequence numbers, nonces, or timestamps.  As you will see in the next section, a username and encrypted password for an account do not change across login sessions.  This makes it highly likely that a simple replay would allow access to a session as another user.  This does not put the password at risk, only data within the application.  If the application data is not encrypted, it is likely that the session could be hijacked as well.  This is a smaller concern generally.&lt;br /&gt;The next step is to try and make sense of the password data.  The system lets us send as many usernames and passwords as we like.&lt;/com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;/div&gt;&lt;div&gt;&lt;com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Chosen Plaintexts&lt;/span&gt;&lt;br /&gt;By sending data we select through the password encryptor, we can then analyze the results.&lt;/com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;/div&gt;&lt;div&gt;&lt;com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;br /&gt;Username: markgamache&lt;br /&gt;Username Hex:     6d 61 72 6b 67 61 6d 61 63 68 65&lt;br /&gt;&lt;br /&gt;Password : 1q2w3e4r&lt;br /&gt;Plaintext hex:        31 71 32 77 33 65 34 72&lt;br /&gt;Cyphertext Hex:   0e 61 55 62 7b 02 22 63&lt;br /&gt;&lt;br /&gt;Password: 11111111&lt;br /&gt;Plaintext hex :       31 31 31 31 31 31 31 31&lt;br /&gt;Cyphertext Hex :  0e 21 56 24 79 56 27 20&lt;br /&gt;&lt;br /&gt;Password: 111111111&lt;br /&gt;Plaintext hex :       31 31 31 31 31 31 31 31 31&lt;br /&gt;Cyphertext Hex    0e 21 56 24 79 56 27 20 e9&lt;br /&gt;&lt;br /&gt;Password: 22222222&lt;br /&gt;Password  hex:       32 32 32 32 32 32 32 32&lt;br /&gt;Cyphertext Hex :  0d 22 55 27 7a 55 24 23&lt;br /&gt;&lt;br /&gt;Password: 33333333&lt;br /&gt;Password  hex :      33 33 33 33 33 33 33 33&lt;br /&gt;Cyphertext Hex :  0c 23 54 26 7b 54 25 22&lt;br /&gt;&lt;br /&gt;Password: 44444444&lt;br /&gt;Password  hex :      34 34 34 34 34 34 34 34&lt;br /&gt;Cyphertext Hex :  0b 24 53 21 7c 53 22 25&lt;br /&gt;&lt;br /&gt;Password: 55555555&lt;br /&gt;Password  hex :      35 35 35 35 35 35 35 35&lt;br /&gt;Cyphertext Hex :  0a 25 52 20 7d 52 23 24&lt;br /&gt;&lt;br /&gt;Password: 12345678&lt;br /&gt;Password  hex :      31 32 33 34 35 36 37 38&lt;br /&gt;Cyphertext Hex :  0e 22 54 21 7d 51 21 29&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Username: ted&lt;br /&gt;Username Hex:     74 65 64&lt;br /&gt;&lt;br /&gt;Password:  11111111&lt;br /&gt;Password  hex :      31 31 31 31 31 31 31 31&lt;br /&gt;Cyphertext Hex :  ab 28 71 f4 fe cb 1d 46&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Username: 1111&lt;br /&gt;Password hex :       31 31 31 31 31 31 31 31&lt;br /&gt;Cyphertext Hex :   51 2b f3 5c a6 76 db 43&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Username : 2111&lt;br /&gt;Password hex :       31 31 31 31 31 31 31 31&lt;br /&gt;Cyphertext Hex :   af a8 8d c5 48 db 27 7c&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From the small sample, we can see a few things:&lt;br /&gt;• If the username is unchanged, then the password data seems to be consistent&lt;br /&gt;  o For markgamache, as long as the password starts with 1, the cyphertext starts with 0e&lt;br /&gt;  o The transform is not s simple substitution, as the 0e only corresponds to 1 as the first                      character&lt;br /&gt;  o Incrementing the value of a character in a particular position produces predictable results.              In pos 1, 0e = 1, 0d = 2, 0c = 3&lt;br /&gt;  o The pattern is not completely predictable.  In Pos 4, 24 = 1, 27 = 2, 26 = 3&lt;br /&gt;  o The value of a position is not varied by the character before or after.  The encrypted value of          Pos 3, when the plaintext is 2, is 55, both when the password is 1q2w3e4r and 2222222&lt;br /&gt;• If the username changes, the cyphertext value no longer match for a position, with the password unchanged.  See users 1111 and 1112 above.&lt;br /&gt;• The values at a position do not vary based on the overall password lenghth.  See password 11111111 vs 111111111&lt;br /&gt;&lt;br /&gt;&lt;/com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;/div&gt;&lt;div&gt;&lt;com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;This tells us that the encrypted version of the password is derived in part from the username.  It also shows us that for any username, we can perform a simple position by position chosen plaintext attack to find the corresponding encrypted values.  This means in about 100 attempts, a user’s password can be derived.  As the application allows unlimited retries, this cannot be stopped.  The account would likely be locked out due to password policy, but in 10 – 30 minutes, it is likely to be unlocked by policy.  &lt;/com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;/div&gt;&lt;div&gt;&lt;com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Code Attacks&lt;br /&gt;&lt;/span&gt;As the password is “encrypted” using the client side Java code, we can take a look at that code.  While the app runs automatically when you click on a web link, there is nothing stopping us from getting the code to look at.  Remember, we can’t execute the code if we can’t get to it.&lt;br /&gt;A simple curl command allows us to get a copy of the jar file, AnalyzerClient.jar.  From there, it is a simple task to extract the jar and decompile the classes.  There are lots of them, but we are saved time by the data from the wire, remember hyperion.atf.security.authentication.SimplePasswordToken.&lt;br /&gt;Sure enough, there is a class named hyperion.atf.security.authentication.SimplePasswordToken.   The class has both encrypt and decrypt methods referencing com.hyperion.atf.utils.encryption.EncryptionManager.&lt;br /&gt;Upon investigation of EncryptionManager, we see that the username is used as the key and RC4 is used to encrypt the password.  This is bad, but is validated by the chosen plaintext operations.&lt;br /&gt;Following the bouncing ball and stripping the error handling for prettiness…&lt;br /&gt;1. We get csPassword and a value from the wire.&lt;br /&gt;2. We get  csPassword = EncryptionManager.encrypt(asUserName, asPassword); from SimplePasswordToken&lt;br /&gt;3. From EncryptionManager we get&lt;br /&gt;public static String encrypt(String asEncryptionKey, String asClearText)&lt;br /&gt;{&lt;br /&gt;       return encryptRC4(asEncryptionKey, asClearText);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;And&lt;br /&gt;protected static String encryptRC4(String asEncryptionKey, String asClearText)&lt;br /&gt;{&lt;br /&gt;   byte myCypher[];&lt;br /&gt;   Rc4Cipher mRc4 = new Rc4Cipher(asEncryptionKey.getBytes("UTF8"));&lt;br /&gt;   byte myClear[] = asClearText.getBytes("UTF8");&lt;br /&gt;   myCypher = new byte[myClear.length];&lt;br /&gt;   mRc4.encrypt(myClear, myCypher);&lt;br /&gt;   return Base64Codec.encode(myCypher);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Indeed, the encryption key is the username, which is sent in the same packet as the encrypted password.  The key is shipped in the lock.&lt;br /&gt;All of our assumptions are confirmed.&lt;br /&gt;Lastly, even thought the client should never need to decrypt the password, that’s the server’s job, the decrypt code is in the classes.  This makes creating your own exploit code extra easy.&lt;/com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;/div&gt;&lt;div&gt;&lt;com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Character Positions Explained&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Now that we know that RC4 is being used with the username as the key, we can see why there is a predictable shift in the cyphertext at any position if the username does not change.  If you recall, for username markgamache, a 1 as the first character always yields 0e as the first byte of cyphertext.  This is because RC4 is a stream cipher.  It acts on a byte stream, one byte at a time.   One byte in the stream had no mathematical effect on the previous or next byte.  This is why block ciphers are considered better, as a rule of thumb.  As our passwords are made up of characters that are, unluckily, one byte each, each character is essentially encrypted by its self.  To defeat this, some sort of bit shift or IV (initialization Vector) should be used.  It’s all moot though, as the key is shipped with the lock, as it were. &lt;/com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;/div&gt;&lt;div&gt;&lt;com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Summary&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Hyperion passwords, and any linked SSO directory passwords, are put at considerable risk by simple code inspection or by chosen plain text attacks.  While it has not been tested, a session with the application can probably be established via a TCP replay.   Without additional controls, it is likely that sessions can also be hijacked.  While the last two issues do not put passwords at risk, they do put the application and its data at risk.&lt;br /&gt;Hyperion should not be used without SSL via a certificate that chains to a trusted root certificate authority.  This will provide for secure key exchange, secure authentication, stop replay attacks and make the world a better place.&lt;br /&gt;&lt;br /&gt;&lt;/com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;/div&gt;&lt;div&gt;&lt;com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;This just reinforces the basic security principal; Trust well vetted cryptosystems (like SSL) over custom solutions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/com.hyperion.atf.security.authentication.simplepasswordtoken.\`.w8.v...l.&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/S5MX5zzmBdE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/1447898935921696307/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=1447898935921696307" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/1447898935921696307?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/1447898935921696307?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/S5MX5zzmBdE/analysis-of-oracle-hyperion-web.html" title="Analysis of Oracle Hyperion Web Analysis Studio 9.3 Logon Security" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2009/05/analysis-of-oracle-hyperion-web.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIAQX0yeSp7ImA9WxJQE0w.&quot;"><id>tag:blogger.com,1999:blog-5043195767541326568.post-6437323218626474469</id><published>2009-05-25T22:28:00.000-07:00</published><updated>2009-05-25T22:42:20.391-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-25T22:42:20.391-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="analysis" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>My First Vendor Security Flaw Submission</title><content type="html">I sent in my first security analysis/vulnerability to Oracle on Friday.  It was for the product, Hyperion Web Analysis Studio 9.3.  I've heard horror stories about vendors abusing security professionals, rather than being thankful.  I hit send with a bit of trepidation.  I got a fairly quick reply (12 hours or so) that was very pleasant, thanking me for the analysis and asking for a few clarifications.  It was clear that my analysis was thoroughly read and understood.  I must say, they are friendly folks.  I'm waiting to hear back as to when I can blog on my analysis, so something will be forthcoming in the 3 4 weeks. &lt;br /&gt;&lt;br /&gt;One thing that was annoying was that it took me quite a while to figure out where to send the information.    &lt;br /&gt;&lt;br /&gt;On a side note, the flaw is not serious, as long as you use SSL, which you should be doing anyway.&lt;img src="http://feeds.feedburner.com/~r/MarkGamachesRandomBlog/~4/35NXsfUKqHk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://markgamache.blogspot.com/feeds/6437323218626474469/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5043195767541326568&amp;postID=6437323218626474469" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/6437323218626474469?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5043195767541326568/posts/default/6437323218626474469?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarkGamachesRandomBlog/~3/35NXsfUKqHk/my-first-vendor-security-flaw.html" title="My First Vendor Security Flaw Submission" /><author><name>Mark Gamache</name><uri>http://www.blogger.com/profile/12517057928398775070</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://markgamache.blogspot.com/2009/05/my-first-vendor-security-flaw.html</feedburner:origLink></entry></feed>
