Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Empire — Empire is a PowerShell and Python post-exploitation agent. | Kitploit
Outils/GitHubGitHub/empireproject/empire
Privilege EscalationPayload GenerationPersistence MechanismsExploitationLateral MovementPost-ExploitationPenetration TestingCommand and ControlRed TeamingArchived
GitHubempireproject/empire

Empire

7.9k2.9kil y a 6 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Empire is a PowerShell and Python post-exploitation agent.

Voir le dépôtSite web

Invoke-Obfuscation v1.8

Invoke-Obfuscation Screenshot

Introduction

Invoke-Obfuscation est un outil d’obfuscation de commandes et de scripts PowerShell compatible PowerShell v2.0+.

Background

À l’automne 2015, j’ai décidé de commencer à étudier la flexibilité du langage PowerShell et de cataloguer les différentes manières de réaliser une poignée de techniques courantes que la plupart des attaquants utilisent régulièrement.

En me concentrant d’abord sur les syntaxes de commandes encodées et de téléchargement à distance (cradle), j’ai découvert que divers caractères d’échappement, sans entraver l’exécution de la commande, persistaient dans les arguments de la ligne de commande, à la fois dans le processus en cours d’exécution et dans ce qui est journalisé dans les journaux d’événements Security EID 4688 et Sysmon EID 1. Cela m’a conduit à explorer systématiquement les moyens d’obfusquer chaque type de « jeton » présent dans une commande ou un script PowerShell.

J’ai ensuite exploré des manières plus obscures d’effectuer de l’obfuscation au niveau des chaînes, diverses techniques d’encodage/chiffrement (comme ASCII/hex/octal/binaire et même SecureString), et enfin des techniques de lancement PowerShell pour abstraire les arguments de ligne de commande de powershell.exe et les repousser vers le processus parent et même grand-parent.

Purpose

Les attaquants et les malwares grand public ont commencé à utiliser des techniques d’obfuscation extrêmement basiques pour cacher la majeure partie de la commande dans les arguments de ligne de commande de powershell.exe. J’ai développé cet outil pour aider l’équipe bleue à simuler des commandes obfusquées basées sur ce que je sais être syntaxiquement possible dans PowerShell 2.0–5.0, afin qu’elle puisse tester ses capacités de détection de ces techniques.

Le seul but de l’outil est de briser toutes les hypothèses que nous, en tant que défenseurs, pourrions avoir concernant l’apparence possible des commandes PowerShell sur la ligne de commande. J’espère qu’il encouragera l’équipe bleue à rechercher les indicateurs d’obfuscation sur la ligne de commande en plus de mettre à jour la journalisation PowerShell pour inclure la journalisation des modules, des ScriptBlock et la transcription, car ces sources simplifient la plupart des aspects des techniques d’obfuscation générées par cet outil.

Usage

Bien que toutes les couches d’obfuscation aient été développées dans des scripts séparés, la plupart des utilisateurs trouveront que la fonction Invoke-Obfuscation est le moyen le plus simple d’explorer et de visualiser les techniques d’obfuscation actuellement supportées par ce framework.

Installation

Le code source d’Invoke-Obfuscation est hébergé sur Github, et vous pouvez le télécharger, le forker et le consulter à partir de ce dépôt (https://github.com/danielbohannon/Invoke-Obfuscation). Veuillez signaler les problèmes ou demandes de fonctionnalités via le bug tracker Github associé à ce projet.

Pour installer :

root@kitploit:~
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation

License

Invoke-Obfuscation est publié sous la licence Apache 2.0.

Release Notes

v1.0 – 2016-09-25 DerbyCon 6.0 (Louisville, Kentucky, États-Unis) : Publication publique d’Invoke-Obfuscation.

v1.1 – 2016-10-09 SANS DFIR Summit (Prague, République tchèque) : Ajout de la fonctionnalité de réordonnancement de l’opérateur de format -f à toutes les fonctions d’obfuscation TOKEN applicables. Ajout également d’options syntaxiques supplémentaires pour la définition de valeurs de variables.

v1.2 – 2016-10-20 CODE BLUE (Tokyo, Japon) : Ajout de l’obfuscation de type TOKEN (cast direct de type avec options d’obfuscation de chaîne pour le nom du type).

v1.3 – 2016-10-22 Hacktivity (Budapest, Hongrie) : Ajout de deux nouveaux LAUNCHERs : CLIP+ et CLIP++. Ajout également d’une syntaxe de conversion de tableau en caractères supplémentaire (et plus simple) pour toutes les fonctions ENCODING, qui ne nécessite pas ForEach-Object/% .

v1.4 – 2016-10-28 BruCON (Gand, Belgique) : Ajout d’une nouvelle fonction ENCODING BXOR. Amélioration de la casse aléatoire pour tous les composants de toutes les fonctions ENCODING ainsi que pour les indicateurs d’exécution PowerShell de tous les LAUNCHERs. Enfin, ajout de l’option raccourcie -EP pour -ExecutionPolicy à tous les LAUNCHERs, ainsi que la représentation entière optionnelle du drapeau d’exécution PowerShell -WindowStyle : Normal (0), Masqué (1), Minimisé (2), Maximisé (3).

v1.5 – 2016-11-04 Blue Hat (Redmond, Washington, États-Unis) : Ajout du LAUNCHER WMIC avec une certaine randomisation des arguments de ligne de commande WMIC.

v1.6 – 2017-01-24 Blue Hat IL (Tel Aviv, Israël) :

  • Ajout de la fonctionnalité en ligne de commande (CLI) : Ex. : Invoke-Obfuscation -ScriptBlock {Write-Host 'CLI FTW!'} -Command 'Token\All\1,Encoding\1,Launcher\Stdin++\234,Clip' -Quiet -NoExit
  • Ajout de la fonctionnalité UNDO pour supprimer une couche d’obfuscation à la fois.
  • Suppression de l’obfuscation des espaces blancs de Token\All\1 pour accélérer l’obfuscation des grands scripts.
  • Ajout de la sortie de l’arbre des arguments de processus pour tous les lanceurs afin d’aider les défenseurs.
  • Ajout de la fonctionnalité de détection automatique du menu de base pour éviter d’utiliser BACK ou HOME : Ex. : si vous avez exécuté TOKEN puis ALL puis 1, tapez simplement LAUNCHER et vous accéderez au menu LAUNCHER sans avoir à taper HOME ou BACK pour revenir au menu principal.
  • Ajout de la syntaxe multi-commandes utilisée par la CLI et le mode interactif : Ex. : Token\All\1,String\3,Encoding\5,Launcher\Ps\234,Clip
  • Ajout de la capacité regex à toutes les commandes de menu et d’obfuscation : Ex. : Token\*\*,String\[13],Encoding\(1|6),Launcher\.*[+]{2}\234,Clip
  • Ajout de la fonctionnalité de commande unique OUT FILEPATH.
  • Ajout du décodage si la syntaxe powershell -enc est saisie comme valeur SCRIPTBLOCK.
  • Ajout de l’alias ForEach aux options de syntaxe aléatoire ForEach-Object/% dans toutes les fonctions ENCODING.
  • Ajout des options de sous-chaîne de syntaxe -Key -Ke -K KEY dans Out-SecureStringCommand.ps1.

v1.7 – 2017-03-03 nullcon (Goa, Inde) :

  • Ajout de 3 nouveaux LAUNCHERs : RUNDLL, RUNDLL++ et MSHTA++
  • Ajout de chaînes de caractères supplémentaires de variables génériques ExecutionContext

v1.8 – 2017-07-27 Black Hat (Las Vegas, Nevada, États-Unis) :

  • Ajout de 2 nouvelles options ENCODING : Caractères spéciaux et Espaces blancs
Télécharger l’outil
  • Ajout d’une randomisation de casse plus poussée à toutes les fonctions d’obfuscation \Home\String .
  • Ajout des drapeaux -ST/-STA (Single-Threaded Apartment) aux fonctions lanceur CLIP+ et CLIP++ car ils sont requis si l’on exécute PowerShell 2.0.
  • Ajout de la syntaxe Get-Item/GI/Item partout où Get-ChildItem est utilisé pour obtenir des valeurs de variables.
  • Ajout de la syntaxe d’instanciation de variable Set-Item à la fonction d’obfuscation TYPE.
  • Ajout de syntaxes supplémentaires d’Invoke-Expression/IEX utilisant des variables automatiques PowerShell et des concaténations de valeurs de variables d’environnement dans la fonction Out-EncapsulatedInvokeExpression de Out-ObfuscatedStringCommand.ps1, et copiées vers tous les lanceurs, fonctions STRING et ENCODING pour ajouter de nombreuses syntaxes de ligne de commande pour IEX.
  • Ajout de deux nouvelles syntaxes JOIN pour String\Reverse et toutes les options d’obfuscation ENCODING :
    1. syntaxe JOIN [String]::Join('',$string)
    2. syntaxe JOIN par variable OFS (Output Field Separator, variable automatique)
  • Ajout de deux syntaxes SecureString supplémentaires à Encoding\5 :
    1. PtrToStringAnsi / SecureStringToGlobalAllocAnsi
    2. PtrToStringBSTR / SecureStringToBSTR
  • Ajout de six syntaxes alternatives GetMember pour plusieurs membres de SecureString :
    1. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[3].Name).Invoke
    2. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[5].Name).Invoke
    3. PtrToStringUni, ([Runtime.InteropServices.Marshal].GetMembers()[2].Name).Invoke
    4. PtrToStringUni, ([Runtime.InteropServices.Marshal].GetMembers()[4].Name).Invoke
    5. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[0].Name).Invoke
    6. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[1].Name).Invoke
  • Mise à jour de Out-ObfuscatedTokenCommand.ps1 pour que l’obfuscation VARIABLE n’encapsule pas les variables dans ${} si elles le sont déjà (ainsi ${${var}} ne se produira pas, car cela provoque des erreurs).
  • Remplacement de Invoke-Obfuscation.psm1 par Invoke-Obfuscation.psd1 (merci @Carlos_Perez).
  • Correction de plusieurs bugs d’obfuscation au niveau TOKEN signalés par @cobbr_io et @IISResetMe.