<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blog.avanadeadvisor.com/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>A-fanatic blog - Past results do not guarantee future performance</title><link>http://blog.avanadeadvisor.com/blogs/parzival/default.aspx</link><description>Virtualization is my life.. can someone virtualize my life .. so changes can be made undone?</description><dc:language>en-US</dc:language><generator>CommunityServer 2.0 (Build: 60217.2664)</generator><item><title>Today: Unwanted patch day</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/10/24/12050.aspx</link><pubDate>Fri, 24 Oct 2008 08:00:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:12050</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/12050.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=12050</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/12050.aspx</wfw:comment><description>&lt;P&gt;Oke we have CAPS-LOCK DAY, independance day.. and today is Unwanted patch day.. &lt;/P&gt;
&lt;P&gt;please take note of: &lt;A href="http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx"&gt;http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;and patch your Windows systems A.S.A.P... &lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=12050" width="1" height="1"&gt;</description></item><item><title>Delegate the right to stop/start replication</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/10/22/12034.aspx</link><pubDate>Wed, 22 Oct 2008 07:26:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:12034</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/12034.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=12034</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/12034.aspx</wfw:comment><description>&lt;P&gt;Let's say you want to isolate a domain controller for a certain time, you would issue the command: &lt;/P&gt;
&lt;P&gt;repadmin /options +DISABLE_INBOUND_REPL or/and +DISABLE_OUTBOUND_REPL &lt;/P&gt;
&lt;P&gt;normally this command requires Domain Admin/Enterprise Admin privileges. &lt;BR&gt;Why and how to change that below.. first the usual warnings: &lt;BR&gt;&lt;EM&gt;Playing with ADSIEDIT could damage your domain, please test everything in a lab environment first blabla.&lt;/EM&gt; &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;NOTE1:Although we can stop the replication for a single domain controller (or multiple) issuing repadmin /replicate will not look at the connection object and therefore replication will still occur, so disabling replication this way does not guarantee inbound/outbound replication is halted completely.. &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;NOTE2:The instructions below are ONLY for those circumstances where it might be required.. in my case a domain controller had to be isolated for a short period of time where two scripts run to export and import pre-staged AD data. And while the export/import was running we did not want any changes going in or out of the DC. Only after verification of the exported/imported data, replication for this domain controller is resumed. In my case I delegate the rights to a service account (that I do not want to make Domain Admin). Delegating to persons is not advisable! Also make sure you have enough monitoring to see whether replication is halted/resumed.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;WARNING: If replication is not re-enabled within the tombstone lifetime the DC will not automatically replicate anymore and will be treated as unsecure by other DC's to avoid lingering objects, please check &lt;/EM&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc757610.aspx"&gt;&lt;EM&gt;http://technet.microsoft.com/en-us/library/cc757610.aspx&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The replication of a domain controller is handled through a connection object, that object is created by the KDC (or manually when the KDC is disabled.. ). The connection object defines the from server, the interval of replication, etc etc.. through the options attribute of this object replication can be disabled or enabled. So the security of the object (or more specific the security on the options attribute of the object) defines who can enable/disable replication for a specific connection. In normal conditions only SYSTEM, Domain Administrators and Enterprise Administrators have the full control rights on these objects. &lt;/P&gt;
&lt;P&gt;Now how to change it: Open Adsiedit and browse to the CN=&amp;lt;DC&amp;gt;,CN=Servers,CN=&amp;lt;SITE&amp;gt;,CN=SITES,CN=Configuration,DC=&amp;lt;DOMAIN&amp;gt;,DC=&amp;lt;EXT&amp;gt; &lt;/P&gt;
&lt;P&gt;below the server entry you will see the connection object with it's GUID . Right click that and select properties, then select the security tab, click Advanced, click add and add the account you like, now do not click OK yet, click properties and select Read Options, Write Options and click OK, OK, OK. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;NOTE3: The options attribute is not soley used for disable/enable replication, it is also used to make a DC a GC etc.. delegating the rights to this attribute also gives the delegated account these rights! &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;And a big thanks to: ActiveDir.org and Spat for the info!&lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=12034" width="1" height="1"&gt;</description></item><item><title>Replication tasks</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/10/21/12027.aspx</link><pubDate>Tue, 21 Oct 2008 08:36:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:12027</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/12027.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=12027</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/12027.aspx</wfw:comment><description>&lt;P&gt;When setting up delegation for replication, or other replication tasks many struggle to find the right object/attribute in the AD. Just found a neat link from Microsoft that could come in handy: &lt;A href="http://technet.microsoft.com/en-us/library/cc756075.aspx"&gt;http://technet.microsoft.com/en-us/library/cc756075.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;With entries like:&lt;/P&gt;
&lt;P&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;Enable Change Notification between sites (only for IP transport links)&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;WP on cn=&amp;lt;SiteLinkName&amp;gt;, cn=IP, cn=Inter-Site Transports, cn=Sites, cn=Configuration, dc=&amp;lt;ForestRootDomain&amp;gt; where the SiteLinkName identifies the associated site link, to modify the options attribute &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;or:&lt;/P&gt;
&lt;P&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;Specify a fixed-port for RPC-based replication&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;WP on HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters to modify the registry entry TCP/IP Port &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;Next to come on this blog, delegating the right to disable/enable replication to a specific DC !&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=12027" width="1" height="1"&gt;</description></item><item><title>Repadmin /expert</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/09/10/11685.aspx</link><pubDate>Wed, 10 Sep 2008 11:53:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11685</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11685.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11685</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11685.aspx</wfw:comment><description>&lt;P&gt;Repadmin is the tool used to troubleshoot replication in an Active Directory forest.. commands like repadmin /replsum (to view replication summary) or repadmin /showutdvec (to view USN per domain controller).. are common commands.. it get's tougher when we want to create or modify links during troubleshooting.. then we use /add to add replication links between two servers.. &lt;/P&gt;
&lt;P&gt;But aren't replication links the what we see in Sites &amp;amp; Services?&lt;BR&gt;Actually no.. the links are the actual replication agreements between the two servers, each partition of the AD has it's own replication link per server.. to view them we can use repadmin:&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Repadmin: running command /showconn against full DC localhost&lt;BR&gt;Base DN: CN=DATACENTER1,CN=Sites,CN=Configuration,DC=ROOTDOMAIN,DC=LOCAL&lt;BR&gt;==== KCC CONNECTION OBJECTS ============================================&lt;BR&gt;Connection --&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Connection name : 28e853b9-4c32-4288-87c7-d4b09beaab97&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Server DNS name : DC01.ROOTDOMAIN.LOCAL&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Server DN&amp;nbsp; name :&amp;nbsp;CN=NTDS Settings,CN=DC01,CN=Servers,CN=DATACENTER1,CN=Sites,CN=Configuration,DC=ROOTDOMAIN,DC=LOCAL&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Source: DATACENTER2\DC02&lt;BR&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; No Failures.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TransportType: IP&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options:&amp;nbsp; isGenerated overrideNotifyDefault&lt;BR&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReplicatesNC: CN=Configuration,DC=ROOTDOMAIN,DC=LOCAL&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Reason:&amp;nbsp; IntersiteTopology&lt;BR&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; Replica link has been added.&lt;BR&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReplicatesNC: DC=DomainDnsZones,DC=ROOTDOMAIN,DC=LOCAL&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Reason:&amp;nbsp; IntersiteTopology&lt;BR&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; Replica link has been added.&lt;BR&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReplicatesNC: DC=ForestDnsZones,DC=ROOTDOMAIN,DC=LOCAL&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Reason:&amp;nbsp; IntersiteTopology&lt;BR&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; Replica link has been added.&lt;BR&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReplicatesNC: DC=ROOTDOMAIN,DC=LOCAL&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Reason:&amp;nbsp; IntersiteTopology&lt;BR&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; Replica link has been added.&lt;BR&gt;Connection --&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Connection name : 3329e0ea-9caa-4fd8-92aa-12605fdf4773&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Server DNS name : DC01.ROOTDOMAIN.LOCAL&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Server DN&amp;nbsp; name : CN=NTDS Settings,CN=DC01,CN=Servers,CN=DATACENTER1,CN=Sites,CN=Configuration,DC=ROOTDOMAIN,DC=LOCAL&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;So in the above text we have DC1 that has a replication object to DC2`&amp;nbsp;&amp;nbsp;&amp;nbsp;.. within that replication object multiple links exist. As you can see, it replicates ForestDnsZones,DomainDnsZones,Configuration and Domain.. and i can hear you asking What about the schema partition? That actually uses the configuration link to replicate and is therefore not shown.&lt;/P&gt;
&lt;P&gt;So you can see the Connection Object (what you see in sites and services) as the container that holds multiple links.. &lt;/P&gt;
&lt;P&gt;Now&amp;nbsp; ay we have a large forest with a lot of troubles.. DC1 and DC2 do not replicate and the KCC is going nuts about .. well are there is.. then we can do the following: We can disable the KCC, delete the connection objects and create the connections ourselves.. initiate replication and enable the KCC again to figure it out on its own again..There is one advantage to this above the KCC.. the KCC uses as you see in the above output: not the actual servername, but the DN field of the NTDS object of the target server.. using the repadmin /add command you can specify the server based on FQDN or Hostname. Basically disconnecting the referral process within AD for replication and using normal name lookup mechanisms. If you DNS is okay, your servers should be able to find each other and replicate normally. &lt;/P&gt;
&lt;P&gt;Now the expert command has two options for adding replication links.. the Repadmin /add command and the Repadmin /addRepsTo Command.. &lt;BR&gt;the question raised is.. what's the difference.. can't I just use one and reverse the inbound outbound DC? &lt;/P&gt;
&lt;P&gt;The answer is no.. the two different attributes we are referring to in this blog is are Reps-From and Reps-To in the connection objects. &lt;BR&gt;The Reps-From is always used (remember AD is pull mechanism, not push). The Reps-To attribute is only used when a change notification is enabled on the link.. a connection object with a Reps-To in his connection object will tell the source DC to notify the To Partner.. and that partner will use the Reps-From attribute to find his DC to GET the data from.. &lt;/P&gt;
&lt;P&gt;Basically .. when you have disable replication notification for a connection object in a normal situation connection object does not have a Reps-To attribute. Now note that the RepFrom and RepTo attribute are the actual links below a connection object.. &lt;/P&gt;
&lt;P&gt;When the KCC is switched on again all values will be overwritten and Reps-From and Reps-To are overwritten..since&amp;nbsp;a new&amp;nbsp;connection object is created.. this new&amp;nbsp;connection object created by the KCC&amp;nbsp;uses the &lt;EM&gt;fromServer:CN=NTDS,SERVER&lt;/EM&gt;... attribute for the connection object..&amp;nbsp;Notification is switched on or off through the options of the connection object. (in BITS format.. ) not on the connection link.. &lt;/P&gt;
&lt;P&gt;The Repadmin /add and /AddrepsTo is usually used during crisis situations or when trying to remove lingering objects.. &lt;/P&gt;
&lt;P&gt;More experthelp can be found using repadmin /experthelp&lt;/P&gt;
&lt;P&gt;More info: ? &lt;A href="http://technet.microsoft.com/en-us/library/cc811549.aspx"&gt;http://technet.microsoft.com/en-us/library/cc811549.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&amp;lt;more information will follow shortly&amp;gt;&amp;gt;&lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11685" width="1" height="1"&gt;</description></item><item><title>Deleted DN's in attribute fields</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/08/22/11637.aspx</link><pubDate>Fri, 22 Aug 2008 13:27:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11637</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11637.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11637</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11637.aspx</wfw:comment><description>&lt;P&gt;&lt;FONT face=Arial&gt;Let's say&amp;nbsp;an object in AD has an attribute that is a&amp;nbsp;reference to another object based on DN The targeted object is deleted.. and the attribute field changes to the deleted objects CN like: &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;FONT face=Arial&gt;CN=name\0ADEL:ff920d6f-d823-4fff-9448-b645bd40d5e2,CN=Deleted Objects,DC=child,DC=ROOTDOMAIN,DC=LOCAL&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;FONT face=Arial&gt;Now when we try to clone that object to create a new object (for example user copy) the AD U&amp;amp;C MMC could throw an exception saying: &lt;STRONG&gt;The naming context could not be found. &lt;/STRONG&gt;This is due to the fact that an LDAP client cannot retrieve the Deleted Objects CN without the proper LDAP control 1.2.840.113556.1.4.417 set. Thus the naming context (and therefore the object) cannot be found and copied to the new object and the copy fails. (at least on 2003DC's) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11637" width="1" height="1"&gt;</description></item><item><title>Microsoft Certified Master: Windows 2008 - Directory</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/08/21/11628.aspx</link><pubDate>Thu, 21 Aug 2008 14:46:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11628</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11628.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11628</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11628.aspx</wfw:comment><description>&lt;P&gt;!PASSED!&lt;/P&gt;As one of the first (now 26 worldwide), I can now call myself an MCM:Windows 2008-Directory!.. Congrats to all others! 
&lt;P&gt;&lt;EM&gt;The Microsoft Certified Master: Windows Server 2008, Active Directory program provides the most in-depth and comprehensive training that is available today for the latest version of Windows Server 2008 with a focus on Active Directory. This three-week training program is delivered by recognized experts from Microsoft and Microsoft Partner organizations.&lt;/EM&gt; &lt;/P&gt;
&lt;P&gt;&lt;IMG class=nearGraphic title="Microsoft Certified Master" height=75 alt="Microsoft Certified Master" src="http://img.microsoft.com/learning/images/cert-master.jpg" width=130 align=left border=0&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11628" width="1" height="1"&gt;</description></item><item><title>Trial Editions :(</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/08/19/11622.aspx</link><pubDate>Tue, 19 Aug 2008 18:51:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11622</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11622.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11622</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11622.aspx</wfw:comment><description>&lt;P&gt;Don't you just love them.. &lt;/P&gt;
&lt;P&gt;anyone knows how to reset the grace period (and let me finish my Kerberos investigation) let me know.....&lt;/P&gt;
&lt;P&gt;(windows 2003 SP2)&lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11622" width="1" height="1"&gt;</description></item><item><title>Kerberos part II</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/08/15/11611.aspx</link><pubDate>Fri, 15 Aug 2008 10:48:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11611</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11611.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11611</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11611.aspx</wfw:comment><description>&lt;P&gt;Lets have a look at the debug log in unconstraint delegation: &lt;/P&gt;
&lt;P&gt;388.500&amp;gt; Kerb-Trace: KerbCreateTokenFromTicket for ROOTDOMAIN\Administrator, (null)&lt;BR&gt;388.500&amp;gt; Kerb-Trace: SpAcceptLsaModeContext called KerbMapContext ContextAttributes 0x5, 0&lt;BR&gt;388.468&amp;gt; Kerb-Bnd: KerbInsertBinding binding cache disabled&lt;BR&gt;388.468&amp;gt; Kerb-Bnd: Calling kdc 192.168.10.1 for realm ROOTDOMAIN.LOCAL&lt;BR&gt;388.468&amp;gt; KSupp-Trace: Calling KDC: 192.168.10.1&lt;BR&gt;388.468&amp;gt; Kerb-SPN: KerbInsertSpnCacheEntry spn cache disabled&lt;BR&gt;388.468&amp;gt; Kerb-Bnd: KerbInsertBinding binding cache disabled&lt;BR&gt;388.468&amp;gt; Kerb-Bnd: Calling kdc 192.168.10.1 for realm ROOTDOMAIN.LOCAL&lt;BR&gt;388.468&amp;gt; KSupp-Trace: Calling KDC: 192.168.10.1&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;and the constraint one:&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;384.472&amp;gt; Kerb-Trace: KerbCreateTokenFromTicket for ROOTDOMAIN\Administrator, (null)&lt;BR&gt;384.472&amp;gt; Kerb-LSess: KerbCreateLogonSessionFromTicket creating logon session for 0:0x29766, accepting 0:0x3e4, client &lt;A href="mailto:Administrator@ROOTDOMAIN.LOCAL"&gt;&lt;FONT color=#0000ff&gt;Administrator@ROOTDOMAIN.LOCAL&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;384.472&amp;gt; Kerb-Trace: SpAcceptLsaModeContext called KerbMapContext ContextAttributes 0x5, 0&lt;BR&gt;384.600&amp;gt; Kerb-Bnd: KerbInsertBinding binding cache disabled&lt;BR&gt;384.600&amp;gt; Kerb-Bnd: Calling kdc 192.168.10.1 for realm ROOTDOMAIN.LOCAL&lt;BR&gt;384.600&amp;gt; KSupp-Trace: Calling KDC: 192.168.10.1&lt;BR&gt;384.480&amp;gt; Kerb-Cred: Acquiring cred, S4U required&lt;BR&gt;384.600&amp;gt; Kerb-Warn: KerbGetTgsTicket failed to unpack KDC reply: 0x3c&lt;BR&gt;384.600&amp;gt; KSupp-Warning: KerbUnpackData failed to unpack typed data, trying error method data&lt;BR&gt;384.600&amp;gt; KSupp-Error: KerbUnpackErrorData received failure from kdc 0xd KLIN(0) NTSTATUS(0xc0000272)&lt;BR&gt;384.484&amp;gt; Kerb-SPN: Found in SPN Cache 00111770 384.484&amp;gt; Kerb-S4u: Trying S4UProxy for ls 0009E9F8&lt;BR&gt;384.600&amp;gt; Kerb-S4u: No match on S4UTarget&lt;BR&gt;384.600&amp;gt; Kerb-Warn: Failed S4Uproxy request c0000272(8) &lt;BR&gt;384.484&amp;gt; Kerb-Bnd: KerbInsertBinding binding cache disabled&lt;BR&gt;384.484&amp;gt; Kerb-Bnd: Calling kdc 192.168.10.1 for realm ROOTDOMAIN.LOCAL&lt;BR&gt;384.484&amp;gt; KSupp-Trace: Calling KDC: 192.168.10.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Now it is hard to find any link forthe error thrown.. but according to&amp;nbsp;&lt;A href="http://technet.microsoft.com/en-us/library/cc738673.aspx"&gt;http://technet.microsoft.com/en-us/library/cc738673.aspx&lt;/A&gt; it is 
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;0x3&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;KDC_ERR_BAD_PVNO&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Requested protocol version number not supported. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;Both machines are Windows 2003 SP2, but the domain controller is not SP2.. let's upgrade..&lt;/P&gt;
&lt;P&gt;no luck there, but the error has changed!&lt;/P&gt;
&lt;P&gt;472&amp;gt; Kerb-Trace: KerbCreateTokenFromTicket for ROOTDOMAIN\Administrator, (null)&lt;BR&gt;388.472&amp;gt; Kerb-LSess: KerbCreateLogonSessionFromTicket creating logon session for 0:0x11a81a, accepting 0:0x3e4, client &lt;A href="mailto:Administrator@ROOTDOMAIN.LOCAL"&gt;Administrator@ROOTDOMAIN.LOCAL&lt;/A&gt;&lt;BR&gt;388.472&amp;gt; Kerb-Trace: SpAcceptLsaModeContext called KerbMapContext ContextAttributes 0x5, 0&lt;BR&gt;388.572&amp;gt; Kerb-Warn: KerbGetTgtForService getting new TGT for account&lt;BR&gt;388.572&amp;gt; Kerb-LSess: KerbFindCommonPaEtype using current password of &lt;A href="mailto:sp01$@ROOTDOMAIN.LOCAL"&gt;sp01$@ROOTDOMAIN.LOCAL&lt;/A&gt;&lt;BR&gt;...&lt;/P&gt;
&lt;P&gt;388.572&amp;gt; Kerb-Warn: KerbGetTgsTicket failed to unpack KDC reply: 0x3c&lt;BR&gt;388.572&amp;gt; KSupp-Warning: KerbUnpackData failed to unpack typed data, trying error method data&lt;BR&gt;388.572&amp;gt; KSupp-Error: KerbUnpackErrorData received failure from kdc 0xd KLIN(0) NTSTATUS(0xc0000272)&lt;BR&gt;388.572&amp;gt; Kerb-S4u: No match on S4UTarget&lt;BR&gt;388.572&amp;gt; Kerb-Warn: Failed S4Uproxy request c0000272(8) &lt;BR&gt;388.508&amp;gt; Kerb-Cred: Acquiring cred, S4U required&lt;BR&gt;388.476&amp;gt; Kerb-S4u: Trying S4UProxy for ls 0009E9F8&lt;BR&gt;388.476&amp;gt; Kerb-Bnd: KerbInsertBinding binding cache disabled&lt;BR&gt;388.476&amp;gt; Kerb-Bnd: Calling kdc 192.168.10.1 for realm ROOTDOMAIN.LOCAL&lt;BR&gt;388.476&amp;gt; KSupp-Trace: Calling KDC: 192.168.10.1&lt;BR&gt;388.476&amp;gt; Kerb-SPN: KerbInsertSpnCacheEntry spn cache disabled&lt;BR&gt;388.476&amp;gt; Kerb-Warn: Trying to delegate but no forwardable TGT&lt;BR&gt;388.476&amp;gt; Kerb-Warn: KerbBuildGssChecksum failed to get delegation TGT: 0x8009030e&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;** Appareantly the server is not able to get a forwardable TGT.. MS sais:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;The Kerberos protocol includes a mechanism called delegation of authentication. When this mechanism is used, the client (the requesting service) delegates authentication to a second service by informing the KDC that the second service is authorized to act on behalf of a specified Kerberos security principal, such as a user that has an Active Directory directory service account. The second service can then delegate authentication to a third service.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;This is accomplished using a proxy TGT or a forwarded TGT.&lt;/STRONG&gt; When a proxy TGT is used, the requesting service obtains a TGT for the third service in the security context of a specific user and then passes the TGT to the second service, which uses it to request service tickets. In this case, the requesting service must know the name of the third service. &lt;STRONG&gt;When a forwarded TGT is used, the requesting service obtains a TGT that is marked forwardable for the second service in the security context of the user. The second service can use this TGT to request tickets for other services as needed.&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Only forwardable TGTs can be used for constrained delegation. A TGT can be marked forwardable only if the account under which the requesting service is running has the ADS_UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION control flag set.&lt;/STRONG&gt; For Forefront TMG, this is the Active Directory computer account of the Forefront TMG computer. This flag is automatically set when the account under which the requesting service is running is configured as trusted for Kerberos constrained delegation in Active Directory.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;In adsiedit the current controlflag is set to 4096 - 
&lt;TABLE class=table cellSpacing=1&gt;

&lt;TR&gt;
&lt;TD&gt;WORKSTATION_TRUST_ACCOUNT&lt;/TD&gt;
&lt;TD&gt;0x1000&lt;/TD&gt;
&lt;TD&gt;4096&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11611" width="1" height="1"&gt;</description></item><item><title>In a galaxy far and far away, we connect</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/08/15/11610.aspx</link><pubDate>Fri, 15 Aug 2008 08:36:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11610</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11610.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11610</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11610.aspx</wfw:comment><description>&lt;P&gt;In omy investigation towards kerberos constraint delegation I found a funny packet that needed further investigation.. it's a protocol called LTP-DEEPSPACE.. &lt;/P&gt;
&lt;P&gt;in my trace I saw a connection from one of the clients&lt;BR&gt;192.168.10.2&amp;nbsp;192.168.10.1&amp;nbsp;TCP&amp;nbsp;ltp-deepspace &amp;gt; kerberos [SYN] Seq=0 Win=65535 Len=0 MSS=1460&lt;/P&gt;
&lt;P&gt;followed by the ACK&lt;/P&gt;
&lt;P&gt;192.168.10.1&amp;nbsp;192.168.10.2&amp;nbsp;TCP&amp;nbsp;kerberos &amp;gt; ltp-deepspace [SYN, ACK] Seq=0 Ack=1 Win=16384 Len=0 MSS=1460&lt;/P&gt;
&lt;P&gt;Now why would a protocol connect to my Kerberos port.. Google offcourse gave the answer: &lt;A&gt;ftp://ftp.rfc-editor.org/in-notes/internet-drafts/draft-irtf-dtnrg-ltp-10.txt&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;"&lt;/P&gt;
&lt;P&gt;This document describes the Licklider Transmission Protocol (LTP),&lt;BR&gt;&amp;nbsp;&amp;nbsp; designed to provide retransmission-based reliability over links&lt;BR&gt;&amp;nbsp;&amp;nbsp; characterized by extremely long message round-trip times (RTTs)&lt;BR&gt;&amp;nbsp;&amp;nbsp; and/or frequent interruptions in connectivity.&amp;nbsp; Since communication&lt;BR&gt;&amp;nbsp;&amp;nbsp; across interplanetary space is the most prominent example of this&lt;BR&gt;&amp;nbsp;&amp;nbsp; sort of environment, &lt;STRONG&gt;LTP is principally aimed at supporting "long-&lt;BR&gt;&amp;nbsp;&amp;nbsp; haul" reliable transmission in interplanetary space, but it has&lt;BR&gt;&amp;nbsp;&amp;nbsp; applications in other environments as well.&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; LTP does Automatic Repeat reQuest (ARQ) of data transmissions by&lt;BR&gt;&amp;nbsp;&amp;nbsp; soliciting selective-acknowledgment reception reports.&amp;nbsp; It is&lt;BR&gt;&amp;nbsp;&amp;nbsp; stateful, and has no negotiation or handshakes.&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; In an Interplanetary Internet setting deploying the Bundle protocol&lt;BR&gt;&amp;nbsp;&amp;nbsp; that is being developed by the Delay Tolerant Networking Research&lt;BR&gt;&amp;nbsp;&amp;nbsp; Group, LTP is intended to serve as a reliable "convergence layer"&lt;BR&gt;&amp;nbsp;&amp;nbsp; protocol operating in pairwise fashion between adjacent&lt;BR&gt;&amp;nbsp;&amp;nbsp; Interplanetary Internet nodes that are in direct RF communication.&lt;BR&gt;&amp;nbsp;&amp;nbsp; In that operational scenario, and potentially in some other&lt;BR&gt;&amp;nbsp;&amp;nbsp; deployments of the Bundle Protocol, LTP runs directly over a data-&lt;BR&gt;&amp;nbsp;&amp;nbsp; link layer protocol; when this is the case, forward error correction&lt;BR&gt;&amp;nbsp;&amp;nbsp; coding and/or checksum mechanisms in the underlying data-link layer&lt;BR&gt;&amp;nbsp;&amp;nbsp; protocol must assure the integrity of the data passed between the&lt;BR&gt;&amp;nbsp;&amp;nbsp; communicating entities.&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; Since no mechanisms for flow control or congestion control are&lt;BR&gt;&amp;nbsp;&amp;nbsp; included in the design of LTP, this protocol is not intended or&lt;BR&gt;&amp;nbsp;&amp;nbsp; appropriate for ubiquitous deployment in the global Internet.&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; When LTP is run over UDP, it must only be used for software&lt;BR&gt;&amp;nbsp;&amp;nbsp; development or in private local area networks. When LTP is not run&lt;BR&gt;&amp;nbsp;&amp;nbsp; over UDP, it must be run directly over a protocol, (nominally a link-&lt;BR&gt;&amp;nbsp;&amp;nbsp; layer protocol), that meets the requirements specified in section 5.&lt;/P&gt;
&lt;P&gt;"&lt;/P&gt;
&lt;P&gt;Nice to know mankind is looking forward in expanding the boundaries of TCP/IP into space&lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11610" width="1" height="1"&gt;</description></item><item><title>Kerberos multiple hops!</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/08/08/11587.aspx</link><pubDate>Fri, 08 Aug 2008 10:08:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11587</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11587.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11587</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11587.aspx</wfw:comment><description>&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri&gt;You all remember the maximum 2 hops for Kerberos right.. well in Microsoft land it works a little different and it is possible to create a multiple tier Kerberos delegation structure. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri&gt;Basically we want the following to happen:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri&gt;Client-&amp;gt;IIS1-&amp;gt;IIS2-&amp;gt;IIS3-&amp;gt;IIS4 where all hops require Kerberos authentication&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri&gt;In this case, IIS1, IIS2 and IIS3 need to be trusted for delegation. In my test lab I’ve used (&lt;/FONT&gt;&lt;A href="http://support.microsoft.com/kb/314404"&gt;&lt;FONT face=Calibri&gt;http://support.microsoft.com/kb/314404&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;) for the setup.. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;Reach To IIS server on IIS1 &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;User Id = ROOTDOMAIN\AdministratorThe Negotiate method was used!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;The user was logged on using Kerberos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;Attempt to connect to http://IIS2.rootdomain.local/default.asp by using ServerXMLHTTP &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;Receiver Status Text: OK (200)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;Reach To IIS server on IIS2 &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;User Id = ROOTDOMAIN\AdministratorThe Negotiate method was used!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;The user was logged on using Kerberos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;Attempt to connect to http://IIS3.rootdomain.local/default.asp by using ServerXMLHTTP &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;Receiver Status Text: OK (200)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;Reach To IIS server on IIS3 &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;User Id = ROOTDOMAIN\AdministratorThe Negotiate method was used!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;The user was logged on using Kerberos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;Attempt to connect to http://IIS4.rootdomain.local/default.asp by using ServerXMLHTTP &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;Receiver Status Text: OK (200)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;Reach To IIS server on IIS4 &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;User Id = ROOTDOMAIN\AdministratorThe Negotiate method was used!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;The user was logged on using Kerberos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri&gt;So the log file shows you it all works!.. please keep the above information in&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;mind when designing security for your applications!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri&gt;(explanation: In Microsoft land, each trusted for delegation object requests tickets on behalf of the user instead of using the forwarded ticket from the user). If a trusted object requests a ticket for the next service which is also trusted for delegation the forwardable flag is not cleared, therefore the next hop can re-request tickets on behalf of the user for the next hop. )&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="/photos/parzival/picture11586.aspx" target=_blank&gt;&lt;/A&gt;&lt;IMG src="/photos/parzival/images/11586/original.aspx" border=0&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So if we look at the traffic on IIS2 (called SQL01 here and IIS3 is called IS02).. you see IIS2 server requesting a ticket on behalf of the Administrator (user account) for the IIS3 service (IS02.rootdomain.local)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="/photos/parzival/images/11588/original.aspx" border=0&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;*****************************************************************&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Constraint Delegation&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;So you want to set it up for constraint delegation.. users who's computers are not on the domain must be able to login to the same application.. that's where things go wrong!.. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="/photos/parzival/images/11593/original.aspx" border=0&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT size=2&gt;Reach To IIS server on SP01&lt;BR&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;EM&gt;&lt;FONT size=2&gt;User Id = ROOTDOMAIN\AdministratorThe Negotiate method was used!&lt;BR&gt;The user was logged on using Kerberos.&lt;BR&gt;Please do not refresh this page.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;EM&gt;&lt;FONT size=2&gt;Attempt to connect to &lt;/FONT&gt;&lt;/EM&gt;&lt;A href="http://sql01.rootdomain.local/default.asp"&gt;&lt;EM&gt;&lt;FONT size=2&gt;http://SQL01.rootdomain.local/default.asp&lt;/FONT&gt;&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;&lt;FONT size=2&gt; by using ServerXMLHTTP &lt;BR&gt;Receiver Status Text: OK (200)&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT size=2&gt;Reach To IIS server on SQL01 &lt;BR&gt;User Id = ROOTDOMAIN\AdministratorThe Negotiate method was used!&lt;BR&gt;The user was logged on using Kerberos.&lt;BR&gt;Please do not refresh this page.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;EM&gt;&lt;FONT size=2&gt;Attempt to connect to &lt;/FONT&gt;&lt;/EM&gt;&lt;A href="http://is02.rootdomain.local/default.asp"&gt;&lt;EM&gt;&lt;FONT size=2&gt;http://IS02.rootdomain.local/default.asp&lt;/FONT&gt;&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;&lt;FONT size=2&gt; by using ServerXMLHTTP &lt;BR&gt;Receiver Status Text: Unauthorized (401)&lt;BR&gt;You are not authorized to view this page&lt;BR&gt;&lt;/FONT&gt;&lt;/EM&gt;&amp;nbsp;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;looks like we can only have two hops.. lets have a look .....&lt;/P&gt;
&lt;P&gt;We set the First IIS server to use Constraint Delegation (all services) towards the 2nd IIS server. Again, we take a look at the network.. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="/photos/parzival/images/11590/original.aspx" border=0&gt;&lt;/P&gt;
&lt;P&gt;In the network layer we see the challenge from the IIS webserver (highlighted).. and then NO Kerberos request for a new ticket on behalf of the user.. the servers reconnects to the IIS server and (192.168.10.3) cannot provide it credentials for Kerberos. The&amp;nbsp;webserver switches over to NLTM (Challenge). The server can only answer to the NTLM challenge with the server's key (or Service Account) and therefore breaking the delegation model. (access denied message)&lt;/P&gt;
&lt;P&gt;So the question lies in what the first IIS webserver does when requesting a ticket on behalf of the user in Constraint and unConstraint delegation. Again we switch over to the network capture.. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="/photos/parzival/images/11591/original.aspx" border=0&gt;&lt;/P&gt;
&lt;P&gt;In a non constraint delegation model, the 1st webserver requests a ticket with options: 4081000 (forwardable, Renewable, Canonicalize) for the 2nd webserver (url sql01.rootdomain.local). &lt;/P&gt;
&lt;P&gt;Now as we enable constraint delegation (allowing users to logon with another authentication protocol) we see the difference:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="/photos/parzival/images/11592/original.aspx" border=0&gt;&lt;/P&gt;
&lt;P&gt;The ticket itself has the Contrained Delegation flag set! and that should probably be why this ticket cannot be used to get another ticket on behalf of the user on the 2nd webserver. &lt;/P&gt;
&lt;P&gt;* The quest continues.. &lt;/P&gt;
&lt;P&gt;I did another packetsniff let's take a look at what happens in order:&lt;/P&gt;
&lt;P&gt;The client connects to the webserver and retrieves an unauthorized:&lt;BR&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&amp;nbsp;-7172.250000&amp;nbsp;192.168.10.2&amp;nbsp;192.168.10.14&amp;nbsp;HTTP&amp;nbsp;HTTP/1.1 401 Unauthorized&amp;nbsp; (text/html)&lt;/EM&gt;&lt;BR&gt;The client requests is Ticket Granting Ticket&lt;BR&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&amp;nbsp;-7172.203125&amp;nbsp;192.168.10.14&amp;nbsp;192.168.10.1&amp;nbsp;KRB5&amp;nbsp;AS-REQ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KDCOptions: 40810010 (Forwardable, Renewable, Canonicalize, Renewable OK)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Client Name (Principal): Administrator&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Realm: ROOTDOMAIN.LOCAL&lt;BR&gt;The client receives it's AS&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&amp;nbsp;-7172.171875&amp;nbsp;192.168.10.1&amp;nbsp;192.168.10.14&amp;nbsp;KRB5&amp;nbsp;AS-REP&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Then the client wants it's TGS (service ticket)&lt;BR&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&amp;nbsp;-7172.156250&amp;nbsp;192.168.10.14&amp;nbsp;192.168.10.1&amp;nbsp;KRB5&amp;nbsp;TGS-REQ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KDCOptions: 40800000 (Forwardable, Renewable)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Server Name (Service and Instance): HTTP/sp01.rootdomain.local&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: HTTP&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: sp01.rootdomain.local&lt;BR&gt;The client receives the ticket&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&amp;nbsp;-7172.140625&amp;nbsp;192.168.10.1&amp;nbsp;192.168.10.14&amp;nbsp;KRB5&amp;nbsp;TGS-REP&lt;BR&gt;And re-connect to the webserver with authorization&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&amp;nbsp;-7172.109375&amp;nbsp;192.168.10.14&amp;nbsp;192.168.10.2&amp;nbsp;HTTP&amp;nbsp;GET / HTTP/1.1&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[truncated] Authorization: Negotiate IFCQYGKwYBBQUCoIIE/TCCBPmgJDAiBgkqhkiC&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Let's take it from there and switch to the SP01.rootdomain.local server&lt;BR&gt;The first thing we see is our LDP_DEEPSPACE check (see other posting)&lt;BR&gt;19&amp;nbsp;-7193.078125&amp;nbsp;192.168.10.2&amp;nbsp;192.168.10.1&amp;nbsp;TCP&amp;nbsp;ltp-deepspace &amp;gt; kerberos [SYN] Seq=0 Win=65535 Len=0 MSS=1460&lt;/P&gt;
&lt;P&gt;Although we gave the kerberos ticket for the user already, the next thing we see is another request:&lt;BR&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&amp;nbsp;-7193.062500&amp;nbsp;192.168.10.2&amp;nbsp;192.168.10.1&amp;nbsp;KRB5&amp;nbsp;TGS-REQ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KDCOptions: 40830000 (Forwardable, Renewable, Constrained Delegation, Canonicalize)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Server Name (Service and Host): host/sp01.rootdomain.local&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name-type: Service and Host (3)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: host&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: sp01.rootdomain.local&lt;/EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note that 192.168.10.2 IS the host itself and that the host is requesting a ticket for it'self!, lets compare that to the unconstraint request in another packet sniff: The first packet we see there is the request for the next hop, so the client itself is NOT requesting a host ticket when unconstraint delegation is used:&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&amp;nbsp;-7198.734375&amp;nbsp;192.168.10.2&amp;nbsp;192.168.10.1&amp;nbsp;KRB5&amp;nbsp;TGS-REQ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KDCOptions: 40810000 (Forwardable, Renewable, Canonicalize)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Server Name (Service and Instance): HTTP/sql01.rootdomain.local&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name-type: Service and Instance (2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: HTTP&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: sql01.rootdomain.local&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;Followed by another request immediately:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&amp;nbsp;-7198.734375&amp;nbsp;192.168.10.2&amp;nbsp;192.168.10.1&amp;nbsp;KRB5&amp;nbsp;TGS-REQ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KDCOptions: 60810010 (Forwardable, Forwarded, Renewable, Canonicalize, Renewable OK)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Server Name (Service and Instance): krbtgt/ROOTDOMAIN.LOCAL&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name-type: Service and Instance (2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: krbtgt&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: ROOTDOMAIN.LOCAL&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;Back to the original constraint delegation packet.. after requesting a ticket for the host, an error is thrown back:&amp;nbsp;&lt;BR&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&amp;nbsp;-7193.031250&amp;nbsp;192.168.10.1&amp;nbsp;192.168.10.2&amp;nbsp;KRB5&amp;nbsp;KRB Error: KRB5KDC_ERR_BADOPTION NT Status: STATUS_NO_MATCH&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;error_code: KRB5KDC_ERR_BADOPTION (13)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Server Name (Service and Host): host/sp01.rootdomain.local&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name-type: Service and Host (3)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: host&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: sp01.rootdomain.local&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e-data PA-PW-SALT&lt;BR&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;Value: 720200C00000000003000000&lt;BR&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;NT Status: STATUS_NO_MATCH (0xc0000272)&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;Appearantly we are not receiving the kerberos ticket,&amp;nbsp;and there is no retry.. the next packet is the next hop request:&lt;BR&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&amp;nbsp;-7192.640625&amp;nbsp;192.168.10.2&amp;nbsp;192.168.10.3&amp;nbsp;HTTP&amp;nbsp;GET /default.asp HTTP/1.1 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&amp;nbsp;-7192.062500&amp;nbsp;192.168.10.3&amp;nbsp;192.168.10.2&amp;nbsp;HTTP&amp;nbsp;HTTP/1.1 401 Unauthorized&amp;nbsp; (text/html)&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;And the request for the next hop ticket:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;EM&gt;&amp;nbsp;43&amp;nbsp;-7192.046875&amp;nbsp;192.168.10.2&amp;nbsp;192.168.10.1&amp;nbsp;KRB5&amp;nbsp;TGS-REQ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KDCOptions: 40830000 (Forwardable, Renewable, Constrained Delegation, Canonicalize)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Server Name (Service and Instance): HTTP/sql01.rootdomain.local&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name-type: Service and Instance (2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: HTTP&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name: sql01.rootdomain.local&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;The&amp;nbsp;SQL01&amp;nbsp;hop tries the same request for the host ticket but receives the same error:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&lt;EM&gt;34&amp;nbsp;-7186.406250&amp;nbsp;192.168.10.1&amp;nbsp;192.168.10.3&amp;nbsp;KRB5&amp;nbsp;KRB Error: KRB5KDC_ERR_BADOPTION NT Status: STATUS_NO_MATCH&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;Now lets investigate the ERRor..&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;I've enabled kerberos error logging (debug level) and found:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;(&lt;/P&gt;
&lt;P&gt;&lt;B&gt;How to turn on debug output&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;There are a number of ways to view the debug output from Kerberos. The easiest way is by logging the debug output to a file and then opening this file in Notepad.&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=numberedList cellSpacing=0 cellPadding=0&gt;

&lt;TR&gt;
&lt;TD class=listNumber&gt;
&lt;P&gt;1.&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Click &lt;B&gt;Start&lt;/B&gt;, click &lt;B&gt;Run&lt;/B&gt;, type &lt;B&gt;regedit.exe,&lt;/B&gt; and then press ENTER.&lt;/P&gt;
&lt;P&gt;&lt;IMG height=10 alt="" src="http://img.microsoft.com/library/media/1033/technet/images/important.gif" width=10 border=0&gt;&amp;nbsp;&amp;nbsp;Caution&lt;BR&gt;Incorrectly editing the registry might severely damage your system. Before making changes to the registry, you should back up any valued data on the computer.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listNumber&gt;
&lt;P&gt;2.&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Open the following registry key:&lt;/P&gt;
&lt;P&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listNumber&gt;
&lt;P&gt;3.&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Create the following entry:&lt;/P&gt;
&lt;P&gt;Value: KerbDebugLevel&lt;/P&gt;
&lt;P&gt;Type: DWORD&lt;/P&gt;
&lt;P&gt;Data: c0000043 (this value will print the most standard set of debug messages. Try it first. If you still want to see more output, set it to ffffffff).&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listNumber&gt;
&lt;P&gt;4.&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Create the following entry in the same registry location:&lt;/P&gt;
&lt;P&gt;Value: LogToFile&lt;/P&gt;
&lt;P&gt;Type: DWORD&lt;/P&gt;
&lt;P&gt;Data: 1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listNumber&gt;
&lt;P&gt;5.&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Reproduce the error&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listNumber&gt;
&lt;P&gt;6.&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Open the file lsass.log, located in the System32 directory of your Windows folder. You can find the debug output inside this file.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;384.488&amp;gt; Kerb-Trace: KerbCreateTokenFromTicket for ROOTDOMAIN\Administrator, (null)&lt;BR&gt;384.488&amp;gt; Kerb-Trace: SpAcceptLsaModeContext called KerbMapContext ContextAttributes 0x5, 0&lt;BR&gt;384.500&amp;gt; Kerb-SPN: Found in SPN Cache 00111770 384.500&amp;gt; Kerb-Bnd: KerbInsertBinding binding cache disabled&lt;BR&gt;384.500&amp;gt; Kerb-Bnd: Calling kdc 192.168.10.1 for realm ROOTDOMAIN.LOCAL&lt;BR&gt;384.500&amp;gt; KSupp-Trace: Calling KDC: 192.168.10.1&lt;BR&gt;384.472&amp;gt; Kerb-Trace: KerbCreateTokenFromTicket for ROOTDOMAIN\Administrator, (null)&lt;BR&gt;384.472&amp;gt; Kerb-LSess: KerbCreateLogonSessionFromTicket creating logon session for 0:0x29766, accepting 0:0x3e4, client &lt;A href="mailto:Administrator@ROOTDOMAIN.LOCAL"&gt;Administrator@ROOTDOMAIN.LOCAL&lt;/A&gt;&lt;BR&gt;384.472&amp;gt; Kerb-Trace: SpAcceptLsaModeContext called KerbMapContext ContextAttributes 0x5, 0&lt;BR&gt;384.600&amp;gt; Kerb-Bnd: KerbInsertBinding binding cache disabled&lt;BR&gt;384.600&amp;gt; Kerb-Bnd: Calling kdc 192.168.10.1 for realm ROOTDOMAIN.LOCAL&lt;BR&gt;384.600&amp;gt; KSupp-Trace: Calling KDC: 192.168.10.1&lt;BR&gt;384.480&amp;gt; Kerb-Cred: Acquiring cred, S4U required&lt;BR&gt;384.600&amp;gt; Kerb-Warn: KerbGetTgsTicket failed to unpack KDC reply: 0x3c&lt;BR&gt;384.600&amp;gt; KSupp-Warning: KerbUnpackData failed to unpack typed data, trying error method data&lt;BR&gt;384.600&amp;gt; KSupp-Error: KerbUnpackErrorData received failure from kdc 0xd KLIN(0) NTSTATUS(0xc0000272)&lt;BR&gt;384.484&amp;gt; Kerb-SPN: Found in SPN Cache 00111770 384.484&amp;gt; Kerb-S4u: Trying S4UProxy for ls 0009E9F8&lt;BR&gt;384.600&amp;gt; Kerb-S4u: No match on S4UTarget&lt;BR&gt;384.600&amp;gt; Kerb-Warn: Failed S4Uproxy request c0000272(8) &lt;BR&gt;384.484&amp;gt; Kerb-Bnd: KerbInsertBinding binding cache disabled&lt;BR&gt;384.484&amp;gt; Kerb-Bnd: Calling kdc 192.168.10.1 for realm ROOTDOMAIN.LOCAL&lt;BR&gt;384.484&amp;gt; KSupp-Trace: Calling KDC: 192.168.10.1&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;So the request for a ticket on behalf of the client fails, therefore the next hop SQL01 can still be reached by the client's initial ticket, however that ticket is limited to only 2 hops. This is also seen on the client (XP) side when requesting the active tickets: &lt;/P&gt;
&lt;P&gt;Cached Tickets: (2)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; Server: &lt;A href="mailto:krbtgt/ROOTDOMAIN.LOCAL@ROOTDOMAIN.LOCAL"&gt;krbtgt/ROOTDOMAIN.LOCAL@ROOTDOMAIN.LOCAL&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Time: 8/15/2008 21:07:02&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Renew Time: 8/22/2008 11:07:02&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; Server: &lt;A href="mailto:HTTP/sp01.rootdomain.local@ROOTDOMAIN.LOCAL"&gt;HTTP/sp01.rootdomain.local@ROOTDOMAIN.LOCAL&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Time: 8/15/2008 21:07:02&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Renew Time: 8/22/2008 11:07:02&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;So after the 2nd hop (SQL) the initial ticket is not valid anymore and cannot be forwarded to the next hop. Access Denied is the result.. &lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11587" width="1" height="1"&gt;</description></item><item><title>Kerberos &amp;amp; PAC validation</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/07/14/11457.aspx</link><pubDate>Mon, 14 Jul 2008 23:40:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11457</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11457.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11457</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11457.aspx</wfw:comment><description>&lt;DIV&gt;&lt;FONT face=Tahoma color=#000000 size=2&gt;&lt;A href="http://support.microsoft.com/kb/906736"&gt;http://support.microsoft.com/kb/906736&lt;/A&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=tahoma size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=tahoma size=2&gt;basically, all Kerberos tickets in windows have a PAC (that holds all the groups of the identity). If the resource that is accessed is NOT running under system account (but user/service), the resource will issue a verification of the PAC at the nearest domain controller. That DC will verify the PAC load and will give the green light. &lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=tahoma size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=tahoma size=2&gt;So in real world:&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=tahoma size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=tahoma size=2&gt;Say you have a resource, a dc and a client. The clients accesses the resource that is running under a service account, the client retrieves the Kerberos ticket for the resource (if SPN's are registered etc etc) and the client can access. (the resource will get the PAC load, give it to the DC etc). Now the kerberos ticket the client got will be valid for 10 hours offcourse, but lets say the connection to the resource is broken (user closes application or something) and the DC goes down.. now even if the user reconnects to the resource within that 10 hour limit, he will NOT gain access to the resource since the PAC validation will fail! The KB talks about the resolution for that. &lt;/FONT&gt;&lt;/DIV&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11457" width="1" height="1"&gt;</description></item><item><title>Preparing for the visit to MS</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/06/25/11385.aspx</link><pubDate>Wed, 25 Jun 2008 07:18:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11385</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11385.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11385</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11385.aspx</wfw:comment><description>&lt;P&gt;Hi&lt;/P&gt;
&lt;P&gt;The time has come, I get to go to Redmond!&amp;nbsp;I will be attending the new &lt;A href="http://www.microsoft.com/learning/mcp/master/products/default.mspx#ELF"&gt;Windows 2008 Master program&lt;/A&gt;. .. &lt;/P&gt;
&lt;P&gt;No holiday trip though, the course runs everyday of the week (including weekends) starting at 8AM with just one day off (probably to catch some required sleep and do homework). &lt;/P&gt;
&lt;P&gt;So probably no sleep, lots of new things and hopefully the right to carry the new Master logo. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;The Microsoft Certified Master: Windows Server 2008, Active Directory program provides the most in-depth and comprehensive training that is available today for the latest version of Windows Server 2008 with a focus on Active Directory. This three-week training program is delivered by recognized experts from Microsoft and Microsoft Partner organizations.&lt;/EM&gt; &lt;/P&gt;
&lt;P&gt;&lt;IMG class=nearGraphic title="Microsoft Certified Master" height=75 alt="Microsoft Certified Master" src="http://img.microsoft.com/learning/images/cert-master.jpg" width=130 align=left border=0&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;More information and offcourse if I made it to the top will follow!&lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11385" width="1" height="1"&gt;</description><category domain="http://blog.avanadeadvisor.com/blogs/parzival/archive/category/1335.aspx">Other</category></item><item><title>How to authenticate</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/06/24/11379.aspx</link><pubDate>Tue, 24 Jun 2008 14:15:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11379</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11379.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11379</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11379.aspx</wfw:comment><description>&lt;P&gt;So the problem:&lt;/P&gt;
&lt;P&gt;All mailboxes of the users are migrated to a central Exchange server, comming from various Exchange 5.5/2003/2003 mailservers (contact me if you want to know how :) ) . and mailboxes where cloned.. now the client needs to be pointed to the new exchange server else Outlook will not work. The challenge, how do you change your mapi profile. &lt;/P&gt;
&lt;P&gt;We had 4 scenario's&lt;/P&gt;
&lt;P&gt;1: The domain is NT4 no trust&amp;nbsp;or no domain at all!&lt;BR&gt;2: The domain the user is in, has a trust with the Exchange domain&lt;BR&gt;3 The domain the user is in is a Windows 2000/2003/2008 domain no trust&lt;BR&gt;4: The user is in the domain&lt;/P&gt;
&lt;P&gt;I've created a script that takes into account these 4 different options and uses them to determine the actual authentication path. To migrate the MAPI profile itself we used the program EXPROFRE.exe. &lt;/P&gt;
&lt;P&gt;ExprofRe has to be called like: ExprofRe.exe /logfile=&amp;nbsp; /targetGc=&lt;/P&gt;
&lt;P&gt;Problem is, the authentication to the targetGC..&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1: When there is no trust and the source domain is NT4 or a standalone machine, we use NTLM passthrough authentication. Inside the script we create a new local user, with the same username and password as a user in the target domain. To add this user (while a regular user is logged in) we do a runas:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;FONT size=1&gt;Sub CreateProfmigAccount()&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;ExtDiag " Running in NT migration mode, user account must exist"&lt;BR&gt;&amp;nbsp;strWindir = WshShell.ExpandEnvironmentStrings("%Windir%")&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;On Error Resume Next &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;Set objUser = GetObject("WinNT://" &amp;amp; gstrClient &amp;amp; "/" &amp;amp; strMigUser)&lt;BR&gt;&amp;nbsp;If err=0 Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;Out " Account already exists."&lt;BR&gt;&amp;nbsp;&amp;nbsp;Exit Sub&lt;BR&gt;&amp;nbsp;Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;Set objUser = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;err.clear&lt;BR&gt;&amp;nbsp;End If&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;Diag " Admin account : " &amp;amp; strLocalAdmin&lt;BR&gt;&amp;nbsp;Diag " Account to create : " &amp;amp; strMigUser&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;Call MigrationAccountCheck&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;strProg = "CMD /C NET USER " &amp;amp; strMigUser &amp;amp; " " &amp;amp; Unscramble(strMigPass) &amp;amp; " /ADD"&lt;BR&gt;&amp;nbsp;strCmd = "runas /env /user:" &amp;amp; Unscramble(strLocalAdmin) &amp;amp; " """ &amp;amp; strProg &amp;amp; """"&lt;BR&gt;&amp;nbsp;ExtDiag strCmd&lt;BR&gt;&amp;nbsp;rc=WshShell.Run(strCmd,2,False)&lt;BR&gt;&amp;nbsp;strWindowTitle = strWindir &amp;amp; "\System32\runas.exe"&lt;BR&gt;&amp;nbsp;ExtDiag strWindowTitle&lt;BR&gt;&amp;nbsp;bolResult = False&lt;BR&gt;&amp;nbsp;bolResult = WshShell.AppActivate(strWindowTitle) &lt;BR&gt;&amp;nbsp;while bolResult = False&lt;BR&gt;&amp;nbsp;&amp;nbsp;StdOut.WriteLine " Focus Failed, retrying."&lt;BR&gt;&amp;nbsp;&amp;nbsp;WScript.Sleep 50&lt;BR&gt;&amp;nbsp;&amp;nbsp;bolResult = WshShell.AppActivate(strWindowTitle) &lt;BR&gt;&amp;nbsp;Wend&lt;BR&gt;&amp;nbsp;StdOut.WriteLine " Focus succeeded."&lt;BR&gt;&amp;nbsp;strLocalAdminPass2=Unscramble(strLocalAdminPass)&lt;BR&gt;&amp;nbsp;WshShell.SendKeys(strLocalAdminPass2 &amp;amp; "~")&lt;BR&gt;&amp;nbsp;wscript.sleep 1000&lt;BR&gt;&amp;nbsp;bolCreated = false&lt;BR&gt;&amp;nbsp;Retry = 0&lt;BR&gt;&amp;nbsp;Do While bolCreated = False And Retry &amp;lt; 10&lt;BR&gt;&amp;nbsp;&amp;nbsp;WScript.Sleep 1000&lt;BR&gt;&amp;nbsp;&amp;nbsp;Set objUser = GetObject("WinNT://" &amp;amp; gstrClient &amp;amp; "/" &amp;amp;&amp;nbsp; strMigUser)&lt;BR&gt;&amp;nbsp;&amp;nbsp;If err=0 Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Diag " Account created."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit Sub&lt;BR&gt;&amp;nbsp;&amp;nbsp;Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set objUser = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;retry = retry + 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Diag "Did not find user, rechecking (" &amp;amp; tetry &amp;amp; ")"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;err.clear&lt;BR&gt;&amp;nbsp;&amp;nbsp;End If&lt;BR&gt;&amp;nbsp;Loop&lt;BR&gt;&amp;nbsp;&lt;BR&gt;End Sub&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After the local user is created we do roughly the same thing, kicking off the exprofRe with a /netonly option and with the newly created user. Because of the /netonly the GC will be reached with an account that has the same username/password as an account in the target domain. Offcourse the accounts is also deleted afterwards. &lt;/P&gt;
&lt;P&gt;2: When there is no trust between the domains, we can use UPN Suffixes. Add a new UPN suffix to the target domain (migrations.local for example). Create a new user on the target domain (&lt;A href="mailto:GC@migrations.local"&gt;GC@migrations.local&lt;/A&gt;) and create the exact same on the Windows 2000/2003/2008 domain of the source. &lt;/P&gt;
&lt;P&gt;On the client side we can now do a runas /netonly /user:GC@migrations.local Exprof....blabla&lt;/P&gt;
&lt;P&gt;3: When there is a trust, just use runas /netonly /user:&amp;lt;targetdomain&amp;gt;\username Exprof blabal&lt;/P&gt;
&lt;P&gt;4: just run Exprof&amp;nbsp; with the options&lt;/P&gt;
&lt;P&gt;So basically, there are numerous ways to script around authentication, use your imagination to see which one fits your requirements&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;FONT size=1&gt;Sub RunExprofRE(strValue2)&lt;BR&gt;&amp;nbsp;' *********ExProfRedirector runner************************&lt;BR&gt;&amp;nbsp;' Runs ExprofRe with MigUser credentials in RunAs /Netonly&lt;BR&gt;&amp;nbsp;'&amp;nbsp; First sets command ready and creates CMD object&lt;BR&gt;&amp;nbsp;'&amp;nbsp; then runs cmd window with command&lt;BR&gt;&amp;nbsp;'&amp;nbsp; finally enters the password using sendkey's&lt;BR&gt;&amp;nbsp;'*********************************************************&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;nbsp;Set StdOut = WScript.StdOut&lt;BR&gt;&amp;nbsp;strLogonServer = WshShell.ExpandEnvironmentStrings("%LogonServer%")&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;nbsp;If useRPC=0 Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;strProg = strExprofRe &amp;amp; " /logfile=" &amp;amp; strLogLocation &amp;amp;&amp;nbsp; "\" &amp;amp; WshNetwork.ComputerName &amp;amp; "-" &amp;amp; "%USERNAME%" &amp;amp; "-" &amp;amp; strValue2 &amp;amp; ".log /q /targetgc=" &amp;amp; strGCServer&lt;BR&gt;&amp;nbsp;&amp;nbsp;Diag strExprofRe &amp;amp; " /logfile="&amp;nbsp; &amp;amp; strLogLocation &amp;amp; "\" &amp;amp; WshNetwork.ComputerName &amp;amp; "-" &amp;amp; "%USERNAME%" &amp;amp; "-" &amp;amp; strValue2 &amp;amp; ".log /q /targetgc=" &amp;amp; strGCServer &lt;BR&gt;&amp;nbsp;Else&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;strProg = strExprofRe &amp;amp; " /logfile=" &amp;amp; Chr(34) &amp;amp; strLogLocation &amp;amp; "\" &amp;amp; WshNetwork.ComputerName &amp;amp; "-" &amp;amp; "%USERNAME%" &amp;amp; "-" &amp;amp; strValue2 &amp;amp; ".log /q /targetgc=" &amp;amp; strGCServer &amp;amp; " /p=" &amp;amp; strRpcPath&lt;BR&gt;&amp;nbsp;&amp;nbsp;Diag strExprofRe &amp;amp; " /logfile=" &amp;amp; strLogLocation &amp;amp; "\" &amp;amp; WshNetwork.ComputerName &amp;amp; "-" &amp;amp; "%USERNAME%" &amp;amp; "-" &amp;amp; strValue2 &amp;amp; ".log /q /targetgc=" &amp;amp; strGCServer &amp;amp; " /p=" &amp;amp; strRpcPath&lt;BR&gt;&amp;nbsp;End If&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;nbsp;If ScriptMode=4 Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;'Using only simple command&lt;BR&gt;&amp;nbsp;&amp;nbsp;Diag "Running Mode 4 of script, running:"&lt;BR&gt;&amp;nbsp;&amp;nbsp;Diag strProg&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;stdOut.WriteLine " Command initialized"&lt;BR&gt;&amp;nbsp;&amp;nbsp;rc=WshShell.Run(strProg,2,False)&lt;BR&gt;&amp;nbsp;Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;'Set command ready&lt;BR&gt;&amp;nbsp;&amp;nbsp;Select Case ScriptMode&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Case 1 'NT4&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;strCmd = "runas /env /netonly /user:" &amp;amp; gstrClient &amp;amp; "\" &amp;amp; strMigUser &amp;amp; " " &amp;amp; chr(34) &amp;amp; strProg &amp;amp; chr(34)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Diag "==&amp;gt; COMMAND THAT WILL BE RAN &amp;lt;===== NT4 Mode"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Diag strCmd&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Case 2 ' UPN migration&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;strCmd = "runas /env /netonly /user:" &amp;amp; strMigUser &amp;amp; " " &amp;amp; chr(34) &amp;amp; strProg &amp;amp; chr(34)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Diag "==&amp;gt; COMMAND THAT WILL BE RAN &amp;lt;===== UPN Mode"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Diag strCmd&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Case 3 ' Trusted Domain Migration&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;strCmd = "runas /env /netonly /user:" &amp;amp; strMigUser &amp;amp; " " &amp;amp; chr(34) &amp;amp; strProg &amp;amp; chr(34)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Diag "==&amp;gt; COMMAND THAT WILL BE RAN &amp;lt;===== TRUST Mode"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Diag strCmd&lt;BR&gt;&amp;nbsp;&amp;nbsp;End Select&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;Diag "Command initialized"&lt;BR&gt;&amp;nbsp;&amp;nbsp;rc=WshShell.Run(strCmd,2,False)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;strWindowTitle = strWindir &amp;amp; "\System32\runas.exe"&lt;BR&gt;&amp;nbsp;&amp;nbsp;'Wait for command window&lt;BR&gt;&amp;nbsp;&amp;nbsp;bolResult = False&lt;BR&gt;&amp;nbsp;&amp;nbsp;bolResult = WshShell.AppActivate(strWindowTitle)&lt;BR&gt;&amp;nbsp;&amp;nbsp;while bolResult = False&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExtDiag " Preparing Command for Execution"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wscript.sleep 50&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;bolResult = WshShell.AppActivate(strWindowTitle)&lt;BR&gt;&amp;nbsp;&amp;nbsp;Wend&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;stdOut.WriteLine " Executing command"&lt;BR&gt;&amp;nbsp;&amp;nbsp;'Sending Password&lt;BR&gt;&amp;nbsp;&amp;nbsp;strMigpass2=Unscramble(strMigPass)&lt;BR&gt;&amp;nbsp;&amp;nbsp;ExtDiag strMigPass&lt;BR&gt;&amp;nbsp;&amp;nbsp;WshShell.SendKeys(strMigpass2 &amp;amp; "~")&lt;BR&gt;&amp;nbsp;End If&lt;BR&gt;&amp;nbsp;&lt;BR&gt;End Sub&lt;/FONT&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11379" width="1" height="1"&gt;</description><category domain="http://blog.avanadeadvisor.com/blogs/parzival/archive/category/1334.aspx">Technical</category></item><item><title>Cops Spying </title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/05/19/11158.aspx</link><pubDate>Mon, 19 May 2008 09:24:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11158</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11158.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11158</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11158.aspx</wfw:comment><description>&lt;P&gt;a nice article in tweakers.net/Parool this morning.. &lt;/P&gt;
&lt;P&gt;appareantly the cops are hacking into computer systems these days (well did it offcourse for a long long LOOOONG time.. but they admitted it now :) ) .. to place the listning software they use backdoors of unpatched systems, "forgotten USB sticks" and e-mail attachements.. in hope the bad guys are actually dumber than they are.. &lt;/P&gt;
&lt;P&gt;Offcourse the cops are very enthousiastic about these "new" technologies since they can use your webcam to make pictures, use the mic to hear you talk etc.. and since Skype has a very good encryption this is the easiest way to intercept phone calls. and now for the actual news of this post.. the law does not permit, nor prohibit this method.. it's just not mentioned in the dutch law!.. so the cops say it is legal because of the lack of the law.. opposites claim it is illegal since it is not (yet) approved.. &lt;/P&gt;
&lt;P&gt;waiting for trial cases.. in the meantime of you are a bad guy.. PATCH your system.. do NOT plug in found USB drives and DO NOT open attachements send by persons you do not know/trust&amp;nbsp; aaah wait.. wasn't that the advice already since like 5 years for everyone!! &lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11158" width="1" height="1"&gt;</description></item><item><title>Next RID number</title><link>http://blog.avanadeadvisor.com/blogs/parzival/archive/2008/05/08/11104.aspx</link><pubDate>Thu, 08 May 2008 11:45:00 GMT</pubDate><guid isPermaLink="false">5e51d585-b788-4f7c-85ba-1877739ce145:11104</guid><dc:creator>Parzival</dc:creator><slash:comments>0</slash:comments><comments>http://blog.avanadeadvisor.com/blogs/parzival/comments/11104.aspx</comments><wfw:commentRss>http://blog.avanadeadvisor.com/blogs/parzival/commentrss.aspx?PostID=11104</wfw:commentRss><wfw:comment>http://blog.avanadeadvisor.com/blogs/rsscomments/11104.aspx</wfw:comment><description>&lt;P&gt;So let's say you want to know how many objects are created on a domain controller, you want to see shen it's receiving a new RID pool? &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;checkout the RID-SET&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Set ObjRid= GetObject ("&lt;A&gt;LDAP://CN=RID&lt;/A&gt; Set,CN=DC01,OU=Domain Controllers,DC=fabrikam,DC=com")&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;it lists all the properties that the LOCAL! DC uses to handout RID numbers.. if the rIDPreviousAllocationPool and rIDAllocationPool are the same, the server is still on it's initial RID pool.. but that can also be viewed by looking at the creation and modification date offcourse (whenCreated, whenChanged)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Putting: &lt;/P&gt;
&lt;P&gt;Set ObjRid= GetObject ("&lt;A&gt;LDAP://CN=RID&lt;/A&gt; Set,CN=NLDATADC04,OU=Domain Controllers,DC=intra,DC=NUMICO,DC=NET")&lt;BR&gt;intRidNumber=objrid.rIDNextRID&lt;BR&gt;wscript.echo "Rid Number:" &amp;amp; intRidNumber&lt;BR&gt;&lt;BR&gt;in a script will give you the next RID number.. but that is PER domain controller!&lt;/P&gt;
&lt;P&gt;(UPDATE: It is not the nextRID being given out.. it's the last used RID: MS docs are going to be updated)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The large number must be splitted, (for example in LDP Large Integer Converter). Low=number of given out SID's to all DC's (per 500) and high number is top of the RID pool.&lt;/P&gt;
&lt;P&gt;Just for fun :) &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blog.avanadeadvisor.com/aggbug.aspx?PostID=11104" width="1" height="1"&gt;</description><category domain="http://blog.avanadeadvisor.com/blogs/parzival/archive/category/1334.aspx">Technical</category><category domain="http://blog.avanadeadvisor.com/blogs/parzival/archive/category/1337.aspx">Active Directory</category></item></channel></rss>