Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Revoke-Obfuscation — Marco de detección de ofuscación de PowerShell | Kitploit
Herramientas/GitHubGitHub/danielbohannon/revoke-obfuscation
Herramientas DefensivasAnálisis EstáticoAnálisis de CódigoAnálisis de MalwareInteligencia de AmenazasPapers e InvestigaciónAprendizaje y Educación
GitHubdanielbohannon/revoke-obfuscation

Revoke-Obfuscation

Marco de detección de ofuscación de PowerShell

Ver Repositorio
752122hace 6 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

Revoke-Obfuscation v1.0

Demostración de Revoke-Obfuscation

Captura de pantalla de Revoke-Obfuscation

Introducción

Revoke-Obfuscation es un framework de detección de ofuscación de PowerShell compatible con PowerShell v3.0+.

Autores

Daniel Bohannon (@danielhbohannon) Lee Holmes (@Lee_Homes)

Investigación

Artículo: https://www.fireeye.com/blog/threat-research/2017/07/revoke-obfuscation-powershell.html

Documento técnico: https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/revoke-obfuscation-report.pdf

Antecedentes

En el otoño de 2016 y la primavera de 2017, Daniel Bohannon (@danielhbohannon) publicó Invoke-Obfuscation e Invoke-CradleCrafter, dos frameworks de ofuscación de PowerShell de código abierto. El objetivo de esta investigación y de estos frameworks era resaltar las limitaciones de un enfoque puramente basado en firmas para detectar el uso de PowerShell por parte de atacantes. El mensaje central para los defensores ha sido centrarse en detectar Indicadores de Ofuscación además de la sintaxis sospechosa conocida.

Sin embargo, los niveles extremos de aleatorización en Invoke-Obfuscation e Invoke-CradleCrafter, junto con las opciones de ofuscación a nivel de token que no se desofuscan en el registro de bloques de script de PowerShell, han llevado a los defensores a buscar una nueva forma escalable de detectar de manera genérica tanto técnicas de ofuscación conocidas como desconocidas.

Pocas semanas después del lanzamiento de Invoke-Obfuscation, Lee Holmes (@Lee_Homes) publicó un artículo titulado More Detecting Obfuscated PowerShell en el que destacaba técnicas de análisis estadístico para detectar características anómalas presentes en scripts muy ofuscados, en particular los producidos por Invoke-Obfuscation.

Desde ese intercambio, Daniel y Lee se hicieron buenos amigos y compartieron muchos intereses/obsesiones comunes: el amor por el café de especialidad y la búsqueda de nuevas formas de detectar a fondo PowerShell ofuscado.

La cantidad de tiempo que ambos miembros del equipo azul dedicaron a investigar y al código de prueba podría equivaler a varios miles de tazas de café preparado en Chemex, asumiendo el tiempo de preparación objetivo de 4 minutos (y asumiendo que al menos otro entusiasta del café captara este juego de palabras con "pour over").

Revoke-Obfuscation es el producto final artesanal de estos esfuerzos.

Propósito

Revoke-Obfuscation es un framework de código abierto compatible con PowerShell v3.0+ para detectar comandos y scripts de PowerShell ofuscados a escala. Se basa en el AST (Árbol de Sintaxis Abstracta) de PowerShell para extraer rápidamente miles de características de cualquier script de PowerShell de entrada y comparar este vector de características con uno de varios vectores de características ponderados predefinidos, calculados mediante un proceso de aprendizaje automatizado realizado sobre un corpus de más de 408.000 scripts de PowerShell. Este corpus completo se puede descargar desde (https://aka.ms/PowerShellCorpus). Puede encontrar los detalles detrás de los aspectos de ciencia de datos de este trabajo en el subdirectorio 'DataScience' del repositorio.

Dado que Revoke-Obfuscation se basa en la extracción y comparación de características en lugar de IOCs puros o coincidencias RegEx, es más robusto en su capacidad para identificar técnicas de ofuscación desconocidas, incluso cuando los atacantes intentan atenuar su ofuscación rellenándola con contenido de script no ofuscado para anular comprobaciones básicas como el análisis de frecuencia de caracteres.

Revoke-Obfuscation puede medir fácilmente la mayoría de los scripts de PowerShell de entrada en 100-300 milisegundos. Este nivel de rendimiento permite a una organización medir la ofuscación de (como máximo) más de 12.000 scripts de PowerShell por hora sin necesidad de indexar registros detallados de bloques de script de PowerShell en un SIEM.

Por último, Revoke-Obfuscation admite una funcionalidad sencilla de listas blancas, junto con la capacidad de ingerir registros de eventos operativos de PowerShell y reensamblar bloques de script que se registran en numerosos registros de bloques de script EID 4104. Puede convertirse fácilmente en una ventanilla única para ingerir los registros de eventos operativos de PowerShell de un entorno, reensamblar y deduplicar todos los scripts de esos registros, y luego identificar los scripts de PowerShell ofuscados que merecen una inspección manual.

Instalación

El código fuente de Revoke-Obfuscation está alojado en Github, y puede descargarlo, bifurcarlo y revisarlo desde este repositorio (https://github.com/danielbohannon/Revoke-Obfuscation). Informe de problemas o solicitudes de funciones a través del rastreador de errores de Github asociado con este proyecto.

Para instalar (desde Github):

root@kitploit:~
Import-Module .\Revoke-Obfuscation.psd1

El código fuente también se puede instalar directamente desde la Galería de PowerShell mediante los siguientes comandos:

Para instalar (desde la Galería de PowerShell):

root@kitploit:~
Install-Module Revoke-Obfuscation
Import-Module Revoke-Obfuscation

Uso

Revoke-Obfuscation proporcionará un tutorial detallado, así como algunas otras sorpresas divertidas. Pero si no le interesan las bromas, simplemente puede ejecutar Get-Help Measure-RvoObfuscation para ver la sintaxis de uso o continuar leyendo.

Hay dos funciones principales utilizadas en este framework:

  • Get-RvoScriptBlock — reensambla scripts a partir de registros de bloques de script EID 4104
  • Measure-RvoObfuscation — mide el/los script(s) de entrada y devuelve una puntuación de ofuscación

Si necesita reensamblar y extraer registros de bloques de script de los registros operativos de PowerShell, entonces Get-RvoScriptBlock es la función que debe elegir. Automáticamente devuelve solo bloques de script únicos y excluye ciertos valores de bloques de script predeterminados que no se consideran maliciosos. Esto se puede anular con el parámetro -Deep.

  • Get-RvoScriptBlock -Path 'C:\Windows\System32\Winevt\Logs\Microsoft-Windows-PowerShell%4Operational.evtx' -Verbose
  • Get-ChildItem .\Demo\demo.evtx | Get-RvoScriptBlock -Verbose
  • Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock -Verbose

Get-RvoScriptBlock también admite resultados de auditoría MIR/HX, así como registros operativos de PowerShell obtenidos a través del proyecto CimSweep de Matt Graeber (@mattifestation) (https://github.com/PowerShellMafia/CimSweep). Para CimSweep se requiere un pequeño ajuste en el registro para engañar a WMI y que consulte un registro de eventos no clásico. Los detalles se pueden encontrar en la sección NOTAS de Get-RvoScriptBlock.

  • Get-ChildItem C:\MirOrHxAuditFiles\*_w32eventlogs.xml | Get-RvoScriptBlock -Verbose
  • Get-CSEventLogEntry -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock

A continuación se muestra un ejemplo completo con datos de prueba registrados en demo.evtx:

root@kitploit:~
$obfResults = Get-WinEvent -Path .\Demo\demo.evtx | Get-RvoScriptBlock | Measure-RvoObfuscation -OutputToDisk -Verbose

A continuación se muestra un ejemplo completo con scripts de prueba alojados local y remotamente:

  • Measure-RvoObfuscation -Url 'http://bit.ly/DBOdemo1' -Verbose -OutputToDisk
  • Get-Content .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk
  • Get-ChildItem .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk

El parámetro -OutputToDisk generará automáticamente todos los scripts ofuscados en .\Results\Obfuscated. De cualquier forma, todos los resultados se devolverán como objetos PSCustomObject que contienen el contenido del script junto con metadatos como una puntuación de ofuscación, tiempo de medición, resultado de la lista blanca, todas las características del script extraídas, etc.

Existen tres opciones de listas blancas en dos ubicaciones en Revoke-Obfuscation:

  1. En disco (se aplican automáticamente si están presentes):
    1. .\Whitelist\Scripts_To_Whitelist\ — Todos los scripts colocados en este directorio serán hasheados y cualquier script idéntico será incluido en la lista blanca. Este método de lista blanca es preferible a las dos opciones siguientes.
    2. .\Whitelist\Strings_To_Whitelist.txt — Un script que contenga CUALQUIERA de las cadenas de este archivo será incluido en la lista blanca. Sintaxis: Nombre_Regla,cadena_a_incluir_en_lista_blanca
    3. .\Whitelist\Regex_To_Whitelist.txt — Un script que contenga CUALQUIERA de las expresiones regulares de este archivo será incluido en la lista blanca. Sintaxis: Nombre_Regla,regex_a_incluir_en_lista_blanca
  2. Argumentos para Measure-RvoObfuscation (se aplican además de las opciones de listas blancas anteriores):
    1. -WhitelistFile — -WhitelistFile .\files\*.ps1,.\more_files\*.ps1,.\one_more_file.ps1
    2. -WhitelistContent — -WhitelistContent 'cadena 1 para lista blanca','cadena 2 para lista blanca'
    3. -WhitelistRegex — -WhitelistRegex 'regex 1 para lista blanca','regex 2 para lista blanca'

Si está interesado en crear su propio conjunto de datos de entrenamiento y generar un vector ponderado para la función Measure-Vector, entonces ModelTrainer.cs/ModelTrainer.exe se puede ejecutar contra un conjunto de datos etiquetados. El siguiente comando extraerá vectores de características de todos los scripts de entrada y los agregará en un único CSV utilizado en esta fase de entrenamiento:

root@kitploit:~
Get-ChildItem .\*.ps1 | ForEach-Object { [PSCustomObject](Get-RvoFeatureVector -Path $_.FullName) | Export-Csv .\all_features.csv -Append }

Por último, si busca una plataforma para crear indicadores (IOCs) que aprovechen el poder del AST de PowerShell (Árbol de Sintaxis Abstracta) — lo cual recomendaríamos encarecidamente para identificar actividad maliciosa de PowerShell que NO está ofuscada — entonces PS Script Analyzer es un excelente framework diseñado para manejar dichas tareas.

Licencia

Revoke-Obfuscation se publica bajo la licencia Apache 2.0.

Notas de la versión

v1.0 - 2017-07-27 Black Hat USA y 2017-07-30 DEF CON: Lanzamiento público de Revoke-Obfuscation.

Descargar herramienta