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
mitmengine — Uma ferramenta de detecção MITM (monstro-no-meio). Usada para construir o MALCOLM: | Kitploit
Ferramentas/GitHubGitHub/cloudflare/mitmengine
Ferramentas DefensivasSegurança de RedeInteligência de AmeaçasResposta a IncidentesArchived
GitHubcloudflare/mitmengine

mitmengine

Uma ferramenta de detecção MITM (monstro-no-meio). Usada para construir o MALCOLM:

Ver Repositório
81368há 2 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
Site

MITMEngine

Build Status

AVISO DE OBSOLESCÊNCIA: Este software não é mais mantido.

O objetivo deste projeto é permitir a detecção precisa de interceptação HTTPS e uma impressão digital TLS robusta. Este projeto é baseado em O Impacto de Segurança da Interceptação HTTPS, e começou como uma porta para Go dos seus scripts de processamento e impressões digitais.

Mais contexto sobre o MITMEngine está disponível neste post do blog da Cloudflare. Links rápidos:

  • Assinaturas e Impressões Digitais: Definições Principais
  • Metodologia de Detecção de MITM
  • API
  • Exemplo de Uso
  • Compilação e Testes
  • Como Contribuir
  • Utilitário mergeDB

Requisitos

  • Go
  • Wireshark 3.0.0 (wireshark -v para verificar)

Documentação

A documentação detalhada está com o código (copie o pacote para $(GOPATH)/src/github.com/cloudflare/mitmengine primeiro).

root@kitploit:~
godoc -http=:6060

http://localhost:6060/pkg/github.com/cloudflare/mitmengine

Assinaturas e Impressões Digitais

Neste projeto, as impressões digitais mapeiam para instâncias concretas de um objeto, enquanto as assinaturas podem representar múltiplos objetos. Usamos essa convenção porque uma impressão digital é geralmente uma propriedade inerente de um objeto, enquanto uma assinatura pode ser escolhida. Da mesma forma, uma requisição real de cliente vista por um servidor teria uma impressão digital, enquanto o software que gera a requisição pode escolher sua própria assinatura (por exemplo, escolhendo quais cipher suites suporta).

Requisição do Cliente

Uma impressão digital de requisição do cliente é derivada de uma requisição do cliente a um servidor e contém características de TLS e HTTP. Uma assinatura de requisição do cliente representa todas as impressões digitais possíveis que um software pode gerar. O objetivo é tornar cada assinatura específica o suficiente para identificar exclusivamente um software.

User Agent

Uma assinatura de User Agent representa um conjunto de User Agents gerados por um navegador. Uma assinatura de User Agent para um navegador permite uma faixa de versões do navegador e permite especificar o nome do SO, plataforma do SO, faixa de versão do SO e tipo de dispositivo para criar assinaturas mais detalhadas.

Navegador

Uma assinatura de navegador contém tanto uma assinatura de User Agent quanto uma assinatura de requisição do cliente. Isso permite que uma assinatura represente todas as impressões digitais possíveis geradas pelo Chrome 31-38 no Windows 10, por exemplo.

MITM

Uma assinatura MITM contém uma assinatura de requisição do cliente junto com detalhes adicionais sobre o software MITM, incluindo um grau de segurança que pode ser afetado por fatores externos à requisição do cliente, como se o software valida certificados.

Metodologia de Detecção de MITM

Consideramos que uma conexão HTTPS está interceptada quando há uma incompatibilidade entre a assinatura de requisição do cliente esperada correspondente ao navegador identificado pelo User Agent, e a impressão digital real da requisição do cliente.

Falsos positivos

Se uma assinatura for imprecisa ou desatualizada para um determinado software cliente, é possível que a assinatura sinalize falsamente uma conexão como interceptada.

Falsos negativos

Se um proxy imitar de perto a requisição do cliente, pode ser que não detectemos uma incompatibilidade. Se as assinaturas do navegador forem excessivamente amplas, também falharemos em detectar a interceptação.

Impressões digitais de produção

As impressões digitais de referência de navegador e software MITM usadas no MALCOLM podem ser encontradas em reference_fingerprints/mitmengine/. Este conjunto de impressões digitais é uma combinação do que é extraído dos pcaps TLS Client Hello em reference_fingerprints/pcaps/, bem como dos 500 principais pares de User Agent + TLS Client Hello observados na rede da Cloudflare e rotulados com alta confiabilidade (ou seja, tráfego correspondente a atividade humana e de bots amigáveis).

Idealmente, não dependemos de impressões digitais de referência amostradas da rede da Cloudflare; em vez disso, teríamos um conjunto abrangente de pcaps para construir nosso conjunto de referência de TLS Client Hellos. Interessado em nos ajudar a expandir nosso conjunto de dados? Veja como você pode contribuir!

API

Primeiro, o usuário deve criar uma estrutura mitmengine.Config para passar para mitmengine.NewProcessor. Uma estrutura mitmengine.Config pode especificar nomes de arquivos contendo impressões digitais de navegador, impressões digitais MITM e cabeçalhos MITM. Alternativamente, pode especificar um arquivo de configuração para ler os arquivos mencionados de qualquer outra fonte; atualmente, o MITMEngine suporta a leitura desses arquivos de bancos de dados compatíveis com o cliente Amazon S3 (incluindo Amazon S3 e Ceph). Leitores de arquivos adicionais para bancos de dados (que chamamos de "loaders") podem ser definidos no pacote loaders, e desde que novos loaders implementem a interface Loader, eles devem funcionar com o restante do MITMEngine imediatamente.

O ponto de entrada pretendido para o pacote MITMEngine é através da função Processor.Check, que recebe um User Agent e uma impressão digital de requisição do cliente, e retorna um relatório de detecção MITM. Funções adicionais da API serão adicionadas no futuro para permitir, por exemplo, adicionar novas assinaturas a um processo em execução.

Exemplo de Uso

Um exemplo de uso da API está abaixo. Uma aplicação mais completa está disponível em cmd/demo/main.go, e pode ser compilada executando make bin/demo.

root@kitploit:~
rawUa := "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"
requestFingerprintString := "303:dada,1301,1302,1303,c02b,c02f,c02c,c030,cca9,cca8,c013,c014,9c,9d,2f,35,a:aaaa,0,17,ff01,a,b,23,10,5,d,12,33,2d,2b,1b,dada,15:9a9a,1d,17,18:0::"
uaFingerprintString := "1:72.0.3626:2:3:10.14.3:1:"
requestFingerprint, _ := fp.NewRequestFingerprint(requestFingerprintString)
uaFingerprint, _ := fp.NewUAFingerprint(uaFingerprintString)
report := mitmProcessor.Check(uaFingerprint, rawUa, requestFingerprint)

O requestFingerprintString do TLS tem o seguinte formato:

root@kitploit:~
<tls_version>:<cipher_suites>:<extension_names>:<curves>:<ec_point_fmts>:<http_headers>:<quirks>

O uaFingerprint tem o seguinte formato:

root@kitploit:~
# <browser_name>:<browser_version>:<os_platform>:<os_name>:<os_version>:<device_type>:<quirks>

Um exemplo de como analisar User Agents no formato para o uaFingerprint está no arquivo cmd/demo/main.go.

Compilação e Testes

Para usar o MITMEngine, lembre-se de obter suas dependências. Você provavelmente vai querer executar a lógica de vendoring ou gomod antes de executar os testes no MITMEngine.

Para testar, execute make test e para ver a cobertura de código, execute make cover.

Como Contribuir

Como as impressões digitais de navegadores e MITM rapidamente se tornam desatualizadas, estamos buscando ativamente atualizar o repositório de impressões digitais com novas amostras.

Ao contribuir com uma amostra de impressão digital (a "Amostra"), você (em seu próprio nome ou em nome da organização que você representa ou é patrocinado (se houver)) concede à Cloudflare, Inc. e suas subsidiárias e afiliadas uma licença perpétua, irrevogável, não exclusiva, livre de royalties e mundial sob todos os direitos de propriedade intelectual na Amostra, para: (1) copiar, publicar, exibir e distribuir a Amostra; e (2) preparar trabalhos derivados baseados na Amostra ou que façam parte dela."

Para contribuir com amostras de impressões digitais, siga estas etapas:

Gerar uma amostra de impressão digital

(testado no macOS Mojave 10.14.3)

Crie um par de certificado RSA e chave do servidor:

root@kitploit:~
openssl req -new -x509 -sha256 -out server.crt -nodes -keyout server.pem -subj /CN=localhost

Inicie o servidor na porta 4433:

root@kitploit:~
openssl s_server -www -cipher AES256-SHA -key server.pem -cert server.crt

Inicie a captura TShark para descriptografar cabeçalhos HTTP (TShark >= 3.0.0):

root@kitploit:~
tshark -i loopback -o tls.keys_list:"127.0.0.1,4433,http,server.pem" -Tjson -e http.request.line -Y http > header.json

Inicie a captura TShark do TLS Client Hello:

root@kitploit:~
tshark -i loopback -f "tcp port 4433" -w handshake.pcap

Acesse https://localhost:4433 a partir do cliente TLS que você deseja identificar. Por exemplo,

root@kitploit:~
echo -e "GET /test HTTP/1.1\r\nHost:example.com\r\n\r\n" | openssl s_client -connect localhost:4433

Enviar um pull request

  • Gere uma amostra de impressão digital (header.json, handshake.pcap) conforme descrito acima e coloque no diretório reference_fingerprints/pcaps/<desc>, onde <desc> é um nome único e descritivo.

  • Adicione uma linha a reference_fingerprints/fingerprint_metadata.jsonl com os campos abaixo. As opções reconhecidas para os campos os, device, platform e browser são aquelas definidas no pacote uasurfer. As opções reconhecidas para mitm_fingerprint.type estão listadas abaixo. Consulte reference_fingerprints/fingerprint_metadata.jsonl para exemplos; campos desconhecidos podem ser deixados em branco ou omitidos.

    { "desc": "<nome único e descritivo para a amostra>", "comment": "<informações adicionais sobre a amostra>", "handshake_pcap": "", "header_json": "<(opcional) caminho para o arquivo contendo a requisição HTTP do cliente", "ua_fingerprint": {"raw_ua": "", "os": "<WindowsPhone|Windows|MacOSX|iOS|Android|...>", "os_version": "..", "device": "<Windows|Mac|Linux|...>", "platform": "<Computer|Tablet|Phone|...>", "browser": "<Chrome|IE|Safari|Firefox|...>", "browser_version": ".."}, "mitm_fingerprint": { "name": "<descrição do mitm>", "type": "<Antivirus|FakeBrowser|Malware|Parental|Proxy>" }}

Outros PRs e solicitações de recursos são bem-vindos!

Utilitário mergeDB

mergeDB (em cmd/mergedb) é um utilitário para mesclar impressões digitais TLS ClientHello semelhantes em várias versões próximas de navegadores ou software MITM. Use mergeDB para consolidar grandes listas de impressões digitais de User Agent / Client Hello:

root@kitploit:~
go run cmd/mergedb/main.go

Por padrão, o mergeDB será executado nas impressões digitais do diretório reference_fingerprints/mitmengine.

Baixar ferramenta
  • Envie um pull request com as alterações acima.