At my job we get scanned frequently for vulnerabilities, and it is considered a vulnerability to have an account with a password that never expires. We have service accounts that we rely on being automated and we can't get ourselves into the business of changing service password on a reg basis; so what I have here is a way to trick the domain into believing an accounts password has not expired (we dubbed it tickling around here).
Basically how it works is an Active Directory domain has a property for expired passwords (last time pwd was set). When the property becomes a 0 that means the password has expired and must be changed. Upon changing the password this property gets set to the time of change. I'm not sure if this is documented, but if you set this property to -1 (if it is set to 0), it sets the current date/time as the last pwd changed time. If you set the property to -1 and the property is not 0, then nothing happens. So, we created an OU just for these service accounts and I made a script to do the rest. Here's my implementation.
#RequireAdmin #AutoIt3Wrapper_Change2CUI=y $objRootDSE = ObjGet("LDAP://RootDSE") $strDNSDomain = $objRootDSE.Get("DefaultNamingContext") $strContainer = "OU=Service.Accounts,OU=Domain Users," & $strDNSDomain $objOU = ObjGet("LDAP://" & $strContainer ) For $objUser in $objOU If $objUser.class = "user" Then $objUsr = ObjGet("LDAP://" & $objUser.name & "," & $strContainer) ConsoleWrite($objUsr.sAMAccountName & @CRLF) $objUsr.Put("PwdLastSet", 0) $objUsr.SetInfo $objUsr.Put("PwdLastSet", -1) $objUsr.SetInfo EndIf Next
Here's one that works for Local Accounts.
#AutoIt3Wrapper_Change2CUI=y $objOU = ObjGet("WinNT://" & @ComputerName & "/Administrators") For $objUser in $objOU.Members ConsoleWrite($objUser.name & @CRLF) $objUsr = ObjGet("WinNT://" & @ComputerName & "/" & $objUser.name) If IsObj($objUsr) Then $objUsr.Put("PasswordExpired",1) $objUsr.SetInfo $objUsr.Put("PasswordExpired",0) $objUsr.SetInfo EndIf Next
edit: added check for user in LDAP method.
Edited by spudw2k, 08 January 2014 - 01:43 PM.