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


46

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

Сценарий:

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

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

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

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


Какая ОС? Какой сервис?
Кристиан Чупиту

@Cristian - Учетные записи домена Windows - просто проверьте правильность пароля или нет
TheCleaner

Ответы:


77
runas /u:yourdomain\a_test_user notepad.exe

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


1
Умный Роберто. +1
TheCleaner

3
Просто. Элегантный. Мне это нравится.
однобоко

5
Потрясающие! Это решение имеет два важных преимущества перед принятым ответом: 1) доступно на Windows XP + из коробки, не нужно ничего скачивать, 2) связано с этим: поскольку оно от MS, оно не требует от меня доверия к моему пароль к стороннему инструменту неизвестного происхождения.
akavel

2
Serverfault ИТ-администраторы знают это, но если вы являетесь домашним пользователем и находите этот ответ в веб-поиске (кстати, это лучший ответ - использует только то, что поставляется с Windows): на домашнем компьютере приведенная yourdomainвыше часть - это ваша имя компьютера . Найдите это в Панели управления> Система. Одним из значений является буквально то, что «Имя компьютера:». Например, если ваш компьютер зовут «кузнец-ноутбук» и ваше имя пользователя «Джо», вы бы сделалиrunas /u:smith-laptop\joe notepad.exe
Дарин

1
При успешной аутентификации вы можете просто получить сообщение об ошибке, например:1385: Logon failure: the user has not been granted the requested logon type at this computer.
mwfearnley

11

Скрипт 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


new-object directoryservices.directoryentry "",$username,$password- возвращаемое значение, учетные данные работают, исключения, они не работают. Взято из этого ответа, где оно заключено в аккуратную функцию: serverfault.com/q/596602/57144
TessellatingHeckler

5

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

net use \\ имя_компьютера \ имя_ресурса [пароль] / ПОЛЬЗОВАТЕЛЬ:] имя пользователя]

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


1

Вы можете написать простую функцию 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


Пожалуйста, обратите внимание, что это заблокирует учетную запись после 'n' количества неудачных входов в систему, 'n' - это любая политика, которую вы установили. Это всегда должно относиться к любому решению, которое вы используете.
mrTomahawk

Кроме того, эта проверка может игнорировать учетные данные локальных пользователей, если вы не настроите их, указав имя пользователя дважды, как это OpenDSObject("WinNT://domain/userName,user","userName", "password", 1). Источник .
Агостино,

1

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

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


Я предполагаю, что вы предлагаете первоначальное приглашение «Подключиться к Active Directory» в качестве теста для проверки пароля - это, похоже, делает работу из моего тестирования. Неправильный пароль приводит к довольно быстрому появлению запроса «имя пользователя или пароль неверны», так что это будет достойный тест на основе графического интерфейса для работы с ментальным списком возможных паролей.
JimNim

0

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


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

@TheCleaner: Конечно, вы можете создать список слов со всеми возможными паролями для конкретной учетной записи и использовать этот список для набора учетных записей. или один ... Тестирование с SMB или что-то - довольно плохая идея. Он заполняет ваши журналы, запутывает сессии на файловом сервере, генерирует нагрузку на контроллеры домена и файловые серверы и так далее.
Пера

0

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

$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}
}

-1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.