Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
TLS-Scanner — Scanner automatizado de configuração de servidor e cliente TLS para pentesters e pesquisadores. Avalia suites de cifras, versões de protocolo e diretrizes de segurança com profundidade de varredura personalizável e saída legível por máquina. | Kitploit
Ferramentas/GitHubGitHub/tls-attacker/tls-scanner
Scanners de VulnerabilidadesSegurança de RedeCriptografiaTestes de Penetração
GitHubtls-attacker/tls-scanner

TLS-Scanner

Scanner automatizado de configuração de servidor e cliente TLS para pentesters e pesquisadores. Avalia suites de cifras, versões de protocolo e diretrizes de segurança com profundidade de varredura personalizável e saída legível por máquina.

Ver Repositório
2844131há 1 mêsRevisado 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
# TLS-Scanner

![GitHub release (latest by date)](https://img.shields.io/github/v/release/tls-attacker/TLS-Scanner)
![licence](https://img.shields.io/badge/License-Apachev2-brightgreen.svg)
[![Build Status](https://hydrogen.cloud.nds.rub.de/buildStatus/icon.svg?job=TLS-Scanner)](https://hydrogen.cloud.nds.rub.de/job/TLS-Scanner/)

O TLS-Scanner é uma ferramenta para auxiliar pentesters e pesquisadores de segurança na avaliação de configurações de servidores e clientes TLS.

**Atenção:** *O TLS-Scanner é uma ferramenta de pesquisa destinada a desenvolvedores de TLS, pentesters, administradores e pesquisadores. Não há interface gráfica. Está na primeira versão e pode conter alguns bugs.*

# Compilação

Para compilar e usar o TLS-Scanner, você precisa executar:

```bash
$ cd TLS-Scanner
$ git submodule update --init --recursive
$ mvn clean package

```

Alternativamente, se você estiver com pressa, pode pular os testes usando:

```bash
$ mvn clean package -DskipTests=true
```

Se você quiser usar o TLS-Scanner como uma biblioteca, precisa instalá-lo com o seguinte comando:

```bash
$ mvn clean install
```

# Execução

Para executar o TLS-Scanner, você precisa executar um dos arquivos jar na pasta apps/.
Eles podem ser obtidos compilando o aplicativo você mesmo ou
[baixando os arquivos jar lançados no GitHub](https://github.com/tls-attacker/TLS-Scanner/releases).

```bash
$ java -jar apps/TLS-Server-Scanner.jar -connect localhost:4433
```

O TLS-Scanner avaliará o servidor especificado (aqui `localhost` na porta `4433`) e, no final, imprimirá um relatório.
O relatório usa cores para transmitir a gravidade dos achados:
- Verde: Um bom resultado.
- Amarelo: Um aviso, que pode ser um problema potencial.
- Fundo Amarelo: Resultados em que o scanner não tem certeza se o alvo é vulnerável.
- Vermelho: Um problema grave, que deve ser corrigido.
- Cor padrão (dependendo do seu terminal, provavelmente preto ou branco): Um resultado neutro, que não é nem bom nem ruim. Isso inclui resultados informativos.
- Azul: O scanner não conseguiu escanear o servidor para este teste específico. Isso provavelmente se deve a um pré-requisito para este teste não ser suportado.
- Roxo: O scanner encontrou um erro ao escanear o servidor para este teste específico. Isso pode ser resultado de um bug no scanner, mas também devido ao servidor não suportar um recurso necessário.
- Ciano: Usado para estruturar o relatório (cabeçalhos, ...).

## Parâmetros Importantes

Você deve especificar um host que deseja escanear com o parâmetro -connect.

Se você quiser melhorar o desempenho do scan, pode usar o parâmetro `-threads` para aumentar o número de threads utilizadas.

Outro parâmetro importante por razões de desempenho é o parâmetro `-scanDetail`, que pode ser usado para configurar quão detalhado você deseja escanear. Os valores possíveis, variando de rápido a muito detalhado, são: QUICK, NORMAL, DETAILED, ALL.

O detalhe da saída pode ser configurado com o parâmetro `-reportDetail`. Para ver mais detalhes sobre as Diretrizes, use `-reportDetail ALL`.

Por padrão, os resultados são escritos apenas no console. Se você quiser ter uma saída legível por máquina, pode usar `-outputFile output.json` para gravar automaticamente os resultados em um arquivo JSON.

## Casos de Uso

Os parâmetros mais importantes a alterar são `-scanDetail` e `-reportDetail`. A seguir, explicamos alguns casos de uso para esses parâmetros.

### Scan Padrão

Na maioria dos casos, nossas configurações padrão de parâmetros são suficientes. Isso realiza um scan com ambos os níveis de detalhe definidos como `NORMAL`.

### Scan Rápido

Se você quiser realizar um scan rápido e obter uma visão geral rápida do seu sistema, recomendamos usar ambos os níveis de detalhe definidos como `QUICK`. Isso limita a extensão de algumas sondagens executadas para reduzir o tempo de execução e limita o detalhe do relatório para não incluir informações muito detalhadas e técnicas.

### Scan Detalhado

Se você quiser avaliar totalmente seu sistema e executar tudo o que temos, recomendamos usar ambos os níveis de detalhe definidos como `ALL`. Isso executa todas as sondagens existentes completamente e imprime informações muito detalhadas para análise e avaliação adicionais.

## Perfis de Scan

Em vez de (ou além de) definir parâmetros como `-scanDetail` individualmente, você pode agrupar
quais sondagens executar e quais desses parâmetros usar em um perfil de scan JSON reutilizável com
o parâmetro `-profile <path/to/profile.json>`. Ele está disponível tanto em `TlsServerScanner` quanto em
`TlsClientScanner`.

Um perfil é um arquivo JSON com:

- `inheritedFromProfiles`: caminhos para outros perfis dos quais combinar sondagens, resolvidos relativamente ao
  diretório do arquivo de perfil que os declara (um caminho absoluto é usado como está).
- `probes`: as sondagens a executar, como um mapa do nome totalmente qualificado de uma classe enum `ProbeType`
  para a lista de seus nomes de constantes a executar. Isso agrupa sondagens por tipo em vez de repetir o
  tipo para cada sondagem individual, enquanto um único perfil ainda pode combinar livremente sondagens de
  diferentes implementações de `ProbeType`, por exemplo `TlsProbeType` e `QuicProbeType`. Cada lista por tipo
  também aceita `"*"` (todas as constantes desse tipo) e `"!CONSTANT_NAME"` (remover uma constante
  previamente adicionada por nome ou por `"*"`), processados em ordem — veja `Everything.json` e
  `demo.json` em [`scan-profiles/`](https://github.com/tls-attacker/tls-scanner/blob/main/scan-profiles) para exemplos.
- `settings` (opcional): substituições para parâmetros como `-scanDetail`, `-reportDetail`,
  `-postAnalysisDetail`, `-noColor`, `-outputFile`, `-probeTimeout`, `-parallelProbes` e
  `-threads`. Qualquer campo omitido mantém seu padrão normal (ou o que foi passado na linha de comando).
  **Diferentemente de `probes`, `settings` não são herdados** — apenas as configurações declaradas diretamente no
  perfil para o qual você aponta `-profile` se aplicam, mesmo que ele herde sondagens de outros perfis.

Apenas as sondagens resolvidas a partir do perfil ativo (e tudo o que ele herda) são executadas;
todo o resto é ignorado.

Exemplo, combinando as sondagens de um perfil base com as suas próprias e ajustando o detalhe do scan:

`base.json`:

```json
{
    "probes": {
        "de.rub.nds.tlsscanner.core.constants.TlsProbeType": ["PROTOCOL_VERSION", "CIPHER_SUITE"]
    }
}
```

`quic.json` (no mesmo diretório que `base.json`):

```json
{
    "inheritedFromProfiles": ["base.json"],
    "settings": {
        "scanDetail": "QUICK"
    },
    "probes": {
        "de.rub.nds.tlsscanner.core.constants.QuicProbeType": ["SUPPORTED_VERSIONS"]
    }
}
```

```bash
$ java -jar apps/TLS-Server-Scanner.jar -connect localhost:4433 -profile quic.json
```

Isso executa `PROTOCOL_VERSION`, `CIPHER_SUITE` e `SUPPORTED_VERSIONS` com `-scanDetail QUICK`.

Para ver todas as sondagens disponíveis para um scanner (sem se conectar a um alvo), use `-listProbes`.
Ele as imprime agrupadas por classe `ProbeType` na sintaxe JSON exata que o campo `probes` de um perfil
espera, para que você possa copiar e colar diretamente em um perfil:

```bash
$ java -jar apps/TLS-Server-Scanner.jar -listProbes
{
  "de.rub.nds.tlsscanner.core.constants.TlsProbeType" : [ "ALPN", "ESNI", "CERTIFICATE", ... ],
  "de.rub.nds.tlsscanner.core.constants.QuicProbeType" : [ "SUPPORTED_VERSIONS", ... ]
}
```

## Todos os Parâmetros

Para obter informações detalhadas sobre todos os parâmetros possíveis, use o parâmetro `-help` ou execute o jar sem nenhum parâmetro definido.

# Docker

Fornecemos imagens docker pré-construídas para facilitar o uso do TLS-Server-Scanner.

```bash
$ docker run -it --network host ghcr.io/tls-attacker/tlsscanner -connect localhost:4433
```

A imagem foi feita para ser usada para escaneamento de servidores, mas também contém os outros arquivos jar.
Eles podem ser acessados alterando o entrypoint.

```bash
$ docker run -it --network host --entrypoint java ghcr.io/tls-attacker/tlsscanner -jar TLS-Client-Scanner.jar
```

Também fornecemos um Dockerfile para você construir o contêiner por conta própria:

```bash
$ docker build . -t tlsscanner
$ docker run -t tlsscanner
```

**Atenção:** *Não estou de forma alguma familiarizado com as melhores práticas do Docker. Se você souber como melhorar o Dockerfile,
sinta-se à vontade para enviar um pull request*

# Sistema de Requisitos

As sondagens (TLS) às vezes têm pré-requisitos necessários para executar essa sondagem específica. O sistema de requisitos permite definir conjuntos de tais requisitos que devem ser atendidos para que a sondagem seja executada.

Cada requisito oferece uma função `evaluate` que retorna um valor booleano indicando se o requisito foi cumprido.
Os requisitos podem ser concatenados de várias maneiras usando operações lógicas bem conhecidas. Cada requisito oferece os métodos de instância `and`, `or`, `not` e `xor`
para encadear múltiplos requisitos. As seguintes sondagens estão atualmente implementadas e podem ser usadas prontas para uso:

- `FulfilledRequirement` - Sempre avalia como `true`, útil para indicar nenhum requisito.
- `UnfulfillableRequirement` - Sempre avalia como `false`, impede a execução de sondagens.
- `ProbeRequirement` - Avalia como `true` se a(s) sondagem(ns) especificada(s) foi(ram) executada(s).
- `PropertyRequirement` - Avalia como `true` se as propriedades analisadas especificadas tiverem um valor predefinido. O valor pode ser fornecido como parâmetro do construtor ou pode-se usar `PropertyTrueRequirement` e `PropertyFalseRequirement` como atalho para `TestResults.TRUE` e `TestResults.FALSE`.
- `PropertyComparatorRequirement` - Avalia como `true` se o resultado da coleção de uma propriedade analisada for menor, igual ou maior que um valor constante.
- `ProtocolRequirement` - Avalia como `true` se certas versões de protocolo forem suportadas.
- `ExtensionRequirement` - Avalia como `true` se certas extensões forem suportadas pelo par remoto.
- `OptionsRequirement` - Avalia como `true` se flags adicionais de cli estiverem definidas. Atualmente usado em algumas sondagens de cliente (ALPN, SNI, retomada de sessão).
- `WorkingConfigRequirement` - Avalia como `true` se uma configuração funcional foi encontrada.

Além desses requisitos predefinidos, também é possível estender a classe `Requirement` anonimamente dentro do método `getRequirements`. Se nada for necessário, você pode retornar um `FulfilledRequirement` que sempre avalia como true.

Exemplos de como usar requisitos podem ser encontrados nos pacotes `probe` do `tls-client-scanner` e `tls-server-scanner`.

```java
@Override
public Requirement<ClientReport> getRequirements() {
    return new ProbeRequirement<ClientReport>(TlsProbeType.CIPHER_SUITE)
            .and(new PropertyTrueRequirement<>(TlsAnalyzedProperty.SUPPORTS_DHE));
}
```
Baixar ferramenta