사용자 계정 및 비밀번호를 테스트하는 도구 (테스트 로그인)


46

예, VM 또는 원격을 실행하여 암호를 시도 할 수 있습니다 ... 알지만 ... 암호가 올바른지 확인하거나 거부하기에 충분할 정도로 로그인을 시뮬레이트하는 도구 또는 스크립트가 있습니까?

대본:

서버 서비스 계정의 비밀번호는 "잊어 버렸습니다". 그러나 우리는 그것이 무엇인지 알고 있다고 생각합니다. 자격 증명을 무언가에 전달하고 "올바른 비밀번호"또는 "잘못된 비밀번호"로 다시 시작하고 싶습니다.

나는 그 사용자 계정과 암호가 드라이브를 성공적으로 매핑했는지 아닌지 확인하기 위해 전달되었지만 올바르게 작동하게하는 논리에서 길을 잃은 드라이브 매핑 스크립트에 대해 생각했습니다.

-script는 msgbox를 통해 사용자 이름을 요청합니다. -script는 msgbox를 통해 암호를 요청합니다. -script는 모든 사람이 액세스 할 수있는 공통 공유에 드라이브를 매핑하려고 시도합니다. -script는 성공한 경우 드라이브를 매핑 해제합니다. 암호"

도움이 필요합니다 ...이 도구를 지원하는 도구가 필요하지 않지만 드물게 발생한다고 생각합니다 ...


어떤 OS? 어떤 서비스?
Cristian Ciupitu

@Cristian-Windows 도메인 계정-비밀번호가 올바른지 확인하십시오
TheCleaner

답변:


77
runas /u:yourdomain\a_test_user notepad.exe

올바른 암호를 제공 한 경우 유틸리티에서 암호를 묻는 메시지가 표시되고, 그렇지 않으면 오류 1326이 발생하는 경우 메모장이 시작됩니다. 사용자 이름 또는 암호가 올바르지 않습니다


1
영리한 로베르토. +1
TheCleaner

3
단순한. 우아한. 나는 그것을 좋아한다.
Lopsided

5
대박! 이 솔루션은 허용 된 답변에 비해 두 가지 중요한 이점이 있습니다 .1) 즉시 사용 가능한 Windows XP +에서 사용할 수 있으며 아무것도 다운로드 할 필요가 없습니다 .2) 이와 관련되어 있습니다. 출처를 알 수없는 타사 도구에 대한 암호입니다.
akavel

2
Serverfault IT 관리자는 이것을 알고 있지만 웹 검색에서이 답변을 찾는 가정용 사용자 인 경우 (이 방법은 가장 좋은 답변입니다. 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-반환 값, 자격 증명 작동, 예외, 작동하지 않습니다. 깔끔한 기능으로 감싸
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). 소스 .
Agostino

1

Windows 데스크탑에서는 SysInternals / MS 자체에서 Active Directory Explorer를 사용할 수 있습니다.

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


비밀번호 테스트 사례로 초기 "Active Directory에 연결"프롬프트를 제안한다고 가정합니다. 테스트에서 작업을 수행하는 것 같습니다. 암호가 틀리면 "사용자 이름 또는 암호가 틀립니다"라는 프롬프트가 상당히 빨리 표시되므로, 가능한 암호 목록을 통해 적절한 GUI 기반 테스트를 수행해야합니다.
JimNim

0

잘 알려진 많은 도구 중 하나를 사용하여 비밀번호를 테스트 할 수 있습니다. 내가 본 것은 L0phtcrack 입니다. 인증 데이터베이스 덤프를 사용하여이 작업을 오프라인으로 수행 할 수도 있습니다. "다른 세상"에서는 이와 같은 것들에 "리퍼 존"을 사용합니다.


1
나는 암호를 해독하거나 강도를 테스트하는 것에 대해 이야기하지 않습니다. 특정 계정에 입력 한 암호가 해당 계정의 암호인지 알려주는 도구에 대해 이야기하고 있습니다.
TheCleaner

@TheCleaner : 물론 특정 계정에 대해 가능한 모든 암호가 포함 된 단어 목록을 만들고이 목록을 계정 집합에 사용할 수 있습니다. 아니면 하나 하나 ... SMB 또는 무언가로 테스트하는 것은 다소 나쁜 생각입니다. 로그를 채우고, 파일 서버에 대한 세션을 엉망으로 만들고, DC 및 파일 서버 등에서로드를 생성합니다.
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계정이 아닌 계정으로 시도 할 수 있습니다. 비밀번호가 정상이면 쉘이 연결을 허용하는 경우 userToTest homedir에서 허용됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.