导语:我最近看到一条推特,这条推上说可以通过创建带有密码但是不可登录的AD帐户来做蜜罐防御。我再也找不到那条推特了,所以文章这里也就没有写引用地址了。
我最近看到一条推特,这条推上说可以通过创建带有密码但是不可登录的AD帐户来做蜜罐防御。我再也找不到那条推特了,所以文章这里也就没有写引用地址了。
这个想法是,当有人确实入侵到了你的网络当中时,他们要做的第一件事情往往是从活动目录(Active Directory)收集信息。在这一步中,他们会偶然的发现一个名为“helpdeskda”的账户,然后也获取到了该账号的密码!看来这是一场轻松的胜利,也是一次关键的发现。为了弄清楚如何利用这个新发现的用户获取更多信息,攻击者试图使用RDP或psexec进行进一步的内网渗透。而在他们这样做时,AD会校验并且告知攻击者在这段时间内该帐户无法被登 录。同时,此登录尝试也会触发警报并引起调查。
我个人比较喜欢那种不会引起警报并且能够在已被控的设备上完美运行的工具,接下来我进行了一番测试。
创建AD账号
1、创建一个AD账号并且添加到域管理员组中。
2、设置一个较为可信的用户描述或设置一个看上去正常点的密码,以便迷惑攻击者。
3、在Account中设置该账户登录时间为:拒绝登录24×7
组策略配置
有两组策略选项需要启用才能正常运作。
1、编辑默认域策略如下
2、将“计算机配置>策略> Windows设置>安全设置>高级审计策略配置>审核策略>帐户登录>审核Kerberos身份验证服务”设置成“审计失败事件”。
3、通过“gpupdate /force”命令更新组策略
事件查看器
现在的事件查看器如下所示
这里是更详细的XML视图,这对于我们在任务调度器中编写事件触发器很重要。 记下事件ID,正常的登录失败事件ID为4625。但是,由于我们将登录时间配置成拒绝,所以这不再是一个传统的登录失败事件,它的事件ID为4768,这表明有人申请了Kerberos身份验证票据但因为各种原因失败了。
配置任务调度器
由于事件记录的方式,配置任务调度器时需要花一些时间。由于它不是传统的事件ID为4625的登录失败事件,因此基于用户的事件触发器是不起作用的。我需要编写一个自定义的XML触发器规则来捕获该用户名。
1、打开任务调度器并创建一个新的任务。给新任务取一个名字,并确保选择“无论用户是否登录都运行”。
2、移至触发器选项卡并编辑触发器
3、选择新的事件筛选器,然后选择XML选项卡。手动修改成你对应的用户和域。由于我们不知道攻击者将使用什么用户名格式,因此我们需要一些或(OR)语句。 通常,我们可以使用SID,但在事件4678中,它不会被记录。您还可以更精确的匹配,只记录某些事件,但在这种情况下,我认为最好对任何帐户活动都进行告警。
4、保存后来到“操作”选项卡,我选择了一个powershell脚本来区分不同的人,并提供有关事件的详细信息。
5、勾选“只有当计算机处于通电时才启动任务”。
上述的Powershell Script脚本emailAlert.ps1如下
function sendMail{ Write-Host "Sending Email" #SMTP server name $smtpServer = "smtpserver" #Creating a Mail object $msg = new-object Net.Mail.MailMessage #Creating SMTP server object $smtp = new-object Net.Mail.SmtpClient($smtpServer) $file = "C:usersAdministratorDesktopalert.txt" $att = new-object Net.Mail.Attachment($file) #Email structure $msg.From = "[email protected]" $msg.ReplyTo = "[email protected]" $msg.To.Add("[email protected]") $msg.To.Add("[email protected]") $msg.subject = "ALERT:Honey Account" $msg.body = "Honey Account Activity Detected" $msg.Attachments.Add($att) #Sending email $smtp.Send($msg) } function collectDetails{ $attachment= Get-WinEvent -LogName "Security" -FilterXPath "*[EventData[(Data='[email protected]' or Data='ws_admin' or Data='SECURITY-DCws_admin')]]" | Format-List -Property * | Out-File C:usersAdministratorDesktopalert.txt } #Calling function collectDetails sendMail
通过此类简单便于设置的AD用户名蜜罐,有一定的几率可以发现攻击者的足迹并做进一步的防御。