原文链接:http://blog.ptsecurity.com/2018/10/advanced-attacks-on-microsoft-active.html
在过去的四年里,针对微软Active Directory的攻击一直是Blank Hat和Defcon报告中反复出现的话题。演讲者公开他们的新的攻击向量,分享了他们的观点,并提出了检测和避免这类攻击的建议。我相信IT部门能够创建一个由安全部门监管安全的基础设施。高质量的监管反过来也需要好的工具。这就像一个军事基地:你已经在周边建立了警戒塔,但仍然在该地区保持警戒。
许多供应商提供安全软件,以支持监测下列恶意活动:
这种攻击受到NTLM体系结构的制约,NTLM是微软在1990年代创建的一种身份验证协议。登录到远程主机需要存储在用于身份验证过程计算机上的密码散列。因此,可以从计算机中提取哈希值。
为了实现这一点,法国研究员本杰明·德尔比(Benjamin Delpy)在2014年开发了Mimikatz,这是一种允许从计算机内存中提取明文密码和NTLM哈希的工具。
我们应该如何使用用户名字典来进行这种攻击?任何域成员都可以执行返回AD域用户完整列表的net user /domain命令。
如果一个域使用Kerberos作为身份验证协议,攻击者可以尝试使用Kerberoasting攻击。域上经过身份验证的任何用户都可以请求Kerberos票据访问服务(票据授予服务)。TGS被用于运行服务帐户的密码散列加密。请求TGS的攻击者现在可以强制它离线,而不必担心被阻止。如果成功的话,攻击者将获得与服务关联的帐户的密码,通常是特权帐户。
一旦攻击者获得所需的凭证,下一个任务就是远程命令执行。使用Sysinternals套件中的PsExec程序可以很容易地解决此任务,这在实践中被证明是非常有效的,并且得到了IT管理员和黑客的赞赏。
现在我们将回顾七种黑客招式,它们可以帮助我们完全控制多动目录。
[图中显示了攻击的四个步骤。每个步骤都有一组方法]
PowerView是PowerSploit的一部分,PowerSploit是一个用于渗透测试的著名PowerShell框架。PowerView支持Bloodhound,这是一种在AD中提供对象连接图形表示的工具。
Bloodhound活动目录对象之间关系的图形表示立即提供了这样的可能性:
1.查找所有域管理员的帐户
2.查找主机,其中记录了域管理员
3.使用域管理会话找到从攻击者到目标主机的最短路径
三种可能性中的最后一种可能是回答这个问题:黑客需要攻击哪些主机才能访问域管理帐户。这种方法大大减少了获得对域的完全控制所需的时间。
PowerView与允许获取AD对象(比如net.exe)数据的内置实用程序的区别在于,PowerView使用的是LDAP,而不是SAMR。要检测此活动,我们可以使用域控制器事件1644。通过在寄存器中添加相关值,可以启用此事件的日志记录:
启用LDAP事件1644的日志记录
具有LDAP查询属性的事件1644
注意,这种类型的事件可能有多个,而对事件分析的一个很好的替代方法是进行流量分析,因为LDAP是一个明文协议,并且在流量中可以清楚地看到所有查询。
框架的另一个特性是,由于它只使用PowerShell,没有任何依赖项。此外,PowerShell v5还有一个高级审计的新选项,这在检测中非常有用。事件4104显示了脚本主体,可以搜索于PowerView中的特定函数名。
这个程序可以替代Nmap。一旦黑客知道AD中存在哪些用户和群组,他或她就需要相关服务的信息来了解整个布局。
通常,使用Nmap扫描端口可以获取这些信息。但是现在这些数据可以从AD中获取——它们已经存储在那里了。查询结果如下:应答返回SPN(服务主体名称),它由服务类组成,服务类对于每种服务类型都是唯一的,FQDN格式的主机名,以及一些服务的端口。
有关SPNs的完整列表,请参阅https://adsecurity.org/?page_id=183。
要检测SPN扫描,可以使用LDAP事件审计。
SPN扫描相比Nmap有一个明显的优势:它的噪声更小。当使用Nmap时,需要连接到每个主机并将数据包发送到您指定的端口范围,而SPN列表仅是一个查询的结果。
期间被称为横向运动的阶段,一个重要任务是匹配账户以及他们登录的电脑:攻击者要么已经有用户凭证(散列或Kerberos票据)然后搜索主机以准确登录,或者搜索与域管理员进行会话的主机。
这两种情况都会引发以下场景:hunt –> compromise any host –> upload Mimikatz – > profit.
要检测此场景的使用,可以使用两个事件:4624成功登录到远程系统(登录类型3),和访问网络的事件共享IPC$,一个细微差别是,命名管道“srvsvc”。从通信统计中可以猜出为什么管道会这样命名。
左边的红色方框显示SMB连接,然后连接到管道“srvsvc”。此管道允许通过服务器服务远程协议进行交互。终端主机从管道接收各种管理信息;例如,其中一个请求是NetSessEnum。此请求返回登录到远程系统的完整用户列表及其IP地址和名称。
MaxPatrol SIEM允许基于这两个事件与srvsvc的相关性进行检测。PT网络攻击发现基于流量分析进行类似检测。
Pass-the-Hash派生方法。让我们继续在域中横向运动。攻击者可以用手上的NTLM散列做什么?进行散列攻击。但它已经是众所周知的,可以被检测到。因此,我们找到了一种新的攻击:Overpass-the-Hash。
Kerberos协议是专门为防止通过网络以任何形式发送用户密码而开发的。为了避免这种情况,用户在自己的计算机上使用密码哈希加密身份验证请求。一个密钥分发中心(在域控制器上运行的一种特殊服务)用一张票据来回复以获得其他票据,即所谓的授票票(tickett-ticket, TGT)。现在客户端被认为是经过身份验证的,可以在接下来的10小时内访问其他服务。因此,如果攻击者转储目标服务受信任组(例如,ERP系统或数据库)的用户散列,则攻击者可以自己提供合法票据并成功登录到目标服务。
如果黑客使用PowerShell版本的Mimikatz进行攻击,日志脚本主体将会有帮助,因为Invoke-Mimikatz是一个很标志性的行。
另一个标志是事件4688--创建带有命令行扩展审计的流程。即使将二进制文件重命名,命令行也会包含该命令,这对于Mimikatz来说是非常特殊的特征。
如果您想通过流量分析来检测Overpass-the-Hash攻击,可以使用以下异常特点:Microsoft建议在如今的域中使用AES256加密身份验证请求,如果Mimikatz发送身份验证请求数据,则使用过时的ARCFOUR加密数据。
另一个特别的特征是Mimikatz发送的密码套件,它与合法域的套件不同,因此在流量中很突出。
一个广为人知的方法。
攻击者从名为krbtgt的特殊帐户的密码散列中可以得到什么?之前,我们回顾了一个用户可能没有特权的案例。现在,我们来回顾令一个案例,在这个案例中,用户的密码散列用于签名所有的票据,以获得其他票据(TGT)。不需要告知密钥分发中心:攻击者可以生成此票据,因为黄金票据实际上是TGT。然后攻击者可以不受时间限制地在AD中的任何服务上发送身份验证请求。结果是不受限制地访问目标资源,Golden Ticket这个名字是有原因的。
事件4768意味着授予了一个TGT,事件4769意味着授予了AD中某个服务身份验证所需的服务票据。
在这种情况下,我们可以看到一些不同之处:虽然Golden Ticket并不从域控制器请求TGT(因为它生成了TGT本身),但它必须请求TGS。因此,如果我们看到获得的TGT和TGS不同,我们可以假设Golden Ticket攻击正在进行。
MaxPatrol SIEM使用表列表来记录所有发布的TGTs和TGSs,从而实现了这种检测方法。
在目标主机上经过身份验证和授权后,黑客可以开始远程执行任务。WMI是一种内置的机制,非常适合这一目的。在过去的几年里,无文件化是一种趋势,这意味着使用内置的Windows机制。主要原因是模仿合法活动的能力。
下图展示了wmic的使用,这是一个内置的实用程序。该实用程序有一个主机地址,用于连接、凭证、进程调用create操作符和在远程主机上执行的命令。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!