Introduction to AD Breaches
攻击
AD
的办法有多种,而此则秘传讲述了关于获得AD
凭证之隐秘。。。OSINT and Phishing
获取第一组
AD
凭据的常见办法有OSINT
和钓鱼:OSINT
就
AD
而言,其信息主要泄露在:Stackall
提问但披露敏感信息(如凭证)- 硬编码凭据将脚本上传至
github
的开发人员 - 员工使用工作账户注册外部网站,而外部网站被数据泄露,如HaveIBeenPwned 和 DeHashed
钓鱼
就嗯钓,没讲什么重要的
NTLM Authenticated Services
丑陋的爆破LAN
管理器:NTLM
是用于在AD
中验证用户身份的安全协议,使用称为NetNTML
的基于质询-相应的方案进行身份验证,而使用NetNTML
的服务也可以暴露在互联网上,比如:- 公开
Outlool Web App
的登录门户的内部托管Exchange
服务器 - 暴露在互联网的的服务器的远程桌面协议
RDP
服务 - 与
AD
集成的公开VPN
端点 面向互联网并使用
NetNTML
的Web
应用程序NetNTML
允许应用程序扮演客户端和AD
之间的中间人角色,所有所有身份验证材料以质询的形式转发到域控制器,如果成功完成,应用程序将对用户进行身份验证。这意味着应用程序代表用户进行身份验证,而不是直接在应用程序本身上对用户进行身份验证。 以此防止应用程序存储
AD
凭据,该凭据应仅存储在域控制器上:丑陋的密码爆破由于大多数
AD
都配置有账户锁定,所以很难对同一个账户爆破密码。相反的,需要执行密码喷射攻击,即使用一个密码尝试登录所有获得的用户名但这类攻击仍会导致大量失败日志,所以实战感觉会被逮捕的(逃
题目的文件提供了用户名列表,密码
Changeme123
,以及一份写好的爆破脚本得到用户
hollie.powell
heather.smith
gordon.stevens
georgina.edwards
登进去可以看到
hello world
- 公开
LDAP Bind Credentials
拦截LDAP身份验证应用程序可使用的另一种
AD
身份验证方法是轻量级目录访问协议LDAP
。其与NTLM
类似,但通过LDAP
应用程序可以直接验证用户凭据。即应用程序使用自身的一对AD
凭据来查询LDAP
,然后验证AD
用户的凭据,如下:LDAP
身份验证是与AD
集成的第三方应用程序的一种机制,如:- Gitlab
- Jenkins
- Custom-developed web applications
- Printers
VPNs
如果这些应用程序或服务暴露在互联网上,可以使用类似于攻击
NTLM
身份验证系统的攻击方式。由于使用LDAP
身份验证需要一组AD
凭据,那么可以尝试恢复服务使用的AD
凭据,以获得对AD
的经过身份验证的访问。AD
凭据通常以纯文本形式存储在配置文件中,对其利用详见Task7
LDAP
回传攻击当获得对内部网络的初始访问权限时,这是针对网络设备(比如打印机)的常见攻击:
当可以访问并修改指定
LDAP
参数的设备配置时,可以执行LDAP
回传攻击:通过更改LDAP
配置中的主机名/IP为自己的IP,此时再测试LDAP
配置时可以强制设备对恶意设备进行LDAP
身份验证,可以拦截此身份验证并尝试恢复LDAP
凭据以 http://printer.za.tryhackme.com/settings.aspx 为例:
该网页是网络打印机的管理网站,拿到用户名:
当点击
Test setting
时,打印机会向域控制器发出身份验证请求来测试其LDAP
凭据,那么可以尝试利用这点让打印机连接到我们的IP
以得到其凭据。而LADP
的默认端口号是 $389$ ,那么监听一下:这是因为在发送凭据之前网络打印机会与
LDAP
服务器协商,选择两者都支持的最安全的身份验证方法。在足够安全的配置下凭据会以密文形式传输,而对于某些身份验证方法,凭据则根本不会通过网络传输,所以不能简单的
nc
监听到凭据,而需要创建一个恶意的LDAP
服务器,并更改为不安全的配置以确保凭证以明文形式发送安装
OpenLDAP
并配置自己的LDAP
服务器1
2
3apt-get update && sudo apt-get -y install slapd ldap-utils && sudo systemctl enable slapd
dpkg-reconfigure -p low slapd配置中提供的域名和组织名都应是
za.tryhackme.com
由于前文说到过的,现在配置过于安全,需要降级其支持的身份验证机制来使其明文传输凭据。那么,我们希望其仅支持
PLAIN
和LOGIN
身份验证方法:olcSaslSecProps.ldif
1
2
3
4#olcSaslSecProps.ldif
dn: cn=config
replace: olcSaslSecProps
olcSaslSecProps: noanonymous,minssf=0,passcred其具有以下属性:
olcSaslSecProps
: 指定 SASL 安全属性noanonymous
: 禁用支持匿名登录的机制minssf
: 指定可接受的最小安全强度,$0$ 表示无保护。用这个文件来更新
LDAP
服务器的配置:1
ldapmodify -Y EXTERNAL -H ldapi:// -f ./olcSaslSecProps.ldif && sudo service slapd restart
然后可以用这个命令来检测配置状态:
1
ldapsearch -H ldap:// -x -LLL -s base -b "" supportedSASLMechanisms
此时配置完成,用
tcpdump
监听 $389$ 端口:tcpdump -SX -i breachad tcp port 389
得到密码
tryhackmeldappass1@
Authentication Relays
中间人攻击服务泄露继续研究针对更广泛的网络身份验证协议的攻击。
Windows
网络中有大量服务相互通信,允许用户利用网络提供的服务。而这些服务必须使用内置的身份验证方法。在这里,我们重点关注
SMB
使用的NetNTLM
身份验证服务器消息块
SMB
SMB
协议允许客户端(如工作站)与服务器(如文件共享)进行通信。在域中,SMB
负责管理包括网络间文件共享到远程管理的所有事物然而早期版本的
SMB
存在多个漏洞可用于恢复凭据,以及代码执行。而有些时候,遗留的系统并不支持新版本的更新,导致仍在使用旧版本以下是两种用
SMB
进行NetNTML
身份验证的漏洞:- 由于
NTLM Chanllenges
可以被拦截,可以使用离线破解来恢复相关密码,但这种过程很慢 - 使用设备进行中间人攻击,在客户端与服务端之间进行
SMB
身份验证,来提供已进行过身份认证的会话以及对目标服务器的访问
- 由于
LLMNR,NBT-NS,WPAD
本地多播链路解析协议
LLMNR
用于在局域网中解析主机名到IP
。常用于替代基于DNS
的主机名解析,特别是在没有DNS
服务器或者DNS
服务器不可用的情况下。NetBIOS名称服务
NBT-NS
用于在TCP/IP
网络中解析NetBIOS
名称网络代理自动发现协议
WPAD
用于局域网浏览器自动发现内网中的代理服务器并自动设置为该代理连接内网或互联网,找到后会自动下载PAC
配置文件在大型
Windows
网络上,这些协议允许主机为同一本地网络上所有主机执行自己的本地DNS
服务:先通过发送LLMNR
请求来查看是否有主机响应,从而确定他们正在查找的主机是否位于同一本地网络上来避免DNS
服务器等网络资源负担过重。NBT-NS
是LLMNR
的先驱协议。而发出WPAD
请求是为了尝试为未来的HTTP
连接找到代理而通过
Responder
工具,其允许我们在NetNTLM
身份验证期间执行中间人攻击,欺骗客户端与攻击端进行连接。具体来说,以上协议的请求都依赖于本地网络广播,Responder
会监听所有这些请求,并发送恶意相应来尝试连接到客户端拦截
NetNTLM
值得注意的是,
Responder
在实战情况下会拦截所有正常的身份验证请求,导致用户和服务无法连接到主机和共享,因此具有一定破坏性这里由于连接的是
VPN
而非本地网络,靶机模拟了一个 $30mins$ 执行一次的身份验证请求,所以拦截请求会比较耗时使用这条命令来连接,其中
breachad
是这里对应的网络接口:1
responder -I breachad
然后静置一段时间,可能会提示端口被占用,但我这里不用管就行:
其格式为
1
2
3[SMBv2] NTLMv2-SSP Client : <Client IP>
[SMBv2] NTLMv2-SSP Username : ZA\<Service Account Username>
[SMBv2] NTLMv2-SSP Hash : <Service Account Username>::ZA:<NTLMv2-SSP Hash>靶机同时下发了密码列表来加速破解
1
john --wordlist=./passwordlist-1647876320267.txt hash.txt
注意
hash
文件要放整个串,即svcFileCopy::ZA::...
那一串得到密码
FPassword1!
Microsoft Deployment Toolkit
部署使用的PXE
文件泄露MDT
和SCCM
microsoft部署工具包
MDT
用于自动部署微软的操作系统,大型组织一般使用该服务来更有效的部署新映像,从而方便再中央位置维护和更新基础映像系统中心配置管理器
SCCM
用于管理所有微软应用程序,服务和操作系统的所有更新,通常和MDT
集成。二者配合允许IT
团队预配置和管理启动影响,即需要配置新机器时,只需插入网线即可自动执行在这里,将关注预处理执行环境
PXE
启动的配置PXE
启动大型组织使用
PXE
引导来允许连接到网络的新设备直接通过网络加载和安装操作系统。而MDT
用于创建,管理和托管PXE
启动映像。PXE
启动常与DHCP
集成,即每当DHCP
分配IP
租约则允许主机请求PXE
启动映像并启动网络操作系统安装过程对
PXE
的利用有两种方向:- 注入权限提升,以便在
PXE
启动完成后获得对操作系统的管理访问权限 执行密码抓取攻击以获得安装期间的
AD
凭据这里将关注后者
- 注入权限提升,以便在
PXE
启动映像检索这里
THM
跳过了从DHCP
请求IP
和PXE
的预配置阶段通过网络图可以得到
MDT
服务器的IP
而访问 http://pxeboot.za.tryhackme.com 这里列出了所有
BCD
文件的信息,这些文件存储了不同类型体系结构的PXE
引导相关信息这里通常需要使用
TFTP
请求每个BCD
文件并枚举所有文件的配置。这里选择重点关注x64
架构的BCD
文件x64{E259EB83-3541-4D5F-B0CC-F7326F4E8592}.bcd
注意文件名每天都会改变
现在需要连接
ssh
并下载BCD
文件来读取MDT
服务器配置:1
ssh thm@THMJMP1.za.tryhackme.com
密码为
Password1@
嗯,登录信息是
THM
给定的这里需要创建一个用户并复制一个
powerpxe
进去,目的是确保所有网络用户都可以使用ssh
这里需要使用
TFTP
来下载BCD
文件,而其相较于FTP
来说,没有命令可用于列出文件。所以需要准确的指定目录和文件名,而BCD
文件始终位于MDT
服务器的/Tmp
目录中:1
tftp -i <THMMDT IP> GET "\Tmp\x64{39...28}.bcd" conf.bcd
现在在
noone
文件夹得到了恢复的BCD
文件,将使用powerpxe
来读取内容,具体来说,使用其Get-WimFile
函数来从中恢复PXE
启动映像的位置:1
2
3
4powershell -executionpolicy bypass
Import-Module .\PowerPXE.ps1
$BCDFile = "conf.bcd"
Get-WimFile -bcdFile $BCDFile现在有了启动映像的位置,下一下:
1
tftp -i <THMMDT IP> GET "<PXE Boot Image Location>" pxeboot.wim
从
PXE
启动映像中恢复AD
凭据这里已经可以注入本地管理员,当映像启动时就有了管理员权限。那么可以手动安装映像,就有了加入域的计算机,详见这里
这里只讨论从中窃取
AD
凭据:再次使用
powerpxe
:1
Get-FindCredentials -WimFile pxeboot.wim
由此得到另一组
AD
凭据:svcMDT:PXEBootSecure1@
Configuration Files
配置文件泄露如果能访问网络上的主机,那么通过配置文件有很大可能恢复
AD
凭据,具体来说是这几种:- Web应用程序配置文件
- 服务配置文件
- 注册表项
集中部署的应用程序
可以使用枚举脚本来自动执行该过程,如 seatbelt
在这里将集中在从集中部署的应用程序中恢复凭据,通常来说这类程序需要在安装执行阶段对域进行身份验证的方法
这里以应用程序
McAfee
为例:其将凭据存入了
ma.db
文件中,而这个文件存在固定位置:C:\ProgramData\McAfee\Agent\DB
在
kali
上面用scp
复制过来:scp thm@THMJMP1.za.tryhackme.com:C:/ProgramData/McAfee/Agent/DB/ma.db /
使用
sqlitebrowser
打开数据库转到
浏览数据-Agent_Repositories
表,关注DOMAIN
AUTH_USER
AUTH_PASSWD
条目,而AUTH_PASSWD
被McAfee
使用已知密钥加密,THM
提供了旧版python2
爆破脚本这里直接偷图了
对应的用户名密码是
svcAV:MyStrongPassword
THM学习日寄12-域学习Breaching Active Directory
- 本文链接: http://noone40404.github.io/2024/09/25/THM学习日寄12:域学习Breaching Active Directory/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!