Invoke-DOSfuscation Gerador De Ofuscação De Comando Cmd.Exe E Arnês De Teste De Detecção

Invoke-DOSfuscation é uma estrutura de ofuscação de comando cmd.exe compatível com PowerShell v2.0 +.

Objetivo

Os atacantes estão cada vez mais usando técnicas de ofuscação para evitar detecções baseadas fortemente nos valores dos argumentos da linha de comando. Para combater isso, passei cinco meses pesquisando e desenvolvendo técnicas de ofuscação e codificação nativas do cmd.exe, para que eu pudesse criar detecções robustas para essas técnicas básicas que ainda não vi na natureza.

O único objetivo dessa estrutura é permitir que os defensores gerem aleatoriamente milhares de comandos de amostra exclusivamente ocultos para testar e ajustar seus recursos de detecção contra essas técnicas. Incluí meu equipamento de teste completo nesta versão para automatizar esse processo de teste de detecção.

De várias maneiras, essa estrutura permite que os defensores confundam as técnicas de ofuscação do cmd.exe e, ao criar essa ferramenta, descobri inúmeras oportunidades adicionais de ofuscação que não descobri em minha pesquisa inicial.

Também compartilhei essas informações com a Microsoft em novembro de 2017 e perguntei sobre oportunidades de expor visibilidade adicional ao funcionamento interno do uso das técnicas principais do cmd.exe, que são os blocos de construção de todas as funções de ofuscação criadas nesta estrutura.

Como defensor, o objetivo final desta pesquisa e desenvolvimento é aumentar a conscientização e promover mudanças que ajudarão os usuários finais a se protegerem melhor dos TTPs (ferramentas, técnicas e procedimentos) em constante mudança dos invasores.

Uso

Embora todos os componentes da ofuscação sejam construídos em funções formais independentes, a maioria dos usuários achará a  Invoke-DOSfuscation função a maneira mais fácil de explorar e visualizar as técnicas de ofuscação suportadas por essa estrutura. No entanto, para explorar e aprofundar as inúmeras opções de ajuste para cada categoria de ofuscação, é recomendável que as funções individuais sejam usadas diretamente fora do  Invoke-DOSfuscation wrapper de funções.

Para permitir que os defensores comecem facilmente a difundir e testar as idéias de detecção, essa estrutura também inclui um módulo adicional,  Invoke-DOSfuscationTestHarness.psm1 que é importado automaticamente com o restante do projeto. As duas funções principais neste módulo para defensores são:

  1. Invoke-DosTestHarness – Gera (com configurações de argumento padrão) mais de 1000 comandos ocultados aleatoriamente a partir de uma lista de comandos de teste para fins de integridade da carga útil e detecção. Cada iteração de equipamento de teste randomiza todos os argumentos de função disponíveis e chama as quatro funções de ofuscação diretamente em vez de usar os -ObfuscationLevel valores mais padronizados  (1-3) que a função acionada pelo menu Invoke-DOSfuscation usa por padrão. Isso produz uma faixa significativamente maior de saída de ofuscação contra a qual se pode construir detecções mais completas. Cada comando ofuscado é então verificado na segunda função:
  2. Get-DosDetectionMatch – Verifica um comando de entrada (string) em relação a todos os valores de detecção de regex inseridos na  $regexDetectionTerms matriz na função. Isso é chamado automaticamente,  Invoke-DosTestHarness mas também pode ser chamado de maneira independente.

No final de cada teste, as estatísticas de invocação para execução e detecção de comandos serão exibidas para que os defensores possam identificar rapidamente quais comandos têm 0 ou apenas 1-2 correspondências de detecção e quais podem precisar de uma cobertura melhor.

Por fim, para evitar que os defensores precisem executar o chicote de teste para começar, forneci 1000 comandos de amostra no   diretório Samples , dividido em cada uma das quatro funções de ofuscação. Os formatos incluem arquivos .txt e arquivos Security e Sysmon .evtx. Incluí algumas regras de detecção de amostra na  $regexDetectionTerms matriz em Invoke-DOSfuscationTestHarness.psm1, mas você desejará adicionar e testar muitas outras regras ao testar os comandos ofuscados de amostra). Além dos arquivos .txt com os comandos brutos, existem arquivos .evtx que contêm os logs de execução do processo (eventos Sysmon EID 1) para cada um dos 1000 comandos de amostra. Esses logs de eventos são tremendamente úteis para criar indicadores baseados em execuções de processos filho diferenciadas que são subprodutos de várias técnicas de blocos de construção nas quais o Invoke-DOSfuscation é criado.

Para começar, exiba exemplos de comandos ofuscados que  não  correspondem a nenhuma das suas regras de detecção atuais simplesmente executando:

(Get-Content .\Samples\STATIC_1-of-4_Out-DosConcatenatedCommand.txt) | where-object { -not (Get-DosDetectionMatch -Command $_).Detected }

Para testar comandos ocultos e processos filhos dos logs de eventos de execução registrados no Security EID 4688, basta executar:

(Get-WinEvent -Path .\Samples\DYNAMIC_SECURITY_EID4688_1-of-4_Out-DosConcatenatedCommand.evtx) | where-object { $_.Message } | foreach-object { ($_.Message.Split("`n") | select-string '^\tProcess Command Line:\t') -replace '^\tProcess Command Line:\t','' } | where-object { -not (Get-DosDetectionMatch -Command $_).Detected }

Instalação

git clone https://github.com/danielbohannon/Invoke-DOSfuscation.git
cd Invoke-DOSfuscation/
Import-Module .\Invoke-DOSfuscation.psd1
Invoke-DOSfuscation

Screenshots

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Crie um website ou blog gratuito no WordPress.com.

Acima ↑

Crie um site como este com o WordPress.com
Comece agora