Skip to content

Commit d1c7cce

Browse files
committed
enumerate computers with laps
1 parent 50bdc3e commit d1c7cce

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

Invoke-Recon.ps1

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,13 +364,37 @@ Get-DomainTrust -Domain $Domain -Server $TargetDC
364364
Write-Banner -Text "Get-ForestTrust"
365365
Get-ForestTrust -Forest $Forest.Name
366366

367+
Write-Banner -Text "Finding shadow security principals (bastion forest)"
368+
Get-ADObject -SearchBase ("CN=Shadow Principal Configuration,CN=Services," + $RootDSE.configurationNamingContext) -Filter * -Properties * | select Name,member,msDS-ShadowPrincipalSid | fl
369+
367370
Write-Banner -Text "Is LAPS installed (CN=ms-mcs-admpwd,$($RootDSE.schemaNamingContext))"
368371
$islaps = Get-DomainObject "ms-Mcs-AdmPwd" -SearchBase "$($RootDSE.schemaNamingContext)"
369372

370373
if($islaps){
371374
Write-ColorOutput green "`r`n[+] LAPS schema extension detected"
372375
}
373376

377+
Write-Banner -Text "Finding computers with LAPS installed (ms-mcs-admpwdexpirationtime=*)"
378+
Get-DomainComputer -Filter "(ms-mcs-admpwdexpirationtime=*)" @PSBoundParameters | ForEach-Object {
379+
380+
$HostName = $_.dnshostname
381+
$Password = $_."ms-mcs-admpwd"
382+
383+
If ($_."ms-MCS-AdmPwdExpirationTime" -ge 0) {
384+
$CurrentExpiration = $([datetime]::FromFileTime([convert]::ToInt64($_."ms-MCS-AdmPwdExpirationTime",10)))
385+
}
386+
Else{
387+
$CurrentExpiration = "N/A"
388+
}
389+
390+
$Computer = New-Object PSObject
391+
$Computer | Add-Member NoteProperty 'ComputerName' "$HostName"
392+
$Computer | Add-Member Noteproperty 'Password' "$Password"
393+
$Computer | Add-Member Noteproperty 'Expiration' "$CurrentExpiration"
394+
$Computer
395+
396+
}
397+
374398
# If -Quick, skipping what can take a lot of time on large domains
375399

376400
if(! $PSBoundParameters.ContainsKey('Quick')){

0 commit comments

Comments
 (0)