Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Stracciatella — Espacio de ejecución de PowerShell seguro para OpSec desde C# (también conocido como SharpPick) con AMSI, Modo de Lenguaje Restringido y Registro de Bloques de Script deshabilitados al inicio | Kitploit
Herramientas/GitHubGitHub/mgeeky/stracciatella
Escalada de PrivilegiosFrameworks de ExploitsEvasión de IDS/IPSMovimiento LateralScripting y AutomatizaciónPost-ExplotaciónPruebas de PenetraciónComando y ControlRed TeamingDesarrollo de Payloads
GitHub
54362101hace 4 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
mgeeky/stracciatella

Stracciatella

Espacio de ejecución de PowerShell seguro para OpSec desde C# (también conocido como SharpPick) con AMSI, Modo de Lenguaje Restringido y Registro de Bloques de Script deshabilitados al inicio

Ver Repositorio

Stracciatella v0.7

Espacio de ejecución de Powershell desde C# (técnica SharpPick) con AMSI, ETW y registro de bloques de script deshabilitados para tu placer.

Hoy en día, cuando Powershell ha sido severamente instrumentado mediante el uso de técnicas como:

  • AMSI
  • ETW
  • Registro de bloques de script
  • Archivo de transcripción
  • Registro de módulos
  • Modo de lenguaje restringido

Los atacantes avanzados deben encontrar formas de eludir estos esfuerzos para poder llevar a cabo ejercicios sofisticados de simulación adversarial. Para ayudar en estos esfuerzos, se creó el siguiente proyecto.

Este programa se basa en saltos de técnicas específicas incluidas en:

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

Que a su vez se basaron en las siguientes investigaciones:

  • 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

La idea de SharpPick, es decir, lanzar scripts de powershell desde un ensamblado C# mediante Runspaces, tampoco es nueva y fue implementada por primera vez por Lee Christensen (@tifkin_) en su:

  • UnmanagedPowerShell

Además, el código fuente toma prestada la implementación de CustomPSHost de Lee.

Este proyecto hereda de las investigaciones anteriores y de la gran comunidad de seguridad para proporcionar un entorno Powershell casi efectivo con defensas deshabilitadas al inicio.

Ahora se compila fácilmente con .NET 4.0, mientras que si se compila con .NET Framework 4.7.1+ se incluye una funcionalidad adicional que permite descargar las DLL que constituyen los artefactos de omisión de CLM e intenta eliminarlas después (que apenas funciona, para ser honesto).

El mejor rendimiento se obtiene con Stracciatella compilado con .NET 4.0.

OpSec

  • Este programa proporciona funcionalidad para decodificar parámetros pasados sobre la marcha, utilizando decodificación XOR de un solo byte.
  • Antes de lanzar cualquier comando, se asegura de deshabilitar AMSI usando dos enfoques y ETW.
  • Antes de lanzar cualquier comando, se asegura de deshabilitar el registro de bloques de script usando dos enfoques.
  • Este programa no parchea ninguna biblioteca del sistema, ni código nativo del sistema (piensa en amsi.dll).
  • Se hicieron esfuerzos para no almacenar scripts/comandos decodificados excesivamente tiempo, con el fin de protegerse de técnicas de volcado de memoria gobernadas por EDR y AV.

Uso

Hay varias opciones disponibles:

PS D:\> Stracciatella -h

  :: Stracciatella - Espacio de ejecución de Powershell con AMSI, ETW y registro de bloques de script deshabilitados.
  Mariusz Banach / mgeeky, '19-22 <[email protected]>
  v0.7

Uso: stracciatella.exe [opciones] [comando]
  -s <ruta>, --script <ruta> - Ruta al archivo que contiene el script de Powershell a ejecutar. Si no se dan opciones, entrará
                               en un bucle de pseudo-shell. También puede ser una URL HTTP(S) para descargar y ejecutar el script de powershell.
  -v, --verbose              - Muestra información detallada
  -n, --nocleanup            - No eliminar los residuos de desactivación de CLM (archivos DLL en TEMP y claves de registro COM).
                               Por defecto, siempre se eliminarán.
  -C, --leaveclm             - No intentar deshabilitar CLM. Más sigiloso. Evitará dejar artefactos de desactivación de CLM sin eliminar.
  -f, --force                - Proceder con la ejecución incluso si las defensas de Powershell no se deshabilitaron.
                               Por defecto, abortamos en caso de fallo.
  -c, --command              - Ejecuta los comandos especificados. Puedes usar -c o añadir comandos después de los
                               parámetros de stracciatella: cmd> straciatella ipconfig /all
                               Si se dan parámetros de comando y script, ejecuta el comando después de ejecutar el script.
  -x <clave>, --xor <clave>  - Considerar la entrada como codificada XOR, donde <clave> es una clave de un byte en decimal
                               (prefijo con 0x para hexadecimal)
  -p <nombre>, --pipe <nombre>   - Leer comandos de powershell desde una tubería con nombre especificada. El comando debe ir precedido de 4 bytes de
                               su longitud codificada en little-endian (notación Longitud-Valor).
  -t <milisegundos>, --timeout <milisegundos>
                             - Especifica el tiempo de espera para la operación de lectura de la tubería (en milisegundos). Predeterminado: 60 seg. 0 - infinito.
  -e, --cmdalsoencoded       - Considerar que el comando de entrada (especificado en '--command') también está codificado.
                               Decodifica el comando de entrada después de decodificar y ejecutar el archivo de script de entrada.
                               Por defecto, solo decodificamos el archivo de entrada y consideramos el comando dado en texto plano.

El programa acepta el comando y la ruta del archivo de script como entrada. Ambos son opcionales; si no se da ninguno, se iniciará una pseudo-shell. Tanto el comando como el script pueden codificarse adicionalmente usando XOR de un solo byte (producirá salida codificada en Base64) para una mejor experiencia OpSec.

Aquí hay un par de ejemplos que presentan casos de uso:

  1. Pseudo-shell - iniciada cuando no se dan ni comando ni opción de ruta de script:
PS D:\> Stracciatella.exe -v

  :: Stracciatella - Espacio de ejecución de Powershell con AMSI, ETW y registro de bloques de script deshabilitados.
  Mariusz Banach / mgeeky, '19-22 <[email protected]>
  v0.7

[.] Versión de Powershell: 5.1
[.] Modo de lenguaje: FullLanguage
[+] No es necesario deshabilitar el Modo de Lenguaje Restringido. Ya está en FullLanguage.
[+] Registro de bloques de script deshabilitado.
[+] AMSI deshabilitado.
[+] ETW deshabilitado.

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. Comando codificado XOR (clave = 0x31) y ruta al archivo de script

En primer lugar, para preparar las declaraciones codificadas podemos usar el script encoder.py incluido, que se puede usar de la siguiente manera:

PS D:\> python encoder.py -h
uso: encoder.py [opciones] <comando|archivo>

argumentos posicionales:
  command               Especifica un comando o la ruta del archivo de script para codificar

argumentos opcionales:
  -h, --help            muestra este mensaje de ayuda y sale
  -x KEY, --xor KEY     Especifica la clave de codificación XOR para comando/archivo (un byte)
  -o PATH, --output PATH
                        (opcional) Archivo de salida. Si no se da, se mostrará la salida en stdout
Descargar herramienta