Tool zum Testen eines Benutzerkontos und Passworts (Test Login)


46

Ja, ich kann eine VM oder einen Remote-Computer starten und das Passwort versuchen ... Ich weiß ... aber gibt es ein Tool oder ein Skript, mit dem eine Anmeldung gerade genug simuliert wird, um zu bestätigen oder zu leugnen, dass das Passwort korrekt ist?

Szenario:

Das Passwort eines Serverdienstkontos ist "vergessen" ... aber wir glauben zu wissen, was es ist. Ich möchte die Anmeldeinformationen an etwas weitergeben und es mit "korrektem Passwort" oder "falschem Passwort" zurücktreten lassen.

Ich dachte sogar daran, ein Laufwerkszuordnungsskript mit diesem Benutzerkonto und Kennwort zu übergeben, um festzustellen, ob es das Laufwerk erfolgreich zugeordnet hat oder nicht, aber in der Logik der korrekten Funktionsweise verloren gegangen ist ... so etwas wie:

-Script fragt über msgbox nach dem Benutzernamen -script fragt über msgbox nach dem Kennwort -script versucht, ein Laufwerk einer gemeinsamen Freigabe zuzuordnen, auf die jeder Zugriff hat Passwort"

Jede Hilfe wird gebeten ... Sie würden denken, dass dies ein seltenes Ereignis ist, für dessen Unterstützung kein Tool erforderlich ist, aber ... na ja ...


Welches Betriebssystem? Was für ein Service?
Cristian Ciupitu

@Cristian - Windows-Domänenkonten - Überprüfen Sie einfach, ob das Kennwort korrekt ist oder nicht
TheCleaner

Antworten:


77
runas /u:yourdomain\a_test_user notepad.exe

Das Dienstprogramm fordert zur Eingabe des Kennworts auf. Wenn das richtige Kennwort eingegeben wurde, wird der Editor gestartet. Andernfalls wird der Fehler 1326 ausgegeben: Der Benutzername oder das Kennwort sind falsch


1
Der clevere Roberto. +1
TheCleaner

3
Einfach. Elegant. Ich mag das.
Lopsided

5
Genial! Diese Lösung hat zwei wichtige Vorteile gegenüber der akzeptierten Antwort: 1) Verfügbar unter Windows XP +, muss nichts heruntergeladen werden, 2) Bezogen darauf: Da es sich um eine MS-Lösung handelt, muss ich meiner nicht vertrauen Passwort für ein Drittanbieter-Tool unbekannter Herkunft.
Akavel

2
Serverfault-IT-Administratoren wissen dies, aber wenn Sie als Privatanwender diese Antwort über eine Websuche finden (dies ist übrigens die beste Antwort - verwendet nur Windows-Komponenten): Auf einem Privatcomputer ist der yourdomainobige Teil Ihr Computer- Namen . Finden Sie das in Systemsteuerung> System. Einer der Werte lautet wörtlich "Computername:". Wenn Ihr Computer beispielsweise "smith-laptop" heißt und Ihr Benutzername "joe" lautet, tun Sie diesrunas /u:smith-laptop\joe notepad.exe
Daryn,

1
Bei einer erfolgreichen Authentifizierung erhalten Sie möglicherweise nur die Fehlermeldung1385: Logon failure: the user has not been granted the requested logon type at this computer.
mwfearnley

11

Powershell-Skript:

#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- Rückgabewert, Anmeldeinformationen funktionieren, Ausnahme, sie funktionieren nicht. Entnommen aus dieser Antwort, in der sie in eine saubere
TessellatingHeckler

5

Sie können auch verwenden:

net use \\ Computername \ Freigabename [Passwort] / USER:] Benutzername]

Wenn auf dem Remotecomputer eine Freigabe mit diesem Namen vorhanden ist. Oder verwenden Sie, C$wenn das Konto ein Administrator ist.


1

Sie können eine einfache vbscript-Funktion schreiben, die dies überprüft ... so etwas wie:

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

Quellen:

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

http://hsdn.net/category_3.html


Beachten Sie, dass ein Konto nach n fehlgeschlagenen Anmeldungen gesperrt wird. Dabei handelt es sich um die von Ihnen festgelegte Richtlinie. Dies sollte immer für jede Lösung gelten, die Sie verwenden.
mrTomahawk

Bei dieser Überprüfung werden möglicherweise auch die Anmeldeinformationen lokaler Benutzer ignoriert, es sei denn, Sie optimieren sie und geben den Benutzernamen zweimal so an OpenDSObject("WinNT://domain/userName,user","userName", "password", 1). Quelle .
Agostino

1

Auf dem Windows-Desktop können Sie Active Directory Explorer von SysInternals / MS selbst verwenden:

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


Ich nehme an, Sie schlagen die erste Eingabeaufforderung "Mit Active Directory verbinden" als Kennworttestfall vor - dies scheint die Aufgabe meiner Tests zu erfüllen. Ein falsches Passwort führt schnell zu einer Eingabeaufforderung "Benutzername oder Passwort ist falsch", sodass dies ein anständiger GUI-basierter Test wäre, um eine mentale Liste möglicher Passwörter durchzuarbeiten.
JimNim

0

Sie können eines der vielen bekannten Tools verwenden, um Kennwörter zu testen. Eines, das ich gesehen habe, ist L0phtcrack . Vielleicht gibt es sogar eine Möglichkeit, dies offline mit einem Speicherauszug Ihrer Authentifizierungsdatenbank zu tun. In "the other world" verwenden wir "john the ripper" für solche Sachen.


1
Ich spreche nicht davon, Passwörter zu knacken oder ihre Stärke zu testen. Ich spreche von einem Tool, mit dem ich feststellen kann, ob das Passwort, das ich für ein bestimmtes Konto eingebe, das Passwort dieses Kontos ist.
TheCleaner

@TheCleaner: Natürlich können Sie eine Wortliste mit allen möglichen Kennwörtern für ein bestimmtes Konto erstellen und diese Liste für eine Reihe von Konten verwenden. oder eine einzige ... Testen mit SMB oder so ist eine ziemlich schlechte Idee. Es füllt Ihre Protokolle, bringt Sitzungen mit dem Dateiserver durcheinander, erzeugt Last auf Domänencontrollern und Dateiservern und so weiter.
PEra

0

Überprüfen Sie mit dem obigen Code alle Domänenkonten, um festzustellen, ob sie ein bestimmtes Kennwort verwenden.

$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

Warum nicht einen Netzwerkdienst mit Authentifizierung verwenden (Telnet, POP, IMAP, SMTP, was Sie wollen)? Auf der anderen Seite können Sie es su - userToTestvon einem nicht privaten Konto aus versuchen, wenn Sie sich auf dem Computer befinden . Wenn das Kennwort in Ordnung ist, werden Sie im Homedir userToTest zugelassen, wenn die Shell die Verbindung zulässt

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.