欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

在活动目录中进行的诱捕与反诱捕的攻防较量

来源:本站整理 作者:佚名 时间:2018-11-08 TAG: 我要投稿

几年前,我参与了几个月的企业诱捕解决方案的开发和测试项目。在此期间,我积攒了一些在活动目录中实施诱捕和钓鱼检测的经验,并意识到在活动目录中实施诱捕的关键点主要集中在honeyuser/honeytoken /honeycredentials上。像dcept等工具就是利用的这些攻击点,戴尔开源的工具称为 DCEPT(Domain Controller Enticing Password Tripwire,域控制诱导加密绊网),是一种能够用来检测尝试入侵本地Windows域和活动目录的攻击者的蜜罐服务器安全技术。如果我们想在攻击的域名枚举阶段就利用相关工具来检测出攻击,会遇到很多困难,不过这正是我本文要解决的问题。
诱捕与反诱捕的攻防游戏
对于攻击者来说,就是想方设法欺骗用户打开恶意附件或点击恶意链接。一旦进入攻击环境,攻击者就会试图截获用户的凭证,并通过其他设备来混入现有的日志和流量。
而对于安防人员来说,有一种检测攻击的办法就是所谓的“钓鱼执法”:通过向攻击者提供他们想要的服务、权限或正在寻找的信息,来让他们上钩。很多攻击者在心里上,都会天然的认为被攻击者是愚蠢的、没有防御意识的且计算机技术比较差,发现不了他们的恶意意图。通常情况下,他们认为自己也比安防人员更聪明、更有天赋。在这些心理的作用下,他们往往以为只要自己一出手,就可以迅速获得自己想要的东西,比如迅速获得Direct活动目录min权限。
所以,安防人员正是基于此向攻击者故意展示他们想看到的内容。例如,伪装成将密码设置为类似于“123…”的“弱智”用户,让他们进入到蜜罐中。
给攻击者释放的诱饵最好是以下四个:
1.攻击目标足够多,以便攻击者枚举对象;
2.易于配置;
3.攻击端不需要进行配置更改;
4.不应该触发正常的管理活动;
上面的第4点是最难实现的。如果安防人员的目标是枚举,则必须使攻击者的活动或使用的工具凸显出来,以避免误报。
部署具有诱饵属性的攻击环境
那么,我们如何通过活动目录中的内置工具实现上述攻击者所需的攻击属性呢?我们可以使用用户组策略设置ADAccess事件日志,配置攻击者感兴趣的对象并过滤掉误报信息。
活动目录访问所需的用户组策略设置过程是Windows Settings | Security Settings | Advanced Audit Policy Configuration | DS Access – Audit Directory Service Access。

以上设置在每次访问活动目录对象时都会导致安全事件4662,日志记录需要在对象级别进行配置。对于这种配置,我们需要修改对象的SACL并添加相关的ACE。
你可以通过查看AddAuditAccessObjectAce函数,来完整理解ACE。

我会在本文所讲的样本中,设置完全针对用户使用'ReadProperty''success'时的安全审计,这有助于检测针对该用户的任何枚举。
Deploy-Deception
虽然这些设置可以使用用户界面完成,但是多亏了PowerShell和ActiveDirectory模块,它才得以实现自动化。
为了自动化设置具有有趣属性和鲜为人知的属性的诱饵对象,以避免误报,我编写了Deploy-Deception。它是一个PowerShell模块,利用ActiveDirectory模块轻松高效地部署诱饵,你可以在Github上找到具体的部署过程。
下面,我会详细介绍如何在攻击的不同阶段设置不同类型的目标诱饵。
枚举:以用户对象为诱饵
用户对象是最有趣的对象,其中的一些用户属性是攻击者最感兴趣的:
1.从来没有更改过的密码或比较“弱智”的密码;
2.信任的Delegation(委托)机制, Delegation是一种实现机制:一个对象转发或者委托一个请求给另一个对象;
3.拥有SPN的用户,SPN(Service Principal name)服务器主体名称。SPN是服务在使用Kerberos身份验证的网络上的唯一标识符,它由服务类、主机名和端口用户组成;
4.被明确标记出的密码;
5.属于高权限用户组的用户;
6.对其他用户、用户组或Container(容器)对象具有ACL权限的用户;
我可以使用Deplou-UserDeception函数来创建一个含有以上诱饵因素的假用户。本文中我创建了一个名为'usermanager'的假用户,其密码从来没有更改过,如果有攻击者读取它的任何属性,就会记录在4662事件中。
PS C:\> Import-Module C:\Deploy-Deception\Deploy-Deception.psd1
PS C:\> Create-DecoyUser -UserFirstName user -UserLastName manager -Password Pass@123 | Deploy-UserDeception -UserFlag PasswordNeverExpires –Verbose

请注意,真实的用户对象都是在域中创建的。且在实践中,上面所述的因素的触发非常频繁,因为每当有人读取用户usermanager的任何属性时,都会启用我设置的默认日志记录。这意味着即使有人简单的列出域中的所有用户,也会记录在4662。这意味着,触发以上所述诱饵的所有操作(包括正常的操作) 都会启用日志记录。比如以下操作:
1.net user /domain命令,我们在添加域用户时,有时会有用户没有添加,或者已添加的用户名拼写错误。这时,我们想查一下目前域中所有的用户,就是使用的这个命令;
2.Get-WmiObject -Class Win32_UserAccount命令,用此命令查找帐户状态($User.Status);
3.Get-ADUser -Filter * (MS ActiveDirectory module) 命令;
4.Get-NetUser (PowerView) 命令;
5.查找用户,联系人和用户组的用户界面命令;
不过,这种大范围的诱捕行为,会让我无法区分攻击者的枚举行为和正常活动行为。攻击者所使用的枚举工具有一些特别之处,就是它们喜欢尽可能多的提取攻击对象的信息(这样做是因为他们不希望重复连接到域控制器)。这意味着如果我现在要对一个不常见的属性进行触发并审计,只有通过一些枚举工具产生的枚举行为才会触发日志记录,以免存在误报。在观察了所有属性列表后,我发现有很多这样的属性,我从中选择了一个具有代表性的属性-x500uniqueIdentifier(用户界面D为 d07da11f-8a3d-42b6-b0aa-76c962be719a)

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载