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
Revoke-Obfuscation — Framework de Detecção de Ofuscação do PowerShell | Kitploit
Ferramentas/GitHubGitHub/danielbohannon/revoke-obfuscation
Ferramentas DefensivasAnálise EstáticaAnálise de CódigoAnálise de MalwareInteligência de AmeaçasPapers e PesquisaAprendizado e Educação
GitHubdanielbohannon/revoke-obfuscation

Revoke-Obfuscation

Framework de Detecção de Ofuscação do PowerShell

Ver Repositório
752122há 6 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

Revoke-Obfuscation v1.0

Demonstração do Revoke-Obfuscation

Captura de tela do Revoke-Obfuscation

Introdução

O Revoke-Obfuscation é um framework de detecção de ofuscação PowerShell compatível com PowerShell v3.0+.

Autores

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

Pesquisa

Post no Blog: https://www.fireeye.com/blog/threat-research/2017/07/revoke-obfuscation-powershell.html

White Paper: https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/revoke-obfuscation-report.pdf

Contexto

No outono de 2016 e na primavera de 2017, Daniel Bohannon (@danielhbohannon) lançou Invoke-Obfuscation e Invoke-CradleCrafter, dois frameworks de ofuscação PowerShell de código aberto. O objetivo desta pesquisa e destes frameworks era destacar as limitações de uma abordagem puramente baseada em assinaturas para detectar o uso do PowerShell por atacantes. A mensagem central para os defensores tem sido focar na detecção de Indicadores de Ofuscação além da sintaxe suspeita conhecida.

No entanto, os níveis extremos de randomização no Invoke-Obfuscation e no Invoke-CradleCrafter, combinados com as opções de ofuscação em camada de token que não são desofuscadas no log de blocos de script do PowerShell, levaram os defensores a buscar uma nova forma escalável de detectar genericamente técnicas de ofuscação conhecidas e desconhecidas.

Algumas semanas após o lançamento do Invoke-Obfuscation, Lee Holmes (@Lee_Homes) escreveu um post de blog intitulado More Detecting Obfuscated PowerShell no qual destacou técnicas de análise estatística para detectar características anômalas encontradas em scripts fortemente ofuscados, especialmente aqueles produzidos pelo Invoke-Obfuscation.

Desde essa troca, Daniel e Lee se tornaram bons amigos e compartilharam muitos interesses/obsessões em comum — nomeadamente, o amor por café de qualidade e a busca por criar novas maneiras de detectar completamente PowerShell ofuscado.

O tempo que ambos os Blue Teamers passaram debruçados sobre pesquisa e código de prova de conceito equivaleria a vários milhares de xícaras de café preparado no Chemex, assumindo o tempo de preparo alvo de 4 minutos (presumindo que pelo menos outro entusiasta do café tenha pego esse trocadilho com "pour over").

O Revoke-Obfuscation é o produto final artesanal desses esforços.

Propósito

O Revoke-Obfuscation é um framework de código aberto compatível com PowerShell v3.0+ para detectar comandos e scripts PowerShell ofuscados em escala. Ele depende da AST (Árvore Sintática Abstrata) do PowerShell para extrair rapidamente milhares de características de qualquer script PowerShell de entrada e comparar esse vetor de características com um de vários vetores de características ponderadas pré-definidos, calculados por meio de um processo de aprendizado automatizado conduzido contra um corpus de mais de 408 mil scripts PowerShell. Este corpus completo pode ser baixado de (https://aka.ms/PowerShellCorpus). Você pode encontrar os detalhes por trás dos aspectos de ciência de dados deste trabalho no subdiretório 'DataScience' do repositório.

Como o Revoke-Obfuscation depende de extração e comparação de características em vez de IOCs puros ou correspondência de RegEx, ele é mais robusto em sua capacidade de identificar técnicas de ofuscação desconhecidas, mesmo quando atacantes tentam suavizar sua ofuscação preenchendo-a com conteúdo de script não ofuscado para derrubar verificações básicas como análise de frequência de caracteres.

O Revoke-Obfuscation pode medir facilmente a maioria dos scripts PowerShell de entrada em 100-300 milissegundos. Esse nível de desempenho permite que uma organização meça a ofuscação de (no pior caso) mais de 12 mil scripts PowerShell por hora, sem a necessidade de indexar logs verbosos de blocos de script PowerShell em um SIEM.

Por último, o Revoke-Obfuscation suporta funcionalidade fácil de whitelisting, juntamente com a capacidade de ingerir registros de log de eventos operacionais do PowerShell e remontar blocos de script que são registrados em vários registros de bloco de script EID 4104. Pode facilmente se tornar uma solução completa para ingerir logs de eventos operacionais do PowerShell de um ambiente, remontar e unique todos os scripts nesses logs, e então identificar scripts PowerShell ofuscados que merecem inspeção manual.

Instalação

O código-fonte do Revoke-Obfuscation está hospedado no Github, e você pode baixá-lo, fazer fork e revisá-lo a partir deste repositório (https://github.com/danielbohannon/Revoke-Obfuscation). Por favor, reporte problemas ou solicitações de recursos através do rastreador de bugs do Github associado a este projeto.

Para instalar (do Github):

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

O código-fonte também pode ser instalado diretamente da PowerShell Gallery através dos seguintes comandos:

Para instalar (da PowerShell Gallery):

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

Uso

Revoke-Obfuscation fornecerá um tutorial detalhado, além de algumas outras surpresas divertidas. Mas se você não está interessado nas gracinhas, pode simplesmente executar Get-Help Measure-RvoObfuscation para ver a sintaxe de uso ou apenas continuar lendo.

Existem duas funções principais usadas neste framework:

  • Get-RvoScriptBlock -- remonta scripts de logs de blocos de script EID 4104
  • Measure-RvoObfuscation -- mede o(s) script(s) de entrada e retorna a pontuação de ofuscação

Se você precisa remontar e extrair logs de blocos de script dos logs operacionais do PowerShell, então Get-RvoScriptBlock é a função de sua escolha. Ela retorna automaticamente apenas blocos de script únicos e exclui certos valores padrão de blocos de script considerados não maliciosos. Isso pode ser sobrescrito com a opção -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 também suporta resultados de auditoria MIR/HX, bem como logs operacionais do PowerShell recuperados através do projeto CimSweep de Matt Graeber (@mattifestation) (https://github.com/PowerShellMafia/CimSweep). Para o CimSweep, é necessário um pequeno ajuste no registro para enganar o WMI e consultar um log de eventos não clássico. Detalhes podem ser encontrados na seção NOTES de Get-RvoScriptBlock.

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

Um exemplo completo com dados de teste gravados em demo.evtx pode ser encontrado abaixo:

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

Um exemplo completo com scripts de teste locais e remotos pode ser encontrado abaixo:

  • 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

A opção -OutputToDisk irá automaticamente gerar todos os scripts ofuscados em .\Results\Obfuscated. Independentemente disso, todos os resultados serão retornados como PSCustomObjects contendo o conteúdo do script juntamente com metadados como pontuação de ofuscação, tempo de medição, resultado de whitelisting, todas as características extraídas do script, etc.

Três opções de whitelisting existem em dois locais no Revoke-Obfuscation:

  1. No disco (aplicado automaticamente se presente):
    1. .\Whitelist\Scripts_To_Whitelist\ -- Todos os scripts colocados neste diretório serão hash e quaisquer scripts idênticos serão incluídos na whitelist. Este método de whitelisting é preferível em relação às duas próximas opções.
    2. .\Whitelist\Strings_To_Whitelist.txt -- Um script contendo QUALQUER uma das strings neste arquivo será incluído na whitelist. Sintaxe: Rule_Name,string_to_whitelist
    3. .\Whitelist\Regex_To_Whitelist.txt -- Um script contendo QUALQUER uma das expressões regulares neste arquivo será incluído na whitelist. Sintaxe: Rule_Name,regex_to_whitelist
  2. Argumentos para Measure-RvoObfuscation (aplicados além das opções de whitelisting acima):
    1. -WhitelistFile -- -WhitelistFile .\files\*.ps1,.\more_files\*.ps1,.\one_more_file.ps1
    2. -WhitelistContent -- -WhitelistContent 'string 1 to whitelist','string 2 to whitelist'
    3. -WhitelistRegex -- -WhitelistRegex 'regex 1 to whitelist','regex 2 to whitelist'

Se você tiver interesse em criar seu próprio conjunto de dados de treinamento e gerar um vetor ponderado para a função Measure-Vector, então ModelTrainer.cs/ModelTrainer.exe pode ser executado contra um conjunto de dados rotulado. O comando a seguir extrairá vetores de características de todos os scripts de entrada e os agregará em um único CSV usado nesta fase de treinamento:

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

Por último, se você procura uma plataforma para criar indicadores (IOCs) que aproveitem o poder da AST do PowerShell — o que recomendaríamos fortemente para identificar atividade maliciosa do PowerShell que NÃO é ofuscada — então PS Script Analyzer é um excelente framework projetado para lidar com tais tarefas.

Licença

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

Notas de Lançamento

v1.0 - 2017-07-27 Black Hat USA e 2017-07-30 DEF CON: Lançamento PÚBLICO do Revoke-Obfuscation.

Baixar ferramenta