Outil pour tester un compte d'utilisateur et un mot de passe (test de la connexion)

46

Oui, je peux lancer une machine virtuelle ou une télécommande en quelque chose et essayer le mot de passe ... Je sais ... mais existe-t-il un outil ou un script permettant de simuler une connexion juste assez pour confirmer ou infirmer que le mot de passe est correct?

Scénario:

Le mot de passe d'un compte de service serveur est "oublié" ... mais nous pensons savoir de quoi il s'agit. Je voudrais passer les informations d'identification à quelque chose et le faire revenir avec "mot de passe correct" ou "mot de passe incorrect".

J'ai même pensé à un script de mappage de lecteur avec le compte d'utilisateur et le mot de passe en cours de transmission pour voir s'il mappait le lecteur avec succès ou non, mais il s'est perdu dans la logique du fonctionnement correct de celui-ci ... quelque chose comme:

-Script demande le nom d'utilisateur via msgbox -script demande le mot de passe via msgbox -script essaie de mapper un lecteur sur un partage commun auquel tout le monde a accès Mot de passe"

Toute aide est appréciée ... vous pensez que ce serait un événement rare ne nécessitant pas d’outil pour le prendre en charge mais ... eh bien ...

Le nettoyeur
la source
Quel OS? Quel service?
Cristian Ciupitu
@ Christian - Comptes de domaine Windows - il suffit de vérifier si le mot de passe est correct ou non
TheCleaner

Réponses:

77
runas /u:yourdomain\a_test_user notepad.exe

L'utilitaire vous demandera le mot de passe. Si le mot de passe correct a été fourni, le Bloc-notes se lancera. Sinon, l'erreur 1326 sera générée: le nom d'utilisateur ou le mot de passe est incorrect.

Roberto Dimas
la source
1
Clever Roberto. +1
TheCleaner
3
Facile. Élégant. Je l'aime.
Échoué
5
Impressionnant! Cette solution présente deux avantages importants par rapport à la réponse acceptée: 1) disponible sous Windows XP + immédiatement, ne rien télécharger du tout, 2) en rapport avec cela: comme il provient de MS, il n’est pas nécessaire que je fasse confiance à mon ordinateur. mot de passe pour un outil tiers de provenance inconnue.
akavel
2
Les administrateurs informatiques de Serverfault le savent bien, mais si vous êtes un utilisateur à la maison et que vous trouvez cette réponse sur une recherche sur le Web (c’est la meilleure réponse, vous utilisez uniquement des éléments fournis avec Windows): sur un ordinateur à la maison, la yourdomainpartie ci-dessus est votre nom de l'ordinateur . Trouvez cela dans Panneau de configuration> Système. L'une des valeurs est littéralement "Nom de l'ordinateur:". Par exemple, si votre nom d'ordinateur est "smith-laptop" et votre nom d'utilisateur est "joe", vous feriez bienrunas /u:smith-laptop\joe notepad.exe
Daryn
1
Si l’authentification est réussie, vous risquez d’obtenir une erreur du type1385: Logon failure: the user has not been granted the requested logon type at this computer.
mwfearnley
11

Script 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

Même Mien
la source
new-object directoryservices.directoryentry "",$username,$password- valeur de retour, les informations d'identification fonctionnent, exception, elles ne fonctionnent pas. Tiré de cette réponse où il est enveloppé dans une fonction soignée: serverfault.com/q/596602/57144
TessellatingHeckler
5

Vous pouvez aussi utiliser:

utilisation nette \\ nom_ordinateur \ nom_partage [mot de passe] / USER:] nom d'utilisateur]

S'il y a une part portant ce nom sur l'ordinateur distant. Ou utilisez C$si le compte est un administrateur.

Greg
la source
1

Vous pouvez écrire une fonction facile de vbscript qui peut vérifier ceci… quelque chose comme:

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

Sources:

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

http://hsdn.net/category_3.html

MrTomahawk
la source
Veuillez noter que cela bloquera un compte après "n" montant des connexions échouées, "n" correspondant à la politique que vous avez définie. Cela devrait toujours être vrai de toute solution que vous utilisez.
mtTomahawk
En outre, cette vérification peut ignorer les informations d'identification des utilisateurs locaux, à moins que vous ne la modifiiez, en spécifiant le nom d'utilisateur deux fois de cette manière OpenDSObject("WinNT://domain/userName,user","userName", "password", 1). Source .
Agostino
1

Sur le bureau Windows, vous pouvez utiliser l'explorateur Active Directory de SysInternals / MS lui-même:

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

Tomasz Modelski
la source
Je suppose que vous proposez l'invite initiale "Connect to Active Directory" comme cas de test de mot de passe - qui semble faire l'affaire à partir de mes tests. Un mot de passe incorrect entraîne rapidement une invite «le nom d'utilisateur ou le mot de passe est incorrect». Ce serait donc un test décent basé sur une interface graphique permettant de définir une liste mentale de mots de passe possibles.
JimNim
0

Vous pouvez utiliser l'un des nombreux outils bien connus pour tester les mots de passe. Celui que j'ai vu est L0phtcrack . Peut-être y a-t-il même un moyen de le faire hors ligne avec une sauvegarde de votre base de données d'authentification. Dans "l'autre monde", nous utilisons "john the ripper" pour des choses comme celle-là.

PEra
la source
1
Je ne parle pas de casser des mots de passe ou de tester leur force. Je parle d'un outil qui peut me dire si le mot de passe que j'entre pour un compte particulier est le mot de passe de ce compte.
TheCleaner
@TheCleaner: Bien sûr, vous pouvez créer une liste de mots avec tous les mots de passe possibles pour un compte spécifique et utiliser cette liste pour un ensemble de comptes. ou un seul ... Test avec SMB ou quelque chose est une assez mauvaise idée. Il remplit vos journaux, désorganise les sessions sur le serveur de fichiers, génère une charge sur les contrôleurs de domaine et les serveurs de fichiers, etc.
PEra
0

En utilisant le code ci-dessus, vérifiez tous les comptes de domaine pour voir s’ils utilisent un certain mot de passe.

$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}
}
Operdale
la source
-1

Pourquoi ne pas utiliser un service réseau avec authentification (telnet, POP, IMAP, SMTP, ce que vous voulez)? De l'autre côté, si vous êtes sur la machine, vous pouvez essayer su - userToTestdepuis un compte non privé. Si le mot de passe est correct, vous serez autorisé dans le répertoire userToTest homedir si le shell autorise la connexion.

Dom
la source