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
Invoke-Obfuscation — Obfuscateur PowerShell | Kitploit
Outils/GitHubGitHub/danielbohannon/invoke-obfuscation
Outils DéfensifsGénération de PayloadsApprentissage et ÉducationRed Teaming
GitHubdanielbohannon/invoke-obfuscation

Invoke-Obfuscation

Obfuscateur PowerShell

Voir le dépôt
4.3k815il y a 7 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

Invoke-Obfuscation v1.8

===============

Capture d'écran d'Invoke-Obfuscation

Introduction

Invoke-Obfuscation est un obfuscateur de commandes et scripts PowerShell compatible PowerShell v2.0+.

Contexte

À l'automne 2015, j'ai décidé de commencer à étudier la flexibilité du langage PowerShell et à cataloguer les différentes manières d'accomplir quelques 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 berceaux de téléchargement à distance, j'ai découvert que divers caractères d'échappement qui n'entravaient pas l'exécution de la commande persistaient dans les arguments de la ligne de commande, à la fois dans le processus en cours et dans ce qui est consigné 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 « token » présent dans toute commande ou script PowerShell.

J'ai ensuite exploré des moyens plus obscurs d'effectuer une 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 la ligne de commande de powershell.exe et les repousser vers le processus parent, voire grand-parent.

Objectif

Les attaquants et les malwares courants ont commencé à utiliser des techniques d'obfuscation extrêmement basiques pour cacher la majeure partie de la commande dans les arguments de la ligne de commande de powershell.exe. J'ai développé cet outil pour aider la Blue Team à simuler des commandes obfusquées basées sur ce que je sais actuellement ê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, défenseurs, pourrions avoir sur la façon dont les commandes PowerShell peuvent apparaître sur la ligne de commande. J'espère qu'il encouragera la Blue Team à se concentrer sur la recherche d'indicateurs d'obfuscation sur la ligne de commande, en plus de mettre à jour la journalisation PowerShell pour inclure la journalisation des modules, ScriptBlock et Transcription, car ces sources simplifient la plupart des aspects des techniques d'obfuscation générées par cet outil.

Utilisation

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 l'examiner à partir de ce dépôt (https://github.com/danielbohannon/Invoke-Obfuscation). Veuillez signaler les problèmes ou demandes de fonctionnalités via le traqueur de bugs Github associé à ce projet.

Pour installer :

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

Licence

Invoke-Obfuscation est publié sous licence Apache 2.0.

Notes de version

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

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

v1.2 - 2016-10-20 CODE BLUE (Tokyo, Japon) : Ajout de l'obfuscation de type TOKEN (cast de type direct 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 char en tableau supplémentaire (et plus simple) pour toutes les fonctions ENCODING qui ne nécessite pas For-EachObject/%.

v1.4 - 2016-10-28 BruCON (Gand, Belgique) : Ajout de la nouvelle fonction ENCODING BXOR. Amélioration également de la casse aléatoire pour tous les composants de toutes les fonctions ENCODING ainsi que pour les indicateurs d'exécution PowerShell pour tous les LAUNCHERs. Enfin, ajout de l'option abrégée -EP pour -ExecutionPolicy à tous les LAUNCHERs ainsi que la représentation entière optionnelle de l'indicateur d'exécution PowerShell -WindowStyle : Normal (0), Hidden (1), Minimized (2), Maximized (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é CLI : E.g., 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 Whitespace de Token\All\1 pour accélérer l'obfuscation des grands scripts.
  • Ajout de la sortie Process Argument Tree pour tous les launchers afin d'aider les défenseurs.
  • Ajout de la fonctionnalité de détection automatique du menu de base pour éviter d'avoir à utiliser BACK ou HOME : E.g., if you ran TOKEN then ALL then 1, then just type LAUNCHER and you will get to the LAUNCHER menu without needing to type HOME or BACK to get back to the home menu.
  • Ajout de la syntaxe multi-commandes utilisée par le mode CLI et interactif : E.g., Token\All\1,String\3,Encoding\5,Launcher\Ps\234,Clip
  • Ajout de la capacité regex à tous les menus et commandes d'obfuscation : E.g., 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 syntaxe de sous-chaîne -Key -Ke -K KEY à Out-SecureStringCommand.ps1.
  • Ajout d'une randomisation de casse plus approfondie à toutes les fonctions d'obfuscation \Home\String.
  • Ajout des indicateurs -ST/-STA (Single-Threaded Apartment) aux fonctions de lancement CLIP+ et CLIP++ car ils sont nécessaires si exécutés sur 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 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 à tous les launchers, 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. Ajout de la syntaxe JOIN [String]::Join('',$string)
  2. Ajout de la syntaxe JOIN par variable OFS (variable automatique Output Field Separator)
  • Ajout de deux syntaxes SecureString supplémentaires à Encoding\5 :
  1. PtrToStringAnsi / SecureStringToGlobalAllocAnsi
  2. PtrToStringBSTR / SecureStringToBSTR
  • Ajout de six syntaxes alternatives GetMember pour plusieurs membres 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 afin 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.

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

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

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

v1.8.1 - 2017-12-19 :

  • Ajout de la fonction COMPRESS pour faciliter la conversion de scripts multilignes en commande monoligne tout en réduisant considérablement la longueur de la commande pour les limitations de longueur de ligne de commande de cmd.exe.

v1.8.2 - 2018-01-04 :

  • Ajout des fonctions d'obfuscation AST, qui obfusquent en manipulant la structure de l'AbstractSyntaxTree sans utiliser beaucoup de caractères spéciaux.
Télécharger l’outil