However, you must write the 0 before you write the -1, that is the little
secret. Otherwise it doesn't do anything because it knows it is wrong...  

   joe


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Dean Wells
Sent: Friday, October 03, 2003 11:12 AM
To: AD mailing list (Send)

As Joe pointed out, the attribute is owned by the system (the SAM I believe)
and subsequently logic is in force when submitting values against it. In the
case of pwdLastSet the only permissible values are "0" and "-1". "0" forces
an immediate password expiry while "-1" (in my opinion should NOT be
permissible but is) manages to pass through the logic and triggers a rewrite
of the value to the FileTime representation of "now" effectively indicating
the password has just been set.

--
Dean Wells
MSEtechnology
* Tel: +1 (954) 501-4307
* Email: [EMAIL PROTECTED]
http://msetechnology.com



-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of
[EMAIL PROTECTED]
Sent: Friday, October 03, 2003 7:21 AM
To: [EMAIL PROTECTED]
Subject: RE: [ActiveDir] Password Policy - Challenge....


Does the -1 setting tell the system it "never expires"?

-----Original Message-----
From: Joe [mailto:[EMAIL PROTECTED]
Sent: Friday, October 03, 2003 4:24 AM
To: [EMAIL PROTECTED]
Subject: RE: [ActiveDir] Password Policy - Challenge....


See I knew the word challenge in the subject would bring you guys out... In
fact Challenge is the alternate spelling for MVP... :op   Speaking of which,
did you notice that the AD list has doubled?

Correct, setting pwdLastSet to 0 will cause it to flag as expired (user must
change password on next logon). If you clear that flag due to the
implementation of NOT keeping this info in userAccountControl but instead in
the attribute that specifies password age will cause that password age to
have to become something valid and since it can't be set back to what it was
previously (no history), the logical thing is to put it to 0 days old.

Keep in mind that that attribute can be set to two things by a programmer
without hacking LSASS... 0 or -1. 0 as Tony points out will force the user
to be expired right now. So what do you think setting it to -1 would do?

Here let me illustrate:

File: Test.vbs
----------------
set o=getobject("LDAP://cn=joe,cn=users,dc=joehome,dc=com";)
o.pwdlastset=0
o.setinfo
o.pwdlastset=-1
o.setinfo


Screen Cap of Run
-------------------
G:\temp>getuserinfo joehome\joe

GetUserInfo V02.07.00cpp Joe Richards ([EMAIL PROTECTED]) September 2003

User information for joehome\joe  (\\W2KASDC1)

User Name                  joe
Full Name
Description
User's Comment
User Type                  User
Enhanced Authority         AccOp
Account Type               Global
Workstations

Home Directory
User Profile
Logon Script
Flags
Account Expires            Never

Password age in days       40
Password last set          8/23/2003 9:37 AM
Bad PWD count              0

Num logons (this machine)  24
Last logon                 12/21/2002 9:42 AM
Logon hours                All


Global group memberships   *Domain Users
Local group memberships    *Account Operators      *Users


Completed.

G:\temp>test
Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft
Corporation 1996-2001. All rights reserved.


G:\temp>getuserinfo joehome\joe

GetUserInfo V02.07.00cpp Joe Richards ([EMAIL PROTECTED]) September 2003

User information for joehome\joe  (\\W2KASDC1)

User Name                  joe
Full Name
Description
User's Comment
User Type                  User
Enhanced Authority         AccOp
Account Type               Global
Workstations

Home Directory
User Profile
Logon Script
Flags
Account Expires            Never

Password age in days       0
Password last set          10/3/2003 7:03 AM
Bad PWD count              0

Num logons (this machine)  24
Last logon                 12/21/2002 9:42 AM
Logon hours                All


Global group memberships   *Domain Users
Local group memberships    *Account Operators      *Users


Completed.

G:\temp>



If you REM out the setting to -1 second piece, this is the account status:

G:\temp>getuserinfo joehome\joe

GetUserInfo V02.07.00cpp Joe Richards ([EMAIL PROTECTED]) September 2003

User information for joehome\joe  (\\W2KASDC1)

User Name                  joe
Full Name
Description
User's Comment
User Type                  User
Enhanced Authority         AccOp
Account Type               Global
Workstations

Home Directory
User Profile
Logon Script
Flags                      EXPIRED
Account Expires            Never

Password age in days       0
Password last set          10/3/2003 7:11 AM
Bad PWD count              0

Num logons (this machine)  24
Last logon                 12/21/2002 9:42 AM
Logon hours                All


Global group memberships   *Domain Users
Local group memberships    *Account Operators      *Users


Completed.

G:\temp>



So the answer to #3 below is to take the above small code snippet and wrap
it with a loop to go through all users you need cleared.

Now that I have said this, it is for edumacational purposes only. I DO NOT
recommend this as it is bypassing security and logically you do not want to
bypass security because there is a reason you have a password policy. That
reason being if someone is trying to hack you by brute force it takes X days
to get through a password of Y complexity that you have created. Your
password policy is supposed to determine a safe value for X for the Y that
you use. By passing the policy with either non-expiring accounts or this
(dare I say chicken clever :o) hack is not only bad, it is overall stupid to
do. That being said I would really hope people just keep this in their
noodle for the holy shit what am I going to do occurrances they have to
handle and not make this some regular thing that they do. I also think you
shouldn't use non-expiring ID's ever either but until MS and other vendors
step up to handling services properly, I think we will have a hard time
getting away from those.



So, was this an assist or was this a goal? Or possibly was this a major
penalty?


So I wonder if this will be plugged now? And if so how? I can't think of a
logical way to do it without maintaining a change log or history so the old
value can be ascertained and reverted to. Otherwise the accidental checks in
the gui will screw someone.


  joe




-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Tony Murray
Sent: Friday, October 03, 2003 4:44 AM
To: [EMAIL PROTECTED]

Deano (and others)

>From what I can see, setting the value of pwdLastSet to 0 has the 
>effect of
setting the "User must change password at next logon" flag.  In other words
I think the user would be prompted to change their password at next logon.

One thing I've noticed is that if you check the "User must change password
at next logon" flag using dsa.msc and then subsequently uncheck it, it has
the effect of assigning a new pwdLastSet value.  This would meet Travis's
requirements, but would be very slow for a large number of users.

Another way of doing this would be to set the value of pwdLastSet
programatically, but as this involves working with large integers (which
scare me for some reason), it may not be easy.

A different option which would work for a large number of users would be to
toggle the flag using "dsmod user" with the "-mustchpwd {yes | no}" option.
You would need to first set the flag using "yes" and then unset it using
"no".  If I have some time I'll test this and post the results.

Tony
---------- Original Message ----------------------------------
From: "Dean Wells" <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
Date:  Thu, 2 Oct 2003 22:24:30 -0700

Assign the pwdLastSet attribute a value of 0 per necessary user. At next
logon, user's password will remain intact and pwdLastSet will be assigned
current date and time (represented in FileTime) by the authenticating DC
effectively setting user's next password expiry date to (now + password
expiry policy days).

--
Dean Wells
MSEtechnology
* Tel: +1 (954) 501-4307
* Email: [EMAIL PROTECTED]
http://msetechnology.com



-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of Joe
Sent: Thursday, October 02, 2003 6:30 PM
To: [EMAIL PROTECTED]
Subject: RE: [ActiveDir] Password Policy - Challenge....


Yep passwords would expire. The policy is on the domain and it is a delta
value that is stored in the domain partition that handles this. It causes
the system to go back that delta value and then any accounts that haven't
been changed since that calculated time are expired.

Also this has to be done on the domain policy.

You have a couple of options.

1. Send a note to everyone and tell them to change their password.

2. Expire portions of the id's each day until you have gotten through all of
them. Then once all done, sey up the domain policy. See my expire tool on
www.joeware.net site as that tool was specifically written for this
scenario.

3. Get the passwords time reset. Todd's idea below will work but could take
a while if you have decent passwords and really isn't the elegant way to do
this.

Instead you can reset the password timestamp on the user accounts so that
they are all started out as if they had just been changed but really haven't
and then turn on your policy....

Now I was going to post the way to do this, but thought, you know, let's
test the group and see who else knows this little trick..... I will post an
answer within a day or if you need it quicker email me at [EMAIL PROTECTED]
and I will send a little script to pull it off.

   joe


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Myrick, Todd
(NIH/CIT)
Sent: Thursday, October 02, 2003 3:44 PM
To: '[EMAIL PROTECTED]'

You are correct, your company passwords would expire.

The solution I suggest is to crack all the passwords, then reset the
original password to each account to reset expiration.  Then implement the
Domain Account policy again.  Also remember that NTLM and Kerberos
authentications count double.  So if you client has problems with
authentication it will try Kerberos then NTLM and a single bad logon counts
twice.  So 10 bad password attempt really means 5 within the limited time
frame you set.

Todd

-----Original Message-----
From: Travis Riddle [mailto:[EMAIL PROTECTED]
Sent: Thursday, October 02, 2003 3:09 PM
To: [EMAIL PROTECTED]
Subject: [ActiveDir] Password Policy


I made a slight error when creating a group policy, and now need some advice
on how to fix it.  Hopefully some one will be kind enough to help out.  I
have a single domain with 2 sites.  I created a Default Policy for the
entire domain with fairly minimal settings (such as password policy, proxy
settings and a few IE settings).  Our manufacturing facility is our largest
site, and our corporate offices is significantly smaller, so instead of
applying one policy several times I set block policy inheritance for the
corporate OU (so they wouldn't get the Proxy and IE settings).  I then set
password settings on the separate corporate OU.  Well, I guess I didn't
realize at the time that you could only have one password policy for the
domain, so basically they haven't had to change their passwords for some
time now.

So here is the problem, I need to enable the password policy for corporate,
but if I do I think it will immediately expire their passwords (since they
are well over 90 days old).  Is my thinking wrong here, and is there a way
around this or am I going to have to call the corporate guys and have them
manually change their passwords?  Any ideas?

Your suggestions are much appreciated,

Thanks,

Travis
List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/
List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/

List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/



List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/

List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/

List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/
List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/


List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/

List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/

Reply via email to