ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

VMware虚拟机忘记密码?三步重置Windows密码与原理避坑

VMware虚拟机忘记密码?三步重置Windows密码与原理避坑 手里的一个老项目虚拟机放了快两年没开机密码早就忘得干干净净。这事要是搁在物理机上多半只能重装系统但好在它跑在VMware Workstation Pro里面虚拟机文件还是完好的要找回访问权限或者说重置系统登录密码其实有不止一套成熟的办法。这篇就把我做过的整个过程完整记录一遍从准备工作、核心实操到原理拆解再到踩坑记录一次性讲清楚。先把丑话说在前面本文所有操作都只针对你拥有合法使用权的虚拟机。自己建的、公司给你运维的、项目交接过来明确归你管的都可以用未经授权去碰别人的虚拟机不管是物理机还是VMware里的都是违法违规行为。下面的方法只作正当用途别动歪脑筋。1. 准备工作与重置思路选型动手之前先想清楚走哪条路线。VMware Workstation Pro里重置密码本质上不是“破解”而是对虚拟机系统文件做授权范围内的恢复操作。你手里有虚拟磁盘文件vmdk/vmem有控制台权限有快照能力这比修物理机舒服太多了。但路线选不对后面会浪费时间甚至把系统搞坏。1.1 工具、镜像与版本选型先说VMware Workstation Pro本身。我这次用的是17.6.3版本也就是17.x序列里比较新的一个维护版本对Windows 11和Windows Server 2022的虚拟机支持很稳创建虚拟机时的硬件版本也够新。如果你还在用15.x或者16.x操作界面和菜单名称略有差异但核心逻辑是一样的不需要为了重置密码专门升级。接下来要准备一个Windows安装镜像ISO格式。注意一个关键点镜像的Windows大版本尽量不低于虚拟机里装的那个系统。比如虚拟机里是Windows 10 22H2你手里有官方Windows 10或Windows 11镜像都能用如果虚拟机里是Windows Server 2019最好就找Server系列的镜像避免后续修复环境里的工具版本不匹配。为什么要准备这个ISO因为原版安装镜像自带“修复计算机”和命令行环境这是最干净、最可控的恢复通道。如果你习惯用第三方PE工具盘也不是不行。PE里通常带NTPWEdit、Passwd Reset这类图形化密码修改工具操作直观。但我要提醒一句不是所有PE都能在VMware虚拟机里正常启动尤其是精简版PE偶尔会缺NVMe或SCSI控制器驱动导致进去之后看不到硬盘。所以我的建议是优先用原版Windows ISO自带的命令行恢复模式实在搞不定再考虑PE。这篇后面两条路线都会讲。VMware Tools要不要装它不参与密码重置但如果你平时给虚拟机装了VMware Tools重置完密码进入系统后显示分辨率、剪贴板共享、鼠标流畅度都会正常省去后续折腾。如果之前没装重置完成后记得补装一下。1.2 三种主流重置思路对比针对VMware Workstation Pro里的Windows虚拟机主流恢复密码的思路有三条我列个表方便你对照选择思路核心做法需要工具优点风险/缺点PE工具直接改SAM启动到PE用NTPWEdit等工具加载系统盘上的SAM文件清除或修改密码第三方PE、密码重置小工具速度快图形界面适合新手PE兼容性问题工具来源需可靠原版ISO Utilman替换用Windows安装镜像进入修复命令行把登录界面“轻松使用”按钮替换成cmd再通过命令行改密码官方Windows ISO全程不使用第三方工具干净可靠步骤稍多需要手敲命令离线提取哈希 字典碰撞挂载vmdk提取SAM/哈希用hashcat等按字典或掩码跑密码7-Zip/FTK Imager、hashcat、字典文件能找回原密码明文适合密码审计耗时密码强时跑不出来工具链复杂日常恢复访问权限我推荐第二条路线也就是原版ISO Utilman替换。它不依赖任何来路不明的PE工具也不会在系统里留下额外软件痕迹逻辑清晰每一步都可控。第一条路线适合你对PE足够熟悉、想快点完事的情况。第三条路线是“想知道密码明文”时才需要的如果你只是想重新进系统完全没必要去跑字典太浪费时间。2. 实操Windows虚拟机密码重置完整流程这一章是全文的重头戏。我按从零开始的顺序写先把ISO挂进虚拟机然后分别演示PE路线和原版ISO命令行路线你选一条跟着做就行。2.1 把ISO挂载进VMware并调整启动顺序打开VMware Workstation Pro在虚拟机列表里选中目标虚拟机右键选择“设置”。切到“CD/DVD (SATA)”一项勾选“启动时连接”然后在右侧选择“使用ISO映像文件”点“浏览”找到你下载好的Windows安装镜像。接着调整引导顺序。这里有个新手最容易懵的地方虚拟机的引导菜单快捷键不同固件类型不一样。传统BIOS的虚拟机开机时快速按F2进入BIOS设置或者按Esc弹出引导设备菜单UEFI类型的虚拟机开机按Esc进入Boot Manager后再选择“CD-ROM Drive”启动。如果你不确定自己的虚拟机是哪种固件创建虚拟机时没特意改过的话默认就是BIOS按F2和Esc都能试但一定要在虚拟机窗口内部点击一下鼠标把键盘输入焦点移进去再快速连按。在BIOS界面里找到Boot选项卡把CD-ROM Drive的顺序调到Hard Drive前面。保存退出后虚拟机会从ISO启动进入Windows安装程序的蓝色界面。到这里挂载就成功了。注意如果是UEFI且开启了安全启动部分第三方PE会直接被拒载。所以再次建议优先用原版Windows ISO它自带合法的签名引导不会被拦。2.2 不依赖PE用原版ISO里的命令行重置密码这是我最推荐的路线全程不用第三方工具只用安装镜像自带的功能。第一步从ISO启动后到语言选择界面先别急着点“下一步”。按下ShiftF10会弹出一个命令提示符窗口。这个命令提示符运行在Windows预安装环境里拥有对硬盘分区的基本访问权限。第二步确认系统分区盘符。这一步特别重要因为在预安装环境里盘符分配和正常系统里不一样。通常系统分区是D:因为C:可能被预留的恢复分区或ESP分区占用了。你用下面这组命令来确定diskpart list volume exit看到列表后靠“大小”和“卷标”来判断哪个是你的系统盘。比如你创建虚拟机时给了80G磁盘那那个80G左右、文件系统是NTFS的卷就是系统盘。假设它是D:记下来。第三步备份原始的Utilman.exe并替换成cmd.exe。Utilman.exe就是Windows登录界面右下角那个“轻松使用”按钮对应的程序。在命令行里依次执行ren D:\Windows\System32\Utilman.exe Utilman.bak copy D:\Windows\System32\cmd.exe D:\Windows\System32\Utilman.exe如果你命令执行时报“找不到文件”先确认盘符对不对或者用dir D:\Windows\System32\Utilman.exe看看文件是否存在。替换完成后直接关闭命令行点界面右上角的“×”关闭安装程序选择“立即重启”。记住重启时要把ISO从虚拟机里断开也就是在VMware菜单栏“虚拟机”-“可移动设备”-“CD/DVD”里断开连接或者直接在设置里把“启动时连接”取消勾选否则又会进安装界面。第四步等虚拟机正常进入Windows登录界面后点右下角的“轻松使用”图标。你会发现弹出的不是辅助功能设置而是一个命令提示符窗口而且是以系统最高权限运行的。因为登录界面的辅助工具本来就是以SYSTEM账户级别启动的我们把它换成了cmd所以这个cmd也带着SYSTEM权限。在窗口里执行net user administrator 你的新密码如果你要重置的是其他本地账号把administrator换成对应用户名。如果该账户被禁用了在改密码前先执行net user administrator /active:yes。执行完再正常输入密码登录即可。第五步登录进去后务必把Utilman.exe恢复原样。以管理员身份打开命令提示符执行ren C:\Windows\System32\Utilman.bak Utilman.exe或者更稳妥一点用copy命令把Utilman.bak覆盖回去。这一步不做的话以后每次登录界面点“轻松使用”都会弹出一个开机即得SYSTEM权限的cmd这是非常严重的安全隐患。我见过有人重置完密码就忘了这茬结果虚拟机被人用这个方法直接拿到管理员权限。2.3 用PE工具快速清除密码的补充方案如果你手头有靠谱的PE镜像操作会更直观。启动PE进入桌面后打开NTPWEdit 0.7或类似工具点“打开”按钮选择系统盘里的Windows\System32\config\SAM文件工具会列出所有本地账户。选中目标账户可以点“清除密码”把密码置空也可以输入新密码。完成后保存重启虚拟机正常登录。这里有个细节NTPWEdit加载SAM文件时必须以管理员身份运行否则读不了NTFS分区和SAM文件。PE里大多数工具默认就是管理员运行但如果你用的是精简PE最好确认一下。另外用“清除密码”直接置空比“修改密码”更快少一层出错风险。登录后系统可能会提示你设置新密码顺手设一个即可。3. 原理拆解密码为什么能被这样“破”掉很多朋友操作成功了但不清楚底层发生了什么。我花点篇幅把原理讲透这样你以后再遇到类似问题自己能举一反三。3.1 Windows密码存储机制与SAM数据库Windows系统里本地账户的密码并不是明文存放在某个文件里的。密码会经过不可逆的哈希计算生成一段固定长度的摘要信息存储在一个名为SAM的安全账户管理数据库文件里。路径是%SystemRoot%\System32\config\SAM。用户登录时系统用你输入的密码做同样的哈希计算然后和SAM里的哈希比对一致就放行。你可以把SAM数据库想象成一本“加密账本”里面记着所有本地账户的“唯一指纹”。正常登录时指纹匹配就发通行证忘记密码时我们没有原始密码没法生成匹配的指纹。但重置工具做的不是“伪造指纹”而是直接把账本里那条记录改掉——清空或者换成新密码的指纹。这就相当于你丢了钥匙不去配钥匙而是直接把门锁拆了换一把。所以所有的密码重置工具无论是PE图形工具还是命令行下的net user本质都在做同一件事以高权限访问SAM数据库修改账户的密码哈希。之所以需要命令行、PE等外部环境是因为正常登录的Windows在你无法提供密码的时候不会给你修改SAM的权限。3.2 登录界面辅助工具劫持的原理第2.2小节里我们把Utilman.exe换成了cmd.exe。这招之所以能成功关键在于Windows登录界面的底层设计。在用户还没登录时Winlogon进程就已经启动了系统辅助工具——包括屏幕键盘、放大镜、讲述人、轻松使用等。这些工具需要在登录界面就能使用所以它们是以System权限运行的而不是普通用户的权限。System权限比管理员还高能读写SAM数据库。我们把Utilman.exe替换成cmd.exe后登录界面点击“轻松使用”按钮系统去执行的就是cmd.exe且是以System权限执行。于是我们获得了一个高权限的命令行在里面执行net user修改密码自然畅通无阻。这就好比你偷偷给门卫换了一张脸让他以为门卫还是原来那个人实际已经换成了自己人于是大门随便进。值得注意的是这个机制在Windows 7到Windows 11里都有效属于系统刻意保留下来的辅助功能设计。微软官方并没有通过补丁修复它因为修复成本高且容易影响无障碍功能。所以在VMware这类虚拟化环境里它成了密码恢复最可靠的手段。3.3 离线哈希提取与字典攻击的原理如果不想修改密码而是想找回原密码的明文那就得走离线哈希破解的路线。把虚拟机电源关闭用VMware的“虚拟机”菜单把vmdk磁盘映射出来或者挂载到另一台机器上然后提取SAM数据库和你自己的哈希文件。提取到的用户哈希通常是指NTLM哈希也就是Windows域里使用的认证凭证格式。拿到哈希之后用hashcat这类工具跑字典或掩码攻击。逻辑也很直白字典文件里的每个候选密码都用同样的算法计算哈希然后和目标哈希比对相同就说明找到了明文。所以之前热搜词里那个“python密码破解字典下载”其实指的就是这类字典文件里面收集了海量弱口令、常用密码组合。比如rockyou.txt就是安全圈里最常见的字典包含1400多万条密码。我用一个简单的Python思路示意这个原理import hashlib target_hash 目标哈希值 with open(rockyou.txt, r, encodinglatin-1) as dic: for line in dic: password line.strip() ntlm_hash hashlib.new(md4, password.encode(utf-16le)).hexdigest() if ntlm_hash target_hash: print(密码找到了:, password) break实际场景里不会用纯Python跑这种大量计算都用hashcat利用显卡GPU加速。看完这段代码你就明白了破解效率取决于密码强度、字典质量和硬件算力。如果你的密码是Pssw0rd这类常见弱口令字典一两秒就撞出来了如果是20位随机大小写加符号字典跑完也找不到只能靠掩码攻击或干脆放弃。所以这个思路更适合做企业密码复杂度审计不适合日常找密码。3.4 为什么在虚拟机里重置密码比物理机容易得多最后说一个VMware环境特有的优势虚拟化把硬件边界打散了。物理机忘密码你得拆机引导PE、改BIOS、动硬盘一个环节出错就白费虚拟机呢vmdk就是普通文件你能随意挂载、卸载、复制、快照还能随时从BIOS引导菜单换启动项。如果创建虚拟机时打了快照回滚一下甚至不用改密码——不过那会丢失快照之后的所有数据适用场景有限。另外VMware Workstation Pro支持在虚拟机设置里把硬盘挂载为独立磁盘或者用“映射”功能直接以只读方式查看虚拟机文件这让离线提取哈希变得非常轻松。你在物理机上要拿SATA转USB的硬盘盒这里只需要点几下鼠标。这也是为什么密码恢复案例里VMware虚拟机占了很高比例的原因。4. 常见问题与避坑指南操作过程中踩坑是难免的我把这几年遇到的和带教时见过的高频问题统一整理出来每一条都有对应的排查思路。4.1 虚拟机引导不进安装界面或PE现象是刚打开虚拟机电源又直接进了登录界面。先看两个点第一ISO是不是在启动时已经连接上可以在VMware窗口右下角的光驱图标上看有没有变成亮着的状态第二启动顺序有没有调对。如果BIOS里CD-ROM本来就在硬盘后面开机时又没来得及按热键就会直接跳过光驱。解决办法是重启后按住F2进BIOS手动调序或者开机后狂按Esc/Enter在弹出的引导菜单里手动选择“CD-ROM Drive”。再有一种情况使用PE镜像却一直黑屏或者报“Operating System not found”。原因多半是UEFI安全启动拦截了PE或者PE镜像本身是32位而虚拟机是64位固件。解决办法很简单换回原版Windows ISO或者去VMware设置里把“固件类型”改成BIOS并关闭安全启动。4.2 重置密码后系统数据出现异常这是最容易被忽略的地方。如果你的虚拟机里开过Windows自带的EFS加密比如对某些文件夹右键“属性”-“高级”-“加密内容以便保护数据”那么重置密码会导致这些文件无法解密。因为EFS的私钥是用你的DPAPI凭据加密的密码一变解密密钥就解不出来。遇到这种情况只能尝试去找当初的证书备份或者认栽恢复系统备份。BitLocker也是个大坑。如果系统盘或数据盘开了BitLocker而且你用的是基于TPM的自动解锁那重置系统账户密码不会动BitLocker的密钥因为BitLocker恢复密钥是独立保存的。但如果你重置的是管理员密码且BitLocker密钥和账户状态绑定得比较紧某些恢复场景下可能提示输入48位恢复密钥。所以动手前先想清楚原密码虽忘了但BitLocker恢复密钥你还有吗没有的话尽量走原版ISO替换法不要用PE工具直接改SAM减少触发恢复机制的概率。4.3 不同系统版本的操作差异Windows 7和Windows Server 2008 R2Utilman替换法同样有效但登录界面图标位置不同在左下角“轻松访问”按钮功能一样。PE工具如NTPWEdit也能用但SAM文件格式较老建议用0.7版本。Windows 10/11如果系统是S模式或Windows 11 SE命令行恢复仍是Secure模式的例外路径实测都有效。但有些经过深度定制的镜像比如公司企业版封装可能会禁用Utilman入口或修改登录UI替换前先检查dir D:\Windows\System32\Utilman.exe是否存在没有就直接用PE工具。域账户和本地账户的区别如果你的虚拟机之前加过域登录界面显示的是域用户那你用本地管理员重置的只是本机账户密码域账户的凭据不在SAM库里改不了也绕不过。正确做法是通过域管理员在域控制器里重置密码然后虚拟机重新加入域或用缓存凭据登录。这一点在交接虚拟机时特别容易踩雷。4.4 字典文件质量与爆破效率如果你确实需要做密码审计字典质量决定了破解成功率。网上下载的字典鱼龙混杂很多是几G的“大全”但实际去重率极低跑起来浪费GPU时间。我的建议是用CTF圈和渗透测试里常用的开源字典集比如SecLists的Passwords目录或者rockyou.txt解压后有1400多万条。针对个人虚拟机这种场景还可以用cupp工具结合目标账户的姓名、生日、项目代号生成定制字典命中率比通用字典高很多。另一个容易被忽视的点密码破解时哈希类型别选错。Windows本地账户默认用NTLM哈希hashcat里对应的模式是-m 1000。如果你提取的是域缓存凭据或Kerberos哈希模式又不同。参数错了GPU跑几小时全是无效计算白白浪费时间。hashcat -m 1000 -a 0 hash.txt rockyou.txt-a 0表示纯字典模式hash.txt里每一行放一个NTLM哈希。跑之前先用--show确认一下格式正确性可以节省不少时间。4.5 重置完成后的善后处理密码恢复完成只是第一步。登录系统后一定记得做这几件事如果是用Utilman替换法恢复Utilman.exe原文件。检查计划任务、服务配置、共享文件夹权限里有没有保存着旧密码的凭据比如数据库连接字符串、备份计划、网络共享账户等。如果虚拟机里装了vSphere客户端或云备份工具重新输入新密码并测试连接。回头去VMware Workstation Pro里给这个虚拟机打一个新快照免得下回又重蹈覆辙。5. 密码恢复的边界意识与防御性建议这一章不聊技术聊点更重要的东西。密码重置、哈希破解这类能力本质上是一把双刃剑。临时解决一次问题没有任何问题但如果形成习惯或者被别人利用后果非常严重。5.1 哪些操作绝对不要碰未经授权检查或重置他人虚拟机密码哪怕虚拟机是自己公司内部的只要没有明确的运维授权和合规流程都属于越权操作。对属于他人的虚拟机跑字典、提取哈希这就更严重了可能涉及计算机信息系统非法侵入或破坏。这篇文章里的方法只适用于你自己创建的、贵司资产台账里明确属于你运维范围内、或者项目交接时白纸黑字写清楚的虚拟机。如果你在公司最好先走资产确认流程这台机器是谁的项目、谁负责运维、有没有审批记录再决定动不动手。很多时候同事只是把密码存在了共享密码本里根本轮不着重置这一步。先问一圈比上来就敲命令省事得多也安全得多。5.2 预防为主让虚拟机密码不再成为事故坦率说重置密码属于“紧急灭火”更值得投入精力的是“防火”。我自己的习惯是给每台虚拟机做三件事第一统一密码策略和资产台账。虚拟机命名里带上项目号和用途密码按统一规则生成放在KeePass或Bitwarden这样的密码管理器里。密码管理器本身有独立主密码就算虚拟机密码忘了花30秒就能查出来。第二日常快照备份。VMware Workstation Pro支持多快照给关键虚拟机在重要变更前打一个快照或者用克隆功能做副本。密码忘了、系统坏了、补丁打崩了都能回滚。这个方法比密码重置还快几秒钟的事。第三把“恢复密码SOP”写进团队文档。包括这篇里的Utilman替换步骤、PE工具存放路径、密码管理器入口配置成标准操作流程。这样以后无论是你还是同事遇到同类问题都能按图索骥不用在搜索引擎里临时找教程也减少走偏门工具的风险。5.3 VMware自身的加密与保护机制多说一句VMware Workstation Pro本身也提供了虚拟机加密能力。如果你创建虚拟机时勾选了“加密虚拟机”并设置加密密码那么vmdk文件是加密的。这种情况下重置客户机系统密码之前你得先能解开虚拟机本身的加密锁——没有原始加密密码的话连虚拟磁盘文件都读不了更不要提改什么SAM了。这也是很多企业要求虚拟机必须加密的原因之一它能有效阻止有人把vmdk拷走再离线破解。所以如果你接手一台带加密的VMware虚拟机先找加密密码和恢复文档再考虑系统密码的事。VMware 17版本“虚拟机设置”-“选项”-“访问控制”里直接能看到加密状态操作界面很清楚。6. 实操总结与个人体会这套过程从头到尾做下来最深的感受是VMware Workstation Pro作为桌面级虚拟化工具在故障恢复和系统维护方面真的比物理机友好太多。vmdk文件随手就能挂载、快照可以随时回滚、启动设备随便改忘密码这种在物理机上劝退的事在虚拟机里就是一小时内的常规操作。我个人的经验是遇到忘密码的虚拟机千万别急着重装系统。先花几分钟确认虚拟机版本、系统版本和数据盘加密状态然后果断走原版ISO替换Utilman的路线。它不依赖第三方工具、不需要额外下载不确定来源的PE只要有一份微软官方原版ISO就能完成最稳也最干净。如果你只是临时想进系统看一眼PE工具清空密码是最快的但前提是你对PE的兼容性有把握。最后再分享一个小习惯每次重置完密码后我都会顺手在虚拟机目录下放一个README.txt记录这台机器的IP地址、所属项目、最近一次密码变更时间和重置方式。反正虚拟机文件是folders多放一个说明文件不占多少空间但三个月后回来看能帮你省出一个下午的迷茫时间。密码管理没有一劳永逸凭据回收、权限交接、审计记录每一个环节写清楚才是真正避免“破密码”这件事反复发生的根本。
返回列表