频道栏目
首页 > 安全 > 网络安全 > 正文

VBS判断本地账户密码过期邮件提醒

2016-08-05 09:42:53           
收藏   我要投稿

近期公司在外网发布的一个文件服务器(FTP)被受攻击,上面的文件全部被修改无法正常使用,然后最主要的是里面放了一个说明,说如果需要解开文件使用的话,需要给一个账户支付解密费用,但是最终我们还是没有按照提示的付费解开文件的相关操作,找了一些杀毒软件还是没有破解,最终放弃了,通过备份的数据进行还原,该事件主要说明我们在日常中放的公网服务器需要经常更换密码,由于公网的服务器没有加域管理,所以只能通过vbs脚本来获取本地账户然后获取账户的信息,借助本地策略密码最长使用周期为30天来提醒管理员进行定期修改,来提高服务器的安全性,以下为此次操作的脚本信息,供有需要的学习。

本地账户信息属性有的时候会设置密码永不过期了,所以我们也会通过脚本进行判断。使用系统的计划任务来定义执行脚本,来达到最终的脚本执行结果。具体见下:

最终我们通过以下格式进行邮件提醒。

 

\

 

代码开始了:

Dim getd

getd = datediffn

sendmail GetIP,getd

Function datediffn()

Dim ws

dim rt

dim rtarr

Dim lastset

Dim enddate

set ws = createobject("wscript.shell")

rt = ws.exec("net user administrator").StdOut.ReadAll

rtarr = split(rt,vbcrlf)

for i=0 to ubound(rtarr)

If Mid(rtarr(i),1,3)="上次设" then

'if mid(rtarr(i),1,10)="Password l" Then

lastset = Mid(rtarr(i),InStr(rtarr(i),"20"),Len(rtarr(i)))

'WScript.Echo lastset

end If

If Mid(rtarr(i),1,3)="密码到" then

'If mid(rtarr(i),1,10)="Password e" Then

If InStr(rtarr(i),"20") 0 then

enddate = Mid(rtarr(i),InStr(rtarr(i),"20"),Len(rtarr(i)))

If DateDiff("d",lastset,enddate)

'datediffn = 5

datediffn = datediff("d",lastset,enddate)

ElseIf DateDiff("d",lastset,enddate) >=365 then

datediffn = "never"

End If

'WScript.Echo enddate

Else

datediffn = "never"

End if

end if

Next

End function

Function sendmail(ip,dat)

Dim ns,eo

Dim password

Dim stmp

Dim fromName

Dim Toname

Dim msg1

Dim msg2

Dim msg

Dim users

fromName = "gavin@ixmsoft.com" '发件人

Toname = "gaowenlong@ixmsoft.com" '收件人

stmp = "smtp.ixmsoft.com" 'stmp 服务器地址

users = "gavin"

password = "Password2016" '发件人密码

msg1 = " " & VbCrLf & _

"管理员账户密码过期提醒:" & vbCrLf & _

""& vbCrLf & vbCrLf & _

"服务器IP地址为:"&ip&"的管理员账户(Administrator)将在"&dat&"天过期,请登录后及时修改;" & vbCRLF & _

""& vbCrLf & vbCrLf & _

"" & _

"账号管理中心" & _

"" & VbCrLf & _

""

msg2 = " " & VbCrLf & _

"管理员账户密码过期提醒:" & vbCrLf & _

""& vbCrLf & vbCrLf & _

"Warning:服务器IP地址为:"&ip&"的管理员账户(Administrator)属性设置密码永不过期,为了保证账户安全,请登录后取消用户属性选项""密码永不过期"";" & vbCRLF & _

""& vbCrLf & vbCrLf & _

"" & _

"Note:本地组策略默认账户密码最长使用周期为42天,同时密码启用复杂度."& vbCrLf & _

""& vbCrLf & vbCrLf & _

"" & _

"" & _

"" & _

"" & _

"账号管理中心" & _

"" & VbCrLf & _

""

If dat="never" Then

msg = msg2

Else

msg = msg1

End if

Set eo = CreateObject("CDO.Message")

ns = "http://schemas.microsoft.com/cdo/configuration/"

eo.From = fromName

eo.To =Toname

eo.Subject = "管理员账户密码过期提醒"

eo.Textbody = text

eo.HTMLBody = msg

With eo.Configuration.Fields

.Item(ns&"sendusing") = 2

.Item(ns&"smtpserver") = stmp

.Item(ns&"smtpserverport") = 25

.Item(ns&"smtpauthenticate") = 1

.Item(ns&"sendusername") = users

.Item(ns&"sendpassword") = password

.Update

End With

eo.Send

End Function

'获取本机IP

'owner DeViL

'return 本机的IP地址

Public Function GetIP

ComputerName="."

Dim objWMIService,colItems,objItem,objAddress

Set objWMIService = GetObject("winmgmts:\\" & ComputerName & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

For Each objItem in colItems

For Each objAddress in objItem.IPAddress

If objAddress "" then

GetIP = objAddress

Exit Function

End If

Next

Next

End Function

我们通过两个条件进行判断,如果用户密码将要在多少天过期的时候会给指定邮件发送提示邮件。

 

\

 

如果用户属性开启了密码永不过期,也会有邮件提醒。

 

\

 

我们通过计划任务进行执行脚本

 

\
相关TAG标签 账户 邮件 密码
上一篇:OAuth 2.0攻击面与案例总结
下一篇:360追日团队APT报告:摩诃草组织(APT-C-09)
相关文章
图文推荐
文章
推荐
热门新闻

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站