
Ofuscador de PowerShell

Invoke-Obfuscation es un ofuscador de comandos y scripts de PowerShell compatible con PowerShell v2.0+.
En el otoño de 2015 decidí comenzar a investigar la flexibilidad del lenguaje de PowerShell y comencé a catalogar las diversas formas de lograr un puñado de técnicas comunes que la mayoría de los atacantes utilizan de manera habitual.
Inicialmente centrándome en la sintaxis de comando codificado y descarga remota (cradle), descubrí que varios caracteres de escape que no obstaculizaban la ejecución del comando persistían en los argumentos de la línea de comandos, tanto en el proceso en ejecución como en lo que se registra en los registros de eventos Security EID 4688 y Sysmon EID 1. Esto me llevó a explorar sistemáticamente formas de ofuscar cada tipo de "token" que se encuentra en cualquier comando o script de PowerShell.
Luego exploré formas más oscuras de realizar ofuscación a nivel de cadenas, diversas técnicas de codificación/cifrado (como ASCII/hex/octal/binary e incluso SecureString), y finalmente técnicas de lanzamiento de PowerShell para abstraer los argumentos de la línea de comandos de powershell.exe y trasladarlos al proceso padre e incluso al abuelo.
Los atacantes y el malware comercial han comenzado a utilizar técnicas de ofuscación extremadamente básicas para ocultar la mayor parte del comando de los argumentos de la línea de comandos de powershell.exe. Desarrollé esta herramienta para ayudar al Blue Team a simular comandos ofuscados basados en lo que actualmente sé que es sintácticamente posible en PowerShell 2.0-5.0, para que puedan probar sus capacidades de detección de estas técnicas.
El único propósito de la herramienta es romper cualquier suposición que nosotros, como defensores, podamos tener sobre cómo pueden aparecer los comandos de PowerShell en la línea de comandos. Mi esperanza es que aliente al Blue Team a cambiar hacia la búsqueda de Indicadores de Ofuscación en la línea de comandos, además de actualizar el registro de PowerShell para incluir el registro de Módulos, ScriptBlocks y Transcripciones, ya que estas fuentes simplifican la mayoría de los aspectos de las técnicas de ofuscación generadas por esta herramienta.
Si bien todas las capas de ofuscación se han desarrollado en scripts separados, la mayoría de los usuarios encontrarán que la función Invoke-Obfuscation es la forma más sencilla de explorar y visualizar las técnicas de ofuscación que este framework soporta actualmente.
El código fuente de Invoke-Obfuscation está alojado en Github, y puedes descargarlo, bifurcarlo y revisarlo desde este repositorio (https://github.com/danielbohannon/Invoke-Obfuscation). Por favor, reporta problemas o solicitudes de funcionalidades a través del rastreador de errores de Github asociado con este proyecto.
Para instalar:
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation
Invoke-Obfuscation se publica bajo la licencia Apache 2.0.
v1.0 - 2016-09-25 DerbyCon 6.0 (Louisville, Kentucky EE. UU.): Lanzamiento público de Invoke-Obfuscation.
v1.1 - 2016-10-09 SANS DFIR Summit (Praga, República Checa): Se agregó la funcionalidad de reordenamiento del operador de formato -f a todas las funciones de ofuscación TOKEN aplicables. También se agregaron opciones de sintaxis adicionales para establecer valores de variables.
v1.2 - 2016-10-20 CODE BLUE (Tokio, Japón): Se agregó ofuscación TOKEN de tipo (conversión directa de tipos con opciones de ofuscación de cadenas para el nombre del tipo).
v1.3 - 2016-10-22 Hacktivity (Budapest, Hungría): Se agregaron dos nuevos LAUNCHERs: CLIP+ y CLIP++. También se agregó una sintaxis de conversión de caracteres de matriz adicional (y más simple) para todas las funciones ENCODING que no requiere For-EachObject/% .
v1.4 - 2016-10-28 BruCON (Gante, Bélgica): Se agregó la nueva función ENCODING BXOR. También se mejoró la aleatorización de mayúsculas/minúsculas para todos los componentes de todas las funciones ENCODING, así como para los flags de ejecución de PowerShell para todos los LAUNCHERs. Finalmente, se agregó la opción abreviada -EP para -ExecutionPolicy a todos los LAUNCHERs, así como la representación entera opcional del flag de ejecución de PowerShell -WindowStyle: Normal (0), Oculto (1), Minimizado (2), Maximizado (3).
v1.5 - 2016-11-04 Blue Hat (Redmond, Washington EE. UU.): Se agregó el LAUNCHER WMIC con cierta aleatorización de los argumentos de la línea de comandos de WMIC.
v1.6 - 2017-01-24 Blue Hat IL (Tel Aviv, Israel):
v1.7 - 2017-03-03 nullcon (Goa, India):
v1.8 - 2017-07-27 Black Hat (Las Vegas, Nevada EE. UU.):
v1.8.1 - 2017-12-19:
v1.8.2 - 2018-01-04: