
ShellSweeping o mal.
Varrendo o mal com ShellSweep
"ShellSweep" é uma ferramenta PowerShell/Python/Lua projetada para detectar possíveis arquivos web shell em um diretório especificado.
O ShellSweep e seu conjunto de ferramentas calculam a entropia do conteúdo dos arquivos para estimar a probabilidade de um arquivo ser um web shell. Alta entropia indica mais aleatoriedade, característica de códigos criptografados ou ofuscados frequentemente encontrados em web shells.
Entropia, no contexto da teoria da informação ou ciência de dados, é uma medida da imprevisibilidade, aleatoriedade ou desordem em um conjunto de dados. O conceito foi introduzido por Claude Shannon em seu artigo de 1948 "A Mathematical Theory of Communication".
Quando aplicada a um arquivo ou uma string de texto, a entropia pode ajudar a avaliar a aleatoriedade dos dados. Veja como funciona: Se um arquivo consiste em dados completamente aleatórios (cada byte tem a mesma probabilidade de ser qualquer valor entre 0 e 255), a entropia é alta, próxima de 8 (já que log2(256) = 8).
Se um arquivo consiste em dados altamente estruturados (por exemplo, um arquivo de texto onde a maioria dos bytes são caracteres ASCII), a entropia é menor. No contexto de encontrar web shells ou arquivos maliciosos, a entropia pode ser um indicador útil:
O ShellSweep inclui uma função Get-Entropy que calcula a entropia do conteúdo de um arquivo:
O ShellSweepX leva a funcionalidade principal do ShellSweep para o próximo nível, oferecendo várias vantagens sobre soluções tradicionais de EDR (Endpoint Detection and Response):
Foco Especializado: Ao contrário das soluções EDR que lançam uma rede ampla, o ShellSweepX é especificamente projetado para detectar web shells. Esse foco especializado permite uma detecção mais precisa e eficiente dessas ameaças específicas.
Baixo Consumo de Recursos: O ShellSweepX é leve e não requer processos constantes em segundo plano ou monitoramento do sistema, ao contrário de muitas soluções EDR. Isso significa menos impacto no desempenho do sistema.
Personalizável e Transparente: A natureza open-source do ShellSweepX permite total transparência em seus métodos de detecção. Você pode facilmente personalizar e ajustar os parâmetros de detecção para se adequar ao seu ambiente específico.
Sem Dependência de Serviços Externos: O ShellSweepX opera localmente, sem depender de análise em nuvem ou atualizações constantes, garantindo que seus dados sensíveis permaneçam sob seu controle.
Detecção Multicamadas: O ShellSweepX emprega vários métodos de detecção, incluindo análise de entropia, correspondência de padrões e análise heurística, fornecendo uma abordagem abrangente para detecção de web shells.
Relatórios Detalhados: O ShellSweepX fornece informações aprofundadas sobre ameaças potenciais, incluindo valores de entropia, métodos de detecção e pontuações de confiança, permitindo uma tomada de decisão mais informada.
Compatibilidade Entre Plataformas: Com versões disponíveis em PowerShell, Python e Lua, o ShellSweepX pode ser implantado em diversos ambientes.
Embora o ShellSweepX não substitua uma solução EDR completa, ele serve como uma ferramenta especializada e poderosa em seu arsenal de segurança, particularmente para ambientes onde web shells representam uma ameaça significativa.
O ShellScan oferece a capacidade de escanear múltiplos diretórios conhecidos de web shells ruins e gerar os valores médio, mediano, mínimo e máximo de entropia por extensão de arquivo.
Passe alguns diretórios de web shells para o ShellScan.ps1, de qualquer tamanho. Usei:
Isso fornecerá um conjunto de treinamento decente para obter valores de entropia.
Exemplo de saída:
Statistics for .aspx files:
Average entropy: 4.94212121048115
Minimum entropy: 1.29348709979974
Maximum entropy: 6.09830238020383
Median entropy: 4.85437969842084
Statistics for .asp files:
Average entropy: 5.51268104400858
Minimum entropy: 0.732406213077191
Maximum entropy: 7.69241278153711
Median entropy: 5.57351177724806
Primeiro, vamos detalhar o uso do ShellCSV e como ele ajuda a identificar a entropia dos arquivos bons no disco. A ideia é que defensores possam executá-lo em servidores web para coletar todos os arquivos e valores de entropia, entendendo melhor quais caminhos e extensões são mais proeminentes em seu ambiente de trabalho.
Veja ShellCSV.csv como exemplo de saída.
Blog: Fantasma na Web Shell: Apresentando ShellSweep
Primeiro, escolha seu sabor: Python, PowerShell ou Lua.
Se você chegou até aqui, esta é a parte onde você itera no ajuste fino. Encontrou um novo shell? Reúna a entropia e modifique conforme necessário.
Blog: Apresentando ShellSweepPlus: Ferramenta Open-Source de Detecção de Web Shells
O ShellSweepPlus é um script PowerShell avançado projetado para detectar e analisar possíveis web shells em ambientes web. Ele se baseia na funcionalidade principal do ShellSweep, oferecendo recursos e capacidades de detecção aprimorados.
Principais Recursos:
Uso:
$DirectoryPaths.$suspiciousPatterns conforme necessário para seu ambiente.$excludePaths para pular diretórios específicos.$ignoreHashes ou $ignoreHashesFilePath para excluir arquivos seguros conhecidos.Exemplo de saída:
json
{
"TotalFilesScanned": 1000,
"Potential web shells": 5,
"ScanDuration": "00:05:30"
}
O ShellSweepPlus fornece uma solução poderosa e flexível para detecção de web shells, combinando múltiplas técnicas de análise para melhorar a precisão e capturar até ameaças sofisticadas.
Sinta-se à vontade para abrir uma issue no Git ou consultar a Wiki.
Se você gostou deste projeto, não se esqueça de marcar com estrela e compartilhar com sua família e amigos.
| Recurso/Aspecto | ShellSweep | ShellSweepPlus | ShellSweepX |
|---|
| Detecção de Linha de Base | Usa valores de entropia fixos para extensões de arquivo específicas | Detecção dinâmica de linha de base que calcula a entropia em tempo real | Usa uma combinação de detecção baseada em entropia e previsão por aprendizado de máquina |
| Extensões de Arquivo | Processa arquivos com extensões: .asp, .aspx, .asax, .jspx, .html, .ashx | Processa arquivos com extensões: .asp, .ashx, .asax, .jspx, .html, .aspx | Extensões de arquivo configuráveis via API |
| Cálculo de Entropia | Calcula a entropia do conteúdo dos arquivos para detectar possíveis web shells | Detecção aprimorada baseada em entropia, referenciando palavras-chave suspeitas | Cálculo avançado de entropia com análise baseada em chunks |
| Recurso de Exclusão | Pode excluir determinados diretórios da varredura | Pode excluir determinados diretórios da varredura | Exclusões configuráveis via API |
| Ignorar Hash | Ignora arquivos com hashes específicos | Ignora arquivos com hashes específicos | Ignorar hash configurável via API |
| Saída | Se possíveis web shells forem encontrados, exibe nome do arquivo, valor da entropia e hash. Caso contrário, exibe "Nenhum mal identificado hoje." | Se possíveis web shells forem encontrados, exibe nome do arquivo, valor da entropia, hash, data da última modificação, método de detecção e pontuação de confiança em formato JSON. Caso contrário, exibe "Nenhum web shell potencial detectado." | Saída JSON detalhada incluindo metadados do arquivo, entropia, resultados de previsão e correspondências YARA |
| Entropia e Desvio Padrão | Usa valores de entropia | Calcula a média e o desvio padrão dos valores de entropia para cada extensão de arquivo | Calcula tanto entropia quanto desvio padrão para análise avançada |
| Detecção em Modo Misto | Não presente | Usa uma combinação de detecção baseada em entropia, detecção baseada em desvio padrão e detecção em modo misto (utilizando desvio padrão com limites fixos) | Combina detecção baseada em entropia, previsão por aprendizado de máquina e correspondência de regras YARA |
| Análise Estática de Código | Não presente | Mecanismo de detecção baseado em padrões que analisa o código estaticamente para identificar e sinalizar padrões maliciosos conhecidos | Utiliza regras YARA para detecção baseada em padrões |
| Análise Heurística | Não presente | Introduz a função Perform-HeuristicAnalysis para detectar anomalias com base em regras heurísticas, aprimorando a detecção de web shells de dia zero | Implementa previsão baseada em aprendizado de máquina para análise heurística |
| Apresentação Detalhada de Resultados | Não presente | Apresenta ameaças potenciais em formato JSON estruturado, incluindo caminho do arquivo, entropia, desvio padrão, hash, data da última modificação, método de detecção e pontuação de confiança | Fornece resultados abrangentes incluindo todos os métodos de análise em formato JSON estruturado |
| Log Abrangente | Não presente | Incorpora comandos Write-Verbose ao longo do script para log detalhado e transparência operacional | Implementa log detalhado nos componentes agente e servidor |
| Pontuação de Confiança | Não presente | Calcula uma pontuação de confiança com base no método de detecção e ajusta com base na presença de padrões suspeitos | Usa a confiança da previsão por aprendizado de máquina e combina com outros métodos de detecção para uma pontuação abrangente |
| Design Modular | Não presente | Utiliza funções separadas para diferentes tarefas (ex: Process-File, Create-ResultObject, Adjust-ConfidenceScore), promovendo reutilização de código e facilidade de manutenção | Design altamente modular com componentes separados para agente, servidor e funções de análise |
| Suporte Multi-plataforma | Apenas PowerShell | Apenas PowerShell | Suporta implementações em PowerShell, Python e Bash |
| Integração com API | Não presente | Não presente | API abrangente para configuração, submissão de resultados e gerenciamento |
| Análise com IA | Não presente | Não presente | Incorpora capacidades de triagem e análise baseadas em IA |
| Gerenciamento de Regras YARA | Não presente | Não presente | Permite adicionar, atualizar e excluir regras YARA via API |
| Interface Web | Não presente | Não presente | Fornece uma interface web para visualização e análise de resultados |