天天看点

Kerberos域安全

1.kerberos协议

Kerberos协议由麻省理工学院MIT提出,目前主流版本为RFC 4120定义的V5版

Windows、 Linux和Mac这3大主流操作系统均支持Kerberos协议,Windows 2016支持最新的Kerbeos ARMOR版

Kerberos域安全

DS ( Domain Server),存储了每个域用户的口令散列值NTLM。根据功能划分,DC包含2大模块: AS、TGS

AS(Authentication Server ) ,认证用户,用户使用NTLM加密时间戳,AS使用用户的口令NTLM解密时间戳,进行认证。发布认证票据

TGS ( Ticket Granting Service),根据认证票据,发布授权票据。认证票据可以多次循环使用

Windows下kerberos实现过程

Kerberos域安全

1.在win10下用域普通用户查看

whoami
klist /?
klist sessions    #查看票据,
klist tgt    查看tgt票据,0x5为权限不足,拒绝访问
klist purge    清除票据
klist    查看票据
           
Kerberos域安全

2.域分组

微软对分组进行了分类,域内的组包括分发组和安全组2大类

  • 分发组(distribution groups),用于创建电子邮件分发列表,只能 用于与电子邮件相关的应用,例如Exchange服务器,应用范围较小;
  • 安全组(Security groups),用于管理资源\对象的权限,也是我们 最常见、最关心的组,只讨论安全组

既然组有不同的等级,那每个等级的作用域(Group Scope)也会不 同,活动目录定义了安全组的3种作用域 通用组(Universal Group),作用于整个森林域,表示在整个森林 内部的所有域间通用,因此该组的变动要尽可能的小,每次变动都 要同步更新到全局数据库中

Kerberos域安全

全局组(Global Groups),只能作用于本域,不能跨域更不能跨森 林,一般来说每个全局组都有一个自己的名字,以便于区分和使用 域本地组(Domain Local Group),只能作用于特定对象,例如证书 发布、打印操作、备份操作等

域本地分组直接对应着域内资源。一个用户加入域中,会被分配至 某个全局分组,而不是域本地分组。所以域本地分组的成员应该是 全局分组,全局分组的成员才是用户 通用组非常特殊,只存在于森林的根域中,所以其成员只能是根域 的全局组;同时,由于通用组作用范围为森林内部的所有域,所以 当作用于特定域时,例如图中的A域,该组又应该隶属于A域的某个 域本地组,这样才能实现对A域资源的访问

域管理组(Domain Admins),这是域环境中最常见的,对域内所有 的控制器、服务器、主机和活动目录有完全的控制权限。隶属于Us ers容器,容器路径为CN=Domain dmins,CN=Users,DC=lab,DC=adsec,D C=com 管理员组(Administrators),改组定义为仅对域服务器和活动目录 有完全控制权,是域本地组范畴。隶属于内置Builtin容器,容器位 置为CN=Administrators,CN=Builtin,DC=lab,DC=adsec,DC=com 企业管理组(Enterprise Admins),只存在于根域,每个子域将该 组加入本域的域管理组,因而具备对域的完全控制权。

域管理组(Domain Admins),这是域环境中最常见的,对域内所有的控制器、服务器、主机和活动目录有完全的控制权限。隶属于Users容器,容器路径为CN=Domain dmins,CN=Users,DC=lab,DC=adsec,D C=com

管理员组(Administrators),该组定义为仅对域服务器和活动目录有完全控制权,是域本地组范畴。隶属于内置Builtin容器,容器位 置为CN=Administrators,CN=Builtin,DC=lab,DC=adsec,DC=com

企业管理组(Enterprise Admins),只存在于根域,每个子域将该 组加入本域的域管理组,因而具备对域的完全控制权。

3.域信息获取与分析 

1.基础信息获取与分析 

当前主机所在域的域名、网段、域服务器,多少域
systeminfo、ipconfig /all、net view /domain
基础信息获取与分析
域的分组、用户、主机、服务器、账户策略
net group /domain 、net group "domain admins" /domain 、dsquery user、PowerShell\ActiveDirectory
           
Kerberos域安全

域普通用户使用csvde收集信息

csvde -m -f outpu.csv
           
Kerberos域安全

2.组策略获取与分析

\$DCServer\sysvol\domain\policies
\$DCServer\sysvol\domain\scripts
组策略获取与分析
PolicyAnalyzer
分析特殊组策略、作用域
           
net use \\win2016-dc01.adsec.com
net view \\win2016-dc01.adsec.com 
dir \\win2016-dc01.adsec.com\sysvol
 dir \\win2016-dc01.adsec.com\sysvol\adsec.com\Policies\ 
           
Kerberos域安全

3.口令NTLM获取与分析

mimikatz
privilege::debug
sekurlsa::logonpasswords
lsadump::lsa /patch
Mimikatz.exe “privilege::debug” “sekurlsa::logonpasswords”
“lsadump::lsa /patch” exit
           

4.安全日志获取与分析

C:\Windows\System32\winevt\Logs\Security.evtx
文件拷贝
cp C:\Windows\System32\winevt\Logs\Security.evtx .
Get-EventLog -LogName Security | Format-List -Property * |Out-File 3.txt

使用系统自带的日志查看工具
Log Parser
高权限用户的登录
特定账号的登录
远程桌面登录
           

4.组策略攻击

  • 组策略中的口令明文
  • 组策略中的口令密文
  • 组策略攻击客户端

微软收购“PolicyMaker”,在Win 2008中发布了GPP(Group Policy Preferences),KB943729,在某些场景存储使用凭据更改本地Administrator密码。

  • 映射驱动(Drives.xml)
  • 创建本地用户 数据源(DataSources.xml)
  • 打印机配置(Printers.xml)
  • 创建/更新服务(Services.xml)
  • 计划任务(ScheduledTasks.xml)
  • 更改本地Administrator密码

使用powersploit的PowerView模块查找组策略中关于密码的文件

Get-GPPPassword
           

组策略攻击客户端

1.登录或者注销脚本作为攻击载体

2.强制更新组策略

gpupdate /force /target:user
           

防御

禁用组策略中的Server服务,重启系统

5.PTH攻击

Pass The Hash-PTH

获取一台主机的本地管理员组成员账号的口令NTLM 后,不需破解获取口令明文,使用PTH方式,将管理员账 号及NTLM注入当前会话作为凭据,利用该凭证可以渗透 获取周围主机的管理权限 对方主机需存在相同的账号,且是管理员组成员。在Windows NT 5.x系统中,管理员组账号的网络登 录均能获取系统管理权 在Windows NT 6.x系统及更高的版本中,管理员组 (SID非500)账号的网络登录不能获取系统管理权 administrator(SID为500)账号的网络登录能获取系统管理权限。

UAC

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\Policies\System\FilterAdministratorToken,系统中一个有Admin Approval Mode,UAC就是通过上面的注册表键值来判断,默认为0。如果设置为1,则SID为500的管理员也不能通过网络登录的方式获取高权限。

HKLM\SOFTWARE\Microsoft\Windows\CurrentV ersion\Policies\System\LocalAccountTokenFilterPolicy,如果 在注册表中有这个键值,并且设置为1,则所有的管理组成员都可以通过网络登录获取高权限。且不管上面的一个表项FilterAdministratorToken的值

域内用户的PTH

域用户是本地管理组成员的PTH方式 添加域用户为登录主机的本地管理员组