Skip to content
This repository was archived by the owner on Jan 21, 2021. It is now read-only.

Commit 92e17e5

Browse files
authored
Merge pull request #214 from mbrancato/dev
Fix for impersonation in Get-NetLocalGroup*
2 parents cfc0b64 + 6927a26 commit 92e17e5

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

Recon/PowerView.ps1

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12149,8 +12149,8 @@ https://msdn.microsoft.com/en-us/library/windows/desktop/aa370440(v=vs.85).aspx
1214912149
)
1215012150

1215112151
BEGIN {
12152-
if ($PSBoundParameters['Credential'] -and ($Method -eq 'WinNT')) {
12153-
Write-Warning "[Get-NetLocalGroup] -Credential is only compatible with '-Method WinNT'"
12152+
if ($PSBoundParameters['Credential']) {
12153+
$LogonToken = Invoke-UserImpersonation -Credential $Credential
1215412154
}
1215512155
}
1215612156

@@ -12203,12 +12203,7 @@ https://msdn.microsoft.com/en-us/library/windows/desktop/aa370440(v=vs.85).aspx
1220312203
}
1220412204
else {
1220512205
# otherwise we're using the WinNT service provider
12206-
if ($Credential -ne [Management.Automation.PSCredential]::Empty) {
12207-
$ComputerProvider = New-Object DirectoryServices.DirectoryEntry("WinNT://$Computer,computer", $Credential.UserName, $Credential.GetNetworkCredential().Password)
12208-
}
12209-
else {
12210-
$ComputerProvider = [ADSI]"WinNT://$Computer,computer"
12211-
}
12206+
$ComputerProvider = [ADSI]"WinNT://$Computer,computer"
1221212207

1221312208
$ComputerProvider.psbase.children | Where-Object { $_.psbase.schemaClassName -eq 'group' } | ForEach-Object {
1221412209
$LocalGroup = ([ADSI]$_)
@@ -12223,6 +12218,12 @@ https://msdn.microsoft.com/en-us/library/windows/desktop/aa370440(v=vs.85).aspx
1222312218
}
1222412219
}
1222512220
}
12221+
12222+
END {
12223+
if ($LogonToken) {
12224+
Invoke-RevertToSelf -TokenHandle $LogonToken
12225+
}
12226+
}
1222612227
}
1222712228

1222812229

@@ -12354,8 +12355,8 @@ https://msdn.microsoft.com/en-us/library/windows/desktop/aa370601(v=vs.85).aspx
1235412355
)
1235512356

1235612357
BEGIN {
12357-
if ($PSBoundParameters['Credential'] -and ($Method -eq 'WinNT')) {
12358-
Write-Warning "[Get-NetLocalGroupMember] -Credential is only compatible with '-Method WinNT'"
12358+
if ($PSBoundParameters['Credential']) {
12359+
$LogonToken = Invoke-UserImpersonation -Credential $Credential
1235912360
}
1236012361
}
1236112362

@@ -12449,12 +12450,7 @@ https://msdn.microsoft.com/en-us/library/windows/desktop/aa370601(v=vs.85).aspx
1244912450
else {
1245012451
# otherwise we're using the WinNT service provider
1245112452
try {
12452-
if ($Credential -ne [Management.Automation.PSCredential]::Empty) {
12453-
$GroupProvider = New-Object DirectoryServices.DirectoryEntry("WinNT://$Computer/$GroupName,group", $Credential.UserName, $Credential.GetNetworkCredential().Password)
12454-
}
12455-
else {
12456-
$GroupProvider = [ADSI]"WinNT://$Computer/$GroupName,group"
12457-
}
12453+
$GroupProvider = [ADSI]"WinNT://$Computer/$GroupName,group"
1245812454

1245912455
$GroupProvider.psbase.Invoke('Members') | ForEach-Object {
1246012456

@@ -12539,6 +12535,12 @@ https://msdn.microsoft.com/en-us/library/windows/desktop/aa370601(v=vs.85).aspx
1253912535
}
1254012536
}
1254112537
}
12538+
12539+
END {
12540+
if ($LogonToken) {
12541+
Invoke-RevertToSelf -TokenHandle $LogonToken
12542+
}
12543+
}
1254212544
}
1254312545

1254412546

0 commit comments

Comments
 (0)