Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
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
Stracciatella — Espace d'exécution PowerShell sûr pour l'OpSec depuis C# (alias SharpPick) avec AMSI, Mode Langage Contraint et Journalisation des blocs de scripts désactivés au démarrage | Kitploit
Outils/GitHubGitHub/mgeeky/stracciatella
Escalade de PrivilègesFrameworks d'ExploitationÉvasion IDS/IPSMouvement LatéralScripting et AutomatisationPost-ExploitationTests d'IntrusionCommandement et ContrôleRed TeamingDéveloppement de Charges Utiles
GitHub
5436291il y a 4 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
mgeeky/stracciatella

Stracciatella

Espace d'exécution PowerShell sûr pour l'OpSec depuis C# (alias SharpPick) avec AMSI, Mode Langage Contraint et Journalisation des blocs de scripts désactivés au démarrage

Voir le dépôt

Stracciatella v0.7

Espace d'exécution PowerShell depuis C# (alias technique SharpPick) avec AMSI, ETW et Script Block Logging désactivés pour votre confort.

De nos jours, alors que PowerShell est lourdement instrumenté par l'utilisation de techniques telles que :

  • AMSI
  • ETW
  • Script Block Logging
  • Fichier de transcription
  • Journalisation des modules
  • Mode de langage contraint

Les attaquants avancés doivent trouver des moyens de contourner ces efforts afin de réaliser des exercices de simulation adversarial sophistiqués. Afin d'aider dans ces efforts, le projet suivant a été créé.

Ce programme s'appuie sur des contournements pour des techniques spécifiques incluses dans :

  • Disable-Amsi.ps1
  • KillETW.ps1 par tandasat
  • Disable-ScriptLogging.ps1

Qui s'appuient à leur tour sur les recherches suivantes :

  • Matt Graeber : https://github.com/mattifestation/PSReflect
  • Matt Graeber : https://twitter.com/mattifestation/status/735261120487772160
  • Avi Gimpel : https://www.cyberark.com/threat-research-blog/amsi-bypass-redux/
  • Adam Chester : https://www.mdsec.co.uk/2018/06/exploring-powershell-amsi-and-logging-evasion/
  • Ryan Cobb : https://cobbr.io/ScriptBlock-Logging-Bypass.html
  • Ryan Cobb : https://cobbr.io/ScriptBlock-Warning-Event-Logging-Bypass.html

L'idée de SharpPick, c'est-à-dire lancer des scripts PowerShell depuis un assembly C# via l'utilisation de Runspaces, n'est pas non plus nouvelle et a été implémentée pour la première fois par Lee Christensen (@tifkin_) dans son :

  • UnmanagedPowerShell

De plus, le code source emprunte l'implémentation de CustomPSHost de Lee.

Ce projet hérite des recherches ci-dessus et de la grande communauté de sécurité afin de fournir un environnement PowerShell quasi-efficace avec les défenses désactivées au démarrage.

Se compile maintenant facilement avec .NET 4.0 tandis que s'il est compilé avec .NET Framework 4.7.1+, une fonctionnalité supplémentaire est incluse qui permet de décharger les DLL constituant les artefacts de contournement du CLM et tente de les supprimer ensuite (difficile à faire fonctionner honnêtement).

Le meilleur rendement est obtenu avec Stracciatella compilé avec .NET 4.0.

OpSec

  • Ce programme offre la possibilité de décoder les paramètres passés à la volée, en utilisant un décodage XOR sur un octet
  • Avant de lancer toute commande, il s'assure de désactiver AMSI en utilisant deux approches et ETW
  • Avant de lancer toute commande, il s'assure de désactiver Script Block Logging en utilisant deux approches
  • Ce programme ne patche aucune bibliothèque système, aucun code natif système (pensez à amsi.dll)
  • Des efforts ont été faits pour ne pas stocker les scripts/commandes décodés trop longtemps, afin de se protéger des techniques de vidage mémoire gérées par les EDR et les AV

Utilisation

Il y a plusieurs options disponibles :

PS D:\> Stracciatella -h

  :: Stracciatella - Powershell runspace avec AMSI, ETW et Script Block Logging désactivés.
  Mariusz Banach / mgeeky, '19-22 <[email protected]>
  v0.7

Usage: stracciatella.exe [options] [command]
  -s <chemin>, --script <chemin> - Chemin vers le fichier contenant le script PowerShell à exécuter. Si aucune option n'est donnée, entrera
                                    dans une boucle pseudo-shell. Cela peut aussi être une URL HTTP(S) pour télécharger et exécuter un script powershell.
  -v, --verbose              - Affiche des informations détaillées
  -n, --nocleanup            - Ne pas supprimer les restes de désactivation du CLM (fichiers DLL dans TEMP et clés de registre COM).
                               Par défaut, ils seront toujours supprimés.
  -C, --leaveclm             - Ne pas tenter de désactiver le CLM. Plus discret. Évitera de laisser des artefacts de désactivation du CLM non supprimés.
  -f, --force                - Poursuivre l'exécution même si les défenses PowerShell n'ont pas été désactivées.
                               Par défaut, on abandonne en cas d'échec.
  -c, --command              - Exécute les commandes spécifiées. Vous pouvez soit utiliser -c, soit ajouter des commandes après
                               les paramètres de stracciatella : cmd> straciatella ipconfig /all
                               Si les paramètres de commande et de script sont donnés, exécute la commande après avoir exécuté le script.
  -x <clé>, --xor <clé>      - Considère l'entrée comme codée en XOR, où <clé> est une clé d'un octet en décimal
                               (préfixez avec 0x pour l'hexadécimal)
  -p <nom>, --pipe <nom>     - Lire les commandes powershell à partir d'un tube nommé spécifié. La commande doit être précédée de 4 octets de
                               sa longueur codée en little-endian (notation Longueur-Valeur).
  -t <millisecs>, --timeout <millisecs>
                             - Spécifie le délai d'attente pour l'opération de lecture du tube (en millisecondes). Par défaut : 60 sec. 0 - illimité.
  -e, --cmdalsoencoded       - Considère également la commande d'entrée (spécifiée dans '--command') comme encodée.
                               Décode la commande d'entrée après décodage et exécution du fichier script d'entrée.
                               Par défaut, nous décodons uniquement le fichier d'entrée et considérons la commande donnée en texte clair

Le programme accepte une commande et un chemin de fichier script en entrée. Les deux sont optionnels, si aucun n'est donné - un pseudo-shell sera démarré. La commande et le script peuvent être encodés en utilisant XOR sur un octet (produira une sortie encodée en Base64) pour une meilleure expérience OpSec.

Voici quelques exemples présentant des cas d'utilisation :

  1. Pseudo-shell - initié lorsqu'aucune option de commande ou de chemin de script n'a été donnée :
PS D:\> Stracciatella.exe -v

  :: Stracciatella - Powershell runspace avec AMSI, ETW et Script Block Logging désactivés.
  Mariusz Banach / mgeeky, '19-22 <[email protected]>
  v0.7

[.] Version de PowerShell : 5.1
[.] Mode de langage : FullLanguage
[+] Pas besoin de désactiver le mode de langage contraint. Déjà en FullLanguage.
[+] Script Block Logging désactivé.
[+] AMSI désactivé.
[+] ETW désactivé.

Stracciatella D:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.18362.1
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.1
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
  1. Commande encodée en XOR (clé = 0x31) et chemin vers le fichier script

Tout d'abord, pour préparer les instructions encodées, nous pouvons utiliser le script encoder.py fourni, qui peut être utilisé comme suit :

PS D:\> python encoder.py -h
usage: encoder.py [options] <commande|fichier>

positional arguments:
  command               Spécifie soit une commande, soit le chemin d'un fichier script à encoder

optional arguments:
  -h, --help            affiche ce message d'aide et quitte
  -x KEY, --xor KEY     Spécifie la clé de codage XOR de la commande/fichier (un octet)
  -o PATH, --output PATH
                        (optionnel) Fichier de sortie. S'il n'est pas donné, affichera la sortie sur stdout
Télécharger l’outil