Назад | Перейти на главную страницу

Инструмент для проверки учетной записи пользователя и пароля (тестовый вход)

Да, я могу запустить виртуальную машину или удаленное устройство и попробовать пароль ... Я знаю ... но есть ли инструмент или сценарий, который имитирует вход в систему, достаточный для подтверждения или опровержения правильности пароля?

Сценарий:

Пароль учетной записи серверной службы «забыт» ... но мы думаем, что знаем, что это такое. Я хотел бы передать кому-то учетные данные и получить ответ с «правильным паролем» или «неправильным паролем».

Я даже подумал о скрипте сопоставления дисков с этой учетной записью и паролем, передаваемым, чтобы увидеть, успешно ли он сопоставил диск, но потерялся в логике его правильной работы ... что-то вроде:

-Script запрашивает имя пользователя через msgbox -script запрашивает пароль через msgbox -script пытается сопоставить диск с общим ресурсом, к которому у всех есть доступ -script отключает отображение диска в случае успеха -script возвращает всплывающее окно msgbox с сообщением «Правильный пароль» или «Неверно» Пароль"

Любая помощь приветствуется ... можно подумать, что это редкое явление, для которого не требуется инструмент для поддержки, но ... ну ....

runas /u:yourdomain\a_test_user notepad.exe

Утилита запросит пароль, если введен правильный пароль, запустится блокнот, в противном случае выдаст ошибку 1326: неверное имя пользователя или пароль.

Скрипт Powershell:

#usage: Test-UserCredential -username UserNameToTest -password (Read-Host)

Function Test-UserCredential { 
    Param($username, $password) 
    Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
    $ct = [System.DirectoryServices.AccountManagement.ContextType]::Machine, $env:computername 
    $opt = [System.DirectoryServices.AccountManagement.ContextOptions]::SimpleBind 
    $pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ct 
    $Result = $pc.ValidateCredentials($username, $password).ToString() 
    $Result 
} 

http://powershellcommunity.org/Forums/tabid/54/aft/8034/Default.aspx

Вы также можете использовать:

net use \\ computername \ sharename [пароль] / USER:] имя пользователя]

Если на удаленном компьютере есть общий ресурс с таким именем. Или используйте C$ если учетная запись является администратором.

Вы можете написать простую функцию vbscript, которая может это проверить ... что-то вроде:

Function GoodPassword(strAdminUsername, strAdminPassword, strNTDomain)
    Const ADS_SECURE_AUTHENTICATION = 1

    On Error Resume Next
    Set objIADS = GetObject("WinNT:").OpenDSObject("WinNT://" & _
                        strNTDomain, strAdminUserame, _
                        strAdminPassword, _
                        ADS_SECURE_AUTHENTICATION)
    if err.number = 0 then
       GoodPassword = True
    Else
       GoodPassword = False
    End If
    On Error GoTO 0
End Function

Источники:

http://www.4guysfromrolla.com/webtech/061202-1.shtml

http://hsdn.net/category_3.html

На рабочем столе Windows вы можете использовать Active Directory Explorer от самого SysInternals / MS:

https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer

Вы можете использовать один из многих хорошо известных инструментов для проверки паролей. Я видел L0phtcrack. Возможно, есть даже способ сделать это в автономном режиме с помощью дампа вашей базы данных аутентификации. В «другом мире» мы используем «Джон-потрошитель» для подобных вещей.

Используя приведенный выше код, проверьте все учетные записи домена, чтобы узнать, используют ли они определенный пароль.

$usernames = Get-ADUser -Filter * | select -ExpandProperty SamAccountName

foreach ($username in $usernames) {
$password = "Password"
Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
$ct = [System.DirectoryServices.AccountManagement.ContextType]::Machine, $env:computername 
$opt = [System.DirectoryServices.AccountManagement.ContextOptions]::SimpleBind 
$pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ct 
$Result = $pc.ValidateCredentials("domain\$username", $password).ToString() 
If ($Result -eq "True") {echo "$username" >> C:\result.txt}
}

Откройте PowerShell с помощью права администратора и введите следующие команды:

изменить стоимость your_password и your_username

$PlainPassword="your_password"
$SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText-Force
$UserName = "your_username"
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $UserName,$SecurePassword
Start-Process whoami -Credential $Credentials

Используя это, мы создаем учетные данные с username и password, и передайте эти учетные данные Start-Process.Так как whoami не открывает программу в фоновом режиме, поэтому нам не важно, как ее закрыть.

Если вы пытаетесь проверить пароли пользователей на ПК-А с ПК-В, вы можете сделать это с помощью WinRM и Python.

Включите WinRM на ПК-A и pip install pywinrm на ПК-Б. Передайте предыдущую команду в winrm.Session().run_ps()проверьте результат status_code, 0 - правильный, а 1 - ложный.

Ссылка

Документация Start-Process: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6

Создать учетные данные: http://duffney.io/AddCredentialsToPowerShellFunctions

Как включить WinRM: https://docs.microsoft.com/en-us/windows/win32/winrm/installation-and-configuration-for-windows-remote-management

Быстрая настройка WinRM: https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/set-wsmanquickconfig?view=powershell-6

Базовая конфигурация WinRM от Ansible: https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html

Почему бы не использовать сетевой сервис с аутентификацией (telnet, POP, IMAP, SMTP, что хотите)? С другой стороны, если вы на машине, вы можете попробовать su - userToTest с непривилегированного аккаунта. Если пароль в порядке, вам будет разрешено в userToTest homedir, если оболочка разрешит соединение