
Invoke-ArgFuscator é um módulo PowerShell de código aberto e multiplataforma que ajuda a gerar linhas de comando ofuscadas para executáveis nativos comuns do sistema.
░█░█▄░█░█▒█░▄▀▄░█▄▀▒██▀░▒░ ▄▀▄▒█▀▄░▄▀▒▒█▀░█▒█░▄▀▀░▄▀▀▒▄▀▄░▀█▀░▄▀▄▒█▀▄░ ░█░█▒▀█░▀▄▀░▀▄▀░█▒█░█▄▄░▀▀░█▀█░█▀▄░▀▄█░█▀░▀▄█▒▄██░▀▄▄░█▀█░▒█▒░▀▄▀░█▀▄░
O Invoke-ArgFuscator é um módulo PowerShell de código aberto e multiplataforma que ajuda a gerar linhas de comando ofuscadas para executáveis nativos comuns do sistema em Windows, Linux e macOS.
👉 Use a versão interativa do ArgFuscator em ArgFuscator.net 🚀
A ofuscação de linha de comando (T1027.010) é a dissimulação da intenção real de um comando por meio da manipulação da linha de comando de um processo. Em Windows, Linux e macOS, muitos aplicativos interpretam os argumentos de linha de comando passados de maneiras inesperadas, levando a situações em que a inserção, exclusão e/ou substituição de determinados caracteres não altera o fluxo de execução do programa. A ofuscação bem-sucedida de linha de comando provavelmente frustrará medidas defensivas, como softwares de AV e EDR, em alguns casos contornando completamente a detecção.
Embora pesquisas anteriores tenham destacado os riscos da ofuscação de linha de comando, principalmente com exemplos anedóticos de aplicativos vulneráveis (nativos do sistema), existe um vácuo de conhecimento em torno dessa técnica. Este projeto visa superar isso fornecendo um recurso centralizado que documenta e demonstra várias técnicas de ofuscação de linha de comando e registra a suscetibilidade de aplicativos populares para cada uma delas.
Este módulo funciona em qualquer sistema operacional que suporte PowerShell/pwsh; isso inclui Windows, macOS e Linux.
brew pré-instalado, execute brew install powershell/tap/powershell para instalar a versão mais recente do PowerShell. Para opções alternativas de instalação, consulte a documentação da Microsoft.A maneira mais simples de instalar este módulo é por meio do seguinte comando PowerShell:
Install-Module -Name Invoke-ArgFuscator
Para usar o módulo, chame a função Invoke-ArgFuscator dentro do PowerShell, por exemplo:
a. Para passar uma linha de comando que você deseja ofuscar como um argumento de linha de comando (supondo que seja suportada pelo 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 seus próprios arquivos de modelo1:
# Windows
powershell /c "Invoke-ArgFuscator -InputFile path\to\file.json"
# macOS and Linux
pwsh -c "Invoke-ArgFuscator -InputFile path/to/file.json"
Clone este repositório para o seu dispositivo.
Chame Invoke-ArgFuscator.ps1 via PowerShell, por exemplo:
a. Para executar interativamente, passe o caminho de um arquivo de modelo1 por meio da entrada padrão (stdin):
# Windows
powershell .\Invoke-ArgFuscator.ps1
# macOS and Linux
pwsh ./Invoke-ArgFuscator.ps1
b. Para passar o caminho do arquivo de modelo1 como um argumento de linha de comando:
# Windows
powershell .\Invoke-ArgFuscator.ps1 -InputFile "path\to\file.json"
# macOS and Linux
pwsh ./Invoke-ArgFuscator.ps1 -InputFile "path/to/file.json"
c. Para passar uma linha de comando que você deseja ofuscar como um argumento de linha de comando:
Observe que isso requer que a pasta models/ esteja presente na mesma pasta 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"
Como o Invoke-ArgFuscator é um módulo PowerShell, você pode adicionar a funcionalidade deste projeto ao seu próprio projeto PowerShell.
Para aproveitar o Invoke-ArgFuscator, adicione
Import-Module Invoke-ArgFuscator
ao seu arquivo PowerShell e chame-o de uma das seguintes formas:
Invoke-ArgFuscator -InputFile $InputFile -n $n
Invoke-ArgFuscator -Command $Command -Platform $Platform -n $n
com
$InputFile uma string contendo um caminho de arquivo (relativo/absoluto) para o arquivo de modelo, $Profile um inteiro maior ou igual a 0 representando o índice do perfil dentro do caminho de arquivo fornecido que deve ser alvo (opcional) e $n um integer maior que 0 para o número de equivalentes de linha de comando ofuscados que devem ser produzidos (opcional); ou,$Command uma string contendo a linha de comando que você deseja ofuscar, $Platform uma string com a plataforma relevante (ex.: windows, opcional) e $n um integer maior que 0 para o número de equivalentes de linha de comando ofuscados que devem ser produzidos (opcional).Eles podem ser gerados via ArgFuscator.net por meio da opção 'Download', ou baixados do GitHub. ↩ ↩2 ↩3