关于AD帐户批量解锁

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

转载:关于AD帐户批量解锁,文件内容来敌人于网络AD帐户批量解锁一、测试环境:VMwareWorkstation7.1Server2003EnterpriseEditionSP1(简体中文版)AD帐户1000个(命令添加方法:for/l%iin(1,1,1000)donetusertest%iabc@123/add)(批处理添加方法:for/l%%iin(1,1,1000)donetusertest%%iabc@123/add),单百分号(%)变双百分号(%%)。二、帐户被锁的原因在AD里面都有着它的安全设置,比如说密码策略和帐户锁定策略而帐户锁定策略可以设置锁定的阈值和锁定时间,多少次无效登陆后,帐户将会被锁定多久。而帐户一旦被锁,则在被锁定的时间里很多网络资源无法访问,甚至让用户无法登陆电脑。有时候人为的原因,忘记密码或键盘出错致使密码输错超过阈值后导致用户被锁,这种人为的原因引起的用户被锁数量不多,可以手动处理。另一种由病毒引起的则可能在非常短的时间里导致多个用户被锁,手动一个个解锁,很麻烦,不知道谁被锁了,下一个被锁的帐户又是谁,要一个一个的找,并且可能刚解锁不久的帐户等你解锁到一半时又被锁了,处理起来很麻烦。你流了汗水也得不到别人的认同,甚至会被哪些锁了又锁的帐户极度埋怨。因此不得不把AD的安全阈值降低。三、解锁的方法有两种:1、AD用户管理界面里解锁。2、命令行解锁:netuserusername/active/active后面还有参数,yes或no,默认的参数是yes,完整的命令是:netuserusername/active:yes,注意它不但会解锁被锁的帐户,还会启用被禁用的用户,这就是后面要查找“已锁定”的原因。为了找到一种更快的方法解锁所有被锁的域用户,得先做一些测试。而AD里一个帐户有三种状态:被锁定、正常、被禁用。先把这三种信息都取下来,做一个对比。1、一个被锁的帐户信息(test10)2、正常的帐户信息(test99):3、被禁用的帐户:这些信息不同之处都在netuserusername命令后的“帐户启用”一行:被锁的帐户---已锁定正常的帐户---Yes被禁用的帐户--No因此只要使用netuserusername命令找出所有“已锁定”的帐户再对其解锁即可。如果一个一个用户名来输入,netuserusernamenetusertest1netusertest2netusertest3……netusertestN……netusertest1000如果帐户不多只有十来个或几十来个的时候还可以让手指头多锻炼锻炼,而当AD里面的帐户很多,几百甚至上千的时候这种方法显然是不可取的。这时应该使用for命令。(for的用法很多,可以for/?来参照使用)下面来一组逐层递进的假设:1、有规则的用户名:test1、test2、test3…testN…test1000第一个假设是有规律的用户名,因为用户都有test,后面的是随着数字的增加而增加可使用这条命令:for/l%iin(1,1,1000)donetusertest%i(命令行)for/l%%iin(1,1,1000)donetusertest%%i(批处理)2、没有规则的用户名,根据名字的拼音来编定:zhangsan、lishi、…wangwu…这里还是以test1到test1000来操作,这时不能再用for/l的参数了。而for里面有一个参数/f是对文件操作的,只要把这些用户名都放到一个文件里,就可以通过for命令来操作。而这些文件名可以使用netuser来获得。因用户较多,这里用netuser|more来查看。可以看到这些用户名就是除去前面的4行后(包括空白的),它分成三列,每列中间是多个空格的分隔符。For的命令非常强大,它还有另外的skip和tokens参数,可以使用这些参数把用户名都提取到一个user.txt的文件里。提取用户名的批处理(user.bat):Rem关闭回显@echooffRem跳过前面4行;以空格为分隔符,提取netuser命令获得的第一列、第二列、第三列用户名for/fskip=4tokens=1-3%%iin('netuser')do(rem第一列用户名列表输出到user.txt文件,(为文件追加,如果为则为文件覆盖)echo%%iuser.txtrem第二列用户名列表输出到user.txt文件echo%%juser.txtrem第三列用户名列表输出到user.txt文件echo%%kuser.txt)至此所有用户名输出到user.txt的文件中.用户名提取出来了,使用for/f文件操作参数.For/f%%iin(user.txt)donetuser%%i&&pause这时每个用户的信息均可显示出来了,并可以一个一个的查看,再回过头来,我们要找的是带有“已锁定”的信息的用户名。因为“已锁定”的信息对应着的就是被锁的帐户。因此先看被锁的用户名它的信息“已锁定”怎么获取。使用find命令:Netusertest10|find已锁定获得的信息是:“帐户启用已锁定”此时能再来确定帐户名离成功就不远了。可以这样子想,当它找到“已锁定”的信息时就显示用户名。@echooffrem如果找到“已锁定”则显示用户名。for/f%%iin(user.txt)do(netuser%%i|find已锁定&&echo%%i)rem上面的修改一下,如果找到“已锁定”则解锁哪个用户名(如果不查找已锁定的用户,则被禁用的rem帐户也会被激活)。for/f%%iin(user.txt)do(netuser%%i|find已锁定&&netuser%%i/active)rempause可以不要,在此只是便于调试。pause后面的找不到用户的原因是,用户名最后有四行是(下图):ECHO处于关闭状态。命令成功完成。ECHO处于关闭状态。ECHO处于关闭状态。这些影响不到程序的正常运行,可以不管。3、基于第2个假设是有一个用户名的列表,然而总会有些人因为某种原因离去,帐户就会被删除,也总有些新的人员到来,AD里面的用户名列表就不再是固定的了。离去的人员帐户就会被删除掉,进来的人员就会开新的帐户。因此user.txt这个文件会常常变。但是它总可以使用netuser来获得。再进一步,不要user.txt这个文件,直接使用netuser来获得当前所有AD用户.再回头看看,user.txt里面的用户列表是怎么获得的。读史可以明智,回头只是想让自己更清醒点。user.batfor/fskip=4tokens=1-3%%iin('netuser')do(echo%%iuser.txtecho%%juser.txtecho%%kuser.txt)现在可以把这些假设综合起来:下面的批处理解锁AD所有被锁帐户:@echooffRem获取所用用户列表for/fskip=4tokens=1-3%%iin('netuser')do(Rem获取第一列每个用户信息的第二列信息,并查找被锁帐户并解锁for/ftokens=2%%uin('netuser%%i^|find/i已锁定')donetuser%%i/activeRem获取第二列每个用户信息的第二列信息,并查找被锁帐户并解锁for/ftokens=2%%uin('netuser%%j^|find/i已锁定')donetuser%%j/activeRem获取第三列每个用户信息的第二列信息,并查找被锁帐户并解锁for/ftokens=2%%uin('netuser%%k^|find/i已锁定')donetuser%%k/active)然而有些帐户可能反复被锁,再加一个死循环,反复解锁。@echooffrem设置循环标签,unlock:unlockfor/fskip=4tokens=1-3%%iin('netuser')do(for/ftokens=2%%uin('netuser%%i^|find/i已锁定')donetuser%%i/activefor/ftokens=2%%uin('netuser%%j^|find/i已锁定')donetuser%%j/activefor/ftokens=2%%uin('netuser%%k^|find/i已锁定')donetuser%%k/active)rem延时180个ping的计数时,大约为3分钟,时间可自定ping127.0.0.1-n180nulrem跳到循环标签unlock处gotounlockEND(最后的也是最重要的):一、查安全日志,找出中毒的电脑。嘿,随你怎么修理了……二、使用微软的Altools工具读取日志查找。Altools查找1、运行eventcombMT.exe:2、选择AccountLockouts,再search3、程序运行完毕,将会在C盘生成一个-Security_LOG.的日志文件。4、打开-Security_LOG.的日志文件(此图较长,分段截图)被锁的帐户(目标帐户名)调用方机器名即为中毒电脑

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功