当前位置: 首页 > news >正文

在本地校验密码或弱口令 (windows)

# 0x00 背景

需求是验证服务器的弱口令,如果通过网络侧校验可能会造成账户锁定风险。在本地校验不会有锁定风险或频率限制。

# 0x01 实践

## 1 使用 net use 命令


可以通过命令行使用 net use 命令来验证本地账户的密码。打开命令提示符(CMD),然后输入以下命令:

net use \\localhost\IPC$ /user:用户名 密码

net use \\localhost\IPC$ /user:00e04c123456 00e04c123456

将 用户名 替换为你要验证的本地账户名,密码 替换为相应的密码。如果输入的密码正确,命令将成功执行;如果密码错误,则会提示验证失败。

注意
net use \\localhost\IPC$   这个命令不会验证密码,不可以

runas /user:用户名 "命令"  # 会提示输入密码,可以用来验证,但是交互式

## 2 使用 PowerShell (本地无需输入密码,报错)

也可以使用 PowerShell 来验证本地账户的密码。以下是一个示例脚本:

$Username = ".\00e04c123456"; $Password = "00e04c123456" | ConvertTo-SecureString -AsPlainText -Force;$Credential = New-Object System.Management.Automation.PSCredential($Username, $Password);
try { $null = Get-WmiObject -Class Win32_ComputerSystem -Credential $Credential Write-Host "1" } catch { Write-Host "2" }

$Username = ".\00e04c123456"; $Password = "00e04c123456" | ConvertTo-SecureString -AsPlainText -Force; $Credential = New-Object System.Management.Automation.PSCredential($Username, $Password); try { Invoke-Command -ScriptBlock { Get-WmiObject -Class Win32_ComputerSystem } -Credential $Credential -ComputerName "localhost" Write-Host "1" } catch { Write-Host "2"}

## 3 调用windows login api (未测试)

Here’s a simple example of how to use the LogonUser function in C++:

#include <windows.h>
#include <iostream>

int main(){
    HANDLE hToken;
    const char* username = "User";
    const char* password = "Password";
    const char* domain = "Domain"; // Use NULL for local accounts
    if(LogonUser(username, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &hToken)) {
        std::cout << "User logged in successfully."<< std::endl;
        // Perform actions as the logged-in user...CloseHandle(hToken); // Don't forget to close the token handle
    } else{
        std::cerr << "LogonUser failed with error: "<< GetLastError() << std::endl;
    }
    return 0;
}

## 4 Hids 检查windows弱口令逻辑 

推测可以实现的一个逻辑:

1.net user 跑出所有用户
2.遍历pwd字典 net use 强制使用密码验证
   如果验证到密码,跳出循环,del net use share,再验证下一个用户
3.好处是不会造成账户锁定

不强制输入密码是无法认证的,本地直接建立连接了。

密码错误截图如下:

反之,如果密码正确,会生成一个IPC链接。net use命令可以查看到。

相关文章:

  • 汽车 OTA 升级:提升下载与升级速度,优化用户体验
  • iOS主要知识点梳理回顾-4-运行时类和实例的操作
  • MAC 系统关屏幕后电量消耗极快 Wake Requests
  • 服务器中部署大模型DeepSeek-R1 | 本地部署DeepSeek-R1大模型 | deepseek-r1部署详细教程
  • Win10环境借助DockerDesktop部署Open web UI集成DeepSeek
  • 【二叉树学习7】
  • 【NLP 21、实践 ③ 全切分函数切分句子】
  • webpack打包优化策略
  • SpringMVC环境搭建
  • 数据库——韩顺平(每日进行更新,直至更完)
  • 【Git】三、远程管理
  • Java 大视界 -- 深度洞察 Java 大数据安全多方计算的前沿趋势与应用革新(52)
  • MySQL数据库误删恢复_mysql 数据 误删
  • 物联网领域的MQTT协议,优势和应用场景
  • 大模型参数规模解析:32B中的“B“代表什么?如何影响AI性能?
  • C# CultureInfo 地区影响字符串
  • 如何通过腾讯 ima.copilot 训练自己的知识库
  • Repo、manifest以及Gerrit分别是什么?
  • C#的async异步方法里如果使用了await,那么它跟同步方法有什么区别?
  • KubeSphere 和 K8s 高可用集群离线部署全攻略
  • 坚持科技创新引领,赢得未来发展新优势
  • 中吉乌铁路重点控制性工程开工建设,包括三座隧道
  • 卸任兰大校长后,严纯华院士重返北大作报告
  • 在循环往复的拍摄中,重新发现世界
  • 俄罗斯延长非法滞留外国人限期离境时间至9月
  • 龚正会见委内瑞拉副总统罗德里格斯