เครื่องมือทดสอบบัญชีผู้ใช้และรหัสผ่าน (ทดสอบล็อกอิน)


46

ใช่ฉันสามารถติดตั้ง VM หรือรีโมตลงในบางสิ่งและลองใช้รหัสผ่าน ... ฉันรู้ ... แต่มีเครื่องมือหรือสคริปต์ที่จะจำลองการเข้าสู่ระบบเพียงพอที่จะยืนยันหรือปฏิเสธว่ารหัสผ่านนั้นถูกต้องหรือไม่

สถานการณ์:

รหัสผ่านของบัญชีบริการเซิร์ฟเวอร์ "ลืม" ... แต่เราคิดว่าเรารู้ว่ามันคืออะไร ฉันต้องการส่งผ่านข้อมูลรับรองไปยังบางสิ่งและให้ส่งกลับด้วย "รหัสผ่านที่ถูกต้อง" หรือ "รหัสผ่านไม่ถูกต้อง"

ฉันยังคิดเกี่ยวกับสคริปต์การจับคู่ไดรฟ์ด้วยบัญชีผู้ใช้และรหัสผ่านที่ถูกส่งผ่านเพื่อดูว่าไดรฟ์นั้นประสบความสำเร็จหรือไม่ แต่หายไปในตรรกะของการทำงานอย่างถูกต้อง ... สิ่งที่ต้องการ:

- สคริปต์ขอชื่อผู้ใช้ผ่าน msgbox - สคริปต์ขอรหัสผ่านผ่าน msgbox - สคริปต์พยายามแมปไดรฟ์กับการแบ่งปันทั่วไปที่ทุกคนมีสิทธิ์เข้าถึงไดรฟ์ - สคริปต์ unmaps หากประสบความสำเร็จ -script ส่งคืนป๊อปอัป msgbox ระบุว่า " รหัสผ่าน"

ความช่วยเหลือใด ๆ ที่ได้รับการชื่นชม ... คุณคิดว่านี่จะเป็นเหตุการณ์ที่เกิดขึ้นได้ยากโดยไม่ต้องใช้เครื่องมือในการสนับสนุน แต่ ... ดี ....


ระบบปฏิบัติการอะไร บริการอะไร
Cristian Ciupitu

@Cristian - บัญชีโดเมน Windows - เพียงแค่ตรวจสอบว่ารหัสผ่านไม่ถูกต้องหรือไม่
TheCleaner

คำตอบ:


77
runas /u:yourdomain\a_test_user notepad.exe

ยูทิลิตี้จะแจ้งให้คุณใส่รหัสผ่านหากมีการให้รหัสผ่านที่ถูกต้องแล้ว Notepad จะเปิดใช้งานหากไม่ได้จะทำให้เกิดข้อผิดพลาด 1326: ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง


1
Clever Roberto +1
TheCleaner

3
ง่าย สง่า ฉันชอบมัน.
ลำเอียง

5
! น่ากลัว โซลูชันนี้มีข้อดีที่สำคัญสองประการเหนือคำตอบที่ยอมรับได้: 1) มีให้ใน Windows XP + ไม่ต้องดาวน์โหลดอะไรอีก 2) เกี่ยวข้องกับสิ่งนี้: เนื่องจากมาจาก MS จึงไม่ต้องการให้ฉันเชื่อถือ รหัสผ่านไปยังเครื่องมือของบุคคลที่สามที่ไม่ทราบสาเหตุ
akavel

2
ผู้ดูแลระบบ IT ของ Serverfault รู้สิ่งนี้ แต่ถ้าคุณเป็นผู้ใช้ตามบ้านหาคำตอบนี้จากการค้นหาเว็บ (นี่เป็นคำตอบที่ดีที่สุด - ใช้เฉพาะสิ่งที่มาพร้อมกับ 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

คุณยังสามารถใช้:

การใช้งานสุทธิ \\ ชื่อผู้ใช้ \ sharename [รหัสผ่าน] / 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' ซึ่งเป็นนโยบายใด ๆ ที่คุณตั้งไว้ สิ่งนี้ควรเป็นจริงของโซลูชันใด ๆ ที่คุณใช้
mrTomahawk

OpenDSObject("WinNT://domain/userName,user","userName", "password", 1)นอกจากนี้การตรวจสอบที่อาจไม่สนใจข้อมูลประจำตัวของผู้ใช้ท้องถิ่นเว้นแต่คุณปรับแต่งการระบุชื่อผู้ใช้สองครั้งเช่นนี้ แหล่ง
Agostino

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 หรือบางอย่างเป็นความคิดที่ไม่ดี มันเติมบันทึกของคุณ messes up เซสชันไปยังเซิร์ฟเวอร์ไฟล์สร้างภาระใน DCs และไฟล์เซิร์ฟเวอร์และอื่น ๆ
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.