内网(面经版)

Windows基础(持续更新)

ACL访问控制列表:相当于一个权限机制,规定谁能干什么,谁不能干什么;在AD中,ACL 用来控制“目录对象权限”

IPC$/SMB(445):SMB协议中的一个隐藏目录,主要用于建立连接,身份认证以及远程管理,也可利用与横向移动及远程命令执行,因为SMB横向移动是基于IPC$通信的

WMI(135+随机):Windows中的系统信息接口以及远程管理入口,本地可查询进程、服务及系统配置等;远程可进行执行命令、创建进程及信息查询,可用于横向移动

WinRM(5985/5986):Windows远程管理通道,本质是用 HTTP/HTTPS 在远程机器上执行命令,也可用于横向移动

UAC:User Account Control(用户账户控制)是 Windows 的一个安全机制,即使是管理员也可能会被UAC限制权限,所以会有UAC绕过

RPC:远程过程调用协议,简单理解为让你在一台机器上,像调用本地函数一样去调用远程机器上的函数,比如WMI,AD及文件共享部分功能服务都是基于它的

SID:Windows 用来“唯一标识用户/组”的身份证号,每个对象(用户 / 组 / 计算机)都有一个唯一的 SID,Kerberos票据中会包含SID,所以服务根据 SID 判断权限

内网信息收集

主机信息收集

systeminfo  查看主机补丁信息、网络配置信息
tasklist /svc 进程信息
dir /a /s /b c:\"*password*" 查找用户文件
history Linux中历史命令
Get-Hisyory|Format-List-Property * Windows中历史命令
net start   查看启动服务

网络信息收集

ipconfig /all 判断存在域-dns
net view /domain 判断存在域
net time /domain 判断主域
netstat -ano 当前网络端口开放
nslookup 域名 追踪来源地址

用户信息收集

whoami /all 用户权限
net user // 查看所有用户
net view // 查看计算机
net view /domain // 查看所有域
net config workstation 登录信息
net localgroup 本地用户组
net user /domain 获取域用户信息
net group /domain 获取域用户组信息
wmic useraccount get /all 涉及域用户详细信息
net group "Domain Admins" /domain 查询域管理员账户
net group "Enterprise Admins" /domain 查询管理员用户组
net group "Domain Controllers" /domain 查询域控制器
whoami /priv //查看用户权限

其他收集方式

SPN扫描:setspn -T domain -q /

setspn -T test.com –q / // 当前域的 spn 信息

setspn -q / // 所有域的 spn 信息

PowerView.ps域内信息收集

BloodHound域分析工具

mimikatz收集信息

域控

net group "Domain Controllers" /domain // 查看域控
net group "Domain Admins" /domain // 查看域管理员
net group "Enterprise Admins" /domain // 查看全局管理员
net time /domain // 定位当前域控

启动项

reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run // 用户级别
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run // 系统级别

活动目录信息收集

Ntds.dit 文件是域环境上DC上保存的一个二进制文件,是主要的活动目录数据库,文件路径为DC路径%SystemRoot%\ntds\ntds.dis,其中不仅包含了有关域用户的密码及hash,还有其用户组、组成员身份及组策略等信息

内网攻击手法&横向移动

Hash传递攻击(PTH)

原理:认证过程中无需使用用户密码进行认证,而是使用用户的hash值,可以通过LM Hash和NTML Hash去访问远程主机或服务,不需要明文密码,可以实现横向攻击,结合猕猴桃🥝的使用

DCSync攻击

前置知识:AD复制技术,即为了防止DC出现意外瘫痪,所以设置了多台域控作为AD域的备份或者部署多台域控制器,而且一台域控进行了数据的更改之后,需要与其他域控进行数据的同步,这就是数据同步原理【DC(域控制器)默认拥有 DCSync 权限】

DCSync攻击原理:就是利用域控制器会进行数据同步的特性,我们可以通过利用 AD 提供的复制接口向DC发送数据同步请求从而获取数据,此攻击依赖Windows RPC 协议去调用的AD复制接口

利用条件

  • Acministrators 组内用户
  • Domain Admins 组内的用户
  • Enterprise Admins 组内的用户
  • 域控制器的计算机用户

获取以上任意用户权限即可,利用whoami /groups即可判断

攻击方式

DCSync 权限 = 目录复制权限 获取方式 = 拿高权限 or 利用 ACL 给自己加权限(WriteDACL权限允许身份修改指定对象 ACL)如果机器账户拥有此权限,就可以向其他对象添加DCSync权限,然后即可dump所有用户hash 攻击效果 = 直接从域控拉取所有用户凭据(结合mimikatz使用)

AS-REP Roasting

前置知识:在AS_REP中,KDC会返回一个有用户NTLM Hash加密的Session Key(该Sesions Key用于确保客户端和TGS之间的通信安全)

原理:若开启kerberos的预认证服务,在AS_REQ中会生成一个有Client Hash加密的Timestamp发送到KDC,KDC通过解密该密文获得时间戳,如果解密成功并且时间戳在5分钟之内,则预认证成功,KDC通过该方式来检验客户端身份,以此有效防止暴力破解。若没有开启预认证服务,我们就可以尝试暴力破解,唯一一次的AS_REQ也不会带有NTLM Hash加密Timestamp的密文

利用:可利用GetNPUsers.py去跑一下有哪些用户无需预认证,前提是可以获取域用户列表或者从其他地方获取,若有用户未开启预认证,即可获得其Kerberos 的 AS-REP hash就可以进行离线爆破,得到其用户密码进行登陆,

也可利用LDAP查询工具查询具有Do not require Kerberos preauthentication属性的域用户

黄金票据🎫

原理:在AS_REP过程中,生成的TGT是由KDC中的Krbtgt用户的NTML Hash作为密钥加密的,如果我们得到了Krbtgt用户的NTML Hash就可以伪造任意的TGT,然后Krbtgt只在DC上才有,黄金票据就意味着拿到了域控制器权限

利用条件

1.得到域名

2.得到域的SID值

3.获取Krbtgt的NTML Hash

4.伪造的用户名(如administrator)

利用方式

利用mimikatz一键伪造Administrator票据

mimikatz.exe "kerberos::golden /domain:god.org /sid:S-1-5-21-2952760202-1353902439-2381784089 /user:administrator /krbtgt:58e91a5ac358d86513ab224312314061 /ticket:k0u.kiribi" exit
mimikatzkerberos::ptt k0u.kiribi 注入到缓存票据中
klist 可查看缓存的票据
klist purge 可清空票据缓存

注:将伪造的票据注入缓存时记得要先清理当前缓存中的票据,普通黄金票据存在局限性,适用于单域内,不适于域森林中

白银票据🎫

特点:不需要和KDC交互

原理:在AP_REQ过程中,ST的组成为Ticket=Server Hash(Server Session Key+Client info+End Time),如果得到了机器用户的Hash,我们就可以伪造任意用户去访问该机器上由该账号运行的特定服务,服务器在没有收到ST之前是不知道Server Sessoin Key的,所以我们就能够伪造ST,其中Server Hash就是指服务对应的机器用户的Hash,也就是System用户

利用条件

1.得到域名

2.域的SID

3.域中Server Hash

4.要伪造的用户名

5.目标服务器上的Kerberos服务

攻击方式

通过mimikatz获取机器用户的Hash也就是获取了服务账号(或机器用户)的密钥,然后我们就可以利用mimikatz制作白银票据

kerberos::golden 
/domain:xiaorang.lab
/sid:S-1-5-21-xxxx
/target:server01.xiaorang.lab
/service:cifs
/rc4:机器账号hash
/user:Administrator
/ptt

可利用与横向移动(拿下了机器的管理员不代表拿下了整个域)

举例说明:
1. 拿下 server01
2. dump 出 server01$ hash
3. 白银票据 → 控制 server01 服务
4. 在 server01 上继续拿凭据(关键)
5. 拿到其他机器 / 用户 hash
6. 再去打 server02

蓝宝石票据🎫

基于 S4U(Service for User)机制滥用的一类票据攻击,就是不伪造票据,而是通过合法请求和冒充用户,本质是RBCD攻击(会补充的)

钻石票据🎫

原理: 在一个“真实的 TGT”基础上,篡改其中的身份/权限信息(PAC),并使用 krbtgt 密钥重新签名,再用它去正常向 KDC 申请服务票据(相比黄金票据更稳定,适用于得到域控制权限后的持久化)

条件

1.Krbtgt 密钥

2.合法的TGT用户

3.域控高权限

利用方式:用已知方式获取Krbtgt密钥,比如DCSync或卷影文件

mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:域名 /user:krbtgt" "exit"

然后可利用Rubeus.exe去得到钻石票据

Rubeus.exe diamond /krbkey:xxxxxxxxxxxxxxxxxxx /user:mssql /password:1qaz@WSX /enctype:aes /domain:域名 /dc:dc.域名 /ticketuser:administrator /ptt /nowrap

Kerberoasting

原理:在TGS_REP认证过程中,返回的是东西是通过服务的NTML Hash作为密钥加密生成的ST,若认证加密的算法为RC4_HMAC或其他弱加密类型的话,就可以尝试进行穷举爆破,离线对票据进行暴力破解,我们就可以得到服务账号的明文密码,即可以实现横向

条件:域认证用户

利用方式

利用SetSPN查找域内SPN

setspn -Q */*    # 查看当前域内所有的 SPNsetspn -T whoamianony.org -Q */*    # 查看指定域 whoamianony.org 注册的SPN, 如果指定域不存在, 则默认切换到查找本域的 SPNsetspn -L <username>/<hostname>    # 查找指定用户/主机名注册的 SPN

使用GetUserSPNs.py、使用 PowerView.ps1 脚本查找,具体攻击可利用Rubeus.exe自带的攻击获取

Rubeus.exe kerberoast

也可使用mimikatz请求指定SPN的服务票据

kerberos::ask /target:MySQL/PC2.whoamianony.org:3306    # 请求服务票据kerberos::list    # 列出服务票据kerberos::purge    # 清除所有票据

密码喷洒攻击

指定密码,遍历用户名

用户名枚举和口令暴力破解

原理:通过不停构造AS_REQ请求包,通过返回包来判断用户是否存在或密码是否正确

委派攻击

非约束委派(Unconstrained Delegation, UD)

约束委派(Constrained Delegation, CD)

基于资源的约束委派(Resource Based Constrained Delegation, RBCD)

权限维持

创建影子账户

通过先建立带$符号的账户,然后利用注册表修改里面的值,让管理员无法通过cmd以及计算机管理等地方查看到我们所创建的用户,即可实现权限维持

net user hack1$ Aadmin123 /add  创建

net user hack1$ /del 删除

注册表中定位HKEY_LOCAL_MACHINE\SAM\SAM将Administrator权限设置为完全控制

在注册表中HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\选择Administrator用户找到与右侧显示的键值的类型“ 0x1f4” 相同的目录名 000001F4

复制000001F4 表项中F值,将hack1$相应目录的 000003EA,并将复制的000001F4 表项中F值粘贴

到 000003EA表项中的F值处,然后分别选择注册表项中 hack1$ 和 000003EA 导出,然后使用命令删除用户再将刚刚导出的导入注册表即可

计划任务后门&启动项

通过设置计划任务维持权限

Kerberos

大致流程:

第一步AS_REQ:

客户端访问AS,请求包中包含:请求用户名,主机名,加密类型和 Pre-Authentication Data (用户 NTLM hash 加密的时间戳) 以及一些其他信息,AS认证身份

第二步AS_REP:

KDC会向AD 活动目录查询当前用户的密码 hash,然后 AS 会使用 Client_hash 对请求包中的 Authenticator(认证) 进行解密,解密成功且时间戳范围在五分钟内则返回用 krbtgt 用户 hash 加密票据,TGT 里面包含 PAC(PAC 是由 KDC(域控)生成并签名、嵌入在 Kerberos 票据中的授权数据,用于让服务端在不再次查询 KDC 的情况下完成用户的权限判断),PAC 包含 Client 的 sid、Client 所在的组,除此之外 AS 会生成一个临时秘钥 Login session key,并使用用户 (之前发请求那个用户) NTLM-Hash 加密 Login session key 作为响应包的一部分内容

注:PAC是是 Active Directory 对 Kerberos 的扩展,用来承载 “授权信息” 的数据结构,由 KDC 生成并签名,嵌入 Kerberos 票据中,使服务端无需再次查询 DC 就能完成权限判断

  • 不是 Kerberos RFC 原生内容
  • 只存在于 AD Kerberos
  • 解决的是 Authorization(授权),不是 Authentication(认证)

其本质作用我总结为:把 “权限状态” 随票据一起带走,用于在后几步中验证用户是否有对应服务的访问权限,免得再去 DC 中去寻找

第三步TGS_REQ:

客户端将加密的 TGT 发送到具有客户端希望访问的服务的服务主体名称 (SPN) 的票据授予服务器 (TGS)

此时 TGS 通过 krbtgt(krbtgt 是 Kerberos 的 “票据签发根密钥”,用来加密和验证所有 TGT(Ticket Granting Ticket))的 hash 解密 TGT 票据,验证客户端的身份

注:SPN 是 Kerberos 中服务的 “身份证”,客户端正是通过 SPN 告诉 KDC:我要访问哪一个具体服务

第四步TGS_REP:

TGS → 用户,返回 Service Ticket颁发只能被目标服务器解密的门票

TGS 返回两个东西:Service Ticket(服务票据,给目标服务看的)和 给客户端的会话密钥包(Login session key)

TGS 首先会检查是否存在客户端所请求的服务,若存在就会使用 krbtgt 用户的 NTLM hash 解密 TGT 并得到 Login session key

然后用它去解密 Authenticator,解密成功说明在时间戳范围内,通过 TGS 验证,然后 TGS 会给客户端用户发放 ST 服务票据

包括 ticket 和一个新的 session key

第五步AP_REQ:

客户端在收到 TGS-REP 后,获得针对目标服务的 Service Ticket(ST) 以及 Client ↔ Service 会话密钥 当客户端访问目标服务时,会在 AP-REQ 中携带 Service Ticket 和使用会话密钥加密的 Authenticator 发送给服务端 服务端使用自身密钥解密 ST,校验 Authenticator,并基于票据中携带的 PAC 在本地完成身份认证与授权判断

第六步AP_REP:

在启用 Mutual Authentication(认证) 的情况下:

  • 服务端会返回 AP-REP
  • 使用 Kc,s 加密:
    • Authenticator 中时间戳的校验值(如 timestamp + 1)

客户端解密成功后,确认目标服务身份真实

这里解密的密钥就是第四步中给出的新的Login Session Key,解密成功后即Kerberos 双向认证完成

AS:身份认证服务器

TGT:TGT 是一种身份验证票据(临时凭证,相当于入场券–可以请求其他票据),用于从 TGS 处 请求域中特定资源的服务票据

TGS:是 KDC 的一部分,票据授予服务(TGS)获取 TGT 并将票据返回到域上的机器

KDC:KDC 是密钥分发中心,由域控担任

NTML&LDAP

前置知识:

机器用户:特殊的域用户,相当于机器并非个人,在域环境中,计算机上本地用户SYSTEM权限才对应域中的机器用户,在域中的用户名就是”机器名+$“

域用户:域环境中的用户,由域控制器创建,信息都保存在AD当中

NTLM(New Technology LAN Manager)协议是微软用于Windows身份验证的主要协议之一

加密流程:用户密码转16进制->转Unicode格式->对Unicode进行MD4 hash计算

用户密码经过NTLM Hash加密后存储在C:\Windows\system32\config\SAM文件

Lsass.exe:此进程中会存有明文密码,其中访问过本机服务的票据也会存放到此进程当中

ADCS系列漏洞

ESC1

错误配置会导致普通域用户到域管理员的提权。主要体现在证书模板这里,在证书模板中,我们可以设置应用程序的策略

痕迹清理

工具🔧

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇