Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Invoke-Obfuscation — Ofuscador de PowerShell | Kitploit
Ferramentas/GitHubGitHub/danielbohannon/invoke-obfuscation
Ferramentas DefensivasGeração de PayloadsAprendizado e EducaçãoRed Teaming
GitHubdanielbohannon/invoke-obfuscation

Invoke-Obfuscation

Ofuscador de PowerShell

Ver Repositório
4.3k815há 7 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Invoke-Obfuscation v1.8

Invoke-Obfuscation Screenshot

Introdução

O Invoke-Obfuscation é um ofuscador de comandos e scripts PowerShell compatível com PowerShell v2.0+.

Contexto

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ô.

Propósito

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.

Uso

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.

Instalação

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:

root@kitploit:~
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation

Licença

O Invoke-Obfuscation é lançado sob a licença Apache 2.0.

Notas de Lançamento

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):

  • Adicionada funcionalidade CLI: Ex.: Invoke-Obfuscation -ScriptBlock {Write-Host 'CLI FTW!'} -Command 'Token\All\1,Encoding\1,Launcher\Stdin++\234,Clip' -Quiet -NoExit
  • Adicionada funcionalidade UNDO para remover uma camada de ofuscação de cada vez.
  • Removida ofuscação de Whitespace de Token\All\1 para acelerar a ofuscação de scripts grandes.
  • Adicionada saída da Árvore de Argumentos de Processo para todos os launchers para ajudar os defensores.
  • Adicionada funcionalidade de autodetecção do menu base para evitar a necessidade de usar BACK ou HOME: Ex.: se você executou TOKEN, depois ALL, depois 1, basta digitar LAUNCHER e você chegará ao menu LAUNCHER sem precisar digitar HOME ou BACK para voltar ao menu inicial.
  • Adicionada sintaxe de múltiplos comandos utilizada pelo CLI e modo interativo: Ex.: Token\All\1,String\3,Encoding\5,Launcher\Ps\234,Clip
  • Adicionada capacidade de regex a todos os comandos de menu e ofuscação: Ex.: Token**,String[13],Encoding(1|6),Launcher.*[+]{2}\234,Clip
  • Adicionada funcionalidade de comando único OUT FILEPATH.
  • Adicionada decodificação se a sintaxe powershell -enc for inserida como um valor SCRIPTBLOCK.
  • Adicionado alias ForEach às opções de sintaxe aleatória de ForEach-Object/% em todas as funções ENCODING.
  • Adicionadas opções de sintaxe de substring -Key -Ke -K KEY a Out-SecureStringCommand.ps1.
  • Adicionada aleatoriedade de maiúsculas/minúsculas mais completa a todas as funções de ofuscação \Home\String.
  • Adicionadas flags -ST/-STA (Single-Threaded Apartment) às funções de launcher CLIP+ e CLIP++, pois são necessárias se estiver executando no PowerShell 2.0.
  • Adicionada sintaxe Get-Item/GI/Item em todos os lugares onde Get-ChildItem é usado para obter valores de variáveis.
  • Adicionada sintaxe de instanciação de variável Set-Item à função de ofuscação TYPE.
  • Adicionada sintaxe adicional de Invoke-Expression/IEX usando variáveis automáticas do PowerShell e concatenações de valores de variáveis de ambiente em Out-ObfuscatedStringCommand.ps1, na função Out-EncapsulatedInvokeExpression, e copiada para todos os launchers, funções STRING e ENCODING para adicionar inúmeras sintaxes de linha de comando para IEX.
  • Adicionadas duas novas sintaxes JOIN para String\Reverse e todas as opções de ofuscação ENCODING:
  1. Sintaxe JOIN [String]::Join('',$string)
  2. Sintaxe JOIN com variável OFS (Output Field Separator - variável automática)
  • Adicionadas mais duas sintaxes SecureString a Encoding\5:
  1. PtrToStringAnsi / SecureStringToGlobalAllocAnsi
  2. PtrToStringBSTR / SecureStringToBSTR
  • Adicionadas seis sintaxes alternativas de GetMember para vários membros SecureString:
  1. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[3].Name).Invoke
  2. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[5].Name).Invoke
  3. PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[2].Name).Invoke
  4. PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[4].Name).Invoke
  5. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[0].Name).Invoke
  6. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[1].Name).Invoke
  • Atualizado Out-ObfuscatedTokenCommand.ps1 para que a ofuscação VARIABLE não encapsule variáveis em ${} se já estiverem encapsuladas (para que ${${var}} não ocorra, pois causa erros).
  • Substituído Invoke-Obfuscation.psm1 por Invoke-Obfuscation.psd1 (obrigado @Carlos_Perez).
  • Corrigidos vários bugs de ofuscação a nível TOKEN relatados por @cobbr_io e @IISResetMe.

v1.7 - 2017-03-03 nullcon (Goa, Índia):

  • Adicionados 3 novos LAUNCHERs: RUNDLL, RUNDLL++ e MSHTA++
  • Adicionadas strings de variáveis curinga adicionais de ExecutionContext

v1.8 - 2017-07-27 Black Hat (Las Vegas, Nevada EUA):

  • Adicionadas 2 novas opções ENCODING: Special Characters e Whitespace

v1.8.1 - 2017-12-19:

  • Adicionada função COMPRESS para conversão mais fácil de scripts com várias linhas em um comando de uma linha, reduzindo drasticamente o comprimento do comando para fins de limitação de comprimento da linha de comando do cmd.exe.

v1.8.2 - 2018-01-04:

  • Adicionadas funções de ofuscação AST, que ofuscam manipulando a estrutura da Árvore Sintática Abstrata sem usar muitos caracteres especiais.
Baixar ferramenta