Інструмент для перевірки облікового запису та пароля користувача (тестовий логін)


46

Так, я можу запустити VM або пульт дистанційного керування на щось і спробувати пароль ... я знаю ... але чи є інструмент або скрипт, який буде імітувати логін достатньо лише для підтвердження або заперечення правильності пароля?

Сценарій:

Пароль облікового запису сервера "забутий" ... але ми думаємо, що ми знаємо, що це таке. Я хотів би передати повноваження до чогось і дати йому відповісти "правильним паролем" або "неправильним паролем".

Я навіть замислювався над сценарієм відображення диска з тим обліковим записом користувача та паролем, щоб переконатися, чи вдало він відобразив диск чи ні, але втратив логіку, щоб він працював правильно ... щось на кшталт:

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

Будь-яка допомога вдячна ... Ви можете подумати, що це буде рідкісне явище, не вимагаючи інструменту для його підтримки, але ... ну ....


Яка ОС? Яка послуга?
Крістіан Цюпіту

@Cristian - Облікові записи домену Windows - просто перевірте, чи правильний пароль чи ні
TheCleaner

Відповіді:


77
runas /u:yourdomain\a_test_user notepad.exe

Утиліта запропонує ввести пароль, якщо правильний пароль надано, блокнот запуститься, якщо ні, він створить помилку 1326: ім'я користувача або пароль невірні


1
Розумний Роберто. +1
TheCleaner

3
Простий. Елегантний. Мені це подобається.
Lopsided

5
Дивовижно! Це рішення має дві важливі переваги перед прийнятою відповіддю: 1) доступна в Windows XP + поза коробкою, не потрібно нічого завантажувати; 2) пов’язана з цим: оскільки це з MS, це не вимагає від мене довіри пароль до стороннього інструменту невідомого походження.
akavel

2
ІТ-адміністратори серверів за замовчуванням знають це, але якщо ви домашній користувач, що шукає цю відповідь за допомогою веб-пошуку (це найкраща відповідь, до речі, використовує лише речі, які постачаються з Windows): на домашньому комп’ютері yourdomainчастина вище ім'я комп’ютера . Знайдіть це на Панелі управління> Система. Одне із значень - це буквально те, що "Ім'я комп'ютера:". Наприклад, якщо на вашому комп’ютері звуть "smith-laptop", а ваше ім'я користувача "joe", ви б це зробилиrunas /u:smith-laptop\joe notepad.exe
Daryn

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

Ви також можете використовувати:

чисте використання \\ ім'я комп’ютера \ ім'я користувача [пароль] / USER:] ім'я користувача]

Якщо на віддаленому комп’ютері є частка з цим іменем. Або використовувати, 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" як тестовий випадок із паролем - це, здається, справляється з моїм тестуванням. Неправильний пароль призводить до підказки "ім'я користувача або пароль невірно" досить швидко, тому це був би гідний тест на основі GUI, щоб опрацювати ментальний список можливих паролів.
JimNim

0

Ви можете використати один з багатьох відомих інструментів для тестування паролів. Я бачив L0phtcrack . Можливо, є навіть спосіб зробити це в автономному режимі з дампами вашої бази даних аутентифікації. У "іншому світі" ми використовуємо "john the ripper" для подібних речей.


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

@ TheCleaner: Звичайно, ви можете створити список слів із усіма можливими паролями для певного облікового запису і використовувати цей список для набору облікових записів. або єдиний ... Тестування за допомогою SMB чи чогось - це досить погана ідея. Він заповнює ваші журнали, обмінює сеанси на файловому сервері, генерує завантаження на постійних серверах та файлових серверах тощо.
PEra

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з неприватного облікового запису. Якщо пароль у порядку, вам буде дозволено в homedir userToTest, якщо оболонка дозволить з'єднатись

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.