Alat untuk menguji akun pengguna dan kata sandi (test login)

46

Ya, saya dapat menjalankan VM atau remote menjadi sesuatu dan mencoba kata sandi ... Saya tahu ... tetapi apakah ada alat atau skrip yang akan mensimulasikan login hanya cukup untuk mengkonfirmasi atau menyangkal bahwa kata sandi itu benar?

Skenario:

Kata sandi akun layanan server "dilupakan" ... tetapi kami pikir kami tahu apa itu. Saya ingin meneruskan kredensial ke sesuatu dan memilikinya menendang kembali dengan "kata sandi yang benar" atau "kata sandi yang salah".

Saya bahkan berpikir tentang skrip pemetaan drive dengan akun pengguna dan kata sandi yang dilewati untuk melihat apakah itu memetakan drive dengan sukses atau tidak tetapi tersesat dalam logika membuatnya berfungsi dengan benar ... sesuatu seperti:

-Script meminta nama pengguna melalui msgbox -script meminta kata sandi melalui msgbox -script mencoba memetakan drive ke share umum yang setiap orang memiliki akses ke -script unmaps drive jika berhasil -script mengembalikan popup msgbox yang menyatakan "Kata Sandi yang Benar" atau yang lain "Tidak Benar Kata sandi"

Setiap bantuan dihargai ... Anda akan berpikir ini akan menjadi kejadian langka yang tidak memerlukan alat untuk mendukungnya tapi ... yah ....

Pembersih
sumber
OS apa? Layanan apa?
Cristian Ciupitu
@Cristian - Akun domain Windows - cukup verifikasi apakah kata sandi itu benar atau tidak
TheCleaner

Jawaban:

77
runas /u:yourdomain\a_test_user notepad.exe

Utilitas akan meminta kata sandi, jika kata sandi yang tepat telah disediakan, notepad akan diluncurkan, jika tidak akan menghasilkan kesalahan 1326: nama pengguna atau kata sandi salah

Roberto Dimas
sumber
1
Roberto yang pintar. +1
TheCleaner
3
Sederhana. Anggun. Saya suka itu.
Lopsided
5
Luar biasa! Solusi ini memiliki dua keunggulan penting daripada jawaban yang diterima: 1) tersedia di Windows XP + di luar kotak, tidak perlu mengunduh apa pun, 2) terkait dengan ini: karena ini dari MS, saya tidak perlu percaya kata sandi ke beberapa alat pihak ketiga yang tidak diketahui asalnya.
aliasvel
2
Serverfault, admin TI mengetahui hal ini, tetapi jika Anda adalah pengguna rumahan yang menemukan jawaban ini dari pencarian web (ini adalah jawaban terbaik - hanya menggunakan hal-hal yang disertakan dengan Windows): pada komputer di rumah, yourdomainbagian di atas adalah milik Anda nama komputer . Temukan itu di Control Panel> System. Salah satu nilai secara harfiah adalah, "Nama Komputer:". Misalnya, jika nama komputer Anda adalah "smith-laptop" dan nama pengguna Anda adalah "joe", Anda akan melakukannyarunas /u:smith-laptop\joe notepad.exe
Daryn
1
Pada otentikasi yang berhasil, Anda mungkin saja mendapatkan kesalahan seperti1385: 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

Bahkan Mien
sumber
new-object directoryservices.directoryentry "",$username,$password- nilai pengembalian, kredensial berfungsi, pengecualian, tidak berfungsi. Diambil dari jawaban ini di mana ia dibungkus dengan fungsi yang rapi: serverfault.com/q/596602/57144
TessellatingHeckler
5

Anda juga bisa menggunakan:

net use \\ computername \ sharename [password] / USER:] username]

Jika ada pembagian dengan nama itu di komputer jarak jauh. Atau, gunakan C$jika akun tersebut adalah admin.

Greg
sumber
1

Anda dapat menulis fungsi vbscript mudah yang dapat memverifikasi ini ... sesuatu seperti:

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

Sumber:

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

http://hsdn.net/category_3.html

mrTomahawk
sumber
Harap perhatikan ini akan mengunci akun setelah jumlah login gagal 'n', 'n' menjadi kebijakan apa pun yang telah Anda tetapkan. Ini harus selalu benar dari solusi apa pun yang Anda gunakan.
mrTomahawk
Selain itu, pemeriksaan itu mungkin mengabaikan kredensial pengguna lokal, kecuali jika Anda mengubahnya, menentukan nama pengguna dua kali seperti ini OpenDSObject("WinNT://domain/userName,user","userName", "password", 1). Sumber .
Agostino
1

Pada desktop Windows Anda dapat menggunakan Active Directory Explorer oleh SysInternals / MS itu sendiri:

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

Tomasz Modelski
sumber
Saya berasumsi Anda menyarankan prompt "Sambungkan ke Direktori Aktif" sebagai kasus uji kata sandi - yang tampaknya melakukan pekerjaan dari pengujian saya. Kata sandi yang salah menghasilkan prompt "nama pengguna atau kata sandi salah" dengan cukup cepat, jadi ini akan menjadi tes berbasis GUI yang layak untuk bekerja melalui daftar mental kemungkinan kata sandi.
JimNim
0

Anda dapat menggunakan salah satu dari banyak alat terkenal di luar sana untuk menguji kata sandi. Yang saya lihat adalah L0phtcrack . Mungkin bahkan ada cara untuk melakukan ini secara offline dengan dump database otentikasi Anda. Di "dunia lain", kami menggunakan "john the ripper" untuk hal-hal seperti ini.

PEra
sumber
1
Saya tidak berbicara tentang meretas kata sandi atau menguji kekuatan mereka. Saya berbicara tentang alat yang dapat memberi tahu saya jika kata sandi yang saya masukkan untuk akun tertentu adalah kata sandi akun itu.
TheCleaner
@TheCleaner: Tentu, Anda dapat membuat daftar kata dengan semua kata sandi yang mungkin untuk akun tertentu dan menggunakan daftar ini untuk satu set akun. atau satu ... Pengujian dengan SMB atau sesuatu adalah ide yang agak buruk. Itu mengisi log Anda, mengacaukan sesi ke server file, menghasilkan beban pada DC dan file server dan sebagainya.
PEra
0

Menggunakan kode dari atas, periksa semua akun domain untuk melihat apakah mereka menggunakan kata sandi tertentu.

$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
sumber
-1

Mengapa tidak menggunakan layanan jaringan dengan otentikasi (telnet, POP, IMAP, SMTP, apa yang Anda inginkan)? Di sisi lain, jika Anda menggunakan mesin, Anda dapat mencoba su - userToTestdari akun non priv. Jika kata sandi OK, Anda akan diizinkan masuk ke homedir userToTest jika shell mengizinkan koneksi

Dom
sumber