本文已参与「新人创作礼」活动,一起开启掘金创作之路。 更新时间:2022.06.13
本文首发乌鸦安全知识星球
1. 原理
利用连按5下Shift漏洞破解win7开机密码。将c:windows/system32/sethc.exe替换为cmd.exe文件,达到新增用户、修改账号密码的的目的。 为了防止被发现,在这里不去修改原来的用户,通过mimikatz方式dump下来所有的NTLM值,并对其进行解密。 当然,除了这个程序之外,还有以下多个程序的快捷方式:
屏幕键盘: C:\Windows\System32\osk.exe
放大镜: C:\Windows\System32\Magnify.exe
旁白: C:\Windows\System32\Narrator.exe
显示切换器 C:\Windows\System32\DisplaySwitch.exe
应用切换器: C:\Windows\System32\AtBroker.exe
2. 环境准备
实验主机:Windows7旗舰版 (无任何杀软)
3. shift后门复现
3.1测试是否存在粘滞键
在正常登录的Windows7用户桌面连续摁5次shift键,看是否有粘滞键提示弹出: 此时有弹出,证明其存在漏洞,然后将机器强制关机。
3.2 启动启动修复
在这里摁住option键,然后关机键就会变成断电键。 关机之后,再正常启动机器:
启动之后,再选择重新启动,就可以进入到启动启动修复模式:

3.3 替换sethc.exe为cmd
然后到这个界面,等待:
在这里选择查看问题详细信息:

在这里选择文件——打开:
找到路径:c盘——Windows——system32——sethc.exe文件 
将该文件重新命名:

再找到该目录下的cmd.exe,将该文件复制后修改为sethc.exe 
重启机器: 
3.4 添加新用户
重启之后,使用5次shift键打开cmd窗口:

在这里如果直接修改test用户的密码,后面无法知道当前的密码,因此在这里添加一个新的用户进去,并将该用户添加到管理员组:
重启机器登录: 
3.5 获取原用户密码
登录test2后之后,使用工具mimikatz工具将所有用户的密码dump下来: 
privilege::debug 提取权限 sekurlsa::logonpasswords 抓取密码
当前使用,只能抓到test2的用户密码,在这里我们需要test用户的账号和密码信息 在这里使用命令lsadump::lsa /inject能够导出所有用户的hash值:

209c6174da490caeb422f3fa5a7ae634 通过解密可知当前密码为:admin

3.6 删除新增用户
此时将机器重启,利用test admin进行登录,再将当前的test2用户删除: 进入环境之后,发现是无法找到cmd程序的,因此在这里需要找到已经修改过的sethc.exe,将其复制为cmd.exe: 
此时即可通过cmd进行运行: 
此时删除多余的用户即可: 
4. 总结
本后门存在于Windows 2003、xp、win7等。
\