
ja4 v1.0.1
JA4+ é um conjunto de padrões de fingerprinting de rede
Fingerprinting de Rede JA4+™
JA4+ é um conjunto de métodos de fingerprinting de rede da FoxIO que são fáceis de usar e fáceis de compartilhar. Esses métodos são legíveis tanto por humanos quanto por máquinas para facilitar uma caça a ameaças e uma análise mais eficazes. Os casos de uso dessas fingerprints incluem varredura de atores de ameaças, detecção de malware, prevenção de sequestro de sessão, automação de conformidade, rastreamento de localização, detecção de DDoS, agrupamento de atores de ameaças, detecção de reverse shell e muitos outros.
Para uma explicação rápida sobre JA4+ e para usar como referência durante a análise, veja:
JA4+ Cheat Sheet
Para detalhes aprofundados, leia nossos blogs sobre como o JA4+ funciona, por que funciona e exemplos do que pode ser detectado/prevenido com ele:
JA4+ Network Fingerprinting (JA4/S/H/L/X/SSH)
JA4T: TCP Fingerprinting (JA4T/TS/TScan)
Investigating Surfshark and NordVPN with JA4T (JA4T)
JA4D and JA4D6: DHCP Fingerprinting (JA4D/6)
Se você adora JA4+, considere comprar uma camiseta ou moletom:
JA4+ Shirts, Hoodies, and Stickers
Sumário
- Métodos atuais e detalhes de implementação
- Implementações
- Ferramentas que suportam JA4+
- Exemplos
- Plugins
- Binários
- Banco de dados
- Processo de Release
- Detalhes do JA4+
- Licenciamento
- P&R
- JA4+ foi criado por
Métodos atuais e detalhes de implementação
| Nome completo | Nome curto | Descrição |
|---|---|---|
| JA4 | JA4 | Fingerprinting de Cliente TLS |
| JA4Server | JA4S | Fingerprinting de Resposta do Servidor TLS / Sessão |
| JA4HTTP | JA4H | Fingerprinting de Cliente HTTP |
| JA4Latency | JA4L | Medição de Latência Cliente para Servidor / Distância da Luz |
| JA4LatencyServer | JA4LS | Medição de Latência Servidor para Cliente / Distância da Luz |
| JA4X509 | JA4X | Fingerprinting de Certificado TLS X509 |
| JA4SSH | JA4SSH | Fingerprinting de Tráfego SSH |
| JA4TCP | JA4T | Fingerprinting de Cliente TCP |
| JA4TCPServer | JA4TS | Fingerprinting de Resposta do Servidor TCP |
| JA4TCPScan | JA4TScan | Scanner Ativo de Fingerprint TCP |
| JA4DHCP | JA4D | Fingerprinting DHCP |
| JA4DHCPv6 | JA4D6 | Fingerprinting DHCPv6 |
| JA4NTP | JA4N | Fingerprinting NTP |
| JA4Scan-TLS | JA4Scan-TLS | Scanner Ativo de Fingerprint de Servidor TLS |
| JA4Scan-QUIC | JA4Scan-QUIC | Scanner Ativo de Fingerprint de Servidor QUIC |
O nome completo ou o nome curto podem ser usados de forma intercambiável. Métodos adicionais de JA4+ estão em desenvolvimento...
Para entender como ler fingerprints JA4+, veja Detalhes Técnicos
Implementações
Este repositório inclui JA4+ em
Ferramentas que suportam JA4+
com mais a serem anunciados...
Exemplos
| Aplicação | Fingerprints JA4+ |
|---|---|
| Chrome | JA4=t13d1517h2_8daaf6152771_cb7bf5808d99 (TCP) JA4=q13d0312h3_55b375c5d22e_178839b6cec1 (QUIC) |
| Dropper de Malware IcedID | JA4H=ge11cn020000_9ed1ff1f7b03_cd8dafe26982 |
| Malware IcedID | JA4=t13d201100_2b729b4bf6f3_9e7b989ebec8 JA4S=t120300_c030_5e2616a54c73 |
| Malware Sliver | JA4=t13d190900_9dc949149365_97f8aa674fd9 JA4S=t130200_1301_a56c5b993250 JA4X=000000000000_4f24da86fad6_bf0f0589fc03 JA4X=000000000000_7c32fa18c13e_bf0f0589fc03 |
| Cobalt Strike | JA4H=ge11cn060000_4e59edc1297a_4da5efaf0cbd JA4X=2166164053c1_2166164053c1_30d204a01551 |
| SoftEther VPN | JA4=t13d880900_fcb5b95cb75a_b0d3b4ac2a14 (cliente) JA4S=t130200_1302_a56c5b993250 JA4X=d55f458d5a6c_d55f458d5a6c_0fc8c171b6ae |
| Qakbot | JA4X=2bab15409345_af684594efb4_000000000000 |
| Pikabot | JA4X=1a59268f55e5_1a59268f55e5_795797892f9c |
| Darkgate | JA4H=po10nn060000_cdb958d032b0 |
| LummaC2 | JA4H=po11nn050000_d253db9d024b |
| Evilginx | JA4=t13d191000_9dc949149365_e7c285222651 |
| Reverse SSH Shell | JA4SSH=c76s76_c71s59_c0s70 |
| Windows 11 | JA4T=64240_2-1-3-1-1-4_1460_8 |
| Impressora Epson | JA4TScan=28960_2-4-8-1-3_1460_3_1-4-8-16 |
| Windows 11 | JA4D=disco0000in_61-12-60-55_1-3-6-15-31-33-43-44-46-47-119-121-249-252 |
| Receptor Sony | JA4D6=solct0010nn_8-1-3-6_24-23 |
Para mais exemplos, veja ja4plus-mapping.csv
Para um banco de dados completo, veja ja4db.com
Plugins
Binários
Os binários JA4 são compilados a partir da implementação em Rust do conjunto. Para garantir funcionalidade completa, o tshark (versão 4.0.6 ou posterior) é necessário. Baixe os binários JA4 mais recentes na página de Releases. As versões de release da implementação em Rust seguem o Versionamento Semântico e são marcadas como vX.Y.Z, ao contrário dos releases do plugin do Wireshark.
Assets de Release
Os assets de release são nomeados de acordo com o componente e a plataforma:
- Rust:
ja4-vX.Y.Z-<arquitetura>-<plataforma>.tar.gz(ex.:ja4-v0.18.5-x86_64-unknown-linux-musl.tar.gz)
- Python:
ja4-python-vX.Y.Z.tar.gz(contém o diretório completopython/)
- Wireshark:
ja4.so.linux,ja4.so.macos,ja4.dll(anexados a um release nomeado comowireshark-vX.Y.Z)
Escolha o arquivo apropriado para seu sistema e componente.
Instalando o tshark
Linux
Instale-o usando seu gerenciador de pacotes (o nome do pacote tshark ou wireshark-cli depende da distribuição). Por exemplo, no Ubuntu:```sh
sudo apt install tshark
#### macOS
1. [Descarregue](https://www.wireshark.org/download.html) e instale o Wireshark (inclui o `tshark`).
2. Adicione o `tshark` ao seu `PATH`: ```sh
sudo ln -s /Applications/Wireshark.app/Contents/MacOS/tshark /usr/local/bin/tshark
Windows
- Baixe e instale o Wireshark (inclui
tshark.exe). - Localize o
tshark.exe(geralmente emC:\Program Files\Wireshark\tshark.exe). - Adicione a pasta que contém o
tshark.exeaoPATHdo seu sistema:- Abra Propriedades do Sistema > Variáveis de Ambiente > Editar Path.
Executando o JA4+
Depois que o tshark e os binários JA4+ estiverem disponíveis, execute o JA4+ usando o seguinte comando:
- No Linux e no macOS: ```sh
./ja4 [options] [pcap]
- No Windows, abra o Prompt de Comando e execute: ```cmd
ja4 [options] [pcap]
Para mais detalhes sobre a execução do JA4+ e suas configurações avançadas, consulte o README da implementação em Rust, que fornece informações sobre seus recursos, cenários de uso e opções de personalização.
Banco de Dados
O banco de dados oficial do JA4+ de impressões digitais, aplicativos associados e lógica de detecção recomendada está aqui: ja4db.com
Este banco de dados está em desenvolvimento muito ativo. Espere ordens de magnitude a mais de combinações de impressões digitais e dados nos próximos meses.
Um exemplo de ja4plus-mapping.csv também está disponível para referência rápida.
Processo de Lançamento
O JA4+ usa GitHub Actions para automatizar lançamentos de seus componentes Rust, Python, Wireshark e Zeek. Os lançamentos são criados enviando uma tag com um prefixo específico para o repositório, exceto para o Zeek, que usa uma tag de versão semântica (semver) pura. Os artefatos de lançamento são nomeados da seguinte forma:
- Rust:
ja4-vX.Y.Z-<arquitetura>-<plataforma>.tar.gz - Python:
ja4-python-vX.Y.Z.tar.gz - Wireshark:
ja4.so.linux,ja4.so.macos,ja4.dll(em um lançamento nomeado comowireshark-vX.Y.Z)
Os seguintes fluxos de trabalho estão disponíveis:
-
Lançamento Rust:
Envie uma tag começando comrust-, por exemplo,rust-v0.18.5, para acionar um lançamento dos binários Rust. O fluxo de trabalho criará e enviará os artefatos de lançamento automaticamente. -
Lançamento Python:
Envie uma tag começando compython-, por exemplo,python-v0.1.0, para acionar um lançamento da implementação Python. O fluxo de trabalho criará um tarball do diretóriopython/e o publicará como um artefato de lançamento. -
Lançamento do Plugin Wireshark:
Envie uma tag começando comwireshark-, por exemplo,wireshark-v0.1.1, para acionar um lançamento dos binários do plugin Wireshark para todas as plataformas suportadas. -
Lançamento Zeek:
Envie uma tag que seja uma versão semântica pura (por exemplo,v1.2.3), sem prefixo, para acionar um lançamento do Zeek. Isso criará automaticamente um lançamento em packages.zeek.org.
Como Criar um Lançamento
-
Garanta que suas alterações sejam mescladas no branch
main. -
Crie e envie uma tag para o componente que você deseja lançar:
- Para Rust, Python ou Wireshark, use o prefixo apropriado (por exemplo,
rust-v0.18.5,python-v0.1.0,wireshark-v0.1.1). - Para Zeek, use uma tag semver pura (por exemplo,
v1.2.3).
Exemplo: ```sh git tag v1.2.3 git push origin v1.2.3
- Para Rust, Python ou Wireshark, use o prefixo apropriado (por exemplo,
(Para Zeek)
Ou, para Rust: ```sh git tag rust-v0.18.5 git push origin rust-v0.18.5
3. O fluxo de trabalho correspondente do GitHub Actions será executado e publicará os artefatos de lançamento automaticamente. Para o Zeek, o lançamento aparecerá em [packages.zeek.org](https://packages.zeek.org/).
## Detalhes do JA4+
JA4+ é um conjunto de impressões digitais de rede simples, porém poderosas, para múltiplos protocolos, que são legíveis tanto por humanos quanto por máquinas, facilitando uma melhor caça a ameaças e análise de segurança. Se você não está familiarizado com impressões digitais de rede, encorajo você a ler meus blogs sobre o lançamento do JA3 [aqui](https://medium.com/salesforce-engineering/tls-fingerprinting-with-ja3-and-ja3s-247362855967), do JARM [aqui](https://medium.com/salesforce-engineering/easily-identify-malicious-servers-on-the-internet-with-jarm-e095edac525a), e este excelente blog da Fastly sobre o [Estado da Impressão Digital TLS](https://www.fastly.com/blog/the-state-of-tls-fingerprinting-whats-working-what-isnt-and-whats-next), que descreve a história dos mencionados anteriormente, juntamente com seus problemas. O JA4+ traz suporte dedicado, mantendo os métodos atualizados à medida que a indústria muda.
Todas as impressões digitais JA4+ têm um formato a_b_c, delimitando as diferentes seções que compõem a impressão digital. Isso permite caça e detecção utilizando apenas ab ou ac ou apenas c. Se alguém quisesse apenas fazer análise dos cookies recebidos em seu aplicativo, eles olhariam apenas para o JA4H_c. Este novo formato que preserva a localidade facilita uma análise mais profunda e rica, permanecendo simples, fácil de usar e permitindo extensibilidade.
Por exemplo, a GreyNoise é um ouvinte da internet que identifica scanners da internet e está implementando o JA4+ em seu produto. Eles têm um ator que escaneia a internet com uma única cifra TLS em constante mudança. Isso gera uma quantidade massiva de impressões digitais JA3 completamente diferentes, mas com o JA4, apenas a parte b da impressão digital JA4 muda, as partes a e c permanecem as mesmas. Assim, a GreyNoise pode rastrear o ator observando a impressão digital JA4_ac (unindo a+c, descartando b).
Para uma lista de métodos JA4+ e suas descrições, veja [Métodos atuais e detalhes de implementação](#current-methods-and-implementation-details).
Para entender como ler as impressões digitais JA4+, veja [Detalhes Técnicos](https://github.com/foxio-llc/ja4/blob/main/technical_details/README.md).
## Licenciamento
*JA4: Impressão Digital de Cliente TLS* é [open-source, BSD 3-Clause](https://github.com/foxio-llc/ja4/blob/main/LICENSE-JA4), assim como o JA3. A FoxIO não possui reivindicações de patente e não planeja buscar cobertura de patente para a Impressão Digital de Cliente TLS JA4. Isso permite que qualquer empresa ou ferramenta que atualmente utilize o JA3 atualize imediatamente para o JA4 sem atraso.
**JA4S, JA4L, JA4LS, JA4L-Delta, JA4H, JA4X, JA4SSH, JA4T, JA4TS, JA4TScan, JA4D, JA4D6, JA4Scan-TLS, JA4Scan-QUIC, JA4N e todas as adições futuras (coletivamente referidas como JA4+)** têm patente pendente e são licenciadas sob a [FoxIO License 1.1](https://github.com/foxio-llc/ja4/blob/main/LICENSE). Esta licença é permissiva para a maioria dos casos de uso, incluindo fins acadêmicos e comerciais internos, mas não é permissiva para monetização. Se, por exemplo, uma empresa quiser usar o JA4+ internamente para ajudar a proteger sua própria empresa, isso é permitido. Se, por exemplo, um fornecedor quiser vender a impressão digital JA4+ como parte de sua oferta de produto, eles precisariam solicitar uma licença OEM de nós.
JA4+ é uma marca registrada da FoxIO
O JA4+ pode e está sendo implementado em ferramentas open-source, veja o [FAQ de Licença](https://github.com/foxio-llc/ja4/blob/main/License%20FAQ.md) para detalhes.
Este licenciamento nos permite fornecer o JA4+ ao mundo de uma forma aberta e imediatamente utilizável, mas também nos fornece uma maneira de financiar suporte contínuo, pesquisa em novos métodos e o desenvolvimento do Banco de Dados JA4+. Queremos que todos tenham a capacidade de utilizar o JA4+ e estamos felizes em trabalhar com fornecedores e projetos open-source para ajudar a tornar isso possível.
## Perguntas e Respostas
P: Por que vocês estão ordenando as cifras? A ordem não importa?
R: Importa, mas em nossa pesquisa descobrimos que aplicativos e bibliotecas escolhem uma lista de cifras única mais do que uma ordenação única. Isso também reduz a eficácia do "encurtamento de cifras", uma tática de randomizar a ordem das cifras para impedir a detecção do JA3.
P: Por que vocês estão ordenando as extensões?
R: No início de 2023, o Google [atualizou os navegadores Chromium](https://chromestatus.com/feature/5124606246518784) para randomizar a ordem de suas extensões. Muito parecido com o encurtamento de cifras, isso era uma tática para impedir a detecção do JA3 e "tornar o ecossistema TLS mais robusto a mudanças". O Google estava preocupado que implementadores de servidores assumissem que a impressão digital do Chrome nunca mudaria e acabassem construindo lógica em torno dela, o que causaria problemas sempre que o Google atualizasse o Chrome.
Então quero deixar isso claro: as impressões digitais JA4 mudarão à medida que as bibliotecas TLS de aplicativos forem atualizadas, cerca de uma vez por ano. Não assuma que as impressões digitais permanecerão constantes em um ambiente onde os aplicativos são atualizados. De qualquer forma, ordenar as extensões contorna isso e adicionar os Algoritmos de Assinatura preserva a unicidade.
P: O TLS 1.3 não torna a impressão digital de clientes TLS mais difícil?
R: Não, torna mais fácil! Desde o TLS 1.3, os clientes têm um conjunto muito maior de extensões e, embora o TLS 1.3 suporte apenas algumas cifras, navegadores e aplicativos ainda suportam muitas mais.
## JA4+ foi criado por
[John Althouse](https://www.linkedin.com/in/johnalthouse/), com feedback de:
Josh Atkins
Jeff Atkinson
Joshua Alexander
W.
Joe Martin
Ben Higgins
Andrew Morris
Chris Ueland
Ben Schofield
Matthias Vallentin
Valeriy Vorotyntsev
Timothy Noel
Gary Lipsky
Michael Barbine
E engenheiros que trabalham na GreyNoise, Hunt, Google, ExtraHop, F5, Driftnet e outros.
Contate John Althouse em [email protected] para licenciamento e perguntas.
<sub>JA4 e JA4+ são marcas registradas da FoxIO, Inc.
Copyright (c) 2026, FoxIO</sup>