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
log4shell_sentinel — A Smart Log4Shell/Log4j/CVE-2021-44228 Scanner | Kitploit
Ferramentas/GitHubGitHub/ossie-git/log4shell_sentinel
Vulnerability ScannersContainer SecurityVulnerability AnalysisForensicsIncident ResponseLog Analysis
GitHubossie-git/log4shell_sentinel

log4shell_sentinel

A Smart Log4Shell/Log4j/CVE-2021-44228 Scanner

Ver Repositório
141há 4 anosAinda não revisado

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

Log4Shell Sentinel – Um Scanner Inteligente para CVE-2021-44228

Introdução

Embora existam ferramentas excelentes lançadas para ajudar organizações a escanear seus ambientes em busca de aplicativos vulneráveis à vulnerabilidade crítica Log4J / CVE-2021-44228, senti que:

  • nenhuma das ferramentas que encontrei foi feita para analistas acompanharem um determinado achado durante todo o processo de remediação. Log4Shell Sentinel gera seus resultados em formato CSV, partindo do pressuposto de que um analista irá então manipular e analisar os resultados no Excel, adicionar alguns achados a uma lista de ignorados e reexecutar a varredura, comparar varreduras, adicionar dados aos resultados, etc.
  • os scanners baseados em arquivo deixam muito trabalho para os analistas, especialmente em ambientes conteinerizados

Assim nasceu o Log4Shell Sentinel. O Log4Shell Sentinel é um scanner baseado em arquivo com alguns recursos únicos. Ele não pretende substituir todas as outras ferramentas disponíveis, mas pode complementá-las.

Funcionalidades

O Log4Shell Sentinel é um scanner baseado em arquivo. Ele procura por aplicações baseadas em Java escaneando um sistema alvo em busca de artefatos dos seguintes formatos de arquivo:

Tipo de ArquivoDetalhes
Simple jarÉ o caso onde o arquivo log4j-core não está embutido.
Fat / Uber jarUm uber jar é um jar que contém tanto suas classes/pacote quanto todas as dependências da sua aplicação (bibliotecas, recursos e arquivos de metadados) dentro de um único arquivo jar. Esta é a opção de implantação mais comum.
WARUm arquivo war (Web Application Archive) contém seu código JSP, HTML e JavaScript, além de suas bibliotecas e outros recursos. Este formato é menos comum.
EARUm ear (Enterprise Application Archive) é outro formato mais comumente usado com Jakarta EE para implantações.

e procura por instâncias de jars log4j-core vulneráveis. Em seguida, ele:

  • calcula um hash MD5 do artefato. Isso permite que um analista identifique o mesmo aplicativo executando em máquinas/contêineres diferentes e trate-os como um único achado.

  • para arquivos determinados como pertencentes a um contêiner, como: /var/lib/docker/overlay2/192768f471818601094bf4edd96d14bfc0e2b178a04a2efd00b2231ad4e46b33/merged/app/spring-boot-application.jar, faz o trabalho pesado de mapear o arquivo para a imagem correspondente. Por exemplo, converteria o acima na seguinte imagem: ghcr.io/christophetd/log4shell-vulnerable-app:latest. Como os vários runtimes de contêiner armazenam esse mapeamento de maneiras diferentes, isso pode economizar horas de frustração de um analista. Isso também permite que um analista trate vários contêineres executando um único aplicativo como um único achado.

  • remove correspondências inúteis, como correspondências de contêineres que não estão em execução no momento, incluindo imagens em cache. Isso permite que o analista se concentre no que é importante e novamente economiza horas de trabalho desnecessário.

  • permite que um analista ignore correspondências com base em:

    • hash MD5
    • caminho do arquivo
    • imagem do contêiner

    Isso permite que o analista remova aplicativos que sabe que não são vulneráveis ou que correspondem a aplicativos baseados em CLI que não representam ameaça. Por exemplo, se uma instância do Logstash for detectada, um analista pode optar por ignorá-la se não executar a ferramenta ou executá-la apenas ocasionalmente via CLI.

  • é otimizado para funcionar com suas ferramentas de gerenciamento de configuração, como Ansible, dando a capacidade de escanear rapidamente seu ambiente em minutos.

Enriquecimento de Metadados

Para detalhes sobre o enriquecimento de metadados adicionado pelo Log4Shell Sentinel, consulte meu post no blog.

Instalação

A maneira mais fácil é baixar o binário pré-compilado.

Compilando a partir do código fonte

Novamente, é direto. No entanto, você provavelmente desejará compilar uma versão estaticamente ligada para contornar variações relacionadas ao GLIBC em seu ambiente. A ferramenta usa os seguintes módulos que usam CGO por padrão:

  • os/user
  • net

Para compilar uma versão estaticamente ligada que usa as versões Go dessas bibliotecas, basta clonar o repositório e executar:

root@kitploit:~
$ CGO_ENABLED=0 go build -ldflags="-s -w"
$ ldd log4shell_sentinel
        not a dynamic executable

Uso

root@kitploit:~
$ ./log4shell_sentinel -h
NAME:
   Log4Shell Sentinel - by Osama Elnaggar

USAGE:
   log4shell_sentinel [global options] command [command options] [arguments...]

VERSION:
   v1.0.0

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --path value, -p value       Path to search (default: ".")
   --no-banner, --nb            Suppress banner (default: false)
   --no-messages, --nm          Suppress messages except for CSV output (default: false)
   --no-header, --nh            Suppress header in CSV output (default: false)
   --imd5 value, --im value     Ignore MD5 hashes. Refer to the GitHub page for expected format
   --ipath value, --ip value    Ignore file path matches. Refer to the GitHub page for expected format
   --icimage value, --ic value  Ignore container image matches. Refer to the GitHub page for expected format
   --print-headers, --ph        Print CSV Headers only (default: false)
   --help, -h                   show help (default: false)
   --version, -v                print the version (default: false)

Assim que executado, uma varredura simplesmente escaneará o diretório atual. Por exemplo:

root@kitploit:~
$ ./log4shell_sentinel

░█░░░█▀█░█▀▀░█░█░█▀▀░█░█░█▀▀░█░░░█░░░░░█▀▀░█▀▀░█▀█░▀█▀░▀█▀░█▀█░█▀▀░█░░
░█░░░█░█░█░█░░▀█░▀▀█░█▀█░█▀▀░█░░░█░░░░░▀▀█░█▀▀░█░█░░█░░░█░░█░█░█▀▀░█░░
░▀▀▀░▀▀▀░▀▀▀░░░▀░▀▀▀░▀░▀░▀▀▀░▀▀▀░▀▀▀░░░▀▀▀░▀▀▀░▀░▀░░▀░░▀▀▀░▀░▀░▀▀▀░▀▀▀

- A CVE-2021-44228/CVE-2021-45046/CVE-2021-45105 Scanner
- v1.0.0
- by Osama Elnaggar

[*] WARNING: Running as non-root user.
             Non-readable files / dirs will be skipped
             Container mapping will fail

[*] Starting shallow scan ............ [DONE]
[*] Starting deep scan ............... [DONE]
[*] Calculating MD5 hashes ........... [DONE]
[*] Performing container image lookups [DONE]
[*] Processing ignore list(s) ........ [DONE]
[*] Generating output ................ [DONE]

IP,Hostname,AppName,Team,Ignore (Y/N),Comments,MD5Hash,Timestamp,Container,ContainerImage,FullPath,Version
192.168.121.121,server3,,,,,4e615cd580758b70c49ade1f79103328,2021-12-21T07:38:09Z,true,ghcr.io/christophetd/log4shell-vulnerable-app:latest,/run/containerd/io.containerd.runtime.v2.task/k8s.io/dc2c9c214809f506283c917244cd126a9b056ac7274322d12b59c9196d95dd9b/rootfs/app/spring-boot-application.jar,log4j-core-2.14.1.jar

Você verá imediatamente um AVISO se executá-lo como um usuário não root, pois ele requer permissões root:

  • se você planeja escanear todo o seu sistema de arquivos (recomendado)
  • se você planeja enriquecer com buscas de contêiner -> imagem (acesso ao daemon Docker, arquivos de configuração etc. é necessário)

Ele ainda funcionará sem privilégios root, mas pode não fornecer os melhores resultados.

Entendendo os Achados

Um exemplo de achado se parece com:

root@kitploit:~
IP,Hostname,AppName,Team,Ignore (Y/N),Comments,MD5Hash,Timestamp,Container,ContainerImage,FullPath,Version
192.168.121.121,server3,,,,,4e615cd580758b70c49ade1f79103328,2021-12-21T07:38:09Z,true,ghcr.io/christophetd/log4shell-vulnerable-app:latest,/run/containerd/io.containerd.runtime.v2.task/k8s.io/dc2c9c214809f506283c917244cd126a9b056ac7274322d12b59c9196d95dd9b/rootfs/app/spring-boot-application.jar,log4j-core-2.14.1.jar

Alguns campos são intencionalmente deixados vazios para que o analista os preencha no Excel, etc. Uma breve descrição de cada campo é mostrada abaixo:

Opções

A ferramenta vem com as seguintes opções:

Mapeamento de Contêiner -> Suporte a Imagem

Um dos recursos exclusivos do Log4Shell Sentinel não encontrado em nenhuma outra ferramenta é a capacidade de traduzir jars encontrados em varreduras do sistema de arquivos, como:

/var/lib/docker/overlay2/192768f471818601094bf4edd96d14bfc0e2b178a04a2efd00b2231ad4e46b33/merged/app/spring-boot-application.jar

para a imagem de contêiner correspondente (o exemplo acima traduz para ghcr.io/christophetd/log4shell-vulnerable-app:latest, por exemplo). Como os vários runtimes de contêiner armazenam esse mapeamento de maneiras diferentes, isso pode economizar horas de frustração de um analista. Isso também permite que um analista trate vários contêineres executando um único aplicativo como um único achado. A solução atualmente suporta as seguintes buscas:

  • Docker (com driver de armazenamento overlay2)
  • Docker (com driver de armazenamento aufs)
  • CRI-O
  • containerd

Listas de Ignorados

O número de aplicativos identificados pode ser inicialmente esmagador, ou você pode querer focar em um subconjunto específico de aplicativos identificados, como aqueles expostos a usuários externos primeiro. Ou você pode querer focar em um determinado escopo de conformidade. Para suportar isso, o aplicativo suporta a especificação de uma lista. O Log4Shell atualmente suporta 3 listas de ignorados:

  • Lista de ignorados por hash MD5
  • Lista de ignorados por imagem de contêiner
  • Lista de ignorados por caminho

Em vez de listas simples, ele espera um arquivo CSV como entrada. Isso incentiva o analista a documentar por que está ignorando um determinado achado. À medida que o analista processa os achados e identifica aplicativos não vulneráveis por meio de análise manual ou automatizada de código fonte ou ferramentas DAST, etc.

Lista de Ignorados por Hash MD5

A lista é um arquivo CSV simples no seguinte formato:

root@kitploit:~
MD5Sum,AppName,Reason

As colunas AppName e Reason podem estar vazias, mas estão lá para você acompanhar por que está incluindo ou excluindo aplicativos específicos.

NOTA Como este recurso usa o hash MD5 calculado para o aplicativo, ele só funcionará para aplicativos que são fat / uber jars, EARs ou WARs.

Por exemplo, se tivéssemos o seguinte achado:

root@kitploit:~
IP,Hostname,AppName,Team,Ignore (Y/N),Comments,MD5Hash,Timestamp,Container,ContainerImage,FullPath,Version
192.168.121.121,server3,,,,,4e615cd580758b70c49ade1f79103328,2021-12-21T07:38:09Z,true,ghcr.io/christophetd/log4shell-vulnerable-app:latest,/run/containerd/io.containerd.runtime.v2.task/k8s.io/dc2c9c214809f506283c917244cd126a9b056ac7274322d12b59c9196d95dd9b/rootfs/app/spring-boot-application.jar,log4j-core-2.14.1.jar

e determinássemos que o aplicativo não é vulnerável, poderíamos salvar o seguinte em hashes.csv:

root@kitploit:~
4e615cd580758b70c49ade1f79103328,Demo App,Not vulnerable

e então reexecutar:

root@kitploit:~
# ./log4shell_sentinel --im hashes.csv --path /

o achado acima seria suprimido.

Mapeamentos de Contêiner -> Lista de Ignorados por Imagem

A lista é um arquivo CSV simples no seguinte formato:

root@kitploit:~
Container Image,AppName,Reason

Continuando o exemplo anterior, podemos dizer para ignorar qualquer achado onde a imagem do contêiner seja: ghcr.io/christophetd/log4shell-vulnerable-app:latest criando um arquivo images.csv como este:

root@kitploit:~
ghcr.io/christophetd/log4shell-vulnerable-app:latest,,

e então executar com:

root@kitploit:~
# ./log4shell_sentinel --ic images.csv -p /

Novamente, nosso achado anterior seria suprimido.

Lista de Ignorados por Caminho

Novamente, é um arquivo CSV simples no seguinte formato:

root@kitploit:~
Path,AppName,Reason

Usando o exemplo acima, se criarmos o seguinte arquivo paths.csv:

root@kitploit:~
/run/containerd/io.containerd.runtime.v2.task/k8s.io/dc2c9c214809f506283c917244cd126a9b056ac7274322d12b59c9196d95dd9b/rootfs/app/spring-boot-application.jar,Demo App,Not vulnerable

o achado anterior seria suprimido.

AVISO Quando possível, é melhor usar um hash MD5 ou nome da imagem do contêiner para supressão, pois o caminho pode não ser único.

Varredura em Massa do seu Ambiente

Embora seja perfeitamente aceitável executar o Log4Shell Sentinel em um único servidor, ele realmente se destaca quando combinado com sua ferramenta de gerenciamento de configuração favorita (Ansible, Chef, Puppet, Salt, AWS SSM, etc.) ou até mesmo ferramentas SSH paralelas simples como parellel-ssh.

Isso oferece vários benefícios, incluindo:

  • encontrar instâncias duplicadas de seus aplicativos e contêineres e tratar esses achados como um único achado na fase de análise
  • escanear todo o seu ambiente em minutos

Para um exemplo completo disso em ação, consulte meu post no blog

Fluxo de Trabalho

Consulte a seção Varredura em Massa do seu Ambiente.

FAQ

  • Não estou vendo todos os aplicativos vulneráveis. Por quê?
    • A razão principal provavelmente está relacionada a não executá-lo como usuário root (requer acesso aos locais onde seus aplicativos podem estar instalados) ou não ter especificado o caminho correto. Recomenda-se executá-lo como usuário root e definir --path /.
  • Quais limitações ele possui? Algumas limitações incluem:
    • A ferramenta não pode afirmar definitivamente se um determinado aplicativo é vulnerável ou não. Em vez disso, ela detectará se um aplicativo contém uma versão da biblioteca que é vulnerável.
    • Se o aplicativo detectado não estiver sendo executado em um contêiner, a ferramenta não pode detectar se um aplicativo está em execução ou não. Portanto, até mesmo uma ferramenta de linha de comando que use a versão vulnerável será detectada.
    • A ferramenta requer acesso SSH e, portanto, não detectará problemas em sistemas onde não pode ser executada.
  • O mapeamento contêiner -> imagem não está funcionando. Por quê?
    • A partir da v1.0.0, a ferramenta atualmente suporta mapeamento para:

      • Docker (com driver de armazenamento Overlay2)
      • Docker (com driver de armazenamento aufs)
      • CRI-O
      • containerd

      Se você estiver usando qualquer outra coisa, o mapeamento não funcionará. Se estiver usando um dos acima, pode ser que você não esteja executando a ferramenta como usuário root ou que o socket/arquivos usados estejam em um local não padrão.

  • Quais vulnerabilidades ele detecta?
    • Embora direcionado principalmente a versões do log4j que podem ser suscetíveis a CVE-2021-45105, também sinaliza versões vulneráveis a CVE-2021-45046 e CVE-2021-44228.
  • A ferramenta funciona no Windows?
    • Embora eu não tenha testado, deve funcionar. No entanto, recursos como mapeamento de arquivo de contêiner -> imagem são específicos do Linux.

Autor

Desenvolvido por: Osama Elnaggar

  • Site: https://osamaelnaggar.com
  • Twitter: https://twitter.com/securityfu
  • LinkedIn: https://www.linkedin.com/in/osama-elnaggar-08230957
Baixar ferramenta
CampoExemploDescrição
IP192.168.121.121Se a instância tiver múltiplos IPs, o IP primário é adicionado
Hostnameserver3Nome do host
AppNameIsso é deixado para o usuário completar após a varredura
TeamIsso é deixado para o usuário completar após a varredura
Ignore (Y/N)Isso é deixado para o usuário completar após a varredura
CommentIsso é deixado para o usuário completar após a varredura
MD5Hash4e615cd580758b70c49ade1f79103328Uma impressão digital única do nosso aplicativo
Timestamp2021-12-21T07:38:09ZUm carimbo de data/hora da varredura. Útil se você quiser agregar múltiplas varreduras do mesmo host
ContainertrueVerdadeiro = isto é um contêiner
ContainerImageghcr.io/christophetd/log4shell-vulnerable-app:latestSe um contêiner foi detectado, esta é a imagem correspondente
FullPath/run/containerd/io.containerd.
runtime.v2.task/k8s.io/.../spring-boot-application.jar
O caminho completo do achado. Neste exemplo, o JAR vulnerável faz parte de um fat / uber jar
Versionlog4j-core-2.14.1.jarA versão do log4j-core detectada
OpçãoDetalhes
--path value, -p valueEspecifica quais caminhos pesquisar. Por padrão, pesquisa o diretório atual. IMPORTANTE Recomenda-se definir como / para cobrir todo o sistema de arquivos
--no-banner, --nbSuprime o banner
--no-messages, --nmSuprime mensagens, como mensagens de progresso
--no-header, --nhSuprime o cabeçalho da saída CSV. Recomendado ao executar em vários servidores
--imd5 value, --im valueIgnorar hashes MD5. Mais detalhes na seção Listas de Ignorados
--ipath value, --ip valueIgnorar correspondências de caminho de arquivo. Mais detalhes na seção Listas de Ignorados
--icimage value, --ic valueIgnorar correspondências de imagem de contêiner. Mais detalhes na seção Listas de Ignorados
--print-headers, --phImprimir apenas os cabeçalhos do CSV. Quando você executa o Log4Shell Sentinel em vários servidores e agrega os resultados, normalmente desativaria a saída do cabeçalho. Este comando gera apenas o cabeçalho para que você possa adicioná-lo à sua planilha do Excel
  • Existem dependências externas?
    • Não. O binário é compilado estaticamente.