
Invoke-ArgFuscator is an open-source, cross-platform PowerShell module that helps generate obfuscated command-lines for common system-native executables.
░█░█▄░█░█▒█░▄▀▄░█▄▀▒██▀░▒░ ▄▀▄▒█▀▄░▄▀▒▒█▀░█▒█░▄▀▀░▄▀▀▒▄▀▄░▀█▀░▄▀▄▒█▀▄░ ░█░█▒▀█░▀▄▀░▀▄▀░█▒█░█▄▄░▀▀░█▀█░█▀▄░▀▄█░█▀░▀▄█▒▄██░▀▄▄░█▀█░▒█▒░▀▄▀░█▀▄░
Invoke-ArgFuscator es un módulo de PowerShell de código abierto y multiplataforma que ayuda a generar líneas de comandos ofuscadas para ejecutables nativos comunes del sistema en Windows, Linux y macOS.
👉 Usa la versión interactiva de ArgFuscator en ArgFuscator.net 🚀
La ofuscación de la línea de comandos (T1027.010) es el enmascaramiento de la verdadera intención de un comando mediante la manipulación de la línea de comandos de un proceso. En Windows, Linux y macOS, muchas aplicaciones analizan los argumentos de línea de comandos que reciben de maneras inesperadas, lo que da lugar a situaciones en las que la inserción, eliminación y/o sustitución de ciertos caracteres no altera el flujo de ejecución del programa. Es probable que una ofuscación exitosa de la línea de comandos frustre medidas defensivas como el software antivirus y EDR, y en algunos casos evite por completo la detección.
Aunque investigaciones anteriores han resaltado los riesgos de la ofuscación de la línea de comandos, principalmente con ejemplos anecdóticos de aplicaciones vulnerables (nativas del sistema), existe un vacío de conocimiento en torno a esta técnica. Este proyecto busca superar esto proporcionando un recurso centralizado que documenta y demuestra diversas técnicas de ofuscación de la línea de comandos, y registra la susceptibilidad de las aplicaciones populares para cada una.
Este módulo funciona en cualquier sistema operativo que admita PowerShell/pwsh; esto incluye Windows, macOS y Linux.
brew preinstalado, ejecuta brew install powershell/tap/powershell para instalar la última versión de PowerShell. Para opciones de instalación alternativas, consulta la documentación de Microsoft.La forma más sencilla de instalar este módulo es mediante el siguiente comando de PowerShell:
Install-Module -Name Invoke-ArgFuscator
Para usar el módulo, llama a la función Invoke-ArgFuscator desde PowerShell, por ejemplo:
a. Para pasar una línea de comandos que desees ofuscar como argumento de línea de comandos (suponiendo que sea compatible con ArgFuscator.net):
# Windows
powershell /c "Invoke-ArgFuscator -Command 'certutil /f /urlcache https://www.example.org/ homepage.txt'"
# macOS and Linux
pwsh -c "Invoke-ArgFuscator -Command 'certutil /f /urlcache https://www.example.org/ homepage.txt'"
b. Para usar tus propios archivos de modelo1:
# Windows
powershell /c "Invoke-ArgFuscator -InputFile path\to\file.json"
# macOS and Linux
pwsh -c "Invoke-ArgFuscator -InputFile path/to/file.json"
Clona este repositorio en tu dispositivo.
Ejecuta Invoke-ArgFuscator.ps1 mediante PowerShell, por ejemplo:
a. Para ejecutarlo de forma interactiva, pasa la ruta de un archivo de modelo1 mediante la entrada estándar (stdin):
# Windows
powershell .\Invoke-ArgFuscator.ps1
# macOS and Linux
pwsh ./Invoke-ArgFuscator.ps1
b. Para pasar la ruta al archivo de modelo1 como argumento de línea de comandos:
# Windows
powershell .\Invoke-ArgFuscator.ps1 -InputFile "path\to\file.json"
# macOS and Linux
pwsh ./Invoke-ArgFuscator.ps1 -InputFile "path/to/file.json"
c. Para pasar una línea de comandos que desees ofuscar como argumento de línea de comandos:
Ten en cuenta que esto requiere que la carpeta models/ esté presente en la misma carpeta que Invoke-ArgFuscator.ps1.
# Windows
powershell .\Invoke-ArgFuscator.ps1 -Command "certutil /f /urlcache https://www.example.org/ homepage.txt"
# macOS and Linux
pwsh ./Invoke-ArgFuscator.ps1 -Command "certutil /f /urlcache https://www.example.org/ homepage.txt"
Debido a que Invoke-ArgFuscator es un módulo de PowerShell, puedes añadir la funcionalidad de este proyecto a tu propio proyecto de PowerShell.
Para aprovechar Invoke-ArgFuscator, añade
Import-Module Invoke-ArgFuscator
a tu archivo de PowerShell, y llámalo de cualquiera de las siguientes maneras:
Invoke-ArgFuscator -InputFile $InputFile -n $n
Invoke-ArgFuscator -Command $Command -Platform $Platform -n $n
donde
$InputFile es un string que contiene una ruta de archivo (relativa/absoluta) al archivo de modelo, $Profile es un entero mayor o igual que 0 que representa el índice de perfil dentro de la ruta de archivo proporcionada que se debe seleccionar (opcional), y $n es un integer mayor que 0 para el número de equivalentes de línea de comandos ofuscados que se deben producir (opcional); o,$Command es un string que contiene la línea de comandos que deseas ofuscar, $Platform es un string con la plataforma relevante (por ejemplo, windows, opcional), y $n es un integer mayor que 0 para el número de equivalentes de línea de comandos ofuscados que se deben producir (opcional).Estos se pueden generar a través de ArgFuscator.net mediante la opción 'Download', o descargarse desde GitHub. ↩ ↩2 ↩3