Domanda

Ho bisogno di creare uno script VBS per reimpostare la password di amministratore locale di Windows su un ampio gruppo di computer. Il mio problema è che alcuni dei nostri siti hanno rinominato l'account di amministratore per motivi di sicurezza. Qualcuno ha uno script che modifica la password dell'account amministratore in base al SID dell'account amministratore originale?

È stato utile?

Soluzione

sfruttando il fatto che il SID di amministratore locale si conclude sempre con -500:

strComputer="."    ' local computer by default   
Set objUser=GetObject("WinNT://" & strComputer & "/" & GetAdminName & ",user")     
objUser.SetPassword "New local admin password"     
objUser.SetInfo 

Function GetAdminName   
  'This function was written using information from Table J.1 from the Windows XP resource Kit
  'http://www.microsoft.com/resources/documentation/Windows/XP/all/reskit/en-us/Default.asp?url=/resources/documentation/Windows/XP/all/reskit/en-us/prnc_sid_cids.asp

  Set objNetwork = CreateObject("Wscript.Network") 'get the current computer name 
  objComputerName = objNetwork.ComputerName    
  Set objwmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & objComputerName)

  qry = "SELECT * FROM Win32_Account where Domain = '" & cstr(objComputerName) & "'" 
  'set query, making sure to only look at local computer

  For Each Admin in objwmi.ExecQuery(qry)   
    if (left(admin.sid, 6) = "S-1-5-" and right(admin.sid,4) = "-500") then 'look for admin sid
       GetAdminName = admin.name
    end if   
  next    
end Function

Altri suggerimenti

C'è uno strumento che galleggia da qualche parte chiamato LookupAccountName (con fonte!) Che, data la SID del adminitrator incorporato vi darà il suo nome.

Probabilmente stai andando a finire a scrivere codice C ++ per tirare fuori questo ragionevolmente bene.

Come Giosuè dice, non credo che si può fare solo con Windows Scripting Host, si potrebbe utilizzare scaricare qualcosa ed eseguirlo:

  • Un'applicazione personalizzata che chiama LookupAccountSid (S-1-5-dominio-500 SID o enum amministratore del gruppo) + NetUserSetInfo per reimpostare la password (deve eseguire questo come admin)
  • http://home.eunet.no/pnordahl/ntpasswd/ (Reset in fase di avvio)
  • Dump il SAM hash e crack della password (Cain, John the Ripper, L0phtCrack etc)

@ risposta di DmitryK è buona, e non sapevo niente del genere. Ma so che questo genere di cose è di solito più pulita in PowerShell, quindi ho portato esso.

Ad esempio, la funzione di tutta la GetAdminName si può scrivere:

$adminName = (gwmi win32_account | ? { $.SID.StartsWith( 'S-1-5-' ) -and $.SID.EndsWith( '-500' ) }).Name

(Aggiungere l'opzione -ComputerName alla chiamata gwmi di farlo su un server.)

Il resto diventa:

$user = ([ADSI]"WinNT://$($env:COMPUTERNAME)/$adminName,User")
$user.SetPassword( 'xxx' )
$user.SetInfo()

(applicando il nome di computer appropriato, se necessario, naturalmente.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top