
Ofuscador de PowerShell

O Invoke-Obfuscation é um ofuscador de comandos e scripts PowerShell compatível com PowerShell v2.0+.
No outono de 2015, decidi começar a pesquisar a flexibilidade da linguagem PowerShell e comecei a catalogar as várias maneiras de realizar um punhado de técnicas comuns que a maioria dos invasores utiliza regularmente.
Inicialmente focando em sintaxes de comando codificado e cradle de download remoto, descobri que vários caracteres de escape que não impediam a execução do comando persistiam nos argumentos da linha de comando, tanto no processo em execução quanto no que é registrado nos logs de evento Security EID 4688 e Sysmon EID 1. Isso me levou a explorar sistematicamente maneiras de ofuscar cada tipo de "token" encontrado em qualquer comando ou script PowerShell.
Em seguida, explorei formas mais obscuras de realizar ofuscação a nível de string, várias técnicas de codificação/criptografia (como ASCII/hex/octal/binário e até SecureString) e, finalmente, técnicas de inicialização do PowerShell para abstrair os argumentos da linha de comando do powershell.exe e enviá-los de volta ao processo pai e até mesmo ao avô.
Invasores e malwares comerciais começaram a usar técnicas de ofuscação extremamente básicas para esconder a maior parte do comando dos argumentos da linha de comando do powershell.exe. Desenvolvi esta ferramenta para ajudar a Equipe Azul a simular comandos ofuscados com base no que atualmente sei ser sintaticamente possível no PowerShell 2.0-5.0, para que possam testar suas capacidades de detecção dessas técnicas.
O único propósito da ferramenta é quebrar qualquer suposição que nós, defensores, possamos ter sobre como os comandos PowerShell podem aparecer na linha de comando. Minha esperança é que isso incentive a Equipe Azul a mudar o foco para a busca de Indicadores de Ofuscação na linha de comando, além de atualizar o log do PowerShell para incluir logs de Módulo, ScriptBlock e Transcrição, pois essas fontes simplificam a maioria dos aspectos das técnicas de ofuscação geradas por esta ferramenta.
Embora todas as camadas de ofuscação tenham sido desenvolvidas em scripts separados, a maioria dos usuários achará a função Invoke-Obfuscation a maneira mais fácil de explorar e visualizar as técnicas de ofuscação que este framework atualmente suporta.
O código-fonte do Invoke-Obfuscation está hospedado no Github, e você pode baixar, bifurcar e revisá-lo a partir deste repositório (https://github.com/danielbohannon/Invoke-Obfuscation). Por favor, relate problemas ou solicitações de recursos através do rastreador de bugs do Github associado a este projeto.
Para instalar:
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation
O Invoke-Obfuscation é lançado sob a licença Apache 2.0.
v1.0 - 2016-09-25 DerbyCon 6.0 (Louisville, Kentucky EUA): Lançamento PÚBLICO do Invoke-Obfuscation.
v1.1 - 2016-10-09 SANS DFIR Summit (Praga, República Tcheca): Adicionada funcionalidade de reordenação do operador -f format a todas as funções de ofuscação TOKEN aplicáveis. Também foram adicionadas opções de sintaxe adicionais para definir valores de variáveis.
v1.2 - 2016-10-20 CODE BLUE (Tóquio, Japão): Adicionada ofuscação do token TYPE (casting direto de tipo com opções de ofuscação de string para o nome do tipo).
v1.3 - 2016-10-22 Hacktivity (Budapeste, Hungria): Adicionados dois novos LAUNCHERs: CLIP+ e CLIP++. Também foi adicionada uma sintaxe de conversão de char array adicional (e mais simples) para todas as funções ENCODING que não requer For-EachObject/%.
v1.4 - 2016-10-28 BruCON (Ghent, Bélgica): Adicionada nova função ENCODING BXOR. Também foi aprimorada a aleatoriedade de maiúsculas/minúsculas para todos os componentes de todas as funções ENCODING, bem como para as flags de execução do PowerShell para todos os LAUNCHERs. Finalmente, adicionada a opção abreviada -EP para -ExecutionPolicy em todos os LAUNCHERs, bem como a representação opcional em inteiro da flag de execução -WindowStyle do PowerShell: Normal (0), Hidden (1), Minimized (2), Maximized (3).
v1.5 - 2016-11-04 Blue Hat (Redmond, Washington EUA): Adicionado LAUNCHER WMIC com alguma aleatoriedade nos argumentos da linha de comando do WMIC.
v1.6 - 2017-01-24 Blue Hat IL (Tel Aviv, Israel):
v1.7 - 2017-03-03 nullcon (Goa, Índia):
v1.8 - 2017-07-27 Black Hat (Las Vegas, Nevada EUA):
v1.8.1 - 2017-12-19:
v1.8.2 - 2018-01-04: